diff --git a/bench/abc/optimized/verCore.c.ll b/bench/abc/optimized/verCore.c.ll index 2b6cf853885..537b1c7e67b 100644 --- a/bench/abc/optimized/verCore.c.ll +++ b/bench/abc/optimized/verCore.c.ll @@ -5566,14 +5566,10 @@ Ver_ParseInsertsSuffix.exit.split.us: ; preds = %Ver_ParseInsertsSuf br i1 %exitcond94.not, label %.loopexit, label %Ver_ParseInsertsSuffix.exit.split.us, !llvm.loop !86 Ver_ParseInsertsSuffix.exit.split: ; preds = %Ver_ParseInsertsSuffix.exit - br i1 %.not63, label %Ver_ParseInsertsSuffix.exit.split.split.us.preheader, label %Ver_ParseInsertsSuffix.exit.split.split + br i1 %.not63, label %Ver_ParseInsertsSuffix.exit.split.split.us, label %Ver_ParseInsertsSuffix.exit.split.split -Ver_ParseInsertsSuffix.exit.split.split.us.preheader: ; preds = %Ver_ParseInsertsSuffix.exit.split - %smax91 = call i32 @llvm.smax.i32(i32 %68, i32 0) - br label %Ver_ParseInsertsSuffix.exit.split.split.us - -Ver_ParseInsertsSuffix.exit.split.split.us: ; preds = %Ver_ParseInsertsSuffix.exit.split.split.us.preheader, %86 - %.065.us66 = phi i32 [ %87, %86 ], [ 0, %Ver_ParseInsertsSuffix.exit.split.split.us.preheader ] +Ver_ParseInsertsSuffix.exit.split.split.us: ; preds = %Ver_ParseInsertsSuffix.exit.split, %86 + %.065.us66 = phi i32 [ %87, %86 ], [ 0, %Ver_ParseInsertsSuffix.exit.split ] %strcpy.us68 = call ptr @strcpy(ptr nonnull dereferenceable(1) %4, ptr nonnull dereferenceable(1) %35) switch i32 %15, label %86 [ i32 2, label %.thread61.us69 @@ -5592,7 +5588,7 @@ Ver_ParseInsertsSuffix.exit.split.split.us: ; preds = %Ver_ParseInsertsSuf 86: ; preds = %.thread61.us69, %82, %Ver_ParseInsertsSuffix.exit.split.split.us %87 = add nuw i32 %.065.us66, 1 - %exitcond92.not = icmp eq i32 %.065.us66, %smax91 + %exitcond92.not = icmp eq i32 %.065.us66, %68 br i1 %exitcond92.not, label %.loopexit, label %Ver_ParseInsertsSuffix.exit.split.split.us, !llvm.loop !86 Ver_ParseInsertsSuffix.exit.split.split: ; preds = %Ver_ParseInsertsSuffix.exit.split diff --git a/bench/abseil-cpp/optimized/inlined_vector_test.cc.ll b/bench/abseil-cpp/optimized/inlined_vector_test.cc.ll index 5aefcdf6b35..089a754c6ae 100644 --- a/bench/abseil-cpp/optimized/inlined_vector_test.cc.ll +++ b/bench/abseil-cpp/optimized/inlined_vector_test.cc.ll @@ -22145,8 +22145,8 @@ if.then.i.i.i.i.i.i.i1203: ; preds = %if.else.i %sub.ptr.lhs.cast.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.i.i.i.i.i.i.i.pn to i64 %sub.ptr.sub.i.i.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i, %sub.ptr.lhs.cast.i.i1194 %sub.ptr.div.i.i.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i.i.i, 2 - %.pre.i.i.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i.i - %add.ptr.i.i.i.i.i.i.i1204 = getelementptr inbounds i32, ptr %std_v.sroa.10.3, i64 %.pre.i.i.i.i.i.i.i + %idx.neg.i.i.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i.i + %add.ptr.i.i.i.i.i.i.i1204 = getelementptr inbounds i32, ptr %std_v.sroa.10.3, i64 %idx.neg.i.i.i.i.i.i.i call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %add.ptr.i.i.i.i.i.i.i1204, ptr align 4 %add.ptr.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i, i1 false) br label %_ZNSt6vectorIiSaIiEE13_M_insert_auxIiEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEOT_.exit.i @@ -22942,8 +22942,8 @@ if.then.i.i.i.i.i.i1299: ; preds = %if.then11.i %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.i1298 to i64 %sub.ptr.sub.i.i.i.i.i.i1300 = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i.i, %sub.ptr.lhs.cast.i.i %sub.ptr.div.i.i.i.i.i.i1301 = ashr exact i64 %sub.ptr.sub.i.i.i.i.i.i1300, 2 - %.pre.i.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i1301 - %add.ptr.i.i.i.i.i.i1302 = getelementptr inbounds i32, ptr %std_v64.sroa.11.42291, i64 %.pre.i.i.i.i.i.i + %idx.neg.i.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i1301 + %add.ptr.i.i.i.i.i.i1302 = getelementptr inbounds i32, ptr %std_v64.sroa.11.42291, i64 %idx.neg.i.i.i.i.i.i call void @llvm.memmove.p0.p0.i64(ptr align 4 %add.ptr.i.i.i.i.i.i1302, ptr align 4 %add.ptr.i215, i64 %sub.ptr.sub.i.i.i.i.i.i1300, i1 false) br label %for.body.i.i.i.i.preheader @@ -23833,8 +23833,8 @@ if.then.i.i.i.i.i.i1446: ; preds = %_ZSt22__uninitializ %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i.i1447 = ptrtoint ptr %add.ptr.i1444 to i64 %sub.ptr.sub.i.i.i.i.i.i1448 = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i.i1447, %sub.ptr.lhs.cast.i.i404 %sub.ptr.div.i.i.i.i.i.i1449 = ashr exact i64 %sub.ptr.sub.i.i.i.i.i.i1448, 2 - %.pre.i.i.i.i.i.i1450 = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i1449 - %add.ptr.i.i.i.i.i.i1451 = getelementptr inbounds i32, ptr %std_v140.sroa.11.42297, i64 %.pre.i.i.i.i.i.i1450 + %idx.neg.i.i.i.i.i.i1450 = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i1449 + %add.ptr.i.i.i.i.i.i1451 = getelementptr inbounds i32, ptr %std_v140.sroa.11.42297, i64 %idx.neg.i.i.i.i.i.i1450 call void @llvm.memmove.p0.p0.i64(ptr align 4 %add.ptr.i.i.i.i.i.i1451, ptr align 4 %add.ptr.i403, i64 %sub.ptr.sub.i.i.i.i.i.i1448, i1 false) br label %if.then.i.i.i.i.i30.i @@ -24742,8 +24742,8 @@ if.then.i.i.i.i.i.i1640: ; preds = %if.then16.i %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i.i1641 = ptrtoint ptr %add.ptr.i1637 to i64 %sub.ptr.sub.i.i.i.i.i.i1642 = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i.i1641, %sub.ptr.lhs.cast.i.i607 %sub.ptr.div.i.i.i.i.i.i1643 = ashr exact i64 %sub.ptr.sub.i.i.i.i.i.i1642, 2 - %.pre.i.i.i.i.i.i1644 = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i1643 - %add.ptr.i.i.i.i.i.i1645 = getelementptr inbounds i32, ptr %std_v239.sroa.11.42305, i64 %.pre.i.i.i.i.i.i1644 + %idx.neg.i.i.i.i.i.i1644 = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i1643 + %add.ptr.i.i.i.i.i.i1645 = getelementptr inbounds i32, ptr %std_v239.sroa.11.42305, i64 %idx.neg.i.i.i.i.i.i1644 call void @llvm.memmove.p0.p0.i64(ptr align 4 %add.ptr.i.i.i.i.i.i1645, ptr align 4 %add.ptr.i606, i64 %sub.ptr.sub.i.i.i.i.i.i1642, i1 false) br label %for.body.i.i.i.i.i.i.preheader @@ -25695,8 +25695,8 @@ if.then.i.i.i.i.i.i1812: ; preds = %_ZSt22__uninitializ %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i.i1813 = ptrtoint ptr %add.ptr.i1810 to i64 %sub.ptr.sub.i.i.i.i.i.i1814 = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i.i1813, %sub.ptr.lhs.cast.i.i812 %sub.ptr.div.i.i.i.i.i.i1815 = ashr exact i64 %sub.ptr.sub.i.i.i.i.i.i1814, 2 - %.pre.i.i.i.i.i.i1816 = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i1815 - %add.ptr.i.i.i.i.i.i1817 = getelementptr inbounds i32, ptr %std_v344.sroa.11.42312, i64 %.pre.i.i.i.i.i.i1816 + %idx.neg.i.i.i.i.i.i1816 = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i1815 + %add.ptr.i.i.i.i.i.i1817 = getelementptr inbounds i32, ptr %std_v344.sroa.11.42312, i64 %idx.neg.i.i.i.i.i.i1816 call void @llvm.memmove.p0.p0.i64(ptr align 4 %add.ptr.i.i.i.i.i.i1817, ptr align 4 %add.ptr.i811, i64 %sub.ptr.sub.i.i.i.i.i.i1814, i1 false) br label %_ZSt4copyIPKiN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEET0_T_SA_S9_.exit.i @@ -26709,8 +26709,8 @@ if.then.i.i.i.i.i.i2033: ; preds = %_ZSt22__uninitializ %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i.i2034 = ptrtoint ptr %add.ptr.i2029 to i64 %sub.ptr.sub.i.i.i.i.i.i2035 = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i.i2034, %sub.ptr.lhs.cast.i.i1032 %sub.ptr.div.i.i.i.i.i.i2036 = ashr exact i64 %sub.ptr.sub.i.i.i.i.i.i2035, 2 - %.pre.i.i.i.i.i.i2037 = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i2036 - %add.ptr.i.i.i.i.i.i2038 = getelementptr inbounds i32, ptr %std_v440.sroa.11.42318, i64 %.pre.i.i.i.i.i.i2037 + %idx.neg.i.i.i.i.i.i2037 = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i2036 + %add.ptr.i.i.i.i.i.i2038 = getelementptr inbounds i32, ptr %std_v440.sroa.11.42318, i64 %idx.neg.i.i.i.i.i.i2037 call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %add.ptr.i.i.i.i.i.i2038, ptr align 4 %add.ptr.i1031, i64 %sub.ptr.sub.i.i.i.i.i.i2035, i1 false) br label %_ZSt4copyIPKiN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEET0_T_SA_S9_.exit.i2039 @@ -188640,9 +188640,7 @@ _ZNSt6vectorIN4absl13test_internal20CopyableOnlyInstanceESaIS2_EE17_S_check_init _ZNSt12_Vector_baseIN4absl13test_internal20CopyableOnlyInstanceESaIS2_EE11_M_allocateEm.exit.thread.i.i.i: ; preds = %_ZNSt6vectorIN4absl13test_internal20CopyableOnlyInstanceESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.i, %_ZNSt6vectorIN4absl13test_internal20CopyableOnlyInstanceESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.thread.i %new_contents_in.sroa.0.2.lcssa723752.i = phi ptr [ null, %_ZNSt6vectorIN4absl13test_internal20CopyableOnlyInstanceESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.thread.i ], [ %new_contents_in.sroa.0.3.i484, %_ZNSt6vectorIN4absl13test_internal20CopyableOnlyInstanceESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.i ] - %sub.ptr.sub.i.i.i.i.i743748.i = phi i64 [ 0, %_ZNSt6vectorIN4absl13test_internal20CopyableOnlyInstanceESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.thread.i ], [ %sub.ptr.sub.i.i.i.i.i.i, %_ZNSt6vectorIN4absl13test_internal20CopyableOnlyInstanceESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.i ] - %add.ptr7.i.i.i = getelementptr inbounds i8, ptr null, i64 %sub.ptr.sub.i.i.i.i.i743748.i - store ptr %add.ptr7.i.i.i, ptr %_M_end_of_storage.i.i52.i, align 8 + store ptr null, ptr %_M_end_of_storage.i.i52.i, align 8 br label %invoke.cont24.i495 for.body.i.i.i.i.preheader.i.i.i: ; preds = %_ZNSt6vectorIN4absl13test_internal20CopyableOnlyInstanceESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.i @@ -190035,9 +190033,7 @@ _ZNSt6vectorIN4absl13test_internal20CopyableOnlyInstanceESaIS2_EE17_S_check_init _ZNSt12_Vector_baseIN4absl13test_internal20CopyableOnlyInstanceESaIS2_EE11_M_allocateEm.exit.thread.i.i.i1235: ; preds = %_ZNSt6vectorIN4absl13test_internal20CopyableOnlyInstanceESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.i863, %_ZNSt6vectorIN4absl13test_internal20CopyableOnlyInstanceESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.thread.i1325 %new_contents_in.sroa.0.2.lcssa723752.i1236 = phi ptr [ null, %_ZNSt6vectorIN4absl13test_internal20CopyableOnlyInstanceESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.thread.i1325 ], [ %new_contents_in.sroa.0.3.i853, %_ZNSt6vectorIN4absl13test_internal20CopyableOnlyInstanceESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.i863 ] - %sub.ptr.sub.i.i.i.i.i743748.i1238 = phi i64 [ 0, %_ZNSt6vectorIN4absl13test_internal20CopyableOnlyInstanceESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.thread.i1325 ], [ %sub.ptr.sub.i.i.i.i.i.i861, %_ZNSt6vectorIN4absl13test_internal20CopyableOnlyInstanceESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.i863 ] - %add.ptr7.i.i.i1239 = getelementptr inbounds i8, ptr null, i64 %sub.ptr.sub.i.i.i.i.i743748.i1238 - store ptr %add.ptr7.i.i.i1239, ptr %_M_end_of_storage.i.i52.i737, align 8 + store ptr null, ptr %_M_end_of_storage.i.i52.i737, align 8 br label %invoke.cont24.i917 for.body.i.i.i.i.preheader.i.i.i865: ; preds = %_ZNSt6vectorIN4absl13test_internal20CopyableOnlyInstanceESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.i863 @@ -195310,9 +195306,7 @@ _ZNSt6vectorIN4absl13test_internal23CopyableMovableInstanceESaIS2_EE17_S_check_i _ZNSt12_Vector_baseIN4absl13test_internal23CopyableMovableInstanceESaIS2_EE11_M_allocateEm.exit.thread.i.i.i: ; preds = %_ZNSt6vectorIN4absl13test_internal23CopyableMovableInstanceESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.i, %_ZNSt6vectorIN4absl13test_internal23CopyableMovableInstanceESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.thread.i %new_contents_in.sroa.0.2.lcssa719748.i = phi ptr [ null, %_ZNSt6vectorIN4absl13test_internal23CopyableMovableInstanceESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.thread.i ], [ %new_contents_in.sroa.0.3.i478, %_ZNSt6vectorIN4absl13test_internal23CopyableMovableInstanceESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.i ] - %sub.ptr.sub.i.i.i.i.i739744.i = phi i64 [ 0, %_ZNSt6vectorIN4absl13test_internal23CopyableMovableInstanceESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.thread.i ], [ %sub.ptr.sub.i.i.i.i.i.i, %_ZNSt6vectorIN4absl13test_internal23CopyableMovableInstanceESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.i ] - %add.ptr7.i.i.i = getelementptr inbounds i8, ptr null, i64 %sub.ptr.sub.i.i.i.i.i739744.i - store ptr %add.ptr7.i.i.i, ptr %_M_end_of_storage.i.i52.i, align 8 + store ptr null, ptr %_M_end_of_storage.i.i52.i, align 8 br label %invoke.cont24.i489 for.body.i.i.i.i.preheader.i.i.i: ; preds = %_ZNSt6vectorIN4absl13test_internal23CopyableMovableInstanceESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.i @@ -196698,9 +196692,7 @@ _ZNSt6vectorIN4absl13test_internal23CopyableMovableInstanceESaIS2_EE17_S_check_i _ZNSt12_Vector_baseIN4absl13test_internal23CopyableMovableInstanceESaIS2_EE11_M_allocateEm.exit.thread.i.i.i1225: ; preds = %_ZNSt6vectorIN4absl13test_internal23CopyableMovableInstanceESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.i853, %_ZNSt6vectorIN4absl13test_internal23CopyableMovableInstanceESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.thread.i1313 %new_contents_in.sroa.0.2.lcssa719748.i1226 = phi ptr [ null, %_ZNSt6vectorIN4absl13test_internal23CopyableMovableInstanceESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.thread.i1313 ], [ %new_contents_in.sroa.0.3.i843, %_ZNSt6vectorIN4absl13test_internal23CopyableMovableInstanceESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.i853 ] - %sub.ptr.sub.i.i.i.i.i739744.i1228 = phi i64 [ 0, %_ZNSt6vectorIN4absl13test_internal23CopyableMovableInstanceESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.thread.i1313 ], [ %sub.ptr.sub.i.i.i.i.i.i851, %_ZNSt6vectorIN4absl13test_internal23CopyableMovableInstanceESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.i853 ] - %add.ptr7.i.i.i1229 = getelementptr inbounds i8, ptr null, i64 %sub.ptr.sub.i.i.i.i.i739744.i1228 - store ptr %add.ptr7.i.i.i1229, ptr %_M_end_of_storage.i.i52.i730, align 8 + store ptr null, ptr %_M_end_of_storage.i.i52.i730, align 8 br label %invoke.cont24.i907 for.body.i.i.i.i.preheader.i.i.i855: ; preds = %_ZNSt6vectorIN4absl13test_internal23CopyableMovableInstanceESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i.i.i853 diff --git a/bench/abseil-cpp/optimized/raw_hash_set_test.cc.ll b/bench/abseil-cpp/optimized/raw_hash_set_test.cc.ll index 9d50395cfe1..8771f7fbdd1 100644 --- a/bench/abseil-cpp/optimized/raw_hash_set_test.cc.ll +++ b/bench/abseil-cpp/optimized/raw_hash_set_test.cc.ll @@ -65303,16 +65303,16 @@ if.then.i.i.i.i.i: ; preds = %if.then14 br label %if.end65 if.else: ; preds = %if.then - br i1 %tobool.not.i.i.i.i.i, label %if.end65, label %if.then.i.i.i.i.i22 + br i1 %tobool.not.i.i.i.i.i, label %if.end65, label %if.then.i.i.i.i.i19 -if.then.i.i.i.i.i22: ; preds = %if.else - %sub.ptr.lhs.cast.i.i.i.i.i18 = ptrtoint ptr %add.ptr21 to i64 - %sub.ptr.sub.i.i.i.i.i20 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i18, %sub.ptr.rhs.cast - %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i20, 3 - %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i +if.then.i.i.i.i.i19: ; preds = %if.else %add.ptr29 = getelementptr inbounds ptr, ptr %add.ptr9, i64 %add - %add.ptr.i.i.i.i.i23 = getelementptr inbounds ptr, ptr %add.ptr29, i64 %.pre.i.i.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i23, ptr align 8 %1, i64 %sub.ptr.sub.i.i.i.i.i20, i1 false) + %sub.ptr.lhs.cast.i.i.i.i.i20 = ptrtoint ptr %add.ptr21 to i64 + %sub.ptr.sub.i.i.i.i.i22 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i20, %sub.ptr.rhs.cast + %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i22, 3 + %idx.neg.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i + %add.ptr.i.i.i.i.i23 = getelementptr inbounds ptr, ptr %add.ptr29, i64 %idx.neg.i.i.i.i.i + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i23, ptr align 8 %1, i64 %sub.ptr.sub.i.i.i.i.i22, i1 false) br label %if.end65 if.else31: ; preds = %entry @@ -65359,8 +65359,8 @@ _ZSt4copyIPPiS1_ET0_T_S3_S2_.exit30: ; preds = %_ZNSt11_Deque_baseI store i64 %add38, ptr %_M_map_size, align 8 br label %if.end65 -if.end65: ; preds = %if.then.i.i.i.i.i22, %if.else, %if.then.i.i.i.i.i, %if.then14, %_ZSt4copyIPPiS1_ET0_T_S3_S2_.exit30 - %__new_nstart.0 = phi ptr [ %add.ptr48, %_ZSt4copyIPPiS1_ET0_T_S3_S2_.exit30 ], [ %add.ptr9, %if.then14 ], [ %add.ptr9, %if.then.i.i.i.i.i ], [ %add.ptr9, %if.else ], [ %add.ptr9, %if.then.i.i.i.i.i22 ] +if.end65: ; preds = %if.then.i.i.i.i.i19, %if.else, %if.then.i.i.i.i.i, %if.then14, %_ZSt4copyIPPiS1_ET0_T_S3_S2_.exit30 + %__new_nstart.0 = phi ptr [ %add.ptr48, %_ZSt4copyIPPiS1_ET0_T_S3_S2_.exit30 ], [ %add.ptr9, %if.then14 ], [ %add.ptr9, %if.then.i.i.i.i.i ], [ %add.ptr9, %if.else ], [ %add.ptr9, %if.then.i.i.i.i.i19 ] store ptr %__new_nstart.0, ptr %_M_node3, align 8 %5 = load ptr, ptr %__new_nstart.0, align 8 %_M_first.i = getelementptr inbounds i8, ptr %this, i64 24 @@ -74959,8 +74959,8 @@ if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitializ %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 - %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i - %add.ptr.i.i.i.i.i = getelementptr inbounds i64, ptr %1, i64 %.pre.i.i.i.i.i + %idx.neg.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i + %add.ptr.i.i.i.i.i = getelementptr inbounds i64, ptr %1, i64 %idx.neg.i.i.i.i.i tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i, ptr align 8 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) br label %if.then.i.i.i.i.i30 @@ -75095,8 +75095,7 @@ if.then3.i.i.i.i.i.i: ; preds = %cond.true.i.i.i.i unreachable _ZNSt6vectorIdSaIdEEC2ERKS1_.exit: ; preds = %entry - %sub.ptr.div.i = ashr exact i64 %sub.ptr.sub.i.i, 3 - %conv = uitofp i64 %sub.ptr.div.i to double + %conv = uitofp nneg i64 %sub.ptr.sub.i.i to double %mul = fmul double %Percentile, %conv %conv3 = fptoui double %mul to i64 %add.ptr.i.idx = shl nsw i64 %conv3, 3 @@ -76250,8 +76249,8 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEES6_ET0_T %sub.ptr.lhs.cast.i.i.i.i.i.i = ptrtoint ptr %__i.sroa.0.013.i to i64 %sub.ptr.sub.i.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i, %sub.ptr.rhs.cast.i.lcssa %sub.ptr.div.i.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i.i, 3 - %.pre.i.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i - %add.ptr.i.i.i.i.i.i = getelementptr inbounds double, ptr %add.ptr.i3.i, i64 %.pre.i.i.i.i.i.i + %idx.neg.i.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i + %add.ptr.i.i.i.i.i.i = getelementptr inbounds double, ptr %add.ptr.i3.i, i64 %idx.neg.i.i.i.i.i.i tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %add.ptr.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(1) %__first.sroa.0.0.lcssa, i64 %sub.ptr.sub.i.i.i.i.i.i, i1 false) br label %for.inc.i diff --git a/bench/actix-rs/optimized/1rmq6g519rw6hl6a.ll b/bench/actix-rs/optimized/1rmq6g519rw6hl6a.ll index 27b8e90db3f..638709d3400 100644 --- a/bench/actix-rs/optimized/1rmq6g519rw6hl6a.ll +++ b/bench/actix-rs/optimized/1rmq6g519rw6hl6a.ll @@ -226,31 +226,30 @@ _ZN4http3uri4path12PathAndQuery4path17h196169f74ad29859E.exit.i.i8: ; preds = %" 54: ; preds = %53 %55 = icmp eq i64 %.0.sroa.speculated.i23, %.sroa.4.0.i.i3 - %56 = sub nsw i64 %.sroa.4.0.i.i3, %.0.sroa.speculated.i23 br i1 %55, label %"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17hf6cdd76e6e44ad9cE.exit", label %"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17hf6cdd76e6e44ad9cE.exit.thread" "_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i": ; preds = %53 - %57 = getelementptr inbounds i8, ptr %.sroa.0.0.i.i4, i64 %.0.sroa.speculated.i23 - %58 = load i8, ptr %57, align 1, !alias.scope !21, !noundef !8 - %59 = icmp sgt i8 %58, -65 - %60 = sub nuw i64 %.sroa.4.0.i.i3, %.0.sroa.speculated.i23 - br i1 %59, label %"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17hf6cdd76e6e44ad9cE.exit.thread29", label %"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17hf6cdd76e6e44ad9cE.exit.thread" + %56 = getelementptr inbounds i8, ptr %.sroa.0.0.i.i4, i64 %.0.sroa.speculated.i23 + %57 = load i8, ptr %56, align 1, !alias.scope !21, !noundef !8 + %58 = icmp sgt i8 %57, -65 + %59 = sub nuw i64 %.sroa.4.0.i.i3, %.0.sroa.speculated.i23 + br i1 %58, label %"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17hf6cdd76e6e44ad9cE.exit.thread29", label %"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17hf6cdd76e6e44ad9cE.exit.thread" "_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17hf6cdd76e6e44ad9cE.exit": ; preds = %"_ZN84_$LT$actix_router..url..Url$u20$as$u20$actix_router..resource_path..ResourcePath$GT$4path17h01636b12c6cfed63E.exit18", %54 - %61 = phi i64 [ %56, %54 ], [ %.sroa.4.0.i.i3, %"_ZN84_$LT$actix_router..url..Url$u20$as$u20$actix_router..resource_path..ResourcePath$GT$4path17h01636b12c6cfed63E.exit18" ] - %62 = icmp eq ptr %.sroa.0.0.i.i4, null - br i1 %62, label %"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17hf6cdd76e6e44ad9cE.exit.thread", label %"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17hf6cdd76e6e44ad9cE.exit.thread29" + %60 = phi i64 [ 0, %54 ], [ %.sroa.4.0.i.i3, %"_ZN84_$LT$actix_router..url..Url$u20$as$u20$actix_router..resource_path..ResourcePath$GT$4path17h01636b12c6cfed63E.exit18" ] + %61 = icmp eq ptr %.sroa.0.0.i.i4, null + br i1 %61, label %"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17hf6cdd76e6e44ad9cE.exit.thread", label %"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17hf6cdd76e6e44ad9cE.exit.thread29" "_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17hf6cdd76e6e44ad9cE.exit.thread": ; preds = %54, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i", %"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17hf6cdd76e6e44ad9cE.exit" tail call void @_ZN4core3str16slice_error_fail17he2ff12236fb0c056E(ptr noalias noundef nonnull readonly align 1 %.sroa.0.0.i.i4, i64 noundef %.sroa.4.0.i.i3, i64 noundef %.0.sroa.speculated.i23, i64 noundef %.sroa.4.0.i.i3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.fb31e637add031379ea14bd5f4512cef.7) #23 unreachable "_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17hf6cdd76e6e44ad9cE.exit.thread29": ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i", %"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17hf6cdd76e6e44ad9cE.exit" - %63 = phi i64 [ %61, %"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17hf6cdd76e6e44ad9cE.exit" ], [ %60, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i" ] - %64 = getelementptr inbounds i8, ptr %.sroa.0.0.i.i4, i64 %.0.sroa.speculated.i23 - %65 = insertvalue { ptr, i64 } poison, ptr %64, 0 - %66 = insertvalue { ptr, i64 } %65, i64 %63, 1 - ret { ptr, i64 } %66 + %62 = phi i64 [ %60, %"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17hf6cdd76e6e44ad9cE.exit" ], [ %59, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i" ] + %63 = getelementptr inbounds i8, ptr %.sroa.0.0.i.i4, i64 %.0.sroa.speculated.i23 + %64 = insertvalue { ptr, i64 } poison, ptr %63, 0 + %65 = insertvalue { ptr, i64 } %64, i64 %62, 1 + ret { ptr, i64 } %65 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/actix-rs/optimized/38w83wyqv1thu0n9.ll b/bench/actix-rs/optimized/38w83wyqv1thu0n9.ll index d74ea22d34b..c050b2eef21 100644 --- a/bench/actix-rs/optimized/38w83wyqv1thu0n9.ll +++ b/bench/actix-rs/optimized/38w83wyqv1thu0n9.ll @@ -8433,7 +8433,7 @@ define hidden { i64, ptr } @_ZN9actix_web4rmap11ResourceMap19_find_matching_node 7: ; preds = %3 %8 = icmp eq i64 %6, 0 - br i1 %8, label %18, label %9 + br i1 %8, label %17, label %9 9: ; preds = %7 %.not.i.i = icmp ult i64 %6, %2 @@ -8441,62 +8441,61 @@ define hidden { i64, ptr } @_ZN9actix_web4rmap11ResourceMap19_find_matching_node 10: ; preds = %9 %11 = icmp eq i64 %6, %2 - %12 = sub i64 %2, %6 - br i1 %11, label %18, label %17 + br i1 %11, label %17, label %16 "_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i": ; preds = %9 - %13 = getelementptr inbounds i8, ptr %1, i64 %6 - %14 = load i8, ptr %13, align 1, !alias.scope !1996, !noundef !13 - %15 = icmp sgt i8 %14, -65 - %16 = sub nuw i64 %2, %6 - br i1 %15, label %18, label %17 + %12 = getelementptr inbounds i8, ptr %1, i64 %6 + %13 = load i8, ptr %12, align 1, !alias.scope !1996, !noundef !13 + %14 = icmp sgt i8 %13, -65 + %15 = sub nuw i64 %2, %6 + br i1 %14, label %17, label %16 -17: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i", %10 +16: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i", %10 tail call void @_ZN4core3str16slice_error_fail17he2ff12236fb0c056E(ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2, i64 noundef %6, i64 noundef %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.972a82340b04216d2ae9c135c478131e.50) #35 unreachable -18: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i", %10, %7 - %19 = phi i64 [ %16, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i" ], [ %12, %10 ], [ %2, %7 ] - %20 = getelementptr inbounds i8, ptr %1, i64 %6 - %21 = getelementptr inbounds i8, ptr %0, i64 152 - %22 = load i64, ptr %21, align 8, !range !583, !noundef !13 - %23 = icmp eq i64 %22, -9223372036854775808 - br i1 %23, label %.loopexit, label %24 - -24: ; preds = %18 - %25 = getelementptr inbounds i8, ptr %0, i64 160 - %26 = load ptr, ptr %25, align 8, !nonnull !13, !noundef !13 - %27 = getelementptr inbounds i8, ptr %0, i64 168 - %28 = load i64, ptr %27, align 8, !noundef !13 - %29 = getelementptr inbounds ptr, ptr %26, i64 %28 - br label %30 - -30: ; preds = %32, %24 - %.sroa.0.017 = phi ptr [ %26, %24 ], [ %33, %32 ] - %31 = icmp eq ptr %.sroa.0.017, %29 - br i1 %31, label %.loopexit, label %32 - -32: ; preds = %30 - %33 = getelementptr inbounds i8, ptr %.sroa.0.017, i64 8 +17: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i", %10, %7 + %18 = phi i64 [ %15, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i" ], [ 0, %10 ], [ %2, %7 ] + %19 = getelementptr inbounds i8, ptr %1, i64 %6 + %20 = getelementptr inbounds i8, ptr %0, i64 152 + %21 = load i64, ptr %20, align 8, !range !583, !noundef !13 + %22 = icmp eq i64 %21, -9223372036854775808 + br i1 %22, label %.loopexit, label %23 + +23: ; preds = %17 + %24 = getelementptr inbounds i8, ptr %0, i64 160 + %25 = load ptr, ptr %24, align 8, !nonnull !13, !noundef !13 + %26 = getelementptr inbounds i8, ptr %0, i64 168 + %27 = load i64, ptr %26, align 8, !noundef !13 + %28 = getelementptr inbounds ptr, ptr %25, i64 %27 + br label %29 + +29: ; preds = %31, %23 + %.sroa.0.017 = phi ptr [ %25, %23 ], [ %32, %31 ] + %30 = icmp eq ptr %.sroa.0.017, %28 + br i1 %30, label %.loopexit, label %31 + +31: ; preds = %29 + %32 = getelementptr inbounds i8, ptr %.sroa.0.017, i64 8 tail call void @llvm.experimental.noalias.scope.decl(metadata !2001) tail call void @llvm.experimental.noalias.scope.decl(metadata !2004), !noalias !2007 - %34 = load ptr, ptr %.sroa.0.017, align 8, !alias.scope !2010, !noalias !2011, !nonnull !13, !noundef !13 - %35 = getelementptr inbounds i8, ptr %34, i64 16 - %36 = tail call { i64, ptr } @_ZN9actix_web4rmap11ResourceMap19_find_matching_node17h4ba6c5561c1cc5fbE(ptr noundef nonnull align 8 %35, ptr noalias noundef nonnull readonly align 1 %20, i64 noundef %19), !noalias !2014 - %37 = extractvalue { i64, ptr } %36, 0 - %38 = icmp eq i64 %37, 1 - br i1 %38, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8find_map17h9b0513f8a4c49d88E.exit", label %30 - -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8find_map17h9b0513f8a4c49d88E.exit": ; preds = %32 - %39 = extractvalue { i64, ptr } %36, 1 + %33 = load ptr, ptr %.sroa.0.017, align 8, !alias.scope !2010, !noalias !2011, !nonnull !13, !noundef !13 + %34 = getelementptr inbounds i8, ptr %33, i64 16 + %35 = tail call { i64, ptr } @_ZN9actix_web4rmap11ResourceMap19_find_matching_node17h4ba6c5561c1cc5fbE(ptr noundef nonnull align 8 %34, ptr noalias noundef nonnull readonly align 1 %19, i64 noundef %18), !noalias !2014 + %36 = extractvalue { i64, ptr } %35, 0 + %37 = icmp eq i64 %36, 1 + br i1 %37, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8find_map17h9b0513f8a4c49d88E.exit", label %29 + +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8find_map17h9b0513f8a4c49d88E.exit": ; preds = %31 + %38 = extractvalue { i64, ptr } %35, 1 br label %.loopexit -.loopexit: ; preds = %30, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8find_map17h9b0513f8a4c49d88E.exit", %3, %18 - %.sroa.3.0 = phi ptr [ undef, %3 ], [ %0, %18 ], [ %39, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8find_map17h9b0513f8a4c49d88E.exit" ], [ null, %30 ] - %.sroa.0.0 = phi i64 [ 0, %3 ], [ 1, %18 ], [ 1, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8find_map17h9b0513f8a4c49d88E.exit" ], [ 1, %30 ] - %40 = insertvalue { i64, ptr } poison, i64 %.sroa.0.0, 0 - %41 = insertvalue { i64, ptr } %40, ptr %.sroa.3.0, 1 - ret { i64, ptr } %41 +.loopexit: ; preds = %29, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8find_map17h9b0513f8a4c49d88E.exit", %3, %17 + %.sroa.3.0 = phi ptr [ undef, %3 ], [ %0, %17 ], [ %38, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8find_map17h9b0513f8a4c49d88E.exit" ], [ null, %29 ] + %.sroa.0.0 = phi i64 [ 0, %3 ], [ 1, %17 ], [ 1, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8find_map17h9b0513f8a4c49d88E.exit" ], [ 1, %29 ] + %39 = insertvalue { i64, ptr } poison, i64 %.sroa.0.0, 0 + %40 = insertvalue { i64, ptr } %39, ptr %.sroa.3.0, 1 + ret { i64, ptr } %40 } ; Function Attrs: inlinehint nonlazybind uwtable diff --git a/bench/actix-rs/optimized/3q3jkuswkinqn2en.ll b/bench/actix-rs/optimized/3q3jkuswkinqn2en.ll index b3f158b2379..338e03fc18d 100644 --- a/bench/actix-rs/optimized/3q3jkuswkinqn2en.ll +++ b/bench/actix-rs/optimized/3q3jkuswkinqn2en.ll @@ -2192,21 +2192,20 @@ _ZN4http3uri4path12PathAndQuery4path17h196169f74ad29859E.exit.i.i8.i: ; preds = 55: ; preds = %54 %56 = icmp eq i64 %.0.sroa.speculated.i23.i, %.sroa.4.0.i.i3.i - %57 = sub nsw i64 %.sroa.4.0.i.i3.i, %.0.sroa.speculated.i23.i br i1 %56, label %"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17hf6cdd76e6e44ad9cE.exit.i", label %"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17hf6cdd76e6e44ad9cE.exit.thread.i" "_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i.i": ; preds = %54 - %58 = getelementptr inbounds i8, ptr %.sroa.0.0.i.i4.i, i64 %.0.sroa.speculated.i23.i - %59 = load i8, ptr %58, align 1, !alias.scope !374, !noundef !4 - %60 = icmp sgt i8 %59, -65 - %61 = sub nuw i64 %.sroa.4.0.i.i3.i, %.0.sroa.speculated.i23.i - br i1 %60, label %"_ZN12actix_router4path13Path$LT$T$GT$11unprocessed17h6b9fd6db0e2eb89dE.exit", label %"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17hf6cdd76e6e44ad9cE.exit.thread.i" + %57 = getelementptr inbounds i8, ptr %.sroa.0.0.i.i4.i, i64 %.0.sroa.speculated.i23.i + %58 = load i8, ptr %57, align 1, !alias.scope !374, !noundef !4 + %59 = icmp sgt i8 %58, -65 + %60 = sub nuw i64 %.sroa.4.0.i.i3.i, %.0.sroa.speculated.i23.i + br i1 %59, label %"_ZN12actix_router4path13Path$LT$T$GT$11unprocessed17h6b9fd6db0e2eb89dE.exit", label %"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17hf6cdd76e6e44ad9cE.exit.thread.i" "_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17hf6cdd76e6e44ad9cE.exit.i": ; preds = %55, %"_ZN84_$LT$actix_router..url..Url$u20$as$u20$actix_router..resource_path..ResourcePath$GT$4path17h01636b12c6cfed63E.exit18.i" %.0.sroa.speculated.i23.i11 = phi i64 [ %.0.sroa.speculated.i23.i, %55 ], [ 0, %"_ZN84_$LT$actix_router..url..Url$u20$as$u20$actix_router..resource_path..ResourcePath$GT$4path17h01636b12c6cfed63E.exit18.i" ] - %62 = phi i64 [ %57, %55 ], [ %.sroa.4.0.i.i3.i, %"_ZN84_$LT$actix_router..url..Url$u20$as$u20$actix_router..resource_path..ResourcePath$GT$4path17h01636b12c6cfed63E.exit18.i" ] - %63 = icmp ne ptr %.sroa.0.0.i.i4.i, null - tail call void @llvm.assume(i1 %63) + %61 = phi i64 [ 0, %55 ], [ %.sroa.4.0.i.i3.i, %"_ZN84_$LT$actix_router..url..Url$u20$as$u20$actix_router..resource_path..ResourcePath$GT$4path17h01636b12c6cfed63E.exit18.i" ] + %62 = icmp ne ptr %.sroa.0.0.i.i4.i, null + tail call void @llvm.assume(i1 %62) br label %"_ZN12actix_router4path13Path$LT$T$GT$11unprocessed17h6b9fd6db0e2eb89dE.exit" "_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17hf6cdd76e6e44ad9cE.exit.thread.i": ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i.i", %55 @@ -2216,10 +2215,10 @@ _ZN4http3uri4path12PathAndQuery4path17h196169f74ad29859E.exit.i.i8.i: ; preds = "_ZN12actix_router4path13Path$LT$T$GT$11unprocessed17h6b9fd6db0e2eb89dE.exit": ; preds = %"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17hf6cdd76e6e44ad9cE.exit.i", %_ZN4http3uri3Uri8has_path17hc131679067bcc539E.exit.i.i.i, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i.i" %.sroa.0.0.i.i4.i17 = phi ptr [ %.sroa.0.0.i.i4.i, %"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17hf6cdd76e6e44ad9cE.exit.i" ], [ %.sroa.0.0.i.i4.i, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i.i" ], [ @anon.2c6cd919f5e2d791ec1f2903047be799.4.llvm.10116804099265645101, %_ZN4http3uri3Uri8has_path17hc131679067bcc539E.exit.i.i.i ] %.0.sroa.speculated.i23.i12 = phi i64 [ %.0.sroa.speculated.i23.i11, %"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17hf6cdd76e6e44ad9cE.exit.i" ], [ %.0.sroa.speculated.i23.i, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i.i" ], [ 0, %_ZN4http3uri3Uri8has_path17hc131679067bcc539E.exit.i.i.i ] - %64 = phi i64 [ %62, %"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17hf6cdd76e6e44ad9cE.exit.i" ], [ %61, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i.i" ], [ 0, %_ZN4http3uri3Uri8has_path17hc131679067bcc539E.exit.i.i.i ] - %65 = getelementptr inbounds i8, ptr %.sroa.0.0.i.i4.i17, i64 %.0.sroa.speculated.i23.i12 + %63 = phi i64 [ %61, %"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17hf6cdd76e6e44ad9cE.exit.i" ], [ %60, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i.i" ], [ 0, %_ZN4http3uri3Uri8has_path17hc131679067bcc539E.exit.i.i.i ] + %64 = getelementptr inbounds i8, ptr %.sroa.0.0.i.i4.i17, i64 %.0.sroa.speculated.i23.i12 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) - call void @_ZN11actix_files8path_buf11PathBufWrap10parse_path17hec1a22edd47e4ef5E(ptr noalias nocapture noundef nonnull sret({ i64, [2 x i64] }) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 1 %65, i64 noundef %64, i1 noundef zeroext false) + call void @_ZN11actix_files8path_buf11PathBufWrap10parse_path17hec1a22edd47e4ef5E(ptr noalias nocapture noundef nonnull sret({ i64, [2 x i64] }) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 1 %64, i64 noundef %63, i1 noundef zeroext false) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %4, i64 24, i1 false) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) ret void diff --git a/bench/arrow/optimized/csx_converter.cc.ll b/bench/arrow/optimized/csx_converter.cc.ll index 9b9a41e3e80..82831fe583b 100644 --- a/bench/arrow/optimized/csx_converter.cc.ll +++ b/bench/arrow/optimized/csx_converter.cc.ll @@ -910,17 +910,18 @@ if.then25.i.i: ; preds = %if.else.i.i _ZSt7advanceIPKlmEvRT_T0_.exit.i.i: ; preds = %if.else.i.i %tobool.not.i.i.i.i.i28.i.i = icmp eq ptr %coords.sroa.9.1372.i, %coords.sroa.0.2374.i - br i1 %tobool.not.i.i.i.i.i28.i.i, label %_ZSt4copyIPKlPlET0_T_S4_S3_.exit31.i.i, label %if.then.i.i.i.i.i29.i.i + br i1 %tobool.not.i.i.i.i.i28.i.i, label %if.then.i.i.i.i.i.i.i.i.i279.i, label %_ZSt4copyIPKlPlET0_T_S4_S3_.exit31.i.i -if.then.i.i.i.i.i29.i.i: ; preds = %_ZSt7advanceIPKlmEvRT_T0_.exit.i.i +_ZSt4copyIPKlPlET0_T_S4_S3_.exit31.i.i: ; preds = %_ZSt7advanceIPKlmEvRT_T0_.exit.i.i call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %coords.sroa.0.2374.i, ptr noundef nonnull align 8 dereferenceable(1) %ref.tmp151.i, i64 %sub.ptr.sub.i16.i.i, i1 false) - br label %_ZSt4copyIPKlPlET0_T_S4_S3_.exit31.i.i + %gepdiff439.i = sub nuw nsw i64 16, %sub.ptr.sub.i16.i.i + br label %if.then.i.i.i.i.i.i.i.i.i279.i -_ZSt4copyIPKlPlET0_T_S4_S3_.exit31.i.i: ; preds = %if.then.i.i.i.i.i29.i.i, %_ZSt7advanceIPKlmEvRT_T0_.exit.i.i - %gepdiff150 = sub nuw nsw i64 16, %sub.ptr.sub.i16.i.i +if.then.i.i.i.i.i.i.i.i.i279.i: ; preds = %_ZSt4copyIPKlPlET0_T_S4_S3_.exit31.i.i, %_ZSt7advanceIPKlmEvRT_T0_.exit.i.i + %sub.ptr.sub.i.i.i.i.i.i.i.i.i410.i = phi i64 [ %gepdiff439.i, %_ZSt4copyIPKlPlET0_T_S4_S3_.exit31.i.i ], [ 16, %_ZSt7advanceIPKlmEvRT_T0_.exit.i.i ] %incdec.ptr4.sink.i.i45.i.ptr.i = getelementptr inbounds i8, ptr %ref.tmp151.i, i64 %sub.ptr.sub.i16.i.i - call void @llvm.memmove.p0.p0.i64(ptr align 8 %coords.sroa.9.1372.i, ptr nonnull align 8 %incdec.ptr4.sink.i.i45.i.ptr.i, i64 %gepdiff150, i1 false) - %add.ptr.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %coords.sroa.9.1372.i, i64 %gepdiff150 + call void @llvm.memmove.p0.p0.i64(ptr align 8 %coords.sroa.9.1372.i, ptr nonnull align 8 %incdec.ptr4.sink.i.i45.i.ptr.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i410.i, i1 false) + %add.ptr.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %coords.sroa.9.1372.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i410.i br label %if.end164.i lpad131.i: ; preds = %invoke.cont130.i @@ -991,23 +992,24 @@ if.then25.i299.i: ; preds = %if.else.i293.i _ZSt7advanceIPKlmEvRT_T0_.exit.i308.i: ; preds = %if.else.i293.i %tobool.not.i.i.i.i.i28.i311.i = icmp eq ptr %coords.sroa.9.1372.i, %coords.sroa.0.2374.i - br i1 %tobool.not.i.i.i.i.i28.i311.i, label %_ZSt4copyIPKlPlET0_T_S4_S3_.exit31.i316.i, label %if.then.i.i.i.i.i29.i312.i + br i1 %tobool.not.i.i.i.i.i28.i311.i, label %if.then.i.i.i.i.i.i.i.i.i321.i, label %_ZSt4copyIPKlPlET0_T_S4_S3_.exit31.i316.i -if.then.i.i.i.i.i29.i312.i: ; preds = %_ZSt7advanceIPKlmEvRT_T0_.exit.i308.i +_ZSt4copyIPKlPlET0_T_S4_S3_.exit31.i316.i: ; preds = %_ZSt7advanceIPKlmEvRT_T0_.exit.i308.i call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %coords.sroa.0.2374.i, ptr noundef nonnull align 8 dereferenceable(1) %ref.tmp156.i, i64 %sub.ptr.sub.i16.i296.i, i1 false) - br label %_ZSt4copyIPKlPlET0_T_S4_S3_.exit31.i316.i + %gepdiff.i = sub nuw nsw i64 16, %sub.ptr.sub.i16.i296.i + br label %if.then.i.i.i.i.i.i.i.i.i321.i -_ZSt4copyIPKlPlET0_T_S4_S3_.exit31.i316.i: ; preds = %if.then.i.i.i.i.i29.i312.i, %_ZSt7advanceIPKlmEvRT_T0_.exit.i308.i - %gepdiff = sub nuw nsw i64 16, %sub.ptr.sub.i16.i296.i +if.then.i.i.i.i.i.i.i.i.i321.i: ; preds = %_ZSt4copyIPKlPlET0_T_S4_S3_.exit31.i316.i, %_ZSt7advanceIPKlmEvRT_T0_.exit.i308.i + %sub.ptr.sub.i.i.i.i.i.i.i.i.i319422.i = phi i64 [ %gepdiff.i, %_ZSt4copyIPKlPlET0_T_S4_S3_.exit31.i316.i ], [ 16, %_ZSt7advanceIPKlmEvRT_T0_.exit.i308.i ] %incdec.ptr4.sink.i.i45.i318.ptr.i = getelementptr inbounds i8, ptr %ref.tmp156.i, i64 %sub.ptr.sub.i16.i296.i - call void @llvm.memmove.p0.p0.i64(ptr align 8 %coords.sroa.9.1372.i, ptr nonnull align 8 %incdec.ptr4.sink.i.i45.i318.ptr.i, i64 %gepdiff, i1 false) - %add.ptr.i.i.i.i.i.i.i.i.i323.i = getelementptr inbounds i8, ptr %coords.sroa.9.1372.i, i64 %gepdiff + call void @llvm.memmove.p0.p0.i64(ptr align 8 %coords.sroa.9.1372.i, ptr nonnull align 8 %incdec.ptr4.sink.i.i45.i318.ptr.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i319422.i, i1 false) + %add.ptr.i.i.i.i.i.i.i.i.i323.i = getelementptr inbounds i8, ptr %coords.sroa.9.1372.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i319422.i br label %if.end164.i -if.end164.i: ; preds = %_ZSt4copyIPKlPlET0_T_S4_S3_.exit31.i316.i, %if.then25.i299.i, %_ZNSt12_Vector_baseIlSaIlEE13_M_deallocateEPlm.exit.i333.i, %_ZSt4copyIPKlPlET0_T_S4_S3_.exit31.i.i, %if.then25.i.i, %_ZNSt12_Vector_baseIlSaIlEE13_M_deallocateEPlm.exit.i.i - %coords.sroa.9.2.i = phi ptr [ %add.ptr.i282.i, %_ZNSt12_Vector_baseIlSaIlEE13_M_deallocateEPlm.exit.i.i ], [ %add.ptr.i.i.i.i.i.i.i.i.i.i, %_ZSt4copyIPKlPlET0_T_S4_S3_.exit31.i.i ], [ %add.ptr.i334.i, %_ZNSt12_Vector_baseIlSaIlEE13_M_deallocateEPlm.exit.i333.i ], [ %add.ptr.i.i.i.i.i.i.i.i.i323.i, %_ZSt4copyIPKlPlET0_T_S4_S3_.exit31.i316.i ], [ %add.ptr.i.i.i.i.i.i.i, %if.then25.i.i ], [ %add.ptr.i.i.i.i.i.i302.i, %if.then25.i299.i ] - %coords.sroa.23.2.i = phi ptr [ %add.ptr.i282.i, %_ZNSt12_Vector_baseIlSaIlEE13_M_deallocateEPlm.exit.i.i ], [ %coords.sroa.23.1373.i, %_ZSt4copyIPKlPlET0_T_S4_S3_.exit31.i.i ], [ %add.ptr.i334.i, %_ZNSt12_Vector_baseIlSaIlEE13_M_deallocateEPlm.exit.i333.i ], [ %coords.sroa.23.1373.i, %_ZSt4copyIPKlPlET0_T_S4_S3_.exit31.i316.i ], [ %coords.sroa.23.1373.i, %if.then25.i.i ], [ %coords.sroa.23.1373.i, %if.then25.i299.i ] - %coords.sroa.0.3.i = phi ptr [ %call5.i.i.i.i.i283.i, %_ZNSt12_Vector_baseIlSaIlEE13_M_deallocateEPlm.exit.i.i ], [ %coords.sroa.0.2374.i, %_ZSt4copyIPKlPlET0_T_S4_S3_.exit31.i.i ], [ %call5.i.i.i.i.i336.i, %_ZNSt12_Vector_baseIlSaIlEE13_M_deallocateEPlm.exit.i333.i ], [ %coords.sroa.0.2374.i, %_ZSt4copyIPKlPlET0_T_S4_S3_.exit31.i316.i ], [ %coords.sroa.0.2374.i, %if.then25.i.i ], [ %coords.sroa.0.2374.i, %if.then25.i299.i ] +if.end164.i: ; preds = %if.then.i.i.i.i.i.i.i.i.i321.i, %if.then25.i299.i, %_ZNSt12_Vector_baseIlSaIlEE13_M_deallocateEPlm.exit.i333.i, %if.then.i.i.i.i.i.i.i.i.i279.i, %if.then25.i.i, %_ZNSt12_Vector_baseIlSaIlEE13_M_deallocateEPlm.exit.i.i + %coords.sroa.9.2.i = phi ptr [ %add.ptr.i282.i, %_ZNSt12_Vector_baseIlSaIlEE13_M_deallocateEPlm.exit.i.i ], [ %add.ptr.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i279.i ], [ %add.ptr.i334.i, %_ZNSt12_Vector_baseIlSaIlEE13_M_deallocateEPlm.exit.i333.i ], [ %add.ptr.i.i.i.i.i.i.i.i.i323.i, %if.then.i.i.i.i.i.i.i.i.i321.i ], [ %add.ptr.i.i.i.i.i.i.i, %if.then25.i.i ], [ %add.ptr.i.i.i.i.i.i302.i, %if.then25.i299.i ] + %coords.sroa.23.2.i = phi ptr [ %add.ptr.i282.i, %_ZNSt12_Vector_baseIlSaIlEE13_M_deallocateEPlm.exit.i.i ], [ %coords.sroa.23.1373.i, %if.then.i.i.i.i.i.i.i.i.i279.i ], [ %add.ptr.i334.i, %_ZNSt12_Vector_baseIlSaIlEE13_M_deallocateEPlm.exit.i333.i ], [ %coords.sroa.23.1373.i, %if.then.i.i.i.i.i.i.i.i.i321.i ], [ %coords.sroa.23.1373.i, %if.then25.i.i ], [ %coords.sroa.23.1373.i, %if.then25.i299.i ] + %coords.sroa.0.3.i = phi ptr [ %call5.i.i.i.i.i283.i, %_ZNSt12_Vector_baseIlSaIlEE13_M_deallocateEPlm.exit.i.i ], [ %coords.sroa.0.2374.i, %if.then.i.i.i.i.i.i.i.i.i279.i ], [ %call5.i.i.i.i.i336.i, %_ZNSt12_Vector_baseIlSaIlEE13_M_deallocateEPlm.exit.i333.i ], [ %coords.sroa.0.2374.i, %if.then.i.i.i.i.i.i.i.i.i321.i ], [ %coords.sroa.0.2374.i, %if.then25.i.i ], [ %coords.sroa.0.2374.i, %if.then25.i299.i ] %sub.ptr.lhs.cast.i.i.i.i = ptrtoint ptr %coords.sroa.9.2.i to i64 %sub.ptr.rhs.cast.i.i.i.i = ptrtoint ptr %coords.sroa.0.3.i to i64 %sub.ptr.sub.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i, %sub.ptr.rhs.cast.i.i.i.i diff --git a/bench/arrow/optimized/diff.cc.ll b/bench/arrow/optimized/diff.cc.ll index b6f669c7e30..1f78893c001 100644 --- a/bench/arrow/optimized/diff.cc.ll +++ b/bench/arrow/optimized/diff.cc.ll @@ -5692,10 +5692,8 @@ _ZNSt12_Vector_baseIlSaIlEE13_M_deallocateEPlm.exit.i: ; preds = %if.then.i13.i, if.else.i: ; preds = %invoke.cont21 %_M_finish.i.i = getelementptr inbounds i8, ptr %this, i64 88 %21 = load ptr, ptr %_M_finish.i.i, align 8 - %sub.ptr.lhs.cast.i14.i = ptrtoint ptr %21 to i64 - %sub.ptr.sub.i16.i = sub i64 %sub.ptr.lhs.cast.i14.i, %sub.ptr.rhs.cast.i.i %cmp24.not.i = icmp eq ptr %21, %20 - br i1 %cmp24.not.i, label %_ZSt4copyIPKlPlET0_T_S4_S3_.exit31.i, label %if.then25.i + br i1 %cmp24.not.i, label %_ZSt22__uninitialized_copy_aIPKlPllET0_T_S4_S3_RSaIT1_E.exit.i, label %if.then25.i if.then25.i: ; preds = %if.else.i store i64 %add.i, ptr %20, align 8 @@ -5708,17 +5706,12 @@ invoke.cont.i.i: ; preds = %if.then25.i store ptr %add.ptr.i.i.i.i.i.i, ptr %_M_finish.i.i, align 8 br label %invoke.cont24 -_ZSt4copyIPKlPlET0_T_S4_S3_.exit31.i: ; preds = %if.else.i +_ZSt22__uninitialized_copy_aIPKlPllET0_T_S4_S3_RSaIT1_E.exit.i: ; preds = %if.else.i + %sub.ptr.lhs.cast.i14.i = ptrtoint ptr %21 to i64 + %sub.ptr.sub.i16.i = sub i64 %sub.ptr.lhs.cast.i14.i, %sub.ptr.rhs.cast.i.i %gepdiff = sub nsw i64 8, %sub.ptr.sub.i16.i - %tobool.not.i.i.i.i.i.i.i.i.i = icmp eq i64 %sub.ptr.sub.i16.i, 8 - br i1 %tobool.not.i.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_copy_aIPKlPllET0_T_S4_S3_RSaIT1_E.exit.i, label %if.then.i.i.i.i.i.i.i.i.i - -if.then.i.i.i.i.i.i.i.i.i: ; preds = %_ZSt4copyIPKlPlET0_T_S4_S3_.exit31.i %incdec.ptr4.sink.i.i45.i.ptr = getelementptr inbounds i8, ptr %ref.tmp16, i64 %sub.ptr.sub.i16.i call void @llvm.memmove.p0.p0.i64(ptr align 8 %21, ptr nonnull align 8 %incdec.ptr4.sink.i.i45.i.ptr, i64 %gepdiff, i1 false) - br label %_ZSt22__uninitialized_copy_aIPKlPllET0_T_S4_S3_RSaIT1_E.exit.i - -_ZSt22__uninitialized_copy_aIPKlPllET0_T_S4_S3_RSaIT1_E.exit.i: ; preds = %if.then.i.i.i.i.i.i.i.i.i, %_ZSt4copyIPKlPlET0_T_S4_S3_.exit31.i %add.ptr.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %21, i64 %gepdiff store ptr %add.ptr.i.i.i.i.i.i.i.i.i, ptr %_M_finish.i.i, align 8 br label %invoke.cont24 @@ -20557,8 +20550,8 @@ if.then.i.i.i.i.i: ; preds = %if.then11 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 - %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i - %add.ptr.i.i.i.i.i = getelementptr inbounds i64, ptr %1, i64 %.pre.i.i.i.i.i + %idx.neg.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i + %add.ptr.i.i.i.i.i = getelementptr inbounds i64, ptr %1, i64 %idx.neg.i.i.i.i.i tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i, ptr align 8 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) br label %invoke.cont20 diff --git a/bench/arrow/optimized/reader.cc.ll b/bench/arrow/optimized/reader.cc.ll index 8eb9f67ab8b..987abea41c3 100644 --- a/bench/arrow/optimized/reader.cc.ll +++ b/bench/arrow/optimized/reader.cc.ll @@ -42914,8 +42914,8 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEES6_ET0_T %sub.ptr.lhs.cast.i.i.i.i.i.i32.i = ptrtoint ptr %__i.sroa.0.013.i16.i to i64 %sub.ptr.sub.i.i.i.i.i.i33.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i32.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i.i34.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i.i33.i, 2 - %.pre.i.i.i.i.i.i35.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i34.i - %add.ptr.i.i.i.i.i.i36.i = getelementptr inbounds i32, ptr %add.ptr.i3.i31.i, i64 %.pre.i.i.i.i.i.i35.i + %idx.neg.i.i.i.i.i.i35.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i34.i + %add.ptr.i.i.i.i.i.i36.i = getelementptr inbounds i32, ptr %add.ptr.i3.i31.i, i64 %idx.neg.i.i.i.i.i.i35.i tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %add.ptr.i.i.i.i.i.i36.i, ptr noundef nonnull align 4 dereferenceable(1) %__first.coerce, i64 %sub.ptr.sub.i.i.i.i.i.i33.i, i1 false) br label %for.inc.i21.i @@ -64671,7 +64671,7 @@ if.then.i.i.i.i.i35: ; preds = %if.else49 br label %_ZSt4copyIPiS0_ET0_T_S2_S1_.exit _ZSt4copyIPiS0_ET0_T_S2_S1_.exit: ; preds = %if.else49, %if.then.i.i.i.i.i35 - %sub.ptr.sub.i40.pre-phi = phi i64 [ %sub.ptr.sub.i22, %if.else49 ], [ %.pre47, %if.then.i.i.i.i.i35 ] + %sub.ptr.sub.i40.pre-phi = phi i64 [ 0, %if.else49 ], [ %.pre47, %if.then.i.i.i.i.i35 ] %5 = phi ptr [ %0, %if.else49 ], [ %.pre44, %if.then.i.i.i.i.i35 ] %6 = phi ptr [ %4, %if.else49 ], [ %.pre42, %if.then.i.i.i.i.i35 ] %7 = phi ptr [ %1, %if.else49 ], [ %.pre, %if.then.i.i.i.i.i35 ] @@ -74664,7 +74664,7 @@ invoke.cont: ; preds = %if.then.i.i.i.i.i.i tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 8 dereferenceable(16) %3, i64 16, i1 false) %included_fields.i.i.i.i.i = getelementptr inbounds i8, ptr %call, i64 40 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %included_fields.i.i.i.i.i, i8 0, i64 24, i1 false) - br i1 %cmp.not.i.i.i.i.i.i.i.i, label %invoke.cont.i.i.i.i.i.i.thread, label %cond.true.i.i.i.i.i.i.i.i.i + br i1 %cmp.not.i.i.i.i.i.i.i.i, label %invoke.cont.i.i.i.i.i.i.thread, label %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i.i.i.i.i invoke.cont.i.i.i.i.i.i.thread: ; preds = %invoke.cont %_M_finish.i.i.i.i.i.i.i.i11 = getelementptr inbounds i8, ptr %call, i64 48 @@ -74674,18 +74674,7 @@ invoke.cont.i.i.i.i.i.i.thread: ; preds = %invoke.cont store ptr %add.ptr.i.i.i.i.i.i.i.i12, ptr %_M_end_of_storage.i.i.i.i.i.i.i.i13, align 8 br label %invoke.cont3 -cond.true.i.i.i.i.i.i.i.i.i: ; preds = %invoke.cont - %cmp.i.i.i.i.i.i.i.i.i.i.i = icmp ugt i64 %sub.ptr.sub.i.i.i.i.i.i, 9223372036854775804 - br i1 %cmp.i.i.i.i.i.i.i.i.i.i.i, label %if.then3.i.i.i.i.i.i.i.i.i.i.i, label %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i.i.i.i.i - -if.then3.i.i.i.i.i.i.i.i.i.i.i: ; preds = %cond.true.i.i.i.i.i.i.i.i.i - invoke void @_ZSt28__throw_bad_array_new_lengthv() #34 - to label %.noexc.i.i.i.i unwind label %lpad.i.i.i.i - -.noexc.i.i.i.i: ; preds = %if.then3.i.i.i.i.i.i.i.i.i.i.i - unreachable - -_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i.i.i.i.i: ; preds = %cond.true.i.i.i.i.i.i.i.i.i +_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i.i.i.i.i: ; preds = %invoke.cont %call5.i.i.i.i2.i6.i.i2.i.i.i.i = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %sub.ptr.sub.i.i.i.i.i.i) #35 to label %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i.i unwind label %lpad.i.i.i.i @@ -74699,7 +74688,7 @@ if.then.i.i.i.i.i.i.i.i.i.i.i.i.i.i: ; preds = %_ZNSt16allocator_tr tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %call5.i.i.i.i2.i6.i.i2.i.i.i.i, ptr align 4 %cond.i.i.i.i.i.i.i.i8, i64 %sub.ptr.sub.i.i.i.i.i.i, i1 false) br label %invoke.cont3 -lpad.i.i.i.i: ; preds = %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i.i.i.i.i, %if.then3.i.i.i.i.i.i.i.i.i.i.i +lpad.i.i.i.i: ; preds = %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i.i.i.i.i %10 = landingpad { ptr, i32 } cleanup tail call void @_ZNSt10shared_ptrIN5arrow3ipc25RecordBatchFileReaderImplEED2Ev(ptr noundef nonnull align 8 dereferenceable(120) %fn_.i) #32 diff --git a/bench/arrow/optimized/row_internal.cc.ll b/bench/arrow/optimized/row_internal.cc.ll index c6a03e727b9..5ac7f69000b 100644 --- a/bench/arrow/optimized/row_internal.cc.ll +++ b/bench/arrow/optimized/row_internal.cc.ll @@ -174,10 +174,6 @@ invoke.cont.i.i: ; preds = %if.then5.i _ZNSt6vectorIN5arrow7compute17KeyColumnMetadataESaIS2_EE6resizeEm.exit: ; preds = %if.then.i, %if.else.i, %if.then5.i, %invoke.cont.i.i %4 = load ptr, ptr %_M_finish.i, align 8 %5 = load ptr, ptr %cols, align 8 - %sub.ptr.lhs.cast.i43108 = ptrtoint ptr %4 to i64 - %sub.ptr.rhs.cast.i44109 = ptrtoint ptr %5 to i64 - %sub.ptr.sub.i45110 = sub i64 %sub.ptr.lhs.cast.i43108, %sub.ptr.rhs.cast.i44109 - %sub.ptr.div.i46111 = ashr exact i64 %sub.ptr.sub.i45110, 3 %cmp112.not = icmp eq ptr %4, %5 br i1 %cmp112.not, label %for.end, label %for.body @@ -200,7 +196,7 @@ for.body: ; preds = %_ZNSt6vectorIN5arro br i1 %cmp, label %for.body, label %for.end, !llvm.loop !6 for.end: ; preds = %for.body, %_ZNSt6vectorIN5arrow7compute17KeyColumnMetadataESaIS2_EE6resizeEm.exit - %sub.ptr.div.i46.lcssa = phi i64 [ %sub.ptr.div.i46111, %_ZNSt6vectorIN5arrow7compute17KeyColumnMetadataESaIS2_EE6resizeEm.exit ], [ %sub.ptr.div.i46, %for.body ] + %sub.ptr.div.i46.lcssa = phi i64 [ 0, %_ZNSt6vectorIN5arrow7compute17KeyColumnMetadataESaIS2_EE6resizeEm.exit ], [ %sub.ptr.div.i46, %for.body ] %conv = trunc i64 %sub.ptr.div.i46.lcssa to i32 %column_order = getelementptr inbounds i8, ptr %this, i64 48 %conv7 = and i64 %sub.ptr.div.i46.lcssa, 4294967295 @@ -2373,7 +2369,7 @@ if.then.i.i.i.i.i35: ; preds = %if.else49 br label %_ZSt4copyIPN5arrow7compute17KeyColumnMetadataES3_ET0_T_S5_S4_.exit _ZSt4copyIPN5arrow7compute17KeyColumnMetadataES3_ET0_T_S5_S4_.exit: ; preds = %if.else49, %if.then.i.i.i.i.i35 - %sub.ptr.sub.i40.pre-phi = phi i64 [ %sub.ptr.sub.i22, %if.else49 ], [ %.pre47, %if.then.i.i.i.i.i35 ] + %sub.ptr.sub.i40.pre-phi = phi i64 [ 0, %if.else49 ], [ %.pre47, %if.then.i.i.i.i.i35 ] %5 = phi ptr [ %0, %if.else49 ], [ %.pre44, %if.then.i.i.i.i.i35 ] %6 = phi ptr [ %4, %if.else49 ], [ %.pre42, %if.then.i.i.i.i.i35 ] %7 = phi ptr [ %1, %if.else49 ], [ %.pre, %if.then.i.i.i.i.i35 ] @@ -2484,7 +2480,7 @@ if.then.i.i.i.i.i35: ; preds = %if.else49 br label %_ZSt4copyIPjS0_ET0_T_S2_S1_.exit _ZSt4copyIPjS0_ET0_T_S2_S1_.exit: ; preds = %if.else49, %if.then.i.i.i.i.i35 - %sub.ptr.sub.i40.pre-phi = phi i64 [ %sub.ptr.sub.i22, %if.else49 ], [ %.pre47, %if.then.i.i.i.i.i35 ] + %sub.ptr.sub.i40.pre-phi = phi i64 [ 0, %if.else49 ], [ %.pre47, %if.then.i.i.i.i.i35 ] %5 = phi ptr [ %0, %if.else49 ], [ %.pre44, %if.then.i.i.i.i.i35 ] %6 = phi ptr [ %4, %if.else49 ], [ %.pre42, %if.then.i.i.i.i.i35 ] %7 = phi ptr [ %1, %if.else49 ], [ %.pre, %if.then.i.i.i.i.i35 ] @@ -3734,8 +3730,8 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEES6_ET0_T %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %__i.sroa.0.012 to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i.i.i.i.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 2 - %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i - %add.ptr.i.i.i.i.i = getelementptr inbounds i32, ptr %add.ptr.i2, i64 %.pre.i.i.i.i.i + %idx.neg.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i + %add.ptr.i.i.i.i.i = getelementptr inbounds i32, ptr %add.ptr.i2, i64 %idx.neg.i.i.i.i.i tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %add.ptr.i.i.i.i.i, ptr noundef nonnull align 4 dereferenceable(1) %__first.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) br label %for.inc diff --git a/bench/arrow/optimized/vector_selection_internal.cc.ll b/bench/arrow/optimized/vector_selection_internal.cc.ll index 65264565d52..321ddd761c8 100644 --- a/bench/arrow/optimized/vector_selection_internal.cc.ll +++ b/bench/arrow/optimized/vector_selection_internal.cc.ll @@ -50015,44 +50015,40 @@ invoke.cont.i: ; preds = %_ZNSt16allocator_tr %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %12 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i %tobool.not.i.i.i.i.i.i.i.i.i = icmp eq ptr %13, %12 - br i1 %tobool.not.i.i.i.i.i.i.i.i.i, label %invoke.cont12, label %invoke.cont12.thread + br i1 %tobool.not.i.i.i.i.i.i.i.i.i, label %_ZNSt6vectorIN5arrow14NumericBuilderINS0_9Int32TypeEEESaIS3_EE17_S_check_init_lenEmRKS4_.exit.i.thread, label %invoke.cont12 + +_ZNSt6vectorIN5arrow14NumericBuilderINS0_9Int32TypeEEESaIS3_EE17_S_check_init_lenEmRKS4_.exit.i.thread: ; preds = %invoke.cont.i + %add.ptr.i.i.i.i.i.i.i.i.i41 = getelementptr inbounds i8, ptr %cond.i.i.i.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i + store ptr %add.ptr.i.i.i.i.i.i.i.i.i41, ptr %_M_finish.i.i.i, align 8 + %child_indices_builders_42 = getelementptr inbounds i8, ptr %this, i64 256 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %child_indices_builders_42, i8 0, i64 24, i1 false) + br label %_ZNSt12_Vector_baseIN5arrow14NumericBuilderINS0_9Int32TypeEEESaIS3_EEC2EmRKS4_.exit.i invoke.cont12: ; preds = %invoke.cont.i + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %cond.i.i.i.i, ptr align 1 %12, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i, i1 false) %add.ptr.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i store ptr %add.ptr.i.i.i.i.i.i.i.i.i, ptr %_M_finish.i.i.i, align 8 %cmp.i.i = icmp ugt i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i, 42700796466920258 - br i1 %cmp.i.i, label %if.then.i.i, label %_ZNSt6vectorIN5arrow14NumericBuilderINS0_9Int32TypeEEESaIS3_EE17_S_check_init_lenEmRKS4_.exit.i + br i1 %cmp.i.i, label %if.then.i.i, label %_ZNSt16allocator_traitsISaIN5arrow14NumericBuilderINS0_9Int32TypeEEEEE8allocateERS4_m.exit.i.i.i.i -invoke.cont12.thread: ; preds = %invoke.cont.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %cond.i.i.i.i, ptr align 1 %12, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i, i1 false) - %add.ptr.i.i.i.i.i.i.i.i.i41 = getelementptr inbounds i8, ptr %cond.i.i.i.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i - store ptr %add.ptr.i.i.i.i.i.i.i.i.i41, ptr %_M_finish.i.i.i, align 8 - %cmp.i.i43 = icmp ugt i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i, 42700796466920258 - br i1 %cmp.i.i43, label %if.then.i.i, label %_ZNSt16allocator_traitsISaIN5arrow14NumericBuilderINS0_9Int32TypeEEEEE8allocateERS4_m.exit.i.i.i.i - -if.then.i.i: ; preds = %invoke.cont12.thread, %invoke.cont12 +if.then.i.i: ; preds = %invoke.cont12 invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str) #25 to label %.noexc22 unwind label %lpad15 .noexc22: ; preds = %if.then.i.i unreachable -_ZNSt6vectorIN5arrow14NumericBuilderINS0_9Int32TypeEEESaIS3_EE17_S_check_init_lenEmRKS4_.exit.i: ; preds = %invoke.cont12 +_ZNSt16allocator_traitsISaIN5arrow14NumericBuilderINS0_9Int32TypeEEEEE8allocateERS4_m.exit.i.i.i.i: ; preds = %invoke.cont12 %child_indices_builders_ = getelementptr inbounds i8, ptr %this, i64 256 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %child_indices_builders_, i8 0, i64 24, i1 false) - br label %_ZNSt12_Vector_baseIN5arrow14NumericBuilderINS0_9Int32TypeEEESaIS3_EEC2EmRKS4_.exit.i - -_ZNSt16allocator_traitsISaIN5arrow14NumericBuilderINS0_9Int32TypeEEEEE8allocateERS4_m.exit.i.i.i.i: ; preds = %invoke.cont12.thread - %child_indices_builders_42 = getelementptr inbounds i8, ptr %this, i64 256 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %child_indices_builders_42, i8 0, i64 24, i1 false) %mul.i.i.i.i.i.i = mul nuw nsw i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i, 216 %call5.i.i.i.i2.i.i23 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %mul.i.i.i.i.i.i) #21 to label %_ZNSt12_Vector_baseIN5arrow14NumericBuilderINS0_9Int32TypeEEESaIS3_EEC2EmRKS4_.exit.i unwind label %lpad15 -_ZNSt12_Vector_baseIN5arrow14NumericBuilderINS0_9Int32TypeEEESaIS3_EEC2EmRKS4_.exit.i: ; preds = %_ZNSt6vectorIN5arrow14NumericBuilderINS0_9Int32TypeEEESaIS3_EE17_S_check_init_lenEmRKS4_.exit.i, %_ZNSt16allocator_traitsISaIN5arrow14NumericBuilderINS0_9Int32TypeEEEEE8allocateERS4_m.exit.i.i.i.i - %child_indices_builders_4447 = phi ptr [ %child_indices_builders_, %_ZNSt6vectorIN5arrow14NumericBuilderINS0_9Int32TypeEEESaIS3_EE17_S_check_init_lenEmRKS4_.exit.i ], [ %child_indices_builders_42, %_ZNSt16allocator_traitsISaIN5arrow14NumericBuilderINS0_9Int32TypeEEEEE8allocateERS4_m.exit.i.i.i.i ] - %cond.i.i.i.i17 = phi ptr [ null, %_ZNSt6vectorIN5arrow14NumericBuilderINS0_9Int32TypeEEESaIS3_EE17_S_check_init_lenEmRKS4_.exit.i ], [ %call5.i.i.i.i2.i.i23, %_ZNSt16allocator_traitsISaIN5arrow14NumericBuilderINS0_9Int32TypeEEEEE8allocateERS4_m.exit.i.i.i.i ] - store ptr %cond.i.i.i.i17, ptr %child_indices_builders_4447, align 8 +_ZNSt12_Vector_baseIN5arrow14NumericBuilderINS0_9Int32TypeEEESaIS3_EEC2EmRKS4_.exit.i: ; preds = %_ZNSt6vectorIN5arrow14NumericBuilderINS0_9Int32TypeEEESaIS3_EE17_S_check_init_lenEmRKS4_.exit.i.thread, %_ZNSt16allocator_traitsISaIN5arrow14NumericBuilderINS0_9Int32TypeEEEEE8allocateERS4_m.exit.i.i.i.i + %child_indices_builders_4446 = phi ptr [ %child_indices_builders_, %_ZNSt16allocator_traitsISaIN5arrow14NumericBuilderINS0_9Int32TypeEEEEE8allocateERS4_m.exit.i.i.i.i ], [ %child_indices_builders_42, %_ZNSt6vectorIN5arrow14NumericBuilderINS0_9Int32TypeEEESaIS3_EE17_S_check_init_lenEmRKS4_.exit.i.thread ] + %cond.i.i.i.i17 = phi ptr [ %call5.i.i.i.i2.i.i23, %_ZNSt16allocator_traitsISaIN5arrow14NumericBuilderINS0_9Int32TypeEEEEE8allocateERS4_m.exit.i.i.i.i ], [ null, %_ZNSt6vectorIN5arrow14NumericBuilderINS0_9Int32TypeEEESaIS3_EE17_S_check_init_lenEmRKS4_.exit.i.thread ] + store ptr %cond.i.i.i.i17, ptr %child_indices_builders_4446, align 8 %_M_finish.i.i.i18 = getelementptr inbounds i8, ptr %this, i64 264 store ptr %cond.i.i.i.i17, ptr %_M_finish.i.i.i18, align 8 %add.ptr.i.i.i19 = getelementptr inbounds %"class.arrow::NumericBuilder", ptr %cond.i.i.i.i17, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i @@ -50064,7 +50060,7 @@ _ZNSt12_Vector_baseIN5arrow14NumericBuilderINS0_9Int32TypeEEESaIS3_EEC2EmRKS4_.e lpad.i: ; preds = %_ZNSt12_Vector_baseIN5arrow14NumericBuilderINS0_9Int32TypeEEESaIS3_EEC2EmRKS4_.exit.i %14 = landingpad { ptr, i32 } cleanup - %15 = load ptr, ptr %child_indices_builders_4447, align 8 + %15 = load ptr, ptr %child_indices_builders_4446, align 8 %tobool.not.i.i.i = icmp eq ptr %15, null br i1 %tobool.not.i.i.i, label %ehcleanup, label %if.then.i.i.i @@ -50074,7 +50070,7 @@ if.then.i.i.i: ; preds = %lpad.i invoke.cont16: ; preds = %_ZNSt12_Vector_baseIN5arrow14NumericBuilderINS0_9Int32TypeEEESaIS3_EEC2EmRKS4_.exit.i store ptr %call.i.i.i3.i, ptr %_M_finish.i.i.i18, align 8 - %16 = load ptr, ptr %child_indices_builders_4447, align 8 + %16 = load ptr, ptr %child_indices_builders_4446, align 8 %cmp.i.not39 = icmp eq ptr %16, %call.i.i.i3.i br i1 %cmp.i.not39, label %for.end, label %invoke.cont25.lr.ph @@ -50142,7 +50138,7 @@ lpad.i27: ; preds = %invoke.cont25 %24 = landingpad { ptr, i32 } cleanup call void @_ZN5arrow12ArrayBuilderD2Ev(ptr noundef nonnull align 8 dereferenceable(216) %ref.tmp23) #23 - call void @_ZNSt6vectorIN5arrow14NumericBuilderINS0_9Int32TypeEEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %child_indices_builders_4447) #23 + call void @_ZNSt6vectorIN5arrow14NumericBuilderINS0_9Int32TypeEEESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %child_indices_builders_4446) #23 br label %ehcleanup invoke.cont27: ; preds = %if.else.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i, %call.i.noexc.i diff --git a/bench/assimp/optimized/DXFLoader.cpp.ll b/bench/assimp/optimized/DXFLoader.cpp.ll index 26762bfca18..ffa3a1c0f3d 100644 --- a/bench/assimp/optimized/DXFLoader.cpp.ll +++ b/bench/assimp/optimized/DXFLoader.cpp.ll @@ -5700,19 +5700,11 @@ if.end.i: ; preds = %if.then74 %sub.ptr.sub.i.i203 = sub i64 %sub.ptr.lhs.cast.i.i201, %sub.ptr.rhs.cast.i186 %sub.ptr.div.i.i204 = ashr exact i64 %sub.ptr.sub.i.i203, 2 %cmp3.i205 = icmp ult i64 %sub.ptr.div.i.i204, %add - br i1 %cmp3.i205, label %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i206, label %_ZNSt6vectorIjSaIjEE7reserveEm.exit220 + br i1 %cmp3.i205, label %_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit.i213, label %_ZNSt6vectorIjSaIjEE7reserveEm.exit220 -_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i206: ; preds = %if.end.i +_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit.i213: ; preds = %if.end.i %mul.i.i.i.i210 = shl nuw nsw i64 %add, 2 %call5.i.i.i.i211 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul.i.i.i.i210) #24 - %cmp.i.i.i10.i212 = icmp sgt i64 %sub.ptr.sub.i187, 0 - br i1 %cmp.i.i.i10.i212, label %if.then.i.i.i11.i219, label %_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit.i213 - -if.then.i.i.i11.i219: ; preds = %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i206 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %call5.i.i.i.i211, ptr align 4 %89, i64 %sub.ptr.sub.i187, i1 false) - br label %_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit.i213 - -_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit.i213: ; preds = %if.then.i.i.i11.i219, %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i206 %tobool.not.i.i214 = icmp eq ptr %88, null br i1 %tobool.not.i.i214, label %_ZNSt12_Vector_baseIjSaIjEE13_M_deallocateEPjm.exit.i216, label %if.then.i.i215 diff --git a/bench/assimp/optimized/X3DImporter_Geometry3D.cpp.ll b/bench/assimp/optimized/X3DImporter_Geometry3D.cpp.ll index df46ac81665..8a5df0dcc11 100644 --- a/bench/assimp/optimized/X3DImporter_Geometry3D.cpp.ll +++ b/bench/assimp/optimized/X3DImporter_Geometry3D.cpp.ll @@ -4342,14 +4342,13 @@ if.end40: ; preds = %if.else, %invoke.co br i1 %cmp42, label %if.then.i343, label %if.end55 if.then.i343: ; preds = %if.end40 - %sub.ptr.div.i330 = ashr exact i64 %sub.ptr.sub.i329, 3 - %sub.i344 = sub nuw nsw i64 5, %sub.ptr.div.i330 + %sub.i344 = sub nuw nsw i64 5, %sub.ptr.sub.i329 %_M_end_of_storage.i.i345 = getelementptr inbounds i8, ptr %crossSection, i64 16 %35 = load ptr, ptr %_M_end_of_storage.i.i345, align 8 %sub.ptr.lhs.cast.i9.i346 = ptrtoint ptr %35 to i64 %sub.ptr.sub.i10.i347 = sub i64 %sub.ptr.lhs.cast.i9.i346, %sub.ptr.lhs.cast.i327 %sub.ptr.div.i11.i348 = ashr exact i64 %sub.ptr.sub.i10.i347, 3 - %sub.i.i349 = xor i64 %sub.ptr.div.i330, 1152921504606846975 + %sub.i.i349 = xor i64 %sub.ptr.sub.i329, 1152921504606846975 %cmp6.i.i350 = icmp ule i64 %sub.ptr.div.i11.i348, %sub.i.i349 call void @llvm.assume(i1 %cmp6.i.i350) %cmp8.not.i.i351 = icmp ult i64 %sub.ptr.div.i11.i348, %sub.i344 @@ -8069,7 +8068,7 @@ if.then.i.i.i.i.i35: ; preds = %if.else49 br label %_ZSt4copyIP10aiVector3tIfES2_ET0_T_S4_S3_.exit _ZSt4copyIP10aiVector3tIfES2_ET0_T_S4_S3_.exit: ; preds = %if.else49, %if.then.i.i.i.i.i35 - %sub.ptr.sub.i40.pre-phi = phi i64 [ %sub.ptr.sub.i22, %if.else49 ], [ %.pre47, %if.then.i.i.i.i.i35 ] + %sub.ptr.sub.i40.pre-phi = phi i64 [ 0, %if.else49 ], [ %.pre47, %if.then.i.i.i.i.i35 ] %10 = phi ptr [ %0, %if.else49 ], [ %.pre44, %if.then.i.i.i.i.i35 ] %11 = phi ptr [ %9, %if.else49 ], [ %.pre42, %if.then.i.i.i.i.i35 ] %12 = phi ptr [ %1, %if.else49 ], [ %.pre, %if.then.i.i.i.i.i35 ] @@ -9020,7 +9019,7 @@ if.then.i.i.i.i.i35: ; preds = %if.else49 br label %_ZSt4copyIPiS0_ET0_T_S2_S1_.exit _ZSt4copyIPiS0_ET0_T_S2_S1_.exit: ; preds = %if.else49, %if.then.i.i.i.i.i35 - %sub.ptr.sub.i40.pre-phi = phi i64 [ %sub.ptr.sub.i22, %if.else49 ], [ %.pre47, %if.then.i.i.i.i.i35 ] + %sub.ptr.sub.i40.pre-phi = phi i64 [ 0, %if.else49 ], [ %.pre47, %if.then.i.i.i.i.i35 ] %5 = phi ptr [ %0, %if.else49 ], [ %.pre44, %if.then.i.i.i.i.i35 ] %6 = phi ptr [ %4, %if.else49 ], [ %.pre42, %if.then.i.i.i.i.i35 ] %7 = phi ptr [ %1, %if.else49 ], [ %.pre, %if.then.i.i.i.i.i35 ] diff --git a/bench/assimp/optimized/glTFExporter.cpp.ll b/bench/assimp/optimized/glTFExporter.cpp.ll index ac5c439d77b..ea5fc76b135 100644 --- a/bench/assimp/optimized/glTFExporter.cpp.ll +++ b/bench/assimp/optimized/glTFExporter.cpp.ll @@ -8580,10 +8580,6 @@ if.then45: ; preds = %for.end44 br i1 %cmp.not.i, label %if.else.i, label %if.then.i if.then45.thread: ; preds = %for.body17 - %sub.ptr.lhs.cast.i243 = ptrtoint ptr %14 to i64 - %sub.ptr.rhs.cast.i244 = ptrtoint ptr %15 to i64 - %sub.ptr.sub.i245 = sub i64 %sub.ptr.lhs.cast.i243, %sub.ptr.rhs.cast.i244 - %sub.ptr.div.i246 = ashr exact i64 %sub.ptr.sub.i245, 4 %_M_finish.i.le284 = getelementptr inbounds i8, ptr %13, i64 168 %_M_end_of_storage.i299 = getelementptr inbounds i8, ptr %13, i64 176 %30 = load ptr, ptr %_M_end_of_storage.i299, align 8 @@ -8612,7 +8608,7 @@ if.then.i.i.i: ; preds = %if.else.i _ZNKSt6vectorIN10glTFCommon3RefIN4glTF4NodeEEESaIS4_EE12_M_check_lenEmPKc.exit.i.i: ; preds = %if.then45.thread, %if.else.i %_M_finish.i.le291302324 = phi ptr [ %_M_finish.i.le, %if.else.i ], [ %_M_finish.i.le284, %if.then45.thread ] %.pn = phi ptr [ %26, %if.else.i ], [ %13, %if.then45.thread ] - %sub.ptr.div.i.lcssa289304322 = phi i64 [ %sub.ptr.div.i, %if.else.i ], [ %sub.ptr.div.i246, %if.then45.thread ] + %sub.ptr.div.i.lcssa289304322 = phi i64 [ %sub.ptr.div.i, %if.else.i ], [ 0, %if.then45.thread ] %sub.ptr.sub.i.lcssa288305321 = phi i64 [ %sub.ptr.sub.i, %if.else.i ], [ 0, %if.then45.thread ] %.lcssa287306320 = phi ptr [ %28, %if.else.i ], [ %15, %if.then45.thread ] %.lcssa232286307319 = phi ptr [ %27, %if.else.i ], [ %14, %if.then45.thread ] diff --git a/bench/casadi/optimized/code_generator.cpp.ll b/bench/casadi/optimized/code_generator.cpp.ll index daab672decb..1ee8a18410b 100644 --- a/bench/casadi/optimized/code_generator.cpp.ll +++ b/bench/casadi/optimized/code_generator.cpp.ll @@ -23413,7 +23413,6 @@ _ZNSt8multimapImmSt4lessImESaISt4pairIKmmEEE11equal_rangeERS3_.exit: ; preds = % .lr.ph: ; preds = %_ZNSt8multimapImmSt4lessImESaISt4pairIKmmEEE11equal_rangeERS3_.exit %51 = getelementptr inbounds i8, ptr %0, i64 3072 %52 = load ptr, ptr %51, align 8 - %umax.i = tail call i64 @llvm.umax.i64(i64 %19, i64 1) br i1 %16, label %.lr.ph.split.us, label %.lr.ph.split .lr.ph.split.us: ; preds = %.lr.ph, %_ZN6casadi13CodeGenerator5equalIcEEbRKSt6vectorIT_SaIS3_EES7_.exit.us @@ -23451,7 +23450,7 @@ _ZN6casadi13CodeGenerator5equalIcEEbRKSt6vectorIT_SaIS3_EES7_.exit.us: ; preds = 72: ; preds = %.lr.ph.i %73 = add nuw i64 %.011.i, 1 - %exitcond.not.i = icmp eq i64 %73, %umax.i + %exitcond.not.i = icmp eq i64 %73, %19 br i1 %exitcond.not.i, label %.loopexit, label %.lr.ph.i, !llvm.loop !177 .lr.ph.i: ; preds = %.lr.ph.split, %72 diff --git a/bench/casadi/optimized/slice.cpp.ll b/bench/casadi/optimized/slice.cpp.ll index 83df47cee6a..74de3298580 100644 --- a/bench/casadi/optimized/slice.cpp.ll +++ b/bench/casadi/optimized/slice.cpp.ll @@ -2624,7 +2624,7 @@ define noundef zeroext i1 @_ZN6casadi8is_sliceERKSt6vectorIxSaIxEEb(ptr nocaptur %19 = sub i64 %17, %18 %20 = ashr exact i64 %19, 3 %.not98 = icmp eq ptr %15, %16 - br i1 %.not98, label %._crit_edge, label %.lr.ph + br i1 %.not98, label %.loopexit, label %.lr.ph .lr.ph: ; preds = %2 %.neg = sext i1 %1 to i64 @@ -2824,7 +2824,7 @@ define noundef zeroext i1 @_ZN6casadi8is_sliceERKSt6vectorIxSaIxEEb(ptr nocaptur %exitcond.not = icmp eq i64 %77, %umax107 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph.split, !llvm.loop !38 -._crit_edge: ; preds = %76, %26, %2 +._crit_edge: ; preds = %76, %26 %78 = icmp ult i64 %20, 2 br i1 %78, label %.loopexit, label %79 @@ -2861,8 +2861,8 @@ define noundef zeroext i1 @_ZN6casadi8is_sliceERKSt6vectorIxSaIxEEb(ptr nocaptur %or.cond.not = select i1 %.not, i1 %exitcond110.not, i1 false br i1 %or.cond.not, label %.lr.ph94, label %.loopexit, !llvm.loop !42 -.loopexit: ; preds = %.lr.ph.split, %24, %.lr.ph94, %._crit_edge, %82 - %.035 = phi i1 [ %85, %82 ], [ true, %._crit_edge ], [ %.not, %.lr.ph94 ], [ false, %24 ], [ false, %.lr.ph.split ] +.loopexit: ; preds = %.lr.ph.split, %24, %.lr.ph94, %2, %._crit_edge, %82 + %.035 = phi i1 [ %85, %82 ], [ true, %._crit_edge ], [ true, %2 ], [ %.not, %.lr.ph94 ], [ false, %24 ], [ false, %.lr.ph.split ] ret i1 %.035 96: ; preds = %74, %75 @@ -2893,7 +2893,7 @@ define noundef zeroext i1 @_ZN6casadi9is_slice2ERKSt6vectorIxSaIxEE(ptr nocaptur %17 = sub i64 %15, %16 %18 = ashr exact i64 %17, 3 %.not98.i = icmp eq ptr %13, %14 - br i1 %.not98.i, label %._crit_edge.i, label %.lr.ph.i + br i1 %.not98.i, label %_ZN6casadi8is_sliceERKSt6vectorIxSaIxEEb.exit.thread, label %.lr.ph.i .lr.ph.i: ; preds = %1 %umax107.i = tail call i64 @llvm.umax.i64(i64 %18, i64 1) @@ -2905,14 +2905,14 @@ define noundef zeroext i1 @_ZN6casadi9is_slice2ERKSt6vectorIxSaIxEE(ptr nocaptur %19 = getelementptr inbounds i64, ptr %14, i64 %.05685.i %20 = load i64, ptr %19, align 8 %.not57.i = icmp sgt i64 %20, %.03686.i - br i1 %.not57.i, label %21, label %.preheader103 + br i1 %.not57.i, label %21, label %.lr.ph.preheader 21: ; preds = %.lr.ph.split.i %22 = add nuw i64 %.05685.i, 1 %exitcond.not.i = icmp eq i64 %22, %umax107.i br i1 %exitcond.not.i, label %._crit_edge.i, label %.lr.ph.split.i, !llvm.loop !38 -._crit_edge.i: ; preds = %21, %1 +._crit_edge.i: ; preds = %21 %23 = icmp ult i64 %18, 2 br i1 %23, label %_ZN6casadi8is_sliceERKSt6vectorIxSaIxEEb.exit.thread, label %24 @@ -2925,7 +2925,7 @@ define noundef zeroext i1 @_ZN6casadi9is_slice2ERKSt6vectorIxSaIxEE(ptr nocaptur 29: ; preds = %24 %.not101 = icmp eq i64 %26, %28 - br i1 %.not101, label %.preheader103, label %_ZN6casadi8is_sliceERKSt6vectorIxSaIxEEb.exit.thread + br i1 %.not101, label %.lr.ph.preheader, label %_ZN6casadi8is_sliceERKSt6vectorIxSaIxEEb.exit.thread .lr.ph94.preheader.i: ; preds = %24 %30 = sub nsw i64 %28, %26 @@ -2944,18 +2944,14 @@ define noundef zeroext i1 @_ZN6casadi9is_slice2ERKSt6vectorIxSaIxEE(ptr nocaptur %35 = mul nsw i64 %.092.i, %30 %36 = add nsw i64 %35, %26 %.not.i = icmp eq i64 %34, %36 - br i1 %.not.i, label %31, label %.preheader103 + br i1 %.not.i, label %31, label %.lr.ph.preheader -.preheader103: ; preds = %.lr.ph.split.i, %.lr.ph94.i, %29 - br i1 %.not98.i, label %._crit_edge, label %.lr.ph.preheader - -.lr.ph.preheader: ; preds = %.preheader103 - %umax = tail call i64 @llvm.umax.i64(i64 %18, i64 1) +.lr.ph.preheader: ; preds = %.lr.ph.split.i, %.lr.ph94.i, %29 br label %.lr.ph 37: ; preds = %.lr.ph %38 = add nuw i64 %.073110, 1 - %exitcond.not = icmp eq i64 %38, %umax + %exitcond.not = icmp eq i64 %38, %umax107.i br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !43 .lr.ph: ; preds = %.lr.ph.preheader, %37 @@ -2966,7 +2962,7 @@ define noundef zeroext i1 @_ZN6casadi9is_slice2ERKSt6vectorIxSaIxEE(ptr nocaptur %.not87 = icmp sgt i64 %40, %.072111 br i1 %.not87, label %37, label %_ZN6casadi8is_sliceERKSt6vectorIxSaIxEEb.exit.thread -._crit_edge: ; preds = %37, %.preheader103 +._crit_edge: ; preds = %37 %41 = load i64, ptr %14, align 8 %42 = getelementptr inbounds i8, ptr %14, i64 8 %43 = load i64, ptr %42, align 8 @@ -3182,8 +3178,8 @@ define noundef zeroext i1 @_ZN6casadi9is_slice2ERKSt6vectorIxSaIxEE(ptr nocaptur %.not102 = icmp eq ptr %.sroa.090.0.lcssa, %13 br label %_ZN6casadi8is_sliceERKSt6vectorIxSaIxEEb.exit.thread -_ZN6casadi8is_sliceERKSt6vectorIxSaIxEEb.exit.thread: ; preds = %31, %.lr.ph, %96, %.lr.ph119, %._crit_edge.i, %29, %._crit_edge125 - %.069 = phi i1 [ %.not102, %._crit_edge125 ], [ true, %29 ], [ true, %._crit_edge.i ], [ false, %.lr.ph119 ], [ false, %96 ], [ false, %.lr.ph ], [ true, %31 ] +_ZN6casadi8is_sliceERKSt6vectorIxSaIxEEb.exit.thread: ; preds = %31, %.lr.ph, %96, %.lr.ph119, %1, %._crit_edge.i, %29, %._crit_edge125 + %.069 = phi i1 [ %.not102, %._crit_edge125 ], [ true, %29 ], [ true, %._crit_edge.i ], [ true, %1 ], [ false, %.lr.ph119 ], [ false, %96 ], [ false, %.lr.ph ], [ true, %31 ] ret i1 %.069 102: ; preds = %86, %87 @@ -3352,7 +3348,7 @@ define void @_ZN6casadi9to_slice2ERKSt6vectorIxSaIxEE(ptr dead_on_unwind noalias %57 = sub i64 %55, %56 %58 = ashr exact i64 %57, 3 %.not98.i = icmp eq ptr %53, %54 - br i1 %.not98.i, label %._crit_edge.i, label %.lr.ph.i + br i1 %.not98.i, label %_ZN6casadi8is_sliceERKSt6vectorIxSaIxEEb.exit.thread, label %.lr.ph.i .lr.ph.i: ; preds = %51 %umax107.i = call i64 @llvm.umax.i64(i64 %58, i64 1) @@ -3371,7 +3367,7 @@ define void @_ZN6casadi9to_slice2ERKSt6vectorIxSaIxEE(ptr dead_on_unwind noalias %exitcond.not.i = icmp eq i64 %62, %umax107.i br i1 %exitcond.not.i, label %._crit_edge.i, label %.lr.ph.split.i, !llvm.loop !38 -._crit_edge.i: ; preds = %61, %51 +._crit_edge.i: ; preds = %61 %63 = icmp ult i64 %58, 2 br i1 %63, label %_ZN6casadi8is_sliceERKSt6vectorIxSaIxEEb.exit.thread, label %64 @@ -3405,7 +3401,7 @@ _ZN6casadi8is_sliceERKSt6vectorIxSaIxEEb.exit: ; preds = %64 %.not51 = icmp eq i64 %66, %68 br i1 %.not51, label %_ZN6casadi8is_sliceERKSt6vectorIxSaIxEEb.exit.thread49, label %_ZN6casadi8is_sliceERKSt6vectorIxSaIxEEb.exit.thread -_ZN6casadi8is_sliceERKSt6vectorIxSaIxEEb.exit.thread: ; preds = %70, %._crit_edge.i, %_ZN6casadi8is_sliceERKSt6vectorIxSaIxEEb.exit +_ZN6casadi8is_sliceERKSt6vectorIxSaIxEEb.exit.thread: ; preds = %70, %51, %._crit_edge.i, %_ZN6casadi8is_sliceERKSt6vectorIxSaIxEEb.exit call void @_ZN6casadi8to_sliceERKSt6vectorIxSaIxEEb(ptr dead_on_unwind nonnull writable sret(%"class.casadi::Slice") align 8 %15, ptr noundef nonnull align 8 dereferenceable(24) %1, i1 noundef zeroext false) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 8 dereferenceable(24) %15, i64 24, i1 false) store i64 0, ptr %14, align 8 diff --git a/bench/clamav/optimized/7zIn.c.ll b/bench/clamav/optimized/7zIn.c.ll index 1bb53399aea..371baa197f5 100644 --- a/bench/clamav/optimized/7zIn.c.ll +++ b/bench/clamav/optimized/7zIn.c.ll @@ -3912,33 +3912,28 @@ SzSkeepDataSize.exit230.thread.i.i: ; preds = %.loopexit.i107.i %766 = getelementptr inbounds i8, ptr %344, i64 40 store i32 %765, ptr %766, align 8 %767 = icmp eq i32 %673, %679 - br i1 %767, label %775, label %768 - -768: ; preds = %764 - %769 = zext i32 %765 to i64 - %770 = load ptr, ptr %7, align 8 - %771 = shl nuw nsw i64 %769, 2 - %772 = tail call ptr %770(ptr noundef nonnull %7, i64 noundef %771) #11 - %773 = getelementptr inbounds i8, ptr %344, i64 16 - store ptr %772, ptr %773, align 8 - %774 = icmp eq ptr %772, null - br i1 %774, label %SzGetNextFolderItem.exit.thread.i, label %.thread600.i.i - -775: ; preds = %764 - %776 = getelementptr inbounds i8, ptr %344, i64 16 - store ptr null, ptr %776, align 8 + br i1 %767, label %.preheader320.thread.i.i, label %769 + +.preheader320.thread.i.i: ; preds = %764 + %768 = getelementptr inbounds i8, ptr %344, i64 16 + store ptr null, ptr %768, align 8 br label %SzReadSwitch.exit.i -.thread600.i.i: ; preds = %768 +769: ; preds = %764 + %770 = zext i32 %765 to i64 + %771 = load ptr, ptr %7, align 8 + %772 = shl nuw nsw i64 %770, 2 + %773 = tail call ptr %771(ptr noundef nonnull %7, i64 noundef %772) #11 + %774 = getelementptr inbounds i8, ptr %344, i64 16 + store ptr %773, ptr %774, align 8 + %775 = icmp eq ptr %773, null + br i1 %775, label %SzGetNextFolderItem.exit.thread.i, label %776 + +776: ; preds = %769 %777 = icmp eq i32 %765, 1 - br i1 %777, label %.lr.ph464.i.i, label %.lr.ph459.preheader.i.i - -.lr.ph459.preheader.i.i: ; preds = %.thread600.i.i - %umax592.i.i = tail call i32 @llvm.umax.i32(i32 %765, i32 1) - %wide.trip.count593.i.i = zext i32 %umax592.i.i to i64 - br label %.lr.ph459.i.i + br i1 %777, label %.lr.ph464.i.i, label %.lr.ph459.i.i -.lr.ph464.i.i: ; preds = %.thread600.i.i +.lr.ph464.i.i: ; preds = %776 %778 = load i32, ptr %680, align 4 %.not.i249.i.i = icmp eq i32 %778, 0 %wide.trip.count.i.i.i = zext i32 %778 to i64 @@ -3981,28 +3976,28 @@ SzFolder_FindBindPairForInStream.exit.thread.i.i: ; preds = %SzFolder_FindBindPa br i1 %789, label %SzGetNextFolderItem.exit.thread.i, label %790 790: ; preds = %SzFolder_FindBindPairForInStream.exit.thread.i.i - store i32 %.3343.i.i, ptr %772, align 4 + store i32 %.3343.i.i, ptr %773, align 4 br label %SzReadSwitch.exit.i 791: ; preds = %.lr.ph459.i.i %indvars.iv.next590.i.i = add nuw nsw i64 %indvars.iv589.i.i, 1 - %exitcond594.not.i.i = icmp eq i64 %indvars.iv.next590.i.i, %wide.trip.count593.i.i + %exitcond594.not.i.i = icmp eq i64 %indvars.iv.next590.i.i, %770 br i1 %exitcond594.not.i.i, label %SzReadSwitch.exit.i, label %.lr.ph459.i.i -.lr.ph459.i.i: ; preds = %791, %.lr.ph459.preheader.i.i - %indvars.iv589.i.i = phi i64 [ 0, %.lr.ph459.preheader.i.i ], [ %indvars.iv.next590.i.i, %791 ] - %792 = load ptr, ptr %773, align 8 +.lr.ph459.i.i: ; preds = %776, %791 + %indvars.iv589.i.i = phi i64 [ %indvars.iv.next590.i.i, %791 ], [ 0, %776 ] + %792 = load ptr, ptr %774, align 8 %793 = getelementptr inbounds i32, ptr %792, i64 %indvars.iv589.i.i %794 = tail call fastcc i32 @SzReadNumber32(ptr noundef nonnull %0, ptr noundef %793) %.not153.i.i = icmp eq i32 %794, 0 br i1 %.not153.i.i, label %791, label %SzGetNextFolderItem.exit.thread.i -SzGetNextFolderItem.exit.thread.i: ; preds = %SzFolder_FindBindPairForInStream.exit.thread.i.i, %768, %._crit_edge457.i.i, %683, %._crit_edge452.i.i, %384, %378, %.loopexit.i.i.i, %.lr.ph294.i, %366, %.loopexit332.i.i, %503, %494, %.loopexit.i190.i.i, %458, %.loopexit.i181.i.i, %424, %.loopexit336.i.i, %.lr.ph451.i.i, %.loopexit.i245.i.i, %725, %.loopexit.i236.i.i, %.lr.ph456.i.i, %.lr.ph459.i.i, %787, %.lr.ph.i.i.i, %446, %482, %525, %.lr.ph.i197.i.i, %.loopexit.i107.i, %634, %.loopexit.i219.i.i, %SzReadNumber32.exit213.i.i, %.loopexit.i210.i.i, %564, %552, %549, %713, %749, %584, %617, %654, %.preheader337.thread.i.i - %.0.i108.ph.i = phi i32 [ 4, %.preheader337.thread.i.i ], [ 16, %654 ], [ 16, %617 ], [ 16, %584 ], [ 16, %749 ], [ 16, %713 ], [ 16, %549 ], [ 16, %552 ], [ 16, %634 ], [ 16, %.loopexit.i107.i ], [ 16, %564 ], [ 4, %.loopexit.i210.i.i ], [ 16, %SzReadNumber32.exit213.i.i ], [ 4, %.loopexit.i219.i.i ], [ 16, %.lr.ph.i197.i.i ], [ 16, %525 ], [ 16, %482 ], [ 16, %446 ], [ 16, %.lr.ph.i.i.i ], [ 4, %787 ], [ %794, %.lr.ph459.i.i ], [ 16, %.lr.ph456.i.i ], [ 4, %.loopexit.i236.i.i ], [ 16, %725 ], [ 4, %.loopexit.i245.i.i ], [ 4, %.loopexit336.i.i ], [ 4, %494 ], [ 2, %.loopexit332.i.i ], [ 16, %.lr.ph451.i.i ], [ 16, %503 ], [ 16, %424 ], [ 4, %.loopexit.i181.i.i ], [ 16, %458 ], [ 4, %.loopexit.i190.i.i ], [ 16, %366 ], [ 4, %.loopexit.i.i.i ], [ 16, %.lr.ph294.i ], [ 4, %SzFolder_FindBindPairForInStream.exit.thread.i.i ], [ 2, %768 ], [ 4, %._crit_edge457.i.i ], [ 2, %683 ], [ 4, %._crit_edge452.i.i ], [ 2, %384 ], [ 4, %378 ] +SzGetNextFolderItem.exit.thread.i: ; preds = %SzFolder_FindBindPairForInStream.exit.thread.i.i, %769, %._crit_edge457.i.i, %683, %._crit_edge452.i.i, %384, %378, %.loopexit.i.i.i, %.lr.ph294.i, %366, %.loopexit332.i.i, %503, %494, %.loopexit.i190.i.i, %458, %.loopexit.i181.i.i, %424, %.loopexit336.i.i, %.lr.ph451.i.i, %.loopexit.i245.i.i, %725, %.loopexit.i236.i.i, %.lr.ph456.i.i, %.lr.ph459.i.i, %787, %.lr.ph.i.i.i, %446, %482, %525, %.lr.ph.i197.i.i, %.loopexit.i107.i, %634, %.loopexit.i219.i.i, %SzReadNumber32.exit213.i.i, %.loopexit.i210.i.i, %564, %552, %549, %713, %749, %584, %617, %654, %.preheader337.thread.i.i + %.0.i108.ph.i = phi i32 [ 4, %.preheader337.thread.i.i ], [ 16, %654 ], [ 16, %617 ], [ 16, %584 ], [ 16, %749 ], [ 16, %713 ], [ 16, %549 ], [ 16, %552 ], [ 16, %634 ], [ 16, %.loopexit.i107.i ], [ 16, %564 ], [ 4, %.loopexit.i210.i.i ], [ 16, %SzReadNumber32.exit213.i.i ], [ 4, %.loopexit.i219.i.i ], [ 16, %.lr.ph.i197.i.i ], [ 16, %525 ], [ 16, %482 ], [ 16, %446 ], [ 16, %.lr.ph.i.i.i ], [ 4, %787 ], [ %794, %.lr.ph459.i.i ], [ 16, %.lr.ph456.i.i ], [ 4, %.loopexit.i236.i.i ], [ 16, %725 ], [ 4, %.loopexit.i245.i.i ], [ 4, %.loopexit336.i.i ], [ 4, %494 ], [ 2, %.loopexit332.i.i ], [ 16, %.lr.ph451.i.i ], [ 16, %503 ], [ 16, %424 ], [ 4, %.loopexit.i181.i.i ], [ 16, %458 ], [ 4, %.loopexit.i190.i.i ], [ 16, %366 ], [ 4, %.loopexit.i.i.i ], [ 16, %.lr.ph294.i ], [ 4, %SzFolder_FindBindPairForInStream.exit.thread.i.i ], [ 2, %769 ], [ 4, %._crit_edge457.i.i ], [ 2, %683 ], [ 4, %._crit_edge452.i.i ], [ 2, %384 ], [ 4, %378 ] call void @llvm.lifetime.end.p0(i64 15, ptr nonnull %13) br label %SzReadUnpackInfo.exit.thread -SzReadSwitch.exit.i: ; preds = %791, %790, %775 +SzReadSwitch.exit.i: ; preds = %791, %790, %.preheader320.thread.i.i call void @llvm.lifetime.end.p0(i64 15, ptr nonnull %13) %indvars.iv.next476.i = add nuw nsw i64 %indvars.iv475.i, 1 %795 = load i32, ptr %20, align 4 diff --git a/bench/cmake/optimized/cmFileAPICodemodel.cxx.ll b/bench/cmake/optimized/cmFileAPICodemodel.cxx.ll index 9609909590a..9261bb2dac9 100644 --- a/bench/cmake/optimized/cmFileAPICodemodel.cxx.ll +++ b/bench/cmake/optimized/cmFileAPICodemodel.cxx.ll @@ -4949,34 +4949,34 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPP17cmGeneratorTargetSt6vecto %17 = ptrtoint ptr %.sroa.0.020 to i64 %18 = sub i64 %17, %4 %19 = ashr exact i64 %18, 3 - %.pre.i.i.i.i.i = sub nsw i64 0, %19 - %20 = getelementptr inbounds ptr, ptr %16, i64 %.pre.i.i.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %20, ptr noundef nonnull align 8 dereferenceable(1) %0, i64 %18, i1 false) + %20 = sub nsw i64 0, %19 + %21 = getelementptr inbounds ptr, ptr %16, i64 %20 + tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %21, ptr noundef nonnull align 8 dereferenceable(1) %0, i64 %18, i1 false) br label %"_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPP17cmGeneratorTargetSt6vectorIS3_SaIS3_EEEENS0_5__ops14_Val_comp_iterIZN12_GLOBAL__N_115CodemodelConfig11DumpTargetsEvE3$_0EEEvT_T0_.exit" -.preheader23: ; preds = %"_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN12_GLOBAL__N_115CodemodelConfig11DumpTargetsEvE3$_0EclINS_17__normal_iteratorIPP17cmGeneratorTargetSt6vectorIS9_SaIS9_EEEESE_EEbT_T0_.exit", %29 - %.sroa.03.0.i = phi ptr [ %.sroa.0.0.i, %29 ], [ %.sroa.0.020, %"_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN12_GLOBAL__N_115CodemodelConfig11DumpTargetsEvE3$_0EclINS_17__normal_iteratorIPP17cmGeneratorTargetSt6vectorIS9_SaIS9_EEEESE_EEbT_T0_.exit" ] +.preheader23: ; preds = %"_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN12_GLOBAL__N_115CodemodelConfig11DumpTargetsEvE3$_0EclINS_17__normal_iteratorIPP17cmGeneratorTargetSt6vectorIS9_SaIS9_EEEESE_EEbT_T0_.exit", %30 + %.sroa.03.0.i = phi ptr [ %.sroa.0.0.i, %30 ], [ %.sroa.0.020, %"_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN12_GLOBAL__N_115CodemodelConfig11DumpTargetsEvE3$_0EclINS_17__normal_iteratorIPP17cmGeneratorTargetSt6vectorIS9_SaIS9_EEEESE_EEbT_T0_.exit" ] %.sroa.0.0.i = getelementptr inbounds i8, ptr %.sroa.03.0.i, i64 -8 - %21 = load ptr, ptr %.sroa.0.0.i, align 8 - %22 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK17cmGeneratorTarget7GetNameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(2728) %15) - %23 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK17cmGeneratorTarget7GetNameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(2728) %21) - %24 = invoke noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull align 8 dereferenceable(32) %23) - to label %"_ZN9__gnu_cxx5__ops14_Val_comp_iterIZN12_GLOBAL__N_115CodemodelConfig11DumpTargetsEvE3$_0EclIP17cmGeneratorTargetNS_17__normal_iteratorIPS8_St6vectorIS8_SaIS8_EEEEEEbRT_T0_.exit.i" unwind label %25 + %22 = load ptr, ptr %.sroa.0.0.i, align 8 + %23 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK17cmGeneratorTarget7GetNameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(2728) %15) + %24 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK17cmGeneratorTarget7GetNameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(2728) %22) + %25 = invoke noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(32) %24) + to label %"_ZN9__gnu_cxx5__ops14_Val_comp_iterIZN12_GLOBAL__N_115CodemodelConfig11DumpTargetsEvE3$_0EclIP17cmGeneratorTargetNS_17__normal_iteratorIPS8_St6vectorIS8_SaIS8_EEEEEEbRT_T0_.exit.i" unwind label %26 -25: ; preds = %.preheader23 - %26 = landingpad { ptr, i32 } +26: ; preds = %.preheader23 + %27 = landingpad { ptr, i32 } catch ptr null - %27 = extractvalue { ptr, i32 } %26, 0 - tail call void @__clang_call_terminate(ptr %27) #27 + %28 = extractvalue { ptr, i32 } %27, 0 + tail call void @__clang_call_terminate(ptr %28) #27 unreachable "_ZN9__gnu_cxx5__ops14_Val_comp_iterIZN12_GLOBAL__N_115CodemodelConfig11DumpTargetsEvE3$_0EclIP17cmGeneratorTargetNS_17__normal_iteratorIPS8_St6vectorIS8_SaIS8_EEEEEEbRT_T0_.exit.i": ; preds = %.preheader23 - %28 = icmp slt i32 %24, 0 - br i1 %28, label %29, label %"_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPP17cmGeneratorTargetSt6vectorIS3_SaIS3_EEEENS0_5__ops14_Val_comp_iterIZN12_GLOBAL__N_115CodemodelConfig11DumpTargetsEvE3$_0EEEvT_T0_.exit" + %29 = icmp slt i32 %25, 0 + br i1 %29, label %30, label %"_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPP17cmGeneratorTargetSt6vectorIS3_SaIS3_EEEENS0_5__ops14_Val_comp_iterIZN12_GLOBAL__N_115CodemodelConfig11DumpTargetsEvE3$_0EEEvT_T0_.exit" -29: ; preds = %"_ZN9__gnu_cxx5__ops14_Val_comp_iterIZN12_GLOBAL__N_115CodemodelConfig11DumpTargetsEvE3$_0EclIP17cmGeneratorTargetNS_17__normal_iteratorIPS8_St6vectorIS8_SaIS8_EEEEEEbRT_T0_.exit.i" - %30 = load ptr, ptr %.sroa.0.0.i, align 8 - store ptr %30, ptr %.sroa.03.0.i, align 8 +30: ; preds = %"_ZN9__gnu_cxx5__ops14_Val_comp_iterIZN12_GLOBAL__N_115CodemodelConfig11DumpTargetsEvE3$_0EclIP17cmGeneratorTargetNS_17__normal_iteratorIPS8_St6vectorIS8_SaIS8_EEEEEEbRT_T0_.exit.i" + %31 = load ptr, ptr %.sroa.0.0.i, align 8 + store ptr %31, ptr %.sroa.03.0.i, align 8 br label %.preheader23, !llvm.loop !38 "_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPP17cmGeneratorTargetSt6vectorIS3_SaIS3_EEEENS0_5__ops14_Val_comp_iterIZN12_GLOBAL__N_115CodemodelConfig11DumpTargetsEvE3$_0EEEvT_T0_.exit": ; preds = %"_ZN9__gnu_cxx5__ops14_Val_comp_iterIZN12_GLOBAL__N_115CodemodelConfig11DumpTargetsEvE3$_0EclIP17cmGeneratorTargetNS_17__normal_iteratorIPS8_St6vectorIS8_SaIS8_EEEEEEbRT_T0_.exit.i", %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPP17cmGeneratorTargetSt6vectorIS3_SaIS3_EEEES8_ET0_T_SA_S9_.exit @@ -11044,7 +11044,7 @@ _ZNSt12_Vector_baseIN12_GLOBAL__N_18JBTIndexESaIS1_EE13_M_deallocateEPS1_m.exit. br label %_ZSt4copyIPN12_GLOBAL__N_18JBTIndexES2_ET0_T_S4_S3_.exit.i.i.i.i.i _ZSt4copyIPN12_GLOBAL__N_18JBTIndexES2_ET0_T_S4_S3_.exit.i.i.i.i.i: ; preds = %2023, %2022 - %.pre-phi48.i.i.i.i.i = phi i64 [ %2019, %2022 ], [ %.pre47.i.i.i.i.i, %2023 ] + %.pre-phi48.i.i.i.i.i = phi i64 [ 0, %2022 ], [ %.pre47.i.i.i.i.i, %2023 ] %2024 = phi ptr [ %.val33.i.i.i.i.i, %2022 ], [ %.pre43.i.i.i.i.i, %2023 ] %.val27.i.i.i.i.i = phi ptr [ %.val31.i.i.i.i.i, %2022 ], [ %.val27.pre.i.i.i.i.i, %2023 ] %2025 = phi ptr [ %.val32.i.i.i.i.i, %2022 ], [ %.pre.i.i.i.i.i, %2023 ] @@ -23469,28 +23469,29 @@ _ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKN12_GLOBAL__N_13JB %75 = getelementptr inbounds %"class.(anonymous namespace)::JBT", ptr %73, i64 %74 store ptr %75, ptr %16, align 8 %.not11.i.i.i.i.i60.i.i = icmp eq ptr %1, %17 - br i1 %.not11.i.i.i.i.i60.i.i, label %_ZSt22__uninitialized_move_aIPN12_GLOBAL__N_13JBTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEES9_SaIS8_EET0_T_SC_SB_RT1_.exit66.i.i, label %.lr.ph.i.i.i.i.i61.i.i + br i1 %.not11.i.i.i.i.i60.i.i, label %_ZSt22__uninitialized_move_aIPN12_GLOBAL__N_13JBTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEES9_SaIS8_EET0_T_SC_SB_RT1_.exit66.i.thread.i, label %.lr.ph.i.i.i.i.i61.i.i + +_ZSt22__uninitialized_move_aIPN12_GLOBAL__N_13JBTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEES9_SaIS8_EET0_T_SC_SB_RT1_.exit66.i.thread.i: ; preds = %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKN12_GLOBAL__N_13JBTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESt6vectorISA_SaISA_EEEEPSA_SA_ET0_T_SJ_SI_RSaIT1_E.exit.i.i + %76 = getelementptr inbounds i8, ptr %75, i64 %22 + store ptr %76, ptr %16, align 8 + br label %_ZNSt6vectorIN12_GLOBAL__N_13JBTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaIS8_EE18_M_insert_dispatchIN9__gnu_cxx17__normal_iteratorIPKS8_SA_EEEEvNSD_IPS8_SA_EET_SJ_St12__false_type.exit .lr.ph.i.i.i.i.i61.i.i: ; preds = %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKN12_GLOBAL__N_13JBTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESt6vectorISA_SaISA_EEEEPSA_SA_ET0_T_SJ_SI_RSaIT1_E.exit.i.i, %.lr.ph.i.i.i.i.i61.i.i - %.013.i.i.i.i.i62.i.i = phi ptr [ %80, %.lr.ph.i.i.i.i.i61.i.i ], [ %75, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKN12_GLOBAL__N_13JBTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESt6vectorISA_SaISA_EEEEPSA_SA_ET0_T_SJ_SI_RSaIT1_E.exit.i.i ] - %.sroa.010.012.i.i.i.i.i63.i.i = phi ptr [ %79, %.lr.ph.i.i.i.i.i61.i.i ], [ %8, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKN12_GLOBAL__N_13JBTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESt6vectorISA_SaISA_EEEEPSA_SA_ET0_T_SJ_SI_RSaIT1_E.exit.i.i ] + %.013.i.i.i.i.i62.i.i = phi ptr [ %81, %.lr.ph.i.i.i.i.i61.i.i ], [ %75, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKN12_GLOBAL__N_13JBTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESt6vectorISA_SaISA_EEEEPSA_SA_ET0_T_SJ_SI_RSaIT1_E.exit.i.i ] + %.sroa.010.012.i.i.i.i.i63.i.i = phi ptr [ %80, %.lr.ph.i.i.i.i.i61.i.i ], [ %8, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKN12_GLOBAL__N_13JBTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESt6vectorISA_SaISA_EEEEPSA_SA_ET0_T_SJ_SI_RSaIT1_E.exit.i.i ] tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_(ptr noundef nonnull align 8 dereferenceable(36) %.013.i.i.i.i.i62.i.i, ptr noundef nonnull align 8 dereferenceable(36) %.sroa.010.012.i.i.i.i.i63.i.i) #23 - %76 = getelementptr inbounds i8, ptr %.013.i.i.i.i.i62.i.i, i64 32 - %77 = getelementptr inbounds i8, ptr %.sroa.010.012.i.i.i.i.i63.i.i, i64 32 - %78 = load i32, ptr %77, align 8 - store i32 %78, ptr %76, align 8 - %79 = getelementptr inbounds i8, ptr %.sroa.010.012.i.i.i.i.i63.i.i, i64 40 - %80 = getelementptr inbounds i8, ptr %.013.i.i.i.i.i62.i.i, i64 40 - %.not.i.i.i.i.i64.i.i = icmp eq ptr %79, %17 - br i1 %.not.i.i.i.i.i64.i.i, label %_ZSt22__uninitialized_move_aIPN12_GLOBAL__N_13JBTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEES9_SaIS8_EET0_T_SC_SB_RT1_.exit66.loopexit.i.i, label %.lr.ph.i.i.i.i.i61.i.i, !llvm.loop !419 - -_ZSt22__uninitialized_move_aIPN12_GLOBAL__N_13JBTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEES9_SaIS8_EET0_T_SC_SB_RT1_.exit66.loopexit.i.i: ; preds = %.lr.ph.i.i.i.i.i61.i.i - %.pre126.i.i = load ptr, ptr %16, align 8 - br label %_ZSt22__uninitialized_move_aIPN12_GLOBAL__N_13JBTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEES9_SaIS8_EET0_T_SC_SB_RT1_.exit66.i.i + %77 = getelementptr inbounds i8, ptr %.013.i.i.i.i.i62.i.i, i64 32 + %78 = getelementptr inbounds i8, ptr %.sroa.010.012.i.i.i.i.i63.i.i, i64 32 + %79 = load i32, ptr %78, align 8 + store i32 %79, ptr %77, align 8 + %80 = getelementptr inbounds i8, ptr %.sroa.010.012.i.i.i.i.i63.i.i, i64 40 + %81 = getelementptr inbounds i8, ptr %.013.i.i.i.i.i62.i.i, i64 40 + %.not.i.i.i.i.i64.i.i = icmp eq ptr %80, %17 + br i1 %.not.i.i.i.i.i64.i.i, label %_ZSt22__uninitialized_move_aIPN12_GLOBAL__N_13JBTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEES9_SaIS8_EET0_T_SC_SB_RT1_.exit66.i.i, label %.lr.ph.i.i.i.i.i61.i.i, !llvm.loop !419 -_ZSt22__uninitialized_move_aIPN12_GLOBAL__N_13JBTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEES9_SaIS8_EET0_T_SC_SB_RT1_.exit66.i.i: ; preds = %_ZSt22__uninitialized_move_aIPN12_GLOBAL__N_13JBTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEES9_SaIS8_EET0_T_SC_SB_RT1_.exit66.loopexit.i.i, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKN12_GLOBAL__N_13JBTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESt6vectorISA_SaISA_EEEEPSA_SA_ET0_T_SJ_SI_RSaIT1_E.exit.i.i - %81 = phi ptr [ %.pre126.i.i, %_ZSt22__uninitialized_move_aIPN12_GLOBAL__N_13JBTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEES9_SaIS8_EET0_T_SC_SB_RT1_.exit66.loopexit.i.i ], [ %75, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKN12_GLOBAL__N_13JBTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESt6vectorISA_SaISA_EEEEPSA_SA_ET0_T_SJ_SI_RSaIT1_E.exit.i.i ] - %82 = getelementptr inbounds i8, ptr %81, i64 %22 +_ZSt22__uninitialized_move_aIPN12_GLOBAL__N_13JBTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEES9_SaIS8_EET0_T_SC_SB_RT1_.exit66.i.i: ; preds = %.lr.ph.i.i.i.i.i61.i.i + %.pre126.i.i = load ptr, ptr %16, align 8 + %82 = getelementptr inbounds i8, ptr %.pre126.i.i, i64 %22 store ptr %82, ptr %16, align 8 %83 = icmp sgt i64 %22, 0 br i1 %83, label %.lr.ph.preheader.i.i.i.i.i68.i.i, label %_ZNSt6vectorIN12_GLOBAL__N_13JBTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaIS8_EE18_M_insert_dispatchIN9__gnu_cxx17__normal_iteratorIPKS8_SA_EEEEvNSD_IPS8_SA_EET_SJ_St12__false_type.exit @@ -23697,7 +23698,7 @@ _ZNSt12_Vector_baseIN12_GLOBAL__N_13JBTINSt7__cxx1112basic_stringIcSt11char_trai 146: ; preds = %_ZNSt12_Vector_baseIN12_GLOBAL__N_13JBTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaIS8_EE13_M_deallocateEPS8_m.exit106.i.i unreachable -_ZNSt6vectorIN12_GLOBAL__N_13JBTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaIS8_EE18_M_insert_dispatchIN9__gnu_cxx17__normal_iteratorIPKS8_SA_EEEEvNSD_IPS8_SA_EET_SJ_St12__false_type.exit: ; preds = %.lr.ph.i.i.i.i.i69.i.i, %.lr.ph.i.i.i.i.i59.i.i, %4, %_ZSt13move_backwardIPN12_GLOBAL__N_13JBTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEES9_ET0_T_SB_SA_.exit.i.i, %_ZSt22__uninitialized_move_aIPN12_GLOBAL__N_13JBTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEES9_SaIS8_EET0_T_SC_SB_RT1_.exit66.i.i, %_ZNSt12_Vector_baseIN12_GLOBAL__N_13JBTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaIS8_EE13_M_deallocateEPS8_m.exit.i.i +_ZNSt6vectorIN12_GLOBAL__N_13JBTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaIS8_EE18_M_insert_dispatchIN9__gnu_cxx17__normal_iteratorIPKS8_SA_EEEEvNSD_IPS8_SA_EET_SJ_St12__false_type.exit: ; preds = %.lr.ph.i.i.i.i.i69.i.i, %.lr.ph.i.i.i.i.i59.i.i, %4, %_ZSt13move_backwardIPN12_GLOBAL__N_13JBTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEES9_ET0_T_SB_SA_.exit.i.i, %_ZSt22__uninitialized_move_aIPN12_GLOBAL__N_13JBTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEES9_SaIS8_EET0_T_SC_SB_RT1_.exit66.i.thread.i, %_ZSt22__uninitialized_move_aIPN12_GLOBAL__N_13JBTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEES9_SaIS8_EET0_T_SC_SB_RT1_.exit66.i.i, %_ZNSt12_Vector_baseIN12_GLOBAL__N_13JBTINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaIS8_EE13_M_deallocateEPS8_m.exit.i.i ret void } @@ -23891,33 +23892,34 @@ _ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKN12_GLOBAL__N_111C %91 = getelementptr inbounds %"struct.(anonymous namespace)::CompileData::IncludeEntry", ptr %89, i64 %90 store ptr %91, ptr %16, align 8 %.not11.i.i.i.i.i60.i.i = icmp eq ptr %1, %17 - br i1 %.not11.i.i.i.i.i60.i.i, label %_ZSt22__uninitialized_move_aIPN12_GLOBAL__N_111CompileData12IncludeEntryES3_SaIS2_EET0_T_S6_S5_RT1_.exit66.i.i, label %.lr.ph.i.i.i.i.i61.i.i + br i1 %.not11.i.i.i.i.i60.i.i, label %_ZSt22__uninitialized_move_aIPN12_GLOBAL__N_111CompileData12IncludeEntryES3_SaIS2_EET0_T_S6_S5_RT1_.exit66.i.thread.i, label %.lr.ph.i.i.i.i.i61.i.i + +_ZSt22__uninitialized_move_aIPN12_GLOBAL__N_111CompileData12IncludeEntryES3_SaIS2_EET0_T_S6_S5_RT1_.exit66.i.thread.i: ; preds = %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKN12_GLOBAL__N_111CompileData12IncludeEntryESt6vectorIS4_SaIS4_EEEEPS4_S4_ET0_T_SD_SC_RSaIT1_E.exit.i.i + %92 = getelementptr inbounds i8, ptr %91, i64 %22 + store ptr %92, ptr %16, align 8 + br label %_ZNSt6vectorIN12_GLOBAL__N_111CompileData12IncludeEntryESaIS2_EE18_M_insert_dispatchIN9__gnu_cxx17__normal_iteratorIPKS2_S4_EEEEvNS7_IPS2_S4_EET_SD_St12__false_type.exit .lr.ph.i.i.i.i.i61.i.i: ; preds = %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKN12_GLOBAL__N_111CompileData12IncludeEntryESt6vectorIS4_SaIS4_EEEEPS4_S4_ET0_T_SD_SC_RSaIT1_E.exit.i.i, %.lr.ph.i.i.i.i.i61.i.i - %.013.i.i.i.i.i62.i.i = phi ptr [ %100, %.lr.ph.i.i.i.i.i61.i.i ], [ %91, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKN12_GLOBAL__N_111CompileData12IncludeEntryESt6vectorIS4_SaIS4_EEEEPS4_S4_ET0_T_SD_SC_RSaIT1_E.exit.i.i ] - %.sroa.010.012.i.i.i.i.i63.i.i = phi ptr [ %99, %.lr.ph.i.i.i.i.i61.i.i ], [ %8, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKN12_GLOBAL__N_111CompileData12IncludeEntryESt6vectorIS4_SaIS4_EEEEPS4_S4_ET0_T_SD_SC_RSaIT1_E.exit.i.i ] + %.013.i.i.i.i.i62.i.i = phi ptr [ %101, %.lr.ph.i.i.i.i.i61.i.i ], [ %91, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKN12_GLOBAL__N_111CompileData12IncludeEntryESt6vectorIS4_SaIS4_EEEEPS4_S4_ET0_T_SD_SC_RSaIT1_E.exit.i.i ] + %.sroa.010.012.i.i.i.i.i63.i.i = phi ptr [ %100, %.lr.ph.i.i.i.i.i61.i.i ], [ %8, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKN12_GLOBAL__N_111CompileData12IncludeEntryESt6vectorIS4_SaIS4_EEEEPS4_S4_ET0_T_SD_SC_RSaIT1_E.exit.i.i ] tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_(ptr noundef nonnull align 8 dereferenceable(41) %.013.i.i.i.i.i62.i.i, ptr noundef nonnull align 8 dereferenceable(41) %.sroa.010.012.i.i.i.i.i63.i.i) #23 - %92 = getelementptr inbounds i8, ptr %.013.i.i.i.i.i62.i.i, i64 32 - %93 = getelementptr inbounds i8, ptr %.sroa.010.012.i.i.i.i.i63.i.i, i64 32 - %94 = load i32, ptr %93, align 8 - store i32 %94, ptr %92, align 8 - %95 = getelementptr inbounds i8, ptr %.013.i.i.i.i.i62.i.i, i64 40 - %96 = getelementptr inbounds i8, ptr %.sroa.010.012.i.i.i.i.i63.i.i, i64 40 - %97 = load i8, ptr %96, align 8 - %98 = and i8 %97, 1 - store i8 %98, ptr %95, align 8 - %99 = getelementptr inbounds i8, ptr %.sroa.010.012.i.i.i.i.i63.i.i, i64 48 - %100 = getelementptr inbounds i8, ptr %.013.i.i.i.i.i62.i.i, i64 48 - %.not.i.i.i.i.i64.i.i = icmp eq ptr %99, %17 - br i1 %.not.i.i.i.i.i64.i.i, label %_ZSt22__uninitialized_move_aIPN12_GLOBAL__N_111CompileData12IncludeEntryES3_SaIS2_EET0_T_S6_S5_RT1_.exit66.loopexit.i.i, label %.lr.ph.i.i.i.i.i61.i.i, !llvm.loop !421 - -_ZSt22__uninitialized_move_aIPN12_GLOBAL__N_111CompileData12IncludeEntryES3_SaIS2_EET0_T_S6_S5_RT1_.exit66.loopexit.i.i: ; preds = %.lr.ph.i.i.i.i.i61.i.i + %93 = getelementptr inbounds i8, ptr %.013.i.i.i.i.i62.i.i, i64 32 + %94 = getelementptr inbounds i8, ptr %.sroa.010.012.i.i.i.i.i63.i.i, i64 32 + %95 = load i32, ptr %94, align 8 + store i32 %95, ptr %93, align 8 + %96 = getelementptr inbounds i8, ptr %.013.i.i.i.i.i62.i.i, i64 40 + %97 = getelementptr inbounds i8, ptr %.sroa.010.012.i.i.i.i.i63.i.i, i64 40 + %98 = load i8, ptr %97, align 8 + %99 = and i8 %98, 1 + store i8 %99, ptr %96, align 8 + %100 = getelementptr inbounds i8, ptr %.sroa.010.012.i.i.i.i.i63.i.i, i64 48 + %101 = getelementptr inbounds i8, ptr %.013.i.i.i.i.i62.i.i, i64 48 + %.not.i.i.i.i.i64.i.i = icmp eq ptr %100, %17 + br i1 %.not.i.i.i.i.i64.i.i, label %_ZSt22__uninitialized_move_aIPN12_GLOBAL__N_111CompileData12IncludeEntryES3_SaIS2_EET0_T_S6_S5_RT1_.exit66.i.i, label %.lr.ph.i.i.i.i.i61.i.i, !llvm.loop !421 + +_ZSt22__uninitialized_move_aIPN12_GLOBAL__N_111CompileData12IncludeEntryES3_SaIS2_EET0_T_S6_S5_RT1_.exit66.i.i: ; preds = %.lr.ph.i.i.i.i.i61.i.i %.pre126.i.i = load ptr, ptr %16, align 8 - br label %_ZSt22__uninitialized_move_aIPN12_GLOBAL__N_111CompileData12IncludeEntryES3_SaIS2_EET0_T_S6_S5_RT1_.exit66.i.i - -_ZSt22__uninitialized_move_aIPN12_GLOBAL__N_111CompileData12IncludeEntryES3_SaIS2_EET0_T_S6_S5_RT1_.exit66.i.i: ; preds = %_ZSt22__uninitialized_move_aIPN12_GLOBAL__N_111CompileData12IncludeEntryES3_SaIS2_EET0_T_S6_S5_RT1_.exit66.loopexit.i.i, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKN12_GLOBAL__N_111CompileData12IncludeEntryESt6vectorIS4_SaIS4_EEEEPS4_S4_ET0_T_SD_SC_RSaIT1_E.exit.i.i - %101 = phi ptr [ %.pre126.i.i, %_ZSt22__uninitialized_move_aIPN12_GLOBAL__N_111CompileData12IncludeEntryES3_SaIS2_EET0_T_S6_S5_RT1_.exit66.loopexit.i.i ], [ %91, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKN12_GLOBAL__N_111CompileData12IncludeEntryESt6vectorIS4_SaIS4_EEEEPS4_S4_ET0_T_SD_SC_RSaIT1_E.exit.i.i ] - %102 = getelementptr inbounds i8, ptr %101, i64 %22 + %102 = getelementptr inbounds i8, ptr %.pre126.i.i, i64 %22 store ptr %102, ptr %16, align 8 %103 = icmp sgt i64 %22, 0 br i1 %103, label %.lr.ph.preheader.i.i.i.i.i68.i.i, label %_ZNSt6vectorIN12_GLOBAL__N_111CompileData12IncludeEntryESaIS2_EE18_M_insert_dispatchIN9__gnu_cxx17__normal_iteratorIPKS2_S4_EEEEvNS7_IPS2_S4_EET_SD_St12__false_type.exit @@ -24144,7 +24146,7 @@ _ZNSt12_Vector_baseIN12_GLOBAL__N_111CompileData12IncludeEntryESaIS2_EE13_M_deal 182: ; preds = %_ZNSt12_Vector_baseIN12_GLOBAL__N_111CompileData12IncludeEntryESaIS2_EE13_M_deallocateEPS2_m.exit106.i.i unreachable -_ZNSt6vectorIN12_GLOBAL__N_111CompileData12IncludeEntryESaIS2_EE18_M_insert_dispatchIN9__gnu_cxx17__normal_iteratorIPKS2_S4_EEEEvNS7_IPS2_S4_EET_SD_St12__false_type.exit: ; preds = %.lr.ph.i.i.i.i.i69.i.i, %.lr.ph.i.i.i.i.i59.i.i, %4, %_ZSt13move_backwardIPN12_GLOBAL__N_111CompileData12IncludeEntryES3_ET0_T_S5_S4_.exit.i.i, %_ZSt22__uninitialized_move_aIPN12_GLOBAL__N_111CompileData12IncludeEntryES3_SaIS2_EET0_T_S6_S5_RT1_.exit66.i.i, %_ZNSt12_Vector_baseIN12_GLOBAL__N_111CompileData12IncludeEntryESaIS2_EE13_M_deallocateEPS2_m.exit.i.i +_ZNSt6vectorIN12_GLOBAL__N_111CompileData12IncludeEntryESaIS2_EE18_M_insert_dispatchIN9__gnu_cxx17__normal_iteratorIPKS2_S4_EEEEvNS7_IPS2_S4_EET_SD_St12__false_type.exit: ; preds = %.lr.ph.i.i.i.i.i69.i.i, %.lr.ph.i.i.i.i.i59.i.i, %4, %_ZSt13move_backwardIPN12_GLOBAL__N_111CompileData12IncludeEntryES3_ET0_T_S5_S4_.exit.i.i, %_ZSt22__uninitialized_move_aIPN12_GLOBAL__N_111CompileData12IncludeEntryES3_SaIS2_EET0_T_S6_S5_RT1_.exit66.i.thread.i, %_ZSt22__uninitialized_move_aIPN12_GLOBAL__N_111CompileData12IncludeEntryES3_SaIS2_EET0_T_S6_S5_RT1_.exit66.i.i, %_ZNSt12_Vector_baseIN12_GLOBAL__N_111CompileData12IncludeEntryESaIS2_EE13_M_deallocateEPS2_m.exit.i.i ret void } diff --git a/bench/coreutils-rs/optimized/1xgh31va70j84rdd.ll b/bench/coreutils-rs/optimized/1xgh31va70j84rdd.ll index 13bb9f1e285..84149bd1fd7 100644 --- a/bench/coreutils-rs/optimized/1xgh31va70j84rdd.ll +++ b/bench/coreutils-rs/optimized/1xgh31va70j84rdd.ll @@ -2061,7 +2061,7 @@ define hidden void @_ZN7uu_tail5parse14parse_obsolete17h8da649a095194251E(ptr no i8 43, label %"_ZN55_$LT$$RF$str$u20$as$u20$core..str..pattern..Pattern$GT$15strip_prefix_of17h9c06adab15bb11ffE.exit121" ] -17: ; preds = %169, %171, %173, %172, %94, %.thread, %14 +17: ; preds = %171, %173, %175, %174, %94, %.thread, %14 ret void "_ZN55_$LT$$RF$str$u20$as$u20$core..str..pattern..Pattern$GT$15strip_prefix_of17h9c06adab15bb11ffE.exit121": ; preds = %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h74eabfca366c6e30E.exit.i", %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h74eabfca366c6e30E.exit.i" @@ -2187,8 +2187,11 @@ define hidden void @_ZN7uu_tail5parse14parse_obsolete17h8da649a095194251E(ptr no 83: ; preds = %80 %84 = icmp eq i64 %66, %.pn177 - %85 = sub i64 %.pn177, %66 - br i1 %84, label %.thread157, label %95 + br i1 %84, label %.thread157.thread, label %95 + +.thread157.thread: ; preds = %83 + %85 = getelementptr inbounds i8, ptr %.sroa.027.0, i64 %66 + br label %"_ZN55_$LT$$RF$str$u20$as$u20$core..str..pattern..Pattern$GT$15strip_prefix_of17h9c06adab15bb11ffE.exit148" "_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i129": ; preds = %80 %86 = getelementptr inbounds i8, ptr %.sroa.027.0, i64 %66 @@ -2218,9 +2221,9 @@ define hidden void @_ZN7uu_tail5parse14parse_obsolete17h8da649a095194251E(ptr no tail call void @_ZN4core3str16slice_error_fail17he2ff12236fb0c056E(ptr noalias noundef nonnull readonly align 1 %.sroa.027.0, i64 noundef %.pn177, i64 noundef %66, i64 noundef %.pn177, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.bb5ddca35a51115322a2332cb7727d51.49) #25 unreachable -.thread157: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$4find17h27b429eb5955bd84E.exit", %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i129", %83 - %.0106160 = phi i64 [ %82, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i129" ], [ %82, %83 ], [ 10, %"_ZN4core3str21_$LT$impl$u20$str$GT$4find17h27b429eb5955bd84E.exit" ] - %96 = phi i64 [ %89, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i129" ], [ %85, %83 ], [ %.pn177, %"_ZN4core3str21_$LT$impl$u20$str$GT$4find17h27b429eb5955bd84E.exit" ] +.thread157: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$4find17h27b429eb5955bd84E.exit", %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i129" + %.0106160 = phi i64 [ %82, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i129" ], [ 10, %"_ZN4core3str21_$LT$impl$u20$str$GT$4find17h27b429eb5955bd84E.exit" ] + %96 = phi i64 [ %89, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i129" ], [ %.pn177, %"_ZN4core3str21_$LT$impl$u20$str$GT$4find17h27b429eb5955bd84E.exit" ] %97 = getelementptr inbounds i8, ptr %.sroa.027.0, i64 %66 %.not.i.i130 = icmp eq i64 %96, 0 br i1 %.not.i.i130, label %"_ZN55_$LT$$RF$str$u20$as$u20$core..str..pattern..Pattern$GT$15strip_prefix_of17h9c06adab15bb11ffE.exit148", label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h74eabfca366c6e30E.exit.i131" @@ -2242,6 +2245,7 @@ define hidden void @_ZN7uu_tail5parse14parse_obsolete17h8da649a095194251E(ptr no br i1 %103, label %159, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h74eabfca366c6e30E.exit.i144" 104: ; preds = %159, %"_ZN55_$LT$$RF$str$u20$as$u20$core..str..pattern..Pattern$GT$15strip_prefix_of17h9c06adab15bb11ffE.exit148", %99 + %.0106160200 = phi i64 [ %.0106160, %99 ], [ %.0106160, %159 ], [ %.0106160201, %"_ZN55_$LT$$RF$str$u20$as$u20$core..str..pattern..Pattern$GT$15strip_prefix_of17h9c06adab15bb11ffE.exit148" ] %.sroa.027.1 = phi ptr [ %100, %99 ], [ %160, %159 ], [ %.sroa.027.3, %"_ZN55_$LT$$RF$str$u20$as$u20$core..str..pattern..Pattern$GT$15strip_prefix_of17h9c06adab15bb11ffE.exit148" ] %.sroa.21.1 = phi i64 [ %101, %99 ], [ %102, %159 ], [ %.sroa.21.3, %"_ZN55_$LT$$RF$str$u20$as$u20$core..str..pattern..Pattern$GT$15strip_prefix_of17h9c06adab15bb11ffE.exit148" ] %.0103 = phi i32 [ 108, %99 ], [ 99, %159 ], [ %.2, %"_ZN55_$LT$$RF$str$u20$as$u20$core..str..pattern..Pattern$GT$15strip_prefix_of17h9c06adab15bb11ffE.exit148" ] @@ -2279,7 +2283,7 @@ define hidden void @_ZN7uu_tail5parse14parse_obsolete17h8da649a095194251E(ptr no 118: ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread.i", %"_ZN52_$LT$char$u20$as$u20$core..str..pattern..Pattern$GT$15is_contained_in17h8ed495e3c6eb4d76E.exit" %119 = phi ptr [ %157, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread.i" ], [ %.sroa.027.1, %"_ZN52_$LT$char$u20$as$u20$core..str..pattern..Pattern$GT$15is_contained_in17h8ed495e3c6eb4d76E.exit" ] %120 = icmp eq ptr %119, %117 - br i1 %120, label %165, label %121 + br i1 %120, label %167, label %121 121: ; preds = %118 %122 = getelementptr inbounds i8, ptr %119, i64 1 @@ -2332,13 +2336,13 @@ define hidden void @_ZN7uu_tail5parse14parse_obsolete17h8da649a095194251E(ptr no %155 = or disjoint i32 %152, %154 %156 = or disjoint i32 %155, %151 %.not.not.i = icmp eq i32 %156, 1114112 - br i1 %.not.not.i, label %165, label %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread.i" + br i1 %.not.not.i, label %167, label %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread.i" "_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread.i": ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h0a659e0ee6351131E.exit15.i.i.i", %135, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h0a659e0ee6351131E.exit13.i.i.i" %157 = phi ptr [ %148, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i" ], [ %122, %135 ], [ %138, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h0a659e0ee6351131E.exit15.i.i.i" ], [ %128, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h0a659e0ee6351131E.exit13.i.i.i" ] %158 = phi i32 [ %156, %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i" ], [ %136, %135 ], [ %145, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h0a659e0ee6351131E.exit15.i.i.i" ], [ %133, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h0a659e0ee6351131E.exit13.i.i.i" ] %.not.i = icmp eq i32 %158, 102 - br i1 %.not.i, label %118, label %164 + br i1 %.not.i, label %118, label %166 159: ; preds = %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h74eabfca366c6e30E.exit.i137" %160 = getelementptr inbounds i8, ptr %97, i64 1 @@ -2350,53 +2354,56 @@ define hidden void @_ZN7uu_tail5parse14parse_obsolete17h8da649a095194251E(ptr no %spec.select.i147 = select i1 %161, ptr %162, ptr null br label %"_ZN55_$LT$$RF$str$u20$as$u20$core..str..pattern..Pattern$GT$15strip_prefix_of17h9c06adab15bb11ffE.exit148" -"_ZN55_$LT$$RF$str$u20$as$u20$core..str..pattern..Pattern$GT$15strip_prefix_of17h9c06adab15bb11ffE.exit148": ; preds = %.thread157, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h74eabfca366c6e30E.exit.i144" - %.ph170 = phi i64 [ %102, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h74eabfca366c6e30E.exit.i144" ], [ -1, %.thread157 ] - %163 = phi ptr [ %spec.select.i147, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h74eabfca366c6e30E.exit.i144" ], [ null, %.thread157 ] - %.not111 = icmp eq ptr %163, null - %.sroa.027.3 = select i1 %.not111, ptr %97, ptr %163 - %.sroa.21.3 = select i1 %.not111, i64 %96, i64 %.ph170 +"_ZN55_$LT$$RF$str$u20$as$u20$core..str..pattern..Pattern$GT$15strip_prefix_of17h9c06adab15bb11ffE.exit148": ; preds = %.thread157, %.thread157.thread, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h74eabfca366c6e30E.exit.i144" + %163 = phi ptr [ %97, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h74eabfca366c6e30E.exit.i144" ], [ %85, %.thread157.thread ], [ %97, %.thread157 ] + %164 = phi i64 [ %96, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h74eabfca366c6e30E.exit.i144" ], [ 0, %.thread157.thread ], [ 0, %.thread157 ] + %.0106160201 = phi i64 [ %.0106160, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h74eabfca366c6e30E.exit.i144" ], [ %82, %.thread157.thread ], [ %.0106160, %.thread157 ] + %.ph170 = phi i64 [ %102, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h74eabfca366c6e30E.exit.i144" ], [ -1, %.thread157.thread ], [ -1, %.thread157 ] + %165 = phi ptr [ %spec.select.i147, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h74eabfca366c6e30E.exit.i144" ], [ null, %.thread157.thread ], [ null, %.thread157 ] + %.not111 = icmp eq ptr %165, null + %.sroa.027.3 = select i1 %.not111, ptr %163, ptr %165 + %.sroa.21.3 = select i1 %.not111, i64 %164, i64 %.ph170 %.2 = select i1 %.not111, i32 108, i32 98 br label %104 -164: ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread.i" +166: ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.thread.i" %brmerge = or i1 %16, %67 - br i1 %brmerge, label %169, label %171 - -165: ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i", %118 - %166 = icmp eq i32 %.0103, 98 - %. = select i1 %166, i64 512, i64 1 - %167 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %.0106160, i64 %.) - %168 = extractvalue { i64, i1 } %167, 1 - br i1 %168, label %172, label %173 - -169: ; preds = %164 - %170 = getelementptr inbounds i8, ptr %0, i64 10 - store i8 3, ptr %170, align 2 + br i1 %brmerge, label %171, label %173 + +167: ; preds = %"_ZN81_$LT$core..str..iter..Chars$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha3bb299ebebfcc3aE.exit.i", %118 + %168 = icmp eq i32 %.0103, 98 + %. = select i1 %168, i64 512, i64 1 + %169 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %.0106160200, i64 %.) + %170 = extractvalue { i64, i1 } %169, 1 + br i1 %170, label %174, label %175 + +171: ; preds = %166 + %172 = getelementptr inbounds i8, ptr %0, i64 10 + store i8 3, ptr %172, align 2 br label %17 -171: ; preds = %164 +173: ; preds = %166 store i8 2, ptr %0, align 8 %.sroa.458.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 10 store i8 2, ptr %.sroa.458.0..sroa_idx, align 2 br label %17 -172: ; preds = %165 +174: ; preds = %167 store i8 1, ptr %0, align 8 %.sroa.466.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 10 store i8 2, ptr %.sroa.466.0..sroa_idx, align 2 br label %17 -173: ; preds = %165 - %174 = extractvalue { i64, i1 } %167, 0 - %175 = icmp eq i32 %.0103, 108 - %176 = zext i1 %16 to i8 - %177 = zext i1 %175 to i8 - store i64 %174, ptr %0, align 8 +175: ; preds = %167 + %176 = extractvalue { i64, i1 } %169, 0 + %177 = icmp eq i32 %.0103, 108 + %178 = zext i1 %16 to i8 + %179 = zext i1 %177 to i8 + store i64 %176, ptr %0, align 8 %.sroa.474.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 - store i8 %176, ptr %.sroa.474.0..sroa_idx, align 8 + store i8 %178, ptr %.sroa.474.0..sroa_idx, align 8 %.sroa.575.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 9 - store i8 %177, ptr %.sroa.575.0..sroa_idx, align 1 + store i8 %179, ptr %.sroa.575.0..sroa_idx, align 1 %.sroa.676.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 10 store i8 %.pn.i, ptr %.sroa.676.0..sroa_idx, align 2 br label %17 diff --git a/bench/coreutils-rs/optimized/473nyej07n3j6ogx.ll b/bench/coreutils-rs/optimized/473nyej07n3j6ogx.ll index 780e8b9439f..1f22fb159d8 100644 --- a/bench/coreutils-rs/optimized/473nyej07n3j6ogx.ll +++ b/bench/coreutils-rs/optimized/473nyej07n3j6ogx.ll @@ -2228,7 +2228,7 @@ define void @"_ZN46_$LT$str$u20$as$u20$uu_dircolors..StrUtils$GT$9split_two17h57 tail call void @llvm.experimental.noalias.scope.decl(metadata !503) %4 = getelementptr inbounds i8, ptr %1, i64 %2 %5 = icmp eq i64 %2, 0 - br i1 %5, label %.loopexit30, label %.lr.ph.i.i + br i1 %5, label %.loopexit, label %.lr.ph.i.i .lr.ph.i.i: ; preds = %3, %71 %6 = phi i64 [ %48, %71 ], [ 0, %3 ] @@ -2284,7 +2284,7 @@ define void @"_ZN46_$LT$str$u20$as$u20$uu_dircolors..StrUtils$GT$9split_two17h57 %43 = or disjoint i32 %40, %42 %44 = or disjoint i32 %43, %39 %45 = icmp eq i32 %44, 1114112 - br i1 %45, label %.loopexit30, label %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.exit.thread11.i.i.i" + br i1 %45, label %.loopexit, label %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.exit.thread11.i.i.i" "_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.exit.thread11.i.i.i": ; preds = %34, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h68cf88b08b299411E.exit15.i.i.i.i.i", %22, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h68cf88b08b299411E.exit13.i.i.i.i.i" %.sink18.i.i.i = phi ptr [ %15, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h68cf88b08b299411E.exit13.i.i.i.i.i" ], [ %25, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h68cf88b08b299411E.exit15.i.i.i.i.i" ], [ %9, %22 ], [ %36, %34 ] @@ -2346,7 +2346,7 @@ define void @"_ZN46_$LT$str$u20$as$u20$uu_dircolors..StrUtils$GT$9split_two17h57 71: ; preds = %"_ZN53_$LT$F$u20$as$u20$core..str..pattern..MultiCharEq$GT$7matches17h6377f41f0d1c455fE.exit.i.i.i", %51, %49 %72 = icmp eq ptr %.sink18.i.i.i, %4 - br i1 %72, label %.loopexit30, label %.lr.ph.i.i + br i1 %72, label %.loopexit, label %.lr.ph.i.i 73: ; preds = %"_ZN53_$LT$F$u20$as$u20$core..str..pattern..MultiCharEq$GT$7matches17h6377f41f0d1c455fE.exit.i.i.i", %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.exit.thread11.i.i.i", %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.exit.thread11.i.i.i", %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.exit.thread11.i.i.i", %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.exit.thread11.i.i.i", %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.exit.thread11.i.i.i", %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.exit.thread11.i.i.i" %74 = icmp eq i64 %6, 0 @@ -2358,7 +2358,7 @@ define void @"_ZN46_$LT$str$u20$as$u20$uu_dircolors..StrUtils$GT$9split_two17h57 76: ; preds = %75 %77 = icmp eq i64 %6, %2 - br i1 %77, label %87, label %81 + br i1 %77, label %.loopexit, label %81 "_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i": ; preds = %75 %78 = getelementptr inbounds i8, ptr %1, i64 %6 @@ -2381,13 +2381,13 @@ define void @"_ZN46_$LT$str$u20$as$u20$uu_dircolors..StrUtils$GT$9split_two17h57 tail call void @_ZN4core3str16slice_error_fail17he2ff12236fb0c056E(ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2, i64 noundef %6, i64 noundef %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.0e465fe6be52864fcdae16bb4d6a5c56.73) #14 unreachable -87: ; preds = %76, %73, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i15" - %88 = phi i64 [ %85, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i15" ], [ %2, %73 ], [ 0, %76 ] +87: ; preds = %73, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i15" + %88 = phi i64 [ %85, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i15" ], [ %2, %73 ] %89 = getelementptr inbounds i8, ptr %1, i64 %6 tail call void @llvm.experimental.noalias.scope.decl(metadata !528) %90 = getelementptr inbounds i8, ptr %89, i64 %88 %91 = icmp eq i64 %88, 0 - br i1 %91, label %.loopexit30, label %.lr.ph.i.i16 + br i1 %91, label %.loopexit, label %.lr.ph.i.i16 .lr.ph.i.i16: ; preds = %87, %157 %92 = phi i64 [ %134, %157 ], [ 0, %87 ] @@ -2443,7 +2443,7 @@ define void @"_ZN46_$LT$str$u20$as$u20$uu_dircolors..StrUtils$GT$9split_two17h57 %129 = or disjoint i32 %126, %128 %130 = or disjoint i32 %129, %125 %131 = icmp eq i32 %130, 1114112 - br i1 %131, label %.loopexit30, label %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.exit.thread11.i.i.i18" + br i1 %131, label %.loopexit, label %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.exit.thread11.i.i.i18" "_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.exit.thread11.i.i.i18": ; preds = %120, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h68cf88b08b299411E.exit15.i.i.i.i.i22", %108, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h68cf88b08b299411E.exit13.i.i.i.i.i17" %.sink18.i.i.i19 = phi ptr [ %101, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h68cf88b08b299411E.exit13.i.i.i.i.i17" ], [ %111, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h68cf88b08b299411E.exit15.i.i.i.i.i22" ], [ %95, %108 ], [ %122, %120 ] @@ -2505,12 +2505,12 @@ define void @"_ZN46_$LT$str$u20$as$u20$uu_dircolors..StrUtils$GT$9split_two17h57 157: ; preds = %"_ZN53_$LT$F$u20$as$u20$core..str..pattern..MultiCharEq$GT$7matches17h923c338a047931bcE.exit.i.i.i", %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.exit.thread11.i.i.i18", %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.exit.thread11.i.i.i18", %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.exit.thread11.i.i.i18", %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.exit.thread11.i.i.i18", %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.exit.thread11.i.i.i18", %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.exit.thread11.i.i.i18" %158 = icmp eq ptr %.sink18.i.i.i19, %90 - br i1 %158, label %.loopexit30, label %.lr.ph.i.i16 + br i1 %158, label %.loopexit, label %.lr.ph.i.i16 159: ; preds = %"_ZN53_$LT$F$u20$as$u20$core..str..pattern..MultiCharEq$GT$7matches17h923c338a047931bcE.exit.i.i.i", %137, %135 %160 = add i64 %92, %6 %161 = icmp eq i64 %160, 0 - br i1 %161, label %171, label %162 + br i1 %161, label %170, label %162 162: ; preds = %159 %.not.i.i23 = icmp ult i64 %160, %2 @@ -2518,37 +2518,36 @@ define void @"_ZN46_$LT$str$u20$as$u20$uu_dircolors..StrUtils$GT$9split_two17h57 163: ; preds = %162 %164 = icmp eq i64 %160, %2 - %165 = sub i64 %2, %160 - br i1 %164, label %171, label %170 + br i1 %164, label %170, label %169 "_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i25": ; preds = %162 - %166 = getelementptr inbounds i8, ptr %1, i64 %160 - %167 = load i8, ptr %166, align 1, !alias.scope !543, !noundef !4 - %168 = icmp sgt i8 %167, -65 - %169 = sub nuw i64 %2, %160 - br i1 %168, label %171, label %170 + %165 = getelementptr inbounds i8, ptr %1, i64 %160 + %166 = load i8, ptr %165, align 1, !alias.scope !543, !noundef !4 + %167 = icmp sgt i8 %166, -65 + %168 = sub nuw i64 %2, %160 + br i1 %167, label %170, label %169 -170: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i25", %163 +169: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i25", %163 tail call void @_ZN4core3str16slice_error_fail17he2ff12236fb0c056E(ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2, i64 noundef %160, i64 noundef %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.0e465fe6be52864fcdae16bb4d6a5c56.74) #14 unreachable -171: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i25", %163, %159 - %172 = phi i64 [ %169, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i25" ], [ %165, %163 ], [ %2, %159 ] - %173 = getelementptr inbounds i8, ptr %1, i64 %160 - br label %.loopexit30 +170: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i25", %163, %159 + %171 = phi i64 [ %168, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i25" ], [ 0, %163 ], [ %2, %159 ] + %172 = getelementptr inbounds i8, ptr %1, i64 %160 + br label %.loopexit -.loopexit30: ; preds = %34, %71, %120, %157, %87, %3, %171 - %.sink40 = phi ptr [ %1, %171 ], [ @anon.0e465fe6be52864fcdae16bb4d6a5c56.6, %3 ], [ %1, %87 ], [ %1, %157 ], [ %1, %120 ], [ @anon.0e465fe6be52864fcdae16bb4d6a5c56.6, %71 ], [ @anon.0e465fe6be52864fcdae16bb4d6a5c56.6, %34 ] - %.lcssa36.sink = phi i64 [ %6, %171 ], [ 0, %3 ], [ %6, %87 ], [ %6, %157 ], [ %6, %120 ], [ 0, %71 ], [ 0, %34 ] - %anon.0e465fe6be52864fcdae16bb4d6a5c56.6.sink = phi ptr [ %173, %171 ], [ @anon.0e465fe6be52864fcdae16bb4d6a5c56.6, %3 ], [ @anon.0e465fe6be52864fcdae16bb4d6a5c56.6, %87 ], [ @anon.0e465fe6be52864fcdae16bb4d6a5c56.6, %157 ], [ @anon.0e465fe6be52864fcdae16bb4d6a5c56.6, %120 ], [ @anon.0e465fe6be52864fcdae16bb4d6a5c56.6, %71 ], [ @anon.0e465fe6be52864fcdae16bb4d6a5c56.6, %34 ] - %.sink = phi i64 [ %172, %171 ], [ 0, %3 ], [ 0, %87 ], [ 0, %157 ], [ 0, %120 ], [ 0, %71 ], [ 0, %34 ] +.loopexit: ; preds = %34, %71, %120, %157, %87, %76, %3, %170 + %.sink40 = phi ptr [ %1, %170 ], [ @anon.0e465fe6be52864fcdae16bb4d6a5c56.6, %3 ], [ %1, %76 ], [ %1, %87 ], [ %1, %157 ], [ %1, %120 ], [ @anon.0e465fe6be52864fcdae16bb4d6a5c56.6, %71 ], [ @anon.0e465fe6be52864fcdae16bb4d6a5c56.6, %34 ] + %.lcssa36.sink = phi i64 [ %6, %170 ], [ 0, %3 ], [ %6, %76 ], [ %6, %87 ], [ %6, %157 ], [ %6, %120 ], [ 0, %71 ], [ 0, %34 ] + %anon.0e465fe6be52864fcdae16bb4d6a5c56.6.sink = phi ptr [ %172, %170 ], [ @anon.0e465fe6be52864fcdae16bb4d6a5c56.6, %3 ], [ @anon.0e465fe6be52864fcdae16bb4d6a5c56.6, %76 ], [ @anon.0e465fe6be52864fcdae16bb4d6a5c56.6, %87 ], [ @anon.0e465fe6be52864fcdae16bb4d6a5c56.6, %157 ], [ @anon.0e465fe6be52864fcdae16bb4d6a5c56.6, %120 ], [ @anon.0e465fe6be52864fcdae16bb4d6a5c56.6, %71 ], [ @anon.0e465fe6be52864fcdae16bb4d6a5c56.6, %34 ] + %.sink = phi i64 [ %171, %170 ], [ 0, %3 ], [ 0, %76 ], [ 0, %87 ], [ 0, %157 ], [ 0, %120 ], [ 0, %71 ], [ 0, %34 ] store ptr %.sink40, ptr %0, align 8 - %174 = getelementptr inbounds i8, ptr %0, i64 8 - store i64 %.lcssa36.sink, ptr %174, align 8 - %175 = getelementptr inbounds i8, ptr %0, i64 16 - store ptr %anon.0e465fe6be52864fcdae16bb4d6a5c56.6.sink, ptr %175, align 8 - %176 = getelementptr inbounds i8, ptr %0, i64 24 - store i64 %.sink, ptr %176, align 8 + %173 = getelementptr inbounds i8, ptr %0, i64 8 + store i64 %.lcssa36.sink, ptr %173, align 8 + %174 = getelementptr inbounds i8, ptr %0, i64 16 + store ptr %anon.0e465fe6be52864fcdae16bb4d6a5c56.6.sink, ptr %174, align 8 + %175 = getelementptr inbounds i8, ptr %0, i64 24 + store i64 %.sink, ptr %175, align 8 ret void } diff --git a/bench/cpython/optimized/_datetimemodule.ll b/bench/cpython/optimized/_datetimemodule.ll index c3a7d36df69..ce5683fde5c 100644 --- a/bench/cpython/optimized/_datetimemodule.ll +++ b/bench/cpython/optimized/_datetimemodule.ll @@ -13190,7 +13190,7 @@ for.end: ; preds = %if.else20, %for.inc %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %spec.store.select = tail call i64 @llvm.umin.i64(i64 %sub.ptr.sub, i64 6) %cmp5.not.i = icmp eq ptr %tstr_end, %p.1 - br i1 %cmp5.not.i, label %parse_digits.exit42, label %for.body.i29 + br i1 %cmp5.not.i, label %parse_digits.exit42.thread, label %for.body.i29 for.body.i29: ; preds = %for.end, %if.end.i35 %i.07.i30 = phi i64 [ %inc.i39, %if.end.i35 ], [ 0, %for.end ] @@ -13211,16 +13211,20 @@ if.end.i35: ; preds = %for.body.i29 %exitcond.not.i40 = icmp eq i64 %inc.i39, %spec.store.select br i1 %exitcond.not.i40, label %parse_digits.exit42, label %for.body.i29, !llvm.loop !6 -parse_digits.exit42: ; preds = %if.end.i35, %for.end - %retval.0.i41 = phi ptr [ %p.1, %for.end ], [ %incdec.ptr.i36, %if.end.i35 ] - %cmp42 = icmp eq ptr %retval.0.i41, null +parse_digits.exit42: ; preds = %if.end.i35 + %cmp42 = icmp eq ptr %incdec.ptr.i36, null br i1 %cmp42, label %return, label %if.end45 +parse_digits.exit42.thread: ; preds = %for.end + %cmp4262 = icmp eq ptr %p.1, null + br i1 %cmp4262, label %return, label %if.then48 + if.end45: ; preds = %parse_digits.exit42 %cmp46 = icmp ult i64 %sub.ptr.sub, 6 br i1 %cmp46, label %if.then48, label %while.cond.preheader -if.then48: ; preds = %if.end45 +if.then48: ; preds = %parse_digits.exit42.thread, %if.end45 + %retval.0.i416367 = phi ptr [ %incdec.ptr.i36, %if.end45 ], [ %p.1, %parse_digits.exit42.thread ] %sub = add nsw i64 %spec.store.select, -1 %arrayidx49 = getelementptr [5 x i32], ptr @parse_hh_mm_ss_ff.correction, i64 0, i64 %sub %7 = load i32, ptr %arrayidx49, align 4 @@ -13230,10 +13234,11 @@ if.then48: ; preds = %if.end45 br label %while.cond.preheader while.cond.preheader: ; preds = %if.then48, %if.end45 + %p.3.ph = phi ptr [ %incdec.ptr.i36, %if.end45 ], [ %retval.0.i416367, %if.then48 ] br label %while.cond while.cond: ; preds = %while.cond.preheader, %while.cond - %p.3 = phi ptr [ %incdec.ptr53, %while.cond ], [ %retval.0.i41, %while.cond.preheader ] + %p.3 = phi ptr [ %incdec.ptr53, %while.cond ], [ %p.3.ph, %while.cond.preheader ] %9 = load i8, ptr %p.3, align 1 %conv.i43 = sext i8 %9 to i32 %10 = add nsw i32 %conv.i43, -58 @@ -13246,8 +13251,8 @@ while.end: ; preds = %while.cond %conv56 = zext i1 %cmp55 to i32 br label %return -return: ; preds = %if.else28, %parse_digits.exit, %for.body.i, %for.body.i29, %parse_digits.exit42, %while.end, %if.then11 - %retval.0 = phi i32 [ %conv14, %if.then11 ], [ %conv56, %while.end ], [ -3, %parse_digits.exit42 ], [ -3, %for.body.i29 ], [ -3, %for.body.i ], [ -4, %if.else28 ], [ -3, %parse_digits.exit ] +return: ; preds = %if.else28, %parse_digits.exit, %for.body.i, %for.body.i29, %parse_digits.exit42.thread, %parse_digits.exit42, %while.end, %if.then11 + %retval.0 = phi i32 [ %conv14, %if.then11 ], [ %conv56, %while.end ], [ -3, %parse_digits.exit42 ], [ -3, %parse_digits.exit42.thread ], [ -3, %for.body.i29 ], [ -3, %for.body.i ], [ -4, %if.else28 ], [ -3, %parse_digits.exit ] ret i32 %retval.0 } diff --git a/bench/cvc5/optimized/sygus_grammar_norm.cpp.ll b/bench/cvc5/optimized/sygus_grammar_norm.cpp.ll index 280bb0b27a0..5bf3111a9f7 100644 --- a/bench/cvc5/optimized/sygus_grammar_norm.cpp.ll +++ b/bench/cvc5/optimized/sygus_grammar_norm.cpp.ll @@ -2349,7 +2349,7 @@ if.then.i.i.i.i.i35: ; preds = %if.else49 br label %_ZSt4copyIPjS0_ET0_T_S2_S1_.exit _ZSt4copyIPjS0_ET0_T_S2_S1_.exit: ; preds = %if.else49, %if.then.i.i.i.i.i35 - %sub.ptr.sub.i40.pre-phi = phi i64 [ %sub.ptr.sub.i22, %if.else49 ], [ %.pre47, %if.then.i.i.i.i.i35 ] + %sub.ptr.sub.i40.pre-phi = phi i64 [ 0, %if.else49 ], [ %.pre47, %if.then.i.i.i.i.i35 ] %5 = phi ptr [ %0, %if.else49 ], [ %.pre44, %if.then.i.i.i.i.i35 ] %6 = phi ptr [ %4, %if.else49 ], [ %.pre42, %if.then.i.i.i.i.i35 ] %7 = phi ptr [ %1, %if.else49 ], [ %.pre, %if.then.i.i.i.i.i35 ] @@ -2543,24 +2543,19 @@ entry: %sub.ptr.rhs.cast.i.i = ptrtoint ptr %1 to i64 %sub.ptr.sub.i.i = sub i64 %sub.ptr.lhs.cast.i.i, %sub.ptr.rhs.cast.i.i %cmp.not.i.i.i.i = icmp eq ptr %0, %1 - br i1 %cmp.not.i.i.i.i, label %_ZNSt6vectorIjSaIjEEC2ERKS1_.exit, label %cond.true.i.i.i.i + br i1 %cmp.not.i.i.i.i, label %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i, label %cond.true.i.i.i.i cond.true.i.i.i.i: ; preds = %entry %cmp.i.i.i.i.i.i = icmp ugt i64 %sub.ptr.sub.i.i, 9223372036854775804 - br i1 %cmp.i.i.i.i.i.i, label %if.then3.i.i.i.i.i.i, label %if.then.i.i.i.i.i.i.i.i.i + br i1 %cmp.i.i.i.i.i.i, label %if.then3.i.i.i.i.i.i, label %_ZNSt6vectorIjSaIjEEC2ERKS1_.exit if.then3.i.i.i.i.i.i: ; preds = %cond.true.i.i.i.i tail call void @_ZSt28__throw_bad_array_new_lengthv() #21 unreachable -if.then.i.i.i.i.i.i.i.i.i: ; preds = %cond.true.i.i.i.i +_ZNSt6vectorIjSaIjEEC2ERKS1_.exit: ; preds = %cond.true.i.i.i.i %call5.i.i.i.i2.i6.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %sub.ptr.sub.i.i) #18 tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %call5.i.i.i.i2.i6.i, ptr align 4 %1, i64 %sub.ptr.sub.i.i, i1 false) - br label %_ZNSt6vectorIjSaIjEEC2ERKS1_.exit - -_ZNSt6vectorIjSaIjEEC2ERKS1_.exit: ; preds = %entry, %if.then.i.i.i.i.i.i.i.i.i - %cond.i.i.i.i1482 = phi ptr [ %call5.i.i.i.i2.i6.i, %if.then.i.i.i.i.i.i.i.i.i ], [ null, %entry ] - %d_chain_op_pos = getelementptr inbounds i8, ptr %this, i64 8 %cmp.i.i.i = icmp eq i64 %sub.ptr.sub.i.i, 9223372036854775804 br i1 %cmp.i.i.i, label %if.then.i.i.i, label %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i @@ -2571,41 +2566,36 @@ if.then.i.i.i: ; preds = %_ZNSt6vectorIjSaIjE .noexc: ; preds = %if.then.i.i.i unreachable -_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i: ; preds = %_ZNSt6vectorIjSaIjEEC2ERKS1_.exit - %sub.ptr.div.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i, 2 +_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i: ; preds = %entry, %_ZNSt6vectorIjSaIjEEC2ERKS1_.exit + %cond.i.i.i.i14821488 = phi ptr [ %call5.i.i.i.i2.i6.i, %_ZNSt6vectorIjSaIjEEC2ERKS1_.exit ], [ null, %entry ] + %d_chain_op_pos1489 = getelementptr inbounds i8, ptr %this, i64 8 + %sub.ptr.div.i.i.i.i = lshr exact i64 %sub.ptr.sub.i.i, 2 %.sroa.speculated.i.i.i = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i.i.i, i64 1) - %add.i.i.i = add nsw i64 %.sroa.speculated.i.i.i, %sub.ptr.div.i.i.i.i - %cmp7.i.i.i = icmp ult i64 %add.i.i.i, %sub.ptr.div.i.i.i.i + %add.i.i.i = add nuw nsw i64 %.sroa.speculated.i.i.i, %sub.ptr.div.i.i.i.i %2 = tail call i64 @llvm.umin.i64(i64 %add.i.i.i, i64 2305843009213693951) - %cond.i.i.i = select i1 %cmp7.i.i.i, i64 2305843009213693951, i64 %2 - %cmp.not.i.i.i = icmp eq i64 %cond.i.i.i, 0 - br i1 %cmp.not.i.i.i, label %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i, label %cond.true.i.i.i - -cond.true.i.i.i: ; preds = %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i - %mul.i.i.i.i.i = shl nuw nsw i64 %cond.i.i.i, 2 + %mul.i.i.i.i.i = shl nuw nsw i64 %2, 2 %call5.i.i.i.i.i49 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %mul.i.i.i.i.i) #18 to label %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i unwind label %lpad -_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i: ; preds = %cond.true.i.i.i, %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i - %cond.i10.i.i = phi ptr [ null, %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i ], [ %call5.i.i.i.i.i49, %cond.true.i.i.i ] - %add.ptr.i.i = getelementptr inbounds i32, ptr %cond.i10.i.i, i64 %sub.ptr.div.i.i.i.i - %3 = load i32, ptr %d_chain_op_pos, align 8 +_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i: ; preds = %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i + %add.ptr.i.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i49, i64 %sub.ptr.sub.i.i + %3 = load i32, ptr %d_chain_op_pos1489, align 8 store i32 %3, ptr %add.ptr.i.i, align 4 - %cmp.i.i.i.i.i = icmp sgt i64 %sub.ptr.sub.i.i, 0 - br i1 %cmp.i.i.i.i.i, label %if.then.i.i.i.i.i, label %_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit17.i.i + %cmp.i.i.i.i.i.not = icmp eq ptr %0, %1 + br i1 %cmp.i.i.i.i.i.not, label %_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit17.i.i, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %cond.i10.i.i, ptr align 4 %cond.i.i.i.i1482, i64 %sub.ptr.sub.i.i, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %call5.i.i.i.i.i49, ptr align 4 %cond.i.i.i.i14821488, i64 %sub.ptr.sub.i.i, i1 false) br label %_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit17.i.i _ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit17.i.i: ; preds = %if.then.i.i.i.i.i, %_ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i - %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %cond.i10.i.i, i64 %sub.ptr.sub.i.i + %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i49, i64 %sub.ptr.sub.i.i %incdec.ptr.i.i = getelementptr inbounds i8, ptr %add.ptr.i.i.i.i.i, i64 4 - %tobool.not.i.i.i = icmp eq ptr %cond.i.i.i.i1482, null + %tobool.not.i.i.i = icmp eq ptr %cond.i.i.i.i14821488, null br i1 %tobool.not.i.i.i, label %invoke.cont, label %if.then.i18.i.i if.then.i18.i.i: ; preds = %_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit17.i.i - tail call void @_ZdlPv(ptr noundef nonnull %cond.i.i.i.i1482) #20 + tail call void @_ZdlPv(ptr noundef nonnull %cond.i.i.i.i14821488) #20 br label %invoke.cont invoke.cont: ; preds = %if.then.i18.i.i, %_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit17.i.i @@ -2620,22 +2610,22 @@ invoke.cont: ; preds = %if.then.i18.i.i, %_ to label %invoke.cont9 unwind label %lpad invoke.cont9: ; preds = %invoke.cont - invoke void @_ZSt6__sortIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEENS0_5__ops15_Iter_less_iterEEvT_S9_T0_(ptr nonnull %cond.i10.i.i, ptr nonnull %incdec.ptr.i.i) + invoke void @_ZSt6__sortIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEENS0_5__ops15_Iter_less_iterEEvT_S9_T0_(ptr nonnull %call5.i.i.i.i.i49, ptr nonnull %incdec.ptr.i.i) to label %invoke.cont33 unwind label %lpad invoke.cont33: ; preds = %invoke.cont9 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %difference, i8 0, i64 24, i1 false) %6 = load ptr, ptr %op_pos, align 8 %7 = load ptr, ptr %_M_finish.i50, align 8 - %call.i58 = invoke ptr @_ZSt16__set_differenceIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEES6_St20back_insert_iteratorIS5_ENS0_5__ops15_Iter_less_iterEET1_T_SC_T0_SD_SB_T2_(ptr %6, ptr %7, ptr nonnull %cond.i10.i.i, ptr nonnull %incdec.ptr.i.i, ptr nonnull %difference) + %call.i58 = invoke ptr @_ZSt16__set_differenceIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEES6_St20back_insert_iteratorIS5_ENS0_5__ops15_Iter_less_iterEET1_T_SC_T0_SD_SB_T2_(ptr %6, ptr %7, ptr nonnull %call5.i.i.i.i.i49, ptr nonnull %incdec.ptr.i.i, ptr nonnull %difference) to label %invoke.cont41 unwind label %lpad32 invoke.cont41: ; preds = %invoke.cont33 %call45 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIjSaIjEEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %op_pos, ptr noundef nonnull align 8 dereferenceable(24) %difference) to label %if.end unwind label %lpad32 -lpad: ; preds = %invoke.cont9, %invoke.cont, %cond.true.i.i.i, %if.then.i.i.i - %claimed.sroa.0.0 = phi ptr [ %cond.i.i.i.i1482, %if.then.i.i.i ], [ %cond.i10.i.i, %invoke.cont9 ], [ %cond.i10.i.i, %invoke.cont ], [ %cond.i.i.i.i1482, %cond.true.i.i.i ] +lpad: ; preds = %invoke.cont9, %invoke.cont, %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i, %if.then.i.i.i + %claimed.sroa.0.0 = phi ptr [ %call5.i.i.i.i2.i6.i, %if.then.i.i.i ], [ %call5.i.i.i.i.i49, %invoke.cont9 ], [ %call5.i.i.i.i.i49, %invoke.cont ], [ %cond.i.i.i.i14821488, %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i ] %8 = landingpad { ptr, i32 } cleanup br label %ehcleanup432 @@ -3223,7 +3213,7 @@ if.end297: ; preds = %if.end292 br i1 %cmp.not.i1104, label %if.else.i1108, label %if.then.i1105 if.then.i1105: ; preds = %if.end297 - %74 = load i32, ptr %d_chain_op_pos, align 8 + %74 = load i32, ptr %d_chain_op_pos1489, align 8 store i32 %74, ptr %71, align 4 %75 = load ptr, ptr %_M_finish.i.i, align 8 %incdec.ptr.i1106 = getelementptr inbounds i8, ptr %75, i64 4 @@ -3258,7 +3248,7 @@ cond.true.i.i.i1120: ; preds = %_ZNKSt6vectorIjSaIj _ZNSt12_Vector_baseIjSaIjEE11_M_allocateEm.exit.i.i1122: ; preds = %cond.true.i.i.i1120, %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i1113 %cond.i10.i.i1123 = phi ptr [ null, %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i1113 ], [ %call5.i.i.i.i.i1137, %cond.true.i.i.i1120 ] %add.ptr.i.i1124 = getelementptr inbounds i32, ptr %cond.i10.i.i1123, i64 %sub.ptr.div.i1101 - %77 = load i32, ptr %d_chain_op_pos, align 8 + %77 = load i32, ptr %d_chain_op_pos1489, align 8 store i32 %77, ptr %add.ptr.i.i1124, align 4 %cmp.i.i.i.i.i1125 = icmp sgt i64 %sub.ptr.sub.i1100, 0 br i1 %cmp.i.i.i.i.i1125, label %if.then.i.i.i.i.i1133, label %_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit17.i.i1126 @@ -3580,21 +3570,14 @@ terminate.lpad.i1433: ; preds = %if.then13.i.i1432 _ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit1434: ; preds = %cleanup, %if.then.i.i1425, %if.then13.i.i1432 %111 = load ptr, ptr %difference, align 8 %tobool.not.i.i.i1436 = icmp eq ptr %111, null - br i1 %tobool.not.i.i.i1436, label %_ZNSt6vectorIjSaIjEED2Ev.exit1438, label %if.then.i.i.i1437 + br i1 %tobool.not.i.i.i1436, label %if.then.i.i.i1441, label %if.then.i.i.i1437 if.then.i.i.i1437: ; preds = %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit1434 call void @_ZdlPv(ptr noundef nonnull %111) #20 - br label %_ZNSt6vectorIjSaIjEED2Ev.exit1438 - -_ZNSt6vectorIjSaIjEED2Ev.exit1438: ; preds = %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit1434, %if.then.i.i.i1437 - %tobool.not.i.i.i1440 = icmp eq ptr %cond.i10.i.i, null - br i1 %tobool.not.i.i.i1440, label %_ZNSt6vectorIjSaIjEED2Ev.exit1442, label %if.then.i.i.i1441 - -if.then.i.i.i1441: ; preds = %_ZNSt6vectorIjSaIjEED2Ev.exit1438 - call void @_ZdlPv(ptr noundef nonnull %cond.i10.i.i) #20 - br label %_ZNSt6vectorIjSaIjEED2Ev.exit1442 + br label %if.then.i.i.i1441 -_ZNSt6vectorIjSaIjEED2Ev.exit1442: ; preds = %_ZNSt6vectorIjSaIjEED2Ev.exit1438, %if.then.i.i.i1441 +if.then.i.i.i1441: ; preds = %if.then.i.i.i1437, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit1434 + call void @_ZdlPv(ptr noundef nonnull %call5.i.i.i.i.i49) #20 ret void lpad406: ; preds = %if.then13.i.i1370, %if.then13.i.i1323 @@ -3656,7 +3639,7 @@ if.then.i.i.i1445: ; preds = %ehcleanup430 br label %ehcleanup432 ehcleanup432: ; preds = %if.then.i.i.i1445, %ehcleanup430, %lpad - %claimed.sroa.0.1 = phi ptr [ %claimed.sroa.0.0, %lpad ], [ %cond.i10.i.i, %ehcleanup430 ], [ %cond.i10.i.i, %if.then.i.i.i1445 ] + %claimed.sroa.0.1 = phi ptr [ %claimed.sroa.0.0, %lpad ], [ %call5.i.i.i.i.i49, %ehcleanup430 ], [ %call5.i.i.i.i.i49, %if.then.i.i.i1445 ] %.pn46.pn = phi { ptr, i32 } [ %8, %lpad ], [ %.pn46, %ehcleanup430 ], [ %.pn46, %if.then.i.i.i1445 ] %tobool.not.i.i.i1448 = icmp eq ptr %claimed.sroa.0.1, null br i1 %tobool.not.i.i.i1448, label %_ZNSt6vectorIjSaIjEED2Ev.exit1450, label %if.then.i.i.i1449 @@ -12317,8 +12300,8 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEES6_ET0_T %sub.ptr.lhs.cast.i.i.i.i.i.i32.i = ptrtoint ptr %__i.sroa.0.013.i16.i to i64 %sub.ptr.sub.i.i.i.i.i.i33.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i32.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i.i34.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i.i33.i, 2 - %.pre.i.i.i.i.i.i35.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i34.i - %add.ptr.i.i.i.i.i.i36.i = getelementptr inbounds i32, ptr %add.ptr.i3.i31.i, i64 %.pre.i.i.i.i.i.i35.i + %idx.neg.i.i.i.i.i.i35.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i34.i + %add.ptr.i.i.i.i.i.i36.i = getelementptr inbounds i32, ptr %add.ptr.i3.i31.i, i64 %idx.neg.i.i.i.i.i.i35.i tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %add.ptr.i.i.i.i.i.i36.i, ptr noundef nonnull align 4 dereferenceable(1) %__first.coerce, i64 %sub.ptr.sub.i.i.i.i.i.i33.i, i1 false) br label %for.inc.i21.i diff --git a/bench/darktable/optimized/ChecksumFile.cpp.ll b/bench/darktable/optimized/ChecksumFile.cpp.ll index c0696b7f34b..0c7f8da1e8d 100644 --- a/bench/darktable/optimized/ChecksumFile.cpp.ll +++ b/bench/darktable/optimized/ChecksumFile.cpp.ll @@ -2293,10 +2293,8 @@ define linkonce_odr hidden void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcE %53 = getelementptr inbounds i8, ptr %52, i64 %4 %54 = getelementptr inbounds i8, ptr %12, i64 %1 %55 = getelementptr inbounds i8, ptr %54, i64 %2 - switch i64 %9, label %58 [ - i64 1, label %56 - i64 0, label %59 - ] + %cond = icmp eq i64 %9, 1 + br i1 %cond, label %56, label %58 56: ; preds = %51 %57 = load i8, ptr %55, align 1, !tbaa !30 @@ -2307,7 +2305,7 @@ define linkonce_odr hidden void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcE tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %53, ptr align 1 %55, i64 %9, i1 false) br label %59 -59: ; preds = %58, %56, %51, %49 +59: ; preds = %58, %56, %49 br i1 %14, label %60, label %62 60: ; preds = %59 diff --git a/bench/delta-rs/optimized/18hy949kj2hgmhpt.ll b/bench/delta-rs/optimized/18hy949kj2hgmhpt.ll index e0e4ebf0b69..13af41bd549 100644 --- a/bench/delta-rs/optimized/18hy949kj2hgmhpt.ll +++ b/bench/delta-rs/optimized/18hy949kj2hgmhpt.ll @@ -2753,89 +2753,88 @@ _ZN3url3Url5slice17h9b381af4048ee113E.exit: ; preds = %2, %20, %"_ZN4core3 32: ; preds = %31 %33 = icmp eq i64 %.val1, %29 - %34 = sub nsw i64 %.val1, %29 - br i1 %33, label %_ZN3url3Url5slice17h2ce1b7d229326636E.exit.i, label %39 + br i1 %33, label %_ZN3url3Url16cannot_be_a_base17h5e3896910a5eea43E.exit, label %38 "_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i.i.i.i": ; preds = %31 - %35 = getelementptr inbounds i8, ptr %.val, i64 %29 - %36 = load i8, ptr %35, align 1, !alias.scope !643, !noalias !650, !noundef !7 - %37 = icmp sgt i8 %36, -65 - %38 = sub nuw i64 %.val1, %29 - br i1 %37, label %_ZN3url3Url5slice17h2ce1b7d229326636E.exit.i, label %39 + %34 = getelementptr inbounds i8, ptr %.val, i64 %29 + %35 = load i8, ptr %34, align 1, !alias.scope !643, !noalias !650, !noundef !7 + %36 = icmp sgt i8 %35, -65 + %37 = sub nuw i64 %.val1, %29 + br i1 %36, label %_ZN3url3Url5slice17h2ce1b7d229326636E.exit.i, label %38 -39: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i.i.i.i", %32 +38: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i.i.i.i", %32 call void @_ZN4core3str16slice_error_fail17he2ff12236fb0c056E(ptr noalias noundef nonnull readonly align 1 %.val, i64 noundef %.val1, i64 noundef %29, i64 noundef %.val1, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.174b300a88867f6f1cdf072094f6ce8b.109) #22, !noalias !650 unreachable -_ZN3url3Url5slice17h2ce1b7d229326636E.exit.i: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i.i.i.i", %32, %_ZN3url3Url5slice17h9b381af4048ee113E.exit - %40 = phi i64 [ %38, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i.i.i.i" ], [ %34, %32 ], [ %.val1, %_ZN3url3Url5slice17h9b381af4048ee113E.exit ] - %.not.i.i = icmp eq i64 %40, 0 +_ZN3url3Url5slice17h2ce1b7d229326636E.exit.i: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i.i.i.i", %_ZN3url3Url5slice17h9b381af4048ee113E.exit + %39 = phi i64 [ %37, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i.i.i.i" ], [ %.val1, %_ZN3url3Url5slice17h9b381af4048ee113E.exit ] + %.not.i.i = icmp eq i64 %39, 0 br i1 %.not.i.i, label %_ZN3url3Url16cannot_be_a_base17h5e3896910a5eea43E.exit, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hc7d6f311dc9fc56dE.exit.i.i" "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hc7d6f311dc9fc56dE.exit.i.i": ; preds = %_ZN3url3Url5slice17h2ce1b7d229326636E.exit.i - %41 = getelementptr inbounds i8, ptr %.val, i64 %29 - %rhsc.i = load i8, ptr %41, align 1, !noalias !650 - %42 = icmp ne i8 %rhsc.i, 47 - %43 = zext i1 %42 to i8 + %40 = getelementptr inbounds i8, ptr %.val, i64 %29 + %rhsc.i = load i8, ptr %40, align 1, !noalias !650 + %41 = icmp ne i8 %rhsc.i, 47 + %42 = zext i1 %41 to i8 br label %_ZN3url3Url16cannot_be_a_base17h5e3896910a5eea43E.exit -_ZN3url3Url16cannot_be_a_base17h5e3896910a5eea43E.exit: ; preds = %_ZN3url3Url5slice17h2ce1b7d229326636E.exit.i, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hc7d6f311dc9fc56dE.exit.i.i" - %.0.i.i = phi i8 [ %43, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hc7d6f311dc9fc56dE.exit.i.i" ], [ 1, %_ZN3url3Url5slice17h2ce1b7d229326636E.exit.i ] +_ZN3url3Url16cannot_be_a_base17h5e3896910a5eea43E.exit: ; preds = %32, %_ZN3url3Url5slice17h2ce1b7d229326636E.exit.i, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hc7d6f311dc9fc56dE.exit.i.i" + %.0.i.i = phi i8 [ %42, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hc7d6f311dc9fc56dE.exit.i.i" ], [ 1, %_ZN3url3Url5slice17h2ce1b7d229326636E.exit.i ], [ 1, %32 ] store i8 %.0.i.i, ptr %10, align 1 - %44 = call noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17h9485b9119de058a4E(ptr noalias noundef nonnull align 8 dereferenceable(16) %27, ptr noalias noundef nonnull readonly align 1 @anon.174b300a88867f6f1cdf072094f6ce8b.32, i64 noundef 16, ptr noundef nonnull align 1 %10, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.174b300a88867f6f1cdf072094f6ce8b.33) + %43 = call noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17h9485b9119de058a4E(ptr noalias noundef nonnull align 8 dereferenceable(16) %27, ptr noalias noundef nonnull readonly align 1 @anon.174b300a88867f6f1cdf072094f6ce8b.32, i64 noundef 16, ptr noundef nonnull align 1 %10, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.174b300a88867f6f1cdf072094f6ce8b.33) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) - %45 = call { ptr, i64 } @_ZN3url3Url8username17h735dfc306189b930E(ptr noalias noundef nonnull readonly align 8 dereferenceable(88) %0) - %46 = extractvalue { ptr, i64 } %45, 0 - %47 = extractvalue { ptr, i64 } %45, 1 - store ptr %46, ptr %9, align 8 - %48 = getelementptr inbounds i8, ptr %9, i64 8 - store i64 %47, ptr %48, align 8 - %49 = call noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17h9485b9119de058a4E(ptr noalias noundef nonnull align 8 dereferenceable(16) %44, ptr noalias noundef nonnull readonly align 1 @anon.174b300a88867f6f1cdf072094f6ce8b.34, i64 noundef 8, ptr noundef nonnull align 1 %9, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.174b300a88867f6f1cdf072094f6ce8b.31) + %44 = call { ptr, i64 } @_ZN3url3Url8username17h735dfc306189b930E(ptr noalias noundef nonnull readonly align 8 dereferenceable(88) %0) + %45 = extractvalue { ptr, i64 } %44, 0 + %46 = extractvalue { ptr, i64 } %44, 1 + store ptr %45, ptr %9, align 8 + %47 = getelementptr inbounds i8, ptr %9, i64 8 + store i64 %46, ptr %47, align 8 + %48 = call noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17h9485b9119de058a4E(ptr noalias noundef nonnull align 8 dereferenceable(16) %43, ptr noalias noundef nonnull readonly align 1 @anon.174b300a88867f6f1cdf072094f6ce8b.34, i64 noundef 8, ptr noundef nonnull align 1 %9, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.174b300a88867f6f1cdf072094f6ce8b.31) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) - %50 = call { ptr, i64 } @_ZN3url3Url8password17h0d3fef7ddbc4e315E(ptr noalias noundef nonnull readonly align 8 dereferenceable(88) %0) - %51 = extractvalue { ptr, i64 } %50, 0 - %52 = extractvalue { ptr, i64 } %50, 1 - store ptr %51, ptr %8, align 8 - %53 = getelementptr inbounds i8, ptr %8, i64 8 - store i64 %52, ptr %53, align 8 - %54 = call noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17h9485b9119de058a4E(ptr noalias noundef nonnull align 8 dereferenceable(16) %49, ptr noalias noundef nonnull readonly align 1 @anon.174b300a88867f6f1cdf072094f6ce8b.35, i64 noundef 8, ptr noundef nonnull align 1 %8, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.174b300a88867f6f1cdf072094f6ce8b.36) + %49 = call { ptr, i64 } @_ZN3url3Url8password17h0d3fef7ddbc4e315E(ptr noalias noundef nonnull readonly align 8 dereferenceable(88) %0) + %50 = extractvalue { ptr, i64 } %49, 0 + %51 = extractvalue { ptr, i64 } %49, 1 + store ptr %50, ptr %8, align 8 + %52 = getelementptr inbounds i8, ptr %8, i64 8 + store i64 %51, ptr %52, align 8 + %53 = call noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17h9485b9119de058a4E(ptr noalias noundef nonnull align 8 dereferenceable(16) %48, ptr noalias noundef nonnull readonly align 1 @anon.174b300a88867f6f1cdf072094f6ce8b.35, i64 noundef 8, ptr noundef nonnull align 1 %8, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.174b300a88867f6f1cdf072094f6ce8b.36) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) call void @_ZN3url3Url4host17h6708340a451d89bbE(ptr noalias nocapture noundef nonnull sret({ i8, [23 x i8] }) align 8 dereferenceable(24) %7, ptr noalias noundef nonnull readonly align 8 dereferenceable(88) %0) - %55 = call noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17h9485b9119de058a4E(ptr noalias noundef nonnull align 8 dereferenceable(16) %54, ptr noalias noundef nonnull readonly align 1 @anon.174b300a88867f6f1cdf072094f6ce8b.37, i64 noundef 4, ptr noundef nonnull align 1 %7, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.174b300a88867f6f1cdf072094f6ce8b.38) + %54 = call noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17h9485b9119de058a4E(ptr noalias noundef nonnull align 8 dereferenceable(16) %53, ptr noalias noundef nonnull readonly align 1 @anon.174b300a88867f6f1cdf072094f6ce8b.37, i64 noundef 4, ptr noundef nonnull align 1 %7, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.174b300a88867f6f1cdf072094f6ce8b.38) call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) - %56 = getelementptr inbounds i8, ptr %0, i64 40 - %57 = load i16, ptr %56, align 8, !range !653, !noundef !7 - %58 = getelementptr inbounds i8, ptr %0, i64 42 - %59 = load i16, ptr %58, align 2 - store i16 %57, ptr %6, align 2 - %60 = getelementptr inbounds i8, ptr %6, i64 2 - store i16 %59, ptr %60, align 2 - %61 = call noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17h9485b9119de058a4E(ptr noalias noundef nonnull align 8 dereferenceable(16) %55, ptr noalias noundef nonnull readonly align 1 @anon.174b300a88867f6f1cdf072094f6ce8b.39, i64 noundef 4, ptr noundef nonnull align 1 %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.174b300a88867f6f1cdf072094f6ce8b.40) + %55 = getelementptr inbounds i8, ptr %0, i64 40 + %56 = load i16, ptr %55, align 8, !range !653, !noundef !7 + %57 = getelementptr inbounds i8, ptr %0, i64 42 + %58 = load i16, ptr %57, align 2 + store i16 %56, ptr %6, align 2 + %59 = getelementptr inbounds i8, ptr %6, i64 2 + store i16 %58, ptr %59, align 2 + %60 = call noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17h9485b9119de058a4E(ptr noalias noundef nonnull align 8 dereferenceable(16) %54, ptr noalias noundef nonnull readonly align 1 @anon.174b300a88867f6f1cdf072094f6ce8b.39, i64 noundef 4, ptr noundef nonnull align 1 %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.174b300a88867f6f1cdf072094f6ce8b.40) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) - %62 = call { ptr, i64 } @_ZN3url3Url4path17h538d0ad4adfee694E(ptr noalias noundef nonnull readonly align 8 dereferenceable(88) %0) - %63 = extractvalue { ptr, i64 } %62, 0 - %64 = extractvalue { ptr, i64 } %62, 1 - store ptr %63, ptr %5, align 8 - %65 = getelementptr inbounds i8, ptr %5, i64 8 - store i64 %64, ptr %65, align 8 - %66 = call noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17h9485b9119de058a4E(ptr noalias noundef nonnull align 8 dereferenceable(16) %61, ptr noalias noundef nonnull readonly align 1 @anon.174b300a88867f6f1cdf072094f6ce8b.41, i64 noundef 4, ptr noundef nonnull align 1 %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.174b300a88867f6f1cdf072094f6ce8b.31) + %61 = call { ptr, i64 } @_ZN3url3Url4path17h538d0ad4adfee694E(ptr noalias noundef nonnull readonly align 8 dereferenceable(88) %0) + %62 = extractvalue { ptr, i64 } %61, 0 + %63 = extractvalue { ptr, i64 } %61, 1 + store ptr %62, ptr %5, align 8 + %64 = getelementptr inbounds i8, ptr %5, i64 8 + store i64 %63, ptr %64, align 8 + %65 = call noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17h9485b9119de058a4E(ptr noalias noundef nonnull align 8 dereferenceable(16) %60, ptr noalias noundef nonnull readonly align 1 @anon.174b300a88867f6f1cdf072094f6ce8b.41, i64 noundef 4, ptr noundef nonnull align 1 %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.174b300a88867f6f1cdf072094f6ce8b.31) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) - %67 = call { ptr, i64 } @_ZN3url3Url5query17h2b3d8bebeabf55cbE(ptr noalias noundef nonnull readonly align 8 dereferenceable(88) %0) - %68 = extractvalue { ptr, i64 } %67, 0 - %69 = extractvalue { ptr, i64 } %67, 1 - store ptr %68, ptr %4, align 8 - %70 = getelementptr inbounds i8, ptr %4, i64 8 - store i64 %69, ptr %70, align 8 - %71 = call noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17h9485b9119de058a4E(ptr noalias noundef nonnull align 8 dereferenceable(16) %66, ptr noalias noundef nonnull readonly align 1 @anon.174b300a88867f6f1cdf072094f6ce8b.42, i64 noundef 5, ptr noundef nonnull align 1 %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.174b300a88867f6f1cdf072094f6ce8b.36) + %66 = call { ptr, i64 } @_ZN3url3Url5query17h2b3d8bebeabf55cbE(ptr noalias noundef nonnull readonly align 8 dereferenceable(88) %0) + %67 = extractvalue { ptr, i64 } %66, 0 + %68 = extractvalue { ptr, i64 } %66, 1 + store ptr %67, ptr %4, align 8 + %69 = getelementptr inbounds i8, ptr %4, i64 8 + store i64 %68, ptr %69, align 8 + %70 = call noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17h9485b9119de058a4E(ptr noalias noundef nonnull align 8 dereferenceable(16) %65, ptr noalias noundef nonnull readonly align 1 @anon.174b300a88867f6f1cdf072094f6ce8b.42, i64 noundef 5, ptr noundef nonnull align 1 %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.174b300a88867f6f1cdf072094f6ce8b.36) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) - %72 = call { ptr, i64 } @_ZN3url3Url8fragment17hb43f5ecf4d8e43e6E(ptr noalias noundef nonnull readonly align 8 dereferenceable(88) %0) - %73 = extractvalue { ptr, i64 } %72, 0 - %74 = extractvalue { ptr, i64 } %72, 1 - store ptr %73, ptr %3, align 8 - %75 = getelementptr inbounds i8, ptr %3, i64 8 - store i64 %74, ptr %75, align 8 - %76 = call noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17h9485b9119de058a4E(ptr noalias noundef nonnull align 8 dereferenceable(16) %71, ptr noalias noundef nonnull readonly align 1 @anon.174b300a88867f6f1cdf072094f6ce8b.43, i64 noundef 8, ptr noundef nonnull align 1 %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.174b300a88867f6f1cdf072094f6ce8b.36) - %77 = call noundef zeroext i1 @_ZN4core3fmt8builders11DebugStruct6finish17h084be9f45499029bE(ptr noalias noundef nonnull align 8 dereferenceable(16) %76) + %71 = call { ptr, i64 } @_ZN3url3Url8fragment17hb43f5ecf4d8e43e6E(ptr noalias noundef nonnull readonly align 8 dereferenceable(88) %0) + %72 = extractvalue { ptr, i64 } %71, 0 + %73 = extractvalue { ptr, i64 } %71, 1 + store ptr %72, ptr %3, align 8 + %74 = getelementptr inbounds i8, ptr %3, i64 8 + store i64 %73, ptr %74, align 8 + %75 = call noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17h9485b9119de058a4E(ptr noalias noundef nonnull align 8 dereferenceable(16) %70, ptr noalias noundef nonnull readonly align 1 @anon.174b300a88867f6f1cdf072094f6ce8b.43, i64 noundef 8, ptr noundef nonnull align 1 %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.174b300a88867f6f1cdf072094f6ce8b.36) + %76 = call noundef zeroext i1 @_ZN4core3fmt8builders11DebugStruct6finish17h084be9f45499029bE(ptr noalias noundef nonnull align 8 dereferenceable(16) %75) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) @@ -2846,7 +2845,7 @@ _ZN3url3Url16cannot_be_a_base17h5e3896910a5eea43E.exit: ; preds = %_ZN3url3Url5s call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) - ret i1 %77 + ret i1 %76 } ; Function Attrs: inlinehint nonlazybind uwtable diff --git a/bench/eastl/optimized/TestBitVector.cpp.ll b/bench/eastl/optimized/TestBitVector.cpp.ll index 63099518c76..a0d92cf4be6 100644 --- a/bench/eastl/optimized/TestBitVector.cpp.ll +++ b/bench/eastl/optimized/TestBitVector.cpp.ll @@ -14853,14 +14853,10 @@ invoke.cont120: ; preds = %return.loopexit.i.i for.cond125.preheader: ; preds = %invoke.cont120 %cmp1273676.not = icmp eq i64 %mul.i.i, %10 - br i1 %cmp1273676.not, label %for.end137, label %for.body128.preheader + br i1 %cmp1273676.not, label %for.end137, label %for.body128 -for.body128.preheader: ; preds = %for.cond125.preheader - %umax = call i64 @llvm.umax.i64(i64 %sub.i.i, i64 1) - br label %for.body128 - -for.body128: ; preds = %for.body128.preheader, %for.inc135 - %i124.03677 = phi i64 [ %inc136, %for.inc135 ], [ 0, %for.body128.preheader ] +for.body128: ; preds = %for.cond125.preheader, %for.inc135 + %i124.03677 = phi i64 [ %inc136, %for.inc135 ], [ 0, %for.cond125.preheader ] %cmp.i.i.i272 = icmp sgt i64 %i124.03677, -1 br i1 %cmp.i.i.i272, label %if.then.i.i.i, label %if.else.i.i.i @@ -14890,7 +14886,7 @@ invoke.cont129: ; preds = %if.else.i.i.i, %if. for.inc135: ; preds = %invoke.cont129 %inc136 = add nuw i64 %i124.03677, 1 - %exitcond.not = icmp eq i64 %inc136, %umax + %exitcond.not = icmp eq i64 %inc136, %sub.i.i br i1 %exitcond.not, label %for.end137, label %for.body128, !llvm.loop !43 for.end137: ; preds = %for.inc135, %for.cond125.preheader @@ -18219,8 +18215,7 @@ if.then.i2217: ; preds = %invoke.cont889 br i1 %cmp.i.i3176, label %if.then.i.i3180, label %if.else.i.i3177 if.then.i.i3180: ; preds = %if.then.i2217 - %sub.ptr.div.i.i3175 = ashr exact i64 %sub.ptr.sub.i.i.i2212, 3 - %sub.i.i3181 = sub nuw nsw i64 1, %sub.ptr.div.i.i3175 + %sub.i.i3181 = sub nuw nsw i64 1, %sub.ptr.sub.i.i.i2212 %561 = load ptr, ptr %mCapacityAllocator.i.i.i1627, align 8 %sub.ptr.lhs.cast.i.i.i3183 = ptrtoint ptr %561 to i64 %sub.ptr.sub.i.i.i3184 = sub i64 %sub.ptr.lhs.cast.i.i.i3183, %sub.ptr.lhs.cast.i.i.i2210 diff --git a/bench/eastl/optimized/TestTupleVector.cpp.ll b/bench/eastl/optimized/TestTupleVector.cpp.ll index 5a1b0a22c67..9e51231b79c 100644 --- a/bench/eastl/optimized/TestTupleVector.cpp.ll +++ b/bench/eastl/optimized/TestTupleVector.cpp.ll @@ -21789,7 +21789,6 @@ invoke.cont: ; preds = %if.then, %_ZN5eastl %temp.sroa.0.0 = phi ptr [ %call.i.i.i.i.i.i.i.i.i, %_ZN5eastl22uninitialized_copy_ptrIP10TestObjectS2_S2_EET1_T_T0_S3_.exit.i.i ], [ null, %if.then ] %temp.sroa.5.0 = phi ptr [ %5, %_ZN5eastl22uninitialized_copy_ptrIP10TestObjectS2_S2_EET1_T_T0_S3_.exit.i.i ], [ null, %if.then ] %temp.sroa.9.0 = phi ptr [ %4, %_ZN5eastl22uninitialized_copy_ptrIP10TestObjectS2_S2_EET1_T_T0_S3_.exit.i.i ], [ null, %if.then ] - %temp.sroa.22.0 = phi i64 [ %sub.i, %_ZN5eastl22uninitialized_copy_ptrIP10TestObjectS2_S2_EET1_T_T0_S3_.exit.i.i ], [ 0, %if.then ] %temp.sroa.25.0 = phi i64 [ %add.i.i.i.i.i.i.i, %_ZN5eastl22uninitialized_copy_ptrIP10TestObjectS2_S2_EET1_T_T0_S3_.exit.i.i ], [ 0, %if.then ] store ptr %temp.sroa.0.0, ptr %this, align 8 %add.ptr.i = getelementptr inbounds i8, ptr %this, i64 8 @@ -21803,7 +21802,7 @@ invoke.cont: ; preds = %if.then, %_ZN5eastl %mNumElements.i46 = getelementptr inbounds i8, ptr %this, i64 32 %14 = load i64, ptr %mNumElements.i46, align 8 store i64 %sub.i, ptr %mNumElements.i46, align 8 - store i64 %temp.sroa.22.0, ptr %mNumCapacity, align 8 + store i64 %sub.i, ptr %mNumCapacity, align 8 %mDataSizeAndAllocator.i9.i = getelementptr inbounds i8, ptr %this, i64 48 store i64 %temp.sroa.25.0, ptr %mDataSizeAndAllocator.i9.i, align 8 %add.ptr8.i = getelementptr inbounds %struct.TestObject, ptr %12, i64 %14 @@ -22004,19 +22003,20 @@ _ZN5eastl22uninitialized_copy_ptrIPfS1_S1_EET1_T_T0_S2_.exit: ; preds = %_ZN5eas if.else67: ; preds = %if.else %cmp.i.i.i.i69 = icmp eq i64 %1, %0 - br i1 %cmp.i.i.i.i69, label %_ZN5eastl4copyIPbS1_EET0_T_S3_S2_.exit74, label %if.end.i.i.i.i70 + br i1 %cmp.i.i.i.i69, label %_ZN5eastl4copyIP10TestObjectS2_EET0_T_S4_S3_.exit101.thread, label %_ZN5eastl4copyIPbS1_EET0_T_S3_S2_.exit74 -if.end.i.i.i.i70: ; preds = %if.else67 +_ZN5eastl4copyIP10TestObjectS2_EET0_T_S4_S3_.exit101.thread: ; preds = %if.else67 + %add.ptr79187 = getelementptr inbounds i8, ptr %this, i64 8 + br label %_ZN5eastl4copyIPfS1_EET0_T_S3_S2_.exit107 + +_ZN5eastl4copyIPbS1_EET0_T_S3_S2_.exit74: ; preds = %if.else67 %add.ptr69 = getelementptr inbounds i8, ptr %agg.tmp.sroa.2.0.copyload, i64 %1 %35 = load ptr, ptr %this, align 8 tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %35, ptr align 1 %add.ptr69, i64 %sub.i, i1 false) - br label %_ZN5eastl4copyIPbS1_EET0_T_S3_S2_.exit74 - -_ZN5eastl4copyIPbS1_EET0_T_S3_S2_.exit74: ; preds = %if.else67, %if.end.i.i.i.i70 %add.ptr79 = getelementptr inbounds i8, ptr %this, i64 8 %gepdiff153 = mul i64 %sub.i, 24 %cmp6.i.i.i.i78 = icmp sgt i64 %gepdiff153, 0 - br i1 %cmp6.i.i.i.i78, label %for.body.preheader.i.i.i.i80, label %_ZN5eastl4copyIP10TestObjectS2_EET0_T_S4_S3_.exit101 + br i1 %cmp6.i.i.i.i78, label %for.body.preheader.i.i.i.i80, label %if.end.i.i.i.i103 for.body.preheader.i.i.i.i80: ; preds = %_ZN5eastl4copyIPbS1_EET0_T_S3_S2_.exit74 %add.ptr76.idx = mul nsw i64 %1, 24 @@ -22057,12 +22057,9 @@ _ZN10TestObjectaSERKS_.exit.i.i.i.i96: ; preds = %if.then.i.i.i.i.i89 %incdec.ptr.i.i.i.i98 = getelementptr inbounds i8, ptr %first.addr.07.i.i.i.i86, i64 24 %incdec.ptr1.i.i.i.i99 = getelementptr inbounds i8, ptr %result.addr.08.i.i.i.i85, i64 24 %cmp.i.i.i.i100 = icmp sgt i64 %n.09.i.i.i.i84, 1 - br i1 %cmp.i.i.i.i100, label %for.body.i.i.i.i83, label %_ZN5eastl4copyIP10TestObjectS2_EET0_T_S4_S3_.exit101, !llvm.loop !725 - -_ZN5eastl4copyIP10TestObjectS2_EET0_T_S4_S3_.exit101: ; preds = %_ZN10TestObjectaSERKS_.exit.i.i.i.i96, %_ZN5eastl4copyIPbS1_EET0_T_S3_S2_.exit74 - br i1 %cmp.i.i.i.i69, label %_ZN5eastl4copyIPfS1_EET0_T_S3_S2_.exit107, label %if.end.i.i.i.i103 + br i1 %cmp.i.i.i.i100, label %for.body.i.i.i.i83, label %if.end.i.i.i.i103, !llvm.loop !725 -if.end.i.i.i.i103: ; preds = %_ZN5eastl4copyIP10TestObjectS2_EET0_T_S4_S3_.exit101 +if.end.i.i.i.i103: ; preds = %_ZN10TestObjectaSERKS_.exit.i.i.i.i96, %_ZN5eastl4copyIPbS1_EET0_T_S3_S2_.exit74 %add.ptr84.idx = shl nsw i64 %1, 2 %add.ptr84 = getelementptr inbounds i8, ptr %agg.tmp.sroa.4.0.copyload, i64 %add.ptr84.idx %add.ptr87 = getelementptr inbounds i8, ptr %this, i64 16 @@ -22071,14 +22068,15 @@ if.end.i.i.i.i103: ; preds = %_ZN5eastl4copyIP10T tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %42, ptr align 4 %add.ptr84, i64 %gepdiff155, i1 false) br label %_ZN5eastl4copyIPfS1_EET0_T_S3_S2_.exit107 -_ZN5eastl4copyIPfS1_EET0_T_S3_S2_.exit107: ; preds = %_ZN5eastl4copyIP10TestObjectS2_EET0_T_S4_S3_.exit101, %if.end.i.i.i.i103 +_ZN5eastl4copyIPfS1_EET0_T_S3_S2_.exit107: ; preds = %_ZN5eastl4copyIP10TestObjectS2_EET0_T_S4_S3_.exit101.thread, %if.end.i.i.i.i103 + %add.ptr79190192 = phi ptr [ %add.ptr79187, %_ZN5eastl4copyIP10TestObjectS2_EET0_T_S4_S3_.exit101.thread ], [ %add.ptr79, %if.end.i.i.i.i103 ] %43 = load i64, ptr %mNumElements, align 8, !noalias !172 %cmp.not.i.i.not = icmp eq i64 %sub.i, %43 br i1 %cmp.not.i.i.not, label %if.end96, label %if.then.i if.then.i: ; preds = %_ZN5eastl4copyIPfS1_EET0_T_S3_S2_.exit107 store i64 %sub.i, ptr %mNumElements, align 8, !noalias !726 - %44 = load ptr, ptr %add.ptr79, align 8, !noalias !726 + %44 = load ptr, ptr %add.ptr79190192, align 8, !noalias !726 %add.ptr45.i = getelementptr inbounds %struct.TestObject, ptr %44, i64 %43 %add.ptr42.i = getelementptr inbounds %struct.TestObject, ptr %44, i64 %sub.i %_ZN10TestObject12sTODtorCountE.promoted.i.i.i129 = load i64, ptr @_ZN10TestObject12sTODtorCountE, align 8, !noalias !726 diff --git a/bench/entt/optimized/dispatcher.cpp.ll b/bench/entt/optimized/dispatcher.cpp.ll index 3415dc639ce..e63f23db7af 100644 --- a/bench/entt/optimized/dispatcher.cpp.ll +++ b/bench/entt/optimized/dispatcher.cpp.ll @@ -1710,7 +1710,6 @@ call.i.noexc: ; preds = %invoke.cont140 for.body.lr.ph.i.i: ; preds = %call.i.noexc %signal.i.i = getelementptr inbounds i8, ptr %call.i952, i64 8 %_M_finish.i.i.i.i947 = getelementptr inbounds i8, ptr %call.i952, i64 16 - %umax.i.i = call i64 @llvm.umax.i64(i64 %sub.ptr.sub.i.i.i946, i64 1) br label %for.body.i.i if.then.i.i.i.i948: ; preds = %_ZNK4entt4sighIFvR14one_more_eventESaIvEE7publishES2_.exit.i.i @@ -1774,7 +1773,7 @@ for.body.i.i.i: ; preds = %.noexc953, %for.bod _ZNK4entt4sighIFvR14one_more_eventESaIvEE7publishES2_.exit.i.i: ; preds = %.noexc953, %for.body.i.i %inc.i.i = add nuw i64 %pos.026.i.i, 1 - %exitcond.not.i.i = icmp eq i64 %inc.i.i, %umax.i.i + %exitcond.not.i.i = icmp eq i64 %inc.i.i, %sub.ptr.sub.i.i.i946 br i1 %exitcond.not.i.i, label %if.then.i.i.i.i948, label %for.body.i.i, !llvm.loop !87 invoke.cont143: ; preds = %invoke.cont.i.i.i.i.i951, %if.end.i.i.i.i, %call.i.noexc @@ -4536,7 +4535,6 @@ entry: for.body.lr.ph.i: ; preds = %entry %signal.i = getelementptr inbounds i8, ptr %call, i64 8 %_M_finish.i.i.i = getelementptr inbounds i8, ptr %call, i64 16 - %umax.i = tail call i64 @llvm.umax.i64(i64 %sub.ptr.sub.i.i, i64 1) %2 = load ptr, ptr %_M_finish.i.i.i, align 8, !tbaa !111 %3 = load ptr, ptr %signal.i, align 8, !tbaa !113 %4 = icmp eq ptr %2, %3 @@ -4605,7 +4603,7 @@ for.body.i.i: ; preds = %for.body.i.i, %for. _ZNK4entt4sighIFvR13another_eventESaIvEE7publishES2_.exit.i: ; preds = %for.body.i.i, %for.body.i %inc.i = add nuw i64 %pos.026.i, 1 - %exitcond.not.i = icmp eq i64 %inc.i, %umax.i + %exitcond.not.i = icmp eq i64 %inc.i, %sub.ptr.sub.i.i br i1 %exitcond.not.i, label %if.then.i.i.i.loopexit3, label %for.body.i, !llvm.loop !118 _ZN4entt8internal18dispatcher_handlerI13another_eventSaIvEE7publishEv.exit: ; preds = %invoke.cont.i.i.i.i, %if.end.i.i.i, %entry @@ -4687,7 +4685,6 @@ entry: for.body.lr.ph.i: ; preds = %entry %signal.i = getelementptr inbounds i8, ptr %call, i64 8 %_M_finish.i.i.i = getelementptr inbounds i8, ptr %call, i64 16 - %umax.i = tail call i64 @llvm.umax.i64(i64 %sub.ptr.sub.i.i, i64 1) %2 = load ptr, ptr %_M_finish.i.i.i, align 8, !tbaa !96 %3 = load ptr, ptr %signal.i, align 8, !tbaa !91 %4 = icmp eq ptr %2, %3 @@ -4756,7 +4753,7 @@ for.body.i.i: ; preds = %for.body.i.i, %for. _ZNK4entt4sighIFvR8an_eventESaIvEE7publishES2_.exit.i: ; preds = %for.body.i.i, %for.body.i %inc.i = add nuw i64 %pos.026.i, 1 - %exitcond.not.i = icmp eq i64 %inc.i, %umax.i + %exitcond.not.i = icmp eq i64 %inc.i, %sub.ptr.sub.i.i br i1 %exitcond.not.i, label %if.then.i.i.i.loopexit3, label %for.body.i, !llvm.loop !120 _ZN4entt8internal18dispatcher_handlerI8an_eventSaIvEE7publishEv.exit: ; preds = %invoke.cont.i.i.i.i, %if.end.i.i.i, %entry @@ -9739,7 +9736,6 @@ call.i382.noexc: ; preds = %invoke.cont90 for.body.lr.ph.i.i: ; preds = %call.i382.noexc %signal.i.i385 = getelementptr inbounds i8, ptr %call.i382397, i64 8 %_M_finish.i.i.i.i386 = getelementptr inbounds i8, ptr %call.i382397, i64 16 - %umax.i.i = call i64 @llvm.umax.i64(i64 %sub.ptr.sub.i.i.i, i64 1) %86 = load ptr, ptr %_M_finish.i.i.i.i386, align 8, !tbaa !96 %87 = load ptr, ptr %signal.i.i385, align 8, !tbaa !91 %88 = icmp eq ptr %86, %87 @@ -9811,7 +9807,7 @@ for.body.i.i.i390: ; preds = %.noexc398, %for.bod _ZNK4entt4sighIFvR8an_eventESaIvEE7publishES2_.exit.i.i: ; preds = %.noexc398, %for.body.i.i %inc.i.i = add nuw i64 %pos.026.i.i, 1 - %exitcond.not.i.i = icmp eq i64 %inc.i.i, %umax.i.i + %exitcond.not.i.i = icmp eq i64 %inc.i.i, %sub.ptr.sub.i.i.i br i1 %exitcond.not.i.i, label %if.then.i.i.i.i395.loopexit175, label %for.body.i.i, !llvm.loop !206 invoke.cont94: ; preds = %invoke.cont.i.i.i.i.i, %if.end.i.i.i.i, %call.i382.noexc @@ -10040,7 +10036,6 @@ call.i459.noexc: ; preds = %invoke.cont128 for.body.lr.ph.i.i466: ; preds = %call.i459.noexc %signal.i.i467 = getelementptr inbounds i8, ptr %call.i459504, i64 8 %_M_finish.i.i.i.i468 = getelementptr inbounds i8, ptr %call.i459504, i64 16 - %umax.i.i469 = call i64 @llvm.umax.i64(i64 %sub.ptr.sub.i.i.i464, i64 1) %124 = load ptr, ptr %_M_finish.i.i.i.i468, align 8, !tbaa !96 %125 = load ptr, ptr %signal.i.i467, align 8, !tbaa !91 %126 = icmp eq ptr %124, %125 @@ -10112,7 +10107,7 @@ for.body.i.i.i479: ; preds = %.noexc505, %for.bod _ZNK4entt4sighIFvR8an_eventESaIvEE7publishES2_.exit.i.i485: ; preds = %.noexc505, %for.body.i.i470 %inc.i.i486 = add nuw i64 %pos.026.i.i471, 1 - %exitcond.not.i.i487 = icmp eq i64 %inc.i.i486, %umax.i.i469 + %exitcond.not.i.i487 = icmp eq i64 %inc.i.i486, %sub.ptr.sub.i.i.i464 br i1 %exitcond.not.i.i487, label %if.then.i.i.i.i488.loopexit174, label %for.body.i.i470, !llvm.loop !212 invoke.cont132: ; preds = %invoke.cont.i.i.i.i.i503, %if.end.i.i.i.i498, %call.i459.noexc @@ -10398,7 +10393,6 @@ call.i595.noexc: ; preds = %invoke.cont174 for.body.lr.ph.i.i602: ; preds = %call.i595.noexc %signal.i.i603 = getelementptr inbounds i8, ptr %call.i595640, i64 8 %_M_finish.i.i.i.i604 = getelementptr inbounds i8, ptr %call.i595640, i64 16 - %umax.i.i605 = call i64 @llvm.umax.i64(i64 %sub.ptr.sub.i.i.i600, i64 1) %163 = load ptr, ptr %_M_finish.i.i.i.i604, align 8, !tbaa !96 %164 = load ptr, ptr %signal.i.i603, align 8, !tbaa !91 %165 = icmp eq ptr %163, %164 @@ -10470,7 +10464,7 @@ for.body.i.i.i615: ; preds = %.noexc641, %for.bod _ZNK4entt4sighIFvR8an_eventESaIvEE7publishES2_.exit.i.i621: ; preds = %.noexc641, %for.body.i.i606 %inc.i.i622 = add nuw i64 %pos.026.i.i607, 1 - %exitcond.not.i.i623 = icmp eq i64 %inc.i.i622, %umax.i.i605 + %exitcond.not.i.i623 = icmp eq i64 %inc.i.i622, %sub.ptr.sub.i.i.i600 br i1 %exitcond.not.i.i623, label %if.then.i.i.i.i624.loopexit173, label %for.body.i.i606, !llvm.loop !218 invoke.cont179: ; preds = %invoke.cont.i.i.i.i.i639, %if.end.i.i.i.i634, %call.i595.noexc @@ -12404,7 +12398,6 @@ entry: for.body.lr.ph: ; preds = %entry %signal = getelementptr inbounds i8, ptr %this, i64 8 %_M_finish.i.i = getelementptr inbounds i8, ptr %this, i64 16 - %umax = tail call i64 @llvm.umax.i64(i64 %sub.ptr.sub.i, i64 1) %2 = load ptr, ptr %_M_finish.i.i, align 8, !tbaa !96 %3 = load ptr, ptr %signal, align 8, !tbaa !91 %4 = icmp eq ptr %2, %3 @@ -12476,7 +12469,7 @@ for.body.i: ; preds = %for.body.i, %for.bo _ZNK4entt4sighIFvR8an_eventESaIvEE7publishES2_.exit: ; preds = %for.body.i, %for.body %inc = add nuw i64 %pos.026, 1 - %exitcond.not = icmp eq i64 %inc, %umax + %exitcond.not = icmp eq i64 %inc, %sub.ptr.sub.i br i1 %exitcond.not, label %for.cond.cleanup.loopexit3, label %for.body, !llvm.loop !250 } @@ -13335,7 +13328,6 @@ entry: for.body.lr.ph: ; preds = %entry %signal = getelementptr inbounds i8, ptr %this, i64 8 %_M_finish.i.i = getelementptr inbounds i8, ptr %this, i64 16 - %umax = tail call i64 @llvm.umax.i64(i64 %sub.ptr.sub.i, i64 1) %2 = load ptr, ptr %_M_finish.i.i, align 8, !tbaa !76 %3 = load ptr, ptr %signal, align 8, !tbaa !78 %4 = icmp eq ptr %2, %3 @@ -13407,7 +13399,7 @@ for.body.i: ; preds = %for.body.i, %for.bo _ZNK4entt4sighIFvR14one_more_eventESaIvEE7publishES2_.exit: ; preds = %for.body.i, %for.body %inc = add nuw i64 %pos.026, 1 - %exitcond.not = icmp eq i64 %inc, %umax + %exitcond.not = icmp eq i64 %inc, %sub.ptr.sub.i br i1 %exitcond.not, label %for.cond.cleanup.loopexit3, label %for.body, !llvm.loop !275 } @@ -14071,7 +14063,6 @@ entry: for.body.lr.ph: ; preds = %entry %signal = getelementptr inbounds i8, ptr %this, i64 8 %_M_finish.i.i = getelementptr inbounds i8, ptr %this, i64 16 - %umax = tail call i64 @llvm.umax.i64(i64 %sub.ptr.sub.i, i64 1) %2 = load ptr, ptr %_M_finish.i.i, align 8, !tbaa !111 %3 = load ptr, ptr %signal, align 8, !tbaa !113 %4 = icmp eq ptr %2, %3 @@ -14143,7 +14134,7 @@ for.body.i: ; preds = %for.body.i, %for.bo _ZNK4entt4sighIFvR13another_eventESaIvEE7publishES2_.exit: ; preds = %for.body.i, %for.body %inc = add nuw i64 %pos.026, 1 - %exitcond.not = icmp eq i64 %inc, %umax + %exitcond.not = icmp eq i64 %inc, %sub.ptr.sub.i br i1 %exitcond.not, label %for.cond.cleanup.loopexit3, label %for.body, !llvm.loop !295 } diff --git a/bench/flatbuffers/optimized/binary_annotator.cpp.ll b/bench/flatbuffers/optimized/binary_annotator.cpp.ll index dfeedd9a72e..e5fabd59ab6 100644 --- a/bench/flatbuffers/optimized/binary_annotator.cpp.ll +++ b/bench/flatbuffers/optimized/binary_annotator.cpp.ll @@ -25685,8 +25685,8 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN11flatbuffers15BinaryAnnota %sub.ptr.lhs.cast.i.i.i.i.i.i = ptrtoint ptr %__i.sroa.0.012.i to i64 %sub.ptr.sub.i.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i.i, 4 - %.pre.i.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i - %add.ptr.i.i.i.i.i.i = getelementptr inbounds %"struct.flatbuffers::BinaryAnnotator::VTable::Entry", ptr %add.ptr.i2.i, i64 %.pre.i.i.i.i.i.i + %idx.neg.i.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i + %add.ptr.i.i.i.i.i.i = getelementptr inbounds %"struct.flatbuffers::BinaryAnnotator::VTable::Entry", ptr %add.ptr.i2.i, i64 %idx.neg.i.i.i.i.i.i tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %add.ptr.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(1) %__first.coerce, i64 %sub.ptr.sub.i.i.i.i.i.i, i1 false) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(10) %__first.coerce, ptr noundef nonnull align 8 dereferenceable(10) %__val.i, i64 10, i1 false) br label %for.inc.i @@ -26063,8 +26063,8 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN11flatbuffers15BinaryAnnota %sub.ptr.lhs.cast.i.i.i.i.i.i.i = ptrtoint ptr %__i.sroa.0.012.i.ptr.i to i64 %sub.ptr.sub.i.i.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i47.i %sub.ptr.div.i.i.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i.i.i, 4 - %.pre.i.i.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i.i - %add.ptr.i.i.i.i.i.i.i = getelementptr inbounds %"struct.flatbuffers::BinaryAnnotator::VTable::Entry", ptr %add.ptr.i2.i.i, i64 %.pre.i.i.i.i.i.i.i + %idx.neg.i.i.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i.i + %add.ptr.i.i.i.i.i.i.i = getelementptr inbounds %"struct.flatbuffers::BinaryAnnotator::VTable::Entry", ptr %add.ptr.i2.i.i, i64 %idx.neg.i.i.i.i.i.i.i tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %add.ptr.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(1) %__first.sroa.0.046.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i, i1 false) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(10) %__first.sroa.0.046.i, ptr noundef nonnull align 8 dereferenceable(10) %__val.i.i, i64 10, i1 false) br label %for.inc.i.i @@ -26136,8 +26136,8 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN11flatbuffers15BinaryAnnota %sub.ptr.lhs.cast.i.i.i.i.i.i35.i = ptrtoint ptr %__i.sroa.0.012.i13.i to i64 %sub.ptr.sub.i.i.i.i.i.i36.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i35.i, %sub.ptr.rhs.cast.i.lcssa.i %sub.ptr.div.i.i.i.i.i.i37.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i.i36.i, 4 - %.pre.i.i.i.i.i.i38.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i37.i - %add.ptr.i.i.i.i.i.i39.i = getelementptr inbounds %"struct.flatbuffers::BinaryAnnotator::VTable::Entry", ptr %add.ptr.i2.i34.i, i64 %.pre.i.i.i.i.i.i38.i + %idx.neg.i.i.i.i.i.i38.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i37.i + %add.ptr.i.i.i.i.i.i39.i = getelementptr inbounds %"struct.flatbuffers::BinaryAnnotator::VTable::Entry", ptr %add.ptr.i2.i34.i, i64 %idx.neg.i.i.i.i.i.i38.i tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %add.ptr.i.i.i.i.i.i39.i, ptr noundef nonnull align 8 dereferenceable(1) %__first.sroa.0.0.lcssa.i, i64 %sub.ptr.sub.i.i.i.i.i.i36.i, i1 false) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(10) %__first.sroa.0.0.lcssa.i, ptr noundef nonnull align 8 dereferenceable(10) %__val.i5.i, i64 10, i1 false) br label %for.inc.i25.i @@ -26579,8 +26579,8 @@ if.then12.i: ; preds = %while.body.i41 if.then17.i: ; preds = %if.then12.i %incdec.ptr18.i = getelementptr inbounds i8, ptr %__last2.addr.0.i, i64 16 - %tobool.not.i.i.i.i.i17.i = icmp eq ptr %incdec.ptr18.i, %__buffer - br i1 %tobool.not.i.i.i.i.i17.i, label %if.end89, label %return.sink.split.i + %tobool.not.i.i.i.i.i13.i = icmp eq ptr %incdec.ptr18.i, %__buffer + br i1 %tobool.not.i.i.i.i.i13.i, label %if.end89, label %return.sink.split.i if.else26.i: ; preds = %while.body.i41 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(10) %incdec.ptr.i11.i, ptr noundef nonnull align 8 dereferenceable(10) %__last2.addr.0.i, i64 10, i1 false) @@ -26594,13 +26594,13 @@ if.end31.i: ; preds = %if.else26.i return.sink.split.i: ; preds = %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN11flatbuffers15BinaryAnnotator6VTable5EntryESt6vectorIS5_SaIS5_EEEES6_ET0_T_SC_SB_.exit37.thread, %if.then17.i %incdec.ptr18.sink.i = phi ptr [ %incdec.ptr18.i, %if.then17.i ], [ %add.ptr.i.i.i.i.i36120, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN11flatbuffers15BinaryAnnotator6VTable5EntryESt6vectorIS5_SaIS5_EEEES6_ET0_T_SC_SB_.exit37.thread ] %incdec.ptr.i11.lcssa.sink.i = phi ptr [ %incdec.ptr.i11.i, %if.then17.i ], [ %__last.coerce, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN11flatbuffers15BinaryAnnotator6VTable5EntryESt6vectorIS5_SaIS5_EEEES6_ET0_T_SC_SB_.exit37.thread ] - %sub.ptr.lhs.cast.i.i.i.i.i13.i = ptrtoint ptr %incdec.ptr18.sink.i to i64 - %sub.ptr.rhs.cast.i.i.i.i.i14.i = ptrtoint ptr %__buffer to i64 - %sub.ptr.sub.i.i.i.i.i15.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i13.i, %sub.ptr.rhs.cast.i.i.i.i.i14.i - %sub.ptr.div.i.i.i.i.i16.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i15.i, 4 - %.pre.i.i.i.i.i18.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i16.i - %add.ptr.i.i.i.i.i20.i = getelementptr inbounds %"struct.flatbuffers::BinaryAnnotator::VTable::Entry", ptr %incdec.ptr.i11.lcssa.sink.i, i64 %.pre.i.i.i.i.i18.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i20.i, ptr align 8 %__buffer, i64 %sub.ptr.sub.i.i.i.i.i15.i, i1 false) + %sub.ptr.lhs.cast.i.i.i.i.i15.i = ptrtoint ptr %incdec.ptr18.sink.i to i64 + %sub.ptr.rhs.cast.i.i.i.i.i16.i = ptrtoint ptr %__buffer to i64 + %sub.ptr.sub.i.i.i.i.i17.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i15.i, %sub.ptr.rhs.cast.i.i.i.i.i16.i + %sub.ptr.div.i.i.i.i.i18.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i17.i, 4 + %idx.neg.i.i.i.i.i19.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i18.i + %add.ptr.i.i.i.i.i20.i = getelementptr inbounds %"struct.flatbuffers::BinaryAnnotator::VTable::Entry", ptr %incdec.ptr.i11.lcssa.sink.i, i64 %idx.neg.i.i.i.i.i19.i + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i20.i, ptr align 8 %__buffer, i64 %sub.ptr.sub.i.i.i.i.i17.i, i1 false) br label %if.end89 if.else29: ; preds = %if.else @@ -26727,19 +26727,19 @@ if.then.i.i.i.i.i: ; preds = %if.then4 br label %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN11flatbuffers15BinaryAnnotator6VTable5EntryESt6vectorIS5_SaIS5_EEEES6_ET0_T_SC_SB_.exit _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN11flatbuffers15BinaryAnnotator6VTable5EntryESt6vectorIS5_SaIS5_EEEES6_ET0_T_SC_SB_.exit: ; preds = %if.then4, %if.then.i.i.i.i.i - %tobool.not.i.i.i.i.i13 = icmp eq ptr %__middle.coerce, %__first.coerce - br i1 %tobool.not.i.i.i.i.i13, label %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN11flatbuffers15BinaryAnnotator6VTable5EntryESt6vectorIS5_SaIS5_EEEESA_ET0_T_SC_SB_.exit, label %if.then.i.i.i.i.i14 - -if.then.i.i.i.i.i14: ; preds = %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN11flatbuffers15BinaryAnnotator6VTable5EntryESt6vectorIS5_SaIS5_EEEES6_ET0_T_SC_SB_.exit - %sub.ptr.rhs.cast.i.i.i.i.i11 = ptrtoint ptr %__first.coerce to i64 - %sub.ptr.sub.i.i.i.i.i12 = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i.i.i.i.i11 - %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i12, 4 - %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i - %add.ptr.i.i.i.i.i15 = getelementptr inbounds %"struct.flatbuffers::BinaryAnnotator::VTable::Entry", ptr %__last.coerce, i64 %.pre.i.i.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i15, ptr align 8 %__first.coerce, i64 %sub.ptr.sub.i.i.i.i.i12, i1 false) + %tobool.not.i.i.i.i.i10 = icmp eq ptr %__middle.coerce, %__first.coerce + br i1 %tobool.not.i.i.i.i.i10, label %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN11flatbuffers15BinaryAnnotator6VTable5EntryESt6vectorIS5_SaIS5_EEEESA_ET0_T_SC_SB_.exit, label %if.then.i.i.i.i.i11 + +if.then.i.i.i.i.i11: ; preds = %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN11flatbuffers15BinaryAnnotator6VTable5EntryESt6vectorIS5_SaIS5_EEEES6_ET0_T_SC_SB_.exit + %sub.ptr.rhs.cast.i.i.i.i.i13 = ptrtoint ptr %__first.coerce to i64 + %sub.ptr.sub.i.i.i.i.i14 = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i.i.i.i.i13 + %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i14, 4 + %idx.neg.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i + %add.ptr.i.i.i.i.i15 = getelementptr inbounds %"struct.flatbuffers::BinaryAnnotator::VTable::Entry", ptr %__last.coerce, i64 %idx.neg.i.i.i.i.i + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i15, ptr align 8 %__first.coerce, i64 %sub.ptr.sub.i.i.i.i.i14, i1 false) br label %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN11flatbuffers15BinaryAnnotator6VTable5EntryESt6vectorIS5_SaIS5_EEEESA_ET0_T_SC_SB_.exit -_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN11flatbuffers15BinaryAnnotator6VTable5EntryESt6vectorIS5_SaIS5_EEEESA_ET0_T_SC_SB_.exit: ; preds = %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN11flatbuffers15BinaryAnnotator6VTable5EntryESt6vectorIS5_SaIS5_EEEES6_ET0_T_SC_SB_.exit, %if.then.i.i.i.i.i14 +_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN11flatbuffers15BinaryAnnotator6VTable5EntryESt6vectorIS5_SaIS5_EEEESA_ET0_T_SC_SB_.exit: ; preds = %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN11flatbuffers15BinaryAnnotator6VTable5EntryESt6vectorIS5_SaIS5_EEEES6_ET0_T_SC_SB_.exit, %if.then.i.i.i.i.i11 br i1 %tobool.not.i.i.i.i.i, label %_ZSt4moveIPN11flatbuffers15BinaryAnnotator6VTable5EntryEN9__gnu_cxx17__normal_iteratorIS4_St6vectorIS3_SaIS3_EEEEET0_T_SC_SB_.exit, label %if.then.i.i.i.i.i20 if.then.i.i.i.i.i20: ; preds = %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN11flatbuffers15BinaryAnnotator6VTable5EntryESt6vectorIS5_SaIS5_EEEESA_ET0_T_SC_SB_.exit @@ -26780,17 +26780,18 @@ if.then.i.i.i.i.i33: ; preds = %_ZSt4moveIN9__gnu_c br label %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN11flatbuffers15BinaryAnnotator6VTable5EntryESt6vectorIS5_SaIS5_EEEESA_ET0_T_SC_SB_.exit _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN11flatbuffers15BinaryAnnotator6VTable5EntryESt6vectorIS5_SaIS5_EEEESA_ET0_T_SC_SB_.exit: ; preds = %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN11flatbuffers15BinaryAnnotator6VTable5EntryESt6vectorIS5_SaIS5_EEEES6_ET0_T_SC_SB_.exit28, %if.then.i.i.i.i.i33 - %sub.ptr.div.i.i.i.i.i38 = ashr exact i64 %sub.ptr.sub.i.i.i.i.i24, 4 - %.pre.i.i.i.i.i40 = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i38 - br i1 %tobool.not.i.i.i.i.i25, label %_ZSt13move_backwardIPN11flatbuffers15BinaryAnnotator6VTable5EntryEN9__gnu_cxx17__normal_iteratorIS4_St6vectorIS3_SaIS3_EEEEET0_T_SC_SB_.exit, label %if.then.i.i.i.i.i41 + br i1 %tobool.not.i.i.i.i.i25, label %_ZSt13move_backwardIPN11flatbuffers15BinaryAnnotator6VTable5EntryEN9__gnu_cxx17__normal_iteratorIS4_St6vectorIS3_SaIS3_EEEEET0_T_SC_SB_.exit, label %if.then.i.i.i.i.i36 -if.then.i.i.i.i.i41: ; preds = %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN11flatbuffers15BinaryAnnotator6VTable5EntryESt6vectorIS5_SaIS5_EEEESA_ET0_T_SC_SB_.exit - %add.ptr.i.i.i.i.i42 = getelementptr inbounds %"struct.flatbuffers::BinaryAnnotator::VTable::Entry", ptr %__last.coerce, i64 %.pre.i.i.i.i.i40 +if.then.i.i.i.i.i36: ; preds = %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN11flatbuffers15BinaryAnnotator6VTable5EntryESt6vectorIS5_SaIS5_EEEESA_ET0_T_SC_SB_.exit + %sub.ptr.div.i.i.i.i.i40 = ashr exact i64 %sub.ptr.sub.i.i.i.i.i24, 4 + %idx.neg.i.i.i.i.i41 = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i40 + %add.ptr.i.i.i.i.i42 = getelementptr inbounds %"struct.flatbuffers::BinaryAnnotator::VTable::Entry", ptr %__last.coerce, i64 %idx.neg.i.i.i.i.i41 tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i42, ptr align 8 %__buffer, i64 %sub.ptr.sub.i.i.i.i.i24, i1 false) br label %_ZSt13move_backwardIPN11flatbuffers15BinaryAnnotator6VTable5EntryEN9__gnu_cxx17__normal_iteratorIS4_St6vectorIS3_SaIS3_EEEEET0_T_SC_SB_.exit -_ZSt13move_backwardIPN11flatbuffers15BinaryAnnotator6VTable5EntryEN9__gnu_cxx17__normal_iteratorIS4_St6vectorIS3_SaIS3_EEEEET0_T_SC_SB_.exit: ; preds = %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN11flatbuffers15BinaryAnnotator6VTable5EntryESt6vectorIS5_SaIS5_EEEESA_ET0_T_SC_SB_.exit, %if.then.i.i.i.i.i41 - %add.ptr2.i.i.i.i.i43 = getelementptr inbounds %"struct.flatbuffers::BinaryAnnotator::VTable::Entry", ptr %__last.coerce, i64 %.pre.i.i.i.i.i40 +_ZSt13move_backwardIPN11flatbuffers15BinaryAnnotator6VTable5EntryEN9__gnu_cxx17__normal_iteratorIS4_St6vectorIS3_SaIS3_EEEEET0_T_SC_SB_.exit: ; preds = %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN11flatbuffers15BinaryAnnotator6VTable5EntryESt6vectorIS5_SaIS5_EEEESA_ET0_T_SC_SB_.exit, %if.then.i.i.i.i.i36 + %idx.neg1.pre-phi.i.i.i.i.i43 = phi i64 [ %idx.neg.i.i.i.i.i41, %if.then.i.i.i.i.i36 ], [ 0, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN11flatbuffers15BinaryAnnotator6VTable5EntryESt6vectorIS5_SaIS5_EEEESA_ET0_T_SC_SB_.exit ] + %add.ptr2.i.i.i.i.i44 = getelementptr inbounds %"struct.flatbuffers::BinaryAnnotator::VTable::Entry", ptr %__last.coerce, i64 %idx.neg1.pre-phi.i.i.i.i.i43 br label %return if.else44: ; preds = %if.else20 @@ -26907,7 +26908,7 @@ for.cond.i.i.backedge: ; preds = %for.end58.i.i, %if. br label %for.cond.i.i, !llvm.loop !281 return: ; preds = %for.end58.i.i, %for.end.i.i, %for.body.i.i.i, %if.else.i.i, %if.else44, %if.then22, %if.then, %_ZSt13move_backwardIPN11flatbuffers15BinaryAnnotator6VTable5EntryEN9__gnu_cxx17__normal_iteratorIS4_St6vectorIS3_SaIS3_EEEEET0_T_SC_SB_.exit, %_ZSt4moveIPN11flatbuffers15BinaryAnnotator6VTable5EntryEN9__gnu_cxx17__normal_iteratorIS4_St6vectorIS3_SaIS3_EEEEET0_T_SC_SB_.exit - %retval.sroa.0.0 = phi ptr [ %add.ptr.i.i.i.i.i21, %_ZSt4moveIPN11flatbuffers15BinaryAnnotator6VTable5EntryEN9__gnu_cxx17__normal_iteratorIS4_St6vectorIS3_SaIS3_EEEEET0_T_SC_SB_.exit ], [ %add.ptr2.i.i.i.i.i43, %_ZSt13move_backwardIPN11flatbuffers15BinaryAnnotator6VTable5EntryEN9__gnu_cxx17__normal_iteratorIS4_St6vectorIS3_SaIS3_EEEEET0_T_SC_SB_.exit ], [ %__first.coerce, %if.then ], [ %__last.coerce, %if.then22 ], [ %__last.coerce, %if.else44 ], [ %__first.coerce, %if.else.i.i ], [ %__middle.coerce, %for.body.i.i.i ], [ %add.ptr.i.i.i, %for.end.i.i ], [ %add.ptr.i.i.i, %for.end58.i.i ] + %retval.sroa.0.0 = phi ptr [ %add.ptr.i.i.i.i.i21, %_ZSt4moveIPN11flatbuffers15BinaryAnnotator6VTable5EntryEN9__gnu_cxx17__normal_iteratorIS4_St6vectorIS3_SaIS3_EEEEET0_T_SC_SB_.exit ], [ %add.ptr2.i.i.i.i.i44, %_ZSt13move_backwardIPN11flatbuffers15BinaryAnnotator6VTable5EntryEN9__gnu_cxx17__normal_iteratorIS4_St6vectorIS3_SaIS3_EEEEET0_T_SC_SB_.exit ], [ %__first.coerce, %if.then ], [ %__last.coerce, %if.then22 ], [ %__last.coerce, %if.else44 ], [ %__first.coerce, %if.else.i.i ], [ %__middle.coerce, %for.body.i.i.i ], [ %add.ptr.i.i.i, %for.end.i.i ], [ %add.ptr.i.i.i, %for.end58.i.i ] ret ptr %retval.sroa.0.0 } diff --git a/bench/fmt/optimized/compile-test.cc.ll b/bench/fmt/optimized/compile-test.cc.ll index 5ed9f014a8c..f9f68627b98 100644 --- a/bench/fmt/optimized/compile-test.cc.ll +++ b/bench/fmt/optimized/compile-test.cc.ll @@ -10066,7 +10066,7 @@ invoke.cont31: ; preds = %_ZN3fmt3v106detail1 %size_.i = getelementptr inbounds i8, ptr %ref.tmp35, i64 8 store i64 %sub.ptr.sub.i, ptr %size_.i, align 8 %cmp.i.i.i.i.i = icmp eq ptr %17, %16 - br i1 %cmp.i.i.i.i.i, label %_ZN3fmt3v10eqENS0_17basic_string_viewIcEES2_.exit.i.i, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i + br i1 %cmp.i.i.i.i.i, label %if.end.i.i29, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i: ; preds = %invoke.cont31 %.other.coerce1.i.i.i.i = call i64 @llvm.umin.i64(i64 %sub.ptr.sub.i, i64 4) @@ -10076,15 +10076,11 @@ _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i: ; preds = %invoke.cont31 %or.cond.i.i = and i1 %18, %cmp6.i.i.i.i br i1 %or.cond.i.i, label %if.then.i.i30, label %if.end.i.i29 -_ZN3fmt3v10eqENS0_17basic_string_viewIcEES2_.exit.i.i: ; preds = %invoke.cont31 - %.old.i.i = icmp eq i64 %sub.ptr.sub.i, 4 - br i1 %.old.i.i, label %if.then.i.i30, label %if.end.i.i29 - -if.then.i.i30: ; preds = %_ZN3fmt3v10eqENS0_17basic_string_viewIcEES2_.exit.i.i, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i +if.then.i.i30: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i invoke void @_ZN7testing16AssertionSuccessEv(ptr nonnull sret(%"class.testing::AssertionResult") align 8 %gtest_ar34) to label %invoke.cont38 unwind label %lpad19 -if.end.i.i29: ; preds = %_ZN3fmt3v10eqENS0_17basic_string_viewIcEES2_.exit.i.i, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i +if.end.i.i29: ; preds = %invoke.cont31, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i invoke void @_ZN7testing8internal18CmpHelperEQFailureIA5_cN3fmt3v1017basic_string_viewIcEEEENS_15AssertionResultEPKcS9_RKT_RKT0_(ptr nonnull sret(%"class.testing::AssertionResult") align 8 %gtest_ar34, ptr noundef nonnull @.str.138, ptr noundef nonnull @.str.142, ptr noundef nonnull align 1 dereferenceable(5) @.str.140, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp35) to label %invoke.cont38 unwind label %lpad19 diff --git a/bench/folly/optimized/NestedCommandLineApp.cpp.ll b/bench/folly/optimized/NestedCommandLineApp.cpp.ll index 0b081892152..d9ced84037a 100644 --- a/bench/folly/optimized/NestedCommandLineApp.cpp.ll +++ b/bench/folly/optimized/NestedCommandLineApp.cpp.ll @@ -13203,7 +13203,12 @@ _ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char %add.ptr50 = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %27, i64 %sub store ptr %add.ptr50, ptr %_M_finish, align 8, !tbaa !87 %cmp.i.i.not18.i.i.i.i.i152 = icmp eq ptr %1, %__position.coerce - br i1 %cmp.i.i.not18.i.i.i.i.i152, label %_ZSt22__uninitialized_move_aIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_SaIS5_EET0_T_S9_S8_RT1_.exit169, label %for.body.i.i.i.i.i153 + br i1 %cmp.i.i.not18.i.i.i.i.i152, label %_ZSt22__uninitialized_move_aIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_SaIS5_EET0_T_S9_S8_RT1_.exit169.thread, label %for.body.i.i.i.i.i153 + +_ZSt22__uninitialized_move_aIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_SaIS5_EET0_T_S9_S8_RT1_.exit169.thread: ; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEEmEvRT_T0_.exit + %add.ptr5825 = getelementptr inbounds i8, ptr %add.ptr50, i64 %sub.ptr.sub.i + store ptr %add.ptr5825, ptr %_M_finish, align 8, !tbaa !87 + br label %if.end109 for.body.i.i.i.i.i153: ; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEEmEvRT_T0_.exit, %_ZSt10_ConstructINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEJS5_EEvPT_DpOT0_.exit.i.i.i.i.i158 %__cur.020.i.i.i.i.i154 = phi ptr [ %incdec.ptr.i.i.i.i.i162, %_ZSt10_ConstructINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEJS5_EEvPT_DpOT0_.exit.i.i.i.i.i158 ], [ %add.ptr50, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEEmEvRT_T0_.exit ] @@ -13241,15 +13246,11 @@ _ZSt10_ConstructINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEJS5_EEvPT_D %incdec.ptr.i.i.i.i.i.i161 = getelementptr inbounds i8, ptr %__first.sroa.0.019.i.i.i.i.i155, i64 32 %incdec.ptr.i.i.i.i.i162 = getelementptr inbounds i8, ptr %__cur.020.i.i.i.i.i154, i64 32 %cmp.i.i.not.i.i.i.i.i163 = icmp eq ptr %incdec.ptr.i.i.i.i.i.i161, %1 - br i1 %cmp.i.i.not.i.i.i.i.i163, label %_ZSt22__uninitialized_move_aIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_SaIS5_EET0_T_S9_S8_RT1_.exit169.loopexit, label %for.body.i.i.i.i.i153, !llvm.loop !368 + br i1 %cmp.i.i.not.i.i.i.i.i163, label %_ZSt22__uninitialized_move_aIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_SaIS5_EET0_T_S9_S8_RT1_.exit169, label %for.body.i.i.i.i.i153, !llvm.loop !368 -_ZSt22__uninitialized_move_aIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_SaIS5_EET0_T_S9_S8_RT1_.exit169.loopexit: ; preds = %_ZSt10_ConstructINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEJS5_EEvPT_DpOT0_.exit.i.i.i.i.i158 +_ZSt22__uninitialized_move_aIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_SaIS5_EET0_T_S9_S8_RT1_.exit169: ; preds = %_ZSt10_ConstructINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEJS5_EEvPT_DpOT0_.exit.i.i.i.i.i158 %.pre = load ptr, ptr %_M_finish, align 8, !tbaa !87 - br label %_ZSt22__uninitialized_move_aIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_SaIS5_EET0_T_S9_S8_RT1_.exit169 - -_ZSt22__uninitialized_move_aIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_SaIS5_EET0_T_S9_S8_RT1_.exit169: ; preds = %_ZSt22__uninitialized_move_aIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_SaIS5_EET0_T_S9_S8_RT1_.exit169.loopexit, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEEmEvRT_T0_.exit - %34 = phi ptr [ %.pre, %_ZSt22__uninitialized_move_aIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_SaIS5_EET0_T_S9_S8_RT1_.exit169.loopexit ], [ %add.ptr50, %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS7_SaIS7_EEEEmEvRT_T0_.exit ] - %add.ptr58 = getelementptr inbounds i8, ptr %34, i64 %sub.ptr.sub.i + %add.ptr58 = getelementptr inbounds i8, ptr %.pre, i64 %sub.ptr.sub.i store ptr %add.ptr58, ptr %_M_finish, align 8, !tbaa !87 %cmp7.i.i.i.i.i174 = icmp sgt i64 %sub.ptr.div.i, 0 br i1 %cmp7.i.i.i.i.i174, label %for.body.i.i.i.i.i180, label %if.end109 @@ -13266,8 +13267,8 @@ for.body.i.i.i.i.i180: ; preds = %_ZSt22__uninitializ br i1 %cmp.i.i.i.i.i187, label %for.body.i.i.i.i.i180, label %if.end109, !llvm.loop !369 if.else68: ; preds = %if.then - %35 = load ptr, ptr %this, align 8, !tbaa !85 - %sub.ptr.rhs.cast.i.i = ptrtoint ptr %35 to i64 + %34 = load ptr, ptr %this, align 8, !tbaa !85 + %sub.ptr.rhs.cast.i.i = ptrtoint ptr %34 to i64 %sub.ptr.sub.i.i = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast.i.i %sub.ptr.div.i.i = ashr exact i64 %sub.ptr.sub.i.i, 5 %sub.i = sub nsw i64 288230376151711743, %sub.ptr.div.i.i @@ -13282,8 +13283,8 @@ _ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_M_c %.sroa.speculated.i = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i, i64 %sub.ptr.div.i.i.i) %add.i = add nsw i64 %.sroa.speculated.i, %sub.ptr.div.i.i %cmp7.i = icmp ult i64 %add.i, %sub.ptr.div.i.i - %36 = tail call i64 @llvm.umin.i64(i64 %add.i, i64 288230376151711743) - %cond.i = select i1 %cmp7.i, i64 288230376151711743, i64 %36 + %35 = tail call i64 @llvm.umin.i64(i64 %add.i, i64 288230376151711743) + %cond.i = select i1 %cmp7.i, i64 288230376151711743, i64 %35 %cmp.not.i = icmp eq i64 %cond.i, 0 br i1 %cmp.not.i, label %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_M_allocateEm.exit, label %cond.true.i @@ -13294,42 +13295,42 @@ cond.true.i: ; preds = %_ZNKSt6vectorINSt7_ _ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_M_allocateEm.exit: ; preds = %cond.true.i, %_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_M_check_lenEmPKc.exit %cond.i190 = phi ptr [ %call5.i.i.i, %cond.true.i ], [ null, %_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_M_check_lenEmPKc.exit ] - %cmp.i.i.not18.i.i.i.i.i191 = icmp eq ptr %35, %__position.coerce + %cmp.i.i.not18.i.i.i.i.i191 = icmp eq ptr %34, %__position.coerce br i1 %cmp.i.i.not18.i.i.i.i.i191, label %invoke.cont, label %for.body.i.i.i.i.i192 for.body.i.i.i.i.i192: ; preds = %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_M_allocateEm.exit, %_ZSt10_ConstructINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEJS5_EEvPT_DpOT0_.exit.i.i.i.i.i197 %__cur.020.i.i.i.i.i193 = phi ptr [ %incdec.ptr.i.i.i.i.i201, %_ZSt10_ConstructINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEJS5_EEvPT_DpOT0_.exit.i.i.i.i.i197 ], [ %cond.i190, %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_M_allocateEm.exit ] - %__first.sroa.0.019.i.i.i.i.i194 = phi ptr [ %incdec.ptr.i.i.i.i.i.i200, %_ZSt10_ConstructINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEJS5_EEvPT_DpOT0_.exit.i.i.i.i.i197 ], [ %35, %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_M_allocateEm.exit ] - %37 = getelementptr inbounds i8, ptr %__cur.020.i.i.i.i.i193, i64 16 - store ptr %37, ptr %__cur.020.i.i.i.i.i193, align 8, !tbaa !7 - %38 = load ptr, ptr %__first.sroa.0.019.i.i.i.i.i194, align 8, !tbaa !14 - %39 = getelementptr inbounds i8, ptr %__first.sroa.0.019.i.i.i.i.i194, i64 16 - %cmp.i.i.i.i.i.i.i.i195 = icmp eq ptr %38, %39 + %__first.sroa.0.019.i.i.i.i.i194 = phi ptr [ %incdec.ptr.i.i.i.i.i.i200, %_ZSt10_ConstructINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEJS5_EEvPT_DpOT0_.exit.i.i.i.i.i197 ], [ %34, %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_M_allocateEm.exit ] + %36 = getelementptr inbounds i8, ptr %__cur.020.i.i.i.i.i193, i64 16 + store ptr %36, ptr %__cur.020.i.i.i.i.i193, align 8, !tbaa !7 + %37 = load ptr, ptr %__first.sroa.0.019.i.i.i.i.i194, align 8, !tbaa !14 + %38 = getelementptr inbounds i8, ptr %__first.sroa.0.019.i.i.i.i.i194, i64 16 + %cmp.i.i.i.i.i.i.i.i195 = icmp eq ptr %37, %38 br i1 %cmp.i.i.i.i.i.i.i.i195, label %if.then.i.i.i.i.i.i.i204, label %if.else.i.i.i.i.i.i.i196 if.then.i.i.i.i.i.i.i204: ; preds = %for.body.i.i.i.i.i192 %_M_string_length.i.i.i.i.i.i.i.i205 = getelementptr inbounds i8, ptr %__first.sroa.0.019.i.i.i.i.i194, i64 8 - %40 = load i64, ptr %_M_string_length.i.i.i.i.i.i.i.i205, align 8, !tbaa !17 - %cmp3.i.i.i.i.i.i.i.i206 = icmp ult i64 %40, 16 + %39 = load i64, ptr %_M_string_length.i.i.i.i.i.i.i.i205, align 8, !tbaa !17 + %cmp3.i.i.i.i.i.i.i.i206 = icmp ult i64 %39, 16 tail call void @llvm.assume(i1 %cmp3.i.i.i.i.i.i.i.i206) - %add.i.i.i.i.i.i.i207 = add nuw nsw i64 %40, 1 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %37, ptr noundef nonnull align 8 dereferenceable(1) %38, i64 %add.i.i.i.i.i.i.i207, i1 false) + %add.i.i.i.i.i.i.i207 = add nuw nsw i64 %39, 1 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %36, ptr noundef nonnull align 8 dereferenceable(1) %37, i64 %add.i.i.i.i.i.i.i207, i1 false) br label %_ZSt10_ConstructINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEJS5_EEvPT_DpOT0_.exit.i.i.i.i.i197 if.else.i.i.i.i.i.i.i196: ; preds = %for.body.i.i.i.i.i192 - store ptr %38, ptr %__cur.020.i.i.i.i.i193, align 8, !tbaa !14 - %41 = load i64, ptr %39, align 8, !tbaa !16 - store i64 %41, ptr %37, align 8, !tbaa !16 + store ptr %37, ptr %__cur.020.i.i.i.i.i193, align 8, !tbaa !14 + %40 = load i64, ptr %38, align 8, !tbaa !16 + store i64 %40, ptr %36, align 8, !tbaa !16 br label %_ZSt10_ConstructINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEJS5_EEvPT_DpOT0_.exit.i.i.i.i.i197 _ZSt10_ConstructINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEJS5_EEvPT_DpOT0_.exit.i.i.i.i.i197: ; preds = %if.else.i.i.i.i.i.i.i196, %if.then.i.i.i.i.i.i.i204 %_M_string_length.i23.i.i.i.i.i.i.i198 = getelementptr inbounds i8, ptr %__first.sroa.0.019.i.i.i.i.i194, i64 8 - %42 = load i64, ptr %_M_string_length.i23.i.i.i.i.i.i.i198, align 8, !tbaa !17 + %41 = load i64, ptr %_M_string_length.i23.i.i.i.i.i.i.i198, align 8, !tbaa !17 %_M_string_length.i24.i.i.i.i.i.i.i199 = getelementptr inbounds i8, ptr %__cur.020.i.i.i.i.i193, i64 8 - store i64 %42, ptr %_M_string_length.i24.i.i.i.i.i.i.i199, align 8, !tbaa !17 - store ptr %39, ptr %__first.sroa.0.019.i.i.i.i.i194, align 8, !tbaa !14 + store i64 %41, ptr %_M_string_length.i24.i.i.i.i.i.i.i199, align 8, !tbaa !17 + store ptr %38, ptr %__first.sroa.0.019.i.i.i.i.i194, align 8, !tbaa !14 store i64 0, ptr %_M_string_length.i23.i.i.i.i.i.i.i198, align 8, !tbaa !17 - store i8 0, ptr %39, align 1, !tbaa !16 + store i8 0, ptr %38, align 1, !tbaa !16 %incdec.ptr.i.i.i.i.i.i200 = getelementptr inbounds i8, ptr %__first.sroa.0.019.i.i.i.i.i194, i64 32 %incdec.ptr.i.i.i.i.i201 = getelementptr inbounds i8, ptr %__cur.020.i.i.i.i.i193, i64 32 %cmp.i.i.not.i.i.i.i.i202 = icmp eq ptr %incdec.ptr.i.i.i.i.i.i200, %__position.coerce @@ -13347,36 +13348,36 @@ invoke.cont83: ; preds = %invoke.cont for.body.i.i.i.i.i211: ; preds = %invoke.cont83, %_ZSt10_ConstructINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEJS5_EEvPT_DpOT0_.exit.i.i.i.i.i216 %__cur.020.i.i.i.i.i212 = phi ptr [ %incdec.ptr.i.i.i.i.i220, %_ZSt10_ConstructINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEJS5_EEvPT_DpOT0_.exit.i.i.i.i.i216 ], [ %call.i.i.i208209, %invoke.cont83 ] %__first.sroa.0.019.i.i.i.i.i213 = phi ptr [ %incdec.ptr.i.i.i.i.i.i219, %_ZSt10_ConstructINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEJS5_EEvPT_DpOT0_.exit.i.i.i.i.i216 ], [ %__position.coerce, %invoke.cont83 ] - %43 = getelementptr inbounds i8, ptr %__cur.020.i.i.i.i.i212, i64 16 - store ptr %43, ptr %__cur.020.i.i.i.i.i212, align 8, !tbaa !7 - %44 = load ptr, ptr %__first.sroa.0.019.i.i.i.i.i213, align 8, !tbaa !14 - %45 = getelementptr inbounds i8, ptr %__first.sroa.0.019.i.i.i.i.i213, i64 16 - %cmp.i.i.i.i.i.i.i.i214 = icmp eq ptr %44, %45 + %42 = getelementptr inbounds i8, ptr %__cur.020.i.i.i.i.i212, i64 16 + store ptr %42, ptr %__cur.020.i.i.i.i.i212, align 8, !tbaa !7 + %43 = load ptr, ptr %__first.sroa.0.019.i.i.i.i.i213, align 8, !tbaa !14 + %44 = getelementptr inbounds i8, ptr %__first.sroa.0.019.i.i.i.i.i213, i64 16 + %cmp.i.i.i.i.i.i.i.i214 = icmp eq ptr %43, %44 br i1 %cmp.i.i.i.i.i.i.i.i214, label %if.then.i.i.i.i.i.i.i223, label %if.else.i.i.i.i.i.i.i215 if.then.i.i.i.i.i.i.i223: ; preds = %for.body.i.i.i.i.i211 %_M_string_length.i.i.i.i.i.i.i.i224 = getelementptr inbounds i8, ptr %__first.sroa.0.019.i.i.i.i.i213, i64 8 - %46 = load i64, ptr %_M_string_length.i.i.i.i.i.i.i.i224, align 8, !tbaa !17 - %cmp3.i.i.i.i.i.i.i.i225 = icmp ult i64 %46, 16 + %45 = load i64, ptr %_M_string_length.i.i.i.i.i.i.i.i224, align 8, !tbaa !17 + %cmp3.i.i.i.i.i.i.i.i225 = icmp ult i64 %45, 16 tail call void @llvm.assume(i1 %cmp3.i.i.i.i.i.i.i.i225) - %add.i.i.i.i.i.i.i226 = add nuw nsw i64 %46, 1 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %43, ptr noundef nonnull align 8 dereferenceable(1) %44, i64 %add.i.i.i.i.i.i.i226, i1 false) + %add.i.i.i.i.i.i.i226 = add nuw nsw i64 %45, 1 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %42, ptr noundef nonnull align 8 dereferenceable(1) %43, i64 %add.i.i.i.i.i.i.i226, i1 false) br label %_ZSt10_ConstructINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEJS5_EEvPT_DpOT0_.exit.i.i.i.i.i216 if.else.i.i.i.i.i.i.i215: ; preds = %for.body.i.i.i.i.i211 - store ptr %44, ptr %__cur.020.i.i.i.i.i212, align 8, !tbaa !14 - %47 = load i64, ptr %45, align 8, !tbaa !16 - store i64 %47, ptr %43, align 8, !tbaa !16 + store ptr %43, ptr %__cur.020.i.i.i.i.i212, align 8, !tbaa !14 + %46 = load i64, ptr %44, align 8, !tbaa !16 + store i64 %46, ptr %42, align 8, !tbaa !16 br label %_ZSt10_ConstructINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEJS5_EEvPT_DpOT0_.exit.i.i.i.i.i216 _ZSt10_ConstructINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEJS5_EEvPT_DpOT0_.exit.i.i.i.i.i216: ; preds = %if.else.i.i.i.i.i.i.i215, %if.then.i.i.i.i.i.i.i223 %_M_string_length.i23.i.i.i.i.i.i.i217 = getelementptr inbounds i8, ptr %__first.sroa.0.019.i.i.i.i.i213, i64 8 - %48 = load i64, ptr %_M_string_length.i23.i.i.i.i.i.i.i217, align 8, !tbaa !17 + %47 = load i64, ptr %_M_string_length.i23.i.i.i.i.i.i.i217, align 8, !tbaa !17 %_M_string_length.i24.i.i.i.i.i.i.i218 = getelementptr inbounds i8, ptr %__cur.020.i.i.i.i.i212, i64 8 - store i64 %48, ptr %_M_string_length.i24.i.i.i.i.i.i.i218, align 8, !tbaa !17 - store ptr %45, ptr %__first.sroa.0.019.i.i.i.i.i213, align 8, !tbaa !14 + store i64 %47, ptr %_M_string_length.i24.i.i.i.i.i.i.i218, align 8, !tbaa !17 + store ptr %44, ptr %__first.sroa.0.019.i.i.i.i.i213, align 8, !tbaa !14 store i64 0, ptr %_M_string_length.i23.i.i.i.i.i.i.i217, align 8, !tbaa !17 - store i8 0, ptr %45, align 1, !tbaa !16 + store i8 0, ptr %44, align 1, !tbaa !16 %incdec.ptr.i.i.i.i.i.i219 = getelementptr inbounds i8, ptr %__first.sroa.0.019.i.i.i.i.i213, i64 32 %incdec.ptr.i.i.i.i.i220 = getelementptr inbounds i8, ptr %__cur.020.i.i.i.i.i212, i64 32 %cmp.i.i.not.i.i.i.i.i221 = icmp eq ptr %incdec.ptr.i.i.i.i.i.i219, %1 @@ -13384,25 +13385,25 @@ _ZSt10_ConstructINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEJS5_EEvPT_D invoke.cont87: ; preds = %_ZSt10_ConstructINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEJS5_EEvPT_DpOT0_.exit.i.i.i.i.i216, %invoke.cont83 %__cur.0.lcssa.i.i.i.i.i222 = phi ptr [ %call.i.i.i208209, %invoke.cont83 ], [ %incdec.ptr.i.i.i.i.i220, %_ZSt10_ConstructINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEJS5_EEvPT_DpOT0_.exit.i.i.i.i.i216 ] - %cmp.not3.i.i.i = icmp eq ptr %35, %1 + %cmp.not3.i.i.i = icmp eq ptr %34, %1 br i1 %cmp.not3.i.i.i, label %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exit, label %for.body.i.i.i for.body.i.i.i: ; preds = %invoke.cont87, %_ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i - %__first.addr.04.i.i.i = phi ptr [ %incdec.ptr.i.i.i229, %_ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i ], [ %35, %invoke.cont87 ] - %49 = load ptr, ptr %__first.addr.04.i.i.i, align 8, !tbaa !14 - %50 = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i, i64 16 - %cmp.i.i.i.i.i.i.i228 = icmp eq ptr %49, %50 + %__first.addr.04.i.i.i = phi ptr [ %incdec.ptr.i.i.i229, %_ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i ], [ %34, %invoke.cont87 ] + %48 = load ptr, ptr %__first.addr.04.i.i.i, align 8, !tbaa !14 + %49 = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i, i64 16 + %cmp.i.i.i.i.i.i.i228 = icmp eq ptr %48, %49 br i1 %cmp.i.i.i.i.i.i.i228, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i, label %if.then.i.i.i.i.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i: ; preds = %for.body.i.i.i %_M_string_length.i.i.i.i.i.i.i230 = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i, i64 8 - %51 = load i64, ptr %_M_string_length.i.i.i.i.i.i.i230, align 8, !tbaa !17 - %cmp3.i.i.i.i.i.i.i231 = icmp ult i64 %51, 16 + %50 = load i64, ptr %_M_string_length.i.i.i.i.i.i.i230, align 8, !tbaa !17 + %cmp3.i.i.i.i.i.i.i231 = icmp ult i64 %50, 16 tail call void @llvm.assume(i1 %cmp3.i.i.i.i.i.i.i231) br label %_ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i if.then.i.i.i.i.i.i: ; preds = %for.body.i.i.i - tail call void @_ZdlPv(ptr noundef %49) #38 + tail call void @_ZdlPv(ptr noundef %48) #38 br label %_ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i _ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i: ; preds = %if.then.i.i.i.i.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i @@ -13411,11 +13412,11 @@ _ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i br i1 %cmp.not.i.i.i, label %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exit, label %for.body.i.i.i, !llvm.loop !372 _ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exit: ; preds = %_ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i, %invoke.cont87 - %tobool.not.i = icmp eq ptr %35, null + %tobool.not.i = icmp eq ptr %34, null br i1 %tobool.not.i, label %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit, label %if.then.i232 if.then.i232: ; preds = %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exit - tail call void @_ZdlPv(ptr noundef nonnull %35) #38 + tail call void @_ZdlPv(ptr noundef nonnull %34) #38 br label %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit _ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit: ; preds = %if.then.i232, %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exit @@ -13426,29 +13427,29 @@ _ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE br label %if.end109 lpad: ; preds = %invoke.cont - %52 = landingpad { ptr, i32 } + %51 = landingpad { ptr, i32 } catch ptr null - %53 = extractvalue { ptr, i32 } %52, 0 - %54 = tail call ptr @__cxa_begin_catch(ptr %53) #36 + %52 = extractvalue { ptr, i32 } %51, 0 + %53 = tail call ptr @__cxa_begin_catch(ptr %52) #36 %cmp.not3.i.i.i233 = icmp eq ptr %cond.i190, %__cur.0.lcssa.i.i.i.i.i203 br i1 %cmp.not3.i.i.i233, label %invoke.cont91, label %for.body.i.i.i234 for.body.i.i.i234: ; preds = %lpad, %_ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i238 %__first.addr.04.i.i.i235 = phi ptr [ %incdec.ptr.i.i.i239, %_ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i238 ], [ %cond.i190, %lpad ] - %55 = load ptr, ptr %__first.addr.04.i.i.i235, align 8, !tbaa !14 - %56 = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i235, i64 16 - %cmp.i.i.i.i.i.i.i236 = icmp eq ptr %55, %56 + %54 = load ptr, ptr %__first.addr.04.i.i.i235, align 8, !tbaa !14 + %55 = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i235, i64 16 + %cmp.i.i.i.i.i.i.i236 = icmp eq ptr %54, %55 br i1 %cmp.i.i.i.i.i.i.i236, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i241, label %if.then.i.i.i.i.i.i237 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i241: ; preds = %for.body.i.i.i234 %_M_string_length.i.i.i.i.i.i.i242 = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i235, i64 8 - %57 = load i64, ptr %_M_string_length.i.i.i.i.i.i.i242, align 8, !tbaa !17 - %cmp3.i.i.i.i.i.i.i243 = icmp ult i64 %57, 16 + %56 = load i64, ptr %_M_string_length.i.i.i.i.i.i.i242, align 8, !tbaa !17 + %cmp3.i.i.i.i.i.i.i243 = icmp ult i64 %56, 16 tail call void @llvm.assume(i1 %cmp3.i.i.i.i.i.i.i243) br label %_ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i238 if.then.i.i.i.i.i.i237: ; preds = %for.body.i.i.i234 - tail call void @_ZdlPv(ptr noundef %55) #38 + tail call void @_ZdlPv(ptr noundef %54) #38 br label %_ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i238 _ZSt8_DestroyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEvPT_.exit.i.i.i238: ; preds = %if.then.i.i.i.i.i.i237, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i.i.i.i241 @@ -13469,22 +13470,22 @@ invoke.cont92: ; preds = %if.then.i246, %invo to label %unreachable unwind label %lpad90 lpad90: ; preds = %invoke.cont92 - %58 = landingpad { ptr, i32 } + %57 = landingpad { ptr, i32 } cleanup invoke void @__cxa_end_catch() to label %invoke.cont93 unwind label %terminate.lpad invoke.cont93: ; preds = %lpad90 - resume { ptr, i32 } %58 + resume { ptr, i32 } %57 -if.end109: ; preds = %for.body.i.i.i.i.i180, %for.body.i.i.i.i.i147, %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit, %_ZSt22__uninitialized_move_aIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_SaIS5_EET0_T_S9_S8_RT1_.exit169, %_ZSt13move_backwardIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_.exit, %entry +if.end109: ; preds = %for.body.i.i.i.i.i180, %for.body.i.i.i.i.i147, %_ZSt22__uninitialized_move_aIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_SaIS5_EET0_T_S9_S8_RT1_.exit169.thread, %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit, %_ZSt22__uninitialized_move_aIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_SaIS5_EET0_T_S9_S8_RT1_.exit169, %_ZSt13move_backwardIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ET0_T_S8_S7_.exit, %entry ret void terminate.lpad: ; preds = %lpad90 - %59 = landingpad { ptr, i32 } + %58 = landingpad { ptr, i32 } catch ptr null - %60 = extractvalue { ptr, i32 } %59, 0 - tail call void @__clang_call_terminate(ptr %60) #37 + %59 = extractvalue { ptr, i32 } %58, 0 + tail call void @__clang_call_terminate(ptr %59) #37 unreachable unreachable: ; preds = %invoke.cont92 diff --git a/bench/g2o/optimized/vertex_line2d.cpp.ll b/bench/g2o/optimized/vertex_line2d.cpp.ll index 693a6d5f467..c4562d72cad 100644 --- a/bench/g2o/optimized/vertex_line2d.cpp.ll +++ b/bench/g2o/optimized/vertex_line2d.cpp.ll @@ -372,7 +372,7 @@ define linkonce_odr noundef double @_ZN3g2o10BaseVertexILi2ENS_6Line2DEE11solveD %.044.i.i.i.sroa.gep7 = getelementptr inbounds i8, ptr %4, i64 8 %22 = fcmp olt double %20, 0x3CB0000000000000 %or.cond = or i1 %21, %22 - br i1 %or.cond, label %95, label %23 + br i1 %or.cond, label %93, label %23 23: ; preds = %2 %.sroa.5.16.vec.insert = insertelement <2 x double> poison, double %14, i64 0 @@ -454,75 +454,73 @@ _ZNK5Eigen10MatrixBaseINS_5BlockINS_6MatrixIdLi2ELi2ELi0ELi2ELi2EEELi1ELin1ELb0E 55: ; preds = %_ZNK5Eigen10MatrixBaseINS_5BlockINS_6MatrixIdLi2ELi2ELi0ELi2ELi2EEELi1ELin1ELb0EEEE11squaredNormEv.exit.i.i.i.i.i.i, %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLi2ELi2ELi0ELi2ELi2EEELin1ELi1ELb0EEEEdVERKd.exit.i.i.i.i.i.i %.046.i.i.i.i.i.i = phi double [ %54, %_ZNK5Eigen10MatrixBaseINS_5BlockINS_6MatrixIdLi2ELi2ELi0ELi2ELi2EEELi1ELin1ELb0EEEE11squaredNormEv.exit.i.i.i.i.i.i ], [ %51, %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLi2ELi2ELi0ELi2ELi2EEELin1ELi1ELb0EEEEdVERKd.exit.i.i.i.i.i.i ] %56 = fcmp ole double %.046.i.i.i.i.i.i, 0.000000e+00 - br i1 %56, label %69, label %57 + br i1 %56, label %67, label %57 57: ; preds = %55 %58 = call double @sqrt(double noundef %.046.i.i.i.i.i.i) #19 store double %58, ptr %50, align 8, !alias.scope !4 - br i1 %.not47.i.i.i.i.i.i, label %69, label %_ZN5Eigen8internal13first_alignedILi16EdlEET1_PKT0_S2_.exit.i.i.i.i.i.i.i.i.i.i.i.i + br i1 %.not47.i.i.i.i.i.i, label %67, label %_ZN5Eigen8internal13first_alignedILi16EdlEET1_PKT0_S2_.exit.i.i.i.i.i.i.i.i.i.i.i.i _ZN5Eigen8internal13first_alignedILi16EdlEET1_PKT0_S2_.exit.i.i.i.i.i.i.i.i.i.i.i.i: ; preds = %57 %59 = ptrtoint ptr %49 to i64 %60 = lshr exact i64 %59, 3 %61 = and i64 %60, 1 - %62 = call i64 @llvm.umin.i64(i64 %61, i64 %47) - %.not50.i.i.i.i.i.i = icmp eq i64 %62, 0 + %.not50.i.i.i.i.i.i = icmp eq i64 %61, 0 br i1 %.not50.i.i.i.i.i.i, label %._crit_edge.i.i.i.i.i.i.i.i.i.i.i.i, label %.lr.ph.i.i.i.i.i.i.i.preheader.i.i.i.i.i.i .lr.ph.i.i.i.i.i.i.i.preheader.i.i.i.i.i.i: ; preds = %_ZN5Eigen8internal13first_alignedILi16EdlEET1_PKT0_S2_.exit.i.i.i.i.i.i.i.i.i.i.i.i - %63 = load double, ptr %49, align 8, !alias.scope !4 - %64 = fdiv double %63, %58 - store double %64, ptr %49, align 8, !alias.scope !4 + %62 = load double, ptr %49, align 8, !alias.scope !4 + %63 = fdiv double %62, %58 + store double %63, ptr %49, align 8, !alias.scope !4 br label %._crit_edge.i.i.i.i.i.i.i.i.i.i.i.i ._crit_edge.i.i.i.i.i.i.i.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i.i.i.preheader.i.i.i.i.i.i, %_ZN5Eigen8internal13first_alignedILi16EdlEET1_PKT0_S2_.exit.i.i.i.i.i.i.i.i.i.i.i.i - %65 = icmp samesign ult i64 %61, %47 - br i1 %65, label %.lr.ph.i17.i.i.i.i.i.i.i.preheader.i.i.i.i.i, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLi2ELi2ELi0ELi2ELi2EEELin1ELi1ELb0EEEEdVERKd.exit.i.i.i.i.i.i.backedge + %64 = icmp samesign ult i64 %61, %47 + br i1 %64, label %.lr.ph.i17.i.i.i.i.i.i.i.preheader.i.i.i.i.i, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLi2ELi2ELi0ELi2ELi2EEELin1ELi1ELb0EEEEdVERKd.exit.i.i.i.i.i.i.backedge .lr.ph.i17.i.i.i.i.i.i.i.preheader.i.i.i.i.i: ; preds = %._crit_edge.i.i.i.i.i.i.i.i.i.i.i.i - %66 = getelementptr inbounds double, ptr %49, i64 %62 - %67 = load double, ptr %66, align 8, !alias.scope !4 - %68 = fdiv double %67, %58 - store double %68, ptr %66, align 8, !alias.scope !4 + %65 = load double, ptr %49, align 8, !alias.scope !4 + %66 = fdiv double %65, %58 + store double %66, ptr %49, align 8, !alias.scope !4 br label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLi2ELi2ELi0ELi2ELi2EEELin1ELi1ELb0EEEEdVERKd.exit.i.i.i.i.i.i.backedge _ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLi2ELi2ELi0ELi2ELi2EEELin1ELi1ELb0EEEEdVERKd.exit.i.i.i.i.i.i.backedge: ; preds = %.lr.ph.i17.i.i.i.i.i.i.i.preheader.i.i.i.i.i, %._crit_edge.i.i.i.i.i.i.i.i.i.i.i.i br label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLi2ELi2ELi0ELi2ELi2EEELin1ELi1ELb0EEEEdVERKd.exit.i.i.i.i.i.i -69: ; preds = %55, %57 - %70 = zext i1 %56 to i32 - %71 = getelementptr inbounds nuw i8, ptr %4, i64 44 - store i32 %70, ptr %71, align 4, !alias.scope !4 - %72 = getelementptr inbounds nuw i8, ptr %0, i64 144 - %73 = load <2 x double>, ptr %72, align 16 - %74 = load double, ptr %4, align 16 - %75 = extractelement <2 x double> %73, i64 0 - %76 = fdiv double %75, %74 - %77 = load double, ptr %.044.i.i.i.sroa.gep7, align 8 - %78 = fmul double %76, %77 - %79 = getelementptr inbounds i8, ptr %3, i64 8 - %80 = extractelement <2 x double> %73, i64 1 - %81 = fsub double %80, %78 - %82 = getelementptr inbounds i8, ptr %4, i64 24 - %83 = load double, ptr %82, align 8 - %84 = fdiv double %81, %83 - %85 = fdiv double %84, %83 - store double %85, ptr %79, align 8 - %86 = fmul double %77, %85 - %87 = fsub double %76, %86 - %88 = fdiv double %87, %74 - store double %88, ptr %3, align 16 - %89 = load ptr, ptr %0, align 16 - %90 = getelementptr inbounds i8, ptr %89, i64 224 - %91 = load ptr, ptr %90, align 8 - call void %91(ptr noundef nonnull align 8 dereferenceable(128) %0, ptr noundef nonnull %3) - %92 = load ptr, ptr %0, align 16 - %93 = getelementptr inbounds i8, ptr %92, i64 216 - %94 = load ptr, ptr %93, align 8 - call void %94(ptr noundef nonnull align 8 dereferenceable(128) %0) - br label %95 - -95: ; preds = %2, %69 +67: ; preds = %55, %57 + %68 = zext i1 %56 to i32 + %69 = getelementptr inbounds nuw i8, ptr %4, i64 44 + store i32 %68, ptr %69, align 4, !alias.scope !4 + %70 = getelementptr inbounds nuw i8, ptr %0, i64 144 + %71 = load <2 x double>, ptr %70, align 16 + %72 = load double, ptr %4, align 16 + %73 = extractelement <2 x double> %71, i64 0 + %74 = fdiv double %73, %72 + %75 = load double, ptr %.044.i.i.i.sroa.gep7, align 8 + %76 = fmul double %74, %75 + %77 = getelementptr inbounds i8, ptr %3, i64 8 + %78 = extractelement <2 x double> %71, i64 1 + %79 = fsub double %78, %76 + %80 = getelementptr inbounds i8, ptr %4, i64 24 + %81 = load double, ptr %80, align 8 + %82 = fdiv double %79, %81 + %83 = fdiv double %82, %81 + store double %83, ptr %77, align 8 + %84 = fmul double %75, %83 + %85 = fsub double %74, %84 + %86 = fdiv double %85, %72 + store double %86, ptr %3, align 16 + %87 = load ptr, ptr %0, align 16 + %88 = getelementptr inbounds i8, ptr %87, i64 224 + %89 = load ptr, ptr %88, align 8 + call void %89(ptr noundef nonnull align 8 dereferenceable(128) %0, ptr noundef nonnull %3) + %90 = load ptr, ptr %0, align 16 + %91 = getelementptr inbounds i8, ptr %90, i64 216 + %92 = load ptr, ptr %91, align 8 + call void %92(ptr noundef nonnull align 8 dereferenceable(128) %0) + br label %93 + +93: ; preds = %2, %67 ret double %20 } diff --git a/bench/glslang/optimized/Scan.cpp.ll b/bench/glslang/optimized/Scan.cpp.ll index a65cf56be01..c03b5a428c4 100644 --- a/bench/glslang/optimized/Scan.cpp.ll +++ b/bench/glslang/optimized/Scan.cpp.ll @@ -11232,8 +11232,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE9_M 31: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE9_M_createERmm.exit %32 = load ptr, ptr %12, align 8 - %cond29 = icmp eq i64 %1, 1 - br i1 %cond29, label %33, label %35 + %cond30 = icmp eq i64 %1, 1 + br i1 %cond30, label %33, label %35 33: ; preds = %31 %34 = load i8, ptr %32, align 1 @@ -11274,10 +11274,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE7_S %46 = load ptr, ptr %12, align 8 %47 = getelementptr inbounds i8, ptr %46, i64 %1 %48 = getelementptr inbounds i8, ptr %47, i64 %2 - switch i64 %9, label %51 [ - i64 1, label %49 - i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE7_S_copyEPcPKcm.exit27 - ] + %cond29 = icmp eq i64 %9, 1 + br i1 %cond29, label %49, label %51 49: ; preds = %43 %50 = load i8, ptr %48, align 1 @@ -11288,7 +11286,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE7_S tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %45, ptr align 1 %48, i64 %9, i1 false) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE7_S_copyEPcPKcm.exit27 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE7_S_copyEPcPKcm.exit27: ; preds = %51, %49, %43, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE7_S_copyEPcPKcm.exit26 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE7_S_copyEPcPKcm.exit27: ; preds = %51, %49, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE7_S_copyEPcPKcm.exit26 %52 = load ptr, ptr %12, align 8 %53 = icmp eq ptr %52, %14 br i1 %53, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE11_M_is_localEv.exit.thread.i, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE10_M_disposeEv.exit diff --git a/bench/gromacs/optimized/biaswriter.cpp.ll b/bench/gromacs/optimized/biaswriter.cpp.ll index 204ee1b2d77..f3eacd0e7c3 100644 --- a/bench/gromacs/optimized/biaswriter.cpp.ll +++ b/bench/gromacs/optimized/biaswriter.cpp.ll @@ -2046,49 +2046,48 @@ define noundef i32 @_ZN3gmx10BiasWriter22writeToEnergySubblocksERKNS_4BiasEP13t_ %4 = getelementptr inbounds i8, ptr %0, i64 8 %5 = load ptr, ptr %4, align 8 %6 = load ptr, ptr %0, align 8 - %7 = ptrtoint ptr %5 to i64 - %8 = ptrtoint ptr %6 to i64 - %9 = sub i64 %7, %8 - %10 = ashr exact i64 %9, 5 %.not = icmp eq ptr %5, %6 br i1 %.not, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %3, %.lr.ph - %.015 = phi i64 [ %28, %.lr.ph ], [ 0, %3 ] - %11 = getelementptr inbounds %struct.t_enxsubblock, ptr %2, i64 %.015 - %12 = getelementptr inbounds i8, ptr %11, i64 4 - store i32 1, ptr %12, align 4 - %13 = load ptr, ptr %0, align 8 - %14 = getelementptr inbounds %"class.gmx::AwhEnergyBlock", ptr %13, i64 %.015 - %15 = getelementptr inbounds i8, ptr %14, i64 8 - %16 = load ptr, ptr %15, align 8 - %17 = getelementptr inbounds i8, ptr %14, i64 16 - %18 = load ptr, ptr %17, align 8 - %19 = ptrtoint ptr %18 to i64 - %20 = ptrtoint ptr %16 to i64 - %21 = sub i64 %19, %20 - %22 = lshr exact i64 %21, 2 - %23 = trunc i64 %22 to i32 - store i32 %23, ptr %11, align 8 - %24 = load ptr, ptr %0, align 8 - %25 = getelementptr inbounds %"class.gmx::AwhEnergyBlock", ptr %24, i64 %.015, i32 2 - %26 = load ptr, ptr %25, align 8 - %27 = getelementptr inbounds i8, ptr %11, i64 8 - store ptr %26, ptr %27, align 8 - %28 = add nuw i64 %.015, 1 - %29 = load ptr, ptr %4, align 8 - %30 = load ptr, ptr %0, align 8 - %31 = ptrtoint ptr %29 to i64 - %32 = ptrtoint ptr %30 to i64 - %33 = sub i64 %31, %32 - %34 = ashr exact i64 %33, 5 - %35 = icmp ult i64 %28, %34 - br i1 %35, label %.lr.ph, label %._crit_edge, !llvm.loop !32 - -._crit_edge: ; preds = %.lr.ph, %3 - %.lcssa = phi i64 [ %10, %3 ], [ %34, %.lr.ph ] - %36 = trunc i64 %.lcssa to i32 - ret i32 %36 + %.015 = phi i64 [ %24, %.lr.ph ], [ 0, %3 ] + %7 = getelementptr inbounds %struct.t_enxsubblock, ptr %2, i64 %.015 + %8 = getelementptr inbounds i8, ptr %7, i64 4 + store i32 1, ptr %8, align 4 + %9 = load ptr, ptr %0, align 8 + %10 = getelementptr inbounds %"class.gmx::AwhEnergyBlock", ptr %9, i64 %.015 + %11 = getelementptr inbounds i8, ptr %10, i64 8 + %12 = load ptr, ptr %11, align 8 + %13 = getelementptr inbounds i8, ptr %10, i64 16 + %14 = load ptr, ptr %13, align 8 + %15 = ptrtoint ptr %14 to i64 + %16 = ptrtoint ptr %12 to i64 + %17 = sub i64 %15, %16 + %18 = lshr exact i64 %17, 2 + %19 = trunc i64 %18 to i32 + store i32 %19, ptr %7, align 8 + %20 = load ptr, ptr %0, align 8 + %21 = getelementptr inbounds %"class.gmx::AwhEnergyBlock", ptr %20, i64 %.015, i32 2 + %22 = load ptr, ptr %21, align 8 + %23 = getelementptr inbounds i8, ptr %7, i64 8 + store ptr %22, ptr %23, align 8 + %24 = add nuw i64 %.015, 1 + %25 = load ptr, ptr %4, align 8 + %26 = load ptr, ptr %0, align 8 + %27 = ptrtoint ptr %25 to i64 + %28 = ptrtoint ptr %26 to i64 + %29 = sub i64 %27, %28 + %30 = ashr exact i64 %29, 5 + %31 = icmp ult i64 %24, %30 + br i1 %31, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !32 + +._crit_edge.loopexit: ; preds = %.lr.ph + %32 = trunc i64 %30 to i32 + br label %._crit_edge + +._crit_edge: ; preds = %._crit_edge.loopexit, %3 + %.lcssa = phi i32 [ 0, %3 ], [ %32, %._crit_edge.loopexit ] + ret i32 %.lcssa } ; Function Attrs: uwtable diff --git a/bench/grpc/optimized/priority.cc.ll b/bench/grpc/optimized/priority.cc.ll index 88a05c7334e..cd9825ed28d 100644 --- a/bench/grpc/optimized/priority.cc.ll +++ b/bench/grpc/optimized/priority.cc.ll @@ -6413,10 +6413,6 @@ if.end72: ; preds = %if.then71, %for.end %_M_finish.i124257 = getelementptr inbounds i8, ptr %config_.val34255, i64 72 %91 = load ptr, ptr %_M_finish.i124257, align 8 %92 = load ptr, ptr %priorities_.i123256, align 8 - %sub.ptr.lhs.cast.i125258 = ptrtoint ptr %91 to i64 - %sub.ptr.rhs.cast.i126259 = ptrtoint ptr %92 to i64 - %sub.ptr.sub.i127260 = sub i64 %sub.ptr.lhs.cast.i125258, %sub.ptr.rhs.cast.i126259 - %sub.ptr.div.i128261 = ashr exact i64 %sub.ptr.sub.i127260, 5 %cmp80262.not = icmp eq ptr %91, %92 br i1 %cmp80262.not, label %for.end107, label %for.body81.lr.ph @@ -6471,13 +6467,16 @@ for.inc105: ; preds = %do.end %sub.ptr.sub.i127 = sub i64 %sub.ptr.lhs.cast.i125, %sub.ptr.rhs.cast.i126 %sub.ptr.div.i128 = ashr exact i64 %sub.ptr.sub.i127, 5 %cmp80 = icmp ugt i64 %sub.ptr.div.i128, %conv75 - br i1 %cmp80, label %for.body81, label %for.end107, !llvm.loop !81 + br i1 %cmp80, label %for.body81, label %for.end107.loopexit, !llvm.loop !81 -for.end107: ; preds = %for.inc105, %if.end72 - %sub.ptr.div.i128.lcssa = phi i64 [ %sub.ptr.div.i128261, %if.end72 ], [ %sub.ptr.div.i128, %for.inc105 ] - %98 = trunc i64 %sub.ptr.div.i128.lcssa to i32 - %conv112 = add i32 %98, -1 - call fastcc void @_ZN9grpc_core12_GLOBAL__N_110PriorityLb24SetCurrentPriorityLockedEibPKc(ptr noundef nonnull align 8 dereferenceable(228) %this, i32 noundef %conv112, i1 noundef zeroext false, ptr noundef nonnull @.str.56) +for.end107.loopexit: ; preds = %for.inc105 + %98 = trunc i64 %sub.ptr.div.i128 to i32 + %99 = add i32 %98, -1 + br label %for.end107 + +for.end107: ; preds = %for.end107.loopexit, %if.end72 + %sub.ptr.div.i128.lcssa = phi i32 [ -1, %if.end72 ], [ %99, %for.end107.loopexit ] + call fastcc void @_ZN9grpc_core12_GLOBAL__N_110PriorityLb24SetCurrentPriorityLockedEibPKc(ptr noundef nonnull align 8 dereferenceable(228) %this, i32 noundef %sub.ptr.div.i128.lcssa, i1 noundef zeroext false, ptr noundef nonnull @.str.56) br label %return return: ; preds = %if.then.i.i57, %_ZN9grpc_core13RefCountedPtrINS_19LoadBalancingPolicy22TransientFailurePickerEED2Ev.exit, %for.end107, %if.then103, %if.then59, %if.then52 diff --git a/bench/hermes/optimized/CFG.cpp.ll b/bench/hermes/optimized/CFG.cpp.ll index c898a924cee..86f713ba422 100644 --- a/bench/hermes/optimized/CFG.cpp.ll +++ b/bench/hermes/optimized/CFG.cpp.ll @@ -9152,8 +9152,8 @@ if.then3: ; preds = %for.body %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %__i.0150 to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i.i.i.i.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 4 - %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i - %add.ptr.i.i.i.i.i = getelementptr inbounds %"class.llvh::cfg::Update", ptr %add.ptr4, i64 %.pre.i.i.i.i.i + %idx.neg.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i + %add.ptr.i.i.i.i.i = getelementptr inbounds %"class.llvh::cfg::Update", ptr %add.ptr4, i64 %idx.neg.i.i.i.i.i call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %add.ptr.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(1) %__first, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__first, ptr noundef nonnull align 8 dereferenceable(16) %__val, i64 16, i1 false) br label %for.inc @@ -20344,10 +20344,8 @@ _ZNSt12_Vector_baseIPN6hermes10BasicBlockESaIS2_EE13_M_deallocateEPS2_m.exit.i: if.else.i: ; preds = %entry %_M_finish.i.i = getelementptr inbounds i8, ptr %this, i64 8 %2 = load ptr, ptr %_M_finish.i.i, align 8 - %sub.ptr.lhs.cast.i14.i = ptrtoint ptr %2 to i64 - %sub.ptr.sub.i16.i = sub i64 %sub.ptr.lhs.cast.i14.i, %sub.ptr.rhs.cast.i.i %cmp24.not.i = icmp eq ptr %2, %1 - br i1 %cmp24.not.i, label %_ZSt4copyIPKPN6hermes10BasicBlockEPS2_ET0_T_S7_S6_.exit32.i, label %if.then25.i + br i1 %cmp24.not.i, label %_ZSt22__uninitialized_copy_aIPKPN6hermes10BasicBlockEPS2_S2_ET0_T_S7_S6_RSaIT1_E.exit.i, label %if.then25.i if.then25.i: ; preds = %if.else.i store i64 0, ptr %1, align 8 @@ -20360,17 +20358,12 @@ if.then.i20.i: ; preds = %if.then25.i store ptr %add.ptr.i.i.i.i.i.i3, ptr %_M_finish.i.i, align 8 br label %_ZNSt6vectorIPN6hermes10BasicBlockESaIS2_EE13_M_assign_auxIPKS2_EEvT_S8_St20forward_iterator_tag.exit -_ZSt4copyIPKPN6hermes10BasicBlockEPS2_ET0_T_S7_S6_.exit32.i: ; preds = %if.else.i +_ZSt22__uninitialized_copy_aIPKPN6hermes10BasicBlockEPS2_S2_ET0_T_S7_S6_RSaIT1_E.exit.i: ; preds = %if.else.i + %sub.ptr.lhs.cast.i14.i = ptrtoint ptr %2 to i64 + %sub.ptr.sub.i16.i = sub i64 %sub.ptr.lhs.cast.i14.i, %sub.ptr.rhs.cast.i.i %gepdiff = sub nsw i64 8, %sub.ptr.sub.i16.i - %tobool.not.i.i.i.i.i.i.i.i.i = icmp eq i64 %sub.ptr.sub.i16.i, 8 - br i1 %tobool.not.i.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_copy_aIPKPN6hermes10BasicBlockEPS2_S2_ET0_T_S7_S6_RSaIT1_E.exit.i, label %if.then.i.i.i.i.i.i.i.i.i - -if.then.i.i.i.i.i.i.i.i.i: ; preds = %_ZSt4copyIPKPN6hermes10BasicBlockEPS2_ET0_T_S7_S6_.exit32.i %incdec.ptr4.sink.i.i46.i.ptr = getelementptr inbounds i8, ptr %ref.tmp, i64 %sub.ptr.sub.i16.i call void @llvm.memmove.p0.p0.i64(ptr align 8 %2, ptr nonnull align 8 %incdec.ptr4.sink.i.i46.i.ptr, i64 %gepdiff, i1 false) - br label %_ZSt22__uninitialized_copy_aIPKPN6hermes10BasicBlockEPS2_S2_ET0_T_S7_S6_RSaIT1_E.exit.i - -_ZSt22__uninitialized_copy_aIPKPN6hermes10BasicBlockEPS2_S2_ET0_T_S7_S6_RSaIT1_E.exit.i: ; preds = %if.then.i.i.i.i.i.i.i.i.i, %_ZSt4copyIPKPN6hermes10BasicBlockEPS2_ET0_T_S7_S6_.exit32.i %add.ptr.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %2, i64 %gepdiff store ptr %add.ptr.i.i.i.i.i.i.i.i.i, ptr %_M_finish.i.i, align 8 br label %_ZNSt6vectorIPN6hermes10BasicBlockESaIS2_EE13_M_assign_auxIPKS2_EEvT_S8_St20forward_iterator_tag.exit @@ -24623,8 +24616,8 @@ if.then2.i39: ; preds = %for.body.i20 %sub.ptr.lhs.cast.i.i.i.i.i.i41 = ptrtoint ptr %__i.015.i21 to i64 %sub.ptr.sub.i.i.i.i.i.i42 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i41, %sub.ptr.rhs.cast %sub.ptr.div.i.i.i.i.i.i43 = ashr exact i64 %sub.ptr.sub.i.i.i.i.i.i42, 3 - %.pre.i.i.i.i.i.i44 = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i43 - %add.ptr.i.i.i.i.i.i45 = getelementptr inbounds ptr, ptr %add.ptr3.i40, i64 %.pre.i.i.i.i.i.i44 + %idx.neg.i.i.i.i.i.i44 = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i43 + %add.ptr.i.i.i.i.i.i45 = getelementptr inbounds ptr, ptr %add.ptr3.i40, i64 %idx.neg.i.i.i.i.i.i44 tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %add.ptr.i.i.i.i.i.i45, ptr noundef nonnull align 8 dereferenceable(1) %__first, i64 %sub.ptr.sub.i.i.i.i.i.i42, i1 false) br label %for.inc.i29 diff --git a/bench/hermes/optimized/FileCheck.cpp.ll b/bench/hermes/optimized/FileCheck.cpp.ll index eebd928d9c6..3113c87ac37 100644 --- a/bench/hermes/optimized/FileCheck.cpp.ll +++ b/bench/hermes/optimized/FileCheck.cpp.ll @@ -2556,13 +2556,11 @@ for.end: ; preds = %_ZNSt10unique_ptrIN br i1 %cmp.not.i.i.i.i, label %_ZNSt12_Vector_baseIN4llvh16FileCheckPatternESaIS1_EEC2EmRKS2_.exit.i.thread, label %cond.true.i.i.i.i _ZNSt12_Vector_baseIN4llvh16FileCheckPatternESaIS1_EEC2EmRKS2_.exit.i.thread: ; preds = %for.end.thread, %for.end - %sub.ptr.sub.i.i84609 = phi i64 [ 0, %for.end.thread ], [ %sub.ptr.sub.i.i84, %for.end ] %_M_finish.i.i81608 = phi ptr [ %_M_finish.i.i81602, %for.end.thread ], [ %_M_finish.i.i81, %for.end ] %_M_finish.i.i.i86564 = getelementptr inbounds i8, ptr %DagNotMatches, i64 8 - %add.ptr.i.i.i565 = getelementptr inbounds i8, ptr null, i64 %sub.ptr.sub.i.i84609 %_M_end_of_storage.i.i.i87566 = getelementptr inbounds i8, ptr %DagNotMatches, i64 16 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %DagNotMatches, i8 0, i64 16, i1 false) - store ptr %add.ptr.i.i.i565, ptr %_M_end_of_storage.i.i.i87566, align 8 + store ptr null, ptr %_M_end_of_storage.i.i.i87566, align 8 br label %_ZNSt6vectorIN4llvh16FileCheckPatternESaIS1_EEC2ERKS3_.exit cond.true.i.i.i.i: ; preds = %for.end diff --git a/bench/hermes/optimized/Path.cpp.ll b/bench/hermes/optimized/Path.cpp.ll index 47ff865d23a..e7a8c34fb77 100644 --- a/bench/hermes/optimized/Path.cpp.ll +++ b/bench/hermes/optimized/Path.cpp.ll @@ -9799,8 +9799,8 @@ _ZN4llvh15SmallVectorImplIcE6appendISt13move_iteratorIPcEvEEvT_S6_.exit: ; preds if.then.i.i.i.i.i: ; preds = %_ZN4llvh15SmallVectorImplIcE6appendISt13move_iteratorIPcEvEEvT_S6_.exit %sub.ptr.rhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr7 to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i, %sub.ptr.rhs.cast.i.i.i.i.i - %.pre.i.i.i.i.i = sub i64 0, %sub.ptr.sub.i.i.i.i.i - %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %add.ptr.i48, i64 %.pre.i.i.i.i.i + %idx.neg.i.i.i.i.i = sub i64 0, %sub.ptr.sub.i.i.i.i.i + %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %add.ptr.i48, i64 %idx.neg.i.i.i.i.i tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %add.ptr.i.i.i.i.i, ptr align 1 %add.ptr7, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) br label %_ZSt13move_backwardIPcS0_ET0_T_S2_S1_.exit @@ -9816,24 +9816,20 @@ if.end24: ; preds = %_ZN4llvh15SmallVect %conv.i66 = add i32 %7, %13 store i32 %conv.i66, ptr %Size.i, align 8 %cmp.not.i.i69 = icmp eq i64 %sub.ptr.sub, %conv.i38.pre-phi - br i1 %cmp.not.i.i69, label %_ZN4llvh23SmallVectorTemplateBaseIcLb1EE18uninitialized_moveIPcS3_EEvT_S4_T0_.exit, label %if.then.i.i70 + br i1 %cmp.not.i.i69, label %for.end, label %for.body.preheader -if.then.i.i70: ; preds = %if.end24 +for.body.preheader: ; preds = %if.end24 %conv.i68 = zext i32 %conv.i66 to i64 %add.ptr.i = getelementptr inbounds i8, ptr %8, i64 %conv.i68 %idx.neg33 = sub nsw i64 0, %gepdiff %add.ptr34 = getelementptr inbounds i8, ptr %add.ptr.i, i64 %idx.neg33 tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr34, ptr align 1 %add.ptr7, i64 %gepdiff, i1 false) - br label %_ZN4llvh23SmallVectorTemplateBaseIcLb1EE18uninitialized_moveIPcS3_EEvT_S4_T0_.exit - -_ZN4llvh23SmallVectorTemplateBaseIcLb1EE18uninitialized_moveIPcS3_EEvT_S4_T0_.exit: ; preds = %if.end24, %if.then.i.i70 - %cmp35.not77 = icmp eq i64 %gepdiff, 0 - br i1 %cmp35.not77, label %for.end, label %for.body + br label %for.body -for.body: ; preds = %_ZN4llvh23SmallVectorTemplateBaseIcLb1EE18uninitialized_moveIPcS3_EEvT_S4_T0_.exit, %for.body - %J.080 = phi ptr [ %incdec.ptr, %for.body ], [ %add.ptr7, %_ZN4llvh23SmallVectorTemplateBaseIcLb1EE18uninitialized_moveIPcS3_EEvT_S4_T0_.exit ] - %NumOverwritten.079 = phi i64 [ %dec, %for.body ], [ %gepdiff, %_ZN4llvh23SmallVectorTemplateBaseIcLb1EE18uninitialized_moveIPcS3_EEvT_S4_T0_.exit ] - %From.addr.078 = phi ptr [ %incdec.ptr36, %for.body ], [ %From, %_ZN4llvh23SmallVectorTemplateBaseIcLb1EE18uninitialized_moveIPcS3_EEvT_S4_T0_.exit ] +for.body: ; preds = %for.body.preheader, %for.body + %J.080 = phi ptr [ %incdec.ptr, %for.body ], [ %add.ptr7, %for.body.preheader ] + %NumOverwritten.079 = phi i64 [ %dec, %for.body ], [ %gepdiff, %for.body.preheader ] + %From.addr.078 = phi ptr [ %incdec.ptr36, %for.body ], [ %From, %for.body.preheader ] %14 = load i8, ptr %From.addr.078, align 1 store i8 %14, ptr %J.080, align 1 %incdec.ptr = getelementptr inbounds i8, ptr %J.080, i64 1 @@ -9842,8 +9838,8 @@ for.body: ; preds = %_ZN4llvh23SmallVect %cmp35.not = icmp eq i64 %dec, 0 br i1 %cmp35.not, label %for.end, label %for.body, !llvm.loop !129 -for.end: ; preds = %for.body, %_ZN4llvh23SmallVectorTemplateBaseIcLb1EE18uninitialized_moveIPcS3_EEvT_S4_T0_.exit - %From.addr.0.lcssa = phi ptr [ %From, %_ZN4llvh23SmallVectorTemplateBaseIcLb1EE18uninitialized_moveIPcS3_EEvT_S4_T0_.exit ], [ %incdec.ptr36, %for.body ] +for.end: ; preds = %for.body, %if.end24 + %From.addr.0.lcssa = phi ptr [ %From, %if.end24 ], [ %incdec.ptr36, %for.body ] %cmp.not.i = icmp eq ptr %From.addr.0.lcssa, %To br i1 %cmp.not.i, label %return, label %if.then.i74 diff --git a/bench/hyperscan/optimized/rose_build_bytecode.cpp.ll b/bench/hyperscan/optimized/rose_build_bytecode.cpp.ll index 398736c8d7f..e311cb2be7b 100644 --- a/bench/hyperscan/optimized/rose_build_bytecode.cpp.ll +++ b/bench/hyperscan/optimized/rose_build_bytecode.cpp.ll @@ -17919,11 +17919,10 @@ _ZNK3ue215rose_literal_id22elength_including_maskEv.exit.i: ; preds = %for.inc.i _ZNK3ue215rose_literal_id22elength_including_maskEv.exit.thread.i: ; preds = %sw.bb.i %_M_string_length.i.i.i225297.i = getelementptr inbounds i8, ptr %storemerge.i.i.i.i.i.i.i2707, i64 8 %1816 = load i64, ptr %_M_string_length.i.i.i225297.i, align 8 - %spec.select.i298.i = call i64 @llvm.umax.i64(i64 %sub.ptr.sub.i.i224.i, i64 %1816) %delay.i299.i = getelementptr inbounds i8, ptr %storemerge.i.i.i.i.i.i.i2707, i64 116 %1817 = load i32, ptr %delay.i299.i, align 4 %conv.i226300.i = zext i32 %1817 to i64 - %add.i301.i = add i64 %spec.select.i298.i, %conv.i226300.i + %add.i301.i = add i64 %1816, %conv.i226300.i %cmp52.not302.i = icmp ugt i64 %add.i301.i, %conv50.i br i1 %cmp52.not302.i, label %if.else.i2733, label %_ZNK3ue215rose_literal_id22elength_including_maskEv.exit247.thread.i @@ -17950,7 +17949,7 @@ _ZNK3ue215rose_literal_id22elength_including_maskEv.exit247.i: ; preds = %for.in br i1 %cmp58.i, label %cond.end65.i, label %for.body.i254.i _ZNK3ue215rose_literal_id22elength_including_maskEv.exit247.thread.i: ; preds = %_ZNK3ue215rose_literal_id22elength_including_maskEv.exit.thread.i - %1821 = trunc i64 %spec.select.i298.i to i32 + %1821 = trunc i64 %1816 to i32 %1822 = add i32 %1817, %1821 %sub57279.i = sub i32 %1800, %1822 %spec.select = call i32 @llvm.umin.i32(i32 %1792, i32 %sub57279.i) diff --git a/bench/hyperscan/optimized/rose_build_lit_accel.cpp.ll b/bench/hyperscan/optimized/rose_build_lit_accel.cpp.ll index 887602015dc..dfcf1352863 100644 --- a/bench/hyperscan/optimized/rose_build_lit_accel.cpp.ll +++ b/bench/hyperscan/optimized/rose_build_lit_accel.cpp.ll @@ -369,7 +369,7 @@ _ZN3ue2L13mask_overhangERKNS_11AccelStringE.exit.i: ; preds = %for.inc.i.i, %for _ZN3ue2L13mask_overhangERKNS_11AccelStringE.exit.thread.i: ; preds = %if.then185.i %spec.select.i414.i = tail call noundef i64 @llvm.usub.sat.i64(i64 %sub.ptr.sub.i.i.i, i64 %31) - %add189415.i = add i64 %spec.select.i414.i, %.us-phi + %add189415.i = add nuw nsw i64 %spec.select.i414.i, %.us-phi %cmp190416.i = icmp ult i64 %add189415.i, %conv186.i br i1 %cmp190416.i, label %cleanup208.i, label %cond.end198.i @@ -622,7 +622,7 @@ _ZN3ue2L13mask_overhangERKNS_11AccelStringE.exit.i295: ; preds = %for.inc.i.i299 _ZN3ue2L13mask_overhangERKNS_11AccelStringE.exit.thread.i303: ; preds = %if.then138.i %spec.select.i313.i = tail call noundef i64 @llvm.usub.sat.i64(i64 %sub.ptr.sub.i.i.i290, i64 %64) - %add314.i = add i64 %spec.select.i313.i, %indvars.iv.i + %add314.i = add nuw nsw i64 %spec.select.i313.i, %indvars.iv.i %spec.select519 = tail call i64 @llvm.umax.i64(i64 %add314.i, i64 %conv139.i) br label %cond.end150.i @@ -738,15 +738,18 @@ if.end18: ; preds = %for.body %_M_finish.i.i313 = getelementptr inbounds i8, ptr %__begin1.sroa.0.0439, i64 48 %80 = load ptr, ptr %_M_finish.i.i313, align 8 %81 = load ptr, ptr %msk.i, align 8 + %cmp.i.not27.i = icmp eq ptr %81, %80 + br i1 %cmp.i.not27.i, label %_ZN3ue2L13mask_overhangERKNS_11AccelStringE.exit, label %for.body.i314.preheader + +for.body.i314.preheader: ; preds = %if.end18 %sub.ptr.lhs.cast.i.i = ptrtoint ptr %80 to i64 %sub.ptr.rhs.cast.i.i = ptrtoint ptr %81 to i64 %sub.ptr.sub.i.i = sub i64 %sub.ptr.lhs.cast.i.i, %sub.ptr.rhs.cast.i.i - %cmp.i.not27.i = icmp eq ptr %81, %80 - br i1 %cmp.i.not27.i, label %_ZN3ue2L13mask_overhangERKNS_11AccelStringE.exit, label %for.body.i314 + br label %for.body.i314 -for.body.i314: ; preds = %if.end18, %for.inc.i - %msk_true_size.029.i = phi i64 [ %dec.i, %for.inc.i ], [ %sub.ptr.sub.i.i, %if.end18 ] - %__begin1.sroa.0.028.i = phi ptr [ %incdec.ptr.i.i318, %for.inc.i ], [ %81, %if.end18 ] +for.body.i314: ; preds = %for.body.i314.preheader, %for.inc.i + %msk_true_size.029.i = phi i64 [ %dec.i, %for.inc.i ], [ %sub.ptr.sub.i.i, %for.body.i314.preheader ] + %__begin1.sroa.0.028.i = phi ptr [ %incdec.ptr.i.i318, %for.inc.i ], [ %81, %for.body.i314.preheader ] %82 = load i8, ptr %__begin1.sroa.0.028.i, align 1 %tobool.not.i315 = icmp eq i8 %82, 0 br i1 %tobool.not.i315, label %for.inc.i, label %_ZN3ue2L13mask_overhangERKNS_11AccelStringE.exit @@ -758,7 +761,7 @@ for.inc.i: ; preds = %for.body.i314 br i1 %cmp.i.not.i319, label %_ZN3ue2L13mask_overhangERKNS_11AccelStringE.exit, label %for.body.i314 _ZN3ue2L13mask_overhangERKNS_11AccelStringE.exit: ; preds = %for.inc.i, %for.body.i314, %if.end18 - %msk_true_size.0.lcssa.i = phi i64 [ %sub.ptr.sub.i.i, %if.end18 ], [ 0, %for.inc.i ], [ %msk_true_size.029.i, %for.body.i314 ] + %msk_true_size.0.lcssa.i = phi i64 [ 0, %if.end18 ], [ 0, %for.inc.i ], [ %msk_true_size.029.i, %for.body.i314 ] %_M_string_length.i.i316 = getelementptr inbounds i8, ptr %__begin1.sroa.0.0439, i64 8 %83 = load i64, ptr %_M_string_length.i.i316, align 8 %spec.select.i317 = tail call noundef i64 @llvm.usub.sat.i64(i64 %msk_true_size.0.lcssa.i, i64 %83) diff --git a/bench/imgui/optimized/imgui_draw.cpp.ll b/bench/imgui/optimized/imgui_draw.cpp.ll index 8576831df56..09012972b08 100644 --- a/bench/imgui/optimized/imgui_draw.cpp.ll +++ b/bench/imgui/optimized/imgui_draw.cpp.ll @@ -22584,31 +22584,30 @@ for.body28.lr.ph.i: ; preds = %for.cond26.preheade %idx.ext29.i = zext nneg i32 %div59.i to i64 %add.ptr30.i = getelementptr inbounds i8, ptr %arrayidx.i36, i64 %idx.ext29.i %add.ptr32.i = getelementptr inbounds i8, ptr %add.ptr30.i, i64 %indvar.i - %52 = tail call i32 @llvm.umax.i32(i32 %sub3.i, i32 1) - %umax89.i = zext i32 %52 to i64 + %umax89.i = zext i32 %sub3.i to i64 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %add.ptr32.i, i8 0, i64 %umax89.i, i1 false) br label %if.end82.i if.else.i38: ; preds = %for.body.i - %53 = load ptr, ptr %TexPixelsRGBA32.i32, align 8 - %54 = load i16, ptr %X83.i, align 4 - %conv40.i = zext i16 %54 to i32 - %55 = load i16, ptr %Y88.i, align 2 - %conv42.i = zext i16 %55 to i32 + %52 = load ptr, ptr %TexPixelsRGBA32.i32, align 8 + %53 = load i16, ptr %X83.i, align 4 + %conv40.i = zext i16 %53 to i32 + %54 = load i16, ptr %Y88.i, align 2 + %conv42.i = zext i16 %54 to i32 %add43.i = add nuw nsw i32 %conv42.i, %46 - %56 = load i32, ptr %TexWidth.i, align 8 - %mul45.i = mul i32 %add43.i, %56 + %55 = load i32, ptr %TexWidth.i, align 8 + %mul45.i = mul i32 %add43.i, %55 %add46.i = add i32 %mul45.i, %conv40.i %idxprom47.i = zext i32 %add46.i to i64 - %arrayidx48.i = getelementptr inbounds i32, ptr %53, i64 %idxprom47.i + %arrayidx48.i = getelementptr inbounds i32, ptr %52, i64 %idxprom47.i %cmp5178.not.i = icmp ult i32 %sub.i, 2 br i1 %cmp5178.not.i, label %for.cond59.preheader.i, label %for.body52.preheader.i for.body52.preheader.i: ; preds = %if.else.i38 - %57 = add i32 %indvars.iv, %conv.i33 - %58 = lshr i32 %57, 1 - %59 = tail call i32 @llvm.umax.i32(i32 %58, i32 1) - %umax = zext nneg i32 %59 to i64 + %56 = add i32 %indvars.iv, %conv.i33 + %57 = lshr i32 %56, 1 + %58 = tail call i32 @llvm.umax.i32(i32 %57, i32 1) + %umax = zext nneg i32 %58 to i64 br label %for.body52.i for.cond59.preheader.i: ; preds = %for.body52.i, %if.else.i38 @@ -22637,11 +22636,11 @@ for.body72.lr.ph.i: ; preds = %for.cond70.preheade %idx.ext73.i = zext nneg i32 %div59.i to i64 %add.ptr74.i = getelementptr inbounds i32, ptr %arrayidx48.i, i64 %idx.ext73.i %add.ptr76.i = getelementptr inbounds i32, ptr %add.ptr74.i, i64 %indvar.i - %60 = add i32 %indvars.iv, %conv.i33 - %61 = lshr i32 %60, 1 - %62 = sub i32 %60, %61 - %63 = tail call i32 @llvm.umax.i32(i32 %62, i32 1) - %umax61 = zext i32 %63 to i64 + %59 = add i32 %indvars.iv, %conv.i33 + %60 = lshr i32 %59, 1 + %61 = sub i32 %59, %60 + %62 = tail call i32 @llvm.umax.i32(i32 %61, i32 1) + %umax61 = zext i32 %62 to i64 br label %for.body72.i for.body72.i: ; preds = %for.body72.i, %for.body72.lr.ph.i @@ -22653,13 +22652,13 @@ for.body72.i: ; preds = %for.body72.i, %for. br i1 %exitcond62.not, label %if.end82.i, label %for.body72.i, !llvm.loop !121 if.end82.i: ; preds = %for.body72.i, %for.cond70.preheader.i, %for.body28.lr.ph.i, %for.cond26.preheader.i - %64 = load i16, ptr %X83.i, align 4 - %conv84.i = zext i16 %64 to i32 + %63 = load i16, ptr %X83.i, align 4 + %conv84.i = zext i16 %63 to i32 %add85.i = add nuw i32 %div59.i, %conv84.i %sub86.i = add i32 %add85.i, -1 %conv87.i = uitofp i32 %sub86.i to float - %65 = load i16, ptr %Y88.i, align 2 - %conv89.i = zext i16 %65 to i32 + %64 = load i16, ptr %Y88.i, align 2 + %conv89.i = zext i16 %64 to i32 %add90.i = add nuw nsw i32 %conv89.i, %46 %conv91.i = uitofp nneg i32 %add90.i to float %TexUvScale.val63.i = load float, ptr %TexUvScale.i, align 4 @@ -22667,8 +22666,8 @@ if.end82.i: ; preds = %for.body72.i, %for. %mul.i.i37 = fmul float %TexUvScale.val63.i, %conv87.i %mul3.i.i = fmul float %TexUvScale.val64.i, %conv91.i %indvar.next.i = add nuw nsw i64 %indvar.i, 1 - %66 = trunc nuw nsw i64 %indvar.next.i to i32 - %add98.i = add nuw i32 %add85.i, %66 + %65 = trunc nuw nsw i64 %indvar.next.i to i32 + %add98.i = add nuw i32 %add85.i, %65 %conv99.i = uitofp i32 %add98.i to float %add103.i = add nuw nsw i32 %add90.i, 1 %conv104.i = uitofp nneg i32 %add103.i to float @@ -22690,92 +22689,92 @@ if.end82.i: ; preds = %for.body72.i, %for. _ZL34ImFontAtlasBuildRenderLinesTexDataP11ImFontAtlas.exit: ; preds = %if.end82.i, %_ZL36ImFontAtlasBuildRenderDefaultTexDataP11ImFontAtlas.exit %CustomRects = getelementptr inbounds i8, ptr %atlas, i64 104 - %67 = load i32, ptr %CustomRects, align 8 - %cmp55 = icmp sgt i32 %67, 0 + %66 = load i32, ptr %CustomRects, align 8 + %cmp55 = icmp sgt i32 %66, 0 br i1 %cmp55, label %for.body, label %for.end for.body: ; preds = %_ZL34ImFontAtlasBuildRenderLinesTexDataP11ImFontAtlas.exit, %for.inc - %68 = phi i32 [ %81, %for.inc ], [ %67, %_ZL34ImFontAtlasBuildRenderLinesTexDataP11ImFontAtlas.exit ] + %67 = phi i32 [ %80, %for.inc ], [ %66, %_ZL34ImFontAtlasBuildRenderLinesTexDataP11ImFontAtlas.exit ] %indvars.iv63 = phi i64 [ %indvars.iv.next64, %for.inc ], [ 0, %_ZL34ImFontAtlasBuildRenderLinesTexDataP11ImFontAtlas.exit ] - %69 = load ptr, ptr %Data.i.i.i, align 8 - %arrayidx.i40 = getelementptr inbounds %struct.ImFontAtlasCustomRect, ptr %69, i64 %indvars.iv63 + %68 = load ptr, ptr %Data.i.i.i, align 8 + %arrayidx.i40 = getelementptr inbounds %struct.ImFontAtlasCustomRect, ptr %68, i64 %indvars.iv63 %Font = getelementptr inbounds i8, ptr %arrayidx.i40, i64 24 - %70 = load ptr, ptr %Font, align 8 - %cmp2 = icmp eq ptr %70, null + %69 = load ptr, ptr %Font, align 8 + %cmp2 = icmp eq ptr %69, null br i1 %cmp2, label %for.inc, label %lor.lhs.false lor.lhs.false: ; preds = %for.body %GlyphID = getelementptr inbounds i8, ptr %arrayidx.i40, i64 8 - %71 = load i32, ptr %GlyphID, align 8 - %cmp3 = icmp eq i32 %71, 0 + %70 = load i32, ptr %GlyphID, align 8 + %cmp3 = icmp eq i32 %70, 0 br i1 %cmp3, label %for.inc, label %if.end if.end: ; preds = %lor.lhs.false %X.i43 = getelementptr inbounds i8, ptr %arrayidx.i40, i64 4 - %72 = load i16, ptr %X.i43, align 4 - %conv.i44 = uitofp i16 %72 to float - %73 = load float, ptr %TexUvScale.i, align 8 - %mul.i46 = fmul float %73, %conv.i44 + %71 = load i16, ptr %X.i43, align 4 + %conv.i44 = uitofp i16 %71 to float + %72 = load float, ptr %TexUvScale.i, align 8 + %mul.i46 = fmul float %72, %conv.i44 %Y.i = getelementptr inbounds i8, ptr %arrayidx.i40, i64 6 - %74 = load i16, ptr %Y.i, align 2 - %conv2.i = uitofp i16 %74 to float - %75 = load float, ptr %y.i, align 4 - %mul4.i = fmul float %75, %conv2.i - %conv7.i48 = zext i16 %72 to i32 - %76 = load i16, ptr %arrayidx.i40, align 8 - %conv8.i49 = zext i16 %76 to i32 + %73 = load i16, ptr %Y.i, align 2 + %conv2.i = uitofp i16 %73 to float + %74 = load float, ptr %y.i, align 4 + %mul4.i = fmul float %74, %conv2.i + %conv7.i48 = zext i16 %71 to i32 + %75 = load i16, ptr %arrayidx.i40, align 8 + %conv8.i49 = zext i16 %75 to i32 %add.i = add nuw nsw i32 %conv8.i49, %conv7.i48 %conv9.i50 = uitofp nneg i32 %add.i to float - %mul12.i = fmul float %73, %conv9.i50 - %conv14.i = zext i16 %74 to i32 + %mul12.i = fmul float %72, %conv9.i50 + %conv14.i = zext i16 %73 to i32 %Height.i = getelementptr inbounds i8, ptr %arrayidx.i40, i64 2 - %77 = load i16, ptr %Height.i, align 2 - %conv15.i = zext i16 %77 to i32 + %76 = load i16, ptr %Height.i, align 2 + %conv15.i = zext i16 %76 to i32 %add16.i = add nuw nsw i32 %conv15.i, %conv14.i %conv17.i = uitofp nneg i32 %add16.i to float - %mul20.i = fmul float %75, %conv17.i - %conv = trunc i32 %71 to i16 + %mul20.i = fmul float %74, %conv17.i + %conv = trunc i32 %70 to i16 %GlyphOffset = getelementptr inbounds i8, ptr %arrayidx.i40, i64 16 - %78 = load float, ptr %GlyphOffset, align 8 + %77 = load float, ptr %GlyphOffset, align 8 %y = getelementptr inbounds i8, ptr %arrayidx.i40, i64 20 - %79 = load float, ptr %y, align 4 - %conv10 = uitofp i16 %76 to float - %add = fadd float %78, %conv10 - %conv14 = uitofp i16 %77 to float - %add15 = fadd float %79, %conv14 + %78 = load float, ptr %y, align 4 + %conv10 = uitofp i16 %75 to float + %add = fadd float %77, %conv10 + %conv14 = uitofp i16 %76 to float + %add15 = fadd float %78, %conv14 %GlyphAdvanceX = getelementptr inbounds i8, ptr %arrayidx.i40, i64 12 - %80 = load float, ptr %GlyphAdvanceX, align 4 - tail call void @_ZN6ImFont8AddGlyphEPK12ImFontConfigtfffffffff(ptr noundef nonnull align 8 dereferenceable(118) %70, ptr noundef null, i16 noundef zeroext %conv, float noundef %78, float noundef %79, float noundef %add, float noundef %add15, float noundef %mul.i46, float noundef %mul4.i, float noundef %mul12.i, float noundef %mul20.i, float noundef %80) + %79 = load float, ptr %GlyphAdvanceX, align 4 + tail call void @_ZN6ImFont8AddGlyphEPK12ImFontConfigtfffffffff(ptr noundef nonnull align 8 dereferenceable(118) %69, ptr noundef null, i16 noundef zeroext %conv, float noundef %77, float noundef %78, float noundef %add, float noundef %add15, float noundef %mul.i46, float noundef %mul4.i, float noundef %mul12.i, float noundef %mul20.i, float noundef %79) %.pre = load i32, ptr %CustomRects, align 8 br label %for.inc for.inc: ; preds = %for.body, %lor.lhs.false, %if.end - %81 = phi i32 [ %68, %for.body ], [ %68, %lor.lhs.false ], [ %.pre, %if.end ] + %80 = phi i32 [ %67, %for.body ], [ %67, %lor.lhs.false ], [ %.pre, %if.end ] %indvars.iv.next64 = add nuw nsw i64 %indvars.iv63, 1 - %82 = sext i32 %81 to i64 - %cmp = icmp slt i64 %indvars.iv.next64, %82 + %81 = sext i32 %80 to i64 + %cmp = icmp slt i64 %indvars.iv.next64, %81 br i1 %cmp, label %for.body, label %for.end, !llvm.loop !123 for.end: ; preds = %for.inc, %_ZL34ImFontAtlasBuildRenderLinesTexDataP11ImFontAtlas.exit %Fonts = getelementptr inbounds i8, ptr %atlas, i64 88 %Data.i51 = getelementptr inbounds i8, ptr %atlas, i64 96 - %83 = load ptr, ptr %Data.i51, align 8 - %84 = load i32, ptr %Fonts, align 8 - %idx.ext.i = sext i32 %84 to i64 - %add.ptr.i = getelementptr inbounds ptr, ptr %83, i64 %idx.ext.i - %cmp23.not57 = icmp eq i32 %84, 0 + %82 = load ptr, ptr %Data.i51, align 8 + %83 = load i32, ptr %Fonts, align 8 + %idx.ext.i = sext i32 %83 to i64 + %add.ptr.i = getelementptr inbounds ptr, ptr %82, i64 %idx.ext.i + %cmp23.not57 = icmp eq i32 %83, 0 br i1 %cmp23.not57, label %for.end28, label %for.body24 for.body24: ; preds = %for.end, %for.inc27 - %__begin1.058 = phi ptr [ %incdec.ptr, %for.inc27 ], [ %83, %for.end ] - %85 = load ptr, ptr %__begin1.058, align 8 - %DirtyLookupTables = getelementptr inbounds i8, ptr %85, i64 96 - %86 = load i8, ptr %DirtyLookupTables, align 8 - %tobool = trunc i8 %86 to i1 + %__begin1.058 = phi ptr [ %incdec.ptr, %for.inc27 ], [ %82, %for.end ] + %84 = load ptr, ptr %__begin1.058, align 8 + %DirtyLookupTables = getelementptr inbounds i8, ptr %84, i64 96 + %85 = load i8, ptr %DirtyLookupTables, align 8 + %tobool = trunc i8 %85 to i1 br i1 %tobool, label %if.then25, label %for.inc27 if.then25: ; preds = %for.body24 - tail call void @_ZN6ImFont16BuildLookupTableEv(ptr noundef nonnull align 8 dereferenceable(118) %85) + tail call void @_ZN6ImFont16BuildLookupTableEv(ptr noundef nonnull align 8 dereferenceable(118) %84) br label %for.inc27 for.inc27: ; preds = %for.body24, %if.then25 diff --git a/bench/libphonenumber/optimized/phonenumbermatcher_test.cc.ll b/bench/libphonenumber/optimized/phonenumbermatcher_test.cc.ll index 3657df4e65e..2456a0dde7f 100644 --- a/bench/libphonenumber/optimized/phonenumbermatcher_test.cc.ll +++ b/bench/libphonenumber/optimized/phonenumbermatcher_test.cc.ll @@ -21693,27 +21693,28 @@ _ZSt7advanceIPKN4i18n12phonenumbers12_GLOBAL__N_110NumberTestEmEvRT_T0_.exit.i.i %57 = getelementptr inbounds %"struct.i18n::phonenumbers::(anonymous namespace)::NumberTest", ptr %56, i64 %55 store ptr %57, ptr %16, align 8 %.not11.i.i.i.i.i61.i.i = icmp eq ptr %1, %17 - br i1 %.not11.i.i.i.i.i61.i.i, label %_ZSt22__uninitialized_move_aIPN4i18n12phonenumbers12_GLOBAL__N_110NumberTestES4_SaIS3_EET0_T_S7_S6_RT1_.exit67.i.i, label %.lr.ph.i.i.i.i.i62.i.i + br i1 %.not11.i.i.i.i.i61.i.i, label %_ZSt22__uninitialized_move_aIPN4i18n12phonenumbers12_GLOBAL__N_110NumberTestES4_SaIS3_EET0_T_S7_S6_RT1_.exit67.i.thread.i, label %.lr.ph.i.i.i.i.i62.i.i + +_ZSt22__uninitialized_move_aIPN4i18n12phonenumbers12_GLOBAL__N_110NumberTestES4_SaIS3_EET0_T_S7_S6_RT1_.exit67.i.thread.i: ; preds = %_ZSt7advanceIPKN4i18n12phonenumbers12_GLOBAL__N_110NumberTestEmEvRT_T0_.exit.i.i + %58 = getelementptr inbounds i8, ptr %57, i64 %22 + store ptr %58, ptr %16, align 8 + br label %_ZNSt6vectorIN4i18n12phonenumbers12_GLOBAL__N_110NumberTestESaIS3_EE18_M_insert_dispatchIPKS3_EEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EET_SD_St12__false_type.exit .lr.ph.i.i.i.i.i62.i.i: ; preds = %_ZSt7advanceIPKN4i18n12phonenumbers12_GLOBAL__N_110NumberTestEmEvRT_T0_.exit.i.i, %.lr.ph.i.i.i.i.i62.i.i - %.013.i.i.i.i.i63.i.i = phi ptr [ %61, %.lr.ph.i.i.i.i.i62.i.i ], [ %57, %_ZSt7advanceIPKN4i18n12phonenumbers12_GLOBAL__N_110NumberTestEmEvRT_T0_.exit.i.i ] - %.sroa.010.012.i.i.i.i.i64.i.i = phi ptr [ %60, %.lr.ph.i.i.i.i.i62.i.i ], [ %8, %_ZSt7advanceIPKN4i18n12phonenumbers12_GLOBAL__N_110NumberTestEmEvRT_T0_.exit.i.i ] + %.013.i.i.i.i.i63.i.i = phi ptr [ %62, %.lr.ph.i.i.i.i.i62.i.i ], [ %57, %_ZSt7advanceIPKN4i18n12phonenumbers12_GLOBAL__N_110NumberTestEmEvRT_T0_.exit.i.i ] + %.sroa.010.012.i.i.i.i.i64.i.i = phi ptr [ %61, %.lr.ph.i.i.i.i.i62.i.i ], [ %8, %_ZSt7advanceIPKN4i18n12phonenumbers12_GLOBAL__N_110NumberTestEmEvRT_T0_.exit.i.i ] tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_(ptr noundef nonnull align 8 dereferenceable(64) %.013.i.i.i.i.i63.i.i, ptr noundef nonnull align 8 dereferenceable(64) %.sroa.010.012.i.i.i.i.i64.i.i) #17 - %58 = getelementptr inbounds i8, ptr %.013.i.i.i.i.i63.i.i, i64 32 - %59 = getelementptr inbounds i8, ptr %.sroa.010.012.i.i.i.i.i64.i.i, i64 32 - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_(ptr noundef nonnull align 8 dereferenceable(32) %58, ptr noundef nonnull align 8 dereferenceable(32) %59) #17 - %60 = getelementptr inbounds i8, ptr %.sroa.010.012.i.i.i.i.i64.i.i, i64 64 - %61 = getelementptr inbounds i8, ptr %.013.i.i.i.i.i63.i.i, i64 64 - %.not.i.i.i.i.i65.i.i = icmp eq ptr %60, %17 - br i1 %.not.i.i.i.i.i65.i.i, label %_ZSt22__uninitialized_move_aIPN4i18n12phonenumbers12_GLOBAL__N_110NumberTestES4_SaIS3_EET0_T_S7_S6_RT1_.exit67.loopexit.i.i, label %.lr.ph.i.i.i.i.i62.i.i, !llvm.loop !22 - -_ZSt22__uninitialized_move_aIPN4i18n12phonenumbers12_GLOBAL__N_110NumberTestES4_SaIS3_EET0_T_S7_S6_RT1_.exit67.loopexit.i.i: ; preds = %.lr.ph.i.i.i.i.i62.i.i + %59 = getelementptr inbounds i8, ptr %.013.i.i.i.i.i63.i.i, i64 32 + %60 = getelementptr inbounds i8, ptr %.sroa.010.012.i.i.i.i.i64.i.i, i64 32 + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_(ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef nonnull align 8 dereferenceable(32) %60) #17 + %61 = getelementptr inbounds i8, ptr %.sroa.010.012.i.i.i.i.i64.i.i, i64 64 + %62 = getelementptr inbounds i8, ptr %.013.i.i.i.i.i63.i.i, i64 64 + %.not.i.i.i.i.i65.i.i = icmp eq ptr %61, %17 + br i1 %.not.i.i.i.i.i65.i.i, label %_ZSt22__uninitialized_move_aIPN4i18n12phonenumbers12_GLOBAL__N_110NumberTestES4_SaIS3_EET0_T_S7_S6_RT1_.exit67.i.i, label %.lr.ph.i.i.i.i.i62.i.i, !llvm.loop !22 + +_ZSt22__uninitialized_move_aIPN4i18n12phonenumbers12_GLOBAL__N_110NumberTestES4_SaIS3_EET0_T_S7_S6_RT1_.exit67.i.i: ; preds = %.lr.ph.i.i.i.i.i62.i.i %.pre.i.i = load ptr, ptr %16, align 8 - br label %_ZSt22__uninitialized_move_aIPN4i18n12phonenumbers12_GLOBAL__N_110NumberTestES4_SaIS3_EET0_T_S7_S6_RT1_.exit67.i.i - -_ZSt22__uninitialized_move_aIPN4i18n12phonenumbers12_GLOBAL__N_110NumberTestES4_SaIS3_EET0_T_S7_S6_RT1_.exit67.i.i: ; preds = %_ZSt22__uninitialized_move_aIPN4i18n12phonenumbers12_GLOBAL__N_110NumberTestES4_SaIS3_EET0_T_S7_S6_RT1_.exit67.loopexit.i.i, %_ZSt7advanceIPKN4i18n12phonenumbers12_GLOBAL__N_110NumberTestEmEvRT_T0_.exit.i.i - %62 = phi ptr [ %.pre.i.i, %_ZSt22__uninitialized_move_aIPN4i18n12phonenumbers12_GLOBAL__N_110NumberTestES4_SaIS3_EET0_T_S7_S6_RT1_.exit67.loopexit.i.i ], [ %57, %_ZSt7advanceIPKN4i18n12phonenumbers12_GLOBAL__N_110NumberTestEmEvRT_T0_.exit.i.i ] - %63 = getelementptr inbounds i8, ptr %62, i64 %22 + %63 = getelementptr inbounds i8, ptr %.pre.i.i, i64 %22 store ptr %63, ptr %16, align 8 %64 = icmp sgt i64 %23, 0 br i1 %64, label %.lr.ph.i.i.i.i.i69.i.i, label %_ZNSt6vectorIN4i18n12phonenumbers12_GLOBAL__N_110NumberTestESaIS3_EE18_M_insert_dispatchIPKS3_EEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EET_SD_St12__false_type.exit @@ -21860,7 +21861,7 @@ _ZNSt12_Vector_baseIN4i18n12phonenumbers12_GLOBAL__N_110NumberTestESaIS3_EE13_M_ 112: ; preds = %_ZNSt12_Vector_baseIN4i18n12phonenumbers12_GLOBAL__N_110NumberTestESaIS3_EE13_M_deallocateEPS3_m.exit89.i.i unreachable -_ZNSt6vectorIN4i18n12phonenumbers12_GLOBAL__N_110NumberTestESaIS3_EE18_M_insert_dispatchIPKS3_EEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EET_SD_St12__false_type.exit: ; preds = %.lr.ph.i.i.i.i.i69.i.i, %.lr.ph.i.i.i.i.i60.i.i, %4, %_ZSt13move_backwardIPN4i18n12phonenumbers12_GLOBAL__N_110NumberTestES4_ET0_T_S6_S5_.exit.i.i, %_ZSt22__uninitialized_move_aIPN4i18n12phonenumbers12_GLOBAL__N_110NumberTestES4_SaIS3_EET0_T_S7_S6_RT1_.exit67.i.i, %_ZNSt12_Vector_baseIN4i18n12phonenumbers12_GLOBAL__N_110NumberTestESaIS3_EE13_M_deallocateEPS3_m.exit.i.i +_ZNSt6vectorIN4i18n12phonenumbers12_GLOBAL__N_110NumberTestESaIS3_EE18_M_insert_dispatchIPKS3_EEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EET_SD_St12__false_type.exit: ; preds = %.lr.ph.i.i.i.i.i69.i.i, %.lr.ph.i.i.i.i.i60.i.i, %4, %_ZSt13move_backwardIPN4i18n12phonenumbers12_GLOBAL__N_110NumberTestES4_ET0_T_S6_S5_.exit.i.i, %_ZSt22__uninitialized_move_aIPN4i18n12phonenumbers12_GLOBAL__N_110NumberTestES4_SaIS3_EET0_T_S7_S6_RT1_.exit67.i.thread.i, %_ZSt22__uninitialized_move_aIPN4i18n12phonenumbers12_GLOBAL__N_110NumberTestES4_SaIS3_EET0_T_S7_S6_RT1_.exit67.i.i, %_ZNSt12_Vector_baseIN4i18n12phonenumbers12_GLOBAL__N_110NumberTestESaIS3_EE13_M_deallocateEPS3_m.exit.i.i ret void } diff --git a/bench/libquic/optimized/ip_address.cc.ll b/bench/libquic/optimized/ip_address.cc.ll index 9d1e734afe1..dba2e7dce15 100644 --- a/bench/libquic/optimized/ip_address.cc.ll +++ b/bench/libquic/optimized/ip_address.cc.ll @@ -1670,12 +1670,7 @@ if.then.i.i: ; preds = %entry _ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i: ; preds = %entry %cmp.not.i.i.i.i = icmp eq ptr %0, %1 - br i1 %cmp.not.i.i.i.i, label %_ZN3net9IPAddressD2Ev.exit.thread, label %if.then.i.i.i.i.i.i.i.i.i - -_ZN3net9IPAddressD2Ev.exit.thread: ; preds = %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i - %call22.tr.i71 = trunc i64 %sub.ptr.sub.i.i to i32 - %conv24.i72 = shl i32 %call22.tr.i71, 3 - br label %_ZNSt6vectorIhSaIhEED2Ev.exit + br i1 %cmp.not.i.i.i.i, label %_ZNSt6vectorIhSaIhEED2Ev.exit, label %if.then.i.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i.i: ; preds = %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i %call5.i.i.i.i1.i5.i.i7 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %sub.ptr.sub.i.i) #21 @@ -1730,8 +1725,8 @@ if.then.i.i.i: ; preds = %invoke.cont6, %invo tail call void @_ZdlPv(ptr noundef nonnull %call5.i.i.i.i1.i5.i.i7) #22 br label %_ZNSt6vectorIhSaIhEED2Ev.exit -_ZNSt6vectorIhSaIhEED2Ev.exit: ; preds = %_ZN3net9IPAddressD2Ev.exit.thread, %if.then.i.i.i - %retval.0.i6777 = phi i32 [ %conv24.i72, %_ZN3net9IPAddressD2Ev.exit.thread ], [ %retval.0.i66, %if.then.i.i.i ] +_ZNSt6vectorIhSaIhEED2Ev.exit: ; preds = %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i, %if.then.i.i.i + %retval.0.i6777 = phi i32 [ %retval.0.i66, %if.then.i.i.i ], [ 0, %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i ] ret i32 %retval.0.i6777 } @@ -1863,8 +1858,8 @@ _ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit: ; preds = %if.then if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i - %.pre.i.i.i.i.i = sub i64 0, %sub.ptr.sub.i.i.i.i.i - %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %1, i64 %.pre.i.i.i.i.i + %idx.neg.i.i.i.i.i = sub i64 0, %sub.ptr.sub.i.i.i.i.i + %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %1, i64 %idx.neg.i.i.i.i.i tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %add.ptr.i.i.i.i.i, ptr align 1 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) br label %_ZSt4copyIPKhN9__gnu_cxx17__normal_iteratorIPhSt6vectorIhSaIhEEEEET0_T_SA_S9_.exit @@ -2015,8 +2010,8 @@ _ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit: ; preds = %if.then if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPhS0_SaIhEET0_T_S3_S2_RT1_.exit %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i - %.pre.i.i.i.i.i = sub i64 0, %sub.ptr.sub.i.i.i.i.i - %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %1, i64 %.pre.i.i.i.i.i + %idx.neg.i.i.i.i.i = sub i64 0, %sub.ptr.sub.i.i.i.i.i + %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %1, i64 %idx.neg.i.i.i.i.i tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %add.ptr.i.i.i.i.i, ptr align 1 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) br label %if.then.i.i.i.i.i30 diff --git a/bench/libquic/optimized/quic_packet_creator.cc.ll b/bench/libquic/optimized/quic_packet_creator.cc.ll index 48cc5796f12..e502b513415 100644 --- a/bench/libquic/optimized/quic_packet_creator.cc.ll +++ b/bench/libquic/optimized/quic_packet_creator.cc.ll @@ -2046,8 +2046,8 @@ entry: %ref.tmp71 = alloca %"class.logging::LogMessage", align 8 %iov_count = getelementptr inbounds i8, ptr %iov, i64 8 %0 = load i32, ptr %iov_count, align 8 - %cmp42 = icmp sgt i32 %0, 0 - br i1 %cmp42, label %land.rhs.lr.ph, label %if.end18 + %cmp45 = icmp sgt i32 %0, 0 + br i1 %cmp45, label %land.rhs.lr.ph, label %if.end18 land.rhs.lr.ph: ; preds = %entry %1 = load ptr, ptr %iov, align 8 @@ -2056,14 +2056,14 @@ land.rhs.lr.ph: ; preds = %entry land.rhs: ; preds = %land.rhs.lr.ph, %while.body %indvars.iv = phi i64 [ 0, %land.rhs.lr.ph ], [ %indvars.iv.next, %while.body ] - %iov_offset.addr.044 = phi i64 [ %iov_offset, %land.rhs.lr.ph ], [ %sub, %while.body ] + %iov_offset.addr.047 = phi i64 [ %iov_offset, %land.rhs.lr.ph ], [ %sub, %while.body ] %iov_len = getelementptr inbounds %struct.iovec, ptr %1, i64 %indvars.iv, i32 1 %2 = load i64, ptr %iov_len, align 8 - %cmp2.not = icmp ult i64 %iov_offset.addr.044, %2 + %cmp2.not = icmp ult i64 %iov_offset.addr.047, %2 br i1 %cmp2.not, label %if.end18.loopexit, label %while.body while.body: ; preds = %land.rhs - %sub = sub nuw i64 %iov_offset.addr.044, %2 + %sub = sub nuw i64 %iov_offset.addr.047, %2 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %cleanup.done, label %land.rhs, !llvm.loop !20 @@ -2074,7 +2074,7 @@ if.end18.loopexit: ; preds = %land.rhs if.end18: ; preds = %if.end18.loopexit, %entry %iovnum.0.lcssa = phi i32 [ 0, %entry ], [ %3, %if.end18.loopexit ] - %iov_offset.addr.0.lcssa = phi i64 [ %iov_offset, %entry ], [ %iov_offset.addr.044, %if.end18.loopexit ] + %iov_offset.addr.0.lcssa = phi i64 [ %iov_offset, %entry ], [ %iov_offset.addr.047, %if.end18.loopexit ] %cmp20 = icmp sge i32 %iovnum.0.lcssa, %0 %cmp21 = icmp eq i64 %length, 0 %or.cond = or i1 %cmp21, %cmp20 @@ -2091,41 +2091,42 @@ if.end23: ; preds = %if.end18 %6 = load ptr, ptr %arrayidx45, align 8 %add.ptr = getelementptr inbounds i8, ptr %6, i64 %iov_offset.addr.0.lcssa tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %buffer, ptr align 1 %add.ptr, i64 %.sroa.speculated, i1 false) - %sub4850 = sub i64 %length, %.sroa.speculated - %cmp5052.not = icmp ugt i64 %length, %sub28 - br i1 %cmp5052.not, label %lor.lhs.false51.preheader, label %while.end66 + %cmp5055.not = icmp ugt i64 %length, %sub28 + br i1 %cmp5055.not, label %lor.lhs.false51.preheader, label %while.end66.thread lor.lhs.false51.preheader: ; preds = %if.end23 - %add.ptr4951 = getelementptr inbounds i8, ptr %buffer, i64 %.sroa.speculated + %add.ptr4954 = getelementptr inbounds i8, ptr %buffer, i64 %.sroa.speculated + %sub4853 = sub i64 %length, %.sroa.speculated br label %lor.lhs.false51 +while.end66.thread: ; preds = %if.end56, %if.end23 + %call6742 = tail call noundef zeroext i1 @_ZN7logging22ShouldCreateLogMessageEi(i32 noundef 2) + br label %cleanup.done + lor.lhs.false51: ; preds = %lor.lhs.false51.preheader, %if.end56 - %indvars.iv59 = phi i64 [ %idxprom25, %lor.lhs.false51.preheader ], [ %indvars.iv.next60, %if.end56 ] - %add.ptr4955 = phi ptr [ %add.ptr4951, %lor.lhs.false51.preheader ], [ %add.ptr49, %if.end56 ] - %sub4854 = phi i64 [ %sub4850, %lor.lhs.false51.preheader ], [ %sub48, %if.end56 ] - %indvars.iv.next60 = add nuw nsw i64 %indvars.iv59, 1 - %7 = trunc nuw i64 %indvars.iv.next60 to i32 + %indvars.iv60 = phi i64 [ %idxprom25, %lor.lhs.false51.preheader ], [ %indvars.iv.next61, %if.end56 ] + %add.ptr4958 = phi ptr [ %add.ptr4954, %lor.lhs.false51.preheader ], [ %add.ptr49, %if.end56 ] + %sub4857 = phi i64 [ %sub4853, %lor.lhs.false51.preheader ], [ %sub48, %if.end56 ] + %indvars.iv.next61 = add nuw nsw i64 %indvars.iv60, 1 + %7 = trunc nuw i64 %indvars.iv.next61 to i32 %cmp54.not = icmp sgt i32 %0, %7 br i1 %cmp54.not, label %if.end56, label %while.end66 if.end56: ; preds = %lor.lhs.false51 - %arrayidx59 = getelementptr inbounds %struct.iovec, ptr %4, i64 %indvars.iv.next60 + %arrayidx59 = getelementptr inbounds %struct.iovec, ptr %4, i64 %indvars.iv.next61 %8 = load ptr, ptr %arrayidx59, align 8 %iov_len64 = getelementptr inbounds i8, ptr %arrayidx59, i64 8 %9 = load i64, ptr %iov_len64, align 8 - %.sroa.speculated35 = tail call i64 @llvm.umin.i64(i64 %9, i64 %sub4854) - tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr4955, ptr align 1 %8, i64 %.sroa.speculated35, i1 false) - %sub48 = sub i64 %sub4854, %.sroa.speculated35 - %add.ptr49 = getelementptr inbounds i8, ptr %add.ptr4955, i64 %.sroa.speculated35 - %cmp50.not = icmp ugt i64 %sub4854, %9 - br i1 %cmp50.not, label %lor.lhs.false51, label %while.end66, !llvm.loop !21 - -while.end66: ; preds = %lor.lhs.false51, %if.end56, %if.end23 - %sub48.lcssa = phi i64 [ %sub4850, %if.end23 ], [ %sub48, %if.end56 ], [ %sub4854, %lor.lhs.false51 ] + %.sroa.speculated35 = tail call i64 @llvm.umin.i64(i64 %9, i64 %sub4857) + tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %add.ptr4958, ptr align 1 %8, i64 %.sroa.speculated35, i1 false) + %sub48 = sub i64 %sub4857, %.sroa.speculated35 + %add.ptr49 = getelementptr inbounds i8, ptr %add.ptr4958, i64 %.sroa.speculated35 + %cmp50.not = icmp ugt i64 %sub4857, %9 + br i1 %cmp50.not, label %lor.lhs.false51, label %while.end66.thread, !llvm.loop !21 + +while.end66: ; preds = %lor.lhs.false51 %call67 = tail call noundef zeroext i1 @_ZN7logging22ShouldCreateLogMessageEi(i32 noundef 2) - %cmp69 = icmp ne i64 %sub48.lcssa, 0 - %or.cond1 = and i1 %cmp69, %call67 - br i1 %or.cond1, label %cond.false, label %cleanup.done + br i1 %call67, label %cond.false, label %cleanup.done cond.false: ; preds = %while.end66 call void @_ZN7logging10LogMessageC1EPKcii(ptr noundef nonnull align 8 dereferenceable(404) %ref.tmp71, ptr noundef nonnull @.str, i32 noundef 290, i32 noundef 2) @@ -2137,7 +2138,7 @@ cleanup.action: ; preds = %cond.false call void @_ZN7logging10LogMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(404) %ref.tmp71) #19 br label %cleanup.done -cleanup.done: ; preds = %while.body, %while.end66, %if.end18, %cleanup.action +cleanup.done: ; preds = %while.body, %while.end66.thread, %while.end66, %if.end18, %cleanup.action ret void lpad72: ; preds = %cond.false diff --git a/bench/libquic/optimized/stack.c.ll b/bench/libquic/optimized/stack.c.ll index 6240d1ea810..f4e67a437f2 100644 --- a/bench/libquic/optimized/stack.c.ll +++ b/bench/libquic/optimized/stack.c.ll @@ -475,15 +475,18 @@ sk_sort.exit: ; preds = %lor.lhs.false2.i, % if.end18: ; preds = %sk_sort.exit %10 = load ptr, ptr %data14, align 8 + %cmp20.not23 = icmp eq ptr %call, %10 + br i1 %cmp20.not23, label %while.end, label %land.rhs.preheader + +land.rhs.preheader: ; preds = %if.end18 %sub.ptr.lhs.cast = ptrtoint ptr %call to i64 %sub.ptr.rhs.cast = ptrtoint ptr %10 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = ashr exact i64 %sub.ptr.sub, 3 - %cmp20.not23 = icmp eq ptr %call, %10 - br i1 %cmp20.not23, label %while.end, label %land.rhs + br label %land.rhs -land.rhs: ; preds = %if.end18, %while.body - %i.124 = phi i64 [ %dec, %while.body ], [ %sub.ptr.div, %if.end18 ] +land.rhs: ; preds = %land.rhs.preheader, %while.body + %i.124 = phi i64 [ %dec, %while.body ], [ %sub.ptr.div, %land.rhs.preheader ] %11 = load ptr, ptr %comp, align 8 %12 = load ptr, ptr %data14, align 8 %13 = getelementptr ptr, ptr %12, i64 %i.124 @@ -498,7 +501,7 @@ while.body: ; preds = %land.rhs br i1 %cmp20.not, label %while.end, label %land.rhs, !llvm.loop !11 while.end: ; preds = %land.rhs, %while.body, %if.end18 - %i.1.lcssa = phi i64 [ %sub.ptr.div, %if.end18 ], [ 0, %while.body ], [ %i.124, %land.rhs ] + %i.1.lcssa = phi i64 [ 0, %if.end18 ], [ 0, %while.body ], [ %i.124, %land.rhs ] %tobool26.not = icmp eq ptr %out_index, null br i1 %tobool26.not, label %return, label %return.sink.split diff --git a/bench/lief/optimized/LangCodeItem.cpp.ll b/bench/lief/optimized/LangCodeItem.cpp.ll index f1e16c647b0..5b8d50e4282 100644 --- a/bench/lief/optimized/LangCodeItem.cpp.ll +++ b/bench/lief/optimized/LangCodeItem.cpp.ll @@ -37470,10 +37470,8 @@ _ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE8capacityEv.exit: ; pre 29: ; preds = %28 %30 = getelementptr inbounds i16, ptr %21, i64 %4 %31 = getelementptr inbounds i16, ptr %21, i64 %2 - switch i64 %23, label %34 [ - i64 1, label %32 - i64 0, label %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_moveEPDsPKDsm.exit - ] + %cond99 = icmp eq i64 %23, 1 + br i1 %cond99, label %32, label %34 32: ; preds = %29 %33 = load i16, ptr %31, align 2 @@ -37485,7 +37483,7 @@ _ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE8capacityEv.exit: ; pre tail call void @llvm.memmove.p0.p0.i64(ptr align 2 %30, ptr align 2 %31, i64 %35, i1 false) br label %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_moveEPDsPKDsm.exit -_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_moveEPDsPKDsm.exit: ; preds = %34, %32, %29, %28 +_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_moveEPDsPKDsm.exit: ; preds = %34, %32, %28 switch i64 %4, label %38 [ i64 0, label %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_copyEPDsPKDsm.exit i64 1, label %36 @@ -37508,8 +37506,8 @@ _ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_moveEPDsPKDsm.exit: br i1 %or.cond91.not, label %42, label %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_moveEPDsPKDsm.exit93 42: ; preds = %40 - %cond101 = icmp eq i64 %4, 1 - br i1 %cond101, label %43, label %45 + %cond103 = icmp eq i64 %4, 1 + br i1 %cond103, label %43, label %45 43: ; preds = %42 %44 = load i16, ptr %3, align 2 @@ -37530,10 +37528,8 @@ _ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_moveEPDsPKDsm.exit93 47: ; preds = %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_moveEPDsPKDsm.exit93 %48 = getelementptr inbounds i16, ptr %21, i64 %4 %49 = getelementptr inbounds i16, ptr %21, i64 %2 - switch i64 %23, label %52 [ - i64 1, label %50 - i64 0, label %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_moveEPDsPKDsm.exit94 - ] + %cond102 = icmp eq i64 %23, 1 + br i1 %cond102, label %50, label %52 50: ; preds = %47 %51 = load i16, ptr %49, align 2 @@ -37545,7 +37541,7 @@ _ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_moveEPDsPKDsm.exit93 tail call void @llvm.memmove.p0.p0.i64(ptr align 2 %48, ptr align 2 %49, i64 %53, i1 false) br label %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_moveEPDsPKDsm.exit94 -_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_moveEPDsPKDsm.exit94: ; preds = %52, %50, %47, %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_moveEPDsPKDsm.exit93 +_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_moveEPDsPKDsm.exit94: ; preds = %52, %50, %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_moveEPDsPKDsm.exit93 br i1 %.not83, label %54, label %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_copyEPDsPKDsm.exit 54: ; preds = %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_moveEPDsPKDsm.exit94 @@ -37555,8 +37551,8 @@ _ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_moveEPDsPKDsm.exit94 br i1 %.not86, label %62, label %57 57: ; preds = %54 - %cond100 = icmp eq i64 %4, 1 - br i1 %cond100, label %58, label %60 + %cond101 = icmp eq i64 %4, 1 + br i1 %cond101, label %58, label %60 58: ; preds = %57 %59 = load i16, ptr %3, align 2 @@ -37578,8 +37574,8 @@ _ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_moveEPDsPKDsm.exit94 %66 = sub i64 %64, %65 %67 = getelementptr i8, ptr %21, i64 %66 %68 = getelementptr i16, ptr %67, i64 %11 - %cond99 = icmp eq i64 %4, 1 - br i1 %cond99, label %69, label %71 + %cond100 = icmp eq i64 %4, 1 + br i1 %cond100, label %69, label %71 69: ; preds = %63 %70 = load i16, ptr %68, align 2 @@ -37732,10 +37728,8 @@ _ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_copyEPDsPKDsm.exit26 %44 = getelementptr inbounds i16, ptr %43, i64 %4 %45 = getelementptr inbounds i16, ptr %12, i64 %1 %46 = getelementptr inbounds i16, ptr %45, i64 %2 - switch i64 %9, label %49 [ - i64 1, label %47 - i64 0, label %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_copyEPDsPKDsm.exit27 - ] + %cond29 = icmp eq i64 %9, 1 + br i1 %cond29, label %47, label %49 47: ; preds = %42 %48 = load i16, ptr %46, align 2 @@ -37747,7 +37741,7 @@ _ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_copyEPDsPKDsm.exit26 tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 2 %44, ptr align 2 %46, i64 %50, i1 false) br label %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_copyEPDsPKDsm.exit27 -_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_copyEPDsPKDsm.exit27: ; preds = %49, %47, %42, %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_copyEPDsPKDsm.exit26 +_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_copyEPDsPKDsm.exit27: ; preds = %49, %47, %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_copyEPDsPKDsm.exit26 br i1 %14, label %_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.thread.i, label %_ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.i _ZNKSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE11_M_is_localEv.exit.thread.i: ; preds = %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEE7_S_copyEPDsPKDsm.exit27 diff --git a/bench/lief/optimized/MapList.cpp.ll b/bench/lief/optimized/MapList.cpp.ll index 0727980d159..9320f46224f 100644 --- a/bench/lief/optimized/MapList.cpp.ll +++ b/bench/lief/optimized/MapList.cpp.ll @@ -452,66 +452,64 @@ _ZNSt20back_insert_iteratorISt6vectorIPN4LIEF3DEX7MapItemESaIS4_EEEaSEOS4_.exit. %41 = sub i64 %39, %40 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %0, i8 0, i64 24, i1 false) %.not.i.i.i.i.i = icmp eq ptr %.sroa.9.2, %.sroa.022.4 - br i1 %.not.i.i.i.i.i, label %.noexc11.thread, label %46 + br i1 %.not.i.i.i.i.i, label %.noexc11.thread, label %44 .noexc11.thread: ; preds = %10, %"_ZSt9transformISt23_Rb_tree_const_iteratorISt4pairIKN4LIEF3DEX7MapItem5TYPESES4_EESt20back_insert_iteratorISt6vectorIPS4_SaISB_EEEZNKS3_7MapList5itemsEvE3$_0ET0_T_SI_SH_T1_.exit" - %42 = phi i64 [ %41, %"_ZSt9transformISt23_Rb_tree_const_iteratorISt4pairIKN4LIEF3DEX7MapItem5TYPESES4_EESt20back_insert_iteratorISt6vectorIPS4_SaISB_EEEZNKS3_7MapList5itemsEvE3$_0ET0_T_SI_SH_T1_.exit" ], [ 0, %10 ] %.sroa.022.553 = phi ptr [ %.sroa.022.4, %"_ZSt9transformISt23_Rb_tree_const_iteratorISt4pairIKN4LIEF3DEX7MapItem5TYPESES4_EESt20back_insert_iteratorISt6vectorIPS4_SaISB_EEEZNKS3_7MapList5itemsEvE3$_0ET0_T_SI_SH_T1_.exit" ], [ %.sroa.9.0, %10 ] - %43 = getelementptr inbounds i8, ptr %0, i64 8 - %44 = getelementptr inbounds i8, ptr null, i64 %42 - %45 = getelementptr inbounds i8, ptr %0, i64 16 + %42 = getelementptr inbounds i8, ptr %0, i64 8 + %43 = getelementptr inbounds i8, ptr %0, i64 16 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %0, i8 0, i64 16, i1 false) - store ptr %44, ptr %45, align 8 - br label %53 + store ptr null, ptr %43, align 8 + br label %51 -46: ; preds = %"_ZSt9transformISt23_Rb_tree_const_iteratorISt4pairIKN4LIEF3DEX7MapItem5TYPESES4_EESt20back_insert_iteratorISt6vectorIPS4_SaISB_EEEZNKS3_7MapList5itemsEvE3$_0ET0_T_SI_SH_T1_.exit" - %47 = icmp ugt i64 %41, 9223372036854775800 - br i1 %47, label %.noexc.i.i.i, label %_ZNSt16allocator_traitsISaIPN4LIEF3DEX7MapItemEEE8allocateERS4_m.exit.i.i.i.i.i +44: ; preds = %"_ZSt9transformISt23_Rb_tree_const_iteratorISt4pairIKN4LIEF3DEX7MapItem5TYPESES4_EESt20back_insert_iteratorISt6vectorIPS4_SaISB_EEEZNKS3_7MapList5itemsEvE3$_0ET0_T_SI_SH_T1_.exit" + %45 = icmp ugt i64 %41, 9223372036854775800 + br i1 %45, label %.noexc.i.i.i, label %_ZNSt16allocator_traitsISaIPN4LIEF3DEX7MapItemEEE8allocateERS4_m.exit.i.i.i.i.i -.noexc.i.i.i: ; preds = %46 +.noexc.i.i.i: ; preds = %44 invoke void @_ZSt28__throw_bad_array_new_lengthv() #18 - to label %.noexc10 unwind label %61 + to label %.noexc10 unwind label %59 .noexc10: ; preds = %.noexc.i.i.i unreachable -_ZNSt16allocator_traitsISaIPN4LIEF3DEX7MapItemEEE8allocateERS4_m.exit.i.i.i.i.i: ; preds = %46 - %48 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %41) #19 - to label %49 unwind label %61 - -49: ; preds = %_ZNSt16allocator_traitsISaIPN4LIEF3DEX7MapItemEEE8allocateERS4_m.exit.i.i.i.i.i - store ptr %48, ptr %0, align 8 - %50 = getelementptr inbounds i8, ptr %0, i64 8 - store ptr %48, ptr %50, align 8 - %51 = getelementptr inbounds i8, ptr %48, i64 %41 - %52 = getelementptr inbounds i8, ptr %0, i64 16 - store ptr %51, ptr %52, align 8 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %48, ptr align 8 %.sroa.022.4, i64 %41, i1 false) - br label %53 - -53: ; preds = %49, %.noexc11.thread - %54 = phi i64 [ %42, %.noexc11.thread ], [ %41, %49 ] - %.sroa.022.552 = phi ptr [ %.sroa.022.553, %.noexc11.thread ], [ %.sroa.022.4, %49 ] - %55 = phi ptr [ %43, %.noexc11.thread ], [ %50, %49 ] - %56 = phi ptr [ null, %.noexc11.thread ], [ %48, %49 ] - %57 = getelementptr inbounds i8, ptr %56, i64 %54 - store ptr %57, ptr %55, align 8 - %58 = getelementptr inbounds i8, ptr %0, i64 24 - %59 = getelementptr inbounds i8, ptr %0, i64 32 - store i64 0, ptr %59, align 8 - store ptr %56, ptr %58, align 8 +_ZNSt16allocator_traitsISaIPN4LIEF3DEX7MapItemEEE8allocateERS4_m.exit.i.i.i.i.i: ; preds = %44 + %46 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %41) #19 + to label %47 unwind label %59 + +47: ; preds = %_ZNSt16allocator_traitsISaIPN4LIEF3DEX7MapItemEEE8allocateERS4_m.exit.i.i.i.i.i + store ptr %46, ptr %0, align 8 + %48 = getelementptr inbounds i8, ptr %0, i64 8 + store ptr %46, ptr %48, align 8 + %49 = getelementptr inbounds i8, ptr %46, i64 %41 + %50 = getelementptr inbounds i8, ptr %0, i64 16 + store ptr %49, ptr %50, align 8 + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %46, ptr align 8 %.sroa.022.4, i64 %41, i1 false) + br label %51 + +51: ; preds = %47, %.noexc11.thread + %52 = phi i64 [ 0, %.noexc11.thread ], [ %41, %47 ] + %.sroa.022.552 = phi ptr [ %.sroa.022.553, %.noexc11.thread ], [ %.sroa.022.4, %47 ] + %53 = phi ptr [ %42, %.noexc11.thread ], [ %48, %47 ] + %54 = phi ptr [ null, %.noexc11.thread ], [ %46, %47 ] + %55 = getelementptr inbounds i8, ptr %54, i64 %52 + store ptr %55, ptr %53, align 8 + %56 = getelementptr inbounds i8, ptr %0, i64 24 + %57 = getelementptr inbounds i8, ptr %0, i64 32 + store i64 0, ptr %57, align 8 + store ptr %54, ptr %56, align 8 %.not.i.i.i = icmp eq ptr %.sroa.022.552, null - br i1 %.not.i.i.i, label %_ZNSt6vectorIPN4LIEF3DEX7MapItemESaIS3_EED2Ev.exit13, label %60 + br i1 %.not.i.i.i, label %_ZNSt6vectorIPN4LIEF3DEX7MapItemESaIS3_EED2Ev.exit13, label %58 -60: ; preds = %53 +58: ; preds = %51 tail call void @_ZdlPv(ptr noundef nonnull %.sroa.022.552) #20 br label %_ZNSt6vectorIPN4LIEF3DEX7MapItemESaIS3_EED2Ev.exit13 -_ZNSt6vectorIPN4LIEF3DEX7MapItemESaIS3_EED2Ev.exit13: ; preds = %60, %53 +_ZNSt6vectorIPN4LIEF3DEX7MapItemESaIS3_EED2Ev.exit13: ; preds = %58, %51 ret void -61: ; preds = %_ZNSt16allocator_traitsISaIPN4LIEF3DEX7MapItemEEE8allocateERS4_m.exit.i.i.i.i.i, %.noexc.i.i.i - %62 = landingpad { ptr, i32 } +59: ; preds = %_ZNSt16allocator_traitsISaIPN4LIEF3DEX7MapItemEEE8allocateERS4_m.exit.i.i.i.i.i, %.noexc.i.i.i + %60 = landingpad { ptr, i32 } cleanup %.not.i.i.i14 = icmp eq ptr %.sroa.022.4, null br i1 %.not.i.i.i14, label %_ZNSt6vectorIPN4LIEF3DEX7MapItemESaIS3_EED2Ev.exit17, label %_ZNSt6vectorIPN4LIEF3DEX7MapItemESaIS3_EED2Ev.exit17.sink.split @@ -531,14 +529,14 @@ _ZNSt6vectorIPN4LIEF3DEX7MapItemESaIS3_EED2Ev.exit15: ; preds = %_ZNSt6vectorIPN %.not.i.i.i16 = icmp eq ptr %.sroa.022.3, null br i1 %.not.i.i.i16, label %_ZNSt6vectorIPN4LIEF3DEX7MapItemESaIS3_EED2Ev.exit17, label %_ZNSt6vectorIPN4LIEF3DEX7MapItemESaIS3_EED2Ev.exit17.sink.split -_ZNSt6vectorIPN4LIEF3DEX7MapItemESaIS3_EED2Ev.exit17.sink.split: ; preds = %_ZNSt6vectorIPN4LIEF3DEX7MapItemESaIS3_EED2Ev.exit15, %61 - %.sroa.022.4.lcssa.sink = phi ptr [ %.sroa.022.4, %61 ], [ %.sroa.022.3, %_ZNSt6vectorIPN4LIEF3DEX7MapItemESaIS3_EED2Ev.exit15 ] - %.pn37.ph = phi { ptr, i32 } [ %62, %61 ], [ %lpad.phi, %_ZNSt6vectorIPN4LIEF3DEX7MapItemESaIS3_EED2Ev.exit15 ] +_ZNSt6vectorIPN4LIEF3DEX7MapItemESaIS3_EED2Ev.exit17.sink.split: ; preds = %_ZNSt6vectorIPN4LIEF3DEX7MapItemESaIS3_EED2Ev.exit15, %59 + %.sroa.022.4.lcssa.sink = phi ptr [ %.sroa.022.4, %59 ], [ %.sroa.022.3, %_ZNSt6vectorIPN4LIEF3DEX7MapItemESaIS3_EED2Ev.exit15 ] + %.pn37.ph = phi { ptr, i32 } [ %60, %59 ], [ %lpad.phi, %_ZNSt6vectorIPN4LIEF3DEX7MapItemESaIS3_EED2Ev.exit15 ] tail call void @_ZdlPv(ptr noundef nonnull %.sroa.022.4.lcssa.sink) #20 br label %_ZNSt6vectorIPN4LIEF3DEX7MapItemESaIS3_EED2Ev.exit17 -_ZNSt6vectorIPN4LIEF3DEX7MapItemESaIS3_EED2Ev.exit17: ; preds = %_ZNSt6vectorIPN4LIEF3DEX7MapItemESaIS3_EED2Ev.exit17.sink.split, %61, %_ZNSt6vectorIPN4LIEF3DEX7MapItemESaIS3_EED2Ev.exit15 - %.pn37 = phi { ptr, i32 } [ %lpad.phi, %_ZNSt6vectorIPN4LIEF3DEX7MapItemESaIS3_EED2Ev.exit15 ], [ %62, %61 ], [ %.pn37.ph, %_ZNSt6vectorIPN4LIEF3DEX7MapItemESaIS3_EED2Ev.exit17.sink.split ] +_ZNSt6vectorIPN4LIEF3DEX7MapItemESaIS3_EED2Ev.exit17: ; preds = %_ZNSt6vectorIPN4LIEF3DEX7MapItemESaIS3_EED2Ev.exit17.sink.split, %59, %_ZNSt6vectorIPN4LIEF3DEX7MapItemESaIS3_EED2Ev.exit15 + %.pn37 = phi { ptr, i32 } [ %lpad.phi, %_ZNSt6vectorIPN4LIEF3DEX7MapItemESaIS3_EED2Ev.exit15 ], [ %60, %59 ], [ %.pn37.ph, %_ZNSt6vectorIPN4LIEF3DEX7MapItemESaIS3_EED2Ev.exit17.sink.split ] resume { ptr, i32 } %.pn37 } diff --git a/bench/lightgbm/optimized/voting_parallel_tree_learner.cpp.ll b/bench/lightgbm/optimized/voting_parallel_tree_learner.cpp.ll index 345e4b67e3a..a761f93f2cb 100644 --- a/bench/lightgbm/optimized/voting_parallel_tree_learner.cpp.ll +++ b/bench/lightgbm/optimized/voting_parallel_tree_learner.cpp.ll @@ -13951,7 +13951,7 @@ _ZNSt12_Vector_baseIaSaIaEE13_M_deallocateEPam.exit: ; preds = %_ZNSt6vectorIaSa br label %_ZSt4copyIPaS0_ET0_T_S2_S1_.exit _ZSt4copyIPaS0_ET0_T_S2_S1_.exit: ; preds = %31, %32 - %.pre-phi33 = phi i64 [ %28, %31 ], [ %.pre32, %32 ] + %.pre-phi33 = phi i64 [ 0, %31 ], [ %.pre32, %32 ] %33 = phi ptr [ %5, %31 ], [ %.pre28, %32 ] %34 = phi ptr [ %26, %31 ], [ %.pre26, %32 ] %35 = phi ptr [ %6, %31 ], [ %.pre, %32 ] @@ -14061,7 +14061,7 @@ _ZNSt12_Vector_baseIdSaIdEE13_M_deallocateEPdm.exit: ; preds = %_ZNSt6vectorIdSa br label %_ZSt4copyIPdS0_ET0_T_S2_S1_.exit _ZSt4copyIPdS0_ET0_T_S2_S1_.exit: ; preds = %31, %32 - %.pre-phi33 = phi i64 [ %28, %31 ], [ %.pre32, %32 ] + %.pre-phi33 = phi i64 [ 0, %31 ], [ %.pre32, %32 ] %33 = phi ptr [ %5, %31 ], [ %.pre28, %32 ] %34 = phi ptr [ %26, %31 ], [ %.pre26, %32 ] %35 = phi ptr [ %6, %31 ], [ %.pre, %32 ] @@ -14171,7 +14171,7 @@ _ZNSt12_Vector_baseIiSaIiEE13_M_deallocateEPim.exit: ; preds = %_ZNSt6vectorIiSa br label %_ZSt4copyIPiS0_ET0_T_S2_S1_.exit _ZSt4copyIPiS0_ET0_T_S2_S1_.exit: ; preds = %31, %32 - %.pre-phi33 = phi i64 [ %28, %31 ], [ %.pre32, %32 ] + %.pre-phi33 = phi i64 [ 0, %31 ], [ %.pre32, %32 ] %33 = phi ptr [ %5, %31 ], [ %.pre28, %32 ] %34 = phi ptr [ %26, %31 ], [ %.pre26, %32 ] %35 = phi ptr [ %6, %31 ], [ %.pre, %32 ] @@ -268853,11 +268853,11 @@ _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN8LightGBM14LightSplitInfoESt6vectorIS br label %.outer .outer: ; preds = %58, %42 - %.sroa.024.0.i.ph.pn = phi ptr [ %.tr109125, %42 ], [ %.sroa.024.0.i.ph, %58 ] + %.sroa.025.0.i.ph.pn = phi ptr [ %.tr109125, %42 ], [ %.sroa.025.0.i.ph, %58 ] %.sroa.0.0.i.ph = phi ptr [ %2, %42 ], [ %59, %58 ] %.0.i.ph = phi ptr [ %43, %42 ], [ %.0.i, %58 ] - %.sroa.024.0.i.ph = getelementptr inbounds i8, ptr %.sroa.024.0.i.ph.pn, i64 -24 - %44 = getelementptr inbounds i8, ptr %.sroa.024.0.i.ph.pn, i64 -16 + %.sroa.025.0.i.ph = getelementptr inbounds i8, ptr %.sroa.025.0.i.ph.pn, i64 -24 + %44 = getelementptr inbounds i8, ptr %.sroa.025.0.i.ph.pn, i64 -16 br label %45 45: ; preds = %.outer, %66 @@ -268875,7 +268875,7 @@ _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN8LightGBM14LightSplitInfoESt6vectorIS _ZN9__gnu_cxx5__ops15_Iter_comp_iterISt7greaterIN8LightGBM14LightSplitInfoEEEclIPS4_NS_17__normal_iteratorIS8_St6vectorIS4_SaIS4_EEEEEEbT_T0_.exit.i: ; preds = %45 %52 = load i32, ptr %.0.i, align 8 - %53 = load i32, ptr %.sroa.024.0.i.ph, align 8 + %53 = load i32, ptr %.sroa.025.0.i.ph, align 8 %54 = icmp ne i32 %52, -1 %55 = icmp eq i32 %53, -1 %spec.store.select1.i.i.i.i84 = select i1 %55, i32 2147483647, i32 %53 @@ -268885,14 +268885,14 @@ _ZN9__gnu_cxx5__ops15_Iter_comp_iterISt7greaterIN8LightGBM14LightSplitInfoEEEclI 58: ; preds = %_ZN9__gnu_cxx5__ops15_Iter_comp_iterISt7greaterIN8LightGBM14LightSplitInfoEEEclIPS4_NS_17__normal_iteratorIS8_St6vectorIS4_SaIS4_EEEEEEbT_T0_.exit.i, %50 %59 = getelementptr inbounds i8, ptr %.sroa.0.0.i, i64 -24 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %59, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.024.0.i.ph, i64 24, i1 false) - %60 = icmp eq ptr %.tr124, %.sroa.024.0.i.ph + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %59, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.025.0.i.ph, i64 24, i1 false) + %60 = icmp eq ptr %.tr124, %.sroa.025.0.i.ph br i1 %60, label %61, label %.outer, !llvm.loop !890 61: ; preds = %58 %62 = getelementptr inbounds i8, ptr %.0.i, i64 24 - %.not.i.i.i.i.i19.i = icmp eq ptr %62, %5 - br i1 %.not.i.i.i.i.i19.i, label %_ZSt21__move_merge_adaptiveIPN8LightGBM14LightSplitInfoEN9__gnu_cxx17__normal_iteratorIS2_St6vectorIS1_SaIS1_EEEES8_NS3_5__ops15_Iter_comp_iterISt7greaterIS1_EEEEvT_SE_T0_SF_T1_T2_.exit, label %_ZSt13move_backwardIPN8LightGBM14LightSplitInfoEN9__gnu_cxx17__normal_iteratorIS2_St6vectorIS1_SaIS1_EEEEET0_T_SA_S9_.exit.sink.split.i + %.not.i.i.i.i.i18.i = icmp eq ptr %62, %5 + br i1 %.not.i.i.i.i.i18.i, label %_ZSt21__move_merge_adaptiveIPN8LightGBM14LightSplitInfoEN9__gnu_cxx17__normal_iteratorIS2_St6vectorIS1_SaIS1_EEEES8_NS3_5__ops15_Iter_comp_iterISt7greaterIS1_EEEEvT_SE_T0_SF_T1_T2_.exit, label %_ZSt13move_backwardIPN8LightGBM14LightSplitInfoEN9__gnu_cxx17__normal_iteratorIS2_St6vectorIS1_SaIS1_EEEEET0_T_SA_S9_.exit.sink.split.i 63: ; preds = %_ZN9__gnu_cxx5__ops15_Iter_comp_iterISt7greaterIN8LightGBM14LightSplitInfoEEEclIPS4_NS_17__normal_iteratorIS8_St6vectorIS4_SaIS4_EEEEEEbT_T0_.exit.i, %50 %64 = getelementptr inbounds i8, ptr %.sroa.0.0.i, i64 -24 @@ -268910,8 +268910,8 @@ _ZSt13move_backwardIPN8LightGBM14LightSplitInfoEN9__gnu_cxx17__normal_iteratorIS %68 = ptrtoint ptr %.sink.i to i64 %69 = ptrtoint ptr %5 to i64 %70 = sub i64 %68, %69 - %.neg.i.i.i.i.i18.i = sdiv exact i64 %70, -24 - %71 = getelementptr inbounds %"struct.LightGBM::LightSplitInfo", ptr %.lcssa.sink.i, i64 %.neg.i.i.i.i.i18.i + %.neg.i.i.i.i.i19.i = sdiv exact i64 %70, -24 + %71 = getelementptr inbounds %"struct.LightGBM::LightSplitInfo", ptr %.lcssa.sink.i, i64 %.neg.i.i.i.i.i19.i tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %71, ptr align 8 %5, i64 %70, i1 false) br label %_ZSt21__move_merge_adaptiveIPN8LightGBM14LightSplitInfoEN9__gnu_cxx17__normal_iteratorIS2_St6vectorIS1_SaIS1_EEEES8_NS3_5__ops15_Iter_comp_iterISt7greaterIS1_EEEEvT_SE_T0_SF_T1_T2_.exit @@ -269773,16 +269773,17 @@ _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN8LightGBM14LightSplitInfoESt6vectorIS br label %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN8LightGBM14LightSplitInfoESt6vectorIS3_SaIS3_EEEES8_ET0_T_SA_S9_.exit _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN8LightGBM14LightSplitInfoESt6vectorIS3_SaIS3_EEEES8_ET0_T_SA_S9_.exit: ; preds = %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN8LightGBM14LightSplitInfoESt6vectorIS3_SaIS3_EEEES4_ET0_T_SA_S9_.exit40, %31 - %.neg.i.i.i.i.i42 = sdiv exact i64 %29, -24 br i1 %.not.i.i.i.i.i39, label %_ZSt13move_backwardIPN8LightGBM14LightSplitInfoEN9__gnu_cxx17__normal_iteratorIS2_St6vectorIS1_SaIS1_EEEEET0_T_SA_S9_.exit, label %34 34: ; preds = %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN8LightGBM14LightSplitInfoESt6vectorIS3_SaIS3_EEEES8_ET0_T_SA_S9_.exit - %35 = getelementptr inbounds %"struct.LightGBM::LightSplitInfo", ptr %2, i64 %.neg.i.i.i.i.i42 + %.neg.i.i.i.i.i43 = sdiv exact i64 %29, -24 + %35 = getelementptr inbounds %"struct.LightGBM::LightSplitInfo", ptr %2, i64 %.neg.i.i.i.i.i43 tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %35, ptr align 8 %5, i64 %29, i1 false) br label %_ZSt13move_backwardIPN8LightGBM14LightSplitInfoEN9__gnu_cxx17__normal_iteratorIS2_St6vectorIS1_SaIS1_EEEEET0_T_SA_S9_.exit _ZSt13move_backwardIPN8LightGBM14LightSplitInfoEN9__gnu_cxx17__normal_iteratorIS2_St6vectorIS1_SaIS1_EEEEET0_T_SA_S9_.exit: ; preds = %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN8LightGBM14LightSplitInfoESt6vectorIS3_SaIS3_EEEES8_ET0_T_SA_S9_.exit, %34 - %36 = getelementptr inbounds %"struct.LightGBM::LightSplitInfo", ptr %2, i64 %.neg.i.i.i.i.i42 + %.pre-phi.i.i.i.i.i44 = phi i64 [ %.neg.i.i.i.i.i43, %34 ], [ 0, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN8LightGBM14LightSplitInfoESt6vectorIS3_SaIS3_EEEES8_ET0_T_SA_S9_.exit ] + %36 = getelementptr inbounds %"struct.LightGBM::LightSplitInfo", ptr %2, i64 %.pre-phi.i.i.i.i.i44 br label %_ZNSt3_V26rotateIN9__gnu_cxx17__normal_iteratorIPN8LightGBM14LightSplitInfoESt6vectorIS4_SaIS4_EEEEEET_SA_SA_SA_.exit 37: ; preds = %24 @@ -273560,7 +273561,7 @@ _ZNSt12_Vector_baseIjSaIjEE13_M_deallocateEPjm.exit: ; preds = %_ZNSt6vectorIjSa br label %_ZSt4copyIPjS0_ET0_T_S2_S1_.exit _ZSt4copyIPjS0_ET0_T_S2_S1_.exit: ; preds = %31, %32 - %.pre-phi33 = phi i64 [ %28, %31 ], [ %.pre32, %32 ] + %.pre-phi33 = phi i64 [ 0, %31 ], [ %.pre32, %32 ] %33 = phi ptr [ %5, %31 ], [ %.pre28, %32 ] %34 = phi ptr [ %26, %31 ], [ %.pre26, %32 ] %35 = phi ptr [ %6, %31 ], [ %.pre, %32 ] diff --git a/bench/linux/optimized/hsu.ll b/bench/linux/optimized/hsu.ll index b29bdf15b56..55fc000105f 100644 --- a/bench/linux/optimized/hsu.ll +++ b/bench/linux/optimized/hsu.ll @@ -273,59 +273,58 @@ define internal fastcc void @hsu_dma_start_channel(ptr nocapture noundef readonl 34: ; preds = %16 %35 = tail call i32 @llvm.umin.i32(i32 %32, i32 4) %36 = getelementptr inbounds i8, ptr %3, i64 120 - %37 = tail call i32 @llvm.umax.i32(i32 %35, i32 1) - %38 = zext nneg i32 %37 to i64 - br label %39 - -39: ; preds = %39, %34 - %40 = phi i64 [ 0, %34 ], [ %61, %39 ] - %41 = phi i32 [ 8421376, %34 ], [ %58, %39 ] - %42 = shl nuw nsw i64 %40, 3 - %43 = or disjoint i64 %42, 32 - %44 = load ptr, ptr %36, align 8 - %45 = getelementptr %struct.hsu_dma_sg, ptr %44, i64 %40 - %46 = load i64, ptr %45, align 8 - %47 = trunc i64 %46 to i32 - %48 = load ptr, ptr %19, align 8 - %49 = getelementptr i8, ptr %48, i64 %43 - tail call void asm sideeffect "movl $0,$1", "r,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(i32 %47, ptr elementtype(i32) %49) #11, !srcloc !11 - %50 = or disjoint i64 %42, 36 - %51 = load ptr, ptr %36, align 8 - %52 = getelementptr %struct.hsu_dma_sg, ptr %51, i64 %40, i32 1 - %53 = load i32, ptr %52, align 8 - %54 = load ptr, ptr %19, align 8 - %55 = getelementptr i8, ptr %54, i64 %50 - tail call void asm sideeffect "movl $0,$1", "r,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(i32 %53, ptr elementtype(i32) %55) #11, !srcloc !11 - %56 = shl i64 16777217, %40 - %57 = trunc i64 %56 to i32 - %58 = or i32 %41, %57 - %59 = load i32, ptr %30, align 8 - %60 = add i32 %59, 1 - store i32 %60, ptr %30, align 8 - %61 = add nuw nsw i64 %40, 1 - %62 = icmp eq i64 %61, %38 - br i1 %62, label %.loopexit, label %39, !llvm.loop !12 - -.loopexit: ; preds = %39, %16 - %63 = phi i32 [ 8421376, %16 ], [ %58, %39 ] - %64 = add i32 %32, 7 - %65 = zext nneg i32 %64 to i64 - %66 = shl nuw i64 1, %65 - %67 = add i32 %32, 15 - %68 = zext nneg i32 %67 to i64 - %69 = shl nuw i64 1, %68 - %70 = or i64 %66, %69 - %71 = trunc i64 %70 to i32 - %72 = or i32 %63, %71 - %73 = load ptr, ptr %19, align 8 - %74 = getelementptr i8, ptr %73, i64 8 - tail call void asm sideeffect "movl $0,$1", "r,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(i32 %72, ptr elementtype(i32) %74) #11, !srcloc !11 - %75 = load i32, ptr %4, align 8 - %76 = icmp eq i32 %75, 2 - %77 = select i1 %76, i32 3, i32 1 - %78 = load ptr, ptr %19, align 8 - %79 = getelementptr i8, ptr %78, i64 4 - tail call void asm sideeffect "movl $0,$1", "r,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(i32 %77, ptr elementtype(i32) %79) #11, !srcloc !11 + %37 = zext nneg i32 %35 to i64 + br label %38 + +38: ; preds = %38, %34 + %39 = phi i64 [ 0, %34 ], [ %60, %38 ] + %40 = phi i32 [ 8421376, %34 ], [ %57, %38 ] + %41 = shl nuw nsw i64 %39, 3 + %42 = or disjoint i64 %41, 32 + %43 = load ptr, ptr %36, align 8 + %44 = getelementptr %struct.hsu_dma_sg, ptr %43, i64 %39 + %45 = load i64, ptr %44, align 8 + %46 = trunc i64 %45 to i32 + %47 = load ptr, ptr %19, align 8 + %48 = getelementptr i8, ptr %47, i64 %42 + tail call void asm sideeffect "movl $0,$1", "r,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(i32 %46, ptr elementtype(i32) %48) #11, !srcloc !11 + %49 = or disjoint i64 %41, 36 + %50 = load ptr, ptr %36, align 8 + %51 = getelementptr %struct.hsu_dma_sg, ptr %50, i64 %39, i32 1 + %52 = load i32, ptr %51, align 8 + %53 = load ptr, ptr %19, align 8 + %54 = getelementptr i8, ptr %53, i64 %49 + tail call void asm sideeffect "movl $0,$1", "r,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(i32 %52, ptr elementtype(i32) %54) #11, !srcloc !11 + %55 = shl i64 16777217, %39 + %56 = trunc i64 %55 to i32 + %57 = or i32 %40, %56 + %58 = load i32, ptr %30, align 8 + %59 = add i32 %58, 1 + store i32 %59, ptr %30, align 8 + %60 = add nuw nsw i64 %39, 1 + %61 = icmp eq i64 %60, %37 + br i1 %61, label %.loopexit, label %38, !llvm.loop !12 + +.loopexit: ; preds = %38, %16 + %62 = phi i32 [ 8421376, %16 ], [ %57, %38 ] + %63 = add i32 %32, 7 + %64 = zext nneg i32 %63 to i64 + %65 = shl nuw i64 1, %64 + %66 = add i32 %32, 15 + %67 = zext nneg i32 %66 to i64 + %68 = shl nuw i64 1, %67 + %69 = or i64 %65, %68 + %70 = trunc i64 %69 to i32 + %71 = or i32 %62, %70 + %72 = load ptr, ptr %19, align 8 + %73 = getelementptr i8, ptr %72, i64 8 + tail call void asm sideeffect "movl $0,$1", "r,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(i32 %71, ptr elementtype(i32) %73) #11, !srcloc !11 + %74 = load i32, ptr %4, align 8 + %75 = icmp eq i32 %74, 2 + %76 = select i1 %75, i32 3, i32 1 + %77 = load ptr, ptr %19, align 8 + %78 = getelementptr i8, ptr %77, i64 4 + tail call void asm sideeffect "movl $0,$1", "r,*m,~{memory},~{dirflag},~{fpsr},~{flags}"(i32 %76, ptr elementtype(i32) %78) #11, !srcloc !11 ret void } @@ -1192,9 +1191,6 @@ declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.umin.i32(i32, i32) #10 -; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umax.i32(i32, i32) #10 - attributes #0 = { fn_ret_thunk_extern nounwind null_pointer_is_valid "min-legal-vector-width"="0" "no-jump-tables"="true" "no-trapping-math"="true" "patchable-function-entry"="0" "patchable-function-prefix"="16" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+retpoline-external-thunk,+retpoline-indirect-branches,+retpoline-indirect-calls,-3dnow,-3dnowa,-aes,-avx,-avx10.1-256,-avx10.1-512,-avx2,-avx512bf16,-avx512bitalg,-avx512bw,-avx512cd,-avx512dq,-avx512er,-avx512f,-avx512fp16,-avx512ifma,-avx512pf,-avx512vbmi,-avx512vbmi2,-avx512vl,-avx512vnni,-avx512vp2intersect,-avx512vpopcntdq,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-f16c,-fma,-fma4,-gfni,-kl,-mmx,-pclmul,-sha,-sha512,-sm3,-sm4,-sse,-sse2,-sse3,-sse4.1,-sse4.2,-sse4a,-ssse3,-vaes,-vpclmulqdq,-widekl,-x87,-xop" "tune-cpu"="generic" } attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } attributes #2 = { null_pointer_is_valid "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+retpoline-external-thunk,+retpoline-indirect-branches,+retpoline-indirect-calls,-3dnow,-3dnowa,-aes,-avx,-avx10.1-256,-avx10.1-512,-avx2,-avx512bf16,-avx512bitalg,-avx512bw,-avx512cd,-avx512dq,-avx512er,-avx512f,-avx512fp16,-avx512ifma,-avx512pf,-avx512vbmi,-avx512vbmi2,-avx512vl,-avx512vnni,-avx512vp2intersect,-avx512vpopcntdq,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-f16c,-fma,-fma4,-gfni,-kl,-mmx,-pclmul,-sha,-sha512,-sm3,-sm4,-sse,-sse2,-sse3,-sse4.1,-sse4.2,-sse4a,-ssse3,-vaes,-vpclmulqdq,-widekl,-x87,-xop" "tune-cpu"="generic" } diff --git a/bench/llvm/optimized/ASanStackFrameLayout.cpp.ll b/bench/llvm/optimized/ASanStackFrameLayout.cpp.ll index 39bba0dfbfb..73b4dcb842b 100644 --- a/bench/llvm/optimized/ASanStackFrameLayout.cpp.ll +++ b/bench/llvm/optimized/ASanStackFrameLayout.cpp.ll @@ -1500,8 +1500,8 @@ _ZSt4moveIPN4llvm28ASanStackVariableDescriptionES2_ET0_T_S4_S3_.exit70.thread: ; 45: ; preds = %43 %46 = getelementptr inbounds i8, ptr %.024.i71, i64 56 - %.not.i.i.i.i.i33.i = icmp eq ptr %46, %5 - br i1 %.not.i.i.i.i.i33.i, label %_ZSt21__move_merge_adaptiveIPN4llvm28ASanStackVariableDescriptionES2_S2_N9__gnu_cxx5__ops15_Iter_comp_iterIPFbRKS1_S7_EEEEvT_SB_T0_SC_T1_T2_.exit, label %_ZSt13move_backwardIPN4llvm28ASanStackVariableDescriptionES2_ET0_T_S4_S3_.exit.sink.split.i + %.not.i.i.i.i.i32.i = icmp eq ptr %46, %5 + br i1 %.not.i.i.i.i.i32.i, label %_ZSt21__move_merge_adaptiveIPN4llvm28ASanStackVariableDescriptionES2_S2_N9__gnu_cxx5__ops15_Iter_comp_iterIPFbRKS1_S7_EEEEvT_SB_T0_SC_T1_T2_.exit, label %_ZSt13move_backwardIPN4llvm28ASanStackVariableDescriptionES2_ET0_T_S4_S3_.exit.sink.split.i 47: ; preds = %40 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %42, ptr noundef nonnull align 8 dereferenceable(56) %.024.i71, i64 56, i1 false) @@ -1518,8 +1518,8 @@ _ZSt13move_backwardIPN4llvm28ASanStackVariableDescriptionES2_ET0_T_S4_S3_.exit.s %51 = ptrtoint ptr %.sink.i to i64 %52 = ptrtoint ptr %5 to i64 %53 = sub i64 %51, %52 - %.neg.i.i.i.i.i32.i = sdiv exact i64 %53, -56 - %54 = getelementptr inbounds %"struct.llvm::ASanStackVariableDescription", ptr %.lcssa.sink.i, i64 %.neg.i.i.i.i.i32.i + %.neg.i.i.i.i.i33.i = sdiv exact i64 %53, -56 + %54 = getelementptr inbounds %"struct.llvm::ASanStackVariableDescription", ptr %.lcssa.sink.i, i64 %.neg.i.i.i.i.i33.i tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %54, ptr align 8 %5, i64 %53, i1 false) br label %_ZSt21__move_merge_adaptiveIPN4llvm28ASanStackVariableDescriptionES2_S2_N9__gnu_cxx5__ops15_Iter_comp_iterIPFbRKS1_S7_EEEEvT_SB_T0_SC_T1_T2_.exit @@ -1679,24 +1679,25 @@ _ZSt4moveIPN4llvm28ASanStackVariableDescriptionES2_ET0_T_S4_S3_.exit40.i: ; pred br label %_ZSt4moveIPN4llvm28ASanStackVariableDescriptionES2_ET0_T_S4_S3_.exit42.i _ZSt4moveIPN4llvm28ASanStackVariableDescriptionES2_ET0_T_S4_S3_.exit42.i: ; preds = %108, %_ZSt4moveIPN4llvm28ASanStackVariableDescriptionES2_ET0_T_S4_S3_.exit40.i - %.neg.i.i.i.i.i43.i = sdiv exact i64 %106, -56 - br i1 %.not.i.i.i.i.i39.i, label %_ZSt13move_backwardIPN4llvm28ASanStackVariableDescriptionES2_ET0_T_S4_S3_.exit45.i, label %111 + br i1 %.not.i.i.i.i.i39.i, label %_ZSt13move_backwardIPN4llvm28ASanStackVariableDescriptionES2_ET0_T_S4_S3_.exit46.i, label %111 111: ; preds = %_ZSt4moveIPN4llvm28ASanStackVariableDescriptionES2_ET0_T_S4_S3_.exit42.i - %112 = getelementptr inbounds %"struct.llvm::ASanStackVariableDescription", ptr %.0101, i64 %.neg.i.i.i.i.i43.i + %.neg.i.i.i.i.i44.i = sdiv exact i64 %106, -56 + %112 = getelementptr inbounds %"struct.llvm::ASanStackVariableDescription", ptr %.0101, i64 %.neg.i.i.i.i.i44.i tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %112, ptr align 8 %5, i64 %106, i1 false) - br label %_ZSt13move_backwardIPN4llvm28ASanStackVariableDescriptionES2_ET0_T_S4_S3_.exit45.i + br label %_ZSt13move_backwardIPN4llvm28ASanStackVariableDescriptionES2_ET0_T_S4_S3_.exit46.i -_ZSt13move_backwardIPN4llvm28ASanStackVariableDescriptionES2_ET0_T_S4_S3_.exit45.i: ; preds = %111, %_ZSt4moveIPN4llvm28ASanStackVariableDescriptionES2_ET0_T_S4_S3_.exit42.i - %113 = getelementptr inbounds %"struct.llvm::ASanStackVariableDescription", ptr %.0101, i64 %.neg.i.i.i.i.i43.i +_ZSt13move_backwardIPN4llvm28ASanStackVariableDescriptionES2_ET0_T_S4_S3_.exit46.i: ; preds = %111, %_ZSt4moveIPN4llvm28ASanStackVariableDescriptionES2_ET0_T_S4_S3_.exit42.i + %.pre-phi.i.i.i.i.i45.i = phi i64 [ %.neg.i.i.i.i.i44.i, %111 ], [ 0, %_ZSt4moveIPN4llvm28ASanStackVariableDescriptionES2_ET0_T_S4_S3_.exit42.i ] + %113 = getelementptr inbounds %"struct.llvm::ASanStackVariableDescription", ptr %.0101, i64 %.pre-phi.i.i.i.i.i45.i br label %_ZSt17__rotate_adaptiveIPN4llvm28ASanStackVariableDescriptionES2_lET_S3_S3_S3_T1_S4_T0_S4_.exit 114: ; preds = %101 %115 = tail call noundef ptr @_ZNSt3_V28__rotateIPN4llvm28ASanStackVariableDescriptionEEET_S4_S4_S4_St26random_access_iterator_tag(ptr noundef %.0102, ptr noundef %.tr105123, ptr noundef %.0101) br label %_ZSt17__rotate_adaptiveIPN4llvm28ASanStackVariableDescriptionES2_lET_S3_S3_S3_T1_S4_T0_S4_.exit -_ZSt17__rotate_adaptiveIPN4llvm28ASanStackVariableDescriptionES2_lET_S3_S3_S3_T1_S4_T0_S4_.exit: ; preds = %89, %_ZSt4moveIPN4llvm28ASanStackVariableDescriptionES2_ET0_T_S4_S3_.exit38.i, %102, %_ZSt13move_backwardIPN4llvm28ASanStackVariableDescriptionES2_ET0_T_S4_S3_.exit45.i, %114 - %.0.i91 = phi ptr [ %100, %_ZSt4moveIPN4llvm28ASanStackVariableDescriptionES2_ET0_T_S4_S3_.exit38.i ], [ %113, %_ZSt13move_backwardIPN4llvm28ASanStackVariableDescriptionES2_ET0_T_S4_S3_.exit45.i ], [ %115, %114 ], [ %.0102, %89 ], [ %.0101, %102 ] +_ZSt17__rotate_adaptiveIPN4llvm28ASanStackVariableDescriptionES2_lET_S3_S3_S3_T1_S4_T0_S4_.exit: ; preds = %89, %_ZSt4moveIPN4llvm28ASanStackVariableDescriptionES2_ET0_T_S4_S3_.exit38.i, %102, %_ZSt13move_backwardIPN4llvm28ASanStackVariableDescriptionES2_ET0_T_S4_S3_.exit46.i, %114 + %.0.i91 = phi ptr [ %100, %_ZSt4moveIPN4llvm28ASanStackVariableDescriptionES2_ET0_T_S4_S3_.exit38.i ], [ %113, %_ZSt13move_backwardIPN4llvm28ASanStackVariableDescriptionES2_ET0_T_S4_S3_.exit46.i ], [ %115, %114 ], [ %.0102, %89 ], [ %.0101, %102 ] tail call void @_ZSt16__merge_adaptiveIPN4llvm28ASanStackVariableDescriptionElS2_N9__gnu_cxx5__ops15_Iter_comp_iterIPFbRKS1_S7_EEEEvT_SB_SB_T0_SC_T1_SC_T2_(ptr noundef %.tr122, ptr noundef %.0102, ptr noundef %.0.i91, i64 noundef %.0, i64 noundef %.063, ptr noundef %5, i64 noundef %6, i64 %7) %116 = sub nsw i64 %.tr108126, %.063 %.not = icmp sgt i64 %87, %116 diff --git a/bench/llvm/optimized/CoverageMappingReader.cpp.ll b/bench/llvm/optimized/CoverageMappingReader.cpp.ll index 5c11df894aa..18953d1be4c 100644 --- a/bench/llvm/optimized/CoverageMappingReader.cpp.ll +++ b/bench/llvm/optimized/CoverageMappingReader.cpp.ll @@ -6421,30 +6421,27 @@ _ZN4llvm5ErrorD2Ev.exit77.i: ; preds = %_ZN4llvm8ExpectedIS %682 = ptrtoint ptr %678 to i64 %683 = sub i64 %681, %682 %.not289.i = icmp eq ptr %680, %678 - br i1 %.not289.i, label %_ZNSt6vectorIN4llvm6object10SectionRefESaIS2_EEaSERKS4_.exit.i, label %684 + br i1 %.not289.i, label %_ZN4llvm5ErrorD2Ev.exit79.i, label %684 684: ; preds = %_ZN4llvm5ErrorD2Ev.exit77.i %685 = icmp ugt i64 %683, 9223372036854775792 - br i1 %685, label %686, label %_ZNSt12_Vector_baseIN4llvm6object10SectionRefESaIS2_EE13_M_deallocateEPS2_m.exit.i.i + br i1 %685, label %686, label %_ZNSt6vectorIN4llvm6object10SectionRefESaIS2_EEaSERKS4_.exit.i 686: ; preds = %684 call void @_ZSt28__throw_bad_array_new_lengthv() #19, !noalias !709 unreachable -_ZNSt12_Vector_baseIN4llvm6object10SectionRefESaIS2_EE13_M_deallocateEPS2_m.exit.i.i: ; preds = %684 +_ZNSt6vectorIN4llvm6object10SectionRefESaIS2_EEaSERKS4_.exit.i: ; preds = %684 %687 = call noalias noundef nonnull ptr @_Znwm(i64 noundef %683) #18, !noalias !709 %688 = and i64 %683, 9223372036854775792 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %687, ptr align 8 %678, i64 %688, i1 false), !noalias !709 %689 = getelementptr inbounds i8, ptr %687, i64 %683 - br label %_ZNSt6vectorIN4llvm6object10SectionRefESaIS2_EEaSERKS4_.exit.i - -_ZNSt6vectorIN4llvm6object10SectionRefESaIS2_EEaSERKS4_.exit.i: ; preds = %_ZNSt12_Vector_baseIN4llvm6object10SectionRefESaIS2_EE13_M_deallocateEPS2_m.exit.i.i, %_ZN4llvm5ErrorD2Ev.exit77.i - %.sroa.12.1.i = phi ptr [ %689, %_ZNSt12_Vector_baseIN4llvm6object10SectionRefESaIS2_EE13_M_deallocateEPS2_m.exit.i.i ], [ null, %_ZN4llvm5ErrorD2Ev.exit77.i ] - %.sroa.0216.1.i = phi ptr [ %687, %_ZNSt12_Vector_baseIN4llvm6object10SectionRefESaIS2_EE13_M_deallocateEPS2_m.exit.i.i ], [ null, %_ZN4llvm5ErrorD2Ev.exit77.i ] %.not52.i = icmp eq i64 %683, 16 br i1 %.not52.i, label %696, label %_ZN4llvm5ErrorD2Ev.exit79.i -_ZN4llvm5ErrorD2Ev.exit79.i: ; preds = %_ZNSt6vectorIN4llvm6object10SectionRefESaIS2_EEaSERKS4_.exit.i +_ZN4llvm5ErrorD2Ev.exit79.i: ; preds = %_ZNSt6vectorIN4llvm6object10SectionRefESaIS2_EEaSERKS4_.exit.i, %_ZN4llvm5ErrorD2Ev.exit77.i + %.sroa.0216.1323.i = phi ptr [ %687, %_ZNSt6vectorIN4llvm6object10SectionRefESaIS2_EEaSERKS4_.exit.i ], [ null, %_ZN4llvm5ErrorD2Ev.exit77.i ] + %.sroa.12.1322.i = phi ptr [ %689, %_ZNSt6vectorIN4llvm6object10SectionRefESaIS2_EEaSERKS4_.exit.i ], [ null, %_ZN4llvm5ErrorD2Ev.exit77.i ] call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %12), !noalias !737 %690 = call noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #18, !noalias !740 %691 = getelementptr inbounds nuw i8, ptr %12, i64 33 @@ -6464,7 +6461,7 @@ _ZN4llvm5ErrorD2Ev.exit79.i: ; preds = %_ZNSt6vectorIN4llvm br label %_ZN4llvm8ExpectedISt6vectorINS_6object10SectionRefESaIS3_EEED2Ev.exit141.i 696: ; preds = %_ZNSt6vectorIN4llvm6object10SectionRefESaIS2_EEaSERKS4_.exit.i - call void @_ZN4llvm15InstrProfSymtab6createERNS_6object10SectionRefE(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Error") align 8 %23, ptr noundef nonnull align 8 dereferenceable(385) %632, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0216.1.i), !noalias !709 + call void @_ZN4llvm15InstrProfSymtab6createERNS_6object10SectionRefE(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Error") align 8 %23, ptr noundef nonnull align 8 dereferenceable(385) %632, ptr noundef nonnull align 8 dereferenceable(16) %687), !noalias !709 %697 = load ptr, ptr %23, align 8, !noalias !709 %.not290.i = icmp eq ptr %697, null br i1 %.not290.i, label %_ZN4llvm5ErrorD2Ev.exit81.i132, label %_ZN4llvm5ErrorD2Ev.exit80.i @@ -6755,8 +6752,8 @@ _ZNSt10unique_ptrIN4llvm20WritableMemoryBufferESt14default_deleteIS1_EED2Ev.exit _ZN4llvm5ErrorD2Ev.exit128.sink.split.sink.split.i: ; preds = %._crit_edge.i.thread, %.critedge62.thread.i %.sink.ph.i = phi ptr [ %30, %.critedge62.thread.i ], [ %31, %._crit_edge.i.thread ] - %.sink330.i = load ptr, ptr %.sink.ph.i, align 8, !noalias !709 - store ptr %.sink330.i, ptr %28, align 8, !noalias !709 + %.sink335.i = load ptr, ptr %.sink.ph.i, align 8, !noalias !709 + store ptr %.sink335.i, ptr %28, align 8, !noalias !709 br label %_ZN4llvm5ErrorD2Ev.exit128.sink.split.i _ZN4llvm5ErrorD2Ev.exit128.sink.split.i: ; preds = %_ZN4llvm5ErrorD2Ev.exit128.sink.split.sink.split.i, %._crit_edge309.i @@ -6862,11 +6859,11 @@ _ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i140.i br label %_ZN4llvm8ExpectedISt6vectorINS_6object10SectionRefESaIS3_EEED2Ev.exit141.i _ZN4llvm8ExpectedISt6vectorINS_6object10SectionRefESaIS3_EEED2Ev.exit141.i: ; preds = %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i140.i, %820, %819, %_ZN4llvm5ErrorD2Ev.exit80.i, %_ZN4llvm5ErrorD2Ev.exit79.i, %_ZN4llvm5ErrorD2Ev.exit75.i - %.sroa.0180.0 = phi ptr [ %.sroa.0180.3, %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i140.i ], [ %.sroa.0180.3, %819 ], [ %.sroa.0180.3, %820 ], [ null, %_ZN4llvm5ErrorD2Ev.exit80.i ], [ null, %_ZN4llvm5ErrorD2Ev.exit79.i ], [ null, %_ZN4llvm5ErrorD2Ev.exit75.i ] - %.sroa.3.0 = phi i64 [ %.sroa.3.3, %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i140.i ], [ %.sroa.3.3, %819 ], [ %.sroa.3.3, %820 ], [ 0, %_ZN4llvm5ErrorD2Ev.exit80.i ], [ 0, %_ZN4llvm5ErrorD2Ev.exit79.i ], [ 0, %_ZN4llvm5ErrorD2Ev.exit75.i ] - %.sroa.12.0.i = phi ptr [ %.sroa.12.1.i, %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i140.i ], [ %.sroa.12.1.i, %819 ], [ %.sroa.12.1.i, %820 ], [ %.sroa.12.1.i, %_ZN4llvm5ErrorD2Ev.exit80.i ], [ %.sroa.12.1.i, %_ZN4llvm5ErrorD2Ev.exit79.i ], [ null, %_ZN4llvm5ErrorD2Ev.exit75.i ] - %.sroa.0216.0.i = phi ptr [ %.sroa.0216.1.i, %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i140.i ], [ %.sroa.0216.1.i, %819 ], [ %.sroa.0216.1.i, %820 ], [ %.sroa.0216.1.i, %_ZN4llvm5ErrorD2Ev.exit80.i ], [ %.sroa.0216.1.i, %_ZN4llvm5ErrorD2Ev.exit79.i ], [ null, %_ZN4llvm5ErrorD2Ev.exit75.i ] - %.sroa.0224.0.i = phi ptr [ %.sroa.0224.1.i, %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i140.i ], [ %.sroa.0224.1.i, %819 ], [ %.sroa.0224.1.i, %820 ], [ %632, %_ZN4llvm5ErrorD2Ev.exit80.i ], [ %632, %_ZN4llvm5ErrorD2Ev.exit79.i ], [ %632, %_ZN4llvm5ErrorD2Ev.exit75.i ] + %.sroa.0180.0 = phi ptr [ null, %_ZN4llvm5ErrorD2Ev.exit79.i ], [ %.sroa.0180.3, %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i140.i ], [ %.sroa.0180.3, %819 ], [ %.sroa.0180.3, %820 ], [ null, %_ZN4llvm5ErrorD2Ev.exit80.i ], [ null, %_ZN4llvm5ErrorD2Ev.exit75.i ] + %.sroa.3.0 = phi i64 [ 0, %_ZN4llvm5ErrorD2Ev.exit79.i ], [ %.sroa.3.3, %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i140.i ], [ %.sroa.3.3, %819 ], [ %.sroa.3.3, %820 ], [ 0, %_ZN4llvm5ErrorD2Ev.exit80.i ], [ 0, %_ZN4llvm5ErrorD2Ev.exit75.i ] + %.sroa.12.0.i = phi ptr [ %.sroa.12.1322.i, %_ZN4llvm5ErrorD2Ev.exit79.i ], [ %689, %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i140.i ], [ %689, %819 ], [ %689, %820 ], [ %689, %_ZN4llvm5ErrorD2Ev.exit80.i ], [ null, %_ZN4llvm5ErrorD2Ev.exit75.i ] + %.sroa.0216.0.i = phi ptr [ %.sroa.0216.1323.i, %_ZN4llvm5ErrorD2Ev.exit79.i ], [ %687, %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i140.i ], [ %687, %819 ], [ %687, %820 ], [ %687, %_ZN4llvm5ErrorD2Ev.exit80.i ], [ null, %_ZN4llvm5ErrorD2Ev.exit75.i ] + %.sroa.0224.0.i = phi ptr [ %632, %_ZN4llvm5ErrorD2Ev.exit79.i ], [ %.sroa.0224.1.i, %_ZNSt10unique_ptrIN4llvm13ErrorInfoBaseESt14default_deleteIS1_EED2Ev.exit.i140.i ], [ %.sroa.0224.1.i, %819 ], [ %.sroa.0224.1.i, %820 ], [ %632, %_ZN4llvm5ErrorD2Ev.exit80.i ], [ %632, %_ZN4llvm5ErrorD2Ev.exit75.i ] %830 = load i8, ptr %649, align 8, !noalias !709 %831 = trunc i8 %830 to i1 %832 = load ptr, ptr %21, align 8, !noalias !709 diff --git a/bench/llvm/optimized/LegalizeVectorTypes.cpp.ll b/bench/llvm/optimized/LegalizeVectorTypes.cpp.ll index e23b1855b40..3a7ed58fa5f 100644 --- a/bench/llvm/optimized/LegalizeVectorTypes.cpp.ll +++ b/bench/llvm/optimized/LegalizeVectorTypes.cpp.ll @@ -42539,8 +42539,7 @@ _ZNK4llvm3EVT13getSizeInBitsEv.exit405: ; preds = %356, %360 br label %.lr.ph532 .preheader520: ; preds = %.lr.ph532, %_ZNK4llvm3EVT13getSizeInBitsEv.exit405 - %.0294.lcssa = phi i32 [ 0, %_ZNK4llvm3EVT13getSizeInBitsEv.exit405 ], [ %366, %.lr.ph532 ] - %.not299534 = icmp eq i32 %.0294.lcssa, %364 + %.not299534 = icmp eq i32 %366, %364 br i1 %.not299534, label %._crit_edge537, label %.lr.ph536 .lr.ph532: ; preds = %.lr.ph532.preheader, %.lr.ph532 @@ -42558,7 +42557,7 @@ _ZNK4llvm3EVT13getSizeInBitsEv.exit405: ; preds = %356, %360 br i1 %.not298, label %.preheader520, label %.lr.ph532, !llvm.loop !232 .lr.ph536: ; preds = %.preheader520, %_ZN4llvm12SelectionDAG8getUNDEFENS_3EVTE.exit407 - %.1295535 = phi i32 [ %382, %_ZN4llvm12SelectionDAG8getUNDEFENS_3EVTE.exit407 ], [ %.0294.lcssa, %.preheader520 ] + %.1295535 = phi i32 [ %382, %_ZN4llvm12SelectionDAG8getUNDEFENS_3EVTE.exit407 ], [ %366, %.preheader520 ] %375 = load ptr, ptr %33, align 8 %.sroa.053.0.copyload = load i16, ptr %25, align 8 %.sroa.255.0.copyload = load ptr, ptr %297, align 8 @@ -42720,8 +42719,7 @@ _ZN4llvm12SelectionDAG8getUNDEFENS_3EVTE.exit428: ; preds = %_ZNK4llvm3EVT13getS br i1 %.not296546, label %.preheader, label %.lr.ph548 .preheader: ; preds = %.lr.ph548, %_ZN4llvm12SelectionDAG8getUNDEFENS_3EVTE.exit428 - %.0288.lcssa = phi i32 [ 0, %_ZN4llvm12SelectionDAG8getUNDEFENS_3EVTE.exit428 ], [ %407, %.lr.ph548 ] - %.not297550 = icmp eq i32 %.0288.lcssa, %429 + %.not297550 = icmp eq i32 %407, %429 br i1 %.not297550, label %._crit_edge553, label %.lr.ph552 .lr.ph548: ; preds = %_ZN4llvm12SelectionDAG8getUNDEFENS_3EVTE.exit428, %.lr.ph548 @@ -42739,7 +42737,7 @@ _ZN4llvm12SelectionDAG8getUNDEFENS_3EVTE.exit428: ; preds = %_ZNK4llvm3EVT13getS br i1 %.not296, label %.preheader, label %.lr.ph548, !llvm.loop !235 .lr.ph552: ; preds = %.preheader, %.lr.ph552 - %.1551 = phi i32 [ %446, %.lr.ph552 ], [ %.0288.lcssa, %.preheader ] + %.1551 = phi i32 [ %446, %.lr.ph552 ], [ %407, %.preheader ] %443 = zext i32 %.1551 to i64 %444 = load ptr, ptr %30, align 8 %445 = getelementptr inbounds %"class.llvm::SDValue", ptr %444, i64 %443 diff --git a/bench/luajit/optimized/lib_string.ll b/bench/luajit/optimized/lib_string.ll index 3d1b2e1cd9e..cce7a585b73 100644 --- a/bench/luajit/optimized/lib_string.ll +++ b/bench/luajit/optimized/lib_string.ll @@ -114,18 +114,17 @@ lj_state_checkstack.exit: ; preds = %if.then.i, %if.end2 for.body.lr.ph: ; preds = %lj_state_checkstack.exit %base = getelementptr inbounds i8, ptr %L, i64 32 - %4 = tail call i32 @llvm.umax.i32(i32 %sub, i32 1) - %wide.trip.count = zext nneg i32 %4 to i64 + %wide.trip.count = zext nneg i32 %sub to i64 br label %for.body for.body: ; preds = %for.body.lr.ph, %for.body %indvars.iv = phi i64 [ 0, %for.body.lr.ph ], [ %indvars.iv.next, %for.body ] - %5 = load ptr, ptr %base, align 8 - %add.ptr25 = getelementptr inbounds %union.TValue, ptr %5, i64 %indvars.iv + %4 = load ptr, ptr %base, align 8 + %add.ptr25 = getelementptr inbounds %union.TValue, ptr %4, i64 %indvars.iv %add.ptr27 = getelementptr inbounds i8, ptr %add.ptr25, i64 -16 %arrayidx = getelementptr inbounds i8, ptr %add.ptr22, i64 %indvars.iv - %6 = load i8, ptr %arrayidx, align 1 - %conv.i29 = uitofp i8 %6 to double + %5 = load i8, ptr %arrayidx, align 1 + %conv.i29 = uitofp i8 %5 to double store double %conv.i29, ptr %add.ptr27, align 8 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count diff --git a/bench/luau/optimized/AssemblyBuilderX64.cpp.ll b/bench/luau/optimized/AssemblyBuilderX64.cpp.ll index 1c3da7d1f08..73ed17c0f41 100644 --- a/bench/luau/optimized/AssemblyBuilderX64.cpp.ll +++ b/bench/luau/optimized/AssemblyBuilderX64.cpp.ll @@ -4883,11 +4883,7 @@ define dso_local void @_ZN4Luau7CodeGen3X6418AssemblyBuilderX645alignEjNS1_16Ali %37 = phi ptr [ %29, %28 ], [ %51, %.preheader.loopexit ] %38 = phi ptr [ %33, %28 ], [ %36, %.preheader.loopexit ] %.not = icmp eq i32 %15, %11 - br i1 %.not, label %._crit_edge32, label %.lr.ph31.preheader - -.lr.ph31.preheader: ; preds = %.preheader - %umax = tail call i32 @llvm.umax.i32(i32 %16, i32 1) - br label %.lr.ph31 + br i1 %.not, label %._crit_edge32, label %.lr.ph31 39: ; preds = %.lr.ph28, %39 %40 = phi ptr [ %.pre39, %.lr.ph28 ], [ %52, %39 ] @@ -4914,14 +4910,14 @@ define dso_local void @_ZN4Luau7CodeGen3X6418AssemblyBuilderX645alignEjNS1_16Ali %58 = icmp ugt ptr %57, %52 br i1 %58, label %39, label %.preheader.loopexit, !llvm.loop !13 -.lr.ph31: ; preds = %.lr.ph31.preheader, %.lr.ph31 - %.01930 = phi i32 [ %61, %.lr.ph31 ], [ 0, %.lr.ph31.preheader ] +.lr.ph31: ; preds = %.preheader, %.lr.ph31 + %.01930 = phi i32 [ %61, %.lr.ph31 ], [ 0, %.preheader ] %59 = load ptr, ptr %4, align 8 %60 = getelementptr inbounds i8, ptr %59, i64 1 store ptr %60, ptr %4, align 8 store i8 -52, ptr %59, align 1 %61 = add nuw i32 %.01930, 1 - %exitcond.not = icmp eq i32 %61, %umax + %exitcond.not = icmp eq i32 %61, %16 br i1 %exitcond.not, label %._crit_edge32.loopexit, label %.lr.ph31, !llvm.loop !14 ._crit_edge32.loopexit: ; preds = %.lr.ph31 @@ -7760,9 +7756,6 @@ declare i64 @llvm.umin.i64(i64, i64) #15 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) declare void @llvm.experimental.noalias.scope.decl(metadata) #16 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umax.i32(i32, i32) #15 - attributes #0 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { mustprogress nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/luau/optimized/TypePack.cpp.ll b/bench/luau/optimized/TypePack.cpp.ll index ea9e8dd9ee1..5d2982ebadb 100644 --- a/bench/luau/optimized/TypePack.cpp.ll +++ b/bench/luau/optimized/TypePack.cpp.ll @@ -3907,72 +3907,70 @@ _ZNSt6vectorIPKN4Luau4TypeESaIS3_EED2Ev.exit: ; preds = %.loopexit.split-lp, %83 = sub i64 %81, %82 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %0, i8 0, i64 24, i1 false) %.not.i.i.i.i.i23 = icmp eq ptr %.sroa.7.1, %.sroa.038.2 - br i1 %.not.i.i.i.i.i23, label %.noexc25.thread, label %89 + br i1 %.not.i.i.i.i.i23, label %.noexc25.thread, label %87 .noexc25.thread: ; preds = %._crit_edge.thread, %._crit_edge - %84 = phi i64 [ 0, %._crit_edge.thread ], [ %83, %._crit_edge ] - %85 = phi i64 [ 0, %._crit_edge.thread ], [ %82, %._crit_edge ] + %84 = phi i64 [ 0, %._crit_edge.thread ], [ %82, %._crit_edge ] %spec.select.i22137 = phi i8 [ %spec.select.i22128, %._crit_edge.thread ], [ %spec.select.i22, %._crit_edge ] %.sroa.038.1.lcssa135 = phi ptr [ null, %._crit_edge.thread ], [ %.sroa.038.2, %._crit_edge ] %.sroa.13.1.lcssa133 = phi ptr [ null, %._crit_edge.thread ], [ %.sroa.13.2, %._crit_edge ] %.sroa.028.0.lcssa131 = phi ptr [ %.sroa.028.3.ph, %._crit_edge.thread ], [ %.sroa.028.6, %._crit_edge ] - %86 = getelementptr inbounds i8, ptr %0, i64 8 - %87 = getelementptr inbounds i8, ptr null, i64 %84 - %88 = getelementptr inbounds i8, ptr %0, i64 16 + %85 = getelementptr inbounds i8, ptr %0, i64 8 + %86 = getelementptr inbounds i8, ptr %0, i64 16 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %0, i8 0, i64 16, i1 false) - store ptr %87, ptr %88, align 8 - br label %96 + store ptr null, ptr %86, align 8 + br label %94 -89: ; preds = %._crit_edge - %90 = icmp ugt i64 %83, 9223372036854775800 - br i1 %90, label %.noexc.i.i.i, label %_ZNSt16allocator_traitsISaIPKN4Luau4TypeEEE8allocateERS4_m.exit.i.i.i.i.i +87: ; preds = %._crit_edge + %88 = icmp ugt i64 %83, 9223372036854775800 + br i1 %88, label %.noexc.i.i.i, label %_ZNSt16allocator_traitsISaIPKN4Luau4TypeEEE8allocateERS4_m.exit.i.i.i.i.i -.noexc.i.i.i: ; preds = %89 +.noexc.i.i.i: ; preds = %87 invoke void @_ZSt28__throw_bad_array_new_lengthv() #23 to label %.noexc24 unwind label %.loopexit.split-lp.loopexit.split-lp .noexc24: ; preds = %.noexc.i.i.i unreachable -_ZNSt16allocator_traitsISaIPKN4Luau4TypeEEE8allocateERS4_m.exit.i.i.i.i.i: ; preds = %89 - %91 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %83) #24 - to label %92 unwind label %.loopexit.split-lp.loopexit.split-lp - -92: ; preds = %_ZNSt16allocator_traitsISaIPKN4Luau4TypeEEE8allocateERS4_m.exit.i.i.i.i.i - store ptr %91, ptr %0, align 8 - %93 = getelementptr inbounds i8, ptr %0, i64 8 - store ptr %91, ptr %93, align 8 - %94 = getelementptr inbounds i8, ptr %91, i64 %83 - %95 = getelementptr inbounds i8, ptr %0, i64 16 - store ptr %94, ptr %95, align 8 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %91, ptr align 8 %.sroa.038.2, i64 %83, i1 false) - br label %96 - -96: ; preds = %92, %.noexc25.thread - %97 = phi i64 [ %84, %.noexc25.thread ], [ %83, %92 ] - %98 = phi i64 [ %85, %.noexc25.thread ], [ %82, %92 ] - %spec.select.i22136 = phi i8 [ %spec.select.i22137, %.noexc25.thread ], [ %spec.select.i22, %92 ] - %.sroa.038.1.lcssa134 = phi ptr [ %.sroa.038.1.lcssa135, %.noexc25.thread ], [ %.sroa.038.2, %92 ] - %.sroa.13.1.lcssa132 = phi ptr [ %.sroa.13.1.lcssa133, %.noexc25.thread ], [ %.sroa.13.2, %92 ] - %.sroa.028.0.lcssa130 = phi ptr [ %.sroa.028.0.lcssa131, %.noexc25.thread ], [ %.sroa.028.6, %92 ] - %99 = phi ptr [ %86, %.noexc25.thread ], [ %93, %92 ] - %100 = phi ptr [ null, %.noexc25.thread ], [ %91, %92 ] - %101 = getelementptr inbounds i8, ptr %100, i64 %97 - store ptr %101, ptr %99, align 8 - %102 = getelementptr inbounds i8, ptr %0, i64 24 - store ptr %.sroa.028.0.lcssa130, ptr %102, align 8 +_ZNSt16allocator_traitsISaIPKN4Luau4TypeEEE8allocateERS4_m.exit.i.i.i.i.i: ; preds = %87 + %89 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %83) #24 + to label %90 unwind label %.loopexit.split-lp.loopexit.split-lp + +90: ; preds = %_ZNSt16allocator_traitsISaIPKN4Luau4TypeEEE8allocateERS4_m.exit.i.i.i.i.i + store ptr %89, ptr %0, align 8 + %91 = getelementptr inbounds i8, ptr %0, i64 8 + store ptr %89, ptr %91, align 8 + %92 = getelementptr inbounds i8, ptr %89, i64 %83 + %93 = getelementptr inbounds i8, ptr %0, i64 16 + store ptr %92, ptr %93, align 8 + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %89, ptr align 8 %.sroa.038.2, i64 %83, i1 false) + br label %94 + +94: ; preds = %90, %.noexc25.thread + %95 = phi i64 [ 0, %.noexc25.thread ], [ %83, %90 ] + %96 = phi i64 [ %84, %.noexc25.thread ], [ %82, %90 ] + %spec.select.i22136 = phi i8 [ %spec.select.i22137, %.noexc25.thread ], [ %spec.select.i22, %90 ] + %.sroa.038.1.lcssa134 = phi ptr [ %.sroa.038.1.lcssa135, %.noexc25.thread ], [ %.sroa.038.2, %90 ] + %.sroa.13.1.lcssa132 = phi ptr [ %.sroa.13.1.lcssa133, %.noexc25.thread ], [ %.sroa.13.2, %90 ] + %.sroa.028.0.lcssa130 = phi ptr [ %.sroa.028.0.lcssa131, %.noexc25.thread ], [ %.sroa.028.6, %90 ] + %97 = phi ptr [ %85, %.noexc25.thread ], [ %91, %90 ] + %98 = phi ptr [ null, %.noexc25.thread ], [ %89, %90 ] + %99 = getelementptr inbounds i8, ptr %98, i64 %95 + store ptr %99, ptr %97, align 8 + %100 = getelementptr inbounds i8, ptr %0, i64 24 + store ptr %.sroa.028.0.lcssa130, ptr %100, align 8 %.sroa.237.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 32 store i8 %spec.select.i22136, ptr %.sroa.237.0..sroa_idx, align 8 %.not.i.i.i26 = icmp eq ptr %.sroa.038.1.lcssa134, null - br i1 %.not.i.i.i26, label %_ZNSt6vectorIPKN4Luau4TypeESaIS3_EED2Ev.exit27, label %103 + br i1 %.not.i.i.i26, label %_ZNSt6vectorIPKN4Luau4TypeESaIS3_EED2Ev.exit27, label %101 -103: ; preds = %96 - %104 = ptrtoint ptr %.sroa.13.1.lcssa132 to i64 - %105 = sub i64 %104, %98 - tail call void @_ZdlPvm(ptr noundef nonnull %.sroa.038.1.lcssa134, i64 noundef %105) #25 +101: ; preds = %94 + %102 = ptrtoint ptr %.sroa.13.1.lcssa132 to i64 + %103 = sub i64 %102, %96 + tail call void @_ZdlPvm(ptr noundef nonnull %.sroa.038.1.lcssa134, i64 noundef %103) #25 br label %_ZNSt6vectorIPKN4Luau4TypeESaIS3_EED2Ev.exit27 -_ZNSt6vectorIPKN4Luau4TypeESaIS3_EED2Ev.exit27: ; preds = %96, %103 +_ZNSt6vectorIPKN4Luau4TypeESaIS3_EED2Ev.exit27: ; preds = %94, %101 ret void } diff --git a/bench/luau/optimized/TypeVar.test.cpp.ll b/bench/luau/optimized/TypeVar.test.cpp.ll index 4cd51b8a4f8..542e831581f 100644 --- a/bench/luau/optimized/TypeVar.test.cpp.ll +++ b/bench/luau/optimized/TypeVar.test.cpp.ll @@ -7136,7 +7136,7 @@ _ZNSt12_Vector_baseIPKN4Luau4TypeESaIS3_EE13_M_deallocateEPS3_m.exit.i.i: ; pred br i1 %.not.i68.i, label %_ZSt7advanceIPKPKN4Luau4TypeEmEvRT_T0_.exit.i.i, label %55 55: ; preds = %50 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %40, ptr noundef nonnull align 8 dereferenceable(16) %6, i64 16, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %40, ptr noundef nonnull align 8 dereferenceable(16) %6, i64 16, i1 false) %.pre.i.i = load ptr, ptr %51, align 8 %56 = getelementptr inbounds i8, ptr %40, i64 16 %.not.i16.i.i = icmp eq ptr %.pre.i.i, %56 @@ -7148,23 +7148,24 @@ _ZNSt12_Vector_baseIPKN4Luau4TypeESaIS3_EE13_M_deallocateEPS3_m.exit.i.i: ; pred _ZSt7advanceIPKPKN4Luau4TypeEmEvRT_T0_.exit.i.i: ; preds = %50 %.not.i.i.i.i.i17.i.i = icmp eq ptr %52, %40 - br i1 %.not.i.i.i.i.i17.i.i, label %_ZSt4copyIPKPKN4Luau4TypeEPS3_ET0_T_S8_S7_.exit18.i.i, label %58 + br i1 %.not.i.i.i.i.i17.i.i, label %_ZSt4copyIPKPKN4Luau4TypeEPS3_ET0_T_S8_S7_.exit18.i.thread.i, label %_ZSt4copyIPKPKN4Luau4TypeEPS3_ET0_T_S8_S7_.exit18.i.i -58: ; preds = %_ZSt7advanceIPKPKN4Luau4TypeEmEvRT_T0_.exit.i.i - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %40, ptr noundef nonnull align 8 dereferenceable(1) %6, i64 %54, i1 false) +_ZSt4copyIPKPKN4Luau4TypeEPS3_ET0_T_S8_S7_.exit18.i.i: ; preds = %_ZSt7advanceIPKPKN4Luau4TypeEmEvRT_T0_.exit.i.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %40, ptr noundef nonnull align 8 dereferenceable(1) %6, i64 %54, i1 false) %.pre26.i.i = load ptr, ptr %51, align 8 - br label %_ZSt4copyIPKPKN4Luau4TypeEPS3_ET0_T_S8_S7_.exit18.i.i + %gepdiff.i = sub nuw nsw i64 16, %54 + br label %_ZSt4copyIPKPKN4Luau4TypeEPS3_ET0_T_S8_S7_.exit18.i.thread.i -_ZSt4copyIPKPKN4Luau4TypeEPS3_ET0_T_S8_S7_.exit18.i.i: ; preds = %58, %_ZSt7advanceIPKPKN4Luau4TypeEmEvRT_T0_.exit.i.i - %59 = phi ptr [ %52, %_ZSt7advanceIPKPKN4Luau4TypeEmEvRT_T0_.exit.i.i ], [ %.pre26.i.i, %58 ] - %gepdiff = sub nuw nsw i64 16, %54 +_ZSt4copyIPKPKN4Luau4TypeEPS3_ET0_T_S8_S7_.exit18.i.thread.i: ; preds = %_ZSt4copyIPKPKN4Luau4TypeEPS3_ET0_T_S8_S7_.exit18.i.i, %_ZSt7advanceIPKPKN4Luau4TypeEmEvRT_T0_.exit.i.i + %58 = phi i64 [ %gepdiff.i, %_ZSt4copyIPKPKN4Luau4TypeEPS3_ET0_T_S8_S7_.exit18.i.i ], [ 16, %_ZSt7advanceIPKPKN4Luau4TypeEmEvRT_T0_.exit.i.i ] + %59 = phi ptr [ %.pre26.i.i, %_ZSt4copyIPKPKN4Luau4TypeEPS3_ET0_T_S8_S7_.exit18.i.i ], [ %52, %_ZSt7advanceIPKPKN4Luau4TypeEmEvRT_T0_.exit.i.i ] %.sink.i.i25.i.ptr.i = getelementptr inbounds i8, ptr %6, i64 %54 - call void @llvm.memmove.p0.p0.i64(ptr align 8 %59, ptr nonnull align 8 %.sink.i.i25.i.ptr.i, i64 %gepdiff, i1 false) - %60 = getelementptr inbounds i8, ptr %59, i64 %gepdiff + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %59, ptr nonnull align 8 %.sink.i.i25.i.ptr.i, i64 %58, i1 false) + %60 = getelementptr inbounds i8, ptr %59, i64 %58 store ptr %60, ptr %51, align 8 br label %61 -61: ; preds = %_ZSt4copyIPKPKN4Luau4TypeEPS3_ET0_T_S8_S7_.exit18.i.i, %57, %55, %_ZNSt12_Vector_baseIPKN4Luau4TypeESaIS3_EE13_M_deallocateEPS3_m.exit.i.i +61: ; preds = %_ZSt4copyIPKPKN4Luau4TypeEPS3_ET0_T_S8_S7_.exit18.i.thread.i, %57, %55, %_ZNSt12_Vector_baseIPKN4Luau4TypeESaIS3_EE13_M_deallocateEPS3_m.exit.i.i call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %7, i8 0, i64 24, i1 false) %62 = load ptr, ptr %32, align 8 %63 = getelementptr inbounds i8, ptr %62, i64 112 @@ -8084,7 +8085,7 @@ _ZNSt12_Vector_baseIPKN4Luau4TypeESaIS3_EE13_M_deallocateEPS3_m.exit.i.i: ; pred br i1 %.not.i.i, label %_ZSt7advanceIPKPKN4Luau4TypeEmEvRT_T0_.exit.i.i, label %56 56: ; preds = %51 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %41, ptr noundef nonnull align 8 dereferenceable(16) %6, i64 16, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %41, ptr noundef nonnull align 8 dereferenceable(16) %6, i64 16, i1 false) %.pre.i.i = load ptr, ptr %52, align 8 %57 = getelementptr inbounds i8, ptr %41, i64 16 %.not.i16.i.i = icmp eq ptr %.pre.i.i, %57 @@ -8096,23 +8097,24 @@ _ZNSt12_Vector_baseIPKN4Luau4TypeESaIS3_EE13_M_deallocateEPS3_m.exit.i.i: ; pred _ZSt7advanceIPKPKN4Luau4TypeEmEvRT_T0_.exit.i.i: ; preds = %51 %.not.i.i.i.i.i17.i.i = icmp eq ptr %53, %41 - br i1 %.not.i.i.i.i.i17.i.i, label %_ZSt4copyIPKPKN4Luau4TypeEPS3_ET0_T_S8_S7_.exit18.i.i, label %59 + br i1 %.not.i.i.i.i.i17.i.i, label %_ZSt4copyIPKPKN4Luau4TypeEPS3_ET0_T_S8_S7_.exit18.i.thread.i, label %_ZSt4copyIPKPKN4Luau4TypeEPS3_ET0_T_S8_S7_.exit18.i.i -59: ; preds = %_ZSt7advanceIPKPKN4Luau4TypeEmEvRT_T0_.exit.i.i - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %41, ptr noundef nonnull align 8 dereferenceable(1) %6, i64 %55, i1 false) +_ZSt4copyIPKPKN4Luau4TypeEPS3_ET0_T_S8_S7_.exit18.i.i: ; preds = %_ZSt7advanceIPKPKN4Luau4TypeEmEvRT_T0_.exit.i.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %41, ptr noundef nonnull align 8 dereferenceable(1) %6, i64 %55, i1 false) %.pre26.i.i = load ptr, ptr %52, align 8 - br label %_ZSt4copyIPKPKN4Luau4TypeEPS3_ET0_T_S8_S7_.exit18.i.i + %gepdiff.i = sub nuw nsw i64 16, %55 + br label %_ZSt4copyIPKPKN4Luau4TypeEPS3_ET0_T_S8_S7_.exit18.i.thread.i -_ZSt4copyIPKPKN4Luau4TypeEPS3_ET0_T_S8_S7_.exit18.i.i: ; preds = %59, %_ZSt7advanceIPKPKN4Luau4TypeEmEvRT_T0_.exit.i.i - %60 = phi ptr [ %53, %_ZSt7advanceIPKPKN4Luau4TypeEmEvRT_T0_.exit.i.i ], [ %.pre26.i.i, %59 ] - %gepdiff = sub nuw nsw i64 16, %55 +_ZSt4copyIPKPKN4Luau4TypeEPS3_ET0_T_S8_S7_.exit18.i.thread.i: ; preds = %_ZSt4copyIPKPKN4Luau4TypeEPS3_ET0_T_S8_S7_.exit18.i.i, %_ZSt7advanceIPKPKN4Luau4TypeEmEvRT_T0_.exit.i.i + %59 = phi i64 [ %gepdiff.i, %_ZSt4copyIPKPKN4Luau4TypeEPS3_ET0_T_S8_S7_.exit18.i.i ], [ 16, %_ZSt7advanceIPKPKN4Luau4TypeEmEvRT_T0_.exit.i.i ] + %60 = phi ptr [ %.pre26.i.i, %_ZSt4copyIPKPKN4Luau4TypeEPS3_ET0_T_S8_S7_.exit18.i.i ], [ %53, %_ZSt7advanceIPKPKN4Luau4TypeEmEvRT_T0_.exit.i.i ] %.sink.i.i25.i.ptr.i = getelementptr inbounds i8, ptr %6, i64 %55 - call void @llvm.memmove.p0.p0.i64(ptr align 8 %60, ptr nonnull align 8 %.sink.i.i25.i.ptr.i, i64 %gepdiff, i1 false) - %61 = getelementptr inbounds i8, ptr %60, i64 %gepdiff + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %60, ptr nonnull align 8 %.sink.i.i25.i.ptr.i, i64 %59, i1 false) + %61 = getelementptr inbounds i8, ptr %60, i64 %59 store ptr %61, ptr %52, align 8 br label %62 -62: ; preds = %_ZSt4copyIPKPKN4Luau4TypeEPS3_ET0_T_S8_S7_.exit18.i.i, %58, %56, %_ZNSt12_Vector_baseIPKN4Luau4TypeESaIS3_EE13_M_deallocateEPS3_m.exit.i.i +62: ; preds = %_ZSt4copyIPKPKN4Luau4TypeEPS3_ET0_T_S8_S7_.exit18.i.thread.i, %58, %56, %_ZNSt12_Vector_baseIPKN4Luau4TypeESaIS3_EE13_M_deallocateEPS3_m.exit.i.i call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %7, i8 0, i64 24, i1 false) %63 = load ptr, ptr %33, align 8 %64 = getelementptr inbounds i8, ptr %63, i64 112 diff --git a/bench/meshlab/optimized/filter_mutualglobal.cpp.ll b/bench/meshlab/optimized/filter_mutualglobal.cpp.ll index bec0564aede..71442736930 100644 --- a/bench/meshlab/optimized/filter_mutualglobal.cpp.ll +++ b/bench/meshlab/optimized/filter_mutualglobal.cpp.ll @@ -7071,20 +7071,21 @@ _ZN12MeshDocument19RasterRangeIterator3endEv.exit._crit_edge: ; preds = %_ZNSt6v br i1 %286, label %.lr.ph146, label %._crit_edge, !llvm.loop !63 ._crit_edge: ; preds = %.lr.ph146, %.preheader + %287 = phi i64 [ 0, %.preheader ], [ %11, %.lr.ph146 ] %.019.lcssa = phi float [ 0.000000e+00, %.preheader ], [ %283, %.lr.ph146 ] %.not.i.i.i80 = icmp eq ptr %.sroa.0103.2.lcssa, null - br i1 %.not.i.i.i80, label %_ZNSt6vectorIfSaIfEED2Ev.exit81, label %287 + br i1 %.not.i.i.i80, label %_ZNSt6vectorIfSaIfEED2Ev.exit81, label %288 -287: ; preds = %._crit_edge +288: ; preds = %._crit_edge tail call void @_ZdlPv(ptr noundef nonnull %.sroa.0103.2.lcssa) #26 br label %_ZNSt6vectorIfSaIfEED2Ev.exit81 -_ZNSt6vectorIfSaIfEED2Ev.exit81: ; preds = %4, %._crit_edge, %287 - %.019.lcssa163 = phi float [ %.019.lcssa, %._crit_edge ], [ %.019.lcssa, %287 ], [ 0.000000e+00, %4 ] - %288 = phi i64 [ %11, %._crit_edge ], [ %11, %287 ], [ 0, %4 ] - %289 = uitofp nneg i64 %288 to float - %290 = fdiv float %.019.lcssa163, %289 - ret float %290 +_ZNSt6vectorIfSaIfEED2Ev.exit81: ; preds = %4, %._crit_edge, %288 + %.019.lcssa163 = phi float [ %.019.lcssa, %._crit_edge ], [ %.019.lcssa, %288 ], [ 0.000000e+00, %4 ] + %289 = phi i64 [ %287, %._crit_edge ], [ %287, %288 ], [ 0, %4 ] + %290 = uitofp nneg i64 %289 to float + %291 = fdiv float %.019.lcssa163, %290 + ret float %291 } declare void @_ZN12FilterPlugin17wrongActionCalledEPK7QAction(ptr noundef) local_unnamed_addr #0 @@ -9118,7 +9119,7 @@ _ZN4NodeD2Ev.exit: ; preds = %_ZNSt6vectorI4NodeS %66 = sub i64 %64, %65 %67 = ashr exact i64 %66, 2 %.not73282.not = icmp eq ptr %.sroa.12.0292, %.sroa.0190.0293 - br i1 %.not73282.not, label %.critedge, label %.lr.ph284 + br i1 %.not73282.not, label %.critedge.thread, label %.lr.ph284 68: ; preds = %.lr.ph284 %69 = add i32 %.059283, 1 @@ -9134,11 +9135,15 @@ _ZN4NodeD2Ev.exit: ; preds = %_ZNSt6vectorI4NodeS %74 = icmp eq i32 %73, %63 br i1 %74, label %_ZNSt6vectorIiSaIiEE9push_backERKi.exit, label %68 -.critedge: ; preds = %68, %.lr.ph295 +.critedge: ; preds = %68 %.not.i85 = icmp eq ptr %.sroa.12.0292, %.sroa.23.0291 br i1 %.not.i85, label %77, label %75 -75: ; preds = %.critedge +.critedge.thread: ; preds = %.lr.ph295 + %.not.i85352 = icmp eq ptr %.sroa.12.0292, %.sroa.23.0291 + br i1 %.not.i85352, label %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i, label %75 + +75: ; preds = %.critedge.thread, %.critedge store i32 %63, ptr %.sroa.12.0292, align 4 %76 = getelementptr inbounds i8, ptr %.sroa.12.0292, i64 4 br label %_ZNSt6vectorIiSaIiEE9push_backERKi.exit @@ -9154,7 +9159,7 @@ _ZN4NodeD2Ev.exit: ; preds = %_ZNSt6vectorI4NodeS .noexc86: ; preds = %79 unreachable -_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i: ; preds = %77 +_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i: ; preds = %.critedge.thread, %77 %.sroa.speculated.i.i.i = call i64 @llvm.umax.i64(i64 %67, i64 1) %80 = add nuw nsw i64 %.sroa.speculated.i.i.i, %67 %81 = shl nuw nsw i64 %80, 2 diff --git a/bench/minetest/optimized/imagefilters.cpp.ll b/bench/minetest/optimized/imagefilters.cpp.ll index 849849fb876..c9420625c19 100644 --- a/bench/minetest/optimized/imagefilters.cpp.ll +++ b/bench/minetest/optimized/imagefilters.cpp.ll @@ -216,7 +216,6 @@ invoke.cont23.i: ; preds = %if.then.i.i.i.i.i.i %conv.i50.i265.i = and i32 %mul.i.i, 7 %cmp1244.i266.i = icmp eq i32 %conv.i50.i265.i, 0 %add.ptr.i.i.i268.i = getelementptr inbounds i8, ptr %add.ptr.i.i.i.i.i.i.i.i.i.i.i, i64 -1 - %cmp.i.i.i.i.i.i = icmp slt i64 %sub.ptr.sub.i.i.i.i, 0 %11 = and i64 %src.val, 4294967295 %wide.trip.count151 = and i64 %sub.i250.i, 4294967295 %exitcond.i277.i = icmp eq i32 %conv.i50.i265.i, 1 @@ -462,19 +461,9 @@ if.end142.i: ; preds = %for.body.i252.i, %f %sub.ptr.rhs.cast.i90.i.i = ptrtoint ptr %bitmap.sroa.11.0144.i to i64 %sub.ptr.sub.i91.i.i = sub i64 %sub.ptr.lhs.cast.i89.i.i, %sub.ptr.rhs.cast.i90.i.i %cmp3.i.i = icmp ugt i64 %sub.ptr.sub.i.i.i.i, %sub.ptr.sub.i91.i.i - br i1 %cmp3.i.i, label %cond.true.i.i.i.i, label %if.else.i.i + br i1 %cmp3.i.i, label %_ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit.i.i.i, label %if.else.i.i -cond.true.i.i.i.i: ; preds = %if.end142.i - br i1 %cmp.i.i.i.i.i.i, label %if.end.i.i.i.i.i.i, label %_ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit.i.i.i, !prof !22 - -if.end.i.i.i.i.i.i: ; preds = %cond.true.i.i.i.i - invoke void @_ZSt17__throw_bad_allocv() #9 - to label %.noexc358.i unwind label %ehcleanup146.loopexit.split-lp.i - -.noexc358.i: ; preds = %if.end.i.i.i.i.i.i - unreachable - -_ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit.i.i.i: ; preds = %cond.true.i.i.i.i +_ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit.i.i.i: ; preds = %if.end142.i %call5.i.i.i.i.i359.i = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %sub.ptr.sub.i.i.i.i) #8 to label %if.then.i.i.i.i.i.i.i.i.i.i357.i unwind label %ehcleanup146.loopexit.i @@ -507,9 +496,8 @@ _ZSt4copyIPhS0_ET0_T_S2_S1_.exit.i.i: ; preds = %if.else49.i.i if.then.i.i.i.i.i.i.i.i.i.i: ; preds = %_ZSt4copyIPhS0_ET0_T_S2_S1_.exit.i.i, %if.else49.i.i %32 = phi ptr [ %bitmap.sroa.25.0143.i, %_ZSt4copyIPhS0_ET0_T_S2_S1_.exit.i.i ], [ %bitmap.sroa.11.0144.i, %if.else49.i.i ] - %sub.ptr.sub.i112.i.pre-phi178.i = phi i64 [ %sub.ptr.sub.i96.i.i, %_ZSt4copyIPhS0_ET0_T_S2_S1_.exit.i.i ], [ 0, %if.else49.i.i ] - %add.ptr62.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i.i66.i, i64 %sub.ptr.sub.i112.i.pre-phi178.i - %gepdiff1 = sub i64 %sub.ptr.sub.i.i.i.i, %sub.ptr.sub.i112.i.pre-phi178.i + %add.ptr62.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i.i66.i, i64 %sub.ptr.sub.i96.i.i + %gepdiff1 = sub i64 %sub.ptr.sub.i.i.i.i, %sub.ptr.sub.i96.i.i tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %32, ptr align 1 %add.ptr62.i.i, i64 %gepdiff1, i1 false) br label %for.inc144.i @@ -533,15 +521,6 @@ if.then.i.i.i.i.i: ; preds = %for.cond8.i275.i, % ehcleanup146.loopexit.i: ; preds = %_ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit.i.i.i %lpad.loopexit.i = landingpad { ptr, i32 } cleanup - br label %if.then.i.i.i.i343.i - -ehcleanup146.loopexit.split-lp.i: ; preds = %if.end.i.i.i.i.i.i - %lpad.loopexit.split-lp.i = landingpad { ptr, i32 } - cleanup - br label %if.then.i.i.i.i343.i - -if.then.i.i.i.i343.i: ; preds = %ehcleanup146.loopexit.i, %ehcleanup146.loopexit.split-lp.i - %lpad.phi.i = phi { ptr, i32 } [ %lpad.loopexit.i, %ehcleanup146.loopexit.i ], [ %lpad.loopexit.split-lp.i, %ehcleanup146.loopexit.split-lp.i ] tail call void @_ZdlPv(ptr noundef nonnull %cond.i.i.i.i.i66.i) #10 br label %if.then.i.i.i.i351.i @@ -550,9 +529,9 @@ if.then.i.i.i.i347.i: ; preds = %cleanup.i, %if.then tail call void @_ZdlPv(ptr noundef nonnull %bitmap.sroa.11.277.i) #10 br label %if.end -if.then.i.i.i.i351.i: ; preds = %if.then.i.i.i.i343.i, %ehcleanup155.thread.i - %.pn.pn.pn183.i = phi { ptr, i32 } [ %29, %ehcleanup155.thread.i ], [ %lpad.phi.i, %if.then.i.i.i.i343.i ] - %bitmap.sroa.11.3182.i = phi ptr [ %call5.i.i.i.i3.i.i5.i.i, %ehcleanup155.thread.i ], [ %bitmap.sroa.11.0144.i, %if.then.i.i.i.i343.i ] +if.then.i.i.i.i351.i: ; preds = %ehcleanup146.loopexit.i, %ehcleanup155.thread.i + %.pn.pn.pn183.i = phi { ptr, i32 } [ %29, %ehcleanup155.thread.i ], [ %lpad.loopexit.i, %ehcleanup146.loopexit.i ] + %bitmap.sroa.11.3182.i = phi ptr [ %call5.i.i.i.i3.i.i5.i.i, %ehcleanup155.thread.i ], [ %bitmap.sroa.11.0144.i, %ehcleanup146.loopexit.i ] tail call void @_ZdlPv(ptr noundef nonnull %bitmap.sroa.11.3182.i) #10 br label %common.resume @@ -761,7 +740,6 @@ invoke.cont21.i: ; preds = %if.then.i.i.i.i.i.i %conv.i50.i249.i = and i32 %mul.i.i5, 7 %cmp1244.i250.i = icmp eq i32 %conv.i50.i249.i, 0 %add.ptr.i.i.i252.i = getelementptr inbounds i8, ptr %add.ptr.i.i.i.i.i.i.i.i.i.i.i42, i64 -1 - %cmp.i.i.i.i.i.i45 = icmp slt i64 %sub.ptr.sub.i.i.i.i37, 0 %wide.trip.count141 = and i64 %sub.i234.i, 4294967295 %exitcond.i261.i = icmp eq i32 %conv.i50.i249.i, 1 %exitcond.i261.i.1 = icmp eq i32 %conv.i50.i249.i, 2 @@ -1026,19 +1004,9 @@ if.end129.i: ; preds = %for.body.i236.i, %f %sub.ptr.rhs.cast.i90.i.i50 = ptrtoint ptr %bitmap.sroa.11.0481.i to i64 %sub.ptr.sub.i91.i.i51 = sub i64 %sub.ptr.lhs.cast.i89.i.i49, %sub.ptr.rhs.cast.i90.i.i50 %cmp3.i.i52 = icmp ugt i64 %sub.ptr.sub.i.i.i.i37, %sub.ptr.sub.i91.i.i51 - br i1 %cmp3.i.i52, label %cond.true.i.i.i.i72, label %if.else.i.i53 + br i1 %cmp3.i.i52, label %_ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit.i.i.i73, label %if.else.i.i53 -cond.true.i.i.i.i72: ; preds = %if.end129.i - br i1 %cmp.i.i.i.i.i.i45, label %if.end.i.i.i.i.i.i79, label %_ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit.i.i.i73, !prof !22 - -if.end.i.i.i.i.i.i79: ; preds = %cond.true.i.i.i.i72 - invoke void @_ZSt17__throw_bad_allocv() #9 - to label %.noexc341.i unwind label %lpad130.loopexit.split-lp.i - -.noexc341.i: ; preds = %if.end.i.i.i.i.i.i79 - unreachable - -_ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit.i.i.i73: ; preds = %cond.true.i.i.i.i72 +_ZNSt12_Vector_baseIhSaIhEE11_M_allocateEm.exit.i.i.i73: ; preds = %if.end129.i %call5.i.i.i.i.i342.i = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %sub.ptr.sub.i.i.i.i37) #8 to label %if.then.i.i.i.i.i.i.i.i.i.i340.i unwind label %lpad130.loopexit.i @@ -1071,9 +1039,8 @@ _ZSt4copyIPhS0_ET0_T_S2_S1_.exit.i.i67: ; preds = %if.else49.i.i65 if.then.i.i.i.i.i.i.i.i.i.i68: ; preds = %_ZSt4copyIPhS0_ET0_T_S2_S1_.exit.i.i67, %if.else49.i.i65 %58 = phi ptr [ %bitmap.sroa.25.0480.i, %_ZSt4copyIPhS0_ET0_T_S2_S1_.exit.i.i67 ], [ %bitmap.sroa.11.0481.i, %if.else49.i.i65 ] - %sub.ptr.sub.i112.i.pre-phi506.i = phi i64 [ %sub.ptr.sub.i96.i.i55, %_ZSt4copyIPhS0_ET0_T_S2_S1_.exit.i.i67 ], [ 0, %if.else49.i.i65 ] - %add.ptr62.i.i69 = getelementptr inbounds i8, ptr %cond.i.i.i.i.i400.i, i64 %sub.ptr.sub.i112.i.pre-phi506.i - %gepdiff = sub i64 %sub.ptr.sub.i.i.i.i37, %sub.ptr.sub.i112.i.pre-phi506.i + %add.ptr62.i.i69 = getelementptr inbounds i8, ptr %cond.i.i.i.i.i400.i, i64 %sub.ptr.sub.i96.i.i55 + %gepdiff = sub i64 %sub.ptr.sub.i.i.i.i37, %sub.ptr.sub.i96.i.i55 call void @llvm.memmove.p0.p0.i64(ptr align 1 %58, ptr align 1 %add.ptr62.i.i69, i64 %gepdiff, i1 false) br label %for.inc132.i @@ -1090,11 +1057,6 @@ lpad130.loopexit.i: ; preds = %_ZNSt12_Vector_base cleanup br label %if.then.i.i.i.i326.i -lpad130.loopexit.split-lp.i: ; preds = %if.end.i.i.i.i.i.i79 - %lpad.loopexit.split-lp.i80 = landingpad { ptr, i32 } - cleanup - br label %if.then.i.i.i.i326.i - cleanup.i62: ; preds = %for.cond8.preheader.i246.i %tobool.not.i.i.i.i.i63 = icmp eq ptr %cond.i.i.i.i.i400.i, null br i1 %tobool.not.i.i.i.i.i63, label %if.then.i.i.i.i330.i, label %if.then.i.i.i.i.i64 @@ -1109,8 +1071,8 @@ ehcleanup134.i: ; preds = %lpad72.split.us.spl %tobool.not.i.i.i.i325.i = icmp eq ptr %cond.i.i.i.i.i400.i, null br i1 %tobool.not.i.i.i.i325.i, label %if.then.i.i.i.i334.i, label %if.then.i.i.i.i326.i -if.then.i.i.i.i326.i: ; preds = %lpad130.loopexit.i, %lpad130.loopexit.split-lp.i, %ehcleanup134.i - %.pn.pn.i10 = phi { ptr, i32 } [ %.pn.pn.i, %ehcleanup134.i ], [ %lpad.loopexit.split-lp.i80, %lpad130.loopexit.split-lp.i ], [ %lpad.loopexit.i74, %lpad130.loopexit.i ] +if.then.i.i.i.i326.i: ; preds = %lpad130.loopexit.i, %ehcleanup134.i + %.pn.pn.i10 = phi { ptr, i32 } [ %.pn.pn.i, %ehcleanup134.i ], [ %lpad.loopexit.i74, %lpad130.loopexit.i ] call void @_ZdlPv(ptr noundef nonnull %cond.i.i.i.i.i400.i) #10 br label %if.then.i.i.i.i334.i diff --git a/bench/minetest/optimized/mods.cpp.ll b/bench/minetest/optimized/mods.cpp.ll index bbf146fa0f7..c5ab3377ca0 100644 --- a/bench/minetest/optimized/mods.cpp.ll +++ b/bench/minetest/optimized/mods.cpp.ll @@ -10257,7 +10257,7 @@ lpad4.i.i.i.i: ; preds = %invoke.cont5.i.i.i. to label %common.resume unwind label %terminate.lpad.i.i.i.i common.resume: ; preds = %lpad90, %lpad4.i.i.i.i - %common.resume.op = phi { ptr, i32 } [ %5, %lpad4.i.i.i.i ], [ %20, %lpad90 ] + %common.resume.op = phi { ptr, i32 } [ %5, %lpad4.i.i.i.i ], [ %19, %lpad90 ] resume { ptr, i32 } %common.resume.op terminate.lpad.i.i.i.i: ; preds = %lpad4.i.i.i.i @@ -10280,7 +10280,12 @@ _ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIP7ModSpecSt6vectorIS %add.ptr50 = getelementptr inbounds %struct.ModSpec, ptr %8, i64 %sub store ptr %add.ptr50, ptr %_M_finish, align 8, !tbaa !176 %cmp.i.i.not18.i.i.i.i.i155 = icmp eq ptr %1, %__position.coerce - br i1 %cmp.i.i.not18.i.i.i.i.i155, label %_ZSt22__uninitialized_move_aIP7ModSpecS1_SaIS0_EET0_T_S4_S3_RT1_.exit163, label %for.body.i.i.i.i.i156 + br i1 %cmp.i.i.not18.i.i.i.i.i155, label %_ZSt22__uninitialized_move_aIP7ModSpecS1_SaIS0_EET0_T_S4_S3_RT1_.exit163.thread, label %for.body.i.i.i.i.i156 + +_ZSt22__uninitialized_move_aIP7ModSpecS1_SaIS0_EET0_T_S4_S3_RT1_.exit163.thread: ; preds = %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIP7ModSpecSt6vectorIS2_SaIS2_EEEES3_S2_ET0_T_S9_S8_RSaIT1_E.exit + %add.ptr583 = getelementptr inbounds i8, ptr %add.ptr50, i64 %sub.ptr.sub.i + store ptr %add.ptr583, ptr %_M_finish, align 8, !tbaa !176 + br label %if.end109 for.body.i.i.i.i.i156: ; preds = %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIP7ModSpecSt6vectorIS2_SaIS2_EEEES3_S2_ET0_T_S9_S8_RSaIT1_E.exit, %for.body.i.i.i.i.i156 %__cur.020.i.i.i.i.i157 = phi ptr [ %incdec.ptr.i.i.i.i.i160, %for.body.i.i.i.i.i156 ], [ %add.ptr50, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIP7ModSpecSt6vectorIS2_SaIS2_EEEES3_S2_ET0_T_S9_S8_RSaIT1_E.exit ] @@ -10289,15 +10294,11 @@ for.body.i.i.i.i.i156: ; preds = %_ZSt22__uninitializ %incdec.ptr.i.i.i.i.i.i159 = getelementptr inbounds i8, ptr %__first.sroa.0.019.i.i.i.i.i158, i64 416 %incdec.ptr.i.i.i.i.i160 = getelementptr inbounds i8, ptr %__cur.020.i.i.i.i.i157, i64 416 %cmp.i.i.not.i.i.i.i.i161 = icmp eq ptr %incdec.ptr.i.i.i.i.i.i159, %1 - br i1 %cmp.i.i.not.i.i.i.i.i161, label %_ZSt22__uninitialized_move_aIP7ModSpecS1_SaIS0_EET0_T_S4_S3_RT1_.exit163.loopexit, label %for.body.i.i.i.i.i156, !llvm.loop !233 + br i1 %cmp.i.i.not.i.i.i.i.i161, label %_ZSt22__uninitialized_move_aIP7ModSpecS1_SaIS0_EET0_T_S4_S3_RT1_.exit163, label %for.body.i.i.i.i.i156, !llvm.loop !233 -_ZSt22__uninitialized_move_aIP7ModSpecS1_SaIS0_EET0_T_S4_S3_RT1_.exit163.loopexit: ; preds = %for.body.i.i.i.i.i156 +_ZSt22__uninitialized_move_aIP7ModSpecS1_SaIS0_EET0_T_S4_S3_RT1_.exit163: ; preds = %for.body.i.i.i.i.i156 %.pre247 = load ptr, ptr %_M_finish, align 8, !tbaa !176 - br label %_ZSt22__uninitialized_move_aIP7ModSpecS1_SaIS0_EET0_T_S4_S3_RT1_.exit163 - -_ZSt22__uninitialized_move_aIP7ModSpecS1_SaIS0_EET0_T_S4_S3_RT1_.exit163: ; preds = %_ZSt22__uninitialized_move_aIP7ModSpecS1_SaIS0_EET0_T_S4_S3_RT1_.exit163.loopexit, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIP7ModSpecSt6vectorIS2_SaIS2_EEEES3_S2_ET0_T_S9_S8_RSaIT1_E.exit - %9 = phi ptr [ %.pre247, %_ZSt22__uninitialized_move_aIP7ModSpecS1_SaIS0_EET0_T_S4_S3_RT1_.exit163.loopexit ], [ %add.ptr50, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIP7ModSpecSt6vectorIS2_SaIS2_EEEES3_S2_ET0_T_S9_S8_RSaIT1_E.exit ] - %add.ptr58 = getelementptr inbounds i8, ptr %9, i64 %sub.ptr.sub.i + %add.ptr58 = getelementptr inbounds i8, ptr %.pre247, i64 %sub.ptr.sub.i store ptr %add.ptr58, ptr %_M_finish, align 8, !tbaa !176 %cmp7.i.i.i.i.i167 = icmp sgt i64 %sub.ptr.sub.i, 0 br i1 %cmp7.i.i.i.i.i167, label %for.body.preheader.i.i.i.i.i173, label %if.end109 @@ -10318,8 +10319,8 @@ for.body.i.i.i.i.i175: ; preds = %for.body.i.i.i.i.i1 br i1 %cmp.i.i.i.i.i183, label %for.body.i.i.i.i.i175, label %if.end109, !llvm.loop !235 if.else68: ; preds = %if.then - %10 = load ptr, ptr %this, align 8, !tbaa !178 - %sub.ptr.rhs.cast.i.i = ptrtoint ptr %10 to i64 + %9 = load ptr, ptr %this, align 8, !tbaa !178 + %sub.ptr.rhs.cast.i.i = ptrtoint ptr %9 to i64 %sub.ptr.sub.i.i = sub i64 %sub.ptr.rhs.cast, %sub.ptr.rhs.cast.i.i %sub.ptr.div.i.i = sdiv exact i64 %sub.ptr.sub.i.i, 416 %sub.i = sub nsw i64 22171567396285518, %sub.ptr.div.i.i @@ -10334,8 +10335,8 @@ _ZNKSt6vectorI7ModSpecSaIS0_EE12_M_check_lenEmPKc.exit: ; preds = %if.else68 %.sroa.speculated.i = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i, i64 %sub.ptr.div.i.i.i) %add.i = add nsw i64 %.sroa.speculated.i, %sub.ptr.div.i.i %cmp7.i = icmp ult i64 %add.i, %sub.ptr.div.i.i - %11 = tail call i64 @llvm.umin.i64(i64 %add.i, i64 22171567396285518) - %cond.i = select i1 %cmp7.i, i64 22171567396285518, i64 %11 + %10 = tail call i64 @llvm.umin.i64(i64 %add.i, i64 22171567396285518) + %cond.i = select i1 %cmp7.i, i64 22171567396285518, i64 %10 %cmp.not.i = icmp eq i64 %cond.i, 0 br i1 %cmp.not.i, label %_ZNSt12_Vector_baseI7ModSpecSaIS0_EE11_M_allocateEm.exit, label %cond.true.i @@ -10346,12 +10347,12 @@ cond.true.i: ; preds = %_ZNKSt6vectorI7ModS _ZNSt12_Vector_baseI7ModSpecSaIS0_EE11_M_allocateEm.exit: ; preds = %cond.true.i, %_ZNKSt6vectorI7ModSpecSaIS0_EE12_M_check_lenEmPKc.exit %cond.i186 = phi ptr [ %call5.i.i.i, %cond.true.i ], [ null, %_ZNKSt6vectorI7ModSpecSaIS0_EE12_M_check_lenEmPKc.exit ] - %cmp.i.i.not18.i.i.i.i.i187 = icmp eq ptr %10, %__position.coerce + %cmp.i.i.not18.i.i.i.i.i187 = icmp eq ptr %9, %__position.coerce br i1 %cmp.i.i.not18.i.i.i.i.i187, label %for.body.i.i.i.i196.preheader, label %for.body.i.i.i.i.i188 for.body.i.i.i.i.i188: ; preds = %_ZNSt12_Vector_baseI7ModSpecSaIS0_EE11_M_allocateEm.exit, %for.body.i.i.i.i.i188 %__cur.020.i.i.i.i.i189 = phi ptr [ %incdec.ptr.i.i.i.i.i192, %for.body.i.i.i.i.i188 ], [ %cond.i186, %_ZNSt12_Vector_baseI7ModSpecSaIS0_EE11_M_allocateEm.exit ] - %__first.sroa.0.019.i.i.i.i.i190 = phi ptr [ %incdec.ptr.i.i.i.i.i.i191, %for.body.i.i.i.i.i188 ], [ %10, %_ZNSt12_Vector_baseI7ModSpecSaIS0_EE11_M_allocateEm.exit ] + %__first.sroa.0.019.i.i.i.i.i190 = phi ptr [ %incdec.ptr.i.i.i.i.i.i191, %for.body.i.i.i.i.i188 ], [ %9, %_ZNSt12_Vector_baseI7ModSpecSaIS0_EE11_M_allocateEm.exit ] tail call void @_ZN7ModSpecC2EOS_(ptr noundef nonnull align 8 dereferenceable(416) %__cur.020.i.i.i.i.i189, ptr noundef nonnull align 8 dereferenceable(416) %__first.sroa.0.019.i.i.i.i.i190) #24 %incdec.ptr.i.i.i.i.i.i191 = getelementptr inbounds i8, ptr %__first.sroa.0.019.i.i.i.i.i190, i64 416 %incdec.ptr.i.i.i.i.i192 = getelementptr inbounds i8, ptr %__cur.020.i.i.i.i.i189, i64 416 @@ -10375,10 +10376,10 @@ for.inc.i.i.i.i210: ; preds = %for.body.i.i.i.i196 br i1 %cmp.i.not.i.i.i.i213, label %invoke.cont83, label %for.body.i.i.i.i196, !llvm.loop !236 lpad.i.i.i.i199: ; preds = %for.body.i.i.i.i196 - %12 = landingpad { ptr, i32 } + %11 = landingpad { ptr, i32 } catch ptr null - %13 = extractvalue { ptr, i32 } %12, 0 - %14 = tail call ptr @__cxa_begin_catch(ptr %13) #24 + %12 = extractvalue { ptr, i32 } %11, 0 + %13 = tail call ptr @__cxa_begin_catch(ptr %12) #24 %cmp.not3.i.i.i.i.i.i200 = icmp eq ptr %__cur.018.i.i.i.i197, %__cur.0.lcssa.i.i.i.i.i194 br i1 %cmp.not3.i.i.i.i.i.i200, label %invoke.cont5.i.i.i.i205, label %for.body.i.i.i.i.i.i201 @@ -10394,16 +10395,16 @@ invoke.cont5.i.i.i.i205: ; preds = %for.body.i.i.i.i.i. to label %unreachable.i.i.i.i209 unwind label %lpad4.i.i.i.i206 lpad4.i.i.i.i206: ; preds = %invoke.cont5.i.i.i.i205 - %15 = landingpad { ptr, i32 } + %14 = landingpad { ptr, i32 } catch ptr null invoke void @__cxa_end_catch() to label %lpad.body unwind label %terminate.lpad.i.i.i.i207 terminate.lpad.i.i.i.i207: ; preds = %lpad4.i.i.i.i206 - %16 = landingpad { ptr, i32 } + %15 = landingpad { ptr, i32 } catch ptr null - %17 = extractvalue { ptr, i32 } %16, 0 - tail call void @__clang_call_terminate(ptr %17) #27 + %16 = extractvalue { ptr, i32 } %15, 0 + tail call void @__clang_call_terminate(ptr %16) #27 unreachable unreachable.i.i.i.i209: ; preds = %invoke.cont5.i.i.i.i205 @@ -10424,22 +10425,22 @@ for.body.i.i.i.i.i217: ; preds = %invoke.cont83, %for invoke.cont87: ; preds = %for.body.i.i.i.i.i217, %invoke.cont83 %__cur.0.lcssa.i.i.i.i.i223 = phi ptr [ %incdec.ptr.i.i.i.i212, %invoke.cont83 ], [ %incdec.ptr.i.i.i.i.i221, %for.body.i.i.i.i.i217 ] - %cmp.not3.i.i.i = icmp eq ptr %10, %1 + %cmp.not3.i.i.i = icmp eq ptr %9, %1 br i1 %cmp.not3.i.i.i, label %_ZSt8_DestroyIP7ModSpecS0_EvT_S2_RSaIT0_E.exit, label %for.body.i.i.i for.body.i.i.i: ; preds = %invoke.cont87, %for.body.i.i.i - %__first.addr.04.i.i.i = phi ptr [ %incdec.ptr.i.i.i225, %for.body.i.i.i ], [ %10, %invoke.cont87 ] + %__first.addr.04.i.i.i = phi ptr [ %incdec.ptr.i.i.i225, %for.body.i.i.i ], [ %9, %invoke.cont87 ] tail call void @_ZN7ModSpecD2Ev(ptr noundef nonnull align 8 dereferenceable(416) %__first.addr.04.i.i.i) #24 %incdec.ptr.i.i.i225 = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i, i64 416 %cmp.not.i.i.i = icmp eq ptr %incdec.ptr.i.i.i225, %1 br i1 %cmp.not.i.i.i, label %_ZSt8_DestroyIP7ModSpecS0_EvT_S2_RSaIT0_E.exit, label %for.body.i.i.i, !llvm.loop !179 _ZSt8_DestroyIP7ModSpecS0_EvT_S2_RSaIT0_E.exit: ; preds = %for.body.i.i.i, %invoke.cont87 - %tobool.not.i = icmp eq ptr %10, null + %tobool.not.i = icmp eq ptr %9, null br i1 %tobool.not.i, label %_ZNSt12_Vector_baseI7ModSpecSaIS0_EE13_M_deallocateEPS0_m.exit, label %if.then.i226 if.then.i226: ; preds = %_ZSt8_DestroyIP7ModSpecS0_EvT_S2_RSaIT0_E.exit - tail call void @_ZdlPv(ptr noundef nonnull %10) #26 + tail call void @_ZdlPv(ptr noundef nonnull %9) #26 br label %_ZNSt12_Vector_baseI7ModSpecSaIS0_EE13_M_deallocateEPS0_m.exit _ZNSt12_Vector_baseI7ModSpecSaIS0_EE13_M_deallocateEPS0_m.exit: ; preds = %if.then.i226, %_ZSt8_DestroyIP7ModSpecS0_EvT_S2_RSaIT0_E.exit @@ -10450,8 +10451,8 @@ _ZNSt12_Vector_baseI7ModSpecSaIS0_EE13_M_deallocateEPS0_m.exit: ; preds = %if.th br label %if.end109 lpad.body: ; preds = %lpad4.i.i.i.i206 - %18 = extractvalue { ptr, i32 } %15, 0 - %19 = tail call ptr @__cxa_begin_catch(ptr %18) #24 + %17 = extractvalue { ptr, i32 } %14, 0 + %18 = tail call ptr @__cxa_begin_catch(ptr %17) #24 %cmp.not3.i.i.i227 = icmp eq ptr %cond.i186, %__cur.0.lcssa.i.i.i.i.i194 br i1 %cmp.not3.i.i.i227, label %invoke.cont91, label %for.body.i.i.i228 @@ -10475,19 +10476,19 @@ invoke.cont92: ; preds = %if.then.i234, %invo to label %unreachable unwind label %lpad90 lpad90: ; preds = %invoke.cont92 - %20 = landingpad { ptr, i32 } + %19 = landingpad { ptr, i32 } cleanup invoke void @__cxa_end_catch() to label %common.resume unwind label %terminate.lpad -if.end109: ; preds = %for.body.i.i.i.i.i175, %for.body.i.i.i.i.i147, %_ZNSt12_Vector_baseI7ModSpecSaIS0_EE13_M_deallocateEPS0_m.exit, %_ZSt22__uninitialized_move_aIP7ModSpecS1_SaIS0_EET0_T_S4_S3_RT1_.exit163, %_ZSt13move_backwardIP7ModSpecS1_ET0_T_S3_S2_.exit, %entry +if.end109: ; preds = %for.body.i.i.i.i.i175, %for.body.i.i.i.i.i147, %_ZSt22__uninitialized_move_aIP7ModSpecS1_SaIS0_EET0_T_S4_S3_RT1_.exit163.thread, %_ZNSt12_Vector_baseI7ModSpecSaIS0_EE13_M_deallocateEPS0_m.exit, %_ZSt22__uninitialized_move_aIP7ModSpecS1_SaIS0_EET0_T_S4_S3_RT1_.exit163, %_ZSt13move_backwardIP7ModSpecS1_ET0_T_S3_S2_.exit, %entry ret void terminate.lpad: ; preds = %lpad90 - %21 = landingpad { ptr, i32 } + %20 = landingpad { ptr, i32 } catch ptr null - %22 = extractvalue { ptr, i32 } %21, 0 - tail call void @__clang_call_terminate(ptr %22) #27 + %21 = extractvalue { ptr, i32 } %20, 0 + tail call void @__clang_call_terminate(ptr %21) #27 unreachable unreachable: ; preds = %invoke.cont92 diff --git a/bench/minetest/optimized/sound_data.cpp.ll b/bench/minetest/optimized/sound_data.cpp.ll index f66e7c2f0b0..3e93b8c2e57 100644 --- a/bench/minetest/optimized/sound_data.cpp.ll +++ b/bench/minetest/optimized/sound_data.cpp.ll @@ -2763,7 +2763,12 @@ for.body.i.i.i.i: ; preds = %_ZSt7advanceISt13mo _ZSt22__uninitialized_copy_aISt13move_iteratorIN9__gnu_cxx17__normal_iteratorIPN5sound19SoundDataOpenStream16SoundBufferUntilESt6vectorIS5_SaIS5_EEEEES6_S5_ET0_T_SD_SC_RSaIT1_E.exit: ; preds = %for.body.i.i.i.i, %_ZSt7advanceISt13move_iteratorIN9__gnu_cxx17__normal_iteratorIPN5sound19SoundDataOpenStream16SoundBufferUntilESt6vectorIS5_SaIS5_EEEEEmEvRT_T0_.exit %cmp.i.i.not18.i.i.i.i.i169 = icmp eq ptr %1, %__position.coerce - br i1 %cmp.i.i.not18.i.i.i.i.i169, label %_ZSt22__uninitialized_move_aIPN5sound19SoundDataOpenStream16SoundBufferUntilES3_SaIS2_EET0_T_S6_S5_RT1_.exit179, label %for.body.i.i.i.i.i170.preheader + br i1 %cmp.i.i.not18.i.i.i.i.i169, label %_ZSt22__uninitialized_move_aIPN5sound19SoundDataOpenStream16SoundBufferUntilES3_SaIS2_EET0_T_S6_S5_RT1_.exit179.thread, label %for.body.i.i.i.i.i170.preheader + +_ZSt22__uninitialized_move_aIPN5sound19SoundDataOpenStream16SoundBufferUntilES3_SaIS2_EET0_T_S6_S5_RT1_.exit179.thread: ; preds = %_ZSt22__uninitialized_copy_aISt13move_iteratorIN9__gnu_cxx17__normal_iteratorIPN5sound19SoundDataOpenStream16SoundBufferUntilESt6vectorIS5_SaIS5_EEEEES6_S5_ET0_T_SD_SC_RSaIT1_E.exit + %add.ptr663 = getelementptr inbounds i8, ptr %1, i64 %sub.ptr.sub.i.i.i.i + store ptr %add.ptr663, ptr %_M_finish, align 8, !tbaa !116 + br label %if.end121 for.body.i.i.i.i.i170.preheader: ; preds = %_ZSt22__uninitialized_copy_aISt13move_iteratorIN9__gnu_cxx17__normal_iteratorIPN5sound19SoundDataOpenStream16SoundBufferUntilESt6vectorIS5_SaIS5_EEEEES6_S5_ET0_T_SD_SC_RSaIT1_E.exit %sub = sub nsw i64 %sub.ptr.div.i.i.i.i, %sub.ptr.div.i @@ -2785,7 +2790,7 @@ for.body.i.i.i.i.i170: ; preds = %for.body.i.i.i.i.i1 %cmp.i.i.not.i.i.i.i.i177 = icmp eq ptr %incdec.ptr.i.i.i.i.i.i175, %1 br i1 %cmp.i.i.not.i.i.i.i.i177, label %_ZSt22__uninitialized_move_aIPN5sound19SoundDataOpenStream16SoundBufferUntilES3_SaIS2_EET0_T_S6_S5_RT1_.exit179, label %for.body.i.i.i.i.i170, !llvm.loop !149 -_ZSt22__uninitialized_move_aIPN5sound19SoundDataOpenStream16SoundBufferUntilES3_SaIS2_EET0_T_S6_S5_RT1_.exit179: ; preds = %for.body.i.i.i.i.i170, %_ZSt22__uninitialized_copy_aISt13move_iteratorIN9__gnu_cxx17__normal_iteratorIPN5sound19SoundDataOpenStream16SoundBufferUntilESt6vectorIS5_SaIS5_EEEEES6_S5_ET0_T_SD_SC_RSaIT1_E.exit +_ZSt22__uninitialized_move_aIPN5sound19SoundDataOpenStream16SoundBufferUntilES3_SaIS2_EET0_T_S6_S5_RT1_.exit179: ; preds = %for.body.i.i.i.i.i170 %add.ptr66 = getelementptr inbounds i8, ptr %1, i64 %sub.ptr.sub.i.i.i.i store ptr %add.ptr66, ptr %_M_finish, align 8, !tbaa !116 %cmp7.i.i.i.i.i184 = icmp sgt i64 %sub.ptr.div.i, 0 @@ -2919,7 +2924,7 @@ _ZNSt12_Vector_baseIN5sound19SoundDataOpenStream16SoundBufferUntilESaIS2_EE13_M_ store ptr %add.ptr117, ptr %_M_end_of_storage, align 8, !tbaa !118 br label %if.end121 -if.end121: ; preds = %for.body.i.i.i.i.i190, %for.body.i.i.i.i.i156, %_ZNSt12_Vector_baseIN5sound19SoundDataOpenStream16SoundBufferUntilESaIS2_EE13_M_deallocateEPS2_m.exit, %_ZSt22__uninitialized_move_aIPN5sound19SoundDataOpenStream16SoundBufferUntilES3_SaIS2_EET0_T_S6_S5_RT1_.exit179, %_ZSt13move_backwardIPN5sound19SoundDataOpenStream16SoundBufferUntilES3_ET0_T_S5_S4_.exit, %entry +if.end121: ; preds = %for.body.i.i.i.i.i190, %for.body.i.i.i.i.i156, %_ZSt22__uninitialized_move_aIPN5sound19SoundDataOpenStream16SoundBufferUntilES3_SaIS2_EET0_T_S6_S5_RT1_.exit179.thread, %_ZNSt12_Vector_baseIN5sound19SoundDataOpenStream16SoundBufferUntilESaIS2_EE13_M_deallocateEPS2_m.exit, %_ZSt22__uninitialized_move_aIPN5sound19SoundDataOpenStream16SoundBufferUntilES3_SaIS2_EET0_T_S6_S5_RT1_.exit179, %_ZSt13move_backwardIPN5sound19SoundDataOpenStream16SoundBufferUntilES3_ET0_T_S5_S4_.exit, %entry ret void } diff --git a/bench/mitsuba3/optimized/bitmap.cpp.ll b/bench/mitsuba3/optimized/bitmap.cpp.ll index 3ad4e243978..074202d3480 100644 --- a/bench/mitsuba3/optimized/bitmap.cpp.ll +++ b/bench/mitsuba3/optimized/bitmap.cpp.ll @@ -18719,7 +18719,7 @@ _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEaSB8ne190000EOS5_ %145 = sub i64 %143, %144 %146 = sdiv exact i64 %145, 24 %147 = icmp ult i64 %141, %146 - br i1 %147, label %111, label %._crit_edge, !llvm.loop !234 + br i1 %147, label %111, label %._crit_edge.loopexit, !llvm.loop !234 .loopexit: ; preds = %111 %lpad.loopexit = landingpad { ptr, i32 } @@ -18736,12 +18736,15 @@ _ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEaSB8ne190000EOS5_ call void @_ZNSt3__16vectorINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS4_IS6_EEED2B8ne190000Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #37 br label %.body -._crit_edge: ; preds = %_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEaSB8ne190000EOS5_.exit, %108 - %.lcssa = phi i64 [ %87, %108 ], [ %146, %_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEaSB8ne190000EOS5_.exit ] - %149 = load ptr, ptr %5, align 8 - %150 = load ptr, ptr %6, align 8 - %151 = trunc i64 %.lcssa to i32 - invoke void @png_set_text(ptr noundef %149, ptr noundef %150, ptr noundef nonnull %107, i32 noundef %151) +._crit_edge.loopexit: ; preds = %_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEaSB8ne190000EOS5_.exit + %149 = trunc i64 %146 to i32 + br label %._crit_edge + +._crit_edge: ; preds = %._crit_edge.loopexit, %108 + %.lcssa = phi i32 [ 0, %108 ], [ %149, %._crit_edge.loopexit ] + %150 = load ptr, ptr %5, align 8 + %151 = load ptr, ptr %6, align 8 + invoke void @png_set_text(ptr noundef %150, ptr noundef %151, ptr noundef nonnull %107, i32 noundef %.lcssa) to label %152 unwind label %.loopexit.split-lp 152: ; preds = %._crit_edge diff --git a/bench/msdfgen/optimized/Shape.cpp.ll b/bench/msdfgen/optimized/Shape.cpp.ll index d847375d39a..1cf04f48961 100644 --- a/bench/msdfgen/optimized/Shape.cpp.ll +++ b/bench/msdfgen/optimized/Shape.cpp.ll @@ -894,29 +894,24 @@ if.then.i.i: ; preds = %entry _ZNSt6vectorIiSaIiEE17_S_check_init_lenEmRKS0_.exit.i: ; preds = %entry %cmp.not.i.i.i.i = icmp eq ptr %0, %1 - br i1 %cmp.not.i.i.i.i, label %invoke.cont, label %if.then.i.i.i.i.i + br i1 %cmp.not.i.i.i.i, label %_ZNSt6vectorIiSaIiEED2Ev.exit126, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %_ZNSt6vectorIiSaIiEE17_S_check_init_lenEmRKS0_.exit.i %mul.i.i.i.i.i.i = shl nuw nsw i64 %sub.ptr.div.i, 2 %call5.i.i.i.i2.i.i55 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %mul.i.i.i.i.i.i) #23 store i32 0, ptr %call5.i.i.i.i2.i.i55, align 4 %cmp.i.i.i.i.i.i.i = icmp eq i64 %sub.ptr.sub.i, 24 - br i1 %cmp.i.i.i.i.i.i.i, label %for.body.preheader, label %if.end.i.i.i.i.i.i.i + br i1 %cmp.i.i.i.i.i.i.i, label %for.body.preheader, label %invoke.cont -if.end.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i +invoke.cont: ; preds = %if.then.i.i.i.i.i %incdec.ptr.i.i.i.i.i = getelementptr i8, ptr %call5.i.i.i.i2.i.i55, i64 4 %2 = add nsw i64 %mul.i.i.i.i.i.i, -4 tail call void @llvm.memset.p0.i64(ptr align 4 %incdec.ptr.i.i.i.i.i, i8 0, i64 %2, i1 false) - br label %invoke.cont - -invoke.cont: ; preds = %if.end.i.i.i.i.i.i.i, %_ZNSt6vectorIiSaIiEE17_S_check_init_lenEmRKS0_.exit.i - %orientations.sroa.0.0 = phi ptr [ %call5.i.i.i.i2.i.i55, %if.end.i.i.i.i.i.i.i ], [ null, %_ZNSt6vectorIiSaIiEE17_S_check_init_lenEmRKS0_.exit.i ] %conv241 = trunc i64 %sub.ptr.div.i to i32 %cmp242 = icmp sgt i32 %conv241, 0 - br i1 %cmp242, label %for.body.preheader, label %_ZNSt6vectorIZN7msdfgen5Shape14orientContoursEvE12IntersectionSaIS2_EED2Ev.exit123 + br i1 %cmp242, label %for.body.preheader, label %if.then.i.i.i125 for.body.preheader: ; preds = %if.then.i.i.i.i.i, %invoke.cont - %orientations.sroa.0.0298 = phi ptr [ %orientations.sroa.0.0, %invoke.cont ], [ %call5.i.i.i.i2.i.i55, %if.then.i.i.i.i.i ] br label %for.body for.cond195.preheader: ; preds = %for.inc191 @@ -925,12 +920,12 @@ for.cond195.preheader: ; preds = %for.inc191 br i1 %3, label %for.body200, label %for.end212 for.body: ; preds = %for.body.preheader, %for.inc191 - %indvars.iv283 = phi i64 [ 0, %for.body.preheader ], [ %indvars.iv.next284, %for.inc191 ] - %4 = phi ptr [ %1, %for.body.preheader ], [ %54, %for.inc191 ] - %intersections.sroa.0.0245 = phi ptr [ null, %for.body.preheader ], [ %intersections.sroa.0.5, %for.inc191 ] - %intersections.sroa.18.0244 = phi ptr [ null, %for.body.preheader ], [ %intersections.sroa.18.4, %for.inc191 ] - %intersections.sroa.28.0243 = phi ptr [ null, %for.body.preheader ], [ %intersections.sroa.28.4, %for.inc191 ] - %add.ptr.i = getelementptr inbounds i32, ptr %orientations.sroa.0.0298, i64 %indvars.iv283 + %indvars.iv283 = phi i64 [ %indvars.iv.next284, %for.inc191 ], [ 0, %for.body.preheader ] + %4 = phi ptr [ %54, %for.inc191 ], [ %1, %for.body.preheader ] + %intersections.sroa.0.0245 = phi ptr [ %intersections.sroa.0.5, %for.inc191 ], [ null, %for.body.preheader ] + %intersections.sroa.18.0244 = phi ptr [ %intersections.sroa.18.4, %for.inc191 ], [ null, %for.body.preheader ] + %intersections.sroa.28.0243 = phi ptr [ %intersections.sroa.28.4, %for.inc191 ], [ null, %for.body.preheader ] + %add.ptr.i = getelementptr inbounds i32, ptr %call5.i.i.i.i2.i.i55, i64 %indvars.iv283 %5 = load i32, ptr %add.ptr.i, align 4 %tobool.not = icmp eq i32 %5, 0 br i1 %tobool.not, label %land.lhs.true, label %for.inc191 @@ -1030,19 +1025,15 @@ lpad17: ; preds = %lpad17.loopexit.spl %intersections.sroa.0.1 = phi ptr [ %intersections.sroa.0.5, %lpad17.loopexit ], [ %intersections.sroa.0.4205, %lpad17.loopexit.split-lp.loopexit ], [ %intersections.sroa.0.3215, %lpad17.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %intersections.sroa.0.0245, %lpad17.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %intersections.sroa.0.0245, %lpad17.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %intersections.sroa.0.1.ph.ph.ph.ph.ph.ph, %lpad17.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %intersections.sroa.0.4205, %lpad17.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ] %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %lpad17.loopexit ], [ %lpad.loopexit145, %lpad17.loopexit.split-lp.loopexit ], [ %lpad.loopexit148, %lpad17.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit150, %lpad17.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit153, %lpad17.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit155, %lpad17.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp156, %lpad17.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ] %tobool.not.i.i.i = icmp eq ptr %intersections.sroa.0.1, null - br i1 %tobool.not.i.i.i, label %_ZNSt6vectorIZN7msdfgen5Shape14orientContoursEvE12IntersectionSaIS2_EED2Ev.exit, label %if.then.i.i.i + br i1 %tobool.not.i.i.i, label %if.then.i.i.i68, label %if.then.i.i.i if.then.i.i.i: ; preds = %lpad17 call void @_ZdlPv(ptr noundef nonnull %intersections.sroa.0.1) #21 - br label %_ZNSt6vectorIZN7msdfgen5Shape14orientContoursEvE12IntersectionSaIS2_EED2Ev.exit + br label %if.then.i.i.i68 -_ZNSt6vectorIZN7msdfgen5Shape14orientContoursEvE12IntersectionSaIS2_EED2Ev.exit: ; preds = %lpad17, %if.then.i.i.i - %tobool.not.i.i.i67 = icmp eq ptr %orientations.sroa.0.0298, null - br i1 %tobool.not.i.i.i67, label %eh.resume, label %if.then.i.i.i68 - -if.then.i.i.i68: ; preds = %_ZNSt6vectorIZN7msdfgen5Shape14orientContoursEvE12IntersectionSaIS2_EED2Ev.exit - call void @_ZdlPv(ptr noundef nonnull %orientations.sroa.0.0298) #21 - br label %eh.resume +if.then.i.i.i68: ; preds = %if.then.i.i.i, %lpad17 + call void @_ZdlPv(ptr noundef nonnull %call5.i.i.i.i2.i.i55) #21 + resume { ptr, i32 } %lpad.phi for.end.loopexit: ; preds = %invoke.cont45 %.pre = load ptr, ptr %add.ptr.i65, align 8 @@ -1329,7 +1320,7 @@ if.then172: ; preds = %for.body167 %contourIndex182 = getelementptr inbounds i8, ptr %add.ptr.i109, i64 12 %51 = load i32, ptr %contourIndex182, align 4 %conv183 = sext i32 %51 to i64 - %add.ptr.i112 = getelementptr inbounds i32, ptr %orientations.sroa.0.0298, i64 %conv183 + %add.ptr.i112 = getelementptr inbounds i32, ptr %call5.i.i.i.i2.i.i55, i64 %conv183 %52 = load i32, ptr %add.ptr.i112, align 4 %add = add nsw i32 %sub179, %52 store i32 %add, ptr %add.ptr.i112, align 4 @@ -1360,7 +1351,7 @@ for.body200: ; preds = %for.cond195.prehead %56 = phi ptr [ %59, %for.inc210 ], [ %54, %for.cond195.preheader ] %57 = phi ptr [ %60, %for.inc210 ], [ %53, %for.cond195.preheader ] %indvars.iv286 = phi i64 [ %indvars.iv.next287, %for.inc210 ], [ 0, %for.cond195.preheader ] - %add.ptr.i119 = getelementptr inbounds i32, ptr %orientations.sroa.0.0298, i64 %indvars.iv286 + %add.ptr.i119 = getelementptr inbounds i32, ptr %call5.i.i.i.i2.i.i55, i64 %indvars.iv286 %58 = load i32, ptr %add.ptr.i119, align 4 %cmp203 = icmp slt i32 %58, 0 br i1 %cmp203, label %if.then204, label %for.inc210 @@ -1390,26 +1381,18 @@ for.inc210: ; preds = %if.then204.for.inc2 for.end212: ; preds = %for.inc210, %for.cond195.preheader %tobool.not.i.i.i121 = icmp eq ptr %intersections.sroa.0.5, null - br i1 %tobool.not.i.i.i121, label %_ZNSt6vectorIZN7msdfgen5Shape14orientContoursEvE12IntersectionSaIS2_EED2Ev.exit123, label %if.then.i.i.i122 + br i1 %tobool.not.i.i.i121, label %if.then.i.i.i125, label %if.then.i.i.i122 if.then.i.i.i122: ; preds = %for.end212 call void @_ZdlPv(ptr noundef nonnull %intersections.sroa.0.5) #21 - br label %_ZNSt6vectorIZN7msdfgen5Shape14orientContoursEvE12IntersectionSaIS2_EED2Ev.exit123 - -_ZNSt6vectorIZN7msdfgen5Shape14orientContoursEvE12IntersectionSaIS2_EED2Ev.exit123: ; preds = %invoke.cont, %for.end212, %if.then.i.i.i122 - %orientations.sroa.0.0300304309 = phi ptr [ %orientations.sroa.0.0298, %for.end212 ], [ %orientations.sroa.0.0298, %if.then.i.i.i122 ], [ %orientations.sroa.0.0, %invoke.cont ] - %tobool.not.i.i.i124 = icmp eq ptr %orientations.sroa.0.0300304309, null - br i1 %tobool.not.i.i.i124, label %_ZNSt6vectorIiSaIiEED2Ev.exit126, label %if.then.i.i.i125 + br label %if.then.i.i.i125 -if.then.i.i.i125: ; preds = %_ZNSt6vectorIZN7msdfgen5Shape14orientContoursEvE12IntersectionSaIS2_EED2Ev.exit123 - call void @_ZdlPv(ptr noundef nonnull %orientations.sroa.0.0300304309) #21 +if.then.i.i.i125: ; preds = %if.then.i.i.i122, %for.end212, %invoke.cont + call void @_ZdlPv(ptr noundef nonnull %call5.i.i.i.i2.i.i55) #21 br label %_ZNSt6vectorIiSaIiEED2Ev.exit126 -_ZNSt6vectorIiSaIiEED2Ev.exit126: ; preds = %_ZNSt6vectorIZN7msdfgen5Shape14orientContoursEvE12IntersectionSaIS2_EED2Ev.exit123, %if.then.i.i.i125 +_ZNSt6vectorIiSaIiEED2Ev.exit126: ; preds = %_ZNSt6vectorIiSaIiEE17_S_check_init_lenEmRKS0_.exit.i, %if.then.i.i.i125 ret void - -eh.resume: ; preds = %if.then.i.i.i68, %_ZNSt6vectorIZN7msdfgen5Shape14orientContoursEvE12IntersectionSaIS2_EED2Ev.exit - resume { ptr, i32 } %lpad.phi } ; Function Attrs: nofree diff --git a/bench/msgpack/optimized/speed_test.cpp.ll b/bench/msgpack/optimized/speed_test.cpp.ll index e261105a64c..5560325926d 100644 --- a/bench/msgpack/optimized/speed_test.cpp.ll +++ b/bench/msgpack/optimized/speed_test.cpp.ll @@ -9135,10 +9135,8 @@ define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ 36: ; preds = %32 %37 = getelementptr inbounds i8, ptr %25, i64 %4 %38 = getelementptr inbounds i8, ptr %25, i64 %2 - switch i64 %27, label %41 [ - i64 1, label %39 - i64 0, label %42 - ] + %cond = icmp eq i64 %27, 1 + br i1 %cond, label %39, label %41 39: ; preds = %36 %40 = load i8, ptr %38, align 1, !tbaa !22 @@ -9149,7 +9147,7 @@ define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %37, ptr align 1 %38, i64 %27, i1 false) br label %42 -42: ; preds = %41, %39, %36, %32 +42: ; preds = %41, %39, %32 switch i64 %4, label %45 [ i64 0, label %102 i64 1, label %43 @@ -9192,10 +9190,8 @@ define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ 59: ; preds = %55 %60 = getelementptr inbounds i8, ptr %25, i64 %4 %61 = getelementptr inbounds i8, ptr %25, i64 %2 - switch i64 %27, label %64 [ - i64 1, label %62 - i64 0, label %65 - ] + %cond4 = icmp eq i64 %27, 1 + br i1 %cond4, label %62, label %64 62: ; preds = %59 %63 = load i8, ptr %61, align 1, !tbaa !22 @@ -9206,7 +9202,7 @@ define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %60, ptr align 1 %61, i64 %27, i1 false) br label %65 -65: ; preds = %64, %62, %59, %55 +65: ; preds = %64, %62, %55 br i1 %47, label %66, label %102 66: ; preds = %65 @@ -9394,10 +9390,8 @@ define linkonce_odr dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traits %53 = getelementptr inbounds i8, ptr %52, i64 %4 %54 = getelementptr inbounds i8, ptr %12, i64 %1 %55 = getelementptr inbounds i8, ptr %54, i64 %2 - switch i64 %9, label %58 [ - i64 1, label %56 - i64 0, label %59 - ] + %cond = icmp eq i64 %9, 1 + br i1 %cond, label %56, label %58 56: ; preds = %51 %57 = load i8, ptr %55, align 1, !tbaa !22 @@ -9408,7 +9402,7 @@ define linkonce_odr dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traits tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %53, ptr align 1 %55, i64 %9, i1 false) br label %59 -59: ; preds = %58, %56, %51, %49 +59: ; preds = %58, %56, %49 br i1 %14, label %60, label %62 60: ; preds = %59 diff --git a/bench/nlohmann_json/optimized/unit-custom-base-class.cpp.ll b/bench/nlohmann_json/optimized/unit-custom-base-class.cpp.ll index 7c5187edddb..148f95a3c72 100644 --- a/bench/nlohmann_json/optimized/unit-custom-base-class.cpp.ll +++ b/bench/nlohmann_json/optimized/unit-custom-base-class.cpp.ll @@ -7147,21 +7147,18 @@ if.then.i138.cont: ; preds = %if.then.i138.invoke if.end.i: ; preds = %if.then19 %_M_end_of_storage.i.i = getelementptr inbounds i8, ptr %stack, i64 16 %cmp3.i.not = icmp eq ptr %5, %6 - br i1 %cmp3.i.not, label %invoke.cont25, label %_ZNSt12_Vector_baseIN8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS1_14adl_serializerES4_IhSaIhEE13json_metadataIiEEESaISG_EE11_M_allocateEm.exit.i + br i1 %cmp3.i.not, label %if.end44, label %_ZNSt12_Vector_baseIN8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS1_14adl_serializerES4_IhSaIhEE13json_metadataIiEEESaISG_EE11_M_allocateEm.exit.i _ZNSt12_Vector_baseIN8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS1_14adl_serializerES4_IhSaIhEE13json_metadataIiEEESaISG_EE11_M_allocateEm.exit.i: ; preds = %if.end.i %call5.i.i.i.i139 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %sub.ptr.sub.i) #26 - to label %_ZNSt12_Vector_baseIN8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS1_14adl_serializerES4_IhSaIhEE13json_metadataIiEEESaISG_EE13_M_deallocateEPSG_m.exit.i unwind label %lpad.loopexit.split-lp91.loopexit.split-lp + to label %invoke.cont25 unwind label %lpad.loopexit.split-lp91.loopexit.split-lp -_ZNSt12_Vector_baseIN8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS1_14adl_serializerES4_IhSaIhEE13json_metadataIiEEESaISG_EE13_M_deallocateEPSG_m.exit.i: ; preds = %_ZNSt12_Vector_baseIN8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS1_14adl_serializerES4_IhSaIhEE13json_metadataIiEEESaISG_EE11_M_allocateEm.exit.i +invoke.cont25: ; preds = %_ZNSt12_Vector_baseIN8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS1_14adl_serializerES4_IhSaIhEE13json_metadataIiEEESaISG_EE11_M_allocateEm.exit.i %_M_finish.i.i132 = getelementptr inbounds i8, ptr %stack, i64 8 store ptr %call5.i.i.i.i139, ptr %stack, align 8 store ptr %call5.i.i.i.i139, ptr %_M_finish.i.i132, align 8 %add.ptr21.i = getelementptr inbounds i8, ptr %call5.i.i.i.i139, i64 %sub.ptr.sub.i store ptr %add.ptr21.i, ptr %_M_end_of_storage.i.i, align 8 - br label %invoke.cont25 - -invoke.cont25: ; preds = %_ZNSt12_Vector_baseIN8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS1_14adl_serializerES4_IhSaIhEE13json_metadataIiEEESaISG_EE13_M_deallocateEPSG_m.exit.i, %if.end.i %cmp.i2.i = icmp sgt i64 %sub.ptr.sub.i, 0 br i1 %cmp.i2.i, label %for.body.i.lr.ph.i, label %if.end44 @@ -7283,7 +7280,7 @@ for.inc: ; preds = %if.else.i, %if.then %cmp.i.not = icmp eq ptr %call.i, %add.ptr.i.i br i1 %cmp.i.not, label %if.end44, label %for.body -if.end44: ; preds = %for.inc, %_ZNSt6vectorIN8nlohmann16json_abi_v3_11_310basic_jsonISt3mapS_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS1_14adl_serializerES_IhSaIhEE13json_metadataIiEEESaISF_EE9push_backEOSF_.exit.i.i, %invoke.cont25, %invoke.cont35 +if.end44: ; preds = %for.inc, %_ZNSt6vectorIN8nlohmann16json_abi_v3_11_310basic_jsonISt3mapS_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS1_14adl_serializerES_IhSaIhEE13json_metadataIiEEESaISF_EE9push_backEOSF_.exit.i.i, %if.end.i, %invoke.cont25, %invoke.cont35 %_M_finish.i.i = getelementptr inbounds i8, ptr %stack, i64 8 %m_data.i = getelementptr inbounds i8, ptr %current_item, i64 8 %m_value75 = getelementptr inbounds i8, ptr %current_item, i64 16 @@ -8587,21 +8584,18 @@ if.then.i175.cont: ; preds = %if.then.i175.invoke if.end.i: ; preds = %if.then19 %_M_end_of_storage.i.i = getelementptr inbounds i8, ptr %stack, i64 16 %cmp3.i.not = icmp eq ptr %5, %6 - br i1 %cmp3.i.not, label %invoke.cont25, label %_ZNSt12_Vector_baseIN8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS1_14adl_serializerES4_IhSaIhEE13json_metadataIS4_IiSaIiEEEEESaISI_EE11_M_allocateEm.exit.i + br i1 %cmp3.i.not, label %if.end44, label %_ZNSt12_Vector_baseIN8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS1_14adl_serializerES4_IhSaIhEE13json_metadataIS4_IiSaIiEEEEESaISI_EE11_M_allocateEm.exit.i _ZNSt12_Vector_baseIN8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS1_14adl_serializerES4_IhSaIhEE13json_metadataIS4_IiSaIiEEEEESaISI_EE11_M_allocateEm.exit.i: ; preds = %if.end.i %call5.i.i.i.i177 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %sub.ptr.sub.i) #26 - to label %_ZNSt12_Vector_baseIN8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS1_14adl_serializerES4_IhSaIhEE13json_metadataIS4_IiSaIiEEEEESaISI_EE13_M_deallocateEPSI_m.exit.i unwind label %lpad.loopexit.split-lp104.loopexit.split-lp + to label %invoke.cont25 unwind label %lpad.loopexit.split-lp104.loopexit.split-lp -_ZNSt12_Vector_baseIN8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS1_14adl_serializerES4_IhSaIhEE13json_metadataIS4_IiSaIiEEEEESaISI_EE13_M_deallocateEPSI_m.exit.i: ; preds = %_ZNSt12_Vector_baseIN8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS1_14adl_serializerES4_IhSaIhEE13json_metadataIS4_IiSaIiEEEEESaISI_EE11_M_allocateEm.exit.i +invoke.cont25: ; preds = %_ZNSt12_Vector_baseIN8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS1_14adl_serializerES4_IhSaIhEE13json_metadataIS4_IiSaIiEEEEESaISI_EE11_M_allocateEm.exit.i %_M_finish.i.i169 = getelementptr inbounds i8, ptr %stack, i64 8 store ptr %call5.i.i.i.i177, ptr %stack, align 8 store ptr %call5.i.i.i.i177, ptr %_M_finish.i.i169, align 8 %add.ptr21.i = getelementptr inbounds i8, ptr %call5.i.i.i.i177, i64 %sub.ptr.sub.i store ptr %add.ptr21.i, ptr %_M_end_of_storage.i.i, align 8 - br label %invoke.cont25 - -invoke.cont25: ; preds = %_ZNSt12_Vector_baseIN8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS1_14adl_serializerES4_IhSaIhEE13json_metadataIS4_IiSaIiEEEEESaISI_EE13_M_deallocateEPSI_m.exit.i, %if.end.i %cmp.i2.i = icmp sgt i64 %sub.ptr.sub.i, 0 br i1 %cmp.i2.i, label %for.body.i.lr.ph.i, label %if.end44 @@ -8741,7 +8735,7 @@ for.inc: ; preds = %if.else.i, %if.then %cmp.i.not = icmp eq ptr %call.i, %add.ptr.i.i br i1 %cmp.i.not, label %if.end44, label %for.body -if.end44: ; preds = %for.inc, %_ZNSt6vectorIN8nlohmann16json_abi_v3_11_310basic_jsonISt3mapS_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS1_14adl_serializerES_IhSaIhEE13json_metadataIS_IiSaIiEEEEESaISH_EE9push_backEOSH_.exit.i.i, %invoke.cont25, %invoke.cont35 +if.end44: ; preds = %for.inc, %_ZNSt6vectorIN8nlohmann16json_abi_v3_11_310basic_jsonISt3mapS_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS1_14adl_serializerES_IhSaIhEE13json_metadataIS_IiSaIiEEEEESaISH_EE9push_backEOSH_.exit.i.i, %if.end.i, %invoke.cont25, %invoke.cont35 %_M_finish.i.i = getelementptr inbounds i8, ptr %stack, i64 8 %21 = load ptr, ptr %stack, align 8 %22 = load ptr, ptr %_M_finish.i.i, align 8 @@ -9537,21 +9531,18 @@ if.then.i161.cont: ; preds = %if.then.i161.invoke if.end.i: ; preds = %if.then19 %_M_end_of_storage.i.i = getelementptr inbounds i8, ptr %stack, i64 16 %cmp3.i.not = icmp eq ptr %5, %6 - br i1 %cmp3.i.not, label %invoke.cont25, label %_ZNSt12_Vector_baseIN8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS1_14adl_serializerES4_IhSaIhEE13json_metadataISt10unique_ptrIiSt14default_deleteIiEEEEESaISK_EE11_M_allocateEm.exit.i + br i1 %cmp3.i.not, label %if.end44, label %_ZNSt12_Vector_baseIN8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS1_14adl_serializerES4_IhSaIhEE13json_metadataISt10unique_ptrIiSt14default_deleteIiEEEEESaISK_EE11_M_allocateEm.exit.i _ZNSt12_Vector_baseIN8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS1_14adl_serializerES4_IhSaIhEE13json_metadataISt10unique_ptrIiSt14default_deleteIiEEEEESaISK_EE11_M_allocateEm.exit.i: ; preds = %if.end.i %call5.i.i.i.i163 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %sub.ptr.sub.i) #26 - to label %_ZNSt12_Vector_baseIN8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS1_14adl_serializerES4_IhSaIhEE13json_metadataISt10unique_ptrIiSt14default_deleteIiEEEEESaISK_EE13_M_deallocateEPSK_m.exit.i unwind label %lpad.loopexit.split-lp94.loopexit.split-lp + to label %invoke.cont25 unwind label %lpad.loopexit.split-lp94.loopexit.split-lp -_ZNSt12_Vector_baseIN8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS1_14adl_serializerES4_IhSaIhEE13json_metadataISt10unique_ptrIiSt14default_deleteIiEEEEESaISK_EE13_M_deallocateEPSK_m.exit.i: ; preds = %_ZNSt12_Vector_baseIN8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS1_14adl_serializerES4_IhSaIhEE13json_metadataISt10unique_ptrIiSt14default_deleteIiEEEEESaISK_EE11_M_allocateEm.exit.i +invoke.cont25: ; preds = %_ZNSt12_Vector_baseIN8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS1_14adl_serializerES4_IhSaIhEE13json_metadataISt10unique_ptrIiSt14default_deleteIiEEEEESaISK_EE11_M_allocateEm.exit.i %_M_finish.i.i155 = getelementptr inbounds i8, ptr %stack, i64 8 store ptr %call5.i.i.i.i163, ptr %stack, align 8 store ptr %call5.i.i.i.i163, ptr %_M_finish.i.i155, align 8 %add.ptr21.i = getelementptr inbounds i8, ptr %call5.i.i.i.i163, i64 %sub.ptr.sub.i store ptr %add.ptr21.i, ptr %_M_end_of_storage.i.i, align 8 - br label %invoke.cont25 - -invoke.cont25: ; preds = %_ZNSt12_Vector_baseIN8nlohmann16json_abi_v3_11_310basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS1_14adl_serializerES4_IhSaIhEE13json_metadataISt10unique_ptrIiSt14default_deleteIiEEEEESaISK_EE13_M_deallocateEPSK_m.exit.i, %if.end.i %cmp.i2.i = icmp sgt i64 %sub.ptr.sub.i, 0 br i1 %cmp.i2.i, label %for.body.i.lr.ph.i, label %if.end44 @@ -9675,7 +9666,7 @@ for.inc: ; preds = %if.else.i, %if.then %cmp.i.not = icmp eq ptr %call.i, %add.ptr.i.i br i1 %cmp.i.not, label %if.end44, label %for.body -if.end44: ; preds = %for.inc, %_ZNSt6vectorIN8nlohmann16json_abi_v3_11_310basic_jsonISt3mapS_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS1_14adl_serializerES_IhSaIhEE13json_metadataISt10unique_ptrIiSt14default_deleteIiEEEEESaISJ_EE9push_backEOSJ_.exit.i.i, %invoke.cont25, %invoke.cont35 +if.end44: ; preds = %for.inc, %_ZNSt6vectorIN8nlohmann16json_abi_v3_11_310basic_jsonISt3mapS_NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS1_14adl_serializerES_IhSaIhEE13json_metadataISt10unique_ptrIiSt14default_deleteIiEEEEESaISJ_EE9push_backEOSJ_.exit.i.i, %if.end.i, %invoke.cont25, %invoke.cont35 %_M_finish.i.i = getelementptr inbounds i8, ptr %stack, i64 8 %17 = load ptr, ptr %stack, align 8 %18 = load ptr, ptr %_M_finish.i.i, align 8 diff --git a/bench/ockam-rs/optimized/3trfdpf6q4y0wtix.ll b/bench/ockam-rs/optimized/3trfdpf6q4y0wtix.ll index 95ee5765f90..7d235bfc86c 100644 --- a/bench/ockam-rs/optimized/3trfdpf6q4y0wtix.ll +++ b/bench/ockam-rs/optimized/3trfdpf6q4y0wtix.ll @@ -76372,89 +76372,88 @@ _ZN3url3Url5slice17hc70af650c4dbd15fE.exit: ; preds = %2, %20, %"_ZN4core3 31: ; preds = %30 %32 = icmp eq i64 %.val21, %28 - %33 = sub nsw i64 %.val21, %28 - br i1 %32, label %_ZN3url3Url5slice17h06501f83605da4b2E.exit.i, label %38 + br i1 %32, label %_ZN3url3Url16cannot_be_a_base17hb6e02a430d8a0aa9E.exit, label %37 "_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17h23ef7677179467b7E.exit.i.i.i.i": ; preds = %30 - %34 = getelementptr inbounds i8, ptr %.val, i64 %28 - %35 = load i8, ptr %34, align 1, !alias.scope !10962, !noalias !10969, !noundef !4 - %36 = icmp sgt i8 %35, -65 - %37 = sub nuw i64 %.val21, %28 - br i1 %36, label %_ZN3url3Url5slice17h06501f83605da4b2E.exit.i, label %38 + %33 = getelementptr inbounds i8, ptr %.val, i64 %28 + %34 = load i8, ptr %33, align 1, !alias.scope !10962, !noalias !10969, !noundef !4 + %35 = icmp sgt i8 %34, -65 + %36 = sub nuw i64 %.val21, %28 + br i1 %35, label %_ZN3url3Url5slice17h06501f83605da4b2E.exit.i, label %37 -38: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17h23ef7677179467b7E.exit.i.i.i.i", %31 +37: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17h23ef7677179467b7E.exit.i.i.i.i", %31 call void @_ZN4core3str16slice_error_fail17h4754d574702f62bbE(ptr noalias noundef nonnull readonly align 1 %.val, i64 noundef %.val21, i64 noundef %28, i64 noundef %.val21, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.fbfca8abf0772dc66d1b514120c70946.677) #49, !noalias !10969 unreachable -_ZN3url3Url5slice17h06501f83605da4b2E.exit.i: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17h23ef7677179467b7E.exit.i.i.i.i", %31, %_ZN3url3Url5slice17hc70af650c4dbd15fE.exit - %39 = phi i64 [ %37, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17h23ef7677179467b7E.exit.i.i.i.i" ], [ %33, %31 ], [ %.val21, %_ZN3url3Url5slice17hc70af650c4dbd15fE.exit ] - %.not.i.i = icmp eq i64 %39, 0 +_ZN3url3Url5slice17h06501f83605da4b2E.exit.i: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17h23ef7677179467b7E.exit.i.i.i.i", %_ZN3url3Url5slice17hc70af650c4dbd15fE.exit + %38 = phi i64 [ %36, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17h23ef7677179467b7E.exit.i.i.i.i" ], [ %.val21, %_ZN3url3Url5slice17hc70af650c4dbd15fE.exit ] + %.not.i.i = icmp eq i64 %38, 0 br i1 %.not.i.i, label %_ZN3url3Url16cannot_be_a_base17hb6e02a430d8a0aa9E.exit, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h78c7580bd95c3a89E.exit.i.i" "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h78c7580bd95c3a89E.exit.i.i": ; preds = %_ZN3url3Url5slice17h06501f83605da4b2E.exit.i - %40 = getelementptr inbounds i8, ptr %.val, i64 %28 - %rhsc.i = load i8, ptr %40, align 1, !noalias !10969 - %41 = icmp ne i8 %rhsc.i, 47 - %42 = zext i1 %41 to i8 + %39 = getelementptr inbounds i8, ptr %.val, i64 %28 + %rhsc.i = load i8, ptr %39, align 1, !noalias !10969 + %40 = icmp ne i8 %rhsc.i, 47 + %41 = zext i1 %40 to i8 br label %_ZN3url3Url16cannot_be_a_base17hb6e02a430d8a0aa9E.exit -_ZN3url3Url16cannot_be_a_base17hb6e02a430d8a0aa9E.exit: ; preds = %_ZN3url3Url5slice17h06501f83605da4b2E.exit.i, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h78c7580bd95c3a89E.exit.i.i" - %.0.i.i = phi i8 [ %42, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h78c7580bd95c3a89E.exit.i.i" ], [ 1, %_ZN3url3Url5slice17h06501f83605da4b2E.exit.i ] +_ZN3url3Url16cannot_be_a_base17hb6e02a430d8a0aa9E.exit: ; preds = %31, %_ZN3url3Url5slice17h06501f83605da4b2E.exit.i, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h78c7580bd95c3a89E.exit.i.i" + %.0.i.i = phi i8 [ %41, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h78c7580bd95c3a89E.exit.i.i" ], [ 1, %_ZN3url3Url5slice17h06501f83605da4b2E.exit.i ], [ 1, %31 ] store i8 %.0.i.i, ptr %10, align 1 - %43 = call noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17haf2f6c53e543649eE(ptr noalias noundef nonnull align 8 dereferenceable(16) %26, ptr noalias noundef nonnull readonly align 1 @anon.fbfca8abf0772dc66d1b514120c70946.428, i64 noundef 16, ptr noundef nonnull align 1 %10, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.fbfca8abf0772dc66d1b514120c70946.221) + %42 = call noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17haf2f6c53e543649eE(ptr noalias noundef nonnull align 8 dereferenceable(16) %26, ptr noalias noundef nonnull readonly align 1 @anon.fbfca8abf0772dc66d1b514120c70946.428, i64 noundef 16, ptr noundef nonnull align 1 %10, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.fbfca8abf0772dc66d1b514120c70946.221) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) - %44 = call { ptr, i64 } @_ZN3url3Url8username17ha5c44629cdaf7742E(ptr noalias noundef nonnull readonly align 8 dereferenceable(88) %0) - %.fca.0.extract1 = extractvalue { ptr, i64 } %44, 0 + %43 = call { ptr, i64 } @_ZN3url3Url8username17ha5c44629cdaf7742E(ptr noalias noundef nonnull readonly align 8 dereferenceable(88) %0) + %.fca.0.extract1 = extractvalue { ptr, i64 } %43, 0 store ptr %.fca.0.extract1, ptr %9, align 8 - %.fca.1.extract3 = extractvalue { ptr, i64 } %44, 1 + %.fca.1.extract3 = extractvalue { ptr, i64 } %43, 1 %.fca.1.gep4 = getelementptr inbounds i8, ptr %9, i64 8 store i64 %.fca.1.extract3, ptr %.fca.1.gep4, align 8 - %45 = call noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17haf2f6c53e543649eE(ptr noalias noundef nonnull align 8 dereferenceable(16) %43, ptr noalias noundef nonnull readonly align 1 @anon.fbfca8abf0772dc66d1b514120c70946.429, i64 noundef 8, ptr noundef nonnull align 1 %9, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.fbfca8abf0772dc66d1b514120c70946.427) + %44 = call noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17haf2f6c53e543649eE(ptr noalias noundef nonnull align 8 dereferenceable(16) %42, ptr noalias noundef nonnull readonly align 1 @anon.fbfca8abf0772dc66d1b514120c70946.429, i64 noundef 8, ptr noundef nonnull align 1 %9, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.fbfca8abf0772dc66d1b514120c70946.427) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %8) - %46 = call { ptr, i64 } @_ZN3url3Url8password17hd41370778fe9d6e6E(ptr noalias noundef nonnull readonly align 8 dereferenceable(88) %0) - %.fca.0.extract5 = extractvalue { ptr, i64 } %46, 0 + %45 = call { ptr, i64 } @_ZN3url3Url8password17hd41370778fe9d6e6E(ptr noalias noundef nonnull readonly align 8 dereferenceable(88) %0) + %.fca.0.extract5 = extractvalue { ptr, i64 } %45, 0 store ptr %.fca.0.extract5, ptr %8, align 8 - %.fca.1.extract7 = extractvalue { ptr, i64 } %46, 1 + %.fca.1.extract7 = extractvalue { ptr, i64 } %45, 1 %.fca.1.gep8 = getelementptr inbounds i8, ptr %8, i64 8 store i64 %.fca.1.extract7, ptr %.fca.1.gep8, align 8 - %47 = call noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17haf2f6c53e543649eE(ptr noalias noundef nonnull align 8 dereferenceable(16) %45, ptr noalias noundef nonnull readonly align 1 @anon.fbfca8abf0772dc66d1b514120c70946.430, i64 noundef 8, ptr noundef nonnull align 1 %8, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.fbfca8abf0772dc66d1b514120c70946.431) + %46 = call noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17haf2f6c53e543649eE(ptr noalias noundef nonnull align 8 dereferenceable(16) %44, ptr noalias noundef nonnull readonly align 1 @anon.fbfca8abf0772dc66d1b514120c70946.430, i64 noundef 8, ptr noundef nonnull align 1 %8, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.fbfca8abf0772dc66d1b514120c70946.431) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) call void @_ZN3url3Url4host17h440ebe33ad3342d8E(ptr noalias nocapture noundef nonnull sret({ i8, [23 x i8] }) align 8 dereferenceable(24) %7, ptr noalias noundef nonnull readonly align 8 dereferenceable(88) %0) - %48 = call noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17haf2f6c53e543649eE(ptr noalias noundef nonnull align 8 dereferenceable(16) %47, ptr noalias noundef nonnull readonly align 1 @anon.fbfca8abf0772dc66d1b514120c70946.432, i64 noundef 4, ptr noundef nonnull align 1 %7, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.fbfca8abf0772dc66d1b514120c70946.433) + %47 = call noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17haf2f6c53e543649eE(ptr noalias noundef nonnull align 8 dereferenceable(16) %46, ptr noalias noundef nonnull readonly align 1 @anon.fbfca8abf0772dc66d1b514120c70946.432, i64 noundef 4, ptr noundef nonnull align 1 %7, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.fbfca8abf0772dc66d1b514120c70946.433) call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) - %49 = getelementptr inbounds i8, ptr %0, i64 40 - %50 = load i16, ptr %49, align 8, !range !10972, !noundef !4 - %51 = getelementptr inbounds i8, ptr %0, i64 42 - %52 = load i16, ptr %51, align 2 - store i16 %50, ptr %6, align 2 - %53 = getelementptr inbounds i8, ptr %6, i64 2 - store i16 %52, ptr %53, align 2 - %54 = call noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17haf2f6c53e543649eE(ptr noalias noundef nonnull align 8 dereferenceable(16) %48, ptr noalias noundef nonnull readonly align 1 @anon.fbfca8abf0772dc66d1b514120c70946.434, i64 noundef 4, ptr noundef nonnull align 1 %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.fbfca8abf0772dc66d1b514120c70946.435) + %48 = getelementptr inbounds i8, ptr %0, i64 40 + %49 = load i16, ptr %48, align 8, !range !10972, !noundef !4 + %50 = getelementptr inbounds i8, ptr %0, i64 42 + %51 = load i16, ptr %50, align 2 + store i16 %49, ptr %6, align 2 + %52 = getelementptr inbounds i8, ptr %6, i64 2 + store i16 %51, ptr %52, align 2 + %53 = call noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17haf2f6c53e543649eE(ptr noalias noundef nonnull align 8 dereferenceable(16) %47, ptr noalias noundef nonnull readonly align 1 @anon.fbfca8abf0772dc66d1b514120c70946.434, i64 noundef 4, ptr noundef nonnull align 1 %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.fbfca8abf0772dc66d1b514120c70946.435) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) - %55 = call { ptr, i64 } @_ZN3url3Url4path17hb99f36ef817ec856E(ptr noalias noundef nonnull readonly align 8 dereferenceable(88) %0) - %.fca.0.extract9 = extractvalue { ptr, i64 } %55, 0 + %54 = call { ptr, i64 } @_ZN3url3Url4path17hb99f36ef817ec856E(ptr noalias noundef nonnull readonly align 8 dereferenceable(88) %0) + %.fca.0.extract9 = extractvalue { ptr, i64 } %54, 0 store ptr %.fca.0.extract9, ptr %5, align 8 - %.fca.1.extract11 = extractvalue { ptr, i64 } %55, 1 + %.fca.1.extract11 = extractvalue { ptr, i64 } %54, 1 %.fca.1.gep12 = getelementptr inbounds i8, ptr %5, i64 8 store i64 %.fca.1.extract11, ptr %.fca.1.gep12, align 8 - %56 = call noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17haf2f6c53e543649eE(ptr noalias noundef nonnull align 8 dereferenceable(16) %54, ptr noalias noundef nonnull readonly align 1 @anon.fbfca8abf0772dc66d1b514120c70946.436, i64 noundef 4, ptr noundef nonnull align 1 %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.fbfca8abf0772dc66d1b514120c70946.427) + %55 = call noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17haf2f6c53e543649eE(ptr noalias noundef nonnull align 8 dereferenceable(16) %53, ptr noalias noundef nonnull readonly align 1 @anon.fbfca8abf0772dc66d1b514120c70946.436, i64 noundef 4, ptr noundef nonnull align 1 %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.fbfca8abf0772dc66d1b514120c70946.427) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) - %57 = call { ptr, i64 } @_ZN3url3Url5query17h0427d223bac61676E(ptr noalias noundef nonnull readonly align 8 dereferenceable(88) %0) - %.fca.0.extract13 = extractvalue { ptr, i64 } %57, 0 + %56 = call { ptr, i64 } @_ZN3url3Url5query17h0427d223bac61676E(ptr noalias noundef nonnull readonly align 8 dereferenceable(88) %0) + %.fca.0.extract13 = extractvalue { ptr, i64 } %56, 0 store ptr %.fca.0.extract13, ptr %4, align 8 - %.fca.1.extract15 = extractvalue { ptr, i64 } %57, 1 + %.fca.1.extract15 = extractvalue { ptr, i64 } %56, 1 %.fca.1.gep16 = getelementptr inbounds i8, ptr %4, i64 8 store i64 %.fca.1.extract15, ptr %.fca.1.gep16, align 8 - %58 = call noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17haf2f6c53e543649eE(ptr noalias noundef nonnull align 8 dereferenceable(16) %56, ptr noalias noundef nonnull readonly align 1 @anon.fbfca8abf0772dc66d1b514120c70946.437, i64 noundef 5, ptr noundef nonnull align 1 %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.fbfca8abf0772dc66d1b514120c70946.431) + %57 = call noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17haf2f6c53e543649eE(ptr noalias noundef nonnull align 8 dereferenceable(16) %55, ptr noalias noundef nonnull readonly align 1 @anon.fbfca8abf0772dc66d1b514120c70946.437, i64 noundef 5, ptr noundef nonnull align 1 %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.fbfca8abf0772dc66d1b514120c70946.431) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) - %59 = call { ptr, i64 } @_ZN3url3Url8fragment17h61a1e17251b78277E(ptr noalias noundef nonnull readonly align 8 dereferenceable(88) %0) - %.fca.0.extract17 = extractvalue { ptr, i64 } %59, 0 + %58 = call { ptr, i64 } @_ZN3url3Url8fragment17h61a1e17251b78277E(ptr noalias noundef nonnull readonly align 8 dereferenceable(88) %0) + %.fca.0.extract17 = extractvalue { ptr, i64 } %58, 0 store ptr %.fca.0.extract17, ptr %3, align 8 - %.fca.1.extract19 = extractvalue { ptr, i64 } %59, 1 + %.fca.1.extract19 = extractvalue { ptr, i64 } %58, 1 %.fca.1.gep20 = getelementptr inbounds i8, ptr %3, i64 8 store i64 %.fca.1.extract19, ptr %.fca.1.gep20, align 8 - %60 = call noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17haf2f6c53e543649eE(ptr noalias noundef nonnull align 8 dereferenceable(16) %58, ptr noalias noundef nonnull readonly align 1 @anon.fbfca8abf0772dc66d1b514120c70946.438, i64 noundef 8, ptr noundef nonnull align 1 %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.fbfca8abf0772dc66d1b514120c70946.431) - %61 = call noundef zeroext i1 @_ZN4core3fmt8builders11DebugStruct6finish17h5cca625c6aa0e92fE(ptr noalias noundef nonnull align 8 dereferenceable(16) %60) + %59 = call noundef align 8 dereferenceable(16) ptr @_ZN4core3fmt8builders11DebugStruct5field17haf2f6c53e543649eE(ptr noalias noundef nonnull align 8 dereferenceable(16) %57, ptr noalias noundef nonnull readonly align 1 @anon.fbfca8abf0772dc66d1b514120c70946.438, i64 noundef 8, ptr noundef nonnull align 1 %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.fbfca8abf0772dc66d1b514120c70946.431) + %60 = call noundef zeroext i1 @_ZN4core3fmt8builders11DebugStruct6finish17h5cca625c6aa0e92fE(ptr noalias noundef nonnull align 8 dereferenceable(16) %59) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) @@ -76465,7 +76464,7 @@ _ZN3url3Url16cannot_be_a_base17hb6e02a430d8a0aa9E.exit: ; preds = %_ZN3url3Url5s call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) - ret i1 %61 + ret i1 %60 } ; Function Attrs: inlinehint nonlazybind uwtable diff --git a/bench/oiio/optimized/xmp.cpp.ll b/bench/oiio/optimized/xmp.cpp.ll index 762a9dd445e..988490bd21b 100644 --- a/bench/oiio/optimized/xmp.cpp.ll +++ b/bench/oiio/optimized/xmp.cpp.ll @@ -3916,7 +3916,7 @@ _ZN18OpenImageIO_v2_6_04pugi4impl29get_latin1_7bit_prefix_lengthEPKhm.exit.i: ; %arrayidx.i.i57.le = getelementptr inbounds i8, ptr %contents, i64 %i.06.i.i %sub.i = sub i64 %size, %i.06.i.i %cmp.i = icmp eq i64 %size, %i.06.i.i - br i1 %cmp.i, label %if.then.i, label %if.end.i60 + br i1 %cmp.i, label %if.then.i, label %while.body.i.i60 if.then.i: ; preds = %for.inc.i.i, %_ZN18OpenImageIO_v2_6_04pugi4impl29get_latin1_7bit_prefix_lengthEPKhm.exit.i, %if.then29 br i1 %is_mutable, label %return.sink.split.i, label %if.else.i.i58 @@ -3941,41 +3941,36 @@ if.end7.i.i: ; preds = %if.then4.i.i, %if.e store i8 0, ptr %arrayidx.i19.i, align 1 br label %return.sink.split.i -if.end.i60: ; preds = %_ZN18OpenImageIO_v2_6_04pugi4impl29get_latin1_7bit_prefix_lengthEPKhm.exit.i - %tobool.not4.i.i = icmp eq i64 %sub.i, 0 - br i1 %tobool.not4.i.i, label %_ZN18OpenImageIO_v2_6_04pugi4impl14latin1_decoder7processINS1_12utf8_counterEEENT_10value_typeEPKhmS6_S5_.exit.i, label %while.body.i.i61 - -while.body.i.i61: ; preds = %if.end.i60, %while.body.i.i61 - %result.addr.07.i.i = phi i64 [ %add5.i.i.i64, %while.body.i.i61 ], [ 0, %if.end.i60 ] - %size.addr.06.i.i = phi i64 [ %sub.i.i, %while.body.i.i61 ], [ %sub.i, %if.end.i60 ] - %data.addr.05.i.i = phi ptr [ %add.ptr.i.i65, %while.body.i.i61 ], [ %arrayidx.i.i57.le, %if.end.i60 ] +while.body.i.i60: ; preds = %_ZN18OpenImageIO_v2_6_04pugi4impl29get_latin1_7bit_prefix_lengthEPKhm.exit.i, %while.body.i.i60 + %result.addr.07.i.i = phi i64 [ %add5.i.i.i63, %while.body.i.i60 ], [ 0, %_ZN18OpenImageIO_v2_6_04pugi4impl29get_latin1_7bit_prefix_lengthEPKhm.exit.i ] + %size.addr.06.i.i = phi i64 [ %sub.i.i, %while.body.i.i60 ], [ %sub.i, %_ZN18OpenImageIO_v2_6_04pugi4impl29get_latin1_7bit_prefix_lengthEPKhm.exit.i ] + %data.addr.05.i.i = phi ptr [ %add.ptr.i.i64, %while.body.i.i60 ], [ %arrayidx.i.i57.le, %_ZN18OpenImageIO_v2_6_04pugi4impl29get_latin1_7bit_prefix_lengthEPKhm.exit.i ] %19 = load i8, ptr %data.addr.05.i.i, align 1 - %cmp.i.i.i62 = icmp sgt i8 %19, -1 - %.sink.i.i.i63 = select i1 %cmp.i.i.i62, i64 1, i64 2 - %add5.i.i.i64 = add i64 %.sink.i.i.i63, %result.addr.07.i.i - %add.ptr.i.i65 = getelementptr inbounds i8, ptr %data.addr.05.i.i, i64 1 + %cmp.i.i.i61 = icmp sgt i8 %19, -1 + %.sink.i.i.i62 = select i1 %cmp.i.i.i61, i64 1, i64 2 + %add5.i.i.i63 = add i64 %.sink.i.i.i62, %result.addr.07.i.i + %add.ptr.i.i64 = getelementptr inbounds i8, ptr %data.addr.05.i.i, i64 1 %sub.i.i = add i64 %size.addr.06.i.i, -1 - %tobool.not.i.i66 = icmp eq i64 %sub.i.i, 0 - br i1 %tobool.not.i.i66, label %_ZN18OpenImageIO_v2_6_04pugi4impl14latin1_decoder7processINS1_12utf8_counterEEENT_10value_typeEPKhmS6_S5_.exit.i, label %while.body.i.i61, !llvm.loop !105 + %tobool.not.i.i65 = icmp eq i64 %sub.i.i, 0 + br i1 %tobool.not.i.i65, label %_ZN18OpenImageIO_v2_6_04pugi4impl14latin1_decoder7processINS1_12utf8_counterEEENT_10value_typeEPKhmS6_S5_.exit.i, label %while.body.i.i60, !llvm.loop !105 -_ZN18OpenImageIO_v2_6_04pugi4impl14latin1_decoder7processINS1_12utf8_counterEEENT_10value_typeEPKhmS6_S5_.exit.i: ; preds = %while.body.i.i61, %if.end.i60 - %result.addr.0.lcssa.i.i67 = phi i64 [ 0, %if.end.i60 ], [ %add5.i.i.i64, %while.body.i.i61 ] +_ZN18OpenImageIO_v2_6_04pugi4impl14latin1_decoder7processINS1_12utf8_counterEEENT_10value_typeEPKhmS6_S5_.exit.i: ; preds = %while.body.i.i60 %20 = load ptr, ptr @_ZN18OpenImageIO_v2_6_04pugi4impl38xml_memory_management_function_storageIiE8allocateE, align 8 - %add.i68 = add i64 %i.06.i.i, 1 - %add3.i = add i64 %add.i68, %result.addr.0.lcssa.i.i67 + %add.i66 = add i64 %i.06.i.i, 1 + %add3.i = add i64 %add.i66, %add5.i.i.i63 %call4.i = tail call noundef ptr %20(i64 noundef %add3.i) %tobool5.not.i = icmp eq ptr %call4.i, null - br i1 %tobool5.not.i, label %return, label %if.end7.i69 + br i1 %tobool5.not.i, label %return, label %if.end7.i67 -if.end7.i69: ; preds = %_ZN18OpenImageIO_v2_6_04pugi4impl14latin1_decoder7processINS1_12utf8_counterEEENT_10value_typeEPKhmS6_S5_.exit.i +if.end7.i67: ; preds = %_ZN18OpenImageIO_v2_6_04pugi4impl14latin1_decoder7processINS1_12utf8_counterEEENT_10value_typeEPKhmS6_S5_.exit.i tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %call4.i, ptr align 1 %contents, i64 %i.06.i.i, i1 false) %add.ptr8.i = getelementptr inbounds i8, ptr %call4.i, i64 %i.06.i.i - br i1 %tobool.not4.i.i, label %_ZN18OpenImageIO_v2_6_04pugi4impl14latin1_decoder7processINS1_11utf8_writerEEENT_10value_typeEPKhmS6_S5_.exit.i, label %while.body.i22.i + br label %while.body.i22.i -while.body.i22.i: ; preds = %if.end7.i69, %_ZN18OpenImageIO_v2_6_04pugi4impl11utf8_writer3lowEPhj.exit.i.i - %result.addr.07.i23.i = phi ptr [ %add.ptr22.i.i.i, %_ZN18OpenImageIO_v2_6_04pugi4impl11utf8_writer3lowEPhj.exit.i.i ], [ %add.ptr8.i, %if.end7.i69 ] - %size.addr.06.i24.i = phi i64 [ %sub.i29.i, %_ZN18OpenImageIO_v2_6_04pugi4impl11utf8_writer3lowEPhj.exit.i.i ], [ %sub.i, %if.end7.i69 ] - %data.addr.05.i25.i = phi ptr [ %add.ptr.i28.i, %_ZN18OpenImageIO_v2_6_04pugi4impl11utf8_writer3lowEPhj.exit.i.i ], [ %arrayidx.i.i57.le, %if.end7.i69 ] +while.body.i22.i: ; preds = %_ZN18OpenImageIO_v2_6_04pugi4impl11utf8_writer3lowEPhj.exit.i.i, %if.end7.i67 + %result.addr.07.i23.i = phi ptr [ %add.ptr22.i.i.i, %_ZN18OpenImageIO_v2_6_04pugi4impl11utf8_writer3lowEPhj.exit.i.i ], [ %add.ptr8.i, %if.end7.i67 ] + %size.addr.06.i24.i = phi i64 [ %sub.i29.i, %_ZN18OpenImageIO_v2_6_04pugi4impl11utf8_writer3lowEPhj.exit.i.i ], [ %sub.i, %if.end7.i67 ] + %data.addr.05.i25.i = phi ptr [ %add.ptr.i28.i, %_ZN18OpenImageIO_v2_6_04pugi4impl11utf8_writer3lowEPhj.exit.i.i ], [ %arrayidx.i.i57.le, %if.end7.i67 ] %21 = load i8, ptr %data.addr.05.i25.i, align 1 %cmp.i.i26.i = icmp sgt i8 %21, -1 br i1 %cmp.i.i26.i, label %_ZN18OpenImageIO_v2_6_04pugi4impl11utf8_writer3lowEPhj.exit.i.i, label %if.else.i.i.i @@ -3998,9 +3993,8 @@ _ZN18OpenImageIO_v2_6_04pugi4impl11utf8_writer3lowEPhj.exit.i.i: ; preds = %if.e %tobool.not.i30.i = icmp eq i64 %sub.i29.i, 0 br i1 %tobool.not.i30.i, label %_ZN18OpenImageIO_v2_6_04pugi4impl14latin1_decoder7processINS1_11utf8_writerEEENT_10value_typeEPKhmS6_S5_.exit.i, label %while.body.i22.i, !llvm.loop !106 -_ZN18OpenImageIO_v2_6_04pugi4impl14latin1_decoder7processINS1_11utf8_writerEEENT_10value_typeEPKhmS6_S5_.exit.i: ; preds = %_ZN18OpenImageIO_v2_6_04pugi4impl11utf8_writer3lowEPhj.exit.i.i, %if.end7.i69 - %result.addr.0.lcssa.i31.i = phi ptr [ %add.ptr8.i, %if.end7.i69 ], [ %add.ptr22.i.i.i, %_ZN18OpenImageIO_v2_6_04pugi4impl11utf8_writer3lowEPhj.exit.i.i ] - store i8 0, ptr %result.addr.0.lcssa.i31.i, align 1 +_ZN18OpenImageIO_v2_6_04pugi4impl14latin1_decoder7processINS1_11utf8_writerEEENT_10value_typeEPKhmS6_S5_.exit.i: ; preds = %_ZN18OpenImageIO_v2_6_04pugi4impl11utf8_writer3lowEPhj.exit.i.i + store i8 0, ptr %add.ptr22.i.i.i, align 1 br label %return.sink.split.i return.sink.split.i: ; preds = %_ZN18OpenImageIO_v2_6_04pugi4impl14latin1_decoder7processINS1_11utf8_writerEEENT_10value_typeEPKhmS6_S5_.exit.i, %if.end7.i.i, %if.then.i diff --git a/bench/opencv/optimized/ccm.cpp.ll b/bench/opencv/optimized/ccm.cpp.ll index d4b8461efe2..cbeefdbdf43 100644 --- a/bench/opencv/optimized/ccm.cpp.ll +++ b/bench/opencv/optimized/ccm.cpp.ll @@ -5074,23 +5074,24 @@ _ZNSt12_Vector_baseIdSaIdEE13_M_deallocateEPdm.exit.i: ; preds = %19, %16 _ZSt7advanceIPKdmEvRT_T0_.exit.i: ; preds = %21 %.not.i.i.i.i.i17.i = icmp eq ptr %23, %11 - br i1 %.not.i.i.i.i.i17.i, label %_ZSt4copyIPKdPdET0_T_S4_S3_.exit18.i, label %29 + br i1 %.not.i.i.i.i.i17.i, label %_ZSt4copyIPKdPdET0_T_S4_S3_.exit18.i.thread, label %_ZSt4copyIPKdPdET0_T_S4_S3_.exit18.i -29: ; preds = %_ZSt7advanceIPKdmEvRT_T0_.exit.i +_ZSt4copyIPKdPdET0_T_S4_S3_.exit18.i: ; preds = %_ZSt7advanceIPKdmEvRT_T0_.exit.i call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %11, ptr noundef nonnull align 8 dereferenceable(1) %4, i64 %25, i1 false) %.pre26.i = load ptr, ptr %22, align 8 - br label %_ZSt4copyIPKdPdET0_T_S4_S3_.exit18.i - -_ZSt4copyIPKdPdET0_T_S4_S3_.exit18.i: ; preds = %29, %_ZSt7advanceIPKdmEvRT_T0_.exit.i - %30 = phi ptr [ %23, %_ZSt7advanceIPKdmEvRT_T0_.exit.i ], [ %.pre26.i, %29 ] - %gepdiff = sub nuw nsw i64 16, %25 - %.sink.i.i25.i.ptr = getelementptr inbounds i8, ptr %4, i64 %25 - call void @llvm.memmove.p0.p0.i64(ptr align 8 %30, ptr nonnull align 8 %.sink.i.i25.i.ptr, i64 %gepdiff, i1 false) - %31 = getelementptr inbounds i8, ptr %30, i64 %gepdiff + br label %_ZSt4copyIPKdPdET0_T_S4_S3_.exit18.i.thread + +_ZSt4copyIPKdPdET0_T_S4_S3_.exit18.i.thread: ; preds = %_ZSt7advanceIPKdmEvRT_T0_.exit.i, %_ZSt4copyIPKdPdET0_T_S4_S3_.exit18.i + %.sink.i.i25.i.idx6 = phi i64 [ %25, %_ZSt4copyIPKdPdET0_T_S4_S3_.exit18.i ], [ 0, %_ZSt7advanceIPKdmEvRT_T0_.exit.i ] + %29 = phi ptr [ %.pre26.i, %_ZSt4copyIPKdPdET0_T_S4_S3_.exit18.i ], [ %23, %_ZSt7advanceIPKdmEvRT_T0_.exit.i ] + %30 = sub nuw nsw i64 16, %25 + %.sink.i.i25.i.ptr = getelementptr inbounds i8, ptr %4, i64 %.sink.i.i25.i.idx6 + call void @llvm.memmove.p0.p0.i64(ptr align 8 %29, ptr nonnull align 8 %.sink.i.i25.i.ptr, i64 %30, i1 false) + %31 = getelementptr inbounds i8, ptr %29, i64 %30 store ptr %31, ptr %22, align 8 br label %_ZNSt6vectorIdSaIdEE13_M_assign_auxIPKdEEvT_S5_St20forward_iterator_tag.exit -_ZNSt6vectorIdSaIdEE13_M_assign_auxIPKdEEvT_S5_St20forward_iterator_tag.exit: ; preds = %_ZNSt12_Vector_baseIdSaIdEE13_M_deallocateEPdm.exit.i, %26, %28, %_ZSt4copyIPKdPdET0_T_S4_S3_.exit18.i +_ZNSt6vectorIdSaIdEE13_M_assign_auxIPKdEEvT_S5_St20forward_iterator_tag.exit: ; preds = %_ZNSt12_Vector_baseIdSaIdEE13_M_deallocateEPdm.exit.i, %26, %28, %_ZSt4copyIPKdPdET0_T_S4_S3_.exit18.i.thread ret void } diff --git a/bench/opencv/optimized/run_length_morphology.cpp.ll b/bench/opencv/optimized/run_length_morphology.cpp.ll index a0bde8f1a7f..ca2c4dbee5e 100644 --- a/bench/opencv/optimized/run_length_morphology.cpp.ll +++ b/bench/opencv/optimized/run_length_morphology.cpp.ll @@ -2858,19 +2858,12 @@ _ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i: ; preds = %.noexc137 .noexc144: ; preds = %31 store i32 0, ptr %32, align 4 - br i1 %28, label %_ZNSt6vectorIiSaIiEEC2EmRKS0_.exit145, label %_ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i140 + br i1 %28, label %._crit_edge, label %.lr.ph.preheader -_ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i140: ; preds = %.noexc144 +.lr.ph.preheader: ; preds = %.noexc144 %33 = getelementptr i8, ptr %32, i64 4 %34 = add nsw i64 %26, -4 tail call void @llvm.memset.p0.i64(ptr align 4 %33, i8 0, i64 %34, i1 false) - br label %_ZNSt6vectorIiSaIiEEC2EmRKS0_.exit145 - -_ZNSt6vectorIiSaIiEEC2EmRKS0_.exit145: ; preds = %_ZSt6fill_nIPimiET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i140, %.noexc144 - %.not125245 = icmp eq i32 %21, %19 - br i1 %.not125245, label %._crit_edge, label %.lr.ph.preheader - -.lr.ph.preheader: ; preds = %_ZNSt6vectorIiSaIiEEC2EmRKS0_.exit145 %35 = add i32 %21, 1 %36 = sub i32 %35, %19 %wide.trip.count = zext i32 %36 to i64 @@ -2891,9 +2884,9 @@ _ZNSt6vectorIiSaIiEED2Ev.exit165.thread: ; preds = %31 cleanup br label %_ZNSt6vectorIiSaIiEED2Ev.exit165 -._crit_edge: ; preds = %.lr.ph, %_ZNSt6vectorIiSaIiEE17_S_check_init_lenEmRKS0_.exit.i, %_ZNSt6vectorIiSaIiEEC2EmRKS0_.exit145 - %.sroa.0195.0320 = phi ptr [ %32, %_ZNSt6vectorIiSaIiEEC2EmRKS0_.exit145 ], [ null, %_ZNSt6vectorIiSaIiEE17_S_check_init_lenEmRKS0_.exit.i ], [ %32, %.lr.ph ] - %.sroa.0206.0217318 = phi ptr [ %27, %_ZNSt6vectorIiSaIiEEC2EmRKS0_.exit145 ], [ null, %_ZNSt6vectorIiSaIiEE17_S_check_init_lenEmRKS0_.exit.i ], [ %27, %.lr.ph ] +._crit_edge: ; preds = %.lr.ph, %_ZNSt6vectorIiSaIiEE17_S_check_init_lenEmRKS0_.exit.i, %.noexc144 + %.sroa.0195.0320 = phi ptr [ null, %_ZNSt6vectorIiSaIiEE17_S_check_init_lenEmRKS0_.exit.i ], [ %32, %.noexc144 ], [ %32, %.lr.ph ] + %.sroa.0206.0217318 = phi ptr [ null, %_ZNSt6vectorIiSaIiEE17_S_check_init_lenEmRKS0_.exit.i ], [ %27, %.noexc144 ], [ %27, %.lr.ph ] store i32 0, ptr %.sroa.0206.0217318, align 4 %40 = trunc i64 %15 to i32 %41 = sext i32 %22 to i64 diff --git a/bench/openexr/optimized/ImfMultiPartInputFile.cpp.ll b/bench/openexr/optimized/ImfMultiPartInputFile.cpp.ll index b6d79d1c544..faaab74a5a8 100644 --- a/bench/openexr/optimized/ImfMultiPartInputFile.cpp.ll +++ b/bench/openexr/optimized/ImfMultiPartInputFile.cpp.ll @@ -3354,12 +3354,8 @@ entry: %_M_finish.i = getelementptr inbounds i8, ptr %parts, i64 8 %1 = load ptr, ptr %_M_finish.i, align 8 %2 = load ptr, ptr %parts, align 8 - %sub.ptr.lhs.cast.i362 = ptrtoint ptr %1 to i64 - %sub.ptr.rhs.cast.i363 = ptrtoint ptr %2 to i64 - %sub.ptr.sub.i364 = sub i64 %sub.ptr.lhs.cast.i362, %sub.ptr.rhs.cast.i363 - %sub.ptr.div.i365 = ashr exact i64 %sub.ptr.sub.i364, 3 %cmp366.not = icmp eq ptr %1, %2 - br i1 %cmp366.not, label %for.end, label %for.body.lr.ph + br i1 %cmp366.not, label %_ZNSt6vectorIPN7Imf_3_211TileOffsetsESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i, label %for.body.lr.ph for.body.lr.ph: ; preds = %entry %version = getelementptr inbounds i8, ptr %this, i64 56 @@ -3449,36 +3445,35 @@ cleanup.action: ; preds = %ehcleanup.thread324 call void @__cxa_free_exception(ptr %exception12) #24 br label %eh.resume -for.end: ; preds = %for.cond, %entry - %13 = phi ptr [ %1, %entry ], [ %3, %for.cond ] - %14 = phi ptr [ %2, %entry ], [ %4, %for.cond ] - %sub.ptr.sub.i.lcssa = phi i64 [ 0, %entry ], [ %sub.ptr.sub.i, %for.cond ] - %sub.ptr.div.i.lcssa = phi i64 [ %sub.ptr.div.i365, %entry ], [ %sub.ptr.div.i, %for.cond ] - %cmp.i.i = icmp ugt i64 %sub.ptr.div.i.lcssa, 1152921504606846975 +for.end: ; preds = %for.cond + %cmp.i.i = icmp ugt i64 %sub.ptr.div.i, 1152921504606846975 br i1 %cmp.i.i, label %if.then.i.i, label %_ZNSt6vectorIPN7Imf_3_211TileOffsetsESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i if.then.i.i: ; preds = %for.end tail call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.37) #25 unreachable -_ZNSt6vectorIPN7Imf_3_211TileOffsetsESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i: ; preds = %for.end - %cmp.not.i.i.i.i = icmp eq ptr %13, %14 +_ZNSt6vectorIPN7Imf_3_211TileOffsetsESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i: ; preds = %entry, %for.end + %sub.ptr.sub.i.lcssa425 = phi i64 [ %sub.ptr.sub.i, %for.end ], [ 0, %entry ] + %13 = phi ptr [ %4, %for.end ], [ %2, %entry ] + %14 = phi ptr [ %3, %for.end ], [ %1, %entry ] + %cmp.not.i.i.i.i = icmp eq ptr %14, %13 br i1 %cmp.not.i.i.i.i, label %try.cont, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %_ZNSt6vectorIPN7Imf_3_211TileOffsetsESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i - %call5.i.i.i.i2.i.i93 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %sub.ptr.sub.i.lcssa) #26 + %call5.i.i.i.i2.i.i93 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %sub.ptr.sub.i.lcssa425) #26 store ptr null, ptr %call5.i.i.i.i2.i.i93, align 8 - %cmp.i.i.i.i.i.i.i = icmp eq i64 %sub.ptr.sub.i.lcssa, 8 + %cmp.i.i.i.i.i.i.i = icmp eq i64 %sub.ptr.sub.i.lcssa425, 8 br i1 %cmp.i.i.i.i.i.i.i, label %if.then.i.i.i.i.i101, label %if.end.i.i.i.i.i.i.i if.end.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i %incdec.ptr.i.i.i.i.i = getelementptr i8, ptr %call5.i.i.i.i2.i.i93, i64 8 - %15 = add nsw i64 %sub.ptr.sub.i.lcssa, -8 + %15 = add nsw i64 %sub.ptr.sub.i.lcssa425, -8 tail call void @llvm.memset.p0.i64(ptr align 8 %incdec.ptr.i.i.i.i.i, i8 0, i64 %15, i1 false) br label %if.then.i.i.i.i.i101 if.then.i.i.i.i.i101: ; preds = %if.then.i.i.i.i.i, %if.end.i.i.i.i.i.i.i - %mul.i.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.lcssa, 1 + %mul.i.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.lcssa425, 1 %call5.i.i.i.i2.i.i112 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %mul.i.i.i.i.i.i) #26 to label %call5.i.i.i.i2.i.i.noexc111 unwind label %ehcleanup317.thread @@ -3504,7 +3499,7 @@ for.body73.lr.ph: ; preds = %for.cond71.preheade br label %for.body73 for.body34: ; preds = %for.body34.preheader, %for.inc67 - %17 = phi ptr [ %29, %for.inc67 ], [ %14, %for.body34.preheader ] + %17 = phi ptr [ %29, %for.inc67 ], [ %13, %for.body34.preheader ] %i30.0377 = phi i64 [ %inc68, %for.inc67 ], [ 0, %for.body34.preheader ] %total_chunks.0376 = phi i64 [ %add, %for.inc67 ], [ 0, %for.body34.preheader ] %add.ptr.i118 = getelementptr inbounds ptr, ptr %17, i64 %i30.0377 @@ -3556,8 +3551,8 @@ lpad39.loopexit.split-lp.loopexit: ; preds = %if.else, %if.then44 br label %if.then.i.i.i273 lpad39.loopexit.split-lp.loopexit.split-lp: ; preds = %if.then3.i.i.i.i.i.i, %invoke.cont312, %for.end309, %catch, %invoke.cont64 - %rowsizes.sroa.0.0429 = phi ptr [ %rowsizes.sroa.0.0430436, %if.then3.i.i.i.i.i.i ], [ %rowsizes.sroa.0.0430436, %invoke.cont312 ], [ %rowsizes.sroa.0.0430436, %for.end309 ], [ %call5.i.i.i.i2.i.i112, %catch ], [ %call5.i.i.i.i2.i.i112, %invoke.cont64 ] - %tileOffsets.sroa.0.0328427 = phi ptr [ %tileOffsets.sroa.0.0328425437, %if.then3.i.i.i.i.i.i ], [ %tileOffsets.sroa.0.0328425437, %invoke.cont312 ], [ %tileOffsets.sroa.0.0328425437, %for.end309 ], [ %call5.i.i.i.i2.i.i93, %catch ], [ %call5.i.i.i.i2.i.i93, %invoke.cont64 ] + %rowsizes.sroa.0.0433 = phi ptr [ %rowsizes.sroa.0.0434440, %if.then3.i.i.i.i.i.i ], [ %rowsizes.sroa.0.0434440, %invoke.cont312 ], [ %rowsizes.sroa.0.0434440, %for.end309 ], [ %call5.i.i.i.i2.i.i112, %catch ], [ %call5.i.i.i.i2.i.i112, %invoke.cont64 ] + %tileOffsets.sroa.0.0328431 = phi ptr [ %tileOffsets.sroa.0.0328429441, %if.then3.i.i.i.i.i.i ], [ %tileOffsets.sroa.0.0328429441, %invoke.cont312 ], [ %tileOffsets.sroa.0.0328429441, %for.end309 ], [ %call5.i.i.i.i2.i.i93, %catch ], [ %call5.i.i.i.i2.i.i93, %invoke.cont64 ] %lpad.loopexit.split-lp345 = landingpad { ptr, i32 } cleanup br label %ehcleanup316 @@ -4099,8 +4094,8 @@ catch: ; preds = %lpad75.loopexit, %l to label %try.cont unwind label %lpad39.loopexit.split-lp.loopexit.split-lp try.cont: ; preds = %for.inc257, %_ZNSt6vectorIPN7Imf_3_211TileOffsetsESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i, %for.cond71.preheader, %catch - %tileOffsets.sroa.0.0328425437 = phi ptr [ %call5.i.i.i.i2.i.i93, %for.cond71.preheader ], [ %call5.i.i.i.i2.i.i93, %catch ], [ null, %_ZNSt6vectorIPN7Imf_3_211TileOffsetsESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i ], [ %call5.i.i.i.i2.i.i93, %for.inc257 ] - %rowsizes.sroa.0.0430436 = phi ptr [ %call5.i.i.i.i2.i.i112, %for.cond71.preheader ], [ %call5.i.i.i.i2.i.i112, %catch ], [ null, %_ZNSt6vectorIPN7Imf_3_211TileOffsetsESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i ], [ %call5.i.i.i.i2.i.i112, %for.inc257 ] + %tileOffsets.sroa.0.0328429441 = phi ptr [ %call5.i.i.i.i2.i.i93, %for.cond71.preheader ], [ %call5.i.i.i.i2.i.i93, %catch ], [ null, %_ZNSt6vectorIPN7Imf_3_211TileOffsetsESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i ], [ %call5.i.i.i.i2.i.i93, %for.inc257 ] + %rowsizes.sroa.0.0434440 = phi ptr [ %call5.i.i.i.i2.i.i112, %for.cond71.preheader ], [ %call5.i.i.i.i2.i.i112, %catch ], [ null, %_ZNSt6vectorIPN7Imf_3_211TileOffsetsESaIS2_EE17_S_check_init_lenEmRKS3_.exit.i ], [ %call5.i.i.i.i2.i.i112, %for.inc257 ] %85 = load ptr, ptr %_M_finish.i, align 8 %86 = load ptr, ptr %parts, align 8 %cmp264407.not = icmp eq ptr %85, %86 @@ -4108,7 +4103,7 @@ try.cont: ; preds = %for.inc257, %_ZNSt6 for.body265: ; preds = %try.cont, %for.inc307 %partNumber261.0408 = phi i64 [ %inc308, %for.inc307 ], [ 0, %try.cont ] - %add.ptr.i227 = getelementptr inbounds ptr, ptr %tileOffsets.sroa.0.0328425437, i64 %partNumber261.0408 + %add.ptr.i227 = getelementptr inbounds ptr, ptr %tileOffsets.sroa.0.0328429441, i64 %partNumber261.0408 %87 = load ptr, ptr %add.ptr.i227, align 8 %tobool267.not = icmp eq ptr %87, null br i1 %tobool267.not, label %for.inc307, label %if.then268 @@ -4410,52 +4405,52 @@ invoke.cont312: ; preds = %for.end309 to label %invoke.cont315 unwind label %lpad39.loopexit.split-lp.loopexit.split-lp invoke.cont315: ; preds = %invoke.cont312 - %tobool.not.i.i.i266 = icmp eq ptr %rowsizes.sroa.0.0430436, null + %tobool.not.i.i.i266 = icmp eq ptr %rowsizes.sroa.0.0434440, null br i1 %tobool.not.i.i.i266, label %_ZNSt6vectorIiSaIiEED2Ev.exit, label %if.then.i.i.i267 if.then.i.i.i267: ; preds = %invoke.cont315 - call void @_ZdlPv(ptr noundef nonnull %rowsizes.sroa.0.0430436) #27 + call void @_ZdlPv(ptr noundef nonnull %rowsizes.sroa.0.0434440) #27 br label %_ZNSt6vectorIiSaIiEED2Ev.exit _ZNSt6vectorIiSaIiEED2Ev.exit: ; preds = %invoke.cont315, %if.then.i.i.i267 - %tobool.not.i.i.i269 = icmp eq ptr %tileOffsets.sroa.0.0328425437, null + %tobool.not.i.i.i269 = icmp eq ptr %tileOffsets.sroa.0.0328429441, null br i1 %tobool.not.i.i.i269, label %_ZNSt6vectorIPN7Imf_3_211TileOffsetsESaIS2_EED2Ev.exit, label %if.then.i.i.i270 if.then.i.i.i270: ; preds = %_ZNSt6vectorIiSaIiEED2Ev.exit - call void @_ZdlPv(ptr noundef nonnull %tileOffsets.sroa.0.0328425437) #27 + call void @_ZdlPv(ptr noundef nonnull %tileOffsets.sroa.0.0328429441) #27 br label %_ZNSt6vectorIPN7Imf_3_211TileOffsetsESaIS2_EED2Ev.exit _ZNSt6vectorIPN7Imf_3_211TileOffsetsESaIS2_EED2Ev.exit: ; preds = %_ZNSt6vectorIiSaIiEED2Ev.exit, %if.then.i.i.i270 ret void ehcleanup316: ; preds = %lpad39.loopexit, %lpad39.loopexit.split-lp.loopexit.split-lp, %lpad10.i, %if.then.i.i.i - %rowsizes.sroa.0.0428 = phi ptr [ %rowsizes.sroa.0.0430436, %if.then.i.i.i ], [ %rowsizes.sroa.0.0430436, %lpad10.i ], [ %rowsizes.sroa.0.0430436, %lpad39.loopexit ], [ %rowsizes.sroa.0.0429, %lpad39.loopexit.split-lp.loopexit.split-lp ] - %tileOffsets.sroa.0.0328426 = phi ptr [ %tileOffsets.sroa.0.0328425437, %if.then.i.i.i ], [ %tileOffsets.sroa.0.0328425437, %lpad10.i ], [ %tileOffsets.sroa.0.0328425437, %lpad39.loopexit ], [ %tileOffsets.sroa.0.0328427, %lpad39.loopexit.split-lp.loopexit.split-lp ] + %rowsizes.sroa.0.0432 = phi ptr [ %rowsizes.sroa.0.0434440, %if.then.i.i.i ], [ %rowsizes.sroa.0.0434440, %lpad10.i ], [ %rowsizes.sroa.0.0434440, %lpad39.loopexit ], [ %rowsizes.sroa.0.0433, %lpad39.loopexit.split-lp.loopexit.split-lp ] + %tileOffsets.sroa.0.0328430 = phi ptr [ %tileOffsets.sroa.0.0328429441, %if.then.i.i.i ], [ %tileOffsets.sroa.0.0328429441, %lpad10.i ], [ %tileOffsets.sroa.0.0328429441, %lpad39.loopexit ], [ %tileOffsets.sroa.0.0328431, %lpad39.loopexit.split-lp.loopexit.split-lp ] %.pn80 = phi { ptr, i32 } [ %92, %if.then.i.i.i ], [ %92, %lpad10.i ], [ %lpad.loopexit, %lpad39.loopexit ], [ %lpad.loopexit.split-lp345, %lpad39.loopexit.split-lp.loopexit.split-lp ] - %tobool.not.i.i.i272 = icmp eq ptr %rowsizes.sroa.0.0428, null + %tobool.not.i.i.i272 = icmp eq ptr %rowsizes.sroa.0.0432, null br i1 %tobool.not.i.i.i272, label %ehcleanup317, label %if.then.i.i.i273 if.then.i.i.i273: ; preds = %lpad39.loopexit.split-lp.loopexit, %lpad63, %ehcleanup316 - %.pn80445 = phi { ptr, i32 } [ %.pn80, %ehcleanup316 ], [ %lpad.loopexit344, %lpad39.loopexit.split-lp.loopexit ], [ %27, %lpad63 ] - %tileOffsets.sroa.0.0328426443 = phi ptr [ %tileOffsets.sroa.0.0328426, %ehcleanup316 ], [ %call5.i.i.i.i2.i.i93, %lpad39.loopexit.split-lp.loopexit ], [ %call5.i.i.i.i2.i.i93, %lpad63 ] - %rowsizes.sroa.0.0428442 = phi ptr [ %rowsizes.sroa.0.0428, %ehcleanup316 ], [ %call5.i.i.i.i2.i.i112, %lpad39.loopexit.split-lp.loopexit ], [ %call5.i.i.i.i2.i.i112, %lpad63 ] - call void @_ZdlPv(ptr noundef nonnull %rowsizes.sroa.0.0428442) #27 + %.pn80449 = phi { ptr, i32 } [ %.pn80, %ehcleanup316 ], [ %lpad.loopexit344, %lpad39.loopexit.split-lp.loopexit ], [ %27, %lpad63 ] + %tileOffsets.sroa.0.0328430447 = phi ptr [ %tileOffsets.sroa.0.0328430, %ehcleanup316 ], [ %call5.i.i.i.i2.i.i93, %lpad39.loopexit.split-lp.loopexit ], [ %call5.i.i.i.i2.i.i93, %lpad63 ] + %rowsizes.sroa.0.0432446 = phi ptr [ %rowsizes.sroa.0.0432, %ehcleanup316 ], [ %call5.i.i.i.i2.i.i112, %lpad39.loopexit.split-lp.loopexit ], [ %call5.i.i.i.i2.i.i112, %lpad63 ] + call void @_ZdlPv(ptr noundef nonnull %rowsizes.sroa.0.0432446) #27 br label %ehcleanup317 ehcleanup317: ; preds = %if.then.i.i.i273, %ehcleanup316 - %.pn80446 = phi { ptr, i32 } [ %.pn80445, %if.then.i.i.i273 ], [ %.pn80, %ehcleanup316 ] - %tileOffsets.sroa.0.0328426444 = phi ptr [ %tileOffsets.sroa.0.0328426443, %if.then.i.i.i273 ], [ %tileOffsets.sroa.0.0328426, %ehcleanup316 ] - %tobool.not.i.i.i276 = icmp eq ptr %tileOffsets.sroa.0.0328426444, null + %.pn80450 = phi { ptr, i32 } [ %.pn80449, %if.then.i.i.i273 ], [ %.pn80, %ehcleanup316 ] + %tileOffsets.sroa.0.0328430448 = phi ptr [ %tileOffsets.sroa.0.0328430447, %if.then.i.i.i273 ], [ %tileOffsets.sroa.0.0328430, %ehcleanup316 ] + %tobool.not.i.i.i276 = icmp eq ptr %tileOffsets.sroa.0.0328430448, null br i1 %tobool.not.i.i.i276, label %eh.resume, label %if.then.i.i.i277 if.then.i.i.i277: ; preds = %ehcleanup317.thread, %ehcleanup317 - %.pn80.pn339 = phi { ptr, i32 } [ %23, %ehcleanup317.thread ], [ %.pn80446, %ehcleanup317 ] - %tileOffsets.sroa.0.0327338 = phi ptr [ %call5.i.i.i.i2.i.i93, %ehcleanup317.thread ], [ %tileOffsets.sroa.0.0328426444, %ehcleanup317 ] + %.pn80.pn339 = phi { ptr, i32 } [ %23, %ehcleanup317.thread ], [ %.pn80450, %ehcleanup317 ] + %tileOffsets.sroa.0.0327338 = phi ptr [ %call5.i.i.i.i2.i.i93, %ehcleanup317.thread ], [ %tileOffsets.sroa.0.0328430448, %ehcleanup317 ] call void @_ZdlPv(ptr noundef nonnull %tileOffsets.sroa.0.0327338) #27 br label %eh.resume eh.resume: ; preds = %if.then.i.i.i277, %ehcleanup317, %ehcleanup, %cleanup.action, %lpad - %.pn83.pn = phi { ptr, i32 } [ %.pn83323, %cleanup.action ], [ %12, %ehcleanup ], [ %9, %lpad ], [ %.pn80446, %ehcleanup317 ], [ %.pn80.pn339, %if.then.i.i.i277 ] + %.pn83.pn = phi { ptr, i32 } [ %.pn83323, %cleanup.action ], [ %12, %ehcleanup ], [ %9, %lpad ], [ %.pn80450, %ehcleanup317 ], [ %.pn80.pn339, %if.then.i.i.i277 ] resume { ptr, i32 } %.pn83.pn unreachable: ; preds = %invoke.cont64, %invoke.cont18 diff --git a/bench/openexr/optimized/ImfMultiPartOutputFile.cpp.ll b/bench/openexr/optimized/ImfMultiPartOutputFile.cpp.ll index 21353254f36..4035a2f1511 100644 --- a/bench/openexr/optimized/ImfMultiPartOutputFile.cpp.ll +++ b/bench/openexr/optimized/ImfMultiPartOutputFile.cpp.ll @@ -2533,10 +2533,6 @@ invoke.cont18: ; preds = %invoke.cont15 %_M_finish.i50 = getelementptr inbounds i8, ptr %5, i64 144 %6 = load ptr, ptr %_M_finish.i50, align 8 %7 = load ptr, ptr %_headers2349, align 8 - %sub.ptr.lhs.cast.i51 = ptrtoint ptr %6 to i64 - %sub.ptr.rhs.cast.i52 = ptrtoint ptr %7 to i64 - %sub.ptr.sub.i53 = sub i64 %sub.ptr.lhs.cast.i51, %sub.ptr.rhs.cast.i52 - %sub.ptr.div.i54 = sdiv exact i64 %sub.ptr.sub.i53, 56 %cmp2555.not = icmp eq ptr %6, %7 br i1 %cmp2555.not, label %for.end42, label %for.body26.lr.ph @@ -2644,7 +2640,7 @@ for.inc40: ; preds = %_ZNSt6vectorIPN7Imf %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i = sdiv exact i64 %sub.ptr.sub.i, 56 %cmp25 = icmp ult i64 %inc41, %sub.ptr.div.i - br i1 %cmp25, label %for.body26, label %for.end42, !llvm.loop !13 + br i1 %cmp25, label %for.body26, label %for.end42.loopexit, !llvm.loop !13 lpad13.loopexit: ; preds = %for.body26, %cond.true.i.i.i.i %lpad.loopexit = landingpad { ptr, i32 } @@ -2737,47 +2733,50 @@ delete.end: ; preds = %delete.notnull, %ca invoke void @__cxa_rethrow() #24 to label %unreachable unwind label %lpad62 -for.end42: ; preds = %for.inc40, %invoke.cont18 - %.lcssa42 = phi ptr [ %5, %invoke.cont18 ], [ %15, %for.inc40 ] - %.lcssa = phi ptr [ %7, %invoke.cont18 ], [ %17, %for.inc40 ] - %sub.ptr.div.i.lcssa = phi i64 [ %sub.ptr.div.i54, %invoke.cont18 ], [ %sub.ptr.div.i, %for.inc40 ] +for.end42.loopexit: ; preds = %for.inc40 + %24 = trunc i64 %sub.ptr.div.i to i32 + br label %for.end42 + +for.end42: ; preds = %for.end42.loopexit, %invoke.cont18 + %.lcssa42 = phi ptr [ %5, %invoke.cont18 ], [ %15, %for.end42.loopexit ] + %.lcssa = phi ptr [ %7, %invoke.cont18 ], [ %17, %for.end42.loopexit ] + %sub.ptr.div.i.lcssa = phi i32 [ 0, %invoke.cont18 ], [ %24, %for.end42.loopexit ] %os44 = getelementptr inbounds i8, ptr %.lcssa42, i64 40 - %24 = load ptr, ptr %os44, align 8 - %conv51 = trunc i64 %sub.ptr.div.i.lcssa to i32 - invoke void @_ZN7Imf_3_217GenericOutputFile31writeMagicNumberAndVersionFieldERNS_7OStreamEPKNS_6HeaderEi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(40) %24, ptr noundef nonnull %.lcssa, i32 noundef %conv51) + %25 = load ptr, ptr %os44, align 8 + invoke void @_ZN7Imf_3_217GenericOutputFile31writeMagicNumberAndVersionFieldERNS_7OStreamEPKNS_6HeaderEi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(40) %25, ptr noundef nonnull %.lcssa, i32 noundef %sub.ptr.div.i.lcssa) to label %invoke.cont52 unwind label %lpad13.loopexit.split-lp invoke.cont52: ; preds = %for.end42 - %25 = load ptr, ptr %_data, align 8 - %_headers55 = getelementptr inbounds i8, ptr %25, i64 136 - invoke void @_ZN7Imf_3_219MultiPartOutputFile4Data18writeHeadersToFileERKSt6vectorINS_6HeaderESaIS3_EE(ptr noundef nonnull align 8 dereferenceable(160) %25, ptr noundef nonnull align 8 dereferenceable(24) %_headers55) + %26 = load ptr, ptr %_data, align 8 + %_headers55 = getelementptr inbounds i8, ptr %26, i64 136 + invoke void @_ZN7Imf_3_219MultiPartOutputFile4Data18writeHeadersToFileERKSt6vectorINS_6HeaderESaIS3_EE(ptr noundef nonnull align 8 dereferenceable(160) %26, ptr noundef nonnull align 8 dereferenceable(24) %_headers55) to label %invoke.cont56 unwind label %lpad13.loopexit.split-lp invoke.cont56: ; preds = %invoke.cont52 - %26 = load ptr, ptr %_data, align 8 - %parts59 = getelementptr inbounds i8, ptr %26, i64 56 - invoke void @_ZN7Imf_3_219MultiPartOutputFile4Data22writeChunkTableOffsetsERSt6vectorIPNS_14OutputPartDataESaIS4_EE(ptr noundef nonnull align 8 dereferenceable(160) %26, ptr noundef nonnull align 8 dereferenceable(24) %parts59) + %27 = load ptr, ptr %_data, align 8 + %parts59 = getelementptr inbounds i8, ptr %27, i64 56 + invoke void @_ZN7Imf_3_219MultiPartOutputFile4Data22writeChunkTableOffsetsERSt6vectorIPNS_14OutputPartDataESaIS4_EE(ptr noundef nonnull align 8 dereferenceable(160) %27, ptr noundef nonnull align 8 dereferenceable(24) %parts59) to label %try.cont unwind label %lpad13.loopexit.split-lp lpad62: ; preds = %delete.end - %27 = landingpad { ptr, i32 } + %28 = landingpad { ptr, i32 } cleanup invoke void @__cxa_end_catch() to label %ehcleanup85 unwind label %terminate.lpad lpad70: ; preds = %invoke.cont82, %do.body - %28 = landingpad { ptr, i32 } + %29 = landingpad { ptr, i32 } cleanup br label %ehcleanup lpad72: ; preds = %invoke.cont80, %invoke.cont77, %invoke.cont75, %invoke.cont73, %invoke.cont71 - %29 = landingpad { ptr, i32 } + %30 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %_iex_replace_s) #25 br label %ehcleanup ehcleanup: ; preds = %lpad72, %lpad70 - %.pn15 = phi { ptr, i32 } [ %28, %lpad70 ], [ %29, %lpad72 ] + %.pn15 = phi { ptr, i32 } [ %29, %lpad70 ], [ %30, %lpad72 ] invoke void @__cxa_end_catch() to label %ehcleanup85 unwind label %terminate.lpad @@ -2785,15 +2784,15 @@ try.cont: ; preds = %invoke.cont56 ret void ehcleanup85: ; preds = %lpad.loopexit31, %lpad.loopexit.split-lp32, %ehcleanup, %lpad62 - %.pn17 = phi { ptr, i32 } [ %.pn15, %ehcleanup ], [ %27, %lpad62 ], [ %lpad.loopexit33, %lpad.loopexit31 ], [ %lpad.loopexit.split-lp34, %lpad.loopexit.split-lp32 ] + %.pn17 = phi { ptr, i32 } [ %.pn15, %ehcleanup ], [ %28, %lpad62 ], [ %lpad.loopexit33, %lpad.loopexit31 ], [ %lpad.loopexit.split-lp34, %lpad.loopexit.split-lp32 ] call void @_ZN7Imf_3_217GenericOutputFileD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) #25 resume { ptr, i32 } %.pn17 terminate.lpad: ; preds = %ehcleanup, %lpad62 - %30 = landingpad { ptr, i32 } + %31 = landingpad { ptr, i32 } catch ptr null - %31 = extractvalue { ptr, i32 } %30, 0 - call void @__clang_call_terminate(ptr %31) #29 + %32 = extractvalue { ptr, i32 } %31, 0 + call void @__clang_call_terminate(ptr %32) #29 unreachable unreachable: ; preds = %delete.end, %invoke.cont82 @@ -3222,10 +3221,6 @@ for.cond18.preheader: ; preds = %for.end %_M_finish.i50 = getelementptr inbounds i8, ptr %4, i64 144 %5 = load ptr, ptr %_M_finish.i50, align 8 %6 = load ptr, ptr %_headers2049, align 8 - %sub.ptr.lhs.cast.i51 = ptrtoint ptr %5 to i64 - %sub.ptr.rhs.cast.i52 = ptrtoint ptr %6 to i64 - %sub.ptr.sub.i53 = sub i64 %sub.ptr.lhs.cast.i51, %sub.ptr.rhs.cast.i52 - %sub.ptr.div.i54 = sdiv exact i64 %sub.ptr.sub.i53, 56 %cmp2255.not = icmp eq ptr %5, %6 br i1 %cmp2255.not, label %for.end39, label %for.body23.lr.ph @@ -3333,7 +3328,7 @@ for.inc37: ; preds = %_ZNSt6vectorIPN7Imf %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i = sdiv exact i64 %sub.ptr.sub.i, 56 %cmp22 = icmp ult i64 %inc38, %sub.ptr.div.i - br i1 %cmp22, label %for.body23, label %for.end39, !llvm.loop !20 + br i1 %cmp22, label %for.body23, label %for.end39.loopexit, !llvm.loop !20 lpad15.loopexit: ; preds = %for.body23, %cond.true.i.i.i.i %lpad.loopexit = landingpad { ptr, i32 } @@ -3423,47 +3418,50 @@ delete.end: ; preds = %delete.notnull, %ca invoke void @__cxa_rethrow() #24 to label %unreachable unwind label %lpad59 -for.end39: ; preds = %for.inc37, %for.cond18.preheader - %.lcssa42 = phi ptr [ %4, %for.cond18.preheader ], [ %14, %for.inc37 ] - %.lcssa = phi ptr [ %6, %for.cond18.preheader ], [ %16, %for.inc37 ] - %sub.ptr.div.i.lcssa = phi i64 [ %sub.ptr.div.i54, %for.cond18.preheader ], [ %sub.ptr.div.i, %for.inc37 ] +for.end39.loopexit: ; preds = %for.inc37 + %22 = trunc i64 %sub.ptr.div.i to i32 + br label %for.end39 + +for.end39: ; preds = %for.end39.loopexit, %for.cond18.preheader + %.lcssa42 = phi ptr [ %4, %for.cond18.preheader ], [ %14, %for.end39.loopexit ] + %.lcssa = phi ptr [ %6, %for.cond18.preheader ], [ %16, %for.end39.loopexit ] + %sub.ptr.div.i.lcssa = phi i32 [ 0, %for.cond18.preheader ], [ %22, %for.end39.loopexit ] %os41 = getelementptr inbounds i8, ptr %.lcssa42, i64 40 - %22 = load ptr, ptr %os41, align 8 - %conv48 = trunc i64 %sub.ptr.div.i.lcssa to i32 - invoke void @_ZN7Imf_3_217GenericOutputFile31writeMagicNumberAndVersionFieldERNS_7OStreamEPKNS_6HeaderEi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(40) %22, ptr noundef nonnull %.lcssa, i32 noundef %conv48) + %23 = load ptr, ptr %os41, align 8 + invoke void @_ZN7Imf_3_217GenericOutputFile31writeMagicNumberAndVersionFieldERNS_7OStreamEPKNS_6HeaderEi(ptr noundef nonnull align 8 dereferenceable(8) %this, ptr noundef nonnull align 8 dereferenceable(40) %23, ptr noundef nonnull %.lcssa, i32 noundef %sub.ptr.div.i.lcssa) to label %invoke.cont49 unwind label %lpad15.loopexit.split-lp invoke.cont49: ; preds = %for.end39 - %23 = load ptr, ptr %_data, align 8 - %_headers52 = getelementptr inbounds i8, ptr %23, i64 136 - invoke void @_ZN7Imf_3_219MultiPartOutputFile4Data18writeHeadersToFileERKSt6vectorINS_6HeaderESaIS3_EE(ptr noundef nonnull align 8 dereferenceable(160) %23, ptr noundef nonnull align 8 dereferenceable(24) %_headers52) + %24 = load ptr, ptr %_data, align 8 + %_headers52 = getelementptr inbounds i8, ptr %24, i64 136 + invoke void @_ZN7Imf_3_219MultiPartOutputFile4Data18writeHeadersToFileERKSt6vectorINS_6HeaderESaIS3_EE(ptr noundef nonnull align 8 dereferenceable(160) %24, ptr noundef nonnull align 8 dereferenceable(24) %_headers52) to label %invoke.cont53 unwind label %lpad15.loopexit.split-lp invoke.cont53: ; preds = %invoke.cont49 - %24 = load ptr, ptr %_data, align 8 - %parts56 = getelementptr inbounds i8, ptr %24, i64 56 - invoke void @_ZN7Imf_3_219MultiPartOutputFile4Data22writeChunkTableOffsetsERSt6vectorIPNS_14OutputPartDataESaIS4_EE(ptr noundef nonnull align 8 dereferenceable(160) %24, ptr noundef nonnull align 8 dereferenceable(24) %parts56) + %25 = load ptr, ptr %_data, align 8 + %parts56 = getelementptr inbounds i8, ptr %25, i64 56 + invoke void @_ZN7Imf_3_219MultiPartOutputFile4Data22writeChunkTableOffsetsERSt6vectorIPNS_14OutputPartDataESaIS4_EE(ptr noundef nonnull align 8 dereferenceable(160) %25, ptr noundef nonnull align 8 dereferenceable(24) %parts56) to label %try.cont unwind label %lpad15.loopexit.split-lp lpad59: ; preds = %delete.end - %25 = landingpad { ptr, i32 } + %26 = landingpad { ptr, i32 } cleanup invoke void @__cxa_end_catch() to label %ehcleanup84 unwind label %terminate.lpad lpad67: ; preds = %invoke.cont81, %do.body - %26 = landingpad { ptr, i32 } + %27 = landingpad { ptr, i32 } cleanup br label %ehcleanup lpad69: ; preds = %invoke.cont79, %invoke.cont76, %invoke.cont74, %invoke.cont72, %invoke.cont70, %invoke.cont68 - %27 = landingpad { ptr, i32 } + %28 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %_iex_replace_s) #25 br label %ehcleanup ehcleanup: ; preds = %lpad69, %lpad67 - %.pn15 = phi { ptr, i32 } [ %26, %lpad67 ], [ %27, %lpad69 ] + %.pn15 = phi { ptr, i32 } [ %27, %lpad67 ], [ %28, %lpad69 ] invoke void @__cxa_end_catch() to label %ehcleanup84 unwind label %terminate.lpad @@ -3471,15 +3469,15 @@ try.cont: ; preds = %invoke.cont53 ret void ehcleanup84: ; preds = %lpad.loopexit31, %lpad.loopexit.split-lp32, %ehcleanup, %lpad59 - %.pn17 = phi { ptr, i32 } [ %.pn15, %ehcleanup ], [ %25, %lpad59 ], [ %lpad.loopexit33, %lpad.loopexit31 ], [ %lpad.loopexit.split-lp34, %lpad.loopexit.split-lp32 ] + %.pn17 = phi { ptr, i32 } [ %.pn15, %ehcleanup ], [ %26, %lpad59 ], [ %lpad.loopexit33, %lpad.loopexit31 ], [ %lpad.loopexit.split-lp34, %lpad.loopexit.split-lp32 ] call void @_ZN7Imf_3_217GenericOutputFileD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %this) #25 resume { ptr, i32 } %.pn17 terminate.lpad: ; preds = %ehcleanup, %lpad59 - %28 = landingpad { ptr, i32 } + %29 = landingpad { ptr, i32 } catch ptr null - %29 = extractvalue { ptr, i32 } %28, 0 - call void @__clang_call_terminate(ptr %29) #29 + %30 = extractvalue { ptr, i32 } %29, 0 + call void @__clang_call_terminate(ptr %30) #29 unreachable unreachable: ; preds = %delete.end, %invoke.cont81 diff --git a/bench/openmpi/optimized/pmix_query.ll b/bench/openmpi/optimized/pmix_query.ll index 8384917a9ec..0b341dfd463 100644 --- a/bench/openmpi/optimized/pmix_query.ll +++ b/bench/openmpi/optimized/pmix_query.ll @@ -1107,7 +1107,7 @@ define internal fastcc i32 @request_help(ptr noundef %0) unnamed_addr #1 { %27 = getelementptr inbounds i8, ptr %0, i64 488 %28 = load i64, ptr %27, align 8 %29 = tail call i32 %24(ptr noundef nonnull getelementptr inbounds (i8, ptr @pmix_globals, i64 4), ptr noundef %26, i64 noundef %28, ptr noundef nonnull @finalstep, ptr noundef nonnull %0) #12 - br label %127 + br label %125 30: ; preds = %._crit_edge %31 = load i8, ptr getelementptr inbounds (i8, ptr @pmix_globals, i64 1632), align 8 @@ -1116,7 +1116,7 @@ define internal fastcc i32 @request_help(ptr noundef %0) unnamed_addr #1 { fence release %33 = tail call i32 @pthread_cond_broadcast(ptr noundef nonnull getelementptr inbounds (i8, ptr @pmix_global_lock, i64 168)) #12 %34 = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull getelementptr inbounds (i8, ptr @pmix_global_lock, i64 128)) #12 - br i1 %32, label %35, label %127 + br i1 %32, label %35, label %125 35: ; preds = %30 %36 = getelementptr inbounds i8, ptr %0, i64 480 @@ -1175,7 +1175,7 @@ pmix_query_get_num_local_resolve.exit.thread: ; preds = %35, %pmix_query_get %56 = getelementptr inbounds i8, ptr %0, i64 896 %57 = load ptr, ptr %56, align 8 %58 = tail call fastcc i32 @send_for_help(ptr noundef %37, i64 noundef %39, ptr noundef %55, ptr noundef %57) - br label %127 + br label %125 59: ; preds = %pmix_query_get_num_local_resolve.exit %60 = load i64, ptr getelementptr inbounds (i8, ptr @pmix_local_query_caddy_t_class, i64 56), align 8 @@ -1239,12 +1239,12 @@ pmix_obj_new_tma.exit: ; preds = %.lr.ph.i.i, %65, %6 %89 = getelementptr inbounds i8, ptr %61, i64 488 store i64 %88, ptr %89, align 8 %.not28 = icmp eq i64 %85, %.1.lcssa.i - br i1 %.not28, label %116, label %90 + br i1 %.not28, label %.thread, label %90 90: ; preds = %pmix_obj_new_tma.exit %91 = tail call ptr @PMIx_Query_create(i64 noundef %88) #12 %.not3541.not.i = icmp eq i64 %85, 0 - br i1 %.not3541.not.i, label %pmix_query_strip_local_keys.exit, label %.preheader.i31 + br i1 %.not3541.not.i, label %.loopexit, label %.preheader.i31 .preheader.i31: ; preds = %90, %._crit_edge.i36 %.02343.i = phi i64 [ %spec.select.i37, %._crit_edge.i36 ], [ 0, %90 ] @@ -1302,44 +1302,43 @@ pmix_query_check_is_local_resolve.exit.thread.i34: ; preds = %105, %pmix_query_c %spec.select.i37 = add i64 %.022.lcssa.i, %.02343.i %113 = add nuw i64 %.02642.i, 1 %exitcond.not.i38 = icmp eq i64 %113, %85 - br i1 %exitcond.not.i38, label %pmix_query_strip_local_keys.exit, label %.preheader.i31, !llvm.loop !17 + br i1 %exitcond.not.i38, label %.loopexit, label %.preheader.i31, !llvm.loop !17 114: ; preds = %103 tail call void @PMIx_Query_release(ptr noundef %91) #12 - br label %pmix_query_strip_local_keys.exit + br label %.loopexit -pmix_query_strip_local_keys.exit: ; preds = %._crit_edge.i36, %90, %114 - %.0.i = phi ptr [ null, %114 ], [ %91, %90 ], [ %91, %._crit_edge.i36 ] +.thread: ; preds = %pmix_obj_new_tma.exit %115 = getelementptr inbounds i8, ptr %61, i64 480 - store ptr %.0.i, ptr %115, align 8 + store ptr null, ptr %115, align 8 + %116 = getelementptr inbounds i8, ptr %61, i64 848 + store ptr @pmix_query_local_resolve_cbfunc, ptr %116, align 8 + %117 = getelementptr inbounds i8, ptr %61, i64 896 + store ptr %2, ptr %117, align 8 + br label %122 + +.loopexit: ; preds = %._crit_edge.i36, %114, %90 + %.0.i = phi ptr [ null, %114 ], [ %91, %90 ], [ %91, %._crit_edge.i36 ] + %118 = getelementptr inbounds i8, ptr %61, i64 480 + store ptr %.0.i, ptr %118, align 8 %.pre = load i64, ptr %89, align 8 - br label %118 - -116: ; preds = %pmix_obj_new_tma.exit - %117 = getelementptr inbounds i8, ptr %61, i64 480 - store ptr null, ptr %117, align 8 - br label %118 - -118: ; preds = %116, %pmix_query_strip_local_keys.exit - %119 = phi ptr [ null, %116 ], [ %.0.i, %pmix_query_strip_local_keys.exit ] - %120 = phi i64 [ %88, %116 ], [ %.pre, %pmix_query_strip_local_keys.exit ] - %121 = getelementptr inbounds i8, ptr %61, i64 848 - store ptr @pmix_query_local_resolve_cbfunc, ptr %121, align 8 - %122 = getelementptr inbounds i8, ptr %61, i64 896 - store ptr %2, ptr %122, align 8 - %123 = icmp eq i64 %120, 0 - br i1 %123, label %124, label %125 - -124: ; preds = %118 + %119 = getelementptr inbounds i8, ptr %61, i64 848 + store ptr @pmix_query_local_resolve_cbfunc, ptr %119, align 8 + %120 = getelementptr inbounds i8, ptr %61, i64 896 + store ptr %2, ptr %120, align 8 + %121 = icmp eq i64 %.pre, 0 + br i1 %121, label %122, label %123 + +122: ; preds = %.thread, %.loopexit call void @pmix_query_local_resolve_cbfunc(i32 noundef 0, ptr noundef null, i64 noundef 0, ptr noundef nonnull %61, ptr noundef null, ptr noundef null) - br label %127 + br label %125 -125: ; preds = %118 - %126 = call fastcc i32 @send_for_help(ptr noundef %119, i64 noundef %120, ptr noundef nonnull @pmix_query_local_resolve_cbfunc, ptr noundef nonnull %61) - br label %127 +123: ; preds = %.loopexit + %124 = call fastcc i32 @send_for_help(ptr noundef %.0.i, i64 noundef %.pre, ptr noundef nonnull @pmix_query_local_resolve_cbfunc, ptr noundef nonnull %61) + br label %125 -127: ; preds = %30, %pmix_query_get_num_local_resolve.exit.thread, %125, %124, %23 - %.0 = phi i32 [ %29, %23 ], [ %58, %pmix_query_get_num_local_resolve.exit.thread ], [ 0, %124 ], [ %126, %125 ], [ -25, %30 ] +125: ; preds = %30, %pmix_query_get_num_local_resolve.exit.thread, %123, %122, %23 + %.0 = phi i32 [ %29, %23 ], [ %58, %pmix_query_get_num_local_resolve.exit.thread ], [ 0, %122 ], [ %124, %123 ], [ -25, %30 ] ret i32 %.0 } diff --git a/bench/openspiel/optimized/simple_gin_rummy_bot.cc.ll b/bench/openspiel/optimized/simple_gin_rummy_bot.cc.ll index c6d5e4ea2ba..90c46168b36 100644 --- a/bench/openspiel/optimized/simple_gin_rummy_bot.cc.ll +++ b/bench/openspiel/optimized/simple_gin_rummy_bot.cc.ll @@ -1058,100 +1058,98 @@ _ZNSt6vectorISt4pairIldESaIS1_EE12emplace_backIJRldEEERS1_DpOT_.exit: ; preds = %55 = sub i64 %53, %54 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %0, i8 0, i64 24, i1 false) %.not.i.i.i.i.i = icmp eq ptr %.sroa.7.1, %.sroa.024.3 - br i1 %.not.i.i.i.i.i, label %.noexc9.thread, label %61 + br i1 %.not.i.i.i.i.i, label %.noexc9.thread, label %59 .noexc9.thread: ; preds = %14, %._crit_edge - %56 = phi i64 [ %55, %._crit_edge ], [ 0, %14 ] - %57 = phi i64 [ %54, %._crit_edge ], [ 0, %14 ] + %56 = phi i64 [ %54, %._crit_edge ], [ 0, %14 ] %.sroa.024.1.lcssa68 = phi ptr [ %.sroa.024.3, %._crit_edge ], [ null, %14 ] %.sroa.15.1.lcssa66 = phi ptr [ %.sroa.15.3, %._crit_edge ], [ null, %14 ] - %58 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %59 = getelementptr inbounds i8, ptr null, i64 %56 - %60 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %57 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %58 = getelementptr inbounds nuw i8, ptr %0, i64 16 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %0, i8 0, i64 16, i1 false) - store ptr %59, ptr %60, align 8 + store ptr null, ptr %58, align 8 br label %.loopexit -61: ; preds = %._crit_edge - %62 = icmp ugt i64 %55, 9223372036854775792 - br i1 %62, label %.noexc.i.i.i, label %_ZNSt16allocator_traitsISaISt4pairIldEEE8allocateERS2_m.exit.i.i.i.i.i +59: ; preds = %._crit_edge + %60 = icmp ugt i64 %55, 9223372036854775792 + br i1 %60, label %.noexc.i.i.i, label %_ZNSt16allocator_traitsISaISt4pairIldEEE8allocateERS2_m.exit.i.i.i.i.i -.noexc.i.i.i: ; preds = %61 +.noexc.i.i.i: ; preds = %59 invoke void @_ZSt28__throw_bad_array_new_lengthv() #19 to label %.noexc8 unwind label %.loopexit.split-lp .noexc8: ; preds = %.noexc.i.i.i unreachable -_ZNSt16allocator_traitsISaISt4pairIldEEE8allocateERS2_m.exit.i.i.i.i.i: ; preds = %61 - %63 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %55) #21 +_ZNSt16allocator_traitsISaISt4pairIldEEE8allocateERS2_m.exit.i.i.i.i.i: ; preds = %59 + %61 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %55) #21 to label %.noexc9 unwind label %.loopexit.split-lp .noexc9: ; preds = %_ZNSt16allocator_traitsISaISt4pairIldEEE8allocateERS2_m.exit.i.i.i.i.i - store ptr %63, ptr %0, align 8 - %64 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %61, ptr %0, align 8 + %62 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %61, ptr %62, align 8 + %63 = getelementptr inbounds i8, ptr %61, i64 %55 + %64 = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr %63, ptr %64, align 8 - %65 = getelementptr inbounds i8, ptr %63, i64 %55 - %66 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %65, ptr %66, align 8 br label %.lr.ph.i.i.i.i.i.i .lr.ph.i.i.i.i.i.i: ; preds = %.noexc9, %.lr.ph.i.i.i.i.i.i - %.09.i.i.i.i.i.i = phi ptr [ %68, %.lr.ph.i.i.i.i.i.i ], [ %63, %.noexc9 ] - %.sroa.04.08.i.i.i.i.i.i = phi ptr [ %67, %.lr.ph.i.i.i.i.i.i ], [ %.sroa.024.3, %.noexc9 ] + %.09.i.i.i.i.i.i = phi ptr [ %66, %.lr.ph.i.i.i.i.i.i ], [ %61, %.noexc9 ] + %.sroa.04.08.i.i.i.i.i.i = phi ptr [ %65, %.lr.ph.i.i.i.i.i.i ], [ %.sroa.024.3, %.noexc9 ] call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.09.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.04.08.i.i.i.i.i.i, i64 16, i1 false) - %67 = getelementptr inbounds i8, ptr %.sroa.04.08.i.i.i.i.i.i, i64 16 - %68 = getelementptr inbounds i8, ptr %.09.i.i.i.i.i.i, i64 16 + %65 = getelementptr inbounds i8, ptr %.sroa.04.08.i.i.i.i.i.i, i64 16 + %66 = getelementptr inbounds i8, ptr %.09.i.i.i.i.i.i, i64 16 %.not.i.i.i.i.i.i = icmp eq ptr %.sroa.04.08.i.i.i.i.i.i, %.0.lcssa.i.i.i.i.pn br i1 %.not.i.i.i.i.i.i, label %.loopexit, label %.lr.ph.i.i.i.i.i.i, !llvm.loop !18 .loopexit: ; preds = %.lr.ph.i.i.i.i.i.i, %.noexc9.thread - %69 = phi i64 [ %57, %.noexc9.thread ], [ %54, %.lr.ph.i.i.i.i.i.i ] + %67 = phi i64 [ %56, %.noexc9.thread ], [ %54, %.lr.ph.i.i.i.i.i.i ] %.sroa.024.1.lcssa67 = phi ptr [ %.sroa.024.1.lcssa68, %.noexc9.thread ], [ %.sroa.024.3, %.lr.ph.i.i.i.i.i.i ] %.sroa.15.1.lcssa65 = phi ptr [ %.sroa.15.1.lcssa66, %.noexc9.thread ], [ %.sroa.15.3, %.lr.ph.i.i.i.i.i.i ] - %70 = phi ptr [ %58, %.noexc9.thread ], [ %64, %.lr.ph.i.i.i.i.i.i ] - %.0.lcssa.i.i.i.i.i.i = phi ptr [ null, %.noexc9.thread ], [ %68, %.lr.ph.i.i.i.i.i.i ] - store ptr %.0.lcssa.i.i.i.i.i.i, ptr %70, align 8 - %71 = getelementptr inbounds nuw i8, ptr %0, i64 24 - store i64 %13, ptr %71, align 8 - %72 = load ptr, ptr %4, align 8 - %.not.i.i.i10 = icmp eq ptr %72, null - br i1 %.not.i.i.i10, label %_ZNSt6vectorIlSaIlEED2Ev.exit11, label %73 - -73: ; preds = %.loopexit - %74 = getelementptr inbounds nuw i8, ptr %4, i64 16 - %75 = load ptr, ptr %74, align 8 - %76 = ptrtoint ptr %75 to i64 - %77 = ptrtoint ptr %72 to i64 - %78 = sub i64 %76, %77 - call void @_ZdlPvm(ptr noundef nonnull %72, i64 noundef %78) #22 + %68 = phi ptr [ %57, %.noexc9.thread ], [ %62, %.lr.ph.i.i.i.i.i.i ] + %.0.lcssa.i.i.i.i.i.i = phi ptr [ null, %.noexc9.thread ], [ %66, %.lr.ph.i.i.i.i.i.i ] + store ptr %.0.lcssa.i.i.i.i.i.i, ptr %68, align 8 + %69 = getelementptr inbounds nuw i8, ptr %0, i64 24 + store i64 %13, ptr %69, align 8 + %70 = load ptr, ptr %4, align 8 + %.not.i.i.i10 = icmp eq ptr %70, null + br i1 %.not.i.i.i10, label %_ZNSt6vectorIlSaIlEED2Ev.exit11, label %71 + +71: ; preds = %.loopexit + %72 = getelementptr inbounds nuw i8, ptr %4, i64 16 + %73 = load ptr, ptr %72, align 8 + %74 = ptrtoint ptr %73 to i64 + %75 = ptrtoint ptr %70 to i64 + %76 = sub i64 %74, %75 + call void @_ZdlPvm(ptr noundef nonnull %70, i64 noundef %76) #22 br label %_ZNSt6vectorIlSaIlEED2Ev.exit11 -_ZNSt6vectorIlSaIlEED2Ev.exit11: ; preds = %.loopexit, %73 +_ZNSt6vectorIlSaIlEED2Ev.exit11: ; preds = %.loopexit, %71 %.not.i.i.i12 = icmp eq ptr %.sroa.024.1.lcssa67, null - br i1 %.not.i.i.i12, label %_ZNSt6vectorISt4pairIldESaIS1_EED2Ev.exit, label %79 + br i1 %.not.i.i.i12, label %_ZNSt6vectorISt4pairIldESaIS1_EED2Ev.exit, label %77 -79: ; preds = %_ZNSt6vectorIlSaIlEED2Ev.exit11 - %80 = ptrtoint ptr %.sroa.15.1.lcssa65 to i64 - %81 = sub i64 %80, %69 - call void @_ZdlPvm(ptr noundef nonnull %.sroa.024.1.lcssa67, i64 noundef %81) #22 +77: ; preds = %_ZNSt6vectorIlSaIlEED2Ev.exit11 + %78 = ptrtoint ptr %.sroa.15.1.lcssa65 to i64 + %79 = sub i64 %78, %67 + call void @_ZdlPvm(ptr noundef nonnull %.sroa.024.1.lcssa67, i64 noundef %79) #22 br label %_ZNSt6vectorISt4pairIldESaIS1_EED2Ev.exit -_ZNSt6vectorISt4pairIldESaIS1_EED2Ev.exit: ; preds = %_ZNSt6vectorIlSaIlEED2Ev.exit11, %79 +_ZNSt6vectorISt4pairIldESaIS1_EED2Ev.exit: ; preds = %_ZNSt6vectorIlSaIlEED2Ev.exit11, %77 ret void _ZNSt6vectorIlSaIlEED2Ev.exit: ; preds = %47, %45 %.not.i.i.i13 = icmp eq ptr %.sroa.024.0, null - br i1 %.not.i.i.i13, label %_ZNSt6vectorISt4pairIldESaIS1_EED2Ev.exit14, label %82 + br i1 %.not.i.i.i13, label %_ZNSt6vectorISt4pairIldESaIS1_EED2Ev.exit14, label %80 -82: ; preds = %_ZNSt6vectorIlSaIlEED2Ev.exit - %83 = ptrtoint ptr %.sroa.15.0 to i64 - %84 = ptrtoint ptr %.sroa.024.0 to i64 - %85 = sub i64 %83, %84 - call void @_ZdlPvm(ptr noundef nonnull %.sroa.024.0, i64 noundef %85) #22 +80: ; preds = %_ZNSt6vectorIlSaIlEED2Ev.exit + %81 = ptrtoint ptr %.sroa.15.0 to i64 + %82 = ptrtoint ptr %.sroa.024.0 to i64 + %83 = sub i64 %81, %82 + call void @_ZdlPvm(ptr noundef nonnull %.sroa.024.0, i64 noundef %83) #22 br label %_ZNSt6vectorISt4pairIldESaIS1_EED2Ev.exit14 -_ZNSt6vectorISt4pairIldESaIS1_EED2Ev.exit14: ; preds = %_ZNSt6vectorIlSaIlEED2Ev.exit, %82 +_ZNSt6vectorISt4pairIldESaIS1_EED2Ev.exit14: ; preds = %_ZNSt6vectorIlSaIlEED2Ev.exit, %80 resume { ptr, i32 } %lpad.phi } @@ -6861,43 +6859,43 @@ _ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIi %50 = icmp slt i32 %45, %46 %51 = icmp slt i32 %47, %48 %.0.i.i.i27 = select i1 %49, i1 %50, i1 %51 - br i1 %.0.i.i.i27, label %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEES6_ET0_T_S8_S7_.exit.i38, label %57 + br i1 %.0.i.i.i27, label %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEES6_ET0_T_S8_S7_.exit.i38, label %58 _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEES6_ET0_T_S8_S7_.exit.i38: ; preds = %.lr.ph.i24 %52 = getelementptr inbounds i8, ptr %.pn21.i26, i64 8 %53 = ptrtoint ptr %.sroa.0.022.i25 to i64 %54 = sub i64 %53, %5 %55 = ashr exact i64 %54, 2 - %.pre.i.i.i.i.i.i39 = sub nsw i64 0, %55 - %56 = getelementptr inbounds i32, ptr %52, i64 %.pre.i.i.i.i.i.i39 - tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %56, ptr noundef nonnull align 4 dereferenceable(1) %0, i64 %54, i1 false) + %56 = sub nsw i64 0, %55 + %57 = getelementptr inbounds i32, ptr %52, i64 %56 + tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %57, ptr noundef nonnull align 4 dereferenceable(1) %0, i64 %54, i1 false) br label %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEENS0_5__ops14_Val_comp_iterIN10open_spiel9gin_rummy14RankComparatorEEEEvT_T0_.exit.i29 -57: ; preds = %.lr.ph.i24 - %58 = load i32, ptr %.pn21.i26, align 4 - %59 = srem i32 %58, %2 - %60 = icmp eq i32 %47, %59 - %61 = icmp slt i32 %45, %58 - %62 = icmp slt i32 %47, %59 - %.0.i.i9.i.i28 = select i1 %60, i1 %61, i1 %62 +58: ; preds = %.lr.ph.i24 + %59 = load i32, ptr %.pn21.i26, align 4 + %60 = srem i32 %59, %2 + %61 = icmp eq i32 %47, %60 + %62 = icmp slt i32 %45, %59 + %63 = icmp slt i32 %47, %60 + %.0.i.i9.i.i28 = select i1 %61, i1 %62, i1 %63 br i1 %.0.i.i9.i.i28, label %.lr.ph.i.i33, label %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEENS0_5__ops14_Val_comp_iterIN10open_spiel9gin_rummy14RankComparatorEEEEvT_T0_.exit.i29 -.lr.ph.i.i33: ; preds = %57, %.lr.ph.i.i33 - %63 = phi i32 [ %64, %.lr.ph.i.i33 ], [ %58, %57 ] - %.sroa.0.011.i.i34 = phi ptr [ %.sroa.0.0.i.i36, %.lr.ph.i.i33 ], [ %.pn21.i26, %57 ] - %.sroa.05.010.i.i35 = phi ptr [ %.sroa.0.011.i.i34, %.lr.ph.i.i33 ], [ %.sroa.0.022.i25, %57 ] - store i32 %63, ptr %.sroa.05.010.i.i35, align 4 +.lr.ph.i.i33: ; preds = %58, %.lr.ph.i.i33 + %64 = phi i32 [ %65, %.lr.ph.i.i33 ], [ %59, %58 ] + %.sroa.0.011.i.i34 = phi ptr [ %.sroa.0.0.i.i36, %.lr.ph.i.i33 ], [ %.pn21.i26, %58 ] + %.sroa.05.010.i.i35 = phi ptr [ %.sroa.0.011.i.i34, %.lr.ph.i.i33 ], [ %.sroa.0.022.i25, %58 ] + store i32 %64, ptr %.sroa.05.010.i.i35, align 4 %.sroa.0.0.i.i36 = getelementptr inbounds i8, ptr %.sroa.0.011.i.i34, i64 -4 - %64 = load i32, ptr %.sroa.0.0.i.i36, align 4 - %65 = srem i32 %64, %2 - %66 = icmp eq i32 %47, %65 - %67 = icmp slt i32 %45, %64 - %68 = icmp slt i32 %47, %65 - %.0.i.i.i.i37 = select i1 %66, i1 %67, i1 %68 + %65 = load i32, ptr %.sroa.0.0.i.i36, align 4 + %66 = srem i32 %65, %2 + %67 = icmp eq i32 %47, %66 + %68 = icmp slt i32 %45, %65 + %69 = icmp slt i32 %47, %66 + %.0.i.i.i.i37 = select i1 %67, i1 %68, i1 %69 br i1 %.0.i.i.i.i37, label %.lr.ph.i.i33, label %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEENS0_5__ops14_Val_comp_iterIN10open_spiel9gin_rummy14RankComparatorEEEEvT_T0_.exit.i29, !llvm.loop !46 -_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEENS0_5__ops14_Val_comp_iterIN10open_spiel9gin_rummy14RankComparatorEEEEvT_T0_.exit.i29: ; preds = %.lr.ph.i.i33, %57, %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEES6_ET0_T_S8_S7_.exit.i38 - %.sink.i30 = phi ptr [ %0, %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEES6_ET0_T_S8_S7_.exit.i38 ], [ %.sroa.0.022.i25, %57 ], [ %.sroa.0.011.i.i34, %.lr.ph.i.i33 ] +_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEENS0_5__ops14_Val_comp_iterIN10open_spiel9gin_rummy14RankComparatorEEEEvT_T0_.exit.i29: ; preds = %.lr.ph.i.i33, %58, %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEES6_ET0_T_S8_S7_.exit.i38 + %.sink.i30 = phi ptr [ %0, %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEES6_ET0_T_S8_S7_.exit.i38 ], [ %.sroa.0.022.i25, %58 ], [ %.sroa.0.011.i.i34, %.lr.ph.i.i33 ] store i32 %45, ptr %.sink.i30, align 4 %.sroa.0.0.i31 = getelementptr inbounds i8, ptr %.sroa.0.022.i25, i64 4 %.not.i32 = icmp eq ptr %.sroa.0.0.i31, %1 diff --git a/bench/ozz-animation/optimized/import2ozz.cc.ll b/bench/ozz-animation/optimized/import2ozz.cc.ll index 5c578c01490..4412bcc413c 100644 --- a/bench/ozz-animation/optimized/import2ozz.cc.ll +++ b/bench/ozz-animation/optimized/import2ozz.cc.ll @@ -979,10 +979,8 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE8capacit 29: ; preds = %28 %30 = getelementptr inbounds i8, ptr %21, i64 %4 %31 = getelementptr inbounds i8, ptr %21, i64 %2 - switch i64 %23, label %34 [ - i64 1, label %32 - i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveEPcPKcm.exit - ] + %cond99 = icmp eq i64 %23, 1 + br i1 %cond99, label %32, label %34 32: ; preds = %29 %33 = load i8, ptr %31, align 1 @@ -993,7 +991,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE8capacit tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %30, ptr align 1 %31, i64 %23, i1 false) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveEPcPKcm.exit -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveEPcPKcm.exit: ; preds = %34, %32, %29, %28 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveEPcPKcm.exit: ; preds = %34, %32, %28 switch i64 %4, label %37 [ i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_copyEPcPKcm.exit i64 1, label %35 @@ -1015,8 +1013,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveE br i1 %or.cond91.not, label %40, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveEPcPKcm.exit93 40: ; preds = %38 - %cond101 = icmp eq i64 %4, 1 - br i1 %cond101, label %41, label %43 + %cond103 = icmp eq i64 %4, 1 + br i1 %cond103, label %41, label %43 41: ; preds = %40 %42 = load i8, ptr %3, align 1 @@ -1036,10 +1034,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveE 44: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveEPcPKcm.exit93 %45 = getelementptr inbounds i8, ptr %21, i64 %4 %46 = getelementptr inbounds i8, ptr %21, i64 %2 - switch i64 %23, label %49 [ - i64 1, label %47 - i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveEPcPKcm.exit94 - ] + %cond102 = icmp eq i64 %23, 1 + br i1 %cond102, label %47, label %49 47: ; preds = %44 %48 = load i8, ptr %46, align 1 @@ -1050,7 +1046,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveE tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %45, ptr align 1 %46, i64 %23, i1 false) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveEPcPKcm.exit94 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveEPcPKcm.exit94: ; preds = %49, %47, %44, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveEPcPKcm.exit93 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveEPcPKcm.exit94: ; preds = %49, %47, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveEPcPKcm.exit93 br i1 %.not83, label %50, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_copyEPcPKcm.exit 50: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveEPcPKcm.exit94 @@ -1060,8 +1056,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveE br i1 %.not86, label %57, label %53 53: ; preds = %50 - %cond100 = icmp eq i64 %4, 1 - br i1 %cond100, label %54, label %56 + %cond101 = icmp eq i64 %4, 1 + br i1 %cond101, label %54, label %56 54: ; preds = %53 %55 = load i8, ptr %3, align 1 @@ -1082,8 +1078,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveE %61 = sub i64 %59, %60 %62 = getelementptr i8, ptr %21, i64 %61 %63 = getelementptr i8, ptr %62, i64 %11 - %cond99 = icmp eq i64 %4, 1 - br i1 %cond99, label %64, label %66 + %cond100 = icmp eq i64 %4, 1 + br i1 %cond100, label %64, label %66 64: ; preds = %58 %65 = load i8, ptr %63, align 1 @@ -1209,8 +1205,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE9_M_creat 38: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE9_M_createERmm.exit %39 = load ptr, ptr %0, align 8 - %cond29 = icmp eq i64 %1, 1 - br i1 %cond29, label %40, label %42 + %cond30 = icmp eq i64 %1, 1 + br i1 %cond30, label %40, label %42 40: ; preds = %38 %41 = load i8, ptr %39, align 1 @@ -1251,10 +1247,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_copyE %53 = load ptr, ptr %0, align 8 %54 = getelementptr inbounds i8, ptr %53, i64 %1 %55 = getelementptr inbounds i8, ptr %54, i64 %2 - switch i64 %9, label %58 [ - i64 1, label %56 - i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_copyEPcPKcm.exit27 - ] + %cond29 = icmp eq i64 %9, 1 + br i1 %cond29, label %56, label %58 56: ; preds = %50 %57 = load i8, ptr %55, align 1 @@ -1265,7 +1259,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_copyE tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %52, ptr align 1 %55, i64 %9, i1 false) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_copyEPcPKcm.exit27 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_copyEPcPKcm.exit27: ; preds = %58, %56, %50, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_copyEPcPKcm.exit26 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_copyEPcPKcm.exit27: ; preds = %58, %56, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_copyEPcPKcm.exit26 %59 = load ptr, ptr %0, align 8 %60 = icmp eq ptr %59, %13 br i1 %60, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE11_M_is_localEv.exit.thread.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE11_M_is_localEv.exit.i diff --git a/bench/ozz-animation/optimized/import2ozz_anim.cc.ll b/bench/ozz-animation/optimized/import2ozz_anim.cc.ll index 5b3689fa48f..915bb6bb1e4 100644 --- a/bench/ozz-animation/optimized/import2ozz_anim.cc.ll +++ b/bench/ozz-animation/optimized/import2ozz_anim.cc.ll @@ -3826,10 +3826,8 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE8capacit 29: ; preds = %28 %30 = getelementptr inbounds i8, ptr %21, i64 %4 %31 = getelementptr inbounds i8, ptr %21, i64 %2 - switch i64 %23, label %34 [ - i64 1, label %32 - i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveEPcPKcm.exit - ] + %cond99 = icmp eq i64 %23, 1 + br i1 %cond99, label %32, label %34 32: ; preds = %29 %33 = load i8, ptr %31, align 1 @@ -3840,7 +3838,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE8capacit tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %30, ptr align 1 %31, i64 %23, i1 false) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveEPcPKcm.exit -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveEPcPKcm.exit: ; preds = %34, %32, %29, %28 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveEPcPKcm.exit: ; preds = %34, %32, %28 switch i64 %4, label %37 [ i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_copyEPcPKcm.exit i64 1, label %35 @@ -3862,8 +3860,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveE br i1 %or.cond91.not, label %40, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveEPcPKcm.exit93 40: ; preds = %38 - %cond101 = icmp eq i64 %4, 1 - br i1 %cond101, label %41, label %43 + %cond103 = icmp eq i64 %4, 1 + br i1 %cond103, label %41, label %43 41: ; preds = %40 %42 = load i8, ptr %3, align 1 @@ -3883,10 +3881,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveE 44: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveEPcPKcm.exit93 %45 = getelementptr inbounds i8, ptr %21, i64 %4 %46 = getelementptr inbounds i8, ptr %21, i64 %2 - switch i64 %23, label %49 [ - i64 1, label %47 - i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveEPcPKcm.exit94 - ] + %cond102 = icmp eq i64 %23, 1 + br i1 %cond102, label %47, label %49 47: ; preds = %44 %48 = load i8, ptr %46, align 1 @@ -3897,7 +3893,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveE tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %45, ptr align 1 %46, i64 %23, i1 false) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveEPcPKcm.exit94 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveEPcPKcm.exit94: ; preds = %49, %47, %44, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveEPcPKcm.exit93 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveEPcPKcm.exit94: ; preds = %49, %47, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveEPcPKcm.exit93 br i1 %.not83, label %50, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_copyEPcPKcm.exit 50: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveEPcPKcm.exit94 @@ -3907,8 +3903,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveE br i1 %.not86, label %57, label %53 53: ; preds = %50 - %cond100 = icmp eq i64 %4, 1 - br i1 %cond100, label %54, label %56 + %cond101 = icmp eq i64 %4, 1 + br i1 %cond101, label %54, label %56 54: ; preds = %53 %55 = load i8, ptr %3, align 1 @@ -3929,8 +3925,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveE %61 = sub i64 %59, %60 %62 = getelementptr i8, ptr %21, i64 %61 %63 = getelementptr i8, ptr %62, i64 %11 - %cond99 = icmp eq i64 %4, 1 - br i1 %cond99, label %64, label %66 + %cond100 = icmp eq i64 %4, 1 + br i1 %cond100, label %64, label %66 64: ; preds = %58 %65 = load i8, ptr %63, align 1 @@ -4056,8 +4052,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE9_M_creat 38: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE9_M_createERmm.exit %39 = load ptr, ptr %0, align 8 - %cond29 = icmp eq i64 %1, 1 - br i1 %cond29, label %40, label %42 + %cond30 = icmp eq i64 %1, 1 + br i1 %cond30, label %40, label %42 40: ; preds = %38 %41 = load i8, ptr %39, align 1 @@ -4098,10 +4094,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_copyE %53 = load ptr, ptr %0, align 8 %54 = getelementptr inbounds i8, ptr %53, i64 %1 %55 = getelementptr inbounds i8, ptr %54, i64 %2 - switch i64 %9, label %58 [ - i64 1, label %56 - i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_copyEPcPKcm.exit27 - ] + %cond29 = icmp eq i64 %9, 1 + br i1 %cond29, label %56, label %58 56: ; preds = %50 %57 = load i8, ptr %55, align 1 @@ -4112,7 +4106,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_copyE tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %52, ptr align 1 %55, i64 %9, i1 false) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_copyEPcPKcm.exit27 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_copyEPcPKcm.exit27: ; preds = %58, %56, %50, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_copyEPcPKcm.exit26 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_copyEPcPKcm.exit27: ; preds = %58, %56, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_copyEPcPKcm.exit26 %59 = load ptr, ptr %0, align 8 %60 = icmp eq ptr %59, %13 br i1 %60, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE11_M_is_localEv.exit.thread.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE11_M_is_localEv.exit.i @@ -5271,7 +5265,7 @@ _ZNSt12_Vector_baseIN3ozz9animation7offline12RawAnimation14TranslationKeyENS0_12 br label %_ZSt4copyIPN3ozz9animation7offline12RawAnimation14TranslationKeyES5_ET0_T_S7_S6_.exit _ZSt4copyIPN3ozz9animation7offline12RawAnimation14TranslationKeyES5_ET0_T_S7_S6_.exit: ; preds = %47, %48 - %.pre-phi34 = phi i64 [ %44, %47 ], [ %.pre33, %48 ] + %.pre-phi34 = phi i64 [ 0, %47 ], [ %.pre33, %48 ] %49 = phi ptr [ %5, %47 ], [ %.pre29, %48 ] %50 = phi ptr [ %42, %47 ], [ %.pre27, %48 ] %51 = phi ptr [ %6, %47 ], [ %.pre, %48 ] @@ -5412,7 +5406,7 @@ _ZNSt12_Vector_baseIN3ozz9animation7offline12RawAnimation11RotationKeyENS0_12Std br label %_ZSt4copyIPN3ozz9animation7offline12RawAnimation11RotationKeyES5_ET0_T_S7_S6_.exit _ZSt4copyIPN3ozz9animation7offline12RawAnimation11RotationKeyES5_ET0_T_S7_S6_.exit: ; preds = %47, %48 - %.pre-phi34 = phi i64 [ %44, %47 ], [ %.pre33, %48 ] + %.pre-phi34 = phi i64 [ 0, %47 ], [ %.pre33, %48 ] %49 = phi ptr [ %5, %47 ], [ %.pre29, %48 ] %50 = phi ptr [ %42, %47 ], [ %.pre27, %48 ] %51 = phi ptr [ %6, %47 ], [ %.pre, %48 ] @@ -5553,7 +5547,7 @@ _ZNSt12_Vector_baseIN3ozz9animation7offline12RawAnimation8ScaleKeyENS0_12StdAllo br label %_ZSt4copyIPN3ozz9animation7offline12RawAnimation8ScaleKeyES5_ET0_T_S7_S6_.exit _ZSt4copyIPN3ozz9animation7offline12RawAnimation8ScaleKeyES5_ET0_T_S7_S6_.exit: ; preds = %47, %48 - %.pre-phi34 = phi i64 [ %44, %47 ], [ %.pre33, %48 ] + %.pre-phi34 = phi i64 [ 0, %47 ], [ %.pre33, %48 ] %49 = phi ptr [ %5, %47 ], [ %.pre29, %48 ] %50 = phi ptr [ %42, %47 ], [ %.pre27, %48 ] %51 = phi ptr [ %6, %47 ], [ %.pre, %48 ] diff --git a/bench/ozz-animation/optimized/import2ozz_track.cc.ll b/bench/ozz-animation/optimized/import2ozz_track.cc.ll index 179e7d375d8..a87b4541927 100644 --- a/bench/ozz-animation/optimized/import2ozz_track.cc.ll +++ b/bench/ozz-animation/optimized/import2ozz_track.cc.ll @@ -5067,10 +5067,8 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE8capacit 29: ; preds = %28 %30 = getelementptr inbounds i8, ptr %21, i64 %4 %31 = getelementptr inbounds i8, ptr %21, i64 %2 - switch i64 %23, label %34 [ - i64 1, label %32 - i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveEPcPKcm.exit - ] + %cond99 = icmp eq i64 %23, 1 + br i1 %cond99, label %32, label %34 32: ; preds = %29 %33 = load i8, ptr %31, align 1 @@ -5081,7 +5079,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE8capacit tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %30, ptr align 1 %31, i64 %23, i1 false) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveEPcPKcm.exit -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveEPcPKcm.exit: ; preds = %34, %32, %29, %28 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveEPcPKcm.exit: ; preds = %34, %32, %28 switch i64 %4, label %37 [ i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_copyEPcPKcm.exit i64 1, label %35 @@ -5103,8 +5101,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveE br i1 %or.cond91.not, label %40, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveEPcPKcm.exit93 40: ; preds = %38 - %cond101 = icmp eq i64 %4, 1 - br i1 %cond101, label %41, label %43 + %cond103 = icmp eq i64 %4, 1 + br i1 %cond103, label %41, label %43 41: ; preds = %40 %42 = load i8, ptr %3, align 1 @@ -5124,10 +5122,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveE 44: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveEPcPKcm.exit93 %45 = getelementptr inbounds i8, ptr %21, i64 %4 %46 = getelementptr inbounds i8, ptr %21, i64 %2 - switch i64 %23, label %49 [ - i64 1, label %47 - i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveEPcPKcm.exit94 - ] + %cond102 = icmp eq i64 %23, 1 + br i1 %cond102, label %47, label %49 47: ; preds = %44 %48 = load i8, ptr %46, align 1 @@ -5138,7 +5134,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveE tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %45, ptr align 1 %46, i64 %23, i1 false) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveEPcPKcm.exit94 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveEPcPKcm.exit94: ; preds = %49, %47, %44, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveEPcPKcm.exit93 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveEPcPKcm.exit94: ; preds = %49, %47, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveEPcPKcm.exit93 br i1 %.not83, label %50, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_copyEPcPKcm.exit 50: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveEPcPKcm.exit94 @@ -5148,8 +5144,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveE br i1 %.not86, label %57, label %53 53: ; preds = %50 - %cond100 = icmp eq i64 %4, 1 - br i1 %cond100, label %54, label %56 + %cond101 = icmp eq i64 %4, 1 + br i1 %cond101, label %54, label %56 54: ; preds = %53 %55 = load i8, ptr %3, align 1 @@ -5170,8 +5166,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_moveE %61 = sub i64 %59, %60 %62 = getelementptr i8, ptr %21, i64 %61 %63 = getelementptr i8, ptr %62, i64 %11 - %cond99 = icmp eq i64 %4, 1 - br i1 %cond99, label %64, label %66 + %cond100 = icmp eq i64 %4, 1 + br i1 %cond100, label %64, label %66 64: ; preds = %58 %65 = load i8, ptr %63, align 1 @@ -5297,8 +5293,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE9_M_creat 38: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE9_M_createERmm.exit %39 = load ptr, ptr %0, align 8 - %cond29 = icmp eq i64 %1, 1 - br i1 %cond29, label %40, label %42 + %cond30 = icmp eq i64 %1, 1 + br i1 %cond30, label %40, label %42 40: ; preds = %38 %41 = load i8, ptr %39, align 1 @@ -5339,10 +5335,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_copyE %53 = load ptr, ptr %0, align 8 %54 = getelementptr inbounds i8, ptr %53, i64 %1 %55 = getelementptr inbounds i8, ptr %54, i64 %2 - switch i64 %9, label %58 [ - i64 1, label %56 - i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_copyEPcPKcm.exit27 - ] + %cond29 = icmp eq i64 %9, 1 + br i1 %cond29, label %56, label %58 56: ; preds = %50 %57 = load i8, ptr %55, align 1 @@ -5353,7 +5347,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_copyE tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %52, ptr align 1 %55, i64 %9, i1 false) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_copyEPcPKcm.exit27 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_copyEPcPKcm.exit27: ; preds = %58, %56, %50, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_copyEPcPKcm.exit26 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_copyEPcPKcm.exit27: ; preds = %58, %56, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE7_S_copyEPcPKcm.exit26 %59 = load ptr, ptr %0, align 8 %60 = icmp eq ptr %59, %13 br i1 %60, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE11_M_is_localEv.exit.thread.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN3ozz12StdAllocatorIcEEE11_M_is_localEv.exit.i @@ -5606,7 +5600,7 @@ _ZNSt12_Vector_baseIN3ozz9animation7offline16RawTrackKeyframeIfEENS0_12StdAlloca br label %_ZSt4copyIPN3ozz9animation7offline16RawTrackKeyframeIfEES5_ET0_T_S7_S6_.exit _ZSt4copyIPN3ozz9animation7offline16RawTrackKeyframeIfEES5_ET0_T_S7_S6_.exit: ; preds = %47, %48 - %.pre-phi34 = phi i64 [ %44, %47 ], [ %.pre33, %48 ] + %.pre-phi34 = phi i64 [ 0, %47 ], [ %.pre33, %48 ] %49 = phi ptr [ %5, %47 ], [ %.pre29, %48 ] %50 = phi ptr [ %42, %47 ], [ %.pre27, %48 ] %51 = phi ptr [ %6, %47 ], [ %.pre, %48 ] @@ -5982,7 +5976,7 @@ _ZNSt12_Vector_baseIN3ozz9animation7offline16RawTrackKeyframeINS0_4math6Float2EE br label %_ZSt4copyIPN3ozz9animation7offline16RawTrackKeyframeINS0_4math6Float2EEES7_ET0_T_S9_S8_.exit _ZSt4copyIPN3ozz9animation7offline16RawTrackKeyframeINS0_4math6Float2EEES7_ET0_T_S9_S8_.exit: ; preds = %47, %48 - %.pre-phi34 = phi i64 [ %44, %47 ], [ %.pre33, %48 ] + %.pre-phi34 = phi i64 [ 0, %47 ], [ %.pre33, %48 ] %49 = phi ptr [ %5, %47 ], [ %.pre29, %48 ] %50 = phi ptr [ %42, %47 ], [ %.pre27, %48 ] %51 = phi ptr [ %6, %47 ], [ %.pre, %48 ] @@ -6224,7 +6218,7 @@ _ZNSt12_Vector_baseIN3ozz9animation7offline16RawTrackKeyframeINS0_4math6Float3EE br label %_ZSt4copyIPN3ozz9animation7offline16RawTrackKeyframeINS0_4math6Float3EEES7_ET0_T_S9_S8_.exit _ZSt4copyIPN3ozz9animation7offline16RawTrackKeyframeINS0_4math6Float3EEES7_ET0_T_S9_S8_.exit: ; preds = %47, %48 - %.pre-phi34 = phi i64 [ %44, %47 ], [ %.pre33, %48 ] + %.pre-phi34 = phi i64 [ 0, %47 ], [ %.pre33, %48 ] %49 = phi ptr [ %5, %47 ], [ %.pre29, %48 ] %50 = phi ptr [ %42, %47 ], [ %.pre27, %48 ] %51 = phi ptr [ %6, %47 ], [ %.pre, %48 ] @@ -6466,7 +6460,7 @@ _ZNSt12_Vector_baseIN3ozz9animation7offline16RawTrackKeyframeINS0_4math6Float4EE br label %_ZSt4copyIPN3ozz9animation7offline16RawTrackKeyframeINS0_4math6Float4EEES7_ET0_T_S9_S8_.exit _ZSt4copyIPN3ozz9animation7offline16RawTrackKeyframeINS0_4math6Float4EEES7_ET0_T_S9_S8_.exit: ; preds = %47, %48 - %.pre-phi34 = phi i64 [ %44, %47 ], [ %.pre33, %48 ] + %.pre-phi34 = phi i64 [ 0, %47 ], [ %.pre33, %48 ] %49 = phi ptr [ %5, %47 ], [ %.pre29, %48 ] %50 = phi ptr [ %42, %47 ], [ %.pre27, %48 ] %51 = phi ptr [ %6, %47 ], [ %.pre, %48 ] diff --git a/bench/pbrt-v4/optimized/imgtool.cpp.ll b/bench/pbrt-v4/optimized/imgtool.cpp.ll index 6d6f1fa2bb8..5b467b8fd41 100644 --- a/bench/pbrt-v4/optimized/imgtool.cpp.ll +++ b/bench/pbrt-v4/optimized/imgtool.cpp.ll @@ -52035,10 +52035,6 @@ invoke.cont17.i.i.i: ; preds = %invoke.cont12.i.i.i %_M_finish.i18105.i.i.i = getelementptr inbounds i8, ptr %20, i64 8 %21 = load ptr, ptr %_M_finish.i18105.i.i.i, align 8 %22 = load ptr, ptr %20, align 8 - %sub.ptr.lhs.cast.i19106.i.i.i = ptrtoint ptr %21 to i64 - %sub.ptr.rhs.cast.i20107.i.i.i = ptrtoint ptr %22 to i64 - %sub.ptr.sub.i21108.i.i.i = sub i64 %sub.ptr.lhs.cast.i19106.i.i.i, %sub.ptr.rhs.cast.i20107.i.i.i - %sub.ptr.div.i22109.i.i.i = ashr exact i64 %sub.ptr.sub.i21108.i.i.i, 2 %cmp28110.not.i.i.i = icmp eq ptr %21, %22 br i1 %cmp28110.not.i.i.i, label %for.end.i.i.i, label %for.body29.lr.ph.i.i.i @@ -52076,7 +52072,7 @@ invoke.cont35.i.i.i: ; preds = %for.body29.i.i.i for.end.i.i.i: ; preds = %invoke.cont35.i.i.i, %invoke.cont17.i.i.i %.lcssa.i.i.i = phi ptr [ %22, %invoke.cont17.i.i.i ], [ %29, %invoke.cont35.i.i.i ] - %sub.ptr.div.i22.lcssa.i.i.i = phi i64 [ %sub.ptr.div.i22109.i.i.i, %invoke.cont17.i.i.i ], [ %sub.ptr.div.i22.i.i.i, %invoke.cont35.i.i.i ] + %sub.ptr.div.i22.lcssa.i.i.i = phi i64 [ 0, %invoke.cont17.i.i.i ], [ %sub.ptr.div.i22.i.i.i, %invoke.cont35.i.i.i ] %call.i.i.i.i = call noundef ptr @_ZN4pstd3pmr19new_delete_resourceEv() #34 invoke void @_ZN4pbrt23PiecewiseLinearSpectrumC1EN4pstd4spanIKfEES4_NS1_3pmr21polymorphic_allocatorISt4byteEE(ptr noundef nonnull align 8 dereferenceable(64) %spec.i.i.i, ptr %.lcssa.i.i.i, i64 %sub.ptr.div.i22.lcssa.i.i.i, ptr %skyv.sroa.0.0.i.i.i, i64 %sub.ptr.div.i.i28.i.i.i, ptr %call.i.i.i.i) to label %invoke.cont49.i.i.i unwind label %lpad10.loopexit.split-lp.i.i.i @@ -67667,7 +67663,7 @@ if.then.i.i.i.i.i35: ; preds = %if.else49 br label %_ZSt4copyIPN4pbrt17VarianceEstimatorIdEES3_ET0_T_S5_S4_.exit _ZSt4copyIPN4pbrt17VarianceEstimatorIdEES3_ET0_T_S5_S4_.exit: ; preds = %if.else49, %if.then.i.i.i.i.i35 - %sub.ptr.sub.i40.pre-phi = phi i64 [ %sub.ptr.sub.i22, %if.else49 ], [ %.pre47, %if.then.i.i.i.i.i35 ] + %sub.ptr.sub.i40.pre-phi = phi i64 [ 0, %if.else49 ], [ %.pre47, %if.then.i.i.i.i.i35 ] %10 = phi ptr [ %0, %if.else49 ], [ %.pre44, %if.then.i.i.i.i.i35 ] %11 = phi ptr [ %9, %if.else49 ], [ %.pre42, %if.then.i.i.i.i.i35 ] %12 = phi ptr [ %1, %if.else49 ], [ %.pre, %if.then.i.i.i.i.i35 ] diff --git a/bench/php/optimized/fastcgi.ll b/bench/php/optimized/fastcgi.ll index 0a8cbf21459..9ff51da80ad 100644 --- a/bench/php/optimized/fastcgi.ll +++ b/bench/php/optimized/fastcgi.ll @@ -2536,11 +2536,7 @@ define hidden range(i32 0, 2) i32 @fcgi_flush(ptr noundef %0, i32 noundef %1) lo store i8 0, ptr %28, align 1 store i8 1, ptr %4, align 1 %.not.i.i = icmp eq i32 %14, %10 - br i1 %.not.i.i, label %.fcgi_make_header.exit_crit_edge.i, label %29 - -.fcgi_make_header.exit_crit_edge.i: ; preds = %5 - %.pre.i = sext i32 %15 to i64 - br label %fcgi_make_header.exit.i + br i1 %.not.i.i, label %fcgi_make_header.exit.i, label %29 29: ; preds = %5 %sext.i = shl i64 %9, 32 @@ -2550,8 +2546,8 @@ define hidden range(i32 0, 2) i32 @fcgi_flush(ptr noundef %0, i32 noundef %1) lo tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %31, i8 0, i64 %32, i1 false) br label %fcgi_make_header.exit.i -fcgi_make_header.exit.i: ; preds = %29, %.fcgi_make_header.exit_crit_edge.i - %.pre-phi.i = phi i64 [ %.pre.i, %.fcgi_make_header.exit_crit_edge.i ], [ %32, %29 ] +fcgi_make_header.exit.i: ; preds = %29, %5 + %.pre-phi.i = phi i64 [ %32, %29 ], [ 0, %5 ] %33 = load ptr, ptr %.phi.trans.insert, align 8 %34 = getelementptr inbounds i8, ptr %33, i64 %.pre-phi.i store ptr %34, ptr %.phi.trans.insert, align 8 @@ -2698,11 +2694,7 @@ define hidden range(i32 -1, -2147483648) i32 @fcgi_write(ptr noundef %0, i32 nou store i8 0, ptr %38, align 1 store i8 1, ptr %8, align 1 %.not.i.i = icmp eq i32 %24, %20 - br i1 %.not.i.i, label %.fcgi_make_header.exit_crit_edge.i, label %39 - -.fcgi_make_header.exit_crit_edge.i: ; preds = %13 - %.pre.i = sext i32 %25 to i64 - br label %close_packet.exit + br i1 %.not.i.i, label %close_packet.exit, label %39 39: ; preds = %13 %sext.i = shl i64 %19, 32 @@ -2712,8 +2704,8 @@ define hidden range(i32 -1, -2147483648) i32 @fcgi_write(ptr noundef %0, i32 nou tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %41, i8 0, i64 %42, i1 false) br label %close_packet.exit -close_packet.exit: ; preds = %.fcgi_make_header.exit_crit_edge.i, %39 - %.pre-phi.i = phi i64 [ %.pre.i, %.fcgi_make_header.exit_crit_edge.i ], [ %42, %39 ] +close_packet.exit: ; preds = %13, %39 + %.pre-phi.i = phi i64 [ %42, %39 ], [ 0, %13 ] %43 = load ptr, ptr %14, align 8 %44 = getelementptr inbounds i8, ptr %43, i64 %.pre-phi.i store ptr %44, ptr %14, align 8 @@ -2815,7 +2807,7 @@ close_packet.exit: ; preds = %.fcgi_make_header.e br label %.loopexit 95: ; preds = %66 - br i1 %.not110, label %close_packet.exit127, label %96 + br i1 %.not110, label %close_packet.exit125, label %96 96: ; preds = %95 %97 = getelementptr inbounds i8, ptr %46, i64 8 @@ -2848,11 +2840,7 @@ close_packet.exit: ; preds = %.fcgi_make_header.e store i8 0, ptr %118, align 1 store i8 1, ptr %46, align 1 %.not.i.i121 = icmp eq i32 %104, %100 - br i1 %.not.i.i121, label %.fcgi_make_header.exit_crit_edge.i125, label %119 - -.fcgi_make_header.exit_crit_edge.i125: ; preds = %96 - %.pre.i126 = sext i32 %105 to i64 - br label %fcgi_make_header.exit.i123 + br i1 %.not.i.i121, label %fcgi_make_header.exit.i123, label %119 119: ; preds = %96 %sext.i122 = shl i64 %99, 32 @@ -2862,20 +2850,20 @@ close_packet.exit: ; preds = %.fcgi_make_header.e tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %121, i8 0, i64 %122, i1 false) br label %fcgi_make_header.exit.i123 -fcgi_make_header.exit.i123: ; preds = %119, %.fcgi_make_header.exit_crit_edge.i125 - %.pre-phi.i124 = phi i64 [ %.pre.i126, %.fcgi_make_header.exit_crit_edge.i125 ], [ %122, %119 ] +fcgi_make_header.exit.i123: ; preds = %119, %96 + %.pre-phi.i124 = phi i64 [ %122, %119 ], [ 0, %96 ] %123 = load ptr, ptr %47, align 8 %124 = getelementptr inbounds i8, ptr %123, i64 %.pre-phi.i124 store ptr %124, ptr %47, align 8 - br label %close_packet.exit127 + br label %close_packet.exit125 -close_packet.exit127: ; preds = %95, %fcgi_make_header.exit.i123 +close_packet.exit125: ; preds = %95, %fcgi_make_header.exit.i123 %125 = phi ptr [ %48, %95 ], [ %124, %fcgi_make_header.exit.i123 ] %126 = icmp ugt i32 %3, 65535 %127 = trunc i32 %1 to i8 br i1 %126, label %.lr.ph, label %._crit_edge -.lr.ph: ; preds = %close_packet.exit127 +.lr.ph: ; preds = %close_packet.exit125 %128 = getelementptr inbounds i8, ptr %0, i64 12 %129 = getelementptr inbounds i8, ptr %0, i64 8 br label %130 @@ -2948,8 +2936,8 @@ close_packet.exit127: ; preds = %95, %fcgi_make_head br i1 %.not18.i, label %safe_write.exit.thread, label %151 safe_write.exit: ; preds = %161 - %sext.i128.mask = and i64 %155, 4294967295 - %.not116 = icmp eq i64 %sext.i128.mask, 65528 + %sext.i126.mask = and i64 %155, 4294967295 + %.not116 = icmp eq i64 %sext.i126.mask, 65528 br i1 %.not116, label %safe_write.exit.thread, label %164 164: ; preds = %safe_write.exit @@ -2969,14 +2957,14 @@ safe_write.exit.thread: ; preds = %163, %safe_write.ex %169 = and i64 %indvars.iv.next, 4294967288 br label %._crit_edge -._crit_edge: ; preds = %close_packet.exit127, %._crit_edge.loopexit - %170 = phi ptr [ %.pre, %._crit_edge.loopexit ], [ %125, %close_packet.exit127 ] - %.0103.lcssa = phi i64 [ %169, %._crit_edge.loopexit ], [ 0, %close_packet.exit127 ] - %.lcssa143 = phi i32 [ %167, %._crit_edge.loopexit ], [ %3, %close_packet.exit127 ] - %171 = add nsw i32 %.lcssa143, 7 +._crit_edge: ; preds = %close_packet.exit125, %._crit_edge.loopexit + %170 = phi ptr [ %.pre, %._crit_edge.loopexit ], [ %125, %close_packet.exit125 ] + %.0103.lcssa = phi i64 [ %169, %._crit_edge.loopexit ], [ 0, %close_packet.exit125 ] + %.lcssa141 = phi i32 [ %167, %._crit_edge.loopexit ], [ %3, %close_packet.exit125 ] + %171 = add nsw i32 %.lcssa141, 7 %172 = and i32 %171, -8 - %.neg112 = sub i32 %.lcssa143, %172 - %.not111 = icmp eq i32 %172, %.lcssa143 + %.neg112 = sub i32 %.lcssa141, %172 + %.not111 = icmp eq i32 %172, %.lcssa141 %173 = add i32 %.neg112, 8 %174 = select i1 %.not111, i32 0, i32 %173 store ptr %170, ptr %7, align 8 @@ -2988,7 +2976,7 @@ safe_write.exit.thread: ; preds = %163, %safe_write.ex %178 = load ptr, ptr %7, align 8 %179 = getelementptr inbounds i8, ptr %0, i64 12 %180 = load i32, ptr %179, align 4 - %181 = sub nsw i32 %.lcssa143, %174 + %181 = sub nsw i32 %.lcssa141, %174 %182 = add nsw i32 %181, 7 %183 = and i32 %182, -8 %184 = sub nsw i32 %183, %181 @@ -3014,8 +3002,8 @@ safe_write.exit.thread: ; preds = %163, %safe_write.ex %198 = getelementptr inbounds i8, ptr %178, i64 1 store i8 %127, ptr %198, align 1 store i8 1, ptr %178, align 1 - %.not.i129 = icmp eq i32 %183, %181 - br i1 %.not.i129, label %fcgi_make_header.exit, label %199 + %.not.i127 = icmp eq i32 %183, %181 + br i1 %.not.i127, label %fcgi_make_header.exit, label %199 199: ; preds = %._crit_edge %200 = getelementptr inbounds i8, ptr %178, i64 8 @@ -3039,11 +3027,11 @@ fcgi_make_header.exit: ; preds = %._crit_edge, %199 br label %210 210: ; preds = %222, %205 - %.0.i130 = phi i64 [ 0, %205 ], [ %.1.i131, %222 ] + %.0.i128 = phi i64 [ 0, %205 ], [ %.1.i129, %222 ] store i32 0, ptr %208, align 4 %211 = load i32, ptr %209, align 8 - %212 = getelementptr inbounds i8, ptr %206, i64 %.0.i130 - %213 = sub i64 %207, %.0.i130 + %212 = getelementptr inbounds i8, ptr %206, i64 %.0.i128 + %213 = sub i64 %207, %.0.i128 %214 = tail call i64 @write(i32 noundef %211, ptr noundef readonly %212, i64 noundef %213) #32 %215 = trunc i64 %214 to i32 %216 = icmp sgt i32 %215, 0 @@ -3051,36 +3039,36 @@ fcgi_make_header.exit: ; preds = %._crit_edge, %199 217: ; preds = %210 %218 = and i64 %214, 2147483647 - %219 = add i64 %218, %.0.i130 + %219 = add i64 %218, %.0.i128 br label %222 220: ; preds = %210 %221 = load i32, ptr %208, align 4 - switch i32 %221, label %safe_write.exit135 [ + switch i32 %221, label %safe_write.exit133 [ i32 0, label %222 i32 4, label %222 ] 222: ; preds = %220, %220, %217 - %.1.i131 = phi i64 [ %219, %217 ], [ %.0.i130, %220 ], [ %.0.i130, %220 ] - %.not18.i132 = icmp eq i64 %.1.i131, %207 - br i1 %.not18.i132, label %safe_write.exit135.thread, label %210 + %.1.i129 = phi i64 [ %219, %217 ], [ %.0.i128, %220 ], [ %.0.i128, %220 ] + %.not18.i130 = icmp eq i64 %.1.i129, %207 + br i1 %.not18.i130, label %safe_write.exit133.thread, label %210 -safe_write.exit135: ; preds = %220 - %sext.i134 = shl i64 %214, 32 - %223 = ashr exact i64 %sext.i134, 32 +safe_write.exit133: ; preds = %220 + %sext.i132 = shl i64 %214, 32 + %223 = ashr exact i64 %sext.i132, 32 %.not114 = icmp eq i64 %223, %207 - br i1 %.not114, label %safe_write.exit135.thread, label %224 + br i1 %.not114, label %safe_write.exit133.thread, label %224 -224: ; preds = %safe_write.exit135 +224: ; preds = %safe_write.exit133 %225 = getelementptr inbounds i8, ptr %0, i64 16 store i32 0, ptr %225, align 8 br label %.loopexit -safe_write.exit135.thread: ; preds = %222, %safe_write.exit135 +safe_write.exit133.thread: ; preds = %222, %safe_write.exit133 br i1 %.not111, label %.loopexit, label %226 -226: ; preds = %safe_write.exit135.thread +226: ; preds = %safe_write.exit133.thread %227 = load ptr, ptr %47, align 8 store ptr %227, ptr %7, align 8 %228 = getelementptr inbounds i8, ptr %227, i64 1 @@ -3098,8 +3086,8 @@ safe_write.exit135.thread: ; preds = %222, %safe_write.ex store ptr %236, ptr %47, align 8 br label %.loopexit -.loopexit: ; preds = %130, %62, %safe_write.exit135.thread, %226, %83, %85, %fcgi_make_header.exit, %81, %4, %224, %164 - %.0 = phi i32 [ -1, %164 ], [ -1, %224 ], [ 0, %4 ], [ -1, %81 ], [ -1, %fcgi_make_header.exit ], [ %3, %85 ], [ %3, %83 ], [ %3, %226 ], [ %3, %safe_write.exit135.thread ], [ %3, %62 ], [ -1, %130 ] +.loopexit: ; preds = %130, %62, %safe_write.exit133.thread, %226, %83, %85, %fcgi_make_header.exit, %81, %4, %224, %164 + %.0 = phi i32 [ -1, %164 ], [ -1, %224 ], [ 0, %4 ], [ -1, %81 ], [ -1, %fcgi_make_header.exit ], [ %3, %85 ], [ %3, %83 ], [ %3, %226 ], [ %3, %safe_write.exit133.thread ], [ %3, %62 ], [ -1, %130 ] ret i32 %.0 } diff --git a/bench/protobuf/optimized/wire_format.cc.ll b/bench/protobuf/optimized/wire_format.cc.ll index 6f22dce0114..e923344e71f 100644 --- a/bench/protobuf/optimized/wire_format.cc.ll +++ b/bench/protobuf/optimized/wire_format.cc.ll @@ -16934,8 +16934,8 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageE %sub.ptr.lhs.cast.i.i.i.i.i.i = ptrtoint ptr %__i.sroa.0.012.i to i64 %sub.ptr.sub.i.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i.i, 3 - %.pre.i.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i - %add.ptr.i.i.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr.i2.i, i64 %.pre.i.i.i.i.i.i + %idx.neg.i.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i + %add.ptr.i.i.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr.i2.i, i64 %idx.neg.i.i.i.i.i.i call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %add.ptr.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(1) %__first.coerce, i64 %sub.ptr.sub.i.i.i.i.i.i, i1 false) store ptr %2, ptr %__first.coerce, align 8 br label %for.inc.i @@ -17429,20 +17429,20 @@ if.else61: ; preds = %for.cond if.then64: ; preds = %if.else61 %add.ptr.i21 = getelementptr inbounds i8, ptr %add.ptr.i20, i64 -8 %5 = load ptr, ptr %add.ptr.i21, align 8 - %tobool.not.i.i.i.i.i28 = icmp eq ptr %add.ptr.i21, %__p.sroa.0.0 - br i1 %tobool.not.i.i.i.i.i28, label %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEESB_ET0_T_SD_SC_.exit, label %if.then.i.i.i.i.i29 - -if.then.i.i.i.i.i29: ; preds = %if.then64 - %sub.ptr.lhs.cast.i.i.i.i.i25 = ptrtoint ptr %add.ptr.i21 to i64 - %sub.ptr.rhs.cast.i.i.i.i.i26 = ptrtoint ptr %__p.sroa.0.0 to i64 - %sub.ptr.sub.i.i.i.i.i27 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i25, %sub.ptr.rhs.cast.i.i.i.i.i26 - %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i27, 3 - %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i - %add.ptr.i.i.i.i.i30 = getelementptr inbounds ptr, ptr %add.ptr.i20, i64 %.pre.i.i.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i30, ptr nonnull align 8 %__p.sroa.0.0, i64 %sub.ptr.sub.i.i.i.i.i27, i1 false) + %tobool.not.i.i.i.i.i25 = icmp eq ptr %add.ptr.i21, %__p.sroa.0.0 + br i1 %tobool.not.i.i.i.i.i25, label %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEESB_ET0_T_SD_SC_.exit, label %if.then.i.i.i.i.i26 + +if.then.i.i.i.i.i26: ; preds = %if.then64 + %sub.ptr.lhs.cast.i.i.i.i.i27 = ptrtoint ptr %add.ptr.i21 to i64 + %sub.ptr.rhs.cast.i.i.i.i.i28 = ptrtoint ptr %__p.sroa.0.0 to i64 + %sub.ptr.sub.i.i.i.i.i29 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i27, %sub.ptr.rhs.cast.i.i.i.i.i28 + %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i29, 3 + %idx.neg.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i + %add.ptr.i.i.i.i.i30 = getelementptr inbounds ptr, ptr %add.ptr.i20, i64 %idx.neg.i.i.i.i.i + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i30, ptr nonnull align 8 %__p.sroa.0.0, i64 %sub.ptr.sub.i.i.i.i.i29, i1 false) br label %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEESB_ET0_T_SD_SC_.exit -_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEESB_ET0_T_SD_SC_.exit: ; preds = %if.then64, %if.then.i.i.i.i.i29 +_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEESB_ET0_T_SD_SC_.exit: ; preds = %if.then64, %if.then.i.i.i.i.i26 store ptr %5, ptr %__p.sroa.0.0, align 8 br label %return @@ -17571,8 +17571,8 @@ _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorI if.then.i.i.i.i.i.i: ; preds = %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEES7_ET0_T_SD_SC_.exit32.thread %sub.ptr.div.i.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i28, 3 - %.pre.i.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i - %add.ptr.i.i.i.i.i.i = getelementptr inbounds ptr, ptr %__last.coerce, i64 %.pre.i.i.i.i.i.i + %idx.neg.i.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i + %add.ptr.i.i.i.i.i.i = getelementptr inbounds ptr, ptr %__last.coerce, i64 %idx.neg.i.i.i.i.i.i tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i.i, ptr align 8 %__buffer, i64 %sub.ptr.sub.i.i.i.i.i28, i1 false) br label %_ZSt30__move_merge_adaptive_backwardIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEES7_SB_NS0_5__ops15_Iter_comp_iterINS3_16DynamicMapSorter25MapEntryMessageComparatorEEEEvT_SH_T0_SI_T1_T2_.exit @@ -17605,17 +17605,17 @@ if.then14.i: ; preds = %while.body.i34 if.then19.i: ; preds = %if.then14.i %incdec.ptr20.i = getelementptr inbounds i8, ptr %__last2.addr.0.i, i64 8 - %tobool.not.i.i.i.i.i17.i = icmp eq ptr %incdec.ptr20.i, %__buffer - br i1 %tobool.not.i.i.i.i.i17.i, label %_ZSt30__move_merge_adaptive_backwardIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEES7_SB_NS0_5__ops15_Iter_comp_iterINS3_16DynamicMapSorter25MapEntryMessageComparatorEEEEvT_SH_T0_SI_T1_T2_.exit, label %if.then.i.i.i.i.i19.i - -if.then.i.i.i.i.i19.i: ; preds = %if.then19.i - %sub.ptr.lhs.cast.i.i.i.i.i13.i = ptrtoint ptr %incdec.ptr20.i to i64 - %sub.ptr.rhs.cast.i.i.i.i.i14.i = ptrtoint ptr %__buffer to i64 - %sub.ptr.sub.i.i.i.i.i15.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i13.i, %sub.ptr.rhs.cast.i.i.i.i.i14.i - %sub.ptr.div.i.i.i.i.i16.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i15.i, 3 - %.pre.i.i.i.i.i18.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i16.i - %add.ptr.i.i.i.i.i20.i = getelementptr inbounds ptr, ptr %incdec.ptr.i11.i, i64 %.pre.i.i.i.i.i18.i - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %add.ptr.i.i.i.i.i20.i, ptr align 8 %__buffer, i64 %sub.ptr.sub.i.i.i.i.i15.i, i1 false) + %tobool.not.i.i.i.i.i13.i = icmp eq ptr %incdec.ptr20.i, %__buffer + br i1 %tobool.not.i.i.i.i.i13.i, label %_ZSt30__move_merge_adaptive_backwardIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEES7_SB_NS0_5__ops15_Iter_comp_iterINS3_16DynamicMapSorter25MapEntryMessageComparatorEEEEvT_SH_T0_SI_T1_T2_.exit, label %if.then.i.i.i.i.i14.i + +if.then.i.i.i.i.i14.i: ; preds = %if.then19.i + %sub.ptr.lhs.cast.i.i.i.i.i15.i = ptrtoint ptr %incdec.ptr20.i to i64 + %sub.ptr.rhs.cast.i.i.i.i.i16.i = ptrtoint ptr %__buffer to i64 + %sub.ptr.sub.i.i.i.i.i17.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i15.i, %sub.ptr.rhs.cast.i.i.i.i.i16.i + %sub.ptr.div.i.i.i.i.i18.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i17.i, 3 + %idx.neg.i.i.i.i.i19.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i18.i + %add.ptr.i.i.i.i.i20.i = getelementptr inbounds ptr, ptr %incdec.ptr.i11.i, i64 %idx.neg.i.i.i.i.i19.i + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %add.ptr.i.i.i.i.i20.i, ptr align 8 %__buffer, i64 %sub.ptr.sub.i.i.i.i.i17.i, i1 false) br label %_ZSt30__move_merge_adaptive_backwardIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEES7_SB_NS0_5__ops15_Iter_comp_iterINS3_16DynamicMapSorter25MapEntryMessageComparatorEEEEvT_SH_T0_SI_T1_T2_.exit if.else28.i: ; preds = %while.body.i34 @@ -17628,7 +17628,7 @@ if.end33.i: ; preds = %if.else28.i %incdec.ptr34.i = getelementptr inbounds i8, ptr %__last2.addr.0.i, i64 -8 br label %while.body.i34, !llvm.loop !117 -_ZSt30__move_merge_adaptive_backwardIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEES7_SB_NS0_5__ops15_Iter_comp_iterINS3_16DynamicMapSorter25MapEntryMessageComparatorEEEEvT_SH_T0_SI_T1_T2_.exit: ; preds = %if.else28.i, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEES7_ET0_T_SD_SC_.exit32, %if.then.i.i.i.i.i.i, %if.then19.i, %if.then.i.i.i.i.i19.i +_ZSt30__move_merge_adaptive_backwardIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEES7_SB_NS0_5__ops15_Iter_comp_iterINS3_16DynamicMapSorter25MapEntryMessageComparatorEEEEvT_SH_T0_SI_T1_T2_.exit: ; preds = %if.else28.i, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEES7_ET0_T_SD_SC_.exit32, %if.then.i.i.i.i.i.i, %if.then19.i, %if.then.i.i.i.i.i14.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %__comp.i33) br label %if.end113 @@ -17742,19 +17742,19 @@ if.then.i.i.i.i.i.i89: ; preds = %if.then4.i br label %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEES7_ET0_T_SD_SC_.exit.i _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEES7_ET0_T_SD_SC_.exit.i: ; preds = %if.then.i.i.i.i.i.i89, %if.then4.i - %tobool.not.i.i.i.i.i13.i = icmp eq ptr %__middle.coerce, %__first_cut.sroa.0.0 - br i1 %tobool.not.i.i.i.i.i13.i, label %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEESB_ET0_T_SD_SC_.exit.i, label %if.then.i.i.i.i.i14.i - -if.then.i.i.i.i.i14.i: ; preds = %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEES7_ET0_T_SD_SC_.exit.i - %sub.ptr.rhs.cast.i.i.i.i.i11.i = ptrtoint ptr %__first_cut.sroa.0.0 to i64 - %sub.ptr.sub.i.i.i.i.i12.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i86, %sub.ptr.rhs.cast.i.i.i.i.i11.i - %sub.ptr.div.i.i.i.i.i.i90 = ashr exact i64 %sub.ptr.sub.i.i.i.i.i12.i, 3 - %.pre.i.i.i.i.i.i91 = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i90 - %add.ptr.i.i.i.i.i15.i = getelementptr inbounds ptr, ptr %__second_cut.sroa.0.0, i64 %.pre.i.i.i.i.i.i91 - call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i15.i, ptr align 8 %__first_cut.sroa.0.0, i64 %sub.ptr.sub.i.i.i.i.i12.i, i1 false) + %tobool.not.i.i.i.i.i10.i = icmp eq ptr %__middle.coerce, %__first_cut.sroa.0.0 + br i1 %tobool.not.i.i.i.i.i10.i, label %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEESB_ET0_T_SD_SC_.exit.i, label %if.then.i.i.i.i.i11.i + +if.then.i.i.i.i.i11.i: ; preds = %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEES7_ET0_T_SD_SC_.exit.i + %sub.ptr.rhs.cast.i.i.i.i.i13.i = ptrtoint ptr %__first_cut.sroa.0.0 to i64 + %sub.ptr.sub.i.i.i.i.i14.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i86, %sub.ptr.rhs.cast.i.i.i.i.i13.i + %sub.ptr.div.i.i.i.i.i.i90 = ashr exact i64 %sub.ptr.sub.i.i.i.i.i14.i, 3 + %idx.neg.i.i.i.i.i.i91 = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i90 + %add.ptr.i.i.i.i.i15.i = getelementptr inbounds ptr, ptr %__second_cut.sroa.0.0, i64 %idx.neg.i.i.i.i.i.i91 + call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i15.i, ptr align 8 %__first_cut.sroa.0.0, i64 %sub.ptr.sub.i.i.i.i.i14.i, i1 false) br label %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEESB_ET0_T_SD_SC_.exit.i -_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEESB_ET0_T_SD_SC_.exit.i: ; preds = %if.then.i.i.i.i.i14.i, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEES7_ET0_T_SD_SC_.exit.i +_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEESB_ET0_T_SD_SC_.exit.i: ; preds = %if.then.i.i.i.i.i11.i, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEES7_ET0_T_SD_SC_.exit.i br i1 %tobool.not.i.i.i.i.i.i88, label %_ZSt4moveIPPKN6google8protobuf7MessageEN9__gnu_cxx17__normal_iteratorIS5_St6vectorIS4_SaIS4_EEEEET0_T_SD_SC_.exit.i92, label %if.then.i.i.i.i.i20.i if.then.i.i.i.i.i20.i: ; preds = %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEESB_ET0_T_SD_SC_.exit.i @@ -17795,17 +17795,18 @@ if.then.i.i.i.i.i33.i: ; preds = %_ZSt4moveIN9__gnu_c br label %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEESB_ET0_T_SD_SC_.exit.i _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEESB_ET0_T_SD_SC_.exit.i: ; preds = %if.then.i.i.i.i.i33.i, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEES7_ET0_T_SD_SC_.exit28.i - %sub.ptr.div.i.i.i.i.i38.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i24.i, 3 - %.pre.i.i.i.i.i40.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i38.i - br i1 %tobool.not.i.i.i.i.i25.i, label %_ZSt13move_backwardIPPKN6google8protobuf7MessageEN9__gnu_cxx17__normal_iteratorIS5_St6vectorIS4_SaIS4_EEEEET0_T_SD_SC_.exit.i, label %if.then.i.i.i.i.i41.i + br i1 %tobool.not.i.i.i.i.i25.i, label %_ZSt13move_backwardIPPKN6google8protobuf7MessageEN9__gnu_cxx17__normal_iteratorIS5_St6vectorIS4_SaIS4_EEEEET0_T_SD_SC_.exit.i, label %if.then.i.i.i.i.i36.i -if.then.i.i.i.i.i41.i: ; preds = %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEESB_ET0_T_SD_SC_.exit.i - %add.ptr.i.i.i.i.i42.i = getelementptr inbounds ptr, ptr %__second_cut.sroa.0.0, i64 %.pre.i.i.i.i.i40.i +if.then.i.i.i.i.i36.i: ; preds = %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEESB_ET0_T_SD_SC_.exit.i + %sub.ptr.div.i.i.i.i.i40.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i24.i, 3 + %idx.neg.i.i.i.i.i41.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i40.i + %add.ptr.i.i.i.i.i42.i = getelementptr inbounds ptr, ptr %__second_cut.sroa.0.0, i64 %idx.neg.i.i.i.i.i41.i call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i42.i, ptr align 8 %__buffer, i64 %sub.ptr.sub.i.i.i.i.i24.i, i1 false) br label %_ZSt13move_backwardIPPKN6google8protobuf7MessageEN9__gnu_cxx17__normal_iteratorIS5_St6vectorIS4_SaIS4_EEEEET0_T_SD_SC_.exit.i -_ZSt13move_backwardIPPKN6google8protobuf7MessageEN9__gnu_cxx17__normal_iteratorIS5_St6vectorIS4_SaIS4_EEEEET0_T_SD_SC_.exit.i: ; preds = %if.then.i.i.i.i.i41.i, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEESB_ET0_T_SD_SC_.exit.i - %add.ptr2.i.i.i.i.i43.i = getelementptr inbounds ptr, ptr %__second_cut.sroa.0.0, i64 %.pre.i.i.i.i.i40.i +_ZSt13move_backwardIPPKN6google8protobuf7MessageEN9__gnu_cxx17__normal_iteratorIS5_St6vectorIS4_SaIS4_EEEEET0_T_SD_SC_.exit.i: ; preds = %if.then.i.i.i.i.i36.i, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEESB_ET0_T_SD_SC_.exit.i + %idx.neg1.pre-phi.i.i.i.i.i43.i = phi i64 [ %idx.neg.i.i.i.i.i41.i, %if.then.i.i.i.i.i36.i ], [ 0, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEESB_ET0_T_SD_SC_.exit.i ] + %add.ptr2.i.i.i.i.i44.i = getelementptr inbounds ptr, ptr %__second_cut.sroa.0.0, i64 %idx.neg1.pre-phi.i.i.i.i.i43.i br label %_ZSt17__rotate_adaptiveIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEES7_lET_SC_SC_SC_T1_SD_T0_SD_.exit if.else44.i: ; preds = %if.else20.i @@ -17813,7 +17814,7 @@ if.else44.i: ; preds = %if.else20.i br label %_ZSt17__rotate_adaptiveIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEES7_lET_SC_SC_SC_T1_SD_T0_SD_.exit _ZSt17__rotate_adaptiveIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEES7_lET_SC_SC_SC_T1_SD_T0_SD_.exit: ; preds = %if.then.i84, %_ZSt4moveIPPKN6google8protobuf7MessageEN9__gnu_cxx17__normal_iteratorIS5_St6vectorIS4_SaIS4_EEEEET0_T_SD_SC_.exit.i92, %if.then22.i, %_ZSt13move_backwardIPPKN6google8protobuf7MessageEN9__gnu_cxx17__normal_iteratorIS5_St6vectorIS4_SaIS4_EEEEET0_T_SD_SC_.exit.i, %if.else44.i - %retval.sroa.0.0.i = phi ptr [ %add.ptr.i.i.i.i.i21.i, %_ZSt4moveIPPKN6google8protobuf7MessageEN9__gnu_cxx17__normal_iteratorIS5_St6vectorIS4_SaIS4_EEEEET0_T_SD_SC_.exit.i92 ], [ %add.ptr2.i.i.i.i.i43.i, %_ZSt13move_backwardIPPKN6google8protobuf7MessageEN9__gnu_cxx17__normal_iteratorIS5_St6vectorIS4_SaIS4_EEEEET0_T_SD_SC_.exit.i ], [ %call.i.i, %if.else44.i ], [ %__first_cut.sroa.0.0, %if.then.i84 ], [ %__second_cut.sroa.0.0, %if.then22.i ] + %retval.sroa.0.0.i = phi ptr [ %add.ptr.i.i.i.i.i21.i, %_ZSt4moveIPPKN6google8protobuf7MessageEN9__gnu_cxx17__normal_iteratorIS5_St6vectorIS4_SaIS4_EEEEET0_T_SD_SC_.exit.i92 ], [ %add.ptr2.i.i.i.i.i44.i, %_ZSt13move_backwardIPPKN6google8protobuf7MessageEN9__gnu_cxx17__normal_iteratorIS5_St6vectorIS4_SaIS4_EEEEET0_T_SD_SC_.exit.i ], [ %call.i.i, %if.else44.i ], [ %__first_cut.sroa.0.0, %if.then.i84 ], [ %__second_cut.sroa.0.0, %if.then22.i ] call void @_ZSt16__merge_adaptiveIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEElS7_NS0_5__ops15_Iter_comp_iterINS3_16DynamicMapSorter25MapEntryMessageComparatorEEEEvT_SH_SH_T0_SI_T1_SI_T2_(ptr %__first.coerce, ptr %__first_cut.sroa.0.0, ptr %retval.sroa.0.0.i, i64 noundef %__len11.0, i64 noundef %__len22.0, ptr noundef %__buffer, i64 noundef %__buffer_size, i64 %__comp.coerce) %sub104 = sub nsw i64 %__len2, %__len22.0 call void @_ZSt16__merge_adaptiveIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageESt6vectorIS6_SaIS6_EEEElS7_NS0_5__ops15_Iter_comp_iterINS3_16DynamicMapSorter25MapEntryMessageComparatorEEEEvT_SH_SH_T0_SI_T1_SI_T2_(ptr %retval.sroa.0.0.i, ptr %__second_cut.sroa.0.0, ptr %__last.coerce, i64 noundef %sub, i64 noundef %sub104, ptr noundef %__buffer, i64 noundef %__buffer_size, i64 %__comp.coerce) @@ -17874,8 +17875,8 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageE %sub.ptr.lhs.cast.i.i.i.i.i.i = ptrtoint ptr %__i.sroa.0.012.i to i64 %sub.ptr.sub.i.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i, %sub.ptr.rhs.cast.i45 %sub.ptr.div.i.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i.i, 3 - %.pre.i.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i - %add.ptr.i.i.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr.i2.i, i64 %.pre.i.i.i.i.i.i + %idx.neg.i.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i + %add.ptr.i.i.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr.i2.i, i64 %idx.neg.i.i.i.i.i.i call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %add.ptr.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(1) %__first.sroa.0.044, i64 %sub.ptr.sub.i.i.i.i.i.i, i1 false) store ptr %2, ptr %__first.sroa.0.044, align 8 br label %for.inc.i @@ -17943,8 +17944,8 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf7MessageE %sub.ptr.lhs.cast.i.i.i.i.i.i31 = ptrtoint ptr %__i.sroa.0.012.i13 to i64 %sub.ptr.sub.i.i.i.i.i.i32 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i31, %sub.ptr.rhs.cast.i.lcssa %sub.ptr.div.i.i.i.i.i.i33 = ashr exact i64 %sub.ptr.sub.i.i.i.i.i.i32, 3 - %.pre.i.i.i.i.i.i34 = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i33 - %add.ptr.i.i.i.i.i.i35 = getelementptr inbounds ptr, ptr %add.ptr.i2.i30, i64 %.pre.i.i.i.i.i.i34 + %idx.neg.i.i.i.i.i.i34 = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i33 + %add.ptr.i.i.i.i.i.i35 = getelementptr inbounds ptr, ptr %add.ptr.i2.i30, i64 %idx.neg.i.i.i.i.i.i34 call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %add.ptr.i.i.i.i.i.i35, ptr noundef nonnull align 8 dereferenceable(1) %__first.sroa.0.0.lcssa, i64 %sub.ptr.sub.i.i.i.i.i.i32, i1 false) store ptr %9, ptr %__first.sroa.0.0.lcssa, align 8 br label %for.inc.i21 diff --git a/bench/proxygen/optimized/QPACKHeaderTable.cpp.ll b/bench/proxygen/optimized/QPACKHeaderTable.cpp.ll index fa0bd1755f1..f35b5317d07 100644 --- a/bench/proxygen/optimized/QPACKHeaderTable.cpp.ll +++ b/bench/proxygen/optimized/QPACKHeaderTable.cpp.ll @@ -1595,29 +1595,26 @@ entry: %refCount_ = getelementptr inbounds i8, ptr %this, i64 96 %0 = load ptr, ptr %refCount_, align 8 %cmp.i.not = icmp eq ptr %0, null - br i1 %cmp.i.not, label %if.end, label %if.then + %tobool.not.i.i.i.i.i = icmp eq i32 %oldLength, %oldTail + %or.cond = or i1 %tobool.not.i.i.i.i.i, %cmp.i.not + br i1 %or.cond, label %if.end, label %if.then.i.i.i.i.i -if.then: ; preds = %entry +if.then.i.i.i.i.i: ; preds = %entry %conv = zext i32 %oldTail to i64 - %add.ptr.i.idx = shl nuw nsw i64 %conv, 1 %conv13 = zext i32 %oldLength to i64 - %add.ptr.i4.idx = shl nuw nsw i64 %conv13, 1 - %tobool.not.i.i.i.i.i = icmp eq i64 %add.ptr.i4.idx, %add.ptr.i.idx - br i1 %tobool.not.i.i.i.i.i, label %if.end, label %if.then.i.i.i.i.i - -if.then.i.i.i.i.i: ; preds = %if.then - %gepdiff = sub nsw i64 %add.ptr.i4.idx, %add.ptr.i.idx - %sub.ptr.div.i.i.i.i.i = ashr exact i64 %gepdiff, 1 - %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i %1 = load ptr, ptr %0, align 8 + %add.ptr.i.idx = shl nuw nsw i64 %conv, 1 %add.ptr.i = getelementptr inbounds i8, ptr %1, i64 %add.ptr.i.idx %conv22 = zext i32 %newLength to i64 %add.ptr.i5 = getelementptr inbounds i16, ptr %1, i64 %conv22 - %add.ptr.i.i.i.i.i = getelementptr inbounds i16, ptr %add.ptr.i5, i64 %.pre.i.i.i.i.i + %2 = sub nsw i64 %conv13, %conv + %gepdiff = shl nsw i64 %2, 1 + %idx.neg.i.i.i.i.i = sub nsw i64 0, %2 + %add.ptr.i.i.i.i.i = getelementptr inbounds i16, ptr %add.ptr.i5, i64 %idx.neg.i.i.i.i.i tail call void @llvm.memmove.p0.p0.i64(ptr align 2 %add.ptr.i.i.i.i.i, ptr align 2 %add.ptr.i, i64 %gepdiff, i1 false) br label %if.end -if.end: ; preds = %if.then.i.i.i.i.i, %if.then, %entry +if.end: ; preds = %if.then.i.i.i.i.i, %entry ret void } diff --git a/bench/quantlib/optimized/fdblackscholesasianengine.ll b/bench/quantlib/optimized/fdblackscholesasianengine.ll index 8f4bf71281e..e7bbc86e69f 100644 --- a/bench/quantlib/optimized/fdblackscholesasianengine.ll +++ b/bench/quantlib/optimized/fdblackscholesasianengine.ll @@ -2777,7 +2777,7 @@ invoke.cont389: ; preds = %if.then.i.i.i.i.i.i invoke.cont393: ; preds = %invoke.cont389 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %agg.tmp395, i8 0, i64 24, i1 false) - br i1 %cmp.not.i.i.i.i.i.i.i.i.i, label %invoke.cont.i390.thread, label %cond.true.i.i.i.i + br i1 %cmp.not.i.i.i.i.i.i.i.i.i, label %invoke.cont.i390.thread, label %_ZNSt16allocator_traitsISaIdEE8allocateERS0_m.exit.i.i.i.i invoke.cont.i390.thread: ; preds = %invoke.cont393 %_M_finish.i.i.i787 = getelementptr inbounds nuw i8, ptr %agg.tmp395, i64 8 @@ -2787,18 +2787,7 @@ invoke.cont.i390.thread: ; preds = %invoke.cont393 store ptr %add.ptr.i.i.i788, ptr %_M_end_of_storage.i.i.i789, align 8, !tbaa !133 br label %invoke.cont397 -cond.true.i.i.i.i: ; preds = %invoke.cont393 - %cmp.i.i.i.i.i.i = icmp ugt i64 %sub.ptr.sub.i.i.i.i.i.i.i, 9223372036854775800 - br i1 %cmp.i.i.i.i.i.i, label %if.then3.i.i.i.i.i.i, label %_ZNSt16allocator_traitsISaIdEE8allocateERS0_m.exit.i.i.i.i, !prof !83 - -if.then3.i.i.i.i.i.i: ; preds = %cond.true.i.i.i.i - invoke void @_ZSt28__throw_bad_array_new_lengthv() #29 - to label %.noexc392 unwind label %ehcleanup410.thread - -.noexc392: ; preds = %if.then3.i.i.i.i.i.i - unreachable - -_ZNSt16allocator_traitsISaIdEE8allocateERS0_m.exit.i.i.i.i: ; preds = %cond.true.i.i.i.i +_ZNSt16allocator_traitsISaIdEE8allocateERS0_m.exit.i.i.i.i: ; preds = %invoke.cont393 %call5.i.i.i.i2.i6.i393 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %sub.ptr.sub.i.i.i.i.i.i.i) #31 to label %if.then.i.i.i.i.i.i.i.i.i391 unwind label %ehcleanup410.thread @@ -3885,7 +3874,7 @@ lpad392: ; preds = %invoke.cont389 cleanup br label %ehcleanup414 -ehcleanup410.thread: ; preds = %if.then3.i.i.i.i.i.i, %_ZNSt16allocator_traitsISaIdEE8allocateERS0_m.exit.i.i.i.i +ehcleanup410.thread: ; preds = %_ZNSt16allocator_traitsISaIdEE8allocateERS0_m.exit.i.i.i.i %425 = landingpad { ptr, i32 } cleanup br label %cleanup.action412 diff --git a/bench/quantlib/optimized/lmfixedvolmodel.ll b/bench/quantlib/optimized/lmfixedvolmodel.ll index 870f0565a8a..912f4c22fff 100644 --- a/bench/quantlib/optimized/lmfixedvolmodel.ll +++ b/bench/quantlib/optimized/lmfixedvolmodel.ll @@ -159,20 +159,22 @@ invoke.cont.i: ; preds = %_ZNSt16allocator_tr %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %6 to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i %tobool.not.i.i.i.i.i.i.i.i.i = icmp eq ptr %7, %6 - br i1 %tobool.not.i.i.i.i.i.i.i.i.i, label %do.body, label %if.then.i.i.i.i.i.i.i.i.i + br i1 %tobool.not.i.i.i.i.i.i.i.i.i, label %do.body.thread, label %do.body -if.then.i.i.i.i.i.i.i.i.i: ; preds = %invoke.cont.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %cond.i.i.i.i, ptr align 8 %6, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i, i1 false) - br label %do.body +do.body.thread: ; preds = %invoke.cont.i + %add.ptr.i.i.i.i.i.i.i.i.i190 = getelementptr inbounds i8, ptr %cond.i.i.i.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i + store ptr %add.ptr.i.i.i.i.i.i.i.i.i190, ptr %_M_finish.i.i.i, align 8, !tbaa !3 + br label %if.then -do.body: ; preds = %if.then.i.i.i.i.i.i.i.i.i, %invoke.cont.i +do.body: ; preds = %invoke.cont.i + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %cond.i.i.i.i, ptr align 8 %6, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i, i1 false) %add.ptr.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i store ptr %add.ptr.i.i.i.i.i.i.i.i.i, ptr %_M_finish.i.i.i, align 8, !tbaa !3 %sub.ptr.div.i31 = ashr exact i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i, 3 %cmp = icmp ugt i64 %sub.ptr.div.i31, 1 br i1 %cmp, label %do.body32, label %if.then -if.then: ; preds = %do.body +if.then: ; preds = %do.body.thread, %do.body call void @llvm.lifetime.start.p0(i64 376, ptr nonnull %_ql_msg_stream) #17 invoke void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %_ql_msg_stream) to label %invoke.cont5 unwind label %lpad4 diff --git a/bench/quantlib/optimized/turnbullwakemanasianengine.ll b/bench/quantlib/optimized/turnbullwakemanasianengine.ll index 1b73769eb93..5c3eaaaa123 100644 --- a/bench/quantlib/optimized/turnbullwakemanasianengine.ll +++ b/bench/quantlib/optimized/turnbullwakemanasianengine.ll @@ -2426,6 +2426,7 @@ lpad428.loopexit.split-lp: ; preds = %if.then.i.i.i.i553 br label %ehcleanup614 for.cond.cleanup447: ; preds = %for.cond.cleanup457, %for.cond.cleanup358 + %sub.ptr.sub.i3861501 = phi i64 [ 0, %for.cond.cleanup358 ], [ %sub.ptr.sub.i386, %for.cond.cleanup457 ] %EA2.0.lcssa = phi double [ 0.000000e+00, %for.cond.cleanup358 ], [ %EA2.1.lcssa, %for.cond.cleanup457 ] %mul471 = mul i64 %add, %add %conv472 = uitofp i64 %mul471 to double @@ -2932,14 +2933,14 @@ call.i.i776.noexc: ; preds = %invoke.cont600 invoke.cont.i.i.thread.i.i802: ; preds = %call.i.i776.noexc %_M_finish.i.i.i.i3.i.i803 = getelementptr inbounds nuw i8, ptr %call.i.i776806, i64 16 - %add.ptr.i.i.i.i4.i.i804 = getelementptr inbounds nuw i8, ptr null, i64 %sub.ptr.sub.i386 + %add.ptr.i.i.i.i4.i.i804 = getelementptr inbounds nuw i8, ptr null, i64 %sub.ptr.sub.i3861501 %_M_end_of_storage.i.i.i.i5.i.i805 = getelementptr inbounds nuw i8, ptr %call.i.i776806, i64 24 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %held.i.i.i777, i8 0, i64 16, i1 false) store ptr %add.ptr.i.i.i.i4.i.i804, ptr %_M_end_of_storage.i.i.i.i5.i.i805, align 8, !tbaa !112 br label %_ZN5boost3anyC2IRSt6vectorIdSaIdEEEEOT_PNSt9enable_ifIXntsr3std7is_sameIRS0_S6_EE5valueEvE4typeEPNS8_IXntsr3std8is_constIS6_EE5valueEvE4typeE.exit.i792 cond.true.i.i.i.i.i.i.i783: ; preds = %call.i.i776.noexc - %cmp.i.i.i.i.i.i.i.i.i784 = icmp ugt i64 %sub.ptr.sub.i386, 9223372036854775800 + %cmp.i.i.i.i.i.i.i.i.i784 = icmp ugt i64 %sub.ptr.sub.i3861501, 9223372036854775800 br i1 %cmp.i.i.i.i.i.i.i.i.i784, label %if.then3.i.i.i.i.i.i.i.i.i800, label %_ZNSt16allocator_traitsISaIdEE8allocateERS0_m.exit.i.i.i.i.i.i.i785, !prof !41 if.then3.i.i.i.i.i.i.i.i.i800: ; preds = %cond.true.i.i.i.i.i.i.i783 @@ -2950,17 +2951,17 @@ if.then3.i.i.i.i.i.i.i.i.i800: ; preds = %cond.true.i.i.i.i.i unreachable _ZNSt16allocator_traitsISaIdEE8allocateERS0_m.exit.i.i.i.i.i.i.i785: ; preds = %cond.true.i.i.i.i.i.i.i783 - %call5.i.i.i.i2.i6.i1.i1.i.i786 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %sub.ptr.sub.i386) #31 + %call5.i.i.i.i2.i6.i1.i1.i.i786 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %sub.ptr.sub.i3861501) #31 to label %if.then.i.i.i.i.i.i.i.i.i.i.i.i788 unwind label %lpad.i.i787 if.then.i.i.i.i.i.i.i.i.i.i.i.i788: ; preds = %_ZNSt16allocator_traitsISaIdEE8allocateERS0_m.exit.i.i.i.i.i.i.i785 store ptr %call5.i.i.i.i2.i6.i1.i1.i.i786, ptr %held.i.i.i777, align 8, !tbaa !114 %_M_finish.i.i.i.i.i.i789 = getelementptr inbounds nuw i8, ptr %call.i.i776806, i64 16 store ptr %call5.i.i.i.i2.i6.i1.i1.i.i786, ptr %_M_finish.i.i.i.i.i.i789, align 8, !tbaa !115 - %add.ptr.i.i.i.i.i.i790 = getelementptr inbounds nuw i8, ptr %call5.i.i.i.i2.i6.i1.i1.i.i786, i64 %sub.ptr.sub.i386 + %add.ptr.i.i.i.i.i.i790 = getelementptr inbounds nuw i8, ptr %call5.i.i.i.i2.i6.i1.i1.i.i786, i64 %sub.ptr.sub.i3861501 %_M_end_of_storage.i.i.i.i.i.i791 = getelementptr inbounds nuw i8, ptr %call.i.i776806, i64 24 store ptr %add.ptr.i.i.i.i.i.i790, ptr %_M_end_of_storage.i.i.i.i.i.i791, align 8, !tbaa !112 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %call5.i.i.i.i2.i6.i1.i1.i.i786, ptr align 8 %forwards.sroa.0.3, i64 %sub.ptr.sub.i386, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %call5.i.i.i.i2.i6.i1.i1.i.i786, ptr align 8 %forwards.sroa.0.3, i64 %sub.ptr.sub.i3861501, i1 false) br label %_ZN5boost3anyC2IRSt6vectorIdSaIdEEEEOT_PNSt9enable_ifIXntsr3std7is_sameIRS0_S6_EE5valueEvE4typeEPNS8_IXntsr3std8is_constIS6_EE5valueEvE4typeE.exit.i792 lpad.i.i787: ; preds = %_ZNSt16allocator_traitsISaIdEE8allocateERS0_m.exit.i.i.i.i.i.i.i785, %if.then3.i.i.i.i.i.i.i.i.i800 @@ -2972,7 +2973,7 @@ lpad.i.i787: ; preds = %_ZNSt16allocator_tr _ZN5boost3anyC2IRSt6vectorIdSaIdEEEEOT_PNSt9enable_ifIXntsr3std7is_sameIRS0_S6_EE5valueEvE4typeEPNS8_IXntsr3std8is_constIS6_EE5valueEvE4typeE.exit.i792: ; preds = %if.then.i.i.i.i.i.i.i.i.i.i.i.i788, %invoke.cont.i.i.thread.i.i802 %_M_finish.i.i.i.i7.i.i793 = phi ptr [ %_M_finish.i.i.i.i3.i.i803, %invoke.cont.i.i.thread.i.i802 ], [ %_M_finish.i.i.i.i.i.i789, %if.then.i.i.i.i.i.i.i.i.i.i.i.i788 ] %cond.i.i.i.i.i6.i.i794 = phi ptr [ null, %invoke.cont.i.i.thread.i.i802 ], [ %call5.i.i.i.i2.i6.i1.i1.i.i786, %if.then.i.i.i.i.i.i.i.i.i.i.i.i788 ] - %add.ptr.i.i.i.i.i.i.i.i.i.i.i.i795 = getelementptr inbounds i8, ptr %cond.i.i.i.i.i6.i.i794, i64 %sub.ptr.sub.i386 + %add.ptr.i.i.i.i.i.i.i.i.i.i.i.i795 = getelementptr inbounds i8, ptr %cond.i.i.i.i.i6.i.i794, i64 %sub.ptr.sub.i3861501 store ptr %add.ptr.i.i.i.i.i.i.i.i.i.i.i.i795, ptr %_M_finish.i.i.i.i7.i.i793, align 8, !tbaa !115 %250 = load ptr, ptr %call601, align 8, !tbaa !81 store ptr %call.i.i776806, ptr %call601, align 8, !tbaa !81 diff --git a/bench/re2/optimized/prefilter_tree.cc.ll b/bench/re2/optimized/prefilter_tree.cc.ll index accc6291caa..b2f1a882c1a 100644 --- a/bench/re2/optimized/prefilter_tree.cc.ll +++ b/bench/re2/optimized/prefilter_tree.cc.ll @@ -564,10 +564,6 @@ sw.bb13: ; preds = %if.end %_M_finish.i = getelementptr inbounds i8, ptr %8, i64 8 %9 = load ptr, ptr %_M_finish.i, align 8 %10 = load ptr, ptr %8, align 8 - %sub.ptr.lhs.cast.i42 = ptrtoint ptr %9 to i64 - %sub.ptr.rhs.cast.i43 = ptrtoint ptr %10 to i64 - %sub.ptr.sub.i44 = sub i64 %sub.ptr.lhs.cast.i42, %sub.ptr.rhs.cast.i43 - %sub.ptr.div.i45 = ashr exact i64 %sub.ptr.sub.i44, 3 %cmp1646.not = icmp eq ptr %9, %10 br i1 %cmp1646.not, label %for.end, label %for.body @@ -615,7 +611,7 @@ for.end: ; preds = %for.inc, %sw.bb13 %j.0.lcssa = phi i32 [ 0, %sw.bb13 ], [ %j.1, %for.inc ] %.lcssa33 = phi ptr [ %9, %sw.bb13 ], [ %15, %for.inc ] %.lcssa = phi ptr [ %10, %sw.bb13 ], [ %16, %for.inc ] - %sub.ptr.div.i.lcssa = phi i64 [ %sub.ptr.div.i45, %sw.bb13 ], [ %sub.ptr.div.i, %for.inc ] + %sub.ptr.div.i.lcssa = phi i64 [ 0, %sw.bb13 ], [ %sub.ptr.div.i, %for.inc ] %conv26 = sext i32 %j.0.lcssa to i64 %cmp.i = icmp ult i64 %sub.ptr.div.i.lcssa, %conv26 br i1 %cmp.i, label %if.then.i, label %if.else.i @@ -801,12 +797,8 @@ for.body.lr.ph: ; preds = %_ZNSt6vectorINSt7__ br label %for.body for.cond7.preheader: ; preds = %for.inc - %sub.ptr.lhs.cast.i69942 = ptrtoint ptr %v.sroa.15.4 to i64 - %sub.ptr.rhs.cast.i70943 = ptrtoint ptr %v.sroa.0.6 to i64 - %sub.ptr.sub.i71944 = sub i64 %sub.ptr.lhs.cast.i69942, %sub.ptr.rhs.cast.i70943 - %sub.ptr.div.i72945 = ashr exact i64 %sub.ptr.sub.i71944, 3 %cmp9946.not = icmp eq ptr %v.sroa.15.4, %v.sroa.0.6 - br i1 %cmp9946.not, label %for.end37, label %for.body10 + br i1 %cmp9946.not, label %for.end71.thread, label %for.body10 for.body: ; preds = %for.body.lr.ph, %for.inc %4 = phi ptr [ %3, %for.body.lr.ph ], [ %13, %for.inc ] @@ -915,7 +907,7 @@ lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loo br label %ehcleanup lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp: ; preds = %if.then.i.i.i.invoke, %if.then.i.i.i.i384, %if.then.i.i.i288, %sw.default, %if.then.i182, %if.then.i.i.i166, %if.then.i.i.i111 - %v.sroa.0.1.ph.ph.ph.ph.ph.ph = phi ptr [ %v.sroa.0.5937, %if.then.i.i.i111 ], [ %v.sroa.0.3.lcssa, %if.then.i.i.i166 ], [ %v.sroa.0.3.lcssa107010901096, %sw.default ], [ %v.sroa.0.3.lcssa107010901096, %if.then.i.i.i288 ], [ %v.sroa.0.3.lcssa107010901095, %if.then.i.i.i.i384 ], [ %v.sroa.0.3.lcssa, %if.then.i182 ], [ %v.sroa.0.0926, %if.then.i.i.i.invoke ] + %v.sroa.0.1.ph.ph.ph.ph.ph.ph = phi ptr [ %v.sroa.0.5937, %if.then.i.i.i111 ], [ %v.sroa.0.4, %if.then.i.i.i166 ], [ %v.sroa.0.3.lcssa107010901096, %sw.default ], [ %v.sroa.0.3.lcssa107010901096, %if.then.i.i.i288 ], [ %v.sroa.0.3.lcssa107010901095, %if.then.i.i.i.i384 ], [ %v.sroa.0.4, %if.then.i182 ], [ %v.sroa.0.0926, %if.then.i.i.i.invoke ] %lpad.loopexit.split-lp856 = landingpad { ptr, i32 } cleanup br label %ehcleanup @@ -1117,10 +1109,8 @@ for.inc35: ; preds = %for.inc31, %if.then %cmp9 = icmp ult i64 %inc36, %sub.ptr.div.i72 br i1 %cmp9, label %for.body10, label %for.end37, !llvm.loop !12 -for.end37: ; preds = %for.inc35, %for.cond7.preheader - %v.sroa.0.3.lcssa = phi ptr [ %v.sroa.0.6, %for.cond7.preheader ], [ %v.sroa.0.4, %for.inc35 ] - %sub.ptr.div.i72.lcssa = phi i64 [ %sub.ptr.div.i72945, %for.cond7.preheader ], [ %sub.ptr.div.i72, %for.inc35 ] - %conv40 = trunc i64 %sub.ptr.div.i72.lcssa to i32 +for.end37: ; preds = %for.inc35 + %conv40 = trunc i64 %sub.ptr.div.i72 to i32 %cmp42954 = icmp sgt i32 %conv40, 0 br i1 %cmp42954, label %for.body43.lr.ph, label %for.end71.thread @@ -1131,14 +1121,14 @@ for.body43.lr.ph: ; preds = %for.end37 %atom_index_to_id_ = getelementptr inbounds i8, ptr %this, i64 72 %_M_finish.i139 = getelementptr inbounds i8, ptr %this, i64 80 %_M_end_of_storage.i140 = getelementptr inbounds i8, ptr %this, i64 88 - %25 = and i64 %sub.ptr.div.i72.lcssa, 2147483647 + %25 = and i64 %sub.ptr.div.i72, 2147483647 br label %for.body43 for.body43: ; preds = %for.body43.lr.ph, %for.inc70 %indvars.iv = phi i64 [ %25, %for.body43.lr.ph ], [ %indvars.iv.next, %for.inc70 ] %unique_id.0955 = phi i32 [ 0, %for.body43.lr.ph ], [ %unique_id.1, %for.inc70 ] %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %add.ptr.i121 = getelementptr inbounds ptr, ptr %v.sroa.0.3.lcssa, i64 %indvars.iv.next + %add.ptr.i121 = getelementptr inbounds ptr, ptr %v.sroa.0.4, i64 %indvars.iv.next %26 = load ptr, ptr %add.ptr.i121, align 8 %cmp46 = icmp eq ptr %26, null br i1 %cmp46, label %for.inc70, label %if.end48 @@ -1589,9 +1579,9 @@ for.inc70: ; preds = %for.inc70.sink.spli %cmp42 = icmp sgt i64 %indvars.iv, 1 br i1 %cmp42, label %for.body43, label %for.end71, !llvm.loop !28 -for.end71.thread: ; preds = %for.end37, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5clearEv.exit - %sub.ptr.div.i72.lcssa1073.ph = phi i64 [ %sub.ptr.div.i72.lcssa, %for.end37 ], [ 0, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5clearEv.exit ] - %v.sroa.0.3.lcssa1070.ph = phi ptr [ %v.sroa.0.3.lcssa, %for.end37 ], [ null, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5clearEv.exit ] +for.end71.thread: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5clearEv.exit, %for.cond7.preheader, %for.end37 + %sub.ptr.div.i72.lcssa1073.ph = phi i64 [ %sub.ptr.div.i72, %for.end37 ], [ 0, %for.cond7.preheader ], [ 0, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5clearEv.exit ] + %v.sroa.0.3.lcssa1070.ph = phi ptr [ %v.sroa.0.4, %for.end37 ], [ %v.sroa.0.6, %for.cond7.preheader ], [ null, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5clearEv.exit ] %_M_finish.i.i1731080 = getelementptr inbounds i8, ptr %this, i64 8 %91 = load ptr, ptr %_M_finish.i.i1731080, align 8 %92 = load ptr, ptr %this, align 8 @@ -1624,8 +1614,8 @@ if.else.i174: ; preds = %for.end71.thread, % %97 = phi ptr [ %91, %for.end71.thread ], [ %94, %for.end71 ] %_M_finish.i.i1731093 = phi ptr [ %_M_finish.i.i1731080, %for.end71.thread ], [ %_M_finish.i.i173, %for.end71 ] %unique_id.0.lcssa1092 = phi i64 [ 0, %for.end71.thread ], [ %93, %for.end71 ] - %v.sroa.0.3.lcssa10701091 = phi ptr [ %v.sroa.0.3.lcssa1070.ph, %for.end71.thread ], [ %v.sroa.0.3.lcssa, %for.end71 ] - %sub.ptr.div.i72.lcssa10731089 = phi i64 [ %sub.ptr.div.i72.lcssa1073.ph, %for.end71.thread ], [ %sub.ptr.div.i72.lcssa, %for.end71 ] + %v.sroa.0.3.lcssa10701091 = phi ptr [ %v.sroa.0.3.lcssa1070.ph, %for.end71.thread ], [ %v.sroa.0.4, %for.end71 ] + %sub.ptr.div.i72.lcssa10731089 = phi i64 [ %sub.ptr.div.i72.lcssa1073.ph, %for.end71.thread ], [ %sub.ptr.div.i72, %for.end71 ] %cmp4295410741087 = phi i1 [ false, %for.end71.thread ], [ true, %for.end71 ] %cmp4.i = icmp ugt i64 %sub.ptr.div.i.i1094, %unique_id.0.lcssa1092 br i1 %cmp4.i, label %if.then5.i, label %invoke.cont73 @@ -1666,8 +1656,8 @@ invoke.cont.i.i181: ; preds = %_ZSt8_DestroyIN3re2 br i1 %cmp4295410741087, label %for.body80.lr.ph, label %for.cond148.preheader invoke.cont73: ; preds = %if.then5.i, %if.else.i174, %if.then.i182 - %v.sroa.0.3.lcssa10701090 = phi ptr [ %v.sroa.0.3.lcssa10701091, %if.then5.i ], [ %v.sroa.0.3.lcssa10701091, %if.else.i174 ], [ %v.sroa.0.3.lcssa, %if.then.i182 ] - %sub.ptr.div.i72.lcssa10731088 = phi i64 [ %sub.ptr.div.i72.lcssa10731089, %if.then5.i ], [ %sub.ptr.div.i72.lcssa10731089, %if.else.i174 ], [ %sub.ptr.div.i72.lcssa, %if.then.i182 ] + %v.sroa.0.3.lcssa10701090 = phi ptr [ %v.sroa.0.3.lcssa10701091, %if.then5.i ], [ %v.sroa.0.3.lcssa10701091, %if.else.i174 ], [ %v.sroa.0.4, %if.then.i182 ] + %sub.ptr.div.i72.lcssa10731088 = phi i64 [ %sub.ptr.div.i72.lcssa10731089, %if.then5.i ], [ %sub.ptr.div.i72.lcssa10731089, %if.else.i174 ], [ %sub.ptr.div.i72, %if.then.i182 ] %cmp4295410741086 = phi i1 [ %cmp4295410741087, %if.then5.i ], [ %cmp4295410741087, %if.else.i174 ], [ true, %if.then.i182 ] br i1 %cmp4295410741086, label %for.body80.lr.ph, label %for.cond148.preheader @@ -1685,10 +1675,6 @@ for.cond148.preheader: ; preds = %for.inc144, %invoke %v.sroa.0.3.lcssa107010901095 = phi ptr [ %v.sroa.0.3.lcssa10701091, %invoke.cont.i.i181 ], [ %v.sroa.0.3.lcssa10701090, %invoke.cont73 ], [ %v.sroa.0.3.lcssa107010901096, %for.inc144 ] %101 = load ptr, ptr %_M_finish.i, align 8 %102 = load ptr, ptr %prefilter_vec_, align 8 - %sub.ptr.lhs.cast.i295970 = ptrtoint ptr %101 to i64 - %sub.ptr.rhs.cast.i296971 = ptrtoint ptr %102 to i64 - %sub.ptr.sub.i297972 = sub i64 %sub.ptr.lhs.cast.i295970, %sub.ptr.rhs.cast.i296971 - %sub.ptr.div.i298973 = ashr exact i64 %sub.ptr.sub.i297972, 3 %cmp151974.not = icmp eq ptr %101, %102 br i1 %cmp151974.not, label %for.end174, label %for.body152.lr.ph @@ -2358,7 +2344,7 @@ for.inc172: ; preds = %_ZNSt6vectorIiSaIiE br i1 %cmp151, label %for.body152, label %for.end174, !llvm.loop !31 for.end174: ; preds = %for.inc172, %for.cond148.preheader - %sub.ptr.div.i298.lcssa = phi i64 [ %sub.ptr.div.i298973, %for.cond148.preheader ], [ %sub.ptr.div.i298, %for.inc172 ] + %sub.ptr.div.i298.lcssa = phi i64 [ 0, %for.cond148.preheader ], [ %sub.ptr.div.i298, %for.inc172 ] %unfiltered_177 = getelementptr inbounds i8, ptr %this, i64 24 %_M_finish.i394 = getelementptr inbounds i8, ptr %this, i64 32 %199 = load ptr, ptr %_M_finish.i394, align 8 @@ -2781,13 +2767,13 @@ if.end.i.i.i: ; preds = %for.body.i.i.i529 %incdec.ptr.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.051.i.i.i, i64 4 %254 = load i32, ptr %incdec.ptr.i.i.i.i, align 4 %cmp.i9.i.i.i = icmp eq i32 %254, %234 - br i1 %cmp.i9.i.i.i, label %invoke.cont272.loopexit.split.loop.exit1146, label %if.end10.i.i.i + br i1 %cmp.i9.i.i.i, label %invoke.cont272.loopexit.split.loop.exit1145, label %if.end10.i.i.i if.end10.i.i.i: ; preds = %if.end.i.i.i %incdec.ptr.i10.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.051.i.i.i, i64 8 %255 = load i32, ptr %incdec.ptr.i10.i.i.i, align 4 %cmp.i11.i.i.i = icmp eq i32 %255, %234 - br i1 %cmp.i11.i.i.i, label %invoke.cont272.loopexit.split.loop.exit1144, label %if.end16.i.i.i + br i1 %cmp.i11.i.i.i, label %invoke.cont272.loopexit.split.loop.exit1143, label %if.end16.i.i.i if.end16.i.i.i: ; preds = %if.end10.i.i.i %incdec.ptr.i12.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.051.i.i.i, i64 12 @@ -2846,16 +2832,16 @@ invoke.cont272.loopexit.split.loop.exit: ; preds = %if.end16.i.i.i %incdec.ptr.i12.i.i.i.le = getelementptr inbounds i8, ptr %__first.sroa.0.051.i.i.i, i64 12 br label %invoke.cont272 -invoke.cont272.loopexit.split.loop.exit1144: ; preds = %if.end10.i.i.i +invoke.cont272.loopexit.split.loop.exit1143: ; preds = %if.end10.i.i.i %incdec.ptr.i10.i.i.i.le = getelementptr inbounds i8, ptr %__first.sroa.0.051.i.i.i, i64 8 br label %invoke.cont272 -invoke.cont272.loopexit.split.loop.exit1146: ; preds = %if.end.i.i.i +invoke.cont272.loopexit.split.loop.exit1145: ; preds = %if.end.i.i.i %incdec.ptr.i.i.i.i.le = getelementptr inbounds i8, ptr %__first.sroa.0.051.i.i.i, i64 4 br label %invoke.cont272 -invoke.cont272: ; preds = %for.body.i.i.i529, %invoke.cont272.loopexit.split.loop.exit, %invoke.cont272.loopexit.split.loop.exit1144, %invoke.cont272.loopexit.split.loop.exit1146, %sw.bb38.i.i.i, %sw.bb31.i.i.i, %sw.bb.i.i.i - %retval.sroa.0.0.in.sroa.speculated.i.i.i = phi ptr [ %__first.sroa.0.0.lcssa.i.i.i, %sw.bb.i.i.i ], [ %__first.sroa.0.1.i.i.i, %sw.bb31.i.i.i ], [ %spec.select.i.i.i, %sw.bb38.i.i.i ], [ %incdec.ptr.i12.i.i.i.le, %invoke.cont272.loopexit.split.loop.exit ], [ %incdec.ptr.i10.i.i.i.le, %invoke.cont272.loopexit.split.loop.exit1144 ], [ %incdec.ptr.i.i.i.i.le, %invoke.cont272.loopexit.split.loop.exit1146 ], [ %__first.sroa.0.051.i.i.i, %for.body.i.i.i529 ] +invoke.cont272: ; preds = %for.body.i.i.i529, %invoke.cont272.loopexit.split.loop.exit, %invoke.cont272.loopexit.split.loop.exit1143, %invoke.cont272.loopexit.split.loop.exit1145, %sw.bb38.i.i.i, %sw.bb31.i.i.i, %sw.bb.i.i.i + %retval.sroa.0.0.in.sroa.speculated.i.i.i = phi ptr [ %__first.sroa.0.0.lcssa.i.i.i, %sw.bb.i.i.i ], [ %__first.sroa.0.1.i.i.i, %sw.bb31.i.i.i ], [ %spec.select.i.i.i, %sw.bb38.i.i.i ], [ %incdec.ptr.i12.i.i.i.le, %invoke.cont272.loopexit.split.loop.exit ], [ %incdec.ptr.i10.i.i.i.le, %invoke.cont272.loopexit.split.loop.exit1143 ], [ %incdec.ptr.i.i.i.i.le, %invoke.cont272.loopexit.split.loop.exit1145 ], [ %__first.sroa.0.051.i.i.i, %for.body.i.i.i529 ] %cmp.i533.not = icmp eq ptr %retval.sroa.0.0.in.sroa.speculated.i.i.i, %250 br i1 %cmp.i533.not, label %for.inc293, label %if.then279 @@ -2918,7 +2904,7 @@ _ZNSt6vectorIPN3re29PrefilterESaIS2_EED2Ev.exit: ; preds = %cleanup, %if.then.i ret void ehcleanup: ; preds = %lpad.loopexit836, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %lpad.loopexit.split-lp.loopexit, %if.then.i.i.i406, %lpad194, %lpad.i, %lpad97 - %v.sroa.0.2 = phi ptr [ %v.sroa.0.3.lcssa107010901096, %lpad97 ], [ %v.sroa.0.3.lcssa107010901096, %lpad.i ], [ %v.sroa.0.3.lcssa107010901095, %lpad194 ], [ %v.sroa.0.3.lcssa107010901095, %if.then.i.i.i406 ], [ %v.sroa.0.3.lcssa107010901095, %lpad.loopexit836 ], [ %v.sroa.0.3.lcssa107010901096, %lpad.loopexit.split-lp.loopexit ], [ %v.sroa.0.3.lcssa, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %v.sroa.0.5937, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %v.sroa.0.0926, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %v.sroa.0.1.ph.ph.ph.ph.ph.ph, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ] + %v.sroa.0.2 = phi ptr [ %v.sroa.0.3.lcssa107010901096, %lpad97 ], [ %v.sroa.0.3.lcssa107010901096, %lpad.i ], [ %v.sroa.0.3.lcssa107010901095, %lpad194 ], [ %v.sroa.0.3.lcssa107010901095, %if.then.i.i.i406 ], [ %v.sroa.0.3.lcssa107010901095, %lpad.loopexit836 ], [ %v.sroa.0.3.lcssa107010901096, %lpad.loopexit.split-lp.loopexit ], [ %v.sroa.0.4, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %v.sroa.0.5937, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %v.sroa.0.0926, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %v.sroa.0.1.ph.ph.ph.ph.ph.ph, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ] %.pn = phi { ptr, i32 } [ %138, %lpad97 ], [ %136, %lpad.i ], [ %lpad.phi, %lpad194 ], [ %lpad.phi, %if.then.i.i.i406 ], [ %lpad.loopexit837, %lpad.loopexit836 ], [ %lpad.loopexit841, %lpad.loopexit.split-lp.loopexit ], [ %lpad.loopexit849, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit852, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit855, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp856, %lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ] %tobool.not.i.i.i547 = icmp eq ptr %v.sroa.0.2, null br i1 %tobool.not.i.i.i547, label %_ZNSt6vectorIPN3re29PrefilterESaIS2_EED2Ev.exit549, label %if.then.i.i.i548 @@ -7747,8 +7733,8 @@ if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitializ %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 2 - %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i - %add.ptr.i.i.i.i.i = getelementptr inbounds i32, ptr %1, i64 %.pre.i.i.i.i.i + %idx.neg.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i + %add.ptr.i.i.i.i.i = getelementptr inbounds i32, ptr %1, i64 %idx.neg.i.i.i.i.i tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %add.ptr.i.i.i.i.i, ptr align 4 %__position.coerce, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) br label %if.then.i.i.i.i.i30 @@ -7963,8 +7949,8 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEES6_ET0_T %sub.ptr.lhs.cast.i.i.i.i.i.i32.i = ptrtoint ptr %__i.sroa.0.013.i16.i to i64 %sub.ptr.sub.i.i.i.i.i.i33.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i32.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i.i34.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i.i33.i, 2 - %.pre.i.i.i.i.i.i35.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i34.i - %add.ptr.i.i.i.i.i.i36.i = getelementptr inbounds i32, ptr %add.ptr.i3.i31.i, i64 %.pre.i.i.i.i.i.i35.i + %idx.neg.i.i.i.i.i.i35.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i34.i + %add.ptr.i.i.i.i.i.i36.i = getelementptr inbounds i32, ptr %add.ptr.i3.i31.i, i64 %idx.neg.i.i.i.i.i.i35.i tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %add.ptr.i.i.i.i.i.i36.i, ptr noundef nonnull align 4 dereferenceable(1) %__first.coerce, i64 %sub.ptr.sub.i.i.i.i.i.i33.i, i1 false) br label %for.inc.i21.i diff --git a/bench/ripgrep-rs/optimized/54efb118es8s2z9x.ll b/bench/ripgrep-rs/optimized/54efb118es8s2z9x.ll index 95d18089377..fcfb5fe80d8 100644 --- a/bench/ripgrep-rs/optimized/54efb118es8s2z9x.ll +++ b/bench/ripgrep-rs/optimized/54efb118es8s2z9x.ll @@ -368,7 +368,7 @@ define void @_ZN8grep_cli5human25parse_human_readable_size17h23efe6fa0c78bef0E(p %36 = icmp eq i64 %32, -9223372036854775808 br i1 %36, label %38, label %44 -37: ; preds = %select.unfold, %73, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hb4b4e292cf097e46E.exit58.thread", %49, %44, %"_ZN115_$LT$core..iter..adapters..take_while..TakeWhile$LT$I$C$P$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17hb9436b1029d754dbE.exit.thread" +37: ; preds = %select.unfold, %69, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hb4b4e292cf097e46E.exit58.thread", %.thread99, %44, %"_ZN115_$LT$core..iter..adapters..take_while..TakeWhile$LT$I$C$P$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17hb9436b1029d754dbE.exit.thread" ret void 38: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hdf22785db338ccfaE.exit", %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hdf22785db338ccfaE.exit.thread" @@ -377,7 +377,7 @@ define void @_ZN8grep_cli5human25parse_human_readable_size17h23efe6fa0c78bef0E(p 39: ; preds = %38 %40 = icmp eq i64 %.1.i.i, %2 - br i1 %40, label %46, label %45 + br i1 %40, label %.thread99, label %45 "_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17hec6e3494bc021c8aE.exit.i50": ; preds = %38 %41 = getelementptr inbounds i8, ptr %1, i64 %.1.i.i @@ -399,88 +399,83 @@ define void @_ZN8grep_cli5human25parse_human_readable_size17h23efe6fa0c78bef0E(p tail call void @_ZN4core3str16slice_error_fail17hc482bbaa01e121c2E(ptr noalias noundef nonnull readonly align 1 %1, i64 noundef %2, i64 noundef %.1.i.i, i64 noundef %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.ca8608e79b6731c09432fa62224901d0.18) #16 unreachable -46: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17hec6e3494bc021c8aE.exit.i50", %39 - %47 = getelementptr inbounds i8, ptr %1, i64 %.1.i.i - %48 = icmp eq i64 %2, %.1.i.i - br i1 %48, label %49, label %51 +46: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17hec6e3494bc021c8aE.exit.i50" + %47 = sub nuw i64 %2, %.1.i.i + %.not.i = icmp eq i64 %47, 1 + br i1 %.not.i, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hb4b4e292cf097e46E.exit", label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hb4b4e292cf097e46E.exit58.thread" -49: ; preds = %46 - %50 = getelementptr inbounds i8, ptr %0, i64 8 - store i64 %.sink.i91.ph, ptr %50, align 8 +.thread99: ; preds = %39 + %48 = getelementptr inbounds i8, ptr %0, i64 8 + store i64 %.sink.i91.ph, ptr %48, align 8 store i64 -9223372036854775808, ptr %0, align 8 br label %37 -51: ; preds = %46 - %52 = sub i64 %2, %.1.i.i - %.not.i = icmp eq i64 %52, 1 - br i1 %.not.i, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hb4b4e292cf097e46E.exit", label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hb4b4e292cf097e46E.exit58.thread" - -"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hb4b4e292cf097e46E.exit": ; preds = %51 - %lhsc = load i8, ptr %47, align 1 - %53 = icmp eq i8 %lhsc, 75 - br i1 %53, label %55, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hb4b4e292cf097e46E.exit54" +"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hb4b4e292cf097e46E.exit": ; preds = %46 + %lhsc = load i8, ptr %41, align 1 + %49 = icmp eq i8 %lhsc, 75 + br i1 %49, label %51, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hb4b4e292cf097e46E.exit54" "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hb4b4e292cf097e46E.exit54": ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hb4b4e292cf097e46E.exit" - %lhsc111 = load i8, ptr %47, align 1 - %54 = icmp eq i8 %lhsc111, 77 - br i1 %54, label %59, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hb4b4e292cf097e46E.exit58" + %lhsc112 = load i8, ptr %41, align 1 + %50 = icmp eq i8 %lhsc112, 77 + br i1 %50, label %55, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hb4b4e292cf097e46E.exit58" -55: ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hb4b4e292cf097e46E.exit" - %56 = icmp ugt i64 %.sink.i91.ph, 18014398509481983 - %57 = shl nuw i64 %.sink.i91.ph, 10 - br i1 %56, label %select.unfold, label %73 +51: ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hb4b4e292cf097e46E.exit" + %52 = icmp ugt i64 %.sink.i91.ph, 18014398509481983 + %53 = shl nuw i64 %.sink.i91.ph, 10 + br i1 %52, label %select.unfold, label %69 "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hb4b4e292cf097e46E.exit58": ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hb4b4e292cf097e46E.exit54" - %lhsc112 = load i8, ptr %47, align 1 - %58 = icmp eq i8 %lhsc112, 71 - br i1 %58, label %66, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hb4b4e292cf097e46E.exit58.thread" - -59: ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hb4b4e292cf097e46E.exit54" - %60 = icmp ugt i64 %.sink.i91.ph, 17592186044415 - %61 = shl nuw i64 %.sink.i91.ph, 20 - br i1 %60, label %select.unfold, label %73 - -"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hb4b4e292cf097e46E.exit58.thread": ; preds = %51, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hb4b4e292cf097e46E.exit58" - %62 = tail call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17he6c54b6d5f2929f2E"(i64 noundef %2, i1 noundef zeroext false), !noalias !102 - %63 = extractvalue { i64, ptr } %62, 0 - %64 = extractvalue { i64, ptr } %62, 1 - %65 = icmp ne ptr %64, null - tail call void @llvm.assume(i1 %65) - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %64, ptr nonnull readonly align 1 %1, i64 %2, i1 false) - store i64 %63, ptr %0, align 8 + %lhsc113 = load i8, ptr %41, align 1 + %54 = icmp eq i8 %lhsc113, 71 + br i1 %54, label %62, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hb4b4e292cf097e46E.exit58.thread" + +55: ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hb4b4e292cf097e46E.exit54" + %56 = icmp ugt i64 %.sink.i91.ph, 17592186044415 + %57 = shl nuw i64 %.sink.i91.ph, 20 + br i1 %56, label %select.unfold, label %69 + +"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hb4b4e292cf097e46E.exit58.thread": ; preds = %46, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hb4b4e292cf097e46E.exit58" + %58 = tail call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17he6c54b6d5f2929f2E"(i64 noundef %2, i1 noundef zeroext false), !noalias !102 + %59 = extractvalue { i64, ptr } %58, 0 + %60 = extractvalue { i64, ptr } %58, 1 + %61 = icmp ne ptr %60, null + tail call void @llvm.assume(i1 %61) + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %60, ptr nonnull readonly align 1 %1, i64 %2, i1 false) + store i64 %59, ptr %0, align 8 %.sroa.471.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 - store ptr %64, ptr %.sroa.471.0..sroa_idx, align 8 + store ptr %60, ptr %.sroa.471.0..sroa_idx, align 8 %.sroa.572.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 store i64 %2, ptr %.sroa.572.0..sroa_idx, align 8 %.sroa.673.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 24 store i8 5, ptr %.sroa.673.0..sroa_idx, align 8 br label %37 -66: ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hb4b4e292cf097e46E.exit58" - %67 = icmp ugt i64 %.sink.i91.ph, 17179869183 - %68 = shl nuw i64 %.sink.i91.ph, 30 - br i1 %67, label %select.unfold, label %73 - -select.unfold: ; preds = %55, %59, %66 - %69 = tail call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17he6c54b6d5f2929f2E"(i64 noundef %2, i1 noundef zeroext false), !noalias !106 - %70 = extractvalue { i64, ptr } %69, 0 - %71 = extractvalue { i64, ptr } %69, 1 - %72 = icmp ne ptr %71, null - tail call void @llvm.assume(i1 %72) - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %71, ptr nonnull readonly align 1 %1, i64 %2, i1 false) - store i64 %70, ptr %0, align 8 +62: ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hb4b4e292cf097e46E.exit58" + %63 = icmp ugt i64 %.sink.i91.ph, 17179869183 + %64 = shl nuw i64 %.sink.i91.ph, 30 + br i1 %63, label %select.unfold, label %69 + +select.unfold: ; preds = %51, %55, %62 + %65 = tail call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17he6c54b6d5f2929f2E"(i64 noundef %2, i1 noundef zeroext false), !noalias !106 + %66 = extractvalue { i64, ptr } %65, 0 + %67 = extractvalue { i64, ptr } %65, 1 + %68 = icmp ne ptr %67, null + tail call void @llvm.assume(i1 %68) + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %67, ptr nonnull readonly align 1 %1, i64 %2, i1 false) + store i64 %66, ptr %0, align 8 %.sroa.476.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 - store ptr %71, ptr %.sroa.476.0..sroa_idx, align 8 + store ptr %67, ptr %.sroa.476.0..sroa_idx, align 8 %.sroa.577.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 store i64 %2, ptr %.sroa.577.0..sroa_idx, align 8 %.sroa.678.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 24 store i8 7, ptr %.sroa.678.0..sroa_idx, align 8 br label %37 -73: ; preds = %66, %59, %55 - %.sroa.711.0 = phi i64 [ %68, %66 ], [ %61, %59 ], [ %57, %55 ] - %74 = getelementptr inbounds i8, ptr %0, i64 8 - store i64 %.sroa.711.0, ptr %74, align 8 +69: ; preds = %62, %55, %51 + %.sroa.711.0 = phi i64 [ %64, %62 ], [ %57, %55 ], [ %53, %51 ] + %70 = getelementptr inbounds i8, ptr %0, i64 8 + store i64 %.sroa.711.0, ptr %70, align 8 store i64 -9223372036854775808, ptr %0, align 8 br label %37 } diff --git a/bench/rocksdb/optimized/tiered_secondary_cache.cc.ll b/bench/rocksdb/optimized/tiered_secondary_cache.cc.ll index f97afe2b59b..0e604fdfaa8 100644 --- a/bench/rocksdb/optimized/tiered_secondary_cache.cc.ll +++ b/bench/rocksdb/optimized/tiered_secondary_cache.cc.ll @@ -810,16 +810,14 @@ for.end: ; preds = %for.inc br i1 %cmp.not.i.i.i.i25, label %invoke.cont.i.thread, label %cond.true.i.i.i.i26 invoke.cont.i.thread: ; preds = %for.end.thread, %for.end - %sub.ptr.sub.i.i23143 = phi i64 [ 0, %for.end.thread ], [ %sub.ptr.sub.i.i23, %for.end ] %9 = phi ptr [ %2, %for.end.thread ], [ %8, %for.end ] %nvm_handles.sroa.0.1.lcssa141 = phi ptr [ null, %for.end.thread ], [ %nvm_handles.sroa.0.2, %for.end ] %my_handles.sroa.0.1.lcssa139 = phi ptr [ null, %for.end.thread ], [ %my_handles.sroa.0.2, %for.end ] %my_handles.sroa.6.0.lcssa137 = phi ptr [ null, %for.end.thread ], [ %my_handles.sroa.6.1, %for.end ] %_M_finish.i.i.i83 = getelementptr inbounds i8, ptr %agg.tmp, i64 8 - %add.ptr.i.i.i2984 = getelementptr inbounds i8, ptr null, i64 %sub.ptr.sub.i.i23143 %_M_end_of_storage.i.i.i85 = getelementptr inbounds i8, ptr %agg.tmp, i64 16 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp, i8 0, i64 16, i1 false) - store ptr %add.ptr.i.i.i2984, ptr %_M_end_of_storage.i.i.i85, align 8 + store ptr null, ptr %_M_end_of_storage.i.i.i85, align 8 br label %invoke.cont15 cond.true.i.i.i.i26: ; preds = %for.end @@ -848,7 +846,7 @@ if.then.i.i.i.i.i.i.i.i.i: ; preds = %_ZNSt16allocator_tr br label %invoke.cont15 invoke.cont15: ; preds = %if.then.i.i.i.i.i.i.i.i.i, %invoke.cont.i.thread - %sub.ptr.sub.i.i23142 = phi i64 [ %sub.ptr.sub.i.i23143, %invoke.cont.i.thread ], [ %sub.ptr.sub.i.i23, %if.then.i.i.i.i.i.i.i.i.i ] + %sub.ptr.sub.i.i23142 = phi i64 [ 0, %invoke.cont.i.thread ], [ %sub.ptr.sub.i.i23, %if.then.i.i.i.i.i.i.i.i.i ] %10 = phi ptr [ %9, %invoke.cont.i.thread ], [ %8, %if.then.i.i.i.i.i.i.i.i.i ] %nvm_handles.sroa.0.1.lcssa140 = phi ptr [ %nvm_handles.sroa.0.1.lcssa141, %invoke.cont.i.thread ], [ %nvm_handles.sroa.0.2, %if.then.i.i.i.i.i.i.i.i.i ] %my_handles.sroa.0.1.lcssa138 = phi ptr [ %my_handles.sroa.0.1.lcssa139, %invoke.cont.i.thread ], [ %my_handles.sroa.0.2, %if.then.i.i.i.i.i.i.i.i.i ] diff --git a/bench/rocksdb/optimized/transaction_base.cc.ll b/bench/rocksdb/optimized/transaction_base.cc.ll index b0632cc2ccf..a19374671bd 100644 --- a/bench/rocksdb/optimized/transaction_base.cc.ll +++ b/bench/rocksdb/optimized/transaction_base.cc.ll @@ -4762,10 +4762,15 @@ invoke.cont.i.i: ; preds = %for.body.i.i.i.i.i _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE6resizeEm.exit: ; preds = %if.then.i, %if.else.i, %if.then5.i, %invoke.cont.i.i %cmp481.not = icmp eq ptr %0, %1 - %cmp.i.i5888 = icmp ugt i64 %sub.ptr.div.i, 576460752303423487 - br i1 %cmp481.not, label %for.end.thread, label %invoke.cont9.lr.ph + br i1 %cmp481.not, label %_ZNSt6vectorIN7rocksdb6StatusESaIS1_EE17_S_check_init_lenEmRKS2_.exit.i59.thread, label %invoke.cont9.lr.ph + +_ZNSt6vectorIN7rocksdb6StatusESaIS1_EE17_S_check_init_lenEmRKS2_.exit.i59.thread: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE6resizeEm.exit + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %agg.result, i8 0, i64 24, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %agg.result, i8 0, i64 24, i1 false) + br label %return invoke.cont9.lr.ph: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE6resizeEm.exit + %cmp.i.i31 = icmp ugt i64 %sub.ptr.div.i, 576460752303423487 %_M_finish.i.i.i37 = getelementptr inbounds i8, ptr %agg.result, i64 8 %_M_end_of_storage.i.i.i39 = getelementptr inbounds i8, ptr %agg.result, i64 16 %state_.i50 = getelementptr inbounds i8, ptr %s5, i64 8 @@ -4793,7 +4798,7 @@ invoke.cont9: ; preds = %invoke.cont9.lr.ph, br i1 %cmp.i30, label %cleanup, label %if.then11 if.then11: ; preds = %invoke.cont9 - br i1 %cmp.i.i5888, label %if.then.i.i44, label %_ZNSt16allocator_traitsISaIN7rocksdb6StatusEEE8allocateERS2_m.exit.i.i.i.i34 + br i1 %cmp.i.i31, label %if.then.i.i44, label %_ZNSt16allocator_traitsISaIN7rocksdb6StatusEEE8allocateERS2_m.exit.i.i.i.i34 if.then.i.i44: ; preds = %if.then11 invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.14) #26 @@ -4863,15 +4868,7 @@ for.end: ; preds = %for.cond %cmp.i.i58 = icmp ugt i64 %sub.ptr.div.i, 576460752303423487 br i1 %cmp.i.i58, label %if.then.i.i66, label %_ZNSt6vectorIN7rocksdb6StatusESaIS1_EE17_S_check_init_lenEmRKS2_.exit.i59 -for.end.thread: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE6resizeEm.exit - br i1 %cmp.i.i5888, label %if.then.i.i66, label %_ZNSt6vectorIN7rocksdb6StatusESaIS1_EE17_S_check_init_lenEmRKS2_.exit.i59.thread - -_ZNSt6vectorIN7rocksdb6StatusESaIS1_EE17_S_check_init_lenEmRKS2_.exit.i59.thread: ; preds = %for.end.thread - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %agg.result, i8 0, i64 24, i1 false) - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %agg.result, i8 0, i64 24, i1 false) - br label %return - -if.then.i.i66: ; preds = %for.end.thread, %for.end +if.then.i.i66: ; preds = %for.end call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.14) #26 unreachable diff --git a/bench/ropey-rs/optimized/1zgfltkx0c00yngh.ll b/bench/ropey-rs/optimized/1zgfltkx0c00yngh.ll index d9a6deeebe8..a760ca351ca 100644 --- a/bench/ropey-rs/optimized/1zgfltkx0c00yngh.ll +++ b/bench/ropey-rs/optimized/1zgfltkx0c00yngh.ll @@ -5937,11 +5937,11 @@ _ZN5ropey4tree4node4Node9leaf_text17h78ed2b3427cacdf3E.exit273: ; preds = %402 446: ; preds = %417 %447 = icmp eq i64 %.sroa.061.0, %393 - br i1 %447, label %_ZN11str_indices5chars10count_impl17h85466a28fb53b459E.exit166, label %.preheader1625 + br i1 %447, label %_ZN11str_indices5utf1621count_surrogates_impl17he841adeda45da07eE.exit181, label %.preheader1629 -.preheader1625: ; preds = %446, %.preheader1625 - %.sroa.07.0.i279 = phi i64 [ %452, %.preheader1625 ], [ 0, %446 ] - %.sroa.09.0.i280 = phi i64 [ %453, %.preheader1625 ], [ 0, %446 ] +.preheader1629: ; preds = %446, %.preheader1629 + %.sroa.07.0.i279 = phi i64 [ %452, %.preheader1629 ], [ 0, %446 ] + %.sroa.09.0.i280 = phi i64 [ %453, %.preheader1629 ], [ 0, %446 ] %448 = getelementptr inbounds i8, ptr %419, i64 %.sroa.09.0.i280 %.val.i281 = load i8, ptr %448, align 1, !noundef !4 %449 = and i8 %.val.i281, -64 @@ -5950,7 +5950,7 @@ _ZN5ropey4tree4node4Node9leaf_text17h78ed2b3427cacdf3E.exit273: ; preds = %402 %452 = add i64 %.sroa.07.0.i279, %451 %453 = add nuw i64 %.sroa.09.0.i280, 1 %454 = icmp eq i64 %453, %418 - br i1 %454, label %_ZN11str_indices5chars10count_impl17h85466a28fb53b459E.exit166, label %.preheader1625 + br i1 %454, label %_ZN11str_indices5chars10count_impl17h85466a28fb53b459E.exit166, label %.preheader1629 ._crit_edge1193: ; preds = %.lr.ph1192, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h24209575856ef6e2E.exit278" %.sroa.011.0.i161.lcssa = phi i64 [ %.sroa.04.0.i277, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h24209575856ef6e2E.exit278" ], [ %506, %.lr.ph1192 ] @@ -6037,8 +6037,8 @@ _ZN5ropey4tree4node4Node9leaf_text17h78ed2b3427cacdf3E.exit273: ; preds = %402 %507 = icmp eq i64 %481, 0 br i1 %507, label %._crit_edge1193, label %.lr.ph1192 -_ZN11str_indices5chars10count_impl17h85466a28fb53b459E.exit166: ; preds = %.preheader1625, %446, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h1ba2c90ca355acefE.exit292" - %.sroa.0.0.i165 = phi i64 [ %471, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h1ba2c90ca355acefE.exit292" ], [ 0, %446 ], [ %452, %.preheader1625 ] +_ZN11str_indices5chars10count_impl17h85466a28fb53b459E.exit166: ; preds = %.preheader1629, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h1ba2c90ca355acefE.exit292" + %.sroa.0.0.i165 = phi i64 [ %471, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h1ba2c90ca355acefE.exit292" ], [ %452, %.preheader1629 ] %508 = icmp ult i64 %418, 4 br i1 %508, label %_ZN11str_indices5utf1621count_surrogates_impl17he841adeda45da07eE.exit181, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5408cf5a27a91e6fE.exit.i174" @@ -6124,8 +6124,9 @@ _ZN11str_indices5chars10count_impl17h85466a28fb53b459E.exit166: ; preds = %.preh %550 = icmp eq ptr %545, %532 br i1 %550, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5013c2266248ec04E.exit302.thread", label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5013c2266248ec04E.exit302" -_ZN11str_indices5utf1621count_surrogates_impl17he841adeda45da07eE.exit181: ; preds = %.lr.ph1212, %._crit_edge1207, %_ZN11str_indices5chars10count_impl17h85466a28fb53b459E.exit166 - %.sroa.0.1.i180 = phi i64 [ 0, %_ZN11str_indices5chars10count_impl17h85466a28fb53b459E.exit166 ], [ %.sroa.0.2.i178.lcssa, %._crit_edge1207 ], [ %538, %.lr.ph1212 ] +_ZN11str_indices5utf1621count_surrogates_impl17he841adeda45da07eE.exit181: ; preds = %.lr.ph1212, %446, %._crit_edge1207, %_ZN11str_indices5chars10count_impl17h85466a28fb53b459E.exit166 + %.sroa.0.0.i1651449 = phi i64 [ %.sroa.0.0.i165, %_ZN11str_indices5chars10count_impl17h85466a28fb53b459E.exit166 ], [ %.sroa.0.0.i165, %._crit_edge1207 ], [ 0, %446 ], [ %.sroa.0.0.i165, %.lr.ph1212 ] + %.sroa.0.1.i180 = phi i64 [ 0, %_ZN11str_indices5chars10count_impl17h85466a28fb53b459E.exit166 ], [ %.sroa.0.2.i178.lcssa, %._crit_edge1207 ], [ 0, %446 ], [ %538, %.lr.ph1212 ] br i1 %.sroa.065.0, label %551, label %563 551: ; preds = %_ZN11str_indices5utf1621count_surrogates_impl17he841adeda45da07eE.exit181 @@ -6141,7 +6142,7 @@ _ZN11str_indices5utf1621count_surrogates_impl17he841adeda45da07eE.exit181: ; pre %555 = load ptr, ptr %554, align 8, !nonnull !4, !align !402, !noundef !4 %556 = add i64 %418, %271 %557 = sub i64 %.sroa.0348.1, %556 - %558 = add i64 %.sroa.0.0.i165, %270 + %558 = add i64 %.sroa.0.0.i1651449, %270 %559 = sub i64 %.sroa.7351.1, %558 %560 = add i64 %.sroa.0.1.i180, %269 %561 = sub i64 %.sroa.15.1, %560 @@ -6152,7 +6153,7 @@ _ZN11str_indices5utf1621count_surrogates_impl17he841adeda45da07eE.exit181: ; pre %.sroa.073.0 = phi ptr [ %555, %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h0d45dbdae6028eeeE.exit303" ], [ null, %_ZN11str_indices5utf1621count_surrogates_impl17he841adeda45da07eE.exit181 ] %.sroa.3.0 = phi i64 [ %557, %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h0d45dbdae6028eeeE.exit303" ], [ %420, %_ZN11str_indices5utf1621count_surrogates_impl17he841adeda45da07eE.exit181 ] %.sroa.574.0 = phi i64 [ %559, %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h0d45dbdae6028eeeE.exit303" ], [ %418, %_ZN11str_indices5utf1621count_surrogates_impl17he841adeda45da07eE.exit181 ] - %.sroa.775.0 = phi i64 [ %561, %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h0d45dbdae6028eeeE.exit303" ], [ %.sroa.0.0.i165, %_ZN11str_indices5utf1621count_surrogates_impl17he841adeda45da07eE.exit181 ] + %.sroa.775.0 = phi i64 [ %561, %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h0d45dbdae6028eeeE.exit303" ], [ %.sroa.0.0.i1651449, %_ZN11str_indices5utf1621count_surrogates_impl17he841adeda45da07eE.exit181 ] %.sroa.976.0 = phi i64 [ %562, %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h0d45dbdae6028eeeE.exit303" ], [ %.sroa.0.1.i180, %_ZN11str_indices5utf1621count_surrogates_impl17he841adeda45da07eE.exit181 ] %.sroa.11.0 = phi i64 [ %.sroa.0348.1, %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h0d45dbdae6028eeeE.exit303" ], [ 0, %_ZN11str_indices5utf1621count_surrogates_impl17he841adeda45da07eE.exit181 ] %564 = getelementptr inbounds i8, ptr %0, i64 8 @@ -6176,8 +6177,8 @@ _ZN11str_indices5utf1621count_surrogates_impl17he841adeda45da07eE.exit181: ; pre br label %565 565: ; preds = %37, %566, %_ZN11str_indices5utf1621count_surrogates_impl17he841adeda45da07eE.exit, %623, %_ZN11str_indices5utf1621count_surrogates_impl17he841adeda45da07eE.exit189, %54, %563 - %.sink1802 = phi i64 [ 1, %_ZN11str_indices5utf1621count_surrogates_impl17he841adeda45da07eE.exit ], [ 1, %623 ], [ 1, %_ZN11str_indices5utf1621count_surrogates_impl17he841adeda45da07eE.exit189 ], [ 1, %54 ], [ 1, %563 ], [ 0, %566 ], [ 0, %37 ] - store i64 %.sink1802, ptr %0, align 8 + %.sink1806 = phi i64 [ 1, %_ZN11str_indices5utf1621count_surrogates_impl17he841adeda45da07eE.exit ], [ 1, %623 ], [ 1, %_ZN11str_indices5utf1621count_surrogates_impl17he841adeda45da07eE.exit189 ], [ 1, %54 ], [ 1, %563 ], [ 0, %566 ], [ 0, %37 ] + store i64 %.sink1806, ptr %0, align 8 ret void 566: ; preds = %33 @@ -6350,11 +6351,11 @@ _ZN11str_indices5utf1621count_surrogates_impl17he841adeda45da07eE.exit181: ; pre 655: ; preds = %629 %656 = icmp eq i64 %600, %595 - br i1 %656, label %_ZN11str_indices5chars10count_impl17h85466a28fb53b459E.exit, label %.preheader1624 + br i1 %656, label %_ZN11str_indices5utf1621count_surrogates_impl17he841adeda45da07eE.exit, label %.preheader1628 -.preheader1624: ; preds = %655, %.preheader1624 - %.sroa.07.0.i319 = phi i64 [ %661, %.preheader1624 ], [ 0, %655 ] - %.sroa.09.0.i320 = phi i64 [ %662, %.preheader1624 ], [ 0, %655 ] +.preheader1628: ; preds = %655, %.preheader1628 + %.sroa.07.0.i319 = phi i64 [ %661, %.preheader1628 ], [ 0, %655 ] + %.sroa.09.0.i320 = phi i64 [ %662, %.preheader1628 ], [ 0, %655 ] %657 = getelementptr inbounds i8, ptr %631, i64 %.sroa.09.0.i320 %.val.i321 = load i8, ptr %657, align 1, !noundef !4 %658 = and i8 %.val.i321, -64 @@ -6363,7 +6364,7 @@ _ZN11str_indices5utf1621count_surrogates_impl17he841adeda45da07eE.exit181: ; pre %661 = add i64 %.sroa.07.0.i319, %660 %662 = add nuw i64 %.sroa.09.0.i320, 1 %663 = icmp eq i64 %662, %630 - br i1 %663, label %_ZN11str_indices5chars10count_impl17h85466a28fb53b459E.exit, label %.preheader1624 + br i1 %663, label %_ZN11str_indices5chars10count_impl17h85466a28fb53b459E.exit, label %.preheader1628 ._crit_edge1218: ; preds = %.lr.ph1217, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h24209575856ef6e2E.exit318" %.sroa.011.0.i.lcssa = phi i64 [ %.sroa.04.0.i317, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h24209575856ef6e2E.exit318" ], [ %715, %.lr.ph1217 ] @@ -6450,8 +6451,8 @@ _ZN11str_indices5utf1621count_surrogates_impl17he841adeda45da07eE.exit181: ; pre %716 = icmp eq i64 %690, 0 br i1 %716, label %._crit_edge1218, label %.lr.ph1217 -_ZN11str_indices5chars10count_impl17h85466a28fb53b459E.exit: ; preds = %.preheader1624, %655, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h1ba2c90ca355acefE.exit332" - %.sroa.0.0.i = phi i64 [ %680, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h1ba2c90ca355acefE.exit332" ], [ 0, %655 ], [ %661, %.preheader1624 ] +_ZN11str_indices5chars10count_impl17h85466a28fb53b459E.exit: ; preds = %.preheader1628, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h1ba2c90ca355acefE.exit332" + %.sroa.0.0.i = phi i64 [ %680, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h1ba2c90ca355acefE.exit332" ], [ %661, %.preheader1628 ] %717 = icmp ult i64 %630, 4 br i1 %717, label %_ZN11str_indices5utf1621count_surrogates_impl17he841adeda45da07eE.exit, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5408cf5a27a91e6fE.exit.i" @@ -6537,8 +6538,9 @@ _ZN11str_indices5chars10count_impl17h85466a28fb53b459E.exit: ; preds = %.prehead %759 = icmp eq ptr %754, %741 br i1 %759, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5013c2266248ec04E.exit342.thread", label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h5013c2266248ec04E.exit342" -_ZN11str_indices5utf1621count_surrogates_impl17he841adeda45da07eE.exit: ; preds = %.lr.ph1237, %._crit_edge1232, %_ZN11str_indices5chars10count_impl17h85466a28fb53b459E.exit - %.sroa.0.1.i = phi i64 [ 0, %_ZN11str_indices5chars10count_impl17h85466a28fb53b459E.exit ], [ %.sroa.0.2.i.lcssa, %._crit_edge1232 ], [ %747, %.lr.ph1237 ] +_ZN11str_indices5utf1621count_surrogates_impl17he841adeda45da07eE.exit: ; preds = %.lr.ph1237, %655, %._crit_edge1232, %_ZN11str_indices5chars10count_impl17h85466a28fb53b459E.exit + %.sroa.0.0.i1451 = phi i64 [ %.sroa.0.0.i, %_ZN11str_indices5chars10count_impl17h85466a28fb53b459E.exit ], [ %.sroa.0.0.i, %._crit_edge1232 ], [ 0, %655 ], [ %.sroa.0.0.i, %.lr.ph1237 ] + %.sroa.0.1.i = phi i64 [ 0, %_ZN11str_indices5chars10count_impl17h85466a28fb53b459E.exit ], [ %.sroa.0.2.i.lcssa, %._crit_edge1232 ], [ 0, %655 ], [ %747, %.lr.ph1237 ] %760 = getelementptr inbounds i8, ptr %0, i64 8 store ptr null, ptr %760, align 8 %.sroa.494.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 @@ -6546,7 +6548,7 @@ _ZN11str_indices5utf1621count_surrogates_impl17he841adeda45da07eE.exit: ; preds %.sroa.595.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 24 store i64 %630, ptr %.sroa.595.0..sroa_idx, align 8 %.sroa.696.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 32 - store i64 %.sroa.0.0.i, ptr %.sroa.696.0..sroa_idx, align 8 + store i64 %.sroa.0.0.i1451, ptr %.sroa.696.0..sroa_idx, align 8 %.sroa.797.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 40 store i64 %.sroa.0.1.i, ptr %.sroa.797.0..sroa_idx, align 8 %.sroa.898.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 48 diff --git a/bench/ruby/optimized/cont.ll b/bench/ruby/optimized/cont.ll index 96469f40d18..2effd7b9771 100644 --- a/bench/ruby/optimized/cont.ll +++ b/bench/ruby/optimized/cont.ll @@ -4691,7 +4691,6 @@ define internal fastcc void @rollback_ensure_stack(ptr noundef readonly %0, ptr br i1 %25, label %.preheader59, label %.lr.ph80.split .preheader59: ; preds = %39, %.lr.ph80, %._crit_edge - %.045.lcssa = phi i64 [ 0, %._crit_edge ], [ %21, %.lr.ph80 ], [ %21, %39 ] %26 = icmp ugt i64 %.043.lcssa, %.041.lcssa br i1 %26, label %.lr.ph84, label %.preheader @@ -4736,11 +4735,11 @@ lookup_rollback_func.exit: ; preds = %32 br i1 %exitcond.not, label %.preheader59, label %.lr.ph80.split, !llvm.loop !28 .preheader: ; preds = %.lr.ph84, %.preheader59 - %.not89 = icmp eq i64 %.045.lcssa, 0 + %.not89 = icmp eq i64 %.042.lcssa, %.041.lcssa br i1 %.not89, label %._crit_edge87, label %.lr.ph86 .lr.ph86: ; preds = %.preheader - %42 = getelementptr %struct.rb_ensure_entry, ptr %1, i64 %.045.lcssa + %42 = getelementptr %struct.rb_ensure_entry, ptr %1, i64 %21 br label %51 .lr.ph84: ; preds = %.preheader59, %.lr.ph84 @@ -4794,7 +4793,7 @@ lookup_rollback_func.exit56: ; preds = %59 69: ; preds = %lookup_rollback_func.exit56.thread, %lookup_rollback_func.exit56, %64 %70 = add nuw i64 %.04485, 1 - %exitcond94.not = icmp eq i64 %70, %.045.lcssa + %exitcond94.not = icmp eq i64 %70, %21 br i1 %exitcond94.not, label %._crit_edge87, label %51, !llvm.loop !31 ._crit_edge87: ; preds = %69, %.preheader diff --git a/bench/rust-analyzer-rs/optimized/2025sm42y7i6frv5.ll b/bench/rust-analyzer-rs/optimized/2025sm42y7i6frv5.ll index a02df5d2888..e11b4ac2fb4 100644 --- a/bench/rust-analyzer-rs/optimized/2025sm42y7i6frv5.ll +++ b/bench/rust-analyzer-rs/optimized/2025sm42y7i6frv5.ll @@ -847,7 +847,7 @@ define hidden void @"_ZN116_$LT$itertools..adaptors..multi_product..MultiProduct br label %"_ZN9itertools8adaptors13multi_product21MultiProduct$LT$I$GT$11in_progress17h865cbeebbe33a777E.exit.thread" "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h19822d780ee44431E.exit": ; preds = %"_ZN116_$LT$itertools..adaptors..multi_product..MultiProduct$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint28_$u7b$$u7b$closure$u7d$$u7d$17h3cdb761b90a22fe4E.exit.i", %2, %29 - %.lcssa.sink = phi i64 [ %spec.select.i.i.i.i, %29 ], [ 0, %2 ], [ %59, %"_ZN116_$LT$itertools..adaptors..multi_product..MultiProduct$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint28_$u7b$$u7b$closure$u7d$$u7d$17h3cdb761b90a22fe4E.exit.i" ] + %.lcssa.sink = phi i64 [ %spec.select.i.i.i.i, %29 ], [ 0, %2 ], [ %57, %"_ZN116_$LT$itertools..adaptors..multi_product..MultiProduct$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint28_$u7b$$u7b$closure$u7d$$u7d$17h3cdb761b90a22fe4E.exit.i" ] %.sroa.04.0.i.i.i.lcssa.sink = phi i64 [ %.sroa.07.0.i.i.i, %29 ], [ 1, %2 ], [ %.sroa.04.0.i.i.i, %"_ZN116_$LT$itertools..adaptors..multi_product..MultiProduct$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint28_$u7b$$u7b$closure$u7d$$u7d$17h3cdb761b90a22fe4E.exit.i" ] %.sroa.4.0.i.i.i.lcssa.sink = phi i64 [ %.sroa.5.0.i.i.i, %29 ], [ 0, %2 ], [ %.sroa.4.0.i.i.i, %"_ZN116_$LT$itertools..adaptors..multi_product..MultiProduct$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint28_$u7b$$u7b$closure$u7d$$u7d$17h3cdb761b90a22fe4E.exit.i" ] store i64 %.lcssa.sink, ptr %0, align 8 @@ -900,10 +900,10 @@ define hidden void @"_ZN116_$LT$itertools..adaptors..multi_product..MultiProduct br label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h19822d780ee44431E.exit" .preheader: ; preds = %"_ZN9itertools8adaptors13multi_product21MultiProduct$LT$I$GT$11in_progress17h865cbeebbe33a777E.exit", %"_ZN116_$LT$itertools..adaptors..multi_product..MultiProduct$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint28_$u7b$$u7b$closure$u7d$$u7d$17h3cdb761b90a22fe4E.exit.i" - %.sroa.014.0.i = phi i64 [ %59, %"_ZN116_$LT$itertools..adaptors..multi_product..MultiProduct$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint28_$u7b$$u7b$closure$u7d$$u7d$17h3cdb761b90a22fe4E.exit.i" ], [ 0, %"_ZN9itertools8adaptors13multi_product21MultiProduct$LT$I$GT$11in_progress17h865cbeebbe33a777E.exit" ] + %.sroa.014.0.i = phi i64 [ %57, %"_ZN116_$LT$itertools..adaptors..multi_product..MultiProduct$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint28_$u7b$$u7b$closure$u7d$$u7d$17h3cdb761b90a22fe4E.exit.i" ], [ 0, %"_ZN9itertools8adaptors13multi_product21MultiProduct$LT$I$GT$11in_progress17h865cbeebbe33a777E.exit" ] %.sroa.6.0.i20 = phi i64 [ %.sroa.04.0.i.i.i, %"_ZN116_$LT$itertools..adaptors..multi_product..MultiProduct$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint28_$u7b$$u7b$closure$u7d$$u7d$17h3cdb761b90a22fe4E.exit.i" ], [ 1, %"_ZN9itertools8adaptors13multi_product21MultiProduct$LT$I$GT$11in_progress17h865cbeebbe33a777E.exit" ] %.sroa.7.0.i21 = phi i64 [ %.sroa.4.0.i.i.i, %"_ZN116_$LT$itertools..adaptors..multi_product..MultiProduct$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint28_$u7b$$u7b$closure$u7d$$u7d$17h3cdb761b90a22fe4E.exit.i" ], [ 0, %"_ZN9itertools8adaptors13multi_product21MultiProduct$LT$I$GT$11in_progress17h865cbeebbe33a777E.exit" ] - %.0.i22 = phi i64 [ %60, %"_ZN116_$LT$itertools..adaptors..multi_product..MultiProduct$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint28_$u7b$$u7b$closure$u7d$$u7d$17h3cdb761b90a22fe4E.exit.i" ], [ 0, %"_ZN9itertools8adaptors13multi_product21MultiProduct$LT$I$GT$11in_progress17h865cbeebbe33a777E.exit" ] + %.0.i22 = phi i64 [ %58, %"_ZN116_$LT$itertools..adaptors..multi_product..MultiProduct$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint28_$u7b$$u7b$closure$u7d$$u7d$17h3cdb761b90a22fe4E.exit.i" ], [ 0, %"_ZN9itertools8adaptors13multi_product21MultiProduct$LT$I$GT$11in_progress17h865cbeebbe33a777E.exit" ] %30 = getelementptr inbounds { { i32, [15 x i32] }, { ptr, ptr, i64, ptr, {}, { {} } }, { ptr, ptr, i64, ptr, {}, { {} } } }, ptr %.val, i64 %.0.i22 %31 = getelementptr inbounds i8, ptr %30, i64 72 %.val2.i.i = load ptr, ptr %31, align 8, !alias.scope !116, !noalias !119, !nonnull !5, !noundef !5 @@ -935,38 +935,34 @@ _ZN9itertools9size_hint3mul17ha1ca373f8edf89ddE.exit.thread12.i.i: ; preds = %43 %spec.select.i.i15.i.i = select i1 %46, i64 -1, i64 %47 br label %"_ZN116_$LT$itertools..adaptors..multi_product..MultiProduct$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint28_$u7b$$u7b$closure$u7d$$u7d$17h3cdb761b90a22fe4E.exit.i" -_ZN9itertools9size_hint3mul17ha1ca373f8edf89ddE.exit.thread.i.i: ; preds = %43 - %48 = mul nuw nsw i64 %42, %.sroa.014.0.i - br label %55 - _ZN9itertools9size_hint3mul17ha1ca373f8edf89ddE.exit.i.i: ; preds = %.preheader - %49 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %.sroa.7.0.i21, i64 %42) - %50 = extractvalue { i64, i1 } %49, 1 - %51 = extractvalue { i64, i1 } %49, 0 - %52 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %.sroa.014.0.i, i64 %42) - %53 = extractvalue { i64, i1 } %52, 1 - %54 = extractvalue { i64, i1 } %52, 0 - %spec.select.i.i.i.i23 = select i1 %53, i64 -1, i64 %54 - br i1 %50, label %"_ZN116_$LT$itertools..adaptors..multi_product..MultiProduct$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint28_$u7b$$u7b$closure$u7d$$u7d$17h3cdb761b90a22fe4E.exit.i", label %55 - -55: ; preds = %_ZN9itertools9size_hint3mul17ha1ca373f8edf89ddE.exit.i.i, %_ZN9itertools9size_hint3mul17ha1ca373f8edf89ddE.exit.thread.i.i - %spec.select.i.i11.i.i = phi i64 [ %48, %_ZN9itertools9size_hint3mul17ha1ca373f8edf89ddE.exit.thread.i.i ], [ %spec.select.i.i.i.i23, %_ZN9itertools9size_hint3mul17ha1ca373f8edf89ddE.exit.i.i ] - %.sroa.5.0.i9.i.i = phi i64 [ 0, %_ZN9itertools9size_hint3mul17ha1ca373f8edf89ddE.exit.thread.i.i ], [ %51, %_ZN9itertools9size_hint3mul17ha1ca373f8edf89ddE.exit.i.i ] - %56 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %.sroa.5.0.i9.i.i, i64 %36) - %57 = extractvalue { i64, i1 } %56, 1 - %58 = extractvalue { i64, i1 } %56, 0 - %not..i5.i.i = xor i1 %57, true + %48 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %.sroa.7.0.i21, i64 %42) + %49 = extractvalue { i64, i1 } %48, 1 + %50 = extractvalue { i64, i1 } %48, 0 + %51 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %.sroa.014.0.i, i64 %42) + %52 = extractvalue { i64, i1 } %51, 1 + %53 = extractvalue { i64, i1 } %51, 0 + %spec.select.i.i.i.i23 = select i1 %52, i64 -1, i64 %53 + br i1 %49, label %"_ZN116_$LT$itertools..adaptors..multi_product..MultiProduct$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint28_$u7b$$u7b$closure$u7d$$u7d$17h3cdb761b90a22fe4E.exit.i", label %_ZN9itertools9size_hint3mul17ha1ca373f8edf89ddE.exit.thread.i.i + +_ZN9itertools9size_hint3mul17ha1ca373f8edf89ddE.exit.thread.i.i: ; preds = %_ZN9itertools9size_hint3mul17ha1ca373f8edf89ddE.exit.i.i, %43 + %spec.select.i.i11.i.i = phi i64 [ %spec.select.i.i.i.i23, %_ZN9itertools9size_hint3mul17ha1ca373f8edf89ddE.exit.i.i ], [ 0, %43 ] + %.sroa.5.0.i9.i.i = phi i64 [ %50, %_ZN9itertools9size_hint3mul17ha1ca373f8edf89ddE.exit.i.i ], [ 0, %43 ] + %54 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %.sroa.5.0.i9.i.i, i64 %36) + %55 = extractvalue { i64, i1 } %54, 1 + %56 = extractvalue { i64, i1 } %54, 0 + %not..i5.i.i = xor i1 %55, true %spec.select.i6.i.i = zext i1 %not..i5.i.i to i64 br label %"_ZN116_$LT$itertools..adaptors..multi_product..MultiProduct$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint28_$u7b$$u7b$closure$u7d$$u7d$17h3cdb761b90a22fe4E.exit.i" -"_ZN116_$LT$itertools..adaptors..multi_product..MultiProduct$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint28_$u7b$$u7b$closure$u7d$$u7d$17h3cdb761b90a22fe4E.exit.i": ; preds = %55, %_ZN9itertools9size_hint3mul17ha1ca373f8edf89ddE.exit.i.i, %_ZN9itertools9size_hint3mul17ha1ca373f8edf89ddE.exit.thread12.i.i - %spec.select.i.i10.i.i = phi i64 [ %spec.select.i.i.i.i23, %_ZN9itertools9size_hint3mul17ha1ca373f8edf89ddE.exit.i.i ], [ %spec.select.i.i11.i.i, %55 ], [ %spec.select.i.i15.i.i, %_ZN9itertools9size_hint3mul17ha1ca373f8edf89ddE.exit.thread12.i.i ] - %.sroa.04.0.i.i.i = phi i64 [ 0, %_ZN9itertools9size_hint3mul17ha1ca373f8edf89ddE.exit.i.i ], [ %spec.select.i6.i.i, %55 ], [ 0, %_ZN9itertools9size_hint3mul17ha1ca373f8edf89ddE.exit.thread12.i.i ] - %.sroa.4.0.i.i.i = phi i64 [ undef, %_ZN9itertools9size_hint3mul17ha1ca373f8edf89ddE.exit.i.i ], [ %58, %55 ], [ undef, %_ZN9itertools9size_hint3mul17ha1ca373f8edf89ddE.exit.thread12.i.i ] - %59 = tail call i64 @llvm.uadd.sat.i64(i64 %spec.select.i.i10.i.i, i64 %36) - %60 = add nuw i64 %.0.i22, 1 - %61 = icmp eq i64 %60, %4 - br i1 %61, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h19822d780ee44431E.exit", label %.preheader +"_ZN116_$LT$itertools..adaptors..multi_product..MultiProduct$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9size_hint28_$u7b$$u7b$closure$u7d$$u7d$17h3cdb761b90a22fe4E.exit.i": ; preds = %_ZN9itertools9size_hint3mul17ha1ca373f8edf89ddE.exit.thread.i.i, %_ZN9itertools9size_hint3mul17ha1ca373f8edf89ddE.exit.i.i, %_ZN9itertools9size_hint3mul17ha1ca373f8edf89ddE.exit.thread12.i.i + %spec.select.i.i10.i.i = phi i64 [ %spec.select.i.i.i.i23, %_ZN9itertools9size_hint3mul17ha1ca373f8edf89ddE.exit.i.i ], [ %spec.select.i.i11.i.i, %_ZN9itertools9size_hint3mul17ha1ca373f8edf89ddE.exit.thread.i.i ], [ %spec.select.i.i15.i.i, %_ZN9itertools9size_hint3mul17ha1ca373f8edf89ddE.exit.thread12.i.i ] + %.sroa.04.0.i.i.i = phi i64 [ 0, %_ZN9itertools9size_hint3mul17ha1ca373f8edf89ddE.exit.i.i ], [ %spec.select.i6.i.i, %_ZN9itertools9size_hint3mul17ha1ca373f8edf89ddE.exit.thread.i.i ], [ 0, %_ZN9itertools9size_hint3mul17ha1ca373f8edf89ddE.exit.thread12.i.i ] + %.sroa.4.0.i.i.i = phi i64 [ undef, %_ZN9itertools9size_hint3mul17ha1ca373f8edf89ddE.exit.i.i ], [ %56, %_ZN9itertools9size_hint3mul17ha1ca373f8edf89ddE.exit.thread.i.i ], [ undef, %_ZN9itertools9size_hint3mul17ha1ca373f8edf89ddE.exit.thread12.i.i ] + %57 = tail call i64 @llvm.uadd.sat.i64(i64 %spec.select.i.i10.i.i, i64 %36) + %58 = add nuw i64 %.0.i22, 1 + %59 = icmp eq i64 %58, %4 + br i1 %59, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h19822d780ee44431E.exit", label %.preheader } ; Function Attrs: nonlazybind uwtable diff --git a/bench/rustfmt-rs/optimized/2tgwtv970e5remme.ll b/bench/rustfmt-rs/optimized/2tgwtv970e5remme.ll index c1d879d84f3..6f3299379e3 100644 --- a/bench/rustfmt-rs/optimized/2tgwtv970e5remme.ll +++ b/bench/rustfmt-rs/optimized/2tgwtv970e5remme.ll @@ -352,26 +352,25 @@ define internal fastcc { ptr, i64 } @"_ZN113_$LT$alloc..string..String$u20$as$u2 6: ; preds = %5 %7 = icmp eq i64 %0, %.16.val - %8 = sub i64 %.16.val, %0 br i1 %7, label %"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17ha2ee3e20bcc17cc5E.exit", label %"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17ha2ee3e20bcc17cc5E.exit.thread" "_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17haf67bc638b31970fE.exit.i": ; preds = %5 - %9 = getelementptr inbounds i8, ptr %.8.val, i64 %0 - %10 = load i8, ptr %9, align 1, !alias.scope !13, !noundef !10 - %11 = icmp sgt i8 %10, -65 - %12 = sub nuw i64 %.16.val, %0 - br i1 %11, label %"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17ha2ee3e20bcc17cc5E.exit", label %"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17ha2ee3e20bcc17cc5E.exit.thread" + %8 = getelementptr inbounds i8, ptr %.8.val, i64 %0 + %9 = load i8, ptr %8, align 1, !alias.scope !13, !noundef !10 + %10 = icmp sgt i8 %9, -65 + %11 = sub nuw i64 %.16.val, %0 + br i1 %10, label %"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17ha2ee3e20bcc17cc5E.exit", label %"_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17ha2ee3e20bcc17cc5E.exit.thread" "_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17ha2ee3e20bcc17cc5E.exit.thread": ; preds = %6, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17haf67bc638b31970fE.exit.i" tail call void @_ZN4core3str16slice_error_fail17hb5c4f833c44f34d2E(ptr noalias noundef nonnull readonly align 1 %.8.val, i64 noundef %.16.val, i64 noundef %0, i64 noundef %.16.val, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %1) #26 unreachable "_ZN4core3str6traits112_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeFrom$LT$usize$GT$$GT$3get17ha2ee3e20bcc17cc5E.exit": ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17haf67bc638b31970fE.exit.i", %6, %2 - %13 = phi i64 [ %12, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17haf67bc638b31970fE.exit.i" ], [ %8, %6 ], [ %.16.val, %2 ] - %14 = getelementptr inbounds i8, ptr %.8.val, i64 %0 - %15 = insertvalue { ptr, i64 } poison, ptr %14, 0 - %16 = insertvalue { ptr, i64 } %15, i64 %13, 1 - ret { ptr, i64 } %16 + %12 = phi i64 [ %11, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17haf67bc638b31970fE.exit.i" ], [ 0, %6 ], [ %.16.val, %2 ] + %13 = getelementptr inbounds i8, ptr %.8.val, i64 %0 + %14 = insertvalue { ptr, i64 } poison, ptr %13, 0 + %15 = insertvalue { ptr, i64 } %14, i64 %12, 1 + ret { ptr, i64 } %15 } ; Function Attrs: inlinehint nonlazybind uwtable diff --git a/bench/sentencepiece/optimized/sentencepiece_processor.cc.ll b/bench/sentencepiece/optimized/sentencepiece_processor.cc.ll index 7ac9317834a..4bbb68add7f 100644 --- a/bench/sentencepiece/optimized/sentencepiece_processor.cc.ll +++ b/bench/sentencepiece/optimized/sentencepiece_processor.cc.ll @@ -19085,7 +19085,7 @@ define linkonce_odr void @_ZNSt21discrete_distributionIiE10param_type13_M_initia br label %_ZNSt6vectorIdSaIdEE5clearEv.exit 11: ; preds = %1 - br i1 %.not.i.i, label %_ZNSt8__detail11__normalizeIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEES7_dEET0_T_S9_S8_RKT1_.exit, label %.lr.ph.i + br i1 %.not.i.i, label %_ZNSt8__detail11__normalizeIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEES7_dEET0_T_S9_S8_RKT1_.exit.thread, label %.lr.ph.i .lr.ph.i: ; preds = %11, %.lr.ph.i %.07.i = phi double [ %13, %.lr.ph.i ], [ 0.000000e+00, %11 ] @@ -19103,84 +19103,81 @@ define linkonce_odr void @_ZNSt21discrete_distributionIiE10param_type13_M_initia store double %16, ptr %.sroa.0.08.i, align 8 %17 = getelementptr i8, ptr %.sroa.0.08.i, i64 8 %.not.i11 = icmp eq ptr %17, %3 - br i1 %.not.i11, label %_ZNSt8__detail11__normalizeIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEES7_dEET0_T_S9_S8_RKT1_.exit.loopexit, label %.lr.ph.i10, !llvm.loop !350 + br i1 %.not.i11, label %_ZNSt8__detail11__normalizeIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEES7_dEET0_T_S9_S8_RKT1_.exit, label %.lr.ph.i10, !llvm.loop !350 -_ZNSt8__detail11__normalizeIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEES7_dEET0_T_S9_S8_RKT1_.exit.loopexit: ; preds = %.lr.ph.i10 +_ZNSt8__detail11__normalizeIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEES7_dEET0_T_S9_S8_RKT1_.exit: ; preds = %.lr.ph.i10 %.pre = load ptr, ptr %2, align 8 %.pre13 = load ptr, ptr %0, align 8 %.pre18 = ptrtoint ptr %.pre to i64 %.pre19 = ptrtoint ptr %.pre13 to i64 %.pre21 = sub i64 %.pre18, %.pre19 - br label %_ZNSt8__detail11__normalizeIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEES7_dEET0_T_S9_S8_RKT1_.exit + %18 = icmp ugt i64 %.pre21, 9223372036854775800 + br i1 %18, label %19, label %_ZNSt8__detail11__normalizeIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEES7_dEET0_T_S9_S8_RKT1_.exit.thread -_ZNSt8__detail11__normalizeIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEES7_dEET0_T_S9_S8_RKT1_.exit: ; preds = %_ZNSt8__detail11__normalizeIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEES7_dEET0_T_S9_S8_RKT1_.exit.loopexit, %11 - %.pre-phi22 = phi i64 [ %.pre21, %_ZNSt8__detail11__normalizeIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEES7_dEET0_T_S9_S8_RKT1_.exit.loopexit ], [ %7, %11 ] - %18 = phi ptr [ %.pre13, %_ZNSt8__detail11__normalizeIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEES7_dEET0_T_S9_S8_RKT1_.exit.loopexit ], [ %4, %11 ] - %19 = phi ptr [ %.pre, %_ZNSt8__detail11__normalizeIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEES7_dEET0_T_S9_S8_RKT1_.exit.loopexit ], [ %3, %11 ] - %20 = getelementptr inbounds i8, ptr %0, i64 24 - %21 = icmp ugt i64 %.pre-phi22, 9223372036854775800 - br i1 %21, label %22, label %23 - -22: ; preds = %_ZNSt8__detail11__normalizeIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEES7_dEET0_T_S9_S8_RKT1_.exit +19: ; preds = %_ZNSt8__detail11__normalizeIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEES7_dEET0_T_S9_S8_RKT1_.exit tail call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.90) #27 unreachable -23: ; preds = %_ZNSt8__detail11__normalizeIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEES7_dEET0_T_S9_S8_RKT1_.exit - %24 = getelementptr inbounds i8, ptr %0, i64 40 - %25 = load ptr, ptr %24, align 8 - %26 = load ptr, ptr %20, align 8 +_ZNSt8__detail11__normalizeIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEES7_dEET0_T_S9_S8_RKT1_.exit.thread: ; preds = %11, %_ZNSt8__detail11__normalizeIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEES7_dEET0_T_S9_S8_RKT1_.exit + %20 = phi ptr [ %.pre, %_ZNSt8__detail11__normalizeIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEES7_dEET0_T_S9_S8_RKT1_.exit ], [ %3, %11 ] + %21 = phi ptr [ %.pre13, %_ZNSt8__detail11__normalizeIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEES7_dEET0_T_S9_S8_RKT1_.exit ], [ %4, %11 ] + %.pre-phi2224 = phi i64 [ %.pre21, %_ZNSt8__detail11__normalizeIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEES7_dEET0_T_S9_S8_RKT1_.exit ], [ 0, %11 ] + %22 = getelementptr inbounds i8, ptr %0, i64 24 + %23 = getelementptr inbounds i8, ptr %0, i64 40 + %24 = load ptr, ptr %23, align 8 + %25 = load ptr, ptr %22, align 8 + %26 = ptrtoint ptr %24 to i64 %27 = ptrtoint ptr %25 to i64 - %28 = ptrtoint ptr %26 to i64 - %29 = sub i64 %27, %28 - %30 = icmp ult i64 %29, %.pre-phi22 - br i1 %30, label %_ZNSt12_Vector_baseIdSaIdEE11_M_allocateEm.exit.i, label %_ZNSt6vectorIdSaIdEE7reserveEm.exit - -_ZNSt12_Vector_baseIdSaIdEE11_M_allocateEm.exit.i: ; preds = %23 - %31 = getelementptr inbounds i8, ptr %0, i64 32 - %32 = load ptr, ptr %31, align 8 - %33 = ptrtoint ptr %32 to i64 - %34 = sub i64 %33, %28 - %35 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %.pre-phi22) #28 - %36 = icmp sgt i64 %34, 0 - br i1 %36, label %37, label %_ZNSt6vectorIdSaIdEE11_S_relocateEPdS2_S2_RS0_.exit.i + %28 = sub i64 %26, %27 + %29 = icmp ult i64 %28, %.pre-phi2224 + br i1 %29, label %_ZNSt12_Vector_baseIdSaIdEE11_M_allocateEm.exit.i, label %_ZNSt6vectorIdSaIdEE7reserveEm.exit -37: ; preds = %_ZNSt12_Vector_baseIdSaIdEE11_M_allocateEm.exit.i - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %35, ptr align 8 %26, i64 %34, i1 false) +_ZNSt12_Vector_baseIdSaIdEE11_M_allocateEm.exit.i: ; preds = %_ZNSt8__detail11__normalizeIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEES7_dEET0_T_S9_S8_RKT1_.exit.thread + %30 = getelementptr inbounds i8, ptr %0, i64 32 + %31 = load ptr, ptr %30, align 8 + %32 = ptrtoint ptr %31 to i64 + %33 = sub i64 %32, %27 + %34 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %.pre-phi2224) #28 + %35 = icmp sgt i64 %33, 0 + br i1 %35, label %36, label %_ZNSt6vectorIdSaIdEE11_S_relocateEPdS2_S2_RS0_.exit.i + +36: ; preds = %_ZNSt12_Vector_baseIdSaIdEE11_M_allocateEm.exit.i + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %34, ptr align 8 %25, i64 %33, i1 false) br label %_ZNSt6vectorIdSaIdEE11_S_relocateEPdS2_S2_RS0_.exit.i -_ZNSt6vectorIdSaIdEE11_S_relocateEPdS2_S2_RS0_.exit.i: ; preds = %37, %_ZNSt12_Vector_baseIdSaIdEE11_M_allocateEm.exit.i - %.not.i8.i = icmp eq ptr %26, null - br i1 %.not.i8.i, label %_ZNSt12_Vector_baseIdSaIdEE13_M_deallocateEPdm.exit.i, label %38 +_ZNSt6vectorIdSaIdEE11_S_relocateEPdS2_S2_RS0_.exit.i: ; preds = %36, %_ZNSt12_Vector_baseIdSaIdEE11_M_allocateEm.exit.i + %.not.i8.i = icmp eq ptr %25, null + br i1 %.not.i8.i, label %_ZNSt12_Vector_baseIdSaIdEE13_M_deallocateEPdm.exit.i, label %37 -38: ; preds = %_ZNSt6vectorIdSaIdEE11_S_relocateEPdS2_S2_RS0_.exit.i - tail call void @_ZdlPvm(ptr noundef nonnull %26, i64 noundef %29) #26 +37: ; preds = %_ZNSt6vectorIdSaIdEE11_S_relocateEPdS2_S2_RS0_.exit.i + tail call void @_ZdlPvm(ptr noundef nonnull %25, i64 noundef %28) #26 %.pre14.pre = load ptr, ptr %0, align 8 %.pre15.pre = load ptr, ptr %2, align 8 br label %_ZNSt12_Vector_baseIdSaIdEE13_M_deallocateEPdm.exit.i -_ZNSt12_Vector_baseIdSaIdEE13_M_deallocateEPdm.exit.i: ; preds = %38, %_ZNSt6vectorIdSaIdEE11_S_relocateEPdS2_S2_RS0_.exit.i - %.pre15 = phi ptr [ %.pre15.pre, %38 ], [ %19, %_ZNSt6vectorIdSaIdEE11_S_relocateEPdS2_S2_RS0_.exit.i ] - %.pre14 = phi ptr [ %.pre14.pre, %38 ], [ %18, %_ZNSt6vectorIdSaIdEE11_S_relocateEPdS2_S2_RS0_.exit.i ] - store ptr %35, ptr %20, align 8 - %39 = getelementptr inbounds i8, ptr %35, i64 %34 - store ptr %39, ptr %31, align 8 - %40 = getelementptr inbounds i8, ptr %35, i64 %.pre-phi22 - store ptr %40, ptr %24, align 8 +_ZNSt12_Vector_baseIdSaIdEE13_M_deallocateEPdm.exit.i: ; preds = %37, %_ZNSt6vectorIdSaIdEE11_S_relocateEPdS2_S2_RS0_.exit.i + %.pre15 = phi ptr [ %.pre15.pre, %37 ], [ %20, %_ZNSt6vectorIdSaIdEE11_S_relocateEPdS2_S2_RS0_.exit.i ] + %.pre14 = phi ptr [ %.pre14.pre, %37 ], [ %21, %_ZNSt6vectorIdSaIdEE11_S_relocateEPdS2_S2_RS0_.exit.i ] + store ptr %34, ptr %22, align 8 + %38 = getelementptr inbounds i8, ptr %34, i64 %33 + store ptr %38, ptr %30, align 8 + %39 = getelementptr inbounds i8, ptr %34, i64 %.pre-phi2224 + store ptr %39, ptr %23, align 8 br label %_ZNSt6vectorIdSaIdEE7reserveEm.exit -_ZNSt6vectorIdSaIdEE7reserveEm.exit: ; preds = %23, %_ZNSt12_Vector_baseIdSaIdEE13_M_deallocateEPdm.exit.i - %41 = phi ptr [ %19, %23 ], [ %.pre15, %_ZNSt12_Vector_baseIdSaIdEE13_M_deallocateEPdm.exit.i ] - %42 = phi ptr [ %18, %23 ], [ %.pre14, %_ZNSt12_Vector_baseIdSaIdEE13_M_deallocateEPdm.exit.i ] - %43 = tail call ptr @_ZSt11partial_sumIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEESt20back_insert_iteratorIS5_EET0_T_SA_S9_(ptr %42, ptr %41, ptr nonnull %20) - %44 = getelementptr inbounds i8, ptr %0, i64 32 - %45 = load ptr, ptr %44, align 8 - %46 = load ptr, ptr %20, align 8 +_ZNSt6vectorIdSaIdEE7reserveEm.exit: ; preds = %_ZNSt8__detail11__normalizeIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEES7_dEET0_T_S9_S8_RKT1_.exit.thread, %_ZNSt12_Vector_baseIdSaIdEE13_M_deallocateEPdm.exit.i + %40 = phi ptr [ %20, %_ZNSt8__detail11__normalizeIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEES7_dEET0_T_S9_S8_RKT1_.exit.thread ], [ %.pre15, %_ZNSt12_Vector_baseIdSaIdEE13_M_deallocateEPdm.exit.i ] + %41 = phi ptr [ %21, %_ZNSt8__detail11__normalizeIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEES7_dEET0_T_S9_S8_RKT1_.exit.thread ], [ %.pre14, %_ZNSt12_Vector_baseIdSaIdEE13_M_deallocateEPdm.exit.i ] + %42 = tail call ptr @_ZSt11partial_sumIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEESt20back_insert_iteratorIS5_EET0_T_SA_S9_(ptr %41, ptr %40, ptr nonnull %22) + %43 = getelementptr inbounds i8, ptr %0, i64 32 + %44 = load ptr, ptr %43, align 8 + %45 = load ptr, ptr %22, align 8 + %46 = ptrtoint ptr %44 to i64 %47 = ptrtoint ptr %45 to i64 - %48 = ptrtoint ptr %46 to i64 - %49 = sub i64 %47, %48 - %50 = getelementptr i8, ptr %46, i64 %49 - %51 = getelementptr i8, ptr %50, i64 -8 - store double 1.000000e+00, ptr %51, align 8 + %48 = sub i64 %46, %47 + %49 = getelementptr i8, ptr %45, i64 %48 + %50 = getelementptr i8, ptr %49, i64 -8 + store double 1.000000e+00, ptr %50, align 8 br label %_ZNSt6vectorIdSaIdEE5clearEv.exit _ZNSt6vectorIdSaIdEE5clearEv.exit: ; preds = %10, %9, %_ZNSt6vectorIdSaIdEE7reserveEm.exit diff --git a/bench/soc-simulator/optimized/verilated.ll b/bench/soc-simulator/optimized/verilated.ll index e8cb341bdcb..3daba29b6ab 100644 --- a/bench/soc-simulator/optimized/verilated.ll +++ b/bench/soc-simulator/optimized/verilated.ll @@ -33015,7 +33015,7 @@ define linkonce_odr dso_local void @_ZNSt5dequeI12VerilatedMsgSaIS0_EE17_M_reall %15 = load i64, ptr %14, align 8 %16 = shl i64 %13, 1 %17 = icmp ugt i64 %15, %16 - br i1 %17, label %18, label %38 + br i1 %17, label %18, label %39 18: ; preds = %3 %19 = load ptr, ptr %0, align 8 @@ -33042,78 +33042,78 @@ define linkonce_odr dso_local void @_ZNSt5dequeI12VerilatedMsgSaIS0_EE17_M_reall br i1 %.not.i.i.i.i.i, label %_ZSt4copyIPP12VerilatedMsgS2_ET0_T_S4_S3_.exit, label %32 32: ; preds = %31 - %33 = ptrtoint ptr %26 to i64 - %34 = sub i64 %33, %9 - %35 = ashr exact i64 %34, 3 - %.pre.i.i.i.i.i = sub nsw i64 0, %35 - %36 = getelementptr inbounds ptr, ptr %24, i64 %12 - %37 = getelementptr inbounds ptr, ptr %36, i64 %.pre.i.i.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %37, ptr align 8 %7, i64 %34, i1 false) + %33 = getelementptr inbounds ptr, ptr %24, i64 %12 + %34 = ptrtoint ptr %26 to i64 + %35 = sub i64 %34, %9 + %36 = ashr exact i64 %35, 3 + %37 = sub nsw i64 0, %36 + %38 = getelementptr inbounds ptr, ptr %33, i64 %37 + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %38, ptr align 8 %7, i64 %35, i1 false) br label %_ZSt4copyIPP12VerilatedMsgS2_ET0_T_S4_S3_.exit -38: ; preds = %3 +39: ; preds = %3 %.sroa.speculated = tail call i64 @llvm.umax.i64(i64 %15, i64 %1) - %39 = add i64 %15, 2 - %40 = add i64 %39, %.sroa.speculated - %41 = icmp ugt i64 %40, 1152921504606846975 - br i1 %41, label %42, label %_ZNSt11_Deque_baseI12VerilatedMsgSaIS0_EE15_M_allocate_mapEm.exit + %40 = add i64 %15, 2 + %41 = add i64 %40, %.sroa.speculated + %42 = icmp ugt i64 %41, 1152921504606846975 + br i1 %42, label %43, label %_ZNSt11_Deque_baseI12VerilatedMsgSaIS0_EE15_M_allocate_mapEm.exit -42: ; preds = %38 - %43 = icmp ugt i64 %40, 2305843009213693951 - br i1 %43, label %44, label %45 +43: ; preds = %39 + %44 = icmp ugt i64 %41, 2305843009213693951 + br i1 %44, label %45, label %46 -44: ; preds = %42 +45: ; preds = %43 tail call void @_ZSt28__throw_bad_array_new_lengthv() #53 unreachable -45: ; preds = %42 +46: ; preds = %43 tail call void @_ZSt17__throw_bad_allocv() #53 unreachable -_ZNSt11_Deque_baseI12VerilatedMsgSaIS0_EE15_M_allocate_mapEm.exit: ; preds = %38 - %46 = shl nuw nsw i64 %40, 3 - %47 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %46) #55 - %48 = sub i64 %40, %13 - %49 = lshr i64 %48, 1 - %50 = getelementptr inbounds ptr, ptr %47, i64 %49 - %51 = select i1 %2, i64 %1, i64 0 - %52 = getelementptr inbounds ptr, ptr %50, i64 %51 - %53 = getelementptr inbounds i8, ptr %5, i64 8 - %.not.i.i.i.i.i25 = icmp eq ptr %53, %7 - br i1 %.not.i.i.i.i.i25, label %_ZSt4copyIPP12VerilatedMsgS2_ET0_T_S4_S3_.exit26, label %54 - -54: ; preds = %_ZNSt11_Deque_baseI12VerilatedMsgSaIS0_EE15_M_allocate_mapEm.exit - %55 = ptrtoint ptr %53 to i64 - %56 = sub i64 %55, %9 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %52, ptr align 8 %7, i64 %56, i1 false) +_ZNSt11_Deque_baseI12VerilatedMsgSaIS0_EE15_M_allocate_mapEm.exit: ; preds = %39 + %47 = shl nuw nsw i64 %41, 3 + %48 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %47) #55 + %49 = sub i64 %41, %13 + %50 = lshr i64 %49, 1 + %51 = getelementptr inbounds ptr, ptr %48, i64 %50 + %52 = select i1 %2, i64 %1, i64 0 + %53 = getelementptr inbounds ptr, ptr %51, i64 %52 + %54 = getelementptr inbounds i8, ptr %5, i64 8 + %.not.i.i.i.i.i25 = icmp eq ptr %54, %7 + br i1 %.not.i.i.i.i.i25, label %_ZSt4copyIPP12VerilatedMsgS2_ET0_T_S4_S3_.exit26, label %55 + +55: ; preds = %_ZNSt11_Deque_baseI12VerilatedMsgSaIS0_EE15_M_allocate_mapEm.exit + %56 = ptrtoint ptr %54 to i64 + %57 = sub i64 %56, %9 + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %53, ptr align 8 %7, i64 %57, i1 false) br label %_ZSt4copyIPP12VerilatedMsgS2_ET0_T_S4_S3_.exit26 -_ZSt4copyIPP12VerilatedMsgS2_ET0_T_S4_S3_.exit26: ; preds = %_ZNSt11_Deque_baseI12VerilatedMsgSaIS0_EE15_M_allocate_mapEm.exit, %54 - %57 = load ptr, ptr %0, align 8 - %58 = shl i64 %15, 3 - tail call void @_ZdlPvm(ptr noundef %57, i64 noundef %58) #56 - store ptr %47, ptr %0, align 8 - store i64 %40, ptr %14, align 8 +_ZSt4copyIPP12VerilatedMsgS2_ET0_T_S4_S3_.exit26: ; preds = %_ZNSt11_Deque_baseI12VerilatedMsgSaIS0_EE15_M_allocate_mapEm.exit, %55 + %58 = load ptr, ptr %0, align 8 + %59 = shl i64 %15, 3 + tail call void @_ZdlPvm(ptr noundef %58, i64 noundef %59) #56 + store ptr %48, ptr %0, align 8 + store i64 %41, ptr %14, align 8 br label %_ZSt4copyIPP12VerilatedMsgS2_ET0_T_S4_S3_.exit _ZSt4copyIPP12VerilatedMsgS2_ET0_T_S4_S3_.exit: ; preds = %32, %31, %28, %27, %_ZSt4copyIPP12VerilatedMsgS2_ET0_T_S4_S3_.exit26 - %.0 = phi ptr [ %52, %_ZSt4copyIPP12VerilatedMsgS2_ET0_T_S4_S3_.exit26 ], [ %24, %27 ], [ %24, %28 ], [ %24, %31 ], [ %24, %32 ] + %.0 = phi ptr [ %53, %_ZSt4copyIPP12VerilatedMsgS2_ET0_T_S4_S3_.exit26 ], [ %24, %27 ], [ %24, %28 ], [ %24, %31 ], [ %24, %32 ] store ptr %.0, ptr %6, align 8 - %59 = load ptr, ptr %.0, align 8 - %60 = getelementptr inbounds i8, ptr %0, i64 24 - store ptr %59, ptr %60, align 8 - %61 = getelementptr inbounds i8, ptr %59, i64 480 - %62 = getelementptr inbounds i8, ptr %0, i64 32 - store ptr %61, ptr %62, align 8 - %63 = getelementptr inbounds ptr, ptr %.0, i64 %12 - %64 = getelementptr inbounds i8, ptr %63, i64 -8 - store ptr %64, ptr %4, align 8 - %65 = load ptr, ptr %64, align 8 - %66 = getelementptr inbounds i8, ptr %0, i64 56 - store ptr %65, ptr %66, align 8 - %67 = getelementptr inbounds i8, ptr %65, i64 480 - %68 = getelementptr inbounds i8, ptr %0, i64 64 - store ptr %67, ptr %68, align 8 + %60 = load ptr, ptr %.0, align 8 + %61 = getelementptr inbounds i8, ptr %0, i64 24 + store ptr %60, ptr %61, align 8 + %62 = getelementptr inbounds i8, ptr %60, i64 480 + %63 = getelementptr inbounds i8, ptr %0, i64 32 + store ptr %62, ptr %63, align 8 + %64 = getelementptr inbounds ptr, ptr %.0, i64 %12 + %65 = getelementptr inbounds i8, ptr %64, i64 -8 + store ptr %65, ptr %4, align 8 + %66 = load ptr, ptr %65, align 8 + %67 = getelementptr inbounds i8, ptr %0, i64 56 + store ptr %66, ptr %67, align 8 + %68 = getelementptr inbounds i8, ptr %66, i64 480 + %69 = getelementptr inbounds i8, ptr %0, i64 64 + store ptr %68, ptr %69, align 8 ret void } @@ -33431,10 +33431,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit26: ; p %44 = getelementptr inbounds i8, ptr %43, i64 %4 %45 = getelementptr inbounds i8, ptr %12, i64 %1 %46 = getelementptr inbounds i8, ptr %45, i64 %2 - switch i64 %9, label %49 [ - i64 1, label %47 - i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27 - ] + %cond29 = icmp eq i64 %9, 1 + br i1 %cond29, label %47, label %49 47: ; preds = %42 %48 = load i8, ptr %46, align 1 @@ -33445,7 +33443,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit26: ; p tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %44, ptr align 1 %46, i64 %9, i1 false) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27: ; preds = %49, %47, %42, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit26 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27: ; preds = %49, %47, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit26 br i1 %14, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit27 @@ -33515,10 +33513,8 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit: ; preds 29: ; preds = %28 %30 = getelementptr inbounds i8, ptr %21, i64 %4 %31 = getelementptr inbounds i8, ptr %21, i64 %2 - switch i64 %23, label %34 [ - i64 1, label %32 - i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_moveEPcPKcm.exit - ] + %cond99 = icmp eq i64 %23, 1 + br i1 %cond99, label %32, label %34 32: ; preds = %29 %33 = load i8, ptr %31, align 1 @@ -33529,7 +33525,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit: ; preds tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %30, ptr align 1 %31, i64 %23, i1 false) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_moveEPcPKcm.exit -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_moveEPcPKcm.exit: ; preds = %34, %32, %29, %28 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_moveEPcPKcm.exit: ; preds = %34, %32, %28 switch i64 %4, label %37 [ i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit i64 1, label %35 @@ -33551,8 +33547,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_moveEPcPKcm.exit: ; pre br i1 %or.cond91.not, label %40, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_moveEPcPKcm.exit93 40: ; preds = %38 - %cond101 = icmp eq i64 %4, 1 - br i1 %cond101, label %41, label %43 + %cond103 = icmp eq i64 %4, 1 + br i1 %cond103, label %41, label %43 41: ; preds = %40 %42 = load i8, ptr %3, align 1 @@ -33572,10 +33568,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_moveEPcPKcm.exit93: ; p 44: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_moveEPcPKcm.exit93 %45 = getelementptr inbounds i8, ptr %21, i64 %4 %46 = getelementptr inbounds i8, ptr %21, i64 %2 - switch i64 %23, label %49 [ - i64 1, label %47 - i64 0, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_moveEPcPKcm.exit94 - ] + %cond102 = icmp eq i64 %23, 1 + br i1 %cond102, label %47, label %49 47: ; preds = %44 %48 = load i8, ptr %46, align 1 @@ -33586,7 +33580,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_moveEPcPKcm.exit93: ; p tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %45, ptr align 1 %46, i64 %23, i1 false) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_moveEPcPKcm.exit94 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_moveEPcPKcm.exit94: ; preds = %49, %47, %44, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_moveEPcPKcm.exit93 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_moveEPcPKcm.exit94: ; preds = %49, %47, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_moveEPcPKcm.exit93 br i1 %.not83, label %50, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_copyEPcPKcm.exit 50: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_moveEPcPKcm.exit94 @@ -33596,8 +33590,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_moveEPcPKcm.exit94: ; p br i1 %.not86, label %57, label %53 53: ; preds = %50 - %cond100 = icmp eq i64 %4, 1 - br i1 %cond100, label %54, label %56 + %cond101 = icmp eq i64 %4, 1 + br i1 %cond101, label %54, label %56 54: ; preds = %53 %55 = load i8, ptr %3, align 1 @@ -33618,8 +33612,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_S_moveEPcPKcm.exit94: ; p %61 = sub i64 %59, %60 %62 = getelementptr i8, ptr %21, i64 %61 %63 = getelementptr i8, ptr %62, i64 %11 - %cond99 = icmp eq i64 %4, 1 - br i1 %cond99, label %64, label %66 + %cond100 = icmp eq i64 %4, 1 + br i1 %cond100, label %64, label %66 64: ; preds = %58 %65 = load i8, ptr %63, align 1 diff --git a/bench/taskflow/optimized/async.cpp.ll b/bench/taskflow/optimized/async.cpp.ll index 064a0fde23a..5f835c0da71 100644 --- a/bench/taskflow/optimized/async.cpp.ll +++ b/bench/taskflow/optimized/async.cpp.ll @@ -11742,17 +11742,11 @@ invoke.cont.i.i: ; preds = %invoke.cont19 br label %_ZNSt6vectorIPN2tf4NodeESaIS2_EE5clearEv.exit _ZNSt6vectorIPN2tf4NodeESaIS2_EE5clearEv.exit: ; preds = %invoke.cont19, %invoke.cont.i.i - %sub.ptr.lhs.cast.i134 = ptrtoint ptr %nodes.sroa.13.5 to i64 - %sub.ptr.rhs.cast.i135 = ptrtoint ptr %nodes.sroa.0.5 to i64 - %sub.ptr.sub.i136 = sub i64 %sub.ptr.lhs.cast.i134, %sub.ptr.rhs.cast.i135 - %sub.ptr.div.i137 = ashr exact i64 %sub.ptr.sub.i136, 3 %cmp24138.not = icmp eq ptr %nodes.sroa.13.5, %nodes.sroa.0.5 - br i1 %cmp24138.not, label %for.cond.preheader, label %while.body + br i1 %cmp24138.not, label %for.end, label %while.body -for.cond.preheader: ; preds = %if.end, %_ZNSt6vectorIPN2tf4NodeESaIS2_EE5clearEv.exit - %nodes.sroa.0.0.lcssa = phi ptr [ %nodes.sroa.0.5, %_ZNSt6vectorIPN2tf4NodeESaIS2_EE5clearEv.exit ], [ %nodes.sroa.0.1, %if.end ] - %sub.ptr.div.i.lcssa = phi i64 [ %sub.ptr.div.i137, %_ZNSt6vectorIPN2tf4NodeESaIS2_EE5clearEv.exit ], [ %sub.ptr.div.i, %if.end ] - %cmp55144.not = icmp eq i64 %sub.ptr.div.i.lcssa, 0 +for.cond.preheader: ; preds = %if.end + %cmp55144.not = icmp eq ptr %nodes.sroa.13.1, %nodes.sroa.0.1 br i1 %cmp55144.not, label %for.end, label %for.body while.body: ; preds = %_ZNSt6vectorIPN2tf4NodeESaIS2_EE5clearEv.exit, %if.end @@ -11882,22 +11876,23 @@ if.end: ; preds = %invoke.cont.i.i35, for.body: ; preds = %for.cond.preheader, %for.inc %i.1145 = phi i64 [ %inc58, %for.inc ], [ 0, %for.cond.preheader ] - %add.ptr.i42 = getelementptr inbounds ptr, ptr %nodes.sroa.0.0.lcssa, i64 %i.1145 + %add.ptr.i42 = getelementptr inbounds ptr, ptr %nodes.sroa.0.1, i64 %i.1145 %20 = load ptr, ptr %add.ptr.i42, align 8 invoke void @_ZN2tf10ObjectPoolINS_4NodeELm65536EE7recycleEPS1_(ptr noundef nonnull align 8 dereferenceable(88) @_ZN2tf9node_poolE, ptr noundef %20) to label %for.inc unwind label %terminate.lpad.loopexit for.inc: ; preds = %for.body %inc58 = add nuw i64 %i.1145, 1 - %exitcond.not = icmp eq i64 %inc58, %sub.ptr.div.i.lcssa - br i1 %exitcond.not, label %if.then.i.i.i, label %for.body, !llvm.loop !119 + %exitcond.not = icmp eq i64 %inc58, %sub.ptr.div.i + br i1 %exitcond.not, label %for.end, label %for.body, !llvm.loop !119 -for.end: ; preds = %for.cond.preheader - %tobool.not.i.i.i = icmp eq ptr %nodes.sroa.0.0.lcssa, null +for.end: ; preds = %for.inc, %_ZNSt6vectorIPN2tf4NodeESaIS2_EE5clearEv.exit, %for.cond.preheader + %nodes.sroa.0.0.lcssa153 = phi ptr [ %nodes.sroa.0.1, %for.cond.preheader ], [ %nodes.sroa.0.5, %_ZNSt6vectorIPN2tf4NodeESaIS2_EE5clearEv.exit ], [ %nodes.sroa.0.1, %for.inc ] + %tobool.not.i.i.i = icmp eq ptr %nodes.sroa.0.0.lcssa153, null br i1 %tobool.not.i.i.i, label %if.end59thread-pre-split, label %if.then.i.i.i -if.then.i.i.i: ; preds = %for.inc, %for.end - tail call void @_ZdlPv(ptr noundef nonnull %nodes.sroa.0.0.lcssa) #37 +if.then.i.i.i: ; preds = %for.end + tail call void @_ZdlPv(ptr noundef nonnull %nodes.sroa.0.0.lcssa153) #37 br label %if.end59thread-pre-split if.end59thread-pre-split: ; preds = %for.end, %if.then.i.i.i @@ -13189,8 +13184,8 @@ _ZN2tf15SmallVectorImplIPNS_4NodeEE6appendISt13move_iteratorIPS2_EEEvT_S8_.exit: if.then.i.i.i.i.i: ; preds = %_ZN2tf15SmallVectorImplIPNS_4NodeEE6appendISt13move_iteratorIPS2_EEEvT_S8_.exit %sub.ptr.sub.i.i.i.i.i82 = sub i64 %sub.ptr.rhs.cast.i.i.i.i49, %sub.ptr.rhs.cast18 %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i82, 3 - %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i - %add.ptr.i.i.i.i.i = getelementptr inbounds ptr, ptr %9, i64 %.pre.i.i.i.i.i + %idx.neg.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i + %add.ptr.i.i.i.i.i = getelementptr inbounds ptr, ptr %9, i64 %idx.neg.i.i.i.i.i tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i, ptr align 8 %add.ptr15, i64 %sub.ptr.sub.i.i.i.i.i82, i1 false) br label %_ZSt13move_backwardIPPN2tf4NodeES3_ET0_T_S5_S4_.exit @@ -15325,7 +15320,7 @@ _ZN2tf14TFProfObserver7SummaryC2Ev.exit: ; preds = %arrayctor.loop.i.i %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i = sdiv exact i64 %sub.ptr.sub.i, 24 %cmp185.not = icmp eq ptr %0, %1 - br i1 %cmp185.not, label %for.end, label %for.body.preheader + br i1 %cmp185.not, label %if.end161, label %for.body.preheader for.body.preheader: ; preds = %_ZN2tf14TFProfObserver7SummaryC2Ev.exit %umax = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i, i64 1) @@ -15345,9 +15340,8 @@ for.inc: ; preds = %for.body %exitcond.not = icmp eq i64 %inc, %umax br i1 %exitcond.not, label %for.end, label %for.body, !llvm.loop !145 -for.end: ; preds = %for.inc, %for.body, %_ZN2tf14TFProfObserver7SummaryC2Ev.exit - %first.0.lcssa = phi i64 [ 0, %_ZN2tf14TFProfObserver7SummaryC2Ev.exit ], [ %first.0186, %for.body ], [ %umax, %for.inc ] - %_timeline.le = getelementptr inbounds i8, ptr %this, i64 8 +for.end: ; preds = %for.inc, %for.body + %first.0.lcssa = phi i64 [ %umax, %for.inc ], [ %first.0186, %for.body ] %cmp17241 = icmp ult i64 %first.0.lcssa, %sub.ptr.div.i br i1 %cmp17241, label %for.cond19.preheader.lr.ph, label %if.end161 @@ -15662,13 +15656,14 @@ invoke.cont157: ; preds = %end_of_summary %div.i.i126 = sdiv i64 %sub.i.i125, 1000 br label %if.end161 -if.end161: ; preds = %end_of_summary, %for.end, %invoke.cont157 - %view.0 = phi i64 [ %div.i.i126, %invoke.cont157 ], [ 0, %end_of_summary ], [ 0, %for.end ] +if.end161: ; preds = %_ZN2tf14TFProfObserver7SummaryC2Ev.exit, %end_of_summary, %for.end, %invoke.cont157 + %view.0 = phi i64 [ %div.i.i126, %invoke.cont157 ], [ 0, %end_of_summary ], [ 0, %for.end ], [ 0, %_ZN2tf14TFProfObserver7SummaryC2Ev.exit ] %call163 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %os, ptr noundef nonnull @.str.42) to label %invoke.cont162 unwind label %lpad.loopexit.split-lp invoke.cont162: ; preds = %if.end161 - %45 = load i64, ptr %_timeline.le, align 8 + %_timeline.le276 = getelementptr inbounds i8, ptr %this, i64 8 + %45 = load i64, ptr %_timeline.le276, align 8 %call166 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %call163, i64 noundef %45) to label %invoke.cont165 unwind label %lpad.loopexit.split-lp @@ -18128,16 +18123,16 @@ if.then.i.i.i.i.i: ; preds = %if.then14 br label %if.end65 if.else: ; preds = %if.then - br i1 %tobool.not.i.i.i.i.i, label %if.end65, label %if.then.i.i.i.i.i22 + br i1 %tobool.not.i.i.i.i.i, label %if.end65, label %if.then.i.i.i.i.i19 -if.then.i.i.i.i.i22: ; preds = %if.else - %sub.ptr.lhs.cast.i.i.i.i.i18 = ptrtoint ptr %add.ptr21 to i64 - %sub.ptr.sub.i.i.i.i.i20 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i18, %sub.ptr.rhs.cast - %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i20, 3 - %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i +if.then.i.i.i.i.i19: ; preds = %if.else %add.ptr29 = getelementptr inbounds ptr, ptr %add.ptr9, i64 %add - %add.ptr.i.i.i.i.i23 = getelementptr inbounds ptr, ptr %add.ptr29, i64 %.pre.i.i.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i23, ptr align 8 %1, i64 %sub.ptr.sub.i.i.i.i.i20, i1 false) + %sub.ptr.lhs.cast.i.i.i.i.i20 = ptrtoint ptr %add.ptr21 to i64 + %sub.ptr.sub.i.i.i.i.i22 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i20, %sub.ptr.rhs.cast + %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i22, 3 + %idx.neg.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i + %add.ptr.i.i.i.i.i23 = getelementptr inbounds ptr, ptr %add.ptr29, i64 %idx.neg.i.i.i.i.i + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i23, ptr align 8 %1, i64 %sub.ptr.sub.i.i.i.i.i22, i1 false) br label %if.end65 if.else31: ; preds = %entry @@ -18184,8 +18179,8 @@ _ZSt4copyIPPNSt6chrono10time_pointINS0_3_V212steady_clockENS0_8durationIlSt5rati store i64 %add38, ptr %_M_map_size, align 8 br label %if.end65 -if.end65: ; preds = %if.then.i.i.i.i.i22, %if.else, %if.then.i.i.i.i.i, %if.then14, %_ZSt4copyIPPNSt6chrono10time_pointINS0_3_V212steady_clockENS0_8durationIlSt5ratioILl1ELl1000000000EEEEEESA_ET0_T_SC_SB_.exit30 - %__new_nstart.0 = phi ptr [ %add.ptr48, %_ZSt4copyIPPNSt6chrono10time_pointINS0_3_V212steady_clockENS0_8durationIlSt5ratioILl1ELl1000000000EEEEEESA_ET0_T_SC_SB_.exit30 ], [ %add.ptr9, %if.then14 ], [ %add.ptr9, %if.then.i.i.i.i.i ], [ %add.ptr9, %if.else ], [ %add.ptr9, %if.then.i.i.i.i.i22 ] +if.end65: ; preds = %if.then.i.i.i.i.i19, %if.else, %if.then.i.i.i.i.i, %if.then14, %_ZSt4copyIPPNSt6chrono10time_pointINS0_3_V212steady_clockENS0_8durationIlSt5ratioILl1ELl1000000000EEEEEESA_ET0_T_SC_SB_.exit30 + %__new_nstart.0 = phi ptr [ %add.ptr48, %_ZSt4copyIPPNSt6chrono10time_pointINS0_3_V212steady_clockENS0_8durationIlSt5ratioILl1ELl1000000000EEEEEESA_ET0_T_SC_SB_.exit30 ], [ %add.ptr9, %if.then14 ], [ %add.ptr9, %if.then.i.i.i.i.i ], [ %add.ptr9, %if.else ], [ %add.ptr9, %if.then.i.i.i.i.i19 ] store ptr %__new_nstart.0, ptr %_M_node3, align 8 %5 = load ptr, ptr %__new_nstart.0, align 8 %_M_first.i = getelementptr inbounds i8, ptr %this, i64 24 @@ -23773,16 +23768,16 @@ if.then.i.i.i.i.i: ; preds = %if.then14 br label %if.end65 if.else: ; preds = %if.then - br i1 %tobool.not.i.i.i.i.i, label %if.end65, label %if.then.i.i.i.i.i22 + br i1 %tobool.not.i.i.i.i.i, label %if.end65, label %if.then.i.i.i.i.i19 -if.then.i.i.i.i.i22: ; preds = %if.else - %sub.ptr.lhs.cast.i.i.i.i.i18 = ptrtoint ptr %add.ptr21 to i64 - %sub.ptr.sub.i.i.i.i.i20 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i18, %sub.ptr.rhs.cast - %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i20, 3 - %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i +if.then.i.i.i.i.i19: ; preds = %if.else %add.ptr29 = getelementptr inbounds ptr, ptr %add.ptr9, i64 %add - %add.ptr.i.i.i.i.i23 = getelementptr inbounds ptr, ptr %add.ptr29, i64 %.pre.i.i.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i23, ptr align 8 %1, i64 %sub.ptr.sub.i.i.i.i.i20, i1 false) + %sub.ptr.lhs.cast.i.i.i.i.i20 = ptrtoint ptr %add.ptr21 to i64 + %sub.ptr.sub.i.i.i.i.i22 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i20, %sub.ptr.rhs.cast + %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i22, 3 + %idx.neg.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i + %add.ptr.i.i.i.i.i23 = getelementptr inbounds ptr, ptr %add.ptr29, i64 %idx.neg.i.i.i.i.i + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i23, ptr align 8 %1, i64 %sub.ptr.sub.i.i.i.i.i22, i1 false) br label %if.end65 if.else31: ; preds = %entry @@ -23829,8 +23824,8 @@ _ZSt4copyIPPSt10shared_ptrIN2tf8TopologyEES5_ET0_T_S7_S6_.exit30: ; preds = %_ZN store i64 %add38, ptr %_M_map_size, align 8 br label %if.end65 -if.end65: ; preds = %if.then.i.i.i.i.i22, %if.else, %if.then.i.i.i.i.i, %if.then14, %_ZSt4copyIPPSt10shared_ptrIN2tf8TopologyEES5_ET0_T_S7_S6_.exit30 - %__new_nstart.0 = phi ptr [ %add.ptr48, %_ZSt4copyIPPSt10shared_ptrIN2tf8TopologyEES5_ET0_T_S7_S6_.exit30 ], [ %add.ptr9, %if.then14 ], [ %add.ptr9, %if.then.i.i.i.i.i ], [ %add.ptr9, %if.else ], [ %add.ptr9, %if.then.i.i.i.i.i22 ] +if.end65: ; preds = %if.then.i.i.i.i.i19, %if.else, %if.then.i.i.i.i.i, %if.then14, %_ZSt4copyIPPSt10shared_ptrIN2tf8TopologyEES5_ET0_T_S7_S6_.exit30 + %__new_nstart.0 = phi ptr [ %add.ptr48, %_ZSt4copyIPPSt10shared_ptrIN2tf8TopologyEES5_ET0_T_S7_S6_.exit30 ], [ %add.ptr9, %if.then14 ], [ %add.ptr9, %if.then.i.i.i.i.i ], [ %add.ptr9, %if.else ], [ %add.ptr9, %if.then.i.i.i.i.i19 ] store ptr %__new_nstart.0, ptr %_M_node3, align 8 %5 = load ptr, ptr %__new_nstart.0, align 8 %_M_first.i = getelementptr inbounds i8, ptr %this, i64 24 diff --git a/bench/taskflow/optimized/dependent_async.cpp.ll b/bench/taskflow/optimized/dependent_async.cpp.ll index 16315e65e82..39fd5691a8e 100644 --- a/bench/taskflow/optimized/dependent_async.cpp.ll +++ b/bench/taskflow/optimized/dependent_async.cpp.ll @@ -13600,17 +13600,11 @@ invoke.cont.i.i: ; preds = %invoke.cont19 br label %_ZNSt6vectorIPN2tf4NodeESaIS2_EE5clearEv.exit _ZNSt6vectorIPN2tf4NodeESaIS2_EE5clearEv.exit: ; preds = %invoke.cont19, %invoke.cont.i.i - %sub.ptr.lhs.cast.i134 = ptrtoint ptr %nodes.sroa.13.5 to i64 - %sub.ptr.rhs.cast.i135 = ptrtoint ptr %nodes.sroa.0.5 to i64 - %sub.ptr.sub.i136 = sub i64 %sub.ptr.lhs.cast.i134, %sub.ptr.rhs.cast.i135 - %sub.ptr.div.i137 = ashr exact i64 %sub.ptr.sub.i136, 3 %cmp24138.not = icmp eq ptr %nodes.sroa.13.5, %nodes.sroa.0.5 - br i1 %cmp24138.not, label %for.cond.preheader, label %while.body + br i1 %cmp24138.not, label %for.end, label %while.body -for.cond.preheader: ; preds = %if.end, %_ZNSt6vectorIPN2tf4NodeESaIS2_EE5clearEv.exit - %nodes.sroa.0.0.lcssa = phi ptr [ %nodes.sroa.0.5, %_ZNSt6vectorIPN2tf4NodeESaIS2_EE5clearEv.exit ], [ %nodes.sroa.0.1, %if.end ] - %sub.ptr.div.i.lcssa = phi i64 [ %sub.ptr.div.i137, %_ZNSt6vectorIPN2tf4NodeESaIS2_EE5clearEv.exit ], [ %sub.ptr.div.i, %if.end ] - %cmp55144.not = icmp eq i64 %sub.ptr.div.i.lcssa, 0 +for.cond.preheader: ; preds = %if.end + %cmp55144.not = icmp eq ptr %nodes.sroa.13.1, %nodes.sroa.0.1 br i1 %cmp55144.not, label %for.end, label %for.body while.body: ; preds = %_ZNSt6vectorIPN2tf4NodeESaIS2_EE5clearEv.exit, %if.end @@ -13740,22 +13734,23 @@ if.end: ; preds = %invoke.cont.i.i35, for.body: ; preds = %for.cond.preheader, %for.inc %i.1145 = phi i64 [ %inc58, %for.inc ], [ 0, %for.cond.preheader ] - %add.ptr.i42 = getelementptr inbounds ptr, ptr %nodes.sroa.0.0.lcssa, i64 %i.1145 + %add.ptr.i42 = getelementptr inbounds ptr, ptr %nodes.sroa.0.1, i64 %i.1145 %20 = load ptr, ptr %add.ptr.i42, align 8 invoke void @_ZN2tf10ObjectPoolINS_4NodeELm65536EE7recycleEPS1_(ptr noundef nonnull align 8 dereferenceable(88) @_ZN2tf9node_poolE, ptr noundef %20) to label %for.inc unwind label %terminate.lpad.loopexit for.inc: ; preds = %for.body %inc58 = add nuw i64 %i.1145, 1 - %exitcond.not = icmp eq i64 %inc58, %sub.ptr.div.i.lcssa - br i1 %exitcond.not, label %if.then.i.i.i, label %for.body, !llvm.loop !222 + %exitcond.not = icmp eq i64 %inc58, %sub.ptr.div.i + br i1 %exitcond.not, label %for.end, label %for.body, !llvm.loop !222 -for.end: ; preds = %for.cond.preheader - %tobool.not.i.i.i = icmp eq ptr %nodes.sroa.0.0.lcssa, null +for.end: ; preds = %for.inc, %_ZNSt6vectorIPN2tf4NodeESaIS2_EE5clearEv.exit, %for.cond.preheader + %nodes.sroa.0.0.lcssa153 = phi ptr [ %nodes.sroa.0.1, %for.cond.preheader ], [ %nodes.sroa.0.5, %_ZNSt6vectorIPN2tf4NodeESaIS2_EE5clearEv.exit ], [ %nodes.sroa.0.1, %for.inc ] + %tobool.not.i.i.i = icmp eq ptr %nodes.sroa.0.0.lcssa153, null br i1 %tobool.not.i.i.i, label %if.end59thread-pre-split, label %if.then.i.i.i -if.then.i.i.i: ; preds = %for.inc, %for.end - tail call void @_ZdlPv(ptr noundef nonnull %nodes.sroa.0.0.lcssa) #36 +if.then.i.i.i: ; preds = %for.end + tail call void @_ZdlPv(ptr noundef nonnull %nodes.sroa.0.0.lcssa153) #36 br label %if.end59thread-pre-split if.end59thread-pre-split: ; preds = %for.end, %if.then.i.i.i @@ -15455,8 +15450,8 @@ _ZN2tf15SmallVectorImplIPNS_4NodeEE6appendISt13move_iteratorIPS2_EEEvT_S8_.exit: if.then.i.i.i.i.i: ; preds = %_ZN2tf15SmallVectorImplIPNS_4NodeEE6appendISt13move_iteratorIPS2_EEEvT_S8_.exit %sub.ptr.sub.i.i.i.i.i82 = sub i64 %sub.ptr.rhs.cast.i.i.i.i49, %sub.ptr.rhs.cast18 %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i82, 3 - %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i - %add.ptr.i.i.i.i.i = getelementptr inbounds ptr, ptr %9, i64 %.pre.i.i.i.i.i + %idx.neg.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i + %add.ptr.i.i.i.i.i = getelementptr inbounds ptr, ptr %9, i64 %idx.neg.i.i.i.i.i tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i, ptr align 8 %add.ptr15, i64 %sub.ptr.sub.i.i.i.i.i82, i1 false) br label %_ZSt13move_backwardIPPN2tf4NodeES3_ET0_T_S5_S4_.exit @@ -17690,7 +17685,7 @@ _ZN2tf14TFProfObserver7SummaryC2Ev.exit: ; preds = %arrayctor.loop.i.i %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i = sdiv exact i64 %sub.ptr.sub.i, 24 %cmp185.not = icmp eq ptr %0, %1 - br i1 %cmp185.not, label %for.end, label %for.body.preheader + br i1 %cmp185.not, label %if.end161, label %for.body.preheader for.body.preheader: ; preds = %_ZN2tf14TFProfObserver7SummaryC2Ev.exit %umax = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i, i64 1) @@ -17710,9 +17705,8 @@ for.inc: ; preds = %for.body %exitcond.not = icmp eq i64 %inc, %umax br i1 %exitcond.not, label %for.end, label %for.body, !llvm.loop !257 -for.end: ; preds = %for.inc, %for.body, %_ZN2tf14TFProfObserver7SummaryC2Ev.exit - %first.0.lcssa = phi i64 [ 0, %_ZN2tf14TFProfObserver7SummaryC2Ev.exit ], [ %first.0186, %for.body ], [ %umax, %for.inc ] - %_timeline.le = getelementptr inbounds i8, ptr %this, i64 8 +for.end: ; preds = %for.inc, %for.body + %first.0.lcssa = phi i64 [ %umax, %for.inc ], [ %first.0186, %for.body ] %cmp17241 = icmp ult i64 %first.0.lcssa, %sub.ptr.div.i br i1 %cmp17241, label %for.cond19.preheader.lr.ph, label %if.end161 @@ -18027,13 +18021,14 @@ invoke.cont157: ; preds = %end_of_summary %div.i.i126 = sdiv i64 %sub.i.i125, 1000 br label %if.end161 -if.end161: ; preds = %end_of_summary, %for.end, %invoke.cont157 - %view.0 = phi i64 [ %div.i.i126, %invoke.cont157 ], [ 0, %end_of_summary ], [ 0, %for.end ] +if.end161: ; preds = %_ZN2tf14TFProfObserver7SummaryC2Ev.exit, %end_of_summary, %for.end, %invoke.cont157 + %view.0 = phi i64 [ %div.i.i126, %invoke.cont157 ], [ 0, %end_of_summary ], [ 0, %for.end ], [ 0, %_ZN2tf14TFProfObserver7SummaryC2Ev.exit ] %call163 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %os, ptr noundef nonnull @.str.43) to label %invoke.cont162 unwind label %lpad.loopexit.split-lp invoke.cont162: ; preds = %if.end161 - %45 = load i64, ptr %_timeline.le, align 8 + %_timeline.le276 = getelementptr inbounds i8, ptr %this, i64 8 + %45 = load i64, ptr %_timeline.le276, align 8 %call166 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %call163, i64 noundef %45) to label %invoke.cont165 unwind label %lpad.loopexit.split-lp @@ -20474,16 +20469,16 @@ if.then.i.i.i.i.i: ; preds = %if.then14 br label %if.end65 if.else: ; preds = %if.then - br i1 %tobool.not.i.i.i.i.i, label %if.end65, label %if.then.i.i.i.i.i22 + br i1 %tobool.not.i.i.i.i.i, label %if.end65, label %if.then.i.i.i.i.i19 -if.then.i.i.i.i.i22: ; preds = %if.else - %sub.ptr.lhs.cast.i.i.i.i.i18 = ptrtoint ptr %add.ptr21 to i64 - %sub.ptr.sub.i.i.i.i.i20 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i18, %sub.ptr.rhs.cast - %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i20, 3 - %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i +if.then.i.i.i.i.i19: ; preds = %if.else %add.ptr29 = getelementptr inbounds ptr, ptr %add.ptr9, i64 %add - %add.ptr.i.i.i.i.i23 = getelementptr inbounds ptr, ptr %add.ptr29, i64 %.pre.i.i.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i23, ptr align 8 %1, i64 %sub.ptr.sub.i.i.i.i.i20, i1 false) + %sub.ptr.lhs.cast.i.i.i.i.i20 = ptrtoint ptr %add.ptr21 to i64 + %sub.ptr.sub.i.i.i.i.i22 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i20, %sub.ptr.rhs.cast + %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i22, 3 + %idx.neg.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i + %add.ptr.i.i.i.i.i23 = getelementptr inbounds ptr, ptr %add.ptr29, i64 %idx.neg.i.i.i.i.i + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i23, ptr align 8 %1, i64 %sub.ptr.sub.i.i.i.i.i22, i1 false) br label %if.end65 if.else31: ; preds = %entry @@ -20530,8 +20525,8 @@ _ZSt4copyIPPNSt6chrono10time_pointINS0_3_V212steady_clockENS0_8durationIlSt5rati store i64 %add38, ptr %_M_map_size, align 8 br label %if.end65 -if.end65: ; preds = %if.then.i.i.i.i.i22, %if.else, %if.then.i.i.i.i.i, %if.then14, %_ZSt4copyIPPNSt6chrono10time_pointINS0_3_V212steady_clockENS0_8durationIlSt5ratioILl1ELl1000000000EEEEEESA_ET0_T_SC_SB_.exit30 - %__new_nstart.0 = phi ptr [ %add.ptr48, %_ZSt4copyIPPNSt6chrono10time_pointINS0_3_V212steady_clockENS0_8durationIlSt5ratioILl1ELl1000000000EEEEEESA_ET0_T_SC_SB_.exit30 ], [ %add.ptr9, %if.then14 ], [ %add.ptr9, %if.then.i.i.i.i.i ], [ %add.ptr9, %if.else ], [ %add.ptr9, %if.then.i.i.i.i.i22 ] +if.end65: ; preds = %if.then.i.i.i.i.i19, %if.else, %if.then.i.i.i.i.i, %if.then14, %_ZSt4copyIPPNSt6chrono10time_pointINS0_3_V212steady_clockENS0_8durationIlSt5ratioILl1ELl1000000000EEEEEESA_ET0_T_SC_SB_.exit30 + %__new_nstart.0 = phi ptr [ %add.ptr48, %_ZSt4copyIPPNSt6chrono10time_pointINS0_3_V212steady_clockENS0_8durationIlSt5ratioILl1ELl1000000000EEEEEESA_ET0_T_SC_SB_.exit30 ], [ %add.ptr9, %if.then14 ], [ %add.ptr9, %if.then.i.i.i.i.i ], [ %add.ptr9, %if.else ], [ %add.ptr9, %if.then.i.i.i.i.i19 ] store ptr %__new_nstart.0, ptr %_M_node3, align 8 %5 = load ptr, ptr %__new_nstart.0, align 8 %_M_first.i = getelementptr inbounds i8, ptr %this, i64 24 diff --git a/bench/tinyobjloader/optimized/tiny_obj_loader.cc.ll b/bench/tinyobjloader/optimized/tiny_obj_loader.cc.ll index ee8e3672464..bd333044182 100644 --- a/bench/tinyobjloader/optimized/tiny_obj_loader.cc.ll +++ b/bench/tinyobjloader/optimized/tiny_obj_loader.cc.ll @@ -12041,16 +12041,12 @@ for.cond583.preheader.lr.ph: ; preds = %if.end574 br label %for.cond583.preheader for.cond583.preheader: ; preds = %for.cond583.preheader.lr.ph, %_ZNSt6vectorIiSaIiEE9push_backEOi.exit - %275 = phi ptr [ %273, %for.cond583.preheader.lr.ph ], [ %297, %_ZNSt6vectorIiSaIiEE9push_backEOi.exit ] + %275 = phi ptr [ %273, %for.cond583.preheader.lr.ph ], [ %298, %_ZNSt6vectorIiSaIiEE9push_backEOi.exit ] %i577.01854 = phi i64 [ 0, %for.cond583.preheader.lr.ph ], [ %inc614, %_ZNSt6vectorIiSaIiEE9push_backEOi.exit ] %add.ptr.i14991840 = getelementptr inbounds %"struct.tinyobj::__line_t", ptr %275, i64 %i577.01854 %_M_finish.i15001841 = getelementptr inbounds i8, ptr %add.ptr.i14991840, i64 8 %276 = load ptr, ptr %_M_finish.i15001841, align 8 %277 = load ptr, ptr %add.ptr.i14991840, align 8 - %sub.ptr.lhs.cast.i15011842 = ptrtoint ptr %276 to i64 - %sub.ptr.rhs.cast.i15021843 = ptrtoint ptr %277 to i64 - %sub.ptr.sub.i15031844 = sub i64 %sub.ptr.lhs.cast.i15011842, %sub.ptr.rhs.cast.i15021843 - %sub.ptr.div.i15041845 = sdiv exact i64 %sub.ptr.sub.i15031844, 12 %cmp5881846.not = icmp eq ptr %276, %277 br i1 %cmp5881846.not, label %for.end605, label %for.body589.preheader @@ -12155,27 +12151,30 @@ _ZNSt6vectorIN7tinyobj7index_tESaIS1_EE9push_backERKS1_.exit1540: ; preds = %if. %sub.ptr.sub.i1503 = sub i64 %sub.ptr.lhs.cast.i1501, %sub.ptr.rhs.cast.i1502 %sub.ptr.div.i1504 = sdiv exact i64 %sub.ptr.sub.i1503, 12 %cmp588 = icmp ult i64 %inc604, %sub.ptr.div.i1504 - br i1 %cmp588, label %for.body589, label %for.end605, !llvm.loop !63 - -for.end605: ; preds = %_ZNSt6vectorIN7tinyobj7index_tESaIS1_EE9push_backERKS1_.exit1540, %for.cond583.preheader - %sub.ptr.div.i1504.lcssa = phi i64 [ %sub.ptr.div.i15041845, %for.cond583.preheader ], [ %sub.ptr.div.i1504, %_ZNSt6vectorIN7tinyobj7index_tESaIS1_EE9push_backERKS1_.exit1540 ] - %conv612 = trunc i64 %sub.ptr.div.i1504.lcssa to i32 - %291 = load ptr, ptr %_M_finish.i.i1547, align 8 - %292 = load ptr, ptr %_M_end_of_storage.i.i1548, align 8 - %cmp.not.i.i1549 = icmp eq ptr %291, %292 + br i1 %cmp588, label %for.body589, label %for.end605.loopexit, !llvm.loop !63 + +for.end605.loopexit: ; preds = %_ZNSt6vectorIN7tinyobj7index_tESaIS1_EE9push_backERKS1_.exit1540 + %291 = trunc i64 %sub.ptr.div.i1504 to i32 + br label %for.end605 + +for.end605: ; preds = %for.end605.loopexit, %for.cond583.preheader + %sub.ptr.div.i1504.lcssa = phi i32 [ 0, %for.cond583.preheader ], [ %291, %for.end605.loopexit ] + %292 = load ptr, ptr %_M_finish.i.i1547, align 8 + %293 = load ptr, ptr %_M_end_of_storage.i.i1548, align 8 + %cmp.not.i.i1549 = icmp eq ptr %292, %293 br i1 %cmp.not.i.i1549, label %if.else.i.i1552, label %if.then.i.i1550 if.then.i.i1550: ; preds = %for.end605 - store i32 %conv612, ptr %291, align 4 - %293 = load ptr, ptr %_M_finish.i.i1547, align 8 - %incdec.ptr.i.i1551 = getelementptr inbounds i8, ptr %293, i64 4 + store i32 %sub.ptr.div.i1504.lcssa, ptr %292, align 4 + %294 = load ptr, ptr %_M_finish.i.i1547, align 8 + %incdec.ptr.i.i1551 = getelementptr inbounds i8, ptr %294, i64 4 store ptr %incdec.ptr.i.i1551, ptr %_M_finish.i.i1547, align 8 br label %_ZNSt6vectorIiSaIiEE9push_backEOi.exit if.else.i.i1552: ; preds = %for.end605 - %294 = load ptr, ptr %num_line_vertices, align 8 - %sub.ptr.lhs.cast.i.i.i.i.i1553 = ptrtoint ptr %291 to i64 - %sub.ptr.rhs.cast.i.i.i.i.i1554 = ptrtoint ptr %294 to i64 + %295 = load ptr, ptr %num_line_vertices, align 8 + %sub.ptr.lhs.cast.i.i.i.i.i1553 = ptrtoint ptr %292 to i64 + %sub.ptr.rhs.cast.i.i.i.i.i1554 = ptrtoint ptr %295 to i64 %sub.ptr.sub.i.i.i.i.i1555 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i1553, %sub.ptr.rhs.cast.i.i.i.i.i1554 %cmp.i.i.i.i1556 = icmp eq i64 %sub.ptr.sub.i.i.i.i.i1555, 9223372036854775804 br i1 %cmp.i.i.i.i1556, label %if.then.i.i.i.i1572, label %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i.i @@ -12189,8 +12188,8 @@ _ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i.i: ; preds = %if.else.i.i1552 %.sroa.speculated.i.i.i.i1557 = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i.i.i.i, i64 1) %add.i.i.i.i1558 = add nsw i64 %.sroa.speculated.i.i.i.i1557, %sub.ptr.div.i.i.i.i.i %cmp7.i.i.i.i1559 = icmp ult i64 %add.i.i.i.i1558, %sub.ptr.div.i.i.i.i.i - %295 = tail call i64 @llvm.umin.i64(i64 %add.i.i.i.i1558, i64 2305843009213693951) - %cond.i.i.i.i1560 = select i1 %cmp7.i.i.i.i1559, i64 2305843009213693951, i64 %295 + %296 = tail call i64 @llvm.umin.i64(i64 %add.i.i.i.i1558, i64 2305843009213693951) + %cond.i.i.i.i1560 = select i1 %cmp7.i.i.i.i1559, i64 2305843009213693951, i64 %296 %cmp.not.i.i.i.i1561 = icmp eq i64 %cond.i.i.i.i1560, 0 br i1 %cmp.not.i.i.i.i1561, label %_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i.i, label %cond.true.i.i.i.i1562 @@ -12202,22 +12201,22 @@ cond.true.i.i.i.i1562: ; preds = %_ZNKSt6vectorIiSaIi _ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i.i: ; preds = %cond.true.i.i.i.i1562, %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i.i %cond.i10.i.i.i1564 = phi ptr [ %call5.i.i.i.i.i.i1563, %cond.true.i.i.i.i1562 ], [ null, %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i.i ] %add.ptr.i.i.i1565 = getelementptr inbounds i32, ptr %cond.i10.i.i.i1564, i64 %sub.ptr.div.i.i.i.i.i - store i32 %conv612, ptr %add.ptr.i.i.i1565, align 4 + store i32 %sub.ptr.div.i1504.lcssa, ptr %add.ptr.i.i.i1565, align 4 %cmp.i.i.i.i.i.i1566 = icmp sgt i64 %sub.ptr.sub.i.i.i.i.i1555, 0 br i1 %cmp.i.i.i.i.i.i1566, label %if.then.i.i.i.i.i.i1571, label %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit17.i.i.i if.then.i.i.i.i.i.i1571: ; preds = %_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %cond.i10.i.i.i1564, ptr align 4 %294, i64 %sub.ptr.sub.i.i.i.i.i1555, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %cond.i10.i.i.i1564, ptr align 4 %295, i64 %sub.ptr.sub.i.i.i.i.i1555, i1 false) br label %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit17.i.i.i _ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit17.i.i.i: ; preds = %if.then.i.i.i.i.i.i1571, %_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i.i %add.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %cond.i10.i.i.i1564, i64 %sub.ptr.sub.i.i.i.i.i1555 %incdec.ptr.i.i.i1567 = getelementptr inbounds i8, ptr %add.ptr.i.i.i.i.i.i, i64 4 - %tobool.not.i.i.i.i1568 = icmp eq ptr %294, null + %tobool.not.i.i.i.i1568 = icmp eq ptr %295, null br i1 %tobool.not.i.i.i.i1568, label %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i.i, label %if.then.i18.i.i.i1569 if.then.i18.i.i.i1569: ; preds = %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit17.i.i.i - tail call void @_ZdlPv(ptr noundef nonnull %294) #29 + tail call void @_ZdlPv(ptr noundef nonnull %295) #29 br label %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i.i _ZNSt6vectorIiSaIiEE17_M_realloc_insertIJiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i.i: ; preds = %if.then.i18.i.i.i1569, %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit17.i.i.i @@ -12229,10 +12228,10 @@ _ZNSt6vectorIiSaIiEE17_M_realloc_insertIJiEEEvN9__gnu_cxx17__normal_iteratorIPiS _ZNSt6vectorIiSaIiEE9push_backEOi.exit: ; preds = %if.then.i.i1550, %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i.i %inc614 = add nuw i64 %i577.01854, 1 - %296 = load ptr, ptr %_M_finish.i.i1492, align 8 - %297 = load ptr, ptr %lineGroup, align 8 - %sub.ptr.lhs.cast.i1495 = ptrtoint ptr %296 to i64 - %sub.ptr.rhs.cast.i1496 = ptrtoint ptr %297 to i64 + %297 = load ptr, ptr %_M_finish.i.i1492, align 8 + %298 = load ptr, ptr %lineGroup, align 8 + %sub.ptr.lhs.cast.i1495 = ptrtoint ptr %297 to i64 + %sub.ptr.rhs.cast.i1496 = ptrtoint ptr %298 to i64 %sub.ptr.sub.i1497 = sub i64 %sub.ptr.lhs.cast.i1495, %sub.ptr.rhs.cast.i1496 %sub.ptr.div.i1498 = sdiv exact i64 %sub.ptr.sub.i1497, 24 %cmp581 = icmp ult i64 %inc614, %sub.ptr.div.i1498 @@ -12240,10 +12239,10 @@ _ZNSt6vectorIiSaIiEE9push_backEOi.exit: ; preds = %if.then.i.i1550, %_ if.end616: ; preds = %_ZNSt6vectorIiSaIiEE9push_backEOi.exit, %if.end574 %pointsGroup = getelementptr inbounds i8, ptr %prim_group, i64 48 - %298 = load ptr, ptr %pointsGroup, align 8 + %299 = load ptr, ptr %pointsGroup, align 8 %_M_finish.i.i1573 = getelementptr inbounds i8, ptr %prim_group, i64 56 - %299 = load ptr, ptr %_M_finish.i.i1573, align 8 - %cmp.i.i1574 = icmp eq ptr %298, %299 + %300 = load ptr, ptr %_M_finish.i.i1573, align 8 + %cmp.i.i1574 = icmp eq ptr %299, %300 br i1 %cmp.i.i1574, label %return, label %for.cond626.preheader.lr.ph for.cond626.preheader.lr.ph: ; preds = %if.end616 @@ -12253,14 +12252,14 @@ for.cond626.preheader.lr.ph: ; preds = %if.end616 br label %for.cond626.preheader for.cond626.preheader: ; preds = %for.cond626.preheader.lr.ph, %for.inc649 - %300 = phi ptr [ %298, %for.cond626.preheader.lr.ph ], [ %317, %for.inc649 ] %301 = phi ptr [ %299, %for.cond626.preheader.lr.ph ], [ %318, %for.inc649 ] + %302 = phi ptr [ %300, %for.cond626.preheader.lr.ph ], [ %319, %for.inc649 ] %i619.01868 = phi i64 [ 0, %for.cond626.preheader.lr.ph ], [ %inc650, %for.inc649 ] - %add.ptr.i15801855 = getelementptr inbounds %"struct.tinyobj::__points_t", ptr %300, i64 %i619.01868 + %add.ptr.i15801855 = getelementptr inbounds %"struct.tinyobj::__points_t", ptr %301, i64 %i619.01868 %_M_finish.i15811856 = getelementptr inbounds i8, ptr %add.ptr.i15801855, i64 8 - %302 = load ptr, ptr %_M_finish.i15811856, align 8 - %303 = load ptr, ptr %add.ptr.i15801855, align 8 - %cmp6311861.not = icmp eq ptr %302, %303 + %303 = load ptr, ptr %_M_finish.i15811856, align 8 + %304 = load ptr, ptr %add.ptr.i15801855, align 8 + %cmp6311861.not = icmp eq ptr %303, %304 br i1 %cmp6311861.not, label %for.inc649, label %for.body632.preheader for.body632.preheader: ; preds = %for.cond626.preheader @@ -12268,34 +12267,34 @@ for.body632.preheader: ; preds = %for.cond626.prehead br label %for.body632 for.body632: ; preds = %for.body632.preheader, %_ZNSt6vectorIN7tinyobj7index_tESaIS1_EE9push_backERKS1_.exit1621 - %304 = phi ptr [ %313, %_ZNSt6vectorIN7tinyobj7index_tESaIS1_EE9push_backERKS1_.exit1621 ], [ %.pre1932, %for.body632.preheader ] - %305 = phi ptr [ %316, %_ZNSt6vectorIN7tinyobj7index_tESaIS1_EE9push_backERKS1_.exit1621 ], [ %303, %for.body632.preheader ] + %305 = phi ptr [ %314, %_ZNSt6vectorIN7tinyobj7index_tESaIS1_EE9push_backERKS1_.exit1621 ], [ %.pre1932, %for.body632.preheader ] + %306 = phi ptr [ %317, %_ZNSt6vectorIN7tinyobj7index_tESaIS1_EE9push_backERKS1_.exit1621 ], [ %304, %for.body632.preheader ] %j625.01862 = phi i64 [ %inc647, %_ZNSt6vectorIN7tinyobj7index_tESaIS1_EE9push_backERKS1_.exit1621 ], [ 0, %for.body632.preheader ] - %add.ptr.i1587 = getelementptr inbounds %"struct.tinyobj::vertex_index_t", ptr %305, i64 %j625.01862 - %306 = load i32, ptr %add.ptr.i1587, align 4 + %add.ptr.i1587 = getelementptr inbounds %"struct.tinyobj::vertex_index_t", ptr %306, i64 %j625.01862 + %307 = load i32, ptr %add.ptr.i1587, align 4 %vn_idx641 = getelementptr inbounds i8, ptr %add.ptr.i1587, i64 8 - %307 = load i32, ptr %vn_idx641, align 4 + %308 = load i32, ptr %vn_idx641, align 4 %vt_idx643 = getelementptr inbounds i8, ptr %add.ptr.i1587, i64 4 - %308 = load i32, ptr %vt_idx643, align 4 - %309 = load ptr, ptr %_M_end_of_storage.i1589, align 8 - %cmp.not.i1590 = icmp eq ptr %304, %309 + %309 = load i32, ptr %vt_idx643, align 4 + %310 = load ptr, ptr %_M_end_of_storage.i1589, align 8 + %cmp.not.i1590 = icmp eq ptr %305, %310 br i1 %cmp.not.i1590, label %if.else.i1593, label %if.then.i1591 if.then.i1591: ; preds = %for.body632 - store i32 %306, ptr %304, align 4 - %idx638.sroa.3.0..sroa_idx = getelementptr inbounds i8, ptr %304, i64 4 - store i32 %307, ptr %idx638.sroa.3.0..sroa_idx, align 4 - %idx638.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %304, i64 8 - store i32 %308, ptr %idx638.sroa.4.0..sroa_idx, align 4 - %310 = load ptr, ptr %_M_finish.i1588, align 8 - %incdec.ptr.i1592 = getelementptr inbounds i8, ptr %310, i64 12 + store i32 %307, ptr %305, align 4 + %idx638.sroa.3.0..sroa_idx = getelementptr inbounds i8, ptr %305, i64 4 + store i32 %308, ptr %idx638.sroa.3.0..sroa_idx, align 4 + %idx638.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %305, i64 8 + store i32 %309, ptr %idx638.sroa.4.0..sroa_idx, align 4 + %311 = load ptr, ptr %_M_finish.i1588, align 8 + %incdec.ptr.i1592 = getelementptr inbounds i8, ptr %311, i64 12 store ptr %incdec.ptr.i1592, ptr %_M_finish.i1588, align 8 br label %_ZNSt6vectorIN7tinyobj7index_tESaIS1_EE9push_backERKS1_.exit1621 if.else.i1593: ; preds = %for.body632 - %311 = load ptr, ptr %points, align 8 - %sub.ptr.lhs.cast.i.i.i.i1594 = ptrtoint ptr %304 to i64 - %sub.ptr.rhs.cast.i.i.i.i1595 = ptrtoint ptr %311 to i64 + %312 = load ptr, ptr %points, align 8 + %sub.ptr.lhs.cast.i.i.i.i1594 = ptrtoint ptr %305 to i64 + %sub.ptr.rhs.cast.i.i.i.i1595 = ptrtoint ptr %312 to i64 %sub.ptr.sub.i.i.i.i1596 = sub i64 %sub.ptr.lhs.cast.i.i.i.i1594, %sub.ptr.rhs.cast.i.i.i.i1595 %cmp.i.i.i1597 = icmp eq i64 %sub.ptr.sub.i.i.i.i1596, 9223372036854775800 br i1 %cmp.i.i.i1597, label %if.then.i.i.i1620, label %_ZNKSt6vectorIN7tinyobj7index_tESaIS1_EE12_M_check_lenEmPKc.exit.i.i1598 @@ -12309,8 +12308,8 @@ _ZNKSt6vectorIN7tinyobj7index_tESaIS1_EE12_M_check_lenEmPKc.exit.i.i1598: ; pred %.sroa.speculated.i.i.i1600 = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i.i.i1599, i64 1) %add.i.i.i1601 = add nsw i64 %.sroa.speculated.i.i.i1600, %sub.ptr.div.i.i.i.i1599 %cmp7.i.i.i1602 = icmp ult i64 %add.i.i.i1601, %sub.ptr.div.i.i.i.i1599 - %312 = tail call i64 @llvm.umin.i64(i64 %add.i.i.i1601, i64 768614336404564650) - %cond.i.i.i1603 = select i1 %cmp7.i.i.i1602, i64 768614336404564650, i64 %312 + %313 = tail call i64 @llvm.umin.i64(i64 %add.i.i.i1601, i64 768614336404564650) + %cond.i.i.i1603 = select i1 %cmp7.i.i.i1602, i64 768614336404564650, i64 %313 %cmp.not.i.i.i1604 = icmp eq i64 %cond.i.i.i1603, 0 br i1 %cmp.not.i.i.i1604, label %_ZNSt12_Vector_baseIN7tinyobj7index_tESaIS1_EE11_M_allocateEm.exit.i.i1608, label %cond.true.i.i.i1605 @@ -12322,26 +12321,26 @@ cond.true.i.i.i1605: ; preds = %_ZNKSt6vectorIN7tin _ZNSt12_Vector_baseIN7tinyobj7index_tESaIS1_EE11_M_allocateEm.exit.i.i1608: ; preds = %cond.true.i.i.i1605, %_ZNKSt6vectorIN7tinyobj7index_tESaIS1_EE12_M_check_lenEmPKc.exit.i.i1598 %cond.i10.i.i1609 = phi ptr [ %call5.i.i.i.i.i1607, %cond.true.i.i.i1605 ], [ null, %_ZNKSt6vectorIN7tinyobj7index_tESaIS1_EE12_M_check_lenEmPKc.exit.i.i1598 ] %add.ptr.i.i1610 = getelementptr inbounds %"struct.tinyobj::index_t", ptr %cond.i10.i.i1609, i64 %sub.ptr.div.i.i.i.i1599 - store i32 %306, ptr %add.ptr.i.i1610, align 4 + store i32 %307, ptr %add.ptr.i.i1610, align 4 %idx638.sroa.3.0.add.ptr.i.i1610.sroa_idx = getelementptr inbounds i8, ptr %add.ptr.i.i1610, i64 4 - store i32 %307, ptr %idx638.sroa.3.0.add.ptr.i.i1610.sroa_idx, align 4 + store i32 %308, ptr %idx638.sroa.3.0.add.ptr.i.i1610.sroa_idx, align 4 %idx638.sroa.4.0.add.ptr.i.i1610.sroa_idx = getelementptr inbounds i8, ptr %add.ptr.i.i1610, i64 8 - store i32 %308, ptr %idx638.sroa.4.0.add.ptr.i.i1610.sroa_idx, align 4 + store i32 %309, ptr %idx638.sroa.4.0.add.ptr.i.i1610.sroa_idx, align 4 %cmp.i.i.i.i.i1611 = icmp sgt i64 %sub.ptr.sub.i.i.i.i1596, 0 br i1 %cmp.i.i.i.i.i1611, label %if.then.i.i.i.i.i1619, label %_ZNSt6vectorIN7tinyobj7index_tESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit17.i.i1612 if.then.i.i.i.i.i1619: ; preds = %_ZNSt12_Vector_baseIN7tinyobj7index_tESaIS1_EE11_M_allocateEm.exit.i.i1608 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %cond.i10.i.i1609, ptr align 4 %311, i64 %sub.ptr.sub.i.i.i.i1596, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %cond.i10.i.i1609, ptr align 4 %312, i64 %sub.ptr.sub.i.i.i.i1596, i1 false) br label %_ZNSt6vectorIN7tinyobj7index_tESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit17.i.i1612 _ZNSt6vectorIN7tinyobj7index_tESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit17.i.i1612: ; preds = %if.then.i.i.i.i.i1619, %_ZNSt12_Vector_baseIN7tinyobj7index_tESaIS1_EE11_M_allocateEm.exit.i.i1608 %add.ptr.i.i.i.i.i1613 = getelementptr inbounds i8, ptr %cond.i10.i.i1609, i64 %sub.ptr.sub.i.i.i.i1596 %incdec.ptr.i.i1614 = getelementptr inbounds i8, ptr %add.ptr.i.i.i.i.i1613, i64 12 - %tobool.not.i.i.i1615 = icmp eq ptr %311, null + %tobool.not.i.i.i1615 = icmp eq ptr %312, null br i1 %tobool.not.i.i.i1615, label %_ZNSt6vectorIN7tinyobj7index_tESaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit.i1617, label %if.then.i18.i.i1616 if.then.i18.i.i1616: ; preds = %_ZNSt6vectorIN7tinyobj7index_tESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit17.i.i1612 - tail call void @_ZdlPv(ptr noundef nonnull %311) #29 + tail call void @_ZdlPv(ptr noundef nonnull %312) #29 br label %_ZNSt6vectorIN7tinyobj7index_tESaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit.i1617 _ZNSt6vectorIN7tinyobj7index_tESaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit.i1617: ; preds = %if.then.i18.i.i1616, %_ZNSt6vectorIN7tinyobj7index_tESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit17.i.i1612 @@ -12352,15 +12351,15 @@ _ZNSt6vectorIN7tinyobj7index_tESaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__gnu_cxx br label %_ZNSt6vectorIN7tinyobj7index_tESaIS1_EE9push_backERKS1_.exit1621 _ZNSt6vectorIN7tinyobj7index_tESaIS1_EE9push_backERKS1_.exit1621: ; preds = %if.then.i1591, %_ZNSt6vectorIN7tinyobj7index_tESaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit.i1617 - %313 = phi ptr [ %incdec.ptr.i1592, %if.then.i1591 ], [ %incdec.ptr.i.i1614, %_ZNSt6vectorIN7tinyobj7index_tESaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit.i1617 ] + %314 = phi ptr [ %incdec.ptr.i1592, %if.then.i1591 ], [ %incdec.ptr.i.i1614, %_ZNSt6vectorIN7tinyobj7index_tESaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit.i1617 ] %inc647 = add nuw i64 %j625.01862, 1 - %314 = load ptr, ptr %pointsGroup, align 8 - %add.ptr.i1580 = getelementptr inbounds %"struct.tinyobj::__points_t", ptr %314, i64 %i619.01868 + %315 = load ptr, ptr %pointsGroup, align 8 + %add.ptr.i1580 = getelementptr inbounds %"struct.tinyobj::__points_t", ptr %315, i64 %i619.01868 %_M_finish.i1581 = getelementptr inbounds i8, ptr %add.ptr.i1580, i64 8 - %315 = load ptr, ptr %_M_finish.i1581, align 8 - %316 = load ptr, ptr %add.ptr.i1580, align 8 - %sub.ptr.lhs.cast.i1582 = ptrtoint ptr %315 to i64 - %sub.ptr.rhs.cast.i1583 = ptrtoint ptr %316 to i64 + %316 = load ptr, ptr %_M_finish.i1581, align 8 + %317 = load ptr, ptr %add.ptr.i1580, align 8 + %sub.ptr.lhs.cast.i1582 = ptrtoint ptr %316 to i64 + %sub.ptr.rhs.cast.i1583 = ptrtoint ptr %317 to i64 %sub.ptr.sub.i1584 = sub i64 %sub.ptr.lhs.cast.i1582, %sub.ptr.rhs.cast.i1583 %sub.ptr.div.i1585 = sdiv exact i64 %sub.ptr.sub.i1584, 12 %cmp631 = icmp ult i64 %inc647, %sub.ptr.div.i1585 @@ -12371,11 +12370,11 @@ for.inc649.loopexit: ; preds = %_ZNSt6vectorIN7tiny br label %for.inc649 for.inc649: ; preds = %for.inc649.loopexit, %for.cond626.preheader - %317 = phi ptr [ %314, %for.inc649.loopexit ], [ %300, %for.cond626.preheader ] - %318 = phi ptr [ %.pre1933, %for.inc649.loopexit ], [ %301, %for.cond626.preheader ] + %318 = phi ptr [ %315, %for.inc649.loopexit ], [ %301, %for.cond626.preheader ] + %319 = phi ptr [ %.pre1933, %for.inc649.loopexit ], [ %302, %for.cond626.preheader ] %inc650 = add nuw i64 %i619.01868, 1 - %sub.ptr.lhs.cast.i1576 = ptrtoint ptr %318 to i64 - %sub.ptr.rhs.cast.i1577 = ptrtoint ptr %317 to i64 + %sub.ptr.lhs.cast.i1576 = ptrtoint ptr %319 to i64 + %sub.ptr.rhs.cast.i1577 = ptrtoint ptr %318 to i64 %sub.ptr.sub.i1578 = sub i64 %sub.ptr.lhs.cast.i1576, %sub.ptr.rhs.cast.i1577 %sub.ptr.div.i1579 = sdiv exact i64 %sub.ptr.sub.i1578, 24 %cmp623 = icmp ult i64 %inc650, %sub.ptr.div.i1579 @@ -16002,7 +16001,7 @@ if.then.i.i.i.i.i35: ; preds = %if.else49 br label %_ZSt4copyIPiS0_ET0_T_S2_S1_.exit _ZSt4copyIPiS0_ET0_T_S2_S1_.exit: ; preds = %if.else49, %if.then.i.i.i.i.i35 - %sub.ptr.sub.i40.pre-phi = phi i64 [ %sub.ptr.sub.i22, %if.else49 ], [ %.pre47, %if.then.i.i.i.i.i35 ] + %sub.ptr.sub.i40.pre-phi = phi i64 [ 0, %if.else49 ], [ %.pre47, %if.then.i.i.i.i.i35 ] %5 = phi ptr [ %0, %if.else49 ], [ %.pre44, %if.then.i.i.i.i.i35 ] %6 = phi ptr [ %4, %if.else49 ], [ %.pre42, %if.then.i.i.i.i.i35 ] %7 = phi ptr [ %1, %if.else49 ], [ %.pre, %if.then.i.i.i.i.i35 ] @@ -16113,7 +16112,7 @@ if.then.i.i.i.i.i35: ; preds = %if.else49 br label %_ZSt4copyIPfS0_ET0_T_S2_S1_.exit _ZSt4copyIPfS0_ET0_T_S2_S1_.exit: ; preds = %if.else49, %if.then.i.i.i.i.i35 - %sub.ptr.sub.i40.pre-phi = phi i64 [ %sub.ptr.sub.i22, %if.else49 ], [ %.pre47, %if.then.i.i.i.i.i35 ] + %sub.ptr.sub.i40.pre-phi = phi i64 [ 0, %if.else49 ], [ %.pre47, %if.then.i.i.i.i.i35 ] %5 = phi ptr [ %0, %if.else49 ], [ %.pre44, %if.then.i.i.i.i.i35 ] %6 = phi ptr [ %4, %if.else49 ], [ %.pre42, %if.then.i.i.i.i.i35 ] %7 = phi ptr [ %1, %if.else49 ], [ %.pre, %if.then.i.i.i.i.i35 ] diff --git a/bench/tree-sitter-rs/optimized/2ihg39n1dg1po2l8.ll b/bench/tree-sitter-rs/optimized/2ihg39n1dg1po2l8.ll index 65eeb07c4a0..69e26593ba1 100644 --- a/bench/tree-sitter-rs/optimized/2ihg39n1dg1po2l8.ll +++ b/bench/tree-sitter-rs/optimized/2ihg39n1dg1po2l8.ll @@ -2294,102 +2294,109 @@ define internal fastcc void @"_ZN80_$LT$core..str..pattern..StrSearcher$u20$as$u %10 = load ptr, ptr %9, align 8, !alias.scope !393, !noalias !396, !nonnull !10, !align !278, !noundef !10 %11 = getelementptr inbounds i8, ptr %1, i64 80 %12 = load i64, ptr %11, align 8, !alias.scope !393, !noalias !396, !noundef !10 - %.promoted31 = load i8, ptr %8, align 8, !alias.scope !393, !noalias !396 + %.promoted37 = load i8, ptr %8, align 8, !alias.scope !393, !noalias !396 br label %13 13: ; preds = %"_ZN80_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..Searcher$GT$4next17h956de00e4e543bfcE.exit", %.lr.ph - %14 = phi i8 [ %.promoted31, %.lr.ph ], [ %17, %"_ZN80_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..Searcher$GT$4next17h956de00e4e543bfcE.exit" ] + %14 = phi i8 [ %.promoted37, %.lr.ph ], [ %17, %"_ZN80_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..Searcher$GT$4next17h956de00e4e543bfcE.exit" ] %15 = phi i64 [ %.promoted, %.lr.ph ], [ %75, %"_ZN80_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..Searcher$GT$4next17h956de00e4e543bfcE.exit" ] tail call void @llvm.experimental.noalias.scope.decl(metadata !393) %16 = trunc nuw i8 %14 to i1 %17 = xor i8 %14, 1 %18 = icmp eq i64 %15, 0 - br i1 %18, label %28, label %19 + br i1 %18, label %27, label %19 19: ; preds = %13 %.not.i.i.i = icmp ult i64 %15, %12 br i1 %.not.i.i.i, label %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha20072214ca7ea98E.exit.i.i", label %20 20: ; preds = %19 + store i8 %17, ptr %8, align 8, !alias.scope !393, !noalias !396 %21 = icmp eq i64 %15, %12 - %22 = sub i64 %12, %15 - br i1 %21, label %28, label %27 + br i1 %21, label %.thread.i, label %26 "_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha20072214ca7ea98E.exit.i.i": ; preds = %19 - %23 = getelementptr inbounds i8, ptr %10, i64 %15 - %24 = load i8, ptr %23, align 1, !alias.scope !398, !noalias !403, !noundef !10 - %25 = icmp sgt i8 %24, -65 - %26 = sub nuw i64 %12, %15 - br i1 %25, label %28, label %27 + %22 = getelementptr inbounds i8, ptr %10, i64 %15 + %23 = load i8, ptr %22, align 1, !alias.scope !398, !noalias !403, !noundef !10 + %24 = icmp sgt i8 %23, -65 + %25 = sub nuw i64 %12, %15 + br i1 %24, label %27, label %.loopexit -27: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha20072214ca7ea98E.exit.i.i", %20 +.loopexit: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha20072214ca7ea98E.exit.i.i" store i8 %17, ptr %8, align 8, !alias.scope !393, !noalias !396 + br label %26 + +26: ; preds = %.loopexit, %20 tail call void @_ZN4core3str16slice_error_fail17hae3b26614aa3049fE(ptr noalias noundef nonnull readonly align 1 %10, i64 noundef %12, i64 noundef %15, i64 noundef %12, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.83eab0fe4798dbf7862f0e886e99a74a.73) #19, !noalias !403 unreachable -28: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha20072214ca7ea98E.exit.i.i", %20, %13 - %29 = phi i64 [ %26, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha20072214ca7ea98E.exit.i.i" ], [ %22, %20 ], [ %12, %13 ] - %30 = getelementptr inbounds i8, ptr %10, i64 %15 - %31 = icmp eq i64 %29, 0 - br i1 %31, label %.thread.i, label %32 - -32: ; preds = %28 - %33 = load i8, ptr %30, align 1, !noalias !404, !noundef !10 - %34 = icmp sgt i8 %33, -1 - br i1 %34, label %45, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1d1b67a5025e027fE.exit13.i.i" - -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1d1b67a5025e027fE.exit13.i.i": ; preds = %32 - %35 = getelementptr inbounds i8, ptr %30, i64 1 - %36 = and i8 %33, 31 - %37 = zext nneg i8 %36 to i32 - %38 = icmp ne i64 %29, 1 - tail call void @llvm.assume(i1 %38) - %39 = load i8, ptr %35, align 1, !noalias !404, !noundef !10 - %40 = shl nuw nsw i32 %37, 6 - %41 = and i8 %39, 63 - %42 = zext nneg i8 %41 to i32 - %43 = or disjoint i32 %40, %42 - %44 = icmp ugt i8 %33, -33 - br i1 %44, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1d1b67a5025e027fE.exit15.i.i", label %_ZN4core3str11validations15next_code_point17h7e68f4b340b5058cE.exit.thread.i - -45: ; preds = %32 - %46 = zext nneg i8 %33 to i32 +27: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha20072214ca7ea98E.exit.i.i", %13 + %28 = phi i64 [ %25, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha20072214ca7ea98E.exit.i.i" ], [ %12, %13 ] + %29 = getelementptr inbounds i8, ptr %10, i64 %15 + %30 = icmp eq i64 %28, 0 + br i1 %30, label %.thread.i.loopexit, label %31 + +31: ; preds = %27 + %32 = load i8, ptr %29, align 1, !noalias !404, !noundef !10 + %33 = icmp sgt i8 %32, -1 + br i1 %33, label %44, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1d1b67a5025e027fE.exit13.i.i" + +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1d1b67a5025e027fE.exit13.i.i": ; preds = %31 + %34 = getelementptr inbounds i8, ptr %29, i64 1 + %35 = and i8 %32, 31 + %36 = zext nneg i8 %35 to i32 + %37 = icmp ne i64 %28, 1 + tail call void @llvm.assume(i1 %37) + %38 = load i8, ptr %34, align 1, !noalias !404, !noundef !10 + %39 = shl nuw nsw i32 %36, 6 + %40 = and i8 %38, 63 + %41 = zext nneg i8 %40 to i32 + %42 = or disjoint i32 %39, %41 + %43 = icmp ugt i8 %32, -33 + br i1 %43, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1d1b67a5025e027fE.exit15.i.i", label %_ZN4core3str11validations15next_code_point17h7e68f4b340b5058cE.exit.thread.i + +44: ; preds = %31 + %45 = zext nneg i8 %32 to i32 br label %_ZN4core3str11validations15next_code_point17h7e68f4b340b5058cE.exit.thread.i "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1d1b67a5025e027fE.exit15.i.i": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1d1b67a5025e027fE.exit13.i.i" - %47 = getelementptr inbounds i8, ptr %30, i64 2 - %48 = icmp ne i64 %29, 2 - tail call void @llvm.assume(i1 %48) - %49 = load i8, ptr %47, align 1, !noalias !404, !noundef !10 - %50 = shl nuw nsw i32 %42, 6 - %51 = and i8 %49, 63 - %52 = zext nneg i8 %51 to i32 - %53 = or disjoint i32 %50, %52 - %54 = shl nuw nsw i32 %37, 12 - %55 = or disjoint i32 %53, %54 - %56 = icmp ugt i8 %33, -17 - br i1 %56, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1d1b67a5025e027fE.exit17.i.i", label %_ZN4core3str11validations15next_code_point17h7e68f4b340b5058cE.exit.thread.i + %46 = getelementptr inbounds i8, ptr %29, i64 2 + %47 = icmp ne i64 %28, 2 + tail call void @llvm.assume(i1 %47) + %48 = load i8, ptr %46, align 1, !noalias !404, !noundef !10 + %49 = shl nuw nsw i32 %41, 6 + %50 = and i8 %48, 63 + %51 = zext nneg i8 %50 to i32 + %52 = or disjoint i32 %49, %51 + %53 = shl nuw nsw i32 %36, 12 + %54 = or disjoint i32 %52, %53 + %55 = icmp ugt i8 %32, -17 + br i1 %55, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1d1b67a5025e027fE.exit17.i.i", label %_ZN4core3str11validations15next_code_point17h7e68f4b340b5058cE.exit.thread.i "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1d1b67a5025e027fE.exit17.i.i": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1d1b67a5025e027fE.exit15.i.i" - %57 = getelementptr inbounds i8, ptr %30, i64 3 - %58 = icmp ne i64 %29, 3 - tail call void @llvm.assume(i1 %58) - %59 = load i8, ptr %57, align 1, !noalias !404, !noundef !10 - %60 = shl nuw nsw i32 %37, 18 - %61 = and i32 %60, 1835008 - %62 = shl nuw nsw i32 %53, 6 - %63 = and i8 %59, 63 - %64 = zext nneg i8 %63 to i32 - %65 = or disjoint i32 %62, %64 - %66 = or disjoint i32 %65, %61 + %56 = getelementptr inbounds i8, ptr %29, i64 3 + %57 = icmp ne i64 %28, 3 + tail call void @llvm.assume(i1 %57) + %58 = load i8, ptr %56, align 1, !noalias !404, !noundef !10 + %59 = shl nuw nsw i32 %36, 18 + %60 = and i32 %59, 1835008 + %61 = shl nuw nsw i32 %52, 6 + %62 = and i8 %58, 63 + %63 = zext nneg i8 %62 to i32 + %64 = or disjoint i32 %61, %63 + %65 = or disjoint i32 %64, %60 br label %_ZN4core3str11validations15next_code_point17h7e68f4b340b5058cE.exit.thread.i -_ZN4core3str11validations15next_code_point17h7e68f4b340b5058cE.exit.thread.i: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1d1b67a5025e027fE.exit17.i.i", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1d1b67a5025e027fE.exit15.i.i", %45, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1d1b67a5025e027fE.exit13.i.i" - %.sroa.4.0.i.ph.i = phi i32 [ %43, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1d1b67a5025e027fE.exit13.i.i" ], [ %55, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1d1b67a5025e027fE.exit15.i.i" ], [ %66, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1d1b67a5025e027fE.exit17.i.i" ], [ %46, %45 ] - br i1 %16, label %.loopexit, label %67 +_ZN4core3str11validations15next_code_point17h7e68f4b340b5058cE.exit.thread.i: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1d1b67a5025e027fE.exit17.i.i", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1d1b67a5025e027fE.exit15.i.i", %44, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1d1b67a5025e027fE.exit13.i.i" + %.sroa.4.0.i.ph.i = phi i32 [ %42, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1d1b67a5025e027fE.exit13.i.i" ], [ %54, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1d1b67a5025e027fE.exit15.i.i" ], [ %65, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h1d1b67a5025e027fE.exit17.i.i" ], [ %45, %44 ] + br i1 %16, label %.loopexit11, label %67 -.thread.i: ; preds = %28 +.thread.i.loopexit: ; preds = %27 store i8 %17, ptr %8, align 8, !alias.scope !393, !noalias !396 + br label %.thread.i + +.thread.i: ; preds = %.thread.i.loopexit, %20 + %66 = phi i64 [ %15, %.thread.i.loopexit ], [ %12, %20 ] br i1 %16, label %88, label %.thread25.i 67: ; preds = %_ZN4core3str11validations15next_code_point17h7e68f4b340b5058cE.exit.thread.i @@ -2435,34 +2442,35 @@ _ZN4core3str11validations15next_code_point17h7e68f4b340b5058cE.exit.thread.i: ; %85 = load ptr, ptr %84, align 8, !nonnull !10, !align !278, !noundef !10 %86 = getelementptr inbounds i8, ptr %1, i64 96 %87 = load i64, ptr %86, align 8, !noundef !10 - br i1 %79, label %93, label %92 + br i1 %79, label %94, label %93 -.loopexit: ; preds = %_ZN4core3str11validations15next_code_point17h7e68f4b340b5058cE.exit.thread.i +.loopexit11: ; preds = %_ZN4core3str11validations15next_code_point17h7e68f4b340b5058cE.exit.thread.i store i8 %17, ptr %8, align 8, !alias.scope !393, !noalias !396 br label %88 -88: ; preds = %.loopexit, %.thread.i - %89 = getelementptr inbounds i8, ptr %0, i64 8 - store i64 %15, ptr %89, align 8 - %90 = getelementptr inbounds i8, ptr %0, i64 16 - store i64 %15, ptr %90, align 8 +88: ; preds = %.loopexit11, %.thread.i + %89 = phi i64 [ %15, %.loopexit11 ], [ %66, %.thread.i ] + %90 = getelementptr inbounds i8, ptr %0, i64 8 + store i64 %89, ptr %90, align 8 + %91 = getelementptr inbounds i8, ptr %0, i64 16 + store i64 %89, ptr %91, align 8 br label %"_ZN80_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..Searcher$GT$4next17h956de00e4e543bfcE.exit.thread7" "_ZN80_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..Searcher$GT$4next17h956de00e4e543bfcE.exit.thread7": ; preds = %.preheader, %.thread25.i, %88 %storemerge = phi i64 [ 1, %88 ], [ 0, %.thread25.i ], [ 0, %.preheader ] store i64 %storemerge, ptr %0, align 8 - br label %91 + br label %92 -91: ; preds = %92, %93, %"_ZN80_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..Searcher$GT$4next17h956de00e4e543bfcE.exit.thread7" +92: ; preds = %93, %94, %"_ZN80_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..Searcher$GT$4next17h956de00e4e543bfcE.exit.thread7" ret void -92: ; preds = %76 +93: ; preds = %76 tail call fastcc void @_ZN4core3str7pattern14TwoWaySearcher4next17h55f11d2248d41857E(ptr noalias nocapture noundef align 8 dereferenceable(24) %0, ptr noalias noundef align 8 dereferenceable(64) %4, ptr noalias noundef nonnull readonly align 1 %81, i64 noundef %83, ptr noalias noundef nonnull readonly align 1 %85, i64 noundef %87, i1 noundef zeroext false) - br label %91 + br label %92 -93: ; preds = %76 +94: ; preds = %76 tail call fastcc void @_ZN4core3str7pattern14TwoWaySearcher4next17h55f11d2248d41857E(ptr noalias nocapture noundef align 8 dereferenceable(24) %0, ptr noalias noundef align 8 dereferenceable(64) %4, ptr noalias noundef nonnull readonly align 1 %81, i64 noundef %83, ptr noalias noundef nonnull readonly align 1 %85, i64 noundef %87, i1 noundef zeroext true) - br label %91 + br label %92 } ; Function Attrs: inlinehint nonlazybind uwtable diff --git a/bench/turborepo-rs/optimized/4npj4wsmg2ap1thdgni5ygdc7.ll b/bench/turborepo-rs/optimized/4npj4wsmg2ap1thdgni5ygdc7.ll index 0911db98256..380616f67a8 100644 --- a/bench/turborepo-rs/optimized/4npj4wsmg2ap1thdgni5ygdc7.ll +++ b/bench/turborepo-rs/optimized/4npj4wsmg2ap1thdgni5ygdc7.ll @@ -291,7 +291,7 @@ define void @_RINvNtNtNtNtCs1LoaDTb72WA_4core5slice4sort6stable9quicksort9quicks br i1 %10, label %.outer._crit_edge, label %.lr.ph .lr.ph: ; preds = %7, %_RNvXs5_NtNtCs1LoaDTb72WA_4core5slice5indexINtNtNtB9_3ops5range9RangeFromjEINtB5_10SliceIndexSNtNtCs68wO5nsWeTG_5alloc6string6StringE9index_mutCsff1zCjKRl2o_13turborepo_env.exit - %.sroa.0.0.ph68 = phi ptr [ %112, %_RNvXs5_NtNtCs1LoaDTb72WA_4core5slice5indexINtNtNtB9_3ops5range9RangeFromjEINtB5_10SliceIndexSNtNtCs68wO5nsWeTG_5alloc6string6StringE9index_mutCsff1zCjKRl2o_13turborepo_env.exit ], [ %0, %7 ] + %.sroa.0.0.ph68 = phi ptr [ %111, %_RNvXs5_NtNtCs1LoaDTb72WA_4core5slice5indexINtNtNtB9_3ops5range9RangeFromjEINtB5_10SliceIndexSNtNtCs68wO5nsWeTG_5alloc6string6StringE9index_mutCsff1zCjKRl2o_13turborepo_env.exit ], [ %0, %7 ] %.sroa.12.0.ph67 = phi i64 [ %103, %_RNvXs5_NtNtCs1LoaDTb72WA_4core5slice5indexINtNtNtB9_3ops5range9RangeFromjEINtB5_10SliceIndexSNtNtCs68wO5nsWeTG_5alloc6string6StringE9index_mutCsff1zCjKRl2o_13turborepo_env.exit ], [ %1, %7 ] %.sroa.019.0.ph66 = phi i32 [ %19, %_RNvXs5_NtNtCs1LoaDTb72WA_4core5slice5indexINtNtNtB9_3ops5range9RangeFromjEINtB5_10SliceIndexSNtNtCs68wO5nsWeTG_5alloc6string6StringE9index_mutCsff1zCjKRl2o_13turborepo_env.exit ], [ %4, %7 ] %.sroa.022.0.ph65 = phi ptr [ null, %_RNvXs5_NtNtCs1LoaDTb72WA_4core5slice5indexINtNtNtB9_3ops5range9RangeFromjEINtB5_10SliceIndexSNtNtCs68wO5nsWeTG_5alloc6string6StringE9index_mutCsff1zCjKRl2o_13turborepo_env.exit ], [ %5, %7 ] @@ -301,15 +301,15 @@ define void @_RINvNtNtNtNtCs1LoaDTb72WA_4core5slice4sort6stable9quicksort9quicks %14 = getelementptr i8, ptr %.sroa.022.0.ph65, i64 16 br label %15 -15: ; preds = %.lr.ph, %119 - %.sroa.12.061 = phi i64 [ %.sroa.12.0.ph67, %.lr.ph ], [ %.sroa.11.1.lcssa.i, %119 ] - %.sroa.019.060 = phi i32 [ %.sroa.019.0.ph66, %.lr.ph ], [ %19, %119 ] +15: ; preds = %.lr.ph, %118 + %.sroa.12.061 = phi i64 [ %.sroa.12.0.ph67, %.lr.ph ], [ %.sroa.11.1.lcssa.i, %118 ] + %.sroa.019.060 = phi i32 [ %.sroa.019.0.ph66, %.lr.ph ], [ %19, %118 ] %16 = icmp eq i32 %.sroa.019.060, 0 br i1 %16, label %17, label %18 -.outer._crit_edge: ; preds = %_RNvXs5_NtNtCs1LoaDTb72WA_4core5slice5indexINtNtNtB9_3ops5range9RangeFromjEINtB5_10SliceIndexSNtNtCs68wO5nsWeTG_5alloc6string6StringE9index_mutCsff1zCjKRl2o_13turborepo_env.exit, %119, %7 - %.sroa.0.0.ph.lcssa59 = phi ptr [ %0, %7 ], [ %.sroa.0.0.ph68, %119 ], [ %112, %_RNvXs5_NtNtCs1LoaDTb72WA_4core5slice5indexINtNtNtB9_3ops5range9RangeFromjEINtB5_10SliceIndexSNtNtCs68wO5nsWeTG_5alloc6string6StringE9index_mutCsff1zCjKRl2o_13turborepo_env.exit ] - %.sroa.12.0.lcssa = phi i64 [ %1, %7 ], [ %.sroa.11.1.lcssa.i, %119 ], [ %103, %_RNvXs5_NtNtCs1LoaDTb72WA_4core5slice5indexINtNtNtB9_3ops5range9RangeFromjEINtB5_10SliceIndexSNtNtCs68wO5nsWeTG_5alloc6string6StringE9index_mutCsff1zCjKRl2o_13turborepo_env.exit ] +.outer._crit_edge: ; preds = %_RNvXs5_NtNtCs1LoaDTb72WA_4core5slice5indexINtNtNtB9_3ops5range9RangeFromjEINtB5_10SliceIndexSNtNtCs68wO5nsWeTG_5alloc6string6StringE9index_mutCsff1zCjKRl2o_13turborepo_env.exit, %118, %_RNvXs5_NtNtCs1LoaDTb72WA_4core5slice5indexINtNtNtB9_3ops5range9RangeFromjEINtB5_10SliceIndexSNtNtCs68wO5nsWeTG_5alloc6string6StringE9index_mutCsff1zCjKRl2o_13turborepo_env.exit.thread, %7 + %.sroa.0.0.ph.lcssa59 = phi ptr [ %0, %7 ], [ %104, %_RNvXs5_NtNtCs1LoaDTb72WA_4core5slice5indexINtNtNtB9_3ops5range9RangeFromjEINtB5_10SliceIndexSNtNtCs68wO5nsWeTG_5alloc6string6StringE9index_mutCsff1zCjKRl2o_13turborepo_env.exit.thread ], [ %.sroa.0.0.ph68, %118 ], [ %111, %_RNvXs5_NtNtCs1LoaDTb72WA_4core5slice5indexINtNtNtB9_3ops5range9RangeFromjEINtB5_10SliceIndexSNtNtCs68wO5nsWeTG_5alloc6string6StringE9index_mutCsff1zCjKRl2o_13turborepo_env.exit ] + %.sroa.12.0.lcssa = phi i64 [ %1, %7 ], [ 0, %_RNvXs5_NtNtCs1LoaDTb72WA_4core5slice5indexINtNtNtB9_3ops5range9RangeFromjEINtB5_10SliceIndexSNtNtCs68wO5nsWeTG_5alloc6string6StringE9index_mutCsff1zCjKRl2o_13turborepo_env.exit.thread ], [ %.sroa.11.1.lcssa.i, %118 ], [ %103, %_RNvXs5_NtNtCs1LoaDTb72WA_4core5slice5indexINtNtNtB9_3ops5range9RangeFromjEINtB5_10SliceIndexSNtNtCs68wO5nsWeTG_5alloc6string6StringE9index_mutCsff1zCjKRl2o_13turborepo_env.exit ] call void @_RINvNtNtNtNtCs1LoaDTb72WA_4core5slice4sort6shared9smallsort31small_sort_general_with_scratchNtNtCs68wO5nsWeTG_5alloc6string6StringNvYB1s_NtNtBa_3cmp10PartialOrd2ltECsff1zCjKRl2o_13turborepo_env(ptr noalias noundef nonnull align 8 %.sroa.0.0.ph.lcssa59, i64 noundef range(i64 0, 33) %.sroa.12.0.lcssa, ptr noalias noundef nonnull align 8 %2, i64 noundef %3, ptr noalias noundef nonnull align 1 %6) br label %40 @@ -459,7 +459,7 @@ _RINvNtNtNtNtCs1LoaDTb72WA_4core5slice4sort6shared5pivot12choose_pivotNtNtCs68wO 77: ; preds = %.loopexit %.not = icmp ugt i64 %.sroa.11.1.lcssa.i, %.sroa.12.061 - br i1 %.not, label %114, label %119 + br i1 %.not, label %113, label %118 .thread103: ; preds = %41, %.loopexit call void @llvm.experimental.noalias.scope.decl(metadata !36) @@ -527,57 +527,58 @@ _RINvNtNtNtNtCs1LoaDTb72WA_4core5slice4sort6shared5pivot12choose_pivotNtNtCs68wO call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %.sroa.0.0.ph68, ptr nonnull align 8 %2, i64 %102, i1 false), !alias.scope !39 %103 = sub i64 %.sroa.12.061, %.sroa.11.1.lcssa.us.i %.not.i34 = icmp eq i64 %.sroa.12.061, %.sroa.11.1.lcssa.us.i - br i1 %.not.i34, label %_RINvNtNtNtNtCs1LoaDTb72WA_4core5slice4sort6stable9quicksort16stable_partitionNtNtCs68wO5nsWeTG_5alloc6string6StringNCINvB2_9quicksortB1d_NvYB1d_NtNtBa_3cmp10PartialOrd2ltE0ECsff1zCjKRl2o_13turborepo_env.exit, label %.lr.ph33.i35 - -.lr.ph33.i35: ; preds = %.split30.us.i33 %104 = getelementptr { { { i64, ptr, {} }, i64 } }, ptr %.sroa.0.0.ph68, i64 %.sroa.11.1.lcssa.us.i - br label %105 - -105: ; preds = %105, %.lr.ph33.i35 - %.sroa.04.031.i36 = phi i64 [ 0, %.lr.ph33.i35 ], [ %106, %105 ] - %106 = add nuw i64 %.sroa.04.031.i36, 1 - %107 = xor i64 %.sroa.04.031.i36, -1 - %108 = getelementptr { { { i64, ptr, {} }, i64 } }, ptr %80, i64 %107 - %109 = getelementptr { { { i64, ptr, {} }, i64 } }, ptr %104, i64 %.sroa.04.031.i36 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %109, ptr noundef nonnull align 8 dereferenceable(24) %108, i64 24, i1 false), !alias.scope !39 - %exitcond.not.i37 = icmp eq i64 %106, %103 - br i1 %exitcond.not.i37, label %_RINvNtNtNtNtCs1LoaDTb72WA_4core5slice4sort6stable9quicksort16stable_partitionNtNtCs68wO5nsWeTG_5alloc6string6StringNCINvB2_9quicksortB1d_NvYB1d_NtNtBa_3cmp10PartialOrd2ltE0ECsff1zCjKRl2o_13turborepo_env.exit, label %105 - -_RINvNtNtNtNtCs1LoaDTb72WA_4core5slice4sort6stable9quicksort16stable_partitionNtNtCs68wO5nsWeTG_5alloc6string6StringNCINvB2_9quicksortB1d_NvYB1d_NtNtBa_3cmp10PartialOrd2ltE0ECsff1zCjKRl2o_13turborepo_env.exit: ; preds = %105, %.split30.us.i33 - %110 = icmp ugt i64 %.sroa.11.1.lcssa.us.i, %.sroa.12.061 - br i1 %110, label %111, label %_RNvXs5_NtNtCs1LoaDTb72WA_4core5slice5indexINtNtNtB9_3ops5range9RangeFromjEINtB5_10SliceIndexSNtNtCs68wO5nsWeTG_5alloc6string6StringE9index_mutCsff1zCjKRl2o_13turborepo_env.exit - -111: ; preds = %_RINvNtNtNtNtCs1LoaDTb72WA_4core5slice4sort6stable9quicksort16stable_partitionNtNtCs68wO5nsWeTG_5alloc6string6StringNCINvB2_9quicksortB1d_NvYB1d_NtNtBa_3cmp10PartialOrd2ltE0ECsff1zCjKRl2o_13turborepo_env.exit + br i1 %.not.i34, label %_RNvXs5_NtNtCs1LoaDTb72WA_4core5slice5indexINtNtNtB9_3ops5range9RangeFromjEINtB5_10SliceIndexSNtNtCs68wO5nsWeTG_5alloc6string6StringE9index_mutCsff1zCjKRl2o_13turborepo_env.exit.thread, label %.lr.ph33.i35 + +.lr.ph33.i35: ; preds = %.split30.us.i33, %.lr.ph33.i35 + %.sroa.04.031.i36 = phi i64 [ %105, %.lr.ph33.i35 ], [ 0, %.split30.us.i33 ] + %105 = add nuw i64 %.sroa.04.031.i36, 1 + %106 = xor i64 %.sroa.04.031.i36, -1 + %107 = getelementptr { { { i64, ptr, {} }, i64 } }, ptr %80, i64 %106 + %108 = getelementptr { { { i64, ptr, {} }, i64 } }, ptr %104, i64 %.sroa.04.031.i36 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %108, ptr noundef nonnull align 8 dereferenceable(24) %107, i64 24, i1 false), !alias.scope !39 + %exitcond.not.i37 = icmp eq i64 %105, %103 + br i1 %exitcond.not.i37, label %_RINvNtNtNtNtCs1LoaDTb72WA_4core5slice4sort6stable9quicksort16stable_partitionNtNtCs68wO5nsWeTG_5alloc6string6StringNCINvB2_9quicksortB1d_NvYB1d_NtNtBa_3cmp10PartialOrd2ltE0ECsff1zCjKRl2o_13turborepo_env.exit, label %.lr.ph33.i35 + +_RINvNtNtNtNtCs1LoaDTb72WA_4core5slice4sort6stable9quicksort16stable_partitionNtNtCs68wO5nsWeTG_5alloc6string6StringNCINvB2_9quicksortB1d_NvYB1d_NtNtBa_3cmp10PartialOrd2ltE0ECsff1zCjKRl2o_13turborepo_env.exit: ; preds = %.lr.ph33.i35 + %109 = icmp ugt i64 %.sroa.11.1.lcssa.us.i, %.sroa.12.061 + br i1 %109, label %110, label %_RNvXs5_NtNtCs1LoaDTb72WA_4core5slice5indexINtNtNtB9_3ops5range9RangeFromjEINtB5_10SliceIndexSNtNtCs68wO5nsWeTG_5alloc6string6StringE9index_mutCsff1zCjKRl2o_13turborepo_env.exit + +_RNvXs5_NtNtCs1LoaDTb72WA_4core5slice5indexINtNtNtB9_3ops5range9RangeFromjEINtB5_10SliceIndexSNtNtCs68wO5nsWeTG_5alloc6string6StringE9index_mutCsff1zCjKRl2o_13turborepo_env.exit.thread: ; preds = %.split30.us.i33 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) + br label %.outer._crit_edge + +110: ; preds = %_RINvNtNtNtNtCs1LoaDTb72WA_4core5slice4sort6stable9quicksort16stable_partitionNtNtCs68wO5nsWeTG_5alloc6string6StringNCINvB2_9quicksortB1d_NvYB1d_NtNtBa_3cmp10PartialOrd2ltE0ECsff1zCjKRl2o_13turborepo_env.exit call void @_ZN4core5slice5index26slice_start_index_len_fail17hb39beb2525eed8e3E(i64 noundef %.sroa.11.1.lcssa.us.i, i64 noundef range(i64 33, 0) %.sroa.12.061, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.30d6aabc9ae1ed816db2fe10cdc31e5c.7) #9, !noalias !48 unreachable _RNvXs5_NtNtCs1LoaDTb72WA_4core5slice5indexINtNtNtB9_3ops5range9RangeFromjEINtB5_10SliceIndexSNtNtCs68wO5nsWeTG_5alloc6string6StringE9index_mutCsff1zCjKRl2o_13turborepo_env.exit: ; preds = %_RINvNtNtNtNtCs1LoaDTb72WA_4core5slice4sort6stable9quicksort16stable_partitionNtNtCs68wO5nsWeTG_5alloc6string6StringNCINvB2_9quicksortB1d_NvYB1d_NtNtBa_3cmp10PartialOrd2ltE0ECsff1zCjKRl2o_13turborepo_env.exit - %112 = getelementptr inbounds { { { i64, ptr, {} }, i64 } }, ptr %.sroa.0.0.ph68, i64 %.sroa.11.1.lcssa.us.i + %111 = getelementptr inbounds { { { i64, ptr, {} }, i64 } }, ptr %.sroa.0.0.ph68, i64 %.sroa.11.1.lcssa.us.i call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) - %113 = icmp ult i64 %103, 33 - br i1 %113, label %.outer._crit_edge, label %.lr.ph + %112 = icmp ult i64 %103, 33 + br i1 %112, label %.outer._crit_edge, label %.lr.ph -114: ; preds = %77 +113: ; preds = %77 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %8) store ptr @anon.30d6aabc9ae1ed816db2fe10cdc31e5c.5, ptr %8, align 8 - %115 = getelementptr inbounds i8, ptr %8, i64 8 - store i64 1, ptr %115, align 8 - %116 = getelementptr inbounds i8, ptr %8, i64 32 - store ptr null, ptr %116, align 8 - %117 = getelementptr inbounds i8, ptr %8, i64 16 - store ptr inttoptr (i64 8 to ptr), ptr %117, align 8 - %118 = getelementptr inbounds i8, ptr %8, i64 24 - store i64 0, ptr %118, align 8 + %114 = getelementptr inbounds i8, ptr %8, i64 8 + store i64 1, ptr %114, align 8 + %115 = getelementptr inbounds i8, ptr %8, i64 32 + store ptr null, ptr %115, align 8 + %116 = getelementptr inbounds i8, ptr %8, i64 16 + store ptr inttoptr (i64 8 to ptr), ptr %116, align 8 + %117 = getelementptr inbounds i8, ptr %8, i64 24 + store i64 0, ptr %117, align 8 call void @_ZN4core9panicking9panic_fmt17hb0937d4ccfd82515E(ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %8, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.30d6aabc9ae1ed816db2fe10cdc31e5c.6) #9 unreachable -119: ; preds = %77 - %120 = getelementptr inbounds { { { i64, ptr, {} }, i64 } }, ptr %.sroa.0.0.ph68, i64 %.sroa.11.1.lcssa.i - %121 = sub nuw i64 %.sroa.12.061, %.sroa.11.1.lcssa.i - call void @_RINvNtNtNtNtCs1LoaDTb72WA_4core5slice4sort6stable9quicksort9quicksortNtNtCs68wO5nsWeTG_5alloc6string6StringNvYB15_NtNtBa_3cmp10PartialOrd2ltECsff1zCjKRl2o_13turborepo_env(ptr noalias noundef nonnull align 8 %120, i64 noundef %121, ptr noalias noundef nonnull align 8 %2, i64 noundef %3, i32 noundef %19, ptr noalias noundef nonnull readonly align 8 dereferenceable_or_null(24) %9, ptr noalias noundef nonnull align 1 %6) +118: ; preds = %77 + %119 = getelementptr inbounds { { { i64, ptr, {} }, i64 } }, ptr %.sroa.0.0.ph68, i64 %.sroa.11.1.lcssa.i + %120 = sub nuw i64 %.sroa.12.061, %.sroa.11.1.lcssa.i + call void @_RINvNtNtNtNtCs1LoaDTb72WA_4core5slice4sort6stable9quicksort9quicksortNtNtCs68wO5nsWeTG_5alloc6string6StringNvYB15_NtNtBa_3cmp10PartialOrd2ltECsff1zCjKRl2o_13turborepo_env(ptr noalias noundef nonnull align 8 %119, i64 noundef %120, ptr noalias noundef nonnull align 8 %2, i64 noundef %3, i32 noundef %19, ptr noalias noundef nonnull readonly align 8 dereferenceable_or_null(24) %9, ptr noalias noundef nonnull align 1 %6) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) - %122 = icmp ult i64 %.sroa.11.1.lcssa.i, 33 - br i1 %122, label %.outer._crit_edge, label %15 + %121 = icmp ult i64 %.sroa.11.1.lcssa.i, 33 + br i1 %121, label %.outer._crit_edge, label %15 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(readwrite, inaccessiblemem: none) uwtable diff --git a/bench/typst-rs/optimized/18cop7j4xops9f9h.ll b/bench/typst-rs/optimized/18cop7j4xops9f9h.ll index c73d013ad2d..554bb3bdfd6 100644 --- a/bench/typst-rs/optimized/18cop7j4xops9f9h.ll +++ b/bench/typst-rs/optimized/18cop7j4xops9f9h.ll @@ -5055,7 +5055,7 @@ define { double, i8 } @_ZN12typst_syntax3ast7Numeric3get17h38d7140ce0f0485aE(ptr %51 = zext nneg i8 %50 to i64 %.sroa.3.0.i55 = select i1 %47, i64 %51, i64 %49 %.sroa.0.0.i56 = select i1 %47, ptr %.0.i, ptr %48 - br i1 %36, label %61, label %52 + br i1 %36, label %60, label %52 52: ; preds = %44 %.not.i.i57 = icmp ult i64 %34, %.sroa.3.0.i55 @@ -5063,77 +5063,76 @@ define { double, i8 } @_ZN12typst_syntax3ast7Numeric3get17h38d7140ce0f0485aE(ptr 53: ; preds = %52 %54 = icmp eq i64 %34, %.sroa.3.0.i55 - %55 = sub i64 %.sroa.3.0.i55, %34 - br i1 %54, label %61, label %60 + br i1 %54, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit92", label %59 "_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17hec6e3494bc021c8aE.exit.i59": ; preds = %52 - %56 = getelementptr inbounds i8, ptr %.sroa.0.0.i56, i64 %34 - %57 = load i8, ptr %56, align 1, !alias.scope !997, !noundef !15 - %58 = icmp sgt i8 %57, -65 - %59 = sub nuw i64 %.sroa.3.0.i55, %34 - br i1 %58, label %61, label %60 + %55 = getelementptr inbounds i8, ptr %.sroa.0.0.i56, i64 %34 + %56 = load i8, ptr %55, align 1, !alias.scope !997, !noundef !15 + %57 = icmp sgt i8 %56, -65 + %58 = sub nuw i64 %.sroa.3.0.i55, %34 + br i1 %57, label %60, label %59 -60: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17hec6e3494bc021c8aE.exit.i59", %53 +59: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17hec6e3494bc021c8aE.exit.i59", %53 call void @_ZN4core3str16slice_error_fail17hc482bbaa01e121c2E(ptr noalias noundef nonnull readonly align 1 %.sroa.0.0.i56, i64 noundef %.sroa.3.0.i55, i64 noundef %34, i64 noundef %.sroa.3.0.i55, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.432c17c47d53cdc74afa05871f75f140.104) #31 unreachable -61: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17hec6e3494bc021c8aE.exit.i59", %53, %44 - %62 = phi i64 [ %59, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17hec6e3494bc021c8aE.exit.i59" ], [ %55, %53 ], [ %.sroa.3.0.i55, %44 ] - %63 = getelementptr inbounds i8, ptr %.sroa.0.0.i56, i64 %34 - switch i64 %62, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit92" [ +60: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17hec6e3494bc021c8aE.exit.i59", %44 + %61 = phi i64 [ %58, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17hec6e3494bc021c8aE.exit.i59" ], [ %.sroa.3.0.i55, %44 ] + %62 = getelementptr inbounds i8, ptr %.sroa.0.0.i56, i64 %34 + switch i64 %61, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit92" [ i64 2, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit" i64 3, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit76" ] -"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit": ; preds = %61 - %bcmp.i = call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(2) %63, ptr noundef nonnull dereferenceable(2) @anon.432c17c47d53cdc74afa05871f75f140.105, i64 2), !alias.scope !1002 - %64 = icmp eq i32 %bcmp.i, 0 - br i1 %64, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit92", label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit64" +"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit": ; preds = %60 + %bcmp.i = call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(2) %62, ptr noundef nonnull dereferenceable(2) @anon.432c17c47d53cdc74afa05871f75f140.105, i64 2), !alias.scope !1002 + %63 = icmp eq i32 %bcmp.i, 0 + br i1 %63, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit92", label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit64" "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit64": ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit" - %bcmp.i63 = call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(2) %63, ptr noundef nonnull dereferenceable(2) @anon.432c17c47d53cdc74afa05871f75f140.106, i64 2), !alias.scope !1006 - %65 = icmp eq i32 %bcmp.i63, 0 - br i1 %65, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit92", label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit68" + %bcmp.i63 = call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(2) %62, ptr noundef nonnull dereferenceable(2) @anon.432c17c47d53cdc74afa05871f75f140.106, i64 2), !alias.scope !1006 + %64 = icmp eq i32 %bcmp.i63, 0 + br i1 %64, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit92", label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit68" "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit68": ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit64" - %bcmp.i67 = call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(2) %63, ptr noundef nonnull dereferenceable(2) @anon.432c17c47d53cdc74afa05871f75f140.107, i64 2), !alias.scope !1010 - %66 = icmp eq i32 %bcmp.i67, 0 - br i1 %66, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit92", label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit72" + %bcmp.i67 = call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(2) %62, ptr noundef nonnull dereferenceable(2) @anon.432c17c47d53cdc74afa05871f75f140.107, i64 2), !alias.scope !1010 + %65 = icmp eq i32 %bcmp.i67, 0 + br i1 %65, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit92", label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit72" "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit72": ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit68" - %bcmp.i71 = call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(2) %63, ptr noundef nonnull dereferenceable(2) @anon.432c17c47d53cdc74afa05871f75f140.108, i64 2), !alias.scope !1014 - %67 = icmp eq i32 %bcmp.i71, 0 - br i1 %67, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit92", label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit84" + %bcmp.i71 = call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(2) %62, ptr noundef nonnull dereferenceable(2) @anon.432c17c47d53cdc74afa05871f75f140.108, i64 2), !alias.scope !1014 + %66 = icmp eq i32 %bcmp.i71, 0 + br i1 %66, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit92", label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit84" -"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit76": ; preds = %61 - %bcmp.i75 = call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(3) %63, ptr noundef nonnull dereferenceable(3) @anon.432c17c47d53cdc74afa05871f75f140.109, i64 3), !alias.scope !1018 - %68 = icmp eq i32 %bcmp.i75, 0 - br i1 %68, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit92", label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit80" +"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit76": ; preds = %60 + %bcmp.i75 = call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(3) %62, ptr noundef nonnull dereferenceable(3) @anon.432c17c47d53cdc74afa05871f75f140.109, i64 3), !alias.scope !1018 + %67 = icmp eq i32 %bcmp.i75, 0 + br i1 %67, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit92", label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit80" "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit80": ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit76" - %bcmp.i79 = call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(3) %63, ptr noundef nonnull dereferenceable(3) @anon.432c17c47d53cdc74afa05871f75f140.110, i64 3), !alias.scope !1022 - %69 = icmp eq i32 %bcmp.i79, 0 - %spec.select = select i1 %69, i8 4, i8 8 + %bcmp.i79 = call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(3) %62, ptr noundef nonnull dereferenceable(3) @anon.432c17c47d53cdc74afa05871f75f140.110, i64 3), !alias.scope !1022 + %68 = icmp eq i32 %bcmp.i79, 0 + %spec.select = select i1 %68, i8 4, i8 8 br label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit92" "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit84": ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit72" - %bcmp.i83 = call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(2) %63, ptr noundef nonnull dereferenceable(2) @anon.432c17c47d53cdc74afa05871f75f140.111, i64 2), !alias.scope !1026 - %70 = icmp eq i32 %bcmp.i83, 0 - br i1 %70, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit92", label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit88" + %bcmp.i83 = call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(2) %62, ptr noundef nonnull dereferenceable(2) @anon.432c17c47d53cdc74afa05871f75f140.111, i64 2), !alias.scope !1026 + %69 = icmp eq i32 %bcmp.i83, 0 + br i1 %69, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit92", label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit88" "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit88": ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit84" - %bcmp.i87 = call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(2) %63, ptr noundef nonnull dereferenceable(2) @anon.432c17c47d53cdc74afa05871f75f140.112, i64 2), !alias.scope !1030 - %71 = icmp eq i32 %bcmp.i87, 0 - %spec.select119 = select i1 %71, i8 7, i8 8 + %bcmp.i87 = call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(2) %62, ptr noundef nonnull dereferenceable(2) @anon.432c17c47d53cdc74afa05871f75f140.112, i64 2), !alias.scope !1030 + %70 = icmp eq i32 %bcmp.i87, 0 + %spec.select179 = select i1 %70, i8 7, i8 8 br label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit92" -"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit92": ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit88", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit80", %61, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit84", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit76", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit72", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit68", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit64", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit" - %.0 = phi i8 [ 0, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit" ], [ 1, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit64" ], [ 2, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit68" ], [ 3, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit72" ], [ 5, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit76" ], [ 6, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit84" ], [ %spec.select, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit80" ], [ %spec.select119, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit88" ], [ 8, %61 ] +"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit92": ; preds = %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit88", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit80", %60, %53, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit84", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit76", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit72", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit68", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit64", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit" + %.0 = phi i8 [ 0, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit" ], [ 1, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit64" ], [ 2, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit68" ], [ 3, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit72" ], [ 5, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit76" ], [ 6, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit84" ], [ 8, %53 ], [ %spec.select, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit80" ], [ %spec.select179, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hcd68e3f89286958fE.exit88" ], [ 8, %60 ] %trunc.i53 = trunc nuw i8 %.val to i1 %.0.i54 = select i1 %trunc.i53, double 0.000000e+00, double %.val49 - %72 = insertvalue { double, i8 } poison, double %.0.i54, 0 - %73 = insertvalue { double, i8 } %72, i8 %.0, 1 - ret { double, i8 } %73 + %71 = insertvalue { double, i8 } poison, double %.0.i54, 0 + %72 = insertvalue { double, i8 } %71, i8 %.0, 1 + ret { double, i8 } %72 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/typst-rs/optimized/3dimj4rf5dyrieyi.ll b/bench/typst-rs/optimized/3dimj4rf5dyrieyi.ll index 3f5607da34c..f287778ac8b 100644 --- a/bench/typst-rs/optimized/3dimj4rf5dyrieyi.ll +++ b/bench/typst-rs/optimized/3dimj4rf5dyrieyi.ll @@ -2266,7 +2266,7 @@ _ZN4core3ops8function5FnMut8call_mut17hbf9d6b77650cef0aE.exit54.i.i.i.i: ; preds 126: ; preds = %_ZN4core3ops8function5FnMut8call_mut17hbf9d6b77650cef0aE.exit54.i.i.i.i %.pr69.i.i.i.i = load i64, ptr %95, align 8, !alias.scope !120, !noalias !5 %127 = icmp eq i64 %.pr69.i.i.i.i, 0 - br i1 %127, label %"_ZN114_$LT$core..iter..adapters..flatten..FlatMap$LT$I$C$U$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$10advance_by17haa5e0aac193aba9fE.exit.i", label %128 + br i1 %127, label %"_ZN114_$LT$core..iter..adapters..flatten..FlatMap$LT$I$C$U$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$10advance_by17haa5e0aac193aba9fE.exit.thread7.i", label %128 128: ; preds = %126 %129 = load i64, ptr %99, align 8, !alias.scope !123, !noalias !5, !noundef !4 @@ -2274,7 +2274,7 @@ _ZN4core3ops8function5FnMut8call_mut17hbf9d6b77650cef0aE.exit54.i.i.i.i: ; preds %131 = getelementptr inbounds { [3 x i64] }, ptr %98, i64 %129 %132 = sub nuw i64 %130, %129 %133 = icmp eq i64 %130, %129 - br i1 %133, label %"_ZN114_$LT$core..iter..adapters..flatten..FlatMap$LT$I$C$U$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$10advance_by17haa5e0aac193aba9fE.exit.i", label %.lr.ph.i.i.i.i55.i.i.i.i + br i1 %133, label %"_ZN114_$LT$core..iter..adapters..flatten..FlatMap$LT$I$C$U$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$10advance_by17haa5e0aac193aba9fE.exit.thread7.i", label %.lr.ph.i.i.i.i55.i.i.i.i .lr.ph.i.i.i.i55.i.i.i.i: ; preds = %128, %"_ZN4core3ptr57drop_in_place$LT$typst..foundations..content..Content$GT$17hb6546307b32d0cd5E.exit.i.i.i.i57.i.i.i.i" %.08.i.i.i.i56.i.i.i.i = phi i64 [ %135, %"_ZN4core3ptr57drop_in_place$LT$typst..foundations..content..Content$GT$17hb6546307b32d0cd5E.exit.i.i.i.i57.i.i.i.i" ], [ 0, %128 ] @@ -2331,8 +2331,15 @@ _ZN4core3ops8function5FnMut8call_mut17hbf9d6b77650cef0aE.exit54.i.i.i.i: ; preds call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %.sroa.7.i.i.i.i) br label %151 -"_ZN114_$LT$core..iter..adapters..flatten..FlatMap$LT$I$C$U$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$10advance_by17haa5e0aac193aba9fE.exit.i": ; preds = %"_ZN4core3ptr57drop_in_place$LT$typst..foundations..content..Content$GT$17hb6546307b32d0cd5E.exit.i.i.i.i57.i.i.i.i", %128, %126, %"_ZN4core3ptr130drop_in_place$LT$core..option..Option$LT$core..array..iter..IntoIter$LT$typst..foundations..content..Content$C$2_usize$GT$$GT$$GT$17h1b381cfcf98f74c3E.exit45.i.i.i.i" - %.172.i.i.i.i = phi i64 [ %124, %126 ], [ %124, %128 ], [ %.sroa.3.0.i6894.i.i.i.i, %"_ZN4core3ptr130drop_in_place$LT$core..option..Option$LT$core..array..iter..IntoIter$LT$typst..foundations..content..Content$C$2_usize$GT$$GT$$GT$17h1b381cfcf98f74c3E.exit45.i.i.i.i" ], [ %124, %"_ZN4core3ptr57drop_in_place$LT$typst..foundations..content..Content$GT$17hb6546307b32d0cd5E.exit.i.i.i.i57.i.i.i.i" ] +"_ZN114_$LT$core..iter..adapters..flatten..FlatMap$LT$I$C$U$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$10advance_by17haa5e0aac193aba9fE.exit.thread7.i": ; preds = %128, %126 + store i64 0, ptr %95, align 8, !alias.scope !21, !noalias !5 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %98, ptr noundef nonnull align 8 dereferenceable(64) %.sroa.7.i.i.i.i, i64 64, i1 false), !noalias !5 + call void @llvm.lifetime.end.p0(i64 0, ptr nonnull %3), !noalias !19 + call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %.sroa.7.i.i.i.i) + br label %152 + +"_ZN114_$LT$core..iter..adapters..flatten..FlatMap$LT$I$C$U$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$10advance_by17haa5e0aac193aba9fE.exit.i": ; preds = %"_ZN4core3ptr57drop_in_place$LT$typst..foundations..content..Content$GT$17hb6546307b32d0cd5E.exit.i.i.i.i57.i.i.i.i", %"_ZN4core3ptr130drop_in_place$LT$core..option..Option$LT$core..array..iter..IntoIter$LT$typst..foundations..content..Content$C$2_usize$GT$$GT$$GT$17h1b381cfcf98f74c3E.exit45.i.i.i.i" + %.172.i.i.i.i = phi i64 [ %.sroa.3.0.i6894.i.i.i.i, %"_ZN4core3ptr130drop_in_place$LT$core..option..Option$LT$core..array..iter..IntoIter$LT$typst..foundations..content..Content$C$2_usize$GT$$GT$$GT$17h1b381cfcf98f74c3E.exit45.i.i.i.i" ], [ %124, %"_ZN4core3ptr57drop_in_place$LT$typst..foundations..content..Content$GT$17hb6546307b32d0cd5E.exit.i.i.i.i57.i.i.i.i" ] store i64 0, ptr %95, align 8, !alias.scope !21, !noalias !5 %.sroa.7.0..sroa_idx17.i.i.i.i = getelementptr inbounds i8, ptr %1, i64 80 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %.sroa.7.0..sroa_idx17.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(64) %.sroa.7.i.i.i.i, i64 64, i1 false), !noalias !5 @@ -2345,7 +2352,7 @@ _ZN4core3ops8function5FnMut8call_mut17hbf9d6b77650cef0aE.exit54.i.i.i.i: ; preds call fastcc void @"_ZN114_$LT$core..iter..adapters..flatten..FlatMap$LT$I$C$U$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd9f0ab63c7c978d1E"(ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %0, ptr noalias noundef nonnull align 8 dereferenceable(160) %1) br label %_ZN4core4iter6traits8iterator8Iterator3nth17h888c86bdcdec48b5E.exit -152: ; preds = %"_ZN114_$LT$core..iter..adapters..flatten..FlatMap$LT$I$C$U$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$10advance_by17haa5e0aac193aba9fE.exit.i" +152: ; preds = %"_ZN114_$LT$core..iter..adapters..flatten..FlatMap$LT$I$C$U$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$10advance_by17haa5e0aac193aba9fE.exit.i", %"_ZN114_$LT$core..iter..adapters..flatten..FlatMap$LT$I$C$U$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$10advance_by17haa5e0aac193aba9fE.exit.thread7.i" store ptr null, ptr %0, align 8, !alias.scope !5, !noalias !8 br label %_ZN4core4iter6traits8iterator8Iterator3nth17h888c86bdcdec48b5E.exit diff --git a/bench/velox/optimized/AsyncDataCache.cpp.ll b/bench/velox/optimized/AsyncDataCache.cpp.ll index c256fa997b7..7beecf72fa3 100644 --- a/bench/velox/optimized/AsyncDataCache.cpp.ll +++ b/bench/velox/optimized/AsyncDataCache.cpp.ll @@ -8620,10 +8620,6 @@ call2.i28.i.noexc: ; preds = %if.end.i.i %_M_finish.i.i = getelementptr inbounds i8, ptr %pins, i64 8 %4 = load ptr, ptr %_M_finish.i.i, align 8, !noalias !166 %5 = load ptr, ptr %pins, align 8, !noalias !166 - %sub.ptr.lhs.cast.i168.i = ptrtoint ptr %4 to i64 - %sub.ptr.rhs.cast.i169.i = ptrtoint ptr %5 to i64 - %sub.ptr.sub.i170.i = sub i64 %sub.ptr.lhs.cast.i168.i, %sub.ptr.rhs.cast.i169.i - %sub.ptr.div.i171.i = ashr exact i64 %sub.ptr.sub.i170.i, 3 %cmp172.not.i = icmp eq ptr %4, %5 br i1 %cmp172.not.i, label %for.end.i, label %for.body.lr.ph.i @@ -9072,24 +9068,24 @@ invoke.cont34.i: ; preds = %if.end.i66.i, %_ZNS br i1 %cmp.i, label %for.body.i, label %for.end.i.loopexit, !llvm.loop !183 for.end.i.loopexit: ; preds = %invoke.cont34.i - %50 = add nsw i32 %inc.i41, 1 + %50 = trunc i64 %sub.ptr.div.i.i to i32 + %51 = add nsw i32 %inc.i41, 1 br label %for.end.i for.end.i: ; preds = %for.end.i.loopexit, %call2.i28.i.noexc - %inc42.i = phi i32 [ 1, %call2.i28.i.noexc ], [ %50, %for.end.i.loopexit ] + %inc42.i = phi i32 [ 1, %call2.i28.i.noexc ], [ %51, %for.end.i.loopexit ] %startOffset.0.lcssa.i = phi i64 [ %call2.i28.i11, %call2.i28.i.noexc ], [ %startOffset.1.i, %for.end.i.loopexit ] %startItem.0.lcssa.i = phi i32 [ 0, %call2.i28.i.noexc ], [ %startItem.1.i, %for.end.i.loopexit ] - %sub.ptr.div.i.lcssa.i = phi i64 [ %sub.ptr.div.i171.i, %call2.i28.i.noexc ], [ %sub.ptr.div.i.i, %for.end.i.loopexit ] - %conv39.i = trunc i64 %sub.ptr.div.i.lcssa.i to i32 + %sub.ptr.div.i.lcssa.i = phi i32 [ 0, %call2.i28.i.noexc ], [ %50, %for.end.i.loopexit ] call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %__args.addr2.i119.i), !noalias !166 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %__args.addr4.i120.i), !noalias !166 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %__args.addr6.i121.i), !noalias !166 store i32 %startItem.0.lcssa.i, ptr %__args.addr2.i119.i, align 4, !noalias !166 - store i32 %conv39.i, ptr %__args.addr4.i120.i, align 4, !noalias !166 + store i32 %sub.ptr.div.i.lcssa.i, ptr %__args.addr4.i120.i, align 4, !noalias !166 store i64 %startOffset.0.lcssa.i, ptr %__args.addr6.i121.i, align 8, !noalias !166 %_M_manager.i.i122.i = getelementptr inbounds i8, ptr %agg.tmp5, i64 16 - %51 = load ptr, ptr %_M_manager.i.i122.i, align 8, !noalias !166 - %tobool.not.i.i123.i = icmp eq ptr %51, null + %52 = load ptr, ptr %_M_manager.i.i122.i, align 8, !noalias !166 + %tobool.not.i.i123.i = icmp eq ptr %52, null br i1 %tobool.not.i.i123.i, label %if.then.i126.invoke.i, label %if.end.i124.i if.then.i126.invoke.i: ; preds = %if.else.i, %for.body.i, %for.end.i @@ -9100,8 +9096,8 @@ if.then.i126.cont.i: ; preds = %if.then.i126.invoke unreachable if.end.i124.i: ; preds = %for.end.i - %52 = load ptr, ptr %_M_invoker.i3, align 8, !noalias !166 - invoke void %52(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp5, ptr noundef nonnull align 8 dereferenceable(24) %pins, ptr noundef nonnull align 4 dereferenceable(4) %__args.addr2.i119.i, ptr noundef nonnull align 4 dereferenceable(4) %__args.addr4.i120.i, ptr noundef nonnull align 8 dereferenceable(8) %__args.addr6.i121.i, ptr noundef nonnull align 8 dereferenceable(24) %ranges.i) + %53 = load ptr, ptr %_M_invoker.i3, align 8, !noalias !166 + invoke void %53(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp5, ptr noundef nonnull align 8 dereferenceable(24) %pins, ptr noundef nonnull align 4 dereferenceable(4) %__args.addr2.i119.i, ptr noundef nonnull align 4 dereferenceable(4) %__args.addr4.i120.i, ptr noundef nonnull align 8 dereferenceable(8) %__args.addr6.i121.i, ptr noundef nonnull align 8 dereferenceable(24) %ranges.i) to label %invoke.cont40.i unwind label %lpad6.loopexit.split-lp.loopexit.split-lp.i, !noalias !166 invoke.cont40.i: ; preds = %if.end.i124.i @@ -9109,87 +9105,87 @@ invoke.cont40.i: ; preds = %if.end.i124.i call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %__args.addr4.i120.i), !noalias !166 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %__args.addr6.i121.i), !noalias !166 store i32 %inc42.i, ptr %agg.result, align 8, !alias.scope !166 - %53 = load ptr, ptr %ranges.i, align 8, !noalias !166 - %tobool.not.i.i.i130.i = icmp eq ptr %53, null + %54 = load ptr, ptr %ranges.i, align 8, !noalias !166 + %tobool.not.i.i.i130.i = icmp eq ptr %54, null br i1 %tobool.not.i.i.i130.i, label %invoke.cont, label %if.then.i.i.i131.i if.then.i.i.i131.i: ; preds = %invoke.cont40.i - call void @_ZdlPv(ptr noundef nonnull %53) #41, !noalias !166 + call void @_ZdlPv(ptr noundef nonnull %54) #41, !noalias !166 br label %invoke.cont invoke.cont: ; preds = %if.then.i.i.i131.i, %invoke.cont40.i call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %ranges.i) - %54 = load ptr, ptr %_M_manager.i.i122.i, align 8 - %tobool.not.i.i = icmp eq ptr %54, null + %55 = load ptr, ptr %_M_manager.i.i122.i, align 8 + %tobool.not.i.i = icmp eq ptr %55, null br i1 %tobool.not.i.i, label %_ZNSt8functionIFvRKSt6vectorIN8facebook5velox5cache8CachePinESaIS4_EEiimRKS0_IN5folly5RangeIPcEESaISC_EEEED2Ev.exit, label %if.then.i.i13 if.then.i.i13: ; preds = %invoke.cont - %call.i.i = invoke noundef zeroext i1 %54(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp5, ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp5, i32 noundef 3) + %call.i.i = invoke noundef zeroext i1 %55(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp5, ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp5, i32 noundef 3) to label %_ZNSt8functionIFvRKSt6vectorIN8facebook5velox5cache8CachePinESaIS4_EEiimRKS0_IN5folly5RangeIPcEESaISC_EEEED2Ev.exit unwind label %terminate.lpad.i.i terminate.lpad.i.i: ; preds = %if.then.i.i13 - %55 = landingpad { ptr, i32 } + %56 = landingpad { ptr, i32 } catch ptr null - %56 = extractvalue { ptr, i32 } %55, 0 - call void @__clang_call_terminate(ptr %56) #42 + %57 = extractvalue { ptr, i32 } %56, 0 + call void @__clang_call_terminate(ptr %57) #42 unreachable _ZNSt8functionIFvRKSt6vectorIN8facebook5velox5cache8CachePinESaIS4_EEiimRKS0_IN5folly5RangeIPcEESaISC_EEEED2Ev.exit: ; preds = %invoke.cont, %if.then.i.i13 - %57 = load ptr, ptr %_M_manager.i.i.i9, align 8 - %tobool.not.i.i15 = icmp eq ptr %57, null + %58 = load ptr, ptr %_M_manager.i.i.i9, align 8 + %tobool.not.i.i15 = icmp eq ptr %58, null br i1 %tobool.not.i.i15, label %_ZNSt8functionIFmiEED2Ev.exit, label %if.then.i.i16 if.then.i.i16: ; preds = %_ZNSt8functionIFvRKSt6vectorIN8facebook5velox5cache8CachePinESaIS4_EEiimRKS0_IN5folly5RangeIPcEESaISC_EEEED2Ev.exit - %call.i.i17 = invoke noundef zeroext i1 %57(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp, ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp, i32 noundef 3) + %call.i.i17 = invoke noundef zeroext i1 %58(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp, ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp, i32 noundef 3) to label %_ZNSt8functionIFmiEED2Ev.exit unwind label %terminate.lpad.i.i18 terminate.lpad.i.i18: ; preds = %if.then.i.i16 - %58 = landingpad { ptr, i32 } + %59 = landingpad { ptr, i32 } catch ptr null - %59 = extractvalue { ptr, i32 } %58, 0 - call void @__clang_call_terminate(ptr %59) #42 + %60 = extractvalue { ptr, i32 } %59, 0 + call void @__clang_call_terminate(ptr %60) #42 unreachable _ZNSt8functionIFmiEED2Ev.exit: ; preds = %_ZNSt8functionIFvRKSt6vectorIN8facebook5velox5cache8CachePinESaIS4_EEiimRKS0_IN5folly5RangeIPcEESaISC_EEEED2Ev.exit, %if.then.i.i16 ret void lpad: ; preds = %if.end.i.i, %if.then.i.i - %60 = landingpad { ptr, i32 } + %61 = landingpad { ptr, i32 } cleanup br label %lpad.body lpad.body: ; preds = %lpad6.i, %if.then.i.i.i49.i, %lpad - %eh.lpad-body = phi { ptr, i32 } [ %60, %lpad ], [ %lpad.phi.i, %if.then.i.i.i49.i ], [ %lpad.phi.i, %lpad6.i ] + %eh.lpad-body = phi { ptr, i32 } [ %61, %lpad ], [ %lpad.phi.i, %if.then.i.i.i49.i ], [ %lpad.phi.i, %lpad6.i ] %_M_manager.i.i19 = getelementptr inbounds i8, ptr %agg.tmp5, i64 16 - %61 = load ptr, ptr %_M_manager.i.i19, align 8 - %tobool.not.i.i20 = icmp eq ptr %61, null + %62 = load ptr, ptr %_M_manager.i.i19, align 8 + %tobool.not.i.i20 = icmp eq ptr %62, null br i1 %tobool.not.i.i20, label %_ZNSt8functionIFvRKSt6vectorIN8facebook5velox5cache8CachePinESaIS4_EEiimRKS0_IN5folly5RangeIPcEESaISC_EEEED2Ev.exit24, label %if.then.i.i21 if.then.i.i21: ; preds = %lpad.body - %call.i.i22 = invoke noundef zeroext i1 %61(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp5, ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp5, i32 noundef 3) + %call.i.i22 = invoke noundef zeroext i1 %62(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp5, ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp5, i32 noundef 3) to label %_ZNSt8functionIFvRKSt6vectorIN8facebook5velox5cache8CachePinESaIS4_EEiimRKS0_IN5folly5RangeIPcEESaISC_EEEED2Ev.exit24 unwind label %terminate.lpad.i.i23 terminate.lpad.i.i23: ; preds = %if.then.i.i21 - %62 = landingpad { ptr, i32 } + %63 = landingpad { ptr, i32 } catch ptr null - %63 = extractvalue { ptr, i32 } %62, 0 - call void @__clang_call_terminate(ptr %63) #42 + %64 = extractvalue { ptr, i32 } %63, 0 + call void @__clang_call_terminate(ptr %64) #42 unreachable _ZNSt8functionIFvRKSt6vectorIN8facebook5velox5cache8CachePinESaIS4_EEiimRKS0_IN5folly5RangeIPcEESaISC_EEEED2Ev.exit24: ; preds = %lpad.body, %if.then.i.i21 - %64 = load ptr, ptr %_M_manager.i.i.i9, align 8 - %tobool.not.i.i26 = icmp eq ptr %64, null + %65 = load ptr, ptr %_M_manager.i.i.i9, align 8 + %tobool.not.i.i26 = icmp eq ptr %65, null br i1 %tobool.not.i.i26, label %_ZNSt8functionIFmiEED2Ev.exit30, label %if.then.i.i27 if.then.i.i27: ; preds = %_ZNSt8functionIFvRKSt6vectorIN8facebook5velox5cache8CachePinESaIS4_EEiimRKS0_IN5folly5RangeIPcEESaISC_EEEED2Ev.exit24 - %call.i.i28 = invoke noundef zeroext i1 %64(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp, ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp, i32 noundef 3) + %call.i.i28 = invoke noundef zeroext i1 %65(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp, ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp, i32 noundef 3) to label %_ZNSt8functionIFmiEED2Ev.exit30 unwind label %terminate.lpad.i.i29 terminate.lpad.i.i29: ; preds = %if.then.i.i27 - %65 = landingpad { ptr, i32 } + %66 = landingpad { ptr, i32 } catch ptr null - %66 = extractvalue { ptr, i32 } %65, 0 - call void @__clang_call_terminate(ptr %66) #42 + %67 = extractvalue { ptr, i32 } %66, 0 + call void @__clang_call_terminate(ptr %67) #42 unreachable _ZNSt8functionIFmiEED2Ev.exit30: ; preds = %_ZNSt8functionIFvRKSt6vectorIN8facebook5velox5cache8CachePinESaIS4_EEiimRKS0_IN5folly5RangeIPcEESaISC_EEEED2Ev.exit24, %if.then.i.i27 @@ -12060,16 +12056,16 @@ if.then.i.i.i.i.i: ; preds = %if.then14 br label %if.end65 if.else: ; preds = %if.then - br i1 %tobool.not.i.i.i.i.i, label %if.end65, label %if.then.i.i.i.i.i22 + br i1 %tobool.not.i.i.i.i.i, label %if.end65, label %if.then.i.i.i.i.i19 -if.then.i.i.i.i.i22: ; preds = %if.else - %sub.ptr.lhs.cast.i.i.i.i.i18 = ptrtoint ptr %add.ptr21 to i64 - %sub.ptr.sub.i.i.i.i.i20 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i18, %sub.ptr.rhs.cast - %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i20, 3 - %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i +if.then.i.i.i.i.i19: ; preds = %if.else %add.ptr29 = getelementptr inbounds ptr, ptr %add.ptr9, i64 %add - %add.ptr.i.i.i.i.i23 = getelementptr inbounds ptr, ptr %add.ptr29, i64 %.pre.i.i.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i23, ptr align 8 %1, i64 %sub.ptr.sub.i.i.i.i.i20, i1 false) + %sub.ptr.lhs.cast.i.i.i.i.i20 = ptrtoint ptr %add.ptr21 to i64 + %sub.ptr.sub.i.i.i.i.i22 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i20, %sub.ptr.rhs.cast + %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i22, 3 + %idx.neg.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i + %add.ptr.i.i.i.i.i23 = getelementptr inbounds ptr, ptr %add.ptr29, i64 %idx.neg.i.i.i.i.i + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i23, ptr align 8 %1, i64 %sub.ptr.sub.i.i.i.i.i22, i1 false) br label %if.end65 if.else31: ; preds = %entry @@ -12116,8 +12112,8 @@ _ZSt4copyIPPSt10unique_ptrIN8facebook5velox5cache19AsyncDataCacheEntryESt14defau store i64 %add38, ptr %_M_map_size, align 8 br label %if.end65 -if.end65: ; preds = %if.then.i.i.i.i.i22, %if.else, %if.then.i.i.i.i.i, %if.then14, %_ZSt4copyIPPSt10unique_ptrIN8facebook5velox5cache19AsyncDataCacheEntryESt14default_deleteIS4_EES9_ET0_T_SB_SA_.exit30 - %__new_nstart.0 = phi ptr [ %add.ptr48, %_ZSt4copyIPPSt10unique_ptrIN8facebook5velox5cache19AsyncDataCacheEntryESt14default_deleteIS4_EES9_ET0_T_SB_SA_.exit30 ], [ %add.ptr9, %if.then14 ], [ %add.ptr9, %if.then.i.i.i.i.i ], [ %add.ptr9, %if.else ], [ %add.ptr9, %if.then.i.i.i.i.i22 ] +if.end65: ; preds = %if.then.i.i.i.i.i19, %if.else, %if.then.i.i.i.i.i, %if.then14, %_ZSt4copyIPPSt10unique_ptrIN8facebook5velox5cache19AsyncDataCacheEntryESt14default_deleteIS4_EES9_ET0_T_SB_SA_.exit30 + %__new_nstart.0 = phi ptr [ %add.ptr48, %_ZSt4copyIPPSt10unique_ptrIN8facebook5velox5cache19AsyncDataCacheEntryESt14default_deleteIS4_EES9_ET0_T_SB_SA_.exit30 ], [ %add.ptr9, %if.then14 ], [ %add.ptr9, %if.then.i.i.i.i.i ], [ %add.ptr9, %if.else ], [ %add.ptr9, %if.then.i.i.i.i.i19 ] store ptr %__new_nstart.0, ptr %_M_node3, align 8 %5 = load ptr, ptr %__new_nstart.0, align 8 %_M_first.i = getelementptr inbounds i8, ptr %this, i64 24 @@ -12745,8 +12741,8 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEES6_ET0_T %sub.ptr.lhs.cast.i.i.i.i.i.i32.i = ptrtoint ptr %__i.sroa.0.013.i16.i to i64 %sub.ptr.sub.i.i.i.i.i.i33.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i32.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i.i34.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i.i33.i, 2 - %.pre.i.i.i.i.i.i35.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i34.i - %add.ptr.i.i.i.i.i.i36.i = getelementptr inbounds i32, ptr %add.ptr.i3.i31.i, i64 %.pre.i.i.i.i.i.i35.i + %idx.neg.i.i.i.i.i.i35.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i34.i + %add.ptr.i.i.i.i.i.i36.i = getelementptr inbounds i32, ptr %add.ptr.i3.i31.i, i64 %idx.neg.i.i.i.i.i.i35.i tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %add.ptr.i.i.i.i.i.i36.i, ptr noundef nonnull align 4 dereferenceable(1) %__first.coerce, i64 %sub.ptr.sub.i.i.i.i.i.i33.i, i1 false) br label %for.inc.i21.i diff --git a/bench/velox/optimized/SparseHll.cpp.ll b/bench/velox/optimized/SparseHll.cpp.ll index 6dc587372c4..93f16ce72bb 100644 --- a/bench/velox/optimized/SparseHll.cpp.ll +++ b/bench/velox/optimized/SparseHll.cpp.ll @@ -126,8 +126,8 @@ if.then.i.i.i.i.i.i.i: ; preds = %if.else.i21 %sub.ptr.lhs.cast.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr13.i.i to i64 %sub.ptr.sub.i.i.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i.i.i, %sub.ptr.lhs.cast.i.i16 %sub.ptr.div.i.i.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i.i.i, 2 - %.pre.i.i.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i.i - %add.ptr.i.i.i.i.i.i.i = getelementptr inbounds i32, ptr %9, i64 %.pre.i.i.i.i.i.i.i + %idx.neg.i.i.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i.i + %add.ptr.i.i.i.i.i.i.i = getelementptr inbounds i32, ptr %9, i64 %idx.neg.i.i.i.i.i.i.i tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %add.ptr.i.i.i.i.i.i.i, ptr align 4 %add.ptr.i15, i64 %sub.ptr.sub.i.i.i.i.i.i.i, i1 false) br label %invoke.cont.i @@ -488,23 +488,16 @@ if.end.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i invoke.cont: ; preds = %if.end.i.i.i.i.i.i.i, %if.then.i.i.i.i.i, %_ZNSt6vectorIjSaIjEE17_S_check_init_lenEmRKS0_.exit.i %merged.sroa.0.0 = phi ptr [ %call5.i.i.i.i2.i.i32, %if.then.i.i.i.i.i ], [ %call5.i.i.i.i2.i.i32, %if.end.i.i.i.i.i.i.i ], [ null, %_ZNSt6vectorIjSaIjEE17_S_check_init_lenEmRKS0_.exit.i ] %cmp268.not = icmp eq ptr %0, %1 - br i1 %cmp268.not, label %while.cond52.preheader, label %while.body - -while.cond52.preheader.loopexit: ; preds = %if.end51 - %3 = trunc nuw i64 %indvars.iv.next to i32 - %4 = sext i32 %leftPos.1 to i64 - %5 = sext i32 %rightPos.1 to i64 - br label %while.cond52.preheader - -while.cond52.preheader: ; preds = %invoke.cont, %while.cond52.preheader.loopexit - %leftPos.0.lcssa = phi i64 [ %4, %while.cond52.preheader.loopexit ], [ 0, %invoke.cont ] - %rightPos.0.lcssa = phi i64 [ %5, %while.cond52.preheader.loopexit ], [ 0, %invoke.cont ] - %pos.0.lcssa = phi i32 [ %3, %while.cond52.preheader.loopexit ], [ 0, %invoke.cont ] - %cmp5478 = icmp ugt i64 %sub.ptr.div.i, %leftPos.0.lcssa + br i1 %cmp268.not, label %while.body67.preheader, label %while.body + +while.cond52.preheader: ; preds = %if.end51 + %3 = sext i32 %leftPos.1 to i64 + %4 = sext i32 %rightPos.1 to i64 + %cmp5478 = icmp ugt i64 %sub.ptr.div.i, %3 br i1 %cmp5478, label %while.body55.preheader, label %while.cond64.preheader while.body55.preheader: ; preds = %while.cond52.preheader - %6 = zext i32 %pos.0.lcssa to i64 + %5 = and i64 %indvars.iv.next, 4294967295 br label %while.body55 while.body: ; preds = %invoke.cont, %if.end51 @@ -514,11 +507,11 @@ while.body: ; preds = %invoke.cont, %if.en %rightPos.070 = phi i32 [ %rightPos.1, %if.end51 ], [ 0, %invoke.cont ] %leftPos.069 = phi i32 [ %leftPos.1, %if.end51 ], [ 0, %invoke.cont ] %add.ptr2.i = getelementptr inbounds i32, ptr %1, i64 %conv73 - %7 = load i32, ptr %add.ptr2.i, align 4 - %shr.i = lshr i32 %7, 6 + %6 = load i32, ptr %add.ptr2.i, align 4 + %shr.i = lshr i32 %6, 6 %arrayidx = getelementptr inbounds i32, ptr %otherEntries, i64 %conv374 - %8 = load i32, ptr %arrayidx, align 4 - %shr.i34 = lshr i32 %8, 6 + %7 = load i32, ptr %arrayidx, align 4 + %shr.i34 = lshr i32 %7, 6 %cmp13 = icmp samesign ult i32 %shr.i, %shr.i34 br i1 %cmp13, label %if.then14, label %if.else @@ -526,16 +519,6 @@ if.then14: ; preds = %while.body %inc = add nsw i32 %leftPos.069, 1 br label %if.end51 -lpad8: ; preds = %if.then.i - %9 = landingpad { ptr, i32 } - cleanup - %tobool.not.i.i.i = icmp eq ptr %merged.sroa.0.0, null - br i1 %tobool.not.i.i.i, label %eh.resume, label %if.then.i.i.i - -if.then.i.i.i: ; preds = %lpad8 - tail call void @_ZdlPv(ptr noundef nonnull %merged.sroa.0.0) #26 - br label %eh.resume - if.else: ; preds = %while.body %cmp21 = icmp samesign ugt i32 %shr.i, %shr.i34 br i1 %cmp21, label %if.then22, label %if.else29 @@ -546,16 +529,16 @@ if.then22: ; preds = %if.else if.else29: ; preds = %if.else %inc32 = add nsw i32 %leftPos.069, 1 - %and.i = and i32 %7, 63 + %and.i = and i32 %6, 63 %inc38 = add nsw i32 %rightPos.070, 1 - %and.i41 = and i32 %8, 63 + %and.i41 = and i32 %7, 63 %.sroa.speculated = tail call i32 @llvm.umax.i32(i32 %and.i, i32 %and.i41) - %shl.i = and i32 %7, -64 + %shl.i = and i32 %6, -64 %or.i = or disjoint i32 %.sroa.speculated, %shl.i br label %if.end51 if.end51: ; preds = %if.then22, %if.else29, %if.then14 - %.sink = phi i32 [ %8, %if.then22 ], [ %or.i, %if.else29 ], [ %7, %if.then14 ] + %.sink = phi i32 [ %7, %if.then22 ], [ %or.i, %if.else29 ], [ %6, %if.then14 ] %leftPos.1 = phi i32 [ %leftPos.069, %if.then22 ], [ %inc32, %if.else29 ], [ %inc, %if.then14 ] %rightPos.1 = phi i32 [ %inc23, %if.then22 ], [ %inc38, %if.else29 ], [ %rightPos.070, %if.then14 ] %add.ptr.i38 = getelementptr inbounds i32, ptr %merged.sroa.0.0, i64 %indvars.iv @@ -565,60 +548,54 @@ if.end51: ; preds = %if.then22, %if.else %cmp2 = icmp ugt i64 %sub.ptr.div.i, %conv %conv3 = sext i32 %rightPos.1 to i64 %cmp4 = icmp ugt i64 %otherSize, %conv3 - %10 = select i1 %cmp2, i1 %cmp4, i1 false - br i1 %10, label %while.body, label %while.cond52.preheader.loopexit, !llvm.loop !7 - -while.cond64.preheader.loopexit: ; preds = %while.body55 - %11 = trunc nuw i64 %indvars.iv.next93 to i32 - br label %while.cond64.preheader + %8 = select i1 %cmp2, i1 %cmp4, i1 false + br i1 %8, label %while.body, label %while.cond52.preheader, !llvm.loop !7 -while.cond64.preheader: ; preds = %while.cond64.preheader.loopexit, %while.cond52.preheader - %pos.2.lcssa = phi i32 [ %pos.0.lcssa, %while.cond52.preheader ], [ %11, %while.cond64.preheader.loopexit ] - %cmp6684 = icmp ugt i64 %otherSize, %rightPos.0.lcssa +while.cond64.preheader: ; preds = %while.body55, %while.cond52.preheader + %pos.2.lcssa.in = phi i64 [ %indvars.iv.next, %while.cond52.preheader ], [ %indvars.iv.next93, %while.body55 ] + %cmp6684 = icmp ugt i64 %otherSize, %4 br i1 %cmp6684, label %while.body67.preheader, label %while.end74 -while.body67.preheader: ; preds = %while.cond64.preheader - %12 = zext i32 %pos.2.lcssa to i64 +while.body67.preheader: ; preds = %invoke.cont, %while.cond64.preheader + %pos.2.lcssa118 = phi i64 [ %pos.2.lcssa.in, %while.cond64.preheader ], [ 0, %invoke.cont ] + %rightPos.0.lcssa113117 = phi i64 [ %4, %while.cond64.preheader ], [ 0, %invoke.cont ] + %9 = and i64 %pos.2.lcssa118, 4294967295 br label %while.body67 while.body55: ; preds = %while.body55.preheader, %while.body55 - %indvars.iv94 = phi i64 [ %leftPos.0.lcssa, %while.body55.preheader ], [ %indvars.iv.next95, %while.body55 ] - %indvars.iv92 = phi i64 [ %6, %while.body55.preheader ], [ %indvars.iv.next93, %while.body55 ] + %indvars.iv94 = phi i64 [ %3, %while.body55.preheader ], [ %indvars.iv.next95, %while.body55 ] + %indvars.iv92 = phi i64 [ %5, %while.body55.preheader ], [ %indvars.iv.next93, %while.body55 ] %indvars.iv.next95 = add nuw nsw i64 %indvars.iv94, 1 %add.ptr2.i44 = getelementptr inbounds i32, ptr %1, i64 %indvars.iv94 - %13 = load i32, ptr %add.ptr2.i44, align 4 + %10 = load i32, ptr %add.ptr2.i44, align 4 %indvars.iv.next93 = add nuw nsw i64 %indvars.iv92, 1 %add.ptr.i45 = getelementptr inbounds i32, ptr %merged.sroa.0.0, i64 %indvars.iv92 - store i32 %13, ptr %add.ptr.i45, align 4 + store i32 %10, ptr %add.ptr.i45, align 4 %cmp54 = icmp ugt i64 %sub.ptr.div.i, %indvars.iv.next95 - br i1 %cmp54, label %while.body55, label %while.cond64.preheader.loopexit, !llvm.loop !8 + br i1 %cmp54, label %while.body55, label %while.cond64.preheader, !llvm.loop !8 while.body67: ; preds = %while.body67.preheader, %while.body67 - %indvars.iv101 = phi i64 [ %rightPos.0.lcssa, %while.body67.preheader ], [ %indvars.iv.next102, %while.body67 ] - %indvars.iv99 = phi i64 [ %12, %while.body67.preheader ], [ %indvars.iv.next100, %while.body67 ] + %indvars.iv101 = phi i64 [ %rightPos.0.lcssa113117, %while.body67.preheader ], [ %indvars.iv.next102, %while.body67 ] + %indvars.iv99 = phi i64 [ %9, %while.body67.preheader ], [ %indvars.iv.next100, %while.body67 ] %indvars.iv.next102 = add nuw nsw i64 %indvars.iv101, 1 %arrayidx70 = getelementptr inbounds i32, ptr %otherEntries, i64 %indvars.iv101 - %14 = load i32, ptr %arrayidx70, align 4 + %11 = load i32, ptr %arrayidx70, align 4 %indvars.iv.next100 = add nuw nsw i64 %indvars.iv99, 1 %add.ptr.i46 = getelementptr inbounds i32, ptr %merged.sroa.0.0, i64 %indvars.iv99 - store i32 %14, ptr %add.ptr.i46, align 4 + store i32 %11, ptr %add.ptr.i46, align 4 %cmp66 = icmp ugt i64 %otherSize, %indvars.iv.next102 - br i1 %cmp66, label %while.body67, label %while.end74.loopexit, !llvm.loop !9 + br i1 %cmp66, label %while.body67, label %while.end74, !llvm.loop !9 -while.end74.loopexit: ; preds = %while.body67 - %15 = trunc nuw i64 %indvars.iv.next100 to i32 - br label %while.end74 - -while.end74: ; preds = %while.end74.loopexit, %while.cond64.preheader - %pos.3.lcssa = phi i32 [ %pos.2.lcssa, %while.cond64.preheader ], [ %15, %while.end74.loopexit ] - %conv76 = zext i32 %pos.3.lcssa to i64 +while.end74: ; preds = %while.body67, %while.cond64.preheader + %pos.3.lcssa.in = phi i64 [ %pos.2.lcssa.in, %while.cond64.preheader ], [ %indvars.iv.next100, %while.body67 ] + %conv76 = and i64 %pos.3.lcssa.in, 4294967295 %cmp.i47 = icmp ult i64 %sub.ptr.div.i, %conv76 br i1 %cmp.i47, label %if.then.i, label %if.else.i if.then.i: ; preds = %while.end74 %sub.i = sub nuw nsw i64 %conv76, %sub.ptr.div.i invoke void @_ZNSt6vectorIjN8facebook5velox12StlAllocatorIjEEE17_M_default_appendEm(ptr noundef nonnull align 8 dereferenceable(32) %this, i64 noundef %sub.i) - to label %_ZNSt6vectorIjN8facebook5velox12StlAllocatorIjEEE6resizeEm.exit unwind label %lpad8 + to label %_ZNSt6vectorIjN8facebook5velox12StlAllocatorIjEEE6resizeEm.exit unwind label %eh.resume if.else.i: ; preds = %while.end74 %cmp4.i = icmp ugt i64 %sub.ptr.div.i, %conv76 @@ -634,33 +611,30 @@ if.then.i.i48: ; preds = %if.then5.i br label %_ZNSt6vectorIjN8facebook5velox12StlAllocatorIjEEE6resizeEm.exit _ZNSt6vectorIjN8facebook5velox12StlAllocatorIjEEE6resizeEm.exit: ; preds = %if.then.i, %if.else.i, %if.then5.i, %if.then.i.i48 - %cmp7889.not = icmp eq i32 %pos.3.lcssa, 0 - br i1 %cmp7889.not, label %for.end, label %for.body + %12 = and i64 %pos.3.lcssa.in, 4294967295 + %cmp7889.not = icmp eq i64 %12, 0 + br i1 %cmp7889.not, label %_ZNSt6vectorIjSaIjEED2Ev.exit55, label %for.body for.body: ; preds = %_ZNSt6vectorIjN8facebook5velox12StlAllocatorIjEEE6resizeEm.exit, %for.body %indvars.iv106 = phi i64 [ %indvars.iv.next107, %for.body ], [ 0, %_ZNSt6vectorIjN8facebook5velox12StlAllocatorIjEEE6resizeEm.exit ] %add.ptr.i50 = getelementptr inbounds i32, ptr %merged.sroa.0.0, i64 %indvars.iv106 - %16 = load i32, ptr %add.ptr.i50, align 4 - %17 = load ptr, ptr %add.ptr.i, align 8 - %add.ptr2.i52 = getelementptr inbounds i32, ptr %17, i64 %indvars.iv106 - store i32 %16, ptr %add.ptr2.i52, align 4 + %13 = load i32, ptr %add.ptr.i50, align 4 + %14 = load ptr, ptr %add.ptr.i, align 8 + %add.ptr2.i52 = getelementptr inbounds i32, ptr %14, i64 %indvars.iv106 + store i32 %13, ptr %add.ptr2.i52, align 4 %indvars.iv.next107 = add nuw nsw i64 %indvars.iv106, 1 %exitcond.not = icmp eq i64 %indvars.iv.next107, %conv76 - br i1 %exitcond.not, label %if.then.i.i.i54, label %for.body, !llvm.loop !10 - -for.end: ; preds = %_ZNSt6vectorIjN8facebook5velox12StlAllocatorIjEEE6resizeEm.exit - %tobool.not.i.i.i53 = icmp eq ptr %merged.sroa.0.0, null - br i1 %tobool.not.i.i.i53, label %_ZNSt6vectorIjSaIjEED2Ev.exit55, label %if.then.i.i.i54 + br i1 %exitcond.not, label %_ZNSt6vectorIjSaIjEED2Ev.exit55, label %for.body, !llvm.loop !10 -if.then.i.i.i54: ; preds = %for.body, %for.end +_ZNSt6vectorIjSaIjEED2Ev.exit55: ; preds = %for.body, %_ZNSt6vectorIjN8facebook5velox12StlAllocatorIjEEE6resizeEm.exit tail call void @_ZdlPv(ptr noundef nonnull %merged.sroa.0.0) #26 - br label %_ZNSt6vectorIjSaIjEED2Ev.exit55 - -_ZNSt6vectorIjSaIjEED2Ev.exit55: ; preds = %for.end, %if.then.i.i.i54 ret void -eh.resume: ; preds = %if.then.i.i.i, %lpad8 - resume { ptr, i32 } %9 +eh.resume: ; preds = %if.then.i + %15 = landingpad { ptr, i32 } + cleanup + tail call void @_ZdlPv(ptr noundef nonnull %merged.sroa.0.0) #26 + resume { ptr, i32 } %15 } ; Function Attrs: mustprogress uwtable diff --git a/bench/verilator/optimized/V3DfgAstToDfg.cpp.ll b/bench/verilator/optimized/V3DfgAstToDfg.cpp.ll index e546cd1f153..0645f733760 100644 --- a/bench/verilator/optimized/V3DfgAstToDfg.cpp.ll +++ b/bench/verilator/optimized/V3DfgAstToDfg.cpp.ll @@ -46597,11 +46597,11 @@ _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN15AstToDfgVisitor6DriverESt6vectorIS3 br label %.outer .outer: ; preds = %52, %39 - %.sroa.024.0.i.ph.pn = phi ptr [ %.tr109125, %39 ], [ %.sroa.024.0.i.ph, %52 ] + %.sroa.025.0.i.ph.pn = phi ptr [ %.tr109125, %39 ], [ %.sroa.025.0.i.ph, %52 ] %.sroa.0.0.i.ph = phi ptr [ %2, %39 ], [ %53, %52 ] %.0.i.ph = phi ptr [ %40, %39 ], [ %.0.i, %52 ] - %.sroa.024.0.i.ph = getelementptr inbounds i8, ptr %.sroa.024.0.i.ph.pn, i64 -24 - %41 = getelementptr inbounds i8, ptr %.sroa.024.0.i.ph.pn, i64 -8 + %.sroa.025.0.i.ph = getelementptr inbounds i8, ptr %.sroa.025.0.i.ph.pn, i64 -24 + %41 = getelementptr inbounds i8, ptr %.sroa.025.0.i.ph.pn, i64 -8 br label %42 42: ; preds = %.outer, %60 @@ -46619,21 +46619,21 @@ _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN15AstToDfgVisitor6DriverESt6vectorIS3 _ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN15AstToDfgVisitor18canonicalizePackedEvEUlRKNS2_6DriverES5_E_EclIPS3_NS_17__normal_iteratorIS9_St6vectorIS3_SaIS3_EEEEEEbT_T0_.exit.i: ; preds = %42 %48 = load ptr, ptr %.0.i, align 8 - %49 = load ptr, ptr %.sroa.024.0.i.ph, align 8 + %49 = load ptr, ptr %.sroa.025.0.i.ph, align 8 %50 = tail call noundef i32 @_ZNK8FileLine15operatorCompareERKS_(ptr noundef nonnull align 8 dereferenceable(40) %48, ptr noundef nonnull align 8 dereferenceable(40) %49) %51 = icmp slt i32 %50, 0 br i1 %51, label %52, label %57 52: ; preds = %_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN15AstToDfgVisitor18canonicalizePackedEvEUlRKNS2_6DriverES5_E_EclIPS3_NS_17__normal_iteratorIS9_St6vectorIS3_SaIS3_EEEEEEbT_T0_.exit.i, %46 %53 = getelementptr inbounds i8, ptr %.sroa.0.0.i, i64 -24 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %53, ptr noundef nonnull align 8 dereferenceable(20) %.sroa.024.0.i.ph, i64 20, i1 false) - %54 = icmp eq ptr %.tr124, %.sroa.024.0.i.ph + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %53, ptr noundef nonnull align 8 dereferenceable(20) %.sroa.025.0.i.ph, i64 20, i1 false) + %54 = icmp eq ptr %.tr124, %.sroa.025.0.i.ph br i1 %54, label %55, label %.outer, !llvm.loop !65 55: ; preds = %52 %56 = getelementptr inbounds i8, ptr %.0.i, i64 24 - %.not.i.i.i.i.i19.i = icmp eq ptr %56, %5 - br i1 %.not.i.i.i.i.i19.i, label %_ZSt21__move_merge_adaptiveIPN15AstToDfgVisitor6DriverEN9__gnu_cxx17__normal_iteratorIS2_St6vectorIS1_SaIS1_EEEES8_NS3_5__ops15_Iter_comp_iterIZNS0_18canonicalizePackedEvEUlRKS1_SC_E_EEEvT_SF_T0_SG_T1_T2_.exit, label %_ZSt13move_backwardIPN15AstToDfgVisitor6DriverEN9__gnu_cxx17__normal_iteratorIS2_St6vectorIS1_SaIS1_EEEEET0_T_SA_S9_.exit.sink.split.i + %.not.i.i.i.i.i18.i = icmp eq ptr %56, %5 + br i1 %.not.i.i.i.i.i18.i, label %_ZSt21__move_merge_adaptiveIPN15AstToDfgVisitor6DriverEN9__gnu_cxx17__normal_iteratorIS2_St6vectorIS1_SaIS1_EEEES8_NS3_5__ops15_Iter_comp_iterIZNS0_18canonicalizePackedEvEUlRKS1_SC_E_EEEvT_SF_T0_SG_T1_T2_.exit, label %_ZSt13move_backwardIPN15AstToDfgVisitor6DriverEN9__gnu_cxx17__normal_iteratorIS2_St6vectorIS1_SaIS1_EEEEET0_T_SA_S9_.exit.sink.split.i 57: ; preds = %_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN15AstToDfgVisitor18canonicalizePackedEvEUlRKNS2_6DriverES5_E_EclIPS3_NS_17__normal_iteratorIS9_St6vectorIS3_SaIS3_EEEEEEbT_T0_.exit.i, %46 %58 = getelementptr inbounds i8, ptr %.sroa.0.0.i, i64 -24 @@ -46651,8 +46651,8 @@ _ZSt13move_backwardIPN15AstToDfgVisitor6DriverEN9__gnu_cxx17__normal_iteratorIS2 %62 = ptrtoint ptr %.sink.i to i64 %63 = ptrtoint ptr %5 to i64 %64 = sub i64 %62, %63 - %.neg.i.i.i.i.i18.i = sdiv exact i64 %64, -24 - %65 = getelementptr inbounds %"struct.AstToDfgVisitor::Driver", ptr %.lcssa.sink.i, i64 %.neg.i.i.i.i.i18.i + %.neg.i.i.i.i.i19.i = sdiv exact i64 %64, -24 + %65 = getelementptr inbounds %"struct.AstToDfgVisitor::Driver", ptr %.lcssa.sink.i, i64 %.neg.i.i.i.i.i19.i tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %65, ptr align 8 %5, i64 %64, i1 false) br label %_ZSt21__move_merge_adaptiveIPN15AstToDfgVisitor6DriverEN9__gnu_cxx17__normal_iteratorIS2_St6vectorIS1_SaIS1_EEEES8_NS3_5__ops15_Iter_comp_iterIZNS0_18canonicalizePackedEvEUlRKS1_SC_E_EEEvT_SF_T0_SG_T1_T2_.exit @@ -47665,16 +47665,17 @@ _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN15AstToDfgVisitor6DriverESt6vectorIS3 br label %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN15AstToDfgVisitor6DriverESt6vectorIS3_SaIS3_EEEES8_ET0_T_SA_S9_.exit _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN15AstToDfgVisitor6DriverESt6vectorIS3_SaIS3_EEEES8_ET0_T_SA_S9_.exit: ; preds = %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN15AstToDfgVisitor6DriverESt6vectorIS3_SaIS3_EEEES4_ET0_T_SA_S9_.exit40, %31 - %.neg.i.i.i.i.i42 = sdiv exact i64 %29, -24 br i1 %.not.i.i.i.i.i39, label %_ZSt13move_backwardIPN15AstToDfgVisitor6DriverEN9__gnu_cxx17__normal_iteratorIS2_St6vectorIS1_SaIS1_EEEEET0_T_SA_S9_.exit, label %34 34: ; preds = %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN15AstToDfgVisitor6DriverESt6vectorIS3_SaIS3_EEEES8_ET0_T_SA_S9_.exit - %35 = getelementptr inbounds %"struct.AstToDfgVisitor::Driver", ptr %2, i64 %.neg.i.i.i.i.i42 + %.neg.i.i.i.i.i43 = sdiv exact i64 %29, -24 + %35 = getelementptr inbounds %"struct.AstToDfgVisitor::Driver", ptr %2, i64 %.neg.i.i.i.i.i43 tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %35, ptr align 8 %5, i64 %29, i1 false) br label %_ZSt13move_backwardIPN15AstToDfgVisitor6DriverEN9__gnu_cxx17__normal_iteratorIS2_St6vectorIS1_SaIS1_EEEEET0_T_SA_S9_.exit _ZSt13move_backwardIPN15AstToDfgVisitor6DriverEN9__gnu_cxx17__normal_iteratorIS2_St6vectorIS1_SaIS1_EEEEET0_T_SA_S9_.exit: ; preds = %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN15AstToDfgVisitor6DriverESt6vectorIS3_SaIS3_EEEES8_ET0_T_SA_S9_.exit, %34 - %36 = getelementptr inbounds %"struct.AstToDfgVisitor::Driver", ptr %2, i64 %.neg.i.i.i.i.i42 + %.pre-phi.i.i.i.i.i44 = phi i64 [ %.neg.i.i.i.i.i43, %34 ], [ 0, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN15AstToDfgVisitor6DriverESt6vectorIS3_SaIS3_EEEES8_ET0_T_SA_S9_.exit ] + %36 = getelementptr inbounds %"struct.AstToDfgVisitor::Driver", ptr %2, i64 %.pre-phi.i.i.i.i.i44 br label %_ZNSt3_V26rotateIN9__gnu_cxx17__normal_iteratorIPN15AstToDfgVisitor6DriverESt6vectorIS4_SaIS4_EEEEEET_SA_SA_SA_.exit 37: ; preds = %24 diff --git a/bench/wasmedge/optimized/component.cpp.ll b/bench/wasmedge/optimized/component.cpp.ll index ce14a836442..3682960255c 100644 --- a/bench/wasmedge/optimized/component.cpp.ll +++ b/bench/wasmedge/optimized/component.cpp.ll @@ -1149,9 +1149,11 @@ define void @_ZN8WasmEdge6Loader6Loader8loadUnitEv(ptr dead_on_unwind noalias no %18 = load i8, ptr %3, align 8 %19 = trunc i8 %18 to i1 %20 = getelementptr inbounds i8, ptr %3, i64 8 + %.sink.i.i25.i51.idx.sroa.gep77 = getelementptr inbounds i8, ptr %14, i64 1 + %.sink.i.i25.i.idx.sroa.gep78 = getelementptr inbounds i8, ptr %13, i64 1 %.sink.sroa.gep = getelementptr inbounds i8, ptr %7, i64 4 - %.sink.sroa.gep77 = getelementptr inbounds i8, ptr %8, i64 4 - %.sink.sroa.gep78 = getelementptr inbounds i8, ptr %9, i64 4 + %.sink.sroa.gep79 = getelementptr inbounds i8, ptr %8, i64 4 + %.sink.sroa.gep80 = getelementptr inbounds i8, ptr %9, i64 4 br i1 %19, label %25, label %_ZNSt6vectorIhSaIhEED2Ev.exit34.thread _ZNSt6vectorIhSaIhEED2Ev.exit34.thread: ; preds = %2 @@ -1389,7 +1391,7 @@ _ZN8WasmEdge7FileMgr4seekEm.exit: ; preds = %102, %105 br label %_ZNSt10unique_ptrIN8WasmEdge3AST6ModuleESt14default_deleteIS2_EED2Ev.exit _ZNKSt14default_deleteIN8WasmEdge3AST6ModuleEEclEPS2_.exit.i: ; preds = %120, %110, %93 - %.sink.sroa.phi = phi ptr [ %.sink.sroa.gep, %93 ], [ %.sink.sroa.gep77, %110 ], [ %.sink.sroa.gep78, %120 ] + %.sink.sroa.phi = phi ptr [ %.sink.sroa.gep, %93 ], [ %.sink.sroa.gep79, %110 ], [ %.sink.sroa.gep80, %120 ] %125 = load i32, ptr %.sink.sroa.phi, align 4, !noalias !13 store i8 0, ptr %0, align 8 %126 = getelementptr inbounds i8, ptr %0, i64 8 @@ -1552,9 +1554,9 @@ _ZSt7advanceIPKhmEvRT_T0_.exit.i: ; preds = %175 _ZSt22__uninitialized_copy_aIPKhPhhET0_T_S4_S3_RSaIT1_E.exit.i: ; preds = %184, %_ZSt7advanceIPKhmEvRT_T0_.exit.i %185 = phi ptr [ %177, %_ZSt7advanceIPKhmEvRT_T0_.exit.i ], [ %.pre26.i, %184 ] + %.sink.i.i25.i.idx.sroa.phi = phi ptr [ %13, %_ZSt7advanceIPKhmEvRT_T0_.exit.i ], [ %.sink.i.i25.i.idx.sroa.gep78, %184 ] %gepdiff = sub nuw nsw i64 2, %179 - %.sink.i.i25.i.ptr = getelementptr inbounds i8, ptr %13, i64 %179 - call void @llvm.memmove.p0.p0.i64(ptr align 1 %185, ptr nonnull align 1 %.sink.i.i25.i.ptr, i64 %gepdiff, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr align 1 %185, ptr nonnull align 1 %.sink.i.i25.i.idx.sroa.phi, i64 %gepdiff, i1 false) %186 = getelementptr inbounds i8, ptr %185, i64 %gepdiff store ptr %186, ptr %176, align 8 br label %_ZNSt6vectorIhSaIhEEaSESt16initializer_listIhE.exit @@ -1631,9 +1633,9 @@ _ZSt7advanceIPKhmEvRT_T0_.exit.i46: ; preds = %206 _ZSt22__uninitialized_copy_aIPKhPhhET0_T_S4_S3_RSaIT1_E.exit.i53: ; preds = %215, %_ZSt7advanceIPKhmEvRT_T0_.exit.i46 %216 = phi ptr [ %208, %_ZSt7advanceIPKhmEvRT_T0_.exit.i46 ], [ %.pre26.i49, %215 ] + %.sink.i.i25.i51.idx.sroa.phi = phi ptr [ %14, %_ZSt7advanceIPKhmEvRT_T0_.exit.i46 ], [ %.sink.i.i25.i51.idx.sroa.gep77, %215 ] %gepdiff76 = sub nuw nsw i64 2, %210 - %.sink.i.i25.i51.ptr = getelementptr inbounds i8, ptr %14, i64 %210 - call void @llvm.memmove.p0.p0.i64(ptr align 1 %216, ptr nonnull align 1 %.sink.i.i25.i51.ptr, i64 %gepdiff76, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr align 1 %216, ptr nonnull align 1 %.sink.i.i25.i51.idx.sroa.phi, i64 %gepdiff76, i1 false) %217 = getelementptr inbounds i8, ptr %216, i64 %gepdiff76 store ptr %217, ptr %207, align 8 br label %_ZNSt6vectorIhSaIhEEaSESt16initializer_listIhE.exit31 @@ -1859,7 +1861,7 @@ _ZNSt12_Vector_baseIhSaIhEE13_M_deallocateEPhm.exit: ; preds = %_ZNSt6vectorIhSa br label %_ZSt4copyIPhS0_ET0_T_S2_S1_.exit _ZSt4copyIPhS0_ET0_T_S2_S1_.exit: ; preds = %31, %32 - %.pre-phi33 = phi i64 [ %28, %31 ], [ %.pre32, %32 ] + %.pre-phi33 = phi i64 [ 0, %31 ], [ %.pre32, %32 ] %33 = phi ptr [ %5, %31 ], [ %.pre28, %32 ] %34 = phi ptr [ %26, %31 ], [ %.pre26, %32 ] %35 = phi ptr [ %6, %31 ], [ %.pre, %32 ] diff --git a/bench/wasmedge/optimized/executor.cpp.ll b/bench/wasmedge/optimized/executor.cpp.ll index cacebe9fbb0..d49a7c7f93c 100644 --- a/bench/wasmedge/optimized/executor.cpp.ll +++ b/bench/wasmedge/optimized/executor.cpp.ll @@ -2539,7 +2539,7 @@ _ZN8WasmEdge7Runtime12StackManagerC2Ev.exit: ; preds = %_ZNSt12_Vector_base _ZNSt6vectorISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS1_10RefVariantENS1_10StrVariantEEEENS1_7ValTypeEESaISH_EE17_S_check_init_lenEmRKSI_.exit.i: ; preds = %155 %.not.i.i.i.i67 = icmp eq ptr %157, %158 - br i1 %.not.i.i.i.i67, label %_ZNSt6vectorISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS1_10RefVariantENS1_10StrVariantEEEENS1_7ValTypeEESaISH_EEC2EmRKSI_.exit, label %_ZNSt12_Vector_baseISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS1_10RefVariantENS1_10StrVariantEEEENS1_7ValTypeEESaISH_EEC2EmRKSI_.exit.i + br i1 %.not.i.i.i.i67, label %_ZNSt6vectorISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS1_10RefVariantENS1_10StrVariantEEEENS1_7ValTypeEESaISH_EED2Ev.exit79, label %_ZNSt12_Vector_baseISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS1_10RefVariantENS1_10StrVariantEEEENS1_7ValTypeEESaISH_EEC2EmRKSI_.exit.i _ZNSt12_Vector_baseISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS1_10RefVariantENS1_10StrVariantEEEENS1_7ValTypeEESaISH_EEC2EmRKSI_.exit.i: ; preds = %_ZNSt6vectorISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS1_10RefVariantENS1_10StrVariantEEEENS1_7ValTypeEESaISH_EE17_S_check_init_lenEmRKSI_.exit.i %165 = shl nuw nsw i64 %161, 2 @@ -2555,16 +2555,10 @@ _ZNSt12_Vector_baseISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_ %168 = add i64 %.01012.i.i.i.i.i, -1 %169 = getelementptr inbounds i8, ptr %.013.i.i.i.i.i, i64 32 %.not.i.i.i.i.i = icmp eq i64 %168, 0 - br i1 %.not.i.i.i.i.i, label %_ZNSt6vectorISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS1_10RefVariantENS1_10StrVariantEEEENS1_7ValTypeEESaISH_EEC2EmRKSI_.exit.loopexit, label %.lr.ph.i.i.i.i.i, !llvm.loop !25 + br i1 %.not.i.i.i.i.i, label %_ZNSt6vectorISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS1_10RefVariantENS1_10StrVariantEEEENS1_7ValTypeEESaISH_EEC2EmRKSI_.exit, label %.lr.ph.i.i.i.i.i, !llvm.loop !25 -_ZNSt6vectorISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS1_10RefVariantENS1_10StrVariantEEEENS1_7ValTypeEESaISH_EEC2EmRKSI_.exit.loopexit: ; preds = %.lr.ph.i.i.i.i.i +_ZNSt6vectorISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS1_10RefVariantENS1_10StrVariantEEEENS1_7ValTypeEESaISH_EEC2EmRKSI_.exit: ; preds = %.lr.ph.i.i.i.i.i %170 = getelementptr inbounds %"struct.std::pair", ptr %166, i64 %162 - br label %_ZNSt6vectorISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS1_10RefVariantENS1_10StrVariantEEEENS1_7ValTypeEESaISH_EEC2EmRKSI_.exit - -_ZNSt6vectorISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS1_10RefVariantENS1_10StrVariantEEEENS1_7ValTypeEESaISH_EEC2EmRKSI_.exit: ; preds = %_ZNSt6vectorISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS1_10RefVariantENS1_10StrVariantEEEENS1_7ValTypeEESaISH_EEC2EmRKSI_.exit.loopexit, %_ZNSt6vectorISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS1_10RefVariantENS1_10StrVariantEEEENS1_7ValTypeEESaISH_EE17_S_check_init_lenEmRKSI_.exit.i - %.sroa.11.0 = phi ptr [ null, %_ZNSt6vectorISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS1_10RefVariantENS1_10StrVariantEEEENS1_7ValTypeEESaISH_EE17_S_check_init_lenEmRKSI_.exit.i ], [ %170, %_ZNSt6vectorISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS1_10RefVariantENS1_10StrVariantEEEENS1_7ValTypeEESaISH_EEC2EmRKSI_.exit.loopexit ] - %.sroa.097.0 = phi ptr [ null, %_ZNSt6vectorISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS1_10RefVariantENS1_10StrVariantEEEENS1_7ValTypeEESaISH_EE17_S_check_init_lenEmRKSI_.exit.i ], [ %166, %_ZNSt6vectorISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS1_10RefVariantENS1_10StrVariantEEEENS1_7ValTypeEESaISH_EEC2EmRKSI_.exit.loopexit ] - %.0.lcssa.i.i.i.i.i = phi ptr [ null, %_ZNSt6vectorISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS1_10RefVariantENS1_10StrVariantEEEENS1_7ValTypeEESaISH_EE17_S_check_init_lenEmRKSI_.exit.i ], [ %169, %_ZNSt6vectorISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS1_10RefVariantENS1_10StrVariantEEEENS1_7ValTypeEESaISH_EEC2EmRKSI_.exit.loopexit ] %.not139 = icmp eq i64 %161, 0 br i1 %.not139, label %_ZNSt6vectorISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS1_10RefVariantENS1_10StrVariantEEEENS1_7ValTypeEESaISH_EED2Ev.exit79, label %.lr.ph137 @@ -2574,8 +2568,8 @@ _ZNSt6vectorISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sD br label %173 173: ; preds = %.lr.ph137, %234 - %174 = phi ptr [ %158, %.lr.ph137 ], [ %.sink160, %234 ] - %175 = phi ptr [ %157, %.lr.ph137 ], [ %.sink161, %234 ] + %174 = phi ptr [ %158, %.lr.ph137 ], [ %.sink167, %234 ] + %175 = phi ptr [ %157, %.lr.ph137 ], [ %.sink168, %234 ] %176 = phi i64 [ %161, %.lr.ph137 ], [ %237, %234 ] %177 = phi i64 [ 0, %.lr.ph137 ], [ %243, %234 ] %.054136 = phi i32 [ 0, %.lr.ph137 ], [ %242, %234 ] @@ -2603,9 +2597,9 @@ _ZNSt6vectorISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sD %188 = trunc i64 %187 to i8 %189 = and i64 %.sroa.0.0.copyload.i, 65280 %.not132 = icmp eq i64 %189, 0 - br i1 %.not132, label %192, label %.thread149 + br i1 %.not132, label %192, label %.thread156 -.thread149: ; preds = %185 +.thread156: ; preds = %185 store i64 1868824576, ptr %19, align 16 br label %226 @@ -2711,10 +2705,10 @@ _ZNK8WasmEdge7Runtime8Instance14ModuleInstance7getTypeEj.exit: ; preds = %212, % %.pre142 = load ptr, ptr %27, align 8 br label %226 -226: ; preds = %.thread149, %_ZNK8WasmEdge7Runtime8Instance14ModuleInstance7getTypeEj.exit, %195, %195, %195, %195, %195, %195, %195, %195, %195, %195, %195, %195 - %227 = phi ptr [ %.pre142, %_ZNK8WasmEdge7Runtime8Instance14ModuleInstance7getTypeEj.exit ], [ %174, %195 ], [ %174, %195 ], [ %174, %195 ], [ %174, %195 ], [ %174, %195 ], [ %174, %195 ], [ %174, %195 ], [ %174, %195 ], [ %174, %195 ], [ %174, %195 ], [ %174, %195 ], [ %174, %195 ], [ %174, %.thread149 ] - %228 = phi ptr [ %.pre, %_ZNK8WasmEdge7Runtime8Instance14ModuleInstance7getTypeEj.exit ], [ %175, %195 ], [ %175, %195 ], [ %175, %195 ], [ %175, %195 ], [ %175, %195 ], [ %175, %195 ], [ %175, %195 ], [ %175, %195 ], [ %175, %195 ], [ %175, %195 ], [ %175, %195 ], [ %175, %195 ], [ %175, %.thread149 ] - %.sroa.191.1 = phi ptr [ %.sroa.191.3, %_ZNK8WasmEdge7Runtime8Instance14ModuleInstance7getTypeEj.exit ], [ %.sroa.191.0135, %195 ], [ %.sroa.191.0135, %195 ], [ %.sroa.191.0135, %195 ], [ %.sroa.191.0135, %195 ], [ %.sroa.191.0135, %195 ], [ %.sroa.191.0135, %195 ], [ %.sroa.191.0135, %195 ], [ %.sroa.191.0135, %195 ], [ %.sroa.191.0135, %195 ], [ %.sroa.191.0135, %195 ], [ %.sroa.191.0135, %195 ], [ %.sroa.191.0135, %195 ], [ %.sroa.191.0135, %.thread149 ] +226: ; preds = %.thread156, %_ZNK8WasmEdge7Runtime8Instance14ModuleInstance7getTypeEj.exit, %195, %195, %195, %195, %195, %195, %195, %195, %195, %195, %195, %195 + %227 = phi ptr [ %.pre142, %_ZNK8WasmEdge7Runtime8Instance14ModuleInstance7getTypeEj.exit ], [ %174, %195 ], [ %174, %195 ], [ %174, %195 ], [ %174, %195 ], [ %174, %195 ], [ %174, %195 ], [ %174, %195 ], [ %174, %195 ], [ %174, %195 ], [ %174, %195 ], [ %174, %195 ], [ %174, %195 ], [ %174, %.thread156 ] + %228 = phi ptr [ %.pre, %_ZNK8WasmEdge7Runtime8Instance14ModuleInstance7getTypeEj.exit ], [ %175, %195 ], [ %175, %195 ], [ %175, %195 ], [ %175, %195 ], [ %175, %195 ], [ %175, %195 ], [ %175, %195 ], [ %175, %195 ], [ %175, %195 ], [ %175, %195 ], [ %175, %195 ], [ %175, %195 ], [ %175, %.thread156 ] + %.sroa.191.1 = phi ptr [ %.sroa.191.3, %_ZNK8WasmEdge7Runtime8Instance14ModuleInstance7getTypeEj.exit ], [ %.sroa.191.0135, %195 ], [ %.sroa.191.0135, %195 ], [ %.sroa.191.0135, %195 ], [ %.sroa.191.0135, %195 ], [ %.sroa.191.0135, %195 ], [ %.sroa.191.0135, %195 ], [ %.sroa.191.0135, %195 ], [ %.sroa.191.0135, %195 ], [ %.sroa.191.0135, %195 ], [ %.sroa.191.0135, %195 ], [ %.sroa.191.0135, %195 ], [ %.sroa.191.0135, %195 ], [ %.sroa.191.0135, %.thread156 ] %.sroa.085.0.copyload = load i128, ptr %19, align 16 %229 = trunc i128 %.sroa.085.0.copyload to i64 br label %234 @@ -2728,17 +2722,17 @@ _ZNK8WasmEdge7Runtime8Instance14ModuleInstance7getTypeEj.exit: ; preds = %212, % br label %234 234: ; preds = %226, %230 - %.sink161 = phi ptr [ %228, %226 ], [ %232, %230 ] - %.sink160 = phi ptr [ %227, %226 ], [ %233, %230 ] + %.sink168 = phi ptr [ %228, %226 ], [ %232, %230 ] + %.sink167 = phi ptr [ %227, %226 ], [ %233, %230 ] %.sroa.085.0.copyload.sink = phi i128 [ %.sroa.085.0.copyload, %226 ], [ %.sroa.0.0.copyload, %230 ] %.sink = phi i64 [ %229, %226 ], [ %231, %230 ] %.sroa.191.2 = phi ptr [ %.sroa.191.1, %226 ], [ %.sroa.191.0135, %230 ] - %235 = ptrtoint ptr %.sink161 to i64 - %236 = ptrtoint ptr %.sink160 to i64 + %235 = ptrtoint ptr %.sink168 to i64 + %236 = ptrtoint ptr %.sink167 to i64 %237 = sub i64 %235, %236 %238 = ashr exact i64 %237, 3 - %239 = add nsw i64 %238, %180 - %240 = getelementptr inbounds %"struct.std::pair", ptr %.sroa.097.0, i64 %239 + %239 = getelementptr %"struct.std::pair", ptr %166, i64 %238 + %240 = getelementptr %"struct.std::pair", ptr %239, i64 %180 store i128 %.sroa.085.0.copyload.sink, ptr %240, align 16 %241 = getelementptr inbounds i8, ptr %240, i64 16 store i64 %.sink, ptr %241, align 16 @@ -2747,18 +2741,21 @@ _ZNK8WasmEdge7Runtime8Instance14ModuleInstance7getTypeEj.exit: ; preds = %212, % %244 = icmp ugt i64 %238, %243 br i1 %244, label %173, label %_ZNSt6vectorISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS1_10RefVariantENS1_10StrVariantEEEENS1_7ValTypeEESaISH_EED2Ev.exit79, !llvm.loop !32 -_ZNSt6vectorISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS1_10RefVariantENS1_10StrVariantEEEENS1_7ValTypeEESaISH_EED2Ev.exit79: ; preds = %234, %_ZNSt6vectorISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS1_10RefVariantENS1_10StrVariantEEEENS1_7ValTypeEESaISH_EEC2EmRKSI_.exit +_ZNSt6vectorISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS1_10RefVariantENS1_10StrVariantEEEENS1_7ValTypeEESaISH_EED2Ev.exit79: ; preds = %234, %_ZNSt6vectorISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS1_10RefVariantENS1_10StrVariantEEEENS1_7ValTypeEESaISH_EE17_S_check_init_lenEmRKSI_.exit.i, %_ZNSt6vectorISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS1_10RefVariantENS1_10StrVariantEEEENS1_7ValTypeEESaISH_EEC2EmRKSI_.exit + %.0.lcssa.i.i.i.i.i153 = phi ptr [ %169, %_ZNSt6vectorISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS1_10RefVariantENS1_10StrVariantEEEENS1_7ValTypeEESaISH_EEC2EmRKSI_.exit ], [ null, %_ZNSt6vectorISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS1_10RefVariantENS1_10StrVariantEEEENS1_7ValTypeEESaISH_EE17_S_check_init_lenEmRKSI_.exit.i ], [ %169, %234 ] + %.sroa.097.0152 = phi ptr [ %166, %_ZNSt6vectorISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS1_10RefVariantENS1_10StrVariantEEEENS1_7ValTypeEESaISH_EEC2EmRKSI_.exit ], [ null, %_ZNSt6vectorISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS1_10RefVariantENS1_10StrVariantEEEENS1_7ValTypeEESaISH_EE17_S_check_init_lenEmRKSI_.exit.i ], [ %166, %234 ] + %.sroa.11.0151 = phi ptr [ %170, %_ZNSt6vectorISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS1_10RefVariantENS1_10StrVariantEEEENS1_7ValTypeEESaISH_EEC2EmRKSI_.exit ], [ null, %_ZNSt6vectorISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS1_10RefVariantENS1_10StrVariantEEEENS1_7ValTypeEESaISH_EE17_S_check_init_lenEmRKSI_.exit.i ], [ %170, %234 ] %245 = load ptr, ptr %135, align 8 %246 = load ptr, ptr %17, align 8 %247 = icmp eq ptr %245, %246 call void @llvm.assume(i1 %247) store i8 1, ptr %0, align 8 %248 = getelementptr inbounds i8, ptr %0, i64 8 - store ptr %.sroa.097.0, ptr %248, align 8 + store ptr %.sroa.097.0152, ptr %248, align 8 %249 = getelementptr inbounds i8, ptr %0, i64 16 - store ptr %.0.lcssa.i.i.i.i.i, ptr %249, align 8 + store ptr %.0.lcssa.i.i.i.i.i153, ptr %249, align 8 %250 = getelementptr inbounds i8, ptr %0, i64 24 - store ptr %.sroa.11.0, ptr %250, align 8 + store ptr %.sroa.11.0151, ptr %250, align 8 br label %251 251: ; preds = %_ZNSt6vectorISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_jDv4_iDv8_tDv8_sDv16_hDv16_aDv4_fDv2_dNS1_10RefVariantENS1_10StrVariantEEEENS1_7ValTypeEESaISH_EED2Ev.exit79, %149 diff --git a/bench/wasmedge/optimized/runtimeTool.cpp.ll b/bench/wasmedge/optimized/runtimeTool.cpp.ll index a581abd8d6d..55975910cf5 100644 --- a/bench/wasmedge/optimized/runtimeTool.cpp.ll +++ b/bench/wasmedge/optimized/runtimeTool.cpp.ll @@ -2203,21 +2203,21 @@ _ZN5cxx208expectedISt6vectorISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_j %730 = getelementptr inbounds i8, ptr %31, i64 8 %731 = load ptr, ptr %730, align 8 %732 = load ptr, ptr %31, align 8 - %733 = ptrtoint ptr %731 to i64 - %734 = ptrtoint ptr %732 to i64 - %735 = sub i64 %733, %734 - %736 = ashr exact i64 %735, 3 %.not884 = icmp eq ptr %731, %732 br i1 %.not884, label %.critedge3, label %.lr.ph851.preheader .lr.ph851.preheader: ; preds = %729 + %733 = ptrtoint ptr %731 to i64 + %734 = ptrtoint ptr %732 to i64 + %735 = sub i64 %733, %734 + %736 = ashr exact i64 %735, 3 %737 = load ptr, ptr %562, align 8 %738 = load ptr, ptr %560, align 8 %739 = ptrtoint ptr %737 to i64 %740 = ptrtoint ptr %738 to i64 %741 = sub i64 %739, %740 %742 = icmp ugt i64 %741, 32 - br i1 %742, label %.lr.ph1042, label %.critedge3 + br i1 %742, label %.lr.ph1042, label %.critedge3.loopexit .lr.ph851: ; preds = %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EE12emplace_backIJNS0_8TypeCodeEEEERS1_DpOT_.exit %743 = add nuw i64 %752, 1 @@ -2228,7 +2228,7 @@ _ZN5cxx208expectedISt6vectorISt4pairIN8WasmEdge7VariantIJjimlfdonDv2_mDv2_lDv4_j %748 = sub i64 %746, %747 %749 = ashr exact i64 %748, 5 %750 = icmp ult i64 %743, %749 - br i1 %750, label %.lr.ph1042, label %.critedge3, !llvm.loop !25 + br i1 %750, label %.lr.ph1042, label %.critedge3.loopexit, !llvm.loop !25 .lr.ph1042: ; preds = %.lr.ph851.preheader, %.lr.ph851 %751 = phi ptr [ %745, %.lr.ph851 ], [ %738, %.lr.ph851.preheader ] @@ -3065,29 +3065,39 @@ _ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EE12emplace_backIJNS0_8TypeCodeEEEERS1_DpO %1061 = sub i64 %1059, %1060 %1062 = ashr exact i64 %1061, 3 %1063 = icmp ult i64 %752, %1062 - br i1 %1063, label %.lr.ph851, label %.critedge3, !llvm.loop !25 - -.critedge3: ; preds = %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EE12emplace_backIJNS0_8TypeCodeEEEERS1_DpOT_.exit, %.lr.ph851, %.lr.ph851.preheader, %729 - %.sroa.52.0.lcssa = phi ptr [ null, %729 ], [ null, %.lr.ph851.preheader ], [ %.sroa.52.1, %.lr.ph851 ], [ %.sroa.52.1, %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EE12emplace_backIJNS0_8TypeCodeEEEERS1_DpOT_.exit ] - %.sroa.15.0.lcssa = phi ptr [ null, %729 ], [ null, %.lr.ph851.preheader ], [ %.sroa.15.1, %.lr.ph851 ], [ %.sroa.15.1, %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EE12emplace_backIJNS0_8TypeCodeEEEERS1_DpOT_.exit ] - %.sroa.0491.0.lcssa = phi ptr [ null, %729 ], [ null, %.lr.ph851.preheader ], [ %.sroa.0491.1, %.lr.ph851 ], [ %.sroa.0491.1, %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EE12emplace_backIJNS0_8TypeCodeEEEERS1_DpOT_.exit ] - %.sroa.50.0.lcssa = phi ptr [ null, %729 ], [ null, %.lr.ph851.preheader ], [ %.sroa.50.1, %.lr.ph851 ], [ %.sroa.50.1, %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EE12emplace_backIJNS0_8TypeCodeEEEERS1_DpOT_.exit ] - %.sroa.15537.0.lcssa = phi ptr [ null, %729 ], [ null, %.lr.ph851.preheader ], [ %.sroa.15537.1, %.lr.ph851 ], [ %.sroa.15537.1, %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EE12emplace_backIJNS0_8TypeCodeEEEERS1_DpOT_.exit ] - %.sroa.0529.0.lcssa = phi ptr [ null, %729 ], [ null, %.lr.ph851.preheader ], [ %.sroa.0529.1, %.lr.ph851 ], [ %.sroa.0529.1, %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EE12emplace_backIJNS0_8TypeCodeEEEERS1_DpOT_.exit ] - %.lcssa700 = phi i64 [ %736, %729 ], [ %736, %.lr.ph851.preheader ], [ %1062, %.lr.ph851 ], [ %1062, %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EE12emplace_backIJNS0_8TypeCodeEEEERS1_DpOT_.exit ] - %1064 = add nsw i64 %.lcssa700, 1 + br i1 %1063, label %.lr.ph851, label %.critedge3.loopexit, !llvm.loop !25 + +.critedge3.loopexit: ; preds = %.lr.ph851, %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EE12emplace_backIJNS0_8TypeCodeEEEERS1_DpOT_.exit, %.lr.ph851.preheader + %.sroa.52.0.lcssa.ph = phi ptr [ null, %.lr.ph851.preheader ], [ %.sroa.52.1, %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EE12emplace_backIJNS0_8TypeCodeEEEERS1_DpOT_.exit ], [ %.sroa.52.1, %.lr.ph851 ] + %.sroa.15.0.lcssa.ph = phi ptr [ null, %.lr.ph851.preheader ], [ %.sroa.15.1, %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EE12emplace_backIJNS0_8TypeCodeEEEERS1_DpOT_.exit ], [ %.sroa.15.1, %.lr.ph851 ] + %.sroa.0491.0.lcssa.ph = phi ptr [ null, %.lr.ph851.preheader ], [ %.sroa.0491.1, %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EE12emplace_backIJNS0_8TypeCodeEEEERS1_DpOT_.exit ], [ %.sroa.0491.1, %.lr.ph851 ] + %.sroa.50.0.lcssa.ph = phi ptr [ null, %.lr.ph851.preheader ], [ %.sroa.50.1, %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EE12emplace_backIJNS0_8TypeCodeEEEERS1_DpOT_.exit ], [ %.sroa.50.1, %.lr.ph851 ] + %.sroa.15537.0.lcssa.ph = phi ptr [ null, %.lr.ph851.preheader ], [ %.sroa.15537.1, %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EE12emplace_backIJNS0_8TypeCodeEEEERS1_DpOT_.exit ], [ %.sroa.15537.1, %.lr.ph851 ] + %.sroa.0529.0.lcssa.ph = phi ptr [ null, %.lr.ph851.preheader ], [ %.sroa.0529.1, %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EE12emplace_backIJNS0_8TypeCodeEEEERS1_DpOT_.exit ], [ %.sroa.0529.1, %.lr.ph851 ] + %.lcssa700.ph = phi i64 [ %736, %.lr.ph851.preheader ], [ %1062, %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EE12emplace_backIJNS0_8TypeCodeEEEERS1_DpOT_.exit ], [ %1062, %.lr.ph851 ] + %1064 = add nsw i64 %.lcssa700.ph, 1 + br label %.critedge3 + +.critedge3: ; preds = %.critedge3.loopexit, %729 + %.sroa.52.0.lcssa = phi ptr [ null, %729 ], [ %.sroa.52.0.lcssa.ph, %.critedge3.loopexit ] + %.sroa.15.0.lcssa = phi ptr [ null, %729 ], [ %.sroa.15.0.lcssa.ph, %.critedge3.loopexit ] + %.sroa.0491.0.lcssa = phi ptr [ null, %729 ], [ %.sroa.0491.0.lcssa.ph, %.critedge3.loopexit ] + %.sroa.50.0.lcssa = phi ptr [ null, %729 ], [ %.sroa.50.0.lcssa.ph, %.critedge3.loopexit ] + %.sroa.15537.0.lcssa = phi ptr [ null, %729 ], [ %.sroa.15537.0.lcssa.ph, %.critedge3.loopexit ] + %.sroa.0529.0.lcssa = phi ptr [ null, %729 ], [ %.sroa.0529.0.lcssa.ph, %.critedge3.loopexit ] + %.lcssa700 = phi i64 [ 1, %729 ], [ %1064, %.critedge3.loopexit ] %1065 = load ptr, ptr %562, align 8 %1066 = load ptr, ptr %560, align 8 %1067 = ptrtoint ptr %1065 to i64 %1068 = ptrtoint ptr %1066 to i64 %1069 = sub i64 %1067, %1068 %1070 = ashr exact i64 %1069, 5 - %1071 = icmp ult i64 %1064, %1070 + %1071 = icmp ult i64 %.lcssa700, %1070 br i1 %1071, label %.lr.ph875, label %.loopexit607 .lr.ph875: ; preds = %.critedge3, %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EE12emplace_backIJNS0_8TypeCodeEEEERS1_DpOT_.exit309 %1072 = phi ptr [ %1134, %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EE12emplace_backIJNS0_8TypeCodeEEEERS1_DpOT_.exit309 ], [ %1066, %.critedge3 ] - %.099874 = phi i64 [ %.099, %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EE12emplace_backIJNS0_8TypeCodeEEEERS1_DpOT_.exit309 ], [ %1064, %.critedge3 ] + %.099874 = phi i64 [ %.099, %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EE12emplace_backIJNS0_8TypeCodeEEEERS1_DpOT_.exit309 ], [ %.lcssa700, %.critedge3 ] %.sroa.0529.3873 = phi ptr [ %.sroa.0529.9, %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EE12emplace_backIJNS0_8TypeCodeEEEERS1_DpOT_.exit309 ], [ %.sroa.0529.0.lcssa, %.critedge3 ] %.sroa.15537.3872 = phi ptr [ %.sroa.15537.9, %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EE12emplace_backIJNS0_8TypeCodeEEEERS1_DpOT_.exit309 ], [ %.sroa.15537.0.lcssa, %.critedge3 ] %.sroa.50.3871 = phi ptr [ %.sroa.50.9, %_ZNSt6vectorIN8WasmEdge7ValTypeESaIS1_EE12emplace_backIJNS0_8TypeCodeEEEERS1_DpOT_.exit309 ], [ %.sroa.50.0.lcssa, %.critedge3 ] @@ -5355,7 +5365,7 @@ _ZNSt12_Vector_baseIN8WasmEdge7ValTypeESaIS1_EE13_M_deallocateEPS1_m.exit: ; pre br label %_ZSt4copyIPN8WasmEdge7ValTypeES2_ET0_T_S4_S3_.exit _ZSt4copyIPN8WasmEdge7ValTypeES2_ET0_T_S4_S3_.exit: ; preds = %31, %32 - %.pre-phi33 = phi i64 [ %28, %31 ], [ %.pre32, %32 ] + %.pre-phi33 = phi i64 [ 0, %31 ], [ %.pre32, %32 ] %33 = phi ptr [ %5, %31 ], [ %.pre28, %32 ] %34 = phi ptr [ %26, %31 ], [ %.pre26, %32 ] %35 = phi ptr [ %6, %31 ], [ %.pre, %32 ] diff --git a/bench/wireshark/optimized/packet-rtmpt.c.ll b/bench/wireshark/optimized/packet-rtmpt.c.ll index 19984cbbba7..a8e56cd3ca3 100644 --- a/bench/wireshark/optimized/packet-rtmpt.c.ll +++ b/bench/wireshark/optimized/packet-rtmpt.c.ll @@ -3376,11 +3376,11 @@ define internal fastcc i32 @rtmpt_get_amf_length(ptr noundef %0, i32 noundef %1, 5: ; preds = %3, %.backedge %6 = phi i1 [ false, %3 ], [ %36, %.backedge ] - %.069 = phi i32 [ 1000, %3 ], [ %7, %.backedge ] - %.05768 = phi i32 [ 0, %3 ], [ %.057.be, %.backedge ] - %.05867 = phi i32 [ 0, %3 ], [ %.058.be, %.backedge ] - %.06066 = phi i32 [ 0, %3 ], [ %.060.be, %.backedge ] - %7 = add nsw i32 %.069, -1 + %.073 = phi i32 [ 1000, %3 ], [ %7, %.backedge ] + %.05772 = phi i32 [ 0, %3 ], [ %.057.be, %.backedge ] + %.05871 = phi i32 [ 0, %3 ], [ %.058.be, %.backedge ] + %.06070 = phi i32 [ 0, %3 ], [ %.060.be, %.backedge ] + %7 = add nsw i32 %.073, -1 %8 = icmp eq i32 %7, 0 br i1 %8, label %9, label %11 @@ -3392,12 +3392,12 @@ define internal fastcc i32 @rtmpt_get_amf_length(ptr noundef %0, i32 noundef %1, br i1 %6, label %12, label %24 12: ; preds = %11 - %13 = sub i32 %4, %.05768 + %13 = sub i32 %4, %.05772 %14 = icmp ult i32 %13, 2 br i1 %14, label %.loopexit, label %15 15: ; preds = %12 - %16 = add i32 %.05768, %1 + %16 = add i32 %.05772, %1 %17 = tail call zeroext i16 @tvb_get_ntohs(ptr noundef %0, i32 noundef %16) #8 %18 = zext i16 %17 to i32 %19 = add nuw nsw i32 %18, 3 @@ -3406,12 +3406,12 @@ define internal fastcc i32 @rtmpt_get_amf_length(ptr noundef %0, i32 noundef %1, 21: ; preds = %15 %22 = add nuw nsw i32 %18, 2 - %23 = add i32 %22, %.05768 + %23 = add i32 %22, %.05772 br label %24 24: ; preds = %21, %11 - %.159 = phi i32 [ %22, %21 ], [ %.05867, %11 ] - %.1 = phi i32 [ %23, %21 ], [ %.05768, %11 ] + %.159 = phi i32 [ %22, %21 ], [ %.05871, %11 ] + %.1 = phi i32 [ %23, %21 ], [ %.05772, %11 ] %25 = sub i32 %4, %.1 %26 = icmp eq i32 %4, %.1 br i1 %26, label %.loopexit, label %27 @@ -3427,13 +3427,13 @@ define internal fastcc i32 @rtmpt_get_amf_length(ptr noundef %0, i32 noundef %1, 32: ; preds = %27 %33 = add i32 %.1, 1 - %34 = add i32 %.06066, -1 + %34 = add i32 %.06070, -1 br label %.backedge -.backedge: ; preds = %32, %61 - %.060.be = phi i32 [ %34, %32 ], [ %.161, %61 ] - %.058.be = phi i32 [ 2, %32 ], [ %.2, %61 ] - %.057.be = phi i32 [ %33, %32 ], [ %62, %61 ] +.backedge: ; preds = %32, %.thread + %.060.be = phi i32 [ %34, %32 ], [ %.16168, %.thread ] + %.058.be = phi i32 [ 2, %32 ], [ %.269, %.thread ] + %.057.be = phi i32 [ %33, %32 ], [ %60, %.thread ] %35 = icmp eq i32 %.057.be, 0 %36 = icmp ne i32 %.060.be, 0 %37 = select i1 %35, i1 true, i1 %36 @@ -3441,22 +3441,22 @@ define internal fastcc i32 @rtmpt_get_amf_length(ptr noundef %0, i32 noundef %1, 38: ; preds = %27 switch i8 %29, label %.loopexit [ - i8 0, label %59 + i8 0, label %58 i8 1, label %39 i8 2, label %40 - i8 5, label %47 - i8 6, label %47 - i8 13, label %47 - i8 11, label %48 - i8 12, label %49 - i8 15, label %49 - i8 34, label %59 - i8 3, label %55 - i8 8, label %57 + i8 5, label %.thread + i8 6, label %.thread + i8 13, label %.thread + i8 11, label %47 + i8 12, label %48 + i8 15, label %48 + i8 34, label %58 + i8 3, label %54 + i8 8, label %56 ] 39: ; preds = %38 - br label %59 + br label %58 40: ; preds = %38 %41 = icmp ult i32 %25, 3 @@ -3467,44 +3467,43 @@ define internal fastcc i32 @rtmpt_get_amf_length(ptr noundef %0, i32 noundef %1, %44 = tail call zeroext i16 @tvb_get_ntohs(ptr noundef %0, i32 noundef %43) #8 %45 = zext i16 %44 to i32 %46 = add nuw nsw i32 %45, 3 - br label %59 - -47: ; preds = %38, %38, %38 - br label %59 + br label %58 -48: ; preds = %38 - br label %59 +47: ; preds = %38 + br label %58 -49: ; preds = %38, %38 - %50 = icmp ult i32 %25, 5 - br i1 %50, label %.loopexit, label %51 +48: ; preds = %38, %38 + %49 = icmp ult i32 %25, 5 + br i1 %49, label %.loopexit, label %50 -51: ; preds = %49 - %52 = add i32 %28, 1 - %53 = tail call i32 @tvb_get_ntohl(ptr noundef %0, i32 noundef %52) #8 - %54 = add i32 %53, 5 - br label %59 +50: ; preds = %48 + %51 = add i32 %28, 1 + %52 = tail call i32 @tvb_get_ntohl(ptr noundef %0, i32 noundef %51) #8 + %53 = add i32 %52, 5 + br label %58 -55: ; preds = %38 - %56 = add i32 %.06066, 1 - br label %59 +54: ; preds = %38 + %55 = add i32 %.06070, 1 + br label %.thread -57: ; preds = %38 - %58 = add i32 %.06066, 1 - br label %59 +56: ; preds = %38 + %57 = add i32 %.06070, 1 + br label %58 -59: ; preds = %38, %38, %57, %55, %51, %48, %47, %42, %39 - %.161 = phi i32 [ %58, %57 ], [ %56, %55 ], [ %.06066, %51 ], [ %.06066, %48 ], [ %.06066, %47 ], [ %.06066, %42 ], [ %.06066, %39 ], [ %.06066, %38 ], [ %.06066, %38 ] - %.2 = phi i32 [ 5, %57 ], [ 1, %55 ], [ %54, %51 ], [ 11, %48 ], [ 1, %47 ], [ %46, %42 ], [ 2, %39 ], [ 9, %38 ], [ 9, %38 ] - %60 = icmp ult i32 %25, %.2 - br i1 %60, label %.loopexit, label %61 +58: ; preds = %38, %38, %56, %50, %47, %42, %39 + %.161 = phi i32 [ %57, %56 ], [ %.06070, %50 ], [ %.06070, %47 ], [ %.06070, %42 ], [ %.06070, %39 ], [ %.06070, %38 ], [ %.06070, %38 ] + %.2 = phi i32 [ 5, %56 ], [ %53, %50 ], [ 11, %47 ], [ %46, %42 ], [ 2, %39 ], [ 9, %38 ], [ 9, %38 ] + %59 = icmp ult i32 %25, %.2 + br i1 %59, label %.loopexit, label %.thread -61: ; preds = %59 - %62 = add i32 %.2, %.1 +.thread: ; preds = %38, %38, %38, %54, %58 + %.269 = phi i32 [ %.2, %58 ], [ 1, %54 ], [ 1, %38 ], [ 1, %38 ], [ 1, %38 ] + %.16168 = phi i32 [ %.161, %58 ], [ %55, %54 ], [ %.06070, %38 ], [ %.06070, %38 ], [ %.06070, %38 ] + %60 = add i32 %.269, %.1 br label %.backedge -.loopexit: ; preds = %.backedge, %59, %38, %49, %40, %24, %15, %12, %9 - %.062 = phi i32 [ 0, %9 ], [ %.057.be, %.backedge ], [ %4, %59 ], [ %4, %38 ], [ %4, %49 ], [ %4, %40 ], [ %4, %24 ], [ %4, %15 ], [ %4, %12 ] +.loopexit: ; preds = %.backedge, %58, %38, %48, %40, %24, %15, %12, %9 + %.062 = phi i32 [ 0, %9 ], [ %.057.be, %.backedge ], [ %4, %58 ], [ %4, %38 ], [ %4, %48 ], [ %4, %40 ], [ %4, %24 ], [ %4, %15 ], [ %4, %12 ] ret i32 %.062 } diff --git a/bench/xgboost/optimized/c_api.cc.ll b/bench/xgboost/optimized/c_api.cc.ll index 37da4935abc..f1b1640e48e 100644 --- a/bench/xgboost/optimized/c_api.cc.ll +++ b/bench/xgboost/optimized/c_api.cc.ll @@ -47455,15 +47455,15 @@ _ZN7xgboost10StringViewC2EPKc.exit: ; preds = %74, %77 89: ; preds = %.noexc133 store ptr %18, ptr %13, align 8 %90 = invoke noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEv(ptr noundef nonnull align 8 dereferenceable(32) %18) - to label %91 unwind label %.body390 + to label %91 unwind label %.body398 91: ; preds = %89 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcPKcS7_(ptr noundef %90, ptr noundef nonnull @.str.129, ptr noundef nonnull getelementptr inbounds (i8, ptr @.str.129, i64 11)) #17 store ptr null, ptr %13, align 8 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_set_lengthEm(ptr noundef nonnull align 8 dereferenceable(32) %18, i64 noundef 11) - to label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit unwind label %.body390 + to label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit unwind label %.body398 -.body390: ; preds = %91, %89 +.body398: ; preds = %91, %89 %92 = landingpad { ptr, i32 } cleanup catch ptr @_ZTIN4dmlc5ErrorE @@ -47514,15 +47514,15 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit: ; pr 109: ; preds = %.noexc136 store ptr %20, ptr %12, align 8 %110 = invoke noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEv(ptr noundef nonnull align 8 dereferenceable(32) %20) - to label %111 unwind label %.body391 + to label %111 unwind label %.body399 111: ; preds = %109 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcPKcS7_(ptr noundef %110, ptr noundef nonnull @.str.129, ptr noundef nonnull getelementptr inbounds (i8, ptr @.str.129, i64 11)) #17 store ptr null, ptr %12, align 8 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_set_lengthEm(ptr noundef nonnull align 8 dereferenceable(32) %20, i64 noundef 11) - to label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit139 unwind label %.body391 + to label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit139 unwind label %.body399 -.body391: ; preds = %111, %109 +.body399: ; preds = %111, %109 %112 = landingpad { ptr, i32 } cleanup catch ptr @_ZTIN4dmlc5ErrorE @@ -47577,8 +47577,8 @@ _ZNK7xgboost4JsonixERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit1 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #17 br label %.body -.body: ; preds = %126, %.body390, %128 - %.pn = phi { ptr, i32 } [ %129, %128 ], [ %127, %126 ], [ %92, %.body390 ] +.body: ; preds = %126, %.body398, %128 + %.pn = phi { ptr, i32 } [ %129, %128 ], [ %127, %126 ], [ %92, %.body398 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #17 br label %756 @@ -47597,8 +47597,8 @@ _ZNK7xgboost4JsonixERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit1 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #17 br label %.body137 -.body137: ; preds = %130, %.body391, %132 - %.pn95 = phi { ptr, i32 } [ %133, %132 ], [ %131, %130 ], [ %112, %.body391 ] +.body137: ; preds = %130, %.body399, %132 + %.pn95 = phi { ptr, i32 } [ %133, %132 ], [ %131, %130 ], [ %112, %.body399 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #17 br label %756 @@ -47631,15 +47631,15 @@ _ZNK7xgboost4JsonixERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit1 141: ; preds = %.noexc144 store ptr %24, ptr %11, align 8 %142 = invoke noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEv(ptr noundef nonnull align 8 dereferenceable(32) %24) - to label %143 unwind label %.body394 + to label %143 unwind label %.body402 143: ; preds = %141 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcPKcS7_(ptr noundef %142, ptr noundef nonnull @.str.130, ptr noundef nonnull getelementptr inbounds (i8, ptr @.str.130, i64 13)) #17 store ptr null, ptr %11, align 8 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_set_lengthEm(ptr noundef nonnull align 8 dereferenceable(32) %24, i64 noundef 13) - to label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit147 unwind label %.body394 + to label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit147 unwind label %.body402 -.body394: ; preds = %143, %141 +.body402: ; preds = %143, %141 %144 = landingpad { ptr, i32 } cleanup catch ptr @_ZTIN4dmlc5ErrorE @@ -47690,15 +47690,15 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit147: ; 161: ; preds = %.noexc151 store ptr %26, ptr %10, align 8 %162 = invoke noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEv(ptr noundef nonnull align 8 dereferenceable(32) %26) - to label %163 unwind label %.body397 + to label %163 unwind label %.body405 163: ; preds = %161 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcPKcS7_(ptr noundef %162, ptr noundef nonnull @.str.130, ptr noundef nonnull getelementptr inbounds (i8, ptr @.str.130, i64 13)) #17 store ptr null, ptr %10, align 8 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_set_lengthEm(ptr noundef nonnull align 8 dereferenceable(32) %26, i64 noundef 13) - to label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit154 unwind label %.body397 + to label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit154 unwind label %.body405 -.body397: ; preds = %163, %161 +.body405: ; preds = %163, %161 %164 = landingpad { ptr, i32 } cleanup catch ptr @_ZTIN4dmlc5ErrorE @@ -47753,8 +47753,8 @@ _ZNK7xgboost4JsonixERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit1 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #17 br label %.body145 -.body145: ; preds = %178, %.body394, %180 - %.pn97 = phi { ptr, i32 } [ %181, %180 ], [ %179, %178 ], [ %144, %.body394 ] +.body145: ; preds = %178, %.body402, %180 + %.pn97 = phi { ptr, i32 } [ %181, %180 ], [ %179, %178 ], [ %144, %.body402 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %25) #17 br label %_ZNSt6vectorIiSaIiEED2Ev.exit275 @@ -47773,8 +47773,8 @@ _ZNK7xgboost4JsonixERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit1 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #17 br label %.body152 -.body152: ; preds = %182, %.body397, %184 - %.pn99 = phi { ptr, i32 } [ %185, %184 ], [ %183, %182 ], [ %164, %.body397 ] +.body152: ; preds = %182, %.body405, %184 + %.pn99 = phi { ptr, i32 } [ %185, %184 ], [ %183, %182 ], [ %164, %.body405 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #17 br label %_ZNSt6vectorIiSaIiEED2Ev.exit275 @@ -47802,15 +47802,15 @@ _ZNK7xgboost4JsonixERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit1 192: ; preds = %.noexc159 store ptr %28, ptr %9, align 8 %193 = invoke noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEv(ptr noundef nonnull align 8 dereferenceable(32) %28) - to label %194 unwind label %.body400 + to label %194 unwind label %.body408 194: ; preds = %192 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcPKcS7_(ptr noundef %193, ptr noundef nonnull @.str.131, ptr noundef nonnull getelementptr inbounds (i8, ptr @.str.131, i64 8)) #17 store ptr null, ptr %9, align 8 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_set_lengthEm(ptr noundef nonnull align 8 dereferenceable(32) %28, i64 noundef 8) - to label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit162 unwind label %.body400 + to label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit162 unwind label %.body408 -.body400: ; preds = %194, %192 +.body408: ; preds = %194, %192 %195 = landingpad { ptr, i32 } cleanup catch ptr @_ZTIN4dmlc5ErrorE @@ -47861,15 +47861,15 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit162: ; 212: ; preds = %.noexc166 store ptr %31, ptr %8, align 8 %213 = invoke noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7_M_dataEv(ptr noundef nonnull align 8 dereferenceable(32) %31) - to label %214 unwind label %.body403 + to label %214 unwind label %.body411 214: ; preds = %212 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_S_copy_charsEPcPKcS7_(ptr noundef %213, ptr noundef nonnull @.str.131, ptr noundef nonnull getelementptr inbounds (i8, ptr @.str.131, i64 8)) #17 store ptr null, ptr %8, align 8 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_set_lengthEm(ptr noundef nonnull align 8 dereferenceable(32) %31, i64 noundef 8) - to label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit169 unwind label %.body403 + to label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit169 unwind label %.body411 -.body403: ; preds = %214, %212 +.body411: ; preds = %214, %212 %215 = landingpad { ptr, i32 } cleanup catch ptr @_ZTIN4dmlc5ErrorE @@ -48061,8 +48061,8 @@ _ZNSt6vectorIiSaIiEE9push_backEOi.exit: ; preds = %_ZNSt6vectorIiSaIiE call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #17 br label %.body160 -.body160: ; preds = %276, %.body400, %278 - %.pn101 = phi { ptr, i32 } [ %279, %278 ], [ %277, %276 ], [ %195, %.body400 ] +.body160: ; preds = %276, %.body408, %278 + %.pn101 = phi { ptr, i32 } [ %279, %278 ], [ %277, %276 ], [ %195, %.body408 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #17 br label %_ZNSt6vectorIiSaIiEED2Ev.exit275 @@ -48081,8 +48081,8 @@ _ZNSt6vectorIiSaIiEE9push_backEOi.exit: ; preds = %_ZNSt6vectorIiSaIiE call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #17 br label %.body167 -.body167: ; preds = %280, %.body403, %282 - %.pn103 = phi { ptr, i32 } [ %283, %282 ], [ %281, %280 ], [ %215, %.body403 ] +.body167: ; preds = %280, %.body411, %282 + %.pn103 = phi { ptr, i32 } [ %283, %282 ], [ %281, %280 ], [ %215, %.body411 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #17 br label %_ZNSt6vectorIiSaIiEED2Ev.exit275 @@ -48781,7 +48781,7 @@ _ZNSt12_Vector_baseImSaImEE13_M_deallocateEPmm.exit.i: ; preds = %562, %.noexc28 br i1 %.not.i282, label %_ZSt7advanceIPKmmEvRT_T0_.exit.i, label %569 569: ; preds = %564 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %554, ptr noundef nonnull align 8 dereferenceable(16) %45, i64 16, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %554, ptr noundef nonnull align 8 dereferenceable(16) %45, i64 16, i1 false) %.pre.i = load ptr, ptr %565, align 8 %570 = getelementptr inbounds i8, ptr %554, i64 16 %.not.i16.i = icmp eq ptr %.pre.i, %570 @@ -48793,19 +48793,20 @@ _ZNSt12_Vector_baseImSaImEE13_M_deallocateEPmm.exit.i: ; preds = %562, %.noexc28 _ZSt7advanceIPKmmEvRT_T0_.exit.i: ; preds = %564 %.not.i.i.i.i.i17.i = icmp eq ptr %566, %554 - br i1 %.not.i.i.i.i.i17.i, label %_ZSt4copyIPKmPmET0_T_S4_S3_.exit18.i, label %572 + br i1 %.not.i.i.i.i.i17.i, label %_ZSt4copyIPKmPmET0_T_S4_S3_.exit18.i.thread, label %_ZSt4copyIPKmPmET0_T_S4_S3_.exit18.i -572: ; preds = %_ZSt7advanceIPKmmEvRT_T0_.exit.i - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %554, ptr noundef nonnull align 8 dereferenceable(1) %45, i64 %568, i1 false) +_ZSt4copyIPKmPmET0_T_S4_S3_.exit18.i: ; preds = %_ZSt7advanceIPKmmEvRT_T0_.exit.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %554, ptr noundef nonnull align 8 dereferenceable(1) %45, i64 %568, i1 false) %.pre26.i = load ptr, ptr %565, align 8 - br label %_ZSt4copyIPKmPmET0_T_S4_S3_.exit18.i - -_ZSt4copyIPKmPmET0_T_S4_S3_.exit18.i: ; preds = %572, %_ZSt7advanceIPKmmEvRT_T0_.exit.i - %573 = phi ptr [ %566, %_ZSt7advanceIPKmmEvRT_T0_.exit.i ], [ %.pre26.i, %572 ] %gepdiff = sub nuw nsw i64 16, %568 + br label %_ZSt4copyIPKmPmET0_T_S4_S3_.exit18.i.thread + +_ZSt4copyIPKmPmET0_T_S4_S3_.exit18.i.thread: ; preds = %_ZSt4copyIPKmPmET0_T_S4_S3_.exit18.i, %_ZSt7advanceIPKmmEvRT_T0_.exit.i + %572 = phi i64 [ %gepdiff, %_ZSt4copyIPKmPmET0_T_S4_S3_.exit18.i ], [ 16, %_ZSt7advanceIPKmmEvRT_T0_.exit.i ] + %573 = phi ptr [ %.pre26.i, %_ZSt4copyIPKmPmET0_T_S4_S3_.exit18.i ], [ %566, %_ZSt7advanceIPKmmEvRT_T0_.exit.i ] %.sink.i.i25.i.ptr = getelementptr inbounds i8, ptr %45, i64 %568 - call void @llvm.memmove.p0.p0.i64(ptr align 8 %573, ptr nonnull align 8 %.sink.i.i25.i.ptr, i64 %gepdiff, i1 false) - %574 = getelementptr inbounds i8, ptr %573, i64 %gepdiff + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %573, ptr nonnull align 8 %.sink.i.i25.i.ptr, i64 %572, i1 false) + %574 = getelementptr inbounds i8, ptr %573, i64 %572 store ptr %574, ptr %565, align 8 br label %_ZNSt6vectorImSaImEEaSESt16initializer_listImE.exit @@ -48959,7 +48960,7 @@ _ZNSt6vectorImSaImEE6resizeEm.exit: ; preds = %._ZNSt6vectorImSaIm call void @_ZNSt10unique_ptrINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt14default_deleteIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #17 br label %744 -_ZNSt6vectorImSaImEEaSESt16initializer_listImE.exit: ; preds = %_ZNSt12_Vector_baseImSaImEE13_M_deallocateEPmm.exit.i, %569, %571, %_ZSt4copyIPKmPmET0_T_S4_S3_.exit18.i, %_ZNSt6vectorImSaImEE6resizeEm.exit +_ZNSt6vectorImSaImEEaSESt16initializer_listImE.exit: ; preds = %_ZNSt12_Vector_baseImSaImEE13_M_deallocateEPmm.exit.i, %569, %571, %_ZSt4copyIPKmPmET0_T_S4_S3_.exit18.i.thread, %_ZNSt6vectorImSaImEE6resizeEm.exit %.not114 = icmp eq ptr %5, null br i1 %.not114, label %627, label %643 diff --git a/bench/yosys/optimized/calc.ll b/bench/yosys/optimized/calc.ll index 6fd092bc8e9..73182ce1750 100644 --- a/bench/yosys/optimized/calc.ll +++ b/bench/yosys/optimized/calc.ll @@ -9742,59 +9742,57 @@ _ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE9push_backERKS2_.exit: ; preds = %_ZNSt %114 = sub i64 %112, %113 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %111, i8 0, i64 24, i1 false) %.not.i.i.i.i.i = icmp eq ptr %.sroa.11.4, %.sroa.0.5 - br i1 %.not.i.i.i.i.i, label %.noexc65.thread, label %120 + br i1 %.not.i.i.i.i.i, label %.noexc65.thread, label %118 .noexc65.thread: ; preds = %._crit_edge166.thread, %._crit_edge166 - %115 = phi i64 [ 0, %._crit_edge166.thread ], [ %114, %._crit_edge166 ] - %116 = phi ptr [ %20, %._crit_edge166.thread ], [ %111, %._crit_edge166 ] + %115 = phi ptr [ %20, %._crit_edge166.thread ], [ %111, %._crit_edge166 ] %.sroa.0.0.lcssa208 = phi ptr [ null, %._crit_edge166.thread ], [ %.sroa.0.5, %._crit_edge166 ] + store ptr null, ptr %115, align 8 + %116 = getelementptr inbounds i8, ptr %0, i64 16 store ptr null, ptr %116, align 8 - %117 = getelementptr inbounds i8, ptr %0, i64 16 + %117 = getelementptr inbounds i8, ptr %0, i64 24 store ptr null, ptr %117, align 8 - %118 = getelementptr inbounds i8, ptr null, i64 %115 - %119 = getelementptr inbounds i8, ptr %0, i64 24 - store ptr %118, ptr %119, align 8 - br label %127 + br label %125 -120: ; preds = %._crit_edge166 - %121 = icmp slt i64 %114, 0 - br i1 %121, label %.noexc.i.i.i, label %_ZNSt16allocator_traitsISaIN5Yosys5RTLIL5StateEEE8allocateERS3_m.exit.i.i.i.i.i +118: ; preds = %._crit_edge166 + %119 = icmp slt i64 %114, 0 + br i1 %119, label %.noexc.i.i.i, label %_ZNSt16allocator_traitsISaIN5Yosys5RTLIL5StateEEE8allocateERS3_m.exit.i.i.i.i.i -.noexc.i.i.i: ; preds = %120 +.noexc.i.i.i: ; preds = %118 invoke void @_ZSt17__throw_bad_allocv() #16 to label %.noexc64 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp .noexc64: ; preds = %.noexc.i.i.i unreachable -_ZNSt16allocator_traitsISaIN5Yosys5RTLIL5StateEEE8allocateERS3_m.exit.i.i.i.i.i: ; preds = %120 - %122 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %114) #17 - to label %123 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp - -123: ; preds = %_ZNSt16allocator_traitsISaIN5Yosys5RTLIL5StateEEE8allocateERS3_m.exit.i.i.i.i.i - store ptr %122, ptr %111, align 8 - %124 = getelementptr inbounds i8, ptr %0, i64 16 - store ptr %122, ptr %124, align 8 - %125 = getelementptr inbounds i8, ptr %122, i64 %114 - %126 = getelementptr inbounds i8, ptr %0, i64 24 - store ptr %125, ptr %126, align 8 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %122, ptr align 1 %.sroa.0.5, i64 %114, i1 false) - br label %127 - -127: ; preds = %123, %.noexc65.thread - %.sroa.0.0.lcssa207 = phi ptr [ %.sroa.0.0.lcssa208, %.noexc65.thread ], [ %.sroa.0.5, %123 ] - %128 = phi ptr [ %118, %.noexc65.thread ], [ %125, %123 ] - %129 = phi ptr [ %117, %.noexc65.thread ], [ %124, %123 ] - store ptr %128, ptr %129, align 8 +_ZNSt16allocator_traitsISaIN5Yosys5RTLIL5StateEEE8allocateERS3_m.exit.i.i.i.i.i: ; preds = %118 + %120 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %114) #17 + to label %121 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp + +121: ; preds = %_ZNSt16allocator_traitsISaIN5Yosys5RTLIL5StateEEE8allocateERS3_m.exit.i.i.i.i.i + store ptr %120, ptr %111, align 8 + %122 = getelementptr inbounds i8, ptr %0, i64 16 + store ptr %120, ptr %122, align 8 + %123 = getelementptr inbounds i8, ptr %120, i64 %114 + %124 = getelementptr inbounds i8, ptr %0, i64 24 + store ptr %123, ptr %124, align 8 + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %120, ptr align 1 %.sroa.0.5, i64 %114, i1 false) + br label %125 + +125: ; preds = %121, %.noexc65.thread + %.sroa.0.0.lcssa207 = phi ptr [ %.sroa.0.0.lcssa208, %.noexc65.thread ], [ %.sroa.0.5, %121 ] + %126 = phi ptr [ null, %.noexc65.thread ], [ %123, %121 ] + %127 = phi ptr [ %116, %.noexc65.thread ], [ %122, %121 ] + store ptr %126, ptr %127, align 8 store i32 0, ptr %0, align 8 %.not.i.i.i66 = icmp eq ptr %.sroa.0.0.lcssa207, null - br i1 %.not.i.i.i66, label %_ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EED2Ev.exit67, label %130 + br i1 %.not.i.i.i66, label %_ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EED2Ev.exit67, label %128 -130: ; preds = %127 +128: ; preds = %125 tail call void @_ZdlPv(ptr noundef nonnull %.sroa.0.0.lcssa207) #18 br label %_ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EED2Ev.exit67 -_ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EED2Ev.exit67: ; preds = %127, %130 +_ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EED2Ev.exit67: ; preds = %125, %128 ret void } diff --git a/bench/z3/optimized/dyn_ack.cpp.ll b/bench/z3/optimized/dyn_ack.cpp.ll index 97dde007b23..5c02648bf09 100644 --- a/bench/z3/optimized/dyn_ack.cpp.ll +++ b/bench/z3/optimized/dyn_ack.cpp.ll @@ -12251,8 +12251,8 @@ if.then7.i: ; preds = %_ZN9__gnu_cxx5__ops if.then10.i: ; preds = %if.then7.i %incdec.ptr11.i = getelementptr inbounds i8, ptr %__last2.addr.0.i, i64 24 - %tobool.not.i.i.i.i.i24.i = icmp eq ptr %incdec.ptr11.i, %__buffer - br i1 %tobool.not.i.i.i.i.i24.i, label %if.end50, label %return.sink.split.i + %tobool.not.i.i.i.i.i20.i = icmp eq ptr %incdec.ptr11.i, %__buffer + br i1 %tobool.not.i.i.i.i.i20.i, label %if.end50, label %return.sink.split.i if.else15.i: ; preds = %_ZN9__gnu_cxx5__ops15_Iter_comp_iterIN3smt13app_triple_ltEEclIP6tripleIP3appS8_S8_ESA_EEbT_T0_.exit.i70 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %incdec.ptr8.i, ptr noundef nonnull align 8 dereferenceable(24) %__last2.addr.0.i, i64 24, i1 false) @@ -12266,12 +12266,12 @@ if.end19.i: ; preds = %if.else15.i return.sink.split.i: ; preds = %_ZSt4moveIP6tripleIP3appS2_S2_ES4_ET0_T_S6_S5_.exit51.thread, %if.then10.i %incdec.ptr11.sink.i = phi ptr [ %incdec.ptr11.i, %if.then10.i ], [ %add.ptr.i.i.i.i.i50177, %_ZSt4moveIP6tripleIP3appS2_S2_ES4_ET0_T_S6_S5_.exit51.thread ] %incdec.ptr8.lcssa.sink.i = phi ptr [ %incdec.ptr8.i, %if.then10.i ], [ %__last, %_ZSt4moveIP6tripleIP3appS2_S2_ES4_ET0_T_S6_S5_.exit51.thread ] - %sub.ptr.lhs.cast.i.i.i.i.i20.i = ptrtoint ptr %incdec.ptr11.sink.i to i64 - %sub.ptr.rhs.cast.i.i.i.i.i21.i = ptrtoint ptr %__buffer to i64 - %sub.ptr.sub.i.i.i.i.i22.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i20.i, %sub.ptr.rhs.cast.i.i.i.i.i21.i - %sub.ptr.div.neg.i.i.i.i.i23.i = sdiv exact i64 %sub.ptr.sub.i.i.i.i.i22.i, -24 - %add.ptr.i.i.i.i.i26.i = getelementptr inbounds %struct.triple, ptr %incdec.ptr8.lcssa.sink.i, i64 %sub.ptr.div.neg.i.i.i.i.i23.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i26.i, ptr align 8 %__buffer, i64 %sub.ptr.sub.i.i.i.i.i22.i, i1 false) + %sub.ptr.lhs.cast.i.i.i.i.i22.i = ptrtoint ptr %incdec.ptr11.sink.i to i64 + %sub.ptr.rhs.cast.i.i.i.i.i23.i = ptrtoint ptr %__buffer to i64 + %sub.ptr.sub.i.i.i.i.i24.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i22.i, %sub.ptr.rhs.cast.i.i.i.i.i23.i + %sub.ptr.div.neg.i.i.i.i.i25.i = sdiv exact i64 %sub.ptr.sub.i.i.i.i.i24.i, -24 + %add.ptr.i.i.i.i.i26.i = getelementptr inbounds %struct.triple, ptr %incdec.ptr8.lcssa.sink.i, i64 %sub.ptr.div.neg.i.i.i.i.i25.i + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i26.i, ptr align 8 %__buffer, i64 %sub.ptr.sub.i.i.i.i.i24.i, i1 false) br label %if.end50 if.else12: ; preds = %if.else @@ -12873,18 +12873,18 @@ if.then.i.i.i.i.i: ; preds = %if.then2 br label %_ZSt4moveIP6tripleIP3appS2_S2_ES4_ET0_T_S6_S5_.exit _ZSt4moveIP6tripleIP3appS2_S2_ES4_ET0_T_S6_S5_.exit: ; preds = %if.then2, %if.then.i.i.i.i.i - %tobool.not.i.i.i.i.i27 = icmp eq ptr %__middle, %__first - br i1 %tobool.not.i.i.i.i.i27, label %_ZSt13move_backwardIP6tripleIP3appS2_S2_ES4_ET0_T_S6_S5_.exit, label %if.then.i.i.i.i.i28 + %tobool.not.i.i.i.i.i24 = icmp eq ptr %__middle, %__first + br i1 %tobool.not.i.i.i.i.i24, label %_ZSt13move_backwardIP6tripleIP3appS2_S2_ES4_ET0_T_S6_S5_.exit, label %if.then.i.i.i.i.i25 -if.then.i.i.i.i.i28: ; preds = %_ZSt4moveIP6tripleIP3appS2_S2_ES4_ET0_T_S6_S5_.exit - %sub.ptr.rhs.cast.i.i.i.i.i25 = ptrtoint ptr %__first to i64 - %sub.ptr.sub.i.i.i.i.i26 = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i.i.i.i.i25 - %sub.ptr.div.neg.i.i.i.i.i = sdiv exact i64 %sub.ptr.sub.i.i.i.i.i26, -24 +if.then.i.i.i.i.i25: ; preds = %_ZSt4moveIP6tripleIP3appS2_S2_ES4_ET0_T_S6_S5_.exit + %sub.ptr.rhs.cast.i.i.i.i.i27 = ptrtoint ptr %__first to i64 + %sub.ptr.sub.i.i.i.i.i28 = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i.i.i.i.i27 + %sub.ptr.div.neg.i.i.i.i.i = sdiv exact i64 %sub.ptr.sub.i.i.i.i.i28, -24 %add.ptr.i.i.i.i.i29 = getelementptr inbounds %struct.triple, ptr %__last, i64 %sub.ptr.div.neg.i.i.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i29, ptr align 8 %__first, i64 %sub.ptr.sub.i.i.i.i.i26, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i29, ptr align 8 %__first, i64 %sub.ptr.sub.i.i.i.i.i28, i1 false) br label %_ZSt13move_backwardIP6tripleIP3appS2_S2_ES4_ET0_T_S6_S5_.exit -_ZSt13move_backwardIP6tripleIP3appS2_S2_ES4_ET0_T_S6_S5_.exit: ; preds = %_ZSt4moveIP6tripleIP3appS2_S2_ES4_ET0_T_S6_S5_.exit, %if.then.i.i.i.i.i28 +_ZSt13move_backwardIP6tripleIP3appS2_S2_ES4_ET0_T_S6_S5_.exit: ; preds = %_ZSt4moveIP6tripleIP3appS2_S2_ES4_ET0_T_S6_S5_.exit, %if.then.i.i.i.i.i25 br i1 %tobool.not.i.i.i.i.i, label %_ZSt4moveIP6tripleIP3appS2_S2_ES4_ET0_T_S6_S5_.exit36, label %if.then.i.i.i.i.i34 if.then.i.i.i.i.i34: ; preds = %_ZSt13move_backwardIP6tripleIP3appS2_S2_ES4_ET0_T_S6_S5_.exit @@ -12925,16 +12925,17 @@ if.then.i.i.i.i.i48: ; preds = %_ZSt4moveIP6tripleI br label %_ZSt4moveIP6tripleIP3appS2_S2_ES4_ET0_T_S6_S5_.exit50 _ZSt4moveIP6tripleIP3appS2_S2_ES4_ET0_T_S6_S5_.exit50: ; preds = %_ZSt4moveIP6tripleIP3appS2_S2_ES4_ET0_T_S6_S5_.exit43, %if.then.i.i.i.i.i48 - %sub.ptr.div.neg.i.i.i.i.i54 = sdiv exact i64 %sub.ptr.sub.i.i.i.i.i39, -24 - br i1 %tobool.not.i.i.i.i.i40, label %_ZSt13move_backwardIP6tripleIP3appS2_S2_ES4_ET0_T_S6_S5_.exit59, label %if.then.i.i.i.i.i56 + br i1 %tobool.not.i.i.i.i.i40, label %_ZSt13move_backwardIP6tripleIP3appS2_S2_ES4_ET0_T_S6_S5_.exit60, label %if.then.i.i.i.i.i52 -if.then.i.i.i.i.i56: ; preds = %_ZSt4moveIP6tripleIP3appS2_S2_ES4_ET0_T_S6_S5_.exit50 - %add.ptr.i.i.i.i.i57 = getelementptr inbounds %struct.triple, ptr %__last, i64 %sub.ptr.div.neg.i.i.i.i.i54 +if.then.i.i.i.i.i52: ; preds = %_ZSt4moveIP6tripleIP3appS2_S2_ES4_ET0_T_S6_S5_.exit50 + %sub.ptr.div.neg.i.i.i.i.i56 = sdiv exact i64 %sub.ptr.sub.i.i.i.i.i39, -24 + %add.ptr.i.i.i.i.i57 = getelementptr inbounds %struct.triple, ptr %__last, i64 %sub.ptr.div.neg.i.i.i.i.i56 tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i57, ptr align 8 %__buffer, i64 %sub.ptr.sub.i.i.i.i.i39, i1 false) - br label %_ZSt13move_backwardIP6tripleIP3appS2_S2_ES4_ET0_T_S6_S5_.exit59 + br label %_ZSt13move_backwardIP6tripleIP3appS2_S2_ES4_ET0_T_S6_S5_.exit60 -_ZSt13move_backwardIP6tripleIP3appS2_S2_ES4_ET0_T_S6_S5_.exit59: ; preds = %_ZSt4moveIP6tripleIP3appS2_S2_ES4_ET0_T_S6_S5_.exit50, %if.then.i.i.i.i.i56 - %add.ptr2.i.i.i.i.i58 = getelementptr inbounds %struct.triple, ptr %__last, i64 %sub.ptr.div.neg.i.i.i.i.i54 +_ZSt13move_backwardIP6tripleIP3appS2_S2_ES4_ET0_T_S6_S5_.exit60: ; preds = %_ZSt4moveIP6tripleIP3appS2_S2_ES4_ET0_T_S6_S5_.exit50, %if.then.i.i.i.i.i52 + %idx.neg1.pre-phi.i.i.i.i.i58 = phi i64 [ %sub.ptr.div.neg.i.i.i.i.i56, %if.then.i.i.i.i.i52 ], [ 0, %_ZSt4moveIP6tripleIP3appS2_S2_ES4_ET0_T_S6_S5_.exit50 ] + %add.ptr2.i.i.i.i.i59 = getelementptr inbounds %struct.triple, ptr %__last, i64 %idx.neg1.pre-phi.i.i.i.i.i58 br label %return if.else14: ; preds = %if.else5 @@ -13050,8 +13051,8 @@ for.cond.i.i.backedge: ; preds = %for.end41.i.i, %if. %__p.0.i.i.be = phi ptr [ %__p.1.lcssa.i.i, %if.end25.i.i ], [ %__p.3.lcssa.i.i, %for.end41.i.i ] br label %for.cond.i.i, !llvm.loop !103 -return: ; preds = %for.end41.i.i, %for.end.i.i, %for.body.i.i.i, %if.else.i.i, %if.else14, %if.then7, %if.then, %_ZSt13move_backwardIP6tripleIP3appS2_S2_ES4_ET0_T_S6_S5_.exit59, %_ZSt4moveIP6tripleIP3appS2_S2_ES4_ET0_T_S6_S5_.exit36 - %retval.0 = phi ptr [ %add.ptr.i.i.i.i.i35, %_ZSt4moveIP6tripleIP3appS2_S2_ES4_ET0_T_S6_S5_.exit36 ], [ %add.ptr2.i.i.i.i.i58, %_ZSt13move_backwardIP6tripleIP3appS2_S2_ES4_ET0_T_S6_S5_.exit59 ], [ %__first, %if.then ], [ %__last, %if.then7 ], [ %__last, %if.else14 ], [ %__first, %if.else.i.i ], [ %__middle, %for.body.i.i.i ], [ %add.ptr.i.i, %for.end.i.i ], [ %add.ptr.i.i, %for.end41.i.i ] +return: ; preds = %for.end41.i.i, %for.end.i.i, %for.body.i.i.i, %if.else.i.i, %if.else14, %if.then7, %if.then, %_ZSt13move_backwardIP6tripleIP3appS2_S2_ES4_ET0_T_S6_S5_.exit60, %_ZSt4moveIP6tripleIP3appS2_S2_ES4_ET0_T_S6_S5_.exit36 + %retval.0 = phi ptr [ %add.ptr.i.i.i.i.i35, %_ZSt4moveIP6tripleIP3appS2_S2_ES4_ET0_T_S6_S5_.exit36 ], [ %add.ptr2.i.i.i.i.i59, %_ZSt13move_backwardIP6tripleIP3appS2_S2_ES4_ET0_T_S6_S5_.exit60 ], [ %__first, %if.then ], [ %__last, %if.then7 ], [ %__last, %if.else14 ], [ %__first, %if.else.i.i ], [ %__middle, %for.body.i.i.i ], [ %add.ptr.i.i, %for.end.i.i ], [ %add.ptr.i.i, %for.end41.i.i ] ret ptr %retval.0 } diff --git a/bench/z3/optimized/pattern_inference.cpp.ll b/bench/z3/optimized/pattern_inference.cpp.ll index 0fc65439763..d1f69e23aa0 100644 --- a/bench/z3/optimized/pattern_inference.cpp.ll +++ b/bench/z3/optimized/pattern_inference.cpp.ll @@ -10726,8 +10726,8 @@ if.then3: ; preds = %for.body %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %__i.019 to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i.i.i.i.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 - %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i - %add.ptr.i.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr4, i64 %.pre.i.i.i.i.i + %idx.neg.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i + %add.ptr.i.i.i.i.i = getelementptr inbounds ptr, ptr %add.ptr4, i64 %idx.neg.i.i.i.i.i tail call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %add.ptr.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(1) %__first, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) store ptr %0, ptr %__first, align 8 br label %for.inc @@ -11214,20 +11214,20 @@ if.else35: ; preds = %for.cond if.then38: ; preds = %if.else35 %add.ptr41 = getelementptr inbounds i8, ptr %add.ptr40, i64 -8 %5 = load ptr, ptr %add.ptr41, align 8 - %tobool.not.i.i.i.i.i42 = icmp eq ptr %add.ptr41, %__p.0 - br i1 %tobool.not.i.i.i.i.i42, label %_ZSt13move_backwardIPP3appS2_ET0_T_S4_S3_.exit, label %if.then.i.i.i.i.i43 - -if.then.i.i.i.i.i43: ; preds = %if.then38 - %sub.ptr.lhs.cast.i.i.i.i.i39 = ptrtoint ptr %add.ptr41 to i64 - %sub.ptr.rhs.cast.i.i.i.i.i40 = ptrtoint ptr %__p.0 to i64 - %sub.ptr.sub.i.i.i.i.i41 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i39, %sub.ptr.rhs.cast.i.i.i.i.i40 - %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i41, 3 - %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i - %add.ptr.i.i.i.i.i44 = getelementptr inbounds ptr, ptr %add.ptr40, i64 %.pre.i.i.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i44, ptr nonnull align 8 %__p.0, i64 %sub.ptr.sub.i.i.i.i.i41, i1 false) + %tobool.not.i.i.i.i.i39 = icmp eq ptr %add.ptr41, %__p.0 + br i1 %tobool.not.i.i.i.i.i39, label %_ZSt13move_backwardIPP3appS2_ET0_T_S4_S3_.exit, label %if.then.i.i.i.i.i40 + +if.then.i.i.i.i.i40: ; preds = %if.then38 + %sub.ptr.lhs.cast.i.i.i.i.i41 = ptrtoint ptr %add.ptr41 to i64 + %sub.ptr.rhs.cast.i.i.i.i.i42 = ptrtoint ptr %__p.0 to i64 + %sub.ptr.sub.i.i.i.i.i43 = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i41, %sub.ptr.rhs.cast.i.i.i.i.i42 + %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i43, 3 + %idx.neg.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i + %add.ptr.i.i.i.i.i44 = getelementptr inbounds ptr, ptr %add.ptr40, i64 %idx.neg.i.i.i.i.i + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i44, ptr nonnull align 8 %__p.0, i64 %sub.ptr.sub.i.i.i.i.i43, i1 false) br label %_ZSt13move_backwardIPP3appS2_ET0_T_S4_S3_.exit -_ZSt13move_backwardIPP3appS2_ET0_T_S4_S3_.exit: ; preds = %if.then38, %if.then.i.i.i.i.i43 +_ZSt13move_backwardIPP3appS2_ET0_T_S4_S3_.exit: ; preds = %if.then38, %if.then.i.i.i.i.i40 store ptr %5, ptr %__p.0, align 8 br label %return @@ -11439,8 +11439,8 @@ if.then7.i: ; preds = %while.body.i54 if.then10.i: ; preds = %if.then7.i %incdec.ptr11.i = getelementptr inbounds i8, ptr %__last2.addr.0.i, i64 8 - %tobool.not.i.i.i.i.i24.i = icmp eq ptr %incdec.ptr11.i, %__buffer - br i1 %tobool.not.i.i.i.i.i24.i, label %_ZSt30__move_merge_adaptive_backwardIPP3appS2_S2_N9__gnu_cxx5__ops15_Iter_comp_iterIN21pattern_inference_cfg17pattern_weight_ltEEEEvT_S9_T0_SA_T1_T2_.exit, label %return.sink.split.i + %tobool.not.i.i.i.i.i20.i = icmp eq ptr %incdec.ptr11.i, %__buffer + br i1 %tobool.not.i.i.i.i.i20.i, label %_ZSt30__move_merge_adaptive_backwardIPP3appS2_S2_N9__gnu_cxx5__ops15_Iter_comp_iterIN21pattern_inference_cfg17pattern_weight_ltEEEEvT_S9_T0_SA_T1_T2_.exit, label %return.sink.split.i if.else15.i: ; preds = %while.body.i54 store ptr %4, ptr %incdec.ptr8.i, align 8 @@ -11454,13 +11454,13 @@ if.end19.i: ; preds = %if.else15.i return.sink.split.i: ; preds = %_ZSt4moveIPP3appS2_ET0_T_S4_S3_.exit51.thread, %if.then10.i %incdec.ptr11.sink.i = phi ptr [ %incdec.ptr11.i, %if.then10.i ], [ %add.ptr.i.i.i.i.i50141, %_ZSt4moveIPP3appS2_ET0_T_S4_S3_.exit51.thread ] %incdec.ptr8.lcssa.sink.i = phi ptr [ %incdec.ptr8.i, %if.then10.i ], [ %__last, %_ZSt4moveIPP3appS2_ET0_T_S4_S3_.exit51.thread ] - %sub.ptr.lhs.cast.i.i.i.i.i20.i = ptrtoint ptr %incdec.ptr11.sink.i to i64 - %sub.ptr.rhs.cast.i.i.i.i.i21.i = ptrtoint ptr %__buffer to i64 - %sub.ptr.sub.i.i.i.i.i22.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i20.i, %sub.ptr.rhs.cast.i.i.i.i.i21.i - %sub.ptr.div.i.i.i.i.i23.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i22.i, 3 - %.pre.i.i.i.i.i25.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i23.i - %add.ptr.i.i.i.i.i27.i = getelementptr inbounds ptr, ptr %incdec.ptr8.lcssa.sink.i, i64 %.pre.i.i.i.i.i25.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i27.i, ptr align 8 %__buffer, i64 %sub.ptr.sub.i.i.i.i.i22.i, i1 false) + %sub.ptr.lhs.cast.i.i.i.i.i22.i = ptrtoint ptr %incdec.ptr11.sink.i to i64 + %sub.ptr.rhs.cast.i.i.i.i.i23.i = ptrtoint ptr %__buffer to i64 + %sub.ptr.sub.i.i.i.i.i24.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i22.i, %sub.ptr.rhs.cast.i.i.i.i.i23.i + %sub.ptr.div.i.i.i.i.i25.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i24.i, 3 + %idx.neg.i.i.i.i.i26.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i25.i + %add.ptr.i.i.i.i.i27.i = getelementptr inbounds ptr, ptr %incdec.ptr8.lcssa.sink.i, i64 %idx.neg.i.i.i.i.i26.i + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i27.i, ptr align 8 %__buffer, i64 %sub.ptr.sub.i.i.i.i.i24.i, i1 false) br label %_ZSt30__move_merge_adaptive_backwardIPP3appS2_S2_N9__gnu_cxx5__ops15_Iter_comp_iterIN21pattern_inference_cfg17pattern_weight_ltEEEEvT_S9_T0_SA_T1_T2_.exit _ZSt30__move_merge_adaptive_backwardIPP3appS2_S2_N9__gnu_cxx5__ops15_Iter_comp_iterIN21pattern_inference_cfg17pattern_weight_ltEEEEvT_S9_T0_SA_T1_T2_.exit: ; preds = %if.else15.i, %_ZSt4moveIPP3appS2_ET0_T_S4_S3_.exit51, %if.then10.i, %return.sink.split.i @@ -11581,19 +11581,19 @@ if.then.i.i.i.i.i.i: ; preds = %if.then2.i br label %_ZSt4moveIPP3appS2_ET0_T_S4_S3_.exit.i109 _ZSt4moveIPP3appS2_ET0_T_S4_S3_.exit.i109: ; preds = %if.then.i.i.i.i.i.i, %if.then2.i - %tobool.not.i.i.i.i.i27.i = icmp eq ptr %__middle.tr129, %__first_cut.0 - br i1 %tobool.not.i.i.i.i.i27.i, label %_ZSt13move_backwardIPP3appS2_ET0_T_S4_S3_.exit.i, label %if.then.i.i.i.i.i28.i - -if.then.i.i.i.i.i28.i: ; preds = %_ZSt4moveIPP3appS2_ET0_T_S4_S3_.exit.i109 - %sub.ptr.rhs.cast.i.i.i.i.i25.i = ptrtoint ptr %__first_cut.0 to i64 - %sub.ptr.sub.i.i.i.i.i26.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i106, %sub.ptr.rhs.cast.i.i.i.i.i25.i - %sub.ptr.div.i.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i26.i, 3 - %.pre.i.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i - %add.ptr.i.i.i.i.i29.i = getelementptr inbounds ptr, ptr %__second_cut.0, i64 %.pre.i.i.i.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i29.i, ptr align 8 %__first_cut.0, i64 %sub.ptr.sub.i.i.i.i.i26.i, i1 false) + %tobool.not.i.i.i.i.i24.i = icmp eq ptr %__middle.tr129, %__first_cut.0 + br i1 %tobool.not.i.i.i.i.i24.i, label %_ZSt13move_backwardIPP3appS2_ET0_T_S4_S3_.exit.i, label %if.then.i.i.i.i.i25.i + +if.then.i.i.i.i.i25.i: ; preds = %_ZSt4moveIPP3appS2_ET0_T_S4_S3_.exit.i109 + %sub.ptr.rhs.cast.i.i.i.i.i27.i = ptrtoint ptr %__first_cut.0 to i64 + %sub.ptr.sub.i.i.i.i.i28.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i106, %sub.ptr.rhs.cast.i.i.i.i.i27.i + %sub.ptr.div.i.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i28.i, 3 + %idx.neg.i.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i + %add.ptr.i.i.i.i.i29.i = getelementptr inbounds ptr, ptr %__second_cut.0, i64 %idx.neg.i.i.i.i.i.i + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i29.i, ptr align 8 %__first_cut.0, i64 %sub.ptr.sub.i.i.i.i.i28.i, i1 false) br label %_ZSt13move_backwardIPP3appS2_ET0_T_S4_S3_.exit.i -_ZSt13move_backwardIPP3appS2_ET0_T_S4_S3_.exit.i: ; preds = %if.then.i.i.i.i.i28.i, %_ZSt4moveIPP3appS2_ET0_T_S4_S3_.exit.i109 +_ZSt13move_backwardIPP3appS2_ET0_T_S4_S3_.exit.i: ; preds = %if.then.i.i.i.i.i25.i, %_ZSt4moveIPP3appS2_ET0_T_S4_S3_.exit.i109 br i1 %tobool.not.i.i.i.i.i.i108, label %_ZSt4moveIPP3appS2_ET0_T_S4_S3_.exit36.i, label %if.then.i.i.i.i.i34.i if.then.i.i.i.i.i34.i: ; preds = %_ZSt13move_backwardIPP3appS2_ET0_T_S4_S3_.exit.i @@ -11634,25 +11634,26 @@ if.then.i.i.i.i.i48.i: ; preds = %_ZSt4moveIPP3appS2_ br label %_ZSt4moveIPP3appS2_ET0_T_S4_S3_.exit50.i _ZSt4moveIPP3appS2_ET0_T_S4_S3_.exit50.i: ; preds = %if.then.i.i.i.i.i48.i, %_ZSt4moveIPP3appS2_ET0_T_S4_S3_.exit43.i - %sub.ptr.div.i.i.i.i.i54.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i39.i, 3 - %.pre.i.i.i.i.i56.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i54.i - br i1 %tobool.not.i.i.i.i.i40.i, label %_ZSt13move_backwardIPP3appS2_ET0_T_S4_S3_.exit60.i, label %if.then.i.i.i.i.i57.i + br i1 %tobool.not.i.i.i.i.i40.i, label %_ZSt13move_backwardIPP3appS2_ET0_T_S4_S3_.exit61.i, label %if.then.i.i.i.i.i52.i -if.then.i.i.i.i.i57.i: ; preds = %_ZSt4moveIPP3appS2_ET0_T_S4_S3_.exit50.i - %add.ptr.i.i.i.i.i58.i = getelementptr inbounds ptr, ptr %__second_cut.0, i64 %.pre.i.i.i.i.i56.i +if.then.i.i.i.i.i52.i: ; preds = %_ZSt4moveIPP3appS2_ET0_T_S4_S3_.exit50.i + %sub.ptr.div.i.i.i.i.i56.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i39.i, 3 + %idx.neg.i.i.i.i.i57.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i56.i + %add.ptr.i.i.i.i.i58.i = getelementptr inbounds ptr, ptr %__second_cut.0, i64 %idx.neg.i.i.i.i.i57.i tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %add.ptr.i.i.i.i.i58.i, ptr align 8 %__buffer, i64 %sub.ptr.sub.i.i.i.i.i39.i, i1 false) - br label %_ZSt13move_backwardIPP3appS2_ET0_T_S4_S3_.exit60.i + br label %_ZSt13move_backwardIPP3appS2_ET0_T_S4_S3_.exit61.i -_ZSt13move_backwardIPP3appS2_ET0_T_S4_S3_.exit60.i: ; preds = %if.then.i.i.i.i.i57.i, %_ZSt4moveIPP3appS2_ET0_T_S4_S3_.exit50.i - %add.ptr2.i.i.i.i.i59.i = getelementptr inbounds ptr, ptr %__second_cut.0, i64 %.pre.i.i.i.i.i56.i +_ZSt13move_backwardIPP3appS2_ET0_T_S4_S3_.exit61.i: ; preds = %if.then.i.i.i.i.i52.i, %_ZSt4moveIPP3appS2_ET0_T_S4_S3_.exit50.i + %idx.neg1.pre-phi.i.i.i.i.i59.i = phi i64 [ %idx.neg.i.i.i.i.i57.i, %if.then.i.i.i.i.i52.i ], [ 0, %_ZSt4moveIPP3appS2_ET0_T_S4_S3_.exit50.i ] + %add.ptr2.i.i.i.i.i60.i = getelementptr inbounds ptr, ptr %__second_cut.0, i64 %idx.neg1.pre-phi.i.i.i.i.i59.i br label %_ZSt17__rotate_adaptiveIPP3appS2_lET_S3_S3_S3_T1_S4_T0_S4_.exit if.else14.i: ; preds = %if.else5.i %call.i.i111 = tail call noundef ptr @_ZNSt3_V28__rotateIPP3appEET_S4_S4_S4_St26random_access_iterator_tag(ptr noundef %__first_cut.0, ptr noundef %__middle.tr129, ptr noundef %__second_cut.0) br label %_ZSt17__rotate_adaptiveIPP3appS2_lET_S3_S3_S3_T1_S4_T0_S4_.exit -_ZSt17__rotate_adaptiveIPP3appS2_lET_S3_S3_S3_T1_S4_T0_S4_.exit: ; preds = %if.then.i104, %_ZSt4moveIPP3appS2_ET0_T_S4_S3_.exit36.i, %if.then7.i110, %_ZSt13move_backwardIPP3appS2_ET0_T_S4_S3_.exit60.i, %if.else14.i - %retval.0.i = phi ptr [ %add.ptr.i.i.i.i.i35.i, %_ZSt4moveIPP3appS2_ET0_T_S4_S3_.exit36.i ], [ %add.ptr2.i.i.i.i.i59.i, %_ZSt13move_backwardIPP3appS2_ET0_T_S4_S3_.exit60.i ], [ %call.i.i111, %if.else14.i ], [ %__first_cut.0, %if.then.i104 ], [ %__second_cut.0, %if.then7.i110 ] +_ZSt17__rotate_adaptiveIPP3appS2_lET_S3_S3_S3_T1_S4_T0_S4_.exit: ; preds = %if.then.i104, %_ZSt4moveIPP3appS2_ET0_T_S4_S3_.exit36.i, %if.then7.i110, %_ZSt13move_backwardIPP3appS2_ET0_T_S4_S3_.exit61.i, %if.else14.i + %retval.0.i = phi ptr [ %add.ptr.i.i.i.i.i35.i, %_ZSt4moveIPP3appS2_ET0_T_S4_S3_.exit36.i ], [ %add.ptr2.i.i.i.i.i60.i, %_ZSt13move_backwardIPP3appS2_ET0_T_S4_S3_.exit61.i ], [ %call.i.i111, %if.else14.i ], [ %__first_cut.0, %if.then.i104 ], [ %__second_cut.0, %if.then7.i110 ] tail call void @_ZSt16__merge_adaptiveIPP3applS2_N9__gnu_cxx5__ops15_Iter_comp_iterIN21pattern_inference_cfg17pattern_weight_ltEEEEvT_S9_S9_T0_SA_T1_SA_T2_(ptr noundef %__first.tr128, ptr noundef %__first_cut.0, ptr noundef %retval.0.i, i64 noundef %__len11.0, i64 noundef %__len22.0, ptr noundef %__buffer, i64 noundef %__buffer_size, i64 %__comp.coerce) %sub44 = sub nsw i64 %__len2.tr132, %__len22.0 %cmp.not = icmp sgt i64 %sub, %sub44 diff --git a/bench/zed-rs/optimized/08rfmg7gqi4939tj99psx2cc1.ll b/bench/zed-rs/optimized/08rfmg7gqi4939tj99psx2cc1.ll index b897674266f..9f3bf44b9b2 100644 --- a/bench/zed-rs/optimized/08rfmg7gqi4939tj99psx2cc1.ll +++ b/bench/zed-rs/optimized/08rfmg7gqi4939tj99psx2cc1.ll @@ -3542,7 +3542,7 @@ _ZN4core5slice4sort6shared5pivot12choose_pivot17h8bcb470ae1e12a35E.exit: ; preds call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %10, ptr noundef nonnull align 8 dereferenceable(40) %347, i64 40, i1 false) br i1 %13, label %.thread, label %348 -_ZN4core5slice4sort6shared9smallsort31small_sort_general_with_scratch17hb6eecdf77fc0016cE.exit: ; preds = %108, %.outer._crit_edge, %328 +_ZN4core5slice4sort6shared9smallsort31small_sort_general_with_scratch17hb6eecdf77fc0016cE.exit: ; preds = %.outer._crit_edge.thread, %108, %.outer._crit_edge, %328 ret void 348: ; preds = %_ZN4core5slice4sort6shared5pivot12choose_pivot17h8bcb470ae1e12a35E.exit @@ -4062,7 +4062,7 @@ select.unfold42.i.i.i116: ; preds = %._crit_edge.i.i33.i call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %.sroa.0.0.ph177, ptr nonnull align 8 %2, i64 %605, i1 false), !alias.scope !1421 %606 = sub i64 %.sroa.12.0170, %.sroa.11.1.lcssa.i77 %.not.i80 = icmp eq i64 %.sroa.12.0170, %.sroa.11.1.lcssa.i77 - br i1 %.not.i80, label %_ZN4core5slice4sort6stable9quicksort16stable_partition17hf6448b22dd0f46f9E.exit, label %.lr.ph21.i81 + br i1 %.not.i80, label %.outer._crit_edge.thread, label %.lr.ph21.i81 .lr.ph21.i81: ; preds = %604 %607 = getelementptr { { { { { ptr, ptr } }, {} }, {} }, i64, i64, i8, [7 x i8] }, ptr %.sroa.0.0.ph177, i64 %.sroa.11.1.lcssa.i77 @@ -4078,10 +4078,14 @@ select.unfold42.i.i.i116: ; preds = %._crit_edge.i.i33.i %exitcond.not.i83 = icmp eq i64 %609, %606 br i1 %exitcond.not.i83, label %_ZN4core5slice4sort6stable9quicksort16stable_partition17hf6448b22dd0f46f9E.exit, label %608 -_ZN4core5slice4sort6stable9quicksort16stable_partition17hf6448b22dd0f46f9E.exit: ; preds = %608, %604 +_ZN4core5slice4sort6stable9quicksort16stable_partition17hf6448b22dd0f46f9E.exit: ; preds = %608 %613 = icmp ugt i64 %.sroa.11.1.lcssa.i77, %.sroa.12.0170 br i1 %613, label %614, label %"_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hbdeb1045481a4eedE.exit" +.outer._crit_edge.thread: ; preds = %604 + call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %10) + br label %_ZN4core5slice4sort6shared9smallsort31small_sort_general_with_scratch17hb6eecdf77fc0016cE.exit + 614: ; preds = %_ZN4core5slice4sort6stable9quicksort16stable_partition17hf6448b22dd0f46f9E.exit call void @_ZN4core5slice5index26slice_start_index_len_fail17h98d5080ba351a62cE(i64 noundef %.sroa.11.1.lcssa.i77, i64 noundef %.sroa.12.0170, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.abc41d5a466de847bc16573da85883aa.33) #28, !noalias !1428 unreachable diff --git a/bench/zxing/optimized/DMDetector.cpp.ll b/bench/zxing/optimized/DMDetector.cpp.ll index 6eac9cb18cb..f0b2611a3fc 100644 --- a/bench/zxing/optimized/DMDetector.cpp.ll +++ b/bench/zxing/optimized/DMDetector.cpp.ll @@ -4189,24 +4189,19 @@ define linkonce_odr noundef double @_ZN5ZXing10DataMatrix16DMRegressionLine7modu 16: ; preds = %5 %.not = icmp eq ptr %8, %9 - br i1 %.not, label %_ZNSt6vectorIdSaIdEE7reserveEm.exit, label %_ZNSt12_Vector_baseIdSaIdEE11_M_allocateEm.exit.i + br i1 %.not, label %._crit_edge, label %_ZNSt12_Vector_baseIdSaIdEE11_M_allocateEm.exit.i _ZNSt12_Vector_baseIdSaIdEE11_M_allocateEm.exit.i: ; preds = %16 %17 = ashr exact i64 %12, 1 %18 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %17) #18 - to label %_ZNSt12_Vector_baseIdSaIdEE13_M_deallocateEPdm.exit.i unwind label %.thread.loopexit.split-lp + to label %_ZNSt6vectorIdSaIdEE7reserveEm.exit unwind label %.thread.loopexit.split-lp -_ZNSt12_Vector_baseIdSaIdEE13_M_deallocateEPdm.exit.i: ; preds = %_ZNSt12_Vector_baseIdSaIdEE11_M_allocateEm.exit.i - %19 = getelementptr inbounds double, ptr %18, i64 %13 - br label %_ZNSt6vectorIdSaIdEE7reserveEm.exit - -_ZNSt6vectorIdSaIdEE7reserveEm.exit: ; preds = %16, %_ZNSt12_Vector_baseIdSaIdEE13_M_deallocateEPdm.exit.i - %.sroa.15.1 = phi ptr [ %19, %_ZNSt12_Vector_baseIdSaIdEE13_M_deallocateEPdm.exit.i ], [ null, %16 ] - %.sroa.8.1 = phi ptr [ %18, %_ZNSt12_Vector_baseIdSaIdEE13_M_deallocateEPdm.exit.i ], [ null, %16 ] - %20 = icmp ugt i64 %12, 16 - br i1 %20, label %.lr.ph, label %._crit_edge +_ZNSt6vectorIdSaIdEE7reserveEm.exit: ; preds = %_ZNSt12_Vector_baseIdSaIdEE11_M_allocateEm.exit.i + %19 = icmp ugt i64 %12, 16 + br i1 %19, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %_ZNSt6vectorIdSaIdEE7reserveEm.exit + %20 = getelementptr inbounds double, ptr %18, i64 %13 %21 = getelementptr inbounds i8, ptr %0, i64 40 %22 = getelementptr inbounds i8, ptr %0, i64 48 %23 = getelementptr inbounds i8, ptr %0, i64 24 @@ -4217,9 +4212,9 @@ _ZNSt6vectorIdSaIdEE7reserveEm.exit: ; preds = %16, %_ZNSt12_Vector 25: ; preds = %.lr.ph, %_ZNSt6vectorIdSaIdEE9push_backEOd.exit %26 = phi ptr [ %9, %.lr.ph ], [ %75, %_ZNSt6vectorIdSaIdEE9push_backEOd.exit ] %.065247 = phi i64 [ 1, %.lr.ph ], [ %73, %_ZNSt6vectorIdSaIdEE9push_backEOd.exit ] - %.sroa.0193.1246 = phi ptr [ %.sroa.8.1, %.lr.ph ], [ %.sroa.0193.3, %_ZNSt6vectorIdSaIdEE9push_backEOd.exit ] - %.sroa.8.0245 = phi ptr [ %.sroa.8.1, %.lr.ph ], [ %.sroa.8.2, %_ZNSt6vectorIdSaIdEE9push_backEOd.exit ] - %.sroa.15.0244 = phi ptr [ %.sroa.15.1, %.lr.ph ], [ %.sroa.15.2, %_ZNSt6vectorIdSaIdEE9push_backEOd.exit ] + %.sroa.0193.1246 = phi ptr [ %18, %.lr.ph ], [ %.sroa.0193.3, %_ZNSt6vectorIdSaIdEE9push_backEOd.exit ] + %.sroa.8.0245 = phi ptr [ %18, %.lr.ph ], [ %.sroa.8.2, %_ZNSt6vectorIdSaIdEE9push_backEOd.exit ] + %.sroa.15.0244 = phi ptr [ %20, %.lr.ph ], [ %.sroa.15.2, %_ZNSt6vectorIdSaIdEE9push_backEOd.exit ] %27 = getelementptr %"struct.ZXing::PointT.0", ptr %26, i64 %.065247 %.sroa.048.0.copyload = load double, ptr %27, align 8 %.sroa.249.0..sroa_idx = getelementptr inbounds i8, ptr %27, i64 8 @@ -4376,11 +4371,11 @@ _ZNSt6vectorIdSaIdEED2Ev.exit: ; preds = %.thread.loopexit, % _ZNSt6vectorIdSaIdEED2Ev.exit77: ; preds = %_ZNSt6vectorIdSaIdEED2Ev.exit, %83 resume { ptr, i32 } %lpad.phi210 -._crit_edge: ; preds = %_ZNSt6vectorIdSaIdEE9push_backEOd.exit, %_ZNSt6vectorIdSaIdEE7reserveEm.exit - %.sroa.8.0.lcssa = phi ptr [ %.sroa.8.1, %_ZNSt6vectorIdSaIdEE7reserveEm.exit ], [ %.sroa.8.2, %_ZNSt6vectorIdSaIdEE9push_backEOd.exit ] - %.sroa.0193.1.lcssa = phi ptr [ %.sroa.8.1, %_ZNSt6vectorIdSaIdEE7reserveEm.exit ], [ %.sroa.0193.3, %_ZNSt6vectorIdSaIdEE9push_backEOd.exit ] - %.lcssa235 = phi ptr [ %8, %_ZNSt6vectorIdSaIdEE7reserveEm.exit ], [ %74, %_ZNSt6vectorIdSaIdEE9push_backEOd.exit ] - %.lcssa = phi ptr [ %9, %_ZNSt6vectorIdSaIdEE7reserveEm.exit ], [ %75, %_ZNSt6vectorIdSaIdEE9push_backEOd.exit ] +._crit_edge: ; preds = %_ZNSt6vectorIdSaIdEE9push_backEOd.exit, %16, %_ZNSt6vectorIdSaIdEE7reserveEm.exit + %.sroa.8.0.lcssa = phi ptr [ %18, %_ZNSt6vectorIdSaIdEE7reserveEm.exit ], [ null, %16 ], [ %.sroa.8.2, %_ZNSt6vectorIdSaIdEE9push_backEOd.exit ] + %.sroa.0193.1.lcssa = phi ptr [ %18, %_ZNSt6vectorIdSaIdEE7reserveEm.exit ], [ null, %16 ], [ %.sroa.0193.3, %_ZNSt6vectorIdSaIdEE9push_backEOd.exit ] + %.lcssa235 = phi ptr [ %8, %_ZNSt6vectorIdSaIdEE7reserveEm.exit ], [ %8, %16 ], [ %74, %_ZNSt6vectorIdSaIdEE9push_backEOd.exit ] + %.lcssa = phi ptr [ %9, %_ZNSt6vectorIdSaIdEE7reserveEm.exit ], [ %9, %16 ], [ %75, %_ZNSt6vectorIdSaIdEE9push_backEOd.exit ] %84 = getelementptr inbounds i8, ptr %.lcssa235, i64 -16 %85 = load double, ptr %84, align 8 %86 = load double, ptr %.lcssa, align 8 @@ -4886,7 +4881,7 @@ _ZN5ZXing10DataMatrix16DMRegressionLine7averageISt6vectorIdSaIdEEZNS1_7modulesEN br label %_ZNSt6vectorIdSaIdEED2Ev.exit139 _ZNSt6vectorIdSaIdEED2Ev.exit139: ; preds = %._crit_edge, %306, %307 - %.064287 = phi double [ %.064, %306 ], [ %.064, %307 ], [ 0.000000e+00, %._crit_edge ] + %.064289 = phi double [ %.064, %306 ], [ %.064, %307 ], [ 0.000000e+00, %._crit_edge ] %.not.i.i.i140 = icmp eq ptr %.sroa.0193.1.lcssa, null br i1 %.not.i.i.i140, label %_ZNSt6vectorIdSaIdEED2Ev.exit141, label %308 @@ -4895,7 +4890,7 @@ _ZNSt6vectorIdSaIdEED2Ev.exit139: ; preds = %._crit_edge, %306, br label %_ZNSt6vectorIdSaIdEED2Ev.exit141 _ZNSt6vectorIdSaIdEED2Ev.exit141: ; preds = %_ZNSt6vectorIdSaIdEED2Ev.exit139, %308 - ret double %.064287 + ret double %.064289 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index 820278fb20a..6af15f0b684 100755 --- a/scripts/setup_pre_commit_patch.sh +++ b/scripts/setup_pre_commit_patch.sh @@ -2,7 +2,7 @@ set -euo pipefail shopt -s inherit_errexit -export GITHUB_PATCH_ID="/llvm-project/commit/" +export GITHUB_PATCH_ID=llvm/llvm-project/pull/112838 # Please rebase manually # git fetch origin