diff --git a/bench/abseil-cpp/optimized/flat_hash_map_test.cc.ll b/bench/abseil-cpp/optimized/flat_hash_map_test.cc.ll index 00ed90f920a..b89ef2065b6 100644 --- a/bench/abseil-cpp/optimized/flat_hash_map_test.cc.ll +++ b/bench/abseil-cpp/optimized/flat_hash_map_test.cc.ll @@ -354514,8 +354514,9 @@ while.end.i.i.i.i: ; preds = %while.body.i.i.i.i, return: ; preds = %while.end.i.i.i.i, %while.cond.preheader, %entry, %_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashMapPolicyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiEENS0_19StatefulTestingHashENS0_20StatefulTestingEqualENS0_5AllocISt4pairIKS8_iEEEE13destroy_slotsEv.exit %retval.sroa.0.0 = phi ptr [ null, %_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashMapPolicyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiEENS0_19StatefulTestingHashENS0_20StatefulTestingEqualENS0_5AllocISt4pairIKS8_iEEEE13destroy_slotsEv.exit ], [ null, %entry ], [ %last.coerce0, %while.cond.preheader ], [ %last.coerce0, %while.end.i.i.i.i ] + %retval.sroa.4.0 = phi ptr [ undef, %_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashMapPolicyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEiEENS0_19StatefulTestingHashENS0_20StatefulTestingEqualENS0_5AllocISt4pairIKS8_iEEEE13destroy_slotsEv.exit ], [ undef, %entry ], [ %last.coerce1, %while.cond.preheader ], [ %last.coerce1, %while.end.i.i.i.i ] %.fca.0.insert = insertvalue { ptr, ptr } poison, ptr %retval.sroa.0.0, 0 - %.fca.1.insert = insertvalue { ptr, ptr } %.fca.0.insert, ptr %last.coerce1, 1 + %.fca.1.insert = insertvalue { ptr, ptr } %.fca.0.insert, ptr %retval.sroa.4.0, 1 ret { ptr, ptr } %.fca.1.insert } @@ -355679,8 +355680,9 @@ while.end.i.i.i.i: ; preds = %while.body.i.i.i.i, return: ; preds = %while.end.i.i.i.i, %while.cond.preheader, %entry, %_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashMapPolicyINS0_13hash_internal4EnumENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS0_19StatefulTestingHashENS0_20StatefulTestingEqualENS0_5AllocISt4pairIKS4_SA_EEEE13destroy_slotsEv.exit %retval.sroa.0.0 = phi ptr [ null, %_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashMapPolicyINS0_13hash_internal4EnumENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS0_19StatefulTestingHashENS0_20StatefulTestingEqualENS0_5AllocISt4pairIKS4_SA_EEEE13destroy_slotsEv.exit ], [ null, %entry ], [ %last.coerce0, %while.cond.preheader ], [ %last.coerce0, %while.end.i.i.i.i ] + %retval.sroa.4.0 = phi ptr [ undef, %_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashMapPolicyINS0_13hash_internal4EnumENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS0_19StatefulTestingHashENS0_20StatefulTestingEqualENS0_5AllocISt4pairIKS4_SA_EEEE13destroy_slotsEv.exit ], [ undef, %entry ], [ %last.coerce1, %while.cond.preheader ], [ %last.coerce1, %while.end.i.i.i.i ] %.fca.0.insert = insertvalue { ptr, ptr } poison, ptr %retval.sroa.0.0, 0 - %.fca.1.insert = insertvalue { ptr, ptr } %.fca.0.insert, ptr %last.coerce1, 1 + %.fca.1.insert = insertvalue { ptr, ptr } %.fca.0.insert, ptr %retval.sroa.4.0, 1 ret { ptr, ptr } %.fca.1.insert } @@ -357846,8 +357848,9 @@ while.end.i.i.i.i: ; preds = %while.body.i.i.i.i, return: ; preds = %while.end.i.i.i.i, %while.cond.preheader, %entry, %_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashMapPolicyIiNS0_17NonStandardLayoutEEENS0_19StatefulTestingHashENS0_20StatefulTestingEqualENS0_5AllocISt4pairIKiS3_EEEE13destroy_slotsEv.exit %retval.sroa.0.0 = phi ptr [ null, %_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashMapPolicyIiNS0_17NonStandardLayoutEEENS0_19StatefulTestingHashENS0_20StatefulTestingEqualENS0_5AllocISt4pairIKiS3_EEEE13destroy_slotsEv.exit ], [ null, %entry ], [ %last.coerce0, %while.cond.preheader ], [ %last.coerce0, %while.end.i.i.i.i ] + %retval.sroa.4.0 = phi ptr [ undef, %_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashMapPolicyIiNS0_17NonStandardLayoutEEENS0_19StatefulTestingHashENS0_20StatefulTestingEqualENS0_5AllocISt4pairIKiS3_EEEE13destroy_slotsEv.exit ], [ undef, %entry ], [ %last.coerce1, %while.cond.preheader ], [ %last.coerce1, %while.end.i.i.i.i ] %.fca.0.insert = insertvalue { ptr, ptr } poison, ptr %retval.sroa.0.0, 0 - %.fca.1.insert = insertvalue { ptr, ptr } %.fca.0.insert, ptr %last.coerce1, 1 + %.fca.1.insert = insertvalue { ptr, ptr } %.fca.0.insert, ptr %retval.sroa.4.0, 1 ret { ptr, ptr } %.fca.1.insert } @@ -358858,8 +358861,9 @@ while.end.i.i.i.i: ; preds = %while.body.i.i.i.i, return: ; preds = %while.end.i.i.i.i, %while.cond.preheader, %entry, %_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashMapPolicyINS0_17NonStandardLayoutEiEENS0_19StatefulTestingHashENS0_20StatefulTestingEqualENS0_5AllocISt4pairIKS3_iEEEE13destroy_slotsEv.exit %retval.sroa.0.0 = phi ptr [ null, %_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashMapPolicyINS0_17NonStandardLayoutEiEENS0_19StatefulTestingHashENS0_20StatefulTestingEqualENS0_5AllocISt4pairIKS3_iEEEE13destroy_slotsEv.exit ], [ null, %entry ], [ %last.coerce0, %while.cond.preheader ], [ %last.coerce0, %while.end.i.i.i.i ] + %retval.sroa.4.0 = phi ptr [ undef, %_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashMapPolicyINS0_17NonStandardLayoutEiEENS0_19StatefulTestingHashENS0_20StatefulTestingEqualENS0_5AllocISt4pairIKS3_iEEEE13destroy_slotsEv.exit ], [ undef, %entry ], [ %last.coerce1, %while.cond.preheader ], [ %last.coerce1, %while.end.i.i.i.i ] %.fca.0.insert = insertvalue { ptr, ptr } poison, ptr %retval.sroa.0.0, 0 - %.fca.1.insert = insertvalue { ptr, ptr } %.fca.0.insert, ptr %last.coerce1, 1 + %.fca.1.insert = insertvalue { ptr, ptr } %.fca.0.insert, ptr %retval.sroa.4.0, 1 ret { ptr, ptr } %.fca.1.insert } diff --git a/bench/abseil-cpp/optimized/flat_hash_set_test.cc.ll b/bench/abseil-cpp/optimized/flat_hash_set_test.cc.ll index 99fc114d221..1cf4102c69e 100644 --- a/bench/abseil-cpp/optimized/flat_hash_set_test.cc.ll +++ b/bench/abseil-cpp/optimized/flat_hash_set_test.cc.ll @@ -219022,8 +219022,9 @@ while.end.i.i.i.i: ; preds = %while.body.i.i.i.i, return: ; preds = %while.end.i.i.i.i, %while.cond.preheader, %entry, %_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS0_19StatefulTestingHashENS0_20StatefulTestingEqualENS0_5AllocIS8_EEE13destroy_slotsEv.exit %retval.sroa.0.0 = phi ptr [ null, %_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS0_19StatefulTestingHashENS0_20StatefulTestingEqualENS0_5AllocIS8_EEE13destroy_slotsEv.exit ], [ null, %entry ], [ %last.coerce0, %while.cond.preheader ], [ %last.coerce0, %while.end.i.i.i.i ] + %retval.sroa.4.0 = phi ptr [ undef, %_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS0_19StatefulTestingHashENS0_20StatefulTestingEqualENS0_5AllocIS8_EEE13destroy_slotsEv.exit ], [ undef, %entry ], [ %last.coerce1, %while.cond.preheader ], [ %last.coerce1, %while.end.i.i.i.i ] %.fca.0.insert = insertvalue { ptr, ptr } poison, ptr %retval.sroa.0.0, 0 - %.fca.1.insert = insertvalue { ptr, ptr } %.fca.0.insert, ptr %last.coerce1, 1 + %.fca.1.insert = insertvalue { ptr, ptr } %.fca.0.insert, ptr %retval.sroa.4.0, 1 ret { ptr, ptr } %.fca.1.insert } diff --git a/bench/abseil-cpp/optimized/node_hash_map_test.cc.ll b/bench/abseil-cpp/optimized/node_hash_map_test.cc.ll index 5befd9d6261..0553ea3c095 100644 --- a/bench/abseil-cpp/optimized/node_hash_map_test.cc.ll +++ b/bench/abseil-cpp/optimized/node_hash_map_test.cc.ll @@ -148597,8 +148597,9 @@ while.end.i.i.i.i: ; preds = %while.body.i.i.i.i, return: ; preds = %while.end.i.i.i.i, %while.cond.preheader, %entry, %_ZN4absl18container_internal12raw_hash_setINS0_17NodeHashMapPolicyIiiEENS0_19StatefulTestingHashENS0_20StatefulTestingEqualENS0_5AllocISt4pairIKiiEEEE13destroy_slotsEv.exit %retval.sroa.0.0 = phi ptr [ null, %_ZN4absl18container_internal12raw_hash_setINS0_17NodeHashMapPolicyIiiEENS0_19StatefulTestingHashENS0_20StatefulTestingEqualENS0_5AllocISt4pairIKiiEEEE13destroy_slotsEv.exit ], [ null, %entry ], [ %last.coerce0, %while.cond.preheader ], [ %last.coerce0, %while.end.i.i.i.i ] + %retval.sroa.4.0 = phi ptr [ undef, %_ZN4absl18container_internal12raw_hash_setINS0_17NodeHashMapPolicyIiiEENS0_19StatefulTestingHashENS0_20StatefulTestingEqualENS0_5AllocISt4pairIKiiEEEE13destroy_slotsEv.exit ], [ undef, %entry ], [ %last.coerce1, %while.cond.preheader ], [ %last.coerce1, %while.end.i.i.i.i ] %.fca.0.insert = insertvalue { ptr, ptr } poison, ptr %retval.sroa.0.0, 0 - %.fca.1.insert = insertvalue { ptr, ptr } %.fca.0.insert, ptr %last.coerce1, 1 + %.fca.1.insert = insertvalue { ptr, ptr } %.fca.0.insert, ptr %retval.sroa.4.0, 1 ret { ptr, ptr } %.fca.1.insert } @@ -149532,8 +149533,9 @@ while.end.i.i.i.i: ; preds = %while.body.i.i.i.i, return: ; preds = %while.end.i.i.i.i, %while.cond.preheader, %entry, %_ZN4absl18container_internal12raw_hash_setINS0_17NodeHashMapPolicyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_EENS0_19StatefulTestingHashENS0_20StatefulTestingEqualENS0_5AllocISt4pairIKS8_S8_EEEE13destroy_slotsEv.exit %retval.sroa.0.0 = phi ptr [ null, %_ZN4absl18container_internal12raw_hash_setINS0_17NodeHashMapPolicyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_EENS0_19StatefulTestingHashENS0_20StatefulTestingEqualENS0_5AllocISt4pairIKS8_S8_EEEE13destroy_slotsEv.exit ], [ null, %entry ], [ %last.coerce0, %while.cond.preheader ], [ %last.coerce0, %while.end.i.i.i.i ] + %retval.sroa.4.0 = phi ptr [ undef, %_ZN4absl18container_internal12raw_hash_setINS0_17NodeHashMapPolicyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES8_EENS0_19StatefulTestingHashENS0_20StatefulTestingEqualENS0_5AllocISt4pairIKS8_S8_EEEE13destroy_slotsEv.exit ], [ undef, %entry ], [ %last.coerce1, %while.cond.preheader ], [ %last.coerce1, %while.end.i.i.i.i ] %.fca.0.insert = insertvalue { ptr, ptr } poison, ptr %retval.sroa.0.0, 0 - %.fca.1.insert = insertvalue { ptr, ptr } %.fca.0.insert, ptr %last.coerce1, 1 + %.fca.1.insert = insertvalue { ptr, ptr } %.fca.0.insert, ptr %retval.sroa.4.0, 1 ret { ptr, ptr } %.fca.1.insert } diff --git a/bench/actix-rs/optimized/17gccfd4i2cipdks.ll b/bench/actix-rs/optimized/17gccfd4i2cipdks.ll index 9d584cc0d7c..861c3b127fd 100644 --- a/bench/actix-rs/optimized/17gccfd4i2cipdks.ll +++ b/bench/actix-rs/optimized/17gccfd4i2cipdks.ll @@ -13,9 +13,13 @@ target triple = "x86_64-unknown-linux-gnu" ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define hidden { i64, i64 } @"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h4f1abfd41da6bb7aE.llvm.4104487670129050531"(i64 noundef %0, i64 %1) unnamed_addr #0 { - %3 = insertvalue { i64, i64 } poison, i64 %0, 0 - %4 = insertvalue { i64, i64 } %3, i64 %1, 1 - ret { i64, i64 } %4 + %3 = icmp eq i64 %0, -9223372036854775807 + %4 = icmp eq i64 %0, 0 + %5 = or i1 %3, %4 + %.sroa.33.0 = select i1 %5, i64 undef, i64 %1 + %6 = insertvalue { i64, i64 } poison, i64 %0, 0 + %7 = insertvalue { i64, i64 } %6, i64 %.sroa.33.0, 1 + ret { i64, i64 } %7 } ; Function Attrs: inlinehint nonlazybind uwtable @@ -33,15 +37,19 @@ define hidden void @_ZN5alloc7raw_vec14handle_reserve17hf0112dc2ee693d5aE.llvm.4 unreachable 5: ; preds = %2 - tail call void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef %0, i64 noundef %1) #16 + %6 = icmp eq i64 %0, -9223372036854775807 + %.sroa.33.0.i = select i1 %6, i64 undef, i64 %1 + tail call void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef %0, i64 noundef %.sroa.33.0.i) #16 unreachable } ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define hidden { i64, i64 } @"_ZN5alloc7raw_vec14handle_reserve28_$u7b$$u7b$closure$u7d$$u7d$17h8ffa960ad58d8fcbE.llvm.4104487670129050531"(i64 noundef %0, i64 %1) unnamed_addr #0 { - %3 = insertvalue { i64, i64 } poison, i64 %0, 0 - %4 = insertvalue { i64, i64 } %3, i64 %1, 1 - ret { i64, i64 } %4 + %3 = icmp eq i64 %0, 0 + %.4 = select i1 %3, i64 undef, i64 %1 + %4 = insertvalue { i64, i64 } poison, i64 %0, 0 + %5 = insertvalue { i64, i64 } %4, i64 %.4, 1 + ret { i64, i64 } %5 } ; Function Attrs: nonlazybind uwtable @@ -3366,10 +3374,10 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h09b "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit": ; preds = %13 %17 = mul nuw i64 %1, 216 %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef 8, i64 noundef %17) #17 - %.not33 = icmp eq ptr %18, null - %.sink1.i = select i1 %.not33, ptr inttoptr (i64 8 to ptr), ptr %18 + %.not34 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not34, ptr inttoptr (i64 8 to ptr), ptr %18 %19 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not33, label %21, label %20 + br i1 %.not34, label %21, label %20 20: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] @@ -3428,10 +3436,10 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h0ce %18 = icmp ule i64 %17, %14 tail call void @llvm.assume(i1 %18) %19 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef 8, i64 noundef %17) #17 - %.not33 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not33, ptr inttoptr (i64 8 to ptr), ptr %19 + %.not34 = icmp eq ptr %19, null + %.sink1.i = select i1 %.not34, ptr inttoptr (i64 8 to ptr), ptr %19 %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not33, label %22, label %21 + br i1 %.not34, label %22, label %21 21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] @@ -3488,10 +3496,10 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h126 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit": ; preds = %13 %17 = mul nuw i64 %1, 216 %18 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef 8, i64 noundef %17) #17 - %.not33 = icmp eq ptr %18, null - %.sink1.i = select i1 %.not33, ptr inttoptr (i64 8 to ptr), ptr %18 + %.not34 = icmp eq ptr %18, null + %.sink1.i = select i1 %.not34, ptr inttoptr (i64 8 to ptr), ptr %18 %19 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not33, label %21, label %20 + br i1 %.not34, label %21, label %20 20: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %18, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] @@ -3550,10 +3558,10 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h461 %18 = icmp ule i64 %17, %14 tail call void @llvm.assume(i1 %18) %19 = tail call noundef align 2 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef 2, i64 noundef %17) #17 - %.not33 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not33, ptr inttoptr (i64 2 to ptr), ptr %19 + %.not34 = icmp eq ptr %19, null + %.sink1.i = select i1 %.not34, ptr inttoptr (i64 2 to ptr), ptr %19 %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not33, label %22, label %21 + br i1 %.not34, label %22, label %21 21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" %storemerge = phi ptr [ inttoptr (i64 2 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] @@ -3612,10 +3620,10 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h767 %18 = icmp ule i64 %17, %14 tail call void @llvm.assume(i1 %18) %19 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef 4, i64 noundef %17) #17 - %.not33 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not33, ptr inttoptr (i64 4 to ptr), ptr %19 + %.not34 = icmp eq ptr %19, null + %.sink1.i = select i1 %.not34, ptr inttoptr (i64 4 to ptr), ptr %19 %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not33, label %22, label %21 + br i1 %.not34, label %22, label %21 21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" %storemerge = phi ptr [ inttoptr (i64 4 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] @@ -3670,10 +3678,10 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17hbbe "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit": ; preds = %13 %16 = tail call noundef ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %4, i64 noundef 1, i64 noundef %1) #17 - %.not32 = icmp eq ptr %16, null - %.sink1.i = select i1 %.not32, ptr inttoptr (i64 1 to ptr), ptr %16 + %.not33 = icmp eq ptr %16, null + %.sink1.i = select i1 %.not33, ptr inttoptr (i64 1 to ptr), ptr %16 %17 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not32, label %19, label %18 + br i1 %.not33, label %19, label %18 18: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" %storemerge = phi ptr [ inttoptr (i64 1 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %16, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] diff --git a/bench/actix-rs/optimized/17u9ijoz8shmpsbe.ll b/bench/actix-rs/optimized/17u9ijoz8shmpsbe.ll index c709e81bf40..5cd20514a92 100644 --- a/bench/actix-rs/optimized/17u9ijoz8shmpsbe.ll +++ b/bench/actix-rs/optimized/17u9ijoz8shmpsbe.ll @@ -432,7 +432,7 @@ define internal void @"_ZN96_$LT$actix_multipart..form..tempfile..TempFile$u20$a %.sroa.8.sroa.8 = alloca [20 x i8], align 4 %18 = getelementptr inbounds i8, ptr %1, i64 432 %19 = load i8, ptr %18, align 8, !range !11, !noundef !4 - switch i8 %19, label %default.unreachable277 [ + switch i8 %19, label %default.unreachable275 [ i8 0, label %20 i8 1, label %147 i8 2, label %148 @@ -446,7 +446,7 @@ define internal void @"_ZN96_$LT$actix_multipart..form..tempfile..TempFile$u20$a %.pre = load ptr, ptr %.phi.trans.insert, align 8, !alias.scope !77, !noalias !80 br label %189 -default.unreachable277: ; preds = %3 +default.unreachable275: ; preds = %3 unreachable 20: ; preds = %3 @@ -481,8 +481,8 @@ default.unreachable277: ; preds = %3 34: ; preds = %3 call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %.sroa.9167.sroa.7) - %.phi.trans.insert275 = getelementptr inbounds i8, ptr %1, i64 440 - %.val53.pre = load ptr, ptr %.phi.trans.insert275, align 8 + %.phi.trans.insert273 = getelementptr inbounds i8, ptr %1, i64 440 + %.val53.pre = load ptr, ptr %.phi.trans.insert273, align 8 br label %257 35: ; preds = %309, %.body, %45, %36 @@ -1251,6 +1251,7 @@ common.ret: ; preds = %324, %277, %199, %1 "_ZN4core6option15Option$LT$T$GT$3map17h8276443cf8e88238E.exit": ; preds = %.noexc104, %297 %.sroa.5174.0 = phi ptr [ undef, %297 ], [ %304, %.noexc104 ] + %.sroa.6175.0 = phi i64 [ undef, %297 ], [ %299, %.noexc104 ] %.sink.i = phi i64 [ -9223372036854775808, %297 ], [ %303, %.noexc104 ] %306 = getelementptr inbounds i8, ptr %1, i64 296 %307 = load i64, ptr %306, align 8, !noundef !4 @@ -1322,7 +1323,7 @@ common.ret: ; preds = %324, %277, %199, %1 %.sroa.14.4 = phi i32 [ %.sroa.03.sroa.0.sroa.7.0.copyload, %320 ], [ %.sroa.14.1, %333 ] %.sroa.21184.0 = phi i64 [ %.sink.i, %320 ], [ undef, %333 ] %.sroa.22.0 = phi ptr [ %.sroa.5174.0, %320 ], [ undef, %333 ] - %.sroa.23.0 = phi i64 [ %299, %320 ], [ undef, %333 ] + %.sroa.23.0 = phi i64 [ %.sroa.6175.0, %320 ], [ undef, %333 ] %.sroa.25.0 = phi i64 [ %307, %320 ], [ undef, %333 ] store i64 %.sroa.0176.4, ptr %0, align 8 %.sroa.8178.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 diff --git a/bench/actix-rs/optimized/19agjyrsb95wh9my.ll b/bench/actix-rs/optimized/19agjyrsb95wh9my.ll index 90a6dac0744..3cbdd0a99b6 100644 --- a/bench/actix-rs/optimized/19agjyrsb95wh9my.ll +++ b/bench/actix-rs/optimized/19agjyrsb95wh9my.ll @@ -6,9 +6,9 @@ target triple = "x86_64-unknown-linux-gnu" ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define hidden i64 @"_ZN4core3num23_$LT$impl$u20$usize$GT$14saturating_mul17h28c9473e63c2df9bE"(i64 %0, i64 %1) unnamed_addr #0 { %3 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %0, i64 %1) - %4 = extractvalue { i64, i1 } %3, 0 - %5 = extractvalue { i64, i1 } %3, 1 - %.0 = select i1 %5, i64 -1, i64 %4 + %4 = extractvalue { i64, i1 } %3, 1 + %5 = extractvalue { i64, i1 } %3, 0 + %.0 = select i1 %4, i64 -1, i64 %5 ret i64 %.0 } diff --git a/bench/actix-rs/optimized/1a89q5mj3jl9opyq.ll b/bench/actix-rs/optimized/1a89q5mj3jl9opyq.ll index ea160b188b5..fc3dbdb6ce4 100644 --- a/bench/actix-rs/optimized/1a89q5mj3jl9opyq.ll +++ b/bench/actix-rs/optimized/1a89q5mj3jl9opyq.ll @@ -1471,35 +1471,35 @@ define hidden void @_ZN8bitflags6parser8from_str17hbbaeffa593c80f8fE(ptr noalias .lr.ph.split.split.i.i: ; preds = %.lr.ph.split.split, %40 %21 = phi i64 [ %37, %40 ], [ %.promoted.i.i122130, %.lr.ph.split.split ] - %.sroa.3.0.i47.i.i = sub nuw i64 %2, %21 - %.49.i.i = getelementptr inbounds i8, ptr %1, i64 %21 - %22 = icmp ult i64 %.sroa.3.0.i47.i.i, 16 + %.sroa.7.049.i.i = sub nuw i64 %2, %21 + %.sroa.0.050.i.i = getelementptr inbounds i8, ptr %1, i64 %21 + %22 = icmp ult i64 %.sroa.7.049.i.i, 16 br i1 %22, label %25, label %23 23: ; preds = %.lr.ph.split.split.i.i - %24 = tail call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef 124, ptr noalias noundef nonnull readonly align 1 %.49.i.i, i64 noundef %.sroa.3.0.i47.i.i), !noalias !353 + %24 = tail call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef 124, ptr noalias noundef nonnull readonly align 1 %.sroa.0.050.i.i, i64 noundef %.sroa.7.049.i.i), !noalias !353 br label %33 25: ; preds = %.lr.ph.split.split.i.i - %.not.i.i.i = icmp eq i64 %21, %2 + %.not.i.i.i = icmp eq i64 %.sroa.7.049.i.i, 0 br i1 %.not.i.i.i, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i, label %.lr.ph.i.i.i .lr.ph.i.i.i: ; preds = %25, %29 %.05.i.i.i = phi i64 [ %30, %29 ], [ 0, %25 ] - %26 = getelementptr inbounds [0 x i8], ptr %.49.i.i, i64 0, i64 %.05.i.i.i + %26 = getelementptr inbounds [0 x i8], ptr %.sroa.0.050.i.i, i64 0, i64 %.05.i.i.i %27 = load i8, ptr %26, align 1, !alias.scope !359, !noalias !353, !noundef !20 %28 = icmp eq i8 %27, 124 br i1 %28, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i, label %29 29: ; preds = %.lr.ph.i.i.i - %30 = add nuw i64 %.05.i.i.i, 1 - %exitcond.not.i.i.i = icmp eq i64 %30, %.sroa.3.0.i47.i.i + %30 = add nuw nsw i64 %.05.i.i.i, 1 + %exitcond.not.i.i.i = icmp eq i64 %30, %.sroa.7.049.i.i br i1 %exitcond.not.i.i.i, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i, label %.lr.ph.i.i.i _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i: ; preds = %29, %.lr.ph.i.i.i, %25 - %.0.lcssa.i.i.i = phi i64 [ 0, %25 ], [ %.sroa.3.0.i47.i.i, %29 ], [ %.05.i.i.i, %.lr.ph.i.i.i ] - %.sroa.0.0.i25.i.i = phi i64 [ 0, %25 ], [ 0, %29 ], [ 1, %.lr.ph.i.i.i ] - %31 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i25.i.i, 0 + %.0.lcssa.i.i.i = phi i64 [ 0, %25 ], [ %.sroa.7.049.i.i, %29 ], [ %.05.i.i.i, %.lr.ph.i.i.i ] + %.sroa.0.0.i24.i.i = phi i64 [ 0, %25 ], [ 0, %29 ], [ 1, %.lr.ph.i.i.i ] + %31 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i24.i.i, 0 %32 = insertvalue { i64, i64 } %31, i64 %.0.lcssa.i.i.i, 1 br label %33 @@ -2024,7 +2024,7 @@ define internal fastcc noundef align 8 ptr @"_ZN9hashbrown3map28HashMap$LT$K$C$V %4 = getelementptr inbounds i8, ptr %0, i64 24 %5 = load i64, ptr %4, align 8, !noundef !20 %6 = icmp eq i64 %5, 0 - br i1 %6, label %72, label %7 + br i1 %6, label %73, label %7 7: ; preds = %2 %8 = getelementptr inbounds i8, ptr %0, i64 32 @@ -2096,60 +2096,60 @@ _ZN4core4hash11BuildHasher8hash_one17h3cd19baf41154f68E.exit: ; preds = %26, %36 %invariant.gep.i.i = getelementptr i8, ptr %.val, i64 -208 br label %49 -49: ; preds = %65, %_ZN4core4hash11BuildHasher8hash_one17h3cd19baf41154f68E.exit - %.sroa.9.0.i.i.i = phi i64 [ 0, %_ZN4core4hash11BuildHasher8hash_one17h3cd19baf41154f68E.exit ], [ %66, %65 ] - %.pn.i = phi i64 [ %45, %_ZN4core4hash11BuildHasher8hash_one17h3cd19baf41154f68E.exit ], [ %67, %65 ] +49: ; preds = %66, %_ZN4core4hash11BuildHasher8hash_one17h3cd19baf41154f68E.exit + %.sroa.9.0.i.i.i = phi i64 [ 0, %_ZN4core4hash11BuildHasher8hash_one17h3cd19baf41154f68E.exit ], [ %67, %66 ] + %.pn.i = phi i64 [ %45, %_ZN4core4hash11BuildHasher8hash_one17h3cd19baf41154f68E.exit ], [ %68, %66 ] %.sroa.01.0.i.i.i = and i64 %.pn.i, %.val5 %50 = getelementptr inbounds i8, ptr %.val, i64 %.sroa.01.0.i.i.i - %.0.copyload.i25.i.i = load <16 x i8>, ptr %50, align 1, !noalias !510 - %51 = icmp eq <16 x i8> %.0.copyload.i25.i.i, %.15.vec.insert.i.i.i + %.0.copyload.i33.i.i = load <16 x i8>, ptr %50, align 1, !noalias !510 + %51 = icmp eq <16 x i8> %.0.copyload.i33.i.i, %.15.vec.insert.i.i.i %52 = bitcast <16 x i1> %51 to i16 - br label %"_ZN95_$LT$hashbrown..raw..bitmask..BitMaskIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h30a062793616a2b2E.exit.i.i" - -"_ZN95_$LT$hashbrown..raw..bitmask..BitMaskIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h30a062793616a2b2E.exit.i.i": ; preds = %56, %49 - %.022.i.i = phi i16 [ %52, %49 ], [ %60, %56 ] - %.not.i4.not.i.i = icmp eq i16 %.022.i.i, 0 - br i1 %.not.i4.not.i.i, label %53, label %56 - -53: ; preds = %"_ZN95_$LT$hashbrown..raw..bitmask..BitMaskIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h30a062793616a2b2E.exit.i.i" - %54 = icmp eq <16 x i8> %.0.copyload.i25.i.i, - %55 = bitcast <16 x i1> %54 to i16 - %.not.i.i.i = icmp eq i16 %55, 0 - br i1 %.not.i.i.i, label %65, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17hb470d048622776cfE.exit" - -56: ; preds = %"_ZN95_$LT$hashbrown..raw..bitmask..BitMaskIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h30a062793616a2b2E.exit.i.i" - %57 = call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.022.i.i, i1 true) - %58 = zext nneg i16 %57 to i64 - %59 = add i16 %.022.i.i, -1 - %60 = and i16 %59, %.022.i.i - %61 = add i64 %.sroa.01.0.i.i.i, %58 - %62 = and i64 %61, %.val5 - %63 = sub nsw i64 0, %62 - %gep.i.i = getelementptr { { { ptr, [3 x i64] } }, { { { i64, [20 x i64] }, i64 } } }, ptr %invariant.gep.i.i, i64 %63 - %64 = call noundef zeroext i1 @"_ZN74_$LT$http..header..name..Repr$LT$T$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17h1ce5c251be72188bE.llvm.18274090894404857403"(ptr noundef nonnull align 8 %1, ptr noundef nonnull align 8 %gep.i.i), !noalias !517 - br i1 %64, label %68, label %"_ZN95_$LT$hashbrown..raw..bitmask..BitMaskIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h30a062793616a2b2E.exit.i.i" - -65: ; preds = %53 - %66 = add i64 %.sroa.9.0.i.i.i, 16 - %67 = add i64 %.sroa.01.0.i.i.i, %66 + br label %53 + +53: ; preds = %57, %49 + %.023.i.i = phi i16 [ %52, %49 ], [ %61, %57 ] + %.not.i4.i.i = icmp eq i16 %.023.i.i, 0 + br i1 %.not.i4.i.i, label %54, label %57 + +54: ; preds = %53 + %55 = icmp eq <16 x i8> %.0.copyload.i33.i.i, + %56 = bitcast <16 x i1> %55 to i16 + %.not.i.i.i = icmp eq i16 %56, 0 + br i1 %.not.i.i.i, label %66, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17hb470d048622776cfE.exit" + +57: ; preds = %53 + %58 = call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.023.i.i, i1 true) + %59 = zext nneg i16 %58 to i64 + %60 = add i16 %.023.i.i, -1 + %61 = and i16 %60, %.023.i.i + %62 = add i64 %.sroa.01.0.i.i.i, %59 + %63 = and i64 %62, %.val5 + %64 = sub nsw i64 0, %63 + %gep.i.i = getelementptr { { { ptr, [3 x i64] } }, { { { i64, [20 x i64] }, i64 } } }, ptr %invariant.gep.i.i, i64 %64 + %65 = call noundef zeroext i1 @"_ZN74_$LT$http..header..name..Repr$LT$T$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17h1ce5c251be72188bE.llvm.18274090894404857403"(ptr noundef nonnull align 8 %1, ptr noundef nonnull align 8 %gep.i.i), !noalias !517 + br i1 %65, label %69, label %53 + +66: ; preds = %54 + %67 = add i64 %.sroa.9.0.i.i.i, 16 + %68 = add i64 %.sroa.01.0.i.i.i, %67 br label %49 -68: ; preds = %56 - %69 = getelementptr inbounds { { { ptr, [3 x i64] } }, { { { i64, [20 x i64] }, i64 } } }, ptr %.val, i64 %63 +69: ; preds = %57 + %70 = getelementptr inbounds { { { ptr, [3 x i64] } }, { { { i64, [20 x i64] }, i64 } } }, ptr %.val, i64 %64 br label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17hb470d048622776cfE.exit" -"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17hb470d048622776cfE.exit": ; preds = %53, %68 - %.0.i.i = phi ptr [ %69, %68 ], [ null, %53 ] - %70 = icmp eq ptr %.0.i.i, null - %71 = getelementptr inbounds i8, ptr %.0.i.i, i64 -208 - %.0.i = select i1 %70, ptr null, ptr %71 - br label %72 +"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17hb470d048622776cfE.exit": ; preds = %54, %69 + %.0.i.i = phi ptr [ %70, %69 ], [ null, %54 ] + %71 = icmp eq ptr %.0.i.i, null + %72 = getelementptr inbounds i8, ptr %.0.i.i, i64 -208 + %.0.i = select i1 %71, ptr null, ptr %72 + br label %73 -72: ; preds = %2, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17hb470d048622776cfE.exit" +73: ; preds = %2, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17hb470d048622776cfE.exit" %.04 = phi ptr [ %.0.i, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17hb470d048622776cfE.exit" ], [ null, %2 ] - %73 = icmp eq ptr %.04, null - %74 = getelementptr inbounds i8, ptr %.04, i64 32 - %.0 = select i1 %73, ptr null, ptr %74 + %74 = icmp eq ptr %.04, null + %75 = getelementptr inbounds i8, ptr %.04, i64 32 + %.0 = select i1 %74, ptr null, ptr %75 ret ptr %.0 } diff --git a/bench/actix-rs/optimized/1e8u217hm6qvrsw6.ll b/bench/actix-rs/optimized/1e8u217hm6qvrsw6.ll index 475df92e8ba..c5c23b22891 100644 --- a/bench/actix-rs/optimized/1e8u217hm6qvrsw6.ll +++ b/bench/actix-rs/optimized/1e8u217hm6qvrsw6.ll @@ -55,9 +55,13 @@ define hidden { i1, i8 } @"_ZN104_$LT$core..iter..adapters..copied..Copied$LT$I$ ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define hidden { i64, i64 } @"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hd89570550eb20f91E.llvm.17846856764688890664"(i64 noundef %0, i64 %1) unnamed_addr #1 { - %3 = insertvalue { i64, i64 } poison, i64 %0, 0 - %4 = insertvalue { i64, i64 } %3, i64 %1, 1 - ret { i64, i64 } %4 + %3 = icmp eq i64 %0, -9223372036854775807 + %4 = icmp eq i64 %0, 0 + %5 = or i1 %3, %4 + %.sroa.33.0 = select i1 %5, i64 undef, i64 %1 + %6 = insertvalue { i64, i64 } poison, i64 %0, 0 + %7 = insertvalue { i64, i64 } %6, i64 %.sroa.33.0, 1 + ret { i64, i64 } %7 } ; Function Attrs: inlinehint nonlazybind uwtable @@ -75,15 +79,19 @@ define hidden void @_ZN5alloc7raw_vec14handle_reserve17hf0112dc2ee693d5aE.llvm.1 unreachable 5: ; preds = %2 - tail call void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef %0, i64 noundef %1) #18 + %6 = icmp eq i64 %0, -9223372036854775807 + %.sroa.33.0.i = select i1 %6, i64 undef, i64 %1 + tail call void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef %0, i64 noundef %.sroa.33.0.i) #18 unreachable } ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define hidden { i64, i64 } @"_ZN5alloc7raw_vec14handle_reserve28_$u7b$$u7b$closure$u7d$$u7d$17hc5a01bebf3b61149E.llvm.17846856764688890664"(i64 noundef %0, i64 %1) unnamed_addr #1 { - %3 = insertvalue { i64, i64 } poison, i64 %0, 0 - %4 = insertvalue { i64, i64 } %3, i64 %1, 1 - ret { i64, i64 } %4 + %3 = icmp eq i64 %0, 0 + %.4 = select i1 %3, i64 undef, i64 %1 + %4 = insertvalue { i64, i64 } poison, i64 %0, 0 + %5 = insertvalue { i64, i64 } %4, i64 %.4, 1 + ret { i64, i64 } %5 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/actix-rs/optimized/1ghd7r3h0kcgux6d.ll b/bench/actix-rs/optimized/1ghd7r3h0kcgux6d.ll index 7953bfdaab7..2969d66b033 100644 --- a/bench/actix-rs/optimized/1ghd7r3h0kcgux6d.ll +++ b/bench/actix-rs/optimized/1ghd7r3h0kcgux6d.ll @@ -1033,26 +1033,26 @@ define hidden void @"_ZN6brotli3enc10prior_eval22PriorEval$LT$Alloc$GT$14choose_ ret void .lr.ph: ; preds = %1, %93 - %.038 = phi i8 [ %.1, %93 ], [ 0, %1 ] - %.01037 = phi i32 [ %.111, %93 ], [ 0, %1 ] - %.sroa.0.036 = phi ptr [ %15, %93 ], [ %.val, %1 ] - %.sroa.7.035 = phi i64 [ %16, %93 ], [ 0, %1 ] - %15 = getelementptr inbounds i8, ptr %.sroa.0.036, i64 32 - %16 = add nuw nsw i64 %.sroa.7.035, 1 - %17 = load float, ptr %.sroa.0.036, align 4, !noundef !12 - %18 = getelementptr inbounds i8, ptr %.sroa.0.036, i64 8 + %.039 = phi i8 [ %.1, %93 ], [ 0, %1 ] + %.01038 = phi i32 [ %.111, %93 ], [ 0, %1 ] + %.sroa.0.037 = phi ptr [ %15, %93 ], [ %.val, %1 ] + %.sroa.7.036 = phi i64 [ %16, %93 ], [ 0, %1 ] + %15 = getelementptr inbounds i8, ptr %.sroa.0.037, i64 32 + %16 = add nuw nsw i64 %.sroa.7.036, 1 + %17 = load float, ptr %.sroa.0.037, align 4, !noundef !12 + %18 = getelementptr inbounds i8, ptr %.sroa.0.037, i64 8 %19 = load float, ptr %18, align 4, !noundef !12 - %20 = getelementptr inbounds i8, ptr %.sroa.0.036, i64 12 + %20 = getelementptr inbounds i8, ptr %.sroa.0.037, i64 12 %21 = load float, ptr %20, align 4, !noundef !12 %22 = fadd float %21, 1.600000e+01 - %23 = getelementptr inbounds i8, ptr %.sroa.0.036, i64 16 + %23 = getelementptr inbounds i8, ptr %.sroa.0.037, i64 16 %24 = load float, ptr %23, align 4, !noundef !12 - %25 = getelementptr inbounds i8, ptr %.sroa.0.036, i64 20 + %25 = getelementptr inbounds i8, ptr %.sroa.0.037, i64 20 %26 = load float, ptr %25, align 4, !noundef !12 - %27 = getelementptr inbounds i8, ptr %.sroa.0.036, i64 24 + %27 = getelementptr inbounds i8, ptr %.sroa.0.037, i64 24 %28 = load float, ptr %27, align 4, !noundef !12 %29 = fadd float %28, 1.600000e+01 - %30 = getelementptr inbounds i8, ptr %.sroa.0.036, i64 28 + %30 = getelementptr inbounds i8, ptr %.sroa.0.037, i64 28 %31 = load float, ptr %30, align 4, !noundef !12 %32 = fadd float %31, 1.000000e+00 %33 = tail call i64 @llvm.fptoui.sat.i64.f32(float %24) @@ -1064,7 +1064,7 @@ define hidden void @"_ZN6brotli3enc10prior_eval22PriorEval$LT$Alloc$GT$14choose_ %.0.sroa.speculated.i23 = tail call noundef i64 @llvm.umin.i64(i64 %35, i64 %.0.sroa.speculated.i) %.0.sroa.speculated.i24 = tail call noundef i64 @llvm.umin.i64(i64 %34, i64 %.0.sroa.speculated.i23) %.0.sroa.speculated.i25 = tail call noundef i64 @llvm.umin.i64(i64 %33, i64 %.0.sroa.speculated.i24) - %38 = getelementptr inbounds i8, ptr %.sroa.0.036, i64 4 + %38 = getelementptr inbounds i8, ptr %.sroa.0.037, i64 4 %39 = load float, ptr %38, align 4, !noundef !12 %40 = fadd float %39, 6.000000e+00 %41 = uitofp i64 %.0.sroa.speculated.i25 to float @@ -1087,7 +1087,7 @@ define hidden void @"_ZN6brotli3enc10prior_eval22PriorEval$LT$Alloc$GT$14choose_ br i1 %or.cond4, label %57, label %53 51: ; preds = %.lr.ph - %52 = icmp ult i64 %.sroa.7.035, 8192 + %52 = icmp ult i64 %.sroa.7.036, 8192 br i1 %52, label %88, label %90, !prof !278 53: ; preds = %46 @@ -1098,17 +1098,17 @@ define hidden void @"_ZN6brotli3enc10prior_eval22PriorEval$LT$Alloc$GT$14choose_ br i1 %or.cond5, label %63, label %59 57: ; preds = %46 - %58 = icmp ult i64 %.sroa.7.035, 8192 + %58 = icmp ult i64 %.sroa.7.036, 8192 br i1 %58, label %81, label %83, !prof !278 59: ; preds = %53 %60 = fadd float %41, 6.000000e+00 %61 = fcmp olt float %60, %17 - %62 = icmp ult i64 %.sroa.7.035, 8192 + %62 = icmp ult i64 %.sroa.7.036, 8192 br i1 %61, label %66, label %65 63: ; preds = %53 - %64 = icmp ult i64 %.sroa.7.035, 8192 + %64 = icmp ult i64 %.sroa.7.036, 8192 br i1 %64, label %78, label %80, !prof !278 65: ; preds = %59 @@ -1118,16 +1118,16 @@ define hidden void @"_ZN6brotli3enc10prior_eval22PriorEval$LT$Alloc$GT$14choose_ br i1 %62, label %condstore.split, label %77, !prof !278 67: ; preds = %65 - %68 = getelementptr inbounds [8192 x i8], ptr %2, i64 0, i64 %.sroa.7.035 + %68 = getelementptr inbounds [8192 x i8], ptr %2, i64 0, i64 %.sroa.7.036 store i8 0, ptr %68, align 1 br label %85 69: ; preds = %65 - tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %.sroa.7.035, i64 noundef 8192, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.e9f42dff1fd369047582a93c3ee51670.20) #21 + tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %.sroa.7.036, i64 noundef 8192, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.e9f42dff1fd369047582a93c3ee51670.20) #21 unreachable condstore.split: ; preds = %66 - %70 = getelementptr inbounds [8192 x i8], ptr %2, i64 0, i64 %.sroa.7.035 + %70 = getelementptr inbounds [8192 x i8], ptr %2, i64 0, i64 %.sroa.7.036 %71 = icmp eq i64 %.0.sroa.speculated.i25, %36 %spec.store.select = select i1 %71, i8 7, i8 4 store i8 %spec.store.select, ptr %70, align 1 @@ -1139,25 +1139,25 @@ condstore.split: ; preds = %66 br i1 %76, label %84, label %85 77: ; preds = %66 - tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %.sroa.7.035, i64 noundef 8192, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.e9f42dff1fd369047582a93c3ee51670.21) #21 + tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %.sroa.7.036, i64 noundef 8192, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.e9f42dff1fd369047582a93c3ee51670.21) #21 unreachable 78: ; preds = %63 - %79 = getelementptr inbounds [8192 x i8], ptr %2, i64 0, i64 %.sroa.7.035 + %79 = getelementptr inbounds [8192 x i8], ptr %2, i64 0, i64 %.sroa.7.036 store i8 3, ptr %79, align 1 br label %85 80: ; preds = %63 - tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %.sroa.7.035, i64 noundef 8192, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.e9f42dff1fd369047582a93c3ee51670.26) #21 + tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %.sroa.7.036, i64 noundef 8192, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.e9f42dff1fd369047582a93c3ee51670.26) #21 unreachable 81: ; preds = %57 - %82 = getelementptr inbounds [8192 x i8], ptr %2, i64 0, i64 %.sroa.7.035 + %82 = getelementptr inbounds [8192 x i8], ptr %2, i64 0, i64 %.sroa.7.036 store i8 2, ptr %82, align 1 br label %85 83: ; preds = %57 - tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %.sroa.7.035, i64 noundef 8192, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.e9f42dff1fd369047582a93c3ee51670.27) #21 + tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %.sroa.7.036, i64 noundef 8192, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.e9f42dff1fd369047582a93c3ee51670.27) #21 unreachable 84: ; preds = %condstore.split @@ -1172,22 +1172,22 @@ condstore.split: ; preds = %66 br i1 %87, label %91, label %95 88: ; preds = %51 - %89 = getelementptr inbounds [8192 x i8], ptr %2, i64 0, i64 %.sroa.7.035 + %89 = getelementptr inbounds [8192 x i8], ptr %2, i64 0, i64 %.sroa.7.036 store i8 1, ptr %89, align 1 br label %85 90: ; preds = %51 - tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %.sroa.7.035, i64 noundef 8192, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.e9f42dff1fd369047582a93c3ee51670.28) #21 + tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %.sroa.7.036, i64 noundef 8192, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.e9f42dff1fd369047582a93c3ee51670.28) #21 unreachable 91: ; preds = %85 - %92 = getelementptr inbounds [8192 x i8], ptr %2, i64 0, i64 %.sroa.7.035 - store i8 %.038, ptr %92, align 1 + %92 = getelementptr inbounds [8192 x i8], ptr %2, i64 0, i64 %.sroa.7.036 + store i8 %.039, ptr %92, align 1 br label %93 93: ; preds = %95, %91 - %.111 = phi i32 [ %.01037, %91 ], [ %spec.select20, %95 ] - %.1 = phi i8 [ %.038, %91 ], [ %spec.select21, %95 ] + %.111 = phi i32 [ %.01038, %91 ], [ %spec.select20, %95 ] + %.1 = phi i8 [ %.039, %91 ], [ %spec.select21, %95 ] %94 = icmp eq ptr %15, %6 br i1 %94, label %._crit_edge, label %.lr.ph @@ -1197,9 +1197,9 @@ condstore.split: ; preds = %66 %98 = load i32, ptr %97, align 4, !noundef !12 %99 = add i32 %98, 1 store i32 %99, ptr %97, align 4 - %100 = icmp ugt i32 %99, %.01037 - %spec.select20 = tail call i32 @llvm.umax.i32(i32 %99, i32 %.01037) - %spec.select21 = select i1 %100, i8 %86, i8 %.038 + %100 = icmp ugt i32 %99, %.01038 + %spec.select20 = tail call i32 @llvm.umax.i32(i32 %99, i32 %.01038) + %spec.select21 = select i1 %100, i8 %86, i8 %.039 br label %93 } diff --git a/bench/actix-rs/optimized/1heyflno2zbhb99l.ll b/bench/actix-rs/optimized/1heyflno2zbhb99l.ll index 84e48e9189c..e3f4e8ac764 100644 --- a/bench/actix-rs/optimized/1heyflno2zbhb99l.ll +++ b/bench/actix-rs/optimized/1heyflno2zbhb99l.ll @@ -1722,11 +1722,11 @@ define hidden void @"_ZN6brotli3enc11stride_eval23StrideEval$LT$Alloc$GT$13choos ret void .lr.ph: ; preds = %22, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h05e9a7d52f15043aE.exit.thread" - %.sroa.0.051 = phi ptr [ %25, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h05e9a7d52f15043aE.exit.thread" ], [ %1, %22 ] - %.sroa.7.050 = phi i64 [ %26, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h05e9a7d52f15043aE.exit.thread" ], [ 0, %22 ] - %25 = getelementptr inbounds i8, ptr %.sroa.0.051, i64 1 - %26 = add nuw nsw i64 %.sroa.7.050, 1 - %27 = shl i64 %.sroa.7.050, 3 + %.sroa.0.053 = phi ptr [ %25, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h05e9a7d52f15043aE.exit.thread" ], [ %1, %22 ] + %.sroa.7.052 = phi i64 [ %26, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h05e9a7d52f15043aE.exit.thread" ], [ 0, %22 ] + %25 = getelementptr inbounds i8, ptr %.sroa.0.053, i64 1 + %26 = add nuw nsw i64 %.sroa.7.052, 1 + %27 = shl i64 %.sroa.7.052, 3 %28 = add i64 %27, 8 %.not.i.i = icmp ugt i64 %28, %.val23 br i1 %.not.i.i, label %29, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8split_at17hed95342f1728b6d9E.exit" @@ -1770,23 +1770,23 @@ define hidden void @"_ZN6brotli3enc11stride_eval23StrideEval$LT$Alloc$GT$13choos br label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h05e9a7d52f15043aE.exit" "_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h05e9a7d52f15043aE.exit.thread": ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h05e9a7d52f15043aE.exit" - store i8 %.1, ptr %.sroa.0.051, align 1 + store i8 %.1, ptr %.sroa.0.053, align 1 %42 = icmp eq ptr %25, %23 br i1 %42, label %._crit_edge, label %.lr.ph "_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h05e9a7d52f15043aE.exit": ; preds = %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8split_at17hed95342f1728b6d9E.exit28", %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h05e9a7d52f15043aE.exit" - %.048 = phi i8 [ 0, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8split_at17hed95342f1728b6d9E.exit28" ], [ %.1, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h05e9a7d52f15043aE.exit" ] - %.01447 = phi float [ %41, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8split_at17hed95342f1728b6d9E.exit28" ], [ %.115, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h05e9a7d52f15043aE.exit" ] - %.sroa.738.046 = phi i8 [ 0, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8split_at17hed95342f1728b6d9E.exit28" ], [ %43, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h05e9a7d52f15043aE.exit" ] - %.sroa.036.0.idx45 = phi i64 [ 0, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8split_at17hed95342f1728b6d9E.exit28" ], [ %.sroa.036.0.add, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h05e9a7d52f15043aE.exit" ] - %.sroa.036.0.ptr49 = getelementptr inbounds i8, ptr %40, i64 %.sroa.036.0.idx45 - %43 = add nuw nsw i8 %.sroa.738.046, 1 - %.sroa.036.0.add = add nuw nsw i64 %.sroa.036.0.idx45, 4 - %44 = load float, ptr %.sroa.036.0.ptr49, align 4, !noundef !4 + %.050 = phi i8 [ 0, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8split_at17hed95342f1728b6d9E.exit28" ], [ %.1, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h05e9a7d52f15043aE.exit" ] + %.01449 = phi float [ %41, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8split_at17hed95342f1728b6d9E.exit28" ], [ %.115, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h05e9a7d52f15043aE.exit" ] + %.sroa.738.048 = phi i8 [ 0, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8split_at17hed95342f1728b6d9E.exit28" ], [ %43, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h05e9a7d52f15043aE.exit" ] + %.sroa.036.0.idx47 = phi i64 [ 0, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8split_at17hed95342f1728b6d9E.exit28" ], [ %.sroa.036.0.add, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h05e9a7d52f15043aE.exit" ] + %.sroa.036.0.ptr51 = getelementptr inbounds i8, ptr %40, i64 %.sroa.036.0.idx47 + %43 = add nuw nsw i8 %.sroa.738.048, 1 + %.sroa.036.0.add = add nuw nsw i64 %.sroa.036.0.idx47, 4 + %44 = load float, ptr %.sroa.036.0.ptr51, align 4, !noundef !4 %45 = fadd float %44, 2.000000e+00 - %46 = fcmp olt float %45, %.01447 - %.115 = select i1 %46, float %44, float %.01447 - %.1 = select i1 %46, i8 %.sroa.738.046, i8 %.048 + %46 = fcmp olt float %45, %.01449 + %.115 = select i1 %46, float %44, float %.01449 + %.1 = select i1 %46, i8 %.sroa.738.048, i8 %.050 %47 = icmp eq i64 %.sroa.036.0.add, 32 br i1 %47, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h05e9a7d52f15043aE.exit.thread", label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h05e9a7d52f15043aE.exit" } @@ -8572,7 +8572,8 @@ define noundef nonnull ptr @_ZN10actix_http6config13ServiceConfig3new17hd11f15f1 %or.cond.i = select i1 %11, i1 %12, i1 false %13 = icmp eq i32 %1, 0 %or.cond4.i = and i1 %13, %or.cond.i - %..i = select i1 %or.cond4.i, i32 1000000001, i32 %1 + %..i = select i1 %or.cond4.i, i64 undef, i64 %0 + %.10.i = select i1 %or.cond4.i, i32 1000000001, i32 %1 %14 = tail call { ptr, ptr } @_ZN10actix_http4date11DateService3new17h29facbf2cf52a7d8E() %15 = extractvalue { ptr, ptr } %14, 0 %16 = extractvalue { ptr, ptr } %14, 1 @@ -8592,9 +8593,9 @@ define noundef nonnull ptr @_ZN10actix_http6config13ServiceConfig3new17hd11f15f1 %.sroa.6.0..sroa_idx = getelementptr inbounds i8, ptr %9, i64 40 store i32 %5, ptr %.sroa.6.0..sroa_idx, align 8 %.sroa.72.0..sroa_idx = getelementptr inbounds i8, ptr %9, i64 48 - store i64 %0, ptr %.sroa.72.0..sroa_idx, align 8 + store i64 %..i, ptr %.sroa.72.0..sroa_idx, align 8 %.sroa.8.0..sroa_idx = getelementptr inbounds i8, ptr %9, i64 56 - store i32 %..i, ptr %.sroa.8.0..sroa_idx, align 8 + store i32 %.10.i, ptr %.sroa.8.0..sroa_idx, align 8 %.sroa.9.0..sroa_idx = getelementptr inbounds i8, ptr %9, i64 60 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %.sroa.9.0..sroa_idx, ptr noundef nonnull align 4 dereferenceable(36) %.sroa.9, i64 36, i1 false) %.sroa.10.0..sroa_idx = getelementptr inbounds i8, ptr %9, i64 96 @@ -8896,9 +8897,9 @@ define hidden noalias noundef ptr @_ZN10actix_http2h17encoder11MessageType14enco br i1 %35, label %38, label %_ZN10actix_http7helpers20write_content_length17ha28d31f607e1e434E.exit 36: ; preds = %29 - %.not.i27.in = and i8 %30, 16 - %.not.i27 = icmp eq i8 %.not.i27.in, 0 - br i1 %.not.i27, label %45, label %44 + %.not.i26.in = and i8 %30, 16 + %.not.i26 = icmp eq i8 %.not.i26.in, 0 + br i1 %.not.i26, label %45, label %44 37: ; preds = %46, %47, %44, %43, %42, %_ZN10actix_http7helpers20write_content_length17ha28d31f607e1e434E.exit, %33 switch i8 %5, label %32 [ @@ -9212,16 +9213,16 @@ _ZN10actix_http6config13ServiceConfig17write_date_header17h479791828c2508ccE.exi %158 = phi i64 [ %151, %_ZN10actix_http6config13ServiceConfig17write_date_header17h479791828c2508ccE.exit ], [ %121, %131 ] %159 = phi i64 [ %156, %_ZN10actix_http6config13ServiceConfig17write_date_header17h479791828c2508ccE.exit ], [ %132, %131 ] %160 = sub i64 %158, %159 - %.not.i22 = icmp ult i64 %160, 2 - br i1 %.not.i22, label %161, label %162 + %.not.i21 = icmp ult i64 %160, 2 + br i1 %.not.i21, label %161, label %162 161: ; preds = %157 call void @_ZN5bytes9bytes_mut8BytesMut13reserve_inner17h32ec46cc31f523baE(ptr noalias noundef nonnull align 8 dereferenceable(32) %1, i64 noundef 2), !noalias !1286 - %.pre.i23 = load i64, ptr %57, align 8, !alias.scope !1289, !noalias !1286 + %.pre.i22 = load i64, ptr %57, align 8, !alias.scope !1289, !noalias !1286 br label %162 162: ; preds = %161, %157 - %163 = phi i64 [ %159, %157 ], [ %.pre.i23, %161 ] + %163 = phi i64 [ %159, %157 ], [ %.pre.i22, %161 ] %164 = load ptr, ptr %1, align 8, !alias.scope !1289, !noalias !1286, !nonnull !4, !noundef !4 %165 = getelementptr inbounds i8, ptr %164, i64 %163 store i16 2573, ptr %165, align 1 @@ -9380,9 +9381,10 @@ define hidden { i64, i32 } @_ZN10actix_http10keep_alive9KeepAlive9normalize17h5e %or.cond = select i1 %4, i1 %5, i1 false %6 = icmp eq i32 %1, 0 %or.cond4 = and i1 %6, %or.cond - %. = select i1 %or.cond4, i32 1000000001, i32 %1 - %7 = insertvalue { i64, i32 } poison, i64 %0, 0 - %8 = insertvalue { i64, i32 } %7, i32 %., 1 + %. = select i1 %or.cond4, i64 undef, i64 %0 + %.10 = select i1 %or.cond4, i32 1000000001, i32 %1 + %7 = insertvalue { i64, i32 } poison, i64 %., 0 + %8 = insertvalue { i64, i32 } %7, i32 %.10, 1 ret { i64, i32 } %8 } @@ -9396,9 +9398,9 @@ define { i64, i32 } @"_ZN101_$LT$actix_http..keep_alive..KeepAlive$u20$as$u20$co %3 = icmp eq i64 %0, 0 %4 = icmp eq i32 %1, 0 %or.cond4.i = and i1 %3, %4 - %..i = select i1 %or.cond4.i, i32 1000000001, i32 %1 + %.10.i = select i1 %or.cond4.i, i32 1000000001, i32 %1 %5 = insertvalue { i64, i32 } poison, i64 %0, 0 - %6 = insertvalue { i64, i32 } %5, i32 %..i, 1 + %6 = insertvalue { i64, i32 } %5, i32 %.10.i, 1 ret { i64, i32 } %6 } @@ -9408,17 +9410,20 @@ define { i64, i32 } @"_ZN129_$LT$actix_http..keep_alive..KeepAlive$u20$as$u20$co %4 = icmp eq i64 %0, 0 %5 = icmp eq i32 %1, 0 %or.cond4.i.i = and i1 %4, %5 + %.sroa.02.0 = select i1 %3, i64 undef, i64 %0 %6 = select i1 %3, i1 true, i1 %or.cond4.i.i %.sroa.5.0 = select i1 %6, i32 1000000001, i32 %1 %7 = and i32 %.sroa.5.0, -2 %8 = icmp ne i32 %7, 1000000000 - %or.cond.i = select i1 %8, i1 %4, i1 false - %9 = icmp eq i32 %.sroa.5.0, 0 - %or.cond4.i = and i1 %9, %or.cond.i - %..i = select i1 %or.cond4.i, i32 1000000001, i32 %.sroa.5.0 - %10 = insertvalue { i64, i32 } poison, i64 %0, 0 - %11 = insertvalue { i64, i32 } %10, i32 %..i, 1 - ret { i64, i32 } %11 + %9 = icmp eq i64 %.sroa.02.0, 0 + %or.cond.i = select i1 %8, i1 %9, i1 false + %10 = icmp eq i32 %.sroa.5.0, 0 + %or.cond4.i = and i1 %10, %or.cond.i + %..i = select i1 %or.cond4.i, i64 undef, i64 %.sroa.02.0 + %.10.i = select i1 %or.cond4.i, i32 1000000001, i32 %.sroa.5.0 + %11 = insertvalue { i64, i32 } poison, i64 %..i, 0 + %12 = insertvalue { i64, i32 } %11, i32 %.10.i, 1 + ret { i64, i32 } %12 } ; Function Attrs: nonlazybind uwtable @@ -10528,16 +10533,16 @@ define internal fastcc void @_ZN10actix_http2ws4mask17apply_mask_fast3217h6190b6 br i1 %23, label %_ZN10actix_http2ws4mask19apply_mask_fallback17h6833f54c4369bde9E.exit, label %.lr.ph.i .lr.ph.i: ; preds = %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$12align_to_mut17hd0d293d2707e367dE.exit", %.lr.ph.i - %.sroa.0.08.i = phi ptr [ %24, %.lr.ph.i ], [ %.sink15.i, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$12align_to_mut17hd0d293d2707e367dE.exit" ] - %.sroa.7.07.i = phi i64 [ %25, %.lr.ph.i ], [ 0, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$12align_to_mut17hd0d293d2707e367dE.exit" ] - %24 = getelementptr inbounds i8, ptr %.sroa.0.08.i, i64 1 - %25 = add nuw i64 %.sroa.7.07.i, 1 - %26 = and i64 %.sroa.7.07.i, 3 + %.sroa.0.09.i = phi ptr [ %24, %.lr.ph.i ], [ %.sink15.i, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$12align_to_mut17hd0d293d2707e367dE.exit" ] + %.sroa.7.08.i = phi i64 [ %25, %.lr.ph.i ], [ 0, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$12align_to_mut17hd0d293d2707e367dE.exit" ] + %24 = getelementptr inbounds i8, ptr %.sroa.0.09.i, i64 1 + %25 = add nuw i64 %.sroa.7.08.i, 1 + %26 = and i64 %.sroa.7.08.i, 3 %27 = getelementptr inbounds [4 x i8], ptr %5, i64 0, i64 %26 %28 = load i8, ptr %27, align 1, !noalias !1354, !noundef !4 - %29 = load i8, ptr %.sroa.0.08.i, align 1, !alias.scope !1354, !noundef !4 + %29 = load i8, ptr %.sroa.0.09.i, align 1, !alias.scope !1354, !noundef !4 %30 = xor i8 %29, %28 - store i8 %30, ptr %.sroa.0.08.i, align 1, !alias.scope !1354 + store i8 %30, ptr %.sroa.0.09.i, align 1, !alias.scope !1354 %31 = icmp eq ptr %24, %22 br i1 %31, label %_ZN10actix_http2ws4mask19apply_mask_fallback17h6833f54c4369bde9E.exit, label %.lr.ph.i @@ -10562,15 +10567,15 @@ _ZN10actix_http2ws4mask19apply_mask_fallback17h6833f54c4369bde9E.exit: ; preds = br i1 %39, label %_ZN10actix_http2ws4mask19apply_mask_fallback17h6833f54c4369bde9E.exit12, label %.lr.ph.i9 .lr.ph.i9: ; preds = %"_ZN94_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcd72623f7cb9c693E.exit.thread", %.lr.ph.i9 - %.sroa.0.08.i10 = phi ptr [ %40, %.lr.ph.i9 ], [ %.sink9.i, %"_ZN94_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcd72623f7cb9c693E.exit.thread" ] - %.sroa.7.07.i11 = phi i64 [ %41, %.lr.ph.i9 ], [ 0, %"_ZN94_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcd72623f7cb9c693E.exit.thread" ] - %40 = getelementptr inbounds i8, ptr %.sroa.0.08.i10, i64 1 - %41 = add nuw nsw i64 %.sroa.7.07.i11, 1 - %42 = getelementptr inbounds [4 x i8], ptr %4, i64 0, i64 %.sroa.7.07.i11 + %.sroa.0.09.i10 = phi ptr [ %40, %.lr.ph.i9 ], [ %.sink9.i, %"_ZN94_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcd72623f7cb9c693E.exit.thread" ] + %.sroa.7.08.i11 = phi i64 [ %41, %.lr.ph.i9 ], [ 0, %"_ZN94_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcd72623f7cb9c693E.exit.thread" ] + %40 = getelementptr inbounds i8, ptr %.sroa.0.09.i10, i64 1 + %41 = add nuw nsw i64 %.sroa.7.08.i11, 1 + %42 = getelementptr inbounds [4 x i8], ptr %4, i64 0, i64 %.sroa.7.08.i11 %43 = load i8, ptr %42, align 1, !noalias !1357, !noundef !4 - %44 = load i8, ptr %.sroa.0.08.i10, align 1, !alias.scope !1357, !noundef !4 + %44 = load i8, ptr %.sroa.0.09.i10, align 1, !alias.scope !1357, !noundef !4 %45 = xor i8 %44, %43 - store i8 %45, ptr %.sroa.0.08.i10, align 1, !alias.scope !1357 + store i8 %45, ptr %.sroa.0.09.i10, align 1, !alias.scope !1357 %46 = icmp eq ptr %40, %38 br i1 %46, label %_ZN10actix_http2ws4mask19apply_mask_fallback17h6833f54c4369bde9E.exit12, label %.lr.ph.i9 diff --git a/bench/actix-rs/optimized/1kr0tdq4l6v38mbk.ll b/bench/actix-rs/optimized/1kr0tdq4l6v38mbk.ll index f95c548eb63..aabb09188f5 100644 --- a/bench/actix-rs/optimized/1kr0tdq4l6v38mbk.ll +++ b/bench/actix-rs/optimized/1kr0tdq4l6v38mbk.ll @@ -1348,8 +1348,8 @@ define internal fastcc void @"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$ %9 = icmp ugt i64 %8, %5 %.promoted = load i64, ptr %6, align 8 %10 = icmp ugt i64 %.promoted, %8 - %or.cond.i43 = or i1 %10, %9 - br i1 %or.cond.i43, label %.loopexit, label %.lr.ph + %or.cond.i42 = or i1 %10, %9 + br i1 %or.cond.i42, label %.loopexit, label %.lr.ph .lr.ph: ; preds = %2 %11 = getelementptr inbounds i8, ptr %3, i64 %.promoted @@ -1363,37 +1363,37 @@ define internal fastcc void @"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$ br i1 %18, label %.lr.ph.split.us.split, label %.lr.ph.split.split .lr.ph.split.us.split: ; preds = %.lr.ph, %38 - %.49.us = phi ptr [ %41, %38 ], [ %11, %.lr.ph ] - %.sroa.3.0.i47.us = phi i64 [ %40, %38 ], [ %12, %.lr.ph ] + %.sroa.0.050.us = phi ptr [ %41, %38 ], [ %11, %.lr.ph ] + %.sroa.7.049.us = phi i64 [ %40, %38 ], [ %12, %.lr.ph ] %19 = phi i64 [ %36, %38 ], [ %.promoted, %.lr.ph ] %20 = load i8, ptr %17, align 1, !noundef !4 - %21 = icmp ult i64 %.sroa.3.0.i47.us, 16 + %21 = icmp ult i64 %.sroa.7.049.us, 16 br i1 %21, label %24, label %22 22: ; preds = %.lr.ph.split.us.split - %23 = tail call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef %20, ptr noalias noundef nonnull readonly align 1 %.49.us, i64 noundef %.sroa.3.0.i47.us) + %23 = tail call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef %20, ptr noalias noundef nonnull readonly align 1 %.sroa.0.050.us, i64 noundef %.sroa.7.049.us) br label %32 24: ; preds = %.lr.ph.split.us.split - %.not.i.us = icmp eq i64 %8, %19 + %.not.i.us = icmp eq i64 %.sroa.7.049.us, 0 br i1 %.not.i.us, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us, label %.lr.ph.i.us .lr.ph.i.us: ; preds = %24, %28 %.05.i.us = phi i64 [ %29, %28 ], [ 0, %24 ] - %25 = getelementptr inbounds [0 x i8], ptr %.49.us, i64 0, i64 %.05.i.us + %25 = getelementptr inbounds [0 x i8], ptr %.sroa.0.050.us, i64 0, i64 %.05.i.us %26 = load i8, ptr %25, align 1, !alias.scope !210, !noundef !4 %27 = icmp eq i8 %26, %20 br i1 %27, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us, label %28 28: ; preds = %.lr.ph.i.us %29 = add nuw i64 %.05.i.us, 1 - %exitcond.not.i.us = icmp eq i64 %29, %.sroa.3.0.i47.us + %exitcond.not.i.us = icmp eq i64 %29, %.sroa.7.049.us br i1 %exitcond.not.i.us, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us, label %.lr.ph.i.us _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us: ; preds = %.lr.ph.i.us, %28, %24 - %.0.lcssa.i.us = phi i64 [ 0, %24 ], [ %.sroa.3.0.i47.us, %28 ], [ %.05.i.us, %.lr.ph.i.us ] - %.sroa.0.0.i25.us = phi i64 [ 0, %24 ], [ 0, %28 ], [ 1, %.lr.ph.i.us ] - %30 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i25.us, 0 + %.0.lcssa.i.us = phi i64 [ 0, %24 ], [ %.sroa.7.049.us, %28 ], [ %.05.i.us, %.lr.ph.i.us ] + %.sroa.0.0.i24.us = phi i64 [ 0, %24 ], [ 0, %28 ], [ 1, %.lr.ph.i.us ] + %30 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i24.us, 0 %31 = insertvalue { i64, i64 } %30, i64 %.0.lcssa.i.us, 1 br label %32 @@ -1410,8 +1410,8 @@ _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us: ; preds = %.lr. store i64 %36, ptr %6, align 8 %.not.us = icmp ult i64 %36, %15 %37 = icmp ugt i64 %36, %5 - %or.cond83 = or i1 %.not.us, %37 - br i1 %or.cond83, label %38, label %.split51.us + %or.cond87 = or i1 %.not.us, %37 + br i1 %or.cond87, label %38, label %.split52.us 38: ; preds = %34 %39 = icmp ugt i64 %36, %8 @@ -1420,37 +1420,37 @@ _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us: ; preds = %.lr. br i1 %39, label %.loopexit, label %.lr.ph.split.us.split .lr.ph.split.split: ; preds = %.lr.ph, %61 - %.49 = phi ptr [ %64, %61 ], [ %11, %.lr.ph ] - %.sroa.3.0.i47 = phi i64 [ %63, %61 ], [ %12, %.lr.ph ] + %.sroa.0.050 = phi ptr [ %64, %61 ], [ %11, %.lr.ph ] + %.sroa.7.049 = phi i64 [ %63, %61 ], [ %12, %.lr.ph ] %42 = phi i64 [ %59, %61 ], [ %.promoted, %.lr.ph ] %43 = load i8, ptr %17, align 1, !noundef !4 - %44 = icmp ult i64 %.sroa.3.0.i47, 16 + %44 = icmp ult i64 %.sroa.7.049, 16 br i1 %44, label %47, label %45 45: ; preds = %.lr.ph.split.split - %46 = tail call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef %43, ptr noalias noundef nonnull readonly align 1 %.49, i64 noundef %.sroa.3.0.i47) + %46 = tail call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef %43, ptr noalias noundef nonnull readonly align 1 %.sroa.0.050, i64 noundef %.sroa.7.049) br label %55 47: ; preds = %.lr.ph.split.split - %.not.i = icmp eq i64 %8, %42 + %.not.i = icmp eq i64 %.sroa.7.049, 0 br i1 %.not.i, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit, label %.lr.ph.i .lr.ph.i: ; preds = %47, %51 %.05.i = phi i64 [ %52, %51 ], [ 0, %47 ] - %48 = getelementptr inbounds [0 x i8], ptr %.49, i64 0, i64 %.05.i + %48 = getelementptr inbounds [0 x i8], ptr %.sroa.0.050, i64 0, i64 %.05.i %49 = load i8, ptr %48, align 1, !alias.scope !210, !noundef !4 %50 = icmp eq i8 %49, %43 br i1 %50, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit, label %51 51: ; preds = %.lr.ph.i %52 = add nuw i64 %.05.i, 1 - %exitcond.not.i = icmp eq i64 %52, %.sroa.3.0.i47 + %exitcond.not.i = icmp eq i64 %52, %.sroa.7.049 br i1 %exitcond.not.i, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit, label %.lr.ph.i _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit: ; preds = %.lr.ph.i, %51, %47 - %.0.lcssa.i = phi i64 [ 0, %47 ], [ %.sroa.3.0.i47, %51 ], [ %.05.i, %.lr.ph.i ] - %.sroa.0.0.i25 = phi i64 [ 0, %47 ], [ 0, %51 ], [ 1, %.lr.ph.i ] - %53 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i25, 0 + %.0.lcssa.i = phi i64 [ 0, %47 ], [ %.sroa.7.049, %51 ], [ %.05.i, %.lr.ph.i ] + %.sroa.0.0.i24 = phi i64 [ 0, %47 ], [ 0, %51 ], [ 1, %.lr.ph.i ] + %53 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i24, 0 %54 = insertvalue { i64, i64 } %53, i64 %.0.lcssa.i, 1 br label %55 @@ -1485,22 +1485,22 @@ _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit: ; preds = %.lr.ph. %66 = getelementptr inbounds i8, ptr %3, i64 %65 %bcmp.i = tail call i32 @bcmp(ptr nonnull readonly %66, ptr nonnull readonly %13, i64 %15), !alias.scope !213 %67 = icmp eq i32 %bcmp.i, 0 - br i1 %67, label %.split77.us, label %61 + br i1 %67, label %.split80.us, label %61 -.split51.us: ; preds = %34 +.split52.us: ; preds = %34 tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h334e37603831ab29E(i64 noundef %15, i64 noundef 4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.cf8ce5e1de4a78c7021e8ff3b6c4351c.53) #30, !noalias !217 unreachable -.split77.us: ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hb277773516156c9aE.exit" +.split80.us: ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hb277773516156c9aE.exit" %68 = getelementptr inbounds i8, ptr %0, i64 8 store i64 %65, ptr %68, align 8 %69 = getelementptr inbounds i8, ptr %0, i64 16 store i64 %59, ptr %69, align 8 br label %.loopexit -.loopexit: ; preds = %61, %38, %2, %.split.us, %.split77.us - %storemerge24 = phi i64 [ 0, %.split.us ], [ 1, %.split77.us ], [ 0, %2 ], [ 0, %38 ], [ 0, %61 ] - store i64 %storemerge24, ptr %0, align 8 +.loopexit: ; preds = %61, %38, %2, %.split.us, %.split80.us + %storemerge23 = phi i64 [ 0, %.split.us ], [ 1, %.split80.us ], [ 0, %2 ], [ 0, %38 ], [ 0, %61 ] + store i64 %storemerge23, ptr %0, align 8 ret void } diff --git a/bench/actix-rs/optimized/1r0hw26u995kqhy.ll b/bench/actix-rs/optimized/1r0hw26u995kqhy.ll index 629fadff848..6f834ec1f1e 100644 --- a/bench/actix-rs/optimized/1r0hw26u995kqhy.ll +++ b/bench/actix-rs/optimized/1r0hw26u995kqhy.ll @@ -119,14 +119,14 @@ define { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amortized17h7 %4 = alloca { [1 x i64], i64, [1 x i64] }, align 8 %5 = alloca { i64, [2 x i64] }, align 8 %6 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %1, i64 %2) - %7 = extractvalue { i64, i1 } %6, 0 - %8 = extractvalue { i64, i1 } %6, 1 - br i1 %8, label %34, label %9 + %7 = extractvalue { i64, i1 } %6, 1 + %8 = extractvalue { i64, i1 } %6, 0 + br i1 %7, label %34, label %9 9: ; preds = %3 %10 = load i64, ptr %0, align 8, !noundef !3 %11 = shl i64 %10, 1 - %12 = tail call i64 @_ZN4core3cmp6max_by17hf7addca6e43a9e65E(i64 %11, i64 %7) + %12 = tail call i64 @_ZN4core3cmp6max_by17hf7addca6e43a9e65E(i64 %11, i64 %8) %13 = tail call i64 @_ZN4core3cmp6max_by17hf7addca6e43a9e65E(i64 4, i64 %12) %14 = tail call { i64, i64 } @_ZN4core5alloc6layout6Layout5array5inner17h4515046b15abb383E(i64 16, i64 8, i64 %13) %15 = extractvalue { i64, i64 } %14, 0 @@ -166,7 +166,7 @@ define { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amortized17h7 br label %34 34: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h49f71745708eff2aE.exit", %3, %31 - %.sroa.4.0 = phi i64 [ undef, %31 ], [ %7, %3 ], [ %29, %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h49f71745708eff2aE.exit" ] + %.sroa.4.0 = phi i64 [ undef, %31 ], [ %8, %3 ], [ %29, %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h49f71745708eff2aE.exit" ] %.sroa.0.0 = phi i64 [ -9223372036854775807, %31 ], [ 0, %3 ], [ %30, %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h49f71745708eff2aE.exit" ] %35 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 %36 = insertvalue { i64, i64 } %35, i64 %.sroa.4.0, 1 @@ -178,14 +178,14 @@ define { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amortized17h8 %4 = alloca { [1 x i64], i64, [1 x i64] }, align 8 %5 = alloca { i64, [2 x i64] }, align 8 %6 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %1, i64 %2) - %7 = extractvalue { i64, i1 } %6, 0 - %8 = extractvalue { i64, i1 } %6, 1 - br i1 %8, label %34, label %9 + %7 = extractvalue { i64, i1 } %6, 1 + %8 = extractvalue { i64, i1 } %6, 0 + br i1 %7, label %34, label %9 9: ; preds = %3 %10 = load i64, ptr %0, align 8, !noundef !3 %11 = shl i64 %10, 1 - %12 = tail call i64 @_ZN4core3cmp6max_by17hf7addca6e43a9e65E(i64 %11, i64 %7) + %12 = tail call i64 @_ZN4core3cmp6max_by17hf7addca6e43a9e65E(i64 %11, i64 %8) %13 = tail call i64 @_ZN4core3cmp6max_by17hf7addca6e43a9e65E(i64 4, i64 %12) %14 = tail call { i64, i64 } @_ZN4core5alloc6layout6Layout5array5inner17h4515046b15abb383E(i64 56, i64 8, i64 %13) %15 = extractvalue { i64, i64 } %14, 0 @@ -225,7 +225,7 @@ define { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amortized17h8 br label %34 34: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hd1d145e5442f9504E.exit", %3, %31 - %.sroa.4.0 = phi i64 [ undef, %31 ], [ %7, %3 ], [ %29, %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hd1d145e5442f9504E.exit" ] + %.sroa.4.0 = phi i64 [ undef, %31 ], [ %8, %3 ], [ %29, %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hd1d145e5442f9504E.exit" ] %.sroa.0.0 = phi i64 [ -9223372036854775807, %31 ], [ 0, %3 ], [ %30, %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hd1d145e5442f9504E.exit" ] %35 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 %36 = insertvalue { i64, i64 } %35, i64 %.sroa.4.0, 1 @@ -237,14 +237,14 @@ define { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amortized17h9 %4 = alloca { [1 x i64], i64, [1 x i64] }, align 8 %5 = alloca { i64, [2 x i64] }, align 8 %6 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %1, i64 %2) - %7 = extractvalue { i64, i1 } %6, 0 - %8 = extractvalue { i64, i1 } %6, 1 - br i1 %8, label %27, label %9 + %7 = extractvalue { i64, i1 } %6, 1 + %8 = extractvalue { i64, i1 } %6, 0 + br i1 %7, label %27, label %9 9: ; preds = %3 %10 = load i64, ptr %0, align 8, !noundef !3 %11 = shl i64 %10, 1 - %12 = tail call i64 @_ZN4core3cmp6max_by17hf7addca6e43a9e65E(i64 %11, i64 %7) + %12 = tail call i64 @_ZN4core3cmp6max_by17hf7addca6e43a9e65E(i64 %11, i64 %8) %13 = tail call i64 @_ZN4core3cmp6max_by17hf7addca6e43a9e65E(i64 4, i64 %12) %14 = tail call { i64, i64 } @_ZN4core5alloc6layout6Layout5array5inner17h4515046b15abb383E(i64 8, i64 8, i64 %13) %15 = extractvalue { i64, i64 } %14, 0 @@ -268,7 +268,7 @@ define { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amortized17h9 br label %27 27: ; preds = %9, %3, %24 - %.sroa.4.0 = phi i64 [ undef, %24 ], [ %7, %3 ], [ %22, %9 ] + %.sroa.4.0 = phi i64 [ undef, %24 ], [ %8, %3 ], [ %22, %9 ] %.sroa.0.0 = phi i64 [ -9223372036854775807, %24 ], [ 0, %3 ], [ %23, %9 ] %28 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 %29 = insertvalue { i64, i64 } %28, i64 %.sroa.4.0, 1 @@ -280,14 +280,14 @@ define { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amortized17hc %4 = alloca { [1 x i64], i64, [1 x i64] }, align 8 %5 = alloca { i64, [2 x i64] }, align 8 %6 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %1, i64 %2) - %7 = extractvalue { i64, i1 } %6, 0 - %8 = extractvalue { i64, i1 } %6, 1 - br i1 %8, label %34, label %9 + %7 = extractvalue { i64, i1 } %6, 1 + %8 = extractvalue { i64, i1 } %6, 0 + br i1 %7, label %34, label %9 9: ; preds = %3 %10 = load i64, ptr %0, align 8, !noundef !3 %11 = shl i64 %10, 1 - %12 = tail call i64 @_ZN4core3cmp6max_by17hf7addca6e43a9e65E(i64 %11, i64 %7) + %12 = tail call i64 @_ZN4core3cmp6max_by17hf7addca6e43a9e65E(i64 %11, i64 %8) %13 = tail call i64 @_ZN4core3cmp6max_by17hf7addca6e43a9e65E(i64 4, i64 %12) %14 = tail call { i64, i64 } @_ZN4core5alloc6layout6Layout5array5inner17h4515046b15abb383E(i64 32, i64 8, i64 %13) %15 = extractvalue { i64, i64 } %14, 0 @@ -327,7 +327,7 @@ define { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amortized17hc br label %34 34: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h80a978baf6f60fbbE.exit", %3, %31 - %.sroa.4.0 = phi i64 [ undef, %31 ], [ %7, %3 ], [ %29, %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h80a978baf6f60fbbE.exit" ] + %.sroa.4.0 = phi i64 [ undef, %31 ], [ %8, %3 ], [ %29, %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h80a978baf6f60fbbE.exit" ] %.sroa.0.0 = phi i64 [ -9223372036854775807, %31 ], [ 0, %3 ], [ %30, %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h80a978baf6f60fbbE.exit" ] %35 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 %36 = insertvalue { i64, i64 } %35, i64 %.sroa.4.0, 1 diff --git a/bench/actix-rs/optimized/22x16e3cd4musvfe.ll b/bench/actix-rs/optimized/22x16e3cd4musvfe.ll index 38a64ee0f24..5a0b7064ee0 100644 --- a/bench/actix-rs/optimized/22x16e3cd4musvfe.ll +++ b/bench/actix-rs/optimized/22x16e3cd4musvfe.ll @@ -344,13 +344,13 @@ define internal fastcc noundef range(i32 -7, 3) i32 @_ZN19brotli_decompressor6de %33 = getelementptr inbounds i8, ptr %6, i64 2228 %34 = add nsw i32 %21, -1 %35 = icmp eq i32 %34, 0 - %scevgep250 = getelementptr inbounds i8, ptr %6, i64 258 + %scevgep251 = getelementptr inbounds i8, ptr %6, i64 258 %.pre = load i8, ptr %22, align 4, !range !38 br label %36 36: ; preds = %.backedge, %9 %37 = phi i8 [ %.sink, %.backedge ], [ %.pre, %9 ] - switch i8 %37, label %default.unreachable262 [ + switch i8 %37, label %default.unreachable263 [ i8 0, label %38 i8 1, label %40 i8 2, label %42 @@ -359,7 +359,7 @@ define internal fastcc noundef range(i32 -7, 3) i32 @_ZN19brotli_decompressor6de i8 5, label %146 ] -default.unreachable262: ; preds = %36 +default.unreachable263: ; preds = %36 unreachable 38: ; preds = %36 @@ -429,7 +429,7 @@ default.unreachable262: ; preds = %36 br i1 %61, label %.backedge, label %.lr.ph56.i.preheader .lr.ph56.i.preheader: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h63070841fb32574bE.exit.i" - %scevgep251 = getelementptr i8, ptr %scevgep250, i64 %.idx.i + %scevgep252 = getelementptr i8, ptr %scevgep251, i64 %.idx.i br label %.lr.ph56.i .lr.ph56.i: ; preds = %.lr.ph56.i.preheader, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h98242e433c16d84bE.exit34.thread.i" @@ -451,7 +451,7 @@ default.unreachable262: ; preds = %36 67: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h98242e433c16d84bE.exit34.i", %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h63070841fb32574bE.exit32.i" %.sroa.037.0.i = phi ptr [ %66, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h63070841fb32574bE.exit32.i" ], [ %70, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h98242e433c16d84bE.exit34.i" ] - %68 = icmp eq ptr %.sroa.037.0.i, %scevgep251 + %68 = icmp eq ptr %.sroa.037.0.i, %scevgep252 br i1 %68, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h98242e433c16d84bE.exit34.thread.i", label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h98242e433c16d84bE.exit34.i" "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h98242e433c16d84bE.exit34.thread.i": ; preds = %67 @@ -573,19 +573,19 @@ default.unreachable262: ; preds = %36 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16), !noalias !59 store <16 x i8> , ptr %16, align 16, !noalias !59 %113 = icmp ult i32 %.pre.i, 16 - br i1 %113, label %._crit_edge260, label %114, !prof !60 + br i1 %113, label %._crit_edge261, label %114, !prof !60 -._crit_edge260: ; preds = %112 - %.pre261 = load i32, ptr %27, align 8, !alias.scope !51, !noalias !54 +._crit_edge261: ; preds = %112 + %.pre262 = load i32, ptr %27, align 8, !alias.scope !51, !noalias !54 br label %115 114: ; preds = %112 call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %.pre93.i, i64 noundef 16, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ef1a8dfc954e6e945538d4598650d6d8.114) #24 unreachable -115: ; preds = %._crit_edge260, %.thread.i - %116 = phi i32 [ %97, %.thread.i ], [ %.pre261, %._crit_edge260 ] - %.pre-phi95.i = phi i64 [ %106, %.thread.i ], [ %.pre93.i, %._crit_edge260 ] +115: ; preds = %._crit_edge261, %.thread.i + %116 = phi i32 [ %97, %.thread.i ], [ %.pre262, %._crit_edge261 ] + %.pre-phi95.i = phi i64 [ %106, %.thread.i ], [ %.pre93.i, %._crit_edge261 ] %117 = getelementptr inbounds [16 x i8], ptr %16, i64 0, i64 %.pre-phi95.i %118 = load i8, ptr %117, align 1, !noalias !59, !noundef !12 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16), !noalias !59 @@ -662,11 +662,11 @@ default.unreachable262: ; preds = %36 %151 = load i32, ptr %33, align 4, !alias.scope !62, !noalias !67, !noundef !12 store i32 %151, ptr %10, align 4, !noalias !65 %152 = call noundef zeroext i1 @_ZN19brotli_decompressor10bit_reader21BrotliWarmupBitReader17h0f0785d05e11282fE(ptr noalias noundef nonnull align 8 dereferenceable(24) %26, ptr noalias noundef nonnull readonly align 1 %7, i64 noundef %8) - br i1 %152, label %.preheader.i, label %._crit_edge257 + br i1 %152, label %.preheader.i, label %._crit_edge258 -._crit_edge257: ; preds = %146 - %.pre258 = load i32, ptr %31, align 4, !alias.scope !68, !noalias !71 - %.pre259 = load i32, ptr %24, align 4 +._crit_edge258: ; preds = %146 + %.pre259 = load i32, ptr %31, align 4, !alias.scope !68, !noalias !71 + %.pre260 = load i32, ptr %24, align 4 br label %233 .preheader.i: ; preds = %146 @@ -688,22 +688,22 @@ default.unreachable262: ; preds = %36 br i1 %161, label %.lr.ph, label %._crit_edge.loopexit ._crit_edge.loopexit: ; preds = %159 - %.pre254 = load i32, ptr %13, align 4, !noalias !65 - %.pre255 = load i32, ptr %11, align 4, !noalias !65 - %.pre256 = load i32, ptr %10, align 4, !noalias !65 + %.pre255 = load i32, ptr %13, align 4, !noalias !65 + %.pre256 = load i32, ptr %11, align 4, !noalias !65 + %.pre257 = load i32, ptr %10, align 4, !noalias !65 br label %._crit_edge ._crit_edge: ; preds = %._crit_edge.loopexit, %.lr.ph.i55 - %162 = phi i32 [ %151, %.lr.ph.i55 ], [ %.pre256, %._crit_edge.loopexit ] - %163 = phi i32 [ %150, %.lr.ph.i55 ], [ %.pre255, %._crit_edge.loopexit ] - %164 = phi i32 [ %148, %.lr.ph.i55 ], [ %.pre254, %._crit_edge.loopexit ] - %.lcssa96 = phi i32 [ %149, %.lr.ph.i55 ], [ %196, %._crit_edge.loopexit ] - %.lcssa94 = phi i32 [ %147, %.lr.ph.i55 ], [ %194, %._crit_edge.loopexit ] - store i32 %.lcssa94, ptr %31, align 4, !alias.scope !62, !noalias !67 + %162 = phi i32 [ %151, %.lr.ph.i55 ], [ %.pre257, %._crit_edge.loopexit ] + %163 = phi i32 [ %150, %.lr.ph.i55 ], [ %.pre256, %._crit_edge.loopexit ] + %164 = phi i32 [ %148, %.lr.ph.i55 ], [ %.pre255, %._crit_edge.loopexit ] + %.lcssa97 = phi i32 [ %149, %.lr.ph.i55 ], [ %196, %._crit_edge.loopexit ] + %.lcssa95 = phi i32 [ %147, %.lr.ph.i55 ], [ %194, %._crit_edge.loopexit ] + store i32 %.lcssa95, ptr %31, align 4, !alias.scope !62, !noalias !67 store i32 %164, ptr %23, align 8, !alias.scope !62, !noalias !67 store i32 %163, ptr %32, align 8, !alias.scope !62, !noalias !67 store i32 %162, ptr %33, align 4, !alias.scope !62, !noalias !67 - store i32 %.lcssa96, ptr %24, align 4, !alias.scope !62, !noalias !67 + store i32 %.lcssa97, ptr %24, align 4, !alias.scope !62, !noalias !67 br label %233 .lr.ph: ; preds = %.lr.ph.i55, %159 @@ -840,7 +840,7 @@ _ZN19brotli_decompressor6decode24ReadSimpleHuffmanSymbols17hf1aa7df73a3ca6f4E.ex _ZN19brotli_decompressor6decode25ReadCodeLengthCodeLengths17hbab142c62b2f485fE.exit: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h174a79333c9ffcf7E.exit.thread.i" call void @_ZN19brotli_decompressor7huffman34BrotliBuildCodeLengthsHuffmanTable17hb3292ee5bf7a2349E(ptr noalias noundef nonnull align 2 %6, i64 noundef 32, ptr noalias noundef nonnull readonly align 1 %28, i64 noundef 18, ptr noalias noundef nonnull readonly align 2 %29, i64 noundef 16) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %29, i8 0, i64 32, i1 false) - br label %.preheader91 + br label %.preheader92 220: ; preds = %228 store i32 0, ptr %31, align 4 @@ -850,36 +850,36 @@ _ZN19brotli_decompressor6decode25ReadCodeLengthCodeLengths17hbab142c62b2f485fE.e store i32 32768, ptr %24, align 4 br label %.backedge -.preheader91: ; preds = %_ZN19brotli_decompressor6decode25ReadCodeLengthCodeLengths17hbab142c62b2f485fE.exit, %228 - %.sroa.7.0190 = phi i64 [ %229, %228 ], [ 0, %_ZN19brotli_decompressor6decode25ReadCodeLengthCodeLengths17hbab142c62b2f485fE.exit ] - %.sroa.070.0.idx189 = phi i64 [ %.sroa.070.0.add, %228 ], [ 128, %_ZN19brotli_decompressor6decode25ReadCodeLengthCodeLengths17hbab142c62b2f485fE.exit ] - %.sroa.070.0.ptr = getelementptr inbounds i8, ptr %6, i64 %.sroa.070.0.idx189 - %221 = trunc i64 %.sroa.7.0190 to i32 +.preheader92: ; preds = %_ZN19brotli_decompressor6decode25ReadCodeLengthCodeLengths17hbab142c62b2f485fE.exit, %228 + %.sroa.7.0191 = phi i64 [ %229, %228 ], [ 0, %_ZN19brotli_decompressor6decode25ReadCodeLengthCodeLengths17hbab142c62b2f485fE.exit ] + %.sroa.070.0.idx190 = phi i64 [ %.sroa.070.0.add, %228 ], [ 128, %_ZN19brotli_decompressor6decode25ReadCodeLengthCodeLengths17hbab142c62b2f485fE.exit ] + %.sroa.070.0.ptr = getelementptr inbounds i8, ptr %6, i64 %.sroa.070.0.idx190 + %221 = trunc i64 %.sroa.7.0191 to i32 %222 = add i32 %221, -16 store i32 %222, ptr %.sroa.070.0.ptr, align 4 %223 = load i64, ptr %30, align 8, !noundef !12 - %224 = add i64 %223, %.sroa.7.0190 + %224 = add i64 %223, %.sroa.7.0191 %225 = shl i64 %224, 32 %sext = add i64 %225, -68719476736 %226 = ashr exact i64 %sext, 32 %227 = icmp ult i64 %226, 720 br i1 %227, label %228, label %232, !prof !61 -228: ; preds = %.preheader91 - %229 = add nuw nsw i64 %.sroa.7.0190, 1 - %.sroa.070.0.add = add nuw nsw i64 %.sroa.070.0.idx189, 4 +228: ; preds = %.preheader92 + %229 = add nuw nsw i64 %.sroa.7.0191, 1 + %.sroa.070.0.add = add nuw nsw i64 %.sroa.070.0.idx190, 4 %230 = getelementptr inbounds [720 x i16], ptr %invariant.gep, i64 0, i64 %226 store i16 -1, ptr %230, align 2 %231 = icmp eq i64 %.sroa.070.0.add, 192 - br i1 %231, label %220, label %.preheader91 + br i1 %231, label %220, label %.preheader92 -232: ; preds = %.preheader91 +232: ; preds = %.preheader92 call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %226, i64 noundef 720, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ef1a8dfc954e6e945538d4598650d6d8.17) #24 unreachable -233: ; preds = %._crit_edge257, %._crit_edge - %234 = phi i32 [ %.pre259, %._crit_edge257 ], [ %.lcssa96, %._crit_edge ] - %235 = phi i32 [ %.pre258, %._crit_edge257 ], [ %.lcssa94, %._crit_edge ] +233: ; preds = %._crit_edge258, %._crit_edge + %234 = phi i32 [ %.pre260, %._crit_edge258 ], [ %.lcssa97, %._crit_edge ] + %235 = phi i32 [ %.pre259, %._crit_edge258 ], [ %.lcssa95, %._crit_edge ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10), !noalias !65 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11), !noalias !65 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12), !noalias !65 diff --git a/bench/actix-rs/optimized/27zn2x05lna4a2z7.ll b/bench/actix-rs/optimized/27zn2x05lna4a2z7.ll index bd97c7d9ab7..9630cd24343 100644 --- a/bench/actix-rs/optimized/27zn2x05lna4a2z7.ll +++ b/bench/actix-rs/optimized/27zn2x05lna4a2z7.ll @@ -642,11 +642,11 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t br i1 %8, label %.thread, label %.lr.ph .lr.ph: ; preds = %3, %17 - %.sroa.10.030 = phi i64 [ %9, %17 ], [ %5, %3 ] - %.sroa.016.029 = phi ptr [ %19, %17 ], [ %1, %3 ] - %.sroa.7.028 = phi i64 [ %18, %17 ], [ 0, %3 ] - %9 = add i64 %.sroa.10.030, -1 - %10 = icmp eq ptr %.sroa.016.029, %7 + %.sroa.10.031 = phi i64 [ %9, %17 ], [ %5, %3 ] + %.sroa.016.030 = phi ptr [ %19, %17 ], [ %1, %3 ] + %.sroa.7.029 = phi i64 [ %18, %17 ], [ 0, %3 ] + %9 = add i64 %.sroa.10.031, -1 + %10 = icmp eq ptr %.sroa.016.030, %7 br i1 %10, label %.thread, label %11 .thread: ; preds = %17, %.lr.ph, %3 @@ -658,8 +658,8 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t ret void 11: ; preds = %.lr.ph - %.sroa.6.0.val = load ptr, ptr %.sroa.016.029, align 8, !nonnull !4, !noundef !4 - %12 = getelementptr i8, ptr %.sroa.016.029, i64 8 + %.sroa.6.0.val = load ptr, ptr %.sroa.016.030, align 8, !nonnull !4, !noundef !4 + %12 = getelementptr i8, ptr %.sroa.016.030, i64 8 %.sroa.6.0.val15 = load ptr, ptr %12, align 8, !nonnull !4, !align !54, !noundef !4 %.val.i.i = load i64, ptr %.sroa.6.0.val, align 8, !noundef !4 %13 = icmp ne i64 %.val.i.i, 0 @@ -674,9 +674,9 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t unreachable 17: ; preds = %11 - %18 = add nuw nsw i64 %.sroa.7.028, 1 - %19 = getelementptr inbounds i8, ptr %.sroa.016.029, i64 16 - %20 = getelementptr inbounds [0 x { [2 x i64] }], ptr %6, i64 0, i64 %.sroa.7.028 + %18 = add nuw nsw i64 %.sroa.7.029, 1 + %19 = getelementptr inbounds i8, ptr %.sroa.016.030, i64 16 + %20 = getelementptr inbounds [0 x { [2 x i64] }], ptr %6, i64 0, i64 %.sroa.7.029 store ptr %.sroa.6.0.val, ptr %20, align 8 %21 = getelementptr inbounds i8, ptr %20, i64 8 store ptr %.sroa.6.0.val15, ptr %21, align 8 @@ -945,36 +945,36 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$16extend_desugared17h40b28af .lr.ph.split.us.split.i.i.i.i.us.us.i.i.i: ; preds = %.lr.ph.split.split.i.preheader.split.us.i.i.i, %75 %56 = phi i64 [ %73, %75 ], [ %48, %.lr.ph.split.split.i.preheader.split.us.i.i.i ] - %.sroa.3.0.i47.us.i.i.i.i.us.us.i.i.i = sub nuw i64 %12, %56 - %.49.us.i.i.i.i.us.us.i.i.i = getelementptr inbounds i8, ptr %.val.i.i.i.i.i.i, i64 %56 + %.sroa.7.049.us.i.i.i.i.us.us.i.i.i = sub nuw i64 %12, %56 + %.sroa.0.050.us.i.i.i.i.us.us.i.i.i = getelementptr inbounds i8, ptr %.val.i.i.i.i.i.i, i64 %56 %57 = load i8, ptr %18, align 1, !alias.scope !123, !noalias !126, !noundef !4 - %58 = icmp ult i64 %.sroa.3.0.i47.us.i.i.i.i.us.us.i.i.i, 16 + %58 = icmp ult i64 %.sroa.7.049.us.i.i.i.i.us.us.i.i.i, 16 br i1 %58, label %61, label %59 59: ; preds = %.lr.ph.split.us.split.i.i.i.i.us.us.i.i.i - %60 = call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef %57, ptr noalias noundef nonnull readonly align 1 %.49.us.i.i.i.i.us.us.i.i.i, i64 noundef %.sroa.3.0.i47.us.i.i.i.i.us.us.i.i.i), !noalias !184 + %60 = call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef %57, ptr noalias noundef nonnull readonly align 1 %.sroa.0.050.us.i.i.i.i.us.us.i.i.i, i64 noundef %.sroa.7.049.us.i.i.i.i.us.us.i.i.i), !noalias !184 br label %69 61: ; preds = %.lr.ph.split.us.split.i.i.i.i.us.us.i.i.i - %.not.i.us.i.i.i.i.us.us.i.i.i = icmp eq i64 %12, %56 + %.not.i.us.i.i.i.i.us.us.i.i.i = icmp eq i64 %.sroa.7.049.us.i.i.i.i.us.us.i.i.i, 0 br i1 %.not.i.us.i.i.i.i.us.us.i.i.i, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us.i.i.i.i.us.us.i.i.i, label %.lr.ph.i.us.i.i.i.i.us.us.i.i.i .lr.ph.i.us.i.i.i.i.us.us.i.i.i: ; preds = %61, %65 %.05.i.us.i.i.i.i.us.us.i.i.i = phi i64 [ %66, %65 ], [ 0, %61 ] - %62 = getelementptr inbounds [0 x i8], ptr %.49.us.i.i.i.i.us.us.i.i.i, i64 0, i64 %.05.i.us.i.i.i.i.us.us.i.i.i + %62 = getelementptr inbounds [0 x i8], ptr %.sroa.0.050.us.i.i.i.i.us.us.i.i.i, i64 0, i64 %.05.i.us.i.i.i.i.us.us.i.i.i %63 = load i8, ptr %62, align 1, !alias.scope !185, !noalias !184, !noundef !4 %64 = icmp eq i8 %63, %57 br i1 %64, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us.i.i.i.i.us.us.i.i.i, label %65 65: ; preds = %.lr.ph.i.us.i.i.i.i.us.us.i.i.i - %66 = add nuw i64 %.05.i.us.i.i.i.i.us.us.i.i.i, 1 - %exitcond.not.i.us.i.i.i.i.us.us.i.i.i = icmp eq i64 %66, %.sroa.3.0.i47.us.i.i.i.i.us.us.i.i.i + %66 = add nuw nsw i64 %.05.i.us.i.i.i.i.us.us.i.i.i, 1 + %exitcond.not.i.us.i.i.i.i.us.us.i.i.i = icmp eq i64 %66, %.sroa.7.049.us.i.i.i.i.us.us.i.i.i br i1 %exitcond.not.i.us.i.i.i.i.us.us.i.i.i, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us.i.i.i.i.us.us.i.i.i, label %.lr.ph.i.us.i.i.i.i.us.us.i.i.i _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us.i.i.i.i.us.us.i.i.i: ; preds = %65, %.lr.ph.i.us.i.i.i.i.us.us.i.i.i, %61 - %.0.lcssa.i.us.i.i.i.i.us.us.i.i.i = phi i64 [ 0, %61 ], [ %.05.i.us.i.i.i.i.us.us.i.i.i, %.lr.ph.i.us.i.i.i.i.us.us.i.i.i ], [ %.sroa.3.0.i47.us.i.i.i.i.us.us.i.i.i, %65 ] - %.sroa.0.0.i25.us.i.i.i.i.us.us.i.i.i = phi i64 [ 0, %61 ], [ 1, %.lr.ph.i.us.i.i.i.i.us.us.i.i.i ], [ 0, %65 ] - %67 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i25.us.i.i.i.i.us.us.i.i.i, 0 + %.0.lcssa.i.us.i.i.i.i.us.us.i.i.i = phi i64 [ 0, %61 ], [ %.05.i.us.i.i.i.i.us.us.i.i.i, %.lr.ph.i.us.i.i.i.i.us.us.i.i.i ], [ %.sroa.7.049.us.i.i.i.i.us.us.i.i.i, %65 ] + %.sroa.0.0.i24.us.i.i.i.i.us.us.i.i.i = phi i64 [ 0, %61 ], [ 1, %.lr.ph.i.us.i.i.i.i.us.us.i.i.i ], [ 0, %65 ] + %67 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i24.us.i.i.i.i.us.us.i.i.i, 0 %68 = insertvalue { i64, i64 } %67, i64 %.0.lcssa.i.us.i.i.i.i.us.us.i.i.i, 1 br label %69 @@ -991,8 +991,8 @@ _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us.i.i.i.i.us.us.i. store i64 %73, ptr %10, align 8, !alias.scope !123, !noalias !126 %.not.us.i.i.i.i.us.us.i.i.i = icmp ult i64 %73, %.fr9.i.i.i %74 = icmp ugt i64 %73, %.val5.i.i.i.i.i.i - %or.cond83.i.i.i.i.us.us.i.i.i = or i1 %.not.us.i.i.i.i.us.us.i.i.i, %74 - br i1 %or.cond83.i.i.i.i.us.us.i.i.i, label %75, label %.split51.us.i.i.i.i.i.i.i + %or.cond87.i.i.i.i.us.us.i.i.i = or i1 %.not.us.i.i.i.i.us.us.i.i.i, %74 + br i1 %or.cond87.i.i.i.i.us.us.i.i.i, label %75, label %.split52.us.i.i.i.i.i.i.i 75: ; preds = %71 %76 = icmp ugt i64 %73, %12 @@ -1055,36 +1055,36 @@ _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us.i.i.i.i.us.us.i. .lr.ph.split.us.split.i.i.i.i.us.i.i.i: ; preds = %.lr.ph.split.split.i.preheader.split.us.i.i.i, %113 %94 = phi i64 [ %111, %113 ], [ %48, %.lr.ph.split.split.i.preheader.split.us.i.i.i ] - %.sroa.3.0.i47.us.i.i.i.i.us.i.i.i = sub nuw i64 %12, %94 - %.49.us.i.i.i.i.us.i.i.i = getelementptr inbounds i8, ptr %.val.i.i.i.i.i.i, i64 %94 + %.sroa.7.049.us.i.i.i.i.us.i.i.i = sub nuw i64 %12, %94 + %.sroa.0.050.us.i.i.i.i.us.i.i.i = getelementptr inbounds i8, ptr %.val.i.i.i.i.i.i, i64 %94 %95 = load i8, ptr %18, align 1, !alias.scope !123, !noalias !126, !noundef !4 - %96 = icmp ult i64 %.sroa.3.0.i47.us.i.i.i.i.us.i.i.i, 16 + %96 = icmp ult i64 %.sroa.7.049.us.i.i.i.i.us.i.i.i, 16 br i1 %96, label %99, label %97 97: ; preds = %.lr.ph.split.us.split.i.i.i.i.us.i.i.i - %98 = call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef %95, ptr noalias noundef nonnull readonly align 1 %.49.us.i.i.i.i.us.i.i.i, i64 noundef %.sroa.3.0.i47.us.i.i.i.i.us.i.i.i), !noalias !184 + %98 = call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef %95, ptr noalias noundef nonnull readonly align 1 %.sroa.0.050.us.i.i.i.i.us.i.i.i, i64 noundef %.sroa.7.049.us.i.i.i.i.us.i.i.i), !noalias !184 br label %107 99: ; preds = %.lr.ph.split.us.split.i.i.i.i.us.i.i.i - %.not.i.us.i.i.i.i.us.i.i.i = icmp eq i64 %12, %94 + %.not.i.us.i.i.i.i.us.i.i.i = icmp eq i64 %.sroa.7.049.us.i.i.i.i.us.i.i.i, 0 br i1 %.not.i.us.i.i.i.i.us.i.i.i, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us.i.i.i.i.us.i.i.i, label %.lr.ph.i.us.i.i.i.i.us.i.i.i .lr.ph.i.us.i.i.i.i.us.i.i.i: ; preds = %99, %103 %.05.i.us.i.i.i.i.us.i.i.i = phi i64 [ %104, %103 ], [ 0, %99 ] - %100 = getelementptr inbounds [0 x i8], ptr %.49.us.i.i.i.i.us.i.i.i, i64 0, i64 %.05.i.us.i.i.i.i.us.i.i.i + %100 = getelementptr inbounds [0 x i8], ptr %.sroa.0.050.us.i.i.i.i.us.i.i.i, i64 0, i64 %.05.i.us.i.i.i.i.us.i.i.i %101 = load i8, ptr %100, align 1, !alias.scope !185, !noalias !184, !noundef !4 %102 = icmp eq i8 %101, %95 br i1 %102, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us.i.i.i.i.us.i.i.i, label %103 103: ; preds = %.lr.ph.i.us.i.i.i.i.us.i.i.i - %104 = add nuw i64 %.05.i.us.i.i.i.i.us.i.i.i, 1 - %exitcond.not.i.us.i.i.i.i.us.i.i.i = icmp eq i64 %104, %.sroa.3.0.i47.us.i.i.i.i.us.i.i.i + %104 = add nuw nsw i64 %.05.i.us.i.i.i.i.us.i.i.i, 1 + %exitcond.not.i.us.i.i.i.i.us.i.i.i = icmp eq i64 %104, %.sroa.7.049.us.i.i.i.i.us.i.i.i br i1 %exitcond.not.i.us.i.i.i.i.us.i.i.i, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us.i.i.i.i.us.i.i.i, label %.lr.ph.i.us.i.i.i.i.us.i.i.i _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us.i.i.i.i.us.i.i.i: ; preds = %103, %.lr.ph.i.us.i.i.i.i.us.i.i.i, %99 - %.0.lcssa.i.us.i.i.i.i.us.i.i.i = phi i64 [ 0, %99 ], [ %.05.i.us.i.i.i.i.us.i.i.i, %.lr.ph.i.us.i.i.i.i.us.i.i.i ], [ %.sroa.3.0.i47.us.i.i.i.i.us.i.i.i, %103 ] - %.sroa.0.0.i25.us.i.i.i.i.us.i.i.i = phi i64 [ 0, %99 ], [ 1, %.lr.ph.i.us.i.i.i.i.us.i.i.i ], [ 0, %103 ] - %105 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i25.us.i.i.i.i.us.i.i.i, 0 + %.0.lcssa.i.us.i.i.i.i.us.i.i.i = phi i64 [ 0, %99 ], [ %.05.i.us.i.i.i.i.us.i.i.i, %.lr.ph.i.us.i.i.i.i.us.i.i.i ], [ %.sroa.7.049.us.i.i.i.i.us.i.i.i, %103 ] + %.sroa.0.0.i24.us.i.i.i.i.us.i.i.i = phi i64 [ 0, %99 ], [ 1, %.lr.ph.i.us.i.i.i.i.us.i.i.i ], [ 0, %103 ] + %105 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i24.us.i.i.i.i.us.i.i.i, 0 %106 = insertvalue { i64, i64 } %105, i64 %.0.lcssa.i.us.i.i.i.i.us.i.i.i, 1 br label %107 @@ -1101,8 +1101,8 @@ _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us.i.i.i.i.us.i.i.i store i64 %111, ptr %10, align 8, !alias.scope !123, !noalias !126 %.not.us.i.i.i.i.us.i.i.i = icmp ult i64 %111, %.fr9.i.i.i %112 = icmp ugt i64 %111, %.val5.i.i.i.i.i.i - %or.cond83.i.i.i.i.us.i.i.i = or i1 %.not.us.i.i.i.i.us.i.i.i, %112 - br i1 %or.cond83.i.i.i.i.us.i.i.i, label %113, label %.split51.us.i.i.i.i.i.i.i + %or.cond87.i.i.i.i.us.i.i.i = or i1 %.not.us.i.i.i.i.us.i.i.i, %112 + br i1 %or.cond87.i.i.i.i.us.i.i.i, label %113, label %.split52.us.i.i.i.i.i.i.i 113: ; preds = %109 %114 = icmp ugt i64 %111, %12 @@ -1198,36 +1198,36 @@ _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us.i.i.i.i.us.i.i.i .lr.ph.split.split.i.i.i.i.i.i.i: ; preds = %.lr.ph.split.split.i.i.i.i, %155 %136 = phi i64 [ %153, %155 ], [ %.promoted.i.i.i.i.i.i.i, %.lr.ph.split.split.i.i.i.i ] - %.sroa.3.0.i47.i.i.i.i.i.i.i = sub nuw i64 %12, %136 - %.49.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %.val.i.i.i.i.i.i, i64 %136 + %.sroa.7.049.i.i.i.i.i.i.i = sub nuw i64 %12, %136 + %.sroa.0.050.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %.val.i.i.i.i.i.i, i64 %136 %137 = load i8, ptr %18, align 1, !alias.scope !123, !noalias !126, !noundef !4 - %138 = icmp ult i64 %.sroa.3.0.i47.i.i.i.i.i.i.i, 16 + %138 = icmp ult i64 %.sroa.7.049.i.i.i.i.i.i.i, 16 br i1 %138, label %141, label %139 139: ; preds = %.lr.ph.split.split.i.i.i.i.i.i.i - %140 = call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef %137, ptr noalias noundef nonnull readonly align 1 %.49.i.i.i.i.i.i.i, i64 noundef %.sroa.3.0.i47.i.i.i.i.i.i.i), !noalias !184 + %140 = call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef %137, ptr noalias noundef nonnull readonly align 1 %.sroa.0.050.i.i.i.i.i.i.i, i64 noundef %.sroa.7.049.i.i.i.i.i.i.i), !noalias !184 br label %149 141: ; preds = %.lr.ph.split.split.i.i.i.i.i.i.i - %.not.i.i.i.i.i.i.i.i = icmp eq i64 %12, %136 + %.not.i.i.i.i.i.i.i.i = icmp eq i64 %.sroa.7.049.i.i.i.i.i.i.i, 0 br i1 %.not.i.i.i.i.i.i.i.i, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i.i.i.i.i.i, label %.lr.ph.i.i.i.i.i.i.i.i .lr.ph.i.i.i.i.i.i.i.i: ; preds = %141, %145 %.05.i.i.i.i.i.i.i.i = phi i64 [ %146, %145 ], [ 0, %141 ] - %142 = getelementptr inbounds [0 x i8], ptr %.49.i.i.i.i.i.i.i, i64 0, i64 %.05.i.i.i.i.i.i.i.i + %142 = getelementptr inbounds [0 x i8], ptr %.sroa.0.050.i.i.i.i.i.i.i, i64 0, i64 %.05.i.i.i.i.i.i.i.i %143 = load i8, ptr %142, align 1, !alias.scope !185, !noalias !184, !noundef !4 %144 = icmp eq i8 %143, %137 br i1 %144, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i.i.i.i.i.i, label %145 145: ; preds = %.lr.ph.i.i.i.i.i.i.i.i - %146 = add nuw i64 %.05.i.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i.i.i.i.i.i.i = icmp eq i64 %146, %.sroa.3.0.i47.i.i.i.i.i.i.i + %146 = add nuw nsw i64 %.05.i.i.i.i.i.i.i.i, 1 + %exitcond.not.i.i.i.i.i.i.i.i = icmp eq i64 %146, %.sroa.7.049.i.i.i.i.i.i.i br i1 %exitcond.not.i.i.i.i.i.i.i.i, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i.i.i.i.i.i, label %.lr.ph.i.i.i.i.i.i.i.i _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i.i.i.i.i.i: ; preds = %145, %.lr.ph.i.i.i.i.i.i.i.i, %141 - %.0.lcssa.i.i.i.i.i.i.i.i = phi i64 [ 0, %141 ], [ %.05.i.i.i.i.i.i.i.i, %.lr.ph.i.i.i.i.i.i.i.i ], [ %.sroa.3.0.i47.i.i.i.i.i.i.i, %145 ] - %.sroa.0.0.i25.i.i.i.i.i.i.i = phi i64 [ 0, %141 ], [ 1, %.lr.ph.i.i.i.i.i.i.i.i ], [ 0, %145 ] - %147 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i25.i.i.i.i.i.i.i, 0 + %.0.lcssa.i.i.i.i.i.i.i.i = phi i64 [ 0, %141 ], [ %.05.i.i.i.i.i.i.i.i, %.lr.ph.i.i.i.i.i.i.i.i ], [ %.sroa.7.049.i.i.i.i.i.i.i, %145 ] + %.sroa.0.0.i24.i.i.i.i.i.i.i = phi i64 [ 0, %141 ], [ 1, %.lr.ph.i.i.i.i.i.i.i.i ], [ 0, %145 ] + %147 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i24.i.i.i.i.i.i.i, 0 %148 = insertvalue { i64, i64 } %147, i64 %.0.lcssa.i.i.i.i.i.i.i.i, 1 br label %149 @@ -1262,7 +1262,7 @@ _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i.i.i.i.i.i: ; pr %159 = icmp eq i32 %bcmp.i.i.i.i.i.i.i.i, 0 br i1 %159, label %161, label %155 -.split51.us.i.i.i.i.i.i.i: ; preds = %71, %109 +.split52.us.i.i.i.i.i.i.i: ; preds = %71, %109 call void @_ZN4core5slice5index24slice_end_index_len_fail17h334e37603831ab29E(i64 noundef %.fr9.i.i.i, i64 noundef 4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.4b712bb4a53a14efd4fd687e51c22595.38) #22, !noalias !192 unreachable @@ -1624,16 +1624,16 @@ define hidden void @"_ZN67_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..clo br i1 %11, label %"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6to_vec17h40b75be783859cc6E.llvm.13892041527173094624.exit", label %.lr.ph.i .lr.ph.i: ; preds = %2, %20 - %.sroa.10.030.i = phi i64 [ %12, %20 ], [ %8, %2 ] - %.sroa.016.029.i = phi ptr [ %22, %20 ], [ %5, %2 ] - %.sroa.7.028.i = phi i64 [ %21, %20 ], [ 0, %2 ] - %12 = add i64 %.sroa.10.030.i, -1 - %13 = icmp eq ptr %.sroa.016.029.i, %10 + %.sroa.10.031.i = phi i64 [ %12, %20 ], [ %8, %2 ] + %.sroa.016.030.i = phi ptr [ %22, %20 ], [ %5, %2 ] + %.sroa.7.029.i = phi i64 [ %21, %20 ], [ 0, %2 ] + %12 = add i64 %.sroa.10.031.i, -1 + %13 = icmp eq ptr %.sroa.016.030.i, %10 br i1 %13, label %"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6to_vec17h40b75be783859cc6E.llvm.13892041527173094624.exit", label %14 14: ; preds = %.lr.ph.i - %.sroa.6.0.val.i = load ptr, ptr %.sroa.016.029.i, align 8, !alias.scope !237, !noalias !242, !nonnull !4, !noundef !4 - %15 = getelementptr i8, ptr %.sroa.016.029.i, i64 8 + %.sroa.6.0.val.i = load ptr, ptr %.sroa.016.030.i, align 8, !alias.scope !237, !noalias !242, !nonnull !4, !noundef !4 + %15 = getelementptr i8, ptr %.sroa.016.030.i, i64 8 %.sroa.6.0.val15.i = load ptr, ptr %15, align 8, !alias.scope !237, !noalias !242, !nonnull !4, !align !54, !noundef !4 %.val.i.i.i = load i64, ptr %.sroa.6.0.val.i, align 8, !noalias !242, !noundef !4 %16 = icmp ne i64 %.val.i.i.i, 0 @@ -1648,9 +1648,9 @@ define hidden void @"_ZN67_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..clo unreachable 20: ; preds = %14 - %21 = add nuw nsw i64 %.sroa.7.028.i, 1 - %22 = getelementptr inbounds i8, ptr %.sroa.016.029.i, i64 16 - %23 = getelementptr inbounds [0 x { [2 x i64] }], ptr %9, i64 0, i64 %.sroa.7.028.i + %21 = add nuw nsw i64 %.sroa.7.029.i, 1 + %22 = getelementptr inbounds i8, ptr %.sroa.016.030.i, i64 16 + %23 = getelementptr inbounds [0 x { [2 x i64] }], ptr %9, i64 0, i64 %.sroa.7.029.i store ptr %.sroa.6.0.val.i, ptr %23, align 8 %24 = getelementptr inbounds i8, ptr %23, i64 8 store ptr %.sroa.6.0.val15.i, ptr %24, align 8 diff --git a/bench/actix-rs/optimized/2lnack56lfnd1s8n.ll b/bench/actix-rs/optimized/2lnack56lfnd1s8n.ll index d7bed20a135..a99061eea4e 100644 --- a/bench/actix-rs/optimized/2lnack56lfnd1s8n.ll +++ b/bench/actix-rs/optimized/2lnack56lfnd1s8n.ll @@ -123,7 +123,7 @@ define internal fastcc noundef align 8 ptr @"_ZN9hashbrown3map28HashMap$LT$K$C$V %4 = getelementptr inbounds i8, ptr %0, i64 24 %5 = load i64, ptr %4, align 8, !noundef !7 %6 = icmp eq i64 %5, 0 - br i1 %6, label %72, label %7 + br i1 %6, label %73, label %7 7: ; preds = %2 %8 = getelementptr inbounds i8, ptr %0, i64 32 @@ -195,60 +195,60 @@ _ZN4core4hash11BuildHasher8hash_one17h569881dcf9df09a6E.exit: ; preds = %26, %36 %invariant.gep.i.i = getelementptr i8, ptr %.val, i64 -208 br label %49 -49: ; preds = %65, %_ZN4core4hash11BuildHasher8hash_one17h569881dcf9df09a6E.exit - %.sroa.9.0.i.i.i = phi i64 [ 0, %_ZN4core4hash11BuildHasher8hash_one17h569881dcf9df09a6E.exit ], [ %66, %65 ] - %.pn.i = phi i64 [ %45, %_ZN4core4hash11BuildHasher8hash_one17h569881dcf9df09a6E.exit ], [ %67, %65 ] +49: ; preds = %66, %_ZN4core4hash11BuildHasher8hash_one17h569881dcf9df09a6E.exit + %.sroa.9.0.i.i.i = phi i64 [ 0, %_ZN4core4hash11BuildHasher8hash_one17h569881dcf9df09a6E.exit ], [ %67, %66 ] + %.pn.i = phi i64 [ %45, %_ZN4core4hash11BuildHasher8hash_one17h569881dcf9df09a6E.exit ], [ %68, %66 ] %.sroa.01.0.i.i.i = and i64 %.pn.i, %.val5 %50 = getelementptr inbounds i8, ptr %.val, i64 %.sroa.01.0.i.i.i - %.0.copyload.i25.i.i = load <16 x i8>, ptr %50, align 1, !noalias !75 - %51 = icmp eq <16 x i8> %.0.copyload.i25.i.i, %.15.vec.insert.i.i.i + %.0.copyload.i33.i.i = load <16 x i8>, ptr %50, align 1, !noalias !75 + %51 = icmp eq <16 x i8> %.0.copyload.i33.i.i, %.15.vec.insert.i.i.i %52 = bitcast <16 x i1> %51 to i16 - br label %"_ZN95_$LT$hashbrown..raw..bitmask..BitMaskIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h30a062793616a2b2E.exit.i.i" - -"_ZN95_$LT$hashbrown..raw..bitmask..BitMaskIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h30a062793616a2b2E.exit.i.i": ; preds = %56, %49 - %.022.i.i = phi i16 [ %52, %49 ], [ %60, %56 ] - %.not.i4.not.i.i = icmp eq i16 %.022.i.i, 0 - br i1 %.not.i4.not.i.i, label %53, label %56 - -53: ; preds = %"_ZN95_$LT$hashbrown..raw..bitmask..BitMaskIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h30a062793616a2b2E.exit.i.i" - %54 = icmp eq <16 x i8> %.0.copyload.i25.i.i, - %55 = bitcast <16 x i1> %54 to i16 - %.not.i.i.i = icmp eq i16 %55, 0 - br i1 %.not.i.i.i, label %65, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h70031f13b85daba8E.exit" - -56: ; preds = %"_ZN95_$LT$hashbrown..raw..bitmask..BitMaskIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h30a062793616a2b2E.exit.i.i" - %57 = call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.022.i.i, i1 true) - %58 = zext nneg i16 %57 to i64 - %59 = add i16 %.022.i.i, -1 - %60 = and i16 %59, %.022.i.i - %61 = add i64 %.sroa.01.0.i.i.i, %58 - %62 = and i64 %61, %.val5 - %63 = sub nsw i64 0, %62 - %gep.i.i = getelementptr { { { ptr, [3 x i64] } }, { { { i64, [20 x i64] }, i64 } } }, ptr %invariant.gep.i.i, i64 %63 - %64 = call noundef zeroext i1 @"_ZN74_$LT$http..header..name..Repr$LT$T$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17h8be7f8af3713d029E.llvm.14508081899341677224"(ptr noundef nonnull align 8 %1, ptr noundef nonnull align 8 %gep.i.i), !noalias !82 - br i1 %64, label %68, label %"_ZN95_$LT$hashbrown..raw..bitmask..BitMaskIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h30a062793616a2b2E.exit.i.i" - -65: ; preds = %53 - %66 = add i64 %.sroa.9.0.i.i.i, 16 - %67 = add i64 %.sroa.01.0.i.i.i, %66 + br label %53 + +53: ; preds = %57, %49 + %.023.i.i = phi i16 [ %52, %49 ], [ %61, %57 ] + %.not.i4.i.i = icmp eq i16 %.023.i.i, 0 + br i1 %.not.i4.i.i, label %54, label %57 + +54: ; preds = %53 + %55 = icmp eq <16 x i8> %.0.copyload.i33.i.i, + %56 = bitcast <16 x i1> %55 to i16 + %.not.i.i.i = icmp eq i16 %56, 0 + br i1 %.not.i.i.i, label %66, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h70031f13b85daba8E.exit" + +57: ; preds = %53 + %58 = call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.023.i.i, i1 true) + %59 = zext nneg i16 %58 to i64 + %60 = add i16 %.023.i.i, -1 + %61 = and i16 %60, %.023.i.i + %62 = add i64 %.sroa.01.0.i.i.i, %59 + %63 = and i64 %62, %.val5 + %64 = sub nsw i64 0, %63 + %gep.i.i = getelementptr { { { ptr, [3 x i64] } }, { { { i64, [20 x i64] }, i64 } } }, ptr %invariant.gep.i.i, i64 %64 + %65 = call noundef zeroext i1 @"_ZN74_$LT$http..header..name..Repr$LT$T$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17h8be7f8af3713d029E.llvm.14508081899341677224"(ptr noundef nonnull align 8 %1, ptr noundef nonnull align 8 %gep.i.i), !noalias !82 + br i1 %65, label %69, label %53 + +66: ; preds = %54 + %67 = add i64 %.sroa.9.0.i.i.i, 16 + %68 = add i64 %.sroa.01.0.i.i.i, %67 br label %49 -68: ; preds = %56 - %69 = getelementptr inbounds { { { ptr, [3 x i64] } }, { { { i64, [20 x i64] }, i64 } } }, ptr %.val, i64 %63 +69: ; preds = %57 + %70 = getelementptr inbounds { { { ptr, [3 x i64] } }, { { { i64, [20 x i64] }, i64 } } }, ptr %.val, i64 %64 br label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h70031f13b85daba8E.exit" -"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h70031f13b85daba8E.exit": ; preds = %53, %68 - %.0.i.i = phi ptr [ %69, %68 ], [ null, %53 ] - %70 = icmp eq ptr %.0.i.i, null - %71 = getelementptr inbounds i8, ptr %.0.i.i, i64 -208 - %.0.i = select i1 %70, ptr null, ptr %71 - br label %72 +"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h70031f13b85daba8E.exit": ; preds = %54, %69 + %.0.i.i = phi ptr [ %70, %69 ], [ null, %54 ] + %71 = icmp eq ptr %.0.i.i, null + %72 = getelementptr inbounds i8, ptr %.0.i.i, i64 -208 + %.0.i = select i1 %71, ptr null, ptr %72 + br label %73 -72: ; preds = %2, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h70031f13b85daba8E.exit" +73: ; preds = %2, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h70031f13b85daba8E.exit" %.04 = phi ptr [ %.0.i, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h70031f13b85daba8E.exit" ], [ null, %2 ] - %73 = icmp eq ptr %.04, null - %74 = getelementptr inbounds i8, ptr %.04, i64 32 - %.0 = select i1 %73, ptr null, ptr %74 + %74 = icmp eq ptr %.04, null + %75 = getelementptr inbounds i8, ptr %.04, i64 32 + %.0 = select i1 %74, ptr null, ptr %75 ret ptr %.0 } diff --git a/bench/actix-rs/optimized/2pgtlhl4qd060m9c.ll b/bench/actix-rs/optimized/2pgtlhl4qd060m9c.ll index db6ed0d12ca..03e9b94205f 100644 --- a/bench/actix-rs/optimized/2pgtlhl4qd060m9c.ll +++ b/bench/actix-rs/optimized/2pgtlhl4qd060m9c.ll @@ -397,9 +397,9 @@ _ZN14regex_automata4util8captures14GroupInfoInner9group_len17hf44aea63cceed637E. unreachable _ZN14regex_automata4util8captures8Captures9get_match17h9a113384f9ebfd93E.exit: ; preds = %45, %39, %29, %_ZN14regex_automata4meta5regex9RegexInfo13is_impossible17h316631178f9de364E.exit.i, %107, %_ZN14regex_automata4meta5regex5Regex17search_slots_with17h6af6adf9f5a52a22E.exit, %86, %94, %98, %103 - %.sroa.3.0.i7 = phi i32 [ %79, %103 ], [ %79, %98 ], [ %79, %94 ], [ %79, %86 ], [ %79, %_ZN14regex_automata4meta5regex5Regex17search_slots_with17h6af6adf9f5a52a22E.exit ], [ %79, %107 ], [ undef, %_ZN14regex_automata4meta5regex9RegexInfo13is_impossible17h316631178f9de364E.exit.i ], [ undef, %29 ], [ undef, %39 ], [ undef, %45 ] %.sroa.5.0 = phi i64 [ undef, %103 ], [ undef, %98 ], [ undef, %94 ], [ undef, %86 ], [ undef, %_ZN14regex_automata4meta5regex5Regex17search_slots_with17h6af6adf9f5a52a22E.exit ], [ %109, %107 ], [ undef, %_ZN14regex_automata4meta5regex9RegexInfo13is_impossible17h316631178f9de364E.exit.i ], [ undef, %29 ], [ undef, %39 ], [ undef, %45 ] %.sroa.4.0 = phi i64 [ undef, %103 ], [ undef, %98 ], [ undef, %94 ], [ undef, %86 ], [ undef, %_ZN14regex_automata4meta5regex5Regex17search_slots_with17h6af6adf9f5a52a22E.exit ], [ %108, %107 ], [ undef, %_ZN14regex_automata4meta5regex9RegexInfo13is_impossible17h316631178f9de364E.exit.i ], [ undef, %29 ], [ undef, %39 ], [ undef, %45 ] + %.sroa.6.0 = phi i32 [ undef, %103 ], [ undef, %98 ], [ undef, %94 ], [ undef, %86 ], [ undef, %_ZN14regex_automata4meta5regex5Regex17search_slots_with17h6af6adf9f5a52a22E.exit ], [ %79, %107 ], [ undef, %_ZN14regex_automata4meta5regex9RegexInfo13is_impossible17h316631178f9de364E.exit.i ], [ undef, %29 ], [ undef, %39 ], [ undef, %45 ] %storemerge.i = phi i64 [ 0, %103 ], [ 0, %98 ], [ 0, %94 ], [ 0, %86 ], [ 0, %_ZN14regex_automata4meta5regex5Regex17search_slots_with17h6af6adf9f5a52a22E.exit ], [ 1, %107 ], [ 0, %_ZN14regex_automata4meta5regex9RegexInfo13is_impossible17h316631178f9de364E.exit.i ], [ 0, %29 ], [ 0, %39 ], [ 0, %45 ] store i64 %storemerge.i, ptr %0, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 @@ -407,7 +407,7 @@ _ZN14regex_automata4util8captures8Captures9get_match17h9a113384f9ebfd93E.exit: ; %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 store i64 %.sroa.5.0, ptr %.sroa.5.0..sroa_idx, align 8 %.sroa.6.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 24 - store i32 %.sroa.3.0.i7, ptr %.sroa.6.0..sroa_idx, align 8 + store i32 %.sroa.6.0, ptr %.sroa.6.0..sroa_idx, align 8 ret void } @@ -2496,7 +2496,6 @@ define hidden void @_ZN4time10formatting11formattable6sealed6Sealed6format17h4b8 %29 = getelementptr inbounds i8, ptr %27, i64 16 store i64 0, ptr %29, align 8 %.sroa.47.0.extract.shift.i = lshr i32 %4, 8 - %.sroa.47.0.extract.trunc.i = zext nneg i32 %.sroa.47.0.extract.shift.i to i64 %.not.i = icmp eq i32 %2, 0 br i1 %.not.i, label %213, label %30 @@ -2518,10 +2517,10 @@ define hidden void @_ZN4time10formatting11formattable6sealed6Sealed6format17h4b8 33: ; preds = %32 %.sroa.04.0.extract.trunc.i = trunc i32 %.sroa.47.0.extract.shift.i to i8 - %.sroa.87.0.extract.shift47.i = lshr i32 %4, 16 - %.sroa.87.0.extract.trunc.i = trunc i32 %.sroa.87.0.extract.shift47.i to i8 - %.sroa.10.0.extract.shift48.i = lshr i32 %4, 24 - %.sroa.10.0.extract.trunc.i = trunc nuw i32 %.sroa.10.0.extract.shift48.i to i8 + %.sroa.87.0.extract.shift54.i = lshr i32 %4, 16 + %.sroa.87.0.extract.trunc.i = trunc i32 %.sroa.87.0.extract.shift54.i to i8 + %sum.shift.i = lshr i32 %4, 24 + %.sroa.10.0.extract.trunc.i = trunc nuw i32 %sum.shift.i to i8 %34 = ashr i32 %2, 9 %35 = icmp ult i32 %34, 10000 br i1 %35, label %36, label %213 @@ -2839,8 +2838,8 @@ define hidden void @_ZN4time10formatting11formattable6sealed6Sealed6format17h4b8 156: ; preds = %151 %157 = udiv i32 %.sroa.722.022.i, 1000000 - %.lhs.trunc43.i = trunc nuw nsw i32 %157 to i16 - %158 = urem i16 %.lhs.trunc43.i, 10 + %.lhs.trunc50.i = trunc nuw nsw i32 %157 to i16 + %158 = urem i16 %.lhs.trunc50.i, 10 %159 = icmp eq i16 %158, 0 br i1 %159, label %161, label %165 @@ -2850,8 +2849,8 @@ define hidden void @_ZN4time10formatting11formattable6sealed6Sealed6format17h4b8 161: ; preds = %156 %162 = udiv i32 %.sroa.722.022.i, 10000000 - %.lhs.trunc66.i = trunc nuw nsw i32 %162 to i8 - %163 = urem i8 %.lhs.trunc66.i, 10 + %.lhs.trunc73.i = trunc nuw nsw i32 %162 to i8 + %163 = urem i8 %.lhs.trunc73.i, 10 %164 = icmp eq i8 %163, 0 br i1 %164, label %166, label %168 @@ -2999,16 +2998,16 @@ _ZN4time10utc_offset9UtcOffset11is_negative17hf4e1cce6a30b55d5E.exit.i: ; preds invoke void @_ZN5alloc6string6String15from_utf8_lossy17h315d013babe5ee7cE(ptr noalias nocapture noundef nonnull sret({ i64, [2 x i64] }) align 8 dereferenceable(24) %26, ptr noalias noundef nonnull readonly align 1 %211, i64 noundef %212) to label %223 unwind label %209 -213: ; preds = %32, %30, %57, %63, %70, %76, %83, %89, %96, %102, %109, %114, %207, %189, %195, %203, %205, %130, %172, %5, %33, %36, %40, %.noexc - %.sroa.0.0.ph = phi i64 [ 2, %.noexc ], [ 1, %40 ], [ 1, %36 ], [ 1, %33 ], [ 0, %5 ], [ 2, %172 ], [ 2, %130 ], [ 2, %205 ], [ 2, %203 ], [ 2, %195 ], [ 2, %189 ], [ 2, %207 ], [ 2, %114 ], [ 2, %109 ], [ 2, %102 ], [ 2, %96 ], [ 2, %89 ], [ 2, %83 ], [ 2, %76 ], [ 2, %70 ], [ 2, %63 ], [ 2, %57 ], [ 0, %30 ], [ 0, %32 ] - %.sroa.61.0.ph = phi i64 [ undef, %.noexc ], [ 13, %40 ], [ 11, %36 ], [ 4, %33 ], [ undef, %5 ], [ undef, %172 ], [ undef, %130 ], [ undef, %205 ], [ undef, %203 ], [ undef, %195 ], [ undef, %189 ], [ undef, %207 ], [ undef, %114 ], [ undef, %109 ], [ undef, %102 ], [ undef, %96 ], [ undef, %89 ], [ undef, %83 ], [ undef, %76 ], [ undef, %70 ], [ undef, %63 ], [ undef, %57 ], [ undef, %30 ], [ undef, %32 ] - %.sroa.29.0.ph = phi i64 [ %.cast.i, %.noexc ], [ ptrtoint (ptr @anon.c8ce99f97dd1a7c2d7b2e82421dc6b83.83 to i64), %40 ], [ ptrtoint (ptr @anon.c8ce99f97dd1a7c2d7b2e82421dc6b83.84 to i64), %36 ], [ ptrtoint (ptr @anon.c8ce99f97dd1a7c2d7b2e82421dc6b83.75 to i64), %33 ], [ 0, %5 ], [ %173, %172 ], [ %131, %130 ], [ %206, %205 ], [ %204, %203 ], [ %196, %195 ], [ %190, %189 ], [ %208, %207 ], [ %115, %114 ], [ %110, %109 ], [ %103, %102 ], [ %97, %96 ], [ %90, %89 ], [ %84, %83 ], [ %77, %76 ], [ %71, %70 ], [ %64, %63 ], [ %58, %57 ], [ %3, %30 ], [ %.sroa.47.0.extract.trunc.i, %32 ] +213: ; preds = %30, %57, %63, %70, %76, %83, %89, %96, %102, %109, %114, %207, %189, %195, %203, %205, %130, %172, %5, %32, %33, %36, %40, %.noexc + %.sroa.0.0.ph = phi i64 [ 2, %.noexc ], [ 1, %40 ], [ 1, %36 ], [ 1, %33 ], [ 0, %32 ], [ 0, %5 ], [ 2, %172 ], [ 2, %130 ], [ 2, %205 ], [ 2, %203 ], [ 2, %195 ], [ 2, %189 ], [ 2, %207 ], [ 2, %114 ], [ 2, %109 ], [ 2, %102 ], [ 2, %96 ], [ 2, %89 ], [ 2, %83 ], [ 2, %76 ], [ 2, %70 ], [ 2, %63 ], [ 2, %57 ], [ 0, %30 ] + %.sroa.60.0.ph = phi i64 [ undef, %.noexc ], [ 13, %40 ], [ 11, %36 ], [ 4, %33 ], [ undef, %32 ], [ undef, %5 ], [ undef, %172 ], [ undef, %130 ], [ undef, %205 ], [ undef, %203 ], [ undef, %195 ], [ undef, %189 ], [ undef, %207 ], [ undef, %114 ], [ undef, %109 ], [ undef, %102 ], [ undef, %96 ], [ undef, %89 ], [ undef, %83 ], [ undef, %76 ], [ undef, %70 ], [ undef, %63 ], [ undef, %57 ], [ undef, %30 ] + %.sroa.29.0.ph = phi i64 [ %.cast.i, %.noexc ], [ ptrtoint (ptr @anon.c8ce99f97dd1a7c2d7b2e82421dc6b83.83 to i64), %40 ], [ ptrtoint (ptr @anon.c8ce99f97dd1a7c2d7b2e82421dc6b83.84 to i64), %36 ], [ ptrtoint (ptr @anon.c8ce99f97dd1a7c2d7b2e82421dc6b83.75 to i64), %33 ], [ 0, %32 ], [ 0, %5 ], [ %173, %172 ], [ %131, %130 ], [ %206, %205 ], [ %204, %203 ], [ %196, %195 ], [ %190, %189 ], [ %208, %207 ], [ %115, %114 ], [ %110, %109 ], [ %103, %102 ], [ %97, %96 ], [ %90, %89 ], [ %84, %83 ], [ %77, %76 ], [ %71, %70 ], [ %64, %63 ], [ %58, %57 ], [ %3, %30 ] %214 = getelementptr inbounds i8, ptr %0, i64 8 store i64 %.sroa.0.0.ph, ptr %214, align 8 %.sroa.219.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 store i64 %.sroa.29.0.ph, ptr %.sroa.219.0..sroa_idx, align 8 %.sroa.320.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 24 - store i64 %.sroa.61.0.ph, ptr %.sroa.320.0..sroa_idx, align 8 + store i64 %.sroa.60.0.ph, ptr %.sroa.320.0..sroa_idx, align 8 store i64 1, ptr %0, align 8 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7), !noalias !428 call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h8bacfafbb0293cf9E.llvm.11632439649900387884"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %7, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %27) @@ -3056,10 +3055,10 @@ _ZN4time10utc_offset9UtcOffset11is_negative17hf4e1cce6a30b55d5E.exit.i: ; preds "_ZN5alloc6borrow12Cow$LT$B$GT$10into_owned17h4c93850b985db1eeE.exit": ; preds = %223, %.noexc50 %.sroa.5.0 = phi ptr [ %233, %.noexc50 ], [ %227, %223 ] - %.sroa.058.0 = phi i64 [ %232, %.noexc50 ], [ %224, %223 ] + %.sroa.054.0 = phi i64 [ %232, %.noexc50 ], [ %224, %223 ] call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) %235 = getelementptr inbounds i8, ptr %0, i64 8 - store i64 %.sroa.058.0, ptr %235, align 8 + store i64 %.sroa.054.0, ptr %235, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 store ptr %.sroa.5.0, ptr %.sroa.5.0..sroa_idx, align 8 %.sroa.6.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 24 diff --git a/bench/actix-rs/optimized/2weu4ko9avhthtok.ll b/bench/actix-rs/optimized/2weu4ko9avhthtok.ll index 6c7b4050e4a..b87148f58d9 100644 --- a/bench/actix-rs/optimized/2weu4ko9avhthtok.ll +++ b/bench/actix-rs/optimized/2weu4ko9avhthtok.ll @@ -32,9 +32,10 @@ define hidden { ptr, i64 } @"_ZN4core3str6traits108_$LT$impl$u20$core..slice..in ; Function Attrs: inlinehint nonlazybind uwtable define hidden { ptr, i64 } @"_ZN4core3str6traits110_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeTo$LT$usize$GT$$GT$3get17hd20daff9a6ff1dfeE"(i64 %0, ptr align 1 %1, i64 %2) unnamed_addr #0 { %4 = tail call zeroext i1 @"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17h0af5039d43bc8638E"(ptr align 1 %1, i64 %2, i64 %0) - %. = select i1 %4, ptr %1, ptr null - %5 = insertvalue { ptr, i64 } poison, ptr %., 0 - %6 = insertvalue { ptr, i64 } %5, i64 %0, 1 + %. = select i1 %4, i64 %0, i64 undef + %.4 = select i1 %4, ptr %1, ptr null + %5 = insertvalue { ptr, i64 } poison, ptr %.4, 0 + %6 = insertvalue { ptr, i64 } %5, i64 %., 1 ret { ptr, i64 } %6 } diff --git a/bench/actix-rs/optimized/34zqw30jnodxf0r6.ll b/bench/actix-rs/optimized/34zqw30jnodxf0r6.ll index 78172e8c43d..67e601553a7 100644 --- a/bench/actix-rs/optimized/34zqw30jnodxf0r6.ll +++ b/bench/actix-rs/optimized/34zqw30jnodxf0r6.ll @@ -462,8 +462,8 @@ define internal fastcc { ptr, i64 } @"_ZN4core3str4iter22SplitInternal$LT$P$GT$4 %11 = icmp ugt i64 %10, %.val5 %.promoted.i = load i64, ptr %8, align 8, !alias.scope !27, !noalias !30 %12 = icmp ugt i64 %.promoted.i, %10 - %or.cond.i43.i = or i1 %11, %12 - br i1 %or.cond.i43.i, label %"_ZN4core3str4iter22SplitInternal$LT$P$GT$7get_end17h1d4b7bc92c37c879E.exit", label %.lr.ph.i + %or.cond.i42.i = or i1 %11, %12 + br i1 %or.cond.i42.i, label %"_ZN4core3str4iter22SplitInternal$LT$P$GT$7get_end17h1d4b7bc92c37c879E.exit", label %.lr.ph.i .lr.ph.i: ; preds = %5 %13 = getelementptr inbounds i8, ptr %.val, i64 %.promoted.i @@ -477,37 +477,37 @@ define internal fastcc { ptr, i64 } @"_ZN4core3str4iter22SplitInternal$LT$P$GT$4 br i1 %20, label %.lr.ph.split.us.split.i, label %.lr.ph.split.split.i .lr.ph.split.us.split.i: ; preds = %.lr.ph.i, %40 - %.49.us.i = phi ptr [ %43, %40 ], [ %13, %.lr.ph.i ] - %.sroa.3.0.i47.us.i = phi i64 [ %42, %40 ], [ %14, %.lr.ph.i ] + %.sroa.0.050.us.i = phi ptr [ %43, %40 ], [ %13, %.lr.ph.i ] + %.sroa.7.049.us.i = phi i64 [ %42, %40 ], [ %14, %.lr.ph.i ] %21 = phi i64 [ %38, %40 ], [ %.promoted.i, %.lr.ph.i ] %22 = load i8, ptr %19, align 1, !alias.scope !27, !noalias !30, !noundef !4 - %23 = icmp ult i64 %.sroa.3.0.i47.us.i, 16 + %23 = icmp ult i64 %.sroa.7.049.us.i, 16 br i1 %23, label %26, label %24 24: ; preds = %.lr.ph.split.us.split.i - %25 = tail call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef %22, ptr noalias noundef nonnull readonly align 1 %.49.us.i, i64 noundef %.sroa.3.0.i47.us.i), !noalias !32 + %25 = tail call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef %22, ptr noalias noundef nonnull readonly align 1 %.sroa.0.050.us.i, i64 noundef %.sroa.7.049.us.i), !noalias !32 br label %34 26: ; preds = %.lr.ph.split.us.split.i - %.not.i.us.i = icmp eq i64 %10, %21 + %.not.i.us.i = icmp eq i64 %.sroa.7.049.us.i, 0 br i1 %.not.i.us.i, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us.i, label %.lr.ph.i.us.i .lr.ph.i.us.i: ; preds = %26, %30 %.05.i.us.i = phi i64 [ %31, %30 ], [ 0, %26 ] - %27 = getelementptr inbounds [0 x i8], ptr %.49.us.i, i64 0, i64 %.05.i.us.i + %27 = getelementptr inbounds [0 x i8], ptr %.sroa.0.050.us.i, i64 0, i64 %.05.i.us.i %28 = load i8, ptr %27, align 1, !alias.scope !33, !noalias !32, !noundef !4 %29 = icmp eq i8 %28, %22 br i1 %29, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us.i, label %30 30: ; preds = %.lr.ph.i.us.i - %31 = add nuw i64 %.05.i.us.i, 1 - %exitcond.not.i.us.i = icmp eq i64 %31, %.sroa.3.0.i47.us.i + %31 = add nuw nsw i64 %.05.i.us.i, 1 + %exitcond.not.i.us.i = icmp eq i64 %31, %.sroa.7.049.us.i br i1 %exitcond.not.i.us.i, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us.i, label %.lr.ph.i.us.i _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us.i: ; preds = %30, %.lr.ph.i.us.i, %26 - %.0.lcssa.i.us.i = phi i64 [ 0, %26 ], [ %.05.i.us.i, %.lr.ph.i.us.i ], [ %.sroa.3.0.i47.us.i, %30 ] - %.sroa.0.0.i25.us.i = phi i64 [ 0, %26 ], [ 1, %.lr.ph.i.us.i ], [ 0, %30 ] - %32 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i25.us.i, 0 + %.0.lcssa.i.us.i = phi i64 [ 0, %26 ], [ %.05.i.us.i, %.lr.ph.i.us.i ], [ %.sroa.7.049.us.i, %30 ] + %.sroa.0.0.i24.us.i = phi i64 [ 0, %26 ], [ 1, %.lr.ph.i.us.i ], [ 0, %30 ] + %32 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i24.us.i, 0 %33 = insertvalue { i64, i64 } %32, i64 %.0.lcssa.i.us.i, 1 br label %34 @@ -524,8 +524,8 @@ _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us.i: ; preds = %30 store i64 %38, ptr %8, align 8, !alias.scope !27, !noalias !30 %.not.us.i = icmp ult i64 %38, %17 %39 = icmp ugt i64 %38, %.val5 - %or.cond83.i = or i1 %.not.us.i, %39 - br i1 %or.cond83.i, label %40, label %.split51.us.i + %or.cond87.i = or i1 %.not.us.i, %39 + br i1 %or.cond87.i, label %40, label %.split52.us.i 40: ; preds = %36 %41 = icmp ugt i64 %38, %10 @@ -534,37 +534,37 @@ _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us.i: ; preds = %30 br i1 %41, label %"_ZN4core3str4iter22SplitInternal$LT$P$GT$7get_end17h1d4b7bc92c37c879E.exit", label %.lr.ph.split.us.split.i .lr.ph.split.split.i: ; preds = %.lr.ph.i, %63 - %.49.i = phi ptr [ %66, %63 ], [ %13, %.lr.ph.i ] - %.sroa.3.0.i47.i = phi i64 [ %65, %63 ], [ %14, %.lr.ph.i ] + %.sroa.0.050.i = phi ptr [ %66, %63 ], [ %13, %.lr.ph.i ] + %.sroa.7.049.i = phi i64 [ %65, %63 ], [ %14, %.lr.ph.i ] %44 = phi i64 [ %61, %63 ], [ %.promoted.i, %.lr.ph.i ] %45 = load i8, ptr %19, align 1, !alias.scope !27, !noalias !30, !noundef !4 - %46 = icmp ult i64 %.sroa.3.0.i47.i, 16 + %46 = icmp ult i64 %.sroa.7.049.i, 16 br i1 %46, label %49, label %47 47: ; preds = %.lr.ph.split.split.i - %48 = tail call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef %45, ptr noalias noundef nonnull readonly align 1 %.49.i, i64 noundef %.sroa.3.0.i47.i), !noalias !32 + %48 = tail call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef %45, ptr noalias noundef nonnull readonly align 1 %.sroa.0.050.i, i64 noundef %.sroa.7.049.i), !noalias !32 br label %57 49: ; preds = %.lr.ph.split.split.i - %.not.i.i = icmp eq i64 %10, %44 + %.not.i.i = icmp eq i64 %.sroa.7.049.i, 0 br i1 %.not.i.i, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i, label %.lr.ph.i.i .lr.ph.i.i: ; preds = %49, %53 %.05.i.i = phi i64 [ %54, %53 ], [ 0, %49 ] - %50 = getelementptr inbounds [0 x i8], ptr %.49.i, i64 0, i64 %.05.i.i + %50 = getelementptr inbounds [0 x i8], ptr %.sroa.0.050.i, i64 0, i64 %.05.i.i %51 = load i8, ptr %50, align 1, !alias.scope !33, !noalias !32, !noundef !4 %52 = icmp eq i8 %51, %45 br i1 %52, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i, label %53 53: ; preds = %.lr.ph.i.i - %54 = add nuw i64 %.05.i.i, 1 - %exitcond.not.i.i = icmp eq i64 %54, %.sroa.3.0.i47.i + %54 = add nuw nsw i64 %.05.i.i, 1 + %exitcond.not.i.i = icmp eq i64 %54, %.sroa.7.049.i br i1 %exitcond.not.i.i, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i, label %.lr.ph.i.i _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i: ; preds = %53, %.lr.ph.i.i, %49 - %.0.lcssa.i.i = phi i64 [ 0, %49 ], [ %.05.i.i, %.lr.ph.i.i ], [ %.sroa.3.0.i47.i, %53 ] - %.sroa.0.0.i25.i = phi i64 [ 0, %49 ], [ 1, %.lr.ph.i.i ], [ 0, %53 ] - %55 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i25.i, 0 + %.0.lcssa.i.i = phi i64 [ 0, %49 ], [ %.05.i.i, %.lr.ph.i.i ], [ %.sroa.7.049.i, %53 ] + %.sroa.0.0.i24.i = phi i64 [ 0, %49 ], [ 1, %.lr.ph.i.i ], [ 0, %53 ] + %55 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i24.i, 0 %56 = insertvalue { i64, i64 } %55, i64 %.0.lcssa.i.i, 1 br label %57 @@ -601,7 +601,7 @@ _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i: ; preds = %53, % %69 = icmp eq i32 %bcmp.i.i, 0 br i1 %69, label %75, label %63 -.split51.us.i: ; preds = %36 +.split52.us.i: ; preds = %36 tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h334e37603831ab29E(i64 noundef %17, i64 noundef 4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.dd74362bd857f4caec9bddebb7ee75d1.47) #24, !noalias !40 unreachable diff --git a/bench/actix-rs/optimized/38w83wyqv1thu0n9.ll b/bench/actix-rs/optimized/38w83wyqv1thu0n9.ll index cbc2870f5f4..8676bce2b4a 100644 --- a/bench/actix-rs/optimized/38w83wyqv1thu0n9.ll +++ b/bench/actix-rs/optimized/38w83wyqv1thu0n9.ll @@ -7158,6 +7158,7 @@ common.ret: ; preds = %46, %38 br label %46 46: ; preds = %51, %43 + %.sroa.4.0 = phi ptr [ undef, %51 ], [ %30, %43 ] %.sroa.0.0 = phi i64 [ 2, %51 ], [ %.sroa.011.0.copyload, %43 ] store i64 %.sroa.0.0, ptr %0, align 8 %.sroa.3.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 @@ -7165,7 +7166,7 @@ common.ret: ; preds = %46, %38 %.sroa.310.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 176 store ptr %28, ptr %.sroa.310.0..sroa_idx, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 184 - store ptr %30, ptr %.sroa.4.0..sroa_idx, align 8 + store ptr %.sroa.4.0, ptr %.sroa.4.0..sroa_idx, align 8 br label %common.ret 47: ; preds = %41 @@ -8449,8 +8450,8 @@ define void @_ZN9actix_web4rmap11ResourceMap13match_pattern17h20487f79678cda64E( define hidden { i64, ptr } @_ZN9actix_web4rmap11ResourceMap19_find_matching_node17h4ba6c5561c1cc5fbE(ptr noundef nonnull align 8 %0, ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2) unnamed_addr #0 personality ptr @rust_eh_personality { %4 = tail call { i64, i64 } @_ZN12actix_router8resource11ResourceDef10find_match17h10362aa561f958ffE(ptr noalias noundef nonnull readonly align 8 dereferenceable(152) %0, ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2) %5 = extractvalue { i64, i64 } %4, 0 - %6 = extractvalue { i64, i64 } %4, 1 %switch = icmp eq i64 %5, 0 + %6 = extractvalue { i64, i64 } %4, 1 br i1 %switch, label %.loopexit, label %7 7: ; preds = %3 @@ -8653,6 +8654,7 @@ common.ret: ; preds = %46, %38 br label %46 46: ; preds = %51, %43 + %.sroa.4.0 = phi ptr [ undef, %51 ], [ %30, %43 ] %.sroa.0.0 = phi i64 [ 2, %51 ], [ %.sroa.011.0.copyload, %43 ] store i64 %.sroa.0.0, ptr %0, align 8 %.sroa.3.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 @@ -8660,7 +8662,7 @@ common.ret: ; preds = %46, %38 %.sroa.310.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 176 store ptr %28, ptr %.sroa.310.0..sroa_idx, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 184 - store ptr %30, ptr %.sroa.4.0..sroa_idx, align 8 + store ptr %.sroa.4.0, ptr %.sroa.4.0..sroa_idx, align 8 br label %common.ret 47: ; preds = %41 diff --git a/bench/actix-rs/optimized/3q3jkuswkinqn2en.ll b/bench/actix-rs/optimized/3q3jkuswkinqn2en.ll index 0b90c2a702b..666a493b6e9 100644 --- a/bench/actix-rs/optimized/3q3jkuswkinqn2en.ll +++ b/bench/actix-rs/optimized/3q3jkuswkinqn2en.ll @@ -1107,8 +1107,8 @@ define internal fastcc void @"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$ %9 = icmp ugt i64 %8, %5 %.promoted = load i64, ptr %6, align 8 %10 = icmp ugt i64 %.promoted, %8 - %or.cond.i43 = or i1 %10, %9 - br i1 %or.cond.i43, label %.loopexit, label %.lr.ph + %or.cond.i42 = or i1 %10, %9 + br i1 %or.cond.i42, label %.loopexit, label %.lr.ph .lr.ph: ; preds = %2 %11 = getelementptr inbounds i8, ptr %3, i64 %.promoted @@ -1122,37 +1122,37 @@ define internal fastcc void @"_ZN81_$LT$core..str..pattern..CharSearcher$u20$as$ br i1 %18, label %.lr.ph.split.us.split, label %.lr.ph.split.split .lr.ph.split.us.split: ; preds = %.lr.ph, %38 - %.49.us = phi ptr [ %41, %38 ], [ %11, %.lr.ph ] - %.sroa.3.0.i47.us = phi i64 [ %40, %38 ], [ %12, %.lr.ph ] + %.sroa.0.050.us = phi ptr [ %41, %38 ], [ %11, %.lr.ph ] + %.sroa.7.049.us = phi i64 [ %40, %38 ], [ %12, %.lr.ph ] %19 = phi i64 [ %36, %38 ], [ %.promoted, %.lr.ph ] %20 = load i8, ptr %17, align 1, !noundef !4 - %21 = icmp ult i64 %.sroa.3.0.i47.us, 16 + %21 = icmp ult i64 %.sroa.7.049.us, 16 br i1 %21, label %24, label %22 22: ; preds = %.lr.ph.split.us.split - %23 = tail call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef %20, ptr noalias noundef nonnull readonly align 1 %.49.us, i64 noundef %.sroa.3.0.i47.us) + %23 = tail call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef %20, ptr noalias noundef nonnull readonly align 1 %.sroa.0.050.us, i64 noundef %.sroa.7.049.us) br label %32 24: ; preds = %.lr.ph.split.us.split - %.not.i.us = icmp eq i64 %8, %19 + %.not.i.us = icmp eq i64 %.sroa.7.049.us, 0 br i1 %.not.i.us, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us, label %.lr.ph.i.us .lr.ph.i.us: ; preds = %24, %28 %.05.i.us = phi i64 [ %29, %28 ], [ 0, %24 ] - %25 = getelementptr inbounds [0 x i8], ptr %.49.us, i64 0, i64 %.05.i.us + %25 = getelementptr inbounds [0 x i8], ptr %.sroa.0.050.us, i64 0, i64 %.05.i.us %26 = load i8, ptr %25, align 1, !alias.scope !194, !noundef !4 %27 = icmp eq i8 %26, %20 br i1 %27, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us, label %28 28: ; preds = %.lr.ph.i.us %29 = add nuw i64 %.05.i.us, 1 - %exitcond.not.i.us = icmp eq i64 %29, %.sroa.3.0.i47.us + %exitcond.not.i.us = icmp eq i64 %29, %.sroa.7.049.us br i1 %exitcond.not.i.us, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us, label %.lr.ph.i.us _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us: ; preds = %.lr.ph.i.us, %28, %24 - %.0.lcssa.i.us = phi i64 [ 0, %24 ], [ %.sroa.3.0.i47.us, %28 ], [ %.05.i.us, %.lr.ph.i.us ] - %.sroa.0.0.i25.us = phi i64 [ 0, %24 ], [ 0, %28 ], [ 1, %.lr.ph.i.us ] - %30 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i25.us, 0 + %.0.lcssa.i.us = phi i64 [ 0, %24 ], [ %.sroa.7.049.us, %28 ], [ %.05.i.us, %.lr.ph.i.us ] + %.sroa.0.0.i24.us = phi i64 [ 0, %24 ], [ 0, %28 ], [ 1, %.lr.ph.i.us ] + %30 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i24.us, 0 %31 = insertvalue { i64, i64 } %30, i64 %.0.lcssa.i.us, 1 br label %32 @@ -1169,8 +1169,8 @@ _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us: ; preds = %.lr. store i64 %36, ptr %6, align 8 %.not.us = icmp ult i64 %36, %15 %37 = icmp ugt i64 %36, %5 - %or.cond83 = or i1 %.not.us, %37 - br i1 %or.cond83, label %38, label %.split51.us + %or.cond87 = or i1 %.not.us, %37 + br i1 %or.cond87, label %38, label %.split52.us 38: ; preds = %34 %39 = icmp ugt i64 %36, %8 @@ -1179,37 +1179,37 @@ _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us: ; preds = %.lr. br i1 %39, label %.loopexit, label %.lr.ph.split.us.split .lr.ph.split.split: ; preds = %.lr.ph, %61 - %.49 = phi ptr [ %64, %61 ], [ %11, %.lr.ph ] - %.sroa.3.0.i47 = phi i64 [ %63, %61 ], [ %12, %.lr.ph ] + %.sroa.0.050 = phi ptr [ %64, %61 ], [ %11, %.lr.ph ] + %.sroa.7.049 = phi i64 [ %63, %61 ], [ %12, %.lr.ph ] %42 = phi i64 [ %59, %61 ], [ %.promoted, %.lr.ph ] %43 = load i8, ptr %17, align 1, !noundef !4 - %44 = icmp ult i64 %.sroa.3.0.i47, 16 + %44 = icmp ult i64 %.sroa.7.049, 16 br i1 %44, label %47, label %45 45: ; preds = %.lr.ph.split.split - %46 = tail call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef %43, ptr noalias noundef nonnull readonly align 1 %.49, i64 noundef %.sroa.3.0.i47) + %46 = tail call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef %43, ptr noalias noundef nonnull readonly align 1 %.sroa.0.050, i64 noundef %.sroa.7.049) br label %55 47: ; preds = %.lr.ph.split.split - %.not.i = icmp eq i64 %8, %42 + %.not.i = icmp eq i64 %.sroa.7.049, 0 br i1 %.not.i, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit, label %.lr.ph.i .lr.ph.i: ; preds = %47, %51 %.05.i = phi i64 [ %52, %51 ], [ 0, %47 ] - %48 = getelementptr inbounds [0 x i8], ptr %.49, i64 0, i64 %.05.i + %48 = getelementptr inbounds [0 x i8], ptr %.sroa.0.050, i64 0, i64 %.05.i %49 = load i8, ptr %48, align 1, !alias.scope !194, !noundef !4 %50 = icmp eq i8 %49, %43 br i1 %50, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit, label %51 51: ; preds = %.lr.ph.i %52 = add nuw i64 %.05.i, 1 - %exitcond.not.i = icmp eq i64 %52, %.sroa.3.0.i47 + %exitcond.not.i = icmp eq i64 %52, %.sroa.7.049 br i1 %exitcond.not.i, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit, label %.lr.ph.i _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit: ; preds = %.lr.ph.i, %51, %47 - %.0.lcssa.i = phi i64 [ 0, %47 ], [ %.sroa.3.0.i47, %51 ], [ %.05.i, %.lr.ph.i ] - %.sroa.0.0.i25 = phi i64 [ 0, %47 ], [ 0, %51 ], [ 1, %.lr.ph.i ] - %53 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i25, 0 + %.0.lcssa.i = phi i64 [ 0, %47 ], [ %.sroa.7.049, %51 ], [ %.05.i, %.lr.ph.i ] + %.sroa.0.0.i24 = phi i64 [ 0, %47 ], [ 0, %51 ], [ 1, %.lr.ph.i ] + %53 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i24, 0 %54 = insertvalue { i64, i64 } %53, i64 %.0.lcssa.i, 1 br label %55 @@ -1244,22 +1244,22 @@ _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit: ; preds = %.lr.ph. %66 = getelementptr inbounds i8, ptr %3, i64 %65 %bcmp.i = tail call i32 @bcmp(ptr nonnull readonly %66, ptr nonnull readonly %13, i64 %15), !alias.scope !197 %67 = icmp eq i32 %bcmp.i, 0 - br i1 %67, label %.split77.us, label %61 + br i1 %67, label %.split80.us, label %61 -.split51.us: ; preds = %34 +.split52.us: ; preds = %34 tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h334e37603831ab29E(i64 noundef %15, i64 noundef 4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.2c6cd919f5e2d791ec1f2903047be799.65) #21, !noalias !201 unreachable -.split77.us: ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h30d04cb2171eb123E.exit" +.split80.us: ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h30d04cb2171eb123E.exit" %68 = getelementptr inbounds i8, ptr %0, i64 8 store i64 %65, ptr %68, align 8 %69 = getelementptr inbounds i8, ptr %0, i64 16 store i64 %59, ptr %69, align 8 br label %.loopexit -.loopexit: ; preds = %61, %38, %2, %.split.us, %.split77.us - %storemerge24 = phi i64 [ 0, %.split.us ], [ 1, %.split77.us ], [ 0, %2 ], [ 0, %38 ], [ 0, %61 ] - store i64 %storemerge24, ptr %0, align 8 +.loopexit: ; preds = %61, %38, %2, %.split.us, %.split80.us + %storemerge23 = phi i64 [ 0, %.split.us ], [ 1, %.split80.us ], [ 0, %2 ], [ 0, %38 ], [ 0, %61 ] + store i64 %storemerge23, ptr %0, align 8 ret void } @@ -1550,12 +1550,12 @@ define hidden void @_ZN11actix_files8path_buf11PathBufWrap10parse_path17hec1a22e br label %23 .thread150.loopexit: ; preds = %23 - %lpad.loopexit241 = landingpad { ptr, i32 } + %lpad.loopexit239 = landingpad { ptr, i32 } cleanup br label %.thread .thread150.loopexit.split-lp: ; preds = %114, %_ZN4core4iter6traits8iterator8Iterator4fold17h6af6379b42fa487dE.exit - %lpad.loopexit.split-lp242 = landingpad { ptr, i32 } + %lpad.loopexit.split-lp240 = landingpad { ptr, i32 } cleanup br label %.thread @@ -1598,22 +1598,22 @@ _ZN4core4iter6traits8iterator8Iterator4fold17h6af6379b42fa487dE.exit: ; preds = br label %.loopexit.split-lp .loopexit.split-lp.loopexit: ; preds = %110, %42, %93 - %lpad.loopexit236 = landingpad { ptr, i32 } + %lpad.loopexit234 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp .loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %34 - %lpad.loopexit239 = landingpad { ptr, i32 } + %lpad.loopexit237 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp -.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp: ; preds = %.thread170, %83, %86 +.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp: ; preds = %.thread168, %83, %86 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp .loopexit.split-lp: ; preds = %.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit - %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit236, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit239, %.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ] + %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit234, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit237, %.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ] invoke fastcc void @"_ZN4core3ptr50drop_in_place$LT$alloc..borrow..Cow$LT$str$GT$$GT$17h8bbdafb8ff258826E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %20) #24 to label %.thread unwind label %131 @@ -1701,7 +1701,7 @@ _ZN4core4iter6traits8iterator8Iterator4fold17h6af6379b42fa487dE.exit108: ; preds br label %42 42: ; preds = %.lr.ph, %.backedge - %.0254 = phi i64 [ %25, %.lr.ph ], [ %.0.be, %.backedge ] + %.0252 = phi i64 [ %25, %.lr.ph ], [ %.0.be, %.backedge ] call void @llvm.experimental.noalias.scope.decl(metadata !300) %.val.i = load ptr, ptr %.sroa.015.sroa.3.0..sroa_idx, align 8, !alias.scope !300, !nonnull !4, !align !193, !noundef !4 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9), !noalias !300 @@ -1716,7 +1716,7 @@ _ZN4core4iter6traits8iterator8Iterator4fold17h6af6379b42fa487dE.exit108: ; preds 44: ; preds = %.noexc114 %45 = load i8, ptr %.sroa.015.sroa.5.0..sroa_idx, align 1, !range !303, !alias.scope !304, !noundef !4 %46 = trunc nuw i8 %45 to i1 - br i1 %46, label %.thread174, label %47 + br i1 %46, label %.thread172, label %47 47: ; preds = %44 store i8 1, ptr %.sroa.015.sroa.5.0..sroa_idx, align 1, !alias.scope !304 @@ -1726,7 +1726,7 @@ _ZN4core4iter6traits8iterator8Iterator4fold17h6af6379b42fa487dE.exit108: ; preds %.pre5.i.i = load i64, ptr %.sroa.015.sroa.2.0..sroa_idx, align 8, !alias.scope !304 %.not.i.i = icmp ne i64 %.pre5.i.i, %.pre.i.i %or.cond.not.i.i = select i1 %49, i1 true, i1 %.not.i.i - br i1 %or.cond.not.i.i, label %._crit_edge.i.i, label %.thread174 + br i1 %or.cond.not.i.i, label %._crit_edge.i.i, label %.thread172 ._crit_edge.i.i: ; preds = %47 %.val.i.i = load ptr, ptr %.sroa.015.sroa.3.0..sroa_idx, align 8, !alias.scope !304, !nonnull !4, !align !193, !noundef !4 @@ -1743,12 +1743,12 @@ _ZN4core4iter6traits8iterator8Iterator4fold17h6af6379b42fa487dE.exit108: ; preds store i64 %54, ptr %17, align 8, !alias.scope !300 br label %60 -.thread174: ; preds = %44, %47 +.thread172: ; preds = %44, %47 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9), !noalias !300 - br label %.thread170 + br label %.thread168 -.thread170: ; preds = %.backedge, %.thread174 - %.0251 = phi i64 [ %.0254, %.thread174 ], [ %.0.be, %.backedge ] +.thread168: ; preds = %.backedge, %.thread172 + %.0249 = phi i64 [ %.0252, %.thread172 ], [ %.0.be, %.backedge ] call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %17) call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %16) %58 = load ptr, ptr %.sroa.039.sroa.4.0..sroa_idx, align 8, !nonnull !4, !noundef !4 @@ -1763,7 +1763,7 @@ _ZN4core4iter6traits8iterator8Iterator4fold17h6af6379b42fa487dE.exit108: ; preds %.not.i = icmp eq i64 %.sroa.4.0.i, 2 br i1 %.not.i, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h30d04cb2171eb123E.exit", label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h30d04cb2171eb123E.exit.thread" -61: ; preds = %.thread170 +61: ; preds = %.thread168 %.sroa.233.0..sroa_idx = getelementptr inbounds i8, ptr %15, i64 8 call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %15) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %.sroa.233.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(64) %16, i64 64, i1 false) @@ -1836,7 +1836,7 @@ _ZN4core4iter6traits8iterator8Iterator4fold17h6af6379b42fa487dE.exit108: ; preds ret void 81: ; preds = %76 - %82 = icmp ult i64 %77, %.0251 + %82 = icmp ult i64 %77, %.0249 br i1 %82, label %84, label %83 83: ; preds = %81 @@ -1871,29 +1871,29 @@ _ZN4core4iter6traits8iterator8Iterator4fold17h6af6379b42fa487dE.exit108: ; preds "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h30d04cb2171eb123E.exit": ; preds = %60 %bcmp.i = call i32 @bcmp(ptr noundef nonnull readonly dereferenceable(2) %.sroa.0.0.i113, ptr noundef nonnull readonly dereferenceable(2) @anon.2c6cd919f5e2d791ec1f2903047be799.74, i64 2), !alias.scope !332 %92 = icmp eq i32 %bcmp.i, 0 - br i1 %92, label %93, label %.thread180 + br i1 %92, label %93, label %.thread178 "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h30d04cb2171eb123E.exit.thread": ; preds = %60 %.not.i120 = icmp eq i64 %.sroa.4.0.i, 0 br i1 %3, label %100, label %96 -.thread180: ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h30d04cb2171eb123E.exit" +.thread178: ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h30d04cb2171eb123E.exit" br i1 %3, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h416ef19e7ae25e98E.exit124thread-pre-split", label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h416ef19e7ae25e98E.exit" 93: ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h30d04cb2171eb123E.exit" - %94 = add i64 %.0254, -1 + %94 = add i64 %.0252, -1 %95 = invoke noundef zeroext i1 @_ZN3std4path7PathBuf3pop17hc278ac32703dcec8E(ptr noalias noundef nonnull align 8 dereferenceable(24) %22) to label %.backedge unwind label %.loopexit.split-lp.loopexit 96: ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h30d04cb2171eb123E.exit.thread" br i1 %.not.i120, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$9ends_with17hb82f83160d86f135E.exit135.thread.thread", label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h416ef19e7ae25e98E.exit" -"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h416ef19e7ae25e98E.exit": ; preds = %.thread180, %96 +"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h416ef19e7ae25e98E.exit": ; preds = %.thread178, %96 %rhsc = load i8, ptr %.sroa.0.0.i113, align 1 %97 = icmp eq i8 %rhsc, 46 - br i1 %97, label %.loopexit280, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h416ef19e7ae25e98E.exit124" + br i1 %97, label %.loopexit278, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h416ef19e7ae25e98E.exit124" -.loopexit280: ; preds = %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h416ef19e7ae25e98E.exit", %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$9ends_with17hb82f83160d86f135E.exit", %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h416ef19e7ae25e98E.exit124", %104, %106 +.loopexit278: ; preds = %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h416ef19e7ae25e98E.exit", %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$9ends_with17hb82f83160d86f135E.exit", %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h416ef19e7ae25e98E.exit124", %104, %106 %98 = phi <2 x i32> [ , %104 ], [ , %106 ], [ , %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h416ef19e7ae25e98E.exit124" ], [ , %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$9ends_with17hb82f83160d86f135E.exit" ], [ , %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h416ef19e7ae25e98E.exit" ] %99 = getelementptr inbounds i8, ptr %0, i64 8 store <2 x i32> %98, ptr %99, align 8 @@ -1904,50 +1904,50 @@ _ZN4core4iter6traits8iterator8Iterator4fold17h6af6379b42fa487dE.exit108: ; preds 100: ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h30d04cb2171eb123E.exit.thread" br i1 %.not.i120, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$9ends_with17hb82f83160d86f135E.exit135.thread.thread", label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h416ef19e7ae25e98E.exit124thread-pre-split" -"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h416ef19e7ae25e98E.exit124thread-pre-split": ; preds = %100, %.thread180 - %rhsc229.pr = load i8, ptr %.sroa.0.0.i113, align 1 +"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h416ef19e7ae25e98E.exit124thread-pre-split": ; preds = %100, %.thread178 + %rhsc227.pr = load i8, ptr %.sroa.0.0.i113, align 1 br label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h416ef19e7ae25e98E.exit124" "_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h416ef19e7ae25e98E.exit124": ; preds = %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h416ef19e7ae25e98E.exit124thread-pre-split", %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h416ef19e7ae25e98E.exit" - %rhsc229 = phi i8 [ %rhsc229.pr, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h416ef19e7ae25e98E.exit124thread-pre-split" ], [ %rhsc, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h416ef19e7ae25e98E.exit" ] - %101 = icmp eq i8 %rhsc229, 42 - br i1 %101, label %.loopexit280, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$9ends_with17hb82f83160d86f135E.exit" + %rhsc227 = phi i8 [ %rhsc227.pr, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h416ef19e7ae25e98E.exit124thread-pre-split" ], [ %rhsc, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h416ef19e7ae25e98E.exit" ] + %101 = icmp eq i8 %rhsc227, 42 + br i1 %101, label %.loopexit278, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$9ends_with17hb82f83160d86f135E.exit" "_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$9ends_with17hb82f83160d86f135E.exit": ; preds = %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h416ef19e7ae25e98E.exit124" %102 = add i64 %.sroa.4.0.i, -1 %103 = getelementptr inbounds i8, ptr %.sroa.0.0.i113, i64 %102 - %rhsc231 = load i8, ptr %103, align 1 - switch i8 %rhsc231, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$9ends_with17hb82f83160d86f135E.exit135.thread" [ - i8 58, label %.loopexit280 + %rhsc229 = load i8, ptr %103, align 1 + switch i8 %rhsc229, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$9ends_with17hb82f83160d86f135E.exit135.thread" [ + i8 58, label %.loopexit278 i8 62, label %104 i8 60, label %106 ] 104: ; preds = %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$9ends_with17hb82f83160d86f135E.exit" - br label %.loopexit280 + br label %.loopexit278 "_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$9ends_with17hb82f83160d86f135E.exit135.thread": ; preds = %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$9ends_with17hb82f83160d86f135E.exit" %105 = icmp eq i64 %.sroa.4.0.i, 0 br i1 %105, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$9ends_with17hb82f83160d86f135E.exit135.thread.thread", label %110 106: ; preds = %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$9ends_with17hb82f83160d86f135E.exit" - br label %.loopexit280 + br label %.loopexit278 "_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$9ends_with17hb82f83160d86f135E.exit135.thread.thread": ; preds = %100, %96, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$9ends_with17hb82f83160d86f135E.exit135.thread" - %107 = add i64 %.0254, -1 + %107 = add i64 %.0252, -1 br label %.backedge .backedge: ; preds = %93, %110, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$9ends_with17hb82f83160d86f135E.exit135.thread.thread" - %.0.be = phi i64 [ %107, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$9ends_with17hb82f83160d86f135E.exit135.thread.thread" ], [ %94, %93 ], [ %.0254, %110 ] + %.0.be = phi i64 [ %107, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$9ends_with17hb82f83160d86f135E.exit135.thread.thread" ], [ %94, %93 ], [ %.0252, %110 ] %108 = load i8, ptr %.sroa.015.sroa.5.0..sroa_idx, align 1, !range !303, !alias.scope !336, !noundef !4 %109 = trunc nuw i8 %108 to i1 - br i1 %109, label %.thread170, label %42 + br i1 %109, label %.thread168, label %42 110: ; preds = %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$9ends_with17hb82f83160d86f135E.exit135.thread" invoke void @_ZN3std4path7PathBuf5_push17h98f2c6a7c69395cbE(ptr noalias noundef nonnull align 8 dereferenceable(24) %22, ptr noalias noundef nonnull readonly align 1 %.sroa.0.0.i113, i64 noundef %.sroa.4.0.i) to label %.backedge unwind label %.loopexit.split-lp.loopexit -111: ; preds = %.loopexit280, %37 +111: ; preds = %.loopexit278, %37 call void @llvm.experimental.noalias.scope.decl(metadata !338) %112 = load i64, ptr %20, align 8, !range !34, !alias.scope !338, !noundef !4 %113 = icmp eq i64 %112, -9223372036854775808 @@ -2014,7 +2014,7 @@ _ZN4core4iter6traits8iterator8Iterator4fold17h6af6379b42fa487dE.exit108: ; preds resume { ptr, i32 } %.pn149 .thread: ; preds = %.thread150.loopexit, %.thread150.loopexit.split-lp, %.loopexit.split-lp - %.pn149 = phi { ptr, i32 } [ %lpad.phi, %.loopexit.split-lp ], [ %lpad.loopexit241, %.thread150.loopexit ], [ %lpad.loopexit.split-lp242, %.thread150.loopexit.split-lp ] + %.pn149 = phi { ptr, i32 } [ %lpad.phi, %.loopexit.split-lp ], [ %lpad.loopexit239, %.thread150.loopexit ], [ %lpad.loopexit.split-lp240, %.thread150.loopexit.split-lp ] invoke void @"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17hf773fa666f5b1a1cE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %22) #24 to label %133 unwind label %131 } diff --git a/bench/actix-rs/optimized/3u1jix79tu9frq3m.ll b/bench/actix-rs/optimized/3u1jix79tu9frq3m.ll index c655de5d489..23a43561a31 100644 --- a/bench/actix-rs/optimized/3u1jix79tu9frq3m.ll +++ b/bench/actix-rs/optimized/3u1jix79tu9frq3m.ll @@ -457,35 +457,35 @@ define internal fastcc void @"_ZN5alloc3str21_$LT$impl$u20$str$GT$7replace17h0c4 .lr.ph.split.split.i.i: ; preds = %.lr.ph.i.i, %49 %32 = phi i64 [ %47, %49 ], [ %.054, %.lr.ph.i.i ] - %.sroa.3.0.i47.i.i = sub nuw i64 %2, %32 - %.49.i.i = getelementptr inbounds i8, ptr %1, i64 %32 - %33 = icmp ult i64 %.sroa.3.0.i47.i.i, 16 + %.sroa.7.049.i.i = sub nuw i64 %2, %32 + %.sroa.0.050.i.i = getelementptr inbounds i8, ptr %1, i64 %32 + %33 = icmp ult i64 %.sroa.7.049.i.i, 16 br i1 %33, label %36, label %34 34: ; preds = %.lr.ph.split.split.i.i - %35 = invoke { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef %.pre.pre, ptr noalias noundef nonnull readonly align 1 %.49.i.i, i64 noundef %.sroa.3.0.i47.i.i) + %35 = invoke { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef %.pre.pre, ptr noalias noundef nonnull readonly align 1 %.sroa.0.050.i.i, i64 noundef %.sroa.7.049.i.i) to label %.noexc14 unwind label %.loopexit 36: ; preds = %.lr.ph.split.split.i.i - %.not.i.i.i = icmp eq i64 %32, %2 + %.not.i.i.i = icmp eq i64 %.sroa.7.049.i.i, 0 br i1 %.not.i.i.i, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i, label %.lr.ph.i.i.i .lr.ph.i.i.i: ; preds = %36, %40 %.05.i.i.i = phi i64 [ %41, %40 ], [ 0, %36 ] - %37 = getelementptr inbounds [0 x i8], ptr %.49.i.i, i64 0, i64 %.05.i.i.i + %37 = getelementptr inbounds [0 x i8], ptr %.sroa.0.050.i.i, i64 0, i64 %.05.i.i.i %38 = load i8, ptr %37, align 1, !alias.scope !102, !noalias !105, !noundef !4 %39 = icmp eq i8 %38, %.pre.pre br i1 %39, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i, label %40 40: ; preds = %.lr.ph.i.i.i - %41 = add nuw i64 %.05.i.i.i, 1 - %exitcond.not.i.i.i = icmp eq i64 %41, %.sroa.3.0.i47.i.i + %41 = add nuw nsw i64 %.05.i.i.i, 1 + %exitcond.not.i.i.i = icmp eq i64 %41, %.sroa.7.049.i.i br i1 %exitcond.not.i.i.i, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i, label %.lr.ph.i.i.i _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i: ; preds = %40, %.lr.ph.i.i.i, %36 - %.0.lcssa.i.i.i = phi i64 [ 0, %36 ], [ %.sroa.3.0.i47.i.i, %40 ], [ %.05.i.i.i, %.lr.ph.i.i.i ] - %.sroa.0.0.i25.i.i = phi i64 [ 0, %36 ], [ 0, %40 ], [ 1, %.lr.ph.i.i.i ] - %42 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i25.i.i, 0 + %.0.lcssa.i.i.i = phi i64 [ 0, %36 ], [ %.sroa.7.049.i.i, %40 ], [ %.05.i.i.i, %.lr.ph.i.i.i ] + %.sroa.0.0.i24.i.i = phi i64 [ 0, %36 ], [ 0, %40 ], [ 1, %.lr.ph.i.i.i ] + %42 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i24.i.i, 0 %43 = insertvalue { i64, i64 } %42, i64 %.0.lcssa.i.i.i, 1 br label %.noexc14 diff --git a/bench/actix-rs/optimized/3xa4t3lkqrxzecud.ll b/bench/actix-rs/optimized/3xa4t3lkqrxzecud.ll index 075aaf6e473..487dc6b9f9d 100644 --- a/bench/actix-rs/optimized/3xa4t3lkqrxzecud.ll +++ b/bench/actix-rs/optimized/3xa4t3lkqrxzecud.ll @@ -6,7 +6,12 @@ target triple = "x86_64-unknown-linux-gnu" ; Function Attrs: inlinehint nonlazybind uwtable define { ptr, i64 } @"_ZN4core4iter6traits8iterator8Iterator8find_map5check28_$u7b$$u7b$closure$u7d$$u7d$17ha3551325421d22ceE"(ptr align 8 %0, ptr align 1 %1, i64 %2) unnamed_addr #0 { %4 = tail call { ptr, i64 } @"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17he5d584cdf950fbbcE"(ptr align 8 %0, ptr align 1 %1, i64 %2) - ret { ptr, i64 } %4 + %5 = extractvalue { ptr, i64 } %4, 0 + %6 = icmp eq ptr %5, null + %7 = extractvalue { ptr, i64 } %4, 1 + %.sroa.3.0 = select i1 %6, i64 undef, i64 %7 + %8 = insertvalue { ptr, i64 } %4, i64 %.sroa.3.0, 1 + ret { ptr, i64 } %8 } ; Function Attrs: inlinehint nonlazybind uwtable diff --git a/bench/actix-rs/optimized/4jlfyqkak9x9x2yv.ll b/bench/actix-rs/optimized/4jlfyqkak9x9x2yv.ll index f6289f08dc5..4bc63fe8e71 100644 --- a/bench/actix-rs/optimized/4jlfyqkak9x9x2yv.ll +++ b/bench/actix-rs/optimized/4jlfyqkak9x9x2yv.ll @@ -1367,13 +1367,13 @@ define { i64, i64 } @_ZN12actix_router8resource11ResourceDef10find_match17h10362 %9 = alloca { { i64, [1 x i64] }, { { { i64, ptr, {} }, i64 }, { i32, [1 x i32] }, ptr }, { ptr, i64 } }, align 8 %10 = getelementptr inbounds i8, ptr %0, i64 32 %11 = load i64, ptr %10, align 8, !range !33, !noundef !8 - switch i64 %11, label %default.unreachable37 [ + switch i64 %11, label %default.unreachable36 [ i64 0, label %12 i64 1, label %28 i64 2, label %32 ] -default.unreachable37: ; preds = %3 +default.unreachable36: ; preds = %3 unreachable 12: ; preds = %3 @@ -1460,8 +1460,8 @@ _ZN12actix_router9regex_set8RegexSet15first_match_idx17hd9c095ec0eb5236aE.exit: call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5), !noalias !201 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) %43 = extractvalue { i64, i64 } %38, 0 - %44 = extractvalue { i64, i64 } %38, 1 %switch = icmp eq i64 %43, 0 + %44 = extractvalue { i64, i64 } %38, 1 br i1 %switch, label %_ZN12actix_router8resource11ResourceDef12static_match17ha6df8f409b452456E.exit, label %58 _ZN12actix_router8resource11ResourceDef12static_match17ha6df8f409b452456E.exit: ; preds = %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h03190a190ac3b61dE.exit.i", %26, %25, %24, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h03190a190ac3b61dE.exit.i.i", %12, %_ZN12actix_router9regex_set8RegexSet15first_match_idx17hd9c095ec0eb5236aE.exit, %71, %75, %53, %49 @@ -1683,36 +1683,36 @@ define void @_ZN12actix_router8resource11ResourceDef5parse17he30cb5ecf68a2f4fE(p br i1 %4, label %"_ZN4core3str21_$LT$impl$u20$str$GT$4find17hb47241159fd0b02dE.exit", label %.lr.ph.split.split.i.i .lr.ph.split.split.i.i: ; preds = %5, %93 - %.sroa.3.0.i47.i.i = phi i64 [ %94, %93 ], [ %2, %5 ] + %.sroa.7.049.i.i = phi i64 [ %94, %93 ], [ %2, %5 ] %74 = phi i64 [ %90, %93 ], [ 0, %5 ] - %.49.i.i = getelementptr i8, ptr %1, i64 %74 - %75 = icmp ult i64 %.sroa.3.0.i47.i.i, 16 + %.sroa.0.050.i.i = getelementptr i8, ptr %1, i64 %74 + %75 = icmp ult i64 %.sroa.7.049.i.i, 16 br i1 %75, label %78, label %76 76: ; preds = %.lr.ph.split.split.i.i - %77 = tail call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef 123, ptr noalias noundef nonnull readonly align 1 %.49.i.i, i64 noundef %.sroa.3.0.i47.i.i), !noalias !215 + %77 = tail call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef 123, ptr noalias noundef nonnull readonly align 1 %.sroa.0.050.i.i, i64 noundef %.sroa.7.049.i.i), !noalias !215 br label %86 78: ; preds = %.lr.ph.split.split.i.i - %.not.i.i.i = icmp eq i64 %74, %2 + %.not.i.i.i = icmp eq i64 %.sroa.7.049.i.i, 0 br i1 %.not.i.i.i, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i, label %.lr.ph.i.i.i .lr.ph.i.i.i: ; preds = %78, %82 %.05.i.i.i = phi i64 [ %83, %82 ], [ 0, %78 ] - %79 = getelementptr inbounds [0 x i8], ptr %.49.i.i, i64 0, i64 %.05.i.i.i + %79 = getelementptr inbounds [0 x i8], ptr %.sroa.0.050.i.i, i64 0, i64 %.05.i.i.i %80 = load i8, ptr %79, align 1, !alias.scope !219, !noalias !215, !noundef !8 %81 = icmp eq i8 %80, 123 br i1 %81, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i, label %82 82: ; preds = %.lr.ph.i.i.i - %83 = add nuw i64 %.05.i.i.i, 1 - %exitcond.not.i.i.i = icmp eq i64 %83, %.sroa.3.0.i47.i.i + %83 = add nuw nsw i64 %.05.i.i.i, 1 + %exitcond.not.i.i.i = icmp eq i64 %83, %.sroa.7.049.i.i br i1 %exitcond.not.i.i.i, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i, label %.lr.ph.i.i.i _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i: ; preds = %82, %.lr.ph.i.i.i, %78 - %.0.lcssa.i.i.i = phi i64 [ 0, %78 ], [ %.sroa.3.0.i47.i.i, %82 ], [ %.05.i.i.i, %.lr.ph.i.i.i ] - %.sroa.0.0.i25.i.i = phi i64 [ 0, %78 ], [ 0, %82 ], [ 1, %.lr.ph.i.i.i ] - %84 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i25.i.i, 0 + %.0.lcssa.i.i.i = phi i64 [ 0, %78 ], [ %.sroa.7.049.i.i, %82 ], [ %.05.i.i.i, %.lr.ph.i.i.i ] + %.sroa.0.0.i24.i.i = phi i64 [ 0, %78 ], [ 0, %82 ], [ 1, %.lr.ph.i.i.i ] + %84 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i24.i.i, 0 %85 = insertvalue { i64, i64 } %84, i64 %.0.lcssa.i.i.i, 1 br label %86 @@ -1736,7 +1736,7 @@ _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i: ; preds = %82, br i1 %91, label %97, label %.lr.ph.split.split.i.i "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9c3d8e1638c67a37E.exit.i.i": ; preds = %88 - %95 = getelementptr i8, ptr %.49.i.i, i64 %.sroa.6.0.i.i + %95 = getelementptr i8, ptr %.sroa.0.050.i.i, i64 %.sroa.6.0.i.i %lhsc = load i8, ptr %95, align 1 %96 = icmp eq i8 %lhsc, 123 br i1 %96, label %"_ZN4core3str21_$LT$impl$u20$str$GT$4find17hb47241159fd0b02dE.exit", label %93 @@ -1912,36 +1912,36 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit: ; preds = %"_ZN4core3str21_$LT br label %.lr.ph.split.split.i.i225 .lr.ph.split.split.i.i225: ; preds = %166, %147 - %.sroa.3.0.i47.i.i226 = phi i64 [ %167, %166 ], [ %.sroa.8.0, %147 ] + %.sroa.7.049.i.i226 = phi i64 [ %167, %166 ], [ %.sroa.8.0, %147 ] %148 = phi i64 [ %163, %166 ], [ 0, %147 ] - %.49.i.i227 = getelementptr inbounds i8, ptr %.sroa.056.0, i64 %148 - %149 = icmp ult i64 %.sroa.3.0.i47.i.i226, 16 + %.sroa.0.050.i.i227 = getelementptr inbounds i8, ptr %.sroa.056.0, i64 %148 + %149 = icmp ult i64 %.sroa.7.049.i.i226, 16 br i1 %149, label %152, label %150 150: ; preds = %.lr.ph.split.split.i.i225 - %151 = invoke { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef 123, ptr noalias noundef nonnull readonly align 1 %.49.i.i227, i64 noundef %.sroa.3.0.i47.i.i226) + %151 = invoke { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef 123, ptr noalias noundef nonnull readonly align 1 %.sroa.0.050.i.i227, i64 noundef %.sroa.7.049.i.i226) to label %.noexc244 unwind label %.loopexit.split-lp.loopexit 152: ; preds = %.lr.ph.split.split.i.i225 - %.not.i.i.i237 = icmp eq i64 %148, %.sroa.8.0 + %.not.i.i.i237 = icmp eq i64 %.sroa.7.049.i.i226, 0 br i1 %.not.i.i.i237, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i241, label %.lr.ph.i.i.i238 .lr.ph.i.i.i238: ; preds = %152, %156 %.05.i.i.i239 = phi i64 [ %157, %156 ], [ 0, %152 ] - %153 = getelementptr inbounds [0 x i8], ptr %.49.i.i227, i64 0, i64 %.05.i.i.i239 + %153 = getelementptr inbounds [0 x i8], ptr %.sroa.0.050.i.i227, i64 0, i64 %.05.i.i.i239 %154 = load i8, ptr %153, align 1, !alias.scope !236, !noalias !241, !noundef !8 %155 = icmp eq i8 %154, 123 br i1 %155, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i241, label %156 156: ; preds = %.lr.ph.i.i.i238 - %157 = add nuw i64 %.05.i.i.i239, 1 - %exitcond.not.i.i.i240 = icmp eq i64 %157, %.sroa.3.0.i47.i.i226 + %157 = add nuw nsw i64 %.05.i.i.i239, 1 + %exitcond.not.i.i.i240 = icmp eq i64 %157, %.sroa.7.049.i.i226 br i1 %exitcond.not.i.i.i240, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i241, label %.lr.ph.i.i.i238 _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i241: ; preds = %156, %.lr.ph.i.i.i238, %152 - %.0.lcssa.i.i.i242 = phi i64 [ 0, %152 ], [ %.sroa.3.0.i47.i.i226, %156 ], [ %.05.i.i.i239, %.lr.ph.i.i.i238 ] - %.sroa.0.0.i25.i.i243 = phi i64 [ 0, %152 ], [ 0, %156 ], [ 1, %.lr.ph.i.i.i238 ] - %158 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i25.i.i243, 0 + %.0.lcssa.i.i.i242 = phi i64 [ 0, %152 ], [ %.sroa.7.049.i.i226, %156 ], [ %.05.i.i.i239, %.lr.ph.i.i.i238 ] + %.sroa.0.0.i24.i.i243 = phi i64 [ 0, %152 ], [ 0, %156 ], [ 1, %.lr.ph.i.i.i238 ] + %158 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i24.i.i243, 0 %159 = insertvalue { i64, i64 } %158, i64 %.0.lcssa.i.i.i242, 1 br label %.noexc244 @@ -2281,36 +2281,36 @@ _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i241: ; preds = % br label %.lr.ph.split.split.i.i.i .lr.ph.split.split.i.i.i: ; preds = %314, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9c3d8e1638c67a37E.exit.i" - %.sroa.3.0.i47.i.i.i = phi i64 [ %315, %314 ], [ %293, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9c3d8e1638c67a37E.exit.i" ] + %.sroa.7.049.i.i.i = phi i64 [ %315, %314 ], [ %293, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9c3d8e1638c67a37E.exit.i" ] %296 = phi i64 [ %311, %314 ], [ 0, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h9c3d8e1638c67a37E.exit.i" ] - %.49.i.i.i = getelementptr inbounds i8, ptr %286, i64 %296 - %297 = icmp ult i64 %.sroa.3.0.i47.i.i.i, 16 + %.sroa.0.050.i.i.i = getelementptr inbounds i8, ptr %286, i64 %296 + %297 = icmp ult i64 %.sroa.7.049.i.i.i, 16 br i1 %297, label %300, label %298 298: ; preds = %.lr.ph.split.split.i.i.i - %299 = invoke { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef 58, ptr noalias noundef nonnull readonly align 1 %.49.i.i.i, i64 noundef %.sroa.3.0.i47.i.i.i) + %299 = invoke { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef 58, ptr noalias noundef nonnull readonly align 1 %.sroa.0.050.i.i.i, i64 noundef %.sroa.7.049.i.i.i) to label %.noexc259 unwind label %.loopexit 300: ; preds = %.lr.ph.split.split.i.i.i - %.not.i.i.i.i255 = icmp eq i64 %296, %293 + %.not.i.i.i.i255 = icmp eq i64 %.sroa.7.049.i.i.i, 0 br i1 %.not.i.i.i.i255, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i.i, label %.lr.ph.i.i.i.i .lr.ph.i.i.i.i: ; preds = %300, %304 %.05.i.i.i.i = phi i64 [ %305, %304 ], [ 0, %300 ] - %301 = getelementptr inbounds [0 x i8], ptr %.49.i.i.i, i64 0, i64 %.05.i.i.i.i + %301 = getelementptr inbounds [0 x i8], ptr %.sroa.0.050.i.i.i, i64 0, i64 %.05.i.i.i.i %302 = load i8, ptr %301, align 1, !alias.scope !311, !noalias !316, !noundef !8 %303 = icmp eq i8 %302, 58 br i1 %303, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i.i, label %304 304: ; preds = %.lr.ph.i.i.i.i - %305 = add nuw i64 %.05.i.i.i.i, 1 - %exitcond.not.i.i.i.i = icmp eq i64 %305, %.sroa.3.0.i47.i.i.i + %305 = add nuw nsw i64 %.05.i.i.i.i, 1 + %exitcond.not.i.i.i.i = icmp eq i64 %305, %.sroa.7.049.i.i.i br i1 %exitcond.not.i.i.i.i, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i.i, label %.lr.ph.i.i.i.i _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i.i: ; preds = %304, %.lr.ph.i.i.i.i, %300 - %.0.lcssa.i.i.i.i = phi i64 [ 0, %300 ], [ %.05.i.i.i.i, %.lr.ph.i.i.i.i ], [ %.sroa.3.0.i47.i.i.i, %304 ] - %.sroa.0.0.i25.i.i.i = phi i64 [ 0, %300 ], [ 1, %.lr.ph.i.i.i.i ], [ 0, %304 ] - %306 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i25.i.i.i, 0 + %.0.lcssa.i.i.i.i = phi i64 [ 0, %300 ], [ %.05.i.i.i.i, %.lr.ph.i.i.i.i ], [ %.sroa.7.049.i.i.i, %304 ] + %.sroa.0.0.i24.i.i.i = phi i64 [ 0, %300 ], [ 1, %.lr.ph.i.i.i.i ], [ 0, %304 ] + %306 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i24.i.i.i, 0 %307 = insertvalue { i64, i64 } %306, i64 %.0.lcssa.i.i.i.i, 1 br label %.noexc259 diff --git a/bench/actix-rs/optimized/4vksfexudgt1qids.ll b/bench/actix-rs/optimized/4vksfexudgt1qids.ll index bd29b382f91..a15b34558ed 100644 --- a/bench/actix-rs/optimized/4vksfexudgt1qids.ll +++ b/bench/actix-rs/optimized/4vksfexudgt1qids.ll @@ -307,7 +307,7 @@ define hidden void @"_ZN10actix_http8encoding7decoder16Decoder$LT$S$GT$12from_he .noexc: ; preds = %3 %6 = icmp eq ptr %5, null - br i1 %6, label %.thread25, label %7 + br i1 %6, label %.thread24, label %7 7: ; preds = %.noexc %8 = invoke noundef nonnull align 8 ptr @_ZN10actix_http6header3map5Value5first17hfed213afae29d954E(ptr noundef nonnull align 8 %5) @@ -320,7 +320,7 @@ _ZN10actix_http6header3map9HeaderMap3get17h511f38e682323a37E.exit: ; preds = %7 10: ; preds = %_ZN10actix_http6header3map9HeaderMap3get17h511f38e682323a37E.exit %11 = extractvalue { ptr, i64 } %9, 0 %12 = icmp eq ptr %11, null - br i1 %12, label %.thread25, label %13 + br i1 %12, label %.thread24, label %13 13: ; preds = %10 %14 = extractvalue { ptr, i64 } %9, 1 @@ -329,13 +329,13 @@ _ZN10actix_http6header3map9HeaderMap3get17h511f38e682323a37E.exit: ; preds = %7 16: ; preds = %13 %17 = icmp eq i8 %15, 5 - br i1 %17, label %.thread25, label %18 + br i1 %17, label %.thread24, label %18 -.thread25: ; preds = %.noexc, %10, %16 +.thread24: ; preds = %.noexc, %10, %16 br label %18 -18: ; preds = %16, %.thread25 - %19 = phi i8 [ 0, %.thread25 ], [ %15, %16 ] +18: ; preds = %16, %.thread24 + %19 = phi i8 [ 0, %.thread24 ], [ %15, %16 ] call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(24) %1, i64 24, i1 false) call void @"_ZN10actix_http8encoding7decoder16Decoder$LT$S$GT$3new17h73b65a18262824adE.llvm.11658830040512789610"(ptr noalias nocapture noundef nonnull sret({ { i64, [2 x i64] }, { i64, [1 x i64] }, ptr, i8, [7 x i8] }) align 8 dereferenceable(56) %0, ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %4, i8 noundef %19) @@ -1208,6 +1208,7 @@ define hidden void @"_ZN111_$LT$actix_tls..connect..connector..ConnectServiceRes br label %.thread.i.i.i 178: ; preds = %.thread.i.i.i.i.i.i, %171 + %.sroa.4.0.i.i.i.i.i.i = phi i8 [ %169, %.thread.i.i.i.i.i.i ], [ 0, %171 ] %.sroa.0.0.i.i.i.i.i.i = phi i1 [ false, %.thread.i.i.i.i.i.i ], [ true, %171 ] call void @llvm.lifetime.start.p0(i64 3, ptr nonnull %39), !noalias !99 store i24 0, ptr %39, align 4, !noalias !99 @@ -1220,7 +1221,7 @@ define hidden void @"_ZN111_$LT$actix_tls..connect..connector..ConnectServiceRes .thread10.i.i.i: ; preds = %179, %163 %.sroa.0.0.i1414.off8.i.i.i = phi i8 [ %167, %179 ], [ 0, %163 ] - %.sroa.0.0.i1414.off16.i.i.i = phi i8 [ %169, %179 ], [ 0, %163 ] + %.sroa.0.0.i1414.off16.i.i.i = phi i8 [ %.sroa.4.0.i.i.i.i.i.i, %179 ], [ 0, %163 ] store i8 %.sroa.0.0.i1414.off8.i.i.i, ptr %40, align 1, !noalias !99 store i8 %.sroa.0.0.i1414.off16.i.i.i, ptr %72, align 1, !noalias !99 %180 = icmp ne ptr %.val.i.i, null @@ -5504,9 +5505,13 @@ define hidden noundef i128 @_ZN4core5error5Error7type_id17hec7258941f25b3c4E.llv ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define hidden { i64, i64 } @"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17heb2fc552b5f71b35E.llvm.11658830040512789610"(i64 noundef %0, i64 %1) unnamed_addr #5 { - %3 = insertvalue { i64, i64 } poison, i64 %0, 0 - %4 = insertvalue { i64, i64 } %3, i64 %1, 1 - ret { i64, i64 } %4 + %3 = icmp eq i64 %0, -9223372036854775807 + %4 = icmp eq i64 %0, 0 + %5 = or i1 %3, %4 + %.sroa.33.0 = select i1 %5, i64 undef, i64 %1 + %6 = insertvalue { i64, i64 } poison, i64 %0, 0 + %7 = insertvalue { i64, i64 } %6, i64 %.sroa.33.0, 1 + ret { i64, i64 } %7 } ; Function Attrs: inlinehint nofree norecurse nosync nounwind nonlazybind memory(argmem: write) uwtable @@ -6084,15 +6089,19 @@ define hidden void @_ZN5alloc7raw_vec14handle_reserve17hf0112dc2ee693d5aE.llvm.1 unreachable 5: ; preds = %2 - tail call void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef %0, i64 noundef %1) #34 + %6 = icmp eq i64 %0, -9223372036854775807 + %.sroa.33.0.i = select i1 %6, i64 undef, i64 %1 + tail call void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef %0, i64 noundef %.sroa.33.0.i) #34 unreachable } ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define hidden { i64, i64 } @"_ZN5alloc7raw_vec14handle_reserve28_$u7b$$u7b$closure$u7d$$u7d$17h2e8999b151eb8973E.llvm.11658830040512789610"(i64 noundef %0, i64 %1) unnamed_addr #5 { - %3 = insertvalue { i64, i64 } poison, i64 %0, 0 - %4 = insertvalue { i64, i64 } %3, i64 %1, 1 - ret { i64, i64 } %4 + %3 = icmp eq i64 %0, 0 + %.4 = select i1 %3, i64 undef, i64 %1 + %4 = insertvalue { i64, i64 } poison, i64 %0, 0 + %5 = insertvalue { i64, i64 } %4, i64 %.4, 1 + ret { i64, i64 } %5 } ; Function Attrs: nounwind nonlazybind uwtable @@ -6128,7 +6137,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$10grow_exact1 17: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h33efe939e37523c8E.exit" %18 = icmp eq i64 %5, 0 - br i1 %18, label %_ZN5alloc7raw_vec11finish_grow17he0ba628562311a10E.exit.thread43, label %19 + br i1 %18, label %_ZN5alloc7raw_vec11finish_grow17he0ba628562311a10E.exit.thread47, label %19 19: ; preds = %17 %20 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !823 @@ -6140,17 +6149,17 @@ _ZN5alloc7raw_vec11finish_grow17he0ba628562311a10E.exit: ; preds = %13, %19 %.not = icmp eq ptr %.sroa.012.2.i.i.pn.i, null %.sink1.i.i = select i1 %.not, ptr inttoptr (i64 8 to ptr), ptr %.sroa.012.2.i.i.pn.i %22 = ptrtoint ptr %.sink1.i.i to i64 - br i1 %.not, label %_ZN5alloc7raw_vec11finish_grow17he0ba628562311a10E.exit.thread, label %_ZN5alloc7raw_vec11finish_grow17he0ba628562311a10E.exit.thread43 + br i1 %.not, label %_ZN5alloc7raw_vec11finish_grow17he0ba628562311a10E.exit.thread, label %_ZN5alloc7raw_vec11finish_grow17he0ba628562311a10E.exit.thread47 -_ZN5alloc7raw_vec11finish_grow17he0ba628562311a10E.exit.thread43: ; preds = %17, %_ZN5alloc7raw_vec11finish_grow17he0ba628562311a10E.exit - %.sink1.i.i47 = phi ptr [ %.sroa.012.2.i.i.pn.i, %_ZN5alloc7raw_vec11finish_grow17he0ba628562311a10E.exit ], [ inttoptr (i64 8 to ptr), %17 ] - store ptr %.sink1.i.i47, ptr %10, align 8 +_ZN5alloc7raw_vec11finish_grow17he0ba628562311a10E.exit.thread47: ; preds = %17, %_ZN5alloc7raw_vec11finish_grow17he0ba628562311a10E.exit + %.sink1.i.i51 = phi ptr [ %.sroa.012.2.i.i.pn.i, %_ZN5alloc7raw_vec11finish_grow17he0ba628562311a10E.exit ], [ inttoptr (i64 8 to ptr), %17 ] + store ptr %.sink1.i.i51, ptr %10, align 8 store i64 %5, ptr %0, align 8 br label %_ZN5alloc7raw_vec11finish_grow17he0ba628562311a10E.exit.thread -_ZN5alloc7raw_vec11finish_grow17he0ba628562311a10E.exit.thread: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h33efe939e37523c8E.exit", %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h33efe939e37523c8E.exit.thread", %_ZN5alloc7raw_vec11finish_grow17he0ba628562311a10E.exit, %3, %_ZN5alloc7raw_vec11finish_grow17he0ba628562311a10E.exit.thread43 - %.sroa.4.0 = phi i64 [ undef, %_ZN5alloc7raw_vec11finish_grow17he0ba628562311a10E.exit.thread43 ], [ %5, %3 ], [ %9, %_ZN5alloc7raw_vec11finish_grow17he0ba628562311a10E.exit ], [ undef, %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h33efe939e37523c8E.exit.thread" ], [ undef, %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h33efe939e37523c8E.exit" ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %_ZN5alloc7raw_vec11finish_grow17he0ba628562311a10E.exit.thread43 ], [ 0, %3 ], [ %22, %_ZN5alloc7raw_vec11finish_grow17he0ba628562311a10E.exit ], [ 0, %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h33efe939e37523c8E.exit.thread" ], [ 0, %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h33efe939e37523c8E.exit" ] +_ZN5alloc7raw_vec11finish_grow17he0ba628562311a10E.exit.thread: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h33efe939e37523c8E.exit", %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h33efe939e37523c8E.exit.thread", %_ZN5alloc7raw_vec11finish_grow17he0ba628562311a10E.exit, %3, %_ZN5alloc7raw_vec11finish_grow17he0ba628562311a10E.exit.thread47 + %.sroa.4.0 = phi i64 [ undef, %_ZN5alloc7raw_vec11finish_grow17he0ba628562311a10E.exit.thread47 ], [ %5, %3 ], [ %9, %_ZN5alloc7raw_vec11finish_grow17he0ba628562311a10E.exit ], [ undef, %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h33efe939e37523c8E.exit.thread" ], [ undef, %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h33efe939e37523c8E.exit" ] + %.sroa.0.0 = phi i64 [ -9223372036854775807, %_ZN5alloc7raw_vec11finish_grow17he0ba628562311a10E.exit.thread47 ], [ 0, %3 ], [ %22, %_ZN5alloc7raw_vec11finish_grow17he0ba628562311a10E.exit ], [ 0, %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h33efe939e37523c8E.exit.thread" ], [ 0, %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h33efe939e37523c8E.exit" ] %23 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 %24 = insertvalue { i64, i64 } %23, i64 %.sroa.4.0, 1 ret { i64, i64 } %24 @@ -7176,8 +7185,8 @@ _ZN5alloc7raw_vec11finish_grow17he0ba628562311a10E.exit.i: ; preds = %23, %17 br i1 %.not.i, label %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$10grow_exact17h5f5403010d750896E.llvm.11658830040512789610.exit.thread", label %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$10grow_exact17h5f5403010d750896E.llvm.11658830040512789610.exit" "_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$10grow_exact17h5f5403010d750896E.llvm.11658830040512789610.exit": ; preds = %21, %_ZN5alloc7raw_vec11finish_grow17he0ba628562311a10E.exit.i - %.sink1.i.i47.i = phi ptr [ %.sroa.012.2.i.i.pn.i.i, %_ZN5alloc7raw_vec11finish_grow17he0ba628562311a10E.exit.i ], [ inttoptr (i64 8 to ptr), %21 ] - store ptr %.sink1.i.i47.i, ptr %14, align 8, !alias.scope !896 + %.sink1.i.i51.i = phi ptr [ %.sroa.012.2.i.i.pn.i.i, %_ZN5alloc7raw_vec11finish_grow17he0ba628562311a10E.exit.i ], [ inttoptr (i64 8 to ptr), %21 ] + store ptr %.sink1.i.i51.i, ptr %14, align 8, !alias.scope !896 store i64 %9, ptr %0, align 8, !alias.scope !896 %.pre = sub i64 %9, %1 br label %27 @@ -7239,10 +7248,10 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h787 %18 = icmp ule i64 %17, %14 tail call void @llvm.assume(i1 %18) %19 = tail call noundef align 4 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef 4, i64 noundef %17) #36 - %.not33 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not33, ptr inttoptr (i64 4 to ptr), ptr %19 + %.not34 = icmp eq ptr %19, null + %.sink1.i = select i1 %.not34, ptr inttoptr (i64 4 to ptr), ptr %19 %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not33, label %22, label %21 + br i1 %.not34, label %22, label %21 21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" %storemerge = phi ptr [ inttoptr (i64 4 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] @@ -7301,10 +7310,10 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h851 %18 = icmp ule i64 %17, %14 tail call void @llvm.assume(i1 %18) %19 = tail call noundef align 2 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef 2, i64 noundef %17) #36 - %.not33 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not33, ptr inttoptr (i64 2 to ptr), ptr %19 + %.not34 = icmp eq ptr %19, null + %.sink1.i = select i1 %.not34, ptr inttoptr (i64 2 to ptr), ptr %19 %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not33, label %22, label %21 + br i1 %.not34, label %22, label %21 21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" %storemerge = phi ptr [ inttoptr (i64 2 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] @@ -7363,10 +7372,10 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17hb30 %18 = icmp ule i64 %17, %14 tail call void @llvm.assume(i1 %18) %19 = tail call noundef align 2 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef 2, i64 noundef %17) #36 - %.not33 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not33, ptr inttoptr (i64 2 to ptr), ptr %19 + %.not34 = icmp eq ptr %19, null + %.sink1.i = select i1 %.not34, ptr inttoptr (i64 2 to ptr), ptr %19 %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not33, label %22, label %21 + br i1 %.not34, label %22, label %21 21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" %storemerge = phi ptr [ inttoptr (i64 2 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] @@ -7421,10 +7430,10 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17hd9a "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit": ; preds = %13 %16 = tail call noundef ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %4, i64 noundef 1, i64 noundef %1) #36 - %.not32 = icmp eq ptr %16, null - %.sink1.i = select i1 %.not32, ptr inttoptr (i64 1 to ptr), ptr %16 + %.not33 = icmp eq ptr %16, null + %.sink1.i = select i1 %.not33, ptr inttoptr (i64 1 to ptr), ptr %16 %17 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not32, label %19, label %18 + br i1 %.not33, label %19, label %18 18: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" %storemerge = phi ptr [ inttoptr (i64 1 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %16, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] @@ -8871,7 +8880,7 @@ define hidden void @"_ZN3awc9responses8response23ClientResponse$LT$S$GT$8map_bod .noexc.i.i: ; preds = %13 %15 = icmp eq ptr %14, null - br i1 %15, label %.thread25.i.i, label %16 + br i1 %15, label %.thread24.i.i, label %16 16: ; preds = %.noexc.i.i %17 = invoke noundef nonnull align 8 ptr @_ZN10actix_http6header3map5Value5first17hfed213afae29d954E(ptr noundef nonnull align 8 %14) @@ -8884,7 +8893,7 @@ _ZN10actix_http6header3map9HeaderMap3get17h511f38e682323a37E.exit.i.i: ; preds = 19: ; preds = %_ZN10actix_http6header3map9HeaderMap3get17h511f38e682323a37E.exit.i.i %20 = extractvalue { ptr, i64 } %18, 0 %21 = icmp eq ptr %20, null - br i1 %21, label %.thread25.i.i, label %22 + br i1 %21, label %.thread24.i.i, label %22 22: ; preds = %19 %23 = extractvalue { ptr, i64 } %18, 1 @@ -8893,9 +8902,9 @@ _ZN10actix_http6header3map9HeaderMap3get17h511f38e682323a37E.exit.i.i: ; preds = 25: ; preds = %22 %26 = icmp eq i8 %24, 5 - br i1 %26, label %.thread25.i.i, label %"_ZN10actix_http8encoding7decoder16Decoder$LT$S$GT$12from_headers17h8ab914fca56937ddE.llvm.11658830040512789610.exit.i" + br i1 %26, label %.thread24.i.i, label %"_ZN10actix_http8encoding7decoder16Decoder$LT$S$GT$12from_headers17h8ab914fca56937ddE.llvm.11658830040512789610.exit.i" -.thread25.i.i: ; preds = %25, %19, %.noexc.i.i +.thread24.i.i: ; preds = %25, %19, %.noexc.i.i br label %"_ZN10actix_http8encoding7decoder16Decoder$LT$S$GT$12from_headers17h8ab914fca56937ddE.llvm.11658830040512789610.exit.i" 27: ; preds = %22, %_ZN10actix_http6header3map9HeaderMap3get17h511f38e682323a37E.exit.i.i, %16, %13 @@ -8910,8 +8919,8 @@ _ZN10actix_http6header3map9HeaderMap3get17h511f38e682323a37E.exit.i.i: ; preds = call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #37, !noalias !1048 unreachable -"_ZN10actix_http8encoding7decoder16Decoder$LT$S$GT$12from_headers17h8ab914fca56937ddE.llvm.11658830040512789610.exit.i": ; preds = %.thread25.i.i, %25 - %30 = phi i8 [ 0, %.thread25.i.i ], [ %24, %25 ] +"_ZN10actix_http8encoding7decoder16Decoder$LT$S$GT$12from_headers17h8ab914fca56937ddE.llvm.11658830040512789610.exit.i": ; preds = %.thread24.i.i, %25 + %30 = phi i8 [ 0, %.thread24.i.i ], [ %24, %25 ] call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4), !noalias !1049 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(24) %9, i64 24, i1 false), !noalias !1051 invoke void @"_ZN10actix_http8encoding7decoder16Decoder$LT$S$GT$3new17h73b65a18262824adE.llvm.11658830040512789610"(ptr noalias nocapture noundef nonnull sret({ { i64, [2 x i64] }, { i64, [1 x i64] }, ptr, i8, [7 x i8] }) align 8 dereferenceable(56) %5, ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %4, i8 noundef %30) @@ -9438,7 +9447,7 @@ define hidden void @"_ZN79_$LT$awc..sender..SendClientRequest$u20$as$u20$core..f .noexc.i: ; preds = %10 %12 = icmp eq ptr %11, null - br i1 %12, label %.thread25.i, label %13 + br i1 %12, label %.thread24.i, label %13 13: ; preds = %.noexc.i %14 = invoke noundef nonnull align 8 ptr @_ZN10actix_http6header3map5Value5first17hfed213afae29d954E(ptr noundef nonnull align 8 %11) @@ -9451,7 +9460,7 @@ _ZN10actix_http6header3map9HeaderMap3get17h511f38e682323a37E.exit.i: ; preds = % 16: ; preds = %_ZN10actix_http6header3map9HeaderMap3get17h511f38e682323a37E.exit.i %17 = extractvalue { ptr, i64 } %15, 0 %18 = icmp eq ptr %17, null - br i1 %18, label %.thread25.i, label %19 + br i1 %18, label %.thread24.i, label %19 19: ; preds = %16 %20 = extractvalue { ptr, i64 } %15, 1 @@ -9460,9 +9469,9 @@ _ZN10actix_http6header3map9HeaderMap3get17h511f38e682323a37E.exit.i: ; preds = % 22: ; preds = %19 %23 = icmp eq i8 %21, 5 - br i1 %23, label %.thread25.i, label %"_ZN10actix_http8encoding7decoder16Decoder$LT$S$GT$12from_headers17h8ab914fca56937ddE.llvm.11658830040512789610.exit" + br i1 %23, label %.thread24.i, label %"_ZN10actix_http8encoding7decoder16Decoder$LT$S$GT$12from_headers17h8ab914fca56937ddE.llvm.11658830040512789610.exit" -.thread25.i: ; preds = %22, %16, %.noexc.i +.thread24.i: ; preds = %22, %16, %.noexc.i br label %"_ZN10actix_http8encoding7decoder16Decoder$LT$S$GT$12from_headers17h8ab914fca56937ddE.llvm.11658830040512789610.exit" 24: ; preds = %25 @@ -9480,8 +9489,8 @@ _ZN10actix_http6header3map9HeaderMap3get17h511f38e682323a37E.exit.i: ; preds = % tail call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #37, !noalias !1101 unreachable -"_ZN10actix_http8encoding7decoder16Decoder$LT$S$GT$12from_headers17h8ab914fca56937ddE.llvm.11658830040512789610.exit": ; preds = %22, %.thread25.i - %28 = phi i8 [ 0, %.thread25.i ], [ %21, %22 ] +"_ZN10actix_http8encoding7decoder16Decoder$LT$S$GT$12from_headers17h8ab914fca56937ddE.llvm.11658830040512789610.exit": ; preds = %22, %.thread24.i + %28 = phi i8 [ 0, %.thread24.i ], [ %21, %22 ] call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5), !noalias !1102 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(24) %3, i64 24, i1 false), !noalias !1104 call void @"_ZN10actix_http8encoding7decoder16Decoder$LT$S$GT$3new17h73b65a18262824adE.llvm.11658830040512789610"(ptr noalias nocapture noundef nonnull sret({ { i64, [2 x i64] }, { i64, [1 x i64] }, ptr, i8, [7 x i8] }) align 8 dereferenceable(56) %6, ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %5, i8 noundef %28), !noalias !1105 diff --git a/bench/actix-rs/optimized/5b5b50c31lqwwnuq.ll b/bench/actix-rs/optimized/5b5b50c31lqwwnuq.ll index 582a02c2a6c..66bc80415c0 100644 --- a/bench/actix-rs/optimized/5b5b50c31lqwwnuq.ll +++ b/bench/actix-rs/optimized/5b5b50c31lqwwnuq.ll @@ -1474,8 +1474,8 @@ define hidden void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec.. call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8), !noalias !443 call void @"_ZN112_$LT$regex_automata..util..captures..GroupInfoPatternNames$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he31d759131bfea2fE"(ptr noalias nocapture noundef nonnull sret({ i64, [2 x i64] }) align 8 dereferenceable(24) %8, ptr noalias noundef nonnull align 8 dereferenceable(16) %10) %12 = load i64, ptr %8, align 8, !range !278, !noalias !443, !noundef !7 - %.not10.i.i.i = icmp eq i64 %12, 0 - br i1 %.not10.i.i.i, label %.loopexit18, label %.lr.ph.i.i.i + %.not12.i.i.i = icmp eq i64 %12, 0 + br i1 %.not12.i.i.i, label %.loopexit19, label %.lr.ph.i.i.i .lr.ph.i.i.i: ; preds = %3 %13 = getelementptr inbounds i8, ptr %8, i64 8 @@ -1500,9 +1500,9 @@ define hidden void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec.. call void @"_ZN112_$LT$regex_automata..util..captures..GroupInfoPatternNames$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he31d759131bfea2fE"(ptr noalias nocapture noundef nonnull sret({ i64, [2 x i64] }) align 8 dereferenceable(24) %8, ptr noalias noundef nonnull align 8 dereferenceable(16) %10) %22 = load i64, ptr %8, align 8, !range !278, !noalias !443, !noundef !7 %.not.i.i.i = icmp eq i64 %22, 0 - br i1 %.not.i.i.i, label %.loopexit18, label %15 + br i1 %.not.i.i.i, label %.loopexit19, label %15 -.loopexit18: ; preds = %"_ZN4core4iter6traits8iterator8Iterator8find_map5check28_$u7b$$u7b$closure$u7d$$u7d$17h93d53a1f2583ed43E.exit.thread.i.i.i", %3 +.loopexit19: ; preds = %"_ZN4core4iter6traits8iterator8Iterator8find_map5check28_$u7b$$u7b$closure$u7d$$u7d$17h93d53a1f2583ed43E.exit.thread.i.i.i", %3 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8), !noalias !443 store i64 0, ptr %0, align 8 %23 = getelementptr inbounds i8, ptr %0, i64 8 @@ -1542,8 +1542,8 @@ define hidden void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec.. .noexc: ; preds = %25 %33 = load i64, ptr %5, align 8, !range !278, !noalias !462, !noundef !7 - %.not10.i.i.i11.i.i = icmp eq i64 %33, 0 - br i1 %.not10.i.i.i11.i.i, label %.loopexit13, label %.lr.ph.i.i.i.lr.ph.i.i + %.not12.i.i.i11.i.i = icmp eq i64 %33, 0 + br i1 %.not12.i.i.i11.i.i, label %.loopexit14, label %.lr.ph.i.i.i.lr.ph.i.i .lr.ph.i.i.i.lr.ph.i.i: ; preds = %.noexc %34 = getelementptr inbounds i8, ptr %5, i64 8 @@ -1574,7 +1574,7 @@ define hidden void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec.. .noexc7: ; preds = %"_ZN4core4iter6traits8iterator8Iterator8find_map5check28_$u7b$$u7b$closure$u7d$$u7d$17h93d53a1f2583ed43E.exit.thread.i.i.i.i.i" %42 = load i64, ptr %5, align 8, !range !278, !noalias !462, !noundef !7 %.not.i.i.i.i.i = icmp eq i64 %42, 0 - br i1 %.not.i.i.i.i.i, label %.loopexit13, label %.lr.ph.i.i.i.i.i.backedge + br i1 %.not.i.i.i.i.i, label %.loopexit14, label %.lr.ph.i.i.i.i.i.backedge .lr.ph.i.i.i.i.i.backedge: ; preds = %.noexc7, %.noexc10 br label %.lr.ph.i.i.i.i.i @@ -1617,10 +1617,10 @@ define hidden void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec.. .noexc10: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hbe7b359b27096932E.exit.i.i" %57 = load i64, ptr %5, align 8, !range !278, !noalias !462, !noundef !7 - %.not10.i.i.i.i.i = icmp eq i64 %57, 0 - br i1 %.not10.i.i.i.i.i, label %.loopexit13, label %.lr.ph.i.i.i.i.i.backedge + %.not12.i.i.i.i.i = icmp eq i64 %57, 0 + br i1 %.not12.i.i.i.i.i, label %.loopexit14, label %.lr.ph.i.i.i.i.i.backedge -58: ; preds = %.loopexit13, %.loopexit18 +58: ; preds = %.loopexit14, %.loopexit19 ret void .loopexit: ; preds = %"_ZN4core4iter6traits8iterator8Iterator8find_map5check28_$u7b$$u7b$closure$u7d$$u7d$17h93d53a1f2583ed43E.exit.i.i.i.i.i", %"_ZN4core4iter6traits8iterator8Iterator8find_map5check28_$u7b$$u7b$closure$u7d$$u7d$17h93d53a1f2583ed43E.exit.thread.i.i.i.i.i" @@ -1629,21 +1629,21 @@ define hidden void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec.. br label %.loopexit.split-lp .loopexit.split-lp.loopexit: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hbe7b359b27096932E.exit.i.i", %52, %48 - %lpad.loopexit14 = landingpad { ptr, i32 } + %lpad.loopexit15 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp .loopexit.split-lp.loopexit.split-lp: ; preds = %25 - %lpad.loopexit.split-lp15 = landingpad { ptr, i32 } + %lpad.loopexit.split-lp16 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp .loopexit.split-lp: ; preds = %.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp, %.loopexit - %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit14, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp15, %.loopexit.split-lp.loopexit.split-lp ] + %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit15, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp16, %.loopexit.split-lp.loopexit.split-lp ] invoke void @"_ZN4core3ptr51drop_in_place$LT$alloc..vec..Vec$LT$$RF$str$GT$$GT$17h35833acaf56d7ddeE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %9) #15 to label %61 unwind label %59 -.loopexit13: ; preds = %.noexc10, %.noexc7, %.noexc +.loopexit14: ; preds = %.noexc10, %.noexc7, %.noexc call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5), !noalias !462 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6), !noalias !455 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %9, i64 24, i1 false) @@ -2860,11 +2860,11 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t br i1 %12, label %.thread, label %.lr.ph .lr.ph: ; preds = %3, %16 - %.sroa.10.028 = phi i64 [ %13, %16 ], [ %7, %3 ] - %.sroa.013.027 = phi ptr [ %18, %16 ], [ %1, %3 ] - %.sroa.7.026 = phi i64 [ %17, %16 ], [ 0, %3 ] - %13 = add i64 %.sroa.10.028, -1 - %14 = icmp eq ptr %.sroa.013.027, %11 + %.sroa.10.029 = phi i64 [ %13, %16 ], [ %7, %3 ] + %.sroa.013.028 = phi ptr [ %18, %16 ], [ %1, %3 ] + %.sroa.7.027 = phi i64 [ %17, %16 ], [ 0, %3 ] + %13 = add i64 %.sroa.10.029, -1 + %14 = icmp eq ptr %.sroa.013.028, %11 br i1 %14, label %.thread, label %15 .thread: ; preds = %16, %.lr.ph, %3 @@ -2874,13 +2874,13 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t ret void 15: ; preds = %.lr.ph - invoke void @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..clone..Clone$GT$5clone17hf54273bb14505f61E"(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr, {} }, i64 } }) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %.sroa.013.027) + invoke void @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..clone..Clone$GT$5clone17hf54273bb14505f61E"(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr, {} }, i64 } }) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %.sroa.013.028) to label %16 unwind label %23 16: ; preds = %15 - %17 = add nuw nsw i64 %.sroa.7.026, 1 - %18 = getelementptr inbounds i8, ptr %.sroa.013.027, i64 24 - %19 = getelementptr inbounds [0 x { [3 x i64] }], ptr %8, i64 0, i64 %.sroa.7.026 + %17 = add nuw nsw i64 %.sroa.7.027, 1 + %18 = getelementptr inbounds i8, ptr %.sroa.013.028, i64 24 + %19 = getelementptr inbounds [0 x { [3 x i64] }], ptr %8, i64 0, i64 %.sroa.7.027 call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef nonnull align 8 dereferenceable(24) %4, i64 24, i1 false) %20 = icmp eq i64 %13, 0 br i1 %20, label %.thread, label %.lr.ph @@ -2894,7 +2894,7 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t 23: ; preds = %15 %lpad.loopexit = landingpad { ptr, i32 } cleanup - store i64 %.sroa.7.026, ptr %10, align 8 + store i64 %.sroa.7.027, ptr %10, align 8 invoke void @"_ZN4core3ptr65drop_in_place$LT$alloc..vec..Vec$LT$alloc..string..String$GT$$GT$17h790a70987464e66cE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %5) #15 to label %24 unwind label %21 @@ -3032,21 +3032,21 @@ define hidden void @"_ZN67_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..clo br i1 %15, label %"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6to_vec17h46bc459485b030feE.llvm.13350262499926924963.exit", label %.lr.ph.i .lr.ph.i: ; preds = %2, %19 - %.sroa.10.028.i = phi i64 [ %16, %19 ], [ %10, %2 ] - %.sroa.013.027.i = phi ptr [ %21, %19 ], [ %7, %2 ] - %.sroa.7.026.i = phi i64 [ %20, %19 ], [ 0, %2 ] - %16 = add i64 %.sroa.10.028.i, -1 - %17 = icmp eq ptr %.sroa.013.027.i, %14 + %.sroa.10.029.i = phi i64 [ %16, %19 ], [ %10, %2 ] + %.sroa.013.028.i = phi ptr [ %21, %19 ], [ %7, %2 ] + %.sroa.7.027.i = phi i64 [ %20, %19 ], [ 0, %2 ] + %16 = add i64 %.sroa.10.029.i, -1 + %17 = icmp eq ptr %.sroa.013.028.i, %14 br i1 %17, label %"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6to_vec17h46bc459485b030feE.llvm.13350262499926924963.exit", label %18 18: ; preds = %.lr.ph.i - invoke void @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..clone..Clone$GT$5clone17hf54273bb14505f61E"(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr, {} }, i64 } }) align 8 dereferenceable(24) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %.sroa.013.027.i) + invoke void @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..clone..Clone$GT$5clone17hf54273bb14505f61E"(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr, {} }, i64 } }) align 8 dereferenceable(24) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %.sroa.013.028.i) to label %19 unwind label %26, !noalias !701 19: ; preds = %18 - %20 = add nuw nsw i64 %.sroa.7.026.i, 1 - %21 = getelementptr inbounds i8, ptr %.sroa.013.027.i, i64 24 - %22 = getelementptr inbounds [0 x { [3 x i64] }], ptr %11, i64 0, i64 %.sroa.7.026.i + %20 = add nuw nsw i64 %.sroa.7.027.i, 1 + %21 = getelementptr inbounds i8, ptr %.sroa.013.028.i, i64 24 + %22 = getelementptr inbounds [0 x { [3 x i64] }], ptr %11, i64 0, i64 %.sroa.7.027.i call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr noundef nonnull align 8 dereferenceable(24) %3, i64 24, i1 false) %23 = icmp eq i64 %16, 0 br i1 %23, label %"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6to_vec17h46bc459485b030feE.llvm.13350262499926924963.exit", label %.lr.ph.i @@ -3060,7 +3060,7 @@ define hidden void @"_ZN67_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..clo 26: ; preds = %18 %lpad.loopexit.i = landingpad { ptr, i32 } cleanup - store i64 %.sroa.7.026.i, ptr %13, align 8, !noalias !697 + store i64 %.sroa.7.027.i, ptr %13, align 8, !noalias !697 invoke void @"_ZN4core3ptr65drop_in_place$LT$alloc..vec..Vec$LT$alloc..string..String$GT$$GT$17h790a70987464e66cE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %4) #15 to label %27 unwind label %24, !noalias !701 diff --git a/bench/actix-rs/optimized/5d5zav44kcqbb5vr.ll b/bench/actix-rs/optimized/5d5zav44kcqbb5vr.ll index c5f97b47a59..73af7e3f903 100644 --- a/bench/actix-rs/optimized/5d5zav44kcqbb5vr.ll +++ b/bench/actix-rs/optimized/5d5zav44kcqbb5vr.ll @@ -377,13 +377,13 @@ define { i64, i64 } @_ZN12actix_router8resource11ResourceDef10find_match17h3b3ba %8 = alloca { { i64, [1 x i64] }, { { { i64, ptr, {} }, i64 }, { i32, [1 x i32] }, ptr }, { ptr, i64 } }, align 8 %9 = getelementptr inbounds i8, ptr %0, i64 32 %10 = load i64, ptr %9, align 8, !range !10, !noundef !3 - switch i64 %10, label %default.unreachable39 [ + switch i64 %10, label %default.unreachable38 [ i64 0, label %11 i64 1, label %33 i64 2, label %37 ] -default.unreachable39: ; preds = %3 +default.unreachable38: ; preds = %3 unreachable 11: ; preds = %3 @@ -394,15 +394,15 @@ default.unreachable39: ; preds = %3 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) %16 = tail call { ptr, i64 } @"_ZN55_$LT$$RF$str$u20$as$u20$core..str..pattern..Pattern$GT$15strip_prefix_of17h4f1529533e466d24E"(ptr nonnull align 1 %13, i64 %15, ptr align 1 %1, i64 %2) %17 = extractvalue { ptr, i64 } %16, 0 - %18 = extractvalue { ptr, i64 } %16, 1 - %19 = icmp eq ptr %17, null - br i1 %19, label %_ZN12actix_router8resource11ResourceDef12static_match17h3349c34bd81897fbE.exit, label %20 + %18 = icmp eq ptr %17, null + %19 = extractvalue { ptr, i64 } %16, 1 + br i1 %18, label %_ZN12actix_router8resource11ResourceDef12static_match17h3349c34bd81897fbE.exit, label %20 20: ; preds = %11 %21 = getelementptr inbounds i8, ptr %0, i64 146 %22 = load i8, ptr %21, align 2, !range !8, !noundef !3 %23 = trunc nuw i8 %22 to i1 - %24 = icmp eq i64 %18, 0 + %24 = icmp eq i64 %19, 0 br i1 %23, label %26, label %25 25: ; preds = %20 @@ -419,7 +419,7 @@ default.unreachable39: ; preds = %3 %29 = call { ptr, i64 } @_ZN4core4char7methods15encode_utf8_raw17hffe563a39c372372E(i32 47, ptr nonnull align 1 %4, i64 4) %30 = extractvalue { ptr, i64 } %29, 0 %31 = extractvalue { ptr, i64 } %29, 1 - %32 = call zeroext i1 @"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h01b27e6e42ee21e8E"(ptr nonnull align 1 %17, i64 %18, ptr align 1 %30, i64 %31) + %32 = call zeroext i1 @"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h01b27e6e42ee21e8E"(ptr nonnull align 1 %17, i64 %19, ptr align 1 %30, i64 %31) br i1 %32, label %_ZN12actix_router8resource11ResourceDef12static_match17h3349c34bd81897fbE.exit, label %27 _ZN12actix_router8resource11ResourceDef12static_match17h3349c34bd81897fbE.exit: ; preds = %11, %25, %26, %27, %28 @@ -438,8 +438,8 @@ _ZN12actix_router8resource11ResourceDef12static_match17h3349c34bd81897fbE.exit: %38 = getelementptr inbounds i8, ptr %0, i64 40 %39 = tail call { i64, i64 } @_ZN12actix_router9regex_set8RegexSet15first_match_idx17hf7630eea3412d5b6E(ptr nonnull align 8 %38, ptr align 1 %1, i64 %2) %40 = extractvalue { i64, i64 } %39, 0 - %41 = extractvalue { i64, i64 } %39, 1 %.not = icmp eq i64 %40, 0 + %41 = extractvalue { i64, i64 } %39, 1 br i1 %.not, label %.thread, label %53 .thread: ; preds = %57, %33, %37, %68, %48, %_ZN12actix_router8resource11ResourceDef12static_match17h3349c34bd81897fbE.exit @@ -522,15 +522,15 @@ define { i64, i64 } @_ZN12actix_router8resource11ResourceDef12static_match17h334 %6 = alloca [4 x i8], align 4 %7 = tail call { ptr, i64 } @"_ZN55_$LT$$RF$str$u20$as$u20$core..str..pattern..Pattern$GT$15strip_prefix_of17h4f1529533e466d24E"(ptr align 1 %1, i64 %2, ptr align 1 %3, i64 %4) %8 = extractvalue { ptr, i64 } %7, 0 - %9 = extractvalue { ptr, i64 } %7, 1 - %10 = icmp eq ptr %8, null - br i1 %10, label %19, label %11 + %9 = icmp eq ptr %8, null + %10 = extractvalue { ptr, i64 } %7, 1 + br i1 %9, label %19, label %11 11: ; preds = %5 %12 = getelementptr inbounds i8, ptr %0, i64 146 %13 = load i8, ptr %12, align 2, !range !8, !noundef !3 %14 = trunc nuw i8 %13 to i1 - %15 = icmp eq i64 %9, 0 + %15 = icmp eq i64 %10, 0 br i1 %14, label %17, label %16 16: ; preds = %11 @@ -543,9 +543,10 @@ define { i64, i64 } @_ZN12actix_router8resource11ResourceDef12static_match17h334 br label %19 19: ; preds = %17, %22, %16, %5, %18 + %.sroa.5.0 = phi i64 [ undef, %18 ], [ undef, %5 ], [ %2, %16 ], [ %2, %22 ], [ %2, %17 ] %.sroa.0.0 = phi i64 [ 0, %18 ], [ 0, %5 ], [ 1, %16 ], [ 1, %22 ], [ 1, %17 ] %20 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %21 = insertvalue { i64, i64 } %20, i64 %2, 1 + %21 = insertvalue { i64, i64 } %20, i64 %.sroa.5.0, 1 ret { i64, i64 } %21 22: ; preds = %17 @@ -553,7 +554,7 @@ define { i64, i64 } @_ZN12actix_router8resource11ResourceDef12static_match17h334 %23 = call { ptr, i64 } @_ZN4core4char7methods15encode_utf8_raw17hffe563a39c372372E(i32 47, ptr nonnull align 1 %6, i64 4) %24 = extractvalue { ptr, i64 } %23, 0 %25 = extractvalue { ptr, i64 } %23, 1 - %26 = call zeroext i1 @"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h01b27e6e42ee21e8E"(ptr nonnull align 1 %8, i64 %9, ptr align 1 %24, i64 %25) + %26 = call zeroext i1 @"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h01b27e6e42ee21e8E"(ptr nonnull align 1 %8, i64 %10, ptr align 1 %24, i64 %25) br i1 %26, label %19, label %18 } diff --git a/bench/actix-rs/optimized/bcivtj360kt2ve.ll b/bench/actix-rs/optimized/bcivtj360kt2ve.ll index cd390b9c601..7fa3f9455f0 100644 --- a/bench/actix-rs/optimized/bcivtj360kt2ve.ll +++ b/bench/actix-rs/optimized/bcivtj360kt2ve.ll @@ -259,31 +259,31 @@ define void @"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$G 42: ; preds = %37 call void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17he9d82e784068374eE"(ptr nonnull sret({ i64, { i64, [1 x i64] } }) align 8 %5, ptr nonnull align 8 %1) - %.pre57 = load i64, ptr %5, align 8 - %.phi.trans.insert58 = getelementptr inbounds i8, ptr %5, i64 8 - %.pre59 = load i64, ptr %.phi.trans.insert58, align 8, !range !5 - %.phi.trans.insert60 = getelementptr inbounds i8, ptr %5, i64 16 - %.pre61 = load i64, ptr %.phi.trans.insert60, align 8 - %43 = icmp eq i64 %.pre59, 0 + %.pre59 = load i64, ptr %5, align 8 + %.phi.trans.insert60 = getelementptr inbounds i8, ptr %5, i64 8 + %.pre61 = load i64, ptr %.phi.trans.insert60, align 8, !range !5 + %.phi.trans.insert62 = getelementptr inbounds i8, ptr %5, i64 16 + %.pre63 = load i64, ptr %.phi.trans.insert62, align 8 + %43 = icmp eq i64 %.pre61, 0 br label %44 44: ; preds = %42, %39 - %45 = phi i64 [ %.pre61, %42 ], [ 0, %39 ] + %45 = phi i64 [ %.pre63, %42 ], [ 0, %39 ] %.not49 = phi i1 [ %43, %42 ], [ false, %39 ] - %46 = phi i64 [ %.pre57, %42 ], [ 0, %39 ] + %46 = phi i64 [ %.pre59, %42 ], [ 0, %39 ] %47 = call i64 @"_ZN4core3num23_$LT$impl$u20$usize$GT$14saturating_mul17h28c9473e63c2df9bE"(i64 %46, i64 %32) %48 = call i64 @llvm.uadd.sat.i64(i64 %47, i64 %29) %.not = icmp eq i64 %17, 0 %.not48 = icmp eq i64 %26, 0 - %or.cond50 = or i1 %.not, %.not48 - br i1 %or.cond50, label %61, label %49 + %or.cond53 = or i1 %.not, %.not48 + br i1 %or.cond53, label %61, label %49 49: ; preds = %44 %50 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %19, i64 %28) - %51 = extractvalue { i64, i1 } %50, 0 - %52 = extractvalue { i64, i1 } %50, 1 - %or.cond51 = or i1 %52, %.not49 - br i1 %or.cond51, label %61, label %53 + %51 = extractvalue { i64, i1 } %50, 1 + %52 = extractvalue { i64, i1 } %50, 0 + %or.cond54 = or i1 %51, %.not49 + br i1 %or.cond54, label %61, label %53 53: ; preds = %49 %54 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %32, i64 %45) @@ -292,15 +292,15 @@ define void @"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$G 56: ; preds = %53 %57 = extractvalue { i64, i1 } %54, 0 - %58 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %51, i64 %57) - %59 = extractvalue { i64, i1 } %58, 0 - %60 = extractvalue { i64, i1 } %58, 1 - %not.53 = xor i1 %60, true - %spec.select52 = zext i1 %not.53 to i64 + %58 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %52, i64 %57) + %59 = extractvalue { i64, i1 } %58, 1 + %60 = extractvalue { i64, i1 } %58, 0 + %not.55 = xor i1 %59, true + %spec.select52 = zext i1 %not.55 to i64 br label %61 61: ; preds = %56, %53, %49, %44 - %.sroa.8.0 = phi i64 [ undef, %44 ], [ undef, %49 ], [ undef, %53 ], [ %59, %56 ] + %.sroa.8.0 = phi i64 [ undef, %44 ], [ undef, %49 ], [ undef, %53 ], [ %60, %56 ] %.sroa.019.0 = phi i64 [ 0, %44 ], [ 0, %49 ], [ 0, %53 ], [ %spec.select52, %56 ] store i64 %48, ptr %0, align 8 %62 = getelementptr inbounds i8, ptr %0, i64 8 @@ -308,9 +308,9 @@ define void @"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$G br label %63 63: ; preds = %74, %75, %61 - %.sink63 = phi i64 [ 8, %74 ], [ 16, %75 ], [ 16, %61 ] - %.sink = phi i64 [ 0, %74 ], [ %77, %75 ], [ %.sroa.8.0, %61 ] - %64 = getelementptr inbounds i8, ptr %0, i64 %.sink63 + %.sink65 = phi i64 [ 8, %74 ], [ 16, %75 ], [ 16, %61 ] + %.sink = phi i64 [ 0, %74 ], [ %78, %75 ], [ %.sroa.8.0, %61 ] + %64 = getelementptr inbounds i8, ptr %0, i64 %.sink65 store i64 %.sink, ptr %64, align 8 ret void @@ -318,13 +318,13 @@ define void @"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$G call void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17he9d82e784068374eE"(ptr nonnull sret({ i64, { i64, [1 x i64] } }) align 8 %4, ptr nonnull align 8 %1) %.pre = load i64, ptr %4, align 8 %.phi.trans.insert = getelementptr inbounds i8, ptr %4, i64 8 - %.pre54 = load i64, ptr %.phi.trans.insert, align 8, !range !5 - %.phi.trans.insert55 = getelementptr inbounds i8, ptr %4, i64 16 - %.pre56 = load i64, ptr %.phi.trans.insert55, align 8 + %.pre56 = load i64, ptr %.phi.trans.insert, align 8, !range !5 + %.phi.trans.insert57 = getelementptr inbounds i8, ptr %4, i64 16 + %.pre58 = load i64, ptr %.phi.trans.insert57, align 8 %66 = icmp eq i64 %.pre, 0 - %67 = icmp ne i64 %.pre54, 0 + %67 = icmp ne i64 %.pre56, 0 %68 = and i1 %66, %67 - %69 = icmp eq i64 %.pre56, 0 + %69 = icmp eq i64 %.pre58, 0 br label %70 70: ; preds = %38, %65 @@ -343,13 +343,13 @@ define void @"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$G 75: ; preds = %70 %76 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %19, i64 %28) - %77 = extractvalue { i64, i1 } %76, 0 - %78 = extractvalue { i64, i1 } %76, 1 - %not. = xor i1 %78, true - %. = zext i1 %not. to i64 + %77 = extractvalue { i64, i1 } %76, 1 + %78 = extractvalue { i64, i1 } %76, 0 + %not. = xor i1 %77, true + %.sroa.038.0 = zext i1 %not. to i64 store i64 %29, ptr %0, align 8 %79 = getelementptr inbounds i8, ptr %0, i64 8 - store i64 %., ptr %79, align 8 + store i64 %.sroa.038.0, ptr %79, align 8 br label %63 } diff --git a/bench/actix-rs/optimized/fpsycltpd003ini.ll b/bench/actix-rs/optimized/fpsycltpd003ini.ll index 2a4ab38c563..d36efbc12ac 100644 --- a/bench/actix-rs/optimized/fpsycltpd003ini.ll +++ b/bench/actix-rs/optimized/fpsycltpd003ini.ll @@ -60,8 +60,8 @@ define void @_ZN12actix_router6quoter6Quoter7requote17h0f7b2ad503a8c37dE(ptr noc %6 = alloca { { ptr, i64 }, { ptr, i64 } }, align 8 %7 = alloca { { i64, ptr, {} }, i64 }, align 8 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) - %.not.i1172.not = icmp eq i64 %3, 0 - br i1 %.not.i1172.not, label %._crit_edge, label %.lr.ph + %.not.i1174.not = icmp eq i64 %3, 0 + br i1 %.not.i1174.not, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %4 %8 = icmp ne ptr %2, null @@ -71,24 +71,24 @@ define void @_ZN12actix_router6quoter6Quoter7requote17h0f7b2ad503a8c37dE(ptr noc %12 = icmp ne ptr %1, null br label %13 -13: ; preds = %.lr.ph, %.backedge58 - %.sroa.01.0.i1073 = phi i64 [ 0, %.lr.ph ], [ %14, %.backedge58 ] - %14 = call i64 @"_ZN49_$LT$usize$u20$as$u20$core..iter..range..Step$GT$17forward_unchecked17ha0c0a32dac252f31E"(i64 %.sroa.01.0.i1073, i64 1) +13: ; preds = %.lr.ph, %.backedge60 + %.sroa.01.0.i1075 = phi i64 [ 0, %.lr.ph ], [ %14, %.backedge60 ] + %14 = call i64 @"_ZN49_$LT$usize$u20$as$u20$core..iter..range..Step$GT$17forward_unchecked17ha0c0a32dac252f31E"(i64 %.sroa.01.0.i1075, i64 1) call void @llvm.assume(i1 %8) - call void @"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8split_at17h5a5857dd9afe3f25E"(ptr nonnull sret({ { ptr, i64 }, { ptr, i64 } }) align 8 %5, ptr nonnull align 1 %2, i64 %3, i64 %.sroa.01.0.i1073, ptr nonnull align 8 @anon.4f8d80af8df40338868d006e3e6bb169.2) + call void @"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8split_at17h5a5857dd9afe3f25E"(ptr nonnull sret({ { ptr, i64 }, { ptr, i64 } }) align 8 %5, ptr nonnull align 1 %2, i64 %3, i64 %.sroa.01.0.i1075, ptr nonnull align 8 @anon.4f8d80af8df40338868d006e3e6bb169.2) %15 = load ptr, ptr %9, align 8, !nonnull !3, !align !5, !noundef !3 %16 = load i64, ptr %10, align 8, !noundef !3 %17 = icmp ugt i64 %16, 2 - br i1 %17, label %18, label %.backedge58 + br i1 %17, label %18, label %.backedge60 -.backedge58: ; preds = %13, %18, %_ZN12actix_router6quoter16hex_pair_to_char17hb687a94a0395628fE.exit +.backedge60: ; preds = %13, %18, %_ZN12actix_router6quoter16hex_pair_to_char17hb687a94a0395628fE.exit %.not.i11 = icmp ult i64 %14, %3 br i1 %.not.i11, label %13, label %._crit_edge 18: ; preds = %13 %19 = load i8, ptr %15, align 1, !noundef !3 %20 = icmp eq i8 %19, 37 - br i1 %20, label %21, label %.backedge58 + br i1 %20, label %21, label %.backedge60 21: ; preds = %18 %22 = load ptr, ptr %5, align 8, !nonnull !3, !align !5, !noundef !3 @@ -100,32 +100,32 @@ define void @_ZN12actix_router6quoter6Quoter7requote17h0f7b2ad503a8c37dE(ptr noc %28 = zext i8 %25 to i32 %29 = call { i32, i32 } @"_ZN4core4char7methods22_$LT$impl$u20$char$GT$8to_digit17ha4e4ecd6ff821e97E"(i32 %28, i32 16) %30 = extractvalue { i32, i32 } %29, 0 - %31 = extractvalue { i32, i32 } %29, 1 %.not.i16 = icmp eq i32 %30, 0 - br i1 %.not.i16, label %_ZN12actix_router6quoter16hex_pair_to_char17hb687a94a0395628fE.exit, label %32 - -32: ; preds = %21 - %33 = zext i8 %27 to i32 - %34 = call { i32, i32 } @"_ZN4core4char7methods22_$LT$impl$u20$char$GT$8to_digit17ha4e4ecd6ff821e97E"(i32 %33, i32 16) - %35 = extractvalue { i32, i32 } %34, 0 - %.not7.i = icmp eq i32 %35, 0 - br i1 %.not7.i, label %_ZN12actix_router6quoter16hex_pair_to_char17hb687a94a0395628fE.exit, label %36 - -36: ; preds = %32 - %37 = extractvalue { i32, i32 } %34, 1 - %38 = trunc i32 %31 to i8 - %39 = shl i8 %38, 4 - %40 = trunc i32 %37 to i8 - %41 = or i8 %39, %40 + %31 = extractvalue { i32, i32 } %29, 1 + %32 = trunc i32 %31 to i8 + %33 = shl i8 %32, 4 + br i1 %.not.i16, label %_ZN12actix_router6quoter16hex_pair_to_char17hb687a94a0395628fE.exit, label %34 + +34: ; preds = %21 + %35 = zext i8 %27 to i32 + %36 = call { i32, i32 } @"_ZN4core4char7methods22_$LT$impl$u20$char$GT$8to_digit17ha4e4ecd6ff821e97E"(i32 %35, i32 16) + %37 = extractvalue { i32, i32 } %36, 0 + %.not7.i = icmp eq i32 %37, 0 + br i1 %.not7.i, label %_ZN12actix_router6quoter16hex_pair_to_char17hb687a94a0395628fE.exit, label %38 + +38: ; preds = %34 + %39 = extractvalue { i32, i32 } %36, 1 + %40 = trunc i32 %39 to i8 + %41 = or i8 %33, %40 br label %_ZN12actix_router6quoter16hex_pair_to_char17hb687a94a0395628fE.exit -_ZN12actix_router6quoter16hex_pair_to_char17hb687a94a0395628fE.exit: ; preds = %21, %32, %36 - %.sroa.4.0.i = phi i8 [ %41, %36 ], [ undef, %21 ], [ undef, %32 ] - %.sroa.0.0.i = phi i1 [ true, %36 ], [ false, %21 ], [ false, %32 ] +_ZN12actix_router6quoter16hex_pair_to_char17hb687a94a0395628fE.exit: ; preds = %21, %34, %38 + %.sroa.4.0.i = phi i8 [ %41, %38 ], [ undef, %21 ], [ undef, %34 ] + %.sroa.0.0.i = phi i1 [ true, %38 ], [ false, %21 ], [ false, %34 ] call void @llvm.assume(i1 %12) %42 = call { i1, i8 } @"_ZN4core6option15Option$LT$T$GT$6filter17h052c315d049a3117E"(i1 zeroext %.sroa.0.0.i, i8 %.sroa.4.0.i, ptr nonnull align 1 %1) %43 = extractvalue { i1, i8 } %42, 0 - br i1 %43, label %44, label %.backedge58 + br i1 %43, label %44, label %.backedge60 44: ; preds = %_ZN12actix_router6quoter16hex_pair_to_char17hb687a94a0395628fE.exit call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) @@ -140,28 +140,28 @@ _ZN12actix_router6quoter16hex_pair_to_char17hb687a94a0395628fE.exit: ; preds = % invoke void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$17extend_from_slice17h291d18f3299bf193E"(ptr nonnull align 8 %7, ptr nonnull align 1 %22, i64 %23) to label %50 unwind label %.loopexit.split-lp.loopexit.split-lp -._crit_edge: ; preds = %.backedge58, %4 +._crit_edge: ; preds = %.backedge60, %4 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) store i64 -9223372036854775808, ptr %0, align 8 br label %93 -.loopexit: ; preds = %.lr.ph77, %57, %.noexc8, %64, %75 +.loopexit: ; preds = %.lr.ph79, %57, %.noexc8, %64, %77 %lpad.loopexit = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp .loopexit.split-lp.loopexit: ; preds = %91, %90 - %lpad.loopexit55 = landingpad { ptr, i32 } + %lpad.loopexit57 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp -.loopexit.split-lp.loopexit.split-lp: ; preds = %._crit_edge78, %50, %44 - %lpad.loopexit.split-lp56 = landingpad { ptr, i32 } +.loopexit.split-lp.loopexit.split-lp: ; preds = %._crit_edge80, %50, %44 + %lpad.loopexit.split-lp58 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp .loopexit.split-lp: ; preds = %.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp, %.loopexit - %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit55, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp56, %.loopexit.split-lp.loopexit.split-lp ] + %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit57, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp58, %.loopexit.split-lp.loopexit.split-lp ] invoke void @"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hdff8fcd1d6619063E"(ptr nonnull align 8 %7) #8 to label %96 unwind label %94 @@ -182,16 +182,16 @@ _ZN12actix_router6quoter16hex_pair_to_char17hb687a94a0395628fE.exit: ; preds = % %.sroa.0.1 = getelementptr inbounds i8, ptr %.pn, i64 3 %.sroa.6.1 = add i64 %.sroa.6.1.in, -3 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) - %.not.i74.not = icmp eq i64 %.sroa.6.1, 0 - br i1 %.not.i74.not, label %._crit_edge78, label %.lr.ph77 + %.not.i76.not = icmp eq i64 %.sroa.6.1, 0 + br i1 %.not.i76.not, label %._crit_edge80, label %.lr.ph79 -.lr.ph77: ; preds = %55, %.backedge - %.sroa.01.0.i75 = phi i64 [ %56, %.backedge ], [ 0, %55 ] - %56 = invoke i64 @"_ZN49_$LT$usize$u20$as$u20$core..iter..range..Step$GT$17forward_unchecked17ha0c0a32dac252f31E"(i64 %.sroa.01.0.i75, i64 1) +.lr.ph79: ; preds = %55, %.backedge + %.sroa.01.0.i77 = phi i64 [ %56, %.backedge ], [ 0, %55 ] + %56 = invoke i64 @"_ZN49_$LT$usize$u20$as$u20$core..iter..range..Step$GT$17forward_unchecked17ha0c0a32dac252f31E"(i64 %.sroa.01.0.i77, i64 1) to label %57 unwind label %.loopexit -57: ; preds = %.lr.ph77 - invoke void @"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8split_at17h5a5857dd9afe3f25E"(ptr nonnull sret({ { ptr, i64 }, { ptr, i64 } }) align 8 %6, ptr nonnull align 1 %.sroa.0.1, i64 %.sroa.6.1, i64 %.sroa.01.0.i75, ptr nonnull align 8 @anon.4f8d80af8df40338868d006e3e6bb169.2) +57: ; preds = %.lr.ph79 + invoke void @"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8split_at17h5a5857dd9afe3f25E"(ptr nonnull sret({ { ptr, i64 }, { ptr, i64 } }) align 8 %6, ptr nonnull align 1 %.sroa.0.1, i64 %.sroa.6.1, i64 %.sroa.01.0.i77, ptr nonnull align 8 @anon.4f8d80af8df40338868d006e3e6bb169.2) to label %.noexc7 unwind label %.loopexit .noexc7: ; preds = %57 @@ -202,7 +202,7 @@ _ZN12actix_router6quoter16hex_pair_to_char17hb687a94a0395628fE.exit: ; preds = % .backedge: ; preds = %.noexc7, %61, %.noexc9 %.not.i = icmp ult i64 %56, %.sroa.6.1 - br i1 %.not.i, label %.lr.ph77, label %._crit_edge78 + br i1 %.not.i, label %.lr.ph79, label %._crit_edge80 61: ; preds = %.noexc7 %62 = load i8, ptr %58, align 1, !noundef !3 @@ -218,36 +218,36 @@ _ZN12actix_router6quoter16hex_pair_to_char17hb687a94a0395628fE.exit: ; preds = % %70 = load i8, ptr %69, align 1, !noundef !3 %71 = zext i8 %68 to i32 %72 = invoke { i32, i32 } @"_ZN4core4char7methods22_$LT$impl$u20$char$GT$8to_digit17ha4e4ecd6ff821e97E"(i32 %71, i32 16) - to label %.noexc21 unwind label %.loopexit + to label %.noexc23 unwind label %.loopexit -.noexc21: ; preds = %64 +.noexc23: ; preds = %64 %73 = extractvalue { i32, i32 } %72, 0 - %74 = extractvalue { i32, i32 } %72, 1 %.not.i17 = icmp eq i32 %73, 0 - br i1 %.not.i17, label %.noexc8, label %75 - -75: ; preds = %.noexc21 - %76 = zext i8 %70 to i32 - %77 = invoke { i32, i32 } @"_ZN4core4char7methods22_$LT$impl$u20$char$GT$8to_digit17ha4e4ecd6ff821e97E"(i32 %76, i32 16) - to label %.noexc22 unwind label %.loopexit - -.noexc22: ; preds = %75 - %78 = extractvalue { i32, i32 } %77, 0 - %.not7.i18 = icmp eq i32 %78, 0 - br i1 %.not7.i18, label %.noexc8, label %79 - -79: ; preds = %.noexc22 - %80 = extractvalue { i32, i32 } %77, 1 - %81 = trunc i32 %74 to i8 - %82 = shl i8 %81, 4 - %83 = trunc i32 %80 to i8 - %84 = or i8 %82, %83 + %74 = extractvalue { i32, i32 } %72, 1 + %75 = trunc i32 %74 to i8 + %76 = shl i8 %75, 4 + br i1 %.not.i17, label %.noexc8, label %77 + +77: ; preds = %.noexc23 + %78 = zext i8 %70 to i32 + %79 = invoke { i32, i32 } @"_ZN4core4char7methods22_$LT$impl$u20$char$GT$8to_digit17ha4e4ecd6ff821e97E"(i32 %78, i32 16) + to label %.noexc24 unwind label %.loopexit + +.noexc24: ; preds = %77 + %80 = extractvalue { i32, i32 } %79, 0 + %.not7.i19 = icmp eq i32 %80, 0 + br i1 %.not7.i19, label %.noexc8, label %81 + +81: ; preds = %.noexc24 + %82 = extractvalue { i32, i32 } %79, 1 + %83 = trunc i32 %82 to i8 + %84 = or i8 %76, %83 br label %.noexc8 -.noexc8: ; preds = %79, %.noexc22, %.noexc21 - %.sroa.4.0.i19 = phi i8 [ %84, %79 ], [ undef, %.noexc21 ], [ undef, %.noexc22 ] - %.sroa.0.0.i20 = phi i1 [ true, %79 ], [ false, %.noexc21 ], [ false, %.noexc22 ] - %85 = invoke { i1, i8 } @"_ZN4core6option15Option$LT$T$GT$6filter17h052c315d049a3117E"(i1 zeroext %.sroa.0.0.i20, i8 %.sroa.4.0.i19, ptr nonnull align 1 %1) +.noexc8: ; preds = %81, %.noexc24, %.noexc23 + %.sroa.4.0.i21 = phi i8 [ %84, %81 ], [ undef, %.noexc23 ], [ undef, %.noexc24 ] + %.sroa.0.0.i22 = phi i1 [ true, %81 ], [ false, %.noexc23 ], [ false, %.noexc24 ] + %85 = invoke { i1, i8 } @"_ZN4core6option15Option$LT$T$GT$6filter17h052c315d049a3117E"(i1 zeroext %.sroa.0.0.i22, i8 %.sroa.4.0.i21, ptr nonnull align 1 %1) to label %.noexc9 unwind label %.loopexit .noexc9: ; preds = %.noexc8 @@ -260,7 +260,7 @@ _ZN12actix_router6quoter16hex_pair_to_char17hb687a94a0395628fE.exit: ; preds = % %89 = icmp eq i64 %66, 0 br i1 %89, label %90, label %91 -._crit_edge78: ; preds = %55, %.backedge +._crit_edge80: ; preds = %55, %.backedge call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) invoke void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$17extend_from_slice17h291d18f3299bf193E"(ptr nonnull align 8 %7, ptr nonnull align 1 %.sroa.0.1, i64 %.sroa.6.1) to label %92 unwind label %.loopexit.split-lp.loopexit.split-lp @@ -273,7 +273,7 @@ _ZN12actix_router6quoter16hex_pair_to_char17hb687a94a0395628fE.exit: ; preds = % invoke void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$17extend_from_slice17h291d18f3299bf193E"(ptr nonnull align 8 %7, ptr nonnull align 1 %65, i64 %66) to label %90 unwind label %.loopexit.split-lp.loopexit -92: ; preds = %._crit_edge78 +92: ; preds = %._crit_edge80 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) br label %93 diff --git a/bench/actix-rs/optimized/n3tsoobypc9yljt.ll b/bench/actix-rs/optimized/n3tsoobypc9yljt.ll index 705a91ed6ef..dbefed9fe1a 100644 --- a/bench/actix-rs/optimized/n3tsoobypc9yljt.ll +++ b/bench/actix-rs/optimized/n3tsoobypc9yljt.ll @@ -2779,7 +2779,7 @@ define hidden void @"_ZN101_$LT$actix_files..chunked..ChunkedReadFile$LT$F$C$Fut %10 = getelementptr inbounds i8, ptr %1, i64 24 %11 = getelementptr inbounds i8, ptr %1, i64 68 %12 = load i8, ptr %11, align 4, !range !670, !noundef !7 - switch i8 %12, label %default.unreachable55.i [ + switch i8 %12, label %default.unreachable69.i [ i8 4, label %.lr.ph i8 0, label %18 i8 1, label %30 @@ -2800,7 +2800,7 @@ define hidden void @"_ZN101_$LT$actix_files..chunked..ChunkedReadFile$LT$F$C$Fut default.unreachable: ; preds = %32 unreachable -default.unreachable55.i: ; preds = %3 +default.unreachable69.i: ; preds = %3 unreachable 18: ; preds = %3, %tailrecurse._crit_edge.thread diff --git a/bench/actix-rs/optimized/u8tt4f5khiooymn.ll b/bench/actix-rs/optimized/u8tt4f5khiooymn.ll index 0cccb48cbd2..3a4cc562312 100644 --- a/bench/actix-rs/optimized/u8tt4f5khiooymn.ll +++ b/bench/actix-rs/optimized/u8tt4f5khiooymn.ll @@ -354,13 +354,13 @@ define internal fastcc noundef range(i32 -7, 3) i32 @_ZN19brotli_decompressor6de %33 = getelementptr inbounds i8, ptr %6, i64 2228 %34 = add nsw i32 %21, -1 %35 = icmp eq i32 %34, 0 - %scevgep250 = getelementptr inbounds i8, ptr %6, i64 258 + %scevgep251 = getelementptr inbounds i8, ptr %6, i64 258 %.pre = load i8, ptr %22, align 4, !range !31 br label %36 36: ; preds = %.backedge, %9 %37 = phi i8 [ %.sink, %.backedge ], [ %.pre, %9 ] - switch i8 %37, label %default.unreachable262 [ + switch i8 %37, label %default.unreachable263 [ i8 0, label %38 i8 1, label %40 i8 2, label %42 @@ -369,7 +369,7 @@ define internal fastcc noundef range(i32 -7, 3) i32 @_ZN19brotli_decompressor6de i8 5, label %146 ] -default.unreachable262: ; preds = %36 +default.unreachable263: ; preds = %36 unreachable 38: ; preds = %36 @@ -439,7 +439,7 @@ default.unreachable262: ; preds = %36 br i1 %61, label %.backedge, label %.lr.ph56.i.preheader .lr.ph56.i.preheader: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hcf829c903b9a64cfE.exit.i" - %scevgep251 = getelementptr i8, ptr %scevgep250, i64 %.idx.i + %scevgep252 = getelementptr i8, ptr %scevgep251, i64 %.idx.i br label %.lr.ph56.i .lr.ph56.i: ; preds = %.lr.ph56.i.preheader, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he6815495c917d2c2E.exit34.thread.i" @@ -461,7 +461,7 @@ default.unreachable262: ; preds = %36 67: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he6815495c917d2c2E.exit34.i", %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hcf829c903b9a64cfE.exit32.i" %.sroa.037.0.i = phi ptr [ %66, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hcf829c903b9a64cfE.exit32.i" ], [ %70, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he6815495c917d2c2E.exit34.i" ] - %68 = icmp eq ptr %.sroa.037.0.i, %scevgep251 + %68 = icmp eq ptr %.sroa.037.0.i, %scevgep252 br i1 %68, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he6815495c917d2c2E.exit34.thread.i", label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he6815495c917d2c2E.exit34.i" "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he6815495c917d2c2E.exit34.thread.i": ; preds = %67 @@ -583,19 +583,19 @@ default.unreachable262: ; preds = %36 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16), !noalias !52 store <16 x i8> , ptr %16, align 16, !noalias !52 %113 = icmp ult i32 %.pre.i, 16 - br i1 %113, label %._crit_edge260, label %114, !prof !53 + br i1 %113, label %._crit_edge261, label %114, !prof !53 -._crit_edge260: ; preds = %112 - %.pre261 = load i32, ptr %27, align 8, !alias.scope !44, !noalias !47 +._crit_edge261: ; preds = %112 + %.pre262 = load i32, ptr %27, align 8, !alias.scope !44, !noalias !47 br label %115 114: ; preds = %112 call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %.pre93.i, i64 noundef 16, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.8a12d939c1772332335ccf3bc40882f3.114) #36 unreachable -115: ; preds = %._crit_edge260, %.thread.i - %116 = phi i32 [ %97, %.thread.i ], [ %.pre261, %._crit_edge260 ] - %.pre-phi95.i = phi i64 [ %106, %.thread.i ], [ %.pre93.i, %._crit_edge260 ] +115: ; preds = %._crit_edge261, %.thread.i + %116 = phi i32 [ %97, %.thread.i ], [ %.pre262, %._crit_edge261 ] + %.pre-phi95.i = phi i64 [ %106, %.thread.i ], [ %.pre93.i, %._crit_edge261 ] %117 = getelementptr inbounds [16 x i8], ptr %16, i64 0, i64 %.pre-phi95.i %118 = load i8, ptr %117, align 1, !noalias !52, !noundef !5 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16), !noalias !52 @@ -672,11 +672,11 @@ default.unreachable262: ; preds = %36 %151 = load i32, ptr %33, align 4, !alias.scope !55, !noalias !60, !noundef !5 store i32 %151, ptr %10, align 4, !noalias !58 %152 = call noundef zeroext i1 @_ZN19brotli_decompressor10bit_reader21BrotliWarmupBitReader17h0f0785d05e11282fE(ptr noalias noundef nonnull align 8 dereferenceable(24) %26, ptr noalias noundef nonnull readonly align 1 %7, i64 noundef %8) - br i1 %152, label %.preheader.i, label %._crit_edge257 + br i1 %152, label %.preheader.i, label %._crit_edge258 -._crit_edge257: ; preds = %146 - %.pre258 = load i32, ptr %31, align 4, !alias.scope !61, !noalias !64 - %.pre259 = load i32, ptr %24, align 4 +._crit_edge258: ; preds = %146 + %.pre259 = load i32, ptr %31, align 4, !alias.scope !61, !noalias !64 + %.pre260 = load i32, ptr %24, align 4 br label %233 .preheader.i: ; preds = %146 @@ -698,22 +698,22 @@ default.unreachable262: ; preds = %36 br i1 %161, label %.lr.ph, label %._crit_edge.loopexit ._crit_edge.loopexit: ; preds = %159 - %.pre254 = load i32, ptr %13, align 4, !noalias !58 - %.pre255 = load i32, ptr %11, align 4, !noalias !58 - %.pre256 = load i32, ptr %10, align 4, !noalias !58 + %.pre255 = load i32, ptr %13, align 4, !noalias !58 + %.pre256 = load i32, ptr %11, align 4, !noalias !58 + %.pre257 = load i32, ptr %10, align 4, !noalias !58 br label %._crit_edge ._crit_edge: ; preds = %._crit_edge.loopexit, %.lr.ph.i55 - %162 = phi i32 [ %151, %.lr.ph.i55 ], [ %.pre256, %._crit_edge.loopexit ] - %163 = phi i32 [ %150, %.lr.ph.i55 ], [ %.pre255, %._crit_edge.loopexit ] - %164 = phi i32 [ %148, %.lr.ph.i55 ], [ %.pre254, %._crit_edge.loopexit ] - %.lcssa96 = phi i32 [ %149, %.lr.ph.i55 ], [ %196, %._crit_edge.loopexit ] - %.lcssa94 = phi i32 [ %147, %.lr.ph.i55 ], [ %194, %._crit_edge.loopexit ] - store i32 %.lcssa94, ptr %31, align 4, !alias.scope !55, !noalias !60 + %162 = phi i32 [ %151, %.lr.ph.i55 ], [ %.pre257, %._crit_edge.loopexit ] + %163 = phi i32 [ %150, %.lr.ph.i55 ], [ %.pre256, %._crit_edge.loopexit ] + %164 = phi i32 [ %148, %.lr.ph.i55 ], [ %.pre255, %._crit_edge.loopexit ] + %.lcssa97 = phi i32 [ %149, %.lr.ph.i55 ], [ %196, %._crit_edge.loopexit ] + %.lcssa95 = phi i32 [ %147, %.lr.ph.i55 ], [ %194, %._crit_edge.loopexit ] + store i32 %.lcssa95, ptr %31, align 4, !alias.scope !55, !noalias !60 store i32 %164, ptr %23, align 8, !alias.scope !55, !noalias !60 store i32 %163, ptr %32, align 8, !alias.scope !55, !noalias !60 store i32 %162, ptr %33, align 4, !alias.scope !55, !noalias !60 - store i32 %.lcssa96, ptr %24, align 4, !alias.scope !55, !noalias !60 + store i32 %.lcssa97, ptr %24, align 4, !alias.scope !55, !noalias !60 br label %233 .lr.ph: ; preds = %.lr.ph.i55, %159 @@ -850,7 +850,7 @@ _ZN19brotli_decompressor6decode24ReadSimpleHuffmanSymbols17h20fb77cf242d3a39E.ex _ZN19brotli_decompressor6decode25ReadCodeLengthCodeLengths17h200cf046daa7b3daE.exit: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hba40d418119fe24dE.exit.thread.i" call void @_ZN19brotli_decompressor7huffman34BrotliBuildCodeLengthsHuffmanTable17hb3292ee5bf7a2349E(ptr noalias noundef nonnull align 2 %6, i64 noundef 32, ptr noalias noundef nonnull readonly align 1 %28, i64 noundef 18, ptr noalias noundef nonnull readonly align 2 %29, i64 noundef 16) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %29, i8 0, i64 32, i1 false) - br label %.preheader91 + br label %.preheader92 220: ; preds = %228 store i32 0, ptr %31, align 4 @@ -860,36 +860,36 @@ _ZN19brotli_decompressor6decode25ReadCodeLengthCodeLengths17h200cf046daa7b3daE.e store i32 32768, ptr %24, align 4 br label %.backedge -.preheader91: ; preds = %_ZN19brotli_decompressor6decode25ReadCodeLengthCodeLengths17h200cf046daa7b3daE.exit, %228 - %.sroa.7.0190 = phi i64 [ %229, %228 ], [ 0, %_ZN19brotli_decompressor6decode25ReadCodeLengthCodeLengths17h200cf046daa7b3daE.exit ] - %.sroa.070.0.idx189 = phi i64 [ %.sroa.070.0.add, %228 ], [ 128, %_ZN19brotli_decompressor6decode25ReadCodeLengthCodeLengths17h200cf046daa7b3daE.exit ] - %.sroa.070.0.ptr = getelementptr inbounds i8, ptr %6, i64 %.sroa.070.0.idx189 - %221 = trunc i64 %.sroa.7.0190 to i32 +.preheader92: ; preds = %_ZN19brotli_decompressor6decode25ReadCodeLengthCodeLengths17h200cf046daa7b3daE.exit, %228 + %.sroa.7.0191 = phi i64 [ %229, %228 ], [ 0, %_ZN19brotli_decompressor6decode25ReadCodeLengthCodeLengths17h200cf046daa7b3daE.exit ] + %.sroa.070.0.idx190 = phi i64 [ %.sroa.070.0.add, %228 ], [ 128, %_ZN19brotli_decompressor6decode25ReadCodeLengthCodeLengths17h200cf046daa7b3daE.exit ] + %.sroa.070.0.ptr = getelementptr inbounds i8, ptr %6, i64 %.sroa.070.0.idx190 + %221 = trunc i64 %.sroa.7.0191 to i32 %222 = add i32 %221, -16 store i32 %222, ptr %.sroa.070.0.ptr, align 4 %223 = load i64, ptr %30, align 8, !noundef !5 - %224 = add i64 %223, %.sroa.7.0190 + %224 = add i64 %223, %.sroa.7.0191 %225 = shl i64 %224, 32 %sext = add i64 %225, -68719476736 %226 = ashr exact i64 %sext, 32 %227 = icmp ult i64 %226, 720 br i1 %227, label %228, label %232, !prof !54 -228: ; preds = %.preheader91 - %229 = add nuw nsw i64 %.sroa.7.0190, 1 - %.sroa.070.0.add = add nuw nsw i64 %.sroa.070.0.idx189, 4 +228: ; preds = %.preheader92 + %229 = add nuw nsw i64 %.sroa.7.0191, 1 + %.sroa.070.0.add = add nuw nsw i64 %.sroa.070.0.idx190, 4 %230 = getelementptr inbounds [720 x i16], ptr %invariant.gep, i64 0, i64 %226 store i16 -1, ptr %230, align 2 %231 = icmp eq i64 %.sroa.070.0.add, 192 - br i1 %231, label %220, label %.preheader91 + br i1 %231, label %220, label %.preheader92 -232: ; preds = %.preheader91 +232: ; preds = %.preheader92 call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %226, i64 noundef 720, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.8a12d939c1772332335ccf3bc40882f3.17) #36 unreachable -233: ; preds = %._crit_edge257, %._crit_edge - %234 = phi i32 [ %.pre259, %._crit_edge257 ], [ %.lcssa96, %._crit_edge ] - %235 = phi i32 [ %.pre258, %._crit_edge257 ], [ %.lcssa94, %._crit_edge ] +233: ; preds = %._crit_edge258, %._crit_edge + %234 = phi i32 [ %.pre260, %._crit_edge258 ], [ %.lcssa97, %._crit_edge ] + %235 = phi i32 [ %.pre259, %._crit_edge258 ], [ %.lcssa95, %._crit_edge ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10), !noalias !58 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11), !noalias !58 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12), !noalias !58 @@ -10911,16 +10911,16 @@ _ZN10actix_http6config13ServiceConfig17write_date_header17h479791828c2508ccE.exi %122 = phi i64 [ %115, %_ZN10actix_http6config13ServiceConfig17write_date_header17h479791828c2508ccE.exit ], [ %85, %95 ] %123 = phi i64 [ %120, %_ZN10actix_http6config13ServiceConfig17write_date_header17h479791828c2508ccE.exit ], [ %96, %95 ] %124 = sub i64 %122, %123 - %.not.i22 = icmp ult i64 %124, 2 - br i1 %.not.i22, label %125, label %126 + %.not.i21 = icmp ult i64 %124, 2 + br i1 %.not.i21, label %125, label %126 125: ; preds = %121 call void @_ZN5bytes9bytes_mut8BytesMut13reserve_inner17h32ec46cc31f523baE(ptr noalias noundef nonnull align 8 dereferenceable(32) %1, i64 noundef 2), !noalias !1392 - %.pre.i23 = load i64, ptr %57, align 8, !alias.scope !1395, !noalias !1392 + %.pre.i22 = load i64, ptr %57, align 8, !alias.scope !1395, !noalias !1392 br label %126 126: ; preds = %125, %121 - %127 = phi i64 [ %123, %121 ], [ %.pre.i23, %125 ] + %127 = phi i64 [ %123, %121 ], [ %.pre.i22, %125 ] %128 = load ptr, ptr %1, align 8, !alias.scope !1395, !noalias !1392, !nonnull !5, !noundef !5 %129 = getelementptr inbounds i8, ptr %128, i64 %127 store i16 2573, ptr %129, align 1 diff --git a/bench/base64-rs/optimized/1a04td3ag2jefly3.ll b/bench/base64-rs/optimized/1a04td3ag2jefly3.ll index d45472e6277..7ddf9449d57 100644 --- a/bench/base64-rs/optimized/1a04td3ag2jefly3.ll +++ b/bench/base64-rs/optimized/1a04td3ag2jefly3.ll @@ -27,11 +27,11 @@ define hidden void @_ZN6base646engine15general_purpose13decode_suffix13decode_su br label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit.lr.ph" "_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit.lr.ph": ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit.lr.ph.preheader", %.outer - %.074.ph186 = phi i64 [ %.074174, %.outer ], [ 0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit.lr.ph.preheader" ] - %.078.ph185 = phi i64 [ %100, %.outer ], [ 0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit.lr.ph.preheader" ] - %.079.ph184 = phi i8 [ %22, %.outer ], [ 0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit.lr.ph.preheader" ] - %.sroa.0.0.ph183 = phi ptr [ %20, %.outer ], [ %17, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit.lr.ph.preheader" ] - %.sroa.8.0.ph182 = phi i64 [ %21, %.outer ], [ 0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit.lr.ph.preheader" ] + %.074.ph187 = phi i64 [ %.074175, %.outer ], [ 0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit.lr.ph.preheader" ] + %.078.ph186 = phi i64 [ %100, %.outer ], [ 0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit.lr.ph.preheader" ] + %.079.ph185 = phi i8 [ %22, %.outer ], [ 0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit.lr.ph.preheader" ] + %.sroa.0.0.ph184 = phi ptr [ %20, %.outer ], [ %17, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit.lr.ph.preheader" ] + %.sroa.8.0.ph183 = phi i64 [ %21, %.outer ], [ 0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit.lr.ph.preheader" ] br label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit" 19: ; preds = %10 @@ -39,13 +39,13 @@ define hidden void @_ZN6base646engine15general_purpose13decode_suffix13decode_su unreachable "_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit": ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit.lr.ph", %103 - %.074174 = phi i64 [ %.074.ph186, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit.lr.ph" ], [ %spec.select, %103 ] - %.075173 = phi i64 [ 0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit.lr.ph" ], [ %105, %103 ] - %.sroa.0.0172 = phi ptr [ %.sroa.0.0.ph183, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit.lr.ph" ], [ %20, %103 ] - %.sroa.8.0171 = phi i64 [ %.sroa.8.0.ph182, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit.lr.ph" ], [ %21, %103 ] - %20 = getelementptr inbounds i8, ptr %.sroa.0.0172, i64 1 - %21 = add i64 %.sroa.8.0171, 1 - %22 = load i8, ptr %.sroa.0.0172, align 1, !noundef !4 + %.074175 = phi i64 [ %.074.ph187, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit.lr.ph" ], [ %spec.select, %103 ] + %.075174 = phi i64 [ 0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit.lr.ph" ], [ %105, %103 ] + %.sroa.0.0173 = phi ptr [ %.sroa.0.0.ph184, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit.lr.ph" ], [ %20, %103 ] + %.sroa.8.0172 = phi i64 [ %.sroa.8.0.ph183, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit.lr.ph" ], [ %21, %103 ] + %20 = getelementptr inbounds i8, ptr %.sroa.0.0173, i64 1 + %21 = add i64 %.sroa.8.0172, 1 + %22 = load i8, ptr %.sroa.0.0173, align 1, !noundef !4 %23 = icmp eq i8 %22, 61 br i1 %23, label %85, label %84 @@ -53,17 +53,17 @@ define hidden void @_ZN6base646engine15general_purpose13decode_suffix13decode_su unreachable "_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit.thread.loopexit": ; preds = %103 - %.sroa.0.0.ph183234.le = ptrtoint ptr %.sroa.0.0.ph183 to i64 - %25 = sub i64 %18, %.sroa.0.0.ph183234.le + %.sroa.0.0.ph184235.le = ptrtoint ptr %.sroa.0.0.ph184 to i64 + %25 = sub i64 %18, %.sroa.0.0.ph184235.le br label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit.thread" "_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit.thread": ; preds = %.outer, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit.thread.loopexit", %14 - %.079.ph.lcssa170 = phi i8 [ 0, %14 ], [ %.079.ph184, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit.thread.loopexit" ], [ %22, %.outer ] - %.078.ph.lcssa166 = phi i64 [ 0, %14 ], [ %.078.ph185, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit.thread.loopexit" ], [ %100, %.outer ] + %.079.ph.lcssa171 = phi i8 [ 0, %14 ], [ %.079.ph185, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit.thread.loopexit" ], [ %22, %.outer ] + %.078.ph.lcssa167 = phi i64 [ 0, %14 ], [ %.078.ph186, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit.thread.loopexit" ], [ %100, %.outer ] %.075.lcssa = phi i64 [ 0, %14 ], [ %25, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit.thread.loopexit" ], [ 0, %.outer ] - %.074.lcssa = phi i64 [ 0, %14 ], [ %spec.select, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit.thread.loopexit" ], [ %.074174, %.outer ] + %.074.lcssa = phi i64 [ 0, %14 ], [ %spec.select, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit.thread.loopexit" ], [ %.074175, %.outer ] %26 = icmp ne i64 %2, 0 - %27 = icmp ult i64 %.078.ph.lcssa166, 2 + %27 = icmp ult i64 %.078.ph.lcssa167, 2 %or.cond = select i1 %26, i1 %27, i1 false br i1 %or.cond, label %29, label %28 @@ -75,7 +75,7 @@ define hidden void @_ZN6base646engine15general_purpose13decode_suffix13decode_su ] 29: ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit.thread" - %30 = add i64 %.078.ph.lcssa166, %3 + %30 = add i64 %.078.ph.lcssa167, %3 %31 = getelementptr inbounds i8, ptr %0, i64 8 store i8 1, ptr %31, align 8 %.sroa.5120.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 @@ -83,7 +83,7 @@ define hidden void @_ZN6base646engine15general_purpose13decode_suffix13decode_su br label %60 32: ; preds = %57, %53, %28 - %33 = mul nuw nsw i64 %.078.ph.lcssa166, 6 + %33 = mul nuw nsw i64 %.078.ph.lcssa167, 6 %34 = lshr i64 %33, 3 %35 = load i8, ptr %12, align 4, !noundef !4 %36 = zext i8 %35 to i32 @@ -106,7 +106,7 @@ define hidden void @_ZN6base646engine15general_purpose13decode_suffix13decode_su br i1 %8, label %69, label %63 53: ; preds = %28 - %54 = add i64 %.075.lcssa, %.078.ph.lcssa166 + %54 = add i64 %.075.lcssa, %.078.ph.lcssa167 %55 = and i64 %54, 3 %56 = icmp eq i64 %55, 0 br i1 %56, label %32, label %58 @@ -139,8 +139,8 @@ define hidden void @_ZN6base646engine15general_purpose13decode_suffix13decode_su br i1 %68, label %69, label %70 69: ; preds = %63, %32 - %.not195 = icmp ult i64 %.078.ph.lcssa166, 2 - br i1 %.not195, label %.split81, label %.lr.ph.preheader + %.not196 = icmp ult i64 %.078.ph.lcssa167, 2 + br i1 %.not196, label %.split81, label %.lr.ph.preheader .lr.ph.preheader: ; preds = %69 %umax = tail call i64 @llvm.umax.i64(i64 %34, i64 1) @@ -148,11 +148,11 @@ define hidden void @_ZN6base646engine15general_purpose13decode_suffix13decode_su 70: ; preds = %63 %71 = add i64 %3, -1 - %72 = add i64 %71, %.078.ph.lcssa166 + %72 = add i64 %71, %.078.ph.lcssa167 %73 = getelementptr inbounds i8, ptr %0, i64 8 store i8 2, ptr %73, align 8 %.sroa.4134.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 9 - store i8 %.079.ph.lcssa170, ptr %.sroa.4134.0..sroa_idx, align 1 + store i8 %.079.ph.lcssa171, ptr %.sroa.4134.0..sroa_idx, align 1 %.sroa.6136.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 store i64 %72, ptr %.sroa.6136.0..sroa_idx, align 8 br label %60 @@ -172,11 +172,11 @@ define hidden void @_ZN6base646engine15general_purpose13decode_suffix13decode_su br label %75 .lr.ph: ; preds = %.lr.ph.preheader, %.critedge - %.0193 = phi i64 [ %83, %.critedge ], [ %6, %.lr.ph.preheader ] - %.077192 = phi i32 [ %79, %.critedge ], [ %52, %.lr.ph.preheader ] - %.sroa.024.0191 = phi i64 [ %82, %.critedge ], [ 0, %.lr.ph.preheader ] - %.not144 = icmp ult i64 %.0193, %5 - br i1 %.not144, label %.critedge, label %76 + %.0194 = phi i64 [ %83, %.critedge ], [ %6, %.lr.ph.preheader ] + %.077193 = phi i32 [ %79, %.critedge ], [ %52, %.lr.ph.preheader ] + %.sroa.024.0192 = phi i64 [ %82, %.critedge ], [ 0, %.lr.ph.preheader ] + %.not145 = icmp ult i64 %.0194, %5 + br i1 %.not145, label %.critedge, label %76 75: ; preds = %.split81, %60 ret void @@ -189,26 +189,26 @@ define hidden void @_ZN6base646engine15general_purpose13decode_suffix13decode_su br label %60 .critedge: ; preds = %.lr.ph - %78 = getelementptr inbounds i8, ptr %4, i64 %.0193 - %79 = shl i32 %.077192, 8 - %80 = lshr i32 %.077192, 24 + %78 = getelementptr inbounds i8, ptr %4, i64 %.0194 + %79 = shl i32 %.077193, 8 + %80 = lshr i32 %.077193, 24 %81 = trunc nuw i32 %80 to i8 - %82 = add nuw nsw i64 %.sroa.024.0191, 1 + %82 = add nuw nsw i64 %.sroa.024.0192, 1 store i8 %81, ptr %78, align 1 - %83 = add nuw i64 %.0193, 1 - %exitcond235.not = icmp eq i64 %82, %umax - br i1 %exitcond235.not, label %.split81, label %.lr.ph + %83 = add nuw i64 %.0194, 1 + %exitcond236.not = icmp eq i64 %82, %umax + br i1 %exitcond236.not, label %.split81, label %.lr.ph 84: ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit" - %.not = icmp eq i64 %.075173, 0 + %.not = icmp eq i64 %.075174, 0 br i1 %.not, label %90, label %87 85: ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit" - %86 = icmp ult i64 %.sroa.8.0171, 2 + %86 = icmp ult i64 %.sroa.8.0172, 2 br i1 %86, label %107, label %103 87: ; preds = %84 - %88 = add i64 %.074174, %3 + %88 = add i64 %.074175, %3 %89 = getelementptr inbounds i8, ptr %0, i64 8 store i8 0, ptr %89, align 8 %.sroa.4104.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 9 @@ -225,11 +225,11 @@ define hidden void @_ZN6base646engine15general_purpose13decode_suffix13decode_su br i1 %94, label %96, label %95 95: ; preds = %90 - %exitcond.not = icmp eq i64 %.078.ph185, 4 + %exitcond.not = icmp eq i64 %.078.ph186, 4 br i1 %exitcond.not, label %102, label %.outer, !prof !5 96: ; preds = %90 - %97 = add i64 %.sroa.8.0171, %3 + %97 = add i64 %.sroa.8.0172, %3 %98 = getelementptr inbounds i8, ptr %0, i64 8 store i8 0, ptr %98, align 8 %.sroa.4112.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 9 @@ -239,9 +239,9 @@ define hidden void @_ZN6base646engine15general_purpose13decode_suffix13decode_su br label %60 .outer: ; preds = %95 - %99 = getelementptr inbounds [4 x i8], ptr %12, i64 0, i64 %.078.ph185 + %99 = getelementptr inbounds [4 x i8], ptr %12, i64 0, i64 %.078.ph186 store i8 %93, ptr %99, align 1 - %100 = add nuw nsw i64 %.078.ph185, 1 + %100 = add nuw nsw i64 %.078.ph186, 1 %101 = icmp eq ptr %20, %15 br i1 %101, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit.thread", label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit.lr.ph" @@ -250,14 +250,14 @@ define hidden void @_ZN6base646engine15general_purpose13decode_suffix13decode_su unreachable 103: ; preds = %85 - %104 = icmp eq i64 %.075173, 0 - %spec.select = select i1 %104, i64 %.sroa.8.0171, i64 %.074174 - %105 = add i64 %.075173, 1 + %104 = icmp eq i64 %.075174, 0 + %spec.select = select i1 %104, i64 %.sroa.8.0172, i64 %.074175 + %105 = add i64 %.075174, 1 %106 = icmp eq ptr %20, %15 br i1 %106, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit.thread.loopexit", label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha200998484683afbE.exit" 107: ; preds = %85 - %108 = add i64 %.sroa.8.0171, %3 + %108 = add i64 %.sroa.8.0172, %3 %109 = getelementptr inbounds i8, ptr %0, i64 8 store i8 0, ptr %109, align 8 %.sroa.496.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 9 diff --git a/bench/base64-rs/optimized/1rsqf4vdpu2g3a06.ll b/bench/base64-rs/optimized/1rsqf4vdpu2g3a06.ll index 2d8eb90c5ff..c539bf4848c 100644 --- a/bench/base64-rs/optimized/1rsqf4vdpu2g3a06.ll +++ b/bench/base64-rs/optimized/1rsqf4vdpu2g3a06.ll @@ -7,9 +7,13 @@ target triple = "x86_64-unknown-linux-gnu" ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define hidden { i64, i64 } @"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hc76a8b800972f4e4E.llvm.9409754205087832000"(i64 noundef %0, i64 %1) unnamed_addr #0 { - %3 = insertvalue { i64, i64 } poison, i64 %0, 0 - %4 = insertvalue { i64, i64 } %3, i64 %1, 1 - ret { i64, i64 } %4 + %3 = icmp eq i64 %0, -9223372036854775807 + %4 = icmp eq i64 %0, 0 + %5 = or i1 %3, %4 + %.sroa.33.0 = select i1 %5, i64 undef, i64 %1 + %6 = insertvalue { i64, i64 } poison, i64 %0, 0 + %7 = insertvalue { i64, i64 } %6, i64 %.sroa.33.0, 1 + ret { i64, i64 } %7 } ; Function Attrs: inlinehint nonlazybind uwtable @@ -27,7 +31,9 @@ define hidden void @_ZN5alloc7raw_vec14handle_reserve17had58ffe066ab6fa9E.llvm.9 unreachable 5: ; preds = %2 - tail call void @_ZN5alloc5alloc18handle_alloc_error17h81706c48453a6249E(i64 noundef %0, i64 noundef %1) #13 + %6 = icmp eq i64 %0, -9223372036854775807 + %.sroa.33.0.i = select i1 %6, i64 undef, i64 %1 + tail call void @_ZN5alloc5alloc18handle_alloc_error17h81706c48453a6249E(i64 noundef %0, i64 noundef %.sroa.33.0.i) #13 unreachable } diff --git a/bench/clap-rs/optimized/12lunjyzw3envsrt.ll b/bench/clap-rs/optimized/12lunjyzw3envsrt.ll index a8a3a686b7d..052a2dfeca7 100644 --- a/bench/clap-rs/optimized/12lunjyzw3envsrt.ll +++ b/bench/clap-rs/optimized/12lunjyzw3envsrt.ll @@ -12,9 +12,13 @@ target triple = "x86_64-unknown-linux-gnu" ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define hidden { i64, i64 } @"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h9c0ee54435e2c51fE.llvm.17513605874695491687"(i64 noundef %0, i64 %1) unnamed_addr #0 { - %3 = insertvalue { i64, i64 } poison, i64 %0, 0 - %4 = insertvalue { i64, i64 } %3, i64 %1, 1 - ret { i64, i64 } %4 + %3 = icmp eq i64 %0, -9223372036854775807 + %4 = icmp eq i64 %0, 0 + %5 = or i1 %3, %4 + %.sroa.33.0 = select i1 %5, i64 undef, i64 %1 + %6 = insertvalue { i64, i64 } poison, i64 %0, 0 + %7 = insertvalue { i64, i64 } %6, i64 %.sroa.33.0, 1 + ret { i64, i64 } %7 } ; Function Attrs: inlinehint nonlazybind uwtable @@ -32,7 +36,9 @@ define hidden void @_ZN5alloc7raw_vec14handle_reserve17had58ffe066ab6fa9E.llvm.1 unreachable 5: ; preds = %2 - tail call void @_ZN5alloc5alloc18handle_alloc_error17h81706c48453a6249E(i64 noundef %0, i64 noundef %1) #16 + %6 = icmp eq i64 %0, -9223372036854775807 + %.sroa.33.0.i = select i1 %6, i64 undef, i64 %1 + tail call void @_ZN5alloc5alloc18handle_alloc_error17h81706c48453a6249E(i64 noundef %0, i64 noundef %.sroa.33.0.i) #16 unreachable } @@ -3786,10 +3792,10 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h38c "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit": ; preds = %13 %16 = tail call noundef ptr @__rust_realloc(ptr noundef nonnull %.val23, i64 noundef %4, i64 noundef 1, i64 noundef %1) #17 - %.not35 = icmp eq ptr %16, null - %.sink1.i = select i1 %.not35, ptr inttoptr (i64 1 to ptr), ptr %16 + %.not36 = icmp eq ptr %16, null + %.sink1.i = select i1 %.not36, ptr inttoptr (i64 1 to ptr), ptr %16 %17 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not35, label %19, label %18 + br i1 %.not36, label %19, label %18 18: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" %storemerge = phi ptr [ inttoptr (i64 1 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" ], [ %16, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] diff --git a/bench/clap-rs/optimized/3b4nqkxyl1xqdcre.ll b/bench/clap-rs/optimized/3b4nqkxyl1xqdcre.ll index 06c641078ea..85ecb823f76 100644 --- a/bench/clap-rs/optimized/3b4nqkxyl1xqdcre.ll +++ b/bench/clap-rs/optimized/3b4nqkxyl1xqdcre.ll @@ -1513,8 +1513,8 @@ _ZN4core5slice6memchr12memchr_naive17h481c51c45c886aadE.exit.us: ; preds = %.lr. store i64 %36, ptr %6, align 8 %.not.us = icmp ult i64 %36, %15 %37 = icmp ugt i64 %36, %5 - %or.cond100 = or i1 %.not.us, %37 - br i1 %or.cond100, label %38, label %.split60.us + %or.cond95 = or i1 %.not.us, %37 + br i1 %or.cond95, label %38, label %.split60.us 38: ; preds = %34 %39 = icmp ugt i64 %36, %8 @@ -5483,7 +5483,7 @@ define internal fastcc void @_ZN12clap_builder6output13help_template12HelpTempla %44 = getelementptr inbounds ptr, ptr %1, i64 %2 %45 = getelementptr inbounds i8, ptr %0, i64 41 %46 = icmp eq i64 %2, 0 - br i1 %46, label %.loopexit28, label %.lr.ph.i.lr.ph + br i1 %46, label %.loopexit29, label %.lr.ph.i.lr.ph .lr.ph.i.lr.ph: ; preds = %4 %47 = load i8, ptr %45, align 1, !range !13, !noalias !1113, !noundef !12 @@ -5506,12 +5506,12 @@ define internal fastcc void @_ZN12clap_builder6output13help_template12HelpTempla .lr.ph.i: ; preds = %.lr.ph.i.lr.ph, %432 %60 = phi i64 [ 0, %.lr.ph.i.lr.ph ], [ %436, %432 ] %61 = phi ptr [ inttoptr (i64 8 to ptr), %.lr.ph.i.lr.ph ], [ %434, %432 ] - %.061 = phi i64 [ 2, %.lr.ph.i.lr.ph ], [ %.1, %432 ] - %.sroa.0.060 = phi ptr [ %1, %.lr.ph.i.lr.ph ], [ %.sroa.0.1, %432 ] + %.062 = phi i64 [ 2, %.lr.ph.i.lr.ph ], [ %.1, %432 ] + %.sroa.0.061 = phi ptr [ %1, %.lr.ph.i.lr.ph ], [ %.sroa.0.1, %432 ] br i1 %48, label %.lr.ph.split.i, label %.lr.ph.split.us.i .lr.ph.split.us.i: ; preds = %.lr.ph.i, %"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h196bce2ad588b430E.exit.thread9.us.i" - %62 = phi ptr [ %63, %"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h196bce2ad588b430E.exit.thread9.us.i" ], [ %.sroa.0.060, %.lr.ph.i ] + %62 = phi ptr [ %63, %"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h196bce2ad588b430E.exit.thread9.us.i" ], [ %.sroa.0.061, %.lr.ph.i ] %63 = getelementptr inbounds i8, ptr %62, i64 8 %64 = load ptr, ptr %62, align 8, !nonnull !12, !align !101, !noundef !12 %65 = getelementptr inbounds i8, ptr %64, i64 544 @@ -5525,10 +5525,10 @@ define internal fastcc void @_ZN12clap_builder6output13help_template12HelpTempla "_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h196bce2ad588b430E.exit.thread9.us.i": ; preds = %.lr.ph.split.us.i %69 = icmp eq ptr %63, %44 - br i1 %69, label %.loopexit28, label %.lr.ph.split.us.i + br i1 %69, label %.loopexit29, label %.lr.ph.split.us.i .lr.ph.split.i: ; preds = %.lr.ph.i, %"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h196bce2ad588b430E.exit.thread9.i" - %70 = phi ptr [ %71, %"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h196bce2ad588b430E.exit.thread9.i" ], [ %.sroa.0.060, %.lr.ph.i ] + %70 = phi ptr [ %71, %"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h196bce2ad588b430E.exit.thread9.i" ], [ %.sroa.0.061, %.lr.ph.i ] %71 = getelementptr inbounds i8, ptr %70, i64 8 %72 = load ptr, ptr %70, align 8, !nonnull !12, !align !101, !noundef !12 %73 = getelementptr inbounds i8, ptr %72, i64 544 @@ -5542,37 +5542,37 @@ define internal fastcc void @_ZN12clap_builder6output13help_template12HelpTempla "_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h196bce2ad588b430E.exit.thread9.i": ; preds = %.lr.ph.split.i %77 = icmp eq ptr %71, %44 - br i1 %77, label %.loopexit28, label %.lr.ph.split.i + br i1 %77, label %.loopexit29, label %.lr.ph.split.i .body: ; preds = %.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit, %428, %406, %.body.i, %156, %415 - %.pn = phi { ptr, i32 } [ %416, %415 ], [ %157, %156 ], [ %.pn.i, %.body.i ], [ %lpad.phi35, %406 ], [ %429, %428 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit24, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit36, %.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp37, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ] + %.pn = phi { ptr, i32 } [ %416, %415 ], [ %157, %156 ], [ %.pn.i, %.body.i ], [ %lpad.phi36, %406 ], [ %429, %428 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit25, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit37, %.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp38, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ] invoke void @"_ZN4core3ptr127drop_in_place$LT$alloc..vec..Vec$LT$$LP$$LP$usize$C$alloc..string..String$RP$$C$$RF$clap_builder..builder..arg..Arg$RP$$GT$$GT$17h309115392a9f85f4E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %41) #19 to label %440 unwind label %438 -.loopexit: ; preds = %._crit_edge92, %374, %376, %386, %396 +.loopexit: ; preds = %._crit_edge93, %374, %376, %386, %396 %lpad.loopexit = landingpad { ptr, i32 } cleanup br label %.body .loopexit.split-lp.loopexit: ; preds = %159, %_ZN12clap_builder6output13help_template12HelpTemplate18arg_next_line_help17ha6033ca3b6cd4481E.exit.i.i.i.i.i.i, %"_ZN12clap_builder6output13help_template12HelpTemplate14will_args_wrap28_$u7b$$u7b$closure$u7d$$u7d$17hc37c39b755bbbee9E.exit.thread.i.i.i.i" - %lpad.loopexit24 = landingpad { ptr, i32 } + %lpad.loopexit25 = landingpad { ptr, i32 } cleanup br label %.body .loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %404, %417, %419 - %lpad.loopexit36 = landingpad { ptr, i32 } + %lpad.loopexit37 = landingpad { ptr, i32 } cleanup br label %.body -.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp: ; preds = %.loopexit28, %"_ZN12clap_builder6output13help_template12HelpTemplate14will_args_wrap28_$u7b$$u7b$closure$u7d$$u7d$17hc37c39b755bbbee9E.exit.thread.i.i.us.i.i", %.noexc, %111, %"_ZN12clap_builder6output13help_template12HelpTemplate14will_args_wrap28_$u7b$$u7b$closure$u7d$$u7d$17hc37c39b755bbbee9E.exit.thread.i.i.us5.i.i", %.noexc35, %122 - %lpad.loopexit.split-lp37 = landingpad { ptr, i32 } +.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp: ; preds = %.loopexit29, %"_ZN12clap_builder6output13help_template12HelpTemplate14will_args_wrap28_$u7b$$u7b$closure$u7d$$u7d$17hc37c39b755bbbee9E.exit.thread.i.i.us.i.i", %.noexc, %111, %"_ZN12clap_builder6output13help_template12HelpTemplate14will_args_wrap28_$u7b$$u7b$closure$u7d$$u7d$17hc37c39b755bbbee9E.exit.thread.i.i.us5.i.i", %.noexc35, %122 + %lpad.loopexit.split-lp38 = landingpad { ptr, i32 } cleanup br label %.body -.loopexit28: ; preds = %432, %"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h196bce2ad588b430E.exit.thread9.us.i", %"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h196bce2ad588b430E.exit.thread9.i", %4 +.loopexit29: ; preds = %432, %"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h196bce2ad588b430E.exit.thread9.us.i", %"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h196bce2ad588b430E.exit.thread9.i", %4 %78 = phi i64 [ 0, %4 ], [ %60, %"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h196bce2ad588b430E.exit.thread9.i" ], [ %60, %"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h196bce2ad588b430E.exit.thread9.us.i" ], [ %436, %432 ] %79 = phi ptr [ inttoptr (i64 8 to ptr), %4 ], [ %61, %"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h196bce2ad588b430E.exit.thread9.i" ], [ %61, %"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h196bce2ad588b430E.exit.thread9.us.i" ], [ %434, %432 ] - %.059 = phi i64 [ 2, %4 ], [ %.061, %"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h196bce2ad588b430E.exit.thread9.i" ], [ %.061, %"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h196bce2ad588b430E.exit.thread9.us.i" ], [ %.1, %432 ] + %.060 = phi i64 [ 2, %4 ], [ %.062, %"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h196bce2ad588b430E.exit.thread9.i" ], [ %.062, %"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17h196bce2ad588b430E.exit.thread9.us.i" ], [ %.1, %432 ] call void @llvm.lifetime.start.p0(i64 0, ptr nonnull %5) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37), !noalias !1126 store ptr %5, ptr %37, align 8, !noalias !1129 @@ -5595,7 +5595,7 @@ define internal fastcc void @_ZN12clap_builder6output13help_template12HelpTempla %or.cond.i29 = select i1 %.sroa.4.0.i.not5.i, i1 %85, i1 false br i1 %or.cond.i29, label %_ZN12clap_builder6output13help_template14longest_filter17ha41fb5f3551b308eE.exit, label %_ZN12clap_builder6output13help_template14longest_filter17ha41fb5f3551b308eE.exit.thread -86: ; preds = %.loopexit28 +86: ; preds = %.loopexit29 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37), !noalias !1126 call void @llvm.lifetime.end.p0(i64 0, ptr nonnull %5) call void @llvm.experimental.noalias.scope.decl(metadata !1139) @@ -5781,7 +5781,7 @@ define internal fastcc void @_ZN12clap_builder6output13help_template12HelpTempla %.not2.i.i.i.i.i.i.i.i = icmp eq i32 %148, 1114112 %.0.i.i.i.i.i.i.i.i = select i1 %146, i1 %.not2.i.i.i.i.i.i.i.i, i1 false %.07.v.i.i.i.i.i.i.i = select i1 %.0.i.i.i.i.i.i.i.i, i64 4, i64 8 - %.07.i.i.i.i.i.i.i = add i64 %.07.v.i.i.i.i.i.i.i, %.059 + %.07.i.i.i.i.i.i.i = add i64 %.07.v.i.i.i.i.i.i.i, %.060 %.not.i.i.i.i.i.i.i = icmp ult i64 %94, %.07.i.i.i.i.i.i.i br i1 %.not.i.i.i.i.i.i.i, label %_ZN12clap_builder6output13help_template12HelpTemplate18arg_next_line_help17ha6033ca3b6cd4481E.exit.i.i.i.i.i.i, label %149 @@ -5894,7 +5894,7 @@ _ZN12clap_builder6output13help_template12HelpTemplate14will_args_wrap17h3c3e8e7d %212 = getelementptr inbounds i8, ptr %20, i64 16 %213 = getelementptr inbounds i8, ptr %14, i64 8 %214 = getelementptr inbounds i8, ptr %14, i64 16 - %215 = add i64 %.059, 2 + %215 = add i64 %.060, 2 %216 = getelementptr inbounds i8, ptr %11, i64 8 %217 = getelementptr inbounds i8, ptr %11, i64 16 %218 = getelementptr inbounds i8, ptr %11, i64 24 @@ -5916,8 +5916,8 @@ _ZN12clap_builder6output13help_template12HelpTemplate14will_args_wrap17h3c3e8e7d %228 = load ptr, ptr %168, align 8, !nonnull !12, !align !101 %229 = getelementptr inbounds i8, ptr %228, i64 16 %230 = getelementptr inbounds i8, ptr %228, i64 8 - %.val.i.pre93 = load i8, ptr %45, align 1 - %231 = trunc nuw i8 %.val.i.pre93 to i1 + %.val.i.pre94 = load i8, ptr %45, align 1 + %231 = trunc nuw i8 %.val.i.pre94 to i1 %.val.i.pre = load i8, ptr %45, align 1 %232 = load ptr, ptr %168, align 8, !nonnull !12, !align !101 %233 = getelementptr inbounds i8, ptr %232, i64 16 @@ -5940,16 +5940,16 @@ _ZN12clap_builder6output13help_template12HelpTemplate14will_args_wrap17h3c3e8e7d ret void 238: ; preds = %.lr.ph, %_ZN12clap_builder6output13help_template12HelpTemplate9write_arg17h3ce42201365da970E.exit - %.sroa.73.063 = phi i64 [ 0, %.lr.ph ], [ %240, %_ZN12clap_builder6output13help_template12HelpTemplate9write_arg17h3ce42201365da970E.exit ] - %.sroa.01.062 = phi ptr [ %164, %.lr.ph ], [ %239, %_ZN12clap_builder6output13help_template12HelpTemplate9write_arg17h3ce42201365da970E.exit ] - %239 = getelementptr inbounds i8, ptr %.sroa.01.062, i64 40 - %240 = add nuw nsw i64 %.sroa.73.063, 1 - %241 = icmp eq i64 %.sroa.73.063, 0 - br i1 %241, label %._crit_edge92, label %382 - -._crit_edge92: ; preds = %387, %238, %_ZN12clap_builder7builder10styled_str9StyledStr8push_str17hf3025370b2961e87E.exit50 - %.val.i = phi i8 [ %.val.i.pre93, %_ZN12clap_builder7builder10styled_str9StyledStr8push_str17hf3025370b2961e87E.exit50 ], [ %.val.i.pre93, %387 ], [ %.val.i.pre, %238 ] - %242 = getelementptr inbounds i8, ptr %.sroa.01.062, i64 32 + %.sroa.73.064 = phi i64 [ 0, %.lr.ph ], [ %240, %_ZN12clap_builder6output13help_template12HelpTemplate9write_arg17h3ce42201365da970E.exit ] + %.sroa.01.063 = phi ptr [ %164, %.lr.ph ], [ %239, %_ZN12clap_builder6output13help_template12HelpTemplate9write_arg17h3ce42201365da970E.exit ] + %239 = getelementptr inbounds i8, ptr %.sroa.01.063, i64 40 + %240 = add nuw nsw i64 %.sroa.73.064, 1 + %241 = icmp eq i64 %.sroa.73.064, 0 + br i1 %241, label %._crit_edge93, label %382 + +._crit_edge93: ; preds = %387, %238, %_ZN12clap_builder7builder10styled_str9StyledStr8push_str17hf3025370b2961e87E.exit50 + %.val.i = phi i8 [ %.val.i.pre94, %_ZN12clap_builder7builder10styled_str9StyledStr8push_str17hf3025370b2961e87E.exit50 ], [ %.val.i.pre94, %387 ], [ %.val.i.pre, %238 ] + %242 = getelementptr inbounds i8, ptr %.sroa.01.063, i64 32 %243 = load ptr, ptr %242, align 8, !nonnull !12, !align !101, !noundef !12 call void @llvm.experimental.noalias.scope.decl(metadata !1191) call void @llvm.experimental.noalias.scope.decl(metadata !1194) @@ -5957,7 +5957,7 @@ _ZN12clap_builder6output13help_template12HelpTemplate14will_args_wrap17h3c3e8e7d invoke fastcc void @_ZN12clap_builder6output13help_template12HelpTemplate9spec_vals17h008b83ce80344a25E(ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %34, i8 %.val.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(552) %243) to label %.noexc42 unwind label %.loopexit -.noexc42: ; preds = %._crit_edge92 +.noexc42: ; preds = %._crit_edge93 %244 = load i64, ptr %233, align 8, !alias.scope !1197, !noalias !1204, !noundef !12 %245 = load i64, ptr %232, align 8, !alias.scope !1207, !noalias !1204, !noundef !12 %246 = sub i64 %245, %244 @@ -5973,7 +5973,7 @@ _ZN12clap_builder6output13help_template12HelpTemplate14will_args_wrap17h3c3e8e7d br label %251 .body.i: ; preds = %354, %343, %335, %325, %308, %249 - %.pn.i = phi { ptr, i32 } [ %309, %308 ], [ %250, %249 ], [ %lpad.phi15, %325 ], [ %lpad.phi20, %335 ], [ %355, %354 ], [ %344, %343 ] + %.pn.i = phi { ptr, i32 } [ %309, %308 ], [ %250, %249 ], [ %lpad.phi16, %325 ], [ %lpad.phi21, %335 ], [ %355, %354 ], [ %344, %343 ] invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17he11f50f4ada41903E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %34) #19 to label %.body unwind label %379, !noalias !1191 @@ -6233,20 +6233,20 @@ _ZN12clap_builder6output13help_template12HelpTemplate4long17h040d2a9ab23e3d93E.e store ptr %19, ptr %199, align 8, !noalias !1292 store ptr @anon.d61c2e717104e98006f69608d75dbe7b.0, ptr %200, align 8, !noalias !1292 %324 = invoke noundef zeroext i1 @"_ZN70_$LT$clap_builder..builder..arg..Arg$u20$as$u20$core..fmt..Display$GT$3fmt17h7712afb4e9bb4f34E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(552) %243, ptr noalias noundef nonnull align 8 dereferenceable(64) %18) - to label %326 unwind label %.loopexit11, !noalias !1296 + to label %326 unwind label %.loopexit12, !noalias !1296 -.loopexit11: ; preds = %323 - %lpad.loopexit13 = landingpad { ptr, i32 } +.loopexit12: ; preds = %323 + %lpad.loopexit14 = landingpad { ptr, i32 } cleanup br label %325 -.loopexit.split-lp12: ; preds = %327 - %lpad.loopexit.split-lp14 = landingpad { ptr, i32 } +.loopexit.split-lp13: ; preds = %327 + %lpad.loopexit.split-lp15 = landingpad { ptr, i32 } cleanup br label %325 -325: ; preds = %.loopexit.split-lp12, %.loopexit11 - %lpad.phi15 = phi { ptr, i32 } [ %lpad.loopexit13, %.loopexit11 ], [ %lpad.loopexit.split-lp14, %.loopexit.split-lp12 ] +325: ; preds = %.loopexit.split-lp13, %.loopexit12 + %lpad.phi16 = phi { ptr, i32 } [ %lpad.loopexit14, %.loopexit12 ], [ %lpad.loopexit.split-lp15, %.loopexit.split-lp13 ] invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17he11f50f4ada41903E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %19) #19 to label %.body.i unwind label %328, !noalias !1296 @@ -6256,7 +6256,7 @@ _ZN12clap_builder6output13help_template12HelpTemplate4long17h040d2a9ab23e3d93E.e 327: ; preds = %326 invoke void @_ZN4core6result13unwrap_failed17h03d8a5018196e1cdE(ptr noalias noundef nonnull readonly align 1 @anon.d61c2e717104e98006f69608d75dbe7b.1, i64 noundef 55, ptr noundef nonnull align 1 %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.d61c2e717104e98006f69608d75dbe7b.32, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.d61c2e717104e98006f69608d75dbe7b.3) #21 - to label %.noexc.i.i.i unwind label %.loopexit.split-lp12, !noalias !1296 + to label %.noexc.i.i.i unwind label %.loopexit.split-lp13, !noalias !1296 .noexc.i.i.i: ; preds = %327 unreachable @@ -6292,20 +6292,20 @@ _ZN12clap_builder6output13help_template12HelpTemplate4long17h040d2a9ab23e3d93E.e store ptr %17, ptr %209, align 8, !noalias !1298 store ptr @anon.d61c2e717104e98006f69608d75dbe7b.0, ptr %210, align 8, !noalias !1298 %334 = invoke noundef zeroext i1 @"_ZN70_$LT$clap_builder..builder..arg..Arg$u20$as$u20$core..fmt..Display$GT$3fmt17h7712afb4e9bb4f34E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(552) %243, ptr noalias noundef nonnull align 8 dereferenceable(64) %16) - to label %336 unwind label %.loopexit16, !noalias !1302 + to label %336 unwind label %.loopexit17, !noalias !1302 -.loopexit16: ; preds = %333 - %lpad.loopexit18 = landingpad { ptr, i32 } +.loopexit17: ; preds = %333 + %lpad.loopexit19 = landingpad { ptr, i32 } cleanup br label %335 -.loopexit.split-lp17: ; preds = %337 - %lpad.loopexit.split-lp19 = landingpad { ptr, i32 } +.loopexit.split-lp18: ; preds = %337 + %lpad.loopexit.split-lp20 = landingpad { ptr, i32 } cleanup br label %335 -335: ; preds = %.loopexit.split-lp17, %.loopexit16 - %lpad.phi20 = phi { ptr, i32 } [ %lpad.loopexit18, %.loopexit16 ], [ %lpad.loopexit.split-lp19, %.loopexit.split-lp17 ] +335: ; preds = %.loopexit.split-lp18, %.loopexit17 + %lpad.phi21 = phi { ptr, i32 } [ %lpad.loopexit19, %.loopexit17 ], [ %lpad.loopexit.split-lp20, %.loopexit.split-lp18 ] invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17he11f50f4ada41903E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %17) #19 to label %.body.i unwind label %338, !noalias !1302 @@ -6315,7 +6315,7 @@ _ZN12clap_builder6output13help_template12HelpTemplate4long17h040d2a9ab23e3d93E.e 337: ; preds = %336 invoke void @_ZN4core6result13unwrap_failed17h03d8a5018196e1cdE(ptr noalias noundef nonnull readonly align 1 @anon.d61c2e717104e98006f69608d75dbe7b.1, i64 noundef 55, ptr noundef nonnull align 1 %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.d61c2e717104e98006f69608d75dbe7b.32, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.d61c2e717104e98006f69608d75dbe7b.3) #21 - to label %.noexc.i14.i.i unwind label %.loopexit.split-lp17, !noalias !1302 + to label %.noexc.i14.i.i unwind label %.loopexit.split-lp18, !noalias !1302 .noexc.i14.i.i: ; preds = %337 unreachable @@ -6362,7 +6362,7 @@ _ZN12clap_builder6output13help_template12HelpTemplate4long17h040d2a9ab23e3d93E.e call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15), !noalias !1304 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21), !noalias !1289 %..i.i = select i1 %299, i64 6, i64 2 - %350 = add i64 %..i.i, %.059 + %350 = add i64 %..i.i, %.060 %351 = sub i64 %350, %332 br label %362 @@ -6445,7 +6445,7 @@ _ZN12clap_builder6output13help_template12HelpTemplate4long17h040d2a9ab23e3d93E.e %spec.select55.i = select i1 %368, ptr %.0.i53.i, ptr %366 %372 = load ptr, ptr %224, align 8, !noalias !1196, !nonnull !12, !noundef !12 %373 = load i64, ptr %225, align 8, !noalias !1196, !noundef !12 - invoke fastcc void @_ZN12clap_builder6output13help_template12HelpTemplate4help17hfb29c4648bc6559eE(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %0, ptr noalias noundef nonnull readonly align 8 dereferenceable_or_null(552) %243, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %spec.select55.i, ptr noalias noundef nonnull readonly align 1 %372, i64 noundef %373, i1 noundef zeroext %.lcssa.i.i8.i, i64 noundef %.059) + invoke fastcc void @_ZN12clap_builder6output13help_template12HelpTemplate4help17hfb29c4648bc6559eE(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %0, ptr noalias noundef nonnull readonly align 8 dereferenceable_or_null(552) %243, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %spec.select55.i, ptr noalias noundef nonnull readonly align 1 %372, i64 noundef %373, i1 noundef zeroext %.lcssa.i.i8.i, i64 noundef %.060) to label %374 unwind label %249 374: ; preds = %365 @@ -6501,7 +6501,7 @@ _ZN12clap_builder6output13help_template12HelpTemplate9write_arg17h3ce42201365da9 %.lcssa.i.i8.i.not = xor i1 %.lcssa.i.i8.i, true %.not = xor i1 %231, true %brmerge = select i1 %.lcssa.i.i8.i.not, i1 true, i1 %.not - br i1 %brmerge, label %._crit_edge92, label %393 + br i1 %brmerge, label %._crit_edge93, label %393 393: ; preds = %387 %394 = load i64, ptr %228, align 8, !alias.scope !1344, !noalias !1353, !noundef !12 @@ -6524,7 +6524,7 @@ _ZN12clap_builder7builder10styled_str9StyledStr8push_str17hf3025370b2961e87E.exi %400 = load i64, ptr %229, align 8, !alias.scope !1356, !noalias !1353, !noundef !12 %401 = add i64 %400, 1 store i64 %401, ptr %229, align 8, !alias.scope !1356, !noalias !1353 - br label %._crit_edge92 + br label %._crit_edge93 _ZN12clap_builder6output13help_template14longest_filter17ha41fb5f3551b308eE.exit: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4find17hc39154b209dabbbdE.exit" %402 = getelementptr inbounds i8, ptr %80, i64 536 @@ -6533,7 +6533,7 @@ _ZN12clap_builder6output13help_template14longest_filter17ha41fb5f3551b308eE.exit br i1 %.not2.i, label %_ZN12clap_builder6output13help_template14longest_filter17ha41fb5f3551b308eE.exit.thread, label %404 404: ; preds = %422, %_ZN12clap_builder6output13help_template14longest_filter17ha41fb5f3551b308eE.exit - %.1 = phi i64 [ %.0.sroa.speculated.i, %422 ], [ %.061, %_ZN12clap_builder6output13help_template14longest_filter17ha41fb5f3551b308eE.exit ] + %.1 = phi i64 [ %.0.sroa.speculated.i, %422 ], [ %.062, %_ZN12clap_builder6output13help_template14longest_filter17ha41fb5f3551b308eE.exit ] invoke void %3(ptr noalias nocapture noundef nonnull sret({ i64, { { { i64, ptr }, i64 } } }) align 8 dereferenceable(32) %39, ptr noalias noundef nonnull readonly align 8 dereferenceable(552) %80) to label %423 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit, !callees !1357 @@ -6552,20 +6552,20 @@ _ZN12clap_builder6output13help_template14longest_filter17ha41fb5f3551b308eE.exit store ptr %8, ptr %53, align 8, !noalias !1358 store ptr @anon.d61c2e717104e98006f69608d75dbe7b.0, ptr %54, align 8, !noalias !1358 %405 = invoke noundef zeroext i1 @"_ZN70_$LT$clap_builder..builder..arg..Arg$u20$as$u20$core..fmt..Display$GT$3fmt17h7712afb4e9bb4f34E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(552) %80, ptr noalias noundef nonnull align 8 dereferenceable(64) %7) - to label %407 unwind label %.loopexit32, !noalias !1362 + to label %407 unwind label %.loopexit33, !noalias !1362 -.loopexit32: ; preds = %_ZN12clap_builder6output13help_template14longest_filter17ha41fb5f3551b308eE.exit.thread - %lpad.loopexit34 = landingpad { ptr, i32 } +.loopexit33: ; preds = %_ZN12clap_builder6output13help_template14longest_filter17ha41fb5f3551b308eE.exit.thread + %lpad.loopexit35 = landingpad { ptr, i32 } cleanup br label %406 -.loopexit.split-lp33: ; preds = %408 +.loopexit.split-lp34: ; preds = %408 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup br label %406 -406: ; preds = %.loopexit.split-lp33, %.loopexit32 - %lpad.phi35 = phi { ptr, i32 } [ %lpad.loopexit34, %.loopexit32 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp33 ] +406: ; preds = %.loopexit.split-lp34, %.loopexit33 + %lpad.phi36 = phi { ptr, i32 } [ %lpad.loopexit35, %.loopexit33 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp34 ] invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17he11f50f4ada41903E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %8) #19 to label %.body unwind label %409, !noalias !1362 @@ -6575,7 +6575,7 @@ _ZN12clap_builder6output13help_template14longest_filter17ha41fb5f3551b308eE.exit 408: ; preds = %407 invoke void @_ZN4core6result13unwrap_failed17h03d8a5018196e1cdE(ptr noalias noundef nonnull readonly align 1 @anon.d61c2e717104e98006f69608d75dbe7b.1, i64 noundef 55, ptr noundef nonnull align 1 %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.d61c2e717104e98006f69608d75dbe7b.32, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.d61c2e717104e98006f69608d75dbe7b.3) #21 - to label %.noexc.i51 unwind label %.loopexit.split-lp33, !noalias !1362 + to label %.noexc.i51 unwind label %.loopexit.split-lp34, !noalias !1362 .noexc.i51: ; preds = %408 unreachable @@ -6603,7 +6603,7 @@ _ZN12clap_builder6output13help_template14longest_filter17ha41fb5f3551b308eE.exit to label %.body unwind label %438 417: ; preds = %411 - %.0.sroa.speculated.i = call noundef i64 @llvm.umax.i64(i64 %.061, i64 %414) + %.0.sroa.speculated.i = call noundef i64 @llvm.umax.i64(i64 %.062, i64 %414) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6), !noalias !1364 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hc6fdfb9ba9128c2eE.llvm.13290713768692451428"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %40) to label %.noexc54 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit @@ -6662,7 +6662,7 @@ _ZN12clap_builder6output13help_template14longest_filter17ha41fb5f3551b308eE.exit store i64 %436, ptr %43, align 8, !alias.scope !1373, !noalias !1376 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %38) %437 = icmp eq ptr %.sroa.0.1, %44 - br i1 %437, label %.loopexit28, label %.lr.ph.i + br i1 %437, label %.loopexit29, label %.lr.ph.i 438: ; preds = %415, %.body %439 = landingpad { ptr, i32 } diff --git a/bench/clap-rs/optimized/41aqvwa12uhzibvi.ll b/bench/clap-rs/optimized/41aqvwa12uhzibvi.ll index c2ae4a4f173..23010bf7e72 100644 --- a/bench/clap-rs/optimized/41aqvwa12uhzibvi.ll +++ b/bench/clap-rs/optimized/41aqvwa12uhzibvi.ll @@ -14,48 +14,48 @@ define { ptr, i64 } @"_ZN79_$LT$clap_lex..ext..Split$u20$as$u20$core..iter..trai %2 = getelementptr inbounds i8, ptr %0, i64 16 %3 = load ptr, ptr %2, align 8, !align !4, !noundef !5 %4 = getelementptr inbounds i8, ptr %0, i64 24 - %5 = load i64, ptr %4, align 8 - %6 = icmp eq ptr %3, null - br i1 %6, label %21, label %7 + %5 = icmp eq ptr %3, null + %6 = load i64, ptr %4, align 8 + br i1 %5, label %21, label %7 7: ; preds = %1 %8 = load ptr, ptr %0, align 8, !nonnull !5, !align !4, !noundef !5 %9 = getelementptr inbounds i8, ptr %0, i64 8 %10 = load i64, ptr %9, align 8, !noundef !5 - %11 = tail call { i64, i64 } @"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$4find17h7c8b5932dcb2a7d0E"(ptr noalias noundef nonnull readonly align 1 %3, i64 noundef %5, ptr noalias noundef nonnull readonly align 1 %8, i64 noundef %10), !noalias !6 + %11 = tail call { i64, i64 } @"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$4find17h7c8b5932dcb2a7d0E"(ptr noalias noundef nonnull readonly align 1 %3, i64 noundef %6, ptr noalias noundef nonnull readonly align 1 %8, i64 noundef %10), !noalias !6 %.fca.0.extract.i = extractvalue { i64, i64 } %11, 0 - %.fca.1.extract.i = extractvalue { i64, i64 } %11, 1 %switch.i = icmp eq i64 %.fca.0.extract.i, 0 + %.fca.1.extract.i = extractvalue { i64, i64 } %11, 1 br i1 %switch.i, label %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$10split_once17h509237bc95af7a93E.exit.thread", label %12 12: ; preds = %7 %13 = add i64 %.fca.1.extract.i, %10 - %14 = icmp ugt i64 %.fca.1.extract.i, %5 + %14 = icmp ugt i64 %.fca.1.extract.i, %6 br i1 %14, label %15, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2e16e49de880e58eE.llvm.8584779980762939608.exit.i" 15: ; preds = %12 - tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %.fca.1.extract.i, i64 noundef %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.9acd36be39784948a154da50af79fd9d.6.llvm.8584779980762939608) #2, !noalias !9 + tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %.fca.1.extract.i, i64 noundef %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.9acd36be39784948a154da50af79fd9d.6.llvm.8584779980762939608) #2, !noalias !9 unreachable "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2e16e49de880e58eE.llvm.8584779980762939608.exit.i": ; preds = %12 - %16 = icmp ugt i64 %13, %5 + %16 = icmp ugt i64 %13, %6 br i1 %16, label %17, label %18 17: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2e16e49de880e58eE.llvm.8584779980762939608.exit.i" - tail call void @_ZN4core5slice5index26slice_start_index_len_fail17h0187bf4d120fc375E(i64 noundef %13, i64 noundef %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.9acd36be39784948a154da50af79fd9d.7.llvm.8584779980762939608) #2, !noalias !6 + tail call void @_ZN4core5slice5index26slice_start_index_len_fail17h0187bf4d120fc375E(i64 noundef %13, i64 noundef %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.9acd36be39784948a154da50af79fd9d.7.llvm.8584779980762939608) #2, !noalias !6 unreachable 18: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2e16e49de880e58eE.llvm.8584779980762939608.exit.i" - %19 = sub nuw i64 %5, %13 + %19 = sub nuw i64 %6, %13 %20 = getelementptr inbounds i8, ptr %3, i64 %13 br label %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$10split_once17h509237bc95af7a93E.exit.thread" "_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$10split_once17h509237bc95af7a93E.exit.thread": ; preds = %7, %18 - %.sroa.9.014 = phi i64 [ %19, %18 ], [ undef, %7 ] %storemerge9 = phi ptr [ %20, %18 ], [ null, %7 ] - %.sroa.4.0 = phi i64 [ %.fca.1.extract.i, %18 ], [ %5, %7 ] + %storemerge = phi i64 [ %19, %18 ], [ undef, %7 ] + %.sroa.4.0 = phi i64 [ %.fca.1.extract.i, %18 ], [ %6, %7 ] store ptr %storemerge9, ptr %2, align 8 - store i64 %.sroa.9.014, ptr %4, align 8 + store i64 %storemerge, ptr %4, align 8 br label %21 21: ; preds = %1, %"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$10split_once17h509237bc95af7a93E.exit.thread" diff --git a/bench/clap-rs/optimized/46qpaucouebcxfrx.ll b/bench/clap-rs/optimized/46qpaucouebcxfrx.ll index 2a3b6890112..379d7ca201a 100644 --- a/bench/clap-rs/optimized/46qpaucouebcxfrx.ll +++ b/bench/clap-rs/optimized/46qpaucouebcxfrx.ll @@ -1554,9 +1554,9 @@ define hidden { ptr, i64 } @"_ZN4core3ops8function5impls79_$LT$impl$u20$core..op %..val2.i.i.i = load i64, ptr %8, align 8, !alias.scope !342 %.sroa.3.0.i.i.i = select i1 %7, i64 undef, i64 %..val2.i.i.i %..sroa.5.0.i.i = select i1 %trunc.i.i, ptr %6, ptr null - %.sroa.7.0.i.i = select i1 %trunc.i.i, i64 %.sroa.3.0.i.i.i, i64 undef + %..sroa.7.0.i.i = select i1 %trunc.i.i, i64 %.sroa.3.0.i.i.i, i64 undef %9 = insertvalue { ptr, i64 } poison, ptr %..sroa.5.0.i.i, 0 - %10 = insertvalue { ptr, i64 } %9, i64 %.sroa.7.0.i.i, 1 + %10 = insertvalue { ptr, i64 } %9, i64 %..sroa.7.0.i.i, 1 ret { ptr, i64 } %10 } @@ -3601,9 +3601,9 @@ define hidden { ptr, i64 } @_ZN12clap_builder7builder3arg3Arg16get_help_heading1 %..val2.i = load i64, ptr %7, align 8 %.sroa.3.0.i = select i1 %6, i64 undef, i64 %..val2.i %..sroa.5.0 = select i1 %trunc, ptr %5, ptr null - %.sroa.7.0 = select i1 %trunc, i64 %.sroa.3.0.i, i64 undef + %..sroa.7.0 = select i1 %trunc, i64 %.sroa.3.0.i, i64 undef %8 = insertvalue { ptr, i64 } poison, ptr %..sroa.5.0, 0 - %9 = insertvalue { ptr, i64 } %8, i64 %.sroa.7.0, 1 + %9 = insertvalue { ptr, i64 } %8, i64 %..sroa.7.0, 1 ret { ptr, i64 } %9 } @@ -11167,7 +11167,7 @@ _ZN12clap_builder6parser8features11suggestions12did_you_mean17h11b85f54c2ca62b5E br i1 %57, label %.loopexit.i.i.i.i.i.i.i.i, label %.lr.ph.i.i.i.i.i.i.i.i.i .lr.ph.i.i.i.i.i.i.i.i.i: ; preds = %86, %"_ZN12clap_builder6parser8features11suggestions17did_you_mean_flag28_$u7b$$u7b$closure$u7d$$u7d$28_$u7b$$u7b$closure$u7d$$u7d$17h21c6646e6167d9f7E.exit.thread.i.i.i.i.i.i.i.i.i" - %.014.i.i.i.i.i.i.i.i.i = phi i64 [ %91, %"_ZN12clap_builder6parser8features11suggestions17did_you_mean_flag28_$u7b$$u7b$closure$u7d$$u7d$28_$u7b$$u7b$closure$u7d$$u7d$17h21c6646e6167d9f7E.exit.thread.i.i.i.i.i.i.i.i.i" ], [ 0, %86 ] + %.013.i.i.i.i.i.i.i.i.i = phi i64 [ %91, %"_ZN12clap_builder6parser8features11suggestions17did_you_mean_flag28_$u7b$$u7b$closure$u7d$$u7d$28_$u7b$$u7b$closure$u7d$$u7d$17h21c6646e6167d9f7E.exit.thread.i.i.i.i.i.i.i.i.i" ], [ 0, %86 ] %87 = phi ptr [ %88, %"_ZN12clap_builder6parser8features11suggestions17did_you_mean_flag28_$u7b$$u7b$closure$u7d$$u7d$28_$u7b$$u7b$closure$u7d$$u7d$17h21c6646e6167d9f7E.exit.thread.i.i.i.i.i.i.i.i.i" ], [ %3, %86 ] %88 = getelementptr inbounds i8, ptr %87, i64 16 %89 = getelementptr i8, ptr %87, i64 8 @@ -11182,7 +11182,7 @@ _ZN12clap_builder6parser8features11suggestions12did_you_mean17h11b85f54c2ca62b5E br i1 %90, label %97, label %"_ZN12clap_builder6parser8features11suggestions17did_you_mean_flag28_$u7b$$u7b$closure$u7d$$u7d$28_$u7b$$u7b$closure$u7d$$u7d$17h21c6646e6167d9f7E.exit.thread.i.i.i.i.i.i.i.i.i" "_ZN12clap_builder6parser8features11suggestions17did_you_mean_flag28_$u7b$$u7b$closure$u7d$$u7d$28_$u7b$$u7b$closure$u7d$$u7d$17h21c6646e6167d9f7E.exit.thread.i.i.i.i.i.i.i.i.i": ; preds = %"_ZN12clap_builder6parser8features11suggestions17did_you_mean_flag28_$u7b$$u7b$closure$u7d$$u7d$28_$u7b$$u7b$closure$u7d$$u7d$17h21c6646e6167d9f7E.exit.i.i.i.i.i.i.i.i.i", %.lr.ph.i.i.i.i.i.i.i.i.i - %91 = add nuw nsw i64 %.014.i.i.i.i.i.i.i.i.i, 1 + %91 = add nuw nsw i64 %.013.i.i.i.i.i.i.i.i.i, 1 %92 = icmp eq ptr %88, %56 br i1 %92, label %.loopexit.i.i.i.i.i.i.i.i, label %.lr.ph.i.i.i.i.i.i.i.i.i @@ -11207,7 +11207,7 @@ _ZN12clap_builder6parser8features11suggestions12did_you_mean17h11b85f54c2ca62b5E br label %"_ZN4core3ops8function5impls79_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$8call_mut17hf9478f8b5a254e3fE.exit.thread.i.i.i.i.i.i" 97: ; preds = %"_ZN12clap_builder6parser8features11suggestions17did_you_mean_flag28_$u7b$$u7b$closure$u7d$$u7d$28_$u7b$$u7b$closure$u7d$$u7d$17h21c6646e6167d9f7E.exit.i.i.i.i.i.i.i.i.i" - %98 = icmp ult i64 %.014.i.i.i.i.i.i.i.i.i, %4 + %98 = icmp ult i64 %.013.i.i.i.i.i.i.i.i.i, %4 call void @llvm.assume(i1 %98) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %18), !noalias !2459 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 8 dereferenceable(24) %20, i64 24, i1 false), !noalias !2459 @@ -11258,7 +11258,7 @@ _ZN12clap_builder6parser8features11suggestions12did_you_mean17h11b85f54c2ca62b5E %.sroa.0.0.i.i = phi ptr [ %7, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h6d15a7e2832b2897E.exit.thread" ], [ %60, %108 ], [ %60, %"_ZN4core3ptr146drop_in_place$LT$core..option..Option$LT$$LP$usize$C$$LP$alloc..string..String$C$core..option..Option$LT$alloc..string..String$GT$$RP$$RP$$GT$$GT$17haec8d40b78fd2354E.exit.i.i.i.i.i.i" ] %.sroa.10.0.i.i.i.i = phi ptr [ undef, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h6d15a7e2832b2897E.exit.thread" ], [ %106, %108 ], [ undef, %"_ZN4core3ptr146drop_in_place$LT$core..option..Option$LT$$LP$usize$C$$LP$alloc..string..String$C$core..option..Option$LT$alloc..string..String$GT$$RP$$RP$$GT$$GT$17haec8d40b78fd2354E.exit.i.i.i.i.i.i" ] %.sroa.9.0.i.i.i.i = phi i64 [ undef, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h6d15a7e2832b2897E.exit.thread" ], [ %109, %108 ], [ undef, %"_ZN4core3ptr146drop_in_place$LT$core..option..Option$LT$$LP$usize$C$$LP$alloc..string..String$C$core..option..Option$LT$alloc..string..String$GT$$RP$$RP$$GT$$GT$17haec8d40b78fd2354E.exit.i.i.i.i.i.i" ] - %.sroa.0.0.i.i.i.i = phi i64 [ undef, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h6d15a7e2832b2897E.exit.thread" ], [ %.014.i.i.i.i.i.i.i.i.i, %108 ], [ undef, %"_ZN4core3ptr146drop_in_place$LT$core..option..Option$LT$$LP$usize$C$$LP$alloc..string..String$C$core..option..Option$LT$alloc..string..String$GT$$RP$$RP$$GT$$GT$17haec8d40b78fd2354E.exit.i.i.i.i.i.i" ] + %.sroa.0.0.i.i.i.i = phi i64 [ undef, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h6d15a7e2832b2897E.exit.thread" ], [ %.013.i.i.i.i.i.i.i.i.i, %108 ], [ undef, %"_ZN4core3ptr146drop_in_place$LT$core..option..Option$LT$$LP$usize$C$$LP$alloc..string..String$C$core..option..Option$LT$alloc..string..String$GT$$RP$$RP$$GT$$GT$17haec8d40b78fd2354E.exit.i.i.i.i.i.i" ] %.sink.i.i.sroa.phi.i.i.i.i = phi ptr [ %.sroa.4.i.i.i.i, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h6d15a7e2832b2897E.exit.thread" ], [ %.sroa.11.i.i.i.i, %108 ], [ %.sroa.4.i.i.i.i, %"_ZN4core3ptr146drop_in_place$LT$core..option..Option$LT$$LP$usize$C$$LP$alloc..string..String$C$core..option..Option$LT$alloc..string..String$GT$$RP$$RP$$GT$$GT$17haec8d40b78fd2354E.exit.i.i.i.i.i.i" ] %.lcssa27.sink.i.i.i.i.i.i = phi i64 [ -9223372036854775808, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h6d15a7e2832b2897E.exit.thread" ], [ %69, %108 ], [ -9223372036854775808, %"_ZN4core3ptr146drop_in_place$LT$core..option..Option$LT$$LP$usize$C$$LP$alloc..string..String$C$core..option..Option$LT$alloc..string..String$GT$$RP$$RP$$GT$$GT$17haec8d40b78fd2354E.exit.i.i.i.i.i.i" ] store i64 %.lcssa27.sink.i.i.i.i.i.i, ptr %.sink.i.i.sroa.phi.i.i.i.i, align 8, !alias.scope !2496, !noalias !2497 @@ -11420,9 +11420,9 @@ define hidden { ptr, i64 } @"_ZN12clap_builder6output13help_template12HelpTempla %..val2.i.i = load i64, ptr %8, align 8, !alias.scope !2518 %.sroa.3.0.i.i = select i1 %7, i64 undef, i64 %..val2.i.i %..sroa.5.0.i = select i1 %trunc.i, ptr %6, ptr null - %.sroa.7.0.i = select i1 %trunc.i, i64 %.sroa.3.0.i.i, i64 undef + %..sroa.7.0.i = select i1 %trunc.i, i64 %.sroa.3.0.i.i, i64 undef %9 = insertvalue { ptr, i64 } poison, ptr %..sroa.5.0.i, 0 - %10 = insertvalue { ptr, i64 } %9, i64 %.sroa.7.0.i, 1 + %10 = insertvalue { ptr, i64 } %9, i64 %..sroa.7.0.i, 1 ret { ptr, i64 } %10 } diff --git a/bench/clap-rs/optimized/4bajo035z6e1d4qz.ll b/bench/clap-rs/optimized/4bajo035z6e1d4qz.ll index b3195081fcb..450f52109d5 100644 --- a/bench/clap-rs/optimized/4bajo035z6e1d4qz.ll +++ b/bench/clap-rs/optimized/4bajo035z6e1d4qz.ll @@ -7242,8 +7242,8 @@ _ZN12clap_builder6output5usage5Usage3new17h1c819b3384191755E.exit.i: ; preds = % call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %45), !noalias !1538 br label %149 -common.resume: ; preds = %.thread130, %222, %184, %212, %114, %.thread31.i.i, %88, %97 - %common.resume.op = phi { ptr, i32 } [ %89, %97 ], [ %89, %88 ], [ %115, %114 ], [ %.pn27.i.i, %.thread31.i.i ], [ %185, %184 ], [ %213, %212 ], [ %223, %222 ], [ %.pn.pn117, %.thread130 ] +common.resume: ; preds = %.thread132, %222, %184, %212, %114, %.thread31.i.i, %88, %97 + %common.resume.op = phi { ptr, i32 } [ %89, %97 ], [ %89, %88 ], [ %115, %114 ], [ %.pn27.i.i, %.thread31.i.i ], [ %185, %184 ], [ %213, %212 ], [ %223, %222 ], [ %.pn.pn119, %.thread132 ] resume { ptr, i32 } %common.resume.op 97: ; preds = %88 @@ -7488,7 +7488,7 @@ _ZN4core3ops5range11RangeBounds8contains17h2fa74cf179d6c746E.exit: ; preds = %.c _ZN4core3ops5range11RangeBounds8contains17h2fa74cf179d6c746E.exit.thread: ; preds = %155, %159, %164, %_ZN4core3ops5range11RangeBounds8contains17h2fa74cf179d6c746E.exit %173 = icmp eq ptr %3, null - br i1 %173, label %.thread109, label %214 + br i1 %173, label %.thread111, label %214 _ZN4core3ops5range11RangeBounds8contains17h2fa74cf179d6c746E.exit.thread103: ; preds = %.critedge.i, %164, %_ZN4core3ops5range11RangeBounds8contains17h2fa74cf179d6c746E.exit %or.cond.i = icmp ugt i64 %153, 255 @@ -7678,9 +7678,9 @@ _ZN4core3ops5range11RangeBounds8contains17h2fa74cf179d6c746E.exit.thread103: ; p call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %33), !noalias !1623 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %34), !noalias !1623 %229 = icmp eq i64 %.sroa.085.0.copyload, -9223372036854775808 - br i1 %229, label %.thread109, label %234 + br i1 %229, label %.thread111, label %234 -.thread109: ; preds = %_ZN4core3ops5range11RangeBounds8contains17h2fa74cf179d6c746E.exit.thread, %228 +.thread111: ; preds = %_ZN4core3ops5range11RangeBounds8contains17h2fa74cf179d6c746E.exit.thread, %228 %230 = call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h1852f655f36c0dc7E"(i64 noundef 3, i1 noundef zeroext false), !noalias !1629 %231 = extractvalue { i64, ptr } %230, 0 %232 = extractvalue { i64, ptr } %230, 1 @@ -7689,10 +7689,10 @@ _ZN4core3ops5range11RangeBounds8contains17h2fa74cf179d6c746E.exit.thread103: ; p call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %232, i8 46, i64 3, i1 false) br label %234 -234: ; preds = %228, %.thread109 - %.sroa.3.sroa.0.0 = phi ptr [ %232, %.thread109 ], [ %.sroa.486.sroa.0.0.copyload, %228 ] - %.sroa.3.sroa.3.0 = phi i64 [ 3, %.thread109 ], [ %.sroa.486.sroa.4.0.copyload, %228 ] - %.sroa.015.0 = phi i64 [ %231, %.thread109 ], [ %.sroa.085.0.copyload, %228 ] +234: ; preds = %228, %.thread111 + %.sroa.3.sroa.0.0 = phi ptr [ %232, %.thread111 ], [ %.sroa.486.sroa.0.0.copyload, %228 ] + %.sroa.3.sroa.3.0 = phi i64 [ 3, %.thread111 ], [ %.sroa.486.sroa.4.0.copyload, %228 ] + %.sroa.015.0 = phi i64 [ %231, %.thread111 ], [ %.sroa.085.0.copyload, %228 ] call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %56) store i64 %.sroa.015.0, ptr %56, align 8 %.sroa.3.0..sroa_idx17 = getelementptr inbounds i8, ptr %56, i64 8 @@ -7702,12 +7702,12 @@ _ZN4core3ops5range11RangeBounds8contains17h2fa74cf179d6c746E.exit.thread103: ; p call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %55) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %54) invoke void @_ZN3std3sys4unix6os_str5Slice15to_string_lossy17haa60bcab43d2d9d6E(ptr noalias nocapture noundef nonnull sret({ i64, [2 x i64] }) align 8 dereferenceable(24) %54, ptr noalias noundef nonnull readonly align 1 %4, i64 noundef %5) - to label %236 unwind label %.thread113 + to label %236 unwind label %.thread115 -.thread113: ; preds = %234, %239 +.thread115: ; preds = %234, %239 %235 = landingpad { ptr, i32 } cleanup - br label %.thread130 + br label %.thread132 236: ; preds = %234 call void @llvm.experimental.noalias.scope.decl(metadata !1633) @@ -7722,7 +7722,7 @@ _ZN4core3ops5range11RangeBounds8contains17h2fa74cf179d6c746E.exit.thread103: ; p %242 = getelementptr inbounds i8, ptr %54, i64 16 %243 = load i64, ptr %242, align 8, !alias.scope !1636, !noalias !1633, !noundef !5 %244 = invoke { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h1852f655f36c0dc7E"(i64 noundef %243, i1 noundef zeroext false) - to label %.noexc unwind label %.thread113 + to label %.noexc unwind label %.thread115 .noexc: ; preds = %239 %245 = extractvalue { i64, ptr } %244, 0 @@ -7786,7 +7786,7 @@ _ZN4core3ops5range11RangeBounds8contains17h2fa74cf179d6c746E.exit.thread103: ; p %260 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17he11f50f4ada41903E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %24) #39 - to label %.thread123 unwind label %263, !noalias !1654 + to label %.thread125 unwind label %263, !noalias !1654 261: ; preds = %249 call void @llvm.lifetime.start.p0(i64 0, ptr nonnull %7), !noalias !1650 @@ -7846,7 +7846,7 @@ _ZN4core3ops5range11RangeBounds8contains17h2fa74cf179d6c746E.exit.thread103: ; p %277 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17he11f50f4ada41903E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %22) #39 - to label %.thread123 unwind label %280, !noalias !1660 + to label %.thread125 unwind label %280, !noalias !1660 278: ; preds = %265 call void @llvm.lifetime.start.p0(i64 0, ptr nonnull %7), !noalias !1656 @@ -7901,7 +7901,7 @@ _ZN4core3ops5range11RangeBounds8contains17h2fa74cf179d6c746E.exit.thread103: ; p %291 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17he11f50f4ada41903E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %20) #39 - to label %.thread123 unwind label %294, !noalias !1666 + to label %.thread125 unwind label %294, !noalias !1666 292: ; preds = %282 call void @llvm.lifetime.start.p0(i64 0, ptr nonnull %7), !noalias !1662 @@ -7946,7 +7946,7 @@ _ZN4core3ops5range11RangeBounds8contains17h2fa74cf179d6c746E.exit.thread103: ; p .body.i: ; preds = %431, %406, %379, %363, %344, %330, %303 %.pn.i = phi { ptr, i32 } [ %432, %431 ], [ %407, %406 ], [ %380, %379 ], [ %304, %303 ], [ %331, %330 ], [ %345, %344 ], [ %364, %363 ] invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17he11f50f4ada41903E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %32) #39 - to label %.thread123 unwind label %394, !noalias !1647 + to label %.thread125 unwind label %394, !noalias !1647 303: ; preds = %441, %433, %416, %408, %389, %381, %319, %302 %304 = landingpad { ptr, i32 } @@ -8331,7 +8331,7 @@ _ZN4core3ops5range11RangeBounds8contains17h2fa74cf179d6c746E.exit.thread103: ; p %447 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17he11f50f4ada41903E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %51) #39 - to label %.thread123 unwind label %475 + to label %.thread125 unwind label %475 448: ; preds = %445, %420, %393 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %51, ptr noundef nonnull align 8 dereferenceable(24) %32, i64 24, i1 false), !noalias !1644 @@ -8380,7 +8380,7 @@ _ZN5alloc3fmt6format17h55b1a8bf61a7c713E.exit: ; preds = %448 %460 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17he11f50f4ada41903E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %53) #39 - to label %.thread123 unwind label %475 + to label %.thread125 unwind label %475 461: ; preds = %.noexc69, %454 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8), !noalias !1770 @@ -8405,7 +8405,7 @@ _ZN5alloc3fmt6format17h55b1a8bf61a7c713E.exit: ; preds = %448 %467 = 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$17h639235000476f409E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %49) #39 - to label %.thread123 unwind label %468 + to label %.thread125 unwind label %468 468: ; preds = %466 %469 = landingpad { ptr, i32 } @@ -8430,19 +8430,19 @@ _ZN5alloc3fmt6format17h55b1a8bf61a7c713E.exit: ; preds = %448 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) br label %483 -475: ; preds = %.thread130, %.thread123, %459, %446 +475: ; preds = %.thread132, %.thread125, %459, %446 %476 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #40 unreachable -.thread123: ; preds = %259, %276, %290, %.body.i, %446, %459, %466 - %.pn122 = phi { ptr, i32 } [ %467, %466 ], [ %447, %446 ], [ %460, %459 ], [ %.pn.i, %.body.i ], [ %291, %290 ], [ %277, %276 ], [ %260, %259 ] +.thread125: ; preds = %259, %276, %290, %.body.i, %446, %459, %466 + %.pn124 = phi { ptr, i32 } [ %467, %466 ], [ %447, %446 ], [ %460, %459 ], [ %.pn.i, %.body.i ], [ %291, %290 ], [ %277, %276 ], [ %260, %259 ] invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17he11f50f4ada41903E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %55) #39 - to label %.thread130 unwind label %475 + to label %.thread132 unwind label %475 -.thread130: ; preds = %.thread123, %.thread113 - %.pn.pn117 = phi { ptr, i32 } [ %235, %.thread113 ], [ %.pn122, %.thread123 ] +.thread132: ; preds = %.thread125, %.thread115 + %.pn.pn119 = phi { ptr, i32 } [ %235, %.thread115 ], [ %.pn124, %.thread125 ] invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17he11f50f4ada41903E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %56) #39 to label %common.resume unwind label %475 @@ -8751,9 +8751,9 @@ define hidden void @_ZN12clap_builder6parser11arg_matcher10ArgMatcher21fill_in_g br i1 %.not43, label %30, label %27 24: ; preds = %.lr.ph, %99 - %.sroa.0.066 = phi ptr [ %1, %.lr.ph ], [ %25, %99 ] - %25 = getelementptr inbounds i8, ptr %.sroa.0.066, i64 16 - %26 = call noundef align 8 dereferenceable_or_null(104) ptr @"_ZN12clap_builder4util8flat_map20FlatMap$LT$K$C$V$GT$3get17h76ca65b8eb9089a8E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %20, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %.sroa.0.066) + %.sroa.0.067 = phi ptr [ %1, %.lr.ph ], [ %25, %99 ] + %25 = getelementptr inbounds i8, ptr %.sroa.0.067, i64 16 + %26 = call noundef align 8 dereferenceable_or_null(104) ptr @"_ZN12clap_builder4util8flat_map20FlatMap$LT$K$C$V$GT$3get17h76ca65b8eb9089a8E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %20, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %.sroa.0.067) %.not = icmp eq ptr %26, null br i1 %.not, label %99, label %97 @@ -8786,9 +8786,9 @@ define hidden void @_ZN12clap_builder6parser11arg_matcher10ArgMatcher21fill_in_g %.sroa.860.0..sroa_idx = getelementptr inbounds i8, ptr %13, i64 24 %.sroa.860.0.copyload = load ptr, ptr %.sroa.860.0..sroa_idx, align 8 %31 = icmp eq ptr %.sroa.057.0.copyload, %.sroa.558.0.copyload - br i1 %31, label %._crit_edge71, label %.lr.ph70 + br i1 %31, label %._crit_edge72, label %.lr.ph71 -.lr.ph70: ; preds = %30 +.lr.ph71: ; preds = %30 %.sroa.659.0..sroa_idx = getelementptr inbounds i8, ptr %13, i64 16 %.sroa.659.0.copyload = load ptr, ptr %.sroa.659.0..sroa_idx, align 8 %32 = icmp ne ptr %.sroa.860.0.copyload, null @@ -8843,38 +8843,38 @@ common.resume: ; preds = %132, %80, %39 %common.resume.op = phi { ptr, i32 } [ %40, %39 ], [ %.pn.i, %80 ], [ %.pn.i47, %132 ] resume { ptr, i32 } %common.resume.op -52: ; preds = %.lr.ph70, %"_ZN4core3ptr103drop_in_place$LT$core..option..Option$LT$clap_builder..parser..matches..matched_arg..MatchedArg$GT$$GT$17h53f4198f97a06b19E.llvm.1283588139133547551.exit" - %.sroa.659.068 = phi ptr [ %.sroa.659.0.copyload, %.lr.ph70 ], [ %58, %"_ZN4core3ptr103drop_in_place$LT$core..option..Option$LT$clap_builder..parser..matches..matched_arg..MatchedArg$GT$$GT$17h53f4198f97a06b19E.llvm.1283588139133547551.exit" ] - %.sroa.057.067 = phi ptr [ %.sroa.057.0.copyload, %.lr.ph70 ], [ %53, %"_ZN4core3ptr103drop_in_place$LT$core..option..Option$LT$clap_builder..parser..matches..matched_arg..MatchedArg$GT$$GT$17h53f4198f97a06b19E.llvm.1283588139133547551.exit" ] - %53 = getelementptr inbounds i8, ptr %.sroa.057.067, i64 16 - %54 = icmp ne ptr %.sroa.659.068, null +52: ; preds = %.lr.ph71, %"_ZN4core3ptr103drop_in_place$LT$core..option..Option$LT$clap_builder..parser..matches..matched_arg..MatchedArg$GT$$GT$17h53f4198f97a06b19E.llvm.1283588139133547551.exit" + %.sroa.659.069 = phi ptr [ %.sroa.659.0.copyload, %.lr.ph71 ], [ %58, %"_ZN4core3ptr103drop_in_place$LT$core..option..Option$LT$clap_builder..parser..matches..matched_arg..MatchedArg$GT$$GT$17h53f4198f97a06b19E.llvm.1283588139133547551.exit" ] + %.sroa.057.068 = phi ptr [ %.sroa.057.0.copyload, %.lr.ph71 ], [ %53, %"_ZN4core3ptr103drop_in_place$LT$core..option..Option$LT$clap_builder..parser..matches..matched_arg..MatchedArg$GT$$GT$17h53f4198f97a06b19E.llvm.1283588139133547551.exit" ] + %53 = getelementptr inbounds i8, ptr %.sroa.057.068, i64 16 + %54 = icmp ne ptr %.sroa.659.069, null call void @llvm.assume(i1 %54) - %55 = icmp eq ptr %.sroa.659.068, %.sroa.860.0.copyload + %55 = icmp eq ptr %.sroa.659.069, %.sroa.860.0.copyload br i1 %55, label %56, label %57 56: ; preds = %52 call void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.5bbe1b10df9b6e08f07c9b849f6cd5da.34.llvm.7008872586094235178, i64 noundef 43, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.5bbe1b10df9b6e08f07c9b849f6cd5da.38.llvm.7008872586094235178) #38, !noalias !1821 unreachable -._crit_edge71: ; preds = %"_ZN4core3ptr103drop_in_place$LT$core..option..Option$LT$clap_builder..parser..matches..matched_arg..MatchedArg$GT$$GT$17h53f4198f97a06b19E.llvm.1283588139133547551.exit", %30 +._crit_edge72: ; preds = %"_ZN4core3ptr103drop_in_place$LT$core..option..Option$LT$clap_builder..parser..matches..matched_arg..MatchedArg$GT$$GT$17h53f4198f97a06b19E.llvm.1283588139133547551.exit", %30 ret void 57: ; preds = %52 - %58 = getelementptr inbounds i8, ptr %.sroa.659.068, i64 112 + %58 = getelementptr inbounds i8, ptr %.sroa.659.069, i64 112 call void @llvm.lifetime.start.p0(i64 104, ptr nonnull %12) - %59 = load ptr, ptr %.sroa.057.067, align 8, !nonnull !5, !align !74, !noundef !5 - %60 = getelementptr inbounds i8, ptr %.sroa.057.067, i64 8 + %59 = load ptr, ptr %.sroa.057.068, align 8, !nonnull !5, !align !74, !noundef !5 + %60 = getelementptr inbounds i8, ptr %.sroa.057.068, i64 8 %61 = load i64, ptr %60, align 8, !noundef !5 call void @llvm.lifetime.start.p0(i64 104, ptr nonnull %11) call void @llvm.experimental.noalias.scope.decl(metadata !1824) call void @llvm.experimental.noalias.scope.decl(metadata !1827) - %62 = getelementptr inbounds i8, ptr %.sroa.659.068, i64 105 + %62 = getelementptr inbounds i8, ptr %.sroa.659.069, i64 105 %63 = load i8, ptr %62, align 1, !range !139, !alias.scope !1827, !noalias !1824, !noundef !5 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10), !noalias !1829 call void @llvm.experimental.noalias.scope.decl(metadata !1830) call void @llvm.experimental.noalias.scope.decl(metadata !1833) - %64 = getelementptr inbounds i8, ptr %.sroa.659.068, i64 48 - %65 = getelementptr inbounds i8, ptr %.sroa.659.068, i64 40 + %64 = getelementptr inbounds i8, ptr %.sroa.659.069, i64 48 + %65 = getelementptr inbounds i8, ptr %.sroa.659.069, i64 40 %66 = load ptr, ptr %65, align 8, !alias.scope !1835, !noalias !1836, !nonnull !5, !noundef !5 %67 = load i64, ptr %64, align 8, !alias.scope !1835, !noalias !1836, !noundef !5 call void @llvm.experimental.noalias.scope.decl(metadata !1837) @@ -8888,12 +8888,12 @@ common.resume: ; preds = %132, %80, %39 store i64 %69, ptr %10, align 8, !alias.scope !1842, !noalias !1843 store ptr %70, ptr %.sroa.4.0..sroa_idx.i.i.i, align 8, !alias.scope !1842, !noalias !1843 store i64 %67, ptr %.sroa.6.0..sroa_idx.i.i.i, align 8, !alias.scope !1842, !noalias !1843 - %73 = load i64, ptr %.sroa.659.068, align 8, !range !4, !alias.scope !1827, !noalias !1824, !noundef !5 - %74 = getelementptr inbounds i8, ptr %.sroa.659.068, i64 16 + %73 = load i64, ptr %.sroa.659.069, align 8, !range !4, !alias.scope !1827, !noalias !1824, !noundef !5 + %74 = getelementptr inbounds i8, ptr %.sroa.659.069, i64 16 %75 = load i128, ptr %74, align 8, !alias.scope !1827, !noalias !1824 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9), !noalias !1829 - %76 = getelementptr inbounds i8, ptr %.sroa.659.068, i64 72 - %77 = getelementptr inbounds i8, ptr %.sroa.659.068, i64 64 + %76 = getelementptr inbounds i8, ptr %.sroa.659.069, i64 72 + %77 = getelementptr inbounds i8, ptr %.sroa.659.069, i64 64 %78 = load ptr, ptr %77, align 8, !alias.scope !1844, !noalias !1847, !nonnull !5, !noundef !5 %79 = load i64, ptr %76, align 8, !alias.scope !1844, !noalias !1847, !noundef !5 invoke void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6to_vec17hd97d1cf568f7dfa5E.llvm.7780793174254504545"(ptr noalias nocapture noundef nonnull sret({ { i64, ptr }, i64 }) align 8 dereferenceable(24) %9, ptr noalias noundef nonnull readonly align 8 %78, i64 noundef %79) @@ -8911,8 +8911,8 @@ common.resume: ; preds = %132, %80, %39 "_ZN67_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h9606d90f5f602fdbE.exit.i": ; preds = %57 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8), !noalias !1829 - %83 = getelementptr inbounds i8, ptr %.sroa.659.068, i64 96 - %84 = getelementptr inbounds i8, ptr %.sroa.659.068, i64 88 + %83 = getelementptr inbounds i8, ptr %.sroa.659.069, i64 96 + %84 = getelementptr inbounds i8, ptr %.sroa.659.069, i64 88 %85 = load ptr, ptr %84, align 8, !alias.scope !1849, !noalias !1852, !nonnull !5, !noundef !5 %86 = load i64, ptr %83, align 8, !alias.scope !1849, !noalias !1852, !noundef !5 invoke void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6to_vec17h3569456020cb6073E.llvm.7780793174254504545"(ptr noalias nocapture noundef nonnull sret({ { i64, ptr }, i64 }) align 8 dereferenceable(24) %8, ptr noalias noundef nonnull readonly align 8 %85, i64 noundef %86) @@ -8933,7 +8933,7 @@ common.resume: ; preds = %132, %80, %39 "_ZN93_$LT$clap_builder..parser..matches..matched_arg..MatchedArg$u20$as$u20$core..clone..Clone$GT$5clone17hd2dc2935f4af8542E.exit": ; preds = %"_ZN67_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..clone..Clone$GT$5clone17h9606d90f5f602fdbE.exit.i" %trunc.i = trunc nuw i64 %73 to i1 %.sroa.51.0.i = select i1 %trunc.i, i128 %75, i128 undef - %91 = getelementptr inbounds i8, ptr %.sroa.659.068, i64 104 + %91 = getelementptr inbounds i8, ptr %.sroa.659.069, i64 104 %92 = load i8, ptr %91, align 8, !range !284, !alias.scope !1827, !noalias !1824, !noundef !5 store i8 %63, ptr %33, align 1, !alias.scope !1824, !noalias !1827 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %34, ptr noundef nonnull align 8 dereferenceable(24) %10, i64 24, i1 false), !noalias !1827 @@ -8958,10 +8958,10 @@ common.resume: ; preds = %132, %80, %39 "_ZN4core3ptr103drop_in_place$LT$core..option..Option$LT$clap_builder..parser..matches..matched_arg..MatchedArg$GT$$GT$17h53f4198f97a06b19E.llvm.1283588139133547551.exit": ; preds = %"_ZN93_$LT$clap_builder..parser..matches..matched_arg..MatchedArg$u20$as$u20$core..clone..Clone$GT$5clone17hd2dc2935f4af8542E.exit", %95 call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %12) %96 = icmp eq ptr %53, %.sroa.558.0.copyload - br i1 %96, label %._crit_edge71, label %52 + br i1 %96, label %._crit_edge72, label %52 97: ; preds = %24 - %98 = call noundef align 8 dereferenceable_or_null(104) ptr @"_ZN12clap_builder4util8flat_map20FlatMap$LT$K$C$V$GT$3get17h76ca65b8eb9089a8E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %.sroa.0.066) + %98 = call noundef align 8 dereferenceable_or_null(104) ptr @"_ZN12clap_builder4util8flat_map20FlatMap$LT$K$C$V$GT$3get17h76ca65b8eb9089a8E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %.sroa.0.067) %.not42 = icmp eq ptr %98, null br i1 %.not42, label %115, label %101 @@ -9072,8 +9072,8 @@ common.resume: ; preds = %132, %80, %39 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6), !noalias !1866 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7), !noalias !1866 call void @llvm.lifetime.start.p0(i64 104, ptr nonnull %17) - %143 = load ptr, ptr %.sroa.0.066, align 8, !nonnull !5, !align !74, !noundef !5 - %144 = getelementptr inbounds i8, ptr %.sroa.0.066, i64 8 + %143 = load ptr, ptr %.sroa.0.067, align 8, !nonnull !5, !align !74, !noundef !5 + %144 = getelementptr inbounds i8, ptr %.sroa.0.067, i64 8 %145 = load i64, ptr %144, align 8, !noundef !5 store i64 %125, ptr %16, align 8 store i128 %.sroa.51.0.i50, ptr %.sroa.454.0..sroa_idx, align 8 diff --git a/bench/clap-rs/optimized/gk6w3l154s6ch7z.ll b/bench/clap-rs/optimized/gk6w3l154s6ch7z.ll index 01641c28c27..5624828e186 100644 --- a/bench/clap-rs/optimized/gk6w3l154s6ch7z.ll +++ b/bench/clap-rs/optimized/gk6w3l154s6ch7z.ll @@ -1138,7 +1138,7 @@ define hidden noundef align 8 ptr @_ZN12clap_builder6parser6parser6Parser16get_m cleanup br label %.critedge315 -.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.loopexit: ; preds = %352, %372, %373, %375, %412, %673, %1346, %1396, %1464, %1536, %421, %441, %463, %484, %489, %580, %582, %586, %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hc8bc7208b00feda4E.llvm.13290713768692451428.exit.i.i.i", %628, %638, %.thread131.i, %1036, %1056, %1076, %1091, %1093, %1108, %1134, %1159, %1264, %1400, %1417, %1446 +.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.loopexit: ; preds = %352, %372, %373, %375, %412, %673, %1346, %1396, %1464, %1536, %421, %441, %463, %484, %489, %580, %582, %586, %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hc8bc7208b00feda4E.llvm.13290713768692451428.exit.i.i.i", %628, %638, %.thread132.i, %1036, %1056, %1076, %1091, %1093, %1108, %1134, %1159, %1264, %1400, %1417, %1446 %lpad.loopexit1146 = landingpad { ptr, i32 } cleanup br label %.critedge315 @@ -1264,7 +1264,7 @@ define hidden noundef align 8 ptr @_ZN12clap_builder6parser6parser6Parser16get_m %331 = getelementptr inbounds i8, ptr %129, i64 48 %332 = getelementptr inbounds i8, ptr %130, i64 48 %333 = getelementptr inbounds i8, ptr %135, i64 8 - %.sroa.5152.0..sroa_idx.i = getelementptr inbounds i8, ptr %114, i64 8 + %.sroa.5153.0..sroa_idx.i = getelementptr inbounds i8, ptr %114, i64 8 %.sroa.7.0..sroa_idx.i = getelementptr inbounds i8, ptr %114, i64 16 %.sroa.8.0..sroa_idx.i = getelementptr inbounds i8, ptr %114, i64 24 %.sroa.10.0..sroa_idx.i = getelementptr inbounds i8, ptr %114, i64 32 @@ -1276,14 +1276,14 @@ define hidden noundef align 8 ptr @_ZN12clap_builder6parser6parser6Parser16get_m %.sroa.23.0..sroa_idx783 = getelementptr inbounds i8, ptr %129, i64 56 %337 = getelementptr inbounds i8, ptr %116, i64 8 %338 = getelementptr inbounds i8, ptr %0, i64 24 - %.sroa.4161.0..sroa_idx.i = getelementptr inbounds i8, ptr %128, i64 8 - %.sroa.5162.0..sroa_idx.i = getelementptr inbounds i8, ptr %128, i64 16 + %.sroa.4162.0..sroa_idx.i = getelementptr inbounds i8, ptr %128, i64 8 + %.sroa.5163.0..sroa_idx.i = getelementptr inbounds i8, ptr %128, i64 16 %339 = getelementptr inbounds i8, ptr %0, i64 8 %340 = getelementptr inbounds i8, ptr %126, i64 8 - %.sroa.5154.0..sroa_idx.i = getelementptr inbounds i8, ptr %115, i64 8 - %.sroa.7155.0..sroa_idx.i = getelementptr inbounds i8, ptr %115, i64 16 - %.sroa.8156.0..sroa_idx.i = getelementptr inbounds i8, ptr %115, i64 24 - %.sroa.10157.0..sroa_idx.i = getelementptr inbounds i8, ptr %115, i64 32 + %.sroa.5155.0..sroa_idx.i = getelementptr inbounds i8, ptr %115, i64 8 + %.sroa.7156.0..sroa_idx.i = getelementptr inbounds i8, ptr %115, i64 16 + %.sroa.8157.0..sroa_idx.i = getelementptr inbounds i8, ptr %115, i64 24 + %.sroa.10158.0..sroa_idx.i = getelementptr inbounds i8, ptr %115, i64 32 %.sroa.053.i.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %127, i64 8 %.sroa.13.0..sroa_idx777 = getelementptr inbounds i8, ptr %139, i64 8 %.sroa.23.0..sroa_idx784 = getelementptr inbounds i8, ptr %139, i64 56 @@ -1579,8 +1579,8 @@ define hidden noundef align 8 ptr @_ZN12clap_builder6parser6parser6Parser16get_m %438 = getelementptr inbounds i8, ptr %431, i64 544 %439 = load i32, ptr %438, align 4, !alias.scope !225, !noalias !230, !noundef !5 %440 = and i32 %439, 32 - %.not133.i = icmp eq i32 %440, 0 - br i1 %.not133.i, label %461, label %.critedge.i + %.not134.i = icmp eq i32 %440, 0 + br i1 %.not134.i, label %461, label %.critedge.i 441: ; preds = %417 call void @llvm.experimental.noalias.scope.decl(metadata !231) @@ -1815,9 +1815,9 @@ define hidden noundef align 8 ptr @_ZN12clap_builder6parser6parser6Parser16get_m call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %147), !noalias !317 %516 = load ptr, ptr %278, align 8, !alias.scope !342, !noalias !345, !nonnull !5, !noundef !5 %517 = icmp eq ptr %511, %516 - br i1 %517, label %.thread121.i, label %.lr.ph.i.i.i77.i + br i1 %517, label %.thread122.i, label %.lr.ph.i.i.i77.i -.thread121.i: ; preds = %515 +.thread122.i: ; preds = %515 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %147), !noalias !317 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %160), !noalias !278 br label %524 @@ -1840,15 +1840,15 @@ define hidden noundef align 8 ptr @_ZN12clap_builder6parser6parser6Parser16get_m .thread118.i: ; preds = %523, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8find_map17h963df52e3a951c8fE.exit.thread.i" call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %160), !noalias !278 %.pre.i = load i32, ptr %363, align 4, !alias.scope !349, !noalias !230 - %.pre162.i = load i32, ptr %364, align 8, !alias.scope !354, !noalias !230 + %.pre163.i = load i32, ptr %364, align 8, !alias.scope !354, !noalias !230 br label %.thread.i 523: ; preds = %.noexc365 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %147), !noalias !317 br label %.thread118.i -524: ; preds = %.thread121.i, %502, %.thread113.i - %.sroa.8.0117.i = phi ptr [ %496, %.thread113.i ], [ %.sroa.7100.0.copyload.i, %502 ], [ %.sroa.7100.0.copyload.i, %.thread121.i ] +524: ; preds = %.thread122.i, %502, %.thread113.i + %.sroa.8.0117.i = phi ptr [ %496, %.thread113.i ], [ %.sroa.7100.0.copyload.i, %502 ], [ %.sroa.7100.0.copyload.i, %.thread122.i ] %525 = icmp ne ptr %.sroa.8.0117.i, null call void @llvm.assume(i1 %525) %526 = getelementptr inbounds i8, ptr %.sroa.8.0117.i, i64 16 @@ -1861,7 +1861,7 @@ define hidden noundef align 8 ptr @_ZN12clap_builder6parser6parser6Parser16get_m br i1 %.sroa.4.0.i.i, label %580, label %579 .thread.i: ; preds = %.thread118.i, %.loopexit.i - %528 = phi i32 [ %499, %.loopexit.i ], [ %.pre162.i, %.thread118.i ] + %528 = phi i32 [ %499, %.loopexit.i ], [ %.pre163.i, %.thread118.i ] %529 = phi i32 [ %497, %.loopexit.i ], [ %.pre.i, %.thread118.i ] %530 = load ptr, ptr %162, align 8, !noalias !278, !nonnull !5, !align !171, !noundef !5 %531 = load i64, ptr %276, align 8, !noalias !278, !noundef !5 @@ -2267,7 +2267,7 @@ _ZN12clap_builder6parser6parser6Parser29possible_long_flag_subcommand17h2be54e91 _ZN12clap_builder7mkeymap7MKeyMap3get17h7e95d0fa05320e69E.exit.thread.i: ; preds = %.noexc376 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %141), !noalias !447 - br label %.thread131.i + br label %.thread132.i 649: ; preds = %.noexc376 %650 = load i32, ptr %648, align 8, !range !288, !alias.scope !450, !noalias !453, !noundef !5 @@ -2294,9 +2294,9 @@ _ZN12clap_builder7mkeymap7MKeyMap3get17h7e95d0fa05320e69E.exit.thread.i: ; preds %664 = load i32, ptr %663, align 4, !noalias !230, !noundef !5 %665 = and i32 %664, 288 %or.cond.i = icmp eq i32 %665, 32 - br i1 %or.cond.i, label %672, label %.thread131.i + br i1 %or.cond.i, label %672, label %.thread132.i -.thread131.i: ; preds = %660, %_ZN12clap_builder7mkeymap7MKeyMap3get17h7e95d0fa05320e69E.exit.thread.i +.thread132.i: ; preds = %660, %_ZN12clap_builder7mkeymap7MKeyMap3get17h7e95d0fa05320e69E.exit.thread.i call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %.sroa.042.sroa.6.i) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %.sroa.544.i) %666 = load ptr, ptr %162, align 8, !noalias !278, !nonnull !5, !align !171, !noundef !5 @@ -2304,7 +2304,7 @@ _ZN12clap_builder7mkeymap7MKeyMap3get17h7e95d0fa05320e69E.exit.thread.i: ; preds %668 = invoke { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h1852f655f36c0dc7E"(i64 noundef %667, i1 noundef zeroext false) to label %.noexc378 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.loopexit -.noexc378: ; preds = %.thread131.i +.noexc378: ; preds = %.thread132.i %669 = extractvalue { i64, ptr } %668, 0 %670 = extractvalue { i64, ptr } %668, 1 %671 = icmp ne ptr %670, null @@ -3595,8 +3595,8 @@ _ZN12clap_builder7builder3ext10Extensions3get17hf2b7a264b97bac08E.exit.i.i3171: %1053 = getelementptr inbounds i8, ptr %1046, i64 544 %1054 = load i32, ptr %1053, align 4, !alias.scope !767, !noalias !772, !noundef !5 %1055 = and i32 %1054, 32 - %.not180.i = icmp eq i32 %1055, 0 - br i1 %.not180.i, label %1076, label %.thread858 + %.not181.i = icmp eq i32 %1055, 0 + br i1 %.not181.i, label %1076, label %.thread858 1056: ; preds = %1034 call void @llvm.experimental.noalias.scope.decl(metadata !773) @@ -3653,8 +3653,8 @@ _ZN12clap_builder7builder3ext10Extensions3get17hf2b7a264b97bac08E.exit.i.i3171: %1073 = getelementptr inbounds i8, ptr %1066, i64 544 %1074 = load i32, ptr %1073, align 4, !alias.scope !805, !noalias !772, !noundef !5 %1075 = and i32 %1074, 32 - %.not178.i = icmp eq i32 %1075, 0 - br i1 %.not178.i, label %1093, label %.thread858 + %.not179.i = icmp eq i32 %1075, 0 + br i1 %.not179.i, label %1093, label %.thread858 1076: ; preds = %"_ZN121_$LT$clap_builder..builder..command..Command$u20$as$u20$core..ops..index..Index$LT$$RF$clap_builder..util..id..Id$GT$$GT$5index17h92017b9610d403c8E.exit.i409" call void @llvm.experimental.noalias.scope.decl(metadata !810) @@ -3704,8 +3704,8 @@ _ZN12clap_builder7builder3ext10Extensions3get17hf2b7a264b97bac08E.exit.i.i3171: %1088 = getelementptr inbounds i8, ptr %1081, i64 544 %1089 = load i32, ptr %1088, align 4, !alias.scope !842, !noalias !772, !noundef !5 %1090 = and i32 %1089, 64 - %.not181.i = icmp eq i32 %1090, 0 - br i1 %.not181.i, label %._crit_edge.i, label %1091 + %.not182.i = icmp eq i32 %1090, 0 + br i1 %.not182.i, label %._crit_edge.i, label %1091 1091: ; preds = %"_ZN121_$LT$clap_builder..builder..command..Command$u20$as$u20$core..ops..index..Index$LT$$RF$clap_builder..util..id..Id$GT$$GT$5index17h92017b9610d403c8E.exit105.i" %1092 = invoke noundef zeroext i1 @_ZN8clap_lex10ShortFlags18is_negative_number17hfbe51699063bd852E(ptr noalias noundef nonnull readonly align 8 dereferenceable(56) %223) @@ -3762,8 +3762,8 @@ _ZN12clap_builder7builder3ext10Extensions3get17hf2b7a264b97bac08E.exit.i.i3171: %1105 = getelementptr inbounds i8, ptr %1098, i64 544 %1106 = load i32, ptr %1105, align 4, !alias.scope !879, !noalias !772, !noundef !5 %1107 = and i32 %1106, 64 - %.not179.i = icmp eq i32 %1107, 0 - br i1 %.not179.i, label %._crit_edge.i, label %1108 + %.not180.i = icmp eq i32 %1107, 0 + br i1 %.not180.i, label %._crit_edge.i, label %1108 1108: ; preds = %"_ZN121_$LT$clap_builder..builder..command..Command$u20$as$u20$core..ops..index..Index$LT$$RF$clap_builder..util..id..Id$GT$$GT$5index17h92017b9610d403c8E.exit115.i" %1109 = invoke noundef zeroext i1 @_ZN8clap_lex10ShortFlags18is_negative_number17hfbe51699063bd852E(ptr noalias noundef nonnull readonly align 8 dereferenceable(56) %223) @@ -3820,8 +3820,8 @@ _ZN12clap_builder7builder3ext10Extensions3get17hf2b7a264b97bac08E.exit.i.i3171: %1131 = getelementptr inbounds [0 x { { i64, i64 }, { i64, [2 x i64] }, { i64, i64 }, { i64, [2 x i64] }, { i64, [2 x i64] }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { i64, [2 x i64] }, { i64, [2 x i64] }, { ptr, i64 }, { ptr, i64 }, { ptr, i64 }, i32, i32, i32, i8, i8, [2 x i8] }], ptr %1130, i64 0, i64 %1124, i32 26 %1132 = load i32, ptr %1131, align 4, !alias.scope !906, !noalias !772, !noundef !5 %1133 = and i32 %1132, 64 - %.not182.i = icmp eq i32 %1133, 0 - br i1 %.not182.i, label %1136, label %1134 + %.not183.i = icmp eq i32 %1133, 0 + br i1 %.not183.i, label %1136, label %1134 1134: ; preds = %1128 %1135 = invoke noundef zeroext i1 @_ZN8clap_lex10ShortFlags18is_negative_number17hfbe51699063bd852E(ptr noalias noundef nonnull readonly align 8 dereferenceable(56) %223) @@ -3846,11 +3846,11 @@ _ZN12clap_builder7builder3ext10Extensions3get17hf2b7a264b97bac08E.exit.i.i3171: .noexc427: ; preds = %1140 %.not.i.i116.i = icmp eq ptr %1141, null - br i1 %.not.i.i116.i, label %.thread166.i, label %1142 + br i1 %.not.i.i116.i, label %.thread167.i, label %1142 -.thread166.i: ; preds = %.noexc427 +.thread167.i: ; preds = %.noexc427 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %120), !noalias !914 - br label %.thread168.i + br label %.thread169.i 1142: ; preds = %.noexc427 %1143 = load i32, ptr %1141, align 8, !range !288, !alias.scope !917, !noalias !920, !noundef !5 @@ -3877,7 +3877,7 @@ _ZN12clap_builder7builder3ext10Extensions3get17hf2b7a264b97bac08E.exit.i.i3171: %1157 = load i32, ptr %1156, align 4, !noalias !772, !noundef !5 %1158 = and i32 %1157, 288 %or.cond.i386 = icmp eq i32 %1158, 32 - br i1 %or.cond.i386, label %1159, label %.thread168.i + br i1 %or.cond.i386, label %1159, label %.thread169.i 1159: ; preds = %1153 call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %140), !noalias !933 @@ -3905,7 +3905,7 @@ _ZN12clap_builder7builder3ext10Extensions3get17hf2b7a264b97bac08E.exit.i.i3171: .noexc429: ; preds = %1159 %1167 = load i64, ptr %119, align 8, !range !947, !noalias !945, !noundef !5 %.not8.not.i.i = icmp eq i64 %1167, 0 - br i1 %.not8.not.i.i, label %.loopexit192.i, label %.lr.ph.i.i398 + br i1 %.not8.not.i.i, label %.loopexit193.i, label %.lr.ph.i.i398 .lr.ph.i.i398: ; preds = %.noexc429 %.val1.i.i.i.i = load i64, ptr %1112, align 8, !alias.scope !942, !noalias !948 @@ -3916,7 +3916,7 @@ _ZN12clap_builder7builder3ext10Extensions3get17hf2b7a264b97bac08E.exit.i.i3171: 1169: ; preds = %.noexc431, %.lr.ph.i.i398 %.sroa.02.0.copyload.i.i = load ptr, ptr %318, align 8, !noalias !945 %.not.i.i122.i = icmp eq ptr %.sroa.02.0.copyload.i.i, null - br i1 %.not.i.i122.i, label %1170, label %.loopexit191.i + br i1 %.not.i.i122.i, label %1170, label %.loopexit192.i 1170: ; preds = %1169 %.sroa.2.0.copyload.i.i = load i64, ptr %.sroa.2.0..sroa_idx.i.i, align 8, !noalias !945 @@ -3936,7 +3936,7 @@ _ZN12clap_builder7builder3ext10Extensions3get17hf2b7a264b97bac08E.exit.i.i3171: "_ZN12clap_builder6parser6parser6Parser15parse_short_arg28_$u7b$$u7b$closure$u7d$$u7d$17hc8ac4e7a5e39830aE.exit.thread4.i.i.i": ; preds = %.noexc430 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %118), !noalias !949 - br label %.loopexit191.i + br label %.loopexit192.i 1173: ; preds = %.noexc430 %1174 = load i32, ptr %1172, align 8, !range !288, !alias.scope !959, !noalias !964, !noundef !5 @@ -3957,9 +3957,9 @@ _ZN12clap_builder7builder3ext10Extensions3get17hf2b7a264b97bac08E.exit.i.i3171: .noexc431: ; preds = %1179 %1180 = load i64, ptr %119, align 8, !range !947, !noalias !945, !noundef !5 %.not.not.i.i = icmp eq i64 %1180, 0 - br i1 %.not.not.i.i, label %.loopexit192.i, label %1169 + br i1 %.not.not.i.i, label %.loopexit193.i, label %1169 -.thread168.i: ; preds = %.loopexit192.i, %1153, %.thread166.i +.thread169.i: ; preds = %.loopexit193.i, %1153, %.thread167.i call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %139), !noalias !933 store i64 -9223372036854775800, ptr %320, align 8, !noalias !933 %1181 = load i64, ptr %321, align 8, !alias.scope !724, !noalias !970, !noundef !5 @@ -3967,18 +3967,18 @@ _ZN12clap_builder7builder3ext10Extensions3get17hf2b7a264b97bac08E.exit.i.i3171: %1182 = invoke { i64, i64 } @_ZN8clap_lex10ShortFlags10advance_by17hd7b5dc76a7f69860E(ptr noalias noundef nonnull align 8 dereferenceable(56) %223, i64 noundef %1181) to label %.preheader.i unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.loopexit, !noalias !772 -.loopexit192.i: ; preds = %.noexc431, %.noexc429 +.loopexit193.i: ; preds = %.noexc431, %.noexc429 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %119), !noalias !945 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %140), !noalias !933 - br label %.thread168.i + br label %.thread169.i -.loopexit191.i: ; preds = %1169, %"_ZN12clap_builder6parser6parser6Parser15parse_short_arg28_$u7b$$u7b$closure$u7d$$u7d$17hc8ac4e7a5e39830aE.exit.thread4.i.i.i" +.loopexit192.i: ; preds = %1169, %"_ZN12clap_builder6parser6parser6Parser15parse_short_arg28_$u7b$$u7b$closure$u7d$$u7d$17hc8ac4e7a5e39830aE.exit.thread4.i.i.i" call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %119), !noalias !945 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %140), !noalias !933 br label %.thread858 .loopexit.split-lp.i: ; preds = %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.loopexit.split-lp, %1305, %1295, %1286, %1233, %.loopexit.split-lp.loopexit.split-lp.loopexit.i, %.loopexit.split-lp.loopexit.i, %.loopexit.i395 - %.pn.i = phi { ptr, i32 } [ %1234, %1233 ], [ %1287, %1286 ], [ %1306, %1305 ], [ %1296, %1295 ], [ %lpad.loopexit.i, %.loopexit.i395 ], [ %lpad.loopexit186.i, %.loopexit.split-lp.loopexit.i ], [ %lpad.loopexit189.i, %.loopexit.split-lp.loopexit.split-lp.loopexit.i ], [ %lpad.loopexit1127, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.loopexit ], [ %lpad.loopexit.split-lp1128, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.loopexit.split-lp ] + %.pn.i = phi { ptr, i32 } [ %1234, %1233 ], [ %1287, %1286 ], [ %1306, %1305 ], [ %1296, %1295 ], [ %lpad.loopexit.i, %.loopexit.i395 ], [ %lpad.loopexit187.i, %.loopexit.split-lp.loopexit.i ], [ %lpad.loopexit190.i, %.loopexit.split-lp.loopexit.split-lp.loopexit.i ], [ %lpad.loopexit1127, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.loopexit ], [ %lpad.loopexit.split-lp1128, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.loopexit.split-lp ] invoke fastcc void @"_ZN4core3ptr62drop_in_place$LT$clap_builder..parser..parser..ParseResult$GT$17hd8e230c94082bc9dE"(ptr noalias noundef nonnull align 8 dereferenceable(72) %139) #17 to label %.critedge315 unwind label %1292, !noalias !772 @@ -3988,16 +3988,16 @@ _ZN12clap_builder7builder3ext10Extensions3get17hf2b7a264b97bac08E.exit.i.i3171: br label %.loopexit.split-lp.i .loopexit.split-lp.loopexit.i: ; preds = %1196 - %lpad.loopexit186.i = landingpad { ptr, i32 } + %lpad.loopexit187.i = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp.i .loopexit.split-lp.loopexit.split-lp.loopexit.i: ; preds = %1260, %1250, %1248, %1237, %1226, %.preheader.i - %lpad.loopexit189.i = landingpad { ptr, i32 } + %lpad.loopexit190.i = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp.i -.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.loopexit: ; preds = %.thread168.i, %1188, %1265, %1273, %1294 +.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.loopexit: ; preds = %.thread169.i, %1188, %1265, %1273, %1294 %lpad.loopexit1127 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp.i @@ -4007,9 +4007,9 @@ _ZN12clap_builder7builder3ext10Extensions3get17hf2b7a264b97bac08E.exit.i.i3171: cleanup br label %.loopexit.split-lp.i -.preheader.i: ; preds = %.thread168.i, %1236 - %.9829 = phi i8 [ 1, %1236 ], [ %.0821, %.thread168.i ] - %.sroa.639.0.i = phi i64 [ %.sroa.639.1.i, %1236 ], [ undef, %.thread168.i ] +.preheader.i: ; preds = %.thread169.i, %1236 + %.9829 = phi i8 [ 1, %1236 ], [ %.0821, %.thread169.i ] + %.sroa.639.0.i = phi i64 [ %.sroa.639.1.i, %1236 ], [ undef, %.thread169.i ] call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %138), !noalias !933 invoke void @_ZN8clap_lex10ShortFlags9next_flag17ha2bfb32424d88ce6E(ptr noalias nocapture noundef nonnull sret({ i64, [2 x i64] }) align 8 dereferenceable(24) %138, ptr noalias noundef nonnull align 8 dereferenceable(56) %223) to label %1183 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.i, !noalias !772 @@ -4195,9 +4195,9 @@ _ZN12clap_builder7builder3ext10Extensions3get17hf2b7a264b97bac08E.exit.i.i3171: %.sroa.062.0.i = select i1 %1247, ptr @anon.c75c9e8d71bfc3cc89cc8f53c502a438.6, ptr %.fca.0.extract.i %.sroa.363.0.i = select i1 %1247, i64 0, i64 %.fca.1.extract.i call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %131), !noalias !933 - %.not185.i = icmp eq i64 %.sroa.363.0.i, 0 - %.sroa.03.0.i.i = select i1 %.not185.i, ptr null, ptr %.sroa.062.0.i - br i1 %.not185.i, label %1250, label %1248 + %.not186.i = icmp eq i64 %.sroa.363.0.i, 0 + %.sroa.03.0.i.i = select i1 %.not186.i, ptr null, ptr %.sroa.062.0.i + br i1 %.not186.i, label %1250, label %1248 1248: ; preds = %1246 %1249 = invoke { ptr, i64 } @"_ZN67_$LT$std..ffi..os_str..OsStr$u20$as$u20$clap_lex..ext..OsStrExt$GT$12strip_prefix17hc501523431ab0863E"(ptr noalias noundef nonnull readonly align 1 %.sroa.062.0.i, i64 noundef %.sroa.363.0.i, ptr noalias noundef nonnull readonly align 1 @anon.c75c9e8d71bfc3cc89cc8f53c502a438.41, i64 noundef 1) @@ -4293,8 +4293,8 @@ _ZN12clap_builder7builder3ext10Extensions3get17hf2b7a264b97bac08E.exit.i.i3171: call void @llvm.assume(i1 %1280) call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %1279, ptr nonnull readonly align 1 %1267, i64 %1269, i1 false) store i64 %1278, ptr %128, align 8, !noalias !933 - store ptr %1279, ptr %.sroa.4161.0..sroa_idx.i, align 8, !noalias !933 - store i64 %1269, ptr %.sroa.5162.0..sroa_idx.i, align 8, !noalias !933 + store ptr %1279, ptr %.sroa.4162.0..sroa_idx.i, align 8, !noalias !933 + store i64 %1269, ptr %.sroa.5163.0..sroa_idx.i, align 8, !noalias !933 %1281 = load i64, ptr %0, align 8, !range !947, !alias.scope !1017, !noalias !970, !noundef !5 %1282 = icmp eq i64 %1281, 0 %1283 = inttoptr i64 %1278 to ptr @@ -4320,7 +4320,7 @@ _ZN12clap_builder7builder3ext10Extensions3get17hf2b7a264b97bac08E.exit.i.i3171: br i1 %1288, label %1291, label %1290 1290: ; preds = %1291, %1289 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.13, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.4161.0..sroa_idx.i, i64 16, i1 false), !noalias !971 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.13, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.4162.0..sroa_idx.i, i64 16, i1 false), !noalias !971 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %128), !noalias !933 br label %1264 @@ -4341,10 +4341,10 @@ _ZN12clap_builder7builder3ext10Extensions3get17hf2b7a264b97bac08E.exit.i.i3171: store ptr @"_ZN43_$LT$char$u20$as$u20$core..fmt..Display$GT$3fmt17he4f8681ce2737fc3E", ptr %340, align 8, !noalias !933 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %115), !noalias !1020 store ptr @anon.c75c9e8d71bfc3cc89cc8f53c502a438.43, ptr %115, align 8, !noalias !1031 - store i64 1, ptr %.sroa.5154.0..sroa_idx.i, align 8, !noalias !1031 - store ptr %126, ptr %.sroa.7155.0..sroa_idx.i, align 8, !noalias !1031 - store i64 1, ptr %.sroa.8156.0..sroa_idx.i, align 8, !noalias !1031 - store ptr null, ptr %.sroa.10157.0..sroa_idx.i, align 8, !noalias !1031 + store i64 1, ptr %.sroa.5155.0..sroa_idx.i, align 8, !noalias !1031 + store ptr %126, ptr %.sroa.7156.0..sroa_idx.i, align 8, !noalias !1031 + store i64 1, ptr %.sroa.8157.0..sroa_idx.i, align 8, !noalias !1031 + store ptr null, ptr %.sroa.10158.0..sroa_idx.i, align 8, !noalias !1031 invoke void @_ZN5alloc3fmt6format12format_inner17h4f5d4c1ba302c88bE(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr }, i64 } }) align 8 dereferenceable(24) %127, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %115) to label %_ZN5alloc3fmt6format17h55b1a8bf61a7c713E.exit.i unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.i.loopexit, !noalias !772 @@ -4366,37 +4366,37 @@ _ZN5alloc3fmt6format17h55b1a8bf61a7c713E.exit.i: ; preds = %1294 store ptr @"_ZN66_$LT$alloc..borrow..Cow$LT$B$GT$$u20$as$u20$core..fmt..Display$GT$3fmt17h63ee372f193012adE", ptr %333, align 8, !noalias !933 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %114), !noalias !1032 store ptr @anon.c75c9e8d71bfc3cc89cc8f53c502a438.43, ptr %114, align 8, !noalias !1043 - store i64 1, ptr %.sroa.5152.0..sroa_idx.i, align 8, !noalias !1043 + store i64 1, ptr %.sroa.5153.0..sroa_idx.i, align 8, !noalias !1043 store ptr %135, ptr %.sroa.7.0..sroa_idx.i, align 8, !noalias !1043 store i64 1, ptr %.sroa.8.0..sroa_idx.i, align 8, !noalias !1043 store ptr null, ptr %.sroa.10.0..sroa_idx.i, align 8, !noalias !1043 invoke void @_ZN5alloc3fmt6format12format_inner17h4f5d4c1ba302c88bE(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr }, i64 } }) align 8 dereferenceable(24) %136, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %114) - to label %_ZN5alloc3fmt6format17h55b1a8bf61a7c713E.exit147.i unwind label %1295, !noalias !772 + to label %_ZN5alloc3fmt6format17h55b1a8bf61a7c713E.exit148.i unwind label %1295, !noalias !772 -_ZN5alloc3fmt6format17h55b1a8bf61a7c713E.exit147.i: ; preds = %1297 +_ZN5alloc3fmt6format17h55b1a8bf61a7c713E.exit148.i: ; preds = %1297 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %114), !noalias !1032 call void @llvm.experimental.noalias.scope.decl(metadata !1044) %1298 = load i64, ptr %134, align 8, !range !4, !alias.scope !1044, !noalias !933, !noundef !5 %1299 = icmp eq i64 %1298, -9223372036854775808 br i1 %1299, label %"_ZN4core3ptr50drop_in_place$LT$alloc..borrow..Cow$LT$str$GT$$GT$17h4d41c4ae28d5d3f6E.exit.i", label %1300 -1300: ; preds = %_ZN5alloc3fmt6format17h55b1a8bf61a7c713E.exit147.i +1300: ; preds = %_ZN5alloc3fmt6format17h55b1a8bf61a7c713E.exit148.i call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %113), !noalias !1047 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hc6fdfb9ba9128c2eE.llvm.13290713768692451428"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %113, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %134) - to label %.noexc148.i unwind label %1305, !noalias !772 + to label %.noexc149.i unwind label %1305, !noalias !772 -.noexc148.i: ; preds = %1300 +.noexc149.i: ; preds = %1300 %1301 = load i64, ptr %334, align 8, !range !4, !noalias !1047, !noundef !5 %.not.i.i.i.i.i.i389 = icmp eq i64 %1301, 0 br i1 %.not.i.i.i.i.i.i389, label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17he11f50f4ada41903E.exit.i.i", label %1302 -1302: ; preds = %.noexc148.i +1302: ; preds = %.noexc149.i %1303 = load ptr, ptr %113, align 8, !noalias !1047, !nonnull !5, !noundef !5 %1304 = load i64, ptr %335, align 8, !noalias !1047, !noundef !5 invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.13290713768692451428"(ptr noalias noundef nonnull readonly align 1 %336, ptr noundef nonnull %1303, i64 noundef %1301, i64 noundef %1304) to label %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17he11f50f4ada41903E.exit.i.i" unwind label %1305, !noalias !772 -"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17he11f50f4ada41903E.exit.i.i": ; preds = %1302, %.noexc148.i +"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17he11f50f4ada41903E.exit.i.i": ; preds = %1302, %.noexc149.i call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %113), !noalias !1047 br label %"_ZN4core3ptr50drop_in_place$LT$alloc..borrow..Cow$LT$str$GT$$GT$17h4d41c4ae28d5d3f6E.exit.i" @@ -4406,7 +4406,7 @@ _ZN5alloc3fmt6format17h55b1a8bf61a7c713E.exit147.i: ; preds = %1297 invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17he11f50f4ada41903E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %136) #17 to label %.loopexit.split-lp.i unwind label %1292, !noalias !772 -"_ZN4core3ptr50drop_in_place$LT$alloc..borrow..Cow$LT$str$GT$$GT$17h4d41c4ae28d5d3f6E.exit.i": ; preds = %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17he11f50f4ada41903E.exit.i.i", %_ZN5alloc3fmt6format17h55b1a8bf61a7c713E.exit147.i +"_ZN4core3ptr50drop_in_place$LT$alloc..borrow..Cow$LT$str$GT$$GT$17h4d41c4ae28d5d3f6E.exit.i": ; preds = %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17he11f50f4ada41903E.exit.i.i", %_ZN5alloc3fmt6format17h55b1a8bf61a7c713E.exit148.i call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %134), !noalias !933 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %135), !noalias !933 %.sroa.022.i.sroa.0.0.copyload = load ptr, ptr %136, align 8, !noalias !933 @@ -4420,7 +4420,7 @@ _ZN5alloc3fmt6format17h55b1a8bf61a7c713E.exit147.i: ; preds = %1297 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %224) br label %778 -.thread858: ; preds = %.loopexit191.i, %.noexc423, %.noexc419, %"_ZN121_$LT$clap_builder..builder..command..Command$u20$as$u20$core..ops..index..Index$LT$$RF$clap_builder..util..id..Id$GT$$GT$5index17h92017b9610d403c8E.exit95.i", %"_ZN121_$LT$clap_builder..builder..command..Command$u20$as$u20$core..ops..index..Index$LT$$RF$clap_builder..util..id..Id$GT$$GT$5index17h92017b9610d403c8E.exit.i409", %.noexc426 +.thread858: ; preds = %.loopexit192.i, %.noexc423, %.noexc419, %"_ZN121_$LT$clap_builder..builder..command..Command$u20$as$u20$core..ops..index..Index$LT$$RF$clap_builder..util..id..Id$GT$$GT$5index17h92017b9610d403c8E.exit95.i", %"_ZN121_$LT$clap_builder..builder..command..Command$u20$as$u20$core..ops..index..Index$LT$$RF$clap_builder..util..id..Id$GT$$GT$5index17h92017b9610d403c8E.exit.i409", %.noexc426 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %127) call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %129) call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %132) @@ -10152,6 +10152,7 @@ _ZN12clap_builder6parser6parser6Parser15verify_num_args17hf07cb5a4e9e4655dE.exit to label %"_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_extend17hcf15c03c5b193b03E.exit" unwind label %89 "_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_extend17hcf15c03c5b193b03E.exit": ; preds = %357, %_ZN12clap_builder6parser6parser6Parser15verify_num_args17hf07cb5a4e9e4655dE.exit + %.sroa.4.0 = phi i64 [ %7, %_ZN12clap_builder6parser6parser6Parser15verify_num_args17hf07cb5a4e9e4655dE.exit ], [ undef, %357 ] %.sroa.0.0 = phi i64 [ %6, %_ZN12clap_builder6parser6parser6Parser15verify_num_args17hf07cb5a4e9e4655dE.exit ], [ 0, %357 ] %361 = getelementptr inbounds i8, ptr %4, i64 540 %362 = load i32, ptr %361, align 4, !range !628, !noundef !5 @@ -10172,7 +10173,7 @@ _ZN12clap_builder6parser6parser6Parser15verify_num_args17hf07cb5a4e9e4655dE.exit 372: ; preds = %363 %switch = icmp ne i64 %.sroa.0.0, 0 - %373 = icmp eq i64 %7, 0 + %373 = icmp eq i64 %.sroa.4.0, 0 %.0133 = select i1 %switch, i1 %373, i1 false br i1 %.0133, label %488, label %374 @@ -10386,7 +10387,7 @@ _ZN12clap_builder6parser6parser6Parser15verify_num_args17hf07cb5a4e9e4655dE.exit %463 = extractelement <2 x i1> %462, i64 0 %464 = extractelement <2 x i1> %462, i64 1 %.0.i218 = select i1 %463, i1 true, i1 %464 - %465 = icmp eq i64 %442, %7 + %465 = icmp eq i64 %.sroa.4.0, %442 %466 = and i1 %.0.i218, %switch169 %or.cond399 = select i1 %466, i1 %465, i1 false br i1 %or.cond399, label %448, label %467 diff --git a/bench/clap-rs/optimized/ms9r2ilwmkwzn0d.ll b/bench/clap-rs/optimized/ms9r2ilwmkwzn0d.ll index 2e20e6a21d9..ce9580a39d0 100644 --- a/bench/clap-rs/optimized/ms9r2ilwmkwzn0d.ll +++ b/bench/clap-rs/optimized/ms9r2ilwmkwzn0d.ll @@ -3858,7 +3858,7 @@ _ZN12clap_builder6parser9validator9Conflicts9with_args17hfaf059ae4ece4397E.exit: invoke void @"_ZN4core3ptr144drop_in_place$LT$clap_builder..util..flat_map..FlatMap$LT$clap_builder..util..id..Id$C$alloc..vec..Vec$LT$clap_builder..util..id..Id$GT$$GT$$GT$17hd6d3d625c0744481E"(ptr noalias noundef nonnull align 8 dereferenceable(48) %107) to label %common.resume unwind label %220 -.loopexit: ; preds = %.lr.ph72.i.i, %634 +.loopexit: ; preds = %.lr.ph74.i.i, %634 %lpad.loopexit = landingpad { ptr, i32 } cleanup br label %.body79 @@ -3873,7 +3873,7 @@ _ZN12clap_builder6parser9validator9Conflicts9with_args17hfaf059ae4ece4397E.exit: cleanup br label %.body79 -.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %"_ZN4core3ptr86drop_in_place$LT$alloc..vec..into_iter..IntoIter$LT$clap_builder..util..id..Id$GT$$GT$17hb543d1402a7b80e5E.exit.i.i", %.loopexit57.i.i, %574, %555 +.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %"_ZN4core3ptr86drop_in_place$LT$alloc..vec..into_iter..IntoIter$LT$clap_builder..util..id..Id$GT$$GT$17hb543d1402a7b80e5E.exit.i.i", %.loopexit59.i.i, %574, %555 %lpad.loopexit193 = landingpad { ptr, i32 } cleanup br label %.body79 @@ -5314,8 +5314,8 @@ _ZN12clap_builder7builder3ext10Extensions3get17hf2b7a264b97bac08E.exit.i: ; pred %.sroa.4.0..sroa_idx.i.i.i105 = getelementptr inbounds i8, ptr %44, i64 8 %.sroa.5.0..sroa_idx.i.i.i106 = getelementptr inbounds i8, ptr %44, i64 16 %.sroa.4.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %43, i64 8 - %.sroa.541.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %43, i64 16 - %.sroa.642.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %43, i64 24 + %.sroa.542.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %43, i64 16 + %.sroa.643.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %43, i64 24 %532 = getelementptr inbounds i8, ptr %39, i64 8 %533 = getelementptr inbounds i8, ptr %0, i64 8 %534 = getelementptr inbounds i8, ptr %0, i64 16 @@ -5329,19 +5329,19 @@ _ZN12clap_builder7builder3ext10Extensions3get17hf2b7a264b97bac08E.exit.i: ; pred %540 = getelementptr inbounds i8, ptr %35, i64 8 %541 = getelementptr inbounds i8, ptr %34, i64 24 %542 = getelementptr inbounds i8, ptr %34, i64 32 - %.sroa.4.0..sroa_idx.i.i.i37.i.i = getelementptr inbounds i8, ptr %34, i64 8 - %.sroa.5.0..sroa_idx.i.i.i38.i.i = getelementptr inbounds i8, ptr %34, i64 16 + %.sroa.4.0..sroa_idx.i.i.i38.i.i = getelementptr inbounds i8, ptr %34, i64 8 + %.sroa.5.0..sroa_idx.i.i.i39.i.i = getelementptr inbounds i8, ptr %34, i64 16 br label %.loopexit.i.i112 .loopexit.i.i112: ; preds = %.loopexit.i.i112.backedge, %.noexc139 %.sroa.6.0.i.i = phi ptr [ %.sroa.0.sroa.3.0.copyload.i.i, %.noexc139 ], [ %551, %.loopexit.i.i112.backedge ] - %.sroa.040.0.i.i = phi ptr [ %.sroa.0.sroa.0.0.copyload.i.i, %.noexc139 ], [ %550, %.loopexit.i.i112.backedge ] + %.sroa.041.0.i.i = phi ptr [ %.sroa.0.sroa.0.0.copyload.i.i, %.noexc139 ], [ %550, %.loopexit.i.i112.backedge ] %.sroa.7.0.i.i = phi ptr [ undef, %.noexc139 ], [ %spec.select.i.i, %.loopexit.i.i112.backedge ] br label %543 543: ; preds = %549, %.loopexit.i.i112 %544 = phi ptr [ %551, %549 ], [ %.sroa.6.0.i.i, %.loopexit.i.i112 ] - %545 = phi ptr [ %550, %549 ], [ %.sroa.040.0.i.i, %.loopexit.i.i112 ] + %545 = phi ptr [ %550, %549 ], [ %.sroa.041.0.i.i, %.loopexit.i.i112 ] %546 = icmp eq ptr %545, %.sroa.0.sroa.2.0.copyload.i.i br i1 %546, label %_ZN12clap_builder6parser9validator9Validator15gather_requires17h671295d590d5a749E.exit.i, label %547 @@ -5386,7 +5386,7 @@ _ZN4core4iter6traits8iterator8Iterator8try_fold17h9f735a3c11e4ec62E.exit.i.i: ; .noexc141: ; preds = %555 %.not7.i.i.i.i107 = icmp eq ptr %562, null - br i1 %.not7.i.i.i.i107, label %.loopexit57.i.i, label %.lr.ph.i.i.i.i108 + br i1 %.not7.i.i.i.i107, label %.loopexit59.i.i, label %.lr.ph.i.i.i.i108 .lr.ph.i.i.i.i108: ; preds = %.noexc141 %563 = getelementptr inbounds i8, ptr %545, i64 8 @@ -5416,7 +5416,7 @@ _ZN4core4iter6traits8iterator8Iterator8try_fold17h9f735a3c11e4ec62E.exit.i.i: ; .noexc142: ; preds = %"_ZN12clap_builder7builder7command7Command4find28_$u7b$$u7b$closure$u7d$$u7d$17h1b480303718db51fE.llvm.5455346206542766164.exit.thread.i.i.i.i110" %.not.i.i.i.i111 = icmp eq ptr %573, null - br i1 %.not.i.i.i.i111, label %.loopexit57.i.i, label %566 + br i1 %.not.i.i.i.i111, label %.loopexit59.i.i, label %566 574: ; preds = %"_ZN12clap_builder7builder7command7Command4find28_$u7b$$u7b$closure$u7d$$u7d$17h1b480303718db51fE.llvm.5455346206542766164.exit.i.i.i.i113" %575 = getelementptr inbounds i8, ptr %567, i64 488 @@ -5435,12 +5435,12 @@ _ZN4core4iter6traits8iterator8Iterator8try_fold17h9f735a3c11e4ec62E.exit.i.i: ; call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %43), !noalias !1091 store ptr %.sroa.4.0.copyload.i.i.i, ptr %43, align 8, !noalias !1091 store i64 %.sroa.0.0.copyload.i.i.i, ptr %.sroa.4.0..sroa_idx.i.i, align 8, !noalias !1091 - store ptr %.sroa.4.0.copyload.i.i.i, ptr %.sroa.541.0..sroa_idx.i.i, align 8, !noalias !1091 - store ptr %577, ptr %.sroa.642.0..sroa_idx.i.i, align 8, !noalias !1091 + store ptr %.sroa.4.0.copyload.i.i.i, ptr %.sroa.542.0..sroa_idx.i.i, align 8, !noalias !1091 + store ptr %577, ptr %.sroa.643.0..sroa_idx.i.i, align 8, !noalias !1091 %578 = icmp eq i64 %.sroa.5.0.copyload.i.i.i, 0 br i1 %578, label %._crit_edge.i.i, label %.lr.ph.i.i -.loopexit57.i.i: ; preds = %.noexc142, %.noexc141 +.loopexit59.i.i: ; preds = %.noexc142, %.noexc141 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %42), !noalias !1112 %579 = load ptr, ptr %108, align 8, !alias.scope !1105, !noalias !1106, !nonnull !7, !align !8, !noundef !7 call void @llvm.experimental.noalias.scope.decl(metadata !1144) @@ -5457,7 +5457,7 @@ _ZN4core4iter6traits8iterator8Iterator8try_fold17h9f735a3c11e4ec62E.exit.i.i: ; %585 = invoke noundef align 8 dereferenceable_or_null(96) ptr @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd48a64390d36a567E.llvm.5455346206542766164"(ptr noalias noundef nonnull align 8 dereferenceable(16) %41) to label %.noexc144 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit -.noexc144: ; preds = %.loopexit57.i.i +.noexc144: ; preds = %.loopexit59.i.i %.not7.i.i27.i.i = icmp eq ptr %585, null br i1 %.not7.i.i27.i.i, label %_ZN12clap_builder7builder7command7Command10find_group17h890c88177363845cE.exit.thread.i.i, label %.lr.ph.i.i28.i.i @@ -5532,7 +5532,7 @@ _ZN12clap_builder7builder7command7Command10find_group17h890c88177363845cE.exit.t %604 = phi ptr [ %615, %"_ZN12clap_builder4util5graph19ChildGraph$LT$T$GT$6insert17h3b949f5073003464E.exit.i.i" ], [ %.sroa.4.0.copyload.i.i.i, %.noexc143 ] call void @llvm.experimental.noalias.scope.decl(metadata !1182) %605 = getelementptr inbounds i8, ptr %604, i64 16 - store ptr %605, ptr %.sroa.541.0..sroa_idx.i.i, align 8, !alias.scope !1182, !noalias !1091 + store ptr %605, ptr %.sroa.542.0..sroa_idx.i.i, align 8, !alias.scope !1182, !noalias !1091 %606 = load ptr, ptr %604, align 8, !noalias !1182, !nonnull !7, !align !31, !noundef !7 %607 = getelementptr inbounds i8, ptr %604, i64 8 %608 = load i64, ptr %607, align 8, !noalias !1182, !noundef !7 @@ -5562,17 +5562,17 @@ _ZN12clap_builder7builder7command7Command10find_group17h890c88177363845cE.exit.t store ptr inttoptr (i64 8 to ptr), ptr %.sroa.4.0..sroa_idx.i.i.i.i.i, align 8, !noalias !1192 store i64 0, ptr %.sroa.5.0..sroa_idx.i.i.i.i.i, align 8, !noalias !1192 invoke void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h5b784d44873e3e12E.llvm.12273313129313454071"(ptr noalias noundef nonnull align 8 dereferenceable(24) %0, ptr noalias nocapture noundef nonnull align 8 dereferenceable(40) %37) - to label %.noexc34.i.i unwind label %597 + to label %.noexc35.i.i unwind label %597 -.noexc34.i.i: ; preds = %614 +.noexc35.i.i: ; preds = %614 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %37), !noalias !1192 br label %"_ZN12clap_builder4util5graph19ChildGraph$LT$T$GT$6insert17h3b949f5073003464E.exit.i.i" -"_ZN12clap_builder4util5graph19ChildGraph$LT$T$GT$6insert17h3b949f5073003464E.exit.i.i": ; preds = %.noexc34.i.i, %.noexc.i.i117 +"_ZN12clap_builder4util5graph19ChildGraph$LT$T$GT$6insert17h3b949f5073003464E.exit.i.i": ; preds = %.noexc35.i.i, %.noexc.i.i117 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38), !noalias !1188 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39), !noalias !1091 - %615 = load ptr, ptr %.sroa.541.0..sroa_idx.i.i, align 8, !alias.scope !1197, !noalias !1091, !noundef !7 - %616 = load ptr, ptr %.sroa.642.0..sroa_idx.i.i, align 8, !alias.scope !1197, !noalias !1091, !noundef !7 + %615 = load ptr, ptr %.sroa.542.0..sroa_idx.i.i, align 8, !alias.scope !1197, !noalias !1091, !noundef !7 + %616 = load ptr, ptr %.sroa.643.0..sroa_idx.i.i, align 8, !alias.scope !1197, !noalias !1091, !noundef !7 %617 = icmp eq ptr %615, %616 br i1 %617, label %._crit_edge.i.i, label %.lr.ph.i.i @@ -5590,16 +5590,16 @@ _ZN12clap_builder7builder7command7Command10find_group17h890c88177363845cE.exit.t %.val26.i.i = load i64, ptr %622, align 8, !noundef !7 %623 = getelementptr inbounds { ptr, i64 }, ptr %.val.i.i, i64 %.val26.i.i %624 = icmp eq i64 %.val26.i.i, 0 - br i1 %624, label %.loopexit.i.i112.backedge, label %.lr.ph72.i.i + br i1 %624, label %.loopexit.i.i112.backedge, label %.lr.ph74.i.i -.loopexit.i.i112.backedge: ; preds = %"_ZN12clap_builder4util5graph19ChildGraph$LT$T$GT$6insert17h3b949f5073003464E.exit39.i.i", %620, %.noexc148, %_ZN12clap_builder7builder7command7Command10find_group17h890c88177363845cE.exit.thread.i.i +.loopexit.i.i112.backedge: ; preds = %"_ZN12clap_builder4util5graph19ChildGraph$LT$T$GT$6insert17h3b949f5073003464E.exit40.i.i", %620, %.noexc148, %_ZN12clap_builder7builder7command7Command10find_group17h890c88177363845cE.exit.thread.i.i br label %.loopexit.i.i112 -.lr.ph72.i.i: ; preds = %620, %"_ZN12clap_builder4util5graph19ChildGraph$LT$T$GT$6insert17h3b949f5073003464E.exit39.i.i" - %.sroa.043.070.i.i = phi ptr [ %625, %"_ZN12clap_builder4util5graph19ChildGraph$LT$T$GT$6insert17h3b949f5073003464E.exit39.i.i" ], [ %.val.i.i, %620 ] - %625 = getelementptr inbounds i8, ptr %.sroa.043.070.i.i, i64 16 - %626 = load ptr, ptr %.sroa.043.070.i.i, align 8, !nonnull !7, !align !31, !noundef !7 - %627 = getelementptr inbounds i8, ptr %.sroa.043.070.i.i, i64 8 +.lr.ph74.i.i: ; preds = %620, %"_ZN12clap_builder4util5graph19ChildGraph$LT$T$GT$6insert17h3b949f5073003464E.exit40.i.i" + %.sroa.044.072.i.i = phi ptr [ %625, %"_ZN12clap_builder4util5graph19ChildGraph$LT$T$GT$6insert17h3b949f5073003464E.exit40.i.i" ], [ %.val.i.i, %620 ] + %625 = getelementptr inbounds i8, ptr %.sroa.044.072.i.i, i64 16 + %626 = load ptr, ptr %.sroa.044.072.i.i, align 8, !nonnull !7, !align !31, !noundef !7 + %627 = getelementptr inbounds i8, ptr %.sroa.044.072.i.i, i64 8 %628 = load i64, ptr %627, align 8, !noundef !7 call void @llvm.experimental.noalias.scope.decl(metadata !1199) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %36), !noalias !1091 @@ -5614,30 +5614,30 @@ _ZN12clap_builder7builder7command7Command10find_group17h890c88177363845cE.exit.t %632 = invoke { i64, i64 } @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8position17h75ca6e42f2ec186cE.llvm.12273313129313454071"(ptr noalias noundef nonnull align 8 dereferenceable(16) %35, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %36) to label %.noexc149 unwind label %.loopexit -.noexc149: ; preds = %.lr.ph72.i.i +.noexc149: ; preds = %.lr.ph74.i.i %633 = extractvalue { i64, i64 } %632, 0 - %switch.i.i35.i.i = icmp eq i64 %633, 0 - br i1 %switch.i.i35.i.i, label %634, label %"_ZN12clap_builder4util5graph19ChildGraph$LT$T$GT$6insert17h3b949f5073003464E.exit39.i.i" + %switch.i.i36.i.i = icmp eq i64 %633, 0 + br i1 %switch.i.i36.i.i, label %634, label %"_ZN12clap_builder4util5graph19ChildGraph$LT$T$GT$6insert17h3b949f5073003464E.exit40.i.i" 634: ; preds = %.noexc149 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %34), !noalias !1206 store ptr %626, ptr %541, align 8, !noalias !1206 store i64 %628, ptr %542, align 8, !noalias !1206 store i64 0, ptr %34, align 8, !noalias !1206 - store ptr inttoptr (i64 8 to ptr), ptr %.sroa.4.0..sroa_idx.i.i.i37.i.i, align 8, !noalias !1206 - store i64 0, ptr %.sroa.5.0..sroa_idx.i.i.i38.i.i, align 8, !noalias !1206 + store ptr inttoptr (i64 8 to ptr), ptr %.sroa.4.0..sroa_idx.i.i.i38.i.i, align 8, !noalias !1206 + store i64 0, ptr %.sroa.5.0..sroa_idx.i.i.i39.i.i, align 8, !noalias !1206 invoke void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h5b784d44873e3e12E.llvm.12273313129313454071"(ptr noalias noundef nonnull align 8 dereferenceable(24) %0, ptr noalias nocapture noundef nonnull align 8 dereferenceable(40) %34) to label %.noexc150 unwind label %.loopexit .noexc150: ; preds = %634 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %34), !noalias !1206 - br label %"_ZN12clap_builder4util5graph19ChildGraph$LT$T$GT$6insert17h3b949f5073003464E.exit39.i.i" + br label %"_ZN12clap_builder4util5graph19ChildGraph$LT$T$GT$6insert17h3b949f5073003464E.exit40.i.i" -"_ZN12clap_builder4util5graph19ChildGraph$LT$T$GT$6insert17h3b949f5073003464E.exit39.i.i": ; preds = %.noexc150, %.noexc149 +"_ZN12clap_builder4util5graph19ChildGraph$LT$T$GT$6insert17h3b949f5073003464E.exit40.i.i": ; preds = %.noexc150, %.noexc149 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35), !noalias !1202 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36), !noalias !1091 %635 = icmp eq ptr %625, %623 - br i1 %635, label %.loopexit.i.i112.backedge, label %.lr.ph72.i.i + br i1 %635, label %.loopexit.i.i112.backedge, label %.lr.ph74.i.i _ZN12clap_builder6parser9validator9Validator15gather_requires17h671295d590d5a749E.exit.i: ; preds = %_ZN4core4iter6traits8iterator8Iterator8try_fold17h9f735a3c11e4ec62E.exit.i.i, %543 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %51), !noalias !1211 @@ -7539,12 +7539,12 @@ define internal fastcc void @_ZN12clap_builder6parser9validator9Conflicts16gathe br label %.loopexit.split-lp .loopexit.split-lp.loopexit: ; preds = %"_ZN53_$LT$T$u20$as$u20$core..slice..cmp..SliceContains$GT$14slice_contains28_$u7b$$u7b$closure$u7d$$u7d$17hfdd0c5cedc86e36bE.llvm.1283588139133547551.exit.backedge.i.i" - %lpad.loopexit82 = landingpad { ptr, i32 } + %lpad.loopexit83 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp .loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %"_ZN12clap_builder7builder3str91_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$clap_builder..builder..str..inner..Inner$GT$2eq17h4a96cf5294ec7d50E.exit.thread", %68, %75, %95 - %lpad.loopexit85 = landingpad { ptr, i32 } + %lpad.loopexit86 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp @@ -7554,7 +7554,7 @@ define internal fastcc void @_ZN12clap_builder6parser9validator9Conflicts16gathe br label %.loopexit.split-lp .loopexit.split-lp: ; preds = %.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit - %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit82, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit85, %.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ] + %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit83, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit86, %.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ] br i1 %15, label %103, label %107 16: ; preds = %.noexc @@ -7563,10 +7563,10 @@ define internal fastcc void @_ZN12clap_builder6parser9validator9Conflicts16gathe to label %22 unwind label %.thread 17: ; preds = %.noexc, %22 - %.sink91 = phi ptr [ %10, %22 ], [ %14, %.noexc ] - %18 = getelementptr i8, ptr %.sink91, i64 8 + %.sink92 = phi ptr [ %10, %22 ], [ %14, %.noexc ] + %18 = getelementptr i8, ptr %.sink92, i64 8 %19 = load ptr, ptr %18, align 8, !nonnull !7, !noundef !7 - %20 = getelementptr i8, ptr %.sink91, i64 16 + %20 = getelementptr i8, ptr %.sink92, i64 16 %21 = load i64, ptr %20, align 8, !noundef !7 invoke void @"_ZN12clap_builder4util8flat_map20FlatMap$LT$K$C$V$GT$4iter17hf9655ff4c77b09a7E"(ptr noalias nocapture noundef nonnull sret({ { ptr, ptr }, { ptr, ptr } }) align 8 dereferenceable(32) %8, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %1) to label %23 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp @@ -7599,12 +7599,12 @@ define internal fastcc void @_ZN12clap_builder6parser9validator9Conflicts16gathe br label %32 32: ; preds = %.lr.ph, %.backedge - %.sroa.0.088 = phi ptr [ %.sroa.0.0.copyload, %.lr.ph ], [ %33, %.backedge ] - %.sroa.6.087 = phi ptr [ %.sroa.6.0.copyload, %.lr.ph ], [ %38, %.backedge ] - %33 = getelementptr inbounds i8, ptr %.sroa.0.088, i64 16 - %34 = icmp ne ptr %.sroa.6.087, null + %.sroa.0.089 = phi ptr [ %.sroa.0.0.copyload, %.lr.ph ], [ %33, %.backedge ] + %.sroa.6.088 = phi ptr [ %.sroa.6.0.copyload, %.lr.ph ], [ %38, %.backedge ] + %33 = getelementptr inbounds i8, ptr %.sroa.0.089, i64 16 + %34 = icmp ne ptr %.sroa.6.088, null call void @llvm.assume(i1 %34) - %35 = icmp eq ptr %.sroa.6.087, %.sroa.8.0.copyload + %35 = icmp eq ptr %.sroa.6.088, %.sroa.8.0.copyload br i1 %35, label %36, label %37 36: ; preds = %32 @@ -7619,9 +7619,9 @@ define internal fastcc void @_ZN12clap_builder6parser9validator9Conflicts16gathe br i1 %15, label %.noexc41, label %41 37: ; preds = %32 - %38 = getelementptr inbounds i8, ptr %.sroa.6.087, i64 24 + %38 = getelementptr inbounds i8, ptr %.sroa.6.088, i64 24 call void @llvm.experimental.noalias.scope.decl(metadata !1851) - %39 = getelementptr inbounds i8, ptr %.sroa.0.088, i64 8 + %39 = getelementptr inbounds i8, ptr %.sroa.0.089, i64 8 %40 = load i64, ptr %39, align 8, !alias.scope !1854, !noalias !1857, !noundef !7 %.not.i.i = icmp eq i64 %27, %40 br i1 %.not.i.i, label %"_ZN12clap_builder7builder3str91_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$clap_builder..builder..str..inner..Inner$GT$2eq17h4a96cf5294ec7d50E.exit", label %"_ZN12clap_builder7builder3str91_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$clap_builder..builder..str..inner..Inner$GT$2eq17h4a96cf5294ec7d50E.exit.thread" @@ -7652,7 +7652,7 @@ define internal fastcc void @_ZN12clap_builder6parser9validator9Conflicts16gathe br label %41 "_ZN12clap_builder7builder3str91_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$clap_builder..builder..str..inner..Inner$GT$2eq17h4a96cf5294ec7d50E.exit": ; preds = %37 - %49 = load ptr, ptr %.sroa.0.088, align 8, !alias.scope !1854, !noalias !1857, !nonnull !7, !align !31, !noundef !7 + %49 = load ptr, ptr %.sroa.0.089, align 8, !alias.scope !1854, !noalias !1857, !nonnull !7, !align !31, !noundef !7 %bcmp.i.i = call i32 @bcmp(ptr nonnull readonly %28, ptr nonnull readonly %49, i64 %27), !alias.scope !1866, !noalias !1870 %50 = icmp eq i32 %bcmp.i.i, 0 br i1 %50, label %.backedge, label %"_ZN12clap_builder7builder3str91_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$clap_builder..builder..str..inner..Inner$GT$2eq17h4a96cf5294ec7d50E.exit.thread" @@ -7668,11 +7668,11 @@ define internal fastcc void @_ZN12clap_builder6parser9validator9Conflicts16gathe .noexc43: ; preds = %"_ZN12clap_builder7builder3str91_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$clap_builder..builder..str..inner..Inner$GT$2eq17h4a96cf5294ec7d50E.exit.thread" %.not3.not.i.i = icmp eq ptr %51, null - br i1 %.not3.not.i.i, label %.thread77, label %.lr.ph.i.i + br i1 %.not3.not.i.i, label %.thread78, label %.lr.ph.i.i .lr.ph.i.i: ; preds = %.noexc43 %52 = load i64, ptr %39, align 8, !alias.scope !1879, !noalias !1886, !noundef !7 - %53 = load ptr, ptr %.sroa.0.088, align 8, !alias.scope !1893, !noalias !1894, !nonnull !7, !align !31 + %53 = load ptr, ptr %.sroa.0.089, align 8, !alias.scope !1893, !noalias !1894, !nonnull !7, !align !31 br label %54 54: ; preds = %.noexc44, %.lr.ph.i.i @@ -7699,15 +7699,15 @@ define internal fastcc void @_ZN12clap_builder6parser9validator9Conflicts16gathe .noexc44: ; preds = %"_ZN53_$LT$T$u20$as$u20$core..slice..cmp..SliceContains$GT$14slice_contains28_$u7b$$u7b$closure$u7d$$u7d$17hfdd0c5cedc86e36bE.llvm.1283588139133547551.exit.backedge.i.i" %.not.not.i.i = icmp eq ptr %61, null - br i1 %.not.not.i.i, label %.thread77, label %54 + br i1 %.not.not.i.i, label %.thread78, label %54 -.thread77: ; preds = %.noexc44, %.noexc43 +.thread78: ; preds = %.noexc44, %.noexc43 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6), !noalias !1874 br label %75 62: ; preds = %58 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6), !noalias !1874 - %63 = load ptr, ptr %.sroa.0.088, align 8, !nonnull !7, !align !31, !noundef !7 + %63 = load ptr, ptr %.sroa.0.089, align 8, !nonnull !7, !align !31, !noundef !7 %64 = load i64, ptr %39, align 8, !noundef !7 %65 = load i64, ptr %13, align 8, !alias.scope !1909, !noalias !1912, !noundef !7 %66 = load i64, ptr %11, align 8, !alias.scope !1909, !noalias !1912, !noundef !7 @@ -7734,10 +7734,10 @@ define internal fastcc void @_ZN12clap_builder6parser9validator9Conflicts16gathe store i64 %74, ptr %13, align 8, !alias.scope !1909, !noalias !1912 br label %75 -75: ; preds = %.thread77, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h60e7069439006c80E.exit" - %76 = getelementptr inbounds i8, ptr %.sroa.6.087, i64 8 +75: ; preds = %.thread78, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h60e7069439006c80E.exit" + %76 = getelementptr inbounds i8, ptr %.sroa.6.088, i64 8 %77 = load ptr, ptr %76, align 8, !nonnull !7, !noundef !7 - %78 = getelementptr inbounds i8, ptr %.sroa.6.087, i64 16 + %78 = getelementptr inbounds i8, ptr %.sroa.6.088, i64 16 %79 = load i64, ptr %78, align 8, !noundef !7 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5), !noalias !1914 %80 = getelementptr inbounds { ptr, i64 }, ptr %77, i64 %79 @@ -7748,7 +7748,7 @@ define internal fastcc void @_ZN12clap_builder6parser9validator9Conflicts16gathe .noexc53: ; preds = %75 %.not3.not.i.i46 = icmp eq ptr %81, null - br i1 %.not3.not.i.i46, label %.thread80, label %.lr.ph.i.i47 + br i1 %.not3.not.i.i46, label %.thread81, label %.lr.ph.i.i47 .lr.ph.i.i47: ; preds = %.noexc53, %.noexc54 %82 = phi ptr [ %88, %.noexc54 ], [ %81, %.noexc53 ] @@ -7772,15 +7772,15 @@ define internal fastcc void @_ZN12clap_builder6parser9validator9Conflicts16gathe .noexc54: ; preds = %"_ZN53_$LT$T$u20$as$u20$core..slice..cmp..SliceContains$GT$14slice_contains28_$u7b$$u7b$closure$u7d$$u7d$17hfdd0c5cedc86e36bE.llvm.1283588139133547551.exit.backedge.i.i49" %.not.not.i.i50 = icmp eq ptr %88, null - br i1 %.not.not.i.i50, label %.thread80, label %.lr.ph.i.i47 + br i1 %.not.not.i.i50, label %.thread81, label %.lr.ph.i.i47 -.thread80: ; preds = %.noexc54, %.noexc53 +.thread81: ; preds = %.noexc54, %.noexc53 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5), !noalias !1914 br label %.backedge 89: ; preds = %85 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5), !noalias !1914 - %90 = load ptr, ptr %.sroa.0.088, align 8, !nonnull !7, !align !31, !noundef !7 + %90 = load ptr, ptr %.sroa.0.089, align 8, !nonnull !7, !align !31, !noundef !7 %91 = load i64, ptr %39, align 8, !noundef !7 %92 = load i64, ptr %13, align 8, !alias.scope !1941, !noalias !1944, !noundef !7 %93 = load i64, ptr %11, align 8, !alias.scope !1941, !noalias !1944, !noundef !7 @@ -7807,7 +7807,7 @@ define internal fastcc void @_ZN12clap_builder6parser9validator9Conflicts16gathe store i64 %101, ptr %13, align 8, !alias.scope !1941, !noalias !1944 br label %.backedge -.backedge: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h60e7069439006c80E.exit58", %.thread80, %"_ZN12clap_builder7builder3str91_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$clap_builder..builder..str..inner..Inner$GT$2eq17h4a96cf5294ec7d50E.exit" +.backedge: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h60e7069439006c80E.exit58", %.thread81, %"_ZN12clap_builder7builder3str91_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$clap_builder..builder..str..inner..Inner$GT$2eq17h4a96cf5294ec7d50E.exit" %102 = icmp eq ptr %33, %.sroa.5.0.copyload br i1 %102, label %._crit_edge, label %32 @@ -8520,11 +8520,11 @@ define hidden void @_ZN12clap_builder7mkeymap7MKeyMap6_build17h92015560e1fe5051E ret void .lr.ph: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h1178fd71d70cb67bE.exit", %.lr.ph - %.sroa.0.012 = phi ptr [ %16, %.lr.ph ], [ %13, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h1178fd71d70cb67bE.exit" ] - %.sroa.7.011 = phi i64 [ %17, %.lr.ph ], [ 0, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h1178fd71d70cb67bE.exit" ] - %16 = getelementptr inbounds i8, ptr %.sroa.0.012, i64 552 - %17 = add nuw nsw i64 %.sroa.7.011, 1 - tail call void @_ZN12clap_builder7mkeymap11append_keys17h69eaa1e2c1b19cfcE.llvm.2531363454801242601(ptr noalias noundef nonnull align 8 dereferenceable(24) %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(552) %.sroa.0.012, i64 noundef %.sroa.7.011) + %.sroa.0.013 = phi ptr [ %16, %.lr.ph ], [ %13, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h1178fd71d70cb67bE.exit" ] + %.sroa.7.012 = phi i64 [ %17, %.lr.ph ], [ 0, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h1178fd71d70cb67bE.exit" ] + %16 = getelementptr inbounds i8, ptr %.sroa.0.013, i64 552 + %17 = add nuw nsw i64 %.sroa.7.012, 1 + tail call void @_ZN12clap_builder7mkeymap11append_keys17h69eaa1e2c1b19cfcE.llvm.2531363454801242601(ptr noalias noundef nonnull align 8 dereferenceable(24) %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(552) %.sroa.0.013, i64 noundef %.sroa.7.012) %18 = icmp eq ptr %16, %14 br i1 %18, label %._crit_edge, label %.lr.ph } @@ -8541,7 +8541,7 @@ define void @_ZN12clap_builder7mkeymap7MKeyMap14remove_by_name17h8bd2985a0f3f3ae br i1 %11, label %.loopexit, label %.lr.ph.i .lr.ph.i: ; preds = %4, %"_ZN12clap_builder7mkeymap7MKeyMap14remove_by_name28_$u7b$$u7b$closure$u7d$$u7d$17h55dd15efe101eee7E.exit.thread.i" - %.014.i = phi i64 [ %17, %"_ZN12clap_builder7mkeymap7MKeyMap14remove_by_name28_$u7b$$u7b$closure$u7d$$u7d$17h55dd15efe101eee7E.exit.thread.i" ], [ 0, %4 ] + %.013.i = phi i64 [ %17, %"_ZN12clap_builder7mkeymap7MKeyMap14remove_by_name28_$u7b$$u7b$closure$u7d$$u7d$17h55dd15efe101eee7E.exit.thread.i" ], [ 0, %4 ] %12 = phi ptr [ %13, %"_ZN12clap_builder7mkeymap7MKeyMap14remove_by_name28_$u7b$$u7b$closure$u7d$$u7d$17h55dd15efe101eee7E.exit.thread.i" ], [ %7, %4 ] %13 = getelementptr inbounds i8, ptr %12, i64 552 %14 = getelementptr i8, ptr %12, i64 496 @@ -8557,7 +8557,7 @@ define void @_ZN12clap_builder7mkeymap7MKeyMap14remove_by_name17h8bd2985a0f3f3ae br i1 %16, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6remove17h478f6c5101030412E.exit", label %"_ZN12clap_builder7mkeymap7MKeyMap14remove_by_name28_$u7b$$u7b$closure$u7d$$u7d$17h55dd15efe101eee7E.exit.thread.i" "_ZN12clap_builder7mkeymap7MKeyMap14remove_by_name28_$u7b$$u7b$closure$u7d$$u7d$17h55dd15efe101eee7E.exit.thread.i": ; preds = %"_ZN12clap_builder7mkeymap7MKeyMap14remove_by_name28_$u7b$$u7b$closure$u7d$$u7d$17h55dd15efe101eee7E.exit.i", %.lr.ph.i - %17 = add nuw nsw i64 %.014.i, 1 + %17 = add nuw nsw i64 %.013.i, 1 %18 = icmp eq ptr %13, %10 br i1 %18, label %.loopexit, label %.lr.ph.i @@ -8566,14 +8566,14 @@ define void @_ZN12clap_builder7mkeymap7MKeyMap14remove_by_name17h8bd2985a0f3f3ae br label %26 "_ZN5alloc3vec16Vec$LT$T$C$A$GT$6remove17h478f6c5101030412E.exit": ; preds = %"_ZN12clap_builder7mkeymap7MKeyMap14remove_by_name28_$u7b$$u7b$closure$u7d$$u7d$17h55dd15efe101eee7E.exit.i" - %19 = icmp ult i64 %.014.i, %9 + %19 = icmp ult i64 %.013.i, %9 tail call void @llvm.assume(i1 %19) call void @llvm.lifetime.start.p0(i64 552, ptr nonnull %5) tail call void @llvm.experimental.noalias.scope.decl(metadata !2166) - %20 = getelementptr inbounds { { i64, i64 }, { i64, [2 x i64] }, { i64, i64 }, { i64, [2 x i64] }, { i64, [2 x i64] }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { i64, [2 x i64] }, { i64, [2 x i64] }, { ptr, i64 }, { ptr, i64 }, { ptr, i64 }, i32, i32, i32, i8, i8, [2 x i8] }, ptr %7, i64 %.014.i + %20 = getelementptr inbounds { { i64, i64 }, { i64, [2 x i64] }, { i64, i64 }, { i64, [2 x i64] }, { i64, [2 x i64] }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { { i64, ptr }, i64 }, { i64, [2 x i64] }, { i64, [2 x i64] }, { ptr, i64 }, { ptr, i64 }, { ptr, i64 }, i32, i32, i32, i8, i8, [2 x i8] }, ptr %7, i64 %.013.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(552) %5, ptr noundef nonnull align 8 dereferenceable(552) %20, i64 552, i1 false), !noalias !2169 %21 = getelementptr inbounds i8, ptr %20, i64 552 - %22 = xor i64 %.014.i, -1 + %22 = xor i64 %.013.i, -1 %23 = add i64 %9, %22 %24 = mul i64 %23, 552 tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %20, ptr nonnull align 8 %21, i64 %24, i1 false), !noalias !2171 diff --git a/bench/coreutils-rs/optimized/116xljx6yb512hlm.ll b/bench/coreutils-rs/optimized/116xljx6yb512hlm.ll index fcd79d03fe3..bfb8f8d58f6 100644 --- a/bench/coreutils-rs/optimized/116xljx6yb512hlm.ll +++ b/bench/coreutils-rs/optimized/116xljx6yb512hlm.ll @@ -147,7 +147,12 @@ define { ptr, i64 } @_ZN4core4iter6traits8iterator8Iterator4find17h4f82092896f38 _ZN4core4iter6traits8iterator8Iterator8try_fold17h98324a3ec8f40964E.exit: ; preds = %19, %22 %.pn.i = phi { ptr, i64 } [ %21, %19 ], [ %23, %22 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) - ret { ptr, i64 } %.pn.i + %24 = extractvalue { ptr, i64 } %.pn.i, 0 + %25 = icmp eq ptr %24, null + %26 = extractvalue { ptr, i64 } %.pn.i, 1 + %.sroa.3.0 = select i1 %25, i64 undef, i64 %26 + %27 = insertvalue { ptr, i64 } %.pn.i, i64 %.sroa.3.0, 1 + ret { ptr, i64 } %27 } ; Function Attrs: inlinehint nonlazybind uwtable @@ -191,7 +196,12 @@ define { ptr, i64 } @_ZN4core4iter6traits8iterator8Iterator4find17h9c53fffebf381 _ZN4core4iter6traits8iterator8Iterator8try_fold17hcd8885324e20ce59E.exit: ; preds = %19, %22 %.pn.i = phi { ptr, i64 } [ %21, %19 ], [ %23, %22 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) - ret { ptr, i64 } %.pn.i + %24 = extractvalue { ptr, i64 } %.pn.i, 0 + %25 = icmp eq ptr %24, null + %26 = extractvalue { ptr, i64 } %.pn.i, 1 + %.sroa.3.0 = select i1 %25, i64 undef, i64 %26 + %27 = insertvalue { ptr, i64 } %.pn.i, i64 %.sroa.3.0, 1 + ret { ptr, i64 } %27 } ; Function Attrs: inlinehint nonlazybind uwtable @@ -235,7 +245,12 @@ define { ptr, i64 } @_ZN4core4iter6traits8iterator8Iterator4find17he2e2387d1f517 _ZN4core4iter6traits8iterator8Iterator8try_fold17hfcbcc204e618e1caE.exit: ; preds = %19, %22 %.pn.i = phi { ptr, i64 } [ %21, %19 ], [ %23, %22 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) - ret { ptr, i64 } %.pn.i + %24 = extractvalue { ptr, i64 } %.pn.i, 0 + %25 = icmp eq ptr %24, null + %26 = extractvalue { ptr, i64 } %.pn.i, 1 + %.sroa.3.0 = select i1 %25, i64 undef, i64 %26 + %27 = insertvalue { ptr, i64 } %.pn.i, i64 %.sroa.3.0, 1 + ret { ptr, i64 } %27 } ; Function Attrs: inlinehint nonlazybind uwtable diff --git a/bench/coreutils-rs/optimized/11le6x0de15gpyo5.ll b/bench/coreutils-rs/optimized/11le6x0de15gpyo5.ll index 6641b8af923..96e689fffb8 100644 --- a/bench/coreutils-rs/optimized/11le6x0de15gpyo5.ll +++ b/bench/coreutils-rs/optimized/11le6x0de15gpyo5.ll @@ -307,17 +307,17 @@ define hidden noundef align 16 dereferenceable_or_null(112) ptr @"_ZN12clap_buil br i1 %9, label %.loopexit, label %.lr.ph .lr.ph: ; preds = %3, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge" - %.sroa.0.025 = phi ptr [ %10, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge" ], [ %5, %3 ] - %.sroa.8.024 = phi i64 [ %11, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge" ], [ 0, %3 ] - %10 = getelementptr inbounds i8, ptr %.sroa.0.025, i64 16 - %11 = add nuw nsw i64 %.sroa.8.024, 1 - %12 = getelementptr i8, ptr %.sroa.0.025, i64 8 + %.sroa.0.026 = phi ptr [ %10, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge" ], [ %5, %3 ] + %.sroa.8.025 = phi i64 [ %11, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge" ], [ 0, %3 ] + %10 = getelementptr inbounds i8, ptr %.sroa.0.026, i64 16 + %11 = add nuw nsw i64 %.sroa.8.025, 1 + %12 = getelementptr i8, ptr %.sroa.0.026, i64 8 %.val19 = load i64, ptr %12, align 8, !noundef !14 %.not.i.i = icmp eq i64 %.val19, %2 br i1 %.not.i.i, label %13, label %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge" 13: ; preds = %.lr.ph - %.val = load ptr, ptr %.sroa.0.025, align 8, !nonnull !14, !align !113, !noundef !14 + %.val = load ptr, ptr %.sroa.0.026, align 8, !nonnull !14, !align !113, !noundef !14 %bcmp.i.i = tail call i32 @bcmp(ptr nonnull readonly %.val, ptr nonnull readonly %1, i64 %2), !alias.scope !114 %14 = icmp eq i32 %bcmp.i.i, 0 br i1 %14, label %16, label %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge" @@ -333,17 +333,17 @@ define hidden noundef align 16 dereferenceable_or_null(112) ptr @"_ZN12clap_buil 16: ; preds = %13 %17 = getelementptr inbounds i8, ptr %0, i64 40 %18 = load i64, ptr %17, align 8, !noundef !14 - %19 = icmp ult i64 %.sroa.8.024, %18 + %19 = icmp ult i64 %.sroa.8.025, %18 br i1 %19, label %20, label %24, !prof !121 20: ; preds = %16 %21 = getelementptr inbounds i8, ptr %0, i64 32 %22 = load ptr, ptr %21, align 8, !nonnull !14, !noundef !14 - %23 = getelementptr inbounds [0 x { { i128, [2 x i64] }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, i8, i8, [6 x i8] }], ptr %22, i64 0, i64 %.sroa.8.024 + %23 = getelementptr inbounds [0 x { { i128, [2 x i64] }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, i8, i8, [6 x i8] }], ptr %22, i64 0, i64 %.sroa.8.025 br label %.loopexit 24: ; preds = %16 - tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %.sroa.8.024, i64 noundef %18, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.6e38e1916a659a9e56277c664ed051e5.1) #16 + tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %.sroa.8.025, i64 noundef %18, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.6e38e1916a659a9e56277c664ed051e5.1) #16 unreachable } @@ -360,17 +360,17 @@ define hidden void @_ZN12clap_builder6parser7matches11arg_matches10ArgMatches11t br i1 %10, label %.thread15, label %.lr.ph.i.i .lr.ph.i.i: ; preds = %4, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i.i" - %.sroa.0.025.i.i = phi ptr [ %11, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i.i" ], [ %6, %4 ] - %.sroa.8.024.i.i = phi i64 [ %12, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i.i" ], [ 0, %4 ] - %11 = getelementptr inbounds i8, ptr %.sroa.0.025.i.i, i64 16 - %12 = add nuw nsw i64 %.sroa.8.024.i.i, 1 - %13 = getelementptr i8, ptr %.sroa.0.025.i.i, i64 8 + %.sroa.0.026.i.i = phi ptr [ %11, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i.i" ], [ %6, %4 ] + %.sroa.8.025.i.i = phi i64 [ %12, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i.i" ], [ 0, %4 ] + %11 = getelementptr inbounds i8, ptr %.sroa.0.026.i.i, i64 16 + %12 = add nuw nsw i64 %.sroa.8.025.i.i, 1 + %13 = getelementptr i8, ptr %.sroa.0.026.i.i, i64 8 %.val19.i.i = load i64, ptr %13, align 8, !noalias !133, !noundef !14 %.not.i.i.i.i = icmp eq i64 %.val19.i.i, %3 br i1 %.not.i.i.i.i, label %14, label %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i.i" 14: ; preds = %.lr.ph.i.i - %.val.i.i = load ptr, ptr %.sroa.0.025.i.i, align 8, !noalias !133, !nonnull !14, !align !113, !noundef !14 + %.val.i.i = load ptr, ptr %.sroa.0.026.i.i, align 8, !noalias !133, !nonnull !14, !align !113, !noundef !14 %bcmp.i.i.i.i = tail call i32 @bcmp(ptr nonnull readonly %.val.i.i, ptr nonnull readonly %2, i64 %3), !alias.scope !134, !noalias !141 %15 = icmp eq i32 %bcmp.i.i.i.i, 0 br i1 %15, label %17, label %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i.i" @@ -382,17 +382,17 @@ define hidden void @_ZN12clap_builder6parser7matches11arg_matches10ArgMatches11t 17: ; preds = %14 %18 = getelementptr inbounds i8, ptr %1, i64 40 %19 = load i64, ptr %18, align 8, !alias.scope !128, !noalias !129, !noundef !14 - %20 = icmp ult i64 %.sroa.8.024.i.i, %19 + %20 = icmp ult i64 %.sroa.8.025.i.i, %19 br i1 %20, label %22, label %21, !prof !121 21: ; preds = %17 - tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %.sroa.8.024.i.i, i64 noundef %19, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.6e38e1916a659a9e56277c664ed051e5.1) #16, !noalias !133 + tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %.sroa.8.025.i.i, i64 noundef %19, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.6e38e1916a659a9e56277c664ed051e5.1) #16, !noalias !133 unreachable 22: ; preds = %17 %23 = getelementptr inbounds i8, ptr %1, i64 32 %24 = load ptr, ptr %23, align 8, !alias.scope !128, !noalias !129, !nonnull !14, !noundef !14 - %25 = getelementptr inbounds [0 x { { i128, [2 x i64] }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, i8, i8, [6 x i8] }], ptr %24, i64 0, i64 %.sroa.8.024.i.i + %25 = getelementptr inbounds [0 x { { i128, [2 x i64] }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, i8, i8, [6 x i8] }], ptr %24, i64 0, i64 %.sroa.8.025.i.i %26 = tail call noundef i128 @_ZN12clap_builder6parser7matches11matched_arg10MatchedArg13infer_type_id17hf290abf4832dccb4E(ptr noalias noundef nonnull readonly align 16 dereferenceable(112) %25, i128 noundef -75035133943807973589178565794283963657), !noalias !142 %27 = icmp eq i128 %26, -75035133943807973589178565794283963657 br i1 %27, label %29, label %28 @@ -468,17 +468,17 @@ define hidden void @_ZN12clap_builder6parser7matches11arg_matches10ArgMatches12t br i1 %10, label %.loopexit, label %.lr.ph.i.i .lr.ph.i.i: ; preds = %4, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i.i" - %.sroa.0.025.i.i = phi ptr [ %11, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i.i" ], [ %6, %4 ] - %.sroa.8.024.i.i = phi i64 [ %12, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i.i" ], [ 0, %4 ] - %11 = getelementptr inbounds i8, ptr %.sroa.0.025.i.i, i64 16 - %12 = add nuw nsw i64 %.sroa.8.024.i.i, 1 - %13 = getelementptr i8, ptr %.sroa.0.025.i.i, i64 8 + %.sroa.0.026.i.i = phi ptr [ %11, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i.i" ], [ %6, %4 ] + %.sroa.8.025.i.i = phi i64 [ %12, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i.i" ], [ 0, %4 ] + %11 = getelementptr inbounds i8, ptr %.sroa.0.026.i.i, i64 16 + %12 = add nuw nsw i64 %.sroa.8.025.i.i, 1 + %13 = getelementptr i8, ptr %.sroa.0.026.i.i, i64 8 %.val19.i.i = load i64, ptr %13, align 8, !noalias !165, !noundef !14 %.not.i.i.i.i = icmp eq i64 %.val19.i.i, %3 br i1 %.not.i.i.i.i, label %14, label %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i.i" 14: ; preds = %.lr.ph.i.i - %.val.i.i = load ptr, ptr %.sroa.0.025.i.i, align 8, !noalias !165, !nonnull !14, !align !113, !noundef !14 + %.val.i.i = load ptr, ptr %.sroa.0.026.i.i, align 8, !noalias !165, !nonnull !14, !align !113, !noundef !14 %bcmp.i.i.i.i = tail call i32 @bcmp(ptr nonnull readonly %.val.i.i, ptr nonnull readonly %2, i64 %3), !alias.scope !166, !noalias !173 %15 = icmp eq i32 %bcmp.i.i.i.i, 0 br i1 %15, label %17, label %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i.i" @@ -490,17 +490,17 @@ define hidden void @_ZN12clap_builder6parser7matches11arg_matches10ArgMatches12t 17: ; preds = %14 %18 = getelementptr inbounds i8, ptr %1, i64 40 %19 = load i64, ptr %18, align 8, !alias.scope !160, !noalias !161, !noundef !14 - %20 = icmp ult i64 %.sroa.8.024.i.i, %19 + %20 = icmp ult i64 %.sroa.8.025.i.i, %19 br i1 %20, label %22, label %21, !prof !121 21: ; preds = %17 - tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %.sroa.8.024.i.i, i64 noundef %19, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.6e38e1916a659a9e56277c664ed051e5.1) #16, !noalias !165 + tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %.sroa.8.025.i.i, i64 noundef %19, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.6e38e1916a659a9e56277c664ed051e5.1) #16, !noalias !165 unreachable 22: ; preds = %17 %23 = getelementptr inbounds i8, ptr %1, i64 32 %24 = load ptr, ptr %23, align 8, !alias.scope !160, !noalias !161, !nonnull !14, !noundef !14 - %25 = getelementptr inbounds [0 x { { i128, [2 x i64] }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, i8, i8, [6 x i8] }], ptr %24, i64 0, i64 %.sroa.8.024.i.i + %25 = getelementptr inbounds [0 x { { i128, [2 x i64] }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, i8, i8, [6 x i8] }], ptr %24, i64 0, i64 %.sroa.8.025.i.i %26 = tail call noundef i128 @_ZN12clap_builder6parser7matches11matched_arg10MatchedArg13infer_type_id17hf290abf4832dccb4E(ptr noalias noundef nonnull readonly align 16 dereferenceable(112) %25, i128 noundef -75035133943807973589178565794283963657), !noalias !174 %27 = icmp eq i128 %26, -75035133943807973589178565794283963657 br i1 %27, label %30, label %28 @@ -581,17 +581,17 @@ define hidden void @_ZN12clap_builder6parser7matches11arg_matches10ArgMatches13t br i1 %10, label %.loopexit, label %.lr.ph.i .lr.ph.i: ; preds = %4, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i" - %.sroa.0.025.i = phi ptr [ %11, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i" ], [ %6, %4 ] - %.sroa.8.024.i = phi i64 [ %12, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i" ], [ 0, %4 ] - %11 = getelementptr inbounds i8, ptr %.sroa.0.025.i, i64 16 - %12 = add nuw nsw i64 %.sroa.8.024.i, 1 - %13 = getelementptr i8, ptr %.sroa.0.025.i, i64 8 + %.sroa.0.026.i = phi ptr [ %11, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i" ], [ %6, %4 ] + %.sroa.8.025.i = phi i64 [ %12, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i" ], [ 0, %4 ] + %11 = getelementptr inbounds i8, ptr %.sroa.0.026.i, i64 16 + %12 = add nuw nsw i64 %.sroa.8.025.i, 1 + %13 = getelementptr i8, ptr %.sroa.0.026.i, i64 8 %.val19.i = load i64, ptr %13, align 8, !noalias !182, !noundef !14 %.not.i.i.i = icmp eq i64 %.val19.i, %3 br i1 %.not.i.i.i, label %14, label %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i" 14: ; preds = %.lr.ph.i - %.val.i = load ptr, ptr %.sroa.0.025.i, align 8, !noalias !182, !nonnull !14, !align !113, !noundef !14 + %.val.i = load ptr, ptr %.sroa.0.026.i, align 8, !noalias !182, !nonnull !14, !align !113, !noundef !14 %bcmp.i.i.i = tail call i32 @bcmp(ptr nonnull readonly %.val.i, ptr nonnull readonly %2, i64 %3), !alias.scope !183, !noalias !177 %15 = icmp eq i32 %bcmp.i.i.i, 0 br i1 %15, label %17, label %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i" @@ -603,11 +603,11 @@ define hidden void @_ZN12clap_builder6parser7matches11arg_matches10ArgMatches13t 17: ; preds = %14 %18 = getelementptr inbounds i8, ptr %1, i64 40 %19 = load i64, ptr %18, align 8, !alias.scope !177, !noalias !180, !noundef !14 - %20 = icmp ult i64 %.sroa.8.024.i, %19 + %20 = icmp ult i64 %.sroa.8.025.i, %19 br i1 %20, label %23, label %21, !prof !121 21: ; preds = %17 - tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %.sroa.8.024.i, i64 noundef %19, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.6e38e1916a659a9e56277c664ed051e5.1) #16, !noalias !182 + tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %.sroa.8.025.i, i64 noundef %19, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.6e38e1916a659a9e56277c664ed051e5.1) #16, !noalias !182 unreachable .loopexit: ; preds = %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i", %4 @@ -619,7 +619,7 @@ define hidden void @_ZN12clap_builder6parser7matches11arg_matches10ArgMatches13t 23: ; preds = %17 %24 = getelementptr inbounds i8, ptr %1, i64 32 %25 = load ptr, ptr %24, align 8, !alias.scope !177, !noalias !180, !nonnull !14, !noundef !14 - %26 = getelementptr inbounds [0 x { { i128, [2 x i64] }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, i8, i8, [6 x i8] }], ptr %25, i64 0, i64 %.sroa.8.024.i + %26 = getelementptr inbounds [0 x { { i128, [2 x i64] }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, i8, i8, [6 x i8] }], ptr %25, i64 0, i64 %.sroa.8.025.i %27 = tail call noundef i128 @_ZN12clap_builder6parser7matches11matched_arg10MatchedArg13infer_type_id17hf290abf4832dccb4E(ptr noalias noundef nonnull readonly align 16 dereferenceable(112) %26, i128 noundef -75035133943807973589178565794283963657), !noalias !190 %28 = icmp eq i128 %27, -75035133943807973589178565794283963657 br i1 %28, label %30, label %_ZN12clap_builder6parser7matches11arg_matches10ArgMatches12verify_arg_t17hfe8f246ede6e574bE.llvm.4114349260773503251.exit diff --git a/bench/coreutils-rs/optimized/12183t08bisz8vo8.ll b/bench/coreutils-rs/optimized/12183t08bisz8vo8.ll index eace04df542..98d8cfbbdcc 100644 --- a/bench/coreutils-rs/optimized/12183t08bisz8vo8.ll +++ b/bench/coreutils-rs/optimized/12183t08bisz8vo8.ll @@ -836,7 +836,7 @@ define hidden { i64, i64 } @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u br label %11 11: ; preds = %.lr.ph, %15 - %.012 = phi i64 [ 0, %.lr.ph ], [ %16, %15 ] + %.011 = phi i64 [ 0, %.lr.ph ], [ %16, %15 ] %12 = phi ptr [ %6, %.lr.ph ], [ %13, %15 ] %13 = getelementptr inbounds i8, ptr %12, i64 1 %.val7 = load i8, ptr %12, align 1, !noundef !5 @@ -844,13 +844,13 @@ define hidden { i64, i64 } @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u br i1 %14, label %18, label %15 15: ; preds = %11 - %16 = add i64 %.012, 1 + %16 = add i64 %.011, 1 %17 = icmp eq ptr %13, %4 br i1 %17, label %"._ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h86f92eeef77deff8E.exit.thread.loopexit_crit_edge", label %11 18: ; preds = %11 store ptr %13, ptr %0, align 8, !alias.scope !114 - %19 = icmp ult i64 %.012, %8 + %19 = icmp ult i64 %.011, %8 tail call void @llvm.assume(i1 %19) br label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h86f92eeef77deff8E.exit.thread" @@ -859,10 +859,10 @@ define hidden { i64, i64 } @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u br label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h86f92eeef77deff8E.exit.thread" "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h86f92eeef77deff8E.exit.thread": ; preds = %2, %"._ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h86f92eeef77deff8E.exit.thread.loopexit_crit_edge", %18 - %.011 = phi i64 [ %.012, %18 ], [ %8, %"._ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h86f92eeef77deff8E.exit.thread.loopexit_crit_edge" ], [ 0, %2 ] + %.sroa.3.0 = phi i64 [ %.011, %18 ], [ undef, %"._ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h86f92eeef77deff8E.exit.thread.loopexit_crit_edge" ], [ undef, %2 ] %.sroa.0.0 = phi i64 [ 1, %18 ], [ 0, %"._ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h86f92eeef77deff8E.exit.thread.loopexit_crit_edge" ], [ 0, %2 ] %20 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %21 = insertvalue { i64, i64 } %20, i64 %.011, 1 + %21 = insertvalue { i64, i64 } %20, i64 %.sroa.3.0, 1 ret { i64, i64 } %21 } @@ -1577,10 +1577,10 @@ define void @_ZN6uu_env13string_parser12StringParser22skip_until_char_or_end17h8 %13 = load i64, ptr %12, align 8, !noundef !5 %14 = getelementptr inbounds i8, ptr %11, i64 %13 %15 = icmp eq i64 %13, 0 - br i1 %15, label %_ZN6uu_env13string_parser12StringParser11set_pointer17hda034046172b5b0aE.exit5, label %.lr.ph.i + br i1 %15, label %_ZN6uu_env13string_parser12StringParser11set_pointer17hda034046172b5b0aE.exit6, label %.lr.ph.i .lr.ph.i: ; preds = %9, %18 - %.012.i = phi i64 [ %20, %18 ], [ 0, %9 ] + %.011.i = phi i64 [ %20, %18 ], [ 0, %9 ] %16 = phi ptr [ %19, %18 ], [ %11, %9 ] %.val7.i = load i8, ptr %16, align 1, !noalias !215, !noundef !5 %17 = icmp eq i8 %7, %.val7.i @@ -1588,16 +1588,16 @@ define void @_ZN6uu_env13string_parser12StringParser22skip_until_char_or_end17h8 18: ; preds = %.lr.ph.i %19 = getelementptr inbounds i8, ptr %16, i64 1 - %20 = add nuw i64 %.012.i, 1 + %20 = add nuw i64 %.011.i, 1 %21 = icmp eq ptr %19, %14 - br i1 %21, label %_ZN6uu_env13string_parser12StringParser11set_pointer17hda034046172b5b0aE.exit5, label %.lr.ph.i + br i1 %21, label %_ZN6uu_env13string_parser12StringParser11set_pointer17hda034046172b5b0aE.exit6, label %.lr.ph.i 22: ; preds = %.lr.ph.i - %23 = icmp ult i64 %.012.i, %13 + %23 = icmp ult i64 %.011.i, %13 call void @llvm.assume(i1 %23) %24 = getelementptr inbounds i8, ptr %0, i64 32 %25 = load i64, ptr %24, align 8, !noundef !5 - %26 = add i64 %25, %.012.i + %26 = add i64 %25, %.011.i call void @llvm.experimental.noalias.scope.decl(metadata !219) store i64 %26, ptr %24, align 8, !alias.scope !219 %27 = getelementptr inbounds i8, ptr %0, i64 8 @@ -1625,7 +1625,7 @@ _ZN6uu_env13string_parser12StringParser11set_pointer17hda034046172b5b0aE.exit: ; %36 = sub i64 %28, %26 br label %42 -_ZN6uu_env13string_parser12StringParser11set_pointer17hda034046172b5b0aE.exit5: ; preds = %18, %9 +_ZN6uu_env13string_parser12StringParser11set_pointer17hda034046172b5b0aE.exit6: ; preds = %18, %9 %37 = getelementptr inbounds i8, ptr %0, i64 8 %38 = load i64, ptr %37, align 8, !noundef !5 %39 = getelementptr inbounds i8, ptr %0, i64 32 @@ -1634,10 +1634,10 @@ _ZN6uu_env13string_parser12StringParser11set_pointer17hda034046172b5b0aE.exit5: %41 = getelementptr inbounds i8, ptr %40, i64 %38 br label %42 -42: ; preds = %_ZN6uu_env13string_parser12StringParser11set_pointer17hda034046172b5b0aE.exit5, %_ZN6uu_env13string_parser12StringParser11set_pointer17hda034046172b5b0aE.exit - %storemerge9 = phi ptr [ %35, %_ZN6uu_env13string_parser12StringParser11set_pointer17hda034046172b5b0aE.exit ], [ %41, %_ZN6uu_env13string_parser12StringParser11set_pointer17hda034046172b5b0aE.exit5 ] - %storemerge = phi i64 [ %36, %_ZN6uu_env13string_parser12StringParser11set_pointer17hda034046172b5b0aE.exit ], [ 0, %_ZN6uu_env13string_parser12StringParser11set_pointer17hda034046172b5b0aE.exit5 ] - store ptr %storemerge9, ptr %10, align 8 +42: ; preds = %_ZN6uu_env13string_parser12StringParser11set_pointer17hda034046172b5b0aE.exit6, %_ZN6uu_env13string_parser12StringParser11set_pointer17hda034046172b5b0aE.exit + %storemerge10 = phi ptr [ %35, %_ZN6uu_env13string_parser12StringParser11set_pointer17hda034046172b5b0aE.exit ], [ %41, %_ZN6uu_env13string_parser12StringParser11set_pointer17hda034046172b5b0aE.exit6 ] + %storemerge = phi i64 [ %36, %_ZN6uu_env13string_parser12StringParser11set_pointer17hda034046172b5b0aE.exit ], [ 0, %_ZN6uu_env13string_parser12StringParser11set_pointer17hda034046172b5b0aE.exit6 ] + store ptr %storemerge10, ptr %10, align 8 store i64 %storemerge, ptr %12, align 8 ret void } diff --git a/bench/coreutils-rs/optimized/12t1ilskwpg6ujrn.ll b/bench/coreutils-rs/optimized/12t1ilskwpg6ujrn.ll index 342b067049b..f74e77880a5 100644 --- a/bench/coreutils-rs/optimized/12t1ilskwpg6ujrn.ll +++ b/bench/coreutils-rs/optimized/12t1ilskwpg6ujrn.ll @@ -2983,7 +2983,7 @@ _ZN4core3ops8function6FnOnce9call_once17h64054f19c03024ddE.exit: ; preds = %15, br i1 %22, label %.loopexit.i, label %.lr.ph.i.i .lr.ph.i.i: ; preds = %_ZN4core3ops8function6FnOnce9call_once17h64054f19c03024ddE.exit, %25 - %.012.i.i = phi i64 [ %27, %25 ], [ 0, %_ZN4core3ops8function6FnOnce9call_once17h64054f19c03024ddE.exit ] + %.011.i.i = phi i64 [ %27, %25 ], [ 0, %_ZN4core3ops8function6FnOnce9call_once17h64054f19c03024ddE.exit ] %23 = phi ptr [ %26, %25 ], [ %18, %_ZN4core3ops8function6FnOnce9call_once17h64054f19c03024ddE.exit ] %.val7.i.i = load i32, ptr %23, align 4, !noalias !357, !noundef !4 %24 = icmp eq i32 %.val7.i.i, %.0 @@ -2991,7 +2991,7 @@ _ZN4core3ops8function6FnOnce9call_once17h64054f19c03024ddE.exit: ; preds = %15, 25: ; preds = %.lr.ph.i.i %26 = getelementptr inbounds i8, ptr %23, i64 4 - %27 = add nuw nsw i64 %.012.i.i, 1 + %27 = add nuw nsw i64 %.011.i.i, 1 %28 = icmp eq ptr %26, %21 br i1 %28, label %.loopexit.i, label %.lr.ph.i.i @@ -3002,10 +3002,10 @@ _ZN4core3ops8function6FnOnce9call_once17h64054f19c03024ddE.exit: ; preds = %15, to label %.body unwind label %41, !noalias !352 31: ; preds = %.lr.ph.i.i - %32 = icmp ult i64 %.012.i.i, %20 + %32 = icmp ult i64 %.011.i.i, %20 tail call void @llvm.assume(i1 %32) - %33 = getelementptr inbounds i32, ptr %18, i64 %.012.i.i - invoke void @_ZN4core5slice6rotate10ptr_rotate17hd37edbe7b5e69736E(i64 noundef %.012.i.i, ptr noundef nonnull %33, i64 noundef 1) + %33 = getelementptr inbounds i32, ptr %18, i64 %.011.i.i + invoke void @_ZN4core5slice6rotate10ptr_rotate17hd37edbe7b5e69736E(i64 noundef %.011.i.i, ptr noundef nonnull %33, i64 noundef 1) to label %43 unwind label %29, !noalias !361 .loopexit.i: ; preds = %25, %_ZN4core3ops8function6FnOnce9call_once17h64054f19c03024ddE.exit diff --git a/bench/coreutils-rs/optimized/17xjrgvu8o6qjuw2.ll b/bench/coreutils-rs/optimized/17xjrgvu8o6qjuw2.ll index 70eb178aece..0d915150368 100644 --- a/bench/coreutils-rs/optimized/17xjrgvu8o6qjuw2.ll +++ b/bench/coreutils-rs/optimized/17xjrgvu8o6qjuw2.ll @@ -85,17 +85,17 @@ define hidden noundef align 16 dereferenceable_or_null(112) ptr @"_ZN12clap_buil br i1 %9, label %.loopexit, label %.lr.ph .lr.ph: ; preds = %3, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge" - %.sroa.0.025 = phi ptr [ %10, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge" ], [ %5, %3 ] - %.sroa.8.024 = phi i64 [ %11, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge" ], [ 0, %3 ] - %10 = getelementptr inbounds i8, ptr %.sroa.0.025, i64 16 - %11 = add nuw nsw i64 %.sroa.8.024, 1 - %12 = getelementptr i8, ptr %.sroa.0.025, i64 8 + %.sroa.0.026 = phi ptr [ %10, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge" ], [ %5, %3 ] + %.sroa.8.025 = phi i64 [ %11, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge" ], [ 0, %3 ] + %10 = getelementptr inbounds i8, ptr %.sroa.0.026, i64 16 + %11 = add nuw nsw i64 %.sroa.8.025, 1 + %12 = getelementptr i8, ptr %.sroa.0.026, i64 8 %.val19 = load i64, ptr %12, align 8, !noundef !4 %.not.i.i = icmp eq i64 %.val19, %2 br i1 %.not.i.i, label %13, label %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge" 13: ; preds = %.lr.ph - %.val = load ptr, ptr %.sroa.0.025, align 8, !nonnull !4, !align !5, !noundef !4 + %.val = load ptr, ptr %.sroa.0.026, align 8, !nonnull !4, !align !5, !noundef !4 %bcmp.i.i = tail call i32 @bcmp(ptr nonnull readonly %.val, ptr nonnull readonly %1, i64 %2), !alias.scope !6 %14 = icmp eq i32 %bcmp.i.i, 0 br i1 %14, label %16, label %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge" @@ -111,17 +111,17 @@ define hidden noundef align 16 dereferenceable_or_null(112) ptr @"_ZN12clap_buil 16: ; preds = %13 %17 = getelementptr inbounds i8, ptr %0, i64 40 %18 = load i64, ptr %17, align 8, !noundef !4 - %19 = icmp ult i64 %.sroa.8.024, %18 + %19 = icmp ult i64 %.sroa.8.025, %18 br i1 %19, label %20, label %24, !prof !13 20: ; preds = %16 %21 = getelementptr inbounds i8, ptr %0, i64 32 %22 = load ptr, ptr %21, align 8, !nonnull !4, !noundef !4 - %23 = getelementptr inbounds [0 x { { i128, [2 x i64] }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, i8, i8, [6 x i8] }], ptr %22, i64 0, i64 %.sroa.8.024 + %23 = getelementptr inbounds [0 x { { i128, [2 x i64] }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, i8, i8, [6 x i8] }], ptr %22, i64 0, i64 %.sroa.8.025 br label %.loopexit 24: ; preds = %16 - tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %.sroa.8.024, i64 noundef %18, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.32126f8660419f809644e065cd912836.4) #26 + tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %.sroa.8.025, i64 noundef %18, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.32126f8660419f809644e065cd912836.4) #26 unreachable } diff --git a/bench/coreutils-rs/optimized/1c0bwvv43j289y30.ll b/bench/coreutils-rs/optimized/1c0bwvv43j289y30.ll index f67483d6ffa..a19204fb0cb 100644 --- a/bench/coreutils-rs/optimized/1c0bwvv43j289y30.ll +++ b/bench/coreutils-rs/optimized/1c0bwvv43j289y30.ll @@ -1838,19 +1838,19 @@ _ZN8uu_split8strategy10NumberType4from17h658fae3627710d21E.exit: ; preds = %174, br label %626 450: ; preds = %_ZN8uu_split8strategy10NumberType4from17h658fae3627710d21E.exit, %_ZN8uu_split8strategy10NumberType4from17h658fae3627710d21E.exit.thread - %.sroa.4.sroa.0.0247.ph = phi i64 [ %.sroa.0148.1, %_ZN8uu_split8strategy10NumberType4from17h658fae3627710d21E.exit.thread ], [ %.sroa.0148.0, %_ZN8uu_split8strategy10NumberType4from17h658fae3627710d21E.exit ] - %.sroa.4.sroa.6.0245.ph = phi i64 [ %.sroa.24.1, %_ZN8uu_split8strategy10NumberType4from17h658fae3627710d21E.exit.thread ], [ %.sroa.24.0, %_ZN8uu_split8strategy10NumberType4from17h658fae3627710d21E.exit ] - %.sroa.4.sroa.8.0243.ph = phi i64 [ %194, %_ZN8uu_split8strategy10NumberType4from17h658fae3627710d21E.exit.thread ], [ %.sroa.45.0, %_ZN8uu_split8strategy10NumberType4from17h658fae3627710d21E.exit ] - %.sroa.62.2231241.ph = phi i64 [ %195, %_ZN8uu_split8strategy10NumberType4from17h658fae3627710d21E.exit.thread ], [ %.sroa.62.0, %_ZN8uu_split8strategy10NumberType4from17h658fae3627710d21E.exit ] + %.sroa.4.sroa.0.0244.ph = phi i64 [ %.sroa.0148.1, %_ZN8uu_split8strategy10NumberType4from17h658fae3627710d21E.exit.thread ], [ %.sroa.0148.0, %_ZN8uu_split8strategy10NumberType4from17h658fae3627710d21E.exit ] + %.sroa.4.sroa.6.0242.ph = phi i64 [ %.sroa.24.1, %_ZN8uu_split8strategy10NumberType4from17h658fae3627710d21E.exit.thread ], [ %.sroa.24.0, %_ZN8uu_split8strategy10NumberType4from17h658fae3627710d21E.exit ] + %.sroa.4.sroa.8.0240.ph = phi i64 [ %194, %_ZN8uu_split8strategy10NumberType4from17h658fae3627710d21E.exit.thread ], [ %.sroa.45.0, %_ZN8uu_split8strategy10NumberType4from17h658fae3627710d21E.exit ] + %.sroa.927.0.ph = phi i64 [ %195, %_ZN8uu_split8strategy10NumberType4from17h658fae3627710d21E.exit.thread ], [ %.sroa.62.0, %_ZN8uu_split8strategy10NumberType4from17h658fae3627710d21E.exit ] store i64 2, ptr %0, align 8 %.sroa.259.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 - store i64 %.sroa.4.sroa.0.0247.ph, ptr %.sroa.259.0..sroa_idx, align 8 + store i64 %.sroa.4.sroa.0.0244.ph, ptr %.sroa.259.0..sroa_idx, align 8 %.sroa.259.sroa.2.0..sroa.259.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 - store i64 %.sroa.4.sroa.6.0245.ph, ptr %.sroa.259.sroa.2.0..sroa.259.0..sroa_idx.sroa_idx, align 8 + store i64 %.sroa.4.sroa.6.0242.ph, ptr %.sroa.259.sroa.2.0..sroa.259.0..sroa_idx.sroa_idx, align 8 %.sroa.259.sroa.3.0..sroa.259.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %0, i64 24 - store i64 %.sroa.4.sroa.8.0243.ph, ptr %.sroa.259.sroa.3.0..sroa.259.0..sroa_idx.sroa_idx, align 8 + store i64 %.sroa.4.sroa.8.0240.ph, ptr %.sroa.259.sroa.3.0..sroa.259.0..sroa_idx.sroa_idx, align 8 %.sroa.360.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 32 - store i64 %.sroa.62.2231241.ph, ptr %.sroa.360.0..sroa_idx, align 8 + store i64 %.sroa.927.0.ph, ptr %.sroa.360.0..sroa_idx, align 8 br label %626 451: ; preds = %93 diff --git a/bench/coreutils-rs/optimized/1h9m85ev8rb0a3pu.ll b/bench/coreutils-rs/optimized/1h9m85ev8rb0a3pu.ll index d4989af97b3..a629c6ce9bc 100644 --- a/bench/coreutils-rs/optimized/1h9m85ev8rb0a3pu.ll +++ b/bench/coreutils-rs/optimized/1h9m85ev8rb0a3pu.ll @@ -453,17 +453,17 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t %12 = icmp eq i64 %7, 0 br i1 %12, label %.thread, label %.lr.ph -.loopexit29: ; preds = %26 +.loopexit30: ; preds = %26 %lpad.loopexit = landingpad { ptr, i32 } cleanup br label %53 .lr.ph: ; preds = %3, %.loopexit - %.sroa.10.037 = phi i64 [ %13, %.loopexit ], [ %7, %3 ] - %.sroa.013.036 = phi ptr [ %16, %.loopexit ], [ %1, %3 ] - %.sroa.7.035 = phi i64 [ %17, %.loopexit ], [ 0, %3 ] - %13 = add i64 %.sroa.10.037, -1 - %14 = icmp eq ptr %.sroa.013.036, %11 + %.sroa.10.038 = phi i64 [ %13, %.loopexit ], [ %7, %3 ] + %.sroa.013.037 = phi ptr [ %16, %.loopexit ], [ %1, %3 ] + %.sroa.7.036 = phi i64 [ %17, %.loopexit ], [ 0, %3 ] + %13 = add i64 %.sroa.10.038, -1 + %14 = icmp eq ptr %.sroa.013.037, %11 br i1 %14, label %.thread, label %15 .thread: ; preds = %.loopexit, %.lr.ph, %3 @@ -473,15 +473,15 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t ret void 15: ; preds = %.lr.ph - %16 = getelementptr inbounds i8, ptr %.sroa.013.036, i64 72 - %17 = add nuw nsw i64 %.sroa.7.035, 1 + %16 = getelementptr inbounds i8, ptr %.sroa.013.037, i64 72 + %17 = add nuw nsw i64 %.sroa.7.036, 1 tail call void @llvm.experimental.noalias.scope.decl(metadata !156) - %18 = getelementptr inbounds i8, ptr %.sroa.013.036, i64 48 + %18 = getelementptr inbounds i8, ptr %.sroa.013.037, i64 48 %19 = load ptr, ptr %18, align 8, !alias.scope !156, !noalias !159, !nonnull !4, !align !161, !noundef !4 - %20 = getelementptr inbounds i8, ptr %.sroa.013.036, i64 56 + %20 = getelementptr inbounds i8, ptr %.sroa.013.037, i64 56 %21 = load i64, ptr %20, align 8, !alias.scope !156, !noalias !159, !noundef !4 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4), !noalias !162 - %22 = getelementptr inbounds i8, ptr %.sroa.013.036, i64 24 + %22 = getelementptr inbounds i8, ptr %.sroa.013.037, i64 24 %23 = load i64, ptr %22, align 8, !range !144, !alias.scope !156, !noalias !159, !noundef !4 %24 = icmp eq i64 %23, -9223372036854775808 br i1 %24, label %25, label %26 @@ -492,12 +492,12 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t 26: ; preds = %15 invoke void @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..clone..Clone$GT$5clone17hf54273bb14505f61E"(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr, {} }, i64 } }) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %22) - to label %.noexc unwind label %.loopexit29 + to label %.noexc unwind label %.loopexit30 .noexc: ; preds = %26, %25 - %27 = getelementptr inbounds i8, ptr %.sroa.013.036, i64 8 + %27 = getelementptr inbounds i8, ptr %.sroa.013.037, i64 8 %.val.i = load ptr, ptr %27, align 8, !alias.scope !156, !noalias !159, !nonnull !4, !noundef !4 - %28 = getelementptr inbounds i8, ptr %.sroa.013.036, i64 16 + %28 = getelementptr inbounds i8, ptr %.sroa.013.037, i64 16 %.val6.i = load i64, ptr %28, align 8, !alias.scope !156, !noalias !159, !noundef !4 %29 = invoke { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h2317559a2bd6feb8E"(i64 noundef %.val6.i, i1 noundef zeroext false) to label %.noexc.i unwind label %43, !noalias !159 @@ -510,20 +510,20 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t br i1 %33, label %.loopexit, label %.lr.ph.i.i.i .lr.ph.i.i.i: ; preds = %.noexc.i, %35 - %.sroa.10.029.i.i.i = phi i64 [ %36, %35 ], [ %30, %.noexc.i ] - %.sroa.016.028.i.i.i = phi ptr [ %38, %35 ], [ %.val.i, %.noexc.i ] - %.sroa.7.027.i.i.i = phi i64 [ %37, %35 ], [ 0, %.noexc.i ] - %34 = icmp eq ptr %.sroa.016.028.i.i.i, %32 + %.sroa.10.030.i.i.i = phi i64 [ %36, %35 ], [ %30, %.noexc.i ] + %.sroa.016.029.i.i.i = phi ptr [ %38, %35 ], [ %.val.i, %.noexc.i ] + %.sroa.7.028.i.i.i = phi i64 [ %37, %35 ], [ 0, %.noexc.i ] + %34 = icmp eq ptr %.sroa.016.029.i.i.i, %32 br i1 %34, label %.loopexit, label %35 35: ; preds = %.lr.ph.i.i.i - %36 = add i64 %.sroa.10.029.i.i.i, -1 - %37 = add nuw nsw i64 %.sroa.7.027.i.i.i, 1 - %38 = getelementptr inbounds i8, ptr %.sroa.016.028.i.i.i, i64 16 - %.sroa.6.0.val.i.i.i = load ptr, ptr %.sroa.016.028.i.i.i, align 8, !alias.scope !163, !noalias !166, !nonnull !4, !align !161, !noundef !4 - %39 = getelementptr i8, ptr %.sroa.016.028.i.i.i, i64 8 + %36 = add i64 %.sroa.10.030.i.i.i, -1 + %37 = add nuw nsw i64 %.sroa.7.028.i.i.i, 1 + %38 = getelementptr inbounds i8, ptr %.sroa.016.029.i.i.i, i64 16 + %.sroa.6.0.val.i.i.i = load ptr, ptr %.sroa.016.029.i.i.i, align 8, !alias.scope !163, !noalias !166, !nonnull !4, !align !161, !noundef !4 + %39 = getelementptr i8, ptr %.sroa.016.029.i.i.i, i64 8 %.sroa.6.0.val15.i.i.i = load i64, ptr %39, align 8, !alias.scope !163, !noalias !166, !noundef !4 - %40 = getelementptr inbounds [0 x { [2 x i64] }], ptr %31, i64 0, i64 %.sroa.7.027.i.i.i + %40 = getelementptr inbounds [0 x { [2 x i64] }], ptr %31, i64 0, i64 %.sroa.7.028.i.i.i store ptr %.sroa.6.0.val.i.i.i, ptr %40, align 8 %41 = getelementptr inbounds i8, ptr %40, i64 8 store i64 %.sroa.6.0.val15.i.i.i, ptr %41, align 8 @@ -543,12 +543,12 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t unreachable .loopexit: ; preds = %35, %.lr.ph.i.i.i, %.noexc.i - %47 = getelementptr inbounds i8, ptr %.sroa.013.036, i64 64 + %47 = getelementptr inbounds i8, ptr %.sroa.013.037, i64 64 %48 = load i8, ptr %47, align 8, !range !170, !alias.scope !156, !noalias !159, !noundef !4 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %.sroa.06.sroa.6) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.06.sroa.6, ptr noundef nonnull align 8 dereferenceable(24) %4, i64 24, i1 false) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4), !noalias !162 - %49 = getelementptr inbounds [0 x { [9 x i64] }], ptr %8, i64 0, i64 %.sroa.7.035 + %49 = getelementptr inbounds [0 x { [9 x i64] }], ptr %8, i64 0, i64 %.sroa.7.036 call void @llvm.lifetime.start.p0(i64 7, ptr nonnull %.sroa.06.sroa.10) store i64 %30, ptr %49, align 8 %.sroa.06.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %49, i64 8 @@ -576,9 +576,9 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #12 unreachable -53: ; preds = %.loopexit29, %43 - %eh.lpad-body = phi { ptr, i32 } [ %44, %43 ], [ %lpad.loopexit, %.loopexit29 ] - store i64 %.sroa.7.035, ptr %10, align 8 +53: ; preds = %.loopexit30, %43 + %eh.lpad-body = phi { ptr, i32 } [ %44, %43 ], [ %lpad.loopexit, %.loopexit30 ] + store i64 %.sroa.7.036, ptr %10, align 8 invoke void @"_ZN4core3ptr96drop_in_place$LT$alloc..vec..Vec$LT$clap_builder..builder..possible_value..PossibleValue$GT$$GT$17h48fcef4e40481f13E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %5) #13 to label %54 unwind label %51 diff --git a/bench/coreutils-rs/optimized/1iwhjsqyasmq9db9.ll b/bench/coreutils-rs/optimized/1iwhjsqyasmq9db9.ll index e6ba3742641..bd18022ad13 100644 --- a/bench/coreutils-rs/optimized/1iwhjsqyasmq9db9.ll +++ b/bench/coreutils-rs/optimized/1iwhjsqyasmq9db9.ll @@ -1179,8 +1179,8 @@ _ZN3std4sync4mpmc7context7Context10try_select17h575e5fea5660eecdE.exit: ; preds %89 = load atomic i64, ptr %88 acquire, align 8, !noalias !88 switch i64 %89, label %_ZN3std4sync4mpmc7context7Context10wait_until17h4bf656f2ae3b6de5E.exit.thread17 [ i64 0, label %90 - i64 1, label %.thread.loopexit40.i - i64 2, label %.thread.loopexit40.i + i64 1, label %.thread.loopexit42.i + i64 2, label %.thread.loopexit42.i ] 90: ; preds = %.split.us.i @@ -1191,8 +1191,8 @@ _ZN3std4sync4mpmc7context7Context10try_select17h575e5fea5660eecdE.exit: ; preds %91 = load atomic i64, ptr %88 acquire, align 8, !noalias !88 switch i64 %91, label %_ZN3std4sync4mpmc7context7Context10wait_until17h4bf656f2ae3b6de5E.exit.thread17 [ i64 0, label %92 - i64 1, label %.thread.loopexit40.i - i64 2, label %.thread.loopexit40.i + i64 1, label %.thread.loopexit42.i + i64 2, label %.thread.loopexit42.i ] 92: ; preds = %.split.i @@ -1211,14 +1211,14 @@ _ZN3std4sync4mpmc7context7Context10try_select17h575e5fea5660eecdE.exit: ; preds "_ZN77_$LT$std..sys..pal..unix..time..Timespec$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h6e44c7c4099b6ff7E.exit.i": ; preds = %97 %100 = cmpxchg ptr %88, i64 0, i64 1 acq_rel acquire, align 8, !noalias !88 %101 = extractvalue { i64, i1 } %100, 1 - br i1 %101, label %.thread.loopexit40.i, label %102 + br i1 %101, label %.thread.loopexit42.i, label %102 102: ; preds = %"_ZN77_$LT$std..sys..pal..unix..time..Timespec$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h6e44c7c4099b6ff7E.exit.i" %103 = extractvalue { i64, i1 } %100, 0 switch i64 %103, label %_ZN3std4sync4mpmc7context7Context10wait_until17h4bf656f2ae3b6de5E.exit.thread17 [ i64 0, label %107 - i64 1, label %.thread.loopexit40.i - i64 2, label %.thread.loopexit40.i + i64 1, label %.thread.loopexit42.i + i64 2, label %.thread.loopexit42.i ] select.unfold.i: ; preds = %97, %92 @@ -1232,17 +1232,17 @@ select.unfold.i: ; preds = %97, %92 tail call void @_ZN4core9panicking5panic17h44790a89027c670fE(ptr noalias noundef nonnull readonly align 1 @anon.ae435ee540deca19adbaa58c8926dfa3.7, i64 noundef 40, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ae435ee540deca19adbaa58c8926dfa3.8) #18 unreachable -.thread.loopexit40.i: ; preds = %.split.i, %.split.i, %.split.us.i, %.split.us.i, %102, %102, %"_ZN77_$LT$std..sys..pal..unix..time..Timespec$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h6e44c7c4099b6ff7E.exit.i" +.thread.loopexit42.i: ; preds = %.split.i, %.split.i, %.split.us.i, %.split.us.i, %102, %102, %"_ZN77_$LT$std..sys..pal..unix..time..Timespec$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h6e44c7c4099b6ff7E.exit.i" call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) %108 = cmpxchg ptr %11, i32 0, i32 1 acquire monotonic, align 4, !noalias !91 %109 = extractvalue { i32, i1 } %108, 1 br i1 %109, label %_ZN3std3sys3pal4unix5locks11futex_mutex5Mutex4lock17h985bdbb4640079dbE.exit.i4, label %110 -110: ; preds = %.thread.loopexit40.i +110: ; preds = %.thread.loopexit42.i tail call void @_ZN3std3sys3pal4unix5locks11futex_mutex5Mutex14lock_contended17hf70df39e402d52e1E(ptr noundef nonnull align 4 %11), !noalias !91 br label %_ZN3std3sys3pal4unix5locks11futex_mutex5Mutex4lock17h985bdbb4640079dbE.exit.i4 -_ZN3std3sys3pal4unix5locks11futex_mutex5Mutex4lock17h985bdbb4640079dbE.exit.i4: ; preds = %110, %.thread.loopexit40.i +_ZN3std3sys3pal4unix5locks11futex_mutex5Mutex4lock17h985bdbb4640079dbE.exit.i4: ; preds = %110, %.thread.loopexit42.i %111 = tail call noundef i64 @_ZN4core4sync6atomic11atomic_load17hbbb682351badd959E.llvm.6180704580393161520(ptr noundef nonnull @_ZN3std9panicking11panic_count18GLOBAL_PANIC_COUNT17hc804604804a6cbf8E, i8 noundef 0), !noalias !94 %112 = and i64 %111, 9223372036854775807 %113 = icmp eq i64 %112, 0 @@ -1707,16 +1707,16 @@ common.resume: ; preds = %44, %17 to label %_ZN3std4sync4mpmc5waker5Waker10disconnect17hb7d793ca29eab969E.exit unwind label %.loopexit.split-lp .lr.ph.i: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h95c667e9016d1720E.exit", %_ZN3std10sys_common14thread_parking5futex6Parker6unpark17h7c9c6eabf53b77f5E.exit.i - %.sroa.0.012.i = phi ptr [ %30, %_ZN3std10sys_common14thread_parking5futex6Parker6unpark17h7c9c6eabf53b77f5E.exit.i ], [ %25, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h95c667e9016d1720E.exit" ] - %30 = getelementptr inbounds i8, ptr %.sroa.0.012.i, i64 24 - %.val.i = load ptr, ptr %.sroa.0.012.i, align 8, !noalias !182, !nonnull !8, !noundef !8 + %.sroa.0.013.i = phi ptr [ %30, %_ZN3std10sys_common14thread_parking5futex6Parker6unpark17h7c9c6eabf53b77f5E.exit.i ], [ %25, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h95c667e9016d1720E.exit" ] + %30 = getelementptr inbounds i8, ptr %.sroa.0.013.i, i64 24 + %.val.i = load ptr, ptr %.sroa.0.013.i, align 8, !noalias !182, !nonnull !8, !noundef !8 %31 = getelementptr inbounds i8, ptr %.val.i, i64 24 %32 = cmpxchg ptr %31, i64 0, i64 2 acq_rel acquire, align 8, !noalias !182 %33 = extractvalue { i64, i1 } %32, 1 br i1 %33, label %34, label %_ZN3std10sys_common14thread_parking5futex6Parker6unpark17h7c9c6eabf53b77f5E.exit.i 34: ; preds = %.lr.ph.i - %35 = load ptr, ptr %.sroa.0.012.i, align 8, !noalias !182, !nonnull !8, !noundef !8 + %35 = load ptr, ptr %.sroa.0.013.i, align 8, !noalias !182, !nonnull !8, !noundef !8 %36 = getelementptr inbounds i8, ptr %35, i64 16 %37 = load ptr, ptr %36, align 8, !noalias !182, !nonnull !8, !noundef !8 %38 = getelementptr inbounds i8, ptr %37, i64 40 @@ -1916,7 +1916,7 @@ _ZN3std4sync4mpmc5waker17current_thread_id5DUMMY7__getit17had567bd67086969cE.exi .lr.ph.i.i: ; preds = %"_ZN3std4sync4mpmc5waker5Waker10try_select28_$u7b$$u7b$closure$u7d$$u7d$17h754490dc93005ef2E.exit.i.i", %"_ZN4core6result19Result$LT$T$C$E$GT$6expect17h8d92fa3dad94a9caE.exit.i" %49 = phi ptr [ %50, %"_ZN3std4sync4mpmc5waker5Waker10try_select28_$u7b$$u7b$closure$u7d$$u7d$17h754490dc93005ef2E.exit.i.i" ], [ %47, %"_ZN4core6result19Result$LT$T$C$E$GT$6expect17h8d92fa3dad94a9caE.exit.i" ] - %.016.i.i = phi i64 [ %74, %"_ZN3std4sync4mpmc5waker5Waker10try_select28_$u7b$$u7b$closure$u7d$$u7d$17h754490dc93005ef2E.exit.i.i" ], [ 0, %"_ZN4core6result19Result$LT$T$C$E$GT$6expect17h8d92fa3dad94a9caE.exit.i" ] + %.015.i.i = phi i64 [ %74, %"_ZN3std4sync4mpmc5waker5Waker10try_select28_$u7b$$u7b$closure$u7d$$u7d$17h754490dc93005ef2E.exit.i.i" ], [ 0, %"_ZN4core6result19Result$LT$T$C$E$GT$6expect17h8d92fa3dad94a9caE.exit.i" ] %50 = getelementptr inbounds i8, ptr %49, i64 24 tail call void @llvm.experimental.noalias.scope.decl(metadata !208) %51 = load ptr, ptr %49, align 8, !alias.scope !208, !noalias !211, !nonnull !8, !noundef !8 @@ -1958,21 +1958,21 @@ _ZN3std4sync4mpmc7context7Context12store_packet17h71587165d6a8dce1E.exit.i.i.i: to label %.noexc5 unwind label %29 "_ZN3std4sync4mpmc5waker5Waker10try_select28_$u7b$$u7b$closure$u7d$$u7d$17h754490dc93005ef2E.exit.i.i": ; preds = %54, %.lr.ph.i.i - %74 = add nuw nsw i64 %.016.i.i, 1 + %74 = add nuw nsw i64 %.015.i.i, 1 %75 = icmp eq ptr %50, %48 br i1 %75, label %"_ZN4core3ptr78drop_in_place$LT$core..option..Option$LT$std..sync..mpmc..waker..Entry$GT$$GT$17he18943a2a7fe6bb5E.exit", label %.lr.ph.i.i .noexc5: ; preds = %72, %_ZN3std4sync4mpmc7context7Context12store_packet17h71587165d6a8dce1E.exit.i.i.i - %76 = icmp ult i64 %.016.i.i, %38 + %76 = icmp ult i64 %.015.i.i, %38 tail call void @llvm.assume(i1 %76) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) tail call void @llvm.experimental.noalias.scope.decl(metadata !216) %77 = load i64, ptr %37, align 8, !alias.scope !219, !noalias !220, !noundef !8 - %.not.i.i = icmp ugt i64 %77, %.016.i.i + %.not.i.i = icmp ugt i64 %77, %.015.i.i br i1 %.not.i.i, label %_ZN3std4sync4mpmc5waker5Waker10try_select17ha74c1d6f879212f7E.exit, label %78 78: ; preds = %.noexc5 - invoke void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6remove13assert_failed17hccb0accdd75e9128E"(i64 noundef %.016.i.i, i64 noundef %77, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ae435ee540deca19adbaa58c8926dfa3.19) #18 + invoke void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6remove13assert_failed17hccb0accdd75e9128E"(i64 noundef %.015.i.i, i64 noundef %77, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ae435ee540deca19adbaa58c8926dfa3.19) #18 to label %.noexc6 unwind label %29 .noexc6: ; preds = %78 @@ -1980,10 +1980,10 @@ _ZN3std4sync4mpmc7context7Context12store_packet17h71587165d6a8dce1E.exit.i.i.i: _ZN3std4sync4mpmc5waker5Waker10try_select17ha74c1d6f879212f7E.exit: ; preds = %.noexc5 %79 = load ptr, ptr %46, align 8, !alias.scope !219, !noalias !220, !nonnull !8, !noundef !8 - %80 = getelementptr inbounds { ptr, i64, ptr }, ptr %79, i64 %.016.i.i + %80 = getelementptr inbounds { ptr, i64, ptr }, ptr %79, i64 %.015.i.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(24) %80, i64 24, i1 false), !noalias !223 %81 = getelementptr inbounds i8, ptr %80, i64 24 - %82 = xor i64 %.016.i.i, -1 + %82 = xor i64 %.015.i.i, -1 %83 = add i64 %77, %82 %84 = mul i64 %83, 24 tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %80, ptr nonnull align 8 %81, i64 %84, i1 false), !noalias !224 diff --git a/bench/coreutils-rs/optimized/1jbxberfc5l4jlu4.ll b/bench/coreutils-rs/optimized/1jbxberfc5l4jlu4.ll index dfaac2fa0b6..9650d4d788e 100644 --- a/bench/coreutils-rs/optimized/1jbxberfc5l4jlu4.ll +++ b/bench/coreutils-rs/optimized/1jbxberfc5l4jlu4.ll @@ -2888,11 +2888,11 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t br label %43 16: ; preds = %.lr.ph, %38 - %.sroa.10.031 = phi i64 [ %9, %.lr.ph ], [ %17, %38 ] - %.sroa.013.030 = phi ptr [ %1, %.lr.ph ], [ %20, %38 ] - %.sroa.7.029 = phi i64 [ 0, %.lr.ph ], [ %21, %38 ] - %17 = add i64 %.sroa.10.031, -1 - %18 = icmp eq ptr %.sroa.013.030, %13 + %.sroa.10.032 = phi i64 [ %9, %.lr.ph ], [ %17, %38 ] + %.sroa.013.031 = phi ptr [ %1, %.lr.ph ], [ %20, %38 ] + %.sroa.7.030 = phi i64 [ 0, %.lr.ph ], [ %21, %38 ] + %17 = add i64 %.sroa.10.032, -1 + %18 = icmp eq ptr %.sroa.013.031, %13 br i1 %18, label %.thread, label %19 .thread: ; preds = %38, %16, %3 @@ -2902,11 +2902,11 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t ret void 19: ; preds = %16 - %20 = getelementptr inbounds i8, ptr %.sroa.013.030, i64 48 - %21 = add nuw nsw i64 %.sroa.7.029, 1 + %20 = getelementptr inbounds i8, ptr %.sroa.013.031, i64 48 + %21 = add nuw nsw i64 %.sroa.7.030, 1 tail call void @llvm.experimental.noalias.scope.decl(metadata !523) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5), !noalias !526 - %22 = getelementptr inbounds i8, ptr %.sroa.013.030, i64 24 + %22 = getelementptr inbounds i8, ptr %.sroa.013.031, i64 24 tail call void @llvm.experimental.noalias.scope.decl(metadata !528) tail call void @llvm.experimental.noalias.scope.decl(metadata !531) %23 = load i64, ptr %22, align 8, !range !381, !alias.scope !533, !noalias !534, !noundef !4 @@ -2914,8 +2914,8 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t br i1 %24, label %"_ZN64_$LT$uu_tail..paths..InputKind$u20$as$u20$core..clone..Clone$GT$5clone17h81bdb03cd724aec8E.exit.i", label %25 25: ; preds = %19 - %26 = getelementptr inbounds i8, ptr %.sroa.013.030, i64 40 - %27 = getelementptr inbounds i8, ptr %.sroa.013.030, i64 32 + %26 = getelementptr inbounds i8, ptr %.sroa.013.031, i64 40 + %27 = getelementptr inbounds i8, ptr %.sroa.013.031, i64 32 %28 = load ptr, ptr %27, align 8, !alias.scope !535, !noalias !538, !nonnull !4, !noundef !4 %29 = load i64, ptr %26, align 8, !alias.scope !535, !noalias !538, !noundef !4 %30 = invoke { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h4ad6d712a8914f53E"(i64 noundef %29, i1 noundef zeroext false) @@ -2935,7 +2935,7 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t %.sink.i.i = phi i64 [ %31, %.noexc ], [ -9223372036854775808, %19 ] store i64 %.sink.i.i, ptr %5, align 8, !alias.scope !528, !noalias !540 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4), !noalias !526 - invoke void @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..clone..Clone$GT$5clone17hf54273bb14505f61E"(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr, {} }, i64 } }) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %.sroa.013.030) + invoke void @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..clone..Clone$GT$5clone17hf54273bb14505f61E"(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr, {} }, i64 } }) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %.sroa.013.031) to label %38 unwind label %34, !noalias !541 34: ; preds = %"_ZN64_$LT$uu_tail..paths..InputKind$u20$as$u20$core..clone..Clone$GT$5clone17h81bdb03cd724aec8E.exit.i" @@ -2955,7 +2955,7 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(24) %4, i64 24, i1 false) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4), !noalias !526 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5), !noalias !526 - %39 = getelementptr inbounds [0 x { [6 x i64] }], ptr %10, i64 0, i64 %.sroa.7.029 + %39 = getelementptr inbounds [0 x { [6 x i64] }], ptr %10, i64 0, i64 %.sroa.7.030 call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %39, ptr noundef nonnull align 8 dereferenceable(48) %6, i64 48, i1 false) %40 = icmp eq i64 %17, 0 br i1 %40, label %.thread, label %16 @@ -2968,7 +2968,7 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t 43: ; preds = %.loopexit, %34 %eh.lpad-body = phi { ptr, i32 } [ %35, %34 ], [ %lpad.loopexit, %.loopexit ] - store i64 %.sroa.7.029, ptr %12, align 8 + store i64 %.sroa.7.030, ptr %12, align 8 invoke void @"_ZN4core3ptr65drop_in_place$LT$alloc..vec..Vec$LT$uu_tail..paths..Input$GT$$GT$17h3da93bb200a3a5fdE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %7) #21 to label %44 unwind label %41 @@ -2995,17 +2995,17 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t %12 = icmp eq i64 %7, 0 br i1 %12, label %.thread, label %.lr.ph -.loopexit29: ; preds = %26 +.loopexit30: ; preds = %26 %lpad.loopexit = landingpad { ptr, i32 } cleanup br label %53 .lr.ph: ; preds = %3, %.loopexit - %.sroa.10.037 = phi i64 [ %13, %.loopexit ], [ %7, %3 ] - %.sroa.013.036 = phi ptr [ %16, %.loopexit ], [ %1, %3 ] - %.sroa.7.035 = phi i64 [ %17, %.loopexit ], [ 0, %3 ] - %13 = add i64 %.sroa.10.037, -1 - %14 = icmp eq ptr %.sroa.013.036, %11 + %.sroa.10.038 = phi i64 [ %13, %.loopexit ], [ %7, %3 ] + %.sroa.013.037 = phi ptr [ %16, %.loopexit ], [ %1, %3 ] + %.sroa.7.036 = phi i64 [ %17, %.loopexit ], [ 0, %3 ] + %13 = add i64 %.sroa.10.038, -1 + %14 = icmp eq ptr %.sroa.013.037, %11 br i1 %14, label %.thread, label %15 .thread: ; preds = %.loopexit, %.lr.ph, %3 @@ -3015,15 +3015,15 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t ret void 15: ; preds = %.lr.ph - %16 = getelementptr inbounds i8, ptr %.sroa.013.036, i64 72 - %17 = add nuw nsw i64 %.sroa.7.035, 1 + %16 = getelementptr inbounds i8, ptr %.sroa.013.037, i64 72 + %17 = add nuw nsw i64 %.sroa.7.036, 1 tail call void @llvm.experimental.noalias.scope.decl(metadata !542) - %18 = getelementptr inbounds i8, ptr %.sroa.013.036, i64 48 + %18 = getelementptr inbounds i8, ptr %.sroa.013.037, i64 48 %19 = load ptr, ptr %18, align 8, !alias.scope !542, !noalias !545, !nonnull !4, !align !436, !noundef !4 - %20 = getelementptr inbounds i8, ptr %.sroa.013.036, i64 56 + %20 = getelementptr inbounds i8, ptr %.sroa.013.037, i64 56 %21 = load i64, ptr %20, align 8, !alias.scope !542, !noalias !545, !noundef !4 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4), !noalias !547 - %22 = getelementptr inbounds i8, ptr %.sroa.013.036, i64 24 + %22 = getelementptr inbounds i8, ptr %.sroa.013.037, i64 24 %23 = load i64, ptr %22, align 8, !range !381, !alias.scope !542, !noalias !545, !noundef !4 %24 = icmp eq i64 %23, -9223372036854775808 br i1 %24, label %25, label %26 @@ -3034,12 +3034,12 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t 26: ; preds = %15 invoke void @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..clone..Clone$GT$5clone17hf54273bb14505f61E"(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr, {} }, i64 } }) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %22) - to label %.noexc unwind label %.loopexit29 + to label %.noexc unwind label %.loopexit30 .noexc: ; preds = %26, %25 - %27 = getelementptr inbounds i8, ptr %.sroa.013.036, i64 8 + %27 = getelementptr inbounds i8, ptr %.sroa.013.037, i64 8 %.val.i = load ptr, ptr %27, align 8, !alias.scope !542, !noalias !545, !nonnull !4, !noundef !4 - %28 = getelementptr inbounds i8, ptr %.sroa.013.036, i64 16 + %28 = getelementptr inbounds i8, ptr %.sroa.013.037, i64 16 %.val6.i = load i64, ptr %28, align 8, !alias.scope !542, !noalias !545, !noundef !4 %29 = invoke { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17hc056aac222b3d369E"(i64 noundef %.val6.i, i1 noundef zeroext false) to label %.noexc.i unwind label %43, !noalias !545 @@ -3052,20 +3052,20 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t br i1 %33, label %.loopexit, label %.lr.ph.i.i.i .lr.ph.i.i.i: ; preds = %.noexc.i, %35 - %.sroa.10.029.i.i.i = phi i64 [ %36, %35 ], [ %30, %.noexc.i ] - %.sroa.016.028.i.i.i = phi ptr [ %38, %35 ], [ %.val.i, %.noexc.i ] - %.sroa.7.027.i.i.i = phi i64 [ %37, %35 ], [ 0, %.noexc.i ] - %34 = icmp eq ptr %.sroa.016.028.i.i.i, %32 + %.sroa.10.030.i.i.i = phi i64 [ %36, %35 ], [ %30, %.noexc.i ] + %.sroa.016.029.i.i.i = phi ptr [ %38, %35 ], [ %.val.i, %.noexc.i ] + %.sroa.7.028.i.i.i = phi i64 [ %37, %35 ], [ 0, %.noexc.i ] + %34 = icmp eq ptr %.sroa.016.029.i.i.i, %32 br i1 %34, label %.loopexit, label %35 35: ; preds = %.lr.ph.i.i.i - %36 = add i64 %.sroa.10.029.i.i.i, -1 - %37 = add nuw nsw i64 %.sroa.7.027.i.i.i, 1 - %38 = getelementptr inbounds i8, ptr %.sroa.016.028.i.i.i, i64 16 - %.sroa.6.0.val.i.i.i = load ptr, ptr %.sroa.016.028.i.i.i, align 8, !alias.scope !548, !noalias !551, !nonnull !4, !align !436, !noundef !4 - %39 = getelementptr i8, ptr %.sroa.016.028.i.i.i, i64 8 + %36 = add i64 %.sroa.10.030.i.i.i, -1 + %37 = add nuw nsw i64 %.sroa.7.028.i.i.i, 1 + %38 = getelementptr inbounds i8, ptr %.sroa.016.029.i.i.i, i64 16 + %.sroa.6.0.val.i.i.i = load ptr, ptr %.sroa.016.029.i.i.i, align 8, !alias.scope !548, !noalias !551, !nonnull !4, !align !436, !noundef !4 + %39 = getelementptr i8, ptr %.sroa.016.029.i.i.i, i64 8 %.sroa.6.0.val15.i.i.i = load i64, ptr %39, align 8, !alias.scope !548, !noalias !551, !noundef !4 - %40 = getelementptr inbounds [0 x { [2 x i64] }], ptr %31, i64 0, i64 %.sroa.7.027.i.i.i + %40 = getelementptr inbounds [0 x { [2 x i64] }], ptr %31, i64 0, i64 %.sroa.7.028.i.i.i store ptr %.sroa.6.0.val.i.i.i, ptr %40, align 8 %41 = getelementptr inbounds i8, ptr %40, i64 8 store i64 %.sroa.6.0.val15.i.i.i, ptr %41, align 8 @@ -3085,12 +3085,12 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t unreachable .loopexit: ; preds = %35, %.lr.ph.i.i.i, %.noexc.i - %47 = getelementptr inbounds i8, ptr %.sroa.013.036, i64 64 + %47 = getelementptr inbounds i8, ptr %.sroa.013.037, i64 64 %48 = load i8, ptr %47, align 8, !range !440, !alias.scope !542, !noalias !545, !noundef !4 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %.sroa.06.sroa.6) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.06.sroa.6, ptr noundef nonnull align 8 dereferenceable(24) %4, i64 24, i1 false) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4), !noalias !547 - %49 = getelementptr inbounds [0 x { [9 x i64] }], ptr %8, i64 0, i64 %.sroa.7.035 + %49 = getelementptr inbounds [0 x { [9 x i64] }], ptr %8, i64 0, i64 %.sroa.7.036 call void @llvm.lifetime.start.p0(i64 7, ptr nonnull %.sroa.06.sroa.10) store i64 %30, ptr %49, align 8 %.sroa.06.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %49, i64 8 @@ -3118,9 +3118,9 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #20 unreachable -53: ; preds = %.loopexit29, %43 - %eh.lpad-body = phi { ptr, i32 } [ %44, %43 ], [ %lpad.loopexit, %.loopexit29 ] - store i64 %.sroa.7.035, ptr %10, align 8 +53: ; preds = %.loopexit30, %43 + %eh.lpad-body = phi { ptr, i32 } [ %44, %43 ], [ %lpad.loopexit, %.loopexit30 ] + store i64 %.sroa.7.036, ptr %10, align 8 invoke void @"_ZN4core3ptr96drop_in_place$LT$alloc..vec..Vec$LT$clap_builder..builder..possible_value..PossibleValue$GT$$GT$17h914d13a1a548a03dE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %5) #21 to label %54 unwind label %51 diff --git a/bench/coreutils-rs/optimized/1ks0bjj5pmsh3du4.ll b/bench/coreutils-rs/optimized/1ks0bjj5pmsh3du4.ll index ea2934fceea..13c79094d7e 100644 --- a/bench/coreutils-rs/optimized/1ks0bjj5pmsh3du4.ll +++ b/bench/coreutils-rs/optimized/1ks0bjj5pmsh3du4.ll @@ -107,11 +107,11 @@ define internal fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopegu %19 = and i64 %17, %18 %20 = add i64 %.val3.i, 17 %21 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %19, i64 %20) - %22 = extractvalue { i64, i1 } %21, 0 - %23 = extractvalue { i64, i1 } %21, 1 + %22 = extractvalue { i64, i1 } %21, 1 + %23 = extractvalue { i64, i1 } %21, 0 %24 = sub nuw i64 -9223372036854775808, %.val1.i - %25 = icmp ule i64 %22, %24 - %26 = xor i1 %23, true + %25 = icmp ule i64 %23, %24 + %26 = xor i1 %22, true tail call void @llvm.assume(i1 %26) tail call void @llvm.assume(i1 %25) %27 = icmp ult i64 %.val1.i, -9223372036854775807 @@ -120,13 +120,13 @@ define internal fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopegu tail call void @llvm.assume(i1 %28) %29 = icmp ne ptr %.val2.i, null tail call void @llvm.assume(i1 %29) - %30 = icmp eq i64 %22, 0 + %30 = icmp eq i64 %23, 0 br i1 %30, label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h1ccf94eb672cbb48E.exit", label %31 31: ; preds = %6 %32 = sub nsw i64 0, %19 %33 = getelementptr inbounds i8, ptr %.val2.i, i64 %32 - tail call void @__rust_dealloc(ptr noundef nonnull %33, i64 noundef %22, i64 noundef %.val1.i) #13, !noalias !8 + tail call void @__rust_dealloc(ptr noundef nonnull %33, i64 noundef %23, i64 noundef %.val1.i) #13, !noalias !8 br label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h1ccf94eb672cbb48E.exit" "_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h1ccf94eb672cbb48E.exit": ; preds = %1, %6, %31 @@ -219,10 +219,10 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %54 = shl nuw i64 %.sroa.6.05167.i.i, 5 %55 = add nuw nsw i64 %.sroa.6.05167.i.i, 16 %56 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %54, i64 %55) - %57 = extractvalue { i64, i1 } %56, 0 - %58 = extractvalue { i64, i1 } %56, 1 - %59 = icmp ugt i64 %57, 9223372036854775792 - %or.cond.i.i.i = or i1 %58, %59 + %57 = extractvalue { i64, i1 } %56, 1 + %58 = extractvalue { i64, i1 } %56, 0 + %59 = icmp ugt i64 %58, 9223372036854775792 + %or.cond.i.i.i = or i1 %57, %59 br i1 %or.cond.i.i.i, label %60, label %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h6c9846cae15a80ebE.exit.i.i.i 60: ; preds = %.thread.thread.i.i, %.thread.i.i @@ -230,13 +230,13 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r br label %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h576a22fbcf9cad74E.exit.thread.i.i _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h6c9846cae15a80ebE.exit.i.i.i: ; preds = %.thread.thread.i.i - %62 = tail call { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17hb4f01ccf52c1821cE.llvm.7515063190364451577(ptr noalias noundef nonnull readonly align 1 %15, i64 noundef 16, i64 noundef %57, i1 noundef zeroext false), !noalias !32 + %62 = tail call { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17hb4f01ccf52c1821cE.llvm.7515063190364451577(ptr noalias noundef nonnull readonly align 1 %15, i64 noundef 16, i64 noundef %58, i1 noundef zeroext false), !noalias !32 %63 = extractvalue { ptr, i64 } %62, 0 %64 = icmp eq ptr %63, null br i1 %64, label %65, label %_ZN9hashbrown3raw13RawTableInner20full_buckets_indices17h06ca43303e366e4dE.exit.i 65: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h6c9846cae15a80ebE.exit.i.i.i - %66 = tail call { i64, i64 } @_ZN9hashbrown3raw11Fallibility9alloc_err17hda6e1aad3d3bb9b0E(i1 noundef zeroext %3, i64 noundef 16, i64 noundef %57), !noalias !32 + %66 = tail call { i64, i64 } @_ZN9hashbrown3raw11Fallibility9alloc_err17hda6e1aad3d3bb9b0E(i1 noundef zeroext %3, i64 noundef 16, i64 noundef %58), !noalias !32 br label %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h576a22fbcf9cad74E.exit.thread.i.i _ZN9hashbrown3raw13RawTableInner17new_uninitialized17h576a22fbcf9cad74E.exit.thread.i.i: ; preds = %65, %60 @@ -268,10 +268,10 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17h06ca43303e366e4dE.exit. store i64 0, ptr %.sroa.617.i.i.sroa.6.0..sroa.617.0..sroa_idx.i.i.sroa_idx, align 8, !noalias !19 %72 = load i64, ptr %16, align 8, !alias.scope !11, !noalias !33, !noundef !7 %invariant.gep = getelementptr i8, ptr %71, i64 16 - %.not99 = icmp eq i64 %72, 0 - br i1 %.not99, label %.thread71, label %.noexc.preheader.lr.ph + %.not93 = icmp eq i64 %72, 0 + br i1 %.not93, label %.thread71, label %.preheader.lr.ph -.noexc.preheader.lr.ph: ; preds = %_ZN9hashbrown3raw13RawTableInner20full_buckets_indices17h06ca43303e366e4dE.exit.i +.preheader.lr.ph: ; preds = %_ZN9hashbrown3raw13RawTableInner20full_buckets_indices17h06ca43303e366e4dE.exit.i %73 = load ptr, ptr %0, align 8, !alias.scope !34, !noalias !37, !nonnull !7, !noundef !7 %74 = load <16 x i8>, ptr %73, align 16, !noalias !39 %75 = icmp slt <16 x i8> %74, zeroinitializer @@ -287,55 +287,55 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17h06ca43303e366e4dE.exit. %.sroa.0.sroa.9.0..sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %13, i64 48 %83 = getelementptr inbounds i8, ptr %13, i64 56 %84 = getelementptr inbounds i8, ptr %10, i64 24 - br label %.noexc.preheader + br label %.preheader 85: ; preds = %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h576a22fbcf9cad74E.exit.thread.i.i, %49 - %.sroa.5.060.ph = phi i64 [ %51, %49 ], [ %.sroa.6.04357.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h576a22fbcf9cad74E.exit.thread.i.i ] - %.sroa.9.058.ph = phi i64 [ %.sroa.6.0.i.i4, %49 ], [ %.sroa.11.04455.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h576a22fbcf9cad74E.exit.thread.i.i ] + %.sroa.5.056.ph = phi i64 [ %51, %49 ], [ %.sroa.6.04357.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h576a22fbcf9cad74E.exit.thread.i.i ] + %.sroa.9.054.ph = phi i64 [ %.sroa.6.0.i.i4, %49 ], [ %.sroa.11.04455.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17h576a22fbcf9cad74E.exit.thread.i.i ] call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %14), !noalias !19 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17he014eb45091677dbE.exit -86: ; preds = %.noexc10, %.noexc9, %.noexc8, %.noexc._crit_edge +86: ; preds = %.noexc10, %.noexc9, %.noexc8, %._crit_edge %87 = landingpad { ptr, i32 } cleanup call fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h3698d4e1070cb8abE"(ptr noalias noundef nonnull align 8 dereferenceable(56) %14) #14 br label %common.resume -.noexc.preheader: ; preds = %.noexc.preheader.lr.ph, %166 - %.sroa.1341.0103 = phi i16 [ %77, %.noexc.preheader.lr.ph ], [ %96, %166 ] - %.sroa.939.0102 = phi i64 [ %72, %.noexc.preheader.lr.ph ], [ %100, %166 ] - %.sroa.036.0101 = phi ptr [ %73, %.noexc.preheader.lr.ph ], [ %.sroa.036.1.lcssa, %166 ] - %.sroa.537.0100 = phi i64 [ 0, %.noexc.preheader.lr.ph ], [ %.sroa.537.1.lcssa, %166 ] - %.not.i6.not92 = icmp eq i16 %.sroa.1341.0103, 0 - br i1 %.not.i6.not92, label %.noexc2, label %.noexc._crit_edge - -.noexc2: ; preds = %.noexc.preheader, %.noexc2 - %.sroa.036.194 = phi ptr [ %89, %.noexc2 ], [ %.sroa.036.0101, %.noexc.preheader ] - %.sroa.537.193 = phi i64 [ %93, %.noexc2 ], [ %.sroa.537.0100, %.noexc.preheader ] - %88 = icmp ne ptr %.sroa.036.194, null +.preheader: ; preds = %.preheader.lr.ph, %166 + %.sroa.1341.097 = phi i16 [ %77, %.preheader.lr.ph ], [ %98, %166 ] + %.sroa.939.096 = phi i64 [ %72, %.preheader.lr.ph ], [ %100, %166 ] + %.sroa.036.095 = phi ptr [ %73, %.preheader.lr.ph ], [ %.sroa.036.1.lcssa, %166 ] + %.sroa.537.094 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.537.1.lcssa, %166 ] + %.not.i688 = icmp eq i16 %.sroa.1341.097, 0 + br i1 %.not.i688, label %.noexc2, label %._crit_edge + +.noexc2: ; preds = %.preheader, %.noexc2 + %.sroa.036.190 = phi ptr [ %89, %.noexc2 ], [ %.sroa.036.095, %.preheader ] + %.sroa.537.189 = phi i64 [ %93, %.noexc2 ], [ %.sroa.537.094, %.preheader ] + %88 = icmp ne ptr %.sroa.036.190, null call void @llvm.assume(i1 %88) - %89 = getelementptr inbounds i8, ptr %.sroa.036.194, i64 16 + %89 = getelementptr inbounds i8, ptr %.sroa.036.190, i64 16 %90 = load <16 x i8>, ptr %89, align 16, !noalias !53 %91 = icmp slt <16 x i8> %90, zeroinitializer %92 = bitcast <16 x i1> %91 to i16 - %93 = add i64 %.sroa.537.193, 16 - %.not.i6.not = icmp eq i16 %92, -1 - br i1 %.not.i6.not, label %.noexc2, label %.noexc._crit_edge.loopexit + %93 = add i64 %.sroa.537.189, 16 + %.not.i6 = icmp eq i16 %92, -1 + br i1 %.not.i6, label %.noexc2, label %._crit_edge.loopexit -.noexc._crit_edge.loopexit: ; preds = %.noexc2 +._crit_edge.loopexit: ; preds = %.noexc2 %94 = xor i16 %92, -1 - br label %.noexc._crit_edge - -.noexc._crit_edge: ; preds = %.noexc._crit_edge.loopexit, %.noexc.preheader - %.sroa.1341.1.lcssa91 = phi i16 [ %.sroa.1341.0103, %.noexc.preheader ], [ %94, %.noexc._crit_edge.loopexit ] - %.sroa.537.1.lcssa = phi i64 [ %.sroa.537.0100, %.noexc.preheader ], [ %93, %.noexc._crit_edge.loopexit ] - %.sroa.036.1.lcssa = phi ptr [ %.sroa.036.0101, %.noexc.preheader ], [ %89, %.noexc._crit_edge.loopexit ] - %95 = add i16 %.sroa.1341.1.lcssa91, -1 - %96 = and i16 %95, %.sroa.1341.1.lcssa91 - %97 = call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.sroa.1341.1.lcssa91, i1 true) - %98 = zext nneg i16 %97 to i64 - %99 = add i64 %.sroa.537.1.lcssa, %98 - %100 = add i64 %.sroa.939.0102, -1 + br label %._crit_edge + +._crit_edge: ; preds = %._crit_edge.loopexit, %.preheader + %.sroa.537.1.lcssa = phi i64 [ %.sroa.537.094, %.preheader ], [ %93, %._crit_edge.loopexit ] + %.sroa.036.1.lcssa = phi ptr [ %.sroa.036.095, %.preheader ], [ %89, %._crit_edge.loopexit ] + %.sroa.1341.1.lcssa = phi i16 [ %.sroa.1341.097, %.preheader ], [ %94, %._crit_edge.loopexit ] + %95 = call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.sroa.1341.1.lcssa, i1 true) + %96 = zext nneg i16 %95 to i64 + %97 = add i16 %.sroa.1341.1.lcssa, -1 + %98 = and i16 %97, %.sroa.1341.1.lcssa + %99 = add i64 %.sroa.537.1.lcssa, %96 + %100 = add i64 %.sroa.939.096, -1 call void @llvm.experimental.noalias.scope.decl(metadata !56) %101 = load ptr, ptr %0, align 8, !alias.scope !56, !noalias !57, !nonnull !7, !noundef !7 %102 = sub nsw i64 0, %99 @@ -358,13 +358,13 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17h06ca43303e366e4dE.exit. to label %.noexc8 unwind label %86 .thread71.loopexit: ; preds = %166 - %.pre115 = load i64, ptr %16, align 8, !alias.scope !84, !noalias !85 - %.pre116 = load i64, ptr %.sroa.617.i.i.sroa.5.0..sroa.617.0..sroa_idx.i.i.sroa_idx, align 8, !noalias !19 + %.pre109 = load i64, ptr %16, align 8, !alias.scope !84, !noalias !85 + %.pre110 = load i64, ptr %.sroa.617.i.i.sroa.5.0..sroa.617.0..sroa_idx.i.i.sroa_idx, align 8, !noalias !19 br label %.thread71 .thread71: ; preds = %.thread71.loopexit, %_ZN9hashbrown3raw13RawTableInner20full_buckets_indices17h06ca43303e366e4dE.exit.i - %106 = phi i64 [ %.pre116, %.thread71.loopexit ], [ %.0.i.i.i, %_ZN9hashbrown3raw13RawTableInner20full_buckets_indices17h06ca43303e366e4dE.exit.i ] - %107 = phi i64 [ %.pre115, %.thread71.loopexit ], [ 0, %_ZN9hashbrown3raw13RawTableInner20full_buckets_indices17h06ca43303e366e4dE.exit.i ] + %106 = phi i64 [ %.pre110, %.thread71.loopexit ], [ %.0.i.i.i, %_ZN9hashbrown3raw13RawTableInner20full_buckets_indices17h06ca43303e366e4dE.exit.i ] + %107 = phi i64 [ %.pre109, %.thread71.loopexit ], [ 0, %_ZN9hashbrown3raw13RawTableInner20full_buckets_indices17h06ca43303e366e4dE.exit.i ] %108 = sub i64 %106, %107 store i64 %108, ptr %.sroa.617.i.i.sroa.5.0..sroa.617.0..sroa_idx.i.i.sroa_idx, align 8, !noalias !19 store i64 %107, ptr %.sroa.617.i.i.sroa.6.0..sroa.617.0..sroa_idx.i.i.sroa_idx, align 8, !noalias !19 @@ -382,7 +382,7 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17h06ca43303e366e4dE.exit. %exitcond.not.i = icmp eq i64 %114, 4 br i1 %exitcond.not.i, label %_ZN4core3ptr19swap_nonoverlapping17hcb7292d07a5d57dbE.exit, label %109 -.noexc8: ; preds = %.noexc._crit_edge +.noexc8: ; preds = %._crit_edge call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12), !noalias !75 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11), !noalias !86 store i64 %.val5.i, ptr %11, align 8, !noalias !86 @@ -426,21 +426,21 @@ _ZN4core3ptr19swap_nonoverlapping17hcb7292d07a5d57dbE.exit: ; preds = %109 %127 = add i64 %126, 32 %128 = add i64 %.val3.i.i, 17 %129 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %127, i64 %128) - %130 = extractvalue { i64, i1 } %129, 0 - %131 = extractvalue { i64, i1 } %129, 1 - %132 = icmp ult i64 %130, 9223372036854775793 - %133 = xor i1 %131, true + %130 = extractvalue { i64, i1 } %129, 1 + %131 = extractvalue { i64, i1 } %129, 0 + %132 = icmp ult i64 %131, 9223372036854775793 + %133 = xor i1 %130, true call void @llvm.assume(i1 %133) call void @llvm.assume(i1 %132) %134 = icmp ne ptr %.val2.i.i, null call void @llvm.assume(i1 %134) - %135 = icmp eq i64 %130, 0 + %135 = icmp eq i64 %131, 0 br i1 %135, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h3698d4e1070cb8abE.exit", label %136 136: ; preds = %125 %137 = sub nuw nsw i64 -32, %126 %138 = getelementptr inbounds i8, ptr %.val2.i.i, i64 %137 - call void @__rust_dealloc(ptr noundef nonnull %138, i64 noundef %130, i64 noundef 16) #13, !noalias !103 + call void @__rust_dealloc(ptr noundef nonnull %138, i64 noundef %131, i64 noundef 16) #13, !noalias !103 br label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h3698d4e1070cb8abE.exit" "_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h3698d4e1070cb8abE.exit": ; preds = %_ZN4core3ptr19swap_nonoverlapping17hcb7292d07a5d57dbE.exit, %125, %136 @@ -516,7 +516,7 @@ _ZN4core3ptr19swap_nonoverlapping17hcb7292d07a5d57dbE.exit: ; preds = %109 %179 = getelementptr inbounds i8, ptr %176, i64 %178 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(32) %179, ptr noundef nonnull align 1 dereferenceable(32) %175, i64 32, i1 false) %.not = icmp eq i64 %100, 0 - br i1 %.not, label %.thread71.loopexit, label %.noexc.preheader + br i1 %.not, label %.thread71.loopexit, label %.preheader common.resume: ; preds = %205, %86 %common.resume.op = phi { ptr, i32 } [ %87, %86 ], [ %206, %205 ] @@ -814,8 +814,8 @@ _ZN9hashbrown3raw13RawTableInner15rehash_in_place17h782a8b650e027c37E.exit.threa br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17he014eb45091677dbE.exit _ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17he014eb45091677dbE.exit: ; preds = %85, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h3698d4e1070cb8abE.exit", %21, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h782a8b650e027c37E.exit.thread - %.sroa.4.0.i = phi i64 [ %24, %21 ], [ undef, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h782a8b650e027c37E.exit.thread ], [ %.sroa.9.058.ph, %85 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h3698d4e1070cb8abE.exit" ] - %.sroa.0.0.i = phi i64 [ %23, %21 ], [ -9223372036854775807, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h782a8b650e027c37E.exit.thread ], [ %.sroa.5.060.ph, %85 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h3698d4e1070cb8abE.exit" ] + %.sroa.4.0.i = phi i64 [ %24, %21 ], [ undef, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h782a8b650e027c37E.exit.thread ], [ %.sroa.9.054.ph, %85 ], [ undef, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h3698d4e1070cb8abE.exit" ] + %.sroa.0.0.i = phi i64 [ %23, %21 ], [ -9223372036854775807, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h782a8b650e027c37E.exit.thread ], [ %.sroa.5.056.ph, %85 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h3698d4e1070cb8abE.exit" ] %308 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 %309 = insertvalue { i64, i64 } %308, i64 %.sroa.4.0.i, 1 ret { i64, i64 } %309 diff --git a/bench/coreutils-rs/optimized/1n0wbgmx15bwq5ex.ll b/bench/coreutils-rs/optimized/1n0wbgmx15bwq5ex.ll index 29c818d391b..e3c29cb3baa 100644 --- a/bench/coreutils-rs/optimized/1n0wbgmx15bwq5ex.ll +++ b/bench/coreutils-rs/optimized/1n0wbgmx15bwq5ex.ll @@ -13,9 +13,13 @@ target triple = "x86_64-unknown-linux-gnu" ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define hidden { i64, i64 } @"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcbe813967be8cffaE.llvm.306060513548056295"(i64 noundef %0, i64 %1) unnamed_addr #0 { - %3 = insertvalue { i64, i64 } poison, i64 %0, 0 - %4 = insertvalue { i64, i64 } %3, i64 %1, 1 - ret { i64, i64 } %4 + %3 = icmp eq i64 %0, -9223372036854775807 + %4 = icmp eq i64 %0, 0 + %5 = or i1 %3, %4 + %.sroa.33.0 = select i1 %5, i64 undef, i64 %1 + %6 = insertvalue { i64, i64 } poison, i64 %0, 0 + %7 = insertvalue { i64, i64 } %6, i64 %.sroa.33.0, 1 + ret { i64, i64 } %7 } ; Function Attrs: inlinehint nonlazybind uwtable @@ -33,15 +37,19 @@ define hidden void @_ZN5alloc7raw_vec14handle_reserve17hf0112dc2ee693d5aE.llvm.3 unreachable 5: ; preds = %2 - tail call void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef %0, i64 noundef %1) #16 + %6 = icmp eq i64 %0, -9223372036854775807 + %.sroa.33.0.i = select i1 %6, i64 undef, i64 %1 + tail call void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef %0, i64 noundef %.sroa.33.0.i) #16 unreachable } ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define hidden { i64, i64 } @"_ZN5alloc7raw_vec14handle_reserve28_$u7b$$u7b$closure$u7d$$u7d$17h58d85e0435200bd1E.llvm.306060513548056295"(i64 noundef %0, i64 %1) unnamed_addr #0 { - %3 = insertvalue { i64, i64 } poison, i64 %0, 0 - %4 = insertvalue { i64, i64 } %3, i64 %1, 1 - ret { i64, i64 } %4 + %3 = icmp eq i64 %0, 0 + %.4 = select i1 %3, i64 undef, i64 %1 + %4 = insertvalue { i64, i64 } poison, i64 %0, 0 + %5 = insertvalue { i64, i64 } %4, i64 %.4, 1 + ret { i64, i64 } %5 } ; Function Attrs: nonlazybind uwtable @@ -2468,10 +2476,10 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h191 %18 = icmp ule i64 %17, %14 tail call void @llvm.assume(i1 %18) %19 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef 8, i64 noundef %17) #17 - %.not33 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not33, ptr inttoptr (i64 8 to ptr), ptr %19 + %.not34 = icmp eq ptr %19, null + %.sink1.i = select i1 %.not34, ptr inttoptr (i64 8 to ptr), ptr %19 %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not33, label %22, label %21 + br i1 %.not34, label %22, label %21 21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] @@ -2530,10 +2538,10 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h230 %18 = icmp ule i64 %17, %14 tail call void @llvm.assume(i1 %18) %19 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef 8, i64 noundef %17) #17 - %.not33 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not33, ptr inttoptr (i64 8 to ptr), ptr %19 + %.not34 = icmp eq ptr %19, null + %.sink1.i = select i1 %.not34, ptr inttoptr (i64 8 to ptr), ptr %19 %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not33, label %22, label %21 + br i1 %.not34, label %22, label %21 21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] diff --git a/bench/coreutils-rs/optimized/1uozre6jd02uz7mh.ll b/bench/coreutils-rs/optimized/1uozre6jd02uz7mh.ll index 802b7a88c00..8773c829d9d 100644 --- a/bench/coreutils-rs/optimized/1uozre6jd02uz7mh.ll +++ b/bench/coreutils-rs/optimized/1uozre6jd02uz7mh.ll @@ -56,11 +56,11 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t br i1 %11, label %.thread, label %.lr.ph .lr.ph: ; preds = %3, %18 - %.sroa.10.032 = phi i64 [ %12, %18 ], [ %6, %3 ] - %.sroa.014.031 = phi ptr [ %20, %18 ], [ %1, %3 ] - %.sroa.7.030 = phi i64 [ %19, %18 ], [ 0, %3 ] - %12 = add i64 %.sroa.10.032, -1 - %13 = icmp eq ptr %.sroa.014.031, %10 + %.sroa.10.033 = phi i64 [ %12, %18 ], [ %6, %3 ] + %.sroa.014.032 = phi ptr [ %20, %18 ], [ %1, %3 ] + %.sroa.7.031 = phi i64 [ %19, %18 ], [ 0, %3 ] + %12 = add i64 %.sroa.10.033, -1 + %13 = icmp eq ptr %.sroa.014.032, %10 br i1 %13, label %.thread, label %14 .thread: ; preds = %18, %.lr.ph, %3 @@ -70,22 +70,22 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t ret void 14: ; preds = %.lr.ph - %15 = getelementptr i8, ptr %.sroa.014.031, i64 8 + %15 = getelementptr i8, ptr %.sroa.014.032, i64 8 %.sroa.6.0.val = load ptr, ptr %15, align 8, !alias.scope !10, !noalias !13, !nonnull !4, !noundef !4 - %16 = getelementptr i8, ptr %.sroa.014.031, i64 16 + %16 = getelementptr i8, ptr %.sroa.014.032, i64 16 %.sroa.6.0.val13 = load i64, ptr %16, align 8, !alias.scope !10, !noalias !13, !noundef !4 %17 = invoke { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h1b82a9858f5ff96cE"(i64 noundef %.sroa.6.0.val13, i1 noundef zeroext false) to label %18 unwind label %28 18: ; preds = %14 - %19 = add nuw nsw i64 %.sroa.7.030, 1 - %20 = getelementptr inbounds i8, ptr %.sroa.014.031, i64 24 + %19 = add nuw nsw i64 %.sroa.7.031, 1 + %20 = getelementptr inbounds i8, ptr %.sroa.014.032, i64 24 %21 = extractvalue { i64, ptr } %17, 0 %22 = extractvalue { i64, ptr } %17, 1 %23 = icmp ne ptr %22, null tail call void @llvm.assume(i1 %23) tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %22, ptr nonnull readonly align 1 %.sroa.6.0.val, i64 %.sroa.6.0.val13, i1 false) - %24 = getelementptr inbounds [0 x { [3 x i64] }], ptr %7, i64 0, i64 %.sroa.7.030 + %24 = getelementptr inbounds [0 x { [3 x i64] }], ptr %7, i64 0, i64 %.sroa.7.031 store i64 %21, ptr %24, align 8 %.sroa.06.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %24, i64 8 store ptr %22, ptr %.sroa.06.sroa.4.0..sroa_idx, align 8 @@ -103,7 +103,7 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t 28: ; preds = %14 %lpad.loopexit = landingpad { ptr, i32 } cleanup - store i64 %.sroa.7.030, ptr %9, align 8 + store i64 %.sroa.7.031, ptr %9, align 8 invoke void @"_ZN4core3ptr70drop_in_place$LT$alloc..vec..Vec$LT$std..ffi..os_str..OsString$GT$$GT$17h7a8321335b6bbadcE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %4) #12 to label %29 unwind label %26 @@ -170,30 +170,30 @@ define hidden void @"_ZN83_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$ br i1 %17, label %"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6to_vec17hf40fd703c01a5565E.llvm.2541803428277090184.exit", label %.lr.ph.i .lr.ph.i: ; preds = %2, %24 - %.sroa.10.032.i = phi i64 [ %18, %24 ], [ %13, %2 ] - %.sroa.014.031.i = phi ptr [ %26, %24 ], [ %5, %2 ] - %.sroa.7.030.i = phi i64 [ %25, %24 ], [ 0, %2 ] - %18 = add i64 %.sroa.10.032.i, -1 - %19 = icmp eq ptr %.sroa.014.031.i, %7 + %.sroa.10.033.i = phi i64 [ %18, %24 ], [ %13, %2 ] + %.sroa.014.032.i = phi ptr [ %26, %24 ], [ %5, %2 ] + %.sroa.7.031.i = phi i64 [ %25, %24 ], [ 0, %2 ] + %18 = add i64 %.sroa.10.033.i, -1 + %19 = icmp eq ptr %.sroa.014.032.i, %7 br i1 %19, label %"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6to_vec17hf40fd703c01a5565E.llvm.2541803428277090184.exit.loopexit", label %20 20: ; preds = %.lr.ph.i - %21 = getelementptr i8, ptr %.sroa.014.031.i, i64 8 + %21 = getelementptr i8, ptr %.sroa.014.032.i, i64 8 %.sroa.6.0.val.i = load ptr, ptr %21, align 8, !alias.scope !44, !noalias !47, !nonnull !4, !noundef !4 - %22 = getelementptr i8, ptr %.sroa.014.031.i, i64 16 + %22 = getelementptr i8, ptr %.sroa.014.032.i, i64 16 %.sroa.6.0.val13.i = load i64, ptr %22, align 8, !alias.scope !44, !noalias !47, !noundef !4 %23 = invoke { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h1b82a9858f5ff96cE"(i64 noundef %.sroa.6.0.val13.i, i1 noundef zeroext false) to label %24 unwind label %34, !noalias !49 24: ; preds = %20 - %25 = add nuw nsw i64 %.sroa.7.030.i, 1 - %26 = getelementptr inbounds i8, ptr %.sroa.014.031.i, i64 24 + %25 = add nuw nsw i64 %.sroa.7.031.i, 1 + %26 = getelementptr inbounds i8, ptr %.sroa.014.032.i, i64 24 %27 = extractvalue { i64, ptr } %23, 0 %28 = extractvalue { i64, ptr } %23, 1 %29 = icmp ne ptr %28, null tail call void @llvm.assume(i1 %29) tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %28, ptr nonnull readonly align 1 %.sroa.6.0.val.i, i64 %.sroa.6.0.val13.i, i1 false) - %30 = getelementptr inbounds [0 x { [3 x i64] }], ptr %14, i64 0, i64 %.sroa.7.030.i + %30 = getelementptr inbounds [0 x { [3 x i64] }], ptr %14, i64 0, i64 %.sroa.7.031.i store i64 %27, ptr %30, align 8 %.sroa.06.sroa.4.0..sroa_idx.i = getelementptr inbounds i8, ptr %30, i64 8 store ptr %28, ptr %.sroa.06.sroa.4.0..sroa_idx.i, align 8 @@ -211,7 +211,7 @@ define hidden void @"_ZN83_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$ 34: ; preds = %20 %lpad.loopexit.i = landingpad { ptr, i32 } cleanup - store i64 %.sroa.7.030.i, ptr %16, align 8, !noalias !42 + store i64 %.sroa.7.031.i, ptr %16, align 8, !noalias !42 invoke void @"_ZN4core3ptr70drop_in_place$LT$alloc..vec..Vec$LT$std..ffi..os_str..OsString$GT$$GT$17h7a8321335b6bbadcE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %3) #12 to label %35 unwind label %32, !noalias !49 diff --git a/bench/coreutils-rs/optimized/1xrz1ag37fklzklg.ll b/bench/coreutils-rs/optimized/1xrz1ag37fklzklg.ll index ed3ca921359..086d0585764 100644 --- a/bench/coreutils-rs/optimized/1xrz1ag37fklzklg.ll +++ b/bench/coreutils-rs/optimized/1xrz1ag37fklzklg.ll @@ -336,8 +336,8 @@ _ZN12clap_builder6parser5error12MatchesError6unwrap17hce3eaa050af0207bE.exit.thr %66 = icmp ugt i64 %65, %.val5.i %.promoted.i.i = load i64, ptr %.sroa.0.sroa.3.sroa.3.0..sroa.0.sroa.3.0..sroa_idx.sroa_idx, align 8, !alias.scope !54, !noalias !55 %67 = icmp ugt i64 %.promoted.i.i, %65 - %or.cond.i43.i.i = or i1 %66, %67 - br i1 %or.cond.i43.i.i, label %"_ZN4core3str4iter22SplitInternal$LT$P$GT$7get_end17h330877b38caed909E.exit.i", label %.lr.ph.i.i + %or.cond.i42.i.i = or i1 %66, %67 + br i1 %or.cond.i42.i.i, label %"_ZN4core3str4iter22SplitInternal$LT$P$GT$7get_end17h330877b38caed909E.exit.i", label %.lr.ph.i.i .lr.ph.i.i: ; preds = %63 %68 = getelementptr inbounds i8, ptr %.val.i, i64 %.promoted.i.i @@ -348,37 +348,37 @@ _ZN12clap_builder6parser5error12MatchesError6unwrap17hce3eaa050af0207bE.exit.thr br i1 %71, label %.lr.ph.split.us.split.i.i, label %.lr.ph.split.split.i.i .lr.ph.split.us.split.i.i: ; preds = %.lr.ph.i.i, %91 - %.49.us.i.i = phi ptr [ %94, %91 ], [ %68, %.lr.ph.i.i ] - %.sroa.3.0.i47.us.i.i = phi i64 [ %93, %91 ], [ %69, %.lr.ph.i.i ] + %.sroa.0.050.us.i.i = phi ptr [ %94, %91 ], [ %68, %.lr.ph.i.i ] + %.sroa.7.049.us.i.i = phi i64 [ %93, %91 ], [ %69, %.lr.ph.i.i ] %72 = phi i64 [ %89, %91 ], [ %.promoted.i.i, %.lr.ph.i.i ] %73 = load i8, ptr %gep, align 1, !alias.scope !54, !noalias !55, !noundef !5 - %74 = icmp ult i64 %.sroa.3.0.i47.us.i.i, 16 + %74 = icmp ult i64 %.sroa.7.049.us.i.i, 16 br i1 %74, label %77, label %75 75: ; preds = %.lr.ph.split.us.split.i.i - %76 = call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef %73, ptr noalias noundef nonnull readonly align 1 %.49.us.i.i, i64 noundef %.sroa.3.0.i47.us.i.i), !noalias !57 + %76 = call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef %73, ptr noalias noundef nonnull readonly align 1 %.sroa.0.050.us.i.i, i64 noundef %.sroa.7.049.us.i.i), !noalias !57 br label %85 77: ; preds = %.lr.ph.split.us.split.i.i - %.not.i.us.i.i = icmp eq i64 %65, %72 + %.not.i.us.i.i = icmp eq i64 %.sroa.7.049.us.i.i, 0 br i1 %.not.i.us.i.i, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us.i.i, label %.lr.ph.i.us.i.i .lr.ph.i.us.i.i: ; preds = %77, %81 %.05.i.us.i.i = phi i64 [ %82, %81 ], [ 0, %77 ] - %78 = getelementptr inbounds [0 x i8], ptr %.49.us.i.i, i64 0, i64 %.05.i.us.i.i + %78 = getelementptr inbounds [0 x i8], ptr %.sroa.0.050.us.i.i, i64 0, i64 %.05.i.us.i.i %79 = load i8, ptr %78, align 1, !alias.scope !58, !noalias !57, !noundef !5 %80 = icmp eq i8 %79, %73 br i1 %80, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us.i.i, label %81 81: ; preds = %.lr.ph.i.us.i.i - %82 = add nuw i64 %.05.i.us.i.i, 1 - %exitcond.not.i.us.i.i = icmp eq i64 %82, %.sroa.3.0.i47.us.i.i + %82 = add nuw nsw i64 %.05.i.us.i.i, 1 + %exitcond.not.i.us.i.i = icmp eq i64 %82, %.sroa.7.049.us.i.i br i1 %exitcond.not.i.us.i.i, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us.i.i, label %.lr.ph.i.us.i.i _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us.i.i: ; preds = %81, %.lr.ph.i.us.i.i, %77 - %.0.lcssa.i.us.i.i = phi i64 [ 0, %77 ], [ %.sroa.3.0.i47.us.i.i, %81 ], [ %.05.i.us.i.i, %.lr.ph.i.us.i.i ] - %.sroa.0.0.i25.us.i.i = phi i64 [ 0, %77 ], [ 0, %81 ], [ 1, %.lr.ph.i.us.i.i ] - %83 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i25.us.i.i, 0 + %.0.lcssa.i.us.i.i = phi i64 [ 0, %77 ], [ %.sroa.7.049.us.i.i, %81 ], [ %.05.i.us.i.i, %.lr.ph.i.us.i.i ] + %.sroa.0.0.i24.us.i.i = phi i64 [ 0, %77 ], [ 0, %81 ], [ 1, %.lr.ph.i.us.i.i ] + %83 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i24.us.i.i, 0 %84 = insertvalue { i64, i64 } %83, i64 %.0.lcssa.i.us.i.i, 1 br label %85 @@ -395,8 +395,8 @@ _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us.i.i: ; preds = % store i64 %89, ptr %.sroa.0.sroa.3.sroa.3.0..sroa.0.sroa.3.0..sroa_idx.sroa_idx, align 8, !alias.scope !54, !noalias !55 %.not.us.i.i = icmp ult i64 %89, %70 %90 = icmp ugt i64 %89, %.val5.i - %or.cond83.i.i = or i1 %.not.us.i.i, %90 - br i1 %or.cond83.i.i, label %91, label %.split51.us.i.i + %or.cond87.i.i = or i1 %.not.us.i.i, %90 + br i1 %or.cond87.i.i, label %91, label %.split52.us.i.i 91: ; preds = %87 %92 = icmp ugt i64 %89, %65 @@ -405,37 +405,37 @@ _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us.i.i: ; preds = % br i1 %92, label %"_ZN4core3str4iter22SplitInternal$LT$P$GT$7get_end17h330877b38caed909E.exit.i", label %.lr.ph.split.us.split.i.i .lr.ph.split.split.i.i: ; preds = %.lr.ph.i.i, %114 - %.49.i.i = phi ptr [ %117, %114 ], [ %68, %.lr.ph.i.i ] - %.sroa.3.0.i47.i.i = phi i64 [ %116, %114 ], [ %69, %.lr.ph.i.i ] + %.sroa.0.050.i.i = phi ptr [ %117, %114 ], [ %68, %.lr.ph.i.i ] + %.sroa.7.049.i.i = phi i64 [ %116, %114 ], [ %69, %.lr.ph.i.i ] %95 = phi i64 [ %112, %114 ], [ %.promoted.i.i, %.lr.ph.i.i ] %96 = load i8, ptr %gep, align 1, !alias.scope !54, !noalias !55, !noundef !5 - %97 = icmp ult i64 %.sroa.3.0.i47.i.i, 16 + %97 = icmp ult i64 %.sroa.7.049.i.i, 16 br i1 %97, label %100, label %98 98: ; preds = %.lr.ph.split.split.i.i - %99 = call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef %96, ptr noalias noundef nonnull readonly align 1 %.49.i.i, i64 noundef %.sroa.3.0.i47.i.i), !noalias !57 + %99 = call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef %96, ptr noalias noundef nonnull readonly align 1 %.sroa.0.050.i.i, i64 noundef %.sroa.7.049.i.i), !noalias !57 br label %108 100: ; preds = %.lr.ph.split.split.i.i - %.not.i.i.i = icmp eq i64 %65, %95 + %.not.i.i.i = icmp eq i64 %.sroa.7.049.i.i, 0 br i1 %.not.i.i.i, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i, label %.lr.ph.i.i.i .lr.ph.i.i.i: ; preds = %100, %104 %.05.i.i.i = phi i64 [ %105, %104 ], [ 0, %100 ] - %101 = getelementptr inbounds [0 x i8], ptr %.49.i.i, i64 0, i64 %.05.i.i.i + %101 = getelementptr inbounds [0 x i8], ptr %.sroa.0.050.i.i, i64 0, i64 %.05.i.i.i %102 = load i8, ptr %101, align 1, !alias.scope !58, !noalias !57, !noundef !5 %103 = icmp eq i8 %102, %96 br i1 %103, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i, label %104 104: ; preds = %.lr.ph.i.i.i - %105 = add nuw i64 %.05.i.i.i, 1 - %exitcond.not.i.i.i = icmp eq i64 %105, %.sroa.3.0.i47.i.i + %105 = add nuw nsw i64 %.05.i.i.i, 1 + %exitcond.not.i.i.i = icmp eq i64 %105, %.sroa.7.049.i.i br i1 %exitcond.not.i.i.i, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i, label %.lr.ph.i.i.i _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i: ; preds = %104, %.lr.ph.i.i.i, %100 - %.0.lcssa.i.i.i = phi i64 [ 0, %100 ], [ %.sroa.3.0.i47.i.i, %104 ], [ %.05.i.i.i, %.lr.ph.i.i.i ] - %.sroa.0.0.i25.i.i = phi i64 [ 0, %100 ], [ 0, %104 ], [ 1, %.lr.ph.i.i.i ] - %106 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i25.i.i, 0 + %.0.lcssa.i.i.i = phi i64 [ 0, %100 ], [ %.sroa.7.049.i.i, %104 ], [ %.05.i.i.i, %.lr.ph.i.i.i ] + %.sroa.0.0.i24.i.i = phi i64 [ 0, %100 ], [ 0, %104 ], [ 1, %.lr.ph.i.i.i ] + %106 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i24.i.i, 0 %107 = insertvalue { i64, i64 } %106, i64 %.0.lcssa.i.i.i, 1 br label %108 @@ -472,7 +472,7 @@ _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i: ; preds = %104 %120 = icmp eq i32 %bcmp.i.i.i, 0 br i1 %120, label %124, label %114 -.split51.us.i.i: ; preds = %87 +.split52.us.i.i: ; preds = %87 call void @_ZN4core5slice5index24slice_end_index_len_fail17h334e37603831ab29E(i64 noundef %70, i64 noundef 4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.254c1ce08f6f1a5effddeda4a76dd85f.30) #13, !noalias !65 unreachable @@ -1609,9 +1609,9 @@ define { ptr, ptr } @_ZN8uu_mkdir5mkdir17h5dcc11da47961082E(ptr noalias noundef 16: ; preds = %5 %17 = extractvalue { ptr, ptr } %13, 0 - %18 = extractvalue { ptr, ptr } %13, 1 - %19 = icmp eq ptr %17, null - br i1 %19, label %20, label %25 + %18 = icmp eq ptr %17, null + %19 = extractvalue { ptr, ptr } %13, 1 + br i1 %18, label %20, label %25 20: ; preds = %16 %21 = invoke noundef ptr @_ZN3std3sys3pal4unix2fs8set_perm17he49df30b55ccb8e2E(ptr noalias noundef nonnull readonly align 1 %10, i64 noundef %12, i32 noundef %3) @@ -1626,7 +1626,7 @@ define { ptr, ptr } @_ZN8uu_mkdir5mkdir17h5dcc11da47961082E(ptr noalias noundef to label %33 unwind label %14 25: ; preds = %16 - %26 = icmp ne ptr %18, null + %26 = icmp ne ptr %19, null tail call void @llvm.assume(i1 %26) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7), !noalias !376 call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h245890f535d1d475E.llvm.14174625302941592838"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %7, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %8) @@ -1653,24 +1653,24 @@ define { ptr, ptr } @_ZN8uu_mkdir5mkdir17h5dcc11da47961082E(ptr noalias noundef call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h245890f535d1d475E.llvm.14174625302941592838"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %8) %34 = getelementptr inbounds i8, ptr %6, i64 8 %35 = load i64, ptr %34, align 8, !range !4, !noalias !389, !noundef !5 - %.not.i.i.i.i.i.i14 = icmp eq i64 %35, 0 - br i1 %.not.i.i.i.i.i.i14, label %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h20e2996e423d810fE.exit15", label %36 + %.not.i.i.i.i.i.i15 = icmp eq i64 %35, 0 + br i1 %.not.i.i.i.i.i.i15, label %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h20e2996e423d810fE.exit16", label %36 36: ; preds = %33 %37 = load ptr, ptr %6, align 8, !noalias !389, !nonnull !5, !noundef !5 %38 = getelementptr inbounds i8, ptr %6, i64 16 %39 = load i64, ptr %38, align 8, !noalias !389, !noundef !5 call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.llvm.14174625302941592838"(ptr noalias noundef nonnull readonly align 1 %11, ptr noundef nonnull %37, i64 noundef %35, i64 noundef %39) - br label %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h20e2996e423d810fE.exit15" + br label %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h20e2996e423d810fE.exit16" -"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h20e2996e423d810fE.exit15": ; preds = %33, %36 +"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h20e2996e423d810fE.exit16": ; preds = %33, %36 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6), !noalias !389 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) br label %40 -40: ; preds = %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h20e2996e423d810fE.exit15", %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h20e2996e423d810fE.exit" - %.sroa.3.0 = phi ptr [ @anon.254c1ce08f6f1a5effddeda4a76dd85f.3, %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h20e2996e423d810fE.exit15" ], [ %18, %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h20e2996e423d810fE.exit" ] - %.sroa.0.0 = phi ptr [ %.sroa.0.0.i.i, %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h20e2996e423d810fE.exit15" ], [ %17, %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h20e2996e423d810fE.exit" ] +40: ; preds = %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h20e2996e423d810fE.exit16", %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h20e2996e423d810fE.exit" + %.sroa.3.0 = phi ptr [ @anon.254c1ce08f6f1a5effddeda4a76dd85f.3, %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h20e2996e423d810fE.exit16" ], [ %19, %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h20e2996e423d810fE.exit" ] + %.sroa.0.0 = phi ptr [ %.sroa.0.0.i.i, %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h20e2996e423d810fE.exit16" ], [ %17, %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h20e2996e423d810fE.exit" ] %41 = insertvalue { ptr, ptr } poison, ptr %.sroa.0.0, 0 %42 = insertvalue { ptr, ptr } %41, ptr %.sroa.3.0, 1 ret { ptr, ptr } %42 @@ -1944,9 +1944,9 @@ _ZN6uucore4mods5error12USimpleError3new17he8d764edf273611cE.exit: ; preds = %.no call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10), !noalias !482 br label %99 -99: ; preds = %"_ZN62_$LT$std..path..Components$u20$as$u20$core..cmp..PartialEq$GT$2eq17hd824e6aa0b808d6aE.exit.thread", %"_ZN62_$LT$std..path..Components$u20$as$u20$core..cmp..PartialEq$GT$2eq17hd824e6aa0b808d6aE.exit", %.thread76.thread, %163, %138, %_ZN6uucore4mods5error12USimpleError3new17he8d764edf273611cE.exit - %.sroa.8.0 = phi ptr [ %.sroa.8.185, %.thread76.thread ], [ @anon.254c1ce08f6f1a5effddeda4a76dd85f.3, %163 ], [ %139, %138 ], [ @anon.3100d3c7a950257f32df72b802172ca2.7.llvm.1259343436056973864, %_ZN6uucore4mods5error12USimpleError3new17he8d764edf273611cE.exit ], [ undef, %"_ZN62_$LT$std..path..Components$u20$as$u20$core..cmp..PartialEq$GT$2eq17hd824e6aa0b808d6aE.exit" ], [ undef, %"_ZN62_$LT$std..path..Components$u20$as$u20$core..cmp..PartialEq$GT$2eq17hd824e6aa0b808d6aE.exit.thread" ] - %.sroa.015.0 = phi ptr [ %.sroa.015.186, %.thread76.thread ], [ %164, %163 ], [ %136, %138 ], [ %92, %_ZN6uucore4mods5error12USimpleError3new17he8d764edf273611cE.exit ], [ null, %"_ZN62_$LT$std..path..Components$u20$as$u20$core..cmp..PartialEq$GT$2eq17hd824e6aa0b808d6aE.exit" ], [ null, %"_ZN62_$LT$std..path..Components$u20$as$u20$core..cmp..PartialEq$GT$2eq17hd824e6aa0b808d6aE.exit.thread" ] +99: ; preds = %"_ZN62_$LT$std..path..Components$u20$as$u20$core..cmp..PartialEq$GT$2eq17hd824e6aa0b808d6aE.exit.thread", %"_ZN62_$LT$std..path..Components$u20$as$u20$core..cmp..PartialEq$GT$2eq17hd824e6aa0b808d6aE.exit", %.thread77.thread, %163, %138, %_ZN6uucore4mods5error12USimpleError3new17he8d764edf273611cE.exit + %.sroa.8.0 = phi ptr [ %.sroa.8.186, %.thread77.thread ], [ @anon.254c1ce08f6f1a5effddeda4a76dd85f.3, %163 ], [ %139, %138 ], [ @anon.3100d3c7a950257f32df72b802172ca2.7.llvm.1259343436056973864, %_ZN6uucore4mods5error12USimpleError3new17he8d764edf273611cE.exit ], [ undef, %"_ZN62_$LT$std..path..Components$u20$as$u20$core..cmp..PartialEq$GT$2eq17hd824e6aa0b808d6aE.exit" ], [ undef, %"_ZN62_$LT$std..path..Components$u20$as$u20$core..cmp..PartialEq$GT$2eq17hd824e6aa0b808d6aE.exit.thread" ] + %.sroa.015.0 = phi ptr [ %.sroa.015.187, %.thread77.thread ], [ %164, %163 ], [ %136, %138 ], [ %92, %_ZN6uucore4mods5error12USimpleError3new17he8d764edf273611cE.exit ], [ null, %"_ZN62_$LT$std..path..Components$u20$as$u20$core..cmp..PartialEq$GT$2eq17hd824e6aa0b808d6aE.exit" ], [ null, %"_ZN62_$LT$std..path..Components$u20$as$u20$core..cmp..PartialEq$GT$2eq17hd824e6aa0b808d6aE.exit.thread" ] %100 = insertvalue { ptr, ptr } poison, ptr %.sroa.015.0, 0 %101 = insertvalue { ptr, ptr } %100, ptr %.sroa.8.0, 1 ret { ptr, ptr } %101 @@ -1988,18 +1988,18 @@ _ZN6uucore4mods5error12USimpleError3new17he8d764edf273611cE.exit: ; preds = %.no %.sroa.5.0..sroa_idx.i = getelementptr inbounds i8, ptr %8, i64 16 store i64 27, ptr %.sroa.5.0..sroa_idx.i, align 8, !noalias !488 %117 = invoke { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17hb4f01ccf52c1821cE.llvm.1259343436056973864(ptr noalias noundef nonnull readonly align 1 @anon.3100d3c7a950257f32df72b802172ca2.2.llvm.1259343436056973864, i64 noundef 8, i64 noundef 32, i1 noundef zeroext false) - to label %.noexc.i57 unwind label %121, !noalias !488 + to label %.noexc.i58 unwind label %121, !noalias !488 -.noexc.i57: ; preds = %111 +.noexc.i58: ; preds = %111 %118 = extractvalue { ptr, i64 } %117, 0 %119 = icmp eq ptr %118, null br i1 %119, label %120, label %_ZN6uucore4mods5error12USimpleError3new17h8ebcc18f3eb0f9d0E.exit -120: ; preds = %.noexc.i57 +120: ; preds = %.noexc.i58 invoke void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef 8, i64 noundef 32) #13 - to label %.noexc1.i58 unwind label %121, !noalias !488 + to label %.noexc1.i59 unwind label %121, !noalias !488 -.noexc1.i58: ; preds = %120 +.noexc1.i59: ; preds = %120 unreachable 121: ; preds = %120, %111 @@ -2014,20 +2014,20 @@ _ZN6uucore4mods5error12USimpleError3new17he8d764edf273611cE.exit: ; preds = %.no call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #15, !noalias !488 unreachable -_ZN6uucore4mods5error12USimpleError3new17h8ebcc18f3eb0f9d0E.exit: ; preds = %.noexc.i57 +_ZN6uucore4mods5error12USimpleError3new17h8ebcc18f3eb0f9d0E.exit: ; preds = %.noexc.i58 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %118, ptr noundef nonnull align 8 dereferenceable(32) %8, i64 32, i1 false) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8), !noalias !488 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6), !noalias !498 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h245890f535d1d475E.llvm.14174625302941592838"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %118) - to label %.noexc88 unwind label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17ha8c8a9da53d6e9aeE.exit.i" + to label %.noexc89 unwind label %"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17ha8c8a9da53d6e9aeE.exit.i" -.noexc88: ; preds = %_ZN6uucore4mods5error12USimpleError3new17h8ebcc18f3eb0f9d0E.exit +.noexc89: ; preds = %_ZN6uucore4mods5error12USimpleError3new17h8ebcc18f3eb0f9d0E.exit %125 = getelementptr inbounds i8, ptr %6, i64 8 %126 = load i64, ptr %125, align 8, !range !4, !noalias !498, !noundef !5 %.not.i.i.i.i.i = icmp eq i64 %126, 0 br i1 %.not.i.i.i.i.i, label %"_ZN4core3ptr81drop_in_place$LT$alloc..boxed..Box$LT$dyn$u20$uucore..mods..error..UError$GT$$GT$17h141fe6491d371170E.exit", label %127 -127: ; preds = %.noexc88 +127: ; preds = %.noexc89 %128 = load ptr, ptr %6, align 8, !noalias !498, !nonnull !5, !noundef !5 %129 = getelementptr inbounds i8, ptr %6, i64 16 %130 = load i64, ptr %129, align 8, !noalias !498, !noundef !5 @@ -2041,7 +2041,7 @@ _ZN6uucore4mods5error12USimpleError3new17h8ebcc18f3eb0f9d0E.exit: ; preds = %.no call void @__rust_dealloc(ptr noundef nonnull %118, i64 noundef 32, i64 noundef 8) #12 br label %common.resume -"_ZN4core3ptr81drop_in_place$LT$alloc..boxed..Box$LT$dyn$u20$uucore..mods..error..UError$GT$$GT$17h141fe6491d371170E.exit": ; preds = %.noexc88, %127 +"_ZN4core3ptr81drop_in_place$LT$alloc..boxed..Box$LT$dyn$u20$uucore..mods..error..UError$GT$$GT$17h141fe6491d371170E.exit": ; preds = %.noexc89, %127 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6), !noalias !498 call void @__rust_dealloc(ptr noundef nonnull %118, i64 noundef 32, i64 noundef 8) #12 br label %103 @@ -2067,7 +2067,7 @@ _ZN6uucore4mods5error12USimpleError3new17h8ebcc18f3eb0f9d0E.exit: ; preds = %.no to label %165 unwind label %172 144: ; preds = %145, %141 - br i1 %4, label %.noexc, label %.thread76.thread + br i1 %4, label %.noexc, label %.thread77.thread 145: ; preds = %141 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %22) @@ -2116,7 +2116,7 @@ _ZN6uucore4mods5error12USimpleError3new17h8ebcc18f3eb0f9d0E.exit: ; preds = %.no %160 = xor i32 %159, 511 %161 = call noundef ptr @_ZN3std3sys3pal4unix2fs8set_perm17he49df30b55ccb8e2E(ptr noalias noundef nonnull readonly align 1 %0, i64 noundef %1, i32 noundef %160) %162 = icmp eq ptr %161, null - br i1 %162, label %.thread76.thread, label %163 + br i1 %162, label %.thread77.thread, label %163 163: ; preds = %.noexc %164 = call noundef nonnull align 8 ptr @"_ZN131_$LT$std..io..error..Error$u20$as$u20$uucore..mods..error..FromIo$LT$alloc..boxed..Box$LT$uucore..mods..error..UIoError$GT$$GT$$GT$15map_err_context17ha4e68aebf46200e9E"(ptr noundef nonnull %161, ptr noalias noundef nonnull readonly align 1 %0, i64 noundef %1) @@ -2124,35 +2124,35 @@ _ZN6uucore4mods5error12USimpleError3new17h8ebcc18f3eb0f9d0E.exit: ; preds = %.no br label %99 165: ; preds = %142 - br i1 %143, label %.thread76, label %.thread78 + br i1 %143, label %.thread77, label %.thread79 -.thread78: ; preds = %165 +.thread79: ; preds = %165 %166 = call { ptr, ptr } @"_ZN6uucore4mods5error139_$LT$impl$u20$core..convert..From$LT$std..io..error..Error$GT$$u20$for$u20$alloc..boxed..Box$LT$dyn$u20$uucore..mods..error..UError$GT$$GT$4from17h5f3f9db19071e545E"(ptr noundef nonnull %105) %167 = extractvalue { ptr, ptr } %166, 0 %168 = extractvalue { ptr, ptr } %166, 1 - br label %.thread76.thread + br label %.thread77.thread -.thread76.thread: ; preds = %144, %.noexc, %.thread78, %"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h8cdb2a2652b9a7abE.exit" - %.sroa.015.186 = phi ptr [ %167, %.thread78 ], [ null, %"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h8cdb2a2652b9a7abE.exit" ], [ null, %.noexc ], [ null, %144 ] - %.sroa.8.185 = phi ptr [ %168, %.thread78 ], [ undef, %"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h8cdb2a2652b9a7abE.exit" ], [ undef, %.noexc ], [ undef, %144 ] +.thread77.thread: ; preds = %144, %.noexc, %.thread79, %"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h8cdb2a2652b9a7abE.exit" + %.sroa.015.187 = phi ptr [ %167, %.thread79 ], [ null, %"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h8cdb2a2652b9a7abE.exit" ], [ null, %.noexc ], [ null, %144 ] + %.sroa.8.186 = phi ptr [ %168, %.thread79 ], [ undef, %"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h8cdb2a2652b9a7abE.exit" ], [ undef, %.noexc ], [ undef, %144 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) br label %99 -.thread76: ; preds = %165 +.thread77: ; preds = %165 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7), !noalias !515 call void @_ZN3std2io5error14repr_bitpacked11decode_repr17hb09509b3860056e7E.llvm.14174625302941592838(ptr noalias nocapture noundef nonnull sret({ i8, [15 x i8] }) align 8 dereferenceable(16) %7, ptr noundef nonnull %105), !noalias !515 %169 = load i8, ptr %7, align 8, !range !423, !alias.scope !522, !noalias !515, !noundef !5 %switch.not.i.i.i.i = icmp eq i8 %169, 3 br i1 %switch.not.i.i.i.i, label %170, label %"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h8cdb2a2652b9a7abE.exit" -170: ; preds = %.thread76 +170: ; preds = %.thread77 %171 = getelementptr inbounds i8, ptr %7, i64 8 call void @"_ZN4core3ptr68drop_in_place$LT$alloc..boxed..Box$LT$std..io..error..Custom$GT$$GT$17haed3d97c32f30faeE.llvm.14174625302941592838"(ptr noalias noundef nonnull align 8 dereferenceable(8) %171), !noalias !515 br label %"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h8cdb2a2652b9a7abE.exit" -"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h8cdb2a2652b9a7abE.exit": ; preds = %.thread76, %170 +"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h8cdb2a2652b9a7abE.exit": ; preds = %.thread77, %170 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7), !noalias !515 - br label %.thread76.thread + br label %.thread77.thread 172: ; preds = %142 %lpad.thr_comm.split-lp = landingpad { ptr, i32 } diff --git a/bench/coreutils-rs/optimized/1y438ox107i37q6b.ll b/bench/coreutils-rs/optimized/1y438ox107i37q6b.ll index f93b2017694..9e6f348f461 100644 --- a/bench/coreutils-rs/optimized/1y438ox107i37q6b.ll +++ b/bench/coreutils-rs/optimized/1y438ox107i37q6b.ll @@ -4508,28 +4508,28 @@ define hidden { ptr, ptr } @_ZN7uu_tail6chunks16LinesChunkBuffer5print17hf22b216 br label %28 28: ; preds = %_ZN7uu_tail6chunks10LinesChunk11print_bytes17h373468c72bbda28bE.exit, %"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$4iter17h097eaeb289ca22edE.exit" - %.sroa.010.0 = phi ptr [ %23, %"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$4iter17h097eaeb289ca22edE.exit" ], [ %34, %_ZN7uu_tail6chunks10LinesChunk11print_bytes17h373468c72bbda28bE.exit ] - %.sroa.711.0 = phi ptr [ %24, %"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$4iter17h097eaeb289ca22edE.exit" ], [ %.sroa.711.122, %_ZN7uu_tail6chunks10LinesChunk11print_bytes17h373468c72bbda28bE.exit ] - %.sroa.10.0 = phi ptr [ %22, %"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$4iter17h097eaeb289ca22edE.exit" ], [ %.sroa.10.123, %_ZN7uu_tail6chunks10LinesChunk11print_bytes17h373468c72bbda28bE.exit ] - %.sroa.13.0 = phi ptr [ %25, %"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$4iter17h097eaeb289ca22edE.exit" ], [ %.sroa.13.124, %_ZN7uu_tail6chunks10LinesChunk11print_bytes17h373468c72bbda28bE.exit ] - %29 = icmp ne ptr %.sroa.711.0, null + %.sroa.011.0 = phi ptr [ %23, %"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$4iter17h097eaeb289ca22edE.exit" ], [ %34, %_ZN7uu_tail6chunks10LinesChunk11print_bytes17h373468c72bbda28bE.exit ] + %.sroa.712.0 = phi ptr [ %24, %"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$4iter17h097eaeb289ca22edE.exit" ], [ %.sroa.712.123, %_ZN7uu_tail6chunks10LinesChunk11print_bytes17h373468c72bbda28bE.exit ] + %.sroa.10.0 = phi ptr [ %22, %"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$4iter17h097eaeb289ca22edE.exit" ], [ %.sroa.10.124, %_ZN7uu_tail6chunks10LinesChunk11print_bytes17h373468c72bbda28bE.exit ] + %.sroa.13.0 = phi ptr [ %25, %"_ZN5alloc11collections9vec_deque21VecDeque$LT$T$C$A$GT$4iter17h097eaeb289ca22edE.exit" ], [ %.sroa.13.125, %_ZN7uu_tail6chunks10LinesChunk11print_bytes17h373468c72bbda28bE.exit ] + %29 = icmp ne ptr %.sroa.712.0, null tail call void @llvm.assume(i1 %29) - %30 = icmp eq ptr %.sroa.010.0, %.sroa.711.0 - br i1 %30, label %31, label %"_ZN109_$LT$alloc..collections..vec_deque..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h232936ee18c22e60E.exit.thread17" + %30 = icmp eq ptr %.sroa.011.0, %.sroa.712.0 + br i1 %30, label %31, label %"_ZN109_$LT$alloc..collections..vec_deque..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h232936ee18c22e60E.exit.thread18" 31: ; preds = %28 %32 = icmp eq ptr %.sroa.10.0, %.sroa.13.0 %33 = icmp eq ptr %.sroa.10.0, null %or.cond = or i1 %33, %32 - br i1 %or.cond, label %"_ZN109_$LT$alloc..collections..vec_deque..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h232936ee18c22e60E.exit.thread", label %"_ZN109_$LT$alloc..collections..vec_deque..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h232936ee18c22e60E.exit.thread17" - -"_ZN109_$LT$alloc..collections..vec_deque..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h232936ee18c22e60E.exit.thread17": ; preds = %28, %31 - %.sink6.i25 = phi ptr [ %.sroa.10.0, %31 ], [ %.sroa.010.0, %28 ] - %.sroa.13.124 = phi ptr [ %.sroa.010.0, %31 ], [ %.sroa.13.0, %28 ] - %.sroa.10.123 = phi ptr [ %.sroa.010.0, %31 ], [ %.sroa.10.0, %28 ] - %.sroa.711.122 = phi ptr [ %.sroa.13.0, %31 ], [ %.sroa.711.0, %28 ] - %34 = getelementptr inbounds i8, ptr %.sink6.i25, i64 8 - %35 = load ptr, ptr %.sink6.i25, align 8, !nonnull !9, !align !10, !noundef !9 + br i1 %or.cond, label %"_ZN109_$LT$alloc..collections..vec_deque..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h232936ee18c22e60E.exit.thread", label %"_ZN109_$LT$alloc..collections..vec_deque..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h232936ee18c22e60E.exit.thread18" + +"_ZN109_$LT$alloc..collections..vec_deque..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h232936ee18c22e60E.exit.thread18": ; preds = %28, %31 + %.sink6.i26 = phi ptr [ %.sroa.10.0, %31 ], [ %.sroa.011.0, %28 ] + %.sroa.13.125 = phi ptr [ %.sroa.011.0, %31 ], [ %.sroa.13.0, %28 ] + %.sroa.10.124 = phi ptr [ %.sroa.011.0, %31 ], [ %.sroa.10.0, %28 ] + %.sroa.712.123 = phi ptr [ %.sroa.13.0, %31 ], [ %.sroa.712.0, %28 ] + %34 = getelementptr inbounds i8, ptr %.sink6.i26, i64 8 + %35 = load ptr, ptr %.sink6.i26, align 8, !nonnull !9, !align !10, !noundef !9 tail call void @llvm.experimental.noalias.scope.decl(metadata !657) tail call void @llvm.experimental.noalias.scope.decl(metadata !660) tail call void @llvm.experimental.noalias.scope.decl(metadata !663) @@ -4538,11 +4538,11 @@ define hidden { ptr, ptr } @_ZN7uu_tail6chunks16LinesChunkBuffer5print17hf22b216 %38 = icmp ugt i64 %37, 8192 br i1 %38, label %39, label %_ZN7uu_tail6chunks10LinesChunk15get_buffer_with17h836418dc76b95580E.exit.i -39: ; preds = %"_ZN109_$LT$alloc..collections..vec_deque..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h232936ee18c22e60E.exit.thread17" +39: ; preds = %"_ZN109_$LT$alloc..collections..vec_deque..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h232936ee18c22e60E.exit.thread18" tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h334e37603831ab29E(i64 noundef %37, i64 noundef 8192, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.d9a17f252f4bd5f091d9eb52e4896952.57.llvm.14858434719121323170) #26, !noalias !667 unreachable -_ZN7uu_tail6chunks10LinesChunk15get_buffer_with17h836418dc76b95580E.exit.i: ; preds = %"_ZN109_$LT$alloc..collections..vec_deque..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h232936ee18c22e60E.exit.thread17" +_ZN7uu_tail6chunks10LinesChunk15get_buffer_with17h836418dc76b95580E.exit.i: ; preds = %"_ZN109_$LT$alloc..collections..vec_deque..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h232936ee18c22e60E.exit.thread18" tail call void @llvm.experimental.noalias.scope.decl(metadata !670) %40 = load i64, ptr %1, align 8, !alias.scope !670, !noalias !673, !noundef !9 %41 = load i64, ptr %26, align 8, !alias.scope !670, !noalias !673, !noundef !9 diff --git a/bench/coreutils-rs/optimized/2145dndjkhee8wnm.ll b/bench/coreutils-rs/optimized/2145dndjkhee8wnm.ll index 44b7bfd2dc5..962f10397db 100644 --- a/bench/coreutils-rs/optimized/2145dndjkhee8wnm.ll +++ b/bench/coreutils-rs/optimized/2145dndjkhee8wnm.ll @@ -120,25 +120,25 @@ define hidden void @"_ZN106_$LT$core..iter..adapters..GenericShunt$LT$I$C$R$GT$$ %12 = load ptr, ptr %11, align 8, !alias.scope !47, !noalias !56, !noundef !9 %13 = icmp eq ptr %12, null %14 = getelementptr inbounds i8, ptr %1, i64 192 - %.val.i46.i.i.i.i = load i64, ptr %14, align 8, !alias.scope !47, !noalias !56 - %.sroa.8.0.i.i.i.i = select i1 %13, i64 0, i64 %.val.i46.i.i.i.i + %.val.i45.i.i.i.i = load i64, ptr %14, align 8, !alias.scope !47, !noalias !56 + %.sroa.8.0.i.i.i.i = select i1 %13, i64 0, i64 %.val.i45.i.i.i.i %15 = load i64, ptr %1, align 8, !range !61, !alias.scope !47, !noalias !56, !noundef !9 %trunc.i.i.i.i = trunc nuw i64 %15 to i1 %16 = getelementptr inbounds i8, ptr %1, i64 8 %.val.i.i.i.i = load ptr, ptr %16, align 8, !alias.scope !47, !noalias !56 %.not.i.i.i.i = icmp ne ptr %.val.i.i.i.i, null - %.sroa.056.0.not.i.i.i.i = select i1 %trunc.i.i.i.i, i1 %.not.i.i.i.i, i1 false + %.sroa.055.0.not.i.i.i.i = select i1 %trunc.i.i.i.i, i1 %.not.i.i.i.i, i1 false %17 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %.sroa.7.0.i.i.i.i, i64 %.sroa.8.0.i.i.i.i) - %18 = extractvalue { i64, i1 } %17, 0 - %19 = extractvalue { i64, i1 } %17, 1 - %.sroa.5.0.i = select i1 %.sroa.056.0.not.i.i.i.i, i64 undef, i64 %18 - %20 = select i1 %.sroa.056.0.not.i.i.i.i, i1 true, i1 %19 + %18 = extractvalue { i64, i1 } %17, 1 + %19 = extractvalue { i64, i1 } %17, 0 + %.sroa.5.0.i = select i1 %.sroa.055.0.not.i.i.i.i, i64 undef, i64 %19 + %20 = select i1 %.sroa.055.0.not.i.i.i.i, i1 true, i1 %18 %narrow.i = xor i1 %20, true - %.45.sink.i.i.i.i = zext i1 %narrow.i to i64 + %.sroa.036.0.sink.i.i.i.i = zext i1 %narrow.i to i64 br label %21 21: ; preds = %2, %6 - %.sink1 = phi i64 [ %.45.sink.i.i.i.i, %6 ], [ 1, %2 ] + %.sink1 = phi i64 [ %.sroa.036.0.sink.i.i.i.i, %6 ], [ 1, %2 ] %.sink = phi i64 [ %.sroa.5.0.i, %6 ], [ 0, %2 ] store i64 0, ptr %0, align 8 %22 = getelementptr inbounds i8, ptr %0, i64 8 @@ -172,32 +172,32 @@ define hidden void @"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$ %8 = load ptr, ptr %7, align 8, !alias.scope !65, !noalias !62, !noundef !9 %9 = icmp eq ptr %8, null %10 = getelementptr inbounds i8, ptr %1, i64 192 - %.val.i46.i = load i64, ptr %10, align 8, !alias.scope !65, !noalias !62 - %.sroa.8.0.i = select i1 %9, i64 0, i64 %.val.i46.i + %.val.i45.i = load i64, ptr %10, align 8, !alias.scope !65, !noalias !62 + %.sroa.8.0.i = select i1 %9, i64 0, i64 %.val.i45.i %11 = load i64, ptr %1, align 8, !range !61, !alias.scope !65, !noalias !62, !noundef !9 %trunc.i = trunc nuw i64 %11 to i1 %12 = getelementptr inbounds i8, ptr %1, i64 8 %.val.i = load ptr, ptr %12, align 8, !alias.scope !65, !noalias !62 %.not.i = icmp ne ptr %.val.i, null - %.sroa.056.0.not.i = select i1 %trunc.i, i1 %.not.i, i1 false - br i1 %.sroa.056.0.not.i, label %"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h0adbb275a4de6f55E.llvm.4103517291658523209.exit", label %13 + %.sroa.055.0.not.i = select i1 %trunc.i, i1 %.not.i, i1 false + br i1 %.sroa.055.0.not.i, label %"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h0adbb275a4de6f55E.llvm.4103517291658523209.exit", label %13 13: ; preds = %2 %14 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %.sroa.7.0.i, i64 %.sroa.8.0.i) - %15 = extractvalue { i64, i1 } %14, 0 - %16 = extractvalue { i64, i1 } %14, 1 - %not..i = xor i1 %16, true - %.45.i = zext i1 %not..i to i64 + %15 = extractvalue { i64, i1 } %14, 1 + %16 = extractvalue { i64, i1 } %14, 0 + %not..i = xor i1 %15, true + %.sroa.036.0.i = zext i1 %not..i to i64 %17 = getelementptr inbounds i8, ptr %0, i64 16 - store i64 %15, ptr %17, align 8, !alias.scope !62, !noalias !65 + store i64 %16, ptr %17, align 8, !alias.scope !62, !noalias !65 br label %"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h0adbb275a4de6f55E.llvm.4103517291658523209.exit" "_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$I$C$U$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h0adbb275a4de6f55E.llvm.4103517291658523209.exit": ; preds = %2, %13 - %.45.sink.i = phi i64 [ %.45.i, %13 ], [ 0, %2 ] + %.sroa.036.0.sink.i = phi i64 [ %.sroa.036.0.i, %13 ], [ 0, %2 ] %18 = tail call i64 @llvm.uadd.sat.i64(i64 %.sroa.7.0.i, i64 %.sroa.8.0.i) store i64 %18, ptr %0, align 8, !alias.scope !62, !noalias !65 %19 = getelementptr inbounds i8, ptr %0, i64 8 - store i64 %.45.sink.i, ptr %19, align 8, !alias.scope !62, !noalias !65 + store i64 %.sroa.036.0.sink.i, ptr %19, align 8, !alias.scope !62, !noalias !65 ret void } @@ -255,32 +255,32 @@ define hidden void @"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$ %8 = load ptr, ptr %7, align 8, !alias.scope !84, !noalias !85, !noundef !9 %9 = icmp eq ptr %8, null %10 = getelementptr inbounds i8, ptr %1, i64 192 - %.val.i46.i.i = load i64, ptr %10, align 8, !alias.scope !84, !noalias !85 - %.sroa.8.0.i.i = select i1 %9, i64 0, i64 %.val.i46.i.i + %.val.i45.i.i = load i64, ptr %10, align 8, !alias.scope !84, !noalias !85 + %.sroa.8.0.i.i = select i1 %9, i64 0, i64 %.val.i45.i.i %11 = load i64, ptr %1, align 8, !range !61, !alias.scope !84, !noalias !85, !noundef !9 %trunc.i.i = trunc nuw i64 %11 to i1 %12 = getelementptr inbounds i8, ptr %1, i64 8 %.val.i.i = load ptr, ptr %12, align 8, !alias.scope !84, !noalias !85 %.not.i.i = icmp ne ptr %.val.i.i, null - %.sroa.056.0.not.i.i = select i1 %trunc.i.i, i1 %.not.i.i, i1 false - br i1 %.sroa.056.0.not.i.i, label %"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h02f02a375f7b5d51E.llvm.4103517291658523209.exit", label %13 + %.sroa.055.0.not.i.i = select i1 %trunc.i.i, i1 %.not.i.i, i1 false + br i1 %.sroa.055.0.not.i.i, label %"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h02f02a375f7b5d51E.llvm.4103517291658523209.exit", label %13 13: ; preds = %2 %14 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %.sroa.7.0.i.i, i64 %.sroa.8.0.i.i) - %15 = extractvalue { i64, i1 } %14, 0 - %16 = extractvalue { i64, i1 } %14, 1 - %not..i.i = xor i1 %16, true - %.45.i.i = zext i1 %not..i.i to i64 + %15 = extractvalue { i64, i1 } %14, 1 + %16 = extractvalue { i64, i1 } %14, 0 + %not..i.i = xor i1 %15, true + %.sroa.036.0.i.i = zext i1 %not..i.i to i64 %17 = getelementptr inbounds i8, ptr %0, i64 16 - store i64 %15, ptr %17, align 8, !alias.scope !85, !noalias !84 + store i64 %16, ptr %17, align 8, !alias.scope !85, !noalias !84 br label %"_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h02f02a375f7b5d51E.llvm.4103517291658523209.exit" "_ZN106_$LT$core..iter..adapters..flatten..Flatten$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint17h02f02a375f7b5d51E.llvm.4103517291658523209.exit": ; preds = %2, %13 - %.45.sink.i.i = phi i64 [ %.45.i.i, %13 ], [ 0, %2 ] + %.sroa.036.0.sink.i.i = phi i64 [ %.sroa.036.0.i.i, %13 ], [ 0, %2 ] %18 = tail call i64 @llvm.uadd.sat.i64(i64 %.sroa.7.0.i.i, i64 %.sroa.8.0.i.i) store i64 %18, ptr %0, align 8, !alias.scope !85, !noalias !84 %19 = getelementptr inbounds i8, ptr %0, i64 8 - store i64 %.45.sink.i.i, ptr %19, align 8, !alias.scope !85, !noalias !84 + store i64 %.sroa.036.0.sink.i.i, ptr %19, align 8, !alias.scope !85, !noalias !84 ret void } @@ -315,24 +315,24 @@ define hidden void @"_ZN115_$LT$core..iter..adapters..filter_map..FilterMap$LT$I %7 = load ptr, ptr %6, align 8, !alias.scope !98, !noalias !105, !noundef !9 %8 = icmp eq ptr %7, null %9 = getelementptr inbounds i8, ptr %1, i64 192 - %.val.i46.i.i.i = load i64, ptr %9, align 8, !alias.scope !98, !noalias !105 - %.sroa.8.0.i.i.i = select i1 %8, i64 0, i64 %.val.i46.i.i.i + %.val.i45.i.i.i = load i64, ptr %9, align 8, !alias.scope !98, !noalias !105 + %.sroa.8.0.i.i.i = select i1 %8, i64 0, i64 %.val.i45.i.i.i %10 = load i64, ptr %1, align 8, !range !61, !alias.scope !98, !noalias !105, !noundef !9 %trunc.i.i.i = trunc nuw i64 %10 to i1 %11 = getelementptr inbounds i8, ptr %1, i64 8 %.val.i.i.i = load ptr, ptr %11, align 8, !alias.scope !98, !noalias !105 %.not.i.i.i = icmp ne ptr %.val.i.i.i, null - %.sroa.056.0.not.i.i.i = select i1 %trunc.i.i.i, i1 %.not.i.i.i, i1 false + %.sroa.055.0.not.i.i.i = select i1 %trunc.i.i.i, i1 %.not.i.i.i, i1 false %12 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %.sroa.7.0.i.i.i, i64 %.sroa.8.0.i.i.i) - %13 = extractvalue { i64, i1 } %12, 0 - %14 = extractvalue { i64, i1 } %12, 1 - %.sroa.5.0 = select i1 %.sroa.056.0.not.i.i.i, i64 undef, i64 %13 - %15 = select i1 %.sroa.056.0.not.i.i.i, i1 true, i1 %14 + %13 = extractvalue { i64, i1 } %12, 1 + %14 = extractvalue { i64, i1 } %12, 0 + %.sroa.5.0 = select i1 %.sroa.055.0.not.i.i.i, i64 undef, i64 %14 + %15 = select i1 %.sroa.055.0.not.i.i.i, i1 true, i1 %13 %narrow = xor i1 %15, true - %.45.sink.i.i.i = zext i1 %narrow to i64 + %.sroa.036.0.sink.i.i.i = zext i1 %narrow to i64 store i64 0, ptr %0, align 8 %16 = getelementptr inbounds i8, ptr %0, i64 8 - store i64 %.45.sink.i.i.i, ptr %16, align 8 + store i64 %.sroa.036.0.sink.i.i.i, ptr %16, align 8 %17 = getelementptr inbounds i8, ptr %0, i64 16 store i64 %.sroa.5.0, ptr %17, align 8 ret void @@ -351,32 +351,32 @@ define hidden void @"_ZN116_$LT$core..iter..adapters..flatten..FlattenCompat$LT$ %7 = load ptr, ptr %6, align 8, !noundef !9 %8 = icmp eq ptr %7, null %9 = getelementptr inbounds i8, ptr %1, i64 192 - %.val.i46 = load i64, ptr %9, align 8 - %.sroa.8.0 = select i1 %8, i64 0, i64 %.val.i46 + %.val.i45 = load i64, ptr %9, align 8 + %.sroa.8.0 = select i1 %8, i64 0, i64 %.val.i45 %10 = load i64, ptr %1, align 8, !range !61, !noundef !9 %trunc = trunc nuw i64 %10 to i1 %11 = getelementptr inbounds i8, ptr %1, i64 8 %.val = load ptr, ptr %11, align 8 %.not = icmp ne ptr %.val, null - %.sroa.056.0.not = select i1 %trunc, i1 %.not, i1 false - br i1 %.sroa.056.0.not, label %17, label %12 + %.sroa.055.0.not = select i1 %trunc, i1 %.not, i1 false + br i1 %.sroa.055.0.not, label %17, label %12 12: ; preds = %"_ZN4core6option15Option$LT$T$GT$6map_or17hc27938e671ed0956E.exit" %13 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %.sroa.7.0, i64 %.sroa.8.0) - %14 = extractvalue { i64, i1 } %13, 0 - %15 = extractvalue { i64, i1 } %13, 1 - %not. = xor i1 %15, true - %.45 = zext i1 %not. to i64 + %14 = extractvalue { i64, i1 } %13, 1 + %15 = extractvalue { i64, i1 } %13, 0 + %not. = xor i1 %14, true + %.sroa.036.0 = zext i1 %not. to i64 %16 = getelementptr inbounds i8, ptr %0, i64 16 - store i64 %14, ptr %16, align 8 + store i64 %15, ptr %16, align 8 br label %17 17: ; preds = %"_ZN4core6option15Option$LT$T$GT$6map_or17hc27938e671ed0956E.exit", %12 - %.45.sink = phi i64 [ %.45, %12 ], [ 0, %"_ZN4core6option15Option$LT$T$GT$6map_or17hc27938e671ed0956E.exit" ] + %.sroa.036.0.sink = phi i64 [ %.sroa.036.0, %12 ], [ 0, %"_ZN4core6option15Option$LT$T$GT$6map_or17hc27938e671ed0956E.exit" ] %18 = tail call i64 @llvm.uadd.sat.i64(i64 %.sroa.7.0, i64 %.sroa.8.0) store i64 %18, ptr %0, align 8 %19 = getelementptr inbounds i8, ptr %0, i64 8 - store i64 %.45.sink, ptr %19, align 8 + store i64 %.sroa.036.0.sink, ptr %19, align 8 ret void } diff --git a/bench/coreutils-rs/optimized/26a2uyrtdxle93un.ll b/bench/coreutils-rs/optimized/26a2uyrtdxle93un.ll index 4f7d0e3d5cf..dca8f7f3c8d 100644 --- a/bench/coreutils-rs/optimized/26a2uyrtdxle93un.ll +++ b/bench/coreutils-rs/optimized/26a2uyrtdxle93un.ll @@ -385,35 +385,35 @@ define internal fastcc void @"_ZN5alloc3str21_$LT$impl$u20$str$GT$7replace17h702 .lr.ph.split.split.i.i: ; preds = %.lr.ph.i.i, %49 %32 = phi i64 [ %47, %49 ], [ %.054, %.lr.ph.i.i ] - %.sroa.3.0.i47.i.i = sub nuw i64 %2, %32 - %.49.i.i = getelementptr inbounds i8, ptr %1, i64 %32 - %33 = icmp ult i64 %.sroa.3.0.i47.i.i, 16 + %.sroa.7.049.i.i = sub nuw i64 %2, %32 + %.sroa.0.050.i.i = getelementptr inbounds i8, ptr %1, i64 %32 + %33 = icmp ult i64 %.sroa.7.049.i.i, 16 br i1 %33, label %36, label %34 34: ; preds = %.lr.ph.split.split.i.i - %35 = invoke { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef %.pre.pre, ptr noalias noundef nonnull readonly align 1 %.49.i.i, i64 noundef %.sroa.3.0.i47.i.i) + %35 = invoke { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef %.pre.pre, ptr noalias noundef nonnull readonly align 1 %.sroa.0.050.i.i, i64 noundef %.sroa.7.049.i.i) to label %.noexc14 unwind label %.loopexit 36: ; preds = %.lr.ph.split.split.i.i - %.not.i.i.i = icmp eq i64 %32, %2 + %.not.i.i.i = icmp eq i64 %.sroa.7.049.i.i, 0 br i1 %.not.i.i.i, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i, label %.lr.ph.i.i.i .lr.ph.i.i.i: ; preds = %36, %40 %.05.i.i.i = phi i64 [ %41, %40 ], [ 0, %36 ] - %37 = getelementptr inbounds [0 x i8], ptr %.49.i.i, i64 0, i64 %.05.i.i.i + %37 = getelementptr inbounds [0 x i8], ptr %.sroa.0.050.i.i, i64 0, i64 %.05.i.i.i %38 = load i8, ptr %37, align 1, !alias.scope !27, !noalias !30, !noundef !5 %39 = icmp eq i8 %38, %.pre.pre br i1 %39, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i, label %40 40: ; preds = %.lr.ph.i.i.i - %41 = add nuw i64 %.05.i.i.i, 1 - %exitcond.not.i.i.i = icmp eq i64 %41, %.sroa.3.0.i47.i.i + %41 = add nuw nsw i64 %.05.i.i.i, 1 + %exitcond.not.i.i.i = icmp eq i64 %41, %.sroa.7.049.i.i br i1 %exitcond.not.i.i.i, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i, label %.lr.ph.i.i.i _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i: ; preds = %40, %.lr.ph.i.i.i, %36 - %.0.lcssa.i.i.i = phi i64 [ 0, %36 ], [ %.sroa.3.0.i47.i.i, %40 ], [ %.05.i.i.i, %.lr.ph.i.i.i ] - %.sroa.0.0.i25.i.i = phi i64 [ 0, %36 ], [ 0, %40 ], [ 1, %.lr.ph.i.i.i ] - %42 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i25.i.i, 0 + %.0.lcssa.i.i.i = phi i64 [ 0, %36 ], [ %.sroa.7.049.i.i, %40 ], [ %.05.i.i.i, %.lr.ph.i.i.i ] + %.sroa.0.0.i24.i.i = phi i64 [ 0, %36 ], [ 0, %40 ], [ 1, %.lr.ph.i.i.i ] + %42 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i24.i.i, 0 %43 = insertvalue { i64, i64 } %42, i64 %.0.lcssa.i.i.i, 1 br label %.noexc14 @@ -2755,9 +2755,9 @@ define internal fastcc void @_ZN10uu_hashsum27create_algorithm_from_flags17he987 154: ; preds = %150 invoke void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef 8, i64 noundef 1912) #16 - to label %.noexc274 unwind label %155 + to label %.noexc289 unwind label %155 -.noexc274: ; preds = %154 +.noexc289: ; preds = %154 unreachable 155: ; preds = %154 @@ -3113,12 +3113,12 @@ define internal fastcc void @_ZN10uu_hashsum27create_algorithm_from_flags17he987 br label %305 305: ; preds = %281, %292, %255, %266, %180, %185, %302, %241, %227, %213, %199, %165, %143, %125, %109, %93, %77, %61, %45 - %.sink293 = phi ptr [ %181, %180 ], [ %183, %185 ], [ %303, %302 ], [ %239, %241 ], [ %225, %227 ], [ %211, %213 ], [ %197, %199 ], [ %163, %165 ], [ %141, %143 ], [ %123, %125 ], [ %107, %109 ], [ %91, %93 ], [ %75, %77 ], [ %59, %61 ], [ %43, %45 ], [ %264, %266 ], [ %256, %255 ], [ %290, %292 ], [ %282, %281 ] - %.sink291 = phi ptr [ %177, %180 ], [ %186, %185 ], [ %304, %302 ], [ %242, %241 ], [ %228, %227 ], [ %214, %213 ], [ %200, %199 ], [ %166, %165 ], [ %144, %143 ], [ %126, %125 ], [ %110, %109 ], [ %94, %93 ], [ %78, %77 ], [ %62, %61 ], [ %46, %45 ], [ %267, %266 ], [ %257, %255 ], [ %293, %292 ], [ %283, %281 ] + %.sink308 = phi ptr [ %181, %180 ], [ %183, %185 ], [ %303, %302 ], [ %239, %241 ], [ %225, %227 ], [ %211, %213 ], [ %197, %199 ], [ %163, %165 ], [ %141, %143 ], [ %123, %125 ], [ %107, %109 ], [ %91, %93 ], [ %75, %77 ], [ %59, %61 ], [ %43, %45 ], [ %264, %266 ], [ %256, %255 ], [ %290, %292 ], [ %282, %281 ] + %.sink306 = phi ptr [ %177, %180 ], [ %186, %185 ], [ %304, %302 ], [ %242, %241 ], [ %228, %227 ], [ %214, %213 ], [ %200, %199 ], [ %166, %165 ], [ %144, %143 ], [ %126, %125 ], [ %110, %109 ], [ %94, %93 ], [ %78, %77 ], [ %62, %61 ], [ %46, %45 ], [ %267, %266 ], [ %257, %255 ], [ %293, %292 ], [ %283, %281 ] %306 = getelementptr inbounds i8, ptr %0, i64 8 - store ptr %.sink293, ptr %306, align 8 + store ptr %.sink308, ptr %306, align 8 %307 = getelementptr inbounds i8, ptr %0, i64 16 - store ptr %.sink291, ptr %307, align 8 + store ptr %.sink306, ptr %307, align 8 store ptr null, ptr %0, align 8 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) @@ -3131,17 +3131,17 @@ define internal fastcc void @_ZN10uu_hashsum27create_algorithm_from_flags17he987 ret void 310: ; preds = %305 - %.val261 = load ptr, ptr %24, align 8, !nonnull !5, !align !144, !noundef !5 - %311 = load ptr, ptr %.val261, align 8, !invariant.load !5, !nonnull !5 + %.val276 = load ptr, ptr %24, align 8, !nonnull !5, !align !144, !noundef !5 + %311 = load ptr, ptr %.val276, align 8, !invariant.load !5, !nonnull !5 invoke void %311(ptr noundef nonnull align 1 %308) to label %321 unwind label %312 312: ; preds = %310 %313 = landingpad { ptr, i32 } cleanup - %314 = getelementptr inbounds i8, ptr %.val261, i64 8 + %314 = getelementptr inbounds i8, ptr %.val276, i64 8 %315 = load i64, ptr %314, align 8, !range !15, !invariant.load !5 - %316 = getelementptr inbounds i8, ptr %.val261, i64 16 + %316 = getelementptr inbounds i8, ptr %.val276, i64 16 %317 = load i64, ptr %316, align 8, !range !16, !invariant.load !5 %318 = icmp ult i64 %317, -9223372036854775807 call void @llvm.assume(i1 %318) @@ -3153,9 +3153,9 @@ define internal fastcc void @_ZN10uu_hashsum27create_algorithm_from_flags17he987 br label %common.resume 321: ; preds = %310 - %322 = getelementptr inbounds i8, ptr %.val261, i64 8 + %322 = getelementptr inbounds i8, ptr %.val276, i64 8 %323 = load i64, ptr %322, align 8, !range !15, !invariant.load !5 - %324 = getelementptr inbounds i8, ptr %.val261, i64 16 + %324 = getelementptr inbounds i8, ptr %.val276, i64 16 %325 = load i64, ptr %324, align 8, !range !16, !invariant.load !5 %326 = icmp ult i64 %325, -9223372036854775807 call void @llvm.assume(i1 %326) @@ -3175,8 +3175,8 @@ common.resume: ; preds = %.body, %329, %312, br label %309 329: ; preds = %.body - %.val259 = load ptr, ptr %24, align 8, !nonnull !5, !align !144, !noundef !5 - invoke fastcc void @"_ZN4core3ptr83drop_in_place$LT$alloc..boxed..Box$LT$dyn$u20$uucore..features..sum..Digest$GT$$GT$17hf055cacec5bc574bE"(ptr nonnull %31, ptr nonnull %.val259) #14 + %.val274 = load ptr, ptr %24, align 8, !nonnull !5, !align !144, !noundef !5 + invoke fastcc void @"_ZN4core3ptr83drop_in_place$LT$alloc..boxed..Box$LT$dyn$u20$uucore..features..sum..Digest$GT$$GT$17hf055cacec5bc574bE"(ptr nonnull %31, ptr nonnull %.val274) #14 to label %common.resume unwind label %330 330: ; preds = %329 diff --git a/bench/coreutils-rs/optimized/2etc5gfaqs8pnymi.ll b/bench/coreutils-rs/optimized/2etc5gfaqs8pnymi.ll index faad92ee439..a656da0b75a 100644 --- a/bench/coreutils-rs/optimized/2etc5gfaqs8pnymi.ll +++ b/bench/coreutils-rs/optimized/2etc5gfaqs8pnymi.ll @@ -50,17 +50,17 @@ define hidden noundef align 16 dereferenceable_or_null(112) ptr @"_ZN12clap_buil br i1 %9, label %.loopexit, label %.lr.ph .lr.ph: ; preds = %3, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge" - %.sroa.0.025 = phi ptr [ %10, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge" ], [ %5, %3 ] - %.sroa.8.024 = phi i64 [ %11, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge" ], [ 0, %3 ] - %10 = getelementptr inbounds i8, ptr %.sroa.0.025, i64 16 - %11 = add nuw nsw i64 %.sroa.8.024, 1 - %12 = getelementptr i8, ptr %.sroa.0.025, i64 8 + %.sroa.0.026 = phi ptr [ %10, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge" ], [ %5, %3 ] + %.sroa.8.025 = phi i64 [ %11, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge" ], [ 0, %3 ] + %10 = getelementptr inbounds i8, ptr %.sroa.0.026, i64 16 + %11 = add nuw nsw i64 %.sroa.8.025, 1 + %12 = getelementptr i8, ptr %.sroa.0.026, i64 8 %.val19 = load i64, ptr %12, align 8, !noundef !4 %.not.i.i = icmp eq i64 %.val19, %2 br i1 %.not.i.i, label %13, label %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge" 13: ; preds = %.lr.ph - %.val = load ptr, ptr %.sroa.0.025, align 8, !nonnull !4, !align !5, !noundef !4 + %.val = load ptr, ptr %.sroa.0.026, align 8, !nonnull !4, !align !5, !noundef !4 %bcmp.i.i = tail call i32 @bcmp(ptr nonnull readonly %.val, ptr nonnull readonly %1, i64 %2), !alias.scope !6 %14 = icmp eq i32 %bcmp.i.i, 0 br i1 %14, label %16, label %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge" @@ -76,17 +76,17 @@ define hidden noundef align 16 dereferenceable_or_null(112) ptr @"_ZN12clap_buil 16: ; preds = %13 %17 = getelementptr inbounds i8, ptr %0, i64 40 %18 = load i64, ptr %17, align 8, !noundef !4 - %19 = icmp ult i64 %.sroa.8.024, %18 + %19 = icmp ult i64 %.sroa.8.025, %18 br i1 %19, label %20, label %24, !prof !13 20: ; preds = %16 %21 = getelementptr inbounds i8, ptr %0, i64 32 %22 = load ptr, ptr %21, align 8, !nonnull !4, !noundef !4 - %23 = getelementptr inbounds [0 x { { i128, [2 x i64] }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, i8, i8, [6 x i8] }], ptr %22, i64 0, i64 %.sroa.8.024 + %23 = getelementptr inbounds [0 x { { i128, [2 x i64] }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, i8, i8, [6 x i8] }], ptr %22, i64 0, i64 %.sroa.8.025 br label %.loopexit 24: ; preds = %16 - tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %.sroa.8.024, i64 noundef %18, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.6d47717a67563863c34424e87983dcbb.1) #11 + tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %.sroa.8.025, i64 noundef %18, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.6d47717a67563863c34424e87983dcbb.1) #11 unreachable } @@ -103,17 +103,17 @@ define hidden void @_ZN12clap_builder6parser7matches11arg_matches10ArgMatches11t br i1 %10, label %.thread15, label %.lr.ph.i.i .lr.ph.i.i: ; preds = %4, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i.i" - %.sroa.0.025.i.i = phi ptr [ %11, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i.i" ], [ %6, %4 ] - %.sroa.8.024.i.i = phi i64 [ %12, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i.i" ], [ 0, %4 ] - %11 = getelementptr inbounds i8, ptr %.sroa.0.025.i.i, i64 16 - %12 = add nuw nsw i64 %.sroa.8.024.i.i, 1 - %13 = getelementptr i8, ptr %.sroa.0.025.i.i, i64 8 + %.sroa.0.026.i.i = phi ptr [ %11, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i.i" ], [ %6, %4 ] + %.sroa.8.025.i.i = phi i64 [ %12, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i.i" ], [ 0, %4 ] + %11 = getelementptr inbounds i8, ptr %.sroa.0.026.i.i, i64 16 + %12 = add nuw nsw i64 %.sroa.8.025.i.i, 1 + %13 = getelementptr i8, ptr %.sroa.0.026.i.i, i64 8 %.val19.i.i = load i64, ptr %13, align 8, !noalias !25, !noundef !4 %.not.i.i.i.i = icmp eq i64 %.val19.i.i, %3 br i1 %.not.i.i.i.i, label %14, label %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i.i" 14: ; preds = %.lr.ph.i.i - %.val.i.i = load ptr, ptr %.sroa.0.025.i.i, align 8, !noalias !25, !nonnull !4, !align !5, !noundef !4 + %.val.i.i = load ptr, ptr %.sroa.0.026.i.i, align 8, !noalias !25, !nonnull !4, !align !5, !noundef !4 %bcmp.i.i.i.i = tail call i32 @bcmp(ptr nonnull readonly %.val.i.i, ptr nonnull readonly %2, i64 %3), !alias.scope !26, !noalias !33 %15 = icmp eq i32 %bcmp.i.i.i.i, 0 br i1 %15, label %17, label %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i.i" @@ -125,17 +125,17 @@ define hidden void @_ZN12clap_builder6parser7matches11arg_matches10ArgMatches11t 17: ; preds = %14 %18 = getelementptr inbounds i8, ptr %1, i64 40 %19 = load i64, ptr %18, align 8, !alias.scope !20, !noalias !21, !noundef !4 - %20 = icmp ult i64 %.sroa.8.024.i.i, %19 + %20 = icmp ult i64 %.sroa.8.025.i.i, %19 br i1 %20, label %22, label %21, !prof !13 21: ; preds = %17 - tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %.sroa.8.024.i.i, i64 noundef %19, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.6d47717a67563863c34424e87983dcbb.1) #11, !noalias !25 + tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %.sroa.8.025.i.i, i64 noundef %19, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.6d47717a67563863c34424e87983dcbb.1) #11, !noalias !25 unreachable 22: ; preds = %17 %23 = getelementptr inbounds i8, ptr %1, i64 32 %24 = load ptr, ptr %23, align 8, !alias.scope !20, !noalias !21, !nonnull !4, !noundef !4 - %25 = getelementptr inbounds [0 x { { i128, [2 x i64] }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, i8, i8, [6 x i8] }], ptr %24, i64 0, i64 %.sroa.8.024.i.i + %25 = getelementptr inbounds [0 x { { i128, [2 x i64] }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, i8, i8, [6 x i8] }], ptr %24, i64 0, i64 %.sroa.8.025.i.i %26 = tail call noundef i128 @_ZN12clap_builder6parser7matches11matched_arg10MatchedArg13infer_type_id17hf290abf4832dccb4E(ptr noalias noundef nonnull readonly align 16 dereferenceable(112) %25, i128 noundef 24503081927999166500772401431235275638), !noalias !34 %27 = icmp eq i128 %26, 24503081927999166500772401431235275638 br i1 %27, label %29, label %28 @@ -211,17 +211,17 @@ define hidden void @_ZN12clap_builder6parser7matches11arg_matches10ArgMatches11t br i1 %10, label %.thread15, label %.lr.ph.i.i .lr.ph.i.i: ; preds = %4, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i.i" - %.sroa.0.025.i.i = phi ptr [ %11, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i.i" ], [ %6, %4 ] - %.sroa.8.024.i.i = phi i64 [ %12, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i.i" ], [ 0, %4 ] - %11 = getelementptr inbounds i8, ptr %.sroa.0.025.i.i, i64 16 - %12 = add nuw nsw i64 %.sroa.8.024.i.i, 1 - %13 = getelementptr i8, ptr %.sroa.0.025.i.i, i64 8 + %.sroa.0.026.i.i = phi ptr [ %11, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i.i" ], [ %6, %4 ] + %.sroa.8.025.i.i = phi i64 [ %12, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i.i" ], [ 0, %4 ] + %11 = getelementptr inbounds i8, ptr %.sroa.0.026.i.i, i64 16 + %12 = add nuw nsw i64 %.sroa.8.025.i.i, 1 + %13 = getelementptr i8, ptr %.sroa.0.026.i.i, i64 8 %.val19.i.i = load i64, ptr %13, align 8, !noalias !57, !noundef !4 %.not.i.i.i.i = icmp eq i64 %.val19.i.i, %3 br i1 %.not.i.i.i.i, label %14, label %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i.i" 14: ; preds = %.lr.ph.i.i - %.val.i.i = load ptr, ptr %.sroa.0.025.i.i, align 8, !noalias !57, !nonnull !4, !align !5, !noundef !4 + %.val.i.i = load ptr, ptr %.sroa.0.026.i.i, align 8, !noalias !57, !nonnull !4, !align !5, !noundef !4 %bcmp.i.i.i.i = tail call i32 @bcmp(ptr nonnull readonly %.val.i.i, ptr nonnull readonly %2, i64 %3), !alias.scope !58, !noalias !65 %15 = icmp eq i32 %bcmp.i.i.i.i, 0 br i1 %15, label %17, label %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i.i" @@ -233,17 +233,17 @@ define hidden void @_ZN12clap_builder6parser7matches11arg_matches10ArgMatches11t 17: ; preds = %14 %18 = getelementptr inbounds i8, ptr %1, i64 40 %19 = load i64, ptr %18, align 8, !alias.scope !52, !noalias !53, !noundef !4 - %20 = icmp ult i64 %.sroa.8.024.i.i, %19 + %20 = icmp ult i64 %.sroa.8.025.i.i, %19 br i1 %20, label %22, label %21, !prof !13 21: ; preds = %17 - tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %.sroa.8.024.i.i, i64 noundef %19, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.6d47717a67563863c34424e87983dcbb.1) #11, !noalias !57 + tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %.sroa.8.025.i.i, i64 noundef %19, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.6d47717a67563863c34424e87983dcbb.1) #11, !noalias !57 unreachable 22: ; preds = %17 %23 = getelementptr inbounds i8, ptr %1, i64 32 %24 = load ptr, ptr %23, align 8, !alias.scope !52, !noalias !53, !nonnull !4, !noundef !4 - %25 = getelementptr inbounds [0 x { { i128, [2 x i64] }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, i8, i8, [6 x i8] }], ptr %24, i64 0, i64 %.sroa.8.024.i.i + %25 = getelementptr inbounds [0 x { { i128, [2 x i64] }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, i8, i8, [6 x i8] }], ptr %24, i64 0, i64 %.sroa.8.025.i.i %26 = tail call noundef i128 @_ZN12clap_builder6parser7matches11matched_arg10MatchedArg13infer_type_id17hf290abf4832dccb4E(ptr noalias noundef nonnull readonly align 16 dereferenceable(112) %25, i128 noundef -75035133943807973589178565794283963657), !noalias !66 %27 = icmp eq i128 %26, -75035133943807973589178565794283963657 br i1 %27, label %29, label %28 @@ -356,17 +356,17 @@ define hidden void @_ZN12clap_builder6parser7matches11arg_matches10ArgMatches13t br i1 %10, label %.loopexit, label %.lr.ph.i .lr.ph.i: ; preds = %4, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i" - %.sroa.0.025.i = phi ptr [ %11, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i" ], [ %6, %4 ] - %.sroa.8.024.i = phi i64 [ %12, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i" ], [ 0, %4 ] - %11 = getelementptr inbounds i8, ptr %.sroa.0.025.i, i64 16 - %12 = add nuw nsw i64 %.sroa.8.024.i, 1 - %13 = getelementptr i8, ptr %.sroa.0.025.i, i64 8 + %.sroa.0.026.i = phi ptr [ %11, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i" ], [ %6, %4 ] + %.sroa.8.025.i = phi i64 [ %12, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i" ], [ 0, %4 ] + %11 = getelementptr inbounds i8, ptr %.sroa.0.026.i, i64 16 + %12 = add nuw nsw i64 %.sroa.8.025.i, 1 + %13 = getelementptr i8, ptr %.sroa.0.026.i, i64 8 %.val19.i = load i64, ptr %13, align 8, !noalias !81, !noundef !4 %.not.i.i.i = icmp eq i64 %.val19.i, %3 br i1 %.not.i.i.i, label %14, label %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i" 14: ; preds = %.lr.ph.i - %.val.i = load ptr, ptr %.sroa.0.025.i, align 8, !noalias !81, !nonnull !4, !align !5, !noundef !4 + %.val.i = load ptr, ptr %.sroa.0.026.i, align 8, !noalias !81, !nonnull !4, !align !5, !noundef !4 %bcmp.i.i.i = tail call i32 @bcmp(ptr nonnull readonly %.val.i, ptr nonnull readonly %2, i64 %3), !alias.scope !82, !noalias !76 %15 = icmp eq i32 %bcmp.i.i.i, 0 br i1 %15, label %17, label %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i" @@ -378,11 +378,11 @@ define hidden void @_ZN12clap_builder6parser7matches11arg_matches10ArgMatches13t 17: ; preds = %14 %18 = getelementptr inbounds i8, ptr %1, i64 40 %19 = load i64, ptr %18, align 8, !alias.scope !76, !noalias !79, !noundef !4 - %20 = icmp ult i64 %.sroa.8.024.i, %19 + %20 = icmp ult i64 %.sroa.8.025.i, %19 br i1 %20, label %23, label %21, !prof !13 21: ; preds = %17 - tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %.sroa.8.024.i, i64 noundef %19, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.6d47717a67563863c34424e87983dcbb.1) #11, !noalias !81 + tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %.sroa.8.025.i, i64 noundef %19, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.6d47717a67563863c34424e87983dcbb.1) #11, !noalias !81 unreachable .loopexit: ; preds = %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i", %4 @@ -394,7 +394,7 @@ define hidden void @_ZN12clap_builder6parser7matches11arg_matches10ArgMatches13t 23: ; preds = %17 %24 = getelementptr inbounds i8, ptr %1, i64 32 %25 = load ptr, ptr %24, align 8, !alias.scope !76, !noalias !79, !nonnull !4, !noundef !4 - %26 = getelementptr inbounds [0 x { { i128, [2 x i64] }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, i8, i8, [6 x i8] }], ptr %25, i64 0, i64 %.sroa.8.024.i + %26 = getelementptr inbounds [0 x { { i128, [2 x i64] }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, i8, i8, [6 x i8] }], ptr %25, i64 0, i64 %.sroa.8.025.i %27 = tail call noundef i128 @_ZN12clap_builder6parser7matches11matched_arg10MatchedArg13infer_type_id17hf290abf4832dccb4E(ptr noalias noundef nonnull readonly align 16 dereferenceable(112) %26, i128 noundef -75035133943807973589178565794283963657), !noalias !89 %28 = icmp eq i128 %27, -75035133943807973589178565794283963657 br i1 %28, label %30, label %_ZN12clap_builder6parser7matches11arg_matches10ArgMatches12verify_arg_t17hb3bc49fb19737f68E.llvm.14324550437899031131.exit @@ -429,17 +429,17 @@ define hidden void @_ZN12clap_builder6parser7matches11arg_matches10ArgMatches13t br i1 %10, label %.loopexit, label %.lr.ph.i .lr.ph.i: ; preds = %4, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i" - %.sroa.0.025.i = phi ptr [ %11, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i" ], [ %6, %4 ] - %.sroa.8.024.i = phi i64 [ %12, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i" ], [ 0, %4 ] - %11 = getelementptr inbounds i8, ptr %.sroa.0.025.i, i64 16 - %12 = add nuw nsw i64 %.sroa.8.024.i, 1 - %13 = getelementptr i8, ptr %.sroa.0.025.i, i64 8 + %.sroa.0.026.i = phi ptr [ %11, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i" ], [ %6, %4 ] + %.sroa.8.025.i = phi i64 [ %12, %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i" ], [ 0, %4 ] + %11 = getelementptr inbounds i8, ptr %.sroa.0.026.i, i64 16 + %12 = add nuw nsw i64 %.sroa.8.025.i, 1 + %13 = getelementptr i8, ptr %.sroa.0.026.i, i64 8 %.val19.i = load i64, ptr %13, align 8, !noalias !97, !noundef !4 %.not.i.i.i = icmp eq i64 %.val19.i, %3 br i1 %.not.i.i.i, label %14, label %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i" 14: ; preds = %.lr.ph.i - %.val.i = load ptr, ptr %.sroa.0.025.i, align 8, !noalias !97, !nonnull !4, !align !5, !noundef !4 + %.val.i = load ptr, ptr %.sroa.0.026.i, align 8, !noalias !97, !nonnull !4, !align !5, !noundef !4 %bcmp.i.i.i = tail call i32 @bcmp(ptr nonnull readonly %.val.i, ptr nonnull readonly %2, i64 %3), !alias.scope !98, !noalias !92 %15 = icmp eq i32 %bcmp.i.i.i, 0 br i1 %15, label %17, label %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i" @@ -451,11 +451,11 @@ define hidden void @_ZN12clap_builder6parser7matches11arg_matches10ArgMatches13t 17: ; preds = %14 %18 = getelementptr inbounds i8, ptr %1, i64 40 %19 = load i64, ptr %18, align 8, !alias.scope !92, !noalias !95, !noundef !4 - %20 = icmp ult i64 %.sroa.8.024.i, %19 + %20 = icmp ult i64 %.sroa.8.025.i, %19 br i1 %20, label %23, label %21, !prof !13 21: ; preds = %17 - tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %.sroa.8.024.i, i64 noundef %19, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.6d47717a67563863c34424e87983dcbb.1) #11, !noalias !97 + tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %.sroa.8.025.i, i64 noundef %19, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.6d47717a67563863c34424e87983dcbb.1) #11, !noalias !97 unreachable .loopexit: ; preds = %"_ZN4core3str6traits54_$LT$impl$u20$core..cmp..PartialEq$u20$for$u20$str$GT$2eq17hfc223ed45b85f225E.exit.backedge.i", %4 @@ -467,7 +467,7 @@ define hidden void @_ZN12clap_builder6parser7matches11arg_matches10ArgMatches13t 23: ; preds = %17 %24 = getelementptr inbounds i8, ptr %1, i64 32 %25 = load ptr, ptr %24, align 8, !alias.scope !92, !noalias !95, !nonnull !4, !noundef !4 - %26 = getelementptr inbounds [0 x { { i128, [2 x i64] }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, i8, i8, [6 x i8] }], ptr %25, i64 0, i64 %.sroa.8.024.i + %26 = getelementptr inbounds [0 x { { i128, [2 x i64] }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, { { i64, ptr, {} }, i64 }, i8, i8, [6 x i8] }], ptr %25, i64 0, i64 %.sroa.8.025.i %27 = tail call noundef i128 @_ZN12clap_builder6parser7matches11matched_arg10MatchedArg13infer_type_id17hf290abf4832dccb4E(ptr noalias noundef nonnull readonly align 16 dereferenceable(112) %26, i128 noundef 24503081927999166500772401431235275638), !noalias !105 %28 = icmp eq i128 %27, 24503081927999166500772401431235275638 br i1 %28, label %30, label %_ZN12clap_builder6parser7matches11arg_matches10ArgMatches12verify_arg_t17h3e8ab7f218f4a650E.llvm.14324550437899031131.exit diff --git a/bench/coreutils-rs/optimized/2g9ijtjos2xwh9zs.ll b/bench/coreutils-rs/optimized/2g9ijtjos2xwh9zs.ll index 849b2ab7195..a4af94b78c4 100644 --- a/bench/coreutils-rs/optimized/2g9ijtjos2xwh9zs.ll +++ b/bench/coreutils-rs/optimized/2g9ijtjos2xwh9zs.ll @@ -1532,7 +1532,7 @@ define hidden { ptr, ptr } @"_ZN15crossbeam_deque5deque15Worker$LT$T$GT$3pop17he %6 = load atomic i64, ptr %5 monotonic, align 8 %7 = sub i64 %4, %6 %8 = icmp slt i64 %7, 1 - br i1 %8, label %41, label %9 + br i1 %8, label %.thread55, label %9 9: ; preds = %1 %10 = getelementptr inbounds i8, ptr %0, i64 24 @@ -1555,7 +1555,7 @@ define hidden { ptr, ptr } @"_ZN15crossbeam_deque5deque15Worker$LT$T$GT$3pop17he %20 = load atomic i64, ptr %19 monotonic, align 8 %21 = sub i64 %17, %20 %22 = icmp slt i64 %21, 0 - br i1 %22, label %56, label %44 + br i1 %22, label %55, label %43 23: ; preds = %12 %24 = getelementptr inbounds i8, ptr %0, i64 8 @@ -1574,69 +1574,69 @@ define hidden { ptr, ptr } @"_ZN15crossbeam_deque5deque15Worker$LT$T$GT$3pop17he %35 = sdiv i64 %27, 4 %.not42 = icmp sgt i64 %7, %35 %or.cond = or i1 %34, %.not42 - br i1 %or.cond, label %41, label %39 + br i1 %or.cond, label %.thread55, label %39 36: ; preds = %12 %37 = load ptr, ptr %0, align 8, !nonnull !18, !noundef !18 %38 = getelementptr inbounds i8, ptr %37, i64 256 store atomic i64 %13, ptr %38 monotonic, align 8 - br label %41 + br label %.thread55 39: ; preds = %23 %40 = lshr i64 %27, 1 tail call fastcc void @"_ZN15crossbeam_deque5deque15Worker$LT$T$GT$6resize17hf06957bf9c8d665cE"(ptr noundef nonnull align 8 %0, i64 noundef %40) - br label %41 - -41: ; preds = %.thread, %58, %39, %23, %1, %56, %36 - %.sroa.7.0 = phi ptr [ undef, %56 ], [ undef, %36 ], [ undef, %1 ], [ %33, %39 ], [ %33, %23 ], [ %54, %58 ], [ %54, %.thread ] - %.sroa.0.0 = phi ptr [ null, %56 ], [ null, %36 ], [ null, %1 ], [ %32, %39 ], [ %32, %23 ], [ null, %58 ], [ %53, %.thread ] - %42 = insertvalue { ptr, ptr } poison, ptr %.sroa.0.0, 0 - %43 = insertvalue { ptr, ptr } %42, ptr %.sroa.7.0, 1 - ret { ptr, ptr } %43 - -44: ; preds = %16 - %45 = getelementptr inbounds i8, ptr %0, i64 8 - %46 = load ptr, ptr %45, align 8, !noundef !18 - %47 = getelementptr inbounds i8, ptr %0, i64 16 - %48 = load i64, ptr %47, align 8, !noundef !18 - %49 = add i64 %48, -1 - %50 = and i64 %49, %17 - %51 = getelementptr inbounds { ptr, ptr }, ptr %46, i64 %50 - %52 = load volatile { [2 x i64] }, ptr %51, align 8 - %.fca.0.0.extract35 = extractvalue { [2 x i64] } %52, 0, 0 - %.fca.0.1.extract36 = extractvalue { [2 x i64] } %52, 0, 1 - %53 = inttoptr i64 %.fca.0.0.extract35 to ptr - %54 = inttoptr i64 %.fca.0.1.extract36 to ptr - %55 = icmp eq i64 %17, %20 - br i1 %55, label %58, label %63 - -56: ; preds = %16 - %57 = getelementptr inbounds i8, ptr %18, i64 264 - store atomic i64 %4, ptr %57 monotonic, align 8 - br label %41 - -58: ; preds = %44 - %59 = cmpxchg ptr %19, i64 %17, i64 %4 seq_cst monotonic, align 8 - %60 = extractvalue { i64, i1 } %59, 1 - %61 = load ptr, ptr %0, align 8, !nonnull !18, !noundef !18 - %62 = getelementptr inbounds i8, ptr %61, i64 264 - store atomic i64 %4, ptr %62 monotonic, align 8 - br i1 %60, label %.thread, label %41 - -63: ; preds = %44 - %64 = icmp ugt i64 %48, 64 - %65 = sdiv i64 %48, 4 - %66 = icmp slt i64 %21, %65 - %or.cond46 = and i1 %64, %66 - br i1 %or.cond46, label %67, label %.thread - -.thread: ; preds = %67, %63, %58 - br label %41 - -67: ; preds = %63 - %68 = lshr i64 %48, 1 - tail call fastcc void @"_ZN15crossbeam_deque5deque15Worker$LT$T$GT$6resize17hf06957bf9c8d665cE"(ptr noundef nonnull align 8 %0, i64 noundef %68) - br label %.thread + br label %.thread55 + +.thread55: ; preds = %61, %66, %57, %39, %23, %1, %55, %36 + %.sroa.7.0 = phi ptr [ undef, %55 ], [ undef, %36 ], [ undef, %1 ], [ %33, %39 ], [ %33, %23 ], [ %53, %57 ], [ %53, %66 ], [ %.44, %61 ] + %.sroa.0.0 = phi ptr [ null, %55 ], [ null, %36 ], [ null, %1 ], [ %32, %39 ], [ %32, %23 ], [ %52, %57 ], [ %52, %66 ], [ %spec.select, %61 ] + %41 = insertvalue { ptr, ptr } poison, ptr %.sroa.0.0, 0 + %42 = insertvalue { ptr, ptr } %41, ptr %.sroa.7.0, 1 + ret { ptr, ptr } %42 + +43: ; preds = %16 + %44 = getelementptr inbounds i8, ptr %0, i64 8 + %45 = load ptr, ptr %44, align 8, !noundef !18 + %46 = getelementptr inbounds i8, ptr %0, i64 16 + %47 = load i64, ptr %46, align 8, !noundef !18 + %48 = add i64 %47, -1 + %49 = and i64 %48, %17 + %50 = getelementptr inbounds { ptr, ptr }, ptr %45, i64 %49 + %51 = load volatile { [2 x i64] }, ptr %50, align 8 + %.fca.0.0.extract35 = extractvalue { [2 x i64] } %51, 0, 0 + %.fca.0.1.extract36 = extractvalue { [2 x i64] } %51, 0, 1 + %52 = inttoptr i64 %.fca.0.0.extract35 to ptr + %53 = inttoptr i64 %.fca.0.1.extract36 to ptr + %54 = icmp eq i64 %17, %20 + br i1 %54, label %61, label %57 + +55: ; preds = %16 + %56 = getelementptr inbounds i8, ptr %18, i64 264 + store atomic i64 %4, ptr %56 monotonic, align 8 + br label %.thread55 + +57: ; preds = %43 + %58 = icmp ugt i64 %47, 64 + %59 = sdiv i64 %47, 4 + %60 = icmp slt i64 %21, %59 + %or.cond47 = and i1 %58, %60 + br i1 %or.cond47, label %66, label %.thread55 + +61: ; preds = %43 + %62 = cmpxchg ptr %19, i64 %17, i64 %4 seq_cst monotonic, align 8 + %.fr59 = freeze { i64, i1 } %62 + %63 = extractvalue { i64, i1 } %.fr59, 1 + %.44 = select i1 %63, ptr %53, ptr undef + %64 = load ptr, ptr %0, align 8, !nonnull !18, !noundef !18 + %65 = getelementptr inbounds i8, ptr %64, i64 264 + store atomic i64 %4, ptr %65 monotonic, align 8 + %spec.select = select i1 %63, ptr %52, ptr null + br label %.thread55 + +66: ; preds = %57 + %67 = lshr i64 %47, 1 + tail call fastcc void @"_ZN15crossbeam_deque5deque15Worker$LT$T$GT$6resize17hf06957bf9c8d665cE"(ptr noundef nonnull align 8 %0, i64 noundef %67) + br label %.thread55 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/coreutils-rs/optimized/2j3x034tyak3eas9.ll b/bench/coreutils-rs/optimized/2j3x034tyak3eas9.ll index d650889e6c2..2e5c919da60 100644 --- a/bench/coreutils-rs/optimized/2j3x034tyak3eas9.ll +++ b/bench/coreutils-rs/optimized/2j3x034tyak3eas9.ll @@ -678,15 +678,15 @@ define hidden { ptr, ptr } @_ZN7uu_fold9fold_file17h3dc381615f276ae5E(ptr noalia %.sroa.0.i.1.i.1.i.1..sroa_idx = getelementptr inbounds i8, ptr %.sroa.0.i, i64 1 %.sroa.0.i.2.i.2.i.2..sroa_idx = getelementptr inbounds i8, ptr %.sroa.0.i, i64 2 %.sroa.0.i.3.i.3.i.3..sroa_idx = getelementptr inbounds i8, ptr %.sroa.0.i, i64 3 - %.sroa.0.i.1.i.1.i.1..sroa_idx195 = getelementptr inbounds i8, ptr %.sroa.0.i, i64 1 - %.sroa.0.i.2.i.2.i.2..sroa_idx197 = getelementptr inbounds i8, ptr %.sroa.0.i, i64 2 - %.sroa.0.i.1.i.1.i.1..sroa_idx196 = getelementptr inbounds i8, ptr %.sroa.0.i, i64 1 + %.sroa.0.i.1.i.1.i.1..sroa_idx180 = getelementptr inbounds i8, ptr %.sroa.0.i, i64 1 + %.sroa.0.i.2.i.2.i.2..sroa_idx182 = getelementptr inbounds i8, ptr %.sroa.0.i, i64 2 + %.sroa.0.i.1.i.1.i.1..sroa_idx181 = getelementptr inbounds i8, ptr %.sroa.0.i, i64 1 br label %46 46: ; preds = %136, %3 %.059 = phi i64 [ 0, %3 ], [ %.2, %136 ] %.sroa.032.0 = phi i64 [ 0, %3 ], [ %.sroa.032.2, %136 ] - %.sroa.10.0 = phi i64 [ undef, %3 ], [ %.sroa.10.1142, %136 ] + %.sroa.10.0 = phi i64 [ undef, %3 ], [ %.sroa.10.2, %136 ] call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) invoke void @_ZN3std2io16append_to_string17h7ad5917af001e887E(ptr noalias nocapture noundef nonnull sret({ i64, [1 x i64] }) align 8 dereferenceable(16) %19, ptr noalias noundef nonnull align 8 dereferenceable(24) %21, ptr noalias noundef nonnull align 8 dereferenceable(56) %0) to label %47 unwind label %.loopexit.split-lp.loopexit @@ -824,12 +824,12 @@ define hidden { ptr, ptr } @_ZN7uu_fold9fold_file17h3dc381615f276ae5E(ptr noalia ret { ptr, ptr } %90 .lr.ph: ; preds = %69, %_ZN5alloc6string6String4push17h1a3e9179dd826612E.exit - %.sroa.10.1159 = phi i64 [ %.sroa.10.4130, %_ZN5alloc6string6String4push17h1a3e9179dd826612E.exit ], [ %.sroa.10.0, %69 ] - %.sroa.032.1158 = phi i64 [ %.sroa.032.4128, %_ZN5alloc6string6String4push17h1a3e9179dd826612E.exit ], [ %.sroa.032.0, %69 ] - %.1157 = phi i64 [ %.4126, %_ZN5alloc6string6String4push17h1a3e9179dd826612E.exit ], [ %.059, %69 ] - %.sroa.0107.0156 = phi ptr [ %.sroa.0107.4.ph, %_ZN5alloc6string6String4push17h1a3e9179dd826612E.exit ], [ %70, %69 ] - %91 = getelementptr inbounds i8, ptr %.sroa.0107.0156, i64 1 - %92 = load i8, ptr %.sroa.0107.0156, align 1, !noalias !115, !noundef !5 + %.sroa.10.1158 = phi i64 [ %.sroa.10.4130, %_ZN5alloc6string6String4push17h1a3e9179dd826612E.exit ], [ %.sroa.10.0, %69 ] + %.sroa.032.1157 = phi i64 [ %.sroa.032.4128, %_ZN5alloc6string6String4push17h1a3e9179dd826612E.exit ], [ %.sroa.032.0, %69 ] + %.1156 = phi i64 [ %.4126, %_ZN5alloc6string6String4push17h1a3e9179dd826612E.exit ], [ %.059, %69 ] + %.sroa.0107.0155 = phi ptr [ %.sroa.0107.4.ph, %_ZN5alloc6string6String4push17h1a3e9179dd826612E.exit ], [ %70, %69 ] + %91 = getelementptr inbounds i8, ptr %.sroa.0107.0155, i64 1 + %92 = load i8, ptr %.sroa.0107.0155, align 1, !noalias !115, !noundef !5 %93 = icmp sgt i8 %92, -1 br i1 %93, label %104, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hc5c75ec86ca3f23eE.exit13.i" @@ -838,7 +838,7 @@ define hidden { ptr, ptr } @_ZN7uu_fold9fold_file17h3dc381615f276ae5E(ptr noalia %95 = zext nneg i8 %94 to i32 %96 = icmp ne ptr %91, %72 call void @llvm.assume(i1 %96) - %97 = getelementptr inbounds i8, ptr %.sroa.0107.0156, i64 2 + %97 = getelementptr inbounds i8, ptr %.sroa.0107.0155, i64 2 %98 = load i8, ptr %91, align 1, !noalias !115, !noundef !5 %99 = shl nuw nsw i32 %95, 6 %100 = and i8 %98, 63 @@ -854,7 +854,7 @@ define hidden { ptr, ptr } @_ZN7uu_fold9fold_file17h3dc381615f276ae5E(ptr noalia "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hc5c75ec86ca3f23eE.exit15.i": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hc5c75ec86ca3f23eE.exit13.i" %106 = icmp ne ptr %97, %72 call void @llvm.assume(i1 %106) - %107 = getelementptr inbounds i8, ptr %.sroa.0107.0156, i64 3 + %107 = getelementptr inbounds i8, ptr %.sroa.0107.0155, i64 3 %108 = load i8, ptr %97, align 1, !noalias !115, !noundef !5 %109 = shl nuw nsw i32 %101, 6 %110 = and i8 %108, 63 @@ -868,7 +868,7 @@ define hidden { ptr, ptr } @_ZN7uu_fold9fold_file17h3dc381615f276ae5E(ptr noalia "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hc5c75ec86ca3f23eE.exit17.i": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hc5c75ec86ca3f23eE.exit15.i" %116 = icmp ne ptr %107, %72 call void @llvm.assume(i1 %116) - %117 = getelementptr inbounds i8, ptr %.sroa.0107.0156, i64 4 + %117 = getelementptr inbounds i8, ptr %.sroa.0107.0155, i64 4 %118 = load i8, ptr %107, align 1, !noalias !115, !noundef !5 %119 = shl nuw nsw i32 %95, 18 %120 = and i32 %119, 1835008 @@ -888,17 +888,17 @@ define hidden { ptr, ptr } @_ZN7uu_fold9fold_file17h3dc381615f276ae5E(ptr noalia ] thread-pre-split: ; preds = %126, %_ZN5alloc6string6String4push17h1a3e9179dd826612E.exit, %69 - %.1.lcssa = phi i64 [ %.059, %69 ], [ %.4126, %_ZN5alloc6string6String4push17h1a3e9179dd826612E.exit ], [ %.1157, %126 ] - %.sroa.032.1.lcssa = phi i64 [ %.sroa.032.0, %69 ], [ %.sroa.032.4128, %_ZN5alloc6string6String4push17h1a3e9179dd826612E.exit ], [ %.sroa.032.1158, %126 ] - %.sroa.10.1.lcssa = phi i64 [ %.sroa.10.0, %69 ], [ %.sroa.10.4130, %_ZN5alloc6string6String4push17h1a3e9179dd826612E.exit ], [ %.sroa.10.1159, %126 ] + %.1.lcssa = phi i64 [ %.059, %69 ], [ %.4126, %_ZN5alloc6string6String4push17h1a3e9179dd826612E.exit ], [ %.1156, %126 ] + %.sroa.032.1.lcssa = phi i64 [ %.sroa.032.0, %69 ], [ %.sroa.032.4128, %_ZN5alloc6string6String4push17h1a3e9179dd826612E.exit ], [ %.sroa.032.1157, %126 ] + %.sroa.10.1.lcssa = phi i64 [ %.sroa.10.0, %69 ], [ %.sroa.10.4130, %_ZN5alloc6string6String4push17h1a3e9179dd826612E.exit ], [ %.sroa.10.1158, %126 ] %.pr = load i64, ptr %.sroa.442.0..sroa_idx43, align 8 br label %127 127: ; preds = %thread-pre-split, %134 - %.sroa.10.1142 = phi i64 [ %.sroa.10.1.lcssa, %thread-pre-split ], [ %.sroa.10.1159, %134 ] %128 = phi i64 [ %.pr, %thread-pre-split ], [ %135, %134 ] %.2 = phi i64 [ %.1.lcssa, %thread-pre-split ], [ %135, %134 ] %.sroa.032.2 = phi i64 [ %.sroa.032.1.lcssa, %thread-pre-split ], [ 0, %134 ] + %.sroa.10.2 = phi i64 [ %.sroa.10.1.lcssa, %thread-pre-split ], [ undef, %134 ] %129 = icmp eq i64 %128, 0 br i1 %129, label %136, label %137 @@ -921,7 +921,7 @@ thread-pre-split: ; preds = %126, %_ZN5alloc6str to label %133 unwind label %.loopexit.split-lp.loopexit 132: ; preds = %126 - %.not = icmp ult i64 %.1157, %2 + %.not = icmp ult i64 %.1156, %2 br i1 %.not, label %149, label %139 133: ; preds = %130 @@ -959,8 +959,8 @@ thread-pre-split: ; preds = %126, %_ZN5alloc6str br label %136 139: ; preds = %132 - %switch66 = icmp eq i64 %.sroa.032.1158, 0 - %140 = add i64 %.sroa.10.1159, 1 + %switch66 = icmp eq i64 %.sroa.032.1157, 0 + %140 = add i64 %.sroa.10.1158, 1 %141 = load i64, ptr %.sroa.442.0..sroa_idx43, align 8 %.061 = select i1 %switch66, i64 %141, i64 %140 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %15) @@ -985,8 +985,9 @@ thread-pre-split: ; preds = %126, %_ZN5alloc6str br i1 %148, label %150, label %.invoke 149: ; preds = %132, %152 - %.3 = phi i64 [ %153, %152 ], [ %.1157, %132 ] - %.sroa.032.3 = phi i64 [ 0, %152 ], [ %.sroa.032.1158, %132 ] + %.3 = phi i64 [ %153, %152 ], [ %.1156, %132 ] + %.sroa.032.3 = phi i64 [ 0, %152 ], [ %.sroa.032.1157, %132 ] + %.sroa.10.3 = phi i64 [ undef, %152 ], [ %.sroa.10.1158, %132 ] switch i32 %.sroa.4.0.i.ph, label %154 [ i32 13, label %.critedge.i i32 9, label %155 @@ -1034,21 +1035,21 @@ thread-pre-split: ; preds = %126, %_ZN5alloc6str br label %.critedge.i .critedge72.thread: ; preds = %265, %246 - %.4176 = add i64 %.3, 1 + %.4171 = add i64 %.3, 1 br label %164 .critedge72: ; preds = %154, %.critedge %.sroa.032.4 = phi i64 [ 1, %.critedge ], [ %.sroa.032.3, %154 ] - %.sroa.10.4 = phi i64 [ %267, %.critedge ], [ %.sroa.10.1159, %154 ] + %.sroa.10.4 = phi i64 [ %267, %.critedge ], [ %.sroa.10.3, %154 ] %.4 = add i64 %.3, 1 call void @llvm.experimental.noalias.scope.decl(metadata !154) %163 = icmp ult i32 %.sroa.4.0.i.ph, 128 br i1 %163, label %.critedge.i, label %164 164: ; preds = %.critedge72.thread, %.critedge72 - %.4179 = phi i64 [ %.4176, %.critedge72.thread ], [ %.4, %.critedge72 ] - %.sroa.10.4178 = phi i64 [ %.sroa.10.1159, %.critedge72.thread ], [ %.sroa.10.4, %.critedge72 ] - %.sroa.032.4177 = phi i64 [ %.sroa.032.3, %.critedge72.thread ], [ %.sroa.032.4, %.critedge72 ] + %.4174 = phi i64 [ %.4171, %.critedge72.thread ], [ %.4, %.critedge72 ] + %.sroa.10.4173 = phi i64 [ %.sroa.10.3, %.critedge72.thread ], [ %.sroa.10.4, %.critedge72 ] + %.sroa.032.4172 = phi i64 [ %.sroa.032.3, %.critedge72.thread ], [ %.sroa.032.4, %.critedge72 ] call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %.sroa.0.i) store i32 0, ptr %.sroa.0.i, align 4, !noalias !154 %165 = icmp ult i32 %.sroa.4.0.i.ph, 2048 @@ -1066,7 +1067,7 @@ thread-pre-split: ; preds = %126, %_ZN5alloc6str %172 = trunc i32 %.sroa.4.0.i.ph to i8 %173 = and i8 %172, 63 %174 = or disjoint i8 %173, -128 - store i8 %174, ptr %.sroa.0.i.1.i.1.i.1..sroa_idx196, align 1, !alias.scope !157, !noalias !154 + store i8 %174, ptr %.sroa.0.i.1.i.1.i.1..sroa_idx181, align 1, !alias.scope !157, !noalias !154 br label %_ZN4core4char7methods15encode_utf8_raw17ha5a8bd16826d1590E.exit.i 175: ; preds = %166 @@ -1078,11 +1079,11 @@ thread-pre-split: ; preds = %126, %_ZN5alloc6str %180 = trunc i32 %179 to i8 %181 = and i8 %180, 63 %182 = or disjoint i8 %181, -128 - store i8 %182, ptr %.sroa.0.i.1.i.1.i.1..sroa_idx195, align 1, !alias.scope !157, !noalias !154 + store i8 %182, ptr %.sroa.0.i.1.i.1.i.1..sroa_idx180, align 1, !alias.scope !157, !noalias !154 %183 = trunc i32 %.sroa.4.0.i.ph to i8 %184 = and i8 %183, 63 %185 = or disjoint i8 %184, -128 - store i8 %185, ptr %.sroa.0.i.2.i.2.i.2..sroa_idx197, align 2, !alias.scope !157, !noalias !154 + store i8 %185, ptr %.sroa.0.i.2.i.2.i.2..sroa_idx182, align 2, !alias.scope !157, !noalias !154 br label %_ZN4core4char7methods15encode_utf8_raw17ha5a8bd16826d1590E.exit.i 186: ; preds = %166 @@ -1139,10 +1140,10 @@ _ZN4core4char7methods15encode_utf8_raw17ha5a8bd16826d1590E.exit.i: ; preds = %18 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %.sroa.0.i) br label %_ZN5alloc6string6String4push17h1a3e9179dd826612E.exit -.critedge.i: ; preds = %.critedge72.thread180, %226, %149, %161, %.critedge72 - %.sroa.10.4131 = phi i64 [ %.sroa.10.4, %.critedge72 ], [ %spec.select74, %226 ], [ %.sroa.10.1159, %149 ], [ %.sroa.10.1159, %161 ], [ %.sroa.10.1159, %.critedge72.thread180 ] - %.sroa.032.4129 = phi i64 [ %.sroa.032.4, %.critedge72 ], [ %spec.select73, %226 ], [ %.sroa.032.3, %149 ], [ %.sroa.032.3, %161 ], [ %.sroa.032.3, %.critedge72.thread180 ] - %.4127 = phi i64 [ %.4, %.critedge72 ], [ %157, %226 ], [ 0, %149 ], [ %162, %161 ], [ %.4183, %.critedge72.thread180 ] +.critedge.i: ; preds = %.critedge72.thread175, %226, %149, %161, %.critedge72 + %.sroa.10.4131 = phi i64 [ %.sroa.10.4, %.critedge72 ], [ %spec.select74, %226 ], [ %.sroa.10.3, %149 ], [ %.sroa.10.3, %161 ], [ %.sroa.10.3, %.critedge72.thread175 ] + %.sroa.032.4129 = phi i64 [ %.sroa.032.4, %.critedge72 ], [ %spec.select73, %226 ], [ %.sroa.032.3, %149 ], [ %.sroa.032.3, %161 ], [ %.sroa.032.3, %.critedge72.thread175 ] + %.4127 = phi i64 [ %.4, %.critedge72 ], [ %157, %226 ], [ 0, %149 ], [ %162, %161 ], [ %.4178, %.critedge72.thread175 ] %215 = trunc nuw i32 %.sroa.4.0.i.ph to i8 %216 = load i64, ptr %.sroa.442.0..sroa_idx43, align 8, !alias.scope !170, !noundef !5 %217 = load i64, ptr %20, align 8, !alias.scope !170, !noundef !5 @@ -1168,9 +1169,9 @@ _ZN4core4char7methods15encode_utf8_raw17ha5a8bd16826d1590E.exit.i: ; preds = %18 br label %_ZN5alloc6string6String4push17h1a3e9179dd826612E.exit _ZN5alloc6string6String4push17h1a3e9179dd826612E.exit: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$17extend_from_slice17h48025144759d9b0aE.exit.i", %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17hc1db0610ff212549E.exit.i" - %.sroa.10.4130 = phi i64 [ %.sroa.10.4178, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$17extend_from_slice17h48025144759d9b0aE.exit.i" ], [ %.sroa.10.4131, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17hc1db0610ff212549E.exit.i" ] - %.sroa.032.4128 = phi i64 [ %.sroa.032.4177, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$17extend_from_slice17h48025144759d9b0aE.exit.i" ], [ %.sroa.032.4129, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17hc1db0610ff212549E.exit.i" ] - %.4126 = phi i64 [ %.4179, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$17extend_from_slice17h48025144759d9b0aE.exit.i" ], [ %.4127, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17hc1db0610ff212549E.exit.i" ] + %.sroa.10.4130 = phi i64 [ %.sroa.10.4173, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$17extend_from_slice17h48025144759d9b0aE.exit.i" ], [ %.sroa.10.4131, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17hc1db0610ff212549E.exit.i" ] + %.sroa.032.4128 = phi i64 [ %.sroa.032.4172, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$17extend_from_slice17h48025144759d9b0aE.exit.i" ], [ %.sroa.032.4129, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17hc1db0610ff212549E.exit.i" ] + %.4126 = phi i64 [ %.4174, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$17extend_from_slice17h48025144759d9b0aE.exit.i" ], [ %.4127, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17hc1db0610ff212549E.exit.i" ] %225 = icmp eq ptr %.sroa.0107.4.ph, %72 br i1 %225, label %thread-pre-split, label %.lr.ph @@ -1181,7 +1182,7 @@ _ZN5alloc6string6String4push17h1a3e9179dd826612E.exit: ; preds = %"_ZN5alloc3vec 228: ; preds = %155 %switch68 = icmp eq i64 %.sroa.032.3, 0 - %229 = add i64 %.sroa.10.1159, 1 + %229 = add i64 %.sroa.10.3, 1 %.060 = select i1 %switch68, i64 %159, i64 %229 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %12) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) @@ -1251,10 +1252,10 @@ _ZN5alloc6string6String4push17h1a3e9179dd826612E.exit: ; preds = %"_ZN5alloc3vec 244: ; preds = %243 %245 = icmp ugt i32 %.sroa.4.0.i.ph, 127 - br i1 %245, label %246, label %.critedge72.thread180 + br i1 %245, label %246, label %.critedge72.thread175 -.critedge72.thread180: ; preds = %244 - %.4183 = add i64 %.3, 1 +.critedge72.thread175: ; preds = %244 + %.4178 = add i64 %.3, 1 br label %.critedge.i 246: ; preds = %244 diff --git a/bench/coreutils-rs/optimized/2pld3faqtpfekju7.ll b/bench/coreutils-rs/optimized/2pld3faqtpfekju7.ll index 8beb69d6859..415e2f5d051 100644 --- a/bench/coreutils-rs/optimized/2pld3faqtpfekju7.ll +++ b/bench/coreutils-rs/optimized/2pld3faqtpfekju7.ll @@ -74,9 +74,11 @@ define { i64, i64 } @"_ZN5alloc7raw_vec11finish_grow28_$u7b$$u7b$closure$u7d$$u7 ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define { i64, i64 } @"_ZN5alloc7raw_vec14handle_reserve28_$u7b$$u7b$closure$u7d$$u7d$17hf85711182d74cd22E"(i64 %0, i64 %1) unnamed_addr #1 { - %3 = insertvalue { i64, i64 } poison, i64 %0, 0 - %4 = insertvalue { i64, i64 } %3, i64 %1, 1 - ret { i64, i64 } %4 + %3 = icmp eq i64 %0, 0 + %.4 = select i1 %3, i64 undef, i64 %1 + %4 = insertvalue { i64, i64 } poison, i64 %0, 0 + %5 = insertvalue { i64, i64 } %4, i64 %.4, 1 + ret { i64, i64 } %5 } ; Function Attrs: nonlazybind uwtable @@ -285,14 +287,14 @@ define { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amortized17h3 %5 = alloca { i64, i64 }, align 8 %6 = alloca { i64, [2 x i64] }, align 8 %7 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %1, i64 %2) - %8 = extractvalue { i64, i1 } %7, 0 - %9 = extractvalue { i64, i1 } %7, 1 - br i1 %9, label %47, label %10 + %8 = extractvalue { i64, i1 } %7, 1 + %9 = extractvalue { i64, i1 } %7, 0 + br i1 %8, label %47, label %10 10: ; preds = %3 %11 = load i64, ptr %0, align 8, !noundef !4 %12 = shl i64 %11, 1 - %13 = tail call i64 @_ZN4core3cmp6max_by17h7eb8bff87bdd57eaE(i64 %12, i64 %8) + %13 = tail call i64 @_ZN4core3cmp6max_by17h7eb8bff87bdd57eaE(i64 %12, i64 %9) %14 = tail call i64 @_ZN4core3cmp6max_by17h7eb8bff87bdd57eaE(i64 4, i64 %13) %15 = tail call { i64, i64 } @_ZN4core5alloc6layout6Layout5array5inner17h6422abb72b797369E(i64 16, i64 8, i64 %14) %16 = extractvalue { i64, i64 } %15, 0 @@ -369,7 +371,7 @@ _ZN5alloc7raw_vec11finish_grow17h46900417d49c4aaaE.exit: ; preds = %33, %37 br label %47 47: ; preds = %_ZN5alloc7raw_vec11finish_grow17h46900417d49c4aaaE.exit.thread, %_ZN5alloc7raw_vec11finish_grow17h46900417d49c4aaaE.exit, %3, %44 - %.sroa.4.0 = phi i64 [ undef, %44 ], [ %8, %3 ], [ %42, %_ZN5alloc7raw_vec11finish_grow17h46900417d49c4aaaE.exit ], [ %30, %_ZN5alloc7raw_vec11finish_grow17h46900417d49c4aaaE.exit.thread ] + %.sroa.4.0 = phi i64 [ undef, %44 ], [ %9, %3 ], [ %42, %_ZN5alloc7raw_vec11finish_grow17h46900417d49c4aaaE.exit ], [ %30, %_ZN5alloc7raw_vec11finish_grow17h46900417d49c4aaaE.exit.thread ] %.sroa.0.0 = phi i64 [ -9223372036854775807, %44 ], [ 0, %3 ], [ %43, %_ZN5alloc7raw_vec11finish_grow17h46900417d49c4aaaE.exit ], [ %28, %_ZN5alloc7raw_vec11finish_grow17h46900417d49c4aaaE.exit.thread ] %48 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 %49 = insertvalue { i64, i64 } %48, i64 %.sroa.4.0, 1 @@ -382,14 +384,14 @@ define { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amortized17h4 %5 = alloca { i64, i64 }, align 8 %6 = alloca { i64, [2 x i64] }, align 8 %7 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %1, i64 %2) - %8 = extractvalue { i64, i1 } %7, 0 - %9 = extractvalue { i64, i1 } %7, 1 - br i1 %9, label %46, label %10 + %8 = extractvalue { i64, i1 } %7, 1 + %9 = extractvalue { i64, i1 } %7, 0 + br i1 %8, label %46, label %10 10: ; preds = %3 %11 = load i64, ptr %0, align 8, !noundef !4 %12 = shl i64 %11, 1 - %13 = tail call i64 @_ZN4core3cmp6max_by17h7eb8bff87bdd57eaE(i64 %12, i64 %8) + %13 = tail call i64 @_ZN4core3cmp6max_by17h7eb8bff87bdd57eaE(i64 %12, i64 %9) %14 = tail call i64 @_ZN4core3cmp6max_by17h7eb8bff87bdd57eaE(i64 8, i64 %13) %15 = tail call { i64, i64 } @_ZN4core5alloc6layout6Layout5array5inner17h6422abb72b797369E(i64 1, i64 1, i64 %14) %16 = extractvalue { i64, i64 } %15, 0 @@ -464,7 +466,7 @@ _ZN5alloc7raw_vec11finish_grow17h46900417d49c4aaaE.exit: ; preds = %32, %36 br label %46 46: ; preds = %_ZN5alloc7raw_vec11finish_grow17h46900417d49c4aaaE.exit.thread, %_ZN5alloc7raw_vec11finish_grow17h46900417d49c4aaaE.exit, %3, %43 - %.sroa.4.0 = phi i64 [ undef, %43 ], [ %8, %3 ], [ %41, %_ZN5alloc7raw_vec11finish_grow17h46900417d49c4aaaE.exit ], [ %29, %_ZN5alloc7raw_vec11finish_grow17h46900417d49c4aaaE.exit.thread ] + %.sroa.4.0 = phi i64 [ undef, %43 ], [ %9, %3 ], [ %41, %_ZN5alloc7raw_vec11finish_grow17h46900417d49c4aaaE.exit ], [ %29, %_ZN5alloc7raw_vec11finish_grow17h46900417d49c4aaaE.exit.thread ] %.sroa.0.0 = phi i64 [ -9223372036854775807, %43 ], [ 0, %3 ], [ %42, %_ZN5alloc7raw_vec11finish_grow17h46900417d49c4aaaE.exit ], [ %27, %_ZN5alloc7raw_vec11finish_grow17h46900417d49c4aaaE.exit.thread ] %47 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 %48 = insertvalue { i64, i64 } %47, i64 %.sroa.4.0, 1 @@ -477,14 +479,14 @@ define { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14grow_amortized17hb %5 = alloca { i64, i64 }, align 8 %6 = alloca { i64, [2 x i64] }, align 8 %7 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %1, i64 %2) - %8 = extractvalue { i64, i1 } %7, 0 - %9 = extractvalue { i64, i1 } %7, 1 - br i1 %9, label %47, label %10 + %8 = extractvalue { i64, i1 } %7, 1 + %9 = extractvalue { i64, i1 } %7, 0 + br i1 %8, label %47, label %10 10: ; preds = %3 %11 = load i64, ptr %0, align 8, !noundef !4 %12 = shl i64 %11, 1 - %13 = tail call i64 @_ZN4core3cmp6max_by17h7eb8bff87bdd57eaE(i64 %12, i64 %8) + %13 = tail call i64 @_ZN4core3cmp6max_by17h7eb8bff87bdd57eaE(i64 %12, i64 %9) %14 = tail call i64 @_ZN4core3cmp6max_by17h7eb8bff87bdd57eaE(i64 4, i64 %13) %15 = tail call { i64, i64 } @_ZN4core5alloc6layout6Layout5array5inner17h6422abb72b797369E(i64 24, i64 8, i64 %14) %16 = extractvalue { i64, i64 } %15, 0 @@ -561,7 +563,7 @@ _ZN5alloc7raw_vec11finish_grow17h46900417d49c4aaaE.exit: ; preds = %33, %37 br label %47 47: ; preds = %_ZN5alloc7raw_vec11finish_grow17h46900417d49c4aaaE.exit.thread, %_ZN5alloc7raw_vec11finish_grow17h46900417d49c4aaaE.exit, %3, %44 - %.sroa.4.0 = phi i64 [ undef, %44 ], [ %8, %3 ], [ %42, %_ZN5alloc7raw_vec11finish_grow17h46900417d49c4aaaE.exit ], [ %30, %_ZN5alloc7raw_vec11finish_grow17h46900417d49c4aaaE.exit.thread ] + %.sroa.4.0 = phi i64 [ undef, %44 ], [ %9, %3 ], [ %42, %_ZN5alloc7raw_vec11finish_grow17h46900417d49c4aaaE.exit ], [ %30, %_ZN5alloc7raw_vec11finish_grow17h46900417d49c4aaaE.exit.thread ] %.sroa.0.0 = phi i64 [ -9223372036854775807, %44 ], [ 0, %3 ], [ %43, %_ZN5alloc7raw_vec11finish_grow17h46900417d49c4aaaE.exit ], [ %28, %_ZN5alloc7raw_vec11finish_grow17h46900417d49c4aaaE.exit.thread ] %48 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 %49 = insertvalue { i64, i64 } %48, i64 %.sroa.4.0, 1 diff --git a/bench/coreutils-rs/optimized/2praalz1q844ogmk.ll b/bench/coreutils-rs/optimized/2praalz1q844ogmk.ll index fed88afd0c3..38ac92d8be4 100644 --- a/bench/coreutils-rs/optimized/2praalz1q844ogmk.ll +++ b/bench/coreutils-rs/optimized/2praalz1q844ogmk.ll @@ -127,10 +127,11 @@ define hidden void @"_ZN106_$LT$core..iter..adapters..GenericShunt$LT$I$C$R$GT$$ br label %37 36: ; preds = %"_ZN4core3ptr126drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$std..io..error..Error$GT$$GT$$GT$17heef3c0bcf465da16E.exit.i.i.i.i", %31 + %.sroa.710.2.ph.i.i = phi ptr [ %.sroa.2.0.copyload.i.i.i, %31 ], [ undef, %"_ZN4core3ptr126drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$std..io..error..Error$GT$$GT$$GT$17heef3c0bcf465da16E.exit.i.i.i.i" ] call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4), !noalias !26 store i64 %21, ptr %0, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 - store ptr %.sroa.2.0.copyload.i.i.i, ptr %.sroa.4.0..sroa_idx, align 8 + store ptr %.sroa.710.2.ph.i.i, ptr %.sroa.4.0..sroa_idx, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.5.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.9.i.i, i64 24, i1 false) br label %37 @@ -258,10 +259,11 @@ define hidden void @"_ZN115_$LT$core..iter..adapters..filter_map..FilterMap$LT$I br i1 %35, label %._crit_edge.i, label %.lr.ph.i 36: ; preds = %"_ZN4core3ptr126drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$std..io..error..Error$GT$$GT$$GT$17heef3c0bcf465da16E.exit.i.i.i", %31 + %.sroa.710.2.ph.i = phi ptr [ %.sroa.2.0.copyload.i.i, %31 ], [ undef, %"_ZN4core3ptr126drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$std..io..error..Error$GT$$GT$$GT$17heef3c0bcf465da16E.exit.i.i.i" ] call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %6), !noalias !72 store i64 %21, ptr %0, align 8, !alias.scope !95, !noalias !99 %.sroa.2.0..sroa_idx.i = getelementptr inbounds i8, ptr %0, i64 8 - store ptr %.sroa.2.0.copyload.i.i, ptr %.sroa.2.0..sroa_idx.i, align 8, !alias.scope !95, !noalias !99 + store ptr %.sroa.710.2.ph.i, ptr %.sroa.2.0..sroa_idx.i, align 8, !alias.scope !95, !noalias !99 %.sroa.3.0..sroa_idx.i = getelementptr inbounds i8, ptr %0, i64 16 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.3.0..sroa_idx.i, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.9.i, i64 24, i1 false), !alias.scope !100, !noalias !99 br label %_ZN4core4iter6traits8iterator8Iterator8try_fold17hdd2eb47b076cd813E.llvm.13037671334899486011.exit @@ -439,10 +441,11 @@ define hidden void @_ZN4core4iter6traits8iterator8Iterator8try_fold17hdd2eb47b07 br i1 %36, label %._crit_edge, label %9 37: ; preds = %"_ZN4core3ptr126drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$std..io..error..Error$GT$$GT$$GT$17heef3c0bcf465da16E.exit.i.i", %32 + %.sroa.710.2.ph = phi ptr [ %.sroa.2.0.copyload.i, %32 ], [ undef, %"_ZN4core3ptr126drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$std..io..error..Error$GT$$GT$$GT$17heef3c0bcf465da16E.exit.i.i" ] call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5), !noalias !135 store i64 %20, ptr %0, align 8, !alias.scope !157 %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 - store ptr %.sroa.2.0.copyload.i, ptr %.sroa.2.0..sroa_idx, align 8, !alias.scope !157 + store ptr %.sroa.710.2.ph, ptr %.sroa.2.0..sroa_idx, align 8, !alias.scope !157 %.sroa.3.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.3.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.9, i64 24, i1 false), !alias.scope !157 br label %38 diff --git a/bench/coreutils-rs/optimized/2t0y7t7n5luzzzcl.ll b/bench/coreutils-rs/optimized/2t0y7t7n5luzzzcl.ll index 2b6ad1c62f7..099b67ff6a4 100644 --- a/bench/coreutils-rs/optimized/2t0y7t7n5luzzzcl.ll +++ b/bench/coreutils-rs/optimized/2t0y7t7n5luzzzcl.ll @@ -3009,6 +3009,7 @@ common.resume: ; preds = %80, %44 br label %"_ZN5uu_cp15copy_attributes28_$u7b$$u7b$closure$u7d$$u7d$17hbc12e46120c5e1baE.exit.thread" "_ZN5uu_cp15copy_attributes28_$u7b$$u7b$closure$u7d$$u7d$17hbc12e46120c5e1baE.exit": ; preds = %34, %"_ZN119_$LT$uu_cp..Error$u20$as$u20$core..convert..From$LT$quick_error..Context$LT$$RF$str$C$std..io..error..Error$GT$$GT$$GT$4from17h75f556101e6d6a26E.exit.i" + %.sroa.11.0 = phi ptr [ %33, %"_ZN119_$LT$uu_cp..Error$u20$as$u20$core..convert..From$LT$quick_error..Context$LT$$RF$str$C$std..io..error..Error$GT$$GT$$GT$4from17h75f556101e6d6a26E.exit.i" ], [ undef, %34 ] %.sroa.10.0 = phi i64 [ %42, %"_ZN119_$LT$uu_cp..Error$u20$as$u20$core..convert..From$LT$quick_error..Context$LT$$RF$str$C$std..io..error..Error$GT$$GT$$GT$4from17h75f556101e6d6a26E.exit.i" ], [ %.sroa.536.i.sroa.6.0.copyload, %34 ] %.sroa.9.0 = phi ptr [ %49, %"_ZN119_$LT$uu_cp..Error$u20$as$u20$core..convert..From$LT$quick_error..Context$LT$$RF$str$C$std..io..error..Error$GT$$GT$$GT$4from17h75f556101e6d6a26E.exit.i" ], [ %.sroa.536.i.sroa.5.0.copyload, %34 ] %.sroa.6.0 = phi i64 [ %48, %"_ZN119_$LT$uu_cp..Error$u20$as$u20$core..convert..From$LT$quick_error..Context$LT$$RF$str$C$std..io..error..Error$GT$$GT$$GT$4from17h75f556101e6d6a26E.exit.i" ], [ %.sroa.536.i.sroa.0.0.copyload, %34 ] @@ -3036,7 +3037,7 @@ common.resume: ; preds = %80, %44 %.sroa.10.0..sroa_idx = getelementptr inbounds i8, ptr %16, i64 24 store i64 %.sroa.10.0, ptr %.sroa.10.0..sroa_idx, align 8 %.sroa.11.0..sroa_idx = getelementptr inbounds i8, ptr %16, i64 32 - store ptr %33, ptr %.sroa.11.0..sroa_idx, align 8 + store ptr %.sroa.11.0, ptr %.sroa.11.0..sroa_idx, align 8 %.sroa.12.0..sroa_idx = getelementptr inbounds i8, ptr %16, i64 40 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.12.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.12, i64 24, i1 false) call void @llvm.experimental.noalias.scope.decl(metadata !536) @@ -3129,7 +3130,7 @@ common.resume: ; preds = %80, %44 %.sroa.10.8..sroa.212.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %0, i64 24 store i64 %.sroa.10.0, ptr %.sroa.10.8..sroa.212.0..sroa_idx.sroa_idx, align 8 %.sroa.11.8..sroa.212.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %0, i64 32 - store ptr %33, ptr %.sroa.11.8..sroa.212.0..sroa_idx.sroa_idx, align 8 + store ptr %.sroa.11.0, ptr %.sroa.11.8..sroa.212.0..sroa_idx.sroa_idx, align 8 %.sroa.12.8..sroa.212.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %0, i64 40 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.12.8..sroa.212.0..sroa_idx.sroa_idx, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.12, i64 24, i1 false) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %.sroa.12) diff --git a/bench/coreutils-rs/optimized/2t9zoei8ixz2gngq.ll b/bench/coreutils-rs/optimized/2t9zoei8ixz2gngq.ll index b6a2701bdef..617395dad72 100644 --- a/bench/coreutils-rs/optimized/2t9zoei8ixz2gngq.ll +++ b/bench/coreutils-rs/optimized/2t9zoei8ixz2gngq.ll @@ -680,7 +680,7 @@ define hidden void @_ZN4core4iter6traits8iterator8Iterator8try_fold17h818a9a7220 unreachable common.resume: ; preds = %.body.i.i, %.body.i - %common.resume.op = phi { ptr, i32 } [ %46, %.body.i ], [ %eh.lpad-body.i.i, %.body.i.i ] + %common.resume.op = phi { ptr, i32 } [ %47, %.body.i ], [ %eh.lpad-body.i.i, %.body.i.i ] resume { ptr, i32 } %common.resume.op "_ZN104_$LT$core..iter..sources..from_fn..FromFn$LT$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1a5319c72dea9ddcE.exit": ; preds = %17, %"_ZN4core3ptr212drop_in_place$LT$core..iter..adapters..map..Map$LT$std..io..Split$LT$std..io..buffered..bufreader..BufReader$LT$std..fs..File$GT$$GT$$C$uu_wc..files0_iter$LT$std..fs..File$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hbdfd4d991d196cb6E.exit.i.i.i" @@ -691,86 +691,81 @@ common.resume: ; preds = %.body.i.i, %.body.i %.sroa.6.0.copyload = load ptr, ptr %.sroa.6.0..sroa_idx, align 8, !noalias !135 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7), !noalias !132 %.not = icmp eq i64 %.sroa.0.0.copyload13, -9223372036854775805 - br i1 %.not, label %"_ZN4core3ptr152drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$uu_wc..Input$C$alloc..boxed..Box$LT$dyn$u20$uucore..mods..error..UError$GT$$GT$$GT$$GT$17hd6e81cf99e636b07E.exit", label %39 + br i1 %.not, label %"_ZN4core3ptr152drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$uu_wc..Input$C$alloc..boxed..Box$LT$dyn$u20$uucore..mods..error..UError$GT$$GT$$GT$$GT$17hd6e81cf99e636b07E.exit", label %40 38: ; preds = %14 %.sroa.5.0..sroa_idx15 = getelementptr inbounds i8, ptr %7, i64 8 - %.sroa.5.0.copyload16 = load ptr, ptr %.sroa.5.0..sroa_idx15, align 8, !noalias !135 - %.sroa.6.0..sroa_idx17 = getelementptr inbounds i8, ptr %7, i64 16 - %.sroa.6.0.copyload18 = load ptr, ptr %.sroa.6.0..sroa_idx17, align 8, !noalias !135 + %39 = load <2 x ptr>, ptr %.sroa.5.0..sroa_idx15, align 8, !noalias !135 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7), !noalias !132 - br label %62 + br label %63 -39: ; preds = %"_ZN104_$LT$core..iter..sources..from_fn..FromFn$LT$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1a5319c72dea9ddcE.exit" +40: ; preds = %"_ZN104_$LT$core..iter..sources..from_fn..FromFn$LT$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1a5319c72dea9ddcE.exit" %.val.i = load ptr, ptr %3, align 8, !noalias !180, !noundef !8 - %40 = getelementptr inbounds i8, ptr %3, i64 8 - %.val5.i = load ptr, ptr %40, align 8, !noalias !180 - %41 = icmp eq ptr %.val.i, null - br i1 %41, label %"_ZN4core3ptr165drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$alloc..boxed..Box$LT$dyn$u20$uucore..mods..error..UError$GT$$GT$$GT$$GT$17h96f72780f9607d7dE.exit.i", label %42 - -42: ; preds = %39 - %43 = icmp ne ptr %.val5.i, null - tail call void @llvm.assume(i1 %43) - %44 = load ptr, ptr %.val5.i, align 8, !invariant.load !8, !noalias !184, !nonnull !8 - invoke void %44(ptr noundef nonnull align 1 %.val.i) - to label %54 unwind label %45, !noalias !184 - -45: ; preds = %42 - %46 = landingpad { ptr, i32 } + %41 = getelementptr inbounds i8, ptr %3, i64 8 + %.val5.i = load ptr, ptr %41, align 8, !noalias !180 + %42 = icmp eq ptr %.val.i, null + br i1 %42, label %"_ZN4core3ptr165drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$alloc..boxed..Box$LT$dyn$u20$uucore..mods..error..UError$GT$$GT$$GT$$GT$17h96f72780f9607d7dE.exit.i", label %43 + +43: ; preds = %40 + %44 = icmp ne ptr %.val5.i, null + tail call void @llvm.assume(i1 %44) + %45 = load ptr, ptr %.val5.i, align 8, !invariant.load !8, !noalias !184, !nonnull !8 + invoke void %45(ptr noundef nonnull align 1 %.val.i) + to label %55 unwind label %46, !noalias !184 + +46: ; preds = %43 + %47 = landingpad { ptr, i32 } cleanup - %47 = getelementptr inbounds i8, ptr %.val5.i, i64 8 - %48 = load i64, ptr %47, align 8, !range !87, !invariant.load !8, !noalias !189 - %49 = getelementptr inbounds i8, ptr %.val5.i, i64 16 - %50 = load i64, ptr %49, align 8, !range !91, !invariant.load !8, !noalias !189 - %51 = icmp ult i64 %50, -9223372036854775807 - tail call void @llvm.assume(i1 %51) - %52 = icmp eq i64 %48, 0 - br i1 %52, label %.body.i, label %53 - -53: ; preds = %45 - tail call void @__rust_dealloc(ptr noundef nonnull %.val.i, i64 noundef %48, i64 noundef %50) #18, !noalias !189 + %48 = getelementptr inbounds i8, ptr %.val5.i, i64 8 + %49 = load i64, ptr %48, align 8, !range !87, !invariant.load !8, !noalias !189 + %50 = getelementptr inbounds i8, ptr %.val5.i, i64 16 + %51 = load i64, ptr %50, align 8, !range !91, !invariant.load !8, !noalias !189 + %52 = icmp ult i64 %51, -9223372036854775807 + tail call void @llvm.assume(i1 %52) + %53 = icmp eq i64 %49, 0 + br i1 %53, label %.body.i, label %54 + +54: ; preds = %46 + tail call void @__rust_dealloc(ptr noundef nonnull %.val.i, i64 noundef %49, i64 noundef %51) #18, !noalias !189 br label %.body.i -54: ; preds = %42 - %55 = getelementptr inbounds i8, ptr %.val5.i, i64 8 - %56 = load i64, ptr %55, align 8, !range !87, !invariant.load !8, !noalias !192 - %57 = getelementptr inbounds i8, ptr %.val5.i, i64 16 - %58 = load i64, ptr %57, align 8, !range !91, !invariant.load !8, !noalias !192 - %59 = icmp ult i64 %58, -9223372036854775807 - tail call void @llvm.assume(i1 %59) - %60 = icmp eq i64 %56, 0 - br i1 %60, label %"_ZN4core3ptr165drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$alloc..boxed..Box$LT$dyn$u20$uucore..mods..error..UError$GT$$GT$$GT$$GT$17h96f72780f9607d7dE.exit.i", label %61 - -61: ; preds = %54 - tail call void @__rust_dealloc(ptr noundef nonnull %.val.i, i64 noundef %56, i64 noundef %58) #18, !noalias !192 +55: ; preds = %43 + %56 = getelementptr inbounds i8, ptr %.val5.i, i64 8 + %57 = load i64, ptr %56, align 8, !range !87, !invariant.load !8, !noalias !192 + %58 = getelementptr inbounds i8, ptr %.val5.i, i64 16 + %59 = load i64, ptr %58, align 8, !range !91, !invariant.load !8, !noalias !192 + %60 = icmp ult i64 %59, -9223372036854775807 + tail call void @llvm.assume(i1 %60) + %61 = icmp eq i64 %57, 0 + br i1 %61, label %"_ZN4core3ptr165drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$alloc..boxed..Box$LT$dyn$u20$uucore..mods..error..UError$GT$$GT$$GT$$GT$17h96f72780f9607d7dE.exit.i", label %62 + +62: ; preds = %55 + tail call void @__rust_dealloc(ptr noundef nonnull %.val.i, i64 noundef %57, i64 noundef %59) #18, !noalias !192 br label %"_ZN4core3ptr165drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$alloc..boxed..Box$LT$dyn$u20$uucore..mods..error..UError$GT$$GT$$GT$$GT$17h96f72780f9607d7dE.exit.i" -.body.i: ; preds = %53, %45 +.body.i: ; preds = %54, %46 store ptr %.sroa.5.0.copyload, ptr %3, align 8, !noalias !180 - store ptr %.sroa.6.0.copyload, ptr %40, align 8, !noalias !180 + store ptr %.sroa.6.0.copyload, ptr %41, align 8, !noalias !180 br label %common.resume -"_ZN4core3ptr165drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$alloc..boxed..Box$LT$dyn$u20$uucore..mods..error..UError$GT$$GT$$GT$$GT$17h96f72780f9607d7dE.exit.i": ; preds = %61, %54, %39 +"_ZN4core3ptr165drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$alloc..boxed..Box$LT$dyn$u20$uucore..mods..error..UError$GT$$GT$$GT$$GT$17h96f72780f9607d7dE.exit.i": ; preds = %62, %55, %40 store ptr %.sroa.5.0.copyload, ptr %3, align 8, !noalias !180 - store ptr %.sroa.6.0.copyload, ptr %40, align 8, !noalias !180 - br label %62 + store ptr %.sroa.6.0.copyload, ptr %41, align 8, !noalias !180 + br label %63 "_ZN4core3ptr152drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$uu_wc..Input$C$alloc..boxed..Box$LT$dyn$u20$uucore..mods..error..UError$GT$$GT$$GT$$GT$17hd6e81cf99e636b07E.exit": ; preds = %"_ZN104_$LT$core..iter..sources..from_fn..FromFn$LT$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1a5319c72dea9ddcE.exit.thread23", %"_ZN104_$LT$core..iter..sources..from_fn..FromFn$LT$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1a5319c72dea9ddcE.exit" store i64 -9223372036854775805, ptr %0, align 8, !alias.scope !195 - br label %63 + br label %65 -62: ; preds = %38, %"_ZN4core3ptr165drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$alloc..boxed..Box$LT$dyn$u20$uucore..mods..error..UError$GT$$GT$$GT$$GT$17h96f72780f9607d7dE.exit.i" - %.sroa.0.0.copyload2038 = phi i64 [ -9223372036854775806, %"_ZN4core3ptr165drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$alloc..boxed..Box$LT$dyn$u20$uucore..mods..error..UError$GT$$GT$$GT$$GT$17h96f72780f9607d7dE.exit.i" ], [ %.pre.pre.i.i, %38 ] - %.sroa.5.0.copyload2137 = phi ptr [ %.sroa.5.0.copyload, %"_ZN4core3ptr165drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$alloc..boxed..Box$LT$dyn$u20$uucore..mods..error..UError$GT$$GT$$GT$$GT$17h96f72780f9607d7dE.exit.i" ], [ %.sroa.5.0.copyload16, %38 ] - %.sroa.6.0.copyload2235 = phi ptr [ %.sroa.6.0.copyload, %"_ZN4core3ptr165drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$alloc..boxed..Box$LT$dyn$u20$uucore..mods..error..UError$GT$$GT$$GT$$GT$17h96f72780f9607d7dE.exit.i" ], [ %.sroa.6.0.copyload18, %38 ] - store i64 %.sroa.0.0.copyload2038, ptr %0, align 8, !alias.scope !198 +63: ; preds = %38, %"_ZN4core3ptr165drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$alloc..boxed..Box$LT$dyn$u20$uucore..mods..error..UError$GT$$GT$$GT$$GT$17h96f72780f9607d7dE.exit.i" + %.sroa.0.0.copyload2036 = phi i64 [ -9223372036854775806, %"_ZN4core3ptr165drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$alloc..boxed..Box$LT$dyn$u20$uucore..mods..error..UError$GT$$GT$$GT$$GT$17h96f72780f9607d7dE.exit.i" ], [ %.pre.pre.i.i, %38 ] + %64 = phi <2 x ptr> [ undef, %"_ZN4core3ptr165drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$alloc..boxed..Box$LT$dyn$u20$uucore..mods..error..UError$GT$$GT$$GT$$GT$17h96f72780f9607d7dE.exit.i" ], [ %39, %38 ] + store i64 %.sroa.0.0.copyload2036, ptr %0, align 8, !alias.scope !198 %.sroa.29.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 - store ptr %.sroa.5.0.copyload2137, ptr %.sroa.29.0..sroa_idx, align 8, !alias.scope !198 - %.sroa.310.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 - store ptr %.sroa.6.0.copyload2235, ptr %.sroa.310.0..sroa_idx, align 8, !alias.scope !198 - br label %63 + store <2 x ptr> %64, ptr %.sroa.29.0..sroa_idx, align 8, !alias.scope !198 + br label %65 -63: ; preds = %"_ZN4core3ptr152drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$uu_wc..Input$C$alloc..boxed..Box$LT$dyn$u20$uucore..mods..error..UError$GT$$GT$$GT$$GT$17hd6e81cf99e636b07E.exit", %62 +65: ; preds = %"_ZN4core3ptr152drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$uu_wc..Input$C$alloc..boxed..Box$LT$dyn$u20$uucore..mods..error..UError$GT$$GT$$GT$$GT$17hd6e81cf99e636b07E.exit", %63 ret void } diff --git a/bench/coreutils-rs/optimized/2vroer4nd2f1b54m.ll b/bench/coreutils-rs/optimized/2vroer4nd2f1b54m.ll index ae2368e3ebc..5c927f87c4d 100644 --- a/bench/coreutils-rs/optimized/2vroer4nd2f1b54m.ll +++ b/bench/coreutils-rs/optimized/2vroer4nd2f1b54m.ll @@ -15109,27 +15109,28 @@ _ZN4core3ptr19swap_nonoverlapping17h3c6ffe4f6a7551d1E.llvm.7442906621139507621.e define hidden { ptr, ptr } @"_ZN5alloc11collections11linked_list23LinkedList$LT$T$C$A$GT$14pop_front_node17h48c192ffb93fc147E.llvm.7442906621139507621"(ptr noalias noundef align 8 dereferenceable(24) %0) unnamed_addr #11 { %2 = load ptr, ptr %0, align 8, !noundef !4 %3 = icmp eq ptr %2, null - br i1 %3, label %13, label %4 + br i1 %3, label %14, label %4 4: ; preds = %1 - %5 = getelementptr inbounds i8, ptr %0, i64 16 - %6 = getelementptr inbounds i8, ptr %0, i64 8 - %7 = getelementptr inbounds i8, ptr %2, i64 24 - %8 = load ptr, ptr %7, align 8, !noalias !2774, !noundef !4 - store ptr %8, ptr %0, align 8, !noalias !2774 - %9 = icmp eq ptr %8, null - %10 = getelementptr inbounds i8, ptr %8, i64 32 - %.sink.i = select i1 %9, ptr %6, ptr %10 + %5 = getelementptr inbounds i8, ptr %0, i64 24 + %6 = getelementptr inbounds i8, ptr %0, i64 16 + %7 = getelementptr inbounds i8, ptr %0, i64 8 + %8 = getelementptr inbounds i8, ptr %2, i64 24 + %9 = load ptr, ptr %8, align 8, !noalias !2774, !noundef !4 + store ptr %9, ptr %0, align 8, !noalias !2774 + %10 = icmp eq ptr %9, null + %11 = getelementptr inbounds i8, ptr %9, i64 32 + %.sink.i = select i1 %10, ptr %7, ptr %11 store ptr null, ptr %.sink.i, align 8, !noalias !2774 - %11 = load i64, ptr %5, align 8, !noalias !2774, !noundef !4 - %12 = add i64 %11, -1 - store i64 %12, ptr %5, align 8, !noalias !2774 - br label %13 + %12 = load i64, ptr %6, align 8, !noalias !2774, !noundef !4 + %13 = add i64 %12, -1 + store i64 %13, ptr %6, align 8, !noalias !2774 + br label %14 -13: ; preds = %1, %4 - %14 = getelementptr inbounds i8, ptr %0, i64 24 +14: ; preds = %1, %4 + %.sroa.3.0 = phi ptr [ %5, %4 ], [ undef, %1 ] %15 = insertvalue { ptr, ptr } poison, ptr %2, 0 - %16 = insertvalue { ptr, ptr } %15, ptr %14, 1 + %16 = insertvalue { ptr, ptr } %15, ptr %.sroa.3.0, 1 ret { ptr, ptr } %16 } diff --git a/bench/coreutils-rs/optimized/2zjxva3p2avqok6n.ll b/bench/coreutils-rs/optimized/2zjxva3p2avqok6n.ll index ec3f79cf63a..be7d36d47e8 100644 --- a/bench/coreutils-rs/optimized/2zjxva3p2avqok6n.ll +++ b/bench/coreutils-rs/optimized/2zjxva3p2avqok6n.ll @@ -953,8 +953,8 @@ _ZN3std4sync4mpmc7context7Context10try_select17h575e5fea5660eecdE.exit: ; preds %89 = load atomic i64, ptr %88 acquire, align 8, !noalias !88 switch i64 %89, label %_ZN3std4sync4mpmc7context7Context10wait_until17h4bf656f2ae3b6de5E.exit.thread17 [ i64 0, label %90 - i64 1, label %.thread.loopexit40.i - i64 2, label %.thread.loopexit40.i + i64 1, label %.thread.loopexit42.i + i64 2, label %.thread.loopexit42.i ] 90: ; preds = %.split.us.i @@ -965,8 +965,8 @@ _ZN3std4sync4mpmc7context7Context10try_select17h575e5fea5660eecdE.exit: ; preds %91 = load atomic i64, ptr %88 acquire, align 8, !noalias !88 switch i64 %91, label %_ZN3std4sync4mpmc7context7Context10wait_until17h4bf656f2ae3b6de5E.exit.thread17 [ i64 0, label %92 - i64 1, label %.thread.loopexit40.i - i64 2, label %.thread.loopexit40.i + i64 1, label %.thread.loopexit42.i + i64 2, label %.thread.loopexit42.i ] 92: ; preds = %.split.i @@ -985,14 +985,14 @@ _ZN3std4sync4mpmc7context7Context10try_select17h575e5fea5660eecdE.exit: ; preds "_ZN77_$LT$std..sys..pal..unix..time..Timespec$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h6e44c7c4099b6ff7E.exit.i": ; preds = %97 %100 = cmpxchg ptr %88, i64 0, i64 1 acq_rel acquire, align 8, !noalias !88 %101 = extractvalue { i64, i1 } %100, 1 - br i1 %101, label %.thread.loopexit40.i, label %102 + br i1 %101, label %.thread.loopexit42.i, label %102 102: ; preds = %"_ZN77_$LT$std..sys..pal..unix..time..Timespec$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h6e44c7c4099b6ff7E.exit.i" %103 = extractvalue { i64, i1 } %100, 0 switch i64 %103, label %_ZN3std4sync4mpmc7context7Context10wait_until17h4bf656f2ae3b6de5E.exit.thread17 [ i64 0, label %107 - i64 1, label %.thread.loopexit40.i - i64 2, label %.thread.loopexit40.i + i64 1, label %.thread.loopexit42.i + i64 2, label %.thread.loopexit42.i ] select.unfold.i: ; preds = %97, %92 @@ -1006,17 +1006,17 @@ select.unfold.i: ; preds = %97, %92 tail call void @_ZN4core9panicking5panic17h44790a89027c670fE(ptr noalias noundef nonnull readonly align 1 @anon.4ad3c5e6e0ee4ebe506e6f023362a6a1.7, i64 noundef 40, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.4ad3c5e6e0ee4ebe506e6f023362a6a1.8) #19 unreachable -.thread.loopexit40.i: ; preds = %.split.i, %.split.i, %.split.us.i, %.split.us.i, %102, %102, %"_ZN77_$LT$std..sys..pal..unix..time..Timespec$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h6e44c7c4099b6ff7E.exit.i" +.thread.loopexit42.i: ; preds = %.split.i, %.split.i, %.split.us.i, %.split.us.i, %102, %102, %"_ZN77_$LT$std..sys..pal..unix..time..Timespec$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h6e44c7c4099b6ff7E.exit.i" call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) %108 = cmpxchg ptr %11, i32 0, i32 1 acquire monotonic, align 4, !noalias !91 %109 = extractvalue { i32, i1 } %108, 1 br i1 %109, label %_ZN3std3sys3pal4unix5locks11futex_mutex5Mutex4lock17h985bdbb4640079dbE.exit.i4, label %110 -110: ; preds = %.thread.loopexit40.i +110: ; preds = %.thread.loopexit42.i tail call void @_ZN3std3sys3pal4unix5locks11futex_mutex5Mutex14lock_contended17hf70df39e402d52e1E(ptr noundef nonnull align 4 %11), !noalias !91 br label %_ZN3std3sys3pal4unix5locks11futex_mutex5Mutex4lock17h985bdbb4640079dbE.exit.i4 -_ZN3std3sys3pal4unix5locks11futex_mutex5Mutex4lock17h985bdbb4640079dbE.exit.i4: ; preds = %110, %.thread.loopexit40.i +_ZN3std3sys3pal4unix5locks11futex_mutex5Mutex4lock17h985bdbb4640079dbE.exit.i4: ; preds = %110, %.thread.loopexit42.i %111 = tail call noundef i64 @_ZN4core4sync6atomic11atomic_load17h4448779d4912d139E.llvm.14175771983566341859(ptr noundef nonnull @_ZN3std9panicking11panic_count18GLOBAL_PANIC_COUNT17hc804604804a6cbf8E, i8 noundef 0), !noalias !94 %112 = and i64 %111, 9223372036854775807 %113 = icmp eq i64 %112, 0 @@ -1419,7 +1419,7 @@ _ZN3std4sync4mpmc5waker17current_thread_id5DUMMY7__getit17had567bd67086969cE.exi .lr.ph.i.i: ; preds = %"_ZN3std4sync4mpmc5waker5Waker10try_select28_$u7b$$u7b$closure$u7d$$u7d$17ha506275178352229E.exit.i.i", %"_ZN4core6result19Result$LT$T$C$E$GT$6expect17h3ff608c0ab48cedfE.exit.i" %50 = phi ptr [ %51, %"_ZN3std4sync4mpmc5waker5Waker10try_select28_$u7b$$u7b$closure$u7d$$u7d$17ha506275178352229E.exit.i.i" ], [ %48, %"_ZN4core6result19Result$LT$T$C$E$GT$6expect17h3ff608c0ab48cedfE.exit.i" ] - %.016.i.i = phi i64 [ %75, %"_ZN3std4sync4mpmc5waker5Waker10try_select28_$u7b$$u7b$closure$u7d$$u7d$17ha506275178352229E.exit.i.i" ], [ 0, %"_ZN4core6result19Result$LT$T$C$E$GT$6expect17h3ff608c0ab48cedfE.exit.i" ] + %.015.i.i = phi i64 [ %75, %"_ZN3std4sync4mpmc5waker5Waker10try_select28_$u7b$$u7b$closure$u7d$$u7d$17ha506275178352229E.exit.i.i" ], [ 0, %"_ZN4core6result19Result$LT$T$C$E$GT$6expect17h3ff608c0ab48cedfE.exit.i" ] %51 = getelementptr inbounds i8, ptr %50, i64 24 tail call void @llvm.experimental.noalias.scope.decl(metadata !172) %52 = load ptr, ptr %50, align 8, !alias.scope !172, !noalias !175, !nonnull !8, !noundef !8 @@ -1461,21 +1461,21 @@ _ZN3std4sync4mpmc7context7Context12store_packet17h71587165d6a8dce1E.exit.i.i.i: to label %.noexc5 unwind label %31 "_ZN3std4sync4mpmc5waker5Waker10try_select28_$u7b$$u7b$closure$u7d$$u7d$17ha506275178352229E.exit.i.i": ; preds = %55, %.lr.ph.i.i - %75 = add nuw nsw i64 %.016.i.i, 1 + %75 = add nuw nsw i64 %.015.i.i, 1 %76 = icmp eq ptr %51, %49 br i1 %76, label %"_ZN4core3ptr78drop_in_place$LT$core..option..Option$LT$std..sync..mpmc..waker..Entry$GT$$GT$17h48b76e99c677ecdeE.exit", label %.lr.ph.i.i .noexc5: ; preds = %73, %_ZN3std4sync4mpmc7context7Context12store_packet17h71587165d6a8dce1E.exit.i.i.i - %77 = icmp ult i64 %.016.i.i, %39 + %77 = icmp ult i64 %.015.i.i, %39 tail call void @llvm.assume(i1 %77) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) tail call void @llvm.experimental.noalias.scope.decl(metadata !180) %78 = load i64, ptr %38, align 8, !alias.scope !183, !noalias !184, !noundef !8 - %.not.i.i = icmp ugt i64 %78, %.016.i.i + %.not.i.i = icmp ugt i64 %78, %.015.i.i br i1 %.not.i.i, label %_ZN3std4sync4mpmc5waker5Waker10try_select17ha74c1d6f879212f7E.exit, label %79 79: ; preds = %.noexc5 - invoke void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6remove13assert_failed17hccb0accdd75e9128E"(i64 noundef %.016.i.i, i64 noundef %78, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.4ad3c5e6e0ee4ebe506e6f023362a6a1.18) #19 + invoke void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6remove13assert_failed17hccb0accdd75e9128E"(i64 noundef %.015.i.i, i64 noundef %78, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.4ad3c5e6e0ee4ebe506e6f023362a6a1.18) #19 to label %.noexc6 unwind label %31 .noexc6: ; preds = %79 @@ -1483,10 +1483,10 @@ _ZN3std4sync4mpmc7context7Context12store_packet17h71587165d6a8dce1E.exit.i.i.i: _ZN3std4sync4mpmc5waker5Waker10try_select17ha74c1d6f879212f7E.exit: ; preds = %.noexc5 %80 = load ptr, ptr %47, align 8, !alias.scope !183, !noalias !184, !nonnull !8, !noundef !8 - %81 = getelementptr inbounds { ptr, i64, ptr }, ptr %80, i64 %.016.i.i + %81 = getelementptr inbounds { ptr, i64, ptr }, ptr %80, i64 %.015.i.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(24) %81, i64 24, i1 false), !noalias !187 %82 = getelementptr inbounds i8, ptr %81, i64 24 - %83 = xor i64 %.016.i.i, -1 + %83 = xor i64 %.015.i.i, -1 %84 = add i64 %78, %83 %85 = mul i64 %84, 24 tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %81, ptr nonnull align 8 %82, i64 %85, i1 false), !noalias !188 diff --git a/bench/coreutils-rs/optimized/389ib4lq03w39x6a.ll b/bench/coreutils-rs/optimized/389ib4lq03w39x6a.ll index d885dcc101a..c652b084fcc 100644 --- a/bench/coreutils-rs/optimized/389ib4lq03w39x6a.ll +++ b/bench/coreutils-rs/optimized/389ib4lq03w39x6a.ll @@ -1198,36 +1198,36 @@ define void @"_ZN78_$LT$uucore..features..ranges..Range$u20$as$u20$core..str..tr br label %.lr.ph.split.split.i.i .lr.ph.split.split.i.i: ; preds = %28, %3 - %.sroa.3.0.i47.i.i = phi i64 [ %29, %28 ], [ %2, %3 ] + %.sroa.7.049.i.i = phi i64 [ %29, %28 ], [ %2, %3 ] %9 = phi i64 [ %25, %28 ], [ 0, %3 ] - %.49.i.i = getelementptr inbounds i8, ptr %1, i64 %9 - %10 = icmp ult i64 %.sroa.3.0.i47.i.i, 16 + %.sroa.0.050.i.i = getelementptr inbounds i8, ptr %1, i64 %9 + %10 = icmp ult i64 %.sroa.7.049.i.i, 16 br i1 %10, label %13, label %11 11: ; preds = %.lr.ph.split.split.i.i - %12 = tail call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef 45, ptr noalias noundef nonnull readonly align 1 %.49.i.i, i64 noundef %.sroa.3.0.i47.i.i), !noalias !191 + %12 = tail call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef 45, ptr noalias noundef nonnull readonly align 1 %.sroa.0.050.i.i, i64 noundef %.sroa.7.049.i.i), !noalias !191 br label %21 13: ; preds = %.lr.ph.split.split.i.i - %.not.i.i.i = icmp eq i64 %9, %2 + %.not.i.i.i = icmp eq i64 %.sroa.7.049.i.i, 0 br i1 %.not.i.i.i, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i, label %.lr.ph.i.i.i .lr.ph.i.i.i: ; preds = %13, %17 %.05.i.i.i = phi i64 [ %18, %17 ], [ 0, %13 ] - %14 = getelementptr inbounds [0 x i8], ptr %.49.i.i, i64 0, i64 %.05.i.i.i + %14 = getelementptr inbounds [0 x i8], ptr %.sroa.0.050.i.i, i64 0, i64 %.05.i.i.i %15 = load i8, ptr %14, align 1, !alias.scope !197, !noalias !191, !noundef !13 %16 = icmp eq i8 %15, 45 br i1 %16, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i, label %17 17: ; preds = %.lr.ph.i.i.i - %18 = add nuw i64 %.05.i.i.i, 1 - %exitcond.not.i.i.i = icmp eq i64 %18, %.sroa.3.0.i47.i.i + %18 = add nuw nsw i64 %.05.i.i.i, 1 + %exitcond.not.i.i.i = icmp eq i64 %18, %.sroa.7.049.i.i br i1 %exitcond.not.i.i.i, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i, label %.lr.ph.i.i.i _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i: ; preds = %17, %.lr.ph.i.i.i, %13 - %.0.lcssa.i.i.i = phi i64 [ 0, %13 ], [ %.sroa.3.0.i47.i.i, %17 ], [ %.05.i.i.i, %.lr.ph.i.i.i ] - %.sroa.0.0.i25.i.i = phi i64 [ 0, %13 ], [ 0, %17 ], [ 1, %.lr.ph.i.i.i ] - %19 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i25.i.i, 0 + %.0.lcssa.i.i.i = phi i64 [ 0, %13 ], [ %.sroa.7.049.i.i, %17 ], [ %.05.i.i.i, %.lr.ph.i.i.i ] + %.sroa.0.0.i24.i.i = phi i64 [ 0, %13 ], [ 0, %17 ], [ 1, %.lr.ph.i.i.i ] + %19 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i24.i.i, 0 %20 = insertvalue { i64, i64 } %19, i64 %.0.lcssa.i.i.i, 1 br label %21 @@ -2057,7 +2057,7 @@ define void @_ZN6uucore6parser10parse_glob8from_str17hb352925bc8c38089E(ptr noal br label %.lr.ph.i.i .lr.ph.i.i: ; preds = %36, %.lr.ph.i.preheader.i - %.011.i.i = phi i64 [ %38, %36 ], [ 0, %.lr.ph.i.preheader.i ] + %.010.i.i = phi i64 [ %38, %36 ], [ 0, %.lr.ph.i.preheader.i ] %34 = phi ptr [ %37, %36 ], [ %33, %.lr.ph.i.preheader.i ] %.val.i.i = load i32, ptr %34, align 4, !range !250, !noalias !324, !noundef !13 %35 = icmp eq i32 %.val.i.i, 93 @@ -2065,16 +2065,16 @@ define void @_ZN6uucore6parser10parse_glob8from_str17hb352925bc8c38089E(ptr noal 36: ; preds = %.lr.ph.i.i %37 = getelementptr inbounds i8, ptr %34, i64 4 - %38 = add nuw nsw i64 %.011.i.i, 1 + %38 = add nuw nsw i64 %.010.i.i, 1 %39 = icmp eq ptr %37, %13 br i1 %39, label %_ZN6uucore6parser10parse_glob12fix_negation17h99365c49fc9b1722E.exit, label %.lr.ph.i.i 40: ; preds = %.lr.ph.i.i - %41 = icmp ult i64 %.011.i.i, %31 + %41 = icmp ult i64 %.010.i.i, %31 tail call void @llvm.assume(i1 %41) store i32 33, ptr %25, align 4, !noalias !322 %42 = add i64 %.03671.i, 4 - %43 = add i64 %42, %.011.i.i + %43 = add i64 %42, %.010.i.i br label %.backedge.i .backedge.i: ; preds = %40, %24, %17 diff --git a/bench/coreutils-rs/optimized/3a0v4ncg7do5itt4.ll b/bench/coreutils-rs/optimized/3a0v4ncg7do5itt4.ll index 97de69c6413..e171d226ab0 100644 --- a/bench/coreutils-rs/optimized/3a0v4ncg7do5itt4.ll +++ b/bench/coreutils-rs/optimized/3a0v4ncg7do5itt4.ll @@ -443,18 +443,18 @@ define void @_ZN5uu_od9OdOptions3new17hc0b2ca266ee23b86E(ptr noalias nocapture n %63 = alloca ptr, align 8 %64 = tail call noundef align 16 dereferenceable_or_null(112) ptr @"_ZN12clap_builder4util8flat_map20FlatMap$LT$K$C$V$GT$3get17h943694a6707fdafeE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %1, ptr noalias noundef nonnull readonly align 1 @anon.9b33a3cde8d4dd4818b9db5641171ef1.20, i64 noundef 6), !noalias !63 %65 = icmp eq ptr %64, null - %.sink376.sroa.gep = getelementptr inbounds i8, ptr %19, i64 8 - %.sink376.sroa.gep380 = getelementptr inbounds i8, ptr %15, i64 8 - %.sink376.sroa.gep381 = getelementptr inbounds i8, ptr %11, i64 8 - %.sink376.sroa.gep383 = getelementptr inbounds i8, ptr %19, i64 32 - %.sink376.sroa.gep384 = getelementptr inbounds i8, ptr %15, i64 32 - %.sink376.sroa.gep385 = getelementptr inbounds i8, ptr %11, i64 32 - %.sink376.sroa.gep387 = getelementptr inbounds i8, ptr %19, i64 16 - %.sink376.sroa.gep388 = getelementptr inbounds i8, ptr %15, i64 16 - %.sink376.sroa.gep389 = getelementptr inbounds i8, ptr %11, i64 16 - %.sink376.sroa.gep391 = getelementptr inbounds i8, ptr %19, i64 24 - %.sink376.sroa.gep392 = getelementptr inbounds i8, ptr %15, i64 24 - %.sink376.sroa.gep393 = getelementptr inbounds i8, ptr %11, i64 24 + %.sink374.sroa.gep = getelementptr inbounds i8, ptr %19, i64 8 + %.sink374.sroa.gep378 = getelementptr inbounds i8, ptr %15, i64 8 + %.sink374.sroa.gep379 = getelementptr inbounds i8, ptr %11, i64 8 + %.sink374.sroa.gep381 = getelementptr inbounds i8, ptr %19, i64 32 + %.sink374.sroa.gep382 = getelementptr inbounds i8, ptr %15, i64 32 + %.sink374.sroa.gep383 = getelementptr inbounds i8, ptr %11, i64 32 + %.sink374.sroa.gep385 = getelementptr inbounds i8, ptr %19, i64 16 + %.sink374.sroa.gep386 = getelementptr inbounds i8, ptr %15, i64 16 + %.sink374.sroa.gep387 = getelementptr inbounds i8, ptr %11, i64 16 + %.sink374.sroa.gep389 = getelementptr inbounds i8, ptr %19, i64 24 + %.sink374.sroa.gep390 = getelementptr inbounds i8, ptr %15, i64 24 + %.sink374.sroa.gep391 = getelementptr inbounds i8, ptr %11, i64 24 br i1 %65, label %_ZN12clap_builder6parser5error12MatchesError6unwrap17hcf292193297ae9d5E.exit.thread, label %66 66: ; preds = %4 @@ -598,8 +598,8 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit: ; preds = %_ZN12clap_builder6p call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #17, !noalias !114 unreachable -common.resume: ; preds = %.thread, %471, %472, %.thread361, %473, %.body254, %.body.i.i, %108 - %common.resume.op = phi { ptr, i32 } [ %109, %108 ], [ %eh.lpad-body.i.i, %.body.i.i ], [ %.pn161359364, %.thread361 ], [ %.pn161, %471 ], [ %.pn161, %473 ], [ %.pn161, %472 ], [ %eh.lpad-body255, %.body254 ], [ %470, %.thread ] +common.resume: ; preds = %.thread, %471, %472, %.thread359, %473, %.body254, %.body.i.i, %108 + %common.resume.op = phi { ptr, i32 } [ %109, %108 ], [ %eh.lpad-body.i.i, %.body.i.i ], [ %.pn161357362, %.thread359 ], [ %.pn161, %471 ], [ %.pn161, %473 ], [ %.pn161, %472 ], [ %eh.lpad-body255, %.body254 ], [ %470, %.thread ] resume { ptr, i32 } %common.resume.op _ZN6uucore4mods5error12USimpleError3new17h7fe28c13b77122cbE.exit: ; preds = %.noexc.i @@ -613,7 +613,7 @@ _ZN6uucore4mods5error12USimpleError3new17h7fe28c13b77122cbE.exit: ; preds = %.no call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %63) br label %114 -114: ; preds = %486, %468, %.thread352, %_ZN6uucore4mods5error12USimpleError3new17h7fe28c13b77122cbE.exit +114: ; preds = %486, %468, %.thread350, %_ZN6uucore4mods5error12USimpleError3new17h7fe28c13b77122cbE.exit ret void 115: ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h23e9c13b31cc7eecE.exit170", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h23e9c13b31cc7eecE.exit" @@ -880,6 +880,7 @@ _ZN12clap_builder6parser5error12MatchesError6unwrap17hcf292193297ae9d5E.exit181. 199: ; preds = %200, %191 %.1151 = phi i64 [ %.0150, %191 ], [ %194, %200 ] %.sroa.068.0 = phi i64 [ 0, %191 ], [ %155, %200 ] + %.sroa.369.0 = phi i64 [ undef, %191 ], [ %.sroa.13.0.copyload, %200 ] call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %54) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %53) invoke void @_ZN5uu_od13parse_formats18parse_format_flags17h36e0411bfbcaf599E(ptr noalias nocapture noundef nonnull sret({ i64, [3 x i64] }) align 8 dereferenceable(32) %53, ptr noalias noundef nonnull readonly align 8 %2, i64 noundef %3) @@ -973,7 +974,7 @@ _ZN12clap_builder6parser5error12MatchesError6unwrap17hcf292193297ae9d5E.exit181. .noexc193: ; preds = %219 %221 = icmp eq ptr %220, null - br i1 %221, label %.thread333, label %222 + br i1 %221, label %.thread331, label %222 222: ; preds = %.noexc193 %223 = invoke noundef i128 @_ZN12clap_builder6parser7matches11matched_arg10MatchedArg13infer_type_id17hf290abf4832dccb4E(ptr noalias noundef nonnull readonly align 16 dereferenceable(112) %220, i128 noundef 24503081927999166500772401431235275638) @@ -989,7 +990,7 @@ _ZN12clap_builder6parser5error12MatchesError6unwrap17hcf292193297ae9d5E.exit181. .noexc195: ; preds = %225 %227 = icmp eq ptr %226, null - br i1 %227, label %.thread333, label %228 + br i1 %227, label %.thread331, label %228 228: ; preds = %.noexc195 tail call void @llvm.experimental.noalias.scope.decl(metadata !199) @@ -1011,15 +1012,15 @@ _ZN12clap_builder6parser5error12MatchesError6unwrap17hcf292193297ae9d5E.exit181. %241 = icmp ne i128 %240, 24503081927999166500772401431235275638 %.not19.i190 = icmp eq ptr %237, null %.not.i191 = or i1 %241, %.not19.i190 - br i1 %.not.i191, label %.invoke368, label %252 + br i1 %.not.i191, label %.invoke366, label %252 242: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h08893a176d2c6ed5E.exit.thread", %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h08893a176d2c6ed5E.exit" - %.sroa.5266.0328 = phi ptr [ %211, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h08893a176d2c6ed5E.exit.thread" ], [ %.sroa.5266.0.copyload, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h08893a176d2c6ed5E.exit" ] - %.sroa.8267.0327 = phi ptr [ @anon.d050c6915a0d531ba39e1a01fc477e83.23.llvm.15487262557860838494, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h08893a176d2c6ed5E.exit.thread" ], [ %.sroa.8267.0.copyload, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h08893a176d2c6ed5E.exit" ] + %.sroa.5266.0326 = phi ptr [ %211, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h08893a176d2c6ed5E.exit.thread" ], [ %.sroa.5266.0.copyload, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h08893a176d2c6ed5E.exit" ] + %.sroa.8267.0325 = phi ptr [ @anon.d050c6915a0d531ba39e1a01fc477e83.23.llvm.15487262557860838494, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h08893a176d2c6ed5E.exit.thread" ], [ %.sroa.8267.0.copyload, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h08893a176d2c6ed5E.exit" ] %243 = getelementptr inbounds i8, ptr %0, i64 8 - store ptr %.sroa.5266.0328, ptr %243, align 8 + store ptr %.sroa.5266.0326, ptr %243, align 8 %244 = getelementptr inbounds i8, ptr %0, i64 16 - store ptr %.sroa.8267.0327, ptr %244, align 8 + store ptr %.sroa.8267.0325, ptr %244, align 8 store i64 2, ptr %0, align 8 br label %459 @@ -1028,7 +1029,7 @@ _ZN12clap_builder6parser5error12MatchesError6unwrap17hcf292193297ae9d5E.exit181. invoke void @"_ZN4core3ptr89drop_in_place$LT$alloc..vec..Vec$LT$uu_od..parse_formats..ParsedFormatterItemInfo$GT$$GT$17hb69068be1deb223cE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %54) #16 to label %.body unwind label %441 -245: ; preds = %.invoke368, %.invoke, %347, %344, %341, %.thread345, %315, %312, %309, %306, %228, %225, %222, %219, %456, %428, %390, %385, %379, %334, %296, %287, %285, %281, %265, %252 +245: ; preds = %.invoke366, %.invoke, %347, %344, %341, %.thread343, %315, %312, %309, %306, %228, %225, %222, %219, %456, %428, %390, %385, %379, %334, %296, %287, %285, %281, %265, %252 %246 = landingpad { ptr, i32 } cleanup br label %.body238 @@ -1061,7 +1062,7 @@ _ZN12clap_builder6parser5error12MatchesError6unwrap17hcf292193297ae9d5E.exit181. store ptr @anon.f13c4c14c678e35a14317366f76eb135.4.llvm.1008919138123543537, ptr %19, align 8, !alias.scope !214, !noalias !217 br label %.invoke -.thread333: ; preds = %.noexc193, %.noexc195 +.thread331: ; preds = %.noexc193, %.noexc195 store i64 16, ptr %52, align 8 br label %254 @@ -1069,8 +1070,8 @@ _ZN12clap_builder6parser5error12MatchesError6unwrap17hcf292193297ae9d5E.exit181. %253 = invoke noundef i8 @_ZN12clap_builder6parser7matches11arg_matches10ArgMatches12value_source17h55a2d3e7b46ea176E(ptr noalias noundef nonnull readonly align 8 dereferenceable(56) %1, ptr noalias noundef nonnull readonly align 1 @anon.9b33a3cde8d4dd4818b9db5641171ef1.27, i64 noundef 5) to label %262 unwind label %245, !range !220 -254: ; preds = %264, %276, %.thread333 - %255 = phi i64 [ 16, %264 ], [ %278, %276 ], [ 16, %.thread333 ] +254: ; preds = %264, %276, %.thread331 + %255 = phi i64 [ 16, %264 ], [ %278, %276 ], [ 16, %.thread331 ] call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) %256 = load ptr, ptr %.sroa.430.0..sroa_idx, align 8, !nonnull !5, !noundef !5 %257 = load i64, ptr %.sroa.531.0..sroa_idx, align 8, !noundef !5 @@ -1129,27 +1130,27 @@ _ZN12clap_builder6parser5error12MatchesError6unwrap17hcf292193297ae9d5E.exit181. "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h5565b1329fdf0331E.exit": ; preds = %.preheader store i64 %.0.sroa.speculated.i.i.i, ptr %48, align 8 %279 = icmp eq i64 %255, 0 - br i1 %279, label %281, label %.thread337 + br i1 %279, label %281, label %.thread335 "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h5565b1329fdf0331E.exit.thread": ; preds = %254 store i64 1, ptr %48, align 8 %280 = icmp eq i64 %255, 0 - br i1 %280, label %281, label %.thread337 + br i1 %280, label %281, label %.thread335 -281: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h5565b1329fdf0331E.exit.thread", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h5565b1329fdf0331E.exit", %.thread337 +281: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h5565b1329fdf0331E.exit.thread", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h5565b1329fdf0331E.exit", %.thread335 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %47) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %46) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %45) %282 = invoke { ptr, i64 } @_ZN6uucore9util_name17hcdedd272bee2ebc0E() to label %287 unwind label %245 -.thread337: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h5565b1329fdf0331E.exit", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h5565b1329fdf0331E.exit.thread" - %.0.i201336339 = phi i64 [ 1, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h5565b1329fdf0331E.exit.thread" ], [ %.0.sroa.speculated.i.i.i, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h5565b1329fdf0331E.exit" ] - %283 = urem i64 %255, %.0.i201336339 +.thread335: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h5565b1329fdf0331E.exit", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h5565b1329fdf0331E.exit.thread" + %.0.i201334337 = phi i64 [ 1, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h5565b1329fdf0331E.exit.thread" ], [ %.0.sroa.speculated.i.i.i, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h5565b1329fdf0331E.exit" ] + %283 = urem i64 %255, %.0.i201334337 %284 = icmp eq i64 %283, 0 br i1 %284, label %285, label %281 -285: ; preds = %.thread337, %304 +285: ; preds = %.thread335, %304 %286 = invoke noundef zeroext i1 @_ZN12clap_builder6parser7matches11arg_matches10ArgMatches8get_flag17ha8645a16dff0d6d8E(ptr noalias noundef nonnull readonly align 8 dereferenceable(56) %1, ptr noalias noundef nonnull readonly align 1 @anon.9b33a3cde8d4dd4818b9db5641171ef1.37, i64 noundef 17) to label %306 unwind label %245 @@ -1212,7 +1213,7 @@ _ZN12clap_builder6parser5error12MatchesError6unwrap17hcf292193297ae9d5E.exit181. .noexc211: ; preds = %306 %308 = icmp eq ptr %307, null - br i1 %308, label %.thread345, label %309 + br i1 %308, label %.thread343, label %309 309: ; preds = %.noexc211 %310 = invoke noundef i128 @_ZN12clap_builder6parser7matches11matched_arg10MatchedArg13infer_type_id17hf290abf4832dccb4E(ptr noalias noundef nonnull readonly align 16 dereferenceable(112) %307, i128 noundef 24503081927999166500772401431235275638) @@ -1228,7 +1229,7 @@ _ZN12clap_builder6parser5error12MatchesError6unwrap17hcf292193297ae9d5E.exit181. .noexc213: ; preds = %312 %314 = icmp eq ptr %313, null - br i1 %314, label %.thread345, label %315 + br i1 %314, label %.thread343, label %315 315: ; preds = %.noexc213 call void @llvm.experimental.noalias.scope.decl(metadata !233) @@ -1250,7 +1251,7 @@ _ZN12clap_builder6parser5error12MatchesError6unwrap17hcf292193297ae9d5E.exit181. %328 = icmp ne i128 %327, 24503081927999166500772401431235275638 %.not19.i208 = icmp eq ptr %324, null %.not.i209 = or i1 %328, %.not19.i208 - br i1 %.not.i209, label %.invoke368, label %334 + br i1 %.not.i209, label %.invoke366, label %334 329: ; preds = %.noexc212 %.sroa.8.sroa.0.0.extract.trunc.i202 = trunc i128 %310 to i64 @@ -1289,15 +1290,15 @@ _ZN12clap_builder6parser5error12MatchesError6unwrap17hcf292193297ae9d5E.exit181. invoke void @_ZN5uu_od15parse_nrofbytes21parse_number_of_bytes17h20a54255ced6a4eaE(ptr noalias nocapture noundef nonnull sret({ i64, [3 x i64] }) align 8 dereferenceable(32) %42, ptr noalias noundef nonnull readonly align 1 %336, i64 noundef %338) to label %361 unwind label %245 -.thread345: ; preds = %.noexc213, %.noexc211, %364 +.thread343: ; preds = %.noexc213, %.noexc211, %364 %.sroa.067.0 = phi i64 [ 1, %364 ], [ 0, %.noexc211 ], [ 0, %.noexc213 ] %.sroa.3.0 = phi i64 [ %366, %364 ], [ undef, %.noexc211 ], [ undef, %.noexc213 ] %339 = invoke noundef align 16 dereferenceable_or_null(112) ptr @"_ZN12clap_builder4util8flat_map20FlatMap$LT$K$C$V$GT$3get17h943694a6707fdafeE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %1, ptr noalias noundef nonnull readonly align 1 @anon.9b33a3cde8d4dd4818b9db5641171ef1.39, i64 noundef 13) to label %.noexc228 unwind label %245 -.noexc228: ; preds = %.thread345 +.noexc228: ; preds = %.thread343 %340 = icmp eq ptr %339, null - br i1 %340, label %.thread352, label %341 + br i1 %340, label %.thread350, label %341 341: ; preds = %.noexc228 %342 = invoke noundef i128 @_ZN12clap_builder6parser7matches11matched_arg10MatchedArg13infer_type_id17hf290abf4832dccb4E(ptr noalias noundef nonnull readonly align 16 dereferenceable(112) %339, i128 noundef 24503081927999166500772401431235275638) @@ -1313,7 +1314,7 @@ _ZN12clap_builder6parser5error12MatchesError6unwrap17hcf292193297ae9d5E.exit181. .noexc230: ; preds = %344 %346 = icmp eq ptr %345, null - br i1 %346, label %.thread352, label %347 + br i1 %346, label %.thread350, label %347 347: ; preds = %.noexc230 call void @llvm.experimental.noalias.scope.decl(metadata !254) @@ -1335,13 +1336,13 @@ _ZN12clap_builder6parser5error12MatchesError6unwrap17hcf292193297ae9d5E.exit181. %360 = icmp ne i128 %359, 24503081927999166500772401431235275638 %.not19.i225 = icmp eq ptr %356, null %.not.i226 = or i1 %360, %.not19.i225 - br i1 %.not.i226, label %.invoke368, label %373 + br i1 %.not.i226, label %.invoke366, label %373 -.invoke368: ; preds = %.noexc196, %.noexc231, %.noexc214 +.invoke366: ; preds = %.noexc196, %.noexc231, %.noexc214 invoke void @_ZN4core6option13expect_failed17hea24986454718b4fE(ptr noalias noundef nonnull readonly align 1 @anon.d050c6915a0d531ba39e1a01fc477e83.4.llvm.15487262557860838494, i64 noundef 99, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.d050c6915a0d531ba39e1a01fc477e83.6.llvm.15487262557860838494) #15 - to label %.cont369 unwind label %245 + to label %.cont367 unwind label %245 -.cont369: ; preds = %.invoke368 +.cont367: ; preds = %.invoke366 unreachable 361: ; preds = %334 @@ -1353,7 +1354,7 @@ _ZN12clap_builder6parser5error12MatchesError6unwrap17hcf292193297ae9d5E.exit181. %365 = getelementptr inbounds i8, ptr %42, i64 8 %366 = load i64, ptr %365, align 8, !noundef !5 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) - br label %.thread345 + br label %.thread343 367: ; preds = %361 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %41) @@ -1392,17 +1393,17 @@ _ZN12clap_builder6parser5error12MatchesError6unwrap17hcf292193297ae9d5E.exit181. br label %.invoke .invoke: ; preds = %247, %329, %368 - %.sink376.sroa.phi = phi ptr [ %.sink376.sroa.gep, %247 ], [ %.sink376.sroa.gep380, %329 ], [ %.sink376.sroa.gep381, %368 ] - %.sink376.sroa.phi382 = phi ptr [ %.sink376.sroa.gep383, %247 ], [ %.sink376.sroa.gep384, %329 ], [ %.sink376.sroa.gep385, %368 ] - %.sink376.sroa.phi386 = phi ptr [ %.sink376.sroa.gep387, %247 ], [ %.sink376.sroa.gep388, %329 ], [ %.sink376.sroa.gep389, %368 ] - %.sink376.sroa.phi390 = phi ptr [ %.sink376.sroa.gep391, %247 ], [ %.sink376.sroa.gep392, %329 ], [ %.sink376.sroa.gep393, %368 ] - %.sink376 = phi ptr [ %19, %247 ], [ %15, %329 ], [ %11, %368 ] + %.sink374.sroa.phi = phi ptr [ %.sink374.sroa.gep, %247 ], [ %.sink374.sroa.gep378, %329 ], [ %.sink374.sroa.gep379, %368 ] + %.sink374.sroa.phi380 = phi ptr [ %.sink374.sroa.gep381, %247 ], [ %.sink374.sroa.gep382, %329 ], [ %.sink374.sroa.gep383, %368 ] + %.sink374.sroa.phi384 = phi ptr [ %.sink374.sroa.gep385, %247 ], [ %.sink374.sroa.gep386, %329 ], [ %.sink374.sroa.gep387, %368 ] + %.sink374.sroa.phi388 = phi ptr [ %.sink374.sroa.gep389, %247 ], [ %.sink374.sroa.gep390, %329 ], [ %.sink374.sroa.gep391, %368 ] + %.sink374 = phi ptr [ %19, %247 ], [ %15, %329 ], [ %11, %368 ] %.sink = phi ptr [ %18, %247 ], [ %14, %329 ], [ %10, %368 ] - store i64 2, ptr %.sink376.sroa.phi, align 8, !noalias !5 - store ptr null, ptr %.sink376.sroa.phi382, align 8, !noalias !5 - store ptr %.sink, ptr %.sink376.sroa.phi386, align 8, !noalias !5 - store i64 2, ptr %.sink376.sroa.phi390, align 8, !noalias !5 - invoke void @_ZN4core9panicking9panic_fmt17ha6effc2775a0749cE(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %.sink376, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.f13c4c14c678e35a14317366f76eb135.6.llvm.1008919138123543537) #15 + store i64 2, ptr %.sink374.sroa.phi, align 8, !noalias !5 + store ptr null, ptr %.sink374.sroa.phi380, align 8, !noalias !5 + store ptr %.sink, ptr %.sink374.sroa.phi384, align 8, !noalias !5 + store i64 2, ptr %.sink374.sroa.phi388, align 8, !noalias !5 + invoke void @_ZN4core9panicking9panic_fmt17ha6effc2775a0749cE(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %.sink374, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.f13c4c14c678e35a14317366f76eb135.6.llvm.1008919138123543537) #15 to label %.cont unwind label %245 .cont: ; preds = %.invoke @@ -1414,7 +1415,7 @@ _ZN12clap_builder6parser5error12MatchesError6unwrap17hcf292193297ae9d5E.exit181. %376 = icmp eq i64 %375, 1 br i1 %376, label %381, label %379 -.thread352: ; preds = %.noexc230, %.noexc228, %381, %387, %388, %389 +.thread350: ; preds = %.noexc230, %.noexc228, %381, %387, %388, %389 %.0149 = phi i8 [ 3, %389 ], [ 2, %388 ], [ 1, %387 ], [ 0, %381 ], [ 2, %.noexc228 ], [ 2, %.noexc230 ] %377 = load i64, ptr %52, align 8, !noundef !5 %378 = zext i1 %286 to i8 @@ -1424,7 +1425,7 @@ _ZN12clap_builder6parser5error12MatchesError6unwrap17hcf292193297ae9d5E.exit181. %.sroa.560.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 store i64 %.sroa.068.0, ptr %.sroa.560.0..sroa_idx, align 8 %.sroa.661.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 24 - store i64 %.sroa.13.0.copyload, ptr %.sroa.661.0..sroa_idx, align 8 + store i64 %.sroa.369.0, ptr %.sroa.661.0..sroa_idx, align 8 %.sroa.762.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 32 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.762.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(24) %56, i64 24, i1 false) %.sroa.8.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 56 @@ -1455,7 +1456,7 @@ _ZN12clap_builder6parser5error12MatchesError6unwrap17hcf292193297ae9d5E.exit181. %383 = load ptr, ptr %382, align 8, !nonnull !5, !noundef !5 %384 = load i8, ptr %383, align 1, !noundef !5 switch i8 %384, label %385 [ - i8 100, label %.thread352 + i8 100, label %.thread350 i8 120, label %387 i8 111, label %388 i8 110, label %389 @@ -1467,13 +1468,13 @@ _ZN12clap_builder6parser5error12MatchesError6unwrap17hcf292193297ae9d5E.exit181. to label %390 unwind label %245 387: ; preds = %381 - br label %.thread352 + br label %.thread350 388: ; preds = %381 - br label %.thread352 + br label %.thread350 389: ; preds = %381 - br label %.thread352 + br label %.thread350 390: ; preds = %385 %391 = extractvalue { i64, ptr } %386, 0 @@ -1496,10 +1497,10 @@ _ZN12clap_builder6parser5error12MatchesError6unwrap17hcf292193297ae9d5E.exit181. br label %398 398: ; preds = %414, %395 - %.sink378 = phi ptr [ %407, %414 ], [ %396, %395 ] + %.sink376 = phi ptr [ %407, %414 ], [ %396, %395 ] %anon.d050c6915a0d531ba39e1a01fc477e83.23.llvm.15487262557860838494.sink = phi ptr [ @anon.d050c6915a0d531ba39e1a01fc477e83.23.llvm.15487262557860838494, %414 ], [ %397, %395 ] %399 = getelementptr inbounds i8, ptr %0, i64 8 - store ptr %.sink378, ptr %399, align 8 + store ptr %.sink376, ptr %399, align 8 %400 = getelementptr inbounds i8, ptr %0, i64 16 store ptr %anon.d050c6915a0d531ba39e1a01fc477e83.23.llvm.15487262557860838494.sink, ptr %400, align 8 store i64 2, ptr %0, align 8 @@ -1641,7 +1642,7 @@ _ZN12clap_builder6parser5error12MatchesError6unwrap17hcf292193297ae9d5E.exit181. call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7), !noalias !281 br label %459 -441: ; preds = %.body254, %473, %.thread361, %469, %.body249, %.body243, %.body238, %.body +441: ; preds = %.body254, %473, %.thread359, %469, %.body249, %.body243, %.body238, %.body %442 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #17 @@ -1720,7 +1721,7 @@ _ZN12clap_builder6parser5error12MatchesError6unwrap17hcf292193297ae9d5E.exit181. .thread: ; preds = %469 %463 = load i64, ptr %.sroa.6.0..sroa_idx, align 16, !range !4, !noundef !5 %464 = icmp eq i64 %463, 2 - br i1 %464, label %.thread361, label %common.resume + br i1 %464, label %.thread359, label %common.resume 465: ; preds = %459 %466 = landingpad { ptr, i32 } @@ -1742,13 +1743,13 @@ _ZN12clap_builder6parser5error12MatchesError6unwrap17hcf292193297ae9d5E.exit181. to label %.thread unwind label %441 471: ; preds = %460 - br i1 %.not, label %common.resume, label %.thread361 + br i1 %.not, label %common.resume, label %.thread359 472: ; preds = %460 br i1 %.not, label %473, label %common.resume -.thread361: ; preds = %.thread, %471 - %.pn161359364 = phi { ptr, i32 } [ %.pn161, %471 ], [ %470, %.thread ] +.thread359: ; preds = %.thread, %471 + %.pn161357362 = phi { ptr, i32 } [ %.pn161, %471 ], [ %470, %.thread ] invoke void @"_ZN4core3ptr65drop_in_place$LT$alloc..vec..Vec$LT$alloc..string..String$GT$$GT$17h77747a76170165afE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %58) #16 to label %common.resume unwind label %441 diff --git a/bench/coreutils-rs/optimized/3ovky1nu4e8ycm16.ll b/bench/coreutils-rs/optimized/3ovky1nu4e8ycm16.ll index b376fa47c38..9f6ce7072e0 100644 --- a/bench/coreutils-rs/optimized/3ovky1nu4e8ycm16.ll +++ b/bench/coreutils-rs/optimized/3ovky1nu4e8ycm16.ll @@ -747,7 +747,7 @@ define void @_ZN7uu_test4eval17h6028ce91bb5637b2E(ptr noalias nocapture noundef i64 0, label %105 ] -default.unreachable747: ; preds = %126 +default.unreachable745: ; preds = %126 unreachable 103: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h7380ebc8c6be5739E.exit.thread", %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h7380ebc8c6be5739E.exit", %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h7380ebc8c6be5739E.exit" @@ -814,7 +814,7 @@ default.unreachable747: ; preds = %126 %127 = getelementptr inbounds i8, ptr %93, i64 8 %128 = load i64, ptr %127, align 8, !range !32, !noundef !5 %129 = getelementptr inbounds i8, ptr %93, i64 16 - switch i64 %128, label %default.unreachable747 [ + switch i64 %128, label %default.unreachable745 [ i64 0, label %181 i64 1, label %183 i64 2, label %185 @@ -924,11 +924,11 @@ default.unreachable747: ; preds = %126 %160 = icmp eq i32 %bcmp.i.i.fr, 0 %spec.select = select i1 %156, i8 1, i8 %147 %spec.select400 = select i1 %156, i8 %147, i8 0 - %spec.select740 = select i1 %160, i8 %spec.select400, i8 %spec.select + %spec.select738 = select i1 %160, i8 %spec.select400, i8 %spec.select br label %161 161: ; preds = %"_ZN82_$LT$std..ffi..os_str..OsString$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2eq17h8391a5d5dec531a6E.exit", %"_ZN82_$LT$std..ffi..os_str..OsString$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2eq17h8391a5d5dec531a6E.exit.thread" - %162 = phi i8 [ %spec.select650, %"_ZN82_$LT$std..ffi..os_str..OsString$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2eq17h8391a5d5dec531a6E.exit.thread" ], [ %spec.select740, %"_ZN82_$LT$std..ffi..os_str..OsString$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2eq17h8391a5d5dec531a6E.exit" ] + %162 = phi i8 [ %spec.select650, %"_ZN82_$LT$std..ffi..os_str..OsString$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2eq17h8391a5d5dec531a6E.exit.thread" ], [ %spec.select738, %"_ZN82_$LT$std..ffi..os_str..OsString$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2eq17h8391a5d5dec531a6E.exit" ] %163 = getelementptr inbounds i8, ptr %0, i64 8 store i8 %162, ptr %163, align 8 store i64 6, ptr %0, align 8 @@ -952,10 +952,10 @@ default.unreachable747: ; preds = %126 br label %138 170: ; preds = %158, %149 - %.sink756 = phi i64 [ %151, %158 ], [ %144, %149 ] + %.sink754 = phi i64 [ %151, %158 ], [ %144, %149 ] %.sink = phi i8 [ %154, %158 ], [ %147, %149 ] %.sroa.3346.sink = phi ptr [ %.sroa.3346, %158 ], [ %.sroa.3337, %149 ] - store i64 %.sink756, ptr %0, align 8 + store i64 %.sink754, ptr %0, align 8 %.sroa.2345.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 store i8 %.sink, ptr %.sroa.2345.0..sroa_idx, align 8 %.sroa.3346.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 9 @@ -1086,7 +1086,7 @@ default.unreachable747: ; preds = %126 br i1 %.not.i.i421, label %"_ZN82_$LT$std..ffi..os_str..OsString$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2eq17h8391a5d5dec531a6E.exit424", label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h7380ebc8c6be5739E.exit420._ZN82_$LT$std..ffi..os_str..OsString$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2eq17h8391a5d5dec531a6E.exit424.thread_crit_edge" "_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h7380ebc8c6be5739E.exit420._ZN82_$LT$std..ffi..os_str..OsString$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2eq17h8391a5d5dec531a6E.exit424.thread_crit_edge": ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h7380ebc8c6be5739E.exit420" - %.pre743 = load i64, ptr %89, align 8 + %.pre741 = load i64, ptr %89, align 8 br label %"_ZN82_$LT$std..ffi..os_str..OsString$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2eq17h8391a5d5dec531a6E.exit424.thread" "_ZN82_$LT$std..ffi..os_str..OsString$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2eq17h8391a5d5dec531a6E.exit424": ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h7380ebc8c6be5739E.exit420" @@ -1094,18 +1094,18 @@ default.unreachable747: ; preds = %126 %.val406 = load ptr, ptr %203, align 8, !nonnull !5, !noundef !5 %bcmp.i.i423 = tail call i32 @bcmp(ptr noundef nonnull readonly dereferenceable(2) %.val406, ptr noundef nonnull readonly dereferenceable(2) @anon.c04bd53a45afc667077bbf71749ceae5.28, i64 2), !alias.scope !229 %204 = icmp eq i32 %bcmp.i.i423, 0 - %.pre744 = load i64, ptr %89, align 8 + %.pre742 = load i64, ptr %89, align 8 br i1 %204, label %209, label %"_ZN82_$LT$std..ffi..os_str..OsString$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2eq17h8391a5d5dec531a6E.exit424.thread" "_ZN82_$LT$std..ffi..os_str..OsString$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2eq17h8391a5d5dec531a6E.exit424.thread": ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h7380ebc8c6be5739E.exit420._ZN82_$LT$std..ffi..os_str..OsString$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2eq17h8391a5d5dec531a6E.exit424.thread_crit_edge", %"_ZN82_$LT$std..ffi..os_str..OsString$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2eq17h8391a5d5dec531a6E.exit424" - %205 = phi i64 [ %.pre743, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h7380ebc8c6be5739E.exit420._ZN82_$LT$std..ffi..os_str..OsString$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2eq17h8391a5d5dec531a6E.exit424.thread_crit_edge" ], [ %.pre744, %"_ZN82_$LT$std..ffi..os_str..OsString$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2eq17h8391a5d5dec531a6E.exit424" ] + %205 = phi i64 [ %.pre741, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h7380ebc8c6be5739E.exit420._ZN82_$LT$std..ffi..os_str..OsString$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2eq17h8391a5d5dec531a6E.exit424.thread_crit_edge" ], [ %.pre742, %"_ZN82_$LT$std..ffi..os_str..OsString$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2eq17h8391a5d5dec531a6E.exit424" ] %206 = icmp eq i64 %205, 7 %207 = load i64, ptr %90, align 8, !range !179, !noundef !5 %208 = icmp eq i64 %207, 7 br i1 %206, label %.thread656, label %215 209: ; preds = %"_ZN82_$LT$std..ffi..os_str..OsString$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2eq17h8391a5d5dec531a6E.exit424" - %210 = icmp eq i64 %.pre744, 7 + %210 = icmp eq i64 %.pre742, 7 %211 = load i64, ptr %90, align 8, !range !179, !noundef !5 %212 = icmp ne i64 %211, 7 br i1 %210, label %223, label %227 @@ -1132,7 +1132,7 @@ default.unreachable747: ; preds = %126 store i8 %219, ptr %218, align 8 br label %226 -.thread751: ; preds = %227, %228 +.thread749: ; preds = %227, %228 %.0360.shrunk.ph = phi i1 [ %229, %228 ], [ false, %227 ] %220 = xor i1 %.0360.shrunk.ph, true %221 = getelementptr inbounds i8, ptr %0, i64 8 @@ -1147,24 +1147,24 @@ default.unreachable747: ; preds = %126 store i64 6, ptr %0, align 8 br label %"_ZN4core3ptr72drop_in_place$LT$core..option..Option$LT$uu_test..parser..Symbol$GT$$GT$17hadd08b0c45a5da25E.exit428" -226: ; preds = %.thread751, %.thread, %.thread658 +226: ; preds = %.thread749, %.thread, %.thread658 store i64 6, ptr %0, align 8 invoke fastcc void @"_ZN4core3ptr44drop_in_place$LT$uu_test..parser..Symbol$GT$17h8d94e6a132b6c7edE"(ptr noalias noundef nonnull align 8 dereferenceable(40) %89) to label %"._ZN4core3ptr72drop_in_place$LT$core..option..Option$LT$uu_test..parser..Symbol$GT$$GT$17hadd08b0c45a5da25E.exit428_crit_edge" unwind label %"_ZN4core3ptr72drop_in_place$LT$core..option..Option$LT$uu_test..parser..Symbol$GT$$GT$17hadd08b0c45a5da25E.exit426" "._ZN4core3ptr72drop_in_place$LT$core..option..Option$LT$uu_test..parser..Symbol$GT$$GT$17hadd08b0c45a5da25E.exit428_crit_edge": ; preds = %226 - %.pre746 = load i64, ptr %90, align 8, !range !179, !alias.scope !233 + %.pre744 = load i64, ptr %90, align 8, !range !179, !alias.scope !233 br label %"_ZN4core3ptr72drop_in_place$LT$core..option..Option$LT$uu_test..parser..Symbol$GT$$GT$17hadd08b0c45a5da25E.exit428" 227: ; preds = %209 - br i1 %212, label %228, label %.thread751 + br i1 %212, label %228, label %.thread749 228: ; preds = %227 %229 = call fastcc noundef zeroext i1 @"_ZN64_$LT$uu_test..parser..Symbol$u20$as$u20$core..cmp..PartialEq$GT$2eq17h898f6414df653cd1E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(40) %89, ptr noalias noundef nonnull readonly align 8 dereferenceable(40) %90) - br label %.thread751 + br label %.thread749 "_ZN4core3ptr72drop_in_place$LT$core..option..Option$LT$uu_test..parser..Symbol$GT$$GT$17hadd08b0c45a5da25E.exit428": ; preds = %223, %"._ZN4core3ptr72drop_in_place$LT$core..option..Option$LT$uu_test..parser..Symbol$GT$$GT$17hadd08b0c45a5da25E.exit428_crit_edge", %.thread656 - %230 = phi i64 [ %.pre746, %"._ZN4core3ptr72drop_in_place$LT$core..option..Option$LT$uu_test..parser..Symbol$GT$$GT$17hadd08b0c45a5da25E.exit428_crit_edge" ], [ %211, %223 ], [ %207, %.thread656 ] + %230 = phi i64 [ %.pre744, %"._ZN4core3ptr72drop_in_place$LT$core..option..Option$LT$uu_test..parser..Symbol$GT$$GT$17hadd08b0c45a5da25E.exit428_crit_edge" ], [ %211, %223 ], [ %207, %.thread656 ] call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %89) %231 = icmp eq i64 %230, 7 br i1 %231, label %"_ZN4core3ptr72drop_in_place$LT$core..option..Option$LT$uu_test..parser..Symbol$GT$$GT$17hadd08b0c45a5da25E.exit430", label %232 @@ -1460,8 +1460,8 @@ default.unreachable747: ; preds = %126 %325 = load i64, ptr %324, align 8, !noalias !252 %.sroa.044.0.i = select i1 %trunc116.i, ptr null, ptr %323 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %53), !noalias !252 - %.not.i189.i = icmp ne i64 %325, 3 - %or.cond.not.i = select i1 %trunc116.i, i1 true, i1 %.not.i189.i + %.not.i197.i = icmp ne i64 %325, 3 + %or.cond.not.i = select i1 %trunc116.i, i1 true, i1 %.not.i197.i br i1 %or.cond.not.i, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h00b4b67aa8ad6772E.exit156.thread.i", label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h00b4b67aa8ad6772E.exit.i" 326: ; preds = %316 @@ -1625,19 +1625,19 @@ default.unreachable747: ; preds = %126 to label %379 unwind label %377 370: ; preds = %"_ZN45_$LT$T$u20$as$u20$alloc..string..ToString$GT$9to_string17hd6ef12dcee04b392E.exit136.i", %326, %300 - %.sroa.14.0670.ph = phi i128 [ %.sroa.4158.0.copyload.i, %300 ], [ %.sroa.4160.0.copyload.i, %326 ], [ %.sroa.4.i.sroa.4.0.copyload, %"_ZN45_$LT$T$u20$as$u20$alloc..string..ToString$GT$9to_string17hd6ef12dcee04b392E.exit136.i" ] - %.sroa.7.sroa.0.0668.ph.in = phi i64 [ %.sroa.0157.0.copyload.i, %300 ], [ %.sroa.0159.0.copyload.i, %326 ], [ %.sroa.4.i.sroa.0.0.copyload, %"_ZN45_$LT$T$u20$as$u20$alloc..string..ToString$GT$9to_string17hd6ef12dcee04b392E.exit136.i" ] + %.sroa.7.sroa.0.0667.ph.in = phi i64 [ %.sroa.0157.0.copyload.i, %300 ], [ %.sroa.0159.0.copyload.i, %326 ], [ %.sroa.4.i.sroa.0.0.copyload, %"_ZN45_$LT$T$u20$as$u20$alloc..string..ToString$GT$9to_string17hd6ef12dcee04b392E.exit136.i" ] + %.sroa.934.sroa.5.0.ph = phi i128 [ %.sroa.4158.0.copyload.i, %300 ], [ %.sroa.4160.0.copyload.i, %326 ], [ %.sroa.4.i.sroa.4.0.copyload, %"_ZN45_$LT$T$u20$as$u20$alloc..string..ToString$GT$9to_string17hd6ef12dcee04b392E.exit136.i" ] %.sroa.029.0.ph = phi i64 [ 5, %300 ], [ 5, %326 ], [ 4, %"_ZN45_$LT$T$u20$as$u20$alloc..string..ToString$GT$9to_string17hd6ef12dcee04b392E.exit136.i" ] - %.sroa.7.sroa.8.sroa.0.0666.ph.in = lshr i64 %.sroa.7.sroa.0.0668.ph.in, 8 - %.sroa.7.sroa.8.sroa.0.0666.ph = trunc nuw i64 %.sroa.7.sroa.8.sroa.0.0666.ph.in to i56 - %.sroa.7.sroa.0.0668.ph = trunc i64 %.sroa.7.sroa.0.0668.ph.in to i8 + %.sroa.934.sroa.0.0.ph.in = lshr i64 %.sroa.7.sroa.0.0667.ph.in, 8 + %.sroa.934.sroa.0.0.ph = trunc nuw i64 %.sroa.934.sroa.0.0.ph.in to i56 + %.sroa.7.sroa.0.0667.ph = trunc i64 %.sroa.7.sroa.0.0667.ph.in to i8 store i64 %.sroa.029.0.ph, ptr %0, align 8 %.sroa.2122.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 - store i8 %.sroa.7.sroa.0.0668.ph, ptr %.sroa.2122.0..sroa_idx, align 8 + store i8 %.sroa.7.sroa.0.0667.ph, ptr %.sroa.2122.0..sroa_idx, align 8 %.sroa.3123.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 9 - store i56 %.sroa.7.sroa.8.sroa.0.0666.ph, ptr %.sroa.3123.0..sroa_idx, align 1 + store i56 %.sroa.934.sroa.0.0.ph, ptr %.sroa.3123.0..sroa_idx, align 1 %.sroa.3123.sroa.2.0..sroa.3123.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 - store i128 %.sroa.14.0670.ph, ptr %.sroa.3123.sroa.2.0..sroa.3123.0..sroa_idx.sroa_idx, align 8 + store i128 %.sroa.934.sroa.5.0.ph, ptr %.sroa.3123.sroa.2.0..sroa.3123.0..sroa_idx.sroa_idx, align 8 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %45), !noalias !313 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h04d097c4028d5039E.llvm.3940996947460080253"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %45, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %85) to label %.noexc445 unwind label %377 @@ -1785,12 +1785,12 @@ default.unreachable747: ; preds = %126 tail call void @llvm.assume(i1 %419) %420 = getelementptr inbounds { i64, [4 x i64] }, ptr %101, i64 %418 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %81, ptr noundef nonnull align 8 dereferenceable(40) %420, i64 40, i1 false), !noalias !219 - %.pr682 = load i64, ptr %81, align 8 - %421 = icmp eq i64 %.pr682, 3 + %.pr680 = load i64, ptr %81, align 8 + %421 = icmp eq i64 %.pr680, 3 br i1 %421, label %424, label %422 422: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h7380ebc8c6be5739E.exit419.thread", %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h7380ebc8c6be5739E.exit419" - %423 = phi i64 [ 7, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h7380ebc8c6be5739E.exit419.thread" ], [ %.pr682, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h7380ebc8c6be5739E.exit419" ] + %423 = phi i64 [ 7, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h7380ebc8c6be5739E.exit419.thread" ], [ %.pr680, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h7380ebc8c6be5739E.exit419" ] invoke fastcc void @_ZN7uu_test4eval19panic_cold_explicit17h0a9351665170aefeE() #12 to label %411 unwind label %604 @@ -1821,12 +1821,12 @@ default.unreachable747: ; preds = %126 tail call void @llvm.assume(i1 %428) %429 = getelementptr inbounds { i64, [4 x i64] }, ptr %101, i64 %427 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %79, ptr noundef nonnull align 8 dereferenceable(40) %429, i64 40, i1 false), !noalias !371 - %.pr683 = load i64, ptr %79, align 8 - %430 = icmp eq i64 %.pr683, 3 + %.pr681 = load i64, ptr %79, align 8 + %430 = icmp eq i64 %.pr681, 3 br i1 %430, label %433, label %431 431: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h7380ebc8c6be5739E.exit464.thread", %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h7380ebc8c6be5739E.exit464" - %432 = phi i64 [ 7, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h7380ebc8c6be5739E.exit464.thread" ], [ %.pr683, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h7380ebc8c6be5739E.exit464" ] + %432 = phi i64 [ 7, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h7380ebc8c6be5739E.exit464.thread" ], [ %.pr681, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h7380ebc8c6be5739E.exit464" ] invoke fastcc void @_ZN7uu_test4eval19panic_cold_explicit17h1de476cca778699bE() #12 to label %411 unwind label %600 @@ -2386,7 +2386,7 @@ default.unreachable747: ; preds = %126 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %76) tail call void @llvm.experimental.noalias.scope.decl(metadata !530) %609 = icmp eq i64 %97, 0 - br i1 %609, label %.thread753, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h7380ebc8c6be5739E.exit514" + br i1 %609, label %.thread751, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h7380ebc8c6be5739E.exit514" 610: ; preds = %130 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %73) @@ -2416,14 +2416,14 @@ default.unreachable747: ; preds = %126 tail call void @llvm.assume(i1 %619) %620 = getelementptr inbounds { i64, [4 x i64] }, ptr %101, i64 %618 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %76, ptr noundef nonnull align 8 dereferenceable(40) %620, i64 40, i1 false), !noalias !530 - %.pr692 = load i64, ptr %76, align 8 - switch i64 %.pr692, label %623 [ - i64 7, label %.thread753 - i64 3, label %.thread754 + %.pr690 = load i64, ptr %76, align 8 + switch i64 %.pr690, label %623 [ + i64 7, label %.thread751 + i64 3, label %.thread752 i64 6, label %630 ] -.thread753: ; preds = %608, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h7380ebc8c6be5739E.exit514" +.thread751: ; preds = %608, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h7380ebc8c6be5739E.exit514" %621 = getelementptr inbounds i8, ptr %0, i64 8 store i8 1, ptr %621, align 8 store i64 6, ptr %0, align 8 @@ -2437,8 +2437,8 @@ default.unreachable747: ; preds = %126 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.4.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.4, i64 24, i1 false) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %.sroa.4) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %74) - %.pre742 = load i64, ptr %76, align 8, !range !179 - switch i64 %.pre742, label %677 [ + %.pre740 = load i64, ptr %76, align 8, !range !179 + switch i64 %.pre740, label %677 [ i64 7, label %667 i64 3, label %675 ] @@ -2461,7 +2461,7 @@ default.unreachable747: ; preds = %126 invoke fastcc void @"_ZN45_$LT$T$u20$as$u20$alloc..string..ToString$GT$9to_string17hd6ef12dcee04b392E"(ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %75, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %74) to label %622 unwind label %633 -.thread754: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h7380ebc8c6be5739E.exit514" +.thread752: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h7380ebc8c6be5739E.exit514" %629 = getelementptr inbounds i8, ptr %76, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %77, ptr noundef nonnull align 8 dereferenceable(24) %629, i64 24, i1 false) br label %636 @@ -2488,7 +2488,7 @@ default.unreachable747: ; preds = %126 i64 3, label %678 ] -636: ; preds = %.thread754, %641, %631 +636: ; preds = %.thread752, %641, %631 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %76) %637 = getelementptr inbounds i8, ptr %78, i64 16 %.val404 = load i64, ptr %637, align 8, !noundef !5 @@ -2520,12 +2520,12 @@ default.unreachable747: ; preds = %126 %646 = getelementptr inbounds i8, ptr %77, i64 16 %647 = load i64, ptr %646, align 8 %648 = icmp ne i64 %647, 0 - %spec.select741 = xor i1 %645, %648 + %spec.select739 = xor i1 %645, %648 br label %649 649: ; preds = %"_ZN82_$LT$std..ffi..os_str..OsString$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2eq17h8391a5d5dec531a6E.exit520", %"_ZN82_$LT$std..ffi..os_str..OsString$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2eq17h8391a5d5dec531a6E.exit520.thread" %650 = phi ptr [ %638, %"_ZN82_$LT$std..ffi..os_str..OsString$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2eq17h8391a5d5dec531a6E.exit520.thread" ], [ %646, %"_ZN82_$LT$std..ffi..os_str..OsString$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2eq17h8391a5d5dec531a6E.exit520" ] - %651 = phi i1 [ %640, %"_ZN82_$LT$std..ffi..os_str..OsString$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2eq17h8391a5d5dec531a6E.exit520.thread" ], [ %spec.select741, %"_ZN82_$LT$std..ffi..os_str..OsString$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2eq17h8391a5d5dec531a6E.exit520" ] + %651 = phi i1 [ %640, %"_ZN82_$LT$std..ffi..os_str..OsString$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2eq17h8391a5d5dec531a6E.exit520.thread" ], [ %spec.select739, %"_ZN82_$LT$std..ffi..os_str..OsString$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2eq17h8391a5d5dec531a6E.exit520" ] %652 = getelementptr inbounds i8, ptr %0, i64 8 %653 = zext i1 %651 to i8 store i8 %653, ptr %652, align 8 @@ -2569,7 +2569,7 @@ default.unreachable747: ; preds = %126 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %78) br label %138 -667: ; preds = %.thread753, %622, %677, %675 +667: ; preds = %.thread751, %622, %677, %675 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %76) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %77) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13), !noalias !566 @@ -2656,12 +2656,12 @@ default.unreachable747: ; preds = %126 %696 = load ptr, ptr %100, align 8, !alias.scope !580, !noalias !577, !nonnull !5, !noundef !5 %697 = getelementptr inbounds { i64, [4 x i64] }, ptr %696, i64 %693 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %71, ptr noundef nonnull align 8 dereferenceable(40) %697, i64 40, i1 false), !noalias !580 - %.pr696 = load i64, ptr %71, align 8 - %698 = icmp eq i64 %.pr696, 3 + %.pr694 = load i64, ptr %71, align 8 + %698 = icmp eq i64 %.pr694, 3 br i1 %698, label %701, label %699 699: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h7380ebc8c6be5739E.exit529.thread", %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h7380ebc8c6be5739E.exit529" - %700 = phi i64 [ 7, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h7380ebc8c6be5739E.exit529.thread" ], [ %.pr696, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h7380ebc8c6be5739E.exit529" ] + %700 = phi i64 [ 7, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h7380ebc8c6be5739E.exit529.thread" ], [ %.pr694, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h7380ebc8c6be5739E.exit529" ] invoke fastcc void @_ZN7uu_test4eval19panic_cold_explicit17h71ec31305a46186dE() #12 to label %411 unwind label %763 @@ -2669,8 +2669,8 @@ default.unreachable747: ; preds = %126 %702 = getelementptr inbounds i8, ptr %71, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %72, ptr noundef nonnull align 8 dereferenceable(24) %702, i64 24, i1 false) call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %71) - %.not.i748 = icmp eq i64 %688, 2 - br i1 %.not.i748, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h00b4b67aa8ad6772E.exit", label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h00b4b67aa8ad6772E.exit605.thread" + %.not.i746 = icmp eq i64 %688, 2 + br i1 %.not.i746, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h00b4b67aa8ad6772E.exit", label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h00b4b67aa8ad6772E.exit605.thread" 703: ; preds = %.invoke, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h00b4b67aa8ad6772E.exit605.thread", %722 %704 = landingpad { ptr, i32 } diff --git a/bench/coreutils-rs/optimized/3ri12qup21vdgfw4.ll b/bench/coreutils-rs/optimized/3ri12qup21vdgfw4.ll index 27a2f9f0df7..ed1e567f19a 100644 --- a/bench/coreutils-rs/optimized/3ri12qup21vdgfw4.ll +++ b/bench/coreutils-rs/optimized/3ri12qup21vdgfw4.ll @@ -164,7 +164,13 @@ define hidden { i64, ptr } @_ZN4core4iter6traits8iterator8Iterator4find17hbe31ba tail call void @llvm.experimental.noalias.scope.decl(metadata !39) %4 = load ptr, ptr %0, align 8, !alias.scope !42, !noalias !45, !nonnull !16, !align !17, !noundef !16 %5 = tail call { i64, ptr } @_ZN4core4iter6traits8iterator8Iterator8try_fold17hce411379c7555e35E.llvm.6803770875864335718(ptr noalias noundef nonnull align 8 dereferenceable(16) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %1, ptr noalias noundef nonnull align 8 dereferenceable(8) %3), !noalias !51 - ret { i64, ptr } %5 + %6 = extractvalue { i64, ptr } %5, 1 + %7 = icmp eq ptr %6, null + %8 = extractvalue { i64, ptr } %5, 0 + %.sroa.0.0 = select i1 %7, i64 undef, i64 %8 + %9 = insertvalue { i64, ptr } poison, i64 %.sroa.0.0, 0 + %10 = insertvalue { i64, ptr } %9, ptr %6, 1 + ret { i64, ptr } %10 } ; Function Attrs: inlinehint nonlazybind uwtable @@ -708,8 +714,14 @@ define hidden { i64, ptr } @_ZN9itertools9Itertools13find_position17h33625faf71c %5 = getelementptr inbounds i8, ptr %3, i64 8 store i64 0, ptr %5, align 8 %6 = call { i64, ptr } @_ZN4core4iter6traits8iterator8Iterator8try_fold17hce411379c7555e35E.llvm.6803770875864335718(ptr noalias noundef nonnull align 8 dereferenceable(16) %0, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %4, ptr noalias noundef nonnull align 8 dereferenceable(8) %5), !noalias !133 + %7 = extractvalue { i64, ptr } %6, 1 + %8 = icmp eq ptr %7, null + %9 = extractvalue { i64, ptr } %6, 0 + %.sroa.0.0.i = select i1 %8, i64 undef, i64 %9 + %10 = insertvalue { i64, ptr } poison, i64 %.sroa.0.0.i, 0 + %11 = insertvalue { i64, ptr } %10, ptr %7, 1 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) - ret { i64, ptr } %6 + ret { i64, ptr } %11 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/coreutils-rs/optimized/3t7rjcjao5l6ltsf.ll b/bench/coreutils-rs/optimized/3t7rjcjao5l6ltsf.ll index b911e1e949c..998600ddb85 100644 --- a/bench/coreutils-rs/optimized/3t7rjcjao5l6ltsf.ll +++ b/bench/coreutils-rs/optimized/3t7rjcjao5l6ltsf.ll @@ -1130,7 +1130,7 @@ default.unreachable7: ; preds = %12 define internal fastcc void @_ZN10num_bigint6bigint6BigInt12from_biguint17hcc6dbcfeb5ddc4b2E(ptr noalias nocapture noundef writeonly align 8 dereferenceable(32) %0, i8 noundef %1, ptr noalias nocapture noundef align 8 dereferenceable(24) %2) unnamed_addr #0 personality ptr @rust_eh_personality { %4 = alloca { { { ptr, i64 }, i64 }, {} }, align 8 %5 = icmp eq i8 %1, 1 - br i1 %5, label %6, label %38 + br i1 %5, label %6, label %39 6: ; preds = %3 tail call void @llvm.experimental.noalias.scope.decl(metadata !213) @@ -1143,7 +1143,7 @@ define internal fastcc void @_ZN10num_bigint6bigint6BigInt12from_biguint17hcc6db %.sroa.5.0..sroa_idx.i = getelementptr inbounds i8, ptr %4, i64 16 store i64 2, ptr %.sroa.5.0..sroa_idx.i, align 8, !noalias !213 invoke void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$14extend_trusted17h1d9a4e70c56c3c7aE.llvm.469041376202038926"(ptr noalias noundef nonnull align 8 dereferenceable(24) %2, ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %4) - to label %.noexc unwind label %42 + to label %.noexc unwind label %43 .noexc: ; preds = %6 tail call void @llvm.experimental.noalias.scope.decl(metadata !216) @@ -1197,7 +1197,7 @@ define internal fastcc void @_ZN10num_bigint6bigint6BigInt12from_biguint17hcc6db 32: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$8truncate17h7a8406789308c251E.exit.i.i" %33 = invoke { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h7de441a984ce4930E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %2, i64 noundef %16) - to label %.noexc3 unwind label %42 + to label %.noexc3 unwind label %43 .noexc3: ; preds = %32 %34 = extractvalue { i64, i64 } %33, 0 @@ -1208,51 +1208,53 @@ define internal fastcc void @_ZN10num_bigint6bigint6BigInt12from_biguint17hcc6db 35: ; preds = %.noexc3 invoke void @_ZN5alloc7raw_vec17capacity_overflow17hbca7785f3bc15d50E() #16 - to label %.noexc4 unwind label %42 + to label %.noexc4 unwind label %43 .noexc4: ; preds = %35 unreachable 36: ; preds = %.noexc3 %37 = extractvalue { i64, i64 } %33, 1 - invoke void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef %34, i64 noundef %37) #16 - to label %.noexc5 unwind label %42 + %38 = icmp eq i64 %34, -9223372036854775807 + %.sroa.33.0.i.i.i.i.i = select i1 %38, i64 undef, i64 %37 + invoke void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef %34, i64 noundef %.sroa.33.0.i.i.i.i.i) #16 + to label %.noexc5 unwind label %43 .noexc5: ; preds = %36 unreachable _ZN10num_bigint7biguint7BigUint17assign_from_slice17h19ad959abb92a724E.exit: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$8truncate17h7a8406789308c251E.exit.i.i", %.noexc3 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) - br label %44 + br label %45 -38: ; preds = %3 - %39 = getelementptr inbounds i8, ptr %2, i64 16 - %40 = load i64, ptr %39, align 8, !noundef !5 - %41 = icmp eq i64 %40, 0 - %spec.select = select i1 %41, i8 1, i8 %1 - br label %44 +39: ; preds = %3 + %40 = getelementptr inbounds i8, ptr %2, i64 16 + %41 = load i64, ptr %40, align 8, !noundef !5 + %42 = icmp eq i64 %41, 0 + %spec.select = select i1 %42, i8 1, i8 %1 + br label %45 -42: ; preds = %36, %35, %32, %6 - %43 = landingpad { ptr, i32 } +43: ; preds = %36, %35, %32, %6 + %44 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr49drop_in_place$LT$num_bigint..biguint..BigUint$GT$17h90059a324b32667aE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %2) #14 - to label %48 unwind label %46 + to label %49 unwind label %47 -44: ; preds = %_ZN10num_bigint7biguint7BigUint17assign_from_slice17h19ad959abb92a724E.exit, %38 - %.0 = phi i8 [ 1, %_ZN10num_bigint7biguint7BigUint17assign_from_slice17h19ad959abb92a724E.exit ], [ %spec.select, %38 ] - %45 = getelementptr inbounds i8, ptr %0, i64 24 - store i8 %.0, ptr %45, align 8 +45: ; preds = %_ZN10num_bigint7biguint7BigUint17assign_from_slice17h19ad959abb92a724E.exit, %39 + %.0 = phi i8 [ 1, %_ZN10num_bigint7biguint7BigUint17assign_from_slice17h19ad959abb92a724E.exit ], [ %spec.select, %39 ] + %46 = getelementptr inbounds i8, ptr %0, i64 24 + store i8 %.0, ptr %46, align 8 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %2, i64 24, i1 false) ret void -46: ; preds = %42 - %47 = landingpad { ptr, i32 } +47: ; preds = %43 + %48 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #15 unreachable -48: ; preds = %42 - resume { ptr, i32 } %43 +49: ; preds = %43 + resume { ptr, i32 } %44 } ; Function Attrs: inlinehint nonlazybind uwtable diff --git a/bench/coreutils-rs/optimized/3t9yvjig6ylv2f7b.ll b/bench/coreutils-rs/optimized/3t9yvjig6ylv2f7b.ll index dc3859bc775..f8155ec08e9 100644 --- a/bench/coreutils-rs/optimized/3t9yvjig6ylv2f7b.ll +++ b/bench/coreutils-rs/optimized/3t9yvjig6ylv2f7b.ll @@ -1353,25 +1353,25 @@ define hidden { ptr, ptr } @_ZN8uu_split16n_chunks_by_byte17hcc1428d62b9948d0E(p %73 = getelementptr inbounds i8, ptr %13, i64 16 br label %.lr.ph.split.preheader -.loopexit161: ; preds = %.loopexit.split-lp162, %.loopexit161.split.us, %.loopexit161.split, %.loopexit159, %.body - %.pn93 = phi { ptr, i32 } [ %.pn, %.loopexit159 ], [ %eh.lpad-body, %.body ], [ %lpad.loopexit.split-lp164, %.loopexit.split-lp162 ], [ %lpad.loopexit163, %.loopexit161.split ], [ %lpad.loopexit163.us, %.loopexit161.split.us ] +.loopexit162: ; preds = %.loopexit.split-lp163, %.loopexit162.split.us, %.loopexit162.split, %.loopexit160, %.body + %.pn93 = phi { ptr, i32 } [ %.pn, %.loopexit160 ], [ %eh.lpad-body, %.body ], [ %lpad.loopexit.split-lp165, %.loopexit.split-lp163 ], [ %lpad.loopexit164, %.loopexit162.split ], [ %lpad.loopexit164.us, %.loopexit162.split.us ] invoke void @"_ZN4core3ptr61drop_in_place$LT$alloc..vec..Vec$LT$uu_split..OutFile$GT$$GT$17h3b92a1d4ae221e2cE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %25) #13 to label %.body112 unwind label %289 -.loopexit161.split: ; preds = %195 - %lpad.loopexit163 = landingpad { ptr, i32 } +.loopexit162.split: ; preds = %195 + %lpad.loopexit164 = landingpad { ptr, i32 } cleanup - br label %.loopexit161 + br label %.loopexit162 -.loopexit.split-lp162: ; preds = %74, %.loopexit, %.loopexit160 - %lpad.loopexit.split-lp164 = landingpad { ptr, i32 } +.loopexit.split-lp163: ; preds = %74, %.loopexit, %.loopexit161 + %lpad.loopexit.split-lp165 = landingpad { ptr, i32 } cleanup - br label %.loopexit161 + br label %.loopexit162 74: ; preds = %63 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %24) invoke void @"_ZN85_$LT$alloc..vec..Vec$LT$uu_split..OutFile$GT$$u20$as$u20$uu_split..ManageOutFiles$GT$4init17hc2c5e55b450bf880E"(ptr noalias nocapture noundef nonnull sret({ i64, [2 x i64] }) align 8 dereferenceable(24) %24, i64 noundef %spec.select106, ptr noalias noundef nonnull readonly align 8 dereferenceable(168) %0, i1 noundef zeroext false) - to label %134 unwind label %.loopexit.split-lp162 + to label %134 unwind label %.loopexit.split-lp163 .lr.ph: ; preds = %.noexc, %148, %152 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16), !noalias !212 @@ -1398,31 +1398,31 @@ define hidden { ptr, ptr } @_ZN8uu_split16n_chunks_by_byte17hcc1428d62b9948d0E(p br label %.lr.ph.split .lr.ph.split.us: ; preds = %.lr.ph, %133 - %.085197.us = phi i64 [ %100, %133 ], [ %.cast, %.lr.ph ] - %.sroa.0.0196.us = phi i64 [ %spec.select158.us, %133 ], [ 1, %.lr.ph ] - %88 = icmp ult i64 %.sroa.0.0196.us, %.0 + %.085198.us = phi i64 [ %100, %133 ], [ %.cast, %.lr.ph ] + %.sroa.0.0197.us = phi i64 [ %spec.select159.us, %133 ], [ 1, %.lr.ph ] + %88 = icmp ult i64 %.sroa.0.0197.us, %.0 %89 = zext i1 %88 to i64 - %spec.select158.us = add nuw i64 %.sroa.0.0196.us, %89 - %90 = add i64 %.sroa.0.0196.us, -1 + %spec.select159.us = add nuw i64 %.sroa.0.0197.us, %89 + %90 = add i64 %.sroa.0.0197.us, -1 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %23) store i64 0, ptr %23, align 8 store ptr inttoptr (i64 1 to ptr), ptr %75, align 8 store i64 0, ptr %76, align 8 - %.not.us = icmp eq i64 %.085197.us, 0 + %.not.us = icmp eq i64 %.085198.us, 0 br i1 %.not.us, label %.loopexit, label %91 91: ; preds = %.lr.ph.split.us %92 = icmp ugt i64 %67, %90 %93 = zext i1 %92 to i64 %94 = add i64 %66, %93 - %95 = icmp eq i64 %.sroa.0.0196.us, %.0 - %spec.select.us = select i1 %95, i64 %.085197.us, i64 %94 + %95 = icmp eq i64 %.sroa.0.0197.us, %.0 + %spec.select.us = select i1 %95, i64 %.085198.us, i64 %94 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) store ptr %28, ptr %21, align 8 store i64 %spec.select.us, ptr %77, align 8 invoke void @_ZN3std2io19default_read_to_end17h13b20556b8edbafaE(ptr noalias nocapture noundef nonnull sret({ i64, [1 x i64] }) align 8 dereferenceable(16) %22, ptr noalias noundef nonnull align 8 dereferenceable(16) %21, ptr noalias noundef nonnull align 8 dereferenceable(24) %23, i64 noundef 0, i64 undef) - to label %96 unwind label %.loopexit159.split.us + to label %96 unwind label %.loopexit160.split.us 96: ; preds = %91 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) @@ -1432,11 +1432,11 @@ define hidden { ptr, ptr } @_ZN8uu_split16n_chunks_by_byte17hcc1428d62b9948d0E(p 98: ; preds = %96 %99 = load i64, ptr %78, align 8, !noundef !5 - %100 = sub i64 %.085197.us, %99 + %100 = sub i64 %.085198.us, %99 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) %101 = load i64, ptr %65, align 8, !alias.scope !219, !noalias !222, !noundef !5 %102 = icmp ugt i64 %101, %90 - br i1 %102, label %103, label %.split199.us, !prof !225 + br i1 %102, label %103, label %.split200.us, !prof !225 103: ; preds = %98 %104 = load ptr, ptr %64, align 8, !alias.scope !219, !noalias !222, !nonnull !5, !noundef !5 @@ -1451,14 +1451,14 @@ define hidden { ptr, ptr } @_ZN8uu_split16n_chunks_by_byte17hcc1428d62b9948d0E(p 107: ; preds = %103 invoke void @"_ZN85_$LT$alloc..vec..Vec$LT$uu_split..OutFile$GT$$u20$as$u20$uu_split..ManageOutFiles$GT$18instantiate_writer17had82eb383717b819E"(ptr noalias nocapture noundef nonnull sret({ ptr, [1 x i64] }) align 8 dereferenceable(16) %17, ptr noalias noundef nonnull align 8 dereferenceable(24) %25, i64 noundef %90, ptr noalias noundef nonnull readonly align 8 dereferenceable(168) %0) - to label %"_ZN85_$LT$alloc..vec..Vec$LT$uu_split..OutFile$GT$$u20$as$u20$uu_split..ManageOutFiles$GT$10get_writer17h32cf95f0bba485dfE.exit.us" unwind label %.loopexit159.split.us + to label %"_ZN85_$LT$alloc..vec..Vec$LT$uu_split..OutFile$GT$$u20$as$u20$uu_split..ManageOutFiles$GT$10get_writer17h32cf95f0bba485dfE.exit.us" unwind label %.loopexit160.split.us "_ZN85_$LT$alloc..vec..Vec$LT$uu_split..OutFile$GT$$u20$as$u20$uu_split..ManageOutFiles$GT$10get_writer17h32cf95f0bba485dfE.exit.us": ; preds = %107 %.pr.us = load ptr, ptr %17, align 8 %108 = icmp eq ptr %.pr.us, null %109 = load ptr, ptr %79, align 8, !nonnull !5, !align !38 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) - br i1 %108, label %"_ZN85_$LT$alloc..vec..Vec$LT$uu_split..OutFile$GT$$u20$as$u20$uu_split..ManageOutFiles$GT$10get_writer17h32cf95f0bba485dfE.exit.us._crit_edge", label %.loopexit160 + br i1 %108, label %"_ZN85_$LT$alloc..vec..Vec$LT$uu_split..OutFile$GT$$u20$as$u20$uu_split..ManageOutFiles$GT$10get_writer17h32cf95f0bba485dfE.exit.us._crit_edge", label %.loopexit161 "_ZN85_$LT$alloc..vec..Vec$LT$uu_split..OutFile$GT$$u20$as$u20$uu_split..ManageOutFiles$GT$10get_writer17h32cf95f0bba485dfE.exit.us._crit_edge": ; preds = %"_ZN85_$LT$alloc..vec..Vec$LT$uu_split..OutFile$GT$$u20$as$u20$uu_split..ManageOutFiles$GT$10get_writer17h32cf95f0bba485dfE.exit.us" %.pre = load i64, ptr %109, align 8, !alias.scope !226, !noalias !229 @@ -1478,11 +1478,11 @@ define hidden { ptr, ptr } @_ZN8uu_split16n_chunks_by_byte17hcc1428d62b9948d0E(p 119: ; preds = %110 %120 = invoke noundef ptr @"_ZN3std2io8buffered9bufwriter18BufWriter$LT$W$GT$14write_all_cold17h71162d1963ee5bc2E"(ptr noalias noundef nonnull align 8 dereferenceable(48) %112, ptr noalias noundef nonnull readonly align 1 %113, i64 noundef %114) - to label %"_ZN83_$LT$std..io..buffered..bufwriter..BufWriter$LT$W$GT$$u20$as$u20$std..io..Write$GT$9write_all17h029c5d82f4b28412E.exit.us" unwind label %.loopexit159.split.us + to label %"_ZN83_$LT$std..io..buffered..bufwriter..BufWriter$LT$W$GT$$u20$as$u20$std..io..Write$GT$9write_all17h029c5d82f4b28412E.exit.us" unwind label %.loopexit160.split.us "_ZN83_$LT$std..io..buffered..bufwriter..BufWriter$LT$W$GT$$u20$as$u20$std..io..Write$GT$9write_all17h029c5d82f4b28412E.exit.us": ; preds = %119 %121 = icmp eq ptr %120, null - br i1 %121, label %126, label %.split205.us + br i1 %121, label %126, label %.split206.us "_ZN83_$LT$std..io..buffered..bufwriter..BufWriter$LT$W$GT$$u20$as$u20$std..io..Write$GT$9write_all17h029c5d82f4b28412E.exit.thread.us": ; preds = %110 %122 = getelementptr inbounds i8, ptr %112, i64 8 @@ -1497,7 +1497,7 @@ define hidden { ptr, ptr } @_ZN8uu_split16n_chunks_by_byte17hcc1428d62b9948d0E(p call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13), !noalias !231 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17ha4bb5b5b7e5d75bbE.llvm.1206798258238166277"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %13, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %23) - to label %.noexc122.us unwind label %.loopexit161.split.us + to label %.noexc122.us unwind label %.loopexit162.split.us .noexc122.us: ; preds = %126 %127 = load i64, ptr %80, align 8, !range !92, !noalias !231, !noundef !5 @@ -1517,19 +1517,19 @@ define hidden { ptr, ptr } @_ZN8uu_split16n_chunks_by_byte17hcc1428d62b9948d0E(p 133: ; preds = %131, %128, %.noexc122.us call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13), !noalias !231 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) - %.not.i.us = icmp ule i64 %spec.select158.us, %.0 - %or.cond156.us.not = select i1 %88, i1 %.not.i.us, i1 false - br i1 %or.cond156.us.not, label %.lr.ph.split.us, label %.thread + %.not.i.us = icmp ule i64 %spec.select159.us, %.0 + %or.cond157.us.not = select i1 %88, i1 %.not.i.us, i1 false + br i1 %or.cond157.us.not, label %.lr.ph.split.us, label %.thread -.loopexit159.split.us: ; preds = %119, %107, %91 +.loopexit160.split.us: ; preds = %119, %107, %91 %lpad.loopexit.us = landingpad { ptr, i32 } cleanup - br label %.loopexit159 + br label %.loopexit160 -.loopexit161.split.us: ; preds = %126 - %lpad.loopexit163.us = landingpad { ptr, i32 } +.loopexit162.split.us: ; preds = %126 + %lpad.loopexit164.us = landingpad { ptr, i32 } cleanup - br label %.loopexit161 + br label %.loopexit162 134: ; preds = %74 %135 = load i64, ptr %24, align 8, !range !92, !noundef !5 @@ -1592,19 +1592,19 @@ define hidden { ptr, ptr } @_ZN8uu_split16n_chunks_by_byte17hcc1428d62b9948d0E(p store i64 %135, ptr %25, align 8 store ptr %138, ptr %64, align 8 store ptr %140, ptr %65, align 8 - br label %.loopexit161 + br label %.loopexit162 .lr.ph.split: ; preds = %.lr.ph.split.preheader, %217 - %.085197 = phi i64 [ %192, %217 ], [ %.cast, %.lr.ph.split.preheader ] - %.sroa.0.0196 = phi i64 [ %spec.select158, %217 ], [ 1, %.lr.ph.split.preheader ] - %158 = icmp ult i64 %.sroa.0.0196, %.0 + %.085198 = phi i64 [ %192, %217 ], [ %.cast, %.lr.ph.split.preheader ] + %.sroa.0.0197 = phi i64 [ %spec.select159, %217 ], [ 1, %.lr.ph.split.preheader ] + %158 = icmp ult i64 %.sroa.0.0197, %.0 %159 = zext i1 %158 to i64 - %spec.select158 = add nuw i64 %.sroa.0.0196, %159 + %spec.select159 = add nuw i64 %.sroa.0.0197, %159 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %23) store i64 0, ptr %23, align 8 store ptr inttoptr (i64 1 to ptr), ptr %87, align 8 store i64 0, ptr %86, align 8 - %.not = icmp eq i64 %.085197, 0 + %.not = icmp eq i64 %.085198, 0 br i1 %.not, label %.loopexit, label %174 .thread: ; preds = %133, %217, %223 @@ -1649,23 +1649,23 @@ define hidden { ptr, ptr } @_ZN8uu_split16n_chunks_by_byte17hcc1428d62b9948d0E(p unreachable 174: ; preds = %.lr.ph.split - %175 = add i64 %.sroa.0.0196, -1 + %175 = add i64 %.sroa.0.0197, -1 %176 = icmp ugt i64 %67, %175 %177 = zext i1 %176 to i64 %178 = add i64 %66, %177 - %179 = icmp eq i64 %.sroa.0.0196, %.0 - %spec.select = select i1 %179, i64 %.085197, i64 %178 + %179 = icmp eq i64 %.sroa.0.0197, %.0 + %spec.select = select i1 %179, i64 %.085198, i64 %178 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) store ptr %28, ptr %21, align 8 store i64 %spec.select, ptr %85, align 8 invoke void @_ZN3std2io19default_read_to_end17h13b20556b8edbafaE(ptr noalias nocapture noundef nonnull sret({ i64, [1 x i64] }) align 8 dereferenceable(16) %22, ptr noalias noundef nonnull align 8 dereferenceable(16) %21, ptr noalias noundef nonnull align 8 dereferenceable(24) %23, i64 noundef 0, i64 undef) - to label %188 unwind label %.loopexit159.split + to label %188 unwind label %.loopexit160.split .loopexit: ; preds = %.lr.ph.split.us, %.lr.ph.split, %220 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14), !noalias !253 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17ha4bb5b5b7e5d75bbE.llvm.1206798258238166277"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %14, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %23) - to label %.noexc116 unwind label %.loopexit.split-lp162 + to label %.noexc116 unwind label %.loopexit.split-lp163 .noexc116: ; preds = %.loopexit %180 = getelementptr inbounds i8, ptr %14, i64 8 @@ -1684,20 +1684,20 @@ define hidden { ptr, ptr } @_ZN8uu_split16n_chunks_by_byte17hcc1428d62b9948d0E(p call void @__rust_dealloc(ptr noundef nonnull %187, i64 noundef %184, i64 noundef %181) #15 br label %223 -.loopexit159: ; preds = %.loopexit.split-lp, %.loopexit159.split.us, %.loopexit159.split, %.body133 - %.pn = phi { ptr, i32 } [ %eh.lpad-body134, %.body133 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ], [ %lpad.loopexit, %.loopexit159.split ], [ %lpad.loopexit.us, %.loopexit159.split.us ] +.loopexit160: ; preds = %.loopexit.split-lp, %.loopexit160.split.us, %.loopexit160.split, %.body133 + %.pn = phi { ptr, i32 } [ %eh.lpad-body134, %.body133 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ], [ %lpad.loopexit, %.loopexit160.split ], [ %lpad.loopexit.us, %.loopexit160.split.us ] invoke void @"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h1007a174d87f2f34E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %23) #13 - to label %.loopexit161 unwind label %289 + to label %.loopexit162 unwind label %289 -.loopexit159.split: ; preds = %174 +.loopexit160.split: ; preds = %174 %lpad.loopexit = landingpad { ptr, i32 } cleanup - br label %.loopexit159 + br label %.loopexit160 -.loopexit.split-lp: ; preds = %.split205.us, %213, %221, %.split199.us, %267, %270 +.loopexit.split-lp: ; preds = %.split206.us, %213, %221, %.split200.us, %267, %270 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup - br label %.loopexit159 + br label %.loopexit160 188: ; preds = %174 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) @@ -1707,18 +1707,18 @@ define hidden { ptr, ptr } @_ZN8uu_split16n_chunks_by_byte17hcc1428d62b9948d0E(p 190: ; preds = %188 %191 = load i64, ptr %84, align 8, !noundef !5 - %192 = sub i64 %.085197, %191 - %193 = icmp eq i64 %.sroa.0.0196, %4 + %192 = sub i64 %.085198, %191 + %193 = icmp eq i64 %.sroa.0.0197, %4 br i1 %193, label %213, label %195 -.split199.us: ; preds = %98 +.split200.us: ; preds = %98 invoke void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %90, i64 noundef %101, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.2256c04498b26e1e3096a86dc3b023b3.27.llvm.4692403356194470403) #12 to label %.noexc118 unwind label %.loopexit.split-lp -.noexc118: ; preds = %.split199.us +.noexc118: ; preds = %.split200.us unreachable -.split205.us: ; preds = %"_ZN83_$LT$std..io..buffered..bufwriter..BufWriter$LT$W$GT$$u20$as$u20$std..io..Write$GT$9write_all17h029c5d82f4b28412E.exit.us" +.split206.us: ; preds = %"_ZN83_$LT$std..io..buffered..bufwriter..BufWriter$LT$W$GT$$u20$as$u20$std..io..Write$GT$9write_all17h029c5d82f4b28412E.exit.us" %194 = invoke { ptr, ptr } @"_ZN6uucore4mods5error139_$LT$impl$u20$core..convert..From$LT$std..io..error..Error$GT$$u20$for$u20$alloc..boxed..Box$LT$dyn$u20$uucore..mods..error..UError$GT$$GT$4from17h5f3f9db19071e545E"(ptr noundef nonnull %120) to label %202 unwind label %.loopexit.split-lp @@ -1726,7 +1726,7 @@ define hidden { ptr, ptr } @_ZN8uu_split16n_chunks_by_byte17hcc1428d62b9948d0E(p call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13), !noalias !231 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17ha4bb5b5b7e5d75bbE.llvm.1206798258238166277"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %13, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %23) - to label %.noexc122 unwind label %.loopexit161.split + to label %.noexc122 unwind label %.loopexit162.split .noexc122: ; preds = %195 %196 = load i64, ptr %83, align 8, !range !92, !noalias !231, !noundef !5 @@ -1743,20 +1743,20 @@ define hidden { ptr, ptr } @_ZN8uu_split16n_chunks_by_byte17hcc1428d62b9948d0E(p call void @__rust_dealloc(ptr noundef nonnull %201, i64 noundef %198, i64 noundef %196) #15 br label %217 -202: ; preds = %.split205.us +202: ; preds = %.split206.us %203 = extractvalue { ptr, ptr } %194, 0 %204 = extractvalue { ptr, ptr } %194, 1 - br label %.loopexit160 + br label %.loopexit161 -.loopexit160: ; preds = %"_ZN85_$LT$alloc..vec..Vec$LT$uu_split..OutFile$GT$$u20$as$u20$uu_split..ManageOutFiles$GT$10get_writer17h32cf95f0bba485dfE.exit.us", %272, %248, %202 +.loopexit161: ; preds = %"_ZN85_$LT$alloc..vec..Vec$LT$uu_split..OutFile$GT$$u20$as$u20$uu_split..ManageOutFiles$GT$10get_writer17h32cf95f0bba485dfE.exit.us", %272, %248, %202 %.sroa.10.1 = phi ptr [ @anon.93245e8f96c02d2faf95a87e43b1c55b.45.llvm.15234885945043149955, %272 ], [ %250, %248 ], [ %204, %202 ], [ %109, %"_ZN85_$LT$alloc..vec..Vec$LT$uu_split..OutFile$GT$$u20$as$u20$uu_split..ManageOutFiles$GT$10get_writer17h32cf95f0bba485dfE.exit.us" ] %.sroa.011.1 = phi ptr [ %260, %272 ], [ %249, %248 ], [ %203, %202 ], [ %.pr.us, %"_ZN85_$LT$alloc..vec..Vec$LT$uu_split..OutFile$GT$$u20$as$u20$uu_split..ManageOutFiles$GT$10get_writer17h32cf95f0bba485dfE.exit.us" ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12), !noalias !260 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17ha4bb5b5b7e5d75bbE.llvm.1206798258238166277"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %12, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %23) - to label %.noexc125 unwind label %.loopexit.split-lp162 + to label %.noexc125 unwind label %.loopexit.split-lp163 -.noexc125: ; preds = %.loopexit160 +.noexc125: ; preds = %.loopexit161 %205 = getelementptr inbounds i8, ptr %12, i64 8 %206 = load i64, ptr %205, align 8, !range !92, !noalias !260, !noundef !5 %.not.i.i.i124 = icmp eq i64 %206, 0 @@ -1782,9 +1782,9 @@ define hidden { ptr, ptr } @_ZN8uu_split16n_chunks_by_byte17hcc1428d62b9948d0E(p 217: ; preds = %200, %197, %.noexc122 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13), !noalias !231 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) - %.not.i = icmp ule i64 %spec.select158, %.0 - %or.cond156.not = select i1 %158, i1 %.not.i, i1 false - br i1 %or.cond156.not, label %.lr.ph.split, label %.thread + %.not.i = icmp ule i64 %spec.select159, %.0 + %or.cond157.not = select i1 %158, i1 %.not.i, i1 false + br i1 %or.cond157.not, label %.lr.ph.split, label %.thread 218: ; preds = %213 %219 = icmp eq ptr %216, null @@ -1803,8 +1803,8 @@ define hidden { ptr, ptr } @_ZN8uu_split16n_chunks_by_byte17hcc1428d62b9948d0E(p call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) br label %.thread -.body112: ; preds = %277, %162, %224, %.loopexit161 - %.pn93.pn = phi { ptr, i32 } [ %.pn93, %.loopexit161 ], [ %163, %162 ], [ %225, %224 ], [ %278, %277 ] +.body112: ; preds = %277, %162, %224, %.loopexit162 + %.pn93.pn = phi { ptr, i32 } [ %.pn93, %.loopexit162 ], [ %163, %162 ], [ %225, %224 ], [ %278, %277 ] invoke void @"_ZN4core3ptr47drop_in_place$LT$std..io..stdio..StdoutLock$GT$17h9cddb17fcacb61b5E"(ptr noalias noundef nonnull align 8 dereferenceable(8) %27) #13 to label %35 unwind label %289 @@ -1877,7 +1877,7 @@ define hidden { ptr, ptr } @_ZN8uu_split16n_chunks_by_byte17hcc1428d62b9948d0E(p 248: ; preds = %221 %249 = extractvalue { ptr, ptr } %222, 0 %250 = extractvalue { ptr, ptr } %222, 1 - br label %.loopexit160 + br label %.loopexit161 251: ; preds = %.split.us %252 = landingpad { ptr, i32 } @@ -1887,7 +1887,7 @@ define hidden { ptr, ptr } @_ZN8uu_split16n_chunks_by_byte17hcc1428d62b9948d0E(p .body133: ; preds = %263, %251 %eh.lpad-body134 = phi { ptr, i32 } [ %252, %251 ], [ %264, %263 ] invoke void @"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h97bc9d31b2cc9982E"(ptr noalias noundef nonnull align 8 dereferenceable(8) %20) #13 - to label %.loopexit159 unwind label %289 + to label %.loopexit160 unwind label %289 .split.us: ; preds = %96, %188 %253 = phi ptr [ %84, %188 ], [ %78, %96 ] @@ -1973,7 +1973,7 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit: ; preds = %.split.us 272: ; preds = %.noexc135, %270 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8), !noalias !308 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) - br label %.loopexit160 + br label %.loopexit161 273: ; preds = %211, %207, %.noexc125 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12), !noalias !260 @@ -2023,7 +2023,7 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit: ; preds = %.split.us call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #14 unreachable -289: ; preds = %.body133, %.body112, %.loopexit159, %.loopexit161, %35 +289: ; preds = %.body133, %.body112, %.loopexit160, %.loopexit162, %35 %290 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #14 diff --git a/bench/coreutils-rs/optimized/3xc4e7mmntf4esc6.ll b/bench/coreutils-rs/optimized/3xc4e7mmntf4esc6.ll index d456c8aaf7e..ff9310080ef 100644 --- a/bench/coreutils-rs/optimized/3xc4e7mmntf4esc6.ll +++ b/bench/coreutils-rs/optimized/3xc4e7mmntf4esc6.ll @@ -2913,8 +2913,8 @@ _ZN3std4sync4mpmc7context7Context10try_select17h575e5fea5660eecdE.exit: ; preds %27 = load atomic i64, ptr %26 acquire, align 8, !noalias !183 switch i64 %27, label %_ZN3std4sync4mpmc7context7Context10wait_until17h4bf656f2ae3b6de5E.exit.thread5 [ i64 0, label %28 - i64 1, label %.thread.loopexit40.i - i64 2, label %.thread.loopexit40.i + i64 1, label %.thread.loopexit42.i + i64 2, label %.thread.loopexit42.i ] 28: ; preds = %.split.us.i @@ -2925,8 +2925,8 @@ _ZN3std4sync4mpmc7context7Context10try_select17h575e5fea5660eecdE.exit: ; preds %29 = load atomic i64, ptr %26 acquire, align 8, !noalias !183 switch i64 %29, label %_ZN3std4sync4mpmc7context7Context10wait_until17h4bf656f2ae3b6de5E.exit.thread5 [ i64 0, label %30 - i64 1, label %.thread.loopexit40.i - i64 2, label %.thread.loopexit40.i + i64 1, label %.thread.loopexit42.i + i64 2, label %.thread.loopexit42.i ] 30: ; preds = %.split.i @@ -2945,14 +2945,14 @@ _ZN3std4sync4mpmc7context7Context10try_select17h575e5fea5660eecdE.exit: ; preds "_ZN77_$LT$std..sys..pal..unix..time..Timespec$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h6e44c7c4099b6ff7E.exit.i": ; preds = %35 %38 = cmpxchg ptr %26, i64 0, i64 1 acq_rel acquire, align 8, !noalias !183 %39 = extractvalue { i64, i1 } %38, 1 - br i1 %39, label %.thread.loopexit40.i, label %40 + br i1 %39, label %.thread.loopexit42.i, label %40 40: ; preds = %"_ZN77_$LT$std..sys..pal..unix..time..Timespec$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h6e44c7c4099b6ff7E.exit.i" %41 = extractvalue { i64, i1 } %38, 0 switch i64 %41, label %_ZN3std4sync4mpmc7context7Context10wait_until17h4bf656f2ae3b6de5E.exit.thread5 [ i64 0, label %45 - i64 1, label %.thread.loopexit40.i - i64 2, label %.thread.loopexit40.i + i64 1, label %.thread.loopexit42.i + i64 2, label %.thread.loopexit42.i ] select.unfold.i: ; preds = %35, %30 @@ -2966,7 +2966,7 @@ select.unfold.i: ; preds = %35, %30 tail call void @_ZN4core9panicking5panic17h44790a89027c670fE(ptr noalias noundef nonnull readonly align 1 @anon.a8eeaf8233fbd2de92f933fd42f957d3.7, i64 noundef 40, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a8eeaf8233fbd2de92f933fd42f957d3.8) #18 unreachable -.thread.loopexit40.i: ; preds = %.split.i, %.split.i, %.split.us.i, %.split.us.i, %40, %40, %"_ZN77_$LT$std..sys..pal..unix..time..Timespec$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h6e44c7c4099b6ff7E.exit.i" +.thread.loopexit42.i: ; preds = %.split.i, %.split.i, %.split.us.i, %.split.us.i, %40, %40, %"_ZN77_$LT$std..sys..pal..unix..time..Timespec$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h6e44c7c4099b6ff7E.exit.i" call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) call fastcc void @_ZN3std4sync4mpmc5waker9SyncWaker10unregister17h3e2583f705eca2b5E(ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 %9, i64 noundef %6) @@ -2977,11 +2977,11 @@ select.unfold.i: ; preds = %35, %30 _ZN3std4sync4mpmc7context7Context10wait_until17h4bf656f2ae3b6de5E.exit.thread5: ; preds = %.split.i, %.split.us.i, %40, %"_ZN4core3ptr50drop_in_place$LT$std..sync..mpmc..waker..Entry$GT$17haf330feb39221a2cE.exit" ret void -48: ; preds = %.thread.loopexit40.i +48: ; preds = %.thread.loopexit42.i tail call void @_ZN4core6option13unwrap_failed17hcb3a256a9f1ca882E(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a8eeaf8233fbd2de92f933fd42f957d3.9) #18 unreachable -49: ; preds = %.thread.loopexit40.i +49: ; preds = %.thread.loopexit42.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(24) %3, i64 24, i1 false) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) tail call void @llvm.experimental.noalias.scope.decl(metadata !186) @@ -3048,8 +3048,8 @@ _ZN3std4sync4mpmc7context7Context10try_select17h575e5fea5660eecdE.exit: ; preds %27 = load atomic i64, ptr %26 acquire, align 8, !noalias !199 switch i64 %27, label %_ZN3std4sync4mpmc7context7Context10wait_until17h4bf656f2ae3b6de5E.exit.thread5 [ i64 0, label %28 - i64 1, label %.thread.loopexit40.i - i64 2, label %.thread.loopexit40.i + i64 1, label %.thread.loopexit42.i + i64 2, label %.thread.loopexit42.i ] 28: ; preds = %.split.us.i @@ -3060,8 +3060,8 @@ _ZN3std4sync4mpmc7context7Context10try_select17h575e5fea5660eecdE.exit: ; preds %29 = load atomic i64, ptr %26 acquire, align 8, !noalias !199 switch i64 %29, label %_ZN3std4sync4mpmc7context7Context10wait_until17h4bf656f2ae3b6de5E.exit.thread5 [ i64 0, label %30 - i64 1, label %.thread.loopexit40.i - i64 2, label %.thread.loopexit40.i + i64 1, label %.thread.loopexit42.i + i64 2, label %.thread.loopexit42.i ] 30: ; preds = %.split.i @@ -3080,14 +3080,14 @@ _ZN3std4sync4mpmc7context7Context10try_select17h575e5fea5660eecdE.exit: ; preds "_ZN77_$LT$std..sys..pal..unix..time..Timespec$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h6e44c7c4099b6ff7E.exit.i": ; preds = %35 %38 = cmpxchg ptr %26, i64 0, i64 1 acq_rel acquire, align 8, !noalias !199 %39 = extractvalue { i64, i1 } %38, 1 - br i1 %39, label %.thread.loopexit40.i, label %40 + br i1 %39, label %.thread.loopexit42.i, label %40 40: ; preds = %"_ZN77_$LT$std..sys..pal..unix..time..Timespec$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h6e44c7c4099b6ff7E.exit.i" %41 = extractvalue { i64, i1 } %38, 0 switch i64 %41, label %_ZN3std4sync4mpmc7context7Context10wait_until17h4bf656f2ae3b6de5E.exit.thread5 [ i64 0, label %45 - i64 1, label %.thread.loopexit40.i - i64 2, label %.thread.loopexit40.i + i64 1, label %.thread.loopexit42.i + i64 2, label %.thread.loopexit42.i ] select.unfold.i: ; preds = %35, %30 @@ -3101,7 +3101,7 @@ select.unfold.i: ; preds = %35, %30 tail call void @_ZN4core9panicking5panic17h44790a89027c670fE(ptr noalias noundef nonnull readonly align 1 @anon.a8eeaf8233fbd2de92f933fd42f957d3.7, i64 noundef 40, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a8eeaf8233fbd2de92f933fd42f957d3.8) #18 unreachable -.thread.loopexit40.i: ; preds = %.split.i, %.split.i, %.split.us.i, %.split.us.i, %40, %40, %"_ZN77_$LT$std..sys..pal..unix..time..Timespec$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h6e44c7c4099b6ff7E.exit.i" +.thread.loopexit42.i: ; preds = %.split.i, %.split.i, %.split.us.i, %.split.us.i, %40, %40, %"_ZN77_$LT$std..sys..pal..unix..time..Timespec$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h6e44c7c4099b6ff7E.exit.i" call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) call fastcc void @_ZN3std4sync4mpmc5waker9SyncWaker10unregister17h3e2583f705eca2b5E(ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 %9, i64 noundef %6) @@ -3112,11 +3112,11 @@ select.unfold.i: ; preds = %35, %30 _ZN3std4sync4mpmc7context7Context10wait_until17h4bf656f2ae3b6de5E.exit.thread5: ; preds = %.split.i, %.split.us.i, %40, %"_ZN4core3ptr50drop_in_place$LT$std..sync..mpmc..waker..Entry$GT$17haf330feb39221a2cE.exit" ret void -48: ; preds = %.thread.loopexit40.i +48: ; preds = %.thread.loopexit42.i tail call void @_ZN4core6option13unwrap_failed17hcb3a256a9f1ca882E(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a8eeaf8233fbd2de92f933fd42f957d3.9) #18 unreachable -49: ; preds = %.thread.loopexit40.i +49: ; preds = %.thread.loopexit42.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(24) %3, i64 24, i1 false) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) tail call void @llvm.experimental.noalias.scope.decl(metadata !202) @@ -3183,8 +3183,8 @@ _ZN3std4sync4mpmc7context7Context10try_select17h575e5fea5660eecdE.exit: ; preds %27 = load atomic i64, ptr %26 acquire, align 8, !noalias !215 switch i64 %27, label %_ZN3std4sync4mpmc7context7Context10wait_until17h4bf656f2ae3b6de5E.exit.thread5 [ i64 0, label %28 - i64 1, label %.thread.loopexit40.i - i64 2, label %.thread.loopexit40.i + i64 1, label %.thread.loopexit42.i + i64 2, label %.thread.loopexit42.i ] 28: ; preds = %.split.us.i @@ -3195,8 +3195,8 @@ _ZN3std4sync4mpmc7context7Context10try_select17h575e5fea5660eecdE.exit: ; preds %29 = load atomic i64, ptr %26 acquire, align 8, !noalias !215 switch i64 %29, label %_ZN3std4sync4mpmc7context7Context10wait_until17h4bf656f2ae3b6de5E.exit.thread5 [ i64 0, label %30 - i64 1, label %.thread.loopexit40.i - i64 2, label %.thread.loopexit40.i + i64 1, label %.thread.loopexit42.i + i64 2, label %.thread.loopexit42.i ] 30: ; preds = %.split.i @@ -3215,14 +3215,14 @@ _ZN3std4sync4mpmc7context7Context10try_select17h575e5fea5660eecdE.exit: ; preds "_ZN77_$LT$std..sys..pal..unix..time..Timespec$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h6e44c7c4099b6ff7E.exit.i": ; preds = %35 %38 = cmpxchg ptr %26, i64 0, i64 1 acq_rel acquire, align 8, !noalias !215 %39 = extractvalue { i64, i1 } %38, 1 - br i1 %39, label %.thread.loopexit40.i, label %40 + br i1 %39, label %.thread.loopexit42.i, label %40 40: ; preds = %"_ZN77_$LT$std..sys..pal..unix..time..Timespec$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h6e44c7c4099b6ff7E.exit.i" %41 = extractvalue { i64, i1 } %38, 0 switch i64 %41, label %_ZN3std4sync4mpmc7context7Context10wait_until17h4bf656f2ae3b6de5E.exit.thread5 [ i64 0, label %45 - i64 1, label %.thread.loopexit40.i - i64 2, label %.thread.loopexit40.i + i64 1, label %.thread.loopexit42.i + i64 2, label %.thread.loopexit42.i ] select.unfold.i: ; preds = %35, %30 @@ -3236,7 +3236,7 @@ select.unfold.i: ; preds = %35, %30 tail call void @_ZN4core9panicking5panic17h44790a89027c670fE(ptr noalias noundef nonnull readonly align 1 @anon.a8eeaf8233fbd2de92f933fd42f957d3.7, i64 noundef 40, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a8eeaf8233fbd2de92f933fd42f957d3.8) #18 unreachable -.thread.loopexit40.i: ; preds = %.split.i, %.split.i, %.split.us.i, %.split.us.i, %40, %40, %"_ZN77_$LT$std..sys..pal..unix..time..Timespec$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h6e44c7c4099b6ff7E.exit.i" +.thread.loopexit42.i: ; preds = %.split.i, %.split.i, %.split.us.i, %.split.us.i, %40, %40, %"_ZN77_$LT$std..sys..pal..unix..time..Timespec$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h6e44c7c4099b6ff7E.exit.i" call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) call fastcc void @_ZN3std4sync4mpmc5waker9SyncWaker10unregister17h3e2583f705eca2b5E(ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 %9, i64 noundef %6) @@ -3247,11 +3247,11 @@ select.unfold.i: ; preds = %35, %30 _ZN3std4sync4mpmc7context7Context10wait_until17h4bf656f2ae3b6de5E.exit.thread5: ; preds = %.split.i, %.split.us.i, %40, %"_ZN4core3ptr50drop_in_place$LT$std..sync..mpmc..waker..Entry$GT$17haf330feb39221a2cE.exit" ret void -48: ; preds = %.thread.loopexit40.i +48: ; preds = %.thread.loopexit42.i tail call void @_ZN4core6option13unwrap_failed17hcb3a256a9f1ca882E(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a8eeaf8233fbd2de92f933fd42f957d3.9) #18 unreachable -49: ; preds = %.thread.loopexit40.i +49: ; preds = %.thread.loopexit42.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(24) %3, i64 24, i1 false) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) tail call void @llvm.experimental.noalias.scope.decl(metadata !218) @@ -3787,16 +3787,16 @@ common.resume: ; preds = %44, %17 to label %_ZN3std4sync4mpmc5waker5Waker10disconnect17hb7d793ca29eab969E.exit unwind label %.loopexit.split-lp .lr.ph.i: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hf10177c2cbe17bb4E.exit", %_ZN3std10sys_common14thread_parking5futex6Parker6unpark17h7c9c6eabf53b77f5E.exit.i - %.sroa.0.012.i = phi ptr [ %30, %_ZN3std10sys_common14thread_parking5futex6Parker6unpark17h7c9c6eabf53b77f5E.exit.i ], [ %25, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hf10177c2cbe17bb4E.exit" ] - %30 = getelementptr inbounds i8, ptr %.sroa.0.012.i, i64 24 - %.val.i = load ptr, ptr %.sroa.0.012.i, align 8, !noalias !292, !nonnull !8, !noundef !8 + %.sroa.0.013.i = phi ptr [ %30, %_ZN3std10sys_common14thread_parking5futex6Parker6unpark17h7c9c6eabf53b77f5E.exit.i ], [ %25, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hf10177c2cbe17bb4E.exit" ] + %30 = getelementptr inbounds i8, ptr %.sroa.0.013.i, i64 24 + %.val.i = load ptr, ptr %.sroa.0.013.i, align 8, !noalias !292, !nonnull !8, !noundef !8 %31 = getelementptr inbounds i8, ptr %.val.i, i64 24 %32 = cmpxchg ptr %31, i64 0, i64 2 acq_rel acquire, align 8, !noalias !292 %33 = extractvalue { i64, i1 } %32, 1 br i1 %33, label %34, label %_ZN3std10sys_common14thread_parking5futex6Parker6unpark17h7c9c6eabf53b77f5E.exit.i 34: ; preds = %.lr.ph.i - %35 = load ptr, ptr %.sroa.0.012.i, align 8, !noalias !292, !nonnull !8, !noundef !8 + %35 = load ptr, ptr %.sroa.0.013.i, align 8, !noalias !292, !nonnull !8, !noundef !8 %36 = getelementptr inbounds i8, ptr %35, i64 16 %37 = load ptr, ptr %36, align 8, !noalias !292, !nonnull !8, !noundef !8 %38 = getelementptr inbounds i8, ptr %37, i64 40 @@ -4167,7 +4167,7 @@ _ZN3std4sync4mpmc5waker17current_thread_id5DUMMY7__getit17had567bd67086969cE.exi .lr.ph.i.i: ; preds = %"_ZN3std4sync4mpmc5waker5Waker10try_select28_$u7b$$u7b$closure$u7d$$u7d$17h757c025dcf6c103cE.exit.i.i", %"_ZN4core6result19Result$LT$T$C$E$GT$6expect17h72a2df0a97f0d903E.exit.i" %49 = phi ptr [ %50, %"_ZN3std4sync4mpmc5waker5Waker10try_select28_$u7b$$u7b$closure$u7d$$u7d$17h757c025dcf6c103cE.exit.i.i" ], [ %47, %"_ZN4core6result19Result$LT$T$C$E$GT$6expect17h72a2df0a97f0d903E.exit.i" ] - %.016.i.i = phi i64 [ %74, %"_ZN3std4sync4mpmc5waker5Waker10try_select28_$u7b$$u7b$closure$u7d$$u7d$17h757c025dcf6c103cE.exit.i.i" ], [ 0, %"_ZN4core6result19Result$LT$T$C$E$GT$6expect17h72a2df0a97f0d903E.exit.i" ] + %.015.i.i = phi i64 [ %74, %"_ZN3std4sync4mpmc5waker5Waker10try_select28_$u7b$$u7b$closure$u7d$$u7d$17h757c025dcf6c103cE.exit.i.i" ], [ 0, %"_ZN4core6result19Result$LT$T$C$E$GT$6expect17h72a2df0a97f0d903E.exit.i" ] %50 = getelementptr inbounds i8, ptr %49, i64 24 tail call void @llvm.experimental.noalias.scope.decl(metadata !353) %51 = load ptr, ptr %49, align 8, !alias.scope !353, !noalias !356, !nonnull !8, !noundef !8 @@ -4209,21 +4209,21 @@ _ZN3std4sync4mpmc7context7Context12store_packet17h71587165d6a8dce1E.exit.i.i.i: to label %.noexc5 unwind label %29 "_ZN3std4sync4mpmc5waker5Waker10try_select28_$u7b$$u7b$closure$u7d$$u7d$17h757c025dcf6c103cE.exit.i.i": ; preds = %54, %.lr.ph.i.i - %74 = add nuw nsw i64 %.016.i.i, 1 + %74 = add nuw nsw i64 %.015.i.i, 1 %75 = icmp eq ptr %50, %48 br i1 %75, label %"_ZN4core3ptr78drop_in_place$LT$core..option..Option$LT$std..sync..mpmc..waker..Entry$GT$$GT$17h975898128905418aE.exit", label %.lr.ph.i.i .noexc5: ; preds = %72, %_ZN3std4sync4mpmc7context7Context12store_packet17h71587165d6a8dce1E.exit.i.i.i - %76 = icmp ult i64 %.016.i.i, %38 + %76 = icmp ult i64 %.015.i.i, %38 tail call void @llvm.assume(i1 %76) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) tail call void @llvm.experimental.noalias.scope.decl(metadata !361) %77 = load i64, ptr %37, align 8, !alias.scope !364, !noalias !365, !noundef !8 - %.not.i.i = icmp ugt i64 %77, %.016.i.i + %.not.i.i = icmp ugt i64 %77, %.015.i.i br i1 %.not.i.i, label %_ZN3std4sync4mpmc5waker5Waker10try_select17ha74c1d6f879212f7E.exit, label %78 78: ; preds = %.noexc5 - invoke void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6remove13assert_failed17hccb0accdd75e9128E"(i64 noundef %.016.i.i, i64 noundef %77, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a8eeaf8233fbd2de92f933fd42f957d3.19) #18 + invoke void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6remove13assert_failed17hccb0accdd75e9128E"(i64 noundef %.015.i.i, i64 noundef %77, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a8eeaf8233fbd2de92f933fd42f957d3.19) #18 to label %.noexc6 unwind label %29 .noexc6: ; preds = %78 @@ -4231,10 +4231,10 @@ _ZN3std4sync4mpmc7context7Context12store_packet17h71587165d6a8dce1E.exit.i.i.i: _ZN3std4sync4mpmc5waker5Waker10try_select17ha74c1d6f879212f7E.exit: ; preds = %.noexc5 %79 = load ptr, ptr %46, align 8, !alias.scope !364, !noalias !365, !nonnull !8, !noundef !8 - %80 = getelementptr inbounds { ptr, i64, ptr }, ptr %79, i64 %.016.i.i + %80 = getelementptr inbounds { ptr, i64, ptr }, ptr %79, i64 %.015.i.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(24) %80, i64 24, i1 false), !noalias !368 %81 = getelementptr inbounds i8, ptr %80, i64 24 - %82 = xor i64 %.016.i.i, -1 + %82 = xor i64 %.015.i.i, -1 %83 = add i64 %77, %82 %84 = mul i64 %83, 24 tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %80, ptr nonnull align 8 %81, i64 %84, i1 false), !noalias !369 diff --git a/bench/coreutils-rs/optimized/3z39203exqv32wuh.ll b/bench/coreutils-rs/optimized/3z39203exqv32wuh.ll index fadd83c52f1..510c1d917a2 100644 --- a/bench/coreutils-rs/optimized/3z39203exqv32wuh.ll +++ b/bench/coreutils-rs/optimized/3z39203exqv32wuh.ll @@ -1010,7 +1010,7 @@ define internal fastcc void @_ZN5uu_dd6blocks5block17h3209c7000a196d04E(ptr noal br i1 %14, label %.loopexit.i.i, label %.lr.ph.i.i.i .lr.ph.i.i.i: ; preds = %12, %17 - %.011.i.i.i = phi i64 [ %19, %17 ], [ 0, %12 ] + %.010.i.i.i = phi i64 [ %19, %17 ], [ 0, %12 ] %15 = phi ptr [ %18, %17 ], [ %.sroa.026.0, %12 ] %.val.i.i.i = load i8, ptr %15, align 1, !noalias !147, !noundef !4 %16 = icmp eq i8 %.val.i.i.i, 10 @@ -1018,12 +1018,12 @@ define internal fastcc void @_ZN5uu_dd6blocks5block17h3209c7000a196d04E(ptr noal 17: ; preds = %.lr.ph.i.i.i %18 = getelementptr inbounds i8, ptr %15, i64 1 - %19 = add nuw i64 %.011.i.i.i, 1 + %19 = add nuw i64 %.010.i.i.i, 1 %20 = icmp eq ptr %18, %13 br i1 %20, label %.loopexit.i.i, label %.lr.ph.i.i.i 21: ; preds = %.lr.ph.i.i.i - %22 = add nuw i64 %.011.i.i.i, 1 + %22 = add nuw i64 %.010.i.i.i, 1 %23 = sub nuw i64 %.sroa.3.0, %22 %24 = getelementptr inbounds i8, ptr %.sroa.026.0, i64 %22 br label %.loopexit.i.i @@ -1032,7 +1032,7 @@ define internal fastcc void @_ZN5uu_dd6blocks5block17h3209c7000a196d04E(ptr noal %.sroa.026.1 = phi ptr [ %24, %21 ], [ %.sroa.026.0, %12 ], [ %.sroa.026.0, %17 ] %.sroa.3.1 = phi i64 [ %23, %21 ], [ 0, %12 ], [ %.sroa.3.0, %17 ] %.sroa.627.1 = phi i1 [ false, %21 ], [ true, %12 ], [ true, %17 ] - %.sroa.5.1.i.ph.i = phi i64 [ %.011.i.i.i, %21 ], [ 0, %12 ], [ %.sroa.3.0, %17 ] + %.sroa.5.1.i.ph.i = phi i64 [ %.010.i.i.i, %21 ], [ 0, %12 ], [ %.sroa.3.0, %17 ] call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6), !noalias !156 store i64 %.sroa.029.0, ptr %6, align 8, !noalias !161 store ptr %.sroa.632.0, ptr %.sroa.632.0..sroa_idx, align 8, !noalias !161 diff --git a/bench/coreutils-rs/optimized/473nyej07n3j6ogx.ll b/bench/coreutils-rs/optimized/473nyej07n3j6ogx.ll index ea3f4f0a204..89509c1c11e 100644 --- a/bench/coreutils-rs/optimized/473nyej07n3j6ogx.ll +++ b/bench/coreutils-rs/optimized/473nyej07n3j6ogx.ll @@ -2042,8 +2042,8 @@ define { ptr, i64 } @"_ZN46_$LT$str$u20$as$u20$uu_dircolors..StrUtils$GT$6purify .critedge49.backedge: ; preds = %7, %64, %62, %_ZN4core7unicode12unicode_data11white_space6lookup17h3e9dac857c10d7d8E.exit br label %.critedge49 -_ZN4core4iter6traits8iterator8Iterator8try_fold17haec29e3895b40ef2E.exit.thread: ; preds = %12, %59, %.critedge49, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i53", %90, %.critedge.thread - %.sroa.11.0 = phi i64 [ 0, %.critedge.thread ], [ %1, %90 ], [ %87, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i53" ], [ 0, %12 ], [ 0, %59 ], [ %1, %.critedge49 ] +_ZN4core4iter6traits8iterator8Iterator8try_fold17haec29e3895b40ef2E.exit.thread: ; preds = %12, %59, %.critedge49, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i54", %90, %.critedge.thread + %.sroa.11.0 = phi i64 [ 0, %.critedge.thread ], [ %1, %90 ], [ %87, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i54" ], [ 0, %12 ], [ 0, %59 ], [ %1, %.critedge49 ] %11 = tail call { ptr, i64 } @"_ZN4core3str21_$LT$impl$u20$str$GT$12trim_matches17h7cb16393929cc408E"(ptr noalias noundef nonnull readonly align 1 %0, i64 noundef %.sroa.11.0) ret { ptr, i64 } %11 @@ -2200,20 +2200,20 @@ _ZN4core7unicode12unicode_data11white_space6lookup17h3e9dac857c10d7d8E.exit: ; p br i1 %88, label %_ZN4core4iter6traits8iterator8Iterator8try_fold17haec29e3895b40ef2E.exit.thread, label %89 89: ; preds = %.critedge.thread - %.not.i.i51 = icmp ult i64 %87, %1 - br i1 %.not.i.i51, label %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i53", label %90 + %.not.i.i52 = icmp ult i64 %87, %1 + br i1 %.not.i.i52, label %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i54", label %90 90: ; preds = %89 %91 = icmp eq i64 %87, %1 br i1 %91, label %_ZN4core4iter6traits8iterator8Iterator8try_fold17haec29e3895b40ef2E.exit.thread, label %95 -"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i53": ; preds = %89 +"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i54": ; preds = %89 %92 = getelementptr inbounds i8, ptr %0, i64 %87 %93 = load i8, ptr %92, align 1, !alias.scope !498, !noundef !4 %94 = icmp sgt i8 %93, -65 br i1 %94, label %_ZN4core4iter6traits8iterator8Iterator8try_fold17haec29e3895b40ef2E.exit.thread, label %95 -95: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i53", %90 +95: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i54", %90 tail call void @_ZN4core3str16slice_error_fail17he2ff12236fb0c056E(ptr noalias noundef nonnull readonly align 1 %0, i64 noundef %1, i64 noundef 0, i64 noundef %87, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.0e465fe6be52864fcdae16bb4d6a5c56.71) #15 unreachable } diff --git a/bench/coreutils-rs/optimized/49fwg0b0m19bdvio.ll b/bench/coreutils-rs/optimized/49fwg0b0m19bdvio.ll index 84efe67bd97..151255c4049 100644 --- a/bench/coreutils-rs/optimized/49fwg0b0m19bdvio.ll +++ b/bench/coreutils-rs/optimized/49fwg0b0m19bdvio.ll @@ -693,7 +693,7 @@ default.unreachable7: ; preds = %12 define internal fastcc void @_ZN10num_bigint6bigint6BigInt12from_biguint17hcc6dbcfeb5ddc4b2E(ptr noalias nocapture noundef writeonly align 8 dereferenceable(32) %0, i8 noundef %1, ptr noalias nocapture noundef align 8 dereferenceable(24) %2) unnamed_addr #1 personality ptr @rust_eh_personality { %4 = alloca { { { ptr, i64 }, i64 }, {} }, align 8 %5 = icmp eq i8 %1, 1 - br i1 %5, label %6, label %38 + br i1 %5, label %6, label %39 6: ; preds = %3 tail call void @llvm.experimental.noalias.scope.decl(metadata !121) @@ -706,7 +706,7 @@ define internal fastcc void @_ZN10num_bigint6bigint6BigInt12from_biguint17hcc6db %.sroa.5.0..sroa_idx.i = getelementptr inbounds i8, ptr %4, i64 16 store i64 2, ptr %.sroa.5.0..sroa_idx.i, align 8, !noalias !121 invoke void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$14extend_trusted17h1d9a4e70c56c3c7aE.llvm.469041376202038926"(ptr noalias noundef nonnull align 8 dereferenceable(24) %2, ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %4) - to label %.noexc unwind label %42 + to label %.noexc unwind label %43 .noexc: ; preds = %6 tail call void @llvm.experimental.noalias.scope.decl(metadata !124) @@ -760,7 +760,7 @@ define internal fastcc void @_ZN10num_bigint6bigint6BigInt12from_biguint17hcc6db 32: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$8truncate17h7a8406789308c251E.exit.i.i" %33 = invoke { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h7de441a984ce4930E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %2, i64 noundef %16) - to label %.noexc3 unwind label %42 + to label %.noexc3 unwind label %43 .noexc3: ; preds = %32 %34 = extractvalue { i64, i64 } %33, 0 @@ -771,51 +771,53 @@ define internal fastcc void @_ZN10num_bigint6bigint6BigInt12from_biguint17hcc6db 35: ; preds = %.noexc3 invoke void @_ZN5alloc7raw_vec17capacity_overflow17hbca7785f3bc15d50E() #16 - to label %.noexc4 unwind label %42 + to label %.noexc4 unwind label %43 .noexc4: ; preds = %35 unreachable 36: ; preds = %.noexc3 %37 = extractvalue { i64, i64 } %33, 1 - invoke void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef %34, i64 noundef %37) #16 - to label %.noexc5 unwind label %42 + %38 = icmp eq i64 %34, -9223372036854775807 + %.sroa.33.0.i.i.i.i.i = select i1 %38, i64 undef, i64 %37 + invoke void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef %34, i64 noundef %.sroa.33.0.i.i.i.i.i) #16 + to label %.noexc5 unwind label %43 .noexc5: ; preds = %36 unreachable _ZN10num_bigint7biguint7BigUint17assign_from_slice17h19ad959abb92a724E.exit: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$8truncate17h7a8406789308c251E.exit.i.i", %.noexc3 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) - br label %44 + br label %45 -38: ; preds = %3 - %39 = getelementptr inbounds i8, ptr %2, i64 16 - %40 = load i64, ptr %39, align 8, !noundef !13 - %41 = icmp eq i64 %40, 0 - %spec.select = select i1 %41, i8 1, i8 %1 - br label %44 +39: ; preds = %3 + %40 = getelementptr inbounds i8, ptr %2, i64 16 + %41 = load i64, ptr %40, align 8, !noundef !13 + %42 = icmp eq i64 %41, 0 + %spec.select = select i1 %42, i8 1, i8 %1 + br label %45 -42: ; preds = %36, %35, %32, %6 - %43 = landingpad { ptr, i32 } +43: ; preds = %36, %35, %32, %6 + %44 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr49drop_in_place$LT$num_bigint..biguint..BigUint$GT$17h90059a324b32667aE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %2) #14 - to label %48 unwind label %46 + to label %49 unwind label %47 -44: ; preds = %_ZN10num_bigint7biguint7BigUint17assign_from_slice17h19ad959abb92a724E.exit, %38 - %.0 = phi i8 [ 1, %_ZN10num_bigint7biguint7BigUint17assign_from_slice17h19ad959abb92a724E.exit ], [ %spec.select, %38 ] - %45 = getelementptr inbounds i8, ptr %0, i64 24 - store i8 %.0, ptr %45, align 8 +45: ; preds = %_ZN10num_bigint7biguint7BigUint17assign_from_slice17h19ad959abb92a724E.exit, %39 + %.0 = phi i8 [ 1, %_ZN10num_bigint7biguint7BigUint17assign_from_slice17h19ad959abb92a724E.exit ], [ %spec.select, %39 ] + %46 = getelementptr inbounds i8, ptr %0, i64 24 + store i8 %.0, ptr %46, align 8 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %2, i64 24, i1 false) ret void -46: ; preds = %42 - %47 = landingpad { ptr, i32 } +47: ; preds = %43 + %48 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #15 unreachable -48: ; preds = %42 - resume { ptr, i32 } %43 +49: ; preds = %43 + resume { ptr, i32 } %44 } ; Function Attrs: nonlazybind uwtable @@ -1185,36 +1187,36 @@ define internal fastcc void @"_ZN58_$LT$bigdecimal..BigDecimal$u20$as$u20$num_tr br label %165 .lr.ph.split.split.i.i: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$4find17h29afb07d9dcc11c0E.exit.thread", %161 - %.sroa.3.0.i47.i.i = phi i64 [ %162, %161 ], [ %.sroa.13.0, %"_ZN4core3str21_$LT$impl$u20$str$GT$4find17h29afb07d9dcc11c0E.exit.thread" ] + %.sroa.7.049.i.i = phi i64 [ %162, %161 ], [ %.sroa.13.0, %"_ZN4core3str21_$LT$impl$u20$str$GT$4find17h29afb07d9dcc11c0E.exit.thread" ] %142 = phi i64 [ %158, %161 ], [ 0, %"_ZN4core3str21_$LT$impl$u20$str$GT$4find17h29afb07d9dcc11c0E.exit.thread" ] - %.49.i.i = getelementptr inbounds i8, ptr %1, i64 %142 - %143 = icmp ult i64 %.sroa.3.0.i47.i.i, 16 + %.sroa.0.050.i.i = getelementptr inbounds i8, ptr %1, i64 %142 + %143 = icmp ult i64 %.sroa.7.049.i.i, 16 br i1 %143, label %146, label %144 144: ; preds = %.lr.ph.split.split.i.i - %145 = tail call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef 46, ptr noalias noundef nonnull readonly align 1 %.49.i.i, i64 noundef %.sroa.3.0.i47.i.i), !noalias !212 + %145 = tail call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef 46, ptr noalias noundef nonnull readonly align 1 %.sroa.0.050.i.i, i64 noundef %.sroa.7.049.i.i), !noalias !212 br label %154 146: ; preds = %.lr.ph.split.split.i.i - %.not.i.i.i = icmp eq i64 %142, %.sroa.13.0 + %.not.i.i.i = icmp eq i64 %.sroa.7.049.i.i, 0 br i1 %.not.i.i.i, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i, label %.lr.ph.i.i.i .lr.ph.i.i.i: ; preds = %146, %150 %.05.i.i.i = phi i64 [ %151, %150 ], [ 0, %146 ] - %147 = getelementptr inbounds [0 x i8], ptr %.49.i.i, i64 0, i64 %.05.i.i.i + %147 = getelementptr inbounds [0 x i8], ptr %.sroa.0.050.i.i, i64 0, i64 %.05.i.i.i %148 = load i8, ptr %147, align 1, !alias.scope !216, !noalias !212, !noundef !13 %149 = icmp eq i8 %148, 46 br i1 %149, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i, label %150 150: ; preds = %.lr.ph.i.i.i - %151 = add nuw i64 %.05.i.i.i, 1 - %exitcond.not.i.i.i = icmp eq i64 %151, %.sroa.3.0.i47.i.i + %151 = add nuw nsw i64 %.05.i.i.i, 1 + %exitcond.not.i.i.i = icmp eq i64 %151, %.sroa.7.049.i.i br i1 %exitcond.not.i.i.i, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i, label %.lr.ph.i.i.i _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i: ; preds = %150, %.lr.ph.i.i.i, %146 - %.0.lcssa.i.i.i = phi i64 [ 0, %146 ], [ %.sroa.3.0.i47.i.i, %150 ], [ %.05.i.i.i, %.lr.ph.i.i.i ] - %.sroa.0.0.i25.i.i = phi i64 [ 0, %146 ], [ 0, %150 ], [ 1, %.lr.ph.i.i.i ] - %152 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i25.i.i, 0 + %.0.lcssa.i.i.i = phi i64 [ 0, %146 ], [ %.sroa.7.049.i.i, %150 ], [ %.05.i.i.i, %.lr.ph.i.i.i ] + %.sroa.0.0.i24.i.i = phi i64 [ 0, %146 ], [ 0, %150 ], [ 1, %.lr.ph.i.i.i ] + %152 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i24.i.i, 0 %153 = insertvalue { i64, i64 } %152, i64 %.0.lcssa.i.i.i, 1 br label %154 diff --git a/bench/coreutils-rs/optimized/4jcegsvljtrqsq46.ll b/bench/coreutils-rs/optimized/4jcegsvljtrqsq46.ll index e42ca3a7468..5d05fbd88a4 100644 --- a/bench/coreutils-rs/optimized/4jcegsvljtrqsq46.ll +++ b/bench/coreutils-rs/optimized/4jcegsvljtrqsq46.ll @@ -671,7 +671,8 @@ define { i64, i8 } @_ZN6uu_env15string_expander14StringExpander8skip_one17hd7975 22: ; preds = %21, %"_ZN4core3ptr72drop_in_place$LT$alloc..vec..Vec$LT$uu_env..string_parser..Chunk$GT$$GT$17hacc5fe5b324a617bE.exit" %.sroa.3.0 = phi i8 [ %11, %21 ], [ 2, %"_ZN4core3ptr72drop_in_place$LT$alloc..vec..Vec$LT$uu_env..string_parser..Chunk$GT$$GT$17hacc5fe5b324a617bE.exit" ] - %23 = insertvalue { i64, i8 } poison, i64 %9, 0 + %.sroa.0.0 = phi i64 [ %9, %21 ], [ undef, %"_ZN4core3ptr72drop_in_place$LT$alloc..vec..Vec$LT$uu_env..string_parser..Chunk$GT$$GT$17hacc5fe5b324a617bE.exit" ] + %23 = insertvalue { i64, i8 } poison, i64 %.sroa.0.0, 0 %24 = insertvalue { i64, i8 } %23, i8 %.sroa.3.0, 1 ret { i64, i8 } %24 } @@ -778,7 +779,8 @@ common.resume: ; preds = %20, %23 31: ; preds = %"_ZN4core3ptr88drop_in_place$LT$alloc..vec..into_iter..IntoIter$LT$uu_env..string_parser..Chunk$GT$$GT$17h5d21fdba17a4baafE.exit", %19 %.sroa.3.0 = phi i8 [ %11, %19 ], [ 2, %"_ZN4core3ptr88drop_in_place$LT$alloc..vec..into_iter..IntoIter$LT$uu_env..string_parser..Chunk$GT$$GT$17h5d21fdba17a4baafE.exit" ] - %32 = insertvalue { i64, i8 } poison, i64 %9, 0 + %.sroa.0.0 = phi i64 [ %9, %19 ], [ undef, %"_ZN4core3ptr88drop_in_place$LT$alloc..vec..into_iter..IntoIter$LT$uu_env..string_parser..Chunk$GT$$GT$17h5d21fdba17a4baafE.exit" ] + %32 = insertvalue { i64, i8 } poison, i64 %.sroa.0.0, 0 %33 = insertvalue { i64, i8 } %32, i8 %.sroa.3.0, 1 ret { i64, i8 } %33 @@ -828,9 +830,9 @@ common.resume: ; preds = %20, %23 br label %51 51: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he3e42d29207d138bE.exit", %"_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_extend17h6a650d4252cb6caaE.exit" - %.sink44 = phi i64 [ 1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he3e42d29207d138bE.exit" ], [ %.sroa.7.8.copyload, %"_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_extend17h6a650d4252cb6caaE.exit" ] + %.sink43 = phi i64 [ 1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he3e42d29207d138bE.exit" ], [ %.sroa.7.8.copyload, %"_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_extend17h6a650d4252cb6caaE.exit" ] %52 = load i64, ptr %17, align 8, !noundef !5 - %53 = add i64 %52, %.sink44 + %53 = add i64 %52, %.sink43 store i64 %53, ptr %17, align 8 %54 = load ptr, ptr %.sroa.628.0..sroa_idx, align 8, !alias.scope !145, !noalias !134, !nonnull !5, !noundef !5 %55 = load ptr, ptr %.sroa.425.0..sroa_idx, align 8, !alias.scope !145, !noalias !134, !nonnull !5, !noundef !5 diff --git a/bench/coreutils-rs/optimized/4o7xlymj7t9iafq7.ll b/bench/coreutils-rs/optimized/4o7xlymj7t9iafq7.ll index 6e3daa2d071..897ca93caa9 100644 --- a/bench/coreutils-rs/optimized/4o7xlymj7t9iafq7.ll +++ b/bench/coreutils-rs/optimized/4o7xlymj7t9iafq7.ll @@ -57,9 +57,13 @@ define hidden { ptr, i64 } @"_ZN4core5slice4iter13Iter$LT$T$GT$10make_slice17h21 ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define hidden { i64, i64 } @"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h518faa5c371368c7E.llvm.469041376202038926"(i64 noundef %0, i64 %1) unnamed_addr #2 { - %3 = insertvalue { i64, i64 } poison, i64 %0, 0 - %4 = insertvalue { i64, i64 } %3, i64 %1, 1 - ret { i64, i64 } %4 + %3 = icmp eq i64 %0, -9223372036854775807 + %4 = icmp eq i64 %0, 0 + %5 = or i1 %3, %4 + %.sroa.33.0 = select i1 %5, i64 undef, i64 %1 + %6 = insertvalue { i64, i64 } poison, i64 %0, 0 + %7 = insertvalue { i64, i64 } %6, i64 %.sroa.33.0, 1 + ret { i64, i64 } %7 } ; Function Attrs: inlinehint nonlazybind uwtable @@ -106,7 +110,9 @@ define hidden void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$13shrink_to_fit17hcf95a14012 10: ; preds = %6 %11 = extractvalue { i64, i64 } %7, 1 - tail call void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef %8, i64 noundef %11) #12 + %12 = icmp eq i64 %8, -9223372036854775807 + %.sroa.33.0.i.i = select i1 %12, i64 undef, i64 %11 + tail call void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef %8, i64 noundef %.sroa.33.0.i.i) #12 unreachable _ZN5alloc7raw_vec14handle_reserve17hf0112dc2ee693d5aE.llvm.469041376202038926.exit: ; preds = %6, %1 @@ -245,15 +251,19 @@ define hidden void @_ZN5alloc7raw_vec14handle_reserve17hf0112dc2ee693d5aE.llvm.4 unreachable 5: ; preds = %2 - tail call void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef %0, i64 noundef %1) #12 + %6 = icmp eq i64 %0, -9223372036854775807 + %.sroa.33.0.i = select i1 %6, i64 undef, i64 %1 + tail call void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef %0, i64 noundef %.sroa.33.0.i) #12 unreachable } ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define hidden { i64, i64 } @"_ZN5alloc7raw_vec14handle_reserve28_$u7b$$u7b$closure$u7d$$u7d$17h0e03244bf8eb9c5eE.llvm.469041376202038926"(i64 noundef %0, i64 %1) unnamed_addr #2 { - %3 = insertvalue { i64, i64 } poison, i64 %0, 0 - %4 = insertvalue { i64, i64 } %3, i64 %1, 1 - ret { i64, i64 } %4 + %3 = icmp eq i64 %0, 0 + %.4 = select i1 %3, i64 undef, i64 %1 + %4 = insertvalue { i64, i64 } poison, i64 %0, 0 + %5 = insertvalue { i64, i64 } %4, i64 %.4, 1 + ret { i64, i64 } %5 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/coreutils-rs/optimized/4zjtiunpxteyreer.ll b/bench/coreutils-rs/optimized/4zjtiunpxteyreer.ll index 4bbf49ed3ff..b83ea5cc081 100644 --- a/bench/coreutils-rs/optimized/4zjtiunpxteyreer.ll +++ b/bench/coreutils-rs/optimized/4zjtiunpxteyreer.ll @@ -13,9 +13,13 @@ target triple = "x86_64-unknown-linux-gnu" ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define hidden { i64, i64 } @"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17heee9cfa46a3c0188E.llvm.15206646019031850355"(i64 noundef %0, i64 %1) unnamed_addr #0 { - %3 = insertvalue { i64, i64 } poison, i64 %0, 0 - %4 = insertvalue { i64, i64 } %3, i64 %1, 1 - ret { i64, i64 } %4 + %3 = icmp eq i64 %0, -9223372036854775807 + %4 = icmp eq i64 %0, 0 + %5 = or i1 %3, %4 + %.sroa.33.0 = select i1 %5, i64 undef, i64 %1 + %6 = insertvalue { i64, i64 } poison, i64 %0, 0 + %7 = insertvalue { i64, i64 } %6, i64 %.sroa.33.0, 1 + ret { i64, i64 } %7 } ; Function Attrs: inlinehint nonlazybind uwtable @@ -33,15 +37,19 @@ define hidden void @_ZN5alloc7raw_vec14handle_reserve17hf0112dc2ee693d5aE.llvm.1 unreachable 5: ; preds = %2 - tail call void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef %0, i64 noundef %1) #16 + %6 = icmp eq i64 %0, -9223372036854775807 + %.sroa.33.0.i = select i1 %6, i64 undef, i64 %1 + tail call void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef %0, i64 noundef %.sroa.33.0.i) #16 unreachable } ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define hidden { i64, i64 } @"_ZN5alloc7raw_vec14handle_reserve28_$u7b$$u7b$closure$u7d$$u7d$17h4a6bae645cd478caE.llvm.15206646019031850355"(i64 noundef %0, i64 %1) unnamed_addr #0 { - %3 = insertvalue { i64, i64 } poison, i64 %0, 0 - %4 = insertvalue { i64, i64 } %3, i64 %1, 1 - ret { i64, i64 } %4 + %3 = icmp eq i64 %0, 0 + %.4 = select i1 %3, i64 undef, i64 %1 + %4 = insertvalue { i64, i64 } poison, i64 %0, 0 + %5 = insertvalue { i64, i64 } %4, i64 %.4, 1 + ret { i64, i64 } %5 } ; Function Attrs: nonlazybind uwtable @@ -413,10 +421,10 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h41f %18 = icmp ule i64 %17, %14 tail call void @llvm.assume(i1 %18) %19 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val20, i64 noundef %14, i64 noundef 8, i64 noundef %17) #17 - %.not33 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not33, ptr inttoptr (i64 8 to ptr), ptr %19 + %.not34 = icmp eq ptr %19, null + %.sink1.i = select i1 %.not34, ptr inttoptr (i64 8 to ptr), ptr %19 %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not33, label %22, label %21 + br i1 %.not34, label %22, label %21 21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17h611556c63980c062E.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17h5aa9536df20bd469E.exit" ] diff --git a/bench/coreutils-rs/optimized/50yk4ggbj78ukvx1.ll b/bench/coreutils-rs/optimized/50yk4ggbj78ukvx1.ll index 36869b4ca0f..439989594fb 100644 --- a/bench/coreutils-rs/optimized/50yk4ggbj78ukvx1.ll +++ b/bench/coreutils-rs/optimized/50yk4ggbj78ukvx1.ll @@ -1386,9 +1386,9 @@ define void @"_ZN85_$LT$alloc..vec..Vec$LT$uu_split..OutFile$GT$$u20$as$u20$uu_s %17 = getelementptr inbounds i8, ptr %1, i64 16 %18 = load i64, ptr %17, align 8, !noundef !4 %19 = icmp ugt i64 %18, %2 - br i1 %19, label %.lr.ph172, label %._crit_edge173, !prof !236 + br i1 %19, label %.lr.ph173, label %._crit_edge174, !prof !236 -.lr.ph172: ; preds = %4 +.lr.ph173: ; preds = %4 %20 = getelementptr inbounds i8, ptr %1, i64 8 %21 = load ptr, ptr %20, align 8, !nonnull !4, !noundef !4 %22 = getelementptr inbounds [0 x { { { { i64, ptr, {} }, i64 } }, { i64, [5 x i64] }, i8, [7 x i8] }], ptr %21, i64 0, i64 %2 @@ -1397,8 +1397,8 @@ define void @"_ZN85_$LT$alloc..vec..Vec$LT$uu_split..OutFile$GT$$u20$as$u20$uu_s %25 = getelementptr inbounds i8, ptr %22, i64 72 %26 = getelementptr inbounds i8, ptr %3, i64 136 %27 = load i64, ptr %26, align 8, !range !53 - %.fr191 = freeze i64 %27 - %.not68 = icmp eq i64 %.fr191, -9223372036854775808 + %.fr192 = freeze i64 %27 + %.not68 = icmp eq i64 %.fr192, -9223372036854775808 %28 = getelementptr inbounds { { { { i64, ptr, {} }, i64 } }, { i64, [5 x i64] }, i8, [7 x i8] }, ptr %21, i64 %18 %29 = getelementptr inbounds i8, ptr %15, i64 8 %30 = getelementptr inbounds i8, ptr %6, i64 8 @@ -1409,28 +1409,28 @@ define void @"_ZN85_$LT$alloc..vec..Vec$LT$uu_split..OutFile$GT$$u20$as$u20$uu_s call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %15) call void @_ZN8uu_split8Settings26instantiate_current_writer17hacf64a1ed7873ce6E(ptr noalias nocapture noundef nonnull sret({ i64, [5 x i64] }) align 8 dereferenceable(48) %15, ptr noalias noundef nonnull readonly align 8 dereferenceable(168) %3, ptr noalias noundef nonnull readonly align 1 %32, i64 noundef %31, i1 noundef zeroext %34) %35 = load i64, ptr %15, align 8, !range !53, !noundef !4 - %.not.us215 = icmp eq i64 %35, -9223372036854775808 - br i1 %.not68, label %.lr.ph172.split.us.split.preheader, label %.lr.ph172.split - -.lr.ph172.split.us.split.preheader: ; preds = %.lr.ph172 - br i1 %.not.us215, label %.lr.ph.us, label %.split.us - -.lr.ph.us: ; preds = %.lr.ph172.split.us.split.preheader, %.lr.ph.us.backedge - %.sroa.0.0168.us = phi ptr [ %.sroa.0.0168.us.be, %.lr.ph.us.backedge ], [ %21, %.lr.ph172.split.us.split.preheader ] - %.sroa.9.0167.us = phi i64 [ %.sroa.9.0167.us.be, %.lr.ph.us.backedge ], [ 0, %.lr.ph172.split.us.split.preheader ] - %36 = getelementptr inbounds i8, ptr %.sroa.0.0168.us, i64 80 - %37 = add nuw nsw i64 %.sroa.9.0167.us, 1 - %.not69.us = icmp eq i64 %.sroa.9.0167.us, %2 + %.not.us216 = icmp eq i64 %35, -9223372036854775808 + br i1 %.not68, label %.lr.ph173.split.us.split.preheader, label %.lr.ph173.split + +.lr.ph173.split.us.split.preheader: ; preds = %.lr.ph173 + br i1 %.not.us216, label %.lr.ph.us, label %.split.us + +.lr.ph.us: ; preds = %.lr.ph173.split.us.split.preheader, %.lr.ph.us.backedge + %.sroa.0.0169.us = phi ptr [ %.sroa.0.0169.us.be, %.lr.ph.us.backedge ], [ %21, %.lr.ph173.split.us.split.preheader ] + %.sroa.9.0168.us = phi i64 [ %.sroa.9.0168.us.be, %.lr.ph.us.backedge ], [ 0, %.lr.ph173.split.us.split.preheader ] + %36 = getelementptr inbounds i8, ptr %.sroa.0.0169.us, i64 80 + %37 = add nuw nsw i64 %.sroa.9.0168.us, 1 + %.not69.us = icmp eq i64 %.sroa.9.0168.us, %2 br i1 %.not69.us, label %72, label %38 38: ; preds = %.lr.ph.us - %39 = getelementptr inbounds i8, ptr %.sroa.0.0168.us, i64 24 + %39 = getelementptr inbounds i8, ptr %.sroa.0.0169.us, i64 24 %40 = load i64, ptr %39, align 8, !range !53, !noundef !4 %.not70.us = icmp eq i64 %40, -9223372036854775808 br i1 %.not70.us, label %72, label %41 41: ; preds = %38 - %42 = getelementptr inbounds i8, ptr %.sroa.0.0168.us, i64 24 + %42 = getelementptr inbounds i8, ptr %.sroa.0.0169.us, i64 24 %43 = invoke noundef ptr @"_ZN3std2io8buffered9bufwriter18BufWriter$LT$W$GT$9flush_buf17h535b6849231ba3d8E"(ptr noalias noundef nonnull align 8 dereferenceable(48) %42) to label %.noexc90.us unwind label %.loopexit.split.us @@ -1439,10 +1439,10 @@ define void @"_ZN85_$LT$alloc..vec..Vec$LT$uu_split..OutFile$GT$$u20$as$u20$uu_s br i1 %44, label %45, label %"_ZN83_$LT$std..io..buffered..bufwriter..BufWriter$LT$W$GT$$u20$as$u20$std..io..Write$GT$5flush17h051dc54b7cac37c4E.exit.thread" 45: ; preds = %.noexc90.us - %46 = getelementptr inbounds i8, ptr %.sroa.0.0168.us, i64 56 + %46 = getelementptr inbounds i8, ptr %.sroa.0.0169.us, i64 56 call void @llvm.experimental.noalias.scope.decl(metadata !237) %47 = load ptr, ptr %46, align 8, !alias.scope !240, !nonnull !4, !align !108, !noundef !4 - %48 = getelementptr inbounds i8, ptr %.sroa.0.0168.us, i64 64 + %48 = getelementptr inbounds i8, ptr %.sroa.0.0169.us, i64 64 %49 = load ptr, ptr %48, align 8, !alias.scope !240, !nonnull !4, !align !5, !noundef !4 %50 = getelementptr inbounds i8, ptr %49, i64 48 %51 = load ptr, ptr %50, align 8, !invariant.load !4, !noalias !237, !nonnull !4 @@ -1461,14 +1461,14 @@ define void @"_ZN85_$LT$alloc..vec..Vec$LT$uu_split..OutFile$GT$$u20$as$u20$uu_s 57: ; preds = %54 invoke void @"_ZN4core3ptr115drop_in_place$LT$std..io..buffered..bufwriter..BufWriter$LT$alloc..boxed..Box$LT$dyn$u20$std..io..Write$GT$$GT$$GT$17h4325009b90f34d1dE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %42) - to label %"_ZN4core3ptr143drop_in_place$LT$core..option..Option$LT$std..io..buffered..bufwriter..BufWriter$LT$alloc..boxed..Box$LT$dyn$u20$std..io..Write$GT$$GT$$GT$$GT$17h84cfeb1319cfec80E.exit93.us" unwind label %.split182.us + to label %"_ZN4core3ptr143drop_in_place$LT$core..option..Option$LT$std..io..buffered..bufwriter..BufWriter$LT$alloc..boxed..Box$LT$dyn$u20$std..io..Write$GT$$GT$$GT$$GT$17h84cfeb1319cfec80E.exit93.us" unwind label %.split183.us "_ZN4core3ptr143drop_in_place$LT$core..option..Option$LT$std..io..buffered..bufwriter..BufWriter$LT$alloc..boxed..Box$LT$dyn$u20$std..io..Write$GT$$GT$$GT$$GT$17h84cfeb1319cfec80E.exit93.us": ; preds = %57, %54 store i64 -9223372036854775808, ptr %42, align 8 - %.sroa.5.0..sroa_idx16.us = getelementptr inbounds i8, ptr %.sroa.0.0168.us, i64 32 + %.sroa.5.0..sroa_idx16.us = getelementptr inbounds i8, ptr %.sroa.0.0169.us, i64 32 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %.sroa.5.0..sroa_idx16.us, ptr noundef nonnull align 8 dereferenceable(40) %.sroa.5, i64 40, i1 false) call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %.sroa.5) - %58 = getelementptr inbounds i8, ptr %.sroa.0.0168.us, i64 72 + %58 = getelementptr inbounds i8, ptr %.sroa.0.0169.us, i64 72 store i8 0, ptr %58, align 8 %59 = load i32, ptr %16, align 4, !noundef !4 %60 = add i32 %59, 1 @@ -1518,8 +1518,8 @@ define void @"_ZN85_$LT$alloc..vec..Vec$LT$uu_split..OutFile$GT$$u20$as$u20$uu_s br i1 %73, label %._crit_edge, label %.lr.ph.us.backedge .lr.ph.us.backedge: ; preds = %72, %"_ZN4core3ptr167drop_in_place$LT$core..result..Result$LT$std..io..buffered..bufwriter..BufWriter$LT$alloc..boxed..Box$LT$dyn$u20$std..io..Write$GT$$GT$$C$std..io..error..Error$GT$$GT$17h35f3947b1b6d52a5E.exit97.us" - %.sroa.0.0168.us.be = phi ptr [ %36, %72 ], [ %21, %"_ZN4core3ptr167drop_in_place$LT$core..result..Result$LT$std..io..buffered..bufwriter..BufWriter$LT$alloc..boxed..Box$LT$dyn$u20$std..io..Write$GT$$GT$$C$std..io..error..Error$GT$$GT$17h35f3947b1b6d52a5E.exit97.us" ] - %.sroa.9.0167.us.be = phi i64 [ %37, %72 ], [ 0, %"_ZN4core3ptr167drop_in_place$LT$core..result..Result$LT$std..io..buffered..bufwriter..BufWriter$LT$alloc..boxed..Box$LT$dyn$u20$std..io..Write$GT$$GT$$C$std..io..error..Error$GT$$GT$17h35f3947b1b6d52a5E.exit97.us" ] + %.sroa.0.0169.us.be = phi ptr [ %36, %72 ], [ %21, %"_ZN4core3ptr167drop_in_place$LT$core..result..Result$LT$std..io..buffered..bufwriter..BufWriter$LT$alloc..boxed..Box$LT$dyn$u20$std..io..Write$GT$$GT$$C$std..io..error..Error$GT$$GT$17h35f3947b1b6d52a5E.exit97.us" ] + %.sroa.9.0168.us.be = phi i64 [ %37, %72 ], [ 0, %"_ZN4core3ptr167drop_in_place$LT$core..result..Result$LT$std..io..buffered..bufwriter..BufWriter$LT$alloc..boxed..Box$LT$dyn$u20$std..io..Write$GT$$GT$$C$std..io..error..Error$GT$$GT$17h35f3947b1b6d52a5E.exit97.us" ] br label %.lr.ph.us .loopexit.split.us: ; preds = %45, %41 @@ -1527,22 +1527,22 @@ define void @"_ZN85_$LT$alloc..vec..Vec$LT$uu_split..OutFile$GT$$u20$as$u20$uu_s cleanup br label %.thread -.split182.us: ; preds = %57 +.split183.us: ; preds = %57 %74 = landingpad { ptr, i32 } cleanup store i64 -9223372036854775808, ptr %42, align 8 - %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %.sroa.0.0168.us, i64 32 + %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %.sroa.0.0169.us, i64 32 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %.sroa.5.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(40) %.sroa.5, i64 40, i1 false) br label %.thread -._crit_edge173: ; preds = %4 +._crit_edge174: ; preds = %4 tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %2, i64 noundef %18, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.2256c04498b26e1e3096a86dc3b023b3.14) #17 unreachable -.lr.ph172.split: ; preds = %.lr.ph172 - br i1 %.not.us215, label %86, label %.split.us +.lr.ph173.split: ; preds = %.lr.ph173 + br i1 %.not.us216, label %86, label %.split.us -.split.us: ; preds = %"_ZN4core3ptr167drop_in_place$LT$core..result..Result$LT$std..io..buffered..bufwriter..BufWriter$LT$alloc..boxed..Box$LT$dyn$u20$std..io..Write$GT$$GT$$C$std..io..error..Error$GT$$GT$17h35f3947b1b6d52a5E.exit97.us", %.lr.ph172.split.us.split.preheader, %.lr.ph172.split +.split.us: ; preds = %"_ZN4core3ptr167drop_in_place$LT$core..result..Result$LT$std..io..buffered..bufwriter..BufWriter$LT$alloc..boxed..Box$LT$dyn$u20$std..io..Write$GT$$GT$$C$std..io..error..Error$GT$$GT$17h35f3947b1b6d52a5E.exit97.us", %.lr.ph173.split.us.split.preheader, %.lr.ph173.split call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %14) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %14, ptr noundef nonnull align 8 dereferenceable(48) %15, i64 48, i1 false) %75 = getelementptr inbounds [0 x { { { { i64, ptr, {} }, i64 } }, { i64, [5 x i64] }, i8, [7 x i8] }], ptr %21, i64 0, i64 %2, i32 1 @@ -1562,10 +1562,10 @@ define void @"_ZN85_$LT$alloc..vec..Vec$LT$uu_split..OutFile$GT$$u20$as$u20$uu_s call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %14) %81 = load i64, ptr %75, align 8, !range !53, !noundef !4 %82 = icmp eq i64 %81, -9223372036854775808 - br i1 %82, label %83, label %.thread124 + br i1 %82, label %83, label %.thread125 .loopexit.split-lp: ; preds = %"_ZN83_$LT$std..io..buffered..bufwriter..BufWriter$LT$W$GT$$u20$as$u20$std..io..Write$GT$5flush17h051dc54b7cac37c4E.exit.thread", %104, %95, %._crit_edge, %83 - %.not160 = phi i1 [ true, %"_ZN83_$LT$std..io..buffered..bufwriter..BufWriter$LT$W$GT$$u20$as$u20$std..io..Write$GT$5flush17h051dc54b7cac37c4E.exit.thread" ], [ true, %104 ], [ true, %95 ], [ true, %._crit_edge ], [ false, %83 ] + %.not161 = phi i1 [ true, %"_ZN83_$LT$std..io..buffered..bufwriter..BufWriter$LT$W$GT$$u20$as$u20$std..io..Write$GT$5flush17h051dc54b7cac37c4E.exit.thread" ], [ true, %104 ], [ true, %95 ], [ true, %._crit_edge ], [ false, %83 ] %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup br label %.thread @@ -1580,12 +1580,12 @@ define void @"_ZN85_$LT$alloc..vec..Vec$LT$uu_split..OutFile$GT$$u20$as$u20$uu_s call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #19 unreachable -86: ; preds = %.lr.ph172.split +86: ; preds = %.lr.ph173.split call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %13) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %13, ptr noundef nonnull align 8 dereferenceable(48) %15, i64 48, i1 false) %87 = load i64, ptr %13, align 8, !range !53, !noundef !4 - %.not139 = icmp eq i64 %87, -9223372036854775808 - br i1 %.not139, label %.critedge, label %"_ZN4core3ptr167drop_in_place$LT$core..result..Result$LT$std..io..buffered..bufwriter..BufWriter$LT$alloc..boxed..Box$LT$dyn$u20$std..io..Write$GT$$GT$$C$std..io..error..Error$GT$$GT$17h35f3947b1b6d52a5E.exit" + %.not140 = icmp eq i64 %87, -9223372036854775808 + br i1 %.not140, label %.critedge, label %"_ZN4core3ptr167drop_in_place$LT$core..result..Result$LT$std..io..buffered..bufwriter..BufWriter$LT$alloc..boxed..Box$LT$dyn$u20$std..io..Write$GT$$GT$$C$std..io..error..Error$GT$$GT$17h35f3947b1b6d52a5E.exit" "_ZN4core3ptr167drop_in_place$LT$core..result..Result$LT$std..io..buffered..bufwriter..BufWriter$LT$alloc..boxed..Box$LT$dyn$u20$std..io..Write$GT$$GT$$C$std..io..error..Error$GT$$GT$17h35f3947b1b6d52a5E.exit": ; preds = %86 call void @"_ZN4core3ptr115drop_in_place$LT$std..io..buffered..bufwriter..BufWriter$LT$alloc..boxed..Box$LT$dyn$u20$std..io..Write$GT$$GT$$GT$17h4325009b90f34d1dE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %13) @@ -1603,7 +1603,7 @@ define void @"_ZN85_$LT$alloc..vec..Vec$LT$uu_split..OutFile$GT$$u20$as$u20$uu_s store ptr %91, ptr %0, align 8 %93 = getelementptr inbounds i8, ptr %0, i64 8 store ptr %92, ptr %93, align 8 - br label %.thread128 + br label %.thread129 ._crit_edge: ; preds = %72 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %12) @@ -1660,8 +1660,8 @@ define void @"_ZN85_$LT$alloc..vec..Vec$LT$uu_split..OutFile$GT$$u20$as$u20$uu_s call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %7) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %7, ptr noundef nonnull align 8 dereferenceable(48) %15, i64 48, i1 false) %111 = load i64, ptr %7, align 8, !range !53, !noundef !4 - %.not140 = icmp eq i64 %111, -9223372036854775808 - br i1 %.not140, label %.critedge141, label %"_ZN4core3ptr167drop_in_place$LT$core..result..Result$LT$std..io..buffered..bufwriter..BufWriter$LT$alloc..boxed..Box$LT$dyn$u20$std..io..Write$GT$$GT$$C$std..io..error..Error$GT$$GT$17h35f3947b1b6d52a5E.exit89" + %.not141 = icmp eq i64 %111, -9223372036854775808 + br i1 %.not141, label %.critedge142, label %"_ZN4core3ptr167drop_in_place$LT$core..result..Result$LT$std..io..buffered..bufwriter..BufWriter$LT$alloc..boxed..Box$LT$dyn$u20$std..io..Write$GT$$GT$$C$std..io..error..Error$GT$$GT$17h35f3947b1b6d52a5E.exit89" "_ZN4core3ptr167drop_in_place$LT$core..result..Result$LT$std..io..buffered..bufwriter..BufWriter$LT$alloc..boxed..Box$LT$dyn$u20$std..io..Write$GT$$GT$$C$std..io..error..Error$GT$$GT$17h35f3947b1b6d52a5E.exit89": ; preds = %110 call void @"_ZN4core3ptr115drop_in_place$LT$std..io..buffered..bufwriter..BufWriter$LT$alloc..boxed..Box$LT$dyn$u20$std..io..Write$GT$$GT$$GT$17h4325009b90f34d1dE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %7) @@ -1669,7 +1669,7 @@ define void @"_ZN85_$LT$alloc..vec..Vec$LT$uu_split..OutFile$GT$$u20$as$u20$uu_s call void @_ZN4core6option13unwrap_failed17hcb3a256a9f1ca882E(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.2256c04498b26e1e3096a86dc3b023b3.25) #17 unreachable -.critedge141: ; preds = %110 +.critedge142: ; preds = %110 %112 = getelementptr inbounds i8, ptr %7, i64 8 %113 = load ptr, ptr %112, align 8, !nonnull !4 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %7) @@ -1679,14 +1679,14 @@ define void @"_ZN85_$LT$alloc..vec..Vec$LT$uu_split..OutFile$GT$$u20$as$u20$uu_s store ptr %115, ptr %0, align 8 %117 = getelementptr inbounds i8, ptr %0, i64 8 store ptr %116, ptr %117, align 8 - br label %.thread128 + br label %.thread129 "_ZN83_$LT$std..io..buffered..bufwriter..BufWriter$LT$W$GT$$u20$as$u20$std..io..Write$GT$5flush17h051dc54b7cac37c4E.exit.thread": ; preds = %.noexc90.us, %"_ZN83_$LT$std..io..buffered..bufwriter..BufWriter$LT$W$GT$$u20$as$u20$std..io..Write$GT$5flush17h051dc54b7cac37c4E.exit.us" - %.0.i123.us = phi ptr [ %52, %"_ZN83_$LT$std..io..buffered..bufwriter..BufWriter$LT$W$GT$$u20$as$u20$std..io..Write$GT$5flush17h051dc54b7cac37c4E.exit.us" ], [ %43, %.noexc90.us ] - %118 = invoke { ptr, ptr } @"_ZN6uucore4mods5error139_$LT$impl$u20$core..convert..From$LT$std..io..error..Error$GT$$u20$for$u20$alloc..boxed..Box$LT$dyn$u20$uucore..mods..error..UError$GT$$GT$4from17h5f3f9db19071e545E"(ptr noundef nonnull %.0.i123.us) + %.0.i124.us = phi ptr [ %52, %"_ZN83_$LT$std..io..buffered..bufwriter..BufWriter$LT$W$GT$$u20$as$u20$std..io..Write$GT$5flush17h051dc54b7cac37c4E.exit.us" ], [ %43, %.noexc90.us ] + %118 = invoke { ptr, ptr } @"_ZN6uucore4mods5error139_$LT$impl$u20$core..convert..From$LT$std..io..error..Error$GT$$u20$for$u20$alloc..boxed..Box$LT$dyn$u20$uucore..mods..error..UError$GT$$GT$4from17h5f3f9db19071e545E"(ptr noundef nonnull %.0.i124.us) to label %119 unwind label %.loopexit.split-lp -.thread128: ; preds = %.thread124, %.critedge, %.critedge141, %131, %"_ZN4core3ptr167drop_in_place$LT$core..result..Result$LT$std..io..buffered..bufwriter..BufWriter$LT$alloc..boxed..Box$LT$dyn$u20$std..io..Write$GT$$GT$$C$std..io..error..Error$GT$$GT$17h35f3947b1b6d52a5E.exit101" +.thread129: ; preds = %.thread125, %.critedge, %.critedge142, %131, %"_ZN4core3ptr167drop_in_place$LT$core..result..Result$LT$std..io..buffered..bufwriter..BufWriter$LT$alloc..boxed..Box$LT$dyn$u20$std..io..Write$GT$$GT$$C$std..io..error..Error$GT$$GT$17h35f3947b1b6d52a5E.exit101" call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %15) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) ret void @@ -1701,15 +1701,15 @@ define void @"_ZN85_$LT$alloc..vec..Vec$LT$uu_split..OutFile$GT$$u20$as$u20$uu_s %.not73 = icmp eq i64 %123, -9223372036854775808 br i1 %.not73, label %126, label %131 -.thread124: ; preds = %80 +.thread125: ; preds = %80 %124 = getelementptr inbounds i8, ptr %0, i64 8 store ptr %75, ptr %124, align 8 store ptr null, ptr %0, align 8 %125 = load i64, ptr %15, align 8, !range !53, !noundef !4 - %.not73126 = icmp eq i64 %125, -9223372036854775808 - br i1 %.not73126, label %126, label %.thread128 + %.not73127 = icmp eq i64 %125, -9223372036854775808 + br i1 %.not73127, label %126, label %.thread129 -126: ; preds = %119, %.thread124 +126: ; preds = %119, %.thread125 call void @llvm.experimental.noalias.scope.decl(metadata !277) call void @llvm.experimental.noalias.scope.decl(metadata !280) call void @llvm.experimental.noalias.scope.decl(metadata !283) @@ -1728,19 +1728,19 @@ define void @"_ZN85_$LT$alloc..vec..Vec$LT$uu_split..OutFile$GT$$u20$as$u20$uu_s "_ZN4core3ptr167drop_in_place$LT$core..result..Result$LT$std..io..buffered..bufwriter..BufWriter$LT$alloc..boxed..Box$LT$dyn$u20$std..io..Write$GT$$GT$$C$std..io..error..Error$GT$$GT$17h35f3947b1b6d52a5E.exit101": ; preds = %126, %129 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5), !noalias !289 - br label %.thread128 + br label %.thread129 131: ; preds = %119 call void @"_ZN4core3ptr115drop_in_place$LT$std..io..buffered..bufwriter..BufWriter$LT$alloc..boxed..Box$LT$dyn$u20$std..io..Write$GT$$GT$$GT$17h4325009b90f34d1dE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %15) - br label %.thread128 + br label %.thread129 -.thread136: ; preds = %.thread.thread, %137, %136, %135 - %.pn74106 = phi { ptr, i32 } [ %.pn74107, %137 ], [ %.pn74107134, %136 ], [ %.pn74107, %135 ], [ %133, %.thread.thread ] +.thread137: ; preds = %.thread.thread, %137, %136, %135 + %.pn74106 = phi { ptr, i32 } [ %.pn74107, %137 ], [ %.pn74107135, %136 ], [ %.pn74107, %135 ], [ %133, %.thread.thread ] resume { ptr, i32 } %.pn74106 -.thread: ; preds = %.loopexit.split.us, %.loopexit.split-lp, %.split182.us - %.pn74107 = phi { ptr, i32 } [ %74, %.split182.us ], [ %lpad.loopexit.us, %.loopexit.split.us ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] - %.056105 = phi i1 [ true, %.split182.us ], [ true, %.loopexit.split.us ], [ %.not160, %.loopexit.split-lp ] +.thread: ; preds = %.loopexit.split.us, %.loopexit.split-lp, %.split183.us + %.pn74107 = phi { ptr, i32 } [ %74, %.split183.us ], [ %lpad.loopexit.us, %.loopexit.split.us ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] + %.056105 = phi i1 [ true, %.split183.us ], [ true, %.loopexit.split.us ], [ %.not161, %.loopexit.split-lp ] %132 = load i64, ptr %15, align 8, !range !53, !noundef !4 %.not76 = icmp eq i64 %132, -9223372036854775808 br i1 %.not76, label %136, label %135 @@ -1750,20 +1750,20 @@ define void @"_ZN85_$LT$alloc..vec..Vec$LT$uu_split..OutFile$GT$$u20$as$u20$uu_s cleanup call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %75, ptr noundef nonnull align 8 dereferenceable(48) %14, i64 48, i1 false) %134 = load i64, ptr %15, align 8, !range !53, !noundef !4 - %.not76132 = icmp eq i64 %134, -9223372036854775808 - br i1 %.not76132, label %136, label %.thread136 + %.not76133 = icmp eq i64 %134, -9223372036854775808 + br i1 %.not76133, label %136, label %.thread137 135: ; preds = %.thread - br i1 %.056105, label %137, label %.thread136 + br i1 %.056105, label %137, label %.thread137 136: ; preds = %.thread.thread, %.thread - %.pn74107134 = phi { ptr, i32 } [ %133, %.thread.thread ], [ %.pn74107, %.thread ] + %.pn74107135 = phi { ptr, i32 } [ %133, %.thread.thread ], [ %.pn74107, %.thread ] invoke fastcc void @"_ZN4core3ptr167drop_in_place$LT$core..result..Result$LT$std..io..buffered..bufwriter..BufWriter$LT$alloc..boxed..Box$LT$dyn$u20$std..io..Write$GT$$GT$$C$std..io..error..Error$GT$$GT$17h35f3947b1b6d52a5E"(ptr noalias noundef nonnull align 8 dereferenceable(48) %15) #18 - to label %.thread136 unwind label %84 + to label %.thread137 unwind label %84 137: ; preds = %135 invoke void @"_ZN4core3ptr115drop_in_place$LT$std..io..buffered..bufwriter..BufWriter$LT$alloc..boxed..Box$LT$dyn$u20$std..io..Write$GT$$GT$$GT$17h4325009b90f34d1dE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %15) #18 - to label %.thread136 unwind label %84 + to label %.thread137 unwind label %84 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/coreutils-rs/optimized/5b0lpdyoyou0x1j5.ll b/bench/coreutils-rs/optimized/5b0lpdyoyou0x1j5.ll index 403faf4530d..0aa6ae5b391 100644 --- a/bench/coreutils-rs/optimized/5b0lpdyoyou0x1j5.ll +++ b/bench/coreutils-rs/optimized/5b0lpdyoyou0x1j5.ll @@ -49,7 +49,7 @@ define hidden void @"_ZN106_$LT$core..iter..adapters..GenericShunt$LT$I$C$R$GT$$ call void @"_ZN82_$LT$std..io..Lines$LT$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h2a6c21fce2619a96E"(ptr noalias nocapture noundef nonnull sret({ i64, [2 x i64] }) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull align 8 dereferenceable(56) %1), !noalias !17 %7 = load i64, ptr %4, align 8, !range !18, !noalias !14, !noundef !9 %.not.i.i = icmp eq i64 %7, -9223372036854775807 - br i1 %.not.i.i, label %.thread4, label %8 + br i1 %.not.i.i, label %.thread6, label %8 8: ; preds = %2 %.sroa.2.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %4, i64 8 @@ -87,7 +87,7 @@ define hidden void @"_ZN106_$LT$core..iter..adapters..GenericShunt$LT$I$C$R$GT$$ store ptr %.sroa.2.0.copyload.i.i, ptr %6, align 8, !alias.scope !11, !noalias !19 resume { ptr, i32 } %17 -.thread4: ; preds = %2 +.thread6: ; preds = %2 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4), !noalias !14 br label %"_ZN4core3ptr86drop_in_place$LT$core..ops..control_flow..ControlFlow$LT$alloc..string..String$GT$$GT$17h8893d62bc30bcf06E.llvm.13331784394299603573.exit" @@ -110,7 +110,7 @@ define hidden void @"_ZN106_$LT$core..iter..adapters..GenericShunt$LT$I$C$R$GT$$ 19: ; preds = %.thread, %"_ZN4core3ptr86drop_in_place$LT$core..ops..control_flow..ControlFlow$LT$alloc..string..String$GT$$GT$17h8893d62bc30bcf06E.llvm.13331784394299603573.exit" ret void -"_ZN4core3ptr86drop_in_place$LT$core..ops..control_flow..ControlFlow$LT$alloc..string..String$GT$$GT$17h8893d62bc30bcf06E.llvm.13331784394299603573.exit": ; preds = %.thread4, %18 +"_ZN4core3ptr86drop_in_place$LT$core..ops..control_flow..ControlFlow$LT$alloc..string..String$GT$$GT$17h8893d62bc30bcf06E.llvm.13331784394299603573.exit": ; preds = %.thread6, %18 store i64 -9223372036854775808, ptr %0, align 8 br label %19 } @@ -176,12 +176,14 @@ define hidden void @"_ZN106_$LT$core..iter..adapters..GenericShunt$LT$I$C$R$GT$$ br label %20 19: ; preds = %"_ZN4core3ptr126drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$std..io..error..Error$GT$$GT$$GT$17h413bcfbaa0be1bc5E.exit.i.i", %8 + %.sroa.8.1.i = phi i64 [ undef, %"_ZN4core3ptr126drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$std..io..error..Error$GT$$GT$$GT$17h413bcfbaa0be1bc5E.exit.i.i" ], [ %.sroa.3.0.copyload.i, %8 ] + %.sroa.6.1.i = phi ptr [ undef, %"_ZN4core3ptr126drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$std..io..error..Error$GT$$GT$$GT$17h413bcfbaa0be1bc5E.exit.i.i" ], [ %.sroa.2.0.copyload.i, %8 ] call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4), !noalias !40 store i64 %7, ptr %0, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 - store ptr %.sroa.2.0.copyload.i, ptr %.sroa.4.0..sroa_idx, align 8 + store ptr %.sroa.6.1.i, ptr %.sroa.4.0..sroa_idx, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 - store i64 %.sroa.3.0.copyload.i, ptr %.sroa.5.0..sroa_idx, align 8 + store i64 %.sroa.8.1.i, ptr %.sroa.5.0..sroa_idx, align 8 br label %20 20: ; preds = %18, %19 @@ -1191,11 +1193,13 @@ define hidden void @_ZN4core4iter6traits8iterator8Iterator8try_fold17h8caefec967 br label %19 18: ; preds = %"_ZN4core3ptr126drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$std..io..error..Error$GT$$GT$$GT$17h413bcfbaa0be1bc5E.exit.i", %8 + %.sroa.8.1 = phi i64 [ undef, %"_ZN4core3ptr126drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$std..io..error..Error$GT$$GT$$GT$17h413bcfbaa0be1bc5E.exit.i" ], [ %.sroa.3.0.copyload, %8 ] + %.sroa.6.1 = phi ptr [ undef, %"_ZN4core3ptr126drop_in_place$LT$core..option..Option$LT$core..result..Result$LT$core..convert..Infallible$C$std..io..error..Error$GT$$GT$$GT$17h413bcfbaa0be1bc5E.exit.i" ], [ %.sroa.2.0.copyload, %8 ] store i64 %7, ptr %0, align 8, !alias.scope !233 %.sroa.29.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 - store ptr %.sroa.2.0.copyload, ptr %.sroa.29.0..sroa_idx, align 8, !alias.scope !233 + store ptr %.sroa.6.1, ptr %.sroa.29.0..sroa_idx, align 8, !alias.scope !233 %.sroa.310.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 - store i64 %.sroa.3.0.copyload, ptr %.sroa.310.0..sroa_idx, align 8, !alias.scope !233 + store i64 %.sroa.8.1, ptr %.sroa.310.0..sroa_idx, align 8, !alias.scope !233 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) br label %19 diff --git a/bench/coreutils-rs/optimized/5dvo81hn4cx7e334.ll b/bench/coreutils-rs/optimized/5dvo81hn4cx7e334.ll index 47c09fa217d..2c6e44b44bc 100644 --- a/bench/coreutils-rs/optimized/5dvo81hn4cx7e334.ll +++ b/bench/coreutils-rs/optimized/5dvo81hn4cx7e334.ll @@ -2278,7 +2278,7 @@ define { ptr, ptr } @_ZN6uu_cat9cat_files17haf5123c846a83d69E(ptr noalias nounde %117 = add nsw i32 %116, -4096 %118 = lshr exact i32 %117, 12 switch i32 %118, label %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.i [ - i32 5, label %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread137.i + i32 5, label %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread135.i i32 1, label %123 i32 0, label %124 i32 11, label %125 @@ -2293,27 +2293,27 @@ define { ptr, ptr } @_ZN6uu_cat9cat_files17haf5123c846a83d69E(ptr noalias nounde %121 = ptrtoint ptr %120 to i64 %122 = and i64 %121, -4294967293 %or.cond.i.i = icmp eq i64 %122, 171798691842 - br i1 %or.cond.i.i, label %129, label %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread130.i + br i1 %or.cond.i.i, label %129, label %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread128.i 123: ; preds = %115 - br label %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread137.i + br label %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread135.i 124: ; preds = %115 - br label %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread137.i + br label %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread135.i 125: ; preds = %115 - br label %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread137.i + br label %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread135.i 126: ; preds = %115 - br label %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread137.i + br label %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread135.i 127: ; preds = %115 - br label %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread137.i + br label %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread135.i 128: ; preds = %115 - br label %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread137.i + br label %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread135.i -_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread130.i: ; preds = %"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17hcabb0cc8ada17cf5E.exit.i.i", %119 +_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread128.i: ; preds = %"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17hcabb0cc8ada17cf5E.exit.i.i", %119 %.sroa.0.1.i = phi i64 [ -9223372036854775803, %"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17hcabb0cc8ada17cf5E.exit.i.i" ], [ -9223372036854775808, %119 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18), !noalias !660 br label %134 @@ -2334,9 +2334,9 @@ _ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread130.i: ; preds = %"_ZN "_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17hcabb0cc8ada17cf5E.exit.i.i": ; preds = %131, %.noexc39 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13), !noalias !675 - br label %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread130.i + br label %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread128.i -_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread137.i: ; preds = %128, %127, %126, %125, %124, %123, %115 +_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread135.i: ; preds = %128, %127, %126, %125, %124, %123, %115 %.sroa.14.0.ph.i = phi ptr [ inttoptr (i64 4 to ptr), %115 ], [ inttoptr (i64 5 to ptr), %123 ], [ inttoptr (i64 6 to ptr), %124 ], [ inttoptr (i64 7 to ptr), %125 ], [ null, %126 ], [ inttoptr (i64 1 to ptr), %127 ], [ inttoptr (i64 3 to ptr), %128 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18), !noalias !660 br label %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread.i @@ -2370,8 +2370,8 @@ _ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit._crit_edge.i: ; preds = %.no %.pre.i = ptrtoint ptr %.sroa.14.0.copyload.i to i64 br label %134 -_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread.i: ; preds = %.noexc41, %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread137.i, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcb2c9d8561a0c18bE.exit.i.i" - %.sroa.14.2127.i = phi ptr [ %.sroa.14.0.copyload.i, %.noexc41 ], [ %.sroa.14.0.ph.i, %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread137.i ], [ inttoptr (i64 2 to ptr), %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcb2c9d8561a0c18bE.exit.i.i" ] +_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread.i: ; preds = %.noexc41, %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread135.i, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcb2c9d8561a0c18bE.exit.i.i" + %.sroa.14.2127.i = phi ptr [ %.sroa.14.0.copyload.i, %.noexc41 ], [ %.sroa.14.0.ph.i, %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread135.i ], [ inttoptr (i64 2 to ptr), %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcb2c9d8561a0c18bE.exit.i.i" ] %133 = ptrtoint ptr %.sroa.14.2127.i to i64 %.sroa.14.0.extract.trunc85.i = trunc i64 %133 to i8 switch i8 %.sroa.14.0.extract.trunc85.i, label %135 [ @@ -2380,17 +2380,17 @@ _ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread.i: ; preds = %.noexc4 i8 7, label %147 ] -134: ; preds = %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit._crit_edge.i, %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread130.i - %.pre-phi.i = phi i64 [ %.pre.i, %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit._crit_edge.i ], [ %121, %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread130.i ] - %.sroa.0.2136.i = phi i64 [ %.sroa.0.0.copyload.i, %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit._crit_edge.i ], [ %.sroa.0.1.i, %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread130.i ] - %.sroa.26.1135.i = phi i64 [ %.sroa.26.0.copyload.i, %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit._crit_edge.i ], [ undef, %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread130.i ] +134: ; preds = %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit._crit_edge.i, %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread128.i + %.pre-phi.i = phi i64 [ %.pre.i, %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit._crit_edge.i ], [ %121, %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread128.i ] + %.sroa.0.2134.i = phi i64 [ %.sroa.0.0.copyload.i, %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit._crit_edge.i ], [ %.sroa.0.1.i, %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread128.i ] + %.sroa.26.1133.i = phi i64 [ %.sroa.26.0.copyload.i, %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit._crit_edge.i ], [ undef, %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread128.i ] %.sroa.14.0.extract.trunc.i = trunc i64 %.pre-phi.i to i8 %.sroa.14.1.extract.shift.i = lshr i64 %.pre-phi.i, 8 %.sroa.14.1.extract.trunc.i = trunc nuw i64 %.sroa.14.1.extract.shift.i to i56 - store i64 %.sroa.0.2136.i, ptr %38, align 8, !alias.scope !646, !noalias !698 + store i64 %.sroa.0.2134.i, ptr %38, align 8, !alias.scope !646, !noalias !698 store i8 %.sroa.14.0.extract.trunc.i, ptr %.sroa.235.0..sroa_idx.i, align 8, !alias.scope !646, !noalias !698 store i56 %.sroa.14.1.extract.trunc.i, ptr %.sroa.336.0..sroa_idx.i, align 1, !alias.scope !646, !noalias !698 - store i64 %.sroa.26.1135.i, ptr %.sroa.336.sroa.2.0..sroa.336.0..sroa_idx.sroa_idx.i, align 8, !alias.scope !646, !noalias !698 + store i64 %.sroa.26.1133.i, ptr %.sroa.336.sroa.2.0..sroa.336.0..sroa_idx.sroa_idx.i, align 8, !alias.scope !646, !noalias !698 br label %_ZN6uu_cat8cat_path17h20a45fe1b6137f26E.exit.thread 135: ; preds = %_ZN6uu_cat14get_input_type17h5485037cbbe00a1aE.exit.thread.i diff --git a/bench/coreutils-rs/optimized/8pifh3mcn5bzw4a.ll b/bench/coreutils-rs/optimized/8pifh3mcn5bzw4a.ll index f205019eb14..656d1891939 100644 --- a/bench/coreutils-rs/optimized/8pifh3mcn5bzw4a.ll +++ b/bench/coreutils-rs/optimized/8pifh3mcn5bzw4a.ll @@ -640,8 +640,8 @@ _ZN3std4sync4mpmc7context7Context10try_select17h575e5fea5660eecdE.exit: ; preds %32 = load atomic i64, ptr %31 acquire, align 8, !noalias !70 switch i64 %32, label %_ZN3std4sync4mpmc7context7Context10wait_until17h4bf656f2ae3b6de5E.exit.thread5 [ i64 0, label %33 - i64 1, label %.thread.loopexit40.i - i64 2, label %.thread.loopexit40.i + i64 1, label %.thread.loopexit42.i + i64 2, label %.thread.loopexit42.i ] 33: ; preds = %.split.us.i @@ -652,8 +652,8 @@ _ZN3std4sync4mpmc7context7Context10try_select17h575e5fea5660eecdE.exit: ; preds %34 = load atomic i64, ptr %31 acquire, align 8, !noalias !70 switch i64 %34, label %_ZN3std4sync4mpmc7context7Context10wait_until17h4bf656f2ae3b6de5E.exit.thread5 [ i64 0, label %35 - i64 1, label %.thread.loopexit40.i - i64 2, label %.thread.loopexit40.i + i64 1, label %.thread.loopexit42.i + i64 2, label %.thread.loopexit42.i ] 35: ; preds = %.split.i @@ -672,14 +672,14 @@ _ZN3std4sync4mpmc7context7Context10try_select17h575e5fea5660eecdE.exit: ; preds "_ZN77_$LT$std..sys..pal..unix..time..Timespec$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h6e44c7c4099b6ff7E.exit.i": ; preds = %40 %43 = cmpxchg ptr %31, i64 0, i64 1 acq_rel acquire, align 8, !noalias !70 %44 = extractvalue { i64, i1 } %43, 1 - br i1 %44, label %.thread.loopexit40.i, label %45 + br i1 %44, label %.thread.loopexit42.i, label %45 45: ; preds = %"_ZN77_$LT$std..sys..pal..unix..time..Timespec$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h6e44c7c4099b6ff7E.exit.i" %46 = extractvalue { i64, i1 } %43, 0 switch i64 %46, label %_ZN3std4sync4mpmc7context7Context10wait_until17h4bf656f2ae3b6de5E.exit.thread5 [ i64 0, label %50 - i64 1, label %.thread.loopexit40.i - i64 2, label %.thread.loopexit40.i + i64 1, label %.thread.loopexit42.i + i64 2, label %.thread.loopexit42.i ] select.unfold.i: ; preds = %40, %35 @@ -693,7 +693,7 @@ select.unfold.i: ; preds = %40, %35 tail call void @_ZN4core9panicking5panic17h44790a89027c670fE(ptr noalias noundef nonnull readonly align 1 @anon.8ea4829e733e0542ce4891059a8250f0.4, i64 noundef 40, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.8ea4829e733e0542ce4891059a8250f0.6) #16 unreachable -.thread.loopexit40.i: ; preds = %.split.i, %.split.i, %.split.us.i, %.split.us.i, %45, %45, %"_ZN77_$LT$std..sys..pal..unix..time..Timespec$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h6e44c7c4099b6ff7E.exit.i" +.thread.loopexit42.i: ; preds = %.split.i, %.split.i, %.split.us.i, %.split.us.i, %45, %45, %"_ZN77_$LT$std..sys..pal..unix..time..Timespec$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h6e44c7c4099b6ff7E.exit.i" call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) call fastcc void @_ZN3std4sync4mpmc5waker9SyncWaker10unregister17h3e2583f705eca2b5E(ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 %9, i64 noundef %6) @@ -704,11 +704,11 @@ select.unfold.i: ; preds = %40, %35 _ZN3std4sync4mpmc7context7Context10wait_until17h4bf656f2ae3b6de5E.exit.thread5: ; preds = %.split.i, %.split.us.i, %45, %"_ZN4core3ptr50drop_in_place$LT$std..sync..mpmc..waker..Entry$GT$17h9060bbfa908abec7E.exit" ret void -53: ; preds = %.thread.loopexit40.i +53: ; preds = %.thread.loopexit42.i tail call void @_ZN4core6option13unwrap_failed17hcb3a256a9f1ca882E(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.8ea4829e733e0542ce4891059a8250f0.7) #16 unreachable -54: ; preds = %.thread.loopexit40.i +54: ; preds = %.thread.loopexit42.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(24) %3, i64 24, i1 false) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) tail call void @llvm.experimental.noalias.scope.decl(metadata !73) @@ -1175,8 +1175,8 @@ _ZN3std4sync4mpmc7context7Context10try_select17h575e5fea5660eecdE.exit: ; preds %35 = load atomic i64, ptr %34 acquire, align 8, !noalias !152 switch i64 %35, label %_ZN3std4sync4mpmc7context7Context10wait_until17h4bf656f2ae3b6de5E.exit.thread5 [ i64 0, label %36 - i64 1, label %.thread.loopexit40.i - i64 2, label %.thread.loopexit40.i + i64 1, label %.thread.loopexit42.i + i64 2, label %.thread.loopexit42.i ] 36: ; preds = %.split.us.i @@ -1187,8 +1187,8 @@ _ZN3std4sync4mpmc7context7Context10try_select17h575e5fea5660eecdE.exit: ; preds %37 = load atomic i64, ptr %34 acquire, align 8, !noalias !152 switch i64 %37, label %_ZN3std4sync4mpmc7context7Context10wait_until17h4bf656f2ae3b6de5E.exit.thread5 [ i64 0, label %38 - i64 1, label %.thread.loopexit40.i - i64 2, label %.thread.loopexit40.i + i64 1, label %.thread.loopexit42.i + i64 2, label %.thread.loopexit42.i ] 38: ; preds = %.split.i @@ -1207,14 +1207,14 @@ _ZN3std4sync4mpmc7context7Context10try_select17h575e5fea5660eecdE.exit: ; preds "_ZN77_$LT$std..sys..pal..unix..time..Timespec$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h6e44c7c4099b6ff7E.exit.i": ; preds = %43 %46 = cmpxchg ptr %34, i64 0, i64 1 acq_rel acquire, align 8, !noalias !152 %47 = extractvalue { i64, i1 } %46, 1 - br i1 %47, label %.thread.loopexit40.i, label %48 + br i1 %47, label %.thread.loopexit42.i, label %48 48: ; preds = %"_ZN77_$LT$std..sys..pal..unix..time..Timespec$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h6e44c7c4099b6ff7E.exit.i" %49 = extractvalue { i64, i1 } %46, 0 switch i64 %49, label %_ZN3std4sync4mpmc7context7Context10wait_until17h4bf656f2ae3b6de5E.exit.thread5 [ i64 0, label %53 - i64 1, label %.thread.loopexit40.i - i64 2, label %.thread.loopexit40.i + i64 1, label %.thread.loopexit42.i + i64 2, label %.thread.loopexit42.i ] select.unfold.i: ; preds = %43, %38 @@ -1228,7 +1228,7 @@ select.unfold.i: ; preds = %43, %38 tail call void @_ZN4core9panicking5panic17h44790a89027c670fE(ptr noalias noundef nonnull readonly align 1 @anon.8ea4829e733e0542ce4891059a8250f0.4, i64 noundef 40, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.8ea4829e733e0542ce4891059a8250f0.8) #16 unreachable -.thread.loopexit40.i: ; preds = %.split.i, %.split.i, %.split.us.i, %.split.us.i, %48, %48, %"_ZN77_$LT$std..sys..pal..unix..time..Timespec$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h6e44c7c4099b6ff7E.exit.i" +.thread.loopexit42.i: ; preds = %.split.i, %.split.i, %.split.us.i, %.split.us.i, %48, %48, %"_ZN77_$LT$std..sys..pal..unix..time..Timespec$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h6e44c7c4099b6ff7E.exit.i" call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) call fastcc void @_ZN3std4sync4mpmc5waker9SyncWaker10unregister17h3e2583f705eca2b5E(ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 %9, i64 noundef %6) @@ -1239,11 +1239,11 @@ select.unfold.i: ; preds = %43, %38 _ZN3std4sync4mpmc7context7Context10wait_until17h4bf656f2ae3b6de5E.exit.thread5: ; preds = %.split.i, %.split.us.i, %48, %"_ZN4core3ptr50drop_in_place$LT$std..sync..mpmc..waker..Entry$GT$17h9060bbfa908abec7E.exit" ret void -56: ; preds = %.thread.loopexit40.i +56: ; preds = %.thread.loopexit42.i tail call void @_ZN4core6option13unwrap_failed17hcb3a256a9f1ca882E(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.8ea4829e733e0542ce4891059a8250f0.9) #16 unreachable -57: ; preds = %.thread.loopexit40.i +57: ; preds = %.thread.loopexit42.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(24) %3, i64 24, i1 false) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) tail call void @llvm.experimental.noalias.scope.decl(metadata !155) @@ -1467,16 +1467,16 @@ common.resume: ; preds = %44, %17 to label %_ZN3std4sync4mpmc5waker5Waker10disconnect17hb7d793ca29eab969E.exit unwind label %.loopexit.split-lp .lr.ph.i: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h95c667e9016d1720E.exit", %_ZN3std10sys_common14thread_parking5futex6Parker6unpark17h7c9c6eabf53b77f5E.exit.i - %.sroa.0.012.i = phi ptr [ %30, %_ZN3std10sys_common14thread_parking5futex6Parker6unpark17h7c9c6eabf53b77f5E.exit.i ], [ %25, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h95c667e9016d1720E.exit" ] - %30 = getelementptr inbounds i8, ptr %.sroa.0.012.i, i64 24 - %.val.i = load ptr, ptr %.sroa.0.012.i, align 8, !noalias !198, !nonnull !4, !noundef !4 + %.sroa.0.013.i = phi ptr [ %30, %_ZN3std10sys_common14thread_parking5futex6Parker6unpark17h7c9c6eabf53b77f5E.exit.i ], [ %25, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h95c667e9016d1720E.exit" ] + %30 = getelementptr inbounds i8, ptr %.sroa.0.013.i, i64 24 + %.val.i = load ptr, ptr %.sroa.0.013.i, align 8, !noalias !198, !nonnull !4, !noundef !4 %31 = getelementptr inbounds i8, ptr %.val.i, i64 24 %32 = cmpxchg ptr %31, i64 0, i64 2 acq_rel acquire, align 8, !noalias !198 %33 = extractvalue { i64, i1 } %32, 1 br i1 %33, label %34, label %_ZN3std10sys_common14thread_parking5futex6Parker6unpark17h7c9c6eabf53b77f5E.exit.i 34: ; preds = %.lr.ph.i - %35 = load ptr, ptr %.sroa.0.012.i, align 8, !noalias !198, !nonnull !4, !noundef !4 + %35 = load ptr, ptr %.sroa.0.013.i, align 8, !noalias !198, !nonnull !4, !noundef !4 %36 = getelementptr inbounds i8, ptr %35, i64 16 %37 = load ptr, ptr %36, align 8, !noalias !198, !nonnull !4, !noundef !4 %38 = getelementptr inbounds i8, ptr %37, i64 40 @@ -1847,7 +1847,7 @@ _ZN3std4sync4mpmc5waker17current_thread_id5DUMMY7__getit17had567bd67086969cE.exi .lr.ph.i.i: ; preds = %"_ZN3std4sync4mpmc5waker5Waker10try_select28_$u7b$$u7b$closure$u7d$$u7d$17h754490dc93005ef2E.exit.i.i", %"_ZN4core6result19Result$LT$T$C$E$GT$6expect17h8d92fa3dad94a9caE.exit.i" %49 = phi ptr [ %50, %"_ZN3std4sync4mpmc5waker5Waker10try_select28_$u7b$$u7b$closure$u7d$$u7d$17h754490dc93005ef2E.exit.i.i" ], [ %47, %"_ZN4core6result19Result$LT$T$C$E$GT$6expect17h8d92fa3dad94a9caE.exit.i" ] - %.016.i.i = phi i64 [ %74, %"_ZN3std4sync4mpmc5waker5Waker10try_select28_$u7b$$u7b$closure$u7d$$u7d$17h754490dc93005ef2E.exit.i.i" ], [ 0, %"_ZN4core6result19Result$LT$T$C$E$GT$6expect17h8d92fa3dad94a9caE.exit.i" ] + %.015.i.i = phi i64 [ %74, %"_ZN3std4sync4mpmc5waker5Waker10try_select28_$u7b$$u7b$closure$u7d$$u7d$17h754490dc93005ef2E.exit.i.i" ], [ 0, %"_ZN4core6result19Result$LT$T$C$E$GT$6expect17h8d92fa3dad94a9caE.exit.i" ] %50 = getelementptr inbounds i8, ptr %49, i64 24 tail call void @llvm.experimental.noalias.scope.decl(metadata !259) %51 = load ptr, ptr %49, align 8, !alias.scope !259, !noalias !262, !nonnull !4, !noundef !4 @@ -1889,21 +1889,21 @@ _ZN3std4sync4mpmc7context7Context12store_packet17h71587165d6a8dce1E.exit.i.i.i: to label %.noexc5 unwind label %29 "_ZN3std4sync4mpmc5waker5Waker10try_select28_$u7b$$u7b$closure$u7d$$u7d$17h754490dc93005ef2E.exit.i.i": ; preds = %54, %.lr.ph.i.i - %74 = add nuw nsw i64 %.016.i.i, 1 + %74 = add nuw nsw i64 %.015.i.i, 1 %75 = icmp eq ptr %50, %48 br i1 %75, label %"_ZN4core3ptr78drop_in_place$LT$core..option..Option$LT$std..sync..mpmc..waker..Entry$GT$$GT$17he18943a2a7fe6bb5E.exit", label %.lr.ph.i.i .noexc5: ; preds = %72, %_ZN3std4sync4mpmc7context7Context12store_packet17h71587165d6a8dce1E.exit.i.i.i - %76 = icmp ult i64 %.016.i.i, %38 + %76 = icmp ult i64 %.015.i.i, %38 tail call void @llvm.assume(i1 %76) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) tail call void @llvm.experimental.noalias.scope.decl(metadata !267) %77 = load i64, ptr %37, align 8, !alias.scope !270, !noalias !271, !noundef !4 - %.not.i.i = icmp ugt i64 %77, %.016.i.i + %.not.i.i = icmp ugt i64 %77, %.015.i.i br i1 %.not.i.i, label %_ZN3std4sync4mpmc5waker5Waker10try_select17ha74c1d6f879212f7E.exit, label %78 78: ; preds = %.noexc5 - invoke void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6remove13assert_failed17hccb0accdd75e9128E"(i64 noundef %.016.i.i, i64 noundef %77, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.8ea4829e733e0542ce4891059a8250f0.17) #16 + invoke void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6remove13assert_failed17hccb0accdd75e9128E"(i64 noundef %.015.i.i, i64 noundef %77, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.8ea4829e733e0542ce4891059a8250f0.17) #16 to label %.noexc6 unwind label %29 .noexc6: ; preds = %78 @@ -1911,10 +1911,10 @@ _ZN3std4sync4mpmc7context7Context12store_packet17h71587165d6a8dce1E.exit.i.i.i: _ZN3std4sync4mpmc5waker5Waker10try_select17ha74c1d6f879212f7E.exit: ; preds = %.noexc5 %79 = load ptr, ptr %46, align 8, !alias.scope !270, !noalias !271, !nonnull !4, !noundef !4 - %80 = getelementptr inbounds { ptr, i64, ptr }, ptr %79, i64 %.016.i.i + %80 = getelementptr inbounds { ptr, i64, ptr }, ptr %79, i64 %.015.i.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(24) %80, i64 24, i1 false), !noalias !274 %81 = getelementptr inbounds i8, ptr %80, i64 24 - %82 = xor i64 %.016.i.i, -1 + %82 = xor i64 %.015.i.i, -1 %83 = add i64 %77, %82 %84 = mul i64 %83, 24 tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %80, ptr nonnull align 8 %81, i64 %84, i1 false), !noalias !275 diff --git a/bench/coreutils-rs/optimized/942h4e64iw767xo.ll b/bench/coreutils-rs/optimized/942h4e64iw767xo.ll index b8d7ba8196e..b6ee89fed8e 100644 --- a/bench/coreutils-rs/optimized/942h4e64iw767xo.ll +++ b/bench/coreutils-rs/optimized/942h4e64iw767xo.ll @@ -1547,8 +1547,8 @@ _ZN3std4sync4mpmc7context7Context10try_select17h575e5fea5660eecdE.exit: ; preds %89 = load atomic i64, ptr %88 acquire, align 8, !noalias !243 switch i64 %89, label %_ZN3std4sync4mpmc7context7Context10wait_until17h4bf656f2ae3b6de5E.exit.thread17 [ i64 0, label %90 - i64 1, label %.thread.loopexit40.i - i64 2, label %.thread.loopexit40.i + i64 1, label %.thread.loopexit42.i + i64 2, label %.thread.loopexit42.i ] 90: ; preds = %.split.us.i @@ -1559,8 +1559,8 @@ _ZN3std4sync4mpmc7context7Context10try_select17h575e5fea5660eecdE.exit: ; preds %91 = load atomic i64, ptr %88 acquire, align 8, !noalias !243 switch i64 %91, label %_ZN3std4sync4mpmc7context7Context10wait_until17h4bf656f2ae3b6de5E.exit.thread17 [ i64 0, label %92 - i64 1, label %.thread.loopexit40.i - i64 2, label %.thread.loopexit40.i + i64 1, label %.thread.loopexit42.i + i64 2, label %.thread.loopexit42.i ] 92: ; preds = %.split.i @@ -1579,14 +1579,14 @@ _ZN3std4sync4mpmc7context7Context10try_select17h575e5fea5660eecdE.exit: ; preds "_ZN77_$LT$std..sys..pal..unix..time..Timespec$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h6e44c7c4099b6ff7E.exit.i": ; preds = %97 %100 = cmpxchg ptr %88, i64 0, i64 1 acq_rel acquire, align 8, !noalias !243 %101 = extractvalue { i64, i1 } %100, 1 - br i1 %101, label %.thread.loopexit40.i, label %102 + br i1 %101, label %.thread.loopexit42.i, label %102 102: ; preds = %"_ZN77_$LT$std..sys..pal..unix..time..Timespec$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h6e44c7c4099b6ff7E.exit.i" %103 = extractvalue { i64, i1 } %100, 0 switch i64 %103, label %_ZN3std4sync4mpmc7context7Context10wait_until17h4bf656f2ae3b6de5E.exit.thread17 [ i64 0, label %107 - i64 1, label %.thread.loopexit40.i - i64 2, label %.thread.loopexit40.i + i64 1, label %.thread.loopexit42.i + i64 2, label %.thread.loopexit42.i ] select.unfold.i: ; preds = %97, %92 @@ -1600,17 +1600,17 @@ select.unfold.i: ; preds = %97, %92 tail call void @_ZN4core9panicking5panic17h44790a89027c670fE(ptr noalias noundef nonnull readonly align 1 @anon.8d772ffa9413b792ed50c546bd2fbae8.9, i64 noundef 40, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.8d772ffa9413b792ed50c546bd2fbae8.11) #21 unreachable -.thread.loopexit40.i: ; preds = %.split.i, %.split.i, %.split.us.i, %.split.us.i, %102, %102, %"_ZN77_$LT$std..sys..pal..unix..time..Timespec$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h6e44c7c4099b6ff7E.exit.i" +.thread.loopexit42.i: ; preds = %.split.i, %.split.i, %.split.us.i, %.split.us.i, %102, %102, %"_ZN77_$LT$std..sys..pal..unix..time..Timespec$u20$as$u20$core..cmp..PartialOrd$GT$11partial_cmp17h6e44c7c4099b6ff7E.exit.i" call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) %108 = cmpxchg ptr %11, i32 0, i32 1 acquire monotonic, align 4, !noalias !246 %109 = extractvalue { i32, i1 } %108, 1 br i1 %109, label %_ZN3std3sys3pal4unix5locks11futex_mutex5Mutex4lock17h985bdbb4640079dbE.exit.i4, label %110 -110: ; preds = %.thread.loopexit40.i +110: ; preds = %.thread.loopexit42.i tail call void @_ZN3std3sys3pal4unix5locks11futex_mutex5Mutex14lock_contended17hf70df39e402d52e1E(ptr noundef nonnull align 4 %11), !noalias !246 br label %_ZN3std3sys3pal4unix5locks11futex_mutex5Mutex4lock17h985bdbb4640079dbE.exit.i4 -_ZN3std3sys3pal4unix5locks11futex_mutex5Mutex4lock17h985bdbb4640079dbE.exit.i4: ; preds = %110, %.thread.loopexit40.i +_ZN3std3sys3pal4unix5locks11futex_mutex5Mutex4lock17h985bdbb4640079dbE.exit.i4: ; preds = %110, %.thread.loopexit42.i %111 = load atomic i64, ptr @_ZN3std9panicking11panic_count18GLOBAL_PANIC_COUNT17hc804604804a6cbf8E monotonic, align 8, !noalias !249 %112 = and i64 %111, 9223372036854775807 %113 = icmp eq i64 %112, 0 @@ -1967,16 +1967,16 @@ _ZN3std4sync4mpmc5waker5Waker6notify17hfe3b1f14be08ab59E.exit.i: ; preds = %"_ZN to label %84 unwind label %.loopexit.split-lp .lr.ph.i: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hfda3921c85067980E.exit", %_ZN3std10sys_common14thread_parking5futex6Parker6unpark17h7c9c6eabf53b77f5E.exit.i - %.sroa.0.012.i = phi ptr [ %70, %_ZN3std10sys_common14thread_parking5futex6Parker6unpark17h7c9c6eabf53b77f5E.exit.i ], [ %26, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hfda3921c85067980E.exit" ] - %70 = getelementptr inbounds i8, ptr %.sroa.0.012.i, i64 24 - %.val.i = load ptr, ptr %.sroa.0.012.i, align 8, !noalias !301, !nonnull !14, !noundef !14 + %.sroa.0.013.i = phi ptr [ %70, %_ZN3std10sys_common14thread_parking5futex6Parker6unpark17h7c9c6eabf53b77f5E.exit.i ], [ %26, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17hfda3921c85067980E.exit" ] + %70 = getelementptr inbounds i8, ptr %.sroa.0.013.i, i64 24 + %.val.i = load ptr, ptr %.sroa.0.013.i, align 8, !noalias !301, !nonnull !14, !noundef !14 %71 = getelementptr inbounds i8, ptr %.val.i, i64 24 %72 = cmpxchg ptr %71, i64 0, i64 2 acq_rel acquire, align 8, !noalias !301 %73 = extractvalue { i64, i1 } %72, 1 br i1 %73, label %74, label %_ZN3std10sys_common14thread_parking5futex6Parker6unpark17h7c9c6eabf53b77f5E.exit.i 74: ; preds = %.lr.ph.i - %75 = load ptr, ptr %.sroa.0.012.i, align 8, !noalias !301, !nonnull !14, !noundef !14 + %75 = load ptr, ptr %.sroa.0.013.i, align 8, !noalias !301, !nonnull !14, !noundef !14 %76 = getelementptr inbounds i8, ptr %75, i64 16 %77 = load ptr, ptr %76, align 8, !noalias !301, !nonnull !14, !noundef !14 %78 = getelementptr inbounds i8, ptr %77, i64 40 diff --git a/bench/coreutils-rs/optimized/czge978gjagq0cc.ll b/bench/coreutils-rs/optimized/czge978gjagq0cc.ll index 27156b424b9..83e5dba02f5 100644 --- a/bench/coreutils-rs/optimized/czge978gjagq0cc.ll +++ b/bench/coreutils-rs/optimized/czge978gjagq0cc.ll @@ -5700,6 +5700,7 @@ _ZN6uucore8features6format4spec5Flags3any17h84a445c05ddadbd8E.exit119: ; preds = %.sroa.32.0 = phi i64 [ %.sroa.011.0, %77 ], [ undef, %_ZN6uucore8features6format4spec5Flags3any17h84a445c05ddadbd8E.exit ], [ undef, %_ZN6uucore8features6format4spec5Flags3any17h84a445c05ddadbd8E.exit119 ], [ %.sroa.011.0, %66 ], [ %.sroa.011.0, %73 ], [ %.sroa.011.0, %72 ], [ %21, %68 ], [ %.sroa.011.0, %70 ], [ undef, %59 ], [ %.sroa.011.0, %50 ] %.sroa.27.0 = phi i64 [ %22, %77 ], [ undef, %_ZN6uucore8features6format4spec5Flags3any17h84a445c05ddadbd8E.exit ], [ undef, %_ZN6uucore8features6format4spec5Flags3any17h84a445c05ddadbd8E.exit119 ], [ %22, %66 ], [ %22, %73 ], [ %22, %72 ], [ %.sroa.13.0, %68 ], [ %22, %70 ], [ %22, %59 ], [ %22, %50 ] %.sroa.2229.0 = phi i64 [ %21, %77 ], [ undef, %_ZN6uucore8features6format4spec5Flags3any17h84a445c05ddadbd8E.exit ], [ undef, %_ZN6uucore8features6format4spec5Flags3any17h84a445c05ddadbd8E.exit119 ], [ %21, %66 ], [ %21, %73 ], [ %21, %72 ], [ %.sroa.011.0, %68 ], [ %21, %70 ], [ %21, %59 ], [ %21, %50 ] + %.sroa.21.0 = phi i8 [ %.sroa.7.0.lcssa.i, %77 ], [ undef, %_ZN6uucore8features6format4spec5Flags3any17h84a445c05ddadbd8E.exit ], [ undef, %_ZN6uucore8features6format4spec5Flags3any17h84a445c05ddadbd8E.exit119 ], [ undef, %66 ], [ undef, %73 ], [ undef, %72 ], [ undef, %68 ], [ undef, %70 ], [ undef, %59 ], [ undef, %50 ] %.sroa.20.0 = phi i8 [ %79, %77 ], [ undef, %_ZN6uucore8features6format4spec5Flags3any17h84a445c05ddadbd8E.exit ], [ undef, %_ZN6uucore8features6format4spec5Flags3any17h84a445c05ddadbd8E.exit119 ], [ undef, %66 ], [ undef, %73 ], [ undef, %72 ], [ undef, %68 ], [ undef, %70 ], [ undef, %59 ], [ undef, %50 ] %.sroa.19.0 = phi i8 [ %.072, %77 ], [ undef, %_ZN6uucore8features6format4spec5Flags3any17h84a445c05ddadbd8E.exit ], [ undef, %_ZN6uucore8features6format4spec5Flags3any17h84a445c05ddadbd8E.exit119 ], [ undef, %66 ], [ %.sroa.7.0.lcssa.i, %73 ], [ %.sroa.7.0.lcssa.i, %72 ], [ undef, %68 ], [ 2, %70 ], [ undef, %59 ], [ 3, %50 ] %.sroa.16.0 = phi i8 [ %.070, %77 ], [ undef, %_ZN6uucore8features6format4spec5Flags3any17h84a445c05ddadbd8E.exit ], [ undef, %_ZN6uucore8features6format4spec5Flags3any17h84a445c05ddadbd8E.exit119 ], [ %.072, %66 ], [ 1, %73 ], [ 0, %72 ], [ undef, %68 ], [ undef, %70 ], [ undef, %59 ], [ %.sroa.7.0.lcssa.i, %50 ] @@ -5715,7 +5716,7 @@ _ZN6uucore8features6format4spec5Flags3any17h84a445c05ddadbd8E.exit119: ; preds = %.sroa.20.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 4 store i8 %.sroa.20.0, ptr %.sroa.20.0..sroa_idx, align 4 %.sroa.21.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 5 - store i8 %.sroa.7.0.lcssa.i, ptr %.sroa.21.0..sroa_idx, align 1 + store i8 %.sroa.21.0, ptr %.sroa.21.0..sroa_idx, align 1 %.sroa.2229.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 store i64 %.sroa.2229.0, ptr %.sroa.2229.0..sroa_idx, align 8 %.sroa.27.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 @@ -5809,7 +5810,7 @@ define internal fastcc { i64, i64 } @_ZN6uucore8features6format4spec22eat_asteri br i1 %17, label %_ZN6uucore8features6format4spec10eat_number17ha7f232b53e91ad11E.exit.thread, label %.lr.ph.i.i .lr.ph.i.i: ; preds = %14, %20 - %.012.i.i = phi i64 [ %22, %20 ], [ 0, %14 ] + %.011.i.i = phi i64 [ %22, %20 ], [ 0, %14 ] %18 = phi ptr [ %21, %20 ], [ %8, %14 ] %.val.i.i = load i8, ptr %18, align 1, !noalias !1555, !noundef !9 %19 = add i8 %.val.i.i, -58 @@ -5818,14 +5819,14 @@ define internal fastcc { i64, i64 } @_ZN6uucore8features6format4spec22eat_asteri 20: ; preds = %.lr.ph.i.i %21 = getelementptr inbounds i8, ptr %18, i64 1 - %22 = add nuw i64 %.012.i.i, 1 + %22 = add nuw i64 %.011.i.i, 1 %23 = icmp eq ptr %21, %16 br i1 %23, label %_ZN6uucore8features6format4spec10eat_number17ha7f232b53e91ad11E.exit.thread, label %.lr.ph.i.i "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8position17h46d6c0177f7c991bE.exit.i": ; preds = %.lr.ph.i.i - %24 = icmp ult i64 %.012.i.i, %gepdiff.i + %24 = icmp ult i64 %.011.i.i, %gepdiff.i tail call void @llvm.assume(i1 %24) - %25 = icmp eq i64 %.012.i.i, 0 + %25 = icmp eq i64 %.011.i.i, 0 br i1 %25, label %_ZN6uucore8features6format4spec10eat_number17ha7f232b53e91ad11E.exit.thread, label %27 26: ; preds = %12 @@ -5835,7 +5836,7 @@ define internal fastcc { i64, i64 } @_ZN6uucore8features6format4spec22eat_asteri 27: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8position17h46d6c0177f7c991bE.exit.i" call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5), !noalias !1560 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4), !noalias !1560 - %28 = add i64 %.012.i.i, %6 + %28 = add i64 %.011.i.i, %6 %29 = icmp ugt i64 %6, %28 br i1 %29, label %32, label %30 @@ -5852,7 +5853,7 @@ define internal fastcc { i64, i64 } @_ZN6uucore8features6format4spec22eat_asteri unreachable "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h27fa04aa7da8c66bE.exit.i": ; preds = %30 - call void @_ZN4core3str8converts9from_utf817hca39c4a07e0467cbE(ptr noalias nocapture noundef nonnull sret({ i64, [2 x i64] }) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 1 %8, i64 noundef %.012.i.i), !noalias !1560 + call void @_ZN4core3str8converts9from_utf817hca39c4a07e0467cbE(ptr noalias nocapture noundef nonnull sret({ i64, [2 x i64] }) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 1 %8, i64 noundef %.011.i.i), !noalias !1560 tail call void @llvm.experimental.noalias.scope.decl(metadata !1564) %34 = load i64, ptr %4, align 8, !range !1567, !alias.scope !1564, !noalias !1560, !noundef !9 %trunc.i.i = trunc nuw i64 %34 to i1 diff --git a/bench/coreutils-rs/optimized/jzu2v52gceikjdv.ll b/bench/coreutils-rs/optimized/jzu2v52gceikjdv.ll index 4f80ca70252..bcf68c8440d 100644 --- a/bench/coreutils-rs/optimized/jzu2v52gceikjdv.ll +++ b/bench/coreutils-rs/optimized/jzu2v52gceikjdv.ll @@ -228,11 +228,11 @@ define hidden void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec.. %24 = load ptr, ptr %23, align 8, !alias.scope !59, !noalias !64, !noundef !26 %25 = icmp eq ptr %24, null %26 = getelementptr inbounds i8, ptr %1, i64 88 - %.val.i47.i.i = load ptr, ptr %26, align 8, !alias.scope !59, !noalias !64, !nonnull !26 + %.val.i46.i.i = load ptr, ptr %26, align 8, !alias.scope !59, !noalias !64, !nonnull !26 %27 = getelementptr inbounds i8, ptr %1, i64 104 - %.val3.i48.i.i = load ptr, ptr %27, align 8, !alias.scope !59, !noalias !64, !nonnull !26 - %28 = ptrtoint ptr %.val3.i48.i.i to i64 - %29 = ptrtoint ptr %.val.i47.i.i to i64 + %.val3.i47.i.i = load ptr, ptr %27, align 8, !alias.scope !59, !noalias !64, !nonnull !26 + %28 = ptrtoint ptr %.val3.i47.i.i to i64 + %29 = ptrtoint ptr %.val.i46.i.i to i64 %30 = sub nuw i64 %28, %29 %.sroa.8.0.i.i = select i1 %25, i64 0, i64 %30 %31 = tail call i64 @llvm.uadd.sat.i64(i64 %.sroa.7.0.i.i, i64 %.sroa.8.0.i.i) @@ -310,10 +310,10 @@ define hidden void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec.. %.sroa.7.0.i.i.i.i = select i1 %61, i64 0, i64 %64 %65 = load ptr, ptr %44, align 8, !alias.scope !79, !noalias !84, !noundef !26 %66 = icmp eq ptr %65, null - %.val.i47.i.i.i.i = load ptr, ptr %45, align 8, !alias.scope !79, !noalias !84, !nonnull !26 - %.val3.i48.i.i.i.i = load ptr, ptr %46, align 8, !alias.scope !79, !noalias !84, !nonnull !26 - %67 = ptrtoint ptr %.val3.i48.i.i.i.i to i64 - %68 = ptrtoint ptr %.val.i47.i.i.i.i to i64 + %.val.i46.i.i.i.i = load ptr, ptr %45, align 8, !alias.scope !79, !noalias !84, !nonnull !26 + %.val3.i47.i.i.i.i = load ptr, ptr %46, align 8, !alias.scope !79, !noalias !84, !nonnull !26 + %67 = ptrtoint ptr %.val3.i47.i.i.i.i to i64 + %68 = ptrtoint ptr %.val.i46.i.i.i.i to i64 %69 = sub nuw i64 %67, %68 %.sroa.8.0.i.i.i.i = select i1 %66, i64 0, i64 %69 %70 = call i64 @llvm.uadd.sat.i64(i64 %.sroa.7.0.i.i.i.i, i64 %.sroa.8.0.i.i.i.i) @@ -500,11 +500,11 @@ define hidden void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec.. %24 = load ptr, ptr %23, align 8, !alias.scope !138, !noalias !143, !noundef !26 %25 = icmp eq ptr %24, null %26 = getelementptr inbounds i8, ptr %1, i64 72 - %.val.i47.i.i = load ptr, ptr %26, align 8, !alias.scope !138, !noalias !143, !nonnull !26 + %.val.i46.i.i = load ptr, ptr %26, align 8, !alias.scope !138, !noalias !143, !nonnull !26 %27 = getelementptr inbounds i8, ptr %1, i64 88 - %.val3.i48.i.i = load ptr, ptr %27, align 8, !alias.scope !138, !noalias !143, !nonnull !26 - %28 = ptrtoint ptr %.val3.i48.i.i to i64 - %29 = ptrtoint ptr %.val.i47.i.i to i64 + %.val3.i47.i.i = load ptr, ptr %27, align 8, !alias.scope !138, !noalias !143, !nonnull !26 + %28 = ptrtoint ptr %.val3.i47.i.i to i64 + %29 = ptrtoint ptr %.val.i46.i.i to i64 %30 = sub nuw i64 %28, %29 %.sroa.8.0.i.i = select i1 %25, i64 0, i64 %30 %31 = tail call i64 @llvm.uadd.sat.i64(i64 %.sroa.7.0.i.i, i64 %.sroa.8.0.i.i) @@ -582,10 +582,10 @@ define hidden void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec.. %.sroa.7.0.i.i.i.i = select i1 %61, i64 0, i64 %64 %65 = load ptr, ptr %44, align 8, !alias.scope !158, !noalias !163, !noundef !26 %66 = icmp eq ptr %65, null - %.val.i47.i.i.i.i = load ptr, ptr %45, align 8, !alias.scope !158, !noalias !163, !nonnull !26 - %.val3.i48.i.i.i.i = load ptr, ptr %46, align 8, !alias.scope !158, !noalias !163, !nonnull !26 - %67 = ptrtoint ptr %.val3.i48.i.i.i.i to i64 - %68 = ptrtoint ptr %.val.i47.i.i.i.i to i64 + %.val.i46.i.i.i.i = load ptr, ptr %45, align 8, !alias.scope !158, !noalias !163, !nonnull !26 + %.val3.i47.i.i.i.i = load ptr, ptr %46, align 8, !alias.scope !158, !noalias !163, !nonnull !26 + %67 = ptrtoint ptr %.val3.i47.i.i.i.i to i64 + %68 = ptrtoint ptr %.val.i46.i.i.i.i to i64 %69 = sub nuw i64 %67, %68 %.sroa.8.0.i.i.i.i = select i1 %66, i64 0, i64 %69 %70 = call i64 @llvm.uadd.sat.i64(i64 %.sroa.7.0.i.i.i.i, i64 %.sroa.8.0.i.i.i.i) @@ -1738,8 +1738,8 @@ define internal fastcc { ptr, i64 } @"_ZN90_$LT$core..str..iter..Split$LT$P$GT$$ %11 = icmp ugt i64 %10, %.val5.i %.promoted.i.i = load i64, ptr %8, align 8, !alias.scope !453, !noalias !454 %12 = icmp ugt i64 %.promoted.i.i, %10 - %or.cond.i43.i.i = or i1 %11, %12 - br i1 %or.cond.i43.i.i, label %"_ZN4core3str4iter22SplitInternal$LT$P$GT$7get_end17ha6a79ec2fcd17936E.exit.i", label %.lr.ph.i.i + %or.cond.i42.i.i = or i1 %11, %12 + br i1 %or.cond.i42.i.i, label %"_ZN4core3str4iter22SplitInternal$LT$P$GT$7get_end17ha6a79ec2fcd17936E.exit.i", label %.lr.ph.i.i .lr.ph.i.i: ; preds = %5 %13 = getelementptr inbounds i8, ptr %.val.i, i64 %.promoted.i.i @@ -1753,37 +1753,37 @@ define internal fastcc { ptr, i64 } @"_ZN90_$LT$core..str..iter..Split$LT$P$GT$$ br i1 %20, label %.lr.ph.split.us.split.i.i, label %.lr.ph.split.split.i.i .lr.ph.split.us.split.i.i: ; preds = %.lr.ph.i.i, %40 - %.49.us.i.i = phi ptr [ %43, %40 ], [ %13, %.lr.ph.i.i ] - %.sroa.3.0.i47.us.i.i = phi i64 [ %42, %40 ], [ %14, %.lr.ph.i.i ] + %.sroa.0.050.us.i.i = phi ptr [ %43, %40 ], [ %13, %.lr.ph.i.i ] + %.sroa.7.049.us.i.i = phi i64 [ %42, %40 ], [ %14, %.lr.ph.i.i ] %21 = phi i64 [ %38, %40 ], [ %.promoted.i.i, %.lr.ph.i.i ] %22 = load i8, ptr %19, align 1, !alias.scope !453, !noalias !454, !noundef !26 - %23 = icmp ult i64 %.sroa.3.0.i47.us.i.i, 16 + %23 = icmp ult i64 %.sroa.7.049.us.i.i, 16 br i1 %23, label %26, label %24 24: ; preds = %.lr.ph.split.us.split.i.i - %25 = tail call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef %22, ptr noalias noundef nonnull readonly align 1 %.49.us.i.i, i64 noundef %.sroa.3.0.i47.us.i.i), !noalias !456 + %25 = tail call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef %22, ptr noalias noundef nonnull readonly align 1 %.sroa.0.050.us.i.i, i64 noundef %.sroa.7.049.us.i.i), !noalias !456 br label %34 26: ; preds = %.lr.ph.split.us.split.i.i - %.not.i.us.i.i = icmp eq i64 %10, %21 + %.not.i.us.i.i = icmp eq i64 %.sroa.7.049.us.i.i, 0 br i1 %.not.i.us.i.i, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us.i.i, label %.lr.ph.i.us.i.i .lr.ph.i.us.i.i: ; preds = %26, %30 %.05.i.us.i.i = phi i64 [ %31, %30 ], [ 0, %26 ] - %27 = getelementptr inbounds [0 x i8], ptr %.49.us.i.i, i64 0, i64 %.05.i.us.i.i + %27 = getelementptr inbounds [0 x i8], ptr %.sroa.0.050.us.i.i, i64 0, i64 %.05.i.us.i.i %28 = load i8, ptr %27, align 1, !alias.scope !457, !noalias !456, !noundef !26 %29 = icmp eq i8 %28, %22 br i1 %29, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us.i.i, label %30 30: ; preds = %.lr.ph.i.us.i.i - %31 = add nuw i64 %.05.i.us.i.i, 1 - %exitcond.not.i.us.i.i = icmp eq i64 %31, %.sroa.3.0.i47.us.i.i + %31 = add nuw nsw i64 %.05.i.us.i.i, 1 + %exitcond.not.i.us.i.i = icmp eq i64 %31, %.sroa.7.049.us.i.i br i1 %exitcond.not.i.us.i.i, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us.i.i, label %.lr.ph.i.us.i.i _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us.i.i: ; preds = %30, %.lr.ph.i.us.i.i, %26 - %.0.lcssa.i.us.i.i = phi i64 [ 0, %26 ], [ %.sroa.3.0.i47.us.i.i, %30 ], [ %.05.i.us.i.i, %.lr.ph.i.us.i.i ] - %.sroa.0.0.i25.us.i.i = phi i64 [ 0, %26 ], [ 0, %30 ], [ 1, %.lr.ph.i.us.i.i ] - %32 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i25.us.i.i, 0 + %.0.lcssa.i.us.i.i = phi i64 [ 0, %26 ], [ %.sroa.7.049.us.i.i, %30 ], [ %.05.i.us.i.i, %.lr.ph.i.us.i.i ] + %.sroa.0.0.i24.us.i.i = phi i64 [ 0, %26 ], [ 0, %30 ], [ 1, %.lr.ph.i.us.i.i ] + %32 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i24.us.i.i, 0 %33 = insertvalue { i64, i64 } %32, i64 %.0.lcssa.i.us.i.i, 1 br label %34 @@ -1800,8 +1800,8 @@ _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us.i.i: ; preds = % store i64 %38, ptr %8, align 8, !alias.scope !453, !noalias !454 %.not.us.i.i = icmp ult i64 %38, %17 %39 = icmp ugt i64 %38, %.val5.i - %or.cond83.i.i = or i1 %.not.us.i.i, %39 - br i1 %or.cond83.i.i, label %40, label %.split51.us.i.i + %or.cond87.i.i = or i1 %.not.us.i.i, %39 + br i1 %or.cond87.i.i, label %40, label %.split52.us.i.i 40: ; preds = %36 %41 = icmp ugt i64 %38, %10 @@ -1810,37 +1810,37 @@ _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.us.i.i: ; preds = % br i1 %41, label %"_ZN4core3str4iter22SplitInternal$LT$P$GT$7get_end17ha6a79ec2fcd17936E.exit.i", label %.lr.ph.split.us.split.i.i .lr.ph.split.split.i.i: ; preds = %.lr.ph.i.i, %63 - %.49.i.i = phi ptr [ %66, %63 ], [ %13, %.lr.ph.i.i ] - %.sroa.3.0.i47.i.i = phi i64 [ %65, %63 ], [ %14, %.lr.ph.i.i ] + %.sroa.0.050.i.i = phi ptr [ %66, %63 ], [ %13, %.lr.ph.i.i ] + %.sroa.7.049.i.i = phi i64 [ %65, %63 ], [ %14, %.lr.ph.i.i ] %44 = phi i64 [ %61, %63 ], [ %.promoted.i.i, %.lr.ph.i.i ] %45 = load i8, ptr %19, align 1, !alias.scope !453, !noalias !454, !noundef !26 - %46 = icmp ult i64 %.sroa.3.0.i47.i.i, 16 + %46 = icmp ult i64 %.sroa.7.049.i.i, 16 br i1 %46, label %49, label %47 47: ; preds = %.lr.ph.split.split.i.i - %48 = tail call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef %45, ptr noalias noundef nonnull readonly align 1 %.49.i.i, i64 noundef %.sroa.3.0.i47.i.i), !noalias !456 + %48 = tail call { i64, i64 } @_ZN4core5slice6memchr14memchr_aligned17h70c951369894823fE(i8 noundef %45, ptr noalias noundef nonnull readonly align 1 %.sroa.0.050.i.i, i64 noundef %.sroa.7.049.i.i), !noalias !456 br label %57 49: ; preds = %.lr.ph.split.split.i.i - %.not.i.i.i = icmp eq i64 %10, %44 + %.not.i.i.i = icmp eq i64 %.sroa.7.049.i.i, 0 br i1 %.not.i.i.i, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i, label %.lr.ph.i.i.i .lr.ph.i.i.i: ; preds = %49, %53 %.05.i.i.i = phi i64 [ %54, %53 ], [ 0, %49 ] - %50 = getelementptr inbounds [0 x i8], ptr %.49.i.i, i64 0, i64 %.05.i.i.i + %50 = getelementptr inbounds [0 x i8], ptr %.sroa.0.050.i.i, i64 0, i64 %.05.i.i.i %51 = load i8, ptr %50, align 1, !alias.scope !457, !noalias !456, !noundef !26 %52 = icmp eq i8 %51, %45 br i1 %52, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i, label %53 53: ; preds = %.lr.ph.i.i.i - %54 = add nuw i64 %.05.i.i.i, 1 - %exitcond.not.i.i.i = icmp eq i64 %54, %.sroa.3.0.i47.i.i + %54 = add nuw nsw i64 %.05.i.i.i, 1 + %exitcond.not.i.i.i = icmp eq i64 %54, %.sroa.7.049.i.i br i1 %exitcond.not.i.i.i, label %_ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i, label %.lr.ph.i.i.i _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i: ; preds = %53, %.lr.ph.i.i.i, %49 - %.0.lcssa.i.i.i = phi i64 [ 0, %49 ], [ %.sroa.3.0.i47.i.i, %53 ], [ %.05.i.i.i, %.lr.ph.i.i.i ] - %.sroa.0.0.i25.i.i = phi i64 [ 0, %49 ], [ 0, %53 ], [ 1, %.lr.ph.i.i.i ] - %55 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i25.i.i, 0 + %.0.lcssa.i.i.i = phi i64 [ 0, %49 ], [ %.sroa.7.049.i.i, %53 ], [ %.05.i.i.i, %.lr.ph.i.i.i ] + %.sroa.0.0.i24.i.i = phi i64 [ 0, %49 ], [ 0, %53 ], [ 1, %.lr.ph.i.i.i ] + %55 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i24.i.i, 0 %56 = insertvalue { i64, i64 } %55, i64 %.0.lcssa.i.i.i, 1 br label %57 @@ -1877,7 +1877,7 @@ _ZN4core5slice6memchr12memchr_naive17hc161699a4e4d4b77E.exit.i.i: ; preds = %53, %69 = icmp eq i32 %bcmp.i.i.i, 0 br i1 %69, label %75, label %63 -.split51.us.i.i: ; preds = %36 +.split52.us.i.i: ; preds = %36 tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h334e37603831ab29E(i64 noundef %17, i64 noundef 4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.dce4355132d01ea723d47bed2850a466.24) #20, !noalias !464 unreachable diff --git a/bench/coreutils-rs/optimized/mw884w9advpx9w7.ll b/bench/coreutils-rs/optimized/mw884w9advpx9w7.ll index a6f39e5c776..6a677b4f4ea 100644 --- a/bench/coreutils-rs/optimized/mw884w9advpx9w7.ll +++ b/bench/coreutils-rs/optimized/mw884w9advpx9w7.ll @@ -501,7 +501,7 @@ define hidden void @"_ZN69_$LT$$RF$$u5b$u8$u5d$$u20$as$u20$nom..traits..InputTak br i1 %cond, label %17, label %.lr.ph.i .lr.ph.i: ; preds = %3, %10 - %.011.i = phi i64 [ %12, %10 ], [ 0, %3 ] + %.010.i = phi i64 [ %12, %10 ], [ 0, %3 ] %8 = phi ptr [ %11, %10 ], [ %4, %3 ] %.val.i = load i8, ptr %8, align 1, !noalias !48, !noundef !4 %9 = add i8 %.val.i, -58 @@ -510,14 +510,14 @@ define hidden void @"_ZN69_$LT$$RF$$u5b$u8$u5d$$u20$as$u20$nom..traits..InputTak 10: ; preds = %.lr.ph.i %11 = getelementptr inbounds i8, ptr %8, i64 1 - %12 = add nuw i64 %.011.i, 1 + %12 = add nuw i64 %.010.i, 1 %13 = icmp eq ptr %11, %7 br i1 %13, label %19, label %.lr.ph.i 14: ; preds = %.lr.ph.i - %15 = icmp ult i64 %.011.i, %6 + %15 = icmp ult i64 %.010.i, %6 tail call void @llvm.assume(i1 %15) - %16 = icmp eq i64 %.011.i, 0 + %16 = icmp eq i64 %.010.i, 0 br i1 %16, label %22, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8split_at17h39c075903c244adcE.exit" 17: ; preds = %3 @@ -559,8 +559,8 @@ define hidden void @"_ZN69_$LT$$RF$$u5b$u8$u5d$$u20$as$u20$nom..traits..InputTak br label %21 "_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$8split_at17h39c075903c244adcE.exit": ; preds = %14 - %24 = getelementptr inbounds i8, ptr %4, i64 %.011.i - %25 = sub i64 %6, %.011.i + %24 = getelementptr inbounds i8, ptr %4, i64 %.010.i + %25 = sub i64 %6, %.010.i %26 = getelementptr inbounds i8, ptr %0, i64 8 store ptr %24, ptr %26, align 8 %.sroa.45.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 @@ -568,7 +568,7 @@ define hidden void @"_ZN69_$LT$$RF$$u5b$u8$u5d$$u20$as$u20$nom..traits..InputTak %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 24 store ptr %4, ptr %.sroa.5.0..sroa_idx, align 8 %.sroa.6.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 32 - store i64 %.011.i, ptr %.sroa.6.0..sroa_idx, align 8 + store i64 %.010.i, ptr %.sroa.6.0..sroa_idx, align 8 br label %21 } diff --git a/bench/delta-rs/optimized/1q6q2cmruh1j9ndm.ll b/bench/delta-rs/optimized/1q6q2cmruh1j9ndm.ll index 09932b9fa80..4bcfa16082f 100644 --- a/bench/delta-rs/optimized/1q6q2cmruh1j9ndm.ll +++ b/bench/delta-rs/optimized/1q6q2cmruh1j9ndm.ll @@ -2162,23 +2162,23 @@ _ZN3std9panicking3try17h723979b8b611ecf2E.exit: ; preds = %__rust_try.llvm.157 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %.sroa.0.i, ptr noundef nonnull align 8 dereferenceable(64) %5, i64 64, i1 false) %36 = getelementptr inbounds i8, ptr %0, i64 8 invoke void @"_ZN4core3ptr209drop_in_place$LT$tokio..runtime..task..core..Stage$LT$tokio..runtime..blocking..task..BlockingTask$LT$deltalake_mount..file..regular_rename..$u7b$$u7b$closure$u7d$$u7d$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17h633aa83659108352E.llvm.1572246609963143282"(ptr noalias noundef nonnull align 8 dereferenceable(64) %36) - to label %"_ZN5tokio7runtime4task4core17Core$LT$T$C$S$GT$9set_stage17h33888c0e00554b7fE.exit" unwind label %.body.i9, !noalias !371 + to label %"_ZN5tokio7runtime4task4core17Core$LT$T$C$S$GT$9set_stage17h33888c0e00554b7fE.exit" unwind label %.body.i10, !noalias !371 -.body.i9: ; preds = %32 +.body.i10: ; preds = %32 %37 = landingpad { ptr, i32 } cleanup call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %36, ptr noundef nonnull align 8 dereferenceable(64) %.sroa.0.i, i64 64, i1 false), !noalias !368 invoke void @"_ZN81_$LT$tokio..runtime..task..core..TaskIdGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17h41c4e38ca1e60cdcE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %2) to label %.thread.i unwind label %38, !noalias !368 -38: ; preds = %40, %.body.i9 +38: ; preds = %40, %.body.i10 %39 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #20 unreachable -.thread.i: ; preds = %40, %.body.i9 - %.pn5.i = phi { ptr, i32 } [ %41, %40 ], [ %37, %.body.i9 ] +.thread.i: ; preds = %40, %.body.i10 + %.pn5.i = phi { ptr, i32 } [ %41, %40 ], [ %37, %.body.i10 ] resume { ptr, i32 } %.pn5.i 40: ; preds = %_ZN3std9panicking3try17h723979b8b611ecf2E.exit @@ -2765,6 +2765,7 @@ define hidden void @"_ZN96_$LT$tokio..runtime..task..join..JoinHandle$LT$T$GT$$u br label %.thread 21: ; preds = %14, %.thread.i.i.i + %.sroa.4.0.i.i.i = phi i8 [ %12, %.thread.i.i.i ], [ 0, %14 ] %.sroa.0.0.i.i.i = phi i1 [ false, %.thread.i.i.i ], [ true, %14 ] call void @llvm.lifetime.start.p0(i64 3, ptr nonnull %4) store i24 0, ptr %4, align 4 @@ -2778,7 +2779,7 @@ define hidden void @"_ZN96_$LT$tokio..runtime..task..join..JoinHandle$LT$T$GT$$u .thread26: ; preds = %3, %23 %.sroa.0.0.i1430.off8 = phi i8 [ %10, %23 ], [ 0, %3 ] - %.sroa.0.0.i1430.off16 = phi i8 [ %12, %23 ], [ 0, %3 ] + %.sroa.0.0.i1430.off16 = phi i8 [ %.sroa.4.0.i.i.i, %23 ], [ 0, %3 ] store i8 %.sroa.0.0.i1430.off8, ptr %5, align 1 %24 = getelementptr inbounds i8, ptr %5, i64 1 store i8 %.sroa.0.0.i1430.off16, ptr %24, align 1 diff --git a/bench/delta-rs/optimized/1x96nto90vd3u3mo.ll b/bench/delta-rs/optimized/1x96nto90vd3u3mo.ll index e98c207c230..7ab2e4bb0d2 100644 --- a/bench/delta-rs/optimized/1x96nto90vd3u3mo.ll +++ b/bench/delta-rs/optimized/1x96nto90vd3u3mo.ll @@ -8552,7 +8552,7 @@ default.unreachable75: ; preds = %250, %54, %3 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23), !noalias !1621 %132 = load i32, ptr %115, align 8, !alias.scope !1672, !noalias !1621, !noundef !13 %133 = invoke noundef i32 @close(i32 noundef %132) - to label %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h4f7b386ca2aa5be8E.exit47.i.i" unwind label %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h4f7b386ca2aa5be8E.exit.thread113.i.i", !noalias !1624 + to label %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h4f7b386ca2aa5be8E.exit47.i.i" unwind label %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h4f7b386ca2aa5be8E.exit.thread115.i.i", !noalias !1624 134: ; preds = %120 %135 = getelementptr inbounds i8, ptr %23, i64 8 @@ -8573,8 +8573,8 @@ default.unreachable75: ; preds = %250, %54, %3 invoke void @"_ZN12object_store5local103_$LT$impl$u20$core..convert..From$LT$object_store..local..Error$GT$$u20$for$u20$object_store..Error$GT$4from17h94749b3eb24f5b4dE"(ptr noalias nocapture noundef nonnull sret({ i64, [9 x i64] }) align 8 dereferenceable(80) %15, ptr noalias nocapture noundef nonnull align 8 dereferenceable(88) %16) to label %137 unwind label %116, !noalias !1624 -"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h4f7b386ca2aa5be8E.exit.thread113.i.i": ; preds = %137, %131 - %lpad.thr_comm111.i.i = landingpad { ptr, i32 } +"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h4f7b386ca2aa5be8E.exit.thread115.i.i": ; preds = %137, %131 + %lpad.thr_comm113.i.i = landingpad { ptr, i32 } cleanup br label %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h4f7b386ca2aa5be8E.exit.thread.i.i" @@ -8605,7 +8605,7 @@ default.unreachable75: ; preds = %250, %54, %3 call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %16), !noalias !1621 %138 = load i32, ptr %115, align 8, !alias.scope !1688, !noalias !1621, !noundef !13 %139 = invoke noundef i32 @close(i32 noundef %138) - to label %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h4f7b386ca2aa5be8E.exit49.i.i" unwind label %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h4f7b386ca2aa5be8E.exit.thread113.i.i", !noalias !1624 + to label %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h4f7b386ca2aa5be8E.exit49.i.i" unwind label %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h4f7b386ca2aa5be8E.exit.thread115.i.i", !noalias !1624 "_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h4f7b386ca2aa5be8E.exit49.i.i": ; preds = %137 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22), !noalias !1621 @@ -8617,33 +8617,33 @@ default.unreachable75: ; preds = %250, %54, %3 %140 = getelementptr inbounds i8, ptr %12, i64 8 %141 = load i64, ptr %140, align 8, !range !610, !noalias !1701, !noundef !13 %.not.i.i.i.i.i = icmp eq i64 %141, 0 - br i1 %.not.i.i.i.i.i, label %.thread116.i.i, label %142 + br i1 %.not.i.i.i.i.i, label %.thread118.i.i, label %142 142: ; preds = %.noexc7.i %143 = getelementptr inbounds i8, ptr %12, i64 16 %144 = load i64, ptr %143, align 8, !noalias !1701, !noundef !13 %145 = icmp eq i64 %144, 0 - br i1 %145, label %.thread116.i.i, label %146 + br i1 %145, label %.thread118.i.i, label %146 146: ; preds = %142 %147 = load ptr, ptr %12, align 8, !noalias !1701, !nonnull !13, !noundef !13 call void @__rust_dealloc(ptr noundef nonnull %147, i64 noundef %144, i64 noundef %141) #30, !noalias !1624 - br label %.thread116.i.i + br label %.thread118.i.i -.thread116.i.i: ; preds = %146, %142, %.noexc7.i +.thread118.i.i: ; preds = %146, %142, %.noexc7.i call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12), !noalias !1701 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24), !noalias !1621 br label %"_ZN12object_store9GetResult5bytes28_$u7b$$u7b$closure$u7d$$u7d$28_$u7b$$u7b$closure$u7d$$u7d$17hb3ce95c6f5390cb3E.exit.i" -148: ; preds = %.thread118.i.i, %.thread66.i.i, %162, %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h4f7b386ca2aa5be8E.exit.thread.i.i", %116 +148: ; preds = %.thread120.i.i, %.thread66.i.i, %162, %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h4f7b386ca2aa5be8E.exit.thread.i.i", %116 %149 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #38, !noalias !1624 unreachable -"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h4f7b386ca2aa5be8E.exit.thread.i.i": ; preds = %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h4f7b386ca2aa5be8E.exit.thread113.i.i", %116 - %.pn110.i.i = phi { ptr, i32 } [ %lpad.thr_comm111.i.i, %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h4f7b386ca2aa5be8E.exit.thread113.i.i" ], [ %117, %116 ] - %.3108.i.i = phi i1 [ false, %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h4f7b386ca2aa5be8E.exit.thread113.i.i" ], [ %.236.i.i, %116 ] +"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h4f7b386ca2aa5be8E.exit.thread.i.i": ; preds = %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h4f7b386ca2aa5be8E.exit.thread115.i.i", %116 + %.pn112.i.i = phi { ptr, i32 } [ %lpad.thr_comm113.i.i, %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h4f7b386ca2aa5be8E.exit.thread115.i.i" ], [ %117, %116 ] + %.3110.i.i = phi i1 [ false, %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h4f7b386ca2aa5be8E.exit.thread115.i.i" ], [ %.236.i.i, %116 ] invoke void @"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17hd8add0a9430ad042E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %24) #37 to label %164 unwind label %148, !noalias !1624 @@ -8692,16 +8692,16 @@ default.unreachable75: ; preds = %250, %54, %3 to label %.body.i unwind label %148, !noalias !1624 164: ; preds = %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h4f7b386ca2aa5be8E.exit.thread.i.i" - br i1 %.3108.i.i, label %.thread118.i.i, label %.body.i + br i1 %.3110.i.i, label %.thread120.i.i, label %.body.i .thread66.i.i: ; preds = %96, %.thread72.i.i %eh.lpad-body70.i.i = phi { ptr, i32 } [ %lpad.thr_comm.i.i, %.thread72.i.i ], [ %97, %96 ] %165 = load i32, ptr %83, align 8, !alias.scope !1732, !noalias !1623, !noundef !13 %166 = invoke noundef i32 @close(i32 noundef %165) - to label %.thread118.i.i unwind label %148, !noalias !1624 + to label %.thread120.i.i unwind label %148, !noalias !1624 -.thread118.i.i: ; preds = %.thread66.i.i, %164 - %.pn.pn65121.i.i = phi { ptr, i32 } [ %.pn110.i.i, %164 ], [ %eh.lpad-body70.i.i, %.thread66.i.i ] +.thread120.i.i: ; preds = %.thread66.i.i, %164 + %.pn.pn65123.i.i = phi { ptr, i32 } [ %.pn112.i.i, %164 ], [ %eh.lpad-body70.i.i, %.thread66.i.i ] invoke void @"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h1c3145b2abdf0339E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %28) #37 to label %.body.i unwind label %148, !noalias !1624 @@ -8729,14 +8729,14 @@ default.unreachable75: ; preds = %250, %54, %3 cleanup br label %.body.i -.body.i: ; preds = %175, %.thread118.i.i, %164, %162 - %eh.lpad-body.i = phi { ptr, i32 } [ %176, %175 ], [ %.pn.pn65121.i.i, %.thread118.i.i ], [ %.pn110.i.i, %164 ], [ %163, %162 ] +.body.i: ; preds = %175, %.thread120.i.i, %164, %162 + %eh.lpad-body.i = phi { ptr, i32 } [ %176, %175 ], [ %.pn.pn65123.i.i, %.thread120.i.i ], [ %.pn112.i.i, %164 ], [ %163, %162 ] call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %28), !noalias !1608 br label %63 -"_ZN12object_store9GetResult5bytes28_$u7b$$u7b$closure$u7d$$u7d$28_$u7b$$u7b$closure$u7d$$u7d$17hb3ce95c6f5390cb3E.exit.i": ; preds = %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h1c3145b2abdf0339E.exit.i.i", %.thread116.i.i, %.noexc.i - %.sroa.6.i.sroa.0.0 = phi ptr [ %.sroa.6.i.sroa.0.0.copyload55, %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h1c3145b2abdf0339E.exit.i.i" ], [ %.sroa.6.i.sroa.0.0.copyload, %.thread116.i.i ], [ %.sroa.6.i.sroa.0.0.copyload56, %.noexc.i ] - %.sroa.025.0.i = phi i64 [ %.sroa.025.0.copyload27.i, %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h1c3145b2abdf0339E.exit.i.i" ], [ %.sroa.025.0.copyload26.i, %.thread116.i.i ], [ 16, %.noexc.i ] +"_ZN12object_store9GetResult5bytes28_$u7b$$u7b$closure$u7d$$u7d$28_$u7b$$u7b$closure$u7d$$u7d$17hb3ce95c6f5390cb3E.exit.i": ; preds = %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h1c3145b2abdf0339E.exit.i.i", %.thread118.i.i, %.noexc.i + %.sroa.6.i.sroa.0.0 = phi ptr [ %.sroa.6.i.sroa.0.0.copyload55, %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h1c3145b2abdf0339E.exit.i.i" ], [ %.sroa.6.i.sroa.0.0.copyload, %.thread118.i.i ], [ %.sroa.6.i.sroa.0.0.copyload56, %.noexc.i ] + %.sroa.025.0.i = phi i64 [ %.sroa.025.0.copyload27.i, %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h1c3145b2abdf0339E.exit.i.i" ], [ %.sroa.025.0.copyload26.i, %.thread118.i.i ], [ 16, %.noexc.i ] call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %28), !noalias !1608 br label %233 @@ -22938,21 +22938,21 @@ define internal void @"_ZN88_$LT$object_store..prefix..PrefixStore$LT$T$GT$$u20$ %9 = alloca { i64, [11 x i64] }, align 8 %10 = getelementptr inbounds i8, ptr %1, i64 64 %11 = load i8, ptr %10, align 8, !range !747, !noundef !13 - switch i8 %11, label %default.unreachable32 [ + switch i8 %11, label %default.unreachable33 [ i8 0, label %14 i8 1, label %35 i8 2, label %36 i8 3, label %12 ] -default.unreachable32: ; preds = %3 +default.unreachable33: ; preds = %3 unreachable 12: ; preds = %3 %.phi.trans.insert = getelementptr inbounds i8, ptr %1, i64 48 %.pre = load ptr, ptr %.phi.trans.insert, align 8, !alias.scope !4607, !noalias !4612 - %.phi.trans.insert30 = getelementptr inbounds i8, ptr %1, i64 56 - %.pre31 = load ptr, ptr %.phi.trans.insert30, align 8, !alias.scope !4607, !noalias !4612 + %.phi.trans.insert31 = getelementptr inbounds i8, ptr %1, i64 56 + %.pre32 = load ptr, ptr %.phi.trans.insert31, align 8, !alias.scope !4607, !noalias !4612 br label %37 common.ret: ; preds = %56, %13 @@ -23033,7 +23033,7 @@ common.ret: ; preds = %56, %13 unreachable 37: ; preds = %12, %30 - %38 = phi ptr [ %.pre31, %12 ], [ %32, %30 ] + %38 = phi ptr [ %.pre32, %12 ], [ %32, %30 ] %39 = phi ptr [ %.pre, %12 ], [ %31, %30 ] call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %9) %40 = getelementptr inbounds i8, ptr %1, i64 48 diff --git a/bench/delta-rs/optimized/2tf2q4cmcrkztukf.ll b/bench/delta-rs/optimized/2tf2q4cmcrkztukf.ll index 642f8e9315c..21a98fb5515 100644 --- a/bench/delta-rs/optimized/2tf2q4cmcrkztukf.ll +++ b/bench/delta-rs/optimized/2tf2q4cmcrkztukf.ll @@ -2642,7 +2642,7 @@ common.ret: ; preds = %722, %86, %37 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23), !noalias !307 %205 = load i32, ptr %188, align 8, !alias.scope !358, !noalias !307, !noundef !8 %206 = invoke noundef i32 @close(i32 noundef %205) - to label %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h9a0b02a1fb9f73fcE.exit47.i.i.i" unwind label %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h9a0b02a1fb9f73fcE.exit.thread113.i.i.i", !noalias !310 + to label %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h9a0b02a1fb9f73fcE.exit47.i.i.i" unwind label %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h9a0b02a1fb9f73fcE.exit.thread115.i.i.i", !noalias !310 207: ; preds = %193 %208 = getelementptr inbounds i8, ptr %23, i64 8 @@ -2663,8 +2663,8 @@ common.ret: ; preds = %722, %86, %37 invoke void @"_ZN12object_store5local103_$LT$impl$u20$core..convert..From$LT$object_store..local..Error$GT$$u20$for$u20$object_store..Error$GT$4from17h94749b3eb24f5b4dE"(ptr noalias nocapture noundef nonnull sret({ i64, [9 x i64] }) align 8 dereferenceable(80) %15, ptr noalias nocapture noundef nonnull align 8 dereferenceable(88) %16) to label %210 unwind label %189, !noalias !310 -"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h9a0b02a1fb9f73fcE.exit.thread113.i.i.i": ; preds = %210, %204 - %lpad.thr_comm111.i.i.i = landingpad { ptr, i32 } +"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h9a0b02a1fb9f73fcE.exit.thread115.i.i.i": ; preds = %210, %204 + %lpad.thr_comm113.i.i.i = landingpad { ptr, i32 } cleanup br label %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h9a0b02a1fb9f73fcE.exit.thread.i.i.i" @@ -2695,7 +2695,7 @@ common.ret: ; preds = %722, %86, %37 call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %16), !noalias !307 %211 = load i32, ptr %188, align 8, !alias.scope !374, !noalias !307, !noundef !8 %212 = invoke noundef i32 @close(i32 noundef %211) - to label %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h9a0b02a1fb9f73fcE.exit49.i.i.i" unwind label %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h9a0b02a1fb9f73fcE.exit.thread113.i.i.i", !noalias !310 + to label %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h9a0b02a1fb9f73fcE.exit49.i.i.i" unwind label %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h9a0b02a1fb9f73fcE.exit.thread115.i.i.i", !noalias !310 "_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h9a0b02a1fb9f73fcE.exit49.i.i.i": ; preds = %210 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22), !noalias !307 @@ -2707,33 +2707,33 @@ common.ret: ; preds = %722, %86, %37 %213 = getelementptr inbounds i8, ptr %12, i64 8 %214 = load i64, ptr %213, align 8, !range !64, !noalias !387, !noundef !8 %.not.i.i.i.i.i.i = icmp eq i64 %214, 0 - br i1 %.not.i.i.i.i.i.i, label %.thread116.i.i.i, label %215 + br i1 %.not.i.i.i.i.i.i, label %.thread118.i.i.i, label %215 215: ; preds = %.noexc7.i.i %216 = getelementptr inbounds i8, ptr %12, i64 16 %217 = load i64, ptr %216, align 8, !noalias !387, !noundef !8 %218 = icmp eq i64 %217, 0 - br i1 %218, label %.thread116.i.i.i, label %219 + br i1 %218, label %.thread118.i.i.i, label %219 219: ; preds = %215 %220 = load ptr, ptr %12, align 8, !noalias !387, !nonnull !8, !noundef !8 call void @__rust_dealloc(ptr noundef nonnull %220, i64 noundef %217, i64 noundef %214) #28, !noalias !310 - br label %.thread116.i.i.i + br label %.thread118.i.i.i -.thread116.i.i.i: ; preds = %219, %215, %.noexc7.i.i +.thread118.i.i.i: ; preds = %219, %215, %.noexc7.i.i call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12), !noalias !387 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24), !noalias !307 br label %"_ZN12object_store9GetResult5bytes28_$u7b$$u7b$closure$u7d$$u7d$28_$u7b$$u7b$closure$u7d$$u7d$17hbdd709c0a03062bcE.exit.i.i" -221: ; preds = %.thread118.i.i.i, %.thread66.i.i.i, %235, %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h9a0b02a1fb9f73fcE.exit.thread.i.i.i", %189 +221: ; preds = %.thread120.i.i.i, %.thread66.i.i.i, %235, %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h9a0b02a1fb9f73fcE.exit.thread.i.i.i", %189 %222 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #27, !noalias !310 unreachable -"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h9a0b02a1fb9f73fcE.exit.thread.i.i.i": ; preds = %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h9a0b02a1fb9f73fcE.exit.thread113.i.i.i", %189 - %.pn110.i.i.i = phi { ptr, i32 } [ %lpad.thr_comm111.i.i.i, %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h9a0b02a1fb9f73fcE.exit.thread113.i.i.i" ], [ %190, %189 ] - %.3108.i.i.i = phi i1 [ false, %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h9a0b02a1fb9f73fcE.exit.thread113.i.i.i" ], [ %.236.i.i.i, %189 ] +"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h9a0b02a1fb9f73fcE.exit.thread.i.i.i": ; preds = %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h9a0b02a1fb9f73fcE.exit.thread115.i.i.i", %189 + %.pn112.i.i.i = phi { ptr, i32 } [ %lpad.thr_comm113.i.i.i, %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h9a0b02a1fb9f73fcE.exit.thread115.i.i.i" ], [ %190, %189 ] + %.3110.i.i.i = phi i1 [ false, %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h9a0b02a1fb9f73fcE.exit.thread115.i.i.i" ], [ %.236.i.i.i, %189 ] invoke void @"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h5a8e491d169531e0E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %24) #26 to label %237 unwind label %221, !noalias !310 @@ -2782,16 +2782,16 @@ common.ret: ; preds = %722, %86, %37 to label %.body.i.i unwind label %221, !noalias !310 237: ; preds = %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17h9a0b02a1fb9f73fcE.exit.thread.i.i.i" - br i1 %.3108.i.i.i, label %.thread118.i.i.i, label %.body.i.i + br i1 %.3110.i.i.i, label %.thread120.i.i.i, label %.body.i.i .thread66.i.i.i: ; preds = %169, %.thread72.i.i.i %eh.lpad-body70.i.i.i = phi { ptr, i32 } [ %lpad.thr_comm.i.i.i, %.thread72.i.i.i ], [ %170, %169 ] %238 = load i32, ptr %156, align 8, !alias.scope !418, !noalias !309, !noundef !8 %239 = invoke noundef i32 @close(i32 noundef %238) - to label %.thread118.i.i.i unwind label %221, !noalias !310 + to label %.thread120.i.i.i unwind label %221, !noalias !310 -.thread118.i.i.i: ; preds = %.thread66.i.i.i, %237 - %.pn.pn65121.i.i.i = phi { ptr, i32 } [ %.pn110.i.i.i, %237 ], [ %eh.lpad-body70.i.i.i, %.thread66.i.i.i ] +.thread120.i.i.i: ; preds = %.thread66.i.i.i, %237 + %.pn.pn65123.i.i.i = phi { ptr, i32 } [ %.pn112.i.i.i, %237 ], [ %eh.lpad-body70.i.i.i, %.thread66.i.i.i ] invoke void @"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h6254ba8afc4e9988E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %28) #26 to label %.body.i.i unwind label %221, !noalias !310 @@ -2821,14 +2821,14 @@ common.ret: ; preds = %722, %86, %37 cleanup br label %.body.i.i -.body.i.i: ; preds = %250, %.thread118.i.i.i, %237, %235 - %eh.lpad-body.i.i = phi { ptr, i32 } [ %251, %250 ], [ %.pn.pn65121.i.i.i, %.thread118.i.i.i ], [ %.pn110.i.i.i, %237 ], [ %236, %235 ] +.body.i.i: ; preds = %250, %.thread120.i.i.i, %237, %235 + %eh.lpad-body.i.i = phi { ptr, i32 } [ %251, %250 ], [ %.pn.pn65123.i.i.i, %.thread120.i.i.i ], [ %.pn112.i.i.i, %237 ], [ %236, %235 ] call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %28), !noalias !293 br label %132 -"_ZN12object_store9GetResult5bytes28_$u7b$$u7b$closure$u7d$$u7d$28_$u7b$$u7b$closure$u7d$$u7d$17hbdd709c0a03062bcE.exit.i.i": ; preds = %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h6254ba8afc4e9988E.exit.i.i.i", %.thread116.i.i.i, %.noexc.i.i - %.sroa.6.i.sroa.0.0.i = phi ptr [ %.sroa.6.i.sroa.0.0.copyload55.i, %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h6254ba8afc4e9988E.exit.i.i.i" ], [ %.sroa.6.i.sroa.0.0.copyload.i, %.thread116.i.i.i ], [ %.sroa.6.i.sroa.0.0.copyload56.i, %.noexc.i.i ] - %.sroa.025.0.i.i = phi i64 [ %.sroa.025.0.copyload27.i.i, %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h6254ba8afc4e9988E.exit.i.i.i" ], [ %.sroa.025.0.copyload26.i.i, %.thread116.i.i.i ], [ 16, %.noexc.i.i ] +"_ZN12object_store9GetResult5bytes28_$u7b$$u7b$closure$u7d$$u7d$28_$u7b$$u7b$closure$u7d$$u7d$17hbdd709c0a03062bcE.exit.i.i": ; preds = %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h6254ba8afc4e9988E.exit.i.i.i", %.thread118.i.i.i, %.noexc.i.i + %.sroa.6.i.sroa.0.0.i = phi ptr [ %.sroa.6.i.sroa.0.0.copyload55.i, %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h6254ba8afc4e9988E.exit.i.i.i" ], [ %.sroa.6.i.sroa.0.0.copyload.i, %.thread118.i.i.i ], [ %.sroa.6.i.sroa.0.0.copyload56.i, %.noexc.i.i ] + %.sroa.025.0.i.i = phi i64 [ %.sroa.025.0.copyload27.i.i, %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h6254ba8afc4e9988E.exit.i.i.i" ], [ %.sroa.025.0.copyload26.i.i, %.thread118.i.i.i ], [ 16, %.noexc.i.i ] call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %28), !noalias !293 br label %310 @@ -7861,7 +7861,7 @@ define hidden { ptr, ptr } @"_ZN91_$LT$http..header..map..Iter$LT$T$GT$$u20$as$u %10 = getelementptr inbounds i8, ptr %9, i64 40 %11 = load i64, ptr %10, align 8, !noundef !8 %.not34 = icmp ult i64 %7, %11 - br i1 %.not34, label %17, label %44 + br i1 %.not34, label %17, label %46 12: ; preds = %._crit_edge, %17 %.off = phi i1 [ %3, %._crit_edge ], [ false, %17 ] @@ -7882,7 +7882,7 @@ define hidden { ptr, ptr } @"_ZN91_$LT$http..header..map..Iter$LT$T$GT$$u20$as$u %21 = getelementptr inbounds [0 x { { i64, [2 x i64] }, { { ptr, ptr, i64, { ptr } }, i8, [7 x i8] }, { { ptr, [3 x i64] } }, i16, [3 x i16] }], ptr %20, i64 0, i64 %14 %22 = getelementptr inbounds i8, ptr %0, i64 8 %23 = load i64, ptr %22, align 8 - br i1 %.off, label %27, label %25 + br i1 %.off, label %26, label %25 24: ; preds = %12 tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %14, i64 noundef %13, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.bcb33ca473573c9a2800c6755135ab0f.128) #29 @@ -7890,58 +7890,65 @@ define hidden { ptr, ptr } @"_ZN91_$LT$http..header..map..Iter$LT$T$GT$$u20$as$u 25: ; preds = %18 %.sroa.07.0.copyload = load i64, ptr %21, align 8 + %switch = icmp eq i64 %.sroa.07.0.copyload, 0 + br i1 %switch, label %31, label %30 + +26: ; preds = %18 + %27 = getelementptr inbounds i8, ptr %15, i64 64 + %28 = load i64, ptr %27, align 8, !noundef !8 + %29 = icmp ult i64 %23, %28 + br i1 %29, label %34, label %40, !prof !733 + +30: ; preds = %25 %.sroa.48.0..sroa_idx = getelementptr inbounds i8, ptr %21, i64 8 %.sroa.48.0.copyload = load i64, ptr %.sroa.48.0..sroa_idx, align 8 - %switch = icmp eq i64 %.sroa.07.0.copyload, 0 - %. = select i1 %switch, i64 2, i64 1 - store i64 %., ptr %0, align 8 - store i64 %.sroa.48.0.copyload, ptr %22, align 8 - %26 = getelementptr inbounds i8, ptr %21, i64 24 br label %31 -27: ; preds = %18 - %28 = getelementptr inbounds i8, ptr %15, i64 64 - %29 = load i64, ptr %28, align 8, !noundef !8 - %30 = icmp ult i64 %23, %29 - br i1 %30, label %32, label %38, !prof !733 +31: ; preds = %25, %30 + %.sroa.05.0 = phi i64 [ 1, %30 ], [ 2, %25 ] + %.sroa.56.0 = phi i64 [ %.sroa.48.0.copyload, %30 ], [ undef, %25 ] + store i64 %.sroa.05.0, ptr %0, align 8 + store i64 %.sroa.56.0, ptr %22, align 8 + %32 = getelementptr inbounds i8, ptr %21, i64 24 + br label %33 -31: ; preds = %42, %25 - %.sroa.4.0 = phi ptr [ %43, %42 ], [ %26, %25 ] +33: ; preds = %44, %31 + %.sroa.4.0 = phi ptr [ %45, %44 ], [ %32, %31 ] %.sroa.0.0 = getelementptr inbounds i8, ptr %21, i64 64 - br label %44 - -32: ; preds = %27 - %33 = getelementptr inbounds i8, ptr %15, i64 56 - %34 = load ptr, ptr %33, align 8, !nonnull !8, !noundef !8 - %35 = getelementptr inbounds [0 x { { i64, [1 x i64] }, { i64, [1 x i64] }, { { ptr, ptr, i64, { ptr } }, i8, [7 x i8] } }], ptr %34, i64 0, i64 %23 - %36 = getelementptr inbounds i8, ptr %35, i64 16 - %37 = load i64, ptr %36, align 8, !range !314, !noundef !8 - %trunc = trunc nuw i64 %37 to i1 - br i1 %trunc, label %39, label %42 - -38: ; preds = %27 - tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %23, i64 noundef %29, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.bcb33ca473573c9a2800c6755135ab0f.130) #29 + br label %46 + +34: ; preds = %26 + %35 = getelementptr inbounds i8, ptr %15, i64 56 + %36 = load ptr, ptr %35, align 8, !nonnull !8, !noundef !8 + %37 = getelementptr inbounds [0 x { { i64, [1 x i64] }, { i64, [1 x i64] }, { { ptr, ptr, i64, { ptr } }, i8, [7 x i8] } }], ptr %36, i64 0, i64 %23 + %38 = getelementptr inbounds i8, ptr %37, i64 16 + %39 = load i64, ptr %38, align 8, !range !314, !noundef !8 + %trunc = trunc nuw i64 %39 to i1 + br i1 %trunc, label %41, label %44 + +40: ; preds = %26 + tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %23, i64 noundef %28, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.bcb33ca473573c9a2800c6755135ab0f.130) #29 unreachable -39: ; preds = %32 - %40 = getelementptr inbounds i8, ptr %35, i64 24 - %41 = load i64, ptr %40, align 8, !noundef !8 - br label %42 +41: ; preds = %34 + %42 = getelementptr inbounds i8, ptr %37, i64 24 + %43 = load i64, ptr %42, align 8, !noundef !8 + br label %44 -42: ; preds = %32, %39 - %storemerge35 = phi i64 [ 1, %39 ], [ 2, %32 ] - %storemerge = phi i64 [ %41, %39 ], [ undef, %32 ] +44: ; preds = %34, %41 + %storemerge35 = phi i64 [ 1, %41 ], [ 2, %34 ] + %storemerge = phi i64 [ %43, %41 ], [ undef, %34 ] store i64 %storemerge35, ptr %0, align 8 store i64 %storemerge, ptr %22, align 8 - %43 = getelementptr inbounds i8, ptr %35, i64 32 - br label %31 + %45 = getelementptr inbounds i8, ptr %37, i64 32 + br label %33 -44: ; preds = %4, %31 - %.sroa.4.1 = phi ptr [ %.sroa.4.0, %31 ], [ undef, %4 ] - %.sroa.0.1 = phi ptr [ %.sroa.0.0, %31 ], [ null, %4 ] - %45 = insertvalue { ptr, ptr } poison, ptr %.sroa.0.1, 0 - %46 = insertvalue { ptr, ptr } %45, ptr %.sroa.4.1, 1 - ret { ptr, ptr } %46 +46: ; preds = %4, %33 + %.sroa.4.1 = phi ptr [ %.sroa.4.0, %33 ], [ undef, %4 ] + %.sroa.0.1 = phi ptr [ %.sroa.0.0, %33 ], [ null, %4 ] + %47 = insertvalue { ptr, ptr } poison, ptr %.sroa.0.1, 0 + %48 = insertvalue { ptr, ptr } %47, ptr %.sroa.4.1, 1 + ret { ptr, ptr } %48 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/delta-rs/optimized/41gv5sp2hzfeggkp.ll b/bench/delta-rs/optimized/41gv5sp2hzfeggkp.ll index 95528bd0ce4..0d7367ac8eb 100644 --- a/bench/delta-rs/optimized/41gv5sp2hzfeggkp.ll +++ b/bench/delta-rs/optimized/41gv5sp2hzfeggkp.ll @@ -3914,7 +3914,7 @@ define hidden void @"_ZN12object_store9GetResult5bytes28_$u7b$$u7b$closure$u7d$$ call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) %68 = load i32, ptr %51, align 8, !alias.scope !643, !noundef !8 %69 = invoke noundef i32 @close(i32 noundef %68) - to label %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17hf4d99820312955d8E.exit47" unwind label %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17hf4d99820312955d8E.exit.thread113" + to label %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17hf4d99820312955d8E.exit47" unwind label %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17hf4d99820312955d8E.exit.thread115" 70: ; preds = %56 %71 = getelementptr inbounds i8, ptr %15, i64 8 @@ -3935,8 +3935,8 @@ define hidden void @"_ZN12object_store9GetResult5bytes28_$u7b$$u7b$closure$u7d$$ invoke void @"_ZN12object_store5local103_$LT$impl$u20$core..convert..From$LT$object_store..local..Error$GT$$u20$for$u20$object_store..Error$GT$4from17h94749b3eb24f5b4dE"(ptr noalias nocapture noundef nonnull sret({ i64, [9 x i64] }) align 8 dereferenceable(80) %7, ptr noalias nocapture noundef nonnull align 8 dereferenceable(88) %8) to label %74 unwind label %52 -"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17hf4d99820312955d8E.exit.thread113": ; preds = %67, %74 - %lpad.thr_comm111 = landingpad { ptr, i32 } +"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17hf4d99820312955d8E.exit.thread115": ; preds = %67, %74 + %lpad.thr_comm113 = landingpad { ptr, i32 } cleanup br label %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17hf4d99820312955d8E.exit.thread" @@ -3954,7 +3954,7 @@ define hidden void @"_ZN12object_store9GetResult5bytes28_$u7b$$u7b$closure$u7d$$ call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) br label %.critedge -.critedge: ; preds = %.thread116, %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h7af57d42fb952001E.exit", %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17hf4d99820312955d8E.exit47" +.critedge: ; preds = %.thread118, %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h7af57d42fb952001E.exit", %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17hf4d99820312955d8E.exit47" ret void 74: ; preds = %70 @@ -3963,7 +3963,7 @@ define hidden void @"_ZN12object_store9GetResult5bytes28_$u7b$$u7b$closure$u7d$$ call void @llvm.lifetime.end.p0(i64 88, ptr nonnull %8) %75 = load i32, ptr %51, align 8, !alias.scope !656, !noundef !8 %76 = invoke noundef i32 @close(i32 noundef %75) - to label %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17hf4d99820312955d8E.exit49" unwind label %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17hf4d99820312955d8E.exit.thread113" + to label %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17hf4d99820312955d8E.exit49" unwind label %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17hf4d99820312955d8E.exit.thread115" "_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17hf4d99820312955d8E.exit49": ; preds = %74 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) @@ -3972,33 +3972,33 @@ define hidden void @"_ZN12object_store9GetResult5bytes28_$u7b$$u7b$closure$u7d$$ %77 = getelementptr inbounds i8, ptr %4, i64 8 %78 = load i64, ptr %77, align 8, !range !64, !noalias !669, !noundef !8 %.not.i.i.i = icmp eq i64 %78, 0 - br i1 %.not.i.i.i, label %.thread116, label %79 + br i1 %.not.i.i.i, label %.thread118, label %79 79: ; preds = %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17hf4d99820312955d8E.exit49" %80 = getelementptr inbounds i8, ptr %4, i64 16 %81 = load i64, ptr %80, align 8, !noalias !669, !noundef !8 %82 = icmp eq i64 %81, 0 - br i1 %82, label %.thread116, label %83 + br i1 %82, label %.thread118, label %83 83: ; preds = %79 %84 = load ptr, ptr %4, align 8, !noalias !669, !nonnull !8, !noundef !8 call void @__rust_dealloc(ptr noundef nonnull %84, i64 noundef %81, i64 noundef %78) #25 - br label %.thread116 + br label %.thread118 -.thread116: ; preds = %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17hf4d99820312955d8E.exit49", %79, %83 +.thread118: ; preds = %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17hf4d99820312955d8E.exit49", %79, %83 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4), !noalias !669 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) br label %.critedge -85: ; preds = %.thread66, %52, %.thread118, %100, %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17hf4d99820312955d8E.exit.thread" +85: ; preds = %.thread66, %52, %.thread120, %100, %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17hf4d99820312955d8E.exit.thread" %86 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #24 unreachable -"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17hf4d99820312955d8E.exit.thread": ; preds = %52, %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17hf4d99820312955d8E.exit.thread113" - %.pn110 = phi { ptr, i32 } [ %lpad.thr_comm111, %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17hf4d99820312955d8E.exit.thread113" ], [ %53, %52 ] - %.3108 = phi i1 [ false, %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17hf4d99820312955d8E.exit.thread113" ], [ %.236, %52 ] +"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17hf4d99820312955d8E.exit.thread": ; preds = %52, %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17hf4d99820312955d8E.exit.thread115" + %.pn112 = phi { ptr, i32 } [ %lpad.thr_comm113, %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17hf4d99820312955d8E.exit.thread115" ], [ %53, %52 ] + %.3110 = phi i1 [ false, %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17hf4d99820312955d8E.exit.thread115" ], [ %.236, %52 ] invoke void @"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h85ee4bb597d77556E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %16) #23 to label %102 unwind label %85 @@ -4033,8 +4033,8 @@ define hidden void @"_ZN12object_store9GetResult5bytes28_$u7b$$u7b$closure$u7d$$ call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3), !noalias !687 br label %.critedge -99: ; preds = %.thread118, %102, %100 - %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn65121, %.thread118 ], [ %.pn110, %102 ], [ %101, %100 ] +99: ; preds = %.thread120, %102, %100 + %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn65123, %.thread120 ], [ %.pn112, %102 ], [ %101, %100 ] resume { ptr, i32 } %.pn.pn.pn 100: ; preds = %87 @@ -4044,16 +4044,16 @@ define hidden void @"_ZN12object_store9GetResult5bytes28_$u7b$$u7b$closure$u7d$$ to label %99 unwind label %85 102: ; preds = %"_ZN4core3ptr55drop_in_place$LT$std..io..Take$LT$std..fs..File$GT$$GT$17hf4d99820312955d8E.exit.thread" - br i1 %.3108, label %.thread118, label %99 + br i1 %.3110, label %.thread120, label %99 .thread66: ; preds = %32, %.thread72 %eh.lpad-body70 = phi { ptr, i32 } [ %lpad.thr_comm, %.thread72 ], [ %33, %32 ] %103 = load i32, ptr %19, align 8, !alias.scope !700, !noundef !8 %104 = invoke noundef i32 @close(i32 noundef %103) - to label %.thread118 unwind label %85 + to label %.thread120 unwind label %85 -.thread118: ; preds = %.thread66, %102 - %.pn.pn65121 = phi { ptr, i32 } [ %.pn110, %102 ], [ %eh.lpad-body70, %.thread66 ] +.thread120: ; preds = %.thread66, %102 + %.pn.pn65123 = phi { ptr, i32 } [ %.pn112, %102 ], [ %eh.lpad-body70, %.thread66 ] invoke void @"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h7af57d42fb952001E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1) #23 to label %99 unwind label %85 } @@ -7679,10 +7679,10 @@ define hidden void @"_ZN5tokio7runtime4task4core17Core$LT$T$C$S$GT$11take_output define hidden void @_ZN5tokio7runtime4task7harness11cancel_task17hcfb436ce1af37683E.llvm.14717219417407196840(ptr noundef nonnull align 8 %0) unnamed_addr #0 personality ptr @rust_eh_personality { %.sroa.0.i = alloca { i64, [9 x i64] }, align 8 %2 = alloca { { i64, [1 x i64] } }, align 8 - %3 = alloca { [2 x i64] }, align 16 + %3 = alloca { [2 x i64] }, align 8 %4 = alloca { i64, [9 x i64] }, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) - store ptr %0, ptr %3, align 16 + store ptr %0, ptr %3, align 8 invoke void @_ZN3std9panicking3try7do_call17hb0a909f876b7fdaaE.llvm.7968710586988261434(ptr nonnull %3) to label %_ZN3std9panicking3try17ha12cc36a9716cfa2E.exit unwind label %5 @@ -7691,60 +7691,67 @@ define hidden void @_ZN5tokio7runtime4task7harness11cancel_task17hcfb436ce1af376 catch ptr null %7 = extractvalue { ptr, i32 } %6, 0 call void @_ZN3std9panicking3try8do_catch17hd810661245a8e0ddE.llvm.7968710586988261434(ptr nonnull %3, ptr %7) - %8 = load <2 x ptr>, ptr %3, align 16 + %8 = load ptr, ptr %3, align 8, !nonnull !8, !align !301 + %9 = getelementptr inbounds i8, ptr %3, i64 8 + %10 = load ptr, ptr %9, align 8, !nonnull !8, !align !9 br label %_ZN3std9panicking3try17ha12cc36a9716cfa2E.exit _ZN3std9panicking3try17ha12cc36a9716cfa2E.exit: ; preds = %1, %5 - %9 = phi <2 x ptr> [ %8, %5 ], [ , %1 ] + %11 = phi ptr [ %10, %5 ], [ undef, %1 ] + %12 = phi ptr [ %8, %5 ], [ null, %1 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) - %10 = load i64, ptr %0, align 8, !noundef !8 + %13 = load i64, ptr %0, align 8, !noundef !8 + %14 = icmp eq ptr %12, null + %spec.select9 = select i1 %14, ptr undef, ptr %11 call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %4) store i64 17, ptr %4, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %4, i64 8 - store <2 x ptr> %9, ptr %.sroa.4.0..sroa_idx, align 8 + store ptr %12, ptr %.sroa.4.0..sroa_idx, align 8 + %.sroa.4.sroa.4.0..sroa.4.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %4, i64 16 + store ptr %spec.select9, ptr %.sroa.4.sroa.4.0..sroa.4.0..sroa_idx.sroa_idx, align 8 %.sroa.4.sroa.5.0..sroa.4.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %4, i64 24 - store i64 %10, ptr %.sroa.4.sroa.5.0..sroa.4.0..sroa_idx.sroa_idx, align 8 + store i64 %13, ptr %.sroa.4.sroa.5.0..sroa.4.0..sroa_idx.sroa_idx, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2), !noalias !1433 - %11 = invoke { i64, i64 } @_ZN5tokio7runtime4task4core11TaskIdGuard5enter17h37d18785748bffe5E(i64 noundef %10) - to label %12 unwind label %20, !noalias !1433 - -12: ; preds = %_ZN3std9panicking3try17ha12cc36a9716cfa2E.exit - %13 = extractvalue { i64, i64 } %11, 0 - %14 = extractvalue { i64, i64 } %11, 1 - store i64 %13, ptr %2, align 8, !noalias !1433 - %15 = getelementptr inbounds i8, ptr %2, i64 8 - store i64 %14, ptr %15, align 8, !noalias !1433 + %15 = invoke { i64, i64 } @_ZN5tokio7runtime4task4core11TaskIdGuard5enter17h37d18785748bffe5E(i64 noundef %13) + to label %16 unwind label %24, !noalias !1433 + +16: ; preds = %_ZN3std9panicking3try17ha12cc36a9716cfa2E.exit + %17 = extractvalue { i64, i64 } %15, 0 + %18 = extractvalue { i64, i64 } %15, 1 + store i64 %17, ptr %2, align 8, !noalias !1433 + %19 = getelementptr inbounds i8, ptr %2, i64 8 + store i64 %18, ptr %19, align 8, !noalias !1433 call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %.sroa.0.i) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %.sroa.0.i, ptr noundef nonnull align 8 dereferenceable(80) %4, i64 80, i1 false) - %16 = getelementptr inbounds i8, ptr %0, i64 8 - invoke void @"_ZN4core3ptr202drop_in_place$LT$tokio..runtime..task..core..Stage$LT$tokio..runtime..blocking..task..BlockingTask$LT$object_store..GetResult..bytes..$u7b$$u7b$closure$u7d$$u7d$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17he1d1ae1eb9debf4aE.llvm.1076522478569107936"(ptr noalias noundef nonnull align 8 dereferenceable(80) %16) + %20 = getelementptr inbounds i8, ptr %0, i64 8 + invoke void @"_ZN4core3ptr202drop_in_place$LT$tokio..runtime..task..core..Stage$LT$tokio..runtime..blocking..task..BlockingTask$LT$object_store..GetResult..bytes..$u7b$$u7b$closure$u7d$$u7d$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17he1d1ae1eb9debf4aE.llvm.1076522478569107936"(ptr noalias noundef nonnull align 8 dereferenceable(80) %20) to label %"_ZN5tokio7runtime4task4core17Core$LT$T$C$S$GT$9set_stage17h2e9890be9a66dc1dE.exit" unwind label %.body.i, !noalias !1436 -.body.i: ; preds = %12 - %17 = landingpad { ptr, i32 } +.body.i: ; preds = %16 + %21 = landingpad { ptr, i32 } cleanup - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %16, ptr noundef nonnull align 8 dereferenceable(80) %.sroa.0.i, i64 80, i1 false), !noalias !1433 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %20, ptr noundef nonnull align 8 dereferenceable(80) %.sroa.0.i, i64 80, i1 false), !noalias !1433 invoke void @"_ZN81_$LT$tokio..runtime..task..core..TaskIdGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17h41c4e38ca1e60cdcE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %2) - to label %.thread.i unwind label %18, !noalias !1433 + to label %.thread.i unwind label %22, !noalias !1433 -18: ; preds = %20, %.body.i - %19 = landingpad { ptr, i32 } +22: ; preds = %24, %.body.i + %23 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #24 unreachable -.thread.i: ; preds = %20, %.body.i - %.pn5.i = phi { ptr, i32 } [ %21, %20 ], [ %17, %.body.i ] +.thread.i: ; preds = %24, %.body.i + %.pn5.i = phi { ptr, i32 } [ %25, %24 ], [ %21, %.body.i ] resume { ptr, i32 } %.pn5.i -20: ; preds = %_ZN3std9panicking3try17ha12cc36a9716cfa2E.exit - %21 = landingpad { ptr, i32 } +24: ; preds = %_ZN3std9panicking3try17ha12cc36a9716cfa2E.exit + %25 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr202drop_in_place$LT$tokio..runtime..task..core..Stage$LT$tokio..runtime..blocking..task..BlockingTask$LT$object_store..GetResult..bytes..$u7b$$u7b$closure$u7d$$u7d$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17he1d1ae1eb9debf4aE.llvm.1076522478569107936"(ptr noalias noundef nonnull align 8 dereferenceable(80) %4) #23 - to label %.thread.i unwind label %18 + to label %.thread.i unwind label %22 -"_ZN5tokio7runtime4task4core17Core$LT$T$C$S$GT$9set_stage17h2e9890be9a66dc1dE.exit": ; preds = %12 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %16, ptr noundef nonnull align 8 dereferenceable(80) %.sroa.0.i, i64 80, i1 false), !noalias !1433 +"_ZN5tokio7runtime4task4core17Core$LT$T$C$S$GT$9set_stage17h2e9890be9a66dc1dE.exit": ; preds = %16 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %20, ptr noundef nonnull align 8 dereferenceable(80) %.sroa.0.i, i64 80, i1 false), !noalias !1433 call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %.sroa.0.i) call void @"_ZN81_$LT$tokio..runtime..task..core..TaskIdGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17h41c4e38ca1e60cdcE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %2), !noalias !1433 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2), !noalias !1433 diff --git a/bench/delta-rs/optimized/4dbpnkyij7o2iiab.ll b/bench/delta-rs/optimized/4dbpnkyij7o2iiab.ll index 2907e1ad400..895cdaa3542 100644 --- a/bench/delta-rs/optimized/4dbpnkyij7o2iiab.ll +++ b/bench/delta-rs/optimized/4dbpnkyij7o2iiab.ll @@ -3325,7 +3325,7 @@ define hidden { ptr, ptr } @"_ZN91_$LT$http..header..map..Iter$LT$T$GT$$u20$as$u %10 = getelementptr inbounds i8, ptr %9, i64 40 %11 = load i64, ptr %10, align 8, !noundef !5 %.not34 = icmp ult i64 %7, %11 - br i1 %.not34, label %17, label %42 + br i1 %.not34, label %17, label %43 12: ; preds = %._crit_edge, %17 %.off = phi i1 [ %3, %._crit_edge ], [ false, %17 ] @@ -3355,51 +3355,57 @@ define hidden { ptr, ptr } @"_ZN91_$LT$http..header..map..Iter$LT$T$GT$$u20$as$u 25: ; preds = %18 %26 = getelementptr inbounds i8, ptr %21, i64 48 %.sroa.07.0.copyload = load i64, ptr %26, align 8 - %.sroa.48.0..sroa_idx = getelementptr inbounds i8, ptr %21, i64 56 - %.sroa.48.0.copyload = load i64, ptr %.sroa.48.0..sroa_idx, align 8 %switch = icmp eq i64 %.sroa.07.0.copyload, 0 - %. = select i1 %switch, i64 2, i64 1 - br label %31 + br i1 %switch, label %33, label %31 27: ; preds = %18 %28 = getelementptr inbounds i8, ptr %15, i64 64 %29 = load i64, ptr %28, align 8, !noundef !5 %30 = icmp ult i64 %23, %29 - br i1 %30, label %32, label %38, !prof !446 + br i1 %30, label %34, label %40, !prof !446 -31: ; preds = %39, %32, %25 - %storemerge39 = phi i64 [ %., %25 ], [ 1, %39 ], [ 2, %32 ] - %storemerge38 = phi i64 [ %.sroa.48.0.copyload, %25 ], [ %41, %39 ], [ undef, %32 ] - %.sroa.4.0 = phi ptr [ %21, %25 ], [ %35, %39 ], [ %35, %32 ] +31: ; preds = %25 + %.sroa.48.0..sroa_idx = getelementptr inbounds i8, ptr %21, i64 56 + br label %.sink.split + +.sink.split: ; preds = %31, %41 + %.sink = phi ptr [ %42, %41 ], [ %.sroa.48.0..sroa_idx, %31 ] + %.sroa.4.0.ph = phi ptr [ %37, %41 ], [ %21, %31 ] + %32 = load i64, ptr %.sink, align 8 + br label %33 + +33: ; preds = %.sink.split, %34, %25 + %storemerge39 = phi i64 [ 2, %25 ], [ 2, %34 ], [ 1, %.sink.split ] + %storemerge38 = phi i64 [ undef, %25 ], [ undef, %34 ], [ %32, %.sink.split ] + %.sroa.4.0 = phi ptr [ %21, %25 ], [ %37, %34 ], [ %.sroa.4.0.ph, %.sink.split ] store i64 %storemerge39, ptr %0, align 8 store i64 %storemerge38, ptr %22, align 8 %.sroa.0.0 = getelementptr inbounds i8, ptr %21, i64 72 - br label %42 - -32: ; preds = %27 - %33 = getelementptr inbounds i8, ptr %15, i64 56 - %34 = load ptr, ptr %33, align 8, !nonnull !5, !noundef !5 - %35 = getelementptr inbounds [0 x { { { i64, [5 x i64] } }, { i64, [1 x i64] }, { i64, [1 x i64] } }], ptr %34, i64 0, i64 %23 - %36 = getelementptr inbounds i8, ptr %35, i64 64 - %37 = load i64, ptr %36, align 8, !range !447, !noundef !5 - %trunc = trunc nuw i64 %37 to i1 - br i1 %trunc, label %39, label %31 - -38: ; preds = %27 + br label %43 + +34: ; preds = %27 + %35 = getelementptr inbounds i8, ptr %15, i64 56 + %36 = load ptr, ptr %35, align 8, !nonnull !5, !noundef !5 + %37 = getelementptr inbounds [0 x { { { i64, [5 x i64] } }, { i64, [1 x i64] }, { i64, [1 x i64] } }], ptr %36, i64 0, i64 %23 + %38 = getelementptr inbounds i8, ptr %37, i64 64 + %39 = load i64, ptr %38, align 8, !range !447, !noundef !5 + %trunc = trunc nuw i64 %39 to i1 + br i1 %trunc, label %41, label %33 + +40: ; preds = %27 tail call void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %23, i64 noundef %29, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.b104ed89325d1be2d44684ba2b5b6ba2.143) #21 unreachable -39: ; preds = %32 - %40 = getelementptr inbounds i8, ptr %35, i64 72 - %41 = load i64, ptr %40, align 8, !noundef !5 - br label %31 - -42: ; preds = %4, %31 - %.sroa.4.1 = phi ptr [ %.sroa.4.0, %31 ], [ undef, %4 ] - %.sroa.0.1 = phi ptr [ %.sroa.0.0, %31 ], [ null, %4 ] - %43 = insertvalue { ptr, ptr } poison, ptr %.sroa.0.1, 0 - %44 = insertvalue { ptr, ptr } %43, ptr %.sroa.4.1, 1 - ret { ptr, ptr } %44 +41: ; preds = %34 + %42 = getelementptr inbounds i8, ptr %37, i64 72 + br label %.sink.split + +43: ; preds = %4, %33 + %.sroa.4.1 = phi ptr [ %.sroa.4.0, %33 ], [ undef, %4 ] + %.sroa.0.1 = phi ptr [ %.sroa.0.0, %33 ], [ null, %4 ] + %44 = insertvalue { ptr, ptr } poison, ptr %.sroa.0.1, 0 + %45 = insertvalue { ptr, ptr } %44, ptr %.sroa.4.1, 1 + ret { ptr, ptr } %45 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable diff --git a/bench/delta-rs/optimized/4jpyf52a2nk6q4dy.ll b/bench/delta-rs/optimized/4jpyf52a2nk6q4dy.ll index 18522ce4943..21a93dea64c 100644 --- a/bench/delta-rs/optimized/4jpyf52a2nk6q4dy.ll +++ b/bench/delta-rs/optimized/4jpyf52a2nk6q4dy.ll @@ -719,9 +719,13 @@ define hidden noundef zeroext i1 @"_ZN42_$LT$$RF$T$u20$as$u20$core..fmt..Debug$G ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define hidden { i64, i64 } @"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hb649c4261efabd4fE.llvm.1683228073582790202"(i64 noundef %0, i64 %1) unnamed_addr #4 { - %3 = insertvalue { i64, i64 } poison, i64 %0, 0 - %4 = insertvalue { i64, i64 } %3, i64 %1, 1 - ret { i64, i64 } %4 + %3 = icmp eq i64 %0, -9223372036854775807 + %4 = icmp eq i64 %0, 0 + %5 = or i1 %3, %4 + %.sroa.33.0 = select i1 %5, i64 undef, i64 %1 + %6 = insertvalue { i64, i64 } poison, i64 %0, 0 + %7 = insertvalue { i64, i64 } %6, i64 %.sroa.33.0, 1 + ret { i64, i64 } %7 } ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable @@ -747,8 +751,8 @@ define hidden void @"_ZN5alloc11collections5btree4node127NodeRef$LT$alloc..colle br label %12 12: ; preds = %"_ZN5alloc11collections5btree4node40NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$6ascend17h4d1054785c0282c1E.llvm.1683228073582790202.exit.thread", %7 - %.sink19.i12 = phi i64 [ %11, %7 ], [ %2, %"_ZN5alloc11collections5btree4node40NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$6ascend17h4d1054785c0282c1E.llvm.1683228073582790202.exit.thread" ] %.sink20.i11 = phi i64 [ %8, %7 ], [ %6, %"_ZN5alloc11collections5btree4node40NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$6ascend17h4d1054785c0282c1E.llvm.1683228073582790202.exit.thread" ] + %.sroa.5.sroa.4.0 = phi i64 [ %11, %7 ], [ undef, %"_ZN5alloc11collections5btree4node40NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$6ascend17h4d1054785c0282c1E.llvm.1683228073582790202.exit.thread" ] %.not = icmp eq i64 %2, 0 %. = select i1 %.not, i64 896, i64 992 tail call void @__rust_dealloc(ptr noundef nonnull %1, i64 noundef %., i64 noundef 8) #28 @@ -756,7 +760,7 @@ define hidden void @"_ZN5alloc11collections5btree4node127NodeRef$LT$alloc..colle %.sroa.5.0..sroa_idx2 = getelementptr inbounds i8, ptr %0, i64 8 store i64 %.sink20.i11, ptr %.sroa.5.0..sroa_idx2, align 8 %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx2.sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 - store i64 %.sink19.i12, ptr %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx2.sroa_idx, align 8 + store i64 %.sroa.5.sroa.4.0, ptr %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx2.sroa_idx, align 8 ret void } @@ -1243,15 +1247,19 @@ define hidden void @_ZN5alloc7raw_vec14handle_reserve17hf0112dc2ee693d5aE.llvm.1 unreachable 5: ; preds = %2 - tail call void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef %0, i64 noundef %1) #31 + %6 = icmp eq i64 %0, -9223372036854775807 + %.sroa.33.0.i = select i1 %6, i64 undef, i64 %1 + tail call void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef %0, i64 noundef %.sroa.33.0.i) #31 unreachable } ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define hidden { i64, i64 } @"_ZN5alloc7raw_vec14handle_reserve28_$u7b$$u7b$closure$u7d$$u7d$17h5f8c48271b312f48E.llvm.1683228073582790202"(i64 noundef %0, i64 %1) unnamed_addr #4 { - %3 = insertvalue { i64, i64 } poison, i64 %0, 0 - %4 = insertvalue { i64, i64 } %3, i64 %1, 1 - ret { i64, i64 } %4 + %3 = icmp eq i64 %0, 0 + %.4 = select i1 %3, i64 undef, i64 %1 + %4 = insertvalue { i64, i64 } poison, i64 %0, 0 + %5 = insertvalue { i64, i64 } %4, i64 %.4, 1 + ret { i64, i64 } %5 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/delta-rs/optimized/4yzqn3zldbxccs8p.ll b/bench/delta-rs/optimized/4yzqn3zldbxccs8p.ll index 8b0760ff6ea..513b3a6a6ad 100644 --- a/bench/delta-rs/optimized/4yzqn3zldbxccs8p.ll +++ b/bench/delta-rs/optimized/4yzqn3zldbxccs8p.ll @@ -29288,10 +29288,10 @@ define hidden void @"_ZN5tokio7runtime4task4core17Core$LT$T$C$S$GT$9set_stage28_ define internal fastcc void @_ZN5tokio7runtime4task7harness11cancel_task17h5695a3fda9890029E(ptr noundef nonnull align 8 %0) unnamed_addr #2 personality ptr @rust_eh_personality { %.sroa.0.i = alloca { i64, [9 x i64] }, align 8 %2 = alloca { { i64, [1 x i64] } }, align 8 - %3 = alloca { [2 x i64] }, align 16 + %3 = alloca { [2 x i64] }, align 8 %4 = alloca { i64, [9 x i64] }, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) - store ptr %0, ptr %3, align 16 + store ptr %0, ptr %3, align 8 invoke void @_ZN3std9panicking3try7do_call17h5206c191ed4faca3E.llvm.2348384389168151573(ptr nonnull %3) to label %_ZN3std9panicking3try17hd027ffbafbaec7c7E.exit unwind label %5 @@ -29300,60 +29300,67 @@ define internal fastcc void @_ZN5tokio7runtime4task7harness11cancel_task17h5695a catch ptr null %7 = extractvalue { ptr, i32 } %6, 0 call void @_ZN3std9panicking3try8do_catch17h7eda7995e6fec8b3E.llvm.2348384389168151573(ptr nonnull %3, ptr %7) - %8 = load <2 x ptr>, ptr %3, align 16 + %8 = load ptr, ptr %3, align 8, !nonnull !7, !align !38 + %9 = getelementptr inbounds i8, ptr %3, i64 8 + %10 = load ptr, ptr %9, align 8, !nonnull !7, !align !8 br label %_ZN3std9panicking3try17hd027ffbafbaec7c7E.exit _ZN3std9panicking3try17hd027ffbafbaec7c7E.exit: ; preds = %1, %5 - %9 = phi <2 x ptr> [ %8, %5 ], [ , %1 ] + %11 = phi ptr [ %10, %5 ], [ undef, %1 ] + %12 = phi ptr [ %8, %5 ], [ null, %1 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) - %10 = load i64, ptr %0, align 8, !noundef !7 + %13 = load i64, ptr %0, align 8, !noundef !7 + %14 = icmp eq ptr %12, null + %spec.select9 = select i1 %14, ptr undef, ptr %11 call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %4) store i64 17, ptr %4, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %4, i64 8 - store <2 x ptr> %9, ptr %.sroa.4.0..sroa_idx, align 8 + store ptr %12, ptr %.sroa.4.0..sroa_idx, align 8 + %.sroa.4.sroa.4.0..sroa.4.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %4, i64 16 + store ptr %spec.select9, ptr %.sroa.4.sroa.4.0..sroa.4.0..sroa_idx.sroa_idx, align 8 %.sroa.4.sroa.5.0..sroa.4.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %4, i64 24 - store i64 %10, ptr %.sroa.4.sroa.5.0..sroa.4.0..sroa_idx.sroa_idx, align 8 + store i64 %13, ptr %.sroa.4.sroa.5.0..sroa.4.0..sroa_idx.sroa_idx, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2), !noalias !5267 - %11 = invoke { i64, i64 } @_ZN5tokio7runtime4task4core11TaskIdGuard5enter17h37d18785748bffe5E(i64 noundef %10) - to label %12 unwind label %20, !noalias !5267 + %15 = invoke { i64, i64 } @_ZN5tokio7runtime4task4core11TaskIdGuard5enter17h37d18785748bffe5E(i64 noundef %13) + to label %16 unwind label %24, !noalias !5267 -12: ; preds = %_ZN3std9panicking3try17hd027ffbafbaec7c7E.exit - %13 = extractvalue { i64, i64 } %11, 0 - %14 = extractvalue { i64, i64 } %11, 1 - store i64 %13, ptr %2, align 8, !noalias !5267 - %15 = getelementptr inbounds i8, ptr %2, i64 8 - store i64 %14, ptr %15, align 8, !noalias !5267 +16: ; preds = %_ZN3std9panicking3try17hd027ffbafbaec7c7E.exit + %17 = extractvalue { i64, i64 } %15, 0 + %18 = extractvalue { i64, i64 } %15, 1 + store i64 %17, ptr %2, align 8, !noalias !5267 + %19 = getelementptr inbounds i8, ptr %2, i64 8 + store i64 %18, ptr %19, align 8, !noalias !5267 call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %.sroa.0.i) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %.sroa.0.i, ptr noundef nonnull align 8 dereferenceable(80) %4, i64 80, i1 false) - %16 = getelementptr inbounds i8, ptr %0, i64 8 - invoke void @"_ZN4core3ptr202drop_in_place$LT$tokio..runtime..task..core..Stage$LT$tokio..runtime..blocking..task..BlockingTask$LT$object_store..GetResult..bytes..$u7b$$u7b$closure$u7d$$u7d$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17h3109ab2bda3f4ac5E.llvm.8209374114036670355"(ptr noalias noundef nonnull align 8 dereferenceable(80) %16) + %20 = getelementptr inbounds i8, ptr %0, i64 8 + invoke void @"_ZN4core3ptr202drop_in_place$LT$tokio..runtime..task..core..Stage$LT$tokio..runtime..blocking..task..BlockingTask$LT$object_store..GetResult..bytes..$u7b$$u7b$closure$u7d$$u7d$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17h3109ab2bda3f4ac5E.llvm.8209374114036670355"(ptr noalias noundef nonnull align 8 dereferenceable(80) %20) to label %"_ZN5tokio7runtime4task4core17Core$LT$T$C$S$GT$9set_stage17he119df5e410db988E.exit" unwind label %.body.i, !noalias !5270 -.body.i: ; preds = %12 - %17 = landingpad { ptr, i32 } +.body.i: ; preds = %16 + %21 = landingpad { ptr, i32 } cleanup - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %16, ptr noundef nonnull align 8 dereferenceable(80) %.sroa.0.i, i64 80, i1 false), !noalias !5267 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %20, ptr noundef nonnull align 8 dereferenceable(80) %.sroa.0.i, i64 80, i1 false), !noalias !5267 invoke void @"_ZN81_$LT$tokio..runtime..task..core..TaskIdGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17h41c4e38ca1e60cdcE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %2) - to label %.thread.i unwind label %18, !noalias !5267 + to label %.thread.i unwind label %22, !noalias !5267 -18: ; preds = %20, %.body.i - %19 = landingpad { ptr, i32 } +22: ; preds = %24, %.body.i + %23 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #38 unreachable -.thread.i: ; preds = %20, %.body.i - %.pn5.i = phi { ptr, i32 } [ %21, %20 ], [ %17, %.body.i ] +.thread.i: ; preds = %24, %.body.i + %.pn5.i = phi { ptr, i32 } [ %25, %24 ], [ %21, %.body.i ] resume { ptr, i32 } %.pn5.i -20: ; preds = %_ZN3std9panicking3try17hd027ffbafbaec7c7E.exit - %21 = landingpad { ptr, i32 } +24: ; preds = %_ZN3std9panicking3try17hd027ffbafbaec7c7E.exit + %25 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr202drop_in_place$LT$tokio..runtime..task..core..Stage$LT$tokio..runtime..blocking..task..BlockingTask$LT$object_store..GetResult..bytes..$u7b$$u7b$closure$u7d$$u7d$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17h3109ab2bda3f4ac5E.llvm.8209374114036670355"(ptr noalias noundef nonnull align 8 dereferenceable(80) %4) #37 - to label %.thread.i unwind label %18 + to label %.thread.i unwind label %22 -"_ZN5tokio7runtime4task4core17Core$LT$T$C$S$GT$9set_stage17he119df5e410db988E.exit": ; preds = %12 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %16, ptr noundef nonnull align 8 dereferenceable(80) %.sroa.0.i, i64 80, i1 false), !noalias !5267 +"_ZN5tokio7runtime4task4core17Core$LT$T$C$S$GT$9set_stage17he119df5e410db988E.exit": ; preds = %16 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %20, ptr noundef nonnull align 8 dereferenceable(80) %.sroa.0.i, i64 80, i1 false), !noalias !5267 call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %.sroa.0.i) call void @"_ZN81_$LT$tokio..runtime..task..core..TaskIdGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17h41c4e38ca1e60cdcE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %2), !noalias !5267 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2), !noalias !5267 @@ -29365,10 +29372,10 @@ _ZN3std9panicking3try17hd027ffbafbaec7c7E.exit: ; preds = %1, %5 define internal fastcc void @_ZN5tokio7runtime4task7harness11cancel_task17h60cc51067b605640E(ptr noundef nonnull align 8 %0) unnamed_addr #2 personality ptr @rust_eh_personality { %.sroa.0.i = alloca { i64, [3 x i64] }, align 8 %2 = alloca { { i64, [1 x i64] } }, align 8 - %3 = alloca { [2 x i64] }, align 16 + %3 = alloca { [2 x i64] }, align 8 %4 = alloca { i64, [3 x i64] }, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) - store ptr %0, ptr %3, align 16 + store ptr %0, ptr %3, align 8 invoke void @_ZN3std9panicking3try7do_call17h799f37f47f17d9baE.llvm.2348384389168151573(ptr nonnull %3) to label %_ZN3std9panicking3try17ha90ccec968e41b81E.exit unwind label %5 @@ -29377,60 +29384,67 @@ define internal fastcc void @_ZN5tokio7runtime4task7harness11cancel_task17h60cc5 catch ptr null %7 = extractvalue { ptr, i32 } %6, 0 call void @_ZN3std9panicking3try8do_catch17h452ff67b2f3034eaE.llvm.2348384389168151573(ptr nonnull %3, ptr %7) - %8 = load <2 x ptr>, ptr %3, align 16 + %8 = load ptr, ptr %3, align 8, !nonnull !7, !align !38 + %9 = getelementptr inbounds i8, ptr %3, i64 8 + %10 = load ptr, ptr %9, align 8, !nonnull !7, !align !8 br label %_ZN3std9panicking3try17ha90ccec968e41b81E.exit _ZN3std9panicking3try17ha90ccec968e41b81E.exit: ; preds = %1, %5 - %9 = phi <2 x ptr> [ %8, %5 ], [ , %1 ] + %11 = phi ptr [ %10, %5 ], [ undef, %1 ] + %12 = phi ptr [ %8, %5 ], [ null, %1 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) - %10 = load i64, ptr %0, align 8, !noundef !7 + %13 = load i64, ptr %0, align 8, !noundef !7 + %14 = icmp eq ptr %12, null + %spec.select8 = select i1 %14, ptr undef, ptr %11 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) store i64 1, ptr %4, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %4, i64 8 - store <2 x ptr> %9, ptr %.sroa.4.0..sroa_idx, align 8 + store ptr %12, ptr %.sroa.4.0..sroa_idx, align 8 + %.sroa.4.sroa.4.0..sroa.4.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %4, i64 16 + store ptr %spec.select8, ptr %.sroa.4.sroa.4.0..sroa.4.0..sroa_idx.sroa_idx, align 8 %.sroa.4.sroa.5.0..sroa.4.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %4, i64 24 - store i64 %10, ptr %.sroa.4.sroa.5.0..sroa.4.0..sroa_idx.sroa_idx, align 8 + store i64 %13, ptr %.sroa.4.sroa.5.0..sroa.4.0..sroa_idx.sroa_idx, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2), !noalias !5273 - %11 = invoke { i64, i64 } @_ZN5tokio7runtime4task4core11TaskIdGuard5enter17h37d18785748bffe5E(i64 noundef %10) - to label %12 unwind label %20, !noalias !5273 + %15 = invoke { i64, i64 } @_ZN5tokio7runtime4task4core11TaskIdGuard5enter17h37d18785748bffe5E(i64 noundef %13) + to label %16 unwind label %24, !noalias !5273 -12: ; preds = %_ZN3std9panicking3try17ha90ccec968e41b81E.exit - %13 = extractvalue { i64, i64 } %11, 0 - %14 = extractvalue { i64, i64 } %11, 1 - store i64 %13, ptr %2, align 8, !noalias !5273 - %15 = getelementptr inbounds i8, ptr %2, i64 8 - store i64 %14, ptr %15, align 8, !noalias !5273 +16: ; preds = %_ZN3std9panicking3try17ha90ccec968e41b81E.exit + %17 = extractvalue { i64, i64 } %15, 0 + %18 = extractvalue { i64, i64 } %15, 1 + store i64 %17, ptr %2, align 8, !noalias !5273 + %19 = getelementptr inbounds i8, ptr %2, i64 8 + store i64 %18, ptr %19, align 8, !noalias !5273 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %.sroa.0.i) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.0.i, ptr noundef nonnull align 8 dereferenceable(32) %4, i64 32, i1 false) - %16 = getelementptr inbounds i8, ptr %0, i64 8 - invoke void @"_ZN4core3ptr424drop_in_place$LT$tokio..runtime..task..core..Stage$LT$tokio..runtime..blocking..task..BlockingTask$LT$tokio..runtime..scheduler..multi_thread..worker..block_in_place$LT$deltalake_aws..storage..execute_sdk_future$LT$aws_config..loader..ConfigLoader..load..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$C$aws_types..sdk_config..SdkConfig$GT$..$u7b$$u7b$closure$u7d$$u7d$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17h56ebc495b183418aE.llvm.8209374114036670355"(ptr noalias noundef nonnull align 8 dereferenceable(32) %16) + %20 = getelementptr inbounds i8, ptr %0, i64 8 + invoke void @"_ZN4core3ptr424drop_in_place$LT$tokio..runtime..task..core..Stage$LT$tokio..runtime..blocking..task..BlockingTask$LT$tokio..runtime..scheduler..multi_thread..worker..block_in_place$LT$deltalake_aws..storage..execute_sdk_future$LT$aws_config..loader..ConfigLoader..load..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$C$aws_types..sdk_config..SdkConfig$GT$..$u7b$$u7b$closure$u7d$$u7d$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17h56ebc495b183418aE.llvm.8209374114036670355"(ptr noalias noundef nonnull align 8 dereferenceable(32) %20) to label %"_ZN5tokio7runtime4task4core17Core$LT$T$C$S$GT$9set_stage17ha2ede29c35caf714E.exit" unwind label %.body.i, !noalias !5276 -.body.i: ; preds = %12 - %17 = landingpad { ptr, i32 } +.body.i: ; preds = %16 + %21 = landingpad { ptr, i32 } cleanup - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.0.i, i64 32, i1 false), !noalias !5273 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.0.i, i64 32, i1 false), !noalias !5273 invoke void @"_ZN81_$LT$tokio..runtime..task..core..TaskIdGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17h41c4e38ca1e60cdcE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %2) - to label %.thread.i unwind label %18, !noalias !5273 + to label %.thread.i unwind label %22, !noalias !5273 -18: ; preds = %20, %.body.i - %19 = landingpad { ptr, i32 } +22: ; preds = %24, %.body.i + %23 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #38 unreachable -.thread.i: ; preds = %20, %.body.i - %.pn5.i = phi { ptr, i32 } [ %21, %20 ], [ %17, %.body.i ] +.thread.i: ; preds = %24, %.body.i + %.pn5.i = phi { ptr, i32 } [ %25, %24 ], [ %21, %.body.i ] resume { ptr, i32 } %.pn5.i -20: ; preds = %_ZN3std9panicking3try17ha90ccec968e41b81E.exit - %21 = landingpad { ptr, i32 } +24: ; preds = %_ZN3std9panicking3try17ha90ccec968e41b81E.exit + %25 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr424drop_in_place$LT$tokio..runtime..task..core..Stage$LT$tokio..runtime..blocking..task..BlockingTask$LT$tokio..runtime..scheduler..multi_thread..worker..block_in_place$LT$deltalake_aws..storage..execute_sdk_future$LT$aws_config..loader..ConfigLoader..load..$u7b$$u7b$closure$u7d$$u7d$$GT$..$u7b$$u7b$closure$u7d$$u7d$$C$aws_types..sdk_config..SdkConfig$GT$..$u7b$$u7b$closure$u7d$$u7d$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17h56ebc495b183418aE.llvm.8209374114036670355"(ptr noalias noundef nonnull align 8 dereferenceable(32) %4) #37 - to label %.thread.i unwind label %18 + to label %.thread.i unwind label %22 -"_ZN5tokio7runtime4task4core17Core$LT$T$C$S$GT$9set_stage17ha2ede29c35caf714E.exit": ; preds = %12 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.0.i, i64 32, i1 false), !noalias !5273 +"_ZN5tokio7runtime4task4core17Core$LT$T$C$S$GT$9set_stage17ha2ede29c35caf714E.exit": ; preds = %16 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.0.i, i64 32, i1 false), !noalias !5273 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %.sroa.0.i) call void @"_ZN81_$LT$tokio..runtime..task..core..TaskIdGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17h41c4e38ca1e60cdcE"(ptr noalias noundef nonnull align 8 dereferenceable(16) %2), !noalias !5273 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2), !noalias !5273 diff --git a/bench/delta-rs/optimized/511pneock729w0zl.ll b/bench/delta-rs/optimized/511pneock729w0zl.ll index b7ce618fc21..a6f92df5467 100644 --- a/bench/delta-rs/optimized/511pneock729w0zl.ll +++ b/bench/delta-rs/optimized/511pneock729w0zl.ll @@ -8047,9 +8047,9 @@ define void @_ZN13deltalake_sql6parser11DeltaParser12parse_vacuum17hd0408efea839 invoke void @_ZN9sqlparser6parser6Parser10next_token17h9cce08f7385cc50bE(ptr noalias nocapture noundef nonnull sret({ { i8, [55 x i8] }, { i64, i64 } }) align 8 dereferenceable(72) %21, ptr noalias noundef nonnull align 8 dereferenceable(64) %1) to label %66 unwind label %44 -"_ZN4core3ptr47drop_in_place$LT$sqlparser..ast..ObjectName$GT$17h901044000ff48dfaE.exit144": ; preds = %.thread209, %137, %147, %146, %145, %44 - %.0117 = phi i8 [ 1, %44 ], [ 1, %147 ], [ 1, %145 ], [ 1, %146 ], [ 0, %137 ], [ 1, %.thread209 ] - %.pn129 = phi { ptr, i32 } [ %45, %44 ], [ %97, %147 ], [ %97, %145 ], [ %.pn214, %146 ], [ %138, %137 ], [ %83, %.thread209 ] +"_ZN4core3ptr47drop_in_place$LT$sqlparser..ast..ObjectName$GT$17h901044000ff48dfaE.exit144": ; preds = %.thread206, %137, %147, %146, %145, %44 + %.0117 = phi i8 [ 1, %44 ], [ 1, %147 ], [ 1, %145 ], [ 1, %146 ], [ 0, %137 ], [ 1, %.thread206 ] + %.pn129 = phi { ptr, i32 } [ %45, %44 ], [ %97, %147 ], [ %97, %145 ], [ %.pn211, %146 ], [ %138, %137 ], [ %83, %.thread206 ] invoke void @"_ZN4core3ptr47drop_in_place$LT$sqlparser..tokenizer..Word$GT$17h0140193e9fc2225fE"(ptr noalias noundef nonnull align 8 dereferenceable(32) %22) #16 to label %148 unwind label %103 @@ -8179,7 +8179,7 @@ define void @_ZN13deltalake_sql6parser11DeltaParser12parse_vacuum17hd0408efea839 %83 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17ha0b7b9dec2ee265eE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %18) #16 - to label %.thread209 unwind label %103 + to label %.thread206 unwind label %103 84: ; preds = %74 %trunc.i = trunc i64 %79 to i1 @@ -8256,7 +8256,7 @@ define void @_ZN13deltalake_sql6parser11DeltaParser12parse_vacuum17hd0408efea839 %99 = icmp eq i64 %98, -9223372036854775808 br i1 %99, label %145, label %146 -.thread209: ; preds = %82 +.thread206: ; preds = %82 %100 = load i64, ptr %20, align 8, !range !472, !noundef !5 %101 = icmp eq i64 %100, -9223372036854775808 br i1 %101, label %"_ZN4core3ptr47drop_in_place$LT$sqlparser..ast..ObjectName$GT$17h901044000ff48dfaE.exit144", label %146 @@ -8266,7 +8266,7 @@ define void @_ZN13deltalake_sql6parser11DeltaParser12parse_vacuum17hd0408efea839 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) br i1 %trunc.i, label %111, label %108 -103: ; preds = %.thread218, %170, %137, %32, %201, %200, %147, %146, %82, %"_ZN4core3ptr47drop_in_place$LT$sqlparser..ast..ObjectName$GT$17h901044000ff48dfaE.exit144" +103: ; preds = %.thread215, %170, %137, %32, %201, %200, %147, %146, %82, %"_ZN4core3ptr47drop_in_place$LT$sqlparser..ast..ObjectName$GT$17h901044000ff48dfaE.exit144" %104 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #17 @@ -8289,21 +8289,21 @@ define void @_ZN13deltalake_sql6parser11DeltaParser12parse_vacuum17hd0408efea839 br i1 %110, label %116, label %115 111: ; preds = %102, %.thread183 - %.sroa.12.1195.ph = phi ptr [ %106, %.thread183 ], [ %.sroa.12.0, %102 ] - %.sroa.13.1193.ph = phi i64 [ 42, %.thread183 ], [ %.sroa.13.0, %102 ] - %.sroa.6.sroa.0.1191.ph = phi i32 [ %.sroa.6.sroa.0.0.extract.trunc, %.thread183 ], [ %.sroa.6.sroa.0.0, %102 ] - %.sroa.6.sroa.8.1189.ph = phi i32 [ %.sroa.6.sroa.8.0.extract.trunc, %.thread183 ], [ %.sroa.6.sroa.8.0, %102 ] + %.sroa.6.sroa.0.1190.ph = phi i32 [ %.sroa.6.sroa.0.0.extract.trunc, %.thread183 ], [ %.sroa.6.sroa.0.0, %102 ] + %.sroa.9.sroa.0.0.ph = phi i32 [ %.sroa.6.sroa.8.0.extract.trunc, %.thread183 ], [ %.sroa.6.sroa.8.0, %102 ] + %.sroa.9.sroa.5.0.ph = phi ptr [ %106, %.thread183 ], [ %.sroa.12.0, %102 ] + %.sroa.9.sroa.6.0.ph = phi i64 [ 42, %.thread183 ], [ %.sroa.13.0, %102 ] %.sroa.05.0.ph = phi i64 [ 1, %.thread183 ], [ %.sink.i, %102 ] %112 = getelementptr inbounds i8, ptr %0, i64 8 store i64 %.sroa.05.0.ph, ptr %112, align 8 %.sroa.2101.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 - store i32 %.sroa.6.sroa.0.1191.ph, ptr %.sroa.2101.0..sroa_idx, align 8 + store i32 %.sroa.6.sroa.0.1190.ph, ptr %.sroa.2101.0..sroa_idx, align 8 %.sroa.3102.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 20 - store i32 %.sroa.6.sroa.8.1189.ph, ptr %.sroa.3102.0..sroa_idx, align 4 + store i32 %.sroa.9.sroa.0.0.ph, ptr %.sroa.3102.0..sroa_idx, align 4 %.sroa.3102.sroa.2.0..sroa.3102.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %0, i64 24 - store ptr %.sroa.12.1195.ph, ptr %.sroa.3102.sroa.2.0..sroa.3102.0..sroa_idx.sroa_idx, align 8 + store ptr %.sroa.9.sroa.5.0.ph, ptr %.sroa.3102.sroa.2.0..sroa.3102.0..sroa_idx.sroa_idx, align 8 %.sroa.3102.sroa.3.0..sroa.3102.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %0, i64 32 - store i64 %.sroa.13.1193.ph, ptr %.sroa.3102.sroa.3.0..sroa.3102.0..sroa_idx.sroa_idx, align 8 + store i64 %.sroa.9.sroa.6.0.ph, ptr %.sroa.3102.sroa.3.0..sroa.3102.0..sroa_idx.sroa_idx, align 8 store i64 14, ptr %0, align 8 %113 = load i64, ptr %20, align 8, !range !472, !noundef !5 %114 = icmp eq i64 %113, -9223372036854775808 @@ -8411,8 +8411,8 @@ define void @_ZN13deltalake_sql6parser11DeltaParser12parse_vacuum17hd0408efea839 145: ; preds = %96 br i1 %.not, label %"_ZN4core3ptr47drop_in_place$LT$sqlparser..ast..ObjectName$GT$17h901044000ff48dfaE.exit144", label %147 -146: ; preds = %.thread209, %96 - %.pn214 = phi { ptr, i32 } [ %83, %.thread209 ], [ %97, %96 ] +146: ; preds = %.thread206, %96 + %.pn211 = phi { ptr, i32 } [ %83, %.thread206 ], [ %97, %96 ] invoke fastcc void @"_ZN4core3ptr49drop_in_place$LT$sqlparser..ast..value..Value$GT$17h2bad372aeaffabadE"(ptr noalias noundef nonnull align 8 dereferenceable(48) %20) #16 to label %"_ZN4core3ptr47drop_in_place$LT$sqlparser..ast..ObjectName$GT$17h901044000ff48dfaE.exit144" unwind label %103 @@ -8425,7 +8425,7 @@ define void @_ZN13deltalake_sql6parser11DeltaParser12parse_vacuum17hd0408efea839 %.0 = phi i8 [ %.1, %150 ], [ 0, %"_ZN4core3ptr47drop_in_place$LT$sqlparser..ast..ObjectName$GT$17h901044000ff48dfaE.exit144" ] %.pn131 = phi { ptr, i32 } [ %151, %150 ], [ %.pn129, %"_ZN4core3ptr47drop_in_place$LT$sqlparser..ast..ObjectName$GT$17h901044000ff48dfaE.exit144" ] %149 = trunc nuw i8 %.2119 to i1 - br i1 %149, label %.thread218, label %"_ZN4core3ptr47drop_in_place$LT$sqlparser..ast..ObjectName$GT$17h901044000ff48dfaE.exit165" + br i1 %149, label %.thread215, label %"_ZN4core3ptr47drop_in_place$LT$sqlparser..ast..ObjectName$GT$17h901044000ff48dfaE.exit165" 150: ; preds = %180, %128, %57, %41 %.3120 = phi i8 [ 1, %41 ], [ %.1118, %57 ], [ 1, %128 ], [ %.5, %180 ] @@ -8440,9 +8440,9 @@ define void @_ZN13deltalake_sql6parser11DeltaParser12parse_vacuum17hd0408efea839 invoke void @"_ZN4core3ptr65drop_in_place$LT$alloc..vec..Vec$LT$sqlparser..ast..Ident$GT$$GT$17h5712a5f2aeb93b7dE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %25) to label %"_ZN4core3ptr47drop_in_place$LT$sqlparser..ast..ObjectName$GT$17h901044000ff48dfaE.exit146" unwind label %155 -"_ZN4core3ptr47drop_in_place$LT$sqlparser..ast..ObjectName$GT$17h901044000ff48dfaE.exit165": ; preds = %.thread218, %155, %148 - %.2 = phi i8 [ %.3, %155 ], [ %.0, %148 ], [ %.0222, %.thread218 ] - %.pn133 = phi { ptr, i32 } [ %156, %155 ], [ %.pn131, %148 ], [ %.pn131223, %.thread218 ] +"_ZN4core3ptr47drop_in_place$LT$sqlparser..ast..ObjectName$GT$17h901044000ff48dfaE.exit165": ; preds = %.thread215, %155, %148 + %.2 = phi i8 [ %.3, %155 ], [ %.0, %148 ], [ %.0219, %.thread215 ] + %.pn133 = phi { ptr, i32 } [ %156, %155 ], [ %.pn131, %148 ], [ %.pn131220, %.thread215 ] %153 = load i8, ptr %23, align 8, !range !339, !noundef !5 %154 = icmp eq i8 %153, 1 br i1 %154, label %198, label %200 @@ -8517,7 +8517,7 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit: ; preds = %162 %171 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr48drop_in_place$LT$sqlparser..tokenizer..Token$GT$17h9854790fde37f459E.llvm.11705908289436625823"(ptr noalias noundef nonnull align 8 dereferenceable(56) %13) - to label %.thread218 unwind label %103 + to label %.thread215 unwind label %103 172: ; preds = %168 br i1 %169, label %176, label %173 @@ -8622,9 +8622,9 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit157: ; preds = %177 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3), !noalias !1130 br label %187 -.thread218: ; preds = %170, %148 - %.pn131223 = phi { ptr, i32 } [ %.pn131, %148 ], [ %171, %170 ] - %.0222 = phi i8 [ %.0, %148 ], [ 1, %170 ] +.thread215: ; preds = %170, %148 + %.pn131220 = phi { ptr, i32 } [ %.pn131, %148 ], [ %171, %170 ] + %.0219 = phi i8 [ %.0, %148 ], [ 1, %170 ] invoke void @"_ZN4core3ptr65drop_in_place$LT$alloc..vec..Vec$LT$sqlparser..ast..Ident$GT$$GT$17h5712a5f2aeb93b7dE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %25) to label %"_ZN4core3ptr47drop_in_place$LT$sqlparser..ast..ObjectName$GT$17h901044000ff48dfaE.exit165" unwind label %103 diff --git a/bench/diesel-rs/optimized/1du97ujnwx7r1m9g.ll b/bench/diesel-rs/optimized/1du97ujnwx7r1m9g.ll index 9d58ca46a95..a40b92e3468 100644 --- a/bench/diesel-rs/optimized/1du97ujnwx7r1m9g.ll +++ b/bench/diesel-rs/optimized/1du97ujnwx7r1m9g.ll @@ -660,25 +660,25 @@ common.resume: ; preds = %.thread265, %95, %. %.sroa.9.0.i.i.i = phi i64 [ 0, %96 ], [ %149, %148 ] %.sroa.01.0.i.i.i = phi i64 [ %103, %96 ], [ %151, %148 ] %117 = getelementptr inbounds i8, ptr %104, i64 %.sroa.01.0.i.i.i - %.0.copyload.i31.i.i = load <16 x i8>, ptr %117, align 1, !noalias !156 - %118 = icmp eq <16 x i8> %.0.copyload.i31.i.i, %.15.vec.insert.i.i.i + %.0.copyload.i33.i.i = load <16 x i8>, ptr %117, align 1, !noalias !156 + %118 = icmp eq <16 x i8> %.0.copyload.i33.i.i, %.15.vec.insert.i.i.i %119 = bitcast <16 x i1> %118 to i16 - %.not.not.i34.i.i = icmp eq i16 %119, 0 - br i1 %.not.not.i34.i.i, label %._crit_edge.i.i, label %.lr.ph.i.i + %.not.not.i36.i.i = icmp eq i16 %119, 0 + br i1 %.not.not.i36.i.i, label %._crit_edge.i.i, label %.lr.ph.i.i ._crit_edge.i.i: ; preds = %.backedge.i.i, %116 - %120 = icmp eq <16 x i8> %.0.copyload.i31.i.i, + %120 = icmp eq <16 x i8> %.0.copyload.i33.i.i, %121 = bitcast <16 x i1> %120 to i16 %.not.i.i.i = icmp eq i16 %121, 0 br i1 %.not.i.i.i, label %148, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17h71b4edeb5b814ac2E.exit.i" .lr.ph.i.i: ; preds = %116, %.backedge.i.i - %.02135.i.i = phi i16 [ %123, %.backedge.i.i ], [ %119, %116 ] - %122 = add i16 %.02135.i.i, -1 - %123 = and i16 %122, %.02135.i.i - %124 = call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.02135.i.i, i1 true) - %125 = zext nneg i16 %124 to i64 - %126 = add i64 %.sroa.01.0.i.i.i, %125 + %.02237.i.i = phi i16 [ %125, %.backedge.i.i ], [ %119, %116 ] + %122 = call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.02237.i.i, i1 true) + %123 = zext nneg i16 %122 to i64 + %124 = add i16 %.02237.i.i, -1 + %125 = and i16 %124, %.02237.i.i + %126 = add i64 %.sroa.01.0.i.i.i, %123 %127 = and i64 %126, %102 %128 = sub nsw i64 0, %127 %129 = getelementptr inbounds { { [3 x i64], i64, [2 x i64] }, { { i64, [2 x i64] }, ptr } }, ptr %104, i64 %128 @@ -701,7 +701,7 @@ common.resume: ; preds = %.thread265, %95, %. br i1 %138, label %182, label %.backedge.i.i .backedge.i.i: ; preds = %.noexc12.i, %143, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h521d4c58c4ab6bb8E.exit.i.i.i.i.i", %139, %136, %.lr.ph.i.i - %.not.not.i.i.i = icmp eq i16 %123, 0 + %.not.not.i.i.i = icmp eq i16 %125, 0 br i1 %.not.not.i.i.i, label %._crit_edge.i.i, label %.lr.ph.i.i 139: ; preds = %135 diff --git a/bench/diesel-rs/optimized/1e9xgs6bol3gaqxq.ll b/bench/diesel-rs/optimized/1e9xgs6bol3gaqxq.ll index 4080b84e833..ee9f9361189 100644 --- a/bench/diesel-rs/optimized/1e9xgs6bol3gaqxq.ll +++ b/bench/diesel-rs/optimized/1e9xgs6bol3gaqxq.ll @@ -22,9 +22,13 @@ define hidden noundef i128 @_ZN4core5error5Error7type_id17hd4624d9dec147000E(ptr ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define hidden { i64, i64 } @"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h88e43576b251c066E.llvm.13814690712901630071"(i64 noundef %0, i64 %1) unnamed_addr #1 { - %3 = insertvalue { i64, i64 } poison, i64 %0, 0 - %4 = insertvalue { i64, i64 } %3, i64 %1, 1 - ret { i64, i64 } %4 + %3 = icmp eq i64 %0, -9223372036854775807 + %4 = icmp eq i64 %0, 0 + %5 = or i1 %3, %4 + %.sroa.33.0 = select i1 %5, i64 undef, i64 %1 + %6 = insertvalue { i64, i64 } poison, i64 %0, 0 + %7 = insertvalue { i64, i64 } %6, i64 %.sroa.33.0, 1 + ret { i64, i64 } %7 } ; Function Attrs: inlinehint nonlazybind uwtable @@ -42,7 +46,9 @@ define hidden void @_ZN5alloc7raw_vec14handle_reserve17had58ffe066ab6fa9E.llvm.1 unreachable 5: ; preds = %2 - tail call void @_ZN5alloc5alloc18handle_alloc_error17h81706c48453a6249E(i64 noundef %0, i64 noundef %1) #21 + %6 = icmp eq i64 %0, -9223372036854775807 + %.sroa.33.0.i = select i1 %6, i64 undef, i64 %1 + tail call void @_ZN5alloc5alloc18handle_alloc_error17h81706c48453a6249E(i64 noundef %0, i64 noundef %.sroa.33.0.i) #21 unreachable } @@ -2146,10 +2152,10 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h6fd %18 = icmp ule i64 %17, %14 tail call void @llvm.assume(i1 %18) %19 = tail call noundef align 8 ptr @__rust_realloc(ptr noundef nonnull %.val23, i64 noundef %14, i64 noundef 8, i64 noundef %17) #22 - %.not36 = icmp eq ptr %19, null - %.sink1.i = select i1 %.not36, ptr inttoptr (i64 8 to ptr), ptr %19 + %.not37 = icmp eq ptr %19, null + %.sink1.i = select i1 %.not37, ptr inttoptr (i64 8 to ptr), ptr %19 %20 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not36, label %22, label %21 + br i1 %.not37, label %22, label %21 21: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" %storemerge = phi ptr [ inttoptr (i64 8 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" ], [ %19, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] @@ -2204,10 +2210,10 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$6shrink17h9d1 "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit": ; preds = %13 %16 = tail call noundef ptr @__rust_realloc(ptr noundef nonnull %.val23, i64 noundef %4, i64 noundef 1, i64 noundef %1) #22 - %.not35 = icmp eq ptr %16, null - %.sink1.i = select i1 %.not35, ptr inttoptr (i64 1 to ptr), ptr %16 + %.not36 = icmp eq ptr %16, null + %.sink1.i = select i1 %.not36, ptr inttoptr (i64 1 to ptr), ptr %16 %17 = ptrtoint ptr %.sink1.i to i64 - br i1 %.not35, label %19, label %18 + br i1 %.not36, label %19, label %18 18: ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" %storemerge = phi ptr [ inttoptr (i64 1 to ptr), %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.exit" ], [ %16, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$6shrink17hee98ff2151312322E.exit" ] diff --git a/bench/diesel-rs/optimized/1jz126bddzidz5zd.ll b/bench/diesel-rs/optimized/1jz126bddzidz5zd.ll index 8e64c7d23e7..24a28c41178 100644 --- a/bench/diesel-rs/optimized/1jz126bddzidz5zd.ll +++ b/bench/diesel-rs/optimized/1jz126bddzidz5zd.ll @@ -195,8 +195,10 @@ define hidden void @"_ZN127_$LT$diesel..query_builder..order_clause..OrderClause ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define hidden { ptr, i64 } @"_ZN180_$LT$diesel..insertable..private..InsertableOptionHelper$LT$T$C$diesel..insertable..ColumnInsertValue$LT$Col$C$Expr$GT$$GT$$u20$as$u20$diesel..insertable..Insertable$LT$Tab$GT$$GT$6values17h0922783c39f59134E"(ptr noalias noundef readonly align 1 %0, i64 %1) unnamed_addr #4 { + %.not = icmp eq ptr %0, null + %spec.select = select i1 %.not, i64 undef, i64 %1 %3 = insertvalue { ptr, i64 } poison, ptr %0, 0 - %4 = insertvalue { ptr, i64 } %3, i64 %1, 1 + %4 = insertvalue { ptr, i64 } %3, i64 %spec.select, 1 ret { ptr, i64 } %4 } @@ -217,8 +219,10 @@ define hidden noundef align 8 dereferenceable_or_null(16) ptr @"_ZN180_$LT$diese ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define hidden { ptr, i64 } @"_ZN180_$LT$diesel..insertable..private..InsertableOptionHelper$LT$T$C$diesel..insertable..ColumnInsertValue$LT$Col$C$Expr$GT$$GT$$u20$as$u20$diesel..insertable..Insertable$LT$Tab$GT$$GT$6values17h7880ead0719ec3b5E"(ptr noalias noundef readonly align 1 %0, i64 %1) unnamed_addr #4 { + %.not = icmp eq ptr %0, null + %spec.select = select i1 %.not, i64 undef, i64 %1 %3 = insertvalue { ptr, i64 } poison, ptr %0, 0 - %4 = insertvalue { ptr, i64 } %3, i64 %1, 1 + %4 = insertvalue { ptr, i64 } %3, i64 %spec.select, 1 ret { ptr, i64 } %4 } diff --git a/bench/diesel-rs/optimized/1k9itxwmy6phzvjw.ll b/bench/diesel-rs/optimized/1k9itxwmy6phzvjw.ll index be6ee5aa2f9..32a96bb5d93 100644 --- a/bench/diesel-rs/optimized/1k9itxwmy6phzvjw.ll +++ b/bench/diesel-rs/optimized/1k9itxwmy6phzvjw.ll @@ -572,14 +572,14 @@ define hidden void @"_ZN128_$LT$diesel..query_dsl..load_dsl..private..LoadIter$L br label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h37b35e3924573354E.exit.i" "_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h37b35e3924573354E.exit.i": ; preds = %21, %18 - %.sroa.5.031.i = phi ptr [ %20, %18 ], [ %22, %21 ] %.sroa.4.0.i = phi ptr [ %20, %18 ], [ %12, %21 ] + %.sroa.7.0.i = phi ptr [ undef, %18 ], [ %22, %21 ] %.sink.i.i = phi i64 [ -9223372036854775798, %18 ], [ -9223372036854775805, %21 ] store i64 %.sink.i.i, ptr %0, align 8, !alias.scope !160, !noalias !163 %.sroa.4.0..sroa_idx.i = getelementptr inbounds i8, ptr %0, i64 8 store ptr %.sroa.4.0.i, ptr %.sroa.4.0..sroa_idx.i, align 8, !alias.scope !160, !noalias !163 %.sroa.7.0..sroa_idx.i = getelementptr inbounds i8, ptr %0, i64 16 - store ptr %.sroa.5.031.i, ptr %.sroa.7.0..sroa_idx.i, align 8, !alias.scope !160, !noalias !163 + store ptr %.sroa.7.0.i, ptr %.sroa.7.0..sroa_idx.i, align 8, !alias.scope !160, !noalias !163 call void @"_ZN68_$LT$alloc..rc..Rc$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17haf0f17790619d26cE.llvm.14992767593304109899"(ptr noalias noundef nonnull align 8 dereferenceable(8) %4), !noalias !166 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4), !noalias !166 br label %"_ZN6diesel9query_dsl8load_dsl7private31LoadIter$LT$U$C$C$C$ST$C$DB$GT$7map_row17h7d43ed3952523b18E.llvm.851902657794911491.exit" @@ -641,16 +641,16 @@ define hidden void @"_ZN128_$LT$diesel..query_dsl..load_dsl..private..LoadIter$L %15 = load i32, ptr %14, align 8, !noalias !177 %16 = load ptr, ptr %14, align 8, !noalias !177, !nonnull !11, !align !20 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3), !noalias !177 - %.sroa.5.8.insert.ext.i = zext i32 %15 to i64 - %17 = inttoptr i64 %.sroa.5.8.insert.ext.i to ptr - %.sroa.5.027.i = select i1 %13, ptr %17, ptr %16 + %.sroa.4.0.insert.ext.i = zext i32 %15 to i64 + %17 = inttoptr i64 %.sroa.4.0.insert.ext.i to ptr %.sroa.4.0.i = select i1 %13, ptr %17, ptr %12 + %.sroa.6.0.i = select i1 %13, ptr undef, ptr %16 %.sink.i.i = select i1 %13, i64 -9223372036854775798, i64 -9223372036854775805 store i64 %.sink.i.i, ptr %0, align 8, !alias.scope !171, !noalias !174 %.sroa.4.0..sroa_idx.i = getelementptr inbounds i8, ptr %0, i64 8 store ptr %.sroa.4.0.i, ptr %.sroa.4.0..sroa_idx.i, align 8, !alias.scope !171, !noalias !174 %.sroa.6.0..sroa_idx.i = getelementptr inbounds i8, ptr %0, i64 16 - store ptr %.sroa.5.027.i, ptr %.sroa.6.0..sroa_idx.i, align 8, !alias.scope !171, !noalias !174 + store ptr %.sroa.6.0.i, ptr %.sroa.6.0..sroa_idx.i, align 8, !alias.scope !171, !noalias !174 call void @"_ZN68_$LT$alloc..rc..Rc$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17haf0f17790619d26cE.llvm.14992767593304109899"(ptr noalias noundef nonnull align 8 dereferenceable(8) %4), !noalias !176 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4), !noalias !176 br label %"_ZN6diesel9query_dsl8load_dsl7private31LoadIter$LT$U$C$C$C$ST$C$DB$GT$7map_row17h847753430c8fef1fE.llvm.851902657794911491.exit" @@ -2498,7 +2498,7 @@ define hidden void @"_ZN6diesel9query_dsl8load_dsl7private31LoadIter$LT$U$C$C$C$ .thread: ; preds = %2 store i64 -9223372036854775797, ptr %0, align 8 - br label %26 + br label %24 8: ; preds = %7 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) @@ -2515,7 +2515,7 @@ define hidden void @"_ZN6diesel9query_dsl8load_dsl7private31LoadIter$LT$U$C$C$C$ %11 = load ptr, ptr %3, align 8, !noalias !553, !noundef !11 %12 = icmp eq ptr %11, null %13 = getelementptr inbounds i8, ptr %3, i64 8 - br i1 %12, label %17, label %22 + br i1 %12, label %17, label %20 14: ; preds = %7 %.sroa.613.0..sroa_idx = getelementptr inbounds i8, ptr %1, i64 24 @@ -2527,46 +2527,40 @@ define hidden void @"_ZN6diesel9query_dsl8load_dsl7private31LoadIter$LT$U$C$C$C$ store i64 %.sroa.512.0.copyload, ptr %.sroa.58.0..sroa_idx, align 8 %.sroa.69.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 24 store i64 %.sroa.613.0.copyload, ptr %.sroa.69.0..sroa_idx, align 8 - br label %26 + br label %24 15: ; preds = %8 %16 = landingpad { ptr, i32 } cleanup invoke void @"_ZN68_$LT$alloc..rc..Rc$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17haf0f17790619d26cE.llvm.14992767593304109899"(ptr noalias noundef nonnull align 8 dereferenceable(8) %4) - to label %"_ZN4core3ptr55drop_in_place$LT$diesel..pg..connection..row..PgRow$GT$17h774a092152e920a7E.exit" unwind label %24 + to label %"_ZN4core3ptr55drop_in_place$LT$diesel..pg..connection..row..PgRow$GT$17h774a092152e920a7E.exit" unwind label %22 17: ; preds = %.noexc - %18 = load i32, ptr %13, align 8, !noalias !553, !noundef !11 - %19 = getelementptr inbounds i8, ptr %3, i64 12 - %20 = load i32, ptr %19, align 4, !noalias !553, !noundef !11 + %18 = load i64, ptr %13, align 8, !noalias !553 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3), !noalias !553 - %.sroa.5.8.insert.ext = zext i32 %18 to i64 - %.sroa.5.12.insert.ext = zext i32 %20 to i64 - %.sroa.5.12.insert.shift = shl nuw i64 %.sroa.5.12.insert.ext, 32 - %.sroa.5.12.insert.insert = or disjoint i64 %.sroa.5.12.insert.shift, %.sroa.5.8.insert.ext - %21 = inttoptr i64 %.sroa.5.12.insert.insert to ptr + %19 = inttoptr i64 %18 to ptr br label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h37b35e3924573354E.exit" -22: ; preds = %.noexc - %23 = load ptr, ptr %13, align 8, !noalias !553, !nonnull !11, !align !20, !noundef !11 +20: ; preds = %.noexc + %21 = load ptr, ptr %13, align 8, !noalias !553, !nonnull !11, !align !20, !noundef !11 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3), !noalias !553 br label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h37b35e3924573354E.exit" -"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h37b35e3924573354E.exit": ; preds = %22, %17 - %.sroa.5.031 = phi ptr [ %21, %17 ], [ %23, %22 ] - %.sroa.4.0 = phi ptr [ %21, %17 ], [ %11, %22 ] - %.sink.i = phi i64 [ -9223372036854775798, %17 ], [ -9223372036854775805, %22 ] +"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h37b35e3924573354E.exit": ; preds = %20, %17 + %.sroa.4.0 = phi ptr [ %19, %17 ], [ %11, %20 ] + %.sroa.7.0 = phi ptr [ undef, %17 ], [ %21, %20 ] + %.sink.i = phi i64 [ -9223372036854775798, %17 ], [ -9223372036854775805, %20 ] store i64 %.sink.i, ptr %0, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 store ptr %.sroa.4.0, ptr %.sroa.4.0..sroa_idx, align 8 %.sroa.7.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 - store ptr %.sroa.5.031, ptr %.sroa.7.0..sroa_idx, align 8 + store ptr %.sroa.7.0, ptr %.sroa.7.0..sroa_idx, align 8 call void @"_ZN68_$LT$alloc..rc..Rc$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17haf0f17790619d26cE.llvm.14992767593304109899"(ptr noalias noundef nonnull align 8 dereferenceable(8) %4) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) - br label %26 + br label %24 -24: ; preds = %15 - %25 = landingpad { ptr, i32 } +22: ; preds = %15 + %23 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #12 unreachable @@ -2574,7 +2568,7 @@ define hidden void @"_ZN6diesel9query_dsl8load_dsl7private31LoadIter$LT$U$C$C$C$ "_ZN4core3ptr55drop_in_place$LT$diesel..pg..connection..row..PgRow$GT$17h774a092152e920a7E.exit": ; preds = %15 resume { ptr, i32 } %16 -26: ; preds = %14, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h37b35e3924573354E.exit", %.thread +24: ; preds = %14, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h37b35e3924573354E.exit", %.thread ret void } @@ -2616,16 +2610,16 @@ define hidden void @"_ZN6diesel9query_dsl8load_dsl7private31LoadIter$LT$U$C$C$C$ %14 = load i32, ptr %13, align 8, !noalias !557 %15 = load ptr, ptr %13, align 8, !noalias !557, !nonnull !11, !align !20 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3), !noalias !557 - %.sroa.5.8.insert.ext = zext i32 %14 to i64 - %16 = inttoptr i64 %.sroa.5.8.insert.ext to ptr - %.sroa.5.027 = select i1 %12, ptr %16, ptr %15 + %.sroa.4.0.insert.ext = zext i32 %14 to i64 + %16 = inttoptr i64 %.sroa.4.0.insert.ext to ptr %.sroa.4.0 = select i1 %12, ptr %16, ptr %11 + %.sroa.6.0 = select i1 %12, ptr undef, ptr %15 %.sink.i = select i1 %12, i64 -9223372036854775798, i64 -9223372036854775805 store i64 %.sink.i, ptr %0, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 store ptr %.sroa.4.0, ptr %.sroa.4.0..sroa_idx, align 8 %.sroa.6.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 - store ptr %.sroa.5.027, ptr %.sroa.6.0..sroa_idx, align 8 + store ptr %.sroa.6.0, ptr %.sroa.6.0..sroa_idx, align 8 call void @"_ZN68_$LT$alloc..rc..Rc$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17haf0f17790619d26cE.llvm.14992767593304109899"(ptr noalias noundef nonnull align 8 dereferenceable(8) %4) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) br label %22 diff --git a/bench/diesel-rs/optimized/1pu1gypvn16sk7jj.ll b/bench/diesel-rs/optimized/1pu1gypvn16sk7jj.ll index 8745f18d946..9f14f6a5480 100644 --- a/bench/diesel-rs/optimized/1pu1gypvn16sk7jj.ll +++ b/bench/diesel-rs/optimized/1pu1gypvn16sk7jj.ll @@ -232,11 +232,11 @@ define internal fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopegu %19 = and i64 %17, %18 %20 = add i64 %.val3.i, 17 %21 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %19, i64 %20) - %22 = extractvalue { i64, i1 } %21, 0 - %23 = extractvalue { i64, i1 } %21, 1 + %22 = extractvalue { i64, i1 } %21, 1 + %23 = extractvalue { i64, i1 } %21, 0 %24 = sub nuw i64 -9223372036854775808, %.val1.i - %25 = icmp ule i64 %22, %24 - %26 = xor i1 %23, true + %25 = icmp ule i64 %23, %24 + %26 = xor i1 %22, true tail call void @llvm.assume(i1 %26) tail call void @llvm.assume(i1 %25) %27 = icmp ult i64 %.val1.i, -9223372036854775807 @@ -245,13 +245,13 @@ define internal fastcc void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopegu tail call void @llvm.assume(i1 %28) %29 = icmp ne ptr %.val2.i, null tail call void @llvm.assume(i1 %29) - %30 = icmp eq i64 %22, 0 + %30 = icmp eq i64 %23, 0 br i1 %30, label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h06bf1ba76f0d78c7E.exit", label %31 31: ; preds = %6 %32 = sub nsw i64 0, %19 %33 = getelementptr inbounds i8, ptr %.val2.i, i64 %32 - tail call void @__rust_dealloc(ptr noundef nonnull %33, i64 noundef %22, i64 noundef %.val1.i) #19, !noalias !33 + tail call void @__rust_dealloc(ptr noundef nonnull %33, i64 noundef %23, i64 noundef %.val1.i) #19, !noalias !33 br label %"_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h06bf1ba76f0d78c7E.exit" "_ZN88_$LT$hashbrown..scopeguard..ScopeGuard$LT$T$C$F$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h06bf1ba76f0d78c7E.exit": ; preds = %1, %6, %31 @@ -548,10 +548,10 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r %53 = extractvalue { i64, i1 } %50, 0 %54 = add nuw nsw i64 %.sroa.6.051.i.i, 16 %55 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %53, i64 %54) - %56 = extractvalue { i64, i1 } %55, 0 - %57 = extractvalue { i64, i1 } %55, 1 - %58 = icmp ugt i64 %56, 9223372036854775792 - %or.cond.i.i.i = or i1 %57, %58 + %56 = extractvalue { i64, i1 } %55, 1 + %57 = extractvalue { i64, i1 } %55, 0 + %58 = icmp ugt i64 %57, 9223372036854775792 + %or.cond.i.i.i = or i1 %56, %58 br i1 %or.cond.i.i.i, label %59, label %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.exit.i.i.i 59: ; preds = %52, %.thread.i.i @@ -559,13 +559,13 @@ define hidden { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_r br label %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17hf94e635cfb75ebaeE.exit.thread.i.i _ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.exit.i.i.i: ; preds = %52 - %61 = tail call { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e506E.llvm.12988233250446828850(ptr noalias noundef nonnull readonly align 1 %12, i64 noundef 16, i64 noundef %56, i1 noundef zeroext false), !noalias !82 + %61 = tail call { ptr, i64 } @_ZN5alloc5alloc6Global10alloc_impl17h9ea66fc1ee45e506E.llvm.12988233250446828850(ptr noalias noundef nonnull readonly align 1 %12, i64 noundef 16, i64 noundef %57, i1 noundef zeroext false), !noalias !82 %.fca.0.extract.i.i.i.i = extractvalue { ptr, i64 } %61, 0 %62 = icmp eq ptr %.fca.0.extract.i.i.i.i, null br i1 %62, label %63, label %_ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit.i 63: ; preds = %_ZN9hashbrown3raw11TableLayout20calculate_layout_for17h9749fde9e08ab188E.exit.i.i.i - %64 = tail call { i64, i64 } @_ZN9hashbrown3raw11Fallibility9alloc_err17hbff47f9d227fdffcE(i1 noundef zeroext %3, i64 noundef 16, i64 noundef %56), !noalias !82 + %64 = tail call { i64, i64 } @_ZN9hashbrown3raw11Fallibility9alloc_err17hbff47f9d227fdffcE(i1 noundef zeroext %3, i64 noundef 16, i64 noundef %57), !noalias !82 br label %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17hf94e635cfb75ebaeE.exit.thread.i.i _ZN9hashbrown3raw13RawTableInner17new_uninitialized17hf94e635cfb75ebaeE.exit.thread.i.i: ; preds = %63, %59 @@ -597,8 +597,8 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. store i64 0, ptr %.sroa.617.i.i.sroa.6.0..sroa.617.0..sroa_idx.i.i.sroa_idx, align 8, !noalias !69 %70 = load i64, ptr %13, align 8, !alias.scope !61, !noalias !83, !noundef !5 %invariant.gep = getelementptr i8, ptr %69, i64 16 - %.not95 = icmp eq i64 %70, 0 - br i1 %.not95, label %.thread71, label %.preheader.lr.ph + %.not92 = icmp eq i64 %70, 0 + br i1 %.not92, label %.thread68, label %.preheader.lr.ph .preheader.lr.ph: ; preds = %_ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit.i %71 = load ptr, ptr %0, align 8, !alias.scope !84, !noalias !87, !nonnull !5, !noundef !5 @@ -619,8 +619,8 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. br label %.preheader 83: ; preds = %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17hf94e635cfb75ebaeE.exit.thread.i.i, %46 - %.sroa.5.057.ph = phi i64 [ %48, %46 ], [ %.sroa.6.04357.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17hf94e635cfb75ebaeE.exit.thread.i.i ] - %.sroa.9.055.ph = phi i64 [ %.sroa.6.0.i.i3, %46 ], [ %.sroa.11.04455.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17hf94e635cfb75ebaeE.exit.thread.i.i ] + %.sroa.5.053.ph = phi i64 [ %48, %46 ], [ %.sroa.6.04357.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17hf94e635cfb75ebaeE.exit.thread.i.i ] + %.sroa.9.051.ph = phi i64 [ %.sroa.6.0.i.i3, %46 ], [ %.sroa.11.04455.ph.i.i, %_ZN9hashbrown3raw13RawTableInner17new_uninitialized17hf94e635cfb75ebaeE.exit.thread.i.i ] call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %11), !noalias !69 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0088035bc4d5f7b9E.exit @@ -631,23 +631,23 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. br label %common.resume .preheader: ; preds = %.preheader.lr.ph, %159 - %.sroa.1338.099 = phi i16 [ %75, %.preheader.lr.ph ], [ %94, %159 ] - %.sroa.936.098 = phi i64 [ %70, %.preheader.lr.ph ], [ %98, %159 ] - %.sroa.033.097 = phi ptr [ %71, %.preheader.lr.ph ], [ %.sroa.033.1.lcssa, %159 ] - %.sroa.534.096 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.534.1.lcssa, %159 ] - %.not.not.i90 = icmp eq i16 %.sroa.1338.099, 0 - br i1 %.not.not.i90, label %.noexc2, label %._crit_edge + %.sroa.1338.096 = phi i16 [ %75, %.preheader.lr.ph ], [ %96, %159 ] + %.sroa.936.095 = phi i64 [ %70, %.preheader.lr.ph ], [ %98, %159 ] + %.sroa.033.094 = phi ptr [ %71, %.preheader.lr.ph ], [ %.sroa.033.1.lcssa, %159 ] + %.sroa.534.093 = phi i64 [ 0, %.preheader.lr.ph ], [ %.sroa.534.1.lcssa, %159 ] + %.not.not.i87 = icmp eq i16 %.sroa.1338.096, 0 + br i1 %.not.not.i87, label %.noexc2, label %._crit_edge .noexc2: ; preds = %.preheader, %.noexc2 - %.sroa.033.192 = phi ptr [ %87, %.noexc2 ], [ %.sroa.033.097, %.preheader ] - %.sroa.534.191 = phi i64 [ %91, %.noexc2 ], [ %.sroa.534.096, %.preheader ] - %86 = icmp ne ptr %.sroa.033.192, null + %.sroa.033.189 = phi ptr [ %87, %.noexc2 ], [ %.sroa.033.094, %.preheader ] + %.sroa.534.188 = phi i64 [ %91, %.noexc2 ], [ %.sroa.534.093, %.preheader ] + %86 = icmp ne ptr %.sroa.033.189, null call void @llvm.assume(i1 %86) - %87 = getelementptr inbounds i8, ptr %.sroa.033.192, i64 16 + %87 = getelementptr inbounds i8, ptr %.sroa.033.189, i64 16 %88 = load <16 x i8>, ptr %87, align 16, !noalias !105 %89 = icmp slt <16 x i8> %88, zeroinitializer %90 = bitcast <16 x i1> %89 to i16 - %91 = add i64 %.sroa.534.191, 16 + %91 = add i64 %.sroa.534.188, 16 %.not.not.i = icmp eq i16 %90, -1 br i1 %.not.not.i, label %.noexc2, label %._crit_edge.loopexit @@ -656,15 +656,15 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. br label %._crit_edge ._crit_edge: ; preds = %._crit_edge.loopexit, %.preheader - %.sroa.534.1.lcssa = phi i64 [ %.sroa.534.096, %.preheader ], [ %91, %._crit_edge.loopexit ] - %.sroa.033.1.lcssa = phi ptr [ %.sroa.033.097, %.preheader ], [ %87, %._crit_edge.loopexit ] - %.sroa.1338.1.lcssa = phi i16 [ %.sroa.1338.099, %.preheader ], [ %92, %._crit_edge.loopexit ] - %93 = add i16 %.sroa.1338.1.lcssa, -1 - %94 = and i16 %93, %.sroa.1338.1.lcssa - %95 = call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.sroa.1338.1.lcssa, i1 true) - %96 = zext nneg i16 %95 to i64 - %97 = add i64 %.sroa.534.1.lcssa, %96 - %98 = add i64 %.sroa.936.098, -1 + %.sroa.534.1.lcssa = phi i64 [ %.sroa.534.093, %.preheader ], [ %91, %._crit_edge.loopexit ] + %.sroa.033.1.lcssa = phi ptr [ %.sroa.033.094, %.preheader ], [ %87, %._crit_edge.loopexit ] + %.sroa.1338.1.lcssa = phi i16 [ %.sroa.1338.096, %.preheader ], [ %92, %._crit_edge.loopexit ] + %93 = call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.sroa.1338.1.lcssa, i1 true) + %94 = zext nneg i16 %93 to i64 + %95 = add i16 %.sroa.1338.1.lcssa, -1 + %96 = and i16 %95, %.sroa.1338.1.lcssa + %97 = add i64 %.sroa.534.1.lcssa, %94 + %98 = add i64 %.sroa.936.095, -1 call void @llvm.experimental.noalias.scope.decl(metadata !108) %99 = load ptr, ptr %0, align 8, !alias.scope !108, !noalias !109, !nonnull !5, !noundef !5 %100 = sub nsw i64 0, %97 @@ -704,14 +704,14 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. invoke void @"_ZN69_$LT$core..hash..sip..Sip13Rounds$u20$as$u20$core..hash..sip..Sip$GT$8d_rounds17hb5fb2225867f012bE.llvm.4308264632886301207"(ptr noalias noundef nonnull align 8 dereferenceable(32) %8) to label %133 unwind label %84 -.thread71.loopexit: ; preds = %159 - %.pre113 = load i64, ptr %13, align 8, !alias.scope !123, !noalias !124 - %.pre114 = load i64, ptr %.sroa.617.i.i.sroa.5.0..sroa.617.0..sroa_idx.i.i.sroa_idx, align 8, !noalias !69 - br label %.thread71 +.thread68.loopexit: ; preds = %159 + %.pre110 = load i64, ptr %13, align 8, !alias.scope !123, !noalias !124 + %.pre111 = load i64, ptr %.sroa.617.i.i.sroa.5.0..sroa.617.0..sroa_idx.i.i.sroa_idx, align 8, !noalias !69 + br label %.thread68 -.thread71: ; preds = %.thread71.loopexit, %_ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit.i - %112 = phi i64 [ %.pre114, %.thread71.loopexit ], [ %.0.i.i.i, %_ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit.i ] - %113 = phi i64 [ %.pre113, %.thread71.loopexit ], [ 0, %_ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit.i ] +.thread68: ; preds = %.thread68.loopexit, %_ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit.i + %112 = phi i64 [ %.pre111, %.thread68.loopexit ], [ %.0.i.i.i, %_ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit.i ] + %113 = phi i64 [ %.pre110, %.thread68.loopexit ], [ 0, %_ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit.i ] %114 = sub i64 %112, %113 store i64 %114, ptr %.sroa.617.i.i.sroa.5.0..sroa.617.0..sroa_idx.i.i.sroa_idx, align 8, !noalias !69 store i64 %113, ptr %.sroa.617.i.i.sroa.6.0..sroa.617.0..sroa_idx.i.i.sroa_idx, align 8, !noalias !69 @@ -729,7 +729,7 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. %115 = icmp eq i64 %.val3.i.i, 0 br i1 %115, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5392d9b282c80b2E.exit", label %116 -116: ; preds = %.thread71 +116: ; preds = %.thread68 %117 = add i64 %.val3.i.i, 1 %118 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %117, i64 80) %119 = extractvalue { i64, i1 } %118, 1 @@ -738,24 +738,24 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. %121 = extractvalue { i64, i1 } %118, 0 %122 = add i64 %.val3.i.i, 17 %123 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %121, i64 %122) - %124 = extractvalue { i64, i1 } %123, 0 - %125 = extractvalue { i64, i1 } %123, 1 - %126 = icmp ult i64 %124, 9223372036854775793 - %127 = xor i1 %125, true + %124 = extractvalue { i64, i1 } %123, 1 + %125 = extractvalue { i64, i1 } %123, 0 + %126 = icmp ult i64 %125, 9223372036854775793 + %127 = xor i1 %124, true call void @llvm.assume(i1 %127) call void @llvm.assume(i1 %126) %128 = icmp ne ptr %.val2.i.i, null call void @llvm.assume(i1 %128) - %129 = icmp eq i64 %124, 0 + %129 = icmp eq i64 %125, 0 br i1 %129, label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5392d9b282c80b2E.exit", label %130 130: ; preds = %116 %131 = sub nsw i64 0, %121 %132 = getelementptr inbounds i8, ptr %.val2.i.i, i64 %131 - call void @__rust_dealloc(ptr noundef nonnull %132, i64 noundef %124, i64 noundef 16) #19, !noalias !137 + call void @__rust_dealloc(ptr noundef nonnull %132, i64 noundef %125, i64 noundef 16) #19, !noalias !137 br label %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5392d9b282c80b2E.exit" -"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5392d9b282c80b2E.exit": ; preds = %.thread71, %116, %130 +"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5392d9b282c80b2E.exit": ; preds = %.thread68, %116, %130 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %11), !noalias !69 br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0088035bc4d5f7b9E.exit @@ -827,7 +827,7 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. %170 = getelementptr i8, ptr %169, i64 -80 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(80) %170, ptr noundef nonnull align 1 dereferenceable(80) %167, i64 80, i1 false) %.not = icmp eq i64 %98, 0 - br i1 %.not, label %.thread71.loopexit, label %.preheader + br i1 %.not, label %.thread68.loopexit, label %.preheader common.resume: ; preds = %196, %84 %common.resume.op = phi { ptr, i32 } [ %85, %84 ], [ %197, %196 ] @@ -1112,8 +1112,8 @@ _ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.threa br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0088035bc4d5f7b9E.exit _ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17h0088035bc4d5f7b9E.exit: ; preds = %83, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5392d9b282c80b2E.exit", %18, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread - %.sroa.4.0.i = phi i64 [ %21, %18 ], [ undef, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread ], [ %.sroa.9.055.ph, %83 ], [ 16, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5392d9b282c80b2E.exit" ] - %.sroa.0.0.i = phi i64 [ %20, %18 ], [ -9223372036854775807, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread ], [ %.sroa.5.057.ph, %83 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5392d9b282c80b2E.exit" ] + %.sroa.4.0.i = phi i64 [ %21, %18 ], [ undef, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread ], [ %.sroa.9.051.ph, %83 ], [ undef, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5392d9b282c80b2E.exit" ] + %.sroa.0.0.i = phi i64 [ %20, %18 ], [ -9223372036854775807, %_ZN9hashbrown3raw13RawTableInner15rehash_in_place17h5e1937b492ec0710E.exit.thread ], [ %.sroa.5.053.ph, %83 ], [ -9223372036854775807, %"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17ha5392d9b282c80b2E.exit" ] %297 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 %298 = insertvalue { i64, i64 } %297, i64 %.sroa.4.0.i, 1 ret { i64, i64 } %298 diff --git a/bench/diesel-rs/optimized/1qpaxgj4ipz9qxmt.ll b/bench/diesel-rs/optimized/1qpaxgj4ipz9qxmt.ll index da3d6840001..327cbfa4225 100644 --- a/bench/diesel-rs/optimized/1qpaxgj4ipz9qxmt.ll +++ b/bench/diesel-rs/optimized/1qpaxgj4ipz9qxmt.ll @@ -443,20 +443,21 @@ define hidden void @"_ZN80_$LT$core..core_arch..x86..__m128i$u20$as$u20$core..co define hidden { i64, i64 } @"_ZN95_$LT$hashbrown..raw..bitmask..BitMaskIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h806c2d75f94c2f57E.llvm.14865556971118453472"(ptr noalias nocapture noundef align 2 dereferenceable(2) %0) unnamed_addr #9 { %2 = load i16, ptr %0, align 2, !noundef !5 %.not.not = icmp eq i16 %2, 0 - br i1 %.not.not, label %6, label %3 + br i1 %.not.not, label %8, label %3 3: ; preds = %1 - %4 = add i16 %2, -1 - %5 = and i16 %4, %2 - store i16 %5, ptr %0, align 2 - br label %6 - -6: ; preds = %1, %3 + %4 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %2, i1 true) + %5 = zext nneg i16 %4 to i64 + %6 = add i16 %2, -1 + %7 = and i16 %6, %2 + store i16 %7, ptr %0, align 2 + br label %8 + +8: ; preds = %1, %3 + %.sroa.3.0 = phi i64 [ %5, %3 ], [ undef, %1 ] %.sroa.0.0 = phi i64 [ 1, %3 ], [ 0, %1 ] - %7 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %2, i1 true) - %8 = zext nneg i16 %7 to i64 %9 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %10 = insertvalue { i64, i64 } %9, i64 %8, 1 + %10 = insertvalue { i64, i64 } %9, i64 %.sroa.3.0, 1 ret { i64, i64 } %10 } @@ -673,8 +674,8 @@ define hidden void @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6insert17ha4 %.sroa.01.0.i.i = phi i64 [ 0, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hf17ea2013117a2e3E.exit.i" ], [ %.sroa.01.1.i.i, %72 ] %.sroa.0.025.i.i = and i64 %.pn.i.i, %.val4.i %45 = getelementptr inbounds i8, ptr %.val.i, i64 %.sroa.0.025.i.i - %.0.copyload.i32.i.i = load <16 x i8>, ptr %45, align 1, !noalias !161 - %46 = icmp eq <16 x i8> %.0.copyload.i32.i.i, %.15.vec.insert.i.i.i + %.0.copyload.i33.i.i = load <16 x i8>, ptr %45, align 1, !noalias !161 + %46 = icmp eq <16 x i8> %.0.copyload.i33.i.i, %.15.vec.insert.i.i.i %47 = bitcast <16 x i1> %46 to i16 br label %48 @@ -705,7 +706,7 @@ define hidden void @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6insert17ha4 br i1 %59, label %105, label %48 62: ; preds = %49 - %63 = icmp slt <16 x i8> %.0.copyload.i32.i.i, zeroinitializer + %63 = icmp slt <16 x i8> %.0.copyload.i33.i.i, zeroinitializer %64 = bitcast <16 x i1> %63 to i16 %.not.not.i15.i.i = icmp ne i16 %64, 0 %65 = call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %64, i1 true) @@ -713,14 +714,14 @@ define hidden void @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6insert17ha4 %.sroa.6.0.i.i.i = select i1 %.not.not.i15.i.i, i64 %66, i64 undef %67 = add i64 %.sroa.6.0.i.i.i, %.sroa.0.025.i.i %68 = and i64 %67, %.val4.i - %.sroa.3.0.i.i.i = select i1 %.not.not.i15.i.i, i64 %68, i64 undef - %.sroa.0.0.i16.i.i = zext i1 %.not.not.i15.i.i to i64 + %.sroa.3.0.i16.i.i = select i1 %.not.not.i15.i.i, i64 %68, i64 undef + %.sroa.0.0.i17.i.i = zext i1 %.not.not.i15.i.i to i64 br label %69 69: ; preds = %62, %49 - %.sroa.6.1.i.i = phi i64 [ %.sroa.3.0.i.i.i, %62 ], [ %.sroa.6.0.i.i, %49 ] - %.sroa.01.1.i.i = phi i64 [ %.sroa.0.0.i16.i.i, %62 ], [ 1, %49 ] - %70 = icmp eq <16 x i8> %.0.copyload.i32.i.i, + %.sroa.6.1.i.i = phi i64 [ %.sroa.3.0.i16.i.i, %62 ], [ %.sroa.6.0.i.i, %49 ] + %.sroa.01.1.i.i = phi i64 [ %.sroa.0.0.i17.i.i, %62 ], [ 1, %49 ] + %70 = icmp eq <16 x i8> %.0.copyload.i33.i.i, %71 = bitcast <16 x i1> %70 to i16 %.not11.i.i = icmp eq i16 %71, 0 br i1 %.not11.i.i, label %72, label %75 @@ -843,28 +844,28 @@ define hidden { i64, i64 } @_ZN9hashbrown3raw13RawTableInner10find_inner17h161d7 %.sroa.9.0 = phi i64 [ 0, %4 ], [ %30, %29 ] %.sroa.01.0 = phi i64 [ %9, %4 ], [ %32, %29 ] %13 = getelementptr inbounds i8, ptr %10, i64 %.sroa.01.0 - %.0.copyload.i32 = load <16 x i8>, ptr %13, align 1, !noalias !177 - %14 = icmp eq <16 x i8> %.0.copyload.i32, %.15.vec.insert.i + %.0.copyload.i33 = load <16 x i8>, ptr %13, align 1, !noalias !177 + %14 = icmp eq <16 x i8> %.0.copyload.i33, %.15.vec.insert.i %15 = bitcast <16 x i1> %14 to i16 br label %16 16: ; preds = %20, %12 - %.0 = phi i16 [ %15, %12 ], [ %22, %20 ] + %.0 = phi i16 [ %15, %12 ], [ %24, %20 ] %.not.not.i = icmp eq i16 %.0, 0 br i1 %.not.not.i, label %17, label %20 17: ; preds = %16 - %18 = icmp eq <16 x i8> %.0.copyload.i32, + %18 = icmp eq <16 x i8> %.0.copyload.i33, %19 = bitcast <16 x i1> %18 to i16 %.not = icmp eq i16 %19, 0 - br i1 %.not, label %29, label %.loopexit33 + br i1 %.not, label %29, label %.loopexit34 20: ; preds = %16 - %21 = add i16 %.0, -1 - %22 = and i16 %21, %.0 - %23 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.0, i1 true) - %24 = zext nneg i16 %23 to i64 - %25 = add i64 %.sroa.01.0, %24 + %21 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.0, i1 true) + %22 = zext nneg i16 %21 to i64 + %23 = add i16 %.0, -1 + %24 = and i16 %23, %.0 + %25 = add i64 %.sroa.01.0, %22 %26 = and i64 %25, %8 %27 = load ptr, ptr %11, align 8, !invariant.load !5, !nonnull !5 %28 = tail call noundef zeroext i1 %27(ptr noundef nonnull align 1 %2, i64 noundef %26) @@ -877,11 +878,11 @@ define hidden { i64, i64 } @_ZN9hashbrown3raw13RawTableInner10find_inner17h161d7 br label %12 .loopexit: ; preds = %20 - %33 = insertvalue { i64, i64 } { i64 1, i64 poison }, i64 %24, 1 - br label %.loopexit33 + %33 = insertvalue { i64, i64 } { i64 1, i64 poison }, i64 %22, 1 + br label %.loopexit34 -.loopexit33: ; preds = %17, %.loopexit - %34 = phi { i64, i64 } [ %33, %.loopexit ], [ { i64 0, i64 16 }, %17 ] +.loopexit34: ; preds = %17, %.loopexit + %34 = phi { i64, i64 } [ %33, %.loopexit ], [ { i64 0, i64 undef }, %17 ] %.sroa.3.0 = phi i64 [ %26, %.loopexit ], [ undef, %17 ] %35 = insertvalue { i64, i64 } %34, i64 %.sroa.3.0, 1 ret { i64, i64 } %35 @@ -927,25 +928,25 @@ define hidden noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17h636a %.sroa.9.0.i = phi i64 [ 0, %3 ], [ %55, %54 ] %.sroa.01.0.i = phi i64 [ %9, %3 ], [ %57, %54 ] %23 = getelementptr inbounds i8, ptr %10, i64 %.sroa.01.0.i - %.0.copyload.i31 = load <16 x i8>, ptr %23, align 1, !noalias !185 - %24 = icmp eq <16 x i8> %.0.copyload.i31, %.15.vec.insert.i + %.0.copyload.i33 = load <16 x i8>, ptr %23, align 1, !noalias !185 + %24 = icmp eq <16 x i8> %.0.copyload.i33, %.15.vec.insert.i %25 = bitcast <16 x i1> %24 to i16 - %.not.not.i34 = icmp eq i16 %25, 0 - br i1 %.not.not.i34, label %._crit_edge, label %.lr.ph + %.not.not.i36 = icmp eq i16 %25, 0 + br i1 %.not.not.i36, label %._crit_edge, label %.lr.ph ._crit_edge: ; preds = %.backedge, %22 - %26 = icmp eq <16 x i8> %.0.copyload.i31, + %26 = icmp eq <16 x i8> %.0.copyload.i33, %27 = bitcast <16 x i1> %26 to i16 %.not.i = icmp eq i16 %27, 0 br i1 %.not.i, label %54, label %_ZN9hashbrown3raw13RawTableInner10find_inner17h161d71df3565f810E.llvm.14865556971118453472.exit .lr.ph: ; preds = %22, %.backedge - %.02135 = phi i16 [ %29, %.backedge ], [ %25, %22 ] - %28 = add i16 %.02135, -1 - %29 = and i16 %28, %.02135 - %30 = call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.02135, i1 true) - %31 = zext nneg i16 %30 to i64 - %32 = add i64 %.sroa.01.0.i, %31 + %.02237 = phi i16 [ %31, %.backedge ], [ %25, %22 ] + %28 = call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.02237, i1 true) + %29 = zext nneg i16 %28 to i64 + %30 = add i16 %.02237, -1 + %31 = and i16 %30, %.02237 + %32 = add i64 %.sroa.01.0.i, %29 %33 = and i64 %32, %8 %34 = sub nsw i64 0, %33 %35 = getelementptr inbounds { { [3 x i64], i64, [2 x i64] }, { { { i64, ptr }, i64 }, { ptr, i64 } } }, ptr %10, i64 %34 @@ -968,7 +969,7 @@ define hidden noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17h636a br i1 %44, label %_ZN9hashbrown3raw13RawTableInner10find_inner17h161d71df3565f810E.llvm.14865556971118453472.exit, label %.backedge .backedge: ; preds = %49, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5ccf3893929cbe1aE.exit.i.i.i", %45, %.lr.ph, %42, %"_ZN90_$LT$core..ops..control_flow..ControlFlow$LT$B$C$C$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17h791a95c3d2505cc5E.llvm.768955472827859366.exit.i.i.i.i" - %.not.not.i = icmp eq i16 %29, 0 + %.not.not.i = icmp eq i16 %31, 0 br i1 %.not.not.i, label %._crit_edge, label %.lr.ph 45: ; preds = %41 diff --git a/bench/diesel-rs/optimized/1vuxmtz2yhpbr3bd.ll b/bench/diesel-rs/optimized/1vuxmtz2yhpbr3bd.ll index c8b4e7f4d24..760199761df 100644 --- a/bench/diesel-rs/optimized/1vuxmtz2yhpbr3bd.ll +++ b/bench/diesel-rs/optimized/1vuxmtz2yhpbr3bd.ll @@ -405,8 +405,10 @@ define hidden noundef align 8 dereferenceable_or_null(16) ptr @"_ZN180_$LT$diese ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define hidden { ptr, i64 } @"_ZN180_$LT$diesel..insertable..private..InsertableOptionHelper$LT$T$C$diesel..insertable..ColumnInsertValue$LT$Col$C$Expr$GT$$GT$$u20$as$u20$diesel..insertable..Insertable$LT$Tab$GT$$GT$6values17h847905aea5bfb9b8E.llvm.14419527431308106341"(ptr noalias noundef readonly align 1 %0, i64 %1) unnamed_addr #2 { + %.not = icmp eq ptr %0, null + %spec.select = select i1 %.not, i64 undef, i64 %1 %3 = insertvalue { ptr, i64 } poison, ptr %0, 0 - %4 = insertvalue { ptr, i64 } %3, i64 %1, 1 + %4 = insertvalue { ptr, i64 } %3, i64 %spec.select, 1 ret { ptr, i64 } %4 } @@ -422,8 +424,10 @@ define hidden noundef align 8 dereferenceable_or_null(16) ptr @"_ZN180_$LT$diese ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define hidden { ptr, i64 } @"_ZN180_$LT$diesel..insertable..private..InsertableOptionHelper$LT$T$C$diesel..insertable..ColumnInsertValue$LT$Col$C$Expr$GT$$GT$$u20$as$u20$diesel..insertable..Insertable$LT$Tab$GT$$GT$6values17hb523b59a79e70b40E.llvm.14419527431308106341"(ptr noalias noundef readonly align 1 %0, i64 %1) unnamed_addr #2 { + %.not = icmp eq ptr %0, null + %spec.select = select i1 %.not, i64 undef, i64 %1 %3 = insertvalue { ptr, i64 } poison, ptr %0, 0 - %4 = insertvalue { ptr, i64 } %3, i64 %1, 1 + %4 = insertvalue { ptr, i64 } %3, i64 %spec.select, 1 ret { ptr, i64 } %4 } @@ -1680,6 +1684,7 @@ _ZN5alloc3fmt6format17h55b1a8bf61a7c713E.exit.i25: ; preds = %129 "_ZN155_$LT$diesel..connection..transaction_manager..AnsiTransactionManager$u20$as$u20$diesel..connection..transaction_manager..TransactionManager$LT$Conn$GT$$GT$18commit_transaction17h65c87298ee6e88efE.exit.thread": ; preds = %128, %125 %.sroa.17.3.ph = phi i64 [ undef, %125 ], [ %.sroa.335.i.sroa.4.0.copyload, %128 ] %.sroa.14.3.ph = phi ptr [ undef, %125 ], [ %.sroa.335.i.sroa.0.0.copyload, %128 ] + %.sroa.10.3.ph = phi ptr [ undef, %125 ], [ %124, %128 ] %.sroa.036.3.ph = phi i64 [ -9223372036854775800, %125 ], [ %121, %128 ] call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) br label %231 @@ -1707,17 +1712,17 @@ _ZN5alloc3fmt6format17h55b1a8bf61a7c713E.exit.i25: ; preds = %129 br label %232 231: ; preds = %"_ZN155_$LT$diesel..connection..transaction_manager..AnsiTransactionManager$u20$as$u20$diesel..connection..transaction_manager..TransactionManager$LT$Conn$GT$$GT$18commit_transaction17h65c87298ee6e88efE.exit", %"_ZN155_$LT$diesel..connection..transaction_manager..AnsiTransactionManager$u20$as$u20$diesel..connection..transaction_manager..TransactionManager$LT$Conn$GT$$GT$18commit_transaction17h65c87298ee6e88efE.exit.thread" - %.sroa.10.374.ph = phi ptr [ %124, %"_ZN155_$LT$diesel..connection..transaction_manager..AnsiTransactionManager$u20$as$u20$diesel..connection..transaction_manager..TransactionManager$LT$Conn$GT$$GT$18commit_transaction17h65c87298ee6e88efE.exit.thread" ], [ %.sroa.10.3, %"_ZN155_$LT$diesel..connection..transaction_manager..AnsiTransactionManager$u20$as$u20$diesel..connection..transaction_manager..TransactionManager$LT$Conn$GT$$GT$18commit_transaction17h65c87298ee6e88efE.exit" ] - %.sroa.14.372.ph = phi ptr [ %.sroa.14.3.ph, %"_ZN155_$LT$diesel..connection..transaction_manager..AnsiTransactionManager$u20$as$u20$diesel..connection..transaction_manager..TransactionManager$LT$Conn$GT$$GT$18commit_transaction17h65c87298ee6e88efE.exit.thread" ], [ %.sroa.14.3, %"_ZN155_$LT$diesel..connection..transaction_manager..AnsiTransactionManager$u20$as$u20$diesel..connection..transaction_manager..TransactionManager$LT$Conn$GT$$GT$18commit_transaction17h65c87298ee6e88efE.exit" ] - %.sroa.17.370.ph = phi i64 [ %.sroa.17.3.ph, %"_ZN155_$LT$diesel..connection..transaction_manager..AnsiTransactionManager$u20$as$u20$diesel..connection..transaction_manager..TransactionManager$LT$Conn$GT$$GT$18commit_transaction17h65c87298ee6e88efE.exit.thread" ], [ %.sroa.17.3, %"_ZN155_$LT$diesel..connection..transaction_manager..AnsiTransactionManager$u20$as$u20$diesel..connection..transaction_manager..TransactionManager$LT$Conn$GT$$GT$18commit_transaction17h65c87298ee6e88efE.exit" ] + %.sroa.76.sroa.0.0.ph = phi ptr [ %.sroa.10.3.ph, %"_ZN155_$LT$diesel..connection..transaction_manager..AnsiTransactionManager$u20$as$u20$diesel..connection..transaction_manager..TransactionManager$LT$Conn$GT$$GT$18commit_transaction17h65c87298ee6e88efE.exit.thread" ], [ %.sroa.10.3, %"_ZN155_$LT$diesel..connection..transaction_manager..AnsiTransactionManager$u20$as$u20$diesel..connection..transaction_manager..TransactionManager$LT$Conn$GT$$GT$18commit_transaction17h65c87298ee6e88efE.exit" ] + %.sroa.76.sroa.5.0.ph = phi ptr [ %.sroa.14.3.ph, %"_ZN155_$LT$diesel..connection..transaction_manager..AnsiTransactionManager$u20$as$u20$diesel..connection..transaction_manager..TransactionManager$LT$Conn$GT$$GT$18commit_transaction17h65c87298ee6e88efE.exit.thread" ], [ %.sroa.14.3, %"_ZN155_$LT$diesel..connection..transaction_manager..AnsiTransactionManager$u20$as$u20$diesel..connection..transaction_manager..TransactionManager$LT$Conn$GT$$GT$18commit_transaction17h65c87298ee6e88efE.exit" ] + %.sroa.76.sroa.6.0.ph = phi i64 [ %.sroa.17.3.ph, %"_ZN155_$LT$diesel..connection..transaction_manager..AnsiTransactionManager$u20$as$u20$diesel..connection..transaction_manager..TransactionManager$LT$Conn$GT$$GT$18commit_transaction17h65c87298ee6e88efE.exit.thread" ], [ %.sroa.17.3, %"_ZN155_$LT$diesel..connection..transaction_manager..AnsiTransactionManager$u20$as$u20$diesel..connection..transaction_manager..TransactionManager$LT$Conn$GT$$GT$18commit_transaction17h65c87298ee6e88efE.exit" ] %.sroa.04.0.ph = phi i64 [ %.sroa.036.3.ph, %"_ZN155_$LT$diesel..connection..transaction_manager..AnsiTransactionManager$u20$as$u20$diesel..connection..transaction_manager..TransactionManager$LT$Conn$GT$$GT$18commit_transaction17h65c87298ee6e88efE.exit.thread" ], [ %.sroa.036.3, %"_ZN155_$LT$diesel..connection..transaction_manager..AnsiTransactionManager$u20$as$u20$diesel..connection..transaction_manager..TransactionManager$LT$Conn$GT$$GT$18commit_transaction17h65c87298ee6e88efE.exit" ] store i64 %.sroa.04.0.ph, ptr %0, align 8 %.sroa.454.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 - store ptr %.sroa.10.374.ph, ptr %.sroa.454.0..sroa_idx, align 8 + store ptr %.sroa.76.sroa.0.0.ph, ptr %.sroa.454.0..sroa_idx, align 8 %.sroa.555.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 - store ptr %.sroa.14.372.ph, ptr %.sroa.555.0..sroa_idx, align 8 + store ptr %.sroa.76.sroa.5.0.ph, ptr %.sroa.555.0..sroa_idx, align 8 %.sroa.656.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 24 - store i64 %.sroa.17.370.ph, ptr %.sroa.656.0..sroa_idx, align 8 + store i64 %.sroa.76.sroa.6.0.ph, ptr %.sroa.656.0..sroa_idx, align 8 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) br label %238 @@ -1729,10 +1734,10 @@ _ZN5alloc3fmt6format17h55b1a8bf61a7c713E.exit.i25: ; preds = %129 %234 = load i64, ptr %34, align 8, !range !5, !noundef !4 switch i64 %234, label %237 [ i64 -9223372036854775798, label %235 - i64 -9223372036854775799, label %.thread96 + i64 -9223372036854775799, label %.thread92 ] -.thread96: ; preds = %233 +.thread92: ; preds = %233 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %35, i64 32, i1 false) call fastcc void @"_ZN4core3ptr42drop_in_place$LT$diesel..result..Error$GT$17h4b5b8182eb47705bE"(ptr noalias noundef nonnull align 8 dereferenceable(32) %34) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) @@ -1743,7 +1748,7 @@ _ZN5alloc3fmt6format17h55b1a8bf61a7c713E.exit.i25: ; preds = %129 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) br label %236 -236: ; preds = %235, %.thread96, %237 +236: ; preds = %235, %.thread92, %237 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %35) br label %232 @@ -1774,17 +1779,21 @@ define hidden void @"_ZN6diesel10type_impls6tuples87_$LT$impl$u20$diesel..insert %3 = load ptr, ptr %1, align 8, !align !94, !noundef !4 %4 = getelementptr inbounds i8, ptr %1, i64 8 %5 = load i64, ptr %4, align 8 + %.not.i.i = icmp eq ptr %3, null + %spec.select.i.i = select i1 %.not.i.i, i64 undef, i64 %5 %6 = getelementptr inbounds i8, ptr %1, i64 16 %7 = load ptr, ptr %6, align 8, !align !94, !noundef !4 %8 = getelementptr inbounds i8, ptr %1, i64 24 %9 = load i64, ptr %8, align 8 + %.not.i.i4 = icmp eq ptr %7, null + %spec.select.i.i5 = select i1 %.not.i.i4, i64 undef, i64 %9 store ptr %3, ptr %0, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 - store i64 %5, ptr %.sroa.4.0..sroa_idx, align 8 + store i64 %spec.select.i.i, ptr %.sroa.4.0..sroa_idx, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 store ptr %7, ptr %.sroa.5.0..sroa_idx, align 8 %.sroa.6.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 24 - store i64 %9, ptr %.sroa.6.0..sroa_idx, align 8 + store i64 %spec.select.i.i5, ptr %.sroa.6.0..sroa_idx, align 8 ret void } @@ -1847,16 +1856,16 @@ define hidden void @"_ZN6diesel9query_dsl8load_dsl7private31LoadIter$LT$U$C$C$C$ %18 = load i32, ptr %17, align 8, !noalias !316 %19 = load ptr, ptr %17, align 8, !noalias !316, !nonnull !4, !align !51 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3), !noalias !316 - %.sroa.5.8.insert.ext = zext i32 %18 to i64 - %20 = inttoptr i64 %.sroa.5.8.insert.ext to ptr - %.sroa.5.026 = select i1 %16, ptr %20, ptr %19 + %.sroa.4.0.insert.ext = zext i32 %18 to i64 + %20 = inttoptr i64 %.sroa.4.0.insert.ext to ptr %.sroa.4.0 = select i1 %16, ptr %20, ptr %15 + %.sroa.6.0 = select i1 %16, ptr undef, ptr %19 %.sink.i = select i1 %16, i64 -9223372036854775798, i64 -9223372036854775805 store i64 %.sink.i, ptr %0, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 store ptr %.sroa.4.0, ptr %.sroa.4.0..sroa_idx, align 8 %.sroa.6.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 - store ptr %.sroa.5.026, ptr %.sroa.6.0..sroa_idx, align 8 + store ptr %.sroa.6.0, ptr %.sroa.6.0..sroa_idx, align 8 invoke void @"_ZN68_$LT$alloc..rc..Rc$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h8020533ea92d9a14E.llvm.5273170882542179869"(ptr noalias noundef nonnull align 8 dereferenceable(8) %4) to label %"_ZN4core3ptr72drop_in_place$LT$diesel..mysql..connection..stmt..iterator..MysqlRow$GT$17h0c91327e7d3659d8E.exit" unwind label %24 @@ -1949,15 +1958,19 @@ define hidden noundef align 8 dereferenceable_or_null(16) ptr @"_ZN91_$LT$core.. ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define hidden { ptr, i64 } @"_ZN91_$LT$core..option..Option$LT$T$GT$$u20$as$u20$diesel..insertable..Insertable$LT$Tab$GT$$GT$6values17hf4b1d212e50906edE.llvm.14419527431308106341"(ptr noalias noundef readonly align 1 %0, i64 %1) unnamed_addr #2 { + %.not.i = icmp eq ptr %0, null + %spec.select.i = select i1 %.not.i, i64 undef, i64 %1 %3 = insertvalue { ptr, i64 } poison, ptr %0, 0 - %4 = insertvalue { ptr, i64 } %3, i64 %1, 1 + %4 = insertvalue { ptr, i64 } %3, i64 %spec.select.i, 1 ret { ptr, i64 } %4 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define hidden { ptr, i64 } @"_ZN91_$LT$core..option..Option$LT$T$GT$$u20$as$u20$diesel..insertable..Insertable$LT$Tab$GT$$GT$6values17hfbcebe6d84a0fbadE.llvm.14419527431308106341"(ptr noalias noundef readonly align 1 %0, i64 %1) unnamed_addr #2 { + %.not.i = icmp eq ptr %0, null + %spec.select.i = select i1 %.not.i, i64 undef, i64 %1 %3 = insertvalue { ptr, i64 } poison, ptr %0, 0 - %4 = insertvalue { ptr, i64 } %3, i64 %1, 1 + %4 = insertvalue { ptr, i64 } %3, i64 %spec.select.i, 1 ret { ptr, i64 } %4 } diff --git a/bench/diesel-rs/optimized/21lv25hlpi4vcq3d.ll b/bench/diesel-rs/optimized/21lv25hlpi4vcq3d.ll index 2d68adff8ca..562458928f4 100644 --- a/bench/diesel-rs/optimized/21lv25hlpi4vcq3d.ll +++ b/bench/diesel-rs/optimized/21lv25hlpi4vcq3d.ll @@ -1950,20 +1950,21 @@ define hidden void @"_ZN80_$LT$core..core_arch..x86..__m128i$u20$as$u20$core..co define hidden { i64, i64 } @"_ZN95_$LT$hashbrown..raw..bitmask..BitMaskIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h806c2d75f94c2f57E.llvm.14418932532550506065"(ptr noalias nocapture noundef align 2 dereferenceable(2) %0) unnamed_addr #10 { %2 = load i16, ptr %0, align 2, !noundef !5 %.not.not = icmp eq i16 %2, 0 - br i1 %.not.not, label %6, label %3 + br i1 %.not.not, label %8, label %3 3: ; preds = %1 - %4 = add i16 %2, -1 - %5 = and i16 %4, %2 - store i16 %5, ptr %0, align 2 - br label %6 - -6: ; preds = %1, %3 + %4 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %2, i1 true) + %5 = zext nneg i16 %4 to i64 + %6 = add i16 %2, -1 + %7 = and i16 %6, %2 + store i16 %7, ptr %0, align 2 + br label %8 + +8: ; preds = %1, %3 + %.sroa.3.0 = phi i64 [ %5, %3 ], [ undef, %1 ] %.sroa.0.0 = phi i64 [ 1, %3 ], [ 0, %1 ] - %7 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %2, i1 true) - %8 = zext nneg i16 %7 to i64 %9 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %10 = insertvalue { i64, i64 } %9, i64 %8, 1 + %10 = insertvalue { i64, i64 } %9, i64 %.sroa.3.0, 1 ret { i64, i64 } %10 } @@ -2049,28 +2050,28 @@ define hidden { i64, i64 } @_ZN9hashbrown3raw13RawTableInner10find_inner17h161d7 %.sroa.9.0 = phi i64 [ 0, %4 ], [ %30, %29 ] %.sroa.01.0 = phi i64 [ %9, %4 ], [ %32, %29 ] %13 = getelementptr inbounds i8, ptr %10, i64 %.sroa.01.0 - %.0.copyload.i32 = load <16 x i8>, ptr %13, align 1, !noalias !282 - %14 = icmp eq <16 x i8> %.0.copyload.i32, %.15.vec.insert.i + %.0.copyload.i33 = load <16 x i8>, ptr %13, align 1, !noalias !282 + %14 = icmp eq <16 x i8> %.0.copyload.i33, %.15.vec.insert.i %15 = bitcast <16 x i1> %14 to i16 br label %16 16: ; preds = %20, %12 - %.0 = phi i16 [ %15, %12 ], [ %22, %20 ] + %.0 = phi i16 [ %15, %12 ], [ %24, %20 ] %.not.not.i = icmp eq i16 %.0, 0 br i1 %.not.not.i, label %17, label %20 17: ; preds = %16 - %18 = icmp eq <16 x i8> %.0.copyload.i32, + %18 = icmp eq <16 x i8> %.0.copyload.i33, %19 = bitcast <16 x i1> %18 to i16 %.not = icmp eq i16 %19, 0 - br i1 %.not, label %29, label %.loopexit33 + br i1 %.not, label %29, label %.loopexit34 20: ; preds = %16 - %21 = add i16 %.0, -1 - %22 = and i16 %21, %.0 - %23 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.0, i1 true) - %24 = zext nneg i16 %23 to i64 - %25 = add i64 %.sroa.01.0, %24 + %21 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.0, i1 true) + %22 = zext nneg i16 %21 to i64 + %23 = add i16 %.0, -1 + %24 = and i16 %23, %.0 + %25 = add i64 %.sroa.01.0, %22 %26 = and i64 %25, %8 %27 = load ptr, ptr %11, align 8, !invariant.load !5, !nonnull !5 %28 = tail call noundef zeroext i1 %27(ptr noundef nonnull align 1 %2, i64 noundef %26) @@ -2083,11 +2084,11 @@ define hidden { i64, i64 } @_ZN9hashbrown3raw13RawTableInner10find_inner17h161d7 br label %12 .loopexit: ; preds = %20 - %33 = insertvalue { i64, i64 } { i64 1, i64 poison }, i64 %24, 1 - br label %.loopexit33 + %33 = insertvalue { i64, i64 } { i64 1, i64 poison }, i64 %22, 1 + br label %.loopexit34 -.loopexit33: ; preds = %17, %.loopexit - %34 = phi { i64, i64 } [ %33, %.loopexit ], [ { i64 0, i64 16 }, %17 ] +.loopexit34: ; preds = %17, %.loopexit + %34 = phi { i64, i64 } [ %33, %.loopexit ], [ { i64 0, i64 undef }, %17 ] %.sroa.3.0 = phi i64 [ %26, %.loopexit ], [ undef, %17 ] %35 = insertvalue { i64, i64 } %34, i64 %.sroa.3.0, 1 ret { i64, i64 } %35 @@ -2133,25 +2134,25 @@ define hidden noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17h9737 %.sroa.9.0.i = phi i64 [ 0, %3 ], [ %55, %54 ] %.sroa.01.0.i = phi i64 [ %9, %3 ], [ %57, %54 ] %23 = getelementptr inbounds i8, ptr %10, i64 %.sroa.01.0.i - %.0.copyload.i31 = load <16 x i8>, ptr %23, align 1, !noalias !290 - %24 = icmp eq <16 x i8> %.0.copyload.i31, %.15.vec.insert.i + %.0.copyload.i33 = load <16 x i8>, ptr %23, align 1, !noalias !290 + %24 = icmp eq <16 x i8> %.0.copyload.i33, %.15.vec.insert.i %25 = bitcast <16 x i1> %24 to i16 - %.not.not.i34 = icmp eq i16 %25, 0 - br i1 %.not.not.i34, label %._crit_edge, label %.lr.ph + %.not.not.i36 = icmp eq i16 %25, 0 + br i1 %.not.not.i36, label %._crit_edge, label %.lr.ph ._crit_edge: ; preds = %.backedge, %22 - %26 = icmp eq <16 x i8> %.0.copyload.i31, + %26 = icmp eq <16 x i8> %.0.copyload.i33, %27 = bitcast <16 x i1> %26 to i16 %.not.i = icmp eq i16 %27, 0 br i1 %.not.i, label %54, label %_ZN9hashbrown3raw13RawTableInner10find_inner17h161d71df3565f810E.llvm.14418932532550506065.exit .lr.ph: ; preds = %22, %.backedge - %.02135 = phi i16 [ %29, %.backedge ], [ %25, %22 ] - %28 = add i16 %.02135, -1 - %29 = and i16 %28, %.02135 - %30 = call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.02135, i1 true) - %31 = zext nneg i16 %30 to i64 - %32 = add i64 %.sroa.01.0.i, %31 + %.02237 = phi i16 [ %31, %.backedge ], [ %25, %22 ] + %28 = call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.02237, i1 true) + %29 = zext nneg i16 %28 to i64 + %30 = add i16 %.02237, -1 + %31 = and i16 %30, %.02237 + %32 = add i64 %.sroa.01.0.i, %29 %33 = and i64 %32, %8 %34 = sub nsw i64 0, %33 %35 = getelementptr inbounds { { [3 x i64], i64, [2 x i64] }, ptr }, ptr %10, i64 %34 @@ -2174,7 +2175,7 @@ define hidden noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17h9737 br i1 %44, label %_ZN9hashbrown3raw13RawTableInner10find_inner17h161d71df3565f810E.llvm.14418932532550506065.exit, label %.backedge .backedge: ; preds = %49, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hb15d5224997fdc23E.exit.i.i.i", %45, %.lr.ph, %42, %"_ZN90_$LT$core..ops..control_flow..ControlFlow$LT$B$C$C$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17h8253aa1e06472b4eE.llvm.18390361427222781017.exit.i.i.i.i" - %.not.not.i = icmp eq i16 %29, 0 + %.not.not.i = icmp eq i16 %31, 0 br i1 %.not.not.i, label %._crit_edge, label %.lr.ph 45: ; preds = %41 diff --git a/bench/diesel-rs/optimized/285i4t9uy6n6phhi.ll b/bench/diesel-rs/optimized/285i4t9uy6n6phhi.ll index a9fe21965b0..9b4ee27ea47 100644 --- a/bench/diesel-rs/optimized/285i4t9uy6n6phhi.ll +++ b/bench/diesel-rs/optimized/285i4t9uy6n6phhi.ll @@ -573,9 +573,10 @@ default.unreachable: ; preds = %20 br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit39.us" "_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit39.us": ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit.us", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit.thread.us", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit.thread53.us" + %.sroa.11.0.i33.us = phi ptr [ %37, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit.thread.us" ], [ undef, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit.us" ], [ undef, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit.thread53.us" ] store i64 %8, ptr %4, align 8, !alias.scope !121, !noalias !124 store ptr %35, ptr %.sroa.6.0..sroa_idx.i36, align 8, !alias.scope !121, !noalias !124 - store ptr %37, ptr %.sroa.11.0..sroa_idx.i37, align 8, !alias.scope !121, !noalias !124 + store ptr %.sroa.11.0.i33.us, ptr %.sroa.11.0..sroa_idx.i37, align 8, !alias.scope !121, !noalias !124 store ptr %40, ptr %41, align 8, !alias.scope !121, !noalias !124 call void @"_ZN6diesel10type_impls6tuples94_$LT$impl$u20$diesel..query_builder..QueryFragment$LT$__DB$GT$$u20$for$u20$$LP$T0$C$T1$RP$$GT$8walk_ast17h9d942ced7b694123E"(ptr noalias nocapture noundef nonnull sret({ i64, [3 x i64] }) align 8 dereferenceable(32) %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %.sroa.044.056.us, ptr noalias nocapture noundef nonnull align 8 dereferenceable(32) %4) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) @@ -787,10 +788,10 @@ default.unreachable: ; preds = %20 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) %31 = load i64, ptr %7, align 8, !range !13, !noundef !14 %32 = icmp eq i64 %31, -9223372036854775798 - br i1 %32, label %56, label %57 + br i1 %32, label %58, label %59 -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit.thread": ; preds = %13, %56 - %.sroa.0.05054 = phi ptr [ %21, %56 ], [ %15, %13 ] +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit.thread": ; preds = %13, %58 + %.sroa.0.05054 = phi ptr [ %21, %58 ], [ %15, %13 ] %33 = icmp eq ptr %.sroa.0.05054, %18 br i1 %33, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.thread", label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.lr.ph" @@ -806,10 +807,18 @@ default.unreachable: ; preds = %20 %.sroa.6.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %5, i64 8 %.sroa.11.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %5, i64 16 %41 = getelementptr inbounds i8, ptr %5, i64 24 - br i1 %switch, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.lr.ph.split.us", label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32" + br i1 %switch, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.lr.ph.split.us", label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.preheader" + +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.preheader": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.lr.ph" + %switch90 = icmp ult i64 %8, 2 + br label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32" "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.lr.ph.split.us": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.lr.ph" - br i1 %9, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.us.us.preheader", label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.us" + br i1 %9, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.us.us.preheader", label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.us.preheader" + +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.us.preheader": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.lr.ph.split.us" + %switch89 = icmp ult i64 %8, 2 + br label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.us" "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.us.us.preheader": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.lr.ph.split.us", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit40.us.us" %.sroa.044.072.us.us = phi ptr [ %42, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit40.us.us" ], [ %.sroa.0.05054, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.lr.ph.split.us" ] @@ -824,7 +833,6 @@ default.unreachable: ; preds = %20 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5), !noalias !139 store i64 2, ptr %5, align 8, !alias.scope !143, !noalias !146 store ptr %35, ptr %.sroa.6.0..sroa_idx.i.i, align 8, !alias.scope !143, !noalias !146 - store ptr %37, ptr %.sroa.11.0..sroa_idx.i.i, align 8, !alias.scope !143, !noalias !146 store ptr %40, ptr %41, align 8, !alias.scope !143, !noalias !146 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4), !noalias !148 call void @"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$15push_bind_param17h6b26971f9cd4ec3fE"(ptr noalias nocapture noundef nonnull sret({ i64, [3 x i64] }) align 8 dereferenceable(32) %4, ptr noalias noundef nonnull align 8 dereferenceable(32) %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %43), !noalias !161 @@ -841,8 +849,8 @@ default.unreachable: ; preds = %20 %47 = icmp eq ptr %42, %18 br i1 %47, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.thread", label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.us.us.preheader" -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.us": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.lr.ph.split.us", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit40.us" - %.sroa.044.072.us = phi ptr [ %48, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit40.us" ], [ %.sroa.0.05054, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.lr.ph.split.us" ] +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.us": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.us.preheader", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit40.us" + %.sroa.044.072.us = phi ptr [ %48, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit40.us" ], [ %.sroa.0.05054, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.us.preheader" ] %48 = getelementptr inbounds i8, ptr %.sroa.044.072.us, i64 8 switch i64 %8, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit.us" [ i64 0, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit.thread.us" @@ -862,68 +870,77 @@ default.unreachable: ; preds = %20 br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit39.thread.us" "_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit39.thread.us": ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit.thread58.us", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit.thread.us", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit.us" + %.sroa.11.0.i3362.us = phi ptr [ undef, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit.us" ], [ undef, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit.thread58.us" ], [ %37, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit.thread.us" ] %49 = load ptr, ptr %.sroa.044.072.us, align 8, !alias.scope !136, !noalias !142, !noundef !14 %.not.i.us = icmp eq ptr %49, null - br i1 %.not.i.us, label %53, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit.i.us" + br i1 %.not.i.us, label %55, label %50 -"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit.i.us": ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit39.thread.us" +50: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit39.thread.us" call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5), !noalias !139 + br i1 %switch89, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit.i.us.sink.split", label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit.i.us" + +"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit.i.us.sink.split": ; preds = %50 + %51 = icmp ne ptr %.sroa.11.0.i3362.us, null + call void @llvm.assume(i1 %51) + br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit.i.us" + +"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit.i.us": ; preds = %50, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit.i.us.sink.split" store i64 %8, ptr %5, align 8, !alias.scope !143, !noalias !146 store ptr %35, ptr %.sroa.6.0..sroa_idx.i.i, align 8, !alias.scope !143, !noalias !146 - store ptr %37, ptr %.sroa.11.0..sroa_idx.i.i, align 8, !alias.scope !143, !noalias !146 + store ptr %.sroa.11.0.i3362.us, ptr %.sroa.11.0..sroa_idx.i.i, align 8, !alias.scope !143, !noalias !146 store ptr %40, ptr %41, align 8, !alias.scope !143, !noalias !146 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4), !noalias !148 call void @"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$15push_bind_param17h6b26971f9cd4ec3fE"(ptr noalias nocapture noundef nonnull sret({ i64, [3 x i64] }) align 8 dereferenceable(32) %4, ptr noalias noundef nonnull align 8 dereferenceable(32) %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %49), !noalias !161 - %50 = load i64, ptr %4, align 8, !range !13, !noalias !148, !noundef !14 - %51 = icmp eq i64 %50, -9223372036854775798 - br i1 %51, label %52, label %.split.us + %52 = load i64, ptr %4, align 8, !range !13, !noalias !148, !noundef !14 + %53 = icmp eq i64 %52, -9223372036854775798 + br i1 %53, label %54, label %.split.us -52: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit.i.us" +54: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit.i.us" call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4), !noalias !148 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5), !noalias !139 switch i64 %8, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit40.us" [ - i64 0, label %54 + i64 0, label %56 i64 4, label %.thread71.us ] -53: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit39.thread.us" +55: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit39.thread.us" switch i64 %8, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit40.us" [ i64 0, label %.thread70.us i64 4, label %.thread71.us ] -.thread70.us: ; preds = %53 +.thread70.us: ; preds = %55 call void @"_ZN140_$LT$diesel..mysql..query_builder..MysqlQueryBuilder$u20$as$u20$diesel..query_builder..QueryBuilder$LT$diesel..mysql..backend..Mysql$GT$$GT$8push_sql17h9e2d6187c4aa6542E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %35, ptr noalias noundef nonnull readonly align 1 @anon.9a124599226d4217bab3c484f8f4e454.3.llvm.2627373389732197180, i64 noundef 7), !noalias !167 - br label %54 + br label %56 -.thread71.us: ; preds = %53, %52 +.thread71.us: ; preds = %55, %54 store i8 0, ptr %35, align 1, !noalias !170 br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit40.us" -54: ; preds = %52, %.thread70.us +56: ; preds = %54, %.thread70.us call void @"_ZN140_$LT$diesel..mysql..query_builder..MysqlQueryBuilder$u20$as$u20$diesel..query_builder..QueryBuilder$LT$diesel..mysql..backend..Mysql$GT$$GT$8push_sql17h9e2d6187c4aa6542E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %35, ptr noalias noundef nonnull readonly align 1 @anon.9c1c825533912ed09d8d2f3c10e218af.2, i64 noundef 1), !noalias !174 br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit40.us" -"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit40.us": ; preds = %53, %54, %.thread71.us, %52 - %55 = icmp eq ptr %48, %18 - br i1 %55, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.thread", label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.us" +"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit40.us": ; preds = %55, %56, %.thread71.us, %54 + %57 = icmp eq ptr %48, %18 + br i1 %57, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.thread", label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.us" -56: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit" +58: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit" call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) br label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit.thread" -57: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit" +59: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit" %.sroa.421.0..sroa_idx = getelementptr inbounds i8, ptr %7, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.223, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.421.0..sroa_idx, i64 24, i1 false) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) store i64 %31, ptr %0, align 8 %.sroa.223.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.223.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.223, i64 24, i1 false) - br label %64 + br label %68 -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.lr.ph", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit40" - %.sroa.044.072 = phi ptr [ %58, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit40" ], [ %.sroa.0.05054, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.lr.ph" ] - %58 = getelementptr inbounds i8, ptr %.sroa.044.072, i64 8 +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.preheader", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit40" + %.sroa.044.072 = phi ptr [ %60, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit40" ], [ %.sroa.0.05054, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.preheader" ] + %60 = getelementptr inbounds i8, ptr %.sroa.044.072, i64 8 switch i64 %8, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit39.thread" [ i64 0, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit.thread" i64 4, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit.thread58" @@ -931,7 +948,7 @@ default.unreachable: ; preds = %20 "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.thread": ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit40", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit40.us", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit40.us.us", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit.thread" store i64 -9223372036854775798, ptr %0, align 8 - br label %64 + br label %68 "_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit.thread": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32" call void @"_ZN140_$LT$diesel..mysql..query_builder..MysqlQueryBuilder$u20$as$u20$diesel..query_builder..QueryBuilder$LT$diesel..mysql..backend..Mysql$GT$$GT$8push_sql17h9e2d6187c4aa6542E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %35, ptr noalias noundef nonnull readonly align 1 @anon.9c1c825533912ed09d8d2f3c10e218af.1, i64 noundef 3), !noalias !166 @@ -942,57 +959,66 @@ default.unreachable: ; preds = %20 br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit39.thread" "_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit39.thread": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit.thread58", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit.thread" - %59 = load ptr, ptr %.sroa.044.072, align 8, !alias.scope !136, !noalias !142, !noundef !14 - %.not.i = icmp eq ptr %59, null - br i1 %.not.i, label %62, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit.i" + %.sroa.11.0.i33.ph = phi ptr [ undef, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit.thread58" ], [ %37, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit.thread" ], [ %37, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32" ] + %61 = load ptr, ptr %.sroa.044.072, align 8, !alias.scope !136, !noalias !142, !noundef !14 + %.not.i = icmp eq ptr %61, null + br i1 %.not.i, label %66, label %62 -"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit.i": ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit39.thread" +62: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit39.thread" call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5), !noalias !139 + br i1 %switch90, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit.i.sink.split", label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit.i" + +"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit.i.sink.split": ; preds = %62 + %63 = icmp ne ptr %.sroa.11.0.i33.ph, null + call void @llvm.assume(i1 %63) + br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit.i" + +"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit.i": ; preds = %62, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit.i.sink.split" store i64 %8, ptr %5, align 8, !alias.scope !143, !noalias !146 store ptr %35, ptr %.sroa.6.0..sroa_idx.i.i, align 8, !alias.scope !143, !noalias !146 - store ptr %37, ptr %.sroa.11.0..sroa_idx.i.i, align 8, !alias.scope !143, !noalias !146 + store ptr %.sroa.11.0.i33.ph, ptr %.sroa.11.0..sroa_idx.i.i, align 8, !alias.scope !143, !noalias !146 store ptr %40, ptr %41, align 8, !alias.scope !143, !noalias !146 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4), !noalias !148 - call void @"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$15push_bind_param17h6b26971f9cd4ec3fE"(ptr noalias nocapture noundef nonnull sret({ i64, [3 x i64] }) align 8 dereferenceable(32) %4, ptr noalias noundef nonnull align 8 dereferenceable(32) %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %59), !noalias !161 - %60 = load i64, ptr %4, align 8, !range !13, !noalias !148, !noundef !14 - %61 = icmp eq i64 %60, -9223372036854775798 - br i1 %61, label %63, label %.split.us + call void @"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$15push_bind_param17h6b26971f9cd4ec3fE"(ptr noalias nocapture noundef nonnull sret({ i64, [3 x i64] }) align 8 dereferenceable(32) %4, ptr noalias noundef nonnull align 8 dereferenceable(32) %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %61), !noalias !161 + %64 = load i64, ptr %4, align 8, !range !13, !noalias !148, !noundef !14 + %65 = icmp eq i64 %64, -9223372036854775798 + br i1 %65, label %67, label %.split.us -62: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit39.thread" +66: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit39.thread" switch i64 %8, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit40" [ i64 0, label %.thread70 i64 4, label %.thread71 ] -.thread70: ; preds = %62 +.thread70: ; preds = %66 call void @"_ZN140_$LT$diesel..mysql..query_builder..MysqlQueryBuilder$u20$as$u20$diesel..query_builder..QueryBuilder$LT$diesel..mysql..backend..Mysql$GT$$GT$8push_sql17h9e2d6187c4aa6542E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %35, ptr noalias noundef nonnull readonly align 1 @anon.9a124599226d4217bab3c484f8f4e454.3.llvm.2627373389732197180, i64 noundef 7), !noalias !167 - br label %65 + br label %69 -63: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit.i" +67: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit.i" call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4), !noalias !148 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5), !noalias !139 switch i64 %8, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit40" [ - i64 0, label %65 + i64 0, label %69 i64 4, label %.thread71 ] -64: ; preds = %57, %.split.us, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.thread" +68: ; preds = %59, %.split.us, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.thread" ret void -65: ; preds = %.thread70, %63 +69: ; preds = %.thread70, %67 call void @"_ZN140_$LT$diesel..mysql..query_builder..MysqlQueryBuilder$u20$as$u20$diesel..query_builder..QueryBuilder$LT$diesel..mysql..backend..Mysql$GT$$GT$8push_sql17h9e2d6187c4aa6542E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %35, ptr noalias noundef nonnull readonly align 1 @anon.9c1c825533912ed09d8d2f3c10e218af.2, i64 noundef 1), !noalias !174 br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit40" -.thread71: ; preds = %62, %63 +.thread71: ; preds = %66, %67 store i8 0, ptr %35, align 1, !noalias !170 br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit40" -"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit40": ; preds = %62, %63, %65, %.thread71 - %66 = icmp eq ptr %58, %18 - br i1 %66, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.thread", label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32" +"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit40": ; preds = %66, %67, %69, %.thread71 + %70 = icmp eq ptr %60, %18 + br i1 %70, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32.thread", label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5c71ed0d3eea317fE.exit32" .split.us: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit.i", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit.i.us", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit.i.us.us" - %.us-phi = phi i64 [ %44, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit.i.us.us" ], [ %50, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit.i.us" ], [ %60, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit.i" ] + %.us-phi = phi i64 [ %44, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit.i.us.us" ], [ %52, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit.i.us" ], [ %64, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit.i" ] %.sroa.46.0..sroa_idx.i.i.i.i = getelementptr inbounds i8, ptr %4, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.229, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.46.0..sroa_idx.i.i.i.i, i64 24, i1 false) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4), !noalias !148 @@ -1000,7 +1026,7 @@ default.unreachable: ; preds = %20 store i64 %.us-phi, ptr %0, align 8 %.sroa.229.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.229.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.229, i64 24, i1 false) - br label %64 + br label %68 } ; Function Attrs: nonlazybind uwtable @@ -1121,9 +1147,10 @@ default.unreachable: ; preds = %20 br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit39.us" "_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit39.us": ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit.us", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit.thread.us", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit.thread53.us" + %.sroa.11.0.i33.us = phi ptr [ %37, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit.thread.us" ], [ undef, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit.us" ], [ undef, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit.thread53.us" ] store i64 %8, ptr %4, align 8, !alias.scope !185, !noalias !188 store ptr %35, ptr %.sroa.6.0..sroa_idx.i36, align 8, !alias.scope !185, !noalias !188 - store ptr %37, ptr %.sroa.11.0..sroa_idx.i37, align 8, !alias.scope !185, !noalias !188 + store ptr %.sroa.11.0.i33.us, ptr %.sroa.11.0..sroa_idx.i37, align 8, !alias.scope !185, !noalias !188 store ptr %40, ptr %41, align 8, !alias.scope !185, !noalias !188 call void @"_ZN6diesel10type_impls6tuples94_$LT$impl$u20$diesel..query_builder..QueryFragment$LT$__DB$GT$$u20$for$u20$$LP$T0$C$T1$RP$$GT$8walk_ast17h8bc9e839e13413c2E"(ptr noalias nocapture noundef nonnull sret({ i64, [3 x i64] }) align 8 dereferenceable(32) %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %.sroa.044.056.us, ptr noalias nocapture noundef nonnull align 8 dereferenceable(32) %4) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) @@ -1382,9 +1409,10 @@ default.unreachable: ; preds = %20 br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit39.us" "_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit39.us": ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit.us", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit.thread.us", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit.thread53.us" + %.sroa.11.0.i33.us = phi ptr [ %37, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit.thread.us" ], [ undef, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit.us" ], [ undef, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit.thread53.us" ] store i64 %8, ptr %4, align 8, !alias.scope !205, !noalias !208 store ptr %35, ptr %.sroa.6.0..sroa_idx.i36, align 8, !alias.scope !205, !noalias !208 - store ptr %37, ptr %.sroa.11.0..sroa_idx.i37, align 8, !alias.scope !205, !noalias !208 + store ptr %.sroa.11.0.i33.us, ptr %.sroa.11.0..sroa_idx.i37, align 8, !alias.scope !205, !noalias !208 store ptr %40, ptr %41, align 8, !alias.scope !205, !noalias !208 call void @"_ZN6diesel10type_impls6tuples94_$LT$impl$u20$diesel..query_builder..QueryFragment$LT$__DB$GT$$u20$for$u20$$LP$T0$C$T1$RP$$GT$8walk_ast17h6d6975ff4356334cE"(ptr noalias nocapture noundef nonnull sret({ i64, [3 x i64] }) align 8 dereferenceable(32) %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %.sroa.044.056.us, ptr noalias nocapture noundef nonnull align 8 dereferenceable(32) %4) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) @@ -1640,9 +1668,10 @@ default.unreachable: ; preds = %20 br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit39.us" "_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h6c627f850c38b860E.exit39.us": ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit.us", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit.thread.us", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit.thread54.us" + %.sroa.11.0.i33.us = phi ptr [ %37, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit.thread.us" ], [ undef, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit.us" ], [ undef, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2124073ec05e7cd0E.exit.thread54.us" ] store i64 %8, ptr %5, align 8, !alias.scope !225, !noalias !228 store ptr %35, ptr %.sroa.6.0..sroa_idx.i36, align 8, !alias.scope !225, !noalias !228 - store ptr %37, ptr %.sroa.11.0..sroa_idx.i37, align 8, !alias.scope !225, !noalias !228 + store ptr %.sroa.11.0.i33.us, ptr %.sroa.11.0..sroa_idx.i37, align 8, !alias.scope !225, !noalias !228 store ptr %40, ptr %41, align 8, !alias.scope !225, !noalias !228 call void @llvm.experimental.noalias.scope.decl(metadata !230) call void @llvm.experimental.noalias.scope.decl(metadata !233) diff --git a/bench/diesel-rs/optimized/28ljtzc1ccz7s5dg.ll b/bench/diesel-rs/optimized/28ljtzc1ccz7s5dg.ll index aaac9a35be8..536037fe20a 100644 --- a/bench/diesel-rs/optimized/28ljtzc1ccz7s5dg.ll +++ b/bench/diesel-rs/optimized/28ljtzc1ccz7s5dg.ll @@ -7,20 +7,21 @@ target triple = "x86_64-unknown-linux-gnu" define hidden { i64, i64 } @"_ZN95_$LT$hashbrown..raw..bitmask..BitMaskIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfbc879f40831e6c4E"(ptr nocapture align 2 %0) unnamed_addr #0 { %2 = load i16, ptr %0, align 2, !noundef !3 %3 = icmp eq i16 %2, 0 - br i1 %3, label %7, label %4 + br i1 %3, label %9, label %4 4: ; preds = %1 - %5 = add i16 %2, -1 - %6 = and i16 %5, %2 - store i16 %6, ptr %0, align 2 - br label %7 + %5 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %2, i1 true) + %6 = zext nneg i16 %5 to i64 + %7 = add i16 %2, -1 + %8 = and i16 %7, %2 + store i16 %8, ptr %0, align 2 + br label %9 -7: ; preds = %1, %4 +9: ; preds = %1, %4 + %.sroa.3.0 = phi i64 [ %6, %4 ], [ undef, %1 ] %.sroa.0.0 = phi i64 [ 1, %4 ], [ 0, %1 ] - %8 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %2, i1 true) - %9 = zext nneg i16 %8 to i64 %10 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %11 = insertvalue { i64, i64 } %10, i64 %9, 1 + %11 = insertvalue { i64, i64 } %10, i64 %.sroa.3.0, 1 ret { i64, i64 } %11 } diff --git a/bench/diesel-rs/optimized/2kerv04pitcced78.ll b/bench/diesel-rs/optimized/2kerv04pitcced78.ll index c4a49a5b93a..78e157d2d8b 100644 --- a/bench/diesel-rs/optimized/2kerv04pitcced78.ll +++ b/bench/diesel-rs/optimized/2kerv04pitcced78.ll @@ -742,13 +742,14 @@ define internal void @"_ZN67_$LT$T$u20$as$u20$diesel..pg..metadata_lookup..PgMet %15 = alloca { { i64, [2 x i64] }, { i64, [2 x i64] } }, align 8 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %15) %16 = icmp eq ptr %4, null - %spec.select = select i1 %16, i64 -9223372036854775807, i64 -9223372036854775808 + %spec.select = select i1 %16, i64 undef, i64 %5 + %spec.select30 = select i1 %16, i64 -9223372036854775807, i64 -9223372036854775808 %17 = getelementptr inbounds i8, ptr %15, i64 24 - store i64 %spec.select, ptr %17, align 8 + store i64 %spec.select30, ptr %17, align 8 %.sroa.5.0..sroa_idx4 = getelementptr inbounds i8, ptr %15, i64 32 store ptr %4, ptr %.sroa.5.0..sroa_idx4, align 8 %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx4.sroa_idx = getelementptr inbounds i8, ptr %15, i64 40 - store i64 %5, ptr %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx4.sroa_idx, align 8 + store i64 %spec.select, ptr %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx4.sroa_idx, align 8 store i64 -9223372036854775808, ptr %15, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %15, i64 8 store ptr %2, ptr %.sroa.4.0..sroa_idx, align 8 @@ -3723,9 +3724,9 @@ define hidden void @_ZN6diesel2pg10connection12PgConnection19with_prepared_query store i32 4, ptr %13, align 8, !noalias !764 %96 = load ptr, ptr %32, align 8, !alias.scope !765, !noalias !768, !noundef !5 %.not.i21.i = icmp eq ptr %96, null - br i1 %.not.i21.i, label %.thread59.i, label %97 + br i1 %.not.i21.i, label %.thread58.i, label %97 -.thread59.i: ; preds = %91 +.thread58.i: ; preds = %91 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13), !noalias !764 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.438.i, ptr noundef nonnull align 8 dereferenceable(32) %92, i64 32, i1 false), !alias.scope !763, !noalias !758 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %17), !noalias !743 @@ -3752,7 +3753,7 @@ define hidden void @_ZN6diesel2pg10connection12PgConnection19with_prepared_query br i1 %101, label %128, label %102 102: ; preds = %100, %.thread.i - %.sroa.6.0.copyload54.i = phi i64 [ %.sroa.6.0.copyload51.i, %.thread.i ], [ %.sroa.6.0.copyload.i, %100 ] + %.sroa.6.0.copyload53.i = phi i64 [ %.sroa.6.0.copyload51.i, %.thread.i ], [ %.sroa.6.0.copyload.i, %100 ] %.sroa.0.0.copyload52.i = phi ptr [ %87, %.thread.i ], [ %.sroa.0.0.copyload.pr.pre.i, %100 ] call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.7.i, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.438.i, i64 32, i1 false), !noalias !743 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %.sroa.438.i) @@ -3762,7 +3763,7 @@ define hidden void @_ZN6diesel2pg10connection12PgConnection19with_prepared_query call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16), !noalias !743 store ptr %.sroa.0.0.copyload52.i, ptr %15, align 8, !noalias !743 %.sroa.6.0..sroa_idx.i53 = getelementptr inbounds i8, ptr %15, i64 40 - store i64 %.sroa.6.0.copyload54.i, ptr %.sroa.6.0..sroa_idx.i53, align 8, !noalias !743 + store i64 %.sroa.6.0.copyload53.i, ptr %.sroa.6.0..sroa_idx.i53, align 8, !noalias !743 call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %14), !noalias !743 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %14, ptr noundef nonnull align 8 dereferenceable(72) %75, i64 72, i1 false), !noalias !771 call void @llvm.experimental.noalias.scope.decl(metadata !772) @@ -3861,7 +3862,7 @@ define hidden void @_ZN6diesel2pg10connection12PgConnection19with_prepared_query call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #12, !noalias !780 unreachable -128: ; preds = %100, %.thread59.i +128: ; preds = %100, %.thread58.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.7.i, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.438.i, i64 32, i1 false), !noalias !743 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %.sroa.438.i) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.7.i, i64 32, i1 false), !noalias !804 @@ -6368,9 +6369,9 @@ define hidden void @_ZN6diesel2pg10connection12PgConnection19with_prepared_query store i32 4, ptr %13, align 8, !noalias !1392 %94 = load ptr, ptr %32, align 8, !alias.scope !1393, !noalias !1396, !noundef !5 %.not.i21.i = icmp eq ptr %94, null - br i1 %.not.i21.i, label %.thread44.i, label %95 + br i1 %.not.i21.i, label %.thread43.i, label %95 -.thread44.i: ; preds = %89 +.thread43.i: ; preds = %89 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13), !noalias !1392 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.431.i, ptr noundef nonnull align 8 dereferenceable(32) %90, i64 32, i1 false), !alias.scope !1391, !noalias !1386 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %17), !noalias !1370 @@ -6397,7 +6398,7 @@ define hidden void @_ZN6diesel2pg10connection12PgConnection19with_prepared_query br i1 %99, label %120, label %100 100: ; preds = %98, %.thread.i - %.sroa.6.0.copyload39.i = phi i64 [ %.sroa.6.0.copyload36.i, %.thread.i ], [ %.sroa.6.0.copyload.i, %98 ] + %.sroa.6.0.copyload38.i = phi i64 [ %.sroa.6.0.copyload36.i, %.thread.i ], [ %.sroa.6.0.copyload.i, %98 ] %.sroa.0.0.copyload37.i = phi ptr [ %85, %.thread.i ], [ %.sroa.0.0.copyload.pr.pre.i, %98 ] call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.7.i, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.431.i, i64 32, i1 false), !noalias !1370 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %.sroa.431.i) @@ -6407,7 +6408,7 @@ define hidden void @_ZN6diesel2pg10connection12PgConnection19with_prepared_query call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16), !noalias !1370 store ptr %.sroa.0.0.copyload37.i, ptr %15, align 8, !noalias !1370 %.sroa.6.0..sroa_idx.i47 = getelementptr inbounds i8, ptr %15, i64 40 - store i64 %.sroa.6.0.copyload39.i, ptr %.sroa.6.0..sroa_idx.i47, align 8, !noalias !1370 + store i64 %.sroa.6.0.copyload38.i, ptr %.sroa.6.0..sroa_idx.i47, align 8, !noalias !1370 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %14), !noalias !1370 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(40) %73, i64 40, i1 false), !noalias !1399 call void @llvm.experimental.noalias.scope.decl(metadata !1400) @@ -6483,7 +6484,7 @@ define hidden void @_ZN6diesel2pg10connection12PgConnection19with_prepared_query call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #12, !noalias !1416 unreachable -120: ; preds = %98, %.thread44.i +120: ; preds = %98, %.thread43.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.7.i, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.431.i, i64 32, i1 false), !noalias !1370 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %.sroa.431.i) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.7.i, i64 32, i1 false), !noalias !1429 @@ -8325,9 +8326,9 @@ define hidden void @_ZN6diesel2pg10connection12PgConnection19with_prepared_query store i32 4, ptr %15, align 8, !noalias !1860 %102 = load ptr, ptr %36, align 8, !alias.scope !1861, !noalias !1864, !noundef !5 %.not.i21.i = icmp eq ptr %102, null - br i1 %.not.i21.i, label %.thread44.i, label %103 + br i1 %.not.i21.i, label %.thread43.i, label %103 -.thread44.i: ; preds = %97 +.thread43.i: ; preds = %97 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15), !noalias !1860 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.431.i, ptr noundef nonnull align 8 dereferenceable(32) %98, i64 32, i1 false), !alias.scope !1859, !noalias !1854 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %18), !noalias !1838 @@ -8354,7 +8355,7 @@ define hidden void @_ZN6diesel2pg10connection12PgConnection19with_prepared_query br i1 %107, label %131, label %108 108: ; preds = %106, %.thread.i - %.sroa.6.0.copyload39.i = phi i64 [ %.sroa.6.0.copyload36.i, %.thread.i ], [ %.sroa.6.0.copyload.i, %106 ] + %.sroa.6.0.copyload38.i = phi i64 [ %.sroa.6.0.copyload36.i, %.thread.i ], [ %.sroa.6.0.copyload.i, %106 ] %.sroa.0.0.copyload37.i = phi ptr [ %93, %.thread.i ], [ %.sroa.0.0.copyload.pr.pre.i, %106 ] call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.7.i, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.431.i, i64 32, i1 false), !noalias !1838 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %.sroa.431.i) @@ -8364,7 +8365,7 @@ define hidden void @_ZN6diesel2pg10connection12PgConnection19with_prepared_query call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17), !noalias !1838 store ptr %.sroa.0.0.copyload37.i, ptr %16, align 8, !noalias !1838 %.sroa.6.0..sroa_idx.i47 = getelementptr inbounds i8, ptr %16, i64 40 - store i64 %.sroa.6.0.copyload39.i, ptr %.sroa.6.0..sroa_idx.i47, align 8, !noalias !1838 + store i64 %.sroa.6.0.copyload38.i, ptr %.sroa.6.0..sroa_idx.i47, align 8, !noalias !1838 %109 = load ptr, ptr %20, align 8, !noalias !1838, !nonnull !5, !align !33, !noundef !5 %110 = load i64, ptr %83, align 8, !noalias !1838, !noundef !5 call void @llvm.experimental.noalias.scope.decl(metadata !1866) @@ -8444,7 +8445,7 @@ define hidden void @_ZN6diesel2pg10connection12PgConnection19with_prepared_query call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #12, !noalias !1882 unreachable -131: ; preds = %106, %.thread44.i +131: ; preds = %106, %.thread43.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.7.i, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.431.i, i64 32, i1 false), !noalias !1838 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %.sroa.431.i) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.7.i, i64 32, i1 false), !noalias !1895 diff --git a/bench/diesel-rs/optimized/2phdoksmzkii6al2.ll b/bench/diesel-rs/optimized/2phdoksmzkii6al2.ll index a3c6fb13aa3..b9d445059c6 100644 --- a/bench/diesel-rs/optimized/2phdoksmzkii6al2.ll +++ b/bench/diesel-rs/optimized/2phdoksmzkii6al2.ll @@ -4130,7 +4130,7 @@ define hidden void @"_ZN6diesel9query_dsl8load_dsl7private31LoadIter$LT$U$C$C$C$ .thread: ; preds = %2 store i64 -9223372036854775797, ptr %0, align 8 - br label %26 + br label %24 8: ; preds = %7 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) @@ -4147,7 +4147,7 @@ define hidden void @"_ZN6diesel9query_dsl8load_dsl7private31LoadIter$LT$U$C$C$C$ %11 = load ptr, ptr %3, align 8, !noalias !1213, !noundef !11 %12 = icmp eq ptr %11, null %13 = getelementptr inbounds i8, ptr %3, i64 8 - br i1 %12, label %17, label %22 + br i1 %12, label %17, label %20 14: ; preds = %7 %.sroa.613.0..sroa_idx = getelementptr inbounds i8, ptr %1, i64 24 @@ -4159,46 +4159,40 @@ define hidden void @"_ZN6diesel9query_dsl8load_dsl7private31LoadIter$LT$U$C$C$C$ store i64 %.sroa.512.0.copyload, ptr %.sroa.58.0..sroa_idx, align 8 %.sroa.69.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 24 store i64 %.sroa.613.0.copyload, ptr %.sroa.69.0..sroa_idx, align 8 - br label %26 + br label %24 15: ; preds = %8 %16 = landingpad { ptr, i32 } cleanup invoke void @"_ZN68_$LT$alloc..rc..Rc$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd4a76f0d652d0743E.llvm.2909037117879540835"(ptr noalias noundef nonnull align 8 dereferenceable(8) %4) - to label %"_ZN4core3ptr55drop_in_place$LT$diesel..pg..connection..row..PgRow$GT$17h9c9de58e3eaf8cf6E.exit" unwind label %24 + to label %"_ZN4core3ptr55drop_in_place$LT$diesel..pg..connection..row..PgRow$GT$17h9c9de58e3eaf8cf6E.exit" unwind label %22 17: ; preds = %.noexc - %18 = load i32, ptr %13, align 8, !noalias !1213, !noundef !11 - %19 = getelementptr inbounds i8, ptr %3, i64 12 - %20 = load i32, ptr %19, align 4, !noalias !1213, !noundef !11 + %18 = load i64, ptr %13, align 8, !noalias !1213 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3), !noalias !1213 - %.sroa.5.8.insert.ext = zext i32 %18 to i64 - %.sroa.5.12.insert.ext = zext i32 %20 to i64 - %.sroa.5.12.insert.shift = shl nuw i64 %.sroa.5.12.insert.ext, 32 - %.sroa.5.12.insert.insert = or disjoint i64 %.sroa.5.12.insert.shift, %.sroa.5.8.insert.ext - %21 = inttoptr i64 %.sroa.5.12.insert.insert to ptr + %19 = inttoptr i64 %18 to ptr br label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h1c527d6657121097E.exit" -22: ; preds = %.noexc - %23 = load ptr, ptr %13, align 8, !noalias !1213, !nonnull !11, !align !12, !noundef !11 +20: ; preds = %.noexc + %21 = load ptr, ptr %13, align 8, !noalias !1213, !nonnull !11, !align !12, !noundef !11 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3), !noalias !1213 br label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h1c527d6657121097E.exit" -"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h1c527d6657121097E.exit": ; preds = %22, %17 - %.sroa.5.031 = phi ptr [ %21, %17 ], [ %23, %22 ] - %.sroa.4.0 = phi ptr [ %21, %17 ], [ %11, %22 ] - %.sink.i = phi i64 [ -9223372036854775798, %17 ], [ -9223372036854775805, %22 ] +"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h1c527d6657121097E.exit": ; preds = %20, %17 + %.sroa.4.0 = phi ptr [ %19, %17 ], [ %11, %20 ] + %.sroa.7.0 = phi ptr [ undef, %17 ], [ %21, %20 ] + %.sink.i = phi i64 [ -9223372036854775798, %17 ], [ -9223372036854775805, %20 ] store i64 %.sink.i, ptr %0, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 store ptr %.sroa.4.0, ptr %.sroa.4.0..sroa_idx, align 8 %.sroa.7.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 - store ptr %.sroa.5.031, ptr %.sroa.7.0..sroa_idx, align 8 + store ptr %.sroa.7.0, ptr %.sroa.7.0..sroa_idx, align 8 call void @"_ZN68_$LT$alloc..rc..Rc$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd4a76f0d652d0743E.llvm.2909037117879540835"(ptr noalias noundef nonnull align 8 dereferenceable(8) %4) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) - br label %26 + br label %24 -24: ; preds = %15 - %25 = landingpad { ptr, i32 } +22: ; preds = %15 + %23 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #32 unreachable @@ -4206,7 +4200,7 @@ define hidden void @"_ZN6diesel9query_dsl8load_dsl7private31LoadIter$LT$U$C$C$C$ "_ZN4core3ptr55drop_in_place$LT$diesel..pg..connection..row..PgRow$GT$17h9c9de58e3eaf8cf6E.exit": ; preds = %15 resume { ptr, i32 } %16 -26: ; preds = %14, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h1c527d6657121097E.exit", %.thread +24: ; preds = %14, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h1c527d6657121097E.exit", %.thread ret void } @@ -4276,14 +4270,14 @@ define hidden void @"_ZN128_$LT$diesel..query_dsl..load_dsl..private..LoadIter$L br label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h1c527d6657121097E.exit.i" "_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h1c527d6657121097E.exit.i": ; preds = %28, %25 - %.sroa.5.031.i = phi ptr [ %27, %25 ], [ %29, %28 ] %.sroa.4.0.i = phi ptr [ %27, %25 ], [ %20, %28 ] + %.sroa.7.0.i = phi ptr [ undef, %25 ], [ %29, %28 ] %.sink.i.i = phi i64 [ -9223372036854775798, %25 ], [ -9223372036854775805, %28 ] store i64 %.sink.i.i, ptr %0, align 8, !alias.scope !1223, !noalias !1226 %.sroa.4.0..sroa_idx.i1 = getelementptr inbounds i8, ptr %0, i64 8 store ptr %.sroa.4.0.i, ptr %.sroa.4.0..sroa_idx.i1, align 8, !alias.scope !1223, !noalias !1226 %.sroa.7.0..sroa_idx.i = getelementptr inbounds i8, ptr %0, i64 16 - store ptr %.sroa.5.031.i, ptr %.sroa.7.0..sroa_idx.i, align 8, !alias.scope !1223, !noalias !1226 + store ptr %.sroa.7.0.i, ptr %.sroa.7.0..sroa_idx.i, align 8, !alias.scope !1223, !noalias !1226 call void @"_ZN68_$LT$alloc..rc..Rc$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd4a76f0d652d0743E.llvm.2909037117879540835"(ptr noalias noundef nonnull align 8 dereferenceable(8) %4), !noalias !1228 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4), !noalias !1228 br label %"_ZN6diesel9query_dsl8load_dsl7private31LoadIter$LT$U$C$C$C$ST$C$DB$GT$7map_row17h9a99ae3c023dff78E.llvm.12760481706496575883.exit" @@ -4546,7 +4540,7 @@ define void @"_ZN93_$LT$diesel..mysql..connection..MysqlConnection$u20$as$u20$di %42 = getelementptr inbounds i8, ptr %20, i64 136 %43 = load i32, ptr %42, align 8, !range !1296, !noalias !1294, !noundef !11 %44 = icmp eq i32 %43, 6 - br i1 %44, label %.thread90.i, label %45 + br i1 %44, label %.thread88.i, label %45 45: ; preds = %41 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(136) %.sroa.0.i, ptr noundef nonnull align 8 dereferenceable(136) %20, i64 136, i1 false), !noalias !1294 @@ -4563,7 +4557,7 @@ define void @"_ZN93_$LT$diesel..mysql..connection..MysqlConnection$u20$as$u20$di invoke void @_ZN6diesel5mysql10connection3raw13RawConnection7connect17h3a6ee84bb3b182dfE(ptr noalias nocapture noundef nonnull sret({ i64, [4 x i64] }) align 8 dereferenceable(40) %19, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %22, ptr noalias noundef nonnull readonly align 8 dereferenceable(144) %21) to label %49 unwind label %47, !noalias !1291 -.thread90.i: ; preds = %41 +.thread88.i: ; preds = %41 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %.sroa.0.i, ptr noundef nonnull align 8 dereferenceable(40) %20, i64 40, i1 false), !noalias !1294 call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %20), !noalias !1294 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %25, ptr noundef nonnull align 8 dereferenceable(40) %.sroa.0.i, i64 40, i1 false), !noalias !1297 @@ -4972,8 +4966,8 @@ define void @"_ZN93_$LT$diesel..mysql..connection..MysqlConnection$u20$as$u20$di call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22), !noalias !1294 br label %159 -155: ; preds = %._crit_edge.i, %.thread90.i - %156 = phi ptr [ %.pre.i, %._crit_edge.i ], [ %36, %.thread90.i ] +155: ; preds = %._crit_edge.i, %.thread88.i + %156 = phi ptr [ %.pre.i, %._crit_edge.i ], [ %36, %.thread88.i ] invoke void @mysql_close(ptr noundef nonnull %156) to label %.noexc26 unwind label %34 @@ -7007,36 +7001,36 @@ define hidden void @"_ZN126_$LT$diesel..sqlite..connection..functions..FunctionR %4 = getelementptr inbounds i8, ptr %1, i64 8 %5 = load i64, ptr %4, align 8, !alias.scope !1964, !noundef !11 %6 = icmp ugt i64 %5, %2 - br i1 %6, label %7, label %12 + %7 = trunc i64 %2 to i32 + br i1 %6, label %8, label %13 -7: ; preds = %3 - %8 = load ptr, ptr %1, align 8, !nonnull !11, !noundef !11 - %9 = getelementptr inbounds i8, ptr %8, i64 16 - %10 = load i64, ptr %9, align 8, !noundef !11 - %11 = icmp ult i64 %10, 9223372036854775807 - br i1 %11, label %13, label %17 +8: ; preds = %3 + %9 = load ptr, ptr %1, align 8, !nonnull !11, !noundef !11 + %10 = getelementptr inbounds i8, ptr %9, i64 16 + %11 = load i64, ptr %10, align 8, !noundef !11 + %12 = icmp ult i64 %11, 9223372036854775807 + br i1 %12, label %14, label %17 -12: ; preds = %3 +13: ; preds = %3 store ptr null, ptr %0, align 8 br label %18 -13: ; preds = %7 - %14 = add nuw nsw i64 %10, 1 - store i64 %14, ptr %9, align 8 - %15 = getelementptr inbounds i8, ptr %8, i64 24 - %16 = trunc i64 %2 to i32 - store ptr %15, ptr %0, align 8 +14: ; preds = %8 + %15 = add nuw nsw i64 %11, 1 + store i64 %15, ptr %10, align 8 + %16 = getelementptr inbounds i8, ptr %9, i64 24 + store ptr %16, ptr %0, align 8 %.sroa.43.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 - store ptr %9, ptr %.sroa.43.0..sroa_idx, align 8 + store ptr %10, ptr %.sroa.43.0..sroa_idx, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 - store i32 %16, ptr %.sroa.5.0..sroa_idx, align 8 + store i32 %7, ptr %.sroa.5.0..sroa_idx, align 8 br label %18 -17: ; preds = %7 +17: ; preds = %8 tail call void @_ZN4core4cell30panic_already_mutably_borrowed17hbc333334528bd302E(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.79a827165c543c4357c85996b6252779.104.llvm.12760481706496575883) #29 unreachable -18: ; preds = %13, %12 +18: ; preds = %14, %13 ret void } diff --git a/bench/diesel-rs/optimized/309lo11gmt11hfmy.ll b/bench/diesel-rs/optimized/309lo11gmt11hfmy.ll index cb311d2c092..68b5cf0e411 100644 --- a/bench/diesel-rs/optimized/309lo11gmt11hfmy.ll +++ b/bench/diesel-rs/optimized/309lo11gmt11hfmy.ll @@ -347,17 +347,21 @@ define hidden void @"_ZN6diesel10type_impls6tuples87_$LT$impl$u20$diesel..insert %3 = load ptr, ptr %1, align 8, !align !117, !noundef !4 %4 = getelementptr inbounds i8, ptr %1, i64 8 %5 = load i64, ptr %4, align 8 + %.not.i.i = icmp eq ptr %3, null + %spec.select.i.i = select i1 %.not.i.i, i64 undef, i64 %5 %6 = getelementptr inbounds i8, ptr %1, i64 16 %7 = load ptr, ptr %6, align 8, !align !117, !noundef !4 %8 = getelementptr inbounds i8, ptr %1, i64 24 %9 = load i64, ptr %8, align 8 + %.not.i.i4 = icmp eq ptr %7, null + %spec.select.i.i5 = select i1 %.not.i.i4, i64 undef, i64 %9 store ptr %3, ptr %0, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 - store i64 %5, ptr %.sroa.4.0..sroa_idx, align 8 + store i64 %spec.select.i.i, ptr %.sroa.4.0..sroa_idx, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 store ptr %7, ptr %.sroa.5.0..sroa_idx, align 8 %.sroa.6.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 24 - store i64 %9, ptr %.sroa.6.0..sroa_idx, align 8 + store i64 %spec.select.i.i5, ptr %.sroa.6.0..sroa_idx, align 8 ret void } @@ -933,11 +937,11 @@ define hidden void @"_ZN88_$LT$diesel..row..private..PartialRow$LT$R$GT$$u20$as$ %7 = add i64 %6, %2 %8 = tail call { i64, i64 } @"_ZN89_$LT$diesel..pg..connection..row..PgRow$u20$as$u20$diesel..row..RowIndex$LT$usize$GT$$GT$3idx17hf04f0fa525faa18aE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %4, i64 noundef %7), !noalias !325 %.fca.0.extract.i = extractvalue { i64, i64 } %8, 0 - %.fca.1.extract.i = extractvalue { i64, i64 } %8, 1 %switch.i = icmp eq i64 %.fca.0.extract.i, 0 br i1 %switch.i, label %"_ZN102_$LT$diesel..pg..connection..row..PgRow$u20$as$u20$diesel..row..Row$LT$diesel..pg..backend..Pg$GT$$GT$3get17h0402c8a5c2508349E.exit", label %"_ZN96_$LT$diesel..row..private..PartialRow$LT$R$GT$$u20$as$u20$diesel..row..RowIndex$LT$usize$GT$$GT$3idx17hd3a390ed58beaa9bE.llvm.768955472827859366.exit" "_ZN96_$LT$diesel..row..private..PartialRow$LT$R$GT$$u20$as$u20$diesel..row..RowIndex$LT$usize$GT$$GT$3idx17hd3a390ed58beaa9bE.llvm.768955472827859366.exit": ; preds = %3 + %.fca.1.extract.i = extractvalue { i64, i64 } %8, 1 %.not.i.i = icmp ule i64 %6, %.fca.1.extract.i %9 = getelementptr inbounds i8, ptr %1, i64 16 %10 = load i64, ptr %9, align 8, !alias.scope !328, !noalias !331 @@ -992,8 +996,10 @@ define hidden noundef zeroext i1 @"_ZN90_$LT$core..ops..control_flow..ControlFlo ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define hidden { ptr, i64 } @"_ZN91_$LT$core..option..Option$LT$T$GT$$u20$as$u20$diesel..insertable..Insertable$LT$Tab$GT$$GT$6values17h6ee5f0d8ab2ac7c1E.llvm.768955472827859366"(ptr noalias noundef readonly align 1 %0, i64 %1) unnamed_addr #8 { + %.not.i = icmp eq ptr %0, null + %spec.select.i = select i1 %.not.i, i64 undef, i64 %1 %3 = insertvalue { ptr, i64 } poison, ptr %0, 0 - %4 = insertvalue { ptr, i64 } %3, i64 %1, 1 + %4 = insertvalue { ptr, i64 } %3, i64 %spec.select.i, 1 ret { ptr, i64 } %4 } @@ -1009,8 +1015,10 @@ define hidden noundef align 8 dereferenceable_or_null(16) ptr @"_ZN91_$LT$core.. ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define hidden { ptr, i64 } @"_ZN91_$LT$core..option..Option$LT$T$GT$$u20$as$u20$diesel..insertable..Insertable$LT$Tab$GT$$GT$6values17hd4e97b6eae3204e6E.llvm.768955472827859366"(ptr noalias noundef readonly align 1 %0, i64 %1) unnamed_addr #8 { + %.not.i = icmp eq ptr %0, null + %spec.select.i = select i1 %.not.i, i64 undef, i64 %1 %3 = insertvalue { ptr, i64 } poison, ptr %0, 0 - %4 = insertvalue { ptr, i64 } %3, i64 %1, 1 + %4 = insertvalue { ptr, i64 } %3, i64 %spec.select.i, 1 ret { ptr, i64 } %4 } @@ -1040,11 +1048,11 @@ define hidden { i64, i64 } @"_ZN96_$LT$diesel..row..private..PartialRow$LT$R$GT$ %6 = add i64 %5, %1 %7 = tail call { i64, i64 } @"_ZN89_$LT$diesel..pg..connection..row..PgRow$u20$as$u20$diesel..row..RowIndex$LT$usize$GT$$GT$3idx17hf04f0fa525faa18aE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %3, i64 noundef %6) %.fca.0.extract = extractvalue { i64, i64 } %7, 0 - %.fca.1.extract = extractvalue { i64, i64 } %7, 1 %switch = icmp eq i64 %.fca.0.extract, 0 br i1 %switch, label %12, label %8 8: ; preds = %2 + %.fca.1.extract = extractvalue { i64, i64 } %7, 1 %.not.i = icmp ule i64 %5, %.fca.1.extract %9 = getelementptr inbounds i8, ptr %0, i64 16 %10 = load i64, ptr %9, align 8, !alias.scope !339, !noalias !342 @@ -1054,9 +1062,10 @@ define hidden { i64, i64 } @"_ZN96_$LT$diesel..row..private..PartialRow$LT$R$GT$ br label %12 12: ; preds = %2, %8 + %.sroa.4.1 = phi i64 [ %.fca.1.extract, %8 ], [ undef, %2 ] %.sroa.0.1 = phi i64 [ %.sroa.0.0, %8 ], [ 0, %2 ] %13 = insertvalue { i64, i64 } poison, i64 %.sroa.0.1, 0 - %14 = insertvalue { i64, i64 } %13, i64 %.fca.1.extract, 1 + %14 = insertvalue { i64, i64 } %13, i64 %.sroa.4.1, 1 ret { i64, i64 } %14 } diff --git a/bench/diesel-rs/optimized/34937hqexlfu44a8.ll b/bench/diesel-rs/optimized/34937hqexlfu44a8.ll index 27c208ea682..7657553a671 100644 --- a/bench/diesel-rs/optimized/34937hqexlfu44a8.ll +++ b/bench/diesel-rs/optimized/34937hqexlfu44a8.ll @@ -1455,17 +1455,21 @@ define hidden void @"_ZN6diesel10type_impls6tuples87_$LT$impl$u20$diesel..insert %3 = load ptr, ptr %1, align 8, !align !24, !noundef !4 %4 = getelementptr inbounds i8, ptr %1, i64 8 %5 = load i64, ptr %4, align 8 + %.not.i.i = icmp eq ptr %3, null + %spec.select.i.i = select i1 %.not.i.i, i64 undef, i64 %5 %6 = getelementptr inbounds i8, ptr %1, i64 16 %7 = load ptr, ptr %6, align 8, !align !24, !noundef !4 %8 = getelementptr inbounds i8, ptr %1, i64 24 %9 = load i64, ptr %8, align 8 + %.not.i.i4 = icmp eq ptr %7, null + %spec.select.i.i5 = select i1 %.not.i.i4, i64 undef, i64 %9 store ptr %3, ptr %0, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 - store i64 %5, ptr %.sroa.4.0..sroa_idx, align 8 + store i64 %spec.select.i.i, ptr %.sroa.4.0..sroa_idx, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 store ptr %7, ptr %.sroa.5.0..sroa_idx, align 8 %.sroa.6.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 24 - store i64 %9, ptr %.sroa.6.0..sroa_idx, align 8 + store i64 %spec.select.i.i5, ptr %.sroa.6.0..sroa_idx, align 8 ret void } @@ -1899,8 +1903,10 @@ define hidden noundef zeroext i1 @"_ZN90_$LT$core..ops..control_flow..ControlFlo ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define hidden { ptr, i64 } @"_ZN91_$LT$core..option..Option$LT$T$GT$$u20$as$u20$diesel..insertable..Insertable$LT$Tab$GT$$GT$6values17h14c1298669ddea00E.llvm.18390361427222781017"(ptr noalias noundef readonly align 1 %0, i64 %1) unnamed_addr #9 { + %.not.i = icmp eq ptr %0, null + %spec.select.i = select i1 %.not.i, i64 undef, i64 %1 %3 = insertvalue { ptr, i64 } poison, ptr %0, 0 - %4 = insertvalue { ptr, i64 } %3, i64 %1, 1 + %4 = insertvalue { ptr, i64 } %3, i64 %spec.select.i, 1 ret { ptr, i64 } %4 } @@ -1921,8 +1927,10 @@ define hidden noundef align 8 dereferenceable_or_null(16) ptr @"_ZN91_$LT$core.. ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define hidden { ptr, i64 } @"_ZN91_$LT$core..option..Option$LT$T$GT$$u20$as$u20$diesel..insertable..Insertable$LT$Tab$GT$$GT$6values17he87c49db4bf6afceE.llvm.18390361427222781017"(ptr noalias noundef readonly align 1 %0, i64 %1) unnamed_addr #9 { + %.not.i = icmp eq ptr %0, null + %spec.select.i = select i1 %.not.i, i64 undef, i64 %1 %3 = insertvalue { ptr, i64 } poison, ptr %0, 0 - %4 = insertvalue { ptr, i64 } %3, i64 %1, 1 + %4 = insertvalue { ptr, i64 } %3, i64 %spec.select.i, 1 ret { ptr, i64 } %4 } diff --git a/bench/diesel-rs/optimized/3dccw9pyyyb3bfq5.ll b/bench/diesel-rs/optimized/3dccw9pyyyb3bfq5.ll index 6fcb07b6a9a..3688948dc92 100644 --- a/bench/diesel-rs/optimized/3dccw9pyyyb3bfq5.ll +++ b/bench/diesel-rs/optimized/3dccw9pyyyb3bfq5.ll @@ -466,17 +466,21 @@ define hidden void @"_ZN6diesel10type_impls6tuples87_$LT$impl$u20$diesel..insert %3 = load ptr, ptr %1, align 8, !align !5, !noundef !4 %4 = getelementptr inbounds i8, ptr %1, i64 8 %5 = load i64, ptr %4, align 8 + %.not.i.i = icmp eq ptr %3, null + %spec.select.i.i = select i1 %.not.i.i, i64 undef, i64 %5 %6 = getelementptr inbounds i8, ptr %1, i64 16 %7 = load ptr, ptr %6, align 8, !align !5, !noundef !4 %8 = getelementptr inbounds i8, ptr %1, i64 24 %9 = load i64, ptr %8, align 8 + %.not.i.i4 = icmp eq ptr %7, null + %spec.select.i.i5 = select i1 %.not.i.i4, i64 undef, i64 %9 store ptr %3, ptr %0, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 - store i64 %5, ptr %.sroa.4.0..sroa_idx, align 8 + store i64 %spec.select.i.i, ptr %.sroa.4.0..sroa_idx, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 store ptr %7, ptr %.sroa.5.0..sroa_idx, align 8 %.sroa.6.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 24 - store i64 %9, ptr %.sroa.6.0..sroa_idx, align 8 + store i64 %spec.select.i.i5, ptr %.sroa.6.0..sroa_idx, align 8 ret void } @@ -500,15 +504,19 @@ define hidden void @"_ZN80_$LT$core..core_arch..x86..__m128i$u20$as$u20$core..co ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define hidden { ptr, i64 } @"_ZN91_$LT$core..option..Option$LT$T$GT$$u20$as$u20$diesel..insertable..Insertable$LT$Tab$GT$$GT$6values17h28b851558368683aE.llvm.10274694778451236312"(ptr noalias noundef readonly align 1 %0, i64 %1) unnamed_addr #11 { + %.not.i = icmp eq ptr %0, null + %spec.select.i = select i1 %.not.i, i64 undef, i64 %1 %3 = insertvalue { ptr, i64 } poison, ptr %0, 0 - %4 = insertvalue { ptr, i64 } %3, i64 %1, 1 + %4 = insertvalue { ptr, i64 } %3, i64 %spec.select.i, 1 ret { ptr, i64 } %4 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define hidden { ptr, i64 } @"_ZN91_$LT$core..option..Option$LT$T$GT$$u20$as$u20$diesel..insertable..Insertable$LT$Tab$GT$$GT$6values17h2caddc15ae14d706E.llvm.10274694778451236312"(ptr noalias noundef readonly align 1 %0, i64 %1) unnamed_addr #11 { + %.not.i = icmp eq ptr %0, null + %spec.select.i = select i1 %.not.i, i64 undef, i64 %1 %3 = insertvalue { ptr, i64 } poison, ptr %0, 0 - %4 = insertvalue { ptr, i64 } %3, i64 %1, 1 + %4 = insertvalue { ptr, i64 } %3, i64 %spec.select.i, 1 ret { ptr, i64 } %4 } @@ -544,20 +552,21 @@ define hidden noundef align 1 dereferenceable_or_null(1) ptr @"_ZN91_$LT$core..s define hidden { i64, i64 } @"_ZN95_$LT$hashbrown..raw..bitmask..BitMaskIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h806c2d75f94c2f57E.llvm.10274694778451236312"(ptr noalias nocapture noundef align 2 dereferenceable(2) %0) unnamed_addr #8 { %2 = load i16, ptr %0, align 2, !noundef !4 %.not.not = icmp eq i16 %2, 0 - br i1 %.not.not, label %6, label %3 + br i1 %.not.not, label %8, label %3 3: ; preds = %1 - %4 = add i16 %2, -1 - %5 = and i16 %4, %2 - store i16 %5, ptr %0, align 2 - br label %6 + %4 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %2, i1 true) + %5 = zext nneg i16 %4 to i64 + %6 = add i16 %2, -1 + %7 = and i16 %6, %2 + store i16 %7, ptr %0, align 2 + br label %8 -6: ; preds = %1, %3 +8: ; preds = %1, %3 + %.sroa.3.0 = phi i64 [ %5, %3 ], [ undef, %1 ] %.sroa.0.0 = phi i64 [ 1, %3 ], [ 0, %1 ] - %7 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %2, i1 true) - %8 = zext nneg i16 %7 to i64 %9 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %10 = insertvalue { i64, i64 } %9, i64 %8, 1 + %10 = insertvalue { i64, i64 } %9, i64 %.sroa.3.0, 1 ret { i64, i64 } %10 } @@ -697,28 +706,28 @@ define hidden { i64, i64 } @_ZN9hashbrown3raw13RawTableInner10find_inner17h161d7 %.sroa.9.0 = phi i64 [ 0, %4 ], [ %30, %29 ] %.sroa.01.0 = phi i64 [ %9, %4 ], [ %32, %29 ] %13 = getelementptr inbounds i8, ptr %10, i64 %.sroa.01.0 - %.0.copyload.i32 = load <16 x i8>, ptr %13, align 1, !noalias !116 - %14 = icmp eq <16 x i8> %.0.copyload.i32, %.15.vec.insert.i + %.0.copyload.i33 = load <16 x i8>, ptr %13, align 1, !noalias !116 + %14 = icmp eq <16 x i8> %.0.copyload.i33, %.15.vec.insert.i %15 = bitcast <16 x i1> %14 to i16 br label %16 16: ; preds = %20, %12 - %.0 = phi i16 [ %15, %12 ], [ %22, %20 ] + %.0 = phi i16 [ %15, %12 ], [ %24, %20 ] %.not.not.i = icmp eq i16 %.0, 0 br i1 %.not.not.i, label %17, label %20 17: ; preds = %16 - %18 = icmp eq <16 x i8> %.0.copyload.i32, + %18 = icmp eq <16 x i8> %.0.copyload.i33, %19 = bitcast <16 x i1> %18 to i16 %.not = icmp eq i16 %19, 0 - br i1 %.not, label %29, label %.loopexit33 + br i1 %.not, label %29, label %.loopexit34 20: ; preds = %16 - %21 = add i16 %.0, -1 - %22 = and i16 %21, %.0 - %23 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.0, i1 true) - %24 = zext nneg i16 %23 to i64 - %25 = add i64 %.sroa.01.0, %24 + %21 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.0, i1 true) + %22 = zext nneg i16 %21 to i64 + %23 = add i16 %.0, -1 + %24 = and i16 %23, %.0 + %25 = add i64 %.sroa.01.0, %22 %26 = and i64 %25, %8 %27 = load ptr, ptr %11, align 8, !invariant.load !4, !nonnull !4 %28 = tail call noundef zeroext i1 %27(ptr noundef nonnull align 1 %2, i64 noundef %26) @@ -731,11 +740,11 @@ define hidden { i64, i64 } @_ZN9hashbrown3raw13RawTableInner10find_inner17h161d7 br label %12 .loopexit: ; preds = %20 - %33 = insertvalue { i64, i64 } { i64 1, i64 poison }, i64 %24, 1 - br label %.loopexit33 + %33 = insertvalue { i64, i64 } { i64 1, i64 poison }, i64 %22, 1 + br label %.loopexit34 -.loopexit33: ; preds = %17, %.loopexit - %34 = phi { i64, i64 } [ %33, %.loopexit ], [ { i64 0, i64 16 }, %17 ] +.loopexit34: ; preds = %17, %.loopexit + %34 = phi { i64, i64 } [ %33, %.loopexit ], [ { i64 0, i64 undef }, %17 ] %.sroa.3.0 = phi i64 [ %26, %.loopexit ], [ undef, %17 ] %35 = insertvalue { i64, i64 } %34, i64 %.sroa.3.0, 1 ret { i64, i64 } %35 @@ -781,25 +790,25 @@ define hidden noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17hd4e7 %.sroa.9.0.i = phi i64 [ 0, %3 ], [ %55, %54 ] %.sroa.01.0.i = phi i64 [ %9, %3 ], [ %57, %54 ] %23 = getelementptr inbounds i8, ptr %10, i64 %.sroa.01.0.i - %.0.copyload.i31 = load <16 x i8>, ptr %23, align 1, !noalias !124 - %24 = icmp eq <16 x i8> %.0.copyload.i31, %.15.vec.insert.i + %.0.copyload.i33 = load <16 x i8>, ptr %23, align 1, !noalias !124 + %24 = icmp eq <16 x i8> %.0.copyload.i33, %.15.vec.insert.i %25 = bitcast <16 x i1> %24 to i16 - %.not.not.i34 = icmp eq i16 %25, 0 - br i1 %.not.not.i34, label %._crit_edge, label %.lr.ph + %.not.not.i36 = icmp eq i16 %25, 0 + br i1 %.not.not.i36, label %._crit_edge, label %.lr.ph ._crit_edge: ; preds = %.backedge, %22 - %26 = icmp eq <16 x i8> %.0.copyload.i31, + %26 = icmp eq <16 x i8> %.0.copyload.i33, %27 = bitcast <16 x i1> %26 to i16 %.not.i = icmp eq i16 %27, 0 br i1 %.not.i, label %54, label %_ZN9hashbrown3raw13RawTableInner10find_inner17h161d71df3565f810E.llvm.10274694778451236312.exit .lr.ph: ; preds = %22, %.backedge - %.02135 = phi i16 [ %29, %.backedge ], [ %25, %22 ] - %28 = add i16 %.02135, -1 - %29 = and i16 %28, %.02135 - %30 = call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.02135, i1 true) - %31 = zext nneg i16 %30 to i64 - %32 = add i64 %.sroa.01.0.i, %31 + %.02237 = phi i16 [ %31, %.backedge ], [ %25, %22 ] + %28 = call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.02237, i1 true) + %29 = zext nneg i16 %28 to i64 + %30 = add i16 %.02237, -1 + %31 = and i16 %30, %.02237 + %32 = add i64 %.sroa.01.0.i, %29 %33 = and i64 %32, %8 %34 = sub nsw i64 0, %33 %35 = getelementptr inbounds { { [3 x i64], i64, [2 x i64] }, ptr }, ptr %10, i64 %34 @@ -822,7 +831,7 @@ define hidden noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17hd4e7 br i1 %44, label %_ZN9hashbrown3raw13RawTableInner10find_inner17h161d71df3565f810E.llvm.10274694778451236312.exit, label %.backedge .backedge: ; preds = %49, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h6dc26a077a3e0663E.exit.i.i.i", %45, %.lr.ph, %42, %"_ZN90_$LT$core..ops..control_flow..ControlFlow$LT$B$C$C$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17hbc8ecb96583b806aE.llvm.1394800311566639068.exit.i.i.i.i" - %.not.not.i = icmp eq i16 %29, 0 + %.not.not.i = icmp eq i16 %31, 0 br i1 %.not.not.i, label %._crit_edge, label %.lr.ph 45: ; preds = %41 diff --git a/bench/diesel-rs/optimized/3k6gak4fsx54o1kk.ll b/bench/diesel-rs/optimized/3k6gak4fsx54o1kk.ll index d46f35ca7b9..37ff347ff34 100644 --- a/bench/diesel-rs/optimized/3k6gak4fsx54o1kk.ll +++ b/bench/diesel-rs/optimized/3k6gak4fsx54o1kk.ll @@ -930,11 +930,11 @@ define internal fastcc void @"_ZN74_$LT$T$u20$as$u20$diesel..deserialize..FromSt %10 = load i64, ptr %9, align 8, !alias.scope !137, !noalias !135, !noundef !4 %11 = tail call { i64, i64 } @"_ZN106_$LT$diesel..mysql..connection..stmt..iterator..MysqlRow$u20$as$u20$diesel..row..RowIndex$LT$usize$GT$$GT$3idx17hfa4eb5a5f2a604a1E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %8, i64 noundef %10), !noalias !138 %.fca.0.extract.i.i = extractvalue { i64, i64 } %11, 0 - %.fca.1.extract.i.i = extractvalue { i64, i64 } %11, 1 %switch.i.i = icmp eq i64 %.fca.0.extract.i.i, 0 br i1 %switch.i.i, label %"_ZN88_$LT$diesel..row..private..PartialRow$LT$R$GT$$u20$as$u20$diesel..row..Row$LT$DB$GT$$GT$3get17h45f7076ab9d38389E.exit.thread", label %"_ZN96_$LT$diesel..row..private..PartialRow$LT$R$GT$$u20$as$u20$diesel..row..RowIndex$LT$usize$GT$$GT$3idx17h6b8c56600d97012cE.llvm.15051594395156961261.exit.i" "_ZN96_$LT$diesel..row..private..PartialRow$LT$R$GT$$u20$as$u20$diesel..row..RowIndex$LT$usize$GT$$GT$3idx17h6b8c56600d97012cE.llvm.15051594395156961261.exit.i": ; preds = %2 + %.fca.1.extract.i.i = extractvalue { i64, i64 } %11, 1 %.not.i.i.i = icmp ule i64 %10, %.fca.1.extract.i.i %12 = getelementptr inbounds i8, ptr %1, i64 16 %13 = load i64, ptr %12, align 8, !alias.scope !139, !noalias !142 @@ -1078,11 +1078,11 @@ define hidden void @"_ZN88_$LT$diesel..row..private..PartialRow$LT$R$GT$$u20$as$ %7 = add i64 %6, %2 %8 = tail call { i64, i64 } @"_ZN106_$LT$diesel..mysql..connection..stmt..iterator..MysqlRow$u20$as$u20$diesel..row..RowIndex$LT$usize$GT$$GT$3idx17hfa4eb5a5f2a604a1E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %4, i64 noundef %7), !noalias !183 %.fca.0.extract.i = extractvalue { i64, i64 } %8, 0 - %.fca.1.extract.i = extractvalue { i64, i64 } %8, 1 %switch.i = icmp eq i64 %.fca.0.extract.i, 0 br i1 %switch.i, label %"_ZN96_$LT$diesel..row..private..PartialRow$LT$R$GT$$u20$as$u20$diesel..row..RowIndex$LT$usize$GT$$GT$3idx17h6b8c56600d97012cE.llvm.15051594395156961261.exit.thread", label %"_ZN96_$LT$diesel..row..private..PartialRow$LT$R$GT$$u20$as$u20$diesel..row..RowIndex$LT$usize$GT$$GT$3idx17h6b8c56600d97012cE.llvm.15051594395156961261.exit" "_ZN96_$LT$diesel..row..private..PartialRow$LT$R$GT$$u20$as$u20$diesel..row..RowIndex$LT$usize$GT$$GT$3idx17h6b8c56600d97012cE.llvm.15051594395156961261.exit": ; preds = %3 + %.fca.1.extract.i = extractvalue { i64, i64 } %8, 1 %.not.i.i = icmp ule i64 %6, %.fca.1.extract.i %9 = getelementptr inbounds i8, ptr %1, i64 16 %10 = load i64, ptr %9, align 8, !alias.scope !186, !noalias !189 @@ -1110,11 +1110,11 @@ define hidden { i64, i64 } @"_ZN96_$LT$diesel..row..private..PartialRow$LT$R$GT$ %6 = add i64 %5, %1 %7 = tail call { i64, i64 } @"_ZN106_$LT$diesel..mysql..connection..stmt..iterator..MysqlRow$u20$as$u20$diesel..row..RowIndex$LT$usize$GT$$GT$3idx17hfa4eb5a5f2a604a1E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %3, i64 noundef %6) %.fca.0.extract = extractvalue { i64, i64 } %7, 0 - %.fca.1.extract = extractvalue { i64, i64 } %7, 1 %switch = icmp eq i64 %.fca.0.extract, 0 br i1 %switch, label %12, label %8 8: ; preds = %2 + %.fca.1.extract = extractvalue { i64, i64 } %7, 1 %.not.i = icmp ule i64 %5, %.fca.1.extract %9 = getelementptr inbounds i8, ptr %0, i64 16 %10 = load i64, ptr %9, align 8, !alias.scope !191, !noalias !194 @@ -1124,9 +1124,10 @@ define hidden { i64, i64 } @"_ZN96_$LT$diesel..row..private..PartialRow$LT$R$GT$ br label %12 12: ; preds = %2, %8 + %.sroa.4.1 = phi i64 [ %.fca.1.extract, %8 ], [ undef, %2 ] %.sroa.0.1 = phi i64 [ %.sroa.0.0, %8 ], [ 0, %2 ] %13 = insertvalue { i64, i64 } poison, i64 %.sroa.0.1, 0 - %14 = insertvalue { i64, i64 } %13, i64 %.fca.1.extract, 1 + %14 = insertvalue { i64, i64 } %13, i64 %.sroa.4.1, 1 ret { i64, i64 } %14 } diff --git a/bench/diesel-rs/optimized/4dmkc4an6cvf22v6.ll b/bench/diesel-rs/optimized/4dmkc4an6cvf22v6.ll index d4aac384d34..e554f1077b3 100644 --- a/bench/diesel-rs/optimized/4dmkc4an6cvf22v6.ll +++ b/bench/diesel-rs/optimized/4dmkc4an6cvf22v6.ll @@ -6088,19 +6088,19 @@ define hidden { ptr, i64 } @_ZN6diesel2pg10connection6result8PgResult11column_na 10: ; preds = %2 %.sroa.08.0.copyload = load i64, ptr %9, align 8 - %.sroa.5.0..0.1.sroa_idx = getelementptr inbounds i8, ptr %9, i64 16 - %.sroa.5.0.copyload = load i64, ptr %.sroa.5.0..0.1.sroa_idx, align 8 %switch = icmp eq i64 %.sroa.08.0.copyload, 0 br i1 %switch, label %11, label %14 11: ; preds = %14, %10, %2 - %.sroa.4.0 = phi i64 [ undef, %2 ], [ %.sroa.5.0.copyload, %10 ], [ %.sroa.5.0.copyload, %14 ] - %.sroa.0.0 = phi ptr [ null, %2 ], [ null, %10 ], [ %.sroa.49.0.copyload, %14 ] + %.sroa.4.0 = phi i64 [ undef, %2 ], [ %.sroa.5.0.copyload, %14 ], [ undef, %10 ] + %.sroa.0.0 = phi ptr [ null, %2 ], [ %.sroa.49.0.copyload, %14 ], [ null, %10 ] %12 = insertvalue { ptr, i64 } poison, ptr %.sroa.0.0, 0 %13 = insertvalue { ptr, i64 } %12, i64 %.sroa.4.0, 1 ret { ptr, i64 } %13 14: ; preds = %10 + %.sroa.5.0..0.1.sroa_idx = getelementptr inbounds i8, ptr %9, i64 16 + %.sroa.5.0.copyload = load i64, ptr %.sroa.5.0..0.1.sroa_idx, align 8 %.sroa.49.0..0.1.sroa_idx = getelementptr inbounds i8, ptr %9, i64 8 %.sroa.49.0.copyload = load ptr, ptr %.sroa.49.0..0.1.sroa_idx, align 8 br label %11 @@ -6433,7 +6433,7 @@ define { i64, i64 } @"_ZN99_$LT$diesel..sqlite..connection..row..SqliteRow$u20$a %11 = getelementptr inbounds i8, ptr %6, i64 24 %12 = load i64, ptr %11, align 8, !range !116, !noundef !4 %13 = icmp eq i64 %12, 2 - br i1 %13, label %24, label %15 + br i1 %13, label %23, label %15 14: ; preds = %3 tail call void @_ZN4core4cell22panic_already_borrowed17h3ef59d0d58797532E(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.6616c9a785e1c7a4e8813f8139290c13.62) #29 @@ -6448,7 +6448,7 @@ define { i64, i64 } @"_ZN99_$LT$diesel..sqlite..connection..row..SqliteRow$u20$a %.0.i.i.i = select i1 %trunc.i.i.i, ptr %17, ptr %16 %18 = load ptr, ptr %.0.i.i.i, align 8, !noalias !1289, !nonnull !4, !noundef !4 %19 = invoke noundef i32 @sqlite3_column_count(ptr noundef nonnull %18) - to label %.noexc unwind label %46 + to label %.noexc unwind label %45 .noexc: ; preds = %15 store i32 0, ptr %5, align 4, !noalias !1284 @@ -6461,84 +6461,85 @@ define { i64, i64 } @"_ZN99_$LT$diesel..sqlite..connection..row..SqliteRow$u20$a %.sroa.53.0..sroa_idx.i = getelementptr inbounds i8, ptr %4, i64 16 store i64 %2, ptr %.sroa.53.0..sroa_idx.i, align 8, !noalias !1284 %21 = invoke { i32, i32 } @_ZN4core4iter6traits8iterator8Iterator8try_fold17h96668452fd8632deE.llvm.3868854263495710559(ptr noalias noundef nonnull align 4 dereferenceable(8) %5, ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %4) - to label %_ZN6diesel6sqlite10connection4stmt12StatementUse21index_for_column_name17h95d7329acf197d11E.exit unwind label %46 + to label %_ZN6diesel6sqlite10connection4stmt12StatementUse21index_for_column_name17h95d7329acf197d11E.exit unwind label %45 _ZN6diesel6sqlite10connection4stmt12StatementUse21index_for_column_name17h95d7329acf197d11E.exit: ; preds = %.noexc %.fca.0.extract.i = extractvalue { i32, i32 } %21, 0 - %.fca.1.extract.i = extractvalue { i32, i32 } %21, 1 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4), !noalias !1284 %switch.i = icmp ne i32 %.fca.0.extract.i, 0 - %22 = sext i32 %.fca.1.extract.i to i64 - %.sroa.3.0.i = select i1 %switch.i, i64 %22, i64 undef - %.sroa.0.0.i13 = zext i1 %switch.i to i64 + %.fca.1.extract.i = extractvalue { i32, i32 } %21, 1 + %narrow.i = select i1 %switch.i, i32 %.fca.1.extract.i, i32 0 + %.sroa.5.0.i = sext i32 %narrow.i to i64 + %spec.select.i = select i1 %switch.i, i64 %.sroa.5.0.i, i64 undef + %spec.select7.i = zext i1 %switch.i to i64 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5), !noalias !1284 %.pre = load i64, ptr %7, align 8, !noalias !1290 - %23 = add i64 %.pre, 1 + %22 = add i64 %.pre, 1 br label %.loopexit -24: ; preds = %10 - %25 = getelementptr inbounds i8, ptr %6, i64 56 - %26 = load ptr, ptr %25, align 8, !nonnull !4, !noundef !4 - %27 = getelementptr inbounds i8, ptr %6, i64 64 - %28 = load i64, ptr %27, align 8, !noundef !4 - %.idx = mul nsw i64 %28, 24 - %29 = getelementptr i8, ptr %26, i64 %.idx - %.ptr20 = getelementptr i8, ptr %29, i64 16 - %30 = icmp eq i64 %28, 0 - br i1 %30, label %.loopexit, label %.lr.ph.i.preheader - -.lr.ph.i.preheader: ; preds = %24 - %.ptr = getelementptr inbounds i8, ptr %26, i64 16 +23: ; preds = %10 + %24 = getelementptr inbounds i8, ptr %6, i64 56 + %25 = load ptr, ptr %24, align 8, !nonnull !4, !noundef !4 + %26 = getelementptr inbounds i8, ptr %6, i64 64 + %27 = load i64, ptr %26, align 8, !noundef !4 + %.idx = mul nsw i64 %27, 24 + %28 = getelementptr i8, ptr %25, i64 %.idx + %.ptr19 = getelementptr i8, ptr %28, i64 16 + %29 = icmp eq i64 %27, 0 + br i1 %29, label %.loopexit, label %.lr.ph.i.preheader + +.lr.ph.i.preheader: ; preds = %23 + %.ptr = getelementptr inbounds i8, ptr %25, i64 16 br label %.lr.ph.i .lr.ph.i: ; preds = %.lr.ph.i.preheader, %"_ZN99_$LT$diesel..sqlite..connection..row..SqliteRow$u20$as$u20$diesel..row..RowIndex$LT$$RF$str$GT$$GT$3idx28_$u7b$$u7b$closure$u7d$$u7d$17hdc2c8359ef3f1e28E.exit.thread.i" - %.014.i = phi i64 [ %41, %"_ZN99_$LT$diesel..sqlite..connection..row..SqliteRow$u20$as$u20$diesel..row..RowIndex$LT$$RF$str$GT$$GT$3idx28_$u7b$$u7b$closure$u7d$$u7d$17hdc2c8359ef3f1e28E.exit.thread.i" ], [ 0, %.lr.ph.i.preheader ] - %31 = phi ptr [ %32, %"_ZN99_$LT$diesel..sqlite..connection..row..SqliteRow$u20$as$u20$diesel..row..RowIndex$LT$$RF$str$GT$$GT$3idx28_$u7b$$u7b$closure$u7d$$u7d$17hdc2c8359ef3f1e28E.exit.thread.i" ], [ %.ptr, %.lr.ph.i.preheader ] - %32 = getelementptr inbounds i8, ptr %31, i64 24 + %.013.i = phi i64 [ %40, %"_ZN99_$LT$diesel..sqlite..connection..row..SqliteRow$u20$as$u20$diesel..row..RowIndex$LT$$RF$str$GT$$GT$3idx28_$u7b$$u7b$closure$u7d$$u7d$17hdc2c8359ef3f1e28E.exit.thread.i" ], [ 0, %.lr.ph.i.preheader ] + %30 = phi ptr [ %31, %"_ZN99_$LT$diesel..sqlite..connection..row..SqliteRow$u20$as$u20$diesel..row..RowIndex$LT$$RF$str$GT$$GT$3idx28_$u7b$$u7b$closure$u7d$$u7d$17hdc2c8359ef3f1e28E.exit.thread.i" ], [ %.ptr, %.lr.ph.i.preheader ] + %31 = getelementptr inbounds i8, ptr %30, i64 24 tail call void @llvm.experimental.noalias.scope.decl(metadata !1297) - %33 = load i64, ptr %31, align 8, !range !56, !alias.scope !1297, !noalias !1300, !noundef !4 - %34 = icmp eq i64 %33, -9223372036854775808 - br i1 %34, label %"_ZN99_$LT$diesel..sqlite..connection..row..SqliteRow$u20$as$u20$diesel..row..RowIndex$LT$$RF$str$GT$$GT$3idx28_$u7b$$u7b$closure$u7d$$u7d$17hdc2c8359ef3f1e28E.exit.thread.i", label %35 - -35: ; preds = %.lr.ph.i - %36 = getelementptr inbounds i8, ptr %31, i64 16 - %37 = load i64, ptr %36, align 8, !alias.scope !1297, !noalias !1300, !noundef !4 - %.not.i.i.i = icmp eq i64 %37, %2 + %32 = load i64, ptr %30, align 8, !range !56, !alias.scope !1297, !noalias !1300, !noundef !4 + %33 = icmp eq i64 %32, -9223372036854775808 + br i1 %33, label %"_ZN99_$LT$diesel..sqlite..connection..row..SqliteRow$u20$as$u20$diesel..row..RowIndex$LT$$RF$str$GT$$GT$3idx28_$u7b$$u7b$closure$u7d$$u7d$17hdc2c8359ef3f1e28E.exit.thread.i", label %34 + +34: ; preds = %.lr.ph.i + %35 = getelementptr inbounds i8, ptr %30, i64 16 + %36 = load i64, ptr %35, align 8, !alias.scope !1297, !noalias !1300, !noundef !4 + %.not.i.i.i = icmp eq i64 %36, %2 br i1 %.not.i.i.i, label %"_ZN99_$LT$diesel..sqlite..connection..row..SqliteRow$u20$as$u20$diesel..row..RowIndex$LT$$RF$str$GT$$GT$3idx28_$u7b$$u7b$closure$u7d$$u7d$17hdc2c8359ef3f1e28E.exit.i", label %"_ZN99_$LT$diesel..sqlite..connection..row..SqliteRow$u20$as$u20$diesel..row..RowIndex$LT$$RF$str$GT$$GT$3idx28_$u7b$$u7b$closure$u7d$$u7d$17hdc2c8359ef3f1e28E.exit.thread.i" -"_ZN99_$LT$diesel..sqlite..connection..row..SqliteRow$u20$as$u20$diesel..row..RowIndex$LT$$RF$str$GT$$GT$3idx28_$u7b$$u7b$closure$u7d$$u7d$17hdc2c8359ef3f1e28E.exit.i": ; preds = %35 - %38 = getelementptr inbounds i8, ptr %31, i64 8 - %39 = load ptr, ptr %38, align 8, !alias.scope !1297, !noalias !1300, !nonnull !4, !noundef !4 - %bcmp.i.i.i = tail call i32 @bcmp(ptr nonnull readonly %39, ptr nonnull readonly %1, i64 %2), !alias.scope !1304, !noalias !1308 - %40 = icmp eq i32 %bcmp.i.i.i, 0 - br i1 %40, label %43, label %"_ZN99_$LT$diesel..sqlite..connection..row..SqliteRow$u20$as$u20$diesel..row..RowIndex$LT$$RF$str$GT$$GT$3idx28_$u7b$$u7b$closure$u7d$$u7d$17hdc2c8359ef3f1e28E.exit.thread.i" - -"_ZN99_$LT$diesel..sqlite..connection..row..SqliteRow$u20$as$u20$diesel..row..RowIndex$LT$$RF$str$GT$$GT$3idx28_$u7b$$u7b$closure$u7d$$u7d$17hdc2c8359ef3f1e28E.exit.thread.i": ; preds = %"_ZN99_$LT$diesel..sqlite..connection..row..SqliteRow$u20$as$u20$diesel..row..RowIndex$LT$$RF$str$GT$$GT$3idx28_$u7b$$u7b$closure$u7d$$u7d$17hdc2c8359ef3f1e28E.exit.i", %35, %.lr.ph.i - %41 = add nuw nsw i64 %.014.i, 1 - %42 = icmp eq ptr %32, %.ptr20 - br i1 %42, label %.loopexit, label %.lr.ph.i - -43: ; preds = %"_ZN99_$LT$diesel..sqlite..connection..row..SqliteRow$u20$as$u20$diesel..row..RowIndex$LT$$RF$str$GT$$GT$3idx28_$u7b$$u7b$closure$u7d$$u7d$17hdc2c8359ef3f1e28E.exit.i" - %44 = icmp ult i64 %.014.i, %28 - tail call void @llvm.assume(i1 %44) +"_ZN99_$LT$diesel..sqlite..connection..row..SqliteRow$u20$as$u20$diesel..row..RowIndex$LT$$RF$str$GT$$GT$3idx28_$u7b$$u7b$closure$u7d$$u7d$17hdc2c8359ef3f1e28E.exit.i": ; preds = %34 + %37 = getelementptr inbounds i8, ptr %30, i64 8 + %38 = load ptr, ptr %37, align 8, !alias.scope !1297, !noalias !1300, !nonnull !4, !noundef !4 + %bcmp.i.i.i = tail call i32 @bcmp(ptr nonnull readonly %38, ptr nonnull readonly %1, i64 %2), !alias.scope !1304, !noalias !1308 + %39 = icmp eq i32 %bcmp.i.i.i, 0 + br i1 %39, label %42, label %"_ZN99_$LT$diesel..sqlite..connection..row..SqliteRow$u20$as$u20$diesel..row..RowIndex$LT$$RF$str$GT$$GT$3idx28_$u7b$$u7b$closure$u7d$$u7d$17hdc2c8359ef3f1e28E.exit.thread.i" + +"_ZN99_$LT$diesel..sqlite..connection..row..SqliteRow$u20$as$u20$diesel..row..RowIndex$LT$$RF$str$GT$$GT$3idx28_$u7b$$u7b$closure$u7d$$u7d$17hdc2c8359ef3f1e28E.exit.thread.i": ; preds = %"_ZN99_$LT$diesel..sqlite..connection..row..SqliteRow$u20$as$u20$diesel..row..RowIndex$LT$$RF$str$GT$$GT$3idx28_$u7b$$u7b$closure$u7d$$u7d$17hdc2c8359ef3f1e28E.exit.i", %34, %.lr.ph.i + %40 = add nuw nsw i64 %.013.i, 1 + %41 = icmp eq ptr %31, %.ptr19 + br i1 %41, label %.loopexit, label %.lr.ph.i + +42: ; preds = %"_ZN99_$LT$diesel..sqlite..connection..row..SqliteRow$u20$as$u20$diesel..row..RowIndex$LT$$RF$str$GT$$GT$3idx28_$u7b$$u7b$closure$u7d$$u7d$17hdc2c8359ef3f1e28E.exit.i" + %43 = icmp ult i64 %.013.i, %27 + tail call void @llvm.assume(i1 %43) br label %.loopexit -.loopexit: ; preds = %"_ZN99_$LT$diesel..sqlite..connection..row..SqliteRow$u20$as$u20$diesel..row..RowIndex$LT$$RF$str$GT$$GT$3idx28_$u7b$$u7b$closure$u7d$$u7d$17hdc2c8359ef3f1e28E.exit.thread.i", %24, %43, %_ZN6diesel6sqlite10connection4stmt12StatementUse21index_for_column_name17h95d7329acf197d11E.exit - %45 = phi i64 [ %23, %_ZN6diesel6sqlite10connection4stmt12StatementUse21index_for_column_name17h95d7329acf197d11E.exit ], [ 0, %43 ], [ 0, %24 ], [ 0, %"_ZN99_$LT$diesel..sqlite..connection..row..SqliteRow$u20$as$u20$diesel..row..RowIndex$LT$$RF$str$GT$$GT$3idx28_$u7b$$u7b$closure$u7d$$u7d$17hdc2c8359ef3f1e28E.exit.thread.i" ] - %.sroa.0.0.i15.pn = phi i64 [ %.sroa.0.0.i13, %_ZN6diesel6sqlite10connection4stmt12StatementUse21index_for_column_name17h95d7329acf197d11E.exit ], [ 1, %43 ], [ 0, %24 ], [ 0, %"_ZN99_$LT$diesel..sqlite..connection..row..SqliteRow$u20$as$u20$diesel..row..RowIndex$LT$$RF$str$GT$$GT$3idx28_$u7b$$u7b$closure$u7d$$u7d$17hdc2c8359ef3f1e28E.exit.thread.i" ] - %.013.i.pn = phi i64 [ %.sroa.3.0.i, %_ZN6diesel6sqlite10connection4stmt12StatementUse21index_for_column_name17h95d7329acf197d11E.exit ], [ %.014.i, %43 ], [ 0, %24 ], [ %41, %"_ZN99_$LT$diesel..sqlite..connection..row..SqliteRow$u20$as$u20$diesel..row..RowIndex$LT$$RF$str$GT$$GT$3idx28_$u7b$$u7b$closure$u7d$$u7d$17hdc2c8359ef3f1e28E.exit.thread.i" ] - %.pn21 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i15.pn, 0 - %.pn = insertvalue { i64, i64 } %.pn21, i64 %.013.i.pn, 1 - store i64 %45, ptr %7, align 8, !noalias !1290 +.loopexit: ; preds = %"_ZN99_$LT$diesel..sqlite..connection..row..SqliteRow$u20$as$u20$diesel..row..RowIndex$LT$$RF$str$GT$$GT$3idx28_$u7b$$u7b$closure$u7d$$u7d$17hdc2c8359ef3f1e28E.exit.thread.i", %23, %42, %_ZN6diesel6sqlite10connection4stmt12StatementUse21index_for_column_name17h95d7329acf197d11E.exit + %44 = phi i64 [ %22, %_ZN6diesel6sqlite10connection4stmt12StatementUse21index_for_column_name17h95d7329acf197d11E.exit ], [ 0, %42 ], [ 0, %23 ], [ 0, %"_ZN99_$LT$diesel..sqlite..connection..row..SqliteRow$u20$as$u20$diesel..row..RowIndex$LT$$RF$str$GT$$GT$3idx28_$u7b$$u7b$closure$u7d$$u7d$17hdc2c8359ef3f1e28E.exit.thread.i" ] + %.sroa.0.0.i14.pn = phi i64 [ %spec.select7.i, %_ZN6diesel6sqlite10connection4stmt12StatementUse21index_for_column_name17h95d7329acf197d11E.exit ], [ 1, %42 ], [ 0, %23 ], [ 0, %"_ZN99_$LT$diesel..sqlite..connection..row..SqliteRow$u20$as$u20$diesel..row..RowIndex$LT$$RF$str$GT$$GT$3idx28_$u7b$$u7b$closure$u7d$$u7d$17hdc2c8359ef3f1e28E.exit.thread.i" ] + %.sroa.3.0.i.pn = phi i64 [ %spec.select.i, %_ZN6diesel6sqlite10connection4stmt12StatementUse21index_for_column_name17h95d7329acf197d11E.exit ], [ %.013.i, %42 ], [ undef, %23 ], [ undef, %"_ZN99_$LT$diesel..sqlite..connection..row..SqliteRow$u20$as$u20$diesel..row..RowIndex$LT$$RF$str$GT$$GT$3idx28_$u7b$$u7b$closure$u7d$$u7d$17hdc2c8359ef3f1e28E.exit.thread.i" ] + %.pn20 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i14.pn, 0 + %.pn = insertvalue { i64, i64 } %.pn20, i64 %.sroa.3.0.i.pn, 1 + store i64 %44, ptr %7, align 8, !noalias !1290 ret { i64, i64 } %.pn -46: ; preds = %15, %.noexc - %47 = landingpad { ptr, i32 } +45: ; preds = %15, %.noexc + %46 = landingpad { ptr, i32 } cleanup - %48 = load i64, ptr %7, align 8, !noalias !1309, !noundef !4 - %49 = add i64 %48, 1 - store i64 %49, ptr %7, align 8, !noalias !1309 - resume { ptr, i32 } %47 + %47 = load i64, ptr %7, align 8, !noalias !1309, !noundef !4 + %48 = add i64 %47, 1 + store i64 %48, ptr %7, align 8, !noalias !1309 + resume { ptr, i32 } %46 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/diesel-rs/optimized/53pwara59c5lk385.ll b/bench/diesel-rs/optimized/53pwara59c5lk385.ll index 1551f45c572..8135d4efd46 100644 --- a/bench/diesel-rs/optimized/53pwara59c5lk385.ll +++ b/bench/diesel-rs/optimized/53pwara59c5lk385.ll @@ -36,29 +36,27 @@ define hidden void @"_ZN122_$LT$diesel..query_builder..from_clause..FromClause$L %.sroa.4.0.copyload = load ptr, ptr %.sroa.4.0..sroa_idx, align 8 switch i64 %6, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2035ba7c3ba8b49bE.exit" [ i64 0, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2035ba7c3ba8b49bE.exit.thread" - i64 4, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2035ba7c3ba8b49bE.exit.thread19" + i64 4, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2035ba7c3ba8b49bE.exit.thread16" ] "_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2035ba7c3ba8b49bE.exit.thread": ; preds = %3 tail call void @"_ZN128_$LT$diesel..pg..query_builder..PgQueryBuilder$u20$as$u20$diesel..query_builder..QueryBuilder$LT$diesel..pg..backend..Pg$GT$$GT$8push_sql17ha3d2d20ec2d05c78E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %.sroa.4.0.copyload, ptr noalias noundef nonnull readonly align 1 @anon.8c13d85eadb3f3b02c348f0f5e9a09cb.0.llvm.3499718862566202072, i64 noundef 6), !noalias !6 %.sroa.7.0..sroa_idx5 = getelementptr inbounds i8, ptr %2, i64 16 - %7 = load <2 x ptr>, ptr %.sroa.7.0..sroa_idx5, align 8 + %.sroa.7.0.copyload6 = load ptr, ptr %.sroa.7.0..sroa_idx5, align 8 %.sroa.10.0..sroa_idx9 = getelementptr inbounds i8, ptr %2, i64 32 %.sroa.10.0.copyload10 = load ptr, ptr %.sroa.10.0..sroa_idx9, align 8 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %.sroa.28.i) tail call void @"_ZN128_$LT$diesel..pg..query_builder..PgQueryBuilder$u20$as$u20$diesel..query_builder..QueryBuilder$LT$diesel..pg..backend..Pg$GT$$GT$8push_sql17ha3d2d20ec2d05c78E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %.sroa.4.0.copyload, ptr noalias noundef nonnull readonly align 1 @anon.f9ac536754fecfcff4bd65263d4dca5c.0.llvm.15230849155374873684, i64 noundef 1), !noalias !9 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5), !noalias !16 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %4), !noalias !16 - %8 = extractelement <2 x ptr> %7, i64 0 - %9 = icmp ne ptr %8, null - tail call void @llvm.assume(i1 %9) + %7 = icmp ne ptr %.sroa.7.0.copyload6, null + tail call void @llvm.assume(i1 %7) + %8 = insertelement <2 x ptr> , ptr %.sroa.7.0.copyload6, i64 0 br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17hfb364271f3bd36b9E.exit.i" -"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2035ba7c3ba8b49bE.exit.thread19": ; preds = %3 - %.sroa.7.0..sroa_idx22 = getelementptr inbounds i8, ptr %2, i64 16 - %10 = load <2 x ptr>, ptr %.sroa.7.0..sroa_idx22, align 8 - %.sroa.10.0..sroa_idx26 = getelementptr inbounds i8, ptr %2, i64 32 - %.sroa.10.0.copyload27 = load ptr, ptr %.sroa.10.0..sroa_idx26, align 8 +"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2035ba7c3ba8b49bE.exit.thread16": ; preds = %3 + %.sroa.10.0..sroa_idx23 = getelementptr inbounds i8, ptr %2, i64 32 + %.sroa.10.0.copyload24 = load ptr, ptr %.sroa.10.0..sroa_idx23, align 8 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %.sroa.28.i) store i8 0, ptr %.sroa.4.0.copyload, align 1, !noalias !17 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5), !noalias !16 @@ -67,75 +65,69 @@ define hidden void @"_ZN122_$LT$diesel..query_builder..from_clause..FromClause$L "_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2035ba7c3ba8b49bE.exit": ; preds = %3 %.sroa.7.0..sroa_idx = getelementptr inbounds i8, ptr %2, i64 16 - %11 = load <2 x ptr>, ptr %.sroa.7.0..sroa_idx, align 8 + %9 = load <2 x ptr>, ptr %.sroa.7.0..sroa_idx, align 8 %.sroa.10.0..sroa_idx = getelementptr inbounds i8, ptr %2, i64 32 %.sroa.10.0.copyload = load ptr, ptr %.sroa.10.0..sroa_idx, align 8 tail call void @llvm.experimental.noalias.scope.decl(metadata !19) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %.sroa.28.i) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5), !noalias !16 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %4), !noalias !16 - %12 = and i64 %6, 6 - %switch.i = icmp eq i64 %12, 2 - br i1 %switch.i, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17hfb364271f3bd36b9E.exit.i", label %13 - -13: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2035ba7c3ba8b49bE.exit" - %14 = extractelement <2 x ptr> %11, i64 0 - %15 = icmp ne ptr %14, null - tail call void @llvm.assume(i1 %15) - %16 = extractelement <2 x ptr> %11, i64 1 - %17 = icmp ne ptr %16, null - tail call void @llvm.assume(i1 %17) + %10 = and i64 %6, 6 + %switch.i = icmp eq i64 %10, 2 + %11 = insertelement <2 x i1> poison, i1 %switch.i, i64 0 + %12 = shufflevector <2 x i1> %11, <2 x i1> poison, <2 x i32> zeroinitializer + %13 = select <2 x i1> %12, <2 x ptr> undef, <2 x ptr> %9 br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17hfb364271f3bd36b9E.exit.i" -"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17hfb364271f3bd36b9E.exit.i": ; preds = %13, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2035ba7c3ba8b49bE.exit", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2035ba7c3ba8b49bE.exit.thread19", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2035ba7c3ba8b49bE.exit.thread" - %.sroa.10.0.copyload17 = phi ptr [ %.sroa.10.0.copyload, %13 ], [ %.sroa.10.0.copyload, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2035ba7c3ba8b49bE.exit" ], [ %.sroa.10.0.copyload27, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2035ba7c3ba8b49bE.exit.thread19" ], [ %.sroa.10.0.copyload10, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2035ba7c3ba8b49bE.exit.thread" ] - %18 = phi <2 x ptr> [ %11, %13 ], [ %11, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2035ba7c3ba8b49bE.exit" ], [ %10, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2035ba7c3ba8b49bE.exit.thread19" ], [ %7, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2035ba7c3ba8b49bE.exit.thread" ] - %19 = icmp ne ptr %.sroa.4.0.copyload, null - tail call void @llvm.assume(i1 %19) - %20 = icmp ne ptr %.sroa.10.0.copyload17, null - tail call void @llvm.assume(i1 %20) +"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17hfb364271f3bd36b9E.exit.i": ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2035ba7c3ba8b49bE.exit", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2035ba7c3ba8b49bE.exit.thread16", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2035ba7c3ba8b49bE.exit.thread" + %.sroa.10.0.copyload14 = phi ptr [ %.sroa.10.0.copyload10, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2035ba7c3ba8b49bE.exit.thread" ], [ %.sroa.10.0.copyload24, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2035ba7c3ba8b49bE.exit.thread16" ], [ %.sroa.10.0.copyload, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2035ba7c3ba8b49bE.exit" ] + %14 = phi <2 x ptr> [ %8, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2035ba7c3ba8b49bE.exit.thread" ], [ undef, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2035ba7c3ba8b49bE.exit.thread16" ], [ %13, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2035ba7c3ba8b49bE.exit" ] + %15 = icmp ne ptr %.sroa.4.0.copyload, null + tail call void @llvm.assume(i1 %15) + %16 = icmp ne ptr %.sroa.10.0.copyload14, null + tail call void @llvm.assume(i1 %16) store i64 %6, ptr %4, align 8, !alias.scope !20, !noalias !23 %.sroa.6.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %4, i64 8 store ptr %.sroa.4.0.copyload, ptr %.sroa.6.0..sroa_idx.i.i, align 8, !alias.scope !20, !noalias !23 %.sroa.11.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %4, i64 16 - store <2 x ptr> %18, ptr %.sroa.11.0..sroa_idx.i.i, align 8, !alias.scope !20, !noalias !23 - %21 = getelementptr inbounds i8, ptr %4, i64 32 - store ptr %.sroa.10.0.copyload17, ptr %21, align 8, !alias.scope !20, !noalias !23 + store <2 x ptr> %14, ptr %.sroa.11.0..sroa_idx.i.i, align 8, !alias.scope !20, !noalias !23 + %17 = getelementptr inbounds i8, ptr %4, i64 32 + store ptr %.sroa.10.0.copyload14, ptr %17, align 8, !alias.scope !20, !noalias !23 call void @"_ZN123_$LT$diesel..query_builder..nodes..InfixNode$LT$T$C$U$C$M$GT$$u20$as$u20$diesel..query_builder..QueryFragment$LT$DB$GT$$GT$8walk_ast17h4ab9928b404cb220E.llvm.15230849155374873684"(ptr noalias nocapture noundef nonnull sret({ i64, [3 x i64] }) align 8 dereferenceable(32) %5, ptr noalias noundef nonnull readonly align 1 %1, ptr noalias nocapture noundef nonnull align 8 dereferenceable(40) %4), !noalias !25 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4), !noalias !16 - %22 = load i64, ptr %5, align 8, !range !26, !noalias !16, !noundef !5 - %23 = icmp eq i64 %22, -9223372036854775798 - br i1 %23, label %24, label %27 + %18 = load i64, ptr %5, align 8, !range !26, !noalias !16, !noundef !5 + %19 = icmp eq i64 %18, -9223372036854775798 + br i1 %19, label %20, label %23 -24: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17hfb364271f3bd36b9E.exit.i" +20: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17hfb364271f3bd36b9E.exit.i" call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5), !noalias !16 switch i64 %6, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2035ba7c3ba8b49bE.exit9.i" [ - i64 0, label %25 - i64 4, label %26 + i64 0, label %21 + i64 4, label %22 ] -25: ; preds = %24 +21: ; preds = %20 tail call void @"_ZN128_$LT$diesel..pg..query_builder..PgQueryBuilder$u20$as$u20$diesel..query_builder..QueryBuilder$LT$diesel..pg..backend..Pg$GT$$GT$8push_sql17ha3d2d20ec2d05c78E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %.sroa.4.0.copyload, ptr noalias noundef nonnull readonly align 1 @anon.f9ac536754fecfcff4bd65263d4dca5c.1.llvm.15230849155374873684, i64 noundef 1), !noalias !27 br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2035ba7c3ba8b49bE.exit9.i" -26: ; preds = %24 +22: ; preds = %20 store i8 0, ptr %.sroa.4.0.copyload, align 1, !noalias !30 br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2035ba7c3ba8b49bE.exit9.i" -"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2035ba7c3ba8b49bE.exit9.i": ; preds = %26, %25, %24 +"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2035ba7c3ba8b49bE.exit9.i": ; preds = %22, %21, %20 store i64 -9223372036854775798, ptr %0, align 8, !alias.scope !19, !noalias !32 br label %"_ZN112_$LT$diesel..expression..grouped..Grouped$LT$T$GT$$u20$as$u20$diesel..query_builder..QueryFragment$LT$DB$GT$$GT$8walk_ast17h9d1d6f8eb68c7583E.exit" -27: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17hfb364271f3bd36b9E.exit.i" +23: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17hfb364271f3bd36b9E.exit.i" %.sroa.46.0..sroa_idx.i = getelementptr inbounds i8, ptr %5, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.28.i, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.46.0..sroa_idx.i, i64 24, i1 false), !noalias !16 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5), !noalias !16 - store i64 %22, ptr %0, align 8, !alias.scope !19, !noalias !32 + store i64 %18, ptr %0, align 8, !alias.scope !19, !noalias !32 %.sroa.28.0..sroa_idx.i = getelementptr inbounds i8, ptr %0, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.28.0..sroa_idx.i, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.28.i, i64 24, i1 false), !noalias !32 br label %"_ZN112_$LT$diesel..expression..grouped..Grouped$LT$T$GT$$u20$as$u20$diesel..query_builder..QueryFragment$LT$DB$GT$$GT$8walk_ast17h9d1d6f8eb68c7583E.exit" -"_ZN112_$LT$diesel..expression..grouped..Grouped$LT$T$GT$$u20$as$u20$diesel..query_builder..QueryFragment$LT$DB$GT$$GT$8walk_ast17h9d1d6f8eb68c7583E.exit": ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2035ba7c3ba8b49bE.exit9.i", %27 +"_ZN112_$LT$diesel..expression..grouped..Grouped$LT$T$GT$$u20$as$u20$diesel..query_builder..QueryFragment$LT$DB$GT$$GT$8walk_ast17h9d1d6f8eb68c7583E.exit": ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2035ba7c3ba8b49bE.exit9.i", %23 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %.sroa.28.i) ret void } @@ -279,14 +271,14 @@ define hidden void @"_ZN128_$LT$diesel..query_dsl..load_dsl..private..LoadIter$L br label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hec524899c9940a8aE.exit.i" "_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hec524899c9940a8aE.exit.i": ; preds = %21, %18 - %.sroa.5.031.i = phi ptr [ %20, %18 ], [ %22, %21 ] %.sroa.4.0.i = phi ptr [ %20, %18 ], [ %12, %21 ] + %.sroa.7.0.i = phi ptr [ undef, %18 ], [ %22, %21 ] %.sink.i.i = phi i64 [ -9223372036854775798, %18 ], [ -9223372036854775805, %21 ] store i64 %.sink.i.i, ptr %0, align 8, !alias.scope !56, !noalias !59 %.sroa.4.0..sroa_idx.i = getelementptr inbounds i8, ptr %0, i64 8 store ptr %.sroa.4.0.i, ptr %.sroa.4.0..sroa_idx.i, align 8, !alias.scope !56, !noalias !59 %.sroa.7.0..sroa_idx.i = getelementptr inbounds i8, ptr %0, i64 16 - store ptr %.sroa.5.031.i, ptr %.sroa.7.0..sroa_idx.i, align 8, !alias.scope !56, !noalias !59 + store ptr %.sroa.7.0.i, ptr %.sroa.7.0..sroa_idx.i, align 8, !alias.scope !56, !noalias !59 call void @"_ZN68_$LT$alloc..rc..Rc$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hcbf03d329307b033E.llvm.8259769641146142029"(ptr noalias noundef nonnull align 8 dereferenceable(8) %4), !noalias !62 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4), !noalias !62 br label %"_ZN6diesel9query_dsl8load_dsl7private31LoadIter$LT$U$C$C$C$ST$C$DB$GT$7map_row17h21aaabdb17ed9999E.llvm.3499718862566202072.exit" @@ -1420,7 +1412,7 @@ define hidden void @"_ZN6diesel9query_dsl8load_dsl7private31LoadIter$LT$U$C$C$C$ .thread: ; preds = %2 store i64 -9223372036854775797, ptr %0, align 8 - br label %26 + br label %24 8: ; preds = %7 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) @@ -1437,7 +1429,7 @@ define hidden void @"_ZN6diesel9query_dsl8load_dsl7private31LoadIter$LT$U$C$C$C$ %11 = load ptr, ptr %3, align 8, !noalias !313, !noundef !5 %12 = icmp eq ptr %11, null %13 = getelementptr inbounds i8, ptr %3, i64 8 - br i1 %12, label %17, label %22 + br i1 %12, label %17, label %20 14: ; preds = %7 %.sroa.613.0..sroa_idx = getelementptr inbounds i8, ptr %1, i64 24 @@ -1449,46 +1441,40 @@ define hidden void @"_ZN6diesel9query_dsl8load_dsl7private31LoadIter$LT$U$C$C$C$ store i64 %.sroa.512.0.copyload, ptr %.sroa.58.0..sroa_idx, align 8 %.sroa.69.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 24 store i64 %.sroa.613.0.copyload, ptr %.sroa.69.0..sroa_idx, align 8 - br label %26 + br label %24 15: ; preds = %8 %16 = landingpad { ptr, i32 } cleanup invoke void @"_ZN68_$LT$alloc..rc..Rc$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hcbf03d329307b033E.llvm.8259769641146142029"(ptr noalias noundef nonnull align 8 dereferenceable(8) %4) - to label %"_ZN4core3ptr55drop_in_place$LT$diesel..pg..connection..row..PgRow$GT$17h222b703773e0de07E.exit" unwind label %24 + to label %"_ZN4core3ptr55drop_in_place$LT$diesel..pg..connection..row..PgRow$GT$17h222b703773e0de07E.exit" unwind label %22 17: ; preds = %.noexc - %18 = load i32, ptr %13, align 8, !noalias !313, !noundef !5 - %19 = getelementptr inbounds i8, ptr %3, i64 12 - %20 = load i32, ptr %19, align 4, !noalias !313, !noundef !5 + %18 = load i64, ptr %13, align 8, !noalias !313 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3), !noalias !313 - %.sroa.5.8.insert.ext = zext i32 %18 to i64 - %.sroa.5.12.insert.ext = zext i32 %20 to i64 - %.sroa.5.12.insert.shift = shl nuw i64 %.sroa.5.12.insert.ext, 32 - %.sroa.5.12.insert.insert = or disjoint i64 %.sroa.5.12.insert.shift, %.sroa.5.8.insert.ext - %21 = inttoptr i64 %.sroa.5.12.insert.insert to ptr + %19 = inttoptr i64 %18 to ptr br label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hec524899c9940a8aE.exit" -22: ; preds = %.noexc - %23 = load ptr, ptr %13, align 8, !noalias !313, !nonnull !5, !align !33, !noundef !5 +20: ; preds = %.noexc + %21 = load ptr, ptr %13, align 8, !noalias !313, !nonnull !5, !align !33, !noundef !5 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3), !noalias !313 br label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hec524899c9940a8aE.exit" -"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hec524899c9940a8aE.exit": ; preds = %22, %17 - %.sroa.5.031 = phi ptr [ %21, %17 ], [ %23, %22 ] - %.sroa.4.0 = phi ptr [ %21, %17 ], [ %11, %22 ] - %.sink.i = phi i64 [ -9223372036854775798, %17 ], [ -9223372036854775805, %22 ] +"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hec524899c9940a8aE.exit": ; preds = %20, %17 + %.sroa.4.0 = phi ptr [ %19, %17 ], [ %11, %20 ] + %.sroa.7.0 = phi ptr [ undef, %17 ], [ %21, %20 ] + %.sink.i = phi i64 [ -9223372036854775798, %17 ], [ -9223372036854775805, %20 ] store i64 %.sink.i, ptr %0, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 store ptr %.sroa.4.0, ptr %.sroa.4.0..sroa_idx, align 8 %.sroa.7.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 - store ptr %.sroa.5.031, ptr %.sroa.7.0..sroa_idx, align 8 + store ptr %.sroa.7.0, ptr %.sroa.7.0..sroa_idx, align 8 call void @"_ZN68_$LT$alloc..rc..Rc$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hcbf03d329307b033E.llvm.8259769641146142029"(ptr noalias noundef nonnull align 8 dereferenceable(8) %4) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) - br label %26 + br label %24 -24: ; preds = %15 - %25 = landingpad { ptr, i32 } +22: ; preds = %15 + %23 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #10 unreachable @@ -1496,7 +1482,7 @@ define hidden void @"_ZN6diesel9query_dsl8load_dsl7private31LoadIter$LT$U$C$C$C$ "_ZN4core3ptr55drop_in_place$LT$diesel..pg..connection..row..PgRow$GT$17h222b703773e0de07E.exit": ; preds = %15 resume { ptr, i32 } %16 -26: ; preds = %14, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hec524899c9940a8aE.exit", %.thread +24: ; preds = %14, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hec524899c9940a8aE.exit", %.thread ret void } @@ -1580,8 +1566,8 @@ define hidden void @"_ZN6diesel9query_dsl8load_dsl7private31LoadIter$LT$U$C$C$C$ br label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hc229544872318f74E.exit" "_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hc229544872318f74E.exit": ; preds = %22, %20 - %.sroa.11.i.sroa.5.04967 = phi i32 [ undef, %22 ], [ %.sroa.616.i.sroa.4.0.copyload, %20 ] - %.sroa.11.i.sroa.6.05165 = phi i8 [ undef, %22 ], [ %.sroa.616.i.sroa.5.0.copyload, %20 ] + %.sroa.828.sroa.5.0 = phi i8 [ undef, %22 ], [ %.sroa.616.i.sroa.5.0.copyload, %20 ] + %.sroa.828.sroa.4.0 = phi i32 [ undef, %22 ], [ %.sroa.616.i.sroa.4.0.copyload, %20 ] %.sroa.7.0 = phi ptr [ %16, %22 ], [ %.sroa.616.i.sroa.0.sroa.0.0.copyload, %20 ] %.sroa.6.0 = phi ptr [ %14, %22 ], [ %16, %20 ] %.sroa.5.0 = phi i64 [ -9223372036854775805, %22 ], [ %21, %20 ] @@ -1595,9 +1581,9 @@ define hidden void @"_ZN6diesel9query_dsl8load_dsl7private31LoadIter$LT$U$C$C$C$ %.sroa.828.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 32 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.828.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.828.sroa.0, i64 16, i1 false) %.sroa.828.sroa.4.0..sroa.828.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %0, i64 48 - store i32 %.sroa.11.i.sroa.5.04967, ptr %.sroa.828.sroa.4.0..sroa.828.0..sroa_idx.sroa_idx, align 8 + store i32 %.sroa.828.sroa.4.0, ptr %.sroa.828.sroa.4.0..sroa.828.0..sroa_idx.sroa_idx, align 8 %.sroa.828.sroa.5.0..sroa.828.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %0, i64 52 - store i8 %.sroa.11.i.sroa.6.05165, ptr %.sroa.828.sroa.5.0..sroa.828.0..sroa_idx.sroa_idx, align 4 + store i8 %.sroa.828.sroa.5.0, ptr %.sroa.828.sroa.5.0..sroa.828.0..sroa_idx.sroa_idx, align 4 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %.sroa.828.sroa.0) call void @"_ZN68_$LT$alloc..rc..Rc$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hcbf03d329307b033E.llvm.8259769641146142029"(ptr noalias noundef nonnull align 8 dereferenceable(8) %4) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) diff --git a/bench/diesel-rs/optimized/5adr4b1vt9d36mr4.ll b/bench/diesel-rs/optimized/5adr4b1vt9d36mr4.ll index d924199be04..81beec5854f 100644 --- a/bench/diesel-rs/optimized/5adr4b1vt9d36mr4.ll +++ b/bench/diesel-rs/optimized/5adr4b1vt9d36mr4.ll @@ -695,13 +695,14 @@ define internal void @"_ZN67_$LT$T$u20$as$u20$diesel..pg..metadata_lookup..PgMet %15 = alloca { { i64, [2 x i64] }, { i64, [2 x i64] } }, align 8 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %15) %16 = icmp eq ptr %4, null - %spec.select = select i1 %16, i64 -9223372036854775807, i64 -9223372036854775808 + %spec.select = select i1 %16, i64 undef, i64 %5 + %spec.select30 = select i1 %16, i64 -9223372036854775807, i64 -9223372036854775808 %17 = getelementptr inbounds i8, ptr %15, i64 24 - store i64 %spec.select, ptr %17, align 8 + store i64 %spec.select30, ptr %17, align 8 %.sroa.5.0..sroa_idx4 = getelementptr inbounds i8, ptr %15, i64 32 store ptr %4, ptr %.sroa.5.0..sroa_idx4, align 8 %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx4.sroa_idx = getelementptr inbounds i8, ptr %15, i64 40 - store i64 %5, ptr %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx4.sroa_idx, align 8 + store i64 %spec.select, ptr %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx4.sroa_idx, align 8 store i64 -9223372036854775808, ptr %15, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %15, i64 8 store ptr %2, ptr %.sroa.4.0..sroa_idx, align 8 @@ -1088,9 +1089,9 @@ define hidden void @_ZN6diesel2pg10connection12PgConnection19with_prepared_query store i32 4, ptr %13, align 8, !noalias !132 %94 = load ptr, ptr %32, align 8, !alias.scope !133, !noalias !136, !noundef !5 %.not.i21.i = icmp eq ptr %94, null - br i1 %.not.i21.i, label %.thread44.i, label %95 + br i1 %.not.i21.i, label %.thread43.i, label %95 -.thread44.i: ; preds = %89 +.thread43.i: ; preds = %89 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13), !noalias !132 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.431.i, ptr noundef nonnull align 8 dereferenceable(32) %90, i64 32, i1 false), !alias.scope !131, !noalias !126 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %17), !noalias !110 @@ -1117,7 +1118,7 @@ define hidden void @_ZN6diesel2pg10connection12PgConnection19with_prepared_query br i1 %99, label %120, label %100 100: ; preds = %98, %.thread.i - %.sroa.6.0.copyload39.i = phi i64 [ %.sroa.6.0.copyload36.i, %.thread.i ], [ %.sroa.6.0.copyload.i, %98 ] + %.sroa.6.0.copyload38.i = phi i64 [ %.sroa.6.0.copyload36.i, %.thread.i ], [ %.sroa.6.0.copyload.i, %98 ] %.sroa.0.0.copyload37.i = phi ptr [ %85, %.thread.i ], [ %.sroa.0.0.copyload.pr.pre.i, %98 ] call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.7.i, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.431.i, i64 32, i1 false), !noalias !110 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %.sroa.431.i) @@ -1127,7 +1128,7 @@ define hidden void @_ZN6diesel2pg10connection12PgConnection19with_prepared_query call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16), !noalias !110 store ptr %.sroa.0.0.copyload37.i, ptr %15, align 8, !noalias !110 %.sroa.6.0..sroa_idx.i47 = getelementptr inbounds i8, ptr %15, i64 40 - store i64 %.sroa.6.0.copyload39.i, ptr %.sroa.6.0..sroa_idx.i47, align 8, !noalias !110 + store i64 %.sroa.6.0.copyload38.i, ptr %.sroa.6.0..sroa_idx.i47, align 8, !noalias !110 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %14), !noalias !110 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(40) %73, i64 40, i1 false), !noalias !139 call void @llvm.experimental.noalias.scope.decl(metadata !140) @@ -1203,7 +1204,7 @@ define hidden void @_ZN6diesel2pg10connection12PgConnection19with_prepared_query call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #12, !noalias !156 unreachable -120: ; preds = %98, %.thread44.i +120: ; preds = %98, %.thread43.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.7.i, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.431.i, i64 32, i1 false), !noalias !110 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %.sroa.431.i) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.7.i, i64 32, i1 false), !noalias !169 @@ -6266,9 +6267,9 @@ define hidden void @_ZN6diesel2pg10connection12PgConnection19with_prepared_query store i32 4, ptr %13, align 8, !noalias !1391 %96 = load ptr, ptr %32, align 8, !alias.scope !1392, !noalias !1395, !noundef !5 %.not.i21.i = icmp eq ptr %96, null - br i1 %.not.i21.i, label %.thread59.i, label %97 + br i1 %.not.i21.i, label %.thread58.i, label %97 -.thread59.i: ; preds = %91 +.thread58.i: ; preds = %91 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13), !noalias !1391 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.438.i, ptr noundef nonnull align 8 dereferenceable(32) %92, i64 32, i1 false), !alias.scope !1390, !noalias !1385 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %17), !noalias !1370 @@ -6295,7 +6296,7 @@ define hidden void @_ZN6diesel2pg10connection12PgConnection19with_prepared_query br i1 %101, label %128, label %102 102: ; preds = %100, %.thread.i - %.sroa.6.0.copyload54.i = phi i64 [ %.sroa.6.0.copyload51.i, %.thread.i ], [ %.sroa.6.0.copyload.i, %100 ] + %.sroa.6.0.copyload53.i = phi i64 [ %.sroa.6.0.copyload51.i, %.thread.i ], [ %.sroa.6.0.copyload.i, %100 ] %.sroa.0.0.copyload52.i = phi ptr [ %87, %.thread.i ], [ %.sroa.0.0.copyload.pr.pre.i, %100 ] call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.7.i, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.438.i, i64 32, i1 false), !noalias !1370 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %.sroa.438.i) @@ -6305,7 +6306,7 @@ define hidden void @_ZN6diesel2pg10connection12PgConnection19with_prepared_query call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16), !noalias !1370 store ptr %.sroa.0.0.copyload52.i, ptr %15, align 8, !noalias !1370 %.sroa.6.0..sroa_idx.i53 = getelementptr inbounds i8, ptr %15, i64 40 - store i64 %.sroa.6.0.copyload54.i, ptr %.sroa.6.0..sroa_idx.i53, align 8, !noalias !1370 + store i64 %.sroa.6.0.copyload53.i, ptr %.sroa.6.0..sroa_idx.i53, align 8, !noalias !1370 call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %14), !noalias !1370 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %14, ptr noundef nonnull align 8 dereferenceable(72) %75, i64 72, i1 false), !noalias !1398 call void @llvm.experimental.noalias.scope.decl(metadata !1399) @@ -6404,7 +6405,7 @@ define hidden void @_ZN6diesel2pg10connection12PgConnection19with_prepared_query call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #12, !noalias !1407 unreachable -128: ; preds = %100, %.thread59.i +128: ; preds = %100, %.thread58.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.7.i, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.438.i, i64 32, i1 false), !noalias !1370 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %.sroa.438.i) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.7.i, i64 32, i1 false), !noalias !1431 diff --git a/bench/diesel-rs/optimized/5ae9g3v8s5vb9wv8.ll b/bench/diesel-rs/optimized/5ae9g3v8s5vb9wv8.ll index 6d7de08a9dc..d685e2a59f5 100644 --- a/bench/diesel-rs/optimized/5ae9g3v8s5vb9wv8.ll +++ b/bench/diesel-rs/optimized/5ae9g3v8s5vb9wv8.ll @@ -15,8 +15,8 @@ target triple = "x86_64-unknown-linux-gnu" define hidden void @"_ZN118_$LT$diesel..sqlite..connection..row..SqliteRow$u20$as$u20$diesel..row..Row$LT$diesel..sqlite..backend..Sqlite$GT$$GT$3get17h7b260c0c100f08eaE"(ptr noalias nocapture noundef writeonly sret({ ptr, [2 x i64] }) align 8 dereferenceable(24) %0, ptr noalias noundef readonly align 8 dereferenceable(16) %1, i64 noundef %2) unnamed_addr #0 { %4 = tail call { i64, i64 } @"_ZN97_$LT$diesel..sqlite..connection..row..SqliteRow$u20$as$u20$diesel..row..RowIndex$LT$usize$GT$$GT$3idx17h6fa7abb433d65b39E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %1, i64 noundef %2) %.fca.0.extract = extractvalue { i64, i64 } %4, 0 - %.fca.1.extract = extractvalue { i64, i64 } %4, 1 %switch = icmp eq i64 %.fca.0.extract, 0 + %.fca.1.extract = extractvalue { i64, i64 } %4, 1 br i1 %switch, label %10, label %5 5: ; preds = %3 diff --git a/bench/diesel-rs/optimized/5ejp0bt5ilhaioh2.ll b/bench/diesel-rs/optimized/5ejp0bt5ilhaioh2.ll index ac321a190d3..2525c685e38 100644 --- a/bench/diesel-rs/optimized/5ejp0bt5ilhaioh2.ll +++ b/bench/diesel-rs/optimized/5ejp0bt5ilhaioh2.ll @@ -503,11 +503,11 @@ define hidden void @"_ZN88_$LT$diesel..row..private..PartialRow$LT$R$GT$$u20$as$ %7 = add i64 %6, %2 %8 = tail call { i64, i64 } @"_ZN89_$LT$diesel..pg..connection..row..PgRow$u20$as$u20$diesel..row..RowIndex$LT$usize$GT$$GT$3idx17hf04f0fa525faa18aE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %4, i64 noundef %7), !noalias !98 %.fca.0.extract.i = extractvalue { i64, i64 } %8, 0 - %.fca.1.extract.i = extractvalue { i64, i64 } %8, 1 %switch.i = icmp eq i64 %.fca.0.extract.i, 0 br i1 %switch.i, label %"_ZN102_$LT$diesel..pg..connection..row..PgRow$u20$as$u20$diesel..row..Row$LT$diesel..pg..backend..Pg$GT$$GT$3get17h95859d34d4945328E.exit", label %"_ZN96_$LT$diesel..row..private..PartialRow$LT$R$GT$$u20$as$u20$diesel..row..RowIndex$LT$usize$GT$$GT$3idx17hdfe8d6e0a47d7ec2E.llvm.13218109653646882024.exit" "_ZN96_$LT$diesel..row..private..PartialRow$LT$R$GT$$u20$as$u20$diesel..row..RowIndex$LT$usize$GT$$GT$3idx17hdfe8d6e0a47d7ec2E.llvm.13218109653646882024.exit": ; preds = %3 + %.fca.1.extract.i = extractvalue { i64, i64 } %8, 1 %.not.i.i = icmp ule i64 %6, %.fca.1.extract.i %9 = getelementptr inbounds i8, ptr %1, i64 16 %10 = load i64, ptr %9, align 8, !alias.scope !101, !noalias !104 @@ -545,20 +545,21 @@ define hidden void @"_ZN88_$LT$diesel..row..private..PartialRow$LT$R$GT$$u20$as$ define hidden { i64, i64 } @"_ZN95_$LT$hashbrown..raw..bitmask..BitMaskIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h806c2d75f94c2f57E.llvm.13218109653646882024"(ptr noalias nocapture noundef align 2 dereferenceable(2) %0) unnamed_addr #10 { %2 = load i16, ptr %0, align 2, !noundef !4 %.not.not = icmp eq i16 %2, 0 - br i1 %.not.not, label %6, label %3 + br i1 %.not.not, label %8, label %3 3: ; preds = %1 - %4 = add i16 %2, -1 - %5 = and i16 %4, %2 - store i16 %5, ptr %0, align 2 - br label %6 - -6: ; preds = %1, %3 + %4 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %2, i1 true) + %5 = zext nneg i16 %4 to i64 + %6 = add i16 %2, -1 + %7 = and i16 %6, %2 + store i16 %7, ptr %0, align 2 + br label %8 + +8: ; preds = %1, %3 + %.sroa.3.0 = phi i64 [ %5, %3 ], [ undef, %1 ] %.sroa.0.0 = phi i64 [ 1, %3 ], [ 0, %1 ] - %7 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %2, i1 true) - %8 = zext nneg i16 %7 to i64 %9 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %10 = insertvalue { i64, i64 } %9, i64 %8, 1 + %10 = insertvalue { i64, i64 } %9, i64 %.sroa.3.0, 1 ret { i64, i64 } %10 } @@ -570,11 +571,11 @@ define hidden { i64, i64 } @"_ZN96_$LT$diesel..row..private..PartialRow$LT$R$GT$ %6 = add i64 %5, %1 %7 = tail call { i64, i64 } @"_ZN89_$LT$diesel..pg..connection..row..PgRow$u20$as$u20$diesel..row..RowIndex$LT$usize$GT$$GT$3idx17hf04f0fa525faa18aE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %3, i64 noundef %6) %.fca.0.extract = extractvalue { i64, i64 } %7, 0 - %.fca.1.extract = extractvalue { i64, i64 } %7, 1 %switch = icmp eq i64 %.fca.0.extract, 0 br i1 %switch, label %12, label %8 8: ; preds = %2 + %.fca.1.extract = extractvalue { i64, i64 } %7, 1 %.not.i = icmp ule i64 %5, %.fca.1.extract %9 = getelementptr inbounds i8, ptr %0, i64 16 %10 = load i64, ptr %9, align 8, !alias.scope !111, !noalias !114 @@ -584,9 +585,10 @@ define hidden { i64, i64 } @"_ZN96_$LT$diesel..row..private..PartialRow$LT$R$GT$ br label %12 12: ; preds = %2, %8 + %.sroa.4.1 = phi i64 [ %.fca.1.extract, %8 ], [ undef, %2 ] %.sroa.0.1 = phi i64 [ %.sroa.0.0, %8 ], [ 0, %2 ] %13 = insertvalue { i64, i64 } poison, i64 %.sroa.0.1, 0 - %14 = insertvalue { i64, i64 } %13, i64 %.fca.1.extract, 1 + %14 = insertvalue { i64, i64 } %13, i64 %.sroa.4.1, 1 ret { i64, i64 } %14 } @@ -803,8 +805,8 @@ define hidden void @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6insert17h6f %.sroa.01.0.i.i = phi i64 [ 0, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17h9271d994e5250f98E.exit.i" ], [ %.sroa.01.1.i.i, %72 ] %.sroa.0.025.i.i = and i64 %.pn.i.i, %.val4.i %45 = getelementptr inbounds i8, ptr %.val.i, i64 %.sroa.0.025.i.i - %.0.copyload.i32.i.i = load <16 x i8>, ptr %45, align 1, !noalias !175 - %46 = icmp eq <16 x i8> %.0.copyload.i32.i.i, %.15.vec.insert.i.i.i + %.0.copyload.i33.i.i = load <16 x i8>, ptr %45, align 1, !noalias !175 + %46 = icmp eq <16 x i8> %.0.copyload.i33.i.i, %.15.vec.insert.i.i.i %47 = bitcast <16 x i1> %46 to i16 br label %48 @@ -835,7 +837,7 @@ define hidden void @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6insert17h6f br i1 %59, label %105, label %48 62: ; preds = %49 - %63 = icmp slt <16 x i8> %.0.copyload.i32.i.i, zeroinitializer + %63 = icmp slt <16 x i8> %.0.copyload.i33.i.i, zeroinitializer %64 = bitcast <16 x i1> %63 to i16 %.not.not.i15.i.i = icmp ne i16 %64, 0 %65 = call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %64, i1 true) @@ -843,14 +845,14 @@ define hidden void @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6insert17h6f %.sroa.6.0.i.i.i = select i1 %.not.not.i15.i.i, i64 %66, i64 undef %67 = add i64 %.sroa.6.0.i.i.i, %.sroa.0.025.i.i %68 = and i64 %67, %.val4.i - %.sroa.3.0.i.i.i = select i1 %.not.not.i15.i.i, i64 %68, i64 undef - %.sroa.0.0.i16.i.i = zext i1 %.not.not.i15.i.i to i64 + %.sroa.3.0.i16.i.i = select i1 %.not.not.i15.i.i, i64 %68, i64 undef + %.sroa.0.0.i17.i.i = zext i1 %.not.not.i15.i.i to i64 br label %69 69: ; preds = %62, %49 - %.sroa.6.1.i.i = phi i64 [ %.sroa.3.0.i.i.i, %62 ], [ %.sroa.6.0.i.i, %49 ] - %.sroa.01.1.i.i = phi i64 [ %.sroa.0.0.i16.i.i, %62 ], [ 1, %49 ] - %70 = icmp eq <16 x i8> %.0.copyload.i32.i.i, + %.sroa.6.1.i.i = phi i64 [ %.sroa.3.0.i16.i.i, %62 ], [ %.sroa.6.0.i.i, %49 ] + %.sroa.01.1.i.i = phi i64 [ %.sroa.0.0.i17.i.i, %62 ], [ 1, %49 ] + %70 = icmp eq <16 x i8> %.0.copyload.i33.i.i, %71 = bitcast <16 x i1> %70 to i16 %.not11.i.i = icmp eq i16 %71, 0 br i1 %.not11.i.i, label %72, label %75 @@ -973,28 +975,28 @@ define hidden { i64, i64 } @_ZN9hashbrown3raw13RawTableInner10find_inner17h161d7 %.sroa.9.0 = phi i64 [ 0, %4 ], [ %30, %29 ] %.sroa.01.0 = phi i64 [ %9, %4 ], [ %32, %29 ] %13 = getelementptr inbounds i8, ptr %10, i64 %.sroa.01.0 - %.0.copyload.i32 = load <16 x i8>, ptr %13, align 1, !noalias !191 - %14 = icmp eq <16 x i8> %.0.copyload.i32, %.15.vec.insert.i + %.0.copyload.i33 = load <16 x i8>, ptr %13, align 1, !noalias !191 + %14 = icmp eq <16 x i8> %.0.copyload.i33, %.15.vec.insert.i %15 = bitcast <16 x i1> %14 to i16 br label %16 16: ; preds = %20, %12 - %.0 = phi i16 [ %15, %12 ], [ %22, %20 ] + %.0 = phi i16 [ %15, %12 ], [ %24, %20 ] %.not.not.i = icmp eq i16 %.0, 0 br i1 %.not.not.i, label %17, label %20 17: ; preds = %16 - %18 = icmp eq <16 x i8> %.0.copyload.i32, + %18 = icmp eq <16 x i8> %.0.copyload.i33, %19 = bitcast <16 x i1> %18 to i16 %.not = icmp eq i16 %19, 0 - br i1 %.not, label %29, label %.loopexit33 + br i1 %.not, label %29, label %.loopexit34 20: ; preds = %16 - %21 = add i16 %.0, -1 - %22 = and i16 %21, %.0 - %23 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.0, i1 true) - %24 = zext nneg i16 %23 to i64 - %25 = add i64 %.sroa.01.0, %24 + %21 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.0, i1 true) + %22 = zext nneg i16 %21 to i64 + %23 = add i16 %.0, -1 + %24 = and i16 %23, %.0 + %25 = add i64 %.sroa.01.0, %22 %26 = and i64 %25, %8 %27 = load ptr, ptr %11, align 8, !invariant.load !4, !nonnull !4 %28 = tail call noundef zeroext i1 %27(ptr noundef nonnull align 1 %2, i64 noundef %26) @@ -1007,11 +1009,11 @@ define hidden { i64, i64 } @_ZN9hashbrown3raw13RawTableInner10find_inner17h161d7 br label %12 .loopexit: ; preds = %20 - %33 = insertvalue { i64, i64 } { i64 1, i64 poison }, i64 %24, 1 - br label %.loopexit33 + %33 = insertvalue { i64, i64 } { i64 1, i64 poison }, i64 %22, 1 + br label %.loopexit34 -.loopexit33: ; preds = %17, %.loopexit - %34 = phi { i64, i64 } [ %33, %.loopexit ], [ { i64 0, i64 16 }, %17 ] +.loopexit34: ; preds = %17, %.loopexit + %34 = phi { i64, i64 } [ %33, %.loopexit ], [ { i64 0, i64 undef }, %17 ] %.sroa.3.0 = phi i64 [ %26, %.loopexit ], [ undef, %17 ] %35 = insertvalue { i64, i64 } %34, i64 %.sroa.3.0, 1 ret { i64, i64 } %35 @@ -1057,25 +1059,25 @@ define hidden noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17h2c93 %.sroa.9.0.i = phi i64 [ 0, %3 ], [ %55, %54 ] %.sroa.01.0.i = phi i64 [ %9, %3 ], [ %57, %54 ] %23 = getelementptr inbounds i8, ptr %10, i64 %.sroa.01.0.i - %.0.copyload.i31 = load <16 x i8>, ptr %23, align 1, !noalias !199 - %24 = icmp eq <16 x i8> %.0.copyload.i31, %.15.vec.insert.i + %.0.copyload.i33 = load <16 x i8>, ptr %23, align 1, !noalias !199 + %24 = icmp eq <16 x i8> %.0.copyload.i33, %.15.vec.insert.i %25 = bitcast <16 x i1> %24 to i16 - %.not.not.i34 = icmp eq i16 %25, 0 - br i1 %.not.not.i34, label %._crit_edge, label %.lr.ph + %.not.not.i36 = icmp eq i16 %25, 0 + br i1 %.not.not.i36, label %._crit_edge, label %.lr.ph ._crit_edge: ; preds = %.backedge, %22 - %26 = icmp eq <16 x i8> %.0.copyload.i31, + %26 = icmp eq <16 x i8> %.0.copyload.i33, %27 = bitcast <16 x i1> %26 to i16 %.not.i = icmp eq i16 %27, 0 br i1 %.not.i, label %54, label %_ZN9hashbrown3raw13RawTableInner10find_inner17h161d71df3565f810E.llvm.13218109653646882024.exit .lr.ph: ; preds = %22, %.backedge - %.02135 = phi i16 [ %29, %.backedge ], [ %25, %22 ] - %28 = add i16 %.02135, -1 - %29 = and i16 %28, %.02135 - %30 = call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.02135, i1 true) - %31 = zext nneg i16 %30 to i64 - %32 = add i64 %.sroa.01.0.i, %31 + %.02237 = phi i16 [ %31, %.backedge ], [ %25, %22 ] + %28 = call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.02237, i1 true) + %29 = zext nneg i16 %28 to i64 + %30 = add i16 %.02237, -1 + %31 = and i16 %30, %.02237 + %32 = add i64 %.sroa.01.0.i, %29 %33 = and i64 %32, %8 %34 = sub nsw i64 0, %33 %35 = getelementptr inbounds { { [3 x i64], i64, [2 x i64] }, { { { i64, ptr }, i64 }, { ptr, i64 } } }, ptr %10, i64 %34 @@ -1098,7 +1100,7 @@ define hidden noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17h2c93 br i1 %44, label %_ZN9hashbrown3raw13RawTableInner10find_inner17h161d71df3565f810E.llvm.13218109653646882024.exit, label %.backedge .backedge: ; preds = %49, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5a3380a65a8bb00bE.exit.i.i.i", %45, %.lr.ph, %42, %"_ZN90_$LT$core..ops..control_flow..ControlFlow$LT$B$C$C$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17h3d2468f386e24dc5E.llvm.2440784533363613794.exit.i.i.i.i" - %.not.not.i = icmp eq i16 %29, 0 + %.not.not.i = icmp eq i16 %31, 0 br i1 %.not.not.i, label %._crit_edge, label %.lr.ph 45: ; preds = %41 diff --git a/bench/diesel-rs/optimized/al6repwd67kto2y.ll b/bench/diesel-rs/optimized/al6repwd67kto2y.ll index 50ba12ca0bc..b6025db6f74 100644 --- a/bench/diesel-rs/optimized/al6repwd67kto2y.ll +++ b/bench/diesel-rs/optimized/al6repwd67kto2y.ll @@ -1183,11 +1183,11 @@ define hidden void @"_ZN88_$LT$diesel..row..private..PartialRow$LT$R$GT$$u20$as$ %7 = add i64 %6, %2 %8 = tail call { i64, i64 } @"_ZN89_$LT$diesel..pg..connection..row..PgRow$u20$as$u20$diesel..row..RowIndex$LT$usize$GT$$GT$3idx17hf04f0fa525faa18aE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %4, i64 noundef %7), !noalias !178 %.fca.0.extract.i = extractvalue { i64, i64 } %8, 0 - %.fca.1.extract.i = extractvalue { i64, i64 } %8, 1 %switch.i = icmp eq i64 %.fca.0.extract.i, 0 br i1 %switch.i, label %"_ZN102_$LT$diesel..pg..connection..row..PgRow$u20$as$u20$diesel..row..Row$LT$diesel..pg..backend..Pg$GT$$GT$3get17h6ba3b3fff955bd17E.exit", label %"_ZN96_$LT$diesel..row..private..PartialRow$LT$R$GT$$u20$as$u20$diesel..row..RowIndex$LT$usize$GT$$GT$3idx17hafef5af6d1d1d06fE.llvm.2484478404446752246.exit" "_ZN96_$LT$diesel..row..private..PartialRow$LT$R$GT$$u20$as$u20$diesel..row..RowIndex$LT$usize$GT$$GT$3idx17hafef5af6d1d1d06fE.llvm.2484478404446752246.exit": ; preds = %3 + %.fca.1.extract.i = extractvalue { i64, i64 } %8, 1 %.not.i.i = icmp ule i64 %6, %.fca.1.extract.i %9 = getelementptr inbounds i8, ptr %1, i64 16 %10 = load i64, ptr %9, align 8, !alias.scope !181, !noalias !184 @@ -1243,20 +1243,21 @@ define hidden noundef align 1 dereferenceable_or_null(1) ptr @"_ZN91_$LT$core..s define hidden { i64, i64 } @"_ZN95_$LT$hashbrown..raw..bitmask..BitMaskIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h806c2d75f94c2f57E.llvm.2484478404446752246"(ptr noalias nocapture noundef align 2 dereferenceable(2) %0) unnamed_addr #10 { %2 = load i16, ptr %0, align 2, !noundef !4 %.not.not = icmp eq i16 %2, 0 - br i1 %.not.not, label %6, label %3 + br i1 %.not.not, label %8, label %3 3: ; preds = %1 - %4 = add i16 %2, -1 - %5 = and i16 %4, %2 - store i16 %5, ptr %0, align 2 - br label %6 + %4 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %2, i1 true) + %5 = zext nneg i16 %4 to i64 + %6 = add i16 %2, -1 + %7 = and i16 %6, %2 + store i16 %7, ptr %0, align 2 + br label %8 -6: ; preds = %1, %3 +8: ; preds = %1, %3 + %.sroa.3.0 = phi i64 [ %5, %3 ], [ undef, %1 ] %.sroa.0.0 = phi i64 [ 1, %3 ], [ 0, %1 ] - %7 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %2, i1 true) - %8 = zext nneg i16 %7 to i64 %9 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %10 = insertvalue { i64, i64 } %9, i64 %8, 1 + %10 = insertvalue { i64, i64 } %9, i64 %.sroa.3.0, 1 ret { i64, i64 } %10 } @@ -1268,11 +1269,11 @@ define hidden { i64, i64 } @"_ZN96_$LT$diesel..row..private..PartialRow$LT$R$GT$ %6 = add i64 %5, %1 %7 = tail call { i64, i64 } @"_ZN89_$LT$diesel..pg..connection..row..PgRow$u20$as$u20$diesel..row..RowIndex$LT$usize$GT$$GT$3idx17hf04f0fa525faa18aE"(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %3, i64 noundef %6) %.fca.0.extract = extractvalue { i64, i64 } %7, 0 - %.fca.1.extract = extractvalue { i64, i64 } %7, 1 %switch = icmp eq i64 %.fca.0.extract, 0 br i1 %switch, label %12, label %8 8: ; preds = %2 + %.fca.1.extract = extractvalue { i64, i64 } %7, 1 %.not.i = icmp ule i64 %5, %.fca.1.extract %9 = getelementptr inbounds i8, ptr %0, i64 16 %10 = load i64, ptr %9, align 8, !alias.scope !191, !noalias !194 @@ -1282,9 +1283,10 @@ define hidden { i64, i64 } @"_ZN96_$LT$diesel..row..private..PartialRow$LT$R$GT$ br label %12 12: ; preds = %2, %8 + %.sroa.4.1 = phi i64 [ %.fca.1.extract, %8 ], [ undef, %2 ] %.sroa.0.1 = phi i64 [ %.sroa.0.0, %8 ], [ 0, %2 ] %13 = insertvalue { i64, i64 } poison, i64 %.sroa.0.1, 0 - %14 = insertvalue { i64, i64 } %13, i64 %.fca.1.extract, 1 + %14 = insertvalue { i64, i64 } %13, i64 %.sroa.4.1, 1 ret { i64, i64 } %14 } @@ -1501,8 +1503,8 @@ define hidden void @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6insert17h6f %.sroa.01.0.i.i = phi i64 [ 0, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17hb204a9c44c6d1162E.exit.i" ], [ %.sroa.01.1.i.i, %72 ] %.sroa.0.025.i.i = and i64 %.pn.i.i, %.val4.i %45 = getelementptr inbounds i8, ptr %.val.i, i64 %.sroa.0.025.i.i - %.0.copyload.i32.i.i = load <16 x i8>, ptr %45, align 1, !noalias !255 - %46 = icmp eq <16 x i8> %.0.copyload.i32.i.i, %.15.vec.insert.i.i.i + %.0.copyload.i33.i.i = load <16 x i8>, ptr %45, align 1, !noalias !255 + %46 = icmp eq <16 x i8> %.0.copyload.i33.i.i, %.15.vec.insert.i.i.i %47 = bitcast <16 x i1> %46 to i16 br label %48 @@ -1533,7 +1535,7 @@ define hidden void @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6insert17h6f br i1 %59, label %105, label %48 62: ; preds = %49 - %63 = icmp slt <16 x i8> %.0.copyload.i32.i.i, zeroinitializer + %63 = icmp slt <16 x i8> %.0.copyload.i33.i.i, zeroinitializer %64 = bitcast <16 x i1> %63 to i16 %.not.not.i15.i.i = icmp ne i16 %64, 0 %65 = call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %64, i1 true) @@ -1541,14 +1543,14 @@ define hidden void @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6insert17h6f %.sroa.6.0.i.i.i = select i1 %.not.not.i15.i.i, i64 %66, i64 undef %67 = add i64 %.sroa.6.0.i.i.i, %.sroa.0.025.i.i %68 = and i64 %67, %.val4.i - %.sroa.3.0.i.i.i = select i1 %.not.not.i15.i.i, i64 %68, i64 undef - %.sroa.0.0.i16.i.i = zext i1 %.not.not.i15.i.i to i64 + %.sroa.3.0.i16.i.i = select i1 %.not.not.i15.i.i, i64 %68, i64 undef + %.sroa.0.0.i17.i.i = zext i1 %.not.not.i15.i.i to i64 br label %69 69: ; preds = %62, %49 - %.sroa.6.1.i.i = phi i64 [ %.sroa.3.0.i.i.i, %62 ], [ %.sroa.6.0.i.i, %49 ] - %.sroa.01.1.i.i = phi i64 [ %.sroa.0.0.i16.i.i, %62 ], [ 1, %49 ] - %70 = icmp eq <16 x i8> %.0.copyload.i32.i.i, + %.sroa.6.1.i.i = phi i64 [ %.sroa.3.0.i16.i.i, %62 ], [ %.sroa.6.0.i.i, %49 ] + %.sroa.01.1.i.i = phi i64 [ %.sroa.0.0.i17.i.i, %62 ], [ 1, %49 ] + %70 = icmp eq <16 x i8> %.0.copyload.i33.i.i, %71 = bitcast <16 x i1> %70 to i16 %.not11.i.i = icmp eq i16 %71, 0 br i1 %.not11.i.i, label %72, label %75 @@ -1671,28 +1673,28 @@ define hidden { i64, i64 } @_ZN9hashbrown3raw13RawTableInner10find_inner17h161d7 %.sroa.9.0 = phi i64 [ 0, %4 ], [ %30, %29 ] %.sroa.01.0 = phi i64 [ %9, %4 ], [ %32, %29 ] %13 = getelementptr inbounds i8, ptr %10, i64 %.sroa.01.0 - %.0.copyload.i32 = load <16 x i8>, ptr %13, align 1, !noalias !271 - %14 = icmp eq <16 x i8> %.0.copyload.i32, %.15.vec.insert.i + %.0.copyload.i33 = load <16 x i8>, ptr %13, align 1, !noalias !271 + %14 = icmp eq <16 x i8> %.0.copyload.i33, %.15.vec.insert.i %15 = bitcast <16 x i1> %14 to i16 br label %16 16: ; preds = %20, %12 - %.0 = phi i16 [ %15, %12 ], [ %22, %20 ] + %.0 = phi i16 [ %15, %12 ], [ %24, %20 ] %.not.not.i = icmp eq i16 %.0, 0 br i1 %.not.not.i, label %17, label %20 17: ; preds = %16 - %18 = icmp eq <16 x i8> %.0.copyload.i32, + %18 = icmp eq <16 x i8> %.0.copyload.i33, %19 = bitcast <16 x i1> %18 to i16 %.not = icmp eq i16 %19, 0 - br i1 %.not, label %29, label %.loopexit33 + br i1 %.not, label %29, label %.loopexit34 20: ; preds = %16 - %21 = add i16 %.0, -1 - %22 = and i16 %21, %.0 - %23 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.0, i1 true) - %24 = zext nneg i16 %23 to i64 - %25 = add i64 %.sroa.01.0, %24 + %21 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.0, i1 true) + %22 = zext nneg i16 %21 to i64 + %23 = add i16 %.0, -1 + %24 = and i16 %23, %.0 + %25 = add i64 %.sroa.01.0, %22 %26 = and i64 %25, %8 %27 = load ptr, ptr %11, align 8, !invariant.load !4, !nonnull !4 %28 = tail call noundef zeroext i1 %27(ptr noundef nonnull align 1 %2, i64 noundef %26) @@ -1705,11 +1707,11 @@ define hidden { i64, i64 } @_ZN9hashbrown3raw13RawTableInner10find_inner17h161d7 br label %12 .loopexit: ; preds = %20 - %33 = insertvalue { i64, i64 } { i64 1, i64 poison }, i64 %24, 1 - br label %.loopexit33 + %33 = insertvalue { i64, i64 } { i64 1, i64 poison }, i64 %22, 1 + br label %.loopexit34 -.loopexit33: ; preds = %17, %.loopexit - %34 = phi { i64, i64 } [ %33, %.loopexit ], [ { i64 0, i64 16 }, %17 ] +.loopexit34: ; preds = %17, %.loopexit + %34 = phi { i64, i64 } [ %33, %.loopexit ], [ { i64 0, i64 undef }, %17 ] %.sroa.3.0 = phi i64 [ %26, %.loopexit ], [ undef, %17 ] %35 = insertvalue { i64, i64 } %34, i64 %.sroa.3.0, 1 ret { i64, i64 } %35 @@ -1755,25 +1757,25 @@ define hidden noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17h51be %.sroa.9.0.i = phi i64 [ 0, %3 ], [ %55, %54 ] %.sroa.01.0.i = phi i64 [ %9, %3 ], [ %57, %54 ] %23 = getelementptr inbounds i8, ptr %10, i64 %.sroa.01.0.i - %.0.copyload.i31 = load <16 x i8>, ptr %23, align 1, !noalias !279 - %24 = icmp eq <16 x i8> %.0.copyload.i31, %.15.vec.insert.i + %.0.copyload.i33 = load <16 x i8>, ptr %23, align 1, !noalias !279 + %24 = icmp eq <16 x i8> %.0.copyload.i33, %.15.vec.insert.i %25 = bitcast <16 x i1> %24 to i16 - %.not.not.i34 = icmp eq i16 %25, 0 - br i1 %.not.not.i34, label %._crit_edge, label %.lr.ph + %.not.not.i36 = icmp eq i16 %25, 0 + br i1 %.not.not.i36, label %._crit_edge, label %.lr.ph ._crit_edge: ; preds = %.backedge, %22 - %26 = icmp eq <16 x i8> %.0.copyload.i31, + %26 = icmp eq <16 x i8> %.0.copyload.i33, %27 = bitcast <16 x i1> %26 to i16 %.not.i = icmp eq i16 %27, 0 br i1 %.not.i, label %54, label %_ZN9hashbrown3raw13RawTableInner10find_inner17h161d71df3565f810E.llvm.2484478404446752246.exit .lr.ph: ; preds = %22, %.backedge - %.02135 = phi i16 [ %29, %.backedge ], [ %25, %22 ] - %28 = add i16 %.02135, -1 - %29 = and i16 %28, %.02135 - %30 = call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.02135, i1 true) - %31 = zext nneg i16 %30 to i64 - %32 = add i64 %.sroa.01.0.i, %31 + %.02237 = phi i16 [ %31, %.backedge ], [ %25, %22 ] + %28 = call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.02237, i1 true) + %29 = zext nneg i16 %28 to i64 + %30 = add i16 %.02237, -1 + %31 = and i16 %30, %.02237 + %32 = add i64 %.sroa.01.0.i, %29 %33 = and i64 %32, %8 %34 = sub nsw i64 0, %33 %35 = getelementptr inbounds { { [3 x i64], i64, [2 x i64] }, { { { i64, ptr }, i64 }, { ptr, i64 } } }, ptr %10, i64 %34 @@ -1796,7 +1798,7 @@ define hidden noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17h51be br i1 %44, label %_ZN9hashbrown3raw13RawTableInner10find_inner17h161d71df3565f810E.llvm.2484478404446752246.exit, label %.backedge .backedge: ; preds = %49, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hf7757e361d8ef168E.exit.i.i.i", %45, %.lr.ph, %42, %"_ZN90_$LT$core..ops..control_flow..ControlFlow$LT$B$C$C$GT$$u20$as$u20$core..cmp..PartialEq$GT$2eq17he41b8b196b92bd17E.llvm.14530165242193695371.exit.i.i.i.i" - %.not.not.i = icmp eq i16 %29, 0 + %.not.not.i = icmp eq i16 %31, 0 br i1 %.not.not.i, label %._crit_edge, label %.lr.ph 45: ; preds = %41 diff --git a/bench/diesel-rs/optimized/eteiwlvfezkcrkh.ll b/bench/diesel-rs/optimized/eteiwlvfezkcrkh.ll index eabc7a0f67e..2699b0c97e3 100644 --- a/bench/diesel-rs/optimized/eteiwlvfezkcrkh.ll +++ b/bench/diesel-rs/optimized/eteiwlvfezkcrkh.ll @@ -1248,14 +1248,14 @@ define hidden void @"_ZN128_$LT$diesel..query_dsl..load_dsl..private..LoadIter$L br label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17haa00b79cd5dc159dE.exit.i" "_ZN4core6result19Result$LT$T$C$E$GT$7map_err17haa00b79cd5dc159dE.exit.i": ; preds = %21, %18 - %.sroa.5.031.i = phi ptr [ %20, %18 ], [ %22, %21 ] %.sroa.4.0.i = phi ptr [ %20, %18 ], [ %12, %21 ] + %.sroa.7.0.i = phi ptr [ undef, %18 ], [ %22, %21 ] %.sink.i.i = phi i64 [ -9223372036854775798, %18 ], [ -9223372036854775805, %21 ] store i64 %.sink.i.i, ptr %0, align 8, !alias.scope !229, !noalias !232 %.sroa.4.0..sroa_idx.i = getelementptr inbounds i8, ptr %0, i64 8 store ptr %.sroa.4.0.i, ptr %.sroa.4.0..sroa_idx.i, align 8, !alias.scope !229, !noalias !232 %.sroa.7.0..sroa_idx.i = getelementptr inbounds i8, ptr %0, i64 16 - store ptr %.sroa.5.031.i, ptr %.sroa.7.0..sroa_idx.i, align 8, !alias.scope !229, !noalias !232 + store ptr %.sroa.7.0.i, ptr %.sroa.7.0..sroa_idx.i, align 8, !alias.scope !229, !noalias !232 call void @"_ZN68_$LT$alloc..rc..Rc$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6da2dbea392d5a8dE.llvm.8035010821628579948"(ptr noalias noundef nonnull align 8 dereferenceable(8) %4), !noalias !235 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4), !noalias !235 br label %"_ZN6diesel9query_dsl8load_dsl7private31LoadIter$LT$U$C$C$C$ST$C$DB$GT$7map_row17ha7d09a1b918dff59E.llvm.9214435125305147345.exit" @@ -1798,7 +1798,7 @@ define hidden void @"_ZN6diesel9query_dsl8load_dsl7private31LoadIter$LT$U$C$C$C$ .thread: ; preds = %2 store i64 -9223372036854775797, ptr %0, align 8 - br label %26 + br label %24 8: ; preds = %7 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) @@ -1815,7 +1815,7 @@ define hidden void @"_ZN6diesel9query_dsl8load_dsl7private31LoadIter$LT$U$C$C$C$ %11 = load ptr, ptr %3, align 8, !noalias !321, !noundef !8 %12 = icmp eq ptr %11, null %13 = getelementptr inbounds i8, ptr %3, i64 8 - br i1 %12, label %17, label %22 + br i1 %12, label %17, label %20 14: ; preds = %7 %.sroa.613.0..sroa_idx = getelementptr inbounds i8, ptr %1, i64 24 @@ -1827,46 +1827,40 @@ define hidden void @"_ZN6diesel9query_dsl8load_dsl7private31LoadIter$LT$U$C$C$C$ store i64 %.sroa.512.0.copyload, ptr %.sroa.58.0..sroa_idx, align 8 %.sroa.69.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 24 store i64 %.sroa.613.0.copyload, ptr %.sroa.69.0..sroa_idx, align 8 - br label %26 + br label %24 15: ; preds = %8 %16 = landingpad { ptr, i32 } cleanup invoke void @"_ZN68_$LT$alloc..rc..Rc$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6da2dbea392d5a8dE.llvm.8035010821628579948"(ptr noalias noundef nonnull align 8 dereferenceable(8) %4) - to label %"_ZN4core3ptr55drop_in_place$LT$diesel..pg..connection..row..PgRow$GT$17he3ac3b014fc6b863E.exit" unwind label %24 + to label %"_ZN4core3ptr55drop_in_place$LT$diesel..pg..connection..row..PgRow$GT$17he3ac3b014fc6b863E.exit" unwind label %22 17: ; preds = %.noexc - %18 = load i32, ptr %13, align 8, !noalias !321, !noundef !8 - %19 = getelementptr inbounds i8, ptr %3, i64 12 - %20 = load i32, ptr %19, align 4, !noalias !321, !noundef !8 + %18 = load i64, ptr %13, align 8, !noalias !321 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3), !noalias !321 - %.sroa.5.8.insert.ext = zext i32 %18 to i64 - %.sroa.5.12.insert.ext = zext i32 %20 to i64 - %.sroa.5.12.insert.shift = shl nuw i64 %.sroa.5.12.insert.ext, 32 - %.sroa.5.12.insert.insert = or disjoint i64 %.sroa.5.12.insert.shift, %.sroa.5.8.insert.ext - %21 = inttoptr i64 %.sroa.5.12.insert.insert to ptr + %19 = inttoptr i64 %18 to ptr br label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17haa00b79cd5dc159dE.exit" -22: ; preds = %.noexc - %23 = load ptr, ptr %13, align 8, !noalias !321, !nonnull !8, !align !11, !noundef !8 +20: ; preds = %.noexc + %21 = load ptr, ptr %13, align 8, !noalias !321, !nonnull !8, !align !11, !noundef !8 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3), !noalias !321 br label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17haa00b79cd5dc159dE.exit" -"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17haa00b79cd5dc159dE.exit": ; preds = %22, %17 - %.sroa.5.031 = phi ptr [ %21, %17 ], [ %23, %22 ] - %.sroa.4.0 = phi ptr [ %21, %17 ], [ %11, %22 ] - %.sink.i = phi i64 [ -9223372036854775798, %17 ], [ -9223372036854775805, %22 ] +"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17haa00b79cd5dc159dE.exit": ; preds = %20, %17 + %.sroa.4.0 = phi ptr [ %19, %17 ], [ %11, %20 ] + %.sroa.7.0 = phi ptr [ undef, %17 ], [ %21, %20 ] + %.sink.i = phi i64 [ -9223372036854775798, %17 ], [ -9223372036854775805, %20 ] store i64 %.sink.i, ptr %0, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 store ptr %.sroa.4.0, ptr %.sroa.4.0..sroa_idx, align 8 %.sroa.7.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 - store ptr %.sroa.5.031, ptr %.sroa.7.0..sroa_idx, align 8 + store ptr %.sroa.7.0, ptr %.sroa.7.0..sroa_idx, align 8 call void @"_ZN68_$LT$alloc..rc..Rc$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h6da2dbea392d5a8dE.llvm.8035010821628579948"(ptr noalias noundef nonnull align 8 dereferenceable(8) %4) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) - br label %26 + br label %24 -24: ; preds = %15 - %25 = landingpad { ptr, i32 } +22: ; preds = %15 + %23 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #20 unreachable @@ -1874,7 +1868,7 @@ define hidden void @"_ZN6diesel9query_dsl8load_dsl7private31LoadIter$LT$U$C$C$C$ "_ZN4core3ptr55drop_in_place$LT$diesel..pg..connection..row..PgRow$GT$17he3ac3b014fc6b863E.exit": ; preds = %15 resume { ptr, i32 } %16 -26: ; preds = %14, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17haa00b79cd5dc159dE.exit", %.thread +24: ; preds = %14, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17haa00b79cd5dc159dE.exit", %.thread ret void } diff --git a/bench/diesel-rs/optimized/kmc7af0s568ojlv.ll b/bench/diesel-rs/optimized/kmc7af0s568ojlv.ll index 521409b782f..9a30edcfcf8 100644 --- a/bench/diesel-rs/optimized/kmc7af0s568ojlv.ll +++ b/bench/diesel-rs/optimized/kmc7af0s568ojlv.ll @@ -305,9 +305,9 @@ define { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash17 %15 = getelementptr inbounds i8, ptr %0, i64 24 %16 = load i64, ptr %15, align 8, !noundef !3 %17 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %16, i64 %1) - %18 = extractvalue { i64, i1 } %17, 0 - %19 = extractvalue { i64, i1 } %17, 1 - br i1 %19, label %20, label %24 + %18 = extractvalue { i64, i1 } %17, 1 + %19 = extractvalue { i64, i1 } %17, 0 + br i1 %18, label %20, label %24 20: ; preds = %4 %21 = call { i64, i64 } @_ZN9hashbrown3raw11Fallibility17capacity_overflow17h371100b9194af62aE(i1 zeroext %3) @@ -324,12 +324,12 @@ define { i64, i64 } @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash17 %30 = mul nuw i64 %29, 7 %.0.i = select i1 %27, i64 %26, i64 %30 %31 = lshr i64 %.0.i, 1 - %.not.i = icmp ugt i64 %18, %31 + %.not.i = icmp ugt i64 %19, %31 br i1 %.not.i, label %32, label %89 32: ; preds = %24 %33 = add nuw i64 %.0.i, 1 - %34 = call i64 @_ZN4core3cmp6max_by17h632188ee175d8374E(i64 %18, i64 %33) + %34 = call i64 @_ZN4core3cmp6max_by17h632188ee175d8374E(i64 %19, i64 %33) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %10) call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %11) @@ -377,7 +377,7 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. %.sroa.6.0..sroa_idx = getelementptr inbounds i8, ptr %9, i64 24 store i16 %45, ptr %.sroa.6.0..sroa_idx, align 8 %47 = icmp eq i64 %46, 0 - br i1 %47, label %.thread9, label %.lr.ph + br i1 %47, label %.thread8, label %.lr.ph .loopexit: ; preds = %48, %51, %.noexc1 %lpad.loopexit = landingpad { ptr, i32 } @@ -385,17 +385,17 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. br label %.loopexit.split-lp .loopexit.split-lp.loopexit: ; preds = %60, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h62355989d54958f5E.exit" - %lpad.loopexit11 = landingpad { ptr, i32 } + %lpad.loopexit10 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp -.loopexit.split-lp.loopexit.split-lp: ; preds = %.thread9, %.noexc.i, %40 - %lpad.loopexit.split-lp12 = landingpad { ptr, i32 } +.loopexit.split-lp.loopexit.split-lp: ; preds = %.thread8, %.noexc.i, %40 + %lpad.loopexit.split-lp11 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp .loopexit.split-lp: ; preds = %.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp, %.loopexit - %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit11, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp12, %.loopexit.split-lp.loopexit.split-lp ] + %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit10, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp11, %.loopexit.split-lp.loopexit.split-lp ] invoke void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h1c1f379ee584c675E"(ptr nonnull align 8 %11) #13 to label %88 unwind label %86 @@ -451,12 +451,12 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. %69 = invoke i64 @"_ZN9hashbrown3map11make_hasher28_$u7b$$u7b$closure$u7d$$u7d$17hc4e777428d836bf6E"(ptr nonnull align 8 %13, ptr nonnull align 8 %68) to label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash28_$u7b$$u7b$closure$u7d$$u7d$17h62355989d54958f5E.exit" unwind label %.loopexit.split-lp.loopexit -.thread9.loopexit: ; preds = %77 +.thread8.loopexit: ; preds = %77 %.pre = load i64, ptr %15, align 8 - br label %.thread9 + br label %.thread8 -.thread9: ; preds = %.thread9.loopexit, %_ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit.i - %70 = phi i64 [ %.pre, %.thread9.loopexit ], [ 0, %_ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit.i ] +.thread8: ; preds = %.thread8.loopexit, %_ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit.i + %70 = phi i64 [ %.pre, %.thread8.loopexit ], [ 0, %_ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit.i ] %71 = getelementptr inbounds i8, ptr %11, i64 40 %72 = load i64, ptr %71, align 8, !noundef !3 %73 = sub i64 %72, %70 @@ -466,7 +466,7 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. invoke void @_ZN4core3mem4swap17hbb590b792b19af83E(ptr nonnull align 8 %0, ptr nonnull align 8 %.sroa.420.0..sroa_idx.i.i) to label %75 unwind label %.loopexit.split-lp.loopexit.split-lp -75: ; preds = %.thread9 +75: ; preds = %.thread8 call void @"_ZN4core3ptr196drop_in_place$LT$hashbrown..scopeguard..ScopeGuard$LT$hashbrown..raw..RawTableInner$C$hashbrown..raw..RawTableInner..prepare_resize$LT$alloc..alloc..Global$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h1c1f379ee584c675E"(ptr nonnull align 8 %11) br label %_ZN9hashbrown3raw13RawTableInner12resize_inner17hf258385c0dd1329bE.exit.i @@ -487,7 +487,7 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(264) %84, ptr noundef nonnull align 1 dereferenceable(264) %81, i64 264, i1 false) %.pr = load i64, ptr %.sroa.5.0..sroa_idx, align 8 %85 = icmp eq i64 %.pr, 0 - br i1 %85, label %.thread9.loopexit, label %.lr.ph + br i1 %85, label %.thread8.loopexit, label %.lr.ph 86: ; preds = %.loopexit.split-lp %87 = landingpad { ptr, i32 } @@ -499,6 +499,7 @@ _ZN9hashbrown3raw13RawTableInner20full_buckets_indices17hd4f1a1f609170bffE.exit. resume { ptr, i32 } %lpad.phi _ZN9hashbrown3raw13RawTableInner12resize_inner17hf258385c0dd1329bE.exit.i: ; preds = %32, %75 + %.sroa.3.0.i.i = phi i64 [ undef, %75 ], [ %39, %32 ] %.sroa.0.0.i.i = phi i64 [ -9223372036854775807, %75 ], [ %37, %32 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %10) @@ -510,7 +511,7 @@ _ZN9hashbrown3raw13RawTableInner12resize_inner17hf258385c0dd1329bE.exit.i: ; pre br label %_ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17hb7b3f13d36ef381bE.exit _ZN9hashbrown3raw13RawTableInner20reserve_rehash_inner17hb7b3f13d36ef381bE.exit: ; preds = %20, %_ZN9hashbrown3raw13RawTableInner12resize_inner17hf258385c0dd1329bE.exit.i, %89 - %.sroa.4.0.i = phi i64 [ %23, %20 ], [ undef, %89 ], [ %39, %_ZN9hashbrown3raw13RawTableInner12resize_inner17hf258385c0dd1329bE.exit.i ] + %.sroa.4.0.i = phi i64 [ %23, %20 ], [ undef, %89 ], [ %.sroa.3.0.i.i, %_ZN9hashbrown3raw13RawTableInner12resize_inner17hf258385c0dd1329bE.exit.i ] %.sroa.0.0.i = phi i64 [ %22, %20 ], [ -9223372036854775807, %89 ], [ %.sroa.0.0.i.i, %_ZN9hashbrown3raw13RawTableInner12resize_inner17hf258385c0dd1329bE.exit.i ] %90 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0.i, 0 %91 = insertvalue { i64, i64 } %90, i64 %.sroa.4.0.i, 1 diff --git a/bench/diesel-rs/optimized/re13hpgqfsvf2ck.ll b/bench/diesel-rs/optimized/re13hpgqfsvf2ck.ll index d05730c7ada..754e66fe169 100644 --- a/bench/diesel-rs/optimized/re13hpgqfsvf2ck.ll +++ b/bench/diesel-rs/optimized/re13hpgqfsvf2ck.ll @@ -1216,8 +1216,8 @@ define hidden void @"_ZN5alloc11collections5btree4node127NodeRef$LT$alloc..colle br label %13 13: ; preds = %"_ZN5alloc11collections5btree4node40NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$6ascend17h391ab80935ca177eE.llvm.15333852395482688744.exit.thread", %8 - %.sink19.i12 = phi i64 [ %12, %8 ], [ %2, %"_ZN5alloc11collections5btree4node40NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$6ascend17h391ab80935ca177eE.llvm.15333852395482688744.exit.thread" ] %.sink20.i11 = phi i64 [ %9, %8 ], [ %7, %"_ZN5alloc11collections5btree4node40NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$6ascend17h391ab80935ca177eE.llvm.15333852395482688744.exit.thread" ] + %.sroa.5.sroa.4.0 = phi i64 [ %12, %8 ], [ undef, %"_ZN5alloc11collections5btree4node40NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$6ascend17h391ab80935ca177eE.llvm.15333852395482688744.exit.thread" ] %.not = icmp eq i64 %2, 0 %. = select i1 %.not, i64 632, i64 728 tail call void @__rust_dealloc(ptr noundef nonnull %1, i64 noundef %., i64 noundef 8) #41 @@ -1225,7 +1225,7 @@ define hidden void @"_ZN5alloc11collections5btree4node127NodeRef$LT$alloc..colle %.sroa.5.0..sroa_idx2 = getelementptr inbounds i8, ptr %0, i64 8 store i64 %.sink20.i11, ptr %.sroa.5.0..sroa_idx2, align 8 %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx2.sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 - store i64 %.sink19.i12, ptr %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx2.sroa_idx, align 8 + store i64 %.sroa.5.sroa.4.0, ptr %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx2.sroa_idx, align 8 ret void } @@ -1990,20 +1990,20 @@ define hidden void @"_ZN5alloc11collections5btree4node210Handle$LT$alloc..collec br label %266 266: ; preds = %266, %264 - %.sroa.0.011.i.i.i.i = phi i64 [ 0, %264 ], [ %spec.select7.i.i.i.i, %266 ] - %267 = icmp ult i64 %.sroa.0.011.i.i.i.i, %256 + %.sroa.0.012.i.i.i.i = phi i64 [ 0, %264 ], [ %spec.select8.i.i.i.i, %266 ] + %267 = icmp ult i64 %.sroa.0.012.i.i.i.i, %256 %268 = zext i1 %267 to i64 - %spec.select7.i.i.i.i = add nuw nsw i64 %.sroa.0.011.i.i.i.i, %268 - %269 = icmp ult i64 %.sroa.0.011.i.i.i.i, 12 + %spec.select8.i.i.i.i = add nuw nsw i64 %.sroa.0.012.i.i.i.i, %268 + %269 = icmp ult i64 %.sroa.0.012.i.i.i.i, 12 tail call void @llvm.assume(i1 %269) - %270 = getelementptr inbounds ptr, ptr %257, i64 %.sroa.0.011.i.i.i.i + %270 = getelementptr inbounds ptr, ptr %257, i64 %.sroa.0.012.i.i.i.i %271 = load ptr, ptr %270, align 8, !alias.scope !306, !noalias !309, !nonnull !21, !noundef !21 %272 = getelementptr inbounds i8, ptr %271, i64 352 store ptr %218, ptr %272, align 8, !noalias !312 - %273 = trunc nuw nsw i64 %.sroa.0.011.i.i.i.i to i16 + %273 = trunc nuw nsw i64 %.sroa.0.012.i.i.i.i to i16 %274 = getelementptr inbounds i8, ptr %271, i64 624 store i16 %273, ptr %274, align 8, !noalias !309 - %.not.i.i.i.i.i.i = icmp ule i64 %spec.select7.i.i.i.i, %256 + %.not.i.i.i.i.i.i = icmp ule i64 %spec.select8.i.i.i.i, %256 %or.cond.i.not.i.i.i = select i1 %267, i1 %.not.i.i.i.i.i.i, i1 false br i1 %or.cond.i.not.i.i.i, label %266, label %278 @@ -2408,7 +2408,7 @@ define hidden { i64, i64 } @"_ZN5alloc11collections5btree6search91_$LT$impl$u20$ %14 = icmp eq ptr %.sroa.0.023, %10 br i1 %14, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h4f780d3ca779a8dbE.exit.thread", label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h4f780d3ca779a8dbE.exit" -default.unreachable37: ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h4f780d3ca779a8dbE.exit" +default.unreachable38: ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h4f780d3ca779a8dbE.exit" unreachable "_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h4f780d3ca779a8dbE.exit": ; preds = %13 @@ -2428,7 +2428,7 @@ default.unreachable37: ; preds = %"_ZN110_$LT$core..i %24 = icmp ne i64 %spec.store.select.i.i.i, 0 %.9.i.i.i = zext i1 %24 to i8 %.0.i.i.i = select i1 %23, i8 -1, i8 %.9.i.i.i - switch i8 %.0.i.i.i, label %default.unreachable37 [ + switch i8 %.0.i.i.i, label %default.unreachable38 [ i8 -1, label %.loopexit.loopexit i8 0, label %.loopexit i8 1, label %13 @@ -4278,19 +4278,19 @@ define { ptr, i64 } @"_ZN106_$LT$diesel..pg..connection..row..PgField$u20$as$u20 12: ; preds = %1 %.sroa.08.0.copyload.i = load i64, ptr %11, align 8 - %.sroa.5.0..0.1.sroa_idx.i = getelementptr inbounds i8, ptr %11, i64 16 - %.sroa.5.0.copyload.i = load i64, ptr %.sroa.5.0..0.1.sroa_idx.i, align 8 %switch.i = icmp eq i64 %.sroa.08.0.copyload.i, 0 br i1 %switch.i, label %_ZN6diesel2pg10connection6result8PgResult11column_name17h4e51df2a551f9a16E.exit, label %13 13: ; preds = %12 + %.sroa.5.0..0.1.sroa_idx.i = getelementptr inbounds i8, ptr %11, i64 16 + %.sroa.5.0.copyload.i = load i64, ptr %.sroa.5.0..0.1.sroa_idx.i, align 8 %.sroa.49.0..0.1.sroa_idx.i = getelementptr inbounds i8, ptr %11, i64 8 %.sroa.49.0.copyload.i = load ptr, ptr %.sroa.49.0..0.1.sroa_idx.i, align 8 br label %_ZN6diesel2pg10connection6result8PgResult11column_name17h4e51df2a551f9a16E.exit _ZN6diesel2pg10connection6result8PgResult11column_name17h4e51df2a551f9a16E.exit: ; preds = %1, %12, %13 - %.sroa.4.0.i = phi i64 [ undef, %1 ], [ %.sroa.5.0.copyload.i, %12 ], [ %.sroa.5.0.copyload.i, %13 ] - %.sroa.0.0.i = phi ptr [ null, %1 ], [ null, %12 ], [ %.sroa.49.0.copyload.i, %13 ] + %.sroa.4.0.i = phi i64 [ undef, %1 ], [ %.sroa.5.0.copyload.i, %13 ], [ undef, %12 ] + %.sroa.0.0.i = phi ptr [ null, %1 ], [ %.sroa.49.0.copyload.i, %13 ], [ null, %12 ] %14 = insertvalue { ptr, i64 } poison, ptr %.sroa.0.0.i, 0 %15 = insertvalue { ptr, i64 } %14, i64 %.sroa.4.0.i, 1 ret { ptr, i64 } %15 @@ -5711,9 +5711,9 @@ _ZN6diesel2pg10connection33update_transaction_manager_status17non_generic_inner1 call void @llvm.experimental.noalias.scope.decl(metadata !1193) %118 = load ptr, ptr %32, align 8, !alias.scope !1196, !noalias !1197, !noundef !21 %.not.i21.i = icmp eq ptr %118, null - br i1 %.not.i21.i, label %.thread46.i, label %119 + br i1 %.not.i21.i, label %.thread45.i, label %119 -.thread46.i: ; preds = %113 +.thread45.i: ; preds = %113 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13), !noalias !1192 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.433.i, ptr noundef nonnull align 8 dereferenceable(32) %114, i64 32, i1 false), !alias.scope !1191, !noalias !1190 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %17), !noalias !1150 @@ -5745,7 +5745,7 @@ _ZN6diesel2pg10connection33update_transaction_manager_status17non_generic_inner1 br i1 %127, label %167, label %128 128: ; preds = %126, %.thread.i - %.sroa.6.0.copyload41.i = phi i64 [ %.sroa.6.0.copyload38.i, %.thread.i ], [ %.sroa.6.0.copyload.i, %126 ] + %.sroa.6.0.copyload40.i = phi i64 [ %.sroa.6.0.copyload38.i, %.thread.i ], [ %.sroa.6.0.copyload.i, %126 ] %.sroa.0.0.copyload39.i = phi ptr [ %111, %.thread.i ], [ %.sroa.0.0.copyload.pr.pre.i, %126 ] call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.7.i, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.433.i, i64 32, i1 false), !noalias !1150 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %.sroa.433.i) @@ -5755,7 +5755,7 @@ _ZN6diesel2pg10connection33update_transaction_manager_status17non_generic_inner1 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16), !noalias !1150 store ptr %.sroa.0.0.copyload39.i, ptr %15, align 8, !noalias !1150 %.sroa.6.0..sroa_idx.i47 = getelementptr inbounds i8, ptr %15, i64 40 - store i64 %.sroa.6.0.copyload41.i, ptr %.sroa.6.0..sroa_idx.i47, align 8, !noalias !1150 + store i64 %.sroa.6.0.copyload40.i, ptr %.sroa.6.0..sroa_idx.i47, align 8, !noalias !1150 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %14), !noalias !1150 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull align 8 dereferenceable(40) %81, i64 40, i1 false), !noalias !1206 call void @llvm.experimental.noalias.scope.decl(metadata !1207) @@ -5897,7 +5897,7 @@ _ZN6diesel2pg10connection33update_transaction_manager_status17non_generic_inner1 call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #39, !noalias !1242 unreachable -167: ; preds = %126, %.thread46.i +167: ; preds = %126, %.thread45.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.7.i, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.433.i, i64 32, i1 false), !noalias !1150 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %.sroa.433.i) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.7.i, i64 32, i1 false), !noalias !1271 @@ -6508,9 +6508,9 @@ _ZN6diesel2pg10connection33update_transaction_manager_status17non_generic_inner1 call void @llvm.experimental.noalias.scope.decl(metadata !1419) %120 = load ptr, ptr %32, align 8, !alias.scope !1422, !noalias !1423, !noundef !21 %.not.i21.i = icmp eq ptr %120, null - br i1 %.not.i21.i, label %.thread61.i, label %121 + br i1 %.not.i21.i, label %.thread60.i, label %121 -.thread61.i: ; preds = %115 +.thread60.i: ; preds = %115 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13), !noalias !1418 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.440.i, ptr noundef nonnull align 8 dereferenceable(32) %116, i64 32, i1 false), !alias.scope !1417, !noalias !1416 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %17), !noalias !1377 @@ -6542,7 +6542,7 @@ _ZN6diesel2pg10connection33update_transaction_manager_status17non_generic_inner1 br i1 %129, label %175, label %130 130: ; preds = %128, %.thread.i - %.sroa.6.0.copyload56.i = phi i64 [ %.sroa.6.0.copyload53.i, %.thread.i ], [ %.sroa.6.0.copyload.i, %128 ] + %.sroa.6.0.copyload55.i = phi i64 [ %.sroa.6.0.copyload53.i, %.thread.i ], [ %.sroa.6.0.copyload.i, %128 ] %.sroa.0.0.copyload54.i = phi ptr [ %113, %.thread.i ], [ %.sroa.0.0.copyload.pr.pre.i, %128 ] call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.7.i, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.440.i, i64 32, i1 false), !noalias !1377 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %.sroa.440.i) @@ -6552,7 +6552,7 @@ _ZN6diesel2pg10connection33update_transaction_manager_status17non_generic_inner1 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16), !noalias !1377 store ptr %.sroa.0.0.copyload54.i, ptr %15, align 8, !noalias !1377 %.sroa.6.0..sroa_idx.i53 = getelementptr inbounds i8, ptr %15, i64 40 - store i64 %.sroa.6.0.copyload56.i, ptr %.sroa.6.0..sroa_idx.i53, align 8, !noalias !1377 + store i64 %.sroa.6.0.copyload55.i, ptr %.sroa.6.0..sroa_idx.i53, align 8, !noalias !1377 call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %14), !noalias !1377 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %14, ptr noundef nonnull align 8 dereferenceable(72) %83, i64 72, i1 false), !noalias !1432 call void @llvm.experimental.noalias.scope.decl(metadata !1433) @@ -6717,7 +6717,7 @@ _ZN6diesel2pg10connection33update_transaction_manager_status17non_generic_inner1 call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #39, !noalias !1441 unreachable -175: ; preds = %128, %.thread61.i +175: ; preds = %128, %.thread60.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.7.i, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.440.i, i64 32, i1 false), !noalias !1377 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %.sroa.440.i) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.7.i, i64 32, i1 false), !noalias !1499 @@ -7035,13 +7035,14 @@ define hidden void @"_ZN67_$LT$T$u20$as$u20$diesel..pg..metadata_lookup..PgMetad %15 = alloca { { i64, [2 x i64] }, { i64, [2 x i64] } }, align 8 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %15) %16 = icmp eq ptr %4, null - %spec.select = select i1 %16, i64 -9223372036854775807, i64 -9223372036854775808 + %spec.select = select i1 %16, i64 undef, i64 %5 + %spec.select37 = select i1 %16, i64 -9223372036854775807, i64 -9223372036854775808 %17 = getelementptr inbounds i8, ptr %15, i64 24 - store i64 %spec.select, ptr %17, align 8 + store i64 %spec.select37, ptr %17, align 8 %.sroa.5.0..sroa_idx4 = getelementptr inbounds i8, ptr %15, i64 32 store ptr %4, ptr %.sroa.5.0..sroa_idx4, align 8 %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx4.sroa_idx = getelementptr inbounds i8, ptr %15, i64 40 - store i64 %5, ptr %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx4.sroa_idx, align 8 + store i64 %spec.select, ptr %.sroa.5.sroa.4.0..sroa.5.0..sroa_idx4.sroa_idx, align 8 store i64 -9223372036854775808, ptr %15, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %15, i64 8 store ptr %2, ptr %.sroa.4.0..sroa_idx, align 8 diff --git a/bench/diesel-rs/optimized/vl08vh3jfmwhanx.ll b/bench/diesel-rs/optimized/vl08vh3jfmwhanx.ll index d75929a0079..1da621ed695 100644 --- a/bench/diesel-rs/optimized/vl08vh3jfmwhanx.ll +++ b/bench/diesel-rs/optimized/vl08vh3jfmwhanx.ll @@ -329,9 +329,11 @@ define hidden noundef align 8 dereferenceable_or_null(16) ptr @"_ZN113_$LT$core. ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define hidden { ptr, i64 } @"_ZN113_$LT$core..option..Option$LT$T$GT$$u20$as$u20$diesel..query_builder..update_statement..changeset..AsChangeset$GT$12as_changeset17h351c5a9d3c2ca310E.llvm.12703545329642850438"(ptr noalias noundef readonly align 1 %0, i64 %1) unnamed_addr #2 personality ptr @rust_eh_personality { - %3 = insertvalue { ptr, i64 } poison, ptr %0, 0 - %4 = insertvalue { ptr, i64 } %3, i64 %1, 1 - ret { ptr, i64 } %4 + %3 = icmp eq ptr %0, null + %spec.select = select i1 %3, i64 undef, i64 %1 + %4 = insertvalue { ptr, i64 } poison, ptr %0, 0 + %5 = insertvalue { ptr, i64 } %4, i64 %spec.select, 1 + ret { ptr, i64 } %5 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable @@ -341,9 +343,11 @@ define hidden noundef align 8 dereferenceable_or_null(16) ptr @"_ZN113_$LT$core. ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define hidden { ptr, i64 } @"_ZN113_$LT$core..option..Option$LT$T$GT$$u20$as$u20$diesel..query_builder..update_statement..changeset..AsChangeset$GT$12as_changeset17hf0aedb94b22c316dE.llvm.12703545329642850438"(ptr noalias noundef readonly align 1 %0, i64 %1) unnamed_addr #2 personality ptr @rust_eh_personality { - %3 = insertvalue { ptr, i64 } poison, ptr %0, 0 - %4 = insertvalue { ptr, i64 } %3, i64 %1, 1 - ret { ptr, i64 } %4 + %3 = icmp eq ptr %0, null + %spec.select = select i1 %3, i64 undef, i64 %1 + %4 = insertvalue { ptr, i64 } poison, ptr %0, 0 + %5 = insertvalue { ptr, i64 } %4, i64 %spec.select, 1 + ret { ptr, i64 } %5 } ; Function Attrs: nonlazybind uwtable @@ -1389,29 +1393,27 @@ define hidden void @"_ZN122_$LT$diesel..query_builder..from_clause..FromClause$L %.sroa.4.0.copyload = load ptr, ptr %.sroa.4.0..sroa_idx, align 8 switch i64 %6, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit" [ i64 0, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit.thread" - i64 4, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit.thread19" + i64 4, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit.thread16" ] "_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit.thread": ; preds = %3 tail call void @"_ZN128_$LT$diesel..pg..query_builder..PgQueryBuilder$u20$as$u20$diesel..query_builder..QueryBuilder$LT$diesel..pg..backend..Pg$GT$$GT$8push_sql17ha3d2d20ec2d05c78E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %.sroa.4.0.copyload, ptr noalias noundef nonnull readonly align 1 @anon.e3bc5a56f8a861980ff118b5f922f77f.3.llvm.12703545329642850438, i64 noundef 6), !noalias !360 %.sroa.7.0..sroa_idx5 = getelementptr inbounds i8, ptr %2, i64 16 - %7 = load <2 x ptr>, ptr %.sroa.7.0..sroa_idx5, align 8 + %.sroa.7.0.copyload6 = load ptr, ptr %.sroa.7.0..sroa_idx5, align 8 %.sroa.10.0..sroa_idx9 = getelementptr inbounds i8, ptr %2, i64 32 %.sroa.10.0.copyload10 = load ptr, ptr %.sroa.10.0..sroa_idx9, align 8 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %.sroa.28.i) tail call void @"_ZN128_$LT$diesel..pg..query_builder..PgQueryBuilder$u20$as$u20$diesel..query_builder..QueryBuilder$LT$diesel..pg..backend..Pg$GT$$GT$8push_sql17ha3d2d20ec2d05c78E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %.sroa.4.0.copyload, ptr noalias noundef nonnull readonly align 1 @anon.32e934fa05e4456648abfe262fc31d88.0.llvm.9214435125305147345, i64 noundef 1), !noalias !363 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5), !noalias !370 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %4), !noalias !370 - %8 = extractelement <2 x ptr> %7, i64 0 - %9 = icmp ne ptr %8, null - tail call void @llvm.assume(i1 %9) + %7 = icmp ne ptr %.sroa.7.0.copyload6, null + tail call void @llvm.assume(i1 %7) + %8 = insertelement <2 x ptr> , ptr %.sroa.7.0.copyload6, i64 0 br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit.i" -"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit.thread19": ; preds = %3 - %.sroa.7.0..sroa_idx22 = getelementptr inbounds i8, ptr %2, i64 16 - %10 = load <2 x ptr>, ptr %.sroa.7.0..sroa_idx22, align 8 - %.sroa.10.0..sroa_idx26 = getelementptr inbounds i8, ptr %2, i64 32 - %.sroa.10.0.copyload27 = load ptr, ptr %.sroa.10.0..sroa_idx26, align 8 +"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit.thread16": ; preds = %3 + %.sroa.10.0..sroa_idx23 = getelementptr inbounds i8, ptr %2, i64 32 + %.sroa.10.0.copyload24 = load ptr, ptr %.sroa.10.0..sroa_idx23, align 8 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %.sroa.28.i) store i8 0, ptr %.sroa.4.0.copyload, align 1, !noalias !371 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5), !noalias !370 @@ -1420,75 +1422,69 @@ define hidden void @"_ZN122_$LT$diesel..query_builder..from_clause..FromClause$L "_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit": ; preds = %3 %.sroa.7.0..sroa_idx = getelementptr inbounds i8, ptr %2, i64 16 - %11 = load <2 x ptr>, ptr %.sroa.7.0..sroa_idx, align 8 + %9 = load <2 x ptr>, ptr %.sroa.7.0..sroa_idx, align 8 %.sroa.10.0..sroa_idx = getelementptr inbounds i8, ptr %2, i64 32 %.sroa.10.0.copyload = load ptr, ptr %.sroa.10.0..sroa_idx, align 8 tail call void @llvm.experimental.noalias.scope.decl(metadata !373) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %.sroa.28.i) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5), !noalias !370 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %4), !noalias !370 - %12 = and i64 %6, 6 - %switch.i = icmp eq i64 %12, 2 - br i1 %switch.i, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit.i", label %13 - -13: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit" - %14 = extractelement <2 x ptr> %11, i64 0 - %15 = icmp ne ptr %14, null - tail call void @llvm.assume(i1 %15) - %16 = extractelement <2 x ptr> %11, i64 1 - %17 = icmp ne ptr %16, null - tail call void @llvm.assume(i1 %17) + %10 = and i64 %6, 6 + %switch.i = icmp eq i64 %10, 2 + %11 = insertelement <2 x i1> poison, i1 %switch.i, i64 0 + %12 = shufflevector <2 x i1> %11, <2 x i1> poison, <2 x i32> zeroinitializer + %13 = select <2 x i1> %12, <2 x ptr> undef, <2 x ptr> %9 br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit.i" -"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit.i": ; preds = %13, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit.thread19", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit.thread" - %.sroa.10.0.copyload17 = phi ptr [ %.sroa.10.0.copyload, %13 ], [ %.sroa.10.0.copyload, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit" ], [ %.sroa.10.0.copyload27, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit.thread19" ], [ %.sroa.10.0.copyload10, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit.thread" ] - %18 = phi <2 x ptr> [ %11, %13 ], [ %11, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit" ], [ %10, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit.thread19" ], [ %7, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit.thread" ] - %19 = icmp ne ptr %.sroa.4.0.copyload, null - tail call void @llvm.assume(i1 %19) - %20 = icmp ne ptr %.sroa.10.0.copyload17, null - tail call void @llvm.assume(i1 %20) +"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit.i": ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit.thread16", %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit.thread" + %.sroa.10.0.copyload14 = phi ptr [ %.sroa.10.0.copyload10, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit.thread" ], [ %.sroa.10.0.copyload24, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit.thread16" ], [ %.sroa.10.0.copyload, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit" ] + %14 = phi <2 x ptr> [ %8, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit.thread" ], [ undef, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit.thread16" ], [ %13, %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit" ] + %15 = icmp ne ptr %.sroa.4.0.copyload, null + tail call void @llvm.assume(i1 %15) + %16 = icmp ne ptr %.sroa.10.0.copyload14, null + tail call void @llvm.assume(i1 %16) store i64 %6, ptr %4, align 8, !alias.scope !374, !noalias !377 %.sroa.6.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %4, i64 8 store ptr %.sroa.4.0.copyload, ptr %.sroa.6.0..sroa_idx.i.i, align 8, !alias.scope !374, !noalias !377 %.sroa.11.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %4, i64 16 - store <2 x ptr> %18, ptr %.sroa.11.0..sroa_idx.i.i, align 8, !alias.scope !374, !noalias !377 - %21 = getelementptr inbounds i8, ptr %4, i64 32 - store ptr %.sroa.10.0.copyload17, ptr %21, align 8, !alias.scope !374, !noalias !377 + store <2 x ptr> %14, ptr %.sroa.11.0..sroa_idx.i.i, align 8, !alias.scope !374, !noalias !377 + %17 = getelementptr inbounds i8, ptr %4, i64 32 + store ptr %.sroa.10.0.copyload14, ptr %17, align 8, !alias.scope !374, !noalias !377 call void @"_ZN123_$LT$diesel..query_builder..nodes..InfixNode$LT$T$C$U$C$M$GT$$u20$as$u20$diesel..query_builder..QueryFragment$LT$DB$GT$$GT$8walk_ast17h01a45cc321ab6b4bE"(ptr noalias nocapture noundef nonnull sret({ i64, [3 x i64] }) align 8 dereferenceable(32) %5, ptr noalias noundef nonnull readonly align 1 %1, ptr noalias nocapture noundef nonnull align 8 dereferenceable(40) %4), !noalias !379 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4), !noalias !370 - %22 = load i64, ptr %5, align 8, !range !5, !noalias !370, !noundef !4 - %23 = icmp eq i64 %22, -9223372036854775798 - br i1 %23, label %24, label %27 + %18 = load i64, ptr %5, align 8, !range !5, !noalias !370, !noundef !4 + %19 = icmp eq i64 %18, -9223372036854775798 + br i1 %19, label %20, label %23 -24: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit.i" +20: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit.i" call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5), !noalias !370 switch i64 %6, label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit9.i" [ - i64 0, label %25 - i64 4, label %26 + i64 0, label %21 + i64 4, label %22 ] -25: ; preds = %24 +21: ; preds = %20 tail call void @"_ZN128_$LT$diesel..pg..query_builder..PgQueryBuilder$u20$as$u20$diesel..query_builder..QueryBuilder$LT$diesel..pg..backend..Pg$GT$$GT$8push_sql17ha3d2d20ec2d05c78E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %.sroa.4.0.copyload, ptr noalias noundef nonnull readonly align 1 @anon.32e934fa05e4456648abfe262fc31d88.1.llvm.9214435125305147345, i64 noundef 1), !noalias !380 br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit9.i" -26: ; preds = %24 +22: ; preds = %20 store i8 0, ptr %.sroa.4.0.copyload, align 1, !noalias !383 br label %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit9.i" -"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit9.i": ; preds = %26, %25, %24 +"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit9.i": ; preds = %22, %21, %20 store i64 -9223372036854775798, ptr %0, align 8, !alias.scope !373, !noalias !385 br label %"_ZN112_$LT$diesel..expression..grouped..Grouped$LT$T$GT$$u20$as$u20$diesel..query_builder..QueryFragment$LT$DB$GT$$GT$8walk_ast17hf904237d327678e3E.exit" -27: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit.i" +23: ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8reborrow17h1b264658aaba5e81E.exit.i" %.sroa.46.0..sroa_idx.i = getelementptr inbounds i8, ptr %5, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.28.i, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.46.0..sroa_idx.i, i64 24, i1 false), !noalias !370 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5), !noalias !370 - store i64 %22, ptr %0, align 8, !alias.scope !373, !noalias !385 + store i64 %18, ptr %0, align 8, !alias.scope !373, !noalias !385 %.sroa.28.0..sroa_idx.i = getelementptr inbounds i8, ptr %0, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.28.0..sroa_idx.i, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.28.i, i64 24, i1 false), !noalias !385 br label %"_ZN112_$LT$diesel..expression..grouped..Grouped$LT$T$GT$$u20$as$u20$diesel..query_builder..QueryFragment$LT$DB$GT$$GT$8walk_ast17hf904237d327678e3E.exit" -"_ZN112_$LT$diesel..expression..grouped..Grouped$LT$T$GT$$u20$as$u20$diesel..query_builder..QueryFragment$LT$DB$GT$$GT$8walk_ast17hf904237d327678e3E.exit": ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit9.i", %27 +"_ZN112_$LT$diesel..expression..grouped..Grouped$LT$T$GT$$u20$as$u20$diesel..query_builder..QueryFragment$LT$DB$GT$$GT$8walk_ast17hf904237d327678e3E.exit": ; preds = %"_ZN6diesel13query_builder8ast_pass17AstPass$LT$DB$GT$8push_sql17h2c5939a20ea34722E.exit9.i", %23 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %.sroa.28.i) ret void } @@ -1651,17 +1647,21 @@ define hidden void @"_ZN6diesel10type_impls6tuples109_$LT$impl$u20$diesel..query %3 = load ptr, ptr %1, align 8, !align !7, !noundef !4 %4 = getelementptr inbounds i8, ptr %1, i64 8 %5 = load i64, ptr %4, align 8 - %6 = getelementptr inbounds i8, ptr %1, i64 16 - %7 = load ptr, ptr %6, align 8, !align !7, !noundef !4 - %8 = getelementptr inbounds i8, ptr %1, i64 24 - %9 = load i64, ptr %8, align 8 + %6 = icmp eq ptr %3, null + %spec.select.i = select i1 %6, i64 undef, i64 %5 + %7 = getelementptr inbounds i8, ptr %1, i64 16 + %8 = load ptr, ptr %7, align 8, !align !7, !noundef !4 + %9 = getelementptr inbounds i8, ptr %1, i64 24 + %10 = load i64, ptr %9, align 8 + %11 = icmp eq ptr %8, null + %spec.select.i2 = select i1 %11, i64 undef, i64 %10 store ptr %3, ptr %0, align 8 - %10 = getelementptr inbounds i8, ptr %0, i64 8 - store i64 %5, ptr %10, align 8 - %11 = getelementptr inbounds i8, ptr %0, i64 16 - store ptr %7, ptr %11, align 8 - %12 = getelementptr inbounds i8, ptr %0, i64 24 - store i64 %9, ptr %12, align 8 + %12 = getelementptr inbounds i8, ptr %0, i64 8 + store i64 %spec.select.i, ptr %12, align 8 + %13 = getelementptr inbounds i8, ptr %0, i64 16 + store ptr %8, ptr %13, align 8 + %14 = getelementptr inbounds i8, ptr %0, i64 24 + store i64 %spec.select.i2, ptr %14, align 8 ret void } diff --git a/bench/git/optimized/date.ll b/bench/git/optimized/date.ll index 4cf71156dc4..d62b2722a08 100644 --- a/bench/git/optimized/date.ll +++ b/bench/git/optimized/date.ll @@ -2102,6 +2102,7 @@ tm_to_time_t.exit.else: ; preds = %tm_to_time_t.exit br label %tm_to_time_t.exit.cont tm_to_time_t.exit.cont: ; preds = %tm_to_time_t.exit, %tm_to_time_t.exit.else + %dummy_timestamp.3 = phi i64 [ undef, %tm_to_time_t.exit.else ], [ %retval.0.i89, %tm_to_time_t.exit ] %cmp53 = icmp eq i64 %retval.0.i89, -1 br i1 %cmp53, label %return, label %if.end56 @@ -2127,7 +2128,7 @@ if.then59.else: ; preds = %if.then59 br label %if.then59.cont if.then59.cont: ; preds = %if.then59, %if.then59.else - %130 = phi i64 [ %retval.0.i89, %if.then59 ], [ %.else.val102, %if.then59.else ] + %130 = phi i64 [ %dummy_timestamp.3, %if.then59 ], [ %.else.val102, %if.then59.else ] %cmp62 = icmp sgt i64 %130, %call61 br i1 %cmp62, label %if.then64, label %if.else66 @@ -3608,14 +3609,14 @@ parse_date_type.exit: ; preds = %do.body.i.i, %do.bo store i32 %retval.0.i, ptr %mode, align 8 %local = getelementptr inbounds i8, ptr %mode, i64 16 store i32 0, ptr %local, align 8 - %scevgep68 = getelementptr i8, ptr %scevgep194.sink.i, i64 6 + %scevgep70 = getelementptr i8, ptr %scevgep194.sink.i, i64 6 br label %do.body.i9 do.body.i9: ; preds = %do.cond.i13, %parse_date_type.exit %str.addr.0.i10 = phi ptr [ %scevgep194.sink.i, %parse_date_type.exit ], [ %incdec.ptr.i14, %do.cond.i13 ] %prefix.addr.0.i11.idx = phi i64 [ 0, %parse_date_type.exit ], [ %prefix.addr.0.i11.add, %do.cond.i13 ] - %exitcond69 = icmp eq i64 %prefix.addr.0.i11.idx, 6 - br i1 %exitcond69, label %if.then12, label %do.cond.i13 + %exitcond71 = icmp eq i64 %prefix.addr.0.i11.idx, 6 + br i1 %exitcond71, label %if.then12, label %do.cond.i13 do.cond.i13: ; preds = %do.body.i9 %prefix.addr.0.i11.ptr = getelementptr inbounds i8, ptr @.str.35, i64 %prefix.addr.0.i11.idx @@ -3631,18 +3632,18 @@ if.then12: ; preds = %do.body.i9 br label %if.end14 if.end14: ; preds = %do.cond.i13, %if.then12 - %p.134 = phi ptr [ %scevgep68, %if.then12 ], [ %scevgep194.sink.i, %do.cond.i13 ] + %p.136 = phi ptr [ %scevgep70, %if.then12 ], [ %scevgep194.sink.i, %do.cond.i13 ] br i1 %cmp, label %do.body.i19.preheader, label %if.else21 do.body.i19.preheader: ; preds = %if.end14 - %scevgep70 = getelementptr i8, ptr %p.134, i64 1 + %scevgep72 = getelementptr i8, ptr %p.136, i64 1 br label %do.body.i19 do.body.i19: ; preds = %do.body.i19.preheader, %do.cond.i23 - %str.addr.0.i20 = phi ptr [ %incdec.ptr.i24, %do.cond.i23 ], [ %p.134, %do.body.i19.preheader ] + %str.addr.0.i20 = phi ptr [ %incdec.ptr.i24, %do.cond.i23 ], [ %p.136, %do.body.i19.preheader ] %prefix.addr.0.i21.idx = phi i64 [ %prefix.addr.0.i21.add, %do.cond.i23 ], [ 0, %do.body.i19.preheader ] - %exitcond71 = icmp eq i64 %prefix.addr.0.i21.idx, 1 - br i1 %exitcond71, label %if.end19, label %do.cond.i23 + %exitcond73 = icmp eq i64 %prefix.addr.0.i21.idx, 1 + br i1 %exitcond73, label %if.end19, label %do.cond.i23 do.cond.i23: ; preds = %do.body.i19 %prefix.addr.0.i21.ptr = getelementptr inbounds i8, ptr @.str.36, i64 %prefix.addr.0.i21.idx @@ -3658,13 +3659,13 @@ if.then18: ; preds = %do.cond.i23 unreachable if.end19: ; preds = %do.body.i19 - %call20 = tail call ptr @xstrdup(ptr noundef %scevgep70) #19 + %call20 = tail call ptr @xstrdup(ptr noundef %scevgep72) #19 %strftime_fmt = getelementptr inbounds i8, ptr %mode, i64 8 store ptr %call20, ptr %strftime_fmt, align 8 br label %if.end25 if.else21: ; preds = %if.end14 - %32 = load i8, ptr %p.134, align 1 + %32 = load i8, ptr %p.136, align 1 %tobool22.not = icmp eq i8 %32, 0 br i1 %tobool22.not, label %if.end25, label %if.then23 diff --git a/bench/git/optimized/diff.ll b/bench/git/optimized/diff.ll index 85c41d51412..d51ab60bf1a 100644 --- a/bench/git/optimized/diff.ll +++ b/bench/git/optimized/diff.ll @@ -1326,8 +1326,8 @@ do.cond.i: ; preds = %do.body.i do.body.i31: ; preds = %do.cond.i, %do.cond.i35 %str.addr.0.i32 = phi ptr [ %incdec.ptr.i36, %do.cond.i35 ], [ %var, %do.cond.i ] %prefix.addr.0.i33.idx = phi i64 [ %prefix.addr.0.i33.add, %do.cond.i35 ], [ 0, %do.cond.i ] - %exitcond62 = icmp eq i64 %prefix.addr.0.i33.idx, 11 - br i1 %exitcond62, label %if.then7, label %do.cond.i35 + %exitcond63 = icmp eq i64 %prefix.addr.0.i33.idx, 11 + br i1 %exitcond63, label %if.then7, label %do.cond.i35 do.cond.i35: ; preds = %do.body.i31 %prefix.addr.0.i33.ptr = getelementptr inbounds i8, ptr @.str.32, i64 %prefix.addr.0.i33.idx @@ -1349,7 +1349,7 @@ parse_diff_color_slot.exit: ; preds = %if.then7 br i1 %cmp9, label %return, label %if.end11 if.end11: ; preds = %if.then7, %parse_diff_color_slot.exit - %retval.0.i54 = phi i32 [ %call1.i, %parse_diff_color_slot.exit ], [ 1, %if.then7 ] + %retval.0.i55 = phi i32 [ %call1.i, %parse_diff_color_slot.exit ], [ 1, %if.then7 ] %tobool12.not = icmp eq ptr %value, null br i1 %tobool12.not, label %if.then13, label %if.end16 @@ -1358,7 +1358,7 @@ if.then13: ; preds = %if.end11 br label %return if.end16: ; preds = %if.end11 - %idxprom = zext nneg i32 %retval.0.i54 to i64 + %idxprom = zext nneg i32 %retval.0.i55 to i64 %arrayidx = getelementptr inbounds [23 x [75 x i8]], ptr @diff_colors, i64 0, i64 %idxprom %call17 = tail call i32 @color_parse(ptr noundef nonnull %value, ptr noundef nonnull %arrayidx) #31 br label %return @@ -18163,11 +18163,11 @@ land.lhs.true12.i: ; preds = %land.lhs.true.i %tobool14.not.i = icmp ne i16 %95, 0 %96 = and i16 %95, -4096 %cmp19.i = icmp ne i16 %96, -8192 - %or.cond179.not405.i = and i1 %tobool14.not.i, %cmp19.i + %or.cond179.not407.i = and i1 %tobool14.not.i, %cmp19.i %97 = or i16 %95, %93 - %or.cond394.demorgan.not.i = icmp eq i16 %97, 0 - %or.cond397.i = or i1 %or.cond394.demorgan.not.i, %or.cond179.not405.i - br i1 %or.cond397.i, label %if.end71.i, label %if.then24.i + %or.cond396.demorgan.not.i = icmp eq i16 %97, 0 + %or.cond399.i = or i1 %or.cond396.demorgan.not.i, %or.cond179.not407.i + br i1 %or.cond399.i, label %if.end71.i, label %if.then24.i if.then24.i: ; preds = %land.lhs.true12.i %path.i = getelementptr inbounds i8, ptr %one, i64 40 @@ -18205,11 +18205,11 @@ land.lhs.true42.i: ; preds = %land.lhs.true33.i %tobool44.not.i = icmp ne i16 %102, 0 %103 = and i16 %102, -4096 %cmp49.i = icmp ne i16 %103, -8192 - %or.cond181.not404.i = and i1 %tobool44.not.i, %cmp49.i + %or.cond181.not406.i = and i1 %tobool44.not.i, %cmp49.i %104 = or i16 %102, %100 - %or.cond395.demorgan.not.i = icmp eq i16 %104, 0 - %or.cond398.i = or i1 %or.cond395.demorgan.not.i, %or.cond181.not404.i - br i1 %or.cond398.i, label %if.end71.i, label %if.then54.i + %or.cond397.demorgan.not.i = icmp eq i16 %104, 0 + %or.cond400.i = or i1 %or.cond397.demorgan.not.i, %or.cond181.not406.i + br i1 %or.cond400.i, label %if.end71.i, label %if.then54.i if.then54.i: ; preds = %land.lhs.true42.i %path55.i = getelementptr inbounds i8, ptr %one, i64 40 @@ -18347,8 +18347,8 @@ if.end78.i: ; preds = %diff_filespec_load_ %cond120.i = select i1 %cmp115.not.i, ptr %call104.i, ptr @.str.249 %arrayidx121.i = getelementptr inbounds i8, ptr %lbl.i, i64 8 store ptr %cond120.i, ptr %arrayidx121.i, align 8 - %or.cond396.i = select i1 %cmp107.not.i, i1 true, i1 %cmp115.not.i - br i1 %or.cond396.i, label %if.end127.i, label %if.then124.i + %or.cond398.i = select i1 %cmp107.not.i, i1 true, i1 %cmp115.not.i + br i1 %or.cond398.i, label %if.end127.i, label %if.then124.i if.then124.i: ; preds = %if.end78.i store ptr %call98.i, ptr %lbl.i, align 16 @@ -18931,11 +18931,11 @@ land.lhs.true224.i: ; preds = %if.then222.i %data225.i = getelementptr inbounds i8, ptr %two, i64 48 %194 = load ptr, ptr %data225.i, align 8 %tobool226.not.i = icmp eq ptr %194, null - %.pr.pre416.i = load i16, ptr %mode79.i, align 8 - %195 = and i16 %.pr.pre416.i, -4096 + %.pr.pre418.i = load i16, ptr %mode79.i, align 8 + %195 = and i16 %.pr.pre418.i, -4096 %cmp231.i = icmp eq i16 %195, -32768 - %or.cond426.i = select i1 %tobool226.not.i, i1 %cmp231.i, i1 false - br i1 %or.cond426.i, label %land.lhs.true233.i, label %if.end264.i + %or.cond428.i = select i1 %tobool226.not.i, i1 %cmp231.i, i1 false + br i1 %or.cond428.i, label %land.lhs.true233.i, label %if.end264.i land.lhs.true233.i: ; preds = %land.lhs.true224.i %196 = load i16, ptr %mode87.i, align 8 @@ -19001,11 +19001,11 @@ diff_line_prefix.exit250.i: ; preds = %if.end.i245.i, %if. br label %if.end.i354.i if.end264.thread.i: ; preds = %land.lhs.true239.i, %land.lhs.true233.i - %repo265419.i = getelementptr inbounds i8, ptr %o, i64 576 + %repo265421.i = getelementptr inbounds i8, ptr %o, i64 576 br label %if.else.i253.i if.end264.i: ; preds = %land.lhs.true224.i, %if.then222.if.end264thread-pre-split_crit_edge.i - %210 = phi i16 [ %.pr.pre.i, %if.then222.if.end264thread-pre-split_crit_edge.i ], [ %.pr.pre416.i, %land.lhs.true224.i ] + %210 = phi i16 [ %.pr.pre.i, %if.then222.if.end264thread-pre-split_crit_edge.i ], [ %.pr.pre418.i, %land.lhs.true224.i ] %repo265.i = getelementptr inbounds i8, ptr %o, i64 576 %cmp.not.i252.i = icmp eq i16 %210, 0 br i1 %cmp.not.i252.i, label %if.then.i258.i, label %if.else.i253.i @@ -19015,8 +19015,8 @@ if.then.i258.i: ; preds = %if.end264.i br label %lor.lhs.false269.i if.else.i253.i: ; preds = %if.end264.i, %if.end264.thread.i - %repo265422.i = phi ptr [ %repo265419.i, %if.end264.thread.i ], [ %repo265.i, %if.end264.i ] - %211 = load ptr, ptr %repo265422.i, align 8 + %repo265424.i = phi ptr [ %repo265421.i, %if.end264.thread.i ], [ %repo265.i, %if.end264.i ] + %211 = load ptr, ptr %repo265424.i, align 8 %call.i254.i = call i32 @diff_populate_filespec(ptr noundef %211, ptr noundef nonnull %one, ptr noundef null) %tobool.not.i255.i = icmp eq i32 %call.i254.i, 0 br i1 %tobool.not.i255.i, label %if.end3.i.i, label %if.then274.i @@ -19030,10 +19030,10 @@ if.end3.i.i: ; preds = %if.else.i253.i lor.lhs.false269.i: ; preds = %if.end3.i.i, %if.then.i258.i %214 = phi ptr [ %212, %if.end3.i.i ], [ @.str.38, %if.then.i258.i ] - %repo265421.i = phi ptr [ %repo265422.i, %if.end3.i.i ], [ %repo265.i, %if.then.i258.i ] - %.pre418.i = phi i64 [ %213, %if.end3.i.i ], [ 0, %if.then.i258.i ] + %repo265423.i = phi ptr [ %repo265424.i, %if.end3.i.i ], [ %repo265.i, %if.then.i258.i ] + %.pre420.i = phi i64 [ %213, %if.end3.i.i ], [ 0, %if.then.i258.i ] %size6.i.i = getelementptr inbounds i8, ptr %mf1.i, i64 8 - store i64 %.pre418.i, ptr %size6.i.i, align 8 + store i64 %.pre420.i, ptr %size6.i.i, align 8 %215 = load i16, ptr %mode87.i, align 8 %cmp.not.i260.i = icmp eq i16 %215, 0 br i1 %cmp.not.i260.i, label %if.then.i271.i, label %if.else.i261.i @@ -19043,7 +19043,7 @@ if.then.i271.i: ; preds = %lor.lhs.false269.i br label %if.end275.i if.else.i261.i: ; preds = %lor.lhs.false269.i - %216 = load ptr, ptr %repo265421.i, align 8 + %216 = load ptr, ptr %repo265423.i, align 8 %call.i262.i = call i32 @diff_populate_filespec(ptr noundef %216, ptr noundef nonnull %two, ptr noundef null) %tobool.not.i263.i = icmp eq i32 %call.i262.i, 0 br i1 %tobool.not.i263.i, label %if.end3.i265.i, label %if.then274.i @@ -19065,11 +19065,11 @@ if.end275.i: ; preds = %if.end3.i265.i, %if %.sink.i269.i = phi i64 [ %218, %if.end3.i265.i ], [ 0, %if.then.i271.i ] %size6.i270.i = getelementptr inbounds i8, ptr %mf2.i, i64 8 store i64 %.sink.i269.i, ptr %size6.i270.i, align 8 - %cmp277.i = icmp eq i64 %.pre418.i, %.sink.i269.i + %cmp277.i = icmp eq i64 %.pre420.i, %.sink.i269.i br i1 %cmp277.i, label %land.lhs.true279.i, label %if.end291.i land.lhs.true279.i: ; preds = %if.end275.i - %bcmp.i = call i32 @bcmp(ptr %214, ptr %219, i64 %.pre418.i) + %bcmp.i = call i32 @bcmp(ptr %214, ptr %219, i64 %.pre420.i) %tobool283.not.i = icmp eq i32 %bcmp.i, 0 br i1 %tobool283.not.i, label %if.then284.i, label %if.end291.i @@ -19370,7 +19370,7 @@ do.cond.i.i: ; preds = %do.body.i.i br i1 %cmp.i318.i, label %do.body.i.i, label %do.body.i320.preheader.i, !llvm.loop !7 do.body.i320.preheader.i: ; preds = %do.cond.i.i - %scevgep414.i = getelementptr i8, ptr %call368.i, i64 2 + %scevgep416.i = getelementptr i8, ptr %call368.i, i64 2 br label %do.body.i320.i if.then373.i: ; preds = %do.body.i.i @@ -19381,8 +19381,8 @@ if.then373.i: ; preds = %do.body.i.i do.body.i320.i: ; preds = %do.cond.i324.i, %do.body.i320.preheader.i %str.addr.0.i321.i = phi ptr [ %incdec.ptr.i325.i, %do.cond.i324.i ], [ %call368.i, %do.body.i320.preheader.i ] %prefix.addr.0.i322.idx.i = phi i64 [ %prefix.addr.0.i322.add.i, %do.cond.i324.i ], [ 0, %do.body.i320.preheader.i ] - %exitcond415.i = icmp eq i64 %prefix.addr.0.i322.idx.i, 2 - br i1 %exitcond415.i, label %if.then378.i, label %do.cond.i324.i + %exitcond417.i = icmp eq i64 %prefix.addr.0.i322.idx.i, 2 + br i1 %exitcond417.i, label %if.then378.i, label %do.cond.i324.i do.cond.i324.i: ; preds = %do.body.i320.i %prefix.addr.0.i322.ptr.i = getelementptr inbounds i8, ptr @.str.434, i64 %prefix.addr.0.i322.idx.i @@ -19394,7 +19394,7 @@ do.cond.i324.i: ; preds = %do.body.i320.i br i1 %cmp.i327.i, label %do.body.i320.i, label %if.end383.i, !llvm.loop !7 if.then378.i: ; preds = %do.body.i320.i - %call379.i = call i64 @strtoul(ptr nocapture noundef nonnull %scevgep414.i, ptr noundef null, i32 noundef 10) #31 + %call379.i = call i64 @strtoul(ptr nocapture noundef nonnull %scevgep416.i, ptr noundef null, i32 noundef 10) #31 store i64 %call379.i, ptr %xecfg.i, align 8 br label %if.end383.i diff --git a/bench/gromacs/optimized/handlerestart.cpp.ll b/bench/gromacs/optimized/handlerestart.cpp.ll index 7571930ede2..f85a3ca1c9b 100644 --- a/bench/gromacs/optimized/handlerestart.cpp.ll +++ b/bench/gromacs/optimized/handlerestart.cpp.ll @@ -587,13 +587,13 @@ _ZNSt10filesystem7__cxx114pathD2Ev.exit95.i: ; preds = %118, %115 .noexc98.i: ; preds = %161 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %9) - br i1 %159, label %.lr.ph.i88, label %.loopexit202 + br i1 %159, label %.lr.ph.i88, label %.loopexit201 .lr.ph.i88: ; preds = %.noexc98.i, %.thread14.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %.thread14.i ], [ 0, %.noexc98.i ] %162 = getelementptr inbounds %struct.t_filenm, ptr %6, i64 %indvars.iv.i %163 = invoke noundef zeroext i1 @_Z9is_outputPK8t_filenm(ptr noundef %162) - to label %.noexc91 unwind label %.loopexit197 + to label %.noexc91 unwind label %.loopexit196 .noexc91: ; preds = %.lr.ph.i88 br i1 %163, label %164, label %.thread14.i @@ -602,7 +602,7 @@ _ZNSt10filesystem7__cxx114pathD2Ev.exit95.i: ; preds = %118, %115 %165 = getelementptr inbounds i8, ptr %162, i64 32 %166 = load ptr, ptr %165, align 8, !noalias !5 invoke void @_ZNSt10filesystem7__cxx114pathC2INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES1_EERKT_NS1_6formatE(ptr noundef nonnull align 8 dereferenceable(40) %9, ptr noundef nonnull align 8 dereferenceable(32) %166, i8 noundef zeroext 2) - to label %.noexc92 unwind label %.loopexit197 + to label %.noexc92 unwind label %.loopexit196 .noexc92: ; preds = %164 %167 = call noundef i32 @_ZNKSt10filesystem7__cxx114path7compareERKS1_(ptr noundef nonnull align 8 dereferenceable(40) %54, ptr noundef nonnull align 8 dereferenceable(40) %9) #19, !noalias !5 @@ -623,41 +623,41 @@ _ZNSt10filesystem7__cxx114pathD2Ev.exit95.i: ; preds = %118, %115 .thread14.i: ; preds = %170, %.noexc91 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i - br i1 %exitcond.not.i, label %.loopexit202, label %.lr.ph.i88, !llvm.loop !8 + br i1 %exitcond.not.i, label %.loopexit201, label %.lr.ph.i88, !llvm.loop !8 171: ; preds = %170 %172 = invoke noundef zeroext i1 @_Z10gmx_fexistRKNSt10filesystem7__cxx114pathE(ptr noundef nonnull align 8 dereferenceable(40) %54) - to label %.loopexit202 unwind label %.loopexit.split-lp198 + to label %.loopexit201 unwind label %.loopexit.split-lp197 -.loopexit202: ; preds = %.thread14.i, %.noexc98.i, %171 +.loopexit201: ; preds = %.thread14.i, %.noexc98.i, %171 %173 = phi i1 [ false, %.noexc98.i ], [ %172, %171 ], [ false, %.thread14.i ] call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %9) %174 = load ptr, ptr %158, align 8, !noalias !5 %.not.i.i.i.i.i.i.i.i = icmp eq ptr %174, null br i1 %.not.i.i.i.i.i.i.i.i, label %"_ZN9__gnu_cxx5__ops10_Iter_predIZN3gmx12_GLOBAL__N_122chooseStartingBehaviorENS2_17AppendingBehaviorEiP8t_filenmE3$_0EclINS_17__normal_iteratorIP19gmx_file_position_tSt6vectorISB_SaISB_EEEEEEbT_.exit.i.i.i", label %175 -175: ; preds = %.loopexit202 +175: ; preds = %.loopexit201 call void @_ZNKSt10filesystem7__cxx114path5_List13_Impl_deleterclEPNS2_5_ImplE(ptr noundef nonnull align 1 dereferenceable(1) %158, ptr noundef nonnull %174) #19, !noalias !5 br label %"_ZN9__gnu_cxx5__ops10_Iter_predIZN3gmx12_GLOBAL__N_122chooseStartingBehaviorENS2_17AppendingBehaviorEiP8t_filenmE3$_0EclINS_17__normal_iteratorIP19gmx_file_position_tSt6vectorISB_SaISB_EEEEEEbT_.exit.i.i.i" -.loopexit197: ; preds = %.lr.ph.i88, %164 - %lpad.loopexit199 = landingpad { ptr, i32 } +.loopexit196: ; preds = %.lr.ph.i88, %164 + %lpad.loopexit198 = landingpad { ptr, i32 } cleanup catch ptr @_ZTISt9exception br label %176 -.loopexit.split-lp198: ; preds = %171 - %lpad.loopexit.split-lp200 = landingpad { ptr, i32 } +.loopexit.split-lp197: ; preds = %171 + %lpad.loopexit.split-lp199 = landingpad { ptr, i32 } cleanup catch ptr @_ZTISt9exception br label %176 -176: ; preds = %.loopexit.split-lp198, %.loopexit197 - %lpad.phi201 = phi { ptr, i32 } [ %lpad.loopexit199, %.loopexit197 ], [ %lpad.loopexit.split-lp200, %.loopexit.split-lp198 ] +176: ; preds = %.loopexit.split-lp197, %.loopexit196 + %lpad.phi200 = phi { ptr, i32 } [ %lpad.loopexit198, %.loopexit196 ], [ %lpad.loopexit.split-lp199, %.loopexit.split-lp197 ] call void @_ZNSt10filesystem7__cxx114pathD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %54) #19, !noalias !5 br label %.body.i -"_ZN9__gnu_cxx5__ops10_Iter_predIZN3gmx12_GLOBAL__N_122chooseStartingBehaviorENS2_17AppendingBehaviorEiP8t_filenmE3$_0EclINS_17__normal_iteratorIP19gmx_file_position_tSt6vectorISB_SaISB_EEEEEEbT_.exit.i.i.i": ; preds = %175, %.loopexit202 +"_ZN9__gnu_cxx5__ops10_Iter_predIZN3gmx12_GLOBAL__N_122chooseStartingBehaviorENS2_17AppendingBehaviorEiP8t_filenmE3$_0EclINS_17__normal_iteratorIP19gmx_file_position_tSt6vectorISB_SaISB_EEEEEEbT_.exit.i.i.i": ; preds = %175, %.loopexit201 %177 = xor i1 %173, true store ptr null, ptr %158, align 8, !noalias !5 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #19, !noalias !5 @@ -1031,7 +1031,7 @@ _ZN3gmx12_GLOBAL__N_123StartingBehaviorHandlerD2Ev.exit.i: ; preds = %.lr.ph.i.i br label %281 .body.i: ; preds = %251, %249, %235, %234, %209, %189, %.loopexit.split-lp.i, %.loopexit.i, %176, %154 - %.pn82.i = phi { ptr, i32 } [ %190, %189 ], [ %.pn79.pn215.i, %209 ], [ %.pn75.pn.pn223.i, %235 ], [ %.pn75.i, %234 ], [ %.pn.pn230.i, %251 ], [ %250, %249 ], [ %155, %154 ], [ %lpad.phi201, %176 ], [ %lpad.loopexit.i, %.loopexit.i ], [ %lpad.loopexit.split-lp.i, %.loopexit.split-lp.i ] + %.pn82.i = phi { ptr, i32 } [ %190, %189 ], [ %.pn79.pn215.i, %209 ], [ %.pn75.pn.pn223.i, %235 ], [ %.pn75.i, %234 ], [ %.pn.pn230.i, %251 ], [ %250, %249 ], [ %155, %154 ], [ %lpad.phi200, %176 ], [ %lpad.loopexit.i, %.loopexit.i ], [ %lpad.loopexit.split-lp.i, %.loopexit.split-lp.i ] %278 = load ptr, ptr %66, align 8, !noalias !5 %.not.i.i.i133.i = icmp eq ptr %278, null br i1 %.not.i.i.i133.i, label %.body, label %279 @@ -1098,11 +1098,11 @@ _ZN3gmx12_GLOBAL__N_123StartingBehaviorHandleraSEOS1_.exit: ; preds = %.noexc, % br label %_ZN3gmx12_GLOBAL__N_123StartingBehaviorHandlerD2Ev.exit _ZN3gmx12_GLOBAL__N_123StartingBehaviorHandlerD2Ev.exit: ; preds = %281, %_ZN3gmx12_GLOBAL__N_123StartingBehaviorHandleraSEOS1_.exit - %.sroa.26.0174 = phi i8 [ 0, %_ZN3gmx12_GLOBAL__N_123StartingBehaviorHandleraSEOS1_.exit ], [ 1, %281 ] - %.sroa.0101.0136171 = phi i32 [ 2, %_ZN3gmx12_GLOBAL__N_123StartingBehaviorHandleraSEOS1_.exit ], [ %.sink253.i, %281 ] - %.sroa.14.0144169 = phi ptr [ undef, %_ZN3gmx12_GLOBAL__N_123StartingBehaviorHandleraSEOS1_.exit ], [ %.0.lcssa.i.i.i.i.i.i.i.i.i.i.i121.sink.i, %281 ] - %.sroa.8102.0146166 = phi ptr [ undef, %_ZN3gmx12_GLOBAL__N_123StartingBehaviorHandleraSEOS1_.exit ], [ %.sink251.i, %281 ] - %.sroa.5.sroa.2.0156164 = phi i32 [ undef, %_ZN3gmx12_GLOBAL__N_123StartingBehaviorHandleraSEOS1_.exit ], [ %.sroa.2.sink.i.sroa.phi.sroa.speculated, %281 ] + %.sroa.26.0173 = phi i8 [ 0, %_ZN3gmx12_GLOBAL__N_123StartingBehaviorHandleraSEOS1_.exit ], [ 1, %281 ] + %.sroa.21.0171 = phi ptr [ undef, %_ZN3gmx12_GLOBAL__N_123StartingBehaviorHandleraSEOS1_.exit ], [ %.0.lcssa.i.i.i.i.i.i.i.i.i.i.i121.sink.i, %281 ] + %.sroa.0101.0136168 = phi i32 [ 2, %_ZN3gmx12_GLOBAL__N_123StartingBehaviorHandleraSEOS1_.exit ], [ %.sink253.i, %281 ] + %.sroa.8102.0145165 = phi ptr [ undef, %_ZN3gmx12_GLOBAL__N_123StartingBehaviorHandleraSEOS1_.exit ], [ %.sink251.i, %281 ] + %.sroa.5.sroa.2.0155163 = phi i32 [ undef, %_ZN3gmx12_GLOBAL__N_123StartingBehaviorHandleraSEOS1_.exit ], [ %.sroa.2.sink.i.sroa.phi.sroa.speculated, %281 ] call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %38) call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %39) call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %40) @@ -1123,7 +1123,7 @@ _ZN3gmx12_GLOBAL__N_123StartingBehaviorHandlerD2Ev.exit: ; preds = %281, %_ZN3gm br i1 %.not117.i, label %_ZNK3gmx12_GLOBAL__N_123StartingBehaviorHandler19makeIndexOfNextPartENS_17AppendingBehaviorE.exit, label %282 282: ; preds = %_ZN3gmx12_GLOBAL__N_123StartingBehaviorHandlerD2Ev.exit - invoke void @_Z28gatherIntFromMultiSimulationPK14gmx_multisim_ti(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.69") align 8 %38, ptr noundef nonnull %3, i32 noundef %.sroa.0101.0136171) + invoke void @_Z28gatherIntFromMultiSimulationPK14gmx_multisim_ti(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.69") align 8 %38, ptr noundef nonnull %3, i32 noundef %.sroa.0101.0136168) to label %.noexc43 unwind label %.loopexit.split-lp .noexc43: ; preds = %282 @@ -1396,11 +1396,11 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit73.i: br label %_ZNSt6vectorIiSaIiEED2Ev.exit89.i 357: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit73.i - %358 = icmp eq i32 %.sroa.0101.0136171, 2 + %358 = icmp eq i32 %.sroa.0101.0136168, 2 br i1 %358, label %_ZNSt6vectorIiSaIiEED2Ev.exit.i, label %359 359: ; preds = %357 - invoke void @_Z28gatherIntFromMultiSimulationPK14gmx_multisim_ti(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.69") align 8 %48, ptr noundef nonnull %3, i32 noundef %.sroa.5.sroa.2.0156164) + invoke void @_Z28gatherIntFromMultiSimulationPK14gmx_multisim_ti(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.69") align 8 %48, ptr noundef nonnull %3, i32 noundef %.sroa.5.sroa.2.0155163) to label %360 unwind label %339 360: ; preds = %359 @@ -1616,15 +1616,15 @@ _ZNK3gmx12_GLOBAL__N_123StartingBehaviorHandler19makeIndexOfNextPartENS_17Append call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %51) call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %52) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %53) - %422 = icmp eq i32 %.sroa.0101.0136171, 1 - %423 = icmp eq i32 %.sroa.0101.0136171, 2 + %422 = icmp eq i32 %.sroa.0101.0136168, 1 + %423 = icmp eq i32 %.sroa.0101.0136168, 2 %424 = icmp eq i32 %4, 2 %or.cond.i46 = and i1 %424, %423 %.sroa.3.0.i = or i1 %422, %or.cond.i46 br i1 %.sroa.3.0.i, label %425, label %440 425: ; preds = %_ZNK3gmx12_GLOBAL__N_123StartingBehaviorHandler19makeIndexOfNextPartENS_17AppendingBehaviorE.exit - %426 = add nsw i32 %.sroa.5.sroa.2.0156164, 1 + %426 = add nsw i32 %.sroa.5.sroa.2.0155163, 1 %.sroa.09.0.i = select i1 %422, i32 %426, i32 1 invoke void (ptr, ptr, ...) @_ZN3gmx12formatStringB5cxx11EPKcz(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %82, ptr noundef nonnull @.str, i32 noundef %.sroa.09.0.i) to label %427 unwind label %.loopexit.split-lp @@ -1645,8 +1645,8 @@ _ZNK3gmx12_GLOBAL__N_123StartingBehaviorHandler19makeIndexOfNextPartENS_17Append br label %.body .loopexit.split-lp: ; preds = %425, %440, %442, %89, %91, %.noexc29, %113, %282, %455, %_ZNSt10filesystem7__cxx114pathD2Ev.exit.i53, %.noexc62, %531, %562 - %.sroa.14119.1.ph = phi ptr [ undef, %89 ], [ undef, %91 ], [ undef, %.noexc29 ], [ undef, %113 ], [ %.sroa.8102.0146166, %282 ], [ %.sroa.8102.0146166, %425 ], [ %.sroa.8102.0146166, %440 ], [ %.sroa.8102.0146166, %442 ], [ %.sroa.8102.0146166, %455 ], [ %.sroa.8102.0146166, %_ZNSt10filesystem7__cxx114pathD2Ev.exit.i53 ], [ %.sroa.8102.0146166, %.noexc62 ], [ %.sroa.8102.0146166, %531 ], [ %.sroa.8102.0146166, %562 ] - %.sroa.26.1.ph = phi i8 [ 0, %89 ], [ 0, %91 ], [ 0, %.noexc29 ], [ 0, %113 ], [ %.sroa.26.0174, %282 ], [ %.sroa.26.0174, %425 ], [ %.sroa.26.0174, %440 ], [ %.sroa.26.0174, %442 ], [ %.sroa.26.0174, %455 ], [ %.sroa.26.0174, %_ZNSt10filesystem7__cxx114pathD2Ev.exit.i53 ], [ %.sroa.26.0174, %.noexc62 ], [ %.sroa.26.0174, %531 ], [ %.sroa.26.0174, %562 ] + %.sroa.14119.1.ph = phi ptr [ undef, %89 ], [ undef, %91 ], [ undef, %.noexc29 ], [ undef, %113 ], [ %.sroa.8102.0145165, %282 ], [ %.sroa.8102.0145165, %425 ], [ %.sroa.8102.0145165, %440 ], [ %.sroa.8102.0145165, %442 ], [ %.sroa.8102.0145165, %455 ], [ %.sroa.8102.0145165, %_ZNSt10filesystem7__cxx114pathD2Ev.exit.i53 ], [ %.sroa.8102.0145165, %.noexc62 ], [ %.sroa.8102.0145165, %531 ], [ %.sroa.8102.0145165, %562 ] + %.sroa.26.1.ph = phi i8 [ 0, %89 ], [ 0, %91 ], [ 0, %.noexc29 ], [ 0, %113 ], [ %.sroa.26.0173, %282 ], [ %.sroa.26.0173, %425 ], [ %.sroa.26.0173, %440 ], [ %.sroa.26.0173, %442 ], [ %.sroa.26.0173, %455 ], [ %.sroa.26.0173, %_ZNSt10filesystem7__cxx114pathD2Ev.exit.i53 ], [ %.sroa.26.0173, %.noexc62 ], [ %.sroa.26.0173, %531 ], [ %.sroa.26.0173, %562 ] %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup catch ptr @_ZTISt9exception @@ -1660,8 +1660,8 @@ _ZNK3gmx12_GLOBAL__N_123StartingBehaviorHandler19makeIndexOfNextPartENS_17Append br label %.body .body: ; preds = %.loopexit, %.loopexit.split-lp, %.body.i50, %548, %569, %571, %578, %279, %.body.i, %138, %137, %129, %112, %110, %106, %_ZN3gmx16EnumerationArrayINS_16StartingBehaviorENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELS1_3EED2Ev.exit90.i, %420, %431 - %.sroa.14119.5 = phi ptr [ %.sroa.8102.0146166, %431 ], [ undef, %279 ], [ undef, %.body.i ], [ undef, %138 ], [ undef, %137 ], [ undef, %129 ], [ undef, %112 ], [ undef, %110 ], [ undef, %106 ], [ %.sroa.8102.0146166, %420 ], [ %.sroa.8102.0146166, %_ZN3gmx16EnumerationArrayINS_16StartingBehaviorENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELS1_3EED2Ev.exit90.i ], [ %.sroa.8102.0146166, %578 ], [ %.sroa.8102.0146166, %571 ], [ %.sroa.8102.0146166, %569 ], [ %.sroa.8102.0146166, %548 ], [ %.sroa.8102.0146166, %.body.i50 ], [ %.sroa.8102.0146166, %.loopexit ], [ %.sroa.14119.1.ph, %.loopexit.split-lp ] - %.sroa.26.5 = phi i8 [ %.sroa.26.0174, %431 ], [ 0, %279 ], [ 0, %.body.i ], [ 0, %138 ], [ 0, %137 ], [ 0, %129 ], [ 0, %112 ], [ 0, %110 ], [ 0, %106 ], [ %.sroa.26.0174, %420 ], [ %.sroa.26.0174, %_ZN3gmx16EnumerationArrayINS_16StartingBehaviorENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELS1_3EED2Ev.exit90.i ], [ %.sroa.26.0174, %578 ], [ %.sroa.26.0174, %571 ], [ %.sroa.26.0174, %569 ], [ %.sroa.26.0174, %548 ], [ %.sroa.26.0174, %.body.i50 ], [ %.sroa.26.0174, %.loopexit ], [ %.sroa.26.1.ph, %.loopexit.split-lp ] + %.sroa.14119.5 = phi ptr [ %.sroa.8102.0145165, %431 ], [ undef, %279 ], [ undef, %.body.i ], [ undef, %138 ], [ undef, %137 ], [ undef, %129 ], [ undef, %112 ], [ undef, %110 ], [ undef, %106 ], [ %.sroa.8102.0145165, %420 ], [ %.sroa.8102.0145165, %_ZN3gmx16EnumerationArrayINS_16StartingBehaviorENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELS1_3EED2Ev.exit90.i ], [ %.sroa.8102.0145165, %578 ], [ %.sroa.8102.0145165, %571 ], [ %.sroa.8102.0145165, %569 ], [ %.sroa.8102.0145165, %548 ], [ %.sroa.8102.0145165, %.body.i50 ], [ %.sroa.8102.0145165, %.loopexit ], [ %.sroa.14119.1.ph, %.loopexit.split-lp ] + %.sroa.26.5 = phi i8 [ %.sroa.26.0173, %431 ], [ 0, %279 ], [ 0, %.body.i ], [ 0, %138 ], [ 0, %137 ], [ 0, %129 ], [ 0, %112 ], [ 0, %110 ], [ 0, %106 ], [ %.sroa.26.0173, %420 ], [ %.sroa.26.0173, %_ZN3gmx16EnumerationArrayINS_16StartingBehaviorENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELS1_3EED2Ev.exit90.i ], [ %.sroa.26.0173, %578 ], [ %.sroa.26.0173, %571 ], [ %.sroa.26.0173, %569 ], [ %.sroa.26.0173, %548 ], [ %.sroa.26.0173, %.body.i50 ], [ %.sroa.26.0173, %.loopexit ], [ %.sroa.26.1.ph, %.loopexit.split-lp ] %.pn = phi { ptr, i32 } [ %432, %431 ], [ %.pn82.i, %279 ], [ %.pn82.i, %.body.i ], [ %.pn84.pn.pn206.i, %138 ], [ %.pn84.i, %137 ], [ %130, %129 ], [ %.pn88.pn199.i, %112 ], [ %111, %110 ], [ %107, %106 ], [ %.pn58.pn.pn.pn.i, %420 ], [ %.pn58.pn.pn.pn.i, %_ZN3gmx16EnumerationArrayINS_16StartingBehaviorENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELS1_3EED2Ev.exit90.i ], [ %.pn.pn74.i, %578 ], [ %572, %571 ], [ %570, %569 ], [ %.pn34.pn66.i, %548 ], [ %eh.lpad-body.i, %.body.i50 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] %.017 = extractvalue { ptr, i32 } %.pn, 1 %433 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt9exception) #19 @@ -1698,14 +1698,14 @@ _ZNSt15__exception_ptr13exception_ptraSEOS0_.exit: ; preds = %435 _ZNSt15__exception_ptr13exception_ptrD2Ev.exit: ; preds = %_ZNSt15__exception_ptr13exception_ptraSEOS0_.exit.thread, %_ZNSt15__exception_ptr13exception_ptraSEOS0_.exit, %439 invoke void @__cxa_end_catch() - to label %.thread219 unwind label %580 + to label %.thread218 unwind label %580 440: ; preds = %430, %_ZNK3gmx12_GLOBAL__N_123StartingBehaviorHandler19makeIndexOfNextPartENS_17AppendingBehaviorE.exit %441 = invoke noundef ptr @_Z6ftp2fniiPK8t_filenm(i32 noundef 19, i32 noundef %5, ptr noundef %6) to label %442 unwind label %.loopexit.split-lp 442: ; preds = %440 - %443 = icmp eq i32 %.sroa.0101.0136171, 0 + %443 = icmp eq i32 %.sroa.0101.0136168, 0 invoke void @_ZN3gmx11openLogFileEPKcb(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr") align 8 %83, ptr noundef %441, i1 noundef zeroext %443) to label %444 unwind label %.loopexit.split-lp @@ -1729,12 +1729,12 @@ _ZNSt15__exception_ptr13exception_ptrD2Ev.exit: ; preds = %_ZNSt15__exception_ unreachable _ZNSt10unique_ptrI8t_fileioN3gmx15functor_wrapperIS0_XadL_ZNS1_12closeLogFileEPS0_EEEEEaSEOS5_.exit: ; preds = %447 - %.pr183 = load ptr, ptr %83, align 8 - %.not.i49 = icmp eq ptr %.pr183, null + %.pr182 = load ptr, ptr %83, align 8 + %.not.i49 = icmp eq ptr %.pr182, null br i1 %.not.i49, label %_ZNSt10unique_ptrI8t_fileioN3gmx15functor_wrapperIS0_XadL_ZNS1_12closeLogFileEPS0_EEEEED2Ev.exit, label %451 451: ; preds = %_ZNSt10unique_ptrI8t_fileioN3gmx15functor_wrapperIS0_XadL_ZNS1_12closeLogFileEPS0_EEEEEaSEOS5_.exit - invoke void @_ZN3gmx12closeLogFileEP8t_fileio(ptr noundef nonnull %.pr183) + invoke void @_ZN3gmx12closeLogFileEP8t_fileio(ptr noundef nonnull %.pr182) to label %_ZNSt10unique_ptrI8t_fileioN3gmx15functor_wrapperIS0_XadL_ZNS1_12closeLogFileEPS0_EEEEED2Ev.exit unwind label %452 452: ; preds = %451 @@ -1749,10 +1749,10 @@ _ZNSt10unique_ptrI8t_fileioN3gmx15functor_wrapperIS0_XadL_ZNS1_12closeLogFileEPS br i1 %443, label %455, label %582 455: ; preds = %_ZNSt10unique_ptrI8t_fileioN3gmx15functor_wrapperIS0_XadL_ZNS1_12closeLogFileEPS0_EEEEED2Ev.exit - %456 = ptrtoint ptr %.sroa.14.0144169 to i64 - %457 = ptrtoint ptr %.sroa.8102.0146166 to i64 + %456 = ptrtoint ptr %.sroa.21.0171 to i64 + %457 = ptrtoint ptr %.sroa.8102.0145165 to i64 %458 = sub i64 %456, %457 - %459 = getelementptr inbounds i8, ptr %.sroa.8102.0146166, i64 %458 + %459 = getelementptr inbounds i8, ptr %.sroa.8102.0145165, i64 %458 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %26) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %28) @@ -1764,7 +1764,7 @@ _ZNSt10unique_ptrI8t_fileioN3gmx15functor_wrapperIS0_XadL_ZNS1_12closeLogFileEPS call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %34) call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %35) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %36) - invoke void @_ZNSt10filesystem7__cxx114pathC2IA4096_cS1_EERKT_NS1_6formatE(ptr noundef nonnull align 8 dereferenceable(40) %26, ptr noundef nonnull align 1 dereferenceable(4096) %.sroa.8102.0146166, i8 noundef zeroext 2) + invoke void @_ZNSt10filesystem7__cxx114pathC2IA4096_cS1_EERKT_NS1_6formatE(ptr noundef nonnull align 8 dereferenceable(40) %26, ptr noundef nonnull align 1 dereferenceable(4096) %.sroa.8102.0145165, i8 noundef zeroext 2) to label %.noexc61 unwind label %.loopexit.split-lp .noexc61: ; preds = %455 @@ -2071,11 +2071,11 @@ _ZNSt10unique_ptrI8t_fileioN3gmx15functor_wrapperIS0_XadL_ZNS1_12closeLogFileEPS _ZNSt10filesystem7__cxx114pathD2Ev.exit.i53: ; preds = %525, %522 store ptr null, ptr %523, align 8 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #19 - invoke fastcc void @_ZN3gmx12_GLOBAL__N_115checkOutputFileEP8t_fileioRK19gmx_file_position_t(ptr noundef %445, ptr noundef nonnull align 8 dereferenceable(4124) %.sroa.8102.0146166) + invoke fastcc void @_ZN3gmx12_GLOBAL__N_115checkOutputFileEP8t_fileioRK19gmx_file_position_t(ptr noundef %445, ptr noundef nonnull align 8 dereferenceable(4124) %.sroa.8102.0145165) to label %.noexc62 unwind label %.loopexit.split-lp .noexc62: ; preds = %_ZNSt10filesystem7__cxx114pathD2Ev.exit.i53 - %526 = getelementptr inbounds i8, ptr %.sroa.8102.0146166, i64 4096 + %526 = getelementptr inbounds i8, ptr %.sroa.8102.0145165, i64 4096 %527 = load i64, ptr %526, align 8 %528 = invoke noundef i32 @_Z12gmx_fio_seekP8t_fileiol(ptr noundef %445, i64 noundef %527) to label %.noexc63 unwind label %.loopexit.split-lp @@ -2168,7 +2168,7 @@ _ZNSt10filesystem7__cxx114pathD2Ev.exit.i53: ; preds = %525, %522 br label %.body 549: ; preds = %_ZNSt10filesystem7__cxx114pathD2Ev.exit48.i, %.preheader.i56 - %.pn.i57 = phi ptr [ %.sroa.053.0.i, %_ZNSt10filesystem7__cxx114pathD2Ev.exit48.i ], [ %.sroa.8102.0146166, %.preheader.i56 ] + %.pn.i57 = phi ptr [ %.sroa.053.0.i, %_ZNSt10filesystem7__cxx114pathD2Ev.exit48.i ], [ %.sroa.8102.0145165, %.preheader.i56 ] %.sroa.053.0.i = getelementptr inbounds i8, ptr %.pn.i57, i64 4128 %.not79.i = icmp eq ptr %.sroa.053.0.i, %459 br i1 %.not79.i, label %_ZN3gmx12_GLOBAL__N_119prepareForAppendingENS_8ArrayRefIK19gmx_file_position_tEEP8t_fileio.exit, label %550 @@ -2321,33 +2321,33 @@ _ZN3gmx12_GLOBAL__N_119prepareForAppendingENS_8ArrayRefIK19gmx_file_position_tEE br label %582 580: ; preds = %585, %_ZNSt15__exception_ptr13exception_ptrD2Ev.exit - %.sroa.14119.6 = phi ptr [ %.sroa.14119.7225, %585 ], [ %.sroa.14119.5, %_ZNSt15__exception_ptr13exception_ptrD2Ev.exit ] - %.sroa.26.6 = phi i8 [ %.sroa.26.7227, %585 ], [ %.sroa.26.5, %_ZNSt15__exception_ptr13exception_ptrD2Ev.exit ] + %.sroa.14119.6 = phi ptr [ %.sroa.14119.7224, %585 ], [ %.sroa.14119.5, %_ZNSt15__exception_ptr13exception_ptrD2Ev.exit ] + %.sroa.26.6 = phi i8 [ %.sroa.26.7226, %585 ], [ %.sroa.26.5, %_ZNSt15__exception_ptr13exception_ptrD2Ev.exit ] %581 = landingpad { ptr, i32 } cleanup br label %_ZNSt15__exception_ptr13exception_ptrD2Ev.exit75 582: ; preds = %_ZN3gmx12_GLOBAL__N_119prepareForAppendingENS_8ArrayRefIK19gmx_file_position_tEEP8t_fileio.exit, %_ZNSt10unique_ptrI8t_fileioN3gmx15functor_wrapperIS0_XadL_ZNS1_12closeLogFileEPS0_EEEEED2Ev.exit, %7 - %.sroa.0111.5 = phi i32 [ 0, %_ZN3gmx12_GLOBAL__N_119prepareForAppendingENS_8ArrayRefIK19gmx_file_position_tEEP8t_fileio.exit ], [ %.sroa.0101.0136171, %_ZNSt10unique_ptrI8t_fileioN3gmx15functor_wrapperIS0_XadL_ZNS1_12closeLogFileEPS0_EEEEED2Ev.exit ], [ 2, %7 ] - %.sroa.14119.7 = phi ptr [ %.sroa.8102.0146166, %_ZN3gmx12_GLOBAL__N_119prepareForAppendingENS_8ArrayRefIK19gmx_file_position_tEEP8t_fileio.exit ], [ %.sroa.8102.0146166, %_ZNSt10unique_ptrI8t_fileioN3gmx15functor_wrapperIS0_XadL_ZNS1_12closeLogFileEPS0_EEEEED2Ev.exit ], [ undef, %7 ] - %.sroa.26.7 = phi i8 [ %.sroa.26.0174, %_ZN3gmx12_GLOBAL__N_119prepareForAppendingENS_8ArrayRefIK19gmx_file_position_tEEP8t_fileio.exit ], [ %.sroa.26.0174, %_ZNSt10unique_ptrI8t_fileioN3gmx15functor_wrapperIS0_XadL_ZNS1_12closeLogFileEPS0_EEEEED2Ev.exit ], [ 0, %7 ] + %.sroa.0111.5 = phi i32 [ 0, %_ZN3gmx12_GLOBAL__N_119prepareForAppendingENS_8ArrayRefIK19gmx_file_position_tEEP8t_fileio.exit ], [ %.sroa.0101.0136168, %_ZNSt10unique_ptrI8t_fileioN3gmx15functor_wrapperIS0_XadL_ZNS1_12closeLogFileEPS0_EEEEED2Ev.exit ], [ 2, %7 ] + %.sroa.14119.7 = phi ptr [ %.sroa.8102.0145165, %_ZN3gmx12_GLOBAL__N_119prepareForAppendingENS_8ArrayRefIK19gmx_file_position_tEEP8t_fileio.exit ], [ %.sroa.8102.0145165, %_ZNSt10unique_ptrI8t_fileioN3gmx15functor_wrapperIS0_XadL_ZNS1_12closeLogFileEPS0_EEEEED2Ev.exit ], [ undef, %7 ] + %.sroa.26.7 = phi i8 [ %.sroa.26.0173, %_ZN3gmx12_GLOBAL__N_119prepareForAppendingENS_8ArrayRefIK19gmx_file_position_tEEP8t_fileio.exit ], [ %.sroa.26.0173, %_ZNSt10unique_ptrI8t_fileioN3gmx15functor_wrapperIS0_XadL_ZNS1_12closeLogFileEPS0_EEEEED2Ev.exit ], [ 0, %7 ] %583 = icmp eq ptr %2, null br i1 %583, label %604, label %585 -.thread219: ; preds = %_ZNSt15__exception_ptr13exception_ptrD2Ev.exit +.thread218: ; preds = %_ZNSt15__exception_ptr13exception_ptrD2Ev.exit %584 = icmp eq ptr %2, null br i1 %584, label %586, label %585 -585: ; preds = %.thread219, %582 - %.sroa.26.7227 = phi i8 [ %.sroa.26.5, %.thread219 ], [ %.sroa.26.7, %582 ] - %.sroa.14119.7225 = phi ptr [ %.sroa.14119.5, %.thread219 ], [ %.sroa.14119.7, %582 ] +585: ; preds = %.thread218, %582 + %.sroa.26.7226 = phi i8 [ %.sroa.26.5, %.thread218 ], [ %.sroa.26.7, %582 ] + %.sroa.14119.7224 = phi ptr [ %.sroa.14119.5, %.thread218 ], [ %.sroa.14119.7, %582 ] invoke void @_ZN3gmx8internal13assertHandlerEPKcS2_S2_S2_i(ptr noundef nonnull @.str.44, ptr noundef nonnull @.str.45, ptr noundef nonnull @"__PRETTY_FUNCTION__._ZZN3gmx13handleRestartEbP10tmpi_comm_PK14gmx_multisim_tNS_17AppendingBehaviorEiP8t_filenmENK3$_0clEv", ptr noundef nonnull @.str.2, i32 noundef 705) #20 to label %.noexc72 unwind label %580 .noexc72: ; preds = %585 unreachable -586: ; preds = %.thread219 +586: ; preds = %.thread218 %587 = load ptr, ptr %81, align 8 %.not = icmp eq ptr %587, null br i1 %.not, label %593, label %_ZNSt15__exception_ptr13exception_ptrC2ERKS0_.exit @@ -2379,7 +2379,7 @@ _ZNSt15__exception_ptr13exception_ptrC2ERKS0_.exit: ; preds = %586 595: ; preds = %593 invoke void @_ZN3gmx16GromacsExceptionC2ERKNS_20ExceptionInitializerE(ptr noundef nonnull align 8 dereferenceable(24) %86, ptr noundef nonnull align 8 dereferenceable(56) %87) - to label %596 unwind label %.thread188 + to label %596 unwind label %.thread187 596: ; preds = %595 store ptr getelementptr inbounds (i8, ptr @_ZTVN3gmx24ParallelConsistencyErrorE, i64 16), ptr %86, align 8 @@ -2402,7 +2402,7 @@ _ZNSt15__exception_ptr13exception_ptrC2ERKS0_.exit: ; preds = %586 cleanup br label %603 -.thread188: ; preds = %595 +.thread187: ; preds = %595 %600 = landingpad { ptr, i32 } cleanup call void @_ZN3gmx20ExceptionInitializerD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %87) #19 @@ -2417,8 +2417,8 @@ _ZNSt15__exception_ptr13exception_ptrC2ERKS0_.exit: ; preds = %586 call void @_ZN3gmx20ExceptionInitializerD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %87) #19 br i1 %.0, label %603, label %_ZNSt15__exception_ptr13exception_ptrD2Ev.exit75 -603: ; preds = %.thread188, %.thread, %601 - %.pn25.pn187 = phi { ptr, i32 } [ %599, %.thread ], [ %602, %601 ], [ %600, %.thread188 ] +603: ; preds = %.thread187, %.thread, %601 + %.pn25.pn186 = phi { ptr, i32 } [ %599, %.thread ], [ %602, %601 ], [ %600, %.thread187 ] call void @__cxa_free_exception(ptr %594) #19 br label %_ZNSt15__exception_ptr13exception_ptrD2Ev.exit75 @@ -2453,7 +2453,7 @@ _ZN3gmx12_GLOBAL__N_123StartingBehaviorHandlerD2Ev.exit82: ; preds = %_ZNSt10uni _ZNSt15__exception_ptr13exception_ptrD2Ev.exit75: ; preds = %592, %589, %601, %603, %580, %.body %.sroa.14119.8 = phi ptr [ %.sroa.14119.5, %603 ], [ %.sroa.14119.5, %601 ], [ %.sroa.14119.6, %580 ], [ %.sroa.14119.5, %.body ], [ %.sroa.14119.5, %589 ], [ %.sroa.14119.5, %592 ] %.sroa.26.8 = phi i8 [ %.sroa.26.5, %603 ], [ %.sroa.26.5, %601 ], [ %.sroa.26.6, %580 ], [ %.sroa.26.5, %.body ], [ %.sroa.26.5, %589 ], [ %.sroa.26.5, %592 ] - %.merged = phi { ptr, i32 } [ %.pn25.pn187, %603 ], [ %602, %601 ], [ %581, %580 ], [ %.pn, %.body ], [ %590, %589 ], [ %590, %592 ] + %.merged = phi { ptr, i32 } [ %.pn25.pn186, %603 ], [ %602, %601 ], [ %581, %580 ], [ %.pn, %.body ], [ %590, %589 ], [ %590, %592 ] %610 = load ptr, ptr %81, align 8 %.not.i83 = icmp eq ptr %610, null br i1 %.not.i83, label %_ZNSt15__exception_ptr13exception_ptrD2Ev.exit84, label %611 @@ -2466,8 +2466,8 @@ _ZNSt15__exception_ptr13exception_ptrD2Ev.exit84: ; preds = %_ZNSt15__exception_ call void @_ZNSt10unique_ptrI8t_fileioN3gmx15functor_wrapperIS0_XadL_ZNS1_12closeLogFileEPS0_EEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %80) #19 %612 = trunc nuw i8 %.sroa.26.8 to i1 %.not.i.i.i.i.i.i.i.i.i85 = icmp ne ptr %.sroa.14119.8, null - %or.cond194.not = select i1 %612, i1 %.not.i.i.i.i.i.i.i.i.i85, i1 false - br i1 %or.cond194.not, label %613, label %_ZN3gmx12_GLOBAL__N_123StartingBehaviorHandlerD2Ev.exit86 + %or.cond193.not = select i1 %612, i1 %.not.i.i.i.i.i.i.i.i.i85, i1 false + br i1 %or.cond193.not, label %613, label %_ZN3gmx12_GLOBAL__N_123StartingBehaviorHandlerD2Ev.exit86 613: ; preds = %_ZNSt15__exception_ptr13exception_ptrD2Ev.exit84 call void @_ZdlPv(ptr noundef nonnull %.sroa.14119.8) #22 diff --git a/bench/hermes/optimized/JSONLexer.cpp.ll b/bench/hermes/optimized/JSONLexer.cpp.ll index 7d143cf2a1e..2a5d9244f78 100644 --- a/bench/hermes/optimized/JSONLexer.cpp.ll +++ b/bench/hermes/optimized/JSONLexer.cpp.ll @@ -1768,8 +1768,8 @@ entry: for.body: ; preds = %entry, %if.end19 %0 = phi ptr [ %.pre, %entry ], [ %incdec.ptr.i, %if.end19 ] - %i.031 = phi i32 [ 0, %entry ], [ %inc, %if.end19 ] - %val.030 = phi i16 [ 0, %entry ], [ %add, %if.end19 ] + %i.030 = phi i32 [ 0, %entry ], [ %inc, %if.end19 ] + %val.029 = phi i16 [ 0, %entry ], [ %add, %if.end19 ] %1 = load ptr, ptr %end_.i, align 8 %cmp.not.i = icmp eq ptr %0, %1 br i1 %cmp.not.i, label %_ZN6hermes11UTF16Stream7hasCharEv.exit, label %if.end @@ -1779,7 +1779,7 @@ _ZN6hermes11UTF16Stream7hasCharEv.exit: ; preds = %for.body br i1 %call.i, label %_ZN6hermes11UTF16Stream7hasCharEv.exit.if.end_crit_edge, label %if.then _ZN6hermes11UTF16Stream7hasCharEv.exit.if.end_crit_edge: ; preds = %_ZN6hermes11UTF16Stream7hasCharEv.exit - %.pre38 = load ptr, ptr %this, align 8 + %.pre35 = load ptr, ptr %this, align 8 br label %if.end if.then: ; preds = %_ZN6hermes11UTF16Stream7hasCharEv.exit @@ -1804,7 +1804,7 @@ if.then: ; preds = %_ZN6hermes11UTF16St br label %return if.end: ; preds = %_ZN6hermes11UTF16Stream7hasCharEv.exit.if.end_crit_edge, %for.body - %3 = phi ptr [ %.pre38, %_ZN6hermes11UTF16Stream7hasCharEv.exit.if.end_crit_edge ], [ %0, %for.body ] + %3 = phi ptr [ %.pre35, %_ZN6hermes11UTF16Stream7hasCharEv.exit.if.end_crit_edge ], [ %0, %for.body ] %4 = load i16, ptr %3, align 2 %5 = or i16 %4, 32 %6 = add i16 %5, -48 @@ -1859,21 +1859,24 @@ _ZN6hermes2vm9JSONLexer13errorWithCharERKNS0_11TwineChar16EDs.exit: ; preds = %i if.end19: ; preds = %if.end, %if.then11 %ch.0 = phi i16 [ %sub12, %if.then11 ], [ %6, %if.end ] - %shl = shl i16 %val.030, 4 + %shl = shl i16 %val.029, 4 %add = add nuw i16 %ch.0, %shl %incdec.ptr.i = getelementptr inbounds i8, ptr %3, i64 2 store ptr %incdec.ptr.i, ptr %this, align 8 - %inc = add nuw nsw i32 %i.031, 1 + %inc = add nuw nsw i32 %i.030, 1 %exitcond.not = icmp eq i32 %inc, 4 - br i1 %exitcond.not, label %return, label %for.body, !llvm.loop !79 + br i1 %exitcond.not, label %return.loopexit, label %for.body, !llvm.loop !79 -return: ; preds = %if.end19, %_ZN6hermes2vm9JSONLexer13errorWithCharERKNS0_11TwineChar16EDs.exit, %if.then - %val.029 = phi i16 [ %val.030, %_ZN6hermes2vm9JSONLexer13errorWithCharERKNS0_11TwineChar16EDs.exit ], [ %val.030, %if.then ], [ %add, %if.end19 ] - %retval.sroa.0.0 = phi i32 [ %call.i.i12, %_ZN6hermes2vm9JSONLexer13errorWithCharERKNS0_11TwineChar16EDs.exit ], [ %call.i10, %if.then ], [ 1, %if.end19 ] - %retval.sroa.4.0.insert.ext = zext i16 %val.029 to i64 - %retval.sroa.4.0.insert.shift = shl nuw nsw i64 %retval.sroa.4.0.insert.ext, 32 +return.loopexit: ; preds = %if.end19 + %14 = zext i16 %add to i64 + %15 = shl nuw nsw i64 %14, 32 + br label %return + +return: ; preds = %return.loopexit, %_ZN6hermes2vm9JSONLexer13errorWithCharERKNS0_11TwineChar16EDs.exit, %if.then + %retval.sroa.4.0 = phi i64 [ 0, %_ZN6hermes2vm9JSONLexer13errorWithCharERKNS0_11TwineChar16EDs.exit ], [ 0, %if.then ], [ %15, %return.loopexit ] + %retval.sroa.0.0 = phi i32 [ %call.i.i12, %_ZN6hermes2vm9JSONLexer13errorWithCharERKNS0_11TwineChar16EDs.exit ], [ %call.i10, %if.then ], [ 1, %return.loopexit ] %retval.sroa.0.0.insert.ext = zext i32 %retval.sroa.0.0 to i64 - %retval.sroa.0.0.insert.insert = or disjoint i64 %retval.sroa.4.0.insert.shift, %retval.sroa.0.0.insert.ext + %retval.sroa.0.0.insert.insert = or disjoint i64 %retval.sroa.4.0, %retval.sroa.0.0.insert.ext ret i64 %retval.sroa.0.0.insert.insert } diff --git a/bench/hermes/optimized/Object.cpp.ll b/bench/hermes/optimized/Object.cpp.ll index 4b83d3ce3cc..c6578be538f 100644 --- a/bench/hermes/optimized/Object.cpp.ll +++ b/bench/hermes/optimized/Object.cpp.ll @@ -341,7 +341,12 @@ define hidden { i32, i64 } @_ZN6hermes2vm22objectPrototypeValueOfEPvRNS0_7Runtim entry: %1 = load ptr, ptr %args, align 8, !noalias !10 %call4 = tail call { i32, i64 } @_ZN6hermes2vm8toObjectERNS0_7RuntimeENS0_6HandleINS0_11HermesValueEEE(ptr noundef nonnull align 8 dereferenceable(9832) %runtime, ptr %1) #8 - ret { i32, i64 } %call4 + %2 = extractvalue { i32, i64 } %call4, 0 + %3 = extractvalue { i32, i64 } %call4, 1 + %cmp.i = icmp eq i32 %2, 0 + %spec.select = select i1 %cmp.i, i64 undef, i64 %3 + %.fca.1.insert = insertvalue { i32, i64 } %call4, i64 %spec.select, 1 + ret { i32, i64 } %.fca.1.insert } ; Function Attrs: mustprogress nounwind uwtable @@ -2870,8 +2875,9 @@ entry: %4 = extractvalue { i32, i64 } %call10, 1 %cmp.i5 = icmp ne i32 %3, 0 %spec.select = zext i1 %cmp.i5 to i32 + %spec.select6 = select i1 %cmp.i5, i64 %4, i64 undef %.fca.0.insert = insertvalue { i32, i64 } poison, i32 %spec.select, 0 - %.fca.1.insert = insertvalue { i32, i64 } %.fca.0.insert, i64 %4, 1 + %.fca.1.insert = insertvalue { i32, i64 } %.fca.0.insert, i64 %spec.select6, 1 ret { i32, i64 } %.fca.1.insert } diff --git a/bench/hermes/optimized/SourceMapGenerator.cpp.ll b/bench/hermes/optimized/SourceMapGenerator.cpp.ll index d20583017e9..6ef8187ac33 100644 --- a/bench/hermes/optimized/SourceMapGenerator.cpp.ll +++ b/bench/hermes/optimized/SourceMapGenerator.cpp.ll @@ -913,11 +913,9 @@ for.body.lr.ph: ; preds = %entry for.body: ; preds = %for.body.lr.ph, %_ZNSt6vectorIN6hermes9SourceMap7SegmentESaIS2_EED2Ev.exit173 %indvars.iv = phi i64 [ 0, %for.body.lr.ph ], [ %indvars.iv.next, %_ZNSt6vectorIN6hermes9SourceMap7SegmentESaIS2_EED2Ev.exit173 ] - %inputSeg.sroa.0.i.sroa.6.0391 = phi i32 [ undef, %for.body.lr.ph ], [ %inputSeg.sroa.0.i.sroa.6.1.lcssa, %_ZNSt6vectorIN6hermes9SourceMap7SegmentESaIS2_EED2Ev.exit173 ] %agg.tmp20.sroa.0.0390 = phi ptr [ undef, %for.body.lr.ph ], [ %agg.tmp20.sroa.0.1.lcssa, %_ZNSt6vectorIN6hermes9SourceMap7SegmentESaIS2_EED2Ev.exit173 ] %agg.tmp20.sroa.3.0389 = phi ptr [ undef, %for.body.lr.ph ], [ %agg.tmp20.sroa.3.1.lcssa, %_ZNSt6vectorIN6hermes9SourceMap7SegmentESaIS2_EED2Ev.exit173 ] %agg.tmp20.sroa.5.0388 = phi ptr [ undef, %for.body.lr.ph ], [ %agg.tmp20.sroa.5.1.lcssa, %_ZNSt6vectorIN6hermes9SourceMap7SegmentESaIS2_EED2Ev.exit173 ] - %inputSeg.sroa.0.i.sroa.5.0387 = phi i32 [ undef, %for.body.lr.ph ], [ %inputSeg.sroa.0.i.sroa.5.1.lcssa, %_ZNSt6vectorIN6hermes9SourceMap7SegmentESaIS2_EED2Ev.exit173 ] %5 = load ptr, ptr %lines_, align 8 %add.ptr.i = getelementptr inbounds %"class.std::vector.39", ptr %5, i64 %indvars.iv %6 = load ptr, ptr %add.ptr.i, align 8 @@ -927,11 +925,9 @@ for.body: ; preds = %for.body.lr.ph, %_Z br i1 %cmp.i.not359, label %for.end, label %for.body10 for.body10: ; preds = %for.body, %_ZNSt6vectorIN6hermes9SourceMap7SegmentESaIS2_EE9push_backEOS2_.exit - %inputSeg.sroa.0.i.sroa.6.1370 = phi i32 [ %inputSeg.sroa.0.i.sroa.6.2419441, %_ZNSt6vectorIN6hermes9SourceMap7SegmentESaIS2_EE9push_backEOS2_.exit ], [ %inputSeg.sroa.0.i.sroa.6.0391, %for.body ] - %agg.tmp20.sroa.0.1369 = phi ptr [ %agg.tmp20.sroa.0.3446, %_ZNSt6vectorIN6hermes9SourceMap7SegmentESaIS2_EE9push_backEOS2_.exit ], [ %agg.tmp20.sroa.0.0390, %for.body ] - %agg.tmp20.sroa.3.1368 = phi ptr [ %agg.tmp20.sroa.3.3445, %_ZNSt6vectorIN6hermes9SourceMap7SegmentESaIS2_EE9push_backEOS2_.exit ], [ %agg.tmp20.sroa.3.0389, %for.body ] - %agg.tmp20.sroa.5.1367 = phi ptr [ %agg.tmp20.sroa.5.3444, %_ZNSt6vectorIN6hermes9SourceMap7SegmentESaIS2_EE9push_backEOS2_.exit ], [ %agg.tmp20.sroa.5.0388, %for.body ] - %inputSeg.sroa.0.i.sroa.5.1366 = phi i32 [ %inputSeg.sroa.0.i.sroa.5.2418442, %_ZNSt6vectorIN6hermes9SourceMap7SegmentESaIS2_EE9push_backEOS2_.exit ], [ %inputSeg.sroa.0.i.sroa.5.0387, %for.body ] + %agg.tmp20.sroa.0.1369 = phi ptr [ %agg.tmp20.sroa.0.3448, %_ZNSt6vectorIN6hermes9SourceMap7SegmentESaIS2_EE9push_backEOS2_.exit ], [ %agg.tmp20.sroa.0.0390, %for.body ] + %agg.tmp20.sroa.3.1368 = phi ptr [ %agg.tmp20.sroa.3.3447, %_ZNSt6vectorIN6hermes9SourceMap7SegmentESaIS2_EE9push_backEOS2_.exit ], [ %agg.tmp20.sroa.3.0389, %for.body ] + %agg.tmp20.sroa.5.1367 = phi ptr [ %agg.tmp20.sroa.5.3446, %_ZNSt6vectorIN6hermes9SourceMap7SegmentESaIS2_EE9push_backEOS2_.exit ], [ %agg.tmp20.sroa.5.0388, %for.body ] %newLine.sroa.0.1363 = phi ptr [ %newLine.sroa.0.2, %_ZNSt6vectorIN6hermes9SourceMap7SegmentESaIS2_EE9push_backEOS2_.exit ], [ null, %for.body ] %newLine.sroa.7.1362 = phi ptr [ %newLine.sroa.7.2, %_ZNSt6vectorIN6hermes9SourceMap7SegmentESaIS2_EE9push_backEOS2_.exit ], [ null, %for.body ] %newLine.sroa.12.1361 = phi ptr [ %newLine.sroa.12.2, %_ZNSt6vectorIN6hermes9SourceMap7SegmentESaIS2_EE9push_backEOS2_.exit ], [ null, %for.body ] @@ -1875,22 +1871,20 @@ _ZN6hermes6parser15JSONSharedValueD2Ev.exit.i.i.i129: ; preds = %if.end8.sink.sp br label %if.end50 if.end50: ; preds = %if.end, %_ZNK6hermes18SourceMapGenerator25getInputSegmentForSegmentERKNS_9SourceMap7SegmentE.exit, %land.lhs.true, %_ZN6hermes6parser15JSONSharedValueD2Ev.exit.i.i.i129, %_ZN6hermes18SourceMapGenerator9addSourceEN4llvh9StringRefENS1_8OptionalINS_6parser15JSONSharedValueEEE.exit113, %land.lhs.true30 - %agg.tmp20.sroa.0.3446 = phi ptr [ %agg.tmp20.sroa.0.1369, %land.lhs.true30 ], [ %agg.tmp20.sroa.0.1369, %_ZN6hermes18SourceMapGenerator9addSourceEN4llvh9StringRefENS1_8OptionalINS_6parser15JSONSharedValueEEE.exit113 ], [ %agg.tmp20.sroa.0.1369, %_ZN6hermes6parser15JSONSharedValueD2Ev.exit.i.i.i129 ], [ %agg.tmp20.sroa.0.1369, %land.lhs.true ], [ %agg.tmp20.sroa.0.1369, %_ZNK6hermes18SourceMapGenerator25getInputSegmentForSegmentERKNS_9SourceMap7SegmentE.exit ], [ %agg.tmp20.sroa.0.2, %if.end ] - %agg.tmp20.sroa.3.3445 = phi ptr [ %agg.tmp20.sroa.3.1368, %land.lhs.true30 ], [ %agg.tmp20.sroa.3.1368, %_ZN6hermes18SourceMapGenerator9addSourceEN4llvh9StringRefENS1_8OptionalINS_6parser15JSONSharedValueEEE.exit113 ], [ %agg.tmp20.sroa.3.1368, %_ZN6hermes6parser15JSONSharedValueD2Ev.exit.i.i.i129 ], [ %agg.tmp20.sroa.3.1368, %land.lhs.true ], [ %agg.tmp20.sroa.3.1368, %_ZNK6hermes18SourceMapGenerator25getInputSegmentForSegmentERKNS_9SourceMap7SegmentE.exit ], [ %agg.tmp20.sroa.3.2, %if.end ] - %agg.tmp20.sroa.5.3444 = phi ptr [ %agg.tmp20.sroa.5.1367, %land.lhs.true30 ], [ %agg.tmp20.sroa.5.1367, %_ZN6hermes18SourceMapGenerator9addSourceEN4llvh9StringRefENS1_8OptionalINS_6parser15JSONSharedValueEEE.exit113 ], [ %agg.tmp20.sroa.5.1367, %_ZN6hermes6parser15JSONSharedValueD2Ev.exit.i.i.i129 ], [ %agg.tmp20.sroa.5.1367, %land.lhs.true ], [ %agg.tmp20.sroa.5.1367, %_ZNK6hermes18SourceMapGenerator25getInputSegmentForSegmentERKNS_9SourceMap7SegmentE.exit ], [ %agg.tmp20.sroa.5.2, %if.end ] - %inputSeg.sroa.0.i.sroa.5.2418442 = phi i32 [ %inputSeg.sroa.0.i.sroa.5.1366, %land.lhs.true30 ], [ %inputSeg.sroa.0.i.sroa.5.1366, %_ZN6hermes18SourceMapGenerator9addSourceEN4llvh9StringRefENS1_8OptionalINS_6parser15JSONSharedValueEEE.exit113 ], [ %inputSeg.sroa.0.i.sroa.5.1366, %_ZN6hermes6parser15JSONSharedValueD2Ev.exit.i.i.i129 ], [ %inputSeg.sroa.0.i.sroa.5.0.copyload, %land.lhs.true ], [ %inputSeg.sroa.0.i.sroa.5.0.copyload, %_ZNK6hermes18SourceMapGenerator25getInputSegmentForSegmentERKNS_9SourceMap7SegmentE.exit ], [ %inputSeg.sroa.0.i.sroa.5.0.copyload, %if.end ] - %inputSeg.sroa.0.i.sroa.6.2419441 = phi i32 [ %inputSeg.sroa.0.i.sroa.6.1370, %land.lhs.true30 ], [ %inputSeg.sroa.0.i.sroa.6.1370, %_ZN6hermes18SourceMapGenerator9addSourceEN4llvh9StringRefENS1_8OptionalINS_6parser15JSONSharedValueEEE.exit113 ], [ %inputSeg.sroa.0.i.sroa.6.1370, %_ZN6hermes6parser15JSONSharedValueD2Ev.exit.i.i.i129 ], [ %inputSeg.sroa.0.i.sroa.6.0.copyload, %land.lhs.true ], [ %inputSeg.sroa.0.i.sroa.6.0.copyload, %_ZNK6hermes18SourceMapGenerator25getInputSegmentForSegmentERKNS_9SourceMap7SegmentE.exit ], [ %inputSeg.sroa.0.i.sroa.6.0.copyload, %if.end ] - %newSeg.sroa.0.0.copyload422439 = phi i32 [ %newSeg.sroa.0.0.copyload413, %land.lhs.true30 ], [ %newSeg.sroa.0.0.copyload413, %_ZN6hermes18SourceMapGenerator9addSourceEN4llvh9StringRefENS1_8OptionalINS_6parser15JSONSharedValueEEE.exit113 ], [ %newSeg.sroa.0.0.copyload413, %_ZN6hermes6parser15JSONSharedValueD2Ev.exit.i.i.i129 ], [ %newSeg.sroa.0.0.copyload, %land.lhs.true ], [ %newSeg.sroa.0.0.copyload, %_ZNK6hermes18SourceMapGenerator25getInputSegmentForSegmentERKNS_9SourceMap7SegmentE.exit ], [ %newSeg.sroa.0.0.copyload, %if.end ] + %agg.tmp20.sroa.0.3448 = phi ptr [ %agg.tmp20.sroa.0.1369, %land.lhs.true30 ], [ %agg.tmp20.sroa.0.1369, %_ZN6hermes18SourceMapGenerator9addSourceEN4llvh9StringRefENS1_8OptionalINS_6parser15JSONSharedValueEEE.exit113 ], [ %agg.tmp20.sroa.0.1369, %_ZN6hermes6parser15JSONSharedValueD2Ev.exit.i.i.i129 ], [ %agg.tmp20.sroa.0.1369, %land.lhs.true ], [ %agg.tmp20.sroa.0.1369, %_ZNK6hermes18SourceMapGenerator25getInputSegmentForSegmentERKNS_9SourceMap7SegmentE.exit ], [ %agg.tmp20.sroa.0.2, %if.end ] + %agg.tmp20.sroa.3.3447 = phi ptr [ %agg.tmp20.sroa.3.1368, %land.lhs.true30 ], [ %agg.tmp20.sroa.3.1368, %_ZN6hermes18SourceMapGenerator9addSourceEN4llvh9StringRefENS1_8OptionalINS_6parser15JSONSharedValueEEE.exit113 ], [ %agg.tmp20.sroa.3.1368, %_ZN6hermes6parser15JSONSharedValueD2Ev.exit.i.i.i129 ], [ %agg.tmp20.sroa.3.1368, %land.lhs.true ], [ %agg.tmp20.sroa.3.1368, %_ZNK6hermes18SourceMapGenerator25getInputSegmentForSegmentERKNS_9SourceMap7SegmentE.exit ], [ %agg.tmp20.sroa.3.2, %if.end ] + %agg.tmp20.sroa.5.3446 = phi ptr [ %agg.tmp20.sroa.5.1367, %land.lhs.true30 ], [ %agg.tmp20.sroa.5.1367, %_ZN6hermes18SourceMapGenerator9addSourceEN4llvh9StringRefENS1_8OptionalINS_6parser15JSONSharedValueEEE.exit113 ], [ %agg.tmp20.sroa.5.1367, %_ZN6hermes6parser15JSONSharedValueD2Ev.exit.i.i.i129 ], [ %agg.tmp20.sroa.5.1367, %land.lhs.true ], [ %agg.tmp20.sroa.5.1367, %_ZNK6hermes18SourceMapGenerator25getInputSegmentForSegmentERKNS_9SourceMap7SegmentE.exit ], [ %agg.tmp20.sroa.5.2, %if.end ] + %newSeg.sroa.0.0.copyload422441 = phi i32 [ %newSeg.sroa.0.0.copyload413, %land.lhs.true30 ], [ %newSeg.sroa.0.0.copyload413, %_ZN6hermes18SourceMapGenerator9addSourceEN4llvh9StringRefENS1_8OptionalINS_6parser15JSONSharedValueEEE.exit113 ], [ %newSeg.sroa.0.0.copyload413, %_ZN6hermes6parser15JSONSharedValueD2Ev.exit.i.i.i129 ], [ %newSeg.sroa.0.0.copyload, %land.lhs.true ], [ %newSeg.sroa.0.0.copyload, %_ZNK6hermes18SourceMapGenerator25getInputSegmentForSegmentERKNS_9SourceMap7SegmentE.exit ], [ %newSeg.sroa.0.0.copyload, %if.end ] %newSeg.sroa.10.1 = phi i8 [ 0, %land.lhs.true30 ], [ %100, %_ZN6hermes18SourceMapGenerator9addSourceEN4llvh9StringRefENS1_8OptionalINS_6parser15JSONSharedValueEEE.exit113 ], [ %100, %_ZN6hermes6parser15JSONSharedValueD2Ev.exit.i.i.i129 ], [ 0, %land.lhs.true ], [ 0, %_ZNK6hermes18SourceMapGenerator25getInputSegmentForSegmentERKNS_9SourceMap7SegmentE.exit ], [ 1, %if.end ] %newSeg.sroa.9.1 = phi i64 [ 0, %land.lhs.true30 ], [ %newSeg.sroa.9.4.copyload, %_ZN6hermes18SourceMapGenerator9addSourceEN4llvh9StringRefENS1_8OptionalINS_6parser15JSONSharedValueEEE.exit113 ], [ %newSeg.sroa.9.4.copyload, %_ZN6hermes6parser15JSONSharedValueD2Ev.exit.i.i.i129 ], [ 0, %land.lhs.true ], [ 0, %_ZNK6hermes18SourceMapGenerator25getInputSegmentForSegmentERKNS_9SourceMap7SegmentE.exit ], [ 0, %if.end ] - %newSeg.sroa.8.1 = phi i32 [ %inputSeg.sroa.0.i.sroa.6.1370, %land.lhs.true30 ], [ %newSeg.sroa.8.4.copyload, %_ZN6hermes18SourceMapGenerator9addSourceEN4llvh9StringRefENS1_8OptionalINS_6parser15JSONSharedValueEEE.exit113 ], [ %newSeg.sroa.8.4.copyload, %_ZN6hermes6parser15JSONSharedValueD2Ev.exit.i.i.i129 ], [ %inputSeg.sroa.0.i.sroa.6.0.copyload, %land.lhs.true ], [ %inputSeg.sroa.0.i.sroa.6.0.copyload, %_ZNK6hermes18SourceMapGenerator25getInputSegmentForSegmentERKNS_9SourceMap7SegmentE.exit ], [ %inputSeg.sroa.0.i.sroa.6.0.copyload, %if.end ] - %newSeg.sroa.7.1 = phi i32 [ %inputSeg.sroa.0.i.sroa.5.1366, %land.lhs.true30 ], [ %newSeg.sroa.7.4.copyload, %_ZN6hermes18SourceMapGenerator9addSourceEN4llvh9StringRefENS1_8OptionalINS_6parser15JSONSharedValueEEE.exit113 ], [ %newSeg.sroa.7.4.copyload, %_ZN6hermes6parser15JSONSharedValueD2Ev.exit.i.i.i129 ], [ %inputSeg.sroa.0.i.sroa.5.0.copyload, %land.lhs.true ], [ %inputSeg.sroa.0.i.sroa.5.0.copyload, %_ZNK6hermes18SourceMapGenerator25getInputSegmentForSegmentERKNS_9SourceMap7SegmentE.exit ], [ %inputSeg.sroa.0.i.sroa.5.0.copyload, %if.end ] + %newSeg.sroa.8.1 = phi i32 [ undef, %land.lhs.true30 ], [ %newSeg.sroa.8.4.copyload, %_ZN6hermes18SourceMapGenerator9addSourceEN4llvh9StringRefENS1_8OptionalINS_6parser15JSONSharedValueEEE.exit113 ], [ %newSeg.sroa.8.4.copyload, %_ZN6hermes6parser15JSONSharedValueD2Ev.exit.i.i.i129 ], [ undef, %land.lhs.true ], [ undef, %_ZNK6hermes18SourceMapGenerator25getInputSegmentForSegmentERKNS_9SourceMap7SegmentE.exit ], [ %inputSeg.sroa.0.i.sroa.6.0.copyload, %if.end ] + %newSeg.sroa.7.1 = phi i32 [ undef, %land.lhs.true30 ], [ %newSeg.sroa.7.4.copyload, %_ZN6hermes18SourceMapGenerator9addSourceEN4llvh9StringRefENS1_8OptionalINS_6parser15JSONSharedValueEEE.exit113 ], [ %newSeg.sroa.7.4.copyload, %_ZN6hermes6parser15JSONSharedValueD2Ev.exit.i.i.i129 ], [ undef, %land.lhs.true ], [ undef, %_ZNK6hermes18SourceMapGenerator25getInputSegmentForSegmentERKNS_9SourceMap7SegmentE.exit ], [ %inputSeg.sroa.0.i.sroa.5.0.copyload, %if.end ] %newSeg.sroa.3.1 = phi i32 [ undef, %land.lhs.true30 ], [ %conv.i107, %_ZN6hermes18SourceMapGenerator9addSourceEN4llvh9StringRefENS1_8OptionalINS_6parser15JSONSharedValueEEE.exit113 ], [ %conv.i107, %_ZN6hermes6parser15JSONSharedValueD2Ev.exit.i.i.i129 ], [ undef, %land.lhs.true ], [ undef, %_ZNK6hermes18SourceMapGenerator25getInputSegmentForSegmentERKNS_9SourceMap7SegmentE.exit ], [ %conv.i42345, %if.end ] %cmp.not.i.i = icmp eq ptr %newLine.sroa.7.1362, %newLine.sroa.12.1361 br i1 %cmp.not.i.i, label %if.else.i.i, label %if.then.i.i if.then.i.i: ; preds = %if.end50 - store i32 %newSeg.sroa.0.0.copyload422439, ptr %newLine.sroa.7.1362, align 4 + store i32 %newSeg.sroa.0.0.copyload422441, ptr %newLine.sroa.7.1362, align 4 %newSeg.sroa.3.0..sroa_idx309 = getelementptr inbounds i8, ptr %newLine.sroa.7.1362, i64 4 store i32 %newSeg.sroa.3.1, ptr %newSeg.sroa.3.0..sroa_idx309, align 4 %newSeg.sroa.7.0..sroa_idx313 = getelementptr inbounds i8, ptr %newLine.sroa.7.1362, i64 8 @@ -1934,7 +1928,7 @@ cond.true.i.i.i.i: ; preds = %_ZNKSt6vectorIN6her _ZNSt12_Vector_baseIN6hermes9SourceMap7SegmentESaIS2_EE11_M_allocateEm.exit.i.i.i: ; preds = %cond.true.i.i.i.i, %_ZNKSt6vectorIN6hermes9SourceMap7SegmentESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i %cond.i10.i.i.i = phi ptr [ %call5.i.i.i.i.i.i, %cond.true.i.i.i.i ], [ null, %_ZNKSt6vectorIN6hermes9SourceMap7SegmentESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i ] %add.ptr.i.i.i = getelementptr inbounds %"struct.hermes::SourceMap::Segment", ptr %cond.i10.i.i.i, i64 %sub.ptr.div.i.i.i.i.i - store i32 %newSeg.sroa.0.0.copyload422439, ptr %add.ptr.i.i.i, align 4 + store i32 %newSeg.sroa.0.0.copyload422441, ptr %add.ptr.i.i.i, align 4 %newSeg.sroa.3.0.add.ptr.i.i.i.sroa_idx = getelementptr inbounds i8, ptr %add.ptr.i.i.i, i64 4 store i32 %newSeg.sroa.3.1, ptr %newSeg.sroa.3.0.add.ptr.i.i.i.sroa_idx, align 4 %newSeg.sroa.7.0.add.ptr.i.i.i.sroa_idx = getelementptr inbounds i8, ptr %add.ptr.i.i.i, i64 8 @@ -1985,11 +1979,9 @@ for.end: ; preds = %_ZNSt6vectorIN6herm %newLine.sroa.12.1.lcssa = phi ptr [ null, %for.body ], [ %newLine.sroa.12.2, %_ZNSt6vectorIN6hermes9SourceMap7SegmentESaIS2_EE9push_backEOS2_.exit ] %newLine.sroa.7.1.lcssa = phi ptr [ null, %for.body ], [ %newLine.sroa.7.2, %_ZNSt6vectorIN6hermes9SourceMap7SegmentESaIS2_EE9push_backEOS2_.exit ] %newLine.sroa.0.1.lcssa = phi ptr [ null, %for.body ], [ %newLine.sroa.0.2, %_ZNSt6vectorIN6hermes9SourceMap7SegmentESaIS2_EE9push_backEOS2_.exit ] - %inputSeg.sroa.0.i.sroa.5.1.lcssa = phi i32 [ %inputSeg.sroa.0.i.sroa.5.0387, %for.body ], [ %inputSeg.sroa.0.i.sroa.5.2418442, %_ZNSt6vectorIN6hermes9SourceMap7SegmentESaIS2_EE9push_backEOS2_.exit ] - %agg.tmp20.sroa.5.1.lcssa = phi ptr [ %agg.tmp20.sroa.5.0388, %for.body ], [ %agg.tmp20.sroa.5.3444, %_ZNSt6vectorIN6hermes9SourceMap7SegmentESaIS2_EE9push_backEOS2_.exit ] - %agg.tmp20.sroa.3.1.lcssa = phi ptr [ %agg.tmp20.sroa.3.0389, %for.body ], [ %agg.tmp20.sroa.3.3445, %_ZNSt6vectorIN6hermes9SourceMap7SegmentESaIS2_EE9push_backEOS2_.exit ] - %agg.tmp20.sroa.0.1.lcssa = phi ptr [ %agg.tmp20.sroa.0.0390, %for.body ], [ %agg.tmp20.sroa.0.3446, %_ZNSt6vectorIN6hermes9SourceMap7SegmentESaIS2_EE9push_backEOS2_.exit ] - %inputSeg.sroa.0.i.sroa.6.1.lcssa = phi i32 [ %inputSeg.sroa.0.i.sroa.6.0391, %for.body ], [ %inputSeg.sroa.0.i.sroa.6.2419441, %_ZNSt6vectorIN6hermes9SourceMap7SegmentESaIS2_EE9push_backEOS2_.exit ] + %agg.tmp20.sroa.5.1.lcssa = phi ptr [ %agg.tmp20.sroa.5.0388, %for.body ], [ %agg.tmp20.sroa.5.3446, %_ZNSt6vectorIN6hermes9SourceMap7SegmentESaIS2_EE9push_backEOS2_.exit ] + %agg.tmp20.sroa.3.1.lcssa = phi ptr [ %agg.tmp20.sroa.3.0389, %for.body ], [ %agg.tmp20.sroa.3.3447, %_ZNSt6vectorIN6hermes9SourceMap7SegmentESaIS2_EE9push_backEOS2_.exit ] + %agg.tmp20.sroa.0.1.lcssa = phi ptr [ %agg.tmp20.sroa.0.0390, %for.body ], [ %agg.tmp20.sroa.0.3448, %_ZNSt6vectorIN6hermes9SourceMap7SegmentESaIS2_EE9push_backEOS2_.exit ] %149 = load ptr, ptr %_M_finish.i.i151, align 8 %150 = load ptr, ptr %lines_.i, align 8 %sub.ptr.lhs.cast.i.i152 = ptrtoint ptr %149 to i64 diff --git a/bench/html5ever-rs/optimized/20v7r6b5z18v5dgl.ll b/bench/html5ever-rs/optimized/20v7r6b5z18v5dgl.ll index 888a6eaca0a..003ddca0989 100644 --- a/bench/html5ever-rs/optimized/20v7r6b5z18v5dgl.ll +++ b/bench/html5ever-rs/optimized/20v7r6b5z18v5dgl.ll @@ -213,20 +213,21 @@ define hidden void @"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core. define hidden { i64, i64 } @"_ZN95_$LT$hashbrown..raw..bitmask..BitMaskIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h806c2d75f94c2f57E.llvm.9619877368797972682"(ptr noalias nocapture noundef align 2 dereferenceable(2) %0) unnamed_addr #10 { %2 = load i16, ptr %0, align 2, !noundef !9 %.not.not = icmp eq i16 %2, 0 - br i1 %.not.not, label %6, label %3 + br i1 %.not.not, label %8, label %3 3: ; preds = %1 - %4 = add i16 %2, -1 - %5 = and i16 %4, %2 - store i16 %5, ptr %0, align 2 - br label %6 - -6: ; preds = %1, %3 + %4 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %2, i1 true) + %5 = zext nneg i16 %4 to i64 + %6 = add i16 %2, -1 + %7 = and i16 %6, %2 + store i16 %7, ptr %0, align 2 + br label %8 + +8: ; preds = %1, %3 + %.sroa.3.0 = phi i64 [ %5, %3 ], [ undef, %1 ] %.sroa.0.0 = phi i64 [ 1, %3 ], [ 0, %1 ] - %7 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %2, i1 true) - %8 = zext nneg i16 %7 to i64 %9 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %10 = insertvalue { i64, i64 } %9, i64 %8, 1 + %10 = insertvalue { i64, i64 } %9, i64 %.sroa.3.0, 1 ret { i64, i64 } %10 } @@ -258,28 +259,28 @@ define hidden noundef zeroext i1 @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$G %.sroa.9.0.i.i.i = phi i64 [ 0, %6 ], [ %33, %32 ] %.sroa.01.0.i.i.i = phi i64 [ %13, %6 ], [ %35, %32 ] %16 = getelementptr inbounds i8, ptr %14, i64 %.sroa.01.0.i.i.i - %.0.copyload.i30.i.i = load <16 x i8>, ptr %16, align 1, !noalias !54 - %17 = icmp eq <16 x i8> %.0.copyload.i30.i.i, %.15.vec.insert.i.i.i + %.0.copyload.i32.i.i = load <16 x i8>, ptr %16, align 1, !noalias !54 + %17 = icmp eq <16 x i8> %.0.copyload.i32.i.i, %.15.vec.insert.i.i.i %18 = bitcast <16 x i1> %17 to i16 br label %19 19: ; preds = %23, %15 - %.021.i.i = phi i16 [ %18, %15 ], [ %25, %23 ] - %.not.not.i.i.i.not = icmp eq i16 %.021.i.i, 0 + %.022.i.i = phi i16 [ %18, %15 ], [ %27, %23 ] + %.not.not.i.i.i.not = icmp eq i16 %.022.i.i, 0 br i1 %.not.not.i.i.i.not, label %20, label %23 20: ; preds = %19 - %21 = icmp eq <16 x i8> %.0.copyload.i30.i.i, + %21 = icmp eq <16 x i8> %.0.copyload.i32.i.i, %22 = bitcast <16 x i1> %21 to i16 %.not.i.i.i = icmp eq i16 %22, 0 br i1 %.not.i.i.i, label %32, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$3get17h00469f1610d01657E.llvm.9619877368797972682.exit" 23: ; preds = %19 - %24 = add i16 %.021.i.i, -1 - %25 = and i16 %24, %.021.i.i - %26 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.021.i.i, i1 true) - %27 = zext nneg i16 %26 to i64 - %28 = add i64 %.sroa.01.0.i.i.i, %27 + %24 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.022.i.i, i1 true) + %25 = zext nneg i16 %24 to i64 + %26 = add i16 %.022.i.i, -1 + %27 = and i16 %26, %.022.i.i + %28 = add i64 %.sroa.01.0.i.i.i, %25 %29 = and i64 %28, %12 %30 = sub nsw i64 0, %29 %gep.i.i = getelementptr { { i64, i64, i64 }, {} }, ptr %invariant.gep.i.i, i64 %30 @@ -337,8 +338,8 @@ define hidden noundef zeroext i1 @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$G %.sroa.01.0.i.i = phi i64 [ 0, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$7reserve17h24fb1ac5a4ac8f9fE.exit.i" ], [ %.sroa.01.1.i.i, %43 ] %.sroa.0.025.i.i = and i64 %.pn.i.i, %.val4.i %16 = getelementptr inbounds i8, ptr %.val.i, i64 %.sroa.0.025.i.i - %.0.copyload.i32.i.i = load <16 x i8>, ptr %16, align 1, !noalias !72 - %17 = icmp eq <16 x i8> %.0.copyload.i32.i.i, %.15.vec.insert.i.i.i + %.0.copyload.i33.i.i = load <16 x i8>, ptr %16, align 1, !noalias !72 + %17 = icmp eq <16 x i8> %.0.copyload.i33.i.i, %.15.vec.insert.i.i.i %18 = bitcast <16 x i1> %17 to i16 br label %19 @@ -369,7 +370,7 @@ define hidden noundef zeroext i1 @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$G br i1 %30, label %76, label %19 33: ; preds = %20 - %34 = icmp slt <16 x i8> %.0.copyload.i32.i.i, zeroinitializer + %34 = icmp slt <16 x i8> %.0.copyload.i33.i.i, zeroinitializer %35 = bitcast <16 x i1> %34 to i16 %.not.not.i15.i.i = icmp ne i16 %35, 0 %36 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %35, i1 true) @@ -377,14 +378,14 @@ define hidden noundef zeroext i1 @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$G %.sroa.6.0.i.i.i = select i1 %.not.not.i15.i.i, i64 %37, i64 undef %38 = add i64 %.sroa.6.0.i.i.i, %.sroa.0.025.i.i %39 = and i64 %38, %.val4.i - %.sroa.3.0.i.i.i = select i1 %.not.not.i15.i.i, i64 %39, i64 undef - %.sroa.0.0.i16.i.i = zext i1 %.not.not.i15.i.i to i64 + %.sroa.3.0.i16.i.i = select i1 %.not.not.i15.i.i, i64 %39, i64 undef + %.sroa.0.0.i17.i.i = zext i1 %.not.not.i15.i.i to i64 br label %40 40: ; preds = %33, %20 - %.sroa.6.1.i.i = phi i64 [ %.sroa.3.0.i.i.i, %33 ], [ %.sroa.6.0.i.i, %20 ] - %.sroa.01.1.i.i = phi i64 [ %.sroa.0.0.i16.i.i, %33 ], [ 1, %20 ] - %41 = icmp eq <16 x i8> %.0.copyload.i32.i.i, + %.sroa.6.1.i.i = phi i64 [ %.sroa.3.0.i16.i.i, %33 ], [ %.sroa.6.0.i.i, %20 ] + %.sroa.01.1.i.i = phi i64 [ %.sroa.0.0.i17.i.i, %33 ], [ 1, %20 ] + %41 = icmp eq <16 x i8> %.0.copyload.i33.i.i, %42 = bitcast <16 x i1> %41 to i16 %.not11.i.i = icmp eq i16 %42, 0 br i1 %.not11.i.i, label %43, label %46 @@ -492,28 +493,28 @@ define hidden { i64, i64 } @_ZN9hashbrown3raw13RawTableInner10find_inner17h161d7 %.sroa.9.0 = phi i64 [ 0, %4 ], [ %30, %29 ] %.sroa.01.0 = phi i64 [ %9, %4 ], [ %32, %29 ] %13 = getelementptr inbounds i8, ptr %10, i64 %.sroa.01.0 - %.0.copyload.i32 = load <16 x i8>, ptr %13, align 1, !noalias !88 - %14 = icmp eq <16 x i8> %.0.copyload.i32, %.15.vec.insert.i + %.0.copyload.i33 = load <16 x i8>, ptr %13, align 1, !noalias !88 + %14 = icmp eq <16 x i8> %.0.copyload.i33, %.15.vec.insert.i %15 = bitcast <16 x i1> %14 to i16 br label %16 16: ; preds = %20, %12 - %.0 = phi i16 [ %15, %12 ], [ %22, %20 ] + %.0 = phi i16 [ %15, %12 ], [ %24, %20 ] %.not.not.i = icmp eq i16 %.0, 0 br i1 %.not.not.i, label %17, label %20 17: ; preds = %16 - %18 = icmp eq <16 x i8> %.0.copyload.i32, + %18 = icmp eq <16 x i8> %.0.copyload.i33, %19 = bitcast <16 x i1> %18 to i16 %.not = icmp eq i16 %19, 0 - br i1 %.not, label %29, label %.loopexit33 + br i1 %.not, label %29, label %.loopexit34 20: ; preds = %16 - %21 = add i16 %.0, -1 - %22 = and i16 %21, %.0 - %23 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.0, i1 true) - %24 = zext nneg i16 %23 to i64 - %25 = add i64 %.sroa.01.0, %24 + %21 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.0, i1 true) + %22 = zext nneg i16 %21 to i64 + %23 = add i16 %.0, -1 + %24 = and i16 %23, %.0 + %25 = add i64 %.sroa.01.0, %22 %26 = and i64 %25, %8 %27 = load ptr, ptr %11, align 8, !invariant.load !9, !nonnull !9 %28 = tail call noundef zeroext i1 %27(ptr noundef nonnull align 1 %2, i64 noundef %26) @@ -526,11 +527,11 @@ define hidden { i64, i64 } @_ZN9hashbrown3raw13RawTableInner10find_inner17h161d7 br label %12 .loopexit: ; preds = %20 - %33 = insertvalue { i64, i64 } { i64 1, i64 poison }, i64 %24, 1 - br label %.loopexit33 + %33 = insertvalue { i64, i64 } { i64 1, i64 poison }, i64 %22, 1 + br label %.loopexit34 -.loopexit33: ; preds = %17, %.loopexit - %34 = phi { i64, i64 } [ %33, %.loopexit ], [ { i64 0, i64 16 }, %17 ] +.loopexit34: ; preds = %17, %.loopexit + %34 = phi { i64, i64 } [ %33, %.loopexit ], [ { i64 0, i64 undef }, %17 ] %.sroa.3.0 = phi i64 [ %26, %.loopexit ], [ undef, %17 ] %35 = insertvalue { i64, i64 } %34, i64 %.sroa.3.0, 1 ret { i64, i64 } %35 @@ -562,28 +563,28 @@ define hidden noundef align 8 dereferenceable_or_null(24) ptr @"_ZN9hashbrown3ra %.sroa.9.0.i.i = phi i64 [ 0, %3 ], [ %28, %27 ] %.sroa.01.0.i.i = phi i64 [ %8, %3 ], [ %30, %27 ] %11 = getelementptr inbounds i8, ptr %9, i64 %.sroa.01.0.i.i - %.0.copyload.i30.i = load <16 x i8>, ptr %11, align 1, !noalias !102 - %12 = icmp eq <16 x i8> %.0.copyload.i30.i, %.15.vec.insert.i.i + %.0.copyload.i32.i = load <16 x i8>, ptr %11, align 1, !noalias !102 + %12 = icmp eq <16 x i8> %.0.copyload.i32.i, %.15.vec.insert.i.i %13 = bitcast <16 x i1> %12 to i16 br label %14 14: ; preds = %18, %10 - %.021.i = phi i16 [ %13, %10 ], [ %20, %18 ] - %.not.not.i.i = icmp eq i16 %.021.i, 0 + %.022.i = phi i16 [ %13, %10 ], [ %22, %18 ] + %.not.not.i.i = icmp eq i16 %.022.i, 0 br i1 %.not.not.i.i, label %15, label %18 15: ; preds = %14 - %16 = icmp eq <16 x i8> %.0.copyload.i30.i, + %16 = icmp eq <16 x i8> %.0.copyload.i32.i, %17 = bitcast <16 x i1> %16 to i16 %.not.i.i = icmp eq i16 %17, 0 br i1 %.not.i.i, label %27, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17hc422854ac84c7db5E.llvm.9619877368797972682.exit" 18: ; preds = %14 - %19 = add i16 %.021.i, -1 - %20 = and i16 %19, %.021.i - %21 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.021.i, i1 true) - %22 = zext nneg i16 %21 to i64 - %23 = add i64 %.sroa.01.0.i.i, %22 + %19 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.022.i, i1 true) + %20 = zext nneg i16 %19 to i64 + %21 = add i16 %.022.i, -1 + %22 = and i16 %21, %.022.i + %23 = add i64 %.sroa.01.0.i.i, %20 %24 = and i64 %23, %7 %25 = sub nsw i64 0, %24 %gep.i = getelementptr { { i64, i64, i64 }, {} }, ptr %invariant.gep.i, i64 %25 @@ -626,28 +627,28 @@ define hidden noundef ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17hc422 %.sroa.9.0.i = phi i64 [ 0, %3 ], [ %28, %27 ] %.sroa.01.0.i = phi i64 [ %8, %3 ], [ %30, %27 ] %11 = getelementptr inbounds i8, ptr %9, i64 %.sroa.01.0.i - %.0.copyload.i30 = load <16 x i8>, ptr %11, align 1, !noalias !113 - %12 = icmp eq <16 x i8> %.0.copyload.i30, %.15.vec.insert.i + %.0.copyload.i32 = load <16 x i8>, ptr %11, align 1, !noalias !113 + %12 = icmp eq <16 x i8> %.0.copyload.i32, %.15.vec.insert.i %13 = bitcast <16 x i1> %12 to i16 br label %14 14: ; preds = %18, %10 - %.021 = phi i16 [ %13, %10 ], [ %20, %18 ] - %.not.not.i = icmp eq i16 %.021, 0 + %.022 = phi i16 [ %13, %10 ], [ %22, %18 ] + %.not.not.i = icmp eq i16 %.022, 0 br i1 %.not.not.i, label %15, label %18 15: ; preds = %14 - %16 = icmp eq <16 x i8> %.0.copyload.i30, + %16 = icmp eq <16 x i8> %.0.copyload.i32, %17 = bitcast <16 x i1> %16 to i16 %.not.i = icmp eq i16 %17, 0 br i1 %.not.i, label %27, label %_ZN9hashbrown3raw13RawTableInner10find_inner17h161d71df3565f810E.llvm.9619877368797972682.exit.thread 18: ; preds = %14 - %19 = add i16 %.021, -1 - %20 = and i16 %19, %.021 - %21 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.021, i1 true) - %22 = zext nneg i16 %21 to i64 - %23 = add i64 %.sroa.01.0.i, %22 + %19 = tail call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.022, i1 true) + %20 = zext nneg i16 %19 to i64 + %21 = add i16 %.022, -1 + %22 = and i16 %21, %.022 + %23 = add i64 %.sroa.01.0.i, %20 %24 = and i64 %23, %7 %25 = sub nsw i64 0, %24 %gep = getelementptr { { i64, i64, i64 }, {} }, ptr %invariant.gep, i64 %25 diff --git a/bench/html5ever-rs/optimized/2fz1wads4khq0fs8.ll b/bench/html5ever-rs/optimized/2fz1wads4khq0fs8.ll index 4b4f9600c60..8e6c70dedd8 100644 --- a/bench/html5ever-rs/optimized/2fz1wads4khq0fs8.ll +++ b/bench/html5ever-rs/optimized/2fz1wads4khq0fs8.ll @@ -7,9 +7,13 @@ target triple = "x86_64-unknown-linux-gnu" ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define hidden { i64, i64 } @"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h95f7b9fcea263b6bE.llvm.13073156767421070163"(i64 noundef %0, i64 %1) unnamed_addr #0 { - %3 = insertvalue { i64, i64 } poison, i64 %0, 0 - %4 = insertvalue { i64, i64 } %3, i64 %1, 1 - ret { i64, i64 } %4 + %3 = icmp eq i64 %0, -9223372036854775807 + %4 = icmp eq i64 %0, 0 + %5 = or i1 %3, %4 + %.sroa.33.0 = select i1 %5, i64 undef, i64 %1 + %6 = insertvalue { i64, i64 } poison, i64 %0, 0 + %7 = insertvalue { i64, i64 } %6, i64 %.sroa.33.0, 1 + ret { i64, i64 } %7 } ; Function Attrs: inlinehint nonlazybind uwtable @@ -27,7 +31,9 @@ define hidden void @_ZN5alloc7raw_vec14handle_reserve17had58ffe066ab6fa9E.llvm.1 unreachable 5: ; preds = %2 - tail call void @_ZN5alloc5alloc18handle_alloc_error17h81706c48453a6249E(i64 noundef %0, i64 noundef %1) #14 + %6 = icmp eq i64 %0, -9223372036854775807 + %.sroa.33.0.i = select i1 %6, i64 undef, i64 %1 + tail call void @_ZN5alloc5alloc18handle_alloc_error17h81706c48453a6249E(i64 noundef %0, i64 noundef %.sroa.33.0.i) #14 unreachable } @@ -64,7 +70,7 @@ define hidden { i64, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$10grow_exact1 17: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h69007db3a43b7361E.exit" %18 = icmp eq i64 %5, 0 - br i1 %18, label %_ZN5alloc7raw_vec11finish_grow17hf0ed08a9b05b1c78E.exit.thread46, label %19 + br i1 %18, label %_ZN5alloc7raw_vec11finish_grow17hf0ed08a9b05b1c78E.exit.thread50, label %19 19: ; preds = %17 %20 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !5 @@ -76,17 +82,17 @@ _ZN5alloc7raw_vec11finish_grow17hf0ed08a9b05b1c78E.exit: ; preds = %13, %19 %.not = icmp eq ptr %.sroa.012.2.i.i.pn.i, null %.sink1.i.i = select i1 %.not, ptr inttoptr (i64 8 to ptr), ptr %.sroa.012.2.i.i.pn.i %22 = ptrtoint ptr %.sink1.i.i to i64 - br i1 %.not, label %_ZN5alloc7raw_vec11finish_grow17hf0ed08a9b05b1c78E.exit.thread, label %_ZN5alloc7raw_vec11finish_grow17hf0ed08a9b05b1c78E.exit.thread46 + br i1 %.not, label %_ZN5alloc7raw_vec11finish_grow17hf0ed08a9b05b1c78E.exit.thread, label %_ZN5alloc7raw_vec11finish_grow17hf0ed08a9b05b1c78E.exit.thread50 -_ZN5alloc7raw_vec11finish_grow17hf0ed08a9b05b1c78E.exit.thread46: ; preds = %17, %_ZN5alloc7raw_vec11finish_grow17hf0ed08a9b05b1c78E.exit - %.sink1.i.i50 = phi ptr [ %.sroa.012.2.i.i.pn.i, %_ZN5alloc7raw_vec11finish_grow17hf0ed08a9b05b1c78E.exit ], [ inttoptr (i64 8 to ptr), %17 ] - store ptr %.sink1.i.i50, ptr %10, align 8 +_ZN5alloc7raw_vec11finish_grow17hf0ed08a9b05b1c78E.exit.thread50: ; preds = %17, %_ZN5alloc7raw_vec11finish_grow17hf0ed08a9b05b1c78E.exit + %.sink1.i.i54 = phi ptr [ %.sroa.012.2.i.i.pn.i, %_ZN5alloc7raw_vec11finish_grow17hf0ed08a9b05b1c78E.exit ], [ inttoptr (i64 8 to ptr), %17 ] + store ptr %.sink1.i.i54, ptr %10, align 8 store i64 %5, ptr %0, align 8 br label %_ZN5alloc7raw_vec11finish_grow17hf0ed08a9b05b1c78E.exit.thread -_ZN5alloc7raw_vec11finish_grow17hf0ed08a9b05b1c78E.exit.thread: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h69007db3a43b7361E.exit", %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h69007db3a43b7361E.exit.thread", %_ZN5alloc7raw_vec11finish_grow17hf0ed08a9b05b1c78E.exit, %3, %_ZN5alloc7raw_vec11finish_grow17hf0ed08a9b05b1c78E.exit.thread46 - %.sroa.4.0 = phi i64 [ undef, %_ZN5alloc7raw_vec11finish_grow17hf0ed08a9b05b1c78E.exit.thread46 ], [ %5, %3 ], [ %9, %_ZN5alloc7raw_vec11finish_grow17hf0ed08a9b05b1c78E.exit ], [ undef, %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h69007db3a43b7361E.exit.thread" ], [ undef, %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h69007db3a43b7361E.exit" ] - %.sroa.0.0 = phi i64 [ -9223372036854775807, %_ZN5alloc7raw_vec11finish_grow17hf0ed08a9b05b1c78E.exit.thread46 ], [ 0, %3 ], [ %22, %_ZN5alloc7raw_vec11finish_grow17hf0ed08a9b05b1c78E.exit ], [ 0, %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h69007db3a43b7361E.exit.thread" ], [ 0, %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h69007db3a43b7361E.exit" ] +_ZN5alloc7raw_vec11finish_grow17hf0ed08a9b05b1c78E.exit.thread: ; preds = %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h69007db3a43b7361E.exit", %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h69007db3a43b7361E.exit.thread", %_ZN5alloc7raw_vec11finish_grow17hf0ed08a9b05b1c78E.exit, %3, %_ZN5alloc7raw_vec11finish_grow17hf0ed08a9b05b1c78E.exit.thread50 + %.sroa.4.0 = phi i64 [ undef, %_ZN5alloc7raw_vec11finish_grow17hf0ed08a9b05b1c78E.exit.thread50 ], [ %5, %3 ], [ %9, %_ZN5alloc7raw_vec11finish_grow17hf0ed08a9b05b1c78E.exit ], [ undef, %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h69007db3a43b7361E.exit.thread" ], [ undef, %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h69007db3a43b7361E.exit" ] + %.sroa.0.0 = phi i64 [ -9223372036854775807, %_ZN5alloc7raw_vec11finish_grow17hf0ed08a9b05b1c78E.exit.thread50 ], [ 0, %3 ], [ %22, %_ZN5alloc7raw_vec11finish_grow17hf0ed08a9b05b1c78E.exit ], [ 0, %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h69007db3a43b7361E.exit.thread" ], [ 0, %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h69007db3a43b7361E.exit" ] %23 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 %24 = insertvalue { i64, i64 } %23, i64 %.sroa.4.0, 1 ret { i64, i64 } %24 @@ -430,8 +436,8 @@ _ZN5alloc7raw_vec11finish_grow17hf0ed08a9b05b1c78E.exit.i: ; preds = %25, %19 br i1 %.not.i, label %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$10grow_exact17heba766ee73d434efE.llvm.13073156767421070163.exit.thread", label %"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$10grow_exact17heba766ee73d434efE.llvm.13073156767421070163.exit" "_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$10grow_exact17heba766ee73d434efE.llvm.13073156767421070163.exit": ; preds = %23, %_ZN5alloc7raw_vec11finish_grow17hf0ed08a9b05b1c78E.exit.i - %.sink1.i.i50.i = phi ptr [ %.sroa.012.2.i.i.pn.i.i, %_ZN5alloc7raw_vec11finish_grow17hf0ed08a9b05b1c78E.exit.i ], [ inttoptr (i64 8 to ptr), %23 ] - store ptr %.sink1.i.i50.i, ptr %16, align 8, !alias.scope !31 + %.sink1.i.i54.i = phi ptr [ %.sroa.012.2.i.i.pn.i.i, %_ZN5alloc7raw_vec11finish_grow17hf0ed08a9b05b1c78E.exit.i ], [ inttoptr (i64 8 to ptr), %23 ] + store ptr %.sink1.i.i54.i, ptr %16, align 8, !alias.scope !31 store i64 %11, ptr %0, align 8, !alias.scope !31 %.pre = sub i64 %11, %1 br label %7 diff --git a/bench/html5ever-rs/optimized/2viofaie60fezmt7.ll b/bench/html5ever-rs/optimized/2viofaie60fezmt7.ll index 69cb190964c..2cd8f4d777f 100644 --- a/bench/html5ever-rs/optimized/2viofaie60fezmt7.ll +++ b/bench/html5ever-rs/optimized/2viofaie60fezmt7.ll @@ -9,9 +9,13 @@ target triple = "x86_64-unknown-linux-gnu" ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable define hidden { i64, i64 } @"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h59b7ccfa93ac958eE.llvm.10562867175124784169"(i64 noundef %0, i64 %1) unnamed_addr #0 { - %3 = insertvalue { i64, i64 } poison, i64 %0, 0 - %4 = insertvalue { i64, i64 } %3, i64 %1, 1 - ret { i64, i64 } %4 + %3 = icmp eq i64 %0, -9223372036854775807 + %4 = icmp eq i64 %0, 0 + %5 = or i1 %3, %4 + %.sroa.33.0 = select i1 %5, i64 undef, i64 %1 + %6 = insertvalue { i64, i64 } poison, i64 %0, 0 + %7 = insertvalue { i64, i64 } %6, i64 %.sroa.33.0, 1 + ret { i64, i64 } %7 } ; Function Attrs: inlinehint nonlazybind uwtable @@ -39,11 +43,11 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t br label %17 17: ; preds = %.lr.ph, %75 - %.sroa.10.028 = phi i64 [ %8, %.lr.ph ], [ %18, %75 ] - %.sroa.013.027 = phi ptr [ %1, %.lr.ph ], [ %21, %75 ] - %.sroa.7.026 = phi i64 [ 0, %.lr.ph ], [ %22, %75 ] - %18 = add i64 %.sroa.10.028, -1 - %19 = icmp eq ptr %.sroa.013.027, %12 + %.sroa.10.029 = phi i64 [ %8, %.lr.ph ], [ %18, %75 ] + %.sroa.013.028 = phi ptr [ %1, %.lr.ph ], [ %21, %75 ] + %.sroa.7.027 = phi i64 [ 0, %.lr.ph ], [ %22, %75 ] + %18 = add i64 %.sroa.10.029, -1 + %19 = icmp eq ptr %.sroa.013.028, %12 br i1 %19, label %.thread, label %20 .thread: ; preds = %75, %17, %3 @@ -53,12 +57,12 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t ret void 20: ; preds = %17 - %21 = getelementptr inbounds i8, ptr %.sroa.013.027, i64 40 - %22 = add nuw nsw i64 %.sroa.7.026, 1 + %21 = getelementptr inbounds i8, ptr %.sroa.013.028, i64 40 + %22 = add nuw nsw i64 %.sroa.7.027, 1 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4), !noalias !4 tail call void @llvm.experimental.noalias.scope.decl(metadata !7) tail call void @llvm.experimental.noalias.scope.decl(metadata !10) - %23 = getelementptr inbounds i8, ptr %.sroa.013.027, i64 16 + %23 = getelementptr inbounds i8, ptr %.sroa.013.028, i64 16 %24 = load i64, ptr %23, align 8, !alias.scope !10, !noalias !12, !noundef !13 %25 = icmp ne i64 %24, 0 %26 = and i64 %24, 3 @@ -67,7 +71,7 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t br i1 %or.cond.i.i, label %32, label %28 28: ; preds = %32, %20 - %29 = load i64, ptr %.sroa.013.027, align 8, !range !14, !alias.scope !10, !noalias !12, !noundef !13 + %29 = load i64, ptr %.sroa.013.028, align 8, !range !14, !alias.scope !10, !noalias !12, !noundef !13 %30 = and i64 %29, 3 %31 = icmp eq i64 %30, 0 br i1 %31, label %36, label %40 @@ -85,7 +89,7 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t br label %40 40: ; preds = %36, %28 - %41 = getelementptr inbounds i8, ptr %.sroa.013.027, i64 8 + %41 = getelementptr inbounds i8, ptr %.sroa.013.028, i64 8 %42 = load i64, ptr %41, align 8, !range !14, !alias.scope !10, !noalias !12, !noundef !13 %43 = and i64 %42, 3 %44 = icmp eq i64 %43, 0 @@ -101,7 +105,7 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t store i64 %24, ptr %14, align 8, !alias.scope !7, !noalias !16 store i64 %29, ptr %4, align 8, !alias.scope !7, !noalias !16 store i64 %42, ptr %15, align 8, !alias.scope !7, !noalias !16 - %49 = getelementptr inbounds i8, ptr %.sroa.013.027, i64 24 + %49 = getelementptr inbounds i8, ptr %.sroa.013.028, i64 24 %50 = load i64, ptr %49, align 8, !range !14, !noalias !17, !noundef !13 %51 = icmp ugt i64 %50, 15 br i1 %51, label %52, label %75 @@ -113,7 +117,7 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t 55: ; preds = %52 %56 = inttoptr i64 %50 to ptr - %57 = getelementptr inbounds i8, ptr %.sroa.013.027, i64 36 + %57 = getelementptr inbounds i8, ptr %.sroa.013.028, i64 36 %58 = load i32, ptr %57, align 4, !noalias !17, !noundef !13 %59 = getelementptr inbounds i8, ptr %56, i64 8 store i32 %58, ptr %59, align 8, !noalias !17 @@ -161,13 +165,13 @@ define hidden void @"_ZN52_$LT$T$u20$as$u20$alloc..slice..hack..ConvertVec$GT$6t call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(24) %4, i64 24, i1 false) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef nonnull align 8 dereferenceable(16) %49, i64 16, i1 false) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4), !noalias !4 - %76 = getelementptr inbounds [0 x { [5 x i64] }], ptr %9, i64 0, i64 %.sroa.7.026 + %76 = getelementptr inbounds [0 x { [5 x i64] }], ptr %9, i64 0, i64 %.sroa.7.027 call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %76, ptr noundef nonnull align 8 dereferenceable(40) %5, i64 40, i1 false) %77 = icmp eq i64 %18, 0 br i1 %77, label %.thread, label %17 78: ; preds = %71 - store i64 %.sroa.7.026, ptr %11, align 8 + store i64 %.sroa.7.027, ptr %11, align 8 invoke void @"_ZN4core3ptr77drop_in_place$LT$alloc..vec..Vec$LT$markup5ever..interface..Attribute$GT$$GT$17he6839a659e0d3758E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6) #13 to label %81 unwind label %79 @@ -239,7 +243,9 @@ define hidden void @_ZN5alloc7raw_vec14handle_reserve17had58ffe066ab6fa9E.llvm.1 unreachable 5: ; preds = %2 - tail call void @_ZN5alloc5alloc18handle_alloc_error17h81706c48453a6249E(i64 noundef %0, i64 noundef %1) #12 + %6 = icmp eq i64 %0, -9223372036854775807 + %.sroa.33.0.i = select i1 %6, i64 undef, i64 %1 + tail call void @_ZN5alloc5alloc18handle_alloc_error17h81706c48453a6249E(i64 noundef %0, i64 noundef %.sroa.33.0.i) #12 unreachable } diff --git a/bench/hyperscan/optimized/ng_misc_opt.cpp.ll b/bench/hyperscan/optimized/ng_misc_opt.cpp.ll index 31a246d940a..af3c8281954 100644 --- a/bench/hyperscan/optimized/ng_misc_opt.cpp.ll +++ b/bench/hyperscan/optimized/ng_misc_opt.cpp.ll @@ -10048,23 +10048,23 @@ if.then.i.i.i.i.i140: ; preds = %lpad36 if.end: ; preds = %if.then.i.i.i.i.i130, %invoke.cont37 %23 = load ptr, ptr %stack, align 8 %24 = load ptr, ptr %_M_finish.i.i101, align 8 - %cmp.i.i620 = icmp eq ptr %23, %24 - br i1 %cmp.i.i620, label %invoke.cont.i, label %while.body + %cmp.i.i622 = icmp eq ptr %23, %24 + br i1 %cmp.i.i622, label %invoke.cont.i, label %while.body while.body: ; preds = %if.end, %invoke.cont144 %25 = phi ptr [ %104, %invoke.cont144 ], [ %24, %if.end ] - %src_e.sroa.0.0621 = phi i8 [ %src_e.sroa.0.2.lcssa, %invoke.cont144 ], [ 0, %if.end ] + %src_e.sroa.0.0623 = phi i8 [ %src_e.sroa.0.2.lcssa, %invoke.cont144 ], [ 0, %if.end ] %add.ptr.i.i = getelementptr inbounds i8, ptr %25, i64 -120 %u.sroa.0.0.copyload = load ptr, ptr %add.ptr.i.i, align 8 %u.sroa.13.0.add.ptr.i.i.sroa_idx = getelementptr inbounds i8, ptr %25, i64 -112 %u.sroa.13.0.copyload = load i64, ptr %u.sroa.13.0.add.ptr.i.i.sroa_idx, align 8 %second = getelementptr inbounds i8, ptr %25, i64 -104 - %tobool.i.i.i.i150 = trunc nuw i8 %src_e.sroa.0.0621 to i1 + %tobool.i.i.i.i150 = trunc nuw i8 %src_e.sroa.0.0623 to i1 %26 = load i8, ptr %second, align 8 %tobool.i4.i.i.i = trunc i8 %26 to i1 - %spec.select641 = select i1 %tobool.i4.i.i.i, i8 %src_e.sroa.0.0621, i8 0 - %spec.select642 = select i1 %tobool.i4.i.i.i, i8 1, i8 %src_e.sroa.0.0621 - %src_e.sroa.0.1 = select i1 %tobool.i.i.i.i150, i8 %spec.select641, i8 %spec.select642 + %spec.select643 = select i1 %tobool.i4.i.i.i, i8 %src_e.sroa.0.0623, i8 0 + %spec.select644 = select i1 %tobool.i4.i.i.i, i8 1, i8 %src_e.sroa.0.0623 + %src_e.sroa.0.1 = select i1 %tobool.i.i.i.i150, i8 %spec.select643, i8 %spec.select644 %second47 = getelementptr inbounds i8, ptr %25, i64 -80 %27 = load ptr, ptr %second47, align 8 %m_predicate2.i.i155 = getelementptr inbounds i8, ptr %25, i64 -72 @@ -10099,20 +10099,22 @@ if.end58: ; preds = %if.then.i.i.i.i.i.i br i1 %cmp.i.i.i.i.i.i.i.not595, label %invoke.cont144, label %invoke.cont73 invoke.cont73: ; preds = %if.end58, %if.end140 - %u.sroa.13.0612 = phi i64 [ %u.sroa.13.1, %if.end140 ], [ %u.sroa.13.0.copyload, %if.end58 ] - %u.sroa.0.0611 = phi ptr [ %u.sroa.0.1, %if.end140 ], [ %u.sroa.0.0.copyload, %if.end58 ] - %src_e.sroa.0.2604 = phi i8 [ %src_e.sroa.0.4, %if.end140 ], [ %src_e.sroa.0.1, %if.end58 ] - %ei_end.sroa.20.0603 = phi ptr [ %ei_end.sroa.20.1, %if.end140 ], [ %ei_end.sroa.20.8.copyload520, %if.end58 ] - %ei_end.sroa.22.0602 = phi ptr [ %ei_end.sroa.22.1, %if.end140 ], [ %30, %if.end58 ] - %ei_end.sroa.10.0601 = phi ptr [ %ei_end.sroa.10.1, %if.end140 ], [ %ei_end.sroa.10.8.copyload510, %if.end58 ] - %ei.sroa.0.0600 = phi ptr [ %ei.sroa.0.5, %if.end140 ], [ %27, %if.end58 ] - %ei.sroa.21.0599 = phi ptr [ %ei.sroa.21.1, %if.end140 ], [ %ei.sroa.21.8.copyload541, %if.end58 ] - %ei.sroa.35.0598 = phi ptr [ %ei.sroa.35.1, %if.end140 ], [ %28, %if.end58 ] - %ei.sroa.32.0597 = phi ptr [ %ei.sroa.32.1, %if.end140 ], [ %ei.sroa.32.8.copyload545, %if.end58 ] + %u.sroa.13.0614 = phi i64 [ %u.sroa.13.1, %if.end140 ], [ %u.sroa.13.0.copyload, %if.end58 ] + %u.sroa.0.0613 = phi ptr [ %u.sroa.0.1, %if.end140 ], [ %u.sroa.0.0.copyload, %if.end58 ] + %src_e.sroa.0.2606 = phi i8 [ %src_e.sroa.0.4, %if.end140 ], [ %src_e.sroa.0.1, %if.end58 ] + %ei_end.sroa.18.0605 = phi i64 [ %ei_end.sroa.18.1, %if.end140 ], [ %ei_end.sroa.18.8.copyload515, %if.end58 ] + %ei_end.sroa.20.0604 = phi ptr [ %ei_end.sroa.20.1, %if.end140 ], [ %ei_end.sroa.20.8.copyload520, %if.end58 ] + %ei_end.sroa.22.0603 = phi ptr [ %ei_end.sroa.22.1, %if.end140 ], [ %30, %if.end58 ] + %ei_end.sroa.10.0602 = phi ptr [ %ei_end.sroa.10.1, %if.end140 ], [ %ei_end.sroa.10.8.copyload510, %if.end58 ] + %ei.sroa.0.0601 = phi ptr [ %ei.sroa.0.5, %if.end140 ], [ %27, %if.end58 ] + %ei.sroa.21.0600 = phi ptr [ %ei.sroa.21.1, %if.end140 ], [ %ei.sroa.21.8.copyload541, %if.end58 ] + %ei.sroa.35.0599 = phi ptr [ %ei.sroa.35.1, %if.end140 ], [ %28, %if.end58 ] + %ei.sroa.32.0598 = phi ptr [ %ei.sroa.32.1, %if.end140 ], [ %ei.sroa.32.8.copyload545, %if.end58 ] + %ei.sroa.29.0597 = phi i64 [ %ei.sroa.29.1, %if.end140 ], [ %ei.sroa.29.8.copyload543, %if.end58 ] %ei_end.sroa.0.0596 = phi ptr [ %ei_end.sroa.0.1, %if.end140 ], [ %29, %if.end58 ] - %serial2.i.i.i.i.i.i.i165 = getelementptr inbounds i8, ptr %ei.sroa.0.0600, i64 48 + %serial2.i.i.i.i.i.i.i165 = getelementptr inbounds i8, ptr %ei.sroa.0.0601, i64 48 %32 = load i64, ptr %serial2.i.i.i.i.i.i.i165, align 8 - %target.i.i.i = getelementptr inbounds i8, ptr %ei.sroa.0.0600, i64 40 + %target.i.i.i = getelementptr inbounds i8, ptr %ei.sroa.0.0601, i64 40 %33 = load ptr, ptr %target.i.i.i, align 8 %serial2.i.i.i.i = getelementptr inbounds i8, ptr %33, i64 96 %34 = load i64, ptr %serial2.i.i.i.i, align 8 @@ -10134,15 +10136,15 @@ invoke.cont73: ; preds = %if.end58, %if.end14 br i1 %cmp, label %invoke.cont83, label %invoke.cont137 invoke.cont83: ; preds = %invoke.cont73 - %tobool.i.i.i183 = trunc nuw i8 %src_e.sroa.0.2604 to i1 - %spec.select = select i1 %tobool.i.i.i183, i8 %src_e.sroa.0.2604, i8 1 - %43 = load ptr, ptr %ei.sroa.0.0600, align 8 - %cmp.i.i.i.i.not2.i.i.i.i = icmp eq ptr %43, %ei.sroa.35.0598 + %tobool.i.i.i183 = trunc nuw i8 %src_e.sroa.0.2606 to i1 + %spec.select = select i1 %tobool.i.i.i183, i8 %src_e.sroa.0.2606, i8 1 + %43 = load ptr, ptr %ei.sroa.0.0601, align 8 + %cmp.i.i.i.i.not2.i.i.i.i = icmp eq ptr %43, %ei.sroa.35.0599 br i1 %cmp.i.i.i.i.not2.i.i.i.i, label %invoke.cont92, label %land.rhs.lr.ph.i.i.i.i land.rhs.lr.ph.i.i.i.i: ; preds = %invoke.cont83 - %m_size.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %ei.sroa.21.0599, i64 8 - %44 = load ptr, ptr %ei.sroa.21.0599, align 8, !noalias !60 + %m_size.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %ei.sroa.21.0600, i64 8 + %44 = load ptr, ptr %ei.sroa.21.0600, align 8, !noalias !60 %45 = load i64, ptr %m_size.i.i.i.i.i.i.i.i.i.i, align 8, !noalias !60 %add.ptr.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds %"class.ue2::graph_detail::edge_descriptor", ptr %44, i64 %45 %cmp8.i.i.i.i.i.i.i.i.i.i = icmp sgt i64 %45, 0 @@ -10205,7 +10207,7 @@ _ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS while.body.i.i.i.i: ; preds = %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i.i, %if.then.i.i4.i.i.i.i.i.i.i.i %53 = load ptr, ptr %ei.sroa.0.1, align 8 - %cmp.i.i.i.i.not.i.i.i.i = icmp eq ptr %53, %ei.sroa.35.0598 + %cmp.i.i.i.i.not.i.i.i.i = icmp eq ptr %53, %ei.sroa.35.0599 br i1 %cmp.i.i.i.i.not.i.i.i.i, label %invoke.cont92, label %land.rhs.i.i.i.i, !llvm.loop !623 invoke.cont92: ; preds = %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i.i, %if.then.i.i4.i.i.i.i.i.i.i.i, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i.i, %while.body.i.i.i.i, %invoke.cont83 @@ -10217,16 +10219,16 @@ invoke.cont92: ; preds = %_ZSt11lower_boundIN br i1 %cmp.not.i.i233, label %if.else.i.i255, label %if.then.i.i234 if.then.i.i234: ; preds = %invoke.cont92 - store ptr %u.sroa.0.0611, ptr %54, align 8 + store ptr %u.sroa.0.0613, ptr %54, align 8 %ref.tmp87.sroa.0.sroa.3.0..sroa_idx = getelementptr inbounds i8, ptr %54, i64 8 - store i64 %u.sroa.13.0612, ptr %ref.tmp87.sroa.0.sroa.3.0..sroa_idx, align 8 + store i64 %u.sroa.13.0614, ptr %ref.tmp87.sroa.0.sroa.3.0..sroa_idx, align 8 %second.i.i.i.i.i235 = getelementptr inbounds i8, ptr %54, i64 16 store i8 0, ptr %second.i.i.i.i.i235, align 8 br i1 %tobool.i.i.i.i.i198, label %invoke.cont.i.i.i.i.i.i.i.i252, label %_ZNSt16allocator_traitsISaISt4pairIN3ue212graph_detail17vertex_descriptorINS1_9ue2_graphINS1_8NGHolderENS1_19NFAGraphVertexPropsENS1_17NFAGraphEdgePropsEEEEES0_IN5boost8optionalINS2_15edge_descriptorIS8_EEEES0_INSA_9iterators15filter_iteratorINSA_6detail18out_edge_predicateINS1_15bad_edge_filterINS1_8flat_setISD_St4lessISD_ESaISD_EEEEENSA_8keep_allENSA_14filtered_graphIKS5_SP_SQ_EEEENS8_17out_edge_iteratorEEESW_EEEEE9constructISZ_JSZ_EEEvRS10_PT_DpOT0_.exit.i.i238 invoke.cont.i.i.i.i.i.i.i.i252: ; preds = %if.then.i.i234 %m_storage.i2.i.i.i.i.i.i.i.i254 = getelementptr inbounds i8, ptr %54, i64 24 - store ptr %ei.sroa.0.0600, ptr %m_storage.i2.i.i.i.i.i.i.i.i254, align 8 + store ptr %ei.sroa.0.0601, ptr %m_storage.i2.i.i.i.i.i.i.i.i254, align 8 %ref.tmp87.sroa.11.sroa.3.0.m_storage.i2.i.i.i.i.i.i.i.i254.sroa_idx = getelementptr inbounds i8, ptr %54, i64 32 store i64 %32, ptr %ref.tmp87.sroa.11.sroa.3.0.m_storage.i2.i.i.i.i.i.i.i.i254.sroa_idx, align 8 store i8 1, ptr %second.i.i.i.i.i235, align 8 @@ -10236,23 +10238,23 @@ _ZNSt16allocator_traitsISaISt4pairIN3ue212graph_detail17vertex_descriptorINS1_9u %second.i.i.i.i.i.i239 = getelementptr inbounds i8, ptr %54, i64 40 store ptr %ei.sroa.0.2, ptr %second.i.i.i.i.i.i239, align 8 %m_predicate.i.i.i.i.i.i.i.i241 = getelementptr inbounds i8, ptr %54, i64 48 - store ptr %ei.sroa.21.0599, ptr %m_predicate.i.i.i.i.i.i.i.i241, align 8 + store ptr %ei.sroa.21.0600, ptr %m_predicate.i.i.i.i.i.i.i.i241, align 8 %ref.tmp87.sroa.17.sroa.3.0.m_predicate.i.i.i.i.i.i.i.i241.sroa_idx = getelementptr inbounds i8, ptr %54, i64 56 - store i64 %ei.sroa.29.8.copyload543, ptr %ref.tmp87.sroa.17.sroa.3.0.m_predicate.i.i.i.i.i.i.i.i241.sroa_idx, align 8 + store i64 %ei.sroa.29.0597, ptr %ref.tmp87.sroa.17.sroa.3.0.m_predicate.i.i.i.i.i.i.i.i241.sroa_idx, align 8 %ref.tmp87.sroa.17.sroa.4.0.m_predicate.i.i.i.i.i.i.i.i241.sroa_idx = getelementptr inbounds i8, ptr %54, i64 64 - store ptr %ei.sroa.32.0597, ptr %ref.tmp87.sroa.17.sroa.4.0.m_predicate.i.i.i.i.i.i.i.i241.sroa_idx, align 8 + store ptr %ei.sroa.32.0598, ptr %ref.tmp87.sroa.17.sroa.4.0.m_predicate.i.i.i.i.i.i.i.i241.sroa_idx, align 8 %m_end.i.i.i.i.i.i.i.i243 = getelementptr inbounds i8, ptr %54, i64 72 - store ptr %ei.sroa.35.0598, ptr %m_end.i.i.i.i.i.i.i.i243, align 8 + store ptr %ei.sroa.35.0599, ptr %m_end.i.i.i.i.i.i.i.i243, align 8 %second.i.i.i.i.i.i.i245 = getelementptr inbounds i8, ptr %54, i64 80 store ptr %ei_end.sroa.0.0596, ptr %second.i.i.i.i.i.i.i245, align 8 %m_predicate.i2.i.i.i.i.i.i.i247 = getelementptr inbounds i8, ptr %54, i64 88 - store ptr %ei_end.sroa.10.0601, ptr %m_predicate.i2.i.i.i.i.i.i.i247, align 8 + store ptr %ei_end.sroa.10.0602, ptr %m_predicate.i2.i.i.i.i.i.i.i247, align 8 %ref.tmp87.sroa.26.sroa.3.0.m_predicate.i2.i.i.i.i.i.i.i247.sroa_idx = getelementptr inbounds i8, ptr %54, i64 96 - store i64 %ei_end.sroa.18.8.copyload515, ptr %ref.tmp87.sroa.26.sroa.3.0.m_predicate.i2.i.i.i.i.i.i.i247.sroa_idx, align 8 + store i64 %ei_end.sroa.18.0605, ptr %ref.tmp87.sroa.26.sroa.3.0.m_predicate.i2.i.i.i.i.i.i.i247.sroa_idx, align 8 %ref.tmp87.sroa.26.sroa.4.0.m_predicate.i2.i.i.i.i.i.i.i247.sroa_idx = getelementptr inbounds i8, ptr %54, i64 104 - store ptr %ei_end.sroa.20.0603, ptr %ref.tmp87.sroa.26.sroa.4.0.m_predicate.i2.i.i.i.i.i.i.i247.sroa_idx, align 8 + store ptr %ei_end.sroa.20.0604, ptr %ref.tmp87.sroa.26.sroa.4.0.m_predicate.i2.i.i.i.i.i.i.i247.sroa_idx, align 8 %m_end.i4.i.i.i.i.i.i.i249 = getelementptr inbounds i8, ptr %54, i64 112 - store ptr %ei_end.sroa.22.0602, ptr %m_end.i4.i.i.i.i.i.i.i249, align 8 + store ptr %ei_end.sroa.22.0603, ptr %m_end.i4.i.i.i.i.i.i.i249, align 8 %56 = load ptr, ptr %_M_finish.i.i101, align 8 %incdec.ptr.i.i251 = getelementptr inbounds i8, ptr %56, i64 120 store ptr %incdec.ptr.i.i251, ptr %_M_finish.i.i101, align 8 @@ -10291,16 +10293,16 @@ cond.true.i.i: ; preds = %_ZNKSt6vectorISt4pa _ZNSt12_Vector_baseISt4pairIN3ue212graph_detail17vertex_descriptorINS1_9ue2_graphINS1_8NGHolderENS1_19NFAGraphVertexPropsENS1_17NFAGraphEdgePropsEEEEES0_IN5boost8optionalINS2_15edge_descriptorIS8_EEEES0_INSA_9iterators15filter_iteratorINSA_6detail18out_edge_predicateINS1_15bad_edge_filterINS1_8flat_setISD_St4lessISD_ESaISD_EEEEENSA_8keep_allENSA_14filtered_graphIKS5_SP_SQ_EEEENS8_17out_edge_iteratorEEESW_EEESaISZ_EE11_M_allocateEm.exit.i: ; preds = %cond.true.i.i, %_ZNKSt6vectorISt4pairIN3ue212graph_detail17vertex_descriptorINS1_9ue2_graphINS1_8NGHolderENS1_19NFAGraphVertexPropsENS1_17NFAGraphEdgePropsEEEEES0_IN5boost8optionalINS2_15edge_descriptorIS8_EEEES0_INSA_9iterators15filter_iteratorINSA_6detail18out_edge_predicateINS1_15bad_edge_filterINS1_8flat_setISD_St4lessISD_ESaISD_EEEEENSA_8keep_allENSA_14filtered_graphIKS5_SP_SQ_EEEENS8_17out_edge_iteratorEEESW_EEESaISZ_EE12_M_check_lenEmPKc.exit.i %cond.i19.i = phi ptr [ null, %_ZNKSt6vectorISt4pairIN3ue212graph_detail17vertex_descriptorINS1_9ue2_graphINS1_8NGHolderENS1_19NFAGraphVertexPropsENS1_17NFAGraphEdgePropsEEEEES0_IN5boost8optionalINS2_15edge_descriptorIS8_EEEES0_INSA_9iterators15filter_iteratorINSA_6detail18out_edge_predicateINS1_15bad_edge_filterINS1_8flat_setISD_St4lessISD_ESaISD_EEEEENSA_8keep_allENSA_14filtered_graphIKS5_SP_SQ_EEEENS8_17out_edge_iteratorEEESW_EEESaISZ_EE12_M_check_lenEmPKc.exit.i ], [ %call5.i.i.i.i454, %cond.true.i.i ] %add.ptr.i = getelementptr inbounds %"struct.std::pair.187", ptr %cond.i19.i, i64 %sub.ptr.div.i.i.i - store ptr %u.sroa.0.0611, ptr %add.ptr.i, align 8 + store ptr %u.sroa.0.0613, ptr %add.ptr.i, align 8 %ref.tmp87.sroa.0.sroa.3.0.add.ptr.i.sroa_idx = getelementptr inbounds i8, ptr %add.ptr.i, i64 8 - store i64 %u.sroa.13.0612, ptr %ref.tmp87.sroa.0.sroa.3.0.add.ptr.i.sroa_idx, align 8 + store i64 %u.sroa.13.0614, ptr %ref.tmp87.sroa.0.sroa.3.0.add.ptr.i.sroa_idx, align 8 %second.i.i.i.i435 = getelementptr inbounds i8, ptr %add.ptr.i, i64 16 store i8 0, ptr %second.i.i.i.i435, align 8 br i1 %tobool.i.i.i.i.i198, label %invoke.cont.i.i.i.i.i.i.i, label %invoke.cont.i438 invoke.cont.i.i.i.i.i.i.i: ; preds = %_ZNSt12_Vector_baseISt4pairIN3ue212graph_detail17vertex_descriptorINS1_9ue2_graphINS1_8NGHolderENS1_19NFAGraphVertexPropsENS1_17NFAGraphEdgePropsEEEEES0_IN5boost8optionalINS2_15edge_descriptorIS8_EEEES0_INSA_9iterators15filter_iteratorINSA_6detail18out_edge_predicateINS1_15bad_edge_filterINS1_8flat_setISD_St4lessISD_ESaISD_EEEEENSA_8keep_allENSA_14filtered_graphIKS5_SP_SQ_EEEENS8_17out_edge_iteratorEEESW_EEESaISZ_EE11_M_allocateEm.exit.i %m_storage.i2.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %add.ptr.i, i64 24 - store ptr %ei.sroa.0.0600, ptr %m_storage.i2.i.i.i.i.i.i.i, align 8 + store ptr %ei.sroa.0.0601, ptr %m_storage.i2.i.i.i.i.i.i.i, align 8 %ref.tmp87.sroa.11.sroa.3.0.m_storage.i2.i.i.i.i.i.i.i.sroa_idx = getelementptr inbounds i8, ptr %add.ptr.i, i64 32 store i64 %32, ptr %ref.tmp87.sroa.11.sroa.3.0.m_storage.i2.i.i.i.i.i.i.i.sroa_idx, align 8 store i8 1, ptr %second.i.i.i.i435, align 8 @@ -10310,23 +10312,23 @@ invoke.cont.i438: ; preds = %invoke.cont.i.i.i.i %second.i.i.i.i.i439 = getelementptr inbounds i8, ptr %add.ptr.i, i64 40 store ptr %ei.sroa.0.2, ptr %second.i.i.i.i.i439, align 8 %m_predicate.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %add.ptr.i, i64 48 - store ptr %ei.sroa.21.0599, ptr %m_predicate.i.i.i.i.i.i.i, align 8 + store ptr %ei.sroa.21.0600, ptr %m_predicate.i.i.i.i.i.i.i, align 8 %ref.tmp87.sroa.17.sroa.3.0.m_predicate.i.i.i.i.i.i.i.sroa_idx = getelementptr inbounds i8, ptr %add.ptr.i, i64 56 - store i64 %ei.sroa.29.8.copyload543, ptr %ref.tmp87.sroa.17.sroa.3.0.m_predicate.i.i.i.i.i.i.i.sroa_idx, align 8 + store i64 %ei.sroa.29.0597, ptr %ref.tmp87.sroa.17.sroa.3.0.m_predicate.i.i.i.i.i.i.i.sroa_idx, align 8 %ref.tmp87.sroa.17.sroa.4.0.m_predicate.i.i.i.i.i.i.i.sroa_idx = getelementptr inbounds i8, ptr %add.ptr.i, i64 64 - store ptr %ei.sroa.32.0597, ptr %ref.tmp87.sroa.17.sroa.4.0.m_predicate.i.i.i.i.i.i.i.sroa_idx, align 8 + store ptr %ei.sroa.32.0598, ptr %ref.tmp87.sroa.17.sroa.4.0.m_predicate.i.i.i.i.i.i.i.sroa_idx, align 8 %m_end.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %add.ptr.i, i64 72 - store ptr %ei.sroa.35.0598, ptr %m_end.i.i.i.i.i.i.i, align 8 + store ptr %ei.sroa.35.0599, ptr %m_end.i.i.i.i.i.i.i, align 8 %second.i.i.i.i.i.i441 = getelementptr inbounds i8, ptr %add.ptr.i, i64 80 store ptr %ei_end.sroa.0.0596, ptr %second.i.i.i.i.i.i441, align 8 %m_predicate.i2.i.i.i.i.i.i = getelementptr inbounds i8, ptr %add.ptr.i, i64 88 - store ptr %ei_end.sroa.10.0601, ptr %m_predicate.i2.i.i.i.i.i.i, align 8 + store ptr %ei_end.sroa.10.0602, ptr %m_predicate.i2.i.i.i.i.i.i, align 8 %ref.tmp87.sroa.26.sroa.3.0.m_predicate.i2.i.i.i.i.i.i.sroa_idx = getelementptr inbounds i8, ptr %add.ptr.i, i64 96 - store i64 %ei_end.sroa.18.8.copyload515, ptr %ref.tmp87.sroa.26.sroa.3.0.m_predicate.i2.i.i.i.i.i.i.sroa_idx, align 8 + store i64 %ei_end.sroa.18.0605, ptr %ref.tmp87.sroa.26.sroa.3.0.m_predicate.i2.i.i.i.i.i.i.sroa_idx, align 8 %ref.tmp87.sroa.26.sroa.4.0.m_predicate.i2.i.i.i.i.i.i.sroa_idx = getelementptr inbounds i8, ptr %add.ptr.i, i64 104 - store ptr %ei_end.sroa.20.0603, ptr %ref.tmp87.sroa.26.sroa.4.0.m_predicate.i2.i.i.i.i.i.i.sroa_idx, align 8 + store ptr %ei_end.sroa.20.0604, ptr %ref.tmp87.sroa.26.sroa.4.0.m_predicate.i2.i.i.i.i.i.i.sroa_idx, align 8 %m_end.i4.i.i.i.i.i.i = getelementptr inbounds i8, ptr %add.ptr.i, i64 112 - store ptr %ei_end.sroa.22.0602, ptr %m_end.i4.i.i.i.i.i.i, align 8 + store ptr %ei_end.sroa.22.0603, ptr %m_end.i4.i.i.i.i.i.i, align 8 %cmp.not8.i.i.i.i.i.i = icmp eq ptr %57, %54 br i1 %cmp.not8.i.i.i.i.i.i, label %invoke.cont14.i.thread, label %for.body.i.i.i.i.i.i @@ -10530,13 +10532,13 @@ lpad96.loopexit.split-lp: ; preds = %if.then.i.i452 br label %ehcleanup148 invoke.cont137: ; preds = %invoke.cont73 - %86 = load ptr, ptr %ei.sroa.0.0600, align 8 - %cmp.i.i.i.i.not2.i.i.i.i367 = icmp eq ptr %86, %ei.sroa.35.0598 + %86 = load ptr, ptr %ei.sroa.0.0601, align 8 + %cmp.i.i.i.i.not2.i.i.i.i367 = icmp eq ptr %86, %ei.sroa.35.0599 br i1 %cmp.i.i.i.i.not2.i.i.i.i367, label %if.end140, label %land.rhs.lr.ph.i.i.i.i368 land.rhs.lr.ph.i.i.i.i368: ; preds = %invoke.cont137 - %m_size.i.i.i.i.i.i.i.i.i.i370 = getelementptr inbounds i8, ptr %ei.sroa.21.0599, i64 8 - %87 = load ptr, ptr %ei.sroa.21.0599, align 8, !noalias !60 + %m_size.i.i.i.i.i.i.i.i.i.i370 = getelementptr inbounds i8, ptr %ei.sroa.21.0600, i64 8 + %87 = load ptr, ptr %ei.sroa.21.0600, align 8, !noalias !60 %88 = load i64, ptr %m_size.i.i.i.i.i.i.i.i.i.i370, align 8, !noalias !60 %add.ptr.i.i.i.i.i.i.i.i.i.i373 = getelementptr inbounds %"class.ue2::graph_detail::edge_descriptor", ptr %87, i64 %88 %cmp8.i.i.i.i.i.i.i.i.i.i374 = icmp sgt i64 %88, 0 @@ -10599,21 +10601,23 @@ _ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS while.body.i.i.i.i384: ; preds = %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i.i382, %if.then.i.i4.i.i.i.i.i.i.i.i386 %96 = load ptr, ptr %ei.sroa.0.3, align 8 - %cmp.i.i.i.i.not.i.i.i.i385 = icmp eq ptr %96, %ei.sroa.35.0598 + %cmp.i.i.i.i.not.i.i.i.i385 = icmp eq ptr %96, %ei.sroa.35.0599 br i1 %cmp.i.i.i.i.not.i.i.i.i385, label %if.end140, label %land.rhs.i.i.i.i371, !llvm.loop !623 if.end140: ; preds = %while.body.i.i.i.i384, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i.i382, %if.then.i.i4.i.i.i.i.i.i.i.i386, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i.i375, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i296, %if.then.i.i4.i.i.i.i.i.i.i315, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i303, %while.body.i.i.i305, %invoke.cont105, %invoke.cont137 %ei_end.sroa.0.1 = phi ptr [ %ei_end.sroa.0.0596, %invoke.cont137 ], [ %m_header.i.i.i.i.i287, %invoke.cont105 ], [ %m_header.i.i.i.i.i287, %while.body.i.i.i305 ], [ %m_header.i.i.i.i.i287, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i303 ], [ %m_header.i.i.i.i.i287, %if.then.i.i4.i.i.i.i.i.i.i315 ], [ %m_header.i.i.i.i.i287, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i296 ], [ %ei_end.sroa.0.0596, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i.i375 ], [ %ei_end.sroa.0.0596, %if.then.i.i4.i.i.i.i.i.i.i.i386 ], [ %ei_end.sroa.0.0596, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i.i382 ], [ %ei_end.sroa.0.0596, %while.body.i.i.i.i384 ] - %ei.sroa.32.1 = phi ptr [ %ei.sroa.32.0597, %invoke.cont137 ], [ %g, %invoke.cont105 ], [ %g, %while.body.i.i.i305 ], [ %g, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i303 ], [ %g, %if.then.i.i4.i.i.i.i.i.i.i315 ], [ %g, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i296 ], [ %ei.sroa.32.0597, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i.i375 ], [ %ei.sroa.32.0597, %if.then.i.i4.i.i.i.i.i.i.i.i386 ], [ %ei.sroa.32.0597, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i.i382 ], [ %ei.sroa.32.0597, %while.body.i.i.i.i384 ] - %ei.sroa.35.1 = phi ptr [ %ei.sroa.35.0598, %invoke.cont137 ], [ %m_header.i.i.i.i.i287, %invoke.cont105 ], [ %m_header.i.i.i.i.i287, %while.body.i.i.i305 ], [ %m_header.i.i.i.i.i287, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i303 ], [ %m_header.i.i.i.i.i287, %if.then.i.i4.i.i.i.i.i.i.i315 ], [ %m_header.i.i.i.i.i287, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i296 ], [ %ei.sroa.35.0598, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i.i375 ], [ %ei.sroa.35.0598, %if.then.i.i4.i.i.i.i.i.i.i.i386 ], [ %ei.sroa.35.0598, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i.i382 ], [ %ei.sroa.35.0598, %while.body.i.i.i.i384 ] - %ei.sroa.21.1 = phi ptr [ %ei.sroa.21.0599, %invoke.cont137 ], [ %agg.tmp.sroa.0.0.copyload.i286, %invoke.cont105 ], [ %agg.tmp.sroa.0.0.copyload.i286, %while.body.i.i.i305 ], [ %agg.tmp.sroa.0.0.copyload.i286, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i303 ], [ %agg.tmp.sroa.0.0.copyload.i286, %if.then.i.i4.i.i.i.i.i.i.i315 ], [ %agg.tmp.sroa.0.0.copyload.i286, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i296 ], [ %ei.sroa.21.0599, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i.i375 ], [ %ei.sroa.21.0599, %if.then.i.i4.i.i.i.i.i.i.i.i386 ], [ %ei.sroa.21.0599, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i.i382 ], [ %ei.sroa.21.0599, %while.body.i.i.i.i384 ] + %ei.sroa.29.1 = phi i64 [ %ei.sroa.29.0597, %invoke.cont137 ], [ undef, %invoke.cont105 ], [ undef, %while.body.i.i.i305 ], [ undef, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i303 ], [ undef, %if.then.i.i4.i.i.i.i.i.i.i315 ], [ undef, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i296 ], [ %ei.sroa.29.0597, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i.i375 ], [ %ei.sroa.29.0597, %if.then.i.i4.i.i.i.i.i.i.i.i386 ], [ %ei.sroa.29.0597, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i.i382 ], [ %ei.sroa.29.0597, %while.body.i.i.i.i384 ] + %ei.sroa.32.1 = phi ptr [ %ei.sroa.32.0598, %invoke.cont137 ], [ %g, %invoke.cont105 ], [ %g, %while.body.i.i.i305 ], [ %g, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i303 ], [ %g, %if.then.i.i4.i.i.i.i.i.i.i315 ], [ %g, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i296 ], [ %ei.sroa.32.0598, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i.i375 ], [ %ei.sroa.32.0598, %if.then.i.i4.i.i.i.i.i.i.i.i386 ], [ %ei.sroa.32.0598, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i.i382 ], [ %ei.sroa.32.0598, %while.body.i.i.i.i384 ] + %ei.sroa.35.1 = phi ptr [ %ei.sroa.35.0599, %invoke.cont137 ], [ %m_header.i.i.i.i.i287, %invoke.cont105 ], [ %m_header.i.i.i.i.i287, %while.body.i.i.i305 ], [ %m_header.i.i.i.i.i287, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i303 ], [ %m_header.i.i.i.i.i287, %if.then.i.i4.i.i.i.i.i.i.i315 ], [ %m_header.i.i.i.i.i287, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i296 ], [ %ei.sroa.35.0599, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i.i375 ], [ %ei.sroa.35.0599, %if.then.i.i4.i.i.i.i.i.i.i.i386 ], [ %ei.sroa.35.0599, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i.i382 ], [ %ei.sroa.35.0599, %while.body.i.i.i.i384 ] + %ei.sroa.21.1 = phi ptr [ %ei.sroa.21.0600, %invoke.cont137 ], [ %agg.tmp.sroa.0.0.copyload.i286, %invoke.cont105 ], [ %agg.tmp.sroa.0.0.copyload.i286, %while.body.i.i.i305 ], [ %agg.tmp.sroa.0.0.copyload.i286, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i303 ], [ %agg.tmp.sroa.0.0.copyload.i286, %if.then.i.i4.i.i.i.i.i.i.i315 ], [ %agg.tmp.sroa.0.0.copyload.i286, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i296 ], [ %ei.sroa.21.0600, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i.i375 ], [ %ei.sroa.21.0600, %if.then.i.i4.i.i.i.i.i.i.i.i386 ], [ %ei.sroa.21.0600, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i.i382 ], [ %ei.sroa.21.0600, %while.body.i.i.i.i384 ] %ei.sroa.0.5 = phi ptr [ %86, %invoke.cont137 ], [ %75, %invoke.cont105 ], [ %ref.tmp4.sroa.0.0.i294, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i296 ], [ %ref.tmp4.sroa.0.0.i294, %if.then.i.i4.i.i.i.i.i.i.i315 ], [ %ref.tmp4.sroa.0.0.i294, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i303 ], [ %85, %while.body.i.i.i305 ], [ %96, %while.body.i.i.i.i384 ], [ %ei.sroa.0.3, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i.i382 ], [ %ei.sroa.0.3, %if.then.i.i4.i.i.i.i.i.i.i.i386 ], [ %ei.sroa.0.3, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i.i375 ] - %ei_end.sroa.10.1 = phi ptr [ %ei_end.sroa.10.0601, %invoke.cont137 ], [ %agg.tmp.sroa.0.0.copyload.i286, %invoke.cont105 ], [ %agg.tmp.sroa.0.0.copyload.i286, %while.body.i.i.i305 ], [ %agg.tmp.sroa.0.0.copyload.i286, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i303 ], [ %agg.tmp.sroa.0.0.copyload.i286, %if.then.i.i4.i.i.i.i.i.i.i315 ], [ %agg.tmp.sroa.0.0.copyload.i286, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i296 ], [ %ei_end.sroa.10.0601, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i.i375 ], [ %ei_end.sroa.10.0601, %if.then.i.i4.i.i.i.i.i.i.i.i386 ], [ %ei_end.sroa.10.0601, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i.i382 ], [ %ei_end.sroa.10.0601, %while.body.i.i.i.i384 ] - %ei_end.sroa.22.1 = phi ptr [ %ei_end.sroa.22.0602, %invoke.cont137 ], [ %m_header.i.i.i.i.i287, %invoke.cont105 ], [ %m_header.i.i.i.i.i287, %while.body.i.i.i305 ], [ %m_header.i.i.i.i.i287, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i303 ], [ %m_header.i.i.i.i.i287, %if.then.i.i4.i.i.i.i.i.i.i315 ], [ %m_header.i.i.i.i.i287, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i296 ], [ %ei_end.sroa.22.0602, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i.i375 ], [ %ei_end.sroa.22.0602, %if.then.i.i4.i.i.i.i.i.i.i.i386 ], [ %ei_end.sroa.22.0602, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i.i382 ], [ %ei_end.sroa.22.0602, %while.body.i.i.i.i384 ] - %ei_end.sroa.20.1 = phi ptr [ %ei_end.sroa.20.0603, %invoke.cont137 ], [ %g, %invoke.cont105 ], [ %g, %while.body.i.i.i305 ], [ %g, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i303 ], [ %g, %if.then.i.i4.i.i.i.i.i.i.i315 ], [ %g, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i296 ], [ %ei_end.sroa.20.0603, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i.i375 ], [ %ei_end.sroa.20.0603, %if.then.i.i4.i.i.i.i.i.i.i.i386 ], [ %ei_end.sroa.20.0603, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i.i382 ], [ %ei_end.sroa.20.0603, %while.body.i.i.i.i384 ] - %src_e.sroa.0.4 = phi i8 [ %src_e.sroa.0.2604, %invoke.cont137 ], [ %spec.select, %invoke.cont105 ], [ %spec.select, %while.body.i.i.i305 ], [ %spec.select, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i303 ], [ %spec.select, %if.then.i.i4.i.i.i.i.i.i.i315 ], [ %spec.select, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i296 ], [ %src_e.sroa.0.2604, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i.i375 ], [ %src_e.sroa.0.2604, %if.then.i.i4.i.i.i.i.i.i.i.i386 ], [ %src_e.sroa.0.2604, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i.i382 ], [ %src_e.sroa.0.2604, %while.body.i.i.i.i384 ] - %u.sroa.0.1 = phi ptr [ %u.sroa.0.0611, %invoke.cont137 ], [ %33, %invoke.cont105 ], [ %33, %while.body.i.i.i305 ], [ %33, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i303 ], [ %33, %if.then.i.i4.i.i.i.i.i.i.i315 ], [ %33, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i296 ], [ %u.sroa.0.0611, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i.i375 ], [ %u.sroa.0.0611, %if.then.i.i4.i.i.i.i.i.i.i.i386 ], [ %u.sroa.0.0611, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i.i382 ], [ %u.sroa.0.0611, %while.body.i.i.i.i384 ] - %u.sroa.13.1 = phi i64 [ %u.sroa.13.0612, %invoke.cont137 ], [ %34, %invoke.cont105 ], [ %34, %while.body.i.i.i305 ], [ %34, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i303 ], [ %34, %if.then.i.i4.i.i.i.i.i.i.i315 ], [ %34, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i296 ], [ %u.sroa.13.0612, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i.i375 ], [ %u.sroa.13.0612, %if.then.i.i4.i.i.i.i.i.i.i.i386 ], [ %u.sroa.13.0612, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i.i382 ], [ %u.sroa.13.0612, %while.body.i.i.i.i384 ] + %ei_end.sroa.10.1 = phi ptr [ %ei_end.sroa.10.0602, %invoke.cont137 ], [ %agg.tmp.sroa.0.0.copyload.i286, %invoke.cont105 ], [ %agg.tmp.sroa.0.0.copyload.i286, %while.body.i.i.i305 ], [ %agg.tmp.sroa.0.0.copyload.i286, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i303 ], [ %agg.tmp.sroa.0.0.copyload.i286, %if.then.i.i4.i.i.i.i.i.i.i315 ], [ %agg.tmp.sroa.0.0.copyload.i286, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i296 ], [ %ei_end.sroa.10.0602, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i.i375 ], [ %ei_end.sroa.10.0602, %if.then.i.i4.i.i.i.i.i.i.i.i386 ], [ %ei_end.sroa.10.0602, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i.i382 ], [ %ei_end.sroa.10.0602, %while.body.i.i.i.i384 ] + %ei_end.sroa.22.1 = phi ptr [ %ei_end.sroa.22.0603, %invoke.cont137 ], [ %m_header.i.i.i.i.i287, %invoke.cont105 ], [ %m_header.i.i.i.i.i287, %while.body.i.i.i305 ], [ %m_header.i.i.i.i.i287, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i303 ], [ %m_header.i.i.i.i.i287, %if.then.i.i4.i.i.i.i.i.i.i315 ], [ %m_header.i.i.i.i.i287, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i296 ], [ %ei_end.sroa.22.0603, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i.i375 ], [ %ei_end.sroa.22.0603, %if.then.i.i4.i.i.i.i.i.i.i.i386 ], [ %ei_end.sroa.22.0603, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i.i382 ], [ %ei_end.sroa.22.0603, %while.body.i.i.i.i384 ] + %ei_end.sroa.20.1 = phi ptr [ %ei_end.sroa.20.0604, %invoke.cont137 ], [ %g, %invoke.cont105 ], [ %g, %while.body.i.i.i305 ], [ %g, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i303 ], [ %g, %if.then.i.i4.i.i.i.i.i.i.i315 ], [ %g, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i296 ], [ %ei_end.sroa.20.0604, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i.i375 ], [ %ei_end.sroa.20.0604, %if.then.i.i4.i.i.i.i.i.i.i.i386 ], [ %ei_end.sroa.20.0604, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i.i382 ], [ %ei_end.sroa.20.0604, %while.body.i.i.i.i384 ] + %ei_end.sroa.18.1 = phi i64 [ %ei_end.sroa.18.0605, %invoke.cont137 ], [ undef, %invoke.cont105 ], [ undef, %while.body.i.i.i305 ], [ undef, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i303 ], [ undef, %if.then.i.i4.i.i.i.i.i.i.i315 ], [ undef, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i296 ], [ %ei_end.sroa.18.0605, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i.i375 ], [ %ei_end.sroa.18.0605, %if.then.i.i4.i.i.i.i.i.i.i.i386 ], [ %ei_end.sroa.18.0605, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i.i382 ], [ %ei_end.sroa.18.0605, %while.body.i.i.i.i384 ] + %src_e.sroa.0.4 = phi i8 [ %src_e.sroa.0.2606, %invoke.cont137 ], [ %spec.select, %invoke.cont105 ], [ %spec.select, %while.body.i.i.i305 ], [ %spec.select, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i303 ], [ %spec.select, %if.then.i.i4.i.i.i.i.i.i.i315 ], [ %spec.select, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i296 ], [ %src_e.sroa.0.2606, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i.i375 ], [ %src_e.sroa.0.2606, %if.then.i.i4.i.i.i.i.i.i.i.i386 ], [ %src_e.sroa.0.2606, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i.i382 ], [ %src_e.sroa.0.2606, %while.body.i.i.i.i384 ] + %u.sroa.0.1 = phi ptr [ %u.sroa.0.0613, %invoke.cont137 ], [ %33, %invoke.cont105 ], [ %33, %while.body.i.i.i305 ], [ %33, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i303 ], [ %33, %if.then.i.i4.i.i.i.i.i.i.i315 ], [ %33, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i296 ], [ %u.sroa.0.0613, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i.i375 ], [ %u.sroa.0.0613, %if.then.i.i4.i.i.i.i.i.i.i.i386 ], [ %u.sroa.0.0613, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i.i382 ], [ %u.sroa.0.0613, %while.body.i.i.i.i384 ] + %u.sroa.13.1 = phi i64 [ %u.sroa.13.0614, %invoke.cont137 ], [ %34, %invoke.cont105 ], [ %34, %while.body.i.i.i305 ], [ %34, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i303 ], [ %34, %if.then.i.i4.i.i.i.i.i.i.i315 ], [ %34, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i296 ], [ %u.sroa.13.0614, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPN3ue212graph_detail15edge_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEELb1EEESB_St4lessISB_EET_SG_SG_RKT0_T1_.exit.i.i.i.i.i.i.i.i375 ], [ %u.sroa.13.0614, %if.then.i.i4.i.i.i.i.i.i.i.i386 ], [ %u.sroa.13.0614, %_ZNKSt4lessIN3ue212graph_detail15edge_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEEEclERKS8_SB_.exit.i.i.i.i.i.i.i.i382 ], [ %u.sroa.13.0614, %while.body.i.i.i.i384 ] %cmp.i.i.i.i.i.i.i.not = icmp eq ptr %ei.sroa.0.5, %ei_end.sroa.0.1 br i1 %cmp.i.i.i.i.i.i.i.not, label %invoke.cont144, label %invoke.cont73, !llvm.loop !663 diff --git a/bench/hyperscan/optimized/ng_region.cpp.ll b/bench/hyperscan/optimized/ng_region.cpp.ll index 8164586a9e5..e8ca9d1f3eb 100644 --- a/bench/hyperscan/optimized/ng_region.cpp.ll +++ b/bench/hyperscan/optimized/ng_region.cpp.ll @@ -6362,8 +6362,8 @@ if.then.i.i.i.i.i137: ; preds = %lpad36 if.end: ; preds = %if.then.i.i.i.i.i127, %invoke.cont37 %22 = load ptr, ptr %stack, align 8 %23 = load ptr, ptr %_M_finish.i.i98, align 8 - %cmp.i.i675 = icmp eq ptr %22, %23 - br i1 %cmp.i.i675, label %invoke.cont.i424, label %while.body.lr.ph + %cmp.i.i677 = icmp eq ptr %22, %23 + br i1 %cmp.i.i677, label %invoke.cont.i424, label %while.body.lr.ph while.body.lr.ph: ; preds = %if.end %m_iter.i = getelementptr inbounds i8, ptr %vis, i64 8 @@ -6371,18 +6371,18 @@ while.body.lr.ph: ; preds = %if.end while.body: ; preds = %while.body.lr.ph, %_ZN5boost17topo_sort_visitorISt20back_insert_iteratorISt6vectorIN3ue212graph_detail17vertex_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEESaISB_EEEE13finish_vertexISB_KNS_14filtered_graphIS7_NS3_15bad_edge_filterISt13unordered_setINS4_15edge_descriptorISA_EESt4hashISL_ESt8equal_toISL_ESaISL_EEEENS_8keep_allEEEEEvRKT_RT0_.exit %24 = phi ptr [ %23, %while.body.lr.ph ], [ %118, %_ZN5boost17topo_sort_visitorISt20back_insert_iteratorISt6vectorIN3ue212graph_detail17vertex_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEESaISB_EEEE13finish_vertexISB_KNS_14filtered_graphIS7_NS3_15bad_edge_filterISt13unordered_setINS4_15edge_descriptorISA_EESt4hashISL_ESt8equal_toISL_ESaISL_EEEENS_8keep_allEEEEEvRKT_RT0_.exit ] - %src_e.sroa.0.0676 = phi i8 [ 0, %while.body.lr.ph ], [ %src_e.sroa.0.2.lcssa, %_ZN5boost17topo_sort_visitorISt20back_insert_iteratorISt6vectorIN3ue212graph_detail17vertex_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEESaISB_EEEE13finish_vertexISB_KNS_14filtered_graphIS7_NS3_15bad_edge_filterISt13unordered_setINS4_15edge_descriptorISA_EESt4hashISL_ESt8equal_toISL_ESaISL_EEEENS_8keep_allEEEEEvRKT_RT0_.exit ] + %src_e.sroa.0.0678 = phi i8 [ 0, %while.body.lr.ph ], [ %src_e.sroa.0.2.lcssa, %_ZN5boost17topo_sort_visitorISt20back_insert_iteratorISt6vectorIN3ue212graph_detail17vertex_descriptorINS3_9ue2_graphINS3_8NGHolderENS3_19NFAGraphVertexPropsENS3_17NFAGraphEdgePropsEEEEESaISB_EEEE13finish_vertexISB_KNS_14filtered_graphIS7_NS3_15bad_edge_filterISt13unordered_setINS4_15edge_descriptorISA_EESt4hashISL_ESt8equal_toISL_ESaISL_EEEENS_8keep_allEEEEEvRKT_RT0_.exit ] %add.ptr.i.i = getelementptr inbounds i8, ptr %24, i64 -120 %u.sroa.0.0.copyload = load ptr, ptr %add.ptr.i.i, align 8 %u.sroa.14.0.add.ptr.i.i.sroa_idx = getelementptr inbounds i8, ptr %24, i64 -112 %u.sroa.14.0.copyload = load i64, ptr %u.sroa.14.0.add.ptr.i.i.sroa_idx, align 8 %second = getelementptr inbounds i8, ptr %24, i64 -104 - %tobool.i.i.i.i147 = trunc nuw i8 %src_e.sroa.0.0676 to i1 + %tobool.i.i.i.i147 = trunc nuw i8 %src_e.sroa.0.0678 to i1 %25 = load i8, ptr %second, align 8 %tobool.i4.i.i.i = trunc i8 %25 to i1 - %spec.select736 = select i1 %tobool.i4.i.i.i, i8 %src_e.sroa.0.0676, i8 0 - %spec.select737 = select i1 %tobool.i4.i.i.i, i8 1, i8 %src_e.sroa.0.0676 - %src_e.sroa.0.1 = select i1 %tobool.i.i.i.i147, i8 %spec.select736, i8 %spec.select737 + %spec.select738 = select i1 %tobool.i4.i.i.i, i8 %src_e.sroa.0.0678, i8 0 + %spec.select739 = select i1 %tobool.i4.i.i.i, i8 1, i8 %src_e.sroa.0.0678 + %src_e.sroa.0.1 = select i1 %tobool.i.i.i.i147, i8 %spec.select738, i8 %spec.select739 %second47 = getelementptr inbounds i8, ptr %24, i64 -80 %26 = load ptr, ptr %second47, align 8 %m_predicate2.i.i152 = getelementptr inbounds i8, ptr %24, i64 -72 @@ -6417,20 +6417,22 @@ if.end58: ; preds = %if.then.i.i.i.i.i.i br i1 %cmp.i.i.i.i.i.i.i.not647, label %invoke.cont143, label %invoke.cont73 invoke.cont73: ; preds = %if.end58, %if.end139 - %u.sroa.14.0666 = phi i64 [ %u.sroa.14.1, %if.end139 ], [ %u.sroa.14.0.copyload, %if.end58 ] - %u.sroa.0.0665 = phi ptr [ %u.sroa.0.1, %if.end139 ], [ %u.sroa.0.0.copyload, %if.end58 ] - %src_e.sroa.0.2658 = phi i8 [ %src_e.sroa.0.4, %if.end139 ], [ %src_e.sroa.0.1, %if.end58 ] - %ei_end.sroa.20.0657 = phi ptr [ %ei_end.sroa.20.1, %if.end139 ], [ %ei_end.sroa.20.8.copyload534, %if.end58 ] - %ei_end.sroa.22.0656 = phi ptr [ %ei_end.sroa.22.1, %if.end139 ], [ %29, %if.end58 ] - %ei_end.sroa.10.0655 = phi ptr [ %ei_end.sroa.10.1, %if.end139 ], [ %ei_end.sroa.10.8.copyload524, %if.end58 ] - %ei.sroa.0.0654 = phi ptr [ %ei.sroa.0.5, %if.end139 ], [ %26, %if.end58 ] - %ei.sroa.21.0652 = phi ptr [ %ei.sroa.21.1, %if.end139 ], [ %ei.sroa.21.8.copyload555, %if.end58 ] - %ei.sroa.35.0650 = phi ptr [ %ei.sroa.35.1, %if.end139 ], [ %27, %if.end58 ] - %ei.sroa.32.0649 = phi ptr [ %ei.sroa.32.1, %if.end139 ], [ %ei.sroa.32.8.copyload559, %if.end58 ] + %u.sroa.14.0668 = phi i64 [ %u.sroa.14.1, %if.end139 ], [ %u.sroa.14.0.copyload, %if.end58 ] + %u.sroa.0.0667 = phi ptr [ %u.sroa.0.1, %if.end139 ], [ %u.sroa.0.0.copyload, %if.end58 ] + %src_e.sroa.0.2660 = phi i8 [ %src_e.sroa.0.4, %if.end139 ], [ %src_e.sroa.0.1, %if.end58 ] + %ei_end.sroa.18.0659 = phi i64 [ %ei_end.sroa.18.1, %if.end139 ], [ %ei_end.sroa.18.8.copyload529, %if.end58 ] + %ei_end.sroa.20.0658 = phi ptr [ %ei_end.sroa.20.1, %if.end139 ], [ %ei_end.sroa.20.8.copyload534, %if.end58 ] + %ei_end.sroa.22.0657 = phi ptr [ %ei_end.sroa.22.1, %if.end139 ], [ %29, %if.end58 ] + %ei_end.sroa.10.0656 = phi ptr [ %ei_end.sroa.10.1, %if.end139 ], [ %ei_end.sroa.10.8.copyload524, %if.end58 ] + %ei.sroa.0.0655 = phi ptr [ %ei.sroa.0.5, %if.end139 ], [ %26, %if.end58 ] + %ei.sroa.21.0653 = phi ptr [ %ei.sroa.21.1, %if.end139 ], [ %ei.sroa.21.8.copyload555, %if.end58 ] + %ei.sroa.35.0651 = phi ptr [ %ei.sroa.35.1, %if.end139 ], [ %27, %if.end58 ] + %ei.sroa.32.0650 = phi ptr [ %ei.sroa.32.1, %if.end139 ], [ %ei.sroa.32.8.copyload559, %if.end58 ] + %ei.sroa.29.0649 = phi i64 [ %ei.sroa.29.1, %if.end139 ], [ %ei.sroa.29.8.copyload557, %if.end58 ] %ei_end.sroa.0.0648 = phi ptr [ %ei_end.sroa.0.1, %if.end139 ], [ %28, %if.end58 ] - %serial2.i.i.i.i.i.i.i162 = getelementptr inbounds i8, ptr %ei.sroa.0.0654, i64 48 + %serial2.i.i.i.i.i.i.i162 = getelementptr inbounds i8, ptr %ei.sroa.0.0655, i64 48 %31 = load i64, ptr %serial2.i.i.i.i.i.i.i162, align 8 - %target.i.i.i = getelementptr inbounds i8, ptr %ei.sroa.0.0654, i64 40 + %target.i.i.i = getelementptr inbounds i8, ptr %ei.sroa.0.0655, i64 40 %32 = load ptr, ptr %target.i.i.i, align 8 %serial2.i.i.i.i = getelementptr inbounds i8, ptr %32, i64 96 %33 = load i64, ptr %serial2.i.i.i.i, align 8 @@ -6454,15 +6456,15 @@ invoke.cont73: ; preds = %if.end58, %if.end13 ] invoke.cont82: ; preds = %invoke.cont73 - %tobool.i.i.i180 = trunc nuw i8 %src_e.sroa.0.2658 to i1 - %spec.select = select i1 %tobool.i.i.i180, i8 %src_e.sroa.0.2658, i8 1 - %40 = load ptr, ptr %ei.sroa.0.0654, align 8 - %cmp.i.i.i.i.not5.i.i.i.i = icmp eq ptr %40, %ei.sroa.35.0650 + %tobool.i.i.i180 = trunc nuw i8 %src_e.sroa.0.2660 to i1 + %spec.select = select i1 %tobool.i.i.i180, i8 %src_e.sroa.0.2660, i8 1 + %40 = load ptr, ptr %ei.sroa.0.0655, align 8 + %cmp.i.i.i.i.not5.i.i.i.i = icmp eq ptr %40, %ei.sroa.35.0651 br i1 %cmp.i.i.i.i.not5.i.i.i.i, label %invoke.cont91, label %land.rhs.lr.ph.i.i.i.i land.rhs.lr.ph.i.i.i.i: ; preds = %invoke.cont82 - %_M_element_count.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %ei.sroa.21.0652, i64 24 - %_M_before_begin.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %ei.sroa.21.0652, i64 16 + %_M_element_count.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %ei.sroa.21.0653, i64 24 + %_M_before_begin.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %ei.sroa.21.0653, i64 16 %41 = load i64, ptr %_M_element_count.i.i.i.i.i.i.i.i.i.i, align 8 %cmp.not.not.i.i.i.i.i.i.i.i.i = icmp eq i64 %41, 0 br i1 %cmp.not.not.i.i.i.i.i.i.i.i.i, label %land.rhs.i.i.i.i.us, label %land.rhs.lr.ph.i.i.i.i.split @@ -6485,13 +6487,13 @@ for.body.i.i.i.i.i.i.i.i.i.us: ; preds = %for.cond.i.i.i.i.i. while.body.i.i.i.i.loopexit.us: ; preds = %for.body.i.i.i.i.i.i.i.i.i.us %42 = load ptr, ptr %ei.sroa.0.1.us, align 8 - %cmp.i.i.i.i.not.i.i.i.i.us = icmp eq ptr %42, %ei.sroa.35.0650 + %cmp.i.i.i.i.not.i.i.i.i.us = icmp eq ptr %42, %ei.sroa.35.0651 br i1 %cmp.i.i.i.i.not.i.i.i.i.us, label %invoke.cont91, label %land.rhs.i.i.i.i.us, !llvm.loop !57 land.rhs.lr.ph.i.i.i.i.split: ; preds = %land.rhs.lr.ph.i.i.i.i - %_M_bucket_count.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %ei.sroa.21.0652, i64 8 + %_M_bucket_count.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %ei.sroa.21.0653, i64 8 %43 = load i64, ptr %_M_bucket_count.i.i.i.i.i.i.i.i.i.i, align 8 - %44 = load ptr, ptr %ei.sroa.21.0652, align 8 + %44 = load ptr, ptr %ei.sroa.21.0653, align 8 br label %land.rhs.i.i.i.i land.rhs.i.i.i.i: ; preds = %while.body.i.i.i.i, %land.rhs.lr.ph.i.i.i.i.split @@ -6538,7 +6540,7 @@ lor.lhs.false.i.i.i.i.i.i.i.i.i.i.i: ; preds = %if.end3.i.i.i.i.i.i while.body.i.i.i.i: ; preds = %for.cond.i.i.i.i.i.i.i.i.i.i.i, %if.end.i.i.i.i.i.i.i.i.i.i.i %53 = load ptr, ptr %ei.sroa.0.1, align 8 - %cmp.i.i.i.i.not.i.i.i.i = icmp eq ptr %53, %ei.sroa.35.0650 + %cmp.i.i.i.i.not.i.i.i.i = icmp eq ptr %53, %ei.sroa.35.0651 br i1 %cmp.i.i.i.i.not.i.i.i.i, label %invoke.cont91, label %land.rhs.i.i.i.i, !llvm.loop !57 invoke.cont91: ; preds = %while.body.i.i.i.i, %land.rhs.i.i.i.i, %while.body.i.i.i.i.loopexit.us, %if.end3.i.i.i.i.i.i.i.i.i.i.i, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i.i, %for.cond.i.i.i.i.i.i.i.i.i.us, %invoke.cont82 @@ -6550,16 +6552,16 @@ invoke.cont91: ; preds = %while.body.i.i.i.i, br i1 %cmp.not.i.i230, label %if.else.i.i252, label %if.then.i.i231 if.then.i.i231: ; preds = %invoke.cont91 - store ptr %u.sroa.0.0665, ptr %54, align 8 + store ptr %u.sroa.0.0667, ptr %54, align 8 %ref.tmp86.sroa.0.sroa.3.0..sroa_idx = getelementptr inbounds i8, ptr %54, i64 8 - store i64 %u.sroa.14.0666, ptr %ref.tmp86.sroa.0.sroa.3.0..sroa_idx, align 8 + store i64 %u.sroa.14.0668, ptr %ref.tmp86.sroa.0.sroa.3.0..sroa_idx, align 8 %second.i.i.i.i.i232 = getelementptr inbounds i8, ptr %54, i64 16 store i8 0, ptr %second.i.i.i.i.i232, align 8 br i1 %tobool.i.i.i.i.i195, label %invoke.cont.i.i.i.i.i.i.i.i249, label %_ZNSt16allocator_traitsISaISt4pairIN3ue212graph_detail17vertex_descriptorINS1_9ue2_graphINS1_8NGHolderENS1_19NFAGraphVertexPropsENS1_17NFAGraphEdgePropsEEEEES0_IN5boost8optionalINS2_15edge_descriptorIS8_EEEES0_INSA_9iterators15filter_iteratorINSA_6detail18out_edge_predicateINS1_15bad_edge_filterISt13unordered_setISD_St4hashISD_ESt8equal_toISD_ESaISD_EEEENSA_8keep_allENSA_14filtered_graphIS5_SR_SS_EEEENS8_17out_edge_iteratorEEESX_EEEEE9constructIS10_JS10_EEEvRS11_PT_DpOT0_.exit.i.i235 invoke.cont.i.i.i.i.i.i.i.i249: ; preds = %if.then.i.i231 %m_storage.i2.i.i.i.i.i.i.i.i251 = getelementptr inbounds i8, ptr %54, i64 24 - store ptr %ei.sroa.0.0654, ptr %m_storage.i2.i.i.i.i.i.i.i.i251, align 8 + store ptr %ei.sroa.0.0655, ptr %m_storage.i2.i.i.i.i.i.i.i.i251, align 8 %ref.tmp86.sroa.11.sroa.3.0.m_storage.i2.i.i.i.i.i.i.i.i251.sroa_idx = getelementptr inbounds i8, ptr %54, i64 32 store i64 %31, ptr %ref.tmp86.sroa.11.sroa.3.0.m_storage.i2.i.i.i.i.i.i.i.i251.sroa_idx, align 8 store i8 1, ptr %second.i.i.i.i.i232, align 8 @@ -6569,23 +6571,23 @@ _ZNSt16allocator_traitsISaISt4pairIN3ue212graph_detail17vertex_descriptorINS1_9u %second.i.i.i.i.i.i236 = getelementptr inbounds i8, ptr %54, i64 40 store ptr %ei.sroa.0.2, ptr %second.i.i.i.i.i.i236, align 8 %m_predicate.i.i.i.i.i.i.i.i238 = getelementptr inbounds i8, ptr %54, i64 48 - store ptr %ei.sroa.21.0652, ptr %m_predicate.i.i.i.i.i.i.i.i238, align 8 + store ptr %ei.sroa.21.0653, ptr %m_predicate.i.i.i.i.i.i.i.i238, align 8 %ref.tmp86.sroa.17.sroa.3.0.m_predicate.i.i.i.i.i.i.i.i238.sroa_idx = getelementptr inbounds i8, ptr %54, i64 56 - store i64 %ei.sroa.29.8.copyload557, ptr %ref.tmp86.sroa.17.sroa.3.0.m_predicate.i.i.i.i.i.i.i.i238.sroa_idx, align 8 + store i64 %ei.sroa.29.0649, ptr %ref.tmp86.sroa.17.sroa.3.0.m_predicate.i.i.i.i.i.i.i.i238.sroa_idx, align 8 %ref.tmp86.sroa.17.sroa.4.0.m_predicate.i.i.i.i.i.i.i.i238.sroa_idx = getelementptr inbounds i8, ptr %54, i64 64 - store ptr %ei.sroa.32.0649, ptr %ref.tmp86.sroa.17.sroa.4.0.m_predicate.i.i.i.i.i.i.i.i238.sroa_idx, align 8 + store ptr %ei.sroa.32.0650, ptr %ref.tmp86.sroa.17.sroa.4.0.m_predicate.i.i.i.i.i.i.i.i238.sroa_idx, align 8 %m_end.i.i.i.i.i.i.i.i240 = getelementptr inbounds i8, ptr %54, i64 72 - store ptr %ei.sroa.35.0650, ptr %m_end.i.i.i.i.i.i.i.i240, align 8 + store ptr %ei.sroa.35.0651, ptr %m_end.i.i.i.i.i.i.i.i240, align 8 %second.i.i.i.i.i.i.i242 = getelementptr inbounds i8, ptr %54, i64 80 store ptr %ei_end.sroa.0.0648, ptr %second.i.i.i.i.i.i.i242, align 8 %m_predicate.i2.i.i.i.i.i.i.i244 = getelementptr inbounds i8, ptr %54, i64 88 - store ptr %ei_end.sroa.10.0655, ptr %m_predicate.i2.i.i.i.i.i.i.i244, align 8 + store ptr %ei_end.sroa.10.0656, ptr %m_predicate.i2.i.i.i.i.i.i.i244, align 8 %ref.tmp86.sroa.26.sroa.3.0.m_predicate.i2.i.i.i.i.i.i.i244.sroa_idx = getelementptr inbounds i8, ptr %54, i64 96 - store i64 %ei_end.sroa.18.8.copyload529, ptr %ref.tmp86.sroa.26.sroa.3.0.m_predicate.i2.i.i.i.i.i.i.i244.sroa_idx, align 8 + store i64 %ei_end.sroa.18.0659, ptr %ref.tmp86.sroa.26.sroa.3.0.m_predicate.i2.i.i.i.i.i.i.i244.sroa_idx, align 8 %ref.tmp86.sroa.26.sroa.4.0.m_predicate.i2.i.i.i.i.i.i.i244.sroa_idx = getelementptr inbounds i8, ptr %54, i64 104 - store ptr %ei_end.sroa.20.0657, ptr %ref.tmp86.sroa.26.sroa.4.0.m_predicate.i2.i.i.i.i.i.i.i244.sroa_idx, align 8 + store ptr %ei_end.sroa.20.0658, ptr %ref.tmp86.sroa.26.sroa.4.0.m_predicate.i2.i.i.i.i.i.i.i244.sroa_idx, align 8 %m_end.i4.i.i.i.i.i.i.i246 = getelementptr inbounds i8, ptr %54, i64 112 - store ptr %ei_end.sroa.22.0656, ptr %m_end.i4.i.i.i.i.i.i.i246, align 8 + store ptr %ei_end.sroa.22.0657, ptr %m_end.i4.i.i.i.i.i.i.i246, align 8 %56 = load ptr, ptr %_M_finish.i.i98, align 8 %incdec.ptr.i.i248 = getelementptr inbounds i8, ptr %56, i64 120 store ptr %incdec.ptr.i.i248, ptr %_M_finish.i.i98, align 8 @@ -6624,16 +6626,16 @@ cond.true.i.i: ; preds = %_ZNKSt6vectorISt4pa _ZNSt12_Vector_baseISt4pairIN3ue212graph_detail17vertex_descriptorINS1_9ue2_graphINS1_8NGHolderENS1_19NFAGraphVertexPropsENS1_17NFAGraphEdgePropsEEEEES0_IN5boost8optionalINS2_15edge_descriptorIS8_EEEES0_INSA_9iterators15filter_iteratorINSA_6detail18out_edge_predicateINS1_15bad_edge_filterISt13unordered_setISD_St4hashISD_ESt8equal_toISD_ESaISD_EEEENSA_8keep_allENSA_14filtered_graphIS5_SR_SS_EEEENS8_17out_edge_iteratorEEESX_EEESaIS10_EE11_M_allocateEm.exit.i: ; preds = %cond.true.i.i, %_ZNKSt6vectorISt4pairIN3ue212graph_detail17vertex_descriptorINS1_9ue2_graphINS1_8NGHolderENS1_19NFAGraphVertexPropsENS1_17NFAGraphEdgePropsEEEEES0_IN5boost8optionalINS2_15edge_descriptorIS8_EEEES0_INSA_9iterators15filter_iteratorINSA_6detail18out_edge_predicateINS1_15bad_edge_filterISt13unordered_setISD_St4hashISD_ESt8equal_toISD_ESaISD_EEEENSA_8keep_allENSA_14filtered_graphIS5_SR_SS_EEEENS8_17out_edge_iteratorEEESX_EEESaIS10_EE12_M_check_lenEmPKc.exit.i %cond.i19.i = phi ptr [ null, %_ZNKSt6vectorISt4pairIN3ue212graph_detail17vertex_descriptorINS1_9ue2_graphINS1_8NGHolderENS1_19NFAGraphVertexPropsENS1_17NFAGraphEdgePropsEEEEES0_IN5boost8optionalINS2_15edge_descriptorIS8_EEEES0_INSA_9iterators15filter_iteratorINSA_6detail18out_edge_predicateINS1_15bad_edge_filterISt13unordered_setISD_St4hashISD_ESt8equal_toISD_ESaISD_EEEENSA_8keep_allENSA_14filtered_graphIS5_SR_SS_EEEENS8_17out_edge_iteratorEEESX_EEESaIS10_EE12_M_check_lenEmPKc.exit.i ], [ %call5.i.i.i.i454, %cond.true.i.i ] %add.ptr.i = getelementptr inbounds %"struct.std::pair.91", ptr %cond.i19.i, i64 %sub.ptr.div.i.i.i - store ptr %u.sroa.0.0665, ptr %add.ptr.i, align 8 + store ptr %u.sroa.0.0667, ptr %add.ptr.i, align 8 %ref.tmp86.sroa.0.sroa.3.0.add.ptr.i.sroa_idx = getelementptr inbounds i8, ptr %add.ptr.i, i64 8 - store i64 %u.sroa.14.0666, ptr %ref.tmp86.sroa.0.sroa.3.0.add.ptr.i.sroa_idx, align 8 + store i64 %u.sroa.14.0668, ptr %ref.tmp86.sroa.0.sroa.3.0.add.ptr.i.sroa_idx, align 8 %second.i.i.i.i435 = getelementptr inbounds i8, ptr %add.ptr.i, i64 16 store i8 0, ptr %second.i.i.i.i435, align 8 br i1 %tobool.i.i.i.i.i195, label %invoke.cont.i.i.i.i.i.i.i, label %invoke.cont.i438 invoke.cont.i.i.i.i.i.i.i: ; preds = %_ZNSt12_Vector_baseISt4pairIN3ue212graph_detail17vertex_descriptorINS1_9ue2_graphINS1_8NGHolderENS1_19NFAGraphVertexPropsENS1_17NFAGraphEdgePropsEEEEES0_IN5boost8optionalINS2_15edge_descriptorIS8_EEEES0_INSA_9iterators15filter_iteratorINSA_6detail18out_edge_predicateINS1_15bad_edge_filterISt13unordered_setISD_St4hashISD_ESt8equal_toISD_ESaISD_EEEENSA_8keep_allENSA_14filtered_graphIS5_SR_SS_EEEENS8_17out_edge_iteratorEEESX_EEESaIS10_EE11_M_allocateEm.exit.i %m_storage.i2.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %add.ptr.i, i64 24 - store ptr %ei.sroa.0.0654, ptr %m_storage.i2.i.i.i.i.i.i.i, align 8 + store ptr %ei.sroa.0.0655, ptr %m_storage.i2.i.i.i.i.i.i.i, align 8 %ref.tmp86.sroa.11.sroa.3.0.m_storage.i2.i.i.i.i.i.i.i.sroa_idx = getelementptr inbounds i8, ptr %add.ptr.i, i64 32 store i64 %31, ptr %ref.tmp86.sroa.11.sroa.3.0.m_storage.i2.i.i.i.i.i.i.i.sroa_idx, align 8 store i8 1, ptr %second.i.i.i.i435, align 8 @@ -6643,23 +6645,23 @@ invoke.cont.i438: ; preds = %invoke.cont.i.i.i.i %second.i.i.i.i.i439 = getelementptr inbounds i8, ptr %add.ptr.i, i64 40 store ptr %ei.sroa.0.2, ptr %second.i.i.i.i.i439, align 8 %m_predicate.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %add.ptr.i, i64 48 - store ptr %ei.sroa.21.0652, ptr %m_predicate.i.i.i.i.i.i.i, align 8 + store ptr %ei.sroa.21.0653, ptr %m_predicate.i.i.i.i.i.i.i, align 8 %ref.tmp86.sroa.17.sroa.3.0.m_predicate.i.i.i.i.i.i.i.sroa_idx = getelementptr inbounds i8, ptr %add.ptr.i, i64 56 - store i64 %ei.sroa.29.8.copyload557, ptr %ref.tmp86.sroa.17.sroa.3.0.m_predicate.i.i.i.i.i.i.i.sroa_idx, align 8 + store i64 %ei.sroa.29.0649, ptr %ref.tmp86.sroa.17.sroa.3.0.m_predicate.i.i.i.i.i.i.i.sroa_idx, align 8 %ref.tmp86.sroa.17.sroa.4.0.m_predicate.i.i.i.i.i.i.i.sroa_idx = getelementptr inbounds i8, ptr %add.ptr.i, i64 64 - store ptr %ei.sroa.32.0649, ptr %ref.tmp86.sroa.17.sroa.4.0.m_predicate.i.i.i.i.i.i.i.sroa_idx, align 8 + store ptr %ei.sroa.32.0650, ptr %ref.tmp86.sroa.17.sroa.4.0.m_predicate.i.i.i.i.i.i.i.sroa_idx, align 8 %m_end.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %add.ptr.i, i64 72 - store ptr %ei.sroa.35.0650, ptr %m_end.i.i.i.i.i.i.i, align 8 + store ptr %ei.sroa.35.0651, ptr %m_end.i.i.i.i.i.i.i, align 8 %second.i.i.i.i.i.i441 = getelementptr inbounds i8, ptr %add.ptr.i, i64 80 store ptr %ei_end.sroa.0.0648, ptr %second.i.i.i.i.i.i441, align 8 %m_predicate.i2.i.i.i.i.i.i = getelementptr inbounds i8, ptr %add.ptr.i, i64 88 - store ptr %ei_end.sroa.10.0655, ptr %m_predicate.i2.i.i.i.i.i.i, align 8 + store ptr %ei_end.sroa.10.0656, ptr %m_predicate.i2.i.i.i.i.i.i, align 8 %ref.tmp86.sroa.26.sroa.3.0.m_predicate.i2.i.i.i.i.i.i.sroa_idx = getelementptr inbounds i8, ptr %add.ptr.i, i64 96 - store i64 %ei_end.sroa.18.8.copyload529, ptr %ref.tmp86.sroa.26.sroa.3.0.m_predicate.i2.i.i.i.i.i.i.sroa_idx, align 8 + store i64 %ei_end.sroa.18.0659, ptr %ref.tmp86.sroa.26.sroa.3.0.m_predicate.i2.i.i.i.i.i.i.sroa_idx, align 8 %ref.tmp86.sroa.26.sroa.4.0.m_predicate.i2.i.i.i.i.i.i.sroa_idx = getelementptr inbounds i8, ptr %add.ptr.i, i64 104 - store ptr %ei_end.sroa.20.0657, ptr %ref.tmp86.sroa.26.sroa.4.0.m_predicate.i2.i.i.i.i.i.i.sroa_idx, align 8 + store ptr %ei_end.sroa.20.0658, ptr %ref.tmp86.sroa.26.sroa.4.0.m_predicate.i2.i.i.i.i.i.i.sroa_idx, align 8 %m_end.i4.i.i.i.i.i.i = getelementptr inbounds i8, ptr %add.ptr.i, i64 112 - store ptr %ei_end.sroa.22.0656, ptr %m_end.i4.i.i.i.i.i.i, align 8 + store ptr %ei_end.sroa.22.0657, ptr %m_end.i4.i.i.i.i.i.i, align 8 %cmp.not8.i.i.i.i.i.i = icmp eq ptr %57, %54 br i1 %cmp.not8.i.i.i.i.i.i, label %invoke.cont14.i.thread, label %for.body.i.i.i.i.i.i @@ -6970,13 +6972,13 @@ lpad.i: ; preds = %.noexc354 br label %ehcleanup146 invoke.cont136: ; preds = %invoke.cont73 - %92 = load ptr, ptr %ei.sroa.0.0654, align 8 - %cmp.i.i.i.i.not5.i.i.i.i362 = icmp eq ptr %92, %ei.sroa.35.0650 + %92 = load ptr, ptr %ei.sroa.0.0655, align 8 + %cmp.i.i.i.i.not5.i.i.i.i362 = icmp eq ptr %92, %ei.sroa.35.0651 br i1 %cmp.i.i.i.i.not5.i.i.i.i362, label %if.end139, label %land.rhs.lr.ph.i.i.i.i363 land.rhs.lr.ph.i.i.i.i363: ; preds = %invoke.cont136 - %_M_element_count.i.i.i.i.i.i.i.i.i.i365 = getelementptr inbounds i8, ptr %ei.sroa.21.0652, i64 24 - %_M_before_begin.i.i.i.i.i.i.i.i.i.i.i367 = getelementptr inbounds i8, ptr %ei.sroa.21.0652, i64 16 + %_M_element_count.i.i.i.i.i.i.i.i.i.i365 = getelementptr inbounds i8, ptr %ei.sroa.21.0653, i64 24 + %_M_before_begin.i.i.i.i.i.i.i.i.i.i.i367 = getelementptr inbounds i8, ptr %ei.sroa.21.0653, i64 16 %93 = load i64, ptr %_M_element_count.i.i.i.i.i.i.i.i.i.i365, align 8 %cmp.not.not.i.i.i.i.i.i.i.i.i370 = icmp eq i64 %93, 0 br i1 %cmp.not.not.i.i.i.i.i.i.i.i.i370, label %land.rhs.i.i.i.i368.us, label %land.rhs.lr.ph.i.i.i.i363.split @@ -6999,13 +7001,13 @@ for.body.i.i.i.i.i.i.i.i.i399.us: ; preds = %for.cond.i.i.i.i.i. while.body.i.i.i.i393.loopexit.us: ; preds = %for.body.i.i.i.i.i.i.i.i.i399.us %94 = load ptr, ptr %ei.sroa.0.3.us, align 8 - %cmp.i.i.i.i.not.i.i.i.i394.us = icmp eq ptr %94, %ei.sroa.35.0650 + %cmp.i.i.i.i.not.i.i.i.i394.us = icmp eq ptr %94, %ei.sroa.35.0651 br i1 %cmp.i.i.i.i.not.i.i.i.i394.us, label %if.end139, label %land.rhs.i.i.i.i368.us, !llvm.loop !57 land.rhs.lr.ph.i.i.i.i363.split: ; preds = %land.rhs.lr.ph.i.i.i.i363 - %_M_bucket_count.i.i.i.i.i.i.i.i.i.i366 = getelementptr inbounds i8, ptr %ei.sroa.21.0652, i64 8 + %_M_bucket_count.i.i.i.i.i.i.i.i.i.i366 = getelementptr inbounds i8, ptr %ei.sroa.21.0653, i64 8 %95 = load i64, ptr %_M_bucket_count.i.i.i.i.i.i.i.i.i.i366, align 8 - %96 = load ptr, ptr %ei.sroa.21.0652, align 8 + %96 = load ptr, ptr %ei.sroa.21.0653, align 8 br label %land.rhs.i.i.i.i368 land.rhs.i.i.i.i368: ; preds = %while.body.i.i.i.i393, %land.rhs.lr.ph.i.i.i.i363.split @@ -7052,21 +7054,23 @@ lor.lhs.false.i.i.i.i.i.i.i.i.i.i.i384: ; preds = %if.end3.i.i.i.i.i.i while.body.i.i.i.i393: ; preds = %for.cond.i.i.i.i.i.i.i.i.i.i.i388, %if.end.i.i.i.i.i.i.i.i.i.i.i375 %105 = load ptr, ptr %ei.sroa.0.3, align 8 - %cmp.i.i.i.i.not.i.i.i.i394 = icmp eq ptr %105, %ei.sroa.35.0650 + %cmp.i.i.i.i.not.i.i.i.i394 = icmp eq ptr %105, %ei.sroa.35.0651 br i1 %cmp.i.i.i.i.not.i.i.i.i394, label %if.end139, label %land.rhs.i.i.i.i368, !llvm.loop !57 if.end139: ; preds = %land.rhs.i.i.i285, %while.body.i.i.i317, %while.body.i.i.loopexit.us.i329, %land.rhs.i.i.i.i368, %while.body.i.i.i.i393, %while.body.i.i.i.i393.loopexit.us, %if.end3.i.i.i.i.i.i.i.i.i.i297, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i300, %for.cond.i.i.i.i.i.i.i.us.i321, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i.i384, %if.end3.i.i.i.i.i.i.i.i.i.i.i381, %for.cond.i.i.i.i.i.i.i.i.i395.us, %invoke.cont104, %invoke.cont136 %ei_end.sroa.0.1 = phi ptr [ %ei_end.sroa.0.0648, %invoke.cont136 ], [ %m_header.i.i.i.i.i277, %invoke.cont104 ], [ %ei_end.sroa.0.0648, %for.cond.i.i.i.i.i.i.i.i.i395.us ], [ %ei_end.sroa.0.0648, %if.end3.i.i.i.i.i.i.i.i.i.i.i381 ], [ %ei_end.sroa.0.0648, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i.i384 ], [ %m_header.i.i.i.i.i277, %for.cond.i.i.i.i.i.i.i.us.i321 ], [ %m_header.i.i.i.i.i277, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i300 ], [ %m_header.i.i.i.i.i277, %if.end3.i.i.i.i.i.i.i.i.i.i297 ], [ %ei_end.sroa.0.0648, %while.body.i.i.i.i393.loopexit.us ], [ %ei_end.sroa.0.0648, %while.body.i.i.i.i393 ], [ %ei_end.sroa.0.0648, %land.rhs.i.i.i.i368 ], [ %m_header.i.i.i.i.i277, %while.body.i.i.loopexit.us.i329 ], [ %m_header.i.i.i.i.i277, %while.body.i.i.i317 ], [ %m_header.i.i.i.i.i277, %land.rhs.i.i.i285 ] - %ei.sroa.32.1 = phi ptr [ %ei.sroa.32.0649, %invoke.cont136 ], [ %g, %invoke.cont104 ], [ %ei.sroa.32.0649, %for.cond.i.i.i.i.i.i.i.i.i395.us ], [ %ei.sroa.32.0649, %if.end3.i.i.i.i.i.i.i.i.i.i.i381 ], [ %ei.sroa.32.0649, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i.i384 ], [ %g, %for.cond.i.i.i.i.i.i.i.us.i321 ], [ %g, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i300 ], [ %g, %if.end3.i.i.i.i.i.i.i.i.i.i297 ], [ %ei.sroa.32.0649, %while.body.i.i.i.i393.loopexit.us ], [ %ei.sroa.32.0649, %while.body.i.i.i.i393 ], [ %ei.sroa.32.0649, %land.rhs.i.i.i.i368 ], [ %g, %while.body.i.i.loopexit.us.i329 ], [ %g, %while.body.i.i.i317 ], [ %g, %land.rhs.i.i.i285 ] - %ei.sroa.35.1 = phi ptr [ %ei.sroa.35.0650, %invoke.cont136 ], [ %m_header.i.i.i.i.i277, %invoke.cont104 ], [ %ei.sroa.35.0650, %for.cond.i.i.i.i.i.i.i.i.i395.us ], [ %ei.sroa.35.0650, %if.end3.i.i.i.i.i.i.i.i.i.i.i381 ], [ %ei.sroa.35.0650, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i.i384 ], [ %m_header.i.i.i.i.i277, %for.cond.i.i.i.i.i.i.i.us.i321 ], [ %m_header.i.i.i.i.i277, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i300 ], [ %m_header.i.i.i.i.i277, %if.end3.i.i.i.i.i.i.i.i.i.i297 ], [ %ei.sroa.35.0650, %while.body.i.i.i.i393.loopexit.us ], [ %ei.sroa.35.0650, %while.body.i.i.i.i393 ], [ %ei.sroa.35.0650, %land.rhs.i.i.i.i368 ], [ %m_header.i.i.i.i.i277, %while.body.i.i.loopexit.us.i329 ], [ %m_header.i.i.i.i.i277, %while.body.i.i.i317 ], [ %m_header.i.i.i.i.i277, %land.rhs.i.i.i285 ] - %ei.sroa.21.1 = phi ptr [ %ei.sroa.21.0652, %invoke.cont136 ], [ %agg.tmp.sroa.0.0.copyload.i276, %invoke.cont104 ], [ %ei.sroa.21.0652, %for.cond.i.i.i.i.i.i.i.i.i395.us ], [ %ei.sroa.21.0652, %if.end3.i.i.i.i.i.i.i.i.i.i.i381 ], [ %ei.sroa.21.0652, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i.i384 ], [ %agg.tmp.sroa.0.0.copyload.i276, %for.cond.i.i.i.i.i.i.i.us.i321 ], [ %agg.tmp.sroa.0.0.copyload.i276, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i300 ], [ %agg.tmp.sroa.0.0.copyload.i276, %if.end3.i.i.i.i.i.i.i.i.i.i297 ], [ %ei.sroa.21.0652, %while.body.i.i.i.i393.loopexit.us ], [ %ei.sroa.21.0652, %while.body.i.i.i.i393 ], [ %ei.sroa.21.0652, %land.rhs.i.i.i.i368 ], [ %agg.tmp.sroa.0.0.copyload.i276, %while.body.i.i.loopexit.us.i329 ], [ %agg.tmp.sroa.0.0.copyload.i276, %while.body.i.i.i317 ], [ %agg.tmp.sroa.0.0.copyload.i276, %land.rhs.i.i.i285 ] + %ei.sroa.29.1 = phi i64 [ %ei.sroa.29.0649, %invoke.cont136 ], [ undef, %invoke.cont104 ], [ %ei.sroa.29.0649, %for.cond.i.i.i.i.i.i.i.i.i395.us ], [ %ei.sroa.29.0649, %if.end3.i.i.i.i.i.i.i.i.i.i.i381 ], [ %ei.sroa.29.0649, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i.i384 ], [ undef, %for.cond.i.i.i.i.i.i.i.us.i321 ], [ undef, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i300 ], [ undef, %if.end3.i.i.i.i.i.i.i.i.i.i297 ], [ %ei.sroa.29.0649, %while.body.i.i.i.i393.loopexit.us ], [ %ei.sroa.29.0649, %while.body.i.i.i.i393 ], [ %ei.sroa.29.0649, %land.rhs.i.i.i.i368 ], [ undef, %while.body.i.i.loopexit.us.i329 ], [ undef, %while.body.i.i.i317 ], [ undef, %land.rhs.i.i.i285 ] + %ei.sroa.32.1 = phi ptr [ %ei.sroa.32.0650, %invoke.cont136 ], [ %g, %invoke.cont104 ], [ %ei.sroa.32.0650, %for.cond.i.i.i.i.i.i.i.i.i395.us ], [ %ei.sroa.32.0650, %if.end3.i.i.i.i.i.i.i.i.i.i.i381 ], [ %ei.sroa.32.0650, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i.i384 ], [ %g, %for.cond.i.i.i.i.i.i.i.us.i321 ], [ %g, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i300 ], [ %g, %if.end3.i.i.i.i.i.i.i.i.i.i297 ], [ %ei.sroa.32.0650, %while.body.i.i.i.i393.loopexit.us ], [ %ei.sroa.32.0650, %while.body.i.i.i.i393 ], [ %ei.sroa.32.0650, %land.rhs.i.i.i.i368 ], [ %g, %while.body.i.i.loopexit.us.i329 ], [ %g, %while.body.i.i.i317 ], [ %g, %land.rhs.i.i.i285 ] + %ei.sroa.35.1 = phi ptr [ %ei.sroa.35.0651, %invoke.cont136 ], [ %m_header.i.i.i.i.i277, %invoke.cont104 ], [ %ei.sroa.35.0651, %for.cond.i.i.i.i.i.i.i.i.i395.us ], [ %ei.sroa.35.0651, %if.end3.i.i.i.i.i.i.i.i.i.i.i381 ], [ %ei.sroa.35.0651, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i.i384 ], [ %m_header.i.i.i.i.i277, %for.cond.i.i.i.i.i.i.i.us.i321 ], [ %m_header.i.i.i.i.i277, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i300 ], [ %m_header.i.i.i.i.i277, %if.end3.i.i.i.i.i.i.i.i.i.i297 ], [ %ei.sroa.35.0651, %while.body.i.i.i.i393.loopexit.us ], [ %ei.sroa.35.0651, %while.body.i.i.i.i393 ], [ %ei.sroa.35.0651, %land.rhs.i.i.i.i368 ], [ %m_header.i.i.i.i.i277, %while.body.i.i.loopexit.us.i329 ], [ %m_header.i.i.i.i.i277, %while.body.i.i.i317 ], [ %m_header.i.i.i.i.i277, %land.rhs.i.i.i285 ] + %ei.sroa.21.1 = phi ptr [ %ei.sroa.21.0653, %invoke.cont136 ], [ %agg.tmp.sroa.0.0.copyload.i276, %invoke.cont104 ], [ %ei.sroa.21.0653, %for.cond.i.i.i.i.i.i.i.i.i395.us ], [ %ei.sroa.21.0653, %if.end3.i.i.i.i.i.i.i.i.i.i.i381 ], [ %ei.sroa.21.0653, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i.i384 ], [ %agg.tmp.sroa.0.0.copyload.i276, %for.cond.i.i.i.i.i.i.i.us.i321 ], [ %agg.tmp.sroa.0.0.copyload.i276, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i300 ], [ %agg.tmp.sroa.0.0.copyload.i276, %if.end3.i.i.i.i.i.i.i.i.i.i297 ], [ %ei.sroa.21.0653, %while.body.i.i.i.i393.loopexit.us ], [ %ei.sroa.21.0653, %while.body.i.i.i.i393 ], [ %ei.sroa.21.0653, %land.rhs.i.i.i.i368 ], [ %agg.tmp.sroa.0.0.copyload.i276, %while.body.i.i.loopexit.us.i329 ], [ %agg.tmp.sroa.0.0.copyload.i276, %while.body.i.i.i317 ], [ %agg.tmp.sroa.0.0.copyload.i276, %land.rhs.i.i.i285 ] %ei.sroa.0.5 = phi ptr [ %92, %invoke.cont136 ], [ %71, %invoke.cont104 ], [ %ei.sroa.0.3.us, %for.cond.i.i.i.i.i.i.i.i.i395.us ], [ %ei.sroa.0.3, %if.end3.i.i.i.i.i.i.i.i.i.i.i381 ], [ %ei.sroa.0.3, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i.i384 ], [ %ref.tmp4.sroa.0.0.us.i320, %for.cond.i.i.i.i.i.i.i.us.i321 ], [ %ref.tmp4.sroa.0.0.i286, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i300 ], [ %ref.tmp4.sroa.0.0.i286, %if.end3.i.i.i.i.i.i.i.i.i.i297 ], [ %94, %while.body.i.i.i.i393.loopexit.us ], [ %ei.sroa.0.3, %land.rhs.i.i.i.i368 ], [ %105, %while.body.i.i.i.i393 ], [ %73, %while.body.i.i.loopexit.us.i329 ], [ %ref.tmp4.sroa.0.0.i286, %land.rhs.i.i.i285 ], [ %84, %while.body.i.i.i317 ] - %ei_end.sroa.10.1 = phi ptr [ %ei_end.sroa.10.0655, %invoke.cont136 ], [ %agg.tmp.sroa.0.0.copyload.i276, %invoke.cont104 ], [ %ei_end.sroa.10.0655, %for.cond.i.i.i.i.i.i.i.i.i395.us ], [ %ei_end.sroa.10.0655, %if.end3.i.i.i.i.i.i.i.i.i.i.i381 ], [ %ei_end.sroa.10.0655, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i.i384 ], [ %agg.tmp.sroa.0.0.copyload.i276, %for.cond.i.i.i.i.i.i.i.us.i321 ], [ %agg.tmp.sroa.0.0.copyload.i276, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i300 ], [ %agg.tmp.sroa.0.0.copyload.i276, %if.end3.i.i.i.i.i.i.i.i.i.i297 ], [ %ei_end.sroa.10.0655, %while.body.i.i.i.i393.loopexit.us ], [ %ei_end.sroa.10.0655, %while.body.i.i.i.i393 ], [ %ei_end.sroa.10.0655, %land.rhs.i.i.i.i368 ], [ %agg.tmp.sroa.0.0.copyload.i276, %while.body.i.i.loopexit.us.i329 ], [ %agg.tmp.sroa.0.0.copyload.i276, %while.body.i.i.i317 ], [ %agg.tmp.sroa.0.0.copyload.i276, %land.rhs.i.i.i285 ] - %ei_end.sroa.22.1 = phi ptr [ %ei_end.sroa.22.0656, %invoke.cont136 ], [ %m_header.i.i.i.i.i277, %invoke.cont104 ], [ %ei_end.sroa.22.0656, %for.cond.i.i.i.i.i.i.i.i.i395.us ], [ %ei_end.sroa.22.0656, %if.end3.i.i.i.i.i.i.i.i.i.i.i381 ], [ %ei_end.sroa.22.0656, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i.i384 ], [ %m_header.i.i.i.i.i277, %for.cond.i.i.i.i.i.i.i.us.i321 ], [ %m_header.i.i.i.i.i277, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i300 ], [ %m_header.i.i.i.i.i277, %if.end3.i.i.i.i.i.i.i.i.i.i297 ], [ %ei_end.sroa.22.0656, %while.body.i.i.i.i393.loopexit.us ], [ %ei_end.sroa.22.0656, %while.body.i.i.i.i393 ], [ %ei_end.sroa.22.0656, %land.rhs.i.i.i.i368 ], [ %m_header.i.i.i.i.i277, %while.body.i.i.loopexit.us.i329 ], [ %m_header.i.i.i.i.i277, %while.body.i.i.i317 ], [ %m_header.i.i.i.i.i277, %land.rhs.i.i.i285 ] - %ei_end.sroa.20.1 = phi ptr [ %ei_end.sroa.20.0657, %invoke.cont136 ], [ %g, %invoke.cont104 ], [ %ei_end.sroa.20.0657, %for.cond.i.i.i.i.i.i.i.i.i395.us ], [ %ei_end.sroa.20.0657, %if.end3.i.i.i.i.i.i.i.i.i.i.i381 ], [ %ei_end.sroa.20.0657, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i.i384 ], [ %g, %for.cond.i.i.i.i.i.i.i.us.i321 ], [ %g, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i300 ], [ %g, %if.end3.i.i.i.i.i.i.i.i.i.i297 ], [ %ei_end.sroa.20.0657, %while.body.i.i.i.i393.loopexit.us ], [ %ei_end.sroa.20.0657, %while.body.i.i.i.i393 ], [ %ei_end.sroa.20.0657, %land.rhs.i.i.i.i368 ], [ %g, %while.body.i.i.loopexit.us.i329 ], [ %g, %while.body.i.i.i317 ], [ %g, %land.rhs.i.i.i285 ] - %src_e.sroa.0.4 = phi i8 [ %src_e.sroa.0.2658, %invoke.cont136 ], [ %spec.select, %invoke.cont104 ], [ %src_e.sroa.0.2658, %for.cond.i.i.i.i.i.i.i.i.i395.us ], [ %src_e.sroa.0.2658, %if.end3.i.i.i.i.i.i.i.i.i.i.i381 ], [ %src_e.sroa.0.2658, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i.i384 ], [ %spec.select, %for.cond.i.i.i.i.i.i.i.us.i321 ], [ %spec.select, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i300 ], [ %spec.select, %if.end3.i.i.i.i.i.i.i.i.i.i297 ], [ %src_e.sroa.0.2658, %while.body.i.i.i.i393.loopexit.us ], [ %src_e.sroa.0.2658, %while.body.i.i.i.i393 ], [ %src_e.sroa.0.2658, %land.rhs.i.i.i.i368 ], [ %spec.select, %while.body.i.i.loopexit.us.i329 ], [ %spec.select, %while.body.i.i.i317 ], [ %spec.select, %land.rhs.i.i.i285 ] - %u.sroa.0.1 = phi ptr [ %u.sroa.0.0665, %invoke.cont136 ], [ %32, %invoke.cont104 ], [ %u.sroa.0.0665, %for.cond.i.i.i.i.i.i.i.i.i395.us ], [ %u.sroa.0.0665, %if.end3.i.i.i.i.i.i.i.i.i.i.i381 ], [ %u.sroa.0.0665, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i.i384 ], [ %32, %for.cond.i.i.i.i.i.i.i.us.i321 ], [ %32, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i300 ], [ %32, %if.end3.i.i.i.i.i.i.i.i.i.i297 ], [ %u.sroa.0.0665, %while.body.i.i.i.i393.loopexit.us ], [ %u.sroa.0.0665, %while.body.i.i.i.i393 ], [ %u.sroa.0.0665, %land.rhs.i.i.i.i368 ], [ %32, %while.body.i.i.loopexit.us.i329 ], [ %32, %while.body.i.i.i317 ], [ %32, %land.rhs.i.i.i285 ] - %u.sroa.14.1 = phi i64 [ %u.sroa.14.0666, %invoke.cont136 ], [ %33, %invoke.cont104 ], [ %u.sroa.14.0666, %for.cond.i.i.i.i.i.i.i.i.i395.us ], [ %u.sroa.14.0666, %if.end3.i.i.i.i.i.i.i.i.i.i.i381 ], [ %u.sroa.14.0666, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i.i384 ], [ %33, %for.cond.i.i.i.i.i.i.i.us.i321 ], [ %33, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i300 ], [ %33, %if.end3.i.i.i.i.i.i.i.i.i.i297 ], [ %u.sroa.14.0666, %while.body.i.i.i.i393.loopexit.us ], [ %u.sroa.14.0666, %while.body.i.i.i.i393 ], [ %u.sroa.14.0666, %land.rhs.i.i.i.i368 ], [ %33, %while.body.i.i.loopexit.us.i329 ], [ %33, %while.body.i.i.i317 ], [ %33, %land.rhs.i.i.i285 ] + %ei_end.sroa.10.1 = phi ptr [ %ei_end.sroa.10.0656, %invoke.cont136 ], [ %agg.tmp.sroa.0.0.copyload.i276, %invoke.cont104 ], [ %ei_end.sroa.10.0656, %for.cond.i.i.i.i.i.i.i.i.i395.us ], [ %ei_end.sroa.10.0656, %if.end3.i.i.i.i.i.i.i.i.i.i.i381 ], [ %ei_end.sroa.10.0656, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i.i384 ], [ %agg.tmp.sroa.0.0.copyload.i276, %for.cond.i.i.i.i.i.i.i.us.i321 ], [ %agg.tmp.sroa.0.0.copyload.i276, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i300 ], [ %agg.tmp.sroa.0.0.copyload.i276, %if.end3.i.i.i.i.i.i.i.i.i.i297 ], [ %ei_end.sroa.10.0656, %while.body.i.i.i.i393.loopexit.us ], [ %ei_end.sroa.10.0656, %while.body.i.i.i.i393 ], [ %ei_end.sroa.10.0656, %land.rhs.i.i.i.i368 ], [ %agg.tmp.sroa.0.0.copyload.i276, %while.body.i.i.loopexit.us.i329 ], [ %agg.tmp.sroa.0.0.copyload.i276, %while.body.i.i.i317 ], [ %agg.tmp.sroa.0.0.copyload.i276, %land.rhs.i.i.i285 ] + %ei_end.sroa.22.1 = phi ptr [ %ei_end.sroa.22.0657, %invoke.cont136 ], [ %m_header.i.i.i.i.i277, %invoke.cont104 ], [ %ei_end.sroa.22.0657, %for.cond.i.i.i.i.i.i.i.i.i395.us ], [ %ei_end.sroa.22.0657, %if.end3.i.i.i.i.i.i.i.i.i.i.i381 ], [ %ei_end.sroa.22.0657, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i.i384 ], [ %m_header.i.i.i.i.i277, %for.cond.i.i.i.i.i.i.i.us.i321 ], [ %m_header.i.i.i.i.i277, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i300 ], [ %m_header.i.i.i.i.i277, %if.end3.i.i.i.i.i.i.i.i.i.i297 ], [ %ei_end.sroa.22.0657, %while.body.i.i.i.i393.loopexit.us ], [ %ei_end.sroa.22.0657, %while.body.i.i.i.i393 ], [ %ei_end.sroa.22.0657, %land.rhs.i.i.i.i368 ], [ %m_header.i.i.i.i.i277, %while.body.i.i.loopexit.us.i329 ], [ %m_header.i.i.i.i.i277, %while.body.i.i.i317 ], [ %m_header.i.i.i.i.i277, %land.rhs.i.i.i285 ] + %ei_end.sroa.20.1 = phi ptr [ %ei_end.sroa.20.0658, %invoke.cont136 ], [ %g, %invoke.cont104 ], [ %ei_end.sroa.20.0658, %for.cond.i.i.i.i.i.i.i.i.i395.us ], [ %ei_end.sroa.20.0658, %if.end3.i.i.i.i.i.i.i.i.i.i.i381 ], [ %ei_end.sroa.20.0658, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i.i384 ], [ %g, %for.cond.i.i.i.i.i.i.i.us.i321 ], [ %g, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i300 ], [ %g, %if.end3.i.i.i.i.i.i.i.i.i.i297 ], [ %ei_end.sroa.20.0658, %while.body.i.i.i.i393.loopexit.us ], [ %ei_end.sroa.20.0658, %while.body.i.i.i.i393 ], [ %ei_end.sroa.20.0658, %land.rhs.i.i.i.i368 ], [ %g, %while.body.i.i.loopexit.us.i329 ], [ %g, %while.body.i.i.i317 ], [ %g, %land.rhs.i.i.i285 ] + %ei_end.sroa.18.1 = phi i64 [ %ei_end.sroa.18.0659, %invoke.cont136 ], [ undef, %invoke.cont104 ], [ %ei_end.sroa.18.0659, %for.cond.i.i.i.i.i.i.i.i.i395.us ], [ %ei_end.sroa.18.0659, %if.end3.i.i.i.i.i.i.i.i.i.i.i381 ], [ %ei_end.sroa.18.0659, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i.i384 ], [ undef, %for.cond.i.i.i.i.i.i.i.us.i321 ], [ undef, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i300 ], [ undef, %if.end3.i.i.i.i.i.i.i.i.i.i297 ], [ %ei_end.sroa.18.0659, %while.body.i.i.i.i393.loopexit.us ], [ %ei_end.sroa.18.0659, %while.body.i.i.i.i393 ], [ %ei_end.sroa.18.0659, %land.rhs.i.i.i.i368 ], [ undef, %while.body.i.i.loopexit.us.i329 ], [ undef, %while.body.i.i.i317 ], [ undef, %land.rhs.i.i.i285 ] + %src_e.sroa.0.4 = phi i8 [ %src_e.sroa.0.2660, %invoke.cont136 ], [ %spec.select, %invoke.cont104 ], [ %src_e.sroa.0.2660, %for.cond.i.i.i.i.i.i.i.i.i395.us ], [ %src_e.sroa.0.2660, %if.end3.i.i.i.i.i.i.i.i.i.i.i381 ], [ %src_e.sroa.0.2660, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i.i384 ], [ %spec.select, %for.cond.i.i.i.i.i.i.i.us.i321 ], [ %spec.select, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i300 ], [ %spec.select, %if.end3.i.i.i.i.i.i.i.i.i.i297 ], [ %src_e.sroa.0.2660, %while.body.i.i.i.i393.loopexit.us ], [ %src_e.sroa.0.2660, %while.body.i.i.i.i393 ], [ %src_e.sroa.0.2660, %land.rhs.i.i.i.i368 ], [ %spec.select, %while.body.i.i.loopexit.us.i329 ], [ %spec.select, %while.body.i.i.i317 ], [ %spec.select, %land.rhs.i.i.i285 ] + %u.sroa.0.1 = phi ptr [ %u.sroa.0.0667, %invoke.cont136 ], [ %32, %invoke.cont104 ], [ %u.sroa.0.0667, %for.cond.i.i.i.i.i.i.i.i.i395.us ], [ %u.sroa.0.0667, %if.end3.i.i.i.i.i.i.i.i.i.i.i381 ], [ %u.sroa.0.0667, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i.i384 ], [ %32, %for.cond.i.i.i.i.i.i.i.us.i321 ], [ %32, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i300 ], [ %32, %if.end3.i.i.i.i.i.i.i.i.i.i297 ], [ %u.sroa.0.0667, %while.body.i.i.i.i393.loopexit.us ], [ %u.sroa.0.0667, %while.body.i.i.i.i393 ], [ %u.sroa.0.0667, %land.rhs.i.i.i.i368 ], [ %32, %while.body.i.i.loopexit.us.i329 ], [ %32, %while.body.i.i.i317 ], [ %32, %land.rhs.i.i.i285 ] + %u.sroa.14.1 = phi i64 [ %u.sroa.14.0668, %invoke.cont136 ], [ %33, %invoke.cont104 ], [ %u.sroa.14.0668, %for.cond.i.i.i.i.i.i.i.i.i395.us ], [ %u.sroa.14.0668, %if.end3.i.i.i.i.i.i.i.i.i.i.i381 ], [ %u.sroa.14.0668, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i.i384 ], [ %33, %for.cond.i.i.i.i.i.i.i.us.i321 ], [ %33, %lor.lhs.false.i.i.i.i.i.i.i.i.i.i300 ], [ %33, %if.end3.i.i.i.i.i.i.i.i.i.i297 ], [ %u.sroa.14.0668, %while.body.i.i.i.i393.loopexit.us ], [ %u.sroa.14.0668, %while.body.i.i.i.i393 ], [ %u.sroa.14.0668, %land.rhs.i.i.i.i368 ], [ %33, %while.body.i.i.loopexit.us.i329 ], [ %33, %while.body.i.i.i317 ], [ %33, %land.rhs.i.i.i285 ] %cmp.i.i.i.i.i.i.i.not = icmp eq ptr %ei.sroa.0.5, %ei_end.sroa.0.1 br i1 %cmp.i.i.i.i.i.i.i.not, label %invoke.cont143, label %invoke.cont73, !llvm.loop !246 diff --git a/bench/influxdb-rs/optimized/380gcqze52ow6205.ll b/bench/influxdb-rs/optimized/380gcqze52ow6205.ll index c69564c6fbc..b6811c0073b 100644 --- a/bench/influxdb-rs/optimized/380gcqze52ow6205.ll +++ b/bench/influxdb-rs/optimized/380gcqze52ow6205.ll @@ -6456,8 +6456,8 @@ _ZN10serde_json3ser6to_vec17h09d21f6f4761253cE.exit.thread: ; preds = %.noexc109 call void @_ZN4core9panicking16panic_in_cleanup17hd44bb2114362504eE() #23, !noalias !1054 unreachable -.body111: ; preds = %.thread396, %124, %106, %119, %168 - %.pn94 = phi { ptr, i32 } [ %lpad.thr_comm.split-lp, %168 ], [ %107, %106 ], [ %120, %119 ], [ %125, %124 ], [ %lpad.thr_comm, %.thread396 ] +.body111: ; preds = %.thread394, %124, %106, %119, %168 + %.pn94 = phi { ptr, i32 } [ %lpad.thr_comm.split-lp, %168 ], [ %107, %106 ], [ %120, %119 ], [ %125, %124 ], [ %lpad.thr_comm, %.thread394 ] invoke void @"_ZN4core3ptr113drop_in_place$LT$influxdb3_server..http..Error..response..ErrorMessage$LT$influxdb3_write..WriteLineError$GT$$GT$17he16b88b534e3eb8bE"(ptr noalias noundef nonnull align 8 dereferenceable(80) %52) #22 to label %.thread unwind label %169 @@ -6475,11 +6475,11 @@ _ZN10serde_json3ser6to_vec17h09d21f6f4761253cE.exit: ; preds = %108 br i1 %121, label %122, label %129 122: ; preds = %_ZN10serde_json3ser6to_vec17h09d21f6f4761253cE.exit, %_ZN10serde_json3ser6to_vec17h09d21f6f4761253cE.exit.thread - %.sroa.7240.0389 = phi ptr [ %105, %_ZN10serde_json3ser6to_vec17h09d21f6f4761253cE.exit.thread ], [ %.sroa.7240.0.copyload242, %_ZN10serde_json3ser6to_vec17h09d21f6f4761253cE.exit ] - %123 = icmp ne ptr %.sroa.7240.0389, null + %.sroa.7240.0387 = phi ptr [ %105, %_ZN10serde_json3ser6to_vec17h09d21f6f4761253cE.exit.thread ], [ %.sroa.7240.0.copyload242, %_ZN10serde_json3ser6to_vec17h09d21f6f4761253cE.exit ] + %123 = icmp ne ptr %.sroa.7240.0387, null call void @llvm.assume(i1 %123) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21), !noalias !1063 - store ptr %.sroa.7240.0389, ptr %21, align 8, !noalias !1063 + store ptr %.sroa.7240.0387, ptr %21, align 8, !noalias !1063 invoke void @_ZN4core6result13unwrap_failed17hddb4fea594200c52E(ptr noalias noundef nonnull readonly align 1 @anon.7463256388310ca230f95e7a445731de.40, i64 noundef 43, ptr noundef nonnull align 1 %21, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7463256388310ca230f95e7a445731de.41, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7463256388310ca230f95e7a445731de.234) #20 to label %126 unwind label %124, !noalias !1068 @@ -6550,7 +6550,7 @@ _ZN10serde_json3ser6to_vec17h09d21f6f4761253cE.exit: ; preds = %108 invoke void @_ZN4http8response5Parts3new17he4f6ef0c90ee86f4E(ptr noalias nocapture noundef nonnull sret({ { { i64, [2 x i64] }, { ptr, i64 }, { { ptr, i64 }, i64 }, { { ptr, i64 }, i64 }, i16, [3 x i16] }, ptr, i16, i8, {}, [5 x i8] }) align 8 dereferenceable(112) %42) to label %144 unwind label %168 -.thread396: ; preds = %.critedge451, %147 +.thread394: ; preds = %.critedge445, %147 %lpad.thr_comm = landingpad { ptr, i32 } cleanup br label %.body111 @@ -6571,7 +6571,7 @@ _ZN10serde_json3ser6to_vec17h09d21f6f4761253cE.exit: ; preds = %108 call void @llvm.lifetime.start.p0(i64 94, ptr nonnull %.sroa.7254.sroa.0) call void @llvm.lifetime.start.p0(i64 6, ptr nonnull %.sroa.7254.sroa.5) %145 = icmp eq i64 %.sroa.024.0.copyload, 3 - br i1 %145, label %.critedge451, label %146 + br i1 %145, label %.critedge445, label %146 146: ; preds = %144 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(94) %.sroa.7254.sroa.0, ptr noundef nonnull align 2 dereferenceable(94) %.sroa.7.sroa.0, i64 94, i1 false) @@ -6614,7 +6614,7 @@ _ZN10serde_json3ser6to_vec17h09d21f6f4761253cE.exit: ; preds = %108 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h2a6f3122bc871979E.llvm.9135219245553044050"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %19, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %52) to label %.noexc.i119 unwind label %155 -.critedge451: ; preds = %144 +.critedge445: ; preds = %144 call void @llvm.lifetime.end.p0(i64 94, ptr nonnull %.sroa.7.sroa.0) call void @llvm.lifetime.end.p0(i64 6, ptr nonnull %.sroa.7.sroa.5) call void @llvm.lifetime.start.p0(i64 94, ptr nonnull %.sroa.9263) @@ -6626,9 +6626,9 @@ _ZN10serde_json3ser6to_vec17h09d21f6f4761253cE.exit: ; preds = %108 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %41) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %41, ptr noundef nonnull align 8 dereferenceable(48) %51, i64 48, i1 false) invoke void @"_ZN4core3ptr44drop_in_place$LT$hyper..body..body..Body$GT$17h4165c35d612fc315E"(ptr noalias noundef nonnull align 8 dereferenceable(48) %41) - to label %147 unwind label %.thread396 + to label %147 unwind label %.thread394 -147: ; preds = %.critedge451 +147: ; preds = %.critedge445 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %41) call void @llvm.lifetime.end.p0(i64 94, ptr nonnull %.sroa.9263) call void @llvm.lifetime.end.p0(i64 6, ptr nonnull %.sroa.11265) @@ -6637,7 +6637,7 @@ _ZN10serde_json3ser6to_vec17h09d21f6f4761253cE.exit: ; preds = %108 %148 = getelementptr inbounds i8, ptr %20, i64 1 store i8 %.sroa.525.0.copyload, ptr %148, align 1, !noalias !1106 invoke void @_ZN4core6result13unwrap_failed17hddb4fea594200c52E(ptr noalias noundef nonnull readonly align 1 @anon.7463256388310ca230f95e7a445731de.40, i64 noundef 43, ptr noundef nonnull align 1 %20, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7463256388310ca230f95e7a445731de.43, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7463256388310ca230f95e7a445731de.235) #20 - to label %.noexc118 unwind label %.thread396 + to label %.noexc118 unwind label %.thread394 .noexc118: ; preds = %147 unreachable @@ -6708,10 +6708,10 @@ _ZN10serde_json3ser6to_vec17h09d21f6f4761253cE.exit: ; preds = %108 call void @_ZN4core9panicking16panic_in_cleanup17hd44bb2114362504eE() #23 unreachable -.thread: ; preds = %.thread444, %63, %81, %174, %159, %155, %.body111, %93, %372, %323, %322, %.body128, %172 - %.pn98 = phi { ptr, i32 } [ %lpad.thr_comm.split-lp443, %372 ], [ %.pn90, %323 ], [ %.pn90, %322 ], [ %.pn92, %.body128 ], [ %173, %172 ], [ %94, %93 ], [ %.pn94, %.body111 ], [ %156, %155 ], [ %156, %159 ], [ %64, %63 ], [ %175, %174 ], [ %82, %81 ], [ %lpad.thr_comm442, %.thread444 ] - %.180 = phi i1 [ true, %372 ], [ true, %323 ], [ true, %322 ], [ true, %.body128 ], [ false, %172 ], [ false, %93 ], [ false, %.body111 ], [ false, %155 ], [ false, %159 ], [ true, %63 ], [ true, %174 ], [ true, %81 ], [ true, %.thread444 ] - %.1 = phi i1 [ true, %372 ], [ false, %323 ], [ false, %322 ], [ true, %.body128 ], [ true, %172 ], [ true, %93 ], [ true, %.body111 ], [ true, %155 ], [ true, %159 ], [ true, %63 ], [ %.2, %174 ], [ true, %81 ], [ true, %.thread444 ] +.thread: ; preds = %.thread438, %63, %81, %174, %159, %155, %.body111, %93, %372, %323, %322, %.body128, %172 + %.pn98 = phi { ptr, i32 } [ %lpad.thr_comm.split-lp437, %372 ], [ %.pn90, %323 ], [ %.pn90, %322 ], [ %.pn92, %.body128 ], [ %173, %172 ], [ %94, %93 ], [ %.pn94, %.body111 ], [ %156, %155 ], [ %156, %159 ], [ %64, %63 ], [ %175, %174 ], [ %82, %81 ], [ %lpad.thr_comm436, %.thread438 ] + %.180 = phi i1 [ true, %372 ], [ true, %323 ], [ true, %322 ], [ true, %.body128 ], [ false, %172 ], [ false, %93 ], [ false, %.body111 ], [ false, %155 ], [ false, %159 ], [ true, %63 ], [ true, %174 ], [ true, %81 ], [ true, %.thread438 ] + %.1 = phi i1 [ true, %372 ], [ false, %323 ], [ false, %322 ], [ true, %.body128 ], [ true, %172 ], [ true, %93 ], [ true, %.body111 ], [ true, %155 ], [ true, %159 ], [ true, %63 ], [ %.2, %174 ], [ true, %81 ], [ true, %.thread438 ] %171 = load i8, ptr %1, align 8, !range !178, !noundef !4 switch i8 %171, label %373 [ i8 21, label %375 @@ -6794,8 +6794,8 @@ _ZN10serde_json3ser6to_vec17h6ea22bc9979944f4E.exit.thread: ; preds = %.noexc126 call void @_ZN4core9panicking16panic_in_cleanup17hd44bb2114362504eE() #23, !noalias !1121 unreachable -.body128: ; preds = %.thread416, %202, %184, %197, %235 - %.pn92 = phi { ptr, i32 } [ %lpad.thr_comm.split-lp415, %235 ], [ %185, %184 ], [ %198, %197 ], [ %203, %202 ], [ %lpad.thr_comm414, %.thread416 ] +.body128: ; preds = %.thread412, %202, %184, %197, %235 + %.pn92 = phi { ptr, i32 } [ %lpad.thr_comm.split-lp411, %235 ], [ %185, %184 ], [ %198, %197 ], [ %203, %202 ], [ %lpad.thr_comm410, %.thread412 ] invoke void @"_ZN4core3ptr90drop_in_place$LT$influxdb3_server..http..Error..response..ErrorMessage$LT$$LP$$RP$$GT$$GT$17h8b91b20a750ac680E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %50) #22 to label %.thread unwind label %169 @@ -6813,11 +6813,11 @@ _ZN10serde_json3ser6to_vec17h6ea22bc9979944f4E.exit: ; preds = %186 br i1 %199, label %200, label %207 200: ; preds = %_ZN10serde_json3ser6to_vec17h6ea22bc9979944f4E.exit, %_ZN10serde_json3ser6to_vec17h6ea22bc9979944f4E.exit.thread - %.sroa.7268.0403 = phi ptr [ %183, %_ZN10serde_json3ser6to_vec17h6ea22bc9979944f4E.exit.thread ], [ %.sroa.7268.0.copyload270, %_ZN10serde_json3ser6to_vec17h6ea22bc9979944f4E.exit ] - %201 = icmp ne ptr %.sroa.7268.0403, null + %.sroa.7268.0401 = phi ptr [ %183, %_ZN10serde_json3ser6to_vec17h6ea22bc9979944f4E.exit.thread ], [ %.sroa.7268.0.copyload270, %_ZN10serde_json3ser6to_vec17h6ea22bc9979944f4E.exit ] + %201 = icmp ne ptr %.sroa.7268.0401, null call void @llvm.assume(i1 %201) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15), !noalias !1130 - store ptr %.sroa.7268.0403, ptr %15, align 8, !noalias !1130 + store ptr %.sroa.7268.0401, ptr %15, align 8, !noalias !1130 invoke void @_ZN4core6result13unwrap_failed17hddb4fea594200c52E(ptr noalias noundef nonnull readonly align 1 @anon.7463256388310ca230f95e7a445731de.40, i64 noundef 43, ptr noundef nonnull align 1 %15, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7463256388310ca230f95e7a445731de.41, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7463256388310ca230f95e7a445731de.236) #20 to label %204 unwind label %202, !noalias !1135 @@ -6886,8 +6886,8 @@ _ZN10serde_json3ser6to_vec17h6ea22bc9979944f4E.exit: ; preds = %186 invoke void @_ZN4http8response5Parts3new17he4f6ef0c90ee86f4E(ptr noalias nocapture noundef nonnull sret({ { { i64, [2 x i64] }, { ptr, i64 }, { { ptr, i64 }, i64 }, { { ptr, i64 }, i64 }, i16, [3 x i16] }, ptr, i16, i8, {}, [5 x i8] }) align 8 dereferenceable(112) %38) to label %222 unwind label %235 -.thread416: ; preds = %.critedge, %225 - %lpad.thr_comm414 = landingpad { ptr, i32 } +.thread412: ; preds = %.critedge, %225 + %lpad.thr_comm410 = landingpad { ptr, i32 } cleanup br label %.body128 @@ -6941,7 +6941,7 @@ _ZN10serde_json3ser6to_vec17h6ea22bc9979944f4E.exit: ; preds = %186 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %37) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %37, ptr noundef nonnull align 8 dereferenceable(48) %49, i64 48, i1 false) invoke void @"_ZN4core3ptr44drop_in_place$LT$hyper..body..body..Body$GT$17h4165c35d612fc315E"(ptr noalias noundef nonnull align 8 dereferenceable(48) %37) - to label %225 unwind label %.thread416 + to label %225 unwind label %.thread412 225: ; preds = %.critedge call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %37) @@ -6950,7 +6950,7 @@ _ZN10serde_json3ser6to_vec17h6ea22bc9979944f4E.exit: ; preds = %186 %226 = getelementptr inbounds i8, ptr %14, i64 1 store i8 %.sroa.541.0.copyload, ptr %226, align 1, !noalias !1169 invoke void @_ZN4core6result13unwrap_failed17hddb4fea594200c52E(ptr noalias noundef nonnull readonly align 1 @anon.7463256388310ca230f95e7a445731de.40, i64 noundef 43, ptr noundef nonnull align 1 %14, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7463256388310ca230f95e7a445731de.43, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7463256388310ca230f95e7a445731de.237) #20 - to label %.noexc139 unwind label %.thread416 + to label %.noexc139 unwind label %.thread412 .noexc139: ; preds = %225 unreachable @@ -6975,7 +6975,7 @@ _ZN10serde_json3ser6to_vec17h6ea22bc9979944f4E.exit: ; preds = %186 br label %166 235: ; preds = %"_ZN90_$LT$hyper..body..body..Body$u20$as$u20$core..convert..From$LT$bytes..bytes..Bytes$GT$$GT$4from17he6088acfa9ab5e32E.exit136" - %lpad.thr_comm.split-lp415 = landingpad { ptr, i32 } + %lpad.thr_comm.split-lp411 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr44drop_in_place$LT$hyper..body..body..Body$GT$17h4165c35d612fc315E"(ptr noalias noundef nonnull align 8 dereferenceable(48) %49) #22 to label %.body128 unwind label %169 @@ -7063,8 +7063,8 @@ _ZN10serde_json3ser6to_vec17h21723a0fff500ddaE.exit.thread: ; preds = %.noexc147 call void @_ZN4core9panicking16panic_in_cleanup17hd44bb2114362504eE() #23, !noalias !1178 unreachable -.body149: ; preds = %.thread436, %268, %250, %263, %321 - %.pn = phi { ptr, i32 } [ %lpad.thr_comm.split-lp435, %321 ], [ %251, %250 ], [ %264, %263 ], [ %269, %268 ], [ %lpad.thr_comm434, %.thread436 ] +.body149: ; preds = %.thread430, %268, %250, %263, %321 + %.pn = phi { ptr, i32 } [ %lpad.thr_comm.split-lp429, %321 ], [ %251, %250 ], [ %264, %263 ], [ %269, %268 ], [ %lpad.thr_comm428, %.thread430 ] invoke void @"_ZN4core3ptr136drop_in_place$LT$influxdb3_server..http..Error..response..ErrorMessage$LT$alloc..vec..Vec$LT$influxdb3_write..WriteLineError$GT$$GT$$GT$17hb750dd0894bb8719E"(ptr noalias noundef nonnull align 8 dereferenceable(48) %47) #22 to label %.body165 unwind label %169 @@ -7082,11 +7082,11 @@ _ZN10serde_json3ser6to_vec17h21723a0fff500ddaE.exit: ; preds = %252 br i1 %265, label %266, label %273 266: ; preds = %_ZN10serde_json3ser6to_vec17h21723a0fff500ddaE.exit, %_ZN10serde_json3ser6to_vec17h21723a0fff500ddaE.exit.thread - %.sroa.7302.0423 = phi ptr [ %249, %_ZN10serde_json3ser6to_vec17h21723a0fff500ddaE.exit.thread ], [ %.sroa.7302.0.copyload304, %_ZN10serde_json3ser6to_vec17h21723a0fff500ddaE.exit ] - %267 = icmp ne ptr %.sroa.7302.0423, null + %.sroa.7302.0419 = phi ptr [ %249, %_ZN10serde_json3ser6to_vec17h21723a0fff500ddaE.exit.thread ], [ %.sroa.7302.0.copyload304, %_ZN10serde_json3ser6to_vec17h21723a0fff500ddaE.exit ] + %267 = icmp ne ptr %.sroa.7302.0419, null call void @llvm.assume(i1 %267) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9), !noalias !1187 - store ptr %.sroa.7302.0423, ptr %9, align 8, !noalias !1187 + store ptr %.sroa.7302.0419, ptr %9, align 8, !noalias !1187 invoke void @_ZN4core6result13unwrap_failed17hddb4fea594200c52E(ptr noalias noundef nonnull readonly align 1 @anon.7463256388310ca230f95e7a445731de.40, i64 noundef 43, ptr noundef nonnull align 1 %9, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7463256388310ca230f95e7a445731de.41, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7463256388310ca230f95e7a445731de.239) #20 to label %270 unwind label %268, !noalias !1192 @@ -7157,8 +7157,8 @@ _ZN10serde_json3ser6to_vec17h21723a0fff500ddaE.exit: ; preds = %252 invoke void @_ZN4http8response5Parts3new17he4f6ef0c90ee86f4E(ptr noalias nocapture noundef nonnull sret({ { { i64, [2 x i64] }, { ptr, i64 }, { { ptr, i64 }, i64 }, { { ptr, i64 }, i64 }, i16, [3 x i16] }, ptr, i16, i8, {}, [5 x i8] }) align 8 dereferenceable(112) %34) to label %288 unwind label %321 -.thread436: ; preds = %.critedge453, %291 - %lpad.thr_comm434 = landingpad { ptr, i32 } +.thread430: ; preds = %.critedge447, %291 + %lpad.thr_comm428 = landingpad { ptr, i32 } cleanup br label %.body149 @@ -7178,7 +7178,7 @@ _ZN10serde_json3ser6to_vec17h21723a0fff500ddaE.exit: ; preds = %252 call void @llvm.lifetime.start.p0(i64 94, ptr nonnull %.sroa.7317.sroa.0) call void @llvm.lifetime.start.p0(i64 6, ptr nonnull %.sroa.7317.sroa.5) %289 = icmp eq i64 %.sroa.055.0.copyload, 3 - br i1 %289, label %.critedge453, label %290 + br i1 %289, label %.critedge447, label %290 290: ; preds = %288 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(94) %.sroa.7317.sroa.0, ptr noundef nonnull align 2 dereferenceable(94) %.sroa.754.sroa.0, i64 94, i1 false) @@ -7221,7 +7221,7 @@ _ZN10serde_json3ser6to_vec17h21723a0fff500ddaE.exit: ; preds = %252 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h2a6f3122bc871979E.llvm.9135219245553044050"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %7, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %47) to label %.noexc.i162 unwind label %299 -.critedge453: ; preds = %288 +.critedge447: ; preds = %288 call void @llvm.lifetime.end.p0(i64 94, ptr nonnull %.sroa.754.sroa.0) call void @llvm.lifetime.end.p0(i64 6, ptr nonnull %.sroa.754.sroa.5) call void @llvm.lifetime.start.p0(i64 94, ptr nonnull %.sroa.9328) @@ -7233,9 +7233,9 @@ _ZN10serde_json3ser6to_vec17h21723a0fff500ddaE.exit: ; preds = %252 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %33) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %33, ptr noundef nonnull align 8 dereferenceable(48) %46, i64 48, i1 false) invoke void @"_ZN4core3ptr44drop_in_place$LT$hyper..body..body..Body$GT$17h4165c35d612fc315E"(ptr noalias noundef nonnull align 8 dereferenceable(48) %33) - to label %291 unwind label %.thread436 + to label %291 unwind label %.thread430 -291: ; preds = %.critedge453 +291: ; preds = %.critedge447 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %33) call void @llvm.lifetime.end.p0(i64 94, ptr nonnull %.sroa.9328) call void @llvm.lifetime.end.p0(i64 6, ptr nonnull %.sroa.11330) @@ -7244,7 +7244,7 @@ _ZN10serde_json3ser6to_vec17h21723a0fff500ddaE.exit: ; preds = %252 %292 = getelementptr inbounds i8, ptr %8, i64 1 store i8 %.sroa.557.0.copyload, ptr %292, align 1, !noalias !1230 invoke void @_ZN4core6result13unwrap_failed17hddb4fea594200c52E(ptr noalias noundef nonnull readonly align 1 @anon.7463256388310ca230f95e7a445731de.40, i64 noundef 43, ptr noundef nonnull align 1 %8, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7463256388310ca230f95e7a445731de.43, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.7463256388310ca230f95e7a445731de.240) #20 - to label %.noexc160 unwind label %.thread436 + to label %.noexc160 unwind label %.thread430 .noexc160: ; preds = %291 unreachable @@ -7326,7 +7326,7 @@ _ZN10serde_json3ser6to_vec17h21723a0fff500ddaE.exit: ; preds = %252 br label %166 321: ; preds = %"_ZN90_$LT$hyper..body..body..Body$u20$as$u20$core..convert..From$LT$bytes..bytes..Bytes$GT$$GT$4from17he6088acfa9ab5e32E.exit157" - %lpad.thr_comm.split-lp435 = landingpad { ptr, i32 } + %lpad.thr_comm.split-lp429 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr44drop_in_place$LT$hyper..body..body..Body$GT$17h4165c35d612fc315E"(ptr noalias noundef nonnull align 8 dereferenceable(48) %46) #22 to label %.body149 unwind label %169 @@ -7386,8 +7386,8 @@ _ZN10serde_json3ser6to_vec17h21723a0fff500ddaE.exit: ; preds = %252 invoke void @_ZN4http8response5Parts3new17he4f6ef0c90ee86f4E(ptr noalias nocapture noundef nonnull sret({ { { i64, [2 x i64] }, { ptr, i64 }, { { ptr, i64 }, i64 }, { { ptr, i64 }, i64 }, i16, [3 x i16] }, ptr, i16, i8, {}, [5 x i8] }) align 8 dereferenceable(112) %30) to label %339 unwind label %372 -.thread444: ; preds = %.critedge449, %342 - %lpad.thr_comm442 = landingpad { ptr, i32 } +.thread438: ; preds = %.critedge443, %342 + %lpad.thr_comm436 = landingpad { ptr, i32 } cleanup br label %.thread @@ -7405,7 +7405,7 @@ _ZN10serde_json3ser6to_vec17h21723a0fff500ddaE.exit: ; preds = %252 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(6) %.sroa.769.sroa.5, ptr noundef nonnull align 2 dereferenceable(6) %.sroa.673.sroa.5.0..sroa.673.0..sroa_idx.sroa_idx, i64 6, i1 false) call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %30) %340 = icmp eq i64 %.sroa.070.0.copyload, 3 - br i1 %340, label %.critedge449, label %341 + br i1 %340, label %.critedge443, label %341 341: ; preds = %339 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(94) %.sroa.7337.sroa.0, ptr noundef nonnull align 2 dereferenceable(94) %.sroa.769.sroa.0, i64 94, i1 false) @@ -7433,22 +7433,22 @@ _ZN10serde_json3ser6to_vec17h21723a0fff500ddaE.exit: ; preds = %252 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %45) br label %166 -.critedge449: ; preds = %339 +.critedge443: ; preds = %339 call void @llvm.lifetime.end.p0(i64 94, ptr nonnull %.sroa.769.sroa.0) call void @llvm.lifetime.end.p0(i64 6, ptr nonnull %.sroa.769.sroa.5) call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %29) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %29, ptr noundef nonnull align 8 dereferenceable(48) %45, i64 48, i1 false) {"code":"internal","msg":"git-diff-tree: context deadline exceeded","meta":{"cause":"*fmt.wrapError"}}