diff --git a/bench/abc/optimized/bmcMulti.ll b/bench/abc/optimized/bmcMulti.ll index a4c88be572f..3572476cc97 100644 --- a/bench/abc/optimized/bmcMulti.ll +++ b/bench/abc/optimized/bmcMulti.ll @@ -558,9 +558,11 @@ Vec_PtrCountZero.exit: ; preds = %104, %100 %111 = zext i1 %.not131 to i32 store i32 %111, ptr %84, align 8, !tbaa !75 store i32 %.0121210, ptr %85, align 8, !tbaa !76 - %112 = mul nuw nsw i32 %.0120211, 17 - %113 = urem i32 %112, 500 - store i32 %113, ptr %86, align 4, !tbaa !77 + %112 = trunc nuw i32 %.0120211 to i16 + %113 = mul nuw i16 %112, 17 + %113 = urem i16 %113, 500 + %.zext = zext nneg i16 %113 to i32 + store i32 %.zext, ptr %86, align 4, !tbaa !77 store i32 5, ptr %87, align 4, !tbaa !78 %114 = call i32 @Ssw_RarSimulate(ptr noundef %.0213, ptr noundef nonnull %7) #16 %115 = getelementptr inbounds nuw i8, ptr %.0213, i64 416 diff --git a/bench/abc/optimized/cuddGenCof.ll b/bench/abc/optimized/cuddGenCof.ll index cf529abec76..153adcb14ef 100644 --- a/bench/abc/optimized/cuddGenCof.ll +++ b/bench/abc/optimized/cuddGenCof.ll @@ -1785,7 +1785,8 @@ define noalias noundef ptr @Cudd_bddCharToVect(ptr noundef %0, ptr noundef %1) l br label %.backedge .split: ; preds = %.backedge - br i1 %30, label %.thread40, label %.split.thread66 + %56 = icmp eq ptr %29, null + br i1 %56, label %.thread40, label %.split.thread66 .thread40: ; preds = %.thread, %.preheader42, %.split tail call void @free(ptr noundef %14) #9 diff --git a/bench/abseil-cpp/optimized/cordz_handle_test.ll b/bench/abseil-cpp/optimized/cordz_handle_test.ll index c1f07a6b1c0..86384349ef2 100644 --- a/bench/abseil-cpp/optimized/cordz_handle_test.ll +++ b/bench/abseil-cpp/optimized/cordz_handle_test.ll @@ -25462,7 +25462,9 @@ define linkonce_odr dso_local noundef i32 @_ZNSt24uniform_int_distributionIiEclI 21: ; preds = %16 store i64 %19, ptr %1, align 8, !tbaa !737 - %22 = udiv i64 %20, %.zext + %22 = trunc nsw i64 %20 to i32 + %22 = udiv i32 %.lhs.trunc, %14 + %.zext29 = zext nneg i32 %22 to i64 br label %.loopexit 23: ; preds = %3 @@ -25508,7 +25510,7 @@ define linkonce_odr dso_local noundef i32 @_ZNSt24uniform_int_distributionIiEclI .loopexit: ; preds = %.loopexit.loopexit, %39, %21 %44 = phi i32 [ %8, %21 ], [ %8, %39 ], [ %.pre, %.loopexit.loopexit ] - %.0 = phi i64 [ %22, %21 ], [ %43, %39 ], [ %35, %.loopexit.loopexit ] + %.0 = phi i64 [ %.zext29, %21 ], [ %43, %39 ], [ %35, %.loopexit.loopexit ] %45 = trunc i64 %.0 to i32 %46 = add i32 %44, %45 ret i32 %46 diff --git a/bench/actix-rs/optimized/4pmtvrahn6eloepe.ll b/bench/actix-rs/optimized/4pmtvrahn6eloepe.ll index 20c3a881ee5..7012360730b 100644 --- a/bench/actix-rs/optimized/4pmtvrahn6eloepe.ll +++ b/bench/actix-rs/optimized/4pmtvrahn6eloepe.ll @@ -2154,11 +2154,11 @@ select.unfold.i: ; preds = %70 br i1 %140, label %139, label %137 137: ; preds = %.loopexit80.i - %138 = trunc nuw i8 %.1.ph.i.ph to i1 + %138 = trunc nuw i8 %.1.ph.i to i1 br i1 %138, label %147, label %149 139: ; preds = %.loopexit80.i, %128 - %.087.i = phi i8 [ 0, %128 ], [ %.1.ph.i.ph, %.loopexit80.i ] + %.087.i = phi i8 [ 0, %128 ], [ %.1.ph.i, %.loopexit80.i ] %140 = phi i1 [ true, %128 ], [ false, %.loopexit80.i ] %.sroa.8.086.i.sroa.phi = phi ptr [ %9, %128 ], [ %.sroa.8.086.i.sroa.gep65, %.loopexit80.i ] %.sroa.8.086.i.sroa.phi66 = phi ptr [ %8, %128 ], [ %.sroa.8.086.i.sroa.gep68, %.loopexit80.i ] @@ -2169,7 +2169,7 @@ select.unfold.i: ; preds = %70 %145 = getelementptr inbounds nuw i8, ptr %.sroa.8.086.i.sroa.phi66, i64 8 %146 = load i64, ptr %145, align 8, !alias.scope !234, !noalias !238, !noundef !13 %.0.sroa.speculated.i.i.i.i = tail call noundef i64 @llvm.umin.i64(i64 %143, i64 %146) - br label %.outer.i.outer + br label %.outer.i 147: ; preds = %137 %148 = tail call noundef double @_ZN6brotli3enc11find_stride11HuffmanCost17hc6669c9715c4ca6eE(ptr noalias noundef nonnull readonly align 4 %133, i64 noundef %135), !noalias !239 @@ -2201,14 +2201,15 @@ select.unfold.i: ; preds = %70 157: ; preds = %158 %.0.sroa.speculated.i.i.i34.i = tail call noundef i64 @llvm.umin.i64(i64 %135, i64 %.val27.i) %.not88.i = icmp eq i64 %.0.sroa.speculated.i.i.i34.i, 0 - br i1 %.not88.i, label %.outer.i.outer.backedge, label %.lr.ph.i + br i1 %.not88.i, label %.outer.i.backedge, label %.lr.ph.i 158: ; preds = %153 %159 = getelementptr inbounds { { { { { { ptr, i64 } }, {} }, {} } }, double }, ptr %141, i64 %.sroa.854.0.i + %160 = trunc nuw i8 %.1.ph.i to i1 %.val26.i = load ptr, ptr %159, align 8, !noalias !239, !nonnull !13, !align !16, !noundef !13 %160 = getelementptr i8, ptr %159, i64 8 %.val27.i = load i64, ptr %160, align 8, !noalias !239, !noundef !13 - br i1 %163, label %157, label %161 + br i1 %160, label %157, label %161 161: ; preds = %158 tail call void @llvm.experimental.noalias.scope.decl(metadata !245) @@ -2222,19 +2223,14 @@ select.unfold.i: ; preds = %70 "_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17he4810eae26b0828dE.exit.i": ; preds = %161 tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %133, ptr nonnull readonly align 4 %.val26.i, i64 %136, i1 false), !alias.scope !251, !noalias !252 - br label %.outer.i.outer.backedge - -.outer.i.outer.backedge: ; preds = %157, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17he4810eae26b0828dE.exit.i" - br label %.outer.i.outer + br label %.outer.i.backedge -.outer.i.outer: ; preds = %.outer.i.outer.backedge, %139 - %.sroa.854.0.ph.i.ph = phi i64 [ 0, %139 ], [ %154, %.outer.i.outer.backedge ] - %.1.ph.i.ph = phi i8 [ %.087.i, %139 ], [ 1, %.outer.i.outer.backedge ] - %163 = trunc nuw i8 %.1.ph.i.ph to i1 +.outer.i.outer: ; preds = %.lr.ph.i, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17he4810eae26b0828dE.exit.i", %157 br label %.outer.i -.outer.i: ; preds = %.lr.ph.i, %.outer.i.outer - %.sroa.854.0.ph.i = phi i64 [ %.sroa.854.0.ph.i.ph, %.outer.i.outer ], [ %154, %.lr.ph.i ] +.outer.i: ; preds = %.outer.i.outer, %139 + %.sroa.854.0.ph.i = phi i64 [ 0, %139 ], [ %154, %.outer.i.backedge ] + %.1.ph.i = phi i8 [ %.087.i, %139 ], [ 1, %.outer.i.backedge ] br label %151 .lr.ph.i: ; preds = %157, %.lr.ph.i @@ -2247,7 +2243,7 @@ select.unfold.i: ; preds = %70 %169 = add i32 %168, %167 store i32 %169, ptr %165, align 4, !noalias !239 %exitcond.not.i64 = icmp eq i64 %164, %.0.sroa.speculated.i.i.i34.i - br i1 %exitcond.not.i64, label %.outer.i, label %.lr.ph.i + br i1 %exitcond.not.i64, label %.outer.i.outer, label %.lr.ph.i "_ZN6brotli3enc11find_stride39EntropyBucketPopulation$LT$AllocU32$GT$13initiate_from17h69e67789c4ece1f3E.exit": ; preds = %147, %149, %.lr.ph.preheader.i.i %170 = phi double [ %148, %147 ], [ 0.000000e+00, %149 ], [ 0.000000e+00, %.lr.ph.preheader.i.i ] diff --git a/bench/arrow/optimized/value_parsing.ll b/bench/arrow/optimized/value_parsing.ll index 0e5cfa6f70a..c7960104cfb 100644 --- a/bench/arrow/optimized/value_parsing.ll +++ b/bench/arrow/optimized/value_parsing.ll @@ -2059,7 +2059,7 @@ _ZN14arrow_vendored10fast_float21fastfloat_strncasecmpEPKcS2_m.exit50: ; preds = br i1 %49, label %50, label %.loopexit 50: ; preds = %_ZN14arrow_vendored10fast_float21fastfloat_strncasecmpEPKcS2_m.exit50 - %51 = icmp sgt i64 %10, 7 + %51 = icmp samesign ugt i64 %10, 7 br i1 %51, label %52, label %63 52: ; preds = %50 @@ -3256,7 +3256,7 @@ _ZN14arrow_vendored10fast_float11to_extendedIfEENS0_17adjusted_mantissaET_.exit: br label %_ZN14arrow_vendored10fast_float6bigint8shl_bitsEm.exit.thread.i.i _ZN14arrow_vendored10fast_float6bigint8shl_bitsEm.exit.thread.i.i: ; preds = %56, %._crit_edge.i.i.i, %43, %39 - %.not9.i.i = icmp ult i32 %33, 64 + %.not9.i.i = icmp samesign ult i32 %33, 64 br i1 %.not9.i.i, label %_ZN14arrow_vendored10fast_float6bigint4pow2Ej.exit, label %59 59: ; preds = %_ZN14arrow_vendored10fast_float6bigint8shl_bitsEm.exit.thread.i.i @@ -3330,7 +3330,7 @@ _ZN14arrow_vendored10fast_float6bigint8shl_bitsEm.exit.thread.i.i: ; preds = %56 br label %_ZN14arrow_vendored10fast_float6bigint8shl_bitsEm.exit.thread.i.i42 _ZN14arrow_vendored10fast_float6bigint8shl_bitsEm.exit.thread.i.i42: ; preds = %92, %._crit_edge.i.i.i39, %78, %73 - %.not9.i.i43 = icmp ult i32 %74, 64 + %.not9.i.i43 = icmp samesign ult i32 %74, 64 br i1 %.not9.i.i43, label %_ZN14arrow_vendored10fast_float6bigint4pow2Ej.exit, label %95 95: ; preds = %_ZN14arrow_vendored10fast_float6bigint8shl_bitsEm.exit.thread.i.i42 @@ -3657,15 +3657,10 @@ _ZN14arrow_vendored10fast_float9small_mulILt62EEEbRNS0_8stackvecIXT_EEEm.exit: ; %33 = icmp eq i16 %.496..496., 0 %34 = shl nuw nsw i16 %.496..496., 3 %.idx.i.i.i.i = zext nneg i16 %34 to i64 - br i1 %.not.i35, label %.lr.ph.split.us.preheader, label %.lr.ph.split.preheader - -.lr.ph.split.preheader: ; preds = %.lr.ph - %umax = tail call i64 @llvm.umax.i64(i64 %2, i64 2) - br label %.lr.ph.split + br i1 %.not.i35, label %.lr.ph.split.us.preheader, label %.lr.ph.split .lr.ph.split.us.preheader: ; preds = %.lr.ph %.promoted = load i16, ptr %6, align 8 - %umax72 = tail call i64 @llvm.umax.i64(i64 %2, i64 2) br label %.lr.ph.split.us .lr.ph.split.us: ; preds = %.lr.ph.split.us.preheader, %.critedge.us @@ -3833,11 +3828,11 @@ _ZN14arrow_vendored10fast_float8stackvecILt62EE8try_pushEm.exit.thread.i.i.us: ; %109 = phi i16 [ %75, %74 ], [ %101, %_ZN14arrow_vendored10fast_float8stackvecILt62EE8try_pushEm.exit.thread.i.i.us ], [ %75, %._crit_edge.i49.us ], [ %35, %.lr.ph.split.us ], [ %75, %102 ] call void @llvm.lifetime.end.p0(i64 504, ptr nonnull %5) #21 %110 = add nuw i64 %.02768.us, 1 - %exitcond73.not = icmp eq i64 %110, %umax72 + %exitcond73.not = icmp eq i64 %110, %2 br i1 %exitcond73.not, label %.critedge34, label %.lr.ph.split.us, !llvm.loop !96 -.lr.ph.split: ; preds = %.lr.ph.split.preheader, %.critedge - %.02768 = phi i64 [ %113, %.critedge ], [ 1, %.lr.ph.split.preheader ] +.lr.ph.split: ; preds = %.lr.ph, %.critedge + %.02768 = phi i64 [ %113, %.critedge ], [ 1, %.lr.ph ] %111 = getelementptr inbounds nuw i64, ptr %1, i64 %.02768 %112 = load i64, ptr %111, align 8, !tbaa !17 call void @llvm.lifetime.start.p0(i64 504, ptr nonnull %5) #21 @@ -3847,7 +3842,7 @@ _ZN14arrow_vendored10fast_float8stackvecILt62EE8try_pushEm.exit.thread.i.i.us: ; .critedge: ; preds = %.lr.ph.split call void @llvm.lifetime.end.p0(i64 504, ptr nonnull %5) #21 %113 = add nuw i64 %.02768, 1 - %exitcond.not = icmp eq i64 %113, %umax + %exitcond.not = icmp eq i64 %113, %2 br i1 %exitcond.not, label %.critedge34, label %.lr.ph.split, !llvm.loop !96 _ZN14arrow_vendored10fast_float8stackvecILt62EE10try_extendENS0_4spanImEE.exit: ; preds = %.lr.ph.split, %55, %66, %.critedge.i.i.us @@ -3990,7 +3985,7 @@ _ZN14arrow_vendored10fast_float21fastfloat_strncasecmpEPKcS2_m.exit50: ; preds = br i1 %49, label %50, label %.loopexit 50: ; preds = %_ZN14arrow_vendored10fast_float21fastfloat_strncasecmpEPKcS2_m.exit50 - %51 = icmp sgt i64 %10, 7 + %51 = icmp samesign ugt i64 %10, 7 br i1 %51, label %52, label %63 52: ; preds = %50 @@ -4324,7 +4319,7 @@ _ZN14arrow_vendored10fast_float11to_extendedIdEENS0_17adjusted_mantissaET_.exit: br label %_ZN14arrow_vendored10fast_float6bigint8shl_bitsEm.exit.thread.i.i _ZN14arrow_vendored10fast_float6bigint8shl_bitsEm.exit.thread.i.i: ; preds = %57, %._crit_edge.i.i.i, %44, %40 - %.not9.i.i = icmp ult i32 %34, 64 + %.not9.i.i = icmp samesign ult i32 %34, 64 br i1 %.not9.i.i, label %_ZN14arrow_vendored10fast_float6bigint4pow2Ej.exit, label %60 60: ; preds = %_ZN14arrow_vendored10fast_float6bigint8shl_bitsEm.exit.thread.i.i @@ -4398,7 +4393,7 @@ _ZN14arrow_vendored10fast_float6bigint8shl_bitsEm.exit.thread.i.i: ; preds = %57 br label %_ZN14arrow_vendored10fast_float6bigint8shl_bitsEm.exit.thread.i.i42 _ZN14arrow_vendored10fast_float6bigint8shl_bitsEm.exit.thread.i.i42: ; preds = %93, %._crit_edge.i.i.i39, %79, %74 - %.not9.i.i43 = icmp ult i32 %75, 64 + %.not9.i.i43 = icmp samesign ult i32 %75, 64 br i1 %.not9.i.i43, label %_ZN14arrow_vendored10fast_float6bigint4pow2Ej.exit, label %96 96: ; preds = %_ZN14arrow_vendored10fast_float6bigint8shl_bitsEm.exit.thread.i.i42 @@ -5766,9 +5761,6 @@ declare void @llvm.assume(i1 noundef) #18 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) declare void @llvm.experimental.noalias.scope.decl(metadata) #19 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umax.i64(i64, i64) #20 - ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.fshl.i64(i64, i64, i64) #20 diff --git a/bench/assimp/optimized/OFFLoader.ll b/bench/assimp/optimized/OFFLoader.ll index f9c8d78b8a4..b42c0d3ca0c 100644 --- a/bench/assimp/optimized/OFFLoader.ll +++ b/bench/assimp/optimized/OFFLoader.ll @@ -1538,8 +1538,8 @@ _ZN6AssimpL9NextTokenEPPKcS1_.exit433: ; preds = %_ZN6Assimp20SkipSpa %431 = add nsw i64 %428, -12 %432 = urem i64 %431, 12 %433 = sub nuw nsw i64 %431, %432 - %434 = add nsw i64 %433, 12 - call void @llvm.memset.p0.i64(ptr nonnull align 4 %429, i8 0, i64 %434, i1 false) + %434 = add nuw nsw i64 %433, 12 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %429, i8 0, i64 %434, i1 false) store ptr %429, ptr %409, align 8 br i1 %.0155634641656, label %435, label %.loopexit698 @@ -1548,7 +1548,7 @@ _ZN6AssimpL9NextTokenEPPKcS1_.exit433: ; preds = %_ZN6Assimp20SkipSpa to label %.loopexit698.loopexit unwind label %451 .loopexit698.loopexit: ; preds = %435 - call void @llvm.memset.p0.i64(ptr nonnull align 4 %436, i8 0, i64 %434, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %436, i8 0, i64 %434, i1 false) br label %.loopexit698 .loopexit698: ; preds = %.loopexit698.loopexit, %430 @@ -1579,7 +1579,7 @@ _ZN6AssimpL9NextTokenEPPKcS1_.exit433: ; preds = %_ZN6Assimp20SkipSpa to label %447 unwind label %451 447: ; preds = %444 - call void @llvm.memset.p0.i64(ptr nonnull align 4 %446, i8 0, i64 %434, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %446, i8 0, i64 %434, i1 false) %448 = getelementptr inbounds nuw i8, ptr %405, i64 112 store ptr %446, ptr %448, align 8 br label %453 @@ -1602,8 +1602,7 @@ _ZN6AssimpL9NextTokenEPPKcS1_.exit433: ; preds = %_ZN6Assimp20SkipSpa %.not739 = icmp eq i32 %.1164664, 0 %457 = ptrtoint ptr %454 to i64 %458 = getelementptr inbounds nuw i8, ptr %405, i64 112 - %umax = call i32 @llvm.umax.i32(i32 %.0.lcssa.i333, i32 1) - %wide.trip.count780 = zext i32 %umax to i64 + %umax = zext i32 %.0.lcssa.i333 to i64 %wide.trip.count = zext nneg i32 %.1164664 to i64 %wide.trip.count775 = zext nneg i32 %.1164664 to i64 br label %459 diff --git a/bench/assimp/optimized/Q3DLoader.ll b/bench/assimp/optimized/Q3DLoader.ll index 6eaed7cdd0b..5facfdcf985 100644 --- a/bench/assimp/optimized/Q3DLoader.ll +++ b/bench/assimp/optimized/Q3DLoader.ll @@ -1228,16 +1228,15 @@ _ZNSt12_Vector_baseIN6Assimp11Q3DImporter4FaceESaIS2_EE13_M_deallocateEPS2_m.exi _ZNSt6vectorIN6Assimp11Q3DImporter4FaceESaIS2_EE7reserveEm.exit: ; preds = %330, %_ZNSt12_Vector_baseIN6Assimp11Q3DImporter4FaceESaIS2_EE13_M_deallocateEPS2_m.exit.i %376 = getelementptr inbounds i8, ptr %238, i64 -24 - %umax1337 = call i32 @llvm.umax.i32(i32 %324, i32 1) br label %379 377: ; preds = %_ZNSt6vectorIN6Assimp11Q3DImporter4FaceESaIS2_EE12emplace_backIJsEEERS2_DpOT_.exit %378 = add nuw i32 %.04101110, 1 - %exitcond1338.not = icmp eq i32 %378, %umax1337 + %exitcond1338.not = icmp eq i32 %378, %324 br i1 %exitcond1338.not, label %.preheader924.preheader, label %379, !llvm.loop !11 .preheader924.preheader: ; preds = %377 - %wide.trip.count1345 = zext i32 %umax1337 to i64 + %wide.trip.count1345 = zext i32 %324 to i64 br label %.preheader924 .loopexit937: ; preds = %_ZNSt12_Vector_baseIN6Assimp11Q3DImporter4FaceESaIS2_EE11_M_allocateEm.exit.i @@ -7379,9 +7378,6 @@ declare i64 @llvm.umax.i64(i64, i64) #23 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare float @llvm.sqrt.f32(float) #23 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umax.i32(i32, i32) #23 - attributes #0 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/assimp/optimized/SkeletonMeshBuilder.ll b/bench/assimp/optimized/SkeletonMeshBuilder.ll index 13224245c3d..0f4314c0946 100644 --- a/bench/assimp/optimized/SkeletonMeshBuilder.ll +++ b/bench/assimp/optimized/SkeletonMeshBuilder.ll @@ -4114,8 +4114,7 @@ _ZN8aiStringaSERKS_.exit: ; preds = %_ZNSt6vectorIP6aiBo call void @llvm.memset.p0.i64(ptr nonnull align 4 %1571, i8 0, i64 %1570, i1 false) %1572 = getelementptr inbounds nuw i8, ptr %1514, i64 1048 store ptr %1571, ptr %1572, align 8 - %umax = call i32 @llvm.umax.i32(i32 %1512, i32 1) - %wide.trip.count = zext i32 %umax to i64 + %umax = and i64 %1511, 4294967295 br label %1666 1573: ; preds = %.lr.ph1408, %1573 @@ -4978,9 +4977,6 @@ declare i64 @llvm.umin.i64(i64, i64) #12 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.umin.i32(i32, i32) #12 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umax.i32(i32, i32) #12 - attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress uwtable "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/box2d/optimized/imgui_tables.ll b/bench/box2d/optimized/imgui_tables.ll index e4f9f638d1f..744a9325954 100644 --- a/bench/box2d/optimized/imgui_tables.ll +++ b/bench/box2d/optimized/imgui_tables.ll @@ -1889,10 +1889,10 @@ _ZN5ImGui21TableGetBoundSettingsEP10ImGuiTable.exit: ; preds = %.thread.i, %38, %.not73 = icmp eq i64 %.068.lcssa108, %67 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %0, i64 108 %.pre102 = load i32, ptr %.phi.trans.insert, align 4, !tbaa !207 + %68 = icmp sgt i32 %.pre102, 0 br i1 %.not73, label %.loopexit, label %.preheader .preheader: ; preds = %66 - %68 = icmp sgt i32 %.pre102, 0 br i1 %68, label %.lr.ph88, label %_ZN5ImGui21TableSettingsFindByIDEj.exit.thread .lr.ph88: ; preds = %.preheader @@ -1996,13 +1996,12 @@ _ZN5ImGui21TableGetBoundSettingsEP10ImGuiTable.exit: ; preds = %.thread.i, %38, store i16 %124, ptr %125, align 2, !tbaa !308 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond.not, label %.loopexit, label %123, !llvm.loop !340 + br i1 %exitcond.not, label %.lr.ph91, label %123, !llvm.loop !340 -.loopexit: ; preds = %123, %66 - %126 = icmp sgt i32 %.pre102, 0 - br i1 %126, label %.lr.ph91, label %_ZN5ImGui21TableSettingsFindByIDEj.exit.thread +.loopexit: ; preds = %66 + br i1 %68, label %.lr.ph91, label %_ZN5ImGui21TableSettingsFindByIDEj.exit.thread -.lr.ph91: ; preds = %.loopexit +.lr.ph91: ; preds = %123, %.loopexit %127 = getelementptr inbounds nuw i8, ptr %0, i64 40 %128 = getelementptr inbounds nuw i8, ptr %0, i64 24 %129 = load ptr, ptr %128, align 8, !tbaa !271 diff --git a/bench/brotli/optimized/brotli_bit_stream.ll b/bench/brotli/optimized/brotli_bit_stream.ll index 4357e14f9d9..0f15178cc57 100644 --- a/bench/brotli/optimized/brotli_bit_stream.ll +++ b/bench/brotli/optimized/brotli_bit_stream.ll @@ -1208,7 +1208,7 @@ InitBlockEncoder.exit198: ; preds = %InitBlockEncoder.ex %179 = getelementptr inbounds nuw i8, ptr %178, i64 %176 %180 = load ptr, ptr %174, align 8, !tbaa !227 %181 = getelementptr inbounds nuw i16, ptr %180, i64 %176 - tail call fastcc void @BuildAndStoreHuffmanTree(ptr noundef %177, i64 noundef %175, i64 noundef 256, ptr noundef %24, ptr noundef %179, ptr noundef %181, ptr noundef %13, ptr noundef %14) + tail call fastcc void @BuildAndStoreHuffmanTree(ptr noundef %177, i64 noundef %175, i64 noundef 256, ptr noundef %24, ptr noundef %179, ptr noundef %181, ptr noundef nonnull %13, ptr noundef nonnull %14) %182 = add nuw i64 %.026.i, 1 %exitcond.not.i = icmp eq i64 %182, %162 br i1 %exitcond.not.i, label %BuildAndStoreEntropyCodesLiteral.exit, label %.lr.ph.i, !llvm.loop !228 @@ -1253,7 +1253,7 @@ BuildAndStoreEntropyCodesLiteral.exit: ; preds = %.lr.ph.i, %171 %203 = getelementptr inbounds nuw i8, ptr %202, i64 %200 %204 = load ptr, ptr %198, align 8, !tbaa !227 %205 = getelementptr inbounds nuw i16, ptr %204, i64 %200 - tail call fastcc void @BuildAndStoreHuffmanTree(ptr noundef %201, i64 noundef %199, i64 noundef 704, ptr noundef %24, ptr noundef %203, ptr noundef %205, ptr noundef %13, ptr noundef %14) + tail call fastcc void @BuildAndStoreHuffmanTree(ptr noundef %201, i64 noundef %199, i64 noundef 704, ptr noundef %24, ptr noundef %203, ptr noundef %205, ptr noundef nonnull %13, ptr noundef nonnull %14) %206 = add nuw i64 %.026.i202, 1 %exitcond.not.i203 = icmp eq i64 %206, %186 br i1 %exitcond.not.i203, label %BuildAndStoreEntropyCodesCommand.exit, label %.lr.ph.i201, !llvm.loop !231 @@ -1299,7 +1299,7 @@ BuildAndStoreEntropyCodesCommand.exit: ; preds = %.lr.ph.i201, %195 %228 = getelementptr inbounds nuw i8, ptr %227, i64 %225 %229 = load ptr, ptr %223, align 8, !tbaa !227 %230 = getelementptr inbounds nuw i16, ptr %229, i64 %225 - tail call fastcc void @BuildAndStoreHuffmanTree(ptr noundef %226, i64 noundef %224, i64 noundef range(i64 0, 4294967296) %211, ptr noundef %24, ptr noundef %228, ptr noundef %230, ptr noundef %13, ptr noundef %14) + tail call fastcc void @BuildAndStoreHuffmanTree(ptr noundef %226, i64 noundef %224, i64 noundef range(i64 0, 4294967296) %211, ptr noundef %24, ptr noundef %228, ptr noundef %230, ptr noundef nonnull %13, ptr noundef nonnull %14) %231 = add nuw i64 %.026.i208, 1 %exitcond.not.i209 = icmp eq i64 %231, %210 br i1 %exitcond.not.i209, label %BuildAndStoreEntropyCodesDistance.exit, label %.lr.ph.i207, !llvm.loop !233 @@ -1341,7 +1341,7 @@ BuildAndStoreEntropyCodesDistance.exit: ; preds = %.lr.ph.i207, %220 %.sroa.14.0..sroa_idx = getelementptr inbounds nuw i8, ptr %246, i64 14 %.sroa.14.0.copyload = load i16, ptr %.sroa.14.0..sroa_idx, align 2, !tbaa !30 %247 = zext i16 %.sroa.11.0.copyload to i64 - tail call fastcc void @StoreSymbol(ptr noundef nonnull %26, i64 noundef %247, ptr noundef %13, ptr noundef %14) + tail call fastcc void @StoreSymbol(ptr noundef nonnull %26, i64 noundef %247, ptr noundef nonnull %13, ptr noundef nonnull %14) %248 = lshr i32 %.sroa.7.0.copyload, 25 %249 = shl nuw nsw i32 %248, 1 %250 = and i32 %249, 128 @@ -2551,10 +2551,9 @@ StoreVarLenUint8.exit: ; preds = %6 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !408 ._crit_edge: ; preds = %.lr.ph, %46 - tail call fastcc void @BuildAndStoreHuffmanTree(ptr noundef nonnull %0, i64 noundef %51, i64 noundef %51, ptr noundef %3, ptr noundef nonnull %52, ptr noundef nonnull %53, ptr noundef nonnull %4, ptr noundef %5) + tail call fastcc void @BuildAndStoreHuffmanTree(ptr noundef nonnull %0, i64 noundef %51, i64 noundef %51, ptr noundef %3, ptr noundef nonnull %52, ptr noundef nonnull %53, ptr noundef nonnull %4, ptr noundef nonnull %5) %78 = getelementptr inbounds nuw i8, ptr %52, i64 %47 %79 = getelementptr inbounds nuw i16, ptr %53, i64 %47 - %umax = tail call i64 @llvm.umax.i64(i64 %1, i64 1) %.pre = load i64, ptr %4, align 8, !tbaa !3, !alias.scope !409, !noalias !412 br label %80 @@ -2611,7 +2610,7 @@ StoreVarLenUint8.exit: ; preds = %6 %118 = add i64 %110, %47 store i64 %118, ptr %4, align 8, !tbaa !3, !alias.scope !419, !noalias !422 %119 = add nuw i64 %.163, 1 - %exitcond64.not = icmp eq i64 %119, %umax + %exitcond64.not = icmp eq i64 %119, %1 br i1 %exitcond64.not, label %120, label %80, !llvm.loop !424 120: ; preds = %80 @@ -4163,7 +4162,7 @@ BuildHistograms.exit: ; preds = %110 %121 = getelementptr inbounds nuw i8, ptr %13, i64 8944 %122 = getelementptr inbounds nuw i8, ptr %13, i64 9084 tail call void @BrotliBuildAndStoreHuffmanTreeFast(ptr noundef nonnull %113, ptr noundef nonnull %72, i64 noundef %119, i64 noundef %120, ptr noundef nonnull %121, ptr noundef nonnull %122, ptr noundef nonnull %9, ptr noundef %10) - tail call fastcc void @StoreDataWithHuffmanCodes(ptr noundef %1, i64 noundef %2, i64 noundef %4, ptr noundef %7, i64 noundef %8, ptr noundef nonnull %114, ptr noundef nonnull %115, ptr noundef nonnull %117, ptr noundef nonnull %118, ptr noundef nonnull %121, ptr noundef nonnull %122, ptr noundef nonnull %9, ptr noundef %10) + tail call fastcc void @StoreDataWithHuffmanCodes(ptr noundef %1, i64 noundef %2, i64 noundef %4, ptr noundef nonnull %7, i64 noundef %8, ptr noundef nonnull %114, ptr noundef nonnull %115, ptr noundef nonnull %117, ptr noundef nonnull %118, ptr noundef nonnull %121, ptr noundef nonnull %122, ptr noundef nonnull %9, ptr noundef %10) br label %123 123: ; preds = %BuildHistograms.exit, %._crit_edge107 diff --git a/bench/brotli/optimized/compress_fragment.ll b/bench/brotli/optimized/compress_fragment.ll index 646fddb98e5..81752207270 100644 --- a/bench/brotli/optimized/compress_fragment.ll +++ b/bench/brotli/optimized/compress_fragment.ll @@ -1648,19 +1648,21 @@ EmitCopyLen.exit: ; preds = %747, %769, %809, %8 br i1 %950, label %.lr.ph.i, label %._crit_edge.i, !llvm.loop !267 ._crit_edge.i: ; preds = %.lr.ph.i - %951 = add nuw nsw i64 %938, 42 - %952 = udiv i64 %951, 43 + %951 = trunc nuw nsw i64 %938 to i32 + %952 = add nuw nsw i32 %951, 42 + %952 = udiv i32 %.lhs.trunc, 43 %953 = icmp ult i64 %937, 10966 br i1 %953, label %._crit_edge.thread.i, label %956 ._crit_edge.thread.i: ; preds = %._crit_edge.i - %954 = getelementptr inbounds nuw [256 x double], ptr @kBrotliLog2Table, i64 0, i64 %952 + %954 = zext nneg i32 %952 to i64 + %954 = getelementptr inbounds nuw [256 x double], ptr @kBrotliLog2Table, i64 0, i64 %.zext %955 = load double, ptr %954, align 8, !tbaa !268 - %.pre.i = uitofp nneg i64 %952 to double + %.pre.i = uitofp nneg i32 %952 to double br label %FastLog2.exit.i 956: ; preds = %._crit_edge.i - %957 = uitofp nneg i64 %952 to double + %957 = uitofp nneg i32 %952 to double %958 = tail call double @log2(double noundef %957) #10, !tbaa !77 br label %FastLog2.exit.i @@ -3654,19 +3656,21 @@ EmitCopyLen.exit: ; preds = %747, %769, %809, %8 br i1 %950, label %.lr.ph.i, label %._crit_edge.i, !llvm.loop !267 ._crit_edge.i: ; preds = %.lr.ph.i - %951 = add nuw nsw i64 %938, 42 - %952 = udiv i64 %951, 43 + %951 = trunc nuw nsw i64 %938 to i32 + %952 = add nuw nsw i32 %951, 42 + %952 = udiv i32 %.lhs.trunc, 43 %953 = icmp ult i64 %937, 10966 br i1 %953, label %._crit_edge.thread.i, label %956 ._crit_edge.thread.i: ; preds = %._crit_edge.i - %954 = getelementptr inbounds nuw [256 x double], ptr @kBrotliLog2Table, i64 0, i64 %952 + %954 = zext nneg i32 %952 to i64 + %954 = getelementptr inbounds nuw [256 x double], ptr @kBrotliLog2Table, i64 0, i64 %.zext %955 = load double, ptr %954, align 8, !tbaa !268 - %.pre.i = uitofp nneg i64 %952 to double + %.pre.i = uitofp nneg i32 %952 to double br label %FastLog2.exit.i 956: ; preds = %._crit_edge.i - %957 = uitofp nneg i64 %952 to double + %957 = uitofp nneg i32 %952 to double %958 = tail call double @log2(double noundef %957) #10, !tbaa !77 br label %FastLog2.exit.i @@ -5660,19 +5664,21 @@ EmitCopyLen.exit: ; preds = %747, %769, %809, %8 br i1 %950, label %.lr.ph.i, label %._crit_edge.i, !llvm.loop !267 ._crit_edge.i: ; preds = %.lr.ph.i - %951 = add nuw nsw i64 %938, 42 - %952 = udiv i64 %951, 43 + %951 = trunc nuw nsw i64 %938 to i32 + %952 = add nuw nsw i32 %951, 42 + %952 = udiv i32 %.lhs.trunc, 43 %953 = icmp ult i64 %937, 10966 br i1 %953, label %._crit_edge.thread.i, label %956 ._crit_edge.thread.i: ; preds = %._crit_edge.i - %954 = getelementptr inbounds nuw [256 x double], ptr @kBrotliLog2Table, i64 0, i64 %952 + %954 = zext nneg i32 %952 to i64 + %954 = getelementptr inbounds nuw [256 x double], ptr @kBrotliLog2Table, i64 0, i64 %.zext %955 = load double, ptr %954, align 8, !tbaa !268 - %.pre.i = uitofp nneg i64 %952 to double + %.pre.i = uitofp nneg i32 %952 to double br label %FastLog2.exit.i 956: ; preds = %._crit_edge.i - %957 = uitofp nneg i64 %952 to double + %957 = uitofp nneg i32 %952 to double %958 = tail call double @log2(double noundef %957) #10, !tbaa !77 br label %FastLog2.exit.i @@ -7666,19 +7672,21 @@ EmitCopyLen.exit: ; preds = %747, %769, %809, %8 br i1 %950, label %.lr.ph.i, label %._crit_edge.i, !llvm.loop !267 ._crit_edge.i: ; preds = %.lr.ph.i - %951 = add nuw nsw i64 %938, 42 - %952 = udiv i64 %951, 43 + %951 = trunc nuw nsw i64 %938 to i32 + %952 = add nuw nsw i32 %951, 42 + %952 = udiv i32 %.lhs.trunc, 43 %953 = icmp ult i64 %937, 10966 br i1 %953, label %._crit_edge.thread.i, label %956 ._crit_edge.thread.i: ; preds = %._crit_edge.i - %954 = getelementptr inbounds nuw [256 x double], ptr @kBrotliLog2Table, i64 0, i64 %952 + %954 = zext nneg i32 %952 to i64 + %954 = getelementptr inbounds nuw [256 x double], ptr @kBrotliLog2Table, i64 0, i64 %.zext %955 = load double, ptr %954, align 8, !tbaa !268 - %.pre.i = uitofp nneg i64 %952 to double + %.pre.i = uitofp nneg i32 %952 to double br label %FastLog2.exit.i 956: ; preds = %._crit_edge.i - %957 = uitofp nneg i64 %952 to double + %957 = uitofp nneg i32 %952 to double %958 = tail call double @log2(double noundef %957) #10, !tbaa !77 br label %FastLog2.exit.i diff --git a/bench/bullet3/optimized/btKinematicCharacterController.ll b/bench/bullet3/optimized/btKinematicCharacterController.ll index a2da0717f5a..740cf824dee 100644 --- a/bench/bullet3/optimized/btKinematicCharacterController.ll +++ b/bench/bullet3/optimized/btKinematicCharacterController.ll @@ -633,11 +633,7 @@ define dso_local noundef zeroext i1 @_ZN30btKinematicCharacterController22recove _ZNK20btAlignedObjectArrayIP20btPersistentManifoldE4copyEiiPS1_.exit.i.i: ; preds = %59 %.not.i5.i.i = icmp eq ptr %.pre, null - br i1 %.not.i5.i.i, label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE7reserveEi.exit.thread26.i, label %_ZNK20btAlignedObjectArrayIP20btPersistentManifoldE4copyEiiPS1_.exit.thread.i.i - -_ZN20btAlignedObjectArrayIP20btPersistentManifoldE7reserveEi.exit.thread26.i: ; preds = %_ZNK20btAlignedObjectArrayIP20btPersistentManifoldE4copyEiiPS1_.exit.i.i - store i8 1, ptr %46, align 8, !tbaa !10 - br label %.lr.ph.i.sink.split + br i1 %.not.i5.i.i, label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE7reserveEi.exit.i, label %_ZNK20btAlignedObjectArrayIP20btPersistentManifoldE4copyEiiPS1_.exit.thread.i.i _ZNK20btAlignedObjectArrayIP20btPersistentManifoldE4copyEiiPS1_.exit.thread.i.i: ; preds = %_ZNK20btAlignedObjectArrayIP20btPersistentManifoldE4copyEiiPS1_.exit.i.i %62 = load i8, ptr %46, align 8, !tbaa !10, !range !55, !noundef !56 @@ -648,17 +644,14 @@ _ZNK20btAlignedObjectArrayIP20btPersistentManifoldE4copyEiiPS1_.exit.thread.i.i: call void @_Z21btAlignedFreeInternalPv(ptr noundef nonnull %.pre) br label %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE7reserveEi.exit.i -_ZN20btAlignedObjectArrayIP20btPersistentManifoldE7reserveEi.exit.i: ; preds = %64, %_ZNK20btAlignedObjectArrayIP20btPersistentManifoldE4copyEiiPS1_.exit.thread.i.i +_ZN20btAlignedObjectArrayIP20btPersistentManifoldE7reserveEi.exit.i: ; preds = %64, %_ZNK20btAlignedObjectArrayIP20btPersistentManifoldE4copyEiiPS1_.exit.thread.i.i, %_ZNK20btAlignedObjectArrayIP20btPersistentManifoldE4copyEiiPS1_.exit.i.i store i8 1, ptr %46, align 8, !tbaa !10 store ptr null, ptr %45, align 8, !tbaa !17 - br label %.lr.ph.i.sink.split - -.lr.ph.i.sink.split: ; preds = %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE7reserveEi.exit.thread26.i, %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE7reserveEi.exit.i store i32 0, ptr %44, align 8, !tbaa !19 br label %.lr.ph.i -.lr.ph.i: ; preds = %.lr.ph.i.sink.split, %59 - %65 = phi ptr [ %.pre, %59 ], [ null, %.lr.ph.i.sink.split ] +.lr.ph.i: ; preds = %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE10deallocateEv.exit.i.i, %59 + %65 = phi ptr [ null, %_ZN20btAlignedObjectArrayIP20btPersistentManifoldE7reserveEi.exit.i ], [ %.pre, %59 ] %66 = sext i32 %57 to i64 %67 = shl nsw i64 %66, 3 %scevgep = getelementptr i8, ptr %65, i64 %67 diff --git a/bench/bullet3/optimized/btSoftMultiBodyDynamicsWorld.ll b/bench/bullet3/optimized/btSoftMultiBodyDynamicsWorld.ll index f25c1fe77ef..d00fa99755e 100644 --- a/bench/bullet3/optimized/btSoftMultiBodyDynamicsWorld.ll +++ b/bench/bullet3/optimized/btSoftMultiBodyDynamicsWorld.ll @@ -305,14 +305,7 @@ _ZN20btAlignedObjectArrayIPN11btSparseSdfILi3EE4CellEE8allocateEi.exit.i.i: ; pr _ZNK20btAlignedObjectArrayIPN11btSparseSdfILi3EE4CellEE4copyEiiPS3_.exit.i.i: ; preds = %_ZN20btAlignedObjectArrayIPN11btSparseSdfILi3EE4CellEE8allocateEi.exit.i.i %.not.i5.i.i = icmp eq ptr %20, null - br i1 %.not.i5.i.i, label %_ZN20btAlignedObjectArrayIPN11btSparseSdfILi3EE4CellEE7reserveEi.exit.thread26.i, label %_ZNK20btAlignedObjectArrayIPN11btSparseSdfILi3EE4CellEE4copyEiiPS3_.exit.thread.i.i - -_ZN20btAlignedObjectArrayIPN11btSparseSdfILi3EE4CellEE7reserveEi.exit.thread26.i: ; preds = %_ZNK20btAlignedObjectArrayIPN11btSparseSdfILi3EE4CellEE4copyEiiPS3_.exit.i.i - %25 = getelementptr inbounds nuw i8, ptr %0, i64 24 - store i8 1, ptr %25, align 8, !tbaa !32 - store ptr %.0.i.i.i, ptr %19, align 8, !tbaa !33 - store i32 %1, ptr %9, align 8, !tbaa !35 - br label %.lr.ph.i + br i1 %.not.i5.i.i, label %_ZN20btAlignedObjectArrayIPN11btSparseSdfILi3EE4CellEE7reserveEi.exit.i, label %_ZNK20btAlignedObjectArrayIPN11btSparseSdfILi3EE4CellEE4copyEiiPS3_.exit.thread.i.i _ZNK20btAlignedObjectArrayIPN11btSparseSdfILi3EE4CellEE4copyEiiPS3_.exit.thread.i.i: ; preds = %21, %_ZNK20btAlignedObjectArrayIPN11btSparseSdfILi3EE4CellEE4copyEiiPS3_.exit.i.i %26 = getelementptr inbounds nuw i8, ptr %0, i64 24 @@ -324,14 +317,15 @@ _ZNK20btAlignedObjectArrayIPN11btSparseSdfILi3EE4CellEE4copyEiiPS3_.exit.thread. tail call void @_Z21btAlignedFreeInternalPv(ptr noundef nonnull %20) br label %_ZN20btAlignedObjectArrayIPN11btSparseSdfILi3EE4CellEE7reserveEi.exit.i -_ZN20btAlignedObjectArrayIPN11btSparseSdfILi3EE4CellEE7reserveEi.exit.i: ; preds = %29, %_ZNK20btAlignedObjectArrayIPN11btSparseSdfILi3EE4CellEE4copyEiiPS3_.exit.thread.i.i - store i8 1, ptr %26, align 8, !tbaa !32 +_ZN20btAlignedObjectArrayIPN11btSparseSdfILi3EE4CellEE7reserveEi.exit.i: ; preds = %29, %_ZNK20btAlignedObjectArrayIPN11btSparseSdfILi3EE4CellEE4copyEiiPS3_.exit.thread.i.i, %_ZNK20btAlignedObjectArrayIPN11btSparseSdfILi3EE4CellEE4copyEiiPS3_.exit.i.i + %29 = getelementptr inbounds nuw i8, ptr %0, i64 24 + store i8 1, ptr %29, align 8, !tbaa !32 store ptr %.0.i.i.i, ptr %19, align 8, !tbaa !33 store i32 %1, ptr %9, align 8, !tbaa !35 br label %.lr.ph.i -.lr.ph.i: ; preds = %..lr.ph.i_crit_edge, %_ZN20btAlignedObjectArrayIPN11btSparseSdfILi3EE4CellEE7reserveEi.exit.i, %_ZN20btAlignedObjectArrayIPN11btSparseSdfILi3EE4CellEE7reserveEi.exit.thread26.i - %30 = phi ptr [ %.pre, %..lr.ph.i_crit_edge ], [ %.0.i.i.i, %_ZN20btAlignedObjectArrayIPN11btSparseSdfILi3EE4CellEE7reserveEi.exit.i ], [ %.0.i.i.i, %_ZN20btAlignedObjectArrayIPN11btSparseSdfILi3EE4CellEE7reserveEi.exit.thread26.i ] +.lr.ph.i: ; preds = %..lr.ph.i_crit_edge, %_ZN20btAlignedObjectArrayIPN11btSparseSdfILi3EE4CellEE7reserveEi.exit.i + %30 = phi ptr [ %.pre, %..lr.ph.i_crit_edge ], [ %.0.i.i.i, %_ZN20btAlignedObjectArrayIPN11btSparseSdfILi3EE4CellEE7reserveEi.exit.i ] %31 = sext i32 %6 to i64 %wide.trip.count.i = sext i32 %1 to i64 %32 = shl nsw i64 %31, 3 diff --git a/bench/casadi/optimized/code_generator.ll b/bench/casadi/optimized/code_generator.ll index aeda62734c2..7679d893cf9 100644 --- a/bench/casadi/optimized/code_generator.ll +++ b/bench/casadi/optimized/code_generator.ll @@ -41255,7 +41255,6 @@ _ZNKSt3mapIPKvxSt4lessIS1_ESaISt4pairIKS1_xEEE4findERS5_.exit: ; preds = %_ZNKSt %23 = getelementptr inbounds nuw i8, ptr %.19.i.i.i, i64 32 %24 = load ptr, ptr %23, align 8, !tbaa !559 %25 = icmp ult ptr %2, %24 - %spec.select.i.i = select i1 %25, ptr %18, ptr %.19.i.i.i br i1 %25, label %_ZNKSt3mapIPKvxSt4lessIS1_ESaISt4pairIKS1_xEEE4findERS5_.exit.thread, label %114 _ZNKSt3mapIPKvxSt4lessIS1_ESaISt4pairIKS1_xEEE4findERS5_.exit.thread: ; preds = %3, %_ZNKSt8_Rb_treeIPKvSt4pairIKS1_xESt10_Select1stIS4_ESt4lessIS1_ESaIS4_EE14_M_lower_boundEPKSt13_Rb_tree_nodeIS4_EPKSt18_Rb_tree_node_baseRS3_.exit.i.i, %_ZNKSt3mapIPKvxSt4lessIS1_ESaISt4pairIKS1_xEEE4findERS5_.exit @@ -41545,7 +41544,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit45: ; preds = %_ZN %.sroa.02.05.i.i = phi ptr [ %117, %.lr.ph.i.i ], [ %116, %114 ] %117 = tail call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef %.sroa.02.05.i.i) #28 %118 = add nuw nsw i64 %.06.i.i, 1 - %.not.i.i = icmp eq ptr %117, %spec.select.i.i + %.not.i.i = icmp eq ptr %117, %.19.i.i.i br i1 %.not.i.i, label %_ZSt8distanceISt23_Rb_tree_const_iteratorISt4pairIKPKvxEEENSt15iterator_traitsIT_E15difference_typeES8_S8_.exit, label %.lr.ph.i.i, !llvm.loop !574 _ZSt8distanceISt23_Rb_tree_const_iteratorISt4pairIKPKvxEEENSt15iterator_traitsIT_E15difference_typeES8_S8_.exit: ; preds = %.lr.ph.i.i, %114 @@ -42186,7 +42185,6 @@ _ZNKSt3mapIPKvxSt4lessIS1_ESaISt4pairIKS1_xEEE4findERS5_.exit: ; preds = %_ZNKSt %23 = getelementptr inbounds nuw i8, ptr %.19.i.i.i, i64 32 %24 = load ptr, ptr %23, align 8, !tbaa !559 %25 = icmp ult ptr %2, %24 - %spec.select.i.i = select i1 %25, ptr %18, ptr %.19.i.i.i br i1 %25, label %_ZNKSt3mapIPKvxSt4lessIS1_ESaISt4pairIKS1_xEEE4findERS5_.exit.thread, label %114 _ZNKSt3mapIPKvxSt4lessIS1_ESaISt4pairIKS1_xEEE4findERS5_.exit.thread: ; preds = %3, %_ZNKSt8_Rb_treeIPKvSt4pairIKS1_xESt10_Select1stIS4_ESt4lessIS1_ESaIS4_EE14_M_lower_boundEPKSt13_Rb_tree_nodeIS4_EPKSt18_Rb_tree_node_baseRS3_.exit.i.i, %_ZNKSt3mapIPKvxSt4lessIS1_ESaISt4pairIKS1_xEEE4findERS5_.exit @@ -42476,7 +42474,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit45: ; preds = %_ZN %.sroa.02.05.i.i = phi ptr [ %117, %.lr.ph.i.i ], [ %116, %114 ] %117 = tail call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef %.sroa.02.05.i.i) #28 %118 = add nuw nsw i64 %.06.i.i, 1 - %.not.i.i = icmp eq ptr %117, %spec.select.i.i + %.not.i.i = icmp eq ptr %117, %.19.i.i.i br i1 %.not.i.i, label %_ZSt8distanceISt23_Rb_tree_const_iteratorISt4pairIKPKvxEEENSt15iterator_traitsIT_E15difference_typeES8_S8_.exit, label %.lr.ph.i.i, !llvm.loop !574 _ZSt8distanceISt23_Rb_tree_const_iteratorISt4pairIKPKvxEEENSt15iterator_traitsIT_E15difference_typeES8_S8_.exit: ; preds = %.lr.ph.i.i, %114 @@ -54427,7 +54425,6 @@ define noundef i64 @_ZN6casadi13CodeGenerator12get_constantERKSt6vectorIxSaIxEEb %14 = getelementptr inbounds nuw i8, ptr %1, i64 8 %15 = load ptr, ptr %14, align 8, !tbaa !820 %16 = icmp eq ptr %13, %15 - %spec.select.i.i.i = select i1 %16, ptr null, ptr %13 %17 = ptrtoint ptr %15 to i64 %18 = ptrtoint ptr %13 to i64 %19 = sub i64 %17, %18 @@ -54437,7 +54434,7 @@ define noundef i64 @_ZN6casadi13CodeGenerator12get_constantERKSt6vectorIxSaIxEEb .lr.ph.i.i.i: ; preds = %3, %.lr.ph.i.i.i %.05.i.i.i = phi i64 [ %30, %.lr.ph.i.i.i ], [ 0, %3 ] %21 = phi i64 [ %29, %.lr.ph.i.i.i ], [ 0, %3 ] - %22 = getelementptr inbounds nuw i64, ptr %spec.select.i.i.i, i64 %.05.i.i.i + %22 = getelementptr inbounds nuw i64, ptr %13, i64 %.05.i.i.i %23 = load i64, ptr %22, align 8, !tbaa !257 %24 = add i64 %23, 2654435769 %25 = shl i64 %21, 6 @@ -55181,7 +55178,6 @@ define noundef i64 @_ZN6casadi13CodeGenerator4hashERKSt6vectorIxSaIxEE(ptr nound %3 = getelementptr inbounds nuw i8, ptr %0, i64 8 %4 = load ptr, ptr %3, align 8, !tbaa !820 %5 = icmp eq ptr %2, %4 - %spec.select.i.i = select i1 %5, ptr null, ptr %2 %6 = ptrtoint ptr %4 to i64 %7 = ptrtoint ptr %2 to i64 %8 = sub i64 %6, %7 @@ -55191,7 +55187,7 @@ define noundef i64 @_ZN6casadi13CodeGenerator4hashERKSt6vectorIxSaIxEE(ptr nound .lr.ph.i.i: ; preds = %1, %.lr.ph.i.i %.05.i.i = phi i64 [ %19, %.lr.ph.i.i ], [ 0, %1 ] %10 = phi i64 [ %18, %.lr.ph.i.i ], [ 0, %1 ] - %11 = getelementptr inbounds nuw i64, ptr %spec.select.i.i, i64 %.05.i.i + %11 = getelementptr inbounds nuw i64, ptr %2, i64 %.05.i.i %12 = load i64, ptr %11, align 8, !tbaa !257 %13 = add i64 %12, 2654435769 %14 = shl i64 %10, 6 @@ -55214,7 +55210,6 @@ define noundef i64 @_ZN6casadi13CodeGenerator4hashERKSt6vectorIcSaIcEE(ptr nound %3 = getelementptr inbounds nuw i8, ptr %0, i64 8 %4 = load ptr, ptr %3, align 8, !tbaa !216 %5 = icmp eq ptr %2, %4 - %spec.select.i.i = select i1 %5, ptr null, ptr %2 %6 = ptrtoint ptr %4 to i64 %7 = ptrtoint ptr %2 to i64 %8 = sub i64 %6, %7 @@ -55223,7 +55218,7 @@ define noundef i64 @_ZN6casadi13CodeGenerator4hashERKSt6vectorIcSaIcEE(ptr nound .lr.ph.i.i: ; preds = %1, %.lr.ph.i.i %.05.i.i = phi i64 [ %19, %.lr.ph.i.i ], [ 0, %1 ] %9 = phi i64 [ %18, %.lr.ph.i.i ], [ 0, %1 ] - %10 = getelementptr inbounds nuw i8, ptr %spec.select.i.i, i64 %.05.i.i + %10 = getelementptr inbounds nuw i8, ptr %2, i64 %.05.i.i %11 = load i8, ptr %10, align 1, !tbaa !12 %12 = sext i8 %11 to i64 %13 = shl i64 %9, 6 @@ -55809,7 +55804,6 @@ define noundef i64 @_ZN6casadi13CodeGenerator12get_constantERKSt6vectorIcSaIcEEb %14 = getelementptr inbounds nuw i8, ptr %1, i64 8 %15 = load ptr, ptr %14, align 8, !tbaa !216 %16 = icmp eq ptr %13, %15 - %spec.select.i.i.i = select i1 %16, ptr null, ptr %13 %17 = ptrtoint ptr %15 to i64 %18 = ptrtoint ptr %13 to i64 %19 = sub i64 %17, %18 @@ -55818,7 +55812,7 @@ define noundef i64 @_ZN6casadi13CodeGenerator12get_constantERKSt6vectorIcSaIcEEb .lr.ph.i.i.i: ; preds = %3, %.lr.ph.i.i.i %.05.i.i.i = phi i64 [ %30, %.lr.ph.i.i.i ], [ 0, %3 ] %20 = phi i64 [ %29, %.lr.ph.i.i.i ], [ 0, %3 ] - %21 = getelementptr inbounds nuw i8, ptr %spec.select.i.i.i, i64 %.05.i.i.i + %21 = getelementptr inbounds nuw i8, ptr %13, i64 %.05.i.i.i %22 = load i8, ptr %21, align 1, !tbaa !12 %23 = sext i8 %22 to i64 %24 = shl i64 %20, 6 diff --git a/bench/casadi/optimized/cs_compress.ll b/bench/casadi/optimized/cs_compress.ll index ecf48c02892..e549f540373 100644 --- a/bench/casadi/optimized/cs_compress.ll +++ b/bench/casadi/optimized/cs_compress.ll @@ -68,8 +68,7 @@ define ptr @cs_compress(ptr noundef readonly captures(address_is_null) %0) local ._crit_edge: ; preds = %.lr.ph %37 = tail call double @cs_cumsum(ptr noundef %25, ptr noundef nonnull %20, i32 noundef %10) #3 %.not52 = icmp eq ptr %29, null - %smax70 = tail call i32 @llvm.smax.i32(i32 %4, i32 1) - %wide.trip.count71 = zext nneg i32 %smax70 to i64 + %smax70 = zext nneg i32 %4 to i64 br i1 %.not52, label %.lr.ph56.split.us, label %.lr.ph56.split .lr.ph56.split.us: ; preds = %._crit_edge, %.lr.ph56.split.us @@ -130,13 +129,9 @@ declare ptr @cs_done(ptr noundef, ptr noundef, ptr noundef, i32 noundef) local_u declare double @cs_cumsum(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #1 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #2 - attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #3 = { nounwind } +attributes #2 = { nounwind } !llvm.module.flags = !{!0, !1, !2} diff --git a/bench/ceres/optimized/dogleg_strategy.ll b/bench/ceres/optimized/dogleg_strategy.ll index a36efa3e944..e6fdb0761ec 100644 --- a/bench/ceres/optimized/dogleg_strategy.ll +++ b/bench/ceres/optimized/dogleg_strategy.ll @@ -3033,10 +3033,12 @@ _ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit br i1 %.not.i.i.i.i.not, label %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit31, label %98 98: ; preds = %_ZNK5Eigen10MatrixBaseINS_6MatrixIdLin1ELi1ELi0ELin1ELi1EEEE11squaredNormEv.exit - %99 = sdiv i64 %8, 4 - %100 = shl nsw i64 %99, 2 - %101 = sdiv i64 %8, 2 - %102 = shl nsw i64 %101, 1 + %99 = sdiv i32 %7, 4 + %100 = sext i32 %99 to i64 + %101 = shl nsw i64 %100, 2 + %102 = sdiv i32 %7, 2 + %.sext51 = sext i32 %101 to i64 + %102 = shl nsw i64 %.sext51, 1 %.off.i.i.i.i12 = add nsw i64 %8, 1 %.not.i.i.i.i13 = icmp ult i64 %.off.i.i.i.i12, 3 br i1 %.not.i.i.i.i13, label %136, label %103 diff --git a/bench/clamav/optimized/XzDec.ll b/bench/clamav/optimized/XzDec.ll index 63a5990a1db..ea7c8156fdc 100644 --- a/bench/clamav/optimized/XzDec.ll +++ b/bench/clamav/optimized/XzDec.ll @@ -467,11 +467,11 @@ define void @MixCoder_Init(ptr noundef captures(none) %0) local_unnamed_addr #2 %wide.trip.count = zext nneg i32 %5 to i64 br label %11 -.preheader: ; preds = %11, %1 - %9 = icmp sgt i32 %3, 0 +.preheader: ; preds = %1 + %9 = icmp eq i32 %3, 1 br i1 %9, label %.lr.ph17, label %._crit_edge -.lr.ph17: ; preds = %.preheader +.lr.ph17: ; preds = %11, %.preheader %10 = getelementptr inbounds nuw i8, ptr %0, i64 112 br label %15 @@ -485,7 +485,7 @@ define void @MixCoder_Init(ptr noundef captures(none) %0) local_unnamed_addr #2 store i32 0, ptr %14, align 4, !tbaa !27 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond.not, label %.preheader, label %11 + br i1 %exitcond.not, label %.lr.ph17, label %11 15: ; preds = %.lr.ph17, %15 %indvars.iv19 = phi i64 [ 0, %.lr.ph17 ], [ %indvars.iv.next20, %15 ] @@ -1264,8 +1264,8 @@ MixCoder_Free.exit: ; preds = %._crit_edge.i, %40 %wide.trip.count.i = zext nneg i32 %100 to i64 br label %105 -.preheader.i: ; preds = %105, %97 - %104 = icmp sgt i32 %98, 0 +.preheader.i: ; preds = %97 + %104 = icmp eq i32 %98, 1 br i1 %104, label %.lr.ph17.i, label %MixCoder_Init.exit 105: ; preds = %105, %.lr.ph.i69 @@ -1278,10 +1278,13 @@ MixCoder_Free.exit: ; preds = %._crit_edge.i, %40 store i32 0, ptr %108, align 4, !tbaa !27 %indvars.iv.next.i71 = add nuw nsw i64 %indvars.iv.i70, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i71, %wide.trip.count.i - br i1 %exitcond.not.i, label %.preheader.i, label %105 + br i1 %exitcond.not.i, label %.lr.ph17.i.preheader, label %105 -.lr.ph17.i: ; preds = %.preheader.i, %.lr.ph17.i - %indvars.iv19.i = phi i64 [ %indvars.iv.next20.i, %.lr.ph17.i ], [ 0, %.preheader.i ] +.lr.ph17.i: ; preds = %105, %.preheader.i + br label %.lr.ph17.i + +.lr.ph17.i: ; preds = %.lr.ph17.i.preheader, %.lr.ph17.i + %indvars.iv19.i = phi i64 [ %indvars.iv.next20.i, %.lr.ph17.i ], [ 0, %.lr.ph17.i.preheader ] %109 = getelementptr inbounds nuw [4 x %struct._IStateCoder], ptr %82, i64 0, i64 %indvars.iv19.i %110 = getelementptr inbounds nuw i8, ptr %109, i64 24 %111 = load ptr, ptr %110, align 8, !tbaa !24 diff --git a/bench/clamav/optimized/rs.ll b/bench/clamav/optimized/rs.ll index f11e85936ab..0183150c8df 100644 --- a/bench/clamav/optimized/rs.ll +++ b/bench/clamav/optimized/rs.ll @@ -497,8 +497,8 @@ define void @_ZN7RSCoder6EncodeEPhiS0_(ptr noundef nonnull readonly align 4 capt %37 = load i32, ptr %36, align 4, !tbaa !10 br label %_ZN7RSCoder6gfMultEii.exit.us -_ZN7RSCoder6gfMultEii.exit.us: ; preds = %31, %._crit_edge.us - %38 = phi i32 [ %37, %31 ], [ 0, %._crit_edge.us ] +_ZN7RSCoder6gfMultEii.exit.us: ; preds = %_ZN7RSCoder6gfMultEii.exit25.us.us, %31, %._crit_edge.us + %38 = phi i32 [ %37, %31 ], [ 0, %._crit_edge.us ], [ 0, %_ZN7RSCoder6gfMultEii.exit25.us.us ] store i32 %38, ptr %5, align 16, !tbaa !10 %indvars.iv.next56 = add nuw nsw i64 %indvars.iv55, 1 %exitcond59.not = icmp eq i64 %indvars.iv.next56, %wide.trip.count58 @@ -533,9 +533,8 @@ _ZN7RSCoder6gfMultEii.exit25.us35: ; preds = %44, %.lr.ph31.split %56 = icmp sgt i64 %indvars.iv49, 1 br i1 %56, label %.lr.ph31.split.us37, label %._crit_edge.us, !llvm.loop !20 -._crit_edge.us: ; preds = %_ZN7RSCoder6gfMultEii.exit25.us35, %_ZN7RSCoder6gfMultEii.exit25.us.us - %or.cond.i.us = or i1 %.fr.us, %19 - br i1 %or.cond.i.us, label %_ZN7RSCoder6gfMultEii.exit.us, label %31 +._crit_edge.us: ; preds = %_ZN7RSCoder6gfMultEii.exit25.us35 + br i1 %19, label %_ZN7RSCoder6gfMultEii.exit.us, label %31 _ZN7RSCoder6gfMultEii.exit25.us.us: ; preds = %.lr.ph31.us, %_ZN7RSCoder6gfMultEii.exit25.us.us %indvars.iv52 = phi i64 [ %indvars.iv.next53, %_ZN7RSCoder6gfMultEii.exit25.us.us ], [ %22, %.lr.ph31.us ] @@ -545,7 +544,7 @@ _ZN7RSCoder6gfMultEii.exit25.us.us: ; preds = %.lr.ph31.us, %_ZN7R %59 = getelementptr inbounds nuw [256 x i32], ptr %5, i64 0, i64 %indvars.iv52 store i32 %58, ptr %59, align 4, !tbaa !10 %60 = icmp sgt i64 %indvars.iv52, 1 - br i1 %60, label %_ZN7RSCoder6gfMultEii.exit25.us.us, label %._crit_edge.us, !llvm.loop !20 + br i1 %60, label %_ZN7RSCoder6gfMultEii.exit25.us.us, label %_ZN7RSCoder6gfMultEii.exit.us, !llvm.loop !20 .lr.ph33.split: ; preds = %.lr.ph33 br i1 %19, label %.lr.ph33.split.split.us, label %.lr.ph33.split.split.preheader diff --git a/bench/cmake/optimized/cmSystemTools.ll b/bench/cmake/optimized/cmSystemTools.ll index e058cd02638..ae1ec6c4c8d 100644 --- a/bench/cmake/optimized/cmSystemTools.ll +++ b/bench/cmake/optimized/cmSystemTools.ll @@ -6623,7 +6623,7 @@ _Z5MkdirPKcPKj.exit.us: ; preds = %.lr.ph, %_Z5MkdirPK %11 = getelementptr inbounds nuw i8, ptr %9, i64 1 %12 = tail call noundef ptr @strchr(ptr noundef nonnull dereferenceable(1) %11, i32 noundef 47) #39 %.not17.us = icmp eq ptr %12, null - br i1 %.not17.us, label %._crit_edge, label %_Z5MkdirPKcPKj.exit.us, !llvm.loop !258 + br i1 %.not17.us, label %._crit_edge.thread, label %_Z5MkdirPKcPKj.exit.us, !llvm.loop !258 _Z5MkdirPKcPKj.exit: ; preds = %.lr.ph, %_Z5MkdirPKcPKj.exit %13 = phi ptr [ %17, %_Z5MkdirPKcPKj.exit ], [ %8, %.lr.ph ] @@ -6636,26 +6636,31 @@ _Z5MkdirPKcPKj.exit: ; preds = %.lr.ph, %_Z5MkdirPK %.not17 = icmp eq ptr %17, null br i1 %.not17, label %._crit_edge, label %_Z5MkdirPKcPKj.exit, !llvm.loop !258 -._crit_edge: ; preds = %_Z5MkdirPKcPKj.exit, %_Z5MkdirPKcPKj.exit.us, %.preheader +._crit_edge: ; preds = %_Z5MkdirPKcPKj.exit, %.preheader %18 = tail call ptr @mkdtemp(ptr noundef nonnull %0) #37 %.not18 = icmp eq ptr %18, null - br i1 %.not18, label %23, label %19 + br i1 %.not18, label %23, label %20 -19: ; preds = %._crit_edge +19: ; preds = %_Z5MkdirPKcPKj.exit.us + %19 = tail call ptr @mkdtemp(ptr noundef nonnull %0) #37 + %.not1822 = icmp eq ptr %19, null + br i1 %.not1822, label %24, label %_Z18cmHasLiteralSuffixILm7EEbSt17basic_string_viewIcSt11char_traitsIcEERAT__Kc.exit.thread + +20: ; preds = %._crit_edge %.not19 = icmp eq ptr %1, null br i1 %.not19, label %_Z18cmHasLiteralSuffixILm7EEbSt17basic_string_viewIcSt11char_traitsIcEERAT__Kc.exit.thread, label %20 -20: ; preds = %19 +20: ; preds = %20 %21 = load i32, ptr %1, align 4, !tbaa !158 %22 = tail call i32 @chmod(ptr noundef nonnull %0, i32 noundef %21) #37 br label %_Z18cmHasLiteralSuffixILm7EEbSt17basic_string_viewIcSt11char_traitsIcEERAT__Kc.exit.thread -23: ; preds = %._crit_edge +23: ; preds = %19, %._crit_edge %24 = tail call i64 @_ZN5cmsys6Status11POSIX_errnoEv() br label %_Z18cmHasLiteralSuffixILm7EEbSt17basic_string_viewIcSt11char_traitsIcEERAT__Kc.exit.thread -_Z18cmHasLiteralSuffixILm7EEbSt17basic_string_viewIcSt11char_traitsIcEERAT__Kc.exit.thread: ; preds = %3, %20, %19, %_Z18cmHasLiteralSuffixILm7EEbSt17basic_string_viewIcSt11char_traitsIcEERAT__Kc.exit, %2, %23 - %.sroa.0.0 = phi i64 [ %24, %23 ], [ 94489280513, %2 ], [ 94489280513, %_Z18cmHasLiteralSuffixILm7EEbSt17basic_string_viewIcSt11char_traitsIcEERAT__Kc.exit ], [ 0, %19 ], [ 0, %20 ], [ 94489280513, %3 ] +_Z18cmHasLiteralSuffixILm7EEbSt17basic_string_viewIcSt11char_traitsIcEERAT__Kc.exit.thread: ; preds = %19, %3, %20, %20, %_Z18cmHasLiteralSuffixILm7EEbSt17basic_string_viewIcSt11char_traitsIcEERAT__Kc.exit, %2, %23 + %.sroa.0.0 = phi i64 [ %24, %23 ], [ 94489280513, %2 ], [ 94489280513, %_Z18cmHasLiteralSuffixILm7EEbSt17basic_string_viewIcSt11char_traitsIcEERAT__Kc.exit ], [ 0, %20 ], [ 0, %20 ], [ 94489280513, %3 ], [ 0, %19 ] ret i64 %.sroa.0.0 } diff --git a/bench/cmake/optimized/zstd_compress.ll b/bench/cmake/optimized/zstd_compress.ll index 383c0b0f0a5..9be5b9e3c5d 100644 --- a/bench/cmake/optimized/zstd_compress.ll +++ b/bench/cmake/optimized/zstd_compress.ll @@ -6004,7 +6004,6 @@ ZSTD_cwksp_mark_tables_clean.exit.i.i: ; preds = %244, %232 br label %ZSTD_resetCCtx_byCopyingCDict.exit.i ZSTD_resetCCtx_byCopyingCDict.exit.i: ; preds = %ZSTD_cwksp_mark_tables_clean.exit.i.i, %ZSTD_shouldAttachDict.exit.thread.i - %.1.i.i = phi i64 [ 0, %ZSTD_cwksp_mark_tables_clean.exit.i.i ], [ %130, %ZSTD_shouldAttachDict.exit.thread.i ] call void @llvm.lifetime.end.p0(i64 208, ptr nonnull %10) br label %ZSTD_resetCCtx_usingCDict.exit @@ -6061,7 +6060,7 @@ ZSTD_resetCCtx_byCopyingCDict.exit.i: ; preds = %ZSTD_cwksp_mark_tab br label %ZSTD_resetCCtx_usingCDict.exit ZSTD_resetCCtx_usingCDict.exit: ; preds = %.thread, %290, %287, %ZSTD_resetCCtx_byCopyingCDict.exit.i, %ZSTD_resetCCtx_byAttachingCDict.exit.i, %258 - %.0 = phi i64 [ %259, %258 ], [ %86, %ZSTD_resetCCtx_byAttachingCDict.exit.i ], [ %.1.i.i, %ZSTD_resetCCtx_byCopyingCDict.exit.i ], [ %288, %287 ], [ 0, %290 ], [ %261, %.thread ] + %.0 = phi i64 [ %259, %258 ], [ %86, %ZSTD_resetCCtx_byAttachingCDict.exit.i ], [ %130, %ZSTD_resetCCtx_byCopyingCDict.exit.i ], [ %288, %287 ], [ 0, %290 ], [ %261, %.thread ] ret i64 %.0 } @@ -14604,7 +14603,7 @@ ZSTD_fastSequenceLengthSum.exit: ; preds = %.lr.ph.i ZSTD_fastSequenceLengthSum.exit.thread: ; preds = %132, %ZSTD_fastSequenceLengthSum.exit %146 = getelementptr inbounds nuw i8, ptr %0, i64 424 %147 = load i32, ptr %146, align 8, !tbaa !346 - %148 = call i64 @ZSTD_copySequencesToSeqStoreExplicitBlockDelim(ptr noundef %0, ptr noundef nonnull %5, ptr noundef %133, i64 noundef %.0.i, ptr noundef %1, i64 noundef %2, i32 noundef %147) + %148 = call i64 @ZSTD_copySequencesToSeqStoreExplicitBlockDelim(ptr noundef nonnull %0, ptr noundef nonnull %5, ptr noundef %133, i64 noundef %.0.i, ptr noundef %1, i64 noundef %2, i32 noundef %147) %149 = icmp ult i64 %148, -119 br i1 %149, label %150, label %152 diff --git a/bench/coreutils-rs/optimized/52j8pvnsrfusu9z8.ll b/bench/coreutils-rs/optimized/52j8pvnsrfusu9z8.ll index 198620fdf92..fa75e21f3a5 100644 --- a/bench/coreutils-rs/optimized/52j8pvnsrfusu9z8.ll +++ b/bench/coreutils-rs/optimized/52j8pvnsrfusu9z8.ll @@ -881,7 +881,6 @@ _ZN8lscolors8LsColors13indicator_for17hd25fc815184a6751E.exit: ; preds = %32, %2 %102 = load ptr, ptr %101, align 8, !nonnull !4, !align !14 %103 = getelementptr inbounds nuw i8, ptr %13, i64 16 %104 = load i64, ptr %103, align 8 - %.sroa.6.0 = select i1 %trunc, i64 undef, i64 %104 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) br i1 %trunc, label %117, label %105 @@ -936,7 +935,7 @@ _ZN8lscolors8LsColors13indicator_for17hd25fc815184a6751E.exit: ; preds = %32, %2 %.sroa.4.0..sroa_idx.i29 = getelementptr inbounds nuw i8, ptr %15, i64 8 store ptr %107, ptr %.sroa.4.0..sroa_idx.i29, align 8, !alias.scope !176, !noalias !179 %.sroa.5.0..sroa_idx10.i = getelementptr inbounds nuw i8, ptr %15, i64 16 - store i64 %.sroa.6.0, ptr %.sroa.5.0..sroa_idx10.i, align 8, !alias.scope !176, !noalias !179 + store i64 %104, ptr %.sroa.5.0..sroa_idx10.i, align 8, !alias.scope !176, !noalias !179 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5), !noalias !181 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h49faf435f12094f1E.llvm.8271848126233039021"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %14) to label %.noexc31 unwind label %131 @@ -1312,7 +1311,6 @@ _ZN8lscolors8LsColors13indicator_for17h9c3cdf1080826a28E.exit: ; preds = %32, %2 %102 = load ptr, ptr %101, align 8, !nonnull !4, !align !14 %103 = getelementptr inbounds nuw i8, ptr %13, i64 16 %104 = load i64, ptr %103, align 8 - %.sroa.6.0 = select i1 %trunc, i64 undef, i64 %104 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) br i1 %trunc, label %117, label %105 @@ -1367,7 +1365,7 @@ _ZN8lscolors8LsColors13indicator_for17h9c3cdf1080826a28E.exit: ; preds = %32, %2 %.sroa.4.0..sroa_idx.i29 = getelementptr inbounds nuw i8, ptr %15, i64 8 store ptr %107, ptr %.sroa.4.0..sroa_idx.i29, align 8, !alias.scope !269, !noalias !272 %.sroa.5.0..sroa_idx10.i = getelementptr inbounds nuw i8, ptr %15, i64 16 - store i64 %.sroa.6.0, ptr %.sroa.5.0..sroa_idx10.i, align 8, !alias.scope !269, !noalias !272 + store i64 %104, ptr %.sroa.5.0..sroa_idx10.i, align 8, !alias.scope !269, !noalias !272 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5), !noalias !274 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h49faf435f12094f1E.llvm.8271848126233039021"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %14) to label %.noexc31 unwind label %131 diff --git a/bench/coreutils-rs/optimized/qcad8r5ga44hvbl.ll b/bench/coreutils-rs/optimized/qcad8r5ga44hvbl.ll index 391ecffcdcd..70698010926 100644 --- a/bench/coreutils-rs/optimized/qcad8r5ga44hvbl.ll +++ b/bench/coreutils-rs/optimized/qcad8r5ga44hvbl.ll @@ -4422,7 +4422,8 @@ _ZN5uu_wc8Settings14number_enabled17h77b05f1ade4b8716E.exit.i: ; preds = %.lr.ph call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25), !noalias !1228 %77 = icmp eq i32 %76, 1 %..i = select i1 %77, i64 1, i64 7 - br label %_ZN5uu_wc20compute_number_width17hf5545744421b0745E.exit + call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %19) + br label %142 78: ; preds = %58 tail call void @llvm.experimental.noalias.scope.decl(metadata !1238) @@ -4574,8 +4575,12 @@ _ZN5uu_wc8Settings14number_enabled17h77b05f1ade4b8716E.exit30.i: ; preds = %.lr. %141 = icmp eq ptr %108, %102 br i1 %141, label %._crit_edge.i, label %107 -_ZN5uu_wc20compute_number_width17hf5545744421b0745E.exit: ; preds = %"_ZN4core3num21_$LT$impl$u20$u64$GT$14checked_ilog1017hee9b69ac3e782e46E.exit.i", %._crit_edge.i, %100, %_ZN5uu_wc8Settings14number_enabled17h77b05f1ade4b8716E.exit30.i, %_ZN5uu_wc8Settings14number_enabled17h77b05f1ade4b8716E.exit.i, %2 - %.066.ph = phi i64 [ 1, %100 ], [ 1, %_ZN5uu_wc8Settings14number_enabled17h77b05f1ade4b8716E.exit30.i ], [ %..i, %_ZN5uu_wc8Settings14number_enabled17h77b05f1ade4b8716E.exit.i ], [ %.0.sroa.speculated.i.i, %"_ZN4core3num21_$LT$impl$u20$u64$GT$14checked_ilog1017hee9b69ac3e782e46E.exit.i" ], [ %.3.i, %._crit_edge.i ], [ 1, %2 ] +_ZN5uu_wc20compute_number_width17hf5545744421b0745E.exit: ; preds = %100, %_ZN5uu_wc8Settings14number_enabled17h77b05f1ade4b8716E.exit30.i + call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %19) + br label %151 + +_ZN5uu_wc20compute_number_width17hf5545744421b0745E.exit: ; preds = %"_ZN4core3num21_$LT$impl$u20$u64$GT$14checked_ilog1017hee9b69ac3e782e46E.exit.i", %._crit_edge.i, %2 + %.066.ph = phi i64 [ %.0.sroa.speculated.i.i, %"_ZN4core3num21_$LT$impl$u20$u64$GT$14checked_ilog1017hee9b69ac3e782e46E.exit.i" ], [ %.3.i, %._crit_edge.i ], [ 1, %2 ] call void @llvm.experimental.noalias.scope.decl(metadata !1214) call void @llvm.experimental.noalias.scope.decl(metadata !1281) call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %19) @@ -4588,7 +4593,8 @@ _ZN5uu_wc20compute_number_width17hf5545744421b0745E.exit: ; preds = %"_ZN4core3n default.unreachable68.i: ; preds = %_ZN5uu_wc20compute_number_width17hf5545744421b0745E.exit unreachable -142: ; preds = %_ZN5uu_wc20compute_number_width17hf5545744421b0745E.exit +142: ; preds = %_ZN5uu_wc8Settings14number_enabled17h77b05f1ade4b8716E.exit.i, %_ZN5uu_wc20compute_number_width17hf5545744421b0745E.exit + %.066.ph299 = phi i64 [ %..i, %_ZN5uu_wc20compute_number_width17hf5545744421b0745E.exit.thread297 ], [ %.066.ph, %_ZN5uu_wc20compute_number_width17hf5545744421b0745E.exit ] call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %21), !noalias !1282 store i64 -9223372036854775807, ptr %21, align 8, !noalias !1282 %.sroa.033.sroa.4.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %21, i64 8 @@ -4626,7 +4632,8 @@ common.resume: ; preds = %308, %.body, %147, call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21), !noalias !1282 br label %166 -151: ; preds = %_ZN5uu_wc20compute_number_width17hf5545744421b0745E.exit +151: ; preds = %_ZN5uu_wc20compute_number_width17hf5545744421b0745E.exit, %_ZN5uu_wc20compute_number_width17hf5545744421b0745E.exit + %.066.ph296 = phi i64 [ 1, %_ZN5uu_wc20compute_number_width17hf5545744421b0745E.exit.thread294 ], [ %.066.ph, %_ZN5uu_wc20compute_number_width17hf5545744421b0745E.exit ] %152 = getelementptr inbounds nuw i8, ptr %0, i64 16 %153 = load ptr, ptr %152, align 8, !alias.scope !1214, !noalias !1217, !nonnull !16, !noundef !16 %154 = getelementptr inbounds nuw i8, ptr %0, i64 24 @@ -4655,7 +4662,7 @@ _ZN5alloc5alloc15exchange_malloc17he27dc27497df8aaaE.exit55.i: ; preds = %151 br i1 %165, label %175, label %168 166: ; preds = %"_ZN5alloc5boxed12Box$LT$T$GT$3new17hd41889a27f5693d4E.exit.i", %"_ZN5alloc5boxed12Box$LT$T$GT$3new17ha037a0c5577a7c2aE.exit.i", %_ZN5alloc5alloc15exchange_malloc17he27dc27497df8aaaE.exit55.i, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17h92031fc3402f7f86E.exit.i" - %.066184 = phi i64 [ %.066185, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17ha037a0c5577a7c2aE.exit.i" ], [ %.066185, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17hd41889a27f5693d4E.exit.i" ], [ %.066.ph, %_ZN5alloc5alloc15exchange_malloc17he27dc27497df8aaaE.exit55.i ], [ %.066.ph, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17h92031fc3402f7f86E.exit.i" ] + %.066184 = phi i64 [ %.066185, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17ha037a0c5577a7c2aE.exit.i" ], [ %.066185, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17hd41889a27f5693d4E.exit.i" ], [ %.066.ph296, %_ZN5alloc5alloc15exchange_malloc17he27dc27497df8aaaE.exit55.i ], [ %.066.ph299, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17h92031fc3402f7f86E.exit.i" ] %.sroa.019.0.i = phi ptr [ %177, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17ha037a0c5577a7c2aE.exit.i" ], [ %186, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17hd41889a27f5693d4E.exit.i" ], [ %157, %_ZN5alloc5alloc15exchange_malloc17he27dc27497df8aaaE.exit55.i ], [ %144, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17h92031fc3402f7f86E.exit.i" ] %.sroa.520.0.i = phi ptr [ @anon.028f4f501a1d8d09ad1762241ec60bf9.68, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17ha037a0c5577a7c2aE.exit.i" ], [ @anon.028f4f501a1d8d09ad1762241ec60bf9.67, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17hd41889a27f5693d4E.exit.i" ], [ @anon.028f4f501a1d8d09ad1762241ec60bf9.66, %_ZN5alloc5alloc15exchange_malloc17he27dc27497df8aaaE.exit55.i ], [ @anon.028f4f501a1d8d09ad1762241ec60bf9.65, %"_ZN5alloc5boxed12Box$LT$T$GT$3new17h92031fc3402f7f86E.exit.i" ] %167 = load i64, ptr %1, align 8, !range !106, !alias.scope !1281, !noalias !1286, !noundef !16 diff --git a/bench/cpython/optimized/posixmodule.ll b/bench/cpython/optimized/posixmodule.ll index f7be89e0971..a72fc7c957c 100644 --- a/bench/cpython/optimized/posixmodule.ll +++ b/bench/cpython/optimized/posixmodule.ll @@ -9691,11 +9691,7 @@ define internal noalias noundef ptr @os_execve(ptr readnone captures(none) %0, p 73: ; preds = %70, %55 %74 = load i64, ptr %6, align 8, !tbaa !140 %75 = icmp sgt i64 %74, 0 - br i1 %75, label %.lr.ph.i.i, label %.thread8.i - -.thread8.i: ; preds = %73 - call void @PyMem_Free(ptr noundef nonnull %53) #20 - br label %.thread4.i + br i1 %75, label %.lr.ph.i.i, label %.thread4.i .lr.ph.i.i: ; preds = %73, %.lr.ph.i.i %.05.i.i = phi i64 [ %78, %.lr.ph.i.i ], [ 0, %73 ] @@ -9706,11 +9702,11 @@ define internal noalias noundef ptr @os_execve(ptr readnone captures(none) %0, p %exitcond.not.i.i = icmp eq i64 %78, %74 br i1 %exitcond.not.i.i, label %79, label %.lr.ph.i.i, !llvm.loop !158 -79: ; preds = %.lr.ph.i.i +79: ; preds = %.lr.ph.i.i, %73 call void @PyMem_Free(ptr noundef nonnull %53) #20 br label %.thread4.i -.thread4.i: ; preds = %79, %.thread8.i, %52, %50 +.thread4.i: ; preds = %.thread4.i, %52, %50 %80 = load i64, ptr %5, align 8, !tbaa !140 %81 = icmp sgt i64 %80, 0 br i1 %81, label %.lr.ph.i37.i, label %free_string_array.exit40.i @@ -24088,7 +24084,7 @@ Py_DECREF.exit85: ; preds = %23, %26, %29 br label %Py_DECREF.exit87.thread 49: ; preds = %._crit_edge - %50 = add nsw i64 %46, 63 + %50 = add nuw nsw i64 %46, 63 %51 = lshr i64 %50, 3 %52 = and i64 %51, 2305843009213693944 tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %47, i8 0, i64 %52, i1 false) diff --git a/bench/csmith/optimized/Probabilities.ll b/bench/csmith/optimized/Probabilities.ll index d3c277a7c21..9f31f39d2ce 100644 --- a/bench/csmith/optimized/Probabilities.ll +++ b/bench/csmith/optimized/Probabilities.ll @@ -1534,7 +1534,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #27 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #27 - %160 = call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef %.sroa.0113.0189) #29 + %160 = call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef nonnull %.sroa.0113.0189) #29 %.not124 = icmp eq ptr %160, %23 br i1 %.not124, label %._crit_edge.loopexit, label %30, !llvm.loop !93 @@ -1712,7 +1712,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i86 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit88: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i87, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i86 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #27 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #27 - %226 = call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef %.sroa.0113.1194) #29 + %226 = call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef nonnull %.sroa.0113.1194) #29 %.not125 = icmp eq ptr %226, %23 br i1 %.not125, label %.loopexit, label %187, !llvm.loop !97 @@ -4023,7 +4023,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i: _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %46) #27 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %45) #27 - %347 = call noundef ptr @_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base(ptr noundef %.sroa.023.033) #29 + %347 = call noundef ptr @_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base(ptr noundef nonnull %.sroa.023.033) #29 %.not = icmp eq ptr %347, %47 br i1 %.not, label %._crit_edge, label %272, !llvm.loop !122 @@ -7780,6 +7780,7 @@ _ZNSt3setIiSt4lessIiESaIiEED2Ev.exit: ; preds = %._crit_edge 68: ; preds = %.lr.ph.split %69 = icmp sgt i32 %67, 0 %.02022.i.i.i.pr.pre = load ptr, ptr %38, align 8, !tbaa !22 + %.not10.i.i.i = icmp eq ptr %.02022.i.i.i.pr.pre, null br i1 %69, label %72, label %.critedge .split: ; preds = %_ZNSt8_Rb_treeIiiSt9_IdentityIiESt4lessIiESaIiEE10_M_insert_IRKiNS5_11_Alloc_nodeEEESt17_Rb_tree_iteratorIiEPSt18_Rb_tree_node_baseSD_OT_RT0_.exit.i.i, %.lr.ph.split @@ -7795,7 +7796,6 @@ _ZNSt3setIiSt4lessIiESaIiEED2Ev.exit: ; preds = %._crit_edge resume { ptr, i32 } %.us-phi 72: ; preds = %68 - %.not10.i.i.i = icmp eq ptr %.02022.i.i.i.pr.pre, null br i1 %.not10.i.i.i, label %._crit_edge.thread.i.i.i, label %.lr.ph.i.i.i .lr.ph.i.i.i: ; preds = %72, %.lr.ph.i.i.i @@ -7822,9 +7822,11 @@ _ZNSt3setIiSt4lessIiESaIiEE4findERKi.exit: ; preds = %_ZNSt8_Rb_treeIiiSt %78 = icmp slt i32 %67, %77 br i1 %78, label %.critedge, label %_ZNSt3setIiSt4lessIiESaIiEE6insertERKi.exit -.critedge: ; preds = %_ZNSt8_Rb_treeIiiSt9_IdentityIiESt4lessIiESaIiEE14_M_lower_boundEPSt13_Rb_tree_nodeIiEPSt18_Rb_tree_node_baseRKi.exit.i.i, %68, %_ZNSt3setIiSt4lessIiESaIiEE4findERKi.exit - %.not23.i.i.i = icmp eq ptr %.02022.i.i.i.pr.pre, null - br i1 %.not23.i.i.i, label %._crit_edge.thread.i.i.i, label %.lr.ph.i.i.i14 +.critedge: ; preds = %68 + br i1 %.not10.i.i.i, label %._crit_edge.thread.i.i.i, label %.lr.ph.i.i.i14.preheader + +.critedge: ; preds = %_ZNSt3setIiSt4lessIiESaIiEE4findERKi.exit, %_ZNSt8_Rb_treeIiiSt9_IdentityIiESt4lessIiESaIiEE14_M_lower_boundEPSt13_Rb_tree_nodeIiEPSt18_Rb_tree_node_baseRKi.exit.i.i, %.critedge + br label %.lr.ph.i.i.i14 .lr.ph.i.i.i14: ; preds = %.critedge, %.lr.ph.i.i.i14 %.02024.i.i.i = phi ptr [ %.020.i.i.i, %.lr.ph.i.i.i14 ], [ %.02022.i.i.i.pr.pre, %.critedge ] diff --git a/bench/csmith/optimized/Variable.ll b/bench/csmith/optimized/Variable.ll index 819865824e2..cbf749d3672 100644 --- a/bench/csmith/optimized/Variable.ll +++ b/bench/csmith/optimized/Variable.ll @@ -2321,7 +2321,7 @@ define dso_local noundef zeroext i1 @_ZNK8Variable11loose_matchEPKS_(ptr noundef %11 = getelementptr inbounds nuw i8, ptr %6, i64 64 %12 = load ptr, ptr %11, align 8, !tbaa !39 %.not.i = icmp eq ptr %12, null - br i1 %.not.i, label %24, label %13 + br i1 %.not.i, label %.thread22, label %13 13: ; preds = %2 %14 = getelementptr inbounds nuw i8, ptr %10, i64 64 @@ -2348,15 +2348,19 @@ define dso_local noundef zeroext i1 @_ZNK8Variable11loose_matchEPKS_(ptr noundef %or.cond.not.i.i = and i1 %23, %.not.i.i br i1 %or.cond.not.i.i, label %.lr.ph.i.i, label %_ZNK8Variable5matchEPKS_.exit, !llvm.loop !81 -24: ; preds = %16, %13, %2 +24: ; preds = %16, %13 %25 = icmp eq ptr %6, %10 br i1 %25, label %_ZNK8Variable5matchEPKS_.exit.thread, label %26 +.thread22: ; preds = %2 + %26 = icmp eq ptr %6, %10 + br i1 %26, label %_ZNK8Variable5matchEPKS_.exit.thread, label %_ZNK8Variable19get_container_unionEv.exit + _ZNK8Variable5matchEPKS_.exit: ; preds = %.lr.ph.i.i br i1 %.not.i.i, label %_ZNK8Variable5matchEPKS_.exit.thread, label %26 26: ; preds = %24, %_ZNK8Variable5matchEPKS_.exit - br i1 %.not.i, label %_ZNK8Variable19get_container_unionEv.exit, label %.preheader.i + br label %.preheader.i .preheader.i: ; preds = %26, %30 %.08.i = phi ptr [ %32, %30 ], [ %6, %26 ] @@ -2372,8 +2376,8 @@ _ZNK8Variable5matchEPKS_.exit: ; preds = %.lr.ph.i.i %.not.i14 = icmp eq ptr %32, null br i1 %.not.i14, label %_ZNK8Variable19get_container_unionEv.exit, label %.preheader.i, !llvm.loop !96 -_ZNK8Variable19get_container_unionEv.exit: ; preds = %.preheader.i, %30, %26 - %.06.i = phi ptr [ null, %26 ], [ null, %30 ], [ %.08.i, %.preheader.i ] +_ZNK8Variable19get_container_unionEv.exit: ; preds = %.preheader.i, %30, %.thread22 + %.06.i = phi ptr [ null, %.thread22 ], [ null, %30 ], [ %.08.i, %.preheader.i ] %33 = getelementptr inbounds nuw i8, ptr %10, i64 64 %34 = load ptr, ptr %33, align 8, !tbaa !39 %35 = icmp eq ptr %34, null @@ -2402,8 +2406,8 @@ _ZNK8Variable19get_container_unionEv.exit20: ; preds = %.preheader.i15, %39 %spec.select = and i1 %44, %or.cond br label %_ZNK8Variable5matchEPKS_.exit.thread -_ZNK8Variable5matchEPKS_.exit.thread: ; preds = %19, %24, %_ZNK8Variable5matchEPKS_.exit, %_ZNK8Variable19get_container_unionEv.exit20 - %.0 = phi i1 [ %spec.select, %_ZNK8Variable19get_container_unionEv.exit20 ], [ true, %_ZNK8Variable5matchEPKS_.exit ], [ true, %24 ], [ true, %19 ] +_ZNK8Variable5matchEPKS_.exit.thread: ; preds = %.thread22, %19, %24, %_ZNK8Variable5matchEPKS_.exit, %_ZNK8Variable19get_container_unionEv.exit20 + %.0 = phi i1 [ %spec.select, %_ZNK8Variable19get_container_unionEv.exit20 ], [ true, %_ZNK8Variable5matchEPKS_.exit ], [ true, %24 ], [ true, %19 ], [ true, %.thread22 ] ret i1 %.0 } diff --git a/bench/curl/optimized/keylog.ll b/bench/curl/optimized/keylog.ll index 30b8281ec80..36f947015dd 100644 --- a/bench/curl/optimized/keylog.ll +++ b/bench/curl/optimized/keylog.ll @@ -143,7 +143,7 @@ define hidden noundef zeroext i1 @Curl_tls_keylog_write(ptr noundef readonly cap call void @llvm.lifetime.start.p0(i64 195, ptr nonnull %5) #8 %6 = load ptr, ptr @keylog_file_fp, align 8, !tbaa !3 %.not = icmp eq ptr %6, null - br i1 %.not, label %49, label %7 + br i1 %.not, label %48, label %7 7: ; preds = %4 %8 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %0) #9 @@ -151,7 +151,7 @@ define hidden noundef zeroext i1 @Curl_tls_keylog_write(ptr noundef readonly cap %10 = add i64 %3, -49 %11 = icmp ult i64 %10, -48 %or.cond3 = or i1 %11, %9 - br i1 %or.cond3, label %49, label %12 + br i1 %or.cond3, label %48, label %12 12: ; preds = %7 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 16 %5, ptr nonnull align 1 %0, i64 %8, i1 false) @@ -188,45 +188,42 @@ define hidden noundef zeroext i1 @Curl_tls_keylog_write(ptr noundef readonly cap %30 = getelementptr inbounds nuw [195 x i8], ptr %5, i64 0, i64 %.034 store i8 32, ptr %30, align 1, !tbaa !9 %.13545 = add i64 %.034.in42, 4 - %.not50 = icmp eq i64 %3, 0 - br i1 %.not50, label %._crit_edge, label %.lr.ph + br label %.lr.ph -.lr.ph: ; preds = %29, %.lr.ph +.lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph %.13548 = phi i64 [ %.135, %.lr.ph ], [ %.13545, %29 ] - %.147 = phi i64 [ %44, %.lr.ph ], [ 0, %29 ] - %.135.in46 = phi i64 [ %.13548, %.lr.ph ], [ %21, %29 ] - %31 = getelementptr inbounds nuw i8, ptr %2, i64 %.147 - %32 = load i8, ptr %31, align 1, !tbaa !9 - %33 = lshr i8 %32, 4 - %34 = zext nneg i8 %33 to i64 - %35 = getelementptr inbounds nuw i8, ptr @.str.2, i64 %34 - %36 = load i8, ptr %35, align 1, !tbaa !9 - %37 = add i64 %.135.in46, 3 - %38 = getelementptr inbounds nuw [195 x i8], ptr %5, i64 0, i64 %.13548 - store i8 %36, ptr %38, align 1, !tbaa !9 - %39 = and i8 %32, 15 - %40 = zext nneg i8 %39 to i64 - %41 = getelementptr inbounds nuw i8, ptr @.str.2, i64 %40 - %42 = load i8, ptr %41, align 1, !tbaa !9 - %43 = getelementptr inbounds nuw [195 x i8], ptr %5, i64 0, i64 %37 - store i8 %42, ptr %43, align 1, !tbaa !9 - %44 = add nuw nsw i64 %.147, 1 + %.13548 = phi i64 [ %43, %.lr.ph ], [ 0, %29 ] + %.147 = phi i64 [ %.13548, %.lr.ph ], [ %21, %29 ] + %.135.in46 = getelementptr inbounds nuw i8, ptr %2, i64 %.13548 + %31 = load i8, ptr %30, align 1, !tbaa !9 + %32 = lshr i8 %31, 4 + %33 = zext nneg i8 %32 to i64 + %34 = getelementptr inbounds nuw i8, ptr @.str.2, i64 %33 + %35 = load i8, ptr %34, align 1, !tbaa !9 + %36 = add i64 %.135.in46, 3 + %37 = getelementptr inbounds nuw [195 x i8], ptr %5, i64 0, i64 %.13548 + store i8 %35, ptr %37, align 1, !tbaa !9 + %38 = and i8 %31, 15 + %39 = zext nneg i8 %38 to i64 + %40 = getelementptr inbounds nuw i8, ptr @.str.2, i64 %39 + %41 = load i8, ptr %40, align 1, !tbaa !9 + %42 = getelementptr inbounds nuw [195 x i8], ptr %5, i64 0, i64 %36 + store i8 %41, ptr %42, align 1, !tbaa !9 + %43 = add nuw nsw i64 %.147, 1 %.135 = add i64 %.13548, 2 - %exitcond52.not = icmp eq i64 %44, %3 + %exitcond52.not = icmp eq i64 %43, %3 br i1 %exitcond52.not, label %._crit_edge, label %.lr.ph, !llvm.loop !12 -._crit_edge: ; preds = %.lr.ph, %29 - %.135.in.lcssa = phi i64 [ %21, %29 ], [ %.13548, %.lr.ph ] - %.135.lcssa = phi i64 [ %.13545, %29 ], [ %.135, %.lr.ph ] - %45 = add i64 %.135.in.lcssa, 3 - %46 = getelementptr inbounds nuw [195 x i8], ptr %5, i64 0, i64 %.135.lcssa - store i8 10, ptr %46, align 1, !tbaa !9 - %47 = getelementptr inbounds nuw [195 x i8], ptr %5, i64 0, i64 %45 - store i8 0, ptr %47, align 1, !tbaa !9 - %48 = call i32 @fputs(ptr noundef nonnull %5, ptr noundef nonnull %6) - br label %49 - -49: ; preds = %7, %4, %._crit_edge +._crit_edge: ; preds = %.lr.ph + %.135.in.lcssa = add i64 %.13548, 3 + %.135.lcssa = getelementptr inbounds nuw [195 x i8], ptr %5, i64 0, i64 %.135 + store i8 10, ptr %.135.lcssa, align 1, !tbaa !9 + %46 = getelementptr inbounds nuw [195 x i8], ptr %5, i64 0, i64 %.135.in.lcssa + store i8 0, ptr %46, align 1, !tbaa !9 + %47 = call i32 @fputs(ptr noundef nonnull %5, ptr noundef nonnull %6) + br label %48 + +48:; preds = %7, %4, %._crit_edge %.036 = phi i1 [ true, %._crit_edge ], [ false, %4 ], [ false, %7 ] call void @llvm.lifetime.end.p0(i64 195, ptr nonnull %5) #8 ret i1 %.036 diff --git a/bench/cvc5/optimized/candidate_rewrite_filter.ll b/bench/cvc5/optimized/candidate_rewrite_filter.ll index ad1ad6de0a9..33beeaaa6c9 100644 --- a/bench/cvc5/optimized/candidate_rewrite_filter.ll +++ b/bench/cvc5/optimized/candidate_rewrite_filter.ll @@ -3497,7 +3497,7 @@ _ZNSt3mapIN4cvc58internal12NodeTemplateILb1EEESt13unordered_setIS3_St4hashIS3_ES %365 = load i64, ptr %364, align 8 %366 = and i64 %365, 1099511627775 %367 = icmp samesign ult i64 %355, %366 - br i1 %367, label %_ZNSt3mapIN4cvc58internal12NodeTemplateILb1EEESt13unordered_setIS3_St4hashIS3_ESt8equal_toIS3_ESaIS3_EESt4lessIS3_ESaISt4pairIKS3_SA_EEE4findERSE_.exit.thread, label %487 + br i1 %367, label %_ZNSt3mapIN4cvc58internal12NodeTemplateILb1EEESt13unordered_setIS3_St4hashIS3_ESt8equal_toIS3_ESaIS3_EESt4lessIS3_ESaISt4pairIKS3_SA_EEE4findERSE_.exit.thread, label %.lr.ph.i.i.i.i133 _ZNSt3mapIN4cvc58internal12NodeTemplateILb1EEESt13unordered_setIS3_St4hashIS3_ESt8equal_toIS3_ESaIS3_EESt4lessIS3_ESaISt4pairIKS3_SA_EEE4findERSE_.exit.thread: ; preds = %_ZN4cvc58internal12NodeTemplateILb1EEC2ERKS2_.exit94, %_ZNSt8_Rb_treeIN4cvc58internal12NodeTemplateILb1EEESt4pairIKS3_St13unordered_setIS3_St4hashIS3_ESt8equal_toIS3_ESaIS3_EEESt10_Select1stISD_ESt4lessIS3_ESaISD_EE14_M_lower_boundEPSt13_Rb_tree_nodeISD_EPSt18_Rb_tree_node_baseRS5_.exit.i.i, %_ZNSt3mapIN4cvc58internal12NodeTemplateILb1EEESt13unordered_setIS3_St4hashIS3_ESt8equal_toIS3_ESaIS3_EESt4lessIS3_ESaISt4pairIKS3_SA_EEE4findERSE_.exit call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #24 @@ -3742,7 +3742,7 @@ _ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit128: ; preds = %457, %451, %447, % %474 = load i64, ptr %473, align 8 %475 = and i64 %474, 1152920405095219200 %.not.i.i129 = icmp eq i64 %475, 1152920405095219200 - br i1 %.not.i.i129, label %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit131, label %476, !prof !91 + br i1 %.not.i.i129, label %487, label %476, !prof !91 476: ; preds = %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit128 %477 = add i64 %474, 1152920405095219200 @@ -3751,11 +3751,11 @@ _ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit128: ; preds = %457, %451, %447, % %480 = or disjoint i64 %478, %479 store i64 %480, ptr %473, align 8 %481 = icmp eq i64 %478, 0 - br i1 %481, label %482, label %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit131, !prof !91 + br i1 %481, label %482, label %487, !prof !91 482: ; preds = %476 invoke void @_ZN4cvc58internal4expr9NodeValue15markForDeletionEv(ptr noundef nonnull align 8 dereferenceable(24) %473) - to label %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit131 unwind label %483 + to label %487 unwind label %483 483: ; preds = %482 %484 = landingpad { ptr, i32 } @@ -3764,11 +3764,6 @@ _ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit128: ; preds = %457, %451, %447, % call void @__clang_call_terminate(ptr %485) #26 unreachable -_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit131: ; preds = %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit128, %476, %482 - call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #24 - %.pre197 = load ptr, ptr %299, align 8, !tbaa !17 - br label %487 - .body: ; preds = %469, %406, %471 %.pn39 = phi { ptr, i32 } [ %472, %471 ], [ %470, %469 ], [ %407, %406 ] call void @_ZN4cvc58internal12NodeTemplateILb1EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #24 @@ -3779,12 +3774,14 @@ _ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit131: ; preds = %_ZN4cvc58internal1 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #24 br label %538 -487: ; preds = %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit131, %_ZNSt3mapIN4cvc58internal12NodeTemplateILb1EEESt13unordered_setIS3_St4hashIS3_ESt8equal_toIS3_ESaIS3_EESt4lessIS3_ESaISt4pairIKS3_SA_EEE4findERSE_.exit - %488 = phi ptr [ %.pre197, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit131 ], [ %353, %_ZNSt3mapIN4cvc58internal12NodeTemplateILb1EEESt13unordered_setIS3_St4hashIS3_ESt8equal_toIS3_ESaIS3_EESt4lessIS3_ESaISt4pairIKS3_SA_EEE4findERSE_.exit ] - %.not10.i.i.i.i132 = icmp eq ptr %488, null +487: ; preds = %482, %476, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit128 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #24 + %.not10.i.i.i.i132 = load ptr, ptr %299, align 8, !tbaa !17 + %.not10.i.i.i.i132 = icmp eq ptr %.pre197, null br i1 %.not10.i.i.i.i132, label %.critedge.i142, label %.lr.ph.i.i.i.i133 -.lr.ph.i.i.i.i133: ; preds = %487 +.lr.ph.i.i.i.i133: ; preds = %_ZNSt3mapIN4cvc58internal12NodeTemplateILb1EEESt13unordered_setIS3_St4hashIS3_ESt8equal_toIS3_ESaIS3_EESt4lessIS3_ESaISt4pairIKS3_SA_EEE4findERSE_.exit, %487 + %488 = phi ptr [ %.pre197, %487 ], [ %353, %_ZNSt3mapIN4cvc58internal12NodeTemplateILb1EEESt13unordered_setIS3_St4hashIS3_ESt8equal_toIS3_ESaIS3_EESt4lessIS3_ESaISt4pairIKS3_SA_EEE4findERSE_.exit ] %489 = load ptr, ptr %18, align 8, !tbaa !26 %490 = load i64, ptr %489, align 8 %491 = and i64 %490, 1099511627775 diff --git a/bench/cvc5/optimized/monomial_bounds_check.ll b/bench/cvc5/optimized/monomial_bounds_check.ll index 1f4c14ad7c1..823daa3e173 100644 --- a/bench/cvc5/optimized/monomial_bounds_check.ll +++ b/bench/cvc5/optimized/monomial_bounds_check.ll @@ -5257,7 +5257,6 @@ _ZNKSt3mapIN4cvc58internal12NodeTemplateILb1EEESt6vectorIS3_SaIS3_EESt4lessIS3_E %2281 = load i64, ptr %2280, align 8 %2282 = and i64 %2281, 1099511627775 %2283 = icmp samesign ult i64 %2271, %2282 - %spec.select.i.i1754 = select i1 %2283, ptr %2166, ptr %.19.i.i.i1749 %2284 = load ptr, ptr %2167, align 8 %.not10.i.i.i1808 = icmp eq ptr %2284, null %or.cond = select i1 %2283, i1 true, i1 %.not10.i.i.i1808 @@ -5303,8 +5302,8 @@ _ZNSt3mapIN4cvc58internal12NodeTemplateILb1EEES_IS3_S_IS3_NS1_4kind6Kind_tESt4le br i1 %.not43117692, label %_ZN4cvc58internal11Cvc5ostreamlsEPFRSoS2_E.exit1770, label %.lr.ph7695 .lr.ph7695: ; preds = %2298 - %2302 = getelementptr inbounds nuw i8, ptr %spec.select.i.i1754, i64 40 - %2303 = getelementptr inbounds nuw i8, ptr %spec.select.i.i1754, i64 48 + %2302 = getelementptr inbounds nuw i8, ptr %.19.i.i.i1749, i64 40 + %2303 = getelementptr inbounds nuw i8, ptr %.19.i.i.i1749, i64 48 br label %2304 2304: ; preds = %.lr.ph7695, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit1836 @@ -18357,7 +18356,6 @@ _ZNSt3mapIN4cvc58internal12NodeTemplateILb1EEES_IS3_S_IS3_NS1_4kind6Kind_tESt4le %168 = load i64, ptr %167, align 8 %169 = and i64 %168, 1099511627775 %170 = icmp samesign ult i64 %158, %169 - %spec.select.i.i214 = select i1 %170, ptr %88, ptr %.19.i.i.i208 br i1 %170, label %_ZNSt3mapIN4cvc58internal12NodeTemplateILb1EEES_IS3_S_IS3_NS1_4kind6Kind_tESt4lessIS3_ESaISt4pairIKS3_S5_EEES7_SaIS8_IS9_SC_EEES7_SaIS8_IS9_SF_EEE4findERS9_.exit216.thread, label %_ZN4cvc58internal11Cvc5ostreamlsEPFRSoS2_E.exit261 171: ; preds = %153 @@ -18717,8 +18715,8 @@ _ZN4cvc58internal11Cvc5ostreamlsEPFRSoS2_E.exit468: ; preds = %316 br i1 %.not13071382, label %_ZNSt6vectorIN4cvc58internal12NodeTemplateILb1EEESaIS3_EED2Ev.exit, label %.lr.ph1384 .lr.ph1384: ; preds = %_ZN4cvc58internal11Cvc5ostreamlsEPFRSoS2_E.exit468 - %328 = getelementptr inbounds nuw i8, ptr %spec.select.i.i214, i64 64 - %329 = getelementptr inbounds nuw i8, ptr %spec.select.i.i214, i64 48 + %328 = getelementptr inbounds nuw i8, ptr %.19.i.i.i208, i64 64 + %329 = getelementptr inbounds nuw i8, ptr %.19.i.i.i208, i64 48 br label %350 ._crit_edge1385: ; preds = %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit diff --git a/bench/cvc5/optimized/sygus_interpol.ll b/bench/cvc5/optimized/sygus_interpol.ll index d13f1b92082..59c40655049 100644 --- a/bench/cvc5/optimized/sygus_interpol.ll +++ b/bench/cvc5/optimized/sygus_interpol.ll @@ -2892,7 +2892,7 @@ _ZNSt3mapIN4cvc58internal8TypeNodeESt13unordered_setINS1_12NodeTemplateILb1EEESt %327 = load i64, ptr %326, align 8 %328 = and i64 %327, 1099511627775 %329 = icmp samesign ult i64 %317, %328 - br i1 %329, label %.lr.ph.i.i.i.i89, label %379 + br i1 %329, label %.lr.ph.i.i.i.i89, label %.lr.ph.i.i.i.i93 .lr.ph.i.i.i.i89: ; preds = %_ZNSt3mapIN4cvc58internal8TypeNodeESt13unordered_setINS1_12NodeTemplateILb1EEESt4hashIS5_ESt8equal_toIS5_ESaIS5_EESt4lessIS2_ESaISt4pairIKS2_SB_EEE4findERSF_.exit88, %_ZNSt8_Rb_treeIN4cvc58internal8TypeNodeESt4pairIKS2_St13unordered_setINS1_12NodeTemplateILb1EEESt4hashIS7_ESt8equal_toIS7_ESaIS7_EEESt10_Select1stISE_ESt4lessIS2_ESaISE_EE14_M_lower_boundEPSt13_Rb_tree_nodeISE_EPSt18_Rb_tree_node_baseRS4_.exit.i.i85 call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %32) #23 @@ -3017,17 +3017,12 @@ _ZNSt10_HashtableIN4cvc58internal12NodeTemplateILb1EEES3_SaIS3_ENSt8__detail9_Id call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %167, i8 0, i64 16, i1 false) %370 = load ptr, ptr %32, align 8, !tbaa !6 %371 = icmp eq ptr %370, %165 - br i1 %371, label %_ZNSt10_HashtableIN4cvc58internal12NodeTemplateILb1EEES3_SaIS3_ENSt8__detail9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb1ELb1ELb1EEEED2Ev.exit138, label %372 + br i1 %371, label %379, label %372 372: ; preds = %_ZNSt10_HashtableIN4cvc58internal12NodeTemplateILb1EEES3_SaIS3_ENSt8__detail9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb1ELb1ELb1EEEE5clearEv.exit.i137 %373 = load i64, ptr %166, align 8, !tbaa !16 %374 = shl i64 %373, 3 call void @_ZdlPvm(ptr noundef %370, i64 noundef %374) #26 - br label %_ZNSt10_HashtableIN4cvc58internal12NodeTemplateILb1EEES3_SaIS3_ENSt8__detail9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb1ELb1ELb1EEEED2Ev.exit138 - -_ZNSt10_HashtableIN4cvc58internal12NodeTemplateILb1EEES3_SaIS3_ENSt8__detail9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb1ELb1ELb1EEEED2Ev.exit138: ; preds = %_ZNSt10_HashtableIN4cvc58internal12NodeTemplateILb1EEES3_SaIS3_ENSt8__detail9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb1ELb1ELb1EEEE5clearEv.exit.i137, %372 - call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %32) #23 - %.pre = load ptr, ptr %163, align 8, !tbaa !357 br label %379 375: ; preds = %286 @@ -3042,12 +3037,14 @@ _ZNSt10_HashtableIN4cvc58internal12NodeTemplateILb1EEES3_SaIS3_ENSt8__detail9_Id call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %32) #23 br label %404 -379: ; preds = %_ZNSt10_HashtableIN4cvc58internal12NodeTemplateILb1EEES3_SaIS3_ENSt8__detail9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb1ELb1ELb1EEEED2Ev.exit138, %_ZNSt3mapIN4cvc58internal8TypeNodeESt13unordered_setINS1_12NodeTemplateILb1EEESt4hashIS5_ESt8equal_toIS5_ESaIS5_EESt4lessIS2_ESaISt4pairIKS2_SB_EEE4findERSF_.exit88 - %380 = phi ptr [ %.pre, %_ZNSt10_HashtableIN4cvc58internal12NodeTemplateILb1EEES3_SaIS3_ENSt8__detail9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb1ELb1ELb1EEEED2Ev.exit138 ], [ %314, %_ZNSt3mapIN4cvc58internal8TypeNodeESt13unordered_setINS1_12NodeTemplateILb1EEESt4hashIS5_ESt8equal_toIS5_ESaIS5_EESt4lessIS2_ESaISt4pairIKS2_SB_EEE4findERSF_.exit88 ] - %.not10.i.i.i.i92 = icmp eq ptr %380, null +379: ; preds = %372, %_ZNSt10_HashtableIN4cvc58internal12NodeTemplateILb1EEES3_SaIS3_ENSt8__detail9_IdentityESt8equal_toIS3_ESt4hashIS3_ENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb1ELb1ELb1EEEE5clearEv.exit.i137 + call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %32) #23 + %.not10.i.i.i.i92 = load ptr, ptr %163, align 8, !tbaa !357 + %.not10.i.i.i.i92 = icmp eq ptr %.pre, null br i1 %.not10.i.i.i.i92, label %.critedge.i103, label %.lr.ph.i.i.i.i93 -.lr.ph.i.i.i.i93: ; preds = %379 +.lr.ph.i.i.i.i93: ; preds = %_ZNSt3mapIN4cvc58internal8TypeNodeESt13unordered_setINS1_12NodeTemplateILb1EEESt4hashIS5_ESt8equal_toIS5_ESaIS5_EESt4lessIS2_ESaISt4pairIKS2_SB_EEE4findERSF_.exit88, %379 + %380 = phi ptr [ %.pre, %379 ], [ %314, %_ZNSt3mapIN4cvc58internal8TypeNodeESt13unordered_setINS1_12NodeTemplateILb1EEESt4hashIS5_ESt8equal_toIS5_ESaIS5_EESt4lessIS2_ESaISt4pairIKS2_SB_EEE4findERSF_.exit88 ] %381 = load ptr, ptr %29, align 8, !tbaa !31 %382 = load i64, ptr %381, align 8 %383 = and i64 %382, 1099511627775 diff --git a/bench/darktable/optimized/colordata.ll b/bench/darktable/optimized/colordata.ll index 8fd77119199..63c070d959b 100644 --- a/bench/darktable/optimized/colordata.ll +++ b/bench/darktable/optimized/colordata.ll @@ -965,12 +965,9 @@ define noundef range(i32 0, 2) i32 @_ZN6LibRaw11adobe_coeffEjPKci(ptr noundef no store float %87, ptr %92, align 4, !tbaa !83 %indvars.iv.next84 = add nuw nsw i64 %indvars.iv83, 1 %exitcond86.not = icmp eq i64 %indvars.iv.next84, 12 - br i1 %exitcond86.not, label %.split74.us, label %.split, !llvm.loop !85 + br i1 %exitcond86.not, label %.critedge61, label %.split, !llvm.loop !85 -.split74.us: ; preds = %.split, %.split.us - br i1 %.not58, label %93, label %.critedge61 - -93: ; preds = %.split74.us +.split74.us: ; preds = %.split.us %94 = getelementptr inbounds nuw i8, ptr %0, i64 153304 call void @_ZN6LibRaw13cam_xyz_coeffEPA4_fPA3_d(ptr noundef nonnull align 8 dereferenceable(767680) %0, ptr noundef nonnull %94, ptr noundef nonnull %5) br label %.critedge61 @@ -980,8 +977,8 @@ define noundef range(i32 0, 2) i32 @_ZN6LibRaw11adobe_coeffEjPKci(ptr noundef no %exitcond82.not = icmp eq i64 %indvars.iv.next80, 792 br i1 %exitcond82.not, label %.critedge61, label %37, !llvm.loop !86 -.critedge61: ; preds = %95, %67, %93, %.split74.us, %4 - %.0 = phi i32 [ 1, %4 ], [ 1, %67 ], [ 1, %93 ], [ 1, %.split74.us ], [ 0, %95 ] +.critedge61: ; preds = %95, %.split, %67, %.split74.us, %4 + %.0 = phi i32 [ 1, %4 ], [ 1, %67 ], [ 1, %93 ], [ 1, %.split ], [ 0, %95 ] call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %5) #9 ret i32 %.0 } diff --git a/bench/delta-rs/optimized/20d38kflwyye7r28.ll b/bench/delta-rs/optimized/20d38kflwyye7r28.ll index 45e28f36c13..845a1fa25b9 100644 --- a/bench/delta-rs/optimized/20d38kflwyye7r28.ll +++ b/bench/delta-rs/optimized/20d38kflwyye7r28.ll @@ -8887,10 +8887,8 @@ _ZN3std4hash6random11RandomState3new4KEYS7__getit17h7a0280ef360f84c5E.llvm.86254 146: ; preds = %81 %147 = load i64, ptr %19, align 8, !range !339, !noundef !9 - %trunc = trunc nuw i64 %147 to i1 %148 = load ptr, ptr %50, align 8, !nonnull !9, !align !317 %149 = load i64, ptr %51, align 8 - %.sroa.445.0 = select i1 %trunc, i64 undef, i64 %149 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) %150 = load ptr, ptr %52, align 8, !nonnull !9, !noundef !9 %151 = load i64, ptr %53, align 8, !noundef !9 @@ -8899,15 +8897,16 @@ _ZN3std4hash6random11RandomState3new4KEYS7__getit17h7a0280ef360f84c5E.llvm.86254 to label %152 unwind label %144 152: ; preds = %146 + %trunc = trunc nuw i64 %147 to i1 %153 = load i64, ptr %18, align 8, !range !339, !noundef !9 %trunc52 = trunc nuw i64 %153 to i1 %154 = load ptr, ptr %54, align 8, !nonnull !9, !align !317 %155 = load i64, ptr %55, align 8 - %.sroa.046.0 = select i1 %trunc52, ptr null, ptr %154 - %.sroa.448.0 = select i1 %trunc52, i64 undef, i64 %155 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) %or.cond = select i1 %trunc, i1 true, i1 %trunc52 - %.not.i81 = icmp ult i64 %.sroa.445.0, 6 + %.not.i81 = icmp ult i64 %149, 6 + %not.trunc = xor i1 %trunc, true + %.not.i81 = select i1 %not.trunc, i1 %.not.i81140, i1 false %or.cond139 = select i1 %or.cond, i1 true, i1 %.not.i81 br i1 %or.cond139, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h0c8d1735cb873e68E.exit.thread", label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$11starts_with17h0c8d1735cb873e68E.exit" @@ -8966,8 +8965,8 @@ _ZN3std4hash6random11RandomState3new4KEYS7__getit17h7a0280ef360f84c5E.llvm.86254 %175 = extractvalue { i64, ptr } %164, 0 store i64 %175, ptr %26, align 8, !alias.scope !1717, !noalias !1720 store ptr %165, ptr %.sroa.4.0..sroa_idx.i82, align 8, !alias.scope !1717, !noalias !1720 - store i64 %.sroa.445.0, ptr %.sroa.5.0..sroa_idx10.i, align 8, !alias.scope !1717, !noalias !1720 - invoke void @"_ZN91_$LT$object_store..azure..builder..AzureConfigKey$u20$as$u20$core..str..traits..FromStr$GT$8from_str17h1e703ac6c9f28b17E"(ptr noalias noundef nonnull sret({ i64, [9 x i64] }) align 8 captures(none) dereferenceable(80) %27, ptr noalias noundef nonnull readonly align 1 %165, i64 noundef %.sroa.445.0) + store i64 %149, ptr %.sroa.5.0..sroa_idx10.i, align 8, !alias.scope !1717, !noalias !1720 + invoke void @"_ZN91_$LT$object_store..azure..builder..AzureConfigKey$u20$as$u20$core..str..traits..FromStr$GT$8from_str17h1e703ac6c9f28b17E"(ptr noalias noundef nonnull sret({ i64, [9 x i64] }) align 8 captures(none) dereferenceable(80) %27, ptr noalias noundef nonnull readonly align 1 %165, i64 noundef %149) to label %178 unwind label %176 "_ZN4core3ptr115drop_in_place$LT$core..result..Result$LT$object_store..azure..builder..AzureConfigKey$C$object_store..Error$GT$$GT$17h9117ccff291c1af5E.exit86": ; preds = %186, %190, %176 @@ -8989,7 +8988,7 @@ _ZN3std4hash6random11RandomState3new4KEYS7__getit17h7a0280ef360f84c5E.llvm.86254 %182 = load i8, ptr %56, align 8, !range !1475, !noundef !9 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %25) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %24) - %183 = invoke { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h32b354c0d1a4b28bE"(i64 noundef %.sroa.448.0, i1 noundef zeroext false) + %183 = invoke { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h32b354c0d1a4b28bE"(i64 noundef %155, i1 noundef zeroext false) to label %191 unwind label %186 184: ; preds = %"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h61a26582174a9d03E.exit.i", %195 @@ -9018,10 +9017,10 @@ _ZN3std4hash6random11RandomState3new4KEYS7__getit17h7a0280ef360f84c5E.llvm.86254 %193 = extractvalue { i64, ptr } %183, 1 %194 = icmp ne ptr %193, null call void @llvm.assume(i1 %194) - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %193, ptr nonnull align 1 %.sroa.046.0, i64 %.sroa.448.0, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %193, ptr nonnull align 1 %154, i64 %155, i1 false) store i64 %192, ptr %24, align 8 store ptr %193, ptr %.sroa.429.0..sroa_idx, align 8 - store i64 %.sroa.448.0, ptr %.sroa.530.0..sroa_idx, align 8 + store i64 %155, ptr %.sroa.530.0..sroa_idx, align 8 invoke void @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6insert17h463773d5bd9338faE"(ptr noalias noundef nonnull sret({ i64, [2 x i64] }) align 8 captures(none) dereferenceable(24) %25, ptr noalias noundef nonnull align 8 dereferenceable(48) %33, i8 noundef %182, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(24) %24) to label %195 unwind label %186 diff --git a/bench/delta-rs/optimized/ji6jbkbato2odt0.ll b/bench/delta-rs/optimized/ji6jbkbato2odt0.ll index 5529d0cfb17..a2b01c94510 100644 --- a/bench/delta-rs/optimized/ji6jbkbato2odt0.ll +++ b/bench/delta-rs/optimized/ji6jbkbato2odt0.ll @@ -22952,10 +22952,8 @@ common.resume: ; preds = %.body105, %46, %.bo 103: ; preds = %97 %104 = load i64, ptr %15, align 8, !range !991, !noalias !4142, !noundef !14 - %trunc.i = trunc nuw i64 %104 to i1 %105 = load ptr, ptr %64, align 8, !noalias !4142, !nonnull !14, !align !1020 %106 = load i64, ptr %65, align 8, !noalias !4142 - %.sroa.425.0.i = select i1 %trunc.i, i64 undef, i64 %106 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15), !noalias !4142 %107 = load ptr, ptr %66, align 8, !noalias !4142, !nonnull !14, !noundef !14 %108 = load i64, ptr %67, align 8, !noalias !4142, !noundef !14 @@ -22964,12 +22962,11 @@ common.resume: ; preds = %.body105, %46, %.bo to label %109 unwind label %101, !noalias !4175 109: ; preds = %103 + %trunc.i = trunc nuw i64 %104 to i1 %110 = load i64, ptr %14, align 8, !range !991, !noalias !4142, !noundef !14 %trunc30.i = trunc nuw i64 %110 to i1 %111 = load ptr, ptr %68, align 8, !noalias !4142, !nonnull !14, !align !1020 %112 = load i64, ptr %69, align 8, !noalias !4142 - %.sroa.026.0.i = select i1 %trunc30.i, ptr null, ptr %111 - %.sroa.428.0.i = select i1 %trunc30.i, i64 undef, i64 %112 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14), !noalias !4142 %or.cond.i = select i1 %trunc.i, i1 true, i1 %trunc30.i br i1 %or.cond.i, label %113, label %120 @@ -23025,8 +23022,8 @@ common.resume: ; preds = %.body105, %46, %.bo %132 = extractvalue { i64, ptr } %121, 0 store i64 %132, ptr %20, align 8, !alias.scope !4199, !noalias !4202 store ptr %122, ptr %.sroa.4.0..sroa_idx.i46.i, align 8, !alias.scope !4199, !noalias !4202 - store i64 %.sroa.425.0.i, ptr %.sroa.5.0..sroa_idx10.i.i, align 8, !alias.scope !4199, !noalias !4202 - invoke void @"_ZN92_$LT$object_store..aws..builder..AmazonS3ConfigKey$u20$as$u20$core..str..traits..FromStr$GT$8from_str17haeab0cc92a07b119E"(ptr noalias noundef nonnull sret({ i64, [9 x i64] }) align 8 captures(none) dereferenceable(80) %21, ptr noalias noundef nonnull readonly align 1 %122, i64 noundef %.sroa.425.0.i) + store i64 %106, ptr %.sroa.5.0..sroa_idx10.i.i, align 8, !alias.scope !4199, !noalias !4202 + invoke void @"_ZN92_$LT$object_store..aws..builder..AmazonS3ConfigKey$u20$as$u20$core..str..traits..FromStr$GT$8from_str17haeab0cc92a07b119E"(ptr noalias noundef nonnull sret({ i64, [9 x i64] }) align 8 captures(none) dereferenceable(80) %21, ptr noalias noundef nonnull readonly align 1 %122, i64 noundef %106) to label %135 unwind label %133 "_ZN4core3ptr116drop_in_place$LT$core..result..Result$LT$object_store..aws..builder..AmazonS3ConfigKey$C$object_store..Error$GT$$GT$17hcac5e1e0d782eb80E.exit50.i": ; preds = %147, %144, %133 @@ -23109,7 +23106,7 @@ common.resume: ; preds = %.body105, %46, %.bo store ptr %163, ptr %.sroa.416.0..sroa_idx.i, align 8, !noalias !4142 store i64 %158, ptr %.sroa.5.0..sroa_idx.i, align 8, !noalias !4142 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16), !noalias !4142 - %165 = invoke { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h420683f68df27e58E"(i64 noundef %.sroa.428.0.i, i1 noundef zeroext false) + %165 = invoke { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h420683f68df27e58E"(i64 noundef %112, i1 noundef zeroext false) to label %168 unwind label %182, !noalias !4175 166: ; preds = %168 @@ -23122,10 +23119,10 @@ common.resume: ; preds = %.body105, %46, %.bo %170 = extractvalue { i64, ptr } %165, 1 %171 = icmp ne ptr %170, null call void @llvm.assume(i1 %171) - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %170, ptr nonnull align 1 %.sroa.026.0.i, i64 %.sroa.428.0.i, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %170, ptr nonnull align 1 %111, i64 %112, i1 false) store i64 %169, ptr %16, align 8, !noalias !4142 store ptr %170, ptr %.sroa.421.0..sroa_idx.i, align 8, !noalias !4142 - store i64 %.sroa.428.0.i, ptr %.sroa.522.0..sroa_idx.i, align 8, !noalias !4142 + store i64 %112, ptr %.sroa.522.0..sroa_idx.i, align 8, !noalias !4142 invoke void @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6insert17h66ce8109465ca8e8E"(ptr noalias noundef nonnull sret({ i64, [2 x i64] }) align 8 captures(none) dereferenceable(24) %18, ptr noalias noundef nonnull align 8 dereferenceable(48) %29, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(24) %17, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(24) %16) to label %172 unwind label %166, !noalias !4175 diff --git a/bench/draco/optimized/attribute_quantization_transform.ll b/bench/draco/optimized/attribute_quantization_transform.ll index 05ba21618a7..e7302f69df0 100644 --- a/bench/draco/optimized/attribute_quantization_transform.ll +++ b/bench/draco/optimized/attribute_quantization_transform.ll @@ -813,11 +813,15 @@ _ZNSt6vectorIfSaIfEED2Ev.exit: ; preds = %21, %_ZNSt6vectorIf %exitcond123.not = icmp eq i64 %indvars.iv.next120, %wide.trip.count127 br i1 %exitcond123.not, label %.critedge60.preheader, label %.lr.ph.us, !llvm.loop !88 -.critedge60.preheader: ; preds = %..critedge_crit_edge.us, %.critedge, %28 - %.pre135 = load float, ptr %11, align 8 - br i1 %.not.i.i.i.i, label %.critedge62, label %.lr.ph +.critedge60.preheader: ; preds = %..critedge_crit_edge.us, %28 + br i1 %.not.i.i.i.i, label %.critedge60.preheader..critedge62_crit_edge, label %.lr.ph + +.critedge60.preheader..critedge62_crit_edge: ; preds = %.critedge, %.critedge60.preheader + %.pre135 = load float, ptr %11, align 8, !tbaa !38 + br label %.critedge62 .lr.ph: ; preds = %.critedge60.preheader + %.promoted = load float, ptr %11, align 8 %64 = load ptr, ptr %16, align 8, !tbaa !37 %wide.trip.count132 = zext i8 %10 to i64 br label %68 @@ -835,11 +839,11 @@ _ZNSt10unique_ptrIA_fSt14default_deleteIS0_EED2Ev.exit71: ; preds = %_ZNSt6vecto tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %27, ptr align 1 %67, i64 %38, i1 false) %indvars.iv.next125 = add nuw nsw i64 %indvars.iv124, 1 %exitcond128.not = icmp eq i64 %indvars.iv.next125, %wide.trip.count127 - br i1 %exitcond128.not, label %.critedge60.preheader, label %.critedge, !llvm.loop !88 + br i1 %exitcond128.not, label %.critedge60.preheader..critedge62_crit_edge, label %.critedge, !llvm.loop !88 68: ; preds = %.lr.ph, %.critedge60 %indvars.iv129 = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next130, %.critedge60 ] - %69 = phi float [ %.pre135, %.lr.ph ], [ %81, %.critedge60 ] + %69 = phi float [ %.promoted, %.lr.ph ], [ %81, %.critedge60 ] %70 = getelementptr inbounds nuw float, ptr %64, i64 %indvars.iv129 %71 = load float, ptr %70, align 4, !tbaa !39 %72 = tail call float @llvm.fabs.f32(float %71) @@ -868,8 +872,8 @@ _ZNSt10unique_ptrIA_fSt14default_deleteIS0_EED2Ev.exit71: ; preds = %_ZNSt6vecto %exitcond133.not = icmp eq i64 %indvars.iv.next130, %wide.trip.count132 br i1 %exitcond133.not, label %.critedge62, label %68, !llvm.loop !89 -.critedge62: ; preds = %.critedge60, %.critedge60.preheader - %82 = phi float [ %.pre135, %.critedge60.preheader ], [ %81, %.critedge60 ] +.critedge62: ; preds = %.critedge60, %.critedge60.preheader..critedge62_crit_edge + %82 = phi float [ %.pre135, %.critedge60.preheader..critedge62_crit_edge ], [ %81, %.critedge60 ] %83 = fcmp oeq float %82, 0.000000e+00 br i1 %83, label %84, label %_ZNSt10unique_ptrIA_fSt14default_deleteIS0_EED2Ev.exit65 diff --git a/bench/eastl/optimized/TestFixedVector.ll b/bench/eastl/optimized/TestFixedVector.ll index 8997e01ab58..082bbe3d1b8 100644 --- a/bench/eastl/optimized/TestFixedVector.ll +++ b/bench/eastl/optimized/TestFixedVector.ll @@ -5698,12 +5698,10 @@ for.body.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i. br i1 %cmp.not.i.i.i.i.i.i, label %_ZN5eastl24uninitialized_fill_n_ptrIimEEvPT_T0_RKS1_.exit.i.i, label %for.body.i.i.i.i.i.i, !llvm.loop !12 _ZN5eastl24uninitialized_fill_n_ptrIimEEvPT_T0_RKS1_.exit.i.i: ; preds = %for.body.i.i.i.i.i.i - %cond.i13.i.i = tail call noundef i64 @llvm.umax.i64(i64 %n, i64 1) %add.ptr.i.i = getelementptr inbounds i32, ptr null, i64 %n store ptr null, ptr %this, align 8 store ptr %add.ptr.i.i, ptr %mpEnd, align 8 - %add.ptr24.i.i = getelementptr inbounds i32, ptr null, i64 %cond.i13.i.i - store ptr %add.ptr24.i.i, ptr %mCapacityAllocator.i, align 8 + store ptr %add.ptr.i.i, ptr %mCapacityAllocator.i, align 8 br label %invoke.cont if.else.i.i: ; preds = %entry @@ -6553,12 +6551,10 @@ for.body.i.i.i: ; preds = %for.body.i.i.i, %_Z br i1 %cmp.not.i13.i.i, label %_ZN5eastl31uninitialized_value_construct_nIP7Align64mEET_S3_T0_.exit.i.i, label %for.body.i.i.i, !llvm.loop !13 _ZN5eastl31uninitialized_value_construct_nIP7Align64mEET_S3_T0_.exit.i.i: ; preds = %for.body.i.i.i - %cond.i12.i.i = tail call noundef i64 @llvm.umax.i64(i64 %n, i64 1) %add.ptr.i.i = getelementptr inbounds %struct.Align64, ptr null, i64 %n store ptr null, ptr %this, align 64 store ptr %add.ptr.i.i, ptr %mpEnd, align 8 - %add.ptr25.i.i = getelementptr inbounds %struct.Align64, ptr null, i64 %cond.i12.i.i - store ptr %add.ptr25.i.i, ptr %mCapacityAllocator.i, align 16 + store ptr %add.ptr.i.i, ptr %mCapacityAllocator.i, align 16 br label %invoke.cont if.else.i: ; preds = %entry @@ -6599,12 +6595,10 @@ for.body.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i. br i1 %cmp.not.i.i.i.i.i.i, label %_ZN5eastl24uninitialized_fill_n_ptrI7Align64mEEvPT_T0_RKS2_.exit.i.i, label %for.body.i.i.i.i.i.i, !llvm.loop !14 _ZN5eastl24uninitialized_fill_n_ptrI7Align64mEEvPT_T0_RKS2_.exit.i.i: ; preds = %for.body.i.i.i.i.i.i - %cond.i13.i.i = tail call noundef i64 @llvm.umax.i64(i64 %n, i64 1) %add.ptr.i.i = getelementptr inbounds %struct.Align64, ptr null, i64 %n store ptr null, ptr %this, align 64 store ptr %add.ptr.i.i, ptr %mpEnd, align 8 - %add.ptr24.i.i = getelementptr inbounds %struct.Align64, ptr null, i64 %cond.i13.i.i - store ptr %add.ptr24.i.i, ptr %mCapacityAllocator.i, align 16 + store ptr %add.ptr.i.i, ptr %mCapacityAllocator.i, align 16 br label %invoke.cont for.body.preheader.i.i.i.i17.i.i: ; preds = %entry diff --git a/bench/eastl/optimized/TestLruCache.ll b/bench/eastl/optimized/TestLruCache.ll index ab8a28bc197..784d0e9b196 100644 --- a/bench/eastl/optimized/TestLruCache.ll +++ b/bench/eastl/optimized/TestLruCache.ll @@ -5693,7 +5693,7 @@ if.end.i.i: ; preds = %while.cond.i.i store ptr %17, ptr %pNodeNext.0.in.i.i.le, align 8, !noalias !262 br label %delete.notnull.i.i.i.i -delete.notnull.i.i.i.i: ; preds = %if.end.i.i, %if.end.i.thread.i +delete.notnull.i.i.i.i: ; preds = %if.then.i.i, %if.end.i.i tail call void @_ZdaPv(ptr noundef nonnull %pNode.addr.05.i.i) #14, !noalias !262 %mnElementCount.i.i = getelementptr inbounds nuw i8, ptr %this, i64 48 %18 = load i64, ptr %mnElementCount.i.i, align 8, !noalias !262 @@ -6944,7 +6944,7 @@ if.end.i.thread.i: ; preds = %if.end.i %mpNext.i.i4 = getelementptr inbounds nuw i8, ptr %15, i64 24 %16 = load ptr, ptr %mpNext.i.i4, align 8, !noalias !331 store ptr %16, ptr %add.ptr8.sink.i, align 8, !noalias !331 - br label %delete.notnull.i.i.i.i + br label %_ZN5eastl9lru_cacheIiN20TestLruCacheInternal3FooENS_9allocatorENS_4listIiS3_EENS_8hash_mapIiNS_4pairIS2_NS_12ListIteratorIiPiRiEEEENS_4hashIiEENS_8equal_toIiEES3_Lb0EEEE9map_eraseENS_18hashtable_iteratorINS7_IKiSC_EELb0ELb0EEE.exit while.cond.i.i: ; preds = %if.end.i, %while.cond.i.i %pNodeCurrent.0.i.i = phi ptr [ %pNodeNext.0.i.i, %while.cond.i.i ], [ %15, %if.end.i ] @@ -6958,14 +6958,10 @@ if.end.i.i: ; preds = %while.cond.i.i %mpNext8.i.i = getelementptr inbounds nuw i8, ptr %pNodeNext.0.i.i, i64 24 %17 = load ptr, ptr %mpNext8.i.i, align 8, !noalias !331 store ptr %17, ptr %pNodeNext.0.in.i.i.le, align 8, !noalias !331 - %isnull.i.i.i.i = icmp eq ptr %.sink.i, null - br i1 %isnull.i.i.i.i, label %_ZN5eastl9lru_cacheIiN20TestLruCacheInternal3FooENS_9allocatorENS_4listIiS3_EENS_8hash_mapIiNS_4pairIS2_NS_12ListIteratorIiPiRiEEEENS_4hashIiEENS_8equal_toIiEES3_Lb0EEEE9map_eraseENS_18hashtable_iteratorINS7_IKiSC_EELb0ELb0EEE.exit, label %delete.notnull.i.i.i.i - -delete.notnull.i.i.i.i: ; preds = %if.end.i.i, %if.end.i.thread.i - tail call void @_ZdaPv(ptr noundef nonnull %.sink.i) #14, !noalias !331 br label %_ZN5eastl9lru_cacheIiN20TestLruCacheInternal3FooENS_9allocatorENS_4listIiS3_EENS_8hash_mapIiNS_4pairIS2_NS_12ListIteratorIiPiRiEEEENS_4hashIiEENS_8equal_toIiEES3_Lb0EEEE9map_eraseENS_18hashtable_iteratorINS7_IKiSC_EELb0ELb0EEE.exit -_ZN5eastl9lru_cacheIiN20TestLruCacheInternal3FooENS_9allocatorENS_4listIiS3_EENS_8hash_mapIiNS_4pairIS2_NS_12ListIteratorIiPiRiEEEENS_4hashIiEENS_8equal_toIiEES3_Lb0EEEE9map_eraseENS_18hashtable_iteratorINS7_IKiSC_EELb0ELb0EEE.exit: ; preds = %if.end.i.i, %delete.notnull.i.i.i.i +_ZN5eastl9lru_cacheIiN20TestLruCacheInternal3FooENS_9allocatorENS_4listIiS3_EENS_8hash_mapIiNS_4pairIS2_NS_12ListIteratorIiPiRiEEEENS_4hashIiEENS_8equal_toIiEES3_Lb0EEEE9map_eraseENS_18hashtable_iteratorINS7_IKiSC_EELb0ELb0EEE.exit: ; preds = %if.then.i.i, %if.end.i.i + tail call void @_ZdaPv(ptr noundef nonnull %.sink.i) #14, !noalias !331 %mnElementCount.i.i = getelementptr inbounds nuw i8, ptr %this, i64 48 %18 = load i64, ptr %mnElementCount.i.i, align 8, !noalias !331 %dec.i.i3 = add i64 %18, -1 @@ -7302,14 +7298,10 @@ if.end.i.i: ; preds = %while.cond.i.i %mpNext8.i.i = getelementptr inbounds nuw i8, ptr %pNodeNext.0.i.i, i64 24 %17 = load ptr, ptr %mpNext8.i.i, align 8, !noalias !350 store ptr %17, ptr %pNodeNext.0.in.i.i.le, align 8, !noalias !350 - %isnull.i.i.i.i = icmp eq ptr %.sink.i, null - br i1 %isnull.i.i.i.i, label %_ZN5eastl9lru_cacheIiPN20TestLruCacheInternal3FooENS_9allocatorENS_4listIiS4_EENS_8hash_mapIiNS_4pairIS3_NS_12ListIteratorIiPiRiEEEENS_4hashIiEENS_8equal_toIiEES4_Lb0EEEE9map_eraseENS_18hashtable_iteratorINS8_IKiSD_EELb0ELb0EEE.exit, label %delete.notnull.i.i.i.i - -delete.notnull.i.i.i.i: ; preds = %if.end.i.i, %if.end.i.thread.i - tail call void @_ZdaPv(ptr noundef nonnull %.sink.i) #14, !noalias !350 br label %_ZN5eastl9lru_cacheIiPN20TestLruCacheInternal3FooENS_9allocatorENS_4listIiS4_EENS_8hash_mapIiNS_4pairIS3_NS_12ListIteratorIiPiRiEEEENS_4hashIiEENS_8equal_toIiEES4_Lb0EEEE9map_eraseENS_18hashtable_iteratorINS8_IKiSD_EELb0ELb0EEE.exit -_ZN5eastl9lru_cacheIiPN20TestLruCacheInternal3FooENS_9allocatorENS_4listIiS4_EENS_8hash_mapIiNS_4pairIS3_NS_12ListIteratorIiPiRiEEEENS_4hashIiEENS_8equal_toIiEES4_Lb0EEEE9map_eraseENS_18hashtable_iteratorINS8_IKiSD_EELb0ELb0EEE.exit: ; preds = %if.end.i.i, %delete.notnull.i.i.i.i +_ZN5eastl9lru_cacheIiPN20TestLruCacheInternal3FooENS_9allocatorENS_4listIiS4_EENS_8hash_mapIiNS_4pairIS3_NS_12ListIteratorIiPiRiEEEENS_4hashIiEENS_8equal_toIiEES4_Lb0EEEE9map_eraseENS_18hashtable_iteratorINS8_IKiSD_EELb0ELb0EEE.exit: ; preds = %if.then.i.i, %if.end.i.i + tail call void @_ZdaPv(ptr noundef nonnull %.sink.i) #14, !noalias !350 %mnElementCount.i.i = getelementptr inbounds nuw i8, ptr %this, i64 48 %18 = load i64, ptr %mnElementCount.i.i, align 8, !noalias !350 %dec.i.i3 = add i64 %18, -1 @@ -7690,7 +7682,7 @@ if.end.i.thread.i: ; preds = %if.end.i %mpNext.i.i4 = getelementptr inbounds nuw i8, ptr %15, i64 24 %16 = load ptr, ptr %mpNext.i.i4, align 8, !noalias !370 store ptr %16, ptr %add.ptr8.sink.i, align 8, !noalias !370 - br label %delete.notnull.i.i.i.i + br label %_ZN5eastl9lru_cacheIiiNS_9allocatorENS_4listIiS1_EENS_8hash_mapIiNS_4pairIiNS_12ListIteratorIiPiRiEEEENS_4hashIiEENS_8equal_toIiEES1_Lb0EEEE9map_eraseENS_18hashtable_iteratorINS5_IKiSA_EELb0ELb0EEE.exit while.cond.i.i: ; preds = %if.end.i, %while.cond.i.i %pNodeCurrent.0.i.i = phi ptr [ %pNodeNext.0.i.i, %while.cond.i.i ], [ %15, %if.end.i ] @@ -7704,14 +7696,10 @@ if.end.i.i: ; preds = %while.cond.i.i %mpNext8.i.i = getelementptr inbounds nuw i8, ptr %pNodeNext.0.i.i, i64 24 %17 = load ptr, ptr %mpNext8.i.i, align 8, !noalias !370 store ptr %17, ptr %pNodeNext.0.in.i.i.le, align 8, !noalias !370 - %isnull.i.i.i.i = icmp eq ptr %.sink.i, null - br i1 %isnull.i.i.i.i, label %_ZN5eastl9lru_cacheIiiNS_9allocatorENS_4listIiS1_EENS_8hash_mapIiNS_4pairIiNS_12ListIteratorIiPiRiEEEENS_4hashIiEENS_8equal_toIiEES1_Lb0EEEE9map_eraseENS_18hashtable_iteratorINS5_IKiSA_EELb0ELb0EEE.exit, label %delete.notnull.i.i.i.i - -delete.notnull.i.i.i.i: ; preds = %if.end.i.i, %if.end.i.thread.i - tail call void @_ZdaPv(ptr noundef nonnull %.sink.i) #14, !noalias !370 br label %_ZN5eastl9lru_cacheIiiNS_9allocatorENS_4listIiS1_EENS_8hash_mapIiNS_4pairIiNS_12ListIteratorIiPiRiEEEENS_4hashIiEENS_8equal_toIiEES1_Lb0EEEE9map_eraseENS_18hashtable_iteratorINS5_IKiSA_EELb0ELb0EEE.exit -_ZN5eastl9lru_cacheIiiNS_9allocatorENS_4listIiS1_EENS_8hash_mapIiNS_4pairIiNS_12ListIteratorIiPiRiEEEENS_4hashIiEENS_8equal_toIiEES1_Lb0EEEE9map_eraseENS_18hashtable_iteratorINS5_IKiSA_EELb0ELb0EEE.exit: ; preds = %if.end.i.i, %delete.notnull.i.i.i.i +_ZN5eastl9lru_cacheIiiNS_9allocatorENS_4listIiS1_EENS_8hash_mapIiNS_4pairIiNS_12ListIteratorIiPiRiEEEENS_4hashIiEENS_8equal_toIiEES1_Lb0EEEE9map_eraseENS_18hashtable_iteratorINS5_IKiSA_EELb0ELb0EEE.exit: ; preds = %if.then.i.i, %if.end.i.i + tail call void @_ZdaPv(ptr noundef nonnull %.sink.i) #14, !noalias !370 %mnElementCount.i.i = getelementptr inbounds nuw i8, ptr %this, i64 48 %18 = load i64, ptr %mnElementCount.i.i, align 8, !noalias !370 %dec.i.i3 = add i64 %18, -1 diff --git a/bench/entt/optimized/benchmark.ll b/bench/entt/optimized/benchmark.ll index d0a9a93403e..78a4862493d 100644 --- a/bench/entt/optimized/benchmark.ll +++ b/bench/entt/optimized/benchmark.ll @@ -54510,7 +54510,7 @@ _ZNSt12_Vector_baseIN4entt8internal14dense_map_nodeIjSt10shared_ptrINS0_16basic_ br label %_ZNSt6vectorIN4entt8internal14dense_map_nodeIjSt10shared_ptrINS0_16basic_sparse_setINS0_6entityESaIS5_EEEEEESaIS9_EE7reserveEm.exit _ZNSt6vectorIN4entt8internal14dense_map_nodeIjSt10shared_ptrINS0_16basic_sparse_setINS0_6entityESaIS5_EEEEEESaIS9_EE7reserveEm.exit: ; preds = %6, %_ZNSt12_Vector_baseIN4entt8internal14dense_map_nodeIjSt10shared_ptrINS0_16basic_sparse_setINS0_6entityESaIS5_EEEEEESaIS9_EE13_M_deallocateEPS9_m.exit.i - %36 = uitofp i64 %1 to float + %36 = uitofp nneg i64 %1 to float %37 = getelementptr inbounds nuw i8, ptr %0, i64 48 %38 = load float, ptr %37, align 8, !tbaa !1736 %39 = fdiv float %36, %38 @@ -78204,12 +78204,16 @@ define internal fastcc void @"_ZSt16__introsort_loopISt16reverse_iteratorIN9__gn %31 = add nsw i64 %.08.i.i.i, -1 br i1 %.not.i.i.i, label %"_ZSt11__make_heapISt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPN4entt6entityESt6vectorIS4_SaIS4_EEEEENS1_5__ops15_Iter_comp_iterIZNS3_14basic_registryIS4_S7_E4sortI8positionZZN25Benchmark_SortSingle_Test8TestBodyEvENK3$_0clEvEUlRKT_RKT0_E_NS3_8std_sortEJEEEvSM_T1_DpOT2_EUlSJ_SM_E_EEEvSJ_SJ_RSM_.exit.i.i", label %28, !llvm.loop !2578 -"_ZSt11__make_heapISt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPN4entt6entityESt6vectorIS4_SaIS4_EEEEENS1_5__ops15_Iter_comp_iterIZNS3_14basic_registryIS4_S7_E4sortI8positionZZN25Benchmark_SortSingle_Test8TestBodyEvENK3$_0clEvEUlRKT_RKT0_E_NS3_8std_sortEJEEEvSM_T1_DpOT2_EUlSJ_SM_E_EEEvSJ_SJ_RSM_.exit.i.i": ; preds = %28, %19 +"_ZSt11__make_heapISt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPN4entt6entityESt6vectorIS4_SaIS4_EEEEENS1_5__ops15_Iter_comp_iterIZNS3_14basic_registryIS4_S7_E4sortI8positionZZN25Benchmark_SortSingle_Test8TestBodyEvENK3$_0clEvEUlRKT_RKT0_E_NS3_8std_sortEJEEEvSM_T1_DpOT2_EUlSJ_SM_E_EEEvSJ_SJ_RSM_.exit.i.i": ; preds = %28 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) + br label %.lr.ph.i1.preheader.i + +"_ZSt11__make_heapISt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPN4entt6entityESt6vectorIS4_SaIS4_EEEEENS1_5__ops15_Iter_comp_iterIZNS3_14basic_registryIS4_S7_E4sortI8positionZZN25Benchmark_SortSingle_Test8TestBodyEvENK3$_0clEvEUlRKT_RKT0_E_NS3_8std_sortEJEEEvSM_T1_DpOT2_EUlSJ_SM_E_EEEvSJ_SJ_RSM_.exit.i.i": ; preds = %19 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) %32 = icmp sgt i64 %21, 4 br i1 %32, label %.lr.ph.i1.preheader.i, label %"_ZSt14__partial_sortISt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPN4entt6entityESt6vectorIS4_SaIS4_EEEEENS1_5__ops15_Iter_comp_iterIZNS3_14basic_registryIS4_S7_E4sortI8positionZZN25Benchmark_SortSingle_Test8TestBodyEvENK3$_0clEvEUlRKT_RKT0_E_NS3_8std_sortEJEEEvSM_T1_DpOT2_EUlSJ_SM_E_EEEvSJ_SJ_SJ_SM_.exit" -.lr.ph.i1.preheader.i: ; preds = %"_ZSt11__make_heapISt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPN4entt6entityESt6vectorIS4_SaIS4_EEEEENS1_5__ops15_Iter_comp_iterIZNS3_14basic_registryIS4_S7_E4sortI8positionZZN25Benchmark_SortSingle_Test8TestBodyEvENK3$_0clEvEUlRKT_RKT0_E_NS3_8std_sortEJEEEvSM_T1_DpOT2_EUlSJ_SM_E_EEEvSJ_SJ_RSM_.exit.i.i" +.lr.ph.i1.preheader.i: ; preds = %"_ZSt11__make_heapISt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPN4entt6entityESt6vectorIS4_SaIS4_EEEEENS1_5__ops15_Iter_comp_iterIZNS3_14basic_registryIS4_S7_E4sortI8positionZZN25Benchmark_SortSingle_Test8TestBodyEvENK3$_0clEvEUlRKT_RKT0_E_NS3_8std_sortEJEEEvSM_T1_DpOT2_EUlSJ_SM_E_EEEvSJ_SJ_RSM_.exit.i.i", %"_ZSt11__make_heapISt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPN4entt6entityESt6vectorIS4_SaIS4_EEEEENS1_5__ops15_Iter_comp_iterIZNS3_14basic_registryIS4_S7_E4sortI8positionZZN25Benchmark_SortSingle_Test8TestBodyEvENK3$_0clEvEUlRKT_RKT0_E_NS3_8std_sortEJEEEvSM_T1_DpOT2_EUlSJ_SM_E_EEEvSJ_SJ_RSM_.exit.i.i" %33 = inttoptr i64 %17 to ptr %34 = getelementptr inbounds i8, ptr %33, i64 -4 br label %.lr.ph.i1.i @@ -78848,14 +78852,18 @@ define internal fastcc void @"_ZSt16__introsort_loopISt16reverse_iteratorIN9__gn call fastcc void @"_ZSt13__adjust_heapISt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPN4entt6entityESt6vectorIS4_SaIS4_EEEEElS4_NS1_5__ops15_Iter_comp_iterIZNS3_14basic_registryIS4_S7_E4sortI8positionZN24Benchmark_SortMulti_Test8TestBodyEvE3$_0NS3_8std_sortEJEEEvT0_T1_DpOT2_EUlT_SK_E_EEEvSP_SK_SK_SL_T2_"(ptr noundef %6, i64 noundef %.08.i.i.i, i64 noundef %22, i32 noundef %30, ptr readonly %3) %.not.i.i.i = icmp eq i64 %.08.i.i.i, 0 %31 = add nsw i64 %.08.i.i.i, -1 - br i1 %.not.i.i.i, label %"_ZSt11__make_heapISt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPN4entt6entityESt6vectorIS4_SaIS4_EEEEENS1_5__ops15_Iter_comp_iterIZNS3_14basic_registryIS4_S7_E4sortI8positionZN24Benchmark_SortMulti_Test8TestBodyEvE3$_0NS3_8std_sortEJEEEvT0_T1_DpOT2_EUlT_SK_E_EEEvSP_SP_RSK_.exit.i.i", label %28, !llvm.loop !2613 + br i1 %.not.i.i.i, label %"_ZSt11__make_heapISt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPN4entt6entityESt6vectorIS4_SaIS4_EEEEENS1_5__ops15_Iter_comp_iterIZNS3_14basic_registryIS4_S7_E4sortI8positionZN24Benchmark_SortMulti_Test8TestBodyEvE3$_0NS3_8std_sortEJEEEvT0_T1_DpOT2_EUlT_SK_E_EEEvSP_SP_RSK_.exit.i.i.thread", label %28, !llvm.loop !2613 + +"_ZSt11__make_heapISt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPN4entt6entityESt6vectorIS4_SaIS4_EEEEENS1_5__ops15_Iter_comp_iterIZNS3_14basic_registryIS4_S7_E4sortI8positionZN24Benchmark_SortMulti_Test8TestBodyEvE3$_0NS3_8std_sortEJEEEvT0_T1_DpOT2_EUlT_SK_E_EEEvSP_SP_RSK_.exit.i.i.thread": ; preds = %28 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) + br label %.lr.ph.i1.preheader.i -"_ZSt11__make_heapISt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPN4entt6entityESt6vectorIS4_SaIS4_EEEEENS1_5__ops15_Iter_comp_iterIZNS3_14basic_registryIS4_S7_E4sortI8positionZN24Benchmark_SortMulti_Test8TestBodyEvE3$_0NS3_8std_sortEJEEEvT0_T1_DpOT2_EUlT_SK_E_EEEvSP_SP_RSK_.exit.i.i": ; preds = %28, %19 +"_ZSt11__make_heapISt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPN4entt6entityESt6vectorIS4_SaIS4_EEEEENS1_5__ops15_Iter_comp_iterIZNS3_14basic_registryIS4_S7_E4sortI8positionZN24Benchmark_SortMulti_Test8TestBodyEvE3$_0NS3_8std_sortEJEEEvT0_T1_DpOT2_EUlT_SK_E_EEEvSP_SP_RSK_.exit.i.i": ; preds = %19 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) %32 = icmp sgt i64 %21, 4 br i1 %32, label %.lr.ph.i1.preheader.i, label %"_ZSt14__partial_sortISt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPN4entt6entityESt6vectorIS4_SaIS4_EEEEENS1_5__ops15_Iter_comp_iterIZNS3_14basic_registryIS4_S7_E4sortI8positionZN24Benchmark_SortMulti_Test8TestBodyEvE3$_0NS3_8std_sortEJEEEvT0_T1_DpOT2_EUlT_SK_E_EEEvSP_SP_SP_SK_.exit" -.lr.ph.i1.preheader.i: ; preds = %"_ZSt11__make_heapISt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPN4entt6entityESt6vectorIS4_SaIS4_EEEEENS1_5__ops15_Iter_comp_iterIZNS3_14basic_registryIS4_S7_E4sortI8positionZN24Benchmark_SortMulti_Test8TestBodyEvE3$_0NS3_8std_sortEJEEEvT0_T1_DpOT2_EUlT_SK_E_EEEvSP_SP_RSK_.exit.i.i" +.lr.ph.i1.preheader.i: ; preds = %"_ZSt11__make_heapISt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPN4entt6entityESt6vectorIS4_SaIS4_EEEEENS1_5__ops15_Iter_comp_iterIZNS3_14basic_registryIS4_S7_E4sortI8positionZN24Benchmark_SortMulti_Test8TestBodyEvE3$_0NS3_8std_sortEJEEEvT0_T1_DpOT2_EUlT_SK_E_EEEvSP_SP_RSK_.exit.i.i.thread", %"_ZSt11__make_heapISt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPN4entt6entityESt6vectorIS4_SaIS4_EEEEENS1_5__ops15_Iter_comp_iterIZNS3_14basic_registryIS4_S7_E4sortI8positionZN24Benchmark_SortMulti_Test8TestBodyEvE3$_0NS3_8std_sortEJEEEvT0_T1_DpOT2_EUlT_SK_E_EEEvSP_SP_RSK_.exit.i.i" %33 = inttoptr i64 %17 to ptr %34 = getelementptr inbounds i8, ptr %33, i64 -4 br label %.lr.ph.i1.i @@ -79491,14 +79499,18 @@ define internal fastcc void @"_ZSt16__introsort_loopISt16reverse_iteratorIN9__gn call fastcc void @"_ZSt13__adjust_heapISt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPN4entt6entityESt6vectorIS4_SaIS4_EEEEElS4_NS1_5__ops15_Iter_comp_iterIZNS3_14basic_registryIS4_S7_E4sortI8positionZZN34Benchmark_AlmostSortedStdSort_Test8TestBodyEvENK3$_0clEvEUlRKT_RKT0_E_NS3_8std_sortEJEEEvSM_T1_DpOT2_EUlSJ_SM_E_EEEvSJ_SM_SM_SR_T2_"(ptr noundef %6, i64 noundef %.08.i.i.i, i64 noundef %22, i32 noundef %30, ptr readonly %3) %.not.i.i.i = icmp eq i64 %.08.i.i.i, 0 %31 = add nsw i64 %.08.i.i.i, -1 - br i1 %.not.i.i.i, label %"_ZSt11__make_heapISt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPN4entt6entityESt6vectorIS4_SaIS4_EEEEENS1_5__ops15_Iter_comp_iterIZNS3_14basic_registryIS4_S7_E4sortI8positionZZN34Benchmark_AlmostSortedStdSort_Test8TestBodyEvENK3$_0clEvEUlRKT_RKT0_E_NS3_8std_sortEJEEEvSM_T1_DpOT2_EUlSJ_SM_E_EEEvSJ_SJ_RSM_.exit.i.i", label %28, !llvm.loop !2645 + br i1 %.not.i.i.i, label %"_ZSt11__make_heapISt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPN4entt6entityESt6vectorIS4_SaIS4_EEEEENS1_5__ops15_Iter_comp_iterIZNS3_14basic_registryIS4_S7_E4sortI8positionZZN34Benchmark_AlmostSortedStdSort_Test8TestBodyEvENK3$_0clEvEUlRKT_RKT0_E_NS3_8std_sortEJEEEvSM_T1_DpOT2_EUlSJ_SM_E_EEEvSJ_SJ_RSM_.exit.i.i.thread", label %28, !llvm.loop !2645 + +"_ZSt11__make_heapISt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPN4entt6entityESt6vectorIS4_SaIS4_EEEEENS1_5__ops15_Iter_comp_iterIZNS3_14basic_registryIS4_S7_E4sortI8positionZZN34Benchmark_AlmostSortedStdSort_Test8TestBodyEvENK3$_0clEvEUlRKT_RKT0_E_NS3_8std_sortEJEEEvSM_T1_DpOT2_EUlSJ_SM_E_EEEvSJ_SJ_RSM_.exit.i.i.thread": ; preds = %28 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) + br label %.lr.ph.i1.preheader.i -"_ZSt11__make_heapISt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPN4entt6entityESt6vectorIS4_SaIS4_EEEEENS1_5__ops15_Iter_comp_iterIZNS3_14basic_registryIS4_S7_E4sortI8positionZZN34Benchmark_AlmostSortedStdSort_Test8TestBodyEvENK3$_0clEvEUlRKT_RKT0_E_NS3_8std_sortEJEEEvSM_T1_DpOT2_EUlSJ_SM_E_EEEvSJ_SJ_RSM_.exit.i.i": ; preds = %28, %19 +"_ZSt11__make_heapISt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPN4entt6entityESt6vectorIS4_SaIS4_EEEEENS1_5__ops15_Iter_comp_iterIZNS3_14basic_registryIS4_S7_E4sortI8positionZZN34Benchmark_AlmostSortedStdSort_Test8TestBodyEvENK3$_0clEvEUlRKT_RKT0_E_NS3_8std_sortEJEEEvSM_T1_DpOT2_EUlSJ_SM_E_EEEvSJ_SJ_RSM_.exit.i.i": ; preds = %19 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) %32 = icmp sgt i64 %21, 4 br i1 %32, label %.lr.ph.i1.preheader.i, label %"_ZSt14__partial_sortISt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPN4entt6entityESt6vectorIS4_SaIS4_EEEEENS1_5__ops15_Iter_comp_iterIZNS3_14basic_registryIS4_S7_E4sortI8positionZZN34Benchmark_AlmostSortedStdSort_Test8TestBodyEvENK3$_0clEvEUlRKT_RKT0_E_NS3_8std_sortEJEEEvSM_T1_DpOT2_EUlSJ_SM_E_EEEvSJ_SJ_SJ_SM_.exit" -.lr.ph.i1.preheader.i: ; preds = %"_ZSt11__make_heapISt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPN4entt6entityESt6vectorIS4_SaIS4_EEEEENS1_5__ops15_Iter_comp_iterIZNS3_14basic_registryIS4_S7_E4sortI8positionZZN34Benchmark_AlmostSortedStdSort_Test8TestBodyEvENK3$_0clEvEUlRKT_RKT0_E_NS3_8std_sortEJEEEvSM_T1_DpOT2_EUlSJ_SM_E_EEEvSJ_SJ_RSM_.exit.i.i" +.lr.ph.i1.preheader.i: ; preds = %"_ZSt11__make_heapISt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPN4entt6entityESt6vectorIS4_SaIS4_EEEEENS1_5__ops15_Iter_comp_iterIZNS3_14basic_registryIS4_S7_E4sortI8positionZZN34Benchmark_AlmostSortedStdSort_Test8TestBodyEvENK3$_0clEvEUlRKT_RKT0_E_NS3_8std_sortEJEEEvSM_T1_DpOT2_EUlSJ_SM_E_EEEvSJ_SJ_RSM_.exit.i.i.thread", %"_ZSt11__make_heapISt16reverse_iteratorIN9__gnu_cxx17__normal_iteratorIPN4entt6entityESt6vectorIS4_SaIS4_EEEEENS1_5__ops15_Iter_comp_iterIZNS3_14basic_registryIS4_S7_E4sortI8positionZZN34Benchmark_AlmostSortedStdSort_Test8TestBodyEvENK3$_0clEvEUlRKT_RKT0_E_NS3_8std_sortEJEEEvSM_T1_DpOT2_EUlSJ_SM_E_EEEvSJ_SJ_RSM_.exit.i.i" %33 = inttoptr i64 %17 to ptr %34 = getelementptr inbounds i8, ptr %33, i64 -4 br label %.lr.ph.i1.i diff --git a/bench/flac/optimized/lpc.ll b/bench/flac/optimized/lpc.ll index 638d1f1582a..c9d7f63f781 100644 --- a/bench/flac/optimized/lpc.ll +++ b/bench/flac/optimized/lpc.ll @@ -604,13 +604,12 @@ define hidden void @FLAC__lpc_compute_lp_coefficients(ptr noundef readonly captu br i1 %36, label %.lr.ph58, label %._crit_edge59, !llvm.loop !37 ._crit_edge59: ; preds = %.lr.ph58 - %37 = and i64 %indvars.iv.next68, 4294967295 - %38 = and i64 %indvars.iv77, 1 - %.not = icmp eq i64 %38, 0 - br i1 %.not, label %42, label %._crit_edge59.thread86 + %37 = and i64 %indvars.iv77, 1 + %38 = icmp eq i64 %37, 0 + br i1 %38, label %41, label %._crit_edge59.thread86 ._crit_edge59.thread86: ; preds = %._crit_edge, %._crit_edge59 - %.1.lcssa89 = phi i64 [ %37, %._crit_edge59 ], [ 0, %._crit_edge ] + %.1.lcssa89 = phi i64 [ %indvars.iv.next68, %._crit_edge59 ], [ 0, %._crit_edge ] %39 = getelementptr inbounds nuw [32 x double], ptr %5, i64 0, i64 %.1.lcssa89 %40 = load double, ptr %39, align 8, !tbaa !18 %41 = tail call reassoc nsz arcp double @llvm.fmuladd.f64(double %40, double %22, double %40) diff --git a/bench/flatbuffers/optimized/java_generator.ll b/bench/flatbuffers/optimized/java_generator.ll index 45c2f395724..21c1c53ffac 100644 --- a/bench/flatbuffers/optimized/java_generator.ll +++ b/bench/flatbuffers/optimized/java_generator.ll @@ -19516,7 +19516,7 @@ define linkonce_odr dso_local void @_ZSt13__stable_sortIN9__gnu_cxx17__normal_it %14 = getelementptr inbounds nuw i8, ptr %4, i64 16 %15 = icmp sgt i64 %10, 0 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %13, i8 0, i64 16, i1 false) - br i1 %15, label %.lr.ph.i.i, label %_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEES8_EC2ESD_l.exit.thread + br i1 %15, label %.lr.ph.i.i, label %_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEES8_EC2ESD_l.exit .lr.ph.i.i: ; preds = %6, %select.unfold.i.i %.010.i.i = phi i64 [ %19, %select.unfold.i.i ], [ %12, %6 ] @@ -19529,7 +19529,7 @@ select.unfold.i.i: ; preds = %.lr.ph.i.i %18 = add nuw nsw i64 %.010.i.i, 1 %19 = lshr i64 %18, 1 %.not14.i.i = icmp samesign ult i64 %.010.i.i, 2 - br i1 %.not14.i.i, label %_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEES8_EC2ESD_l.exit.thread, label %.lr.ph.i.i, !llvm.loop !224 + br i1 %.not14.i.i, label %_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEES8_EC2ESD_l.exit, label %.lr.ph.i.i, !llvm.loop !224 20: ; preds = %.lr.ph.i.i %21 = getelementptr inbounds nuw i8, ptr %17, i64 %16 @@ -19540,12 +19540,8 @@ select.unfold.i.i: ; preds = %.lr.ph.i.i %24 = load i64, ptr %0, align 8, !tbaa !51 store i64 %24, ptr %17, align 8, !tbaa !51 %.not18.i.i.i = icmp eq i64 %.010.i.i, 1 - br i1 %.not18.i.i.i, label %_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEES8_EC2ESD_l.exit.thread33, label %.lr.ph.i.i.preheader.i - -_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEES8_EC2ESD_l.exit.thread33: ; preds = %23 %25 = inttoptr i64 %24 to ptr - store ptr null, ptr %17, align 8, !tbaa !51 - br label %.sink.split.sink.split + br i1 %.not18.i.i.i, label %._crit_edge.i.i.i, label %.lr.ph.i.i.preheader.i .lr.ph.i.i.preheader.i: ; preds = %23 %.01317.i.i.i = getelementptr inbounds nuw i8, ptr %17, i64 8 @@ -19564,40 +19560,39 @@ _ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIKN14grpc _ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEES8_EC2ESD_l.exit: ; preds = %.lr.ph.i.i.i %.pre.i = load ptr, ptr %26, align 8, !tbaa !51 - store ptr null, ptr %26, align 8, !tbaa !51 - br label %.sink.split.sink.split + br label %._crit_edge.i.i.i -_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEES8_EC2ESD_l.exit.thread: ; preds = %select.unfold.i.i, %6 +._crit_edge.i.i.i:; preds = %_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEES8_EC2ESD_l.exit, %23 + %27 = phi ptr [ %25, %23 ], [ %.pre.i, %._crit_edge.i.i.loopexit.i ] + %.0.lcssa.i.i.i = phi ptr [ %17, %23 ], [ %26, %._crit_edge.i.i.loopexit.i ] + store ptr null, ptr %.0.lcssa.i.i.i, align 8, !tbaa !51 + store ptr %27, ptr %0, align 8, !tbaa !51 + br label %30 + +_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEES8_EC2ESD_l.exit: ; preds = %select.unfold.i.i, %6 invoke void @_ZSt21__inplace_stable_sortIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEENS0_5__ops15_Iter_comp_iterIPFbRKS8_SH_EEEEvT_SL_T0_(ptr %0, ptr %1, ptr %2) - to label %29 unwind label %27 + to label %_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEES8_ED2Ev.exit unwind label %27 -27: ; preds = %.sink.split, %_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEES8_EC2ESD_l.exit.thread +27: ; preds = %.sink.split, %_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEES8_EC2ESD_l.exit %28 = landingpad { ptr, i32 } cleanup call void @_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEES8_ED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #22 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #22 resume { ptr, i32 } %28 -.sink.split.sink.split: ; preds = %_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEES8_EC2ESD_l.exit, %_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEES8_EC2ESD_l.exit.thread33 - %.sink = phi ptr [ %25, %_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEES8_EC2ESD_l.exit.thread33 ], [ %.pre.i, %_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEES8_EC2ESD_l.exit ] - store ptr %.sink, ptr %0, align 8, !tbaa !51 - br label %.sink.split - -.sink.split: ; preds = %.sink.split.sink.split, %20 +.sink.split: ; preds = %._crit_edge.i.i.i, %20 store ptr %17, ptr %14, align 8, !tbaa !226 store i64 %.010.i.i, ptr %13, align 8, !tbaa !227 invoke void @_ZSt22__stable_sort_adaptiveIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEES9_lNS0_5__ops15_Iter_comp_iterIPFbRKS8_SH_EEEEvT_SL_T0_T1_T2_(ptr %0, ptr %1, ptr noundef nonnull %17, i64 noundef %.010.i.i, ptr %2) to label %29 unwind label %27 -29: ; preds = %.sink.split, %_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEES8_EC2ESD_l.exit.thread - %.pre.i1030 = phi ptr [ %17, %.sink.split ], [ null, %_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEES8_EC2ESD_l.exit.thread ] - %.pre1.i28 = phi i64 [ %.010.i.i, %.sink.split ], [ 0, %_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEES8_EC2ESD_l.exit.thread ] - %30 = getelementptr inbounds %"class.std::unique_ptr.12", ptr %.pre.i1030, i64 %.pre1.i28 - %.not4.i.i.i = icmp eq i64 %.pre1.i28, 0 +29: ; preds = %.sink.split + %.pre.i1030 = getelementptr inbounds %"class.std::unique_ptr.12", ptr %17, i64 %.010.i.i + %.pre1.i28 = icmp eq i64 %.010.i.i, 0 br i1 %.not4.i.i.i, label %_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEES8_ED2Ev.exit, label %.lr.ph.i.i.i8 .lr.ph.i.i.i8: ; preds = %29, %_ZSt8_DestroyISt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS3_EEEvPT_.exit.i.i.i - %.05.i.i.i = phi ptr [ %35, %_ZSt8_DestroyISt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS3_EEEvPT_.exit.i.i.i ], [ %.pre.i1030, %29 ] + %.05.i.i.i = phi ptr [ %35, %_ZSt8_DestroyISt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS3_EEEvPT_.exit.i.i.i ], [ %17, %29 ] %31 = load ptr, ptr %.05.i.i.i, align 8, !tbaa !51 %.not.i.i.i.i.i = icmp eq ptr %31, null br i1 %.not.i.i.i.i.i, label %_ZSt8_DestroyISt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS3_EEEvPT_.exit.i.i.i, label %_ZNKSt14default_deleteIKN14grpc_generator6MethodEEclEPS2_.exit.i.i.i.i.i @@ -19606,22 +19601,23 @@ _ZNKSt14default_deleteIKN14grpc_generator6MethodEEclEPS2_.exit.i.i.i.i.i: ; pred %32 = load ptr, ptr %31, align 8, !tbaa !14 %33 = getelementptr inbounds nuw i8, ptr %32, i64 8 %34 = load ptr, ptr %33, align 8 - tail call void %34(ptr noundef nonnull align 8 dereferenceable(8) %31) #22 + tail call void %36(ptr noundef nonnull align 8 dereferenceable(8) %31) #22 br label %_ZSt8_DestroyISt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS3_EEEvPT_.exit.i.i.i _ZSt8_DestroyISt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS3_EEEvPT_.exit.i.i.i: ; preds = %_ZNKSt14default_deleteIKN14grpc_generator6MethodEEclEPS2_.exit.i.i.i.i.i, %.lr.ph.i.i.i8 store ptr null, ptr %.05.i.i.i, align 8, !tbaa !51 %35 = getelementptr inbounds nuw i8, ptr %.05.i.i.i, i64 8 - %.not.i.i.i9 = icmp eq ptr %35, %30 + %.not.i.i.i9 = icmp eq ptr %35, %32 br i1 %.not.i.i.i9, label %_ZSt8_DestroyIPSt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS3_EEEvT_S8_.exit.loopexit.i, label %.lr.ph.i.i.i8, !llvm.loop !98 _ZSt8_DestroyIPSt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS3_EEEvT_S8_.exit.loopexit.i: ; preds = %_ZSt8_DestroyISt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS3_EEEvPT_.exit.i.i.i - %36 = shl i64 %.pre1.i28, 3 + %36 = shl i64 %.010.i.i, 3 br label %_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEES8_ED2Ev.exit -_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEES8_ED2Ev.exit: ; preds = %29, %_ZSt8_DestroyIPSt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS3_EEEvT_S8_.exit.loopexit.i - %37 = phi i64 [ %36, %_ZSt8_DestroyIPSt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS3_EEEvT_S8_.exit.loopexit.i ], [ 0, %29 ] - tail call void @_ZdlPvm(ptr noundef %.pre.i1030, i64 noundef %37) #22 +_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEES8_ED2Ev.exit: ; preds = %_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEES8_EC2ESD_l.exit, %29, %_ZSt8_DestroyIPSt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS3_EEEvT_S8_.exit.loopexit.i + %37 = phi ptr [ %17, %_ZSt8_DestroyIPSt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS3_EEEvT_S8_.exit.loopexit.i ], [ %17, %29 ], [ null, %_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEES8_EC2ESD_l.exit ] + %39 = phi i64 [ %38, %_ZSt8_DestroyIPSt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS3_EEEvT_S8_.exit.loopexit.i ], [ 0, %29 ], [ 0, %_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIKN14grpc_generator6MethodESt14default_deleteIS5_EESt6vectorIS8_SaIS8_EEEES8_EC2ESD_l.exit ] + tail call void @_ZdlPvm(ptr noundef %.pre.i1029, i64 noundef %39) #22 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #22 br label %38 diff --git a/bench/g2o/optimized/vertex_intrinsics.ll b/bench/g2o/optimized/vertex_intrinsics.ll index a2352857bd4..98afe8660c8 100644 --- a/bench/g2o/optimized/vertex_intrinsics.ll +++ b/bench/g2o/optimized/vertex_intrinsics.ll @@ -1502,7 +1502,7 @@ _ZN5Eigen8internal31unaligned_dense_assignment_loopILb0EE3runINS0_31generic_dens _ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEdVERKd.exit: ; preds = %.lr.ph.i17.i.i.i.i.i.i, %._crit_edge.i.i.i.i.i.i call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %6) #25 %exitcond.not = icmp eq i64 %21, 4 - br i1 %exitcond.not, label %.loopexit, label %19, !llvm.loop !134 + br i1 %exitcond.not, label %.loopexit, label %19 .loopexit.sink.split: ; preds = %38, %36 %spec.select.ph = phi i64 [ %.03455, %36 ], [ -1, %38 ] @@ -1520,7 +1520,7 @@ declare double @sqrt(double noundef) local_unnamed_addr #20 ; Function Attrs: inlinehint mustprogress uwtable define linkonce_odr void @_ZN5Eigen8internal21dense_assignment_loopINS0_31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS3_INS_7ProductINS4_IS6_Lin1ELin1ELb0EEENS_9TransposeIKNS4_IS6_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EEELi3ELi0EE3runERSJ_(ptr noundef nonnull align 8 dereferenceable(32) %0) local_unnamed_addr #10 comdat align 2 personality ptr @__gxx_personality_v0 { %2 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %3 = load ptr, ptr %2, align 8, !tbaa !135 + %3 = load ptr, ptr %2, align 8, !tbaa !134 %4 = getelementptr inbounds nuw i8, ptr %3, i64 8 %5 = load i64, ptr %4, align 8, !tbaa !90 %6 = load ptr, ptr %3, align 8, !tbaa !86 @@ -1545,15 +1545,15 @@ _ZN5Eigen8internal13first_alignedILi16EdlEET1_PKT0_S2_.exit: ; preds = %1, %9 br i1 %17, label %.lr.ph.i, label %_ZN5Eigen8internal31unaligned_dense_assignment_loopILb0EE3runINS0_31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS5_INS_7ProductINS6_IS8_Lin1ELin1ELb0EEENS_9TransposeIKNS6_IS8_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EEEEEvRT_ll.exit .lr.ph.i: ; preds = %_ZN5Eigen8internal13first_alignedILi16EdlEET1_PKT0_S2_.exit - %18 = load ptr, ptr %0, align 8, !tbaa !137 + %18 = load ptr, ptr %0, align 8, !tbaa !136 %19 = load ptr, ptr %18, align 8, !tbaa !122 %20 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %21 = load ptr, ptr %20, align 8, !tbaa !138 - %22 = load ptr, ptr %21, align 8, !tbaa !139, !noalias !140 + %21 = load ptr, ptr %20, align 8, !tbaa !137 + %22 = load ptr, ptr %21, align 8, !tbaa !138, !noalias !139 %23 = getelementptr inbounds nuw i8, ptr %21, i64 56 - %24 = load ptr, ptr %23, align 8, !tbaa !143, !noalias !144 + %24 = load ptr, ptr %23, align 8, !tbaa !142, !noalias !143 %25 = getelementptr inbounds nuw i8, ptr %21, i64 72 - %26 = load i64, ptr %25, align 8, !tbaa !90, !noalias !144 + %26 = load i64, ptr %25, align 8, !tbaa !90, !noalias !143 %27 = icmp eq i64 %26, 0 br i1 %27, label %_ZN5Eigen8internal31unaligned_dense_assignment_loopILb0EE3runINS0_31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS5_INS_7ProductINS6_IS8_Lin1ELin1ELb0EEENS_9TransposeIKNS6_IS8_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EEEEEvRT_ll.exit, label %.lr.ph.split.i @@ -1581,7 +1581,7 @@ _ZN5Eigen8internal13first_alignedILi16EdlEET1_PKT0_S2_.exit: ; preds = %1, %9 %38 = fadd double %.02324.i.i.i.i.i.us.i, %37 %39 = add nuw nsw i64 %.01725.i.i.i.i.i.us.i, 1 %exitcond.not.i.i.i.i.i.us.i = icmp eq i64 %39, %26 - br i1 %exitcond.not.i.i.i.i.i.us.i, label %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS2_INS_7ProductINS3_IS5_Lin1ELin1ELb0EEENS_9TransposeIKNS3_IS5_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EE11assignCoeffEl.exit.loopexit.us.i, label %.lr.ph.i.i.i.i.i.us.i, !llvm.loop !147 + br i1 %exitcond.not.i.i.i.i.i.us.i, label %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS2_INS_7ProductINS3_IS5_Lin1ELin1ELb0EEENS_9TransposeIKNS3_IS5_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EE11assignCoeffEl.exit.loopexit.us.i, label %.lr.ph.i.i.i.i.i.us.i, !llvm.loop !146 _ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS2_INS_7ProductINS3_IS5_Lin1ELin1ELb0EEENS_9TransposeIKNS3_IS5_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EE11assignCoeffEl.exit.loopexit.us.i: ; preds = %.lr.ph.i.i.i.i.i.us.i %40 = getelementptr inbounds nuw double, ptr %19, i64 %.05.us6.i @@ -1590,7 +1590,7 @@ _ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_ store double %42, ptr %40, align 8, !tbaa !33 %43 = add nuw nsw i64 %.05.us6.i, 1 %exitcond11.not.i = icmp eq i64 %43, %.0.i - br i1 %exitcond11.not.i, label %_ZN5Eigen8internal31unaligned_dense_assignment_loopILb0EE3runINS0_31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS5_INS_7ProductINS6_IS8_Lin1ELin1ELb0EEENS_9TransposeIKNS6_IS8_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EEEEEvRT_ll.exit, label %.lr.ph.i.i.i.i.i.preheader.us.i, !llvm.loop !148 + br i1 %exitcond11.not.i, label %_ZN5Eigen8internal31unaligned_dense_assignment_loopILb0EE3runINS0_31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS5_INS_7ProductINS6_IS8_Lin1ELin1ELb0EEENS_9TransposeIKNS6_IS8_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EEEEEvRT_ll.exit, label %.lr.ph.i.i.i.i.i.preheader.us.i, !llvm.loop !147 _ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS2_INS_7ProductINS3_IS5_Lin1ELin1ELb0EEENS_9TransposeIKNS3_IS5_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EE11assignCoeffEl.exit.i: ; preds = %.lr.ph.split.i, %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS2_INS_7ProductINS3_IS5_Lin1ELin1ELb0EEENS_9TransposeIKNS3_IS5_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EE11assignCoeffEl.exit.i %.05.i = phi i64 [ %51, %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS2_INS_7ProductINS3_IS5_Lin1ELin1ELb0EEENS_9TransposeIKNS3_IS5_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EE11assignCoeffEl.exit.i ], [ 0, %.lr.ph.split.i ] @@ -1604,7 +1604,7 @@ _ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_ store double %50, ptr %48, align 8, !tbaa !33 %51 = add nuw nsw i64 %.05.i, 1 %exitcond.not.i = icmp eq i64 %51, %.0.i - br i1 %exitcond.not.i, label %_ZN5Eigen8internal31unaligned_dense_assignment_loopILb0EE3runINS0_31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS5_INS_7ProductINS6_IS8_Lin1ELin1ELb0EEENS_9TransposeIKNS6_IS8_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EEEEEvRT_ll.exit, label %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS2_INS_7ProductINS3_IS5_Lin1ELin1ELb0EEENS_9TransposeIKNS3_IS5_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EE11assignCoeffEl.exit.i, !llvm.loop !148 + br i1 %exitcond.not.i, label %_ZN5Eigen8internal31unaligned_dense_assignment_loopILb0EE3runINS0_31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS5_INS_7ProductINS6_IS8_Lin1ELin1ELb0EEENS_9TransposeIKNS6_IS8_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EEEEEvRT_ll.exit, label %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS2_INS_7ProductINS3_IS5_Lin1ELin1ELb0EEENS_9TransposeIKNS3_IS5_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EE11assignCoeffEl.exit.i, !llvm.loop !147 _ZN5Eigen8internal31unaligned_dense_assignment_loopILb0EE3runINS0_31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS5_INS_7ProductINS6_IS8_Lin1ELin1ELb0EEENS_9TransposeIKNS6_IS8_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EEEEEvRT_ll.exit: ; preds = %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS2_INS_7ProductINS3_IS5_Lin1ELin1ELb0EEENS_9TransposeIKNS3_IS5_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EE11assignCoeffEl.exit.i, %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS2_INS_7ProductINS3_IS5_Lin1ELin1ELb0EEENS_9TransposeIKNS3_IS5_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EE11assignCoeffEl.exit.loopexit.us.i, %_ZN5Eigen8internal13first_alignedILi16EdlEET1_PKT0_S2_.exit, %.lr.ph.i %52 = icmp sgt i64 %13, 1 @@ -1619,15 +1619,15 @@ _ZN5Eigen8internal31unaligned_dense_assignment_loopILb0EE3runINS0_31generic_dens br i1 %54, label %.lr.ph.i17, label %_ZN5Eigen8internal31unaligned_dense_assignment_loopILb0EE3runINS0_31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS5_INS_7ProductINS6_IS8_Lin1ELin1ELb0EEENS_9TransposeIKNS6_IS8_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EEEEEvRT_ll.exit31 .lr.ph.i17: ; preds = %._crit_edge - %55 = load ptr, ptr %0, align 8, !tbaa !137 + %55 = load ptr, ptr %0, align 8, !tbaa !136 %56 = load ptr, ptr %55, align 8, !tbaa !122 %57 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %58 = load ptr, ptr %57, align 8, !tbaa !138 - %59 = load ptr, ptr %58, align 8, !tbaa !139, !noalias !149 + %58 = load ptr, ptr %57, align 8, !tbaa !137 + %59 = load ptr, ptr %58, align 8, !tbaa !138, !noalias !148 %60 = getelementptr inbounds nuw i8, ptr %58, i64 56 - %61 = load ptr, ptr %60, align 8, !tbaa !143, !noalias !152 + %61 = load ptr, ptr %60, align 8, !tbaa !142, !noalias !151 %62 = getelementptr inbounds nuw i8, ptr %58, i64 72 - %63 = load i64, ptr %62, align 8, !tbaa !90, !noalias !152 + %63 = load i64, ptr %62, align 8, !tbaa !90, !noalias !151 %64 = icmp eq i64 %63, 0 br i1 %64, label %_ZN5Eigen8internal31unaligned_dense_assignment_loopILb0EE3runINS0_31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS5_INS_7ProductINS6_IS8_Lin1ELin1ELb0EEENS_9TransposeIKNS6_IS8_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EEEEEvRT_ll.exit31, label %.lr.ph.split.i18 @@ -1655,7 +1655,7 @@ _ZN5Eigen8internal31unaligned_dense_assignment_loopILb0EE3runINS0_31generic_dens %75 = fadd double %.02324.i.i.i.i.i.us.i26, %74 %76 = add nuw nsw i64 %.01725.i.i.i.i.i.us.i25, 1 %exitcond.not.i.i.i.i.i.us.i28 = icmp eq i64 %76, %63 - br i1 %exitcond.not.i.i.i.i.i.us.i28, label %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS2_INS_7ProductINS3_IS5_Lin1ELin1ELb0EEENS_9TransposeIKNS3_IS5_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EE11assignCoeffEl.exit.loopexit.us.i29, label %.lr.ph.i.i.i.i.i.us.i24, !llvm.loop !147 + br i1 %exitcond.not.i.i.i.i.i.us.i28, label %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS2_INS_7ProductINS3_IS5_Lin1ELin1ELb0EEENS_9TransposeIKNS3_IS5_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EE11assignCoeffEl.exit.loopexit.us.i29, label %.lr.ph.i.i.i.i.i.us.i24, !llvm.loop !146 _ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS2_INS_7ProductINS3_IS5_Lin1ELin1ELb0EEENS_9TransposeIKNS3_IS5_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EE11assignCoeffEl.exit.loopexit.us.i29: ; preds = %.lr.ph.i.i.i.i.i.us.i24 %77 = getelementptr inbounds double, ptr %56, i64 %.05.us6.i23 @@ -1664,7 +1664,7 @@ _ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_ store double %79, ptr %77, align 8, !tbaa !33 %80 = add nsw i64 %.05.us6.i23, 1 %exitcond11.not.i30 = icmp eq i64 %80, %5 - br i1 %exitcond11.not.i30, label %_ZN5Eigen8internal31unaligned_dense_assignment_loopILb0EE3runINS0_31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS5_INS_7ProductINS6_IS8_Lin1ELin1ELb0EEENS_9TransposeIKNS6_IS8_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EEEEEvRT_ll.exit31, label %.lr.ph.i.i.i.i.i.preheader.us.i22, !llvm.loop !148 + br i1 %exitcond11.not.i30, label %_ZN5Eigen8internal31unaligned_dense_assignment_loopILb0EE3runINS0_31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS5_INS_7ProductINS6_IS8_Lin1ELin1ELb0EEENS_9TransposeIKNS6_IS8_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EEEEEvRT_ll.exit31, label %.lr.ph.i.i.i.i.i.preheader.us.i22, !llvm.loop !147 _ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS2_INS_7ProductINS3_IS5_Lin1ELin1ELb0EEENS_9TransposeIKNS3_IS5_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EE11assignCoeffEl.exit.i19: ; preds = %.lr.ph.split.i18, %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS2_INS_7ProductINS3_IS5_Lin1ELin1ELb0EEENS_9TransposeIKNS3_IS5_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EE11assignCoeffEl.exit.i19 %.05.i20 = phi i64 [ %88, %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS2_INS_7ProductINS3_IS5_Lin1ELin1ELb0EEENS_9TransposeIKNS3_IS5_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EE11assignCoeffEl.exit.i19 ], [ %16, %.lr.ph.split.i18 ] @@ -1678,16 +1678,16 @@ _ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_ store double %87, ptr %85, align 8, !tbaa !33 %88 = add nsw i64 %.05.i20, 1 %exitcond.not.i21 = icmp eq i64 %88, %5 - br i1 %exitcond.not.i21, label %_ZN5Eigen8internal31unaligned_dense_assignment_loopILb0EE3runINS0_31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS5_INS_7ProductINS6_IS8_Lin1ELin1ELb0EEENS_9TransposeIKNS6_IS8_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EEEEEvRT_ll.exit31, label %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS2_INS_7ProductINS3_IS5_Lin1ELin1ELb0EEENS_9TransposeIKNS3_IS5_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EE11assignCoeffEl.exit.i19, !llvm.loop !148 + br i1 %exitcond.not.i21, label %_ZN5Eigen8internal31unaligned_dense_assignment_loopILb0EE3runINS0_31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS5_INS_7ProductINS6_IS8_Lin1ELin1ELb0EEENS_9TransposeIKNS6_IS8_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EEEEEvRT_ll.exit31, label %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS2_INS_7ProductINS3_IS5_Lin1ELin1ELb0EEENS_9TransposeIKNS3_IS5_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EE11assignCoeffEl.exit.i19, !llvm.loop !147 _ZN5Eigen8internal31unaligned_dense_assignment_loopILb0EE3runINS0_31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS5_INS_7ProductINS6_IS8_Lin1ELin1ELb0EEENS_9TransposeIKNS6_IS8_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EEEEEvRT_ll.exit31: ; preds = %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS2_INS_7ProductINS3_IS5_Lin1ELin1ELb0EEENS_9TransposeIKNS3_IS5_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EE11assignCoeffEl.exit.i19, %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS2_INS_7ProductINS3_IS5_Lin1ELin1ELb0EEENS_9TransposeIKNS3_IS5_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EE11assignCoeffEl.exit.loopexit.us.i29, %._crit_edge, %.lr.ph.i17 ret void 89: ; preds = %.lr.ph, %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS2_INS_7ProductINS3_IS5_Lin1ELin1ELb0EEENS_9TransposeIKNS3_IS5_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EE12assignPacketILi16ELi0EDv2_dEEvl.exit %.036 = phi i64 [ %.0.i, %.lr.ph ], [ %113, %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS2_INS_7ProductINS3_IS5_Lin1ELin1ELb0EEENS_9TransposeIKNS3_IS5_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EE12assignPacketILi16ELi0EDv2_dEEvl.exit ] - %90 = load ptr, ptr %0, align 8, !tbaa !137 + %90 = load ptr, ptr %0, align 8, !tbaa !136 %91 = load ptr, ptr %90, align 8, !tbaa !122 - %92 = load ptr, ptr %53, align 8, !tbaa !138 + %92 = load ptr, ptr %53, align 8, !tbaa !137 %93 = getelementptr inbounds nuw i8, ptr %92, i64 144 %94 = load i64, ptr %93, align 8, !tbaa !102 %95 = icmp sgt i64 %94, 0 @@ -1715,7 +1715,7 @@ _ZN5Eigen8internal31unaligned_dense_assignment_loopILb0EE3runINS0_31generic_dens %108 = fadd <2 x double> %101, %107 %109 = add nuw nsw i64 %.013.i.i.i.i, 1 %exitcond.not.i.i.i.i = icmp eq i64 %109, %94 - br i1 %exitcond.not.i.i.i.i, label %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS2_INS_7ProductINS3_IS5_Lin1ELin1ELb0EEENS_9TransposeIKNS3_IS5_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EE12assignPacketILi16ELi0EDv2_dEEvl.exit, label %.lr.ph.i.i.i.i, !llvm.loop !155 + br i1 %exitcond.not.i.i.i.i, label %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS2_INS_7ProductINS3_IS5_Lin1ELin1ELb0EEENS_9TransposeIKNS3_IS5_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EE12assignPacketILi16ELi0EDv2_dEEvl.exit, label %.lr.ph.i.i.i.i, !llvm.loop !154 _ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS2_INS_7ProductINS3_IS5_Lin1ELin1ELb0EEENS_9TransposeIKNS3_IS5_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EE12assignPacketILi16ELi0EDv2_dEEvl.exit: ; preds = %.lr.ph.i.i.i.i, %89 %.0.i.i.i = phi <2 x double> [ zeroinitializer, %89 ], [ %108, %.lr.ph.i.i.i.i ] @@ -1725,7 +1725,7 @@ _ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_ store <2 x double> %112, ptr %110, align 16, !tbaa !53 %113 = add nsw i64 %.036, 2 %114 = icmp slt i64 %113, %16 - br i1 %114, label %89, label %._crit_edge, !llvm.loop !156 + br i1 %114, label %89, label %._crit_edge, !llvm.loop !155 } ; Function Attrs: uwtable @@ -1919,26 +1919,25 @@ attributes #28 = { noreturn nounwind } !131 = !{!"p1 _ZTSN5Eigen5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEE", !6, i64 0} !132 = distinct !{!132, !48} !133 = distinct !{!133, !48} -!134 = distinct !{!134, !48} -!135 = !{!136, !131, i64 24} -!136 = !{!"_ZTSN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS2_INS_7ProductINS3_IS5_Lin1ELin1ELb0EEENS_9TransposeIKNS3_IS5_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EEE", !125, i64 0, !127, i64 8, !129, i64 16, !131, i64 24} -!137 = !{!136, !125, i64 0} -!138 = !{!136, !127, i64 8} -!139 = !{!108, !5, i64 0} -!140 = !{!141} -!141 = distinct !{!141, !142, !"_ZNK5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELin1ELb0EEEE3rowEl: argument 0"} -!142 = distinct !{!142, !"_ZNK5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELin1ELb0EEEE3rowEl"} -!143 = !{!114, !5, i64 0} -!144 = !{!145} -!145 = distinct !{!145, !146, !"_ZNK5Eigen9DenseBaseINS_9TransposeIKNS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELi1ELin1ELb0EEEEEE3colEl: argument 0"} -!146 = distinct !{!146, !"_ZNK5Eigen9DenseBaseINS_9TransposeIKNS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELi1ELin1ELb0EEEEEE3colEl"} +!134 = !{!135, !131, i64 24} +!135 = !{!"_ZTSN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELi1ELb0EEEEENS2_INS_7ProductINS3_IS5_Lin1ELin1ELb0EEENS_9TransposeIKNS3_IS5_Li1ELin1ELb0EEEEELi1EEEEENS0_13sub_assign_opIddEELi0EEE", !125, i64 0, !127, i64 8, !129, i64 16, !131, i64 24} +!136 = !{!135, !125, i64 0} +!137 = !{!135, !127, i64 8} +!138 = !{!108, !5, i64 0} +!139 = !{!140} +!140 = distinct !{!140, !141, !"_ZNK5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELin1ELb0EEEE3rowEl: argument 0"} +!141 = distinct !{!141, !"_ZNK5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELin1ELb0EEEE3rowEl"} +!142 = !{!114, !5, i64 0} +!143 = !{!144} +!144 = distinct !{!144, !145, !"_ZNK5Eigen9DenseBaseINS_9TransposeIKNS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELi1ELin1ELb0EEEEEE3colEl: argument 0"} +!145 = distinct !{!145, !"_ZNK5Eigen9DenseBaseINS_9TransposeIKNS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELi1ELin1ELb0EEEEEE3colEl"} +!146 = distinct !{!146, !48} !147 = distinct !{!147, !48} -!148 = distinct !{!148, !48} -!149 = !{!150} -!150 = distinct !{!150, !151, !"_ZNK5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELin1ELb0EEEE3rowEl: argument 0"} -!151 = distinct !{!151, !"_ZNK5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELin1ELb0EEEE3rowEl"} -!152 = !{!153} -!153 = distinct !{!153, !154, !"_ZNK5Eigen9DenseBaseINS_9TransposeIKNS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELi1ELin1ELb0EEEEEE3colEl: argument 0"} -!154 = distinct !{!154, !"_ZNK5Eigen9DenseBaseINS_9TransposeIKNS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELi1ELin1ELb0EEEEEE3colEl"} +!148 = !{!149} +!149 = distinct !{!149, !150, !"_ZNK5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELin1ELb0EEEE3rowEl: argument 0"} +!150 = distinct !{!150, !"_ZNK5Eigen9DenseBaseINS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELin1ELin1ELb0EEEE3rowEl"} +!151 = !{!152} +!152 = distinct !{!152, !153, !"_ZNK5Eigen9DenseBaseINS_9TransposeIKNS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELi1ELin1ELb0EEEEEE3colEl: argument 0"} +!153 = distinct !{!153, !"_ZNK5Eigen9DenseBaseINS_9TransposeIKNS_5BlockINS_6MatrixIdLi4ELi4ELi0ELi4ELi4EEELi1ELin1ELb0EEEEEE3colEl"} +!154 = distinct !{!154, !48} !155 = distinct !{!155, !48} -!156 = distinct !{!156, !48} diff --git a/bench/git/optimized/kwset.ll b/bench/git/optimized/kwset.ll index b1e83c12f48..3602f03cb26 100644 --- a/bench/git/optimized/kwset.ll +++ b/bench/git/optimized/kwset.ll @@ -741,12 +741,15 @@ define dso_local noundef ptr @kwsprep(ptr noundef %0) local_unnamed_addr #0 { %83 = getelementptr i8, ptr %.pre199.pre, i64 %65 %84 = getelementptr i8, ptr %83, i64 -1 %85 = load i8, ptr %84, align 1, !tbaa !29 - %86 = add nsw i32 %.pre198, -2 %.not208 = icmp eq i32 %.pre198, 1 - br i1 %.not208, label %._crit_edge179, label %.lr.ph178 + br i1 %.not208, label %._crit_edge179, label %.lr.ph178.preheader + +.lr.ph178.preheader: ; preds = %._crit_edge175 + %86 = add nsw i32 %.pre198, -2 + br label %.lr.ph178 -.lr.ph178: ; preds = %._crit_edge175, %91 - %.2176 = phi i32 [ %92, %91 ], [ %86, %._crit_edge175 ] +.lr.ph178: ; preds = %.lr.ph178.preheader, %91 + %.2176 = phi i32 [ %92, %91 ], [ %86, %.lr.ph178.preheader ] %87 = zext nneg i32 %.2176 to i64 %88 = getelementptr inbounds nuw i8, ptr %.pre199.pre, i64 %87 %89 = load i8, ptr %88, align 1, !tbaa !29 @@ -759,8 +762,8 @@ define dso_local noundef ptr @kwsprep(ptr noundef %0) local_unnamed_addr #0 { br i1 %93, label %.lr.ph178, label %._crit_edge179, !llvm.loop !48 ._crit_edge179: ; preds = %91, %.lr.ph178, %._crit_edge175.thread, %._crit_edge175 - %94 = phi i32 [ %.pre198, %._crit_edge175 ], [ %63, %._crit_edge175.thread ], [ %.pre198, %.lr.ph178 ], [ %.pre198, %91 ] - %.2.lcssa = phi i32 [ %86, %._crit_edge175 ], [ %64, %._crit_edge175.thread ], [ -1, %91 ], [ %.2176, %.lr.ph178 ] + %94 = phi i32 [ 1, %._crit_edge175 ], [ %63, %._crit_edge175.thread ], [ %.pre198, %.lr.ph178 ], [ %.pre198, %91 ] + %.2.lcssa = phi i32 [ -1, %._crit_edge175 ], [ %64, %._crit_edge175.thread ], [ -1, %91 ], [ %.2176, %.lr.ph178 ] %.neg = xor i32 %.2.lcssa, -1 %95 = add i32 %94, %.neg %96 = getelementptr inbounds nuw i8, ptr %0, i64 2424 diff --git a/bench/glslang/optimized/SpvBuilder.ll b/bench/glslang/optimized/SpvBuilder.ll index b520564fa38..b2f78926880 100644 --- a/bench/glslang/optimized/SpvBuilder.ll +++ b/bench/glslang/optimized/SpvBuilder.ll @@ -10254,7 +10254,7 @@ _ZN3spv6Module14mapInstructionEPNS_11InstructionE.exit: ; preds = %_ZNSt10unique %192 = phi i32 [ %.pre.i.i.i, %189 ], [ %184, %._crit_edge.i.i.i.i ] %.019.lcssa29.i.i.i.i = phi ptr [ %.019.lcssa28.i.i.i.i, %189 ], [ %.02024.i.i.i.i, %._crit_edge.i.i.i.i ] %193 = icmp slt i32 %192, 46 - br i1 %193, label %select.unfold.i.i.i, label %_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit + br i1 %193, label %select.unfold.i.i.i, label %_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit209 select.unfold.i.i.i: ; preds = %191, %._crit_edge.thread.i.i.i.i %.sroa.4.0.i.ph.i.i.i = phi ptr [ %.019.lcssa28.i.i.i.i, %._crit_edge.thread.i.i.i.i ], [ %.019.lcssa29.i.i.i.i, %191 ] @@ -10273,7 +10273,7 @@ _ZNSt8_Rb_treeIN3spv10CapabilityES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE10_M_in %201 = getelementptr inbounds nuw i8, ptr %200, i64 32 store i32 46, ptr %201, align 4 call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %199, ptr noundef nonnull %200, ptr noundef nonnull %.sroa.4.0.i.ph.i.i.i, ptr noundef nonnull align 8 dereferenceable(32) %181) #22 - br label %_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit.sink.split + br label %_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit209.sink.split 202: ; preds = %178 br i1 %.not23.i.i.i.i, label %._crit_edge.thread.i.i.i.i43, label %.lr.ph.i.i.i.i32 @@ -10372,7 +10372,7 @@ _ZNSt8_Rb_treeIN3spv10CapabilityES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE10_M_in %236 = phi i32 [ %.pre.i.i.i64, %233 ], [ %228, %._crit_edge.i.i.i.i56 ] %.019.lcssa29.i.i.i.i57 = phi ptr [ %.019.lcssa28.i.i.i.i62, %233 ], [ %.02024.i.i.i.i51, %._crit_edge.i.i.i.i56 ] %237 = icmp slt i32 %236, 43 - br i1 %237, label %select.unfold.i.i.i58, label %_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit + br i1 %237, label %select.unfold.i.i.i58, label %_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit209 select.unfold.i.i.i58: ; preds = %235, %._crit_edge.thread.i.i.i.i61 %.sroa.4.0.i.ph.i.i.i59 = phi ptr [ %.019.lcssa28.i.i.i.i62, %._crit_edge.thread.i.i.i.i61 ], [ %.019.lcssa29.i.i.i.i57, %235 ] @@ -10391,7 +10391,7 @@ _ZNSt8_Rb_treeIN3spv10CapabilityES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE10_M_in %245 = getelementptr inbounds nuw i8, ptr %244, i64 32 store i32 43, ptr %245, align 4 call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %243, ptr noundef nonnull %244, ptr noundef nonnull %.sroa.4.0.i.ph.i.i.i59, ptr noundef nonnull align 8 dereferenceable(32) %225) #22 - br label %_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit.sink.split + br label %_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit209.sink.split 246: ; preds = %222 br i1 %.not23.i.i.i.i49, label %._crit_edge.thread.i.i.i.i79, label %.lr.ph.i.i.i.i68 @@ -10449,7 +10449,7 @@ _ZNSt8_Rb_treeIN3spv10CapabilityES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE10_M_in br label %_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit.sink.split 266: ; preds = %_ZN3spv6Module14mapInstructionEPNS_11InstructionE.exit - br i1 %4, label %267, label %_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit.thread + br i1 %4, label %267, label %_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit 267: ; preds = %266 %268 = icmp eq i32 %6, 1 @@ -10493,7 +10493,7 @@ _ZNSt8_Rb_treeIN3spv10CapabilityES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE10_M_in %281 = phi i32 [ %.pre.i.i.i100, %278 ], [ %273, %._crit_edge.i.i.i.i92 ] %.019.lcssa29.i.i.i.i93 = phi ptr [ %.019.lcssa28.i.i.i.i98, %278 ], [ %.02024.i.i.i.i87, %._crit_edge.i.i.i.i92 ] %282 = icmp slt i32 %281, 45 - br i1 %282, label %select.unfold.i.i.i94, label %_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit + br i1 %282, label %select.unfold.i.i.i94, label %_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit209 select.unfold.i.i.i94: ; preds = %280, %._crit_edge.thread.i.i.i.i97 %.sroa.4.0.i.ph.i.i.i95 = phi ptr [ %.019.lcssa28.i.i.i.i98, %._crit_edge.thread.i.i.i.i97 ], [ %.019.lcssa29.i.i.i.i93, %280 ] @@ -10512,7 +10512,7 @@ _ZNSt8_Rb_treeIN3spv10CapabilityES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE10_M_in %290 = getelementptr inbounds nuw i8, ptr %289, i64 32 store i32 45, ptr %290, align 4 call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %288, ptr noundef nonnull %289, ptr noundef nonnull %.sroa.4.0.i.ph.i.i.i95, ptr noundef nonnull align 8 dereferenceable(32) %270) #22 - br label %_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit.sink.split + br label %_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit209.sink.split 291: ; preds = %267 br i1 %.not23.i.i.i.i85, label %._crit_edge.thread.i.i.i.i115, label %.lr.ph.i.i.i.i104 @@ -10611,7 +10611,7 @@ _ZNSt8_Rb_treeIN3spv10CapabilityES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE10_M_in %325 = phi i32 [ %.pre.i.i.i136, %322 ], [ %317, %._crit_edge.i.i.i.i128 ] %.019.lcssa29.i.i.i.i129 = phi ptr [ %.019.lcssa28.i.i.i.i134, %322 ], [ %.02024.i.i.i.i123, %._crit_edge.i.i.i.i128 ] %326 = icmp slt i32 %325, 37 - br i1 %326, label %select.unfold.i.i.i130, label %_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit + br i1 %326, label %select.unfold.i.i.i130, label %_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit209 select.unfold.i.i.i130: ; preds = %324, %._crit_edge.thread.i.i.i.i133 %.sroa.4.0.i.ph.i.i.i131 = phi ptr [ %.019.lcssa28.i.i.i.i134, %._crit_edge.thread.i.i.i.i133 ], [ %.019.lcssa29.i.i.i.i129, %324 ] @@ -10630,7 +10630,7 @@ _ZNSt8_Rb_treeIN3spv10CapabilityES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE10_M_in %334 = getelementptr inbounds nuw i8, ptr %333, i64 32 store i32 37, ptr %334, align 4 call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %332, ptr noundef nonnull %333, ptr noundef nonnull %.sroa.4.0.i.ph.i.i.i131, ptr noundef nonnull align 8 dereferenceable(32) %314) #22 - br label %_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit.sink.split + br label %_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit209.sink.split 335: ; preds = %311 br i1 %.not23.i.i.i.i121, label %._crit_edge.thread.i.i.i.i151, label %.lr.ph.i.i.i.i140 @@ -10746,28 +10746,23 @@ _ZNSt8_Rb_treeIN3spv10CapabilityES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE10_M_in call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %374, ptr noundef nonnull %375, ptr noundef nonnull %.sroa.4.0.i.ph.i.i.i167, ptr noundef nonnull align 8 dereferenceable(32) %357) #22 br label %_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit.sink.split -_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit.sink.split: ; preds = %_ZNSt8_Rb_treeIN3spv10CapabilityES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE10_M_insert_IRKS1_NS7_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS1_EPSt18_Rb_tree_node_baseSF_OT_RT0_.exit.i.i.i, %_ZNSt8_Rb_treeIN3spv10CapabilityES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE10_M_insert_IRKS1_NS7_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS1_EPSt18_Rb_tree_node_baseSF_OT_RT0_.exit.i.i.i42, %_ZNSt8_Rb_treeIN3spv10CapabilityES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE10_M_insert_IRKS1_NS7_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS1_EPSt18_Rb_tree_node_baseSF_OT_RT0_.exit.i.i.i60, %_ZNSt8_Rb_treeIN3spv10CapabilityES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE10_M_insert_IRKS1_NS7_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS1_EPSt18_Rb_tree_node_baseSF_OT_RT0_.exit.i.i.i78, %_ZNSt8_Rb_treeIN3spv10CapabilityES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE10_M_insert_IRKS1_NS7_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS1_EPSt18_Rb_tree_node_baseSF_OT_RT0_.exit.i.i.i96, %_ZNSt8_Rb_treeIN3spv10CapabilityES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE10_M_insert_IRKS1_NS7_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS1_EPSt18_Rb_tree_node_baseSF_OT_RT0_.exit.i.i.i114, %_ZNSt8_Rb_treeIN3spv10CapabilityES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE10_M_insert_IRKS1_NS7_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS1_EPSt18_Rb_tree_node_baseSF_OT_RT0_.exit.i.i.i132, %_ZNSt8_Rb_treeIN3spv10CapabilityES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE10_M_insert_IRKS1_NS7_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS1_EPSt18_Rb_tree_node_baseSF_OT_RT0_.exit.i.i.i150, %_ZNSt8_Rb_treeIN3spv10CapabilityES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE10_M_insert_IRKS1_NS7_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS1_EPSt18_Rb_tree_node_baseSF_OT_RT0_.exit.i.i.i168 +_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit.sink.split: ; preds = %_ZNSt8_Rb_treeIN3spv10CapabilityES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE10_M_insert_IRKS1_NS7_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS1_EPSt18_Rb_tree_node_baseSF_OT_RT0_.exit.i.i.i42, %_ZNSt8_Rb_treeIN3spv10CapabilityES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE10_M_insert_IRKS1_NS7_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS1_EPSt18_Rb_tree_node_baseSF_OT_RT0_.exit.i.i.i78, %_ZNSt8_Rb_treeIN3spv10CapabilityES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE10_M_insert_IRKS1_NS7_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS1_EPSt18_Rb_tree_node_baseSF_OT_RT0_.exit.i.i.i114, %_ZNSt8_Rb_treeIN3spv10CapabilityES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE10_M_insert_IRKS1_NS7_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS1_EPSt18_Rb_tree_node_baseSF_OT_RT0_.exit.i.i.i150, %_ZNSt8_Rb_treeIN3spv10CapabilityES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE10_M_insert_IRKS1_NS7_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS1_EPSt18_Rb_tree_node_baseSF_OT_RT0_.exit.i.i.i168 %377 = getelementptr inbounds nuw i8, ptr %0, i64 384 %378 = load i64, ptr %377, align 8 %379 = add i64 %378, 1 store i64 %379, ptr %377, align 8 br label %_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit -_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit: ; preds = %_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit.sink.split, %366, %344, %324, %300, %280, %255, %235, %211, %191, %_ZN3spv6Module14mapInstructionEPNS_11InstructionE.exit +_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit: ; preds = %_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit.sink.split, %366, %344, %300, %255, %211, %_ZN3spv6Module14mapInstructionEPNS_11InstructionE.exit, %266 %380 = icmp eq i32 %6, 2 %or.cond = and i1 %5, %380 br i1 %or.cond, label %382, label %_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit209 -_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit.thread: ; preds = %266 - %381 = icmp eq i32 %6, 2 - %or.cond239 = and i1 %5, %381 - br i1 %or.cond239, label %.thread, label %_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit209 - 382: ; preds = %_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit %.not = icmp eq i32 %2, 6 br i1 %.not, label %_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit191, label %.thread -.thread: ; preds = %_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit.thread, %382 +.thread: ; preds = %.thread %383 = getelementptr inbounds nuw i8, ptr %0, i64 360 %384 = getelementptr inbounds nuw i8, ptr %0, i64 352 %.02022.i.i.i.i174 = load ptr, ptr %383, align 8 @@ -10890,13 +10885,16 @@ _ZNSt8_Rb_treeIN3spv10CapabilityES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE10_M_in %428 = getelementptr inbounds nuw i8, ptr %427, i64 32 store i32 48, ptr %428, align 4 call void @_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_(i1 noundef zeroext %426, ptr noundef nonnull %427, ptr noundef nonnull %.sroa.4.0.i.ph.i.i.i203, ptr noundef nonnull align 8 dereferenceable(32) %409) #22 + br label %_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit209.sink.split + +_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit209.sink.split: ; preds = %_ZNSt8_Rb_treeIN3spv10CapabilityES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE10_M_insert_IRKS1_NS7_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS1_EPSt18_Rb_tree_node_baseSF_OT_RT0_.exit.i.i.i204, %_ZNSt8_Rb_treeIN3spv10CapabilityES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE10_M_insert_IRKS1_NS7_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS1_EPSt18_Rb_tree_node_baseSF_OT_RT0_.exit.i.i.i132, %_ZNSt8_Rb_treeIN3spv10CapabilityES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE10_M_insert_IRKS1_NS7_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS1_EPSt18_Rb_tree_node_baseSF_OT_RT0_.exit.i.i.i96, %_ZNSt8_Rb_treeIN3spv10CapabilityES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE10_M_insert_IRKS1_NS7_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS1_EPSt18_Rb_tree_node_baseSF_OT_RT0_.exit.i.i.i60, %_ZNSt8_Rb_treeIN3spv10CapabilityES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE10_M_insert_IRKS1_NS7_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS1_EPSt18_Rb_tree_node_baseSF_OT_RT0_.exit.i.i.i %429 = getelementptr inbounds nuw i8, ptr %0, i64 384 %430 = load i64, ptr %429, align 8 %431 = add i64 %430, 1 store i64 %431, ptr %429, align 8 br label %_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit209 -_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit209: ; preds = %_ZNSt8_Rb_treeIN3spv10CapabilityES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE10_M_insert_IRKS1_NS7_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS1_EPSt18_Rb_tree_node_baseSF_OT_RT0_.exit.i.i.i204, %418, %_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit.thread, %_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit191, %_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit +_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit209: ; preds = %_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit209.sink.split, %191, %235, %280, %324, %418, %_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit191, %_ZN3spv7Builder13addCapabilityENS_10CapabilityE.exit %432 = getelementptr inbounds nuw i8, ptr %0, i64 234 %433 = load i8, ptr %432, align 2 %434 = trunc i8 %433 to i1 @@ -18202,7 +18200,7 @@ _ZNSt8_Rb_treeIN3spv10CapabilityES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE10_M_in %55 = select i1 %3, i32 51, i32 44 br label %61 -56: ; preds = %_ZNSt8_Rb_treeIN3spv10CapabilityES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE10_M_insert_IRKS1_NS7_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS1_EPSt18_Rb_tree_node_baseSF_OT_RT0_.exit.i.i.i, %41 +56: ; preds = %41, %_ZNSt8_Rb_treeIN3spv10CapabilityES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE10_M_insert_IRKS1_NS7_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS1_EPSt18_Rb_tree_node_baseSF_OT_RT0_.exit.i.i.i call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %7) call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %7) #22 @@ -28111,7 +28109,7 @@ _ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i231: ; preds = %248 br i1 %263, label %264, label %_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i236 264: ; preds = %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i231 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %260, ptr align 4 %.sroa.0333.5, i64 %251, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %260, ptr nonnull align 4 %.sroa.0333.5, i64 %251, i1 false) br label %_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i236 _ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i236: ; preds = %264, %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i231 @@ -28233,7 +28231,7 @@ _ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i257: ; preds = %298 br i1 %313, label %314, label %_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i262 314: ; preds = %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i257 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %310, ptr align 4 %.sroa.0333.6, i64 %301, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %310, ptr nonnull align 4 %.sroa.0333.6, i64 %301, i1 false) br label %_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i262 _ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i262: ; preds = %314, %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i257 @@ -28290,7 +28288,7 @@ _ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i265: ; preds = %323 br i1 %337, label %338, label %_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i270 338: ; preds = %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i265 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %335, ptr align 4 %.sroa.0333.7, i64 %326, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %335, ptr nonnull align 4 %.sroa.0333.7, i64 %326, i1 false) br label %_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i270 _ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i270: ; preds = %338, %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i265 @@ -28412,7 +28410,7 @@ _ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i291: ; preds = %372 br i1 %387, label %388, label %_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i296 388: ; preds = %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i291 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %384, ptr align 4 %.sroa.0333.8, i64 %375, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %384, ptr nonnull align 4 %.sroa.0333.8, i64 %375, i1 false) br label %_ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i296 _ZNSt6vectorIjSaIjEE17_M_realloc_insertIJRKjEEEvN9__gnu_cxx17__normal_iteratorIPjS1_EEDpOT_.exit.i296: ; preds = %388, %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i291 @@ -28504,7 +28502,7 @@ _ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i321: ; preds = %417 br i1 %431, label %432, label %_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit.i.i324 432: ; preds = %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i321 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %429, ptr align 4 %.sroa.0333.9, i64 %95, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %429, ptr nonnull align 4 %.sroa.0333.9, i64 %95, i1 false) br label %_ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit.i.i324 _ZNSt6vectorIjSaIjEE11_S_relocateEPjS2_S2_RS0_.exit.i.i324: ; preds = %432, %_ZNKSt6vectorIjSaIjEE12_M_check_lenEmPKc.exit.i.i321 diff --git a/bench/graphviz/optimized/pca.ll b/bench/graphviz/optimized/pca.ll index badd0bf5e02..108478cdc3c 100644 --- a/bench/graphviz/optimized/pca.ll +++ b/bench/graphviz/optimized/pca.ll @@ -150,8 +150,7 @@ gv_calloc.exit95.preheader135: ; preds = %gv_calloc.exit95.pr .preheader99.lr.ph: ; preds = %gv_calloc.exit95 %59 = icmp sgt i32 %2, 0 - %smax184 = tail call i32 @llvm.smax.i32(i32 %1, i32 1) - %wide.trip.count185 = zext nneg i32 %smax184 to i64 + %smax184 = zext nneg i32 %1 to i64 br i1 %59, label %.preheader99.us.preheader, label %.preheader99 .preheader99.us.preheader: ; preds = %.preheader99.lr.ph diff --git a/bench/graphviz/optimized/shapes.ll b/bench/graphviz/optimized/shapes.ll index be234fc435e..eaa9b7a9889 100644 --- a/bench/graphviz/optimized/shapes.ll +++ b/bench/graphviz/optimized/shapes.ll @@ -3998,7 +3998,6 @@ gv_calloc.exit542: ; preds = %.thread.i541, %376 store double %475, ptr %171, align 8, !tbaa !4 %476 = fdiv double %474, %472 %477 = fdiv double %475, %473 - %umax649 = call i64 @llvm.umax.i64(i64 %.1490, i64 1) br label %478 478: ; preds = %.loopexit563, %478 @@ -4012,7 +4011,7 @@ gv_calloc.exit542: ; preds = %.thread.i541, %376 store double %480, ptr %479, align 8, !tbaa !4 store double %481, ptr %.sroa.6.0..sroa_idx, align 8, !tbaa !4 %482 = add nuw i64 %.0474586, 1 - %exitcond650.not = icmp eq i64 %482, %umax649 + %exitcond650.not = icmp eq i64 %482, %.1490 br i1 %exitcond650.not, label %483, label %478, !llvm.loop !92 483: ; preds = %478 @@ -4025,12 +4024,11 @@ gv_calloc.exit542: ; preds = %.thread.i541, %376 %.sroa.8.0.copyload = load double, ptr %.sroa.8.0..sroa_idx, align 8, !tbaa !4 %rhsv.cast.i = bitcast double %.sroa.053.0.copyload to i64 %rhsv.cast.i545 = bitcast double %.sroa.8.0.copyload to i64 - %umax651 = call i64 @llvm.umax.i64(i64 %.1490, i64 2) br label %485 485: ; preds = %489, %.lr.ph %.0472587 = phi i64 [ 1, %.lr.ph ], [ %490, %489 ] - %486 = sub i64 %umax649, %.0472587 + %486 = sub i64 %.1490, %.0472587 %487 = urem i64 %486, %.1490 %488 = getelementptr inbounds nuw %struct.pointf_s, ptr %383, i64 %487 %.sroa.026.0.copyload = load double, ptr %488, align 8, !tbaa !4 @@ -4044,7 +4042,7 @@ gv_calloc.exit542: ; preds = %.thread.i541, %376 %lhsv.cast.i544 = bitcast double %.sroa.19.0.copyload to i64 %.not.i546 = icmp ne i64 %lhsv.cast.i544, %rhsv.cast.i545 %490 = add nuw i64 %.0472587, 1 - %exitcond652.not = icmp eq i64 %490, %umax651 + %exitcond652.not = icmp eq i64 %490, %.1490 %or.cond682 = select i1 %.not.i546, i1 true, i1 %exitcond652.not br i1 %or.cond682, label %.lr.ph624, label %485, !llvm.loop !93 @@ -4171,7 +4169,7 @@ gv_calloc.exit542: ; preds = %.thread.i541, %376 540: ; preds = %._crit_edge612, %530 %541 = add nuw i64 %.1618, 1 - %exitcond654.not = icmp eq i64 %541, %umax649 + %exitcond654.not = icmp eq i64 %541, %.1490 br i1 %exitcond654.not, label %.lr.ph629, label %501, !llvm.loop !96 542: ; preds = %.lr.ph629, %542 @@ -4202,7 +4200,7 @@ gv_calloc.exit542: ; preds = %.thread.i541, %376 %558 = fmul double %557, 2.000000e+00 %559 = call double @llvm.maxnum.f64(double %558, double %.sroa.9.3628) %560 = add nuw i64 %.2626, 1 - %exitcond655.not = icmp eq i64 %560, %umax649 + %exitcond655.not = icmp eq i64 %560, %.1490 br i1 %exitcond655.not, label %..loopexit_crit_edge, label %542, !llvm.loop !97 ..loopexit_crit_edge: ; preds = %542 diff --git a/bench/gromacs/optimized/domdec_vsite.ll b/bench/gromacs/optimized/domdec_vsite.ll index 7d57600532f..fbe52642185 100644 --- a/bench/gromacs/optimized/domdec_vsite.ll +++ b/bench/gromacs/optimized/domdec_vsite.ll @@ -585,7 +585,7 @@ _ZNKSt6vectorIN3gmx9HashedMapIiE9hashEntryESaIS3_EE12_M_check_lenEmPKc.exit.i: ; %131 = getelementptr inbounds nuw i8, ptr %129, i64 8 store i32 -1, ptr %131, align 4 %.not10.i.i.i.i = icmp eq ptr %88, %99 - br i1 %.not10.i.i.i.i, label %_ZNSt6vectorIN3gmx9HashedMapIiE9hashEntryESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit.i.thread, label %.lr.ph.i.i.i37.i + br i1 %.not10.i.i.i.i, label %_ZNSt6vectorIN3gmx9HashedMapIiE9hashEntryESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit.i, label %.lr.ph.i.i.i37.i .lr.ph.i.i.i37.i: ; preds = %_ZNKSt6vectorIN3gmx9HashedMapIiE9hashEntryESaIS3_EE12_M_check_lenEmPKc.exit.i, %.lr.ph.i.i.i37.i %.012.i.i.i.i = phi ptr [ %133, %.lr.ph.i.i.i37.i ], [ %128, %_ZNKSt6vectorIN3gmx9HashedMapIiE9hashEntryESaIS3_EE12_M_check_lenEmPKc.exit.i ] @@ -596,15 +596,8 @@ _ZNKSt6vectorIN3gmx9HashedMapIiE9hashEntryESaIS3_EE12_M_check_lenEmPKc.exit.i: ; %.not.i.i.i38.i = icmp eq ptr %132, %99 br i1 %.not.i.i.i38.i, label %_ZNSt6vectorIN3gmx9HashedMapIiE9hashEntryESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit.i, label %.lr.ph.i.i.i37.i, !llvm.loop !13 -_ZNSt6vectorIN3gmx9HashedMapIiE9hashEntryESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit.i: ; preds = %.lr.ph.i.i.i37.i - %.not.i40.i = icmp eq ptr %88, null - br i1 %.not.i40.i, label %_ZNSt12_Vector_baseIN3gmx9HashedMapIiE9hashEntryESaIS3_EE13_M_deallocateEPS3_m.exit41.i, label %_ZNSt6vectorIN3gmx9HashedMapIiE9hashEntryESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit.i.thread - -_ZNSt6vectorIN3gmx9HashedMapIiE9hashEntryESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit.i.thread: ; preds = %_ZNKSt6vectorIN3gmx9HashedMapIiE9hashEntryESaIS3_EE12_M_check_lenEmPKc.exit.i, %_ZNSt6vectorIN3gmx9HashedMapIiE9hashEntryESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit.i +_ZNSt6vectorIN3gmx9HashedMapIiE9hashEntryESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit.i: ; preds = %.lr.ph.i.i.i37.i, %_ZNKSt6vectorIN3gmx9HashedMapIiE9hashEntryESaIS3_EE12_M_check_lenEmPKc.exit.i tail call void @_ZdlPv(ptr noundef nonnull %88) #14 - br label %_ZNSt12_Vector_baseIN3gmx9HashedMapIiE9hashEntryESaIS3_EE13_M_deallocateEPS3_m.exit41.i - -_ZNSt12_Vector_baseIN3gmx9HashedMapIiE9hashEntryESaIS3_EE13_M_deallocateEPS3_m.exit41.i: ; preds = %_ZNSt6vectorIN3gmx9HashedMapIiE9hashEntryESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit.i.thread, %_ZNSt6vectorIN3gmx9HashedMapIiE9hashEntryESaIS3_EE11_S_relocateEPS3_S6_S6_RS4_.exit.i store ptr %128, ptr %7, align 8 %134 = getelementptr inbounds nuw i8, ptr %129, i64 12 store ptr %134, ptr %15, align 8 diff --git a/bench/gromacs/optimized/trxio.ll b/bench/gromacs/optimized/trxio.ll index c9dfec09372..e93d4501129 100644 --- a/bench/gromacs/optimized/trxio.ll +++ b/bench/gromacs/optimized/trxio.ll @@ -1035,11 +1035,6 @@ define noundef i32 @_Z22write_trxframe_indexedP11t_trxstatusPK10t_trxframeiPKiP1 i32 7, label %135 i32 6, label %.thread149 i32 4, label %145 - i32 11, label %157 - i32 13, label %157 - i32 14, label %157 - i32 15, label %157 - i32 12, label %190 ] 135: ; preds = %.loopexit @@ -1075,8 +1070,7 @@ define noundef i32 @_Z22write_trxframe_indexedP11t_trxstatusPK10t_trxframeiPKiP1 tail call void @_Z19gmx_trr_write_frameP8t_fileiolffPA3_KfiS3_S3_S3_(ptr noundef %147, i64 noundef %150, float noundef %152, float noundef %155, ptr noundef nonnull %156, i32 noundef %2, ptr noundef %.0124, ptr noundef %.0119, ptr noundef %.0) br label %.thread141 -157: ; preds = %49, %49, %49, %49, %.loopexit, %.loopexit, %.loopexit, %.loopexit - %.093134 = phi i32 [ %38, %49 ], [ %38, %49 ], [ %38, %49 ], [ %38, %49 ], [ %.093130, %.loopexit ], [ %.093130, %.loopexit ], [ %.093130, %.loopexit ], [ %.093130, %.loopexit ] +157: ; preds = %49, %49, %49, %49 %158 = getelementptr inbounds nuw i8, ptr %1, i64 44 %159 = load i8, ptr %158, align 4 %160 = trunc i8 %159 to i1 @@ -1084,7 +1078,7 @@ define noundef i32 @_Z22write_trxframe_indexedP11t_trxstatusPK10t_trxframeiPKiP1 161: ; preds = %157 call void @_ZNSt10filesystem7__cxx114pathC2IA122_cS1_EERKT_NS1_6formatE(ptr noundef nonnull align 8 dereferenceable(40) %11, ptr noundef nonnull align 1 dereferenceable(122) @.str.2, i8 noundef zeroext 2) - %162 = invoke noundef ptr @_Z7ftp2exti(i32 noundef %.093134) + %162 = invoke noundef ptr @_Z7ftp2exti(i32 noundef %38) to label %163 unwind label %165 163: ; preds = %161 @@ -1105,7 +1099,7 @@ define noundef i32 @_Z22write_trxframe_indexedP11t_trxstatusPK10t_trxframeiPKiP1 %169 = load float, ptr %168, align 4 %170 = fpext float %169 to double %171 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %6, ptr noundef nonnull dereferenceable(1) @.str.15, double noundef %170) #21 - %172 = icmp eq i32 %.093134, 11 + %172 = icmp eq i32 %38, 11 %173 = getelementptr inbounds nuw i8, ptr %0, i64 24 %174 = load ptr, ptr %173, align 8 %175 = tail call noundef ptr @_Z13gmx_fio_getfpP8t_fileio(ptr noundef %174) @@ -1132,7 +1126,7 @@ define noundef i32 @_Z22write_trxframe_indexedP11t_trxstatusPK10t_trxframeiPKiP1 call void @_Z21write_hconf_indexed_pP8_IO_FILEPKcPK7t_atomsiPKiPA3_KfSA_SA_(ptr noundef %175, ptr noundef nonnull %6, ptr noundef %177, i32 noundef %2, ptr noundef %3, ptr noundef %179, ptr noundef %188, ptr noundef nonnull %189) br label %.thread135 -190: ; preds = %49, %.loopexit +190: ; preds = %49 %191 = getelementptr inbounds nuw i8, ptr %1, i64 28 %192 = load float, ptr %191, align 4 %193 = fpext float %192 to double diff --git a/bench/grpc/optimized/channelz.ll b/bench/grpc/optimized/channelz.ll index b06cfc1634c..2206a6e1fd5 100644 --- a/bench/grpc/optimized/channelz.ll +++ b/bench/grpc/optimized/channelz.ll @@ -4161,7 +4161,7 @@ terminate.lpad.i.i.i.i28: ; preds = %if.end.i.i.i27 _ZN9grpc_core12experimental4JsonD2Ev.exit30: ; preds = %_ZNSt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9grpc_core12experimental4JsonEED2Ev.exit, %.noexc.i.i29 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp.i.i.i24) call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp11) #24 - %call.i31 = call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef %__begin3.sroa.0.0411) #30 + %call.i31 = call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef nonnull %__begin3.sroa.0.0411) #30 %cmp.i.not = icmp eq ptr %call.i31, %add.ptr.i.i br i1 %cmp.i.not, label %for.end, label %for.body @@ -4661,7 +4661,7 @@ terminate.lpad.i.i.i.i111: ; preds = %if.end.i.i.i110 _ZN9grpc_core12experimental4JsonD2Ev.exit113: ; preds = %_ZNSt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9grpc_core12experimental4JsonEED2Ev.exit106, %.noexc.i.i112 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %ref.tmp.i.i.i107) call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp82) #24 - %call.i114 = call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef %__begin365.sroa.0.0413) #30 + %call.i114 = call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef nonnull %__begin365.sroa.0.0413) #30 %cmp.i57.not = icmp eq ptr %call.i114, %add.ptr.i.i56 br i1 %cmp.i57.not, label %for.end134, label %for.body73 @@ -5674,7 +5674,7 @@ lor.rhs.i: ; preds = %_ZNSt3mapIlN9grpc_c %_M_storage.i.i.i = getelementptr inbounds nuw i8, ptr %__y.addr.1.i.i.i.i, i64 32 %4 = load i64, ptr %_M_storage.i.i.i, align 8 %cmp.i3.i = icmp slt i64 %1, %4 - br i1 %cmp.i3.i, label %if.then.i, label %invoke.cont7 + br i1 %cmp.i3.i, label %if.then.i, label %if.then.i.i if.then.i: ; preds = %lor.rhs.i, %_ZNSt3mapIlN9grpc_core13RefCountedPtrINS0_8channelz10SocketNodeEEESt4lessIlESaISt4pairIKlS4_EEE11lower_boundERS8_.exit.i, %invoke.cont5 %__y.addr.0.lcssa.i.i.i11.i = phi ptr [ %__y.addr.1.i.i.i.i, %_ZNSt3mapIlN9grpc_core13RefCountedPtrINS0_8channelz10SocketNodeEEESt4lessIlESaISt4pairIKlS4_EEE11lower_boundERS8_.exit.i ], [ %__y.addr.1.i.i.i.i, %lor.rhs.i ], [ %add.ptr.i.i.i.i, %invoke.cont5 ] @@ -5683,14 +5683,11 @@ if.then.i: ; preds = %lor.rhs.i, %_ZNSt3m if.then.i.invoke.cont7_crit_edge: ; preds = %if.then.i %.pre = load ptr, ptr %second.i.i, align 8 - br label %invoke.cont7 - -invoke.cont7: ; preds = %if.then.i.invoke.cont7_crit_edge, %lor.rhs.i - %5 = phi ptr [ %.pre, %if.then.i.invoke.cont7_crit_edge ], [ %0, %lor.rhs.i ] - %cmp.not.i.i = icmp eq ptr %5, null + %cmp.not.i.i = icmp eq ptr %.pre, null br i1 %cmp.not.i.i, label %_ZNSt4pairIlN9grpc_core13RefCountedPtrINS0_8channelz10SocketNodeEEEED2Ev.exit, label %if.then.i.i -if.then.i.i: ; preds = %invoke.cont7 +if.then.i.i: ; preds = %lor.rhs.i, %invoke.cont7 + %5 = phi ptr [ %.pre, %invoke.cont7 ], [ %0, %lor.rhs.i ] %refs_.i.i.i = getelementptr inbounds nuw i8, ptr %5, i64 8 %6 = atomicrmw sub ptr %refs_.i.i.i, i64 1 acq_rel, align 8 %cmp.i.i.i.i = icmp eq i64 %6, 1 @@ -5902,7 +5899,7 @@ lor.rhs.i: ; preds = %_ZNSt3mapIlN9grpc_c %_M_storage.i.i.i = getelementptr inbounds nuw i8, ptr %__y.addr.1.i.i.i.i, i64 32 %4 = load i64, ptr %_M_storage.i.i.i, align 8 %cmp.i3.i = icmp slt i64 %1, %4 - br i1 %cmp.i3.i, label %if.then.i, label %invoke.cont7 + br i1 %cmp.i3.i, label %if.then.i, label %if.then.i.i if.then.i: ; preds = %lor.rhs.i, %_ZNSt3mapIlN9grpc_core13RefCountedPtrINS0_8channelz16ListenSocketNodeEEESt4lessIlESaISt4pairIKlS4_EEE11lower_boundERS8_.exit.i, %invoke.cont5 %__y.addr.0.lcssa.i.i.i11.i = phi ptr [ %__y.addr.1.i.i.i.i, %_ZNSt3mapIlN9grpc_core13RefCountedPtrINS0_8channelz16ListenSocketNodeEEESt4lessIlESaISt4pairIKlS4_EEE11lower_boundERS8_.exit.i ], [ %__y.addr.1.i.i.i.i, %lor.rhs.i ], [ %add.ptr.i.i.i.i, %invoke.cont5 ] @@ -5911,14 +5908,11 @@ if.then.i: ; preds = %lor.rhs.i, %_ZNSt3m if.then.i.invoke.cont7_crit_edge: ; preds = %if.then.i %.pre = load ptr, ptr %second.i.i, align 8 - br label %invoke.cont7 - -invoke.cont7: ; preds = %if.then.i.invoke.cont7_crit_edge, %lor.rhs.i - %5 = phi ptr [ %.pre, %if.then.i.invoke.cont7_crit_edge ], [ %0, %lor.rhs.i ] - %cmp.not.i.i = icmp eq ptr %5, null + %cmp.not.i.i = icmp eq ptr %.pre, null br i1 %cmp.not.i.i, label %_ZNSt4pairIlN9grpc_core13RefCountedPtrINS0_8channelz16ListenSocketNodeEEEED2Ev.exit, label %if.then.i.i -if.then.i.i: ; preds = %invoke.cont7 +if.then.i.i: ; preds = %lor.rhs.i, %invoke.cont7 + %5 = phi ptr [ %.pre, %invoke.cont7 ], [ %0, %lor.rhs.i ] %refs_.i.i.i = getelementptr inbounds nuw i8, ptr %5, i64 8 %6 = atomicrmw sub ptr %refs_.i.i.i, i64 1 acq_rel, align 8 %cmp.i.i.i.i = icmp eq i64 %6, 1 @@ -16016,7 +16010,7 @@ if.else37.i: ; preds = %if.end.i store ptr null, ptr %this, align 8 br label %if.then -if.then: ; preds = %if.then28.i, %while.end.i, %if.else37.i, %if.else.i, %if.then10.i +if.then: ; preds = %if.then10.i, %while.end.i, %if.then28.i, %if.else.i, %if.else37.i %_M_t = getelementptr inbounds nuw i8, ptr %this, i64 16 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %ref.tmp.i.i.i.i) %_M_index.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %0, i64 112 diff --git a/bench/grpc/optimized/event_log.ll b/bench/grpc/optimized/event_log.ll index 19a17c50e46..1da7b85ac51 100644 --- a/bench/grpc/optimized/event_log.ll +++ b/bench/grpc/optimized/event_log.ll @@ -401,7 +401,7 @@ if.then.i.i.i24: ; preds = %while.body.i.i.i.i %add.ptr.i.i.i = getelementptr inbounds nuw i8, ptr %call.i.i.i.i, i64 %mul.i.i.i.i tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %call.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(32) %.pre57, i64 32, i1 false) %cmp1.not12.i.i.i.i.i = icmp eq i64 %storemerge27.i.i.i.i, 1 - br i1 %cmp1.not12.i.i.i.i.i, label %if.else.i.i, label %for.body.i.i.preheader.i.i.i + br i1 %cmp1.not12.i.i.i.i.i, label %for.end.i.i.i.i.i, label %for.body.i.i.preheader.i.i.i for.body.i.i.preheader.i.i.i: ; preds = %if.then.i.i.i24 %__cur.011.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %call.i.i.i.i, i64 32 @@ -416,26 +416,24 @@ for.body.i.i.i.i.i25: ; preds = %for.body.i.i.i.i.i2 %cmp1.not.i.i.i.i.i = icmp eq ptr %__cur.0.i.i.i.i.i, %add.ptr.i.i.i br i1 %cmp1.not.i.i.i.i.i, label %_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPN9grpc_core8EventLog5EntryESt6vectorIS4_SaIS4_EEEES4_EC2ES9_l.exit.i.i, label %for.body.i.i.i.i.i25, !llvm.loop !11 -_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPN9grpc_core8EventLog5EntryESt6vectorIS4_SaIS4_EEEES4_EC2ES9_l.exit.i.i: ; preds = %for.body.i.i.i.i.i25 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.pre57, ptr noundef nonnull align 8 dereferenceable(32) %incdec.ptr4.i.i.i.i.i, i64 32, i1 false) - br label %if.else.i.i +_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPN9grpc_core8EventLog5EntryESt6vectorIS4_SaIS4_EEEES4_EC2ES9_l.exit.i.i: ; preds = %for.body.i.i.i.i.i25, %if.then.i.i.i24 + %__prev.0.lcssa.i.i.i.i.i = phi ptr [ %call.i.i.i.i, %if.then.i.i.i24 ], [ %incdec.ptr4.i.i.i.i.i, %for.body.i.i.i.i.i25 ] + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.pre57, ptr noundef nonnull align 8 dereferenceable(32) %__prev.0.lcssa.i.i.i.i.i, i64 32, i1 false) + invoke fastcc void @"_ZSt22__stable_sort_adaptiveIN9__gnu_cxx17__normal_iteratorIPN9grpc_core8EventLog5EntryESt6vectorIS4_SaIS4_EEEES5_lNS0_5__ops15_Iter_comp_iterIZNS3_13EndCollectionEN4absl12lts_202308024SpanIKSt17basic_string_viewIcSt11char_traitsIcEEEEE3$_0EEEvT_SN_T0_T1_T2_"(ptr nonnull %.pre57, ptr %.pre58, ptr noundef nonnull %call.i.i.i.i, i64 noundef %storemerge27.i.i.i.i) + to label %if.end22.i.i unwind label %lpad.i.i if.then5.i.i: ; preds = %if.end4.i.i.i.i, %if.end.i.i tail call fastcc void @"_ZSt21__inplace_stable_sortIN9__gnu_cxx17__normal_iteratorIPN9grpc_core8EventLog5EntryESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_comp_iterIZNS3_13EndCollectionEN4absl12lts_202308024SpanIKSt17basic_string_viewIcSt11char_traitsIcEEEEE3$_0EEEvT_SN_T0_"(ptr %.pre57, ptr %.pre58) br label %if.end22.i.i -lpad.i.i: ; preds = %if.else.i.i +lpad.i.i: ; preds = %for.end.i.i.i.i.i %14 = landingpad { ptr, i32 } cleanup tail call void @_ZdlPv(ptr noundef nonnull %call.i.i.i.i) #22 br label %ehcleanup -if.else.i.i: ; preds = %_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPN9grpc_core8EventLog5EntryESt6vectorIS4_SaIS4_EEEES4_EC2ES9_l.exit.i.i, %if.then.i.i.i24 - invoke fastcc void @"_ZSt22__stable_sort_adaptiveIN9__gnu_cxx17__normal_iteratorIPN9grpc_core8EventLog5EntryESt6vectorIS4_SaIS4_EEEES5_lNS0_5__ops15_Iter_comp_iterIZNS3_13EndCollectionEN4absl12lts_202308024SpanIKSt17basic_string_viewIcSt11char_traitsIcEEEEE3$_0EEEvT_SN_T0_T1_T2_"(ptr nonnull %.pre57, ptr %.pre58, ptr noundef nonnull %call.i.i.i.i, i64 noundef %storemerge27.i.i.i.i) - to label %if.end22.i.i unwind label %lpad.i.i - -if.end22.i.i: ; preds = %if.else.i.i, %if.then5.i.i - %__buf.sroa.4.017.i.i = phi ptr [ %call.i.i.i.i, %if.else.i.i ], [ null, %if.then5.i.i ] +if.else.i.i: ; preds = %if.then5.i.i, %_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPN9grpc_core8EventLog5EntryESt6vectorIS4_SaIS4_EEEES4_EC2ES9_l.exit.i.i + %__buf.sroa.4.017.i.i = phi ptr [ %call.i.i.i.i, %_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPN9grpc_core8EventLog5EntryESt6vectorIS4_SaIS4_EEEES4_EC2ES9_l.exit.i.i ], [ null, %if.then5.i.i ] tail call void @_ZdlPv(ptr noundef %__buf.sroa.4.017.i.i) #22 br label %nrvo.skipdtor diff --git a/bench/grpc/optimized/parsing.ll b/bench/grpc/optimized/parsing.ll index 29102c66402..d6134ecb678 100644 --- a/bench/grpc/optimized/parsing.ll +++ b/bench/grpc/optimized/parsing.ll @@ -3524,29 +3524,19 @@ for.body.i.i.i.i: ; preds = %for.body.i.i.i.i, % br i1 %exitcond.not.i.i.i.i, label %_ZN4absl12lts_2023080216numbers_internal24FastHexToBufferZeroPad16EmPc.exit.i.i.i, label %for.body.i.i.i.i, !llvm.loop !120 _ZN4absl12lts_2023080216numbers_internal24FastHexToBufferZeroPad16EmPc.exit.i.i.i: ; preds = %for.body.i.i.i.i - %arrayidx.i.i.i = getelementptr inbounds nuw i8, ptr %buffer.i.i.i, i64 32 %or.i.i.i.i = or i64 %conv.i, 1 %15 = call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %or.i.i.i.i, i1 true) - %div.neg5.lhs.trunc.i.i.i.i = trunc nuw nsw i64 %15 to i32 - %div.neg567.i.i.i.i = lshr i32 %div.neg5.lhs.trunc.i.i.i.i, 2 - %narrow.i.i.i.i = sub nuw nsw i32 16, %div.neg567.i.i.i.i - %sub3.i.i.i.i = zext nneg i32 %narrow.i.i.i.i to i64 - %cmp.not.i.i.i = icmp eq i32 %div.neg567.i.i.i.i, 15 + %div.neg5.lhs.trunc.i.i.i.i = and i64 %15, 60 + %div.neg567.i.i.i.i = icmp eq i64 %div.neg5.lhs.trunc.i.i.i.i, 60 br i1 %cmp.not.i.i.i, label %if.else.i.i.i, label %_ZN4absl12lts_2023080216strings_internal22ExtractStringificationINS0_3HexEEESt17basic_string_viewIcSt11char_traitsIcEERNS1_13StringifySinkERKT_.exit.i if.else.i.i.i: ; preds = %_ZN4absl12lts_2023080216numbers_internal24FastHexToBufferZeroPad16EmPc.exit.i.i.i - call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %buffer.i.i.i, i8 48, i64 16, i1 false) - %idx.neg4.i.i.i = sub nsw i64 0, %sub3.i.i.i.i - %add.ptr5.i.i.i = getelementptr inbounds i8, ptr %arrayidx.i.i.i, i64 %idx.neg4.i.i.i - %add.ptr6.i.i.i = getelementptr inbounds i8, ptr %add.ptr5.i.i.i, i64 -16 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(16) %add.ptr6.i.i.i, i8 48, i64 16, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(31) %buffer.i.i.i, i8 48, i64 31, i1 false) br label %_ZN4absl12lts_2023080216strings_internal22ExtractStringificationINS0_3HexEEESt17basic_string_viewIcSt11char_traitsIcEERNS1_13StringifySinkERKT_.exit.i _ZN4absl12lts_2023080216strings_internal22ExtractStringificationINS0_3HexEEESt17basic_string_viewIcSt11char_traitsIcEERNS1_13StringifySinkERKT_.exit.i: ; preds = %if.else.i.i.i, %_ZN4absl12lts_2023080216numbers_internal24FastHexToBufferZeroPad16EmPc.exit.i.i.i - %conv.sink13.i.i.i = phi i64 [ 2, %if.else.i.i.i ], [ %sub3.i.i.i.i, %_ZN4absl12lts_2023080216numbers_internal24FastHexToBufferZeroPad16EmPc.exit.i.i.i ] - %idx.neg12.i.i.i = sub nsw i64 0, %conv.sink13.i.i.i - %add.ptr13.i.i.i = getelementptr inbounds i8, ptr %arrayidx.i.i.i, i64 %idx.neg12.i.i.i - invoke void @_ZN4absl12lts_2023080216strings_internal13StringifySink6AppendESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp22, i64 %conv.sink13.i.i.i, ptr nonnull %add.ptr13.i.i.i) + %conv.sink13.i.i.i = getelementptr inbounds nuw i8, ptr %buffer.i.i.i, i64 30 + invoke void @_ZN4absl12lts_2023080216strings_internal13StringifySink6AppendESt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp22, i64 2, ptr nonnull %conv.sink13.i.i.i) to label %invoke.cont24 unwind label %lpad23 invoke.cont24: ; preds = %_ZN4absl12lts_2023080216strings_internal22ExtractStringificationINS0_3HexEEESt17basic_string_viewIcSt11char_traitsIcEERNS1_13StringifySinkERKT_.exit.i diff --git a/bench/harfbuzz/optimized/gsubgpos-context.ll b/bench/harfbuzz/optimized/gsubgpos-context.ll index c6bf7b15f10..47d37ab6658 100644 --- a/bench/harfbuzz/optimized/gsubgpos-context.ll +++ b/bench/harfbuzz/optimized/gsubgpos-context.ll @@ -246,16 +246,16 @@ if.end: ; preds = %entry %1 = load i32, ptr %length.i.i.i, align 4 %2 = load i32, ptr %buffers.i.i, align 8 %cmp.not.i.i.i = icmp slt i32 %1, %2 - br i1 %cmp.not.i.i.i, label %if.end.i.i.i, label %land.lhs.true.i.i.i + br i1 %cmp.not.i.i.i, label %_ZN5graph24gsubgpos_graph_context_t10add_bufferEPc.exit, label %land.lhs.true.i.i.i land.lhs.true.i.i.i: ; preds = %if.end %add.i.i.i = add i32 %1, 1 %cmp.i.i.i.i.i = icmp slt i32 %2, 0 - br i1 %cmp.i.i.i.i.i, label %if.then.i.i.i, label %if.end.i.i.i.i + br i1 %cmp.i.i.i.i.i, label %if.end.i.i.i, label %if.end.i.i.i.i if.end.i.i.i.i: ; preds = %land.lhs.true.i.i.i %cmp9.not.i.i.i.i = icmp ugt i32 %add.i.i.i, %2 - br i1 %cmp9.not.i.i.i.i, label %while.body.i.i.i.i, label %if.end.i.i.i + br i1 %cmp9.not.i.i.i.i, label %while.body.i.i.i.i, label %_ZN5graph24gsubgpos_graph_context_t10add_bufferEPc.exit while.body.i.i.i.i: ; preds = %if.end.i.i.i.i, %while.body.i.i.i.i %new_allocated.133.i.i.i.i = phi i32 [ %add15.i.i.i.i, %while.body.i.i.i.i ], [ %2, %if.end.i.i.i.i ] @@ -281,26 +281,25 @@ _ZN11hb_vector_tIPcLb0EE14realloc_vectorIS0_TnPN12hb_enable_ifIXsr3std28is_trivi if.then28.i.i.i.i: ; preds = %_ZN11hb_vector_tIPcLb0EE14realloc_vectorIS0_TnPN12hb_enable_ifIXsr3std28is_trivially_copy_assignableIT_EE5valueEvE4typeELPv0EEEPS0_j11hb_priorityILj0EE.exit.i.i.i.i %6 = load i32, ptr %buffers.i.i, align 8 %cmp30.not.i.i.i.i = icmp ugt i32 %add15.i.i.i.i, %6 - br i1 %cmp30.not.i.i.i.i, label %_ZN11hb_vector_tIPcLb0EE5allocEjb.exit.thread5.i.i.i, label %if.end.i.i.i + br i1 %cmp30.not.i.i.i.i, label %_ZN11hb_vector_tIPcLb0EE5allocEjb.exit.thread5.i.i.i, label %_ZN5graph24gsubgpos_graph_context_t10add_bufferEPc.exit _ZN11hb_vector_tIPcLb0EE5allocEjb.exit.thread5.i.i.i: ; preds = %if.then28.i.i.i.i, %lor.rhs.i.i.i.i %new_allocated.028.sink.i.ph.in.i.i.i = phi i32 [ %2, %lor.rhs.i.i.i.i ], [ %6, %if.then28.i.i.i.i ] %new_allocated.028.sink.i.ph.i.i.i = xor i32 %new_allocated.028.sink.i.ph.in.i.i.i, -1 store i32 %new_allocated.028.sink.i.ph.i.i.i, ptr %buffers.i.i, align 8 - br label %if.then.i.i.i + br label %if.end.i.i.i _ZN11hb_vector_tIPcLb0EE5allocEjb.exit.i.i.i: ; preds = %_ZN11hb_vector_tIPcLb0EE14realloc_vectorIS0_TnPN12hb_enable_ifIXsr3std28is_trivially_copy_assignableIT_EE5valueEvE4typeELPv0EEEPS0_j11hb_priorityILj0EE.exit.i.i.i.i store ptr %call.i.i.i.i.i, ptr %arrayZ.i.i.i.i.i, align 8 store i32 %add15.i.i.i.i, ptr %buffers.i.i, align 8 - br label %if.end.i.i.i - -if.then.i.i.i: ; preds = %_ZN11hb_vector_tIPcLb0EE5allocEjb.exit.thread5.i.i.i, %land.lhs.true.i.i.i - %7 = phi i32 [ %new_allocated.028.sink.i.ph.i.i.i, %_ZN11hb_vector_tIPcLb0EE5allocEjb.exit.thread5.i.i.i ], [ %2, %land.lhs.true.i.i.i ] - %8 = load i64, ptr @_hb_NullPool, align 16 - store i64 %8, ptr @_hb_CrapPool, align 16 br label %_ZN5graph24gsubgpos_graph_context_t10add_bufferEPc.exit -if.end.i.i.i: ; preds = %_ZN11hb_vector_tIPcLb0EE5allocEjb.exit.i.i.i, %if.then28.i.i.i.i, %if.end.i.i.i.i, %if.end +if.end.i.i.i: ; preds = %land.lhs.true.i.i.i, %_ZN11hb_vector_tIPcLb0EE5allocEjb.exit.thread5.i.i.i + %7 = load i64, ptr @_hb_NullPool, align 16 + store i64 %7, ptr @_hb_CrapPool, align 16 + br label %if.then3 + +_ZN5graph24gsubgpos_graph_context_t10add_bufferEPc.exit: ; preds = %if.end, %if.end.i.i.i.i, %if.then28.i.i.i.i, %_ZN11hb_vector_tIPcLb0EE5allocEjb.exit.i.i.i %arrayZ.i.i.i = getelementptr inbounds nuw i8, ptr %0, i64 64 %9 = load ptr, ptr %arrayZ.i.i.i, align 8 %10 = load i32, ptr %length.i.i.i, align 4 @@ -310,15 +309,11 @@ if.end.i.i.i: ; preds = %_ZN11hb_vector_tIPc %arrayidx.i.i.i = getelementptr inbounds nuw ptr, ptr %9, i64 %idxprom.i.i.i store ptr %call, ptr %arrayidx.i.i.i, align 8 %.pre.i.i = load i32, ptr %buffers.i.i, align 8 - br label %_ZN5graph24gsubgpos_graph_context_t10add_bufferEPc.exit - -_ZN5graph24gsubgpos_graph_context_t10add_bufferEPc.exit: ; preds = %if.then.i.i.i, %if.end.i.i.i - %11 = phi i32 [ %7, %if.then.i.i.i ], [ %.pre.i.i, %if.end.i.i.i ] - %cmp.i.i.i = icmp sgt i32 %11, -1 + %cmp.i.i.i = icmp sgt i32 %.pre.i.i, -1 br i1 %cmp.i.i.i, label %if.end4, label %if.then3 -if.then3: ; preds = %_ZN5graph24gsubgpos_graph_context_t10add_bufferEPc.exit - tail call void @free(ptr noundef %call) #11 +if.then3: ; preds = %if.end.i.i.i, %_ZN5graph24gsubgpos_graph_context_t10add_bufferEPc.exit + tail call void @free(ptr noundef nonnull %call) #11 br label %return if.end4: ; preds = %_ZN5graph24gsubgpos_graph_context_t10add_bufferEPc.exit @@ -1511,8 +1506,8 @@ if.else.i: ; preds = %if.end.i while.body.i: ; preds = %if.else.i, %while.body.i %new_allocated.129.i = phi i32 [ %add15.i, %while.body.i ], [ %0, %if.else.i ] %shr14.i = lshr i32 %new_allocated.129.i, 1 - %add.i = add i32 %new_allocated.129.i, 8 - %add15.i = add i32 %add.i, %shr14.i + %add.i = add nuw i32 %new_allocated.129.i, 8 + %add15.i = add nuw i32 %add.i, %shr14.i %cmp13.i = icmp ugt i32 %cond, %add15.i br i1 %cmp13.i, label %while.body.i, label %lor.rhs.i, !llvm.loop !42 @@ -1561,7 +1556,7 @@ for.body.lr.ph.i: ; preds = %if.then4 for.body.i: ; preds = %for.body.i, %for.body.lr.ph.i %5 = phi i32 [ %4, %for.body.lr.ph.i ], [ %inc.i, %for.body.i ] %6 = load ptr, ptr %arrayZ.i9, align 8 - %idxprom.i = zext i32 %5 to i64 + %idxprom.i = zext nneg i32 %5 to i64 %arrayidx.i = getelementptr inbounds nuw %"struct.graph::graph_t::vertex_t", ptr %6, i64 %idxprom.i %single_parent.i.i = getelementptr inbounds nuw i8, ptr %arrayidx.i, i64 84 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(128) %arrayidx.i, i8 0, i64 128, i1 false) diff --git a/bench/harfbuzz/optimized/hb-subset-cff-common.ll b/bench/harfbuzz/optimized/hb-subset-cff-common.ll index 80181aa2de2..8ed84a4354a 100644 --- a/bench/harfbuzz/optimized/hb-subset-cff-common.ll +++ b/bench/harfbuzz/optimized/hb-subset-cff-common.ll @@ -2115,8 +2115,8 @@ if.else.i.i: ; preds = %if.end.i.i while.body.i.i: ; preds = %if.else.i.i, %while.body.i.i %new_allocated.133.i.i = phi i32 [ %add15.i.i, %while.body.i.i ], [ %9, %if.else.i.i ] %shr14.i.i = lshr i32 %new_allocated.133.i.i, 1 - %add.i.i = add i32 %new_allocated.133.i.i, 8 - %add15.i.i = add i32 %add.i.i, %shr14.i.i + %add.i.i = add nuw i32 %new_allocated.133.i.i, 8 + %add15.i.i = add nuw i32 %add.i.i, %shr14.i.i %cmp13.i.i = icmp ugt i32 %cond.i, %add15.i.i br i1 %cmp13.i.i, label %while.body.i.i, label %lor.rhs.i.i, !llvm.loop !27 @@ -2126,15 +2126,7 @@ lor.rhs.i.i: ; preds = %while.body.i.i, %if br i1 %11, label %_ZN11hb_vector_tIN12hb_bit_set_t10page_map_tELb1EE5allocEjb.exit.thread17.i, label %if.end23.i.i if.end23.i.i: ; preds = %lor.rhs.i.i - %tobool.not.i.i.i = icmp eq i32 %new_allocated.028.i.i, 0 %12 = load ptr, ptr %arrayZ.i.i, align 8 - br i1 %tobool.not.i.i.i, label %_ZN11hb_vector_tIN12hb_bit_set_t10page_map_tELb1EE14realloc_vectorIS1_TnPN12hb_enable_ifIXsr3std28is_trivially_copy_assignableIT_EE5valueEvE4typeELPv0EEEPS1_j11hb_priorityILj0EE.exit.thread.i.i, label %_ZN11hb_vector_tIN12hb_bit_set_t10page_map_tELb1EE14realloc_vectorIS1_TnPN12hb_enable_ifIXsr3std28is_trivially_copy_assignableIT_EE5valueEvE4typeELPv0EEEPS1_j11hb_priorityILj0EE.exit.i.i - -_ZN11hb_vector_tIN12hb_bit_set_t10page_map_tELb1EE14realloc_vectorIS1_TnPN12hb_enable_ifIXsr3std28is_trivially_copy_assignableIT_EE5valueEvE4typeELPv0EEEPS1_j11hb_priorityILj0EE.exit.thread.i.i: ; preds = %if.end23.i.i - tail call void @free(ptr noundef %12) #11 - br label %_ZN11hb_vector_tIN12hb_bit_set_t10page_map_tELb1EE5allocEjb.exit.i - -_ZN11hb_vector_tIN12hb_bit_set_t10page_map_tELb1EE14realloc_vectorIS1_TnPN12hb_enable_ifIXsr3std28is_trivially_copy_assignableIT_EE5valueEvE4typeELPv0EEEPS1_j11hb_priorityILj0EE.exit.i.i: ; preds = %if.end23.i.i %13 = shl nuw i32 %new_allocated.028.i.i, 3 %mul.i.i.i = zext i32 %13 to i64 %call.i.i.i = tail call ptr @realloc(ptr noundef %12, i64 noundef %mul.i.i.i) #10 @@ -2152,9 +2144,8 @@ _ZN11hb_vector_tIN12hb_bit_set_t10page_map_tELb1EE5allocEjb.exit.thread17.i: ; p store i32 %new_allocated.028.sink.i.ph.i, ptr %page_map, align 8 br label %if.then12.i -_ZN11hb_vector_tIN12hb_bit_set_t10page_map_tELb1EE5allocEjb.exit.i: ; preds = %_ZN11hb_vector_tIN12hb_bit_set_t10page_map_tELb1EE14realloc_vectorIS1_TnPN12hb_enable_ifIXsr3std28is_trivially_copy_assignableIT_EE5valueEvE4typeELPv0EEEPS1_j11hb_priorityILj0EE.exit.i.i, %_ZN11hb_vector_tIN12hb_bit_set_t10page_map_tELb1EE14realloc_vectorIS1_TnPN12hb_enable_ifIXsr3std28is_trivially_copy_assignableIT_EE5valueEvE4typeELPv0EEEPS1_j11hb_priorityILj0EE.exit.thread.i.i - %retval.0.i32.i.i = phi ptr [ null, %_ZN11hb_vector_tIN12hb_bit_set_t10page_map_tELb1EE14realloc_vectorIS1_TnPN12hb_enable_ifIXsr3std28is_trivially_copy_assignableIT_EE5valueEvE4typeELPv0EEEPS1_j11hb_priorityILj0EE.exit.thread.i.i ], [ %call.i.i.i, %_ZN11hb_vector_tIN12hb_bit_set_t10page_map_tELb1EE14realloc_vectorIS1_TnPN12hb_enable_ifIXsr3std28is_trivially_copy_assignableIT_EE5valueEvE4typeELPv0EEEPS1_j11hb_priorityILj0EE.exit.i.i ] - store ptr %retval.0.i32.i.i, ptr %arrayZ.i.i, align 8 +_ZN11hb_vector_tIN12hb_bit_set_t10page_map_tELb1EE5allocEjb.exit.i: ; preds = %_ZN11hb_vector_tIN12hb_bit_set_t10page_map_tELb1EE14realloc_vectorIS1_TnPN12hb_enable_ifIXsr3std28is_trivially_copy_assignableIT_EE5valueEvE4typeELPv0EEEPS1_j11hb_priorityILj0EE.exit.i.i + store ptr %call.i.i.i, ptr %arrayZ.i.i, align 8 store i32 %new_allocated.028.i.i, ptr %page_map, align 8 br label %if.end.i3 @@ -2164,14 +2155,14 @@ if.end.i3: ; preds = %_ZN11hb_vector_tIN1 br i1 %cmp3.i5, label %if.then6.i, label %if.end24 if.then6.i: ; preds = %if.end.i3 - %sub.i.i = sub nuw i32 %cond.i, %15 + %sub.i.i = sub nuw nsw i32 %cond.i, %15 %mul.i.i = shl i32 %sub.i.i, 3 %tobool.not.i.i9.i = icmp eq i32 %mul.i.i, 0 br i1 %tobool.not.i.i9.i, label %if.end24, label %if.end.i.i.i if.end.i.i.i: ; preds = %if.then6.i %16 = load ptr, ptr %arrayZ.i.i, align 8 - %idx.ext.i.i = zext i32 %15 to i64 + %idx.ext.i.i = zext nneg i32 %15 to i64 %add.ptr.i.i = getelementptr inbounds nuw %"struct.hb_bit_set_t::page_map_t", ptr %16, i64 %idx.ext.i.i %conv.i.i.i = zext i32 %mul.i.i to i64 tail call void @llvm.memset.p0.i64(ptr align 1 %add.ptr.i.i, i8 0, i64 %conv.i.i.i, i1 false) @@ -2260,8 +2251,8 @@ if.else.i: ; preds = %if.end.i while.body.i: ; preds = %if.else.i, %while.body.i %new_allocated.133.i = phi i32 [ %add15.i, %while.body.i ], [ %0, %if.else.i ] %shr14.i = lshr i32 %new_allocated.133.i, 1 - %add.i = add i32 %new_allocated.133.i, 8 - %add15.i = add i32 %add.i, %shr14.i + %add.i = add nuw i32 %new_allocated.133.i, 8 + %add15.i = add nuw i32 %add.i, %shr14.i %cmp13.i = icmp ugt i32 %cond, %add15.i br i1 %cmp13.i, label %while.body.i, label %lor.rhs.i, !llvm.loop !28 @@ -2312,7 +2303,7 @@ if.end: ; preds = %if.then28.i, %if.el br i1 %brmerge.not, label %if.then6, label %if.end15 if.then6: ; preds = %if.end - %sub.i = sub nuw i32 %cond, %5 + %sub.i = sub nuw nsw i32 %cond, %5 %mul.i = mul i32 %sub.i, 72 %tobool.not.i.i9 = icmp eq i32 %mul.i, 0 br i1 %tobool.not.i.i9, label %if.end15, label %if.end.i.i @@ -2320,7 +2311,7 @@ if.then6: ; preds = %if.end if.end.i.i: ; preds = %if.then6 %arrayZ.i = getelementptr inbounds nuw i8, ptr %this, i64 8 %6 = load ptr, ptr %arrayZ.i, align 8 - %idx.ext.i = zext i32 %5 to i64 + %idx.ext.i = zext nneg i32 %5 to i64 %add.ptr.i = getelementptr inbounds nuw %struct.hb_bit_page_t, ptr %6, i64 %idx.ext.i %conv.i.i10 = zext i32 %mul.i to i64 tail call void @llvm.memset.p0.i64(ptr align 1 %add.ptr.i, i8 0, i64 %conv.i.i10, i1 false) diff --git a/bench/hdf5/optimized/H5FDint.ll b/bench/hdf5/optimized/H5FDint.ll index 8f0b685d0a2..ae6d5dbb79f 100644 --- a/bench/hdf5/optimized/H5FDint.ll +++ b/bench/hdf5/optimized/H5FDint.ll @@ -835,7 +835,7 @@ define range(i32 -1, -2147483648) i32 @H5FD_write(ptr noundef %0, i32 noundef %1 } ; Function Attrs: nounwind uwtable -define i32 @H5FD_read_vector(ptr noundef %0, i32 noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5) local_unnamed_addr #0 { +define range(i32 -1, -2147483648) i32 @H5FD_read_vector(ptr noundef %0, i32 noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5) local_unnamed_addr #0 { %7 = alloca %struct.H5_user_cb_state_t, align 8 %8 = alloca %struct.H5_user_cb_state_t, align 8 %9 = alloca i32, align 4 @@ -910,14 +910,12 @@ define i32 @H5FD_read_vector(ptr noundef %0, i32 noundef %1, ptr noundef %2, ptr br i1 %41, label %.preheader186, label %.preheader187.preheader .preheader187.preheader: ; preds = %.loopexit - %umax = tail call i32 @llvm.umax.i32(i32 %1, i32 1) - %wide.trip.count257 = zext i32 %umax to i64 + %umax = zext i32 %1 to i64 br label %.preheader187 .preheader186: ; preds = %.loopexit %42 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %umax261 = tail call i32 @llvm.umax.i32(i32 %1, i32 1) - %wide.trip.count262 = zext i32 %umax261 to i64 + %umax261 = zext i32 %1 to i64 br label %43 43: ; preds = %.preheader186, %91 @@ -1246,7 +1244,7 @@ declare i32 @H5CX_get_no_selection_io_cause(ptr noundef) local_unnamed_addr #2 declare void @H5CX_set_no_selection_io_cause(i32 noundef) local_unnamed_addr #2 ; Function Attrs: nounwind uwtable -define i32 @H5FD_write_vector(ptr noundef %0, i32 noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5) local_unnamed_addr #0 { +define range(i32 -1, -2147483648) i32 @H5FD_write_vector(ptr noundef %0, i32 noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5) local_unnamed_addr #0 { %7 = alloca %struct.H5_user_cb_state_t, align 8 %8 = alloca %struct.H5_user_cb_state_t, align 8 %9 = alloca i32, align 4 @@ -1315,8 +1313,7 @@ define i32 @H5FD_write_vector(ptr noundef %0, i32 noundef %1, ptr noundef %2, pt .loopexit: ; preds = %.preheader156, %31 %38 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %umax = tail call i32 @llvm.umax.i32(i32 %1, i32 1) - %wide.trip.count221 = zext i32 %umax to i64 + %umax = zext i32 %1 to i64 br label %39 39: ; preds = %.loopexit, %87 @@ -1717,8 +1714,7 @@ define i32 @H5FD_read_selection(ptr noundef %0, i32 noundef %1, i32 noundef %2, br i1 %.not130, label %57, label %.preheader158.preheader .preheader158.preheader: ; preds = %56 - %umax = call i32 @llvm.umax.i32(i32 %2, i32 1) - %wide.trip.count183 = zext i32 %umax to i64 + %umax = zext i32 %2 to i64 br label %.preheader158 57: ; preds = %56 @@ -2687,7 +2683,7 @@ define internal fastcc i32 @H5FD__read_selection_translate(i32 noundef range(i32 declare ptr @H5MM_xfree(ptr noundef) local_unnamed_addr #2 ; Function Attrs: nounwind uwtable -define i32 @H5FD_read_selection_id(i32 noundef %0, ptr noundef %1, i32 noundef %2, i32 noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8) local_unnamed_addr #0 { +define range(i32 -1, -2147483648) i32 @H5FD_read_selection_id(i32 noundef %0, ptr noundef %1, i32 noundef %2, i32 noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8) local_unnamed_addr #0 { %10 = alloca [8 x ptr], align 16 %11 = alloca [8 x ptr], align 16 %12 = alloca %struct.H5_user_cb_state_t, align 8 @@ -2795,8 +2791,7 @@ define i32 @H5FD_read_selection_id(i32 noundef %0, ptr noundef %1, i32 noundef % br i1 %.not117, label %60, label %.preheader155.preheader .preheader155.preheader: ; preds = %59 - %umax = call i32 @llvm.umax.i32(i32 %3, i32 1) - %wide.trip.count170 = zext i32 %umax to i64 + %umax = zext i32 %3 to i64 br label %.preheader155 60: ; preds = %59 @@ -3119,8 +3114,7 @@ define i32 @H5FD_write_selection(ptr noundef %0, i32 noundef %1, i32 noundef %2, br i1 %.not125, label %53, label %.preheader148.preheader .preheader148.preheader: ; preds = %52 - %umax = call i32 @llvm.umax.i32(i32 %2, i32 1) - %wide.trip.count172 = zext i32 %umax to i64 + %umax = zext i32 %2 to i64 br label %.preheader148 53: ; preds = %52 @@ -3290,7 +3284,7 @@ define i32 @H5FD_write_selection(ptr noundef %0, i32 noundef %1, i32 noundef %2, 146: ; preds = %.thread133, %140, %142, %136, %116, %95, %84, %77 %.2114 = phi ptr [ null, %77 ], [ %75, %84 ], [ %.1113, %95 ], [ %.1113, %116 ], [ %.1113, %136 ], [ %.1113, %142 ], [ %.1113, %140 ], [ %.1113, %.thread133 ] %.2111 = phi ptr [ %10, %77 ], [ null, %84 ], [ %.1110, %95 ], [ %.1110, %116 ], [ %.1110, %136 ], [ %.1110, %142 ], [ %.1110, %140 ], [ %.1110, %.thread133 ] - %.1106 = phi i32 [ 0, %77 ], [ 0, %84 ], [ %96, %95 ], [ %108, %116 ], [ %umax, %136 ], [ %umax, %142 ], [ %umax, %140 ], [ %umax, %.thread133 ] + %.1106 = phi i32 [ 0, %77 ], [ 0, %84 ], [ %96, %95 ], [ %108, %116 ], [ %2, %136 ], [ %2, %142 ], [ %2, %140 ], [ %2, %.thread133 ] %.3 = phi i32 [ -1, %77 ], [ -1, %84 ], [ -1, %95 ], [ -1, %116 ], [ -1, %136 ], [ %128, %142 ], [ %128, %140 ], [ -1, %.thread133 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #12 br label %154 @@ -4077,7 +4071,7 @@ define internal fastcc i32 @H5FD__write_selection_translate(i32 noundef range(i3 } ; Function Attrs: nounwind uwtable -define i32 @H5FD_write_selection_id(i32 noundef %0, ptr noundef %1, i32 noundef %2, i32 noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8) local_unnamed_addr #0 { +define range(i32 -1, -2147483648) i32 @H5FD_write_selection_id(i32 noundef %0, ptr noundef %1, i32 noundef %2, i32 noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8) local_unnamed_addr #0 { %10 = alloca [8 x ptr], align 16 %11 = alloca [8 x ptr], align 16 %12 = alloca %struct.H5_user_cb_state_t, align 8 @@ -4178,8 +4172,7 @@ define i32 @H5FD_write_selection_id(i32 noundef %0, ptr noundef %1, i32 noundef br i1 %.not112, label %56, label %.preheader145.preheader .preheader145.preheader: ; preds = %55 - %umax = call i32 @llvm.umax.i32(i32 %3, i32 1) - %wide.trip.count159 = zext i32 %umax to i64 + %umax = zext i32 %3 to i64 br label %.preheader145 56: ; preds = %55 diff --git a/bench/hermes/optimized/BytecodeGenerator.ll b/bench/hermes/optimized/BytecodeGenerator.ll index 82ecf352987..a0f1f8dfddb 100644 --- a/bench/hermes/optimized/BytecodeGenerator.ll +++ b/bench/hermes/optimized/BytecodeGenerator.ll @@ -9423,7 +9423,7 @@ for.body.i.i.i: ; preds = %if.then.i.i, %for.b store ptr inttoptr (i64 -8 to ptr), ptr %B.04.i.i.i, align 8 %incdec.ptr.i.i.i = getelementptr inbounds nuw i8, ptr %B.04.i.i.i, i64 16 %cmp.not.i.i.i = icmp eq ptr %incdec.ptr.i.i.i, %add.ptr.i.i.i.i - br i1 %cmp.not.i.i.i, label %_ZN4llvh12DenseMapBaseINS_8DenseMapIPN6hermes8FunctionESt10unique_ptrINS2_3hbc25BytecodeFunctionGeneratorESt14default_deleteIS7_EENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_SA_EEEES4_SA_SC_SF_E4growEj.exit, label %for.body.i.i.i, !llvm.loop !256 + br i1 %cmp.not.i.i.i, label %if.end.i.i9, label %for.body.i.i.i, !llvm.loop !256 if.end.i.i: ; preds = %if.then %idx.ext.i.i = zext i32 %1 to i64 @@ -9432,22 +9432,19 @@ if.end.i.i: ; preds = %if.then tail call void @_ZdlPv(ptr noundef nonnull %2) #20 %.pr.pre = load i32, ptr %NumBuckets.i.i, align 8 %.pre = load ptr, ptr %this, align 8 - br label %_ZN4llvh12DenseMapBaseINS_8DenseMapIPN6hermes8FunctionESt10unique_ptrINS2_3hbc25BytecodeFunctionGeneratorESt14default_deleteIS7_EENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_SA_EEEES4_SA_SC_SF_E4growEj.exit - -_ZN4llvh12DenseMapBaseINS_8DenseMapIPN6hermes8FunctionESt10unique_ptrINS2_3hbc25BytecodeFunctionGeneratorESt14default_deleteIS7_EENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_SA_EEEES4_SA_SC_SF_E4growEj.exit: ; preds = %for.body.i.i.i, %if.end.i.i - %5 = phi ptr [ %.pre, %if.end.i.i ], [ %call.i.i.i, %for.body.i.i.i ] - %.pr = phi i32 [ %.pr.pre, %if.end.i.i ], [ %4, %for.body.i.i.i ] - %cmp.i.i = icmp eq i32 %.pr, 0 + %cmp.i.i = icmp eq i32 %.pr.pre, 0 br i1 %cmp.i.i, label %if.end12, label %if.end.i.i9 -if.end.i.i9: ; preds = %_ZN4llvh12DenseMapBaseINS_8DenseMapIPN6hermes8FunctionESt10unique_ptrINS2_3hbc25BytecodeFunctionGeneratorESt14default_deleteIS7_EENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_SA_EEEES4_SA_SC_SF_E4growEj.exit +if.end.i.i9: ; preds = %for.body.i.i.i, %_ZN4llvh12DenseMapBaseINS_8DenseMapIPN6hermes8FunctionESt10unique_ptrINS2_3hbc25BytecodeFunctionGeneratorESt14default_deleteIS7_EENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_SA_EEEES4_SA_SC_SF_E4growEj.exit + %.pr102 = phi i32 [ %.pr.pre, %_ZN4llvh12DenseMapBaseINS_8DenseMapIPN6hermes8FunctionESt10unique_ptrINS2_3hbc25BytecodeFunctionGeneratorESt14default_deleteIS7_EENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_SA_EEEES4_SA_SC_SF_E4growEj.exit ], [ %4, %for.body.i.i.i ] + %5 = phi ptr [ %.pre, %_ZN4llvh12DenseMapBaseINS_8DenseMapIPN6hermes8FunctionESt10unique_ptrINS2_3hbc25BytecodeFunctionGeneratorESt14default_deleteIS7_EENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_SA_EEEES4_SA_SC_SF_E4growEj.exit ], [ %call.i.i.i, %for.body.i.i.i ] %6 = load ptr, ptr %Lookup, align 8 %7 = ptrtoint ptr %6 to i64 %conv.i.i.i.i = trunc i64 %7 to i32 %shr.i.i.i.i = lshr i32 %conv.i.i.i.i, 4 %shr2.i.i.i.i = lshr i32 %conv.i.i.i.i, 9 %xor.i.i.i.i = xor i32 %shr.i.i.i.i, %shr2.i.i.i.i - %sub.i.i10 = add i32 %.pr, -1 + %sub.i.i10 = add i32 %.pr102, -1 %BucketNo.019.i.i = and i32 %xor.i.i.i.i, %sub.i.i10 %idx.ext20.i.i = zext nneg i32 %BucketNo.019.i.i to i64 %add.ptr21.i.i = getelementptr inbounds nuw %"struct.llvh::detail::DenseMapPair.366", ptr %5, i64 %idx.ext20.i.i @@ -9532,7 +9529,7 @@ for.body.i.i.i43: ; preds = %if.then.i.i37, %for store ptr inttoptr (i64 -8 to ptr), ptr %B.04.i.i.i44, align 8 %incdec.ptr.i.i.i45 = getelementptr inbounds nuw i8, ptr %B.04.i.i.i44, i64 16 %cmp.not.i.i.i46 = icmp eq ptr %incdec.ptr.i.i.i45, %add.ptr.i.i.i.i41 - br i1 %cmp.not.i.i.i46, label %_ZN4llvh12DenseMapBaseINS_8DenseMapIPN6hermes8FunctionESt10unique_ptrINS2_3hbc25BytecodeFunctionGeneratorESt14default_deleteIS7_EENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_SA_EEEES4_SA_SC_SF_E4growEj.exit47, label %for.body.i.i.i43, !llvm.loop !256 + br i1 %cmp.not.i.i.i46, label %if.end.i.i50, label %for.body.i.i.i43, !llvm.loop !256 if.end.i.i34: ; preds = %if.then10 %idx.ext.i.i35 = zext i32 %1 to i64 @@ -9541,22 +9538,19 @@ if.end.i.i34: ; preds = %if.then10 tail call void @_ZdlPv(ptr noundef nonnull %12) #20 %.pr85.pre = load i32, ptr %NumBuckets.i.i, align 8 %.pre99 = load ptr, ptr %this, align 8 - br label %_ZN4llvh12DenseMapBaseINS_8DenseMapIPN6hermes8FunctionESt10unique_ptrINS2_3hbc25BytecodeFunctionGeneratorESt14default_deleteIS7_EENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_SA_EEEES4_SA_SC_SF_E4growEj.exit47 - -_ZN4llvh12DenseMapBaseINS_8DenseMapIPN6hermes8FunctionESt10unique_ptrINS2_3hbc25BytecodeFunctionGeneratorESt14default_deleteIS7_EENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_SA_EEEES4_SA_SC_SF_E4growEj.exit47: ; preds = %for.body.i.i.i43, %if.end.i.i34 - %15 = phi ptr [ %.pre99, %if.end.i.i34 ], [ %call.i.i.i32, %for.body.i.i.i43 ] - %.pr85 = phi i32 [ %.pr85.pre, %if.end.i.i34 ], [ %14, %for.body.i.i.i43 ] - %cmp.i.i49 = icmp eq i32 %.pr85, 0 + %cmp.i.i49 = icmp eq i32 %.pr85.pre, 0 br i1 %cmp.i.i49, label %if.end12, label %if.end.i.i50 -if.end.i.i50: ; preds = %_ZN4llvh12DenseMapBaseINS_8DenseMapIPN6hermes8FunctionESt10unique_ptrINS2_3hbc25BytecodeFunctionGeneratorESt14default_deleteIS7_EENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_SA_EEEES4_SA_SC_SF_E4growEj.exit47 +if.end.i.i50: ; preds = %for.body.i.i.i43, %_ZN4llvh12DenseMapBaseINS_8DenseMapIPN6hermes8FunctionESt10unique_ptrINS2_3hbc25BytecodeFunctionGeneratorESt14default_deleteIS7_EENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_SA_EEEES4_SA_SC_SF_E4growEj.exit47 + %.pr85105 = phi i32 [ %.pr85.pre, %_ZN4llvh12DenseMapBaseINS_8DenseMapIPN6hermes8FunctionESt10unique_ptrINS2_3hbc25BytecodeFunctionGeneratorESt14default_deleteIS7_EENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_SA_EEEES4_SA_SC_SF_E4growEj.exit47 ], [ %14, %for.body.i.i.i43 ] + %15 = phi ptr [ %.pre99, %_ZN4llvh12DenseMapBaseINS_8DenseMapIPN6hermes8FunctionESt10unique_ptrINS2_3hbc25BytecodeFunctionGeneratorESt14default_deleteIS7_EENS_12DenseMapInfoIS4_EENS_6detail12DenseMapPairIS4_SA_EEEES4_SA_SC_SF_E4growEj.exit47 ], [ %call.i.i.i32, %for.body.i.i.i43 ] %16 = load ptr, ptr %Lookup, align 8 %17 = ptrtoint ptr %16 to i64 %conv.i.i.i.i51 = trunc i64 %17 to i32 %shr.i.i.i.i52 = lshr i32 %conv.i.i.i.i51, 4 %shr2.i.i.i.i53 = lshr i32 %conv.i.i.i.i51, 9 %xor.i.i.i.i54 = xor i32 %shr.i.i.i.i52, %shr2.i.i.i.i53 - %sub.i.i55 = add i32 %.pr85, -1 + %sub.i.i55 = add i32 %.pr85105, -1 %BucketNo.019.i.i56 = and i32 %xor.i.i.i.i54, %sub.i.i55 %idx.ext20.i.i57 = zext nneg i32 %BucketNo.019.i.i56 to i64 %add.ptr21.i.i58 = getelementptr inbounds nuw %"struct.llvh::detail::DenseMapPair.366", ptr %15, i64 %idx.ext20.i.i57 diff --git a/bench/hermes/optimized/Passes.ll b/bench/hermes/optimized/Passes.ll index 744a8792d62..593f33658f7 100644 --- a/bench/hermes/optimized/Passes.ll +++ b/bench/hermes/optimized/Passes.ll @@ -2894,7 +2894,7 @@ for.body.i.i: ; preds = %if.then.i160, %for. store i32 -1, ptr %B.04.i.i, align 4 %incdec.ptr.i.i = getelementptr inbounds nuw i8, ptr %B.04.i.i, i64 16 %cmp.not.i.i165 = icmp eq ptr %incdec.ptr.i.i, %add.ptr.i.i.i164 - br i1 %cmp.not.i.i165, label %_ZN4llvh8DenseMapIjPN6hermes11InstructionENS_12DenseMapInfoIjEENS_6detail12DenseMapPairIjS3_EEE4growEj.exit, label %for.body.i.i, !llvm.loop !49 + br i1 %cmp.not.i.i165, label %if.end.i.i.i102, label %for.body.i.i, !llvm.loop !49 if.end.i129: ; preds = %if.then.i100 %idx.ext.i = zext i32 %18 to i64 @@ -2986,17 +2986,14 @@ _ZN4llvh12DenseMapBaseINS_8DenseMapIjPN6hermes11InstructionENS_12DenseMapInfoIjE call void @_ZdlPv(ptr noundef nonnull %19) #13 %.pr.pre = load i32, ptr %NumBuckets.i.i.i.i.i, align 8 %.pre214 = load ptr, ptr %regToInstMap, align 8 - br label %_ZN4llvh8DenseMapIjPN6hermes11InstructionENS_12DenseMapInfoIjEENS_6detail12DenseMapPairIjS3_EEE4growEj.exit - -_ZN4llvh8DenseMapIjPN6hermes11InstructionENS_12DenseMapInfoIjEENS_6detail12DenseMapPairIjS3_EEE4growEj.exit: ; preds = %for.body.i.i, %_ZN4llvh12DenseMapBaseINS_8DenseMapIjPN6hermes11InstructionENS_12DenseMapInfoIjEENS_6detail12DenseMapPairIjS4_EEEEjS4_S6_S9_E18moveFromOldBucketsEPS9_SC_.exit.i - %35 = phi ptr [ %.pre214, %_ZN4llvh12DenseMapBaseINS_8DenseMapIjPN6hermes11InstructionENS_12DenseMapInfoIjEENS_6detail12DenseMapPairIjS4_EEEEjS4_S6_S9_E18moveFromOldBucketsEPS9_SC_.exit.i ], [ %call.i.i, %for.body.i.i ] - %.pr = phi i32 [ %.pr.pre, %_ZN4llvh12DenseMapBaseINS_8DenseMapIjPN6hermes11InstructionENS_12DenseMapInfoIjEENS_6detail12DenseMapPairIjS4_EEEEjS4_S6_S9_E18moveFromOldBucketsEPS9_SC_.exit.i ], [ %25, %for.body.i.i ] - %cmp.i.i.i101 = icmp eq i32 %.pr, 0 + %cmp.i.i.i101 = icmp eq i32 %.pr.pre, 0 br i1 %cmp.i.i.i101, label %if.end12.i, label %if.end.i.i.i102 -if.end.i.i.i102: ; preds = %_ZN4llvh8DenseMapIjPN6hermes11InstructionENS_12DenseMapInfoIjEENS_6detail12DenseMapPairIjS3_EEE4growEj.exit +if.end.i.i.i102: ; preds = %for.body.i.i, %_ZN4llvh8DenseMapIjPN6hermes11InstructionENS_12DenseMapInfoIjEENS_6detail12DenseMapPairIjS3_EEE4growEj.exit + %.pr218 = phi i32 [ %.pr.pre, %_ZN4llvh8DenseMapIjPN6hermes11InstructionENS_12DenseMapInfoIjEENS_6detail12DenseMapPairIjS3_EEE4growEj.exit ], [ %25, %for.body.i.i ] + %35 = phi ptr [ %.pre214, %_ZN4llvh8DenseMapIjPN6hermes11InstructionENS_12DenseMapInfoIjEENS_6detail12DenseMapPairIjS3_EEE4growEj.exit ], [ %call.i.i, %for.body.i.i ] %mul.i.i.i.i.i103 = mul i32 %call28, 37 - %sub.i.i.i104 = add i32 %.pr, -1 + %sub.i.i.i104 = add i32 %.pr218, -1 %BucketNo.019.i.i.i105 = and i32 %sub.i.i.i104, %mul.i.i.i.i.i103 %idx.ext20.i.i.i106 = zext i32 %BucketNo.019.i.i.i105 to i64 %add.ptr21.i.i.i107 = getelementptr inbounds nuw %"struct.llvh::detail::DenseMapPair", ptr %35, i64 %idx.ext20.i.i.i106 diff --git a/bench/hermes/optimized/String.ll b/bench/hermes/optimized/String.ll index 970703f28f9..114ad4c92ce 100644 --- a/bench/hermes/optimized/String.ll +++ b/bench/hermes/optimized/String.ll @@ -9363,18 +9363,11 @@ if.end109: ; preds = %if.end.i.i.i.i.i.i. store ptr %runtime, ptr %ref.tmp7.sroa.47.8.index_.i.i.i.i.sroa_idx.i, align 8, !alias.scope !211 %hasVal.i.i.i = getelementptr inbounds nuw i8, ptr %builder, i64 24 %add.ptr.i52 = getelementptr inbounds nuw i16, ptr %1, i64 %conv.i.i - %cmp115.not144 = icmp eq i32 %2, 0 - br i1 %upperCase, label %if.then111, label %if.else136 - -if.then111: ; preds = %if.end109 - br i1 %cmp115.not144, label %cleanup, label %for.body116.lr.ph - -for.body116.lr.ph: ; preds = %if.then111 %index_12.i = getelementptr inbounds nuw i8, ptr %builder, i64 8 - br label %for.body116 + br i1 %upperCase, label %for.body116, label %if.else136 -for.body116: ; preds = %for.body116.lr.ph, %_ZN6hermes2vm13StringBuilder15appendCharacterEDs.exit - %__begin5.0145 = phi ptr [ %1, %for.body116.lr.ph ], [ %incdec.ptr134, %_ZN6hermes2vm13StringBuilder15appendCharacterEDs.exit ] +for.body116: ; preds = %if.end109, %_ZN6hermes2vm13StringBuilder15appendCharacterEDs.exit + %__begin5.0145 = phi ptr [ %incdec.ptr134, %_ZN6hermes2vm13StringBuilder15appendCharacterEDs.exit ], [ %1, %if.end109 ] %22 = load i16, ptr %__begin5.0145, align 2 %23 = add i16 %22, -97 %24 = icmp ult i16 %23, 26 @@ -9470,15 +9463,8 @@ _ZN6hermes2vm13StringBuilder15appendCharacterEDs.exit: ; preds = %_ZN6hermes2vm1 %cmp115.not = icmp eq ptr %incdec.ptr134, %add.ptr.i52 br i1 %cmp115.not, label %cleanup, label %for.body116 -if.else136: ; preds = %if.end109 - br i1 %cmp115.not144, label %cleanup, label %for.body144.lr.ph - -for.body144.lr.ph: ; preds = %if.else136 - %index_12.i72 = getelementptr inbounds nuw i8, ptr %builder, i64 8 - br label %for.body144 - -for.body144: ; preds = %for.body144.lr.ph, %_ZN6hermes2vm13StringBuilder15appendCharacterEDs.exit102 - %__begin5138.0143 = phi ptr [ %1, %for.body144.lr.ph ], [ %incdec.ptr161, %_ZN6hermes2vm13StringBuilder15appendCharacterEDs.exit102 ] +if.else136: ; preds = %if.end109, %_ZN6hermes2vm13StringBuilder15appendCharacterEDs.exit102 + %__begin5138.0143 = phi ptr [ %incdec.ptr161, %_ZN6hermes2vm13StringBuilder15appendCharacterEDs.exit102 ], [ %1, %if.end109 ] %31 = load i16, ptr %__begin5138.0143, align 2 %32 = add i16 %31, -65 %33 = icmp ult i16 %32, 26 @@ -9524,9 +9510,9 @@ if.else8.i.i89: ; preds = %if.else.i.i86 _ZN6hermes2vm15StringPrimitive26castToASCIIPointerForWriteEv.exit.i91: ; preds = %if.else8.i.i89, %if.then5.i.i97, %if.then.i.i99 %retval.0.i.i92 = phi ptr [ %call.i.i.i101, %if.then.i.i99 ], [ %add.ptr.i.i.i.i.i98, %if.then5.i.i97 ], [ %add.ptr.i.i.i1.i.i90, %if.else8.i.i89 ] - %37 = load i32, ptr %index_12.i72, align 8 + %37 = load i32, ptr %index_12.i, align 8 %inc.i94 = add i32 %37, 1 - store i32 %inc.i94, ptr %index_12.i72, align 8 + store i32 %inc.i94, ptr %index_12.i, align 8 %idxprom.i95 = zext i32 %37 to i64 %arrayidx.i96 = getelementptr inbounds nuw i8, ptr %retval.0.i.i92, i64 %idxprom.i95 store i8 %conv4.i84, ptr %arrayidx.i96, align 1 @@ -9560,9 +9546,9 @@ if.else8.i10.i68: ; preds = %if.else.i7.i65 _ZN6hermes2vm15StringPrimitive26castToUTF16PointerForWriteEv.exit.i70: ; preds = %if.else8.i10.i68, %if.then5.i13.i76, %if.then.i15.i78 %retval.0.i12.i71 = phi ptr [ %38, %if.then.i15.i78 ], [ %add.ptr.i.i.i.i14.i77, %if.then5.i13.i76 ], [ %add.ptr.i.i.i1.i11.i69, %if.else8.i10.i68 ] - %39 = load i32, ptr %index_12.i72, align 8 + %39 = load i32, ptr %index_12.i, align 8 %inc13.i73 = add i32 %39, 1 - store i32 %inc13.i73, ptr %index_12.i72, align 8 + store i32 %inc13.i73, ptr %index_12.i, align 8 %idxprom14.i74 = zext i32 %39 to i64 %arrayidx15.i75 = getelementptr inbounds nuw i16, ptr %retval.0.i12.i71, i64 %idxprom14.i74 store i16 %or157, ptr %arrayidx15.i75, align 2 @@ -9574,7 +9560,7 @@ _ZN6hermes2vm13StringBuilder15appendCharacterEDs.exit102: ; preds = %_ZN6hermes2 %cmp143.not = icmp eq ptr %incdec.ptr161, %add.ptr.i52 br i1 %cmp143.not, label %cleanup, label %for.body144 -cleanup: ; preds = %_ZN6hermes2vm13StringBuilder15appendCharacterEDs.exit102, %_ZN6hermes2vm13StringBuilder15appendCharacterEDs.exit, %if.then111, %if.else136 +cleanup: ; preds = %_ZN6hermes2vm13StringBuilder15appendCharacterEDs.exit102, %_ZN6hermes2vm13StringBuilder15appendCharacterEDs.exit %40 = load i64, ptr %builder, align 8 %41 = inttoptr i64 %40 to ptr %retval.sroa.0.0.copyload.i.i.i = load i64, ptr %41, align 8 diff --git a/bench/hyperscan/optimized/ComponentRepeat.ll b/bench/hyperscan/optimized/ComponentRepeat.ll index 614eb4ce9e5..d7da41ed72c 100644 --- a/bench/hyperscan/optimized/ComponentRepeat.ll +++ b/bench/hyperscan/optimized/ComponentRepeat.ll @@ -3036,38 +3036,41 @@ land.lhs.true.i.i.i.i: ; preds = %while.end.i.i.i.i br i1 %cmp19.i.i.i.i, label %if.then20.i.i.i.i, label %if.end33.i.i.i.i if.then20.i.i.i.i: ; preds = %land.lhs.true.i.i.i.i - %add21.i.i.i.i = shl nsw i64 %__holeIndex.addr.0.lcssa.i.i.i.i, 1 + %add21.i.i.i.i = shl nuw nsw i64 %__holeIndex.addr.0.lcssa.i.i.i.i, 1 %sub24.i.i.i.i = or disjoint i64 %add21.i.i.i.i, 1 - %add.ptr.i20.i.i.i.i = getelementptr inbounds %"class.ue2::PositionInfo", ptr %__first.coerce, i64 %sub24.i.i.i.i + %add.ptr.i20.i.i.i.i = getelementptr inbounds nuw %"class.ue2::PositionInfo", ptr %__first.coerce, i64 %sub24.i.i.i.i %add.ptr.i21.i.i.i.i = getelementptr inbounds %"class.ue2::PositionInfo", ptr %__first.coerce, i64 %__holeIndex.addr.0.lcssa.i.i.i.i %5 = load i64, ptr %add.ptr.i20.i.i.i.i, align 4 store i64 %5, ptr %add.ptr.i21.i.i.i.i, align 4 - br label %if.end33.i.i.i.i + br label %land.rhs.i.i.i.i.i -if.end33.i.i.i.i: ; preds = %if.then20.i.i.i.i, %land.lhs.true.i.i.i.i, %while.end.i.i.i.i - %__holeIndex.addr.1.i.i.i.i = phi i64 [ %sub24.i.i.i.i, %if.then20.i.i.i.i ], [ %__holeIndex.addr.0.lcssa.i.i.i.i, %land.lhs.true.i.i.i.i ], [ %__holeIndex.addr.0.lcssa.i.i.i.i, %while.end.i.i.i.i ] - %__value.sroa.0.0.extract.trunc.i.i.i.i.i = trunc i64 %__value.sroa.0.0.copyload.i.i.i to i32 - %cmp16.i.i.i.i.i = icmp sgt i64 %__holeIndex.addr.1.i.i.i.i, 0 - br i1 %cmp16.i.i.i.i.i, label %land.rhs.i.i.i.i.i, label %_ZSt10__pop_heapIN9__gnu_cxx17__normal_iteratorIPN3ue212PositionInfoESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_less_iterEEvT_SB_SB_RT0_.exit.i.i +if.end33.i.i.i.i: ; preds = %land.lhs.true.i.i.i.i, %while.end.i.i.i.i + %__holeIndex.addr.1.i.i.i.i = icmp eq i64 %__holeIndex.addr.0.lcssa.i.i.i.i, 0 + br i1 %__holeIndex.addr.1.i.i.i.i, label %_ZSt10__pop_heapIN9__gnu_cxx17__normal_iteratorIPN3ue212PositionInfoESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_less_iterEEvT_SB_SB_RT0_.exit.i.i, label %land.rhs.i.i.preheader.i.i.i -land.rhs.i.i.i.i.i: ; preds = %if.end33.i.i.i.i, %while.body.i.i.i.i.i - %__holeIndex.addr.017.i.i.i.i.i = phi i64 [ %__parent.018.i.i34.i.i.i, %while.body.i.i.i.i.i ], [ %__holeIndex.addr.1.i.i.i.i, %if.end33.i.i.i.i ] +land.rhs.i.i.i.i.i: ; preds = %if.end33.i.i.i.i, %if.then20.i.i.i.i + %__holeIndex.addr.017.i.i.i.i.i = phi i64 [ %sub24.i.i.i.i, %if.then20.i.i.i.i ], [ %__holeIndex.addr.0.lcssa.i.i.i.i, %if.end33.i.i.i.i ] + %__value.sroa.0.0.extract.trunc.i.i9.i.i.i = trunc i64 %__value.sroa.0.0.copyload.i.i.i to i32 + br label %land.rhs.i.i.i.i.i + +land.rhs.i.i.i.i.i: ; preds = %while.body.i.i.i.i.i, %land.rhs.i.i.preheader.i.i.i + %__holeIndex.addr.017.i.i.i.i.i = phi i64 [ %__parent.018.i.i34.i.i.i, %while.body.i.i.i.i.i ], [ %__holeIndex.addr.1.i8.i.i.i, %land.rhs.i.i.preheader.i.i.i ] %__parent.018.in.i.i.i.i.i = add nsw i64 %__holeIndex.addr.017.i.i.i.i.i, -1 %__parent.018.i.i34.i.i.i = lshr i64 %__parent.018.in.i.i.i.i.i, 1 %add.ptr.i.i.i.i.i.i = getelementptr inbounds nuw %"class.ue2::PositionInfo", ptr %__first.coerce, i64 %__parent.018.i.i34.i.i.i %6 = load i32, ptr %add.ptr.i.i.i.i.i.i, align 4 - %cmp.i.i.i.i.i.i.i = icmp ult i32 %6, %__value.sroa.0.0.extract.trunc.i.i.i.i.i + %cmp.i.i.i.i.i.i.i = icmp ult i32 %6, %__value.sroa.0.0.extract.trunc.i.i9.i.i.i br i1 %cmp.i.i.i.i.i.i.i, label %while.body.i.i.i.i.i, label %_ZSt10__pop_heapIN9__gnu_cxx17__normal_iteratorIPN3ue212PositionInfoESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_less_iterEEvT_SB_SB_RT0_.exit.i.i while.body.i.i.i.i.i: ; preds = %land.rhs.i.i.i.i.i - %add.ptr.i8.i.i.i.i.i = getelementptr inbounds nuw %"class.ue2::PositionInfo", ptr %__first.coerce, i64 %__holeIndex.addr.017.i.i.i.i.i + %add.ptr.i8.i.i.i.i.i = getelementptr inbounds %"class.ue2::PositionInfo", ptr %__first.coerce, i64 %__holeIndex.addr.017.i.i.i.i.i %7 = load i64, ptr %add.ptr.i.i.i.i.i.i, align 4 store i64 %7, ptr %add.ptr.i8.i.i.i.i.i, align 4 %cmp.i.i.not.i.i.i = icmp ult i64 %__parent.018.in.i.i.i.i.i, 2 br i1 %cmp.i.i.not.i.i.i, label %_ZSt10__pop_heapIN9__gnu_cxx17__normal_iteratorIPN3ue212PositionInfoESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_less_iterEEvT_SB_SB_RT0_.exit.i.i, label %land.rhs.i.i.i.i.i, !llvm.loop !35 _ZSt10__pop_heapIN9__gnu_cxx17__normal_iteratorIPN3ue212PositionInfoESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_less_iterEEvT_SB_SB_RT0_.exit.i.i: ; preds = %while.body.i.i.i.i.i, %land.rhs.i.i.i.i.i, %if.end33.i.i.i.i - %__holeIndex.addr.0.lcssa.i.i.i.i.i = phi i64 [ %__holeIndex.addr.1.i.i.i.i, %if.end33.i.i.i.i ], [ %__holeIndex.addr.017.i.i.i.i.i, %land.rhs.i.i.i.i.i ], [ 0, %while.body.i.i.i.i.i ] + %__holeIndex.addr.0.lcssa.i.i.i.i.i = phi i64 [ 0, %if.end33.i.i.i.i ], [ %__holeIndex.addr.017.i.i.i.i.i, %land.rhs.i.i.i.i.i ], [ 0, %while.body.i.i.i.i.i ] %add.ptr.i9.i.i.i.i.i = getelementptr inbounds %"class.ue2::PositionInfo", ptr %__first.coerce, i64 %__holeIndex.addr.0.lcssa.i.i.i.i.i store i64 %__value.sroa.0.0.copyload.i.i.i, ptr %add.ptr.i9.i.i.i.i.i, align 4 %cmp.i.i = icmp sgt i64 %sub.ptr.sub.i.i.i.i, 8 diff --git a/bench/hyperscan/optimized/mcclellancompile.ll b/bench/hyperscan/optimized/mcclellancompile.ll index feb3079a476..d4271b15a34 100644 --- a/bench/hyperscan/optimized/mcclellancompile.ll +++ b/bench/hyperscan/optimized/mcclellancompile.ll @@ -4142,7 +4142,7 @@ for.body.i.i: ; preds = %_ZNSt6vectorIS_ItSa store i64 %or.i.i.i, ptr %add.ptr.i.i.i135.i, align 8 %incdec.ptr.i29.i.i = getelementptr inbounds nuw i8, ptr %__begin2.sroa.0.079.i.i, i64 2 %cmp.i.not.i.i = icmp eq ptr %incdec.ptr.i29.i.i, %165 - br i1 %cmp.i.not.i.i, label %invoke.cont77.i, label %for.body.i.i + br i1 %cmp.i.not.i.i, label %if.then79.i, label %for.body.i.i do.end13.i.i: ; preds = %invoke.cont75.i %168 = load ptr, ptr %wide_state_chain.i, align 8 @@ -4204,7 +4204,7 @@ for.end.i.i.i.i.i: ; preds = %for.end.loopexit.i. %sub.ptr.sub.i29.pre-phi.i.i.i.i.i = phi i64 [ %.pre71.i.i.i.i.i, %for.end.loopexit.i.i.i.i.i ], [ %sub.ptr.sub.i.i.i.i.i115.i, %do.end13.i.i ] %__first.sroa.0.0.lcssa.i.i.i.i.i = phi ptr [ %scevgep.i.i.i.i.i, %for.end.loopexit.i.i.i.i.i ], [ %168, %do.end13.i.i ] %sub.ptr.div.i30.i.i.i.i.i = sdiv exact i64 %sub.ptr.sub.i29.pre-phi.i.i.i.i.i, 24 - switch i64 %sub.ptr.div.i30.i.i.i.i.i, label %invoke.cont77.i [ + switch i64 %sub.ptr.div.i30.i.i.i.i.i, label %cleanup.i [ i64 3, label %sw.bb.i.i.i.i.i i64 2, label %sw.bb32.i.i.i.i.i i64 1, label %sw.bb39.i.i.i.i.i @@ -4254,7 +4254,7 @@ sw.bb39.i.i.i.i.i: ; preds = %if.end37.i.i.i.i.i, "_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPSt6vectorItSaItEES2_IS4_SaIS4_EEEEZN3ue2L19store_chain_longestERS7_RS4_RN5boost14dynamic_bitsetImSaImEEEbE3$_0ET_SI_SI_T0_.exit.i.i": ; preds = %for.body.i.i.i.i.i, %"_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPSt6vectorItSaItEES2_IS4_SaIS4_EEEEZN3ue2L19store_chain_longestERS7_RS4_RN5boost14dynamic_bitsetImSaImEEEbE3$_0ET_SI_SI_T0_.exit.i.i.loopexit.split.loop.exit", %"_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPSt6vectorItSaItEES2_IS4_SaIS4_EEEEZN3ue2L19store_chain_longestERS7_RS4_RN5boost14dynamic_bitsetImSaImEEEbE3$_0ET_SI_SI_T0_.exit.i.i.loopexit.split.loop.exit786", %"_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPSt6vectorItSaItEES2_IS4_SaIS4_EEEEZN3ue2L19store_chain_longestERS7_RS4_RN5boost14dynamic_bitsetImSaImEEEbE3$_0ET_SI_SI_T0_.exit.i.i.loopexit.split.loop.exit788", %sw.bb39.i.i.i.i.i, %sw.bb32.i.i.i.i.i, %sw.bb.i.i.i.i.i %retval.sroa.0.0.in.sroa.speculated.i.i.i.i.i = phi ptr [ %__first.sroa.0.0.lcssa.i.i.i.i.i, %sw.bb.i.i.i.i.i ], [ %__first.sroa.0.1.i.i.i.i.i, %sw.bb32.i.i.i.i.i ], [ %spec.select.i.i.i.i.i, %sw.bb39.i.i.i.i.i ], [ %incdec.ptr.i.i.i.i.i.i.le, %"_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPSt6vectorItSaItEES2_IS4_SaIS4_EEEEZN3ue2L19store_chain_longestERS7_RS4_RN5boost14dynamic_bitsetImSaImEEEbE3$_0ET_SI_SI_T0_.exit.i.i.loopexit.split.loop.exit" ], [ %incdec.ptr.i18.i.i.i.i.i.le, %"_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPSt6vectorItSaItEES2_IS4_SaIS4_EEEEZN3ue2L19store_chain_longestERS7_RS4_RN5boost14dynamic_bitsetImSaImEEEbE3$_0ET_SI_SI_T0_.exit.i.i.loopexit.split.loop.exit786" ], [ %incdec.ptr.i22.i.i.i.i.i.le, %"_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPSt6vectorItSaItEES2_IS4_SaIS4_EEEEZN3ue2L19store_chain_longestERS7_RS4_RN5boost14dynamic_bitsetImSaImEEEbE3$_0ET_SI_SI_T0_.exit.i.i.loopexit.split.loop.exit788" ], [ %__first.sroa.0.063.i.i.i.i.i, %for.body.i.i.i.i.i ] %cmp.i32.i.i = icmp eq ptr %retval.sroa.0.0.in.sroa.speculated.i.i.i.i.i, %169 - br i1 %cmp.i32.i.i, label %invoke.cont77.i, label %if.end29.i.i + br i1 %cmp.i32.i.i, label %cleanup.i, label %if.end29.i.i if.end29.i.i: ; preds = %"_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPSt6vectorItSaItEES2_IS4_SaIS4_EEEEZN3ue2L19store_chain_longestERS7_RS4_RN5boost14dynamic_bitsetImSaImEEEbE3$_0ET_SI_SI_T0_.exit.i.i" %_M_finish.i33.i.i = getelementptr inbounds nuw i8, ptr %retval.sroa.0.0.in.sroa.speculated.i.i.i.i.i, i64 8 @@ -4269,7 +4269,7 @@ if.end29.i.i: ; preds = %"_ZSt7find_ifIN9__g %conv33.i.i = and i32 %175, 65535 %conv34.i.i = and i32 %174, 65535 %cmp.i117.i = icmp samesign ugt i32 %conv33.i.i, %conv34.i.i - br i1 %cmp.i117.i, label %for.cond36.preheader.i.i, label %invoke.cont77.i + br i1 %cmp.i117.i, label %for.cond36.preheader.i.i, label %cleanup.i for.cond36.preheader.i.i: ; preds = %if.end29.i.i %conv37.i.i = and i64 %sub.ptr.div.i.i112.i, 65535 @@ -4401,7 +4401,7 @@ _ZNSt12_Vector_baseItSaItEE13_M_deallocateEPtm.exit.i.i: ; preds = %if.then.i6.i %add.ptr.i359.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i363.i, i64 %sub.ptr.sub.i.i111.i store ptr %add.ptr.i359.i, ptr %_M_finish.i33.i.i, align 8 store ptr %add.ptr.i359.i, ptr %_M_end_of_storage.i.i341.i, align 8 - br label %invoke.cont77.i + br label %cleanup.i if.else.i346.i: ; preds = %for.end78.i.i %187 = load ptr, ptr %_M_finish.i33.i.i, align 8 @@ -4423,11 +4423,11 @@ _ZSt4copyIN9__gnu_cxx17__normal_iteratorIPtSt6vectorItSaItEEEES2_ET0_T_S8_S7_.ex %188 = phi ptr [ %187, %if.then33.i.i ], [ %.pre.i349.i, %if.then.i.i.i.i.i.i348.i ] %add.ptr.i.i.i.i.i.i350.i = getelementptr inbounds i8, ptr %186, i64 %sub.ptr.sub.i.i111.i %tobool.not.i12.i.i = icmp eq ptr %188, %add.ptr.i.i.i.i.i.i350.i - br i1 %tobool.not.i12.i.i, label %invoke.cont77.i, label %invoke.cont.i.i.i + br i1 %tobool.not.i12.i.i, label %cleanup.i, label %invoke.cont.i.i.i invoke.cont.i.i.i: ; preds = %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPtSt6vectorItSaItEEEES2_ET0_T_S8_S7_.exit.i.i store ptr %add.ptr.i.i.i.i.i.i350.i, ptr %_M_finish.i33.i.i, align 8 - br label %invoke.cont77.i + br label %cleanup.i _ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPtSt6vectorItSaItEEEEmEvRT_T0_.exit.i.i: ; preds = %if.else.i346.i %add.ptr.i.i.i.i352.i = getelementptr inbounds i8, ptr %157, i64 %sub.ptr.sub.i9.i.i @@ -4453,12 +4453,9 @@ if.then.i.i.i.i.i.i.i.i.i.i: ; preds = %_ZSt4copyIN9__gnu_c _ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPtSt6vectorItSaItEEEES2_tET0_T_S8_S7_RSaIT1_E.exit.i.i: ; preds = %if.then.i.i.i.i.i.i.i.i.i.i, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPtSt6vectorItSaItEEEES2_ET0_T_S8_S7_.exit24.i.i %add.ptr.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %189, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i.i.i store ptr %add.ptr.i.i.i.i.i.i.i.i.i.i, ptr %_M_finish.i33.i.i, align 8 - br label %invoke.cont77.i - -invoke.cont77.i: ; preds = %for.body.i.i, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPtSt6vectorItSaItEEEES2_tET0_T_S8_S7_RSaIT1_E.exit.i.i, %invoke.cont.i.i.i, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPtSt6vectorItSaItEEEES2_ET0_T_S8_S7_.exit.i.i, %_ZNSt12_Vector_baseItSaItEE13_M_deallocateEPtm.exit.i.i, %if.end29.i.i, %"_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPSt6vectorItSaItEES2_IS4_SaIS4_EEEEZN3ue2L19store_chain_longestERS7_RS4_RN5boost14dynamic_bitsetImSaImEEEbE3$_0ET_SI_SI_T0_.exit.i.i", %for.end.i.i.i.i.i - br i1 %cmp.i.i75.not.i, label %if.then79.i, label %cleanup.i + br label %cleanup.i -if.then79.i: ; preds = %invoke.cont77.i, %_ZNSt6vectorIS_ItSaItEESaIS1_EE9push_backERKS1_.exit.i.i +if.then79.i: ; preds = %for.body.i.i, %_ZNSt6vectorIS_ItSaItEESaIS1_EE9push_backERKS1_.exit.i.i %cmp.not.i145.i = icmp eq ptr %chain_tail.sroa.6.2532.i, %chain_tail.sroa.10.2533.i br i1 %cmp.not.i145.i, label %if.else.i149.i, label %if.then.i146.i @@ -4518,10 +4515,10 @@ _ZNSt6vectorItSaItEE17_M_realloc_insertIJRKtEEEvN9__gnu_cxx17__normal_iteratorIP %add.ptr19.i.i169.i = getelementptr inbounds nuw i16, ptr %call5.i.i.i.i.i174.i, i64 %cond.i.i.i159.i br label %cleanup.i -cleanup.i: ; preds = %_ZNSt6vectorItSaItEE17_M_realloc_insertIJRKtEEEvN9__gnu_cxx17__normal_iteratorIPtS1_EEDpOT_.exit.i168.i, %if.then.i146.i, %invoke.cont77.i, %invoke.cont45.i - %chain_tail.sroa.0.5.i = phi ptr [ %chain_tail.sroa.0.2531.i, %invoke.cont45.i ], [ %chain_tail.sroa.0.2531.i, %invoke.cont77.i ], [ %call5.i.i.i.i.i174.i, %_ZNSt6vectorItSaItEE17_M_realloc_insertIJRKtEEEvN9__gnu_cxx17__normal_iteratorIPtS1_EEDpOT_.exit.i168.i ], [ %chain_tail.sroa.0.2531.i, %if.then.i146.i ] - %chain_tail.sroa.6.4.i = phi ptr [ %chain_tail.sroa.6.2532.i, %invoke.cont45.i ], [ %chain_tail.sroa.6.2532.i, %invoke.cont77.i ], [ %incdec.ptr.i.i165.i, %_ZNSt6vectorItSaItEE17_M_realloc_insertIJRKtEEEvN9__gnu_cxx17__normal_iteratorIPtS1_EEDpOT_.exit.i168.i ], [ %incdec.ptr.i147.i, %if.then.i146.i ] - %chain_tail.sroa.10.4.i = phi ptr [ %chain_tail.sroa.10.2533.i, %invoke.cont45.i ], [ %chain_tail.sroa.10.2533.i, %invoke.cont77.i ], [ %add.ptr19.i.i169.i, %_ZNSt6vectorItSaItEE17_M_realloc_insertIJRKtEEEvN9__gnu_cxx17__normal_iteratorIPtS1_EEDpOT_.exit.i168.i ], [ %chain_tail.sroa.10.2533.i, %if.then.i146.i ] +cleanup.i: ; preds = %_ZNSt6vectorItSaItEE17_M_realloc_insertIJRKtEEEvN9__gnu_cxx17__normal_iteratorIPtS1_EEDpOT_.exit.i168.i, %if.then.i146.i, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPtSt6vectorItSaItEEEES2_tET0_T_S8_S7_RSaIT1_E.exit.i.i, %invoke.cont.i.i.i, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPtSt6vectorItSaItEEEES2_ET0_T_S8_S7_.exit.i.i, %_ZNSt12_Vector_baseItSaItEE13_M_deallocateEPtm.exit.i.i, %if.end29.i.i, %"_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPSt6vectorItSaItEES2_IS4_SaIS4_EEEEZN3ue2L19store_chain_longestERS7_RS4_RN5boost14dynamic_bitsetImSaImEEEbE3$_0ET_SI_SI_T0_.exit.i.i", %for.end.i.i.i.i.i, %invoke.cont45.i + %chain_tail.sroa.0.5.i = phi ptr [ %chain_tail.sroa.0.2531.i, %invoke.cont45.i ], [ %call5.i.i.i.i.i174.i, %_ZNSt6vectorItSaItEE17_M_realloc_insertIJRKtEEEvN9__gnu_cxx17__normal_iteratorIPtS1_EEDpOT_.exit.i168.i ], [ %chain_tail.sroa.0.2531.i, %if.then.i146.i ], [ %chain_tail.sroa.0.2531.i, %if.end29.i.i ], [ %chain_tail.sroa.0.2531.i, %"_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPSt6vectorItSaItEES2_IS4_SaIS4_EEEEZN3ue2L19store_chain_longestERS7_RS4_RN5boost14dynamic_bitsetImSaImEEEbE3$_0ET_SI_SI_T0_.exit.i.i" ], [ %chain_tail.sroa.0.2531.i, %for.end.i.i.i.i.i ], [ %chain_tail.sroa.0.2531.i, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPtSt6vectorItSaItEEEES2_tET0_T_S8_S7_RSaIT1_E.exit.i.i ], [ %chain_tail.sroa.0.2531.i, %invoke.cont.i.i.i ], [ %chain_tail.sroa.0.2531.i, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPtSt6vectorItSaItEEEES2_ET0_T_S8_S7_.exit.i.i ], [ %chain_tail.sroa.0.2531.i, %_ZNSt12_Vector_baseItSaItEE13_M_deallocateEPtm.exit.i.i ] + %chain_tail.sroa.6.4.i = phi ptr [ %chain_tail.sroa.6.2532.i, %invoke.cont45.i ], [ %incdec.ptr.i.i165.i, %_ZNSt6vectorItSaItEE17_M_realloc_insertIJRKtEEEvN9__gnu_cxx17__normal_iteratorIPtS1_EEDpOT_.exit.i168.i ], [ %incdec.ptr.i147.i, %if.then.i146.i ], [ %chain_tail.sroa.6.2532.i, %if.end29.i.i ], [ %chain_tail.sroa.6.2532.i, %"_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPSt6vectorItSaItEES2_IS4_SaIS4_EEEEZN3ue2L19store_chain_longestERS7_RS4_RN5boost14dynamic_bitsetImSaImEEEbE3$_0ET_SI_SI_T0_.exit.i.i" ], [ %chain_tail.sroa.6.2532.i, %for.end.i.i.i.i.i ], [ %chain_tail.sroa.6.2532.i, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPtSt6vectorItSaItEEEES2_tET0_T_S8_S7_RSaIT1_E.exit.i.i ], [ %chain_tail.sroa.6.2532.i, %invoke.cont.i.i.i ], [ %chain_tail.sroa.6.2532.i, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPtSt6vectorItSaItEEEES2_ET0_T_S8_S7_.exit.i.i ], [ %chain_tail.sroa.6.2532.i, %_ZNSt12_Vector_baseItSaItEE13_M_deallocateEPtm.exit.i.i ] + %chain_tail.sroa.10.4.i = phi ptr [ %chain_tail.sroa.10.2533.i, %invoke.cont45.i ], [ %add.ptr19.i.i169.i, %_ZNSt6vectorItSaItEE17_M_realloc_insertIJRKtEEEvN9__gnu_cxx17__normal_iteratorIPtS1_EEDpOT_.exit.i168.i ], [ %chain_tail.sroa.10.2533.i, %if.then.i146.i ], [ %chain_tail.sroa.10.2533.i, %if.end29.i.i ], [ %chain_tail.sroa.10.2533.i, %"_ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPSt6vectorItSaItEES2_IS4_SaIS4_EEEEZN3ue2L19store_chain_longestERS7_RS4_RN5boost14dynamic_bitsetImSaImEEEbE3$_0ET_SI_SI_T0_.exit.i.i" ], [ %chain_tail.sroa.10.2533.i, %for.end.i.i.i.i.i ], [ %chain_tail.sroa.10.2533.i, %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPtSt6vectorItSaItEEEES2_tET0_T_S8_S7_RSaIT1_E.exit.i.i ], [ %chain_tail.sroa.10.2533.i, %invoke.cont.i.i.i ], [ %chain_tail.sroa.10.2533.i, %_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPtSt6vectorItSaItEEEES2_ET0_T_S8_S7_.exit.i.i ], [ %chain_tail.sroa.10.2533.i, %_ZNSt12_Vector_baseItSaItEE13_M_deallocateEPtm.exit.i.i ] %192 = load ptr, ptr %temp_chain.i, align 8 %tobool.not.i.i.i177.i = icmp eq ptr %192, null br i1 %tobool.not.i.i.i177.i, label %for.inc82.i, label %if.then.i.i.i178.i @@ -11133,7 +11130,7 @@ _ZNSt8_Rb_treeIttSt9_IdentityItESt4lessItESaItEE10_M_insert_IRKtNS5_11_Alloc_nod br label %_ZNSt3setItSt4lessItESaItEE6insertERKt.exit _ZNSt3setItSt4lessItESaItEE6insertERKt.exit: ; preds = %if.end12.i.i.i, %_ZNSt8_Rb_treeIttSt9_IdentityItESt4lessItESaItEE10_M_insert_IRKtNS5_11_Alloc_nodeEEESt17_Rb_tree_iteratorItEPSt18_Rb_tree_node_baseSD_OT_RT0_.exit.i.i - %call.i.i.i.i5 = tail call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef %__begin1.sroa.0.09) #29 + %call.i.i.i.i5 = tail call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef nonnull %__begin1.sroa.0.09) #29 %cmp.i.i.i.i.not = icmp eq ptr %call.i.i.i.i5, %add.ptr.i.i.i.i.i.i.i br i1 %cmp.i.i.i.i.not, label %for.end, label %for.body diff --git a/bench/hyperscan/optimized/mcsheng_compile.ll b/bench/hyperscan/optimized/mcsheng_compile.ll index b407c11a2fe..a1fbae39935 100644 --- a/bench/hyperscan/optimized/mcsheng_compile.ll +++ b/bench/hyperscan/optimized/mcsheng_compile.ll @@ -2775,7 +2775,7 @@ _ZNK3ue29ue2_graphINS_9RdfaGraphENS_15RdfaVertexPropsENS_13RdfaEdgePropsEE15dele br i1 %cmp.i.i.not.i.i.i.i.i.i, label %_ZNK3ue29ue2_graphINS_9RdfaGraphENS_15RdfaVertexPropsENS_13RdfaEdgePropsEE15delete_disposerclINS4_11vertex_nodeEEEvPKT_.exit.i.i.i, label %_ZNK3ue29ue2_graphINS_9RdfaGraphENS_15RdfaVertexPropsENS_13RdfaEdgePropsEE15delete_disposerclINS4_9edge_nodeEEEvPKT_.exit.i.i.i.i.i.i, !llvm.loop !109 _ZNK3ue29ue2_graphINS_9RdfaGraphENS_15RdfaVertexPropsENS_13RdfaEdgePropsEE15delete_disposerclINS4_11vertex_nodeEEEvPKT_.exit.i.i.i: ; preds = %_ZNK3ue29ue2_graphINS_9RdfaGraphENS_15RdfaVertexPropsENS_13RdfaEdgePropsEE15delete_disposerclINS4_9edge_nodeEEEvPKT_.exit.i.i.i.i.i.i, %delete.notnull.i.i.i.i - call void @_ZdlPv(ptr noundef %it.sroa.0.06.i.i.i) #25 + call void @_ZdlPv(ptr noundef nonnull %it.sroa.0.06.i.i.i) #25 %cmp.i.i.not.i.i.i = icmp eq ptr %138, %m_header.i.i.i.i.i br i1 %cmp.i.i.not.i.i.i, label %_ZN3ue29RdfaGraphD2Ev.exit, label %delete.notnull.i.i.i.i, !llvm.loop !110 @@ -4825,7 +4825,7 @@ _ZNSt6vectorIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_9RdfaGrap br label %for.inc for.inc: ; preds = %_ZNSt6vectorIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_9RdfaGraphENS0_15RdfaVertexPropsENS0_13RdfaEdgePropsEEEEESaIS8_EE17_M_realloc_insertIJRKS8_EEEvN9__gnu_cxx17__normal_iteratorIPS8_SA_EEDpOT_.exit.i, %if.then.i16 - %call.i = call noundef ptr @_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base(ptr noundef %__begin0.sroa.0.071) #28 + %call.i = call noundef ptr @_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base(ptr noundef nonnull %__begin0.sroa.0.071) #28 %cmp.i.not = icmp eq ptr %call.i, %0 br i1 %cmp.i.not, label %for.end, label %for.body @@ -5565,7 +5565,7 @@ _ZNK3ue29ue2_graphINS_9RdfaGraphENS_15RdfaVertexPropsENS_13RdfaEdgePropsEE15dele br i1 %cmp.i.i.not.i.i.i.i.i, label %_ZNK3ue29ue2_graphINS_9RdfaGraphENS_15RdfaVertexPropsENS_13RdfaEdgePropsEE15delete_disposerclINS4_11vertex_nodeEEEvPKT_.exit.i.i, label %_ZNK3ue29ue2_graphINS_9RdfaGraphENS_15RdfaVertexPropsENS_13RdfaEdgePropsEE15delete_disposerclINS4_9edge_nodeEEEvPKT_.exit.i.i.i.i.i, !llvm.loop !109 _ZNK3ue29ue2_graphINS_9RdfaGraphENS_15RdfaVertexPropsENS_13RdfaEdgePropsEE15delete_disposerclINS4_11vertex_nodeEEEvPKT_.exit.i.i: ; preds = %_ZNK3ue29ue2_graphINS_9RdfaGraphENS_15RdfaVertexPropsENS_13RdfaEdgePropsEE15delete_disposerclINS4_9edge_nodeEEEvPKT_.exit.i.i.i.i.i, %delete.notnull.i.i.i - tail call void @_ZdlPv(ptr noundef %it.sroa.0.06.i.i) #25 + tail call void @_ZdlPv(ptr noundef nonnull %it.sroa.0.06.i.i) #25 %cmp.i.i.not.i.i = icmp eq ptr %1, %m_header.i.i.i.i br i1 %cmp.i.i.not.i.i, label %_ZN3ue29ue2_graphINS_9RdfaGraphENS_15RdfaVertexPropsENS_13RdfaEdgePropsEED2Ev.exit, label %delete.notnull.i.i.i, !llvm.loop !110 @@ -10600,7 +10600,16 @@ lor.lhs.false.us: ; preds = %for.cond51.for.end_ if.then75.us: ; preds = %lor.lhs.false.us, %for.cond51.for.end_crit_edge.us %conv76.us = trunc i32 %spec.select.us to i16 %cmp78.us = icmp eq i32 %spec.select.us, %conv29.pre-phi - br i1 %cmp78.us, label %for.end85, label %for.inc82.us + br i1 %cmp78.us, label %for.end85.thread71, label %for.inc82.us + +for.end85.thread71: ; preds = %if.then75.us + %daddy74 = getelementptr inbounds nuw i8, ptr %add.ptr.i, i64 24 + store i16 %43, ptr %daddy74, align 8 + %extra75 = getelementptr inbounds nuw i8, ptr %info, i64 24 + %extra.val5076 = load ptr, ptr %extra75, align 8 + %add.ptr.i5777 = getelementptr inbounds nuw %"struct.ue2::(anonymous namespace)::dstate_extra", ptr %extra.val5076, i64 %conv38 + store i16 %conv76.us, ptr %add.ptr.i5777, align 2 + br label %if.end93 for.body55.us: ; preds = %if.end47.us, %for.body55.us %indvars.iv = phi i64 [ 0, %if.end47.us ], [ %indvars.iv.next, %for.body55.us ] @@ -10637,20 +10646,20 @@ for.end85.thread: ; preds = %invoke.cont, %invok store i16 0, ptr %add.ptr.i5769, align 2 br label %cleanup -for.end85: ; preds = %for.inc82.us, %if.then75.us - %best_daddy.1 = phi i16 [ %best_daddy.2.us, %for.inc82.us ], [ %43, %if.then75.us ] - %best_score.1 = phi i16 [ %best_score.2.us, %for.inc82.us ], [ %conv76.us, %if.then75.us ] +for.end85: ; preds = %for.inc82.us %daddy = getelementptr inbounds nuw i8, ptr %add.ptr.i, i64 24 - store i16 %best_daddy.1, ptr %daddy, align 8 + store i16 %best_daddy.2.us, ptr %daddy, align 8 %extra = getelementptr inbounds nuw i8, ptr %info, i64 24 %extra.val50 = load ptr, ptr %extra, align 8 %add.ptr.i57 = getelementptr inbounds nuw %"struct.ue2::(anonymous namespace)::dstate_extra", ptr %extra.val50, i64 %conv38 - store i16 %best_score.1, ptr %add.ptr.i57, align 2 - %cmp91 = icmp eq i16 %best_daddy.1, 0 + store i16 %best_score.2.us, ptr %add.ptr.i57, align 2 + %cmp91 = icmp eq i16 %best_daddy.2.us, 0 br i1 %cmp91, label %cleanup, label %if.end93 -if.end93: ; preds = %for.end85 - %conv94 = zext i16 %best_score.1 to i32 +if.end93: ; preds = %for.end85.thread71, %for.end85 + %conv94 = phi ptr [ %extra75, %for.end85.thread71 ], [ %extra, %for.end85 ] + %best_score.179 = phi i16 [ %conv76.us, %for.end85.thread71 ], [ %best_score.2.us, %for.end85 ] + %conv94 = zext i16 %best_score.179 to i32 %add96 = add nuw nsw i32 %cond, %conv94 %cmp98 = icmp samesign ult i32 %add96, %conv29.pre-phi br i1 %cmp98, label %cleanup, label %if.end100 @@ -10684,7 +10693,7 @@ for.end120: ; preds = %for.body106 br i1 %cmp121, label %cleanup, label %if.end126 if.end126: ; preds = %for.end120 - %info.val = load ptr, ptr %extra, align 8 + %info.val = load ptr, ptr %extra80, align 8 %sheng_id.i = getelementptr inbounds nuw %"struct.ue2::(anonymous namespace)::dstate_extra", ptr %info.val, i64 %conv38, i32 3 %56 = load i8, ptr %sheng_id.i, align 2 %cmp.i61.not = icmp eq i8 %56, -1 diff --git a/bench/icu/optimized/normalizer2impl.ll b/bench/icu/optimized/normalizer2impl.ll index 8cbb7e71efd..7540c55db85 100644 --- a/bench/icu/optimized/normalizer2impl.ll +++ b/bench/icu/optimized/normalizer2impl.ll @@ -983,7 +983,7 @@ for.cond.i: ; preds = %for.cond.i.preheade for.end.i: ; preds = %for.cond.i %28 = load ptr, ptr %limit.i.i, align 8 - %cmp3.i = icmp ult i32 %c.0, 65536 + %cmp3.i = icmp samesign ult i32 %c.0, 65536 %cond.i = select i1 %cmp3.i, i64 1, i64 2 %add.ptr.i41 = getelementptr inbounds nuw i16, ptr %28, i64 %cond.i store ptr %add.ptr.i41, ptr %limit.i.i, align 8 @@ -1001,17 +1001,16 @@ do.body.i: ; preds = %do.body.i, %for.end br i1 %cmp6.not.i, label %do.end.i, label %do.body.i, !llvm.loop !8 do.end.i: ; preds = %do.body.i - %cmp.i7.i = icmp slt i32 %c.0, 65536 - br i1 %cmp.i7.i, label %if.then.i8.i, label %if.else.i.i + br i1 %cmp3.i, label %if.then.i8.i, label %if.else.i.i if.then.i8.i: ; preds = %do.end.i - %conv.i.i = trunc i32 %c.0 to i16 + %conv.i.i = trunc nuw i32 %c.0 to i16 br label %_ZN6icu_7516ReorderingBuffer14writeCodePointEPDsi.exit.i if.else.i.i: ; preds = %do.end.i %shr.i.i = lshr i32 %c.0, 10 %31 = trunc i32 %shr.i.i to i16 - %conv1.i.i = add i16 %31, -10304 + %conv1.i.i = add nsw i16 %31, -10304 %32 = trunc i32 %c.0 to i16 %33 = and i16 %32, 1023 %conv2.i.i = or disjoint i16 %33, -9216 diff --git a/bench/image-rs/optimized/8143hfqbwzfmz2f.ll b/bench/image-rs/optimized/8143hfqbwzfmz2f.ll index b43a5fa9a30..b3c156e0430 100644 --- a/bench/image-rs/optimized/8143hfqbwzfmz2f.ll +++ b/bench/image-rs/optimized/8143hfqbwzfmz2f.ll @@ -28333,9 +28333,12 @@ define internal fastcc void @_ZN5image6codecs3dxt17decode_dxt_colors17h47d8c1f2a br label %86 .thread: ; preds = %86, %.preheader - %59 = add nsw i64 %3, -3 - %60 = udiv i64 %59, %28 - %61 = add nuw nsw i64 %60, 1 + %59 = trunc nuw nsw i64 %3 to i8 + %60 = add nsw i8 %59, -3 + %61 = trunc nuw nsw i64 %28 to i8 + %60 = udiv i8 %.lhs.trunc, %.rhs.trunc + %.zext = zext i8 %60 to i64 + %61 = add nuw nsw i64 %.zext, 1 br label %75 .preheader: ; preds = %27, %.preheader diff --git a/bench/imgui/optimized/imgui_draw.ll b/bench/imgui/optimized/imgui_draw.ll index 80ba72de4ad..191fa609c6d 100644 --- a/bench/imgui/optimized/imgui_draw.ll +++ b/bench/imgui/optimized/imgui_draw.ll @@ -5084,15 +5084,11 @@ if.end4.i: ; preds = %if.then2.i, %if.end %.pre114 = load ptr, ptr %_Data, align 8 br label %_ZN8ImVectorI6ImVec2E15reserve_discardEi.exit -_ZN8ImVectorI6ImVec2E15reserve_discardEi.exit: ; preds = %for.end, %if.end4.i +_ZN8ImVectorI6ImVec2E15reserve_discardEi.exit: ; preds = %if.end4.i, %for.end %12 = phi ptr [ %9, %for.end ], [ %.pre114, %if.end4.i ] %Data = getelementptr inbounds nuw i8, ptr %12, i64 56 %13 = load ptr, ptr %Data, align 8 %sub25 = add nsw i32 %points_count, -1 - %cmp2790 = icmp sgt i32 %points_count, 0 - br i1 %cmp2790, label %for.body28.preheader, label %for.end163 - -for.body28.preheader: ; preds = %_ZN8ImVectorI6ImVec2E15reserve_discardEi.exit %wide.trip.count = zext nneg i32 %points_count to i64 br label %for.body28 @@ -5249,7 +5245,7 @@ if.end80: ; preds = %if.then74, %for.bod %exitcond107.not = icmp eq i64 %indvars.iv.next103, %wide.trip.count106 br i1 %exitcond107.not, label %for.end163, label %for.body57, !llvm.loop !21 -for.end163: ; preds = %if.end80, %_ZN8ImVectorI6ImVec2E15reserve_discardEi.exit +for.end163: ; preds = %if.end80 %conv165 = and i32 %mul7, 65534 %48 = load i32, ptr %_VtxCurrentIdx, align 4 %add167 = add i32 %48, %conv165 @@ -5266,10 +5262,6 @@ for.body175.lr.ph: ; preds = %if.end br label %for.body175 for.cond192.preheader: ; preds = %for.body175 - %cmp19398 = icmp sgt i32 %points_count, 2 - br i1 %cmp19398, label %for.body194.lr.ph, label %for.end214 - -for.body194.lr.ph: ; preds = %for.cond192.preheader %_VtxCurrentIdx195 = getelementptr inbounds nuw i8, ptr %this, i64 52 %_IdxWritePtr197 = getelementptr inbounds nuw i8, ptr %this, i64 80 %.pre116 = load ptr, ptr %_IdxWritePtr197, align 8 @@ -5320,7 +5312,7 @@ for.body194: ; preds = %for.body194.lr.ph, %exitcond113.not = icmp eq i32 %inc213, %points_count br i1 %exitcond113.not, label %for.end214, label %for.body194, !llvm.loop !23 -for.end214: ; preds = %for.body194, %for.cond192.preheader +for.end214: ; preds = %for.body194 %conv216 = and i32 %points_count, 65535 %_VtxCurrentIdx217 = getelementptr inbounds nuw i8, ptr %this, i64 52 %63 = load i32, ptr %_VtxCurrentIdx217, align 4 @@ -28445,7 +28437,7 @@ for.body192: ; preds = %for.body192.prehead for.end200: ; preds = %for.body192 %58 = trunc nuw nsw i64 %indvars.iv.next392 to i32 %add201 = add nuw nsw i32 %58, 5 - %cmp202.not = icmp slt i32 %add201, %sp.0373 + %cmp202.not = icmp samesign ult i32 %add201, %sp.0373 br i1 %cmp202.not, label %if.end204, label %return if.end204: ; preds = %for.end200 diff --git a/bench/ipopt/optimized/IpCompoundMatrix.ll b/bench/ipopt/optimized/IpCompoundMatrix.ll index 78484a35a29..322d4eabc36 100644 --- a/bench/ipopt/optimized/IpCompoundMatrix.ll +++ b/bench/ipopt/optimized/IpCompoundMatrix.ll @@ -4375,12 +4375,7 @@ _ZNSt12_Vector_baseIiSaIiEEC2EmRKS0_.exit.thread.i: ; preds = %_ZNSt6vectorIiSaI _ZNSt6vectorIiSaIiEE17_S_check_init_lenEmRKS0_.exit.i20: ; preds = %.loopexit tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %28, i8 0, i64 24, i1 false) %.not.i.i.i.i21 = icmp eq i32 %2, 0 - br i1 %.not.i.i.i.i21, label %_ZNSt6vectorIN5Ipopt8SmartPtrIKNS0_11MatrixSpaceEEESaIS4_EE17_S_check_init_lenEmRKS5_.exit.i.thread, label %32 - -_ZNSt6vectorIN5Ipopt8SmartPtrIKNS0_11MatrixSpaceEEESaIS4_EE17_S_check_init_lenEmRKS5_.exit.i.thread: ; preds = %_ZNSt6vectorIiSaIiEE17_S_check_init_lenEmRKS0_.exit.i20 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(25) %28, i8 0, i64 25, i1 false) - store i64 0, ptr %6, align 8 - br label %42 + br i1 %.not.i.i.i.i21, label %_ZNSt12_Vector_baseIN5Ipopt8SmartPtrIKNS0_11MatrixSpaceEEESaIS4_EEC2EmRKS5_.exit.thread.i, label %32 32: ; preds = %_ZNSt6vectorIiSaIiEE17_S_check_init_lenEmRKS0_.exit.i20 %33 = shl nuw nsw i64 %29, 2 @@ -4402,6 +4397,11 @@ _ZNSt6vectorIN5Ipopt8SmartPtrIKNS0_11MatrixSpaceEEESaIS4_EE17_S_check_init_lenEm %40 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %39) #21 to label %.noexc32 unwind label %.thread +_ZNSt12_Vector_baseIN5Ipopt8SmartPtrIKNS0_11MatrixSpaceEEESaIS4_EEC2EmRKS5_.exit.thread.i: ; preds = %_ZNSt6vectorIiSaIiEE17_S_check_init_lenEmRKS0_.exit.i20 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(25) %28, i8 0, i64 25, i1 false) + store i64 0, ptr %6, align 8 + br label %42 + .noexc32: ; preds = %.noexc28 store ptr %40, ptr %6, align 8 %41 = getelementptr inbounds nuw %"class.Ipopt::SmartPtr", ptr %40, i64 %29 @@ -4409,9 +4409,9 @@ _ZNSt6vectorIN5Ipopt8SmartPtrIKNS0_11MatrixSpaceEEESaIS4_EE17_S_check_init_lenEm %scevgep.i.i.i.i.i = getelementptr i8, ptr %40, i64 %39 br label %42 -42: ; preds = %.noexc32, %_ZNSt6vectorIN5Ipopt8SmartPtrIKNS0_11MatrixSpaceEEESaIS4_EE17_S_check_init_lenEmRKS5_.exit.i.thread - %.sink.i = phi ptr [ null, %_ZNSt6vectorIN5Ipopt8SmartPtrIKNS0_11MatrixSpaceEEESaIS4_EE17_S_check_init_lenEmRKS5_.exit.i.thread ], [ %41, %.noexc32 ] - %.0.lcssa.i.i.i.i.i = phi ptr [ null, %_ZNSt6vectorIN5Ipopt8SmartPtrIKNS0_11MatrixSpaceEEESaIS4_EE17_S_check_init_lenEmRKS5_.exit.i.thread ], [ %scevgep.i.i.i.i.i, %.noexc32 ] +42: ; preds = %.noexc32, %_ZNSt12_Vector_baseIN5Ipopt8SmartPtrIKNS0_11MatrixSpaceEEESaIS4_EEC2EmRKS5_.exit.thread.i + %.sink.i = phi ptr [ null, %_ZNSt12_Vector_baseIN5Ipopt8SmartPtrIKNS0_11MatrixSpaceEEESaIS4_EEC2EmRKS5_.exit.thread.i ], [ %41, %.noexc32 ] + %.0.lcssa.i.i.i.i.i = phi ptr [ null, %_ZNSt12_Vector_baseIN5Ipopt8SmartPtrIKNS0_11MatrixSpaceEEESaIS4_EEC2EmRKS5_.exit.thread.i ], [ %scevgep.i.i.i.i.i, %.noexc32 ] %43 = getelementptr inbounds nuw i8, ptr %6, i64 8 %44 = getelementptr inbounds nuw i8, ptr %6, i64 16 store ptr %.sink.i, ptr %44, align 8 @@ -4440,8 +4440,9 @@ _ZNSt6vectorIN5Ipopt8SmartPtrIKNS0_11MatrixSpaceEEESaIS4_EE17_S_check_init_lenEm store ptr %56, ptr %48, align 8 store ptr %53, ptr %7, align 8 store i32 0, ptr %45, align 8 - %57 = lshr i64 %29, 6 - %58 = getelementptr inbounds nuw i64, ptr %53, i64 %57 + %57 = lshr i32 %2, 6 + %58 = zext nneg i32 %57 to i64 + %58 = getelementptr inbounds nuw i64, ptr %53, i64 %.zext %59 = and i32 %2, 63 store ptr %58, ptr %46, align 8 store i32 %59, ptr %47, align 8 diff --git a/bench/jq/optimized/lexer.ll b/bench/jq/optimized/lexer.ll index 01c815ee9b3..b1b7d7dc5de 100644 --- a/bench/jq/optimized/lexer.ll +++ b/bench/jq/optimized/lexer.ll @@ -2885,21 +2885,29 @@ define dso_local nonnull ptr @jq_yy_scan_bytes(ptr noundef readonly captures(non %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !70 -._crit_edge: ; preds = %.lr.ph, %.preheader - %12 = sext i32 %1 to i64 +._crit_edge: ; preds = %.lr.ph + %12 = zext nneg i32 %1 to i64 %13 = getelementptr i8, ptr %6, i64 %12 %14 = getelementptr i8, ptr %13, i64 1 store i8 0, ptr %14, align 1, !tbaa !37 store i8 0, ptr %13, align 1, !tbaa !37 - %15 = icmp ugt i32 %1, -3 - br i1 %15, label %19, label %16 - -16: ; preds = %._crit_edge - %17 = tail call ptr @jv_mem_alloc(i64 noundef 64) #17 - %.not27.i = icmp eq ptr %17, null - br i1 %.not27.i, label %18, label %20 + br label %19 -18: ; preds = %16 +18: ; preds = %.preheader + %15 = sext i32 %1 to i64 + %16 = getelementptr i8, ptr %6, i64 %15 + %17 = getelementptr i8, ptr %16, i64 1 + store i8 0, ptr %17, align 1, !tbaa !37 + store i8 0, ptr %16, align 1, !tbaa !37 + %18 = icmp ugt i32 %1, -3 + br i1 %18, label %22, label %19 + +19: ; preds = %._crit_edge.thread, %._crit_edge + %20 = tail call ptr @jv_mem_alloc(i64 noundef 64) #17 + %.not27.i = icmp eq ptr %20, null + br i1 %.not27.i, label %21, label %23 + +21: ; preds = %19 tail call fastcc void @yy_fatal_error(ptr noundef nonnull @.str.4) #18 unreachable @@ -2907,29 +2915,29 @@ define dso_local nonnull ptr @jq_yy_scan_bytes(ptr noundef readonly captures(non tail call fastcc void @yy_fatal_error(ptr noundef nonnull @.str.6) #18 unreachable -20: ; preds = %16 - %21 = getelementptr inbounds nuw i8, ptr %17, i64 24 +20: ; preds = %19 + %21 = getelementptr inbounds nuw i8, ptr %20, i64 24 store i32 %1, ptr %21, align 8, !tbaa !27 - %22 = getelementptr inbounds nuw i8, ptr %17, i64 8 + %22 = getelementptr inbounds nuw i8, ptr %20, i64 8 store ptr %6, ptr %22, align 8, !tbaa !29 - %23 = getelementptr inbounds nuw i8, ptr %17, i64 16 + %23 = getelementptr inbounds nuw i8, ptr %20, i64 16 store ptr %6, ptr %23, align 8, !tbaa !33 - %24 = getelementptr inbounds nuw i8, ptr %17, i64 32 + %24 = getelementptr inbounds nuw i8, ptr %20, i64 32 store i32 0, ptr %24, align 8, !tbaa !30 - store ptr null, ptr %17, align 8, !tbaa !36 - %25 = getelementptr inbounds nuw i8, ptr %17, i64 28 + store ptr null, ptr %20, align 8, !tbaa !36 + %25 = getelementptr inbounds nuw i8, ptr %20, i64 28 store i32 %1, ptr %25, align 4, !tbaa !31 - %26 = getelementptr inbounds nuw i8, ptr %17, i64 36 + %26 = getelementptr inbounds nuw i8, ptr %20, i64 36 store i32 0, ptr %26, align 4, !tbaa !58 - %27 = getelementptr inbounds nuw i8, ptr %17, i64 40 + %27 = getelementptr inbounds nuw i8, ptr %20, i64 40 store i32 1, ptr %27, align 8, !tbaa !66 - %28 = getelementptr inbounds nuw i8, ptr %17, i64 52 + %28 = getelementptr inbounds nuw i8, ptr %20, i64 52 store i32 0, ptr %28, align 4, !tbaa !55 - %29 = getelementptr inbounds nuw i8, ptr %17, i64 56 + %29 = getelementptr inbounds nuw i8, ptr %20, i64 56 store i32 0, ptr %29, align 8, !tbaa !51 - tail call void @jq_yy_switch_to_buffer(ptr noundef nonnull %17, ptr noundef %2) + tail call void @jq_yy_switch_to_buffer(ptr noundef nonnull %20, ptr noundef %2) store i32 1, ptr %24, align 8, !tbaa !30 - ret ptr %17 + ret ptr %20 } ; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read) diff --git a/bench/libevent/optimized/event_tagging.ll b/bench/libevent/optimized/event_tagging.ll index 0ad1a86668e..f0b7a0825c7 100644 --- a/bench/libevent/optimized/event_tagging.ll +++ b/bench/libevent/optimized/event_tagging.ll @@ -527,12 +527,11 @@ encode_int_internal.exit: ; preds = %3, %._crit_edge.i %39 = call i32 @evbuffer_add(ptr noundef nonnull %0, ptr noundef nonnull %5, i64 noundef %38) #7 br label %evtag_encode_tag.exit -evtag_encode_tag.exit: ; preds = %36, %37 +evtag_encode_tag.exit: ; preds = %37, %36 call void @llvm.lifetime.end.p0(i64 5, ptr nonnull %5) #7 call void @llvm.lifetime.start.p0(i64 5, ptr nonnull %4) #7 call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(5) %4, i8 0, i64 5, i1 false) - %.not23.i.i = icmp eq i32 %.020.lcssa29.i, 0 - br i1 %.not23.i.i, label %evtag_encode_int.exit, label %.lr.ph.i.i + br label %.lr.ph.i.i .lr.ph.i.i: ; preds = %evtag_encode_tag.exit, %53 %.02025.i.i = phi i32 [ %55, %53 ], [ 1, %evtag_encode_tag.exit ] @@ -578,13 +577,8 @@ evtag_encode_tag.exit: ; preds = %36, %37 %61 = add nuw i32 %.02025.i.i, 2 %62 = lshr i32 %61, 1 %63 = zext nneg i32 %62 to i64 - br label %evtag_encode_int.exit - -evtag_encode_int.exit: ; preds = %evtag_encode_tag.exit, %._crit_edge.i.i - %.020.lcssa29.i.i = phi i64 [ 1, %evtag_encode_tag.exit ], [ %63, %._crit_edge.i.i ] - %64 = phi i8 [ 0, %evtag_encode_tag.exit ], [ %60, %._crit_edge.i.i ] - store i8 %64, ptr %4, align 1 - %65 = call i32 @evbuffer_add(ptr noundef %0, ptr noundef nonnull %4, i64 noundef %.020.lcssa29.i.i) #7 + store i8 %60, ptr %4, align 1 + %64 = call i32 @evbuffer_add(ptr noundef %0, ptr noundef nonnull %4, i64 noundef %63) #7 call void @llvm.lifetime.end.p0(i64 5, ptr nonnull %4) #7 %66 = zext nneg i32 %.020.lcssa29.i to i64 %67 = call i32 @evbuffer_add(ptr noundef %0, ptr noundef nonnull %6, i64 noundef %66) #7 @@ -678,12 +672,11 @@ encode_int64_internal.exit: ; preds = %3, %._crit_edge.i %39 = call i32 @evbuffer_add(ptr noundef nonnull %0, ptr noundef nonnull %5, i64 noundef %38) #7 br label %evtag_encode_tag.exit -evtag_encode_tag.exit: ; preds = %36, %37 +evtag_encode_tag.exit: ; preds = %37, %36 call void @llvm.lifetime.end.p0(i64 5, ptr nonnull %5) #7 call void @llvm.lifetime.start.p0(i64 5, ptr nonnull %4) #7 call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(5) %4, i8 0, i64 5, i1 false) - %.not23.i.i = icmp eq i32 %.020.lcssa29.i, 0 - br i1 %.not23.i.i, label %evtag_encode_int.exit, label %.lr.ph.i.i + br label %.lr.ph.i.i .lr.ph.i.i: ; preds = %evtag_encode_tag.exit, %53 %.02025.i.i = phi i32 [ %55, %53 ], [ 1, %evtag_encode_tag.exit ] @@ -729,13 +722,8 @@ evtag_encode_tag.exit: ; preds = %36, %37 %61 = add nuw i32 %.02025.i.i, 2 %62 = lshr i32 %61, 1 %63 = zext nneg i32 %62 to i64 - br label %evtag_encode_int.exit - -evtag_encode_int.exit: ; preds = %evtag_encode_tag.exit, %._crit_edge.i.i - %.020.lcssa29.i.i = phi i64 [ 1, %evtag_encode_tag.exit ], [ %63, %._crit_edge.i.i ] - %64 = phi i8 [ 0, %evtag_encode_tag.exit ], [ %60, %._crit_edge.i.i ] - store i8 %64, ptr %4, align 1 - %65 = call i32 @evbuffer_add(ptr noundef %0, ptr noundef nonnull %4, i64 noundef %.020.lcssa29.i.i) #7 + store i8 %60, ptr %4, align 1 + %64 = call i32 @evbuffer_add(ptr noundef %0, ptr noundef nonnull %4, i64 noundef %63) #7 call void @llvm.lifetime.end.p0(i64 5, ptr nonnull %4) #7 %66 = zext nneg i32 %.020.lcssa29.i to i64 %67 = call i32 @evbuffer_add(ptr noundef %0, ptr noundef nonnull %6, i64 noundef %66) #7 @@ -1258,8 +1246,8 @@ decode_int_internal.exit: ; preds = %.preheader.i8 store i32 %.1.i, ptr %1, align 4 br label %decode_tag_internal.exit.thread -decode_tag_internal.exit.thread: ; preds = %.preheader.i, %11, %decode_tag_internal.exit, %19, %28, %22, %33, %decode_int_internal.exit, %.thread49.i, %2 - %.0 = phi i32 [ 0, %decode_int_internal.exit ], [ -1, %2 ], [ -1, %.thread49.i ], [ -1, %33 ], [ -1, %22 ], [ -1, %28 ], [ -1, %19 ], [ -1, %decode_tag_internal.exit ], [ -1, %11 ], [ -1, %.preheader.i ] +decode_tag_internal.exit.thread: ; preds = %.preheader.i, %11, %.thread49.i, %2, %decode_int_internal.exit, %decode_tag_internal.exit, %19, %28, %22, %33 + %.0 = phi i32 [ 0, %decode_int_internal.exit ], [ -1, %decode_tag_internal.exit ], [ -1, %19 ], [ -1, %28 ], [ -1, %22 ], [ -1, %33 ], [ -1, %2 ], [ -1, %.thread49.i ], [ -1, %11 ], [ -1, %.preheader.i ] ret i32 %.0 } diff --git a/bench/libjpeg-turbo/optimized/rdtarga.ll b/bench/libjpeg-turbo/optimized/rdtarga.ll index ffa5c4cf44b..63277934efe 100644 --- a/bench/libjpeg-turbo/optimized/rdtarga.ll +++ b/bench/libjpeg-turbo/optimized/rdtarga.ll @@ -874,17 +874,17 @@ define internal noundef i32 @preload_image(ptr noundef %0, ptr noundef initializ %5 = getelementptr inbounds nuw i8, ptr %0, i64 52 %6 = load i32, ptr %5, align 4, !tbaa !73 %.not28 = icmp eq i32 %6, 0 + %.not = icmp eq ptr %4, null br i1 %.not28, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %2 - %.not26 = icmp eq ptr %4, null %7 = getelementptr inbounds nuw i8, ptr %4, i64 8 %8 = getelementptr inbounds nuw i8, ptr %4, i64 16 %9 = getelementptr inbounds nuw i8, ptr %0, i64 8 %10 = getelementptr inbounds nuw i8, ptr %1, i64 80 %11 = getelementptr inbounds nuw i8, ptr %1, i64 32 %12 = getelementptr inbounds nuw i8, ptr %1, i64 128 - br i1 %.not26, label %.lr.ph.split.us, label %.lr.ph.split + br i1 %.not, label %.lr.ph.split.us, label %.lr.ph.split .lr.ph.split.us: ; preds = %.lr.ph, %.lr.ph.split.us %.027.us = phi i32 [ %20, %.lr.ph.split.us ], [ 0, %.lr.ph ] @@ -899,7 +899,7 @@ define internal noundef i32 @preload_image(ptr noundef %0, ptr noundef initializ %20 = add nuw i32 %.027.us, 1 %21 = load i32, ptr %5, align 4, !tbaa !73 %22 = icmp ult i32 %20, %21 - br i1 %22, label %.lr.ph.split.us, label %._crit_edge, !llvm.loop !81 + br i1 %22, label %.lr.ph.split.us, label %._crit_edge.thread, !llvm.loop !81 .lr.ph.split: ; preds = %.lr.ph, %.lr.ph.split %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph.split ], [ 0, %.lr.ph ] @@ -924,21 +924,19 @@ define internal noundef i32 @preload_image(ptr noundef %0, ptr noundef initializ %36 = icmp samesign ult i64 %indvars.iv.next, %35 br i1 %36, label %.lr.ph.split, label %._crit_edge.thread, !llvm.loop !81 -._crit_edge: ; preds = %.lr.ph.split.us, %2 - %.lcssa = phi i32 [ 0, %2 ], [ %21, %.lr.ph.split.us ] - %.not = icmp eq ptr %4, null - br i1 %.not, label %40, label %._crit_edge.thread +._crit_edge: ; preds = %2 + br i1 %.not, label %._crit_edge.thread, label %40 ._crit_edge.thread: ; preds = %.lr.ph.split, %._crit_edge - %.lcssa35 = phi i32 [ %.lcssa, %._crit_edge ], [ %34, %.lr.ph.split ] + %.lcssa35 = phi i32 [ 0, %._crit_edge ], [ %34, %.lr.ph.split ] %37 = getelementptr inbounds nuw i8, ptr %4, i64 32 %38 = load i32, ptr %37, align 8, !tbaa !85 %39 = add nsw i32 %38, 1 store i32 %39, ptr %37, align 8, !tbaa !85 br label %40 -40: ; preds = %._crit_edge.thread, %._crit_edge - %.lcssa36 = phi i32 [ %.lcssa35, %._crit_edge.thread ], [ %.lcssa, %._crit_edge ] +40: ; preds = %.lr.ph.split.us, %._crit_edge.thread, %._crit_edge + %.lcssa36 = phi i32 [ %.lcssa35, %._crit_edge.thread ], [ 0, %._crit_edge ], [ %21, %.lr.ph.split.us ] %41 = getelementptr inbounds nuw i8, ptr %1, i64 8 store ptr @get_memory_row, ptr %41, align 8, !tbaa !63 %42 = getelementptr inbounds nuw i8, ptr %1, i64 88 @@ -950,7 +948,7 @@ define internal noundef i32 @preload_image(ptr noundef %0, ptr noundef initializ %47 = load ptr, ptr %46, align 8, !tbaa !80 %48 = getelementptr inbounds nuw i8, ptr %1, i64 80 %49 = load ptr, ptr %48, align 8, !tbaa !55 - %50 = tail call ptr %47(ptr noundef nonnull %0, ptr noundef %49, i32 noundef %43, i32 noundef 1, i32 noundef 0) #4 + %50 = tail call ptr %46(ptr noundef nonnull %0, ptr noundef %49, i32 noundef %43, i32 noundef 1, i32 noundef 0) #4 %51 = getelementptr inbounds nuw i8, ptr %1, i64 32 store ptr %50, ptr %51, align 8, !tbaa !62 %52 = load i32, ptr %42, align 8, !tbaa !86 diff --git a/bench/libjpeg-turbo/optimized/wrbmp.ll b/bench/libjpeg-turbo/optimized/wrbmp.ll index 82424f3a663..9887d951741 100644 --- a/bench/libjpeg-turbo/optimized/wrbmp.ll +++ b/bench/libjpeg-turbo/optimized/wrbmp.ll @@ -282,16 +282,16 @@ define internal void @finish_output_bmp(ptr noundef %0, ptr noundef readonly cap %15 = getelementptr inbounds nuw i8, ptr %0, i64 140 %16 = load i32, ptr %15, align 4, !tbaa !58 %.not3640 = icmp eq i32 %16, 0 + %.not37 = icmp eq ptr %6, null br i1 %.not3640, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %14 - %.not39 = icmp eq ptr %6, null %17 = getelementptr inbounds nuw i8, ptr %6, i64 8 %18 = getelementptr inbounds nuw i8, ptr %6, i64 16 %19 = getelementptr inbounds nuw i8, ptr %0, i64 8 %20 = getelementptr inbounds nuw i8, ptr %1, i64 80 %21 = getelementptr inbounds nuw i8, ptr %1, i64 92 - br i1 %.not39, label %.lr.ph.split.us, label %.lr.ph.split + br i1 %.not37, label %.lr.ph.split.us, label %.lr.ph.split .lr.ph.split.us: ; preds = %.lr.ph, %.lr.ph.split.us %.041.us = phi i32 [ %26, %.lr.ph.split.us ], [ %16, %.lr.ph ] @@ -306,7 +306,7 @@ define internal void @finish_output_bmp(ptr noundef %0, ptr noundef readonly cap %30 = zext i32 %29 to i64 %31 = tail call i64 @fwrite(ptr noundef %28, i64 noundef 1, i64 noundef %30, ptr noundef %4) %.not36.us = icmp eq i32 %26, 0 - br i1 %.not36.us, label %._crit_edge, label %.lr.ph.split.us, !llvm.loop !73 + br i1 %.not36.us, label %._crit_edge.thread, label %.lr.ph.split.us, !llvm.loop !73 .lr.ph.split: ; preds = %.lr.ph, %.lr.ph.split %.041 = phi i32 [ %41, %.lr.ph.split ], [ %16, %.lr.ph ] @@ -331,9 +331,8 @@ define internal void @finish_output_bmp(ptr noundef %0, ptr noundef readonly cap %.not36 = icmp eq i32 %41, 0 br i1 %.not36, label %._crit_edge.thread, label %.lr.ph.split, !llvm.loop !73 -._crit_edge: ; preds = %.lr.ph.split.us, %14 - %.not37 = icmp eq ptr %6, null - br i1 %.not37, label %50, label %._crit_edge.thread +._crit_edge: ; preds = %14 + br i1 %.not37, label %50, label %50 ._crit_edge.thread: ; preds = %.lr.ph.split, %._crit_edge %47 = getelementptr inbounds nuw i8, ptr %6, i64 32 @@ -342,7 +341,7 @@ define internal void @finish_output_bmp(ptr noundef %0, ptr noundef readonly cap store i32 %49, ptr %47, align 8, !tbaa !78 br label %50 -50: ; preds = %._crit_edge, %._crit_edge.thread, %2 +50: ; preds = %.lr.ph.split.us, %._crit_edge, %._crit_edge.thread, %2 %51 = tail call i32 @fflush(ptr noundef %4) %52 = tail call i32 @ferror(ptr noundef %4) #7 %.not38 = icmp eq i32 %52, 0 @@ -353,7 +352,7 @@ define internal void @finish_output_bmp(ptr noundef %0, ptr noundef readonly cap %55 = getelementptr inbounds nuw i8, ptr %54, i64 40 store i32 37, ptr %55, align 8, !tbaa !32 %56 = load ptr, ptr %54, align 8, !tbaa !36 - tail call void %56(ptr noundef nonnull %0) #7 + tail call void %55(ptr noundef nonnull %0) #7 br label %57 57: ; preds = %53, %50 diff --git a/bench/libsodium/optimized/aead_aes256gcm_aesni.ll b/bench/libsodium/optimized/aead_aes256gcm_aesni.ll index 96deb4c2cf8..dd44cec2c3d 100644 --- a/bench/libsodium/optimized/aead_aes256gcm_aesni.ll +++ b/bench/libsodium/optimized/aead_aes256gcm_aesni.ll @@ -1439,8 +1439,7 @@ encrypt_xor_block.exit363.i: ; preds = %636 %.val90121.i386.i = phi <2 x i64> [ %649, %.lr.ph586.preheader.i ], [ %614, %encrypt_xor_block.exit363.i ] %.val84120.i385.i = phi <16 x i8> [ %.val84120.i385.i.pre, %.lr.ph586.preheader.i ], [ %646, %encrypt_xor_block.exit363.i ] %650 = getelementptr i8, ptr %0, i64 %.6236.lcssa.i - %umax.i = call i64 @llvm.umax.i64(i64 %626, i64 1) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %650, ptr noundef nonnull align 16 dereferenceable(1) %16, i64 %umax.i, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %650, ptr noundef nonnull align 16 dereferenceable(1) %16, i64 %626, i1 false) %651 = getelementptr inbounds nuw i8, ptr %9, i64 240 %652 = getelementptr i8, ptr %9, i64 256 %.val83.pre.i381.i = load <2 x i64>, ptr %19, align 16 @@ -2654,8 +2653,7 @@ encrypt.exit.i: ; preds = %568 %625 = xor <2 x i64> %624, %623 store <2 x i64> %625, ptr %13, align 16 %626 = getelementptr i8, ptr %0, i64 %.4180.lcssa.i - %umax.i = call i64 @llvm.umax.i64(i64 %578, i64 1) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %626, ptr noundef nonnull align 16 dereferenceable(1) %13, i64 %umax.i, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %626, ptr noundef nonnull align 16 dereferenceable(1) %13, i64 %578, i1 false) br label %aes_gcm_decrypt_generic.exit ._crit_edge.i321.thread.i: ; preds = %encrypt.exit.i @@ -3130,9 +3128,6 @@ declare <2 x i64> @llvm.fshl.v2i64(<2 x i64>, <2 x i64>, <2 x i64>) #12 ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) declare void @llvm.memset.p0.i64(ptr writeonly captures(none), i8, i64, i1 immarg) #13 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umax.i64(i64, i64) #12 - attributes #0 = { nofree norecurse nosync nounwind ssp memory(argmem: readwrite) uwtable "min-legal-vector-width"="128" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+aes,+avx,+cmov,+crc32,+cx8,+fxsr,+mmx,+pclmul,+popcnt,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave" "tune-cpu"="generic" } attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } attributes #2 = { nofree nounwind ssp memory(argmem: readwrite, inaccessiblemem: readwrite) uwtable "min-legal-vector-width"="128" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+aes,+avx,+cmov,+crc32,+cx8,+fxsr,+mmx,+pclmul,+popcnt,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave" "tune-cpu"="generic" } diff --git a/bench/libsodium/optimized/aegis128l_soft.ll b/bench/libsodium/optimized/aegis128l_soft.ll index 3e2add0d9ab..701e1dc274d 100644 --- a/bench/libsodium/optimized/aegis128l_soft.ll +++ b/bench/libsodium/optimized/aegis128l_soft.ll @@ -891,10 +891,10 @@ aegis128l_init.exit: ; preds = %aegis128l_init.exit br i1 %293, label %.preheader, label %.preheader102 .preheader102: ; preds = %292 - br i1 %.not67233, label %.loopexit.thread, label %.lr.ph231 + br i1 %.not67233, label %.loopexit, label %.lr.ph231 .preheader: ; preds = %292 - br i1 %.not67233, label %.loopexit.thread313, label %.lr.ph235 + br i1 %.not67233, label %.loopexit, label %.lr.ph235 .lr.ph235: ; preds = %.preheader, %.lr.ph235 %294 = phi i64 [ %297, %.lr.ph235 ], [ 32, %.preheader ] @@ -915,31 +915,21 @@ aegis128l_init.exit: ; preds = %aegis128l_init.exit %.not66 = icmp ugt i64 %300, %2 br i1 %.not66, label %.loopexit, label %.lr.ph231, !llvm.loop !24 -.loopexit: ; preds = %.lr.ph231, %.lr.ph235 - %.3 = phi i64 [ %294, %.lr.ph235 ], [ %298, %.lr.ph231 ] +.loopexit: ; preds = %.lr.ph231, %.lr.ph235, %.preheader102, %.preheader + %.3 = phi i64 [ 0, %.preheader ], [ 0, %.preheader102 ], [ %294, %.lr.ph235 ], [ %298, %.lr.ph231 ] %301 = and i64 %2, 31 %.not68 = icmp eq i64 %301, 0 br i1 %.not68, label %513, label %302 -.loopexit.thread313: ; preds = %.preheader - %.not68315 = icmp eq i64 %2, 0 - br i1 %.not68315, label %513, label %.thread316 - -.loopexit.thread: ; preds = %.preheader102 - %.not68309 = icmp eq i64 %2, 0 - br i1 %.not68309, label %513, label %.thread - 302: ; preds = %.loopexit br i1 %293, label %.thread316, label %.thread -.thread316: ; preds = %.loopexit.thread313, %302 - %.3310318 = phi i64 [ %.3, %302 ], [ 0, %.loopexit.thread313 ] - %303 = phi i64 [ %301, %302 ], [ %2, %.loopexit.thread313 ] - %304 = getelementptr i8, ptr %0, i64 %.3310318 - %305 = getelementptr i8, ptr %1, i64 %.3310318 +.thread316: ; preds = %302 + %.3310318 = getelementptr i8, ptr %0, i64 %.3 + %303 = getelementptr i8, ptr %1, i64 %.3 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #7 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %11, i8 noundef 0, i64 noundef 32, i1 noundef false) #7 - %306 = call ptr @__memcpy_chk(ptr noundef nonnull %11, ptr noundef nonnull readonly %305, i64 noundef range(i64 1, 32) %303, i64 noundef 32) #7, !alias.scope !25 + %306 = call ptr @__memcpy_chk(ptr noundef nonnull %11, ptr noundef nonnull readonly %305, i64 noundef range(i64 1, 32) %301, i64 noundef 32) #7, !alias.scope !25 %307 = load i64, ptr %11, align 16 %308 = getelementptr inbounds nuw i8, ptr %11, i64 8 %309 = load i64, ptr %308, align 8 @@ -999,10 +989,10 @@ aegis128l_init.exit: ; preds = %aegis128l_init.exit store i32 %.sroa.3.8.extract.trunc.i75.i, ptr %312, align 8 %345 = getelementptr inbounds nuw i8, ptr %11, i64 28 store i32 %.sroa.5.8.extract.trunc.i77.i, ptr %345, align 4 - %346 = getelementptr i8, ptr %11, i64 %303 - %347 = sub nuw nsw i64 32, %303 + %346 = getelementptr i8, ptr %11, i64 %301 + %347 = sub nuw nsw i64 32, %301 call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %346, i8 noundef 0, i64 noundef %347, i1 noundef false) #7 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 %304, ptr noundef nonnull align 16 %11, i64 noundef range(i64 1, 32) %303, i1 noundef false) #7 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 %304, ptr noundef nonnull align 16 %11, i64 noundef range(i64 1, 32) %301, i1 noundef false) #7 %348 = load i64, ptr %11, align 16 %349 = load i64, ptr %308, align 8 %350 = load i64, ptr %310, align 16 @@ -1084,13 +1074,11 @@ aegis128l_init.exit: ; preds = %aegis128l_init.exit call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #7 br label %513 -.thread: ; preds = %.loopexit.thread, %302 - %.3310312 = phi i64 [ %.3, %302 ], [ 0, %.loopexit.thread ] - %408 = phi i64 [ %301, %302 ], [ %2, %.loopexit.thread ] - %409 = getelementptr i8, ptr %1, i64 %.3310312 +.thread: ; preds = %302 + %.3310312 = getelementptr i8, ptr %1, i64 %.3 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #7 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %10, i8 noundef 0, i64 noundef 32, i1 noundef false) #7 - %410 = call ptr @__memcpy_chk(ptr noundef nonnull %10, ptr noundef nonnull readonly %409, i64 noundef range(i64 1, 32) %408, i64 noundef 32) #7, !alias.scope !29 + %410 = call ptr @__memcpy_chk(ptr noundef nonnull %10, ptr noundef nonnull readonly %409, i64 noundef range(i64 1, 32) %301, i64 noundef 32) #7, !alias.scope !29 %411 = load i64, ptr %10, align 16 %412 = getelementptr inbounds nuw i8, ptr %10, i64 8 %413 = load i64, ptr %412, align 8 @@ -1150,10 +1138,10 @@ aegis128l_init.exit: ; preds = %aegis128l_init.exit store i32 %.sroa.3.8.extract.trunc.i75.i81, ptr %416, align 8 %449 = getelementptr inbounds nuw i8, ptr %10, i64 28 store i32 %.sroa.5.8.extract.trunc.i77.i83, ptr %449, align 4 - %450 = getelementptr i8, ptr %10, i64 %408 - %451 = sub nuw nsw i64 32, %408 + %450 = getelementptr i8, ptr %10, i64 %301 + %451 = sub nuw nsw i64 32, %301 call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %450, i8 noundef 0, i64 noundef %451, i1 noundef false) #7 - %452 = call ptr @__memcpy_chk(ptr noundef nonnull %14, ptr noundef nonnull %10, i64 noundef range(i64 1, 32) %408, i64 noundef 32) #7, !alias.scope !33 + %452 = call ptr @__memcpy_chk(ptr noundef nonnull %14, ptr noundef nonnull %10, i64 noundef range(i64 1, 32) %301, i64 noundef 32) #7, !alias.scope !33 %453 = load i64, ptr %10, align 16 %454 = load i64, ptr %412, align 8 %455 = load i64, ptr %414, align 16 @@ -1235,7 +1223,7 @@ aegis128l_init.exit: ; preds = %aegis128l_init.exit call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #7 br label %513 -513: ; preds = %.loopexit.thread313, %.loopexit.thread, %.thread316, %.thread, %.loopexit +513: ; preds = %.thread316, %.thread, %.loopexit %514 = call fastcc i32 @aegis128l_mac(ptr noundef nonnull %15, i64 noundef %4, i64 noundef %6, i64 noundef %2, ptr noundef %12) %515 = icmp eq i32 %514, 0 br i1 %515, label %516, label %521 diff --git a/bench/libuv/optimized/proctitle.ll b/bench/libuv/optimized/proctitle.ll index e4b326b4f50..ba125afadb4 100644 --- a/bench/libuv/optimized/proctitle.ll +++ b/bench/libuv/optimized/proctitle.ll @@ -60,8 +60,7 @@ define dso_local ptr @uv_setup_args(i32 noundef %0, ptr noundef readonly capture br i1 %.not, label %._crit_edge56, label %.lr.ph55.preheader .lr.ph55.preheader: ; preds = %19 - %smax = tail call i32 @llvm.smax.i32(i32 %0, i32 2) - %wide.trip.count69 = zext nneg i32 %smax to i64 + %smax = zext nneg i32 %0 to i64 br label %.lr.ph55 .lr.ph55: ; preds = %.lr.ph55.preheader, %.lr.ph55 @@ -81,7 +80,7 @@ define dso_local ptr @uv_setup_args(i32 noundef %0, ptr noundef readonly capture br i1 %exitcond70.not, label %._crit_edge56.loopexit, label %.lr.ph55 ._crit_edge56.loopexit: ; preds = %.lr.ph55 - %28 = zext nneg i32 %smax to i64 + %28 = zext nneg i32 %0 to i64 br label %._crit_edge56 ._crit_edge56: ; preds = %19, %._crit_edge56.loopexit @@ -218,9 +217,6 @@ declare void @uv__free(ptr noundef) local_unnamed_addr #2 declare i32 @uv_mutex_init(ptr noundef) local_unnamed_addr #2 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #5 - ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.usub.sat.i64(i64, i64) #5 diff --git a/bench/libwebp/optimized/muxinternal.ll b/bench/libwebp/optimized/muxinternal.ll index 1ce1d692996..9a0dabfb2ef 100644 --- a/bench/libwebp/optimized/muxinternal.ll +++ b/bench/libwebp/optimized/muxinternal.ll @@ -820,10 +820,10 @@ define hidden ptr @MuxImageDelete(ptr noundef %0) local_unnamed_addr #3 { define hidden range(i32 0, 2) i32 @MuxImageDeleteNth(ptr noundef captures(none) %0, i32 noundef %1) local_unnamed_addr #3 { %3 = icmp eq i32 %1, 0 %.pre.i = load ptr, ptr %0, align 8, !tbaa !43 + %.not19.i.i = icmp eq ptr %.pre.i, null br i1 %3, label %4, label %MuxImageCount.exit.i 4: ; preds = %2 - %.not19.i.i = icmp eq ptr %.pre.i, null br i1 %.not19.i.i, label %SearchImageToGetOrDelete.exit.thread, label %.lr.ph24.i.i .lr.ph24.i.i: ; preds = %4, %.lr.ph24.i.i @@ -833,20 +833,19 @@ define hidden range(i32 0, 2) i32 @MuxImageDeleteNth(ptr noundef captures(none) %6 = getelementptr inbounds nuw i8, ptr %.01220.i.i, i64 48 %7 = load ptr, ptr %6, align 8, !tbaa !39 %.not.i.i = icmp eq ptr %7, null - br i1 %.not.i.i, label %MuxImageCount.exit.i, label %.lr.ph24.i.i, !llvm.loop !42 + br i1 %.not.i.i, label %.lr.ph.preheader.i, label %.lr.ph24.i.i, !llvm.loop !42 -MuxImageCount.exit.i: ; preds = %.lr.ph24.i.i, %2 - %.018.i = phi i32 [ %1, %2 ], [ %5, %.lr.ph24.i.i ] - %.not25.i = icmp eq ptr %.pre.i, null - br i1 %.not25.i, label %SearchImageToGetOrDelete.exit.thread, label %.lr.ph.i.preheader +MuxImageCount.exit.i: ; preds = %2 + br i1 %.not19.i.i, label %SearchImageToGetOrDelete.exit.thread, label %.lr.ph.i.preheader -.lr.ph.i.preheader: ; preds = %MuxImageCount.exit.i - %.not22.i8 = icmp eq i32 %.018.i, 1 +.lr.ph.i.preheader: ; preds = %.lr.ph24.i.i, %MuxImageCount.exit.i + %.not22.i8 = phi i32 [ %1, %MuxImageCount.exit.i ], [ %5, %.lr.ph24.i.i ] + %.not22.i8 = icmp eq i32 %.01832.i, 1 br i1 %.not22.i8, label %SearchImageToGetOrDelete.exit, label %.lr.ph .lr.ph.i: ; preds = %.lr.ph %8 = add i32 %9, 1 - %.not22.i = icmp eq i32 %8, %.018.i + %.not22.i = icmp eq i32 %8, %.01832.i br i1 %.not22.i, label %SearchImageToGetOrDelete.exit.loopexit, label %.lr.ph .lr.ph: ; preds = %.lr.ph.i.preheader, %.lr.ph.i @@ -878,10 +877,10 @@ SearchImageToGetOrDelete.exit.thread: ; preds = %.lr.ph, %MuxImageCo define hidden range(i32 0, 2) i32 @MuxImageGetNth(ptr noundef readonly captures(none) %0, i32 noundef %1, ptr noundef writeonly captures(none) %2) local_unnamed_addr #12 { %4 = icmp eq i32 %1, 0 %.pre.i = load ptr, ptr %0, align 8, !tbaa !43 + %.not19.i.i = icmp eq ptr %.pre.i, null br i1 %4, label %5, label %MuxImageCount.exit.i 5: ; preds = %3 - %.not19.i.i = icmp eq ptr %.pre.i, null br i1 %.not19.i.i, label %SearchImageToGetOrDelete.exit.thread, label %.lr.ph24.i.i .lr.ph24.i.i: ; preds = %5, %.lr.ph24.i.i @@ -891,20 +890,19 @@ define hidden range(i32 0, 2) i32 @MuxImageGetNth(ptr noundef readonly captures( %7 = getelementptr inbounds nuw i8, ptr %.01220.i.i, i64 48 %8 = load ptr, ptr %7, align 8, !tbaa !39 %.not.i.i = icmp eq ptr %8, null - br i1 %.not.i.i, label %MuxImageCount.exit.i, label %.lr.ph24.i.i, !llvm.loop !42 + br i1 %.not.i.i, label %.lr.ph.preheader.i, label %.lr.ph24.i.i, !llvm.loop !42 -MuxImageCount.exit.i: ; preds = %.lr.ph24.i.i, %3 - %.018.i = phi i32 [ %1, %3 ], [ %6, %.lr.ph24.i.i ] - %.not25.i = icmp eq ptr %.pre.i, null - br i1 %.not25.i, label %SearchImageToGetOrDelete.exit.thread, label %.lr.ph.i.preheader +MuxImageCount.exit.i: ; preds = %3 + br i1 %.not19.i.i, label %SearchImageToGetOrDelete.exit.thread, label %.lr.ph.i.preheader -.lr.ph.i.preheader: ; preds = %MuxImageCount.exit.i - %.not22.i7 = icmp eq i32 %.018.i, 1 +.lr.ph.i.preheader: ; preds = %.lr.ph24.i.i, %MuxImageCount.exit.i + %.not22.i7 = phi i32 [ %1, %MuxImageCount.exit.i ], [ %6, %.lr.ph24.i.i ] + %.not22.i7 = icmp eq i32 %.01832.i, 1 br i1 %.not22.i7, label %SearchImageToGetOrDelete.exit, label %.lr.ph .lr.ph.i: ; preds = %.lr.ph %9 = add i32 %10, 1 - %.not22.i = icmp eq i32 %9, %.018.i + %.not22.i = icmp eq i32 %9, %.01832.i br i1 %.not22.i, label %SearchImageToGetOrDelete.exit, label %.lr.ph .lr.ph: ; preds = %.lr.ph.i.preheader, %.lr.ph.i diff --git a/bench/lief/optimized/gcm.ll b/bench/lief/optimized/gcm.ll index 8d4468e7d9f..dba77d4d45a 100644 --- a/bench/lief/optimized/gcm.ll +++ b/bench/lief/optimized/gcm.ll @@ -1132,23 +1132,22 @@ define hidden range(i32 -20, 1) i32 @mbedtls_gcm_finish(ptr noundef %0, ptr read 83: ; preds = %76 tail call fastcc void @gcm_mult(ptr noundef nonnull %0, ptr noundef nonnull %75, ptr noundef nonnull %75) - %.not59 = icmp eq i64 %5, 0 - br i1 %.not59, label %.loopexit, label %.lr.ph - -.lr.ph: ; preds = %83, %.lr.ph - %.158 = phi i64 [ %89, %.lr.ph ], [ 0, %83 ] - %84 = getelementptr inbounds nuw [16 x i8], ptr %75, i64 0, i64 %.158 - %85 = load i8, ptr %84, align 1 - %86 = getelementptr inbounds nuw i8, ptr %4, i64 %.158 - %87 = load i8, ptr %86, align 1 - %88 = xor i8 %87, %85 - store i8 %88, ptr %86, align 1 - %89 = add nuw nsw i64 %.158, 1 - %exitcond60.not = icmp eq i64 %89, %5 + br label %.lr.ph + +.lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph + %.158 = phi i64 [ %88, %.lr.ph ], [ 0, %83 ] + %.158 = getelementptr inbounds nuw [16 x i8], ptr %75, i64 0, i64 %.158 + %84 = load i8, ptr %83, align 1 + %85 = getelementptr inbounds nuw i8, ptr %4, i64 %.158 + %86 = load i8, ptr %85, align 1 + %87 = xor i8 %86, %84 + store i8 %87, ptr %85, align 1 + %88 = add nuw nsw i64 %.158, 1 + %89 = icmp eq i64 %88, %5 br i1 %exitcond60.not, label %.loopexit, label %.lr.ph, !llvm.loop !20 -.loopexit: ; preds = %.lr.ph, %83, %25, %18 - %.0 = phi i32 [ -20, %18 ], [ 0, %25 ], [ 0, %83 ], [ 0, %.lr.ph ] +.loopexit: ; preds = %.lr.ph, %25, %18 + %.0 = phi i32 [ -20, %18 ], [ 0, %25 ], [ 0, %.lr.ph ] ret i32 %.0 } diff --git a/bench/llama.cpp/optimized/common.ll b/bench/llama.cpp/optimized/common.ll index eb3bbe91548..698c4e2c593 100644 --- a/bench/llama.cpp/optimized/common.ll +++ b/bench/llama.cpp/optimized/common.ll @@ -25067,21 +25067,24 @@ land.lhs.true.i.i.i.i: ; preds = %while.end.i.i.i.i br i1 %cmp19.i.i.i.i, label %if.then20.i.i.i.i, label %if.end33.i.i.i.i if.then20.i.i.i.i: ; preds = %land.lhs.true.i.i.i.i - %add21.i.i.i.i = shl nsw i64 %__holeIndex.addr.0.lcssa.i.i.i.i, 1 + %add21.i.i.i.i = shl nuw nsw i64 %__holeIndex.addr.0.lcssa.i.i.i.i, 1 %sub24.i.i.i.i = or disjoint i64 %add21.i.i.i.i, 1 - %add.ptr.i20.i.i.i.i = getelementptr inbounds i8, ptr %__first.coerce, i64 %sub24.i.i.i.i + %add.ptr.i20.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.coerce, i64 %sub24.i.i.i.i %5 = load i8, ptr %add.ptr.i20.i.i.i.i, align 1 %add.ptr.i21.i.i.i.i = getelementptr inbounds i8, ptr %__first.coerce, i64 %__holeIndex.addr.0.lcssa.i.i.i.i store i8 %5, ptr %add.ptr.i21.i.i.i.i, align 1 - br label %if.end33.i.i.i.i + br label %land.rhs.i.i.i.i.i -if.end33.i.i.i.i: ; preds = %if.then20.i.i.i.i, %land.lhs.true.i.i.i.i, %while.end.i.i.i.i - %__holeIndex.addr.1.i.i.i.i = phi i64 [ %sub24.i.i.i.i, %if.then20.i.i.i.i ], [ %__holeIndex.addr.0.lcssa.i.i.i.i, %land.lhs.true.i.i.i.i ], [ %__holeIndex.addr.0.lcssa.i.i.i.i, %while.end.i.i.i.i ] - %cmp16.i.i.i.i.i = icmp sgt i64 %__holeIndex.addr.1.i.i.i.i, 0 - br i1 %cmp16.i.i.i.i.i, label %land.rhs.i.i.i.i.i, label %_ZSt10__pop_heapIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEENS0_5__ops15_Iter_less_iterEEvT_S9_S9_RT0_.exit.i.i +if.end33.i.i.i.i: ; preds = %land.lhs.true.i.i.i.i, %while.end.i.i.i.i + %__holeIndex.addr.1.i.i.i.i = icmp eq i64 %__holeIndex.addr.0.lcssa.i.i.i.i, 0 + br i1 %__holeIndex.addr.1.i.i.i.i, label %_ZSt10__pop_heapIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEENS0_5__ops15_Iter_less_iterEEvT_S9_S9_RT0_.exit.i.i, label %land.rhs.i.i.i.i.i -land.rhs.i.i.i.i.i: ; preds = %if.end33.i.i.i.i, %while.body.i.i.i.i.i - %__holeIndex.addr.017.i.i.i.i.i = phi i64 [ %__parent.018.i.i34.i.i.i, %while.body.i.i.i.i.i ], [ %__holeIndex.addr.1.i.i.i.i, %if.end33.i.i.i.i ] +land.rhs.i.i.i.i.i: ; preds = %if.end33.i.i.i.i, %if.then20.i.i.i.i + %__holeIndex.addr.017.i.i.i.i.i = phi i64 [ %__holeIndex.addr.0.lcssa.i.i.i.i, %if.end33.i.i.i.i ], [ %sub24.i.i.i.i, %if.then20.i.i.i.i ] + br label %land.rhs.i.i.i.i.i + +land.rhs.i.i.i.i.i: ; preds = %land.rhs.i.i.i.i.i.preheader, %while.body.i.i.i.i.i + %__holeIndex.addr.017.i.i.i.i.i = phi i64 [ %__parent.018.i.i34.i.i.i, %while.body.i.i.i.i.i ], [ %__holeIndex.addr.017.i.i.i.i.i.ph, %land.rhs.i.i.i.i.i.preheader ] %__parent.018.in.i.i.i.i.i = add nsw i64 %__holeIndex.addr.017.i.i.i.i.i, -1 %__parent.018.i.i34.i.i.i = lshr i64 %__parent.018.in.i.i.i.i.i, 1 %add.ptr.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.coerce, i64 %__parent.018.i.i34.i.i.i @@ -25090,13 +25093,13 @@ land.rhs.i.i.i.i.i: ; preds = %if.end33.i.i.i.i, % br i1 %cmp.i.i.i.i.i.i, label %while.body.i.i.i.i.i, label %_ZSt10__pop_heapIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEENS0_5__ops15_Iter_less_iterEEvT_S9_S9_RT0_.exit.i.i while.body.i.i.i.i.i: ; preds = %land.rhs.i.i.i.i.i - %add.ptr.i8.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.coerce, i64 %__holeIndex.addr.017.i.i.i.i.i + %add.ptr.i8.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.coerce, i64 %__holeIndex.addr.017.i.i.i.i.i store i8 %6, ptr %add.ptr.i8.i.i.i.i.i, align 1 %cmp.i22.i.not.i.i.i = icmp ult i64 %__parent.018.in.i.i.i.i.i, 2 br i1 %cmp.i22.i.not.i.i.i, label %_ZSt10__pop_heapIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEENS0_5__ops15_Iter_less_iterEEvT_S9_S9_RT0_.exit.i.i, label %land.rhs.i.i.i.i.i, !llvm.loop !208 _ZSt10__pop_heapIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEENS0_5__ops15_Iter_less_iterEEvT_S9_S9_RT0_.exit.i.i: ; preds = %while.body.i.i.i.i.i, %land.rhs.i.i.i.i.i, %if.end33.i.i.i.i - %__holeIndex.addr.0.lcssa.i.i.i.i.i = phi i64 [ %__holeIndex.addr.1.i.i.i.i, %if.end33.i.i.i.i ], [ %__holeIndex.addr.017.i.i.i.i.i, %land.rhs.i.i.i.i.i ], [ 0, %while.body.i.i.i.i.i ] + %__holeIndex.addr.0.lcssa.i.i.i.i.i = phi i64 [ 0, %if.end33.i.i.i.i ], [ %__holeIndex.addr.017.i.i.i.i.i, %land.rhs.i.i.i.i.i ], [ 0, %while.body.i.i.i.i.i ] %add.ptr.i9.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.coerce, i64 %__holeIndex.addr.0.lcssa.i.i.i.i.i store i8 %0, ptr %add.ptr.i9.i.i.i.i.i, align 1 %cmp.i.i = icmp sgt i64 %sub.ptr.sub.i.i.i.i, 1 @@ -35480,7 +35483,7 @@ invoke.cont65: ; preds = %lor.lhs.false.i.i13 br label %for.inc for.inc: ; preds = %if.end57, %land.lhs.true59, %invoke.cont65 - %call.i = call noundef ptr @_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base(ptr noundef %__begin2.sroa.0.0169) #41 + %call.i = call noundef ptr @_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base(ptr noundef nonnull %__begin2.sroa.0.0169) #41 %cmp.i99.not = icmp eq ptr %call.i, %0 br i1 %cmp.i99.not, label %for.end, label %for.body diff --git a/bench/luau/optimized/DenseHash.test.ll b/bench/luau/optimized/DenseHash.test.ll index eb5387eed9a..40a75d03972 100644 --- a/bench/luau/optimized/DenseHash.test.ll +++ b/bench/luau/optimized/DenseHash.test.ll @@ -557,19 +557,15 @@ _ZN4Luau6detail14DenseHashTableIiSt4pairIiiES2_IKiiENS0_16ItemInterfaceMapIiiEES %190 = phi i64 [ %166, %165 ], [ %.sroa.18.2, %_ZN4Luau6detail14DenseHashTableIiSt4pairIiiES2_IKiiENS0_16ItemInterfaceMapIiiEESt4hashIiESt8equal_toIiEE13insert_unsafeERS4_.exit.i88 ] %191 = add nuw i64 %.029.i79, 1 %192 = icmp ult i64 %191, %190 - br i1 %192, label %165, label %._crit_edge31.i90.thread, !llvm.loop !8 + br i1 %192, label %165, label %._crit_edge31.i90, !llvm.loop !8 -._crit_edge31.i90: ; preds = %_ZN4Luau6detail14DenseHashTableIiSt4pairIiiES2_IKiiENS0_16ItemInterfaceMapIiiEESt4hashIiESt8equal_toIiEEC2ERS4_m.exit.i75 - %.not.i13.i91 = icmp eq ptr %.sroa.0.2, null - br i1 %.not.i13.i91, label %_ZN4Luau6detail14DenseHashTableIiSt4pairIiiES2_IKiiENS0_16ItemInterfaceMapIiiEESt4hashIiESt8equal_toIiEE14rehash_if_fullERS4_.exit.i39, label %._crit_edge31.i90.thread - -._crit_edge31.i90.thread: ; preds = %189, %._crit_edge31.i90 +._crit_edge31.i90: ; preds = %189, %_ZN4Luau6detail14DenseHashTableIiSt4pairIiiES2_IKiiENS0_16ItemInterfaceMapIiiEESt4hashIiESt8equal_toIiEEC2ERS4_m.exit.i75 call void @_ZdlPv(ptr noundef nonnull %.sroa.0.2) #14 br label %_ZN4Luau6detail14DenseHashTableIiSt4pairIiiES2_IKiiENS0_16ItemInterfaceMapIiiEESt4hashIiESt8equal_toIiEE14rehash_if_fullERS4_.exit.i39 -_ZN4Luau6detail14DenseHashTableIiSt4pairIiiES2_IKiiENS0_16ItemInterfaceMapIiiEESt4hashIiESt8equal_toIiEE14rehash_if_fullERS4_.exit.i39: ; preds = %147, %._crit_edge31.i90, %._crit_edge31.i90.thread, %.lr.ph - %.sroa.18.4 = phi i64 [ %.sroa.18.2, %.lr.ph ], [ %spec.select.i68, %._crit_edge31.i90.thread ], [ 16, %._crit_edge31.i90 ], [ %.sroa.18.2, %147 ] - %.sroa.0.4 = phi ptr [ %.sroa.0.2, %.lr.ph ], [ %.sroa.0.0.i76, %._crit_edge31.i90.thread ], [ %.sroa.0.0.i76, %._crit_edge31.i90 ], [ %.sroa.0.2, %147 ] +_ZN4Luau6detail14DenseHashTableIiSt4pairIiiES2_IKiiENS0_16ItemInterfaceMapIiiEESt4hashIiESt8equal_toIiEE14rehash_if_fullERS4_.exit.i39: ; preds = %147, %._crit_edge31.i90, %.lr.ph + %.sroa.18.4 = phi i64 [ %.sroa.18.2, %.lr.ph ], [ %spec.select.i68, %._crit_edge31.i90 ], [ %.sroa.18.2, %147 ] + %.sroa.0.4 = phi ptr [ %.sroa.0.2, %.lr.ph ], [ %.sroa.0.0.i76, %._crit_edge31.i90 ], [ %.sroa.0.2, %147 ] %193 = add i64 %.sroa.18.4, -1 %sext109 = shl i64 %138, 32 %194 = ashr exact i64 %sext109, 32 diff --git a/bench/lvgl/optimized/lv_flex.ll b/bench/lvgl/optimized/lv_flex.ll index baf815564dd..387df438607 100644 --- a/bench/lvgl/optimized/lv_flex.ll +++ b/bench/lvgl/optimized/lv_flex.ll @@ -330,8 +330,6 @@ place_content.exit: ; preds = %139, %134, %125, %1 %or.cond213 = and i1 %26, %.not98 %.sroa.speculated143 = select i1 %.not, i32 %.0178, i32 %.0180 %149 = add nsw i32 %.087, %.sroa.speculated143 - %spec.select214 = select i1 %.not, i32 %.0180, i32 %149 - %.1181 = select i1 %or.cond213, i32 %spec.select214, i32 %.0180 %150 = and i1 %.not, %or.cond213 %.1179 = select i1 %150, i32 %149, i32 %.0178 %151 = getelementptr inbounds nuw i8, ptr %0, i64 16 @@ -342,12 +340,17 @@ place_content.exit: ; preds = %139, %134, %125, %1 %153 = getelementptr inbounds nuw i8, ptr %5, i64 28 %154 = getelementptr inbounds nuw i8, ptr %5, i64 16 %155 = add i32 %.0176, %37 - br i1 %26, label %.lr.ph231.split.us, label %.lr.ph231.split + br i1 %26, label %.lr.ph231.split.us.preheader, label %.lr.ph231.split + +.lr.ph231.split.us.preheader: ; preds = %.lr.ph231 + %spec.select214 = select i1 %.not, i32 %.0180, i32 %149 + %.1181 = select i1 %.not98, i32 %spec.select214, i32 %.0180 + br label %.lr.ph231.split.us -.lr.ph231.split.us: ; preds = %.lr.ph231, %.cont135.us - %.185230.us = phi i32 [ %158, %.cont135.us ], [ %147, %.lr.ph231 ] - %.2229.us = phi i32 [ %spec.select219.us, %.cont135.us ], [ %.1179, %.lr.ph231 ] - %.2182228.us = phi i32 [ %spec.select218.us, %.cont135.us ], [ %.1181, %.lr.ph231 ] +.lr.ph231.split.us: ; preds = %.lr.ph231.split.us.preheader, %.cont135.us + %.185230.us = phi i32 [ %158, %.cont135.us ], [ %147, %.lr.ph231.split.us.preheader ] + %.2229.us = phi i32 [ %spec.select219.us, %.cont135.us ], [ %.1179, %.lr.ph231.split.us.preheader ] + %.2182228.us = phi i32 [ %spec.select218.us, %.cont135.us ], [ %.1181, %.lr.ph231.split.us.preheader ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #7 %156 = load i8, ptr %153, align 4 %157 = or i8 %156, 1 @@ -409,7 +412,7 @@ place_content.exit: ; preds = %139, %134, %125, %1 %177 = or i8 %176, 1 store i8 %177, ptr %153, align 4 %178 = call fastcc i32 @find_track_end(ptr noundef nonnull %0, ptr noundef %3, i32 noundef %.185230.us233, i32 noundef %36, i32 noundef %38, ptr noundef %5) - call fastcc void @children_repos(ptr noundef nonnull %0, ptr noundef %3, i32 noundef %.185230.us233, i32 noundef %178, i32 noundef %.2229.us234, i32 noundef %.1181, i32 noundef %36, i32 noundef %38, ptr noundef %5) + call fastcc void @children_repos(ptr noundef nonnull %0, ptr noundef %3, i32 noundef %.185230.us233, i32 noundef %178, i32 noundef %.2229.us234, i32 noundef %.0180, i32 noundef %36, i32 noundef %38, ptr noundef %5) %179 = load ptr, ptr %154, align 8, !tbaa !56 tail call void @lv_free(ptr noundef %179) #7 %180 = load i32, ptr %5, align 8, !tbaa !52 @@ -431,7 +434,7 @@ place_content.exit: ; preds = %139, %134, %125, %1 %189 = or i8 %188, 1 store i8 %189, ptr %153, align 4 %190 = call fastcc i32 @find_track_end(ptr noundef nonnull %0, ptr noundef %3, i32 noundef %.185230, i32 noundef %36, i32 noundef %38, ptr noundef %5) - call fastcc void @children_repos(ptr noundef nonnull %0, ptr noundef %3, i32 noundef %.185230, i32 noundef %190, i32 noundef %.1179, i32 noundef %.2182228, i32 noundef %36, i32 noundef %38, ptr noundef %5) + call fastcc void @children_repos(ptr noundef nonnull %0, ptr noundef %3, i32 noundef %.185230, i32 noundef %190, i32 noundef %.0178, i32 noundef %.2182228, i32 noundef %36, i32 noundef %38, ptr noundef %5) %191 = load ptr, ptr %154, align 8, !tbaa !56 tail call void @lv_free(ptr noundef %191) #7 %192 = load i32, ptr %5, align 8, !tbaa !52 diff --git a/bench/lvgl/optimized/lv_refr.ll b/bench/lvgl/optimized/lv_refr.ll index 4d1906aab35..a5d367a3ef8 100644 --- a/bench/lvgl/optimized/lv_refr.ll +++ b/bench/lvgl/optimized/lv_refr.ll @@ -950,8 +950,7 @@ define void @lv_obj_redraw(ptr noundef %0, ptr noundef %1) local_unnamed_addr #1 85: ; preds = %78 %86 = call ptr @lv_draw_layer_create(ptr noundef nonnull %0, i32 noundef 16, ptr noundef nonnull %10) #9 %87 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %umax128 = call i32 @llvm.umax.i32(i32 %23, i32 1) - %wide.trip.count129 = zext i32 %umax128 to i64 + %umax128 = zext i32 %23 to i64 br label %88 88: ; preds = %85, %88 @@ -992,8 +991,7 @@ define void @lv_obj_redraw(ptr noundef %0, ptr noundef %1) local_unnamed_addr #1 106: ; preds = %98 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %12, ptr noundef nonnull align 4 dereferenceable(16) %11, i64 16, i1 false), !tbaa.struct !69 %107 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %umax134 = call i32 @llvm.umax.i32(i32 %23, i32 1) - %wide.trip.count135 = zext i32 %umax134 to i64 + %umax134 = zext i32 %23 to i64 br label %108 108: ; preds = %106, %108 @@ -1907,7 +1905,7 @@ define internal fastcc void @draw_buf_flush(ptr noundef %0) unnamed_addr #1 { br i1 %.not, label %._crit_edge, label %.lr.ph, !llvm.loop !136 ._crit_edge: ; preds = %.lr.ph, %1 - %8 = tail call zeroext i1 @lv_display_is_double_buffered(ptr noundef %0) #9 + %8 = tail call zeroext i1 @lv_display_is_double_buffered(ptr noundef nonnull %0) #9 br i1 %8, label %9, label %22 9: ; preds = %._crit_edge diff --git a/bench/meshlab/optimized/action_searcher.ll b/bench/meshlab/optimized/action_searcher.ll index 583886a73de..6b30d950615 100644 --- a/bench/meshlab/optimized/action_searcher.ll +++ b/bench/meshlab/optimized/action_searcher.ll @@ -5184,21 +5184,24 @@ define linkonce_odr void @_ZSt10__pop_heapIN9__gnu_cxx17__normal_iteratorIPP7QAc br i1 %33, label %34, label %40 34: ; preds = %30 - %35 = shl nsw i64 %.0.lcssa.i, 1 + %35 = shl nuw nsw i64 %.0.lcssa.i, 1 %36 = or disjoint i64 %35, 1 - %37 = getelementptr inbounds ptr, ptr %0, i64 %36 + %37 = getelementptr inbounds nuw ptr, ptr %0, i64 %36 %38 = load ptr, ptr %37, align 8 %39 = getelementptr inbounds ptr, ptr %0, i64 %.0.lcssa.i store ptr %38, ptr %39, align 8 - br label %40 + br label %.lr.ph.i.i.preheader + +40: ; preds = %30, %._crit_edge.i + %.1.i = icmp eq i64 %.0.lcssa.i, 0 + br i1 %.1.i, label %_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPP7QActionSt6vectorIS3_SaIS3_EEEElS3_NS0_5__ops15_Iter_comp_iterIN14ActionSearcher16ActionComparatorEEEEvT_T0_SF_T1_T2_.exit, label %.lr.ph.i.i.preheader -40: ; preds = %34, %30, %._crit_edge.i - %.1.i = phi i64 [ %36, %34 ], [ %.0.lcssa.i, %30 ], [ %.0.lcssa.i, %._crit_edge.i ] - %41 = icmp sgt i64 %.1.i, 0 - br i1 %41, label %.lr.ph.i.i, label %_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPP7QActionSt6vectorIS3_SaIS3_EEEElS3_NS0_5__ops15_Iter_comp_iterIN14ActionSearcher16ActionComparatorEEEEvT_T0_SF_T1_T2_.exit +.lr.ph.i.i.preheader: ; preds = %.thread, %39 + %.019.i.i.ph = phi i64 [ %.0.lcssa.i, %39 ], [ %35, %.thread ] + br label %.lr.ph.i.i -.lr.ph.i.i: ; preds = %40, %45 - %.019.i.i = phi i64 [ %.0920.i.i78, %45 ], [ %.1.i, %40 ] +.lr.ph.i.i: ; preds = %.lr.ph.i.i.preheader, %45 + %.019.i.i = phi i64 [ %.0920.i.i78, %45 ], [ %.019.i.i.ph, %.lr.ph.i.i.preheader ] %.0920.in.i.i = add nsw i64 %.019.i.i, -1 %.0920.i.i78 = lshr i64 %.0920.in.i.i, 1 %42 = getelementptr inbounds nuw ptr, ptr %0, i64 %.0920.i.i78 @@ -5208,13 +5211,13 @@ define linkonce_odr void @_ZSt10__pop_heapIN9__gnu_cxx17__normal_iteratorIPP7QAc 45: ; preds = %.lr.ph.i.i %46 = load ptr, ptr %42, align 8 - %47 = getelementptr inbounds nuw ptr, ptr %0, i64 %.019.i.i + %47 = getelementptr inbounds ptr, ptr %0, i64 %.019.i.i store ptr %46, ptr %47, align 8 %.not = icmp ult i64 %.0920.in.i.i, 2 br i1 %.not, label %_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPP7QActionSt6vectorIS3_SaIS3_EEEElS3_NS0_5__ops15_Iter_comp_iterIN14ActionSearcher16ActionComparatorEEEEvT_T0_SF_T1_T2_.exit, label %.lr.ph.i.i, !llvm.loop !66 _ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPP7QActionSt6vectorIS3_SaIS3_EEEElS3_NS0_5__ops15_Iter_comp_iterIN14ActionSearcher16ActionComparatorEEEEvT_T0_SF_T1_T2_.exit: ; preds = %.lr.ph.i.i, %45, %40 - %.0.lcssa.i.i = phi i64 [ %.1.i, %40 ], [ 0, %45 ], [ %.019.i.i, %.lr.ph.i.i ] + %.0.lcssa.i.i = phi i64 [ 0, %40 ], [ 0, %45 ], [ %.019.i.i, %.lr.ph.i.i ] %48 = getelementptr inbounds ptr, ptr %0, i64 %.0.lcssa.i.i store ptr %7, ptr %48, align 8 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) diff --git a/bench/meshlab/optimized/layerDialog.ll b/bench/meshlab/optimized/layerDialog.ll index 0b90c3e49ab..d5e48ead817 100644 --- a/bench/meshlab/optimized/layerDialog.ll +++ b/bench/meshlab/optimized/layerDialog.ll @@ -8992,7 +8992,6 @@ define void @_ZN11LayerDialog15meshItemClickedEP15QTreeWidgetItemi(ptr noundef n %14 = load ptr, ptr %13, align 8 %.not.i = icmp eq ptr %14, null %15 = getelementptr inbounds nuw i8, ptr %14, i64 48 - %spec.select.i = select i1 %.not.i, ptr null, ptr %15 br i1 %.not.i, label %177, label %16 16: ; preds = %10 @@ -9045,8 +9044,8 @@ _ZNK10MainWindow3GLAEv.exit: ; preds = %20, %_ZNK10MainWind _ZNK10MainWindow3GLAEv.exit39: ; preds = %31, %35 %.0.i38 = phi ptr [ %37, %35 ], [ null, %31 ] - %38 = tail call noundef ptr @_ZN12MeshDocument7getMeshEj(ptr noundef nonnull align 8 dereferenceable(192) %spec.select.i, i32 noundef %.0) - %39 = tail call noundef ptr @_ZN12MeshDocument7getMeshEj(ptr noundef nonnull align 8 dereferenceable(192) %spec.select.i, i32 noundef %.0) + %38 = tail call noundef ptr @_ZN12MeshDocument7getMeshEj(ptr noundef nonnull align 8 dereferenceable(192) %15, i32 noundef %.0) + %39 = tail call noundef ptr @_ZN12MeshDocument7getMeshEj(ptr noundef nonnull align 8 dereferenceable(192) %15, i32 noundef %.0) %40 = getelementptr inbounds nuw i8, ptr %39, i64 1204 %41 = load i8, ptr %40, align 4 %42 = trunc i8 %41 to i1 @@ -9060,7 +9059,7 @@ _ZNK10MainWindow3GLAEv.exit39: ; preds = %31, %35 br i1 %46, label %47, label %.loopexit 47: ; preds = %44 - %48 = tail call ptr @_ZN12MeshDocument12meshIteratorEv(ptr noundef nonnull align 8 dereferenceable(192) %spec.select.i) + %48 = tail call ptr @_ZN12MeshDocument12meshIteratorEv(ptr noundef nonnull align 8 dereferenceable(192) %15) %49 = tail call ptr @_ZN12MeshDocument9meshBeginEv(ptr noundef nonnull align 8 dereferenceable(192) %48) %50 = tail call ptr @_ZN12MeshDocument7meshEndEv(ptr noundef nonnull align 8 dereferenceable(192) %48) %.not9298 = icmp eq ptr %49, %50 @@ -9085,7 +9084,7 @@ _ZNK10MainWindow3GLAEv.exit42: ; preds = %47, %_ZNK10MainWind br i1 %59, label %60, label %87 60: ; preds = %.loopexit - %61 = tail call ptr @_ZN12MeshDocument12meshIteratorEv(ptr noundef nonnull align 8 dereferenceable(192) %spec.select.i) + %61 = tail call ptr @_ZN12MeshDocument12meshIteratorEv(ptr noundef nonnull align 8 dereferenceable(192) %15) %62 = tail call ptr @_ZN12MeshDocument9meshBeginEv(ptr noundef nonnull align 8 dereferenceable(192) %61) %63 = tail call ptr @_ZN12MeshDocument7meshEndEv(ptr noundef nonnull align 8 dereferenceable(192) %61) %.not93100 = icmp eq ptr %62, %63 @@ -9122,8 +9121,8 @@ _ZNK10MainWindow3GLAEv.exit45: ; preds = %60, %_ZNK10MainWind _ZNK10MainWindow3GLAEv.exit48: ; preds = %._crit_edge, %78 %.0.i47 = phi ptr [ %80, %78 ], [ null, %._crit_edge ] - %81 = tail call noundef ptr @_ZN12MeshDocument7getMeshEj(ptr noundef nonnull align 8 dereferenceable(192) %spec.select.i, i32 noundef %.0) - %82 = tail call noundef ptr @_ZN12MeshDocument7getMeshEj(ptr noundef nonnull align 8 dereferenceable(192) %spec.select.i, i32 noundef %.0) + %81 = tail call noundef ptr @_ZN12MeshDocument7getMeshEj(ptr noundef nonnull align 8 dereferenceable(192) %15, i32 noundef %.0) + %82 = tail call noundef ptr @_ZN12MeshDocument7getMeshEj(ptr noundef nonnull align 8 dereferenceable(192) %15, i32 noundef %.0) %83 = getelementptr inbounds nuw i8, ptr %82, i64 1204 %84 = load i8, ptr %83, align 4 %85 = trunc i8 %84 to i1 diff --git a/bench/minetest/optimized/mesh_compare.ll b/bench/minetest/optimized/mesh_compare.ll index 00abefa6cdd..141921435c7 100644 --- a/bench/minetest/optimized/mesh_compare.ll +++ b/bench/minetest/optimized/mesh_compare.ll @@ -252,20 +252,13 @@ for.inc.i.i.i.i.i.i.epil: ; preds = %invoke.cont3.i.unr- %incdec.ptr.i.i.i.i.i.i.ptr.epil = getelementptr inbounds i8, ptr %call5.i.i.i.i4.i.i46.i, i64 %__cur.013.i.i.i.i.i.i.add.epil br label %invoke.cont3.i -invoke.cont3.i: ; preds = %for.inc.i.i.i.i.i.i.epil, %invoke.cont3.i.unr-lcssa +invoke.cont3.i: ; preds = %invoke.cont3.i.unr-lcssa, %for.inc.i.i.i.i.i.i.epil %__cur.013.i.i.i.i.i.i.idx.lcssa = phi i64 [ %__cur.013.i.i.i.i.i.i.idx.lcssa.ph, %invoke.cont3.i.unr-lcssa ], [ %__cur.013.i.i.i.i.i.i.idx.unr, %for.inc.i.i.i.i.i.i.epil ] %__cur.013.i.i.i.i.i.i.ptr.lcssa = phi ptr [ %__cur.013.i.i.i.i.i.i.ptr.lcssa.ph, %invoke.cont3.i.unr-lcssa ], [ %__cur.013.i.i.i.i.i.i.ptr.epil, %for.inc.i.i.i.i.i.i.epil ] %__cur.013.i.i.i.i.i.i.add.lcssa = phi i64 [ %__cur.013.i.i.i.i.i.i.add.lcssa.ph, %invoke.cont3.i.unr-lcssa ], [ %__cur.013.i.i.i.i.i.i.add.epil, %for.inc.i.i.i.i.i.i.epil ] %incdec.ptr.i.i.i.i.i.i.ptr.lcssa = phi ptr [ %incdec.ptr.i.i.i.i.i.i.ptr.lcssa.ph, %invoke.cont3.i.unr-lcssa ], [ %incdec.ptr.i.i.i.i.i.i.ptr.epil, %for.inc.i.i.i.i.i.i.epil ] %_M_finish.i.i9.i.i = getelementptr inbounds nuw i8, ptr %agg.result, i64 8 store ptr %incdec.ptr.i.i.i.i.i.i.ptr.lcssa, ptr %_M_finish.i.i9.i.i, align 8, !tbaa !14, !alias.scope !9 - %cmp139.i = icmp sgt i32 %conv.i, 2 - br i1 %cmp139.i, label %for.body.lr.ph.i, label %for.body.preheader - -for.body.preheader: ; preds = %invoke.cont29.i, %invoke.cont3.i - br label %for.body - -for.body.lr.ph.i: ; preds = %invoke.cont3.i %ref.tmp4.sroa.0.36.arrayinit.element.sroa_idx.i = getelementptr inbounds nuw i8, ptr %ref.tmp4.sroa.0.i, i64 36 %ref.tmp4.sroa.0.72.arrayinit.element19.sroa_idx.i = getelementptr inbounds nuw i8, ptr %ref.tmp4.sroa.0.i, i64 72 %wide.trip.count.i = zext nneg i32 %div.i to i64 @@ -340,7 +333,7 @@ invoke.cont29.i: ; preds = %invoke.cont26.i call void @llvm.lifetime.end.p0(i64 108, ptr nonnull %ref.tmp4.sroa.0.i) %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i - br i1 %exitcond.not.i, label %for.body.preheader, label %for.body.i, !llvm.loop !32 + br i1 %exitcond.not.i, label %for.body, label %for.body.i, !llvm.loop !32 if.then.i.i.i.i: ; preds = %if.then.i.i47.invoke.i %11 = landingpad { ptr, i32 } @@ -358,8 +351,7 @@ for.cond.cleanup.thread: ; preds = %_ZNSt6vectorISt5arr br label %nrvo.skipdtor if.then.i.i: ; preds = %invoke.cont - %sub.ptr.div.i.i.i = udiv exact i64 %__cur.013.i.i.i.i.i.i.add.lcssa, 108 - %12 = tail call i64 @llvm.ctlz.i64(i64 %sub.ptr.div.i.i.i, i1 true), !range !33 + %sub.ptr.div.i.i.i = tail call i64 @llvm.ctlz.i64(i64 %sub.ptr.div.i.i.i102.i, i1 true), !range !33 %sub.i.i.i = shl nuw nsw i64 %12, 1 %mul.i.i = xor i64 %sub.i.i.i, 126 invoke void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPSt5arrayIN3irr5video9S3DVertexELm3EESt6vectorIS6_SaIS6_EEEElNS0_5__ops15_Iter_less_iterEEvT_SE_T0_T1_(ptr nonnull %call5.i.i.i.i4.i.i46.i, ptr nonnull %incdec.ptr.i.i.i.i.i.i.ptr.lcssa, i64 noundef %mul.i.i) @@ -392,8 +384,8 @@ if.else.i.i.i: ; preds = %.noexc invoke void @_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPSt5arrayIN3irr5video9S3DVertexELm3EESt6vectorIS6_SaIS6_EEEENS0_5__ops15_Iter_less_iterEEvT_SE_T0_(ptr nonnull %call5.i.i.i.i4.i.i46.i, ptr nonnull %incdec.ptr.i.i.i.i.i.i.ptr.lcssa) to label %nrvo.skipdtor unwind label %lpad7.loopexit.split-lp -for.body: ; preds = %for.body.preheader, %invoke.cont - %__begin1.sroa.0.04 = phi ptr [ %incdec.ptr.i, %invoke.cont ], [ %call5.i.i.i.i4.i.i46.i, %for.body.preheader ] +for.body: ; preds = %invoke.cont29.i, %invoke.cont + %__begin1.sroa.0.04 = phi ptr [ %incdec.ptr.i, %invoke.cont ], [ %call5.i.i.i.i4.i.i46.i, %invoke.cont29.i ] call void @llvm.lifetime.start.p0(i64 108, ptr nonnull %ref.tmp) #16 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(108) %agg.tmp, ptr noundef nonnull align 4 dereferenceable(108) %__begin1.sroa.0.04, i64 108, i1 false), !tbaa.struct !30 invoke fastcc void @_ZL12sortTriangleSt5arrayIN3irr5video9S3DVertexELm3EE(ptr dead_on_unwind noalias nonnull writable align 4 %ref.tmp, ptr noundef nonnull byval(%"struct.std::array.25") align 8 %agg.tmp) diff --git a/bench/mitsuba3/optimized/string.ll b/bench/mitsuba3/optimized/string.ll index e5ed0966b00..a39dc886d64 100644 --- a/bench/mitsuba3/optimized/string.ll +++ b/bench/mitsuba3/optimized/string.ll @@ -3711,7 +3711,7 @@ _ZN10fast_float21fastfloat_strncasecmpEPKcS1_m.exit47: ; preds = %.lr.ph.i43 br i1 %47, label %48, label %.loopexit 48: ; preds = %_ZN10fast_float21fastfloat_strncasecmpEPKcS1_m.exit47 - %49 = icmp sgt i64 %8, 7 + %49 = icmp samesign ugt i64 %8, 7 br i1 %49, label %50, label %61 50: ; preds = %48 @@ -4960,7 +4960,7 @@ _ZN10fast_float6bigint8shl_bitsEm.exit.i.i: ; preds = %._crit_edge.i.i.i br i1 %.not.i.i.i, label %_ZN10fast_float6bigint8shl_bitsEm.exit.thread.i.i, label %77 _ZN10fast_float6bigint8shl_bitsEm.exit.thread.i.i: ; preds = %_ZN10fast_float6bigint8shl_bitsEm.exit.i.i, %61, %47, %43 - %.not9.i.i = icmp ult i32 %36, 64 + %.not9.i.i = icmp samesign ult i32 %36, 64 br i1 %.not9.i.i, label %_ZN10fast_float6bigint4pow2Ej.exit, label %65 65: ; preds = %_ZN10fast_float6bigint8shl_bitsEm.exit.thread.i.i @@ -5044,7 +5044,7 @@ _ZN10fast_float6bigint8shl_bitsEm.exit.i.i113: ; preds = %._crit_edge.i.i.i10 br i1 %.not.i.i.i105, label %_ZN10fast_float6bigint8shl_bitsEm.exit.thread.i.i107, label %117 _ZN10fast_float6bigint8shl_bitsEm.exit.thread.i.i107: ; preds = %_ZN10fast_float6bigint8shl_bitsEm.exit.i.i113, %100, %85, %80 - %.not9.i.i108 = icmp ult i32 %81, 64 + %.not9.i.i108 = icmp samesign ult i32 %81, 64 br i1 %.not9.i.i108, label %_ZN10fast_float6bigint4pow2Ej.exit, label %104 104: ; preds = %_ZN10fast_float6bigint8shl_bitsEm.exit.thread.i.i107 @@ -5389,7 +5389,6 @@ _ZN10fast_float9small_mulILt62EEEbRNS_8stackvecIXT_EEEm.exit: ; preds = %._crit_ %.not.i19 = icmp ult i16 %.fr, 63 %33 = shl nuw nsw i16 %.fr, 3 %34 = zext nneg i16 %33 to i64 - %umax72 = tail call i64 @llvm.umax.i64(i64 %2, i64 2) br i1 %.not.i19, label %.lr.ph.split.us, label %.lr.ph.split .lr.ph.split.us: ; preds = %.lr.ph, %_ZN10fast_float14large_add_fromILt62EEEbRNS_8stackvecIXT_EEENS_4spanImEEm.exit.thread.us @@ -5554,7 +5553,7 @@ _ZN10fast_float8stackvecILt62EE8try_pushEm.exit.thread.i.i.us: ; preds = %.crite _ZN10fast_float14large_add_fromILt62EEEbRNS_8stackvecIXT_EEENS_4spanImEEm.exit.thread.us: ; preds = %103, %_ZN10fast_float8stackvecILt62EE8try_pushEm.exit.thread.i.i.us, %._crit_edge.i32.us, %74, %.lr.ph.split.us %110 = add nuw i64 %.01659.us, 1 - %exitcond73.not = icmp eq i64 %110, %umax72 + %exitcond73.not = icmp eq i64 %110, %2 br i1 %exitcond73.not, label %.loopexit.loopexit, label %.lr.ph.split.us, !llvm.loop !64 .lr.ph.split: ; preds = %.lr.ph, %_ZN10fast_float14large_add_fromILt62EEEbRNS_8stackvecIXT_EEENS_4spanImEEm.exit.thread @@ -5566,7 +5565,7 @@ _ZN10fast_float14large_add_fromILt62EEEbRNS_8stackvecIXT_EEENS_4spanImEEm.exit.t _ZN10fast_float14large_add_fromILt62EEEbRNS_8stackvecIXT_EEENS_4spanImEEm.exit.thread: ; preds = %.lr.ph.split %113 = add nuw i64 %.01659, 1 - %exitcond.not = icmp eq i64 %113, %umax72 + %exitcond.not = icmp eq i64 %113, %2 br i1 %exitcond.not, label %.loopexit, label %.lr.ph.split, !llvm.loop !64 .loopexit.loopexit: ; preds = %_ZN10fast_float14large_add_fromILt62EEEbRNS_8stackvecIXT_EEENS_4spanImEEm.exit.thread.us @@ -6614,7 +6613,7 @@ _ZN10fast_float21fastfloat_strncasecmpEPKcS1_m.exit47: ; preds = %.lr.ph.i43 br i1 %47, label %48, label %.loopexit 48: ; preds = %_ZN10fast_float21fastfloat_strncasecmpEPKcS1_m.exit47 - %49 = icmp sgt i64 %8, 7 + %49 = icmp samesign ugt i64 %8, 7 br i1 %49, label %50, label %61 50: ; preds = %48 @@ -6964,7 +6963,7 @@ _ZN10fast_float6bigint8shl_bitsEm.exit.i.i: ; preds = %._crit_edge.i.i.i br i1 %.not.i.i.i, label %_ZN10fast_float6bigint8shl_bitsEm.exit.thread.i.i, label %77 _ZN10fast_float6bigint8shl_bitsEm.exit.thread.i.i: ; preds = %_ZN10fast_float6bigint8shl_bitsEm.exit.i.i, %61, %47, %43 - %.not9.i.i = icmp ult i32 %36, 64 + %.not9.i.i = icmp samesign ult i32 %36, 64 br i1 %.not9.i.i, label %_ZN10fast_float6bigint4pow2Ej.exit, label %65 65: ; preds = %_ZN10fast_float6bigint8shl_bitsEm.exit.thread.i.i @@ -7048,7 +7047,7 @@ _ZN10fast_float6bigint8shl_bitsEm.exit.i.i113: ; preds = %._crit_edge.i.i.i10 br i1 %.not.i.i.i105, label %_ZN10fast_float6bigint8shl_bitsEm.exit.thread.i.i107, label %117 _ZN10fast_float6bigint8shl_bitsEm.exit.thread.i.i107: ; preds = %_ZN10fast_float6bigint8shl_bitsEm.exit.i.i113, %100, %85, %80 - %.not9.i.i108 = icmp ult i32 %81, 64 + %.not9.i.i108 = icmp samesign ult i32 %81, 64 br i1 %.not9.i.i108, label %_ZN10fast_float6bigint4pow2Ej.exit, label %104 104: ; preds = %_ZN10fast_float6bigint8shl_bitsEm.exit.thread.i.i107 diff --git a/bench/ncnn/optimized/c_api.ll b/bench/ncnn/optimized/c_api.ll index efcc7949b42..53acc99ff54 100644 --- a/bench/ncnn/optimized/c_api.ll +++ b/bench/ncnn/optimized/c_api.ll @@ -2109,8 +2109,7 @@ _ZNSt12_Vector_baseIN4ncnn3MatESaIS1_EEC2EmRKS2_.exit.i: ; preds = %_ZNSt6vector .loopexit53: ; preds = %.lr.ph.i.i.i.i.i %15 = getelementptr inbounds nuw i8, ptr %3, i64 8 store ptr %14, ptr %15, align 8 - %smax = tail call i32 @llvm.smax.i32(i32 %1, i32 1) - %wide.trip.count = zext nneg i32 %smax to i64 + %smax = zext nneg i32 %1 to i64 br label %.lr.ph .lr.ph: ; preds = %.loopexit53, %72 @@ -2793,8 +2792,7 @@ _ZNSt12_Vector_baseIN4ncnn3MatESaIS1_EEC2EmRKS2_.exit.i73: ; preds = %_ZNSt6vect br i1 %.not.i.i.i.i, label %._crit_edge, label %.lr.ph.preheader .lr.ph.preheader: ; preds = %.loopexit101 - %smax = tail call i32 @llvm.smax.i32(i32 %2, i32 1) - %wide.trip.count = zext nneg i32 %smax to i64 + %smax = zext nneg i32 %2 to i64 br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %88 @@ -3213,8 +3211,7 @@ _ZNSt12_Vector_baseIN4ncnn3MatESaIS1_EEC2EmRKS2_.exit.i: ; preds = %_ZNSt6vector .loopexit46: ; preds = %.lr.ph.i.i.i.i.i %17 = getelementptr inbounds nuw i8, ptr %5, i64 8 store ptr %16, ptr %17, align 8 - %smax = tail call i32 @llvm.smax.i32(i32 %2, i32 1) - %wide.trip.count = zext nneg i32 %smax to i64 + %smax = zext nneg i32 %2 to i64 br label %.lr.ph .lr.ph: ; preds = %.loopexit46, %74 @@ -3742,8 +3739,7 @@ _ZNSt12_Vector_baseIN4ncnn3MatESaIS1_EEC2EmRKS2_.exit.i73: ; preds = %_ZNSt6vect br i1 %.not.i.i.i.i, label %._crit_edge, label %.lr.ph.preheader .lr.ph.preheader: ; preds = %.loopexit101 - %smax = tail call i32 @llvm.smax.i32(i32 %2, i32 1) - %wide.trip.count = zext nneg i32 %smax to i64 + %smax = zext nneg i32 %2 to i64 br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %88 @@ -4168,8 +4164,7 @@ _ZNSt12_Vector_baseIN4ncnn3MatESaIS1_EEC2EmRKS2_.exit.i: ; preds = %_ZNSt6vector .loopexit46: ; preds = %.lr.ph.i.i.i.i.i %17 = getelementptr inbounds nuw i8, ptr %5, i64 8 store ptr %16, ptr %17, align 8 - %smax = tail call i32 @llvm.smax.i32(i32 %2, i32 1) - %wide.trip.count = zext nneg i32 %smax to i64 + %smax = zext nneg i32 %2 to i64 br label %.lr.ph .lr.ph: ; preds = %.loopexit46, %74 @@ -4748,7 +4743,7 @@ define hidden void @ncnn_net_destroy(ptr noundef captures(none) %0) local_unname br i1 %.not, label %._crit_edge, label %.lr.ph, !llvm.loop !15 ._crit_edge: ; preds = %.lr.ph, %8 - tail call void @free(ptr noundef %0) #26 + tail call void @free(ptr noundef nonnull %0) #26 ret void } diff --git a/bench/ncnn/optimized/softmax.ll b/bench/ncnn/optimized/softmax.ll index 8c6f7b4316b..4dd7b1feeb3 100644 --- a/bench/ncnn/optimized/softmax.ll +++ b/bench/ncnn/optimized/softmax.ll @@ -87,10 +87,6 @@ define hidden noundef range(i32 -100, 1) i32 @_ZNK4ncnn7Softmax15forward_inplace %24 = icmp sgt i32 %22, 0 br i1 %24, label %.lr.ph.preheader, label %.loopexit1027.thread -.loopexit1027.thread: ; preds = %20 - %25 = icmp eq i32 %18, 0 - br label %210 - .lr.ph.preheader: ; preds = %20 %wide.trip.count = zext nneg i32 %22 to i64 br label %.lr.ph @@ -136,9 +132,13 @@ define hidden noundef range(i32 -100, 1) i32 @_ZNK4ncnn7Softmax15forward_inplace store float %37, ptr %35, align 4 %indvars.iv.next1184 = add nuw nsw i64 %indvars.iv1183, 1 %exitcond1187.not = icmp eq i64 %indvars.iv.next1184, %wide.trip.count1186 - br i1 %exitcond1187.not, label %.loopexit1027, label %.lr.ph1036, !llvm.loop !7 + br i1 %exitcond1187.not, label %.loopexit1027.thread, label %.lr.ph1036, !llvm.loop !7 + +.loopexit1027.thread: ; preds = %.lr.ph1036, %20 + %37 = icmp eq i32 %18, 0 + br label %210 -.loopexit1027: ; preds = %.lr.ph1036, %3 +.loopexit1027: ; preds = %3 %38 = icmp eq i32 %11, 2 %39 = icmp eq i32 %18, 0 %or.cond = select i1 %38, i1 %39, i1 false @@ -522,7 +522,7 @@ define hidden noundef range(i32 -100, 1) i32 @_ZNK4ncnn7Softmax15forward_inplace unreachable 210: ; preds = %.loopexit1027.thread, %190, %.loopexit1027 - %211 = phi i1 [ %25, %.loopexit1027.thread ], [ %39, %190 ], [ %39, %.loopexit1027 ] + %211 = phi i1 [ %37, %.loopexit1027.thread ], [ %39, %190 ], [ %39, %.loopexit1027 ] %212 = phi i1 [ false, %.loopexit1027.thread ], [ %38, %190 ], [ %38, %.loopexit1027 ] %213 = icmp eq i32 %18, 1 %or.cond5 = select i1 %212, i1 %213, i1 false @@ -533,7 +533,7 @@ define hidden noundef range(i32 -100, 1) i32 @_ZNK4ncnn7Softmax15forward_inplace %216 = getelementptr inbounds nuw i8, ptr %1, i64 48 %217 = load i32, ptr %216, align 8 %218 = icmp sgt i32 %217, 0 - br i1 %218, label %.lr.ph1075, label %.loopexit1022.thread + br i1 %218, label %.lr.ph1075, label %.loopexit1022 .lr.ph1075: ; preds = %214 %219 = load i32, ptr %215, align 4 @@ -598,7 +598,7 @@ define hidden noundef range(i32 -100, 1) i32 @_ZNK4ncnn7Softmax15forward_inplace %exitcond1238.not = icmp eq i64 %indvars.iv.next1235, %wide.trip.count1237 br i1 %exitcond1238.not, label %.loopexit1022, label %221, !llvm.loop !18 -.loopexit1022: ; preds = %._crit_edge1072, %210 +.loopexit1022: ; preds = %._crit_edge1072, %214, %210 %241 = icmp eq i32 %11, 3 %or.cond7 = select i1 %241, i1 %211, i1 false br i1 %or.cond7, label %242, label %.loopexit1022.thread @@ -983,9 +983,8 @@ define hidden noundef range(i32 -100, 1) i32 @_ZNK4ncnn7Softmax15forward_inplace call void @__clang_call_terminate(ptr %414) #13 unreachable -.loopexit1022.thread: ; preds = %214, %379, %.loopexit1022 - %415 = phi i1 [ %241, %379 ], [ %241, %.loopexit1022 ], [ false, %214 ] - %or.cond13 = select i1 %415, i1 %213, i1 false +.loopexit1022.thread: ; preds = %379, %.loopexit1022 + %415 = select i1 %241, i1 %213, i1 false br i1 %or.cond13, label %416, label %631 416: ; preds = %.loopexit1022.thread @@ -1448,7 +1447,7 @@ define hidden noundef range(i32 -100, 1) i32 @_ZNK4ncnn7Softmax15forward_inplace 631: ; preds = %595, %.loopexit1022.thread %632 = icmp eq i32 %18, 2 - %or.cond19 = select i1 %415, i1 %632, i1 false + %or.cond19 = select i1 %241, i1 %632, i1 false br i1 %or.cond19, label %633, label %.loopexit 633: ; preds = %631 diff --git a/bench/nix/optimized/print-ambiguous.ll b/bench/nix/optimized/print-ambiguous.ll index 38a15bee4fc..1198d46973f 100644 --- a/bench/nix/optimized/print-ambiguous.ll +++ b/bench/nix/optimized/print-ambiguous.ll @@ -1797,18 +1797,17 @@ define linkonce_odr void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorI .lr.ph: ; preds = %4 %10 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %11 = icmp eq i64 %2, 0 - br i1 %11, label %.split.i.i, label %.lr.ph41 - -12: ; preds = %.lr.ph41 - %13 = icmp eq i64 %28, 0 - br i1 %13, label %.split.i.i, label %.lr.ph41, !llvm.loop !12 - -.split.i.i: ; preds = %12, %.lr.ph - %.lcssa37 = phi i64 [ %8, %.lr.ph ], [ %35, %12 ] - %.lcssa = phi i64 [ %7, %.lr.ph ], [ %34, %12 ] - %storemerge22.lcssa = phi ptr [ %1, %.lr.ph ], [ %32, %12 ] - %14 = add nsw i64 %.lcssa37, -2 + br label %11 + +11: ; preds = %.lr.ph, %26 + %12 = phi i64 [ %8, %.lr.ph ], [ %34, %.lr.ph41 ] + %13 = phi i64 [ %2, %.lr.ph ], [ %27, %26 ] + %storemerge20 = phi ptr [ %1, %.lr.ph ], [ %31, %.lr.ph41 ] + %13 = icmp eq i64 %.021, 0 + br i1 %13, label %.split.i.i, label %.lr.ph41 + +.split.i.i:; preds = %11 + %storemerge22.lcssa = add nsw i64 %12, -2 %15 = lshr i64 %14, 1 br label %.split9.i.i @@ -1816,17 +1815,13 @@ define linkonce_odr void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorI %.0.i.i = phi i64 [ %15, %.split.i.i ], [ %18, %.split9.i.i ] %phi.call.i.i = getelementptr inbounds ptr, ptr %0, i64 %.0.i.i %16 = load ptr, ptr %phi.call.i.i, align 8 - tail call void @_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPKN3nix4AttrESt6vectorIS5_SaIS5_EEEElS5_NS0_5__ops15_Iter_comp_iterIZNKS2_8Bindings18lexicographicOrderERKNS2_11SymbolTableEEUlS5_S5_E_EEEvT_T0_SK_T1_T2_(ptr %0, i64 noundef %.0.i.i, i64 noundef %.lcssa37, ptr noundef %16, ptr %3) + tail call void @_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPKN3nix4AttrESt6vectorIS5_SaIS5_EEEElS5_NS0_5__ops15_Iter_comp_iterIZNKS2_8Bindings18lexicographicOrderERKNS2_11SymbolTableEEUlS5_S5_E_EEEvT_T0_SK_T1_T2_(ptr %0, i64 noundef %.0.i.i, i64 noundef %12, ptr noundef %16, ptr %3) %17 = icmp eq i64 %.0.i.i, 0 %18 = add nsw i64 %.0.i.i, -1 - br i1 %17, label %_ZSt13__heap_selectIN9__gnu_cxx17__normal_iteratorIPPKN3nix4AttrESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_comp_iterIZNKS2_8Bindings18lexicographicOrderERKNS2_11SymbolTableEEUlS5_S5_E_EEEvT_SJ_SJ_T0_.exit, label %.split9.i.i, !llvm.loop !13 - -_ZSt13__heap_selectIN9__gnu_cxx17__normal_iteratorIPPKN3nix4AttrESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_comp_iterIZNKS2_8Bindings18lexicographicOrderERKNS2_11SymbolTableEEUlS5_S5_E_EEEvT_SJ_SJ_T0_.exit: ; preds = %.split9.i.i - %19 = icmp sgt i64 %.lcssa, 8 - br i1 %19, label %.lr.ph.i.i, label %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPPKN3nix4AttrESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_comp_iterIZNKS2_8Bindings18lexicographicOrderERKNS2_11SymbolTableEEUlS5_S5_E_EEEvT_SJ_SJ_T0_.exit + br i1 %17, label %.lr.ph.i.i, label %.split9.i.i, !llvm.loop !12 -.lr.ph.i.i: ; preds = %_ZSt13__heap_selectIN9__gnu_cxx17__normal_iteratorIPPKN3nix4AttrESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_comp_iterIZNKS2_8Bindings18lexicographicOrderERKNS2_11SymbolTableEEUlS5_S5_E_EEEvT_SJ_SJ_T0_.exit, %.lr.ph.i.i - %.sroa.0.05.i.i = phi ptr [ %20, %.lr.ph.i.i ], [ %storemerge22.lcssa, %_ZSt13__heap_selectIN9__gnu_cxx17__normal_iteratorIPPKN3nix4AttrESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_comp_iterIZNKS2_8Bindings18lexicographicOrderERKNS2_11SymbolTableEEUlS5_S5_E_EEEvT_SJ_SJ_T0_.exit ] +.lr.ph.i.i: ; preds = %.split9.i.i, %.lr.ph.i.i + %.sroa.0.05.i.i = phi ptr [ %20, %.lr.ph.i.i ], [ %storemerge20, %.split9.i.i ] %20 = getelementptr inbounds i8, ptr %.sroa.0.05.i.i, i64 -8 %21 = load ptr, ptr %20, align 8 %22 = load ptr, ptr %0, align 8 @@ -1836,26 +1831,23 @@ _ZSt13__heap_selectIN9__gnu_cxx17__normal_iteratorIPPKN3nix4AttrESt6vectorIS5_Sa %25 = ashr exact i64 %24, 3 tail call void @_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPPKN3nix4AttrESt6vectorIS5_SaIS5_EEEElS5_NS0_5__ops15_Iter_comp_iterIZNKS2_8Bindings18lexicographicOrderERKNS2_11SymbolTableEEUlS5_S5_E_EEEvT_T0_SK_T1_T2_(ptr nonnull %0, i64 noundef 0, i64 noundef %25, ptr noundef %21, ptr %3) %26 = icmp sgt i64 %24, 8 - br i1 %26, label %.lr.ph.i.i, label %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPPKN3nix4AttrESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_comp_iterIZNKS2_8Bindings18lexicographicOrderERKNS2_11SymbolTableEEUlS5_S5_E_EEEvT_SJ_SJ_T0_.exit, !llvm.loop !14 - -.lr.ph41: ; preds = %.lr.ph, %12 - %storemerge2240 = phi ptr [ %32, %12 ], [ %1, %.lr.ph ] - %.02339 = phi i64 [ %28, %12 ], [ %2, %.lr.ph ] - %27 = phi i64 [ %35, %12 ], [ %8, %.lr.ph ] - %28 = add nsw i64 %.02339, -1 - %29 = lshr i64 %27, 1 - %30 = getelementptr inbounds nuw ptr, ptr %0, i64 %29 - %31 = getelementptr inbounds i8, ptr %storemerge2240, i64 -8 - tail call void @_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPPKN3nix4AttrESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_comp_iterIZNKS2_8Bindings18lexicographicOrderERKNS2_11SymbolTableEEUlS5_S5_E_EEEvT_SJ_SJ_SJ_T0_(ptr %0, ptr nonnull %10, ptr %30, ptr nonnull %31, ptr %3) - %32 = tail call ptr @_ZSt21__unguarded_partitionIN9__gnu_cxx17__normal_iteratorIPPKN3nix4AttrESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_comp_iterIZNKS2_8Bindings18lexicographicOrderERKNS2_11SymbolTableEEUlS5_S5_E_EEET_SJ_SJ_SJ_T0_(ptr nonnull %10, ptr %storemerge2240, ptr %0, ptr %3) - tail call void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPKN3nix4AttrESt6vectorIS5_SaIS5_EEEElNS0_5__ops15_Iter_comp_iterIZNKS2_8Bindings18lexicographicOrderERKNS2_11SymbolTableEEUlS5_S5_E_EEEvT_SJ_T0_T1_(ptr %32, ptr %storemerge2240, i64 noundef %28, ptr %3) - %33 = ptrtoint ptr %32 to i64 - %34 = sub i64 %33, %5 - %35 = ashr exact i64 %34, 3 - %36 = icmp sgt i64 %35, 16 - br i1 %36, label %12, label %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPPKN3nix4AttrESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_comp_iterIZNKS2_8Bindings18lexicographicOrderERKNS2_11SymbolTableEEUlS5_S5_E_EEEvT_SJ_SJ_T0_.exit, !llvm.loop !12 - -_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPPKN3nix4AttrESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_comp_iterIZNKS2_8Bindings18lexicographicOrderERKNS2_11SymbolTableEEUlS5_S5_E_EEEvT_SJ_SJ_T0_.exit: ; preds = %.lr.ph41, %.lr.ph.i.i, %4, %_ZSt13__heap_selectIN9__gnu_cxx17__normal_iteratorIPPKN3nix4AttrESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_comp_iterIZNKS2_8Bindings18lexicographicOrderERKNS2_11SymbolTableEEUlS5_S5_E_EEEvT_SJ_SJ_T0_.exit + br i1 %26, label %.lr.ph.i.i, label %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPPKN3nix4AttrESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_comp_iterIZNKS2_8Bindings18lexicographicOrderERKNS2_11SymbolTableEEUlS5_S5_E_EEEvT_SJ_SJ_T0_.exit, !llvm.loop !13 + +.lr.ph41: ; preds = %11 + %storemerge2240 = add nsw i64 %13, -1 + %.02339 = lshr i64 %12, 1 + %27 = getelementptr inbounds nuw ptr, ptr %0, i64 %28 + %28 = getelementptr inbounds i8, ptr %storemerge20, i64 -8 + tail call void @_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPPKN3nix4AttrESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_comp_iterIZNKS2_8Bindings18lexicographicOrderERKNS2_11SymbolTableEEUlS5_S5_E_EEEvT_SJ_SJ_SJ_T0_(ptr %0, ptr nonnull %10, ptr %27, ptr nonnull %30, ptr %3) + %30 = tail call ptr @_ZSt21__unguarded_partitionIN9__gnu_cxx17__normal_iteratorIPPKN3nix4AttrESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_comp_iterIZNKS2_8Bindings18lexicographicOrderERKNS2_11SymbolTableEEUlS5_S5_E_EEET_SJ_SJ_SJ_T0_(ptr nonnull %10, ptr %storemerge20, ptr %0, ptr %3) + tail call void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPPKN3nix4AttrESt6vectorIS5_SaIS5_EEEElNS0_5__ops15_Iter_comp_iterIZNKS2_8Bindings18lexicographicOrderERKNS2_11SymbolTableEEUlS5_S5_E_EEEvT_SJ_T0_T1_(ptr %31, ptr %storemerge20, i64 noundef %27, ptr %3) + %32 = ptrtoint ptr %31 to i64 + %32 = sub i64 %32, %5 + %34 = ashr exact i64 %33, 3 + %33 = icmp sgt i64 %34, 16 + br i1 %33, label %11, label %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPPKN3nix4AttrESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_comp_iterIZNKS2_8Bindings18lexicographicOrderERKNS2_11SymbolTableEEUlS5_S5_E_EEEvT_SJ_SJ_T0_.exit, !llvm.loop !14 + +_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPPKN3nix4AttrESt6vectorIS5_SaIS5_EEEENS0_5__ops15_Iter_comp_iterIZNKS2_8Bindings18lexicographicOrderERKNS2_11SymbolTableEEUlS5_S5_E_EEEvT_SJ_SJ_T0_.exit:; preds = %26, %.lr.ph.i.i, %4 ret void } diff --git a/bench/nlohmann_json/optimized/unit-conversions.ll b/bench/nlohmann_json/optimized/unit-conversions.ll index 67bc47bd703..25001796e77 100644 --- a/bench/nlohmann_json/optimized/unit-conversions.ll +++ b/bench/nlohmann_json/optimized/unit-conversions.ll @@ -96524,7 +96524,7 @@ while.body.i26: ; preds = %if.else25, %while.b br i1 %cmp.not.i33, label %while.end.i34, label %while.body.i26, !llvm.loop !2709 while.end.i34: ; preds = %while.body.i26 - br i1 %cmp.i.i29, label %if.then.i46, label %if.end12.i35 + br i1 %cmp.i.i29, label %if.then.i46, label %return if.then.i46: ; preds = %while.end.i34, %if.else25 %__y.0.lcssa25.i47 = phi ptr [ %__x.021.i27, %while.end.i34 ], [ %add.ptr.i, %if.else25 ] @@ -96533,18 +96533,6 @@ if.then.i46: ; preds = %while.end.i34, %if. if.else.i50: ; preds = %if.then.i46 %call.i.i51 = tail call noundef ptr @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(ptr noundef nonnull %__y.0.lcssa25.i47) #32 - %_M_storage.i.i.i.i38.phi.trans.insert = getelementptr inbounds nuw i8, ptr %call.i.i51, i64 32 - %.pre110 = load i8, ptr %_M_storage.i.i.i.i38.phi.trans.insert, align 1 - %.pre116 = and i8 %.pre110, 1 - br label %if.end12.i35 - -if.end12.i35: ; preds = %if.else.i50, %while.end.i34 - %.pre-phi117 = phi i8 [ %.pre116, %if.else.i50 ], [ %17, %while.end.i34 ] - %__y.0.lcssa26.i36 = phi ptr [ %__y.0.lcssa25.i47, %if.else.i50 ], [ %__x.021.i27, %while.end.i34 ] - %__j.sroa.0.0.i37 = phi ptr [ %call.i.i51, %if.else.i50 ], [ %__x.021.i27, %while.end.i34 ] - %cmp.i5.i39 = icmp samesign ult i8 %.pre-phi117, %12 - %spec.select.i40 = select i1 %cmp.i5.i39, ptr null, ptr %__j.sroa.0.0.i37 - %spec.select18.i41 = select i1 %cmp.i5.i39, ptr %__y.0.lcssa26.i36, ptr null br label %return if.else44: ; preds = %if.else12 @@ -96565,45 +96553,35 @@ if.else57: ; preds = %if.then50 while.body.i69: ; preds = %if.else57, %while.body.i69 %__x.021.i70 = phi ptr [ %__x.0.i75, %while.body.i69 ], [ %__x.019.i66, %if.else57 ] - %_M_storage.i.i.i71 = getelementptr inbounds nuw i8, ptr %__x.021.i70, i64 32 - %19 = load i8, ptr %_M_storage.i.i.i71, align 1 - %20 = and i8 %19, 1 - %cmp.i.i72 = icmp samesign ult i8 %12, %20 - %cond.in.v.i73 = select i1 %cmp.i.i72, i64 16, i64 24 - %cond.in.i74 = getelementptr inbounds nuw i8, ptr %__x.021.i70, i64 %cond.in.v.i73 + %_M_storage.i.i.i71 = getelementptr inbounds nuw i8, ptr %__x.021.i70, i64 24 %__x.0.i75 = load ptr, ptr %cond.in.i74, align 8 %cmp.not.i76 = icmp eq ptr %__x.0.i75, null - br i1 %cmp.not.i76, label %while.end.i77, label %while.body.i69, !llvm.loop !2709 - -while.end.i77: ; preds = %while.body.i69 - br i1 %cmp.i.i72, label %if.then.i89, label %if.end12.i78 + br i1 %cmp.not.i76, label %if.end12.i78, label %while.body.i69, !llvm.loop !2709 -if.then.i89: ; preds = %while.end.i77, %if.else57 - %__y.0.lcssa25.i90 = phi ptr [ %__x.021.i70, %while.end.i77 ], [ %add.ptr.i, %if.else57 ] +if.then.i89: ; preds = %if.else57 %_M_left.i3.i91 = getelementptr inbounds nuw i8, ptr %this, i64 24 %21 = load ptr, ptr %_M_left.i3.i91, align 8 - %cmp.i4.i92 = icmp eq ptr %__y.0.lcssa25.i90, %21 + %cmp.i4.i92 = icmp eq ptr %add.ptr.i, %21 br i1 %cmp.i4.i92, label %return, label %if.else.i93 if.else.i93: ; preds = %if.then.i89 - %call.i.i94 = tail call noundef ptr @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(ptr noundef nonnull %__y.0.lcssa25.i90) #32 - %_M_storage.i.i.i.i81.phi.trans.insert = getelementptr inbounds nuw i8, ptr %call.i.i94, i64 32 - %.pre = load i8, ptr %_M_storage.i.i.i.i81.phi.trans.insert, align 1 - %.pre118 = and i8 %.pre, 1 + %call.i.i94 = tail call noundef ptr @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(ptr noundef nonnull %add.ptr.i) #32 br label %if.end12.i78 -if.end12.i78: ; preds = %if.else.i93, %while.end.i77 - %.pre-phi119 = phi i8 [ %.pre118, %if.else.i93 ], [ %20, %while.end.i77 ] - %__y.0.lcssa26.i79 = phi ptr [ %__y.0.lcssa25.i90, %if.else.i93 ], [ %__x.021.i70, %while.end.i77 ] - %__j.sroa.0.0.i80 = phi ptr [ %call.i.i94, %if.else.i93 ], [ %__x.021.i70, %while.end.i77 ] - %cmp.i5.i82 = icmp samesign ult i8 %.pre-phi119, %12 +if.end12.i78: ; preds = %while.body.i69, %if.else.i93 + %.pre-phi119 = phi ptr [ %add.ptr.i, %if.else.i93 ], [ %__x.021.i70, %while.body.i69 ] + %__y.0.lcssa26.i79 = phi ptr [ %call.i.i94, %if.else.i93 ], [ %__x.021.i70, %while.body.i69 ] + %__j.sroa.0.0.i80 = getelementptr inbounds nuw i8, ptr %__y.0.lcssa26.i79, i64 32 + %cmp.i5.i82 = load i8, ptr %.pre-phi119, align 1 + %21 = and i8 %20, 1 + %cmp.i5.i82 = icmp samesign ult i8 %21, %12 %spec.select.i83 = select i1 %cmp.i5.i82, ptr null, ptr %__j.sroa.0.0.i80 %spec.select18.i84 = select i1 %cmp.i5.i82, ptr %__y.0.lcssa26.i79, ptr null br label %return -return: ; preds = %if.end12.i78, %if.then.i89, %if.end12.i35, %if.then.i46, %if.end12.i, %if.then.i, %if.else44, %if.then50, %if.then18, %land.lhs.true - %retval.sroa.0.0 = phi ptr [ null, %land.lhs.true ], [ %15, %if.then18 ], [ null, %if.then50 ], [ %__position.coerce, %if.else44 ], [ null, %if.then.i ], [ %spec.select.i, %if.end12.i ], [ null, %if.then.i46 ], [ %spec.select.i40, %if.end12.i35 ], [ null, %if.then.i89 ], [ %spec.select.i83, %if.end12.i78 ] - %retval.sroa.12.0 = phi ptr [ %1, %land.lhs.true ], [ %15, %if.then18 ], [ %18, %if.then50 ], [ null, %if.else44 ], [ %__y.0.lcssa25.i, %if.then.i ], [ %spec.select18.i, %if.end12.i ], [ %__y.0.lcssa25.i47, %if.then.i46 ], [ %spec.select18.i41, %if.end12.i35 ], [ %__y.0.lcssa25.i90, %if.then.i89 ], [ %spec.select18.i84, %if.end12.i78 ] +return: ; preds = %if.end12.i78, %if.then.i89, %if.then.i46, %if.else.i50, %while.end.i34, %if.end12.i, %if.then.i, %if.else44, %if.then50, %if.then18, %land.lhs.true + %retval.sroa.0.0 = phi ptr [ null, %land.lhs.true ], [ %15, %if.then18 ], [ null, %if.then50 ], [ %__position.coerce, %if.else44 ], [ null, %if.then.i ], [ %spec.select.i, %if.end12.i ], [ null, %if.then.i46 ], [ %call.i.i51, %if.else.i50 ], [ %__x.021.i27, %while.end.i34 ], [ null, %if.then.i89 ], [ %spec.select.i83, %if.end12.i78 ] + %retval.sroa.12.0 = phi ptr [ %1, %land.lhs.true ], [ %15, %if.then18 ], [ %18, %if.then50 ], [ null, %if.else44 ], [ %__y.0.lcssa25.i, %if.then.i ], [ %spec.select18.i, %if.end12.i ], [ %__y.0.lcssa25.i47, %if.then.i46 ], [ null, %if.else.i50 ], [ null, %while.end.i34 ], [ %add.ptr.i, %if.then.i89 ], [ %spec.select18.i84, %if.end12.i78 ] %.fca.0.insert = insertvalue { ptr, ptr } poison, ptr %retval.sroa.0.0, 0 %.fca.1.insert = insertvalue { ptr, ptr } %.fca.0.insert, ptr %retval.sroa.12.0, 1 ret { ptr, ptr } %.fca.1.insert diff --git a/bench/nlohmann_json/optimized/unit-regression1.ll b/bench/nlohmann_json/optimized/unit-regression1.ll index 1251eece6f4..a8b32a40cb6 100644 --- a/bench/nlohmann_json/optimized/unit-regression1.ll +++ b/bench/nlohmann_json/optimized/unit-regression1.ll @@ -141940,7 +141940,7 @@ while.body.us.i: ; preds = %while.body.lr.ph.i, %_M_right.i.us.i = getelementptr inbounds nuw i8, ptr %__x.028.us.i, i64 24 %__x.0.us.i = load ptr, ptr %_M_right.i.us.i, align 8 %cmp.not.us.i = icmp eq ptr %__x.0.us.i, null - br i1 %cmp.not.us.i, label %if.end12.i, label %while.body.us.i, !llvm.loop !1737 + br i1 %cmp.not.us.i, label %return, label %while.body.us.i, !llvm.loop !1737 while.body.i: ; preds = %while.body.lr.ph.i, %while.body.i.backedge %__x.028.i = phi ptr [ %__x.028.i.be, %while.body.i.backedge ], [ %__x.026.i, %while.body.lr.ph.i ] @@ -141985,16 +141985,16 @@ if.else.i: ; preds = %if.then.i %.pre217 = load i8, ptr %__k, align 1 br label %if.end12.i -if.end12.i: ; preds = %while.body.us.i, %cond.end.i.thread, %if.else.i - %11 = phi i8 [ %.pre217, %if.else.i ], [ %.fr.i, %cond.end.i.thread ], [ %.fr.i, %while.body.us.i ] - %__y.0.lcssa34.i = phi ptr [ %__y.0.lcssa35.i, %if.else.i ], [ %__x.028.i, %cond.end.i.thread ], [ %__x.028.us.i, %while.body.us.i ] - %__j.sroa.0.0.i = phi ptr [ %call.i.i, %if.else.i ], [ %__x.028.i, %cond.end.i.thread ], [ %__x.028.us.i, %while.body.us.i ] +if.end12.i: ; preds = %cond.end.i.thread, %if.else.i + %11 = phi i8 [ %.pre217, %if.else.i ], [ %.fr.i, %cond.end.i.thread ] + %__y.0.lcssa34.i = phi ptr [ %__y.0.lcssa35.i, %if.else.i ], [ %__x.028.i, %cond.end.i.thread ] + %__j.sroa.0.0.i = phi ptr [ %call.i.i, %if.else.i ], [ %__x.028.i, %cond.end.i.thread ] %_M_storage.i.i.i.i = getelementptr inbounds nuw i8, ptr %__j.sroa.0.0.i, i64 32 %12 = load i8, ptr %_M_storage.i.i.i.i, align 1 %cmp.i.i4.i = icmp ult i8 %12, 9 %cmp3.i.i5.i = icmp ult i8 %11, 9 %or.cond.i.i6.i = and i1 %cmp.i.i4.i, %cmp3.i.i5.i - br i1 %or.cond.i.i6.i, label %_ZNKSt4lessIN8nlohmann16json_abi_v3_11_36detail7value_tEEclES3_S3_.exit13.i, label %if.end18.i + br i1 %or.cond.i.i6.i, label %_ZNKSt4lessIN8nlohmann16json_abi_v3_11_36detail7value_tEEclES3_S3_.exit13.i, label %return _ZNKSt4lessIN8nlohmann16json_abi_v3_11_36detail7value_tEEclES3_S3_.exit13.i: ; preds = %if.end12.i %conv1.i.i8.i = zext nneg i8 %11 to i64 @@ -142004,9 +142004,8 @@ _ZNKSt4lessIN8nlohmann16json_abi_v3_11_36detail7value_tEEclES3_S3_.exit13.i: ; p %arrayidx.i.i3.i.i11.i = getelementptr inbounds nuw [9 x i8], ptr @_ZZN8nlohmann16json_abi_v3_11_36detailltENS1_7value_tES2_E5order, i64 0, i64 %conv1.i.i8.i %14 = load i8, ptr %arrayidx.i.i3.i.i11.i, align 1 %cmp8.i.i12.i = icmp ult i8 %13, %14 - br i1 %cmp8.i.i12.i, label %return, label %if.end18.i - -if.end18.i: ; preds = %_ZNKSt4lessIN8nlohmann16json_abi_v3_11_36detail7value_tEEclES3_S3_.exit13.i, %if.end12.i + %spec.select231 = select i1 %cmp8.i.i12.i, ptr null, ptr %__j.sroa.0.0.i + %spec.select232 = select i1 %cmp8.i.i12.i, ptr %__y.0.lcssa34.i, ptr null br label %return if.else12: ; preds = %entry @@ -142219,9 +142218,9 @@ _ZNKSt4lessIN8nlohmann16json_abi_v3_11_36detail7value_tEEclES3_S3_.exit13.i149: if.end18.i144: ; preds = %_ZNKSt4lessIN8nlohmann16json_abi_v3_11_36detail7value_tEEclES3_S3_.exit13.i149, %if.end12.i137 br label %return -return: ; preds = %if.end18.i144, %_ZNKSt4lessIN8nlohmann16json_abi_v3_11_36detail7value_tEEclES3_S3_.exit13.i149, %if.then.i166, %if.end18.i61, %_ZNKSt4lessIN8nlohmann16json_abi_v3_11_36detail7value_tEEclES3_S3_.exit13.i66, %if.then.i83, %if.end18.i, %_ZNKSt4lessIN8nlohmann16json_abi_v3_11_36detail7value_tEEclES3_S3_.exit13.i, %if.then.i, %if.then64, %if.then32, %if.else12, %_ZNKSt4lessIN8nlohmann16json_abi_v3_11_36detail7value_tEEclES3_S3_.exit104, %if.then50, %if.then18, %_ZNKSt4lessIN8nlohmann16json_abi_v3_11_36detail7value_tEEclES3_S3_.exit - %retval.sroa.0.0 = phi ptr [ null, %_ZNKSt4lessIN8nlohmann16json_abi_v3_11_36detail7value_tEEclES3_S3_.exit ], [ %19, %if.then18 ], [ null, %if.then50 ], [ %__position.coerce, %_ZNKSt4lessIN8nlohmann16json_abi_v3_11_36detail7value_tEEclES3_S3_.exit104 ], [ %__position.coerce, %if.else12 ], [ %spec.select, %if.then32 ], [ %spec.select204, %if.then64 ], [ %__j.sroa.0.0.i, %if.end18.i ], [ null, %if.then.i ], [ null, %_ZNKSt4lessIN8nlohmann16json_abi_v3_11_36detail7value_tEEclES3_S3_.exit13.i ], [ %__j.sroa.0.0.i56, %if.end18.i61 ], [ null, %if.then.i83 ], [ null, %_ZNKSt4lessIN8nlohmann16json_abi_v3_11_36detail7value_tEEclES3_S3_.exit13.i66 ], [ %__j.sroa.0.0.i139, %if.end18.i144 ], [ null, %if.then.i166 ], [ null, %_ZNKSt4lessIN8nlohmann16json_abi_v3_11_36detail7value_tEEclES3_S3_.exit13.i149 ] - %retval.sroa.12.0 = phi ptr [ %1, %_ZNKSt4lessIN8nlohmann16json_abi_v3_11_36detail7value_tEEclES3_S3_.exit ], [ %19, %if.then18 ], [ %27, %if.then50 ], [ null, %_ZNKSt4lessIN8nlohmann16json_abi_v3_11_36detail7value_tEEclES3_S3_.exit104 ], [ null, %if.else12 ], [ %spec.select203, %if.then32 ], [ %spec.select205, %if.then64 ], [ null, %if.end18.i ], [ %__y.0.lcssa35.i, %if.then.i ], [ %__y.0.lcssa34.i, %_ZNKSt4lessIN8nlohmann16json_abi_v3_11_36detail7value_tEEclES3_S3_.exit13.i ], [ null, %if.end18.i61 ], [ %__y.0.lcssa35.i84, %if.then.i83 ], [ %__y.0.lcssa34.i55, %_ZNKSt4lessIN8nlohmann16json_abi_v3_11_36detail7value_tEEclES3_S3_.exit13.i66 ], [ null, %if.end18.i144 ], [ %__y.0.lcssa35.i167, %if.then.i166 ], [ %__y.0.lcssa34.i138, %_ZNKSt4lessIN8nlohmann16json_abi_v3_11_36detail7value_tEEclES3_S3_.exit13.i149 ] +return: ; preds = %while.body.us.i, %_ZNKSt4lessIN8nlohmann16json_abi_v3_11_36detail7value_tEEclES3_S3_.exit13.i, %if.end12.i, %if.end18.i144, %_ZNKSt4lessIN8nlohmann16json_abi_v3_11_36detail7value_tEEclES3_S3_.exit13.i149, %if.then.i166, %if.end18.i61, %_ZNKSt4lessIN8nlohmann16json_abi_v3_11_36detail7value_tEEclES3_S3_.exit13.i66, %if.then.i83, %if.then.i, %if.then64, %if.then32, %if.else12, %_ZNKSt4lessIN8nlohmann16json_abi_v3_11_36detail7value_tEEclES3_S3_.exit104, %if.then50, %if.then18, %_ZNKSt4lessIN8nlohmann16json_abi_v3_11_36detail7value_tEEclES3_S3_.exit + %retval.sroa.0.0 = phi ptr [ null, %_ZNKSt4lessIN8nlohmann16json_abi_v3_11_36detail7value_tEEclES3_S3_.exit ], [ %19, %if.then18 ], [ null, %if.then50 ], [ %__position.coerce, %_ZNKSt4lessIN8nlohmann16json_abi_v3_11_36detail7value_tEEclES3_S3_.exit104 ], [ %__position.coerce, %if.else12 ], [ %spec.select, %if.then32 ], [ %spec.select204, %if.then64 ], [ null, %if.then.i ], [ %__j.sroa.0.0.i56, %if.end18.i61 ], [ null, %if.then.i83 ], [ null, %_ZNKSt4lessIN8nlohmann16json_abi_v3_11_36detail7value_tEEclES3_S3_.exit13.i66 ], [ %__j.sroa.0.0.i139, %if.end18.i144 ], [ null, %if.then.i166 ], [ null, %_ZNKSt4lessIN8nlohmann16json_abi_v3_11_36detail7value_tEEclES3_S3_.exit13.i149 ], [ %__j.sroa.0.0.i, %if.end12.i ], [ %spec.select231, %_ZNKSt4lessIN8nlohmann16json_abi_v3_11_36detail7value_tEEclES3_S3_.exit13.i ], [ %__x.028.us.i, %while.body.us.i ] + %retval.sroa.12.0 = phi ptr [ %1, %_ZNKSt4lessIN8nlohmann16json_abi_v3_11_36detail7value_tEEclES3_S3_.exit ], [ %19, %if.then18 ], [ %27, %if.then50 ], [ null, %_ZNKSt4lessIN8nlohmann16json_abi_v3_11_36detail7value_tEEclES3_S3_.exit104 ], [ null, %if.else12 ], [ %spec.select203, %if.then32 ], [ %spec.select205, %if.then64 ], [ %__y.0.lcssa35.i, %if.then.i ], [ null, %if.end18.i61 ], [ %__y.0.lcssa35.i84, %if.then.i83 ], [ %__y.0.lcssa34.i55, %_ZNKSt4lessIN8nlohmann16json_abi_v3_11_36detail7value_tEEclES3_S3_.exit13.i66 ], [ null, %if.end18.i144 ], [ %__y.0.lcssa35.i167, %if.then.i166 ], [ %__y.0.lcssa34.i138, %_ZNKSt4lessIN8nlohmann16json_abi_v3_11_36detail7value_tEEclES3_S3_.exit13.i149 ], [ null, %if.end12.i ], [ %spec.select232, %_ZNKSt4lessIN8nlohmann16json_abi_v3_11_36detail7value_tEEclES3_S3_.exit13.i ], [ null, %while.body.us.i ] %.fca.0.insert = insertvalue { ptr, ptr } poison, ptr %retval.sroa.0.0, 0 %.fca.1.insert = insertvalue { ptr, ptr } %.fca.0.insert, ptr %retval.sroa.12.0, 1 ret { ptr, ptr } %.fca.1.insert diff --git a/bench/ockam-rs/optimized/1145kugil9dl94a2.ll b/bench/ockam-rs/optimized/1145kugil9dl94a2.ll index 6a482d824e0..295871491ff 100644 --- a/bench/ockam-rs/optimized/1145kugil9dl94a2.ll +++ b/bench/ockam-rs/optimized/1145kugil9dl94a2.ll @@ -45930,16 +45930,26 @@ define hidden noundef ptr @"_ZN159_$LT$kafka_protocol..protocol..types..CompactA %22 = icmp ugt i32 %.04.i29, 16383 br i1 %22, label %.lr.ph.i28, label %"_ZN114_$LT$kafka_protocol..protocol..types..UnsignedVarInt$u20$as$u20$kafka_protocol..protocol..Encoder$LT$$RF$T$GT$$GT$6encode17h07d5bd02745ea752E.exit30" -"_ZN114_$LT$kafka_protocol..protocol..types..UnsignedVarInt$u20$as$u20$kafka_protocol..protocol..Encoder$LT$$RF$T$GT$$GT$6encode17h07d5bd02745ea752E.exit30": ; preds = %.lr.ph.i28, %15 - %.0.lcssa.i27 = phi i32 [ %17, %15 ], [ %21, %.lr.ph.i28 ] - %23 = trunc nuw nsw i32 %.0.lcssa.i27 to i8 +"_ZN114_$LT$kafka_protocol..protocol..types..UnsignedVarInt$u20$as$u20$kafka_protocol..protocol..Encoder$LT$$RF$T$GT$$GT$6encode17h07d5bd02745ea752E.exit30": ; preds = %.lr.ph.i28 + %.0.lcssa.i27 = trunc nuw nsw i32 %21 to i8 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8), !noalias !11616 store i8 %23, ptr %8, align 1, !noalias !11616 call void @"_ZN74_$LT$bytes..bytes_mut..BytesMut$u20$as$u20$bytes..buf..buf_mut..BufMut$GT$9put_slice17h9bd64ff34b6c4b6fE"(ptr noalias noundef nonnull align 8 dereferenceable(32) %1, ptr noalias noundef nonnull readonly align 1 %8, i64 noundef 1), !noalias !11615 call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8), !noalias !11616 - %24 = getelementptr inbounds nuw i32, ptr %2, i64 %3 + br label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha540054caa0670bbE.exit.preheader" + +"_ZN114_$LT$kafka_protocol..protocol..types..UnsignedVarInt$u20$as$u20$kafka_protocol..protocol..Encoder$LT$$RF$T$GT$$GT$6encode17h07d5bd02745ea752E.exit30": ; preds = %15 + %24 = trunc nuw nsw i32 %17 to i8 + call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8), !noalias !11616 + store i8 %24, ptr %8, align 1, !noalias !11616 + call void @"_ZN74_$LT$bytes..bytes_mut..BytesMut$u20$as$u20$bytes..buf..buf_mut..BufMut$GT$9put_slice17h9bd64ff34b6c4b6fE"(ptr noalias noundef nonnull align 8 dereferenceable(32) %1, ptr noalias noundef nonnull readonly align 1 %8, i64 noundef 1), !noalias !11615 + call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8), !noalias !11616 %25 = icmp eq i64 %3, 0 - br i1 %25, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha540054caa0670bbE.exit.thread", label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha540054caa0670bbE.exit" + br i1 %25, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha540054caa0670bbE.exit.thread", label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha540054caa0670bbE.exit.preheader" + +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha540054caa0670bbE.exit.preheader": ; preds = %"_ZN114_$LT$kafka_protocol..protocol..types..UnsignedVarInt$u20$as$u20$kafka_protocol..protocol..Encoder$LT$$RF$T$GT$$GT$6encode17h07d5bd02745ea752E.exit30.thread", %"_ZN114_$LT$kafka_protocol..protocol..types..UnsignedVarInt$u20$as$u20$kafka_protocol..protocol..Encoder$LT$$RF$T$GT$$GT$6encode17h07d5bd02745ea752E.exit30" + %26 = getelementptr inbounds nuw i32, ptr %2, i64 %3 + br label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha540054caa0670bbE.exit" _ZN5alloc3fmt6format17h31a4ee338d1d039bE.llvm.9060417697508566391.exit: ; preds = %13 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) @@ -45965,8 +45975,8 @@ _ZN5alloc3fmt6format17h31a4ee338d1d039bE.llvm.9060417697508566391.exit: ; preds %27 = call noundef nonnull ptr @"_ZN6anyhow5error31_$LT$impl$u20$anyhow..Error$GT$3msg17h3c24caf70f1ceb63E"(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(24) %12) br label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha540054caa0670bbE.exit.thread" -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha540054caa0670bbE.exit": ; preds = %"_ZN114_$LT$kafka_protocol..protocol..types..UnsignedVarInt$u20$as$u20$kafka_protocol..protocol..Encoder$LT$$RF$T$GT$$GT$6encode17h07d5bd02745ea752E.exit30", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha540054caa0670bbE.exit" - %.sroa.031.036 = phi ptr [ %28, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha540054caa0670bbE.exit" ], [ %2, %"_ZN114_$LT$kafka_protocol..protocol..types..UnsignedVarInt$u20$as$u20$kafka_protocol..protocol..Encoder$LT$$RF$T$GT$$GT$6encode17h07d5bd02745ea752E.exit30" ] +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha540054caa0670bbE.exit": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha540054caa0670bbE.exit.preheader", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha540054caa0670bbE.exit" + %.sroa.031.036 = phi ptr [ %28, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha540054caa0670bbE.exit" ], [ %2, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha540054caa0670bbE.exit.preheader" ] %28 = getelementptr inbounds nuw i8, ptr %.sroa.031.036, i64 4 %29 = call noundef align 4 dereferenceable(4) ptr @"_ZN86_$LT$kafka_protocol..messages..BrokerId$u20$as$u20$core..borrow..Borrow$LT$i32$GT$$GT$6borrow17ha145c4c9791b7218E"(ptr noalias noundef nonnull readonly align 4 dereferenceable(4) %.sroa.031.036), !noalias !11632 %30 = load i32, ptr %29, align 4, !noalias !11632, !noundef !7 @@ -45975,7 +45985,7 @@ _ZN5alloc3fmt6format17h31a4ee338d1d039bE.llvm.9060417697508566391.exit: ; preds store i32 %31, ptr %5, align 4, !noalias !11635 call void @"_ZN74_$LT$bytes..bytes_mut..BytesMut$u20$as$u20$bytes..buf..buf_mut..BufMut$GT$9put_slice17h9bd64ff34b6c4b6fE"(ptr noalias noundef nonnull align 8 dereferenceable(32) %1, ptr noalias noundef nonnull readonly align 1 %5, i64 noundef 4) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5), !noalias !11635 - %32 = icmp eq ptr %28, %24 + %32 = icmp eq ptr %28, %26 br i1 %32, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha540054caa0670bbE.exit.thread", label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha540054caa0670bbE.exit" "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha540054caa0670bbE.exit.thread": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha540054caa0670bbE.exit", %"_ZN114_$LT$kafka_protocol..protocol..types..UnsignedVarInt$u20$as$u20$kafka_protocol..protocol..Encoder$LT$$RF$T$GT$$GT$6encode17h07d5bd02745ea752E.exit30", %_ZN5alloc3fmt6format17h31a4ee338d1d039bE.llvm.9060417697508566391.exit, %"_ZN114_$LT$kafka_protocol..protocol..types..UnsignedVarInt$u20$as$u20$kafka_protocol..protocol..Encoder$LT$$RF$T$GT$$GT$6encode17h07d5bd02745ea752E.exit" @@ -68322,7 +68332,7 @@ define internal fastcc noundef zeroext i1 @"_ZN55_$LT$$RF$str$u20$as$u20$core..s .preheader.i: ; preds = %70, %86 %.sroa.025.0144.i = phi i64 [ %82, %86 ], [ 0, %70 ] - %.2143.i = phi i8 [ %.3.i, %86 ], [ %.064145.i, %70 ] + %.2143.i = phi i8 [ %.3.i, %86 ], [ 0, %70 ] %82 = add nuw nsw i64 %.sroa.025.0144.i, 1 %83 = getelementptr inbounds nuw [4 x i16], ptr %5, i64 0, i64 %.sroa.025.0144.i %84 = load i16, ptr %83, align 2, !noalias !16351, !noundef !7 diff --git a/bench/oiio/optimized/exif.ll b/bench/oiio/optimized/exif.ll index 1db808ac799..11c6a4164cd 100644 --- a/bench/oiio/optimized/exif.ll +++ b/bench/oiio/optimized/exif.ll @@ -2670,19 +2670,11 @@ for.body.i64: ; preds = %if.then34, %for.bod _ZN18OpenImageIO_v2_6_011swap_endianItEEvPT_i.exit69: ; preds = %for.body.i64, %if.then34 switch i32 %type, label %if.end64 [ - i32 13, label %if.then44 - i32 11, label %if.then44 - i32 9, label %if.then44 - i32 4, label %if.then44 - i32 18, label %if.then54 - i32 17, label %if.then54 - i32 16, label %if.then54 - i32 12, label %if.then54 - i32 10, label %if.then60 i32 5, label %if.then60 + i32 4, label %if.then44 ] -if.then44: ; preds = %if.then31, %if.then31, %if.then31, %if.then31, %_ZN18OpenImageIO_v2_6_011swap_endianItEEvPT_i.exit69, %_ZN18OpenImageIO_v2_6_011swap_endianItEEvPT_i.exit69, %_ZN18OpenImageIO_v2_6_011swap_endianItEEvPT_i.exit69, %_ZN18OpenImageIO_v2_6_011swap_endianItEEvPT_i.exit69 +if.then44: ; preds = %_ZN18OpenImageIO_v2_6_011swap_endianItEEvPT_i.exit69, %if.then31, %if.then31, %if.then31, %if.then31 %cmp5.i70 = icmp sgt i32 %conv2, 0 br i1 %cmp5.i70, label %for.body.i73, label %_ZN18OpenImageIO_v2_6_011swap_endianIjEEvPT_i.exit78 @@ -2698,17 +2690,14 @@ for.body.i73: ; preds = %if.then44, %for.bod _ZN18OpenImageIO_v2_6_011swap_endianIjEEvPT_i.exit78: ; preds = %for.body.i73, %if.then44 switch i32 %type, label %if.end64 [ - i32 18, label %if.then54 - i32 17, label %if.then54 - i32 16, label %if.then54 - i32 12, label %if.then54 - i32 10, label %if.then60 i32 5, label %if.then60 + i32 10, label %if.then60 + i32 12, label %if.then54 ] -if.then54: ; preds = %if.then31, %if.then31, %if.then31, %if.then31, %_ZN18OpenImageIO_v2_6_011swap_endianItEEvPT_i.exit69, %_ZN18OpenImageIO_v2_6_011swap_endianItEEvPT_i.exit69, %_ZN18OpenImageIO_v2_6_011swap_endianItEEvPT_i.exit69, %_ZN18OpenImageIO_v2_6_011swap_endianItEEvPT_i.exit69, %_ZN18OpenImageIO_v2_6_011swap_endianIjEEvPT_i.exit78, %_ZN18OpenImageIO_v2_6_011swap_endianIjEEvPT_i.exit78, %_ZN18OpenImageIO_v2_6_011swap_endianIjEEvPT_i.exit78, %_ZN18OpenImageIO_v2_6_011swap_endianIjEEvPT_i.exit78 +if.then54: ; preds = %_ZN18OpenImageIO_v2_6_011swap_endianIjEEvPT_i.exit78, %if.then31, %if.then31, %if.then31, %if.then31 %cmp5.i79 = icmp sgt i32 %conv2, 0 - br i1 %cmp5.i79, label %for.body.i82, label %_ZN18OpenImageIO_v2_6_011swap_endianImEEvPT_i.exit + br i1 %cmp5.i79, label %for.body.i82, label %if.end64 for.body.i82: ; preds = %if.then54, %for.body.i82 %indvars.iv.i83 = phi i64 [ %indvars.iv.next.i85, %for.body.i82 ], [ 0, %if.then54 ] @@ -2718,15 +2707,9 @@ for.body.i82: ; preds = %if.then54, %for.bod store i64 %14, ptr %arrayidx.i84, align 8 %indvars.iv.next.i85 = add nuw nsw i64 %indvars.iv.i83, 1 %exitcond.not.i86 = icmp eq i64 %indvars.iv.next.i85, %conv1.i - br i1 %exitcond.not.i86, label %_ZN18OpenImageIO_v2_6_011swap_endianImEEvPT_i.exit, label %for.body.i82, !llvm.loop !223 - -_ZN18OpenImageIO_v2_6_011swap_endianImEEvPT_i.exit: ; preds = %for.body.i82, %if.then54 - switch i32 %type, label %if.end64 [ - i32 10, label %if.then60 - i32 5, label %if.then60 - ] + br i1 %exitcond.not.i86, label %if.end64, label %for.body.i82, !llvm.loop !223 -if.then60: ; preds = %if.then31, %if.then31, %_ZN18OpenImageIO_v2_6_011swap_endianItEEvPT_i.exit69, %_ZN18OpenImageIO_v2_6_011swap_endianItEEvPT_i.exit69, %_ZN18OpenImageIO_v2_6_011swap_endianIjEEvPT_i.exit78, %_ZN18OpenImageIO_v2_6_011swap_endianIjEEvPT_i.exit78, %_ZN18OpenImageIO_v2_6_011swap_endianImEEvPT_i.exit, %_ZN18OpenImageIO_v2_6_011swap_endianImEEvPT_i.exit +if.then60: ; preds = %_ZN18OpenImageIO_v2_6_011swap_endianIjEEvPT_i.exit78, %_ZN18OpenImageIO_v2_6_011swap_endianIjEEvPT_i.exit78, %_ZN18OpenImageIO_v2_6_011swap_endianItEEvPT_i.exit69, %if.then31, %if.then31 %conv61 = shl i32 %conv2, 1 %cmp5.i87 = icmp sgt i32 %conv61, 0 br i1 %cmp5.i87, label %for.body.preheader.i88, label %if.end64 @@ -2745,7 +2728,7 @@ for.body.i90: ; preds = %for.body.i90, %for. %exitcond.not.i94 = icmp eq i64 %indvars.iv.next.i93, %wide.trip.count.i89 br i1 %exitcond.not.i94, label %if.end64, label %for.body.i90, !llvm.loop !222 -if.end64: ; preds = %for.body.i90, %if.then60, %if.then31, %_ZN18OpenImageIO_v2_6_011swap_endianItEEvPT_i.exit69, %_ZN18OpenImageIO_v2_6_011swap_endianIjEEvPT_i.exit78, %_ZN18OpenImageIO_v2_6_011swap_endianImEEvPT_i.exit, %if.end29, %if.end20 +if.end64: ; preds = %for.body.i82, %for.body.i90, %if.then54, %if.then60, %if.then31, %_ZN18OpenImageIO_v2_6_011swap_endianItEEvPT_i.exit69, %_ZN18OpenImageIO_v2_6_011swap_endianIjEEvPT_i.exit78, %if.end29, %if.end20 %17 = load ptr, ptr %dirs, align 8 %_M_finish.i96 = getelementptr inbounds nuw i8, ptr %dirs, i64 8 %18 = load ptr, ptr %_M_finish.i96, align 8 diff --git a/bench/openblas/optimized/dlarrj.ll b/bench/openblas/optimized/dlarrj.ll index c64ed1619df..dea6296904c 100644 --- a/bench/openblas/optimized/dlarrj.ll +++ b/bench/openblas/optimized/dlarrj.ll @@ -100,7 +100,7 @@ define void @dlarrj_(ptr noundef readonly captures(none) %0, ptr noundef readonl %69 = fcmp olt double %61, %67 %70 = zext i1 %69 to i64 %.not265.us = icmp sgt i64 %indvars.iv361, %70 - br i1 %.not265.us, label %.preheader270, label %.lr.ph283 + br i1 %.not265.us, label %.preheader270.split297.us, label %.lr.ph283 71: ; preds = %37 %72 = sext i32 %39 to i64 @@ -153,17 +153,13 @@ define void @dlarrj_(ptr noundef readonly captures(none) %0, ptr noundef readonl %.not265 = icmp sgt i64 %indvars.iv361, %91 br i1 %.not265, label %.preheader270, label %101 -.preheader270: ; preds = %._crit_edge, %.lr.ph283 - %.us-phi = phi double [ %67, %.lr.ph283 ], [ %.1255, %._crit_edge ] - br i1 %.not264273, label %.preheader270.split297.us, label %.lr.ph294.preheader - -.lr.ph294.preheader: ; preds = %.preheader270 +.preheader270: ; preds = %._crit_edge %92 = add nuw i32 %62, 1 %wide.trip.count359 = zext i32 %92 to i64 br label %.lr.ph294 -.preheader270.split297.us: ; preds = %.preheader271.split.us, %.preheader270 - %.us-phi379 = phi double [ %.us-phi, %.preheader270 ], [ %47, %.preheader271.split.us ] +.preheader270.split297.us: ; preds = %.lr.ph283, %.preheader271.split.us + %.us-phi379 = phi double [ %47, %.preheader271.split.us ], [ %67, %.lr.ph283 ] %93 = fcmp olt double %61, %48 %.3.us300 = zext i1 %93 to i32 %94 = zext i1 %93 to i64 @@ -213,7 +209,7 @@ define void @dlarrj_(ptr noundef readonly captures(none) %0, ptr noundef readonl ._crit_edge295: ; preds = %106 %115 = zext nneg i32 %.5 to i64 - %116 = icmp sgt i64 %indvars.iv361, %115 + %116 = icmp samesign ugt i64 %indvars.iv361, %115 br i1 %116, label %117, label %.split.us 117: ; preds = %._crit_edge295 @@ -226,11 +222,11 @@ define void @dlarrj_(ptr noundef readonly captures(none) %0, ptr noundef readonl br label %.split.us .split.us: ; preds = %._crit_edge295, %.split.us.loopexit, %.preheader270.split297.us - %.us-phi378 = phi double [ %.us-phi379, %.preheader270.split297.us ], [ %.us-phi379, %.split.us.loopexit ], [ %.us-phi, %._crit_edge295 ] + %.us-phi378 = phi double [ %.us-phi379, %.preheader270.split297.us ], [ %.us-phi379, %.split.us.loopexit ], [ %.1255, %._crit_edge295 ] %.us-phi298 = phi double [ %48, %.preheader270.split297.us ], [ %96, %.split.us.loopexit ], [ %.1235, %._crit_edge295 ] %.us-phi299 = phi i32 [ %.3.us300, %.preheader270.split297.us ], [ %.3.us, %.split.us.loopexit ], [ %.5, %._crit_edge295 ] %120 = add nsw i32 %.0248311, 1 - %121 = add nsw i64 %indvars.iv361, 1 + %121 = add nuw nsw i64 %indvars.iv361, 1 %122 = sext i32 %39 to i64 %123 = getelementptr i32, ptr %15, i64 %122 %124 = getelementptr i8, ptr %123, i64 -4 diff --git a/bench/openblas/optimized/dlatm7.ll b/bench/openblas/optimized/dlatm7.ll index 513b7e7f9d9..74ee5e7a193 100644 --- a/bench/openblas/optimized/dlatm7.ll +++ b/bench/openblas/optimized/dlatm7.ll @@ -142,10 +142,14 @@ define void @dlatm7_(ptr noundef readonly captures(none) %0, ptr noundef readonl ._crit_edge184: ; preds = %.lr.ph183, %47 %.not155.not185 = icmp slt i32 %48, %12 - %50 = sext i32 %48 to i64 - br i1 %.not155.not185, label %.lr.ph188.preheader, label %._crit_edge189 + br i1 %.not155.not185, label %.lr.ph188.preheader, label %._crit_edge184.._crit_edge189_crit_edge + +._crit_edge184.._crit_edge189_crit_edge: ; preds = %._crit_edge184 + %.pre = zext nneg i32 %48 to i64 + br label %._crit_edge189 .lr.ph188.preheader: ; preds = %._crit_edge184 + %50 = sext i32 %48 to i64 %51 = shl nsw i64 %50, 3 %scevgep229 = getelementptr i8, ptr %5, i64 %51 %52 = xor i32 %48, -1 @@ -156,10 +160,11 @@ define void @dlatm7_(ptr noundef readonly captures(none) %0, ptr noundef readonl tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %scevgep229, i8 0, i64 %56, i1 false), !tbaa !7 br label %._crit_edge189 -._crit_edge189: ; preds = %._crit_edge184, %.lr.ph188.preheader +._crit_edge189: ; preds = %._crit_edge184.._crit_edge189_crit_edge, %.lr.ph188.preheader + %.pre-phi = phi i64 [ %.pre, %._crit_edge184.._crit_edge189_crit_edge ], [ %50, %.lr.ph188.preheader ] %57 = load double, ptr %1, align 8, !tbaa !7 %58 = fdiv double 1.000000e+00, %57 - %59 = getelementptr inbounds double, ptr %11, i64 %50 + %59 = getelementptr inbounds double, ptr %11, i64 %.pre-phi store double %58, ptr %59, align 8, !tbaa !7 br label %.loopexit167 diff --git a/bench/opencc/optimized/louds-trie.ll b/bench/opencc/optimized/louds-trie.ll index ccb86a9f0ec..e8743d9f5fb 100644 --- a/bench/opencc/optimized/louds-trie.ll +++ b/bench/opencc/optimized/louds-trie.ll @@ -1022,7 +1022,7 @@ _ZN6marisa8grimoire6vector6VectorImE6resizeEmRKm.exit.i: ; preds = %.lr.ph.i.i, store i64 %122, ptr %70, align 8 %123 = add nuw nsw i64 %.1106, 1 %124 = zext i32 %121 to i64 - %125 = icmp ult i64 %123, %124 + %125 = icmp samesign ult i64 %123, %124 br i1 %125, label %.lr.ph107, label %._crit_edge108, !llvm.loop !10 ._crit_edge108: ; preds = %120, %.preheader95 @@ -11211,7 +11211,7 @@ select.unfold.i.i: ; preds = %.lr.ph.i.i %13 = getelementptr inbounds nuw i8, ptr %11, i64 %10 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %11, ptr noundef nonnull align 4 dereferenceable(16) %0, i64 16, i1 false) %.not19.i.i.i = icmp eq i64 %storemerge26.i.i, 1 - br i1 %.not19.i.i.i, label %_ZNSt17_Temporary_bufferIPN6marisa8grimoire4trie13WeightedRangeES3_EC2ES4_l.exit.thread22, label %.lr.ph.i.i.preheader.i + br i1 %.not19.i.i.i, label %_ZNSt17_Temporary_bufferIPN6marisa8grimoire4trie13WeightedRangeES3_EC2ES4_l.exit, label %.lr.ph.i.i.preheader.i .lr.ph.i.i.preheader.i: ; preds = %12 %.01518.i.i.i = getelementptr inbounds nuw i8, ptr %11, i64 16 @@ -11226,27 +11226,25 @@ select.unfold.i.i: ; preds = %.lr.ph.i.i %.not.i.i.i = icmp eq ptr %.015.i.i.i, %13 br i1 %.not.i.i.i, label %_ZNSt17_Temporary_bufferIPN6marisa8grimoire4trie13WeightedRangeES3_EC2ES4_l.exit, label %.lr.ph.i.i.i, !llvm.loop !65 -_ZNSt17_Temporary_bufferIPN6marisa8grimoire4trie13WeightedRangeES3_EC2ES4_l.exit: ; preds = %.lr.ph.i.i.i - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %0, ptr noundef nonnull align 4 dereferenceable(16) %14, i64 16, i1 false) - br label %_ZNSt17_Temporary_bufferIPN6marisa8grimoire4trie13WeightedRangeES3_EC2ES4_l.exit.thread22 +_ZNSt17_Temporary_bufferIPN6marisa8grimoire4trie13WeightedRangeES3_EC2ES4_l.exit: ; preds = %.lr.ph.i.i.i, %12 + %.0.lcssa.i.i.i = phi ptr [ %11, %12 ], [ %14, %.lr.ph.i.i.i ] + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %0, ptr noundef nonnull align 4 dereferenceable(16) %.0.lcssa.i.i.i, i64 16, i1 false) + invoke void @_ZSt22__stable_sort_adaptiveIPN6marisa8grimoire4trie13WeightedRangeES4_lN9__gnu_cxx5__ops15_Iter_comp_iterISt7greaterIS3_EEEEvT_SB_T0_T1_T2_(ptr noundef nonnull %0, ptr noundef %1, ptr noundef nonnull %11, i64 noundef %storemerge26.i.i) + to label %17 unwind label %15 _ZNSt17_Temporary_bufferIPN6marisa8grimoire4trie13WeightedRangeES3_EC2ES4_l.exit.thread: ; preds = %select.unfold.i.i, %4 invoke void @_ZSt21__inplace_stable_sortIPN6marisa8grimoire4trie13WeightedRangeEN9__gnu_cxx5__ops15_Iter_comp_iterISt7greaterIS3_EEEEvT_SB_T0_(ptr noundef %0, ptr noundef %1) to label %17 unwind label %15 -15: ; preds = %_ZNSt17_Temporary_bufferIPN6marisa8grimoire4trie13WeightedRangeES3_EC2ES4_l.exit.thread22, %_ZNSt17_Temporary_bufferIPN6marisa8grimoire4trie13WeightedRangeES3_EC2ES4_l.exit.thread - %.sroa.4.021 = phi ptr [ %11, %_ZNSt17_Temporary_bufferIPN6marisa8grimoire4trie13WeightedRangeES3_EC2ES4_l.exit.thread22 ], [ null, %_ZNSt17_Temporary_bufferIPN6marisa8grimoire4trie13WeightedRangeES3_EC2ES4_l.exit.thread ] +15: ; preds = %_ZNSt17_Temporary_bufferIPN6marisa8grimoire4trie13WeightedRangeES3_EC2ES4_l.exit, %_ZNSt17_Temporary_bufferIPN6marisa8grimoire4trie13WeightedRangeES3_EC2ES4_l.exit.thread + %.sroa.4.021 = phi ptr [ %11, %_ZNSt17_Temporary_bufferIPN6marisa8grimoire4trie13WeightedRangeES3_EC2ES4_l.exit ], [ null, %_ZNSt17_Temporary_bufferIPN6marisa8grimoire4trie13WeightedRangeES3_EC2ES4_l.exit.thread ] %16 = landingpad { ptr, i32 } cleanup tail call void @_ZdlPv(ptr noundef %.sroa.4.021) #22 resume { ptr, i32 } %16 -_ZNSt17_Temporary_bufferIPN6marisa8grimoire4trie13WeightedRangeES3_EC2ES4_l.exit.thread22: ; preds = %12, %_ZNSt17_Temporary_bufferIPN6marisa8grimoire4trie13WeightedRangeES3_EC2ES4_l.exit - invoke void @_ZSt22__stable_sort_adaptiveIPN6marisa8grimoire4trie13WeightedRangeES4_lN9__gnu_cxx5__ops15_Iter_comp_iterISt7greaterIS3_EEEEvT_SB_T0_T1_T2_(ptr noundef nonnull %0, ptr noundef %1, ptr noundef nonnull %11, i64 noundef %storemerge26.i.i) - to label %17 unwind label %15 - -17: ; preds = %_ZNSt17_Temporary_bufferIPN6marisa8grimoire4trie13WeightedRangeES3_EC2ES4_l.exit.thread22, %_ZNSt17_Temporary_bufferIPN6marisa8grimoire4trie13WeightedRangeES3_EC2ES4_l.exit.thread - %.sroa.4.019 = phi ptr [ %11, %_ZNSt17_Temporary_bufferIPN6marisa8grimoire4trie13WeightedRangeES3_EC2ES4_l.exit.thread22 ], [ null, %_ZNSt17_Temporary_bufferIPN6marisa8grimoire4trie13WeightedRangeES3_EC2ES4_l.exit.thread ] +_ZNSt17_Temporary_bufferIPN6marisa8grimoire4trie13WeightedRangeES3_EC2ES4_l.exit.thread22: ; preds = %_ZNSt17_Temporary_bufferIPN6marisa8grimoire4trie13WeightedRangeES3_EC2ES4_l.exit, %.loopexit + %.sroa.4.019 = phi ptr [ %11, %_ZNSt17_Temporary_bufferIPN6marisa8grimoire4trie13WeightedRangeES3_EC2ES4_l.exit ], [ null, %.loopexit ] tail call void @_ZdlPv(ptr noundef %.sroa.4.019) #22 br label %18 @@ -12637,7 +12635,7 @@ define linkonce_odr void @_ZN6marisa8grimoire6vector10FlatVector6build_ERKNS1_6V store ptr %26, ptr %33, align 8 store i64 %.0.i.i, ptr %19, align 8 %34 = icmp eq ptr %31, null - br i1 %34, label %_ZN6marisa8grimoire6vector6VectorImE6resizeEm.exit, label %40 + br i1 %34, label %_ZN6marisa8grimoire6vector6VectorImE6resizeEm.exit.thread, label %40 35: ; preds = %35, %.lr.ph.i.i.i %.01114.i.i.i = phi i64 [ 0, %.lr.ph.i.i.i ], [ %39, %35 ] @@ -12651,15 +12649,19 @@ define linkonce_odr void @_ZN6marisa8grimoire6vector10FlatVector6build_ERKNS1_6V 40: ; preds = %.preheader.i.i.i tail call void @_ZdaPv(ptr noundef nonnull %31) #21 - br label %_ZN6marisa8grimoire6vector6VectorImE6resizeEm.exit + br label %_ZN6marisa8grimoire6vector6VectorImE6resizeEm.exit.thread + +_ZN6marisa8grimoire6vector6VectorImE6resizeEm.exit.thread: ; preds = %.preheader.i.i.i, %40 + store i64 %.029, ptr %27, align 8 + br label %42 -_ZN6marisa8grimoire6vector6VectorImE6resizeEm.exit: ; preds = %._crit_edge, %.preheader.i.i.i, %40 +_ZN6marisa8grimoire6vector6VectorImE6resizeEm.exit: ; preds = %._crit_edge %41 = getelementptr inbounds nuw i8, ptr %0, i64 24 store i64 %.029, ptr %41, align 8 %.not34 = icmp eq i64 %.029, 0 br i1 %.not34, label %47, label %42 -42: ; preds = %_ZN6marisa8grimoire6vector6VectorImE6resizeEm.exit +42: ; preds = %_ZN6marisa8grimoire6vector6VectorImE6resizeEm.exit.thread, %_ZN6marisa8grimoire6vector6VectorImE6resizeEm.exit %43 = getelementptr inbounds nuw i8, ptr %0, i64 8 %44 = load ptr, ptr %43, align 8 %45 = getelementptr i64, ptr %44, i64 %.029 diff --git a/bench/openexr/optimized/ImfHeader.ll b/bench/openexr/optimized/ImfHeader.ll index 74b9b2a9caf..b996180eee8 100644 --- a/bench/openexr/optimized/ImfHeader.ll +++ b/bench/openexr/optimized/ImfHeader.ll @@ -4224,12 +4224,7 @@ lpad149: ; preds = %if.then147 br label %eh.resume if.end152: ; preds = %if.end144 - br i1 %isMultipartFile, label %if.then153, label %if.end152.if.end168_crit_edge - -if.end152.if.end168_crit_edge: ; preds = %if.end152 - %_M_parent.i.i.i.i.i181.phi.trans.insert = getelementptr inbounds nuw i8, ptr %this, i64 16 - %.pre = load ptr, ptr %_M_parent.i.i.i.i.i181.phi.trans.insert, align 8 - br label %if.end168 + br i1 %isMultipartFile, label %if.then153, label %if.end168 if.then153: ; preds = %if.end152 call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %ref.tmp.i.i124) @@ -4340,7 +4335,16 @@ _ZNK7Imf_3_26Header7hasTypeEv.exit: ; preds = %cond.false.i.i174 %41 = call ptr @__dynamic_cast(ptr nonnull %39, ptr nonnull @_ZTIN7Imf_3_29AttributeE, ptr nonnull @_ZTIN7Imf_3_214TypedAttributeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE, i64 0) #26 %.not318 = icmp eq ptr %41, null call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %ref.tmp.i.i151) - br i1 %.not318, label %if.then162, label %if.end168 + br i1 %.not318, label %if.then162, label %if.end168.thread + +if.end168.thread: ; preds = %_ZNK7Imf_3_26Header7hasTypeEv.exit + call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %ref.tmp.i.i178) + %call.i.i.i.i179352 = call ptr @strncpy(ptr noundef nonnull align 1 dereferenceable(256) %ref.tmp.i.i178, ptr noundef nonnull dereferenceable(5) @.str.30, i64 noundef 255) #26 + %arrayidx.i.i.i180353 = getelementptr inbounds nuw i8, ptr %ref.tmp.i.i178, i64 255 + store i8 0, ptr %arrayidx.i.i.i180353, align 1 + %_M_parent.i.i.i.i.i181354 = getelementptr inbounds nuw i8, ptr %this, i64 16 + %add.ptr.i.i.i.i.i182355 = getelementptr inbounds nuw i8, ptr %this, i64 8 + br label %while.body.i.i.i.i.i184.preheader if.then162: ; preds = %_ZNK7Imf_3_26Header7hasTypeEv.exit.thread, %_ZNK7Imf_3_26Header7hasTypeEv.exit %exception163 = call ptr @__cxa_allocate_exception(i64 72) #26 @@ -4357,20 +4361,27 @@ lpad164: ; preds = %if.then162 call void @__cxa_free_exception(ptr nonnull %exception163) #26 br label %eh.resume -if.end168: ; preds = %if.end152.if.end168_crit_edge, %_ZNK7Imf_3_26Header7hasTypeEv.exit - %43 = phi ptr [ %.pre, %if.end152.if.end168_crit_edge ], [ %34, %_ZNK7Imf_3_26Header7hasTypeEv.exit ] +if.end168: ; preds = %if.end152 + %43 = getelementptr inbounds nuw i8, ptr %this, i64 16 + %.pre = load ptr, ptr %_M_parent.i.i.i.i.i181.phi.trans.insert, align 8 call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %ref.tmp.i.i178) %call.i.i.i.i179 = call ptr @strncpy(ptr noundef nonnull align 1 dereferenceable(256) %ref.tmp.i.i178, ptr noundef nonnull dereferenceable(5) @.str.30, i64 noundef 255) #26 %arrayidx.i.i.i180 = getelementptr inbounds nuw i8, ptr %ref.tmp.i.i178, i64 255 store i8 0, ptr %arrayidx.i.i.i180, align 1 %_M_parent.i.i.i.i.i181 = getelementptr inbounds nuw i8, ptr %this, i64 16 %add.ptr.i.i.i.i.i182 = getelementptr inbounds nuw i8, ptr %this, i64 8 - %cmp.not5.i.i.i.i.i183 = icmp eq ptr %43, null + %cmp.not5.i.i.i.i.i183 = icmp eq ptr %.pre, null br i1 %cmp.not5.i.i.i.i.i183, label %_ZNK7Imf_3_26Header7hasTypeEv.exit205.thread, label %while.body.i.i.i.i.i184 -while.body.i.i.i.i.i184: ; preds = %if.end168, %while.body.i.i.i.i.i184 - %__x.addr.07.i.i.i.i.i185 = phi ptr [ %__x.addr.1.i.i.i.i.i193, %while.body.i.i.i.i.i184 ], [ %43, %if.end168 ] - %__y.addr.06.i.i.i.i.i186 = phi ptr [ %__y.addr.1.i.i.i.i.i190, %while.body.i.i.i.i.i184 ], [ %add.ptr.i.i.i.i.i182, %if.end168 ] +while.body.i.i.i.i.i184: ; preds = %if.end168.thread, %if.end168 + %__x.addr.07.i.i.i.i.i185 = phi ptr [ %add.ptr.i.i.i.i.i182355, %if.end168.thread ], [ %add.ptr.i.i.i.i.i182, %if.end168 ] + %__y.addr.06.i.i.i.i.i186 = phi ptr [ %_M_parent.i.i.i.i.i181354, %if.end168.thread ], [ %_M_parent.i.i.i.i.i181, %if.end168 ] + %43 = phi ptr [ %34, %if.end168.thread ], [ %.pre, %if.end168 ] + br label %while.body.i.i.i.i.i184 + +while.body.i.i.i.i.i184: ; preds = %while.body.i.i.i.i.i184.preheader, %while.body.i.i.i.i.i184 + %__x.addr.07.i.i.i.i.i185 = phi ptr [ %__x.addr.1.i.i.i.i.i193, %while.body.i.i.i.i.i184 ], [ %43, %while.body.i.i.i.i.i184.preheader ] + %__y.addr.06.i.i.i.i.i186 = phi ptr [ %__y.addr.1.i.i.i.i.i190, %while.body.i.i.i.i.i184 ], [ %add.ptr.i.i.i.i.i182361, %while.body.i.i.i.i.i184.preheader ] %_M_storage.i.i.i.i.i.i.i187 = getelementptr inbounds nuw i8, ptr %__x.addr.07.i.i.i.i.i185, i64 32 %call2.i.i.i.i.i.i.i188 = call i32 @strcmp(ptr noundef nonnull align 1 dereferenceable(256) %_M_storage.i.i.i.i.i.i.i187, ptr noundef nonnull align 1 dereferenceable(256) %ref.tmp.i.i178) #29 %cmp.i.i.i.i.i.i.i189 = icmp slt i32 %call2.i.i.i.i.i.i.i188, 0 @@ -4382,7 +4393,7 @@ while.body.i.i.i.i.i184: ; preds = %if.end168, %while.b br i1 %cmp.not.i.i.i.i.i194, label %_ZNKSt8_Rb_treeIN7Imf_3_24NameESt4pairIKS1_PNS0_9AttributeEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE14_M_lower_boundEPKSt13_Rb_tree_nodeIS6_EPKSt18_Rb_tree_node_baseRS3_.exit.i.i.i.i195, label %while.body.i.i.i.i.i184, !llvm.loop !15 _ZNKSt8_Rb_treeIN7Imf_3_24NameESt4pairIKS1_PNS0_9AttributeEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE14_M_lower_boundEPKSt13_Rb_tree_nodeIS6_EPKSt18_Rb_tree_node_baseRS3_.exit.i.i.i.i195: ; preds = %while.body.i.i.i.i.i184 - %cmp.i.i.i.i.i196 = icmp eq ptr %__y.addr.1.i.i.i.i.i190, %add.ptr.i.i.i.i.i182 + %cmp.i.i.i.i.i196 = icmp eq ptr %__y.addr.1.i.i.i.i.i190, %add.ptr.i.i.i.i.i182361 br i1 %cmp.i.i.i.i.i196, label %_ZNK7Imf_3_26Header7hasTypeEv.exit205.thread, label %_ZNKSt3mapIN7Imf_3_24NameEPNS0_9AttributeESt4lessIS1_ESaISt4pairIKS1_S3_EEE4findERS7_.exit.i.i197 _ZNKSt3mapIN7Imf_3_24NameEPNS0_9AttributeESt4lessIS1_ESaISt4pairIKS1_S3_EEE4findERS7_.exit.i.i197: ; preds = %_ZNKSt8_Rb_treeIN7Imf_3_24NameESt4pairIKS1_PNS0_9AttributeEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE14_M_lower_boundEPKSt13_Rb_tree_nodeIS6_EPKSt18_Rb_tree_node_baseRS3_.exit.i.i.i.i195 @@ -4398,6 +4409,8 @@ cond.false.i.i201: ; preds = %_ZNKSt3mapIN7Imf_3_ br i1 %45, label %_ZNK7Imf_3_26Header7hasTypeEv.exit205.thread, label %_ZNK7Imf_3_26Header7hasTypeEv.exit205 _ZNK7Imf_3_26Header7hasTypeEv.exit205.thread: ; preds = %_ZNKSt3mapIN7Imf_3_24NameEPNS0_9AttributeESt4lessIS1_ESaISt4pairIKS1_S3_EEE4findERS7_.exit.i.i197, %cond.false.i.i201, %_ZNKSt8_Rb_treeIN7Imf_3_24NameESt4pairIKS1_PNS0_9AttributeEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE14_M_lower_boundEPKSt13_Rb_tree_nodeIS6_EPKSt18_Rb_tree_node_baseRS3_.exit.i.i.i.i195, %if.end168 + %add.ptr.i.i.i.i.i182364 = phi ptr [ %add.ptr.i.i.i.i.i182361, %_ZNKSt3mapIN7Imf_3_24NameEPNS0_9AttributeESt4lessIS1_ESaISt4pairIKS1_S3_EEE4findERS7_.exit.i.i197 ], [ %add.ptr.i.i.i.i.i182361, %cond.false.i.i201 ], [ %add.ptr.i.i.i.i.i182361, %_ZNKSt8_Rb_treeIN7Imf_3_24NameESt4pairIKS1_PNS0_9AttributeEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE14_M_lower_boundEPKSt13_Rb_tree_nodeIS6_EPKSt18_Rb_tree_node_baseRS3_.exit.i.i.i.i195 ], [ %add.ptr.i.i.i.i.i182, %if.end168 ] + %_M_parent.i.i.i.i.i181359 = phi ptr [ %_M_parent.i.i.i.i.i181360, %_ZNKSt3mapIN7Imf_3_24NameEPNS0_9AttributeESt4lessIS1_ESaISt4pairIKS1_S3_EEE4findERS7_.exit.i.i197 ], [ %_M_parent.i.i.i.i.i181360, %cond.false.i.i201 ], [ %_M_parent.i.i.i.i.i181360, %_ZNKSt8_Rb_treeIN7Imf_3_24NameESt4pairIKS1_PNS0_9AttributeEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE14_M_lower_boundEPKSt13_Rb_tree_nodeIS6_EPKSt18_Rb_tree_node_baseRS3_.exit.i.i.i.i195 ], [ %_M_parent.i.i.i.i.i181, %if.end168 ] call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %ref.tmp.i.i178) br label %cond.false @@ -4413,6 +4426,8 @@ cond.end.thread: ; preds = %_ZNK7Imf_3_26Header br label %invoke.cont179 cond.false: ; preds = %_ZNK7Imf_3_26Header7hasTypeEv.exit205.thread, %_ZNK7Imf_3_26Header7hasTypeEv.exit205 + %add.ptr.i.i.i.i.i182363 = phi ptr [ %add.ptr.i.i.i.i.i182364, %_ZNK7Imf_3_26Header7hasTypeEv.exit205.thread ], [ %add.ptr.i.i.i.i.i182361, %_ZNK7Imf_3_26Header7hasTypeEv.exit205 ] + %_M_parent.i.i.i.i.i181358 = phi ptr [ %_M_parent.i.i.i.i.i181359, %_ZNK7Imf_3_26Header7hasTypeEv.exit205.thread ], [ %_M_parent.i.i.i.i.i181360, %_ZNK7Imf_3_26Header7hasTypeEv.exit205 ] call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp171) #26 %call.i206207 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE13_M_local_dataEv(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) to label %call.i206.noexc unwind label %lpad172 @@ -4436,6 +4451,8 @@ cleanup.action: ; preds = %.noexc br label %invoke.cont179 invoke.cont179: ; preds = %cleanup.action, %cond.end.thread + %add.ptr.i.i.i.i.i182362 = phi ptr [ %add.ptr.i.i.i.i.i182363, %cleanup.action ], [ %add.ptr.i.i.i.i.i182361, %cond.end.thread ] + %_M_parent.i.i.i.i.i181357 = phi ptr [ %_M_parent.i.i.i.i.i181358, %cleanup.action ], [ %_M_parent.i.i.i.i.i181360, %cond.end.thread ] %call.i.i208 = call noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp, ptr noundef nonnull @.str.48) #26 %cmp.i.i.not = icmp eq i32 %call.i.i208, 0 br i1 %cmp.i.i.not, label %if.end185, label %land.lhs.true181 @@ -4493,13 +4510,13 @@ if.then192: ; preds = %invoke.cont189 %call.i.i.i.i214 = call ptr @strncpy(ptr noundef nonnull align 1 dereferenceable(256) %ref.tmp.i.i213, ptr noundef nonnull dereferenceable(6) @.str.35, i64 noundef 255) #26 %arrayidx.i.i.i215 = getelementptr inbounds nuw i8, ptr %ref.tmp.i.i213, i64 255 store i8 0, ptr %arrayidx.i.i.i215, align 1 - %50 = load ptr, ptr %_M_parent.i.i.i.i.i181, align 8 + %50 = load ptr, ptr %_M_parent.i.i.i.i.i181357, align 8 %cmp.not5.i.i.i.i.i218 = icmp eq ptr %50, null br i1 %cmp.not5.i.i.i.i.i218, label %invoke.cont193.thread, label %while.body.i.i.i.i.i219 while.body.i.i.i.i.i219: ; preds = %if.then192, %while.body.i.i.i.i.i219 %__x.addr.07.i.i.i.i.i220 = phi ptr [ %__x.addr.1.i.i.i.i.i228, %while.body.i.i.i.i.i219 ], [ %50, %if.then192 ] - %__y.addr.06.i.i.i.i.i221 = phi ptr [ %__y.addr.1.i.i.i.i.i225, %while.body.i.i.i.i.i219 ], [ %add.ptr.i.i.i.i.i182, %if.then192 ] + %__y.addr.06.i.i.i.i.i221 = phi ptr [ %__y.addr.1.i.i.i.i.i225, %while.body.i.i.i.i.i219 ], [ %add.ptr.i.i.i.i.i182362, %if.then192 ] %_M_storage.i.i.i.i.i.i.i222 = getelementptr inbounds nuw i8, ptr %__x.addr.07.i.i.i.i.i220, i64 32 %call2.i.i.i.i.i.i.i223 = call i32 @strcmp(ptr noundef nonnull align 1 dereferenceable(256) %_M_storage.i.i.i.i.i.i.i222, ptr noundef nonnull align 1 dereferenceable(256) %ref.tmp.i.i213) #29 %cmp.i.i.i.i.i.i.i224 = icmp slt i32 %call2.i.i.i.i.i.i.i223, 0 @@ -4511,7 +4528,7 @@ while.body.i.i.i.i.i219: ; preds = %if.then192, %while. br i1 %cmp.not.i.i.i.i.i229, label %_ZNKSt8_Rb_treeIN7Imf_3_24NameESt4pairIKS1_PNS0_9AttributeEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE14_M_lower_boundEPKSt13_Rb_tree_nodeIS6_EPKSt18_Rb_tree_node_baseRS3_.exit.i.i.i.i230, label %while.body.i.i.i.i.i219, !llvm.loop !15 _ZNKSt8_Rb_treeIN7Imf_3_24NameESt4pairIKS1_PNS0_9AttributeEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE14_M_lower_boundEPKSt13_Rb_tree_nodeIS6_EPKSt18_Rb_tree_node_baseRS3_.exit.i.i.i.i230: ; preds = %while.body.i.i.i.i.i219 - %cmp.i.i.i.i.i231 = icmp eq ptr %__y.addr.1.i.i.i.i.i225, %add.ptr.i.i.i.i.i182 + %cmp.i.i.i.i.i231 = icmp eq ptr %__y.addr.1.i.i.i.i.i225, %add.ptr.i.i.i.i.i182362 br i1 %cmp.i.i.i.i.i231, label %invoke.cont193.thread, label %_ZNKSt3mapIN7Imf_3_24NameEPNS0_9AttributeESt4lessIS1_ESaISt4pairIKS1_S3_EEE4findERS7_.exit.i.i232 _ZNKSt3mapIN7Imf_3_24NameEPNS0_9AttributeESt4lessIS1_ESaISt4pairIKS1_S3_EEE4findERS7_.exit.i.i232: ; preds = %_ZNKSt8_Rb_treeIN7Imf_3_24NameESt4pairIKS1_PNS0_9AttributeEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE14_M_lower_boundEPKSt13_Rb_tree_nodeIS6_EPKSt18_Rb_tree_node_baseRS3_.exit.i.i.i.i230 diff --git a/bench/openexr/optimized/ImfRleCompressor.ll b/bench/openexr/optimized/ImfRleCompressor.ll index 76d772a1bd2..0429670f477 100644 --- a/bench/openexr/optimized/ImfRleCompressor.ll +++ b/bench/openexr/optimized/ImfRleCompressor.ll @@ -320,17 +320,19 @@ while.body: ; preds = %while.body.preheade while.end.loopexit: ; preds = %while.body %.pre23 = load ptr, ptr %_tmpBuffer, align 8 - br label %while.end + %_outBuffer1824 = getelementptr inbounds nuw i8, ptr %this, i64 32 + br label %if.then25.preheader -while.end: ; preds = %while.end.loopexit, %if.end4 - %6 = phi ptr [ %.pre23, %while.end.loopexit ], [ %3, %if.end4 ] +while.end: ; preds = %if.end4 %_outBuffer18 = getelementptr inbounds nuw i8, ptr %this, i64 32 - %7 = load ptr, ptr %_outBuffer18, align 8 - %add.ptr21 = getelementptr inbounds i8, ptr %7, i64 %idx.ext - %cmp2419 = icmp sgt i32 %call, 0 + %7 = icmp eq i32 %call, 1 br i1 %cmp2419, label %if.then25.preheader, label %return -if.then25.preheader: ; preds = %while.end +if.then25.preheader: ; preds = %while.end.thread, %while.end + %_outBuffer1827 = phi ptr [ %_outBuffer1824, %while.end.thread ], [ %_outBuffer18, %while.end ] + %6 = phi ptr [ %.pre23, %while.end.thread ], [ %3, %while.end ] + %7 = load ptr, ptr %_outBuffer1827, align 8 + %add.ptr2128 = getelementptr inbounds i8, ptr %7, i64 %idx.ext %add15 = add nuw nsw i32 %call, 1 %div2425 = lshr i32 %add15, 1 %idx.ext16 = zext nneg i32 %div2425 to i64 @@ -344,7 +346,7 @@ if.then25: ; preds = %if.then25.preheader %8 = load i8, ptr %t1.020, align 1 %incdec.ptr27 = getelementptr inbounds nuw i8, ptr %s.022, i64 1 store i8 %8, ptr %s.022, align 1 - %cmp29 = icmp ult ptr %incdec.ptr27, %add.ptr21 + %cmp29 = icmp ult ptr %incdec.ptr27, %add.ptr2128 br i1 %cmp29, label %if.then30, label %return if.then30: ; preds = %if.then25 @@ -353,11 +355,11 @@ if.then30: ; preds = %if.then25 %9 = load i8, ptr %t2.021, align 1 %incdec.ptr32 = getelementptr inbounds nuw i8, ptr %s.022, i64 2 store i8 %9, ptr %incdec.ptr27, align 1 - %cmp24 = icmp ult ptr %incdec.ptr32, %add.ptr21 + %cmp24 = icmp ult ptr %incdec.ptr32, %add.ptr2128 br i1 %cmp24, label %if.then25, label %return, !llvm.loop !8 return: ; preds = %if.then25, %if.then30, %while.end, %if.then - %storemerge.in = phi ptr [ %_outBuffer, %if.then ], [ %_outBuffer18, %while.end ], [ %_outBuffer18, %if.then30 ], [ %_outBuffer18, %if.then25 ] + %storemerge.in = phi ptr [ %_outBuffer, %if.then ], [ %_outBuffer18, %while.end ], [ %_outBuffer1827, %if.then30 ], [ %_outBuffer1827, %if.then25 ] %retval.0 = phi i32 [ 0, %if.then ], [ %call, %while.end ], [ %call, %if.then30 ], [ %call, %if.then25 ] %storemerge = load ptr, ptr %storemerge.in, align 8 store ptr %storemerge, ptr %outPtr, align 8 diff --git a/bench/openjdk/optimized/codeHeapState.ll b/bench/openjdk/optimized/codeHeapState.ll index f01ae940166..655b7b9cdd0 100644 --- a/bench/openjdk/optimized/codeHeapState.ll +++ b/bench/openjdk/optimized/codeHeapState.ll @@ -3715,7 +3715,11 @@ _ZN13CodeHeapState21print_blobType_legendEP12outputStream.exit: ; preds = %47 %171 = load i32, ptr @_ZL19alloc_topSizeBlocks, align 4 %172 = zext i32 %171 to i64 %173 = icmp samesign ult i64 %indvars.iv.next448, %172 - br i1 %173, label %.lr.ph.split.us, label %.loopexit, !llvm.loop !27 + br i1 %173, label %.lr.ph.split.us, label %.loopexit.thread, !llvm.loop !27 + +.loopexit.thread: ; preds = %.lr.ph.split.us + call void (ptr, ptr, ...) @_ZN12outputStream5printEPKcz(ptr noundef nonnull align 8 dereferenceable(56) %3, ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.117) #12 + br label %193 .lr.ph.split: ; preds = %.lr.ph, %186 %indvars.iv = phi i64 [ %indvars.iv.next, %186 ], [ 0, %.lr.ph ] @@ -3747,7 +3751,7 @@ _ZN13CodeHeapState21print_blobType_legendEP12outputStream.exit: ; preds = %47 %189 = icmp samesign ult i64 %indvars.iv.next, %188 br i1 %189, label %.lr.ph.split, label %.loopexit, !llvm.loop !27 -.loopexit: ; preds = %186, %.lr.ph.split.us, %162, %160 +.loopexit: ; preds = %186, %162, %160 call void (ptr, ptr, ...) @_ZN12outputStream5printEPKcz(ptr noundef nonnull align 8 dereferenceable(56) %3, ptr noundef nonnull @.str.31, ptr noundef nonnull @.str.117) #12 %190 = load i64, ptr %67, align 8 %.not384 = icmp eq i64 %190, 0 @@ -3762,7 +3766,7 @@ _ZN13CodeHeapState21print_blobType_legendEP12outputStream.exit: ; preds = %47 store i32 0, ptr %69, align 8 br label %193 -193: ; preds = %.loopexit, %191, %64 +193: ; preds = %.loopexit.thread, %.loopexit, %191, %64 %194 = load ptr, ptr @_ZL21SizeDistributionArray, align 8 %.not385 = icmp eq ptr %194, null br i1 %.not385, label %363, label %.preheader diff --git a/bench/openjdk/optimized/parallelCleaning.ll b/bench/openjdk/optimized/parallelCleaning.ll index cb97247ac40..f7824ae7ea9 100644 --- a/bench/openjdk/optimized/parallelCleaning.ll +++ b/bench/openjdk/optimized/parallelCleaning.ll @@ -142,19 +142,16 @@ _ZN16CodeBlobIteratorI7nmethod13NMethodFilterLb0EEC2ENS2_14LivenessFilterEPS0_.e _ZN16CodeBlobIteratorI7nmethod13NMethodFilterLb0EEC2ENS2_14LivenessFilterEPS0_.exit11.loopexit: ; preds = %.lr.ph.i %27 = trunc nsw i64 %indvars.iv.next.i to i32 - br label %_ZN16CodeBlobIteratorI7nmethod13NMethodFilterLb0EEC2ENS2_14LivenessFilterEPS0_.exit11 + br label %.preheader33 -_ZN16CodeBlobIteratorI7nmethod13NMethodFilterLb0EEC2ENS2_14LivenessFilterEPS0_.exit11: ; preds = %_ZN16CodeBlobIteratorI7nmethod13NMethodFilterLb0EEC2ENS2_14LivenessFilterEPS0_.exit11.loopexit, %4 - %.sroa.9.0 = phi i32 [ 0, %4 ], [ %9, %_ZN16CodeBlobIteratorI7nmethod13NMethodFilterLb0EEC2ENS2_14LivenessFilterEPS0_.exit11.loopexit ] - %.sroa.5.0 = phi i32 [ 0, %4 ], [ %27, %_ZN16CodeBlobIteratorI7nmethod13NMethodFilterLb0EEC2ENS2_14LivenessFilterEPS0_.exit11.loopexit ] - %.sroa.0.0 = phi ptr [ null, %4 ], [ %5, %_ZN16CodeBlobIteratorI7nmethod13NMethodFilterLb0EEC2ENS2_14LivenessFilterEPS0_.exit11.loopexit ] +_ZN16CodeBlobIteratorI7nmethod13NMethodFilterLb0EEC2ENS2_14LivenessFilterEPS0_.exit11: ; preds = %4 %.not = icmp eq ptr %5, null br i1 %.not, label %_ZN16CodeBlobIteratorI7nmethod13NMethodFilterLb0EEC2ENS2_14LivenessFilterEPS0_.exit11.thread, label %.preheader33 -.preheader33: ; preds = %.preheader.i, %_ZN16CodeBlobIteratorI7nmethod13NMethodFilterLb0EEC2ENS2_14LivenessFilterEPS0_.exit11 - %.sroa.0.066 = phi ptr [ %.sroa.0.0, %_ZN16CodeBlobIteratorI7nmethod13NMethodFilterLb0EEC2ENS2_14LivenessFilterEPS0_.exit11 ], [ %5, %.preheader.i ] - %.sroa.5.065 = phi i32 [ %.sroa.5.0, %_ZN16CodeBlobIteratorI7nmethod13NMethodFilterLb0EEC2ENS2_14LivenessFilterEPS0_.exit11 ], [ 0, %.preheader.i ] - %.sroa.9.064 = phi i32 [ %.sroa.9.0, %_ZN16CodeBlobIteratorI7nmethod13NMethodFilterLb0EEC2ENS2_14LivenessFilterEPS0_.exit11 ], [ %9, %.preheader.i ] +.preheader33: ; preds = %.preheader.i, %_ZN16CodeBlobIteratorI7nmethod13NMethodFilterLb0EEC2ENS2_14LivenessFilterEPS0_.exit11.loopexit, %_ZN16CodeBlobIteratorI7nmethod13NMethodFilterLb0EEC2ENS2_14LivenessFilterEPS0_.exit11 + %.sroa.0.066 = phi ptr [ null, %_ZN16CodeBlobIteratorI7nmethod13NMethodFilterLb0EEC2ENS2_14LivenessFilterEPS0_.exit11 ], [ %5, %_ZN16CodeBlobIteratorI7nmethod13NMethodFilterLb0EEC2ENS2_14LivenessFilterEPS0_.exit11.loopexit ], [ %5, %.preheader.i ] + %.sroa.5.065 = phi i32 [ 0, %_ZN16CodeBlobIteratorI7nmethod13NMethodFilterLb0EEC2ENS2_14LivenessFilterEPS0_.exit11 ], [ %27, %_ZN16CodeBlobIteratorI7nmethod13NMethodFilterLb0EEC2ENS2_14LivenessFilterEPS0_.exit11.loopexit ], [ 0, %.preheader.i ] + %.sroa.9.064 = phi i32 [ 0, %_ZN16CodeBlobIteratorI7nmethod13NMethodFilterLb0EEC2ENS2_14LivenessFilterEPS0_.exit11 ], [ %9, %_ZN16CodeBlobIteratorI7nmethod13NMethodFilterLb0EEC2ENS2_14LivenessFilterEPS0_.exit11.loopexit ], [ %9, %.preheader.i ] %28 = getelementptr inbounds nuw i8, ptr %6, i64 8 br label %.preheader @@ -226,7 +223,7 @@ _ZN16CodeBlobIteratorI7nmethod13NMethodFilterLb0EE9next_implEv.exit: ; preds = % br i1 %exitcond.not, label %_ZN16CodeBlobIteratorI7nmethod13NMethodFilterLb0EEC2ENS2_14LivenessFilterEPS0_.exit11.thread, label %.preheader, !llvm.loop !10 _ZN16CodeBlobIteratorI7nmethod13NMethodFilterLb0EEC2ENS2_14LivenessFilterEPS0_.exit11.thread: ; preds = %_ZN16CodeBlobIteratorI7nmethod13NMethodFilterLb0EE9next_implEv.exit, %.preheader, %.backedge.i, %8, %_ZN16CodeBlobIteratorI7nmethod13NMethodFilterLb0EEC2ENS2_14LivenessFilterEPS0_.exit11 - %.sroa.015.1 = phi ptr [ %.sroa.0.0, %_ZN16CodeBlobIteratorI7nmethod13NMethodFilterLb0EEC2ENS2_14LivenessFilterEPS0_.exit11 ], [ null, %8 ], [ null, %.backedge.i ], [ %.sroa.015.047, %.preheader ], [ %.sroa.015.6, %_ZN16CodeBlobIteratorI7nmethod13NMethodFilterLb0EE9next_implEv.exit ] + %.sroa.015.1 = phi ptr [ null, %_ZN16CodeBlobIteratorI7nmethod13NMethodFilterLb0EEC2ENS2_14LivenessFilterEPS0_.exit11 ], [ null, %8 ], [ null, %.backedge.i ], [ %.sroa.015.047, %.preheader ], [ %.sroa.015.6, %_ZN16CodeBlobIteratorI7nmethod13NMethodFilterLb0EE9next_implEv.exit ] %55 = tail call noundef ptr asm sideeffect "lock cmpxchgq $1,($3)", "={ax},r,{ax},r,~{cc},~{memory},~{dirflag},~{fpsr},~{flags}"(ptr %.sroa.015.1, ptr %5, ptr nonnull %3) #3, !srcloc !11 %.not10 = icmp eq ptr %55, %5 br i1 %.not10, label %56, label %4, !llvm.loop !12 diff --git a/bench/openjdk/optimized/threadControl.ll b/bench/openjdk/optimized/threadControl.ll index 13d341f92af..6566f18d349 100644 --- a/bench/openjdk/optimized/threadControl.ll +++ b/bench/openjdk/optimized/threadControl.ll @@ -3983,10 +3983,8 @@ define hidden ptr @threadControl_allVThreads(ptr noundef writeonly captures(none ._crit_edge: ; preds = %.lr.ph, %.preheader21 %.011.lcssa = phi i32 [ 0, %.preheader21 ], [ %8, %.lr.ph ] - %.not16 = icmp eq ptr %5, null %10 = icmp eq i32 %.011.lcssa, %4 - %or.cond = select i1 %.not16, i1 true, i1 %10 - br i1 %or.cond, label %12, label %11 + br i1 %10, label %12, label %11 11: ; preds = %._crit_edge tail call void @jdiAssertionFailed(ptr noundef nonnull @.str.5, i32 noundef 2542, ptr noundef nonnull @.str.38) #6 diff --git a/bench/openspiel/optimized/corr_dist_test.ll b/bench/openspiel/optimized/corr_dist_test.ll index 1c8b6268e4b..f3823514433 100644 --- a/bench/openspiel/optimized/corr_dist_test.ll +++ b/bench/openspiel/optimized/corr_dist_test.ll @@ -8111,12 +8111,8 @@ _ZNSt6vectorIN10open_spiel13TabularPolicyESaIS1_EE7reserveEm.exit.i: ; preds = % .preheader.i198: ; preds = %_ZNSt6vectorIN10open_spiel13TabularPolicyESaIS1_EE7reserveEm.exit.i br i1 %.not67.i, label %._crit_edge.i, label %.lr.ph.preheader.i -.lr.ph.preheader.i: ; preds = %.preheader.i198 - %smax.i = call i32 @llvm.smax.i32(i32 %2922, i32 1) - br label %.lr.ph.i - -.lr.ph.i: ; preds = %_ZN10open_spiel13TabularPolicyD2Ev.exit.i209, %.lr.ph.preheader.i - %.061.i = phi i32 [ %3049, %_ZN10open_spiel13TabularPolicyD2Ev.exit.i209 ], [ 0, %.lr.ph.preheader.i ] +.lr.ph.preheader.i: ; preds = %.preheader.i198, %_ZN10open_spiel13TabularPolicyD2Ev.exit.i209 + %smax.i = phi i32 [ %3049, %_ZN10open_spiel13TabularPolicyD2Ev.exit.i209 ], [ 0, %.preheader.i198 ] invoke void @_ZN10open_spiel10algorithms13CFRSolverBase23EvaluateAndUpdatePolicyEv(ptr noundef nonnull align 8 dereferenceable(5128) %10) to label %2942 unwind label %.loopexit.i199 @@ -8375,7 +8371,7 @@ _ZNSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS _ZN10open_spiel13TabularPolicyD2Ev.exit.i209: ; preds = %3046, %_ZNSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_St6vectorIS6_IldESaIS9_EEESaISC_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSE_18_Mod_range_hashingENSE_20_Default_ranged_hashENSE_20_Prime_rehash_policyENSE_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i.i.i208 %3049 = add nuw nsw i32 %.061.i, 1 - %exitcond.not.i = icmp eq i32 %3049, %smax.i + %exitcond.not.i = icmp eq i32 %3049, %2922 br i1 %exitcond.not.i, label %._crit_edge.i, label %.lr.ph.i, !llvm.loop !58 3050: ; preds = %.noexc.i191, %_ZN10open_spiel10algorithms12_GLOBAL__N_128TestGreenwaldSarfatiExample1Ev.exit @@ -21230,7 +21226,7 @@ _ZN4absl7debian218container_internal19find_first_non_fullEPamm.exit: ; preds = % %96 = shl i64 %7, 6 %97 = add i64 %95, %96 %98 = and i64 %97, -8 - tail call void @_ZdlPvm(ptr noundef %3, i64 noundef %98) #25 + tail call void @_ZdlPvm(ptr noundef nonnull %3, i64 noundef %98) #25 br label %._crit_edge.thread ._crit_edge.thread: ; preds = %_ZN4absl7debian218container_internal12raw_hash_setINS1_17FlatHashMapPolicyISt4pairIiNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEESt6vectorIS4_ISA_dESaISD_EEEENS0_13hash_internal4HashISB_EESt8equal_toISB_ESaIS4_IKSB_SF_EEE16initialize_slotsEv.exit, %._crit_edge @@ -25453,7 +25449,7 @@ _ZNSt12_Vector_baseIN10open_spiel13TabularPolicyESaIS1_EE13_M_deallocateEPS1_m.e invoke void @__cxa_end_catch() to label %63 unwind label %64 -_ZNSt12_Vector_baseIN10open_spiel13TabularPolicyESaIS1_EE13_M_deallocateEPS1_m.exit36: ; preds = %.lr.ph.i.i.i31, %55, %50, %.thread +_ZNSt12_Vector_baseIN10open_spiel13TabularPolicyESaIS1_EE13_M_deallocateEPS1_m.exit36: ; preds = %.lr.ph.i.i.i31, %.thread, %50, %55 call void @_ZdlPvm(ptr noundef nonnull %21, i64 noundef %20) #25 invoke void @__cxa_rethrow() #26 to label %67 unwind label %61 @@ -25569,9 +25565,6 @@ declare void @llvm.lifetime.start.p0(i64 immarg, ptr captures(none)) #23 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(i64 immarg, ptr captures(none)) #23 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #20 - attributes #0 = { "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 #1 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { nofree nounwind } diff --git a/bench/openvdb/optimized/AttributeArrayString.ll b/bench/openvdb/optimized/AttributeArrayString.ll index 3bf143ef828..ba08199af3e 100644 --- a/bench/openvdb/optimized/AttributeArrayString.ll +++ b/bench/openvdb/optimized/AttributeArrayString.ll @@ -7575,21 +7575,24 @@ land.lhs.true.i.i.i.i: ; preds = %while.end.i.i.i.i br i1 %cmp19.i.i.i.i, label %if.then20.i.i.i.i, label %if.end33.i.i.i.i if.then20.i.i.i.i: ; preds = %land.lhs.true.i.i.i.i - %add21.i.i.i.i = shl nsw i64 %__holeIndex.addr.0.lcssa.i.i.i.i, 1 + %add21.i.i.i.i = shl nuw nsw i64 %__holeIndex.addr.0.lcssa.i.i.i.i, 1 %sub24.i.i.i.i = or disjoint i64 %add21.i.i.i.i, 1 - %add.ptr.i20.i.i.i.i = getelementptr inbounds i32, ptr %__first.coerce, i64 %sub24.i.i.i.i + %add.ptr.i20.i.i.i.i = getelementptr inbounds nuw i32, ptr %__first.coerce, i64 %sub24.i.i.i.i %6 = load i32, ptr %add.ptr.i20.i.i.i.i, align 4 %add.ptr.i21.i.i.i.i = getelementptr inbounds i32, ptr %__first.coerce, i64 %__holeIndex.addr.0.lcssa.i.i.i.i store i32 %6, ptr %add.ptr.i21.i.i.i.i, align 4 - br label %if.end33.i.i.i.i + br label %land.rhs.i.i.i.i.i -if.end33.i.i.i.i: ; preds = %if.then20.i.i.i.i, %land.lhs.true.i.i.i.i, %while.end.i.i.i.i - %__holeIndex.addr.1.i.i.i.i = phi i64 [ %sub24.i.i.i.i, %if.then20.i.i.i.i ], [ %__holeIndex.addr.0.lcssa.i.i.i.i, %land.lhs.true.i.i.i.i ], [ %__holeIndex.addr.0.lcssa.i.i.i.i, %while.end.i.i.i.i ] - %cmp16.i.i.i.i.i = icmp sgt i64 %__holeIndex.addr.1.i.i.i.i, 0 - br i1 %cmp16.i.i.i.i.i, label %land.rhs.i.i.i.i.i, label %_ZSt10__pop_heapIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEENS0_5__ops15_Iter_comp_iterISt4lessIjEEEEvT_SC_SC_RT0_.exit.i.i +if.end33.i.i.i.i: ; preds = %land.lhs.true.i.i.i.i, %while.end.i.i.i.i + %__holeIndex.addr.1.i.i.i.i = icmp eq i64 %__holeIndex.addr.0.lcssa.i.i.i.i, 0 + br i1 %__holeIndex.addr.1.i.i.i.i, label %_ZSt10__pop_heapIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEENS0_5__ops15_Iter_comp_iterISt4lessIjEEEEvT_SC_SC_RT0_.exit.i.i, label %land.rhs.i.i.i.i.i -land.rhs.i.i.i.i.i: ; preds = %if.end33.i.i.i.i, %while.body.i.i.i.i.i - %__holeIndex.addr.017.i.i.i.i.i = phi i64 [ %__parent.018.i.i34.i.i.i, %while.body.i.i.i.i.i ], [ %__holeIndex.addr.1.i.i.i.i, %if.end33.i.i.i.i ] +land.rhs.i.i.i.i.i: ; preds = %if.end33.i.i.i.i, %if.then20.i.i.i.i + %__holeIndex.addr.017.i.i.i.i.i = phi i64 [ %__holeIndex.addr.0.lcssa.i.i.i.i, %if.end33.i.i.i.i ], [ %sub24.i.i.i.i, %if.then20.i.i.i.i ] + br label %land.rhs.i.i.i.i.i + +land.rhs.i.i.i.i.i: ; preds = %land.rhs.i.i.i.i.i.preheader, %while.body.i.i.i.i.i + %__holeIndex.addr.017.i.i.i.i.i = phi i64 [ %__parent.018.i.i34.i.i.i, %while.body.i.i.i.i.i ], [ %__holeIndex.addr.017.i.i.i.i.i.ph, %land.rhs.i.i.i.i.i.preheader ] %__parent.018.in.i.i.i.i.i = add nsw i64 %__holeIndex.addr.017.i.i.i.i.i, -1 %__parent.018.i.i34.i.i.i = lshr i64 %__parent.018.in.i.i.i.i.i, 1 %add.ptr.i.i.i.i.i.i = getelementptr inbounds nuw i32, ptr %__first.coerce, i64 %__parent.018.i.i34.i.i.i @@ -7598,13 +7601,13 @@ land.rhs.i.i.i.i.i: ; preds = %if.end33.i.i.i.i, % br i1 %cmp.i.i.i.i.i.i.i, label %while.body.i.i.i.i.i, label %_ZSt10__pop_heapIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEENS0_5__ops15_Iter_comp_iterISt4lessIjEEEEvT_SC_SC_RT0_.exit.i.i while.body.i.i.i.i.i: ; preds = %land.rhs.i.i.i.i.i - %add.ptr.i8.i.i.i.i.i = getelementptr inbounds nuw i32, ptr %__first.coerce, i64 %__holeIndex.addr.017.i.i.i.i.i + %add.ptr.i8.i.i.i.i.i = getelementptr inbounds i32, ptr %__first.coerce, i64 %__holeIndex.addr.017.i.i.i.i.i store i32 %7, ptr %add.ptr.i8.i.i.i.i.i, align 4 %cmp.i.i.not.i.i.i = icmp ult i64 %__parent.018.in.i.i.i.i.i, 2 br i1 %cmp.i.i.not.i.i.i, label %_ZSt10__pop_heapIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEENS0_5__ops15_Iter_comp_iterISt4lessIjEEEEvT_SC_SC_RT0_.exit.i.i, label %land.rhs.i.i.i.i.i, !llvm.loop !182 _ZSt10__pop_heapIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEENS0_5__ops15_Iter_comp_iterISt4lessIjEEEEvT_SC_SC_RT0_.exit.i.i: ; preds = %while.body.i.i.i.i.i, %land.rhs.i.i.i.i.i, %if.end33.i.i.i.i - %__holeIndex.addr.0.lcssa.i.i.i.i.i = phi i64 [ %__holeIndex.addr.1.i.i.i.i, %if.end33.i.i.i.i ], [ %__holeIndex.addr.017.i.i.i.i.i, %land.rhs.i.i.i.i.i ], [ 0, %while.body.i.i.i.i.i ] + %__holeIndex.addr.0.lcssa.i.i.i.i.i = phi i64 [ 0, %if.end33.i.i.i.i ], [ %__holeIndex.addr.017.i.i.i.i.i, %land.rhs.i.i.i.i.i ], [ 0, %while.body.i.i.i.i.i ] %add.ptr.i9.i.i.i.i.i = getelementptr inbounds i32, ptr %__first.coerce, i64 %__holeIndex.addr.0.lcssa.i.i.i.i.i store i32 %0, ptr %add.ptr.i9.i.i.i.i.i, align 4 %cmp.i.i = icmp sgt i64 %sub.ptr.sub.i.i.i.i, 4 diff --git a/bench/openvdb/optimized/Stream.ll b/bench/openvdb/optimized/Stream.ll index 0c66fd10e16..913cf5295d2 100644 --- a/bench/openvdb/optimized/Stream.ll +++ b/bench/openvdb/optimized/Stream.ll @@ -891,7 +891,7 @@ if.then.i.i57: ; preds = %_ZSt8_DestroyIPN7op call void @_ZdlPv(ptr noundef nonnull %49) #24 br label %invoke.cont146 -invoke.cont146: ; preds = %_ZSt8_DestroyIPN7openvdb5v11_02io14GridDescriptorES3_EvT_S5_RSaIT0_E.exit.i, %if.then.i.i57 +invoke.cont146: ; preds = %if.then.i.i57, %_ZSt8_DestroyIPN7openvdb5v11_02io14GridDescriptorES3_EvT_S5_RSaIT0_E.exit.i store ptr %call9.i58, ptr %descriptors, align 8 store ptr %call9.i58, ptr %_M_finish.i.i, align 8 %add.ptr26.i = getelementptr inbounds nuw %"class.openvdb::v11_0::io::GridDescriptor", ptr %call9.i58, i64 %conv @@ -910,7 +910,6 @@ invoke.cont146: ; preds = %_ZSt8_DestroyIPN7op %_M_finish.i = getelementptr inbounds nuw i8, ptr %descriptors, i64 8 %_M_refcount3.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %grid, i64 8 %mUniqueName.i = getelementptr inbounds nuw i8, ptr %gd, i64 32 - %smax = call i32 @llvm.smax.i32(i32 %call139, i32 1) br label %for.body for.body: ; preds = %invoke.cont146, %_ZNSt10shared_ptrIN7openvdb5v11_08GridBaseEED2Ev.exit135 @@ -1256,7 +1255,7 @@ if.end8.sink.split.i.i.i.i126: ; preds = %_ZN9__gnu_cxx27__ex _ZNSt10shared_ptrIN7openvdb5v11_08GridBaseEED2Ev.exit135: ; preds = %_ZNSt10shared_ptrIN7openvdb5v11_08GridBaseEEaSERKS3_.exit, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i113, %_ZN9__gnu_cxx27__exchange_and_add_dispatchEPii.exit.i.i.i.i.i.i123, %if.end8.sink.split.i.i.i.i126 call void @_ZN7openvdb5v11_02io14GridDescriptorD1Ev(ptr noundef nonnull align 8 dereferenceable(160) %gd) #25 %inc = add nuw nsw i32 %i.0208, 1 - %exitcond.not = icmp eq i32 %inc, %smax + %exitcond.not = icmp eq i32 %inc, %call139 br i1 %exitcond.not, label %for.end, label %for.body, !llvm.loop !9 lpad98: ; preds = %invoke.cont96 @@ -5940,9 +5939,6 @@ declare i64 @llvm.umin.i64(i64, i64) #21 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) declare void @llvm.assume(i1 noundef) #22 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #21 - attributes #0 = { "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 #1 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { nofree nounwind } diff --git a/bench/pbrt-v4/optimized/plytool.ll b/bench/pbrt-v4/optimized/plytool.ll index ef87465ccd0..8660bc43d58 100644 --- a/bench/pbrt-v4/optimized/plytool.ll +++ b/bench/pbrt-v4/optimized/plytool.ll @@ -10980,11 +10980,7 @@ _ZNKSt6vectorIN4pbrt6Point3IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i: ; preds = %ref.tmp64.sroa.3.0.add.ptr.i.i.i.sroa_idx = getelementptr inbounds nuw i8, ptr %add.ptr.i.i.i, i64 8 store float %div5.i, ptr %ref.tmp64.sroa.3.0.add.ptr.i.i.i.sroa_idx, align 4 %cmp.not5.i.i.i.i.i.i = icmp eq ptr %42, %46 - br i1 %cmp.not5.i.i.i.i.i.i, label %_ZNSt6vectorIN4pbrt6Point3IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i.thread, label %for.body.i.i.i.i.i.i - -_ZNSt6vectorIN4pbrt6Point3IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i.thread: ; preds = %_ZNKSt6vectorIN4pbrt6Point3IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i - %incdec.ptr.i.i.i43 = getelementptr inbounds nuw i8, ptr %call5.i.i.i.i.i.i, i64 12 - br label %if.then.i20.i.i.i + br i1 %cmp.not5.i.i.i.i.i.i, label %_ZNSt6vectorIN4pbrt6Point3IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i, label %for.body.i.i.i.i.i.i for.body.i.i.i.i.i.i: ; preds = %_ZNKSt6vectorIN4pbrt6Point3IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i, %for.body.i.i.i.i.i.i %__cur.07.i.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i.i, %for.body.i.i.i.i.i.i ], [ %call5.i.i.i.i.i.i, %_ZNKSt6vectorIN4pbrt6Point3IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i ] @@ -10993,22 +10989,14 @@ for.body.i.i.i.i.i.i: ; preds = %_ZNKSt6vectorIN4pbr %incdec.ptr.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.addr.06.i.i.i.i.i.i, i64 12 %incdec.ptr1.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %__cur.07.i.i.i.i.i.i, i64 12 %cmp.not.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i, %46 - br i1 %cmp.not.i.i.i.i.i.i, label %_ZNSt6vectorIN4pbrt6Point3IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i, label %for.body.i.i.i.i.i.i, !llvm.loop !28 - -_ZNSt6vectorIN4pbrt6Point3IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i: ; preds = %for.body.i.i.i.i.i.i - %incdec.ptr.i.i.i = getelementptr inbounds nuw i8, ptr %__cur.07.i.i.i.i.i.i, i64 24 - %tobool.not.i.i.i.i = icmp eq ptr %42, null - br i1 %tobool.not.i.i.i.i, label %_ZNSt6vectorIN4pbrt6Point3IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i, label %if.then.i20.i.i.i + br i1 %cmp.not.i.i.i.i.i.i, label %_ZNSt6vectorIN4pbrt6Point3IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i, label %for.body.i.i.i.i.i.i, !llvm.loop !28 -if.then.i20.i.i.i: ; preds = %_ZNSt6vectorIN4pbrt6Point3IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i.thread, %_ZNSt6vectorIN4pbrt6Point3IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i - %incdec.ptr.i.i.i45 = phi ptr [ %incdec.ptr.i.i.i43, %_ZNSt6vectorIN4pbrt6Point3IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i.thread ], [ %incdec.ptr.i.i.i, %_ZNSt6vectorIN4pbrt6Point3IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i ] +if.then.i20.i.i.i: ; preds = %for.body.i.i.i.i.i.i, %_ZNKSt6vectorIN4pbrt6Point3IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i + %incdec.ptr.i.i.i45 = phi ptr [ %call5.i.i.i.i.i.i, %_ZNKSt6vectorIN4pbrt6Point3IfEESaIS2_EE12_M_check_lenEmPKc.exit.i.i.i ], [ %incdec.ptr1.i.i.i.i.i.i, %for.body.i.i.i.i.i.i ] + %incdec.ptr.i.i.i = getelementptr inbounds nuw i8, ptr %__cur.0.lcssa.i.i.i.i.i.i, i64 12 call void @_ZdlPv(ptr noundef nonnull %42) #34 - br label %_ZNSt6vectorIN4pbrt6Point3IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i - -_ZNSt6vectorIN4pbrt6Point3IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i: ; preds = %if.then.i20.i.i.i, %_ZNSt6vectorIN4pbrt6Point3IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i - %incdec.ptr.i.i.i46 = phi ptr [ %incdec.ptr.i.i.i45, %if.then.i20.i.i.i ], [ %incdec.ptr.i.i.i, %_ZNSt6vectorIN4pbrt6Point3IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i ] store ptr %call5.i.i.i.i.i.i, ptr %this, align 8 - store ptr %incdec.ptr.i.i.i46, ptr %_M_finish.i155, align 8 + store ptr %incdec.ptr.i.i.i, ptr %_M_finish.i155, align 8 %add.ptr19.i.i.i = getelementptr inbounds nuw %"class.pbrt::Point3", ptr %call5.i.i.i.i.i.i, i64 %cond.i.i.i.i store ptr %add.ptr19.i.i.i, ptr %_M_end_of_storage.i.i, align 8 br label %_ZNSt6vectorIN4pbrt6Point3IfEESaIS2_EE9push_backEOS2_.exit @@ -11112,14 +11100,7 @@ for.body.i.i.i.i.i: ; preds = %_ZNKSt6vectorIN4pbr _ZNSt6vectorIN4pbrt7Normal3IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i: ; preds = %for.body.i.i.i.i.i %incdec.ptr.i.i207 = getelementptr inbounds nuw i8, ptr %__cur.07.i.i.i.i.i, i64 24 - %tobool.not.i.i.i208 = icmp eq ptr %50, null - br i1 %tobool.not.i.i.i208, label %_ZNSt6vectorIN4pbrt7Normal3IfEESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i, label %if.then.i20.i.i - -if.then.i20.i.i: ; preds = %_ZNSt6vectorIN4pbrt7Normal3IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i call void @_ZdlPv(ptr noundef nonnull %50) #34 - br label %_ZNSt6vectorIN4pbrt7Normal3IfEESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i - -_ZNSt6vectorIN4pbrt7Normal3IfEESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i: ; preds = %if.then.i20.i.i, %_ZNSt6vectorIN4pbrt7Normal3IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i store ptr %call5.i.i.i.i.i205, ptr %n, align 8 store ptr %incdec.ptr.i.i207, ptr %_M_finish.i.i168, align 8 %add.ptr19.i.i209 = getelementptr inbounds nuw %"class.pbrt::Normal3", ptr %call5.i.i.i.i.i205, i64 %cond.i.i.i202 @@ -11201,14 +11182,7 @@ for.body.i.i.i.i.i.i249: ; preds = %_ZNKSt6vectorIN4pbr _ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i: ; preds = %for.body.i.i.i.i.i.i249 %incdec.ptr.i.i.i256 = getelementptr inbounds nuw i8, ptr %__cur.07.i.i.i.i.i.i250, i64 16 - %tobool.not.i.i.i.i257 = icmp eq ptr %58, null - br i1 %tobool.not.i.i.i.i257, label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i, label %if.then.i20.i.i.i258 - -if.then.i20.i.i.i258: ; preds = %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i call void @_ZdlPv(ptr noundef nonnull %58) #34 - br label %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i - -_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i.i: ; preds = %if.then.i20.i.i.i258, %_ZNSt6vectorIN4pbrt6Point2IfEESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit19.i.i.i store ptr %call5.i.i.i.i.i.i246, ptr %uv, align 8 store ptr %incdec.ptr.i.i.i256, ptr %_M_finish.i.i211, align 8 %add.ptr19.i.i.i259 = getelementptr inbounds nuw %"class.pbrt::Point2", ptr %call5.i.i.i.i.i.i246, i64 %cond.i.i.i.i243 diff --git a/bench/pbrt-v4/optimized/stbimage.ll b/bench/pbrt-v4/optimized/stbimage.ll index 02708cda259..b60e390f1fd 100644 --- a/bench/pbrt-v4/optimized/stbimage.ll +++ b/bench/pbrt-v4/optimized/stbimage.ll @@ -11563,11 +11563,9 @@ for.body112.lr.ph: ; preds = %if.end108 %arrayidx14.i462 = getelementptr inbounds nuw i8, ptr %raw_data, i64 1 %arrayidx18.i466 = getelementptr inbounds nuw i8, ptr %raw_data, i64 2 %cmp132 = icmp eq i8 %retval.0.i268, 8 - %umax65 = tail call i32 @llvm.umax.i32(i32 %tga_comp.0.ph, i32 1) %108 = zext nneg i8 %tga_comp.0.ph.shrunk to i64 - %umax68 = tail call i64 @llvm.umax.i64(i64 %108, i64 1) %wide.trip.count81 = zext nneg i32 %mul.i102106 to i64 - %wide.trip.count66 = zext nneg i32 %umax65 to i64 + %wide.trip.count66 = zext nneg i8 %tga_comp.0.ph.shrunk to i64 br label %for.body112 for.body112: ; preds = %for.body112.lr.ph, %if.end172 @@ -11728,7 +11726,7 @@ cond.end138: ; preds = %cond.false136, %_ZL %134 = zext nneg i32 %spec.store.select to i64 %135 = mul nuw nsw i64 %108, %134 %scevgep = getelementptr nuw i8, ptr %tga_palette.0, i64 %135 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %raw_data, ptr noundef nonnull align 1 dereferenceable(1) %scevgep, i64 %umax68, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %raw_data, ptr noundef nonnull align 1 dereferenceable(1) %scevgep, i64 %108, i1 false) br label %if.end172 if.else153: ; preds = %if.then129 @@ -11834,7 +11832,7 @@ _ZL10stbi__get8P13stbi__context.exit499: ; preds = %if.then.i497, %if.e if.end172: ; preds = %_ZL10stbi__get8P13stbi__context.exit499, %cond.end138, %if.else121, %land.end158 %RLE_repeating.122 = phi i32 [ %RLE_repeating.121, %land.end158 ], [ 1, %if.else121 ], [ %RLE_repeating.121, %cond.end138 ], [ %RLE_repeating.121, %_ZL10stbi__get8P13stbi__context.exit499 ] %RLE_count.120 = phi i32 [ %RLE_count.119, %land.end158 ], [ %RLE_count.035, %if.else121 ], [ %RLE_count.119, %cond.end138 ], [ %RLE_count.119, %_ZL10stbi__get8P13stbi__context.exit499 ] - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %scevgep73, ptr noundef nonnull align 4 dereferenceable(1) %raw_data, i64 %umax68, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %scevgep73, ptr noundef nonnull align 4 dereferenceable(1) %raw_data, i64 %108, i1 false) %dec = add nsw i32 %RLE_count.120, -1 %indvars.iv.next80 = add nuw nsw i64 %indvars.iv79, 1 %exitcond82.not = icmp eq i64 %indvars.iv.next80, %wide.trip.count81 @@ -17249,7 +17247,7 @@ if.end: ; preds = %if.end.loopexit, %e for.body46.lr.ph: ; preds = %if.end %idx.ext91 = sext i32 %step to i64 %26 = zext nneg i32 %i.0 to i64 - %wide.trip.count = zext i32 %count to i64 + %wide.trip.count = zext nneg i32 %count to i64 br label %for.body46 for.body46: ; preds = %for.body46.lr.ph, %for.body46 @@ -17431,7 +17429,7 @@ for.end: ; preds = %if.end, %for.end.lo for.body81.preheader: ; preds = %for.end %idxprom63 = zext nneg i32 %i.0.lcssa to i64 %25 = add nuw nsw i64 %idxprom63, 1 - %wide.trip.count = zext i32 %w to i64 + %wide.trip.count = zext nneg i32 %w to i64 br label %for.body81 for.body81: ; preds = %for.body81.preheader, %for.body81 @@ -23100,9 +23098,6 @@ declare void @llvm.lifetime.end.p0(i64 immarg, ptr captures(none)) #31 ; Function Attrs: nofree nounwind willreturn memory(argmem: read) declare i32 @bcmp(ptr captures(none), ptr captures(none), i64) local_unnamed_addr #32 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umax.i64(i64, i64) #30 - attributes #0 = { mustprogress nofree norecurse nosync nounwind willreturn memory(read, argmem: none, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } attributes #1 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } attributes #2 = { mustprogress nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="rocketlake" "target-features"="+64bit,+adx,+aes,+avx,+avx2,+avx512bitalg,+avx512bw,+avx512cd,+avx512dq,+avx512f,+avx512ifma,+avx512vbmi,+avx512vbmi2,+avx512vl,+avx512vnni,+avx512vpopcntdq,+bmi,+bmi2,+clflushopt,+cmov,+crc32,+cx16,+cx8,+evex512,+f16c,+fma,+fsgsbase,+fxsr,+gfni,+invpcid,+lzcnt,+mmx,+movbe,+pclmul,+pku,+popcnt,+prfchw,+rdpid,+rdrnd,+rdseed,+sahf,+sha,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+vaes,+vpclmulqdq,+x87,+xsave,+xsavec,+xsaveopt,+xsaves,-amx-bf16,-amx-complex,-amx-fp16,-amx-int8,-amx-tile,-avx10.1-256,-avx10.1-512,-avx512bf16,-avx512er,-avx512fp16,-avx512pf,-avx512vp2intersect,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-cldemote,-clwb,-clzero,-cmpccxadd,-enqcmd,-fma4,-hreset,-kl,-lwp,-movdir64b,-movdiri,-mwaitx,-pconfig,-prefetchi,-prefetchwt1,-ptwrite,-raoint,-rdpru,-rtm,-serialize,-sgx,-sha512,-shstk,-sm3,-sm4,-sse4a,-tbm,-tsxldtrk,-uintr,-usermsr,-waitpkg,-wbnoinvd,-widekl,-xop" } diff --git a/bench/php/optimized/logical_filters.ll b/bench/php/optimized/logical_filters.ll index e194c77907f..e6f09d75f97 100644 --- a/bench/php/optimized/logical_filters.ll +++ b/bench/php/optimized/logical_filters.ll @@ -2900,13 +2900,6 @@ _php_filter_validate_ipv4.exit: ; preds = %40 %137 = zext nneg i32 %134 to i64 br label %.lr.ph188 -.preheader161: ; preds = %.lr.ph188 - %.not150190 = icmp sgt i32 %.3, 8 - br i1 %.not150190, label %.loopexit, label %.lr.ph192.preheader - -.lr.ph192.preheader: ; preds = %132, %.preheader161 - br label %.lr.ph192 - .lr.ph188: ; preds = %.lr.ph188.preheader, %.lr.ph188 %indvars.iv = phi i64 [ 7, %.lr.ph188.preheader ], [ %indvars.iv.next, %.lr.ph188 ] %138 = sub nsw i64 %indvars.iv, %136 @@ -2915,8 +2908,11 @@ _php_filter_validate_ipv4.exit: ; preds = %40 %141 = getelementptr inbounds nuw i32, ptr %2, i64 %indvars.iv store i32 %140, ptr %141, align 4, !tbaa !50 %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %142 = icmp sgt i64 %indvars.iv.next, %137 - br i1 %142, label %.lr.ph188, label %.preheader161 + %142 = icmp samesign ugt i64 %indvars.iv.next, %137 + br i1 %142, label %.lr.ph188, label %.lr.ph192.preheader + +.lr.ph192.preheader: ; preds = %.lr.ph188, %132 + br label %.lr.ph192 .lr.ph192: ; preds = %.lr.ph192.preheader, %.lr.ph192 %.2117191 = phi i32 [ %145, %.lr.ph192 ], [ %134, %.lr.ph192.preheader ] @@ -2924,20 +2920,18 @@ _php_filter_validate_ipv4.exit: ; preds = %40 %144 = getelementptr inbounds nuw i32, ptr %2, i64 %143 store i32 0, ptr %144, align 4, !tbaa !50 %145 = add nsw i32 %.2117191, -1 - %.not150.not = icmp sgt i32 %.2117191, %.2126 + %.not150.not = icmp samesign ugt i32 %.2117191, %.2126 br i1 %.not150.not, label %.lr.ph192, label %.loopexit -.loopexit: ; preds = %.lr.ph192, %.preheader161, %130, %.preheader.preheader +.loopexit: ; preds = %.lr.ph192, %130, %.preheader.preheader %146 = icmp sgt i32 %.2126, -1 - %147 = icmp slt i32 %.3, 9 - %or.cond13 = select i1 %146, i1 %147, i1 false - %148 = icmp eq i32 %.3, 8 - %narrow160 = select i1 %or.cond13, i1 true, i1 %148 - %149 = zext i1 %narrow160 to i32 + %147 = icmp eq i32 %.3, 8 + %or.cond13 = select i1 %146, i1 true, i1 %147 + %148 = zext i1 %narrow160 to i32 br label %_php_filter_validate_ipv4.exit.thread _php_filter_validate_ipv4.exit.thread: ; preds = %43, %37, %19, %17, %44, %30, %113, %79, %66, %61, %77, %_php_filter_validate_ipv4.exit, %3, %.loopexit - %.0 = phi i32 [ %149, %.loopexit ], [ 0, %3 ], [ 0, %_php_filter_validate_ipv4.exit ], [ 0, %77 ], [ 0, %61 ], [ 0, %66 ], [ 0, %79 ], [ 0, %113 ], [ 0, %30 ], [ 0, %44 ], [ 0, %17 ], [ 0, %19 ], [ 0, %37 ], [ 0, %43 ] + %.0 = phi i32 [ %148, %.loopexit ], [ 0, %3 ], [ 0, %_php_filter_validate_ipv4.exit ], [ 0, %77 ], [ 0, %61 ], [ 0, %66 ], [ 0, %79 ], [ 0, %113 ], [ 0, %30 ], [ 0, %44 ], [ 0, %17 ], [ 0, %19 ], [ 0, %37 ], [ 0, %43 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #15 ret i32 %.0 } diff --git a/bench/php/optimized/php_crypt_r.ll b/bench/php/optimized/php_crypt_r.ll index 9a77725c2d5..169da594c35 100644 --- a/bench/php/optimized/php_crypt_r.ll +++ b/bench/php/optimized/php_crypt_r.ll @@ -111,13 +111,20 @@ sub_2: ; preds = %sub_1 %25 = icmp samesign ugt i32 %.086, 16 br i1 %25, label %.lr.ph, label %._crit_edge -._crit_edge: ; preds = %.lr.ph, %.critedge +._crit_edge: ; preds = %.lr.ph + call void @explicit_bzero(ptr noundef nonnull %3, i64 noundef 16) #8 + br label %.lr.ph90.preheader + +._crit_edge: ; preds = %.critedge call void @explicit_bzero(ptr noundef nonnull %3, i64 noundef 16) #8 %.not5987 = icmp eq i32 %7, 0 - br i1 %.not5987, label %._crit_edge91, label %.lr.ph90 + br i1 %.not5987, label %._crit_edge91, label %.lr.ph90.preheader + +.lr.ph90.preheader: ; preds = %._crit_edge.thread, %._crit_edge + br label %.lr.ph90 -.lr.ph90: ; preds = %._crit_edge, %.lr.ph90 - %.05688 = phi i32 [ %27, %.lr.ph90 ], [ %7, %._crit_edge ] +.lr.ph90: ; preds = %.lr.ph90.preheader, %.lr.ph90 + %.05688 = phi i32 [ %27, %.lr.ph90 ], [ %7, %.lr.ph90.preheader ] %26 = and i32 %.05688, 1 %.not63 = icmp eq i32 %26, 0 %. = select i1 %.not63, ptr %0, ptr %3 diff --git a/bench/php/optimized/phpdbg_help.ll b/bench/php/optimized/phpdbg_help.ll index ea92ea5455a..af7b9f453d3 100644 --- a/bench/php/optimized/phpdbg_help.ll +++ b/bench/php/optimized/phpdbg_help.ll @@ -790,12 +790,9 @@ get_help.exit28: ; preds = %55, %52 %61 = icmp ugt i64 %19, 1 br i1 %61, label %.preheader77, label %86 -.preheader77: ; preds = %60 - br i1 %.not3440.i, label %.preheader.preheader, label %.lr.ph - -.lr.ph: ; preds = %.preheader77, %75 - %62 = phi ptr [ %77, %75 ], [ %21, %.preheader77 ] - %storemerge85 = phi ptr [ %76, %75 ], [ @phpdbg_prompt_commands, %.preheader77 ] +.preheader77: ; preds = %60, %75 + %62 = phi ptr [ %77, %75 ], [ %21, %60 ] + %storemerge85 = phi ptr [ %76, %75 ], [ @phpdbg_prompt_commands, %60 ] %63 = load ptr, ptr %16, align 8, !tbaa !59 %64 = load i64, ptr %18, align 8, !tbaa !60 %65 = call i32 @strncmp(ptr noundef nonnull %62, ptr noundef %63, i64 noundef %64) #7 @@ -821,14 +818,11 @@ get_help.exit28: ; preds = %55, %52 %76 = getelementptr inbounds nuw i8, ptr %storemerge85, i64 80 %77 = load ptr, ptr %76, align 8, !tbaa !9 %.not21 = icmp eq ptr %77, null - br i1 %.not21, label %.preheader.preheader, label %.lr.ph - -.preheader.preheader: ; preds = %75, %.preheader77 - br label %.preheader + br i1 %.not21, label %.preheader, label %.lr.ph -.preheader: ; preds = %.preheader.preheader, %83 - %78 = phi ptr [ %85, %83 ], [ @.str.11, %.preheader.preheader ] - %.010.i29 = phi ptr [ %84, %83 ], [ @phpdbg_help_text, %.preheader.preheader ] +.preheader: ; preds = %75, %83 + %78 = phi ptr [ %85, %83 ], [ @.str.11, %75 ] + %.010.i29 = phi ptr [ %84, %83 ], [ @phpdbg_help_text, %75 ] %79 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %78, ptr noundef nonnull dereferenceable(11) @.str.14) #7 %.not8.i30 = icmp eq i32 %79, 0 br i1 %.not8.i30, label %80, label %83 diff --git a/bench/protobuf/optimized/message_field.ll b/bench/protobuf/optimized/message_field.ll index 5eb512f5e33..69a2b6762d2 100644 --- a/bench/protobuf/optimized/message_field.ll +++ b/bench/protobuf/optimized/message_field.ll @@ -3631,9 +3631,8 @@ while.body: ; preds = %if.end if.end.i.i: ; preds = %while.body, %while.body.preheader %sub.ptr.div.i20.lcssa = phi i64 [ %sub.ptr.div.i15, %while.body.preheader ], [ %sub.ptr.div.i, %while.body ] - %sub.ptr.sub.i19.lcssa = phi i64 [ %sub.ptr.sub.i14, %while.body.preheader ], [ %sub.ptr.sub.i, %while.body ] - %storemerge17.lcssa = phi ptr [ %__last.coerce, %while.body.preheader ], [ %call14, %while.body ] - %sub.i.i = add nsw i64 %sub.ptr.div.i20.lcssa, -2 + %sub.ptr.sub.i19.lcssa = phi ptr [ %__last.coerce, %while.body.preheader ], [ %call14, %while.body ] + %storemerge17.lcssa = add nsw i64 %sub.ptr.div.i18.lcssa, -2 %div1617.i.i = lshr i64 %sub.i.i, 1 br label %while.body.i.i7 @@ -3646,12 +3645,8 @@ while.body.i.i7: ; preds = %while.body.i.i7, %i %dec.i.i = add nsw i64 %__parent.0.i.i, -1 br i1 %cmp8.i.i, label %_ZSt13__heap_selectIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf10DescriptorESt6vectorIS6_SaIS6_EEEENS0_5__ops15_Iter_comp_iterIZNS3_8compiler11SCCAnalyzerINSE_3cpp18MessageSCCAnalyzer13DepsGeneratorEE3DFSES6_EUlS6_S6_E_EEEvT_SM_SM_T0_.exit, label %while.body.i.i7, !llvm.loop !70 -_ZSt13__heap_selectIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf10DescriptorESt6vectorIS6_SaIS6_EEEENS0_5__ops15_Iter_comp_iterIZNS3_8compiler11SCCAnalyzerINSE_3cpp18MessageSCCAnalyzer13DepsGeneratorEE3DFSES6_EUlS6_S6_E_EEEvT_SM_SM_T0_.exit: ; preds = %while.body.i.i7 - %cmp4.i.i = icmp sgt i64 %sub.ptr.sub.i19.lcssa, 8 - br i1 %cmp4.i.i, label %while.body.i.i, label %while.end - -while.body.i.i: ; preds = %_ZSt13__heap_selectIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf10DescriptorESt6vectorIS6_SaIS6_EEEENS0_5__ops15_Iter_comp_iterIZNS3_8compiler11SCCAnalyzerINSE_3cpp18MessageSCCAnalyzer13DepsGeneratorEE3DFSES6_EUlS6_S6_E_EEEvT_SM_SM_T0_.exit, %while.body.i.i - %__last.sroa.0.05.i.i = phi ptr [ %incdec.ptr.i.i.i, %while.body.i.i ], [ %storemerge17.lcssa, %_ZSt13__heap_selectIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf10DescriptorESt6vectorIS6_SaIS6_EEEENS0_5__ops15_Iter_comp_iterIZNS3_8compiler11SCCAnalyzerINSE_3cpp18MessageSCCAnalyzer13DepsGeneratorEE3DFSES6_EUlS6_S6_E_EEEvT_SM_SM_T0_.exit ] +_ZSt13__heap_selectIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf10DescriptorESt6vectorIS6_SaIS6_EEEENS0_5__ops15_Iter_comp_iterIZNS3_8compiler11SCCAnalyzerINSE_3cpp18MessageSCCAnalyzer13DepsGeneratorEE3DFSES6_EUlS6_S6_E_EEEvT_SM_SM_T0_.exit: ; preds = %while.body.i.i7, %while.body.i.i + %cmp4.i.i = phi ptr [ %incdec.ptr.i.i.i, %while.body.i.i ], [ %sub.ptr.sub.i19.lcssa, %while.body.i.i7 ] %incdec.ptr.i.i.i = getelementptr inbounds i8, ptr %__last.sroa.0.05.i.i, i64 -8 %1 = load ptr, ptr %incdec.ptr.i.i.i, align 8 %2 = load ptr, ptr %__first.coerce, align 8 @@ -3675,7 +3670,7 @@ if.end: ; preds = %while.body.preheade %cmp = icmp sgt i64 %sub.ptr.div.i, 16 br i1 %cmp, label %while.body, label %while.end, !llvm.loop !69 -while.end: ; preds = %if.end, %while.body.i.i, %entry, %_ZSt13__heap_selectIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf10DescriptorESt6vectorIS6_SaIS6_EEEENS0_5__ops15_Iter_comp_iterIZNS3_8compiler11SCCAnalyzerINSE_3cpp18MessageSCCAnalyzer13DepsGeneratorEE3DFSES6_EUlS6_S6_E_EEEvT_SM_SM_T0_.exit +while.end: ; preds = %if.end, %_ZSt13__heap_selectIN9__gnu_cxx17__normal_iteratorIPPKN6google8protobuf10DescriptorESt6vectorIS6_SaIS6_EEEENS0_5__ops15_Iter_comp_iterIZNS3_8compiler11SCCAnalyzerINSE_3cpp18MessageSCCAnalyzer13DepsGeneratorEE3DFSES6_EUlS6_S6_E_EEEvT_SM_SM_T0_.exit, %entry ret void } diff --git a/bench/protobuf/optimized/padding_optimizer.ll b/bench/protobuf/optimized/padding_optimizer.ll index 9d789ab2483..62407b2e9ac 100644 --- a/bench/protobuf/optimized/padding_optimizer.ll +++ b/bench/protobuf/optimized/padding_optimizer.ll @@ -1932,7 +1932,7 @@ if.end22.i.thread: ; preds = %if.end4.i.i.i, %if. tail call fastcc void @_ZSt21__inplace_stable_sortIN9__gnu_cxx17__normal_iteratorIPN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESt6vectorIS7_SaIS7_EEEENS0_5__ops15_Iter_less_iterEEvT_SF_T0_(ptr %__first.coerce, ptr %__last.coerce) br label %_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESt6vectorIS7_SaIS7_EEEES7_ED2Ev.exit.i -if.end22.i: ; preds = %if.then.i.i, %for.end.loopexit.i.i.i.i +if.end22.i: ; preds = %for.end.loopexit.i.i.i.i, %if.then.i.i %8 = phi double [ %0, %if.then.i.i ], [ %.pre.i.i, %for.end.loopexit.i.i.i.i ] %__prev.0.lcssa.i.i.i.i = phi ptr [ %call.i.i.i, %if.then.i.i ], [ %incdec.ptr4.i.i.i.i, %for.end.loopexit.i.i.i.i ] store double %8, ptr %__first.coerce, align 8 @@ -1948,10 +1948,9 @@ if.end22.i: ; preds = %if.then.i.i, %for.e tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %fields_3.i.i.i.i.i, i8 0, i64 24, i1 false) tail call fastcc void @_ZSt22__stable_sort_adaptiveIN9__gnu_cxx17__normal_iteratorIPN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESt6vectorIS7_SaIS7_EEEES8_lNS0_5__ops15_Iter_less_iterEEvT_SF_T0_T1_T2_(ptr nonnull %__first.coerce, ptr %__last.coerce, ptr noundef nonnull %call.i.i.i, i64 noundef %storemerge27.i.i.i) %add.ptr.i7.i = getelementptr inbounds nuw %"class.google::protobuf::compiler::cpp::(anonymous namespace)::FieldGroup", ptr %call.i.i.i, i64 %storemerge27.i.i.i - %cmp.not3.i.i.i.i = icmp eq i64 %storemerge27.i.i.in.in.i, 0 - br i1 %cmp.not3.i.i.i.i, label %_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESt6vectorIS7_SaIS7_EEEES7_ED2Ev.exit.i, label %for.body.i.i.i8.i + br label %for.body.i.i.i8.i -for.body.i.i.i8.i: ; preds = %if.end22.i, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i +for.body.i.i.i8.i: ; preds = %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i, %if.end22.i %__first.addr.04.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i ], [ %call.i.i.i, %if.end22.i ] %12 = getelementptr i8, ptr %__first.addr.04.i.i.i.i, i64 8 %__first.addr.0.val.i.i.i.i = load ptr, ptr %12, align 8 @@ -1967,8 +1966,8 @@ _ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exi %cmp.not.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i, %add.ptr.i7.i br i1 %cmp.not.i.i.i.i, label %_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESt6vectorIS7_SaIS7_EEEES7_ED2Ev.exit.i, label %for.body.i.i.i8.i, !llvm.loop !13 -_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESt6vectorIS7_SaIS7_EEEES7_ED2Ev.exit.i: ; preds = %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i, %if.end22.i.thread, %if.end22.i - %__buf.val323.i5 = phi ptr [ null, %if.end22.i.thread ], [ %call.i.i.i, %if.end22.i ], [ %call.i.i.i, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i ] +_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESt6vectorIS7_SaIS7_EEEES7_ED2Ev.exit.i: ; preds = %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i, %if.end22.i.thread + %__buf.val323.i5 = phi ptr [ null, %if.end22.thread.i ], [ %call.i.i.i, %_ZSt8_DestroyIN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupEEvPT_.exit.i.i.i.i ] tail call void @_ZdlPv(ptr noundef %__buf.val323.i5) #29 br label %_ZSt13__stable_sortIN9__gnu_cxx17__normal_iteratorIPN6google8protobuf8compiler3cpp12_GLOBAL__N_110FieldGroupESt6vectorIS7_SaIS7_EEEENS0_5__ops15_Iter_less_iterEEvT_SF_T0_.exit diff --git a/bench/qemu/optimized/fdt.ll b/bench/qemu/optimized/fdt.ll index dfe7676e992..d0fac4b7a03 100644 --- a/bench/qemu/optimized/fdt.ll +++ b/bench/qemu/optimized/fdt.ll @@ -743,7 +743,7 @@ fdt_check_node_offset_.exit: ; preds = %9 %16 = call i32 @fdt_next_tag(ptr noundef %0, i32 noundef %15, ptr noundef nonnull %5) switch i32 %16, label %.split.us [ i32 9, label %.split25.us - i32 1, label %.split27.us + i32 1, label %.thread ], !llvm.loop !6 .split: ; preds = %13, %.backedge @@ -759,14 +759,10 @@ fdt_check_node_offset_.exit: ; preds = %9 %.pre = load i32, ptr %5, align 4 br label %.split, !llvm.loop !6 -.split27.us: ; preds = %.split, %.split.us - %.us-phi = phi i32 [ %15, %.split.us ], [ %17, %.split ] - br i1 %.not18, label %.thread, label %19 - -19: ; preds = %.split27.us - %20 = load i32, ptr %2, align 4 - %21 = add i32 %20, 1 - store i32 %21, ptr %2, align 4 +.split27.us: ; preds = %.split + %.us-phi = load i32, ptr %2, align 4 + %20 = add i32 %19, 1 + store i32 %20, ptr %2, align 4 br label %.thread 22: ; preds = %.split @@ -792,8 +788,8 @@ fdt_check_node_offset_.exit: ; preds = %9 %spec.select = select i1 %or.cond, i32 %28, i32 -1 br label %.thread -.thread: ; preds = %.split27.us, %19, %fdt_check_node_offset_.exit.thread, %30, %.split25.us, %fdt_check_node_offset_.exit, %26 - %.0 = phi i32 [ %27, %26 ], [ %11, %fdt_check_node_offset_.exit ], [ -1, %.split25.us ], [ %spec.select, %30 ], [ -4, %fdt_check_node_offset_.exit.thread ], [ %.us-phi, %19 ], [ %.us-phi, %.split27.us ] +.thread: ; preds = %.split.us, %.split27.us, %fdt_check_node_offset_.exit.thread, %30, %.split25.us, %fdt_check_node_offset_.exit, %26 + %.0 = phi i32 [ %27, %26 ], [ %11, %fdt_check_node_offset_.exit ], [ -1, %.split25.us ], [ %spec.select, %30 ], [ -4, %fdt_check_node_offset_.exit.thread ], [ %17, %.split27.us ], [ %15, %.split.us ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #10 ret i32 %.0 } diff --git a/bench/qemu/optimized/tcg.ll b/bench/qemu/optimized/tcg.ll index b5266ff678b..fb9299d6ff1 100644 --- a/bench/qemu/optimized/tcg.ll +++ b/bench/qemu/optimized/tcg.ll @@ -6088,7 +6088,7 @@ switch.lookup: ; preds = %197 %.13 = phi i32 [ %.9322, %197 ], [ %223, %switch.lookup ], [ %210, %198 ], [ %.12, %.thread366 ] %.4310 = phi i32 [ %.3309, %197 ], [ %225, %switch.lookup ], [ %212, %198 ], [ %186, %.thread366 ] %.6 = phi i32 [ %.5, %197 ], [ %224, %switch.lookup ], [ %211, %198 ], [ 1, %.thread366 ] - %227 = icmp slt i32 %.6, %85 + %227 = icmp samesign ult i32 %.6, %85 br i1 %227, label %.lr.ph405, label %.loopexit374 .lr.ph405: ; preds = %226 @@ -6553,7 +6553,7 @@ define dso_local void @tcg_remove_ops_after(ptr noundef readnone captures(addres .lr.ph: ; preds = %1, %.lr.ph %9 = phi ptr [ %15, %.lr.ph ], [ %8, %1 ] - tail call void @tcg_op_remove(ptr noundef %3, ptr noundef %9) + tail call void @tcg_op_remove(ptr noundef nonnull %3, ptr noundef %9) %10 = load ptr, ptr %2, align 8 %11 = getelementptr inbounds nuw i8, ptr %10, i64 29352 %12 = load ptr, ptr %11, align 8 @@ -8740,11 +8740,7 @@ set_temp_val_reg.exit.i188: ; preds = %851, %843 unreachable .loopexit.i: ; preds = %.lr.ph124.i, %set_temp_val_reg.exit.i188 - %.not132.i = icmp ult i32 %108, 16777216 - br i1 %.not132.i, label %tcg_reg_alloc_mov.exit, label %.lr.ph128.i - -.lr.ph128.i: ; preds = %.loopexit.i - %wide.trip.count152.i = zext nneg i32 %556 to i64 + %.not132.i = phi i64 [ %wide.trip.count147.i, %set_temp_val_reg.exit.i188 ], [ %wide.trip.count.i186, %.lr.ph124.i ] br label %880 880: ; preds = %temp_dead.exit113.i, %.lr.ph128.i @@ -8819,7 +8815,7 @@ set_temp_val_nonreg.exit.i.i111.i: ; preds = %905, %902 temp_dead.exit113.i: ; preds = %set_temp_val_nonreg.exit.i.i111.i, %894, %891, %887 %indvars.iv.next150.i = add nuw nsw i64 %indvars.iv149.i, 1 - %exitcond153.not.i = icmp eq i64 %indvars.iv.next150.i, %wide.trip.count152.i + %exitcond153.not.i = icmp eq i64 %indvars.iv.next150.i, %wide.trip.count152.i.pre-phi br i1 %exitcond153.not.i, label %tcg_reg_alloc_mov.exit, label %880, !llvm.loop !48 913: ; preds = %107 @@ -8920,8 +8916,8 @@ tcg_out_goto_tb.exit: ; preds = %919, %tcg_out_nopn. tail call fastcc void @tcg_reg_alloc_op(ptr noundef nonnull %0, ptr noundef %.0119284) br label %tcg_reg_alloc_mov.exit -tcg_reg_alloc_mov.exit: ; preds = %temp_dead.exit113.i, %489, %485, %.loopexit.i, %.preheader.i, %.preheader114.i, %set_temp_val_nonreg.exit.i.i169, %497, %set_temp_val_nonreg.exit.i.i91.i, %455, %453, %set_temp_val_nonreg.exit.i.i.i.i166, %349, %347, %344, %296, %set_temp_val_reg.exit.i, %set_temp_val_nonreg.exit.i.i89.i, %temp_dead.exit87.i, %set_temp_val_nonreg.exit.i.i.i.i, %167, %165, %162, %957, %tcg_out_goto_tb.exit, %tcg_out_exit_tb.exit, %tcg_reg_alloc_bb_end.exit - %.1118 = phi i32 [ %.0117282, %957 ], [ %.0117282, %tcg_out_goto_tb.exit ], [ %.0117282, %tcg_out_exit_tb.exit ], [ %.0117282, %tcg_reg_alloc_bb_end.exit ], [ %.0117282, %162 ], [ %.0117282, %165 ], [ %.0117282, %167 ], [ %.0117282, %set_temp_val_nonreg.exit.i.i.i.i ], [ %.0117282, %temp_dead.exit87.i ], [ %.0117282, %set_temp_val_nonreg.exit.i.i89.i ], [ %.0117282, %set_temp_val_reg.exit.i ], [ %.0117282, %296 ], [ %.0117282, %344 ], [ %.0117282, %347 ], [ %.0117282, %349 ], [ %.0117282, %set_temp_val_nonreg.exit.i.i.i.i166 ], [ %.0117282, %453 ], [ %.0117282, %455 ], [ %.0117282, %set_temp_val_nonreg.exit.i.i91.i ], [ %.0117282, %497 ], [ %.0117282, %set_temp_val_nonreg.exit.i.i169 ], [ %.0117282, %.preheader114.i ], [ %.0117282, %.preheader.i ], [ %.0117282, %.loopexit.i ], [ %486, %485 ], [ %486, %489 ], [ %.0117282, %temp_dead.exit113.i ] +tcg_reg_alloc_mov.exit: ; preds = %temp_dead.exit113.i, %489, %485, %.preheader.i, %.preheader114.i, %set_temp_val_nonreg.exit.i.i169, %497, %set_temp_val_nonreg.exit.i.i91.i, %455, %453, %set_temp_val_nonreg.exit.i.i.i.i166, %349, %347, %344, %296, %set_temp_val_reg.exit.i, %set_temp_val_nonreg.exit.i.i89.i, %temp_dead.exit87.i, %set_temp_val_nonreg.exit.i.i.i.i, %167, %165, %162, %957, %tcg_out_goto_tb.exit, %tcg_out_exit_tb.exit, %tcg_reg_alloc_bb_end.exit + %.1118 = phi i32 [ %.0117282, %957 ], [ %.0117282, %tcg_out_goto_tb.exit ], [ %.0117282, %tcg_out_exit_tb.exit ], [ %.0117282, %tcg_reg_alloc_bb_end.exit ], [ %.0117282, %162 ], [ %.0117282, %165 ], [ %.0117282, %167 ], [ %.0117282, %set_temp_val_nonreg.exit.i.i.i.i ], [ %.0117282, %temp_dead.exit87.i ], [ %.0117282, %set_temp_val_nonreg.exit.i.i89.i ], [ %.0117282, %set_temp_val_reg.exit.i ], [ %.0117282, %296 ], [ %.0117282, %344 ], [ %.0117282, %347 ], [ %.0117282, %349 ], [ %.0117282, %set_temp_val_nonreg.exit.i.i.i.i166 ], [ %.0117282, %453 ], [ %.0117282, %455 ], [ %.0117282, %set_temp_val_nonreg.exit.i.i91.i ], [ %.0117282, %497 ], [ %.0117282, %set_temp_val_nonreg.exit.i.i169 ], [ %.0117282, %.preheader114.i ], [ %.0117282, %.preheader.i ], [ %486, %485 ], [ %486, %489 ], [ %.0117282, %temp_dead.exit113.i ] %962 = load ptr, ptr %71, align 8 %963 = load ptr, ptr %104, align 8 %964 = icmp ugt ptr %962, %963 @@ -15356,7 +15352,7 @@ define internal fastcc void @sort_constraints(ptr noundef captures(none) %0, i32 .lr.ph51.preheader: ; preds = %._crit_edge %13 = add nsw i32 %2, -1 %14 = zext nneg i32 %1 to i64 - %wide.trip.count63 = zext i32 %13 to i64 + %wide.trip.count63 = zext nneg i32 %13 to i64 %invariant.gep65 = getelementptr inbounds nuw %struct.TCGArgConstraint, ptr %0, i64 %14 %wide.trip.count58 = zext nneg i32 %2 to i64 %invariant.gep = getelementptr inbounds nuw %struct.TCGArgConstraint, ptr %0, i64 %14 diff --git a/bench/quantlib/optimized/fdmlinearoplayout.ll b/bench/quantlib/optimized/fdmlinearoplayout.ll index 0aa24d395f2..24729b01116 100644 --- a/bench/quantlib/optimized/fdmlinearoplayout.ll +++ b/bench/quantlib/optimized/fdmlinearoplayout.ll @@ -216,8 +216,7 @@ if.then.i.i.i.i.i.i.i.i.i31: ; preds = %_ZNSt16allocator_tr invoke.cont: ; preds = %if.end13, %if.then.i.i.i.i.i.i.i.i.i31 %cond.i.i.i.i23139 = phi ptr [ %call5.i.i.i.i2.i6.i2134, %if.then.i.i.i.i.i.i.i.i.i31 ], [ null, %if.end13 ] - %add.ptr.i.i.i25141 = getelementptr inbounds i8, ptr %cond.i.i.i.i23139, i64 %sub.ptr.sub.i.i16 - br i1 %cmp.not.i.i.i.i, label %_ZNSt6vectorImSaImEED2Ev.exit73, label %_ZNSt16allocator_traitsISaImEE8allocateERS0_m.exit.i.i.i.i43 + br i1 %cmp.not.i.i.i.i, label %_ZNSt6vectorImSaImEED2Ev.exit81, label %_ZNSt16allocator_traitsISaImEE8allocateERS0_m.exit.i.i.i.i43 _ZNSt16allocator_traitsISaImEE8allocateERS0_m.exit.i.i.i.i43: ; preds = %invoke.cont %call5.i.i.i.i2.i6.i4458 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %sub.ptr.sub.i.i) #8 @@ -246,6 +245,7 @@ _ZNSt6vectorImSaImEED2Ev.exit73: ; preds = %for.body.i.i, %invo %cond.i.i.i.i46145150 = phi ptr [ null, %invoke.cont ], [ %call5.i.i.i.i2.i6.i4458, %for.body.i.i ] %__init.addr.0.lcssa.i.i = phi i64 [ 0, %invoke.cont ], [ %add.i.i, %for.body.i.i ] %add.ptr.i.i.i48146149 = getelementptr inbounds i8, ptr %cond.i.i.i.i46145150, i64 %sub.ptr.sub.i.i + %add.ptr.i.i.i25141 = getelementptr inbounds i8, ptr %cond.i.i.i.i23139, i64 %sub.ptr.sub.i.i16 store i64 %__init.addr.0.lcssa.i.i, ptr %agg.result, align 8, !tbaa !3 %dim_.i = getelementptr inbounds nuw i8, ptr %agg.result, i64 8 store ptr %cond.i.i.i.i23139, ptr %dim_.i, align 8, !tbaa !13 @@ -259,14 +259,7 @@ _ZNSt6vectorImSaImEED2Ev.exit73: ; preds = %for.body.i.i, %invo store ptr %add.ptr.i.i.i48146149, ptr %_M_finish.i.i.i.i1.i, align 8, !tbaa !15 %_M_end_of_storage.i.i.i.i3.i = getelementptr inbounds nuw i8, ptr %agg.result, i64 48 store ptr %add.ptr.i.i.i48146149, ptr %_M_end_of_storage.i.i.i.i3.i, align 8, !tbaa !20 - %tobool.not.i.i.i75 = icmp eq ptr %cond.i.i.i.i131, null - br i1 %tobool.not.i.i.i75, label %_ZNSt6vectorImSaImEED2Ev.exit81, label %if.then.i.i.i76 - -if.then.i.i.i76: ; preds = %_ZNSt6vectorImSaImEED2Ev.exit73 tail call void @_ZdlPvm(ptr noundef nonnull %cond.i.i.i.i131, i64 noundef %sub.ptr.sub.i.i) #9 - br label %_ZNSt6vectorImSaImEED2Ev.exit81 - -_ZNSt6vectorImSaImEED2Ev.exit81: ; preds = %_ZNSt6vectorImSaImEED2Ev.exit73, %if.then.i.i.i76 ret void lpad: ; preds = %_ZNSt16allocator_traitsISaImEE8allocateERS0_m.exit.i.i.i.i20, %if.then3.i.i.i.i.i.i33 diff --git a/bench/quantlib/optimized/liborforwardmodel.ll b/bench/quantlib/optimized/liborforwardmodel.ll index 4d47df344e6..e0329033548 100644 --- a/bench/quantlib/optimized/liborforwardmodel.ll +++ b/bench/quantlib/optimized/liborforwardmodel.ll @@ -4722,14 +4722,7 @@ _ZN8QuantLib5ArrayD2Ev.exit142: ; preds = %lpad108, %_ZNKSt14d br label %ehcleanup198 for.cond.cleanup136: ; preds = %_ZN8QuantLib5ArrayD2Ev.exit164 - %cmp.not.i.i143 = icmp eq ptr %cond.i125, null - br i1 %cmp.not.i.i143, label %_ZN8QuantLib6MatrixD2Ev.exit, label %_ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i144 - -_ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i144: ; preds = %for.cond.cleanup136 call void @_ZdaPv(ptr noundef nonnull %cond.i125) #29 - br label %_ZN8QuantLib6MatrixD2Ev.exit - -_ZN8QuantLib6MatrixD2Ev.exit: ; preds = %for.cond.cleanup136, %_ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i144 %exitcond323.not = icmp eq i64 %add83, %div56 br i1 %exitcond323.not, label %for.cond.cleanup75, label %for.body76, !llvm.loop !114 @@ -4859,14 +4852,7 @@ invoke.cont186: ; preds = %for.body.i %80 = getelementptr double, ptr %add.ptr.i.i161, i64 %l.0310 %arrayidx189 = getelementptr i8, ptr %80, i64 -8 store double %div185, ptr %arrayidx189, align 8, !tbaa !52 - %cmp.not.i.i162 = icmp eq ptr %60, null - br i1 %cmp.not.i.i162, label %_ZN8QuantLib5ArrayD2Ev.exit164, label %_ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i163 - -_ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i163: ; preds = %invoke.cont186 call void @_ZdaPv(ptr noundef nonnull %60) #29 - br label %_ZN8QuantLib5ArrayD2Ev.exit164 - -_ZN8QuantLib5ArrayD2Ev.exit164: ; preds = %invoke.cont186, %_ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i163 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %w) #25 %inc195 = add nuw i64 %l.0310, 1 %exitcond322.not = icmp eq i64 %l.0310, %div56 diff --git a/bench/re2/optimized/dfa.ll b/bench/re2/optimized/dfa.ll index 9f080306a88..9de9cd47507 100644 --- a/bench/re2/optimized/dfa.ll +++ b/bench/re2/optimized/dfa.ll @@ -11921,21 +11921,24 @@ land.lhs.true.i.i.i.i: ; preds = %while.end.i.i.i.i br i1 %cmp8.i.i.i.i, label %if.then9.i.i.i.i, label %if.end16.i.i.i.i if.then9.i.i.i.i: ; preds = %land.lhs.true.i.i.i.i - %add10.i.i.i.i = shl nsw i64 %__secondChild.0.lcssa.i.i.i.i, 1 + %add10.i.i.i.i = shl nuw nsw i64 %__secondChild.0.lcssa.i.i.i.i, 1 %sub12.i.i.i.i = or disjoint i64 %add10.i.i.i.i, 1 - %add.ptr13.i.i.i.i = getelementptr inbounds i32, ptr %__first, i64 %sub12.i.i.i.i + %add.ptr13.i.i.i.i = getelementptr inbounds nuw i32, ptr %__first, i64 %sub12.i.i.i.i %6 = load i32, ptr %add.ptr13.i.i.i.i, align 4 %add.ptr14.i.i.i.i = getelementptr inbounds i32, ptr %__first, i64 %__secondChild.0.lcssa.i.i.i.i store i32 %6, ptr %add.ptr14.i.i.i.i, align 4 - br label %if.end16.i.i.i.i + br label %land.rhs.i.i.i.i.i -if.end16.i.i.i.i: ; preds = %if.then9.i.i.i.i, %land.lhs.true.i.i.i.i, %while.end.i.i.i.i - %__holeIndex.addr.1.i.i.i.i = phi i64 [ %sub12.i.i.i.i, %if.then9.i.i.i.i ], [ %__secondChild.0.lcssa.i.i.i.i, %land.lhs.true.i.i.i.i ], [ %__secondChild.0.lcssa.i.i.i.i, %while.end.i.i.i.i ] - %cmp13.i.i.i.i.i = icmp sgt i64 %__holeIndex.addr.1.i.i.i.i, 0 - br i1 %cmp13.i.i.i.i.i, label %land.rhs.i.i.i.i.i, label %_ZSt10__pop_heapIPiN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S4_S4_RT0_.exit.i.i +if.end16.i.i.i.i: ; preds = %land.lhs.true.i.i.i.i, %while.end.i.i.i.i + %__holeIndex.addr.1.i.i.i.i = icmp eq i64 %__secondChild.0.lcssa.i.i.i.i, 0 + br i1 %__holeIndex.addr.1.i.i.i.i, label %_ZSt10__pop_heapIPiN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S4_S4_RT0_.exit.i.i, label %land.rhs.i.i.i.i.i -land.rhs.i.i.i.i.i: ; preds = %if.end16.i.i.i.i, %while.body.i.i.i.i.i - %__holeIndex.addr.014.i.i.i.i.i = phi i64 [ %__parent.015.i.i45.i.i.i, %while.body.i.i.i.i.i ], [ %__holeIndex.addr.1.i.i.i.i, %if.end16.i.i.i.i ] +land.rhs.i.i.i.i.i: ; preds = %if.end16.i.i.i.i, %if.then9.i.i.i.i + %__holeIndex.addr.014.i.i.i.i.i = phi i64 [ %__secondChild.0.lcssa.i.i.i.i, %if.end16.i.i.i.i ], [ %sub12.i.i.i.i, %if.then9.i.i.i.i ] + br label %land.rhs.i.i.i.i.i + +land.rhs.i.i.i.i.i: ; preds = %land.rhs.i.i.i.i.i.preheader, %while.body.i.i.i.i.i + %__holeIndex.addr.014.i.i.i.i.i = phi i64 [ %__parent.015.i.i45.i.i.i, %while.body.i.i.i.i.i ], [ %__holeIndex.addr.014.i.i.i.i.i.ph, %land.rhs.i.i.i.i.i.preheader ] %__parent.015.in.i.i.i.i.i = add nsw i64 %__holeIndex.addr.014.i.i.i.i.i, -1 %__parent.015.i.i45.i.i.i = lshr i64 %__parent.015.in.i.i.i.i.i, 1 %add.ptr.i.i.i.i.i = getelementptr inbounds nuw i32, ptr %__first, i64 %__parent.015.i.i45.i.i.i @@ -11944,13 +11947,13 @@ land.rhs.i.i.i.i.i: ; preds = %if.end16.i.i.i.i, % br i1 %cmp.i.i.i.i.i.i, label %while.body.i.i.i.i.i, label %_ZSt10__pop_heapIPiN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S4_S4_RT0_.exit.i.i while.body.i.i.i.i.i: ; preds = %land.rhs.i.i.i.i.i - %add.ptr2.i.i.i.i.i = getelementptr inbounds nuw i32, ptr %__first, i64 %__holeIndex.addr.014.i.i.i.i.i + %add.ptr2.i.i.i.i.i = getelementptr inbounds i32, ptr %__first, i64 %__holeIndex.addr.014.i.i.i.i.i store i32 %7, ptr %add.ptr2.i.i.i.i.i, align 4 %cmp.i23.i.not.i.i.i = icmp ult i64 %__parent.015.in.i.i.i.i.i, 2 br i1 %cmp.i23.i.not.i.i.i, label %_ZSt10__pop_heapIPiN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S4_S4_RT0_.exit.i.i, label %land.rhs.i.i.i.i.i, !llvm.loop !103 _ZSt10__pop_heapIPiN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S4_S4_RT0_.exit.i.i: ; preds = %while.body.i.i.i.i.i, %land.rhs.i.i.i.i.i, %if.end16.i.i.i.i - %__holeIndex.addr.0.lcssa.i.i.i.i.i = phi i64 [ %__holeIndex.addr.1.i.i.i.i, %if.end16.i.i.i.i ], [ %__holeIndex.addr.014.i.i.i.i.i, %land.rhs.i.i.i.i.i ], [ 0, %while.body.i.i.i.i.i ] + %__holeIndex.addr.0.lcssa.i.i.i.i.i = phi i64 [ 0, %if.end16.i.i.i.i ], [ %__holeIndex.addr.014.i.i.i.i.i, %land.rhs.i.i.i.i.i ], [ 0, %while.body.i.i.i.i.i ] %add.ptr5.i.i.i.i.i = getelementptr inbounds i32, ptr %__first, i64 %__holeIndex.addr.0.lcssa.i.i.i.i.i store i32 %0, ptr %add.ptr5.i.i.i.i.i, align 4 %cmp.i.i = icmp sgt i64 %sub.ptr.sub.i.i.i, 4 @@ -12102,23 +12105,20 @@ while.end.i: ; preds = %while.body.i, %if.e %__secondChild.0.lcssa.i = phi i64 [ %div11, %if.end.split ], [ %spec.select.i, %while.body.i ] %4 = and i64 %sub.ptr.sub, 4 %cmp5.i = icmp eq i64 %4, 0 - %div7.i = ashr exact i64 %sub, 1 - %cmp8.i = icmp eq i64 %__secondChild.0.lcssa.i, %div7.i - %or.cond = select i1 %cmp5.i, i1 %cmp8.i, i1 false + %div7.i = icmp eq i64 %__secondChild.0.lcssa.i, %div11 + %cmp8.i = and i1 %cmp5.i, %div7.i br i1 %or.cond, label %if.then9.i, label %if.end16.i if.then9.i: ; preds = %while.end.i - %add10.i = shl nsw i64 %__secondChild.0.lcssa.i, 1 - %sub12.i = or disjoint i64 %add10.i, 1 - %add.ptr13.i = getelementptr inbounds i32, ptr %__first, i64 %sub12.i + %add10.i = or disjoint i64 %sub, 1 + %sub12.i = getelementptr inbounds nuw i32, ptr %__first, i64 %add10.i %5 = load i32, ptr %add.ptr13.i, align 4 - %add.ptr14.i = getelementptr inbounds i32, ptr %__first, i64 %__secondChild.0.lcssa.i - store i32 %5, ptr %add.ptr14.i, align 4 + store i32 %5, ptr %add.ptr9, align 4 br label %if.end16.i if.end16.i: ; preds = %if.then9.i, %while.end.i %__holeIndex.addr.1.i = phi i64 [ %sub12.i, %if.then9.i ], [ %__secondChild.0.lcssa.i, %while.end.i ] - %cmp13.i.i = icmp sgt i64 %__holeIndex.addr.1.i, %div11 + %cmp13.i.i = icmp samesign ugt i64 %__holeIndex.addr.1.i, %div11 br i1 %cmp13.i.i, label %land.rhs.i.i, label %_ZSt13__adjust_heapIPiliN9__gnu_cxx5__ops15_Iter_less_iterEEvT_T0_S5_T1_T2_.exit land.rhs.i.i: ; preds = %if.end16.i, %while.body.i.i @@ -12144,12 +12144,13 @@ _ZSt13__adjust_heapIPiliN9__gnu_cxx5__ops15_Iter_less_iterEEvT_T0_S5_T1_T2_.exit br i1 %cmp558, label %return, label %if.end7.split.lr.ph if.end7.split.lr.ph: ; preds = %_ZSt13__adjust_heapIPiliN9__gnu_cxx5__ops15_Iter_less_iterEEvT_T0_S5_T1_T2_.exit + %div7.i35 = ashr exact i64 %sub, 1 br i1 %cmp5.i, label %if.end7.split.preheader, label %if.end7.split.us if.end7.split.preheader: ; preds = %if.end7.split.lr.ph %sub12.i39 = or disjoint i64 %sub, 1 %add.ptr13.i40 = getelementptr inbounds i32, ptr %__first, i64 %sub12.i39 - %add.ptr14.i41 = getelementptr inbounds i32, ptr %__first, i64 %div7.i + %add.ptr14.i41 = getelementptr inbounds i32, ptr %__first, i64 %div7.i35 br label %if.end7.split if.end7.split.us: ; preds = %if.end7.split.lr.ph, %_ZSt13__adjust_heapIPiliN9__gnu_cxx5__ops15_Iter_less_iterEEvT_T0_S5_T1_T2_.exit54.us @@ -12232,7 +12233,7 @@ while.body.i42: ; preds = %if.end7.split, %whi while.end.i15: ; preds = %while.body.i42, %if.end7.split %__secondChild.0.lcssa.i16 = phi i64 [ %dec, %if.end7.split ], [ %spec.select.i50, %while.body.i42 ] - %cmp8.i36 = icmp eq i64 %__secondChild.0.lcssa.i16, %div7.i + %cmp8.i36 = icmp eq i64 %__secondChild.0.lcssa.i16, %div7.i35 br i1 %cmp8.i36, label %if.then9.i37, label %if.end16.i19 if.then9.i37: ; preds = %while.end.i15 @@ -12774,7 +12775,7 @@ for.inc: ; preds = %for.body, %_ZN4absl br i1 %cmp.not, label %if.then14, label %for.body, !llvm.loop !112 if.then14: ; preds = %for.inc - tail call void @_ZdlPv(ptr noundef %0) #23 + tail call void @_ZdlPv(ptr noundef nonnull %0) #23 br label %if.end19 if.end19: ; preds = %_ZN4absl7debian218container_internal12raw_hash_setINS1_17FlatHashSetPolicyIPN3re23DFA5StateEEENS5_9StateHashENS5_10StateEqualESaIS7_EE16initialize_slotsEv.exit, %if.then14 @@ -13230,7 +13231,7 @@ for.inc: ; preds = %for.body, %_ZN4absl br i1 %cmp.not, label %if.then14, label %for.body, !llvm.loop !114 if.then14: ; preds = %for.inc - tail call void @_ZdlPv(ptr noundef %0) #23 + tail call void @_ZdlPv(ptr noundef nonnull %0) #23 br label %if.end19 if.end19: ; preds = %_ZN4absl7debian218container_internal12raw_hash_setINS1_17FlatHashMapPolicyIPN3re23DFA5StateEiEENS1_6HashEqIS7_vE4HashENSA_2EqESaISt4pairIKS7_iEEE16initialize_slotsEv.exit, %if.then14 diff --git a/bench/re2/optimized/prefilter_tree.ll b/bench/re2/optimized/prefilter_tree.ll index 2f282cb2b4f..6a2511045dc 100644 --- a/bench/re2/optimized/prefilter_tree.ll +++ b/bench/re2/optimized/prefilter_tree.ll @@ -5278,7 +5278,7 @@ for.inc: ; preds = %for.body, %_ZN4absl br i1 %cmp.not, label %if.then14, label %for.body, !llvm.loop !55 if.then14: ; preds = %for.inc - tail call void @_ZdlPv(ptr noundef %0) #24 + tail call void @_ZdlPv(ptr noundef nonnull %0) #24 br label %if.end19 if.end19: ; preds = %_ZN4absl7debian218container_internal12raw_hash_setINS1_17FlatHashSetPolicyIPN3re29PrefilterEEENS4_13PrefilterTree13PrefilterHashENS8_14PrefilterEqualESaIS6_EE16initialize_slotsEv.exit, %if.then14 @@ -5701,13 +5701,7 @@ if.then.i: ; preds = %while.body.i.i %add.ptr.i = getelementptr inbounds nuw i8, ptr %call.i.i, i64 %mul.i.i tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %call.i.i, ptr noundef nonnull align 8 dereferenceable(16) %__first.coerce, i64 16, i1 false) %cmp1.not12.i.i.i = icmp eq i64 %storemerge27.i.i, 1 - br i1 %cmp1.not12.i.i.i, label %_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt4pairImiESt6vectorIS3_SaIS3_EEEES3_EC2ES8_l.exit.thread25, label %for.body.i.i.preheader.i - -_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt4pairImiESt6vectorIS3_SaIS3_EEEES3_EC2ES8_l.exit.thread25: ; preds = %if.then.i - %0 = load i64, ptr %call.i.i, align 8 - store i64 %0, ptr %__first.coerce, align 8 - %second.i.i.i.i27 = getelementptr inbounds nuw i8, ptr %call.i.i, i64 8 - br label %if.else.sink.split + br i1 %cmp1.not12.i.i.i, label %_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt4pairImiESt6vectorIS3_SaIS3_EEEES3_EC2ES8_l.exit, label %for.body.i.i.preheader.i for.body.i.i.preheader.i: ; preds = %if.then.i %__cur.011.i.i.i = getelementptr inbounds nuw i8, ptr %call.i.i, i64 16 @@ -5722,33 +5716,30 @@ for.body.i.i.i: ; preds = %for.body.i.i.i, %fo %cmp1.not.i.i.i = icmp eq ptr %__cur.0.i.i.i, %add.ptr.i br i1 %cmp1.not.i.i.i, label %_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt4pairImiESt6vectorIS3_SaIS3_EEEES3_EC2ES8_l.exit, label %for.body.i.i.i, !llvm.loop !65 -_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt4pairImiESt6vectorIS3_SaIS3_EEEES3_EC2ES8_l.exit: ; preds = %for.body.i.i.i - %1 = load i64, ptr %incdec.ptr4.i.i.i, align 8 - store i64 %1, ptr %__first.coerce, align 8 - %second.i.i.i.i = getelementptr inbounds nuw i8, ptr %__prev.013.i.i.i, i64 24 - br label %if.else.sink.split +_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt4pairImiESt6vectorIS3_SaIS3_EEEES3_EC2ES8_l.exit: ; preds = %for.body.i.i.i, %if.then.i + %1 = phi ptr [ %call.i.i, %if.then.i ], [ %incdec.ptr4.i.i.i, %for.body.i.i.i ] + %0 = load i64, ptr %1, align 8 + store i64 %0, ptr %__first.coerce, align 8 + %second.i.i.i.i = getelementptr inbounds nuw i8, ptr %1, i64 8 + %1 = load i32, ptr %second.i.i.i.i, align 4 + %second3.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.coerce, i64 8 + store i32 %1, ptr %second3.i.i.i.i, align 8 + invoke void @_ZSt22__stable_sort_adaptiveIN9__gnu_cxx17__normal_iteratorIPSt4pairImiESt6vectorIS3_SaIS3_EEEES4_lNS0_5__ops15_Iter_less_iterEEvT_SB_T0_T1_T2_(ptr nonnull %__first.coerce, ptr %__last.coerce, ptr noundef nonnull %call.i.i, i64 noundef %storemerge27.i.i) + to label %if.end22 unwind label %lpad if.then5: ; preds = %if.end4.i.i, %if.end invoke void @_ZSt21__inplace_stable_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairImiESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_less_iterEEvT_SB_T0_(ptr %__first.coerce, ptr %__last.coerce) to label %if.end22 unwind label %lpad -lpad: ; preds = %if.else.sink.split, %if.then5 - %__buf.sroa.4.018 = phi ptr [ %call.i.i, %if.else.sink.split ], [ null, %if.then5 ] +lpad: ; preds = %for.end.i.i.i, %if.then5 + %__buf.sroa.4.018 = phi ptr [ %call.i.i, %for.end.i.i.i ], [ null, %if.then5 ] %2 = landingpad { ptr, i32 } cleanup tail call void @_ZdlPv(ptr noundef %__buf.sroa.4.018) #23 resume { ptr, i32 } %2 -if.else.sink.split: ; preds = %_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt4pairImiESt6vectorIS3_SaIS3_EEEES3_EC2ES8_l.exit.thread25, %_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt4pairImiESt6vectorIS3_SaIS3_EEEES3_EC2ES8_l.exit - %.sink.in = phi ptr [ %second.i.i.i.i, %_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt4pairImiESt6vectorIS3_SaIS3_EEEES3_EC2ES8_l.exit ], [ %second.i.i.i.i27, %_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt4pairImiESt6vectorIS3_SaIS3_EEEES3_EC2ES8_l.exit.thread25 ] - %.sink = load i32, ptr %.sink.in, align 4 - %second3.i.i.i.i = getelementptr inbounds nuw i8, ptr %__first.coerce, i64 8 - store i32 %.sink, ptr %second3.i.i.i.i, align 8 - invoke void @_ZSt22__stable_sort_adaptiveIN9__gnu_cxx17__normal_iteratorIPSt4pairImiESt6vectorIS3_SaIS3_EEEES4_lNS0_5__ops15_Iter_less_iterEEvT_SB_T0_T1_T2_(ptr nonnull %__first.coerce, ptr %__last.coerce, ptr noundef nonnull %call.i.i, i64 noundef %storemerge27.i.i) - to label %if.end22 unwind label %lpad - -if.end22: ; preds = %if.else.sink.split, %if.then5 - %__buf.sroa.4.016 = phi ptr [ %call.i.i, %if.else.sink.split ], [ null, %if.then5 ] +if.else.sink.split: ; preds = %_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt4pairImiESt6vectorIS3_SaIS3_EEEES3_EC2ES8_l.exit, %if.then5 + %.sink.in = phi ptr [ %call.i.i, %_ZNSt17_Temporary_bufferIN9__gnu_cxx17__normal_iteratorIPSt4pairImiESt6vectorIS3_SaIS3_EEEES3_EC2ES8_l.exit ], [ null, %if.then5 ] tail call void @_ZdlPv(ptr noundef %__buf.sroa.4.016) #23 br label %return @@ -7986,18 +7977,21 @@ land.lhs.true.i.i.i.i: ; preds = %while.end.i.i.i.i br i1 %cmp19.i.i.i.i, label %if.then20.i.i.i.i, label %if.end33.i.i.i.i if.then20.i.i.i.i: ; preds = %land.lhs.true.i.i.i.i - %add21.i.i.i.i = shl nsw i64 %__holeIndex.addr.0.lcssa.i.i.i.i, 1 + %add21.i.i.i.i = shl nuw nsw i64 %__holeIndex.addr.0.lcssa.i.i.i.i, 1 %sub24.i.i.i.i = or disjoint i64 %add21.i.i.i.i, 1 - %add.ptr.i20.i.i.i.i = getelementptr inbounds i32, ptr %__first.coerce, i64 %sub24.i.i.i.i + %add.ptr.i20.i.i.i.i = getelementptr inbounds nuw i32, ptr %__first.coerce, i64 %sub24.i.i.i.i %6 = load i32, ptr %add.ptr.i20.i.i.i.i, align 4 %add.ptr.i21.i.i.i.i = getelementptr inbounds i32, ptr %__first.coerce, i64 %__holeIndex.addr.0.lcssa.i.i.i.i store i32 %6, ptr %add.ptr.i21.i.i.i.i, align 4 br label %if.end33.i.i.i.i -if.end33.i.i.i.i: ; preds = %if.then20.i.i.i.i, %land.lhs.true.i.i.i.i, %while.end.i.i.i.i - %__holeIndex.addr.1.i.i.i.i = phi i64 [ %sub24.i.i.i.i, %if.then20.i.i.i.i ], [ %__holeIndex.addr.0.lcssa.i.i.i.i, %land.lhs.true.i.i.i.i ], [ %__holeIndex.addr.0.lcssa.i.i.i.i, %while.end.i.i.i.i ] - %cmp16.i.i.i.i.i = icmp sgt i64 %__holeIndex.addr.1.i.i.i.i, 0 - br i1 %cmp16.i.i.i.i.i, label %land.rhs.i.i.i.i.i, label %_ZSt10__pop_heapIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEENS0_5__ops15_Iter_less_iterEEvT_S9_S9_RT0_.exit.i.i +if.end33.i.i.i.i: ; preds = %land.lhs.true.i.i.i.i, %while.end.i.i.i.i + %cmp16.i.i.not.i.i.i = icmp eq i64 %__holeIndex.addr.0.lcssa.i.i.i.i, 0 + br i1 %cmp16.i.i.not.i.i.i, label %_ZSt10__pop_heapIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEENS0_5__ops15_Iter_less_iterEEvT_S9_S9_RT0_.exit.i.i, label %land.rhs.i.i.i.i.i.preheader + +if.end33.i.i.i.i: ; preds = %if.end33.i.i.i.i, %if.end33.i.thread.i.i.i + %__holeIndex.addr.1.i.i.i.i = phi i64 [ %__holeIndex.addr.0.lcssa.i.i.i.i, %if.end33.i.i.i.i ], [ %sub24.i.i.i.i, %if.then20.i.i.i.i ] + br label %land.rhs.i.i.i.i.i land.rhs.i.i.i.i.i: ; preds = %if.end33.i.i.i.i, %while.body.i.i.i.i.i %__holeIndex.addr.017.i.i.i.i.i = phi i64 [ %__parent.018.i.i34.i.i.i, %while.body.i.i.i.i.i ], [ %__holeIndex.addr.1.i.i.i.i, %if.end33.i.i.i.i ] @@ -8009,13 +8003,13 @@ land.rhs.i.i.i.i.i: ; preds = %if.end33.i.i.i.i, % br i1 %cmp.i.i.i.i.i.i, label %while.body.i.i.i.i.i, label %_ZSt10__pop_heapIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEENS0_5__ops15_Iter_less_iterEEvT_S9_S9_RT0_.exit.i.i while.body.i.i.i.i.i: ; preds = %land.rhs.i.i.i.i.i - %add.ptr.i8.i.i.i.i.i = getelementptr inbounds nuw i32, ptr %__first.coerce, i64 %__holeIndex.addr.017.i.i.i.i.i + %add.ptr.i8.i.i.i.i.i = getelementptr inbounds i32, ptr %__first.coerce, i64 %__holeIndex.addr.017.i.i.i.i.i store i32 %7, ptr %add.ptr.i8.i.i.i.i.i, align 4 %cmp.i22.i.not.i.i.i = icmp ult i64 %__parent.018.in.i.i.i.i.i, 2 br i1 %cmp.i22.i.not.i.i.i, label %_ZSt10__pop_heapIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEENS0_5__ops15_Iter_less_iterEEvT_S9_S9_RT0_.exit.i.i, label %land.rhs.i.i.i.i.i, !llvm.loop !88 _ZSt10__pop_heapIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEENS0_5__ops15_Iter_less_iterEEvT_S9_S9_RT0_.exit.i.i: ; preds = %while.body.i.i.i.i.i, %land.rhs.i.i.i.i.i, %if.end33.i.i.i.i - %__holeIndex.addr.0.lcssa.i.i.i.i.i = phi i64 [ %__holeIndex.addr.1.i.i.i.i, %if.end33.i.i.i.i ], [ %__holeIndex.addr.017.i.i.i.i.i, %land.rhs.i.i.i.i.i ], [ 0, %while.body.i.i.i.i.i ] + %__holeIndex.addr.0.lcssa.i.i.i.i.i = phi i64 [ 0, %if.end33.i.i.i.i ], [ %__holeIndex.addr.017.i.i.i.i.i, %land.rhs.i.i.i.i.i ], [ 0, %while.body.i.i.i.i.i ] %add.ptr.i9.i.i.i.i.i = getelementptr inbounds i32, ptr %__first.coerce, i64 %__holeIndex.addr.0.lcssa.i.i.i.i.i store i32 %0, ptr %add.ptr.i9.i.i.i.i.i, align 4 %cmp.i.i = icmp sgt i64 %sub.ptr.sub.i.i.i.i, 4 diff --git a/bench/redis/optimized/redis-benchmark.ll b/bench/redis/optimized/redis-benchmark.ll index 9254c0be981..b97c3581015 100644 --- a/bench/redis/optimized/redis-benchmark.ll +++ b/bench/redis/optimized/redis-benchmark.ll @@ -2221,7 +2221,7 @@ hi_sdslen.exit: ; preds = %.lr.ph438, %516, %5 br label %.preheader .preheader: ; preds = %.preheader.preheader, %.preheader - %535 = call i64 @redisFormatCommandArgv(ptr noundef nonnull %35, i32 noundef %.0123, ptr noundef %.0124, ptr noundef %508) #20 + %535 = call i64 @redisFormatCommandArgv(ptr noundef nonnull %35, i32 noundef %.0123, ptr noundef nonnull %.0124, ptr noundef %508) #20 %536 = trunc i64 %535 to i32 store i32 %536, ptr getelementptr inbounds nuw (i8, ptr @config, i64 164), align 4, !tbaa !61 %537 = load ptr, ptr %35, align 8, !tbaa !5 @@ -2233,7 +2233,7 @@ hi_sdslen.exit: ; preds = %.lr.ph438, %516, %5 br i1 %.not183, label %540, label %.preheader, !llvm.loop !120 540: ; preds = %.preheader - call void @hi_sdsfreesplitres(ptr noundef %.0124, i32 noundef %.0123) #20 + call void @hi_sdsfreesplitres(ptr noundef nonnull %.0124, i32 noundef %.0123) #20 call void @hi_sdsfree(ptr noundef %.0125.lcssa) #20 %541 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @config, i64 288), align 8, !tbaa !107 %.not184 = icmp eq ptr %541, null @@ -3150,7 +3150,7 @@ test_is_selected.exit348: ; preds = %.thread500, %813 br i1 %.not424, label %825, label %821 821: ; preds = %test_is_selected.exit348.thread, %test_is_selected.exit348 - %822 = call i32 (ptr, ptr, ...) @redisFormatCommand(ptr noundef nonnull %35, ptr noundef nonnull @.str.127, ptr noundef nonnull %.0129, ptr noundef %554) #20 + %822 = call i32 (ptr, ptr, ...) @redisFormatCommand(ptr noundef nonnull %35, ptr noundef nonnull @.str.127, ptr noundef nonnull %.0129, ptr noundef nonnull %554) #20 %823 = load ptr, ptr %35, align 8, !tbaa !5 call fastcc void @benchmark(ptr noundef nonnull @.str.128, ptr noundef %823, i32 noundef %822) %824 = load ptr, ptr %35, align 8, !tbaa !5 @@ -3896,7 +3896,7 @@ hi_sdslen.exit188: ; preds = %178, %189, %192, %1 %232 = load i64, ptr %221, align 8, !tbaa !158 %233 = trunc i64 %232 to i32 %234 = icmp sgt i32 %233, 0 - br i1 %234, label %.lr.ph195, label %.loopexit190.thread + br i1 %234, label %.lr.ph195, label %.loopexit190 .lr.ph195: ; preds = %226 %235 = load ptr, ptr %78, align 8, !tbaa !152 @@ -3973,7 +3973,7 @@ hi_sdslen.exit188: ; preds = %178, %189, %192, %1 %.not182 = icmp eq ptr %274, null br i1 %.not182, label %.loopexit190, label %.lr.ph197, !llvm.loop !162 -.loopexit190: ; preds = %246, %266, %.loopexit192 +.loopexit190: ; preds = %246, %266, %226, %.loopexit192 %275 = load i32, ptr getelementptr inbounds nuw (i8, ptr @config, i64 272), align 8, !tbaa !43 %.not183 = icmp eq i32 %275, 0 br i1 %.not183, label %.loopexit, label %278 @@ -3981,17 +3981,12 @@ hi_sdslen.exit188: ; preds = %178, %189, %192, %1 .loopexit190.thread218: ; preds = %252 %276 = load i32, ptr getelementptr inbounds nuw (i8, ptr @config, i64 272), align 8, !tbaa !43 %.not183219 = icmp eq i32 %276, 0 - br i1 %.not183219, label %.loopexit, label %.thread220 - -.loopexit190.thread: ; preds = %226 - %277 = load i32, ptr getelementptr inbounds nuw (i8, ptr @config, i64 272), align 8, !tbaa !43 - %.not183217 = icmp eq i32 %277, 0 br i1 %.not183217, label %.loopexit, label %.thread 278: ; preds = %.loopexit190 br i1 %.not180, label %.thread220, label %.thread -.thread: ; preds = %.loopexit190.thread, %278 +.thread: ; preds = %.thread %279 = getelementptr inbounds nuw i8, ptr %2, i64 48 %280 = load i64, ptr %279, align 8, !tbaa !163 store i64 %280, ptr %223, align 8, !tbaa !163 @@ -4082,7 +4077,7 @@ hi_sdslen.exit188: ; preds = %178, %189, %192, %1 %.not184 = icmp eq ptr %326, null br i1 %.not184, label %.loopexit, label %.lr.ph201, !llvm.loop !167 -.loopexit: ; preds = %298, %318, %.loopexit190.thread218, %.loopexit190.thread, %.thread, %.thread220, %.loopexit190 +.loopexit: ; preds = %298, %318, %.loopexit190.thread218, %.thread, %.thread220, %.loopexit190 %327 = icmp slt i32 %3, 0 br i1 %327, label %334, label %328 diff --git a/bench/redis/optimized/redis-cli.ll b/bench/redis/optimized/redis-cli.ll index 6b64a1706f7..847aba35e37 100644 --- a/bench/redis/optimized/redis-cli.ll +++ b/bench/redis/optimized/redis-cli.ll @@ -24637,7 +24637,7 @@ define internal fastcc ptr @clusterManagerMigrateKeysInReply(ptr noundef readonl %80 = add nuw i64 %.094108.us, 1 %81 = load i64, ptr %16, align 8, !tbaa !28 %82 = icmp ult i64 %80, %81 - br i1 %82, label %.lr.ph.split.us, label %._crit_edge, !llvm.loop !490 + br i1 %82, label %.lr.ph.split.us, label %._crit_edge.thread, !llvm.loop !490 .lr.ph.split: ; preds = %.lr.ph, %.lr.ph.split %.094108 = phi i64 [ %96, %.lr.ph.split ], [ 0, %.lr.ph ] @@ -24662,18 +24662,17 @@ define internal fastcc ptr @clusterManagerMigrateKeysInReply(ptr noundef readonl %98 = icmp ult i64 %96, %97 br i1 %98, label %.lr.ph.split, label %._crit_edge.thread, !llvm.loop !490 -._crit_edge: ; preds = %.lr.ph.split.us, %62 - %.lcssa = phi i64 [ 0, %62 ], [ %81, %.lr.ph.split.us ] +._crit_edge: ; preds = %62 %.not105 = icmp eq ptr %5, null br i1 %.not105, label %100, label %._crit_edge.thread ._crit_edge.thread: ; preds = %.lr.ph.split, %._crit_edge - %.lcssa120 = phi i64 [ %.lcssa, %._crit_edge ], [ %97, %.lr.ph.split ] + %.lcssa120 = phi i64 [ 0, %._crit_edge ], [ %97, %.lr.ph.split ] %99 = getelementptr inbounds nuw i8, ptr %5, i64 %.lcssa120 store i8 0, ptr %99, align 1, !tbaa !67 br label %100 -100: ; preds = %._crit_edge.thread, %._crit_edge +100: ; preds = %.lr.ph.split.us, %._crit_edge.thread, %._crit_edge call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #33 store ptr null, ptr %9, align 8, !tbaa !23 %101 = load ptr, ptr %0, align 8, !tbaa !82 diff --git a/bench/rocksdb/optimized/xxhash.ll b/bench/rocksdb/optimized/xxhash.ll index ae371d658ae..5e2bb3b3030 100644 --- a/bench/rocksdb/optimized/xxhash.ll +++ b/bench/rocksdb/optimized/xxhash.ll @@ -4565,10 +4565,6 @@ while.end: ; preds = %while.body %0 = extractvalue { i64, i64 } %call.i.i, 0 %1 = extractvalue { i64, i64 } %call.i.i, 1 %or19.i2.i = tail call noundef i64 @llvm.bswap.i64(i64 %0) - %cmp1337.not = icmp ult i64 %secretSize, 16 - br i1 %cmp1337.not, label %for.end, label %for.body.lr.ph - -for.body.lr.ph: ; preds = %while.end %or19.i.i = tail call noundef i64 @llvm.bswap.i64(i64 %1) %invariant.op = xor i64 %or19.i.i, %or19.i2.i br label %for.body @@ -4621,7 +4617,7 @@ for.body: ; preds = %for.body.lr.ph, %fo %exitcond.not = icmp eq i64 %inc, %div22 br i1 %exitcond.not, label %for.end, label %for.body, !llvm.loop !28 -for.end: ; preds = %for.body, %while.end +for.end: ; preds = %for.body %add.ptr17 = getelementptr inbounds i8, ptr %secretBuffer, i64 %secretSize %add.ptr18 = getelementptr inbounds i8, ptr %add.ptr17, i64 -16 %dst.val.i28 = load i64, ptr %add.ptr18, align 1 diff --git a/bench/rust-analyzer-rs/optimized/4fo6e09jeifrbt47.ll b/bench/rust-analyzer-rs/optimized/4fo6e09jeifrbt47.ll index 93610671272..bec1eaa93c4 100644 --- a/bench/rust-analyzer-rs/optimized/4fo6e09jeifrbt47.ll +++ b/bench/rust-analyzer-rs/optimized/4fo6e09jeifrbt47.ll @@ -22897,7 +22897,6 @@ _ZN4core4hash11BuildHasher8hash_one17ha1d3b1bec52cb01dE.exit: ; preds = %10, %11 %.val4.i.i.i.i = load i32, ptr %9, align 4, !range !2882, !alias.scope !5308, !noalias !5305 %20 = getelementptr inbounds nuw i8, ptr %2, i64 8 %.val5.i.i.i.i = load i32, ptr %20, align 4, !alias.scope !5308, !noalias !5305 - %invariant.gep = getelementptr i8, ptr %18, i64 -64 br label %21 21: ; preds = %80, %_ZN4core4hash11BuildHasher8hash_one17ha1d3b1bec52cb01dE.exit @@ -23002,19 +23001,10 @@ _ZN4core4hash11BuildHasher8hash_one17ha1d3b1bec52cb01dE.exit: ; preds = %10, %11 br i1 %.not.i.i, label %80, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find17hfbac7ae111cb71c9E.llvm.18263967998570167583.exit" .lr.ph.i: ; preds = %.lr.ph.i.preheader, %.lr.ph.i - %.02339.i = phi i16 [ %74, %.lr.ph.i ], [ %24, %.lr.ph.i.preheader ] - %71 = call range(i16 0, 17) i16 @llvm.cttz.i16(i16 %.02339.i, i1 true) - %72 = zext nneg i16 %71 to i64 - %73 = add i16 %.02339.i, -1 - %74 = and i16 %73, %.02339.i - %75 = add i64 %.sroa.01.0.i.i, %72 - %76 = and i64 %75, %17 - %77 = sub nsw i64 0, %76 - %gep = getelementptr { { i32, [4 x i32] }, [1 x i32], { i8, [39 x i8] } }, ptr %invariant.gep, i64 %77 - %78 = load i32, ptr %gep, align 4, !range !2882, !alias.scope !5319, !noalias !5324, !noundef !4 - %79 = icmp ne i32 %78, %.fr - call void @llvm.assume(i1 %79) - %.not.i4.i = icmp eq i16 %74, 0 + %.02339.i = phi i16 [ %72, %.lr.ph.i ], [ %24, %.lr.ph.i.preheader ] + %71 = add i16 %.02339.i, -1 + %72 = and i16 %71, %.02339.i + %73 = icmp eq i16 %72, 0 br i1 %.not.i4.i, label %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h27abb518d099e409E.llvm.18263967998570167583.exit._crit_edge.i", label %.lr.ph.i 80: ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$4find28_$u7b$$u7b$closure$u7d$$u7d$17h27abb518d099e409E.llvm.18263967998570167583.exit._crit_edge.i" diff --git a/bench/rust-analyzer-rs/optimized/kcxpblerbqo90m6.ll b/bench/rust-analyzer-rs/optimized/kcxpblerbqo90m6.ll index d7512b7429a..ecbb6448655 100644 --- a/bench/rust-analyzer-rs/optimized/kcxpblerbqo90m6.ll +++ b/bench/rust-analyzer-rs/optimized/kcxpblerbqo90m6.ll @@ -7127,7 +7127,7 @@ define hidden noundef zeroext i1 @"_ZN55_$LT$$RF$str$u20$as$u20$core..str..patte .preheader.i: ; preds = %90, %82 %.sroa.025.0140.i = phi i64 [ %78, %82 ], [ 0, %90 ] - %.2139.i = phi i8 [ %.3.i, %82 ], [ %.064141.i, %90 ] + %.2139.i = phi i8 [ %.3.i, %82 ], [ 0, %90 ] %78 = add nuw nsw i64 %.sroa.025.0140.i, 1 %79 = getelementptr inbounds nuw [4 x i16], ptr %5, i64 0, i64 %.sroa.025.0140.i %80 = load i16, ptr %79, align 2, !noalias !1124, !noundef !9 @@ -25603,10 +25603,10 @@ _ZN3ide10join_lines14remove_newline17h2d19567c2d0acd43E.exit.backedge: ; preds = %183 = call noundef i16 @"_ZN74_$LT$syntax..syntax_node..RustLanguage$u20$as$u20$rowan..api..Language$GT$13kind_from_raw17h329786d93afe91e3E"(i16 noundef %.0.i.i45), !range !489, !noalias !4242 %.not.i46 = icmp eq i16 %183, 125 %.pre.i = load i64, ptr %41, align 8, !range !444, !noalias !4243 + %switch.not.not.i171.i = icmp eq i64 %.pre.i, 0 br i1 %.not.i46, label %184, label %_ZN4core4iter6traits8iterator8Iterator4fold17ha2c3eedd1ea8d063E.exit.thread.i 184: ; preds = %181 - %switch.not.not.i171.i = icmp eq i64 %.pre.i, 0 br i1 %switch.not.not.i171.i, label %_ZN5rowan6cursor11SyntaxToken4text17h91f241cb81989acaE.llvm.1684962189325099908.exit181.i, label %_ZN5rowan6cursor11SyntaxToken4text17h91f241cb81989acaE.llvm.1684962189325099908.exit.i _ZN5rowan6cursor11SyntaxToken4text17h91f241cb81989acaE.llvm.1684962189325099908.exit.i: ; preds = %184 @@ -25631,7 +25631,7 @@ _ZN5rowan6cursor11SyntaxToken4text17h91f241cb81989acaE.llvm.1684962189325099908. _ZN4core4iter6traits8iterator8Iterator4fold17ha2c3eedd1ea8d063E.exit.i: ; preds = %.lr.ph.i.i %194 = icmp eq i64 %193, 1 - br i1 %194, label %195, label %_ZN4core4iter6traits8iterator8Iterator4fold17ha2c3eedd1ea8d063E.exit.thread.i + br i1 %194, label %195, label %_ZN4core4iter6traits8iterator8Iterator4fold17ha2c3eedd1ea8d063E.exit.thread.thread.i 195: ; preds = %_ZN4core4iter6traits8iterator8Iterator4fold17ha2c3eedd1ea8d063E.exit.i %196 = call { i64, ptr } @_ZN5rowan6cursor11SyntaxToken21prev_sibling_or_token17h9e1bd73c3ef91f24E(ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %2), !noalias !4254 @@ -25641,9 +25641,8 @@ _ZN4core4iter6traits8iterator8Iterator4fold17ha2c3eedd1ea8d063E.exit.i: ; preds %200 = invoke { i64, ptr } @_ZN5rowan6cursor11SyntaxToken21next_sibling_or_token17h324fef41d7efac53E(ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %2) to label %238 unwind label %230, !noalias !4254 -_ZN4core4iter6traits8iterator8Iterator4fold17ha2c3eedd1ea8d063E.exit.thread.i: ; preds = %_ZN4core4iter6traits8iterator8Iterator4fold17ha2c3eedd1ea8d063E.exit.i, %181 - %switch.not.not.i176.i = icmp eq i64 %.pre.i, 0 - br i1 %switch.not.not.i176.i, label %_ZN5rowan6cursor11SyntaxToken4text17h91f241cb81989acaE.llvm.1684962189325099908.exit181.i, label %_ZN4core4iter6traits8iterator8Iterator4fold17ha2c3eedd1ea8d063E.exit.thread.i._ZN4core4iter6traits8iterator8Iterator4fold17ha2c3eedd1ea8d063E.exit.thread.thread399.i_crit_edge +_ZN4core4iter6traits8iterator8Iterator4fold17ha2c3eedd1ea8d063E.exit.thread.i: ; preds = %181 + br i1 %switch.not.not.i171.i, label %_ZN5rowan6cursor11SyntaxToken4text17h91f241cb81989acaE.llvm.1684962189325099908.exit181.i, label %_ZN4core4iter6traits8iterator8Iterator4fold17ha2c3eedd1ea8d063E.exit.thread.i._ZN4core4iter6traits8iterator8Iterator4fold17ha2c3eedd1ea8d063E.exit.thread.thread.i_crit_edge _ZN4core4iter6traits8iterator8Iterator4fold17ha2c3eedd1ea8d063E.exit.thread.i._ZN4core4iter6traits8iterator8Iterator4fold17ha2c3eedd1ea8d063E.exit.thread.thread399.i_crit_edge: ; preds = %_ZN4core4iter6traits8iterator8Iterator4fold17ha2c3eedd1ea8d063E.exit.thread.i %.sroa.3.0.i.i178.i.pre = load ptr, ptr %.sroa.3.0.in.i.i.i, align 8, !noalias !4255 @@ -25651,9 +25650,9 @@ _ZN4core4iter6traits8iterator8Iterator4fold17ha2c3eedd1ea8d063E.exit.thread.i._Z %.pre = load i64, ptr %.phi.trans.insert, align 8, !noalias !4255 br label %_ZN4core4iter6traits8iterator8Iterator4fold17ha2c3eedd1ea8d063E.exit.thread.thread399.i -_ZN4core4iter6traits8iterator8Iterator4fold17ha2c3eedd1ea8d063E.exit.thread.thread399.i: ; preds = %_ZN4core4iter6traits8iterator8Iterator4fold17ha2c3eedd1ea8d063E.exit.thread.i._ZN4core4iter6traits8iterator8Iterator4fold17ha2c3eedd1ea8d063E.exit.thread.thread399.i_crit_edge, %_ZN5rowan6cursor11SyntaxToken4text17h91f241cb81989acaE.llvm.1684962189325099908.exit.i - %201 = phi i64 [ %.pre, %_ZN4core4iter6traits8iterator8Iterator4fold17ha2c3eedd1ea8d063E.exit.thread.i._ZN4core4iter6traits8iterator8Iterator4fold17ha2c3eedd1ea8d063E.exit.thread.thread399.i_crit_edge ], [ 0, %_ZN5rowan6cursor11SyntaxToken4text17h91f241cb81989acaE.llvm.1684962189325099908.exit.i ] - %.sroa.3.0.i.i178.i = phi ptr [ %.sroa.3.0.i.i178.i.pre, %_ZN4core4iter6traits8iterator8Iterator4fold17ha2c3eedd1ea8d063E.exit.thread.i._ZN4core4iter6traits8iterator8Iterator4fold17ha2c3eedd1ea8d063E.exit.thread.thread399.i_crit_edge ], [ %.sroa.3.0.i.i173.i, %_ZN5rowan6cursor11SyntaxToken4text17h91f241cb81989acaE.llvm.1684962189325099908.exit.i ] +_ZN4core4iter6traits8iterator8Iterator4fold17ha2c3eedd1ea8d063E.exit.thread.thread399.i: ; preds = %_ZN4core4iter6traits8iterator8Iterator4fold17ha2c3eedd1ea8d063E.exit.thread.i._ZN4core4iter6traits8iterator8Iterator4fold17ha2c3eedd1ea8d063E.exit.thread.thread399.i_crit_edge, %_ZN4core4iter6traits8iterator8Iterator4fold17ha2c3eedd1ea8d063E.exit.i, %_ZN5rowan6cursor11SyntaxToken4text17h91f241cb81989acaE.llvm.1684962189325099908.exit.i + %201 = phi i64 [ %.pre, %_ZN4core4iter6traits8iterator8Iterator4fold17ha2c3eedd1ea8d063E.exit.thread.i._ZN4core4iter6traits8iterator8Iterator4fold17ha2c3eedd1ea8d063E.exit.thread.thread399.i_crit_edge ], [ %186, %_ZN4core4iter6traits8iterator8Iterator4fold17ha2c3eedd1ea8d063E.exit.i ], [ 0, %_ZN5rowan6cursor11SyntaxToken4text17h91f241cb81989acaE.llvm.1684962189325099908.exit.i ] + %.sroa.3.0.i.i178.i = phi ptr [ %.sroa.3.0.i.i178.i.pre, %_ZN4core4iter6traits8iterator8Iterator4fold17ha2c3eedd1ea8d063E.exit.thread.i._ZN4core4iter6traits8iterator8Iterator4fold17ha2c3eedd1ea8d063E.exit.thread.thread399.i_crit_edge ], [ %.sroa.3.0.i.i173.i, %_ZN4core4iter6traits8iterator8Iterator4fold17ha2c3eedd1ea8d063E.exit.i ], [ %.sroa.3.0.i.i173.i, %_ZN5rowan6cursor11SyntaxToken4text17h91f241cb81989acaE.llvm.1684962189325099908.exit.i ] %202 = getelementptr inbounds nuw i8, ptr %.sroa.3.0.i.i178.i, i64 16 br label %_ZN5rowan6cursor11SyntaxToken4text17h91f241cb81989acaE.llvm.1684962189325099908.exit181.i diff --git a/bench/slurm/optimized/job_report_functions.ll b/bench/slurm/optimized/job_report_functions.ll index 5df0c231916..782f50c066d 100644 --- a/bench/slurm/optimized/job_report_functions.ll +++ b/bench/slurm/optimized/job_report_functions.ll @@ -300,7 +300,7 @@ define internal fastcc noundef ptr @_process_grouped_report(ptr noundef %0, ptr call fastcc void @_check_create_grouping(ptr noundef %59, ptr noundef %34, ptr noundef %.0238.us.us, ptr noundef %.0237.us.us, ptr noundef nonnull %105, i1 noundef zeroext %.not288, i1 noundef zeroext true) %108 = call ptr @list_next(ptr noundef %103) #11 %.not301.us.us = icmp eq ptr %108, null - br i1 %.not301.us.us, label %._crit_edge397, label %.lr.ph396.split.us.split.us + br i1 %.not301.us.us, label %._crit_edge397.thread, label %.lr.ph396.split.us.split.us .lr.ph396.split.us.split: ; preds = %.lr.ph396.split.us, %.lr.ph396.split.us.split %109 = phi ptr [ %112, %.lr.ph396.split.us.split ], [ %104, %.lr.ph396.split.us ] @@ -311,7 +311,7 @@ define internal fastcc noundef ptr @_process_grouped_report(ptr noundef %0, ptr call fastcc void @_check_create_grouping(ptr noundef %59, ptr noundef %34, ptr noundef %.0238.us, ptr noundef %.0237.us, ptr noundef nonnull %109, i1 noundef zeroext %.not288, i1 noundef zeroext false) %112 = call ptr @list_next(ptr noundef %103) #11 %.not301.us = icmp eq ptr %112, null - br i1 %.not301.us, label %._crit_edge397, label %.lr.ph396.split.us.split + br i1 %.not301.us, label %._crit_edge397.thread, label %.lr.ph396.split.us.split .lr.ph396.split: ; preds = %.lr.ph396 br i1 %4, label %.preheader.us, label %.preheader @@ -326,7 +326,7 @@ define internal fastcc noundef ptr @_process_grouped_report(ptr noundef %0, ptr call void @list_iterator_reset(ptr noundef nonnull %.0241) #11 %115 = call ptr @list_next(ptr noundef %103) #11 %.not301.us398 = icmp eq ptr %115, null - br i1 %.not301.us398, label %._crit_edge397.thread, label %.preheader.us + br i1 %.not301.us398, label %._crit_edge397.thread437, label %.preheader.us .lr.ph392.us: ; preds = %.preheader.us %116 = getelementptr inbounds nuw i8, ptr %113, i64 8 @@ -396,24 +396,28 @@ define internal fastcc noundef ptr @_process_grouped_report(ptr noundef %0, ptr call void @list_iterator_reset(ptr noundef nonnull %.0241) #11 %148 = call ptr @list_next(ptr noundef %103) #11 %.not301 = icmp eq ptr %148, null - br i1 %.not301, label %._crit_edge397.thread, label %.preheader + br i1 %.not301, label %._crit_edge397.thread437, label %.preheader -._crit_edge397.thread: ; preds = %._crit_edge393.split, %._crit_edge393.split.us.us +._crit_edge397.thread: ; preds = %.lr.ph396.split.us.split, %.lr.ph396.split.us.split.us + call void @list_iterator_destroy(ptr noundef %103) #11 + br label %150 + +._crit_edge397.thread437: ; preds = %._crit_edge393.split, %._crit_edge393.split.us.us call void @list_iterator_destroy(ptr noundef %103) #11 br label %149 -._crit_edge397: ; preds = %.lr.ph396.split.us.split, %.lr.ph396.split.us.split.us, %102 +._crit_edge397: ; preds = %102 call void @list_iterator_destroy(ptr noundef %103) #11 %.not302 = icmp eq ptr %.0241, null br i1 %.not302, label %150, label %149 -149: ; preds = %._crit_edge397.thread, %._crit_edge397 +149: ; preds = %._crit_edge397.thread437, %._crit_edge397 call void @list_iterator_destroy(ptr noundef nonnull %.0241) #11 br label %150 -150: ; preds = %._crit_edge397, %149, %.thread348.thread, %97, %58 - %.0248 = phi ptr [ null, %58 ], [ %.2250352360, %149 ], [ %.2250352360, %._crit_edge397 ], [ null, %97 ], [ null, %.thread348.thread ] - %.0246 = phi ptr [ null, %58 ], [ %.1247353359, %149 ], [ %.1247353359, %._crit_edge397 ], [ %.1247354, %97 ], [ %.1247354, %.thread348.thread ] +150: ; preds = %._crit_edge397.thread, %._crit_edge397, %149, %.thread348.thread, %97, %58 + %.0248 = phi ptr [ null, %58 ], [ %.2250352360, %149 ], [ %.2250352360, %._crit_edge397 ], [ null, %97 ], [ null, %.thread348.thread ], [ %.2250352360, %._crit_edge397.thread ] + %.0246 = phi ptr [ null, %58 ], [ %.1247353359, %149 ], [ %.1247353359, %._crit_edge397 ], [ %.1247354, %97 ], [ %.1247354, %.thread348.thread ], [ %.1247353359, %._crit_edge397.thread ] %151 = call ptr @list_iterator_create(ptr noundef nonnull %28) #11 %152 = call ptr @list_next(ptr noundef %151) #11 %.not307413 = icmp eq ptr %152, null @@ -1393,7 +1397,7 @@ define internal fastcc void @_check_create_grouping(ptr noundef %0, ptr noundef tail call void @list_append(ptr noundef %51, ptr noundef nonnull %44) #11 %52 = tail call ptr @list_next(ptr noundef %1) #11 %.not55.us = icmp eq ptr %52, null - br i1 %.not55.us, label %._crit_edge, label %.lr.ph.split.us, !llvm.loop !30 + br i1 %.not55.us, label %._crit_edge.thread, label %.lr.ph.split.us, !llvm.loop !30 .lr.ph.split: ; preds = %.lr.ph, %.lr.ph.split %53 = phi ptr [ %63, %.lr.ph.split ], [ %42, %.lr.ph ] @@ -1415,11 +1419,9 @@ define internal fastcc void @_check_create_grouping(ptr noundef %0, ptr noundef %.not55 = icmp eq ptr %63, null br i1 %.not55, label %._crit_edge, label %.lr.ph.split, !llvm.loop !30 -._crit_edge: ; preds = %.lr.ph.split, %.lr.ph.split.us - %.0.lcssa = phi i32 [ %48, %.lr.ph.split.us ], [ %59, %.lr.ph.split ] - %.not56 = icmp eq i32 %.0.lcssa, 0 - %brmerge = or i1 %5, %.not56 - br i1 %brmerge, label %._crit_edge.thread, label %64 +._crit_edge: ; preds = %.lr.ph.split + %.0.lcssa = icmp eq i32 %59, 0 + br i1 %.not56, label %._crit_edge.thread, label %64 64: ; preds = %._crit_edge %65 = tail call ptr @slurm_xcalloc(i64 noundef 1, i64 noundef 32, i1 noundef zeroext true, i1 noundef zeroext false, ptr noundef nonnull @.str, i32 noundef 124, ptr noundef nonnull @__func__._check_create_grouping) #11 @@ -1427,14 +1429,14 @@ define internal fastcc void @_check_create_grouping(ptr noundef %0, ptr noundef %67 = getelementptr inbounds nuw i8, ptr %65, i64 8 store ptr %66, ptr %67, align 8 %68 = getelementptr inbounds nuw i8, ptr %65, i64 16 - store i32 %.0.lcssa, ptr %68, align 8 + store i32 %59, ptr %68, align 8 %69 = getelementptr inbounds nuw i8, ptr %65, i64 20 store i32 -1, ptr %69, align 4 %70 = load ptr, ptr %40, align 8 tail call void @list_append(ptr noundef %70, ptr noundef %65) #11 br label %._crit_edge.thread -._crit_edge.thread: ; preds = %38, %._crit_edge, %64 +._crit_edge.thread: ; preds = %.lr.ph.split.us, %38, %._crit_edge, %64 tail call void @list_iterator_reset(ptr noundef %1) #11 br label %71 diff --git a/bench/snappy/optimized/snappy.ll b/bench/snappy/optimized/snappy.ll index df30355a660..f1cbefa1adb 100644 --- a/bench/snappy/optimized/snappy.ll +++ b/bench/snappy/optimized/snappy.ll @@ -1202,17 +1202,17 @@ while.body20: ; preds = %if.else, %while.bod %vfn22 = getelementptr inbounds nuw i8, ptr %vtable21, i64 24 %14 = load ptr, ptr %vfn22, align 8 %call23 = call noundef ptr %14(ptr noundef nonnull align 8 dereferenceable(8) %reader, ptr noundef nonnull %fragment_size) #19 - %sub = sub nuw i64 %.sroa.speculated60, %bytes_read.071 + %sub = sub nuw nsw i64 %.sroa.speculated60, %bytes_read.071 %15 = load i64, ptr %fragment_size, align 8 %.sroa.speculated = call i64 @llvm.umin.i64(i64 %sub, i64 %15) %add.ptr = getelementptr inbounds i8, ptr %add.ptr.i, i64 %bytes_read.071 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %add.ptr, ptr align 1 %call23, i64 %.sroa.speculated, i1 false) - %add25 = add i64 %.sroa.speculated, %bytes_read.071 + %add25 = add nuw nsw i64 %.sroa.speculated, %bytes_read.071 %vtable26 = load ptr, ptr %reader, align 8 %vfn27 = getelementptr inbounds nuw i8, ptr %vtable26, i64 32 %16 = load ptr, ptr %vfn27, align 8 call void %16(ptr noundef nonnull align 8 dereferenceable(8) %reader, i64 noundef %.sroa.speculated) #19 - %cmp19 = icmp ult i64 %add25, %.sroa.speculated60 + %cmp19 = icmp samesign ult i64 %add25, %.sroa.speculated60 br i1 %cmp19, label %while.body20, label %if.end, !llvm.loop !19 if.end: ; preds = %while.body20, %while.body @@ -1240,8 +1240,10 @@ _ZNK6snappy8internal13WorkingMemory12GetHashTableEmPi.exit: ; preds = %if.end, % %mul.i = zext nneg i32 %18 to i64 call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(1) %call5.i.i, i8 0, i64 %mul.i, i1 false) %add.i = add nuw nsw i64 %.sroa.speculated60, 32 - %div.i = udiv i64 %.sroa.speculated60, 6 - %add1.i = add nuw nsw i64 %add.i, %div.i + %div.i = trunc nuw nsw i64 %.sroa.speculated60 to i32 + %add1.i = udiv i32 %div.i, 6 + %div.i.zext = zext nneg i32 %div.i75 to i64 + %add1.i = add nuw nsw i64 %add.i, %div.i.zext %vtable33 = load ptr, ptr %writer, align 8 %vfn34 = getelementptr inbounds nuw i8, ptr %vtable33, i64 24 %19 = load ptr, ptr %vfn34, align 8 diff --git a/bench/stat-rs/optimized/2ao4u4y4ndqxwz8u.ll b/bench/stat-rs/optimized/2ao4u4y4ndqxwz8u.ll index a58b049a63e..a440a7d58fc 100644 --- a/bench/stat-rs/optimized/2ao4u4y4ndqxwz8u.ll +++ b/bench/stat-rs/optimized/2ao4u4y4ndqxwz8u.ll @@ -979,14 +979,12 @@ define internal fastcc void @"_ZN5alloc11collections5btree4node212Handle$LT$allo %not..i.i = xor i1 %57, true %58 = zext i1 %not..i.i to i64 %spec.select8.i.i = add nuw nsw i64 %.sroa.0.011.i.i, %58 - %59 = icmp samesign ult i64 %.sroa.0.011.i.i, 12 - tail call void @llvm.assume(i1 %59) - %60 = getelementptr inbounds nuw ptr, ptr %45, i64 %.sroa.0.011.i.i - %61 = load ptr, ptr %60, align 8, !alias.scope !140, !noalias !143, !nonnull !4, !noundef !4 - store ptr %6, ptr %61, align 8, !noalias !150 - %62 = trunc nuw nsw i64 %.sroa.0.011.i.i to i16 - %63 = getelementptr inbounds nuw i8, ptr %61, i64 184 - store i16 %62, ptr %63, align 8, !noalias !151 + %59 = getelementptr inbounds nuw ptr, ptr %45, i64 %.sroa.0.011.i.i + %60 = load ptr, ptr %59, align 8, !alias.scope !140, !noalias !143, !nonnull !4, !noundef !4 + store ptr %6, ptr %60, align 8, !noalias !150 + %61 = trunc nuw nsw i64 %.sroa.0.011.i.i to i16 + %62 = getelementptr inbounds nuw i8, ptr %60, i64 184 + store i16 %61, ptr %62, align 8, !noalias !151 %.not.i.i.i.i = icmp samesign ugt i64 %spec.select8.i.i, %44 %or.cond.i.i = select i1 %57, i1 true, i1 %.not.i.i.i.i br i1 %or.cond.i.i, label %64, label %56 diff --git a/bench/stockfish/optimized/evaluate_nnue.ll b/bench/stockfish/optimized/evaluate_nnue.ll index d45bf1825be..15b21ac657c 100644 --- a/bench/stockfish/optimized/evaluate_nnue.ll +++ b/bench/stockfish/optimized/evaluate_nnue.ll @@ -525,7 +525,7 @@ define linkonce_odr dso_local noundef i32 @_ZNK9Stockfish4Eval4NNUE18FeatureTran call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(256) %scevgep94.i.us.i, ptr noundef nonnull align 64 dereferenceable(256) %scevgep.i.us.i, i64 256, i1 false) %indvar.next.i.us.i = add nuw nsw i64 %indvar.i.us.i, 1 %exitcond99.not.i.us.i = icmp eq i64 %indvar.next.i.us.i, 20 - br i1 %exitcond99.not.i.us.i, label %.critedge.i.i, label %._crit_edge.i.us.i, !llvm.loop !13 + br i1 %exitcond99.not.i.us.i, label %_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE0EEEvRKNS_8PositionEb.exit.i, label %._crit_edge.i.us.i, !llvm.loop !13 .lr.ph.i.preheader.i: ; preds = %.preheader.i.i, %._crit_edge.i.loopexit.i %indvar.i.i = phi i64 [ %indvar.next.i.i, %._crit_edge.i.loopexit.i ], [ 0, %.preheader.i.i ] @@ -570,7 +570,7 @@ define linkonce_odr dso_local noundef i32 @_ZNK9Stockfish4Eval4NNUE18FeatureTran %exitcond99.not.i.i = icmp eq i64 %indvar.next.i.i, 20 br i1 %exitcond99.not.i.i, label %.critedge.i.i, label %.lr.ph.i.preheader.i, !llvm.loop !13 -.critedge.i.i: ; preds = %._crit_edge.i.loopexit.i, %._crit_edge.i.us.i, %31 +.critedge.i.i: ; preds = %._crit_edge.i.loopexit.i, %31 %59 = getelementptr inbounds i32, ptr %10, i64 %.pre100.i.i %.not7786.i.i = icmp eq i64 %.pre100.i.i, 0 br i1 %.not7786.i.i, label %_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE0EEEvRKNS_8PositionEb.exit.i, label %.lr.ph89.i.i @@ -601,9 +601,9 @@ _ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumul %74 = bitcast <4 x i32> %71 to <2 x i64> br label %_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE0EEEvRKNS_8PositionEb.exit.i -_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE0EEEvRKNS_8PositionEb.exit.i: ; preds = %_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE0EEEvRKNS_8PositionEb.exit.loopexit.i, %.critedge.i.i - %.sroa.018.0.i = phi <2 x i64> [ zeroinitializer, %.critedge.i.i ], [ %73, %_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE0EEEvRKNS_8PositionEb.exit.loopexit.i ] - %.sroa.5.0.i = phi <2 x i64> [ zeroinitializer, %.critedge.i.i ], [ %74, %_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE0EEEvRKNS_8PositionEb.exit.loopexit.i ] +_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE0EEEvRKNS_8PositionEb.exit.i: ; preds = %._crit_edge.i.us.i, %_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE0EEEvRKNS_8PositionEb.exit.loopexit.i, %.critedge.i.i + %.sroa.018.0.i = phi <2 x i64> [ zeroinitializer, %.critedge.i.i ], [ %73, %_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE0EEEvRKNS_8PositionEb.exit.loopexit.i ], [ zeroinitializer, %._crit_edge.i.us.i ] + %.sroa.5.0.i = phi <2 x i64> [ zeroinitializer, %.critedge.i.i ], [ %74, %_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE0EEEvRKNS_8PositionEb.exit.loopexit.i ], [ zeroinitializer, %._crit_edge.i.us.i ] %75 = getelementptr inbounds nuw i8, ptr %33, i64 10432 store <2 x i64> %.sroa.018.0.i, ptr %75, align 16 %.sroa.5.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %33, i64 10448 @@ -681,7 +681,7 @@ _ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumul call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(256) %gep.i.us.i, ptr noundef nonnull align 64 dereferenceable(256) %scevgep.i.us.i124, i64 256, i1 false) %indvar.next.i.us.i125 = add nuw nsw i64 %indvar.i.us.i123, 1 %exitcond99.not.i.us.i126 = icmp eq i64 %indvar.next.i.us.i125, 20 - br i1 %exitcond99.not.i.us.i126, label %.critedge.i.i113, label %._crit_edge.i.us.i122, !llvm.loop !15 + br i1 %exitcond99.not.i.us.i126, label %_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE1EEEvRKNS_8PositionEb.exit.i, label %._crit_edge.i.us.i122, !llvm.loop !15 .lr.ph.i.preheader.i100: ; preds = %.preheader.i.i98, %._crit_edge.i.loopexit.i110 %indvar.i.i101 = phi i64 [ %indvar.next.i.i111, %._crit_edge.i.loopexit.i110 ], [ 0, %.preheader.i.i98 ] @@ -725,7 +725,7 @@ _ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumul %exitcond99.not.i.i112 = icmp eq i64 %indvar.next.i.i111, 20 br i1 %exitcond99.not.i.i112, label %.critedge.i.i113, label %.lr.ph.i.preheader.i100, !llvm.loop !15 -.critedge.i.i113: ; preds = %._crit_edge.i.loopexit.i110, %._crit_edge.i.us.i122, %95 +.critedge.i.i113: ; preds = %._crit_edge.i.loopexit.i110, %95 %121 = getelementptr inbounds i32, ptr %7, i64 %.pre100.i.i97 %.not7786.i.i114 = icmp eq i64 %.pre100.i.i97, 0 br i1 %.not7786.i.i114, label %_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE1EEEvRKNS_8PositionEb.exit.i, label %.lr.ph89.i.i115 @@ -756,9 +756,9 @@ _ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumul %136 = bitcast <4 x i32> %133 to <2 x i64> br label %_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE1EEEvRKNS_8PositionEb.exit.i -_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE1EEEvRKNS_8PositionEb.exit.i: ; preds = %_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE1EEEvRKNS_8PositionEb.exit.loopexit.i, %.critedge.i.i113 - %.sroa.018.0.i119 = phi <2 x i64> [ zeroinitializer, %.critedge.i.i113 ], [ %135, %_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE1EEEvRKNS_8PositionEb.exit.loopexit.i ] - %.sroa.5.0.i120 = phi <2 x i64> [ zeroinitializer, %.critedge.i.i113 ], [ %136, %_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE1EEEvRKNS_8PositionEb.exit.loopexit.i ] +_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE1EEEvRKNS_8PositionEb.exit.i: ; preds = %._crit_edge.i.us.i122, %_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE1EEEvRKNS_8PositionEb.exit.loopexit.i, %.critedge.i.i113 + %.sroa.018.0.i119 = phi <2 x i64> [ zeroinitializer, %.critedge.i.i113 ], [ %135, %_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE1EEEvRKNS_8PositionEb.exit.loopexit.i ], [ zeroinitializer, %._crit_edge.i.us.i122 ] + %.sroa.5.0.i120 = phi <2 x i64> [ zeroinitializer, %.critedge.i.i113 ], [ %136, %_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE1EEEvRKNS_8PositionEb.exit.loopexit.i ], [ zeroinitializer, %._crit_edge.i.us.i122 ] %137 = getelementptr inbounds nuw i8, ptr %97, i64 10464 store <2 x i64> %.sroa.018.0.i119, ptr %137, align 16 %.sroa.5.0..sroa_idx.i121 = getelementptr inbounds nuw i8, ptr %97, i64 10480 @@ -1655,7 +1655,7 @@ _ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumul call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(256) %scevgep94.i.us.i, ptr noundef nonnull align 64 dereferenceable(256) %scevgep.i.us.i32, i64 256, i1 false) %indvar.next.i.us.i33 = add nuw nsw i64 %indvar.i.us.i31, 1 %exitcond99.not.i.us.i34 = icmp eq i64 %indvar.next.i.us.i33, 20 - br i1 %exitcond99.not.i.us.i34, label %.critedge.i.i21, label %._crit_edge.i.us.i30, !llvm.loop !13 + br i1 %exitcond99.not.i.us.i34, label %_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE0EEEvRKNS_8PositionEb.exit.i, label %._crit_edge.i.us.i30, !llvm.loop !13 .lr.ph.i.preheader.i8: ; preds = %.thread17.i5, %._crit_edge.i.loopexit.i18 %indvar.i.i9 = phi i64 [ %indvar.next.i.i19, %._crit_edge.i.loopexit.i18 ], [ 0, %.thread17.i5 ] @@ -1700,10 +1700,7 @@ _ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumul %exitcond99.not.i.i20 = icmp eq i64 %indvar.next.i.i19, 20 br i1 %exitcond99.not.i.i20, label %.critedge.i.i21, label %.lr.ph.i.preheader.i8, !llvm.loop !13 -.critedge.i.i21: ; preds = %._crit_edge.i.loopexit.i18, %._crit_edge.i.us.i30 - br i1 %.not80.i.i7, label %_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE0EEEvRKNS_8PositionEb.exit.i, label %.lr.ph89.i.i23 - -.lr.ph89.i.i23: ; preds = %.critedge.i.i21 +.critedge.i.i21: ; preds = %._crit_edge.i.loopexit.i18 %74 = getelementptr inbounds nuw i8, ptr %17, i64 115348480 br label %.critedge.i24 @@ -1729,9 +1726,9 @@ _ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumul %88 = bitcast <4 x i32> %85 to <2 x i64> br label %_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE0EEEvRKNS_8PositionEb.exit.i -_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE0EEEvRKNS_8PositionEb.exit.i: ; preds = %_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE0EEEvRKNS_8PositionEb.exit.loopexit.i, %.critedge.i.i21 - %.sroa.016.0.i27 = phi <2 x i64> [ zeroinitializer, %.critedge.i.i21 ], [ %87, %_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE0EEEvRKNS_8PositionEb.exit.loopexit.i ] - %.sroa.5.0.i28 = phi <2 x i64> [ zeroinitializer, %.critedge.i.i21 ], [ %88, %_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE0EEEvRKNS_8PositionEb.exit.loopexit.i ] +_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE0EEEvRKNS_8PositionEb.exit.i: ; preds = %._crit_edge.i.us.i30, %_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE0EEEvRKNS_8PositionEb.exit.loopexit.i + %.sroa.016.0.i27 = phi <2 x i64> [ %87, %_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE0EEEvRKNS_8PositionEb.exit.loopexit.i ], [ zeroinitializer, %._crit_edge.i.us.i30 ] + %.sroa.5.0.i28 = phi <2 x i64> [ %88, %_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE0EEEvRKNS_8PositionEb.exit.loopexit.i ], [ zeroinitializer, %._crit_edge.i.us.i30 ] %89 = getelementptr inbounds nuw i8, ptr %50, i64 10432 store <2 x i64> %.sroa.016.0.i27, ptr %89, align 16 %.sroa.5.0..sroa_idx.i29 = getelementptr inbounds nuw i8, ptr %50, i64 10448 @@ -1830,7 +1827,7 @@ _ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumul call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(256) %gep.i.us.i, ptr noundef nonnull align 64 dereferenceable(256) %scevgep.i.us.i, i64 256, i1 false) %indvar.next.i.us.i = add nuw nsw i64 %indvar.i.us.i, 1 %exitcond99.not.i.us.i = icmp eq i64 %indvar.next.i.us.i, 20 - br i1 %exitcond99.not.i.us.i, label %.critedge.i.i, label %._crit_edge.i.us.i, !llvm.loop !15 + br i1 %exitcond99.not.i.us.i, label %_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE1EEEvRKNS_8PositionEb.exit.i, label %._crit_edge.i.us.i, !llvm.loop !15 .lr.ph.i.preheader.i: ; preds = %.thread17.i, %._crit_edge.i.loopexit.i %indvar.i.i = phi i64 [ %indvar.next.i.i, %._crit_edge.i.loopexit.i ], [ 0, %.thread17.i ] @@ -1872,12 +1869,9 @@ _ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumul call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(256) %gep.i.i, ptr noundef nonnull align 16 dereferenceable(256) %5, i64 256, i1 false) %indvar.next.i.i = add nuw nsw i64 %indvar.i.i, 1 %exitcond99.not.i.i = icmp eq i64 %indvar.next.i.i, 20 - br i1 %exitcond99.not.i.i, label %.critedge.i.i, label %.lr.ph.i.preheader.i, !llvm.loop !15 - -.critedge.i.i: ; preds = %._crit_edge.i.loopexit.i, %._crit_edge.i.us.i - br i1 %.not80.i.i, label %_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE1EEEvRKNS_8PositionEb.exit.i, label %.lr.ph89.i.i + br i1 %exitcond99.not.i.i, label %.lr.ph89.i.i, label %.lr.ph.i.preheader.i, !llvm.loop !15 -.lr.ph89.i.i: ; preds = %.critedge.i.i +.lr.ph89.i.i: ; preds = %._crit_edge.i.loopexit.i %143 = getelementptr inbounds nuw i8, ptr %17, i64 115348480 br label %.critedge.i @@ -1903,9 +1897,9 @@ _ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumul %157 = bitcast <4 x i32> %154 to <2 x i64> br label %_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE1EEEvRKNS_8PositionEb.exit.i -_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE1EEEvRKNS_8PositionEb.exit.i: ; preds = %_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE1EEEvRKNS_8PositionEb.exit.loopexit.i, %.critedge.i.i - %.sroa.016.0.i = phi <2 x i64> [ zeroinitializer, %.critedge.i.i ], [ %156, %_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE1EEEvRKNS_8PositionEb.exit.loopexit.i ] - %.sroa.5.0.i = phi <2 x i64> [ zeroinitializer, %.critedge.i.i ], [ %157, %_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE1EEEvRKNS_8PositionEb.exit.loopexit.i ] +_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE1EEEvRKNS_8PositionEb.exit.i: ; preds = %._crit_edge.i.us.i, %_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE1EEEvRKNS_8PositionEb.exit.loopexit.i + %.sroa.016.0.i = phi <2 x i64> [ %156, %_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE1EEEvRKNS_8PositionEb.exit.loopexit.i ], [ zeroinitializer, %._crit_edge.i.us.i ] + %.sroa.5.0.i = phi <2 x i64> [ %157, %_ZNK9Stockfish4Eval4NNUE18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEE26update_accumulator_refreshILNS_5ColorE1EEEvRKNS_8PositionEb.exit.loopexit.i ], [ zeroinitializer, %._crit_edge.i.us.i ] %158 = getelementptr inbounds nuw i8, ptr %121, i64 10464 store <2 x i64> %.sroa.016.0.i, ptr %158, align 16 %.sroa.5.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %121, i64 10480 @@ -3771,9 +3765,9 @@ _ZN9Stockfish4Eval4NNUE6Detail16write_parametersINS1_18FeatureTransformerILj2560 %79 = load i64, ptr %78, align 8 %80 = getelementptr inbounds i8, ptr %0, i64 %79 %81 = call noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEE4failEv(ptr noundef nonnull align 8 dereferenceable(264) %80) #15 - br i1 %81, label %_ZN9Stockfish4Eval4NNUEL16write_parametersERSoNS1_7NetSizeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, label %82 + br i1 %81, label %_ZN9Stockfish4Eval4NNUEL16write_parametersERSoNS1_7NetSizeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, label %101 -82: ; preds = %_ZN9Stockfish4Eval4NNUE6Detail16write_parametersINS1_18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEEEEEbRSoRKT_.exit.i, %63 +82: ; preds = %63 %83 = icmp eq i32 %1, 1 br i1 %83, label %84, label %101 @@ -3819,7 +3813,8 @@ _ZN9Stockfish4Eval4NNUE6Detail16write_parametersINS1_18FeatureTransformerILj128E %100 = call noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEE4failEv(ptr noundef nonnull align 8 dereferenceable(264) %99) #15 br i1 %100, label %_ZN9Stockfish4Eval4NNUEL16write_parametersERSoNS1_7NetSizeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, label %101 -101: ; preds = %_ZN9Stockfish4Eval4NNUE6Detail16write_parametersINS1_18FeatureTransformerILj128EXadL_ZNS_9StateInfo16accumulatorSmallEEEEEEEbRSoRKT_.exit.i, %82 +101: ; preds = %_ZN9Stockfish4Eval4NNUE6Detail16write_parametersINS1_18FeatureTransformerILj128EXadL_ZNS_9StateInfo16accumulatorSmallEEEEEEEbRSoRKT_.exit.i, %82, %_ZN9Stockfish4Eval4NNUE6Detail16write_parametersINS1_18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEEEEEbRSoRKT_.exit.i + %101 = phi i1 [ true, %_ZN9Stockfish4Eval4NNUE6Detail16write_parametersINS1_18FeatureTransformerILj128EXadL_ZNS_9StateInfo16accumulatorSmallEEEEEEEbRSoRKT_.exit.i ], [ false, %82 ], [ false, %_ZN9Stockfish4Eval4NNUE6Detail16write_parametersINS1_18FeatureTransformerILj2560EXadL_ZNS_9StateInfo14accumulatorBigEEEEEEEbRSoRKT_.exit.i ] %102 = getelementptr inbounds nuw i8, ptr %8, i64 3 %103 = getelementptr inbounds nuw i8, ptr %6, i64 3 br label %104 @@ -3862,7 +3857,7 @@ _ZN9Stockfish4Eval4NNUE6Detail16write_parametersINS1_7NetworkILj2560ELi15ELi32EE br i1 %115, label %116, label %_ZN9Stockfish4Eval4NNUEL16write_parametersERSoNS1_7NetSizeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit 116: ; preds = %_ZN9Stockfish4Eval4NNUE6Detail16write_parametersINS1_7NetworkILj2560ELi15ELi32EEEEEbRSoRKT_.exit.i, %104 - br i1 %83, label %117, label %128 + br i1 %101, label %117, label %128 117: ; preds = %116 %118 = getelementptr inbounds nuw [8 x %"class.std::unique_ptr.23"], ptr @_ZN9Stockfish4Eval4NNUE12networkSmallE, i64 0, i64 %.046.i diff --git a/bench/sundials/optimized/ida.ll b/bench/sundials/optimized/ida.ll index 227b336218b..80307b5323e 100644 --- a/bench/sundials/optimized/ida.ll +++ b/bench/sundials/optimized/ida.ll @@ -218,7 +218,7 @@ define void @IDAProcessError(ptr noundef readonly captures(address_is_null) %0, %35 = load ptr, ptr %34, align 8, !tbaa !47 %36 = getelementptr inbounds nuw i8, ptr %.021.i, i64 16 %37 = load ptr, ptr %36, align 8, !tbaa !49 - call void %35(i32 noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %13, i32 noundef range(i32 100, 99) %1, ptr noundef %37, ptr noundef %29) #13 + call void %35(i32 noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %13, i32 noundef range(i32 100, 99) %1, ptr noundef %37, ptr noundef nonnull %29) #13 %.0.i = load ptr, ptr %.021.i, align 8, !tbaa !46 %.not18.i = icmp eq ptr %.0.i, null br i1 %.not18.i, label %SUNHandleErrWithMsg.exit, label %.lr.ph.i @@ -4156,46 +4156,53 @@ define internal fastcc range(i32 -10, 2) i32 @IDARcheck3(ptr noundef nonnull %0) .loopexit263.loopexit.i: ; preds = %266 %.pre368.i = load double, ptr %20, align 8, !tbaa !155 - br label %.lr.ph321.i.critedge + %283 = getelementptr inbounds nuw i8, ptr %0, i64 1120 + store double %.pre368.i, ptr %283, align 8, !tbaa !156 + br label %.lr.ph321.i .loopexit263.i.loopexit: ; preds = %._crit_edge300.loopexit.i, %.backedge.i, %._crit_edge304.i %.ph = phi double [ %278, %._crit_edge304.i ], [ %259, %.backedge.i ], [ %.pre.i, %._crit_edge300.loopexit.i ] %283 = icmp sgt i32 %200, 0 - %284 = getelementptr inbounds nuw i8, ptr %0, i64 1120 - store double %.ph, ptr %284, align 8, !tbaa !156 - br i1 %283, label %.lr.ph321.i, label %._crit_edge.thread.thread112 - -._crit_edge.thread.thread112: ; preds = %.loopexit263.i.loopexit %285 = getelementptr inbounds nuw i8, ptr %0, i64 1120 - %286 = load double, ptr %285, align 8, !tbaa !156 - %287 = getelementptr inbounds nuw i8, ptr %0, i64 1104 - store double %286, ptr %287, align 8, !tbaa !129 + store double %.ph, ptr %285, align 8, !tbaa !156 + br i1 %284, label %.loopexit263.i..lr.ph321.i_crit_edge, label %._crit_edge.thread.thread116 + +._crit_edge.thread.thread116: ; preds = %.loopexit263.i.loopexit + %286 = getelementptr inbounds nuw i8, ptr %0, i64 1120 + %287 = load double, ptr %286, align 8, !tbaa !156 + %288 = getelementptr inbounds nuw i8, ptr %0, i64 1104 + store double %287, ptr %288, align 8, !tbaa !129 br label %372 -.lr.ph321.i.critedge: ; preds = %.preheader265.i, %.loopexit263.loopexit.i - %.ph158 = phi double [ %106, %.preheader265.i ], [ %.pre368.i, %.loopexit263.loopexit.i ] - %288 = getelementptr inbounds nuw i8, ptr %0, i64 1120 - store double %.ph158, ptr %288, align 8, !tbaa !156 +.lr.ph321.i.critedge: ; preds = %.preheader265.i + %.ph158 = getelementptr inbounds nuw i8, ptr %0, i64 1120 + store double %106, ptr %289, align 8, !tbaa !156 + br label %.loopexit263.i..lr.ph321.i_crit_edge + +.loopexit263.i..lr.ph321.i_crit_edge: ; preds = %.loopexit263.i..lr.ph321.i_crit_edge.critedge, %.loopexit263.i.loopexit + %.pre106 = load ptr, ptr %31, align 8, !tbaa !106 + %.phi.trans.insert107 = getelementptr inbounds nuw i8, ptr %0, i64 1144 + %.pre108 = load ptr, ptr %.phi.trans.insert107, align 8, !tbaa !107 + %.pre109 = load ptr, ptr %58, align 8, !tbaa !110 br label %.lr.ph321.i -.lr.ph321.i: ; preds = %.lr.ph321.i.critedge, %.loopexit263.i.loopexit - %289 = load ptr, ptr %31, align 8, !tbaa !106 - %290 = getelementptr inbounds nuw i8, ptr %0, i64 1144 - %291 = load ptr, ptr %290, align 8, !tbaa !107 +.lr.ph321.i: ; preds = %.loopexit263.i..lr.ph321.i_crit_edge, %.loopexit263.loopexit.i + %289 = phi ptr [ %.pre109, %.loopexit263.i..lr.ph321.i_crit_edge ], [ %202, %.loopexit263.thread.i ] + %290 = phi ptr [ %.pre108, %.loopexit263.i..lr.ph321.i_crit_edge ], [ %264, %.loopexit263.thread.i ] + %291 = phi ptr [ %.pre106, %.loopexit263.i..lr.ph321.i_crit_edge ], [ %265, %.loopexit263.thread.i ] %292 = getelementptr inbounds nuw i8, ptr %0, i64 1088 %293 = load ptr, ptr %292, align 8, !tbaa !108 - %294 = load ptr, ptr %58, align 8, !tbaa !110 br label %295 295: ; preds = %333, %.lr.ph321.i %indvars.iv356.i = phi i64 [ 0, %.lr.ph321.i ], [ %indvars.iv.next357.i, %333 ] - %296 = getelementptr inbounds nuw double, ptr %289, i64 %indvars.iv356.i + %296 = getelementptr inbounds nuw double, ptr %292, i64 %indvars.iv356.i %297 = load double, ptr %296, align 8, !tbaa !130 %298 = getelementptr inbounds nuw double, ptr %291, i64 %indvars.iv356.i store double %297, ptr %298, align 8, !tbaa !130 %299 = getelementptr inbounds nuw i32, ptr %293, i64 %indvars.iv356.i store i32 0, ptr %299, align 4, !tbaa !111 - %300 = getelementptr inbounds nuw i32, ptr %294, i64 %indvars.iv356.i + %300 = getelementptr inbounds nuw i32, ptr %290, i64 %indvars.iv356.i %301 = load i32, ptr %300, align 4, !tbaa !111 %.not255.i = icmp eq i32 %301, 0 br i1 %.not255.i, label %333, label %302 @@ -4337,8 +4344,8 @@ IDARootfind.exit: ; preds = %333, %145, %._crit_ ._crit_edge79: ; preds = %368, %._crit_edge br i1 %338, label %IDARootfind.exit.thread, label %372 -372: ; preds = %._crit_edge.thread.thread112, %._crit_edge.thread, %._crit_edge79 - %373 = phi ptr [ %357, %._crit_edge.thread ], [ %360, %._crit_edge79 ], [ %285, %._crit_edge.thread.thread112 ] +372: ; preds = %._crit_edge.thread.thread116, %._crit_edge.thread, %._crit_edge79 + %373 = phi ptr [ %357, %._crit_edge.thread ], [ %360, %._crit_edge79 ], [ %286, %._crit_edge.thread.thread116 ] %374 = load double, ptr %373, align 8, !tbaa !156 %375 = load ptr, ptr %21, align 8, !tbaa !112 %376 = load ptr, ptr %23, align 8, !tbaa !113 diff --git a/bench/sundials/optimized/idas.ll b/bench/sundials/optimized/idas.ll index 9bd6abeb4b0..1492bfb7fba 100644 --- a/bench/sundials/optimized/idas.ll +++ b/bench/sundials/optimized/idas.ll @@ -349,7 +349,7 @@ define void @IDAProcessError(ptr noundef readonly captures(address_is_null) %0, %35 = load ptr, ptr %34, align 8, !tbaa !80 %36 = getelementptr inbounds nuw i8, ptr %.021.i, i64 16 %37 = load ptr, ptr %36, align 8, !tbaa !82 - call void %35(i32 noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %13, i32 noundef range(i32 100, 99) %1, ptr noundef %37, ptr noundef %29) #14 + call void %35(i32 noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %13, i32 noundef range(i32 100, 99) %1, ptr noundef %37, ptr noundef nonnull %29) #14 %.0.i = load ptr, ptr %.021.i, align 8, !tbaa !79 %.not18.i = icmp eq ptr %.0.i, null br i1 %.not18.i, label %SUNHandleErrWithMsg.exit, label %.lr.ph.i @@ -2908,10 +2908,8 @@ define range(i32 -40, 1) i32 @IDASensReInit(ptr noundef %0, i32 noundef %1, ptr %.lcssa = phi i32 [ %47, %39 ], [ %57, %53 ] %60 = getelementptr inbounds nuw i8, ptr %0, i64 156 store i32 1, ptr %60, align 4, !tbaa !45 - switch i32 %1, label %.thread [ - i32 1, label %61 - i32 2, label %65 - ] + %switch = icmp eq i32 %1, 1 + br i1 %switch, label %61, label %65 61: ; preds = %._crit_edge108 %62 = getelementptr inbounds nuw i8, ptr %0, i64 1752 @@ -2984,8 +2982,8 @@ define range(i32 -40, 1) i32 @IDASensReInit(ptr noundef %0, i32 noundef %1, ptr tail call void (ptr, i32, i32, ptr, ptr, ptr, ...) @IDAProcessError(ptr noundef nonnull %0, i32 noundef -15, i32 noundef 1643, ptr noundef nonnull @__func__.IDASensReInit, ptr noundef nonnull @.str, ptr noundef nonnull @.str.21) br label %.thread -.thread: ; preds = %._crit_edge108, %61, %65, %92, %32, %._crit_edge, %93, %85, %81, %26, %18, %14, %11, %6 - %.078 = phi i32 [ -20, %6 ], [ -40, %11 ], [ -22, %14 ], [ -22, %18 ], [ -22, %26 ], [ -21, %81 ], [ -21, %85 ], [ -15, %93 ], [ -28, %._crit_edge ], [ -28, %32 ], [ 0, %92 ], [ 0, %65 ], [ 0, %61 ], [ 0, %._crit_edge108 ] +.thread: ; preds = %61, %65, %92, %32, %._crit_edge, %93, %85, %81, %26, %18, %14, %11, %6 + %.078 = phi i32 [ -20, %6 ], [ -40, %11 ], [ -22, %14 ], [ -22, %18 ], [ -22, %26 ], [ -21, %81 ], [ -21, %85 ], [ -15, %93 ], [ -28, %._crit_edge ], [ -28, %32 ], [ 0, %92 ], [ 0, %65 ], [ 0, %61 ] ret i32 %.078 } @@ -9223,46 +9221,53 @@ define internal fastcc range(i32 -10, 2) i32 @IDARcheck3(ptr noundef nonnull %0) .loopexit263.loopexit.i: ; preds = %266 %.pre368.i = load double, ptr %20, align 8, !tbaa !256 - br label %.lr.ph321.i.critedge + %283 = getelementptr inbounds nuw i8, ptr %0, i64 1960 + store double %.pre368.i, ptr %283, align 8, !tbaa !257 + br label %.lr.ph321.i .loopexit263.i.loopexit: ; preds = %._crit_edge300.loopexit.i, %.backedge.i, %._crit_edge304.i %.ph = phi double [ %278, %._crit_edge304.i ], [ %259, %.backedge.i ], [ %.pre.i, %._crit_edge300.loopexit.i ] %283 = icmp sgt i32 %200, 0 - %284 = getelementptr inbounds nuw i8, ptr %0, i64 1960 - store double %.ph, ptr %284, align 8, !tbaa !257 - br i1 %283, label %.lr.ph321.i, label %._crit_edge.thread.thread112 - -._crit_edge.thread.thread112: ; preds = %.loopexit263.i.loopexit %285 = getelementptr inbounds nuw i8, ptr %0, i64 1960 - %286 = load double, ptr %285, align 8, !tbaa !257 - %287 = getelementptr inbounds nuw i8, ptr %0, i64 1944 - store double %286, ptr %287, align 8, !tbaa !227 + store double %.ph, ptr %285, align 8, !tbaa !257 + br i1 %284, label %.loopexit263.i..lr.ph321.i_crit_edge, label %._crit_edge.thread.thread116 + +._crit_edge.thread.thread116: ; preds = %.loopexit263.i.loopexit + %286 = getelementptr inbounds nuw i8, ptr %0, i64 1960 + %287 = load double, ptr %286, align 8, !tbaa !257 + %288 = getelementptr inbounds nuw i8, ptr %0, i64 1944 + store double %287, ptr %288, align 8, !tbaa !227 br label %372 -.lr.ph321.i.critedge: ; preds = %.preheader265.i, %.loopexit263.loopexit.i - %.ph158 = phi double [ %106, %.preheader265.i ], [ %.pre368.i, %.loopexit263.loopexit.i ] - %288 = getelementptr inbounds nuw i8, ptr %0, i64 1960 - store double %.ph158, ptr %288, align 8, !tbaa !257 +.lr.ph321.i.critedge: ; preds = %.preheader265.i + %.ph158 = getelementptr inbounds nuw i8, ptr %0, i64 1960 + store double %106, ptr %289, align 8, !tbaa !257 + br label %.loopexit263.i..lr.ph321.i_crit_edge + +.loopexit263.i..lr.ph321.i_crit_edge: ; preds = %.loopexit263.i..lr.ph321.i_crit_edge.critedge, %.loopexit263.i.loopexit + %.pre106 = load ptr, ptr %31, align 8, !tbaa !205 + %.phi.trans.insert107 = getelementptr inbounds nuw i8, ptr %0, i64 1984 + %.pre108 = load ptr, ptr %.phi.trans.insert107, align 8, !tbaa !206 + %.pre109 = load ptr, ptr %58, align 8, !tbaa !209 br label %.lr.ph321.i -.lr.ph321.i: ; preds = %.lr.ph321.i.critedge, %.loopexit263.i.loopexit - %289 = load ptr, ptr %31, align 8, !tbaa !205 - %290 = getelementptr inbounds nuw i8, ptr %0, i64 1984 - %291 = load ptr, ptr %290, align 8, !tbaa !206 +.lr.ph321.i: ; preds = %.loopexit263.i..lr.ph321.i_crit_edge, %.loopexit263.loopexit.i + %289 = phi ptr [ %.pre109, %.loopexit263.i..lr.ph321.i_crit_edge ], [ %202, %.loopexit263.thread.i ] + %290 = phi ptr [ %.pre108, %.loopexit263.i..lr.ph321.i_crit_edge ], [ %264, %.loopexit263.thread.i ] + %291 = phi ptr [ %.pre106, %.loopexit263.i..lr.ph321.i_crit_edge ], [ %265, %.loopexit263.thread.i ] %292 = getelementptr inbounds nuw i8, ptr %0, i64 1928 %293 = load ptr, ptr %292, align 8, !tbaa !207 - %294 = load ptr, ptr %58, align 8, !tbaa !209 br label %295 295: ; preds = %333, %.lr.ph321.i %indvars.iv356.i = phi i64 [ 0, %.lr.ph321.i ], [ %indvars.iv.next357.i, %333 ] - %296 = getelementptr inbounds nuw double, ptr %289, i64 %indvars.iv356.i + %296 = getelementptr inbounds nuw double, ptr %292, i64 %indvars.iv356.i %297 = load double, ptr %296, align 8, !tbaa !87 %298 = getelementptr inbounds nuw double, ptr %291, i64 %indvars.iv356.i store double %297, ptr %298, align 8, !tbaa !87 %299 = getelementptr inbounds nuw i32, ptr %293, i64 %indvars.iv356.i store i32 0, ptr %299, align 4, !tbaa !85 - %300 = getelementptr inbounds nuw i32, ptr %294, i64 %indvars.iv356.i + %300 = getelementptr inbounds nuw i32, ptr %290, i64 %indvars.iv356.i %301 = load i32, ptr %300, align 4, !tbaa !85 %.not255.i = icmp eq i32 %301, 0 br i1 %.not255.i, label %333, label %302 @@ -9404,8 +9409,8 @@ IDARootfind.exit: ; preds = %333, %145, %._crit_ ._crit_edge79: ; preds = %368, %._crit_edge br i1 %338, label %IDARootfind.exit.thread, label %372 -372: ; preds = %._crit_edge.thread.thread112, %._crit_edge.thread, %._crit_edge79 - %373 = phi ptr [ %357, %._crit_edge.thread ], [ %360, %._crit_edge79 ], [ %285, %._crit_edge.thread.thread112 ] +372: ; preds = %._crit_edge.thread.thread116, %._crit_edge.thread, %._crit_edge79 + %373 = phi ptr [ %357, %._crit_edge.thread ], [ %360, %._crit_edge79 ], [ %286, %._crit_edge.thread.thread116 ] %374 = load double, ptr %373, align 8, !tbaa !257 %375 = load ptr, ptr %21, align 8, !tbaa !210 %376 = load ptr, ptr %23, align 8, !tbaa !211 diff --git a/bench/tinympc/optimized/tiny_api.ll b/bench/tinympc/optimized/tiny_api.ll index 80e82a98234..c1396387b21 100644 --- a/bench/tinympc/optimized/tiny_api.ll +++ b/bench/tinympc/optimized/tiny_api.ll @@ -15024,15 +15024,18 @@ _ZN5Eigen9DenseBaseINS_5BlockINS_3RefINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi0E store i32 %137, ptr %135, align 4 %138 = add nsw i64 %.052209, 1 %exitcond.not = icmp eq i64 %138, %60 - br i1 %exitcond.not, label %._crit_edge, label %_ZN5Eigen9DenseBaseINS_5BlockINS_3RefINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi0ENS_11OuterStrideILin1EEEEELi1ELin1ELb0EEEE4swapIS8_EEvRKNS0_IT_EE.exit, !llvm.loop !435 + br i1 %exitcond.not, label %._crit_edge.thread222, label %_ZN5Eigen9DenseBaseINS_5BlockINS_3RefINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi0ENS_11OuterStrideILin1EEEEELi1ELin1ELb0EEEE4swapIS8_EEvRKNS0_IT_EE.exit, !llvm.loop !435 -._crit_edge: ; preds = %_ZN5Eigen9DenseBaseINS_5BlockINS_3RefINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi0ENS_11OuterStrideILin1EEEEELi1ELin1ELb0EEEE4swapIS8_EEvRKNS0_IT_EE.exit, %_ZN5Eigen9DenseBaseINS_5BlockINS_3RefINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi0ENS_11OuterStrideILin1EEEEELi1ELin1ELb0EEEE4swapIS8_EEvRKNS0_IT_EE.exit.loopexit.us +._crit_edge: ; preds = %_ZN5Eigen9DenseBaseINS_5BlockINS_3RefINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi0ENS_11OuterStrideILin1EEEEELi1ELin1ELb0EEEE4swapIS8_EEvRKNS0_IT_EE.exit.loopexit.us + br i1 %93, label %173, label %.lr.ph211 + +._crit_edge.thread222: ; preds = %_ZN5Eigen9DenseBaseINS_5BlockINS_3RefINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi0ENS_11OuterStrideILin1EEEEELi1ELin1ELb0EEEE4swapIS8_EEvRKNS0_IT_EE.exit br i1 %93, label %173, label %.lr.ph211 ._crit_edge.thread: ; preds = %_ZN5Eigen9DenseBaseINS_3RefINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi0ENS_11OuterStrideILin1EEEEEE5blockIllEENS7_13FixedBlockXprIXsr8internal15get_fixed_valueIT_EE5valueEXsr8internal15get_fixed_valueIT0_EE5valueEE4TypeEllSA_SB_.exit br i1 %93, label %173, label %._crit_edge212 -.lr.ph211: ; preds = %._crit_edge +.lr.ph211: ; preds = %._crit_edge, %._crit_edge.thread222 %.not.i.i.i.i92 = icmp eq ptr %74, null %139 = icmp sgt i64 %61, 0 br i1 %139, label %.lr.ph.i.i.i.i.i.i94.preheader.us, label %._crit_edge212 @@ -15128,7 +15131,7 @@ _ZN5Eigen7NoAliasINS_3RefINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi0ENS_11OuterSt call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) br label %173 -173: ; preds = %._crit_edge.thread, %._crit_edge, %_ZN5Eigen7NoAliasINS_3RefINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi0ENS_11OuterStrideILin1EEEEENS_10MatrixBaseEEmIINS_7ProductIS6_S6_Li0EEEEERS6_RKNS7_IT_EE.exit +173: ; preds = %._crit_edge.thread222, %._crit_edge.thread, %._crit_edge, %_ZN5Eigen7NoAliasINS_3RefINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi0ENS_11OuterStrideILin1EEEEENS_10MatrixBaseEEmIINS_7ProductIS6_S6_Li0EEEEERS6_RKNS7_IT_EE.exit %174 = add nsw i64 %.sroa.speculated184, %storemerge213 %175 = icmp slt i64 %174, %.sroa.speculated189 br i1 %175, label %_ZN5Eigen9DenseBaseINS_3RefINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEELi0ENS_11OuterStrideILin1EEEEEE5blockIllEENS7_13FixedBlockXprIXsr8internal15get_fixed_valueIT_EE5valueEXsr8internal15get_fixed_valueIT0_EE5valueEE4TypeEllSA_SB_.exit, label %.loopexit, !llvm.loop !437 diff --git a/bench/tokenizers-rs/optimized/40hmx6rev8evi2bx.ll b/bench/tokenizers-rs/optimized/40hmx6rev8evi2bx.ll index a41d86dffbb..146c2d6c36d 100644 --- a/bench/tokenizers-rs/optimized/40hmx6rev8evi2bx.ll +++ b/bench/tokenizers-rs/optimized/40hmx6rev8evi2bx.ll @@ -21344,11 +21344,10 @@ define noundef zeroext i1 @_ZN10tokenizers5utils11parallelism15get_parallelism17 .loopexit: ; preds = %.lr.ph.i switch i64 %.val34, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5b546449e10d9f38E.exit59" [ - i64 0, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5b546449e10d9f38E.exit" + i64 2, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5b546449e10d9f38E.exit51" i64 3, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5b546449e10d9f38E.exit39" i64 5, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5b546449e10d9f38E.exit43" i64 1, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5b546449e10d9f38E.exit47" - i64 2, label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5b546449e10d9f38E.exit51" ] "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5b546449e10d9f38E.exit39": ; preds = %.loopexit @@ -21385,8 +21384,8 @@ define noundef zeroext i1 @_ZN10tokenizers5utils11parallelism15get_parallelism17 %.0.i57 = phi i1 [ %24, %23 ], [ true, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5b546449e10d9f38E.exit51" ], [ true, %.loopexit ], [ true, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5b546449e10d9f38E.exit43" ], [ true, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5b546449e10d9f38E.exit39" ] br label %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5b546449e10d9f38E.exit" -"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5b546449e10d9f38E.exit": ; preds = %6, %.loopexit, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5b546449e10d9f38E.exit39", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5b546449e10d9f38E.exit43", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5b546449e10d9f38E.exit47", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5b546449e10d9f38E.exit51", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5b546449e10d9f38E.exit51.thread.thread", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5b546449e10d9f38E.exit59" - %.029 = phi i1 [ %.0.i57, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5b546449e10d9f38E.exit59" ], [ false, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5b546449e10d9f38E.exit51.thread.thread" ], [ false, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5b546449e10d9f38E.exit51" ], [ false, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5b546449e10d9f38E.exit47" ], [ false, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5b546449e10d9f38E.exit43" ], [ false, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5b546449e10d9f38E.exit39" ], [ false, %.loopexit ], [ false, %6 ] +"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5b546449e10d9f38E.exit": ; preds = %6, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5b546449e10d9f38E.exit39", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5b546449e10d9f38E.exit43", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5b546449e10d9f38E.exit47", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5b546449e10d9f38E.exit51", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5b546449e10d9f38E.exit51.thread.thread", %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5b546449e10d9f38E.exit59" + %.029 = phi i1 [ %.0.i57, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5b546449e10d9f38E.exit59" ], [ false, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5b546449e10d9f38E.exit51.thread.thread" ], [ false, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5b546449e10d9f38E.exit51" ], [ false, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5b546449e10d9f38E.exit47" ], [ false, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5b546449e10d9f38E.exit43" ], [ false, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h5b546449e10d9f38E.exit39" ], [ false, %6 ] call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %2), !noalias !4892 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h0e0810e893c56cabE.llvm.1287153784043347726"(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %3) to label %.noexc unwind label %34 diff --git a/bench/tokenizers-rs/optimized/5e69nv5s2wu1vtyr.ll b/bench/tokenizers-rs/optimized/5e69nv5s2wu1vtyr.ll index 616dbcb3a26..f9fa188d9b3 100644 --- a/bench/tokenizers-rs/optimized/5e69nv5s2wu1vtyr.ll +++ b/bench/tokenizers-rs/optimized/5e69nv5s2wu1vtyr.ll @@ -3803,15 +3803,13 @@ define internal fastcc void @"_ZN5alloc11collections5btree4node212Handle$LT$allo %not..i.i = xor i1 %63, true %64 = zext i1 %not..i.i to i64 %spec.select8.i.i = add nuw nsw i64 %.sroa.0.011.i.i, %64 - %65 = icmp samesign ult i64 %.sroa.0.011.i.i, 12 - tail call void @llvm.assume(i1 %65) - %66 = getelementptr inbounds nuw ptr, ptr %51, i64 %.sroa.0.011.i.i - %67 = load ptr, ptr %66, align 8, !alias.scope !554, !noalias !557, !nonnull !4, !noundef !4 - %68 = getelementptr inbounds nuw i8, ptr %67, i64 352 - store ptr %9, ptr %68, align 8, !noalias !564 - %69 = trunc nuw nsw i64 %.sroa.0.011.i.i to i16 - %70 = getelementptr inbounds nuw i8, ptr %67, i64 624 - store i16 %69, ptr %70, align 8, !noalias !565 + %65 = getelementptr inbounds nuw ptr, ptr %51, i64 %.sroa.0.011.i.i + %66 = load ptr, ptr %65, align 8, !alias.scope !554, !noalias !557, !nonnull !4, !noundef !4 + %66 = getelementptr inbounds nuw i8, ptr %66, i64 352 + store ptr %9, ptr %66, align 8, !noalias !564 + %68 = trunc nuw nsw i64 %.sroa.0.011.i.i to i16 + %69 = getelementptr inbounds nuw i8, ptr %66, i64 624 + store i16 %68, ptr %69, align 8, !noalias !565 %.not.i.i.i.i = icmp samesign ugt i64 %spec.select8.i.i, %50 %or.cond.i.i = select i1 %63, i1 true, i1 %.not.i.i.i.i br i1 %or.cond.i.i, label %71, label %62 diff --git a/bench/tokio-rs/optimized/1rl1r5ea6bzd5c9z.ll b/bench/tokio-rs/optimized/1rl1r5ea6bzd5c9z.ll index dc4781bca8d..2fcf78a1f39 100644 --- a/bench/tokio-rs/optimized/1rl1r5ea6bzd5c9z.ll +++ b/bench/tokio-rs/optimized/1rl1r5ea6bzd5c9z.ll @@ -7351,40 +7351,28 @@ _ZN5tokio7runtime4time5wheel5level10slot_range17hc43b05a78e71c0f5E.llvm.55429615 %28 = tail call i64 @llvm.fshr.i64(i64 %5, i64 %5, i64 %27) %29 = tail call range(i64 0, 65) i64 @llvm.cttz.i64(i64 %28, i1 true) %30 = add i64 %29, %27 - switch i32 %10, label %.lr.ph.i.i.i8 [ - i32 0, label %_ZN5tokio7runtime4time5wheel5level10slot_range17hc43b05a78e71c0f5E.llvm.5542961546488995764.exit - i32 1, label %_ZN5tokio7runtime4time5wheel5level11level_range17h7d675a0dfbae8bfdE.llvm.5542961546488995764.exit.thread20 - ] - -_ZN5tokio7runtime4time5wheel5level11level_range17h7d675a0dfbae8bfdE.llvm.5542961546488995764.exit.thread20: ; preds = %26 - br label %_ZN5tokio7runtime4time5wheel5level10slot_range17hc43b05a78e71c0f5E.llvm.5542961546488995764.exit - -.lr.ph.i.i.i8: ; preds = %26, %.lr.ph.i.i.i8 - %.017.i.i.i9 = phi i32 [ %33, %.lr.ph.i.i.i8 ], [ %10, %26 ] - %.01216.i.i.i10 = phi i64 [ %34, %.lr.ph.i.i.i8 ], [ 64, %26 ] - %.01315.i.i.i11 = phi i64 [ %spec.select.i.i.i13, %.lr.ph.i.i.i8 ], [ 1, %26 ] - %31 = and i32 %.017.i.i.i9, 1 - %.not.i.i.i12 = icmp eq i32 %31, 0 - %32 = select i1 %.not.i.i.i12, i64 1, i64 %.01216.i.i.i10 - %spec.select.i.i.i13 = mul i64 %32, %.01315.i.i.i11 - %33 = lshr i32 %.017.i.i.i9, 1 - %34 = mul i64 %.01216.i.i.i10, %.01216.i.i.i10 - %35 = icmp ugt i32 %.017.i.i.i9, 3 - br i1 %35, label %.lr.ph.i.i.i8, label %_ZN5tokio7runtime4time5wheel5level11level_range17h7d675a0dfbae8bfdE.llvm.5542961546488995764.exit + br label %.lr.ph.i.i.i8 + +.lr.ph.i.i.i8:; preds = %26, %.lr.ph.i.i.i8 + %.017.i.i.i9 = phi i32 [ %32, %.lr.ph.i.i.i8 ], [ %10, %26 ] + %.01216.i.i.i10 = phi i64 [ %33, %.lr.ph.i.i.i8 ], [ 64, %.lr.ph.i.i.i8.preheader ] + %.01315.i.i.i11 = phi i64 [ %.017.i.i.i9, %.lr.ph.i.i.i8 ], [ 1, %26 ] + %30 = and i32 %.017.i.i.i9, 1 + %.not.i.i.i12 = icmp eq i32 %30, 0 + %31 = select i1 %.not.i.i.i12, i64 1, i64 %.01216.i.i.i10 + %.017.i.i.i9 = mul i64 %31, %.01315.i.i.i11 + %.01216.i.i.i10 = lshr i32 %.017.i.i.i9, 1 + %.01315.i.i.i11 = mul i64 %.01216.i.i.i10, %.01216.i.i.i10 + %31 = icmp ugt i32 %.017.i.i.i9, 3 + br i1 %34, label %.lr.ph.i.i.i8, label %_ZN5tokio7runtime4time5wheel5level11level_range17h7d675a0dfbae8bfdE.llvm.5542961546488995764.exit _ZN5tokio7runtime4time5wheel5level11level_range17h7d675a0dfbae8bfdE.llvm.5542961546488995764.exit: ; preds = %.lr.ph.i.i.i8 - %36 = shl i64 %34, 6 - %37 = mul i64 %spec.select.i.i.i13, %36 - switch i32 %10, label %.lr.ph.i.i [ - i32 0, label %_ZN5tokio7runtime4time5wheel5level10slot_range17hc43b05a78e71c0f5E.llvm.5542961546488995764.exit - i32 1, label %._crit_edge.i.i - ] + %36 = shl i64 %33, 6 + br label %.lr.ph.i.i ._crit_edge.i.loopexit.i: ; preds = %.lr.ph.i.i - %38 = mul i64 %spec.select.i.i, %42 - br label %_ZN5tokio7runtime4time5wheel5level10slot_range17hc43b05a78e71c0f5E.llvm.5542961546488995764.exit - -._crit_edge.i.i: ; preds = %_ZN5tokio7runtime4time5wheel5level11level_range17h7d675a0dfbae8bfdE.llvm.5542961546488995764.exit + %38 = mul i64 %35, %spec.select.i.i.i13 + %37 = mul i64 %spec.select.i.i, %41 br label %_ZN5tokio7runtime4time5wheel5level10slot_range17hc43b05a78e71c0f5E.llvm.5542961546488995764.exit .lr.ph.i.i: ; preds = %_ZN5tokio7runtime4time5wheel5level11level_range17h7d675a0dfbae8bfdE.llvm.5542961546488995764.exit, %.lr.ph.i.i @@ -7400,10 +7388,10 @@ _ZN5tokio7runtime4time5wheel5level11level_range17h7d675a0dfbae8bfdE.llvm.5542961 %43 = icmp ugt i32 %.017.i.i, 3 br i1 %43, label %.lr.ph.i.i, label %._crit_edge.i.loopexit.i -_ZN5tokio7runtime4time5wheel5level10slot_range17hc43b05a78e71c0f5E.llvm.5542961546488995764.exit: ; preds = %.thread28, %.thread, %26, %_ZN5tokio7runtime4time5wheel5level11level_range17h7d675a0dfbae8bfdE.llvm.5542961546488995764.exit.thread20, %_ZN5tokio7runtime4time5wheel5level11level_range17h7d675a0dfbae8bfdE.llvm.5542961546488995764.exit, %._crit_edge.i.loopexit.i, %._crit_edge.i.i - %.in = phi i64 [ %30, %_ZN5tokio7runtime4time5wheel5level11level_range17h7d675a0dfbae8bfdE.llvm.5542961546488995764.exit ], [ %30, %._crit_edge.i.loopexit.i ], [ %30, %._crit_edge.i.i ], [ %30, %26 ], [ %13, %.thread ], [ %17, %.thread28 ], [ %30, %_ZN5tokio7runtime4time5wheel5level11level_range17h7d675a0dfbae8bfdE.llvm.5542961546488995764.exit.thread20 ] - %.011.i.i.i19 = phi i64 [ %37, %_ZN5tokio7runtime4time5wheel5level11level_range17h7d675a0dfbae8bfdE.llvm.5542961546488995764.exit ], [ %37, %._crit_edge.i.loopexit.i ], [ %37, %._crit_edge.i.i ], [ 64, %26 ], [ 64, %.thread ], [ 4096, %.thread28 ], [ 4096, %_ZN5tokio7runtime4time5wheel5level11level_range17h7d675a0dfbae8bfdE.llvm.5542961546488995764.exit.thread20 ] - %.011.i.i = phi i64 [ 1, %_ZN5tokio7runtime4time5wheel5level11level_range17h7d675a0dfbae8bfdE.llvm.5542961546488995764.exit ], [ %38, %._crit_edge.i.loopexit.i ], [ 64, %._crit_edge.i.i ], [ 1, %26 ], [ 1, %.thread ], [ 64, %.thread28 ], [ 64, %_ZN5tokio7runtime4time5wheel5level11level_range17h7d675a0dfbae8bfdE.llvm.5542961546488995764.exit.thread20 ] +_ZN5tokio7runtime4time5wheel5level10slot_range17hc43b05a78e71c0f5E.llvm.5542961546488995764.exit: ; preds = %.thread28, %.thread, %._crit_edge.i.loopexit.i + %.in = phi i64 [ %30, %._crit_edge.i.loopexit.i ], [ %13, %.thread ], [ %17, %.thread28 ] + %.011.i.i.i19 = phi i64 [ %36, %._crit_edge.i.loopexit.i ], [ 64, %.thread ], [ 4096, %.thread28 ] + %.011.i.i = phi i64 [ %37, %._crit_edge.i.loopexit.i ], [ 1, %.thread ], [ 64, %.thread28 ] %44 = and i64 %.in, 63 %45 = sub i64 0, %.011.i.i.i19 %46 = and i64 %2, %45 diff --git a/bench/tree-sitter-rs/optimized/22d6a9i5y5n3b962.ll b/bench/tree-sitter-rs/optimized/22d6a9i5y5n3b962.ll index ef2371262ec..a13fe8c8cf2 100644 --- a/bench/tree-sitter-rs/optimized/22d6a9i5y5n3b962.ll +++ b/bench/tree-sitter-rs/optimized/22d6a9i5y5n3b962.ll @@ -1200,7 +1200,7 @@ _ZN4core5slice4sort20provide_sorted_batch17hdc946adb8591f21dE.exit: ; preds = %. ._crit_edge: ; preds = %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$6remove17h81aa1d1501b9cae2E.exit", %138, %139, %146, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$4push17h8ea37e2e752addfeE.exit" %.pre.i147 = phi ptr [ %.pre.i148, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$4push17h8ea37e2e752addfeE.exit" ], [ %.pre151, %146 ], [ %.pre151, %139 ], [ %.pre151, %138 ], [ %.pre151, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$6remove17h81aa1d1501b9cae2E.exit" ] - %156 = phi i64 [ %124, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$4push17h8ea37e2e752addfeE.exit" ], [ %127, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$6remove17h81aa1d1501b9cae2E.exit" ], [ 2, %138 ], [ %126, %139 ], [ %126, %146 ] + %156 = phi i64 [ %124, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$4push17h8ea37e2e752addfeE.exit" ], [ 1, %"_ZN4core5slice4sort10merge_sort37RunVec$LT$RunAllocF$C$RunDeallocF$GT$6remove17h81aa1d1501b9cae2E.exit" ], [ 2, %138 ], [ 3, %139 ], [ %126, %146 ] %157 = icmp ult i64 %.0.i, %1 br i1 %157, label %40, label %28 @@ -21279,13 +21279,8 @@ common.resume: ; preds = %287, %225 %285 = add nuw i64 %.022.lcssa.i.us, 1 br label %.outer.i.us -.split: ; preds = %252 - %.not288 = icmp ne i64 %254, 0 - call void @llvm.assume(i1 %.not288) - br label %.lr.ph.split.invoke.i - -.lr.ph.split.invoke.i: ; preds = %"_ZN15tree_sitter_cli8generate12build_tables17report_state_info28_$u7b$$u7b$closure$u7d$$u7d$17h49d3da3578c682bcE.exit.i.us.i60.us", %"_ZN15tree_sitter_cli8generate12build_tables17report_state_info28_$u7b$$u7b$closure$u7d$$u7d$17h49d3da3578c682bcE.exit.i43.i.us.us", %.split - %286 = phi i64 [ %255, %.split ], [ %.val36.i.us.us, %"_ZN15tree_sitter_cli8generate12build_tables17report_state_info28_$u7b$$u7b$closure$u7d$$u7d$17h49d3da3578c682bcE.exit.i43.i.us.us" ], [ %.val39.us.i.us, %"_ZN15tree_sitter_cli8generate12build_tables17report_state_info28_$u7b$$u7b$closure$u7d$$u7d$17h49d3da3578c682bcE.exit.i.us.i60.us" ] +.split: ; preds = %252, %"_ZN15tree_sitter_cli8generate12build_tables17report_state_info28_$u7b$$u7b$closure$u7d$$u7d$17h49d3da3578c682bcE.exit.i.us.i60.us", %"_ZN15tree_sitter_cli8generate12build_tables17report_state_info28_$u7b$$u7b$closure$u7d$$u7d$17h49d3da3578c682bcE.exit.i43.i.us.us" + %.not288 = phi i64 [ %.val36.i.us.us, %"_ZN15tree_sitter_cli8generate12build_tables17report_state_info28_$u7b$$u7b$closure$u7d$$u7d$17h49d3da3578c682bcE.exit.i43.i.us.us" ], [ %.val39.us.i.us, %"_ZN15tree_sitter_cli8generate12build_tables17report_state_info28_$u7b$$u7b$closure$u7d$$u7d$17h49d3da3578c682bcE.exit.i.us.i60.us" ], [ %255, %252 ] invoke void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %286, i64 noundef %.val1.i.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.c13ca020c8cd2aed047f2b2cb7b89f8e.81) #17 to label %.lr.ph.split.cont.i unwind label %287, !noalias !4302 diff --git a/bench/typst-rs/optimized/2i78fvbm4wocuesi.ll b/bench/typst-rs/optimized/2i78fvbm4wocuesi.ll index 1e862cc98b3..961bf76adfa 100644 --- a/bench/typst-rs/optimized/2i78fvbm4wocuesi.ll +++ b/bench/typst-rs/optimized/2i78fvbm4wocuesi.ll @@ -32049,7 +32049,7 @@ define internal fastcc noundef zeroext i1 @"_ZN55_$LT$$RF$str$u20$as$u20$core..s .preheader.i: ; preds = %48, %64 %.sroa.025.0135.i = phi i64 [ %60, %64 ], [ 0, %48 ] - %.2134.i = phi i8 [ %.3.i, %64 ], [ %.064136.i, %48 ] + %.2134.i = phi i8 [ %.3.i, %64 ], [ 0, %48 ] %60 = add nuw nsw i64 %.sroa.025.0135.i, 1 %61 = getelementptr inbounds nuw [4 x i16], ptr %6, i64 0, i64 %.sroa.025.0135.i %62 = load i16, ptr %61, align 2, !noalias !7109, !noundef !4 @@ -54525,7 +545{"code":"internal","msg":"git-diff-tree: context deadline exceeded","meta":{"cause":"*fmt.wrapError"}}