diff --git a/bench/abc/optimized/abcExact.ll b/bench/abc/optimized/abcExact.ll index 32ebaed4bc9..095c072a525 100644 --- a/bench/abc/optimized/abcExact.ll +++ b/bench/abc/optimized/abcExact.ll @@ -11857,9 +11857,9 @@ Ses_CheckGatesConsistency.exit._crit_edge: ; preds = %Ses_CheckGatesConsi br i1 %96, label %.lr.ph81.i, label %Ses_ManDeriveTruth.exit .lr.ph81.i: ; preds = %90 - %wide.trip.count96.i = zext nneg i8 %93 to i64 %97 = getelementptr inbounds nuw i8, ptr %91, i64 3 %98 = load i32, ptr %56, align 4, !tbaa !96 + %wide.trip.count96.i = zext nneg i8 %93 to i64 br label %99 99: ; preds = %.loopexit.i, %.lr.ph81.i diff --git a/bench/abseil-cpp/optimized/cord_rep_btree.ll b/bench/abseil-cpp/optimized/cord_rep_btree.ll index e90a845ca07..2efa707f7b9 100644 --- a/bench/abseil-cpp/optimized/cord_rep_btree.ll +++ b/bench/abseil-cpp/optimized/cord_rep_btree.ll @@ -1942,32 +1942,31 @@ _ZN4absl13cord_internal12CordRepBtree7AddEdgeILNS1_8EdgeTypeE1EEENS1_8OpResultEb %.sroa.11.0 = phi ptr [ %74, %.loopexit ], [ %2, %_ZN4absl13cord_internal12_GLOBAL__N_115StackOperationsILNS0_12CordRepBtree8EdgeTypeE1EE10BuildStackEPS3_i.exit ] %.sroa.0.0 = phi i64 [ %73, %.loopexit ], [ %1, %_ZN4absl13cord_internal12_GLOBAL__N_115StackOperationsILNS0_12CordRepBtree8EdgeTypeE1EE10BuildStackEPS3_i.exit ] %.059 = phi ptr [ %.2.i.i, %.loopexit ], [ %0, %_ZN4absl13cord_internal12_GLOBAL__N_115StackOperationsILNS0_12CordRepBtree8EdgeTypeE1EE10BuildStackEPS3_i.exit ] - %141 = tail call noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #20 - %142 = getelementptr inbounds nuw i8, ptr %141, i64 8 - store i32 2, ptr %142, align 4, !tbaa !24 - %143 = getelementptr inbounds nuw i8, ptr %141, i64 12 - store i8 3, ptr %143, align 4, !tbaa !25 - %144 = getelementptr inbounds nuw i8, ptr %141, i64 13 - store i8 0, ptr %144, align 1, !tbaa !4 - %145 = getelementptr inbounds nuw i8, ptr %141, i64 14 - store i8 0, ptr %145, align 2, !tbaa !4 - %146 = getelementptr inbounds nuw i8, ptr %5, i64 8 + %141 = getelementptr inbounds nuw i8, ptr %5, i64 8 br label %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.lr.ph.i _ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.lr.ph.i: ; preds = %198, %140 - %147 = phi ptr [ %141, %140 ], [ %199, %198 ] - %.261136 = phi ptr [ %.059, %140 ], [ %185, %198 ] - %.063135 = phi i32 [ %10, %140 ], [ %188, %198 ] - %.sroa.0.1134 = phi i64 [ %.sroa.0.0, %140 ], [ %183, %198 ] - %.sroa.11.1133 = phi ptr [ %.sroa.11.0, %140 ], [ %184, %198 ] - %148 = getelementptr inbounds nuw i8, ptr %147, i64 16 + %147 = phi ptr [ %.sroa.11.0, %140 ], [ %183, %197 ] + %.261136 = phi i64 [ %.sroa.0.0, %140 ], [ %182, %197 ] + %.063135 = phi i32 [ %10, %140 ], [ %188, %197 ] + %.sroa.0.1134 = phi ptr [ %.059, %140 ], [ %184, %197 ] + %142 = tail call noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #20 + %148 = getelementptr inbounds nuw i8, ptr %142, i64 8 + store i32 2, ptr %143, align 4, !tbaa !24 + %144 = getelementptr inbounds nuw i8, ptr %142, i64 12 + store i8 3, ptr %144, align 4, !tbaa !25 + %145 = getelementptr inbounds nuw i8, ptr %142, i64 13 + store i8 0, ptr %145, align 1, !tbaa !4 + %146 = getelementptr inbounds nuw i8, ptr %142, i64 14 + store i8 0, ptr %146, align 2, !tbaa !4 + %147 = getelementptr inbounds nuw i8, ptr %142, i64 16 br label %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.i _ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.i: ; preds = %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.i, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.lr.ph.i %.029.i = phi i64 [ 0, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.lr.ph.i ], [ %169, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.i ] %.01828.i = phi i64 [ 0, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.lr.ph.i ], [ %170, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.i ] - %.sroa.6.027.i = phi ptr [ %.sroa.11.1133, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.lr.ph.i ], [ %174, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.i ] - %.sroa.0.026.i = phi i64 [ %.sroa.0.1134, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.lr.ph.i ], [ %173, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.i ] + %.sroa.6.027.i = phi ptr [ %.sroa.11.1, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.lr.ph.i ], [ %174, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.i ] + %.sroa.0.026.i = phi i64 [ %.sroa.0.1, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.lr.ph.i ], [ %173, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.i ] %149 = add i64 %.sroa.0.026.i, %3 %150 = icmp ult i64 %149, 20 %spec.store.select.i.i.i = tail call i64 @llvm.umin.i64(i64 %149, i64 4083) @@ -2001,7 +2000,7 @@ _ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEES store i64 %.sroa.speculated.i, ptr %157, align 8, !tbaa !7 %169 = add i64 %.sroa.speculated.i, %.029.i %170 = add nuw nsw i64 %.01828.i, 1 - %171 = getelementptr inbounds nuw ptr, ptr %148, i64 %.01828.i + %171 = getelementptr inbounds nuw ptr, ptr %147, i64 %.01828.i store ptr %157, ptr %171, align 8, !tbaa !17 %172 = getelementptr inbounds nuw i8, ptr %157, i64 13 tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %172, ptr align 1 %.sroa.6.027.i, i64 %.sroa.speculated.i, i1 false) @@ -2014,28 +2013,28 @@ _ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEES _ZN4absl13cord_internal12CordRepBtree7NewLeafILNS1_8EdgeTypeE1EEEPS1_St17basic_string_viewIcSt11char_traitsIcEEm.exit: ; preds = %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.i %177 = trunc i64 %170 to i8 - %178 = getelementptr inbounds nuw i8, ptr %147, i64 15 - store i64 %169, ptr %147, align 8, !tbaa !7 + %178 = getelementptr inbounds nuw i8, ptr %142, i64 15 + store i64 %169, ptr %142, align 8, !tbaa !7 store i8 %177, ptr %178, align 1, !tbaa !4 - %.not = icmp eq i64 %169, %.sroa.0.1134 + %.not = icmp eq i64 %169, %.sroa.0.1 br i1 %.not, label %.thread99, label %180 .thread99: ; preds = %_ZN4absl13cord_internal12CordRepBtree7NewLeafILNS1_8EdgeTypeE1EEEPS1_St17basic_string_viewIcSt11char_traitsIcEEm.exit - %179 = call fastcc noundef ptr @_ZN4absl13cord_internal12_GLOBAL__N_115StackOperationsILNS0_12CordRepBtree8EdgeTypeE1EE6UnwindILb0EEEPS3_S7_imNS3_8OpResultE(ptr noundef nonnull align 8 dereferenceable(104) %5, ptr noundef %.261136, i32 noundef %.063135, i64 noundef %.sroa.0.1134, ptr nonnull %147, i32 2) + %179 = call fastcc noundef ptr @_ZN4absl13cord_internal12_GLOBAL__N_115StackOperationsILNS0_12CordRepBtree8EdgeTypeE1EE6UnwindILb0EEEPS3_S7_imNS3_8OpResultE(ptr noundef nonnull align 8 dereferenceable(104) %5, ptr noundef %.261, i32 noundef %.063135, i64 noundef %.261136, ptr nonnull %142, i32 2) br label %204 180: ; preds = %_ZN4absl13cord_internal12CordRepBtree7NewLeafILNS1_8EdgeTypeE1EEEPS1_St17basic_string_viewIcSt11char_traitsIcEEm.exit - %181 = icmp ugt i64 %169, %.sroa.0.1134 + %181 = icmp ugt i64 %169, %.sroa.0.1 br i1 %181, label %182, label %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEES8_m.exit 182: ; preds = %180 - tail call void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.40, ptr noundef nonnull @.str.39, i64 noundef %169, i64 noundef %.sroa.0.1134) #22 + tail call void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.40, ptr noundef nonnull @.str.39, i64 noundef %169, i64 noundef %.sroa.0.1) #22 unreachable _ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEES8_m.exit: ; preds = %180 - %183 = sub nuw i64 %.sroa.0.1134, %169 - %184 = getelementptr inbounds nuw i8, ptr %.sroa.11.1133, i64 %169 - %185 = call fastcc noundef ptr @_ZN4absl13cord_internal12_GLOBAL__N_115StackOperationsILNS0_12CordRepBtree8EdgeTypeE1EE6UnwindILb0EEEPS3_S7_imNS3_8OpResultE(ptr noundef nonnull align 8 dereferenceable(104) %5, ptr noundef %.261136, i32 noundef %.063135, i64 noundef %169, ptr nonnull %147, i32 2) + %183 = sub nuw i64 %.sroa.0.1, %169 + %184 = getelementptr inbounds nuw i8, ptr %.sroa.11.1, i64 %169 + %185 = call fastcc noundef ptr @_ZN4absl13cord_internal12_GLOBAL__N_115StackOperationsILNS0_12CordRepBtree8EdgeTypeE1EE6UnwindILb0EEEPS3_S7_imNS3_8OpResultE(ptr noundef nonnull align 8 dereferenceable(104) %5, ptr noundef %.261, i32 noundef %.063135, i64 noundef %169, ptr nonnull %142, i32 2) %186 = getelementptr inbounds nuw i8, ptr %185, i64 13 %187 = load i8, ptr %186, align 1, !tbaa !4 %188 = zext i8 %187 to i32 @@ -2047,10 +2046,10 @@ _ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEES br label %189 189: ; preds = %189, %.lr.ph.i71 - %indvars.iv.i73 = phi i64 [ 0, %.lr.ph.i71 ], [ %indvars.iv.next.i74, %189 ] - %.067.i = phi ptr [ %185, %.lr.ph.i71 ], [ %196, %189 ] + %indvars.iv.i73 = phi i64 [ 0, %.lr.ph.i71 ], [ %indvars.iv.next.i74, %188 ] + %.067.i = phi ptr [ %185, %.lr.ph.i71 ], [ %196, %188 ] %indvars.iv.next.i74 = add nuw nsw i64 %indvars.iv.i73, 1 - %190 = getelementptr inbounds nuw ptr, ptr %146, i64 %indvars.iv.i73 + %190 = getelementptr inbounds nuw ptr, ptr %141, i64 %indvars.iv.i73 store ptr %.067.i, ptr %190, align 8, !tbaa !14 %191 = getelementptr inbounds nuw i8, ptr %.067.i, i64 15 %192 = load i8, ptr %191, align 1 @@ -2068,15 +2067,6 @@ _ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEES 198: ; preds = %._crit_edge.loopexit.i76, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEES8_m.exit %.0.lcssa.i70 = phi i32 [ 1, %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEES8_m.exit ], [ %197, %._crit_edge.loopexit.i76 ] store i32 %.0.lcssa.i70, ptr %5, align 8, !tbaa !33 - %199 = tail call noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #20 - %200 = getelementptr inbounds nuw i8, ptr %199, i64 8 - store i32 2, ptr %200, align 4, !tbaa !24 - %201 = getelementptr inbounds nuw i8, ptr %199, i64 12 - store i8 3, ptr %201, align 4, !tbaa !25 - %202 = getelementptr inbounds nuw i8, ptr %199, i64 13 - store i8 0, ptr %202, align 1, !tbaa !4 - %203 = getelementptr inbounds nuw i8, ptr %199, i64 14 - store i8 0, ptr %203, align 2, !tbaa !4 br label %_ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEESt17basic_string_viewIcSt11char_traitsIcEEPcS8_m.exit.lr.ph.i 204: ; preds = %.thread99, %.thread @@ -2085,7 +2075,7 @@ _ZN4absl13cord_internal12_GLOBAL__N_17ConsumeILNS0_12CordRepBtree8EdgeTypeE1EEES br label %205 205: ; preds = %4, %204 - %.0 = phi ptr [ %.3, %204 ], [ %0, %4 ] + %.0 = phi ptr [ %.3, %198 ], [ %0, %4 ] ret ptr %.0 } diff --git a/bench/abseil-cpp/optimized/distribution_test_util.ll b/bench/abseil-cpp/optimized/distribution_test_util.ll index 593135b9e6f..05d3a0790c4 100644 --- a/bench/abseil-cpp/optimized/distribution_test_util.ll +++ b/bench/abseil-cpp/optimized/distribution_test_util.ll @@ -572,8 +572,8 @@ define internal fastcc noundef double @_ZN4absl15random_internal12_GLOBAL__N_121 %5 = fcmp olt double %3, 5.000000e-01 br i1 %5, label %6, label %10 -common.ret193: ; preds = %82, %112, %.loopexit, %90, %94, %6 - %common.ret193.op = phi double [ %9, %6 ], [ 0x7FF0000000000000, %82 ], [ %.1145162, %112 ], [ %.1145162, %94 ], [ %91, %90 ], [ 0x7FF0000000000000, %.loopexit ] +common.ret193: ; preds = %82, %112, %.loopexit, %90, %6 + %common.ret193.op = phi double [ %9, %6 ], [ 0x7FF0000000000000, %82 ], [ %.1145162, %111 ], [ %.1145162, %93 ], [ %90, %89 ] ret double %common.ret193.op 6: ; preds = %4 @@ -680,23 +680,19 @@ common.ret193: ; preds = %82, %112, %.loopexi %87 = fcmp ogt double %.sroa.speculated132, 1.000000e+00 br i1 %87, label %common.ret193, label %.lr.ph -.loopexit: ; preds = %114 - %88 = fcmp ogt double %109, 1.000000e+00 - br i1 %88, label %common.ret193, label %.lr.ph +.loopexit: ; preds = %114, %82 + %.1145162 = phi double [ %.sroa.speculated132, %82 ], [ %109, %113 ] + %88 = fcmp oeq double %.1145162, 1.000000e+00 + br i1 %88, label %93, label %89 -.lr.ph: ; preds = %82, %.loopexit - %.1145162 = phi double [ %109, %.loopexit ], [ %.sroa.speculated132, %82 ] - %89 = fcmp oeq double %.1145162, 1.000000e+00 - br i1 %89, label %94, label %90 +.lr.ph: ; preds = %.loopexit + %90 = tail call fastcc noundef double @_ZN4absl15random_internal12_GLOBAL__N_118BetaIncompleteImplEdddd(double noundef %.1145162, double noundef %0, double noundef %1, double noundef %2) + %91 = tail call double @llvm.fabs.f64(double %90) + %92 = fcmp ueq double %91, 0x7FF0000000000000 + br i1 %92, label %common.ret193, label %93 -90: ; preds = %.lr.ph - %91 = tail call fastcc noundef double @_ZN4absl15random_internal12_GLOBAL__N_118BetaIncompleteImplEdddd(double noundef %.1145162, double noundef %0, double noundef %1, double noundef %2) - %92 = tail call double @llvm.fabs.f64(double %91) - %93 = fcmp ueq double %92, 0x7FF0000000000000 - br i1 %93, label %common.ret193, label %94 - -94: ; preds = %.lr.ph, %90 - %.0116 = phi double [ %91, %90 ], [ %.1145162, %.lr.ph ] +90: ; preds = %.lr.ph, %89 + %.0116 = phi double [ %90, %89 ], [ %.1145162, %.lr.ph ] %.0116.fr = freeze double %.0116 %95 = fsub double %.0116.fr, %3 %96 = tail call double @log(double noundef %.1145162) #14, !tbaa !12 @@ -711,8 +707,8 @@ common.ret193: ; preds = %82, %112, %.loopexi %104 = fcmp olt double %103, 0x3D06849B86A12B9B br i1 %104, label %common.ret193, label %.split -.split: ; preds = %94, %117 - %.0104 = phi double [ %118, %117 ], [ 1.000000e+00, %94 ] +.split: ; preds = %93, %117 + %.0104 = phi double [ %118, %116 ], [ 1.000000e+00, %93 ] %105 = fmul double %102, %.0104 %106 = fmul double %105, %105 %107 = fcmp ult double %106, 1.000000e+00 diff --git a/bench/assimp/optimized/TriangulateProcess.ll b/bench/assimp/optimized/TriangulateProcess.ll index a61f7438cbb..ef3c611cbf8 100644 --- a/bench/assimp/optimized/TriangulateProcess.ll +++ b/bench/assimp/optimized/TriangulateProcess.ll @@ -4252,10 +4252,10 @@ define linkonce_odr hidden void @_ZN6mapbox6detail6EarcutIjE10indexCurveEPNS2_4N br label %.lr.ph.us.i .lr.ph.us.i: ; preds = %.loopexit.us.i, %.lr.ph80.i - %.04678.us.i = phi i32 [ %61, %.loopexit.us.i ], [ 0, %.lr.ph80.i ] - %.04877.us.i = phi ptr [ %.149.us.i, %.loopexit.us.i ], [ null, %.lr.ph80.i ] - %.05576.us.i = phi ptr [ %.253.us.i, %.loopexit.us.i ], [ %.058.i, %.lr.ph80.i ] - %.15975.us.i = phi ptr [ %.260.us.i, %.loopexit.us.i ], [ null, %.lr.ph80.i ] + %.04678.us.i = phi i32 [ %61, %.loopexit.us.i ], [ 0, %.lr.ph.us.preheader.i ] + %.04877.us.i = phi ptr [ %.149.us.i, %.loopexit.us.i ], [ null, %.lr.ph.us.preheader.i ] + %.05576.us.i = phi ptr [ %.253.us.i, %.loopexit.us.i ], [ %.058.i, %.lr.ph.us.preheader.i ] + %.15975.us.i = phi ptr [ %.260.us.i, %.loopexit.us.i ], [ null, %.lr.ph.us.preheader.i ] %61 = add nuw nsw i32 %.04678.us.i, 1 br label %63 @@ -4362,7 +4362,7 @@ define linkonce_odr hidden void @_ZN6mapbox6detail6EarcutIjE10indexCurveEPNS2_4N %101 = getelementptr inbounds nuw i8, ptr %.149.us.i, i64 56 store ptr null, ptr %101, align 8 %102 = icmp eq i32 %.04678.us.i, 0 - %103 = shl nuw nsw i32 %.0.i, 1 + %103 = shl nsw i32 %.0.i, 1 br i1 %102, label %_ZN6mapbox6detail6EarcutIjE10sortLinkedEPNS2_4NodeE.exit, label %.lr.ph80.i, !llvm.loop !52 _ZN6mapbox6detail6EarcutIjE10sortLinkedEPNS2_4NodeE.exit: ; preds = %._crit_edge81.i diff --git a/bench/boost/optimized/xml_grammar.ll b/bench/boost/optimized/xml_grammar.ll index d259c9ee58f..0ab474011f1 100644 --- a/bench/boost/optimized/xml_grammar.ll +++ b/bench/boost/optimized/xml_grammar.ll @@ -11552,45 +11552,49 @@ _ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS1_11alternativeINS1_6strlitI %isdigit.i.i.i.i.i.i.i.i32 = icmp ult i8 %29, 10 br i1 %isdigit.i.i.i.i.i.i.i.i32, label %.lr.ph, label %_ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i -.lr.ph.i.i.i.i.i.i: ; preds = %39 - %30 = load i8, ptr %43, align 1, !tbaa !21 - %31 = add i8 %30, -48 - %isdigit.i.i.i.i.i.i.i.i = icmp ult i8 %31, 10 - br i1 %isdigit.i.i.i.i.i.i.i.i, label %.lr.ph, label %_ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i, !llvm.loop !156 - -.lr.ph: ; preds = %.lr.ph.i.i.i.i.i.i.preheader, %.lr.ph.i.i.i.i.i.i - %.in = phi i8 [ %30, %.lr.ph.i.i.i.i.i.i ], [ %28, %.lr.ph.i.i.i.i.i.i.preheader ] - %32 = phi ptr [ %43, %.lr.ph.i.i.i.i.i.i ], [ %25, %.lr.ph.i.i.i.i.i.i.preheader ] - %.0.i.i.i.i.i34 = phi i64 [ %42, %.lr.ph.i.i.i.i.i.i ], [ 0, %.lr.ph.i.i.i.i.i.i.preheader ] - %.012.i.i.i.i.i33 = phi i32 [ %41, %.lr.ph.i.i.i.i.i.i ], [ 0, %.lr.ph.i.i.i.i.i.i.preheader ] - %33 = sext i8 %.in to i32 - %34 = icmp ugt i32 %.012.i.i.i.i.i33, 429496729 - br i1 %34, label %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit.thread, label %35 - -35: ; preds = %.lr.ph - %36 = mul nuw i32 %.012.i.i.i.i.i33, 10 - %37 = sub nsw i32 47, %33 - %38 = icmp ugt i32 %36, %37 - br i1 %38, label %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit.thread, label %39 - -39: ; preds = %35 - %40 = add i32 %36, -48 - %41 = add i32 %40, %33 - %42 = add i64 %.0.i.i.i.i.i34, 1 - %43 = getelementptr inbounds nuw i8, ptr %32, i64 1 - store ptr %43, ptr %5, align 8, !tbaa !102 - %44 = load ptr, ptr %6, align 8, !tbaa !10 - %45 = icmp eq ptr %43, %44 - br i1 %45, label %._ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i_crit_edge, label %.lr.ph.i.i.i.i.i.i, !llvm.loop !156 - -._ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i_crit_edge: ; preds = %39 +.lr.ph.i.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i.i.preheader + %30 = zext nneg i8 %28 to i32 + br label %34 + +.lr.ph.i.i.i.i.i.i:; preds = %42 + %31 = load i8, ptr %46, align 1, !tbaa !21 + %32 = sext i8 %31 to i32 + %33 = add i8 %31, -48 + %isdigit.i.i.i.i.i.i.i.i = icmp ult i8 %33, 10 + br i1 %isdigit.i.i.i.i.i.i.i.i, label %34, label %_ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i, !llvm.loop !156 + +34:; preds = %.lr.ph.i.i.i.i.i.i, %.lr.ph.i.i.i.i.i.i + %35 = phi i32 [ %30, %.lr.ph ], [ %32, %.lr.ph.i.i.i.i.i.i ] + %36 = phi ptr [ %25, %.lr.ph ], [ %46, %.lr.ph.i.i.i.i.i.i ] + %.0.i.i.i.i.i34 = phi i64 [ 0, %.lr.ph ], [ %45, %.lr.ph.i.i.i.i.i.i ] + %.012.i.i.i.i.i33 = phi i32 [ 0, %.lr.ph ], [ %44, %.lr.ph.i.i.i.i.i.i ] + %37 = icmp ugt i32 %.012.i.i.i.i.i33, 429496729 + br i1 %37, label %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit.thread, label %38 + +38:; preds = %34 + %39 = mul nuw i32 %.012.i.i.i.i.i33, 10 + %40 = sub nsw i32 47, %35 + %41 = icmp ugt i32 %39, %40 + br i1 %41, label %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit.thread, label %42 + +42: ; preds = %38 + %43 = add i32 %39, -48 + %44 = add i32 %43, %35 + %45 = add i64 %.0.i.i.i.i.i34, 1 + %46 = getelementptr inbounds nuw i8, ptr %36, i64 1 + store ptr %46, ptr %5, align 8, !tbaa !102 + %47 = load ptr, ptr %6, align 8, !tbaa !10 + %48 = icmp eq ptr %46, %47 + br i1 %48, label %._ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i_crit_edge, label %.lr.ph.i.i.i.i.i.i, !llvm.loop !156 + +._ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i_crit_edge: ; preds = %42 br label %_ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i, !llvm.loop !156 _ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i.i, %._ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i_crit_edge, %.lr.ph.i.i.i.i.i.i.preheader %46 = phi i1 [ true, %._ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i_crit_edge ], [ false, %.lr.ph.i.i.i.i.i.i.preheader ], [ false, %.lr.ph.i.i.i.i.i.i ] - %47 = phi ptr [ %43, %._ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i_crit_edge ], [ %25, %.lr.ph.i.i.i.i.i.i.preheader ], [ %43, %.lr.ph.i.i.i.i.i.i ] - %.113.i.i.i.i.i = phi i32 [ %41, %._ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i_crit_edge ], [ 0, %.lr.ph.i.i.i.i.i.i.preheader ], [ %41, %.lr.ph.i.i.i.i.i.i ] - %.1.i.i.i.i.i = phi i64 [ %42, %._ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i_crit_edge ], [ 0, %.lr.ph.i.i.i.i.i.i.preheader ], [ %42, %.lr.ph.i.i.i.i.i.i ] + %47 = phi ptr [ %46, %._ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i_crit_edge ], [ %25, %.lr.ph.i.i.i.i.i.i.preheader ], [ %46, %.lr.ph.i.i.i.i.i.i ] + %.113.i.i.i.i.i = phi i32 [ %44, %._ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i_crit_edge ], [ 0, %.lr.ph.i.i.i.i.i.i.preheader ], [ %44, %.lr.ph.i.i.i.i.i.i ] + %.1.i.i.i.i.i = phi i64 [ %45, %._ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i_crit_edge ], [ 0, %.lr.ph.i.i.i.i.i.i.preheader ], [ %45, %.lr.ph.i.i.i.i.i.i ] %or.cond.i = icmp sgt i64 %.1.i.i.i.i.i, 0 br i1 %or.cond.i, label %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit, label %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit.thread @@ -11615,8 +11619,8 @@ _ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6st %59 = add nuw nsw i64 %58, %.1.i.i.i.i.i br label %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit.thread -_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit.thread: ; preds = %.lr.ph, %35, %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit, %50, %_ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i, %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_E5parseISQ_EENS1_13parser_resultISY_T_E4typeERKS11_.exit.i, %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEE5parseISQ_EENS1_13parser_resultISX_T_E4typeERKS10_.exit.i.i, %19, %4, %10, %2, %56 - %.sroa.09.1 = phi i64 [ %59, %56 ], [ -1, %2 ], [ -1, %10 ], [ -1, %4 ], [ -1, %19 ], [ -1, %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEE5parseISQ_EENS1_13parser_resultISX_T_E4typeERKS10_.exit.i.i ], [ -1, %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_E5parseISQ_EENS1_13parser_resultISY_T_E4typeERKS11_.exit.i ], [ -1, %_ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i ], [ -1, %50 ], [ -1, %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit ], [ -1, %35 ], [ -1, %.lr.ph ] +_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit.thread: ; preds = %34, %38, %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit, %50, %_ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i, %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_E5parseISQ_EENS1_13parser_resultISY_T_E4typeERKS11_.exit.i, %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEE5parseISQ_EENS1_13parser_resultISX_T_E4typeERKS10_.exit.i.i, %19, %4, %10, %2, %56 + %.sroa.09.1 = phi i64 [ %59, %59 ], [ -1, %2 ], [ -1, %10 ], [ -1, %4 ], [ -1, %19 ], [ -1, %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEE5parseISQ_EENS1_13parser_resultISX_T_E4typeERKS10_.exit.i.i ], [ -1, %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_E5parseISQ_EENS1_13parser_resultISY_T_E4typeERKS11_.exit.i ], [ -1, %_ZN5boost6spirit7classic4impl11extract_intILi10ELj1ELin1ENS2_19positive_accumulateIjLi10EEEE1fIKNS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEEjEEbRT_RT0_Rm.exit.i.i.i.i.i ], [ -1, %53 ], [ -1, %_ZNK5boost6spirit7classic8sequenceINS2_INS2_INS2_INS2_INS1_11alternativeINS1_6strlitIPKcEES7_EENS1_4ruleINS1_7scannerIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEENS1_16scanner_policiesINS1_16iteration_policyENS1_12match_policyENS1_13action_policyEEEEENS1_5nil_tESR_EEEESS_EENS1_5chlitIwEEEESW_EENS1_6actionINS1_11uint_parserIjLi10ELj1ELin1EEENS_7archive3xml11assign_implIjEEEEE5parseISQ_EENS1_13parser_resultIS17_T_E4typeERKS1A_.exit ], [ -1, %38 ], [ -1, %34 ] ret i64 %.sroa.09.1 } diff --git a/bench/brotli/optimized/compress_fragment.ll b/bench/brotli/optimized/compress_fragment.ll index 204f1360d42..f087e17308e 100644 --- a/bench/brotli/optimized/compress_fragment.ll +++ b/bench/brotli/optimized/compress_fragment.ll @@ -1626,8 +1626,8 @@ EmitCopyLen.exit: ; preds = %747, %769, %809, %8 br i1 %.not393.i, label %1006, label %939 939: ; preds = %.thread101 - %940 = add i64 %938, %.0332.i - %941 = icmp ult i64 %940, 1048577 + %940 = add nuw nsw i64 %938, %.0332.i + %941 = icmp samesign ult i64 %940, 1048577 br i1 %941, label %942, label %1006 942: ; preds = %939 @@ -3634,8 +3634,8 @@ EmitCopyLen.exit: ; preds = %747, %769, %809, %8 br i1 %.not393.i, label %1006, label %939 939: ; preds = %.thread101 - %940 = add i64 %938, %.0332.i - %941 = icmp ult i64 %940, 1048577 + %940 = add nuw nsw i64 %938, %.0332.i + %941 = icmp samesign ult i64 %940, 1048577 br i1 %941, label %942, label %1006 942: ; preds = %939 @@ -5642,8 +5642,8 @@ EmitCopyLen.exit: ; preds = %747, %769, %809, %8 br i1 %.not393.i, label %1006, label %939 939: ; preds = %.thread101 - %940 = add i64 %938, %.0332.i - %941 = icmp ult i64 %940, 1048577 + %940 = add nuw nsw i64 %938, %.0332.i + %941 = icmp samesign ult i64 %940, 1048577 br i1 %941, label %942, label %1006 942: ; preds = %939 @@ -7650,8 +7650,8 @@ EmitCopyLen.exit: ; preds = %747, %769, %809, %8 br i1 %.not393.i, label %1006, label %939 939: ; preds = %.thread101 - %940 = add i64 %938, %.0332.i - %941 = icmp ult i64 %940, 1048577 + %940 = add nuw nsw i64 %938, %.0332.i + %941 = icmp samesign ult i64 %940, 1048577 br i1 %941, label %942, label %1006 942: ; preds = %939 diff --git a/bench/brotli/optimized/encode.ll b/bench/brotli/optimized/encode.ll index 251efff27a6..2dc9c7714ea 100644 --- a/bench/brotli/optimized/encode.ll +++ b/bench/brotli/optimized/encode.ll @@ -2681,7 +2681,7 @@ HasherSize.exit.i: ; preds = %323, %HashMemAllocI 339: ; preds = %337 %340 = load i32, ptr %329, align 8, !tbaa !145 - switch i32 %340, label %.thread540 [ + switch i32 %340, label %.thread538 [ i32 2, label %341 i32 3, label %345 i32 4, label %349 @@ -2892,7 +2892,7 @@ HasherSize.exit.i: ; preds = %323, %HashMemAllocI br i1 %430, label %432, label %HasherSetup.exit 432: ; preds = %.thread540, %429 - %433 = phi ptr [ %428, %.thread540 ], [ %431, %429 ] + %433 = phi ptr [ %428, %.thread538 ], [ %431, %429 ] %434 = getelementptr inbounds nuw i8, ptr %0, i64 1688 %435 = load i32, ptr %434, align 8, !tbaa !145 switch i32 %435, label %PrepareH2.exit [ diff --git a/bench/bullet3/optimized/btContinuousConvexCollision.ll b/bench/bullet3/optimized/btContinuousConvexCollision.ll index 2e875845b55..c2ea7d47f3a 100644 --- a/bench/bullet3/optimized/btContinuousConvexCollision.ll +++ b/bench/bullet3/optimized/btContinuousConvexCollision.ll @@ -590,12 +590,12 @@ define dso_local noundef zeroext i1 @_ZN27btContinuousConvexCollision16calcTimeO br label %134 134: ; preds = %.lr.ph, %174 - %.0189 = phi float [ %114, %.lr.ph ], [ %176, %174 ] - %.070188 = phi i32 [ 0, %.lr.ph ], [ %175, %174 ] - %.075187 = phi float [ 0.000000e+00, %.lr.ph ], [ %148, %174 ] - %.sroa.12142.0186 = phi float [ %.sroa.12142.0.copyload, %.lr.ph ], [ %.sroa.12142.0.copyload144, %174 ] - %.sroa.9136.0185 = phi float [ %.sroa.9136.0.copyload, %.lr.ph ], [ %.sroa.9136.0.copyload138, %174 ] - %.sroa.0132.0184 = phi float [ %.sroa.0132.0.copyload, %.lr.ph ], [ %.sroa.0132.0.copyload134, %174 ] + %.0189 = phi float [ %114, %.lr.ph ], [ %176, %173 ] + %.070188 = phi i32 [ 0, %.lr.ph ], [ %175, %173 ] + %.075187 = phi float [ 0.000000e+00, %.lr.ph ], [ %148, %173 ] + %.sroa.12142.0186 = phi float [ %.sroa.12142.0.copyload, %.lr.ph ], [ %.sroa.12142.0.copyload144, %173 ] + %.sroa.9136.0185 = phi float [ %.sroa.9136.0.copyload, %.lr.ph ], [ %.sroa.9136.0.copyload138, %173 ] + %.sroa.0132.0184 = phi float [ %.sroa.0132.0.copyload, %.lr.ph ], [ %.sroa.0132.0.copyload134, %173 ] %135 = load ptr, ptr %122, align 8, !tbaa !48 %.not86 = icmp eq ptr %135, null br i1 %.not86, label %140, label %136 @@ -625,10 +625,8 @@ define dso_local noundef zeroext i1 @_ZN27btContinuousConvexCollision16calcTimeO %147 = fdiv float %.0189, %144 %148 = fadd float %.075187, %147 %149 = fcmp ule float %148, 1.000000e+00 - %150 = fcmp uge float %148, 0.000000e+00 + %150 = fcmp ugt float %148, %.075184 %or.cond.not165 = and i1 %149, %150 - %151 = fcmp ugt float %148, %.075187 - %or.cond94 = and i1 %151, %or.cond.not165 br i1 %or.cond94, label %152, label %.critedge 152: ; preds = %146 @@ -649,14 +647,14 @@ define dso_local noundef zeroext i1 @_ZN27btContinuousConvexCollision16calcTimeO %155 = load ptr, ptr %153, align 8, !tbaa !4 %156 = getelementptr inbounds nuw i8, ptr %155, i64 56 %157 = load ptr, ptr %156, align 8 - call void %157(ptr noundef nonnull align 8 dereferenceable(8) %153, ptr noundef nonnull align 4 dereferenceable(16) %126, float noundef 0x3FC99999A0000000, ptr noundef nonnull align 4 dereferenceable(16) %20) + call void %156(ptr noundef nonnull align 8 dereferenceable(8) %153, ptr noundef nonnull align 4 dereferenceable(16) %126, float noundef 0x3FC99999A0000000, ptr noundef nonnull align 4 dereferenceable(16) %20) call void @llvm.lifetime.end.p0(ptr nonnull %20) br label %158 158: ; preds = %154, %152 %159 = load ptr, ptr %5, align 8, !tbaa !4 %160 = load ptr, ptr %159, align 8 - call void %160(ptr noundef nonnull align 8 dereferenceable(196) %5, float noundef %148) + call void %159(ptr noundef nonnull align 8 dereferenceable(196) %5, float noundef %148) call void @llvm.lifetime.start.p0(ptr nonnull %21) store ptr getelementptr inbounds nuw inrange(-16, 40) (i8, ptr @_ZTV16btPointCollector, i64 16), ptr %21, align 8, !tbaa !4 store float 0x43ABC16D60000000, ptr %130, align 8, !tbaa !38 @@ -677,14 +675,14 @@ define dso_local noundef zeroext i1 @_ZN27btContinuousConvexCollision16calcTimeO %167 = load ptr, ptr %5, align 8, !tbaa !4 %168 = getelementptr inbounds nuw i8, ptr %167, i64 16 %169 = load ptr, ptr %168, align 8 - call void %169(ptr noundef nonnull align 8 dereferenceable(196) %5, i32 noundef -1, i32 noundef %.070188) + call void %168(ptr noundef nonnull align 8 dereferenceable(196) %5, i32 noundef -1, i32 noundef %.070188) br label %.critedge.critedge 170: ; preds = %163 %171 = load ptr, ptr %5, align 8, !tbaa !4 %172 = getelementptr inbounds nuw i8, ptr %171, i64 16 %173 = load ptr, ptr %172, align 8 - call void %173(ptr noundef nonnull align 8 dereferenceable(196) %5, i32 noundef -2, i32 noundef 65) + call void %172(ptr noundef nonnull align 8 dereferenceable(196) %5, i32 noundef -2, i32 noundef 65) br label %.critedge.critedge 174: ; preds = %163 @@ -701,11 +699,11 @@ define dso_local noundef zeroext i1 @_ZN27btContinuousConvexCollision16calcTimeO br i1 %177, label %134, label %._crit_edge, !llvm.loop !49 ._crit_edge: ; preds = %174, %.preheader - %.sroa.0132.0.lcssa = phi float [ %.sroa.0132.0.copyload, %.preheader ], [ %.sroa.0132.0.copyload134, %174 ] - %.sroa.9136.0.lcssa = phi float [ %.sroa.9136.0.copyload, %.preheader ], [ %.sroa.9136.0.copyload138, %174 ] - %.sroa.12142.0.lcssa = phi float [ %.sroa.12142.0.copyload, %.preheader ], [ %.sroa.12142.0.copyload144, %174 ] - %.sroa.15148.0.lcssa = phi float [ %.sroa.15148.0.copyload, %.preheader ], [ %.sroa.15148.0.copyload150, %174 ] - %.075.lcssa = phi float [ 0.000000e+00, %.preheader ], [ %148, %174 ] + %.sroa.0132.0.lcssa = phi float [ %.sroa.0132.0.copyload, %.preheader ], [ %.sroa.0132.0.copyload134, %173 ] + %.sroa.9136.0.lcssa = phi float [ %.sroa.9136.0.copyload, %.preheader ], [ %.sroa.9136.0.copyload138, %173 ] + %.sroa.12142.0.lcssa = phi float [ %.sroa.12142.0.copyload, %.preheader ], [ %.sroa.12142.0.copyload144, %173 ] + %.sroa.15148.0.lcssa = phi float [ %.sroa.15148.0.copyload, %.preheader ], [ %.sroa.15148.0.copyload150, %173 ] + %.075.lcssa = phi float [ 0.000000e+00, %.preheader ], [ %148, %173 ] %178 = getelementptr inbounds nuw i8, ptr %5, i64 168 store float %.075.lcssa, ptr %178, align 8, !tbaa !51 %179 = getelementptr inbounds nuw i8, ptr %5, i64 136 diff --git a/bench/casadi/optimized/cvodea.ll b/bench/casadi/optimized/cvodea.ll index df68104c697..df40d8b1d5a 100644 --- a/bench/casadi/optimized/cvodea.ll +++ b/bench/casadi/optimized/cvodea.ll @@ -4514,7 +4514,7 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna br i1 %112, label %.lr.ph185.us, label %.lr.ph185 .lr.ph185.us: ; preds = %.split, %..critedge_crit_edge.split.us202 - %.0133.us196 = phi ptr [ %129, %..critedge_crit_edge.split.us202 ], [ %105, %.split ] + %.0133.us196 = phi ptr [ %129, %..critedge_crit_edge.split.us198 ], [ %105, %.split ] %113 = load double, ptr %.0133.us196, align 8, !tbaa !132 %.fr = freeze double %113 %114 = fsub double %.0132, %.fr @@ -4523,7 +4523,7 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna br i1 %116, label %.lr.ph185.split.split.us.us, label %.lr.ph185.split.split.us201 .lr.ph185.split.split.us201: ; preds = %.lr.ph185.us, %125 - %.1136183.us197 = phi ptr [ %127, %125 ], [ %.fr284, %.lr.ph185.us ] + %.1136183.us197 = phi ptr [ %127, %125 ], [ %.fr284, %.lr.ph181.us ] %117 = getelementptr inbounds nuw i8, ptr %.1136183.us197, i64 16 %118 = load ptr, ptr %117, align 8, !tbaa !123 %119 = getelementptr inbounds nuw i8, ptr %118, i64 984 @@ -4548,7 +4548,7 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna br i1 %130, label %.loopexit, label %.lr.ph185.us .lr.ph185.split.split.us.us: ; preds = %.lr.ph185.us, %138 - %.1136183.us186.us = phi ptr [ %140, %138 ], [ %.fr284, %.lr.ph185.us ] + %.1136183.us186.us = phi ptr [ %140, %138 ], [ %.fr284, %.lr.ph181.us ] %131 = getelementptr inbounds nuw i8, ptr %.1136183.us186.us, i64 16 %132 = load ptr, ptr %131, align 8, !tbaa !123 %133 = getelementptr inbounds nuw i8, ptr %132, i64 984 @@ -4570,7 +4570,7 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna br label %142 142: ; preds = %150, %.lr.ph185 - %.1136183.us = phi ptr [ %.fr284, %.lr.ph185 ], [ %152, %150 ] + %.1136183.us = phi ptr [ %.fr284, %.lr.ph181 ], [ %152, %150 ] %143 = getelementptr inbounds nuw i8, ptr %.1136183.us, i64 16 %144 = load ptr, ptr %143, align 8, !tbaa !123 %145 = getelementptr inbounds nuw i8, ptr %144, i64 984 @@ -4593,7 +4593,7 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna br i1 %155, label %.loopexit, label %.lr.ph185 .loopexit: ; preds = %..critedge_crit_edge.split.us, %142, %..critedge_crit_edge.split.us202, %.lr.ph185.split.split.us201, %.lr.ph185.split.split.us.us - %.0133177 = phi ptr [ %.0133.us196, %.lr.ph185.split.split.us.us ], [ %.0133.us196, %.lr.ph185.split.split.us201 ], [ %.0133.us196, %..critedge_crit_edge.split.us202 ], [ %.0133, %142 ], [ %.0133, %..critedge_crit_edge.split.us ] + %.0133177 = phi ptr [ %.0133.us196, %.lr.ph181.split.split.us.us ], [ %.0133.us196, %.lr.ph181.split.split.us197 ], [ %.0133.us196, %..critedge_crit_edge.split.us198 ], [ %.0133, %142 ], [ %.0133, %..critedge_crit_edge.split.us ] %156 = getelementptr inbounds nuw i8, ptr %14, i64 80 %157 = getelementptr inbounds nuw i8, ptr %14, i64 48 %158 = icmp eq i32 %2, 2 @@ -4627,7 +4627,7 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna br label %.lr.ph213.us .lr.ph213.us: ; preds = %.lr.ph213.us.preheader, %186 - %.2137211.us = phi ptr [ %188, %186 ], [ %.fr284, %.lr.ph213.us.preheader ] + %.2137211.us = phi ptr [ %188, %186 ], [ %.fr284, %.lr.ph209.us.preheader ] %166 = getelementptr inbounds nuw i8, ptr %.2137211.us, i64 16 %167 = load ptr, ptr %166, align 8, !tbaa !123 %168 = getelementptr inbounds nuw i8, ptr %167, i64 984 @@ -4661,7 +4661,7 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna br label %186 186: ; preds = %.thread336, %176 - %.5.us = phi i32 [ %181, %176 ], [ 0, %.thread336 ] + %.5.us = phi i32 [ %181, %176 ], [ 0, %.thread313 ] %187 = getelementptr inbounds nuw i8, ptr %.2137211.us, i64 120 %188 = load ptr, ptr %187, align 8, !tbaa !119 %.not155.us = icmp eq ptr %188, null @@ -4682,7 +4682,7 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna br label %.lr.ph213 .lr.ph213: ; preds = %.lr.ph213.preheader, %216 - %.2137211 = phi ptr [ %218, %216 ], [ %.fr284, %.lr.ph213.preheader ] + %.2137211 = phi ptr [ %218, %216 ], [ %.fr284, %.lr.ph209.preheader ] %192 = getelementptr inbounds nuw i8, ptr %.2137211, i64 16 %193 = load ptr, ptr %192, align 8, !tbaa !123 %194 = getelementptr inbounds nuw i8, ptr %193, i64 984 @@ -4722,7 +4722,7 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna br label %216 216: ; preds = %206, %.thread339 - %.5 = phi i32 [ %211, %206 ], [ 0, %.thread339 ] + %.5 = phi i32 [ %211, %206 ], [ 0, %.thread316 ] %217 = getelementptr inbounds nuw i8, ptr %.2137211, i64 120 %218 = load ptr, ptr %217, align 8, !tbaa !119 %.not155 = icmp eq ptr %218, null @@ -4756,7 +4756,7 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna br label %.split221.split.split .critedge163: ; preds = %190, %225, %186, %161, %159, %.split221.us.split.us, %164, %.split221.us.split.split.us, %.thread, %102, %74, %70, %53, %47, %24, %18, %11, %6 - %.0128 = phi i32 [ -21, %6 ], [ -101, %11 ], [ -103, %18 ], [ -102, %24 ], [ -104, %47 ], [ -22, %53 ], [ -22, %74 ], [ %.us-phi232, %.thread ], [ -22, %102 ], [ -22, %70 ], [ 0, %.split221.us.split.split.us ], [ 0, %.split221.us.split.us ], [ %165, %164 ], [ %160, %159 ], [ %162, %161 ], [ %.5.us, %186 ], [ %.5, %225 ], [ %191, %190 ] + %.0128 = phi i32 [ -21, %6 ], [ -101, %11 ], [ -103, %18 ], [ -102, %24 ], [ -104, %47 ], [ -22, %53 ], [ -22, %74 ], [ %.us-phi232, %.thread ], [ -22, %102 ], [ -22, %70 ], [ 0, %.split216.us.split.split.us ], [ 0, %.split216.us.split.us ], [ %165, %164 ], [ %160, %159 ], [ %162, %161 ], [ %.5.us, %186 ], [ %.5, %225 ], [ %191, %190 ] call void @llvm.lifetime.end.p0(ptr nonnull %4) ret i32 %.0128 } diff --git a/bench/casadi/optimized/idaa.ll b/bench/casadi/optimized/idaa.ll index 9d448f4e0f4..af76e2fcc02 100644 --- a/bench/casadi/optimized/idaa.ll +++ b/bench/casadi/optimized/idaa.ll @@ -4118,7 +4118,7 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u br i1 %112, label %.lr.ph186.us, label %.lr.ph186 .lr.ph186.us: ; preds = %.split, %..critedge_crit_edge.split.us203 - %.0138.us197 = phi ptr [ %129, %..critedge_crit_edge.split.us203 ], [ %105, %.split ] + %.0138.us197 = phi ptr [ %129, %..critedge_crit_edge.split.us199 ], [ %105, %.split ] %113 = load double, ptr %.0138.us197, align 8, !tbaa !134 %.fr = freeze double %113 %114 = fsub double %.0130, %.fr @@ -4127,7 +4127,7 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u br i1 %116, label %.lr.ph186.split.split.us.us, label %.lr.ph186.split.split.us202 .lr.ph186.split.split.us202: ; preds = %.lr.ph186.us, %125 - %.1135184.us198 = phi ptr [ %127, %125 ], [ %.fr247, %.lr.ph186.us ] + %.1135184.us198 = phi ptr [ %127, %125 ], [ %.fr247, %.lr.ph182.us ] %117 = getelementptr inbounds nuw i8, ptr %.1135184.us198, i64 16 %118 = load ptr, ptr %117, align 8, !tbaa !123 %119 = getelementptr inbounds nuw i8, ptr %118, i64 1184 @@ -4152,7 +4152,7 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u br i1 %130, label %.loopexit, label %.lr.ph186.us .lr.ph186.split.split.us.us: ; preds = %.lr.ph186.us, %138 - %.1135184.us187.us = phi ptr [ %140, %138 ], [ %.fr247, %.lr.ph186.us ] + %.1135184.us187.us = phi ptr [ %140, %138 ], [ %.fr247, %.lr.ph182.us ] %131 = getelementptr inbounds nuw i8, ptr %.1135184.us187.us, i64 16 %132 = load ptr, ptr %131, align 8, !tbaa !123 %133 = getelementptr inbounds nuw i8, ptr %132, i64 1184 @@ -4174,7 +4174,7 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u br label %142 142: ; preds = %150, %.lr.ph186 - %.1135184.us = phi ptr [ %.fr247, %.lr.ph186 ], [ %152, %150 ] + %.1135184.us = phi ptr [ %.fr247, %.lr.ph182 ], [ %152, %150 ] %143 = getelementptr inbounds nuw i8, ptr %.1135184.us, i64 16 %144 = load ptr, ptr %143, align 8, !tbaa !123 %145 = getelementptr inbounds nuw i8, ptr %144, i64 1184 @@ -4197,7 +4197,7 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u br i1 %155, label %.loopexit, label %.lr.ph186 .loopexit: ; preds = %..critedge_crit_edge.split.us, %142, %..critedge_crit_edge.split.us203, %.lr.ph186.split.split.us202, %.lr.ph186.split.split.us.us - %.0138178 = phi ptr [ %.0138.us197, %.lr.ph186.split.split.us.us ], [ %.0138.us197, %.lr.ph186.split.split.us202 ], [ %.0138.us197, %..critedge_crit_edge.split.us203 ], [ %.0138, %142 ], [ %.0138, %..critedge_crit_edge.split.us ] + %.0138178 = phi ptr [ %.0138.us197, %.lr.ph182.split.split.us.us ], [ %.0138.us197, %.lr.ph182.split.split.us198 ], [ %.0138.us193, %..critedge_crit_edge.split.us199 ], [ %.0138, %142 ], [ %.0138, %..critedge_crit_edge.split.us ] %156 = getelementptr inbounds nuw i8, ptr %14, i64 72 %157 = icmp eq i32 %2, 2 %158 = getelementptr inbounds nuw i8, ptr %14, i64 48 @@ -4232,7 +4232,7 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u br label %.lr.ph214 .lr.ph214: ; preds = %.lr.ph214.preheader, %193 - %.2136212 = phi ptr [ %195, %193 ], [ %.fr247, %.lr.ph214.preheader ] + %.2136212 = phi ptr [ %195, %193 ], [ %.fr247, %.lr.ph210.preheader ] %166 = getelementptr inbounds nuw i8, ptr %.2136212, i64 16 %167 = load ptr, ptr %166, align 8, !tbaa !123 %168 = getelementptr inbounds nuw i8, ptr %167, i64 1184 @@ -4276,7 +4276,7 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u br label %193 193: ; preds = %181, %.thread280 - %.5 = phi i32 [ %188, %181 ], [ 0, %.thread280 ] + %.5 = phi i32 [ %188, %181 ], [ 0, %.thread267 ] %194 = getelementptr inbounds nuw i8, ptr %.2136212, i64 128 %195 = load ptr, ptr %194, align 8, !tbaa !119 %.not156 = icmp eq ptr %195, null @@ -4291,7 +4291,7 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u br i1 %157, label %.critedge164, label %.lr.ph219 .lr.ph219: ; preds = %._crit_edge215, %202 - %.3137218 = phi ptr [ %204, %202 ], [ %.fr247, %._crit_edge215 ] + %.3137218 = phi ptr [ %204, %202 ], [ %.fr247, %._crit_edge211 ] %197 = getelementptr inbounds nuw i8, ptr %.3137218, i64 104 %198 = load double, ptr %197, align 8, !tbaa !195 %199 = fsub double %198, %.0130 @@ -4311,7 +4311,7 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u br label %.split222 .critedge164: ; preds = %._crit_edge215, %164, %202, %161, %159, %.split222.us.split.us, %.split222.us.split.split.us, %.thread, %102, %74, %70, %53, %47, %24, %18, %11, %6 - %.0129 = phi i32 [ -20, %6 ], [ -101, %11 ], [ -103, %18 ], [ -102, %24 ], [ -104, %47 ], [ -22, %53 ], [ -22, %74 ], [ %188, %.thread ], [ -22, %102 ], [ -22, %70 ], [ 0, %.split222.us.split.split.us ], [ 0, %.split222.us.split.us ], [ %160, %159 ], [ %162, %161 ], [ %.5, %202 ], [ %.5, %._crit_edge215 ], [ %165, %164 ] + %.0129 = phi i32 [ -20, %6 ], [ -101, %11 ], [ -103, %18 ], [ -102, %24 ], [ -104, %47 ], [ -22, %53 ], [ -22, %74 ], [ %188, %.thread ], [ -22, %102 ], [ -22, %70 ], [ 0, %.split217.us.split.split.us ], [ 0, %.split217.us.split.us ], [ %160, %159 ], [ %162, %161 ], [ %.5, %202 ], [ %.5, %._crit_edge211 ], [ %165, %164 ] call void @llvm.lifetime.end.p0(ptr nonnull %4) ret i32 %.0129 } diff --git a/bench/clamav/optimized/lzxd.ll b/bench/clamav/optimized/lzxd.ll index da5854a0c12..b791c545c31 100644 --- a/bench/clamav/optimized/lzxd.ll +++ b/bench/clamav/optimized/lzxd.ll @@ -3612,27 +3612,27 @@ define internal fastcc range(i32 0, 2) i32 @make_decode_table(i32 noundef range( %42 = shl i32 %.us-phi, 16 %43 = tail call i32 @llvm.umax.i32(i32 %6, i32 %0) %44 = trunc nuw nsw i32 %43 to i16 - %45 = add nuw nsw i32 %1, 1 - %46 = trunc nuw nsw i32 %0 to i16 + %45 = trunc nuw nsw i32 %0 to i16 br label %.preheader.split.us.preheader .preheader.split.us.preheader: ; preds = %.split131.us, %.preheader.preheader - %indvars.iv148 = phi i32 [ %45, %.preheader.preheader ], [ %indvars.iv.next149, %.split131.us ] + %indvars.iv148 = phi i32 [ %1, %.preheader.preheader ], [ %indvars.iv.next149, %.split131.us ] %indvars.iv = phi i32 [ 1, %.preheader.preheader ], [ %indvars.iv.next, %.split131.us ] - %.1137 = phi i32 [ 32768, %.preheader.preheader ], [ %77, %.split131.us ] + %.1137 = phi i32 [ 32768, %.preheader.preheader ], [ %76, %.split131.us ] %.3136 = phi i32 [ %42, %.preheader.preheader ], [ %.5.us, %.split131.us ] %.082135 = phi i16 [ %44, %.preheader.preheader ], [ %.284.us, %.split131.us ] + %indvars.iv.next149 = add nuw nsw i32 %indvars.iv148, 1 br label %.preheader.split.us .preheader.split.us: ; preds = %.preheader.split.us.preheader, %53 - %.4129.us = phi i32 [ %.5.us, %53 ], [ %.3136, %.preheader.split.us.preheader ] - %.183128.us = phi i16 [ %.284.us, %53 ], [ %.082135, %.preheader.split.us.preheader ] - %.289127.us = phi i16 [ %54, %53 ], [ 0, %.preheader.split.us.preheader ] + %.4129.us = phi i32 [ %.5.us, %52 ], [ %.3136, %.preheader.split.us.preheader ] + %.183128.us = phi i16 [ %.284.us, %52 ], [ %.082135, %.preheader.split.us.preheader ] + %.289127.us = phi i16 [ %54, %52 ], [ 0, %.preheader.split.us.preheader ] %47 = zext nneg i16 %.289127.us to i64 %48 = getelementptr inbounds nuw i8, ptr %2, i64 %47 %49 = load i8, ptr %48, align 1, !tbaa !43 %50 = zext i8 %49 to i32 - %.not96.us = icmp eq i32 %indvars.iv148, %50 + %.not96.us = icmp eq i32 %indvars.iv.next149, %50 br i1 %.not96.us, label %51, label %53 51: ; preds = %.preheader.split.us @@ -3645,57 +3645,56 @@ define internal fastcc range(i32 0, 2) i32 @make_decode_table(i32 noundef range( 53: ; preds = %._crit_edge125.us, %.preheader.split.us %.284.us = phi i16 [ %.183128.us, %.preheader.split.us ], [ %.486.us, %._crit_edge125.us ] - %.5.us = phi i32 [ %.4129.us, %.preheader.split.us ], [ %76, %._crit_edge125.us ] + %.5.us = phi i32 [ %.4129.us, %.preheader.split.us ], [ %75, %._crit_edge125.us ] %54 = add nuw nsw i16 %.289127.us, 1 - %55 = icmp samesign ult i16 %54, %46 + %55 = icmp samesign ult i16 %54, %45 br i1 %55, label %.preheader.split.us, label %.split131.us -56: ; preds = %.lr.ph124.us, %66 - %.178122.us = phi i32 [ 0, %.lr.ph124.us ], [ %73, %66 ] - %.180121.us = phi i32 [ %52, %.lr.ph124.us ], [ %spec.select.us, %66 ] - %.385120.us = phi i16 [ %.183128.us, %.lr.ph124.us ], [ %.486.us, %66 ] +56: ; preds = %.lr.ph124.us, %65 + %.178122.us = phi i32 [ 0, %.lr.ph124.us ], [ %72, %65 ] + %.180121.us = phi i32 [ %52, %.lr.ph124.us ], [ %spec.select.us, %65 ] + %.385120.us = phi i16 [ %.183128.us, %.lr.ph124.us ], [ %.486.us, %65 ] %57 = zext nneg i32 %.180121.us to i64 %58 = getelementptr inbounds nuw i16, ptr %3, i64 %57 %59 = load i16, ptr %58, align 2, !tbaa !54 %60 = icmp eq i16 %59, -1 - br i1 %60, label %61, label %66 + br i1 %60, label %61, label %65 61: ; preds = %56 %62 = zext i16 %.385120.us to i64 %.idx.us = shl nuw nsw i64 %62, 2 %63 = getelementptr inbounds nuw i8, ptr %3, i64 %.idx.us + store i16 -1, ptr %62, align 2, !tbaa !54 + %63 = getelementptr inbounds nuw i8, ptr %62, i64 2 store i16 -1, ptr %63, align 2, !tbaa !54 - %64 = getelementptr inbounds nuw i8, ptr %63, i64 2 - store i16 -1, ptr %64, align 2, !tbaa !54 - %65 = add i16 %.385120.us, 1 - store i16 %.385120.us, ptr %58, align 2, !tbaa !54 - br label %66 - -66: ; preds = %61, %56 - %67 = phi i16 [ %.385120.us, %61 ], [ %59, %56 ] - %.486.us = phi i16 [ %65, %61 ], [ %.385120.us, %56 ] - %68 = zext i16 %67 to i32 - %69 = shl nuw nsw i32 %68, 1 - %70 = sub nuw nsw i32 15, %.178122.us - %71 = lshr i32 %.4129.us, %70 - %72 = and i32 %71, 1 - %spec.select.us = or disjoint i32 %69, %72 - %73 = add nuw nsw i32 %.178122.us, 1 - %exitcond.not = icmp eq i32 %73, %indvars.iv - br i1 %exitcond.not, label %._crit_edge125.us, label %56 - -._crit_edge125.us: ; preds = %66 - %74 = zext nneg i32 %spec.select.us to i64 - %75 = getelementptr inbounds nuw i16, ptr %3, i64 %74 - store i16 %.289127.us, ptr %75, align 2, !tbaa !54 - %76 = add i32 %.4129.us, %.1137 - br label %53 - -.split131.us: ; preds = %53 - %77 = lshr i32 %.1137, 1 - %indvars.iv.next149 = add nuw nsw i32 %indvars.iv148, 1 + %64 = add i16 %.385120.us, 1 + store i16 %.385120.us, ptr %57, align 2, !tbaa !54 + br label %65 + +65:; preds = %60, %56 + %66 = phi i16 [ %.385120.us, %60 ], [ %58, %55 ] + %.486.us = phi i16 [ %64, %60 ], [ %.385120.us, %55 ] + %67 = zext i16 %66 to i32 + %68 = shl nuw nsw i32 %67, 1 + %69 = sub nuw nsw i32 15, %.178122.us + %70 = lshr i32 %.4129.us, %69 + %71 = and i32 %70, 1 + %spec.select.us = or disjoint i32 %68, %71 + %72 = add nuw nsw i32 %.178122.us, 1 + %exitcond.not = icmp eq i32 %72, %indvars.iv + br i1 %exitcond.not, label %._crit_edge125.us, label %55 + +._crit_edge125.us:; preds = %65 + %73 = zext nneg i32 %spec.select.us to i64 + %74 = getelementptr inbounds nuw i16, ptr %3, i64 %73 + store i16 %.289127.us, ptr %74, align 2, !tbaa !54 + %75 = add i32 %.4129.us, %.1137 + br label %52 + +.split131.us:; preds = %53 + %76 = lshr i32 %.1137, 1 %indvars.iv.next = add nuw nsw i32 %indvars.iv, 1 - %exitcond151.not = icmp eq i32 %indvars.iv.next149, 17 + %exitcond151.not = icmp eq i32 %indvars.iv.next149, 16 br i1 %exitcond151.not, label %._crit_edge139, label %.preheader.split.us.preheader ._crit_edge139: ; preds = %.split131.us @@ -3704,7 +3703,7 @@ define internal fastcc range(i32 0, 2) i32 @make_decode_table(i32 noundef range( br label %.loopexit .loopexit: ; preds = %19, %.preheader103.split.us, %51, %30, %._crit_edge139 - %.090 = phi i32 [ %79, %._crit_edge139 ], [ 0, %30 ], [ 1, %51 ], [ 1, %.preheader103.split.us ], [ 1, %19 ] + %.090 = phi i32 [ %79, %._crit_edge139 ], [ 0, %30 ], [ 1, %50 ], [ 1, %.preheader103.split.us ], [ 1, %19 ] ret i32 %.090 } diff --git a/bench/clamav/optimized/mszipd.ll b/bench/clamav/optimized/mszipd.ll index eb008b5d88d..f2a8775f801 100644 --- a/bench/clamav/optimized/mszipd.ll +++ b/bench/clamav/optimized/mszipd.ll @@ -2620,26 +2620,26 @@ define internal fastcc range(i32 0, 2) i32 @make_decode_table(i32 noundef range( %59 = shl i32 %.2, 16 %60 = tail call i32 @llvm.umax.i32(i32 %6, i32 %0) %61 = trunc nuw nsw i32 %60 to i16 - %62 = add nuw nsw i32 %1, 1 br label %.preheader141.split.us.preheader .preheader141.split.us.preheader: ; preds = %.split.us, %.preheader141.preheader - %indvars.iv182 = phi i32 [ %62, %.preheader141.preheader ], [ %indvars.iv.next183, %.split.us ] + %indvars.iv182 = phi i32 [ %1, %.preheader141.preheader ], [ %indvars.iv.next183, %.split.us ] %indvars.iv = phi i32 [ 1, %.preheader141.preheader ], [ %indvars.iv.next, %.split.us ] %.1171 = phi i32 [ 32768, %.preheader141.preheader ], [ %99, %.split.us ] %.3170 = phi i32 [ %59, %.preheader141.preheader ], [ %.5.us, %.split.us ] %.0116169 = phi i16 [ %61, %.preheader141.preheader ], [ %.2118.us, %.split.us ] + %indvars.iv.next183 = add nuw nsw i32 %indvars.iv182, 1 br label %.preheader141.split.us .preheader141.split.us: ; preds = %.preheader141.split.us.preheader, %76 - %.4166.us = phi i32 [ %.5.us, %76 ], [ %.3170, %.preheader141.split.us.preheader ] - %.1117165.us = phi i16 [ %.2118.us, %76 ], [ %.0116169, %.preheader141.split.us.preheader ] - %.2123164.us = phi i16 [ %77, %76 ], [ 0, %.preheader141.split.us.preheader ] + %.4166.us = phi i32 [ %.5.us, %75 ], [ %.3170, %.preheader141.split.us.preheader ] + %.1117165.us = phi i16 [ %.2118.us, %75 ], [ %.0116169, %.preheader141.split.us.preheader ] + %.2123164.us = phi i16 [ %77, %75 ], [ 0, %.preheader141.split.us.preheader ] %63 = zext nneg i16 %.2123164.us to i64 %64 = getelementptr inbounds nuw i8, ptr %2, i64 %63 %65 = load i8, ptr %64, align 1, !tbaa !32 %66 = zext i8 %65 to i32 - %.not133.us = icmp eq i32 %indvars.iv182, %66 + %.not133.us = icmp eq i32 %indvars.iv.next183, %66 br i1 %.not133.us, label %67, label %76 67: ; preds = %.preheader141.split.us @@ -2651,9 +2651,9 @@ define internal fastcc range(i32 0, 2) i32 @make_decode_table(i32 noundef range( br label %70 70: ; preds = %70, %68 - %.3113.us = phi i32 [ 0, %68 ], [ %73, %70 ] - %.3108.us = phi i32 [ %1, %68 ], [ %75, %70 ] - %.2104.us = phi i32 [ %69, %68 ], [ %74, %70 ] + %.3113.us = phi i32 [ 0, %67 ], [ %73, %69 ] + %.3108.us = phi i32 [ %1, %67 ], [ %75, %69 ] + %.2104.us = phi i32 [ %69, %67 ], [ %74, %69 ] %71 = shl i32 %.3113.us, 1 %72 = and i32 %.2104.us, 1 %73 = or disjoint i32 %72, %71 @@ -2669,41 +2669,41 @@ define internal fastcc range(i32 0, 2) i32 @make_decode_table(i32 noundef range( %78 = icmp samesign ult i16 %77, %8 br i1 %78, label %.preheader141.split.us, label %.split.us -.preheader.us: ; preds = %70, %88 - %.4109161.us = phi i32 [ %95, %88 ], [ 0, %70 ] - %.4114160.us = phi i32 [ %spec.select.us, %88 ], [ %73, %70 ] - %.3119159.us = phi i16 [ %.4120.us, %88 ], [ %.1117165.us, %70 ] +.preheader.us: ; preds = %70, %87 + %.4109161.us = phi i32 [ %94, %87 ], [ 0, %69 ] + %.4114160.us = phi i32 [ %spec.select.us, %87 ], [ %73, %69 ] + %.3119159.us = phi i16 [ %.4120.us, %87 ], [ %.1117165.us, %69 ] %79 = zext i32 %.4114160.us to i64 %80 = getelementptr inbounds nuw i16, ptr %3, i64 %79 %81 = load i16, ptr %80, align 2, !tbaa !36 %82 = icmp eq i16 %81, -1 - br i1 %82, label %83, label %88 + br i1 %82, label %83, label %87 83: ; preds = %.preheader.us %84 = zext i16 %.3119159.us to i64 %.idx.us = shl nuw nsw i64 %84, 2 %85 = getelementptr inbounds nuw i8, ptr %3, i64 %.idx.us + store i16 -1, ptr %84, align 2, !tbaa !36 + %85 = getelementptr inbounds nuw i8, ptr %84, i64 2 store i16 -1, ptr %85, align 2, !tbaa !36 - %86 = getelementptr inbounds nuw i8, ptr %85, i64 2 - store i16 -1, ptr %86, align 2, !tbaa !36 - %87 = add i16 %.3119159.us, 1 + %86 = add i16 %.3119159.us, 1 store i16 %.3119159.us, ptr %80, align 2, !tbaa !36 - br label %88 - -88: ; preds = %83, %.preheader.us - %89 = phi i16 [ %.3119159.us, %83 ], [ %81, %.preheader.us ] - %.4120.us = phi i16 [ %87, %83 ], [ %.3119159.us, %.preheader.us ] - %90 = zext i16 %89 to i32 - %91 = shl nuw nsw i32 %90, 1 - %92 = sub nuw nsw i32 15, %.4109161.us - %93 = lshr i32 %.4166.us, %92 - %94 = and i32 %93, 1 - %spec.select.us = or disjoint i32 %91, %94 - %95 = add nuw nsw i32 %.4109161.us, 1 - %exitcond.not = icmp eq i32 %95, %indvars.iv + br label %87 + +87:; preds = %82, %.preheader.us + %88 = phi i16 [ %.3119159.us, %82 ], [ %80, %.preheader.us ] + %.4120.us = phi i16 [ %86, %82 ], [ %.3119159.us, %.preheader.us ] + %89 = zext i16 %88 to i32 + %90 = shl nuw nsw i32 %89, 1 + %91 = sub nuw nsw i32 15, %.4109161.us + %92 = lshr i32 %.4166.us, %91 + %93 = and i32 %92, 1 + %spec.select.us = or disjoint i32 %90, %93 + %94 = add nuw nsw i32 %.4109161.us, 1 + %exitcond.not = icmp eq i32 %94, %indvars.iv br i1 %exitcond.not, label %._crit_edge162.us, label %.preheader.us -._crit_edge162.us: ; preds = %88 +._crit_edge162.us: ; preds = %87 %96 = zext nneg i32 %spec.select.us to i64 %97 = getelementptr inbounds nuw i16, ptr %3, i64 %96 store i16 %.2123164.us, ptr %97, align 2, !tbaa !36 @@ -2712,9 +2712,8 @@ define internal fastcc range(i32 0, 2) i32 @make_decode_table(i32 noundef range( .split.us: ; preds = %76 %99 = lshr i32 %.1171, 1 - %indvars.iv.next183 = add nuw nsw i32 %indvars.iv182, 1 %indvars.iv.next = add nuw nsw i32 %indvars.iv, 1 - %exitcond185.not = icmp eq i32 %indvars.iv.next183, 17 + %exitcond185.not = icmp eq i32 %indvars.iv.next183, 16 br i1 %exitcond185.not, label %._crit_edge173, label %.preheader141.split.us.preheader ._crit_edge173: ; preds = %.split.us @@ -2723,7 +2722,7 @@ define internal fastcc range(i32 0, 2) i32 @make_decode_table(i32 noundef range( br label %.loopexit .loopexit: ; preds = %26, %67, %39, %._crit_edge173 - %.0124 = phi i32 [ %101, %._crit_edge173 ], [ 0, %39 ], [ 1, %67 ], [ 1, %26 ] + %.0124 = phi i32 [ %101, %._crit_edge173 ], [ 0, %39 ], [ 1, %66 ], [ 1, %26 ] ret i32 %.0124 } diff --git a/bench/clamav/optimized/tnef.ll b/bench/clamav/optimized/tnef.ll index a119ea9bcbe..1d422ba7ef5 100644 --- a/bench/clamav/optimized/tnef.ll +++ b/bench/clamav/optimized/tnef.ll @@ -82,10 +82,10 @@ define range(i32 0, 27) i32 @cli_tnef(ptr noundef %0, ptr noundef readonly captu br i1 %or.cond44.not.i232, label %.lr.ph, label %.loopexit .lr.ph: ; preds = %.preheader, %156 - %30 = phi ptr [ %158, %156 ], [ %28, %.preheader ] - %31 = phi ptr [ %157, %156 ], [ %27, %.preheader ] - %.0106234 = phi i64 [ %.1107, %156 ], [ 6, %.preheader ] - %.0109233 = phi ptr [ %.1110, %156 ], [ null, %.preheader ] + %30 = phi ptr [ %158, %155 ], [ %28, %.preheader ] + %31 = phi ptr [ %157, %155 ], [ %27, %.preheader ] + %.0106234 = phi i64 [ %.1107, %155 ], [ 6, %.preheader ] + %.0109233 = phi ptr [ %.1110, %155 ], [ null, %.preheader ] %32 = getelementptr inbounds nuw i8, ptr %31, i64 104 %33 = load ptr, ptr %32, align 8, !tbaa !25 %34 = call ptr %33(ptr noundef nonnull %31, i64 noundef %.0106234, i64 noundef 1, i32 noundef 0) #7 @@ -156,7 +156,7 @@ fmap_readn.exit35.i: ; preds = %54 br i1 %.not25.i, label %58, label %.loopexit181 .loopexit: ; preds = %.lr.ph, %156, %fmap_readn.exit.i, %.preheader, %48 - %.0109196 = phi ptr [ %.0109233, %48 ], [ null, %.preheader ], [ %.0109233, %.lr.ph ], [ %.1110, %156 ], [ %.0109233, %fmap_readn.exit.i ] + %.0109196 = phi ptr [ %.0109233, %48 ], [ null, %.preheader ], [ %.0109233, %.lr.ph ], [ %.1110, %155 ], [ %.0109233, %fmap_readn.exit.i ] call void @llvm.lifetime.end.p0(ptr nonnull %4) br label %.thread169 @@ -401,10 +401,10 @@ tnef_attachment.exit: ; preds = %125 %or.cond180.not238.not = icmp eq i64 %142, 0 br i1 %or.cond180.not238.not, label %fmap_readn.exit67.thread, label %.lr.ph240 -.lr.ph240: ; preds = %139, %149 - %143 = phi i64 [ %154, %149 ], [ %142, %139 ] - %144 = phi ptr [ %152, %149 ], [ %140, %139 ] - %.3239 = phi i64 [ %150, %149 ], [ 0, %139 ] +.lr.ph240: ; preds = %139, %fmap_readn.exit67 + %143 = phi i64 [ %153, %fmap_readn.exit67 ], [ %142, %139 ] + %144 = phi ptr [ %151, %fmap_readn.exit67 ], [ %140, %139 ] + %.3239 = phi i64 [ %149, %fmap_readn.exit67 ], [ 0, %139 ] %145 = sub nuw i64 %143, %.3239 %spec.select.i64 = call i64 @llvm.umin.i64(i64 %145, i64 8192) %146 = getelementptr inbounds nuw i8, ptr %144, i64 104 @@ -415,19 +415,15 @@ tnef_attachment.exit: ; preds = %125 fmap_readn.exit67: ; preds = %.lr.ph240 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 16 %5, ptr nonnull align 1 %148, i64 %spec.select.i64, i1 false) - %.not = icmp eq i64 %143, %.3239 - br i1 %.not, label %fmap_readn.exit67.thread, label %149 - -149: ; preds = %fmap_readn.exit67 - %150 = add i64 %spec.select.i64, %.3239 - %151 = call i64 @cli_writen(i32 noundef %137, ptr noundef nonnull %5, i64 noundef %spec.select.i64) #7 - %152 = load ptr, ptr %6, align 8, !tbaa !3 - %153 = getelementptr inbounds nuw i8, ptr %152, i64 88 - %154 = load i64, ptr %153, align 8, !tbaa !23 - %or.cond180.not = icmp ult i64 %150, %154 + %149 = add i64 %spec.select.i64, %.3239 + %150 = call i64 @cli_writen(i32 noundef %137, ptr noundef nonnull %5, i64 noundef %spec.select.i64) #7 + %151 = load ptr, ptr %6, align 8, !tbaa !3 + %152 = getelementptr inbounds nuw i8, ptr %151, i64 88 + %153 = load i64, ptr %152, align 8, !tbaa !23 + %or.cond180.not = icmp ult i64 %149, %153 br i1 %or.cond180.not, label %.lr.ph240, label %fmap_readn.exit67.thread -fmap_readn.exit67.thread: ; preds = %fmap_readn.exit67, %149, %.lr.ph240, %139 +fmap_readn.exit67.thread: ; preds = %fmap_readn.exit67, %.lr.ph240, %139 %155 = call i32 @close(i32 noundef %137) #7 br label %.thread165 @@ -472,7 +468,7 @@ fmap_readn.exit67.thread: ; preds = %fmap_readn.exit67, br label %fmap_readn.exit fmap_readn.exit: ; preds = %22, %18, %12, %16, %165, %11 - %.0 = phi i32 [ 0, %11 ], [ %.2178, %165 ], [ 26, %16 ], [ 12, %12 ], [ 12, %18 ], [ 12, %22 ] + %.0 = phi i32 [ 0, %11 ], [ %.2178, %164 ], [ 26, %16 ], [ 12, %12 ], [ 12, %18 ], [ 12, %22 ] ret i32 %.0 } diff --git a/bench/coremark/optimized/core_list_join.ll b/bench/coremark/optimized/core_list_join.ll index 0ff2ef52f83..0a506edb595 100644 --- a/bench/coremark/optimized/core_list_join.ll +++ b/bench/coremark/optimized/core_list_join.ll @@ -270,17 +270,17 @@ core_list_reverse.exit.thread: ; preds = %core_list_reverse.e br label %.lr.ph79.i .lr.ph79.i: ; preds = %.lr.ph79.i.preheader, %._crit_edge80.i - %.058.i = phi ptr [ %.260.us.i.ph, %._crit_edge80.i ], [ %.053.lcssa, %.lr.ph79.i.preheader ] - %.047.i = phi i32 [ %158, %._crit_edge80.i ], [ 1, %.lr.ph79.i.preheader ] + %.058.i = phi ptr [ %.260.us.i.ph, %._crit_edge80.i ], [ %.053.lcssa, %.lr.ph.us.preheader.i.preheader ] + %.047.i = phi i32 [ %158, %._crit_edge80.i ], [ 1, %.lr.ph.us.preheader.i.preheader ] %.not73.i = icmp ne ptr %.058.i, null tail call void @llvm.assume(i1 %.not73.i) br label %.lr.ph.us.i .lr.ph.us.i: ; preds = %.loopexit.us.i, %.lr.ph79.i - %.04677.us.i = phi i32 [ %61, %.loopexit.us.i ], [ 0, %.lr.ph79.i ] - %.04876.us.i = phi ptr [ %.149.us.i, %.loopexit.us.i ], [ null, %.lr.ph79.i ] - %.05575.us.i = phi ptr [ %.253.us.i, %.loopexit.us.i ], [ %.058.i, %.lr.ph79.i ] - %.15974.us.i = phi ptr [ %.260.us.i.ph, %.loopexit.us.i ], [ null, %.lr.ph79.i ] + %.04677.us.i = phi i32 [ %61, %.loopexit.us.i ], [ 0, %.lr.ph.us.preheader.i ] + %.04876.us.i = phi ptr [ %.149.us.i, %.loopexit.us.i ], [ null, %.lr.ph.us.preheader.i ] + %.05575.us.i = phi ptr [ %.253.us.i, %.loopexit.us.i ], [ %.058.i, %.lr.ph.us.preheader.i ] + %.15974.us.i = phi ptr [ %.260.us.i.ph, %.loopexit.us.i ], [ null, %.lr.ph.us.preheader.i ] %61 = add nuw nsw i32 %.04677.us.i, 1 br label %63 @@ -502,7 +502,7 @@ calc_func.exit: ; preds = %119, %142 ._crit_edge80.i: ; preds = %.loopexit.us.i store ptr null, ptr %.149.us.i, align 8, !tbaa !31 %157 = icmp eq i32 %.04677.us.i, 0 - %158 = shl nuw nsw i32 %.047.i, 1 + %158 = shl nsw i32 %.047.i, 1 br i1 %157, label %core_list_mergesort.exit, label %.lr.ph79.i core_list_mergesort.exit: ; preds = %._crit_edge80.i, %._crit_edge @@ -594,10 +594,10 @@ core_list_find.exit79: ; preds = %177, %171 br label %.lr.ph.us.i84 .lr.ph.us.i84: ; preds = %.loopexit.us.i101, %.lr.ph79.i80 - %.04677.us.i85 = phi i32 [ %191, %.loopexit.us.i101 ], [ 0, %.lr.ph79.i80 ] - %.04876.us.i86 = phi ptr [ %.149.us.i98, %.loopexit.us.i101 ], [ null, %.lr.ph79.i80 ] - %.05575.us.i87 = phi ptr [ %.253.us.i97, %.loopexit.us.i101 ], [ %.058.i81, %.lr.ph79.i80 ] - %.15974.us.i88 = phi ptr [ %.260.us.i95.ph, %.loopexit.us.i101 ], [ null, %.lr.ph79.i80 ] + %.04677.us.i85 = phi i32 [ %191, %.loopexit.us.i101 ], [ 0, %.lr.ph.us.preheader.i80 ] + %.04876.us.i86 = phi ptr [ %.149.us.i98, %.loopexit.us.i101 ], [ null, %.lr.ph.us.preheader.i80 ] + %.05575.us.i87 = phi ptr [ %.253.us.i97, %.loopexit.us.i101 ], [ %.058.i81, %.lr.ph.us.preheader.i80 ] + %.15974.us.i88 = phi ptr [ %.260.us.i95.ph, %.loopexit.us.i101 ], [ null, %.lr.ph.us.preheader.i80 ] %191 = add nuw nsw i32 %.04677.us.i85, 1 br label %193 @@ -713,7 +713,7 @@ core_list_find.exit79: ; preds = %177, %171 ._crit_edge80.i103: ; preds = %.loopexit.us.i101 store ptr null, ptr %.149.us.i98, align 8, !tbaa !31 %235 = icmp eq i32 %.04677.us.i85, 0 - %236 = shl nuw nsw i32 %.047.i82, 1 + %236 = shl nsw i32 %.047.i82, 1 br i1 %235, label %core_list_mergesort.exit114.preheader, label %.lr.ph79.i80 core_list_mergesort.exit114.preheader: ; preds = %._crit_edge80.i103 @@ -813,7 +813,7 @@ define dso_local noundef ptr @core_list_reverse(ptr noundef %0) local_unnamed_ad define dso_local ptr @core_list_mergesort(ptr noundef %0, ptr noundef readonly captures(none) %1, ptr noundef %2) local_unnamed_addr #0 { br label %.lr.ph79 -.lr.ph79: ; preds = %._crit_edge80, %3 +.lr.ph79: ; preds = %3, %._crit_edge80 %.058 = phi ptr [ %0, %3 ], [ %.260.us.ph, %._crit_edge80 ] %.047 = phi i32 [ 1, %3 ], [ %39, %._crit_edge80 ] %.not73 = icmp ne ptr %.058, null @@ -821,10 +821,10 @@ define dso_local ptr @core_list_mergesort(ptr noundef %0, ptr noundef readonly c br label %.lr.ph.us .lr.ph.us: ; preds = %.lr.ph79, %.loopexit.us - %.04677.us = phi i32 [ %4, %.loopexit.us ], [ 0, %.lr.ph79 ] - %.04876.us = phi ptr [ %.149.us, %.loopexit.us ], [ null, %.lr.ph79 ] - %.05575.us = phi ptr [ %.253.us, %.loopexit.us ], [ %.058, %.lr.ph79 ] - %.15974.us = phi ptr [ %.260.us.ph, %.loopexit.us ], [ null, %.lr.ph79 ] + %.04677.us = phi i32 [ %4, %.loopexit.us ], [ 0, %.lr.ph.us.preheader ] + %.04876.us = phi ptr [ %.149.us, %.loopexit.us ], [ null, %.lr.ph.us.preheader ] + %.05575.us = phi ptr [ %.253.us, %.loopexit.us ], [ %.058, %.lr.ph.us.preheader ] + %.15974.us = phi ptr [ %.260.us.ph, %.loopexit.us ], [ null, %.lr.ph.us.preheader ] %4 = add nuw nsw i32 %.04677.us, 1 br label %6 @@ -927,7 +927,7 @@ define dso_local ptr @core_list_mergesort(ptr noundef %0, ptr noundef readonly c ._crit_edge80: ; preds = %.loopexit.us store ptr null, ptr %.149.us, align 8, !tbaa !31 %38 = icmp eq i32 %.04677.us, 0 - %39 = shl nuw nsw i32 %.047, 1 + %39 = shl nsw i32 %.047, 1 br i1 %38, label %40, label %.lr.ph79 40: ; preds = %._crit_edge80 @@ -1085,17 +1085,17 @@ core_list_insert_new.exit42: ; preds = %.lr.ph, %30, %32 br label %.lr.ph79.i .lr.ph79.i: ; preds = %.lr.ph79.i.preheader, %._crit_edge80.i - %.058.i = phi ptr [ %.260.us.i.ph, %._crit_edge80.i ], [ %1, %.lr.ph79.i.preheader ] - %.047.i = phi i32 [ %97, %._crit_edge80.i ], [ 1, %.lr.ph79.i.preheader ] + %.058.i = phi ptr [ %.260.us.i.ph, %._crit_edge80.i ], [ %1, %.lr.ph.us.preheader.i.preheader ] + %.047.i = phi i32 [ %97, %._crit_edge80.i ], [ 1, %.lr.ph.us.preheader.i.preheader ] %.not73.i = icmp ne ptr %.058.i, null tail call void @llvm.assume(i1 %.not73.i) br label %.lr.ph.us.i .lr.ph.us.i: ; preds = %.loopexit.us.i, %.lr.ph79.i - %.04677.us.i = phi i32 [ %52, %.loopexit.us.i ], [ 0, %.lr.ph79.i ] - %.04876.us.i = phi ptr [ %.149.us.i, %.loopexit.us.i ], [ null, %.lr.ph79.i ] - %.05575.us.i = phi ptr [ %.253.us.i, %.loopexit.us.i ], [ %.058.i, %.lr.ph79.i ] - %.15974.us.i = phi ptr [ %.260.us.i.ph, %.loopexit.us.i ], [ null, %.lr.ph79.i ] + %.04677.us.i = phi i32 [ %52, %.loopexit.us.i ], [ 0, %.lr.ph.us.preheader.i ] + %.04876.us.i = phi ptr [ %.149.us.i, %.loopexit.us.i ], [ null, %.lr.ph.us.preheader.i ] + %.05575.us.i = phi ptr [ %.253.us.i, %.loopexit.us.i ], [ %.058.i, %.lr.ph.us.preheader.i ] + %.15974.us.i = phi ptr [ %.260.us.i.ph, %.loopexit.us.i ], [ null, %.lr.ph.us.preheader.i ] %52 = add nuw nsw i32 %.04677.us.i, 1 br label %54 @@ -1211,7 +1211,7 @@ core_list_insert_new.exit42: ; preds = %.lr.ph, %30, %32 ._crit_edge80.i: ; preds = %.loopexit.us.i store ptr null, ptr %.149.us.i, align 8, !tbaa !31 %96 = icmp eq i32 %.04677.us.i, 0 - %97 = shl nuw nsw i32 %.047.i, 1 + %97 = shl nsw i32 %.047.i, 1 br i1 %96, label %core_list_mergesort.exit, label %.lr.ph79.i core_list_mergesort.exit: ; preds = %._crit_edge80.i diff --git a/bench/cpython/optimized/longobject.ll b/bench/cpython/optimized/longobject.ll index 6b13724b943..b6768c651ff 100644 --- a/bench/cpython/optimized/longobject.ll +++ b/bench/cpython/optimized/longobject.ll @@ -2868,14 +2868,14 @@ define dso_local range(i32 -1, 1) i32 @_PyLong_AsByteArray(ptr noundef readonly %27 = and i32 %25, 1073741823 %28 = zext nneg i32 %27 to i64 %29 = zext nneg i32 %.093132.us to i64 - %30 = shl i64 %28, %29 + %30 = shl nuw nsw i64 %28, %29 %31 = or i64 %30, %.076136.us %32 = icmp eq i64 %.075137.us, %21 br i1 %32, label %35, label %33 33: ; preds = %.lr.ph139.split.us - %34 = add i32 %.093132.us, 30 - br label %.loopexit111.us + %34 = add nuw nsw i32 %.093132.us, 30 + br label %.lr.ph127.us.preheader 35: ; preds = %.lr.ph139.split.us %.not104120.us = icmp eq i32 %27, 1073741823 @@ -2893,33 +2893,34 @@ define dso_local range(i32 -1, 1) i32 @_PyLong_AsByteArray(ptr noundef readonly %.not104.us = icmp eq i32 %37, 0 br i1 %.not104.us, label %.loopexit111.us, label %.lr.ph.us, !llvm.loop !63 -.loopexit111.us: ; preds = %.lr.ph.us, %35, %33 - %.295.us = phi i32 [ %34, %33 ], [ %.093132.us, %35 ], [ %38, %.lr.ph.us ] +.loopexit111.us: ; preds = %.lr.ph.us, %35 + %.295.us = phi i32 [ %.093132.us, %34 ], [ %38, %.lr.ph.us ] %39 = icmp ugt i32 %.295.us, 7 br i1 %39, label %.lr.ph127.us.preheader, label %._crit_edge.us -.lr.ph127.us.preheader: ; preds = %.loopexit111.us - %40 = add i32 %.295.us, -8 - %41 = lshr i32 %40, 3 - %42 = add nuw nsw i32 %41, 1 - %43 = trunc i64 %.086134.us to i32 - %44 = add i32 %42, %43 +.lr.ph127.us.preheader: ; preds = %33, %.loopexit111.us + %.295.us196 = phi i32 [ %33, %.loopexit111.us.thread ], [ %.295.us, %.loopexit111.us ] + %39 = add i32 %.295.us196, -8 + %40 = lshr i32 %39, 3 + %41 = add nuw nsw i32 %40, 1 + %42 = trunc i64 %.086134.us to i32 + %43 = add i32 %41, %42 br label %.lr.ph127.us ._crit_edge.us: ; preds = %46, %.loopexit111.us - %.396.lcssa.us = phi i32 [ %.295.us, %.loopexit111.us ], [ %50, %46 ] - %.187.lcssa.us = phi i64 [ %.086134.us, %.loopexit111.us ], [ %47, %46 ] - %.285.lcssa.us = phi ptr [ %.184135.us, %.loopexit111.us ], [ %49, %46 ] - %.177.lcssa.us = phi i64 [ %31, %.loopexit111.us ], [ %51, %46 ] + %.396.lcssa.us = phi i32 [ %.295.us, %.loopexit111.us ], [ %50, %45 ] + %.187.lcssa.us = phi i64 [ %.086134.us, %.loopexit111.us ], [ %47, %45 ] + %.285.lcssa.us = phi ptr [ %.184135.us, %.loopexit111.us ], [ %49, %45 ] + %.177.lcssa.us = phi i64 [ %31, %.loopexit111.us ], [ %51, %45 ] %45 = add nuw nsw i64 %.075137.us, 1 %exitcond167.not = icmp eq i64 %45, %8 br i1 %exitcond167.not, label %._crit_edge140, label %.lr.ph139.split.us, !llvm.loop !64 .lr.ph127.us: ; preds = %.lr.ph127.us.preheader, %46 - %.177126.us = phi i64 [ %51, %46 ], [ %31, %.lr.ph127.us.preheader ] - %.285125.us = phi ptr [ %49, %46 ], [ %.184135.us, %.lr.ph127.us.preheader ] - %.187124.us = phi i64 [ %47, %46 ], [ %.086134.us, %.lr.ph127.us.preheader ] - %.396123.us = phi i32 [ %50, %46 ], [ %.295.us, %.lr.ph127.us.preheader ] + %.177126.us = phi i64 [ %51, %45 ], [ %31, %.lr.ph127.us.preheader ] + %.285125.us = phi ptr [ %49, %45 ], [ %.184135.us, %.lr.ph127.us.preheader ] + %.187124.us = phi i64 [ %47, %45 ], [ %.086134.us, %.lr.ph127.us.preheader ] + %.396123.us = phi i32 [ %50, %45 ], [ %.295.us196, %.lr.ph127.us.preheader ] %.not105.us = icmp ult i64 %.187124.us, %2 br i1 %.not105.us, label %46, label %.loopexit110 @@ -2931,7 +2932,7 @@ define dso_local range(i32 -1, 1) i32 @_PyLong_AsByteArray(ptr noundef readonly %50 = add i32 %.396123.us, -8 %51 = lshr i64 %.177126.us, 8 %lftr.wideiv165 = trunc i64 %47 to i32 - %exitcond166.not = icmp eq i32 %44, %lftr.wideiv165 + %exitcond166.not = icmp eq i32 %43, %lftr.wideiv165 br i1 %exitcond166.not, label %._crit_edge.us, label %.lr.ph127.us, !llvm.loop !65 .lr.ph139.split: ; preds = %.lr.ph139.split.preheader, %._crit_edge @@ -2944,43 +2945,38 @@ define dso_local range(i32 -1, 1) i32 @_PyLong_AsByteArray(ptr noundef readonly %53 = load i32, ptr %52, align 4, !tbaa !33 %54 = zext i32 %53 to i64 %55 = zext nneg i32 %.093132 to i64 - %56 = shl i64 %54, %55 + %56 = shl nuw nsw i64 %54, %55 %57 = or i64 %56, %.076136 %58 = icmp eq i64 %.075137, %19 - br i1 %58, label %59, label %62 + br i1 %58, label %59, label %.loopexit111.thread 59: ; preds = %.lr.ph139.split %.not104120 = icmp eq i32 %53, 0 - br i1 %.not104120, label %.loopexit111, label %.lr.ph.preheader - -.lr.ph.preheader: ; preds = %59 - %60 = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %53, i1 true) - %reass.sub = sub i32 %.093132, %60 - %61 = add i32 %reass.sub, 32 - br label %.loopexit111 - -62: ; preds = %.lr.ph139.split - %63 = add i32 %.093132, 30 - br label %.loopexit111 - -.loopexit111: ; preds = %.lr.ph.preheader, %59, %62 - %.295 = phi i32 [ %63, %62 ], [ %.093132, %59 ], [ %61, %.lr.ph.preheader ] - %64 = icmp ugt i32 %.295, 7 - br i1 %64, label %.lr.ph127.preheader, label %._crit_edge - -.lr.ph127.preheader: ; preds = %.loopexit111 - %65 = add i32 %.295, -8 - %66 = lshr i32 %65, 3 - %67 = add nuw nsw i32 %66, 1 - %68 = trunc i64 %.086134 to i32 - %69 = add i32 %67, %68 + %58 = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %52, i1 true) + %reass.sub = sub i32 %.093132, %58 + %59 = add i32 %reass.sub, 32 + %.295 = select i1 %.not104120, i32 %.093132, i32 %59 + %60 = icmp ugt i32 %.295, 7 + br i1 %60, label %.lr.ph127.preheader, label %._crit_edge + +.loopexit111.thread: ; preds = %.lr.ph139.split + %61 = add nuw nsw i32 %.093132, 30 + br label %.lr.ph127.preheader + +.lr.ph127.preheader: ; preds = %.loopexit111.thread, %.loopexit111 + %.295198 = phi i32 [ %61, %.loopexit111.thread ], [ %.295, %.loopexit111 ] + %62 = add i32 %.295198, -8 + %63 = lshr i32 %62, 3 + %64 = add nuw nsw i32 %63, 1 + %65 = trunc i64 %.086134 to i32 + %66 = add i32 %64, %65 br label %.lr.ph127 .lr.ph127: ; preds = %.lr.ph127.preheader, %70 - %.177126 = phi i64 [ %75, %70 ], [ %57, %.lr.ph127.preheader ] - %.285125 = phi ptr [ %73, %70 ], [ %.184135, %.lr.ph127.preheader ] - %.187124 = phi i64 [ %71, %70 ], [ %.086134, %.lr.ph127.preheader ] - %.396123 = phi i32 [ %74, %70 ], [ %.295, %.lr.ph127.preheader ] + %.177126 = phi i64 [ %75, %67 ], [ %57, %.lr.ph127.preheader ] + %.285125 = phi ptr [ %73, %67 ], [ %.184135, %.lr.ph127.preheader ] + %.187124 = phi i64 [ %71, %67 ], [ %.086134, %.lr.ph127.preheader ] + %.396123 = phi i32 [ %74, %67 ], [ %.295198, %.lr.ph127.preheader ] %.not105 = icmp ult i64 %.187124, %2 br i1 %.not105, label %70, label %.loopexit110 @@ -2992,14 +2988,14 @@ define dso_local range(i32 -1, 1) i32 @_PyLong_AsByteArray(ptr noundef readonly %74 = add i32 %.396123, -8 %75 = lshr i64 %.177126, 8 %lftr.wideiv = trunc i64 %71 to i32 - %exitcond.not = icmp eq i32 %69, %lftr.wideiv + %exitcond.not = icmp eq i32 %66, %lftr.wideiv br i1 %exitcond.not, label %._crit_edge, label %.lr.ph127, !llvm.loop !65 ._crit_edge: ; preds = %70, %.loopexit111 - %.396.lcssa = phi i32 [ %.295, %.loopexit111 ], [ %74, %70 ] - %.187.lcssa = phi i64 [ %.086134, %.loopexit111 ], [ %71, %70 ] - %.285.lcssa = phi ptr [ %.184135, %.loopexit111 ], [ %73, %70 ] - %.177.lcssa = phi i64 [ %57, %.loopexit111 ], [ %75, %70 ] + %.396.lcssa = phi i32 [ %.295, %.loopexit111 ], [ %74, %67 ] + %.187.lcssa = phi i64 [ %.086134, %.loopexit111 ], [ %71, %67 ] + %.285.lcssa = phi ptr [ %.184135, %.loopexit111 ], [ %73, %67 ] + %.177.lcssa = phi i64 [ %57, %.loopexit111 ], [ %75, %67 ] %76 = add nuw nsw i64 %.075137, 1 %exitcond164.not = icmp eq i64 %76, %8 br i1 %exitcond164.not, label %._crit_edge140, label %.lr.ph139.split, !llvm.loop !64 @@ -3052,16 +3048,16 @@ define dso_local range(i32 -1, 1) i32 @_PyLong_AsByteArray(ptr noundef readonly br i1 %.not102, label %.loopexit, label %.loopexit110 92: ; preds = %._crit_edge140.thread, %78 - %.082186203 = phi i64 [ %.082186, %78 ], [ %.082186204, %._crit_edge140.thread ] - %.288 = phi i64 [ %79, %78 ], [ %.086.lcssa207, %._crit_edge140.thread ] - %.3 = phi ptr [ %84, %78 ], [ %.184.lcssa208, %._crit_edge140.thread ] + %.082186203 = phi i64 [ %.082186, %75 ], [ %.082186204, %._crit_edge140.thread ] + %.288 = phi i64 [ %79, %75 ], [ %.086.lcssa207, %._crit_edge140.thread ] + %.3 = phi ptr [ %84, %75 ], [ %.184.lcssa208, %._crit_edge140.thread ] %93 = sext i1 %10 to i8 %94 = icmp ult i64 %.288, %2 br i1 %94, label %.lr.ph151, label %.loopexit .lr.ph151: ; preds = %92, %.lr.ph151 - %.4149 = phi ptr [ %96, %.lr.ph151 ], [ %.3, %92 ] - %.389148 = phi i64 [ %95, %.lr.ph151 ], [ %.288, %92 ] + %.4149 = phi ptr [ %96, %.lr.ph151 ], [ %.3, %89 ] + %.389148 = phi i64 [ %95, %.lr.ph151 ], [ %.288, %89 ] store i8 %93, ptr %.4149, align 1, !tbaa !29 %95 = add nuw i64 %.389148, 1 %96 = getelementptr i8, ptr %.4149, i64 %.082186203 @@ -3079,7 +3075,7 @@ define dso_local range(i32 -1, 1) i32 @_PyLong_AsByteArray(ptr noundef readonly br label %.loopexit .loopexit: ; preds = %.lr.ph151, %.loopexit.sink.split, %92, %.loopexit110, %12, %88 - %.0 = phi i32 [ 0, %88 ], [ -1, %12 ], [ -1, %.loopexit110 ], [ 0, %92 ], [ -1, %.loopexit.sink.split ], [ 0, %.lr.ph151 ] + %.0 = phi i32 [ 0, %85 ], [ -1, %12 ], [ -1, %.loopexit110 ], [ 0, %89 ], [ -1, %.loopexit.sink.split ], [ 0, %.lr.ph151 ] ret i32 %.0 } diff --git a/bench/cpython/optimized/mpdecimal.ll b/bench/cpython/optimized/mpdecimal.ll index ed7936667fa..641e4dfd8ff 100644 --- a/bench/cpython/optimized/mpdecimal.ll +++ b/bench/cpython/optimized/mpdecimal.ll @@ -14429,13 +14429,13 @@ mpd_seterror.exit: ; preds = %_mpd_get_exp_iterat br label %mpd_qcopy.exit .lr.ph: ; preds = %_mpd_get_exp_iterations.exit + %242 = call i64 @llvm.smax.i64(i64 %219, i64 3) call fastcc void @_settriple(ptr noundef nonnull %14, i8 noundef zeroext 0, i64 noundef 1, i64 noundef 0) - %241 = call i64 @llvm.smax.i64(i64 %219, i64 3) - %242 = getelementptr inbounds nuw i8, ptr %10, i64 28 - br label %243 + %243 = getelementptr inbounds nuw i8, ptr %10, i64 28 + br label %244 243: ; preds = %.lr.ph, %mpd_setdigits.exit - %.069.in = phi i64 [ %241, %.lr.ph ], [ %.069, %mpd_setdigits.exit ] + %.069.in = phi i64 [ %242, %241 ], [ %.069, %mpd_setdigits.exit ] %.069 = add nsw i64 %.069.in, -1 store i64 %.069, ptr %15, align 8, !tbaa !3 %244 = icmp ult i64 %.069, %143 @@ -14541,10 +14541,10 @@ mpd_seterror.exit: ; preds = %_mpd_get_exp_iterat br label %mpd_setdigits.exit mpd_setdigits.exit: ; preds = %251, %255, %262, %266, %269, %279, %283, %286, %296, %300, %304 - %.0.i.i58 = phi i64 [ %254, %251 ], [ %258, %255 ], [ %265, %262 ], [ %272, %269 ], [ %282, %279 ], [ %289, %286 ], [ %299, %296 ], [ %303, %300 ], [ %307, %304 ], [ 9, %266 ], [ 14, %283 ] + %.0.i.i58 = phi i64 [ %254, %252 ], [ %258, %256 ], [ %265, %263 ], [ %272, %270 ], [ %282, %280 ], [ %289, %287 ], [ %299, %297 ], [ %303, %301 ], [ %307, %305 ], [ 9, %267 ], [ 14, %284 ] store i64 %.0.i.i58, ptr %24, align 8, !tbaa !11 - call void @mpd_qdiv(ptr noundef nonnull %12, ptr noundef %0, ptr noundef nonnull %16, ptr noundef nonnull %10, ptr noundef nonnull %242) - call void @mpd_qfma(ptr noundef nonnull %14, ptr noundef nonnull %14, ptr noundef nonnull %12, ptr noundef nonnull @one, ptr noundef nonnull %10, ptr noundef nonnull %242) + call void @mpd_qdiv(ptr noundef nonnull %12, ptr noundef %0, ptr noundef nonnull %16, ptr noundef nonnull %10, ptr noundef nonnull %243) + call void @mpd_qfma(ptr noundef nonnull %14, ptr noundef nonnull %14, ptr noundef nonnull %12, ptr noundef nonnull @one, ptr noundef nonnull %10, ptr noundef nonnull %243) %308 = icmp samesign ugt i64 %.069.in, 2 br i1 %308, label %243, label %._crit_edge, !llvm.loop !55 @@ -14559,19 +14559,19 @@ mpd_setdigits.exit: ; preds = %251, %255, %262, %2 312: ; preds = %._crit_edge %313 = load ptr, ptr @mpd_free, align 8, !tbaa !20 %314 = load ptr, ptr %19, align 8, !tbaa !17 - call void %313(ptr noundef %314) #34 + call void %315(ptr noundef %314) #34 %.pre = load i8, ptr %12, align 8, !tbaa !19 br label %315 315: ; preds = %312, %._crit_edge - %316 = phi i8 [ %.pre, %312 ], [ %311, %._crit_edge ] + %316 = phi i8 [ %.pre, %314 ], [ %311, %310 ] %317 = and i8 %316, 16 %.not.i.i44.not = icmp eq i8 %317, 0 br i1 %.not.i.i44.not, label %318, label %mpd_del.exit46 318: ; preds = %315 %319 = load ptr, ptr @mpd_free, align 8, !tbaa !20 - call void %319(ptr noundef nonnull %12) #34 + call void %321(ptr noundef nonnull %12) #34 br label %mpd_del.exit46 mpd_del.exit46: ; preds = %315, %318 @@ -14582,29 +14582,28 @@ mpd_del.exit46: ; preds = %315, %318 321: ; preds = %mpd_del.exit46 %322 = load ptr, ptr @mpd_free, align 8, !tbaa !20 %323 = load ptr, ptr %22, align 8, !tbaa !17 - call void %322(ptr noundef %323) #34 + call void %324(ptr noundef %323) #34 %.pre70 = load i8, ptr %14, align 8, !tbaa !19 br label %324 324: ; preds = %321, %mpd_del.exit46 - %325 = phi i8 [ %.pre70, %321 ], [ %320, %mpd_del.exit46 ] + %325 = phi i8 [ %.pre70, %323 ], [ %320, %mpd_del.exit46 ] %326 = and i8 %325, 16 %.not.i.i.not = icmp eq i8 %326, 0 br i1 %.not.i.i.not, label %327, label %mpd_del.exit 327: ; preds = %324 %328 = load ptr, ptr @mpd_free, align 8, !tbaa !20 - call void %328(ptr noundef nonnull %14) #34 + call void %330(ptr noundef nonnull %14) #34 br label %mpd_del.exit mpd_del.exit: ; preds = %324, %327 - %329 = getelementptr inbounds nuw i8, ptr %10, i64 28 - %330 = load i32, ptr %329, align 4, !tbaa !56 - %331 = and i32 %330, 958 - %332 = load i32, ptr %3, align 4, !tbaa !23 - %333 = or i32 %331, %332 - %334 = or i32 %333, 4160 - store i32 %334, ptr %3, align 4, !tbaa !23 + %331 = load i32, ptr %243, align 4, !tbaa !56 + %332 = and i32 %331, 958 + %333 = load i32, ptr %3, align 4, !tbaa !23 + %334 = or i32 %332, %333 + %333 = or i32 %334, 4160 + store i32 %335, ptr %3, align 4, !tbaa !23 br label %mpd_qcopy.exit mpd_qcopy.exit: ; preds = %mpd_qresize.exit.i, %_mpd_qexp_check_one.exit, %mpd_del.exit, %mpd_seterror.exit, %72, %35 diff --git a/bench/cpython/optimized/unicodeobject.ll b/bench/cpython/optimized/unicodeobject.ll index da4ce3a311e..a6ad9af3340 100644 --- a/bench/cpython/optimized/unicodeobject.ll +++ b/bench/cpython/optimized/unicodeobject.ll @@ -47976,7 +47976,7 @@ has_shared_intern_dict.exit.thread: ; preds = %7, %has_shared_inte %18 = load ptr, ptr %3, align 8, !tbaa !183 %19 = getelementptr i8, ptr %18, i64 32 %.val20 = load i16, ptr %19, align 8, !tbaa !184 - switch i16 %.val20, label %25 [ + switch i16 %.val20, label %24 [ i16 2, label %.critedge.sink.split i16 3, label %20 i16 1, label %22 @@ -48092,7 +48092,7 @@ clear_interned_dict.exit33: ; preds = %._crit_edge43, %Py_ br label %Py_XINCREF.exit Py_XINCREF.exit: ; preds = %45, %50, %53 - %55 = phi i64 [ %46, %45 ], [ %46, %50 ], [ %.pre44, %53 ] + %55 = phi i64 [ %46, %44 ], [ %46, %49 ], [ %.pre44, %52 ] %56 = add nuw nsw i64 %.040, 1 %57 = icmp slt i64 %56, %55 br i1 %57, label %45, label %._crit_edge43, !llvm.loop !523 diff --git a/bench/cxxopts/optimized/example.ll b/bench/cxxopts/optimized/example.ll index 94312f1c870..c4c76574180 100644 --- a/bench/cxxopts/optimized/example.ll +++ b/bench/cxxopts/optimized/example.ll @@ -75201,41 +75201,42 @@ define linkonce_odr dso_local void @_ZN7cxxopts6values14integer_parserIiEEvRKNSt %16 = select i1 %.not.not, i32 10, i32 16 br i1 %.not.not, label %.lr.ph.split.us, label %.lr.ph.split -.lr.ph.split.us: ; preds = %.lr.ph, %27 - %.07279.us = phi i32 [ %28, %27 ], [ 0, %.lr.ph ] - %.sroa.064.078.us = phi ptr [ %29, %27 ], [ %10, %.lr.ph ] +.lr.ph.split.us: ; preds = %.lr.ph, %28 + %.07279.us = phi i32 [ %29, %28 ], [ 0, %.lr.ph ] + %.sroa.064.078.us = phi ptr [ %30, %28 ], [ %10, %.lr.ph ] %17 = load i8, ptr %.sroa.064.078.us, align 1, !tbaa !14 %18 = add i8 %17, -48 %or.cond.us = icmp ult i8 %18, 10 br i1 %or.cond.us, label %19, label %.split.us 19: ; preds = %.lr.ph.split.us - %20 = zext nneg i8 %18 to i32 - %21 = udiv i32 %spec.select, %16 - %22 = icmp ugt i32 %.07279.us, %21 - br i1 %22, label %.split81.us, label %23 - -23: ; preds = %19 - %24 = mul nuw i32 %.07279.us, %16 - %25 = sub nuw i32 %spec.select, %20 - %26 = icmp ugt i32 %24, %25 - br i1 %26, label %.split83.us, label %27 - -27: ; preds = %23 - %28 = add nuw i32 %24, %20 - %29 = getelementptr inbounds nuw i8, ptr %.sroa.064.078.us, i64 1 - %.not73.us = icmp eq ptr %29, %13 + %20 = zext nneg i8 %17 to i32 + %21 = add nsw i32 %20, -48 + %22 = udiv i32 %spec.select, %16 + %23 = icmp ugt i32 %.07279.us, %22 + br i1 %23, label %.split81.us, label %24 + +24: ; preds = %19 + %25 = mul nuw i32 %.07279.us, %16 + %26 = sub nuw i32 %spec.select, %21 + %27 = icmp ugt i32 %25, %26 + br i1 %27, label %.split83.us, label %28 + +23: ; preds = %24 + %29 = add nuw i32 %21, %25 + %30 = getelementptr inbounds nuw i8, ptr %.sroa.064.078.us, i64 1 + %26 = icmp eq ptr %30, %13 br i1 %.not73.us, label %._crit_edge, label %.lr.ph.split.us -._crit_edge: ; preds = %62, %27, %2 - %.072.lcssa = phi i32 [ 0, %2 ], [ %28, %27 ], [ %63, %62 ] +._crit_edge: ; preds = %62, %28, %2 + %.072.lcssa = phi i32 [ 0, %2 ], [ %29, %28 ], [ %63, %63 ] call void @llvm.lifetime.start.p0(ptr nonnull %3) invoke void @_ZN7cxxopts6values6detail11SignedCheckIiLb1EEclIjEEvbT_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 1 dereferenceable(1) %3, i1 noundef zeroext %7, i32 noundef %.072.lcssa, ptr noundef nonnull align 8 dereferenceable(32) %0) - to label %65 unwind label %70 + to label %66 unwind label %70 .lr.ph.split: ; preds = %.lr.ph, %62 - %.07279 = phi i32 [ %63, %62 ], [ 0, %.lr.ph ] - %.sroa.064.078 = phi ptr [ %64, %62 ], [ %10, %.lr.ph ] + %.07279 = phi i32 [ %63, %63 ], [ 0, %.lr.ph ] + %.sroa.064.078 = phi ptr [ %64, %63 ], [ %10, %.lr.ph ] %30 = load i8, ptr %.sroa.064.078, align 1, !tbaa !14 %31 = sext i8 %30 to i32 %32 = add i8 %30, -48 @@ -75245,38 +75246,38 @@ define linkonce_odr dso_local void @_ZN7cxxopts6values14integer_parserIiEEvRKNSt 33: ; preds = %.lr.ph.split %34 = add i8 %30, -97 %35 = icmp ult i8 %34, 6 - br i1 %35, label %45, label %36 + br i1 %35, label %45, label %37 -36: ; preds = %33 - %37 = add i8 %30, -65 - %38 = icmp ult i8 %37, 6 - br i1 %38, label %45, label %.split.us +.noexc: ; preds = %34 + %38 = add i8 %31, -65 + %39 = icmp ult i8 %38, 6 + br i1 %39, label %46, label %.split.us -.split.us: ; preds = %36, %.lr.ph.split.us - %39 = call ptr @__cxa_allocate_exception(i64 40) #32 - invoke void @_ZN7cxxopts10exceptions23incorrect_argument_typeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %39, ptr noundef nonnull align 8 dereferenceable(32) %0) - to label %40 unwind label %41 +.split.us: ; preds = %37, %.lr.ph.split.us + %40 = call ptr @__cxa_allocate_exception(i64 40) #32 + invoke void @_ZN7cxxopts10exceptions23incorrect_argument_typeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %40, ptr noundef nonnull align 8 dereferenceable(32) %0) + to label %41 unwind label %42 -40: ; preds = %.split.us - invoke void @__cxa_throw(ptr nonnull %39, ptr nonnull @_ZTIN7cxxopts10exceptions23incorrect_argument_typeE, ptr nonnull @_ZN7cxxopts10exceptions9exceptionD2Ev) #31 - to label %.noexc unwind label %43 +41: ; preds = %.split.us + invoke void @__cxa_throw(ptr nonnull %40, ptr nonnull @_ZTIN7cxxopts10exceptions23incorrect_argument_typeE, ptr nonnull @_ZN7cxxopts10exceptions9exceptionD2Ev) #31 + to label %.noexc unwind label %44 -.noexc: ; preds = %40 +.noexc: ; preds = %41 unreachable -41: ; preds = %.split.us - %42 = landingpad { ptr, i32 } +42: ; preds = %.split.us + %43 = landingpad { ptr, i32 } cleanup - call void @__cxa_free_exception(ptr nonnull %39) #32 + call void @__cxa_free_exception(ptr nonnull %40) #32 br label %.body -43: ; preds = %40 +43: ; preds = %41 %44 = landingpad { ptr, i32 } cleanup br label %.body -45: ; preds = %36, %33, %.lr.ph.split - %.sink = phi i32 [ -48, %.lr.ph.split ], [ -87, %33 ], [ -55, %36 ] +45: ; preds = %37, %33, %.lr.ph.split + %.sink = phi i32 [ -48, %.lr.ph.split ], [ -87, %34 ], [ -55, %37 ] %46 = add nsw i32 %.sink, %31 %47 = udiv i32 %spec.select, %16 %48 = icmp ugt i32 %.07279, %47 @@ -75304,7 +75305,7 @@ define linkonce_odr dso_local void @_ZN7cxxopts6values14integer_parserIiEEvRKNSt %57 = icmp ugt i32 %55, %56 br i1 %57, label %.split83.us, label %62 -.split83.us: ; preds = %54, %23 +.split83.us: ; preds = %54, %24 %58 = call ptr @__cxa_allocate_exception(i64 40) #32 invoke void @_ZN7cxxopts10exceptions23incorrect_argument_typeC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(40) %58, ptr noundef nonnull align 8 dereferenceable(32) %0) to label %.invoke unwind label %60 @@ -75378,8 +75379,8 @@ _ZN7cxxopts6values11parser_tool11IntegerDescD2Ev.exit: ; preds = %_ZNSt7__cxx111 call void @llvm.lifetime.end.p0(ptr nonnull %4) ret void -.body: ; preds = %41, %43, %49, %60, %52, %70 - %.pn.pn = phi { ptr, i32 } [ %71, %70 ], [ %44, %43 ], [ %42, %41 ], [ %53, %52 ], [ %50, %49 ], [ %61, %60 ] +.body: ; preds = %42, %43, %49, %60, %52, %70 + %.pn.pn = phi { ptr, i32 } [ %71, %71 ], [ %44, %44 ], [ %43, %42 ], [ %53, %53 ], [ %50, %50 ], [ %61, %61 ] call void @_ZN7cxxopts6values11parser_tool11IntegerDescD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %4) #32 call void @llvm.lifetime.end.p0(ptr nonnull %4) resume { ptr, i32 } %.pn.pn diff --git a/bench/duckdb/optimized/encode.ll b/bench/duckdb/optimized/encode.ll index 88532493f25..e07acff6940 100644 --- a/bench/duckdb/optimized/encode.ll +++ b/bench/duckdb/optimized/encode.ll @@ -2633,7 +2633,7 @@ _ZN13duckdb_brotliL10HasherSizeEPK19BrotliEncoderParamsimPm.exit.i: ; preds = %2 310: ; preds = %308 %311 = load i32, ptr %300, align 8, !tbaa !150 - switch i32 %311, label %.thread532 [ + switch i32 %311, label %.thread530 [ i32 2, label %312 i32 3, label %316 i32 4, label %320 @@ -2832,7 +2832,7 @@ _ZN13duckdb_brotliL10HasherSizeEPK19BrotliEncoderParamsimPm.exit.i: ; preds = %2 br i1 %397, label %399, label %_ZN13duckdb_brotliL11HasherSetupEPNS_13MemoryManagerEPNS_6HasherEP19BrotliEncoderParamsPKhmmi.exit 399: ; preds = %.thread532, %396 - %400 = phi ptr [ %395, %.thread532 ], [ %398, %396 ] + %400 = phi ptr [ %395, %.thread530 ], [ %398, %396 ] %401 = getelementptr inbounds nuw i8, ptr %0, i64 1688 %402 = load i32, ptr %401, align 8, !tbaa !150 switch i32 %402, label %_ZN13duckdb_brotliL9PrepareH2EPNS_2H2EimPKh.exit [ diff --git a/bench/duckdb/optimized/utf8proc.ll b/bench/duckdb/optimized/utf8proc.ll index 33d4111c91f..4a921015d94 100644 --- a/bench/duckdb/optimized/utf8proc.ll +++ b/bench/duckdb/optimized/utf8proc.ll @@ -1482,7 +1482,7 @@ define noundef range(i64 -9223372036854775808, 1152921504606846976) i64 @_ZN6duc .split.split.us: ; preds = %.split, %53 %.064.us97 = phi i64 [ %38, %53 ], [ 0, %.split ] %.061.us98 = phi i64 [ %54, %53 ], [ 0, %.split ] - %36 = getelementptr inbounds i8, ptr %0, i64 %.064.us97 + %36 = getelementptr inbounds nuw i8, ptr %0, i64 %.064.us97 %37 = call noundef i64 @_ZN6duckdb16utf8proc_iterateEPKhlPi(ptr noundef %36, i64 noundef -1, ptr noundef nonnull %8) %38 = add nsw i64 %37, %.064.us97 %39 = load i32, ptr %8, align 4, !tbaa !3 @@ -1515,7 +1515,7 @@ define noundef range(i64 -9223372036854775808, 1152921504606846976) i64 @_ZN6duc .split.split: ; preds = %.split, %74 %.064 = phi i64 [ %58, %74 ], [ 0, %.split ] %.061 = phi i64 [ %75, %74 ], [ 0, %.split ] - %56 = getelementptr inbounds i8, ptr %0, i64 %.064 + %56 = getelementptr inbounds nuw i8, ptr %0, i64 %.064 %57 = call noundef i64 @_ZN6duckdb16utf8proc_iterateEPKhlPi(ptr noundef %56, i64 noundef -1, ptr noundef nonnull %8) %58 = add nsw i64 %57, %.064 %59 = load i32, ptr %8, align 4, !tbaa !3 diff --git a/bench/eastl/optimized/BenchmarkAlgorithm.ll b/bench/eastl/optimized/BenchmarkAlgorithm.ll index 7afe648626f..7f20869f984 100644 --- a/bench/eastl/optimized/BenchmarkAlgorithm.ll +++ b/bench/eastl/optimized/BenchmarkAlgorithm.ll @@ -11289,18 +11289,11 @@ if.then64.i.i.i: ; preds = %if.else61.i.i.i %add.ptr.i37.i.i.i = getelementptr inbounds i8, ptr %__p.sroa.0.0.i.i.i, i64 %add.ptr.i37.idx.i.i.i %add.ptr.i38.i.i.i = getelementptr inbounds i8, ptr %add.ptr.i37.i.i.i, i64 -32 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(32) %__t65.sroa.0.i.i.i, ptr noundef nonnull align 1 dereferenceable(32) %add.ptr.i38.i.i.i, i64 32, i1 false) - %tobool.not.i.i.i.i.i42.i.i.i = icmp eq i64 %__n.0.i.i.i, 1 - br i1 %tobool.not.i.i.i.i.i42.i.i.i, label %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_18SizedPODILm32EEESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit.i.i.i, label %if.then.i.i.i.i.i43.i.i.i - -if.then.i.i.i.i.i43.i.i.i: ; preds = %if.then64.i.i.i %sub.ptr.sub.i.i.i.i.i46.i.i.i = add nsw i64 %add.ptr.i37.idx.i.i.i, -32 %sub.ptr.div.i.i.i.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i46.i.i.i, 5 %idx.neg.i.i.i.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i.i.i.i %add.ptr.i.i.i.i.i47.i.i.i = getelementptr inbounds %"struct.(anonymous namespace)::SizedPOD", ptr %add.ptr.i37.i.i.i, i64 %idx.neg.i.i.i.i.i.i.i.i call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %add.ptr.i.i.i.i.i47.i.i.i, ptr nonnull align 1 %__p.sroa.0.0.i.i.i, i64 %sub.ptr.sub.i.i.i.i.i46.i.i.i, i1 false) - br label %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_18SizedPODILm32EEESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit.i.i.i - -_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_18SizedPODILm32EEESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit.i.i.i: ; preds = %if.then.i.i.i.i.i43.i.i.i, %if.then64.i.i.i call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(32) %__p.sroa.0.0.i.i.i, ptr noundef nonnull align 1 dereferenceable(32) %__t65.sroa.0.i.i.i, i64 32, i1 false) br label %_ZNSt3_V26rotateIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_18SizedPODILm32EEESt6vectorIS5_SaIS5_EEEEEET_SB_SB_SB_.exit.i @@ -11338,7 +11331,7 @@ for.cond.i.i.i.backedge: ; preds = %for.end110.i.i.i, % %__n.0.i.i.i.be = phi i64 [ %__k.0.i.i.i, %if.end59.i.i.i ], [ %sub20.i.i.i, %for.end110.i.i.i ] br label %for.cond.i.i.i, !llvm.loop !199 -_ZNSt3_V26rotateIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_18SizedPODILm32EEESt6vectorIS5_SaIS5_EEEEEET_SB_SB_SB_.exit.i: ; preds = %for.end110.i.i.i, %for.end.i.i.i, %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_18SizedPODILm32EEESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit.i.i.i, %if.then24.i.i.i +_ZNSt3_V26rotateIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_18SizedPODILm32EEESt6vectorIS5_SaIS5_EEEEEET_SB_SB_SB_.exit.i: ; preds = %for.end110.i.i.i, %for.end.i.i.i, %if.then64.i.i.i, %if.then24.i.i.i call void @llvm.lifetime.end.p0(ptr nonnull %__t.sroa.0.i.i.i) call void @llvm.lifetime.end.p0(ptr nonnull %__t65.sroa.0.i.i.i) invoke void @_ZN2EA4StdC9Stopwatch4StopEv(ptr noundef nonnull align 8 dereferenceable(24) %stopwatch1) diff --git a/bench/eastl/optimized/EASprintfCore.ll b/bench/eastl/optimized/EASprintfCore.ll index 27548e0132d..90fccfabbb3 100644 --- a/bench/eastl/optimized/EASprintfCore.ll +++ b/bench/eastl/optimized/EASprintfCore.ll @@ -1006,14 +1006,13 @@ if.then.i.i.i: ; preds = %if.then.i br i1 %cmp211.i.i.i, label %land.rhs.i.i.i.preheader, label %while.end.i.i.i land.rhs.i.i.i.preheader: ; preds = %if.then.i.i.i - %narrow322 = add nsw i32 %93, -1 - %94 = icmp samesign ugt i32 %narrow322, 5 + %narrow322 = add nsw i32 %93, -7 + %94 = icmp ult i32 %narrow322, -6 br i1 %94, label %while.end.i.i.i, label %while.end.i.i.loopexit.split.loop.exit29.i while.end.i.i.loopexit.split.loop.exit29.i: ; preds = %land.rhs.i.i.i.preheader - %95 = zext nneg i32 %narrow322 to i64 + %95 = zext nneg i32 %93 to i64 %96 = getelementptr inbounds nuw i8, ptr @_ZN2EA4StdC12SprintfLocalL12kStringNull8E, i64 %95 - %incdec.ptr.i.i.ptr.le.i = getelementptr inbounds nuw i8, ptr %96, i64 1 br label %while.end.i.i.i while.end.i.i.i: ; preds = %land.rhs.i.i.i.preheader, %while.end.i.i.loopexit.split.loop.exit29.i, %if.then.i.i.i @@ -1106,14 +1105,13 @@ if.then.i.i.i134: ; preds = %if.then.i131 br i1 %cmp211.i.i.i136, label %land.rhs.i.i.i143.preheader, label %while.end.i.i.i137 land.rhs.i.i.i143.preheader: ; preds = %if.then.i.i.i134 - %narrow320 = add nsw i32 %104, -1 - %105 = icmp samesign ugt i32 %narrow320, 5 + %narrow320 = add nsw i32 %104, -7 + %105 = icmp ult i32 %narrow320, -6 br i1 %105, label %while.end.i.i.i137, label %while.end.i.i.loopexit.split.loop.exit6.i while.end.i.i.loopexit.split.loop.exit6.i: ; preds = %land.rhs.i.i.i143.preheader - %106 = zext nneg i32 %narrow320 to i64 + %106 = zext nneg i32 %103 to i64 %107 = getelementptr inbounds nuw i8, ptr @_ZN2EA4StdC12SprintfLocalL12kStringNull8E, i64 %106 - %incdec.ptr.i.i.ptr.le.i149 = getelementptr inbounds nuw i8, ptr %107, i64 1 br label %while.end.i.i.i137 while.end.i.i.i137: ; preds = %land.rhs.i.i.i143.preheader, %while.end.i.i.loopexit.split.loop.exit6.i, %if.then.i.i.i134 @@ -1174,14 +1172,13 @@ if.then.i.i.i158: ; preds = %if.then.i155 br i1 %cmp211.i.i.i160, label %land.rhs.i.i.i167.preheader, label %while.end.i.i.i161 land.rhs.i.i.i167.preheader: ; preds = %if.then.i.i.i158 - %narrow = add nsw i32 %114, -1 - %115 = icmp samesign ugt i32 %narrow, 5 + %narrow = add nsw i32 %114, -7 + %115 = icmp ult i32 %narrow, -6 br i1 %115, label %while.end.i.i.i161, label %while.end.i.i.loopexit.split.loop.exit6.i173 while.end.i.i.loopexit.split.loop.exit6.i173: ; preds = %land.rhs.i.i.i167.preheader - %116 = zext nneg i32 %narrow to i64 + %116 = zext nneg i32 %112 to i64 %117 = getelementptr inbounds nuw i8, ptr @_ZN2EA4StdC12SprintfLocalL12kStringNull8E, i64 %116 - %incdec.ptr.i.i.ptr.le.i174 = getelementptr inbounds nuw i8, ptr %117, i64 1 br label %while.end.i.i.i161 while.end.i.i.i161: ; preds = %land.rhs.i.i.i167.preheader, %while.end.i.i.loopexit.split.loop.exit6.i173, %if.then.i.i.i158 diff --git a/bench/ffmpeg/optimized/pngdec.ll b/bench/ffmpeg/optimized/pngdec.ll index 34984ebcf1c..9eacdc292b8 100644 --- a/bench/ffmpeg/optimized/pngdec.ll +++ b/bench/ffmpeg/optimized/pngdec.ll @@ -3299,11 +3299,10 @@ bytestream2_get_byte.exit.i394: ; preds = %.lr.ph51.i, %1013 br i1 %1032, label %.lr.ph.i389, label %.loopexit.i .lr.ph.i389: ; preds = %.preheader47.i - %1033 = lshr i32 %.0.i495, 1 + %1033 = lshr i64 %188, 1 %notmask.i.i = shl nsw i32 -1, %1030 %1034 = xor i32 %notmask.i.i, -1 %1035 = icmp sgt i32 %1030, 8 - %wide.trip.count58.i = zext nneg i32 %1033 to i64 br i1 %1035, label %.lr.ph.split.us.preheader.i, label %.lr.ph.split.i .lr.ph.split.us.preheader.i: ; preds = %.lr.ph.i389 @@ -3332,7 +3331,7 @@ bytestream2_get_be16.exit.us.i: ; preds = %.lr.ph.split.us.i, %1046 = getelementptr inbounds nuw i8, ptr %58, i64 %1045 store i16 %.0.i46.us.i, ptr %1046, align 1, !tbaa !4 %indvars.iv.next56.i = add nuw nsw i64 %indvars.iv55.i, 1 - %exitcond59.not.i = icmp eq i64 %indvars.iv.next56.i, %wide.trip.count58.i + %exitcond59.not.i = icmp eq i64 %indvars.iv.next56.i, %1033 br i1 %exitcond59.not.i, label %.loopexit.i, label %.lr.ph.split.us.i, !llvm.loop !182 .lr.ph.split.i: ; preds = %.lr.ph.i389, %bytestream2_get_be16.exit.i @@ -3358,7 +3357,7 @@ bytestream2_get_be16.exit.i: ; preds = %.lr.ph.split.i, %10 %1057 = getelementptr inbounds nuw i8, ptr %58, i64 %indvars.iv.i390 store i8 %.0.i46.i, ptr %1057, align 1, !tbaa !4 %indvars.iv.next.i391 = add nuw nsw i64 %indvars.iv.i390, 1 - %exitcond.not.i392 = icmp eq i64 %indvars.iv.next.i391, %wide.trip.count58.i + %exitcond.not.i392 = icmp eq i64 %indvars.iv.next.i391, %1033 br i1 %exitcond.not.i392, label %.loopexit.i, label %.lr.ph.split.i, !llvm.loop !182 .loopexit.i: ; preds = %bytestream2_get_be16.exit.i, %bytestream2_get_be16.exit.us.i, %bytestream2_get_byte.exit.i394, %.preheader47.i, %.preheader.i393 diff --git a/bench/fmt/optimized/scan-test.ll b/bench/fmt/optimized/scan-test.ll index 90b2bfd8126..8c1c4d024d5 100644 --- a/bench/fmt/optimized/scan-test.ll +++ b/bench/fmt/optimized/scan-test.ll @@ -10661,7 +10661,7 @@ define linkonce_odr hidden void @_ZN3fmt3v1114basic_scan_argINS0_12scan_contextE %10 = alloca %"struct.fmt::v11::format_specs", align 4 %11 = alloca %"struct.fmt::v11::format_specs", align 4 %12 = load i32, ptr %1, align 8, !tbaa !263 - switch i32 %12, label %203 [ + switch i32 %12, label %202 [ i32 6, label %180 i32 1, label %13 i32 2, label %42 @@ -10965,26 +10965,25 @@ _ZN3fmt3v116detail4readIxTnNSt9enable_ifIXsr3std9is_signedIT_EE5valueEiE4typeELi unreachable 120: ; preds = %138, %.preheader.i27 - %121 = phi ptr [ %134, %138 ], [ %.pre41.i29, %.preheader.i27 ] - %122 = phi ptr [ %133, %138 ], [ %.pre.i28, %.preheader.i27 ] - %.sroa.031.0.copyload35.i = phi ptr [ %.sroa.031.0.copyload36.i, %138 ], [ %.sroa.085.0.copyload, %.preheader.i27 ] - %.024.i30 = phi i32 [ %136, %138 ], [ 0, %.preheader.i27 ] - %.023.i31 = phi i64 [ %127, %138 ], [ 0, %.preheader.i27 ] - %.0.i32 = phi i8 [ %135, %138 ], [ %.sroa.587.0.copyload, %.preheader.i27 ] + %121 = phi ptr [ %134, %137 ], [ %.pre41.i29, %.preheader.i27 ] + %122 = phi ptr [ %133, %137 ], [ %.pre.i28, %.preheader.i27 ] + %.sroa.031.0.copyload35.i = phi ptr [ %.sroa.031.0.copyload36.i, %137 ], [ %.sroa.085.0.copyload, %.preheader.i27 ] + %.024.i30 = phi i32 [ %136, %137 ], [ 0, %.preheader.i27 ] + %.023.i31 = phi i64 [ %126, %137 ], [ 0, %.preheader.i27 ] + %.0.i32 = phi i8 [ %135, %137 ], [ %.sroa.587.0.copyload, %.preheader.i27 ] %123 = mul i64 %.023.i31, 10 - %124 = zext nneg i8 %.0.i32 to i64 - %125 = add nuw nsw i64 %124, 4294967248 - %126 = and i64 %125, 4294967295 - %127 = add i64 %126, %123 - %128 = getelementptr inbounds nuw i8, ptr %122, i64 1 - store ptr %128, ptr %117, align 8, !tbaa !17, !noalias !417 - %.not.i.i.i33 = icmp eq ptr %128, %121 + %124 = and i8 %.0.i32, 15 + %125 = zext nneg i8 %124 to i64 + %126 = add i64 %123, %125 + %127 = getelementptr inbounds nuw i8, ptr %122, i64 1 + store ptr %127, ptr %117, align 8, !tbaa !17, !noalias !417 + %.not.i.i.i33 = icmp eq ptr %127, %121 br i1 %.not.i.i.i33, label %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i38, label %_ZN3fmt3v116detail11scan_buffer8iteratorppEv.exit.i34 _ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i38: ; preds = %120 %129 = load ptr, ptr %.sroa.486.0.copyload, align 8, !tbaa !24, !noalias !417 %130 = load ptr, ptr %129, align 8, !noalias !417 - tail call void %130(ptr noundef nonnull align 8 dereferenceable(25) %.sroa.486.0.copyload), !noalias !417 + tail call void %129(ptr noundef nonnull align 8 dereferenceable(25) %.sroa.486.0.copyload), !noalias !417 %131 = load ptr, ptr %117, align 8, !tbaa !17, !noalias !417 %132 = load ptr, ptr %118, align 8, !tbaa !23, !noalias !417 %.not.i.i39 = icmp eq ptr %131, %132 @@ -10992,7 +10991,7 @@ _ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i38: ; preds = %120 br label %_ZN3fmt3v116detail11scan_buffer8iteratorppEv.exit.i34 _ZN3fmt3v116detail11scan_buffer8iteratorppEv.exit.i34: ; preds = %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i38, %120 - %133 = phi ptr [ %128, %120 ], [ %131, %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i38 ] + %133 = phi ptr [ %127, %120 ], [ %131, %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i38 ] %134 = phi ptr [ %121, %120 ], [ %132, %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i38 ] %.sroa.031.0.copyload36.i = phi ptr [ %.sroa.031.0.copyload35.i, %120 ], [ %spec.select.i40, %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i38 ] %135 = load i8, ptr %133, align 1, !tbaa !4, !noalias !417 @@ -11012,7 +11011,7 @@ _ZN3fmt3v116detail11scan_buffer8iteratorppEv.exit.i34: ; preds = %_ZN3fmt3v116de 142: ; preds = %140 %143 = icmp ne i32 %136, 10 - %.not.i36 = icmp ugt i64 %127, 2147483647 + %.not.i36 = icmp ugt i64 %126, 2147483647 %or.cond27.i = select i1 %143, i1 true, i1 %.not.i36 br i1 %or.cond27.i, label %144, label %.sink.split.i37 @@ -11021,7 +11020,7 @@ _ZN3fmt3v116detail11scan_buffer8iteratorppEv.exit.i34: ; preds = %_ZN3fmt3v116de unreachable .sink.split.i37: ; preds = %142, %140 - store i64 %127, ptr %112, align 8, !tbaa !166, !noalias !417 + store i64 %126, ptr %112, align 8, !tbaa !166, !noalias !417 br label %_ZN3fmt3v116detail4readIyTnNSt9enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4typeELi0EEENS1_11scan_buffer8iteratorES8_RS4_.exit _ZN3fmt3v116detail4readIyTnNSt9enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4typeELi0EEENS1_11scan_buffer8iteratorES8_RS4_.exit: ; preds = %110, %.sink.split.i37 @@ -11076,7 +11075,7 @@ _ZN3fmt3v116detail4readIyTnNSt9enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4type _ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i.i: ; preds = %155 %159 = load ptr, ptr %.sroa.4100.0.copyload, align 8, !tbaa !24, !noalias !427 %160 = load ptr, ptr %159, align 8, !noalias !427 - tail call void %160(ptr noundef nonnull align 8 dereferenceable(25) %.sroa.4100.0.copyload), !noalias !427 + tail call void %159(ptr noundef nonnull align 8 dereferenceable(25) %.sroa.4100.0.copyload), !noalias !427 %161 = load ptr, ptr %149, align 8, !tbaa !17, !noalias !427 %162 = load ptr, ptr %150, align 8, !tbaa !23, !noalias !427 %.not.i.i.i44 = icmp eq ptr %161, %162 @@ -11084,8 +11083,8 @@ _ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i.i: ; preds = %155 br label %_ZN3fmt3v116detail11scan_buffer8iteratorppEi.exit.i _ZN3fmt3v116detail11scan_buffer8iteratorppEi.exit.i: ; preds = %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i.i, %155 - %163 = phi ptr [ %158, %155 ], [ %161, %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i.i ] - %.sroa.03.0.copyload5.i = phi ptr [ %.sroa.03.0.copyload69.i, %155 ], [ %spec.select.i45, %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i.i ] + %163 = phi ptr [ %158, %154 ], [ %161, %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i.i ] + %.sroa.03.0.copyload5.i = phi ptr [ %.sroa.03.0.copyload69.i, %154 ], [ %spec.select.i45, %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i.i ] %164 = load i8, ptr %163, align 1, !tbaa !4, !noalias !427 %165 = load i64, ptr %151, align 8, !tbaa !26, !noalias !424 %166 = add i64 %165, 1 @@ -11110,7 +11109,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i: ; pr br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit.i _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit.i: ; preds = %174, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i - %175 = phi ptr [ %.pre.i.i, %174 ], [ %167, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i ] + %175 = phi ptr [ %.pre.i.i, %173 ], [ %167, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8capacityEv.exit.i.i ] %176 = getelementptr inbounds nuw i8, ptr %175, i64 %165 store i8 %154, ptr %176, align 1, !tbaa !4, !noalias !424 store i64 %166, ptr %151, align 8, !tbaa !26, !noalias !424 @@ -11122,8 +11121,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit.i: ; pred br i1 %.not4.i, label %_ZN3fmt3v116detail4readENS1_11scan_buffer8iteratorERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_12format_specsE.exit, label %153, !llvm.loop !31 _ZN3fmt3v116detail4readENS1_11scan_buffer8iteratorERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_12format_specsE.exit: ; preds = %153, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit.i, %145 - %.lcssa.i = phi i8 [ %.sroa.5101.0.copyload, %145 ], [ 32, %153 ], [ %164, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit.i ] - %.sroa.03.0.copyload6.lcssa.i = phi ptr [ %.sroa.099.0.copyload, %145 ], [ %.sroa.03.0.copyload69.i, %153 ], [ %.sroa.03.0.copyload5.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit.i ] + %.lcssa.i = phi i8 [ %.sroa.5101.0.copyload, %144 ], [ 32, %152 ], [ %164, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit.i ] + %.sroa.03.0.copyload6.lcssa.i = phi ptr [ %.sroa.099.0.copyload, %144 ], [ %.sroa.03.0.copyload69.i, %152 ], [ %.sroa.03.0.copyload5.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit.i ] store ptr %.sroa.03.0.copyload6.lcssa.i, ptr %0, align 8, !tbaa !12 %.sroa.691.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %.sroa.4100.0.copyload, ptr %.sroa.691.0..sroa_idx, align 8, !tbaa !33 @@ -11172,7 +11171,7 @@ _ZN3fmt3v116detail13to_contiguousENS1_11scan_buffer8iteratorE.exit.thread.i: ; p unreachable .lr.ph.i50: ; preds = %195, %.lr.ph.preheader.i - %.033.i = phi ptr [ %196, %195 ], [ %188, %.lr.ph.preheader.i ] + %.033.i = phi ptr [ %196, %194 ], [ %188, %.lr.ph.preheader.i ] %194 = load i8, ptr %.033.i, align 1, !tbaa !4, !noalias !433 %.not6.i = icmp eq i8 %194, 32 br i1 %.not6.i, label %.critedge.loopexit.i, label %195 @@ -11183,7 +11182,7 @@ _ZN3fmt3v116detail13to_contiguousENS1_11scan_buffer8iteratorE.exit.thread.i: ; p br i1 %.not.i51, label %.critedge.loopexit.i, label %.lr.ph.i50, !llvm.loop !38 .critedge.loopexit.i: ; preds = %195, %.lr.ph.i50 - %.0.lcssa.ph.i = phi ptr [ %.033.i, %.lr.ph.i50 ], [ %scevgep.i, %195 ] + %.0.lcssa.ph.i = phi ptr [ %.033.i, %.lr.ph.i50 ], [ %scevgep.i, %194 ] %.pre.i52 = ptrtoint ptr %.0.lcssa.ph.i to i64 br label %_ZN3fmt3v116detail4readENS1_11scan_buffer8iteratorERNS0_17basic_string_viewIcEERKNS0_12format_specsE.exit @@ -11504,26 +11503,25 @@ define linkonce_odr hidden void @_ZN3fmt3v116detail4readIyTnNSt9enable_ifIXsr3st unreachable 17: ; preds = %35, %.preheader.i - %18 = phi ptr [ %31, %35 ], [ %.pre41.i, %.preheader.i ] - %19 = phi ptr [ %30, %35 ], [ %.pre.i, %.preheader.i ] - %.sroa.031.0.copyload35.i = phi ptr [ %.sroa.031.0.copyload36.i, %35 ], [ %.sroa.09.0.copyload, %.preheader.i ] - %.024.i = phi i32 [ %33, %35 ], [ 0, %.preheader.i ] - %.023.i = phi i64 [ %24, %35 ], [ 0, %.preheader.i ] - %.0.i = phi i8 [ %32, %35 ], [ %.sroa.3.0.copyload, %.preheader.i ] + %18 = phi ptr [ %31, %34 ], [ %.pre41.i, %.preheader.i ] + %19 = phi ptr [ %30, %34 ], [ %.pre.i, %.preheader.i ] + %.sroa.031.0.copyload35.i = phi ptr [ %.sroa.031.0.copyload36.i, %34 ], [ %.sroa.09.0.copyload, %.preheader.i ] + %.024.i = phi i32 [ %33, %34 ], [ 0, %.preheader.i ] + %.023.i = phi i64 [ %23, %34 ], [ 0, %.preheader.i ] + %.0.i = phi i8 [ %32, %34 ], [ %.sroa.3.0.copyload, %.preheader.i ] %20 = mul i64 %.023.i, 10 - %21 = zext nneg i8 %.0.i to i64 - %22 = add nuw nsw i64 %21, 4294967248 - %23 = and i64 %22, 4294967295 - %24 = add i64 %23, %20 - %25 = getelementptr inbounds nuw i8, ptr %19, i64 1 - store ptr %25, ptr %14, align 8, !tbaa !17, !noalias !443 - %.not.i.i.i = icmp eq ptr %25, %18 + %21 = and i8 %.0.i, 15 + %22 = zext nneg i8 %21 to i64 + %23 = add i64 %20, %22 + %24 = getelementptr inbounds nuw i8, ptr %19, i64 1 + store ptr %24, ptr %14, align 8, !tbaa !17, !noalias !443 + %.not.i.i.i = icmp eq ptr %24, %18 br i1 %.not.i.i.i, label %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i, label %_ZN3fmt3v116detail11scan_buffer8iteratorppEv.exit.i _ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i: ; preds = %17 %26 = load ptr, ptr %.sroa.2.0.copyload, align 8, !tbaa !24, !noalias !443 %27 = load ptr, ptr %26, align 8, !noalias !443 - tail call void %27(ptr noundef nonnull align 8 dereferenceable(25) %.sroa.2.0.copyload), !noalias !443 + tail call void %26(ptr noundef nonnull align 8 dereferenceable(25) %.sroa.2.0.copyload), !noalias !443 %28 = load ptr, ptr %14, align 8, !tbaa !17, !noalias !443 %29 = load ptr, ptr %15, align 8, !tbaa !23, !noalias !443 %.not.i.i = icmp eq ptr %28, %29 @@ -11531,7 +11529,7 @@ _ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i: ; preds = %17 br label %_ZN3fmt3v116detail11scan_buffer8iteratorppEv.exit.i _ZN3fmt3v116detail11scan_buffer8iteratorppEv.exit.i: ; preds = %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i, %17 - %30 = phi ptr [ %25, %17 ], [ %28, %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i ] + %30 = phi ptr [ %24, %17 ], [ %28, %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i ] %31 = phi ptr [ %18, %17 ], [ %29, %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i ] %.sroa.031.0.copyload36.i = phi ptr [ %.sroa.031.0.copyload35.i, %17 ], [ %spec.select.i, %_ZN3fmt3v116detail11scan_buffer11try_consumeEv.exit.i.i ] %32 = load i8, ptr %30, align 1, !tbaa !4, !noalias !443 @@ -11551,7 +11549,7 @@ _ZN3fmt3v116detail11scan_buffer8iteratorppEv.exit.i: ; preds = %_ZN3fmt3v116deta 39: ; preds = %37 %40 = icmp ne i32 %33, 10 - %.not.i = icmp ugt i64 %24, 2147483647 + %.not.i = icmp ugt i64 %23, 2147483647 %or.cond27.i = select i1 %40, i1 true, i1 %.not.i br i1 %or.cond27.i, label %41, label %.sink.split.i @@ -11560,7 +11558,7 @@ _ZN3fmt3v116detail11scan_buffer8iteratorppEv.exit.i: ; preds = %_ZN3fmt3v116deta unreachable .sink.split.i: ; preds = %39, %37 - store i64 %24, ptr %2, align 8, !tbaa !166, !noalias !443 + store i64 %23, ptr %2, align 8, !tbaa !166, !noalias !443 br label %_ZN3fmt3v116detail4readIyTnNSt9enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4typeELi0EEENS1_11scan_buffer8iteratorES8_RS4_.exit _ZN3fmt3v116detail4readIyTnNSt9enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4typeELi0EEENS1_11scan_buffer8iteratorES8_RS4_.exit: ; preds = %9, %.sink.split.i diff --git a/bench/git/optimized/cache-tree.ll b/bench/git/optimized/cache-tree.ll index 3ac831eb78c..88c7afb39e7 100644 --- a/bench/git/optimized/cache-tree.ll +++ b/bench/git/optimized/cache-tree.ll @@ -602,22 +602,22 @@ define dso_local range(i32 -2147483648, 1) i32 @cache_tree_update(ptr noundef %0 br i1 %.not.us.i, label %23, label %14 14: ; preds = %.lr.ph.split.us.i - %15 = add i32 %.03768.us.i, 1 - %16 = icmp ugt i32 %15, 10 - %17 = load ptr, ptr @stderr, align 8, !tbaa !46 - br i1 %16, label %.thread57.i, label %18 + %15 = icmp ugt i32 %.03768.us.i, 9 + br i1 %15, label %.thread57.i, label %16 18: ; preds = %14 + %17 = add nuw nsw i32 %.03768.us.i, 1 + %18 = load ptr, ptr @stderr, align 8, !tbaa !46 %19 = getelementptr inbounds nuw i8, ptr %10, i64 108 %20 = getelementptr inbounds nuw i8, ptr %10, i64 72 %21 = tail call ptr @oid_to_hex(ptr noundef nonnull %20) #19 - %22 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %17, ptr noundef nonnull @.str.16, ptr noundef nonnull %19, ptr noundef %21) #22 + %22 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %18, ptr noundef nonnull @.str.16, ptr noundef nonnull %19, ptr noundef %21) #22 %.pre.i = load i32, ptr %4, align 4, !tbaa !42 br label %23 23: ; preds = %18, %.lr.ph.split.us.i - %24 = phi i32 [ %7, %.lr.ph.split.us.i ], [ %.pre.i, %18 ] - %.3.ph.us.i = phi i32 [ %.03768.us.i, %.lr.ph.split.us.i ], [ %15, %18 ] + %24 = phi i32 [ %7, %.lr.ph.split.us.i ], [ %.pre.i, %16 ] + %.3.ph.us.i = phi i32 [ %.03768.us.i, %.lr.ph.split.us.i ], [ %17, %16 ] %indvars.iv.next78.i = add nuw nsw i64 %indvars.iv77.i, 1 %25 = zext i32 %24 to i64 %26 = icmp samesign ult i64 %indvars.iv.next78.i, %25 @@ -629,7 +629,7 @@ define dso_local range(i32 -2147483648, 1) i32 @cache_tree_update(ptr noundef %0 br label %29 29: ; preds = %36, %.lr.ph.split.i - %indvars.iv.i = phi i64 [ 0, %.lr.ph.split.i ], [ %indvars.iv.next.i, %36 ] + %indvars.iv.i = phi i64 [ 0, %.lr.ph.split.i ], [ %indvars.iv.next.i, %37 ] %30 = getelementptr inbounds nuw ptr, ptr %27, i64 %indvars.iv.i %31 = load ptr, ptr %30, align 8, !tbaa !44 %32 = getelementptr inbounds nuw i8, ptr %31, i64 56 @@ -639,7 +639,8 @@ define dso_local range(i32 -2147483648, 1) i32 @cache_tree_update(ptr noundef %0 br i1 %.not.i, label %36, label %verify_cache.exit.thread .thread57.i: ; preds = %14 - %35 = tail call i64 @fwrite(ptr nonnull @.str.15, i64 4, i64 1, ptr %17) #23 + %35 = load ptr, ptr @stderr, align 8, !tbaa !46 + %36 = tail call i64 @fwrite(ptr nonnull @.str.15, i64 4, i64 1, ptr %35) #23 br label %verify_cache.exit.thread 36: ; preds = %29 @@ -652,15 +653,15 @@ define dso_local range(i32 -2147483648, 1) i32 @cache_tree_update(ptr noundef %0 br i1 %37, label %.preheader.i, label %verify_cache.exit.thread .preheader.i: ; preds = %36, %._crit_edge.i - %38 = phi i32 [ %24, %._crit_edge.i ], [ %5, %36 ] + %38 = phi i32 [ %24, %._crit_edge.i ], [ %5, %37 ] %39 = icmp ugt i32 %38, 1 br i1 %39, label %.lr.ph72.i, label %verify_cache.exit.thread25 .lr.ph72.i: ; preds = %.preheader.i, %68 - %40 = phi i32 [ %69, %68 ], [ %38, %.preheader.i ] - %indvars.iv82.i = phi i64 [ %indvars.iv.next83.i, %68 ], [ 0, %.preheader.i ] - %indvars.iv80.i = phi i64 [ %indvars.iv.next81.i, %68 ], [ 1, %.preheader.i ] - %.470.i = phi i32 [ %.7.i, %68 ], [ 0, %.preheader.i ] + %40 = phi i32 [ %69, %69 ], [ %38, %.preheader.i ] + %indvars.iv82.i = phi i64 [ %indvars.iv.next83.i, %69 ], [ 0, %.preheader.i ] + %indvars.iv80.i = phi i64 [ %indvars.iv.next81.i, %69 ], [ 1, %.preheader.i ] + %.470.i = phi i32 [ %.7.i, %69 ], [ 0, %.preheader.i ] %41 = load ptr, ptr %0, align 8, !tbaa !43 %42 = getelementptr inbounds nuw ptr, ptr %41, i64 %indvars.iv82.i %43 = load ptr, ptr %42, align 8, !tbaa !44 @@ -703,8 +704,8 @@ define dso_local range(i32 -2147483648, 1) i32 @cache_tree_update(ptr noundef %0 br label %68 68: ; preds = %66, %58, %53, %.lr.ph72.i - %69 = phi i32 [ %.pre87.i, %66 ], [ %40, %58 ], [ %40, %53 ], [ %40, %.lr.ph72.i ] - %.7.i = phi i32 [ %62, %66 ], [ %.470.i, %58 ], [ %.470.i, %53 ], [ %.470.i, %.lr.ph72.i ] + %69 = phi i32 [ %.pre87.i, %67 ], [ %40, %59 ], [ %40, %54 ], [ %40, %.lr.ph72.i ] + %.7.i = phi i32 [ %62, %67 ], [ %.470.i, %59 ], [ %.470.i, %54 ], [ %.470.i, %.lr.ph72.i ] %indvars.iv.next81.i = add nuw nsw i64 %indvars.iv80.i, 1 %70 = zext i32 %69 to i64 %71 = icmp samesign ult i64 %indvars.iv.next81.i, %70 @@ -779,7 +780,7 @@ verify_cache.exit.thread25: ; preds = %2, %.preheader.i, % br label %verify_cache.exit.thread verify_cache.exit.thread: ; preds = %29, %.thread60.i, %.thread57.i, %._crit_edge.i, %95, %verify_cache.exit, %97 - %.0 = phi i32 [ 0, %97 ], [ -1, %verify_cache.exit ], [ %88, %95 ], [ -1, %._crit_edge.i ], [ -1, %.thread57.i ], [ -1, %.thread60.i ], [ -1, %29 ] + %.0 = phi i32 [ 0, %98 ], [ -1, %verify_cache.exit ], [ %88, %96 ], [ -1, %._crit_edge.i ], [ -1, %.thread57.i ], [ -1, %.thread60.i ], [ -1, %29 ] call void @llvm.lifetime.end.p0(ptr nonnull %3) ret i32 %.0 } diff --git a/bench/git/optimized/tree-walk.ll b/bench/git/optimized/tree-walk.ll index 24736665945..301a9022c5a 100644 --- a/bench/git/optimized/tree-walk.ll +++ b/bench/git/optimized/tree-walk.ll @@ -1293,49 +1293,45 @@ extended_entry_extract.exit169: ; preds = %.lr.ph50.i, %.crite br i1 %or.cond.i, label %.thread, label %246 246: ; preds = %243 - %247 = icmp slt i32 %.0125345, 0 - br i1 %247, label %.lr.ph230.preheader, label %248 - -248: ; preds = %246 - %249 = call fastcc i32 @do_match(ptr noundef %0, ptr noundef readonly %.5, ptr noundef nonnull %9, ptr noundef nonnull readonly %.val155, i32 noundef 0) - %250 = getelementptr inbounds nuw i8, ptr %.val155, i64 8 - %251 = load i32, ptr %250, align 8, !tbaa !83 - %252 = and i32 %251, 32 - %253 = icmp eq i32 %252, 0 - %254 = icmp slt i32 %249, 1 - %or.cond.i.i = select i1 %253, i1 true, i1 %254 - br i1 %or.cond.i.i, label %prune_traversal.exit, label %255 - -255: ; preds = %248 - %256 = call fastcc i32 @do_match(ptr noundef %0, ptr noundef readonly %.5, ptr noundef nonnull %9, ptr noundef nonnull readonly %.val155, i32 noundef 1) - %257 = icmp eq i32 %249, 2 - %258 = icmp eq i32 %256, 0 - %or.cond3.i.i = select i1 %257, i1 %258, i1 false - br i1 %or.cond3.i.i, label %.thread, label %259 - -259: ; preds = %255 - %260 = icmp slt i32 %256, 1 - br i1 %260, label %.thread, label %261 - -261: ; preds = %259 - %262 = getelementptr inbounds nuw i8, ptr %.5, i64 52 - %263 = load i32, ptr %262, align 4, !tbaa !80 - %264 = and i32 %263, 61440 - %265 = icmp eq i32 %264, 16384 - %266 = icmp eq i32 %256, 1 - %or.cond7.i.i = select i1 %265, i1 %266, i1 false - br i1 %or.cond7.i.i, label %.thread, label %267 - -267: ; preds = %261 - %268 = icmp eq i32 %249, 1 - %or.cond11.i.i = select i1 %257, i1 %266, i1 false - %or.cond35.i.i = select i1 %268, i1 true, i1 %or.cond11.i.i + %247 = call fastcc i32 @do_match(ptr noundef %0, ptr noundef readonly %.5, ptr noundef nonnull %9, ptr noundef nonnull readonly %.val155, i32 noundef 0) + %248 = getelementptr inbounds nuw i8, ptr %.val155, i64 8 + %249 = load i32, ptr %248, align 8, !tbaa !83 + %250 = and i32 %249, 32 + %251 = icmp eq i32 %250, 0 + %252 = icmp slt i32 %247, 1 + %or.cond.i.i = select i1 %251, i1 true, i1 %252 + br i1 %or.cond.i.i, label %prune_traversal.exit, label %253 + +253:; preds = %246 + %254 = call fastcc i32 @do_match(ptr noundef %0, ptr noundef readonly %.5, ptr noundef nonnull %9, ptr noundef nonnull readonly %.val155, i32 noundef 1) + %255 = icmp eq i32 %247, 2 + %256 = icmp eq i32 %254, 0 + %or.cond3.i.i = select i1 %255, i1 %256, i1 false + br i1 %or.cond3.i.i, label %.thread, label %257 + +257:; preds = %253 + %258 = icmp slt i32 %254, 1 + br i1 %258, label %.thread, label %259 + +259: ; preds = %257 + %260 = getelementptr inbounds nuw i8, ptr %.5, i64 52 + %261 = load i32, ptr %260, align 4, !tbaa !80 + %262 = and i32 %261, 61440 + %263 = icmp eq i32 %262, 16384 + %264 = icmp eq i32 %254, 1 + %or.cond7.i.i = select i1 %263, i1 %264, i1 false + br i1 %or.cond7.i.i, label %.thread, label %265 + +265:; preds = %259 + %266 = icmp eq i32 %247, 1 + %or.cond11.i.i = select i1 %255, i1 %264, i1 false + %or.cond35.i.i = select i1 %266, i1 true, i1 %or.cond11.i.i %not.or.cond35.i.i = xor i1 %or.cond35.i.i, true %spec.select.i.i = sext i1 %not.or.cond35.i.i to i32 br label %prune_traversal.exit -prune_traversal.exit: ; preds = %248, %267 - %.0.i170 = phi i32 [ %249, %248 ], [ %spec.select.i.i, %267 ] +prune_traversal.exit: ; preds = %246, %265 + %.0.i170 = phi i32 [ %247, %246 ], [ %spec.select.i.i, %265 ] %269 = icmp slt i32 %.0.i170, 0 br i1 %269, label %.lr.ph230.preheader, label %270 @@ -1343,10 +1339,10 @@ prune_traversal.exit: ; preds = %248, %267 %.not146 = icmp eq i32 %.0.i170, 0 br i1 %.not146, label %279, label %.thread -.thread: ; preds = %243, %255, %259, %261, %270 - %.0.i170186192 = phi i32 [ %.0.i170, %270 ], [ 1, %261 ], [ %249, %259 ], [ 1, %255 ], [ 2, %243 ] +.thread: ; preds = %243, %253, %257, %259, %270 + %.0.i170186192 = phi i32 [ %.0.i170, %268 ], [ 1, %259 ], [ %247, %257 ], [ 1, %253 ], [ 2, %243 ] %271 = load ptr, ptr %63, align 8, !tbaa !86 - %272 = call i32 %271(i32 noundef %1, i64 noundef %.1120, i64 noundef %.1117, ptr noundef nonnull %25, ptr noundef nonnull %3) #15 + %272 = call i32 %269(i32 noundef %1, i64 noundef %.1120, i64 noundef %.1117, ptr noundef nonnull %25, ptr noundef nonnull %3) #15 %273 = icmp slt i32 %272, 0 br i1 %273, label %274, label %276 @@ -1356,19 +1352,19 @@ prune_traversal.exit: ; preds = %248, %267 br i1 %.not147, label %.lr.ph230.preheader, label %276 276: ; preds = %274, %.thread - %.3130 = phi i32 [ %272, %274 ], [ %.0127344, %.thread ] + %.3130 = phi i32 [ %272, %272 ], [ %.0127344, %.thread ] %277 = sext i32 %272 to i64 %278 = and i64 %.1120, %277 br label %279 279: ; preds = %276, %270 - %.0.i170187 = phi i32 [ %.0.i170186192, %276 ], [ 0, %270 ] - %.2129 = phi i32 [ %.3130, %276 ], [ %.0127344, %270 ] - %.2121 = phi i64 [ %278, %276 ], [ %.1120, %270 ] + %.0.i170187 = phi i32 [ %.0.i170186192, %274 ], [ 0, %268 ] + %.2129 = phi i32 [ %.3130, %274 ], [ %.0127344, %268 ] + %.2121 = phi i64 [ %278, %274 ], [ %.1120, %268 ] br label %.lr.ph228 .lr.ph228: ; preds = %279, %update_extended_entry.exit - %indvars.iv271 = phi i64 [ %indvars.iv.next272, %update_extended_entry.exit ], [ 0, %279 ] + %indvars.iv271 = phi i64 [ %indvars.iv.next272, %update_extended_entry.exit ], [ 0, %277 ] %280 = shl nuw i64 1, %indvars.iv271 %281 = and i64 %280, %.2121 %.not148 = icmp eq i64 %281, 0 @@ -1404,8 +1400,8 @@ update_extended_entry.exit: ; preds = %291, %290, %.lr.ph2 %exitcond276.not = icmp eq i64 %indvars.iv.next272, %wide.trip.count275 br i1 %exitcond276.not, label %.lr.ph204.preheader.loopexit, label %.lr.ph228, !llvm.loop !68 -.lr.ph230.preheader: ; preds = %246, %274, %prune_traversal.exit, %._crit_edge222 - %.1128.ph = phi i32 [ %.0127344, %246 ], [ %272, %274 ], [ %.0127344, %prune_traversal.exit ], [ %.0127344, %._crit_edge222 ] +.lr.ph230.preheader: ; preds = %274, %prune_traversal.exit, %._crit_edge222 + %.1128.ph = phi i32 [ %274, %272 ], [ %.0127344, %prune_traversal.exit ], [ %.0127344, %._crit_edge222 ] %wide.trip.count281 = zext nneg i32 %65 to i64 br label %.lr.ph230 diff --git a/bench/git/optimized/walker.ll b/bench/git/optimized/walker.ll index faa497bf8e3..15eb2bcd40f 100644 --- a/bench/git/optimized/walker.ll +++ b/bench/git/optimized/walker.ll @@ -82,8 +82,8 @@ define dso_local range(i32 -2147483647, -2147483648) i32 @walker_targets_stdin(p br label %8 8: ; preds = %.lr.ph, %31 - %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %31 ] - %.02539 = phi i32 [ 0, %.lr.ph ], [ %.2, %31 ] + %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %29 ] + %.02539 = phi i32 [ 0, %.lr.ph ], [ %.2, %29 ] %9 = load ptr, ptr %7, align 8, !tbaa !14 %10 = call ptr @strchr(ptr noundef nonnull dereferenceable(1) %9, i32 noundef 9) #16 %.not = icmp eq ptr %10, null @@ -98,45 +98,37 @@ define dso_local range(i32 -2147483647, -2147483648) i32 @walker_targets_stdin(p %.024 = phi ptr [ %12, %11 ], [ null, %8 ] %14 = sext i32 %.02539 to i64 %.not29 = icmp slt i64 %indvars.iv, %14 - br i1 %.not29, label %25, label %15 + br i1 %.not29, label %23, label %15 15: ; preds = %13 %.not30 = icmp eq i32 %.02539, 0 - %16 = shl nsw i32 %.02539, 1 + %16 = shl nuw nsw i32 %.02539, 1 %17 = select i1 %.not30, i32 64, i32 %16 %18 = zext nneg i32 %17 to i64 - %mul.ov.i = icmp slt i32 %17, 0 - br i1 %mul.ov.i, label %19, label %st_mult.exit33 - -19: ; preds = %15 - call void (ptr, ...) @die(ptr noundef nonnull @.str.5, i64 noundef 8, i64 noundef range(i64 -2147483648, 2147483648) %18) #17 - unreachable - -st_mult.exit33: ; preds = %15 - %20 = load ptr, ptr %0, align 8, !tbaa !12 - %21 = shl nuw nsw i64 %18, 3 - %22 = call ptr @xrealloc(ptr noundef %20, i64 noundef %21) #15 - store ptr %22, ptr %0, align 8, !tbaa !12 - %23 = load ptr, ptr %1, align 8, !tbaa !12 - %24 = call ptr @xrealloc(ptr noundef %23, i64 noundef %21) #15 - store ptr %24, ptr %1, align 8, !tbaa !12 - br label %25 - -25: ; preds = %st_mult.exit33, %13 - %.2 = phi i32 [ %17, %st_mult.exit33 ], [ %.02539, %13 ] - %26 = call ptr @xstrdup(ptr noundef nonnull %9) #15 - %27 = load ptr, ptr %0, align 8, !tbaa !12 - %28 = getelementptr inbounds nuw ptr, ptr %27, i64 %indvars.iv - store ptr %26, ptr %28, align 8, !tbaa !19 + %18 = load ptr, ptr %0, align 8, !tbaa !12 + %19 = shl nuw nsw i64 %17, 3 + %20 = call ptr @xrealloc(ptr noundef %18, i64 noundef %19) #15 + store ptr %20, ptr %0, align 8, !tbaa !12 + %21 = load ptr, ptr %1, align 8, !tbaa !12 + %22 = call ptr @xrealloc(ptr noundef %21, i64 noundef %19) #15 + store ptr %22, ptr %1, align 8, !tbaa !12 + br label %23 + +23:; preds = %st_mult.exit33, %13 + %.2 = phi i32 [ %16, %st_mult.exit33 ], [ %.02539, %13 ] + %24 = call ptr @xstrdup(ptr noundef nonnull %9) #15 + %23 = load ptr, ptr %0, align 8, !tbaa !12 + %26 = getelementptr inbounds nuw ptr, ptr %23, i64 %indvars.iv + store ptr %24, ptr %26, align 8, !tbaa !19 %.not.i = icmp eq ptr %.024, null br i1 %.not.i, label %31, label %29 -29: ; preds = %25 +29: ; preds = %23 %30 = call ptr @xstrdup(ptr noundef nonnull %.024) #15 br label %31 -31: ; preds = %29, %25 - %32 = phi ptr [ %30, %29 ], [ null, %25 ] +31: ; preds = %29, %23 + %32 = phi ptr [ %30, %27 ], [ null, %23 ] %33 = load ptr, ptr %1, align 8, !tbaa !12 %34 = getelementptr inbounds nuw ptr, ptr %33, i64 %indvars.iv store ptr %32, ptr %34, align 8, !tbaa !19 diff --git a/bench/graphviz/optimized/blockpath.ll b/bench/graphviz/optimized/blockpath.ll index 6d65c950b3d..5fb7f2c64e9 100644 --- a/bench/graphviz/optimized/blockpath.ll +++ b/bench/graphviz/optimized/blockpath.ll @@ -337,9 +337,9 @@ clone_graph.exit.i: ; preds = %._crit_edge67.i.i, 147: ; preds = %.lr.ph.i44.i %148 = icmp eq i64 %spec.select.i.i10.i.i, 0 - %149 = shl i64 %spec.select.i.i10.i.i, 1 + %149 = shl nuw nsw i64 %spec.select.i.i10.i.i, 1 %spec.select.i.i.i.i = select i1 %148, i64 1, i64 %149 - %mul.ov.i.i.i.i = icmp ugt i64 %spec.select.i.i.i.i, 2305843009213693951 + %mul.ov.i.i.i.i = icmp samesign ugt i64 %spec.select.i.i.i.i, 2305843009213693951 br i1 %mul.ov.i.i.i.i, label %166, label %150 150: ; preds = %147 @@ -1317,9 +1317,9 @@ measure_distance.exit.i: ; preds = %tailrecurse.i.i, %5 583: ; preds = %577 %584 = icmp eq i64 %578, 0 - %585 = shl i64 %578, 1 + %585 = shl nuw nsw i64 %578, 1 %spec.select.i.i59.i = select i1 %584, i64 1, i64 %585 - %mul.ov.i.i60.i = icmp ugt i64 %spec.select.i.i59.i, 2305843009213693951 + %mul.ov.i.i60.i = icmp samesign ugt i64 %spec.select.i.i59.i, 2305843009213693951 br i1 %mul.ov.i.i60.i, label %604, label %586 586: ; preds = %583 diff --git a/bench/gromacs/optimized/tngio.ll b/bench/gromacs/optimized/tngio.ll index 7b090d3dd5c..aa0970ed01b 100644 --- a/bench/gromacs/optimized/tngio.ll +++ b/bench/gromacs/optimized/tngio.ll @@ -703,31 +703,31 @@ _ZNSt6vectorIfSaIfEE7reserveEm.exit89: ; preds = %19, %_ZNSt12_Vector br label %._crit_edge373 ._crit_edge373: ; preds = %._crit_edge373.loopexit, %_ZNSt6vectorIfSaIfEE7reserveEm.exit89 - %.pre-phi = phi i64 [ %.pre473, %._crit_edge373.loopexit ], [ %16, %_ZNSt6vectorIfSaIfEE7reserveEm.exit89 ] - %.sroa.0139.2.lcssa = phi ptr [ %.sroa.0139.6.lcssa, %._crit_edge373.loopexit ], [ %.sroa.0139.7, %_ZNSt6vectorIfSaIfEE7reserveEm.exit89 ] - %.sroa.22.2.lcssa = phi ptr [ %.sroa.22.6.lcssa, %._crit_edge373.loopexit ], [ %.sroa.22.7, %_ZNSt6vectorIfSaIfEE7reserveEm.exit89 ] - %.sroa.22159.2.lcssa = phi ptr [ %.sroa.22159.7.lcssa, %._crit_edge373.loopexit ], [ %.sroa.22159.8497, %_ZNSt6vectorIfSaIfEE7reserveEm.exit89 ] - %.sroa.0150.2.lcssa = phi ptr [ %.sroa.0150.7.lcssa, %._crit_edge373.loopexit ], [ %.sroa.13156.3498, %_ZNSt6vectorIfSaIfEE7reserveEm.exit89 ] + %.pre-phi = phi i64 [ %.pre473, %._crit_edge374.loopexit ], [ %16, %_ZNSt6vectorIfSaIfEE7reserveEm.exit89 ] + %.sroa.0139.2.lcssa = phi ptr [ %.sroa.0139.6.lcssa, %._crit_edge374.loopexit ], [ %.sroa.0139.7, %_ZNSt6vectorIfSaIfEE7reserveEm.exit89 ] + %.sroa.22.2.lcssa = phi ptr [ %.sroa.22.6.lcssa, %._crit_edge374.loopexit ], [ %.sroa.22.7, %_ZNSt6vectorIfSaIfEE7reserveEm.exit89 ] + %.sroa.22159.2.lcssa = phi ptr [ %.sroa.22159.7.lcssa, %._crit_edge374.loopexit ], [ %.sroa.22159.8497, %_ZNSt6vectorIfSaIfEE7reserveEm.exit89 ] + %.sroa.0150.2.lcssa = phi ptr [ %.sroa.0150.7.lcssa, %._crit_edge374.loopexit ], [ %.sroa.13156.3498, %_ZNSt6vectorIfSaIfEE7reserveEm.exit89 ] %32 = invoke i32 @tng_particle_data_block_add(ptr noundef %12, i64 noundef 268435460, ptr noundef nonnull @.str.9, i8 noundef signext 2, i8 noundef signext 0, i64 noundef 1, i64 noundef 1, i64 noundef 1, i64 noundef 0, i64 noundef %.pre-phi, i64 noundef 3, ptr noundef %.sroa.0150.2.lcssa) to label %324 unwind label %33 33: ; preds = %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i83, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i, %18, %324, %._crit_edge373 - %.sroa.0139.1 = phi ptr [ null, %18 ], [ %.sroa.0139.2.lcssa, %324 ], [ %.sroa.0139.2.lcssa, %._crit_edge373 ], [ null, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i83 ], [ null, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i ] - %.sroa.22.1 = phi ptr [ null, %18 ], [ %.sroa.22.2.lcssa, %324 ], [ %.sroa.22.2.lcssa, %._crit_edge373 ], [ null, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i83 ], [ null, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i ] - %.sroa.22159.1 = phi ptr [ null, %18 ], [ %.sroa.22159.2.lcssa, %324 ], [ %.sroa.22159.2.lcssa, %._crit_edge373 ], [ %22, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i83 ], [ null, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i ] - %.sroa.0150.1 = phi ptr [ null, %18 ], [ %.sroa.0150.2.lcssa, %324 ], [ %.sroa.0150.2.lcssa, %._crit_edge373 ], [ %21, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i83 ], [ null, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i ] + %.sroa.0139.1 = phi ptr [ null, %18 ], [ %.sroa.0139.2.lcssa, %324 ], [ %.sroa.0139.2.lcssa, %._crit_edge374 ], [ null, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i83 ], [ null, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i ] + %.sroa.22.1 = phi ptr [ null, %18 ], [ %.sroa.22.2.lcssa, %324 ], [ %.sroa.22.2.lcssa, %._crit_edge374 ], [ null, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i83 ], [ null, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i ] + %.sroa.22159.1 = phi ptr [ null, %18 ], [ %.sroa.22159.2.lcssa, %324 ], [ %.sroa.22159.2.lcssa, %._crit_edge374 ], [ %22, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i83 ], [ null, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i ] + %.sroa.0150.1 = phi ptr [ null, %18 ], [ %.sroa.0150.2.lcssa, %324 ], [ %.sroa.0150.2.lcssa, %._crit_edge374 ], [ %21, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i83 ], [ null, %_ZNSt12_Vector_baseIfSaIfEE11_M_allocateEm.exit.i ] %34 = landingpad { ptr, i32 } cleanup br label %337 35: ; preds = %.lr.ph372, %._crit_edge - %.sroa.0150.2371 = phi ptr [ %.sroa.13156.3498, %.lr.ph372 ], [ %.sroa.0150.7.lcssa, %._crit_edge ] - %.sroa.13156.0370 = phi ptr [ %.sroa.13156.3498, %.lr.ph372 ], [ %.sroa.13156.2.lcssa, %._crit_edge ] - %.sroa.22159.2369 = phi ptr [ %.sroa.22159.8497, %.lr.ph372 ], [ %.sroa.22159.7.lcssa, %._crit_edge ] - %.sroa.0136.0368 = phi ptr [ %27, %.lr.ph372 ], [ %254, %._crit_edge ] - %.sroa.22.2367 = phi ptr [ %.sroa.22.7, %.lr.ph372 ], [ %.sroa.22.6.lcssa, %._crit_edge ] - %.sroa.13.0366 = phi ptr [ %.sroa.0139.7, %.lr.ph372 ], [ %.sroa.13.2.lcssa, %._crit_edge ] - %.sroa.0139.2365 = phi ptr [ %.sroa.0139.7, %.lr.ph372 ], [ %.sroa.0139.6.lcssa, %._crit_edge ] + %.sroa.0150.2371 = phi ptr [ %.sroa.13156.3498, %.lr.ph373 ], [ %.sroa.0150.7.lcssa, %._crit_edge ] + %.sroa.13156.0370 = phi ptr [ %.sroa.13156.3498, %.lr.ph373 ], [ %.sroa.13156.2.lcssa, %._crit_edge ] + %.sroa.22159.2369 = phi ptr [ %.sroa.22159.8497, %.lr.ph373 ], [ %.sroa.22159.7.lcssa, %._crit_edge ] + %.sroa.0136.0368 = phi ptr [ %27, %.lr.ph373 ], [ %254, %._crit_edge ] + %.sroa.22.2367 = phi ptr [ %.sroa.22.7, %.lr.ph373 ], [ %.sroa.22.6.lcssa, %._crit_edge ] + %.sroa.13.0366 = phi ptr [ %.sroa.0139.7, %.lr.ph373 ], [ %.sroa.13.2.lcssa, %._crit_edge ] + %.sroa.0139.2365 = phi ptr [ %.sroa.0139.7, %.lr.ph373 ], [ %.sroa.0139.6.lcssa, %._crit_edge ] call void @llvm.lifetime.start.p0(ptr nonnull %11) store ptr null, ptr %11, align 8, !tbaa !98 %36 = load i32, ptr %.sroa.0136.0368, align 8, !tbaa !100 @@ -1065,13 +1065,13 @@ _ZL11IS_CHEMBONDi.exit.thread: ; preds = %143, %123, %115, %_ br i1 %or.cond, label %._crit_edge, label %.lr.ph352.split 203: ; preds = %.lr.ph339, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 - %indvars.iv469 = phi i64 [ 0, %.lr.ph339 ], [ %indvars.iv.next470, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] - %.sroa.0150.5337 = phi ptr [ %.sroa.0150.2371, %.lr.ph339 ], [ %.sroa.0150.9, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] - %.sroa.13156.1336 = phi ptr [ %.sroa.13156.0370, %.lr.ph339 ], [ %.sroa.13156.4, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] - %.sroa.22159.5335 = phi ptr [ %.sroa.22159.2369, %.lr.ph339 ], [ %.sroa.22159.9, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] - %.sroa.22.5334 = phi ptr [ %.sroa.22.2367, %.lr.ph339 ], [ %.sroa.22.8, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] - %.sroa.13.1333 = phi ptr [ %.sroa.13.0366, %.lr.ph339 ], [ %.sroa.13.4, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] - %.sroa.0139.5332 = phi ptr [ %.sroa.0139.2365, %.lr.ph339 ], [ %.sroa.0139.8, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] + %indvars.iv469 = phi i64 [ 0, %.lr.ph340 ], [ %indvars.iv.next470, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] + %.sroa.0150.5337 = phi ptr [ %.sroa.0150.2371, %.lr.ph340 ], [ %.sroa.0150.9, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] + %.sroa.13156.1336 = phi ptr [ %.sroa.13156.0370, %.lr.ph340 ], [ %.sroa.13156.4, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] + %.sroa.22159.5335 = phi ptr [ %.sroa.22159.2369, %.lr.ph340 ], [ %.sroa.22159.9, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] + %.sroa.22.5334 = phi ptr [ %.sroa.22.2367, %.lr.ph340 ], [ %.sroa.22.8, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] + %.sroa.13.1333 = phi ptr [ %.sroa.13.0366, %.lr.ph340 ], [ %.sroa.13.4, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] + %.sroa.0139.5332 = phi ptr [ %.sroa.0139.2365, %.lr.ph340 ], [ %.sroa.0139.8, %_ZNSt6vectorIfSaIfEE9push_backERKf.exit108 ] %204 = load ptr, ptr %168, align 8, !tbaa !151 %205 = getelementptr inbounds nuw %struct.t_atom, ptr %204, i64 %indvars.iv469 %206 = getelementptr inbounds nuw i8, ptr %205, i64 4 @@ -1225,12 +1225,12 @@ _ZNSt6vectorIfSaIfEE9push_backERKf.exit108: ; preds = %_ZNSt6vectorIfSaIfE br label %.body ._crit_edge: ; preds = %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126, %.preheader192, %.preheader - %.sroa.0139.6.lcssa = phi ptr [ %.sroa.0139.8, %.preheader ], [ %.sroa.0139.2365, %.preheader192 ], [ %.sroa.0139.11, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ] - %.sroa.13.2.lcssa = phi ptr [ %.sroa.13.4, %.preheader ], [ %.sroa.13.0366, %.preheader192 ], [ %.sroa.13.6, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ] - %.sroa.22.6.lcssa = phi ptr [ %.sroa.22.8, %.preheader ], [ %.sroa.22.2367, %.preheader192 ], [ %.sroa.22.11, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ] - %.sroa.22159.7.lcssa = phi ptr [ %.sroa.22159.9, %.preheader ], [ %.sroa.22159.2369, %.preheader192 ], [ %.sroa.22159.12166, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ] - %.sroa.13156.2.lcssa = phi ptr [ %.sroa.13156.4, %.preheader ], [ %.sroa.13156.0370, %.preheader192 ], [ %.sroa.13156.6167, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ] - %.sroa.0150.7.lcssa = phi ptr [ %.sroa.0150.9, %.preheader ], [ %.sroa.0150.2371, %.preheader192 ], [ %.sroa.0150.12168, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ] + %.sroa.0139.6.lcssa = phi ptr [ %.sroa.0139.8, %.preheader ], [ %.sroa.0139.2365, %.preheader193 ], [ %.sroa.0139.11, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ] + %.sroa.13.2.lcssa = phi ptr [ %.sroa.13.4, %.preheader ], [ %.sroa.13.0366, %.preheader193 ], [ %.sroa.13.6, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ] + %.sroa.22.6.lcssa = phi ptr [ %.sroa.22.8, %.preheader ], [ %.sroa.22.2367, %.preheader193 ], [ %.sroa.22.11, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ] + %.sroa.22159.7.lcssa = phi ptr [ %.sroa.22159.9, %.preheader ], [ %.sroa.22159.2369, %.preheader193 ], [ %.sroa.22159.12166, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ] + %.sroa.13156.2.lcssa = phi ptr [ %.sroa.13156.4, %.preheader ], [ %.sroa.13156.0370, %.preheader193 ], [ %.sroa.13156.6167, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ] + %.sroa.0150.7.lcssa = phi ptr [ %.sroa.0150.9, %.preheader ], [ %.sroa.0150.2371, %.preheader193 ], [ %.sroa.0150.12168, %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126 ] call void @llvm.lifetime.end.p0(ptr nonnull %11) %254 = getelementptr inbounds nuw i8, ptr %.sroa.0136.0368, i64 56 %.not182 = icmp eq ptr %254, %29 @@ -1249,9 +1249,10 @@ _ZNSt6vectorIfSaIfEE9push_backERKf.exit108: ; preds = %_ZNSt6vectorIfSaIfE br i1 %256, label %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126, label %.lr.ph.i.i.i.i.i.i.i .lr.ph.i.i.i.i.i.i.i: ; preds = %.lr.ph352.split - %257 = zext nneg i32 %255 to i64 - %258 = sub nsw i64 0, %257 - %259 = getelementptr inbounds float, ptr %.sroa.13156.2349, i64 %258 + %narrow = sub nsw i32 0, %255 + %257 = sext i32 %narrow to i64 + %259 = getelementptr inbounds float, ptr %.sroa.13156.2349, i64 %257 + %259 = zext nneg i32 %255 to i64 br label %260 260: ; preds = %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i, %.lr.ph.i.i.i.i.i.i.i @@ -1259,7 +1260,7 @@ _ZNSt6vectorIfSaIfEE9push_backERKf.exit108: ; preds = %_ZNSt6vectorIfSaIfE %.sroa.0150.10 = phi ptr [ %.sroa.0150.7350, %.lr.ph.i.i.i.i.i.i.i ], [ %.sroa.0150.11, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i ] %261 = phi ptr [ %.sroa.22159.7348, %.lr.ph.i.i.i.i.i.i.i ], [ %284, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i ] %262 = phi ptr [ %.sroa.13156.2349, %.lr.ph.i.i.i.i.i.i.i ], [ %.sroa.13156.5, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i ] - %.07.i.i.i.i.i.i.i = phi i64 [ %257, %.lr.ph.i.i.i.i.i.i.i ], [ %286, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i ] + %.07.i.i.i.i.i.i.i = phi i64 [ %259, %.lr.ph.i.i.i.i.i.i.i ], [ %286, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i ] %.056.i.i.i.i.i.i.i = phi ptr [ %259, %.lr.ph.i.i.i.i.i.i.i ], [ %285, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i ] %.not.i.i.i.i.i.i.i.i.i = icmp eq ptr %262, %261 br i1 %.not.i.i.i.i.i.i.i.i.i, label %265, label %263 @@ -1336,9 +1337,10 @@ _ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i: ; preds br i1 %289, label %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126, label %.lr.ph.i.i.i.i.i.i.i111 .lr.ph.i.i.i.i.i.i.i111: ; preds = %288 - %290 = zext nneg i32 %.pr to i64 - %291 = sub nsw i64 0, %290 - %292 = getelementptr inbounds float, ptr %.sroa.13.2346, i64 %291 + %narrow183 = sub nsw i32 0, %.pr + %290 = sext i32 %narrow183 to i64 + %292 = getelementptr inbounds float, ptr %.sroa.13.2346, i64 %290 + %292 = zext nneg i32 %.pr to i64 br label %293 293: ; preds = %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117, %.lr.ph.i.i.i.i.i.i.i111 @@ -1346,7 +1348,7 @@ _ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i: ; preds %.sroa.22.9 = phi ptr [ %.sroa.22.6347, %.lr.ph.i.i.i.i.i.i.i111 ], [ %.sroa.22.10, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] %294 = phi ptr [ %.sroa.22.6347, %.lr.ph.i.i.i.i.i.i.i111 ], [ %317, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] %295 = phi ptr [ %.sroa.13.2346, %.lr.ph.i.i.i.i.i.i.i111 ], [ %.sroa.13.5, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] - %.07.i.i.i.i.i.i.i114 = phi i64 [ %290, %.lr.ph.i.i.i.i.i.i.i111 ], [ %319, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] + %.07.i.i.i.i.i.i.i114 = phi i64 [ %292, %.lr.ph.i.i.i.i.i.i.i111 ], [ %319, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] %.056.i.i.i.i.i.i.i115 = phi ptr [ %292, %.lr.ph.i.i.i.i.i.i.i111 ], [ %318, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] %.not.i.i.i.i.i.i.i.i.i116 = icmp eq ptr %295, %294 br i1 %.not.i.i.i.i.i.i.i.i.i116, label %298, label %296 @@ -1418,12 +1420,12 @@ _ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117: ; pr br i1 %320, label %293, label %_ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126, !llvm.loop !154 _ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert_iteratorIS5_EET1_T_T0_S9_.exit126: ; preds = %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117, %.lr.ph352.split, %288 - %.sroa.0150.12168 = phi ptr [ %.sroa.0150.11, %288 ], [ %.sroa.0150.7350, %.lr.ph352.split ], [ %.sroa.0150.11, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] - %.sroa.13156.6167 = phi ptr [ %.sroa.13156.5, %288 ], [ %.sroa.13156.2349, %.lr.ph352.split ], [ %.sroa.13156.5, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] - %.sroa.22159.12166 = phi ptr [ %.sroa.22159.11, %288 ], [ %.sroa.22159.7348, %.lr.ph352.split ], [ %.sroa.22159.11, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] - %.sroa.0139.11 = phi ptr [ %.sroa.0139.6345, %288 ], [ %.sroa.0139.6345, %.lr.ph352.split ], [ %.sroa.0139.10, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] - %.sroa.13.6 = phi ptr [ %.sroa.13.2346, %288 ], [ %.sroa.13.2346, %.lr.ph352.split ], [ %.sroa.13.5, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] - %.sroa.22.11 = phi ptr [ %.sroa.22.6347, %288 ], [ %.sroa.22.6347, %.lr.ph352.split ], [ %.sroa.22.10, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] + %.sroa.0150.12168 = phi ptr [ %.sroa.0150.11, %288 ], [ %.sroa.0150.7350, %.lr.ph353.split ], [ %.sroa.0150.11, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] + %.sroa.13156.6167 = phi ptr [ %.sroa.13156.5, %288 ], [ %.sroa.13156.2349, %.lr.ph353.split ], [ %.sroa.13156.5, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] + %.sroa.22159.12166 = phi ptr [ %.sroa.22159.11, %288 ], [ %.sroa.22159.7348, %.lr.ph353.split ], [ %.sroa.22159.11, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] + %.sroa.0139.11 = phi ptr [ %.sroa.0139.6345, %288 ], [ %.sroa.0139.6345, %.lr.ph353.split ], [ %.sroa.0139.10, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] + %.sroa.13.6 = phi ptr [ %.sroa.13.2346, %288 ], [ %.sroa.13.2346, %.lr.ph353.split ], [ %.sroa.13.5, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] + %.sroa.22.11 = phi ptr [ %.sroa.22.6347, %288 ], [ %.sroa.22.6347, %.lr.ph353.split ], [ %.sroa.22.10, %_ZNSt20back_insert_iteratorISt6vectorIfSaIfEEEaSERKf.exit.i.i.i.i.i.i.i117 ] %321 = add nuw nsw i32 %.074351, 1 %322 = load i32, ptr %43, align 4, !tbaa !117 %323 = icmp slt i32 %321, %322 @@ -1450,11 +1452,11 @@ _ZSt6copy_nIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEEiSt20back_insert br label %.body .body: ; preds = %.loopexit, %.loopexit.split-lp, %.loopexit187, %.loopexit.split-lp188, %.loopexit193, %.loopexit.split-lp194, %.loopexit200, %.loopexit.split-lp201.loopexit.split-lp, %.loopexit.split-lp201.loopexit, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i, %198, %153 - %.sroa.0139.4 = phi ptr [ %.sroa.0139.2365, %153 ], [ %.sroa.0139.2365, %198 ], [ %.sroa.0139.2365, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %.sroa.0139.2365, %.loopexit200 ], [ %.sroa.0139.2365, %.loopexit.split-lp201.loopexit ], [ %.sroa.0139.2365, %.loopexit.split-lp201.loopexit.split-lp ], [ %.sroa.0139.5332, %.loopexit193 ], [ %.sroa.0139.5332, %.loopexit.split-lp194 ], [ %.sroa.0139.6345, %.loopexit187 ], [ %.sroa.0139.6345, %.loopexit.split-lp188 ], [ %.sroa.0139.9, %.loopexit ], [ %.sroa.0139.9, %.loopexit.split-lp ] - %.sroa.22.4 = phi ptr [ %.sroa.22.2367, %153 ], [ %.sroa.22.2367, %198 ], [ %.sroa.22.2367, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %.sroa.22.2367, %.loopexit200 ], [ %.sroa.22.2367, %.loopexit.split-lp201.loopexit ], [ %.sroa.22.2367, %.loopexit.split-lp201.loopexit.split-lp ], [ %.sroa.22.5334, %.loopexit193 ], [ %.sroa.22.5334, %.loopexit.split-lp194 ], [ %.sroa.22.6347, %.loopexit187 ], [ %.sroa.22.6347, %.loopexit.split-lp188 ], [ %.sroa.22.9, %.loopexit ], [ %.sroa.22.9, %.loopexit.split-lp ] - %.sroa.22159.4 = phi ptr [ %.sroa.22159.2369, %153 ], [ %.sroa.22159.2369, %198 ], [ %.sroa.22159.2369, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %.sroa.22159.2369, %.loopexit200 ], [ %.sroa.22159.2369, %.loopexit.split-lp201.loopexit ], [ %.sroa.22159.2369, %.loopexit.split-lp201.loopexit.split-lp ], [ %.sroa.22159.6.ph, %.loopexit193 ], [ %.sroa.22159.6.ph195, %.loopexit.split-lp194 ], [ %.sroa.22159.10, %.loopexit187 ], [ %.sroa.22159.10, %.loopexit.split-lp188 ], [ %.sroa.22159.11, %.loopexit ], [ %.sroa.22159.11, %.loopexit.split-lp ] - %.sroa.0150.4 = phi ptr [ %.sroa.0150.2371, %153 ], [ %.sroa.0150.2371, %198 ], [ %.sroa.0150.2371, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %.sroa.0150.2371, %.loopexit200 ], [ %.sroa.0150.2371, %.loopexit.split-lp201.loopexit ], [ %.sroa.0150.2371, %.loopexit.split-lp201.loopexit.split-lp ], [ %.sroa.0150.6.ph, %.loopexit193 ], [ %.sroa.0150.6.ph196, %.loopexit.split-lp194 ], [ %.sroa.0150.10, %.loopexit187 ], [ %.sroa.0150.10, %.loopexit.split-lp188 ], [ %.sroa.0150.11, %.loopexit ], [ %.sroa.0150.11, %.loopexit.split-lp ] - %.pn79 = phi { ptr, i32 } [ %154, %153 ], [ %199, %198 ], [ %.pn.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %lpad.loopexit202, %.loopexit200 ], [ %lpad.loopexit205, %.loopexit.split-lp201.loopexit ], [ %lpad.loopexit.split-lp206, %.loopexit.split-lp201.loopexit.split-lp ], [ %lpad.loopexit197, %.loopexit193 ], [ %lpad.loopexit.split-lp198, %.loopexit.split-lp194 ], [ %lpad.loopexit189, %.loopexit187 ], [ %lpad.loopexit.split-lp190, %.loopexit.split-lp188 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] + %.sroa.0139.4 = phi ptr [ %.sroa.0139.2365, %153 ], [ %.sroa.0139.2365, %198 ], [ %.sroa.0139.2365, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %.sroa.0139.2365, %.loopexit201 ], [ %.sroa.0139.2365, %.loopexit.split-lp202.loopexit ], [ %.sroa.0139.2365, %.loopexit.split-lp202.loopexit.split-lp ], [ %.sroa.0139.5332, %.loopexit194 ], [ %.sroa.0139.5333, %.loopexit.split-lp195 ], [ %.sroa.0139.6346, %.loopexit188 ], [ %.sroa.0139.6346, %.loopexit.split-lp189 ], [ %.sroa.0139.9, %.loopexit ], [ %.sroa.0139.9, %.loopexit.split-lp ] + %.sroa.22.4 = phi ptr [ %.sroa.22.2367, %153 ], [ %.sroa.22.2367, %198 ], [ %.sroa.22.2367, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %.sroa.22.2367, %.loopexit201 ], [ %.sroa.22.2367, %.loopexit.split-lp202.loopexit ], [ %.sroa.22.2367, %.loopexit.split-lp202.loopexit.split-lp ], [ %.sroa.22.5334, %.loopexit194 ], [ %.sroa.22.5334, %.loopexit.split-lp195 ], [ %.sroa.22.6348, %.loopexit188 ], [ %.sroa.22.6348, %.loopexit.split-lp189 ], [ %.sroa.22.9, %.loopexit ], [ %.sroa.22.9, %.loopexit.split-lp ] + %.sroa.22159.4 = phi ptr [ %.sroa.22159.2369, %153 ], [ %.sroa.22159.2369, %198 ], [ %.sroa.22159.2369, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %.sroa.22159.2369, %.loopexit201 ], [ %.sroa.22159.2369, %.loopexit.split-lp202.loopexit ], [ %.sroa.22159.2369, %.loopexit.split-lp202.loopexit.split-lp ], [ %.sroa.22159.6.ph, %.loopexit194 ], [ %.sroa.22159.6.ph196, %.loopexit.split-lp195 ], [ %.sroa.22159.10, %.loopexit188 ], [ %.sroa.22159.10, %.loopexit.split-lp189 ], [ %.sroa.22159.11, %.loopexit ], [ %.sroa.22159.11, %.loopexit.split-lp ] + %.sroa.0150.4 = phi ptr [ %.sroa.0150.2371, %153 ], [ %.sroa.0150.2371, %198 ], [ %.sroa.0150.2371, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %.sroa.0150.2371, %.loopexit201 ], [ %.sroa.0150.2371, %.loopexit.split-lp202.loopexit ], [ %.sroa.0150.2371, %.loopexit.split-lp202.loopexit.split-lp ], [ %.sroa.0150.6.ph, %.loopexit194 ], [ %.sroa.0150.6.ph197, %.loopexit.split-lp195 ], [ %.sroa.0150.10, %.loopexit188 ], [ %.sroa.0150.10, %.loopexit.split-lp189 ], [ %.sroa.0150.11, %.loopexit ], [ %.sroa.0150.11, %.loopexit.split-lp ] + %.pn79 = phi { ptr, i32 } [ %154, %153 ], [ %199, %198 ], [ %.pn.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i ], [ %lpad.loopexit202, %.loopexit201 ], [ %lpad.loopexit205, %.loopexit.split-lp202.loopexit ], [ %lpad.loopexit.split-lp206, %.loopexit.split-lp202.loopexit.split-lp ], [ %lpad.loopexit197, %.loopexit194 ], [ %lpad.loopexit.split-lp198, %.loopexit.split-lp195 ], [ %lpad.loopexit189, %.loopexit188 ], [ %lpad.loopexit.split-lp191, %.loopexit.split-lp189 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] call void @llvm.lifetime.end.p0(ptr nonnull %11) br label %337 diff --git a/bench/hwloc/optimized/topology-synthetic.ll b/bench/hwloc/optimized/topology-synthetic.ll index cde81c3c12d..f6200af6d24 100644 --- a/bench/hwloc/optimized/topology-synthetic.ll +++ b/bench/hwloc/optimized/topology-synthetic.ll @@ -1641,8 +1641,8 @@ define internal ptr @hwloc_synthetic_component_instantiate(ptr noundef %0, ptr n br label %141 141: ; preds = %139, %137, %134, %.thread524.i - %142 = phi ptr [ %129, %137 ], [ %129, %139 ], [ %129, %134 ], [ %101, %.thread524.i ] - %.2522.i = phi ptr [ %128, %137 ], [ %128, %139 ], [ %128, %134 ], [ %.1.i, %.thread524.i ] + %142 = phi ptr [ %129, %137 ], [ %129, %139 ], [ %129, %134 ], [ %101, %.thread523.i ] + %.2522.i = phi ptr [ %128, %137 ], [ %128, %139 ], [ %128, %134 ], [ %.1.i, %.thread523.i ] %143 = call i64 @strtoul(ptr noundef nonnull %.2522.i, ptr noundef nonnull %8, i32 noundef 0) #25 %144 = load ptr, ptr %8, align 8, !tbaa !81 %145 = icmp eq ptr %144, %.2522.i @@ -1688,8 +1688,8 @@ define internal ptr @hwloc_synthetic_component_instantiate(ptr noundef %0, ptr n br i1 %164, label %.thread374.i, label %165 165: ; preds = %161, %155 - %166 = add i64 %.0283427.i, 1 - %167 = icmp ugt i64 %166, 127 + %166 = add nuw nsw i64 %.0283427.i, 1 + %167 = icmp ugt i64 %.0283427.i, 126 br i1 %167, label %168, label %172 168: ; preds = %165 @@ -1975,7 +1975,7 @@ define internal ptr @hwloc_synthetic_component_instantiate(ptr noundef %0, ptr n br i1 %.not347.i, label %.thread532.i, label %285 285: ; preds = %284 - %286 = trunc nuw i64 %.0283419.i to i32 + %286 = trunc i64 %.0283419.i to i32 %287 = add nsw i32 %286, -2 %288 = load i64, ptr %25, align 8, !tbaa !82 %.not350.i = icmp eq i64 %288, 0 @@ -2159,7 +2159,7 @@ define internal ptr @hwloc_synthetic_component_instantiate(ptr noundef %0, ptr n br label %.lr.ph452.i .lr.ph452.i: ; preds = %369, %363, %.thread532.i - %.3.i = phi i64 [ %.0283419.i, %.thread532.i ], [ %.0283419.i, %363 ], [ %379, %369 ] + %.3.i = phi i64 [ %.0283419.i, %.thread531.i ], [ %.0283419.i, %363 ], [ %379, %369 ] %380 = getelementptr inbounds nuw i8, ptr %9, i64 52 %.promoted454.i = load i32, ptr %380, align 4 br label %381 diff --git a/bench/hyperscan/optimized/ng_revacc.ll b/bench/hyperscan/optimized/ng_revacc.ll index a3c25c2aa69..d52846528c4 100644 --- a/bench/hyperscan/optimized/ng_revacc.ll +++ b/bench/hyperscan/optimized/ng_revacc.ll @@ -1300,8 +1300,7 @@ _ZNSt3setIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS ret void 38: ; preds = %.preheader92, %_ZNSt3setIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEESt4lessIS8_ESaIS8_EED2Ev.exit57 - %indvars.iv112 = phi i64 [ 0, %.preheader92 ], [ %indvars.iv.next113, %_ZNSt3setIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEESt4lessIS8_ESaIS8_EED2Ev.exit57 ] - %indvars.iv = phi i64 [ 1, %.preheader92 ], [ %indvars.iv.next, %_ZNSt3setIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEESt4lessIS8_ESaIS8_EED2Ev.exit57 ] + %indvars.iv112 = phi i64 [ 0, %.preheader92 ], [ %indvars.iv.next, %_ZNSt3setIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEESt4lessIS8_ESaIS8_EED2Ev.exit57 ] call void @llvm.lifetime.start.p0(ptr nonnull %6) store i32 0, ptr %14, align 8 store ptr null, ptr %15, align 8 @@ -1405,13 +1404,12 @@ _ZSt4swapIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS _ZNSt3setIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEESt4lessIS8_ESaIS8_EED2Ev.exit57: ; preds = %_ZSt4swapIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEESt4lessIS8_ESaIS8_EEvRSt3setIT_T0_T1_ESH_.exit call void @llvm.lifetime.end.p0(ptr nonnull %6) - %indvars.iv.next113 = add nuw nsw i64 %indvars.iv112, 1 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond115.not = icmp eq i64 %indvars.iv.next113, 16 + %exitcond115.not = icmp eq i64 %indvars.iv.next, 16 br i1 %exitcond115.not, label %33, label %38, !llvm.loop !26 72: ; preds = %.lr.ph105, %.critedge - %.sroa.077.0104 = phi ptr [ %39, %.lr.ph105 ], [ %145, %.critedge ] + %.sroa.077.0104 = phi ptr [ %39, %.lr.ph104 ], [ %145, %.critedge ] %73 = getelementptr inbounds nuw i8, ptr %.sroa.077.0104, i64 32 %.sroa.075.0.copyload = load ptr, ptr %73, align 8 %74 = getelementptr inbounds nuw i8, ptr %.sroa.075.0.copyload, i64 16 @@ -1468,13 +1466,13 @@ _ZNSt3setIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS to label %_ZNSt3setIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEESt4lessIS8_ESaIS8_EED2Ev.exit62 unwind label %146 .lr.ph102: ; preds = %.preheader, %.lr.ph102 - %indvars.iv109 = phi i64 [ %indvars.iv.next110, %.lr.ph102 ], [ %indvars.iv, %.preheader ] + %indvars.iv109 = phi i64 [ %indvars.iv.next109, %.lr.ph101 ], [ %indvars.iv, %.preheader ] + %indvars.iv.next109 = add nuw nsw i64 %indvars.iv108, 1 %104 = load ptr, ptr %2, align 8 - %105 = getelementptr inbounds nuw %"class.ue2::CharReach", ptr %104, i64 %indvars.iv109 + %105 = getelementptr inbounds nuw %"class.ue2::CharReach", ptr %104, i64 %indvars.iv.next109 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %105, i8 -1, i64 32, i1 false) - %indvars.iv.next110 = add nuw nsw i64 %indvars.iv109, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next110, 16 - br i1 %exitcond.not, label %.critedge, label %.lr.ph102 + %exitcond.not = icmp eq i64 %indvars.iv.next109, 15 + br i1 %exitcond.not, label %.critedge, label %.lr.ph101 106: ; preds = %.lr.ph99 %107 = getelementptr inbounds nuw i8, ptr %.fr35.i.i, i64 80 diff --git a/bench/lean4/optimized/name.ll b/bench/lean4/optimized/name.ll index ed6be26b1ce..6fb0e8c45d1 100644 --- a/bench/lean4/optimized/name.ll +++ b/bench/lean4/optimized/name.ll @@ -1640,60 +1640,45 @@ define noundef i64 @_ZNK4lean4name9size_coreEb(ptr noundef nonnull readonly alig br i1 %.not, label %.preheader, label %.loopexit .preheader: ; preds = %2, %107 - %.016 = phi i64 [ %108, %107 ], [ 0, %2 ] - %.015 = phi ptr [ %104, %107 ], [ %8, %2 ] - %11 = ptrtoint ptr %.015 to i64 - %12 = and i64 %11, 1 - %.not.i.i.i = icmp eq i64 %12, 0 - br i1 %.not.i.i.i, label %16, label %13 - -13: ; preds = %.preheader - %14 = lshr i64 %11, 1 - %15 = trunc i64 %14 to i32 - br label %_ZN4lean4name4kindEP11lean_object.exit - -16: ; preds = %.preheader - %17 = getelementptr i8, ptr %.015, i64 4 - %.val.i.i.i = load i32, ptr %17, align 4 - %18 = lshr i32 %.val.i.i.i, 24 - br label %_ZN4lean4name4kindEP11lean_object.exit - -_ZN4lean4name4kindEP11lean_object.exit: ; preds = %13, %16 - %.0.i.i.i = phi i32 [ %15, %13 ], [ %18, %16 ] - %19 = icmp eq i32 %.0.i.i.i, 1 - %20 = getelementptr inbounds nuw i8, ptr %.015, i64 16 - %21 = load ptr, ptr %20, align 8, !tbaa !6 - br i1 %19, label %22, label %28 + %.016 = phi i64 [ %108, %100 ], [ 0, %2 ] + %.015 = phi ptr [ %104, %100 ], [ %8, %2 ] + %11 = getelementptr i8, ptr %.015, i64 4 + %.val.i.i.i = load i32, ptr %11, align 4 + %.mask = and i32 %.val.i.i.i, -16777216 + %12 = icmp eq i32 %.mask, 16777223 + %13 = getelementptr inbounds nuw i8, ptr %.015, i64 16 + %14 = load ptr, ptr %13, align 8, !tbaa !6 + br i1 %12, label %15, label %21 22: ; preds = %_ZN4lean4name4kindEP11lean_object.exit br i1 %1, label %23, label %25 23: ; preds = %22 - %24 = getelementptr i8, ptr %21, i64 24 + %24 = getelementptr i8, ptr %14, i64 24 %.val.i.i = load i64, ptr %24, align 8, !tbaa !33 br label %_ZN4lean10object_refD2Ev.exit 25: ; preds = %22 - %26 = getelementptr i8, ptr %21, i64 8 + %26 = getelementptr i8, ptr %14, i64 8 %.val.i.i17 = load i64, ptr %26, align 8, !tbaa !33 %27 = add i64 %.val.i.i17, -1 br label %_ZN4lean10object_refD2Ev.exit 28: ; preds = %_ZN4lean4name4kindEP11lean_object.exit - store ptr %21, ptr %7, align 8, !tbaa !6 - %29 = ptrtoint ptr %21 to i64 + store ptr %14, ptr %7, align 8, !tbaa !6 + %29 = ptrtoint ptr %14 to i64 %30 = and i64 %29, 1 %.not.i.i.i18 = icmp eq i64 %30, 0 br i1 %.not.i.i.i18, label %31, label %37 31: ; preds = %28 - %.val.i.i.i.i = load i32, ptr %21, align 4, !tbaa !9 + %.val.i.i.i.i = load i32, ptr %14, align 4, !tbaa !9 %32 = icmp sgt i32 %.val.i.i.i.i, 0 br i1 %32, label %33, label %35, !prof !12 33: ; preds = %31 %34 = add nuw nsw i32 %.val.i.i.i.i, 1 - store i32 %34, ptr %21, align 4, !tbaa !9 + store i32 %34, ptr %14, align 4, !tbaa !9 br label %.critedge.i.i.i.i.i 35: ; preds = %31 @@ -1701,19 +1686,19 @@ _ZN4lean4name4kindEP11lean_object.exit: ; preds = %13, %16 br i1 %.not.i.i.i.i, label %.critedge.i.i.i.i.i, label %36 36: ; preds = %35 - tail call void @lean_inc_ref_cold(ptr noundef nonnull %21) + tail call void @lean_inc_ref_cold(ptr noundef nonnull %14) br label %.critedge.i.i.i.i.i 37: ; preds = %28 call void @llvm.lifetime.start.p0(ptr nonnull %4) - %38 = icmp eq ptr %21, inttoptr (i64 1 to ptr) + %38 = icmp eq ptr %14, inttoptr (i64 1 to ptr) call void @llvm.lifetime.end.p0(ptr nonnull %4) br i1 %38, label %_ZN4leanL10num_digitsENS_3natE.exit, label %.preheader.i.preheader .critedge.i.i.i.i.i: ; preds = %33, %35, %36 call void @llvm.lifetime.start.p0(ptr nonnull %4) store ptr inttoptr (i64 1 to ptr), ptr %4, align 8, !tbaa !6 - %39 = invoke zeroext i1 @lean_nat_big_eq(ptr noundef nonnull %21, ptr noundef nonnull inttoptr (i64 1 to ptr)) + %39 = invoke zeroext i1 @lean_nat_big_eq(ptr noundef nonnull %14, ptr noundef nonnull inttoptr (i64 1 to ptr)) to label %_ZN4leaneqERKNS_3natEj.exit.i unwind label %40 40: ; preds = %.critedge.i.i.i.i.i @@ -1729,11 +1714,11 @@ _ZN4leaneqERKNS_3natEj.exit.i: ; preds = %.critedge.i.i.i.i.i br i1 %39, label %_ZN4leanL10num_digitsENS_3natE.exit, label %.preheader.i.preheader .preheader.i.preheader: ; preds = %_ZN4leaneqERKNS_3natEj.exit.i, %37 - %.ph = phi ptr [ %.pre33, %_ZN4leaneqERKNS_3natEj.exit.i ], [ %21, %37 ] + %.ph = phi ptr [ %.pre33, %_ZN4leaneqERKNS_3natEj.exit.i ], [ %14, %30 ] br label %.preheader.i .preheader.i: ; preds = %.preheader.i.preheader, %_ZN4lean10object_refD2Ev.exit13.i - %42 = phi ptr [ %61, %_ZN4lean10object_refD2Ev.exit13.i ], [ %.ph, %.preheader.i.preheader ] + %42 = phi ptr [ %54, %_ZN4lean10object_refD2Ev.exit13.i ], [ %.ph, %.preheader.i.preheader ] %.05.i = phi i32 [ %83, %_ZN4lean10object_refD2Ev.exit13.i ], [ 0, %.preheader.i.preheader ] call void @llvm.lifetime.start.p0(ptr nonnull %3) store ptr inttoptr (i64 1 to ptr), ptr %3, align 8, !tbaa !6 @@ -1768,8 +1753,8 @@ _ZN4leanneERKNS_3natEj.exit.i._crit_edge: ; preds = %_ZN4leanneERKNS_3na br label %50 50: ; preds = %_ZN4leanneERKNS_3natEj.exit.i._crit_edge, %45 - %.pre-phi = phi i64 [ %.pre35, %_ZN4leanneERKNS_3natEj.exit.i._crit_edge ], [ %43, %45 ] - %51 = phi ptr [ %.pre32.pre, %_ZN4leanneERKNS_3natEj.exit.i._crit_edge ], [ %42, %45 ] + %.pre-phi = phi i64 [ %.pre35, %_ZN4leanneERKNS_3natEj.exit.i._crit_edge ], [ %43, %38 ] + %51 = phi ptr [ %.pre32.pre, %_ZN4leanneERKNS_3natEj.exit.i._crit_edge ], [ %42, %38 ] call void @llvm.lifetime.start.p0(ptr nonnull %5) call void @llvm.lifetime.start.p0(ptr nonnull %6) store ptr inttoptr (i64 21 to ptr), ptr %6, align 8, !tbaa !6 @@ -1782,7 +1767,7 @@ _ZN4leanneERKNS_3natEj.exit.i._crit_edge: ; preds = %_ZN4leanneERKNS_3na %55 = shl nuw nsw i64 %54, 1 %56 = or disjoint i64 %55, 1 %57 = inttoptr i64 %56 to ptr - br label %59 + br label %52 .critedge.i.i.i.i: ; preds = %50 %58 = invoke ptr @lean_nat_big_div(ptr noundef %51, ptr noundef nonnull inttoptr (i64 21 to ptr)) @@ -1791,37 +1776,37 @@ _ZN4leanneERKNS_3natEj.exit.i._crit_edge: ; preds = %_ZN4leanneERKNS_3na .critedge.i.i.i._crit_edge.i: ; preds = %.critedge.i.i.i.i %.pre.i = load ptr, ptr %7, align 8, !tbaa !6 %.pre22.i = ptrtoint ptr %.pre.i to i64 - br label %59 - -59: ; preds = %.critedge.i.i.i._crit_edge.i, %53 - %.pre-phi.i = phi i64 [ %.pre22.i, %.critedge.i.i.i._crit_edge.i ], [ %.pre-phi, %53 ] - %60 = phi ptr [ %.pre.i, %.critedge.i.i.i._crit_edge.i ], [ %51, %53 ] - %61 = phi ptr [ %58, %.critedge.i.i.i._crit_edge.i ], [ %57, %53 ] - store ptr %61, ptr %5, align 8, !tbaa !6, !alias.scope !38 - %62 = and i64 %.pre-phi.i, 1 - %.not.i.i.i8.i = icmp eq i64 %62, 0 - br i1 %.not.i.i.i8.i, label %63, label %_ZN4lean10object_refD2Ev.exit.i - -63: ; preds = %59 - %64 = load i32, ptr %60, align 4, !tbaa !9 - %65 = icmp sgt i32 %64, 1 - br i1 %65, label %66, label %68, !prof !12 + br label %52 -66: ; preds = %63 - %67 = add nsw i32 %64, -1 - store i32 %67, ptr %60, align 4, !tbaa !9 +66: ; preds = %.critedge.i.i.i._crit_edge.i, %46 + %.pre-phi.i = phi i64 [ %.pre22.i, %.critedge.i.i.i._crit_edge.i ], [ %.pre-phi, %46 ] + %53 = phi ptr [ %.pre.i, %.critedge.i.i.i._crit_edge.i ], [ %44, %46 ] + %54 = phi ptr [ %51, %.critedge.i.i.i._crit_edge.i ], [ %50, %46 ] + store ptr %54, ptr %5, align 8, !tbaa !6, !alias.scope !38 + %55 = and i64 %.pre-phi.i, 1 + %.not.i.i.i8.i = icmp eq i64 %55, 0 + br i1 %.not.i.i.i8.i, label %56, label %_ZN4lean10object_refD2Ev.exit.i + +56: ; preds = %52 + %57 = load i32, ptr %53, align 4, !tbaa !9 + %58 = icmp sgt i32 %57, 1 + br i1 %58, label %59, label %61, !prof !12 + +59: ; preds = %56 + %60 = add nsw i32 %57, -1 + store i32 %60, ptr %53, align 4, !tbaa !9 br label %_ZN4lean10object_refD2Ev.exit.i -68: ; preds = %63 - %.not.i.i.i.i.i = icmp eq i32 %64, 0 +68: ; preds = %56 + %.not.i.i.i.i.i = icmp eq i32 %57, 0 br i1 %.not.i.i.i.i.i, label %_ZN4lean10object_refD2Ev.exit.i, label %69 69: ; preds = %68 - invoke void @lean_dec_ref_cold(ptr noundef nonnull %60) + invoke void @lean_dec_ref_cold(ptr noundef nonnull %53) to label %_ZN4lean10object_refD2Ev.exit.i unwind label %86 -_ZN4lean10object_refD2Ev.exit.i: ; preds = %69, %68, %66, %59 - store ptr %61, ptr %7, align 8, !tbaa !6 +_ZN4lean10object_refD2Ev.exit.i: ; preds = %69, %68, %59, %52 + store ptr %54, ptr %7, align 8, !tbaa !6 %70 = load ptr, ptr %6, align 8, !tbaa !6 %71 = ptrtoint ptr %70 to i64 %72 = and i64 %71, 1 @@ -1871,20 +1856,20 @@ _ZN4lean10object_refD2Ev.exit13.i: ; preds = %79, %78, %76, %_ZN4 br label %88 88: ; preds = %86, %84 - %.pn.i = phi { ptr, i32 } [ %87, %86 ], [ %85, %84 ] + %.pn.i = phi { ptr, i32 } [ %87, %79 ], [ %85, %77 ] call void @_ZN4lean10object_refD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #19 call void @llvm.lifetime.end.p0(ptr nonnull %6) call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %.body _ZN4leanL10num_digitsENS_3natE.exit.loopexit: ; preds = %45, %_ZN4leanneERKNS_3natEj.exit.i - %.pre32 = phi ptr [ inttoptr (i64 1 to ptr), %45 ], [ %.pre32.pre, %_ZN4leanneERKNS_3natEj.exit.i ] + %.pre32 = phi ptr [ inttoptr (i64 1 to ptr), %38 ], [ %.pre32.pre, %_ZN4leanneERKNS_3natEj.exit.i ] %89 = zext nneg i32 %.05.i to i64 br label %_ZN4leanL10num_digitsENS_3natE.exit _ZN4leanL10num_digitsENS_3natE.exit: ; preds = %_ZN4leanL10num_digitsENS_3natE.exit.loopexit, %_ZN4leaneqERKNS_3natEj.exit.i, %37 - %90 = phi ptr [ %.pre33, %_ZN4leaneqERKNS_3natEj.exit.i ], [ inttoptr (i64 1 to ptr), %37 ], [ %.pre32, %_ZN4leanL10num_digitsENS_3natE.exit.loopexit ] - %.06.i = phi i64 [ 1, %_ZN4leaneqERKNS_3natEj.exit.i ], [ 1, %37 ], [ %89, %_ZN4leanL10num_digitsENS_3natE.exit.loopexit ] + %90 = phi ptr [ %.pre33, %_ZN4leaneqERKNS_3natEj.exit.i ], [ inttoptr (i64 1 to ptr), %30 ], [ %.pre32, %_ZN4leanL10num_digitsENS_3natE.exit.loopexit ] + %.06.i = phi i64 [ 1, %_ZN4leaneqERKNS_3natEj.exit.i ], [ 1, %30 ], [ %89, %_ZN4leanL10num_digitsENS_3natE.exit.loopexit ] %91 = ptrtoint ptr %90 to i64 %92 = and i64 %91, 1 %.not.i.i = icmp eq i64 %92, 0 @@ -1916,12 +1901,12 @@ _ZN4leanL10num_digitsENS_3natE.exit: ; preds = %_ZN4leanL10num_digi unreachable .body: ; preds = %40, %48, %88 - %eh.lpad-body = phi { ptr, i32 } [ %41, %40 ], [ %49, %48 ], [ %.pn.i, %88 ] + %eh.lpad-body = phi { ptr, i32 } [ %41, %33 ], [ %49, %41 ], [ %.pn.i, %81 ] call void @_ZN4lean10object_refD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #19 resume { ptr, i32 } %eh.lpad-body _ZN4lean10object_refD2Ev.exit: ; preds = %99, %98, %96, %_ZN4leanL10num_digitsENS_3natE.exit, %23, %25 - %.pn = phi i64 [ %.val.i.i, %23 ], [ %27, %25 ], [ %.06.i, %_ZN4leanL10num_digitsENS_3natE.exit ], [ %.06.i, %96 ], [ %.06.i, %98 ], [ %.06.i, %99 ] + %.pn = phi i64 [ %.val.i.i, %16 ], [ %27, %18 ], [ %.06.i, %_ZN4leanL10num_digitsENS_3natE.exit ], [ %.06.i, %89 ], [ %.06.i, %91 ], [ %.06.i, %92 ] %.1 = add i64 %.pn, %.016 %103 = getelementptr inbounds nuw i8, ptr %.015, i64 8 %104 = load ptr, ptr %103, align 8, !tbaa !26 diff --git a/bench/libigl/optimized/exact_geodesic.ll b/bench/libigl/optimized/exact_geodesic.ll index baa9bbe67d1..3bd129862f2 100644 --- a/bench/libigl/optimized/exact_geodesic.ll +++ b/bench/libigl/optimized/exact_geodesic.ll @@ -15346,8 +15346,8 @@ _ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8H br label %62 62: ; preds = %98, %.lr.ph.i21 - %.sroa.0.018.i22 = phi ptr [ %.sroa.0.015.i19, %.lr.ph.i21 ], [ %.sroa.0.0.i31, %98 ] - %.pn17.i23 = phi ptr [ %0, %.lr.ph.i21 ], [ %.sroa.0.018.i22, %98 ] + %.sroa.0.018.i22 = phi ptr [ %.sroa.0.015.i19, %.lr.ph.i21 ], [ %.sroa.0.0.i31, %100 ] + %.pn17.i23 = phi ptr [ %0, %.lr.ph.i21 ], [ %.sroa.0.018.i22, %100 ] %63 = getelementptr inbounds nuw i8, ptr %.pn17.i23, i64 16 %64 = load i32, ptr %63, align 4, !tbaa !429 %65 = load i32, ptr %60, align 4, !tbaa !429 @@ -15403,7 +15403,7 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6v br i1 %.0.i.i12.i.i26, label %.lr.ph.i.i33, label %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit.i27 .lr.ph.i.i33: ; preds = %83, %.lr.ph.i.i33 - %.sroa.09.013.i.i34 = phi ptr [ %.sroa.0.0.i.i35, %.lr.ph.i.i33 ], [ %.sroa.0.018.i22, %83 ] + %.sroa.09.013.i.i34 = phi ptr [ %.sroa.0.0.i.i35, %.lr.ph.i.i33 ], [ %.sroa.0.018.i22, %85 ] %.sroa.0.0.i.i35 = getelementptr inbounds i8, ptr %.sroa.09.013.i.i34, i64 -12 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.sroa.09.013.i.i34, ptr noundef nonnull align 4 dereferenceable(12) %.sroa.0.0.i.i35, i64 12, i1 false), !tbaa.struct !422 %91 = getelementptr inbounds i8, ptr %.sroa.09.013.i.i34, i64 -20 @@ -15417,7 +15417,7 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6v br i1 %.0.i.i.i.i36, label %.lr.ph.i.i33, label %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit.i27, !llvm.loop !473 _ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN3igl8geodesic8HalfEdgeESt6vectorIS4_SaIS4_EEEENS0_5__ops14_Val_less_iterEEvT_T0_.exit.i27: ; preds = %.lr.ph.i.i33, %83 - %.sroa.09.0.lcssa.i.i28 = phi ptr [ %.sroa.0.018.i22, %83 ], [ %.sroa.0.0.i.i35, %.lr.ph.i.i33 ] + %.sroa.09.0.lcssa.i.i28 = phi ptr [ %.sroa.0.018.i22, %85 ], [ %.sroa.0.0.i.i35, %.lr.ph.i.i33 ] store i32 %.sroa.03.0.copyload.i.i25, ptr %.sroa.09.0.lcssa.i.i28, align 4, !tbaa !24 %.sroa.4.0..sroa_idx5.i.i29 = getelementptr inbounds nuw i8, ptr %.sroa.09.0.lcssa.i.i28, i64 4 store i32 %64, ptr %.sroa.4.0..sroa_idx5.i.i29, align 4, !tbaa !24 diff --git a/bench/libquic/optimized/s3_enc.ll b/bench/libquic/optimized/s3_enc.ll index 77e347a813c..70ca640dd97 100644 --- a/bench/libquic/optimized/s3_enc.ll +++ b/bench/libquic/optimized/s3_enc.ll @@ -258,31 +258,31 @@ define internal range(i32 0, 2) i32 @ssl3_prf(ptr readnone captures(none) %0, pt br label %16 16: ; preds = %.lr.ph47, %46 - %.045 = phi i64 [ 0, %.lr.ph47 ], [ %17, %46 ] - %.03044 = phi i64 [ 0, %.lr.ph47 ], [ %39, %46 ] - %.03143 = phi i8 [ 65, %.lr.ph47 ], [ %19, %46 ] - %.03342 = phi ptr [ %1, %.lr.ph47 ], [ %47, %46 ] + %.045 = phi i64 [ 0, %.lr.ph ], [ %17, %46 ] + %.03044 = phi i64 [ 0, %.lr.ph ], [ %39, %46 ] + %.03143 = phi i8 [ 65, %.lr.ph ], [ %18, %46 ] + %.03342 = phi ptr [ %1, %.lr.ph ], [ %47, %46 ] %17 = add nuw nsw i64 %.045, 1 %exitcond = icmp eq i64 %.045, 16 - br i1 %exitcond, label %18, label %._crit_edge + br i1 %exitcond, label %21, label %18 18: ; preds = %16 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1) %14, i8 %.03144, i64 %17, i1 false), !tbaa !54 + %18 = add nuw nsw i8 %.03144, 1 + %19 = call ptr @EVP_sha1() #6 + %20 = call i32 @EVP_DigestInit_ex(ptr noundef nonnull %13, ptr noundef %19, ptr noundef null) #6 + %.not38 = icmp eq i32 %20, 0 + br i1 %.not38, label %22, label %23 + +21: ; preds = %16 call void @ERR_put_error(i32 noundef 16, i32 noundef 0, i32 noundef 68, ptr noundef nonnull @.str, i32 noundef 170) #6 br label %51 -._crit_edge: ; preds = %16 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1) %14, i8 %.03143, i64 %17, i1 false), !tbaa !54 - %19 = add nuw nsw i8 %.03143, 1 - %20 = call ptr @EVP_sha1() #6 - %21 = call i32 @EVP_DigestInit_ex(ptr noundef nonnull %13, ptr noundef %20, ptr noundef null) #6 - %.not = icmp eq i32 %21, 0 - br i1 %.not, label %22, label %23 - -22: ; preds = %._crit_edge +._crit_edge: ; preds = %18 call void @ERR_put_error(i32 noundef 16, i32 noundef 0, i32 noundef 6, ptr noundef nonnull @.str, i32 noundef 179) #6 br label %51 -23: ; preds = %._crit_edge +23: ; preds = %18 %24 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %13, ptr noundef nonnull %14, i64 noundef %17) #6 %25 = call i32 @EVP_DigestUpdate(ptr noundef nonnull %13, ptr noundef %3, i64 noundef %4) #6 br i1 %.not38, label %28, label %26 @@ -337,8 +337,8 @@ define internal range(i32 0, 2) i32 @ssl3_prf(ptr readnone captures(none) %0, pt %50 = call i32 @EVP_MD_CTX_cleanup(ptr noundef nonnull %13) #6 br label %51 -51: ; preds = %._crit_edge48, %35, %22, %18 - %.032 = phi i32 [ 0, %18 ], [ 0, %35 ], [ 0, %22 ], [ 1, %._crit_edge48 ] +51: ; preds = %._crit_edge48, %35, %22, %21 + %.032 = phi i32 [ 0, %21 ], [ 0, %35 ], [ 0, %22 ], [ 1, %._crit_edge ] call void @llvm.lifetime.end.p0(ptr nonnull %15) call void @llvm.lifetime.end.p0(ptr nonnull %14) call void @llvm.lifetime.end.p0(ptr nonnull %13) diff --git a/bench/linux/optimized/scsi.ll b/bench/linux/optimized/scsi.ll index 8573218ed59..7abb2d18f06 100644 --- a/bench/linux/optimized/scsi.ll +++ b/bench/linux/optimized/scsi.ll @@ -2123,9 +2123,9 @@ define internal fastcc ptr @scsi_get_vpd_buf(ptr noundef %0, i8 noundef zeroext 42: ; preds = %41, %39 call void @kfree(ptr noundef nonnull %16) #15 - %43 = zext i16 %35 to i64 - %44 = add nuw nsw i64 %43, 28 - %45 = call noalias align 8 ptr @__kmalloc(i64 noundef %44, i32 noundef 3264) #18 + %narrow = add nuw nsw i32 %36, 28 + %43 = zext nneg i32 %narrow to i64 + %45 = call noalias align 8 ptr @__kmalloc(i64 noundef %43, i32 noundef 3264) #18 %46 = icmp eq ptr %45, null br i1 %46, label %.loopexit, label %.lr.ph @@ -2135,7 +2135,7 @@ define internal fastcc ptr @scsi_get_vpd_buf(ptr noundef %0, i8 noundef zeroext br label %.loopexit .loopexit: ; preds = %42, %6, %47, %.thread, %2 - %49 = phi ptr [ null, %.thread ], [ %16, %47 ], [ null, %2 ], [ null, %6 ], [ null, %42 ] + %49 = phi ptr [ null, %.thread ], [ %16, %46 ], [ null, %2 ], [ null, %6 ], [ null, %42 ] ret ptr %49 } diff --git a/bench/llvm/optimized/APINotesReader.ll b/bench/llvm/optimized/APINotesReader.ll index 2ce494e5549..a95fa2091ab 100644 --- a/bench/llvm/optimized/APINotesReader.ll +++ b/bench/llvm/optimized/APINotesReader.ll @@ -16438,9 +16438,13 @@ _ZN4llvm8ExpectedIjEC2EOS1_.exit.thread.thread: ; preds = %3 .lr.ph: ; preds = %16 %23 = add i32 %20, -1 - %24 = and i32 %23, %.sroa.032.0.extract.trunc37 - %25 = getelementptr inbounds nuw i8, ptr %8, i64 8 - br label %39 + %24 = getelementptr inbounds nuw i8, ptr %8, i64 8 + %25 = icmp ugt i32 %17, 31 + br i1 %25, label %._crit_edge.i.i.i.i, label %.lr.ph116 + +.lr.ph116: ; preds = %.lr.ph + %26 = and i32 %23, %.sroa.032.0.extract.trunc37 + br label %58 26: ; preds = %16 %27 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -16453,31 +16457,33 @@ _ZN4llvm8ExpectedIjEC2EOS1_.exit.thread.thread: ; preds = %3 30: ; preds = %_ZN4llvm8ExpectedImED2Ev.exit19 %.sroa.032.0.extract.trunc45 = trunc i64 %.sroa.0.1 to i32 %31 = and i32 %23, %.sroa.032.0.extract.trunc45 - %32 = shl i32 %31, %41 - %33 = or i32 %32, %40 + %32 = shl i32 %31, %59 + %33 = or i32 %32, %60 %34 = and i32 %.sroa.032.0.extract.trunc45, %20 %35 = icmp eq i32 %34, 0 br i1 %35, label %._crit_edge, label %39, !llvm.loop !969 ._crit_edge: ; preds = %30 - %36 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %37 = load i8, ptr %36, align 8 - %38 = and i8 %37, -2 - store i8 %38, ptr %36, align 8 - store i32 %33, ptr %0, align 8, !tbaa !97 + %.sroa.032.0.insert.ext39.le135 = and i64 %.sroa.0.1, 4294967295 + %37 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %38 = load i8, ptr %37, align 8 + %39 = and i8 %38, -2 + store i8 %39, ptr %37, align 8 + store i32 %34, ptr %0, align 8, !tbaa !97 br label %_ZN4llvm8ExpectedIjEC2EOS1_.exit -39: ; preds = %.lr.ph, %30 - %40 = phi i32 [ %24, %.lr.ph ], [ %33, %30 ] - %.078 = phi i32 [ 0, %.lr.ph ], [ %41, %30 ] - %.sroa.0.077 = phi i64 [ undef, %.lr.ph ], [ %.sroa.0.3, %30 ] - %.sroa.18.276 = phi i8 [ %10, %.lr.ph ], [ %59, %30 ] - %.sroa.032.275 = phi i64 [ %.sroa.032.0.insert.ext, %.lr.ph ], [ %.sroa.032.0.insert.insert41, %30 ] - %41 = add i32 %.078, %17 +39: ; preds = %30 + %41 = add nuw nsw i32 %59, %17 %42 = icmp ugt i32 %41, 31 - br i1 %42, label %._crit_edge.i.i.i.i, label %58 + br i1 %42, label %._crit_edge.i.i.i.i.loopexit, label %58, !llvm.loop !969 + +._crit_edge.i.i.i.i.loopexit: ; preds = %40 + %.sroa.032.0.insert.ext39.le = and i64 %.sroa.0.1, 4294967295 + br label %._crit_edge.i.i.i.i -._crit_edge.i.i.i.i: ; preds = %39 +._crit_edge.i.i.i.i: ; preds = %._crit_edge.i.i.i.i.loopexit, %.lr.ph + %.sroa.18.276.lcssa = phi i8 [ %10, %.lr.ph ], [ %61, %._crit_edge.i.i.i.i.loopexit ] + %.sroa.032.275.lcssa = phi i64 [ %.sroa.032.0.insert.ext, %.lr.ph ], [ %.sroa.032.0.insert.ext39.le, %._crit_edge.i.i.i.i.loopexit ] call void @llvm.lifetime.start.p0(ptr nonnull %7) %43 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3_V216generic_categoryEv() #21 call void @llvm.lifetime.start.p0(ptr nonnull %5), !noalias !970 @@ -16519,65 +16525,46 @@ _ZN4llvm5ErrorD2Ev.exit: ; preds = %._crit_edge.i.i.i.i call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %_ZN4llvm8ExpectedIjEC2EOS1_.exit -58: ; preds = %39 +58: ; preds = %.lr.ph116, %39 + %59 = phi i32 [ %17, %.lr.ph116 ], [ %41, %40 ] + %.sroa.0.077114 = phi i64 [ undef, %.lr.ph116 ], [ %.sroa.0.3, %40 ] + %60 = phi i32 [ %26, %.lr.ph116 ], [ %34, %40 ] call void @llvm.lifetime.start.p0(ptr nonnull %8) call void @_ZN4llvm21SimpleBitstreamCursor4ReadEj(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected.144") align 8 %8, ptr noundef nonnull align 8 dereferenceable(36) %1, i32 noundef %2) - %59 = load i8, ptr %25, align 8 + %59 = load i8, ptr %24, align 8 %60 = trunc i8 %59 to i1 %61 = load i64, ptr %8, align 8, !tbaa !8 br i1 %60, label %63, label %62 62: ; preds = %58 %.sroa.0.0.insert.ext = and i64 %61, 4294967295 - %.sroa.0.0.insert.mask = and i64 %.sroa.0.077, -4294967296 + %.sroa.0.0.insert.mask = and i64 %.sroa.0.077114, -4294967296 %.sroa.0.0.insert.insert = or disjoint i64 %.sroa.0.0.insert.ext, %.sroa.0.0.insert.mask - br label %_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12 + br label %_ZN4llvm8ExpectedIjED2Ev.exit.i.i 63: ; preds = %58 store ptr null, ptr %8, align 8, !tbaa !91 - br label %_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12 - -_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12: ; preds = %62, %63 - %.sroa.0.3 = phi i64 [ 0, %63 ], [ %.sroa.0.0.insert.insert, %62 ] - %.sroa.0.1 = phi i64 [ %61, %63 ], [ %.sroa.0.0.insert.insert, %62 ] - %64 = trunc i8 %.sroa.18.276 to i1 - br i1 %64, label %65, label %_ZN4llvm8ExpectedIjED2Ev.exit.i.i - -65: ; preds = %_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12 - %.not.i.i.i.i = icmp eq i64 %.sroa.032.275, 0 - br i1 %.not.i.i.i.i, label %_ZN4llvm8ExpectedIjED2Ev.exit.i.i, label %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i.i.i - -_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i.i.i: ; preds = %65 - %66 = inttoptr i64 %.sroa.032.275 to ptr - %67 = load ptr, ptr %66, align 8, !tbaa !89 - %68 = getelementptr inbounds nuw i8, ptr %67, i64 8 - %69 = load ptr, ptr %68, align 8 - call void %69(ptr noundef nonnull align 8 dereferenceable(8) %66) #19 - %.pre = load i8, ptr %25, align 8 br label %_ZN4llvm8ExpectedIjED2Ev.exit.i.i -_ZN4llvm8ExpectedIjED2Ev.exit.i.i: ; preds = %65, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i.i.i, %_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12 - %70 = phi i8 [ %59, %_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12 ], [ %.pre, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i.i.i ], [ %59, %65 ] - %.sroa.032.6 = phi i64 [ %.sroa.032.275, %_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12 ], [ 0, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i.i.i ], [ 0, %65 ] - %.sroa.032.0.insert.ext39 = and i64 %.sroa.0.1, 4294967295 - %.sroa.032.0.insert.mask40 = and i64 %.sroa.032.6, -4294967296 - %.sroa.032.0.insert.insert41 = or disjoint i64 %.sroa.032.0.insert.mask40, %.sroa.032.0.insert.ext39 - %71 = trunc i8 %70 to i1 - br i1 %71, label %72, label %_ZN4llvm8ExpectedImED2Ev.exit19 - -72: ; preds = %_ZN4llvm8ExpectedIjED2Ev.exit.i.i - %73 = load ptr, ptr %8, align 8, !tbaa !91 - %.not.i.i16 = icmp eq ptr %73, null +_ZN4llvm8ExpectedIjED2Ev.exit.i.i: ; preds = %65, %62 + %70 = phi i64 [ 0, %65 ], [ %.sroa.0.0.insert.insert, %64 ] + %.sroa.032.6 = phi i64 [ %63, %65 ], [ %.sroa.0.0.insert.insert, %64 ] + %66 = trunc i8 %61 to i1 + br i1 %66, label %67, label %_ZN4llvm8ExpectedImED2Ev.exit19 + +67:; preds = %_ZN4llvm8ExpectedIjED2Ev.exit.i.i + %68 = load ptr, ptr %8, align 8, !tbaa !91 + %.not.i.i16 = icmp eq ptr %68, null br i1 %.not.i.i16, label %_ZN4llvm8ExpectedImED2Ev.exit19, label %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i17 -_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i17: ; preds = %72 - %74 = load ptr, ptr %73, align 8, !tbaa !89 +_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i17: ; preds = %67 + %74 = load ptr, ptr %68, align 8, !tbaa !89 %75 = getelementptr inbounds nuw i8, ptr %74, i64 8 %76 = load ptr, ptr %75, align 8 - call void %76(ptr noundef nonnull align 8 dereferenceable(8) %73) #19 + call void %71(ptr noundef nonnull align 8 dereferenceable(8) %68) #19 br label %_ZN4llvm8ExpectedImED2Ev.exit19 -_ZN4llvm8ExpectedImED2Ev.exit19: ; preds = %72, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i17, %_ZN4llvm8ExpectedIjED2Ev.exit.i.i +_ZN4llvm8ExpectedImED2Ev.exit19: ; preds = %67, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i17, %_ZN4llvm8ExpectedIjED2Ev.exit.i.i call void @llvm.lifetime.end.p0(ptr nonnull %8) br i1 %60, label %_ZN4llvm8ExpectedIjEC2EOS1_.exit.thread, label %30 @@ -16590,8 +16577,8 @@ _ZN4llvm8ExpectedIjEC2EOS1_.exit.thread: ; preds = %_ZN4llvm8ExpectedIm br label %_ZN4llvm8ExpectedIjED2Ev.exit24 _ZN4llvm8ExpectedIjEC2EOS1_.exit: ; preds = %26, %_ZN4llvm5ErrorD2Ev.exit, %._crit_edge - %.sroa.032.0 = phi i64 [ %.sroa.032.0.insert.ext, %26 ], [ %.sroa.032.0.insert.insert41, %._crit_edge ], [ %.sroa.032.275, %_ZN4llvm5ErrorD2Ev.exit ] - %.sroa.18.0 = phi i8 [ %10, %26 ], [ %59, %._crit_edge ], [ %.sroa.18.276, %_ZN4llvm5ErrorD2Ev.exit ] + %.sroa.032.0 = phi i64 [ %.sroa.032.0.insert.ext, %27 ], [ %.sroa.032.0.insert.ext39.le135, %._crit_edge ], [ %.sroa.032.275.lcssa, %_ZN4llvm5ErrorD2Ev.exit ] + %.sroa.18.0 = phi i8 [ %10, %27 ], [ %59, %._crit_edge ], [ %.sroa.18.276.lcssa, %_ZN4llvm5ErrorD2Ev.exit ] %80 = trunc i8 %.sroa.18.0 to i1 %.not.i.i21 = icmp ne i64 %.sroa.032.0, 0 %or.cond.not = select i1 %80, i1 %.not.i.i21, i1 false @@ -16602,7 +16589,7 @@ _ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i22: ; preds = %_ZN %82 = load ptr, ptr %81, align 8, !tbaa !89 %83 = getelementptr inbounds nuw i8, ptr %82, i64 8 %84 = load ptr, ptr %83, align 8 - call void %84(ptr noundef nonnull align 8 dereferenceable(8) %81) #19 + call void %79(ptr noundef nonnull align 8 dereferenceable(8) %81) #19 br label %_ZN4llvm8ExpectedIjED2Ev.exit24 _ZN4llvm8ExpectedIjED2Ev.exit24: ; preds = %_ZN4llvm8ExpectedIjEC2EOS1_.exit.thread, %_ZN4llvm8ExpectedIjEC2EOS1_.exit.thread.thread, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i22, %_ZN4llvm8ExpectedIjEC2EOS1_.exit diff --git a/bench/llvm/optimized/ASTReader.ll b/bench/llvm/optimized/ASTReader.ll index 8930b6a4f69..2b2ae330900 100644 --- a/bench/llvm/optimized/ASTReader.ll +++ b/bench/llvm/optimized/ASTReader.ll @@ -147674,50 +147674,56 @@ _ZN4llvm8ExpectedIjEC2EOS1_.exit.thread.thread: ; preds = %3 %20 = trunc i64 %19 to i32 %21 = and i32 %.sroa.032.0.extract.trunc37, %20 %22 = icmp eq i32 %21, 0 - br i1 %22, label %26, label %.lr.ph + br i1 %22, label %27, label %.lr.ph .lr.ph: ; preds = %16 %23 = add i32 %20, -1 - %24 = and i32 %23, %.sroa.032.0.extract.trunc37 - %25 = getelementptr inbounds nuw i8, ptr %8, i64 8 - br label %39 + %24 = getelementptr inbounds nuw i8, ptr %8, i64 8 + %25 = icmp ugt i32 %17, 31 + br i1 %25, label %._crit_edge.i.i.i.i, label %26 -26: ; preds = %16 - %27 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %28 = load i8, ptr %27, align 8 - %29 = and i8 %28, -2 - store i8 %29, ptr %27, align 8 +26: ; preds = %.lr.ph + %26 = and i32 %23, %.sroa.032.0.extract.trunc37 + br label %58 + +27:; preds = %16 + %28 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %29 = load i8, ptr %28, align 8 + %30 = and i8 %29, -2 + store i8 %30, ptr %28, align 8 store i32 %.sroa.032.0.extract.trunc37, ptr %0, align 8, !tbaa !807 br label %_ZN4llvm8ExpectedIjEC2EOS1_.exit 30: ; preds = %_ZN4llvm8ExpectedImED2Ev.exit19 %.sroa.032.0.extract.trunc45 = trunc i64 %.sroa.0.1 to i32 %31 = and i32 %23, %.sroa.032.0.extract.trunc45 - %32 = shl i32 %31, %41 - %33 = or i32 %32, %40 + %32 = shl i32 %31, %59 + %33 = or i32 %32, %60 %34 = and i32 %.sroa.032.0.extract.trunc45, %20 %35 = icmp eq i32 %34, 0 br i1 %35, label %._crit_edge, label %39, !llvm.loop !5767 ._crit_edge: ; preds = %30 - %36 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %37 = load i8, ptr %36, align 8 - %38 = and i8 %37, -2 - store i8 %38, ptr %36, align 8 - store i32 %33, ptr %0, align 8, !tbaa !807 + %.sroa.032.0.insert.ext39.le135 = and i64 %.sroa.0.1, 4294967295 + %37 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %38 = load i8, ptr %37, align 8 + %39 = and i8 %38, -2 + store i8 %39, ptr %37, align 8 + store i32 %34, ptr %0, align 8, !tbaa !807 br label %_ZN4llvm8ExpectedIjEC2EOS1_.exit -39: ; preds = %.lr.ph, %30 - %40 = phi i32 [ %24, %.lr.ph ], [ %33, %30 ] - %.078 = phi i32 [ 0, %.lr.ph ], [ %41, %30 ] - %.sroa.0.077 = phi i64 [ undef, %.lr.ph ], [ %.sroa.0.3, %30 ] - %.sroa.18.276 = phi i8 [ %10, %.lr.ph ], [ %59, %30 ] - %.sroa.032.275 = phi i64 [ %.sroa.032.0.insert.ext, %.lr.ph ], [ %.sroa.032.0.insert.insert41, %30 ] - %41 = add i32 %.078, %17 +39: ; preds = %30 + %41 = add nuw nsw i32 %59, %17 %42 = icmp ugt i32 %41, 31 - br i1 %42, label %._crit_edge.i.i.i.i, label %58 + br i1 %42, label %._crit_edge.i.i.i.i, label %58, !llvm.loop !5767 ._crit_edge.i.i.i.i: ; preds = %39 + %.sroa.032.0.insert.ext39.le = and i64 %.sroa.0.1, 4294967295 + br label %._crit_edge.i.i.i.i + +._crit_edge.i.i.i.i: ; preds = %._crit_edge.i.i.i.i.loopexit, %.lr.ph + %.sroa.18.276.lcssa = phi i8 [ %10, %.lr.ph ], [ %61, %._crit_edge.i.i.i.i.loopexit ] + %.sroa.032.275.lcssa = phi i64 [ %.sroa.032.0.insert.ext, %.lr.ph ], [ %.sroa.032.0.insert.ext39.le, %._crit_edge.i.i.i.i.loopexit ] call void @llvm.lifetime.start.p0(ptr nonnull %7) %43 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3_V216generic_categoryEv() #44 call void @llvm.lifetime.start.p0(ptr nonnull %5), !noalias !5768 @@ -147759,51 +147765,32 @@ _ZN4llvm5ErrorD2Ev.exit: ; preds = %._crit_edge.i.i.i.i call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %_ZN4llvm8ExpectedIjEC2EOS1_.exit -58: ; preds = %39 +58: ; preds = %26, %39 + %59 = phi i32 [ %17, %.lr.ph116 ], [ %41, %40 ] + %.sroa.0.077114 = phi i64 [ undef, %.lr.ph116 ], [ %.sroa.0.3, %40 ] + %60 = phi i32 [ %26, %.lr.ph116 ], [ %34, %40 ] call void @llvm.lifetime.start.p0(ptr nonnull %8) call void @_ZN4llvm21SimpleBitstreamCursor4ReadEj(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected.3457") align 8 %8, ptr noundef nonnull align 8 dereferenceable(36) %1, i32 noundef %2) - %59 = load i8, ptr %25, align 8 + %59 = load i8, ptr %24, align 8 %60 = trunc i8 %59 to i1 %61 = load i64, ptr %8, align 8, !tbaa !696 br i1 %60, label %63, label %62 62: ; preds = %58 %.sroa.0.0.insert.ext = and i64 %61, 4294967295 - %.sroa.0.0.insert.mask = and i64 %.sroa.0.077, -4294967296 + %.sroa.0.0.insert.mask = and i64 %.sroa.0.077114, -4294967296 %.sroa.0.0.insert.insert = or disjoint i64 %.sroa.0.0.insert.ext, %.sroa.0.0.insert.mask - br label %_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12 + br label %_ZN4llvm8ExpectedIjED2Ev.exit.i.i 63: ; preds = %58 store ptr null, ptr %8, align 8, !tbaa !1435 - br label %_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12 - -_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12: ; preds = %62, %63 - %.sroa.0.3 = phi i64 [ 0, %63 ], [ %.sroa.0.0.insert.insert, %62 ] - %.sroa.0.1 = phi i64 [ %61, %63 ], [ %.sroa.0.0.insert.insert, %62 ] - %64 = trunc i8 %.sroa.18.276 to i1 - br i1 %64, label %65, label %_ZN4llvm8ExpectedIjED2Ev.exit.i.i - -65: ; preds = %_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12 - %.not.i.i.i.i = icmp eq i64 %.sroa.032.275, 0 - br i1 %.not.i.i.i.i, label %_ZN4llvm8ExpectedIjED2Ev.exit.i.i, label %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i.i.i - -_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i.i.i: ; preds = %65 - %66 = inttoptr i64 %.sroa.032.275 to ptr - %67 = load ptr, ptr %66, align 8, !tbaa !8 - %68 = getelementptr inbounds nuw i8, ptr %67, i64 8 - %69 = load ptr, ptr %68, align 8 - call void %69(ptr noundef nonnull align 8 dereferenceable(8) %66) #39 - %.pre = load i8, ptr %25, align 8 br label %_ZN4llvm8ExpectedIjED2Ev.exit.i.i -_ZN4llvm8ExpectedIjED2Ev.exit.i.i: ; preds = %65, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i.i.i, %_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12 - %70 = phi i8 [ %59, %_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12 ], [ %.pre, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i.i.i ], [ %59, %65 ] - %.sroa.032.6 = phi i64 [ %.sroa.032.275, %_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12 ], [ 0, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i.i.i ], [ 0, %65 ] - %.sroa.032.0.insert.ext39 = and i64 %.sroa.0.1, 4294967295 - %.sroa.032.0.insert.mask40 = and i64 %.sroa.032.6, -4294967296 - %.sroa.032.0.insert.insert41 = or disjoint i64 %.sroa.032.0.insert.mask40, %.sroa.032.0.insert.ext39 - %71 = trunc i8 %70 to i1 - br i1 %71, label %72, label %_ZN4llvm8ExpectedImED2Ev.exit19 +_ZN4llvm8ExpectedIjED2Ev.exit.i.i: ; preds = %65, %62 + %70 = phi i64 [ 0, %65 ], [ %.sroa.0.0.insert.insert, %64 ] + %.sroa.032.6 = phi i64 [ %63, %65 ], [ %.sroa.0.0.insert.insert, %64 ] + %66 = trunc i8 %61 to i1 + br i1 %66, label %67, label %_ZN4llvm8ExpectedImED2Ev.exit19 72: ; preds = %_ZN4llvm8ExpectedIjED2Ev.exit.i.i %73 = load ptr, ptr %8, align 8, !tbaa !1435 @@ -147814,7 +147801,7 @@ _ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i17: ; preds = %72 %74 = load ptr, ptr %73, align 8, !tbaa !8 %75 = getelementptr inbounds nuw i8, ptr %74, i64 8 %76 = load ptr, ptr %75, align 8 - call void %76(ptr noundef nonnull align 8 dereferenceable(8) %73) #39 + call void %71(ptr noundef nonnull align 8 dereferenceable(8) %73) #39 br label %_ZN4llvm8ExpectedImED2Ev.exit19 _ZN4llvm8ExpectedImED2Ev.exit19: ; preds = %72, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i17, %_ZN4llvm8ExpectedIjED2Ev.exit.i.i @@ -147829,9 +147816,9 @@ _ZN4llvm8ExpectedIjEC2EOS1_.exit.thread: ; preds = %_ZN4llvm8ExpectedIm store i64 %.sroa.0.1, ptr %0, align 8, !tbaa !1435 br label %_ZN4llvm8ExpectedIjED2Ev.exit24 -_ZN4llvm8ExpectedIjEC2EOS1_.exit: ; preds = %26, %_ZN4llvm5ErrorD2Ev.exit, %._crit_edge - %.sroa.032.0 = phi i64 [ %.sroa.032.0.insert.ext, %26 ], [ %.sroa.032.0.insert.insert41, %._crit_edge ], [ %.sroa.032.275, %_ZN4llvm5ErrorD2Ev.exit ] - %.sroa.18.0 = phi i8 [ %10, %26 ], [ %59, %._crit_edge ], [ %.sroa.18.276, %_ZN4llvm5ErrorD2Ev.exit ] +_ZN4llvm8ExpectedIjEC2EOS1_.exit: ; preds = %27, %_ZN4llvm5ErrorD2Ev.exit, %._crit_edge + %.sroa.032.0 = phi i64 [ %.sroa.032.0.insert.ext, %27 ], [ %.sroa.032.0.insert.ext39.le135, %._crit_edge ], [ %.sroa.032.275.lcssa, %_ZN4llvm5ErrorD2Ev.exit ] + %.sroa.18.0 = phi i8 [ %10, %27 ], [ %59, %._crit_edge ], [ %.sroa.18.276.lcssa, %_ZN4llvm5ErrorD2Ev.exit ] %80 = trunc i8 %.sroa.18.0 to i1 %.not.i.i21 = icmp ne i64 %.sroa.032.0, 0 %or.cond.not = select i1 %80, i1 %.not.i.i21, i1 false @@ -147842,7 +147829,7 @@ _ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i22: ; preds = %_ZN %82 = load ptr, ptr %81, align 8, !tbaa !8 %83 = getelementptr inbounds nuw i8, ptr %82, i64 8 %84 = load ptr, ptr %83, align 8 - call void %84(ptr noundef nonnull align 8 dereferenceable(8) %81) #39 + call void %79(ptr noundef nonnull align 8 dereferenceable(8) %81) #39 br label %_ZN4llvm8ExpectedIjED2Ev.exit24 _ZN4llvm8ExpectedIjED2Ev.exit24: ; preds = %_ZN4llvm8ExpectedIjEC2EOS1_.exit.thread, %_ZN4llvm8ExpectedIjEC2EOS1_.exit.thread.thread, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i22, %_ZN4llvm8ExpectedIjEC2EOS1_.exit diff --git a/bench/llvm/optimized/GlobalModuleIndex.ll b/bench/llvm/optimized/GlobalModuleIndex.ll index f8e57adf65c..bdca0d1280d 100644 --- a/bench/llvm/optimized/GlobalModuleIndex.ll +++ b/bench/llvm/optimized/GlobalModuleIndex.ll @@ -7815,9 +7815,13 @@ _ZN4llvm8ExpectedIjEC2EOS1_.exit.thread.thread: ; preds = %3 .lr.ph: ; preds = %16 %23 = add i32 %20, -1 - %24 = and i32 %23, %.sroa.032.0.extract.trunc37 - %25 = getelementptr inbounds nuw i8, ptr %8, i64 8 - br label %39 + %24 = getelementptr inbounds nuw i8, ptr %8, i64 8 + %25 = icmp ugt i32 %17, 31 + br i1 %25, label %._crit_edge.i.i.i.i, label %.lr.ph116 + +.lr.ph116: ; preds = %.lr.ph + %26 = and i32 %23, %.sroa.032.0.extract.trunc37 + br label %58 26: ; preds = %16 %27 = getelementptr inbounds nuw i8, ptr %0, i64 8 @@ -7830,31 +7834,33 @@ _ZN4llvm8ExpectedIjEC2EOS1_.exit.thread.thread: ; preds = %3 30: ; preds = %_ZN4llvm8ExpectedImED2Ev.exit19 %.sroa.032.0.extract.trunc45 = trunc i64 %.sroa.0.1 to i32 %31 = and i32 %23, %.sroa.032.0.extract.trunc45 - %32 = shl i32 %31, %41 - %33 = or i32 %32, %40 + %32 = shl i32 %31, %59 + %33 = or i32 %32, %60 %34 = and i32 %.sroa.032.0.extract.trunc45, %20 %35 = icmp eq i32 %34, 0 br i1 %35, label %._crit_edge, label %39, !llvm.loop !630 ._crit_edge: ; preds = %30 - %36 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %37 = load i8, ptr %36, align 8 - %38 = and i8 %37, -2 - store i8 %38, ptr %36, align 8 - store i32 %33, ptr %0, align 8, !tbaa !36 + %.sroa.032.0.insert.ext39.le135 = and i64 %.sroa.0.1, 4294967295 + %37 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %38 = load i8, ptr %37, align 8 + %39 = and i8 %38, -2 + store i8 %39, ptr %37, align 8 + store i32 %34, ptr %0, align 8, !tbaa !36 br label %_ZN4llvm8ExpectedIjEC2EOS1_.exit -39: ; preds = %.lr.ph, %30 - %40 = phi i32 [ %24, %.lr.ph ], [ %33, %30 ] - %.078 = phi i32 [ 0, %.lr.ph ], [ %41, %30 ] - %.sroa.0.077 = phi i64 [ undef, %.lr.ph ], [ %.sroa.0.3, %30 ] - %.sroa.18.276 = phi i8 [ %10, %.lr.ph ], [ %59, %30 ] - %.sroa.032.275 = phi i64 [ %.sroa.032.0.insert.ext, %.lr.ph ], [ %.sroa.032.0.insert.insert41, %30 ] - %41 = add i32 %.078, %17 +39: ; preds = %30 + %41 = add nuw nsw i32 %59, %17 %42 = icmp ugt i32 %41, 31 - br i1 %42, label %._crit_edge.i.i.i.i, label %58 + br i1 %42, label %._crit_edge.i.i.i.i.loopexit, label %58, !llvm.loop !630 -._crit_edge.i.i.i.i: ; preds = %39 +._crit_edge.i.i.i.i.loopexit: ; preds = %40 + %.sroa.032.0.insert.ext39.le = and i64 %.sroa.0.1, 4294967295 + br label %._crit_edge.i.i.i.i + +._crit_edge.i.i.i.i: ; preds = %._crit_edge.i.i.i.i.loopexit, %.lr.ph + %.sroa.18.276.lcssa = phi i8 [ %10, %.lr.ph ], [ %61, %._crit_edge.i.i.i.i.loopexit ] + %.sroa.032.275.lcssa = phi i64 [ %.sroa.032.0.insert.ext, %.lr.ph ], [ %.sroa.032.0.insert.ext39.le, %._crit_edge.i.i.i.i.loopexit ] call void @llvm.lifetime.start.p0(ptr nonnull %7) %43 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3_V216generic_categoryEv() #31 call void @llvm.lifetime.start.p0(ptr nonnull %5), !noalias !631 @@ -7896,51 +7902,32 @@ _ZN4llvm5ErrorD2Ev.exit: ; preds = %._crit_edge.i.i.i.i call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %_ZN4llvm8ExpectedIjEC2EOS1_.exit -58: ; preds = %39 +58: ; preds = %.lr.ph116, %39 + %59 = phi i32 [ %17, %.lr.ph116 ], [ %41, %40 ] + %.sroa.0.077114 = phi i64 [ undef, %.lr.ph116 ], [ %.sroa.0.3, %40 ] + %60 = phi i32 [ %26, %.lr.ph116 ], [ %34, %40 ] call void @llvm.lifetime.start.p0(ptr nonnull %8) call void @_ZN4llvm21SimpleBitstreamCursor4ReadEj(ptr dead_on_unwind nonnull writable sret(%"class.llvm::Expected.39") align 8 %8, ptr noundef nonnull align 8 dereferenceable(36) %1, i32 noundef %2) - %59 = load i8, ptr %25, align 8 + %59 = load i8, ptr %24, align 8 %60 = trunc i8 %59 to i1 %61 = load i64, ptr %8, align 8, !tbaa !51 br i1 %60, label %63, label %62 62: ; preds = %58 %.sroa.0.0.insert.ext = and i64 %61, 4294967295 - %.sroa.0.0.insert.mask = and i64 %.sroa.0.077, -4294967296 + %.sroa.0.0.insert.mask = and i64 %.sroa.0.077114, -4294967296 %.sroa.0.0.insert.insert = or disjoint i64 %.sroa.0.0.insert.ext, %.sroa.0.0.insert.mask - br label %_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12 + br label %_ZN4llvm8ExpectedIjED2Ev.exit.i.i 63: ; preds = %58 store ptr null, ptr %8, align 8, !tbaa !37 - br label %_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12 - -_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12: ; preds = %62, %63 - %.sroa.0.3 = phi i64 [ 0, %63 ], [ %.sroa.0.0.insert.insert, %62 ] - %.sroa.0.1 = phi i64 [ %61, %63 ], [ %.sroa.0.0.insert.insert, %62 ] - %64 = trunc i8 %.sroa.18.276 to i1 - br i1 %64, label %65, label %_ZN4llvm8ExpectedIjED2Ev.exit.i.i - -65: ; preds = %_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12 - %.not.i.i.i.i = icmp eq i64 %.sroa.032.275, 0 - br i1 %.not.i.i.i.i, label %_ZN4llvm8ExpectedIjED2Ev.exit.i.i, label %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i.i.i - -_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i.i.i: ; preds = %65 - %66 = inttoptr i64 %.sroa.032.275 to ptr - %67 = load ptr, ptr %66, align 8, !tbaa !42 - %68 = getelementptr inbounds nuw i8, ptr %67, i64 8 - %69 = load ptr, ptr %68, align 8 - call void %69(ptr noundef nonnull align 8 dereferenceable(8) %66) #27 - %.pre = load i8, ptr %25, align 8 br label %_ZN4llvm8ExpectedIjED2Ev.exit.i.i -_ZN4llvm8ExpectedIjED2Ev.exit.i.i: ; preds = %65, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i.i.i, %_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12 - %70 = phi i8 [ %59, %_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12 ], [ %.pre, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i.i.i ], [ %59, %65 ] - %.sroa.032.6 = phi i64 [ %.sroa.032.275, %_ZN4llvm8ExpectedIjEC2ImEEONS0_IT_EEPNSt9enable_ifIXsr3stdE16is_convertible_vIS3_jEEvE4typeE.exit12 ], [ 0, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i.i.i ], [ 0, %65 ] - %.sroa.032.0.insert.ext39 = and i64 %.sroa.0.1, 4294967295 - %.sroa.032.0.insert.mask40 = and i64 %.sroa.032.6, -4294967296 - %.sroa.032.0.insert.insert41 = or disjoint i64 %.sroa.032.0.insert.mask40, %.sroa.032.0.insert.ext39 - %71 = trunc i8 %70 to i1 - br i1 %71, label %72, label %_ZN4llvm8ExpectedImED2Ev.exit19 +_ZN4llvm8ExpectedIjED2Ev.exit.i.i: ; preds = %65, %62 + %70 = phi i64 [ 0, %65 ], [ %.sroa.0.0.insert.insert, %64 ] + %.sroa.032.6 = phi i64 [ %63, %65 ], [ %.sroa.0.0.insert.insert, %64 ] + %66 = trunc i8 %61 to i1 + br i1 %66, label %67, label %_ZN4llvm8ExpectedImED2Ev.exit19 72: ; preds = %_ZN4llvm8ExpectedIjED2Ev.exit.i.i %73 = load ptr, ptr %8, align 8, !tbaa !37 @@ -7951,7 +7938,7 @@ _ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i17: ; preds = %72 %74 = load ptr, ptr %73, align 8, !tbaa !42 %75 = getelementptr inbounds nuw i8, ptr %74, i64 8 %76 = load ptr, ptr %75, align 8 - call void %76(ptr noundef nonnull align 8 dereferenceable(8) %73) #27 + call void %71(ptr noundef nonnull align 8 dereferenceable(8) %73) #27 br label %_ZN4llvm8ExpectedImED2Ev.exit19 _ZN4llvm8ExpectedImED2Ev.exit19: ; preds = %72, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i17, %_ZN4llvm8ExpectedIjED2Ev.exit.i.i @@ -7967,8 +7954,8 @@ _ZN4llvm8ExpectedIjEC2EOS1_.exit.thread: ; preds = %_ZN4llvm8ExpectedIm br label %_ZN4llvm8ExpectedIjED2Ev.exit24 _ZN4llvm8ExpectedIjEC2EOS1_.exit: ; preds = %26, %_ZN4llvm5ErrorD2Ev.exit, %._crit_edge - %.sroa.032.0 = phi i64 [ %.sroa.032.0.insert.ext, %26 ], [ %.sroa.032.0.insert.insert41, %._crit_edge ], [ %.sroa.032.275, %_ZN4llvm5ErrorD2Ev.exit ] - %.sroa.18.0 = phi i8 [ %10, %26 ], [ %59, %._crit_edge ], [ %.sroa.18.276, %_ZN4llvm5ErrorD2Ev.exit ] + %.sroa.032.0 = phi i64 [ %.sroa.032.0.insert.ext, %27 ], [ %.sroa.032.0.insert.ext39.le135, %._crit_edge ], [ %.sroa.032.275.lcssa, %_ZN4llvm5ErrorD2Ev.exit ] + %.sroa.18.0 = phi i8 [ %10, %27 ], [ %59, %._crit_edge ], [ %.sroa.18.276.lcssa, %_ZN4llvm5ErrorD2Ev.exit ] %80 = trunc i8 %.sroa.18.0 to i1 %.not.i.i21 = icmp ne i64 %.sroa.032.0, 0 %or.cond.not = select i1 %80, i1 %.not.i.i21, i1 false @@ -7979,7 +7966,7 @@ _ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i22: ; preds = %_ZN %82 = load ptr, ptr %81, align 8, !tbaa !42 %83 = getelementptr inbounds nuw i8, ptr %82, i64 8 %84 = load ptr, ptr %83, align 8 - call void %84(ptr noundef nonnull align 8 dereferenceable(8) %81) #27 + call void %79(ptr noundef nonnull align 8 dereferenceable(8) %81) #27 br label %_ZN4llvm8ExpectedIjED2Ev.exit24 _ZN4llvm8ExpectedIjED2Ev.exit24: ; preds = %_ZN4llvm8ExpectedIjEC2EOS1_.exit.thread, %_ZN4llvm8ExpectedIjEC2EOS1_.exit.thread.thread, %_ZNKSt14default_deleteIN4llvm13ErrorInfoBaseEEclEPS1_.exit.i.i22, %_ZN4llvm8ExpectedIjEC2EOS1_.exit diff --git a/bench/llvm/optimized/ItaniumMangle.ll b/bench/llvm/optimized/ItaniumMangle.ll index 6da83a37685..dee39466c5d 100644 --- a/bench/llvm/optimized/ItaniumMangle.ll +++ b/bench/llvm/optimized/ItaniumMangle.ll @@ -42998,11 +42998,11 @@ _ZN12_GLOBAL__N_114CXXNameMangler18mangleSubstitutionEN5clang12TemplateNameE.exi %44 = getelementptr inbounds nuw i8, ptr %13, i64 16 %45 = load ptr, ptr %44, align 8 %.not18 = icmp eq ptr %45, null - %46 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %.val20 = load ptr, ptr %46, align 8 - br i1 %.not18, label %71, label %47 + br i1 %.not18, label %71, label %46 47: ; preds = %43 + %47 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %.val20 = load ptr, ptr %47, align 8 %48 = getelementptr inbounds nuw i8, ptr %45, i64 16 %49 = load ptr, ptr %48, align 8, !tbaa !544 %50 = load i64, ptr %49, align 8, !tbaa !547 @@ -43037,11 +43037,7 @@ _ZN12_GLOBAL__N_114CXXNameMangler18mangleSubstitutionEN5clang12TemplateNameE.exi store ptr %70, ptr %59, align 8, !tbaa !529 br label %_ZN12_GLOBAL__N_114CXXNameMangler16mangleSourceNameEPKN5clang14IdentifierInfoE.exit -71: ; preds = %43 - call fastcc void @_ZN12_GLOBAL__N_114CXXNameMangler18mangleOperatorNameEN5clang22OverloadedOperatorKindEj(ptr %.val20, i32 noundef 0, i32 noundef -1) - br label %_ZN12_GLOBAL__N_114CXXNameMangler16mangleSourceNameEPKN5clang14IdentifierInfoE.exit - -_ZN12_GLOBAL__N_114CXXNameMangler16mangleSourceNameEPKN5clang14IdentifierInfoE.exit: ; preds = %68, %67, %65, %71 +71: ; preds = %43, %68, %67, %65 %.sroa.0.0.copyload = load i64, ptr %8, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %5) store i64 %.sroa.0.0.copyload, ptr %5, align 8 @@ -43053,7 +43049,7 @@ _ZN12_GLOBAL__N_114CXXNameMangler16mangleSourceNameEPKN5clang14IdentifierInfoE.e %74 = load ptr, ptr %72, align 8, !tbaa !22 %75 = getelementptr inbounds nuw i8, ptr %74, i64 32 %76 = load ptr, ptr %75, align 8 - %77 = call noundef ptr %76(ptr noundef nonnull align 8 dereferenceable(33) %72) #30 + %77 = call noundef ptr %75(ptr noundef nonnull align 8 dereferenceable(33) %72) #30 %78 = ptrtoint ptr %77 to i64 call void @llvm.lifetime.start.p0(ptr nonnull %4) store i64 %78, ptr %4, align 8, !tbaa !105 diff --git a/bench/llvm/optimized/RegAllocGreedy.ll b/bench/llvm/optimized/RegAllocGreedy.ll index a7dcade38f8..98d526f47e8 100644 --- a/bench/llvm/optimized/RegAllocGreedy.ll +++ b/bench/llvm/optimized/RegAllocGreedy.ll @@ -3441,8 +3441,8 @@ define hidden i32 @_ZN4llvm8RAGreedy9tryAssignERKNS_12LiveIntervalERNS_15Allocat br label %15 15: ; preds = %.lr.ph133, %_ZN4llvm15AllocationOrder8IteratorppEv.exit - %.sroa.076.0132 = phi i32 [ 0, %.lr.ph133 ], [ %.sroa.076.1, %_ZN4llvm15AllocationOrder8IteratorppEv.exit ] - %.sroa.8.0131 = phi i32 [ %10, %.lr.ph133 ], [ %.sroa.8.3, %_ZN4llvm15AllocationOrder8IteratorppEv.exit ] + %.sroa.076.0132 = phi i32 [ 0, %.lr.ph131 ], [ %.sroa.076.1, %_ZN4llvm15AllocationOrder8IteratorppEv.exit ] + %.sroa.8.0131 = phi i32 [ %10, %.lr.ph131 ], [ %.sroa.8.3, %_ZN4llvm15AllocationOrder8IteratorppEv.exit ] %.not = icmp eq i32 %.sroa.076.0132, 0 br i1 %.not, label %16, label %.critedge.thread @@ -3775,7 +3775,7 @@ _ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i: ; pre ._crit_edge.i.i.i.i.i: ; preds = %._crit_edge.loopexit.i.i.i.i.i, %127 %.pre-phi56.i.i.i.i.i = phi i64 [ %156, %._crit_edge.loopexit.i.i.i.i.i ], [ %129, %127 ] %.029.lcssa.i.i.i.i.i = phi ptr [ %scevgep.i.i.i.i.i, %._crit_edge.loopexit.i.i.i.i.i ], [ %128, %127 ] - switch i64 %.pre-phi56.i.i.i.i.i, label %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread92 [ + switch i64 %.pre-phi56.i.i.i.i.i, label %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread89 [ i64 3, label %157 i64 2, label %._crit_edge._crit_edge.i.i.i.i.i i64 1, label %._crit_edge._crit_edge52.i.i.i.i.i @@ -3868,7 +3868,7 @@ _ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread92: ; pre br label %.critedge42 .critedge42: ; preds = %5, %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread92, %181, %182, %.critedge, %193, %_ZNK4llvm15AllocationOrder8IteratordeEv.exit50 - %.sroa.082.0 = phi i32 [ %.sroa.0.0.i49, %_ZNK4llvm15AllocationOrder8IteratordeEv.exit50 ], [ %195, %193 ], [ 0, %.critedge ], [ %123, %181 ], [ 0, %182 ], [ %.sroa.076.0106, %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread92 ], [ 0, %5 ] + %.sroa.082.0 = phi i32 [ %.sroa.0.0.i49, %_ZNK4llvm15AllocationOrder8IteratordeEv.exit50 ], [ %195, %193 ], [ 0, %.critedge ], [ %123, %181 ], [ 0, %182 ], [ %.sroa.076.0106, %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit.thread89 ], [ 0, %5 ] ret i32 %.sroa.082.0 } @@ -15086,21 +15086,27 @@ _ZNK4llvm23RegAllocEvictionAdvisor22isUnusedCalleeSavedRegENS_10MCRegisterE.exit %86 = getelementptr inbounds nuw i8, ptr %85, i64 16 %87 = load i32, ptr %86, align 8, !tbaa !26 %.not.i.i92 = icmp eq i32 %87, 0 - br i1 %.not.i.i92, label %.critedge88, label %_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i + br i1 %.not.i.i92, label %_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i, label %88 _ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i: ; preds = %81 %88 = getelementptr inbounds nuw i8, ptr %85, i64 8 %89 = load ptr, ptr %88, align 8, !tbaa !25 %90 = load i32, ptr %89, align 4, !tbaa !68 - %91 = load i32, ptr %85, align 8, !tbaa !68 - %.not.i93 = icmp eq i32 %91, 0 - %.not80 = icmp ne i32 %90, 0 - %92 = icmp ne i32 %90, %73 - %93 = and i1 %.not80, %92 - %or.cond133 = select i1 %.not.i93, i1 %93, i1 false - br i1 %or.cond133, label %94, label %.critedge88 + br label %_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i + +_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i:; preds = %88, %81 + %.sroa.03.0.i.i = phi i32 [ %91, %88 ], [ 0, %81 ] + %92 = load i32, ptr %85, align 4, !tbaa !68 + %.not.i93 = icmp eq i32 %92, 0 + br i1 %.not.i93, label %94, label %.critedge88 94: ; preds = %_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i + %.not80 = icmp ne i32 %.sroa.03.0.i.i, 0 + %93 = icmp ne i32 %.sroa.03.0.i.i, %73 + %or.cond = and i1 %.not80, %93 + br i1 %or.cond, label %94, label %.critedge88 + +94: ; preds = %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit %95 = getelementptr inbounds nuw i8, ptr %0, i64 28904 call void @llvm.lifetime.start.p0(ptr nonnull %9) store ptr %1, ptr %9, align 8, !tbaa !181 @@ -15363,7 +15369,7 @@ _ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit: ; preds br i1 %237, label %251, label %255 238: ; preds = %.lr.ph140, %238 - %.074138 = phi ptr [ %217, %.lr.ph140 ], [ %250, %238 ] + %.074138 = phi ptr [ %217, %.lr.ph137 ], [ %250, %238 ] %.sroa.04.0.copyload = load i32, ptr %.074138, align 4, !tbaa !68 %239 = load ptr, ptr %220, align 8, !tbaa !739 %240 = load ptr, ptr %221, align 8, !tbaa !728 @@ -15402,8 +15408,8 @@ _ZN4llvm10TimeRegionD2Ev.exit: ; preds = %255, %257 call void @llvm.lifetime.end.p0(ptr nonnull %10) br label %.critedge88 -.critedge88: ; preds = %_ZN4llvm17MCRegUnitIteratorppEv.exit.i.i, %81, %_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i, %74, %24, %169, %_ZN4llvm10TimeRegionD2Ev.exit, %137, %140, %94, %.critedge, %61, %59, %56, %_ZNK4llvm23RegAllocEvictionAdvisor22isUnusedCalleeSavedRegENS_10MCRegisterE.exit, %21, %_ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit, %148 - %.sroa.0121.1 = phi i32 [ 0, %_ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit ], [ %149, %148 ], [ 0, %61 ], [ %60, %59 ], [ %20, %56 ], [ %20, %_ZNK4llvm23RegAllocEvictionAdvisor22isUnusedCalleeSavedRegENS_10MCRegisterE.exit ], [ %20, %21 ], [ 0, %.critedge ], [ %73, %94 ], [ 0, %140 ], [ %139, %137 ], [ 0, %_ZN4llvm10TimeRegionD2Ev.exit ], [ 0, %169 ], [ %20, %24 ], [ %73, %74 ], [ %73, %_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i ], [ %73, %81 ], [ %20, %_ZN4llvm17MCRegUnitIteratorppEv.exit.i.i ] +.critedge88: ; preds = %_ZN4llvm17MCRegUnitIteratorppEv.exit.i.i, %_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i, %74, %24, %169, %_ZN4llvm10TimeRegionD2Ev.exit, %137, %140, %94, %94, %.critedge, %61, %59, %56, %_ZNK4llvm23RegAllocEvictionAdvisor22isUnusedCalleeSavedRegENS_10MCRegisterE.exit, %21, %_ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit, %148 + %.sroa.0121.1 = phi i32 [ 0, %_ZN4llvm23SmallVectorTemplateBaseINS_8RegisterELb1EE9push_backES1_.exit ], [ %149, %148 ], [ 0, %61 ], [ %60, %59 ], [ %20, %56 ], [ %20, %_ZNK4llvm23RegAllocEvictionAdvisor22isUnusedCalleeSavedRegENS_10MCRegisterE.exit ], [ %20, %21 ], [ 0, %.critedge ], [ %73, %94 ], [ %73, %_ZNK4llvm19MachineRegisterInfo13getSimpleHintENS_8RegisterE.exit ], [ 0, %140 ], [ %139, %137 ], [ 0, %_ZN4llvm10TimeRegionD2Ev.exit ], [ 0, %169 ], [ %20, %24 ], [ %73, %74 ], [ %73, %_ZNK4llvm19MachineRegisterInfo20getRegAllocationHintENS_8RegisterE.exit.i ], [ %20, %_ZN4llvm17MCRegUnitIteratorppEv.exit.i.i ] %258 = load ptr, ptr %8, align 8, !tbaa !270 %259 = getelementptr inbounds nuw i8, ptr %8, i64 24 %260 = icmp eq ptr %258, %259 diff --git a/bench/llvm/optimized/SemaOverload.ll b/bench/llvm/optimized/SemaOverload.ll index 9ea43b417c0..aefe7bf9206 100644 --- a/bench/llvm/optimized/SemaOverload.ll +++ b/bench/llvm/optimized/SemaOverload.ll @@ -90997,19 +90997,19 @@ _ZNK5clang4Type5getAsINS_17MemberPointerTypeEEEPKT_v.exit: ; preds = %7, %13, %2 .lr.ph: ; preds = %34 %41 = getelementptr inbounds nuw i8, ptr %0, i64 640 %42 = and i64 %38, 7 - %43 = add nuw nsw i64 %42, 1 - br label %44 + br label %43 44: ; preds = %.lr.ph, %52 - %indvars.iv = phi i64 [ %43, %.lr.ph ], [ %indvars.iv.next, %52 ] - %45 = trunc nuw nsw i64 %indvars.iv to i32 - %46 = or i32 %40, %45 - %47 = zext i32 %46 to i64 - %.not = icmp eq i64 %indvars.iv, %47 - br i1 %.not, label %_ZNK5clang10ASTContext19getCVRQualifiedTypeENS_8QualTypeEj.exit, label %52 + %indvars.iv = phi i64 [ %42, %.lr.ph ], [ %indvars.iv.next, %51 ] + %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 + %44 = trunc nuw nsw i64 %indvars.iv.next to i32 + %45 = or i32 %40, %44 + %46 = zext i32 %45 to i64 + %.not = icmp eq i64 %indvars.iv.next, %46 + br i1 %.not, label %_ZNK5clang10ASTContext19getCVRQualifiedTypeENS_8QualTypeEj.exit, label %51 _ZNK5clang10ASTContext19getCVRQualifiedTypeENS_8QualTypeEj.exit: ; preds = %44 - %48 = or i64 %.sroa.0.0.copyload.i, %indvars.iv + %48 = or i64 %.sroa.0.0.copyload.i, %indvars.iv.next call void @llvm.lifetime.start.p0(ptr nonnull %4) %49 = load ptr, ptr %41, align 8, !tbaa !1912 %50 = call i64 @_ZNK5clang10ASTContext20getMemberPointerTypeENS_8QualTypeEPKNS_4TypeE(ptr noundef nonnull align 8 dereferenceable(23216) %49, i64 %48, ptr noundef %36) #30 @@ -91019,9 +91019,8 @@ _ZNK5clang10ASTContext19getCVRQualifiedTypeENS_8QualTypeEj.exit: ; preds = %44 br label %52 52: ; preds = %44, %_ZNK5clang10ASTContext19getCVRQualifiedTypeENS_8QualTypeEj.exit - %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next, 8 - br i1 %exitcond.not, label %.loopexit, label %44, !llvm.loop !2293 + %exitcond.not = icmp eq i64 %indvars.iv.next, 7 + br i1 %exitcond.not, label %.loopexit, label %43, !llvm.loop !2293 .loopexit: ; preds = %52, %34, %_ZNK5clang4Type5getAsINS_17MemberPointerTypeEEEPKT_v.exit, %2 ret void diff --git a/bench/meshlab/optimized/arap.ll b/bench/meshlab/optimized/arap.ll index 8f23c3ed15d..97812797b52 100644 --- a/bench/meshlab/optimized/arap.ll +++ b/bench/meshlab/optimized/arap.ll @@ -17677,14 +17677,15 @@ define linkonce_odr void @_ZN5Eigen8internal12SparseLUImplIdiE7countnzElRlS3_RNS br i1 %or.cond, label %.loopexit28, label %.lr.ph33 .lr.ph33: ; preds = %5 - %16 = zext nneg i32 %14 to i64 - %17 = getelementptr inbounds nuw i8, ptr %4, i64 80 + %16 = getelementptr inbounds nuw i8, ptr %4, i64 80 + %narrow = add nuw i32 %14, 1 + %17 = zext i32 %narrow to i64 %.pre = load ptr, ptr %4, align 8 br label %19 .loopexit: ; preds = %35, %19 %18 = phi ptr [ %20, %19 ], [ %43, %35 ] - %exitcond.not = icmp eq i64 %.02732, %16 + %exitcond.not = icmp eq i64 %23, %17 br i1 %exitcond.not, label %.loopexit28, label %19, !llvm.loop !309 19: ; preds = %.lr.ph33, %.loopexit @@ -17700,7 +17701,7 @@ define linkonce_odr void @_ZN5Eigen8internal12SparseLUImplIdiE7countnzElRlS3_RNS .lr.ph: ; preds = %19 %27 = sext i32 %22 to i64 - %28 = load ptr, ptr %17, align 8 + %28 = load ptr, ptr %16, align 8 %29 = getelementptr i32, ptr %28, i64 %27 %30 = getelementptr i8, ptr %29, i64 4 %31 = load i32, ptr %30, align 4 @@ -17743,15 +17744,16 @@ define linkonce_odr void @_ZN5Eigen8internal12SparseLUImplIdiE6fixupLElRKNS_6Mat br i1 %.not43, label %._crit_edge, label %.lr.ph46 .lr.ph46: ; preds = %4 - %9 = zext nneg i32 %8 to i64 - %10 = getelementptr inbounds nuw i8, ptr %3, i64 80 - %11 = getelementptr inbounds nuw i8, ptr %3, i64 48 + %9 = getelementptr inbounds nuw i8, ptr %3, i64 80 + %10 = getelementptr inbounds nuw i8, ptr %3, i64 48 + %narrow = add nuw i32 %8, 1 + %11 = zext i32 %narrow to i64 %.pre = load ptr, ptr %3, align 8 br label %13 .loopexit: ; preds = %.lr.ph41, %.preheader %12 = phi ptr [ %30, %.preheader ], [ %52, %.lr.ph41 ] - %exitcond.not = icmp eq i64 %.045, %9 + %exitcond.not = icmp eq i64 %29, %11 br i1 %exitcond.not, label %._crit_edge, label %13, !llvm.loop !311 13: ; preds = %.lr.ph46, %.loopexit @@ -17761,12 +17763,12 @@ define linkonce_odr void @_ZN5Eigen8internal12SparseLUImplIdiE6fixupLElRKNS_6Mat %15 = getelementptr inbounds nuw i32, ptr %14, i64 %.045 %16 = load i32, ptr %15, align 4 %17 = sext i32 %16 to i64 - %18 = load ptr, ptr %10, align 8 + %18 = load ptr, ptr %9, align 8 %19 = getelementptr inbounds i32, ptr %18, i64 %17 %20 = load i32, ptr %19, align 4 store i32 %.03344, ptr %19, align 4 %21 = add nsw i64 %17, 1 - %22 = load ptr, ptr %10, align 8 + %22 = load ptr, ptr %9, align 8 %23 = getelementptr inbounds i32, ptr %22, i64 %21 %24 = load i32, ptr %23, align 4 %25 = icmp slt i32 %20, %24 @@ -17794,7 +17796,7 @@ define linkonce_odr void @_ZN5Eigen8internal12SparseLUImplIdiE6fixupLElRKNS_6Mat .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph %indvars.iv = phi i64 [ %27, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ] %.03437 = phi i64 [ %26, %.lr.ph.preheader ], [ %43, %.lr.ph ] - %35 = load ptr, ptr %11, align 8 + %35 = load ptr, ptr %10, align 8 %36 = getelementptr inbounds i32, ptr %35, i64 %.03437 %37 = load i32, ptr %36, align 4 %38 = sext i32 %37 to i64 @@ -17805,7 +17807,7 @@ define linkonce_odr void @_ZN5Eigen8internal12SparseLUImplIdiE6fixupLElRKNS_6Mat store i32 %41, ptr %42, align 4 %indvars.iv.next = add nsw i64 %indvars.iv, 1 %43 = add nsw i64 %.03437, 1 - %44 = load ptr, ptr %10, align 8 + %44 = load ptr, ptr %9, align 8 %45 = getelementptr inbounds i32, ptr %44, i64 %21 %46 = load i32, ptr %45, align 4 %47 = sext i32 %46 to i64 @@ -17814,7 +17816,7 @@ define linkonce_odr void @_ZN5Eigen8internal12SparseLUImplIdiE6fixupLElRKNS_6Mat .lr.ph41: ; preds = %.preheader, %.lr.ph41 %.03540 = phi i64 [ %51, %.lr.ph41 ], [ %21, %.preheader ] - %49 = load ptr, ptr %10, align 8 + %49 = load ptr, ptr %9, align 8 %50 = getelementptr inbounds i32, ptr %49, i64 %.03540 store i32 %.1.lcssa, ptr %50, align 4 %51 = add nsw i64 %.03540, 1 diff --git a/bench/meshlab/optimized/filter_parametrization.ll b/bench/meshlab/optimized/filter_parametrization.ll index ac3ad365b38..598151c549c 100644 --- a/bench/meshlab/optimized/filter_parametrization.ll +++ b/bench/meshlab/optimized/filter_parametrization.ll @@ -3324,9 +3324,9 @@ _ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exi br i1 %107, label %.lr.ph.i.i.i.i.i, label %._crit_edge.i.i.i.i.i, !llvm.loop !30 ._crit_edge.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i, %.thread261, %98 - %108 = phi i64 [ 0, %.thread261 ], [ %101, %98 ], [ %101, %.lr.ph.i.i.i.i.i ] - %109 = phi ptr [ %88, %.thread261 ], [ %99, %98 ], [ %99, %.lr.ph.i.i.i.i.i ] - %110 = phi ptr [ null, %.thread261 ], [ %.sink.i, %98 ], [ %.sink.i, %.lr.ph.i.i.i.i.i ] + %108 = phi i64 [ 0, %.thread259 ], [ %101, %98 ], [ %101, %.lr.ph.i.i.i.i.i ] + %109 = phi ptr [ %88, %.thread259 ], [ %99, %98 ], [ %99, %.lr.ph.i.i.i.i.i ] + %110 = phi ptr [ null, %.thread259 ], [ %.sink.i, %98 ], [ %.sink.i, %.lr.ph.i.i.i.i.i ] %111 = icmp slt i64 %108, %85 br i1 %111, label %.lr.ph.i.i.i.i.i.i, label %_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS0_IdLin1ELi3ELi0ELin1ELi3EEEEERKNS_9EigenBaseIT_EE.exit @@ -3639,7 +3639,7 @@ _ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exi %243 = call ptr @__cxa_allocate_exception(i64 8) #21 store ptr getelementptr inbounds nuw (i8, ptr @_ZTVSt9bad_alloc, i64 16), ptr %243, align 8 invoke void @__cxa_throw(ptr nonnull %243, ptr nonnull @_ZTISt9bad_alloc, ptr nonnull @_ZNSt9bad_allocD1Ev) #42 - to label %.cont265 unwind label %262 + to label %.cont263 unwind label %262 .cont265: ; preds = %.invoke264 unreachable @@ -3666,9 +3666,9 @@ _ZN5Eigen15PlainObjectBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exi br i1 %253, label %.lr.ph.i.i.i.i.i132, label %._crit_edge.i.i.i.i.i128, !llvm.loop !30 ._crit_edge.i.i.i.i.i128: ; preds = %.lr.ph.i.i.i.i.i132, %.thread262, %244 - %254 = phi i64 [ 0, %.thread262 ], [ %247, %244 ], [ %247, %.lr.ph.i.i.i.i.i132 ] - %255 = phi ptr [ %234, %.thread262 ], [ %245, %244 ], [ %245, %.lr.ph.i.i.i.i.i132 ] - %256 = phi ptr [ null, %.thread262 ], [ %.sink.i140, %244 ], [ %.sink.i140, %.lr.ph.i.i.i.i.i132 ] + %254 = phi i64 [ 0, %.thread260 ], [ %247, %244 ], [ %247, %.lr.ph.i.i.i.i.i132 ] + %255 = phi ptr [ %234, %.thread260 ], [ %245, %244 ], [ %245, %.lr.ph.i.i.i.i.i132 ] + %256 = phi ptr [ null, %.thread260 ], [ %.sink.i140, %244 ], [ %.sink.i140, %.lr.ph.i.i.i.i.i132 ] %257 = icmp slt i64 %254, %231 br i1 %257, label %.lr.ph.i.i.i.i.i.i129, label %_ZN5Eigen6MatrixIdLin1ELin1ELi0ELin1ELin1EEC2INS0_IdLin1ELi3ELi0ELin1ELi3EEEEERKNS_9EigenBaseIT_EE.exit101 @@ -3725,7 +3725,7 @@ _ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exi %279 = call ptr @__cxa_allocate_exception(i64 8) #21 store ptr getelementptr inbounds nuw (i8, ptr @_ZTVSt9bad_alloc, i64 16), ptr %279, align 8 invoke void @__cxa_throw(ptr nonnull %279, ptr nonnull @_ZTISt9bad_alloc, ptr nonnull @_ZNSt9bad_allocD1Ev) #42 - to label %.cont267 unwind label %298 + to label %.cont265 unwind label %298 .cont267: ; preds = %.invoke266 unreachable @@ -3752,9 +3752,9 @@ _ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELin1ELi0ELin1ELin1EEEE6resizeEll.exi br i1 %289, label %.lr.ph.i.i.i.i.i153, label %._crit_edge.i.i.i.i.i149, !llvm.loop !38 ._crit_edge.i.i.i.i.i149: ; preds = %.lr.ph.i.i.i.i.i153, %.thread263, %280 - %290 = phi i64 [ 0, %.thread263 ], [ %283, %280 ], [ %283, %.lr.ph.i.i.i.i.i153 ] - %291 = phi ptr [ %270, %.thread263 ], [ %281, %280 ], [ %281, %.lr.ph.i.i.i.i.i153 ] - %292 = phi ptr [ null, %.thread263 ], [ %.sink.i160, %280 ], [ %.sink.i160, %.lr.ph.i.i.i.i.i153 ] + %290 = phi i64 [ 0, %.thread261 ], [ %283, %280 ], [ %283, %.lr.ph.i.i.i.i.i153 ] + %291 = phi ptr [ %270, %.thread261 ], [ %281, %280 ], [ %281, %.lr.ph.i.i.i.i.i153 ] + %292 = phi ptr [ null, %.thread261 ], [ %.sink.i160, %280 ], [ %.sink.i160, %.lr.ph.i.i.i.i.i153 ] %293 = icmp slt i64 %290, %267 br i1 %293, label %.lr.ph.i.i.i.i.i.i150, label %_ZN5Eigen6MatrixIiLin1ELin1ELi0ELin1ELin1EEC2INS0_IiLin1ELi3ELi0ELin1ELi3EEEEERKNS_9EigenBaseIT_EE.exit @@ -56164,14 +56164,15 @@ define linkonce_odr void @_ZN5Eigen8internal12SparseLUImplIdiE7countnzElRlS3_RNS br i1 %or.cond, label %.loopexit28, label %.lr.ph33 .lr.ph33: ; preds = %5 - %16 = zext nneg i32 %14 to i64 - %17 = getelementptr inbounds nuw i8, ptr %4, i64 80 + %16 = getelementptr inbounds nuw i8, ptr %4, i64 80 + %narrow = add nuw i32 %14, 1 + %17 = zext i32 %narrow to i64 %.pre = load ptr, ptr %4, align 8 br label %19 .loopexit: ; preds = %35, %19 %18 = phi ptr [ %20, %19 ], [ %43, %35 ] - %exitcond.not = icmp eq i64 %.02732, %16 + %exitcond.not = icmp eq i64 %23, %17 br i1 %exitcond.not, label %.loopexit28, label %19, !llvm.loop !1128 19: ; preds = %.lr.ph33, %.loopexit @@ -56187,7 +56188,7 @@ define linkonce_odr void @_ZN5Eigen8internal12SparseLUImplIdiE7countnzElRlS3_RNS .lr.ph: ; preds = %19 %27 = sext i32 %22 to i64 - %28 = load ptr, ptr %17, align 8 + %28 = load ptr, ptr %16, align 8 %29 = getelementptr i32, ptr %28, i64 %27 %30 = getelementptr i8, ptr %29, i64 4 %31 = load i32, ptr %30, align 4 @@ -56230,15 +56231,16 @@ define linkonce_odr void @_ZN5Eigen8internal12SparseLUImplIdiE6fixupLElRKNS_6Mat br i1 %.not43, label %._crit_edge, label %.lr.ph46 .lr.ph46: ; preds = %4 - %9 = zext nneg i32 %8 to i64 - %10 = getelementptr inbounds nuw i8, ptr %3, i64 80 - %11 = getelementptr inbounds nuw i8, ptr %3, i64 48 + %9 = getelementptr inbounds nuw i8, ptr %3, i64 80 + %10 = getelementptr inbounds nuw i8, ptr %3, i64 48 + %narrow = add nuw i32 %8, 1 + %11 = zext i32 %narrow to i64 %.pre = load ptr, ptr %3, align 8 br label %13 .loopexit: ; preds = %.lr.ph41, %.preheader %12 = phi ptr [ %30, %.preheader ], [ %52, %.lr.ph41 ] - %exitcond.not = icmp eq i64 %.045, %9 + %exitcond.not = icmp eq i64 %29, %11 br i1 %exitcond.not, label %._crit_edge, label %13, !llvm.loop !1130 13: ; preds = %.lr.ph46, %.loopexit @@ -56248,12 +56250,12 @@ define linkonce_odr void @_ZN5Eigen8internal12SparseLUImplIdiE6fixupLElRKNS_6Mat %15 = getelementptr inbounds nuw i32, ptr %14, i64 %.045 %16 = load i32, ptr %15, align 4 %17 = sext i32 %16 to i64 - %18 = load ptr, ptr %10, align 8 + %18 = load ptr, ptr %9, align 8 %19 = getelementptr inbounds i32, ptr %18, i64 %17 %20 = load i32, ptr %19, align 4 store i32 %.03344, ptr %19, align 4 %21 = add nsw i64 %17, 1 - %22 = load ptr, ptr %10, align 8 + %22 = load ptr, ptr %9, align 8 %23 = getelementptr inbounds i32, ptr %22, i64 %21 %24 = load i32, ptr %23, align 4 %25 = icmp slt i32 %20, %24 @@ -56281,7 +56283,7 @@ define linkonce_odr void @_ZN5Eigen8internal12SparseLUImplIdiE6fixupLElRKNS_6Mat .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph %indvars.iv = phi i64 [ %27, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ] %.03437 = phi i64 [ %26, %.lr.ph.preheader ], [ %43, %.lr.ph ] - %35 = load ptr, ptr %11, align 8 + %35 = load ptr, ptr %10, align 8 %36 = getelementptr inbounds i32, ptr %35, i64 %.03437 %37 = load i32, ptr %36, align 4 %38 = sext i32 %37 to i64 @@ -56292,7 +56294,7 @@ define linkonce_odr void @_ZN5Eigen8internal12SparseLUImplIdiE6fixupLElRKNS_6Mat store i32 %41, ptr %42, align 4 %indvars.iv.next = add nsw i64 %indvars.iv, 1 %43 = add nsw i64 %.03437, 1 - %44 = load ptr, ptr %10, align 8 + %44 = load ptr, ptr %9, align 8 %45 = getelementptr inbounds i32, ptr %44, i64 %21 %46 = load i32, ptr %45, align 4 %47 = sext i32 %46 to i64 @@ -56301,7 +56303,7 @@ define linkonce_odr void @_ZN5Eigen8internal12SparseLUImplIdiE6fixupLElRKNS_6Mat .lr.ph41: ; preds = %.preheader, %.lr.ph41 %.03540 = phi i64 [ %51, %.lr.ph41 ], [ %21, %.preheader ] - %49 = load ptr, ptr %10, align 8 + %49 = load ptr, ptr %9, align 8 %50 = getelementptr inbounds i32, ptr %49, i64 %.03540 store i32 %.1.lcssa, ptr %50, align 4 %51 = add nsw i64 %.03540, 1 diff --git a/bench/oiio/optimized/exrinput_c.ll b/bench/oiio/optimized/exrinput_c.ll index de98adc77be..17d9c7430ac 100644 --- a/bench/oiio/optimized/exrinput_c.ll +++ b/bench/oiio/optimized/exrinput_c.ll @@ -10145,7 +10145,7 @@ _ZNK11OpenImageIO6v3_1_09ImageSpec13channelformatEi.exit.lr.ph: ; preds = %.preh %.sroa.speculated129 = call i32 @llvm.smin.i32(i32 %67, i32 %68) %69 = load i32, ptr %23, align 4, !tbaa !303 %70 = invoke noundef zeroext i1 @_ZN11OpenImageIO6v3_1_016OpenEXRCoreInput18check_fill_missingEiiiiiiiiPvll(ptr noundef nonnull align 8 dereferenceable(280) %0, i32 noundef %3, i32 noundef %.sroa.speculated133, i32 noundef %4, i32 noundef %.sroa.speculated129, i32 poison, i32 poison, i32 noundef 0, i32 noundef %69, ptr noundef %6, i64 noundef %25, i64 noundef %27) - to label %145 unwind label %71 + to label %144 unwind label %71 71: ; preds = %.critedge %72 = landingpad { ptr, i32 } @@ -10155,7 +10155,7 @@ _ZNK11OpenImageIO6v3_1_09ImageSpec13channelformatEi.exit.lr.ph: ; preds = %.preh ._crit_edge: ; preds = %.loopexit, %.preheader %73 = load ptr, ptr %14, align 8, !tbaa !138 %74 = invoke i32 @exr_decoding_choose_default_routines(ptr noundef %73, i32 noundef %1, ptr noundef nonnull %11) - to label %128 unwind label %135 + to label %127 unwind label %135 _ZNK11OpenImageIO6v3_1_09ImageSpec13channelformatEi.exit: ; preds = %_ZNK11OpenImageIO6v3_1_09ImageSpec13channelformatEi.exit.lr.ph, %.loopexit %indvars.iv153 = phi i64 [ 0, %_ZNK11OpenImageIO6v3_1_09ImageSpec13channelformatEi.exit.lr.ph ], [ %indvars.iv.next154, %.loopexit ] @@ -10228,7 +10228,7 @@ _ZNK11OpenImageIO6v3_1_09ImageSpec12channel_nameEi.exit.thread: ; preds = %_ZNK1 br label %.lr.ph.split.us .lr.ph.split.us: ; preds = %.lr.ph.split.us.preheader, %115 - %indvars.iv148 = phi i64 [ 0, %.lr.ph.split.us.preheader ], [ %indvars.iv.next149, %115 ] + %indvars.iv148 = phi i64 [ 0, %.lr.ph.split.us.preheader ], [ %indvars.iv.next149, %114 ] %112 = getelementptr inbounds nuw %struct.exr_coding_channel_info_t, ptr %110, i64 %indvars.iv148 %113 = load ptr, ptr %112, align 8, !tbaa !344 %.not.i.us = icmp eq ptr %113, null @@ -10279,7 +10279,7 @@ _ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.threa br i1 %exitcond.not, label %.loopexit, label %.lr.ph.split, !llvm.loop !346 .loopexit: ; preds = %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.thread, %115, %_ZNK11OpenImageIO6v3_1_09ImageSpec12channel_nameEi.exit.thread, %_ZNK11OpenImageIO6v3_1_09ImageSpec12channel_nameEi.exit, %.thread - %.2100 = phi i64 [ %124, %.thread ], [ %.098140, %_ZNK11OpenImageIO6v3_1_09ImageSpec12channel_nameEi.exit ], [ %.098140, %_ZNK11OpenImageIO6v3_1_09ImageSpec12channel_nameEi.exit.thread ], [ %.098140, %115 ], [ %.098140, %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.thread ] + %.2100 = phi i64 [ %124, %.thread ], [ %.098140, %_ZNK11OpenImageIO6v3_1_09ImageSpec12channel_nameEi.exit ], [ %.098140, %_ZNK11OpenImageIO6v3_1_09ImageSpec12channel_nameEi.exit.thread ], [ %.098140, %114 ], [ %.098140, %_ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.thread ] %indvars.iv.next154 = add nuw nsw i64 %indvars.iv153, 1 %125 = load i32, ptr %23, align 4, !tbaa !303 %126 = sext i32 %125 to i64 @@ -10293,7 +10293,7 @@ _ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.threa 130: ; preds = %128 %131 = load ptr, ptr %14, align 8, !tbaa !138 %132 = invoke i32 @exr_decoding_run(ptr noundef %131, i32 noundef %1, ptr noundef nonnull %11) - to label %133 unwind label %135 + to label %132 unwind label %135 133: ; preds = %130 %134 = icmp eq i32 %132, 0 @@ -10313,7 +10313,7 @@ _ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.threa %.sroa.speculated = call i32 @llvm.smin.i32(i32 %139, i32 %140) %141 = load i32, ptr %23, align 4, !tbaa !303 %142 = invoke noundef zeroext i1 @_ZN11OpenImageIO6v3_1_016OpenEXRCoreInput18check_fill_missingEiiiiiiiiPvll(ptr noundef nonnull align 8 dereferenceable(280) %0, i32 noundef %3, i32 noundef %.sroa.speculated122, i32 noundef %4, i32 noundef %.sroa.speculated, i32 poison, i32 poison, i32 noundef 0, i32 noundef %141, ptr noundef %6, i64 noundef %25, i64 noundef %27) - to label %145 unwind label %143 + to label %144 unwind label %143 143: ; preds = %.critedge116 %144 = landingpad { ptr, i32 } @@ -10321,7 +10321,7 @@ _ZN11OpenImageIO6v3_1_017basic_string_viewIcSt11char_traitsIcEEC2EPKc.exit.threa br label %150 145: ; preds = %.critedge116, %.critedge, %133 - %.2 = phi i1 [ true, %133 ], [ %70, %.critedge ], [ %142, %.critedge116 ] + %.2 = phi i1 [ true, %132 ], [ %70, %.critedge ], [ %142, %.critedge116 ] %146 = invoke i32 @exr_decoding_destroy(ptr noundef %43, ptr noundef nonnull %11) to label %_ZN11OpenImageIO6v3_1_016OpenEXRCoreInput16DecoderDestroyerD2Ev.exit unwind label %147 @@ -10339,7 +10339,7 @@ _ZN11OpenImageIO6v3_1_016OpenEXRCoreInput16DecoderDestroyerD2Ev.exit: ; preds = br label %151 150: ; preds = %135, %143, %71, %63 - %.pn113 = phi { ptr, i32 } [ %72, %71 ], [ %64, %63 ], [ %144, %143 ], [ %136, %135 ] + %.pn113 = phi { ptr, i32 } [ %72, %71 ], [ %64, %63 ], [ %144, %142 ], [ %136, %134 ] call void @_ZN11OpenImageIO6v3_1_016OpenEXRCoreInput16DecoderDestroyerD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #29 call void @llvm.lifetime.end.p0(ptr nonnull %12) call void @llvm.lifetime.end.p0(ptr nonnull %11) @@ -10355,7 +10355,7 @@ _ZN11OpenImageIO6v3_1_016OpenEXRCoreInput16DecoderDestroyerD2Ev.exit: ; preds = br label %152 152: ; preds = %151, %16 - %.0 = phi i1 [ %.1, %151 ], [ false, %16 ] + %.0 = phi i1 [ %.1, %150 ], [ false, %16 ] ret i1 %.0 } @@ -43083,9 +43083,9 @@ _ZNK11OpenImageIO6v3_1_09ImageSpec12channel_nameEi.exit.i.i.i: ; preds = %128, % br i1 %136, label %.lr.ph.i.i.i, label %.loopexit.i.i.i .lr.ph.i.i.i: ; preds = %_ZNK11OpenImageIO6v3_1_09ImageSpec12channel_nameEi.exit.i.i.i - %wide.trip.count111.i.i.i = zext nneg i16 %135 to i64 %137 = load ptr, ptr %5, align 8, !tbaa !343 %138 = icmp eq i64 %.sroa.5.0.i.i.i, 0 + %wide.trip.count111.i.i.i = zext nneg i16 %135 to i64 br i1 %138, label %.lr.ph.split.us.i.i.i, label %.lr.ph.split.i.i.i .lr.ph.split.us.i.i.i: ; preds = %.lr.ph.i.i.i, %142 @@ -43471,9 +43471,9 @@ _ZNK11OpenImageIO6v3_1_09ImageSpec12channel_nameEi.exit.i.i.i: ; preds = %116, % br i1 %124, label %.lr.ph.i.i.i, label %.loopexit.i.i.i .lr.ph.i.i.i: ; preds = %_ZNK11OpenImageIO6v3_1_09ImageSpec12channel_nameEi.exit.i.i.i - %wide.trip.count66.i.i.i = zext nneg i16 %123 to i64 %125 = load ptr, ptr %5, align 8, !tbaa !343 %126 = icmp eq i64 %.sroa.5.0.i.i.i, 0 + %wide.trip.count66.i.i.i = zext nneg i16 %123 to i64 br i1 %126, label %.lr.ph.split.us.i.i.i, label %.lr.ph.split.i.i.i .lr.ph.split.us.i.i.i: ; preds = %.lr.ph.i.i.i, %130 @@ -44535,9 +44535,9 @@ _ZNK11OpenImageIO6v3_1_09ImageSpec12channel_nameEi.exit: ; preds = %102, %105, % br i1 %122, label %.lr.ph, label %.loopexit .lr.ph: ; preds = %_ZNK11OpenImageIO6v3_1_09ImageSpec12channel_nameEi.exit - %wide.trip.count161 = zext nneg i16 %121 to i64 %123 = load ptr, ptr %0, align 8, !tbaa !343 %124 = icmp eq i64 %.sroa.5.0, 0 + %wide.trip.count161 = zext nneg i16 %121 to i64 br i1 %124, label %.lr.ph.split.us, label %.lr.ph.split .lr.ph.split.us: ; preds = %.lr.ph, %128 diff --git a/bench/openjdk/optimized/check_classname.ll b/bench/openjdk/optimized/check_classname.ll index d8a9114dc8f..3b0066fa7d4 100644 --- a/bench/openjdk/optimized/check_classname.ll +++ b/bench/openjdk/optimized/check_classname.ll @@ -17,20 +17,21 @@ define hidden zeroext range(i8 0, 2) i8 @verifyClassname(ptr noundef %0, i8 noun 8: ; preds = %5 %.not15 = icmp eq i8 %1, 0 - br i1 %.not15, label %39, label %9 - -9: ; preds = %8 - %10 = add i32 %4, -1 - %umin.i = tail call i32 @llvm.umin.i32(i32 %10, i32 255) - br label %11 - -11: ; preds = %27, %9 - %.01531.i = phi i32 [ 0, %9 ], [ %28, %27 ] - %.01630.i = phi i32 [ %4, %9 ], [ %30, %27 ] - %.01829.i = phi ptr [ %0, %9 ], [ %29, %27 ] - %12 = load i8, ptr %.01829.i, align 1 - switch i8 %12, label %skip_over_field_signature.exit [ - i8 91, label %27 + br i1 %.not15, label %39, label %.preheader + +9: ; preds = %27 + %9 = getelementptr inbounds nuw i8, ptr %.01829.i, i64 1 + %10 = add nuw nsw i32 %.01531.i, 1 + %.pr = load i8, ptr %9, align 1 + br label %.preheader + +.preheader:; preds = %8, %9 + %.01630.i = phi i8 [ %.pr, %thread-pre-split ], [ 91, %8 ] + %.01829.i = phi i32 [ %10, %thread-pre-split ], [ 0, %8 ] + %.01630.i = phi i32 [ %28, %thread-pre-split ], [ %4, %8 ] + %.01829.i = phi ptr [ %9, %thread-pre-split ], [ %0, %8 ] + switch i8 %11, label %skip_over_field_signature.exit [ + i8 91, label %26 i8 90, label %13 i8 66, label %13 i8 67, label %13 @@ -38,15 +39,15 @@ define hidden zeroext range(i8 0, 2) i8 @verifyClassname(ptr noundef %0, i8 noun i8 73, label %13 i8 70, label %13 i8 74, label %13 - i8 68, label %13 - i8 76, label %15 + i8 68, label %12 + i8 76, label %14 ] -13: ; preds = %11, %11, %11, %11, %11, %11, %11, %11 +13: ; preds = %.preheader, %.preheader, %.preheader, %.preheader, %.preheader, %.preheader, %.preheader, %.preheader %14 = getelementptr inbounds nuw i8, ptr %.01829.i, i64 1 br label %skip_over_field_signature.exit -15: ; preds = %11 +15: ; preds = %.preheader %16 = getelementptr inbounds nuw i8, ptr %.01829.i, i64 1 %17 = add i32 %.01630.i, -1 %18 = tail call fastcc ptr @skip_over_fieldname(ptr noundef nonnull %16, i32 noundef %17) @@ -65,19 +66,21 @@ define hidden zeroext range(i8 0, 2) i8 @verifyClassname(ptr noundef %0, i8 noun %spec.select.i = select i1 %25, ptr %26, ptr null br label %skip_over_field_signature.exit -27: ; preds = %11 - %28 = add nuw nsw i32 %.01531.i, 1 - %29 = getelementptr inbounds nuw i8, ptr %.01829.i, i64 1 - %30 = add i32 %.01630.i, -1 - %exitcond.i = icmp eq i32 %.01531.i, %umin.i - br i1 %exitcond.i, label %skip_over_field_signature.exit, label %11, !llvm.loop !6 +27: ; preds = %.preheader + %exitcond.i = icmp eq i32 %.01531.i, 255 + br i1 %exitcond.i, label %skip_over_field_signature.exit, label %27 + +27:; preds = %26 + %28 = add i32 %.01630.i, -1 + %.not.i = icmp eq i32 %28, 0 + br i1 %.not.i, label %skip_over_field_signature.exit, label %thread-pre-split, !llvm.loop !6 31: ; preds = %5, %2 %32 = tail call fastcc ptr @skip_over_fieldname(ptr noundef nonnull %0, i32 noundef %4) br label %skip_over_field_signature.exit -skip_over_field_signature.exit: ; preds = %27, %11, %23, %15, %13, %31 - %.0 = phi ptr [ %32, %31 ], [ %14, %13 ], [ null, %15 ], [ %spec.select.i, %23 ], [ null, %11 ], [ null, %27 ] +skip_over_field_signature.exit: ; preds = %27, %26, %.preheader, %23, %15, %13, %31 + %.0 = phi ptr [ %32, %29 ], [ %14, %12 ], [ null, %14 ], [ %spec.select.i, %22 ], [ null, %.preheader ], [ null, %26 ], [ null, %27 ] %.not16 = icmp ne ptr %.0, null %33 = ptrtoint ptr %.0 to i64 %34 = ptrtoint ptr %0 to i64 @@ -382,15 +385,11 @@ next_utf2unicode.exit: ; preds = %3, %13, %5, %9 ret void } -; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umin.i32(i32, i32) #4 - attributes #0 = { nofree norecurse nounwind memory(read, inaccessiblemem: none, target_mem0: none, target_mem1: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: read) "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 = { nofree norecurse nosync nounwind memory(argmem: read) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #3 = { nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #4 = { nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) } -attributes #5 = { nounwind willreturn memory(read) } +attributes #4 = { nounwind willreturn memory(read) } !llvm.module.flags = !{!0, !1, !2, !3, !4, !5} diff --git a/bench/openjdk/optimized/hb-blob.ll b/bench/openjdk/optimized/hb-blob.ll index 52acf62845c..95e35c8da0a 100644 --- a/bench/openjdk/optimized/hb-blob.ll +++ b/bench/openjdk/optimized/hb-blob.ll @@ -807,23 +807,23 @@ define hidden noalias noundef ptr @hb_blob_create_from_file_or_fail(ptr noundef br i1 %9, label %10, label %15 10: ; preds = %7 - %11 = shl i64 %.030, 1 - %12 = icmp ugt i64 %11, 536870912 - br i1 %12, label %36, label %13 + %11 = icmp samesign ugt i64 %.030, 268435456 + br i1 %11, label %36, label %12 13: ; preds = %10 - %14 = tail call ptr @realloc(ptr noundef %.132, i64 noundef %11) #24 + %13 = shl nuw nsw i64 %.030, 1 + %14 = tail call ptr @realloc(ptr noundef %.132, i64 noundef %13) #24 %.not39 = icmp eq ptr %14, null br i1 %.not39, label %36, label %._crit_edge ._crit_edge: ; preds = %13 - %.pre = sub i64 %11, %.029.ph + %.pre = sub i64 %13, %.029.ph br label %15 15: ; preds = %._crit_edge, %7 %.pre-phi = phi i64 [ %.pre, %._crit_edge ], [ %8, %7 ] %.2 = phi ptr [ %14, %._crit_edge ], [ %.132, %7 ] - %.1 = phi i64 [ %11, %._crit_edge ], [ %.030, %7 ] + %.1 = phi i64 [ %13, %._crit_edge ], [ %.030, %7 ] %16 = getelementptr inbounds i8, ptr %.2, i64 %.029.ph %17 = tail call i64 @fread(ptr noundef %16, i64 noundef 1, i64 noundef %.pre-phi, ptr noundef nonnull %4) %18 = tail call i32 @ferror(ptr noundef nonnull %4) #21 @@ -871,7 +871,7 @@ _ZL16hb_object_createI9hb_blob_tJEEPT_DpT0_.exit.thread.i: ; preds = %25, %21 br label %hb_blob_create_or_fail.exit 36: ; preds = %15, %13, %10 - %.3 = phi ptr [ %.132, %10 ], [ %.132, %13 ], [ %.2, %15 ] + %.3 = phi ptr [ %.132, %10 ], [ %.132, %12 ], [ %.2, %15 ] %37 = tail call i32 @fclose(ptr noundef nonnull %4) br label %38 diff --git a/bench/openjdk/optimized/hb-ot-layout.ll b/bench/openjdk/optimized/hb-ot-layout.ll index 3796a435bd8..be8ca3c4734 100644 --- a/bench/openjdk/optimized/hb-ot-layout.ll +++ b/bench/openjdk/optimized/hb-ot-layout.ll @@ -40466,7 +40466,7 @@ _ZNK13hb_bit_page_t7get_maxEv.exit.thread.loopexit37: ; preds = %_ZNK13hb_bit_pa br label %_ZNK13hb_bit_page_t7get_maxEv.exit.thread _ZNK13hb_bit_page_t7get_maxEv.exit.thread: ; preds = %120, %_ZNK13hb_bit_page_t7get_maxEv.exit.thread.loopexit37 - %.06.i35 = phi i32 [ %129, %_ZNK13hb_bit_page_t7get_maxEv.exit.thread.loopexit37 ], [ 0, %120 ] + %.06.i35 = phi i32 [ %129, %_ZNK13hb_bit_page_t7get_maxEv.exit.thread.loopexit36 ], [ 0, %120 ] %130 = load i32, ptr %115, align 4 %131 = shl i32 %130, 9 %132 = add i32 %131, %.06.i35 diff --git a/bench/openssl/optimized/tls13encryptiontest.ll b/bench/openssl/optimized/tls13encryptiontest.ll index 3dc0fb65196..ecfa715a780 100644 --- a/bench/openssl/optimized/tls13encryptiontest.ll +++ b/bench/openssl/optimized/tls13encryptiontest.ll @@ -323,25 +323,25 @@ declare ptr @OPENSSL_hexstr2buf(ptr noundef, ptr noundef) local_unnamed_addr #1 ; Function Attrs: nounwind uwtable define internal fastcc ptr @multihexstr2buf(ptr noundef readonly captures(none) %0, ptr noundef nonnull writeonly captures(none) %1) unnamed_addr #0 { - br label %5 - -3: ; preds = %5 - %4 = add nuw nsw i64 %.03353, 1 - %exitcond.not = icmp eq i64 %4, 3 - br i1 %exitcond.not, label %11, label %5, !llvm.loop !41 - -5: ; preds = %2, %3 - %.03353 = phi i64 [ 0, %2 ], [ %4, %3 ] - %.03652 = phi i64 [ 0, %2 ], [ %9, %3 ] - %6 = getelementptr inbounds nuw ptr, ptr %0, i64 %.03353 - %7 = load ptr, ptr %6, align 8, !tbaa !42 - %8 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %7) #6 - %9 = add i64 %8, %.03652 - %10 = and i64 %9, 1 - %.not46 = icmp eq i64 %10, 0 - br i1 %.not46, label %3, label %.loopexit - -11: ; preds = %3 + br label %3 + +3: ; preds = %2, %8 + %.03353 = phi i64 [ 0, %2 ], [ %10, %8 ] + %.03652 = phi i64 [ 0, %2 ], [ %9, %8 ] + %4 = getelementptr inbounds nuw ptr, ptr %0, i64 %.03353 + %5 = load ptr, ptr %4, align 8, !tbaa !41 + %6 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %5) #6 + %7 = and i64 %6, 1 + %.not46 = icmp eq i64 %7, 0 + br i1 %.not46, label %8, label %.loopexit + +8:; preds = %3 + %9 = add i64 %6, %.03652 + %10 = add nuw nsw i64 %.03353, 1 + %.not46 = icmp eq i64 %10, 3 + br i1 %.not46, label %11, label %3, !llvm.loop !42 + +11: ; preds = %8 %12 = lshr exact i64 %9, 1 %13 = tail call noalias ptr @CRYPTO_malloc(i64 noundef %12, ptr noundef nonnull @.str.1, i32 noundef 218) #5 %14 = icmp eq ptr %13, null @@ -351,7 +351,7 @@ define internal fastcc ptr @multihexstr2buf(ptr noundef readonly captures(none) %.13458 = phi i64 [ %38, %._crit_edge ], [ 0, %11 ] %.03857 = phi i64 [ %.139.lcssa, %._crit_edge ], [ 0, %11 ] %15 = getelementptr inbounds nuw ptr, ptr %0, i64 %.13458 - %16 = load ptr, ptr %15, align 8, !tbaa !42 + %16 = load ptr, ptr %15, align 8, !tbaa !41 %17 = load i8, ptr %16, align 1, !tbaa !43 %.not54 = icmp eq i8 %17, 0 br i1 %.not54, label %._crit_edge, label %.lr.ph @@ -361,7 +361,7 @@ define internal fastcc ptr @multihexstr2buf(ptr noundef readonly captures(none) %.03756 = phi i64 [ %34, %28 ], [ 0, %.preheader ] %.13955 = phi i64 [ %32, %28 ], [ %.03857, %.preheader ] %19 = tail call i32 @OPENSSL_hexchar2int(i8 noundef zeroext %18) #5 - %20 = load ptr, ptr %15, align 8, !tbaa !42 + %20 = load ptr, ptr %15, align 8, !tbaa !41 %21 = getelementptr inbounds nuw i8, ptr %20, i64 %.03756 %22 = getelementptr inbounds nuw i8, ptr %21, i64 1 %23 = load i8, ptr %22, align 1, !tbaa !43 @@ -383,7 +383,7 @@ define internal fastcc ptr @multihexstr2buf(ptr noundef readonly captures(none) %33 = getelementptr inbounds nuw i8, ptr %13, i64 %.13955 store i8 %31, ptr %33, align 1, !tbaa !43 %34 = add i64 %.03756, 2 - %35 = load ptr, ptr %15, align 8, !tbaa !42 + %35 = load ptr, ptr %15, align 8, !tbaa !41 %36 = getelementptr inbounds nuw i8, ptr %35, i64 %34 %37 = load i8, ptr %36, align 1, !tbaa !43 %.not = icmp eq i8 %37, 0 @@ -399,8 +399,8 @@ define internal fastcc ptr @multihexstr2buf(ptr noundef readonly captures(none) store i64 %12, ptr %1, align 8, !tbaa !21 br label %.loopexit -.loopexit: ; preds = %5, %27, %11, %39 - %.0 = phi ptr [ null, %27 ], [ %13, %39 ], [ null, %11 ], [ null, %5 ] +.loopexit: ; preds = %3, %27, %11, %39 + %.0 = phi ptr [ null, %27 ], [ %13, %39 ], [ null, %11 ], [ null, %3 ] ret ptr %.0 } @@ -472,8 +472,8 @@ attributes #6 = { nounwind willreturn memory(read) } !38 = !{!"record_functions_st", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !6, i64 136} !39 = distinct !{!39, !40} !40 = !{!"llvm.loop.mustprogress"} -!41 = distinct !{!41, !40} -!42 = !{!13, !13, i64 0} +!41 = !{!13, !13, i64 0} +!42 = distinct !{!42, !40} !43 = !{!7, !7, i64 0} !44 = distinct !{!44, !40} !45 = distinct !{!45, !40} diff --git a/bench/openusd/optimized/faceVertex.ll b/bench/openusd/optimized/faceVertex.ll index 7d2e39d52a6..28d706018e4 100644 --- a/bench/openusd/optimized/faceVertex.ll +++ b/bench/openusd/optimized/faceVertex.ll @@ -1535,8 +1535,8 @@ _ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex20GetFaceIndexAtCornerEPKi.exit.thread: ; br i1 %69, label %_ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex20GetFaceIndexAtCornerEiPKi.exit.preheader, label %.loopexit _ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex20GetFaceIndexAtCornerEiPKi.exit.preheader: ; preds = %_ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex20GetFaceIndexAtCornerEPKi.exit.thread - %wide.trip.count = zext nneg i16 %68 to i64 %70 = sext i16 %50 to i64 + %wide.trip.count = zext nneg i16 %68 to i64 br label %_ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex20GetFaceIndexAtCornerEiPKi.exit _ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex20GetFaceIndexAtCornerEiPKi.exit.us.preheader: ; preds = %_ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex20GetFaceIndexAtCornerEPKi.exit @@ -2274,10 +2274,10 @@ define noundef i32 @_ZNK10OpenSubdiv6v3_6_03Bfr10FaceVertex20createUnOrderedEdge .lr.ph65: ; preds = %22 %29 = shl nuw i16 %13, 1 - %wide.trip.count71 = zext i16 %29 to i64 %30 = getelementptr inbounds nuw i8, ptr %0, i64 96 %31 = getelementptr inbounds nuw i8, ptr %0, i64 8 %32 = load float, ptr @_ZN10OpenSubdiv6v3_6_03Sdc6Crease18SHARPNESS_INFINITEE, align 4 + %wide.trip.count71 = zext i16 %29 to i64 br label %33 33: ; preds = %.lr.ph65, %_ZN10OpenSubdiv6v3_6_03Bfr10FaceVertex4Edge7AddFaceEib.exit @@ -2750,8 +2750,8 @@ define void @_ZN10OpenSubdiv6v3_6_03Bfr10FaceVertex28assignUnOrderedFaceNeighbor .lr.ph: ; preds = %3 %7 = shl nuw i16 %5, 1 - %wide.trip.count = zext i16 %7 to i64 %8 = getelementptr inbounds nuw i8, ptr %0, i64 168 + %wide.trip.count = zext i16 %7 to i64 br label %9 9: ; preds = %.lr.ph, %20 diff --git a/bench/pola-rs/optimized/cztbx1zaxsgh33rhqav0blwq7.ll b/bench/pola-rs/optimized/cztbx1zaxsgh33rhqav0blwq7.ll index 7ea242da814..2883f34dd5f 100644 --- a/bench/pola-rs/optimized/cztbx1zaxsgh33rhqav0blwq7.ll +++ b/bench/pola-rs/optimized/cztbx1zaxsgh33rhqav0blwq7.ll @@ -4722,7 +4722,7 @@ define internal fastcc noundef zeroext i1 @"_ZN137_$LT$brotli..enc..backward_ref 44: ; preds = %.lr.ph.split.us %45 = icmp ult i64 %42, %34 - %46 = add nuw i64 %42, 1 + %46 = add nuw nsw i64 %42, 1 br i1 %45, label %.lr.ph.split.us, label %.outer._crit_edge .lr.ph.split: ; preds = %.lr.ph @@ -4764,7 +4764,7 @@ define internal fastcc noundef zeroext i1 @"_ZN137_$LT$brotli..enc..backward_ref 67: ; preds = %63, %57, %50 %68 = icmp ult i64 %48, %34 - %69 = add nuw i64 %48, 1 + %69 = add nuw nsw i64 %48, 1 br i1 %68, label %.lr.ph.split.split.us, label %.outer._crit_edge .split121.us: ; preds = %63 @@ -5148,7 +5148,7 @@ _ZN6brotli3enc19backward_references24SearchInStaticDictionary17h9456782672c51bbb %.sroa.019.3 = phi i64 [ %.sroa.015.0, %250 ], [ %.sroa.019.0.ph164, %242 ], [ %.sroa.019.0.ph164, %234 ], [ %.sroa.019.0.ph164, %231 ] %.sroa.06.5 = phi i1 [ true, %250 ], [ %.sroa.06.0.ph165, %242 ], [ %.sroa.06.0.ph165, %234 ], [ %.sroa.06.0.ph165, %231 ] %238 = icmp ult i64 %48, %34 - %239 = add nuw i64 %48, 1 + %239 = add nuw nsw i64 %48, 1 br i1 %238, label %.lr.ph, label %.outer._crit_edge 240: ; preds = %234 @@ -5176,7 +5176,7 @@ _ZN6brotli3enc19backward_references24SearchInStaticDictionary17h9456782672c51bbb 251: ; preds = %216, %209 %252 = icmp ult i64 %70, %34 - %253 = add nuw i64 %70, 1 + %253 = add nuw nsw i64 %70, 1 br i1 %252, label %.lr.ph.split.split, label %.outer._crit_edge } @@ -5245,7 +5245,7 @@ define internal fastcc noundef zeroext i1 @"_ZN137_$LT$brotli..enc..backward_ref 43: ; preds = %.lr.ph.split.us %44 = icmp ult i64 %41, %33 - %45 = add nuw i64 %41, 1 + %45 = add nuw nsw i64 %41, 1 br i1 %44, label %.lr.ph.split.us, label %.outer._crit_edge .lr.ph.split: ; preds = %.lr.ph @@ -5287,7 +5287,7 @@ define internal fastcc noundef zeroext i1 @"_ZN137_$LT$brotli..enc..backward_ref 66: ; preds = %62, %56, %49 %67 = icmp ult i64 %47, %33 - %68 = add nuw i64 %47, 1 + %68 = add nuw nsw i64 %47, 1 br i1 %67, label %.lr.ph.split.split.us, label %.outer._crit_edge .split129.us: ; preds = %62 @@ -5707,7 +5707,7 @@ _ZN6brotli3enc19backward_references24SearchInStaticDictionary17hf23f2f33b224d140 %.sroa.019.3 = phi i64 [ %.sroa.015.0, %267 ], [ %.sroa.019.0.ph172, %259 ], [ %.sroa.019.0.ph172, %251 ], [ %.sroa.019.0.ph172, %248 ] %.sroa.06.5 = phi i1 [ true, %267 ], [ %.sroa.06.0.ph173, %259 ], [ %.sroa.06.0.ph173, %251 ], [ %.sroa.06.0.ph173, %248 ] %255 = icmp ult i64 %47, %33 - %256 = add nuw i64 %47, 1 + %256 = add nuw nsw i64 %47, 1 br i1 %255, label %.lr.ph, label %.outer._crit_edge 257: ; preds = %251 @@ -5735,7 +5735,7 @@ _ZN6brotli3enc19backward_references24SearchInStaticDictionary17hf23f2f33b224d140 268: ; preds = %233, %226 %269 = icmp ult i64 %69, %33 - %270 = add nuw i64 %69, 1 + %270 = add nuw nsw i64 %69, 1 br i1 %269, label %.lr.ph.split.split, label %.outer._crit_edge } @@ -5805,7 +5805,7 @@ define internal fastcc noundef zeroext i1 @"_ZN137_$LT$brotli..enc..backward_ref 44: ; preds = %.lr.ph.split.us %45 = icmp ult i64 %42, %34 - %46 = add nuw i64 %42, 1 + %46 = add nuw nsw i64 %42, 1 br i1 %45, label %.lr.ph.split.us, label %.outer._crit_edge .lr.ph.split: ; preds = %.lr.ph @@ -5847,7 +5847,7 @@ define internal fastcc noundef zeroext i1 @"_ZN137_$LT$brotli..enc..backward_ref 67: ; preds = %63, %57, %50 %68 = icmp ult i64 %48, %34 - %69 = add nuw i64 %48, 1 + %69 = add nuw nsw i64 %48, 1 br i1 %68, label %.lr.ph.split.split.us, label %.outer._crit_edge .split129.us: ; preds = %63 @@ -6283,7 +6283,7 @@ _ZN6brotli3enc19backward_references24SearchInStaticDictionary17h3d68b55b5fabe7ec %.sroa.019.3 = phi i64 [ %.sroa.015.0, %276 ], [ %.sroa.019.0.ph172, %268 ], [ %.sroa.019.0.ph172, %260 ], [ %.sroa.019.0.ph172, %257 ] %.sroa.06.5 = phi i1 [ true, %276 ], [ %.sroa.06.0.ph173, %268 ], [ %.sroa.06.0.ph173, %260 ], [ %.sroa.06.0.ph173, %257 ] %264 = icmp ult i64 %48, %34 - %265 = add nuw i64 %48, 1 + %265 = add nuw nsw i64 %48, 1 br i1 %264, label %.lr.ph, label %.outer._crit_edge 266: ; preds = %260 @@ -6311,7 +6311,7 @@ _ZN6brotli3enc19backward_references24SearchInStaticDictionary17h3d68b55b5fabe7ec 277: ; preds = %242, %235 %278 = icmp ult i64 %70, %34 - %279 = add nuw i64 %70, 1 + %279 = add nuw nsw i64 %70, 1 br i1 %278, label %.lr.ph.split.split, label %.outer._crit_edge } @@ -6381,7 +6381,7 @@ define internal fastcc noundef zeroext i1 @"_ZN137_$LT$brotli..enc..backward_ref 44: ; preds = %.lr.ph.split.us %45 = icmp ult i64 %42, %34 - %46 = add nuw i64 %42, 1 + %46 = add nuw nsw i64 %42, 1 br i1 %45, label %.lr.ph.split.us, label %.outer._crit_edge .lr.ph.split: ; preds = %.lr.ph @@ -6423,7 +6423,7 @@ define internal fastcc noundef zeroext i1 @"_ZN137_$LT$brotli..enc..backward_ref 67: ; preds = %63, %57, %50 %68 = icmp ult i64 %48, %34 - %69 = add nuw i64 %48, 1 + %69 = add nuw nsw i64 %48, 1 br i1 %68, label %.lr.ph.split.split.us, label %.outer._crit_edge .split121.us: ; preds = %63 @@ -6807,7 +6807,7 @@ _ZN6brotli3enc19backward_references24SearchInStaticDictionary17hc6004f41a3b2239b %.sroa.019.3 = phi i64 [ %.sroa.015.0, %250 ], [ %.sroa.019.0.ph164, %242 ], [ %.sroa.019.0.ph164, %234 ], [ %.sroa.019.0.ph164, %231 ] %.sroa.06.5 = phi i1 [ true, %250 ], [ %.sroa.06.0.ph165, %242 ], [ %.sroa.06.0.ph165, %234 ], [ %.sroa.06.0.ph165, %231 ] %238 = icmp ult i64 %48, %34 - %239 = add nuw i64 %48, 1 + %239 = add nuw nsw i64 %48, 1 br i1 %238, label %.lr.ph, label %.outer._crit_edge 240: ; preds = %234 @@ -6835,7 +6835,7 @@ _ZN6brotli3enc19backward_references24SearchInStaticDictionary17hc6004f41a3b2239b 251: ; preds = %216, %209 %252 = icmp ult i64 %70, %34 - %253 = add nuw i64 %70, 1 + %253 = add nuw nsw i64 %70, 1 br i1 %252, label %.lr.ph.split.split, label %.outer._crit_edge } @@ -21690,7 +21690,7 @@ _ZN6brotli3enc7cluster30BrotliHistogramBitCostDistance17h5627fedb8b598f9bE.exit2 store i32 1, ptr %708, align 4, !noalias !1167 %709 = icmp samesign ult i64 %.sroa.0128.1769.i.i, %.sroa.0.0.sroa.speculated.i361.i.i %710 = zext i1 %709 to i64 - %.sroa.0128.1.i.i = add nuw i64 %.sroa.0128.1769.i.i, %710 + %.sroa.0128.1.i.i = add nuw nsw i64 %.sroa.0128.1769.i.i, %710 br i1 %709, label %.lr.ph770.i.i, label %._crit_edge771.i.i .lr.ph.i112.i: ; preds = %719, %.lr.ph.preheader.i.i @@ -24246,7 +24246,7 @@ _ZN6brotli3enc7cluster30BrotliHistogramBitCostDistance17hce70b9dbdc8b1214E.exit2 store i32 1, ptr %1608, align 4, !noalias !1355 %1609 = icmp samesign ult i64 %.sroa.0128.1769.i.i317, %.sroa.0.0.sroa.speculated.i361.i.i315 %1610 = zext i1 %1609 to i64 - %.sroa.0128.1.i.i333 = add nuw i64 %.sroa.0128.1769.i.i317, %1610 + %.sroa.0128.1.i.i333 = add nuw nsw i64 %.sroa.0128.1769.i.i317, %1610 br i1 %1609, label %.lr.ph770.i.i316, label %._crit_edge771.i.i334 .lr.ph.i112.i322: ; preds = %1619, %.lr.ph.preheader.i.i321 @@ -26798,7 +26798,7 @@ _ZN6brotli3enc7cluster30BrotliHistogramBitCostDistance17he69cc7e364323581E.exit2 store i32 1, ptr %2506, align 4, !noalias !1543 %2507 = icmp samesign ult i64 %.sroa.0128.1769.i.i821, %.sroa.0.0.sroa.speculated.i361.i.i819 %2508 = zext i1 %2507 to i64 - %.sroa.0128.1.i.i843 = add nuw i64 %.sroa.0128.1769.i.i821, %2508 + %.sroa.0128.1.i.i843 = add nuw nsw i64 %.sroa.0128.1769.i.i821, %2508 br i1 %2507, label %.lr.ph770.i.i820, label %._crit_edge771.i.i844 .lr.ph.i112.i828: ; preds = %2517, %.lr.ph.preheader.i.i827 @@ -28525,7 +28525,7 @@ default.unreachable: ; preds = %.thread288 br i1 %.not256, label %335, label %332 332: ; preds = %329 - %333 = add i64 %.sroa.0.0.sroa.speculated.i265, %.sroa.0162.0 + %333 = add nuw nsw i64 %.sroa.0.0.sroa.speculated.i265, %.sroa.0162.0 %334 = icmp ult i64 %333, 1048577 br i1 %334, label %337, label %335 diff --git a/bench/pola-rs/optimized/etaacdu7pg0nazmqnydgyjsn2.ll b/bench/pola-rs/optimized/etaacdu7pg0nazmqnydgyjsn2.ll index 03bede9a30a..c29a538aad2 100644 --- a/bench/pola-rs/optimized/etaacdu7pg0nazmqnydgyjsn2.ll +++ b/bench/pola-rs/optimized/etaacdu7pg0nazmqnydgyjsn2.ll @@ -324949,7 +324949,7 @@ define hidden void @_ZN10polars_ops5frame4join12merge_sorted19get_merge_indicato br label %.loopexit.split-lp .loopexit.split-lp.loopexit.split-lp: ; preds = %.invoke147, %140, %124, %189, %151, %144, %94 - %.sroa.01.1.ph.ph = phi i1 [ true, %189 ], [ false, %151 ], [ false, %144 ], [ true, %94 ], [ true, %124 ], [ true, %140 ], [ true, %.invoke147 ] + %.sroa.01.1.ph.ph = phi i1 [ true, %189 ], [ false, %151 ], [ false, %144 ], [ true, %94 ], [ true, %124 ], [ true, %140 ], [ true, %.invoke146 ] %lpad.loopexit.split-lp85 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp @@ -325050,7 +325050,7 @@ thread-pre-split: ; preds = %_ZN4core3cmp10Parti .invoke147: ; preds = %128, %99 %130 = phi ptr [ @anon.2aff9cfdcc4c4268cb269a2d031095d5.307, %99 ], [ @anon.2aff9cfdcc4c4268cb269a2d031095d5.309, %128 ] invoke void @_ZN4core6option13unwrap_failed17h4c7f35545a6d0c7eE(ptr noalias noundef readonly align 8 dereferenceable(24) %130) #25 - to label %.cont148 unwind label %.loopexit.split-lp.loopexit.split-lp + to label %.cont147 unwind label %.loopexit.split-lp.loopexit.split-lp .cont148: ; preds = %.invoke147 unreachable diff --git a/bench/postgres/optimized/fastpath.ll b/bench/postgres/optimized/fastpath.ll index 39cab73acdd..fec2b5036e5 100644 --- a/bench/postgres/optimized/fastpath.ll +++ b/bench/postgres/optimized/fastpath.ll @@ -411,9 +411,8 @@ parse_fcall_arguments.exit: ; preds = %186, %127 br i1 %or.cond, label %.lr.ph.preheader, label %.critedge .lr.ph.preheader: ; preds = %parse_fcall_arguments.exit - %sext79 = shl i32 %108, 16 - %192 = ashr exact i32 %sext79, 16 - %wide.trip.count = zext i32 %192 to i64 + %192 = and i32 %108, 32767 + %wide.trip.count = zext nneg i32 %192 to i64 br label %.lr.ph 193: ; preds = %.lr.ph diff --git a/bench/postgres/optimized/fe-exec.ll b/bench/postgres/optimized/fe-exec.ll index ba4ab89dfba..7be301acde2 100644 --- a/bench/postgres/optimized/fe-exec.ll +++ b/bench/postgres/optimized/fe-exec.ll @@ -246,7 +246,6 @@ define internal fastcc noalias noundef ptr @dupEvents(ptr noundef readonly captu br i1 %.not, label %32, label %.preheader44 .preheader44: ; preds = %5, %25 - %indvars.iv52 = phi i32 [ %indvars.iv.next53, %25 ], [ -1, %5 ] %indvars.iv = phi i64 [ %indvars.iv.next, %25 ], [ 0, %5 ] %.03747 = phi i64 [ %28, %25 ], [ %7, %5 ] %9 = getelementptr inbounds nuw %struct.PGEvent, ptr %0, i64 %indvars.iv @@ -273,19 +272,15 @@ define internal fastcc noalias noundef ptr @dupEvents(ptr noundef readonly captu %.not49 = icmp eq i64 %indvars.iv, 0 br i1 %.not49, label %._crit_edge, label %.lr.ph.preheader -.lr.ph.preheader: ; preds = %.preheader - %21 = zext i32 %indvars.iv52 to i64 - br label %.lr.ph - -.lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph - %indvars.iv55 = phi i64 [ %21, %.lr.ph.preheader ], [ %indvars.iv.next56, %.lr.ph ] - %22 = getelementptr inbounds nuw %struct.PGEvent, ptr %8, i64 %indvars.iv55 - %23 = getelementptr inbounds nuw i8, ptr %22, i64 8 - %24 = load ptr, ptr %23, align 8 - tail call void @free(ptr noundef %24) #28 - %indvars.iv.next56 = add nsw i64 %indvars.iv55, -1 - %.not61 = icmp eq i64 %indvars.iv55, 0 - br i1 %.not61, label %._crit_edge, label %.lr.ph, !llvm.loop !3 +.lr.ph.preheader: ; preds = %.preheader, %.lr.ph + %indvars.iv54 = phi i64 [ %indvars.iv.next55, %.lr.ph ], [ %indvars.iv, %.preheader ] + %indvars.iv.next55 = add nsw i64 %indvars.iv54, -1 + %21 = getelementptr inbounds nuw %struct.PGEvent, ptr %8, i64 %indvars.iv.next55 + %22 = getelementptr inbounds nuw i8, ptr %21, i64 8 + %23 = load ptr, ptr %22, align 8 + tail call void @free(ptr noundef %23) #28 + %24 = icmp sgt i64 %indvars.iv54, 1 + br i1 %24, label %.lr.ph, label %._crit_edge, !llvm.loop !3 ._crit_edge: ; preds = %.lr.ph, %.preheader tail call void @free(ptr noundef nonnull %8) #28 @@ -297,7 +292,6 @@ define internal fastcc noalias noundef ptr @dupEvents(ptr noundef readonly captu %28 = add i64 %27, %26 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %6 - %indvars.iv.next53 = add nsw i32 %indvars.iv52, 1 br i1 %exitcond.not, label %29, label %.preheader44, !llvm.loop !5 29: ; preds = %25 diff --git a/bench/postgres/optimized/pl_gram.ll b/bench/postgres/optimized/pl_gram.ll index e8191837724..4742103697b 100644 --- a/bench/postgres/optimized/pl_gram.ll +++ b/bench/postgres/optimized/pl_gram.ll @@ -5448,7 +5448,7 @@ NameOfDatum.exit: ; preds = %36, %38 %53 = trunc nuw nsw i64 %indvars.iv.next to i32 br label %.lr.ph72.preheader -.lr.ph72.preheader: ; preds = %6, %._crit_edge.loopexit +.lr.ph72.preheader: ; preds = %._crit_edge.loopexit, %6 %.0.lcssa = phi i32 [ 1, %6 ], [ %53, %._crit_edge.loopexit ] %.lcssa = phi i32 [ %11, %6 ], [ %46, %._crit_edge.loopexit ] tail call void @plpgsql_push_back_token(i32 noundef %.lcssa, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %5) #11 @@ -5472,27 +5472,25 @@ NameOfDatum.exit: ; preds = %36, %38 %65 = tail call ptr @palloc(i64 noundef %64) #11 %66 = getelementptr inbounds nuw i8, ptr %54, i64 56 store ptr %65, ptr %66, align 8 - %67 = add nsw i32 %.0.lcssa, -1 - %68 = zext nneg i32 %67 to i64 - br label %.lr.ph72 - -.lr.ph72: ; preds = %.lr.ph72.preheader, %.lr.ph72 - %indvars.iv77 = phi i64 [ %68, %.lr.ph72.preheader ], [ %indvars.iv.next78, %.lr.ph72 ] - %69 = getelementptr inbounds nuw ptr, ptr %7, i64 %indvars.iv77 - %70 = load ptr, ptr %69, align 8 - %71 = load ptr, ptr %63, align 8 - %72 = getelementptr inbounds nuw ptr, ptr %71, i64 %indvars.iv77 - store ptr %70, ptr %72, align 8 - %73 = getelementptr inbounds nuw i32, ptr %8, i64 %indvars.iv77 - %74 = load i32, ptr %73, align 4 - %75 = load ptr, ptr %66, align 8 - %76 = getelementptr inbounds nuw i32, ptr %75, i64 %indvars.iv77 - store i32 %74, ptr %76, align 4 - %indvars.iv.next78 = add nsw i64 %indvars.iv77, -1 - %.not = icmp eq i64 %indvars.iv77, 0 - br i1 %.not, label %._crit_edge73, label %.lr.ph72, !llvm.loop !17 - -._crit_edge73: ; preds = %.lr.ph72 + br label %67 + +67:; preds = %.lr.ph72.preheader, %67 + %indvars.iv75 = phi i64 [ %60, %._crit_edge ], [ %indvars.iv.next76, %67 ] + %indvars.iv.next76 = add nsw i64 %indvars.iv75, -1 + %68 = getelementptr inbounds nuw ptr, ptr %7, i64 %indvars.iv.next76 + %69 = load ptr, ptr %68, align 8 + %70 = load ptr, ptr %63, align 8 + %71 = getelementptr inbounds nuw ptr, ptr %70, i64 %indvars.iv.next76 + store ptr %69, ptr %71, align 8 + %72 = getelementptr inbounds nuw i32, ptr %8, i64 %indvars.iv.next76 + %73 = load i32, ptr %72, align 4 + %74 = load ptr, ptr %66, align 8 + %75 = getelementptr inbounds nuw i32, ptr %74, i64 %indvars.iv.next76 + store i32 %73, ptr %75, align 4 + %76 = icmp samesign ugt i64 %indvars.iv75, 1 + br i1 %76, label %67, label %77, !llvm.loop !17 + +77: ; preds = %67 tail call void @plpgsql_adddatum(ptr noundef nonnull %54) #11 call void @llvm.lifetime.end.p0(ptr nonnull %8) call void @llvm.lifetime.end.p0(ptr nonnull %7) diff --git a/bench/qemu/optimized/virtio-pci.ll b/bench/qemu/optimized/virtio-pci.ll index a07973eb35c..19f306ac1ab 100644 --- a/bench/qemu/optimized/virtio-pci.ll +++ b/bench/qemu/optimized/virtio-pci.ll @@ -1057,20 +1057,19 @@ kvm_virtio_pci_vector_vq_use.exit.thread: ; preds = %.lr.ph.i96, %.threa br i1 %2, label %.preheader, label %100 .preheader: ; preds = %.loopexit - %98 = add i32 %.081118, -1 - %99 = icmp sgt i32 %98, -1 - br i1 %99, label %.lr.ph123, label %._crit_edge124 + %98 = icmp sgt i32 %.081118, 0 + br i1 %98, label %.lr.ph124, label %._crit_edge125 100: ; preds = %.loopexit tail call void @__assert_fail(ptr noundef nonnull @.str.41, ptr noundef nonnull @.str.5, i32 noundef 1314, ptr noundef nonnull @__PRETTY_FUNCTION__.virtio_pci_set_guest_notifiers) #17 unreachable .lr.ph123: ; preds = %.preheader, %.lr.ph123 - %101 = phi i32 [ %103, %.lr.ph123 ], [ %98, %.preheader ] - %102 = tail call fastcc i32 @virtio_pci_set_guest_notifier(ptr noundef nonnull %0, i32 noundef %101, i1 noundef zeroext false, i1 noundef zeroext %15) - %103 = add nsw i32 %101, -1 - %.not144 = icmp eq i32 %101, 0 - br i1 %.not144, label %._crit_edge124, label %.lr.ph123, !llvm.loop !11 + %101 = phi i32 [ %100, %.lr.ph124 ], [ %.081118, %.preheader ] + %100 = add nsw i32 %101, -1 + %101 = tail call fastcc i32 @virtio_pci_set_guest_notifier(ptr noundef nonnull %0, i32 noundef %100, i1 noundef zeroext false, i1 noundef zeroext %15) + %.not144 = icmp samesign ugt i32 %101, 1 + br i1 %.not144, label %.lr.ph124, label %._crit_edge125, !llvm.loop !11 ._crit_edge124: ; preds = %.lr.ph123, %.preheader %104 = load ptr, ptr %49, align 16 @@ -1079,7 +1078,7 @@ kvm_virtio_pci_vector_vq_use.exit.thread: ; preds = %.lr.ph.i96, %.threa br label %105 105: ; preds = %.thread114, %.thread104, %60, %64, %68, %88, %18, %._crit_edge124 - %.0 = phi i32 [ %.080, %._crit_edge124 ], [ 0, %18 ], [ 0, %88 ], [ 0, %68 ], [ 0, %64 ], [ 0, %60 ], [ 0, %.thread104 ], [ 0, %.thread114 ] + %.0 = phi i32 [ %.080, %._crit_edge125 ], [ 0, %18 ], [ 0, %88 ], [ 0, %68 ], [ 0, %64 ], [ 0, %60 ], [ 0, %.thread104 ], [ 0, %.thread114 ] ret i32 %.0 } diff --git a/bench/qemu/optimized/virtio.ll b/bench/qemu/optimized/virtio.ll index e52af5e5099..1d04163f83d 100644 --- a/bench/qemu/optimized/virtio.ll +++ b/bench/qemu/optimized/virtio.ll @@ -10620,7 +10620,6 @@ define internal range(i32 -2147483648, 1) i32 @virtio_device_start_ioeventfd_imp br label %6 6: ; preds = %1, %16 - %indvars.iv65 = phi i32 [ -1, %1 ], [ %indvars.iv.next66, %16 ] %indvars.iv = phi i64 [ 0, %1 ], [ %indvars.iv.next, %16 ] %7 = load ptr, ptr %5, align 8 %8 = getelementptr inbounds nuw %struct.VirtQueue, ptr %7, i64 %indvars.iv @@ -10646,7 +10645,6 @@ define internal range(i32 -2147483648, 1) i32 @virtio_device_start_ioeventfd_imp 16: ; preds = %14, %6 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 1024 - %indvars.iv.next66 = add nsw i32 %indvars.iv65, 1 br i1 %exitcond.not, label %.preheader50, label %6, !llvm.loop !64 .preheader50: ; preds = %16, %23 @@ -10694,26 +10692,25 @@ define internal range(i32 -2147483648, 1) i32 @virtio_device_start_ioeventfd_imp ._crit_edge: ; preds = %33 tail call void @memory_region_transaction_commit() #24 - %35 = zext i32 %indvars.iv65 to i64 br label %.lr.ph56 .lr.ph56: ; preds = %._crit_edge, %.backedge - %indvars.iv68 = phi i64 [ %35, %._crit_edge ], [ %indvars.iv.next69, %.backedge ] - %36 = load ptr, ptr %5, align 8 - %37 = getelementptr inbounds nuw %struct.VirtQueue, ptr %36, i64 %indvars.iv68 - %38 = load i32, ptr %37, align 8 - %.not44 = icmp eq i32 %38, 0 - br i1 %.not44, label %.backedge, label %39 - -39: ; preds = %.lr.ph56 - %40 = trunc nuw nsw i64 %indvars.iv68 to i32 - tail call void @virtio_bus_cleanup_host_notifier(ptr noundef %4, i32 noundef %40) #24 + %indvars.iv68 = phi i64 [ %indvars.iv.next69, %.backedge ], [ %indvars.iv, %._crit_edge ] + %indvars.iv.next69 = add nsw i64 %indvars.iv68, -1 + %35 = load ptr, ptr %5, align 8 + %36 = getelementptr inbounds nuw %struct.VirtQueue, ptr %35, i64 %indvars.iv.next69 + %37 = load i32, ptr %36, align 8 + %.not44 = icmp eq i32 %37, 0 + br i1 %.not44, label %.backedge, label %38 + +38:; preds = %.lr.ph56 + %39 = trunc nuw nsw i64 %indvars.iv.next69 to i32 + tail call void @virtio_bus_cleanup_host_notifier(ptr noundef %4, i32 noundef %39) #24 br label %.backedge -.backedge: ; preds = %39, %.lr.ph56 - %indvars.iv.next69 = add nsw i64 %indvars.iv68, -1 - %41 = icmp sgt i64 %indvars.iv68, 0 - br i1 %41, label %.lr.ph56, label %.loopexit, !llvm.loop !67 +.backedge: ; preds = %38, %.lr.ph56 + %40 = icmp sgt i64 %indvars.iv68, 1 + br i1 %40, label %.lr.ph56, label %.loopexit, !llvm.loop !67 .loopexit.sink.split: ; preds = %23, %.preheader %.0.ph = phi i32 [ %12, %.preheader ], [ 0, %23 ] diff --git a/bench/ruby/optimized/dir.ll b/bench/ruby/optimized/dir.ll index b17c1ff0b65..91a6e3ba3de 100644 --- a/bench/ruby/optimized/dir.ll +++ b/bench/ruby/optimized/dir.ll @@ -3383,8 +3383,8 @@ do_opendir.exit: ; preds = %opendir_at.exit.i br label %244 237: ; preds = %231 - %238 = add i64 %.04015.i, 256 - %239 = icmp ugt i64 %238, 1152921504606846975 + %238 = add nuw nsw i64 %.04015.i, 256 + %239 = icmp ugt i64 %.04015.i, 1152921504606846719 br i1 %239, label %rb_mul_size_overflow.exit.i.i.i380, label %glob_realloc_n.exit.i rb_mul_size_overflow.exit.i.i.i380: ; preds = %237 @@ -3903,7 +3903,7 @@ glob_alloc_n.exit: ; preds = %387 br label %436 436: ; preds = %.sink.split673, %424, %430, %426 - %.3291 = phi ptr [ %.0288555, %424 ], [ %.0288555, %426 ], [ %.0288555, %430 ], [ %435, %.sink.split673 ] + %.3291 = phi ptr [ %.0288555, %424 ], [ %.0288555, %426 ], [ %.0288555, %430 ], [ %435, %.sink.split672 ] call void @llvm.lifetime.end.p0(ptr nonnull %25) %437 = getelementptr i8, ptr %.1280556, i64 8 %438 = icmp ult ptr %437, %7 diff --git a/bench/ruff-rs/optimized/0jxokf4xx9lz4dh6x5yfoh8sv.ll b/bench/ruff-rs/optimized/0jxokf4xx9lz4dh6x5yfoh8sv.ll index c3124903020..df92f01d2e5 100644 --- a/bench/ruff-rs/optimized/0jxokf4xx9lz4dh6x5yfoh8sv.ll +++ b/bench/ruff-rs/optimized/0jxokf4xx9lz4dh6x5yfoh8sv.ll @@ -18532,7 +18532,7 @@ define internal fastcc void @_ZN5salsa5table4memo21MemoTableWithTypesMut4drop17h br i1 %23, label %.preheader.i.i.i.i, label %27 24: ; preds = %.loopexit.i.i.i.i - %25 = add nuw nsw i64 %.sroa.4.1, 1 + %25 = add i64 %.sroa.4.1, 1 %26 = shl nuw i64 64, %.sroa.4.1 br label %.lr.ph.i.i.i.i @@ -34567,44 +34567,44 @@ define hidden void @_ZN5salsa5views5Views14downcaster_for17h47776f98913b60f5E(pt .lr.ph.i: ; preds = %.lr.ph.i.lr.ph, %38 %.sroa.5.034 = phi i64 [ 0, %.lr.ph.i.lr.ph ], [ %.sroa.5.1, %38 ] %.sroa.9.033 = phi i64 [ 32, %.lr.ph.i.lr.ph ], [ %.sroa.9.1, %38 ] - %.sroa.12.032 = phi i64 [ 0, %.lr.ph.i.lr.ph ], [ %18, %38 ] + %.sroa.12.032 = phi i64 [ 0, %.lr.ph.i.lr.ph ], [ %17, %38 ] %.sroa.16.031 = phi i64 [ 0, %.lr.ph.i.lr.ph ], [ %25, %38 ] br label %9 -9: ; preds = %22, %.lr.ph.i - %.sroa.12.1 = phi i64 [ %.sroa.12.032, %.lr.ph.i ], [ 0, %22 ] - %.sroa.9.1 = phi i64 [ %.sroa.9.033, %.lr.ph.i ], [ %23, %22 ] - %.sroa.5.1 = phi i64 [ %.sroa.5.034, %.lr.ph.i ], [ %13, %22 ] +9: ; preds = %21, %.lr.ph.i + %.sroa.12.1 = phi i64 [ %.sroa.12.032, %.lr.ph.i ], [ 0, %21 ] + %.sroa.9.1 = phi i64 [ %.sroa.9.033, %.lr.ph.i ], [ %23, %21 ] + %.sroa.5.1 = phi i64 [ %.sroa.5.034, %.lr.ph.i ], [ %22, %21 ] %10 = getelementptr inbounds nuw { { ptr } }, ptr %8, i64 %.sroa.5.1 %11 = load atomic ptr, ptr %10 acquire, align 8, !noalias !1887 %12 = icmp eq ptr %11, null br i1 %12, label %.loopexit.i, label %.preheader.i .loopexit.i: ; preds = %.preheader.i, %9 - %13 = add i64 %.sroa.5.1, 1 - %14 = icmp ult i64 %13, 59 - br i1 %14, label %22, label %.loopexit - -.preheader.i: ; preds = %9, %16 - %.sroa.12.2 = phi i64 [ %18, %16 ], [ %.sroa.12.1, %9 ] - %15 = icmp ult i64 %.sroa.12.2, %.sroa.9.1 - br i1 %15, label %16, label %.loopexit.i - -16: ; preds = %.preheader.i - %17 = getelementptr inbounds nuw { { { { [5 x i64] } } }, { i8 }, [7 x i8] }, ptr %11, i64 %.sroa.12.2 - %18 = add nuw i64 %.sroa.12.2, 1 - %19 = getelementptr inbounds nuw i8, ptr %17, i64 40 - %20 = load atomic i8, ptr %19 acquire, align 1, !noalias !1887 - %21 = icmp eq i8 %20, 0 - br i1 %21, label %.preheader.i, label %24 - -22: ; preds = %.loopexit.i + %13 = icmp ult i64 %.sroa.5.1, 58 + br i1 %13, label %21, label %.loopexit + +.preheader.i: ; preds = %9, %15 + %.sroa.12.2 = phi i64 [ %17, %15 ], [ %.sroa.12.1, %9 ] + %14 = icmp ult i64 %.sroa.12.2, %.sroa.9.1 + br i1 %14, label %15, label %.loopexit.i + +15: ; preds = %.preheader.i + %16 = getelementptr inbounds nuw { { { { [5 x i64] } } }, { i8 }, [7 x i8] }, ptr %11, i64 %.sroa.12.2 + %17 = add nuw i64 %.sroa.12.2, 1 + %18 = getelementptr inbounds nuw i8, ptr %16, i64 40 + %19 = load atomic i8, ptr %18 acquire, align 1, !noalias !1887 + %20 = icmp eq i8 %19, 0 + br i1 %20, label %.preheader.i, label %24 + +21: ; preds = %.loopexit.i + %22 = add nuw nsw i64 %.sroa.5.1, 1 %23 = shl nuw i64 64, %.sroa.5.1 br label %9 -24: ; preds = %16 +24: ; preds = %15 %25 = add i64 %.sroa.16.031, 1 - %26 = getelementptr inbounds nuw i8, ptr %17, i64 24 + %26 = getelementptr inbounds nuw i8, ptr %16, i64 24 %27 = load i64, ptr %26, align 8, !noundef !4 %28 = icmp eq i64 %27, 3326566396564680275 br i1 %28, label %34, label %38 @@ -34632,7 +34632,7 @@ define hidden void @_ZN5salsa5views5Views14downcaster_for17h47776f98913b60f5E(pt unreachable 34: ; preds = %24 - %35 = getelementptr inbounds nuw i8, ptr %17, i64 32 + %35 = getelementptr inbounds nuw i8, ptr %16, i64 32 %36 = load i64, ptr %35, align 8, !noundef !4 %37 = icmp eq i64 %36, 7469766667972927328 br i1 %37, label %40, label %38 @@ -34646,7 +34646,7 @@ define hidden void @_ZN5salsa5views5Views14downcaster_for17h47776f98913b60f5E(pt %41 = load i64, ptr %1, align 8, !noundef !4 %42 = getelementptr inbounds nuw i8, ptr %1, i64 8 %43 = load i64, ptr %42, align 8, !noundef !4 - %44 = getelementptr inbounds nuw i8, ptr %17, i64 16 + %44 = getelementptr inbounds nuw i8, ptr %16, i64 16 %45 = load ptr, ptr %44, align 8, !nonnull !4, !noundef !4 %46 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %41, ptr %46, align 8 @@ -46719,44 +46719,44 @@ define void @"_ZN104_$LT$ty_python_semantic..suppression..suppressions..Configur .lr.ph.i.i: ; preds = %136, %.lr.ph.i.lr.ph.i %.sroa.5.034.i = phi i64 [ 0, %.lr.ph.i.lr.ph.i ], [ %.sroa.5.1.i, %136 ] %.sroa.9.033.i = phi i64 [ 32, %.lr.ph.i.lr.ph.i ], [ %.sroa.9.1.i, %136 ] - %.sroa.12.032.i = phi i64 [ 0, %.lr.ph.i.lr.ph.i ], [ %116, %136 ] + %.sroa.12.032.i = phi i64 [ 0, %.lr.ph.i.lr.ph.i ], [ %115, %136 ] %.sroa.16.031.i = phi i64 [ 0, %.lr.ph.i.lr.ph.i ], [ %123, %136 ] br label %107 -107: ; preds = %120, %.lr.ph.i.i - %.sroa.12.1.i = phi i64 [ %.sroa.12.032.i, %.lr.ph.i.i ], [ 0, %120 ] - %.sroa.9.1.i = phi i64 [ %.sroa.9.033.i, %.lr.ph.i.i ], [ %121, %120 ] - %.sroa.5.1.i = phi i64 [ %.sroa.5.034.i, %.lr.ph.i.i ], [ %111, %120 ] +107: ; preds = %119, %.lr.ph.i.i + %.sroa.12.1.i = phi i64 [ %.sroa.12.032.i, %.lr.ph.i.i ], [ 0, %119 ] + %.sroa.9.1.i = phi i64 [ %.sroa.9.033.i, %.lr.ph.i.i ], [ %121, %119 ] + %.sroa.5.1.i = phi i64 [ %.sroa.5.034.i, %.lr.ph.i.i ], [ %120, %119 ] %108 = getelementptr inbounds nuw { { ptr } }, ptr %106, i64 %.sroa.5.1.i %109 = load atomic ptr, ptr %108 acquire, align 8, !noalias !2853 %110 = icmp eq ptr %109, null br i1 %110, label %.loopexit.i.i, label %.preheader.i.i .loopexit.i.i: ; preds = %.preheader.i.i, %107 - %111 = add i64 %.sroa.5.1.i, 1 - %112 = icmp ult i64 %111, 59 - br i1 %112, label %120, label %.loopexit.i - -.preheader.i.i: ; preds = %107, %114 - %.sroa.12.2.i = phi i64 [ %116, %114 ], [ %.sroa.12.1.i, %107 ] - %113 = icmp ult i64 %.sroa.12.2.i, %.sroa.9.1.i - br i1 %113, label %114, label %.loopexit.i.i - -114: ; preds = %.preheader.i.i - %115 = getelementptr inbounds nuw { { { { [5 x i64] } } }, { i8 }, [7 x i8] }, ptr %109, i64 %.sroa.12.2.i - %116 = add nuw i64 %.sroa.12.2.i, 1 - %117 = getelementptr inbounds nuw i8, ptr %115, i64 40 - %118 = load atomic i8, ptr %117 acquire, align 1, !noalias !2853 - %119 = icmp eq i8 %118, 0 - br i1 %119, label %.preheader.i.i, label %122 - -120: ; preds = %.loopexit.i.i + %111 = icmp ult i64 %.sroa.5.1.i, 58 + br i1 %111, label %119, label %.loopexit.i + +.preheader.i.i: ; preds = %107, %113 + %.sroa.12.2.i = phi i64 [ %115, %113 ], [ %.sroa.12.1.i, %107 ] + %112 = icmp ult i64 %.sroa.12.2.i, %.sroa.9.1.i + br i1 %112, label %113, label %.loopexit.i.i + +113: ; preds = %.preheader.i.i + %114 = getelementptr inbounds nuw { { { { [5 x i64] } } }, { i8 }, [7 x i8] }, ptr %109, i64 %.sroa.12.2.i + %115 = add nuw i64 %.sroa.12.2.i, 1 + %116 = getelementptr inbounds nuw i8, ptr %114, i64 40 + %117 = load atomic i8, ptr %116 acquire, align 1, !noalias !2853 + %118 = icmp eq i8 %117, 0 + br i1 %118, label %.preheader.i.i, label %122 + +119: ; preds = %.loopexit.i.i + %120 = add nuw nsw i64 %.sroa.5.1.i, 1 %121 = shl nuw i64 64, %.sroa.5.1.i br label %107 -122: ; preds = %114 +122: ; preds = %113 %123 = add i64 %.sroa.16.031.i, 1 - %124 = getelementptr inbounds nuw i8, ptr %115, i64 24 + %124 = getelementptr inbounds nuw i8, ptr %114, i64 24 %125 = load i64, ptr %124, align 8, !noalias !2866, !noundef !4 %126 = icmp eq i64 %125, 3326566396564680275 br i1 %126, label %132, label %136 @@ -46784,7 +46784,7 @@ define void @"_ZN104_$LT$ty_python_semantic..suppression..suppressions..Configur unreachable 132: ; preds = %122 - %133 = getelementptr inbounds nuw i8, ptr %115, i64 32 + %133 = getelementptr inbounds nuw i8, ptr %114, i64 32 %134 = load i64, ptr %133, align 8, !noalias !2866, !noundef !4 %135 = icmp eq i64 %134, 7469766667972927328 br i1 %135, label %139, label %136 @@ -46802,7 +46802,7 @@ define void @"_ZN104_$LT$ty_python_semantic..suppression..suppressions..Configur %140 = load i64, ptr %94, align 8, !noalias !2866, !noundef !4 %141 = getelementptr inbounds nuw i8, ptr %1, i64 672 %142 = load i64, ptr %141, align 8, !noalias !2866, !noundef !4 - %143 = getelementptr inbounds nuw i8, ptr %115, i64 16 + %143 = getelementptr inbounds nuw i8, ptr %114, i64 16 %144 = load ptr, ptr %143, align 8, !noalias !2866, !nonnull !4, !noundef !4 %.sroa.015.sroa.4.8..sroa_idx = getelementptr inbounds nuw i8, ptr %.sroa.015.sroa.4, i64 7 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(32) %.sroa.015.sroa.4.8..sroa_idx, ptr noundef nonnull align 8 dereferenceable(32) @anon.bd069b0397abcbf5d72b25326b9d08c3.479, i64 32, i1 false) diff --git a/bench/ruff-rs/optimized/avzuiha0u13zvsyv1kglukilk.ll b/bench/ruff-rs/optimized/avzuiha0u13zvsyv1kglukilk.ll index 360ac8db1f9..c02d5cffaa2 100644 --- a/bench/ruff-rs/optimized/avzuiha0u13zvsyv1kglukilk.ll +++ b/bench/ruff-rs/optimized/avzuiha0u13zvsyv1kglukilk.ll @@ -3144,44 +3144,44 @@ define hidden void @_ZN5salsa5views5Views14downcaster_for17he7e1709de615a35aE(pt .lr.ph.i: ; preds = %.lr.ph.i.lr.ph, %38 %.sroa.5.034 = phi i64 [ 0, %.lr.ph.i.lr.ph ], [ %.sroa.5.1, %38 ] %.sroa.9.033 = phi i64 [ 32, %.lr.ph.i.lr.ph ], [ %.sroa.9.1, %38 ] - %.sroa.12.032 = phi i64 [ 0, %.lr.ph.i.lr.ph ], [ %18, %38 ] + %.sroa.12.032 = phi i64 [ 0, %.lr.ph.i.lr.ph ], [ %17, %38 ] %.sroa.16.031 = phi i64 [ 0, %.lr.ph.i.lr.ph ], [ %25, %38 ] br label %9 -9: ; preds = %22, %.lr.ph.i - %.sroa.12.1 = phi i64 [ %.sroa.12.032, %.lr.ph.i ], [ 0, %22 ] - %.sroa.9.1 = phi i64 [ %.sroa.9.033, %.lr.ph.i ], [ %23, %22 ] - %.sroa.5.1 = phi i64 [ %.sroa.5.034, %.lr.ph.i ], [ %13, %22 ] +9: ; preds = %21, %.lr.ph.i + %.sroa.12.1 = phi i64 [ %.sroa.12.032, %.lr.ph.i ], [ 0, %21 ] + %.sroa.9.1 = phi i64 [ %.sroa.9.033, %.lr.ph.i ], [ %23, %21 ] + %.sroa.5.1 = phi i64 [ %.sroa.5.034, %.lr.ph.i ], [ %22, %21 ] %10 = getelementptr inbounds nuw { { ptr } }, ptr %8, i64 %.sroa.5.1 %11 = load atomic ptr, ptr %10 acquire, align 8, !noalias !207 %12 = icmp eq ptr %11, null br i1 %12, label %.loopexit.i, label %.preheader.i .loopexit.i: ; preds = %.preheader.i, %9 - %13 = add i64 %.sroa.5.1, 1 - %14 = icmp ult i64 %13, 59 - br i1 %14, label %22, label %.loopexit - -.preheader.i: ; preds = %9, %16 - %.sroa.12.2 = phi i64 [ %18, %16 ], [ %.sroa.12.1, %9 ] - %15 = icmp ult i64 %.sroa.12.2, %.sroa.9.1 - br i1 %15, label %16, label %.loopexit.i - -16: ; preds = %.preheader.i - %17 = getelementptr inbounds nuw { { { { [5 x i64] } } }, { i8 }, [7 x i8] }, ptr %11, i64 %.sroa.12.2 - %18 = add nuw i64 %.sroa.12.2, 1 - %19 = getelementptr inbounds nuw i8, ptr %17, i64 40 - %20 = load atomic i8, ptr %19 acquire, align 1, !noalias !207 - %21 = icmp eq i8 %20, 0 - br i1 %21, label %.preheader.i, label %24 - -22: ; preds = %.loopexit.i + %13 = icmp ult i64 %.sroa.5.1, 58 + br i1 %13, label %21, label %.loopexit + +.preheader.i: ; preds = %9, %15 + %.sroa.12.2 = phi i64 [ %17, %15 ], [ %.sroa.12.1, %9 ] + %14 = icmp ult i64 %.sroa.12.2, %.sroa.9.1 + br i1 %14, label %15, label %.loopexit.i + +15: ; preds = %.preheader.i + %16 = getelementptr inbounds nuw { { { { [5 x i64] } } }, { i8 }, [7 x i8] }, ptr %11, i64 %.sroa.12.2 + %17 = add nuw i64 %.sroa.12.2, 1 + %18 = getelementptr inbounds nuw i8, ptr %16, i64 40 + %19 = load atomic i8, ptr %18 acquire, align 1, !noalias !207 + %20 = icmp eq i8 %19, 0 + br i1 %20, label %.preheader.i, label %24 + +21: ; preds = %.loopexit.i + %22 = add nuw nsw i64 %.sroa.5.1, 1 %23 = shl nuw i64 64, %.sroa.5.1 br label %9 -24: ; preds = %16 +24: ; preds = %15 %25 = add i64 %.sroa.16.031, 1 - %26 = getelementptr inbounds nuw i8, ptr %17, i64 24 + %26 = getelementptr inbounds nuw i8, ptr %16, i64 24 %27 = load i64, ptr %26, align 8, !noundef !9 %28 = icmp eq i64 %27, -8506588598177062506 br i1 %28, label %34, label %38 @@ -3209,7 +3209,7 @@ define hidden void @_ZN5salsa5views5Views14downcaster_for17he7e1709de615a35aE(pt unreachable 34: ; preds = %24 - %35 = getelementptr inbounds nuw i8, ptr %17, i64 32 + %35 = getelementptr inbounds nuw i8, ptr %16, i64 32 %36 = load i64, ptr %35, align 8, !noundef !9 %37 = icmp eq i64 %36, 637409720492316309 br i1 %37, label %40, label %38 @@ -3223,7 +3223,7 @@ define hidden void @_ZN5salsa5views5Views14downcaster_for17he7e1709de615a35aE(pt %41 = load i64, ptr %1, align 8, !noundef !9 %42 = getelementptr inbounds nuw i8, ptr %1, i64 8 %43 = load i64, ptr %42, align 8, !noundef !9 - %44 = getelementptr inbounds nuw i8, ptr %17, i64 16 + %44 = getelementptr inbounds nuw i8, ptr %16, i64 16 %45 = load ptr, ptr %44, align 8, !nonnull !9, !noundef !9 %46 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %41, ptr %46, align 8 diff --git a/bench/salsa-rs/optimized/bfvulplr01a8w79gvhbwzr5ai.ll b/bench/salsa-rs/optimized/bfvulplr01a8w79gvhbwzr5ai.ll index 6171dbb5ceb..a753d0cae0c 100644 --- a/bench/salsa-rs/optimized/bfvulplr01a8w79gvhbwzr5ai.ll +++ b/bench/salsa-rs/optimized/bfvulplr01a8w79gvhbwzr5ai.ll @@ -1120,44 +1120,44 @@ define noundef range(i64 1, 0) i64 @_ZN5salsa5zalsa5Zalsa12new_revision17h4e6ba7 .lr.ph.i: ; preds = %.lr.ph.i.lr.ph, %42 %.sroa.4.039 = phi i64 [ 0, %.lr.ph.i.lr.ph ], [ %.sroa.4.1, %42 ] %.sroa.8.038 = phi i64 [ 32, %.lr.ph.i.lr.ph ], [ %.sroa.8.1, %42 ] - %.sroa.11.037 = phi i64 [ 0, %.lr.ph.i.lr.ph ], [ %19, %42 ] + %.sroa.11.037 = phi i64 [ 0, %.lr.ph.i.lr.ph ], [ %18, %42 ] %.sroa.15.036 = phi i64 [ 0, %.lr.ph.i.lr.ph ], [ %26, %42 ] br label %10 -10: ; preds = %23, %.lr.ph.i - %.sroa.11.1 = phi i64 [ %.sroa.11.037, %.lr.ph.i ], [ 0, %23 ] - %.sroa.8.1 = phi i64 [ %.sroa.8.038, %.lr.ph.i ], [ %24, %23 ] - %.sroa.4.1 = phi i64 [ %.sroa.4.039, %.lr.ph.i ], [ %14, %23 ] +10: ; preds = %22, %.lr.ph.i + %.sroa.11.1 = phi i64 [ %.sroa.11.037, %.lr.ph.i ], [ 0, %22 ] + %.sroa.8.1 = phi i64 [ %.sroa.8.038, %.lr.ph.i ], [ %24, %22 ] + %.sroa.4.1 = phi i64 [ %.sroa.4.039, %.lr.ph.i ], [ %23, %22 ] %11 = getelementptr inbounds nuw { { ptr } }, ptr %8, i64 %.sroa.4.1 %12 = load atomic ptr, ptr %11 acquire, align 8, !noalias !67 %13 = icmp eq ptr %12, null br i1 %13, label %.loopexit.i, label %.preheader.i .loopexit.i: ; preds = %.preheader.i, %10 - %14 = add i64 %.sroa.4.1, 1 - %15 = icmp ult i64 %14, 59 - br i1 %15, label %23, label %.loopexit - -.preheader.i: ; preds = %10, %17 - %.sroa.11.2 = phi i64 [ %19, %17 ], [ %.sroa.11.1, %10 ] - %16 = icmp ult i64 %.sroa.11.2, %.sroa.8.1 - br i1 %16, label %17, label %.loopexit.i - -17: ; preds = %.preheader.i - %18 = getelementptr inbounds nuw { i32, { i8 }, [3 x i8] }, ptr %12, i64 %.sroa.11.2 - %19 = add nuw i64 %.sroa.11.2, 1 - %20 = getelementptr inbounds nuw i8, ptr %18, i64 4 - %21 = load atomic i8, ptr %20 acquire, align 1, !noalias !67 - %22 = icmp eq i8 %21, 0 - br i1 %22, label %.preheader.i, label %25 - -23: ; preds = %.loopexit.i + %14 = icmp ult i64 %.sroa.4.1, 58 + br i1 %14, label %22, label %.loopexit + +.preheader.i: ; preds = %10, %16 + %.sroa.11.2 = phi i64 [ %18, %16 ], [ %.sroa.11.1, %10 ] + %15 = icmp ult i64 %.sroa.11.2, %.sroa.8.1 + br i1 %15, label %16, label %.loopexit.i + +16: ; preds = %.preheader.i + %17 = getelementptr inbounds nuw { i32, { i8 }, [3 x i8] }, ptr %12, i64 %.sroa.11.2 + %18 = add nuw i64 %.sroa.11.2, 1 + %19 = getelementptr inbounds nuw i8, ptr %17, i64 4 + %20 = load atomic i8, ptr %19 acquire, align 1, !noalias !67 + %21 = icmp eq i8 %20, 0 + br i1 %21, label %.preheader.i, label %25 + +22: ; preds = %.loopexit.i + %23 = add nuw nsw i64 %.sroa.4.1, 1 %24 = shl nuw i64 64, %.sroa.4.1 br label %10 -25: ; preds = %17 +25: ; preds = %16 %26 = add i64 %.sroa.15.036, 1 - %27 = load i32, ptr %18, align 4, !noundef !3 + %27 = load i32, ptr %17, align 4, !noundef !3 %28 = zext i32 %27 to i64 store i64 %28, ptr %4, align 8 tail call void @llvm.experimental.noalias.scope.decl(metadata !71) @@ -1233,44 +1233,44 @@ define void @_ZN5salsa5zalsa5Zalsa9evict_lru17hcfd9028e204423afE(ptr noalias nou .lr.ph.i: ; preds = %.lr.ph.i.lr.ph, %41 %.sroa.4.039 = phi i64 [ 0, %.lr.ph.i.lr.ph ], [ %.sroa.4.1, %41 ] %.sroa.8.038 = phi i64 [ 32, %.lr.ph.i.lr.ph ], [ %.sroa.8.1, %41 ] - %.sroa.11.037 = phi i64 [ 0, %.lr.ph.i.lr.ph ], [ %18, %41 ] + %.sroa.11.037 = phi i64 [ 0, %.lr.ph.i.lr.ph ], [ %17, %41 ] %.sroa.15.036 = phi i64 [ 0, %.lr.ph.i.lr.ph ], [ %25, %41 ] br label %9 -9: ; preds = %22, %.lr.ph.i - %.sroa.11.1 = phi i64 [ %.sroa.11.037, %.lr.ph.i ], [ 0, %22 ] - %.sroa.8.1 = phi i64 [ %.sroa.8.038, %.lr.ph.i ], [ %23, %22 ] - %.sroa.4.1 = phi i64 [ %.sroa.4.039, %.lr.ph.i ], [ %13, %22 ] +9: ; preds = %21, %.lr.ph.i + %.sroa.11.1 = phi i64 [ %.sroa.11.037, %.lr.ph.i ], [ 0, %21 ] + %.sroa.8.1 = phi i64 [ %.sroa.8.038, %.lr.ph.i ], [ %23, %21 ] + %.sroa.4.1 = phi i64 [ %.sroa.4.039, %.lr.ph.i ], [ %22, %21 ] %10 = getelementptr inbounds nuw { { ptr } }, ptr %7, i64 %.sroa.4.1 %11 = load atomic ptr, ptr %10 acquire, align 8, !noalias !75 %12 = icmp eq ptr %11, null br i1 %12, label %.loopexit.i, label %.preheader.i .loopexit.i: ; preds = %.preheader.i, %9 - %13 = add i64 %.sroa.4.1, 1 - %14 = icmp ult i64 %13, 59 - br i1 %14, label %22, label %.loopexit - -.preheader.i: ; preds = %9, %16 - %.sroa.11.2 = phi i64 [ %18, %16 ], [ %.sroa.11.1, %9 ] - %15 = icmp ult i64 %.sroa.11.2, %.sroa.8.1 - br i1 %15, label %16, label %.loopexit.i - -16: ; preds = %.preheader.i - %17 = getelementptr inbounds nuw { i32, { i8 }, [3 x i8] }, ptr %11, i64 %.sroa.11.2 - %18 = add nuw i64 %.sroa.11.2, 1 - %19 = getelementptr inbounds nuw i8, ptr %17, i64 4 - %20 = load atomic i8, ptr %19 acquire, align 1, !noalias !75 - %21 = icmp eq i8 %20, 0 - br i1 %21, label %.preheader.i, label %24 - -22: ; preds = %.loopexit.i + %13 = icmp ult i64 %.sroa.4.1, 58 + br i1 %13, label %21, label %.loopexit + +.preheader.i: ; preds = %9, %15 + %.sroa.11.2 = phi i64 [ %17, %15 ], [ %.sroa.11.1, %9 ] + %14 = icmp ult i64 %.sroa.11.2, %.sroa.8.1 + br i1 %14, label %15, label %.loopexit.i + +15: ; preds = %.preheader.i + %16 = getelementptr inbounds nuw { i32, { i8 }, [3 x i8] }, ptr %11, i64 %.sroa.11.2 + %17 = add nuw i64 %.sroa.11.2, 1 + %18 = getelementptr inbounds nuw i8, ptr %16, i64 4 + %19 = load atomic i8, ptr %18 acquire, align 1, !noalias !75 + %20 = icmp eq i8 %19, 0 + br i1 %20, label %.preheader.i, label %24 + +21: ; preds = %.loopexit.i + %22 = add nuw nsw i64 %.sroa.4.1, 1 %23 = shl nuw i64 64, %.sroa.4.1 br label %9 -24: ; preds = %16 +24: ; preds = %15 %25 = add i64 %.sroa.15.036, 1 - %26 = load i32, ptr %17, align 4, !noundef !3 + %26 = load i32, ptr %16, align 4, !noundef !3 %27 = zext i32 %26 to i64 store i64 %27, ptr %4, align 8 tail call void @llvm.experimental.noalias.scope.decl(metadata !79) diff --git a/bench/slurm/optimized/slurmdb_defs.ll b/bench/slurm/optimized/slurmdb_defs.ll index 2f8348c5984..f5754d7a552 100644 --- a/bench/slurm/optimized/slurmdb_defs.ll +++ b/bench/slurm/optimized/slurmdb_defs.ll @@ -4675,57 +4675,54 @@ define dso_local range(i32 0, 32) i32 @str_2_job_flags(ptr noundef %0) local_unn br i1 %.not1115, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %6, %22 - %.017 = phi ptr [ %23, %22 ], [ %8, %6 ] - %.0816 = phi i32 [ %18, %22 ], [ 0, %6 ] + %.017 = phi ptr [ %21, %_str_2_job_flags.exit.thread ], [ %8, %6 ] + %.0816 = phi i32 [ %20, %_str_2_job_flags.exit.thread ], [ 0, %6 ] %9 = call ptr @xstrcasestr(ptr noundef nonnull %.017, ptr noundef nonnull @.str.14) #19 %.not.i = icmp eq ptr %9, null - br i1 %.not.i, label %10, label %_str_2_job_flags.exit + br i1 %.not.i, label %10, label %_str_2_job_flags.exit.thread 10: ; preds = %.lr.ph %11 = call ptr @xstrcasestr(ptr noundef nonnull %.017, ptr noundef nonnull @.str.29) #19 %.not5.i = icmp eq ptr %11, null - br i1 %.not5.i, label %12, label %_str_2_job_flags.exit + br i1 %.not5.i, label %12, label %_str_2_job_flags.exit.thread 12: ; preds = %10 %13 = call ptr @xstrcasestr(ptr noundef nonnull %.017, ptr noundef nonnull @.str.30) #19 %.not6.i = icmp eq ptr %13, null - br i1 %.not6.i, label %14, label %_str_2_job_flags.exit + br i1 %.not6.i, label %14, label %_str_2_job_flags.exit.thread 14: ; preds = %12 %15 = call ptr @xstrcasestr(ptr noundef nonnull %.017, ptr noundef nonnull @.str.31) #19 %.not7.i = icmp eq ptr %15, null - br i1 %.not7.i, label %16, label %_str_2_job_flags.exit + br i1 %.not7.i, label %16, label %_str_2_job_flags.exit.thread 16: ; preds = %14 %17 = call ptr @xstrcasestr(ptr noundef nonnull %.017, ptr noundef nonnull @.str.215) #19 %.not8.i = icmp eq ptr %17, null %..i = select i1 %.not8.i, i32 1, i32 16 - br label %_str_2_job_flags.exit + %17 = and i32 %..i, 1 + %.not12 = icmp eq i32 %17, 0 + br i1 %.not12, label %_str_2_job_flags.exit.thread, label %18 -_str_2_job_flags.exit: ; preds = %.lr.ph, %10, %12, %14, %16 - %.0.i = phi i32 [ 0, %.lr.ph ], [ 2, %10 ], [ 4, %12 ], [ 8, %14 ], [ %..i, %16 ] - %18 = or i32 %.0.i, %.0816 - %19 = and i32 %18, 1 - %.not12 = icmp eq i32 %19, 0 - br i1 %.not12, label %22, label %20 - -20: ; preds = %_str_2_job_flags.exit - %21 = call i32 (ptr, ...) @error(ptr noundef nonnull @.str.34, ptr noundef nonnull @__func__.str_2_job_flags, ptr noundef nonnull %.017) #19 +_str_2_job_flags.exit: ; preds = %16 + %19 = call i32 (ptr, ...) @error(ptr noundef nonnull @.str.34, ptr noundef nonnull @__func__.str_2_job_flags, ptr noundef nonnull %.017) #19 call void @slurm_xfree(ptr noundef nonnull %2) #19 br label %24 -22: ; preds = %_str_2_job_flags.exit - %23 = call ptr @strtok_r(ptr noundef null, ptr noundef nonnull @.str.13, ptr noundef nonnull %3) #19 - %.not11 = icmp eq ptr %23, null +22: ; preds = %14, %12, %10, %.lr.ph, %_str_2_job_flags.exit + %.0.i23 = phi i32 [ %..i, %_str_2_job_flags.exit ], [ 8, %14 ], [ 4, %12 ], [ 2, %10 ], [ 0, %.lr.ph ] + %20 = or i32 %.0.i23, %.0816 + %21 = call ptr @strtok_r(ptr noundef null, ptr noundef nonnull @.str.13, ptr noundef nonnull %3) #19 + %.not11 = icmp eq ptr %21, null br i1 %.not11, label %._crit_edge, label %.lr.ph, !llvm.loop !21 ._crit_edge: ; preds = %22, %6 - %.08.lcssa = phi i32 [ 0, %6 ], [ %18, %22 ] + %.08.lcssa = phi i32 [ 0, %6 ], [ %20, %_str_2_job_flags.exit.thread ] call void @slurm_xfree(ptr noundef nonnull %2) #19 br label %24 -24: ; preds = %._crit_edge, %20, %4 - %.09 = phi i32 [ 1, %20 ], [ %.08.lcssa, %._crit_edge ], [ 0, %4 ] +24: ; preds = %._crit_edge, %18, %4 + %.09 = phi i32 [ 1, %18 ], [ %.08.lcssa, %._crit_edge ], [ 0, %4 ] call void @llvm.lifetime.end.p0(ptr nonnull %3) call void @llvm.lifetime.end.p0(ptr nonnull %2) ret i32 %.09 diff --git a/bench/softposit-rs/optimized/4wrr62dd33canpwl.ll b/bench/softposit-rs/optimized/4wrr62dd33canpwl.ll index 094465738d4..505993c3190 100644 --- a/bench/softposit-rs/optimized/4wrr62dd33canpwl.ll +++ b/bench/softposit-rs/optimized/4wrr62dd33canpwl.ll @@ -24,8 +24,8 @@ define noundef i16 @"_ZN9softposit7quire167convert43_$LT$impl$u20$softposit..qui %.not65 = icmp sgt i128 %2, -1 br i1 %.not65, label %6, label %11 -5: ; preds = %1, %3, %74 - %.0 = phi i16 [ %.0.i, %74 ], [ -32768, %3 ], [ 0, %1 ] +5: ; preds = %1, %3, %.thread98 + %.0 = phi i16 [ %.0.i, %.thread98 ], [ -32768, %3 ], [ 0, %1 ] ret i16 %.0 6: ; preds = %13, %4 @@ -94,6 +94,7 @@ _ZN9softposit5p16e15P16E116calculate_regime17he80d131ebda81979E.exit: ; preds = %.sroa.51.0.in.i = phi i8 [ %30, %29 ], [ %24, %23 ] %.sroa.0.0.i = phi i16 [ %33, %29 ], [ %28, %23 ] %.sroa.51.0.insert.ext.i = zext nneg i8 %.sroa.51.0.in.i to i64 + %.sroa.6.0.extract.trunc = zext nneg i8 %.sroa.51.0.in.i to i16 %34 = icmp samesign ugt i8 %.sroa.51.0.in.i, 14 br i1 %34, label %50, label %47 @@ -122,58 +123,49 @@ _ZN9softposit5p16e15P16E116calculate_regime17he80d131ebda81979E.exit: ; preds = 47: ; preds = %_ZN9softposit5p16e15P16E116calculate_regime17he80d131ebda81979E.exit %48 = and i64 %.2, 9223372036854775807 %49 = icmp eq i8 %.sroa.51.0.in.i, 14 - br i1 %49, label %60, label %.thread89 + br i1 %49, label %51, label %53 50: ; preds = %_ZN9softposit5p16e15P16E116calculate_regime17he80d131ebda81979E.exit %. = select i1 %22, i16 1, i16 32767 - br label %74 + br label %.thread98 .thread89: ; preds = %47 - %narrow = add nuw nsw i8 %.sroa.51.0.in.i, 50 - %51 = zext nneg i8 %narrow to i64 - %52 = lshr i64 %48, %51 - %53 = trunc nuw nsw i64 %52 to i16 - %54 = shl nuw i64 562949953421312, %.sroa.51.0.insert.ext.i - %55 = and i64 %54, %48 - %56 = icmp ne i64 %55, 0 - %57 = sub nuw nsw i64 15, %.sroa.51.0.insert.ext.i - %58 = shl i64 %48, %57 - %59 = icmp ne i64 %58, 0 - %spec.select64 = select i1 %59, i1 true, i1 %.054 - br label %62 - -60: ; preds = %47 %.not61 = icmp ne i64 %48, 0 %spec.select63 = select i1 %.not61, i1 true, i1 %.054 %61 = icmp eq i8 %21, 0 - br i1 %61, label %62, label %69 - -62: ; preds = %.thread89, %60 - %.15597 = phi i1 [ %spec.select64, %.thread89 ], [ %spec.select63, %60 ] - %.056.shrunk95 = phi i1 [ %56, %.thread89 ], [ false, %60 ] - %.05794 = phi i16 [ %53, %.thread89 ], [ 0, %60 ] - %63 = zext nneg i8 %21 to i16 - %64 = zext nneg i8 %.sroa.51.0.in.i to i16 - %65 = sub nsw i16 13, %64 - %66 = shl nuw nsw i16 %63, %65 - %.049 = select i1 %49, i16 0, i16 %66 - %67 = add nuw i16 %.049, %.sroa.0.0.i - %68 = add nuw i16 %67, %.05794 - br i1 %.056.shrunk95, label %69, label %74 - -69: ; preds = %60, %62 - %.15596 = phi i1 [ %.15597, %62 ], [ %spec.select63, %60 ] - %.052 = phi i16 [ %68, %62 ], [ %.sroa.0.0.i, %60 ] - %70 = and i16 %.052, 1 - %71 = zext i1 %.15596 to i16 - %72 = or i16 %70, %71 - %73 = add nuw i16 %72, %.052 - br label %74 - -74: ; preds = %50, %62, %69 - %.153 = phi i16 [ %73, %69 ], [ %68, %62 ], [ %., %50 ] - %75 = sub i16 0, %.153 - %.0.i = select i1 %.not65, i16 %.153, i16 %75 + br i1 %61, label %.thread98, label %67 + +62: ; preds = %47 + %54 = add nuw nsw i64 %.sroa.51.0.insert.ext.i, 50 + %55 = lshr i64 %48, %54 + %56 = trunc nuw nsw i64 %55 to i16 + %57 = shl nuw i64 562949953421312, %.sroa.51.0.insert.ext.i + %58 = and i64 %57, %48 + %.not = icmp eq i64 %58, 0 + %59 = sub nuw nsw i64 15, %.sroa.51.0.insert.ext.i + %60 = shl i64 %48, %59 + %61 = icmp ne i64 %60, 0 + %spec.select64 = select i1 %61, i1 true, i1 %.054 + %62 = zext nneg i8 %21 to i16 + %63 = sub nsw i16 13, %.sroa.6.0.extract.trunc + %64 = shl nuw nsw i16 %62, %63 + %65 = add nuw i16 %64, %.sroa.0.0.i + %66 = add nuw i16 %65, %56 + br i1 %.not, label %.thread98, label %67 + +67:; preds = %51, %53 + %.15596 = phi i1 [ %spec.select64, %53 ], [ %spec.select63, %51 ] + %.052 = phi i16 [ %66, %53 ], [ %.sroa.0.0.i, %51 ] + %68 = and i16 %.052, 1 + %69 = zext i1 %.15596 to i16 + %70 = or i16 %68, %69 + %71 = add nuw i16 %70, %.052 + br label %.thread98 + +.thread98: ; preds = %51, %50, %53, %67 + %.153 = phi i16 [ %71, %67 ], [ %66, %53 ], [ %., %50 ], [ %.sroa.0.0.i, %51 ] + %72 = sub i16 0, %.153 + %.0.i = select i1 %.not65, i16 %.153, i16 %72 br label %5 } diff --git a/bench/softposit-rs/optimized/5az6c15ag5q4gib5.ll b/bench/softposit-rs/optimized/5az6c15ag5q4gib5.ll index 3a1f91a5b3e..e13f01a9063 100644 --- a/bench/softposit-rs/optimized/5az6c15ag5q4gib5.ll +++ b/bench/softposit-rs/optimized/5az6c15ag5q4gib5.ll @@ -3453,52 +3453,51 @@ _ZN9softposit5p16e15P16E117separate_bits_tmp17hb53692effe90da8fE.exit60: ; preds %spec.select = add i8 %.211.i, %17 %44 = xor i8 %17, 1 %45 = lshr exact i32 %43, 1 - br label %54 + br label %53 46: ; preds = %_ZN9softposit5p16e15P16E117separate_bits_tmp17hb53692effe90da8fE.exit60 %47 = sub nsw i16 %40, %32 %48 = icmp ugt i16 %47, 31 - %49 = and i16 %47, 31 - %50 = zext nneg i16 %49 to i32 - %51 = lshr i32 %35, %50 - %.043 = select i1 %48, i32 0, i32 %51 - %52 = add nuw i32 %.043, %20 - %53 = icmp sgt i32 %52, -1 - br i1 %53, label %54, label %68 - -54: ; preds = %46, %68, %42 - %.044 = phi i32 [ %45, %42 ], [ %52, %46 ], [ %70, %68 ] - %.141 = phi i8 [ %spec.select, %42 ], [ %.211.i, %46 ], [ %spec.select46, %68 ] - %.039 = phi i8 [ %44, %42 ], [ %17, %46 ], [ %69, %68 ] - %55 = icmp slt i8 %.141, 0 - br i1 %55, label %62, label %56 - -56: ; preds = %54 - %57 = add nuw i8 %.141, 1 - %58 = and i8 %57, 15 - %59 = zext nneg i8 %58 to i16 - %60 = lshr i16 32767, %59 - %61 = xor i16 %60, 32767 + %49 = zext nneg i16 %47 to i32 + %50 = lshr i32 %35, %49 + %.043 = select i1 %48, i32 0, i32 %50 + %51 = add nuw i32 %.043, %20 + %52 = icmp sgt i32 %51, -1 + br i1 %52, label %53, label %67 + +53: ; preds = %46, %67, %42 + %.044 = phi i32 [ %45, %42 ], [ %51, %46 ], [ %69, %67 ] + %.044 = phi i8 [ %spec.select, %42 ], [ %.211.i, %46 ], [ %spec.select46, %67 ] + %.141 = phi i8 [ %44, %42 ], [ %17, %46 ], [ %68, %67 ] + %54 = icmp slt i8 %.044, 0 + br i1 %54, label %61, label %55 + +55: ; preds = %53 + %56 = add nuw i8 %.141, 1 + %57 = and i8 %56, 15 + %58 = zext nneg i8 %57 to i16 + %59 = lshr i16 32767, %58 + %60 = xor i16 %59, 32767 br label %_ZN9softposit5p16e15P16E116calculate_regime17he80d131ebda81979E.exit -62: ; preds = %54 +62: ; preds = %53 %63 = sub i8 0, %.141 %64 = and i8 %63, 15 %65 = zext nneg i8 %64 to i16 %66 = lshr i16 16384, %65 br label %_ZN9softposit5p16e15P16E116calculate_regime17he80d131ebda81979E.exit -_ZN9softposit5p16e15P16E116calculate_regime17he80d131ebda81979E.exit: ; preds = %56, %62 - %.sroa.51.0.in.i = phi i8 [ %63, %62 ], [ %57, %56 ] - %.sroa.0.0.i = phi i16 [ %66, %62 ], [ %61, %56 ] +_ZN9softposit5p16e15P16E116calculate_regime17he80d131ebda81979E.exit: ; preds = %55, %62 + %.sroa.51.0.in.i = phi i8 [ %63, %61 ], [ %56, %55 ] + %.sroa.0.0.i = phi i16 [ %66, %61 ], [ %60, %55 ] %67 = icmp ugt i8 %.sroa.51.0.in.i, 14 br i1 %67, label %95, label %71 68: ; preds = %46 %spec.select46 = add i8 %.211.i, %17 %69 = xor i8 %17, 1 - %70 = lshr i32 %52, 1 - br label %54 + %70 = lshr i32 %51, 1 + br label %53 71: ; preds = %_ZN9softposit5p16e15P16E116calculate_regime17he80d131ebda81979E.exit %72 = and i32 %.044, 1073741823 @@ -3536,11 +3535,11 @@ _ZN9softposit5p16e15P16E116calculate_regime17he80d131ebda81979E.exit: ; preds = br label %"_ZN9softposit5p16e13ops41_$LT$impl$u20$softposit..p16e1..P16E1$GT$7form_ui17h54757fb1168219bbE.exit" 95: ; preds = %_ZN9softposit5p16e15P16E116calculate_regime17he80d131ebda81979E.exit - %. = select i1 %55, i16 1, i16 32767 + %. = select i1 %54, i16 1, i16 32767 br label %"_ZN9softposit5p16e13ops41_$LT$impl$u20$softposit..p16e1..P16E1$GT$7form_ui17h54757fb1168219bbE.exit" "_ZN9softposit5p16e13ops41_$LT$impl$u20$softposit..p16e1..P16E1$GT$7form_ui17h54757fb1168219bbE.exit": ; preds = %88, %71, %95 - %.042 = phi i16 [ %., %95 ], [ %94, %88 ], [ %87, %71 ] + %.042 = phi i16 [ %., %94 ], [ %94, %87 ], [ %87, %70 ] %96 = sub i16 0, %.042 %.0.i61 = select i1 %3, i16 %.042, i16 %96 ret i16 %.0.i61 diff --git a/bench/sqlite/optimized/shell.ll b/bench/sqlite/optimized/shell.ll index d708840926f..17be4a5778e 100644 --- a/bench/sqlite/optimized/shell.ll +++ b/bench/sqlite/optimized/shell.ll @@ -5436,8 +5436,8 @@ define internal void @ieee754func(ptr noundef %0, i32 noundef %1, ptr noundef re br i1 %or.cond97109, label %.lr.ph113, label %.critedge .lr.ph113: ; preds = %33, %.lr.ph113 - %.2111 = phi i64 [ %43, %.lr.ph113 ], [ %.1, %33 ] - %.185110 = phi i32 [ %44, %.lr.ph113 ], [ %35, %33 ] + %.2111 = phi i64 [ %43, %.lr.ph112 ], [ %.1, %33 ] + %.185110 = phi i32 [ %44, %.lr.ph112 ], [ %35, %33 ] %43 = lshr exact i64 %.2111, 1 %44 = add nsw i32 %.185110, 1 %45 = icmp slt i32 %.185110, 1074 @@ -5447,8 +5447,8 @@ define internal void @ieee754func(ptr noundef %0, i32 noundef %1, ptr noundef re br i1 %or.cond97, label %.lr.ph113, label %.critedge, !llvm.loop !93 .critedge: ; preds = %.lr.ph113, %33 - %.185.lcssa = phi i32 [ %35, %33 ], [ %44, %.lr.ph113 ] - %.2.lcssa = phi i64 [ %.1, %33 ], [ %43, %.lr.ph113 ] + %.185.lcssa = phi i32 [ %35, %33 ], [ %44, %.lr.ph112 ] + %.2.lcssa = phi i64 [ %.1, %33 ], [ %43, %.lr.ph112 ] br i1 %29, label %50, label %48 48: ; preds = %.critedge @@ -5532,8 +5532,8 @@ define internal void @ieee754func(ptr noundef %0, i32 noundef %1, ptr noundef re br i1 %.not, label %.preheader, label %.lr.ph, !llvm.loop !94 .lr.ph104: ; preds = %.preheader, %.lr.ph104 - %.274103 = phi i64 [ %80, %.lr.ph104 ], [ %.173.lcssa, %.preheader ] - %.277102 = phi i64 [ %79, %.lr.ph104 ], [ %.176.lcssa, %.preheader ] + %.274103 = phi i64 [ %80, %.lr.ph103 ], [ %.173.lcssa, %.preheader ] + %.277102 = phi i64 [ %79, %.lr.ph103 ], [ %.176.lcssa, %.preheader ] %79 = shl nuw nsw i64 %.277102, 1 %80 = add nsw i64 %.274103, -1 %81 = add nsw i64 %79, -1 @@ -5541,8 +5541,8 @@ define internal void @ieee754func(ptr noundef %0, i32 noundef %1, ptr noundef re br i1 %82, label %.lr.ph104, label %._crit_edge, !llvm.loop !95 ._crit_edge: ; preds = %.lr.ph104, %.preheader - %.277.lcssa = phi i64 [ %.176.lcssa, %.preheader ], [ %79, %.lr.ph104 ] - %.274.lcssa = phi i64 [ %.173.lcssa, %.preheader ], [ %80, %.lr.ph104 ] + %.277.lcssa = phi i64 [ %.176.lcssa, %.preheader ], [ %79, %.lr.ph103 ] + %.274.lcssa = phi i64 [ %.173.lcssa, %.preheader ], [ %80, %.lr.ph103 ] %83 = icmp slt i64 %.274.lcssa, -1074 br i1 %83, label %84, label %88 diff --git a/bench/sundials/optimized/cvodea.ll b/bench/sundials/optimized/cvodea.ll index 4e3208712f2..b198a3371ac 100644 --- a/bench/sundials/optimized/cvodea.ll +++ b/bench/sundials/optimized/cvodea.ll @@ -4700,7 +4700,7 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna br i1 %104, label %.lr.ph186.us, label %.lr.ph186 .lr.ph186.us: ; preds = %.split, %..critedge_crit_edge.split.us203 - %.0133.us197 = phi ptr [ %121, %..critedge_crit_edge.split.us203 ], [ %97, %.split ] + %.0133.us197 = phi ptr [ %121, %..critedge_crit_edge.split.us199 ], [ %97, %.split ] %105 = load double, ptr %.0133.us197, align 8, !tbaa !102 %.fr = freeze double %105 %106 = fsub double %.0132, %.fr @@ -4709,7 +4709,7 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna br i1 %108, label %.lr.ph186.split.split.us.us, label %.lr.ph186.split.split.us202 .lr.ph186.split.split.us202: ; preds = %.lr.ph186.us, %117 - %.1136184.us198 = phi ptr [ %119, %117 ], [ %.fr285, %.lr.ph186.us ] + %.1136184.us198 = phi ptr [ %119, %117 ], [ %.fr285, %.lr.ph182.us ] %109 = getelementptr inbounds nuw i8, ptr %.1136184.us198, i64 16 %110 = load ptr, ptr %109, align 8, !tbaa !94 %111 = getelementptr inbounds nuw i8, ptr %110, i64 1032 @@ -4734,7 +4734,7 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna br i1 %122, label %.loopexit, label %.lr.ph186.us .lr.ph186.split.split.us.us: ; preds = %.lr.ph186.us, %130 - %.1136184.us187.us = phi ptr [ %132, %130 ], [ %.fr285, %.lr.ph186.us ] + %.1136184.us187.us = phi ptr [ %132, %130 ], [ %.fr285, %.lr.ph182.us ] %123 = getelementptr inbounds nuw i8, ptr %.1136184.us187.us, i64 16 %124 = load ptr, ptr %123, align 8, !tbaa !94 %125 = getelementptr inbounds nuw i8, ptr %124, i64 1032 @@ -4756,7 +4756,7 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna br label %134 134: ; preds = %142, %.lr.ph186 - %.1136184.us = phi ptr [ %.fr285, %.lr.ph186 ], [ %144, %142 ] + %.1136184.us = phi ptr [ %.fr285, %.lr.ph182 ], [ %144, %142 ] %135 = getelementptr inbounds nuw i8, ptr %.1136184.us, i64 16 %136 = load ptr, ptr %135, align 8, !tbaa !94 %137 = getelementptr inbounds nuw i8, ptr %136, i64 1032 @@ -4779,7 +4779,7 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna br i1 %147, label %.loopexit, label %.lr.ph186 .loopexit: ; preds = %..critedge_crit_edge.split.us, %134, %..critedge_crit_edge.split.us203, %.lr.ph186.split.split.us202, %.lr.ph186.split.split.us.us - %.0133178 = phi ptr [ %.0133.us197, %.lr.ph186.split.split.us.us ], [ %.0133.us197, %.lr.ph186.split.split.us202 ], [ %.0133.us197, %..critedge_crit_edge.split.us203 ], [ %.0133, %134 ], [ %.0133, %..critedge_crit_edge.split.us ] + %.0133178 = phi ptr [ %.0133.us197, %.lr.ph182.split.split.us.us ], [ %.0133.us197, %.lr.ph182.split.split.us198 ], [ %.0133.us193, %..critedge_crit_edge.split.us199 ], [ %.0133, %134 ], [ %.0133, %..critedge_crit_edge.split.us ] %148 = getelementptr inbounds nuw i8, ptr %14, i64 96 %149 = getelementptr inbounds nuw i8, ptr %14, i64 64 %150 = icmp eq i32 %2, 2 @@ -4813,7 +4813,7 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna br label %.lr.ph214.us .lr.ph214.us: ; preds = %.lr.ph214.us.preheader, %178 - %.2137212.us = phi ptr [ %180, %178 ], [ %.fr285, %.lr.ph214.us.preheader ] + %.2137212.us = phi ptr [ %180, %178 ], [ %.fr285, %.lr.ph210.us.preheader ] %158 = getelementptr inbounds nuw i8, ptr %.2137212.us, i64 16 %159 = load ptr, ptr %158, align 8, !tbaa !94 %160 = getelementptr inbounds nuw i8, ptr %159, i64 1032 @@ -4868,7 +4868,7 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna br label %.lr.ph214 .lr.ph214: ; preds = %.lr.ph214.preheader, %208 - %.2137212 = phi ptr [ %210, %208 ], [ %.fr285, %.lr.ph214.preheader ] + %.2137212 = phi ptr [ %210, %208 ], [ %.fr285, %.lr.ph210.preheader ] %184 = getelementptr inbounds nuw i8, ptr %.2137212, i64 16 %185 = load ptr, ptr %184, align 8, !tbaa !94 %186 = getelementptr inbounds nuw i8, ptr %185, i64 1032 @@ -4908,7 +4908,7 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna br label %208 208: ; preds = %198, %.thread339 - %.5 = phi i32 [ %203, %198 ], [ 0, %.thread339 ] + %.5 = phi i32 [ %203, %198 ], [ 0, %.thread316 ] %209 = getelementptr inbounds nuw i8, ptr %.2137212, i64 120 %210 = load ptr, ptr %209, align 8, !tbaa !90 %.not155 = icmp eq ptr %210, null @@ -4942,7 +4942,7 @@ define i32 @CVodeB(ptr noundef %0, double noundef %1, i32 noundef %2) local_unna br label %.split222.split.split .critedge163: ; preds = %182, %217, %178, %153, %151, %.split222.us.split.us, %156, %.split222.us.split.split.us, %.thread164, %94, %74, %70, %53, %47, %24, %18, %11, %6 - %.0128 = phi i32 [ -21, %6 ], [ -101, %11 ], [ -103, %18 ], [ -102, %24 ], [ -104, %47 ], [ -22, %53 ], [ -22, %74 ], [ %.us-phi233, %.thread164 ], [ -22, %94 ], [ -22, %70 ], [ 0, %.split222.us.split.split.us ], [ 0, %.split222.us.split.us ], [ %157, %156 ], [ %152, %151 ], [ %154, %153 ], [ %.5.us, %178 ], [ %.5, %217 ], [ %183, %182 ] + %.0128 = phi i32 [ -21, %6 ], [ -101, %11 ], [ -103, %18 ], [ -102, %24 ], [ -104, %47 ], [ -22, %53 ], [ -22, %74 ], [ %.us-phi233, %.thread164 ], [ -22, %94 ], [ -22, %70 ], [ 0, %.split217.us.split.split.us ], [ 0, %.split217.us.split.us ], [ %157, %156 ], [ %152, %151 ], [ %154, %153 ], [ %.5.us, %178 ], [ %.5, %217 ], [ %183, %182 ] call void @llvm.lifetime.end.p0(ptr nonnull %4) ret i32 %.0128 } diff --git a/bench/sundials/optimized/idaa.ll b/bench/sundials/optimized/idaa.ll index 81718019852..6deec032070 100644 --- a/bench/sundials/optimized/idaa.ll +++ b/bench/sundials/optimized/idaa.ll @@ -4359,7 +4359,7 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u br i1 %104, label %.lr.ph187.us, label %.lr.ph187 .lr.ph187.us: ; preds = %.split, %..critedge_crit_edge.split.us204 - %.0138.us198 = phi ptr [ %121, %..critedge_crit_edge.split.us204 ], [ %97, %.split ] + %.0138.us198 = phi ptr [ %121, %..critedge_crit_edge.split.us200 ], [ %97, %.split ] %105 = load double, ptr %.0138.us198, align 8, !tbaa !99 %.fr = freeze double %105 %106 = fsub double %.0130, %.fr @@ -4368,7 +4368,7 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u br i1 %108, label %.lr.ph187.split.split.us.us, label %.lr.ph187.split.split.us203 .lr.ph187.split.split.us203: ; preds = %.lr.ph187.us, %117 - %.1135185.us199 = phi ptr [ %119, %117 ], [ %.fr248, %.lr.ph187.us ] + %.1135185.us199 = phi ptr [ %119, %117 ], [ %.fr248, %.lr.ph183.us ] %109 = getelementptr inbounds nuw i8, ptr %.1135185.us199, i64 16 %110 = load ptr, ptr %109, align 8, !tbaa !89 %111 = getelementptr inbounds nuw i8, ptr %110, i64 1272 @@ -4393,7 +4393,7 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u br i1 %122, label %.loopexit, label %.lr.ph187.us .lr.ph187.split.split.us.us: ; preds = %.lr.ph187.us, %130 - %.1135185.us188.us = phi ptr [ %132, %130 ], [ %.fr248, %.lr.ph187.us ] + %.1135185.us188.us = phi ptr [ %132, %130 ], [ %.fr248, %.lr.ph183.us ] %123 = getelementptr inbounds nuw i8, ptr %.1135185.us188.us, i64 16 %124 = load ptr, ptr %123, align 8, !tbaa !89 %125 = getelementptr inbounds nuw i8, ptr %124, i64 1272 @@ -4415,7 +4415,7 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u br label %134 134: ; preds = %142, %.lr.ph187 - %.1135185.us = phi ptr [ %.fr248, %.lr.ph187 ], [ %144, %142 ] + %.1135185.us = phi ptr [ %.fr248, %.lr.ph183 ], [ %144, %142 ] %135 = getelementptr inbounds nuw i8, ptr %.1135185.us, i64 16 %136 = load ptr, ptr %135, align 8, !tbaa !89 %137 = getelementptr inbounds nuw i8, ptr %136, i64 1272 @@ -4438,7 +4438,7 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u br i1 %147, label %.loopexit, label %.lr.ph187 .loopexit: ; preds = %..critedge_crit_edge.split.us, %134, %..critedge_crit_edge.split.us204, %.lr.ph187.split.split.us203, %.lr.ph187.split.split.us.us - %.0138179 = phi ptr [ %.0138.us198, %.lr.ph187.split.split.us.us ], [ %.0138.us198, %.lr.ph187.split.split.us203 ], [ %.0138.us198, %..critedge_crit_edge.split.us204 ], [ %.0138, %134 ], [ %.0138, %..critedge_crit_edge.split.us ] + %.0138179 = phi ptr [ %.0138.us198, %.lr.ph183.split.split.us.us ], [ %.0138.us198, %.lr.ph183.split.split.us199 ], [ %.0138.us194, %..critedge_crit_edge.split.us200 ], [ %.0138, %134 ], [ %.0138, %..critedge_crit_edge.split.us ] %148 = getelementptr inbounds nuw i8, ptr %14, i64 88 %149 = icmp eq i32 %2, 2 %150 = getelementptr inbounds nuw i8, ptr %14, i64 64 @@ -4473,7 +4473,7 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u br label %.lr.ph215 .lr.ph215: ; preds = %.lr.ph215.preheader, %185 - %.2136213 = phi ptr [ %187, %185 ], [ %.fr248, %.lr.ph215.preheader ] + %.2136213 = phi ptr [ %187, %185 ], [ %.fr248, %.lr.ph211.preheader ] %158 = getelementptr inbounds nuw i8, ptr %.2136213, i64 16 %159 = load ptr, ptr %158, align 8, !tbaa !89 %160 = getelementptr inbounds nuw i8, ptr %159, i64 1272 @@ -4532,7 +4532,7 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u br i1 %149, label %.critedge164, label %.lr.ph220 .lr.ph220: ; preds = %._crit_edge216, %194 - %.3137219 = phi ptr [ %196, %194 ], [ %.fr248, %._crit_edge216 ] + %.3137219 = phi ptr [ %196, %194 ], [ %.fr248, %._crit_edge212 ] %189 = getelementptr inbounds nuw i8, ptr %.3137219, i64 104 %190 = load double, ptr %189, align 8, !tbaa !153 %191 = fsub double %190, %.0130 @@ -4552,7 +4552,7 @@ define i32 @IDASolveB(ptr noundef %0, double noundef %1, i32 noundef %2) local_u br label %.split223 .critedge164: ; preds = %._crit_edge216, %156, %194, %153, %151, %.split223.us.split.us, %.split223.us.split.split.us, %.thread165, %94, %74, %70, %53, %47, %24, %18, %11, %6 - %.0129 = phi i32 [ -20, %6 ], [ -101, %11 ], [ -103, %18 ], [ -102, %24 ], [ -104, %47 ], [ -22, %53 ], [ -22, %74 ], [ %180, %.thread165 ], [ -22, %94 ], [ -22, %70 ], [ 0, %.split223.us.split.split.us ], [ 0, %.split223.us.split.us ], [ %152, %151 ], [ %154, %153 ], [ %.5, %194 ], [ %.5, %._crit_edge216 ], [ %157, %156 ] + %.0129 = phi i32 [ -20, %6 ], [ -101, %11 ], [ -103, %18 ], [ -102, %24 ], [ -104, %47 ], [ -22, %53 ], [ -22, %74 ], [ %180, %.thread165 ], [ -22, %94 ], [ -22, %70 ], [ 0, %.split218.us.split.split.us ], [ 0, %.split218.us.split.us ], [ %152, %151 ], [ %154, %153 ], [ %.5, %194 ], [ %.5, %._crit_edge212 ], [ %157, %156 ] call void @llvm.lifetime.end.p0(ptr nonnull %4) ret i32 %.0129 } diff --git a/bench/tev/optimized/StbiLdrImageSaver.ll b/bench/tev/optimized/StbiLdrImageSaver.ll index 51b18804c90..7198b180023 100644 --- a/bench/tev/optimized/StbiLdrImageSaver.ll +++ b/bench/tev/optimized/StbiLdrImageSaver.ll @@ -1705,7 +1705,7 @@ _ZL18stbiw__zlib_countmPhS_i.exit: ; preds = %81, %._crit_edge.lo br label %89 89: ; preds = %87, %._crit_edge.thread812 - %90 = phi i32 [ %spec.store.select, %87 ], [ %85, %._crit_edge.thread812 ] + %90 = phi i32 [ %spec.store.select, %87 ], [ %85, %._crit_edge.thread813 ] %91 = getelementptr inbounds i8, ptr %63, i64 -8 %92 = add nsw i32 %90, 1 %93 = load i32, ptr %91, align 4 @@ -2837,14 +2837,14 @@ _ZL18stbiw__zlib_flushfPhPjPi.exit402: ; preds = %_ZL14stbiw__sbgrowf .lr.ph679.preheader: ; preds = %.preheader %623 = zext nneg i32 %.4162683 to i64 %wide.trip.count754 = zext nneg i32 %.0686 to i64 - %invariant.gep = getelementptr i8, ptr %0, i64 %623 + %invariant.gep = getelementptr inbounds nuw i8, ptr %0, i64 %623 br label %.lr.ph679 .lr.ph679: ; preds = %.lr.ph679.preheader, %.lr.ph679 %indvars.iv751 = phi i64 [ 0, %.lr.ph679.preheader ], [ %indvars.iv.next752, %.lr.ph679 ] %.1678 = phi i32 [ %.0153685, %.lr.ph679.preheader ], [ %627, %.lr.ph679 ] %.1155677 = phi i32 [ %.0154684, %.lr.ph679.preheader ], [ %626, %.lr.ph679 ] - %gep = getelementptr i8, ptr %invariant.gep, i64 %indvars.iv751 + %gep = getelementptr inbounds nuw i8, ptr %invariant.gep, i64 %indvars.iv751 %624 = load i8, ptr %gep, align 1 %625 = zext i8 %624 to i32 %626 = add i32 %.1155677, %625 diff --git a/bench/typst-rs/optimized/5z4no3nnr5v1s13.ll b/bench/typst-rs/optimized/5z4no3nnr5v1s13.ll index 7f1a2592345..d7e33eb341c 100644 --- a/bench/typst-rs/optimized/5z4no3nnr5v1s13.ll +++ b/bench/typst-rs/optimized/5z4no3nnr5v1s13.ll @@ -133063,10 +133063,9 @@ define noundef nonnull align 8 ptr @"_ZN55_$LT$i64$u20$as$u20$typst..foundations ; Function Attrs: nonlazybind uwtable define void @"_ZN55_$LT$i64$u20$as$u20$typst..foundations..int..i64Ext$GT$10bit_lshift17h298cea451585ad12E"(ptr noalias noundef writeonly sret({ i64, [2 x i64] }) align 8 captures(none) dereferenceable(24) initializes((0, 8)) %0, i64 noundef %1, i32 noundef %2) unnamed_addr #2 { %4 = icmp ult i32 %2, 64 - %5 = and i32 %2, 63 - %6 = zext nneg i32 %5 to i64 - %7 = shl i64 %1, %6 - br i1 %4, label %13, label %_ZN4ecow7dynamic10DynamicVec10from_slice17h32e0f2ca9ee4cd1cE.llvm.12850028421071809815.exit + %5 = zext nneg i32 %2 to i64 + %6 = shl i64 %1, %5 + br i1 %4, label %12, label %_ZN4ecow7dynamic10DynamicVec10from_slice17h32e0f2ca9ee4cd1cE.llvm.12850028421071809815.exit _ZN4ecow7dynamic10DynamicVec10from_slice17h32e0f2ca9ee4cd1cE.llvm.12850028421071809815.exit: ; preds = %3 %8 = tail call { ptr, i64 } @"_ZN89_$LT$ecow..vec..EcoVec$LT$T$GT$$u20$as$u20$core..convert..From$LT$$RF$$u5b$T$u5d$$GT$$GT$4from17h4b21451a145e6dd5E"(ptr noalias noundef nonnull readonly align 1 @anon.53fe85e3a453dfbf0ab1e8743506e67c.1339, i64 noundef 23), !noalias !28115 @@ -133080,7 +133079,7 @@ _ZN4ecow7dynamic10DynamicVec10from_slice17h32e0f2ca9ee4cd1cE.llvm.12850028421071 13: ; preds = %3, %_ZN4ecow7dynamic10DynamicVec10from_slice17h32e0f2ca9ee4cd1cE.llvm.12850028421071809815.exit %.sink16 = phi i64 [ 16, %_ZN4ecow7dynamic10DynamicVec10from_slice17h32e0f2ca9ee4cd1cE.llvm.12850028421071809815.exit ], [ 8, %3 ] - %.sink = phi i64 [ %10, %_ZN4ecow7dynamic10DynamicVec10from_slice17h32e0f2ca9ee4cd1cE.llvm.12850028421071809815.exit ], [ %7, %3 ] + %.sink = phi i64 [ %10, %_ZN4ecow7dynamic10DynamicVec10from_slice17h32e0f2ca9ee4cd1cE.llvm.12850028421071809815.exit ], [ %6, %3 ] %storemerge = phi i64 [ 1, %_ZN4ecow7dynamic10DynamicVec10from_slice17h32e0f2ca9ee4cd1cE.llvm.12850028421071809815.exit ], [ 0, %3 ] %.sroa.09.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 %.sink16 store i64 %.sink, ptr %.sroa.09.sroa.4.0..sroa_idx, align 8 diff --git a/bench/velox/optimized/BaseVector.ll b/bench/velox/optimized/BaseVector.ll index c47ab500d74..0b32de8797b 100644 --- a/bench/velox/optimized/BaseVector.ll +++ b/bench/velox/optimized/BaseVector.ll @@ -31824,19 +31824,15 @@ _ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiEvT_S7_T0_.exit: for.cond.preheader: ; preds = %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiEvT_S7_T0_.exit %cmp1324 = icmp samesign ugt i32 %size, 1 - br i1 %cmp1324, label %for.body.preheader, label %cleanup - -for.body.preheader: ; preds = %for.cond.preheader - %wide.trip.count = zext nneg i32 %size to i64 - br label %for.body + br i1 %cmp1324, label %for.body, label %cleanup for.cond: ; preds = %invoke.cont20 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count + %exitcond.not = icmp eq i64 %indvars.iv.next, %conv br i1 %exitcond.not, label %cleanup, label %for.body, !llvm.loop !719 -for.body: ; preds = %for.body.preheader, %for.cond - %indvars.iv = phi i64 [ 1, %for.body.preheader ], [ %indvars.iv.next, %for.cond ] +for.body: ; preds = %for.cond.preheader, %for.cond + %indvars.iv = phi i64 [ %indvars.iv.next, %for.cond ], [ 1, %for.cond.preheader ] %3 = load ptr, ptr %indices, align 8 %add.ptr.i = getelementptr i32, ptr %3, i64 %indvars.iv %4 = load i32, ptr %add.ptr.i, align 4 diff --git a/bench/velox/optimized/DenseHll.ll b/bench/velox/optimized/DenseHll.ll index 8333d943c26..491fb7d6550 100644 --- a/bench/velox/optimized/DenseHll.ll +++ b/bench/velox/optimized/DenseHll.ll @@ -335,17 +335,12 @@ if.then11: ; preds = %if.end %overflows_.i17 = getelementptr inbounds nuw i8, ptr %this, i64 40 %13 = load i16, ptr %overflows_.i17, align 8 %cmp5.i = icmp sgt i16 %13, 0 - br i1 %cmp5.i, label %for.body.lr.ph.i, label %if.then11.if.else_crit_edge - -if.then11.if.else_crit_edge: ; preds = %if.then11 - %add.ptr.i.i.i.phi.trans.insert = getelementptr inbounds nuw i8, ptr %this, i64 56 - %.pre = load ptr, ptr %add.ptr.i.i.i.phi.trans.insert, align 8 - br label %if.else + %add.ptr.i.i18 = getelementptr inbounds nuw i8, ptr %this, i64 56 + %14 = load ptr, ptr %add.ptr.i.i18, align 8 + br i1 %cmp5.i, label %for.body.lr.ph.i, label %if.else for.body.lr.ph.i: ; preds = %if.then11 %conv.i18 = zext nneg i16 %13 to i64 - %add.ptr.i.i19 = getelementptr inbounds nuw i8, ptr %this, i64 56 - %14 = load ptr, ptr %add.ptr.i.i19, align 8 br label %for.body.i for.body.i: ; preds = %for.inc.i, %for.body.lr.ph.i @@ -370,15 +365,14 @@ if.then16: ; preds = %for.body.i store i8 %conv13, ptr %add.ptr2.i, align 1 br label %if.end20 -if.else: ; preds = %for.inc.i, %if.then11.if.else_crit_edge - %17 = phi ptr [ %.pre, %if.then11.if.else_crit_edge ], [ %14, %for.inc.i ] - %conv.i22 = sext i16 %13 to i64 - %add.i = add nsw i64 %conv.i22, 1 +if.else: ; preds = %for.inc.i, %if.then11 + %conv.i21 = sext i16 %13 to i64 + %add.i = add nsw i64 %conv.i21, 1 %add.ptr.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 56 %_M_finish.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 64 %18 = load ptr, ptr %_M_finish.i.i.i, align 8 %sub.ptr.lhs.cast.i.i.i = ptrtoint ptr %18 to i64 - %sub.ptr.rhs.cast.i.i.i = ptrtoint ptr %17 to i64 + %sub.ptr.rhs.cast.i.i.i = ptrtoint ptr %14 to i64 %sub.ptr.sub.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i, %sub.ptr.rhs.cast.i.i.i %sub.ptr.div.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i, 1 %cmp.i.i = icmp ugt i64 %add.i, %sub.ptr.div.i.i.i @@ -398,7 +392,7 @@ if.else.i.i: ; preds = %if.else br i1 %cmp4.i.i23, label %if.then5.i.i, label %_ZNSt6vectorItN8facebook5velox12StlAllocatorItEEE6resizeEm.exit.i if.then5.i.i: ; preds = %if.else.i.i - %add.ptr6.i.i = getelementptr inbounds i16, ptr %17, i64 %add.i + %add.ptr6.i.i = getelementptr inbounds i16, ptr %14, i64 %add.i %tobool.not.i.i.i = icmp eq ptr %18, %add.ptr6.i.i br i1 %tobool.not.i.i.i, label %_ZNSt6vectorItN8facebook5velox12StlAllocatorItEEE6resizeEm.exit.i, label %if.then.i.i.i @@ -407,8 +401,8 @@ if.then.i.i.i: ; preds = %if.then5.i.i br label %_ZNSt6vectorItN8facebook5velox12StlAllocatorItEEE6resizeEm.exit.i _ZNSt6vectorItN8facebook5velox12StlAllocatorItEEE6resizeEm.exit.i: ; preds = %if.then.i.i.i, %if.then5.i.i, %if.else.i.i, %if.then.i.i25 - %add5.pre-phi.i = phi i64 [ %.pre19.i, %if.then.i.i25 ], [ %add.i, %if.else.i.i ], [ %add.i, %if.then5.i.i ], [ %add.i, %if.then.i.i.i ] - %conv4.pre-phi.i = phi i64 [ %.pre18.i, %if.then.i.i25 ], [ %conv.i22, %if.else.i.i ], [ %conv.i22, %if.then5.i.i ], [ %conv.i22, %if.then.i.i.i ] + %add5.pre-phi.i = phi i64 [ %.pre19.i, %if.then.i.i24 ], [ %add.i, %if.else.i.i ], [ %add.i, %if.then5.i.i ], [ %add.i, %if.then.i.i.i ] + %conv4.pre-phi.i = phi i64 [ %.pre18.i, %if.then.i.i24 ], [ %conv.i21, %if.else.i.i ], [ %conv.i21, %if.then5.i.i ], [ %conv.i21, %if.then.i.i.i ] %add.ptr.i.i1.i = getelementptr inbounds nuw i8, ptr %this, i64 88 %_M_finish.i.i2.i = getelementptr inbounds nuw i8, ptr %this, i64 96 %19 = load ptr, ptr %_M_finish.i.i2.i, align 8 @@ -553,9 +547,9 @@ entry: br i1 %cmp5, label %for.body.lr.ph, label %return for.body.lr.ph: ; preds = %entry - %conv = zext nneg i16 %0 to i64 %add.ptr.i = getelementptr inbounds nuw i8, ptr %this, i64 56 %1 = load ptr, ptr %add.ptr.i, align 8 + %wide.trip.count = zext nneg i16 %0 to i64 br label %for.body for.body: ; preds = %for.body.lr.ph, %for.inc @@ -568,7 +562,7 @@ for.body: ; preds = %for.body.lr.ph, %fo for.inc: ; preds = %for.body %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next, %conv + %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %return, label %for.body, !llvm.loop !6 return.loopexit.split.loop.exit9: ; preds = %for.body @@ -774,7 +768,7 @@ for.body8.us: ; preds = %for.body8.lr.ph.us, for.inc.us: ; preds = %for.body8.us %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next, %conv6.us + %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %if.then50.us, label %for.body8.us, !llvm.loop !7 if.then13.us: ; preds = %for.body8.us @@ -835,8 +829,8 @@ for.cond5.preheader.us: ; preds = %for.body.us br i1 %cmp744.us, label %for.body8.lr.ph.us, label %if.then50.us for.body8.lr.ph.us: ; preds = %for.cond5.preheader.us - %conv6.us = zext nneg i16 %26 to i64 %27 = load ptr, ptr %add.ptr.i, align 8 + %wide.trip.count = zext nneg i16 %26 to i64 br label %for.body8.us for.cond.while.cond.loopexit_crit_edge.us: ; preds = %for.inc59.us @@ -1933,8 +1927,8 @@ if.then: ; preds = %for.body8 br i1 %cmp5.i, label %for.body.lr.ph.i, label %if.end36 for.body.lr.ph.i: ; preds = %if.then - %conv.i = zext nneg i16 %10 to i64 %11 = load ptr, ptr %add.ptr.i.i, align 8 + %wide.trip.count.i = zext nneg i16 %10 to i64 br label %for.body.i for.body.i: ; preds = %for.inc.i, %for.body.lr.ph.i @@ -1947,7 +1941,7 @@ for.body.i: ; preds = %for.inc.i, %for.bod for.inc.i: ; preds = %for.body.i %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 - %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %conv.i + %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %conv.i18 br i1 %exitcond.not.i, label %if.end36, label %for.body.i, !llvm.loop !6 _ZNK8facebook5velox6common3hll8DenseHll17findOverflowEntryEi.exit: ; preds = %for.body.i diff --git a/bench/verilator/optimized/V3OrderParallel.ll b/bench/verilator/optimized/V3OrderParallel.ll index 1b5d5741d46..497a29540b8 100644 --- a/bench/verilator/optimized/V3OrderParallel.ll +++ b/bench/verilator/optimized/V3OrderParallel.ll @@ -21222,53 +21222,57 @@ _ZL22partCheckCriticalPathsR7V3Graph.exit: ; preds = %.lr.ph.i, %249, %_Z call void @_ZN11Contraction24siblingPairFromRelativesILN8GraphWay2enE1ELb1EEEvP13V3GraphVertex(ptr noundef nonnull align 8 dereferenceable(248) %0, ptr noundef nonnull %.0109..0) call void @_ZN11Contraction24siblingPairFromRelativesILN8GraphWay2enE0ELb1EEEvP13V3GraphVertex(ptr noundef nonnull align 8 dereferenceable(248) %0, ptr noundef nonnull %.0109..0) %255 = getelementptr inbounds nuw i8, ptr %.0109..0, i64 24 - br label %256 + %.sroa.0161.0169 = load ptr, ptr %255, align 8, !tbaa !193 + %.not170 = icmp eq ptr %.sroa.0161.0169, null + br i1 %.not170, label %._crit_edge, label %.lr.ph -256: ; preds = %257, %_ZL22partCheckCriticalPathsR7V3Graph.exit - %.sroa.0161.0.in = phi ptr [ %255, %_ZL22partCheckCriticalPathsR7V3Graph.exit ], [ %258, %257 ] - %.0114 = phi i32 [ 0, %_ZL22partCheckCriticalPathsR7V3Graph.exit ], [ %263, %257 ] - %.sroa.0161.0 = load ptr, ptr %.sroa.0161.0.in, align 8, !tbaa !193 +256: ; preds = %257 + %257 = add nuw nsw i32 %.0114171, 1 + %.sroa.0161.0 = load ptr, ptr %258, align 8, !tbaa !193 %.not = icmp eq ptr %.sroa.0161.0, null - br i1 %.not, label %264, label %257 + br i1 %.not, label %._crit_edge, label %257 -257: ; preds = %256 - %258 = getelementptr inbounds nuw i8, ptr %.sroa.0161.0, i64 8 +257: ; preds = %_ZL22partCheckCriticalPathsR7V3Graph.exit, %256 + %.sroa.0161.0172 = phi ptr [ %.sroa.0161.0, %256 ], [ %.sroa.0161.0169, %_ZL22partCheckCriticalPathsR7V3Graph.exit ] + %.0114171 = phi i32 [ %257, %256 ], [ 0, %_ZL22partCheckCriticalPathsR7V3Graph.exit ] + %258 = getelementptr inbounds nuw i8, ptr %.sroa.0161.0172, i64 8 %259 = load ptr, ptr %258, align 8, !tbaa !128 %.not.i = icmp eq ptr %259, null - %260 = select i1 %.not.i, ptr %.sroa.0161.0, ptr %259 + %260 = select i1 %.not.i, ptr %.sroa.0161.0172, ptr %259 call void @llvm.prefetch.p0(ptr nonnull %260, i32 1, i32 3, i32 1) - %261 = getelementptr inbounds nuw i8, ptr %.sroa.0161.0, i64 48 + %261 = getelementptr inbounds nuw i8, ptr %.sroa.0161.0172, i64 48 %262 = load ptr, ptr %261, align 8, !tbaa !30 call void @_ZN11Contraction24siblingPairFromRelativesILN8GraphWay2enE1ELb0EEEvP13V3GraphVertex(ptr noundef nonnull align 8 dereferenceable(248) %0, ptr noundef %262) - %263 = add nuw nsw i32 %.0114, 1 - %exitcond.not = icmp eq i32 %263, 26 - br i1 %exitcond.not, label %264, label %256 - -264: ; preds = %256, %257 - %265 = getelementptr inbounds nuw i8, ptr %.0109..0, i64 40 - br label %266 - -266: ; preds = %267, %264 - %.sroa.0155.0.in = phi ptr [ %265, %264 ], [ %268, %267 ] - %.1115 = phi i32 [ 0, %264 ], [ %273, %267 ] - %.sroa.0155.0 = load ptr, ptr %.sroa.0155.0.in, align 8, !tbaa !193 + %exitcond.not = icmp eq i32 %.0114171, 25 + br i1 %exitcond.not, label %._crit_edge, label %256 + +._crit_edge: ; preds = %.lr.ph, %256, %_ZL22partCheckCriticalPathsR7V3Graph.exit + %263 = getelementptr inbounds nuw i8, ptr %.0109..0, i64 40 + %.sroa.0155.0174 = load ptr, ptr %263, align 8, !tbaa !193 + %.not168175 = icmp eq ptr %.sroa.0155.0174, null + br i1 %.not168175, label %._crit_edge180, label %.lr.ph179 + +264: ; preds = %267 + %265 = add nuw nsw i32 %.1115176, 1 + %.sroa.0155.0 = load ptr, ptr %266, align 8, !tbaa !193 %.not168 = icmp eq ptr %.sroa.0155.0, null - br i1 %.not168, label %274, label %267 - -267: ; preds = %266 - %268 = getelementptr inbounds nuw i8, ptr %.sroa.0155.0, i64 24 - %269 = load ptr, ptr %268, align 8, !tbaa !128 - %.not.i118 = icmp eq ptr %269, null - %270 = select i1 %.not.i118, ptr %.sroa.0155.0, ptr %269 - call void @llvm.prefetch.p0(ptr nonnull %270, i32 1, i32 3, i32 1) - %271 = getelementptr inbounds nuw i8, ptr %.sroa.0155.0, i64 40 - %272 = load ptr, ptr %271, align 8, !tbaa !24 - call void @_ZN11Contraction24siblingPairFromRelativesILN8GraphWay2enE0ELb0EEEvP13V3GraphVertex(ptr noundef nonnull align 8 dereferenceable(248) %0, ptr noundef %272) - %273 = add nuw nsw i32 %.1115, 1 - %exitcond169.not = icmp eq i32 %273, 26 - br i1 %exitcond169.not, label %274, label %266 - -274: ; preds = %266, %267 + br i1 %.not168, label %._crit_edge180, label %267 + +267: ; preds = %._crit_edge, %264 + %.sroa.0155.0177 = phi ptr [ %.sroa.0155.0, %264 ], [ %.sroa.0155.0174, %._crit_edge ] + %.1115176 = phi i32 [ %265, %264 ], [ 0, %._crit_edge ] + %266 = getelementptr inbounds nuw i8, ptr %.sroa.0155.0177, i64 24 + %267 = load ptr, ptr %266, align 8, !tbaa !128 + %.not.i118 = icmp eq ptr %267, null + %268 = select i1 %.not.i118, ptr %.sroa.0155.0177, ptr %267 + call void @llvm.prefetch.p0(ptr nonnull %268, i32 1, i32 3, i32 1) + %269 = getelementptr inbounds nuw i8, ptr %.sroa.0155.0177, i64 40 + %270 = load ptr, ptr %269, align 8, !tbaa !24 + call void @_ZN11Contraction24siblingPairFromRelativesILN8GraphWay2enE0ELb0EEEvP13V3GraphVertex(ptr noundef nonnull align 8 dereferenceable(248) %0, ptr noundef %270) + %exitcond182.not = icmp eq i32 %.1115176, 25 + br i1 %exitcond182.not, label %._crit_edge180, label %264 + +._crit_edge180: ; preds = %.lr.ph179, %264, %._crit_edge ret void } diff --git a/bench/wireshark/optimized/androiddump.ll b/bench/wireshark/optimized/androiddump.ll index c49ac27a4d1..3933f61f07b 100644 --- a/bench/wireshark/optimized/androiddump.ll +++ b/bench/wireshark/optimized/androiddump.ll @@ -3714,7 +3714,7 @@ define internal fastcc noundef ptr @adb_send_and_read(i32 noundef range(i32 0, - 15: ; preds = %.preheader %16 = add i64 %21, %.04762 %17 = icmp slt i64 %16, 4 - br i1 %17, label %.preheader, label %24, !llvm.loop !60 + br i1 %17, label %.preheader, label %31, !llvm.loop !60 .preheader: ; preds = %10, %15 %.04762 = phi i64 [ %16, %15 ], [ 0, %10 ] @@ -3730,47 +3730,40 @@ define internal fastcc noundef ptr @adb_send_and_read(i32 noundef range(i32 0, - tail call void (ptr, i32, ptr, i64, ptr, ptr, ...) @ws_log_full(ptr noundef nonnull @.str.1, i32 noundef 5, ptr noundef nonnull @.str.2, i64 noundef 780, ptr noundef nonnull @__func__.adb_send_and_read, ptr noundef nonnull @.str.112, ptr noundef %1) br label %47 -24: ; preds = %15 - %25 = load i32, ptr %2, align 1 - %26 = getelementptr i8, ptr %2, i64 %16 - %27 = shl i64 %16, 32 - %sext542 = sub i64 281470681743360, %27 - %28 = ashr exact i64 %sext542, 32 - %29 = tail call i64 @recv(i32 noundef %0, ptr noundef %26, i64 noundef %28, i32 noundef 0) - %30 = icmp slt i64 %29, 0 - br i1 %30, label %._crit_edge, label %.lr.ph - -31: ; preds = %.lr.ph - %32 = add i64 %38, %.148633 - %33 = getelementptr i8, ptr %2, i64 %32 - %34 = shl i64 %32, 32 - %sext54 = sub i64 281470681743360, %34 - %35 = ashr exact i64 %sext54, 32 - %36 = tail call i64 @recv(i32 noundef %0, ptr noundef %33, i64 noundef %35, i32 noundef 0) - %37 = icmp slt i64 %36, 0 - br i1 %37, label %._crit_edge, label %.lr.ph - -._crit_edge: ; preds = %31, %24 +31: ; preds = %15 + %24 = load i32, ptr %2, align 1 + br label %.lr.ph + +.lr.ph:; preds = %31, %31 + %.14863 = phi i64 [ %33, %31 ], [ %16, %.lr.ph.preheader ] + %25 = getelementptr i8, ptr %2, i64 %.14863 + %26 = shl i64 %.14863, 32 + %sext54 = sub i64 281470681743360, %26 + %27 = ashr exact i64 %sext54, 32 + %28 = tail call i64 @recv(i32 noundef %0, ptr noundef %25, i64 noundef %27, i32 noundef 0) + %29 = icmp slt i64 %28, 0 + br i1 %29, label %30, label %31 + +30: ; preds = %.lr.ph tail call void (ptr, i32, ptr, i64, ptr, ptr, ...) @ws_log_full(ptr noundef nonnull @.str.1, i32 noundef 5, ptr noundef nonnull @.str.2, i64 noundef 794, ptr noundef nonnull @__func__.adb_send_and_read, ptr noundef nonnull @.str.114, ptr noundef %1) br label %47 -.lr.ph: ; preds = %24, %31 - %38 = phi i64 [ %36, %31 ], [ %29, %24 ] - %.148633 = phi i64 [ %32, %31 ], [ %16, %24 ] - %39 = icmp eq i64 %38, 0 - br i1 %39, label %split, label %31 +.lr.ph: ; preds = %.lr.ph + %32 = icmp eq i64 %28, 0 + %33 = add i64 %28, %.14863 + br i1 %32, label %split, label %.lr.ph, !llvm.loop !61 split: ; preds = %.lr.ph %.not55 = icmp eq ptr %3, null br i1 %.not55, label %42, label %40 40: ; preds = %split - %41 = add i64 %.148633, -4 + %41 = add i64 %.14863, -4 store i64 %41, ptr %3, align 8 br label %42 42: ; preds = %40, %split - %.not4 = icmp eq i32 %25, 1497451343 + %.not4 = icmp eq i32 %24, 1497451343 br i1 %.not4, label %45, label %43 43: ; preds = %42 @@ -3785,8 +3778,8 @@ split: ; preds = %.lr.ph %46 = getelementptr i8, ptr %2, i64 4 br label %47 -47: ; preds = %43, %44, %13, %14, %45, %._crit_edge, %23, %9 - %.0 = phi ptr [ null, %9 ], [ null, %23 ], [ null, %._crit_edge ], [ %46, %45 ], [ null, %14 ], [ null, %13 ], [ null, %44 ], [ null, %43 ] +47: ; preds = %43, %44, %13, %14, %45, %30, %23, %9 + %.0 = phi ptr [ null, %9 ], [ null, %23 ], [ null, %30 ], [ %46, %39 ], [ null, %14 ], [ null, %13 ], [ null, %38 ], [ null, %37 ] ret ptr %.0 } @@ -4000,7 +3993,7 @@ define internal fastcc range(i32 0, 34) i32 @adb_send(i32 noundef range(i32 0, - %17 = trunc i64 %24 to i32 %18 = add i32 %.02124, %17 %19 = icmp slt i32 %18, 4 - br i1 %19, label %.preheader, label %27, !llvm.loop !61 + br i1 %19, label %.preheader, label %27, !llvm.loop !62 .preheader: ; preds = %12, %16 %.02124 = phi i32 [ %18, %16 ], [ 0, %12 ] @@ -4131,7 +4124,7 @@ define internal fastcc noundef zeroext i1 @extcap_dumper_dump(i32 %0, ptr nonnul 21: ; preds = %8 %22 = load i32, ptr %3, align 4 - %23 = tail call i32 asm "bswapl $0", "=r,0,~{dirflag},~{fpsr},~{flags}"(i32 %22) #25, !srcloc !62 + %23 = tail call i32 asm "bswapl $0", "=r,0,~{dirflag},~{fpsr},~{flags}"(i32 %22) #25, !srcloc !63 %.not = icmp eq i32 %23, 0 %24 = getelementptr inbounds nuw i8, ptr %11, i64 80 %25 = zext i1 %.not to i8 @@ -4321,4 +4314,5 @@ attributes #26 = { cold noreturn nounwind } !59 = distinct !{!59, !8} !60 = distinct !{!60, !8} !61 = distinct !{!61, !8} -!62 = !{i64 2150177821} +!62 = distinct !{!62, !8} +!63 = !{i64 2150177821} diff --git a/bench/wolfssl/optimized/benchmark.ll b/bench/wolfssl/optimized/benchmark.ll index bec3340e622..88f0219671d 100644 --- a/bench/wolfssl/optimized/benchmark.ll +++ b/bench/wolfssl/optimized/benchmark.ll @@ -1748,35 +1748,35 @@ bench_stats_check.exit: ; preds = %._crit_edge call void @llvm.lifetime.end.p0(ptr nonnull %6) %70 = fsub double %69, %35 %71 = fcmp uge double %70, 1.000000e+00 - br i1 %71, label %.preheader83, label %45, !llvm.loop !27 + br i1 %71, label %72, label %45, !llvm.loop !27 -72: ; preds = %.preheader83 +72: ; preds = %bench_stats_check.exit + %73 = load i32, ptr @bench_size, align 4, !tbaa !4 + call fastcc void @bench_stats_sym_finish(ptr noundef %3, i32 noundef %63, i32 noundef %73, double noundef %35, i32 noundef %.2.lcssa) + %74 = call i32 @wc_AesSetKey(ptr noundef nonnull %8, ptr noundef %0, i32 noundef %1, ptr noundef %2, i32 noundef 1) #17 + %.not39 = icmp eq i32 %74, 0 + br i1 %.not39, label %75, label %78, !llvm.loop !28 + +75: ; preds = %72 call void @llvm.lifetime.start.p0(ptr nonnull %5) %73 = call i32 @clock_gettime(i32 noundef 0, ptr noundef nonnull %5) #17 %74 = icmp slt i32 %73, 0 - br i1 %74, label %79, label %bench_stats_start.exit44 - -.preheader83: ; preds = %bench_stats_check.exit - %75 = load i32, ptr @bench_size, align 4, !tbaa !4 - call fastcc void @bench_stats_sym_finish(ptr noundef %3, i32 noundef %63, i32 noundef %75, double noundef %35, i32 noundef %.2.lcssa) - %76 = call i32 @wc_AesSetKey(ptr noundef nonnull %8, ptr noundef %0, i32 noundef %1, ptr noundef %2, i32 noundef 1) #17 - %.not39 = icmp eq i32 %76, 0 - br i1 %.not39, label %72, label %77, !llvm.loop !28 - -77: ; preds = %.preheader83 - %78 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.129, i32 noundef %76) - br label %111 - -79: ; preds = %72 - %80 = tail call ptr @__errno_location() #18 - %81 = load i32, ptr %80, align 4, !tbaa !4 - %82 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.78, ptr noundef nonnull @.str.113, ptr noundef nonnull @.str.79, i32 noundef 14994, i32 noundef %81, ptr noundef nonnull @.str.80) - %83 = load ptr, ptr @stdout, align 8, !tbaa !14 - %84 = call i32 @fflush(ptr noundef %83) + br i1 %74, label %80, label %bench_stats_start.exit44 + +.preheader83: ; preds = %72 + %79 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.129, i32 noundef %74) + br label %112 + +80:; preds = %75 + %81 = tail call ptr @__errno_location() #18 + %82 = load i32, ptr %81, align 4, !tbaa !4 + %83 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str..preheader83, ptr noundef nonnull @.str.113, ptr noundef nonnull @.str.79, i32 noundef 14994, i32 noundef %82, ptr noundef nonnull @.str.80) + %84 = load ptr, ptr @stdout, align 8, !tbaa !14 + %85 = call i32 @fflush(ptr noundef %84) call void @_exit(i32 noundef 1) #19 unreachable -bench_stats_start.exit44: ; preds = %72 +bench_stats_start.exit44: ; preds = %75 %85 = load i64, ptr %5, align 8, !tbaa !16 %86 = sitofp i64 %85 to double %87 = getelementptr inbounds nuw i8, ptr %5, i64 8 @@ -1788,49 +1788,49 @@ bench_stats_start.exit44: ; preds = %72 %92 = call { i32, i32 } asm sideeffect "cpuid\0A\09rdtsc", "={ax},={dx},{ax},~{ebx},~{ecx},~{dirflag},~{fpsr},~{flags}"(i32 0) #17, !srcloc !20 %93 = extractvalue { i32, i32 } %92, 0 %94 = extractvalue { i32, i32 } %92, 1 - %95 = zext i32 %93 to i64 %96 = zext i32 %94 to i64 - %97 = shl nuw i64 %96, 32 - %98 = or disjoint i64 %97, %95 - store i64 %98, ptr %43, align 8, !tbaa !21 - br label %99 - -99: ; preds = %._crit_edge112, %bench_stats_start.exit44 - %.272 = phi i32 [ 0, %bench_stats_start.exit44 ], [ %108, %._crit_edge112 ] - %.6 = phi i32 [ 0, %bench_stats_start.exit44 ], [ %.7.lcssa, %._crit_edge112 ] - %100 = load i32, ptr @numBlocks, align 4, !tbaa !4 - %101 = icmp sgt i32 %100, 0 - br i1 %101, label %.preheader, label %._crit_edge112 - -.preheader: ; preds = %99, %bench_async_handle.exit46 - %.266111 = phi i32 [ %105, %bench_async_handle.exit46 ], [ 0, %99 ] - %102 = load i32, ptr @bench_size, align 4, !tbaa !4 - %103 = call i32 @wc_AesCbcDecrypt(ptr noundef nonnull %8, ptr noundef %12, ptr noundef %10, i32 noundef %102) #17 - %104 = icmp sgt i32 %103, -1 - br i1 %104, label %bench_async_handle.exit46, label %bench_async_handle.exit46.thread + %97 = zext i32 %95 to i64 + %98 = shl nuw i64 %97, 32 + %99 = or disjoint i64 %98, %96 + store i64 %99, ptr %43, align 8, !tbaa !21 + br label %100 + +100:; preds = %._crit_edge112, %bench_stats_start.exit44 + %.6 = phi i32 [ 0, %bench_stats_start.exit44 ], [ %109, %._crit_edge111 ] + %.6 = phi i32 [ 0, %bench_stats_start.exit44 ], [ %.7.lcssa, %._crit_edge111 ] + %101 = load i32, ptr @numBlocks, align 4, !tbaa !4 + %102 = icmp sgt i32 %101, 0 + br i1 %102, label %.preheader, label %._crit_edge111 + +.preheader: ; preds = %100, %bench_async_handle.exit46 + %.266110 = phi i32 [ %106, %bench_async_handle.exit46 ], [ 0, %100 ] + %103 = load i32, ptr @bench_size, align 4, !tbaa !4 + %104 = call i32 @wc_AesCbcDecrypt(ptr noundef nonnull %8, ptr noundef %12, ptr noundef %10, i32 noundef %103) #17 + %105 = icmp sgt i32 %104, -1 + br i1 %105, label %bench_async_handle.exit46, label %bench_async_handle.exit46.thread bench_async_handle.exit46: ; preds = %.preheader - %105 = add nuw nsw i32 %.266111, 1 + %105 = add nuw nsw i32 %.266110, 1 %106 = load i32, ptr @numBlocks, align 4, !tbaa !4 %107 = icmp slt i32 %105, %106 br i1 %107, label %.preheader, label %._crit_edge112, !llvm.loop !29 -._crit_edge112: ; preds = %bench_async_handle.exit46, %99 - %.266.lcssa = phi i32 [ 0, %99 ], [ %105, %bench_async_handle.exit46 ] - %.7.lcssa = phi i32 [ %.6, %99 ], [ %103, %bench_async_handle.exit46 ] +._crit_edge112: ; preds = %bench_async_handle.exit46, %100 + %.266.lcssa = phi i32 [ 0, %100 ], [ %105, %bench_async_handle.exit46 ] + %.7.lcssa = phi i32 [ %.6, %100 ], [ %104, %bench_async_handle.exit46 ] %108 = add nsw i32 %.266.lcssa, %.272 %109 = call fastcc i32 @bench_stats_check(double noundef %91) %.not37 = icmp eq i32 %109, 0 - br i1 %.not37, label %bench_async_handle.exit46.thread, label %99, !llvm.loop !30 + br i1 %.not37, label %bench_async_handle.exit46.thread, label %100, !llvm.loop !30 bench_async_handle.exit46.thread: ; preds = %._crit_edge112, %.preheader - %.373 = phi i32 [ %.272, %.preheader ], [ %108, %._crit_edge112 ] - %.9 = phi i32 [ %103, %.preheader ], [ %.7.lcssa, %._crit_edge112 ] + %.373 = phi i32 [ %.272, %.preheader ], [ %108, %._crit_edge111 ] + %.9 = phi i32 [ %104, %.preheader ], [ %.7.lcssa, %._crit_edge111 ] %110 = load i32, ptr @bench_size, align 4, !tbaa !4 call fastcc void @bench_stats_sym_finish(ptr noundef %4, i32 noundef %.373, i32 noundef %110, double noundef %91, i32 noundef %.9) br label %111 -111: ; preds = %14, %18, %77, %bench_async_handle.exit46.thread, %.thread +111: ; preds = %14, %18, %78, %bench_async_handle.exit46.thread, %.thread call void @wc_AesFree(ptr noundef nonnull %8) #17 call void @llvm.lifetime.end.p0(ptr nonnull %8) ret void diff --git a/bench/zed-rs/optimized/3puy2qvhvlnhff2105q9h6j8i.ll b/bench/zed-rs/optimized/3puy2qvhvlnhff2105q9h6j8i.ll index 991a56df700..28c0507485e 100644 --- a/bench/zed-rs/optimized/3puy2qvhvlnhff2105q9h6j8i.ll +++ b/bench/zed-rs/optimized/3puy2qvhvlnhff2105q9h6j8i.ll @@ -175740,7 +175740,7 @@ define hidden void @_ZN4gpui8platform5linux7wayland6window21WaylandWindowStatePt br label %34 34: ; preds = %122, %30 - %.pn = phi { ptr, i32 } [ %lpad.thr_comm, %122 ], [ %31, %30 ] + %.pn = phi { ptr, i32 } [ %lpad.thr_comm, %120 ], [ %31, %30 ] resume { ptr, i32 } %.pn 35: ; preds = %19, %"._ZN89_$LT$alloc..boxed..Box$LT$F$C$A$GT$$u20$as$u20$core..ops..function..FnMut$LT$Args$GT$$GT$8call_mut17he945896eb4cb0123E.exit_crit_edge" @@ -175798,7 +175798,7 @@ define hidden void @_ZN4gpui8platform5linux7wayland6window21WaylandWindowStatePt 53: ; preds = %42 br i1 %brmerge1.not, label %70, label %84 -54: ; preds = %52, %70 +54: ; preds = %52 %55 = getelementptr inbounds nuw i8, ptr %4, i64 2672 %56 = load i32, ptr %55, align 8, !range !6848, !noundef !4 %57 = getelementptr inbounds nuw i8, ptr %4, i64 2676 @@ -175831,19 +175831,15 @@ define hidden void @_ZN4gpui8platform5linux7wayland6window21WaylandWindowStatePt br label %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit.thread 70: ; preds = %53 - %71 = trunc i8 %.sroa.7.0.copyload to i1 - br i1 %71, label %54, label %72 - -72: ; preds = %70 - %73 = getelementptr inbounds nuw i8, ptr %4, i64 4088 - %74 = load float, ptr %73, align 8, !noundef !4 - %75 = getelementptr inbounds nuw i8, ptr %4, i64 4092 - %76 = load float, ptr %75, align 4, !noundef !4 + %71 = getelementptr inbounds nuw i8, ptr %4, i64 4088 + %72 = load float, ptr %71, align 8, !noundef !4 + %73 = getelementptr inbounds nuw i8, ptr %4, i64 4092 + %74 = load float, ptr %73, align 4, !noundef !4 br label %_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit.thread -_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit.thread: ; preds = %72, %"_ZN4gpui8platform5linux7wayland6window18compute_outer_size28_$u7b$$u7b$closure$u7d$$u7d$17h766a8caf81276d99E.exit.i" - %.sroa.7.0.ph = phi float [ %.sroa.0.1.i.i, %"_ZN4gpui8platform5linux7wayland6window18compute_outer_size28_$u7b$$u7b$closure$u7d$$u7d$17h766a8caf81276d99E.exit.i" ], [ %74, %72 ] - %.sroa.9.0.ph = phi float [ %.sroa.6.1.i.i, %"_ZN4gpui8platform5linux7wayland6window18compute_outer_size28_$u7b$$u7b$closure$u7d$$u7d$17h766a8caf81276d99E.exit.i" ], [ %76, %72 ] +_ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.exit.thread: ; preds = %70, %"_ZN4gpui8platform5linux7wayland6window18compute_outer_size28_$u7b$$u7b$closure$u7d$$u7d$17h766a8caf81276d99E.exit.i" + %.sroa.7.0.ph = phi float [ %.sroa.0.1.i.i, %"_ZN4gpui8platform5linux7wayland6window18compute_outer_size28_$u7b$$u7b$closure$u7d$$u7d$17h766a8caf81276d99E.exit.i" ], [ %72, %70 ] + %.sroa.9.0.ph = phi float [ %.sroa.6.1.i.i, %"_ZN4gpui8platform5linux7wayland6window18compute_outer_size28_$u7b$$u7b$closure$u7d$$u7d$17h766a8caf81276d99E.exit.i" ], [ %74, %70 ] %77 = bitcast float %.sroa.7.0.ph to i32 %78 = bitcast float %.sroa.9.0.ph to i32 br label %.thread164 @@ -175876,8 +175872,8 @@ _ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.e br i1 %trunc70, label %85, label %.thread179 85: ; preds = %84, %.thread164 - %.sroa.12.0170 = phi i32 [ %81, %.thread164 ], [ %.sroa.510.sroa.0.0.copyload132, %84 ] - %.sroa.6137.0169 = phi i32 [ %82, %.thread164 ], [ %.sroa.510.sroa.0.0.copyload131, %84 ] + %.sroa.12.0170 = phi i32 [ %81, %.thread164 ], [ %.sroa.510.sroa.0.0.copyload132, %82 ] + %.sroa.6137.0169 = phi i32 [ %82, %.thread164 ], [ %.sroa.510.sroa.0.0.copyload131, %82 ] call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !45450 %86 = getelementptr inbounds nuw i8, ptr %3, i64 4 store i32 %.sroa.6137.0169, ptr %86, align 4, !noalias !45450 @@ -175898,7 +175894,7 @@ _ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.e store i64 -1, ptr %5, align 8 %89 = getelementptr inbounds nuw i8, ptr %4, i64 2680 invoke void @_ZN17wayland_protocols3xdg5shell9generated6client11xdg_surface10XdgSurface13ack_configure17h9f07ed30af10763bE(ptr noalias noundef nonnull readonly align 8 dereferenceable(64) %89, i32 noundef %1) - to label %91 unwind label %122 + to label %89 unwind label %122 90: ; preds = %85 tail call void @_ZN4core4cell22panic_already_borrowed17h47d80d4a02d76176E(ptr noalias noundef readonly align 8 dereferenceable(24) @anon.7523ee657f2e5dc230e124b7b1f1e478.880) #55 @@ -175941,25 +175937,25 @@ _ZN4gpui8platform5linux7wayland6window18compute_outer_size17hcc15f31872b93849E.e %..i.i.i = tail call noundef i32 @llvm.smax.i32(i32 %109, i32 1) %..i2.i.i = tail call noundef i32 @llvm.smax.i32(i32 %110, i32 1) invoke void @_ZN17wayland_protocols3xdg5shell9generated6client11xdg_surface10XdgSurface19set_window_geometry17hc2720b7099082ac1E(ptr noalias noundef nonnull readonly align 8 dereferenceable(64) %89, i32 noundef %107, i32 noundef %108, i32 noundef %..i.i.i, i32 noundef %..i2.i.i) - to label %111 unwind label %122 + to label %109 unwind label %122 -111: ; preds = %91 - %112 = getelementptr inbounds nuw i8, ptr %4, i64 4132 - %113 = load i8, ptr %112, align 4, !range !232, !noundef !4 - %114 = trunc nuw i8 %113 to i1 - br i1 %114, label %115, label %119 +115: ; preds = %91 + %110 = getelementptr inbounds nuw i8, ptr %4, i64 4132 + %111 = load i8, ptr %110, align 4, !range !232, !noundef !4 + %112 = trunc nuw i8 %111 to i1 + br i1 %112, label %113, label %117 -115: ; preds = %111 - %116 = load i64, ptr %5, align 8, !noalias !45453, !noundef !4 - %117 = add i64 %116, 1 - store i64 %117, ptr %5, align 8, !noalias !45453 - br label %118 +113: ; preds = %109 + %114 = load i64, ptr %5, align 8, !noalias !45453, !noundef !4 + %115 = add i64 %114, 1 + store i64 %115, ptr %5, align 8, !noalias !45453 + br label %116 -118: ; preds = %119, %115 +118: ; preds = %119, %113 ret void -119: ; preds = %111 - store i8 1, ptr %112, align 4 +119: ; preds = %115 + store i8 1, ptr %110, align 4 %120 = load i64, ptr %5, align 8, !noalias !45460, !noundef !4 %121 = add i64 %120, 1 store i64 %121, ptr %5, align 8, !noalias !45460 diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c8d0fce0bf7..06fdcbc4f63 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/170835 export COMPTIME_MODE=0 export STAT_MODE=0 export STAT_NAME=""