diff --git a/bench/abc/optimized/giaDup.ll b/bench/abc/optimized/giaDup.ll index 36ca6361a47..8f8f1fe3324 100644 --- a/bench/abc/optimized/giaDup.ll +++ b/bench/abc/optimized/giaDup.ll @@ -34133,10 +34133,8 @@ Abc_UtilStrsav.exit84: ; preds = %Abc_UtilStrsav.exit %89 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val75, i64 %88 %90 = load i64, ptr %89, align 4 %91 = and i64 %90, 536870911 - %92 = sub nsw i64 0, %91 - %93 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %89, i64 %92 - %94 = icmp eq ptr %93, %.val75 - br i1 %94, label %95, label %101 + %92 = icmp eq i64 %91, %88 + br i1 %92, label %93, label %99 95: ; preds = %.critedge2 %96 = tail call fastcc i32 @Gia_ManAppendCo(ptr noundef nonnull %23, i32 noundef 0) @@ -34157,7 +34155,7 @@ Abc_UtilStrsav.exit84: ; preds = %Abc_UtilStrsav.exit br label %.lr.ph96 .lr.ph96: ; preds = %.lr.ph96.preheader, %103 - %indvars.iv102 = phi i64 [ 0, %.lr.ph96.preheader ], [ %indvars.iv.next103, %103 ] + %indvars.iv102 = phi i64 [ 0, %.lr.ph97.preheader ], [ %indvars.iv.next103, %101 ] %.val70 = load ptr, ptr %40, align 8, !tbaa !12 %.not62 = icmp eq ptr %.val70, null br i1 %.not62, label %.critedge4, label %103 diff --git a/bench/abc/optimized/giaTransduction.ll b/bench/abc/optimized/giaTransduction.ll index c488bc6c0d6..fded65d732e 100644 --- a/bench/abc/optimized/giaTransduction.ll +++ b/bench/abc/optimized/giaTransduction.ll @@ -16978,11 +16978,13 @@ _ZSt13copy_backwardISt13_Bit_iteratorS0_ET0_T_S2_S1_.exit: ; preds = %_ZNSt14_Bi %61 = getelementptr inbounds i64, ptr %1, i64 %60 %62 = and i64 %59, -9223372036854775745 %63 = icmp ugt i64 %62, -9223372036854775808 + %storemerge.idx.i.i.i75.neg = select i1 %63, i64 8, i64 0 %storemerge.idx.i.i.i75 = select i1 %63, i64 -8, i64 0 %storemerge.i.i.i76 = getelementptr inbounds i8, ptr %61, i64 %storemerge.idx.i.i.i75 %64 = trunc i64 %59 to i32 %65 = and i32 %64, 63 - %.not.i.i.i = icmp eq ptr %1, %storemerge.i.i.i76 + %.idx = shl nsw i64 %60, 3 + %.not.i.i.i = icmp eq i64 %.idx, %storemerge.idx.i.i.i75.neg br i1 %.not.i.i.i, label %91, label %66 66: ; preds = %_ZSt13copy_backwardISt13_Bit_iteratorS0_ET0_T_S2_S1_.exit @@ -17175,11 +17177,13 @@ _ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterato %154 = getelementptr inbounds i64, ptr %.sroa.03.0.lcssa.i.i.i.i.i.i, i64 %153 %155 = and i64 %152, -9223372036854775745 %156 = icmp ugt i64 %155, -9223372036854775808 + %storemerge.idx.i.i.i85.neg = select i1 %156, i64 8, i64 0 %storemerge.idx.i.i.i85 = select i1 %156, i64 -8, i64 0 %storemerge.i.i.i86 = getelementptr inbounds i8, ptr %154, i64 %storemerge.idx.i.i.i85 %157 = trunc i64 %152 to i32 %158 = and i32 %157, 63 - %.not.i.i.i89 = icmp eq ptr %.sroa.03.0.lcssa.i.i.i.i.i.i, %storemerge.i.i.i86 + %.idx158 = shl nsw i64 %153, 3 + %.not.i.i.i89 = icmp eq i64 %.idx158, %storemerge.idx.i.i.i85.neg br i1 %.not.i.i.i89, label %185, label %159 159: ; preds = %_ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator.exit diff --git a/bench/abc/optimized/ifDsd.ll b/bench/abc/optimized/ifDsd.ll index bdc97a3641a..0de8b0f954d 100644 --- a/bench/abc/optimized/ifDsd.ll +++ b/bench/abc/optimized/ifDsd.ll @@ -2450,11 +2450,12 @@ Vec_IntStart.exit: ; preds = %14, %Vec_IntAlloc.e %31 = add nsw i32 %.mux62, -6 %32 = shl nuw i32 1, %31 %33 = select i1 %30, i32 1, i32 %32 - %34 = sext i32 %33 to i64 + %.not22.i = icmp slt i32 %33, 1 %35 = add nsw i32 %.mux62, -2 %notmask.i = shl nsw i32 -1, %35 %36 = xor i32 %notmask.i, -1 - %37 = zext nneg i32 %36 to i64 + %37 = zext nneg i32 %33 to i64 + %37 = zext nneg i32 %35 to i64 %38 = select i1 %.mux, i64 15, i64 %37 br label %39 @@ -2542,13 +2543,15 @@ If_DsdObjTruthId.exit47: ; preds = %If_DsdObjTruthId.ex %87 = mul nsw i32 %86, %83 %88 = sext i32 %87 to i64 %89 = getelementptr inbounds i64, ptr %82, i64 %88 - %90 = getelementptr inbounds i64, ptr %89, i64 %34 + br i1 %.not22.i, label %Abc_TtPrintHexRev.exit, label %72 + +.lr.ph.us.preheader.i: ; preds = %.thread55 + %90 = getelementptr inbounds nuw i64, ptr %89, i64 %36 %.021.i = getelementptr inbounds i8, ptr %90, i64 -8 - %.not22.i = icmp ult ptr %.021.i, %89 - br i1 %.not22.i, label %Abc_TtPrintHexRev.exit, label %.lr.ph.us.i + br label %.lr.ph.us.i -.lr.ph.us.i: ; preds = %.thread55, %..loopexit_crit_edge.us.i - %.023.us.i = phi ptr [ %.0.us.i, %..loopexit_crit_edge.us.i ], [ %.021.i, %.thread55 ] +.lr.ph.us.i: ; preds = %..loopexit_crit_edge.us.i, %72 + %.023.us.i = phi ptr [ %.0.us.i, %..loopexit_crit_edge.us.i ], [ %.021.i, %.lr.ph.us.preheader.i ] br label %91 91: ; preds = %91, %.lr.ph.us.i @@ -2744,17 +2747,17 @@ If_DsdManComputeTruthPtr.exit: ; preds = %.lr.ph18.i.i, %26, %61 = add nsw i32 %59, -6 %62 = shl nuw i32 1, %61 %63 = select i1 %60, i32 1, i32 %62 - %64 = sext i32 %63 to i64 - %65 = getelementptr inbounds i64, ptr %25, i64 %64 - %.021.i = getelementptr inbounds i8, ptr %65, i64 -8 - %.not22.i = icmp ult ptr %.021.i, %25 + %.not22.i = icmp slt i32 %63, 1 br i1 %.not22.i, label %Abc_TtPrintHexRev.exit, label %.lr.ph.us.preheader.i .lr.ph.us.preheader.i: ; preds = %.thread %66 = add nsw i32 %59, -2 %notmask.i = shl nsw i32 -1, %66 %67 = xor i32 %notmask.i, -1 - %68 = zext nneg i32 %67 to i64 + %68 = zext nneg i32 %63 to i64 + %67 = getelementptr inbounds nuw i64, ptr %25, i64 %66 + %.021.i = getelementptr inbounds i8, ptr %67, i64 -8 + %68 = zext nneg i32 %65 to i64 %69 = select i1 %58, i64 15, i64 %68 br label %.lr.ph.us.i @@ -2993,38 +2996,34 @@ If_DsdObjTruth.exit: ; preds = %33, %40 %59 = mul nsw i32 %58, %55 %60 = sext i32 %59 to i64 %61 = getelementptr inbounds i64, ptr %54, i64 %60 - %62 = icmp ugt i32 %.val43, 805306367 - %63 = add nsw i32 %35, -2 - %64 = icmp ult i32 %.val43, 268435456 - br i1 %64, label %65, label %72 - -65: ; preds = %If_DsdObjTruth.exit - %66 = load i64, ptr %61, align 8, !tbaa !51 - %67 = trunc i64 %66 to i32 - %68 = and i32 %67, 15 - %69 = icmp samesign ult i32 %68, 10 - %70 = or disjoint i32 %68, 48 - %71 = add nuw nsw i32 %68, 55 - %.0.i.i = select i1 %69, i32 %70, i32 %71 + %62 = icmp ult i32 %.val43, 268435456 + br i1 %62, label %63, label %72 + +63:; preds = %If_DsdObjTruth.exit + %64 = load i64, ptr %61, align 8, !tbaa !51 + %65 = trunc i64 %64 to i32 + %66 = and i32 %65, 15 + %67 = icmp samesign ult i32 %66, 10 + %68 = or disjoint i32 %66, 48 + %69 = add nuw nsw i32 %68, 55 + %.0.i.i = select i1 %67, i32 %68, i32 %69 %fputc17.i = tail call i32 @fputc(i32 %.0.i.i, ptr %0) br label %Abc_TtPrintHexRev.exit 72: ; preds = %If_DsdObjTruth.exit - %73 = icmp ult i32 %.val43, 939524096 - %74 = add nsw i32 %35, -6 - %75 = shl nuw nsw i32 1, %74 - %76 = select i1 %73, i32 1, i32 %75 - %77 = zext nneg i32 %76 to i64 - %78 = getelementptr inbounds nuw i64, ptr %61, i64 %77 - %.021.i = getelementptr inbounds i8, ptr %78, i64 -8 - %.not22.i = icmp ult ptr %.021.i, %61 - br i1 %.not22.i, label %Abc_TtPrintHexRev.exit, label %.lr.ph.us.preheader.i - -.lr.ph.us.preheader.i: ; preds = %72 - %notmask.i = shl nsw i32 -1, %63 - %79 = xor i32 %notmask.i, -1 - %80 = select i1 %62, i32 15, i32 %79 - %81 = zext nneg i32 %80 to i64 + %70 = add nsw i32 %35, -2 + %71 = icmp ugt i32 %.val43, 805306367 + %72 = icmp ult i32 %.val43, 939524096 + %73 = add nsw i32 %35, -6 + %74 = shl nuw nsw i32 1, %73 + %75 = select i1 %72, i32 1, i32 %74 + %notmask.i = shl nsw i32 -1, %70 + %76 = xor i32 %notmask.i, -1 + %77 = select i1 %71, i32 15, i32 %76 + %78 = zext nneg i32 %75 to i64 + %79 = getelementptr inbounds nuw i64, ptr %61, i64 %78 + %.021.i = getelementptr inbounds i8, ptr %79, i64 -8 + %80 = zext nneg i32 %77 to i64 br label %.lr.ph.us.i .lr.ph.us.i: ; preds = %..loopexit_crit_edge.us.i, %.lr.ph.us.preheader.i @@ -3032,7 +3031,7 @@ If_DsdObjTruth.exit: ; preds = %33, %40 br label %82 82: ; preds = %82, %.lr.ph.us.i - %indvars.iv.i = phi i64 [ %81, %.lr.ph.us.i ], [ %indvars.iv.next.i, %82 ] + %indvars.iv.i = phi i64 [ %80, %.lr.ph.us.i ], [ %indvars.iv.next.i, %81 ] %83 = load i64, ptr %.023.us.i, align 8, !tbaa !51 %84 = shl i64 %indvars.iv.i, 2 %85 = and i64 %84, 4294967292 @@ -3053,7 +3052,7 @@ If_DsdObjTruth.exit: ; preds = %33, %40 %.not.us.i = icmp ult ptr %.0.us.i, %61 br i1 %.not.us.i, label %Abc_TtPrintHexRev.exit, label %.lr.ph.us.i, !llvm.loop !131 -Abc_TtPrintHexRev.exit: ; preds = %..loopexit_crit_edge.us.i, %5, %72, %65 +Abc_TtPrintHexRev.exit: ; preds = %..loopexit_crit_edge.us.i, %5, %63 %.val40 = load i32, ptr %13, align 4 %93 = and i32 %.val40, 7 %94 = zext nneg i32 %93 to i64 diff --git a/bench/abseil-cpp/optimized/container_test.ll b/bench/abseil-cpp/optimized/container_test.ll index 6cb3c65a687..f5ac2916b56 100644 --- a/bench/abseil-cpp/optimized/container_test.ll +++ b/bench/abseil-cpp/optimized/container_test.ll @@ -54488,7 +54488,7 @@ _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEES6_ET0_T_S8_S7_.ex 49: ; preds = %46 %50 = getelementptr inbounds i8, ptr %48, i64 -4 %51 = load i32, ptr %50, align 4, !tbaa !20 - %.not.i.i.i.i.i35 = icmp eq ptr %50, %.sroa.043.0 + %.not.i.i.i.i.i35 = icmp eq i64 %.0, 1 br i1 %.not.i.i.i.i.i35, label %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEES6_ET0_T_S8_S7_.exit, label %52 52: ; preds = %49 @@ -80444,7 +80444,7 @@ _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_17ElementESt6vectorIS3_S 95: ; preds = %92 %96 = getelementptr inbounds i8, ptr %94, i64 -8 %97 = load i64, ptr %96, align 4 - %.not.i.i.i.i.i59.i.i = icmp eq ptr %96, %.sroa.068.0.i.i + %.not.i.i.i.i.i59.i.i = icmp eq i64 %.0.i.i, 1 br i1 %.not.i.i.i.i.i59.i.i, label %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_17ElementESt6vectorIS3_SaIS3_EEEES8_ET0_T_SA_S9_.exit.i.i, label %98 98: ; preds = %95 @@ -81293,7 +81293,7 @@ _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_17ElementESt6vectorIS3_S 84: ; preds = %81 %85 = getelementptr inbounds i8, ptr %83, i64 -8 %86 = load i64, ptr %85, align 4 - %.not.i.i.i.i.i59.i.i = icmp eq ptr %85, %.sroa.068.0.i.i + %.not.i.i.i.i.i59.i.i = icmp eq i64 %.0.i.i, 1 br i1 %.not.i.i.i.i.i59.i.i, label %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_17ElementESt6vectorIS3_SaIS3_EEEES8_ET0_T_SA_S9_.exit.i.i, label %87 87: ; preds = %84 @@ -85068,7 +85068,7 @@ _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_17ElementESt6vectorIS3_S 95: ; preds = %92 %96 = getelementptr inbounds i8, ptr %94, i64 -8 %97 = load i64, ptr %96, align 4 - %.not.i.i.i.i.i59.i.i = icmp eq ptr %96, %.sroa.068.0.i.i + %.not.i.i.i.i.i59.i.i = icmp eq i64 %.0.i.i, 1 br i1 %.not.i.i.i.i.i59.i.i, label %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_17ElementESt6vectorIS3_SaIS3_EEEES8_ET0_T_SA_S9_.exit.i.i, label %98 98: ; preds = %95 @@ -115563,15 +115563,19 @@ _ZSt9__reverseIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEEvT_S7_St26ra %29 = icmp slt i32 %28, %27 br i1 %29, label %.preheader.i.i.i, label %38 -.preheader.i.i.i: ; preds = %_ZSt9__reverseIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEEvT_S7_St26random_access_iterator_tag.exit.i.i.i, %.preheader.i.i.i - %.sroa.0.0.i.i.i = phi ptr [ %30, %.preheader.i.i.i ], [ %25, %_ZSt9__reverseIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEEvT_S7_St26random_access_iterator_tag.exit.i.i.i ] +.preheader.i.i.i: ; preds = %_ZSt9__reverseIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEEvT_S7_St26random_access_iterator_tag.exit.i.i.i + %.ptr.i.i.i.le = getelementptr inbounds i8, ptr %25, i64 %.sroa.019.0.add.i.i.i + br label %.preheader.i.i.i + +.preheader.i.i.i: ; preds = %.preheader.i.i.i.preheader, %.preheader.i.i.i + %.sroa.0.0.i.i.i = phi ptr [ %30, %.preheader.i.i.i ], [ %25, %.preheader.i.i.i.preheader ] %30 = getelementptr inbounds i8, ptr %.sroa.0.0.i.i.i, i64 -4 %31 = load i32, ptr %30, align 4, !tbaa !20 %32 = icmp slt i32 %28, %31 br i1 %32, label %33, label %.preheader.i.i.i, !llvm.loop !325 33: ; preds = %.preheader.i.i.i - store i32 %31, ptr %.ptr.i.i.i, align 4, !tbaa !20 + store i32 %31, ptr %.ptr.i.i.i.le, align 4, !tbaa !20 store i32 %28, ptr %30, align 4, !tbaa !20 %.not.i.i.i = icmp eq i64 %.sroa.019.0.idx.i.i.i, -4 br i1 %.not.i.i.i, label %_ZN4absl18c_next_permutationISt6vectorIiSaIiEEEEbRT_.exit, label %.lr.ph.i.i.preheader.i.i @@ -115593,7 +115597,7 @@ _ZSt9__reverseIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEEvT_S7_St26ra br i1 %37, label %.lr.ph.i.i.i.i, label %_ZN4absl18c_next_permutationISt6vectorIiSaIiEEEEbRT_.exit, !llvm.loop !326 38: ; preds = %_ZSt9__reverseIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEEvT_S7_St26random_access_iterator_tag.exit.i.i.i - %39 = icmp eq ptr %.ptr.i.i.i, %22 + %39 = icmp eq i64 %.sroa.019.0.idx.i.i.i, -12 br i1 %39, label %.lr.ph.i14.i.i.i, label %_ZSt9__reverseIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEEvT_S7_St26random_access_iterator_tag.exit.i.i.i, !llvm.loop !327 .lr.ph.i14.i.i.i: ; preds = %38, %.lr.ph.i14.i.i.i diff --git a/bench/actix-rs/optimized/5k5ycrtlwwxldg7.ll b/bench/actix-rs/optimized/5k5ycrtlwwxldg7.ll index 538cb0ce08d..151bfe02bc0 100644 --- a/bench/actix-rs/optimized/5k5ycrtlwwxldg7.ll +++ b/bench/actix-rs/optimized/5k5ycrtlwwxldg7.ll @@ -3678,7 +3678,7 @@ define hidden { ptr, i64 } @"_ZN4core3str21_$LT$impl$u20$str$GT$16trim_end_match br i1 %11, label %.thread19.i.i, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h7aff83761f01b0f9E.exit19.i.i.i" "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h7aff83761f01b0f9E.exit19.i.i.i": ; preds = %8 - %12 = icmp ne ptr %0, %9 + %12 = icmp ne i64 %5, 1 tail call void @llvm.assume(i1 %12) %13 = getelementptr inbounds i8, ptr %6, i64 -2 %14 = load i8, ptr %13, align 1, !noalias !679, !noundef !9 @@ -3692,7 +3692,7 @@ define hidden { ptr, i64 } @"_ZN4core3str21_$LT$impl$u20$str$GT$16trim_end_match br label %"_ZN88_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..ReverseSearcher$GT$9next_back17h47afb88dabb9161fE.llvm.5350303487615222083.exit.i" "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h7aff83761f01b0f9E.exit21.i.i.i": ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h7aff83761f01b0f9E.exit19.i.i.i" - %19 = icmp ne ptr %0, %13 + %19 = icmp ne i64 %5, 2 tail call void @llvm.assume(i1 %19) %20 = getelementptr inbounds i8, ptr %6, i64 -3 %21 = load i8, ptr %20, align 1, !noalias !679, !noundef !9 @@ -3702,7 +3702,7 @@ define hidden { ptr, i64 } @"_ZN4core3str21_$LT$impl$u20$str$GT$16trim_end_match br i1 %24, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h7aff83761f01b0f9E.exit23.i.i.i", label %34 "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h7aff83761f01b0f9E.exit23.i.i.i": ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h7aff83761f01b0f9E.exit21.i.i.i" - %25 = icmp ne ptr %0, %20 + %25 = icmp ne i64 %5, 3 tail call void @llvm.assume(i1 %25) %26 = getelementptr inbounds i8, ptr %6, i64 -4 %27 = load i8, ptr %26, align 1, !noalias !679, !noundef !9 diff --git a/bench/assimp/optimized/BaseImporter.ll b/bench/assimp/optimized/BaseImporter.ll index aff3de0b3df..35a80028a79 100644 --- a/bench/assimp/optimized/BaseImporter.ll +++ b/bench/assimp/optimized/BaseImporter.ll @@ -3243,9 +3243,7 @@ _ZSt4copyIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEES6_ET0_T_S8_S7_.ex %50 = sub i64 %48, %49 %51 = lshr i64 %50, 2 %52 = getelementptr inbounds nuw i32, ptr %46, i64 %51 - %53 = getelementptr inbounds nuw i8, ptr %52, i64 4 - %.not7.i = icmp eq ptr %46, %53 - br i1 %.not7.i, label %_ZNSt6vectorIcSaIcEED2Ev.exit, label %.lr.ph.i + br label %.lr.ph.i .lr.ph.i: ; preds = %44, %.noexc48 %.sroa.04.09.i = phi ptr [ %62, %.noexc48 ], [ %2, %44 ] @@ -3291,7 +3289,7 @@ _ZN4utf88utf32to8ISt20back_insert_iteratorISt6vectorIcSaIcEEEPiEET_T0_S8_S7_.exi call void @_ZdlPvm(ptr noundef nonnull %.pre, i64 noundef %69) #28 br label %_ZNSt6vectorIcSaIcEED2Ev.exit -_ZNSt6vectorIcSaIcEED2Ev.exit: ; preds = %44, %_ZN4utf88utf32to8ISt20back_insert_iteratorISt6vectorIcSaIcEEEPiEET_T0_S8_S7_.exit, %64 +_ZNSt6vectorIcSaIcEED2Ev.exit: ; preds = %_ZN4utf88utf32to8ISt20back_insert_iteratorISt6vectorIcSaIcEEEPiEET_T0_S8_S7_.exit, %64 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) #27 br label %.loopexit58.thread diff --git a/bench/bdwgc/optimized/gc.ll b/bench/bdwgc/optimized/gc.ll index 7014bf83a13..039cf6831e8 100644 --- a/bench/bdwgc/optimized/gc.ll +++ b/bench/bdwgc/optimized/gc.ll @@ -11044,7 +11044,7 @@ GC_find_header.exit: ; preds = %7 %. = select i1 %25, i64 %19, i64 %21 %26 = getelementptr inbounds nuw i8, ptr %0, i64 %. %.020 = getelementptr inbounds i8, ptr %26, i64 -8 - %.not26 = icmp ult ptr %.020, %0 + %.not26 = icmp slt i64 %., 8 br i1 %.not26, label %._crit_edge, label %.lr.ph.preheader .lr.ph.preheader: ; preds = %GC_find_header.exit @@ -14443,7 +14443,8 @@ define internal fastcc ptr @GC_reclaim_generic(ptr noundef %0, ptr noundef %1, i %20 = getelementptr inbounds nuw i8, ptr %0, i64 4096 %21 = sub i64 0, %2 %22 = getelementptr inbounds i8, ptr %20, i64 %21 - %.not33.i = icmp ult ptr %22, %0 + %notsub.i = add i64 %2, -4097 + %.not33.i = icmp sgt i64 %notsub.i, -1 br i1 %.not33.i, label %GC_disclaim_and_reclaim.exit, label %.lr.ph.i .lr.ph.i: ; preds = %14 @@ -14560,7 +14561,8 @@ GC_clear_block.exit.i: ; preds = %49 %62 = getelementptr inbounds nuw i8, ptr %0, i64 4096 %63 = sub i64 0, %2 %64 = getelementptr inbounds i8, ptr %62, i64 %63 - %.not21.i = icmp ult ptr %64, %0 + %notsub.i24 = add i64 %2, -4097 + %.not21.i = icmp sgt i64 %notsub.i24, -1 br i1 %or.cond, label %65, label %90 65: ; preds = %60 @@ -14573,9 +14575,9 @@ GC_clear_block.exit.i: ; preds = %49 br i1 %67, label %.lr.ph.split.us.i31, label %.lr.ph.split.i25 .lr.ph.split.us.i31: ; preds = %.lr.ph.i24, %77 - %.024.us.i = phi ptr [ %.1.us.i32, %77 ], [ %4, %.lr.ph.i24 ] - %.01723.us.i = phi ptr [ %.118.us.i, %77 ], [ %0, %.lr.ph.i24 ] - %.01922.us.i = phi i64 [ %78, %77 ], [ 0, %.lr.ph.i24 ] + %.024.us.i = phi ptr [ %.1.us.i32, %77 ], [ %4, %.lr.ph.i25 ] + %.01723.us.i = phi ptr [ %.118.us.i, %77 ], [ %0, %.lr.ph.i25 ] + %.01922.us.i = phi i64 [ %78, %77 ], [ 0, %.lr.ph.i25 ] %69 = getelementptr inbounds nuw [257 x i8], ptr %66, i64 0, i64 %.01922.us.i %70 = load i8, ptr %69, align 1, !tbaa !41 %.not20.us.i = icmp eq i8 %70, 0 @@ -14594,8 +14596,8 @@ GC_clear_block.exit.i: ; preds = %49 br label %.lr.ph.i.us.i36 .lr.ph.i.us.i36: ; preds = %.lr.ph.i.us.i36, %.lr.ph.i.preheader.us.i34 - %.014.i.us.i37 = phi ptr [ %.0.i.us.i39, %.lr.ph.i.us.i36 ], [ %.012.i.us.i35, %.lr.ph.i.preheader.us.i34 ] - %.pn13.i.us.i38 = phi ptr [ %.014.i.us.i37, %.lr.ph.i.us.i36 ], [ %.01723.us.i, %.lr.ph.i.preheader.us.i34 ] + %.014.i.us.i37 = phi ptr [ %.0.i.us.i39, %.lr.ph.i.us.i37 ], [ %.012.i.us.i35, %.lr.ph.i.preheader.us.i35 ] + %.pn13.i.us.i38 = phi ptr [ %.014.i.us.i37, %.lr.ph.i.us.i37 ], [ %.01723.us.i, %.lr.ph.i.preheader.us.i35 ] store ptr null, ptr %.014.i.us.i37, align 8, !tbaa !42 %75 = getelementptr inbounds nuw i8, ptr %.pn13.i.us.i38, i64 24 store ptr null, ptr %75, align 8, !tbaa !42 @@ -14604,8 +14606,8 @@ GC_clear_block.exit.i: ; preds = %49 br i1 %76, label %.lr.ph.i.us.i36, label %GC_clear_block.exit.loopexit.us.i40, !llvm.loop !203 77: ; preds = %GC_clear_block.exit.loopexit.us.i40, %71 - %.118.us.i = phi ptr [ %72, %71 ], [ %.0.i.us.i39, %GC_clear_block.exit.loopexit.us.i40 ] - %.1.us.i32 = phi ptr [ %.024.us.i, %71 ], [ %.01723.us.i, %GC_clear_block.exit.loopexit.us.i40 ] + %.118.us.i = phi ptr [ %72, %71 ], [ %.0.i.us.i39, %GC_clear_block.exit.loopexit.us.i41 ] + %.1.us.i32 = phi ptr [ %.024.us.i, %71 ], [ %.01723.us.i, %GC_clear_block.exit.loopexit.us.i41 ] %78 = add i64 %.01922.us.i, %68 %.not.us.i33 = icmp ult ptr %64, %.118.us.i br i1 %.not.us.i33, label %GC_disclaim_and_reclaim.exit, label %.lr.ph.split.us.i31, !llvm.loop !205 @@ -14617,9 +14619,9 @@ GC_clear_block.exit.loopexit.us.i40: ; preds = %.lr.ph.i.us.i36 br label %77 .lr.ph.split.i25: ; preds = %.lr.ph.i24, %88 - %.024.i = phi ptr [ %.1.i26, %88 ], [ %4, %.lr.ph.i24 ] - %.01723.i = phi ptr [ %.118.i, %88 ], [ %0, %.lr.ph.i24 ] - %.01922.i = phi i64 [ %89, %88 ], [ 0, %.lr.ph.i24 ] + %.024.i = phi ptr [ %.1.i26, %88 ], [ %4, %.lr.ph.i25 ] + %.01723.i = phi ptr [ %.118.i, %88 ], [ %0, %.lr.ph.i25 ] + %.01922.i = phi i64 [ %89, %88 ], [ 0, %.lr.ph.i25 ] %81 = getelementptr inbounds nuw [257 x i8], ptr %66, i64 0, i64 %.01922.i %82 = load i8, ptr %81, align 1, !tbaa !41 %.not20.i = icmp eq i8 %82, 0 @@ -14640,8 +14642,8 @@ GC_clear_block.exit.i29: ; preds = %.lr.ph.split.i25 br label %88 88: ; preds = %GC_clear_block.exit.i29, %83 - %.118.i = phi ptr [ %84, %83 ], [ %.012.i.i30, %GC_clear_block.exit.i29 ] - %.1.i26 = phi ptr [ %.024.i, %83 ], [ %.01723.i, %GC_clear_block.exit.i29 ] + %.118.i = phi ptr [ %84, %83 ], [ %.012.i.i30, %GC_clear_block.exit.i30 ] + %.1.i26 = phi ptr [ %.024.i, %83 ], [ %.01723.i, %GC_clear_block.exit.i30 ] %89 = add i64 %.01922.i, %68 %.not.i27 = icmp ult ptr %64, %.118.i br i1 %.not.i27, label %GC_disclaim_and_reclaim.exit, label %.lr.ph.split.i25, !llvm.loop !205 @@ -14655,10 +14657,10 @@ GC_clear_block.exit.i29: ; preds = %.lr.ph.split.i25 br label %93 93: ; preds = %98, %.lr.ph.i41 - %.027.i = phi ptr [ %4, %.lr.ph.i41 ], [ %.1.i42, %98 ] - %.01826.i = phi ptr [ %0, %.lr.ph.i41 ], [ %100, %98 ] - %.01925.i = phi i64 [ 0, %.lr.ph.i41 ], [ %.120.i, %98 ] - %.02124.i = phi i64 [ 0, %.lr.ph.i41 ], [ %99, %98 ] + %.027.i = phi ptr [ %4, %.lr.ph.i43 ], [ %.1.i42, %98 ] + %.01826.i = phi ptr [ %0, %.lr.ph.i43 ], [ %100, %98 ] + %.01925.i = phi i64 [ 0, %.lr.ph.i43 ], [ %.120.i, %98 ] + %.02124.i = phi i64 [ 0, %.lr.ph.i43 ], [ %99, %98 ] %94 = getelementptr inbounds nuw [257 x i8], ptr %91, i64 0, i64 %.02124.i %95 = load i8, ptr %94, align 1, !tbaa !41 %.not22.i = icmp eq i8 %95, 0 @@ -37502,15 +37504,15 @@ define internal fastcc void @GC_start_reclaim(i8 noundef signext range(i8 0, 2) br i1 %.not19.us, label %.split.us.us, label %.split.us50 .split.us50: ; preds = %8, %GC_clear_fl_links.exit.us46 - %.016.idx40.us44 = phi i64 [ %.016.add.us47, %GC_clear_fl_links.exit.us46 ], [ 0, %8 ] + %.016.idx40.us44 = phi i64 [ %.016.add.us47, %GC_clear_fl_links.exit.us44 ], [ 0, %8 ] %.016.ptr41.us43 = getelementptr inbounds nuw i8, ptr %11, i64 %.016.idx40.us44 %12 = load ptr, ptr %.016.ptr41.us43, align 8, !tbaa !12 %.not18.us45 = icmp eq ptr %12, null br i1 %.not18.us45, label %GC_clear_fl_links.exit.us46, label %.lr.ph.i.us .lr.ph.i.us: ; preds = %.split.us50, %.lr.ph.i.us - %.09.i.us = phi ptr [ %.0.i.us, %.lr.ph.i.us ], [ %12, %.split.us50 ] - %.058.i.us = phi ptr [ %.09.i.us, %.lr.ph.i.us ], [ %.016.ptr41.us43, %.split.us50 ] + %.09.i.us = phi ptr [ %.0.i.us, %.lr.ph.i.us ], [ %12, %.split.us48 ] + %.058.i.us = phi ptr [ %.09.i.us, %.lr.ph.i.us ], [ %.016.ptr41.us43, %.split.us48 ] store ptr null, ptr %.058.i.us, align 8, !tbaa !12 %.0.i.us = load ptr, ptr %.09.i.us, align 8, !tbaa !12 %.not.i.us = icmp eq ptr %.0.i.us, null @@ -37725,10 +37727,6 @@ GC_find_header.exit.i.i: ; preds = %.preheader58.i %108 = getelementptr inbounds nuw i8, ptr %36, i64 4096 %109 = sub nsw i64 0, %58 %110 = getelementptr inbounds i8, ptr %108, i64 %109 - %.not13.i.i.i = icmp ult ptr %110, %36 - br i1 %.not13.i.i.i, label %GC_reclaim_small_nonempty_block.exit.i31, label %.lr.ph.i.i.i - -.lr.ph.i.i.i: ; preds = %GC_find_header.exit.i.i %111 = getelementptr inbounds nuw i8, ptr %104, i64 64 %112 = lshr i64 %58, 4 br label %113 @@ -38058,7 +38056,7 @@ GC_find_header.exit.i55.i: ; preds = %.preheader.i32 store ptr %36, ptr %288, align 8, !tbaa !69 br label %GC_reclaim_small_nonempty_block.exit.i31 -GC_reclaim_small_nonempty_block.exit.i31: ; preds = %GC_add_leaked.exit, %286, %283, %278, %273, %270, %269, %GC_find_header.exit.i.i +GC_reclaim_small_nonempty_block.exit.i31: ; preds = %GC_add_leaked.exit, %286, %283, %278, %273, %270, %269 %290 = getelementptr inbounds nuw i8, ptr %52, i64 40 %291 = load atomic i64, ptr %290 monotonic, align 8 %292 = icmp eq i64 %291, 0 diff --git a/bench/boost/optimized/default_filter_factory.ll b/bench/boost/optimized/default_filter_factory.ll index 7790f7fac2f..78a18f5f348 100644 --- a/bench/boost/optimized/default_filter_factory.ll +++ b/bench/boost/optimized/default_filter_factory.ll @@ -35326,10 +35326,10 @@ define linkonce_odr hidden void @_ZN5boost3log11v2_mt_posix15type_dispatcher13ca %10 = getelementptr inbounds nuw i8, ptr %9, i64 %7 %11 = sub i64 0, %5 %12 = getelementptr inbounds i8, ptr %10, i64 %11 - %13 = getelementptr inbounds nuw i8, ptr %12, i64 1 - %14 = load ptr, ptr %3, align 8, !tbaa !3 - %15 = getelementptr i8, ptr %14, i64 %5 - %.not2936.i.i.i = icmp eq ptr %9, %13 + %13 = load ptr, ptr %3, align 8, !tbaa !3 + %14 = getelementptr i8, ptr %13, i64 %5 + %15 = sub nuw i64 %7, %5 + %.not2936.i.i.i = icmp eq i64 %15, -1 br i1 %.not2936.i.i.i, label %_ZNK5boost3log11v2_mt_posix19save_result_wrapperIRKNS1_3aux9anonymous16string_predicateINS1_12contains_funEEEbEclINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEvRKT_.exit, label %.preheader.lr.ph.i.i.i .preheader.lr.ph.i.i.i: ; preds = %8 @@ -35346,7 +35346,7 @@ define linkonce_odr hidden void @_ZN5boost3log11v2_mt_posix15type_dispatcher13ca br label %18 18: ; preds = %21, %.preheader.i.i.i - %.sroa.0.033.i.i.i = phi ptr [ %14, %.preheader.i.i.i ], [ %23, %21 ] + %.sroa.0.033.i.i.i = phi ptr [ %13, %.preheader.i.i.i ], [ %23, %21 ] %.sroa.020.032.i.i.i = phi ptr [ %.sroa.022.037.i.i.i, %.preheader.i.i.i ], [ %22, %21 ] %19 = load i8, ptr %.sroa.020.032.i.i.i, align 1, !tbaa !36 %20 = load i8, ptr %.sroa.0.033.i.i.i, align 1, !tbaa !36 @@ -35356,11 +35356,11 @@ define linkonce_odr hidden void @_ZN5boost3log11v2_mt_posix15type_dispatcher13ca 21: ; preds = %18 %22 = getelementptr inbounds nuw i8, ptr %.sroa.020.032.i.i.i, i64 1 %23 = getelementptr inbounds nuw i8, ptr %.sroa.0.033.i.i.i, i64 1 - %.not30.i.i.i = icmp eq ptr %23, %15 + %.not30.i.i.i = icmp eq ptr %23, %14 br i1 %.not30.i.i.i, label %_ZNK5boost3log11v2_mt_posix19save_result_wrapperIRKNS1_3aux9anonymous16string_predicateINS1_12contains_funEEEbEclINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEvRKT_.exit, label %18, !llvm.loop !322 ._crit_edge.i.i.i: ; preds = %18 - %24 = icmp eq ptr %.sroa.0.033.i.i.i, %15 + %24 = icmp eq ptr %.sroa.0.033.i.i.i, %14 br i1 %24, label %_ZNK5boost3log11v2_mt_posix19save_result_wrapperIRKNS1_3aux9anonymous16string_predicateINS1_12contains_funEEEbEclINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEvRKT_.exit, label %16 _ZNK5boost3log11v2_mt_posix19save_result_wrapperIRKNS1_3aux9anonymous16string_predicateINS1_12contains_funEEEbEclINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEvRKT_.exit: ; preds = %16, %._crit_edge.i.i.i, %21, %2, %8, %.preheader.lr.ph.i.i.i @@ -35386,10 +35386,10 @@ define linkonce_odr hidden void @_ZN5boost3log11v2_mt_posix15type_dispatcher13ca %10 = getelementptr inbounds nuw i8, ptr %9, i64 %7 %11 = sub i64 0, %5 %12 = getelementptr inbounds i8, ptr %10, i64 %11 - %13 = getelementptr inbounds nuw i8, ptr %12, i64 1 - %14 = load ptr, ptr %3, align 8, !tbaa !3 - %15 = getelementptr i8, ptr %14, i64 %5 - %.not2437.i.i.i = icmp eq ptr %9, %13 + %13 = load ptr, ptr %3, align 8, !tbaa !3 + %14 = getelementptr i8, ptr %13, i64 %5 + %15 = sub nuw i64 %7, %5 + %.not2437.i.i.i = icmp eq i64 %15, -1 br i1 %.not2437.i.i.i, label %_ZNK5boost3log11v2_mt_posix19save_result_wrapperIRKNS1_3aux9anonymous16string_predicateINS1_12contains_funEEEbEclINS1_20basic_string_literalIcSt11char_traitsIcEEEEEvRKT_.exit, label %.preheader.lr.ph.i.i.i .preheader.lr.ph.i.i.i: ; preds = %8 @@ -35407,7 +35407,7 @@ define linkonce_odr hidden void @_ZN5boost3log11v2_mt_posix15type_dispatcher13ca 18: ; preds = %21, %.preheader.i.i.i %.034.i.i.i = phi ptr [ %.02038.i.i.i, %.preheader.i.i.i ], [ %22, %21 ] - %.sroa.0.033.i.i.i = phi ptr [ %14, %.preheader.i.i.i ], [ %23, %21 ] + %.sroa.0.033.i.i.i = phi ptr [ %13, %.preheader.i.i.i ], [ %23, %21 ] %19 = load i8, ptr %.034.i.i.i, align 1, !tbaa !36 %20 = load i8, ptr %.sroa.0.033.i.i.i, align 1, !tbaa !36 %.not25.i.i.i = icmp eq i8 %19, %20 @@ -35416,11 +35416,11 @@ define linkonce_odr hidden void @_ZN5boost3log11v2_mt_posix15type_dispatcher13ca 21: ; preds = %18 %22 = getelementptr inbounds nuw i8, ptr %.034.i.i.i, i64 1 %23 = getelementptr inbounds nuw i8, ptr %.sroa.0.033.i.i.i, i64 1 - %.not31.i.i.i = icmp eq ptr %23, %15 + %.not31.i.i.i = icmp eq ptr %23, %14 br i1 %.not31.i.i.i, label %_ZNK5boost3log11v2_mt_posix19save_result_wrapperIRKNS1_3aux9anonymous16string_predicateINS1_12contains_funEEEbEclINS1_20basic_string_literalIcSt11char_traitsIcEEEEEvRKT_.exit, label %18, !llvm.loop !325 ._crit_edge.i.i.i: ; preds = %18 - %24 = icmp eq ptr %.sroa.0.033.i.i.i, %15 + %24 = icmp eq ptr %.sroa.0.033.i.i.i, %14 br i1 %24, label %_ZNK5boost3log11v2_mt_posix19save_result_wrapperIRKNS1_3aux9anonymous16string_predicateINS1_12contains_funEEEbEclINS1_20basic_string_literalIcSt11char_traitsIcEEEEEvRKT_.exit, label %16 _ZNK5boost3log11v2_mt_posix19save_result_wrapperIRKNS1_3aux9anonymous16string_predicateINS1_12contains_funEEEbEclINS1_20basic_string_literalIcSt11char_traitsIcEEEEEvRKT_.exit: ; preds = %16, %._crit_edge.i.i.i, %21, %2, %8, %.preheader.lr.ph.i.i.i @@ -35447,10 +35447,11 @@ define linkonce_odr hidden void @_ZN5boost3log11v2_mt_posix15type_dispatcher13ca %11 = getelementptr inbounds nuw i32, ptr %10, i64 %7 %12 = sub i64 0, %5 %13 = getelementptr inbounds i32, ptr %11, i64 %12 - %14 = getelementptr inbounds nuw i8, ptr %13, i64 4 - %15 = load ptr, ptr %9, align 8, !tbaa !34 - %16 = getelementptr inbounds nuw i32, ptr %15, i64 %5 - %.not2936.i.i.i = icmp eq ptr %10, %14 + %14 = load ptr, ptr %9, align 8, !tbaa !34 + %15 = getelementptr inbounds nuw i32, ptr %14, i64 %5 + %.idx43.i.i.i = sub nuw i64 %7, %5 + %.mask.i.i.i = and i64 %.idx43.i.i.i, 4611686018427387903 + %.not2936.i.i.i = icmp eq i64 %.mask.i.i.i, 4611686018427387903 br i1 %.not2936.i.i.i, label %_ZNK5boost3log11v2_mt_posix19save_result_wrapperIRKNS1_3aux9anonymous16string_predicateINS1_12contains_funEEEbEclINSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEEEEvRKT_.exit, label %.preheader.lr.ph.i.i.i .preheader.lr.ph.i.i.i: ; preds = %8 @@ -35463,12 +35464,12 @@ define linkonce_odr hidden void @_ZN5boost3log11v2_mt_posix15type_dispatcher13ca br i1 %.not29.i.i.i, label %_ZNK5boost3log11v2_mt_posix19save_result_wrapperIRKNS1_3aux9anonymous16string_predicateINS1_12contains_funEEEbEclINSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEEEEvRKT_.exit, label %.preheader.i.i.i, !llvm.loop !326 .preheader.i.i.i: ; preds = %.preheader.lr.ph.i.i.i, %17 - %.sroa.022.037.i.i.i = phi ptr [ %18, %17 ], [ %10, %.preheader.lr.ph.i.i.i ] + %.sroa.022.037.i.i.i = phi ptr [ %18, %16 ], [ %10, %.preheader.lr.ph.i.i.i ] br label %19 19: ; preds = %22, %.preheader.i.i.i - %.sroa.0.033.i.i.i = phi ptr [ %15, %.preheader.i.i.i ], [ %24, %22 ] - %.sroa.020.032.i.i.i = phi ptr [ %.sroa.022.037.i.i.i, %.preheader.i.i.i ], [ %23, %22 ] + %.sroa.0.033.i.i.i = phi ptr [ %14, %.preheader.i.i.i ], [ %24, %21 ] + %.sroa.020.032.i.i.i = phi ptr [ %.sroa.022.037.i.i.i, %.preheader.i.i.i ], [ %23, %21 ] %20 = load i32, ptr %.sroa.020.032.i.i.i, align 4, !tbaa !84 %21 = load i32, ptr %.sroa.0.033.i.i.i, align 4, !tbaa !84 %.not16.i.i.i = icmp eq i32 %20, %21 @@ -35477,15 +35478,15 @@ define linkonce_odr hidden void @_ZN5boost3log11v2_mt_posix15type_dispatcher13ca 22: ; preds = %19 %23 = getelementptr inbounds nuw i8, ptr %.sroa.020.032.i.i.i, i64 4 %24 = getelementptr inbounds nuw i8, ptr %.sroa.0.033.i.i.i, i64 4 - %.not30.i.i.i = icmp eq ptr %24, %16 + %.not30.i.i.i = icmp eq ptr %24, %15 br i1 %.not30.i.i.i, label %_ZNK5boost3log11v2_mt_posix19save_result_wrapperIRKNS1_3aux9anonymous16string_predicateINS1_12contains_funEEEbEclINSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEEEEvRKT_.exit, label %19, !llvm.loop !327 ._crit_edge.i.i.i: ; preds = %19 - %25 = icmp eq ptr %.sroa.0.033.i.i.i, %16 + %25 = icmp eq ptr %.sroa.0.033.i.i.i, %15 br i1 %25, label %_ZNK5boost3log11v2_mt_posix19save_result_wrapperIRKNS1_3aux9anonymous16string_predicateINS1_12contains_funEEEbEclINSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEEEEvRKT_.exit, label %17 _ZNK5boost3log11v2_mt_posix19save_result_wrapperIRKNS1_3aux9anonymous16string_predicateINS1_12contains_funEEEbEclINSt7__cxx1112basic_stringIwSt11char_traitsIwESaIwEEEEEvRKT_.exit: ; preds = %17, %._crit_edge.i.i.i, %22, %2, %8, %.preheader.lr.ph.i.i.i - %.3.i.i.i = phi i8 [ 0, %2 ], [ 0, %8 ], [ 1, %.preheader.lr.ph.i.i.i ], [ 1, %22 ], [ 0, %17 ], [ 1, %._crit_edge.i.i.i ] + %.3.i.i.i = phi i8 [ 0, %2 ], [ 0, %8 ], [ 1, %.preheader.lr.ph.i.i.i ], [ 1, %21 ], [ 0, %16 ], [ 1, %._crit_edge.i.i.i ] %26 = getelementptr inbounds nuw i8, ptr %0, i64 8 %27 = load ptr, ptr %26, align 8, !tbaa !323 store i8 %.3.i.i.i, ptr %27, align 1, !tbaa !105 @@ -35508,10 +35509,11 @@ define linkonce_odr hidden void @_ZN5boost3log11v2_mt_posix15type_dispatcher13ca %11 = getelementptr inbounds nuw i32, ptr %10, i64 %7 %12 = sub i64 0, %5 %13 = getelementptr inbounds i32, ptr %11, i64 %12 - %14 = getelementptr inbounds nuw i8, ptr %13, i64 4 - %15 = load ptr, ptr %9, align 8, !tbaa !34 - %16 = getelementptr inbounds nuw i32, ptr %15, i64 %5 - %.not2437.i.i.i = icmp eq ptr %10, %14 + %14 = load ptr, ptr %9, align 8, !tbaa !34 + %15 = getelementptr inbounds nuw i32, ptr %14, i64 %5 + %.idx44.i.i.i = sub nuw i64 %7, %5 + %.mask.i.i.i = and i64 %.idx44.i.i.i, 4611686018427387903 + %.not2437.i.i.i = icmp eq i64 %.mask.i.i.i, 4611686018427387903 br i1 %.not2437.i.i.i, label %_ZNK5boost3log11v2_mt_posix19save_result_wrapperIRKNS1_3aux9anonymous16string_predicateINS1_12contains_funEEEbEclINS1_20basic_string_literalIwSt11char_traitsIwEEEEEvRKT_.exit, label %.preheader.lr.ph.i.i.i .preheader.lr.ph.i.i.i: ; preds = %8 @@ -35524,12 +35526,12 @@ define linkonce_odr hidden void @_ZN5boost3log11v2_mt_posix15type_dispatcher13ca br i1 %.not24.i.i.i, label %_ZNK5boost3log11v2_mt_posix19save_result_wrapperIRKNS1_3aux9anonymous16string_predicateINS1_12contains_funEEEbEclINS1_20basic_string_literalIwSt11char_traitsIwEEEEEvRKT_.exit, label %.preheader.i.i.i, !llvm.loop !328 .preheader.i.i.i: ; preds = %.preheader.lr.ph.i.i.i, %17 - %.02038.i.i.i = phi ptr [ %18, %17 ], [ %10, %.preheader.lr.ph.i.i.i ] + %.02038.i.i.i = phi ptr [ %18, %16 ], [ %10, %.preheader.lr.ph.i.i.i ] br label %19 19: ; preds = %22, %.preheader.i.i.i - %.034.i.i.i = phi ptr [ %.02038.i.i.i, %.preheader.i.i.i ], [ %23, %22 ] - %.sroa.0.033.i.i.i = phi ptr [ %15, %.preheader.i.i.i ], [ %24, %22 ] + %.034.i.i.i = phi ptr [ %.02038.i.i.i, %.preheader.i.i.i ], [ %23, %21 ] + %.sroa.0.033.i.i.i = phi ptr [ %14, %.preheader.i.i.i ], [ %24, %21 ] %20 = load i32, ptr %.034.i.i.i, align 4, !tbaa !84 %21 = load i32, ptr %.sroa.0.033.i.i.i, align 4, !tbaa !84 %.not25.i.i.i = icmp eq i32 %20, %21 @@ -35538,15 +35540,15 @@ define linkonce_odr hidden void @_ZN5boost3log11v2_mt_posix15type_dispatcher13ca 22: ; preds = %19 %23 = getelementptr inbounds nuw i8, ptr %.034.i.i.i, i64 4 %24 = getelementptr inbounds nuw i8, ptr %.sroa.0.033.i.i.i, i64 4 - %.not31.i.i.i = icmp eq ptr %24, %16 + %.not31.i.i.i = icmp eq ptr %24, %15 br i1 %.not31.i.i.i, label %_ZNK5boost3log11v2_mt_posix19save_result_wrapperIRKNS1_3aux9anonymous16string_predicateINS1_12contains_funEEEbEclINS1_20basic_string_literalIwSt11char_traitsIwEEEEEvRKT_.exit, label %19, !llvm.loop !329 ._crit_edge.i.i.i: ; preds = %19 - %25 = icmp eq ptr %.sroa.0.033.i.i.i, %16 + %25 = icmp eq ptr %.sroa.0.033.i.i.i, %15 br i1 %25, label %_ZNK5boost3log11v2_mt_posix19save_result_wrapperIRKNS1_3aux9anonymous16string_predicateINS1_12contains_funEEEbEclINS1_20basic_string_literalIwSt11char_traitsIwEEEEEvRKT_.exit, label %17 _ZNK5boost3log11v2_mt_posix19save_result_wrapperIRKNS1_3aux9anonymous16string_predicateINS1_12contains_funEEEbEclINS1_20basic_string_literalIwSt11char_traitsIwEEEEEvRKT_.exit: ; preds = %17, %._crit_edge.i.i.i, %22, %2, %8, %.preheader.lr.ph.i.i.i - %.3.i.i.i = phi i8 [ 0, %2 ], [ 0, %8 ], [ 1, %.preheader.lr.ph.i.i.i ], [ 1, %22 ], [ 0, %17 ], [ 1, %._crit_edge.i.i.i ] + %.3.i.i.i = phi i8 [ 0, %2 ], [ 0, %8 ], [ 1, %.preheader.lr.ph.i.i.i ], [ 1, %21 ], [ 0, %16 ], [ 1, %._crit_edge.i.i.i ] %26 = getelementptr inbounds nuw i8, ptr %0, i64 8 %27 = load ptr, ptr %26, align 8, !tbaa !323 store i8 %.3.i.i.i, ptr %27, align 1, !tbaa !105 diff --git a/bench/boost/optimized/instantiate_cpp_grammar.ll b/bench/boost/optimized/instantiate_cpp_grammar.ll index be7d8b23715..8d36d990bef 100644 --- a/bench/boost/optimized/instantiate_cpp_grammar.ll +++ b/bench/boost/optimized/instantiate_cpp_grammar.ll @@ -15112,18 +15112,21 @@ define linkonce_odr hidden noundef ptr @_ZN5boost4poolINS_33default_user_allocat br i1 %42, label %_ZN5boost25simple_segregated_storageImE9add_blockEPvmm.exit, label %43 43: ; preds = %36 + %.not27.i.i = icmp eq i64 %40, %.0.i + br i1 %.not27.i.i, label %._crit_edge.i.i, label %.lr.ph.preheader.i.i + +.lr.ph.preheader.i.i: ; preds = %43 %.026.i.i = getelementptr inbounds i8, ptr %41, i64 %5 - %.not27.i.i = icmp eq ptr %.026.i.i, %.0 - br i1 %.not27.i.i, label %._crit_edge.i.i, label %.lr.ph.i.i + br label %.lr.ph.i.i ._crit_edge.i.i: ; preds = %.lr.ph.i.i, %43 %.022.lcssa.i.i = phi ptr [ %41, %43 ], [ %.029.i.i, %.lr.ph.i.i ] store ptr %.022.lcssa.i.i, ptr %.0, align 8, !tbaa !17 br label %_ZN5boost25simple_segregated_storageImE9add_blockEPvmm.exit -.lr.ph.i.i: ; preds = %43, %.lr.ph.i.i - %.029.i.i = phi ptr [ %.0.i.i, %.lr.ph.i.i ], [ %.026.i.i, %43 ] - %.02228.i.i = phi ptr [ %.029.i.i, %.lr.ph.i.i ], [ %41, %43 ] +.lr.ph.i.i: ; preds = %.lr.ph.i.i, %.lr.ph.preheader.i.i + %.029.i.i = phi ptr [ %.0.i.i, %.lr.ph.i.i ], [ %.026.i.i, %.lr.ph.preheader.i.i ] + %.02228.i.i = phi ptr [ %.029.i.i, %.lr.ph.i.i ], [ %41, %.lr.ph.preheader.i.i ] store ptr %.02228.i.i, ptr %.029.i.i, align 8, !tbaa !17 %.0.i.i = getelementptr inbounds i8, ptr %.029.i.i, i64 %5 %.not.i.i = icmp eq ptr %.0.i.i, %.0 @@ -15304,13 +15307,16 @@ _ZN5boost25simple_segregated_storageImE8malloc_nEmm.exit: ; preds = %.lr.ph, %.p 69: ; preds = %63 %70 = sub i64 0, %.0.i.i + %.not27.i.i.i = icmp eq i64 %66, %.0.i.i + br i1 %.not27.i.i.i, label %_ZN5boost25simple_segregated_storageImE9add_blockEPvmm.exit.sink.split.i, label %.lr.ph.preheader.i.i.i + +.lr.ph.preheader.i.i.i: ; preds = %69 %.026.i.i.i = getelementptr inbounds i8, ptr %67, i64 %70 - %.not27.i.i.i = icmp eq ptr %.026.i.i.i, %55 - br i1 %.not27.i.i.i, label %_ZN5boost25simple_segregated_storageImE9add_blockEPvmm.exit.sink.split.i, label %.lr.ph.i.i.i + br label %.lr.ph.i.i.i -.lr.ph.i.i.i: ; preds = %69, %.lr.ph.i.i.i - %.029.i.i.i = phi ptr [ %.0.i.i.i, %.lr.ph.i.i.i ], [ %.026.i.i.i, %69 ] - %.02228.i.i.i = phi ptr [ %.029.i.i.i, %.lr.ph.i.i.i ], [ %67, %69 ] +.lr.ph.i.i.i: ; preds = %.lr.ph.i.i.i, %.lr.ph.preheader.i.i.i + %.029.i.i.i = phi ptr [ %.0.i.i.i, %.lr.ph.i.i.i ], [ %.026.i.i.i, %.lr.ph.preheader.i.i.i ] + %.02228.i.i.i = phi ptr [ %.029.i.i.i, %.lr.ph.i.i.i ], [ %67, %.lr.ph.preheader.i.i.i ] store ptr %.02228.i.i.i, ptr %.029.i.i.i, align 8, !tbaa !17 %.0.i.i.i = getelementptr inbounds i8, ptr %.029.i.i.i, i64 %70 %.not.i.i.i = icmp eq ptr %.0.i.i.i, %55 @@ -15327,13 +15333,16 @@ _ZN5boost25simple_segregated_storageImE9find_prevEPv.exit.i: ; preds = %.prehead 76: ; preds = %_ZN5boost25simple_segregated_storageImE9find_prevEPv.exit.i %77 = sub i64 0, %.0.i.i + %.not27.i.i = icmp eq i64 %73, %.0.i.i + br i1 %.not27.i.i, label %_ZN5boost25simple_segregated_storageImE9add_blockEPvmm.exit.sink.split.i, label %.lr.ph.preheader.i.i + +.lr.ph.preheader.i.i: ; preds = %76 %.026.i.i = getelementptr inbounds i8, ptr %74, i64 %77 - %.not27.i.i = icmp eq ptr %.026.i.i, %55 - br i1 %.not27.i.i, label %_ZN5boost25simple_segregated_storageImE9add_blockEPvmm.exit.sink.split.i, label %.lr.ph.i.i + br label %.lr.ph.i.i -.lr.ph.i.i: ; preds = %76, %.lr.ph.i.i - %.029.i.i = phi ptr [ %.0.i10.i, %.lr.ph.i.i ], [ %.026.i.i, %76 ] - %.02228.i.i = phi ptr [ %.029.i.i, %.lr.ph.i.i ], [ %74, %76 ] +.lr.ph.i.i: ; preds = %.lr.ph.i.i, %.lr.ph.preheader.i.i + %.029.i.i = phi ptr [ %.0.i10.i, %.lr.ph.i.i ], [ %.026.i.i, %.lr.ph.preheader.i.i ] + %.02228.i.i = phi ptr [ %.029.i.i, %.lr.ph.i.i ], [ %74, %.lr.ph.preheader.i.i ] store ptr %.02228.i.i, ptr %.029.i.i, align 8, !tbaa !17 %.0.i10.i = getelementptr inbounds i8, ptr %.029.i.i, i64 %77 %.not.i.i40 = icmp eq ptr %.0.i10.i, %55 diff --git a/bench/boost/optimized/instantiate_re2c_lexer.ll b/bench/boost/optimized/instantiate_re2c_lexer.ll index d0f414ecb5f..1ca0228ef6b 100644 --- a/bench/boost/optimized/instantiate_re2c_lexer.ll +++ b/bench/boost/optimized/instantiate_re2c_lexer.ll @@ -44971,18 +44971,21 @@ define linkonce_odr hidden noundef ptr @_ZN5boost4poolINS_33default_user_allocat br i1 %42, label %_ZN5boost25simple_segregated_storageImE9add_blockEPvmm.exit, label %43 43: ; preds = %36 + %.not27.i.i = icmp eq i64 %40, %.0.i + br i1 %.not27.i.i, label %._crit_edge.i.i, label %.lr.ph.preheader.i.i + +.lr.ph.preheader.i.i: ; preds = %43 %.026.i.i = getelementptr inbounds i8, ptr %41, i64 %5 - %.not27.i.i = icmp eq ptr %.026.i.i, %.0 - br i1 %.not27.i.i, label %._crit_edge.i.i, label %.lr.ph.i.i + br label %.lr.ph.i.i ._crit_edge.i.i: ; preds = %.lr.ph.i.i, %43 %.022.lcssa.i.i = phi ptr [ %41, %43 ], [ %.029.i.i, %.lr.ph.i.i ] store ptr %.022.lcssa.i.i, ptr %.0, align 8, !tbaa !24 br label %_ZN5boost25simple_segregated_storageImE9add_blockEPvmm.exit -.lr.ph.i.i: ; preds = %43, %.lr.ph.i.i - %.029.i.i = phi ptr [ %.0.i.i, %.lr.ph.i.i ], [ %.026.i.i, %43 ] - %.02228.i.i = phi ptr [ %.029.i.i, %.lr.ph.i.i ], [ %41, %43 ] +.lr.ph.i.i: ; preds = %.lr.ph.i.i, %.lr.ph.preheader.i.i + %.029.i.i = phi ptr [ %.0.i.i, %.lr.ph.i.i ], [ %.026.i.i, %.lr.ph.preheader.i.i ] + %.02228.i.i = phi ptr [ %.029.i.i, %.lr.ph.i.i ], [ %41, %.lr.ph.preheader.i.i ] store ptr %.02228.i.i, ptr %.029.i.i, align 8, !tbaa !24 %.0.i.i = getelementptr inbounds i8, ptr %.029.i.i, i64 %5 %.not.i.i = icmp eq ptr %.0.i.i, %.0 diff --git a/bench/box2d/optimized/imgui.ll b/bench/box2d/optimized/imgui.ll index 32b74516274..c137ba32409 100644 --- a/bench/box2d/optimized/imgui.ll +++ b/bench/box2d/optimized/imgui.ll @@ -4930,7 +4930,7 @@ define dso_local noundef i32 @_Z17ImTextStrFromUtf8PtiPKcS1_PS1_(ptr noundef %0, %7 = sext i32 %1 to i64 %8 = getelementptr inbounds i16, ptr %0, i64 %7 %9 = getelementptr inbounds i8, ptr %8, i64 -2 - %10 = icmp ult ptr %0, %9 + %10 = icmp sgt i32 %1, 1 br i1 %10, label %.lr.ph, label %.critedge .lr.ph: ; preds = %5 @@ -5149,7 +5149,7 @@ define dso_local noundef i32 @_Z15ImTextStrToUtf8PciPKtS1_(ptr noundef %0, i32 n %5 = sext i32 %1 to i64 %6 = getelementptr inbounds i8, ptr %0, i64 %5 %7 = getelementptr inbounds i8, ptr %6, i64 -1 - %8 = icmp ult ptr %0, %7 + %8 = icmp sgt i32 %1, 1 br i1 %8, label %.lr.ph, label %.critedge .lr.ph: ; preds = %4 diff --git a/bench/bullet3/optimized/btSoftBodyHelpers.ll b/bench/bullet3/optimized/btSoftBodyHelpers.ll index aec69e976a1..fc5527e945c 100644 --- a/bench/bullet3/optimized/btSoftBodyHelpers.ll +++ b/bench/bullet3/optimized/btSoftBodyHelpers.ll @@ -510,8 +510,8 @@ _ZN20btAlignedObjectArrayI9btVector3ED2Ev.exit: ; preds = %.loopexit1445 %207 = getelementptr inbounds %"class.btConvexHullComputer::Edge", ptr %203, i64 %206 %208 = load i32, ptr %207, align 4, !tbaa !64 %209 = sext i32 %208 to i64 - %210 = getelementptr inbounds %"class.btConvexHullComputer::Edge", ptr %207, i64 %209 - %.not2241352 = icmp eq ptr %210, %203 + %.idx1396 = sub nsw i64 0, %209 + %.not2241352 = icmp eq i64 %206, %.idx1396 br i1 %.not2241352, label %_ZN20btConvexHullComputer7computeEPKfiiff.exit, label %.lr.ph1357.preheader .lr.ph1357.preheader: ; preds = %.lr.ph1360 @@ -519,10 +519,11 @@ _ZN20btAlignedObjectArrayI9btVector3ED2Ev.exit: ; preds = %.loopexit1445 %212 = load i32, ptr %211, align 4, !tbaa !65 %213 = getelementptr inbounds %"class.btConvexHullComputer::Edge", ptr %203, i64 %206, i32 2 %214 = load i32, ptr %213, align 4, !tbaa !65 + %214 = getelementptr inbounds %"class.btConvexHullComputer::Edge", ptr %207, i64 %209 br label %.lr.ph1357 .lr.ph1357: ; preds = %.lr.ph1357.preheader, %227 - %.02071355 = phi ptr [ %234, %227 ], [ %210, %.lr.ph1357.preheader ] + %.02071355 = phi ptr [ %234, %227 ], [ %214, %.lr.ph1357.preheader ] %.02091354 = phi i32 [ %.02101353, %227 ], [ %214, %.lr.ph1357.preheader ] %.02101353 = phi i32 [ %216, %227 ], [ %212, %.lr.ph1357.preheader ] %215 = getelementptr inbounds nuw i8, ptr %.02071355, i64 8 diff --git a/bench/ceres/optimized/covariance_impl.ll b/bench/ceres/optimized/covariance_impl.ll index e3e040a497b..cc4cf1e94f7 100644 --- a/bench/ceres/optimized/covariance_impl.ll +++ b/bench/ceres/optimized/covariance_impl.ll @@ -80918,21 +80918,19 @@ _ZN5Eigen12SparseMatrixIdLi0EiE14initAssignmentIS1_EEvRKT_.exit: ; preds = %39, br i1 %49, label %50, label %80 50: ; preds = %_ZN5Eigen12SparseMatrixIdLi0EiE14initAssignmentIS1_EEvRKT_.exit - %51 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %52 = load ptr, ptr %51, align 8, !tbaa !572 - %53 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %54 = load i64, ptr %53, align 8, !tbaa !651 - %55 = getelementptr inbounds i32, ptr %52, i64 %54 - %56 = getelementptr inbounds nuw i8, ptr %55, i64 4 - %57 = icmp eq ptr %56, %52 - br i1 %57, label %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit, label %58 + %51 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %52 = load i64, ptr %51, align 8, !tbaa !651 + %53 = icmp eq i64 %52, -1 + br i1 %53, label %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit, label %54 58: ; preds = %50 - %59 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %59 = getelementptr inbounds nuw i8, ptr %1, i64 24 %60 = load ptr, ptr %59, align 8, !tbaa !572 - %.idx = shl nsw i64 %54, 2 - %61 = add nsw i64 %.idx, 4 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %60, ptr align 4 %52, i64 %61, i1 false) + %57 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %58 = load ptr, ptr %57, align 8, !tbaa !572 + %.idx = shl nsw i64 %52, 2 + %59 = add nsw i64 %.idx, 4 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %58, ptr align 4 %56, i64 %59, i1 false) br label %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit _ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit: ; preds = %50, %58 @@ -80962,11 +80960,11 @@ _ZN5Eigen8internal10smart_copyIdEEvPKT_S4_PS2_.exit.i: ; preds = %68 75: ; preds = %_ZN5Eigen8internal10smart_copyIdEEvPKT_S4_PS2_.exit.i %76 = getelementptr inbounds nuw i8, ptr %1, i64 48 + %75 = load ptr, ptr %74, align 8, !tbaa !571 + %76 = getelementptr inbounds nuw i8, ptr %0, i64 48 %77 = load ptr, ptr %76, align 8, !tbaa !571 - %78 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %79 = load ptr, ptr %78, align 8, !tbaa !571 %.idx8.i = shl nsw i64 %.pre.i, 2 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %79, ptr align 4 %77, i64 %.idx8.i, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %77, ptr align 4 %75, i64 %.idx8.i, i1 false) br label %_ZN5Eigen8internal17CompressedStorageIdiEaSERKS2_.exit 80: ; preds = %_ZN5Eigen12SparseMatrixIdLi0EiE14initAssignmentIS1_EEvRKT_.exit diff --git a/bench/ceres/optimized/eigensparse.ll b/bench/ceres/optimized/eigensparse.ll index ec702549325..bcd986d714a 100644 --- a/bench/ceres/optimized/eigensparse.ll +++ b/bench/ceres/optimized/eigensparse.ll @@ -6007,24 +6007,22 @@ _ZN5Eigen12SparseMatrixIdLi0EiE14initAssignmentIS1_EEvRKT_.exit: ; preds = %39, br i1 %49, label %50, label %80 50: ; preds = %_ZN5Eigen12SparseMatrixIdLi0EiE14initAssignmentIS1_EEvRKT_.exit - %51 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %52 = load ptr, ptr %51, align 8, !tbaa !113 - %53 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %54 = load i64, ptr %53, align 8, !tbaa !31 - %55 = getelementptr inbounds i32, ptr %52, i64 %54 - %56 = getelementptr inbounds nuw i8, ptr %55, i64 4 - %57 = icmp eq ptr %56, %52 - br i1 %57, label %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit, label %58 - -58: ; preds = %50 - %59 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %60 = load ptr, ptr %59, align 8, !tbaa !113 - %.idx = shl nsw i64 %54, 2 - %61 = add nsw i64 %.idx, 4 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %60, ptr align 4 %52, i64 %61, i1 false) + %51 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %52 = load i64, ptr %51, align 8, !tbaa !31 + %53 = icmp eq i64 %52, -1 + br i1 %53, label %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit, label %54 + +54: ; preds = %50 + %55 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %56 = load ptr, ptr %55, align 8, !tbaa !113 + %57 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %58 = load ptr, ptr %57, align 8, !tbaa !113 + %.idx = shl nsw i64 %52, 2 + %59 = add nsw i64 %.idx, 4 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %58, ptr align 4 %56, i64 %59, i1 false) br label %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit -_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit: ; preds = %50, %58 +_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit: ; preds = %50, %54 %62 = getelementptr inbounds nuw i8, ptr %1, i64 40 %63 = getelementptr inbounds nuw i8, ptr %0, i64 40 %64 = getelementptr inbounds nuw i8, ptr %1, i64 56 @@ -6051,11 +6049,11 @@ _ZN5Eigen8internal10smart_copyIdEEvPKT_S4_PS2_.exit.i: ; preds = %68 75: ; preds = %_ZN5Eigen8internal10smart_copyIdEEvPKT_S4_PS2_.exit.i %76 = getelementptr inbounds nuw i8, ptr %1, i64 48 + %75 = load ptr, ptr %74, align 8, !tbaa !116 + %76 = getelementptr inbounds nuw i8, ptr %0, i64 48 %77 = load ptr, ptr %76, align 8, !tbaa !116 - %78 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %79 = load ptr, ptr %78, align 8, !tbaa !116 %.idx8.i = shl nsw i64 %.pre.i, 2 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %79, ptr align 4 %77, i64 %.idx8.i, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %77, ptr align 4 %75, i64 %.idx8.i, i1 false) br label %_ZN5Eigen8internal17CompressedStorageIdiEaSERKS2_.exit 80: ; preds = %_ZN5Eigen12SparseMatrixIdLi0EiE14initAssignmentIS1_EEvRKT_.exit @@ -17015,24 +17013,22 @@ _ZN5Eigen12SparseMatrixIfLi0EiE14initAssignmentIS1_EEvRKT_.exit: ; preds = %39, br i1 %49, label %50, label %80 50: ; preds = %_ZN5Eigen12SparseMatrixIfLi0EiE14initAssignmentIS1_EEvRKT_.exit - %51 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %52 = load ptr, ptr %51, align 8, !tbaa !317 - %53 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %54 = load i64, ptr %53, align 8, !tbaa !59 - %55 = getelementptr inbounds i32, ptr %52, i64 %54 - %56 = getelementptr inbounds nuw i8, ptr %55, i64 4 - %57 = icmp eq ptr %56, %52 - br i1 %57, label %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit, label %58 - -58: ; preds = %50 - %59 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %60 = load ptr, ptr %59, align 8, !tbaa !317 - %.idx = shl nsw i64 %54, 2 - %61 = add nsw i64 %.idx, 4 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %60, ptr align 4 %52, i64 %61, i1 false) + %51 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %52 = load i64, ptr %51, align 8, !tbaa !59 + %53 = icmp eq i64 %52, -1 + br i1 %53, label %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit, label %54 + +54: ; preds = %50 + %55 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %56 = load ptr, ptr %55, align 8, !tbaa !317 + %57 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %58 = load ptr, ptr %57, align 8, !tbaa !317 + %.idx = shl nsw i64 %52, 2 + %59 = add nsw i64 %.idx, 4 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %58, ptr align 4 %56, i64 %59, i1 false) br label %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit -_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit: ; preds = %50, %58 +_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit: ; preds = %50, %54 %62 = getelementptr inbounds nuw i8, ptr %1, i64 40 %63 = getelementptr inbounds nuw i8, ptr %0, i64 40 %64 = getelementptr inbounds nuw i8, ptr %1, i64 56 @@ -17059,11 +17055,11 @@ _ZN5Eigen8internal10smart_copyIfEEvPKT_S4_PS2_.exit.i: ; preds = %68 75: ; preds = %_ZN5Eigen8internal10smart_copyIfEEvPKT_S4_PS2_.exit.i %76 = getelementptr inbounds nuw i8, ptr %1, i64 48 + %75 = load ptr, ptr %74, align 8, !tbaa !320 + %76 = getelementptr inbounds nuw i8, ptr %0, i64 48 %77 = load ptr, ptr %76, align 8, !tbaa !320 - %78 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %79 = load ptr, ptr %78, align 8, !tbaa !320 %.idx8.i = shl nsw i64 %.pre.i, 2 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %79, ptr align 4 %77, i64 %.idx8.i, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %77, ptr align 4 %75, i64 %.idx8.i, i1 false) br label %_ZN5Eigen8internal17CompressedStorageIfiEaSERKS2_.exit 80: ; preds = %_ZN5Eigen12SparseMatrixIfLi0EiE14initAssignmentIS1_EEvRKT_.exit diff --git a/bench/clamav/optimized/entconv.ll b/bench/clamav/optimized/entconv.ll index 28679c745f1..ac2be00d83c 100644 --- a/bench/clamav/optimized/entconv.ll +++ b/bench/clamav/optimized/entconv.ll @@ -1694,7 +1694,7 @@ define range(i32 0, 28) i32 @cli_codepage_to_utf8(ptr noundef %0, i64 noundef %1 br i1 %.not, label %.thread, label %.preheader170 .preheader170: ; preds = %22 - %.not128191 = icmp eq ptr %24, %18 + %.not128191 = icmp eq i64 %1, 1 br i1 %.not128191, label %._crit_edge, label %.lr.ph.preheader .lr.ph.preheader: ; preds = %.preheader170 @@ -1714,10 +1714,14 @@ define range(i32 0, 28) i32 @cli_codepage_to_utf8(ptr noundef %0, i64 noundef %1 %.not128 = icmp eq ptr %29, %18 br i1 %.not128, label %._crit_edge, label %.lr.ph -._crit_edge: ; preds = %28, %.lr.ph, %.preheader170 - %.091.lcssa = phi ptr [ %18, %.preheader170 ], [ %.091192, %.lr.ph ], [ %18, %28 ] - %.089.lcssa = phi i32 [ 1, %.preheader170 ], [ %.089193, %.lr.ph ], [ %26, %28 ] - %31 = load i8, ptr %.091.lcssa, align 1, !tbaa !3 +._crit_edge: ; preds = %28 + %.pre.pre = load i8, ptr %18, align 1, !tbaa !3 + br label %._crit_edge + +._crit_edge: ; preds = %.lr.ph, %.._crit_edge.loopexit_crit_edge, %.preheader170 + %31 = phi i8 [ %25, %.preheader170 ], [ %.pre.pre, %.._crit_edge.loopexit_crit_edge ], [ %27, %.lr.ph ] + %.091.lcssa = phi ptr [ %24, %.preheader170 ], [ %18, %.._crit_edge.loopexit_crit_edge ], [ %.091192, %.lr.ph ] + %.089.lcssa = phi i32 [ 1, %.preheader170 ], [ %26, %.._crit_edge.loopexit_crit_edge ], [ %.089193, %.lr.ph ] %32 = zext i8 %31 to i32 br label %33 diff --git a/bench/clamav/optimized/htmlnorm.ll b/bench/clamav/optimized/htmlnorm.ll index c99e7f18ed1..5ce9f7cc9e7 100644 --- a/bench/clamav/optimized/htmlnorm.ll +++ b/bench/clamav/optimized/htmlnorm.ll @@ -5736,7 +5736,7 @@ define internal fastcc ptr @cli_readchunk(ptr noundef nonnull captures(none) %0) %6 = load i64, ptr %5, align 8, !tbaa !28 %7 = getelementptr inbounds nuw i8, ptr %0, i64 16 %8 = load i64, ptr %7, align 8, !tbaa !51 - %9 = sub nsw i64 %6, %8 + %9 = sub i64 %6, %8 %10 = tail call i64 @llvm.smin.i64(i64 %9, i64 8191) %11 = trunc i64 %10 to i32 %.not150 = icmp eq i32 %11, 0 @@ -5759,6 +5759,7 @@ define internal fastcc ptr @cli_readchunk(ptr noundef nonnull captures(none) %0) %20 = tail call ptr %19(ptr noundef nonnull %15, i64 noundef %8, i64 noundef range(i64 1, 4294967296) %17, i32 noundef 0) #17 %.pre = load i64, ptr %7, align 8, !tbaa !51 %.pre8 = load i64, ptr %5, align 8, !tbaa !28 + %.pre9 = sub i64 %.pre8, %.pre br label %24 21: ; preds = %13 @@ -5767,15 +5768,16 @@ define internal fastcc ptr @cli_readchunk(ptr noundef nonnull captures(none) %0) br label %24 24: ; preds = %21, %16 - %25 = phi i64 [ %.pre8, %16 ], [ %6, %21 ] - %26 = phi i64 [ %.pre, %16 ], [ %8, %21 ] - %.0125 = phi ptr [ %20, %16 ], [ %23, %21 ] + %25 = phi i64 [ %9, %21 ], [ %.pre9, %16 ] + %26 = phi i64 [ %6, %21 ], [ %.pre8, %16 ] + %.0125 = phi i64 [ %8, %21 ], [ %.pre, %16 ] + %.0125 = phi ptr [ %23, %21 ], [ %20, %16 ] %27 = sub i64 0, %26 %28 = getelementptr inbounds i8, ptr %.0125, i64 %27 %29 = getelementptr inbounds i8, ptr %28, i64 %25 - %30 = icmp ult ptr %.0125, %29 + %30 = icmp sgt i64 %25, 0 %31 = icmp ne ptr %.0125, null - %or.cond = and i1 %31, %30 + %or.cond = select i1 %30, i1 %31, i1 false br i1 %or.cond, label %33, label %32 32: ; preds = %24 diff --git a/bench/clamav/optimized/mbox.ll b/bench/clamav/optimized/mbox.ll index d2ab2ce6029..76369a683eb 100644 --- a/bench/clamav/optimized/mbox.ll +++ b/bench/clamav/optimized/mbox.ll @@ -2621,13 +2621,16 @@ getEncTypeStr.exit: ; preds = %63, %.lr.ph875, %ge br i1 %.not55.i, label %.critedge.thread.i, label %259 259: ; preds = %257 + %.not5672.i = icmp slt i64 %258, 1 + br i1 %.not5672.i, label %.critedge.i, label %.lr.ph.preheader.i + +.lr.ph.preheader.i: ; preds = %259 %260 = getelementptr inbounds nuw i8, ptr %spec.select.i, i64 %258 %.071.i = getelementptr inbounds i8, ptr %260, i64 -1 - %.not5672.i = icmp ult ptr %.071.i, %spec.select.i - br i1 %.not5672.i, label %.critedge.i, label %.lr.ph.i + br label %.lr.ph.i -.lr.ph.i: ; preds = %259, %263 - %.073.i = phi ptr [ %.0.i, %263 ], [ %.071.i, %259 ] +.lr.ph.i: ; preds = %263, %.lr.ph.preheader.i + %.073.i = phi ptr [ %.0.i, %263 ], [ %.071.i, %.lr.ph.preheader.i ] %261 = load i8, ptr %.073.i, align 1, !tbaa !43 %262 = icmp eq i8 %261, 32 br i1 %262, label %263, label %.critedge.i @@ -4069,13 +4072,16 @@ define internal fastcc noundef zeroext i1 @next_is_folded_header(ptr noundef non %21 = load ptr, ptr %0, align 8, !tbaa !57 %22 = tail call ptr @lineGetData(ptr noundef %21) #21 %strlen = tail call i64 @strlen(ptr nonnull dereferenceable(1) %22) - %strchr = getelementptr inbounds i8, ptr %22, i64 %strlen - %23 = getelementptr inbounds i8, ptr %strchr, i64 -1 - %24 = icmp ugt ptr %23, %22 - br i1 %24, label %.lr.ph, label %.loopexit + %23 = icmp sgt i64 %strlen, 1 + br i1 %23, label %.lr.ph.preheader, label %.loopexit + +.lr.ph.preheader:; preds = %20 + %strchr = getelementptr inbounds nuw i8, ptr %22, i64 %strlen + %24 = getelementptr inbounds i8, ptr %strchr, i64 -1 + br label %.lr.ph -.lr.ph: ; preds = %20, %27 - %25 = phi ptr [ %28, %27 ], [ %23, %20 ] +.lr.ph: ; preds = %.lr.ph.preheader, %27 + %25 = phi ptr [ %28, %27 ], [ %24, %.lr.ph.preheader ] %26 = load i8, ptr %25, align 1, !tbaa !43 switch i8 %26, label %.loopexit [ i8 59, label %.loopexit.loopexit @@ -5042,15 +5048,16 @@ define internal fastcc range(i32 0, 2) i32 @boundaryStart(ptr noundef %0, ptr no 11: ; preds = %9 %12 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %0) #23 - %.not79 = icmp eq i64 %12, 0 + %.not79 = icmp slt i64 %12, 1 + br i1 %.not8097, label %.critedge, label %.lr.ph.preheader + +.lr.ph.preheader: ; preds = %11 %13 = getelementptr inbounds nuw i8, ptr %spec.select, i64 %12 %.06496 = getelementptr inbounds i8, ptr %13, i64 -1 - %.not8097 = icmp ult ptr %.06496, %spec.select - %or.cond100 = select i1 %.not79, i1 true, i1 %.not8097 - br i1 %or.cond100, label %.critedge, label %.lr.ph + br label %.lr.ph -.lr.ph: ; preds = %11, %16 - %.06498 = phi ptr [ %.064, %16 ], [ %.06496, %11 ] +.lr.ph: ; preds = %.lr.ph.preheader, %16 + %.06498 = phi ptr [ %.064, %16 ], [ %.06496, %.lr.ph.preheader ] %14 = load i8, ptr %.06498, align 1, !tbaa !43 %15 = icmp eq i8 %14, 32 br i1 %15, label %16, label %.critedge diff --git a/bench/clamav/optimized/msdoc.ll b/bench/clamav/optimized/msdoc.ll index efaee037f6f..33b4ade7592 100644 --- a/bench/clamav/optimized/msdoc.ll +++ b/bench/clamav/optimized/msdoc.ll @@ -1572,30 +1572,32 @@ define internal fastcc ptr @ole2_convert_utf(ptr noundef nonnull captures(none) br i1 %.not121, label %.loopexit127, label %.preheader128 .preheader128: ; preds = %22 - %.not122136 = icmp eq ptr %24, %18 - br i1 %.not122136, label %._crit_edge, label %.lr.ph.preheader + %.not122136 = icmp ne i64 %2, 1 + %.not123203 = icmp slt i8 %25, -64 + %or.cond213 = and i1 %.not122136, %.not123203 + br i1 %or.cond213, label %.lr.ph206, label %._crit_edge -.lr.ph.preheader: ; preds = %.preheader128 - %.not123196 = icmp slt i8 %25, -64 - br i1 %.not123196, label %.lr.ph199, label %._crit_edge - -.lr.phthread-pre-split: ; preds = %.lr.ph199 - %26 = add i64 %.086138197, 1 +.lr.ph.preheader: ; preds = %.lr.ph206 + %26 = add i64 %.086138204, 1 %.pr = load i8, ptr %27, align 1, !tbaa !43 %.not123 = icmp slt i8 %.pr, -64 br i1 %.not123, label %.lr.ph199, label %._crit_edge -.lr.ph199: ; preds = %.lr.ph.preheader, %.lr.phthread-pre-split - %.087137198 = phi ptr [ %27, %.lr.phthread-pre-split ], [ %24, %.lr.ph.preheader ] - %.086138197 = phi i64 [ %26, %.lr.phthread-pre-split ], [ 1, %.lr.ph.preheader ] +.lr.ph199: ; preds = %.preheader128, %.lr.phthread-pre-split + %.087137198 = phi ptr [ %27, %.lr.phthread-pre-split ], [ %24, %.preheader128 ] + %.086138197 = phi i64 [ %26, %.lr.phthread-pre-split ], [ 1, %.preheader128 ] %27 = getelementptr inbounds i8, ptr %.087137198, i64 -1 %.not122 = icmp eq ptr %27, %18 - br i1 %.not122, label %._crit_edge, label %.lr.phthread-pre-split + br i1 %.not122, label %.._crit_edge.loopexit_crit_edge, label %.lr.phthread-pre-split + +.._crit_edge.loopexit_crit_edge: ; preds = %.lr.ph206 + %.pre.pre = load i8, ptr %18, align 1, !tbaa !43 + br label %._crit_edge -._crit_edge: ; preds = %.lr.phthread-pre-split, %.lr.ph199, %.lr.ph.preheader, %.preheader128 - %.087.lcssa = phi ptr [ %18, %.preheader128 ], [ %24, %.lr.ph.preheader ], [ %18, %.lr.ph199 ], [ %27, %.lr.phthread-pre-split ] - %.086.lcssa = phi i64 [ 1, %.preheader128 ], [ 1, %.lr.ph.preheader ], [ %2, %.lr.ph199 ], [ %26, %.lr.phthread-pre-split ] - %28 = load i8, ptr %.087.lcssa, align 1, !tbaa !43 +._crit_edge: ; preds = %.lr.phthread-pre-split, %.._crit_edge.loopexit_crit_edge, %.preheader128 + %.087.lcssa = phi i8 [ %25, %.preheader128 ], [ %.pre.pre, %.._crit_edge.loopexit_crit_edge ], [ %.pr, %.lr.phthread-pre-split ] + %.086.lcssa = phi ptr [ %24, %.preheader128 ], [ %18, %.._crit_edge.loopexit_crit_edge ], [ %27, %.lr.phthread-pre-split ] + %.086.lcssa = phi i64 [ 1, %.preheader128 ], [ %2, %.._crit_edge.loopexit_crit_edge ], [ %26, %.lr.phthread-pre-split ] %29 = zext i8 %28 to i32 br label %30 diff --git a/bench/cmake/optimized/archive_read_support_format_zip.ll b/bench/cmake/optimized/archive_read_support_format_zip.ll index b731a23a095..65f52648681 100644 --- a/bench/cmake/optimized/archive_read_support_format_zip.ll +++ b/bench/cmake/optimized/archive_read_support_format_zip.ll @@ -1281,15 +1281,14 @@ define internal range(i32 -30, 1) i32 @archive_read_format_zip_read_data_skip_st %59 = phi ptr [ %99, %._crit_edge ], [ %52, %.preheader80 ] %60 = getelementptr inbounds nuw i8, ptr %59, i64 %58 %61 = getelementptr inbounds i8, ptr %60, i64 -16 - %.not6983 = icmp ugt ptr %59, %61 - br i1 %.not6983, label %._crit_edge, label %.lr.ph + br label %.lr.ph ._crit_edge85: ; preds = %._crit_edge, %.preheader80 call void (ptr, i32, ptr, ...) @archive_set_error(ptr noundef nonnull %0, i32 noundef 84, ptr noundef nonnull @.str.40) #21 br label %.thread75 .lr.ph: ; preds = %.preheader79, %94 - %.05884 = phi ptr [ %.159, %94 ], [ %59, %.preheader79 ] + %.05884 = phi ptr [ %.159, %94 ], [ %59, %.lr.ph.preheader ] %62 = getelementptr inbounds nuw i8, ptr %.05884, i64 3 %63 = load i8, ptr %62, align 1, !tbaa !36 switch i8 %63, label %92 [ @@ -1359,9 +1358,8 @@ define internal range(i32 -30, 1) i32 @archive_read_format_zip_read_data_skip_st call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #21 br label %.critedge -._crit_edge: ; preds = %94, %.preheader79 - %.058.lcssa = phi ptr [ %59, %.preheader79 ], [ %.159, %94 ] - %95 = ptrtoint ptr %.058.lcssa to i64 +._crit_edge: ; preds = %94 + %95 = ptrtoint ptr %.159 to i64 %96 = ptrtoint ptr %59 to i64 %97 = sub i64 %95, %96 %98 = call i64 @__archive_read_consume(ptr noundef nonnull %0, i64 noundef %97) #21 diff --git a/bench/cmake/optimized/cmListFileLexer.ll b/bench/cmake/optimized/cmListFileLexer.ll index 31443c41e9b..1fc85103313 100644 --- a/bench/cmake/optimized/cmListFileLexer.ll +++ b/bench/cmake/optimized/cmListFileLexer.ll @@ -1916,10 +1916,11 @@ yy_try_NUL_trans.exit: ; preds = %769, %753 %865 = getelementptr i8, ptr %864, i64 -1 %866 = load i8, ptr %865, align 1, !tbaa !35 %867 = icmp eq i8 %866, 13 + %.neg.neg.i.i = zext i1 %867 to i64 %.neg.i.i = sext i1 %867 to i64 - %868 = zext i1 %867 to i64 - %869 = getelementptr inbounds i8, ptr %864, i64 %.neg.i.i - %.not5759.i.i = icmp eq ptr %850, %869 + %868 = getelementptr inbounds i8, ptr %864, i64 %.neg.i.i + %869 = add i64 %861, %857 + %.not5759.i.i = icmp eq i64 %869, %.neg.neg.i.i br i1 %.not5759.i.i, label %._crit_edge.i.i, label %.lr.ph.i.i .lr.ph.i.i: ; preds = %862, %877 @@ -1943,7 +1944,7 @@ yy_try_NUL_trans.exit: ; preds = %769, %753 %879 = getelementptr inbounds nuw i8, ptr %.1.i.i, i64 1 %880 = getelementptr inbounds nuw i8, ptr %.04760.i.i, i64 1 store i8 %878, ptr %.04760.i.i, align 1, !tbaa !35 - %.not57.i.i = icmp eq ptr %879, %869 + %.not57.i.i = icmp eq ptr %879, %868 br i1 %.not57.i.i, label %._crit_edge.i.i, label %.lr.ph.i.i, !llvm.loop !71 ._crit_edge.i.i: ; preds = %877, %862 @@ -1954,7 +1955,7 @@ yy_try_NUL_trans.exit: ; preds = %769, %753 br label %884 884: ; preds = %._crit_edge.i.i, %855 - %.049.i.i = phi i64 [ %868, %._crit_edge.i.i ], [ 0, %855 ] + %.049.i.i = phi i64 [ %.neg.neg.i.i, %._crit_edge.i.i ], [ 0, %855 ] %.048.i.i = phi i64 [ %883, %._crit_edge.i.i ], [ %857, %855 ] store i64 %.049.i.i, ptr %856, align 8, !tbaa !70 %885 = trunc i64 %.048.i.i to i32 diff --git a/bench/coreutils-rs/optimized/4jcegsvljtrqsq46.ll b/bench/coreutils-rs/optimized/4jcegsvljtrqsq46.ll index 317a7bca2b0..c37367dfc88 100644 --- a/bench/coreutils-rs/optimized/4jcegsvljtrqsq46.ll +++ b/bench/coreutils-rs/optimized/4jcegsvljtrqsq46.ll @@ -719,8 +719,10 @@ define { i64, i8 } @_ZN6uu_env15string_expander14StringExpander8take_one17ha9db1 store i64 %6, ptr %.sroa.5.0..sroa_idx26, align 8 %.sroa.628.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 24 store ptr %16, ptr %.sroa.628.0..sroa_idx, align 8 - %17 = icmp eq ptr %16, %13 - br i1 %17, label %._crit_edge, label %.lr.ph + %.idx43 = shl nuw nsw i64 %.sroa.4.16.insert.ext, 4 + %17 = or disjoint i64 %.idx, %.idx43 + %18 = icmp eq i64 %17, 0 + br i1 %18, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %12 %18 = getelementptr inbounds nuw i8, ptr %0, i64 16 @@ -756,7 +758,7 @@ define { i64, i8 } @_ZN6uu_env15string_expander14StringExpander8take_one17ha9db1 unreachable common.resume: ; preds = %21, %24 - %common.resume.op = phi { ptr, i32 } [ %25, %24 ], [ %22, %21 ] + %common.resume.op = phi { ptr, i32 } [ %25, %25 ], [ %22, %22 ] resume { ptr, i32 } %common.resume.op "_ZN4core3ptr88drop_in_place$LT$alloc..vec..into_iter..IntoIter$LT$uu_env..string_parser..Chunk$GT$$GT$17h5d21fdba17a4baafE.exit": ; preds = %._crit_edge @@ -766,7 +768,7 @@ common.resume: ; preds = %21, %24 br label %32 28: ; preds = %.lr.ph, %52 - %29 = phi ptr [ %13, %.lr.ph ], [ %56, %52 ] + %29 = phi ptr [ %13, %.lr.ph ], [ %56, %53 ] tail call void @llvm.experimental.noalias.scope.decl(metadata !131) %30 = getelementptr inbounds nuw i8, ptr %29, i64 16 store ptr %30, ptr %.sroa.425.0..sroa_idx, align 8, !alias.scope !131, !noalias !134 @@ -777,8 +779,8 @@ common.resume: ; preds = %21, %24 br i1 %31, label %44, label %35 32: ; preds = %"_ZN4core3ptr88drop_in_place$LT$alloc..vec..into_iter..IntoIter$LT$uu_env..string_parser..Chunk$GT$$GT$17h5d21fdba17a4baafE.exit", %20 - %.sroa.3.0 = phi i8 [ %11, %20 ], [ 2, %"_ZN4core3ptr88drop_in_place$LT$alloc..vec..into_iter..IntoIter$LT$uu_env..string_parser..Chunk$GT$$GT$17h5d21fdba17a4baafE.exit" ] - %.sroa.0.0 = phi i64 [ %9, %20 ], [ undef, %"_ZN4core3ptr88drop_in_place$LT$alloc..vec..into_iter..IntoIter$LT$uu_env..string_parser..Chunk$GT$$GT$17h5d21fdba17a4baafE.exit" ] + %.sroa.3.0 = phi i8 [ %11, %21 ], [ 2, %"_ZN4core3ptr88drop_in_place$LT$alloc..vec..into_iter..IntoIter$LT$uu_env..string_parser..Chunk$GT$$GT$17h5d21fdba17a4baafE.exit" ] + %.sroa.0.0 = phi i64 [ %9, %21 ], [ undef, %"_ZN4core3ptr88drop_in_place$LT$alloc..vec..into_iter..IntoIter$LT$uu_env..string_parser..Chunk$GT$$GT$17h5d21fdba17a4baafE.exit" ] %33 = insertvalue { i64, i8 } poison, i64 %.sroa.0.0, 0 %34 = insertvalue { i64, i8 } %33, i8 %.sroa.3.0, 1 ret { i64, i8 } %34 @@ -799,7 +801,7 @@ common.resume: ; preds = %21, %24 br label %"_ZN132_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$alloc..vec..spec_extend..SpecExtend$LT$$RF$T$C$core..slice..iter..Iter$LT$T$GT$$GT$$GT$11spec_extend17h6a650d4252cb6caaE.exit" "_ZN132_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$alloc..vec..spec_extend..SpecExtend$LT$$RF$T$C$core..slice..iter..Iter$LT$T$GT$$GT$$GT$11spec_extend17h6a650d4252cb6caaE.exit": ; preds = %35, %.noexc - %41 = phi i64 [ %36, %35 ], [ %.pre.i, %.noexc ] + %41 = phi i64 [ %36, %36 ], [ %.pre.i, %.noexc ] %42 = load ptr, ptr %19, align 8, !alias.scope !141, !nonnull !5, !noundef !5 %43 = getelementptr inbounds i8, ptr %42, i64 %41 tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %43, ptr nonnull align 1 %.sroa.530.8.copyload, i64 %.sroa.7.8.copyload, i1 false) @@ -822,7 +824,7 @@ common.resume: ; preds = %21, %24 br label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he3e42d29207d138bE.exit" "_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he3e42d29207d138bE.exit": ; preds = %44, %.noexc22 - %49 = phi i64 [ %.pre.i21, %.noexc22 ], [ %45, %44 ] + %49 = phi i64 [ %.pre.i21, %.noexc22 ], [ %45, %45 ] %50 = load ptr, ptr %19, align 8, !alias.scope !142, !nonnull !5, !noundef !5 %51 = getelementptr inbounds i8, ptr %50, i64 %49 store i8 %.sroa.5.12.extract.trunc, ptr %51, align 1 diff --git a/bench/csmith/optimized/CGContext.ll b/bench/csmith/optimized/CGContext.ll index bb73b81c497..1174c351fc9 100644 --- a/bench/csmith/optimized/CGContext.ll +++ b/bench/csmith/optimized/CGContext.ll @@ -2465,7 +2465,6 @@ _ZNKSt6vectorIPK5BlockSaIS2_EE12_M_check_lenEmPKc.exit.i.i: ; preds = %_ZNSt6vec br label %_ZNSt6vectorIPK5BlockSaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i _ZNSt6vectorIPK5BlockSaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i: ; preds = %35, %.noexc7 - %36 = getelementptr inbounds nuw i8, ptr %33, i64 8 %.not.i17.i.i = icmp eq ptr %20, null br i1 %.not.i17.i.i, label %38, label %37 @@ -2483,57 +2482,57 @@ _ZNSt6vectorIPK5BlockSaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i: ; preds = 42: ; preds = %38 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %4, i8 0, i64 24, i1 false) - %.not.i.i.i.i8 = icmp eq ptr %36, %32 - br i1 %.not.i.i.i.i8, label %.noexc13.thread, label %46 + %.not.i.i.i.i8 = icmp eq i64 %23, -8 + br i1 %.not.i.i.i.i8, label %.noexc13.thread, label %45 .noexc13.thread: ; preds = %42 %43 = getelementptr inbounds nuw i8, ptr %4, i64 8 - %44 = getelementptr inbounds i8, ptr null, i64 %.pre + %44 = getelementptr inbounds nuw i8, ptr null, i64 %.pre %45 = getelementptr inbounds nuw i8, ptr %4, i64 16 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %4, i8 0, i64 16, i1 false) store ptr %44, ptr %45, align 8, !tbaa !47 - br label %53 - -46: ; preds = %42 - %47 = icmp ugt i64 %.pre, 9223372036854775800 - br i1 %47, label %.noexc.i.i21.invoke, label %_ZNSt16allocator_traitsISaIPK5BlockEE8allocateERS3_m.exit.i.i.i.i9, !prof !50 - -_ZNSt16allocator_traitsISaIPK5BlockEE8allocateERS3_m.exit.i.i.i.i9: ; preds = %46 - %48 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %.pre) #23 - to label %49 unwind label %_ZNSt6vectorIPK5BlockSaIS2_EED2Ev.exit17.thread55 - -49: ; preds = %_ZNSt16allocator_traitsISaIPK5BlockEE8allocateERS3_m.exit.i.i.i.i9 - store ptr %48, ptr %4, align 8, !tbaa !46 - %50 = getelementptr inbounds nuw i8, ptr %4, i64 8 - store ptr %48, ptr %50, align 8, !tbaa !49 - %51 = getelementptr inbounds nuw i8, ptr %48, i64 %.pre - %52 = getelementptr inbounds nuw i8, ptr %4, i64 16 - store ptr %51, ptr %52, align 8, !tbaa !47 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %48, ptr nonnull align 8 %32, i64 %.pre, i1 false) - br label %53 - -53: ; preds = %49, %.noexc13.thread - %54 = phi ptr [ %45, %.noexc13.thread ], [ %52, %49 ] - %55 = phi ptr [ %44, %.noexc13.thread ], [ %51, %49 ] - %56 = phi ptr [ %43, %.noexc13.thread ], [ %50, %49 ] - store ptr %55, ptr %56, align 8, !tbaa !49 - invoke void @_ZN6Effect19add_external_effectERKS_St6vectorIPK5BlockSaIS5_EE(ptr noundef nonnull align 8 dereferenceable(74) %41, ptr noundef nonnull align 8 dereferenceable(74) %1, ptr noundef nonnull %4) - to label %57 unwind label %64 + br label %52 -57: ; preds = %53 - %58 = load ptr, ptr %4, align 8, !tbaa !46 - %.not.i.i.i15 = icmp eq ptr %58, null - br i1 %.not.i.i.i15, label %_ZNSt6vectorIPK5BlockSaIS2_EED2Ev.exit, label %59 +57: ; preds = %41 + %46 = icmp ugt i64 %.pre, 9223372036854775800 + br i1 %46, label %.noexc.i.i21.invoke, label %_ZNSt16allocator_traitsISaIPK5BlockEE8allocateERS3_m.exit.i.i.i.i9, !prof !50 + +_ZNSt16allocator_traitsISaIPK5BlockEE8allocateERS3_m.exit.i.i.i.i9: ; preds = %45 + %47 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %.pre) #23 + to label %48 unwind label %_ZNSt6vectorIPK5BlockSaIS2_EED2Ev.exit17.thread55 + +48: ; preds = %_ZNSt16allocator_traitsISaIPK5BlockEE8allocateERS3_m.exit.i.i.i.i9 + store ptr %47, ptr %4, align 8, !tbaa !46 + %49 = getelementptr inbounds nuw i8, ptr %4, i64 8 + store ptr %47, ptr %49, align 8, !tbaa !49 + %50 = getelementptr inbounds nuw i8, ptr %47, i64 %.pre + %51 = getelementptr inbounds nuw i8, ptr %4, i64 16 + store ptr %50, ptr %51, align 8, !tbaa !47 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %47, ptr nonnull align 8 %32, i64 %.pre, i1 false) + br label %52 -59: ; preds = %57 - %60 = load ptr, ptr %54, align 8, !tbaa !47 - %61 = ptrtoint ptr %60 to i64 - %62 = ptrtoint ptr %58 to i64 - %63 = sub i64 %61, %62 - call void @_ZdlPvm(ptr noundef nonnull %58, i64 noundef %63) #19 +59: ; preds = %48, %.noexc13.thread + %53 = phi ptr [ %44, %.noexc13.thread ], [ %51, %48 ] + %54 = phi ptr [ %43, %.noexc13.thread ], [ %50, %48 ] + %55 = phi ptr [ %42, %.noexc13.thread ], [ %49, %48 ] + store ptr %54, ptr %55, align 8, !tbaa !49 + invoke void @_ZN6Effect19add_external_effectERKS_St6vectorIPK5BlockSaIS5_EE(ptr noundef nonnull align 8 dereferenceable(74) %40, ptr noundef nonnull align 8 dereferenceable(74) %1, ptr noundef nonnull %4) + to label %56 unwind label %63 + +56: ; preds = %52 + %57 = load ptr, ptr %4, align 8, !tbaa !46 + %.not.i.i.i15 = icmp eq ptr %57, null + br i1 %.not.i.i.i15, label %_ZNSt6vectorIPK5BlockSaIS2_EED2Ev.exit, label %58 + +58: ; preds = %56 + %59 = load ptr, ptr %53, align 8, !tbaa !47 + %60 = ptrtoint ptr %59 to i64 + %61 = ptrtoint ptr %57 to i64 + %62 = sub i64 %60, %61 + call void @_ZdlPvm(ptr noundef nonnull %57, i64 noundef %62) #19 br label %_ZNSt6vectorIPK5BlockSaIS2_EED2Ev.exit -64: ; preds = %53 +64: ; preds = %52 %65 = landingpad { ptr, i32 } cleanup %66 = load ptr, ptr %4, align 8, !tbaa !46 @@ -2541,21 +2540,21 @@ _ZNSt16allocator_traitsISaIPK5BlockEE8allocateERS3_m.exit.i.i.i.i9: ; preds = %4 br i1 %.not.i.i.i16, label %_ZNSt6vectorIPK5BlockSaIS2_EED2Ev.exit17.thread, label %67 67: ; preds = %64 - %68 = load ptr, ptr %54, align 8, !tbaa !47 + %68 = load ptr, ptr %53, align 8, !tbaa !47 %69 = ptrtoint ptr %68 to i64 %70 = ptrtoint ptr %66 to i64 %71 = sub i64 %69, %70 call void @_ZdlPvm(ptr noundef nonnull %66, i64 noundef %71) #19 br label %_ZNSt6vectorIPK5BlockSaIS2_EED2Ev.exit17.thread -_ZNSt6vectorIPK5BlockSaIS2_EED2Ev.exit: ; preds = %38, %59, %57 +_ZNSt6vectorIPK5BlockSaIS2_EED2Ev.exit: ; preds = %38, %58, %56 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %5, i8 0, i64 24, i1 false) - %.not.i.i.i.i18 = icmp eq ptr %36, %32 + %.not.i.i.i.i18 = icmp eq i64 %23, -8 br i1 %.not.i.i.i.i18, label %.noexc23.thread, label %75 .noexc23.thread: ; preds = %_ZNSt6vectorIPK5BlockSaIS2_EED2Ev.exit %72 = getelementptr inbounds nuw i8, ptr %5, i64 8 - %73 = getelementptr inbounds i8, ptr null, i64 %.pre + %73 = getelementptr inbounds nuw i8, ptr null, i64 %.pre %74 = getelementptr inbounds nuw i8, ptr %5, i64 16 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %5, i8 0, i64 16, i1 false) store ptr %73, ptr %74, align 8, !tbaa !47 @@ -2565,7 +2564,7 @@ _ZNSt6vectorIPK5BlockSaIS2_EED2Ev.exit: ; preds = %38, %59, %57 %76 = icmp ugt i64 %.pre, 9223372036854775800 br i1 %76, label %.noexc.i.i21.invoke, label %_ZNSt16allocator_traitsISaIPK5BlockEE8allocateERS3_m.exit.i.i.i.i19, !prof !50 -.noexc.i.i21.invoke: ; preds = %75, %46 +.noexc.i.i21.invoke: ; preds = %75, %45 invoke void @_ZSt28__throw_bad_array_new_lengthv() #22 to label %.noexc.i.i21.cont unwind label %_ZNSt6vectorIPK5BlockSaIS2_EED2Ev.exit17.thread55 @@ -2574,7 +2573,7 @@ _ZNSt6vectorIPK5BlockSaIS2_EED2Ev.exit: ; preds = %38, %59, %57 _ZNSt16allocator_traitsISaIPK5BlockEE8allocateERS3_m.exit.i.i.i.i19: ; preds = %75 %77 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %.pre) #23 - to label %78 unwind label %_ZNSt6vectorIPK5BlockSaIS2_EED2Ev.exit17.thread55 + to label %77 unwind label %_ZNSt6vectorIPK5BlockSaIS2_EED2Ev.exit17.thread55 78: ; preds = %_ZNSt16allocator_traitsISaIPK5BlockEE8allocateERS3_m.exit.i.i.i.i19 store ptr %77, ptr %5, align 8, !tbaa !46 @@ -2587,13 +2586,13 @@ _ZNSt16allocator_traitsISaIPK5BlockEE8allocateERS3_m.exit.i.i.i.i19: ; preds = % br label %82 82: ; preds = %78, %.noexc23.thread - %83 = phi ptr [ %74, %.noexc23.thread ], [ %81, %78 ] - %84 = phi ptr [ %73, %.noexc23.thread ], [ %80, %78 ] - %85 = phi ptr [ %72, %.noexc23.thread ], [ %79, %78 ] + %83 = phi ptr [ %74, %.noexc23.thread ], [ %81, %77 ] + %84 = phi ptr [ %73, %.noexc23.thread ], [ %80, %77 ] + %85 = phi ptr [ %72, %.noexc23.thread ], [ %79, %77 ] store ptr %84, ptr %85, align 8, !tbaa !49 %86 = getelementptr inbounds nuw i8, ptr %0, i64 136 invoke void @_ZN6Effect19add_external_effectERKS_St6vectorIPK5BlockSaIS5_EE(ptr noundef nonnull align 8 dereferenceable(74) %86, ptr noundef nonnull align 8 dereferenceable(74) %1, ptr noundef nonnull %5) - to label %87 unwind label %94 + to label %86 unwind label %94 87: ; preds = %82 %88 = load ptr, ptr %5, align 8, !tbaa !46 @@ -2639,9 +2638,9 @@ _ZNSt6vectorIPK5BlockSaIS2_EED2Ev.exit17: ; preds = %25, %_ZNKSt6vectorI br i1 %.not.i.i.i31, label %_ZNSt6vectorIPK5BlockSaIS2_EED2Ev.exit32, label %_ZNSt6vectorIPK5BlockSaIS2_EED2Ev.exit17.thread _ZNSt6vectorIPK5BlockSaIS2_EED2Ev.exit17.thread: ; preds = %97, %94, %67, %64, %_ZNSt6vectorIPK5BlockSaIS2_EED2Ev.exit17.thread55, %_ZNSt6vectorIPK5BlockSaIS2_EED2Ev.exit17 - %.pn52 = phi { ptr, i32 } [ %lpad.thr_comm.split-lp, %_ZNSt6vectorIPK5BlockSaIS2_EED2Ev.exit17 ], [ %lpad.thr_comm, %_ZNSt6vectorIPK5BlockSaIS2_EED2Ev.exit17.thread55 ], [ %95, %97 ], [ %95, %94 ], [ %65, %67 ], [ %65, %64 ] - %.sroa.22.151 = phi ptr [ %19, %_ZNSt6vectorIPK5BlockSaIS2_EED2Ev.exit17 ], [ %39, %_ZNSt6vectorIPK5BlockSaIS2_EED2Ev.exit17.thread55 ], [ %39, %97 ], [ %39, %94 ], [ %39, %67 ], [ %39, %64 ] - %.sroa.0.150 = phi ptr [ %20, %_ZNSt6vectorIPK5BlockSaIS2_EED2Ev.exit17 ], [ %32, %_ZNSt6vectorIPK5BlockSaIS2_EED2Ev.exit17.thread55 ], [ %32, %97 ], [ %32, %94 ], [ %32, %67 ], [ %32, %64 ] + %.pn52 = phi { ptr, i32 } [ %lpad.thr_comm.split-lp, %_ZNSt6vectorIPK5BlockSaIS2_EED2Ev.exit17 ], [ %lpad.thr_comm, %_ZNSt6vectorIPK5BlockSaIS2_EED2Ev.exit17.thread55 ], [ %95, %96 ], [ %94, %93 ], [ %64, %66 ], [ %64, %63 ] + %.sroa.22.151 = phi ptr [ %19, %_ZNSt6vectorIPK5BlockSaIS2_EED2Ev.exit17 ], [ %39, %_ZNSt6vectorIPK5BlockSaIS2_EED2Ev.exit17.thread55 ], [ %39, %96 ], [ %39, %93 ], [ %39, %66 ], [ %39, %63 ] + %.sroa.0.150 = phi ptr [ %20, %_ZNSt6vectorIPK5BlockSaIS2_EED2Ev.exit17 ], [ %32, %_ZNSt6vectorIPK5BlockSaIS2_EED2Ev.exit17.thread55 ], [ %32, %96 ], [ %32, %93 ], [ %32, %66 ], [ %32, %63 ] %102 = ptrtoint ptr %.sroa.22.151 to i64 %103 = ptrtoint ptr %.sroa.0.150 to i64 %104 = sub i64 %102, %103 diff --git a/bench/darktable/optimized/colorchart.ll b/bench/darktable/optimized/colorchart.ll index feb6b6cfa29..a9c640e33b6 100644 --- a/bench/darktable/optimized/colorchart.ll +++ b/bench/darktable/optimized/colorchart.ll @@ -1404,13 +1404,13 @@ parse_double.exit538: ; preds = %.preheader680 %342 = fadd reassoc nsz arcp contract afn float %.0410, %282 %343 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %306) #16 %.fr48.i = freeze i64 %343 - %344 = getelementptr inbounds nuw i8, ptr %306, i64 %.fr48.i - %.02340.i = getelementptr inbounds i8, ptr %344, i64 -1 - %.not41.i = icmp ult ptr %.02340.i, %306 + %.not41.i = icmp slt i64 %.fr48.i, 1 br i1 %.not41.i, label %.loopexit.backedge, label %.lr.ph.i .lr.ph.i: ; preds = %341 - %345 = add i64 %.fr48.i, 1 + %344 = getelementptr inbounds nuw i8, ptr %306, i64 %.fr48.i + %.02340.i = getelementptr inbounds i8, ptr %344, i64 -1 + %345 = add nuw i64 %.fr48.i, 1 %.not29.i = icmp ult i64 %345, %304 br i1 %.not29.i, label %.lr.ph.split.us.i, label %.lr.ph.split.i @@ -1436,7 +1436,7 @@ parse_double.exit538: ; preds = %.preheader680 br i1 %350, label %351, label %352 351: ; preds = %349 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %.pn42.us.i, ptr nonnull align 1 %306, i64 %345, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.pn42.us.i, ptr noundef nonnull align 1 dereferenceable(1) %306, i64 %345, i1 false) store i8 %.022.ph.us.i, ptr %306, align 1, !tbaa !23 br label %352 @@ -1491,19 +1491,19 @@ parse_double.exit538: ; preds = %.preheader680 %366 = fadd reassoc nsz arcp contract afn float %.0412, %292 %367 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %307) #16 %.fr48.i539 = freeze i64 %367 - %368 = getelementptr inbounds nuw i8, ptr %307, i64 %.fr48.i539 - %.02340.i540 = getelementptr inbounds i8, ptr %368, i64 -1 - %.not41.i541 = icmp ult ptr %.02340.i540, %307 - br i1 %.not41.i541, label %.loopexit669.backedge, label %.lr.ph.i542 + %.not41.i540 = icmp slt i64 %.fr48.i539, 1 + br i1 %.not41.i540, label %.loopexit669.backedge, label %.lr.ph.i541 .lr.ph.i542: ; preds = %365 - %369 = add i64 %.fr48.i539, 1 + %368 = getelementptr inbounds nuw i8, ptr %307, i64 %.fr48.i539 + %.02340.i542 = getelementptr inbounds i8, ptr %368, i64 -1 + %369 = add nuw i64 %.fr48.i539, 1 %.not29.i543 = icmp ult i64 %369, %305 br i1 %.not29.i543, label %.lr.ph.split.us.i553, label %.lr.ph.split.i544 .lr.ph.split.us.i553: ; preds = %.lr.ph.i542, %376 - %.02343.us.i554 = phi ptr [ %.023.us.i558, %376 ], [ %.02340.i540, %.lr.ph.i542 ] - %.pn42.us.i555 = phi ptr [ %.02343.us.i554, %376 ], [ %368, %.lr.ph.i542 ] + %.02343.us.i554 = phi ptr [ %.023.us.i558, %376 ], [ %.02340.i542, %.lr.ph.i541 ] + %.pn42.us.i555 = phi ptr [ %.02343.us.i554, %376 ], [ %368, %.lr.ph.i541 ] %370 = load i8, ptr %.02343.us.i554, align 1, !tbaa !23 switch i8 %370, label %.thread36.i550 [ i8 122, label %371 @@ -1523,7 +1523,7 @@ parse_double.exit538: ; preds = %.preheader680 br i1 %374, label %375, label %376 375: ; preds = %373 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %.pn42.us.i555, ptr nonnull align 1 %307, i64 %369, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.pn42.us.i555, ptr noundef nonnull align 1 dereferenceable(1) %307, i64 %369, i1 false) store i8 %.022.ph.us.i557, ptr %307, align 1, !tbaa !23 br label %376 @@ -1533,7 +1533,7 @@ parse_double.exit538: ; preds = %.preheader680 br i1 %.not.us.i559, label %.loopexit669.backedge, label %.lr.ph.split.us.i553 .lr.ph.split.i544: ; preds = %.lr.ph.i542, %383 - %.02343.i545 = phi ptr [ %.023.i547, %383 ], [ %.02340.i540, %.lr.ph.i542 ] + %.02343.i545 = phi ptr [ %.023.i547, %383 ], [ %.02340.i542, %.lr.ph.i541 ] %377 = load i8, ptr %.02343.i545, align 1, !tbaa !23 switch i8 %377, label %.thread36.i550 [ i8 122, label %378 diff --git a/bench/darktable/optimized/exif.ll b/bench/darktable/optimized/exif.ll index cef0e3e3c11..548265eafac 100644 --- a/bench/darktable/optimized/exif.ll +++ b/bench/darktable/optimized/exif.ll @@ -25858,13 +25858,13 @@ define range(i32 0, 2) i32 @dt_exif_xmp_read(ptr noundef %0, ptr noundef %1, i32 %113 = alloca %"class.std::__cxx11::basic_string", align 8 %114 = alloca %"class.std::__cxx11::basic_string", align 8 %115 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #35 - %116 = getelementptr inbounds nuw i8, ptr %1, i64 %115 - %117 = getelementptr inbounds i8, ptr %116, i64 -4 - %.not = icmp ult ptr %117, %1 - br i1 %.not, label %120, label %118 + %.not = icmp slt i64 %115, 4 + br i1 %.not, label %120, label %116 118: ; preds = %3 - %119 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %117, ptr noundef nonnull dereferenceable(5) @.str.282) #40 + %117 = getelementptr inbounds nuw i8, ptr %1, i64 %115 + %118 = getelementptr inbounds i8, ptr %117, i64 -4 + %119 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %118, ptr noundef nonnull dereferenceable(5) @.str.282) #40 %.not422 = icmp eq i32 %119, 0 br i1 %.not422, label %2931, label %120 @@ -33304,7 +33304,7 @@ _ZNSt10unique_ptrIN5Exiv25ImageESt14default_deleteIS1_EED2Ev.exit818: ; preds = br label %2931 2931: ; preds = %_ZNSt10unique_ptrIN5Exiv25ImageESt14default_deleteIS1_EED2Ev.exit, %118, %2929 - %.0 = phi i32 [ 1, %2929 ], [ 1, %118 ], [ %not.cond, %_ZNSt10unique_ptrIN5Exiv25ImageESt14default_deleteIS1_EED2Ev.exit ] + %.0 = phi i32 [ 1, %2929 ], [ 1, %116 ], [ %not.cond, %_ZNSt10unique_ptrIN5Exiv25ImageESt14default_deleteIS1_EED2Ev.exit ] ret i32 %.0 2932: ; preds = %2926 diff --git a/bench/darktable/optimized/imageop_math.ll b/bench/darktable/optimized/imageop_math.ll index aa508ac30b6..c7fb0593fee 100644 --- a/bench/darktable/optimized/imageop_math.ll +++ b/bench/darktable/optimized/imageop_math.ll @@ -93,7 +93,9 @@ define void @dt_iop_flip_and_zoom_8(ptr noundef readonly captures(address) %0, i %68 = shl nsw i32 %67, 2 %69 = sext i32 %68 to i64 %70 = getelementptr inbounds i8, ptr %0, i64 %69 - br label %71 + %71 = add nsw i64 %69, %49 + %invariant.op = xor i64 %71, -1 + br label %72 71: ; preds = %.lr.ph.us, %.loopexit.us %.0151175.us = phi i32 [ 0, %.lr.ph.us ], [ %96, %.loopexit.us ] @@ -103,9 +105,8 @@ define void @dt_iop_flip_and_zoom_8(ptr noundef readonly captures(address) %0, i %73 = mul i32 %48, %72 %74 = sext i32 %73 to i64 %75 = getelementptr inbounds i8, ptr %70, i64 %74 - %76 = getelementptr inbounds i8, ptr %75, i64 %49 - %.not171.us = icmp uge ptr %76, %0 - %77 = getelementptr inbounds i8, ptr %75, i64 %50 + %.not171.us = icmp sgt i64 %74, %invariant.op + %77 = getelementptr inbounds i8, ptr %76, i64 %50 %78 = icmp ult ptr %77, %52 %or.cond = select i1 %.not171.us, i1 %78, i1 false br i1 %or.cond, label %.preheader.us.preheader, label %.loopexit.us diff --git a/bench/darktable/optimized/piwigo.ll b/bench/darktable/optimized/piwigo.ll index bda6a916dc9..17a46d8ed5c 100644 --- a/bench/darktable/optimized/piwigo.ll +++ b/bench/darktable/optimized/piwigo.ll @@ -1346,25 +1346,23 @@ define internal void @_piwigo_album_changed(ptr readnone captures(none) %0, ptr %23 = getelementptr inbounds nuw i8, ptr %21, i64 %22 %24 = getelementptr inbounds i8, ptr %23, i64 -1 %25 = load i8, ptr %24, align 1, !tbaa !6 - %26 = icmp eq i8 %25, 41 - br i1 %26, label %.preheader, label %31 - -.preheader: ; preds = %18 - %.not28 = icmp eq ptr %24, %21 - br i1 %.not28, label %.critedge, label %.lr.ph.preheader + %26 = icmp ne i8 %25, 41 + %.not28 = icmp eq i64 %22, 1 + %or.cond = or i1 %26, %.not28 + br i1 %or.cond, label %31, label %.lr.ph.preheader .lr.phthread-pre-split: ; preds = %.lr.ph.preheader %.pr31 = load i8, ptr %27, align 1, !tbaa !6 %.not24 = icmp eq i8 %.pr31, 40 br i1 %.not24, label %.critedge.thread, label %.lr.ph.preheader -.lr.ph.preheader: ; preds = %.preheader, %.lr.phthread-pre-split - %.02934 = phi ptr [ %27, %.lr.phthread-pre-split ], [ %24, %.preheader ] +.lr.ph.preheader: ; preds = %18, %.lr.phthread-pre-split + %.02934 = phi ptr [ %27, %.lr.phthread-pre-split ], [ %24, %18 ] %27 = getelementptr inbounds i8, ptr %.02934, i64 -1 %.not = icmp eq ptr %27, %21 br i1 %.not, label %.critedge, label %.lr.phthread-pre-split -.critedge: ; preds = %.lr.ph.preheader, %.preheader +.critedge: ; preds = %.lr.ph.preheader %.pr = load i8, ptr %21, align 1, !tbaa !6 %28 = icmp eq i8 %.pr, 40 br i1 %28, label %.critedge.thread, label %31 diff --git a/bench/eastl/optimized/BenchmarkAlgorithm.ll b/bench/eastl/optimized/BenchmarkAlgorithm.ll index ba697d0b960..d9b5439e119 100644 --- a/bench/eastl/optimized/BenchmarkAlgorithm.ll +++ b/bench/eastl/optimized/BenchmarkAlgorithm.ll @@ -11277,7 +11277,7 @@ if.else61.i.i.i: ; preds = %for.cond.i.i.i if.then64.i.i.i: ; preds = %if.else61.i.i.i %add.ptr.i38.i.i.i = getelementptr inbounds i8, ptr %add.ptr.i37.i.i.i, i64 -32 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(32) %__t65.sroa.0.i.i.i, ptr noundef nonnull align 1 dereferenceable(32) %add.ptr.i38.i.i.i, i64 32, i1 false) - %tobool.not.i.i.i.i.i42.i.i.i = icmp eq ptr %add.ptr.i38.i.i.i, %__p.sroa.0.0.i.i.i + %tobool.not.i.i.i.i.i42.i.i.i = icmp eq i64 %__n.0.i.i.i, 1 br i1 %tobool.not.i.i.i.i.i42.i.i.i, label %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN12_GLOBAL__N_18SizedPODILm32EEESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit.i.i.i, label %if.then.i.i.i.i.i43.i.i.i if.then.i.i.i.i.i43.i.i.i: ; preds = %if.then64.i.i.i @@ -11982,7 +11982,8 @@ _ZN2EA4StdC9Stopwatch17GetStopwatchCycleEv.exit.i.i.i1064: ; preds = %if.then.i. _ZN2EA4StdC9Stopwatch7RestartEv.exit.i1068: ; preds = %_ZN2EA4StdC9Stopwatch17GetStopwatchCycleEv.exit.i.i.i1064, %if.then2.i.i.i1077 %.sink.i.i.i1069 = phi i64 [ %314, %if.then2.i.i.i1077 ], [ %add.i.i.i.i1067, %_ZN2EA4StdC9Stopwatch17GetStopwatchCycleEv.exit.i.i.i1064 ] store i64 %.sink.i.i.i1069, ptr %stopwatch2, align 8 - %cmp.not.i.i1070 = icmp eq ptr %add.ptr.i.i.i1056, %310 + %.idx = mul i64 %div58987, 24 + %cmp.not.i.i1070 = icmp eq i64 %.idx, 24 %cmp1.not.i.i1071 = icmp eq ptr %add.ptr.i.i.i1056, %311 %or.cond.i1072 = or i1 %cmp.not.i.i1070, %cmp1.not.i.i1071 br i1 %or.cond.i1072, label %_ZN5eastl6rotateIP10TestObjectEET_S3_S3_S3_.exit.i, label %if.then2.i.i1073 @@ -12217,7 +12218,8 @@ _ZN2EA4StdC9Stopwatch17GetStopwatchCycleEv.exit.i.i.i1189: ; preds = %if.then.i. _ZN2EA4StdC9Stopwatch7RestartEv.exit.i1193: ; preds = %_ZN2EA4StdC9Stopwatch17GetStopwatchCycleEv.exit.i.i.i1189, %if.then2.i.i.i1203 %.sink.i.i.i1194 = phi i64 [ %345, %if.then2.i.i.i1203 ], [ %add.i.i.i.i1192, %_ZN2EA4StdC9Stopwatch17GetStopwatchCycleEv.exit.i.i.i1189 ] store i64 %.sink.i.i.i1194, ptr %stopwatch2, align 8 - %cmp.not.i.i1195 = icmp eq ptr %add.ptr.i.i.i1181, %341 + %.idx1524 = mul i64 %div66991, 24 + %cmp.not.i.i1195 = icmp eq i64 %.idx1524, 24 %cmp1.not.i.i1196 = icmp eq ptr %add.ptr.i.i.i1181, %342 %or.cond.i1197 = or i1 %cmp.not.i.i1195, %cmp1.not.i.i1196 br i1 %or.cond.i1197, label %_ZN5eastl6rotateIP10TestObjectEET_S3_S3_S3_.exit.i1199, label %if.then2.i.i1198 @@ -18741,7 +18743,7 @@ if.else61: ; preds = %for.cond if.then64: ; preds = %if.else61 %add.ptr.i21 = getelementptr inbounds i8, ptr %add.ptr.i20, i64 -4 %5 = load i32, ptr %add.ptr.i21, align 4 - %tobool.not.i.i.i.i.i25 = icmp eq ptr %add.ptr.i21, %__p.sroa.0.0 + %tobool.not.i.i.i.i.i25 = icmp eq i64 %__n.0, 1 br i1 %tobool.not.i.i.i.i.i25, label %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEES6_ET0_T_S8_S7_.exit, label %if.then.i.i.i.i.i26 if.then.i.i.i.i.i26: ; preds = %if.then64 diff --git a/bench/eastl/optimized/EAMemory.ll b/bench/eastl/optimized/EAMemory.ll index f0724ba2385..367a67f5a3e 100644 --- a/bench/eastl/optimized/EAMemory.ll +++ b/bench/eastl/optimized/EAMemory.ll @@ -1713,7 +1713,8 @@ if.then: ; preds = %entry br i1 %tobool2.not, label %return, label %for.cond.preheader for.cond.preheader: ; preds = %if.then - %cmp4.not17 = icmp ugt ptr %pMemory, %add.ptr1 + %0 = sub i64 %memorySize, %findSize + %cmp4.not17 = icmp slt i64 %0, 0 br i1 %cmp4.not17, label %return, label %for.body.lr.ph for.body.lr.ph: ; preds = %for.cond.preheader diff --git a/bench/eastl/optimized/EAString.ll b/bench/eastl/optimized/EAString.ll index de67f5d8ee7..287e86caa9c 100644 --- a/bench/eastl/optimized/EAString.ll +++ b/bench/eastl/optimized/EAString.ll @@ -454,8 +454,8 @@ if.end.i: ; preds = %entry %add.ptr4.i = getelementptr inbounds i8, ptr %pDest, i64 %nDestCapacity %add.ptr5.i = getelementptr inbounds i8, ptr %add.ptr4.i, i64 -1 %cmp673.i = icmp ult ptr %pSource, %spec.select.i - %cmp774.i = icmp ult ptr %pDest, %add.ptr5.i - %or.cond7275.i = select i1 %cmp673.i, i1 %cmp774.i, i1 false + %cmp774.i = icmp sgt i64 %nDestCapacity, 1 + %or.cond7275.i = and i1 %cmp774.i, %cmp673.i br i1 %or.cond7275.i, label %while.body.i, label %while.end.i while.body.i: ; preds = %if.end.i, %land.end14.i @@ -573,8 +573,8 @@ if.end: ; preds = %entry %add.ptr4 = getelementptr inbounds i8, ptr %pDest, i64 %nDestCapacity %add.ptr5 = getelementptr inbounds i8, ptr %add.ptr4, i64 -1 %cmp673 = icmp ult ptr %pSource, %spec.select - %cmp774 = icmp ult ptr %pDest, %add.ptr5 - %or.cond7275 = select i1 %cmp673, i1 %cmp774, i1 false + %cmp774 = icmp sgt i64 %nDestCapacity, 1 + %or.cond7275 = and i1 %cmp673, %cmp774 br i1 %or.cond7275, label %while.body, label %while.end while.body: ; preds = %if.end, %land.end14 @@ -740,8 +740,8 @@ if.end.i: ; preds = %entry %add.ptr4.i = getelementptr inbounds i16, ptr %pDest, i64 %nDestCapacity %add.ptr5.i = getelementptr inbounds i8, ptr %add.ptr4.i, i64 -2 %cmp665.i = icmp ult ptr %pSource, %spec.select.i - %cmp766.i = icmp ult ptr %pDest, %add.ptr5.i - %or.cond4267.i = select i1 %cmp665.i, i1 %cmp766.i, i1 false + %cmp766.i = icmp sgt i64 %nDestCapacity, 1 + %or.cond4267.i = and i1 %cmp766.i, %cmp665.i br i1 %or.cond4267.i, label %while.body.i, label %while.end.i while.body.i: ; preds = %if.end.i, %land.end14.i @@ -868,8 +868,8 @@ if.end.i: ; preds = %entry %add.ptr4.i = getelementptr inbounds i16, ptr %pDest, i64 %nDestCapacity %add.ptr5.i = getelementptr inbounds i8, ptr %add.ptr4.i, i64 -2 %cmp622.i = icmp ult ptr %pSource, %spec.select.i - %cmp723.i = icmp ult ptr %pDest, %add.ptr5.i - %or.cond2124.i = select i1 %cmp622.i, i1 %cmp723.i, i1 false + %cmp723.i = icmp sgt i64 %nDestCapacity, 1 + %or.cond2124.i = and i1 %cmp723.i, %cmp622.i br i1 %or.cond2124.i, label %while.body.i, label %while.end.i while.body.i: ; preds = %if.end.i, %land.end14.i @@ -934,8 +934,8 @@ if.end.i: ; preds = %entry %add.ptr4.i = getelementptr inbounds i32, ptr %pDest, i64 %nDestCapacity %add.ptr5.i = getelementptr inbounds i8, ptr %add.ptr4.i, i64 -4 %cmp665.i = icmp ult ptr %pSource, %spec.select.i - %cmp766.i = icmp ult ptr %pDest, %add.ptr5.i - %or.cond4267.i = select i1 %cmp665.i, i1 %cmp766.i, i1 false + %cmp766.i = icmp sgt i64 %nDestCapacity, 1 + %or.cond4267.i = and i1 %cmp766.i, %cmp665.i br i1 %or.cond4267.i, label %while.body.i, label %while.end.i while.body.i: ; preds = %if.end.i, %land.end14.i @@ -1061,8 +1061,8 @@ if.end.i: ; preds = %entry %add.ptr4.i = getelementptr inbounds i32, ptr %pDest, i64 %nDestCapacity %add.ptr5.i = getelementptr inbounds i8, ptr %add.ptr4.i, i64 -4 %cmp621.i = icmp ult ptr %pSource, %spec.select.i - %cmp722.i = icmp ult ptr %pDest, %add.ptr5.i - %or.cond23.i = select i1 %cmp621.i, i1 %cmp722.i, i1 false + %cmp722.i = icmp sgt i64 %nDestCapacity, 1 + %or.cond23.i = and i1 %cmp722.i, %cmp621.i br i1 %or.cond23.i, label %while.body.i, label %while.end.i while.body.i: ; preds = %if.end.i, %land.rhs12.i @@ -6955,14 +6955,17 @@ for.end: ; preds = %for.body, %entry define dso_local noundef ptr @_ZN2EA4StdC6StrrevEPc(ptr noundef returned captures(address, ret: address, provenance) %pString) local_unnamed_addr #1 { entry: %call.i = tail call noundef i64 @strlen(ptr noundef nonnull readonly dereferenceable(1) %pString) #38 - %add.ptr = getelementptr inbounds i8, ptr %pString, i64 %call.i + %cmp11 = icmp sgt i64 %call.i, 1 + br i1 %cmp11, label %for.body.preheader, label %for.end + +for.body.preheader: ; preds = %entry + %add.ptr = getelementptr inbounds nuw i8, ptr %pString, i64 %call.i %p2.010 = getelementptr inbounds i8, ptr %add.ptr, i64 -1 - %cmp11 = icmp ult ptr %pString, %p2.010 - br i1 %cmp11, label %for.body, label %for.end + br label %for.body -for.body: ; preds = %entry, %for.body - %p2.013 = phi ptr [ %p2.0, %for.body ], [ %p2.010, %entry ] - %p1.012 = phi ptr [ %incdec.ptr, %for.body ], [ %pString, %entry ] +for.body: ; preds = %for.body.preheader, %for.body + %p2.013 = phi ptr [ %p2.0, %for.body ], [ %p2.010, %for.body.preheader ] + %p1.012 = phi ptr [ %incdec.ptr, %for.body ], [ %pString, %for.body.preheader ] %0 = load i8, ptr %p2.013, align 1 %1 = load i8, ptr %p1.012, align 1 store i8 %1, ptr %p2.013, align 1 @@ -7032,14 +7035,17 @@ while.end.i: ; preds = %while.cond.i _ZN2EA4StdC6StrlenEPKDs.exit: ; preds = %for.body.i, %for.body.i.preheader, %while.end.i %.pn.i = phi i64 [ %sub.ptr.lhs.cast12.i, %while.end.i ], [ %0, %for.body.i.preheader ], [ %3, %for.body.i ] %retval.0.in.i = sub i64 %.pn.i, %0 - %add.ptr = getelementptr inbounds i8, ptr %pString, i64 %retval.0.in.i + %cmp14 = icmp sgt i64 %retval.0.in.i, 2 + br i1 %cmp14, label %for.body.preheader, label %for.end + +for.body.preheader: ; preds = %_ZN2EA4StdC6StrlenEPKDs.exit + %add.ptr = getelementptr inbounds nuw i8, ptr %pString, i64 %retval.0.in.i %p2.013 = getelementptr inbounds i8, ptr %add.ptr, i64 -2 - %cmp14 = icmp ult ptr %pString, %p2.013 - br i1 %cmp14, label %for.body, label %for.end + br label %for.body -for.body: ; preds = %_ZN2EA4StdC6StrlenEPKDs.exit, %for.body - %p2.016 = phi ptr [ %p2.0, %for.body ], [ %p2.013, %_ZN2EA4StdC6StrlenEPKDs.exit ] - %p1.015 = phi ptr [ %incdec.ptr, %for.body ], [ %pString, %_ZN2EA4StdC6StrlenEPKDs.exit ] +for.body: ; preds = %for.body.preheader, %for.body + %p2.016 = phi ptr [ %p2.0, %for.body ], [ %p2.013, %for.body.preheader ] + %p1.015 = phi ptr [ %incdec.ptr, %for.body ], [ %pString, %for.body.preheader ] %9 = load i16, ptr %p2.016, align 2 %10 = load i16, ptr %p1.015, align 2 store i16 %10, ptr %p2.016, align 2 @@ -7057,14 +7063,17 @@ for.end: ; preds = %for.body, %_ZN2EA4S define dso_local noundef ptr @_ZN2EA4StdC6StrrevEPDi(ptr noundef returned captures(address, ret: address, provenance) %pString) local_unnamed_addr #1 { entry: %wcslen.i = tail call noundef i64 @wcslen(ptr readonly %pString) - %add.ptr = getelementptr inbounds i32, ptr %pString, i64 %wcslen.i + %cmp11 = icmp sgt i64 %wcslen.i, 1 + br i1 %cmp11, label %for.body.preheader, label %for.end + +for.body.preheader: ; preds = %entry + %add.ptr = getelementptr inbounds nuw i32, ptr %pString, i64 %wcslen.i %p2.010 = getelementptr inbounds i8, ptr %add.ptr, i64 -4 - %cmp11 = icmp ult ptr %pString, %p2.010 - br i1 %cmp11, label %for.body, label %for.end + br label %for.body -for.body: ; preds = %entry, %for.body - %p2.013 = phi ptr [ %p2.0, %for.body ], [ %p2.010, %entry ] - %p1.012 = phi ptr [ %incdec.ptr, %for.body ], [ %pString, %entry ] +for.body: ; preds = %for.body.preheader, %for.body + %p2.013 = phi ptr [ %p2.0, %for.body ], [ %p2.010, %for.body.preheader ] + %p1.012 = phi ptr [ %incdec.ptr, %for.body ], [ %pString, %for.body.preheader ] %0 = load i32, ptr %p2.013, align 4 %1 = load i32, ptr %p1.012, align 4 store i32 %1, ptr %p2.013, align 4 diff --git a/bench/elfshaker-rs/optimized/538k7v4jnxs1qgfredr4viqv4.ll b/bench/elfshaker-rs/optimized/538k7v4jnxs1qgfredr4viqv4.ll index 9ffb69b9c6f..2ad1dc458eb 100644 --- a/bench/elfshaker-rs/optimized/538k7v4jnxs1qgfredr4viqv4.ll +++ b/bench/elfshaker-rs/optimized/538k7v4jnxs1qgfredr4viqv4.ll @@ -4150,7 +4150,7 @@ _ZN5alloc6string6String3pop17he94cf415e77a8542E.exit18: ; preds = %117, %73, %72 br i1 %31, label %.thread.i, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17heef2a3b141b4e6d3E.exit17.i.i" "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17heef2a3b141b4e6d3E.exit17.i.i": ; preds = %28 - %32 = icmp ne ptr %24, %29 + %32 = icmp ne i64 %25, 1 call void @llvm.assume(i1 %32) %33 = getelementptr inbounds i8, ptr %26, i64 -2 %34 = load i8, ptr %33, align 1, !noalias !262, !noundef !3 @@ -4165,7 +4165,7 @@ _ZN5alloc6string6String3pop17he94cf415e77a8542E.exit18: ; preds = %117, %73, %72 br label %67 "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17heef2a3b141b4e6d3E.exit19.i.i": ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17heef2a3b141b4e6d3E.exit17.i.i" - %39 = icmp ne ptr %24, %33 + %39 = icmp ne i64 %25, 2 call void @llvm.assume(i1 %39) %40 = getelementptr inbounds i8, ptr %26, i64 -3 %41 = load i8, ptr %40, align 1, !noalias !262, !noundef !3 @@ -4175,7 +4175,7 @@ _ZN5alloc6string6String3pop17he94cf415e77a8542E.exit18: ; preds = %117, %73, %72 br i1 %44, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17heef2a3b141b4e6d3E.exit21.i.i", label %54 "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17heef2a3b141b4e6d3E.exit21.i.i": ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17heef2a3b141b4e6d3E.exit19.i.i" - %45 = icmp ne ptr %24, %40 + %45 = icmp ne i64 %25, 3 call void @llvm.assume(i1 %45) %46 = getelementptr inbounds i8, ptr %26, i64 -4 %47 = load i8, ptr %46, align 1, !noalias !262, !noundef !3 @@ -4245,7 +4245,7 @@ _ZN5alloc6string6String3pop17he94cf415e77a8542E.exit18: ; preds = %117, %73, %72 br i1 %81, label %.thread.i17, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17heef2a3b141b4e6d3E.exit17.i.i8" "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17heef2a3b141b4e6d3E.exit17.i.i8": ; preds = %78 - %82 = icmp ne ptr %74, %79 + %82 = icmp ne i64 %75, 1 call void @llvm.assume(i1 %82) %83 = getelementptr inbounds i8, ptr %76, i64 -2 %84 = load i8, ptr %83, align 1, !noalias !268, !noundef !3 @@ -4260,7 +4260,7 @@ _ZN5alloc6string6String3pop17he94cf415e77a8542E.exit18: ; preds = %117, %73, %72 br label %117 "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17heef2a3b141b4e6d3E.exit19.i.i14": ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17heef2a3b141b4e6d3E.exit17.i.i8" - %89 = icmp ne ptr %74, %83 + %89 = icmp ne i64 %75, 2 call void @llvm.assume(i1 %89) %90 = getelementptr inbounds i8, ptr %76, i64 -3 %91 = load i8, ptr %90, align 1, !noalias !268, !noundef !3 @@ -4270,7 +4270,7 @@ _ZN5alloc6string6String3pop17he94cf415e77a8542E.exit18: ; preds = %117, %73, %72 br i1 %94, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17heef2a3b141b4e6d3E.exit21.i.i16", label %104 "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17heef2a3b141b4e6d3E.exit21.i.i16": ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17heef2a3b141b4e6d3E.exit19.i.i14" - %95 = icmp ne ptr %74, %90 + %95 = icmp ne i64 %75, 3 call void @llvm.assume(i1 %95) %96 = getelementptr inbounds i8, ptr %76, i64 -4 %97 = load i8, ptr %96, align 1, !noalias !268, !noundef !3 @@ -4403,7 +4403,7 @@ _ZN5alloc6string6String3pop17he94cf415e77a8542E.exit18: ; preds = %117, %73, %72 br i1 %31, label %.thread.i, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17heef2a3b141b4e6d3E.exit17.i.i" "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17heef2a3b141b4e6d3E.exit17.i.i": ; preds = %28 - %32 = icmp ne ptr %24, %29 + %32 = icmp ne i64 %25, 1 call void @llvm.assume(i1 %32) %33 = getelementptr inbounds i8, ptr %26, i64 -2 %34 = load i8, ptr %33, align 1, !noalias !274, !noundef !3 @@ -4418,7 +4418,7 @@ _ZN5alloc6string6String3pop17he94cf415e77a8542E.exit18: ; preds = %117, %73, %72 br label %67 "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17heef2a3b141b4e6d3E.exit19.i.i": ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17heef2a3b141b4e6d3E.exit17.i.i" - %39 = icmp ne ptr %24, %33 + %39 = icmp ne i64 %25, 2 call void @llvm.assume(i1 %39) %40 = getelementptr inbounds i8, ptr %26, i64 -3 %41 = load i8, ptr %40, align 1, !noalias !274, !noundef !3 @@ -4428,7 +4428,7 @@ _ZN5alloc6string6String3pop17he94cf415e77a8542E.exit18: ; preds = %117, %73, %72 br i1 %44, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17heef2a3b141b4e6d3E.exit21.i.i", label %54 "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17heef2a3b141b4e6d3E.exit21.i.i": ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17heef2a3b141b4e6d3E.exit19.i.i" - %45 = icmp ne ptr %24, %40 + %45 = icmp ne i64 %25, 3 call void @llvm.assume(i1 %45) %46 = getelementptr inbounds i8, ptr %26, i64 -4 %47 = load i8, ptr %46, align 1, !noalias !274, !noundef !3 @@ -4498,7 +4498,7 @@ _ZN5alloc6string6String3pop17he94cf415e77a8542E.exit18: ; preds = %117, %73, %72 br i1 %81, label %.thread.i17, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17heef2a3b141b4e6d3E.exit17.i.i8" "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17heef2a3b141b4e6d3E.exit17.i.i8": ; preds = %78 - %82 = icmp ne ptr %74, %79 + %82 = icmp ne i64 %75, 1 call void @llvm.assume(i1 %82) %83 = getelementptr inbounds i8, ptr %76, i64 -2 %84 = load i8, ptr %83, align 1, !noalias !280, !noundef !3 @@ -4513,7 +4513,7 @@ _ZN5alloc6string6String3pop17he94cf415e77a8542E.exit18: ; preds = %117, %73, %72 br label %117 "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17heef2a3b141b4e6d3E.exit19.i.i14": ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17heef2a3b141b4e6d3E.exit17.i.i8" - %89 = icmp ne ptr %74, %83 + %89 = icmp ne i64 %75, 2 call void @llvm.assume(i1 %89) %90 = getelementptr inbounds i8, ptr %76, i64 -3 %91 = load i8, ptr %90, align 1, !noalias !280, !noundef !3 @@ -4523,7 +4523,7 @@ _ZN5alloc6string6String3pop17he94cf415e77a8542E.exit18: ; preds = %117, %73, %72 br i1 %94, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17heef2a3b141b4e6d3E.exit21.i.i16", label %104 "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17heef2a3b141b4e6d3E.exit21.i.i16": ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17heef2a3b141b4e6d3E.exit19.i.i14" - %95 = icmp ne ptr %74, %90 + %95 = icmp ne i64 %75, 3 call void @llvm.assume(i1 %95) %96 = getelementptr inbounds i8, ptr %76, i64 -4 %97 = load i8, ptr %96, align 1, !noalias !280, !noundef !3 diff --git a/bench/elfshaker-rs/optimized/9g25xiovadbzz8leri5a9ttiq.ll b/bench/elfshaker-rs/optimized/9g25xiovadbzz8leri5a9ttiq.ll index 2834ab89a14..4ff8cc1d4a6 100644 --- a/bench/elfshaker-rs/optimized/9g25xiovadbzz8leri5a9ttiq.ll +++ b/bench/elfshaker-rs/optimized/9g25xiovadbzz8leri5a9ttiq.ll @@ -2595,7 +2595,7 @@ _ZN4core3ops8function5FnMut8call_mut17hd20f1c9a03c9784fE.exit.i34.i: ; preds = % store i64 1, ptr %23, align 8, !noalias !438 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %100, ptr noundef nonnull align 8 dereferenceable(48) %101, i64 48, i1 false), !alias.scope !436, !noalias !433 store ptr %101, ptr %22, align 8, !noalias !438 - %113 = icmp eq ptr %101, %39 + %113 = icmp eq i64 %.sroa.07.013.i, 1 br i1 %113, label %"_ZN4core5tuple65_$LT$impl$u20$core..cmp..PartialOrd$u20$for$u20$$LP$U$C$T$RP$$GT$13__chaining_lt17h84ed04a879914b26E.exit.thread.i.i9._crit_edge.i.i", label %.lr.ph.i31.i .lr.ph.i31.i: ; preds = %112, %.backedge.i.i diff --git a/bench/ffmpeg/optimized/mpegts.ll b/bench/ffmpeg/optimized/mpegts.ll index 39bf877743b..94e71c4fd6e 100644 --- a/bench/ffmpeg/optimized/mpegts.ll +++ b/bench/ffmpeg/optimized/mpegts.ll @@ -1618,12 +1618,12 @@ define internal void @m4sl_cb(ptr noundef captures(none) %0, ptr noundef %1, i32 %11 = sext i32 %2 to i64 %12 = getelementptr i8, ptr %1, i64 %11 %.ptr68 = getelementptr i8, ptr %12, i64 -4 - %.not.i.i = icmp ult ptr %1, %.ptr68 + %.not.i.i = icmp sgt i32 %2, 4 br i1 %.not.i.i, label %get8.exit.i, label %skip_identical.exit get8.exit.i: ; preds = %3 %13 = load i8, ptr %1, align 1, !tbaa !9 - %or.cond = icmp slt i32 %2, 10 + %or.cond = icmp samesign ult i32 %2, 10 br i1 %or.cond, label %skip_identical.exit, label %get8.exit45.i get8.exit45.i: ; preds = %get8.exit.i @@ -2028,12 +2028,12 @@ define internal void @sdt_cb(ptr noundef captures(none) %0, ptr noundef %1, i32 %9 = sext i32 %2 to i64 %10 = getelementptr i8, ptr %1, i64 %9 %.ptr111 = getelementptr i8, ptr %10, i64 -4 - %.not.i.i = icmp ult ptr %1, %.ptr111 + %.not.i.i = icmp sgt i32 %2, 4 br i1 %.not.i.i, label %get8.exit.i, label %skip_identical.exit get8.exit.i: ; preds = %3 %11 = load i8, ptr %1, align 1, !tbaa !9 - %or.cond122 = icmp slt i32 %2, 10 + %or.cond122 = icmp ult i32 %2, 10 br i1 %or.cond122, label %skip_identical.exit, label %get8.exit45.i get8.exit45.i: ; preds = %get8.exit.i @@ -2214,12 +2214,12 @@ define internal void @pat_cb(ptr noundef captures(none) %0, ptr noundef %1, i32 %9 = sext i32 %2 to i64 %10 = getelementptr i8, ptr %1, i64 %9 %.ptr173 = getelementptr i8, ptr %10, i64 -4 - %.not.i.i = icmp ult ptr %1, %.ptr173 + %.not.i.i = icmp sgt i32 %2, 4 br i1 %.not.i.i, label %get8.exit.i, label %skip_identical.exit get8.exit.i: ; preds = %3 %11 = load i8, ptr %1, align 1, !tbaa !9 - %12 = icmp slt i32 %2, 9 + %12 = icmp samesign ult i32 %2, 9 br i1 %12, label %skip_identical.exit, label %get16.exit.i get16.exit.i: ; preds = %get8.exit.i @@ -2774,12 +2774,12 @@ define internal void @eit_cb(ptr noundef readonly captures(none) %0, ptr noundef %23 = sext i32 %2 to i64 %24 = getelementptr i8, ptr %1, i64 %23 %.ptr35 = getelementptr i8, ptr %24, i64 -4 - %.not.i.i = icmp ult ptr %1, %.ptr35 + %.not.i.i = icmp sgt i32 %2, 4 br i1 %.not.i.i, label %get8.exit.i, label %parse_section_header.exit.thread get8.exit.i: ; preds = %22 %25 = load i8, ptr %1, align 1, !tbaa !9 - %26 = icmp slt i32 %2, 9 + %26 = icmp samesign ult i32 %2, 9 br i1 %26, label %parse_section_header.exit.thread, label %get16.exit.i get16.exit.i: ; preds = %get8.exit.i @@ -5138,12 +5138,12 @@ define internal void @pmt_cb(ptr noundef captures(none) %0, ptr noundef %1, i32 %12 = sext i32 %2 to i64 %13 = getelementptr i8, ptr %1, i64 %12 %.ptr478 = getelementptr i8, ptr %13, i64 -4 - %.not.i.i = icmp ult ptr %1, %.ptr478 + %.not.i.i = icmp sgt i32 %2, 4 br i1 %.not.i.i, label %get8.exit.i, label %skip_identical.exit get8.exit.i: ; preds = %3 %14 = load i8, ptr %1, align 1, !tbaa !9 - %15 = icmp slt i32 %2, 9 + %15 = icmp samesign ult i32 %2, 9 br i1 %15, label %skip_identical.exit, label %get16.exit.i get16.exit.i: ; preds = %get8.exit.i diff --git a/bench/ffmpeg/optimized/rtpenc_aac.ll b/bench/ffmpeg/optimized/rtpenc_aac.ll index f1c28a9a0bd..ad13c6e1f47 100644 --- a/bench/ffmpeg/optimized/rtpenc_aac.ll +++ b/bench/ffmpeg/optimized/rtpenc_aac.ll @@ -77,8 +77,9 @@ define void @ff_rtp_send_aac(ptr noundef %0, ptr noundef readonly captures(none) %57 = sub nsw i64 0, %56 %58 = getelementptr inbounds i8, ptr %55, i64 %57 %59 = getelementptr inbounds i8, ptr %58, i64 -2 - %.not80 = icmp eq ptr %59, %51 - br i1 %.not80, label %62, label %60 + %60 = sub nsw i64 %54, %56 + %.not80 = icmp eq i64 %60, 2 + br i1 %.not80, label %63, label %61 60: ; preds = %50 %61 = getelementptr inbounds nuw i8, ptr %51, i64 2 @@ -115,7 +116,7 @@ define void @ff_rtp_send_aac(ptr noundef %0, ptr noundef readonly captures(none) br label %78 78: ; preds = %.thread, %70 - %79 = phi i32 [ 0, %.thread ], [ %.pre, %70 ] + %79 = phi i32 [ 0, %.thread ], [ %.pre, %71 ] %.not81 = icmp sgt i32 %.075, %15 br i1 %.not81, label %93, label %80 @@ -156,8 +157,8 @@ define void @ff_rtp_send_aac(ptr noundef %0, ptr noundef readonly captures(none) br label %102 102: ; preds = %.lr.ph, %102 - %.185 = phi ptr [ %.0, %.lr.ph ], [ %109, %102 ] - %.17684 = phi i32 [ %.075, %.lr.ph ], [ %108, %102 ] + %.185 = phi ptr [ %.0, %.lr.ph ], [ %109, %103 ] + %.17684 = phi i32 [ %.075, %.lr.ph ], [ %108, %103 ] %103 = tail call i32 @llvm.smin.i32(i32 %.17684, i32 %95) store i16 %99, ptr %100, align 1, !tbaa !47 %104 = sext i32 %103 to i64 diff --git a/bench/ffmpeg/optimized/rtpenc_amr.ll b/bench/ffmpeg/optimized/rtpenc_amr.ll index f483a86c593..35edde41d86 100644 --- a/bench/ffmpeg/optimized/rtpenc_amr.ll +++ b/bench/ffmpeg/optimized/rtpenc_amr.ll @@ -28,71 +28,80 @@ define void @ff_rtp_send_amr(ptr noundef %0, ptr noundef readonly captures(none) 22: ; preds = %3 %23 = icmp eq i32 %21, %10 - br i1 %23, label %44, label %24 + br i1 %23, label %24, label %28 24: ; preds = %22 - %25 = add i32 %2, -1 - %26 = add i32 %25, %19 - %27 = getelementptr inbounds nuw i8, ptr %5, i64 56 - %28 = load i32, ptr %27, align 8, !tbaa !33 - %29 = icmp sgt i32 %26, %28 - br i1 %29, label %44, label %30 - -30: ; preds = %24 - %31 = getelementptr inbounds nuw i8, ptr %5, i64 52 - %32 = load i32, ptr %31, align 4, !tbaa !34 - %33 = getelementptr inbounds nuw i8, ptr %5, i64 44 - %34 = load i32, ptr %33, align 4, !tbaa !35 - %35 = sub i32 %32, %34 - %36 = zext i32 %35 to i64 - %37 = getelementptr inbounds nuw i8, ptr %8, i64 32 - %38 = getelementptr inbounds nuw i8, ptr %0, i64 124 - %39 = load i32, ptr %38, align 4, !tbaa !36 - %40 = sext i32 %39 to i64 - %41 = load i64, ptr %37, align 8 - %42 = tail call i32 @av_compare_ts(i64 noundef %36, i64 %41, i64 noundef %40, i64 4294967296000001) #3 - %43 = icmp sgt i32 %42, -1 + %24 = sext i32 %11 to i64 + %25 = getelementptr inbounds i8, ptr %15, i64 %24 + %narrow = xor i32 %10, -1 + %26 = sext i32 %narrow to i64 + %27 = getelementptr inbounds i8, ptr %25, i64 %26 + br label %54 + +30: ; preds = %22 + %29 = add i32 %2, -1 + %30 = add i32 %29, %19 + %33 = getelementptr inbounds nuw i8, ptr %5, i64 56 + %34 = load i32, ptr %33, align 8, !tbaa !33 + %33 = icmp sgt i32 %30, %34 + br i1 %33, label %48, label %34 + +34: ; preds = %28 + %35 = getelementptr inbounds nuw i8, ptr %5, i64 52 + %36 = load i32, ptr %35, align 4, !tbaa !34 + %37 = getelementptr inbounds nuw i8, ptr %5, i64 44 + %38 = load i32, ptr %37, align 4, !tbaa !35 + %39 = sub i32 %36, %38 + %40 = zext i32 %39 to i64 + %41 = getelementptr inbounds nuw i8, ptr %8, i64 32 + %42 = getelementptr inbounds nuw i8, ptr %0, i64 124 + %43 = load i32, ptr %42, align 4, !tbaa !36 + %44 = sext i32 %43 to i64 + %45 = load i64, ptr %41, align 8 + %46 = tail call i32 @av_compare_ts(i64 noundef %40, i64 %45, i64 noundef %44, i64 4294967296000001) #3 + %47 = icmp sgt i32 %46, -1 %.pre = load i32, ptr %20, align 4, !tbaa !32 - br i1 %43, label %._crit_edge, label %60 + br i1 %47, label %._crit_edge, label %60 -._crit_edge: ; preds = %30 +._crit_edge: ; preds = %34 %.pre53 = load ptr, ptr %14, align 8, !tbaa !31 br label %44 -44: ; preds = %._crit_edge, %24, %22 - %45 = phi ptr [ %.pre53, %._crit_edge ], [ %15, %24 ], [ %15, %22 ] - %46 = phi i32 [ %.pre, %._crit_edge ], [ %21, %24 ], [ %10, %22 ] +44: ; preds = %._crit_edge, %28 + %45 = phi ptr [ %.pre53, %._crit_edge ], [ %15, %28 ] + %46 = phi i32 [ %.pre, %._crit_edge ], [ %21, %28 ] %47 = add nsw i32 %46, 1 %48 = sext i32 %11 to i64 %49 = getelementptr inbounds i8, ptr %45, i64 %48 %50 = sext i32 %47 to i64 %51 = sub nsw i64 0, %50 %52 = getelementptr inbounds i8, ptr %49, i64 %51 - %.not50 = icmp eq ptr %52, %45 + %.not50 = icmp eq i32 %10, %50 br i1 %.not50, label %54, label %53 53: ; preds = %44 tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %52, ptr align 1 %45, i64 %50, i1 false) br label %54 -54: ; preds = %53, %44 - %55 = load ptr, ptr %12, align 8, !tbaa !30 - %56 = ptrtoint ptr %55 to i64 - %57 = ptrtoint ptr %52 to i64 - %58 = sub i64 %56, %57 - %59 = trunc i64 %58 to i32 - tail call void @ff_rtp_send_data(ptr noundef nonnull %0, ptr noundef %52, i32 noundef %59, i32 noundef 1) #3 +54: ; preds = %24, %53, %44 + %59 = phi ptr [ %27, %.thread58 ], [ %56, %57 ], [ %56, %48 ] + %60 = load ptr, ptr %12, align 8, !tbaa !30 + %57 = ptrtoint ptr %60 to i64 + %62 = ptrtoint ptr %59 to i64 + %63 = sub i64 %57, %62 + %64 = trunc i64 %63 to i32 + tail call void @ff_rtp_send_data(ptr noundef nonnull %0, ptr noundef %59, i32 noundef %64, i32 noundef 1) #3 store i32 0, ptr %20, align 4, !tbaa !32 %.pre54 = load ptr, ptr %14, align 8, !tbaa !31 br label %.thread -60: ; preds = %30 +60: ; preds = %34 %.not51 = icmp eq i32 %.pre, 0 %.pre55 = load ptr, ptr %14, align 8, !tbaa !31 br i1 %.not51, label %.thread, label %68 .thread: ; preds = %3, %54, %60 - %61 = phi ptr [ %15, %3 ], [ %.pre54, %54 ], [ %.pre55, %60 ] + %61 = phi ptr [ %15, %3 ], [ %.pre54, %58 ], [ %.pre55, %65 ] store i8 -16, ptr %61, align 1, !tbaa !37 %62 = load ptr, ptr %14, align 8, !tbaa !31 %63 = sext i32 %11 to i64 @@ -115,8 +124,8 @@ define void @ff_rtp_send_amr(ptr noundef %0, ptr noundef readonly captures(none) br label %73 73: ; preds = %68, %.thread - %.pre-phi = phi i32 [ %25, %68 ], [ %.pre57, %.thread ] - %74 = phi ptr [ %.pre56, %68 ], [ %62, %.thread ] + %.pre-phi = phi i32 [ %29, %73 ], [ %.pre57, %.thread ] + %74 = phi ptr [ %.pre56, %73 ], [ %62, %.thread ] %75 = load i8, ptr %1, align 1, !tbaa !37 %76 = and i8 %75, 124 %77 = load i32, ptr %20, align 4, !tbaa !32 diff --git a/bench/fmt/optimized/enforce-checks-test.ll b/bench/fmt/optimized/enforce-checks-test.ll index 3aa486d6b6c..f8ed67b6110 100644 --- a/bench/fmt/optimized/enforce-checks-test.ll +++ b/bench/fmt/optimized/enforce-checks-test.ll @@ -29242,7 +29242,7 @@ _ZN3fmt3v116detail7to_utf8IDiNS0_19basic_memory_bufferIcLm128ENS1_9allocatorIcEE %46 = load i64, ptr %21, align 8, !tbaa !42 %47 = getelementptr i8, ptr %45, i64 %46 %48 = getelementptr i8, ptr %47, i64 -1 - %.not24.i.i = icmp eq ptr %45, %48 + %.not24.i.i = icmp eq i64 %46, 1 br i1 %.not24.i.i, label %_ZN3fmt3v116detail4copyIcPKcNS0_14basic_appenderIcEETnNSt9enable_ifIXaasr23is_back_insert_iteratorIT1_EE5valuesr41has_back_insert_iterator_container_appendIS8_T0_EE5valueEiE4typeELi0EEES8_S9_S9_S8_.exit, label %.lr.ph27.i.i .lr.ph27.i.i: ; preds = %41 @@ -31339,7 +31339,7 @@ define linkonce_odr hidden void @_ZN3fmt3v116detail18for_each_codepointIZNS1_11f 6: ; preds = %3 %7 = getelementptr inbounds nuw i8, ptr %0, i64 %1 %8 = getelementptr inbounds i8, ptr %7, i64 -3 - %.not3053 = icmp ult ptr %0, %8 + %.not3053 = icmp sgt i64 %1, 3 br i1 %.not3053, label %.lr.ph, label %.loopexit .lr.ph: ; preds = %6, %_ZZN3fmt3v116detail18for_each_codepointIZNS1_11find_escapeEPKcS4_EUljNS0_17basic_string_viewIcEEE_EEvS6_T_ENKUlS4_S4_E_clES4_S4_.exit @@ -34102,7 +34102,8 @@ define linkonce_odr hidden ptr @_ZN3fmt3v116detail9copy_unitINS0_14basic_appende %8 = load i64, ptr %7, align 8, !tbaa !49 %9 = getelementptr i32, ptr %6, i64 %8 %10 = getelementptr i8, ptr %9, i64 -4 - %.not24.i.i = icmp eq ptr %6, %10 + %.idx.mask = and i64 %8, 4611686018427387903 + %.not24.i.i = icmp eq i64 %.idx.mask, 1 br i1 %.not24.i.i, label %_ZN3fmt3v116detail4copyIwPKwNS0_14basic_appenderIwEETnNSt9enable_ifIXaasr23is_back_insert_iteratorIT1_EE5valuesr41has_back_insert_iterator_container_appendIS8_T0_EE5valueEiE4typeELi0EEES8_S9_S9_S8_.exit, label %.lr.ph27.i.i .lr.ph27.i.i: ; preds = %4 diff --git a/bench/freetype/optimized/ftbase.ll b/bench/freetype/optimized/ftbase.ll index dfe9d5f09e8..252baf2e203 100644 --- a/bench/freetype/optimized/ftbase.ll +++ b/bench/freetype/optimized/ftbase.ll @@ -8969,12 +8969,15 @@ define range(i32 0, 39) i32 @FT_Select_Charmap(ptr noundef captures(address_is_n %12 = load i32, ptr %11, align 8, !tbaa !336 %13 = sext i32 %12 to i64 %14 = getelementptr inbounds ptr, ptr %9, i64 %13 + %.not2427.i = icmp slt i32 %12, 1 + br i1 %.not2427.i, label %.preheader.i.preheader, label %.lr.ph.preheader.i + +.lr.ph.preheader.i: ; preds = %10 %15 = getelementptr inbounds i8, ptr %14, i64 -8 - %.not2427.i = icmp ult ptr %15, %9 - br i1 %.not2427.i, label %.preheader.i.preheader, label %.lr.ph.i + br label %.lr.ph.i -.lr.ph.i: ; preds = %10, %.thread.i - %16 = phi ptr [ %32, %.thread.i ], [ %15, %10 ] +.lr.ph.i: ; preds = %.thread.i, %.lr.ph.preheader.i + %16 = phi ptr [ %32, %.thread.i ], [ %15, %.lr.ph.preheader.i ] %17 = load ptr, ptr %16, align 8, !tbaa !338 %18 = getelementptr inbounds nuw i8, ptr %17, i64 8 %19 = load i32, ptr %18, align 8, !tbaa !379 @@ -18219,12 +18222,15 @@ select.unfold: ; preds = %ft_mem_qalloc.exit. %66 = load i32, ptr %65, align 8, !tbaa !336 %67 = sext i32 %66 to i64 %68 = getelementptr inbounds ptr, ptr %63, i64 %67 + %.not2427.i = icmp slt i32 %66, 1 + br i1 %.not2427.i, label %.preheader.i.preheader, label %.lr.ph.preheader.i + +.lr.ph.preheader.i: ; preds = %64 %69 = getelementptr inbounds i8, ptr %68, i64 -8 - %.not2427.i = icmp ult ptr %69, %63 - br i1 %.not2427.i, label %.preheader.i.preheader, label %.lr.ph.i + br label %.lr.ph.i -.lr.ph.i: ; preds = %64, %.thread.i - %70 = phi ptr [ %86, %.thread.i ], [ %69, %64 ] +.lr.ph.i: ; preds = %.thread.i, %.lr.ph.preheader.i + %70 = phi ptr [ %86, %.thread.i ], [ %69, %.lr.ph.preheader.i ] %71 = load ptr, ptr %70, align 8, !tbaa !338 %72 = getelementptr inbounds nuw i8, ptr %71, i64 8 %73 = load i32, ptr %72, align 8, !tbaa !379 diff --git a/bench/freetype/optimized/type1.ll b/bench/freetype/optimized/type1.ll index b3cca84d214..507359225e1 100644 --- a/bench/freetype/optimized/type1.ll +++ b/bench/freetype/optimized/type1.ll @@ -2431,23 +2431,26 @@ define internal noundef i32 @Get_Kerning(ptr noundef readonly captures(none) %0, br i1 %.not, label %T1_Get_Kerning.exit, label %8 8: ; preds = %4 - %9 = getelementptr i8, ptr %7, i64 72 - %.val = load ptr, ptr %9, align 8, !tbaa !245 - %10 = getelementptr i8, ptr %7, i64 80 - %.val7 = load i32, ptr %10, align 8, !tbaa !249 - %11 = zext i32 %1 to i64 - %12 = shl nuw nsw i64 %11, 16 - %13 = zext i32 %2 to i64 - %14 = or i64 %12, %13 + %9 = getelementptr i8, ptr %7, i64 80 + %.val = load i32, ptr %9, align 8, !tbaa !249 + %10 = zext i32 %1 to i64 + %11 = shl nuw nsw i64 %10, 16 + %11 = zext i32 %2 to i64 + %13 = or i64 %11, %12 + %.not3.i = icmp eq i32 %.val, 0 + br i1 %.not3.i, label %._crit_edge.i, label %.lr.ph.preheader.i + +.lr.ph.preheader.i: ; preds = %8 + %14 = getelementptr i8, ptr %7, i64 72 + %.val = load ptr, ptr %14, align 8, !tbaa !245 %15 = zext i32 %.val7 to i64 %16 = getelementptr inbounds nuw %struct.AFM_KernPairRec_, ptr %.val, i64 %15 %17 = getelementptr inbounds i8, ptr %16, i64 -16 - %.not3.i = icmp ugt ptr %.val, %17 - br i1 %.not3.i, label %._crit_edge.i, label %.lr.ph.i + br label %.lr.ph.i -.lr.ph.i: ; preds = %8, %37 - %.0245.i = phi ptr [ %.2.i, %37 ], [ %.val, %8 ] - %.0254.i = phi ptr [ %.227.i, %37 ], [ %17, %8 ] +.lr.ph.i: ; preds = %37, %.lr.ph.preheader.i + %.0245.i = phi ptr [ %.2.i, %37 ], [ %.val, %.lr.ph.preheader.i ] + %.0254.i = phi ptr [ %.227.i, %37 ], [ %17, %.lr.ph.preheader.i ] %18 = ptrtoint ptr %.0254.i to i64 %19 = ptrtoint ptr %.0245.i to i64 %20 = sub i64 %18, %19 @@ -2461,7 +2464,7 @@ define internal noundef i32 @Get_Kerning(ptr noundef readonly captures(none) %0, %28 = load i32, ptr %27, align 4, !tbaa !328 %29 = zext i32 %28 to i64 %30 = or i64 %26, %29 - %.not30.i = icmp eq i64 %30, %14 + %.not30.i = icmp eq i64 %30, %13 br i1 %.not30.i, label %.thread.i, label %37 .thread.i: ; preds = %.lr.ph.i @@ -2476,7 +2479,7 @@ define internal noundef i32 @Get_Kerning(ptr noundef readonly captures(none) %0, br label %T1_Get_Kerning.exit 37: ; preds = %.lr.ph.i - %38 = icmp samesign ult i64 %30, %14 + %38 = icmp samesign ult i64 %30, %13 %39 = getelementptr inbounds nuw i8, ptr %23, i64 16 %40 = getelementptr inbounds i8, ptr %23, i64 -16 %.227.i = select i1 %38, ptr %.0254.i, ptr %40 @@ -5361,8 +5364,11 @@ define internal fastcc i32 @T1_Read_PFM(ptr noundef %0, ptr noundef readonly cap %46 = getelementptr inbounds nuw i8, ptr %45, i64 %38 %47 = getelementptr inbounds nuw i8, ptr %46, i64 %42 %48 = getelementptr inbounds nuw i8, ptr %47, i64 %44 - %49 = icmp eq ptr %48, %8 - br i1 %49, label %.thread87, label %50 + %49 = or i64 %37, %33 + %50 = or i64 %49, %41 + %51 = or i64 %50, %44 + %52 = icmp eq i64 %51, 0 + br i1 %52, label %.thread87, label %53 50: ; preds = %29 %.ptr = getelementptr inbounds nuw i8, ptr %48, i64 2 @@ -5372,76 +5378,76 @@ define internal fastcc i32 @T1_Read_PFM(ptr noundef %0, ptr noundef readonly cap 52: ; preds = %50 %53 = getelementptr inbounds nuw i8, ptr %48, i64 1 %54 = load i8, ptr %53, align 1, !tbaa !95 - %55 = zext i8 %54 to i32 - %56 = shl nuw nsw i32 %55, 8 - %57 = load i8, ptr %48, align 1, !tbaa !95 %58 = zext i8 %57 to i32 - %59 = or disjoint i32 %56, %58 - %60 = getelementptr inbounds nuw i8, ptr %2, i64 80 - store i32 %59, ptr %60, align 8, !tbaa !249 - %61 = shl nuw nsw i32 %59, 2 - %62 = zext nneg i32 %61 to i64 - %63 = getelementptr inbounds nuw i8, ptr %.ptr, i64 %62 - %64 = icmp ugt ptr %63, %10 - br i1 %64, label %.thread.sink.split, label %65 - -65: ; preds = %52 - %66 = icmp eq i32 %59, 0 - br i1 %66, label %.thread87, label %67 - -67: ; preds = %65 - %68 = zext nneg i32 %59 to i64 - %69 = call ptr @ft_mem_qrealloc(ptr noundef %6, i64 noundef 16, i64 noundef 0, i64 noundef %68, ptr noundef null, ptr noundef nonnull %4) #16 - %70 = getelementptr inbounds nuw i8, ptr %2, i64 72 - store ptr %69, ptr %70, align 8, !tbaa !245 - %71 = load i32, ptr %4, align 4, !tbaa !19 - %.not = icmp eq i32 %71, 0 - br i1 %.not, label %72, label %.thread - -72: ; preds = %67 - %73 = load i32, ptr %60, align 8, !tbaa !249 - %74 = shl i32 %73, 2 - %75 = zext i32 %74 to i64 - %76 = getelementptr inbounds nuw i8, ptr %48, i64 %75 - %.ptr80 = getelementptr inbounds nuw i8, ptr %76, i64 2 - %77 = getelementptr inbounds nuw i8, ptr %0, i64 168 - %78 = load ptr, ptr %77, align 8, !tbaa !446 - %79 = getelementptr inbounds nuw i8, ptr %0, i64 72 - %80 = load i32, ptr %79, align 8, !tbaa !447 - %81 = icmp sgt i32 %80, 0 - br i1 %81, label %.lr.ph, label %.loopexit - -.lr.ph: ; preds = %72 - %82 = getelementptr inbounds nuw i8, ptr %0, i64 80 - %83 = load ptr, ptr %82, align 8, !tbaa !448 - %wide.trip.count = zext nneg i32 %80 to i64 - br label %85 - -84: ; preds = %85 + %59 = shl nuw nsw i32 %58, 8 + %60 = load i8, ptr %48, align 1, !tbaa !95 + %61 = zext i8 %60 to i32 + %62 = or disjoint i32 %59, %61 + %63 = getelementptr inbounds nuw i8, ptr %2, i64 80 + store i32 %62, ptr %63, align 8, !tbaa !249 + %64 = shl nuw nsw i32 %62, 2 + %65 = zext nneg i32 %64 to i64 + %66 = getelementptr inbounds nuw i8, ptr %.ptr, i64 %65 + %67 = icmp ugt ptr %66, %10 + br i1 %67, label %.thread.sink.split, label %68 + +68: ; preds = %55 + %69 = icmp eq i32 %62, 0 + br i1 %69, label %.thread87, label %70 + +70: ; preds = %68 + %71 = zext nneg i32 %62 to i64 + %72 = call ptr @ft_mem_qrealloc(ptr noundef %6, i64 noundef 16, i64 noundef 0, i64 noundef %71, ptr noundef null, ptr noundef nonnull %4) #16 + %73 = getelementptr inbounds nuw i8, ptr %2, i64 72 + store ptr %72, ptr %73, align 8, !tbaa !245 + %74 = load i32, ptr %4, align 4, !tbaa !19 + %.not = icmp eq i32 %74, 0 + br i1 %.not, label %75, label %.thread + +75:; preds = %70 + %76 = load i32, ptr %63, align 8, !tbaa !249 + %77 = shl i32 %76, 2 + %78 = zext i32 %77 to i64 + %79 = getelementptr inbounds nuw i8, ptr %48, i64 %78 + %79 = getelementptr inbounds nuw i8, ptr %79, i64 2 + %80 = getelementptr inbounds nuw i8, ptr %0, i64 168 + %81 = load ptr, ptr %80, align 8, !tbaa !446 + %82 = getelementptr inbounds nuw i8, ptr %0, i64 72 + %83 = load i32, ptr %82, align 8, !tbaa !447 + %84 = icmp sgt i32 %83, 0 + br i1 %84, label %.lr.ph, label %.loopexit + +.lr.ph:; preds = %75 + %85 = getelementptr inbounds nuw i8, ptr %0, i64 80 + %86 = load ptr, ptr %85, align 8, !tbaa !448 + %wide.trip.count = zext nneg i32 %83 to i64 + br label %88 + +87: ; preds = %88 %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 %85, !llvm.loop !449 -85: ; preds = %.lr.ph, %84 - %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %84 ] - %86 = getelementptr inbounds nuw ptr, ptr %83, i64 %indvars.iv +85: ; preds = %.lr.ph, %87 + %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %87 ] + %86 = getelementptr inbounds nuw ptr, ptr %86, i64 %indvars.iv %87 = load ptr, ptr %86, align 8, !tbaa !450 %88 = getelementptr inbounds nuw i8, ptr %87, i64 12 %89 = load i16, ptr %88, align 4, !tbaa !235 %90 = icmp eq i16 %89, 7 - br i1 %90, label %91, label %84 + br i1 %90, label %91, label %87 91: ; preds = %85 - store ptr %87, ptr %77, align 8, !tbaa !446 + store ptr %87, ptr %80, align 8, !tbaa !446 br label %.loopexit -.loopexit: ; preds = %84, %72, %91 - %.not81 = icmp eq i32 %74, 0 +.loopexit: ; preds = %87, %75, %91 + %.not81 = icmp eq i32 %77, 0 br i1 %.not81, label %108, label %.lr.ph79 .lr.ph79: ; preds = %.loopexit, %.lr.ph79 %.06878 = phi ptr [ %106, %.lr.ph79 ], [ %.ptr, %.loopexit ] - %.06977 = phi ptr [ %105, %.lr.ph79 ], [ %69, %.loopexit ] + %.06977 = phi ptr [ %105, %.lr.ph79 ], [ %72, %.loopexit ] %92 = load i8, ptr %.06878, align 1, !tbaa !95 %93 = zext i8 %92 to i64 %94 = call i32 @FT_Get_Char_Index(ptr noundef %0, i64 noundef %93) #16 @@ -5465,14 +5471,14 @@ define internal fastcc i32 @T1_Read_PFM(ptr noundef %0, ptr noundef readonly cap br i1 %107, label %.lr.ph79, label %._crit_edge.loopexit, !llvm.loop !451 ._crit_edge.loopexit: ; preds = %.lr.ph79 - %.pre = load ptr, ptr %70, align 8, !tbaa !245 - %.pre84 = load i32, ptr %60, align 8, !tbaa !249 + %.pre = load ptr, ptr %73, align 8, !tbaa !245 + %.pre84 = load i32, ptr %63, align 8, !tbaa !249 br label %108 108: ; preds = %.loopexit, %._crit_edge.loopexit - %109 = phi i32 [ %.pre84, %._crit_edge.loopexit ], [ %73, %.loopexit ] - %110 = phi ptr [ %.pre, %._crit_edge.loopexit ], [ %69, %.loopexit ] - store ptr %78, ptr %77, align 8, !tbaa !446 + %109 = phi i32 [ %.pre84, %._crit_edge.loopexit ], [ %76, %.loopexit ] + %110 = phi ptr [ %.pre, %._crit_edge.loopexit ], [ %72, %.loopexit ] + store ptr %81, ptr %80, align 8, !tbaa !446 %111 = zext i32 %109 to i64 call void @qsort(ptr noundef %110, i64 noundef %111, i64 noundef 16, ptr noundef nonnull @compare_kern_pairs) #16 %.pr.pre = load i32, ptr %4, align 4, !tbaa !19 @@ -5483,7 +5489,7 @@ define internal fastcc i32 @T1_Read_PFM(ptr noundef %0, ptr noundef readonly cap store i32 2, ptr %4, align 4, !tbaa !19 br label %.thread -.thread: ; preds = %.thread.sink.split, %67, %108 +.thread: ; preds = %.thread.sink.split, %70, %108 %113 = getelementptr inbounds nuw i8, ptr %2, i64 72 %114 = load ptr, ptr %113, align 8, !tbaa !245 call void @ft_mem_free(ptr noundef %6, ptr noundef %114) #16 @@ -5493,8 +5499,8 @@ define internal fastcc i32 @T1_Read_PFM(ptr noundef %0, ptr noundef readonly cap %.pre86 = load i32, ptr %4, align 4, !tbaa !19 br label %.thread87 -.thread87: ; preds = %25, %13, %29, %65, %.thread, %108 - %116 = phi i32 [ %.pre86, %.thread ], [ 0, %108 ], [ 0, %65 ], [ 0, %29 ], [ 0, %13 ], [ 0, %25 ] +.thread87: ; preds = %25, %13, %29, %68, %.thread, %108 + %116 = phi i32 [ %.pre86, %.thread ], [ 0, %111 ], [ 0, %68 ], [ 0, %29 ], [ 0, %13 ], [ 0, %25 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #16 ret i32 %116 } diff --git a/bench/g2o/optimized/slam2d_linear.ll b/bench/g2o/optimized/slam2d_linear.ll index bfef5e03ff2..403cb3952ec 100644 --- a/bench/g2o/optimized/slam2d_linear.ll +++ b/bench/g2o/optimized/slam2d_linear.ll @@ -9386,24 +9386,22 @@ _ZN5Eigen12SparseMatrixIdLi0EiE14initAssignmentIS1_EEvRKT_.exit: ; preds = %39, br i1 %49, label %50, label %80 50: ; preds = %_ZN5Eigen12SparseMatrixIdLi0EiE14initAssignmentIS1_EEvRKT_.exit - %51 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %52 = load ptr, ptr %51, align 8, !tbaa !149 - %53 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %54 = load i64, ptr %53, align 8, !tbaa !143 - %55 = getelementptr inbounds i32, ptr %52, i64 %54 - %56 = getelementptr inbounds nuw i8, ptr %55, i64 4 - %57 = icmp eq ptr %56, %52 - br i1 %57, label %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit, label %58 - -58: ; preds = %50 - %59 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %60 = load ptr, ptr %59, align 8, !tbaa !149 - %.idx = shl nsw i64 %54, 2 - %61 = add nsw i64 %.idx, 4 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %60, ptr align 4 %52, i64 %61, i1 false) + %51 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %52 = load i64, ptr %51, align 8, !tbaa !143 + %53 = icmp eq i64 %52, -1 + br i1 %53, label %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit, label %54 + +54: ; preds = %50 + %55 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %56 = load ptr, ptr %55, align 8, !tbaa !149 + %57 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %58 = load ptr, ptr %57, align 8, !tbaa !149 + %.idx = shl nsw i64 %52, 2 + %59 = add nsw i64 %.idx, 4 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %58, ptr align 4 %56, i64 %59, i1 false) br label %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit -_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit: ; preds = %50, %58 +_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit: ; preds = %50, %54 %62 = getelementptr inbounds nuw i8, ptr %1, i64 40 %63 = getelementptr inbounds nuw i8, ptr %0, i64 40 %64 = getelementptr inbounds nuw i8, ptr %1, i64 56 @@ -9430,11 +9428,11 @@ _ZN5Eigen8internal10smart_copyIdEEvPKT_S4_PS2_.exit.i: ; preds = %68 75: ; preds = %_ZN5Eigen8internal10smart_copyIdEEvPKT_S4_PS2_.exit.i %76 = getelementptr inbounds nuw i8, ptr %1, i64 48 + %75 = load ptr, ptr %74, align 8, !tbaa !152 + %76 = getelementptr inbounds nuw i8, ptr %0, i64 48 %77 = load ptr, ptr %76, align 8, !tbaa !152 - %78 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %79 = load ptr, ptr %78, align 8, !tbaa !152 %.idx8.i = shl nsw i64 %.pre.i, 2 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %79, ptr align 4 %77, i64 %.idx8.i, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %77, ptr align 4 %75, i64 %.idx8.i, i1 false) br label %_ZN5Eigen8internal17CompressedStorageIdiEaSERKS2_.exit 80: ; preds = %_ZN5Eigen12SparseMatrixIdLi0EiE14initAssignmentIS1_EEvRKT_.exit diff --git a/bench/git/optimized/apply.ll b/bench/git/optimized/apply.ll index cb6db9ee58f..5df30d0b31d 100644 --- a/bench/git/optimized/apply.ll +++ b/bench/git/optimized/apply.ll @@ -9796,41 +9796,36 @@ date_len.exit.i: ; preds = %261, %254, %252 %268 = ptrtoint ptr %204 to i64 %269 = ptrtoint ptr %.0.i74.i to i64 %270 = sub i64 %268, %269 - %271 = sub i64 0, %.1.i - %272 = getelementptr inbounds i8, ptr %199, i64 %271 - %273 = sub i64 0, %270 - %274 = getelementptr inbounds i8, ptr %272, i64 %273 - %275 = icmp eq ptr %274, %1 - br i1 %275, label %diff_timestamp_len.exit.thread, label %276 - -276: ; preds = %date_len.exit.i - %277 = getelementptr inbounds i8, ptr %274, i64 -1 - %278 = load i8, ptr %277, align 1, !tbaa !53 - switch i8 %278, label %diff_timestamp_len.exit.thread [ - i8 9, label %279 + %271 = add i64 %270, %200 + %272 = icmp eq i64 %13, %271 + br i1 %272, label %diff_timestamp_len.exit.thread, label %273 + +273:; preds = %date_len.exit.i + %274 = sub i64 0, %.1.i + %275 = getelementptr inbounds i8, ptr %199, i64 %274 + %276 = sub i64 0, %270 + %277 = getelementptr inbounds i8, ptr %275, i64 %276 + %278 = getelementptr inbounds i8, ptr %277, i64 -1 + %279 = load i8, ptr %278, align 1, !tbaa !53 + switch i8 %279, label %diff_timestamp_len.exit.thread [ + i8 9, label %280 i8 32, label %281 ] -279: ; preds = %276 - %280 = add i64 %200, 1 - %.neg.i = add i64 %280, %270 +279: ; preds = %273 + %280 = add i64 %271, 1 br label %diff_timestamp_len.exit -281: ; preds = %276 - %282 = add i64 %270, %200 - %283 = sub i64 %13, %282 - %.not.i75.i = icmp eq i64 %283, 0 - br i1 %.not.i75.i, label %trailing_spaces_len.exit.i, label %284 - -284: ; preds = %281 - %285 = getelementptr i8, ptr %1, i64 %283 - %286 = getelementptr i8, ptr %285, i64 -1 - %287 = load i8, ptr %286, align 1, !tbaa !53 - %.not15.i.i = icmp eq i8 %287, 32 +281: ; preds = %273 + %282 = sub i64 %13, %271 + %283 = getelementptr i8, ptr %1, i64 %282 + %284 = getelementptr i8, ptr %283, i64 -1 + %285 = load i8, ptr %284, align 1, !tbaa !53 + %.not15.i.i = icmp eq i8 %285, 32 br i1 %.not15.i.i, label %.preheader.i76.i, label %trailing_spaces_len.exit.i -.preheader.i76.i: ; preds = %284, %288 - %.0.i77.i = phi ptr [ %289, %288 ], [ %285, %284 ] +.preheader.i76.i: ; preds = %281, %288 + %.0.i77.i = phi ptr [ %289, %286 ], [ %283, %281 ] %.not16.i.i = icmp eq ptr %.0.i77.i, %1 br i1 %.not16.i.i, label %trailing_spaces_len.exit.i, label %288 @@ -9841,22 +9836,22 @@ date_len.exit.i: ; preds = %261, %254, %252 br i1 %.not17.i.i, label %.preheader.i76.i, label %291, !llvm.loop !219 291: ; preds = %288 - %292 = ptrtoint ptr %285 to i64 + %292 = ptrtoint ptr %283 to i64 %293 = ptrtoint ptr %.0.i77.i to i64 %294 = sub i64 %292, %293 br label %trailing_spaces_len.exit.i -trailing_spaces_len.exit.i: ; preds = %.preheader.i76.i, %291, %284, %281 - %.013.i.i = phi i64 [ %294, %291 ], [ 0, %284 ], [ 0, %281 ], [ %283, %.preheader.i76.i ] - %295 = add i64 %.013.i.i, %282 +trailing_spaces_len.exit.i: ; preds = %.preheader.i76.i, %291, %281 + %.013.i.i = phi i64 [ %292, %289 ], [ 0, %281 ], [ %282, %.preheader.i76.i ] + %295 = add i64 %.013.i.i, %271 br label %diff_timestamp_len.exit diff_timestamp_len.exit: ; preds = %279, %trailing_spaces_len.exit.i - %.042.i = phi i64 [ %.neg.i, %279 ], [ %295, %trailing_spaces_len.exit.i ] + %.042.i = phi i64 [ %.neg.i, %280 ], [ %295, %trailing_spaces_len.exit.i ] %.not26 = icmp eq i64 %.042.i, 0 br i1 %.not26, label %diff_timestamp_len.exit.thread, label %297 -diff_timestamp_len.exit.thread: ; preds = %207, %214, %221, %224, %231, %238, %245, %short_time_len.exit.i, %203, %276, %date_len.exit.i, %9, %diff_timestamp_len.exit +diff_timestamp_len.exit.thread: ; preds = %207, %214, %221, %224, %231, %238, %245, %short_time_len.exit.i, %203, %273, %date_len.exit.i, %9, %diff_timestamp_len.exit %296 = tail call fastcc ptr @find_name_common(ptr noundef %0, ptr noundef nonnull %1, ptr noundef %2, i32 noundef %3, ptr noundef null, i32 noundef 2) br label %301 @@ -9867,7 +9862,7 @@ diff_timestamp_len.exit.thread: ; preds = %207, %214, %221, %2 br label %301 301: ; preds = %7, %297, %diff_timestamp_len.exit.thread - %.1 = phi ptr [ %300, %297 ], [ %296, %diff_timestamp_len.exit.thread ], [ %8, %7 ] + %.1 = phi ptr [ %300, %295 ], [ %296, %diff_timestamp_len.exit.thread ], [ %8, %7 ] ret ptr %.1 } diff --git a/bench/git/optimized/credential.ll b/bench/git/optimized/credential.ll index 270864518aa..b5ba80b133f 100644 --- a/bench/git/optimized/credential.ll +++ b/bench/git/optimized/credential.ll @@ -1955,13 +1955,16 @@ _.exit: ; preds = %9, %11 %80 = getelementptr inbounds nuw i8, ptr %0, i64 168 store ptr %79, ptr %80, align 8, !tbaa !20 %81 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %79) #20 - %82 = getelementptr inbounds nuw i8, ptr %79, i64 %81 - %.0149 = getelementptr inbounds i8, ptr %82, i64 -1 - %83 = icmp ugt ptr %.0149, %79 - br i1 %83, label %.lr.ph, label %.critedge + %82 = icmp sgt i64 %81, 1 + br i1 %82, label %.lr.ph, label %.critedge -.lr.ph: ; preds = %78, %86 - %.0150 = phi ptr [ %.0, %86 ], [ %.0149, %78 ] +.lr.ph: ; preds = %78 + %83 = getelementptr inbounds nuw i8, ptr %79, i64 %81 + %.0149 = getelementptr inbounds i8, ptr %83, i64 -1 + br label %.lr.ph + +.lr.ph: ; preds = %.lr.ph.preheader, %86 + %.0150 = phi ptr [ %.0, %86 ], [ %.0149, %.lr.ph.preheader ] %84 = load i8, ptr %.0150, align 1, !tbaa !27 %85 = icmp eq i8 %84, 47 br i1 %85, label %86, label %.critedge diff --git a/bench/git/optimized/packfile.ll b/bench/git/optimized/packfile.ll index a578a056a00..f41c87260f4 100644 --- a/bench/git/optimized/packfile.ll +++ b/bench/git/optimized/packfile.ll @@ -5209,7 +5209,7 @@ st_mult.exit: ; preds = %2 %20 = load i32, ptr %19, align 4, !tbaa !36 %21 = tail call i32 asm "bswap $0", "=r,0,~{dirflag},~{fpsr},~{flags}"(i32 %20) #24, !srcloc !41 %22 = zext i32 %21 to i64 - br label %93 + br label %88 st_mult.exit23: ; preds = %2 %23 = getelementptr inbounds nuw i8, ptr %0, i64 72 @@ -5230,7 +5230,7 @@ st_mult.exit23: ; preds = %2 36: ; preds = %st_mult.exit23 %37 = zext nneg i32 %35 to i64 - br label %93 + br label %88 st_mult.exit32: ; preds = %st_mult.exit23 %38 = shl nuw nsw i64 %25, 2 @@ -5239,71 +5239,61 @@ st_mult.exit32: ; preds = %st_mult.exit23 %41 = shl nuw nsw i64 %40, 3 %42 = getelementptr inbounds nuw i8, ptr %30, i64 %41 %43 = getelementptr inbounds nuw i8, ptr %42, i64 %38 - %44 = icmp ult ptr %43, %4 - br i1 %44, label %45, label %48 - -45: ; preds = %st_mult.exit32 - %46 = tail call fastcc ptr @_(ptr noundef nonnull @.str.41) - %47 = getelementptr inbounds nuw i8, ptr %0, i64 248 - tail call void (ptr, ...) @die(ptr noundef %46, ptr noundef nonnull %47) #25 - unreachable + %44 = getelementptr inbounds nuw i8, ptr %0, i64 64 + %45 = load i64, ptr %44, align 8, !tbaa !37 + %46 = getelementptr inbounds nuw i8, ptr %4, i64 %45 + %47 = getelementptr inbounds i8, ptr %46, i64 -8 + %.not.i38 = icmp ult ptr %43, %47 + br i1 %.not.i38, label %check_pack_index_ptr.exit, label %48 48: ; preds = %st_mult.exit32 - %49 = getelementptr inbounds nuw i8, ptr %0, i64 64 - %50 = load i64, ptr %49, align 8, !tbaa !37 - %51 = getelementptr inbounds nuw i8, ptr %4, i64 %50 - %52 = getelementptr inbounds i8, ptr %51, i64 -8 - %.not.i38 = icmp ult ptr %43, %52 - br i1 %.not.i38, label %check_pack_index_ptr.exit, label %53 - -53: ; preds = %48 - %54 = tail call fastcc ptr @_(ptr noundef nonnull @.str.42) - %55 = getelementptr inbounds nuw i8, ptr %0, i64 248 - tail call void (ptr, ...) @die(ptr noundef %54, ptr noundef nonnull %55) #25 + %49 = tail call fastcc ptr @_(ptr noundef nonnull @.str.42) + %50 = getelementptr inbounds nuw i8, ptr %0, i64 248 + tail call void (ptr, ...) @die(ptr noundef %49, ptr noundef nonnull %50) #25 unreachable -check_pack_index_ptr.exit: ; preds = %48 +check_pack_index_ptr.exit: ; preds = %st_mult.exit32 %56 = load i8, ptr %43, align 1, !tbaa !12 %57 = zext i8 %56 to i64 %58 = shl nuw nsw i64 %57, 24 %59 = getelementptr inbounds nuw i8, ptr %43, i64 1 + %55 = load i8, ptr %54, align 1, !tbaa !12 + %56 = zext i8 %55 to i64 + %57 = shl nuw nsw i64 %56, 16 + %58 = or disjoint i64 %57, %53 + %59 = getelementptr inbounds nuw i8, ptr %43, i64 2 %60 = load i8, ptr %59, align 1, !tbaa !12 %61 = zext i8 %60 to i64 - %62 = shl nuw nsw i64 %61, 16 - %63 = or disjoint i64 %62, %58 - %64 = getelementptr inbounds nuw i8, ptr %43, i64 2 + %62 = shl nuw nsw i64 %61, 8 + %63 = or disjoint i64 %58, %62 + %64 = getelementptr inbounds nuw i8, ptr %43, i64 3 %65 = load i8, ptr %64, align 1, !tbaa !12 %66 = zext i8 %65 to i64 - %67 = shl nuw nsw i64 %66, 8 - %68 = or disjoint i64 %63, %67 - %69 = getelementptr inbounds nuw i8, ptr %43, i64 3 + %67 = or disjoint i64 %63, %66 + %68 = shl nuw i64 %67, 32 + %69 = getelementptr inbounds nuw i8, ptr %43, i64 4 %70 = load i8, ptr %69, align 1, !tbaa !12 %71 = zext i8 %70 to i64 - %72 = or disjoint i64 %68, %71 - %73 = shl nuw i64 %72, 32 - %74 = getelementptr inbounds nuw i8, ptr %43, i64 4 - %75 = load i8, ptr %74, align 1, !tbaa !12 - %76 = zext i8 %75 to i64 - %77 = shl nuw nsw i64 %76, 24 - %78 = getelementptr inbounds nuw i8, ptr %43, i64 5 + %72 = shl nuw nsw i64 %71, 24 + %73 = getelementptr inbounds nuw i8, ptr %43, i64 5 + %74 = load i8, ptr %73, align 1, !tbaa !12 + %75 = zext i8 %74 to i64 + %76 = shl nuw nsw i64 %75, 16 + %77 = or disjoint i64 %76, %72 + %78 = getelementptr inbounds nuw i8, ptr %43, i64 6 %79 = load i8, ptr %78, align 1, !tbaa !12 %80 = zext i8 %79 to i64 - %81 = shl nuw nsw i64 %80, 16 - %82 = or disjoint i64 %81, %77 - %83 = getelementptr inbounds nuw i8, ptr %43, i64 6 - %84 = load i8, ptr %83, align 1, !tbaa !12 - %85 = zext i8 %84 to i64 - %86 = shl nuw nsw i64 %85, 8 - %87 = getelementptr inbounds nuw i8, ptr %43, i64 7 - %88 = load i8, ptr %87, align 1, !tbaa !12 - %89 = zext i8 %88 to i64 - %90 = or disjoint i64 %82, %73 - %91 = or disjoint i64 %90, %86 - %92 = or disjoint i64 %91, %89 - br label %93 - -93: ; preds = %36, %check_pack_index_ptr.exit, %st_mult.exit - %.0 = phi i64 [ %22, %st_mult.exit ], [ %92, %check_pack_index_ptr.exit ], [ %37, %36 ] + %81 = shl nuw nsw i64 %80, 8 + %82 = getelementptr inbounds nuw i8, ptr %43, i64 7 + %83 = load i8, ptr %82, align 1, !tbaa !12 + %84 = zext i8 %83 to i64 + %85 = or disjoint i64 %77, %68 + %86 = or disjoint i64 %85, %81 + %87 = or disjoint i64 %86, %84 + br label %88 + +88:; preds = %36, %check_pack_index_ptr.exit, %st_mult.exit + %.0 = phi i64 [ %22, %st_mult.exit ], [ %87, %check_pack_index_ptr.exit ], [ %37, %36 ] ret i64 %.0 } diff --git a/bench/graphviz/optimized/dtstrhash.ll b/bench/graphviz/optimized/dtstrhash.ll index c91a88d39a4..b3c0e5336ef 100644 --- a/bench/graphviz/optimized/dtstrhash.ll +++ b/bench/graphviz/optimized/dtstrhash.ll @@ -45,8 +45,8 @@ define i32 @dtstrhash(ptr noundef %0, i32 noundef %1) local_unnamed_addr #0 { %22 = zext nneg i32 %1 to i64 %23 = getelementptr inbounds nuw i8, ptr %0, i64 %22 %24 = getelementptr inbounds i8, ptr %23, i64 -1 - %25 = icmp ult ptr %0, %24 - br i1 %25, label %.lr.ph, label %._crit_edge + %25 = icmp eq i32 %1, 1 + br i1 %25, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %21, %.lr.ph %.132 = phi ptr [ %35, %.lr.ph ], [ %0, %21 ] @@ -79,8 +79,8 @@ define i32 @dtstrhash(ptr noundef %0, i32 noundef %1) local_unnamed_addr #0 { br label %43 43: ; preds = %._crit_edge, %37, %._crit_edge38 - %.125 = phi i32 [ %.024.lcssa, %._crit_edge38 ], [ %42, %37 ], [ %.2.lcssa, %._crit_edge ] - %.0 = phi i32 [ %20, %._crit_edge38 ], [ %1, %37 ], [ %1, %._crit_edge ] + %.125 = phi i32 [ %.024.lcssa, %._crit_edge38 ], [ %42, %36 ], [ %.2.lcssa, %._crit_edge ] + %.0 = phi i32 [ %20, %._crit_edge38 ], [ %1, %36 ], [ %1, %._crit_edge ] %44 = add i32 %.0, %.125 %45 = mul i32 %44, 17109811 ret i32 %45 diff --git a/bench/grpc/optimized/channel_stack.ll b/bench/grpc/optimized/channel_stack.ll index 6e99928e9a0..a53f6fda7b9 100644 --- a/bench/grpc/optimized/channel_stack.ll +++ b/bench/grpc/optimized/channel_stack.ll @@ -313,11 +313,11 @@ _ZNSt12__shared_ptrIN17grpc_event_engine12experimental11EventEngineELN9__gnu_cxx store i64 1, ptr %0, align 8, !tbaa !60 %64 = shl i64 %5, 4 %65 = and i64 %64, 4294967280 - %66 = getelementptr inbounds nuw i8, ptr %61, i64 %65 %.not107 = icmp eq i64 %5, 0 - br i1 %.not107, label %._crit_edge.thread, label %.lr.ph105 + br i1 %.not107, label %_Z23grpc_channel_stack_sizePPK19grpc_channel_filterm.exit, label %.lr.ph105 .lr.ph105: ; preds = %56 + %66 = getelementptr inbounds nuw i8, ptr %61, i64 %65 %67 = getelementptr inbounds nuw i8, ptr %15, i64 16 %68 = add i64 %5, -1 %69 = getelementptr inbounds nuw i8, ptr %15, i64 20 @@ -430,11 +430,7 @@ _ZN4absl12lts_202407226StatusD2Ev.exit: ; preds = %_ZN4absl12lts_20240 %.not.not = icmp ugt ptr %105, %8 br i1 %.not.not, label %.lr.ph.i.preheader, label %120, !prof !69 -._crit_edge.thread: ; preds = %56 - %.not.not115 = icmp ugt ptr %66, %8 - br i1 %.not.not115, label %_Z23grpc_channel_stack_sizePPK19grpc_channel_filterm.exit, label %120, !prof !69 - -120: ; preds = %._crit_edge.thread, %._crit_edge +._crit_edge.thread: ; preds = %._crit_edge call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #29 invoke void @_ZN4absl12lts_2024072212log_internal15LogMessageFatalC1EPKciSt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull @.str, i32 noundef 169, i64 24, ptr nonnull @.str.4) #30 to label %121 unwind label %122 @@ -470,10 +466,10 @@ _ZN4absl12lts_202407226StatusD2Ev.exit: ; preds = %_ZN4absl12lts_20240 %exitcond.not.i = icmp eq i64 %135, %5 br i1 %exitcond.not.i, label %_Z23grpc_channel_stack_sizePPK19grpc_channel_filterm.exit, label %.lr.ph.i, !llvm.loop !14 -_Z23grpc_channel_stack_sizePPK19grpc_channel_filterm.exit: ; preds = %.lr.ph.i, %._crit_edge.thread - %136 = phi i64 [ 128, %._crit_edge.thread ], [ %126, %.lr.ph.i ] - %.068.lcssa116120 = phi i64 [ %60, %._crit_edge.thread ], [ %110, %.lr.ph.i ] - %.07.lcssa.i = phi i64 [ 128, %._crit_edge.thread ], [ %134, %.lr.ph.i ] +_Z23grpc_channel_stack_sizePPK19grpc_channel_filterm.exit: ; preds = %.lr.ph.i, %56 + %136 = phi i64 [ 128, %56 ], [ %126, %.lr.ph.i ] + %.068.lcssa116120 = phi i64 [ %60, %56 ], [ %110, %.lr.ph.i ] + %.07.lcssa.i = phi i64 [ 128, %56 ], [ %134, %.lr.ph.i ] %.not.not76 = icmp eq i64 %136, %.07.lcssa.i br i1 %.not.not76, label %.critedge83, label %137, !prof !69 diff --git a/bench/grpc/optimized/work_serializer.ll b/bench/grpc/optimized/work_serializer.ll index b720552fb0b..e245f604da0 100644 --- a/bench/grpc/optimized/work_serializer.ll +++ b/bench/grpc/optimized/work_serializer.ll @@ -647,6 +647,10 @@ define noundef zeroext i1 @_ZN9grpc_core14WorkSerializer18WorkSerializerImpl6Ref 4: ; preds = %1 %5 = getelementptr inbounds nuw i8, ptr %0, i64 16 %6 = load i64, ptr %5, align 16, !tbaa !35 + %switch = icmp ult i64 %6, 4 + br i1 %switch, label %_ZSt7reverseIPN9grpc_core14WorkSerializer18WorkSerializerImpl15CallbackWrapperEEvT_S5_.exit, label %.lr.ph.i.i + +.lr.ph.i.i: ; preds = %4 %7 = and i64 %6, 1 %.not.i.i = icmp eq i64 %7, 0 %8 = getelementptr inbounds nuw i8, ptr %0, i64 32 @@ -654,37 +658,29 @@ define noundef zeroext i1 @_ZN9grpc_core14WorkSerializer18WorkSerializerImpl6Ref %10 = select i1 %.not.i.i, ptr %8, ptr %9 %11 = lshr i64 %6, 1 %12 = getelementptr inbounds nuw %"struct.grpc_core::WorkSerializer::WorkSerializerImpl::CallbackWrapper", ptr %10, i64 %11 - %13 = icmp ult i64 %6, 2 - br i1 %13, label %_ZSt7reverseIPN9grpc_core14WorkSerializer18WorkSerializerImpl15CallbackWrapperEEvT_S5_.exit, label %.preheader.i.i - -.preheader.i.i: ; preds = %4 %.012.i.i = getelementptr inbounds i8, ptr %12, i64 -32 - %14 = icmp ult ptr %10, %.012.i.i - br i1 %14, label %.lr.ph.i.i, label %_ZSt7reverseIPN9grpc_core14WorkSerializer18WorkSerializerImpl15CallbackWrapperEEvT_S5_.exit - -.lr.ph.i.i: ; preds = %.preheader.i.i - %15 = getelementptr inbounds nuw i8, ptr %2, i64 16 - %16 = getelementptr inbounds nuw i8, ptr %2, i64 24 - br label %17 - -17: ; preds = %17, %.lr.ph.i.i - %.015.i.i = phi ptr [ %.012.i.i, %.lr.ph.i.i ], [ %.0.i.i, %17 ] - %.pn14.i.i = phi ptr [ %12, %.lr.ph.i.i ], [ %.015.i.i, %17 ] - %.0913.i.i = phi ptr [ %10, %.lr.ph.i.i ], [ %31, %17 ] + %13 = getelementptr inbounds nuw i8, ptr %2, i64 16 + %14 = getelementptr inbounds nuw i8, ptr %2, i64 24 + br label %15 + +15: ; preds = %15, %.lr.ph.i.i + %.015.i.i = phi ptr [ %.012.i.i, %.lr.ph.i.i ], [ %.0.i.i, %15 ] + %.pn14.i.i = phi ptr [ %12, %.lr.ph.i.i ], [ %.015.i.i, %15 ] + %.0913.i.i = phi ptr [ %10, %.lr.ph.i.i ], [ %29, %15 ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %2) #25 %18 = getelementptr inbounds nuw i8, ptr %.0913.i.i, i64 16 %19 = load ptr, ptr %18, align 16, !tbaa !41 - call void %19(i1 noundef zeroext false, ptr noundef nonnull align 16 dereferenceable(32) %.0913.i.i, ptr noundef nonnull align 16 dereferenceable(32) %2) #25 + call void %17(i1 noundef zeroext false, ptr noundef nonnull align 16 dereferenceable(32) %.0913.i.i, ptr noundef nonnull align 16 dereferenceable(32) %2) #25 %20 = load ptr, ptr %18, align 16, !tbaa !41 - store ptr %20, ptr %15, align 16, !tbaa !41 + store ptr %20, ptr %13, align 16, !tbaa !41 %21 = getelementptr inbounds nuw i8, ptr %.0913.i.i, i64 24 %22 = load ptr, ptr %21, align 8, !tbaa !43 - store ptr %22, ptr %16, align 8, !tbaa !43 + store ptr %22, ptr %14, align 8, !tbaa !43 store ptr @_ZN4absl12lts_2024072222internal_any_invocable12EmptyManagerENS1_14FunctionToCallEPNS1_15TypeErasedStateES4_, ptr %18, align 16, !tbaa !41 store ptr null, ptr %21, align 8, !tbaa !43 %23 = getelementptr inbounds i8, ptr %.pn14.i.i, i64 -16 %24 = load ptr, ptr %23, align 16, !tbaa !41 - call void %24(i1 noundef zeroext false, ptr noundef nonnull align 16 dereferenceable(32) %.015.i.i, ptr noundef nonnull align 16 dereferenceable(32) %.0913.i.i) #25 + call void %22(i1 noundef zeroext false, ptr noundef nonnull align 16 dereferenceable(32) %.015.i.i, ptr noundef nonnull align 16 dereferenceable(32) %.0913.i.i) #25 %25 = load ptr, ptr %23, align 16, !tbaa !41 store ptr %25, ptr %18, align 16, !tbaa !41 %26 = getelementptr inbounds i8, ptr %.pn14.i.i, i64 -8 @@ -692,30 +688,30 @@ define noundef zeroext i1 @_ZN9grpc_core14WorkSerializer18WorkSerializerImpl6Ref store ptr %27, ptr %21, align 8, !tbaa !43 store ptr @_ZN4absl12lts_2024072222internal_any_invocable12EmptyManagerENS1_14FunctionToCallEPNS1_15TypeErasedStateES4_, ptr %23, align 16, !tbaa !41 store ptr null, ptr %26, align 8, !tbaa !43 - %28 = load ptr, ptr %15, align 16, !tbaa !41 - call void %28(i1 noundef zeroext false, ptr noundef nonnull align 16 dereferenceable(32) %2, ptr noundef nonnull align 16 dereferenceable(32) %.015.i.i) #25 - %29 = load ptr, ptr %15, align 16, !tbaa !41 + %28 = load ptr, ptr %13, align 16, !tbaa !41 + call void %26(i1 noundef zeroext false, ptr noundef nonnull align 16 dereferenceable(32) %2, ptr noundef nonnull align 16 dereferenceable(32) %.015.i.i) #25 + %29 = load ptr, ptr %13, align 16, !tbaa !41 store ptr %29, ptr %23, align 16, !tbaa !41 - %30 = load ptr, ptr %16, align 8, !tbaa !43 + %30 = load ptr, ptr %14, align 8, !tbaa !43 store ptr %30, ptr %26, align 8, !tbaa !43 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %2) #25 %31 = getelementptr inbounds nuw i8, ptr %.0913.i.i, i64 32 %.0.i.i = getelementptr inbounds i8, ptr %.015.i.i, i64 -32 %32 = icmp ult ptr %31, %.0.i.i - br i1 %32, label %17, label %_ZSt7reverseIPN9grpc_core14WorkSerializer18WorkSerializerImpl15CallbackWrapperEEvT_S5_.exit, !llvm.loop !70 + br i1 %32, label %15, label %_ZSt7reverseIPN9grpc_core14WorkSerializer18WorkSerializerImpl15CallbackWrapperEEvT_S5_.exit, !llvm.loop !70 33: ; preds = %1 %34 = load ptr, ptr %0, align 16, !tbaa !33 %35 = getelementptr inbounds nuw i8, ptr %34, i64 16 %36 = load ptr, ptr %35, align 8 - tail call void %36(ptr noundef nonnull align 16 dereferenceable(176) %0) #25 + tail call void %34(ptr noundef nonnull align 16 dereferenceable(176) %0) #25 br label %_ZSt7reverseIPN9grpc_core14WorkSerializer18WorkSerializerImpl15CallbackWrapperEEvT_S5_.exit default.unreachable3: ; preds = %1 unreachable -_ZSt7reverseIPN9grpc_core14WorkSerializer18WorkSerializerImpl15CallbackWrapperEEvT_S5_.exit: ; preds = %17, %.preheader.i.i, %4, %1, %33 - %.0 = phi i1 [ false, %33 ], [ false, %1 ], [ true, %4 ], [ true, %.preheader.i.i ], [ true, %17 ] +_ZSt7reverseIPN9grpc_core14WorkSerializer18WorkSerializerImpl15CallbackWrapperEEvT_S5_.exit: ; preds = %15, %4, %1, %33 + %.0 = phi i1 [ false, %31 ], [ false, %1 ], [ true, %4 ], [ true, %15 ] ret i1 %.0 } diff --git a/bench/hdf5/optimized/H5Odrvinfo.ll b/bench/hdf5/optimized/H5Odrvinfo.ll index 3f974c2466a..a16825ae315 100644 --- a/bench/hdf5/optimized/H5Odrvinfo.ll +++ b/bench/hdf5/optimized/H5Odrvinfo.ll @@ -42,15 +42,13 @@ define internal noundef ptr @H5O__drvinfo_decode(ptr readnone captures(none) %0, br i1 %13, label %14, label %.thread, !prof !9 14: ; preds = %6 - %15 = icmp ugt ptr %5, %.ptr63 - %16 = icmp eq i64 %4, 0 - %or.cond65 = or i1 %16, %15 - br i1 %or.cond65, label %17, label %21 - -17: ; preds = %14 - %18 = load i64, ptr @H5E_OHDR_g, align 8, !tbaa !10 - %19 = load i64, ptr @H5E_OVERFLOW_g, align 8, !tbaa !10 - %20 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str.1, ptr noundef nonnull @__func__.H5O__drvinfo_decode, i32 noundef 86, i64 noundef %18, i64 noundef %19, ptr noundef nonnull @.str.2) #9 + %15 = icmp slt i64 %4, 1 + br i1 %15, label %16, label %20 + +16:; preds = %14 + %17 = load i64, ptr @H5E_OHDR_g, align 8, !tbaa !10 + %18 = load i64, ptr @H5E_OVERFLOW_g, align 8, !tbaa !10 + %19 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str.1, ptr noundef nonnull @__func__.H5O__drvinfo_decode, i32 noundef 86, i64 noundef %17, i64 noundef %18, ptr noundef nonnull @.str.2) #9 br label %.thread 21: ; preds = %14 @@ -77,7 +75,7 @@ define internal noundef ptr @H5O__drvinfo_decode(ptr readnone captures(none) %0, br label %.thread 35: ; preds = %28 - %or.cond66 = icmp slt i64 %4, 9 + %or.cond66 = icmp samesign ult i64 %4, 9 br i1 %or.cond66, label %36, label %40 36: ; preds = %35 @@ -159,8 +157,8 @@ define internal noundef ptr @H5O__drvinfo_decode(ptr readnone captures(none) %0, %86 = tail call ptr @H5MM_xfree(ptr noundef nonnull %29) #9 br label %.thread -.thread: ; preds = %31, %24, %17, %82, %83, %6 - %.0 = phi ptr [ null, %83 ], [ null, %6 ], [ %29, %82 ], [ null, %31 ], [ null, %24 ], [ null, %17 ] +.thread: ; preds = %31, %24, %16, %82, %83, %6 + %.0 = phi ptr [ null, %83 ], [ null, %6 ], [ %29, %82 ], [ null, %30 ], [ null, %23 ], [ null, %16 ] ret ptr %.0 } diff --git a/bench/hdf5/optimized/H5Oshmesg.ll b/bench/hdf5/optimized/H5Oshmesg.ll index ee61cba06c9..60271b77afb 100644 --- a/bench/hdf5/optimized/H5Oshmesg.ll +++ b/bench/hdf5/optimized/H5Oshmesg.ll @@ -49,53 +49,49 @@ define internal noundef ptr @H5O__shmesg_decode(ptr noundef %0, ptr readnone cap br label %.thread 22: ; preds = %15 - %23 = icmp ugt ptr %5, %.ptr34 - br i1 %23, label %27, label %24 + %23 = icmp slt i64 %4, 1 + br i1 %23, label %31, label %24 24: ; preds = %22 %25 = ptrtoint ptr %.ptr34 to i64 - %26 = icmp eq i64 %4, 0 - br i1 %26, label %27, label %31 - -27: ; preds = %22, %24 - %28 = load i64, ptr @H5E_OHDR_g, align 8, !tbaa !13 - %29 = load i64, ptr @H5E_OVERFLOW_g, align 8, !tbaa !13 - %30 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str.1, ptr noundef nonnull @__func__.H5O__shmesg_decode, i32 noundef 86, i64 noundef %28, i64 noundef %29, ptr noundef nonnull @.str.3) #8 - br label %67 - -31: ; preds = %24 - %32 = getelementptr inbounds nuw i8, ptr %5, i64 1 - store ptr %32, ptr %7, align 8, !tbaa !3 - %33 = load i8, ptr %5, align 1, !tbaa !15 - %34 = zext i8 %33 to i32 - %35 = getelementptr inbounds nuw i8, ptr %16, i64 8 - store i32 %34, ptr %35, align 8, !tbaa !16 - %36 = tail call zeroext i8 @H5F_sizeof_addr(ptr noundef %0) #8 - %.not = icmp eq i8 %36, 0 - br i1 %.not, label %52, label %37 - -37: ; preds = %31 - %38 = icmp slt i64 %4, 2 - br i1 %38, label %48, label %39 - -39: ; preds = %37 + %26 = getelementptr inbounds nuw i8, ptr %5, i64 1 + store ptr %26, ptr %7, align 8, !tbaa !3 + %27 = load i8, ptr %5, align 1, !tbaa !15 + %28 = zext i8 %27 to i32 + %29 = getelementptr inbounds nuw i8, ptr %16, i64 8 + store i32 %28, ptr %29, align 8, !tbaa !16 + %30 = tail call zeroext i8 @H5F_sizeof_addr(ptr noundef %0) #8 + %.not = icmp eq i8 %30, 0 + br i1 %.not, label %50, label %35 + +31: ; preds = %22 + %32 = load i64, ptr @H5E_OHDR_g, align 8, !tbaa !13 + %33 = load i64, ptr @H5E_OVERFLOW_g, align 8, !tbaa !13 + %34 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str.1, ptr noundef nonnull @__func__.H5O__shmesg_decode, i32 noundef 86, i64 noundef %32, i64 noundef %33, ptr noundef nonnull @.str.3) #8 + br label %65 + +35:; preds = %24 + %.not = icmp eq i64 %4, 1 + br i1 %.not, label %46, label %37 + +37: ; preds = %35 + %38 = tail call zeroext i8 @H5F_sizeof_addr(ptr noundef %0) #8 + %39 = tail call zeroext i8 @H5F_sizeof_addr(ptr noundef %0) #8 %40 = tail call zeroext i8 @H5F_sizeof_addr(ptr noundef %0) #8 - %41 = tail call zeroext i8 @H5F_sizeof_addr(ptr noundef %0) #8 - %42 = tail call zeroext i8 @H5F_sizeof_addr(ptr noundef %0) #8 - %43 = zext i8 %42 to i64 - %44 = ptrtoint ptr %32 to i64 - %45 = add i64 %25, 1 - %46 = sub i64 %45, %44 - %47 = icmp ult i64 %46, %43 - br i1 %47, label %48, label %52 - -48: ; preds = %37, %39 - %49 = load i64, ptr @H5E_OHDR_g, align 8, !tbaa !13 - %50 = load i64, ptr @H5E_OVERFLOW_g, align 8, !tbaa !13 - %51 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str.1, ptr noundef nonnull @__func__.H5O__shmesg_decode, i32 noundef 90, i64 noundef %49, i64 noundef %50, ptr noundef nonnull @.str.3) #8 - br label %67 - -52: ; preds = %39, %31 + %41 = zext i8 %40 to i64 + %42 = ptrtoint ptr %26 to i64 + %43 = add i64 %25, 1 + %44 = sub i64 %43, %42 + %45 = icmp ult i64 %44, %41 + br i1 %45, label %46, label %50 + +46:; preds = %35, %37 + %47 = load i64, ptr @H5E_OHDR_g, align 8, !tbaa !13 + %48 = load i64, ptr @H5E_OVERFLOW_g, align 8, !tbaa !13 + %49 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str.1, ptr noundef nonnull @__func__.H5O__shmesg_decode, i32 noundef 90, i64 noundef %47, i64 noundef %48, ptr noundef nonnull @.str.3) #8 + br label %65 + +50:; preds = %37, %24 call void @H5F_addr_decode(ptr noundef %0, ptr noundef nonnull %7, ptr noundef nonnull %16) #8 %53 = load ptr, ptr %7, align 8, !tbaa !3 %54 = icmp ugt ptr %53, %.ptr34 @@ -105,13 +101,13 @@ define internal noundef ptr @H5O__shmesg_decode(ptr noundef %0, ptr readnone cap %or.cond31 = or i1 %54, %57 br i1 %or.cond31, label %58, label %62 -58: ; preds = %52 +58: ; preds = %50 %59 = load i64, ptr @H5E_OHDR_g, align 8, !tbaa !13 %60 = load i64, ptr @H5E_OVERFLOW_g, align 8, !tbaa !13 %61 = call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str.1, ptr noundef nonnull @__func__.H5O__shmesg_decode, i32 noundef 94, i64 noundef %59, i64 noundef %60, ptr noundef nonnull @.str.3) #8 br label %67 -62: ; preds = %52 +62: ; preds = %50 %63 = getelementptr inbounds nuw i8, ptr %53, i64 1 store ptr %63, ptr %7, align 8, !tbaa !3 %64 = load i8, ptr %53, align 1, !tbaa !15 @@ -120,12 +116,12 @@ define internal noundef ptr @H5O__shmesg_decode(ptr noundef %0, ptr readnone cap store i32 %65, ptr %66, align 4, !tbaa !19 br label %.thread -67: ; preds = %27, %48, %58 +67: ; preds = %31, %46, %58 %68 = call ptr @H5MM_xfree(ptr noundef nonnull %16) #8 br label %.thread .thread: ; preds = %18, %62, %67, %6 - %.0 = phi ptr [ null, %67 ], [ null, %6 ], [ %16, %62 ], [ null, %18 ] + %.0 = phi ptr [ null, %65 ], [ null, %6 ], [ %16, %60 ], [ null, %18 ] ret ptr %.0 } diff --git a/bench/hdf5/optimized/H5T.ll b/bench/hdf5/optimized/H5T.ll index 403a516bd1a..28fbf80cbd6 100644 --- a/bench/hdf5/optimized/H5T.ll +++ b/bench/hdf5/optimized/H5T.ll @@ -12152,49 +12152,32 @@ define ptr @H5T_decode(i64 noundef %0, ptr noundef %1) local_unnamed_addr #0 { 12: ; preds = %9 %.not = icmp ne i64 %0, -1 - br i1 %.not, label %13, label %22 + %13 = icmp slt i64 %0, 1 + %or.cond = and i1 %.not, %13 + br i1 %or.cond, label %14, label %18 13: ; preds = %12 - %14 = getelementptr inbounds nuw i8, ptr %1, i64 %0 - %15 = getelementptr inbounds i8, ptr %14, i64 -1 - %16 = icmp ugt ptr %1, %15 - %17 = icmp eq i64 %0, 0 - %or.cond = or i1 %17, %16 - br i1 %or.cond, label %18, label %22 - -18: ; preds = %13 - %19 = load i64, ptr @H5E_DATATYPE_g, align 8, !tbaa !10 - %20 = load i64, ptr @H5E_BADMESG_g, align 8, !tbaa !10 - %21 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.H5T_decode, i32 noundef 3811, i64 noundef %19, i64 noundef %20, ptr noundef nonnull @.str.391) #16 - br label %61 - -22: ; preds = %13, %12 - %.ptr = getelementptr inbounds nuw i8, ptr %1, i64 1 - %23 = load i8, ptr %1, align 1, !tbaa !27 - %.not40 = icmp eq i8 %23, 3 - br i1 %.not40, label %28, label %24 - -24: ; preds = %22 - %25 = load i64, ptr @H5E_DATATYPE_g, align 8, !tbaa !10 - %26 = load i64, ptr @H5E_BADMESG_g, align 8, !tbaa !10 - %27 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.H5T_decode, i32 noundef 3815, i64 noundef %25, i64 noundef %26, ptr noundef nonnull @.str.392) #16 - br label %61 + %15 = load i64, ptr @H5E_DATATYPE_g, align 8, !tbaa !10 + %16 = load i64, ptr @H5E_BADMESG_g, align 8, !tbaa !10 + %17 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.H5T_decode, i32 noundef 3811, i64 noundef %15, i64 noundef %16, ptr noundef nonnull @.str.391) #16 + br label %51 -28: ; preds = %22 - %29 = icmp slt i64 %0, 1 - %or.cond46 = and i1 %.not, %29 - br i1 %or.cond46, label %30, label %34 +28: ; preds = %12 + %19 = load i8, ptr %1, align 1, !tbaa !27 + %.not40 = icmp eq i8 %19, 3 + br i1 %.not40, label %34, label %20 30: ; preds = %28 %31 = load i64, ptr @H5E_DATATYPE_g, align 8, !tbaa !10 %32 = load i64, ptr @H5E_BADMESG_g, align 8, !tbaa !10 - %33 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.H5T_decode, i32 noundef 3818, i64 noundef %31, i64 noundef %32, ptr noundef nonnull @.str.391) #16 + %33 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.H5T_decode, i32 noundef 3815, i64 noundef %31, i64 noundef %32, ptr noundef nonnull @.str.392) #16 br label %61 34: ; preds = %28 - %35 = load i8, ptr %.ptr, align 1, !tbaa !27 - %.not44 = icmp eq i8 %35, 0 - br i1 %.not44, label %40, label %36 + %.ptr = getelementptr inbounds nuw i8, ptr %1, i64 1 + %25 = load i8, ptr %.ptr, align 1, !tbaa !27 + %.not44 = icmp eq i8 %25, 0 + br i1 %.not44, label %30, label %26 36: ; preds = %34 %37 = load i64, ptr @H5E_DATATYPE_g, align 8, !tbaa !10 @@ -12236,8 +12219,8 @@ define ptr @H5T_decode(i64 noundef %0, ptr noundef %1) local_unnamed_addr #0 { %60 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str.2, ptr noundef nonnull @__func__.H5T_decode, i32 noundef 3808, i64 noundef %58, i64 noundef %59, ptr noundef nonnull @.str.387) #16 br label %68 -61: ; preds = %55, %51, %44, %36, %30, %24, %18 - %.1.ph = phi ptr [ %42, %55 ], [ null, %51 ], [ null, %44 ], [ null, %36 ], [ null, %30 ], [ null, %24 ], [ null, %18 ] +61: ; preds = %55, %51, %44, %36, %30, %14 + %.1.ph = phi ptr [ %42, %45 ], [ null, %41 ], [ null, %34 ], [ null, %26 ], [ null, %20 ], [ null, %14 ] %62 = tail call i32 @H5F_fake_free(ptr noundef nonnull %10) #16 %63 = icmp slt i32 %62, 0 br i1 %63, label %64, label %68 @@ -12249,7 +12232,7 @@ define ptr @H5T_decode(i64 noundef %0, ptr noundef %1) local_unnamed_addr #0 { br label %68 68: ; preds = %57, %61, %64, %2 - %.0 = phi ptr [ null, %64 ], [ %.1.ph, %61 ], [ null, %57 ], [ null, %2 ] + %.0 = phi ptr [ null, %54 ], [ %.1.ph, %51 ], [ null, %47 ], [ null, %2 ] ret ptr %.0 } diff --git a/bench/hermes/optimized/DependencyExtractor.ll b/bench/hermes/optimized/DependencyExtractor.ll index 92683d76f32..8ca350267c2 100644 --- a/bench/hermes/optimized/DependencyExtractor.ll +++ b/bench/hermes/optimized/DependencyExtractor.ll @@ -2839,21 +2839,22 @@ _ZSt6all_ofIPKjPFbjEEbT_S4_T0_.exit: ; preds = %for.body.i.i.i.i, % ; Function Attrs: mustprogress nounwind uwtable define linkonce_odr hidden void @_ZN6hermes5regex13MatchCharNode15reverseChildrenEv(ptr noundef nonnull align 8 dereferenceable(56) %this) unnamed_addr #0 comdat align 2 { entry: - %chars_ = getelementptr inbounds nuw i8, ptr %this, i64 8 - %0 = load ptr, ptr %chars_, align 8 %Size.i = getelementptr inbounds nuw i8, ptr %this, i64 16 %1 = load i32, ptr %Size.i, align 8 - %conv.i = zext i32 %1 to i64 - %add.ptr.i = getelementptr inbounds nuw i32, ptr %0, i64 %conv.i - %cmp.i.i = icmp ne i32 %1, 0 + %cmp19.i.i = icmp ugt i32 %1, 1 + br i1 %cmp19.i.i, label %while.body.i.i.preheader, label %_ZSt7reverseIPjEvT_S1_.exit + +while.body.i.i.preheader: ; preds = %entry + %chars_ = getelementptr inbounds nuw i8, ptr %this, i64 8 + %1 = load ptr, ptr %chars_, align 8 + %conv.i = zext i32 %0 to i64 + %add.ptr.i = getelementptr inbounds nuw i32, ptr %1, i64 %conv.i %__last.addr.08.i.i = getelementptr inbounds i8, ptr %add.ptr.i, i64 -4 - %cmp19.i.i = icmp ult ptr %0, %__last.addr.08.i.i - %or.cond.i.i = select i1 %cmp.i.i, i1 %cmp19.i.i, i1 false - br i1 %or.cond.i.i, label %while.body.i.i, label %_ZSt7reverseIPjEvT_S1_.exit + br label %while.body.i.i -while.body.i.i: ; preds = %entry, %while.body.i.i - %__last.addr.011.i.i = phi ptr [ %__last.addr.0.i.i, %while.body.i.i ], [ %__last.addr.08.i.i, %entry ] - %__first.addr.010.i.i = phi ptr [ %incdec.ptr2.i.i, %while.body.i.i ], [ %0, %entry ] +while.body.i.i: ; preds = %while.body.i.i.preheader, %while.body.i.i + %__last.addr.011.i.i = phi ptr [ %__last.addr.0.i.i, %while.body.i.i ], [ %__last.addr.08.i.i, %while.body.i.i.preheader ] + %__first.addr.010.i.i = phi ptr [ %incdec.ptr2.i.i, %while.body.i.i ], [ %1, %while.body.i.i.preheader ] %2 = load i32, ptr %__first.addr.010.i.i, align 4 %3 = load i32, ptr %__last.addr.011.i.i, align 4 store i32 %3, ptr %__first.addr.010.i.i, align 4 diff --git a/bench/hermes/optimized/HandleRootOwner.ll b/bench/hermes/optimized/HandleRootOwner.ll index d7754627c62..5a52d759b03 100644 --- a/bench/hermes/optimized/HandleRootOwner.ll +++ b/bench/hermes/optimized/HandleRootOwner.ll @@ -31,17 +31,12 @@ for.body: ; preds = %entry, %_ZN6hermes2 %1 = load i32, ptr %curChunkIndex_.i, align 8 %idx.ext.i = zext i32 %1 to i64 %add.ptr.i = getelementptr inbounds nuw ptr, ptr %0, i64 %idx.ext.i - %add.ptr2.i = getelementptr inbounds nuw i8, ptr %add.ptr.i, i64 8 - %cmp.not10.i = icmp eq ptr %0, %add.ptr2.i - br i1 %cmp.not10.i, label %_ZN6hermes2vm7GCScope4markERNS0_12RootAcceptorE.exit, label %for.body.lr.ph.i - -for.body.lr.ph.i: ; preds = %for.body %curChunkEnd_.i = getelementptr inbounds nuw i8, ptr %gcScope.06, i64 200 %next_.i = getelementptr inbounds nuw i8, ptr %gcScope.06, i64 192 br label %for.body.i -for.body.i: ; preds = %for.inc8.i, %for.body.lr.ph.i - %it.011.i = phi ptr [ %0, %for.body.lr.ph.i ], [ %incdec.ptr9.i, %for.inc8.i ] +for.body.i: ; preds = %for.inc8.i, %for.body + %it.011.i = phi ptr [ %0, %for.body ], [ %incdec.ptr9.i, %for.inc8.i ] %2 = load ptr, ptr %it.011.i, align 8 %add.ptr3.i = getelementptr inbounds nuw i8, ptr %2, i64 128 %3 = load ptr, ptr %curChunkEnd_.i, align 8 @@ -66,7 +61,7 @@ for.inc8.i: ; preds = %for.body7.i, %for.b %cmp.not.i = icmp eq ptr %it.011.i, %add.ptr.i br i1 %cmp.not.i, label %_ZN6hermes2vm7GCScope4markERNS0_12RootAcceptorE.exit, label %for.body.i, !llvm.loop !6 -_ZN6hermes2vm7GCScope4markERNS0_12RootAcceptorE.exit: ; preds = %for.inc8.i, %for.body +_ZN6hermes2vm7GCScope4markERNS0_12RootAcceptorE.exit: ; preds = %for.inc8.i %gcScope.0.in = getelementptr inbounds nuw i8, ptr %gcScope.06, i64 8 %gcScope.0 = load ptr, ptr %gcScope.0.in, align 8 %tobool.not = icmp eq ptr %gcScope.0, null @@ -85,11 +80,6 @@ entry: %1 = load i32, ptr %curChunkIndex_, align 8 %idx.ext = zext i32 %1 to i64 %add.ptr = getelementptr inbounds nuw ptr, ptr %0, i64 %idx.ext - %add.ptr2 = getelementptr inbounds nuw i8, ptr %add.ptr, i64 8 - %cmp.not10 = icmp eq ptr %0, %add.ptr2 - br i1 %cmp.not10, label %for.end10, label %for.body.lr.ph - -for.body.lr.ph: ; preds = %entry %curChunkEnd_ = getelementptr inbounds nuw i8, ptr %this, i64 200 %next_ = getelementptr inbounds nuw i8, ptr %this, i64 192 br label %for.body @@ -120,7 +110,7 @@ for.inc8: ; preds = %for.body7, %for.bod %cmp.not = icmp eq ptr %it.011, %add.ptr br i1 %cmp.not, label %for.end10, label %for.body, !llvm.loop !6 -for.end10: ; preds = %for.inc8, %entry +for.end10: ; preds = %for.inc8 ret void } diff --git a/bench/hermes/optimized/dtoa.ll b/bench/hermes/optimized/dtoa.ll index af52555ee29..539e8642d2a 100644 --- a/bench/hermes/optimized/dtoa.ll +++ b/bench/hermes/optimized/dtoa.ll @@ -7999,15 +7999,14 @@ declare i32 @llvm.get.rounding() #10 declare ptr @__errno_location() local_unnamed_addr #11 ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable -define internal fastcc double @b2d(ptr noundef readonly captures(address) %a, ptr noundef nonnull writeonly captures(none) initializes((0, 4)) %e) unnamed_addr #12 { +define internal fastcc double @b2d(ptr noundef readonly captures(none) %a, ptr noundef nonnull writeonly captures(none) initializes((0, 4)) %e) unnamed_addr #12 { entry: - %x.ptr = getelementptr inbounds nuw i8, ptr %a, i64 24 %wds = getelementptr inbounds nuw i8, ptr %a, i64 20 %0 = load i32, ptr %wds, align 4 %idx.ext = sext i32 %0 to i64 %add.ptr.idx = shl nsw i64 %idx.ext, 2 - %1 = getelementptr i8, ptr %a, i64 %add.ptr.idx - %incdec.ptr.ptr = getelementptr i8, ptr %1, i64 20 + %add.ptr.add = add nsw i64 %add.ptr.idx, 20 + %incdec.ptr.ptr = getelementptr inbounds i8, ptr %a, i64 %add.ptr.add %2 = load i32, ptr %incdec.ptr.ptr, align 4 %tobool.not.i = icmp ult i32 %2, 65536 %shl.i = shl nuw i32 %2, 16 @@ -8041,11 +8040,11 @@ entry: if.then: ; preds = %entry %sub1 = sub nuw nsw i32 11, %retval.0.i %shr = lshr i32 %2, %sub1 - %cmp2 = icmp ugt ptr %incdec.ptr.ptr, %x.ptr + %cmp2 = icmp sgt i32 %0, 1 br i1 %cmp2, label %cond.true, label %cond.end cond.true: ; preds = %if.then - %incdec.ptr3 = getelementptr i8, ptr %1, i64 16 + %incdec.ptr3 = getelementptr inbounds i8, ptr %incdec.ptr.ptr, i64 -4 %3 = load i32, ptr %incdec.ptr3, align 4 br label %cond.end @@ -8062,13 +8061,15 @@ if.end: ; preds = %entry br i1 %cmp8, label %cond.true9, label %cond.end12 cond.true9: ; preds = %if.end - %incdec.ptr10 = getelementptr i8, ptr %1, i64 16 - %4 = load i32, ptr %incdec.ptr10, align 4 + %add.ptr.add45 = add nuw nsw i64 %add.ptr.idx, 16 + %incdec.ptr10.ptr = getelementptr inbounds nuw i8, ptr %a, i64 %add.ptr.add45 + %3 = load i32, ptr %incdec.ptr10.ptr, align 4 br label %cond.end12 cond.end12: ; preds = %if.end, %cond.true9 - %xa.0 = phi ptr [ %incdec.ptr10, %cond.true9 ], [ %incdec.ptr.ptr, %if.end ] - %cond13 = phi i32 [ %4, %cond.true9 ], [ 0, %if.end ] + %xa.0 = phi i64 [ %add.ptr.add45, %cond.true9 ], [ %add.ptr.add, %if.end ] + %cond13 = phi i32 [ %3, %cond.true9 ], [ 0, %if.end ] + %xa.0.ptr = getelementptr inbounds i8, ptr %a, i64 %xa.0.idx %sub14 = add nsw i32 %retval.0.i, -11 %tobool.not = icmp eq i32 %sub14, 0 br i1 %tobool.not, label %ret_d, label %if.then15 @@ -8078,11 +8079,11 @@ if.then15: ; preds = %cond.end12 %sub18 = sub nuw nsw i32 43, %retval.0.i %shr19 = lshr i32 %cond13, %sub18 %or17 = or i32 %shl16, %shr19 - %cmp22 = icmp ugt ptr %xa.0, %x.ptr + %cmp22 = icmp sgt i64 %xa.0, 24 br i1 %cmp22, label %cond.true23, label %cond.end26 cond.true23: ; preds = %if.then15 - %incdec.ptr24 = getelementptr inbounds i8, ptr %xa.0, i64 -4 + %incdec.ptr24 = getelementptr inbounds i8, ptr %xa.0.ptr, i64 -4 %5 = load i32, ptr %incdec.ptr24, align 4 br label %cond.end26 diff --git a/bench/hyperscan/optimized/mpv.ll b/bench/hyperscan/optimized/mpv.ll index 5216aa9d90f..e5cdf8fecf1 100644 --- a/bench/hyperscan/optimized/mpv.ll +++ b/bench/hyperscan/optimized/mpv.ll @@ -10285,8 +10285,7 @@ mmbit_get_flat_block.exit.i359: ; preds = %2314, %2306, %2303, %2322 = zext nneg i32 %2298 to i64 %2323 = getelementptr inbounds nuw i8, ptr %2291, i64 %2322 %2324 = getelementptr inbounds i8, ptr %2323, i64 -8 - %.not14.i3551145 = icmp ult ptr %2291, %2324 - br i1 %.not14.i3551145, label %.lr.ph1148, label %mmbit_any_precise.exit + br label %.lr.ph1148 2325: ; preds = %.lr.ph1148 %2326 = getelementptr inbounds nuw i8, ptr %.013.i1146, i64 8 @@ -10294,7 +10293,7 @@ mmbit_get_flat_block.exit.i359: ; preds = %2314, %2306, %2303, br i1 %.not14.i355, label %.lr.ph1148, label %mmbit_any_precise.exit .lr.ph1148: ; preds = %2321, %2325 - %.013.i1146 = phi ptr [ %2326, %2325 ], [ %2291, %2321 ] + %.013.i1146 = phi ptr [ %2326, %2324 ], [ %2291, %.lr.ph1148.preheader ] %2327 = load i64, ptr %.013.i1146, align 1 %.not.i357 = icmp eq i64 %2327, 0 br i1 %.not.i357, label %2325, label %mmbit_any_precise.exit.thread726 @@ -10309,9 +10308,9 @@ mmbit_get_flat_block.exit.i359: ; preds = %2314, %2306, %2303, br label %.backedge .backedge: ; preds = %.backedge.backedge, %2328 - %.127.i114 = phi i32 [ 0, %2328 ], [ %.127.i114.be, %.backedge.backedge ] - %.124.i115 = phi i32 [ 0, %2328 ], [ %.124.i115.be, %.backedge.backedge ] - %.1.i116 = phi i32 [ 0, %2328 ], [ %.1.i116.be, %.backedge.backedge ] + %.127.i114 = phi i32 [ 0, %2327 ], [ %.127.i114.be, %.backedge.backedge ] + %.124.i115 = phi i32 [ 0, %2327 ], [ %.124.i115.be, %.backedge.backedge ] + %.1.i116 = phi i32 [ 0, %2327 ], [ %.1.i116.be, %.backedge.backedge ] %2335 = icmp ult i32 %.124.i115, 64 br i1 %2335, label %2336, label %.thread714 @@ -10353,16 +10352,16 @@ mmbit_get_flat_block.exit.i359: ; preds = %2314, %2306, %2303, br label %.backedge.backedge .backedge.backedge: ; preds = %2357, %2349 - %.127.i114.be = phi i32 [ %2360, %2357 ], [ %2353, %2349 ] - %.124.i115.be = phi i32 [ %narrow33.i119, %2357 ], [ 0, %2349 ] - %.1.i116.be = phi i32 [ %2358, %2357 ], [ %2354, %2349 ] + %.127.i114.be = phi i32 [ %2360, %2356 ], [ %2353, %2348 ] + %.124.i115.be = phi i32 [ %narrow33.i119, %2356 ], [ 0, %2348 ] + %.1.i116.be = phi i32 [ %2358, %2356 ], [ %2354, %2348 ] br label %.backedge mmbit_iterate_big.exit128: ; preds = %2349 %.not1648 = icmp eq i32 %2353, -1 br i1 %.not1648, label %mmbit_any_precise.exit.thread, label %mmbit_any_precise.exit.thread726 -mmbit_any_precise.exit: ; preds = %2325, %2321 +mmbit_any_precise.exit: ; preds = %2325 %2361 = load i64, ptr %2324, align 1 %.not1646 = icmp eq i64 %2361, 0 br i1 %.not1646, label %mmbit_any_precise.exit.thread, label %mmbit_any_precise.exit.thread726 @@ -10383,7 +10382,7 @@ mmbit_any_precise.exit.thread: ; preds = %.thread714, %mmbit_ br label %2371 2371: ; preds = %2366, %mmbit_any_precise.exit.thread - %.034 = phi i64 [ %2370, %2366 ], [ %2362, %mmbit_any_precise.exit.thread ] + %.034 = phi i64 [ %2370, %2365 ], [ %2362, %mmbit_any_precise.exit.thread ] %2372 = load i32, ptr %2288, align 8 %.not40 = icmp eq i32 %2372, 0 br i1 %.not40, label %2378, label %2373 @@ -10396,12 +10395,12 @@ mmbit_any_precise.exit.thread: ; preds = %.thread714, %mmbit_ br label %2378 2378: ; preds = %2371, %2373 - %.033 = phi i64 [ %2377, %2373 ], [ %2362, %2371 ] + %.033 = phi i64 [ %2377, %2372 ], [ %2362, %2370 ] %2379 = tail call i64 @llvm.smin.i64(i64 %.033, i64 %.034) br label %mmbit_any_precise.exit.thread726 mmbit_any_precise.exit.thread726: ; preds = %.thread666, %.lr.ph1148, %mmbit_get_flat_block.exit145, %._crit_edge1123, %mmbit_get_flat_block.exit141, %1825, %mmbit_iterate.exit48, %mmbit_get_flat_block.exit.i359, %mmbit_iterate_big.exit128, %nfaExecMpv_Q_i.exit.thread, %nfaExecMpv_Q_i.exit, %mmbit_any_precise.exit, %2378, %3 - %.0 = phi i64 [ 1, %3 ], [ 0, %nfaExecMpv_Q_i.exit ], [ %2379, %2378 ], [ 1, %mmbit_any_precise.exit ], [ 0, %nfaExecMpv_Q_i.exit.thread ], [ 1, %mmbit_iterate_big.exit128 ], [ 1, %mmbit_get_flat_block.exit.i359 ], [ 0, %mmbit_iterate.exit48 ], [ 0, %1825 ], [ 0, %mmbit_get_flat_block.exit141 ], [ 0, %._crit_edge1123 ], [ 0, %mmbit_get_flat_block.exit145 ], [ 1, %.lr.ph1148 ], [ 0, %.thread666 ] + %.0 = phi i64 [ 1, %3 ], [ 0, %nfaExecMpv_Q_i.exit ], [ %2379, %2377 ], [ 1, %mmbit_any_precise.exit ], [ 0, %nfaExecMpv_Q_i.exit.thread ], [ 1, %mmbit_iterate_big.exit128 ], [ 1, %mmbit_get_flat_block.exit.i359 ], [ 0, %mmbit_iterate.exit48 ], [ 0, %1825 ], [ 0, %mmbit_get_flat_block.exit141 ], [ 0, %._crit_edge1123 ], [ 0, %mmbit_get_flat_block.exit145 ], [ 1, %.lr.ph1148 ], [ 0, %.thread666 ] ret i64 %.0 } diff --git a/bench/hyperscan/optimized/ue2string.ll b/bench/hyperscan/optimized/ue2string.ll index 0e5cf88bde2..bc2d83dec0f 100644 --- a/bench/hyperscan/optimized/ue2string.ll +++ b/bench/hyperscan/optimized/ue2string.ll @@ -1717,26 +1717,27 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc.exit: ; preds ; Function Attrs: mustprogress nofree norecurse nosync nounwind memory(readwrite, inaccessiblemem: none) uwtable define hidden void @_ZN3ue211ue2_literal7reverseEv(ptr noundef nonnull readonly align 8 captures(none) dereferenceable(64) %0) local_unnamed_addr #0 align 2 { - %2 = load ptr, ptr %0, align 8 - %3 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %4 = load i64, ptr %3, align 8 - %5 = getelementptr inbounds nuw i8, ptr %2, i64 %4 - %6 = icmp samesign ne i64 %4, 0 - %.sroa.0.08.i.i = getelementptr inbounds i8, ptr %5, i64 -1 - %7 = icmp ult ptr %2, %.sroa.0.08.i.i - %or.cond.i.i = select i1 %6, i1 %7, i1 false - br i1 %or.cond.i.i, label %.lr.ph.i.i, label %_ZSt7reverseIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEvT_SA_.exit - -.lr.ph.i.i: ; preds = %1, %.lr.ph.i.i - %.sroa.0.010.i.i = phi ptr [ %.sroa.0.0.i.i, %.lr.ph.i.i ], [ %.sroa.0.08.i.i, %1 ] - %.sroa.05.09.i.i = phi ptr [ %10, %.lr.ph.i.i ], [ %2, %1 ] + %2 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %3 = load i64, ptr %2, align 8 + %4 = icmp sgt i64 %3, 1 + br i1 %4, label %.lr.ph.i.i.preheader, label %_ZSt7reverseIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEvT_SA_.exit + +.lr.ph.i.i.preheader:; preds = %1 + %5 = load ptr, ptr %0, align 8 + %6 = getelementptr inbounds nuw i8, ptr %5, i64 %3 + %.sroa.0.08.i.i = getelementptr inbounds i8, ptr %6, i64 -1 + br label %.lr.ph.i.i + +.lr.ph.i.i:; preds = %.lr.ph.i.i.preheader, %.lr.ph.i.i + %.sroa.05.09.i.i = phi ptr [ %.sroa.0.0.i.i, %.lr.ph.i.i ], [ %.sroa.0.08.i.i, %.lr.ph.i.i.preheader ] + %.sroa.05.09.i.i = phi ptr [ %9, %.lr.ph.i.i ], [ %5, %.lr.ph.i.i.preheader ] + %9 = load i8, ptr %.sroa.05.09.i.i, align 1 %8 = load i8, ptr %.sroa.05.09.i.i, align 1 - %9 = load i8, ptr %.sroa.0.010.i.i, align 1 - store i8 %9, ptr %.sroa.05.09.i.i, align 1 - store i8 %8, ptr %.sroa.0.010.i.i, align 1 - %10 = getelementptr inbounds nuw i8, ptr %.sroa.05.09.i.i, i64 1 + store i8 %8, ptr %.sroa.05.09.i.i, align 1 + store i8 %7, ptr %.sroa.05.09.i.i, align 1 + %9 = getelementptr inbounds nuw i8, ptr %.sroa.05.09.i.i, i64 1 %.sroa.0.0.i.i = getelementptr inbounds i8, ptr %.sroa.0.010.i.i, i64 -1 - %11 = icmp ult ptr %10, %.sroa.0.0.i.i + %11 = icmp ult ptr %9, %.sroa.0.0.i.i br i1 %11, label %.lr.ph.i.i, label %_ZSt7reverseIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEvT_SA_.exit, !llvm.loop !24 _ZSt7reverseIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEvT_SA_.exit: ; preds = %.lr.ph.i.i, %1 @@ -1751,14 +1752,97 @@ _ZSt7reverseIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11cha ret void _ZN5boost14dynamic_bitsetImSaImEE3setEmb.exit: ; preds = %_ZSt7reverseIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEvT_SA_.exit, %_ZN5boost14dynamic_bitsetImSaImEE3setEmb.exit12 - %.014 = phi i64 [ %45, %_ZN5boost14dynamic_bitsetImSaImEE3setEmb.exit12 ], [ 0, %_ZSt7reverseIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEvT_SA_.exit ] + %.014 = phi i64 [ %44, %_ZN5boost14dynamic_bitsetImSaImEE3setEmb.exit12 ], [ 0, %_ZSt7reverseIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEvT_SA_.exit ] %16 = xor i64 %.014, -1 + %16 = add i64 %13, %15 + %17 = lshr i64 %.014, 6 + %18 = load ptr, ptr %11, align 8 + %19 = getelementptr inbounds nuw i64, ptr %18, i64 %17 + %20 = load i64, ptr %19, align 8 + %21 = and i64 %.014, 63 + %22 = shl nuw i64 1, %21 + %23 = and i64 %20, %22 + %.not = icmp eq i64 %23, 0 + %24 = lshr i64 %16, 6 + %25 = getelementptr inbounds nuw i64, ptr %18, i64 %24 + %26 = load i64, ptr %25, align 8 + %27 = and i64 %16, 63 + %28 = shl nuw i64 1, %27 + %29 = and i64 %26, %28 + %.not13 = icmp eq i64 %29, 0 + %30 = xor i64 %22, -1 + %31 = and i64 %20, %30 + %32 = or i64 %20, %22 + %storemerge = select i1 %.not13, i64 %31, i64 %32 + store i64 %storemerge, ptr %19, align 8 + br i1 %.not, label %38, label %33 + +33: ; preds = %_ZN5boost14dynamic_bitsetImSaImEE3setEmb.exit + %34 = load ptr, ptr %11, align 8 + %35 = getelementptr inbounds nuw i64, ptr %34, i64 %24 + %36 = load i64, ptr %35, align 8 + %37 = or i64 %36, %28 + store i64 %37, ptr %35, align 8 + br label %_ZN5boost14dynamic_bitsetImSaImEE3setEmb.exit12 + +38: ; preds = %_ZN5boost14dynamic_bitsetImSaImEE3setEmb.exit + %39 = xor i64 %28, -1 + %40 = load ptr, ptr %11, align 8 + %41 = getelementptr inbounds nuw i64, ptr %40, i64 %24 + %42 = load i64, ptr %41, align 8 + %43 = and i64 %42, %39 + store i64 %43, ptr %41, align 8 + br label %_ZN5boost14dynamic_bitsetImSaImEE3setEmb.exit12 + +_ZN5boost14dynamic_bitsetImSaImEE3setEmb.exit12: ; preds = %33, %38 + %44 = add nuw nsw i64 %.014, 1 + %exitcond.not = icmp eq i64 %44, %14 + br i1 %exitcond.not, label %._crit_edge, label %_ZN5boost14dynamic_bitsetImSaImEE3setEmb.exit, !llvm.loop !25 +} + +; Function Attrs: mustprogress uwtable +define hidden void @_ZN3ue215reverse_literalERKNS_11ue2_literalE(ptr dead_on_unwind noalias nonnull writable sret(%"struct.ue2::ue2_literal") align 8 %0, ptr noundef nonnull align 8 dereferenceable(64) %1) local_unnamed_addr #6 personality ptr @__gxx_personality_v0 { + tail call void @_ZN3ue211ue2_literalC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(64) %0, ptr noundef nonnull align 8 dereferenceable(64) %1) + %3 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %4 = load i64, ptr %3, align 8 + %5 = icmp sgt i64 %4, 1 + br i1 %5, label %.lr.ph.i.i.preheader.i, label %_ZSt7reverseIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEvT_SA_.exit.i + +.lr.ph.i.i.preheader.i: ; preds = %2 + %6 = load ptr, ptr %0, align 8 + %7 = getelementptr inbounds nuw i8, ptr %6, i64 %4 + %.sroa.0.08.i.i.i = getelementptr inbounds i8, ptr %7, i64 -1 + br label %.lr.ph.i.i.i + +.lr.ph.i.i.i: ; preds = %.lr.ph.i.i.i, %.lr.ph.i.i.preheader.i + %.sroa.0.010.i.i.i = phi ptr [ %.sroa.0.0.i.i.i, %.lr.ph.i.i.i ], [ %.sroa.0.08.i.i.i, %.lr.ph.i.i.preheader.i ] + %.sroa.05.09.i.i.i = phi ptr [ %10, %.lr.ph.i.i.i ], [ %6, %.lr.ph.i.i.preheader.i ] + %8 = load i8, ptr %.sroa.05.09.i.i.i, align 1 + %9 = load i8, ptr %.sroa.0.010.i.i.i, align 1 + store i8 %9, ptr %.sroa.05.09.i.i.i, align 1 + store i8 %8, ptr %.sroa.0.010.i.i.i, align 1 + %10 = getelementptr inbounds nuw i8, ptr %.sroa.05.09.i.i.i, i64 1 + %.sroa.0.0.i.i.i = getelementptr inbounds i8, ptr %.sroa.0.010.i.i.i, i64 -1 + %11 = icmp ult ptr %10, %.sroa.0.0.i.i.i + br i1 %11, label %.lr.ph.i.i.i, label %_ZSt7reverseIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEvT_SA_.exit.i, !llvm.loop !24 + +_ZSt7reverseIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEvT_SA_.exit.i: ; preds = %.lr.ph.i.i.i, %2 + %12 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %13 = getelementptr inbounds nuw i8, ptr %0, i64 56 + %14 = load i64, ptr %13, align 8 + %15 = lshr i64 %14, 1 + %.not15.i = icmp ult i64 %14, 2 + br i1 %.not15.i, label %_ZN3ue211ue2_literal7reverseEv.exit, label %_ZN5boost14dynamic_bitsetImSaImEE3setEmb.exit.i + +_ZN5boost14dynamic_bitsetImSaImEE3setEmb.exit.i: ; preds = %_ZSt7reverseIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEvT_SA_.exit.i, %_ZN5boost14dynamic_bitsetImSaImEE3setEmb.exit12.i + %.014.i = phi i64 [ %45, %_ZN5boost14dynamic_bitsetImSaImEE3setEmb.exit12.i ], [ 0, %_ZSt7reverseIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEvT_SA_.exit.i ] + %16 = xor i64 %.014.i, -1 %17 = add i64 %14, %16 - %18 = lshr i64 %.014, 6 + %18 = lshr i64 %.014.i, 6 %19 = load ptr, ptr %12, align 8 %20 = getelementptr inbounds nuw i64, ptr %19, i64 %18 %21 = load i64, ptr %20, align 8 - %22 = and i64 %.014, 63 + %22 = and i64 %.014.i, 63 %23 = shl nuw i64 1, %22 %24 = and i64 %21, %23 %.not = icmp eq i64 %24, 0 @@ -1776,106 +1860,24 @@ _ZN5boost14dynamic_bitsetImSaImEE3setEmb.exit: ; preds = %_ZSt7reverseIN9__gn store i64 %storemerge, ptr %20, align 8 br i1 %.not, label %39, label %34 -34: ; preds = %_ZN5boost14dynamic_bitsetImSaImEE3setEmb.exit +34: ; preds = %_ZN5boost14dynamic_bitsetImSaImEE3setEmb.exit.i %35 = load ptr, ptr %12, align 8 %36 = getelementptr inbounds nuw i64, ptr %35, i64 %25 %37 = load i64, ptr %36, align 8 %38 = or i64 %37, %29 store i64 %38, ptr %36, align 8 - br label %_ZN5boost14dynamic_bitsetImSaImEE3setEmb.exit12 + br label %_ZN5boost14dynamic_bitsetImSaImEE3setEmb.exit12.i -39: ; preds = %_ZN5boost14dynamic_bitsetImSaImEE3setEmb.exit +39: ; preds = %_ZN5boost14dynamic_bitsetImSaImEE3setEmb.exit.i %40 = xor i64 %29, -1 %41 = load ptr, ptr %12, align 8 %42 = getelementptr inbounds nuw i64, ptr %41, i64 %25 %43 = load i64, ptr %42, align 8 %44 = and i64 %43, %40 store i64 %44, ptr %42, align 8 - br label %_ZN5boost14dynamic_bitsetImSaImEE3setEmb.exit12 - -_ZN5boost14dynamic_bitsetImSaImEE3setEmb.exit12: ; preds = %34, %39 - %45 = add nuw nsw i64 %.014, 1 - %exitcond.not = icmp eq i64 %45, %15 - br i1 %exitcond.not, label %._crit_edge, label %_ZN5boost14dynamic_bitsetImSaImEE3setEmb.exit, !llvm.loop !25 -} - -; Function Attrs: mustprogress uwtable -define hidden void @_ZN3ue215reverse_literalERKNS_11ue2_literalE(ptr dead_on_unwind noalias nonnull writable sret(%"struct.ue2::ue2_literal") align 8 %0, ptr noundef nonnull align 8 dereferenceable(64) %1) local_unnamed_addr #6 personality ptr @__gxx_personality_v0 { - tail call void @_ZN3ue211ue2_literalC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(64) %0, ptr noundef nonnull align 8 dereferenceable(64) %1) - %3 = load ptr, ptr %0, align 8 - %4 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %5 = load i64, ptr %4, align 8 - %6 = getelementptr inbounds nuw i8, ptr %3, i64 %5 - %7 = icmp samesign ne i64 %5, 0 - %.sroa.0.08.i.i.i = getelementptr inbounds i8, ptr %6, i64 -1 - %8 = icmp ult ptr %3, %.sroa.0.08.i.i.i - %or.cond.i.i.i = select i1 %7, i1 %8, i1 false - br i1 %or.cond.i.i.i, label %.lr.ph.i.i.i, label %_ZSt7reverseIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEvT_SA_.exit.i - -.lr.ph.i.i.i: ; preds = %2, %.lr.ph.i.i.i - %.sroa.0.010.i.i.i = phi ptr [ %.sroa.0.0.i.i.i, %.lr.ph.i.i.i ], [ %.sroa.0.08.i.i.i, %2 ] - %.sroa.05.09.i.i.i = phi ptr [ %11, %.lr.ph.i.i.i ], [ %3, %2 ] - %9 = load i8, ptr %.sroa.05.09.i.i.i, align 1 - %10 = load i8, ptr %.sroa.0.010.i.i.i, align 1 - store i8 %10, ptr %.sroa.05.09.i.i.i, align 1 - store i8 %9, ptr %.sroa.0.010.i.i.i, align 1 - %11 = getelementptr inbounds nuw i8, ptr %.sroa.05.09.i.i.i, i64 1 - %.sroa.0.0.i.i.i = getelementptr inbounds i8, ptr %.sroa.0.010.i.i.i, i64 -1 - %12 = icmp ult ptr %11, %.sroa.0.0.i.i.i - br i1 %12, label %.lr.ph.i.i.i, label %_ZSt7reverseIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEvT_SA_.exit.i, !llvm.loop !24 - -_ZSt7reverseIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEvT_SA_.exit.i: ; preds = %.lr.ph.i.i.i, %2 - %13 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %14 = getelementptr inbounds nuw i8, ptr %0, i64 56 - %15 = load i64, ptr %14, align 8 - %16 = lshr i64 %15, 1 - %.not15.i = icmp ult i64 %15, 2 - br i1 %.not15.i, label %_ZN3ue211ue2_literal7reverseEv.exit, label %_ZN5boost14dynamic_bitsetImSaImEE3setEmb.exit.i - -_ZN5boost14dynamic_bitsetImSaImEE3setEmb.exit.i: ; preds = %_ZSt7reverseIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEvT_SA_.exit.i, %_ZN5boost14dynamic_bitsetImSaImEE3setEmb.exit12.i - %.014.i = phi i64 [ %46, %_ZN5boost14dynamic_bitsetImSaImEE3setEmb.exit12.i ], [ 0, %_ZSt7reverseIN9__gnu_cxx17__normal_iteratorIPcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEEvT_SA_.exit.i ] - %17 = xor i64 %.014.i, -1 - %18 = add i64 %15, %17 - %19 = lshr i64 %.014.i, 6 - %20 = load ptr, ptr %13, align 8 - %21 = getelementptr inbounds nuw i64, ptr %20, i64 %19 - %22 = load i64, ptr %21, align 8 - %23 = and i64 %.014.i, 63 - %24 = shl nuw i64 1, %23 - %25 = and i64 %22, %24 - %.not.i = icmp eq i64 %25, 0 - %26 = lshr i64 %18, 6 - %27 = getelementptr inbounds nuw i64, ptr %20, i64 %26 - %28 = load i64, ptr %27, align 8 - %29 = and i64 %18, 63 - %30 = shl nuw i64 1, %29 - %31 = and i64 %28, %30 - %.not13.i = icmp eq i64 %31, 0 - %32 = xor i64 %24, -1 - %33 = and i64 %22, %32 - %34 = or i64 %22, %24 - %storemerge.i = select i1 %.not13.i, i64 %33, i64 %34 - store i64 %storemerge.i, ptr %21, align 8 - br i1 %.not.i, label %40, label %35 - -35: ; preds = %_ZN5boost14dynamic_bitsetImSaImEE3setEmb.exit.i - %36 = load ptr, ptr %13, align 8 - %37 = getelementptr inbounds nuw i64, ptr %36, i64 %26 - %38 = load i64, ptr %37, align 8 - %39 = or i64 %38, %30 - store i64 %39, ptr %37, align 8 - br label %_ZN5boost14dynamic_bitsetImSaImEE3setEmb.exit12.i - -40: ; preds = %_ZN5boost14dynamic_bitsetImSaImEE3setEmb.exit.i - %41 = xor i64 %30, -1 - %42 = load ptr, ptr %13, align 8 - %43 = getelementptr inbounds nuw i64, ptr %42, i64 %26 - %44 = load i64, ptr %43, align 8 - %45 = and i64 %44, %41 - store i64 %45, ptr %43, align 8 br label %_ZN5boost14dynamic_bitsetImSaImEE3setEmb.exit12.i -_ZN5boost14dynamic_bitsetImSaImEE3setEmb.exit12.i: ; preds = %40, %35 +_ZN5boost14dynamic_bitsetImSaImEE3setEmb.exit12.i: ; preds = %39, %34 %46 = add nuw nsw i64 %.014.i, 1 %exitcond.not.i = icmp eq i64 %46, %16 br i1 %exitcond.not.i, label %_ZN3ue211ue2_literal7reverseEv.exit, label %_ZN5boost14dynamic_bitsetImSaImEE3setEmb.exit.i, !llvm.loop !25 diff --git a/bench/icu/optimized/collationiterator.ll b/bench/icu/optimized/collationiterator.ll index a122a5e556e..06750a4ea34 100644 --- a/bench/icu/optimized/collationiterator.ll +++ b/bench/icu/optimized/collationiterator.ll @@ -4468,17 +4468,20 @@ _ZNK6icu_7713CollationData7getCE32Ei.exit85: ; preds = %.thread92, %.thread to label %.loopexit99 unwind label %.loopexit.split-lp .loopexit99: ; preds = %181, %319 - %323 = load ptr, ptr %5, align 8, !tbaa !3 - %324 = load i32, ptr %6, align 8, !tbaa !94 - %325 = sext i32 %324 to i64 - %326 = getelementptr inbounds i8, ptr %323, i64 %325 - %.050107 = getelementptr inbounds i8, ptr %326, i64 -1 - %327 = icmp ult ptr %323, %.050107 - br i1 %327, label %.lr.ph, label %.thread88 - -.lr.ph: ; preds = %.loopexit99, %.lr.ph - %.050109 = phi ptr [ %.050, %.lr.ph ], [ %.050107, %.loopexit99 ] - %.051108 = phi ptr [ %330, %.lr.ph ], [ %323, %.loopexit99 ] + %323 = load i32, ptr %6, align 8, !tbaa !94 + %324 = icmp sgt i32 %323, 1 + br i1 %324, label %.lr.ph.preheader, label %.thread88 + +.lr.ph.preheader:; preds = %.loopexit99 + %325 = load ptr, ptr %5, align 8, !tbaa !3 + %326 = zext nneg i32 %323 to i64 + %327 = getelementptr inbounds nuw i8, ptr %325, i64 %326 + %.050107 = getelementptr inbounds i8, ptr %327, i64 -1 + br label %.lr.ph + +.lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph + %.050109 = phi ptr [ %.050, %.lr.ph ], [ %.050107, %.lr.ph.preheader ] + %.051108 = phi ptr [ %330, %.lr.ph ], [ %325, %.lr.ph.preheader ] %328 = load i8, ptr %.051108, align 1, !tbaa !43 %329 = load i8, ptr %.050109, align 1, !tbaa !43 %330 = getelementptr inbounds nuw i8, ptr %.051108, i64 1 diff --git a/bench/icu/optimized/ufmt_cmn.ll b/bench/icu/optimized/ufmt_cmn.ll index 8ca36cb34de..3d41848b549 100644 --- a/bench/icu/optimized/ufmt_cmn.ll +++ b/bench/icu/optimized/ufmt_cmn.ll @@ -130,15 +130,18 @@ define void @_Z13ufmt_64tou_77PDsPimhai(ptr noundef captures(address) %0, ptr no .critedge: ; preds = %23, %26, %.split46.us %.1 = phi i32 [ %.us-phi, %.split46.us ], [ %indvars, %26 ], [ %24, %23 ] - %29 = sext i32 %.1 to i64 - %30 = getelementptr inbounds i16, ptr %0, i64 %29 - %31 = getelementptr inbounds i8, ptr %30, i64 -2 - %32 = icmp ult ptr %0, %31 - br i1 %32, label %.lr.ph, label %._crit_edge - -.lr.ph: ; preds = %.critedge, %.lr.ph - %33 = phi ptr [ %37, %.lr.ph ], [ %31, %.critedge ] - %.03548 = phi ptr [ %36, %.lr.ph ], [ %0, %.critedge ] + %29 = icmp sgt i32 %.1, 1 + br i1 %29, label %.lr.ph.preheader, label %._crit_edge + +.lr.ph.preheader:; preds = %.critedge + %30 = zext nneg i32 %.1 to i64 + %31 = getelementptr inbounds nuw i16, ptr %0, i64 %30 + %32 = getelementptr inbounds i8, ptr %31, i64 -2 + br label %.lr.ph + +.lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph + %33 = phi ptr [ %37, %.lr.ph ], [ %32, %.lr.ph.preheader ] + %.03548 = phi ptr [ %36, %.lr.ph ], [ %0, %.lr.ph.preheader ] %34 = load i16, ptr %.03548, align 2, !tbaa !3 %35 = load i16, ptr %33, align 2, !tbaa !3 %36 = getelementptr inbounds nuw i8, ptr %.03548, i64 2 diff --git a/bench/icu/optimized/unistr.ll b/bench/icu/optimized/unistr.ll index 09a8672dfb9..c56f1a4a704 100644 --- a/bench/icu/optimized/unistr.ll +++ b/bench/icu/optimized/unistr.ll @@ -6449,39 +6449,38 @@ _ZNK6icu_7713UnicodeString10pinIndicesERiS1_.exit.thread: ; preds = %.sink.split %54 = getelementptr inbounds i16, ptr %53, i64 %24 %55 = getelementptr inbounds nuw i16, ptr %54, i64 %26 %56 = getelementptr inbounds i8, ptr %55, i64 -2 - %57 = icmp ult ptr %54, %56 - br i1 %57, label %.lr.ph, label %.loopexit - -.lr.ph: ; preds = %49, %70 - %.140 = phi ptr [ %.2, %70 ], [ %54, %49 ] - %58 = load i16, ptr %.140, align 2, !tbaa !10 - %59 = and i16 %58, -1024 - %60 = icmp eq i16 %59, -9216 - br i1 %60, label %61, label %68 - -61: ; preds = %.lr.ph - %62 = getelementptr inbounds nuw i8, ptr %.140, i64 2 - %63 = load i16, ptr %62, align 2, !tbaa !10 - %64 = and i16 %63, -1024 - %65 = icmp eq i16 %64, -10240 - br i1 %65, label %66, label %68 - -66: ; preds = %61 - store i16 %63, ptr %.140, align 2, !tbaa !10 - %67 = getelementptr inbounds nuw i8, ptr %.140, i64 4 - store i16 %58, ptr %62, align 2, !tbaa !10 - br label %70 - -68: ; preds = %61, %.lr.ph - %69 = getelementptr inbounds nuw i8, ptr %.140, i64 2 - br label %70 - -70: ; preds = %68, %66 - %.2 = phi ptr [ %67, %66 ], [ %69, %68 ] - %71 = icmp ult ptr %.2, %56 - br i1 %71, label %.lr.ph, label %.loopexit, !llvm.loop !34 + br label %.lr.ph -.loopexit: ; preds = %70, %49, %43, %_ZNK6icu_7713UnicodeString10pinIndicesERiS1_.exit, %3, %5 +.loopexit: ; preds = %49, %68 + %.140 = phi ptr [ %.2, %68 ], [ %53, %.lr.ph.preheader ] + %56 = load i16, ptr %.140, align 2, !tbaa !10 + %57 = and i16 %56, -1024 + %58 = icmp eq i16 %57, -9216 + br i1 %58, label %59, label %66 + +59: ; preds = %.lr.ph + %60 = getelementptr inbounds nuw i8, ptr %.140, i64 2 + %61 = load i16, ptr %60, align 2, !tbaa !10 + %62 = and i16 %61, -1024 + %63 = icmp eq i16 %62, -10240 + br i1 %63, label %64, label %66 + +64: ; preds = %59 + store i16 %61, ptr %.140, align 2, !tbaa !10 + %65 = getelementptr inbounds nuw i8, ptr %.140, i64 4 + store i16 %56, ptr %60, align 2, !tbaa !10 + br label %68 + +66: ; preds = %59, %.lr.ph + %67 = getelementptr inbounds nuw i8, ptr %.140, i64 2 + br label %68 + +68: ; preds = %66, %64 + %.2 = phi ptr [ %65, %64 ], [ %67, %66 ] + %69 = icmp ult ptr %.2, %55 + br i1 %69, label %.lr.ph, label %.loopexit, !llvm.loop !34 + +.loopexit: ; preds = %68, %43, %_ZNK6icu_7713UnicodeString10pinIndicesERiS1_.exit, %3, %5 ret ptr %0 } diff --git a/bench/jemalloc/optimized/extent_dss.ll b/bench/jemalloc/optimized/extent_dss.ll index ebd7e28391a..e914ae2767c 100644 --- a/bench/jemalloc/optimized/extent_dss.ll +++ b/bench/jemalloc/optimized/extent_dss.ll @@ -168,22 +168,16 @@ atomic_store_p.exit.i: ; preds = %37 br label %65 65: ; preds = %53, %42 - %66 = getelementptr inbounds nuw i8, ptr %51, i64 %3 - %67 = icmp ult ptr %51, %38 - %68 = icmp ult ptr %66, %38 - %or.cond = select i1 %67, i1 true, i1 %68 - br i1 %or.cond, label %.thread, label %69 + %66 = sub i64 %3, %40 + %67 = add i64 %66, %49 + %68 = tail call ptr @sbrk(i64 noundef %67) #6 + %69 = icmp eq ptr %68, %38 + br i1 %69, label %atomic_store_p.exit, label %99 69: ; preds = %65 - %70 = sub i64 %3, %40 - %71 = add i64 %70, %49 - %72 = tail call ptr @sbrk(i64 noundef %71) #6 - %73 = icmp eq ptr %72, %38 - br i1 %73, label %atomic_store_p.exit, label %102 - -atomic_store_p.exit: ; preds = %69 - %74 = ptrtoint ptr %66 to i64 - store atomic i64 %74, ptr @dss_max.0 release, align 8 + %70 = getelementptr inbounds nuw i8, ptr %51, i64 %3 + %71 = ptrtoint ptr %70 to i64 + store atomic i64 %71, ptr @dss_max.0 release, align 8 store atomic i8 0, ptr @dss_extending release, align 1 br i1 %.not, label %77, label %75 @@ -199,23 +193,23 @@ atomic_store_p.exit: ; preds = %69 78: ; preds = %77, %75 %79 = load i8, ptr %6, align 1, !tbaa !11, !range !13, !noundef !14 %80 = trunc nuw i8 %79 to i1 - br i1 %80, label %.thread111, label %81 + br i1 %80, label %.thread106, label %81 81: ; preds = %78 %82 = tail call zeroext i1 @je_pages_decommit(ptr noundef nonnull %51, i64 noundef %3) #6 %83 = zext i1 %82 to i8 store i8 %83, ptr %6, align 1, !tbaa !11 + %81 = load i8, ptr %5, align 1, !tbaa !11, !range !13, !noundef !14 + %82 = trunc nuw i8 %81 to i1 + %83 = select i1 %82, i1 %79, i1 false + br i1 %83, label %.thread107, label %.thread + +.thread106: ; preds = %75 %84 = load i8, ptr %5, align 1, !tbaa !11, !range !13, !noundef !14 %85 = trunc nuw i8 %84 to i1 - %86 = select i1 %85, i1 %82, i1 false - br i1 %86, label %.thread112, label %.thread93 - -.thread111: ; preds = %78 - %87 = load i8, ptr %5, align 1, !tbaa !11, !range !13, !noundef !14 - %88 = trunc nuw i8 %87 to i1 - br i1 %88, label %.thread112, label %.thread93 + br i1 %85, label %.thread112, label %.thread -.thread112: ; preds = %81, %.thread111 +.thread112: ; preds = %81, %.thread106 call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %9) #6 %89 = getelementptr inbounds nuw i8, ptr %9, i64 24 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(104) %89, i8 0, i64 104, i1 false) @@ -247,21 +241,21 @@ atomic_store_p.exit: ; preds = %69 call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %9) #6 br label %.thread93 -102: ; preds = %69 - %103 = icmp eq ptr %72, inttoptr (i64 -1 to ptr) +102: ; preds = %65 + %103 = icmp eq ptr %68, inttoptr (i64 -1 to ptr) br i1 %103, label %atomic_store_b.exit, label %37 atomic_store_b.exit: ; preds = %102 store atomic i8 1, ptr @dss_exhausted.0 release, align 1 br label %.thread -.thread: ; preds = %atomic_store_p.exit.i, %37, %65, %atomic_store_b.exit, %atomic_load_b.exit +.thread: ; preds = %atomic_store_p.exit.i, %37, %atomic_store_b.exit, %atomic_load_b.exit store atomic i8 0, ptr @dss_extending release, align 1 tail call void @je_edata_cache_put(ptr noundef %0, ptr noundef nonnull %12, ptr noundef nonnull %13) #6 br label %.thread93 -.thread93: ; preds = %81, %.thread111, %101, %11, %7, %.thread - %.0 = phi ptr [ null, %.thread ], [ null, %7 ], [ null, %11 ], [ %51, %101 ], [ %51, %81 ], [ %51, %.thread111 ] +.thread93: ; preds = %81, %.thread106, %101, %11, %7, %.thread + %.0 = phi ptr [ null, %.thread93 ], [ null, %7 ], [ null, %11 ], [ %51, %98 ], [ %51, %78 ], [ %51, %.thread106 ] ret ptr %.0 } diff --git a/bench/jq/optimized/decNumber.ll b/bench/jq/optimized/decNumber.ll index 7c63dff44e2..d6061beef23 100644 --- a/bench/jq/optimized/decNumber.ll +++ b/bench/jq/optimized/decNumber.ll @@ -10959,7 +10959,7 @@ define internal fastcc i32 @decShiftToMost(ptr noundef captures(address) %0, i32 br i1 %46, label %.preheader, label %50 .preheader: ; preds = %41 - %.not7483 = icmp ult ptr %29, %0 + %.not7483 = icmp eq i32 %26, 0 br i1 %.not7483, label %.loopexit76, label %.lr.ph86 .lr.ph86: ; preds = %.preheader, %.lr.ph86 @@ -10993,7 +10993,7 @@ define internal fastcc i32 @decShiftToMost(ptr noundef captures(address) %0, i32 %62 = zext nneg i32 %61 to i64 %63 = getelementptr inbounds nuw i16, ptr %0, i64 %62 %64 = getelementptr inbounds i8, ptr %63, i64 -2 - %.not78 = icmp ult ptr %29, %0 + %.not78 = icmp eq i32 %26, 0 br i1 %.not78, label %.loopexit76, label %.lr.ph .lr.ph: ; preds = %60 @@ -14564,13 +14564,13 @@ decNumberCopy.exit: ; preds = %.lr.ph.i, %.decNumb ; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable define dso_local noundef ptr @decNumberGetBCD(ptr noundef readonly captures(none) %0, ptr noundef returned writeonly captures(address, ret: address, provenance) %1) local_unnamed_addr #0 { %3 = load i32, ptr %0, align 4, !tbaa !10 - %4 = sext i32 %3 to i64 - %5 = getelementptr inbounds i8, ptr %1, i64 %4 - %.01822 = getelementptr inbounds i8, ptr %5, i64 -1 - %.not23 = icmp ult ptr %.01822, %1 + %.not23 = icmp slt i32 %3, 1 br i1 %.not23, label %._crit_edge, label %.lr.ph.preheader .lr.ph.preheader: ; preds = %2 + %4 = zext nneg i32 %3 to i64 + %5 = getelementptr inbounds nuw i8, ptr %1, i64 %4 + %.01822 = getelementptr inbounds i8, ptr %5, i64 -1 %6 = getelementptr inbounds nuw i8, ptr %0, i64 10 %7 = load i16, ptr %6, align 2, !tbaa !11 %8 = zext i16 %7 to i32 @@ -15128,7 +15128,7 @@ define internal fastcc range(i32 -2147483648, 2) i32 @decUnitCompare(ptr noundef %57 = zext nneg i32 %55 to i64 %58 = getelementptr inbounds nuw i16, ptr %.060, i64 %57 %59 = getelementptr inbounds i8, ptr %58, i64 -2 - %60 = icmp ult ptr %.060, %59 + %60 = icmp samesign ugt i32 %55, 1 br i1 %60, label %.lr.ph, label %.critedge .lr.ph: ; preds = %.preheader, %63 diff --git a/bench/lean4/optimized/llnf.ll b/bench/lean4/optimized/llnf.ll index 7393d49f3b4..9d7fd3bbe53 100644 --- a/bench/lean4/optimized/llnf.ll +++ b/bench/lean4/optimized/llnf.ll @@ -13170,21 +13170,22 @@ _ZN4lean10object_refD2Ev.exit45: ; preds = %_ZNSt13unordered_se ._crit_edge: ; preds = %_ZN4lean10object_refD2Ev.exit45, %.preheader58 %204 = load ptr, ptr %5, align 8, !tbaa !102 %205 = load i64, ptr %20, align 8, !tbaa !104 - %206 = getelementptr inbounds nuw %"class.lean::expr", ptr %204, i64 %205 - %207 = icmp ne i64 %205, 0 - %.012.i.i = getelementptr inbounds i8, ptr %206, i64 -8 - %208 = icmp ult ptr %204, %.012.i.i - %or.cond.i.i = select i1 %207, i1 %208, i1 false - br i1 %or.cond.i.i, label %.lr.ph.i.i, label %_ZSt7reverseIPN4lean4exprEEvT_S3_.exit - -.lr.ph.i.i: ; preds = %._crit_edge, %.lr.ph.i.i - %.014.i.i = phi ptr [ %.0.i.i, %.lr.ph.i.i ], [ %.012.i.i, %._crit_edge ] - %.0913.i.i = phi ptr [ %211, %.lr.ph.i.i ], [ %204, %._crit_edge ] - %209 = load ptr, ptr %.0913.i.i, align 8, !tbaa !8 + %206 = icmp ugt i64 %205, 1 + br i1 %206, label %.lr.ph.i.i.preheader, label %_ZSt7reverseIPN4lean4exprEEvT_S3_.exit + +.lr.ph.i.i.preheader:; preds = %._crit_edge + %207 = getelementptr inbounds nuw %"class.lean::expr", ptr %204, i64 %205 + %.012.i.i = getelementptr inbounds i8, ptr %207, i64 -8 + br label %.lr.ph.i.i + +.lr.ph.i.i:; preds = %.lr.ph.i.i.preheader, %.lr.ph.i.i + %.0913.i.i = phi ptr [ %.0.i.i, %.lr.ph.i.i ], [ %.012.i.i, %.lr.ph.i.i.preheader ] + %.0913.i.i = phi ptr [ %210, %.lr.ph.i.i ], [ %204, %.lr.ph.i.i.preheader ] + %208 = load ptr, ptr %.0913.i.i, align 8, !tbaa !8 store ptr inttoptr (i64 1 to ptr), ptr %.0913.i.i, align 8, !tbaa !8 %210 = load ptr, ptr %.014.i.i, align 8, !tbaa !8 store ptr %210, ptr %.0913.i.i, align 8, !tbaa !8 - store ptr %209, ptr %.014.i.i, align 8, !tbaa !8 + store ptr %208, ptr %.014.i.i, align 8, !tbaa !8 %211 = getelementptr inbounds nuw i8, ptr %.0913.i.i, i64 8 %.0.i.i = getelementptr inbounds i8, ptr %.014.i.i, i64 -8 %212 = icmp ult ptr %211, %.0.i.i diff --git a/bench/libigl/optimized/sort.ll b/bench/libigl/optimized/sort.ll index 454ac3a54f7..a8857f99859 100644 --- a/bench/libigl/optimized/sort.ll +++ b/bench/libigl/optimized/sort.ll @@ -15587,23 +15587,24 @@ _ZSt4sortIPiN3igl19IndexVectorLessThanIKN5Eigen5BlockIKNS3_6MatrixIiLi1ELi6ELi1E 43: ; preds = %42 %44 = load i64, ptr %11, align 8, !tbaa !37 - %45 = getelementptr inbounds i32, ptr %.pre83, i64 %44 - %46 = icmp ne i64 %44, 0 - %.012.i.i = getelementptr inbounds i8, ptr %45, i64 -4 - %47 = icmp ult ptr %.pre83, %.012.i.i - %or.cond.i.i = select i1 %46, i1 %47, i1 false - br i1 %or.cond.i.i, label %.lr.ph.i.i, label %_ZSt7reverseIPiEvT_S1_.exit - -.lr.ph.i.i: ; preds = %43, %.lr.ph.i.i - %.014.i.i = phi ptr [ %.0.i.i, %.lr.ph.i.i ], [ %.012.i.i, %43 ] - %.0913.i.i = phi ptr [ %50, %.lr.ph.i.i ], [ %.pre83, %43 ] + %45 = icmp sgt i64 %44, 1 + br i1 %45, label %.lr.ph.i.i.preheader, label %_ZSt7reverseIPiEvT_S1_.exit + +.lr.ph.i.i.preheader:; preds = %43 + %46 = getelementptr inbounds nuw i32, ptr %.pre83, i64 %44 + %.012.i.i = getelementptr inbounds i8, ptr %46, i64 -4 + br label %.lr.ph.i.i + +.lr.ph.i.i:; preds = %.lr.ph.i.i.preheader, %.lr.ph.i.i + %.0913.i.i = phi ptr [ %.0.i.i, %.lr.ph.i.i ], [ %.012.i.i, %.lr.ph.i.i.preheader ] + %.0913.i.i = phi ptr [ %49, %.lr.ph.i.i ], [ %.pre83, %.lr.ph.i.i.preheader ] + %49 = load i32, ptr %.0913.i.i, align 4, !tbaa !23 %48 = load i32, ptr %.0913.i.i, align 4, !tbaa !23 - %49 = load i32, ptr %.014.i.i, align 4, !tbaa !23 - store i32 %49, ptr %.0913.i.i, align 4, !tbaa !23 - store i32 %48, ptr %.014.i.i, align 4, !tbaa !23 - %50 = getelementptr inbounds nuw i8, ptr %.0913.i.i, i64 4 + store i32 %48, ptr %.0913.i.i, align 4, !tbaa !23 + store i32 %47, ptr %.0913.i.i, align 4, !tbaa !23 + %49 = getelementptr inbounds nuw i8, ptr %.0913.i.i, i64 4 %.0.i.i = getelementptr inbounds i8, ptr %.014.i.i, i64 -4 - %51 = icmp ult ptr %50, %.0.i.i + %51 = icmp ult ptr %49, %.0.i.i br i1 %51, label %.lr.ph.i.i, label %_ZSt7reverseIPiEvT_S1_.exit.loopexit, !llvm.loop !522 _ZSt7reverseIPiEvT_S1_.exit.loopexit: ; preds = %.lr.ph.i.i diff --git a/bench/libquic/optimized/dtoa.ll b/bench/libquic/optimized/dtoa.ll index 897ffda3af7..d260ba97b19 100644 --- a/bench/libquic/optimized/dtoa.ll +++ b/bench/libquic/optimized/dtoa.ll @@ -5845,14 +5845,13 @@ declare noalias noundef ptr @malloc(i64 noundef) local_unnamed_addr #11 declare void @free(ptr allocptr noundef captures(none)) local_unnamed_addr #12 ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable -define internal fastcc noundef double @_ZN6dmg_fpL3b2dEPNS_6BigintEPi(ptr noundef readonly captures(address) %0, ptr noundef nonnull writeonly captures(none) initializes((0, 4)) %1) unnamed_addr #13 { - %.ptr = getelementptr inbounds nuw i8, ptr %0, i64 24 +define internal fastcc noundef double @_ZN6dmg_fpL3b2dEPNS_6BigintEPi(ptr noundef readonly captures(none) %0, ptr noundef nonnull writeonly captures(none) initializes((0, 4)) %1) unnamed_addr #13 { %3 = getelementptr inbounds nuw i8, ptr %0, i64 20 %4 = load i32, ptr %3, align 4, !tbaa !37 %5 = sext i32 %4 to i64 %.idx = shl nsw i64 %5, 2 - %6 = getelementptr i8, ptr %0, i64 %.idx - %.ptr57 = getelementptr i8, ptr %6, i64 20 + %.add55 = add nsw i64 %.idx, 20 + %.ptr57 = getelementptr inbounds i8, ptr %0, i64 %.add55 %7 = load i32, ptr %.ptr57, align 4, !tbaa !20 %.not.i = icmp ult i32 %7, 65536 %8 = shl nuw i32 %7, 16 @@ -5881,66 +5880,68 @@ define internal fastcc noundef double @_ZN6dmg_fpL3b2dEPNS_6BigintEPi(ptr nounde %16 = sub nuw nsw i32 32, %.020.i store i32 %16, ptr %1, align 4, !tbaa !20 %17 = icmp samesign ult i32 %.020.i, 11 - br i1 %17, label %18, label %31 + br i1 %17, label %18, label %30 18: ; preds = %2 %19 = sub nuw nsw i32 11, %.020.i %20 = lshr i32 %7, %19 - %21 = icmp ugt ptr %.ptr57, %.ptr + %21 = icmp sgt i32 %4, 1 br i1 %21, label %22, label %25 22: ; preds = %18 - %23 = getelementptr i8, ptr %6, i64 16 + %23 = getelementptr inbounds i8, ptr %.ptr58, i64 -4 %24 = load i32, ptr %23, align 4, !tbaa !20 br label %25 25: ; preds = %18, %22 - %26 = phi i32 [ %24, %22 ], [ 0, %18 ] + %26 = phi i32 [ %24, %21 ], [ 0, %17 ] %27 = add nuw nsw i32 %.020.i, 21 %28 = shl i32 %7, %27 %29 = lshr i32 %26, %19 %30 = or i32 %29, %28 br label %53 -31: ; preds = %2 - %32 = icmp sgt i32 %4, 1 - br i1 %32, label %33, label %36 - -33: ; preds = %31 - %34 = getelementptr i8, ptr %6, i64 16 - %35 = load i32, ptr %34, align 4, !tbaa !20 - br label %36 - -36: ; preds = %31, %33 - %.0 = phi ptr [ %34, %33 ], [ %.ptr57, %31 ] - %37 = phi i32 [ %35, %33 ], [ 0, %31 ] - %38 = add nsw i32 %.020.i, -11 - %.not = icmp eq i32 %38, 0 - br i1 %.not, label %53, label %39 - -39: ; preds = %36 - %40 = shl i32 %7, %38 - %41 = sub nuw nsw i32 43, %.020.i - %42 = lshr i32 %37, %41 - %43 = or i32 %40, %42 - %44 = icmp ugt ptr %.0, %.ptr - br i1 %44, label %45, label %48 - -45: ; preds = %39 - %46 = getelementptr inbounds i8, ptr %.0, i64 -4 - %47 = load i32, ptr %46, align 4, !tbaa !20 - br label %48 +33: ; preds = %2 + %31 = icmp sgt i32 %4, 1 + br i1 %31, label %32, label %34 + +32: ; preds = %30 + %.add56 = add nuw nsw i64 %.idx, 16 + %.ptr59 = getelementptr inbounds nuw i8, ptr %0, i64 %.add56 + %33 = load i32, ptr %.ptr59, align 4, !tbaa !20 + br label %34 + +34:; preds = %30, %32 + %.0.idx = phi i64 [ %.add56, %32 ], [ %.add55, %30 ] + %35 = phi i32 [ %33, %32 ], [ 0, %30 ] + %.0.ptr = getelementptr inbounds i8, ptr %0, i64 %.0.idx + %36 = add nsw i32 %.020.i, -11 + %.not = icmp eq i32 %36, 0 + br i1 %.not, label %51, label %37 + +37:; preds = %34 + %38 = shl i32 %6, %36 + %39 = sub nuw nsw i32 43, %.020.i + %40 = lshr i32 %35, %39 + %41 = or i32 %38, %40 + %42 = icmp sgt i64 %.0.idx, 24 + br i1 %42, label %43, label %46 + +43: ; preds = %37 + %44 = getelementptr inbounds i8, ptr %.0.ptr, i64 -4 + %45 = load i32, ptr %44, align 4, !tbaa !20 + br label %46 -48: ; preds = %39, %45 - %49 = phi i32 [ %47, %45 ], [ 0, %39 ] - %50 = shl i32 %37, %38 - %51 = lshr i32 %49, %41 +48: ; preds = %37, %43 + %49 = phi i32 [ %45, %43 ], [ 0, %37 ] + %50 = shl i32 %35, %36 + %51 = lshr i32 %49, %39 %52 = or i32 %51, %50 br label %53 -53: ; preds = %36, %48, %25 - %.sink = phi i32 [ %52, %48 ], [ %30, %25 ], [ %37, %36 ] - %.sroa.0.4.insert.shift11.sink.in.in.in = phi i32 [ %43, %48 ], [ %20, %25 ], [ %7, %36 ] +53: ; preds = %34, %48, %25 + %.sink = phi i32 [ %52, %46 ], [ %30, %24 ], [ %35, %34 ] + %.sroa.0.4.insert.shift11.sink.in.in.in = phi i32 [ %41, %46 ], [ %20, %24 ], [ %7, %34 ] %.sroa.0.4.insert.shift11.sink.in.in = or i32 %.sroa.0.4.insert.shift11.sink.in.in.in, 1072693248 %.sroa.0.4.insert.shift11.sink.in = zext i32 %.sroa.0.4.insert.shift11.sink.in.in to i64 %.sroa.0.4.insert.shift11.sink = shl nuw i64 %.sroa.0.4.insert.shift11.sink.in, 32 diff --git a/bench/libquic/optimized/fd.ll b/bench/libquic/optimized/fd.ll index 121f47a5072..47d31ff4ac3 100644 --- a/bench/libquic/optimized/fd.ll +++ b/bench/libquic/optimized/fd.ll @@ -173,21 +173,21 @@ fd_write.exit: ; preds = %2, %10, %bio_fd_sho ; Function Attrs: nounwind uwtable define internal noundef i32 @fd_gets(ptr noundef %0, ptr noundef %1, i32 noundef %2) #2 { %4 = sext i32 %2 to i64 - %5 = getelementptr i8, ptr %1, i64 %4 - %6 = getelementptr i8, ptr %5, i64 -1 + %5 = getelementptr inbounds i8, ptr %1, i64 %4 + %6 = getelementptr inbounds i8, ptr %5, i64 -1 %7 = icmp slt i32 %2, 1 br i1 %7, label %27, label %.preheader .preheader: ; preds = %3 - %8 = icmp ult ptr %1, %6 - br i1 %8, label %.lr.ph, label %.critedge + %8 = icmp eq i32 %2, 1 + br i1 %8, label %.critedge, label %.lr.ph .lr.ph: ; preds = %.preheader %9 = getelementptr inbounds nuw i8, ptr %0, i64 40 br label %10 10: ; preds = %.lr.ph, %21 - %.01316 = phi ptr [ %1, %.lr.ph ], [ %22, %21 ] + %.01316 = phi ptr [ %1, %.lr.ph ], [ %22, %20 ] %11 = load i32, ptr %9, align 8, !tbaa !10 %12 = tail call i64 @read(i32 noundef %11, ptr noundef %.01316, i64 noundef 1) #10 %13 = trunc i64 %12 to i32 @@ -217,16 +217,16 @@ fd_read.exit: ; preds = %10 19: ; preds = %fd_read.exit %20 = load i8, ptr %.01316, align 1, !tbaa !17 - %.not = icmp eq i8 %20, 10 + %.not = icmp eq i8 %110, 10 br i1 %.not, label %.critedge, label %21 21: ; preds = %19 %22 = getelementptr inbounds nuw i8, ptr %.01316, i64 1 - %exitcond.not = icmp eq ptr %22, %6 - br i1 %exitcond.not, label %.critedge, label %10, !llvm.loop !18 + %exitcond.not = icmp ult ptr %22, %6 + br i1 %exitcond.not, label %9, label %.critedge, !llvm.loop !18 .critedge: ; preds = %19, %21, %fd_read.exit, %.preheader, %bio_fd_should_retry.exit.i, %15 - %.01315 = phi ptr [ %.01316, %bio_fd_should_retry.exit.i ], [ %.01316, %15 ], [ %1, %.preheader ], [ %.01316, %19 ], [ %6, %21 ], [ %.01316, %fd_read.exit ] + %.01315 = phi ptr [ %.01316, %bio_fd_should_retry.exit.i ], [ %.01316, %14 ], [ %1, %.preheader ], [ %.01316, %18 ], [ %21, %20 ], [ %.01316, %fd_read.exit ] store i8 0, ptr %.01315, align 1, !tbaa !17 %23 = ptrtoint ptr %.01315 to i64 %24 = ptrtoint ptr %1 to i64 diff --git a/bench/libwebp/optimized/backward_references_cost_enc.ll b/bench/libwebp/optimized/backward_references_cost_enc.ll index 50939f2abe4..3a37b87e775 100644 --- a/bench/libwebp/optimized/backward_references_cost_enc.ll +++ b/bench/libwebp/optimized/backward_references_cost_enc.ll @@ -1151,13 +1151,16 @@ BackwardReferencesHashChainDistanceOnly.exit: ; preds = %15, %30, %518, %519 520: ; preds = %BackwardReferencesHashChainDistanceOnly.exit %521 = getelementptr inbounds i16, ptr %13, i64 %12 + %.not18.i = icmp slt i32 %11, 1 + br i1 %.not18.i, label %TraceBackwards.exit, label %.lr.ph.preheader.i20 + +.lr.ph.preheader.i20: ; preds = %520 %522 = getelementptr inbounds i8, ptr %521, i64 -2 - %.not18.i = icmp ult ptr %522, %13 - br i1 %.not18.i, label %TraceBackwards.exit, label %.lr.ph.i20 + br label %.lr.ph.i21 -.lr.ph.i20: ; preds = %520, %.lr.ph.i20 - %.020.i = phi ptr [ %524, %.lr.ph.i20 ], [ %521, %520 ] - %.01719.i = phi ptr [ %527, %.lr.ph.i20 ], [ %522, %520 ] +.lr.ph.i20: ; preds = %.lr.ph.i20, %.lr.ph.preheader.i20 + %.020.i = phi ptr [ %524, %.lr.ph.i21 ], [ %521, %.lr.ph.preheader.i20 ] + %.01719.i = phi ptr [ %527, %.lr.ph.i21 ], [ %522, %.lr.ph.preheader.i20 ] %523 = load i16, ptr %.01719.i, align 2, !tbaa !49 %524 = getelementptr inbounds i8, ptr %.020.i, i64 -2 store i16 %523, ptr %524, align 2, !tbaa !49 @@ -1168,7 +1171,7 @@ BackwardReferencesHashChainDistanceOnly.exit: ; preds = %15, %30, %518, %519 br i1 %.not.i21, label %TraceBackwards.exit, label %.lr.ph.i20, !llvm.loop !65 TraceBackwards.exit: ; preds = %.lr.ph.i20, %520 - %.0.lcssa.i = phi ptr [ %521, %520 ], [ %524, %.lr.ph.i20 ] + %.0.lcssa.i = phi ptr [ %521, %520 ], [ %524, %.lr.ph.i21 ] %528 = ptrtoint ptr %521 to i64 %529 = ptrtoint ptr %.0.lcssa.i to i64 %530 = sub i64 %528, %529 @@ -1254,8 +1257,8 @@ TraceBackwards.exit: ; preds = %.lr.ph.i20, %520 br i1 %exitcond89.not.i, label %._crit_edge.i32, label %.lr.ph76.split.us.i, !llvm.loop !66 .lr.ph76.split.i: ; preds = %.loopexit.i30, %.lr.ph76.split.preheader.i - %indvars.iv80.i = phi i64 [ 0, %.lr.ph76.split.preheader.i ], [ %indvars.iv.next81.i, %.loopexit.i30 ] - %.04273.i = phi i32 [ 0, %.lr.ph76.split.preheader.i ], [ %.1.i31, %.loopexit.i30 ] + %indvars.iv80.i = phi i64 [ 0, %.lr.ph76.split.preheader.i ], [ %indvars.iv.next81.i, %.loopexit.i31 ] + %.04273.i = phi i32 [ 0, %.lr.ph76.split.preheader.i ], [ %.1.i31, %.loopexit.i31 ] %555 = getelementptr inbounds nuw i16, ptr %.0.lcssa.i, i64 %indvars.iv80.i %556 = load i16, ptr %555, align 2, !tbaa !49 %557 = zext i16 %556 to i32 @@ -1284,7 +1287,7 @@ TraceBackwards.exit: ; preds = %.lr.ph.i20, %520 br label %562 562: ; preds = %562, %.lr.ph.i25 - %indvars.iv.i27 = phi i64 [ 0, %.lr.ph.i25 ], [ %indvars.iv.next.i28, %562 ] + %indvars.iv.i27 = phi i64 [ 0, %.lr.ph.i26 ], [ %indvars.iv.next.i28, %562 ] %gep.i = getelementptr inbounds nuw i32, ptr %invariant.gep.i, i64 %indvars.iv.i27 %563 = load i32, ptr %gep.i, align 4, !tbaa !20 %.val57.i = load i32, ptr %542, align 8, !tbaa !69 @@ -1340,12 +1343,12 @@ TraceBackwards.exit: ; preds = %.lr.ph.i20, %520 br i1 %16, label %BackwardReferencesHashChainFollowChosenPath.exit, label %583 583: ; preds = %._crit_edge.i32, %._crit_edge.thread.i - %.not5291.i = phi i1 [ %.not5290.i, %._crit_edge.thread.i ], [ %.not52.i, %._crit_edge.i32 ] + %.not5291.i = phi i1 [ %.not5290.i, %._crit_edge.thread.i ], [ %.not52.i, %._crit_edge.i33 ] call void @VP8LColorCacheClear(ptr noundef nonnull %8) #7 br label %BackwardReferencesHashChainFollowChosenPath.exit BackwardReferencesHashChainFollowChosenPath.exit: ; preds = %._crit_edge.i32.thread, %533, %._crit_edge.i32, %583 - %.04371.shrunk.i = phi i1 [ %.not5291.i, %583 ], [ %.not52.i, %._crit_edge.i32 ], [ false, %533 ], [ %.not52.i35, %._crit_edge.i32.thread ] + %.04371.shrunk.i = phi i1 [ %.not5291.i, %583 ], [ %.not52.i, %._crit_edge.i33 ], [ false, %533 ], [ %.not52.i35, %._crit_edge.i33.thread ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %8) #7 %spec.select = zext i1 %.04371.shrunk.i to i32 br label %584 diff --git a/bench/lief/optimized/rsa.ll b/bench/lief/optimized/rsa.ll index ac13ee752d3..bf3205ccce4 100644 --- a/bench/lief/optimized/rsa.ll +++ b/bench/lief/optimized/rsa.ll @@ -3295,28 +3295,29 @@ define hidden i32 @mbedtls_rsa_rsassa_pss_verify_ext(ptr noundef %0, i32 noundef %64 = and i8 %62, %63 store i8 %64, ptr %9, align 16, !tbaa !23 %65 = getelementptr inbounds i8, ptr %52, i64 -2 - %66 = icmp ult ptr %spec.select, %65 - br i1 %66, label %.lr.ph, label %.critedgethread-pre-split - -.lr.ph: ; preds = %57, %69 - %.16794 = phi ptr [ %70, %69 ], [ %spec.select, %57 ] - %67 = load i8, ptr %.16794, align 1, !tbaa !23 - %68 = icmp eq i8 %67, 0 - br i1 %68, label %69, label %.critedge - -69: ; preds = %.lr.ph - %70 = getelementptr inbounds nuw i8, ptr %.16794, i64 1 - %exitcond.not = icmp eq ptr %70, %65 - br i1 %exitcond.not, label %.critedgethread-pre-split, label %.lr.ph, !llvm.loop !34 - -.critedgethread-pre-split: ; preds = %69, %57 - %.167.lcssa = phi ptr [ %spec.select, %57 ], [ %65, %69 ] + %66 = sub nsw i64 %spec.select88, %31 + %67 = icmp sgt i64 %66, 2 + br i1 %67, label %.lr.ph, label %.critedgethread-pre-split + +.lr.ph:; preds = %57, %70 + %.16794 = phi ptr [ %71, %70 ], [ %spec.select, %57 ] + %68 = load i8, ptr %.16794, align 1, !tbaa !23 + %69 = icmp eq i8 %68, 0 + br i1 %69, label %70, label %.critedge + +70: ; preds = %.lr.ph + %71 = getelementptr inbounds nuw i8, ptr %.16794, i64 1 + %72 = icmp ult ptr %71, %65 + br i1 %72, label %.lr.ph, label %.critedgethread-pre-split, !llvm.loop !34 + +.critedgethread-pre-split:; preds = %70, %57 + %.167.lcssa = phi ptr [ %spec.select, %57 ], [ %71, %70 ] %.pr = load i8, ptr %.167.lcssa, align 1, !tbaa !23 br label %.critedge .critedge: ; preds = %.lr.ph, %.critedgethread-pre-split %.16793 = phi ptr [ %.167.lcssa, %.critedgethread-pre-split ], [ %.16794, %.lr.ph ] - %71 = phi i8 [ %.pr, %.critedgethread-pre-split ], [ %67, %.lr.ph ] + %71 = phi i8 [ %.pr, %.critedgethread-pre-split ], [ %68, %.lr.ph ] %72 = getelementptr inbounds nuw i8, ptr %.16793, i64 1 %.not81 = icmp eq i8 %71, 1 br i1 %.not81, label %73, label %.critedge87 @@ -3344,7 +3345,7 @@ define hidden i32 @mbedtls_rsa_rsassa_pss_verify_ext(ptr noundef %0, i32 noundef br label %.critedge87 .critedge87: ; preds = %23, %81, %78, %73, %.critedge, %49, %44, %33, %28, %18, %16, %12, %7 - %.0 = phi i32 [ -16512, %7 ], [ -16512, %12 ], [ %17, %16 ], [ -16640, %18 ], [ -16512, %28 ], [ -16512, %33 ], [ -16512, %44 ], [ %56, %49 ], [ -16640, %.critedge ], [ -16640, %73 ], [ %80, %78 ], [ %.90, %81 ], [ -16512, %23 ] + %.0 = phi i32 [ -16512, %7 ], [ -16512, %12 ], [ %17, %16 ], [ -16640, %18 ], [ -16512, %28 ], [ -16512, %33 ], [ -16512, %44 ], [ %56, %49 ], [ -16640, %.critedge ], [ -16640, %75 ], [ %82, %80 ], [ %.90, %83 ], [ -16512, %23 ] call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %9) #14 call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %8) #14 ret i32 %.0 diff --git a/bench/lightgbm/optimized/linear_tree_learner.ll b/bench/lightgbm/optimized/linear_tree_learner.ll index be12dcaa56f..3b5131a9bb7 100644 --- a/bench/lightgbm/optimized/linear_tree_learner.ll +++ b/bench/lightgbm/optimized/linear_tree_learner.ll @@ -5779,18 +5779,16 @@ define internal void @_ZNK8LightGBM17LinearTreeLearnerINS_17SerialTreeLearnerEE1 br label %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit.us _ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit.us: ; preds = %.lr.ph.i.i.i.i.us.preheader, %32 - %48 = getelementptr inbounds nuw %"class.std::vector.93", ptr %31, i64 %indvars.iv - %49 = load ptr, ptr %48, align 8, !tbaa !237 - %50 = getelementptr inbounds double, ptr %49, i64 %40 - %51 = getelementptr inbounds nuw i8, ptr %50, i64 8 - %.not6.i.i.i.i31.us = icmp eq ptr %49, %51 + %.not6.i.i.i.i31.us = icmp eq i64 %39, -4 br i1 %.not6.i.i.i.i31.us, label %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit35.us, label %.lr.ph.i.i.i.i32.us.preheader .lr.ph.i.i.i.i32.us.preheader: ; preds = %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit.us - %52 = shl i64 %39, 1 - %53 = and i64 %52, -8 - %54 = add i64 %53, 8 - call void @llvm.memset.p0.i64(ptr align 8 %49, i8 0, i64 %54, i1 false), !tbaa !178 + %48 = getelementptr inbounds nuw %"class.std::vector.93", ptr %31, i64 %indvars.iv + %49 = load ptr, ptr %48, align 8, !tbaa !237 + %50 = shl i64 %39, 1 + %51 = and i64 %50, -8 + %52 = add i64 %51, 8 + call void @llvm.memset.p0.i64(ptr align 8 %49, i8 0, i64 %52, i1 false), !tbaa !178 br label %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit35.us _ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit35.us: ; preds = %.lr.ph.i.i.i.i32.us.preheader, %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit.us @@ -5880,18 +5878,16 @@ define internal void @_ZNK8LightGBM17LinearTreeLearnerINS_17SerialTreeLearnerEE1 br label %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit _ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit: ; preds = %.lr.ph.i.i.i.i.preheader, %25 - %41 = getelementptr inbounds nuw %"class.std::vector.93", ptr %22, i64 %indvars.iv - %42 = load ptr, ptr %41, align 8, !tbaa !237 - %43 = getelementptr inbounds double, ptr %42, i64 %33 - %44 = getelementptr inbounds nuw i8, ptr %43, i64 8 - %.not6.i.i.i.i23 = icmp eq ptr %42, %44 + %.not6.i.i.i.i23 = icmp eq i64 %32, -4 br i1 %.not6.i.i.i.i23, label %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit27, label %.lr.ph.i.i.i.i24.preheader .lr.ph.i.i.i.i24.preheader: ; preds = %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit - %45 = shl i64 %32, 1 - %46 = and i64 %45, -8 - %47 = add i64 %46, 8 - call void @llvm.memset.p0.i64(ptr align 8 %42, i8 0, i64 %47, i1 false), !tbaa !178 + %41 = getelementptr inbounds nuw %"class.std::vector.93", ptr %22, i64 %indvars.iv + %42 = load ptr, ptr %41, align 8, !tbaa !237 + %43 = shl i64 %32, 1 + %44 = and i64 %43, -8 + %45 = add i64 %44, 8 + call void @llvm.memset.p0.i64(ptr align 8 %42, i8 0, i64 %45, i1 false), !tbaa !178 br label %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit27 _ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit27: ; preds = %.lr.ph.i.i.i.i24.preheader, %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit @@ -19182,18 +19178,16 @@ define internal void @_ZNK8LightGBM17LinearTreeLearnerINS_17SerialTreeLearnerEE1 br label %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit.us _ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit.us: ; preds = %.lr.ph.i.i.i.i.us.preheader, %32 - %48 = getelementptr inbounds nuw %"class.std::vector.93", ptr %31, i64 %indvars.iv - %49 = load ptr, ptr %48, align 8, !tbaa !237 - %50 = getelementptr inbounds double, ptr %49, i64 %40 - %51 = getelementptr inbounds nuw i8, ptr %50, i64 8 - %.not6.i.i.i.i31.us = icmp eq ptr %49, %51 + %.not6.i.i.i.i31.us = icmp eq i64 %39, -4 br i1 %.not6.i.i.i.i31.us, label %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit35.us, label %.lr.ph.i.i.i.i32.us.preheader .lr.ph.i.i.i.i32.us.preheader: ; preds = %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit.us - %52 = shl i64 %39, 1 - %53 = and i64 %52, -8 - %54 = add i64 %53, 8 - call void @llvm.memset.p0.i64(ptr align 8 %49, i8 0, i64 %54, i1 false), !tbaa !178 + %48 = getelementptr inbounds nuw %"class.std::vector.93", ptr %31, i64 %indvars.iv + %49 = load ptr, ptr %48, align 8, !tbaa !237 + %50 = shl i64 %39, 1 + %51 = and i64 %50, -8 + %52 = add i64 %51, 8 + call void @llvm.memset.p0.i64(ptr align 8 %49, i8 0, i64 %52, i1 false), !tbaa !178 br label %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit35.us _ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit35.us: ; preds = %.lr.ph.i.i.i.i32.us.preheader, %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit.us @@ -19283,18 +19277,16 @@ define internal void @_ZNK8LightGBM17LinearTreeLearnerINS_17SerialTreeLearnerEE1 br label %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit _ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit: ; preds = %.lr.ph.i.i.i.i.preheader, %25 - %41 = getelementptr inbounds nuw %"class.std::vector.93", ptr %22, i64 %indvars.iv - %42 = load ptr, ptr %41, align 8, !tbaa !237 - %43 = getelementptr inbounds double, ptr %42, i64 %33 - %44 = getelementptr inbounds nuw i8, ptr %43, i64 8 - %.not6.i.i.i.i23 = icmp eq ptr %42, %44 + %.not6.i.i.i.i23 = icmp eq i64 %32, -4 br i1 %.not6.i.i.i.i23, label %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit27, label %.lr.ph.i.i.i.i24.preheader .lr.ph.i.i.i.i24.preheader: ; preds = %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit - %45 = shl i64 %32, 1 - %46 = and i64 %45, -8 - %47 = add i64 %46, 8 - call void @llvm.memset.p0.i64(ptr align 8 %42, i8 0, i64 %47, i1 false), !tbaa !178 + %41 = getelementptr inbounds nuw %"class.std::vector.93", ptr %22, i64 %indvars.iv + %42 = load ptr, ptr %41, align 8, !tbaa !237 + %43 = shl i64 %32, 1 + %44 = and i64 %43, -8 + %45 = add i64 %44, 8 + call void @llvm.memset.p0.i64(ptr align 8 %42, i8 0, i64 %45, i1 false), !tbaa !178 br label %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit27 _ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit27: ; preds = %.lr.ph.i.i.i.i24.preheader, %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit @@ -25410,18 +25402,16 @@ define internal void @_ZNK8LightGBM17LinearTreeLearnerINS_14GPUTreeLearnerEE15Ca br label %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit.us _ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit.us: ; preds = %.lr.ph.i.i.i.i.us.preheader, %32 - %48 = getelementptr inbounds nuw %"class.std::vector.93", ptr %31, i64 %indvars.iv - %49 = load ptr, ptr %48, align 8, !tbaa !237 - %50 = getelementptr inbounds double, ptr %49, i64 %40 - %51 = getelementptr inbounds nuw i8, ptr %50, i64 8 - %.not6.i.i.i.i31.us = icmp eq ptr %49, %51 + %.not6.i.i.i.i31.us = icmp eq i64 %39, -4 br i1 %.not6.i.i.i.i31.us, label %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit35.us, label %.lr.ph.i.i.i.i32.us.preheader .lr.ph.i.i.i.i32.us.preheader: ; preds = %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit.us - %52 = shl i64 %39, 1 - %53 = and i64 %52, -8 - %54 = add i64 %53, 8 - call void @llvm.memset.p0.i64(ptr align 8 %49, i8 0, i64 %54, i1 false), !tbaa !178 + %48 = getelementptr inbounds nuw %"class.std::vector.93", ptr %31, i64 %indvars.iv + %49 = load ptr, ptr %48, align 8, !tbaa !237 + %50 = shl i64 %39, 1 + %51 = and i64 %50, -8 + %52 = add i64 %51, 8 + call void @llvm.memset.p0.i64(ptr align 8 %49, i8 0, i64 %52, i1 false), !tbaa !178 br label %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit35.us _ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit35.us: ; preds = %.lr.ph.i.i.i.i32.us.preheader, %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit.us @@ -25511,18 +25501,16 @@ define internal void @_ZNK8LightGBM17LinearTreeLearnerINS_14GPUTreeLearnerEE15Ca br label %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit _ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit: ; preds = %.lr.ph.i.i.i.i.preheader, %25 - %41 = getelementptr inbounds nuw %"class.std::vector.93", ptr %22, i64 %indvars.iv - %42 = load ptr, ptr %41, align 8, !tbaa !237 - %43 = getelementptr inbounds double, ptr %42, i64 %33 - %44 = getelementptr inbounds nuw i8, ptr %43, i64 8 - %.not6.i.i.i.i23 = icmp eq ptr %42, %44 + %.not6.i.i.i.i23 = icmp eq i64 %32, -4 br i1 %.not6.i.i.i.i23, label %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit27, label %.lr.ph.i.i.i.i24.preheader .lr.ph.i.i.i.i24.preheader: ; preds = %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit - %45 = shl i64 %32, 1 - %46 = and i64 %45, -8 - %47 = add i64 %46, 8 - call void @llvm.memset.p0.i64(ptr align 8 %42, i8 0, i64 %47, i1 false), !tbaa !178 + %41 = getelementptr inbounds nuw %"class.std::vector.93", ptr %22, i64 %indvars.iv + %42 = load ptr, ptr %41, align 8, !tbaa !237 + %43 = shl i64 %32, 1 + %44 = and i64 %43, -8 + %45 = add i64 %44, 8 + call void @llvm.memset.p0.i64(ptr align 8 %42, i8 0, i64 %45, i1 false), !tbaa !178 br label %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit27 _ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit27: ; preds = %.lr.ph.i.i.i.i24.preheader, %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit @@ -27108,18 +27096,16 @@ define internal void @_ZNK8LightGBM17LinearTreeLearnerINS_14GPUTreeLearnerEE15Ca br label %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit.us _ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit.us: ; preds = %.lr.ph.i.i.i.i.us.preheader, %32 - %48 = getelementptr inbounds nuw %"class.std::vector.93", ptr %31, i64 %indvars.iv - %49 = load ptr, ptr %48, align 8, !tbaa !237 - %50 = getelementptr inbounds double, ptr %49, i64 %40 - %51 = getelementptr inbounds nuw i8, ptr %50, i64 8 - %.not6.i.i.i.i31.us = icmp eq ptr %49, %51 + %.not6.i.i.i.i31.us = icmp eq i64 %39, -4 br i1 %.not6.i.i.i.i31.us, label %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit35.us, label %.lr.ph.i.i.i.i32.us.preheader .lr.ph.i.i.i.i32.us.preheader: ; preds = %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit.us - %52 = shl i64 %39, 1 - %53 = and i64 %52, -8 - %54 = add i64 %53, 8 - call void @llvm.memset.p0.i64(ptr align 8 %49, i8 0, i64 %54, i1 false), !tbaa !178 + %48 = getelementptr inbounds nuw %"class.std::vector.93", ptr %31, i64 %indvars.iv + %49 = load ptr, ptr %48, align 8, !tbaa !237 + %50 = shl i64 %39, 1 + %51 = and i64 %50, -8 + %52 = add i64 %51, 8 + call void @llvm.memset.p0.i64(ptr align 8 %49, i8 0, i64 %52, i1 false), !tbaa !178 br label %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit35.us _ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit35.us: ; preds = %.lr.ph.i.i.i.i32.us.preheader, %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit.us @@ -27209,18 +27195,16 @@ define internal void @_ZNK8LightGBM17LinearTreeLearnerINS_14GPUTreeLearnerEE15Ca br label %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit _ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit: ; preds = %.lr.ph.i.i.i.i.preheader, %25 - %41 = getelementptr inbounds nuw %"class.std::vector.93", ptr %22, i64 %indvars.iv - %42 = load ptr, ptr %41, align 8, !tbaa !237 - %43 = getelementptr inbounds double, ptr %42, i64 %33 - %44 = getelementptr inbounds nuw i8, ptr %43, i64 8 - %.not6.i.i.i.i23 = icmp eq ptr %42, %44 + %.not6.i.i.i.i23 = icmp eq i64 %32, -4 br i1 %.not6.i.i.i.i23, label %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit27, label %.lr.ph.i.i.i.i24.preheader .lr.ph.i.i.i.i24.preheader: ; preds = %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit - %45 = shl i64 %32, 1 - %46 = and i64 %45, -8 - %47 = add i64 %46, 8 - call void @llvm.memset.p0.i64(ptr align 8 %42, i8 0, i64 %47, i1 false), !tbaa !178 + %41 = getelementptr inbounds nuw %"class.std::vector.93", ptr %22, i64 %indvars.iv + %42 = load ptr, ptr %41, align 8, !tbaa !237 + %43 = shl i64 %32, 1 + %44 = and i64 %43, -8 + %45 = add i64 %44, 8 + call void @llvm.memset.p0.i64(ptr align 8 %42, i8 0, i64 %45, i1 false), !tbaa !178 br label %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit27 _ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit27: ; preds = %.lr.ph.i.i.i.i24.preheader, %_ZSt4fillIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEfEvT_S7_RKT0_.exit diff --git a/bench/llvm/optimized/AArch64FrameLowering.ll b/bench/llvm/optimized/AArch64FrameLowering.ll index fa3dccd1613..486dd499420 100644 --- a/bench/llvm/optimized/AArch64FrameLowering.ll +++ b/bench/llvm/optimized/AArch64FrameLowering.ll @@ -17591,20 +17591,21 @@ _ZN4llvm23SmallVectorTemplateBaseIN12_GLOBAL__N_111RegPairInfoELb1EE9push_backER br label %_ZN4llvm16MachineFrameInfo18setObjectAlignmentEiNS_5AlignE.exit173 _ZN4llvm16MachineFrameInfo18setObjectAlignmentEiNS_5AlignE.exit173: ; preds = %416, %398, %395 - %.val135 = load ptr, ptr %4, align 8, !tbaa !25 %417 = getelementptr inbounds nuw i8, ptr %4, i64 8 %.val137 = load i32, ptr %417, align 8, !tbaa !26 - %418 = zext i32 %.val137 to i64 - %419 = getelementptr inbounds nuw %"struct.(anonymous namespace)::RegPairInfo", ptr %.val135, i64 %418 - %420 = icmp ne i32 %.val137, 0 - %.012.i.i = getelementptr inbounds i8, ptr %419, i64 -32 - %421 = icmp ult ptr %.val135, %.012.i.i - %or.cond.i.i174 = select i1 %420, i1 %421, i1 false - br i1 %or.cond.i.i174, label %.lr.ph.i.i, label %_ZSt7reverseIPN12_GLOBAL__N_111RegPairInfoEEvT_S3_.exit - -.lr.ph.i.i: ; preds = %_ZN4llvm16MachineFrameInfo18setObjectAlignmentEiNS_5AlignE.exit173, %.lr.ph.i.i - %.014.i.i = phi ptr [ %.0.i.i, %.lr.ph.i.i ], [ %.012.i.i, %_ZN4llvm16MachineFrameInfo18setObjectAlignmentEiNS_5AlignE.exit173 ] - %.0913.i.i = phi ptr [ %422, %.lr.ph.i.i ], [ %.val135, %_ZN4llvm16MachineFrameInfo18setObjectAlignmentEiNS_5AlignE.exit173 ] + %418 = icmp ugt i32 %.val137, 1 + br i1 %418, label %.lr.ph.i.i.preheader, label %_ZSt7reverseIPN12_GLOBAL__N_111RegPairInfoEEvT_S3_.exit + +.lr.ph.i.i.preheader:; preds = %_ZN4llvm16MachineFrameInfo18setObjectAlignmentEiNS_5AlignE.exit173 + %.val135 = load ptr, ptr %4, align 8, !tbaa !25 + %419 = zext i32 %.val137 to i64 + %420 = getelementptr inbounds nuw %"struct.(anonymous namespace)::RegPairInfo", ptr %.val135, i64 %419 + %.012.i.i = getelementptr inbounds i8, ptr %420, i64 -32 + br label %.lr.ph.i.i + +.lr.ph.i.i:; preds = %.lr.ph.i.i.preheader, %.lr.ph.i.i + %.014.i.i = phi ptr [ %.0.i.i, %.lr.ph.i.i ], [ %.012.i.i, %.lr.ph.i.i.preheader ] + %.0913.i.i = phi ptr [ %421, %.lr.ph.i.i ], [ %.val135, %.lr.ph.i.i.preheader ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(32) %.0913.i.i, i64 32, i1 false), !tbaa.struct !1308 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.0913.i.i, ptr noundef nonnull align 8 dereferenceable(32) %.014.i.i, i64 32, i1 false), !tbaa.struct !1308 diff --git a/bench/llvm/optimized/AArch64PBQPRegAlloc.ll b/bench/llvm/optimized/AArch64PBQPRegAlloc.ll index 0cfd3732500..17fc7d7a29d 100644 --- a/bench/llvm/optimized/AArch64PBQPRegAlloc.ll +++ b/bench/llvm/optimized/AArch64PBQPRegAlloc.ll @@ -4154,7 +4154,9 @@ define linkonce_odr hidden void @_ZN4llvm4PBQP8RegAlloc14MatrixMetadataC2ERKNS0_ %.idx = shl nuw nsw i64 %39, 2 %.add = add nsw i64 %.idx, -4 %.ptr30 = getelementptr inbounds i8, ptr %16, i64 %.add - %or.cond.i.i = icmp ult i64 %.add, 8 + %or.cond.i.i = icmp eq i32 %11, 1 + %.not17.i.i = icmp eq i64 %.add, 4 + %or.cond.i.i = select i1 %40, i1 true, i1 %.not17.i.i br i1 %or.cond.i.i, label %_ZSt11max_elementIPjET_S1_S1_.exit, label %.lr.ph.preheader.i.i .lr.ph.preheader.i.i: ; preds = %38 diff --git a/bench/llvm/optimized/ConstantFold.ll b/bench/llvm/optimized/ConstantFold.ll index cec85043282..7abe780877b 100644 --- a/bench/llvm/optimized/ConstantFold.ll +++ b/bench/llvm/optimized/ConstantFold.ll @@ -6146,15 +6146,18 @@ define linkonce_odr hidden noundef zeroext i1 @_ZNK4llvm11GEPOperator17hasAllZer %2 = getelementptr inbounds nuw i8, ptr %0, i64 4 %3 = load i32, ptr %2, align 4 %4 = and i32 %3, 134217727 + %.not20 = icmp eq i32 %4, 1 + br i1 %.not20, label %._crit_edge, label %.lr.ph.preheader + +.lr.ph.preheader: ; preds = %1 %5 = zext nneg i32 %4 to i64 %6 = sub nsw i64 0, %5 %7 = getelementptr inbounds %"class.llvm::Use", ptr %0, i64 %6 %.01119 = getelementptr inbounds nuw i8, ptr %7, i64 32 - %.not20 = icmp eq ptr %.01119, %0 - br i1 %.not20, label %._crit_edge, label %.lr.ph + br label %.lr.ph -.lr.ph: ; preds = %1, %20 - %.01121 = phi ptr [ %.011, %20 ], [ %.01119, %1 ] +.lr.ph: ; preds = %.lr.ph.preheader, %20 + %.01121 = phi ptr [ %.011, %20 ], [ %.01119, %.lr.ph.preheader ] %8 = load ptr, ptr %.01121, align 8, !tbaa !12 %9 = load i8, ptr %8, align 8, !tbaa !3 %.not18 = icmp eq i8 %9, 17 diff --git a/bench/llvm/optimized/RegAllocPBQP.ll b/bench/llvm/optimized/RegAllocPBQP.ll index 0fe68d6ba40..3c97caf78ec 100644 --- a/bench/llvm/optimized/RegAllocPBQP.ll +++ b/bench/llvm/optimized/RegAllocPBQP.ll @@ -6360,7 +6360,7 @@ _ZSt4moveIPcS0_ET0_T_S2_S1_.exit: ; preds = %27, %30 47: ; preds = %44 %48 = getelementptr inbounds i8, ptr %46, i64 -1 %49 = load i8, ptr %48, align 1, !tbaa !124 - %.not.i.i.i.i.i68 = icmp eq ptr %48, %.058 + %.not.i.i.i.i.i68 = icmp eq i64 %.086, 1 br i1 %.not.i.i.i.i.i68, label %_ZSt13move_backwardIPcS0_ET0_T_S2_S1_.exit, label %50 50: ; preds = %47 @@ -11171,7 +11171,9 @@ define linkonce_odr hidden void @_ZN4llvm4PBQP8RegAlloc14MatrixMetadataC2ERKNS0_ %.idx = shl nuw nsw i64 %39, 2 %.add = add nsw i64 %.idx, -4 %.ptr30 = getelementptr inbounds i8, ptr %16, i64 %.add - %or.cond.i.i = icmp ult i64 %.add, 8 + %or.cond.i.i = icmp eq i32 %11, 1 + %.not17.i.i = icmp eq i64 %.add, 4 + %or.cond.i.i = select i1 %40, i1 true, i1 %.not17.i.i br i1 %or.cond.i.i, label %_ZSt11max_elementIPjET_S1_S1_.exit, label %.lr.ph.preheader.i.i .lr.ph.preheader.i.i: ; preds = %38 diff --git a/bench/llvm/optimized/ScalarEvolution.ll b/bench/llvm/optimized/ScalarEvolution.ll index 34d66e16ba5..ae8e8d0ce73 100644 --- a/bench/llvm/optimized/ScalarEvolution.ll +++ b/bench/llvm/optimized/ScalarEvolution.ll @@ -8936,7 +8936,7 @@ _ZN4llvm23SmallVectorTemplateBaseIPKNS_4SCEVELb1EE28reserveForParamAndGetAddress %136 = getelementptr inbounds i8, ptr %135, i64 -8 %137 = load ptr, ptr %136, align 8, !tbaa !98 store ptr %137, ptr %135, align 8, !tbaa !98 - %.not.i.i.i.i.i.i.i.i = icmp eq ptr %136, %134 + %.not.i.i.i.i.i.i.i.i = icmp eq i64 %.pre-phi16.i.i.i, 1 br i1 %.not.i.i.i.i.i.i.i.i, label %_ZSt13move_backwardIPPKN4llvm4SCEVES4_ET0_T_S6_S5_.exit.i.i.i, label %138 138: ; preds = %_ZN4llvm23SmallVectorTemplateBaseIPKNS_4SCEVELb1EE28reserveForParamAndGetAddressERS3_m.exit.i.i.i @@ -12125,7 +12125,7 @@ _ZN4llvm23SmallVectorTemplateBaseIPKNS_4SCEVELb1EE28reserveForParamAndGetAddress %127 = getelementptr inbounds i8, ptr %126, i64 -8 %128 = load ptr, ptr %127, align 8, !tbaa !98 store ptr %128, ptr %126, align 8, !tbaa !98 - %.not.i.i.i.i.i.i.i.i = icmp eq ptr %127, %125 + %.not.i.i.i.i.i.i.i.i = icmp eq i64 %.pre-phi16.i.i.i, 1 br i1 %.not.i.i.i.i.i.i.i.i, label %_ZSt13move_backwardIPPKN4llvm4SCEVES4_ET0_T_S6_S5_.exit.i.i.i, label %129 129: ; preds = %_ZN4llvm23SmallVectorTemplateBaseIPKNS_4SCEVELb1EE28reserveForParamAndGetAddressERS3_m.exit.i.i.i @@ -31409,7 +31409,7 @@ _ZN4llvm23SmallVectorTemplateBaseIPKNS_4SCEVELb1EE28reserveForParamAndGetAddress %281 = getelementptr inbounds i8, ptr %280, i64 -8 %282 = load ptr, ptr %281, align 8, !tbaa !98 store ptr %282, ptr %280, align 8, !tbaa !98 - %.not.i.i.i.i.i.i.i.i = icmp eq ptr %281, %279 + %.not.i.i.i.i.i.i.i.i = icmp eq i64 %.pre-phi16.i.i.i, 1 br i1 %.not.i.i.i.i.i.i.i.i, label %_ZSt13move_backwardIPPKN4llvm4SCEVES4_ET0_T_S6_S5_.exit.i.i.i, label %283 283: ; preds = %_ZN4llvm23SmallVectorTemplateBaseIPKNS_4SCEVELb1EE28reserveForParamAndGetAddressERS3_m.exit.i.i.i @@ -46636,12 +46636,15 @@ define dso_local noundef ptr @_ZN4llvm15ScalarEvolution16createNodeForGEPEPNS_11 %7 = getelementptr inbounds nuw i8, ptr %1, i64 4 %8 = load i32, ptr %7, align 4 %9 = and i32 %8, 134217727 + %.not11 = icmp eq i32 %9, 1 + br i1 %.not11, label %._crit_edge, label %.lr.ph.preheader + +.lr.ph.preheader: ; preds = %2 %10 = zext nneg i32 %9 to i64 %11 = sub nsw i64 0, %10 %12 = getelementptr inbounds %"class.llvm::Use", ptr %1, i64 %11 %.010 = getelementptr inbounds nuw i8, ptr %12, i64 32 - %.not11 = icmp eq ptr %.010, %1 - br i1 %.not11, label %._crit_edge, label %.lr.ph + br label %.lr.ph ._crit_edge: ; preds = %_ZN4llvm23SmallVectorTemplateBaseIPKNS_4SCEVELb1EE9push_backES3_.exit, %2 %13 = call noundef ptr @_ZN4llvm15ScalarEvolution10getGEPExprEPNS_11GEPOperatorERKNS_15SmallVectorImplIPKNS_4SCEVEEE(ptr noundef nonnull align 8 dereferenceable(1344) %0, ptr noundef nonnull %1, ptr noundef nonnull align 8 dereferenceable(16) %3) @@ -46657,8 +46660,8 @@ _ZN4llvm11SmallVectorIPKNS_4SCEVELj4EED2Ev.exit: ; preds = %._crit_edge, %16 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %3) #31 ret ptr %13 -.lr.ph: ; preds = %2, %_ZN4llvm23SmallVectorTemplateBaseIPKNS_4SCEVELb1EE9push_backES3_.exit - %.012 = phi ptr [ %.0, %_ZN4llvm23SmallVectorTemplateBaseIPKNS_4SCEVELb1EE9push_backES3_.exit ], [ %.010, %2 ] +.lr.ph: ; preds = %.lr.ph.preheader, %_ZN4llvm23SmallVectorTemplateBaseIPKNS_4SCEVELb1EE9push_backES3_.exit + %.012 = phi ptr [ %.0, %_ZN4llvm23SmallVectorTemplateBaseIPKNS_4SCEVELb1EE9push_backES3_.exit ], [ %.010, %.lr.ph.preheader ] %17 = load ptr, ptr %.012, align 8, !tbaa !456 %18 = call noundef ptr @_ZN4llvm15ScalarEvolution7getSCEVEPNS_5ValueE(ptr noundef nonnull align 8 dereferenceable(1344) %0, ptr noundef %17) %19 = load i32, ptr %5, align 8, !tbaa !26 @@ -141228,7 +141231,7 @@ _ZSt4moveIPPKN4llvm4SCEVES4_ET0_T_S6_S5_.exit: ; preds = %29, %32 49: ; preds = %46 %50 = getelementptr inbounds i8, ptr %48, i64 -8 %51 = load ptr, ptr %50, align 8, !tbaa !98 - %.not.i.i.i.i.i68 = icmp eq ptr %50, %.058 + %.not.i.i.i.i.i68 = icmp eq i64 %.086, 1 br i1 %.not.i.i.i.i.i68, label %_ZSt13move_backwardIPPKN4llvm4SCEVES4_ET0_T_S6_S5_.exit, label %52 52: ; preds = %49 diff --git a/bench/meshlab/optimized/arap.ll b/bench/meshlab/optimized/arap.ll index c683907e730..ccae7ce0c6f 100644 --- a/bench/meshlab/optimized/arap.ll +++ b/bench/meshlab/optimized/arap.ll @@ -11749,35 +11749,33 @@ _ZN5Eigen12SparseMatrixIdLi0EiE14initAssignmentIS1_EEvRKT_.exit: ; preds = %39, br i1 %49, label %50, label %86 50: ; preds = %_ZN5Eigen12SparseMatrixIdLi0EiE14initAssignmentIS1_EEvRKT_.exit - %51 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %52 = load ptr, ptr %51, align 8 - %53 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %54 = load i64, ptr %53, align 8 - %55 = getelementptr inbounds i32, ptr %52, i64 %54 - %56 = getelementptr inbounds nuw i8, ptr %55, i64 4 - %57 = icmp eq ptr %56, %52 - br i1 %57, label %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit, label %58 - -58: ; preds = %50 - %59 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %60 = load ptr, ptr %59, align 8 - %.idx = shl nsw i64 %54, 2 - %61 = add nsw i64 %.idx, 4 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %60, ptr align 4 %52, i64 %61, i1 false) + %51 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %52 = load i64, ptr %51, align 8 + %53 = icmp eq i64 %52, -1 + br i1 %53, label %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit, label %54 + +54: ; preds = %50 + %55 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %56 = load ptr, ptr %55, align 8 + %57 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %58 = load ptr, ptr %57, align 8 + %.idx = shl nsw i64 %52, 2 + %59 = add nsw i64 %.idx, 4 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %58, ptr align 4 %56, i64 %59, i1 false) br label %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit -_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit: ; preds = %50, %58 +_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit: ; preds = %50, %54 %62 = getelementptr inbounds nuw i8, ptr %1, i64 40 %63 = getelementptr inbounds nuw i8, ptr %0, i64 40 %64 = getelementptr inbounds nuw i8, ptr %1, i64 56 + %63 = load i64, ptr %62, align 8 + %64 = getelementptr inbounds nuw i8, ptr %0, i64 64 %65 = load i64, ptr %64, align 8 - %66 = getelementptr inbounds nuw i8, ptr %0, i64 64 - %67 = load i64, ptr %66, align 8 - %68 = icmp slt i64 %67, %65 - br i1 %68, label %69, label %_ZN5Eigen8internal17CompressedStorageIdiE6resizeEld.exit.i + %66 = icmp slt i64 %65, %63 + br i1 %66, label %67, label %_ZN5Eigen8internal17CompressedStorageIdiE6resizeEld.exit.i 69: ; preds = %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit - %70 = icmp sgt i64 %65, 2147483647 + %70 = icmp sgt i64 %63, 2147483647 br i1 %70, label %71, label %73 71: ; preds = %69 @@ -11787,22 +11785,22 @@ _ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit: ; preds = %50, %58 unreachable 73: ; preds = %69 - tail call void @_ZN5Eigen8internal17CompressedStorageIdiE10reallocateEl(ptr noundef nonnull align 8 dereferenceable(32) %63, i64 noundef %65) + tail call void @_ZN5Eigen8internal17CompressedStorageIdiE10reallocateEl(ptr noundef nonnull align 8 dereferenceable(32) %63, i64 noundef %63) br label %_ZN5Eigen8internal17CompressedStorageIdiE6resizeEld.exit.i _ZN5Eigen8internal17CompressedStorageIdiE6resizeEld.exit.i: ; preds = %73, %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit %74 = getelementptr inbounds nuw i8, ptr %0, i64 56 - store i64 %65, ptr %74, align 8 + store i64 %63, ptr %74, align 8 %75 = load i64, ptr %64, align 8 %76 = icmp slt i64 %75, 1 - %77 = icmp eq i64 %65, 0 + %77 = icmp eq i64 %63, 0 %or.cond.i = or i1 %77, %76 br i1 %or.cond.i, label %_ZN5Eigen8internal17CompressedStorageIdiEaSERKS2_.exit, label %_ZN5Eigen8internal10smart_copyIdEEvPKT_S4_PS2_.exit.i _ZN5Eigen8internal10smart_copyIdEEvPKT_S4_PS2_.exit.i: ; preds = %_ZN5Eigen8internal17CompressedStorageIdiE6resizeEld.exit.i %78 = load ptr, ptr %62, align 8 %79 = load ptr, ptr %63, align 8 - %.idx.i = shl nsw i64 %65, 3 + %.idx.i = shl nsw i64 %63, 3 tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %79, ptr align 8 %78, i64 %.idx.i, i1 false) %.pre.i = load i64, ptr %74, align 8 %80 = icmp eq i64 %.pre.i, 0 @@ -11810,11 +11808,11 @@ _ZN5Eigen8internal10smart_copyIdEEvPKT_S4_PS2_.exit.i: ; preds = %_ZN5Eigen8inte 81: ; preds = %_ZN5Eigen8internal10smart_copyIdEEvPKT_S4_PS2_.exit.i %82 = getelementptr inbounds nuw i8, ptr %1, i64 48 + %81 = load ptr, ptr %80, align 8 + %82 = getelementptr inbounds nuw i8, ptr %0, i64 48 %83 = load ptr, ptr %82, align 8 - %84 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %85 = load ptr, ptr %84, align 8 %.idx8.i = shl nsw i64 %.pre.i, 2 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %85, ptr align 4 %83, i64 %.idx8.i, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %83, ptr align 4 %81, i64 %.idx8.i, i1 false) br label %_ZN5Eigen8internal17CompressedStorageIdiEaSERKS2_.exit 86: ; preds = %_ZN5Eigen12SparseMatrixIdLi0EiE14initAssignmentIS1_EEvRKT_.exit diff --git a/bench/meshlab/optimized/cube_style_single_iteration.ll b/bench/meshlab/optimized/cube_style_single_iteration.ll index 9e2a078d5a4..e621d3f9243 100644 --- a/bench/meshlab/optimized/cube_style_single_iteration.ll +++ b/bench/meshlab/optimized/cube_style_single_iteration.ll @@ -17660,60 +17660,58 @@ _ZN5Eigen12SparseMatrixIdLi0EiE14initAssignmentIS1_EEvRKT_.exit: ; preds = %39, br i1 %49, label %50, label %86 50: ; preds = %_ZN5Eigen12SparseMatrixIdLi0EiE14initAssignmentIS1_EEvRKT_.exit - %51 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %52 = load ptr, ptr %51, align 8 - %53 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %54 = load i64, ptr %53, align 8 - %55 = getelementptr inbounds i32, ptr %52, i64 %54 - %56 = getelementptr inbounds nuw i8, ptr %55, i64 4 - %57 = icmp eq ptr %56, %52 - br i1 %57, label %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit, label %58 - -58: ; preds = %50 - %59 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %60 = load ptr, ptr %59, align 8 - %.idx = shl nsw i64 %54, 2 - %61 = add nsw i64 %.idx, 4 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %60, ptr align 4 %52, i64 %61, i1 false) + %51 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %52 = load i64, ptr %51, align 8 + %53 = icmp eq i64 %52, -1 + br i1 %53, label %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit, label %54 + +54: ; preds = %50 + %55 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %56 = load ptr, ptr %55, align 8 + %57 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %58 = load ptr, ptr %57, align 8 + %.idx = shl nsw i64 %52, 2 + %59 = add nsw i64 %.idx, 4 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %58, ptr align 4 %56, i64 %59, i1 false) br label %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit -_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit: ; preds = %50, %58 +_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit: ; preds = %50, %54 %62 = getelementptr inbounds nuw i8, ptr %1, i64 40 %63 = getelementptr inbounds nuw i8, ptr %0, i64 40 %64 = getelementptr inbounds nuw i8, ptr %1, i64 56 + %63 = load i64, ptr %62, align 8 + %64 = getelementptr inbounds nuw i8, ptr %0, i64 64 %65 = load i64, ptr %64, align 8 - %66 = getelementptr inbounds nuw i8, ptr %0, i64 64 - %67 = load i64, ptr %66, align 8 - %68 = icmp slt i64 %67, %65 - br i1 %68, label %69, label %_ZN5Eigen8internal17CompressedStorageIdiE6resizeEld.exit.i - -69: ; preds = %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit - %70 = icmp sgt i64 %65, 2147483647 - br i1 %70, label %71, label %73 - -71: ; preds = %69 - %72 = tail call ptr @__cxa_allocate_exception(i64 8) #16 - store ptr getelementptr inbounds nuw (i8, ptr @_ZTVSt9bad_alloc, i64 16), ptr %72, align 8 - tail call void @__cxa_throw(ptr nonnull %72, ptr nonnull @_ZTISt9bad_alloc, ptr nonnull @_ZNSt9bad_allocD1Ev) #27 + %66 = icmp slt i64 %65, %63 + br i1 %66, label %67, label %_ZN5Eigen8internal17CompressedStorageIdiE6resizeEld.exit.i + +67: ; preds = %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit + %68 = icmp sgt i64 %63, 2147483647 + br i1 %68, label %69, label %71 + +69:; preds = %67 + %70 = tail call ptr @__cxa_allocate_exception(i64 8) #16 + store ptr getelementptr inbounds nuw (i8, ptr @_ZTVSt9bad_alloc, i64 16), ptr %70, align 8 + tail call void @__cxa_throw(ptr nonnull %70, ptr nonnull @_ZTISt9bad_alloc, ptr nonnull @_ZNSt9bad_allocD1Ev) #16 unreachable -73: ; preds = %69 - tail call void @_ZN5Eigen8internal17CompressedStorageIdiE10reallocateEl(ptr noundef nonnull align 8 dereferenceable(32) %63, i64 noundef %65) +73: ; preds = %67 + tail call void @_ZN5Eigen8internal17CompressedStorageIdiE10reallocateEl(ptr noundef nonnull align 8 dereferenceable(32) %63, i64 noundef %63) br label %_ZN5Eigen8internal17CompressedStorageIdiE6resizeEld.exit.i _ZN5Eigen8internal17CompressedStorageIdiE6resizeEld.exit.i: ; preds = %73, %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit %74 = getelementptr inbounds nuw i8, ptr %0, i64 56 - store i64 %65, ptr %74, align 8 + store i64 %63, ptr %74, align 8 %75 = load i64, ptr %64, align 8 %76 = icmp slt i64 %75, 1 - %77 = icmp eq i64 %65, 0 + %77 = icmp eq i64 %63, 0 %or.cond.i = or i1 %77, %76 br i1 %or.cond.i, label %_ZN5Eigen8internal17CompressedStorageIdiEaSERKS2_.exit, label %_ZN5Eigen8internal10smart_copyIdEEvPKT_S4_PS2_.exit.i _ZN5Eigen8internal10smart_copyIdEEvPKT_S4_PS2_.exit.i: ; preds = %_ZN5Eigen8internal17CompressedStorageIdiE6resizeEld.exit.i %78 = load ptr, ptr %62, align 8 %79 = load ptr, ptr %63, align 8 - %.idx.i = shl nsw i64 %65, 3 + %.idx.i = shl nsw i64 %63, 3 tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %79, ptr align 8 %78, i64 %.idx.i, i1 false) %.pre.i = load i64, ptr %74, align 8 %80 = icmp eq i64 %.pre.i, 0 @@ -17721,11 +17719,11 @@ _ZN5Eigen8internal10smart_copyIdEEvPKT_S4_PS2_.exit.i: ; preds = %_ZN5Eigen8inte 81: ; preds = %_ZN5Eigen8internal10smart_copyIdEEvPKT_S4_PS2_.exit.i %82 = getelementptr inbounds nuw i8, ptr %1, i64 48 + %81 = load ptr, ptr %80, align 8 + %82 = getelementptr inbounds nuw i8, ptr %0, i64 48 %83 = load ptr, ptr %82, align 8 - %84 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %85 = load ptr, ptr %84, align 8 %.idx8.i = shl nsw i64 %.pre.i, 2 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %85, ptr align 4 %83, i64 %.idx8.i, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %83, ptr align 4 %81, i64 %.idx8.i, i1 false) br label %_ZN5Eigen8internal17CompressedStorageIdiEaSERKS2_.exit 86: ; preds = %_ZN5Eigen12SparseMatrixIdLi0EiE14initAssignmentIS1_EEvRKT_.exit diff --git a/bench/meshlab/optimized/filter_unsharp.ll b/bench/meshlab/optimized/filter_unsharp.ll index eb1a6b6af68..b844b5bae81 100644 --- a/bench/meshlab/optimized/filter_unsharp.ll +++ b/bench/meshlab/optimized/filter_unsharp.ll @@ -45075,35 +45075,33 @@ _ZN5Eigen12SparseMatrixIdLi0EiE14initAssignmentIS1_EEvRKT_.exit: ; preds = %39, br i1 %49, label %50, label %86 50: ; preds = %_ZN5Eigen12SparseMatrixIdLi0EiE14initAssignmentIS1_EEvRKT_.exit - %51 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %52 = load ptr, ptr %51, align 8 - %53 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %54 = load i64, ptr %53, align 8 - %55 = getelementptr inbounds i32, ptr %52, i64 %54 - %56 = getelementptr inbounds nuw i8, ptr %55, i64 4 - %57 = icmp eq ptr %56, %52 - br i1 %57, label %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit, label %58 + %51 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %52 = load i64, ptr %51, align 8 + %53 = icmp eq i64 %52, -1 + br i1 %53, label %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit, label %54 58: ; preds = %50 - %59 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %59 = getelementptr inbounds nuw i8, ptr %1, i64 24 %60 = load ptr, ptr %59, align 8 - %.idx = shl nsw i64 %54, 2 - %61 = add nsw i64 %.idx, 4 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %60, ptr align 4 %52, i64 %61, i1 false) + %57 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %58 = load ptr, ptr %57, align 8 + %.idx = shl nsw i64 %52, 2 + %59 = add nsw i64 %.idx, 4 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %58, ptr align 4 %56, i64 %59, i1 false) br label %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit _ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit: ; preds = %50, %58 %62 = getelementptr inbounds nuw i8, ptr %1, i64 40 %63 = getelementptr inbounds nuw i8, ptr %0, i64 40 %64 = getelementptr inbounds nuw i8, ptr %1, i64 56 + %63 = load i64, ptr %62, align 8 + %64 = getelementptr inbounds nuw i8, ptr %0, i64 64 %65 = load i64, ptr %64, align 8 - %66 = getelementptr inbounds nuw i8, ptr %0, i64 64 - %67 = load i64, ptr %66, align 8 - %68 = icmp slt i64 %67, %65 - br i1 %68, label %69, label %_ZN5Eigen8internal17CompressedStorageIdiE6resizeEld.exit.i + %66 = icmp slt i64 %65, %63 + br i1 %66, label %67, label %_ZN5Eigen8internal17CompressedStorageIdiE6resizeEld.exit.i 69: ; preds = %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit - %70 = icmp sgt i64 %65, 2147483647 + %70 = icmp sgt i64 %63, 2147483647 br i1 %70, label %71, label %73 71: ; preds = %69 @@ -45113,22 +45111,22 @@ _ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit: ; preds = %50, %58 unreachable 73: ; preds = %69 - tail call void @_ZN5Eigen8internal17CompressedStorageIdiE10reallocateEl(ptr noundef nonnull align 8 dereferenceable(32) %63, i64 noundef %65) + tail call void @_ZN5Eigen8internal17CompressedStorageIdiE10reallocateEl(ptr noundef nonnull align 8 dereferenceable(32) %63, i64 noundef %63) br label %_ZN5Eigen8internal17CompressedStorageIdiE6resizeEld.exit.i _ZN5Eigen8internal17CompressedStorageIdiE6resizeEld.exit.i: ; preds = %73, %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit %74 = getelementptr inbounds nuw i8, ptr %0, i64 56 - store i64 %65, ptr %74, align 8 + store i64 %63, ptr %74, align 8 %75 = load i64, ptr %64, align 8 %76 = icmp slt i64 %75, 1 - %77 = icmp eq i64 %65, 0 + %77 = icmp eq i64 %63, 0 %or.cond.i = or i1 %77, %76 br i1 %or.cond.i, label %_ZN5Eigen8internal17CompressedStorageIdiEaSERKS2_.exit, label %_ZN5Eigen8internal10smart_copyIdEEvPKT_S4_PS2_.exit.i _ZN5Eigen8internal10smart_copyIdEEvPKT_S4_PS2_.exit.i: ; preds = %_ZN5Eigen8internal17CompressedStorageIdiE6resizeEld.exit.i %78 = load ptr, ptr %62, align 8 %79 = load ptr, ptr %63, align 8 - %.idx.i = shl nsw i64 %65, 3 + %.idx.i = shl nsw i64 %63, 3 tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %79, ptr align 8 %78, i64 %.idx.i, i1 false) %.pre.i = load i64, ptr %74, align 8 %80 = icmp eq i64 %.pre.i, 0 @@ -45136,11 +45134,11 @@ _ZN5Eigen8internal10smart_copyIdEEvPKT_S4_PS2_.exit.i: ; preds = %_ZN5Eigen8inte 81: ; preds = %_ZN5Eigen8internal10smart_copyIdEEvPKT_S4_PS2_.exit.i %82 = getelementptr inbounds nuw i8, ptr %1, i64 48 + %81 = load ptr, ptr %80, align 8 + %82 = getelementptr inbounds nuw i8, ptr %0, i64 48 %83 = load ptr, ptr %82, align 8 - %84 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %85 = load ptr, ptr %84, align 8 %.idx8.i = shl nsw i64 %.pre.i, 2 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %85, ptr align 4 %83, i64 %.idx8.i, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %83, ptr align 4 %81, i64 %.idx8.i, i1 false) br label %_ZN5Eigen8internal17CompressedStorageIdiEaSERKS2_.exit 86: ; preds = %_ZN5Eigen12SparseMatrixIdLi0EiE14initAssignmentIS1_EEvRKT_.exit diff --git a/bench/minetest/optimized/guiFormSpecMenu.ll b/bench/minetest/optimized/guiFormSpecMenu.ll index bad53d7cb1e..e5007b8e745 100644 --- a/bench/minetest/optimized/guiFormSpecMenu.ll +++ b/bench/minetest/optimized/guiFormSpecMenu.ll @@ -96537,7 +96537,8 @@ if.else61: ; preds = %for.cond if.then64: ; preds = %if.else61 %add.ptr.i149 = getelementptr inbounds i8, ptr %add.ptr.i148, i64 -8 %20 = load ptr, ptr %add.ptr.i149, align 8, !tbaa !182 - %tobool.not.i.i.i.i.i156 = icmp eq ptr %add.ptr.i149, %__p.sroa.0.0 + %add.ptr.i148.idx.mask = and i64 %__n.0, 2305843009213693951 + %tobool.not.i.i.i.i.i156 = icmp eq i64 %add.ptr.i148.idx.mask, 1 br i1 %tobool.not.i.i.i.i.i156, label %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPPN3irr3gui11IGUIElementESt6vectorIS5_SaIS5_EEEESA_ET0_T_SC_SB_.exit, label %if.then.i.i.i.i.i157 if.then.i.i.i.i.i157: ; preds = %if.then64 diff --git a/bench/mold/optimized/passes.cc.X86_64.ll b/bench/mold/optimized/passes.cc.X86_64.ll index 5b18d2d8e2e..ce39890b816 100644 --- a/bench/mold/optimized/passes.cc.X86_64.ll +++ b/bench/mold/optimized/passes.cc.X86_64.ll @@ -19634,18 +19634,19 @@ define linkonce_odr dso_local void @_ZZN4mold25fixup_ctors_in_init_arrayINS_6X86 unreachable 11: ; preds = %2 - %12 = getelementptr inbounds nuw i8, ptr %1, i64 32 - %13 = load ptr, ptr %12, align 8, !tbaa !360 - %14 = getelementptr inbounds i8, ptr %13, i64 %5 - %15 = icmp ne i64 %5, 0 - %.012.i.i = getelementptr inbounds i8, ptr %14, i64 -8 - %16 = icmp ult ptr %13, %.012.i.i - %or.cond.i.i = select i1 %15, i1 %16, i1 false - br i1 %or.cond.i.i, label %.lr.ph.i.i, label %_ZSt7reverseIPN4mold7IntegerImLb1ELi8EEEEvT_S4_.exit - -.lr.ph.i.i: ; preds = %11, %.lr.ph.i.i - %.014.i.i = phi ptr [ %.0.i.i, %.lr.ph.i.i ], [ %.012.i.i, %11 ] - %.0913.i.i = phi ptr [ %18, %.lr.ph.i.i ], [ %13, %11 ] + %12 = icmp sgt i64 %5, 8 + br i1 %12, label %.lr.ph.i.i.preheader, label %_ZSt7reverseIPN4mold7IntegerImLb1ELi8EEEEvT_S4_.exit + +.lr.ph.i.i.preheader:; preds = %11 + %.012.i.i = getelementptr inbounds nuw i8, ptr %1, i64 32 + %14 = load ptr, ptr %.012.i.i, align 8, !tbaa !360 + %15 = getelementptr inbounds nuw i8, ptr %14, i64 %5 + %.012.i.i = getelementptr inbounds i8, ptr %15, i64 -8 + br label %.lr.ph.i.i + +.lr.ph.i.i:; preds = %.lr.ph.i.i.preheader, %.lr.ph.i.i + %.0913.i.i = phi ptr [ %.0.i.i, %.lr.ph.i.i ], [ %.012.i.i, %.lr.ph.i.i.preheader ] + %.0913.i.i = phi ptr [ %17, %.lr.ph.i.i ], [ %14, %.lr.ph.i.i.preheader ] %.sroa.0.0.copyload.i.i.i.i = load i64, ptr %.0913.i.i, align 1, !tbaa !19 %17 = load i64, ptr %.014.i.i, align 1, !tbaa !19 store i64 %17, ptr %.0913.i.i, align 1, !tbaa !19 @@ -31211,7 +31212,7 @@ _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN4mold6ElfRelINS2_6X86_64EEESt4spanIS5 %50 = getelementptr inbounds %"struct.mold::ElfRel", ptr %.sroa.041.0, i64 %.0 %51 = getelementptr inbounds i8, ptr %50, i64 -24 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(24) %8, ptr noundef nonnull align 1 dereferenceable(24) %51, i64 24, i1 false), !tbaa.struct !1485 - %.not.i.i.i.i.i33 = icmp eq ptr %51, %.sroa.041.0 + %.not.i.i.i.i.i33 = icmp eq i64 %.0, 1 br i1 %.not.i.i.i.i.i33, label %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN4mold6ElfRelINS2_6X86_64EEESt4spanIS5_Lm18446744073709551615EEEES9_ET0_T_SB_SA_.exit, label %52 52: ; preds = %49 @@ -93028,7 +93029,7 @@ _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPZN4mold14sort_init_finiINS2_6X86_64EEE %50 = getelementptr inbounds %struct.Entry, ptr %.sroa.041.0, i64 %.0 %51 = getelementptr inbounds i8, ptr %50, i64 -16 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(16) %51, i64 16, i1 false), !tbaa.struct !2927 - %.not.i.i.i.i.i33 = icmp eq ptr %51, %.sroa.041.0 + %.not.i.i.i.i.i33 = icmp eq i64 %.0, 1 br i1 %.not.i.i.i.i.i33, label %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPZN4mold14sort_init_finiINS2_6X86_64EEEvRNS2_7ContextIT_EEE5EntrySt6vectorIS9_SaIS9_EEEESE_ET0_S6_S6_SF_.exit, label %52 52: ; preds = %49 @@ -94264,7 +94265,7 @@ _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPZN4mold14sort_ctor_dtorINS2_6X86_64EEE %50 = getelementptr inbounds %struct.Entry.553, ptr %.sroa.041.0, i64 %.0 %51 = getelementptr inbounds i8, ptr %50, i64 -16 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(16) %51, i64 16, i1 false), !tbaa.struct !2927 - %.not.i.i.i.i.i33 = icmp eq ptr %51, %.sroa.041.0 + %.not.i.i.i.i.i33 = icmp eq i64 %.0, 1 br i1 %.not.i.i.i.i.i33, label %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPZN4mold14sort_ctor_dtorINS2_6X86_64EEEvRNS2_7ContextIT_EEE5EntrySt6vectorIS9_SaIS9_EEEESE_ET0_S6_S6_SF_.exit, label %52 52: ; preds = %49 @@ -98282,7 +98283,7 @@ _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPPN4mold5ChunkINS2_6X86_64EEESt6vectorI 50: ; preds = %47 %51 = getelementptr inbounds i8, ptr %49, i64 -8 %52 = load ptr, ptr %51, align 8, !tbaa !442 - %.not.i.i.i.i.i34 = icmp eq ptr %51, %.sroa.042.0 + %.not.i.i.i.i.i34 = icmp eq i64 %.0, 1 br i1 %.not.i.i.i.i.i34, label %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPPN4mold5ChunkINS2_6X86_64EEESt6vectorIS6_SaIS6_EEEESB_ET0_T_SD_SC_.exit, label %53 53: ; preds = %50 @@ -108863,7 +108864,7 @@ _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPPN4mold6SymbolINS2_6X86_64EEESt4spanIS 50: ; preds = %47 %51 = getelementptr inbounds i8, ptr %49, i64 -8 %52 = load ptr, ptr %51, align 8, !tbaa !318 - %.not.i.i.i.i.i34 = icmp eq ptr %51, %.sroa.042.0 + %.not.i.i.i.i.i34 = icmp eq i64 %.0, 1 br i1 %.not.i.i.i.i.i34, label %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPPN4mold6SymbolINS2_6X86_64EEESt4spanIS6_Lm18446744073709551615EEEESA_ET0_T_SC_SB_.exit, label %53 53: ; preds = %50 diff --git a/bench/nanobind/optimized/test_eigen.ll b/bench/nanobind/optimized/test_eigen.ll index 8ee3499cba7..4c71877e995 100644 --- a/bench/nanobind/optimized/test_eigen.ll +++ b/bench/nanobind/optimized/test_eigen.ll @@ -11581,22 +11581,20 @@ define linkonce_odr hidden void @_ZN5Eigen12SparseMatrixIfLi1EiEC2ERKS1_(ptr nou br i1 %39, label %40, label %52 40: ; preds = %.noexc - %41 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %42 = load ptr, ptr %41, align 8, !tbaa !655 - %43 = load i64, ptr %3, align 8, !tbaa !670 - %44 = getelementptr inbounds i32, ptr %42, i64 %43 - %45 = getelementptr inbounds nuw i8, ptr %44, i64 4 - %46 = icmp eq ptr %45, %42 - br i1 %46, label %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit.i, label %47 - -47: ; preds = %40 - %48 = load ptr, ptr %4, align 8, !tbaa !655 - %.idx.i = shl nsw i64 %43, 2 - %49 = add nsw i64 %.idx.i, 4 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %48, ptr align 4 %42, i64 %49, i1 false) + %41 = load i64, ptr %3, align 8, !tbaa !670 + %42 = icmp eq i64 %41, -1 + br i1 %42, label %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit.i, label %43 + +43: ; preds = %40 + %44 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %45 = load ptr, ptr %44, align 8, !tbaa !655 + %46 = load ptr, ptr %4, align 8, !tbaa !655 + %.idx.i = shl nsw i64 %41, 2 + %47 = add nsw i64 %.idx.i, 4 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %46, ptr align 4 %45, i64 %47, i1 false) br label %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit.i -_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit.i: ; preds = %47, %40 +_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit.i: ; preds = %43, %40 %50 = getelementptr inbounds nuw i8, ptr %1, i64 40 %51 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5Eigen8internal17CompressedStorageIfiEaSERKS2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %50) #31 to label %_ZN5Eigen12SparseMatrixIfLi1EiEaSERKS1_.exit unwind label %53 @@ -13562,22 +13560,20 @@ define linkonce_odr hidden void @_ZN5Eigen12SparseMatrixIfLi0EiEC2ERKS1_(ptr nou br i1 %39, label %40, label %52 40: ; preds = %.noexc - %41 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %42 = load ptr, ptr %41, align 8, !tbaa !725 - %43 = load i64, ptr %3, align 8, !tbaa !736 - %44 = getelementptr inbounds i32, ptr %42, i64 %43 - %45 = getelementptr inbounds nuw i8, ptr %44, i64 4 - %46 = icmp eq ptr %45, %42 - br i1 %46, label %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit.i, label %47 - -47: ; preds = %40 - %48 = load ptr, ptr %4, align 8, !tbaa !725 - %.idx.i = shl nsw i64 %43, 2 - %49 = add nsw i64 %.idx.i, 4 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %48, ptr align 4 %42, i64 %49, i1 false) + %41 = load i64, ptr %3, align 8, !tbaa !736 + %42 = icmp eq i64 %41, -1 + br i1 %42, label %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit.i, label %43 + +43: ; preds = %40 + %44 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %45 = load ptr, ptr %44, align 8, !tbaa !725 + %46 = load ptr, ptr %4, align 8, !tbaa !725 + %.idx.i = shl nsw i64 %41, 2 + %47 = add nsw i64 %.idx.i, 4 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %46, ptr align 4 %45, i64 %47, i1 false) br label %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit.i -_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit.i: ; preds = %47, %40 +_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit.i: ; preds = %43, %40 %50 = getelementptr inbounds nuw i8, ptr %1, i64 40 %51 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5Eigen8internal17CompressedStorageIfiEaSERKS2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %50) #31 to label %_ZN5Eigen12SparseMatrixIfLi0EiEaSERKS1_.exit unwind label %53 @@ -18292,22 +18288,20 @@ define linkonce_odr hidden void @_ZN5Eigen12SparseMatrixISt7complexIdELi0EiEC2ER br i1 %39, label %40, label %52 40: ; preds = %.noexc - %41 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %42 = load ptr, ptr %41, align 8, !tbaa !921 - %43 = load i64, ptr %3, align 8, !tbaa !916 - %44 = getelementptr inbounds i32, ptr %42, i64 %43 - %45 = getelementptr inbounds nuw i8, ptr %44, i64 4 - %46 = icmp eq ptr %45, %42 - br i1 %46, label %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit.i, label %47 - -47: ; preds = %40 - %48 = load ptr, ptr %4, align 8, !tbaa !921 - %.idx.i = shl nsw i64 %43, 2 - %49 = add nsw i64 %.idx.i, 4 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %48, ptr align 4 %42, i64 %49, i1 false) + %41 = load i64, ptr %3, align 8, !tbaa !916 + %42 = icmp eq i64 %41, -1 + br i1 %42, label %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit.i, label %43 + +43: ; preds = %40 + %44 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %45 = load ptr, ptr %44, align 8, !tbaa !921 + %46 = load ptr, ptr %4, align 8, !tbaa !921 + %.idx.i = shl nsw i64 %41, 2 + %47 = add nsw i64 %.idx.i, 4 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %46, ptr align 4 %45, i64 %47, i1 false) br label %_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit.i -_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit.i: ; preds = %47, %40 +_ZN5Eigen8internal10smart_copyIiEEvPKT_S4_PS2_.exit.i: ; preds = %43, %40 %50 = getelementptr inbounds nuw i8, ptr %1, i64 40 %51 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN5Eigen8internal17CompressedStorageISt7complexIdEiEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %50) #31 to label %_ZN5Eigen12SparseMatrixISt7complexIdELi0EiEaSERKS3_.exit unwind label %53 diff --git a/bench/opencc/optimized/louds-trie.ll b/bench/opencc/optimized/louds-trie.ll index 27e970793e0..e9a68c28e55 100644 --- a/bench/opencc/optimized/louds-trie.ll +++ b/bench/opencc/optimized/louds-trie.ll @@ -2491,7 +2491,7 @@ _ZN6marisa8grimoire4trie5State19reverse_lookup_initEv.exit: ; preds = %13, %.pre br label %_ZSt7reverseIPcEvT_S1_.exit42.sink.split 47: ; preds = %.preheader, %137 - %48 = phi i64 [ %29, %.preheader ], [ %142, %137 ] + %48 = phi i64 [ %29, %.preheader ], [ %142, %136 ] %49 = and i64 %48, 4294967295 %50 = lshr i64 %49, 6 %51 = load ptr, ptr %34, align 8, !tbaa !87 @@ -2643,23 +2643,24 @@ _ZSt7reverseIPcEvT_S1_.exit: ; preds = %.lr.ph.i.i, %_ZNK6m 127: ; preds = %_ZSt7reverseIPcEvT_S1_.exit %128 = load ptr, ptr %42, align 8, !tbaa !133 %129 = load i64, ptr %17, align 8, !tbaa !131 - %130 = getelementptr inbounds nuw i8, ptr %128, i64 %129 - %131 = icmp samesign ne i64 %129, 0 - %.012.i.i36 = getelementptr inbounds i8, ptr %130, i64 -1 - %132 = icmp ult ptr %128, %.012.i.i36 - %or.cond.i.i37 = select i1 %131, i1 %132, i1 false - br i1 %or.cond.i.i37, label %.lr.ph.i.i38, label %_ZSt7reverseIPcEvT_S1_.exit42 - -.lr.ph.i.i38: ; preds = %127, %.lr.ph.i.i38 - %.014.i.i39 = phi ptr [ %.0.i.i41, %.lr.ph.i.i38 ], [ %.012.i.i36, %127 ] - %.0913.i.i40 = phi ptr [ %135, %.lr.ph.i.i38 ], [ %128, %127 ] + %130 = icmp sgt i64 %129, 1 + br i1 %130, label %.lr.ph.i.i38.preheader, label %_ZSt7reverseIPcEvT_S1_.exit42 + +.lr.ph.i.i38.preheader:; preds = %127 + %131 = getelementptr inbounds nuw i8, ptr %128, i64 %129 + %.012.i.i36 = getelementptr inbounds i8, ptr %131, i64 -1 + br label %.lr.ph.i.i38 + +.lr.ph.i.i38:; preds = %.lr.ph.i.i38.preheader, %.lr.ph.i.i38 + %.0913.i.i40 = phi ptr [ %.0.i.i41, %.lr.ph.i.i38 ], [ %.012.i.i36, %.lr.ph.i.i38.preheader ] + %.0913.i.i40 = phi ptr [ %134, %.lr.ph.i.i38 ], [ %128, %.lr.ph.i.i38.preheader ] + %134 = load i8, ptr %.0913.i.i40, align 1, !tbaa !58 %133 = load i8, ptr %.0913.i.i40, align 1, !tbaa !58 - %134 = load i8, ptr %.014.i.i39, align 1, !tbaa !58 - store i8 %134, ptr %.0913.i.i40, align 1, !tbaa !58 - store i8 %133, ptr %.014.i.i39, align 1, !tbaa !58 - %135 = getelementptr inbounds nuw i8, ptr %.0913.i.i40, i64 1 + store i8 %133, ptr %.0913.i.i40, align 1, !tbaa !58 + store i8 %132, ptr %.0913.i.i40, align 1, !tbaa !58 + %134 = getelementptr inbounds nuw i8, ptr %.0913.i.i40, i64 1 %.0.i.i41 = getelementptr inbounds i8, ptr %.014.i.i39, i64 -1 - %136 = icmp ult ptr %135, %.0.i.i41 + %136 = icmp ult ptr %134, %.0.i.i41 br i1 %136, label %.lr.ph.i.i38, label %_ZSt7reverseIPcEvT_S1_.exit42.sink.split, !llvm.loop !135 137: ; preds = %_ZSt7reverseIPcEvT_S1_.exit diff --git a/bench/opencv/optimized/core_detect.ll b/bench/opencv/optimized/core_detect.ll index c75c94cee74..1f4ec884ad6 100644 --- a/bench/opencv/optimized/core_detect.ll +++ b/bench/opencv/optimized/core_detect.ll @@ -3360,6 +3360,7 @@ _ZNSt6vectorIbSaIbEEC2EmRKS0_.exit: ; preds = %17 %27 = getelementptr inbounds i64, ptr %21, i64 %26 %28 = and i64 %12, -9223372036854775745 %29 = icmp ugt i64 %28, -9223372036854775808 + %storemerge.idx.i.i.i.i.i.i.neg = select i1 %29, i64 8, i64 0 %storemerge.idx.i.i.i.i.i.i = select i1 %29, i64 -8, i64 0 %storemerge.i.i.i.i.i.i = getelementptr inbounds i8, ptr %27, i64 %storemerge.idx.i.i.i.i.i.i %30 = trunc i64 %12 to i32 @@ -3368,7 +3369,8 @@ _ZNSt6vectorIbSaIbEEC2EmRKS0_.exit: ; preds = %17 store i32 %31, ptr %15, align 8 %.idx.i.i = shl nuw nsw i64 %24, 3 tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %21, i8 0, i64 %.idx.i.i, i1 false) - %.not.i.i.i67 = icmp eq ptr %21, %storemerge.i.i.i.i.i.i + %.idx = shl nsw i64 %26, 3 + %.not.i.i.i67 = icmp eq i64 %.idx, %storemerge.idx.i.i.i.i.i.i.neg br i1 %.not.i.i.i67, label %39, label %32 32: ; preds = %_ZNSt6vectorIbSaIbEEC2EmRKS0_.exit diff --git a/bench/openjdk/optimized/ifnode.ll b/bench/openjdk/optimized/ifnode.ll index b0166dc428a..7b8357ba40f 100644 --- a/bench/openjdk/optimized/ifnode.ll +++ b/bench/openjdk/optimized/ifnode.ll @@ -5687,16 +5687,19 @@ _ZN4Node7set_reqEjPS_.exit377: ; preds = %_ZN4Node7set_reqEjP %414 = load ptr, ptr %413, align 8 %415 = getelementptr inbounds nuw i8, ptr %24, i64 32 %416 = load i32, ptr %415, align 8 + %.not359448 = icmp eq i32 %416, 0 + br i1 %.not359448, label %._crit_edge453, label %.lr.ph452.preheader + +.lr.ph452.preheader: ; preds = %_ZN4Node7set_reqEjPS_.exit377 %417 = zext i32 %416 to i64 %418 = getelementptr inbounds nuw ptr, ptr %414, i64 %417 %.0321447 = getelementptr inbounds i8, ptr %418, i64 -8 - %.not359448 = icmp ult ptr %.0321447, %414 - br i1 %.not359448, label %._crit_edge453, label %.lr.ph452 + br label %.lr.ph452 -.lr.ph452: ; preds = %_ZN4Node7set_reqEjPS_.exit377, %._crit_edge443 - %.0321451 = phi ptr [ %.0321, %._crit_edge443 ], [ %.0321447, %_ZN4Node7set_reqEjPS_.exit377 ] - %.0322450 = phi ptr [ %.1323, %._crit_edge443 ], [ null, %_ZN4Node7set_reqEjPS_.exit377 ] - %.0324449 = phi ptr [ %.2326, %._crit_edge443 ], [ null, %_ZN4Node7set_reqEjPS_.exit377 ] +.lr.ph452: ; preds = %.lr.ph452.preheader, %._crit_edge443 + %.0321451 = phi ptr [ %.0321, %._crit_edge443 ], [ %.0321447, %.lr.ph452.preheader ] + %.0322450 = phi ptr [ %.1323, %._crit_edge443 ], [ null, %.lr.ph452.preheader ] + %.0324449 = phi ptr [ %.2326, %._crit_edge443 ], [ null, %.lr.ph452.preheader ] %419 = load ptr, ptr %.0321451, align 8 tail call void @_ZN12PhaseIterGVN19rehash_node_delayedEP4Node(ptr noundef nonnull align 8 dereferenceable(2416) %1, ptr noundef %419) %420 = load ptr, ptr %419, align 8 @@ -5858,14 +5861,17 @@ _ZN4Node7set_reqEjPS_.exit377: ; preds = %_ZN4Node7set_reqEjP %490 = getelementptr inbounds nuw i8, ptr %0, i64 16 %491 = load ptr, ptr %490, align 8 %492 = load i32, ptr %192, align 8 + %.not360466 = icmp eq i32 %492, 0 + br i1 %.not360466, label %._crit_edge470, label %.lr.ph469.preheader + +.lr.ph469.preheader: ; preds = %._crit_edge453 %493 = zext i32 %492 to i64 %494 = getelementptr inbounds nuw ptr, ptr %491, i64 %493 %.0311465 = getelementptr inbounds i8, ptr %494, i64 -8 - %.not360466 = icmp ult ptr %.0311465, %491 - br i1 %.not360466, label %._crit_edge470, label %.lr.ph469 + br label %.lr.ph469 -.lr.ph469: ; preds = %._crit_edge453, %._crit_edge464 - %.0311467 = phi ptr [ %.0311, %._crit_edge464 ], [ %.0311465, %._crit_edge453 ] +.lr.ph469: ; preds = %.lr.ph469.preheader, %._crit_edge464 + %.0311467 = phi ptr [ %.0311, %._crit_edge464 ], [ %.0311465, %.lr.ph469.preheader ] %495 = load ptr, ptr %.0311467, align 8 %496 = load ptr, ptr %495, align 8 %497 = load ptr, ptr %496, align 8 @@ -5877,14 +5883,17 @@ _ZN4Node7set_reqEjPS_.exit377: ; preds = %_ZN4Node7set_reqEjP %502 = load ptr, ptr %501, align 8 %503 = getelementptr inbounds nuw i8, ptr %495, i64 32 %504 = load i32, ptr %503, align 8 + %.not362460 = icmp eq i32 %504, 0 + br i1 %.not362460, label %._crit_edge464, label %.lr.ph463.preheader + +.lr.ph463.preheader: ; preds = %.lr.ph469 %505 = zext i32 %504 to i64 %506 = getelementptr inbounds nuw ptr, ptr %502, i64 %505 %507 = getelementptr inbounds i8, ptr %506, i64 -8 - %.not362460 = icmp ult ptr %507, %502 - br i1 %.not362460, label %._crit_edge464, label %.lr.ph463 + br label %.lr.ph463 -.lr.ph463: ; preds = %.lr.ph469, %._crit_edge458 - %.0307461 = phi ptr [ %529, %._crit_edge458 ], [ %507, %.lr.ph469 ] +.lr.ph463: ; preds = %.lr.ph463.preheader, %._crit_edge458 + %.0307461 = phi ptr [ %529, %._crit_edge458 ], [ %507, %.lr.ph463.preheader ] %508 = load ptr, ptr %.0307461, align 8 %509 = load ptr, ptr %370, align 8 %510 = tail call noundef zeroext i1 @_ZN8NodeHash11hash_deleteEPK4Node(ptr noundef nonnull align 8 dereferenceable(40) %509, ptr noundef %508) #8 @@ -5944,14 +5953,17 @@ _ZN4Node7set_reqEjPS_.exit377: ; preds = %_ZN4Node7set_reqEjP %531 = tail call noundef zeroext i1 @_ZN8NodeHash11hash_deleteEPK4Node(ptr noundef nonnull align 8 dereferenceable(40) %530, ptr noundef nonnull %128) #8 %532 = load ptr, ptr %148, align 8 %533 = load i32, ptr %150, align 8 + %.not361472 = icmp eq i32 %533, 0 + br i1 %.not361472, label %._crit_edge476, label %.lr.ph475.preheader + +.lr.ph475.preheader: ; preds = %._crit_edge470 %534 = zext i32 %533 to i64 %535 = getelementptr inbounds nuw ptr, ptr %532, i64 %534 %.0304471 = getelementptr inbounds i8, ptr %535, i64 -8 - %.not361472 = icmp ult ptr %.0304471, %532 - br i1 %.not361472, label %._crit_edge476, label %.lr.ph475 + br label %.lr.ph475 -.lr.ph475: ; preds = %._crit_edge470, %559 - %.0304473 = phi ptr [ %.0304, %559 ], [ %.0304471, %._crit_edge470 ] +.lr.ph475: ; preds = %.lr.ph475.preheader, %559 + %.0304473 = phi ptr [ %.0304, %559 ], [ %.0304471, %.lr.ph475.preheader ] %536 = load ptr, ptr %.0304473, align 8 %537 = icmp eq ptr %536, %40 br i1 %537, label %538, label %558 @@ -6423,13 +6435,13 @@ define hidden noundef ptr @_ZN6IfNode12dominated_byEP4NodeP12PhaseIterGVNb(ptr n %19 = load ptr, ptr %18, align 8 %20 = getelementptr inbounds nuw i8, ptr %0, i64 32 %21 = load i32, ptr %20, align 8 - %22 = zext i32 %21 to i64 - %23 = getelementptr inbounds nuw ptr, ptr %19, i64 %22 - %.04870 = getelementptr inbounds i8, ptr %23, i64 -8 - %.not71 = icmp ult ptr %.04870, %19 + %.not71 = icmp eq i32 %21, 0 br i1 %.not71, label %._crit_edge75, label %.lr.ph74 .lr.ph74: ; preds = %4 + %22 = zext i32 %21 to i64 + %23 = getelementptr inbounds nuw ptr, ptr %19, i64 %22 + %.04870 = getelementptr inbounds i8, ptr %23, i64 -8 %24 = getelementptr inbounds nuw i8, ptr %2, i64 2408 br label %25 @@ -6451,13 +6463,13 @@ define hidden noundef ptr @_ZN6IfNode12dominated_byEP4NodeP12PhaseIterGVNb(ptr n %38 = load ptr, ptr %37, align 8 %39 = getelementptr inbounds nuw i8, ptr %26, i64 32 %40 = load i32, ptr %39, align 8 - %41 = zext i32 %40 to i64 - %42 = getelementptr inbounds nuw ptr, ptr %38, i64 %41 - %.04967 = getelementptr inbounds i8, ptr %42, i64 -8 - %.not5268 = icmp ult ptr %.04967, %38 + %.not5268 = icmp eq i32 %40, 0 br i1 %.not5268, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %25 + %41 = zext i32 %40 to i64 + %42 = getelementptr inbounds nuw ptr, ptr %38, i64 %41 + %.04967 = getelementptr inbounds i8, ptr %42, i64 -8 %.not54 = icmp ne ptr %31, %17 %or.cond.not = and i1 %3, %.not54 br label %43 diff --git a/bench/openjdk/optimized/macro.ll b/bench/openjdk/optimized/macro.ll index 83e4c7f1553..576f43ac4e9 100644 --- a/bench/openjdk/optimized/macro.ll +++ b/bench/openjdk/optimized/macro.ll @@ -4603,13 +4603,13 @@ define hidden void @_ZN16PhaseMacroExpand27process_users_of_allocationEP8CallNod %7 = load ptr, ptr %6, align 8 %8 = getelementptr inbounds nuw i8, ptr %4, i64 32 %9 = load i32, ptr %8, align 8 - %10 = zext i32 %9 to i64 - %11 = getelementptr inbounds nuw ptr, ptr %7, i64 %10 - %12 = getelementptr inbounds i8, ptr %11, i64 -8 - %.not86109 = icmp ult ptr %12, %7 + %.not86109 = icmp eq i32 %9, 0 br i1 %.not86109, label %._crit_edge113, label %.lr.ph112 .lr.ph112: ; preds = %5 + %10 = zext i32 %9 to i64 + %11 = getelementptr inbounds nuw ptr, ptr %7, i64 %10 + %12 = getelementptr inbounds i8, ptr %11, i64 -8 %13 = getelementptr inbounds nuw i8, ptr %0, i64 16 %14 = getelementptr inbounds nuw i8, ptr %3, i64 24 %15 = getelementptr inbounds nuw i8, ptr %3, i64 16 @@ -4633,15 +4633,18 @@ define hidden void @_ZN16PhaseMacroExpand27process_users_of_allocationEP8CallNod %28 = load ptr, ptr %27, align 8 %29 = getelementptr inbounds nuw i8, ptr %21, i64 32 %30 = load i32, ptr %29, align 8 + %.not98107 = icmp eq i32 %30, 0 + br i1 %.not98107, label %._crit_edge, label %.lr.ph.preheader + +.lr.ph.preheader: ; preds = %26 %31 = zext i32 %30 to i64 %32 = getelementptr inbounds nuw ptr, ptr %28, i64 %31 %33 = getelementptr inbounds i8, ptr %32, i64 -8 - %.not98107 = icmp ult ptr %33, %28 - br i1 %.not98107, label %._crit_edge, label %.lr.ph + br label %.lr.ph -.lr.ph: ; preds = %26, %56 - %34 = phi i32 [ %57, %56 ], [ %30, %26 ] - %.073108 = phi ptr [ %61, %56 ], [ %33, %26 ] +.lr.ph: ; preds = %.lr.ph.preheader, %56 + %34 = phi i32 [ %57, %56 ], [ %30, %.lr.ph.preheader ] + %.073108 = phi ptr [ %61, %56 ], [ %33, %.lr.ph.preheader ] %35 = load ptr, ptr %.073108, align 8 %36 = getelementptr inbounds nuw i8, ptr %35, i64 44 %37 = load i32, ptr %36, align 4 @@ -4991,13 +4994,13 @@ _ZN16Unique_Node_List4pushEP4Node.exit: ; preds = %_ZN9Node_List4pushE %.pre123 = load ptr, ptr %.phi.trans.insert, align 8 %.phi.trans.insert124 = getelementptr inbounds nuw i8, ptr %.pre, i64 32 %.pre125 = load i32, ptr %.phi.trans.insert124, align 8 - %248 = zext i32 %.pre125 to i64 - %249 = getelementptr inbounds nuw ptr, ptr %.pre123, i64 %248 - %250 = getelementptr inbounds i8, ptr %249, i64 -8 - %.not89119 = icmp ult ptr %250, %.pre123 + %.not89119 = icmp eq i32 %.pre125, 0 br i1 %.not89119, label %.loopexit, label %.lr.ph122 .lr.ph122: ; preds = %._crit_edge118 + %248 = zext i32 %.pre125 to i64 + %249 = getelementptr inbounds nuw ptr, ptr %.pre123, i64 %248 + %250 = getelementptr inbounds i8, ptr %249, i64 -8 %251 = getelementptr inbounds nuw i8, ptr %0, i64 16 br label %252 @@ -12762,13 +12765,13 @@ define hidden void @_ZN16PhaseMacroExpand24expand_subtypecheck_nodeEP16SubTypeCh %14 = load ptr, ptr %13, align 8 %15 = getelementptr inbounds nuw i8, ptr %6, i64 32 %16 = load i32, ptr %15, align 8 - %17 = zext i32 %16 to i64 - %18 = getelementptr inbounds nuw ptr, ptr %14, i64 %17 - %.036 = getelementptr inbounds i8, ptr %18, i64 -8 - %.not37 = icmp ult ptr %.036, %14 + %.not37 = icmp eq i32 %16, 0 br i1 %.not37, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %2 + %17 = zext i32 %16 to i64 + %18 = getelementptr inbounds nuw ptr, ptr %14, i64 %17 + %.036 = getelementptr inbounds i8, ptr %18, i64 -8 %19 = getelementptr inbounds nuw i8, ptr %0, i64 16 %20 = getelementptr inbounds nuw i8, ptr %10, i64 40 %21 = tail call align 8 ptr @llvm.threadlocal.address.p0(ptr align 8 @_ZN6Thread12_thr_currentE) diff --git a/bench/openjdk/optimized/node.ll b/bench/openjdk/optimized/node.ll index 56bf19933a8..d52cb64270b 100644 --- a/bench/openjdk/optimized/node.ll +++ b/bench/openjdk/optimized/node.ll @@ -6942,19 +6942,22 @@ _ZN9Node_List4pushEP4Node.exit97.i: ; preds = %84, %83 %98 = getelementptr inbounds nuw ptr, ptr %.sroa.27.7.i, i64 %57 store ptr %59, ptr %98, align 8 %99 = getelementptr inbounds nuw i8, ptr %59, i64 16 - %100 = load ptr, ptr %99, align 8 - %101 = load i32, ptr %81, align 8 - %102 = zext i32 %101 to i64 - %103 = getelementptr inbounds nuw ptr, ptr %100, i64 %102 - %.084182.i = getelementptr inbounds i8, ptr %103, i64 -8 - %.not92183.i = icmp ult ptr %.084182.i, %100 - br i1 %.not92183.i, label %.loopexit.i, label %.lr.ph188.i - -.lr.ph188.i: ; preds = %_ZN9Node_List4pushEP4Node.exit97.i, %_ZN16Unique_Node_List4pushEP4Node.exit.i - %.084187.i = phi ptr [ %.084.i, %_ZN16Unique_Node_List4pushEP4Node.exit.i ], [ %.084182.i, %_ZN9Node_List4pushEP4Node.exit97.i ] - %.sroa.47.1186.i = phi i32 [ %.sroa.47.2.i, %_ZN16Unique_Node_List4pushEP4Node.exit.i ], [ %.sroa.47.0203.i, %_ZN9Node_List4pushEP4Node.exit97.i ] - %.sroa.7.1185.i = phi i32 [ %.sroa.7.2.i, %_ZN16Unique_Node_List4pushEP4Node.exit.i ], [ %.sroa.7.7.i, %_ZN9Node_List4pushEP4Node.exit97.i ] - %.sroa.27.1184.i = phi ptr [ %.sroa.27.2.i, %_ZN16Unique_Node_List4pushEP4Node.exit.i ], [ %.sroa.27.7.i, %_ZN9Node_List4pushEP4Node.exit97.i ] + %100 = load i32, ptr %81, align 8 + %.not92183.i = icmp eq i32 %100, 0 + br i1 %.not92183.i, label %.loopexit.i, label %.lr.ph188.preheader.i + +.lr.ph188.preheader.i: ; preds = %_ZN9Node_List4pushEP4Node.exit97.i + %101 = load ptr, ptr %99, align 8 + %102 = zext i32 %100 to i64 + %103 = getelementptr inbounds nuw ptr, ptr %101, i64 %102 + br label %.lr.ph188.i + +.lr.ph188.i:; preds = %_ZN16Unique_Node_List4pushEP4Node.exit.i, %.lr.ph188.preheader.i + %.sroa.7.1185.i = phi ptr [ %360, %_ZN16Unique_Node_List4pushEP4Node.exit.i ], [ %103, %.lr.ph188.preheader.i ] + %.sroa.27.1184.i = phi i32 [ %.sroa.47.2.i, %_ZN16Unique_Node_List4pushEP4Node.exit.i ], [ %.sroa.47.0203.i, %.lr.ph188.preheader.i ] + %.sroa.7.1185.i = phi i32 [ %.sroa.7.2.i, %_ZN16Unique_Node_List4pushEP4Node.exit.i ], [ %.sroa.7.7.i, %.lr.ph188.preheader.i ] + %.sroa.27.1184.i = phi ptr [ %.sroa.27.2.i, %_ZN16Unique_Node_List4pushEP4Node.exit.i ], [ %.sroa.27.7.i, %.lr.ph188.preheader.i ] + %.084187.i = getelementptr inbounds i8, ptr %.pn.i, i64 -8 %104 = load ptr, ptr %.084187.i, align 8 %105 = load ptr, ptr %49, align 8 %106 = call noundef zeroext i1 @_ZN8NodeHash11hash_deleteEPK4Node(ptr noundef nonnull align 8 dereferenceable(40) %105, ptr noundef %104) #15 @@ -7414,8 +7417,7 @@ _ZN16Unique_Node_List4pushEP4Node.exit.i: ; preds = %_ZN16Unique_Node_Li %358 = load i32, ptr %81, align 8 %359 = zext i32 %358 to i64 %360 = getelementptr inbounds nuw ptr, ptr %357, i64 %359 - %.084.i = getelementptr inbounds i8, ptr %360, i64 -8 - %.not92.i = icmp ult ptr %.084.i, %357 + %.not92.i = icmp eq i32 %358, 0 br i1 %.not92.i, label %.loopexit.i, label %.lr.ph188.i, !llvm.loop !38 361: ; preds = %80 diff --git a/bench/openjdk/optimized/split_if.ll b/bench/openjdk/optimized/split_if.ll index 4f2091084f1..b5d21ce73fc 100644 --- a/bench/openjdk/optimized/split_if.ll +++ b/bench/openjdk/optimized/split_if.ll @@ -2697,7 +2697,7 @@ thread-pre-split: ; preds = %13, %_ZN14PhaseIdea .preheader: ; preds = %112 %.not225 = icmp eq i32 %.pre, 0 - br i1 %.not225, label %.loopexit, label %.lr.ph218 + br i1 %.not225, label %._crit_edge224, label %.lr.ph218 .lr.ph218: ; preds = %.preheader %116 = getelementptr inbounds nuw i8, ptr %1, i64 16 @@ -2979,14 +2979,17 @@ _ZN14PhaseIdealLoop16at_relevant_ctrlEP4NodePKS0_S3_.exit135.thread: ; preds = % %289 = load ptr, ptr %288, align 8 %290 = getelementptr inbounds nuw i8, ptr %280, i64 32 %291 = load i32, ptr %290, align 8 + %.not108212 = icmp eq i32 %291, 0 + br i1 %.not108212, label %._crit_edge, label %.lr.ph.preheader + +.lr.ph.preheader: ; preds = %287 %292 = zext i32 %291 to i64 %293 = getelementptr inbounds nuw ptr, ptr %289, i64 %292 %.0102211 = getelementptr inbounds i8, ptr %293, i64 -8 - %.not108212 = icmp ult ptr %.0102211, %289 - br i1 %.not108212, label %._crit_edge, label %.lr.ph + br label %.lr.ph -.lr.ph: ; preds = %287, %_ZN12PhaseIterGVN16replace_input_ofEP4NodejS1_.exit164 - %.0102213 = phi ptr [ %.0102, %_ZN12PhaseIterGVN16replace_input_ofEP4NodejS1_.exit164 ], [ %.0102211, %287 ] +.lr.ph: ; preds = %.lr.ph.preheader, %_ZN12PhaseIterGVN16replace_input_ofEP4NodejS1_.exit164 + %.0102213 = phi ptr [ %.0102, %_ZN12PhaseIterGVN16replace_input_ofEP4NodejS1_.exit164 ], [ %.0102211, %.lr.ph.preheader ] %294 = load ptr, ptr %.0102213, align 8 %295 = getelementptr inbounds nuw i8, ptr %294, i64 44 %296 = load i32, ptr %295, align 4 @@ -3472,17 +3475,17 @@ _ZN12PhaseIterGVN16replace_input_ofEP4NodejS1_.exit177: ; preds = %_ZN9VectorSet %566 = icmp ult i32 %564, %565 br i1 %566, label %122, label %.loopexit, !llvm.loop !24 -.loopexit: ; preds = %563, %.preheader, %112 - %567 = phi i32 [ 0, %.preheader ], [ %.pre, %112 ], [ %565, %563 ] +.loopexit: ; preds = %563, %112 + %567 = phi i32 [ %.pre, %112 ], [ %565, %563 ] %568 = getelementptr inbounds nuw i8, ptr %1, i64 16 %569 = load ptr, ptr %568, align 8 - %570 = zext i32 %567 to i64 - %571 = getelementptr inbounds nuw ptr, ptr %569, i64 %570 - %.099219 = getelementptr inbounds i8, ptr %571, i64 -8 - %.not109220 = icmp ult ptr %.099219, %569 + %.not109220 = icmp eq i32 %567, 0 br i1 %.not109220, label %._crit_edge224, label %.lr.ph223 .lr.ph223: ; preds = %.loopexit + %570 = zext i32 %567 to i64 + %571 = getelementptr inbounds nuw ptr, ptr %569, i64 %570 + %.099219 = getelementptr inbounds i8, ptr %571, i64 -8 %572 = getelementptr inbounds nuw i8, ptr %0, i64 32 %573 = getelementptr inbounds nuw i8, ptr %0, i64 40 %574 = getelementptr inbounds nuw i8, ptr %0, i64 56 @@ -3617,7 +3620,7 @@ _ZN12PhaseIterGVN16replace_input_ofEP4NodejS1_.exit185: ; preds = %_ZN9VectorSet %.not109 = icmp ult ptr %.099, %569 br i1 %.not109, label %._crit_edge224, label %575, !llvm.loop !25 -._crit_edge224: ; preds = %_ZN12PhaseIterGVN16replace_input_ofEP4NodejS1_.exit185, %.loopexit +._crit_edge224: ; preds = %_ZN12PhaseIterGVN16replace_input_ofEP4NodejS1_.exit185, %.preheader, %.loopexit %648 = getelementptr inbounds nuw i8, ptr %0, i64 56 %649 = load ptr, ptr %648, align 8 tail call void @_ZN12PhaseIterGVN25remove_globally_dead_nodeEP4Node(ptr noundef nonnull align 8 dereferenceable(2416) %649, ptr noundef nonnull %1) #9 @@ -5217,13 +5220,13 @@ _ZNK10Node_ArrayixEj.exit.thread: ; preds = %68, %_ZNK10Node_Arr %94 = load ptr, ptr %93, align 8 %95 = getelementptr inbounds nuw i8, ptr %1, i64 32 %96 = load i32, ptr %95, align 8 - %97 = zext i32 %96 to i64 - %98 = getelementptr inbounds nuw ptr, ptr %94, i64 %97 - %.0130237 = getelementptr inbounds i8, ptr %98, i64 -8 - %.not238 = icmp ult ptr %.0130237, %94 + %.not238 = icmp eq i32 %96, 0 br i1 %.not238, label %._crit_edge, label %.lr.ph244 .lr.ph244: ; preds = %91 + %97 = zext i32 %96 to i64 + %98 = getelementptr inbounds nuw ptr, ptr %94, i64 %97 + %.0130237 = getelementptr inbounds i8, ptr %98, i64 -8 %.not8.i = icmp eq ptr %92, null %99 = getelementptr inbounds nuw i8, ptr %92, i64 16 %100 = getelementptr inbounds nuw i8, ptr %92, i64 32 @@ -5821,14 +5824,17 @@ _ZN4Node7set_reqEjPS_.exit191: ; preds = %_ZN14PhaseIdealLoop %420 = load ptr, ptr %419, align 8 %421 = getelementptr inbounds nuw i8, ptr %405, i64 32 %422 = load i32, ptr %421, align 8 + %.not148250 = icmp eq i32 %422, 0 + br i1 %.not148250, label %._crit_edge254, label %.lr.ph253.preheader + +.lr.ph253.preheader: ; preds = %418 %423 = zext i32 %422 to i64 %424 = getelementptr inbounds nuw ptr, ptr %420, i64 %423 %.0119249 = getelementptr inbounds i8, ptr %424, i64 -8 - %.not148250 = icmp ult ptr %.0119249, %420 - br i1 %.not148250, label %._crit_edge254, label %.lr.ph253 + br label %.lr.ph253 -.lr.ph253: ; preds = %418, %_ZN14PhaseIdealLoop10handle_useEP4NodeS1_P11small_cacheS1_S1_S1_S1_S1_.exit - %.0119251 = phi ptr [ %.0119, %_ZN14PhaseIdealLoop10handle_useEP4NodeS1_P11small_cacheS1_S1_S1_S1_S1_.exit ], [ %.0119249, %418 ] +.lr.ph253: ; preds = %.lr.ph253.preheader, %_ZN14PhaseIdealLoop10handle_useEP4NodeS1_P11small_cacheS1_S1_S1_S1_S1_.exit + %.0119251 = phi ptr [ %.0119, %_ZN14PhaseIdealLoop10handle_useEP4NodeS1_P11small_cacheS1_S1_S1_S1_S1_.exit ], [ %.0119249, %.lr.ph253.preheader ] %425 = load ptr, ptr %.0119251, align 8 %426 = load ptr, ptr %425, align 8 %427 = getelementptr inbounds nuw i8, ptr %426, i64 16 diff --git a/bench/openusd/optimized/stbImage.ll b/bench/openusd/optimized/stbImage.ll index 7e932677932..989c0f3b880 100644 --- a/bench/openusd/optimized/stbImage.ll +++ b/bench/openusd/optimized/stbImage.ll @@ -9123,13 +9123,13 @@ _ZL18stbir__get_extentsP14stbir__samplerP14stbir__extents.exit.i.i: ; preds = %8 .loopexit.i.i.i: ; preds = %.preheader360.i.i.i, %.preheader358.i.i.i, %.preheader356.i.i.i, %.preheader354.i.i.i, %.preheader352.i.i.i, %.preheader350.i.i.i, %.preheader348.i.i.i, %.preheader346.i.i.i, %.preheader344.i.i.i, %.preheader342.i.i.i, %.preheader340.i.i.i, %.preheader338.i.i.i, %._crit_edge.i365.i.i, %_ZL18stbir__get_extentsP14stbir__samplerP14stbir__extents.exit.i.i %1023 = getelementptr inbounds float, ptr %907, i64 %.pre403.i.i.i store float 8.888000e+03, ptr %1023, align 4 - %1024 = sext i32 %905 to i64 - %1025 = getelementptr inbounds %struct.stbir__contributors, ptr %906, i64 %1024 - %.0318376.i.i.i = getelementptr inbounds i8, ptr %1025, i64 -8 - %.not330377.i.i.i = icmp ult ptr %.0318376.i.i.i, %906 + %.not330377.i.i.i = icmp slt i32 %905, 1 br i1 %.not330377.i.i.i, label %_ZL24stbir__pack_coefficientsiP19stbir__contributorsPfiiii.exit.i.i, label %.lr.ph382.i.i.i .lr.ph382.i.i.i: ; preds = %.loopexit.i.i.i + %1024 = zext nneg i32 %905 to i64 + %1025 = getelementptr inbounds nuw %struct.stbir__contributors, ptr %906, i64 %1024 + %.0318376.i.i.i = getelementptr inbounds i8, ptr %1025, i64 -8 %1026 = add nsw i32 %905, -1 %1027 = mul nsw i32 %909, %1026 %1028 = sext i32 %1027 to i64 @@ -10950,14 +10950,17 @@ define internal void @_ZL29stbir__fancy_alpha_weight_4chPfi(ptr noundef %0, i32 %7 = sext i32 %1 to i64 %8 = sub nsw i64 0, %7 %9 = getelementptr inbounds float, ptr %6, i64 %8 + %.not70.not = icmp eq i32 %1, 8 + br i1 %.not70.not, label %.lr.ph.preheader, label %._crit_edge + +.lr.ph.preheader: ; preds = %2 %.06669 = getelementptr inbounds nuw i8, ptr %9, i64 32 - %.not70 = icmp ugt ptr %.06669, %6 - br i1 %.not70, label %._crit_edge, label %.lr.ph + br label %.lr.ph -.lr.ph: ; preds = %2, %.lr.ph - %.06673 = phi ptr [ %.066, %.lr.ph ], [ %.06669, %2 ] - %.072 = phi ptr [ %20, %.lr.ph ], [ %0, %2 ] - %.pn71 = phi ptr [ %.06673, %.lr.ph ], [ %9, %2 ] +.lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph + %.06673 = phi ptr [ %.066, %.lr.ph ], [ %.06669, %.lr.ph.preheader ] + %.072 = phi ptr [ %20, %.lr.ph ], [ %0, %.lr.ph.preheader ] + %.pn71 = phi ptr [ %.06673, %.lr.ph ], [ %9, %.lr.ph.preheader ] tail call void asm sideeffect "", "r,~{dirflag},~{fpsr},~{flags}"(ptr nonnull %.06673) #46, !srcloc !146 %10 = load <4 x float>, ptr %.pn71, align 1 %11 = getelementptr inbounds nuw i8, ptr %.pn71, i64 16 @@ -11006,13 +11009,16 @@ define internal void @_ZL29stbir__fancy_alpha_weight_2chPfi(ptr noundef %0, i32 %7 = sext i32 %1 to i64 %8 = sub nsw i64 0, %7 %9 = getelementptr inbounds float, ptr %6, i64 %8 + %.not.not = icmp eq i32 %1, 8 + br i1 %.not.not, label %.preheader.preheader, label %.loopexit + +.preheader.preheader: ; preds = %2 %10 = getelementptr inbounds nuw i8, ptr %9, i64 32 - %.not = icmp ugt ptr %10, %6 - br i1 %.not, label %.loopexit, label %.preheader + br label %.preheader -.preheader: ; preds = %2, %.preheader - %.180 = phi ptr [ %34, %.preheader ], [ %10, %2 ] - %.1 = phi ptr [ %35, %.preheader ], [ %0, %2 ] +.preheader: ; preds = %.preheader.preheader, %.preheader + %.180 = phi ptr [ %34, %.preheader ], [ %10, %.preheader.preheader ] + %.1 = phi ptr [ %35, %.preheader ], [ %0, %.preheader.preheader ] tail call void asm sideeffect "", "r,~{dirflag},~{fpsr},~{flags}"(ptr nonnull %.180) #46, !srcloc !148 %11 = getelementptr inbounds i8, ptr %.180, i64 -32 %12 = load <4 x float>, ptr %11, align 1 diff --git a/bench/php/optimized/block_pass.ll b/bench/php/optimized/block_pass.ll index 26b1bb16d5d..98a0354b535 100644 --- a/bench/php/optimized/block_pass.ll +++ b/bench/php/optimized/block_pass.ll @@ -654,7 +654,7 @@ zend_arena_alloc.exit.i: ; preds = %138, %136 %.not.i151.i = icmp eq i32 %126, 0 br label %.lr.ph171.i -.loopexit.i: ; preds = %456, %zend_bitset_union.exit.i +.loopexit.i: ; preds = %456 %311 = icmp sgt i32 %327, 1 br i1 %311, label %.lr.ph171.i, label %.outer._crit_edge.i @@ -731,12 +731,11 @@ zend_arena_alloc.exit.i: ; preds = %138, %136 zend_bitset_union.exit.i: ; preds = %.lr.ph.i.i, %340, %339 %.1128173.i = getelementptr inbounds i8, ptr %334, i64 -32 - %.not141174.i = icmp ult ptr %.1128173.i, %332 - br i1 %.not141174.i, label %.loopexit.i, label %.lr.ph177.i + br label %.lr.ph177.i -.lr.ph177.i: ; preds = %zend_bitset_union.exit.i, %456 - %.1128176.i = phi ptr [ %.1128.i, %456 ], [ %.1128173.i, %zend_bitset_union.exit.i ] - %.pn175.i = phi ptr [ %.1128176.i, %456 ], [ %334, %zend_bitset_union.exit.i ] +.lr.ph177.i: ; preds = %456, %zend_bitset_union.exit.i + %.1128176.i = phi ptr [ %.1128.i, %456 ], [ %.1128173.i, %.lr.ph177.preheader.i ] + %.pn175.i = phi ptr [ %.1128176.i, %456 ], [ %334, %.lr.ph177.preheader.i ] %349 = getelementptr inbounds i8, ptr %.pn175.i, i64 -1 %350 = load i8, ptr %349, align 1, !tbaa !99 %351 = and i8 %350, 6 diff --git a/bench/php/optimized/cdf.ll b/bench/php/optimized/cdf.ll index 98b15785400..46885e296d2 100644 --- a/bench/php/optimized/cdf.ll +++ b/bench/php/optimized/cdf.ll @@ -1860,11 +1860,9 @@ cdf_check_stream_offset.exit: ; preds = %10 24: ; preds = %cdf_check_stream_offset.exit %25 = zext nneg i32 %20 to i64 %26 = getelementptr inbounds nuw i8, ptr %13, i64 %25 - %.not.i156 = icmp ult ptr %26, %11 %27 = add nuw nsw i64 %25, %12 %.not12.i158 = icmp ugt i64 %27, %18 - %or.cond225 = select i1 %.not.i156, i1 true, i1 %.not12.i158 - br i1 %or.cond225, label %cdf_check_stream_offset.exit160.thread, label %cdf_check_stream_offset.exit160 + br i1 %.not12.i158, label %cdf_check_stream_offset.exit160.thread, label %cdf_check_stream_offset.exit160 cdf_check_stream_offset.exit160.thread: ; preds = %24 %28 = tail call ptr @__errno_location() #22 diff --git a/bench/php/optimized/zend_opcode.ll b/bench/php/optimized/zend_opcode.ll index 3ad39375496..bf39ecca228 100644 --- a/bench/php/optimized/zend_opcode.ll +++ b/bench/php/optimized/zend_opcode.ll @@ -3342,50 +3342,49 @@ keeps_op1_alive.exit.thread: ; preds = %57, %57, %57, %57, %97 = zext nneg i32 %93 to i64 %98 = getelementptr inbounds nuw %struct._zend_live_range, ptr %96, i64 %97 %.0146 = getelementptr inbounds i8, ptr %98, i64 -12 - %99 = icmp ult ptr %96, %.0146 - br i1 %99, label %.lr.ph151, label %.loopexit - -.lr.ph151: ; preds = %95, %.lr.ph151 - %.0149 = phi ptr [ %.0, %.lr.ph151 ], [ %.0146, %95 ] - %.pn148 = phi ptr [ %.0149, %.lr.ph151 ], [ %98, %95 ] - %.0122147 = phi ptr [ %110, %.lr.ph151 ], [ %96, %95 ] - %100 = load i32, ptr %.0122147, align 4, !tbaa !169 - %101 = load i32, ptr %.0149, align 4, !tbaa !169 - store i32 %101, ptr %.0122147, align 4, !tbaa !169 - store i32 %100, ptr %.0149, align 4, !tbaa !169 - %102 = getelementptr inbounds nuw i8, ptr %.0122147, i64 4 + br label %.lr.ph151 + +.lr.ph151: ; preds = %.lr.ph151.preheader, %.lr.ph151 + %.0149 = phi ptr [ %.0, %.lr.ph151 ], [ %.0146, %.lr.ph151.preheader ] + %.0149 = phi ptr [ %.0149, %.lr.ph151 ], [ %97, %.lr.ph151.preheader ] + %.pn148 = phi ptr [ %108, %.lr.ph151 ], [ %95, %.lr.ph151.preheader ] + %98 = load i32, ptr %.pn148, align 4, !tbaa !169 + %100 = load i32, ptr %.0149, align 4, !tbaa !169 + store i32 %99, ptr %.0122147, align 4, !tbaa !169 + store i32 %98, ptr %.0149, align 4, !tbaa !169 + %100 = getelementptr inbounds nuw i8, ptr %.0122147, i64 4 + %101 = load i32, ptr %100, align 4, !tbaa !171 + %102 = getelementptr inbounds i8, ptr %.pn148, i64 -8 %103 = load i32, ptr %102, align 4, !tbaa !171 - %104 = getelementptr inbounds i8, ptr %.pn148, i64 -8 - %105 = load i32, ptr %104, align 4, !tbaa !171 - store i32 %105, ptr %102, align 4, !tbaa !171 - store i32 %103, ptr %104, align 4, !tbaa !171 - %106 = getelementptr inbounds nuw i8, ptr %.0122147, i64 8 + store i32 %103, ptr %100, align 4, !tbaa !171 + store i32 %101, ptr %102, align 4, !tbaa !171 + %104 = getelementptr inbounds nuw i8, ptr %.0122147, i64 8 + %105 = load i32, ptr %104, align 4, !tbaa !172 + %106 = getelementptr inbounds i8, ptr %.0149, i64 -4 %107 = load i32, ptr %106, align 4, !tbaa !172 - %108 = getelementptr inbounds i8, ptr %.pn148, i64 -4 - %109 = load i32, ptr %108, align 4, !tbaa !172 - store i32 %109, ptr %106, align 4, !tbaa !172 - store i32 %107, ptr %108, align 4, !tbaa !172 - %110 = getelementptr inbounds nuw i8, ptr %.0122147, i64 12 + store i32 %107, ptr %104, align 4, !tbaa !172 + store i32 %105, ptr %106, align 4, !tbaa !172 + %108 = getelementptr inbounds nuw i8, ptr %.0149, i64 12 %.0 = getelementptr inbounds i8, ptr %.0149, i64 -12 - %111 = icmp ult ptr %110, %.0 + %111 = icmp ult ptr %108, %.0 br i1 %111, label %.lr.ph151, label %.lr.ph155 .lr.ph155: ; preds = %.lr.ph151, %123 - %.1153 = phi ptr [ %124, %123 ], [ %96, %.lr.ph151 ] + %.1153 = phi ptr [ %124, %121 ], [ %96, %.lr.ph151 ] %112 = getelementptr inbounds nuw i8, ptr %.1153, i64 4 + %111 = load i32, ptr %110, align 4, !tbaa !171 + %112 = getelementptr inbounds nuw i8, ptr %.1153, i64 16 %113 = load i32, ptr %112, align 4, !tbaa !171 - %114 = getelementptr inbounds nuw i8, ptr %.1153, i64 16 - %115 = load i32, ptr %114, align 4, !tbaa !171 - %116 = icmp ugt i32 %113, %115 - br i1 %116, label %117, label %123 - -117: ; preds = %.lr.ph155 - %118 = ptrtoint ptr %.0146 to i64 - %119 = ptrtoint ptr %.1153 to i64 - %120 = sub i64 %118, %119 - %121 = sdiv exact i64 %120, 12 - %122 = add nsw i64 %121, 1 - tail call void @zend_sort(ptr noundef nonnull %.1153, i64 noundef %122, i64 noundef 12, ptr noundef nonnull @cmp_live_range, ptr noundef nonnull @swap_live_range) #14 + %114 = icmp ugt i32 %111, %113 + br i1 %114, label %115, label %121 + +115:; preds = %.lr.ph155 + %116 = ptrtoint ptr %.0146 to i64 + %117 = ptrtoint ptr %.1153 to i64 + %118 = sub i64 %116, %117 + %119 = sdiv exact i64 %118, 12 + %120 = add nsw i64 %119, 1 + tail call void @zend_sort(ptr noundef nonnull %.1153, i64 noundef %120, i64 noundef 12, ptr noundef nonnull @cmp_live_range, ptr noundef nonnull @swap_live_range) #14 br label %.loopexit 123: ; preds = %.lr.ph155 @@ -3393,7 +3392,7 @@ keeps_op1_alive.exit.thread: ; preds = %57, %57, %57, %57, %125 = icmp ult ptr %124, %.0146 br i1 %125, label %.lr.ph155, label %.loopexit -.loopexit: ; preds = %123, %95, %117, %._crit_edge +.loopexit: ; preds = %123, %115, %._crit_edge br i1 %15, label %126, label %127, !prof !98 126: ; preds = %.loopexit diff --git a/bench/php/optimized/zend_strtod.ll b/bench/php/optimized/zend_strtod.ll index 5935bfcf774..3b2e663131f 100644 --- a/bench/php/optimized/zend_strtod.ll +++ b/bench/php/optimized/zend_strtod.ll @@ -6213,14 +6213,13 @@ declare noalias noundef ptr @malloc(i64 noundef) local_unnamed_addr #8 declare void @zend_error_noreturn(i32 noundef, ptr noundef, ...) local_unnamed_addr #9 ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) uwtable -define internal fastcc double @b2d(ptr noundef readonly captures(address) %0, ptr noundef nonnull writeonly captures(none) initializes((0, 4)) %1) unnamed_addr #10 { - %.ptr = getelementptr inbounds nuw i8, ptr %0, i64 24 +define internal fastcc double @b2d(ptr noundef readonly captures(none) %0, ptr noundef nonnull writeonly captures(none) initializes((0, 4)) %1) unnamed_addr #10 { %3 = getelementptr inbounds nuw i8, ptr %0, i64 20 %4 = load i32, ptr %3, align 4, !tbaa !52 %5 = sext i32 %4 to i64 %.idx = shl nsw i64 %5, 2 - %6 = getelementptr i8, ptr %0, i64 %.idx - %.ptr57 = getelementptr i8, ptr %6, i64 20 + %.add55 = add nsw i64 %.idx, 20 + %.ptr57 = getelementptr inbounds i8, ptr %0, i64 %.add55 %7 = load i32, ptr %.ptr57, align 4, !tbaa !51 %.not.i = icmp ult i32 %7, 65536 %8 = shl nuw i32 %7, 16 @@ -6249,66 +6248,68 @@ define internal fastcc double @b2d(ptr noundef readonly captures(address) %0, pt %16 = sub nuw nsw i32 32, %.020.i store i32 %16, ptr %1, align 4, !tbaa !51 %17 = icmp samesign ult i32 %.020.i, 11 - br i1 %17, label %18, label %31 + br i1 %17, label %18, label %30 18: ; preds = %2 %19 = sub nuw nsw i32 11, %.020.i %20 = lshr i32 %7, %19 - %21 = icmp ugt ptr %.ptr57, %.ptr + %21 = icmp sgt i32 %4, 1 br i1 %21, label %22, label %25 22: ; preds = %18 - %23 = getelementptr i8, ptr %6, i64 16 + %23 = getelementptr inbounds i8, ptr %.ptr58, i64 -4 %24 = load i32, ptr %23, align 4, !tbaa !51 br label %25 25: ; preds = %18, %22 - %26 = phi i32 [ %24, %22 ], [ 0, %18 ] + %26 = phi i32 [ %24, %21 ], [ 0, %17 ] %27 = add nuw nsw i32 %.020.i, 21 %28 = shl i32 %7, %27 %29 = lshr i32 %26, %19 %30 = or i32 %29, %28 br label %53 -31: ; preds = %2 - %32 = icmp sgt i32 %4, 1 - br i1 %32, label %33, label %36 - -33: ; preds = %31 - %34 = getelementptr i8, ptr %6, i64 16 - %35 = load i32, ptr %34, align 4, !tbaa !51 - br label %36 - -36: ; preds = %31, %33 - %.0 = phi ptr [ %34, %33 ], [ %.ptr57, %31 ] - %37 = phi i32 [ %35, %33 ], [ 0, %31 ] - %38 = add nsw i32 %.020.i, -11 - %.not = icmp eq i32 %38, 0 - br i1 %.not, label %53, label %39 - -39: ; preds = %36 - %40 = shl i32 %7, %38 - %41 = sub nuw nsw i32 43, %.020.i - %42 = lshr i32 %37, %41 - %43 = or i32 %40, %42 - %44 = icmp ugt ptr %.0, %.ptr - br i1 %44, label %45, label %48 - -45: ; preds = %39 - %46 = getelementptr inbounds i8, ptr %.0, i64 -4 - %47 = load i32, ptr %46, align 4, !tbaa !51 - br label %48 - -48: ; preds = %39, %45 - %49 = phi i32 [ %47, %45 ], [ 0, %39 ] - %50 = shl i32 %37, %38 - %51 = lshr i32 %49, %41 - %52 = or i32 %51, %50 - br label %53 +48: ; preds = %2 + %31 = icmp sgt i32 %4, 1 + br i1 %31, label %32, label %34 + +32:; preds = %30 + %.add56 = add nuw nsw i64 %.idx, 16 + %.ptr59 = getelementptr inbounds nuw i8, ptr %0, i64 %.add56 + %33 = load i32, ptr %.ptr59, align 4, !tbaa !51 + br label %34 + +34: ; preds = %30, %32 + %.0.idx = phi i64 [ %.add56, %32 ], [ %.add55, %30 ] + %35 = phi i32 [ %33, %32 ], [ 0, %30 ] + %.0.ptr = getelementptr inbounds i8, ptr %0, i64 %.0.idx + %36 = add nsw i32 %.020.i, -11 + %.not = icmp eq i32 %36, 0 + br i1 %.not, label %51, label %37 + +37: ; preds = %34 + %38 = shl i32 %6, %36 + %39 = sub nuw nsw i32 43, %.020.i + %40 = lshr i32 %35, %39 + %41 = or i32 %38, %40 + %42 = icmp sgt i64 %.0.idx, 24 + br i1 %42, label %43, label %46 + +43: ; preds = %37 + %44 = getelementptr inbounds i8, ptr %.0.ptr, i64 -4 + %45 = load i32, ptr %44, align 4, !tbaa !51 + br label %46 + +46: ; preds = %37, %43 + %47 = phi i32 [ %45, %43 ], [ 0, %37 ] + %48 = shl i32 %35, %36 + %49 = lshr i32 %47, %39 + %50 = or i32 %49, %48 + br label %51 -53: ; preds = %36, %48, %25 - %.sink = phi i32 [ %52, %48 ], [ %30, %25 ], [ %37, %36 ] - %.sroa.0.4.insert.shift11.sink.in.in.in = phi i32 [ %43, %48 ], [ %20, %25 ], [ %7, %36 ] +53: ; preds = %34, %46, %25 + %.sink = phi i32 [ %50, %46 ], [ %30, %24 ], [ %35, %34 ] + %.sroa.0.4.insert.shift11.sink.in.in.in = phi i32 [ %41, %46 ], [ %20, %24 ], [ %7, %34 ] %.sroa.0.4.insert.shift11.sink.in.in = or i32 %.sroa.0.4.insert.shift11.sink.in.in.in, 1072693248 %.sroa.0.4.insert.shift11.sink.in = zext i32 %.sroa.0.4.insert.shift11.sink.in.in to i64 %.sroa.0.4.insert.shift11.sink = shl nuw i64 %.sroa.0.4.insert.shift11.sink.in, 32 diff --git a/bench/pocketpy/optimized/pocketpy.ll b/bench/pocketpy/optimized/pocketpy.ll index 674468f2163..3569a1200a8 100644 --- a/bench/pocketpy/optimized/pocketpy.ll +++ b/bench/pocketpy/optimized/pocketpy.ll @@ -25262,26 +25262,27 @@ _ZNSt17_Temporary_bufferIPPN4pkpy8PyObjectES2_EC2ES3_l.exit.i.i21.i: ; preds = % br i1 %35, label %36, label %"_ZZN4pkpy15__init_builtinsEPNS_2VMEENK5$_110clES1_NS_8ArgsViewE.exit" 36: ; preds = %"_ZSt11stable_sortIPPN4pkpy8PyObjectEZZNS0_15__init_builtinsEPNS0_2VMEENK5$_110clES5_NS0_8ArgsViewEEUlS2_S2_E_EvT_S9_T0_.exit.i" - %37 = load ptr, ptr %11, align 8 - %38 = load i32, ptr %5, align 8 - %39 = sext i32 %38 to i64 - %40 = getelementptr inbounds ptr, ptr %37, i64 %39 - %41 = icmp ne i32 %38, 0 - %.012.i.i.i.i = getelementptr inbounds i8, ptr %40, i64 -8 - %42 = icmp ult ptr %37, %.012.i.i.i.i - %or.cond.i.i.i.i = select i1 %41, i1 %42, i1 false - br i1 %or.cond.i.i.i.i, label %.lr.ph.i.i.i.i, label %"_ZZN4pkpy15__init_builtinsEPNS_2VMEENK5$_110clES1_NS_8ArgsViewE.exit" - -.lr.ph.i.i.i.i: ; preds = %36, %.lr.ph.i.i.i.i - %.014.i.i.i.i = phi ptr [ %.0.i.i.i.i, %.lr.ph.i.i.i.i ], [ %.012.i.i.i.i, %36 ] - %.0913.i.i.i.i = phi ptr [ %45, %.lr.ph.i.i.i.i ], [ %37, %36 ] + %37 = load i32, ptr %5, align 8 + %38 = icmp sgt i32 %37, 1 + br i1 %38, label %.lr.ph.i.i.preheader.i.i, label %"_ZZN4pkpy15__init_builtinsEPNS_2VMEENK5$_110clES1_NS_8ArgsViewE.exit" + +.lr.ph.i.i.preheader.i.i:; preds = %36 + %39 = load ptr, ptr %11, align 8 + %40 = zext nneg i32 %37 to i64 + %41 = getelementptr inbounds nuw ptr, ptr %39, i64 %40 + %.012.i.i.i.i = getelementptr inbounds i8, ptr %41, i64 -8 + br label %.lr.ph.i.i.i.i + +.lr.ph.i.i.i.i:; preds = %.lr.ph.i.i.i.i, %.lr.ph.i.i.preheader.i.i + %.0913.i.i.i.i = phi ptr [ %.0.i.i.i.i, %.lr.ph.i.i.i.i ], [ %.012.i.i.i.i, %.lr.ph.i.i.preheader.i.i ] + %.0913.i.i.i.i = phi ptr [ %44, %.lr.ph.i.i.i.i ], [ %39, %.lr.ph.i.i.preheader.i.i ] + %44 = load ptr, ptr %.0913.i.i.i.i, align 8 %43 = load ptr, ptr %.0913.i.i.i.i, align 8 - %44 = load ptr, ptr %.014.i.i.i.i, align 8 - store ptr %44, ptr %.0913.i.i.i.i, align 8 - store ptr %43, ptr %.014.i.i.i.i, align 8 - %45 = getelementptr inbounds nuw i8, ptr %.0913.i.i.i.i, i64 8 + store ptr %43, ptr %.0913.i.i.i.i, align 8 + store ptr %42, ptr %.0913.i.i.i.i, align 8 + %44 = getelementptr inbounds nuw i8, ptr %.0913.i.i.i.i, i64 8 %.0.i.i.i.i = getelementptr inbounds i8, ptr %.014.i.i.i.i, i64 -8 - %46 = icmp ult ptr %45, %.0.i.i.i.i + %46 = icmp ult ptr %44, %.0.i.i.i.i br i1 %46, label %.lr.ph.i.i.i.i, label %"_ZZN4pkpy15__init_builtinsEPNS_2VMEENK5$_110clES1_NS_8ArgsViewE.exit", !llvm.loop !97 "_ZZN4pkpy15__init_builtinsEPNS_2VMEENK5$_110clES1_NS_8ArgsViewE.exit": ; preds = %.lr.ph.i.i.i.i, %"_ZSt11stable_sortIPPN4pkpy8PyObjectEZZNS0_15__init_builtinsEPNS0_2VMEENK5$_110clES5_NS0_8ArgsViewEEUlS2_S2_E_EvT_S9_T0_.exit.i", %36 @@ -25630,7 +25631,7 @@ _ZSt4moveIPPN4pkpy8PyObjectES3_ET0_T_S5_S4_.exit: ; preds = %29, %32 50: ; preds = %47 %51 = getelementptr inbounds i8, ptr %49, i64 -8 %52 = load ptr, ptr %51, align 8 - %.not.i.i.i.i.i59 = icmp eq ptr %51, %.053 + %.not.i.i.i.i.i59 = icmp eq i64 %.076, 1 br i1 %.not.i.i.i.i.i59, label %_ZSt13move_backwardIPPN4pkpy8PyObjectES3_ET0_T_S5_S4_.exit, label %53 53: ; preds = %50 @@ -28810,27 +28811,28 @@ _ZN4pkpy10pod_vectorIPNS_8PyObjectELi4EE9push_backIRS2_EEvOT_.exit.i: ; preds = define internal noundef ptr @"_ZZN4pkpy15__init_builtinsEPNS_2VMEEN5$_1228__invokeES1_NS_8ArgsViewE"(ptr noundef readonly captures(none) %0, ptr readonly captures(none) %1, ptr readnone captures(none) %2) #24 align 2 { %4 = load ptr, ptr %1, align 8 %5 = getelementptr inbounds nuw i8, ptr %4, i64 24 - %6 = getelementptr inbounds nuw i8, ptr %4, i64 32 - %7 = load ptr, ptr %6, align 8 - %8 = load i32, ptr %5, align 8 - %9 = sext i32 %8 to i64 - %10 = getelementptr inbounds ptr, ptr %7, i64 %9 - %11 = icmp ne i32 %8, 0 - %.012.i.i.i = getelementptr inbounds i8, ptr %10, i64 -8 - %12 = icmp ult ptr %7, %.012.i.i.i - %or.cond.i.i.i = select i1 %11, i1 %12, i1 false - br i1 %or.cond.i.i.i, label %.lr.ph.i.i.i, label %"_ZZN4pkpy15__init_builtinsEPNS_2VMEENK5$_122clES1_NS_8ArgsViewE.exit" - -.lr.ph.i.i.i: ; preds = %3, %.lr.ph.i.i.i - %.014.i.i.i = phi ptr [ %.0.i.i.i, %.lr.ph.i.i.i ], [ %.012.i.i.i, %3 ] - %.0913.i.i.i = phi ptr [ %15, %.lr.ph.i.i.i ], [ %7, %3 ] + %6 = load i32, ptr %5, align 8 + %7 = icmp sgt i32 %6, 1 + br i1 %7, label %.lr.ph.i.i.preheader.i, label %"_ZZN4pkpy15__init_builtinsEPNS_2VMEENK5$_122clES1_NS_8ArgsViewE.exit" + +.lr.ph.i.i.preheader.i:; preds = %3 + %8 = getelementptr inbounds nuw i8, ptr %4, i64 32 + %9 = load ptr, ptr %8, align 8 + %10 = zext nneg i32 %6 to i64 + %11 = getelementptr inbounds nuw ptr, ptr %9, i64 %10 + %.012.i.i.i = getelementptr inbounds i8, ptr %11, i64 -8 + br label %.lr.ph.i.i.i + +.lr.ph.i.i.i:; preds = %.lr.ph.i.i.i, %.lr.ph.i.i.preheader.i + %.0913.i.i.i = phi ptr [ %.0.i.i.i, %.lr.ph.i.i.i ], [ %.012.i.i.i, %.lr.ph.i.i.preheader.i ] + %.0913.i.i.i = phi ptr [ %14, %.lr.ph.i.i.i ], [ %9, %.lr.ph.i.i.preheader.i ] + %14 = load ptr, ptr %.0913.i.i.i, align 8 %13 = load ptr, ptr %.0913.i.i.i, align 8 - %14 = load ptr, ptr %.014.i.i.i, align 8 - store ptr %14, ptr %.0913.i.i.i, align 8 - store ptr %13, ptr %.014.i.i.i, align 8 - %15 = getelementptr inbounds nuw i8, ptr %.0913.i.i.i, i64 8 + store ptr %13, ptr %.0913.i.i.i, align 8 + store ptr %12, ptr %.0913.i.i.i, align 8 + %14 = getelementptr inbounds nuw i8, ptr %.0913.i.i.i, i64 8 %.0.i.i.i = getelementptr inbounds i8, ptr %.014.i.i.i, i64 -8 - %16 = icmp ult ptr %15, %.0.i.i.i + %16 = icmp ult ptr %14, %.0.i.i.i br i1 %16, label %.lr.ph.i.i.i, label %"_ZZN4pkpy15__init_builtinsEPNS_2VMEENK5$_122clES1_NS_8ArgsViewE.exit", !llvm.loop !97 "_ZZN4pkpy15__init_builtinsEPNS_2VMEENK5$_122clES1_NS_8ArgsViewE.exit": ; preds = %.lr.ph.i.i.i, %3 diff --git a/bench/pola-rs/optimized/1nb2gyhm0tinqn6ey8ai4djfd.ll b/bench/pola-rs/optimized/1nb2gyhm0tinqn6ey8ai4djfd.ll index baf0dac8c83..663cc21a308 100644 --- a/bench/pola-rs/optimized/1nb2gyhm0tinqn6ey8ai4djfd.ll +++ b/bench/pola-rs/optimized/1nb2gyhm0tinqn6ey8ai4djfd.ll @@ -150844,7 +150844,7 @@ _ZN5alloc6string6String3pop17h1657f0718fd69a66E.exit: ; preds = %93, %49, %45 br i1 %57, label %.thread.i, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hab3997a95e4b44ddE.exit17.i.i" "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hab3997a95e4b44ddE.exit17.i.i": ; preds = %54 - %58 = icmp ne ptr %50, %55 + %58 = icmp ne i64 %51, 1 call void @llvm.assume(i1 %58) %59 = getelementptr inbounds i8, ptr %52, i64 -2 %60 = load i8, ptr %59, align 1, !noalias !14957, !noundef !3 @@ -150859,7 +150859,7 @@ _ZN5alloc6string6String3pop17h1657f0718fd69a66E.exit: ; preds = %93, %49, %45 br label %93 "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hab3997a95e4b44ddE.exit19.i.i": ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hab3997a95e4b44ddE.exit17.i.i" - %65 = icmp ne ptr %50, %59 + %65 = icmp ne i64 %51, 2 call void @llvm.assume(i1 %65) %66 = getelementptr inbounds i8, ptr %52, i64 -3 %67 = load i8, ptr %66, align 1, !noalias !14957, !noundef !3 @@ -150869,7 +150869,7 @@ _ZN5alloc6string6String3pop17h1657f0718fd69a66E.exit: ; preds = %93, %49, %45 br i1 %70, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hab3997a95e4b44ddE.exit21.i.i", label %80 "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hab3997a95e4b44ddE.exit21.i.i": ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hab3997a95e4b44ddE.exit19.i.i" - %71 = icmp ne ptr %50, %66 + %71 = icmp ne i64 %51, 3 call void @llvm.assume(i1 %71) %72 = getelementptr inbounds i8, ptr %52, i64 -4 %73 = load i8, ptr %72, align 1, !noalias !14957, !noundef !3 @@ -151285,7 +151285,7 @@ _ZN5alloc6string6String3pop17h1657f0718fd69a66E.exit: ; preds = %93, %49, %45 br i1 %247, label %254, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hab3997a95e4b44ddE.exit17.i.i.i.i" "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hab3997a95e4b44ddE.exit17.i.i.i.i": ; preds = %244 - %248 = icmp ne ptr %237, %245 + %248 = icmp ne i64 %241, 1 call void @llvm.assume(i1 %248) %249 = getelementptr inbounds i8, ptr %242, i64 -2 %250 = load i8, ptr %249, align 1, !alias.scope !14996, !noalias !14999, !noundef !3 @@ -151299,7 +151299,7 @@ _ZN5alloc6string6String3pop17h1657f0718fd69a66E.exit: ; preds = %93, %49, %45 br label %"_ZN88_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..ReverseSearcher$GT$9next_back17hcaed1488d5f9737aE.exit.i.i" "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hab3997a95e4b44ddE.exit19.i.i.i.i": ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hab3997a95e4b44ddE.exit17.i.i.i.i" - %256 = icmp ne ptr %237, %249 + %256 = icmp ne i64 %241, 2 call void @llvm.assume(i1 %256) %257 = getelementptr inbounds i8, ptr %242, i64 -3 %258 = load i8, ptr %257, align 1, !alias.scope !14996, !noalias !14999, !noundef !3 @@ -151318,7 +151318,7 @@ _ZN5alloc6string6String3pop17h1657f0718fd69a66E.exit: ; preds = %93, %49, %45 br label %"_ZN88_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..ReverseSearcher$GT$9next_back17hcaed1488d5f9737aE.exit.i.i" "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hab3997a95e4b44ddE.exit21.i.i.i.i": ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hab3997a95e4b44ddE.exit19.i.i.i.i" - %267 = icmp ne ptr %237, %257 + %267 = icmp ne i64 %241, 3 call void @llvm.assume(i1 %267) %268 = getelementptr inbounds i8, ptr %242, i64 -4 %269 = load i8, ptr %268, align 1, !alias.scope !14996, !noalias !14999, !noundef !3 @@ -151659,7 +151659,8 @@ define hidden noundef zeroext i1 @_ZN11polars_core3fmt10fmt_struct17hcf0c7c5908d "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hfec0b325b665b161E.exit": ; preds = %13 %17 = getelementptr { i8, [47 x i8] }, ptr %1, i64 %2 %18 = getelementptr i8, ptr %17, i64 -48 - %19 = icmp eq ptr %1, %18 + %.idx = mul i64 %2, 48 + %19 = icmp eq i64 %.idx, 48 br i1 %19, label %_ZN4core3fmt9Formatter9write_fmt17he43344f56d744565E.exit33, label %_ZN4core3fmt9Formatter9write_fmt17he43344f56d744565E.exit28.lr.ph _ZN4core3fmt9Formatter9write_fmt17he43344f56d744565E.exit28.lr.ph: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hfec0b325b665b161E.exit" diff --git a/bench/postgres/optimized/oracle_compat.ll b/bench/postgres/optimized/oracle_compat.ll index 2ed451836de..7c43799d531 100644 --- a/bench/postgres/optimized/oracle_compat.ll +++ b/bench/postgres/optimized/oracle_compat.ll @@ -1137,9 +1137,7 @@ define internal fastcc noundef ptr @dobyteatrim(ptr noundef readonly captures(re %60 = zext nneg i32 %50 to i64 %61 = getelementptr inbounds nuw i8, ptr %59, i64 %60 %62 = getelementptr inbounds i8, ptr %61, i64 -1 - %.not87105 = icmp ule ptr %59, %62 - %or.cond119.not = select i1 %2, i1 %.not87105, i1 false - br i1 %or.cond119.not, label %.lr.ph.preheader, label %.thread + br i1 %2, label %.lr.ph.preheader, label %.thread .lr.ph.preheader: ; preds = %53 %63 = getelementptr i8, ptr %0, i64 %.v @@ -1176,7 +1174,7 @@ define internal fastcc noundef ptr @dobyteatrim(ptr noundef readonly captures(re %75 = icmp slt i32 %.068, 1 %not. = xor i1 %3, true %or.cond6 = select i1 %not., i1 true, i1 %75 - %.not88112 = icmp ugt ptr %59, %62 + %.not88112 = icmp eq i32 %50, 0 %or.cond130 = select i1 %or.cond6, i1 true, i1 %.not88112 br i1 %or.cond130, label %.thread93, label %.lr.ph114 diff --git a/bench/qemu/optimized/fdt_rw.ll b/bench/qemu/optimized/fdt_rw.ll index a337c848cd4..86449b25202 100644 --- a/bench/qemu/optimized/fdt_rw.ll +++ b/bench/qemu/optimized/fdt_rw.ll @@ -811,38 +811,36 @@ define internal fastcc range(i32 -2147483648, 1) i32 @fdt_add_property_(ptr noun %90 = add nuw nsw i64 %86, %70 %91 = zext i32 %89 to i64 %92 = icmp samesign ugt i64 %90, %91 - %93 = icmp ult ptr %88, %0 - %or.cond.i.i = select i1 %92, i1 true, i1 %93 - br i1 %or.cond.i.i, label %fdt_find_add_string_.exit.thread, label %94 - -94: ; preds = %55 - %95 = add i32 %89, %30 - %96 = getelementptr inbounds nuw i8, ptr %0, i64 4 - %97 = load i8, ptr %96, align 1 - %98 = zext i8 %97 to i32 - %99 = shl nuw i32 %98, 24 - %100 = getelementptr inbounds nuw i8, ptr %0, i64 5 - %101 = load i8, ptr %100, align 1 - %102 = zext i8 %101 to i32 - %103 = shl nuw nsw i32 %102, 16 - %104 = or disjoint i32 %103, %99 - %105 = getelementptr inbounds nuw i8, ptr %0, i64 6 - %106 = load i8, ptr %105, align 1 - %107 = zext i8 %106 to i32 - %108 = shl nuw nsw i32 %107, 8 - %109 = or disjoint i32 %104, %108 - %110 = getelementptr inbounds nuw i8, ptr %0, i64 7 - %111 = load i8, ptr %110, align 1 - %112 = zext i8 %111 to i32 - %113 = or disjoint i32 %109, %112 - %114 = icmp ugt i32 %95, %113 - br i1 %114, label %fdt_find_add_string_.exit.thread, label %115 - -115: ; preds = %94 - %116 = sext i32 %30 to i64 - %117 = getelementptr inbounds i8, ptr %88, i64 %116 + br i1 %92, label %fdt_find_add_string_.exit.thread, label %93 + +93: ; preds = %55 + %94 = add i32 %89, %30 + %95 = getelementptr inbounds nuw i8, ptr %0, i64 4 + %96 = load i8, ptr %95, align 1 + %97 = zext i8 %96 to i32 + %98 = shl nuw i32 %97, 24 + %99 = getelementptr inbounds nuw i8, ptr %0, i64 5 + %100 = load i8, ptr %99, align 1 + %101 = zext i8 %100 to i32 + %102 = shl nuw nsw i32 %101, 16 + %103 = or disjoint i32 %102, %98 + %104 = getelementptr inbounds nuw i8, ptr %0, i64 6 + %105 = load i8, ptr %104, align 1 + %106 = zext i8 %105 to i32 + %107 = shl nuw nsw i32 %106, 8 + %108 = or disjoint i32 %103, %107 + %109 = getelementptr inbounds nuw i8, ptr %0, i64 7 + %110 = load i8, ptr %109, align 1 + %111 = zext i8 %110 to i32 + %112 = or disjoint i32 %108, %111 + %113 = icmp ugt i32 %94, %112 + br i1 %113, label %fdt_find_add_string_.exit.thread, label %114 + +114: ; preds = %93 + %115 = sext i32 %30 to i64 + %116 = getelementptr inbounds i8, ptr %88, i64 %115 %gepdiff.i.i = sub nsw i64 %91, %90 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %117, ptr nonnull align 1 %88, i64 %gepdiff.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %116, ptr nonnull align 1 %88, i64 %gepdiff.i.i, i1 false) %118 = load i8, ptr %31, align 1 %119 = zext i8 %118 to i32 %120 = shl nuw i32 %119, 24 @@ -860,11 +858,11 @@ define internal fastcc range(i32 -2147483648, 1) i32 @fdt_add_property_(ptr noun %132 = add i32 %131, %30 %rev.i.i.i.i = tail call noundef i32 @llvm.bswap.i32(i32 %132) store i32 %rev.i.i.i.i, ptr %31, align 4 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %71, ptr nonnull align 1 %2, i64 %116, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %71, ptr nonnull align 1 %2, i64 %115, i1 false) br label %fdt_find_add_string_.exit -fdt_find_add_string_.exit: ; preds = %50, %115 - %.0.i = phi i32 [ %69, %115 ], [ %54, %50 ] +fdt_find_add_string_.exit: ; preds = %50, %114 + %.0.i = phi i32 [ %69, %114 ], [ %54, %50 ] %133 = icmp slt i32 %.0.i, 0 br i1 %133, label %fdt_find_add_string_.exit.thread, label %134 @@ -937,8 +935,8 @@ fdt_find_add_string_.exit: ; preds = %50, %115 store i32 %rev.i29, ptr %184, align 4 br label %fdt_find_add_string_.exit.thread -fdt_find_add_string_.exit.thread: ; preds = %94, %55, %160, %161, %fdt_find_add_string_.exit, %5, %179 - %.0 = phi i32 [ 0, %179 ], [ %6, %5 ], [ %.0.i, %fdt_find_add_string_.exit ], [ %159, %161 ], [ %159, %160 ], [ -3, %94 ], [ -4, %55 ] +fdt_find_add_string_.exit.thread: ; preds = %93, %55, %160, %161, %fdt_find_add_string_.exit, %5, %179 + %.0 = phi i32 [ 0, %178 ], [ %6, %5 ], [ %.0.i, %fdt_find_add_string_.exit ], [ %159, %160 ], [ %159, %159 ], [ -3, %93 ], [ -4, %55 ] ret i32 %.0 } diff --git a/bench/quantlib/optimized/generalizedhullwhite.ll b/bench/quantlib/optimized/generalizedhullwhite.ll index 76ac623e54c..e7bd1c8c374 100644 --- a/bench/quantlib/optimized/generalizedhullwhite.ll +++ b/bench/quantlib/optimized/generalizedhullwhite.ll @@ -11782,15 +11782,16 @@ invoke.cont12: ; preds = %entry, %if.then.i3. %add.ptr.i.i.i = getelementptr inbounds i64, ptr %8, i64 %div.i.i.i %9 = and i64 %1, -9223372036854775745 %cmp.i.i.i = icmp ugt i64 %9, -9223372036854775808 + %storemerge.idx.i.i.i.neg = select i1 %cmp.i.i.i, i64 8, i64 0 %storemerge.idx.i.i.i = select i1 %cmp.i.i.i, i64 -8, i64 0 %storemerge.i.i.i = getelementptr inbounds i8, ptr %add.ptr.i.i.i, i64 %storemerge.idx.i.i.i %10 = trunc i64 %1 to i32 %conv4.i.i.i = and i32 %10, 63 - %cmp.not.i.i.i = icmp eq ptr %8, %storemerge.i.i.i + %add.ptr.i.i.i.idx = shl nsw i64 %div.i.i.i, 3 + %cmp.not.i.i.i = icmp eq i64 %add.ptr.i.i.i.idx, %storemerge.idx.i.i.i.neg br i1 %cmp.not.i.i.i, label %if.else.i.i.i, label %if.end.i.i.i if.end.i.i.i: ; preds = %invoke.cont12 - %add.ptr.i.i.i.idx = shl nsw i64 %div.i.i.i, 3 %sub.ptr.sub.i.i.i = add nsw i64 %storemerge.idx.i.i.i, %add.ptr.i.i.i.idx tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %8, i8 -1, i64 %sub.ptr.sub.i.i.i, i1 false) %cmp9.not.i.i.i = icmp eq i32 %conv4.i.i.i, 0 diff --git a/bench/quantlib/optimized/localvolrndcalculator.ll b/bench/quantlib/optimized/localvolrndcalculator.ll index ed20341e3d9..1523aca1607 100644 --- a/bench/quantlib/optimized/localvolrndcalculator.ll +++ b/bench/quantlib/optimized/localvolrndcalculator.ll @@ -9651,11 +9651,7 @@ invoke.cont164: ; preds = %invoke.cont162 %add.ptr = getelementptr inbounds nuw i8, ptr %185, i64 %add.ptr.idx %incdec.ptr8.i.i = getelementptr inbounds nuw i8, ptr %185, i64 8 %186 = load double, ptr %185, align 8, !tbaa !105 - br i1 %cmp1.not9.i.i, label %invoke.cont173.thread, label %while.body.i.i - -invoke.cont173.thread: ; preds = %invoke.cont164 - %187 = call double @llvm.fabs.f64(double %186) - br label %invoke.cont182 + br i1 %cmp1.not9.i.i, label %invoke.cont195.thread, label %while.body.i.i while.body.i.i: ; preds = %invoke.cont164, %while.body.i.i %188 = phi double [ %190, %while.body.i.i ], [ %186, %invoke.cont164 ] @@ -9685,33 +9681,32 @@ while.body.i.i278: ; preds = %while.body.i.i278, %cmp1.not.i.i284 = icmp eq ptr %incdec.ptr.i.i283, %add.ptr br i1 %cmp1.not.i.i284, label %invoke.cont182.loopexit, label %while.body.i.i278, !llvm.loop !169 +invoke.cont195.thread: ; preds = %invoke.cont164 + %194 = call double @llvm.fabs.f64(double %186) + %195 = load i64, ptr %n_.i1038, align 8, !tbaa !128 + %add.ptr.i2891045 = getelementptr inbounds nuw double, ptr %185, i64 %195 + %add.ptr1921046 = getelementptr inbounds double, ptr %add.ptr.i2891045, i64 %idx.neg + %196 = load double, ptr %add.ptr1921046, align 8, !tbaa !105 + %197 = call double @llvm.fabs.f64(double %196) + br label %invoke.cont205 + invoke.cont182.loopexit: ; preds = %while.body.i.i278 %195 = call double @llvm.fabs.f64(double %191) %.pre1025 = load double, ptr %spec.select.i.i282, align 8, !tbaa !105 %.pre1032 = call double @llvm.fabs.f64(double %.pre1025) - br label %invoke.cont182 - -invoke.cont182: ; preds = %invoke.cont182.loopexit, %invoke.cont173.thread - %.pre-phi = phi double [ %.pre1032, %invoke.cont182.loopexit ], [ %187, %invoke.cont173.thread ] - %196 = phi double [ %195, %invoke.cont182.loopexit ], [ %187, %invoke.cont173.thread ] - %cmp.i286 = fcmp olt double %196, %.pre-phi - %.sroa.speculated752 = select i1 %cmp.i286, double %.pre-phi, double %196 - %197 = load i64, ptr %n_.i1038, align 8, !tbaa !128 - %add.ptr.i289 = getelementptr inbounds nuw double, ptr %185, i64 %197 + %cmp.i286 = fcmp olt double %198, %.pre1032 + %.sroa.speculated752 = select i1 %cmp.i286, double %.pre1032, double %198 + %199 = load i64, ptr %n_.i1038, align 8, !tbaa !128 + %add.ptr.i289 = getelementptr inbounds nuw double, ptr %185, i64 %199 %add.ptr192 = getelementptr inbounds double, ptr %add.ptr.i289, i64 %idx.neg %incdec.ptr8.i.i293 = getelementptr inbounds nuw i8, ptr %add.ptr192, i64 8 - %cmp1.not9.i.i294 = icmp eq ptr %incdec.ptr8.i.i293, %add.ptr.i289 - %198 = load double, ptr %add.ptr192, align 8, !tbaa !105 - br i1 %cmp1.not9.i.i294, label %invoke.cont195.thread, label %while.body.i.i298 - -invoke.cont195.thread: ; preds = %invoke.cont182 - %199 = call double @llvm.fabs.f64(double %198) - br label %invoke.cont205 + %.pre.i.i297 = load double, ptr %add.ptr192, align 8, !tbaa !105 + br label %while.body.i.i298 -while.body.i.i298: ; preds = %invoke.cont182, %while.body.i.i298 - %200 = phi double [ %202, %while.body.i.i298 ], [ %198, %invoke.cont182 ] - %incdec.ptr11.i.i299 = phi ptr [ %incdec.ptr.i.i303, %while.body.i.i298 ], [ %incdec.ptr8.i.i293, %invoke.cont182 ] - %__result.010.i.i300 = phi ptr [ %spec.select.i.i302, %while.body.i.i298 ], [ %add.ptr192, %invoke.cont182 ] +while.body.i.i298: ; preds = %while.body.i.i298, %invoke.cont182.loopexit + %200 = phi double [ %202, %while.body.i.i298 ], [ %.pre.i.i297, %while.body.preheader.i.i296 ] + %incdec.ptr11.i.i299 = phi ptr [ %incdec.ptr.i.i303, %while.body.i.i298 ], [ %incdec.ptr8.i.i293, %while.body.preheader.i.i296 ] + %__result.010.i.i300 = phi ptr [ %spec.select.i.i302, %while.body.i.i298 ], [ %add.ptr192, %while.body.preheader.i.i296 ] %201 = load double, ptr %incdec.ptr11.i.i299, align 8, !tbaa !105 %cmp.i.i.i301 = fcmp olt double %201, %200 %202 = select i1 %cmp.i.i.i301, double %201, double %200 @@ -9725,7 +9720,7 @@ while.body.preheader.i.i315: ; preds = %while.body.i.i298 br label %while.body.i.i317 while.body.i.i317: ; preds = %while.body.i.i317, %while.body.preheader.i.i315 - %204 = phi double [ %206, %while.body.i.i317 ], [ %198, %while.body.preheader.i.i315 ] + %204 = phi double [ %206, %while.body.i.i317 ], [ %.pre.i.i297, %while.body.preheader.i.i315 ] %incdec.ptr11.i.i318 = phi ptr [ %incdec.ptr.i.i322, %while.body.i.i317 ], [ %incdec.ptr8.i.i293, %while.body.preheader.i.i315 ] %__result.010.i.i319 = phi ptr [ %spec.select.i.i321, %while.body.i.i317 ], [ %add.ptr192, %while.body.preheader.i.i315 ] %205 = load double, ptr %incdec.ptr11.i.i318, align 8, !tbaa !105 @@ -9743,12 +9738,13 @@ invoke.cont205.loopexit: ; preds = %while.body.i.i317 br label %invoke.cont205 invoke.cont205: ; preds = %invoke.cont205.loopexit, %invoke.cont195.thread - %.pre-phi1034 = phi double [ %.pre1033, %invoke.cont205.loopexit ], [ %199, %invoke.cont195.thread ] - %208 = phi double [ %207, %invoke.cont205.loopexit ], [ %199, %invoke.cont195.thread ] + %.pre-phi1034 = phi double [ %.sroa.speculated752, %invoke.cont205.loopexit ], [ %194, %invoke.cont195.thread ] + %208 = phi double [ %.pre1033, %invoke.cont205.loopexit ], [ %197, %invoke.cont195.thread ] + %208 = phi double [ %207, %invoke.cont205.loopexit ], [ %197, %invoke.cont195.thread ] %cmp.i326 = fcmp olt double %208, %.pre-phi1034 %.sroa.speculated = select i1 %cmp.i326, double %.pre-phi1034, double %208 - %cmp.i328 = fcmp olt double %.sroa.speculated752, %.sroa.speculated - %.sroa.speculated750 = select i1 %cmp.i328, double %.sroa.speculated, double %.sroa.speculated752 + %cmp.i328 = fcmp olt double %.sroa.speculated7521048, %.sroa.speculated + %.sroa.speculated750 = select i1 %cmp.i328, double %.sroa.speculated, double %.sroa.speculated7521048 %209 = load double, ptr %localVolProbEps_, align 8, !tbaa !69 %cmp215 = fcmp ogt double %.sroa.speculated750, %209 br i1 %cmp215, label %if.then216, label %if.end413 @@ -9985,7 +9981,7 @@ invoke.cont267: ; preds = %.noexc375, %invoke. %call272 = call double @sqrt(double noundef %mul271) #30, !tbaa !106 %mul273 = fmul double %div263, %call272 %239 = load double, ptr %localVolProbEps_, align 8, !tbaa !69 - %cmp275 = fcmp ogt double %.sroa.speculated752, %239 + %cmp275 = fcmp ogt double %.sroa.speculated7521048, %239 %sub277 = fsub double %sUpperBound.0930, %sLowerBound.0931 %neg279 = fneg double %mul273 %240 = call double @llvm.fmuladd.f64(double %neg279, double %sub277, double %sLowerBound.0931) diff --git a/bench/quickjs/optimized/cutils.ll b/bench/quickjs/optimized/cutils.ll index 032da4a9941..791966d30d1 100644 --- a/bench/quickjs/optimized/cutils.ll +++ b/bench/quickjs/optimized/cutils.ll @@ -21,8 +21,8 @@ define dso_local void @pstrcpy(ptr noundef writeonly captures(address) %0, i32 n %7 = getelementptr inbounds i8, ptr %6, i64 -1 %8 = load i8, ptr %2, align 1, !tbaa !7 %9 = icmp ne i8 %8, 0 - %.not12 = icmp ult ptr %0, %7 - %or.cond13 = select i1 %9, i1 %.not12, i1 false + %.not12 = icmp ne i32 %1, 1 + %or.cond13 = and i1 %9, %.not12 br i1 %or.cond13, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %.preheader, %.lr.ph @@ -74,8 +74,8 @@ define dso_local noundef ptr @pstrcat(ptr noundef returned captures(address, ret %14 = getelementptr inbounds i8, ptr %13, i64 -1 %15 = load i8, ptr %2, align 1, !tbaa !7 %16 = icmp ne i8 %15, 0 - %.not12.i = icmp ult ptr %11, %14 - %or.cond13.i = select i1 %16, i1 %.not12.i, i1 false + %.not12.i = icmp ne i32 %8, 1 + %or.cond13.i = and i1 %.not12.i, %16 br i1 %or.cond13.i, label %.lr.ph.i, label %._crit_edge.i .lr.ph.i: ; preds = %.preheader.i, %.lr.ph.i diff --git a/bench/quickjs/optimized/quickjs.ll b/bench/quickjs/optimized/quickjs.ll index 5f3a064b425..b8bc1bc7686 100644 --- a/bench/quickjs/optimized/quickjs.ll +++ b/bench/quickjs/optimized/quickjs.ll @@ -213566,7 +213566,7 @@ js_typed_array_get_length_internal.exit: ; preds = %get_typed_array.exi %25 = add nsw i64 %24, -21 %26 = getelementptr inbounds [11 x i8], ptr @typed_array_size_log2, i64 0, i64 %25 %27 = load i8, ptr %26, align 1, !tbaa !46 - switch i8 %27, label %68 [ + switch i8 %27, label %64 [ i8 0, label %28 i8 1, label %38 i8 2, label %48 @@ -213574,87 +213574,99 @@ js_typed_array_get_length_internal.exit: ; preds = %get_typed_array.exi ] 28: ; preds = %23 + %.not83 = icmp eq i32 %20, 1 + br i1 %.not83, label %JS_DupValue.exit, label %.lr.ph79.preheader + +.lr.ph79.preheader: ; preds = %28 %29 = getelementptr inbounds nuw i8, ptr %7, i64 56 %30 = load ptr, ptr %29, align 8, !tbaa !46 %31 = zext nneg i32 %20 to i64 %32 = getelementptr inbounds nuw i8, ptr %30, i64 %31 %.05476 = getelementptr inbounds i8, ptr %32, i64 -1 - %33 = icmp ult ptr %30, %.05476 - br i1 %33, label %.lr.ph79, label %JS_DupValue.exit - -.lr.ph79: ; preds = %28, %.lr.ph79 - %.05478 = phi ptr [ %.054, %.lr.ph79 ], [ %.05476, %28 ] - %.05577 = phi ptr [ %36, %.lr.ph79 ], [ %30, %28 ] - %34 = load i8, ptr %.05577, align 1, !tbaa !46 - %35 = load i8, ptr %.05478, align 1, !tbaa !46 - %36 = getelementptr inbounds nuw i8, ptr %.05577, i64 1 - store i8 %35, ptr %.05577, align 1, !tbaa !46 - store i8 %34, ptr %.05478, align 1, !tbaa !46 + br label %.lr.ph79 + +.lr.ph79: ; preds = %.lr.ph79.preheader, %.lr.ph79 + %.05478 = phi ptr [ %.054, %.lr.ph79 ], [ %.05476, %.lr.ph79.preheader ] + %.05478 = phi ptr [ %35, %.lr.ph79 ], [ %30, %.lr.ph79.preheader ] + %33 = load i8, ptr %.05478, align 1, !tbaa !46 + %34 = load i8, ptr %.05478, align 1, !tbaa !46 + %35 = getelementptr inbounds nuw i8, ptr %.05478, i64 1 + store i8 %34, ptr %.05577, align 1, !tbaa !46 + store i8 %33, ptr %.05478, align 1, !tbaa !46 %.054 = getelementptr inbounds i8, ptr %.05478, i64 -1 - %37 = icmp ult ptr %36, %.054 + %37 = icmp ult ptr %35, %.054 br i1 %37, label %.lr.ph79, label %JS_DupValue.exit, !llvm.loop !1302 38: ; preds = %23 - %39 = getelementptr inbounds nuw i8, ptr %7, i64 56 - %40 = load ptr, ptr %39, align 8, !tbaa !46 - %41 = zext nneg i32 %20 to i64 - %42 = getelementptr inbounds nuw i16, ptr %40, i64 %41 - %.05272 = getelementptr inbounds i8, ptr %42, i64 -2 - %43 = icmp ult ptr %40, %.05272 - br i1 %43, label %.lr.ph75, label %JS_DupValue.exit - -.lr.ph75: ; preds = %38, %.lr.ph75 - %.05274 = phi ptr [ %.052, %.lr.ph75 ], [ %.05272, %38 ] - %.05373 = phi ptr [ %46, %.lr.ph75 ], [ %40, %38 ] - %44 = load i16, ptr %.05373, align 2, !tbaa !253 - %45 = load i16, ptr %.05274, align 2, !tbaa !253 - %46 = getelementptr inbounds nuw i8, ptr %.05373, i64 2 - store i16 %45, ptr %.05373, align 2, !tbaa !253 - store i16 %44, ptr %.05274, align 2, !tbaa !253 + %.not82 = icmp eq i32 %20, 1 + br i1 %.not82, label %JS_DupValue.exit, label %.lr.ph75.preheader + +.lr.ph75.preheader:; preds = %37 + %.05272 = getelementptr inbounds nuw i8, ptr %7, i64 56 + %39 = load ptr, ptr %.05272, align 8, !tbaa !46 + %40 = zext nneg i32 %20 to i64 + %41 = getelementptr inbounds nuw i16, ptr %39, i64 %40 + %.05272 = getelementptr inbounds i8, ptr %41, i64 -2 + br label %.lr.ph75 + +.lr.ph75:; preds = %.lr.ph75.preheader, %.lr.ph75 + %.05274 = phi ptr [ %.052, %.lr.ph75 ], [ %.05272, %.lr.ph75.preheader ] + %.05373 = phi ptr [ %44, %.lr.ph75 ], [ %39, %.lr.ph75.preheader ] + %42 = load i16, ptr %.05373, align 2, !tbaa !253 + %43 = load i16, ptr %.05274, align 2, !tbaa !253 + %44 = getelementptr inbounds nuw i8, ptr %.05373, i64 2 + store i16 %43, ptr %.05373, align 2, !tbaa !253 + store i16 %42, ptr %.05274, align 2, !tbaa !253 %.052 = getelementptr inbounds i8, ptr %.05274, i64 -2 - %47 = icmp ult ptr %46, %.052 + %47 = icmp ult ptr %44, %.052 br i1 %47, label %.lr.ph75, label %JS_DupValue.exit, !llvm.loop !1303 48: ; preds = %23 - %49 = getelementptr inbounds nuw i8, ptr %7, i64 56 - %50 = load ptr, ptr %49, align 8, !tbaa !46 - %51 = zext nneg i32 %20 to i64 - %52 = getelementptr inbounds nuw i32, ptr %50, i64 %51 - %.05068 = getelementptr inbounds i8, ptr %52, i64 -4 - %53 = icmp ult ptr %50, %.05068 - br i1 %53, label %.lr.ph71, label %JS_DupValue.exit - -.lr.ph71: ; preds = %48, %.lr.ph71 - %.05070 = phi ptr [ %.050, %.lr.ph71 ], [ %.05068, %48 ] - %.05169 = phi ptr [ %56, %.lr.ph71 ], [ %50, %48 ] - %54 = load i32, ptr %.05169, align 4, !tbaa !67 - %55 = load i32, ptr %.05070, align 4, !tbaa !67 - %56 = getelementptr inbounds nuw i8, ptr %.05169, i64 4 - store i32 %55, ptr %.05169, align 4, !tbaa !67 - store i32 %54, ptr %.05070, align 4, !tbaa !67 + %.not81 = icmp eq i32 %20, 1 + br i1 %.not81, label %JS_DupValue.exit, label %.lr.ph71.preheader + +.lr.ph71.preheader:; preds = %46 + %.05068 = getelementptr inbounds nuw i8, ptr %7, i64 56 + %48 = load ptr, ptr %.05068, align 8, !tbaa !46 + %49 = zext nneg i32 %20 to i64 + %50 = getelementptr inbounds nuw i32, ptr %48, i64 %49 + %.05068 = getelementptr inbounds i8, ptr %50, i64 -4 + br label %.lr.ph71 + +.lr.ph71:; preds = %.lr.ph71.preheader, %.lr.ph71 + %.05070 = phi ptr [ %.050, %.lr.ph71 ], [ %.05068, %.lr.ph71.preheader ] + %.05169 = phi ptr [ %53, %.lr.ph71 ], [ %48, %.lr.ph71.preheader ] + %51 = load i32, ptr %.05169, align 4, !tbaa !67 + %52 = load i32, ptr %.05070, align 4, !tbaa !67 + %53 = getelementptr inbounds nuw i8, ptr %.05169, i64 4 + store i32 %52, ptr %.05169, align 4, !tbaa !67 + store i32 %51, ptr %.05070, align 4, !tbaa !67 %.050 = getelementptr inbounds i8, ptr %.05070, i64 -4 - %57 = icmp ult ptr %56, %.050 + %57 = icmp ult ptr %53, %.050 br i1 %57, label %.lr.ph71, label %JS_DupValue.exit, !llvm.loop !1304 58: ; preds = %23 - %59 = getelementptr inbounds nuw i8, ptr %7, i64 56 - %60 = load ptr, ptr %59, align 8, !tbaa !46 - %61 = zext nneg i32 %20 to i64 - %62 = getelementptr inbounds nuw i64, ptr %60, i64 %61 - %.065 = getelementptr inbounds i8, ptr %62, i64 -8 - %63 = icmp ult ptr %60, %.065 - br i1 %63, label %.lr.ph, label %JS_DupValue.exit - -.lr.ph: ; preds = %58, %.lr.ph - %.067 = phi ptr [ %.0, %.lr.ph ], [ %.065, %58 ] - %.04966 = phi ptr [ %66, %.lr.ph ], [ %60, %58 ] - %64 = load i64, ptr %.04966, align 8, !tbaa !45 - %65 = load i64, ptr %.067, align 8, !tbaa !45 - %66 = getelementptr inbounds nuw i8, ptr %.04966, i64 8 - store i64 %65, ptr %.04966, align 8, !tbaa !45 - store i64 %64, ptr %.067, align 8, !tbaa !45 + %.not80 = icmp eq i32 %20, 1 + br i1 %.not80, label %JS_DupValue.exit, label %.lr.ph.preheader + +.lr.ph.preheader:; preds = %55 + %.065 = getelementptr inbounds nuw i8, ptr %7, i64 56 + %57 = load ptr, ptr %56, align 8, !tbaa !46 + %58 = zext nneg i32 %20 to i64 + %59 = getelementptr inbounds nuw i64, ptr %57, i64 %58 + %.065 = getelementptr inbounds i8, ptr %59, i64 -8 + br label %.lr.ph + +.lr.ph:; preds = %.lr.ph.preheader, %.lr.ph + %.067 = phi ptr [ %.0, %.lr.ph ], [ %.065, %.lr.ph.preheader ] + %.04966 = phi ptr [ %62, %.lr.ph ], [ %57, %.lr.ph.preheader ] + %60 = load i64, ptr %.04966, align 8, !tbaa !45 + %61 = load i64, ptr %.067, align 8, !tbaa !45 + %62 = getelementptr inbounds nuw i8, ptr %.04966, i64 8 + store i64 %61, ptr %.04966, align 8, !tbaa !45 + store i64 %60, ptr %.067, align 8, !tbaa !45 %.0 = getelementptr inbounds i8, ptr %.067, i64 -8 - %67 = icmp ult ptr %66, %.0 + %67 = icmp ult ptr %62, %.0 br i1 %67, label %.lr.ph, label %JS_DupValue.exit, !llvm.loop !1305 68: ; preds = %23 diff --git a/bench/raylib/optimized/rtextures.ll b/bench/raylib/optimized/rtextures.ll index 7aef3e0d322..c74fd4c2125 100644 --- a/bench/raylib/optimized/rtextures.ll +++ b/bench/raylib/optimized/rtextures.ll @@ -57284,13 +57284,13 @@ stbir__get_extents.exit: ; preds = %._crit_edge.thread. .loopexit.i: ; preds = %.preheader313.i, %.preheader311.i, %.preheader309.i, %.preheader307.i, %.preheader305.i, %.preheader303.i, %.preheader301.i, %.preheader299.i, %.preheader297.i, %.preheader295.i, %.preheader293.i, %.preheader291.i, %._crit_edge.i381, %stbir__get_extents.exit %598 = getelementptr inbounds float, ptr %481, i64 %.pre356.i store float 8.888000e+03, ptr %598, align 4 - %599 = sext i32 %479 to i64 - %600 = getelementptr inbounds %struct.stbir__contributors, ptr %480, i64 %599 - %.0271329.i = getelementptr inbounds i8, ptr %600, i64 -8 - %.not283330.i = icmp ult ptr %.0271329.i, %480 + %.not283330.i = icmp slt i32 %479, 1 br i1 %.not283330.i, label %stbir__pack_coefficients.exit, label %.lr.ph335.i .lr.ph335.i: ; preds = %.loopexit.i + %599 = zext nneg i32 %479 to i64 + %600 = getelementptr inbounds nuw %struct.stbir__contributors, ptr %480, i64 %599 + %.0271329.i = getelementptr inbounds i8, ptr %600, i64 -8 %601 = add nsw i32 %479, -1 %602 = mul nsw i32 %484, %601 %603 = sext i32 %602 to i64 @@ -57870,14 +57870,17 @@ define internal void @stbir__fancy_alpha_weight_4ch(ptr noundef %0, i32 noundef %7 = sext i32 %1 to i64 %8 = sub nsw i64 0, %7 %9 = getelementptr inbounds float, ptr %6, i64 %8 + %.not44.not = icmp eq i32 %1, 8 + br i1 %.not44.not, label %.lr.ph.preheader, label %._crit_edge + +.lr.ph.preheader: ; preds = %2 %.04043 = getelementptr inbounds nuw i8, ptr %9, i64 32 - %.not44 = icmp ugt ptr %.04043, %6 - br i1 %.not44, label %._crit_edge, label %.lr.ph + br label %.lr.ph -.lr.ph: ; preds = %2, %.lr.ph - %.04047 = phi ptr [ %.040, %.lr.ph ], [ %.04043, %2 ] - %.046 = phi ptr [ %20, %.lr.ph ], [ %0, %2 ] - %.pn45 = phi ptr [ %.04047, %.lr.ph ], [ %9, %2 ] +.lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph + %.04047 = phi ptr [ %.040, %.lr.ph ], [ %.04043, %.lr.ph.preheader ] + %.046 = phi ptr [ %20, %.lr.ph ], [ %0, %.lr.ph.preheader ] + %.pn45 = phi ptr [ %.04047, %.lr.ph ], [ %9, %.lr.ph.preheader ] tail call void asm sideeffect "", "r,~{dirflag},~{fpsr},~{flags}"(ptr nonnull %.04047) #54, !srcloc !349 %10 = load <4 x float>, ptr %.pn45, align 1 %11 = getelementptr inbounds nuw i8, ptr %.pn45, i64 16 @@ -57927,13 +57930,16 @@ define internal void @stbir__fancy_alpha_weight_2ch(ptr noundef %0, i32 noundef %7 = sext i32 %1 to i64 %8 = sub nsw i64 0, %7 %9 = getelementptr inbounds float, ptr %6, i64 %8 + %.not.not = icmp eq i32 %1, 8 + br i1 %.not.not, label %.preheader.preheader, label %.loopexit + +.preheader.preheader: ; preds = %2 %10 = getelementptr inbounds nuw i8, ptr %9, i64 32 - %.not = icmp ugt ptr %10, %6 - br i1 %.not, label %.loopexit, label %.preheader + br label %.preheader -.preheader: ; preds = %2, %.preheader - %.150 = phi ptr [ %34, %.preheader ], [ %10, %2 ] - %.1 = phi ptr [ %35, %.preheader ], [ %0, %2 ] +.preheader: ; preds = %.preheader.preheader, %.preheader + %.150 = phi ptr [ %34, %.preheader ], [ %10, %.preheader.preheader ] + %.1 = phi ptr [ %35, %.preheader ], [ %0, %.preheader.preheader ] tail call void asm sideeffect "", "r,~{dirflag},~{fpsr},~{flags}"(ptr nonnull %.150) #54, !srcloc !352 %11 = getelementptr inbounds i8, ptr %.150, i64 -32 %12 = load <4 x float>, ptr %11, align 1 @@ -58243,7 +58249,7 @@ define internal void @stbir__simple_flip_3ch(ptr noundef %0, i32 noundef %1) #22 %3 = sext i32 %1 to i64 %4 = getelementptr inbounds float, ptr %0, i64 %3 %5 = getelementptr inbounds i8, ptr %4, i64 -96 - %.not52 = icmp ugt ptr %0, %5 + %.not52 = icmp slt i32 %1, 24 br i1 %.not52, label %.preheader, label %.lr.ph .preheader: ; preds = %.lr.ph, %2 diff --git a/bench/re2/optimized/prog.ll b/bench/re2/optimized/prog.ll index 053deb11a10..e7610f77604 100644 --- a/bench/re2/optimized/prog.ll +++ b/bench/re2/optimized/prog.ll @@ -3139,15 +3139,15 @@ for.inc.i28.i: ; preds = %while.body.i.i31.i, br i1 %cmp1.not.i30.i, label %invoke.cont20, label %for.body.i20.i, !llvm.loop !86 invoke.cont20: ; preds = %for.inc.i28.i, %_ZSt25__unguarded_linear_insertIPN3re211SparseArrayIiE10IndexValueEN9__gnu_cxx5__ops14_Val_comp_iterIPFbRKS3_S9_EEEEvT_T0_.exit.i10.i, %invoke.cont14, %if.else.i - %36 = load ptr, ptr %16, align 8 - %37 = load i32, ptr %sorted, align 8 - %idx.ext.i78 = sext i32 %37 to i64 - %add.ptr.i79 = getelementptr inbounds %"class.re2::SparseArray::IndexValue", ptr %36, i64 %idx.ext.i78 - %i.0271 = getelementptr inbounds i8, ptr %add.ptr.i79, i64 -8 - %cmp.not272 = icmp eq ptr %i.0271, %36 + %36 = load i32, ptr %sorted, align 8 + %cmp.not272 = icmp eq i32 %36, 1 br i1 %cmp.not272, label %for.end, label %for.body.lr.ph for.body.lr.ph: ; preds = %invoke.cont20 + %idx.ext.i78 = sext i32 %36 to i64 + %37 = load ptr, ptr %16, align 8 + %add.ptr.i79 = getelementptr inbounds %"class.re2::SparseArray::IndexValue", ptr %37, i64 %idx.ext.i78 + %i.0271 = getelementptr inbounds i8, ptr %add.ptr.i79, i64 -8 %start_unanchored_.i = getelementptr inbounds nuw i8, ptr %this, i64 12 %start_.i = getelementptr inbounds nuw i8, ptr %this, i64 8 br label %for.body @@ -3194,7 +3194,7 @@ lpad15.loopexit.split-lp: ; preds = %if.then.i.i70 for.inc: ; preds = %for.body, %if.then35 %i.0 = getelementptr inbounds i8, ptr %i.0273, i64 -8 - %cmp.not = icmp eq ptr %i.0, %36 + %cmp.not = icmp eq ptr %i.0, %37 br i1 %cmp.not, label %for.end, label %for.body, !llvm.loop !88 for.end: ; preds = %for.inc, %invoke.cont20 diff --git a/bench/redis/optimized/sds.ll b/bench/redis/optimized/sds.ll index 7a6810c00d2..5e771e0ac62 100644 --- a/bench/redis/optimized/sds.ll +++ b/bench/redis/optimized/sds.ll @@ -3005,7 +3005,7 @@ define dso_local noundef ptr @sdstrim(ptr noundef returned %0, ptr noundef reado %5 = load i8, ptr %4, align 1, !tbaa !13 %6 = zext i8 %5 to i32 %7 = and i32 %6, 7 - switch i32 %7, label %sdslen.exit [ + switch i32 %7, label %.critedge2.thread [ i32 0, label %8 i32 1, label %11 i32 2, label %15 @@ -3041,11 +3041,11 @@ define dso_local noundef ptr @sdstrim(ptr noundef returned %0, ptr noundef reado %25 = load i64, ptr %24, align 1, !tbaa !11 br label %sdslen.exit -sdslen.exit: ; preds = %2, %8, %11, %15, %19, %23 - %.0.i = phi i64 [ %10, %8 ], [ %14, %11 ], [ %18, %15 ], [ %22, %19 ], [ %25, %23 ], [ 0, %2 ] +sdslen.exit: ; preds = %8, %11, %15, %19, %23 + %.0.i = phi i64 [ %10, %8 ], [ %14, %11 ], [ %18, %15 ], [ %22, %19 ], [ %25, %23 ] %26 = getelementptr inbounds nuw i8, ptr %0, i64 %.0.i %27 = getelementptr inbounds i8, ptr %26, i64 -1 - %.not31 = icmp ugt ptr %0, %27 + %.not31 = icmp slt i64 %.0.i, 1 br i1 %.not31, label %.critedge, label %.lr.ph .lr.ph: ; preds = %sdslen.exit, %31 @@ -3099,11 +3099,12 @@ sdslen.exit: ; preds = %2, %8, %11, %15, %1 br i1 %.not30, label %45, label %44 44: ; preds = %.critedge2 - tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %0, ptr nonnull align 1 %.0.lcssa, i64 %43, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %0, ptr align 1 %.0.lcssa, i64 %43, i1 false) br label %45 -45: ; preds = %44, %.critedge2 - %46 = getelementptr inbounds nuw i8, ptr %0, i64 %43 +45: ; preds = %2, %44, %.critedge2 + %45 = phi i64 [ %43, %44 ], [ %43, %.critedge2 ], [ 0, %2 ] + %46 = getelementptr inbounds nuw i8, ptr %0, i64 %45 store i8 0, ptr %46, align 1, !tbaa !13 %47 = load i8, ptr %4, align 1, !tbaa !13 %48 = and i8 %47, 7 @@ -3116,32 +3117,32 @@ sdslen.exit: ; preds = %2, %8, %11, %15, %1 ] 49: ; preds = %45 - %.tr.i = trunc i64 %43 to i8 + %.tr.i = trunc i64 %45 to i8 %50 = shl i8 %.tr.i, 3 store i8 %50, ptr %4, align 1, !tbaa !13 br label %sdssetlen.exit 51: ; preds = %45 - %52 = trunc i64 %43 to i8 + %52 = trunc i64 %45 to i8 %53 = getelementptr inbounds i8, ptr %0, i64 -3 store i8 %52, ptr %53, align 1, !tbaa !13 br label %sdssetlen.exit 54: ; preds = %45 - %55 = trunc i64 %43 to i16 + %55 = trunc i64 %45 to i16 %56 = getelementptr inbounds i8, ptr %0, i64 -5 store i16 %55, ptr %56, align 1, !tbaa !14 br label %sdssetlen.exit 57: ; preds = %45 - %58 = trunc i64 %43 to i32 + %58 = trunc i64 %45 to i32 %59 = getelementptr inbounds i8, ptr %0, i64 -9 store i32 %58, ptr %59, align 1, !tbaa !16 br label %sdssetlen.exit 60: ; preds = %45 %61 = getelementptr inbounds i8, ptr %0, i64 -17 - store i64 %43, ptr %61, align 1, !tbaa !11 + store i64 %45, ptr %61, align 1, !tbaa !11 br label %sdssetlen.exit sdssetlen.exit: ; preds = %45, %49, %51, %54, %57, %60 diff --git a/bench/regex-rs/optimized/1pxsmct4oxs5dlep.ll b/bench/regex-rs/optimized/1pxsmct4oxs5dlep.ll index 62d8a563a00..75ea245ec9f 100644 --- a/bench/regex-rs/optimized/1pxsmct4oxs5dlep.ll +++ b/bench/regex-rs/optimized/1pxsmct4oxs5dlep.ll @@ -6856,7 +6856,7 @@ _ZN12regex_syntax3hir12ClassUnicode5empty17h26d5991a0702163dE.exit: ; preds = %3 "_ZN12regex_syntax7unicode4ages3imp28_$u7b$$u7b$closure$u7d$$u7d$17hbae9bc061ef2f1e1E.exit.thread.i.i.i": ; preds = %"_ZN12regex_syntax7unicode4ages3imp28_$u7b$$u7b$closure$u7d$$u7d$17hbae9bc061ef2f1e1E.exit.i.i.i", %402 %405 = add nuw nsw i64 %.013.i.i.i, 1 %406 = icmp eq i64 %.add.i.i, 800 - br i1 %406, label %457, label %402 + br i1 %406, label %454, label %402 "_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h126adc2fec64e17fE.exit111": ; preds = %388 %bcmp.i110 = call i32 @bcmp(ptr noundef nonnull readonly align 1 dereferenceable(22) %256, ptr noundef nonnull dereferenceable(22) @anon.ee024262027212e939cdd9996d089225.2957, i64 22), !alias.scope !480 @@ -6975,7 +6975,7 @@ _ZN12regex_syntax7unicode16script_extension17h2b5084373c71ae02E.exit: ; preds = br label %_ZN12regex_syntax7unicode13bool_property17h38fb7c071a346580E.exit 446: ; preds = %473, %447 - %.pn = phi { ptr, i32 } [ %448, %447 ], [ %474, %473 ] + %.pn = phi { ptr, i32 } [ %448, %447 ], [ %474, %470 ] invoke void @"_ZN4core3ptr52drop_in_place$LT$regex_syntax..hir..ClassUnicode$GT$17hf1b21b419c386512E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %30) #24 to label %common.resume unwind label %481 @@ -6988,19 +6988,14 @@ _ZN12regex_syntax7unicode16script_extension17h2b5084373c71ae02E.exit: ; preds = %450 = icmp samesign ult i64 %.013.i.i.i, 25 call void @llvm.assume(i1 %450) %451 = getelementptr inbounds nuw { { ptr, i64 }, { ptr, i64 } }, ptr @anon.ee024262027212e939cdd9996d089225.4146, i64 %.013.i.i.i - %452 = getelementptr inbounds nuw i8, ptr %451, i64 32 - %453 = icmp eq ptr %452, @anon.ee024262027212e939cdd9996d089225.4146 - br i1 %453, label %._crit_edge, label %.lr.ph - -.lr.ph: ; preds = %449 - %454 = getelementptr inbounds nuw i8, ptr %3, i64 8 - %455 = getelementptr inbounds nuw i8, ptr %3, i64 16 - %456 = getelementptr inbounds nuw i8, ptr %29, i64 16 - br label %466 - -457: ; preds = %"_ZN12regex_syntax7unicode4ages3imp28_$u7b$$u7b$closure$u7d$$u7d$17hbae9bc061ef2f1e1E.exit.thread.i.i.i" - %458 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i8 1, ptr %458, align 8 + %452 = getelementptr inbounds nuw i8, ptr %3, i64 8 + %452 = getelementptr inbounds nuw i8, ptr %3, i64 16 + %453 = getelementptr inbounds nuw i8, ptr %29, i64 16 + br label %463 + +454: ; preds = %"_ZN12regex_syntax7unicode4ages3imp28_$u7b$$u7b$closure$u7d$$u7d$17hbae9bc061ef2f1e1E.exit.thread.i.i.i" + %455 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i8 1, ptr %455, align 8 store i64 -9223372036854775808, ptr %0, align 8 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4), !noalias !525 call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h97b42d779da7da40E.llvm.15241997999693184539"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %30) @@ -7009,7 +7004,7 @@ _ZN12regex_syntax7unicode16script_extension17h2b5084373c71ae02E.exit: ; preds = %.not.i.i.i.i.i134 = icmp eq i64 %460, 0 br i1 %.not.i.i.i.i.i134, label %"_ZN4core3ptr52drop_in_place$LT$regex_syntax..hir..ClassUnicode$GT$17hf1b21b419c386512E.exit", label %461 -461: ; preds = %457 +461: ; preds = %454 %462 = load ptr, ptr %4, align 8, !noalias !525, !nonnull !5, !noundef !5 %463 = getelementptr inbounds nuw i8, ptr %4, i64 16 %464 = load i64, ptr %463, align 8, !noalias !525, !noundef !5 @@ -7017,18 +7012,18 @@ _ZN12regex_syntax7unicode16script_extension17h2b5084373c71ae02E.exit: ; preds = call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.15241997999693184539"(ptr noalias noundef nonnull readonly align 1 %465, ptr noundef nonnull %462, i64 noundef %460, i64 noundef %464) br label %"_ZN4core3ptr52drop_in_place$LT$regex_syntax..hir..ClassUnicode$GT$17hf1b21b419c386512E.exit" -"_ZN4core3ptr52drop_in_place$LT$regex_syntax..hir..ClassUnicode$GT$17hf1b21b419c386512E.exit": ; preds = %457, %461 +"_ZN4core3ptr52drop_in_place$LT$regex_syntax..hir..ClassUnicode$GT$17hf1b21b419c386512E.exit": ; preds = %454, %461 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4), !noalias !525 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) br label %_ZN12regex_syntax7unicode13bool_property17h38fb7c071a346580E.exit -._crit_edge: ; preds = %479, %449 +._crit_edge: ; preds = %479 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %30, i64 32, i1 false) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) br label %_ZN12regex_syntax7unicode13bool_property17h38fb7c071a346580E.exit 466: ; preds = %.lr.ph, %479 - %.sroa.0140.0200 = phi ptr [ @anon.ee024262027212e939cdd9996d089225.4146, %.lr.ph ], [ %467, %479 ] + %.sroa.0140.0200 = phi ptr [ @anon.ee024262027212e939cdd9996d089225.4146, %.lr.ph ], [ %467, %476 ] %467 = getelementptr inbounds nuw i8, ptr %.sroa.0140.0200, i64 32 %468 = getelementptr inbounds nuw i8, ptr %.sroa.0140.0200, i64 16 %469 = load ptr, ptr %468, align 8, !alias.scope !536, !noalias !541, !nonnull !5, !align !79, !noundef !5 @@ -7036,7 +7031,7 @@ _ZN12regex_syntax7unicode16script_extension17h2b5084373c71ae02E.exit: ; preds = %471 = load i64, ptr %470, align 8, !alias.scope !536, !noalias !541, !noundef !5 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %29) invoke void @_ZN12regex_syntax7unicode9hir_class17h04398be39c67686bE.llvm.16611923841924356903(ptr noalias noundef nonnull sret({ { { { i64, ptr }, i64 }, i8, [7 x i8] } }) align 8 captures(none) dereferenceable(32) %29, ptr noalias noundef nonnull readonly align 4 %469, i64 noundef %471) - to label %472 unwind label %447 + to label %469 unwind label %447 _ZN12regex_syntax7unicode13bool_property17h38fb7c071a346580E.exit: ; preds = %291, %_ZN12regex_syntax7unicode13bool_property3imp17h4d562adbad544adaE.exit.i, %263, %258, %"_ZN4core3ptr52drop_in_place$LT$regex_syntax..hir..ClassUnicode$GT$17hf1b21b419c386512E.exit", %_ZN12regex_syntax7unicode6gencat17h7a12ab031675e367E.exit, %_ZN12regex_syntax7unicode6script17h97903f736ff68eb1E.exit, %_ZN12regex_syntax7unicode16script_extension17h2b5084373c71ae02E.exit, %438, %441, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h126adc2fec64e17fE.exit133.thread", %444, %._crit_edge ret void @@ -7057,15 +7052,15 @@ _ZN12regex_syntax3hir12ClassUnicode5union17h95371bea8651628dE.exit: ; preds = %4 to label %.noexc unwind label %447 .noexc: ; preds = %_ZN12regex_syntax3hir12ClassUnicode5union17h95371bea8651628dE.exit - %475 = load i64, ptr %454, align 8, !range !127, !noalias !544, !noundef !5 + %475 = load i64, ptr %451, align 8, !range !127, !noalias !544, !noundef !5 %.not.i.i.i.i.i135 = icmp eq i64 %475, 0 br i1 %.not.i.i.i.i.i135, label %479, label %476 476: ; preds = %.noexc %477 = load ptr, ptr %3, align 8, !noalias !544, !nonnull !5, !noundef !5 - %478 = load i64, ptr %455, align 8, !noalias !544, !noundef !5 - invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.15241997999693184539"(ptr noalias noundef nonnull readonly align 1 %456, ptr noundef nonnull %477, i64 noundef %475, i64 noundef %478) - to label %479 unwind label %447 + %478 = load i64, ptr %452, align 8, !noalias !544, !noundef !5 + invoke void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.15241997999693184539"(ptr noalias noundef nonnull readonly align 1 %453, ptr noundef nonnull %477, i64 noundef %475, i64 noundef %478) + to label %476 unwind label %447 479: ; preds = %.noexc, %476 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3), !noalias !544 diff --git a/bench/ruff-rs/optimized/4a0sesc153a050u04do7llz00.ll b/bench/ruff-rs/optimized/4a0sesc153a050u04do7llz00.ll index caeba2c9d65..b31cd190bfa 100644 --- a/bench/ruff-rs/optimized/4a0sesc153a050u04do7llz00.ll +++ b/bench/ruff-rs/optimized/4a0sesc153a050u04do7llz00.ll @@ -55137,33 +55137,29 @@ define internal fastcc void @_ZN11ruff_linter5rules26flake8_implicit_str_concat5 br i1 %23, label %26, label %24 24: ; preds = %21 - %25 = icmp eq ptr %.sroa.019.0, %17 - br i1 %25, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit.thread106", label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit77" + %24 = getelementptr inbounds i8, ptr %16, i64 -2 + %25 = load i8, ptr %24, align 1, !noundef !3 + %26 = and i8 %25, -8 + %27 = icmp eq i8 %26, 48 + br i1 %27, label %35, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit.thread106" 26: ; preds = %21 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) %27 = add i64 %.sroa.2.0, -2 %28 = icmp eq i64 %27, 0 - br i1 %28, label %61, label %29 + br i1 %28, label %61, label %31 -29: ; preds = %26 - %30 = getelementptr inbounds nuw i8, ptr %.sroa.019.0, i64 %27 - %31 = load i8, ptr %30, align 1, !alias.scope !6624, !noundef !3 - %32 = icmp sgt i8 %31, -65 - br i1 %32, label %61, label %68 - -"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit77": ; preds = %24 - %33 = getelementptr inbounds i8, ptr %16, i64 -2 - %34 = load i8, ptr %33, align 1, !noundef !3 - %35 = and i8 %34, -8 - %36 = icmp eq i8 %35, 48 - br i1 %36, label %37, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit.thread106" +"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit77": ; preds = %28 + %33 = getelementptr inbounds nuw i8, ptr %.sroa.019.0, i64 %29 + %34 = load i8, ptr %33, align 1, !alias.scope !6624, !noundef !3 + %34 = icmp sgt i8 %34, -65 + br i1 %34, label %59, label %68 37: ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit77" call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) store ptr %.sroa.019.0, ptr %9, align 8 %38 = getelementptr inbounds nuw i8, ptr %9, i64 8 - store ptr %33, ptr %38, align 8 + store ptr %24, ptr %38, align 8 %39 = call noundef zeroext i1 @_ZN11ruff_linter5rules26flake8_implicit_str_concat5rules8implicit31has_odd_consecutive_backslashes17h36561b1299747590E(ptr noalias noundef nonnull align 8 dereferenceable(16) %9) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) br i1 %39, label %40, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit.thread106" @@ -55193,7 +55189,7 @@ define internal fastcc void @_ZN11ruff_linter5rules26flake8_implicit_str_concat5 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %6) call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) - %50 = zext nneg i8 %34 to i32 + %50 = zext nneg i8 %25 to i32 store i32 %50, ptr %5, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) %51 = zext nneg i8 %18 to i32 @@ -55248,12 +55244,12 @@ define internal fastcc void @_ZN11ruff_linter5rules26flake8_implicit_str_concat5 br label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit.thread106" 60: ; preds = %69, %58 - %.sink = phi ptr [ %12, %69 ], [ %7, %58 ] - %.pn = phi { ptr, i32 } [ %70, %69 ], [ %59, %58 ] + %.sink = phi ptr [ %12, %67 ], [ %7, %56 ] + %.pn = phi { ptr, i32 } [ %70, %67 ], [ %59, %56 ] call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %.sink, i64 24, i1 false) resume { ptr, i32 } %.pn -61: ; preds = %29, %26 +61: ; preds = %31, %26 store ptr %.sroa.019.0, ptr %13, align 8 %62 = getelementptr inbounds nuw i8, ptr %13, i64 8 store i64 %27, ptr %62, align 8 @@ -55291,7 +55287,7 @@ define internal fastcc void @_ZN11ruff_linter5rules26flake8_implicit_str_concat5 invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17hba79b7f9900aea78E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %0) to label %"_ZN4core3ptr50drop_in_place$LT$alloc..borrow..Cow$LT$str$GT$$GT$17h2aa5d16e69a31c39E.exit83" unwind label %69 -68: ; preds = %29 +68: ; preds = %31 call void @_ZN4core3str16slice_error_fail17h9782f1ca63c1749dE(ptr noalias noundef nonnull readonly align 1 %.sroa.019.0, i64 noundef %.sroa.2.0, i64 noundef 0, i64 noundef %27, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.0de5ee8f4a9046f07397637c35d34c13.549) #30 unreachable @@ -55306,7 +55302,7 @@ define internal fastcc void @_ZN11ruff_linter5rules26flake8_implicit_str_concat5 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) br label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit.thread106" -"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit.thread106": ; preds = %37, %24, %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit", %"_ZN4core3ptr50drop_in_place$LT$alloc..borrow..Cow$LT$str$GT$$GT$17h2aa5d16e69a31c39E.exit", %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit77", %"_ZN4core3ptr50drop_in_place$LT$alloc..borrow..Cow$LT$str$GT$$GT$17h2aa5d16e69a31c39E.exit83", %1 +"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit.thread106": ; preds = %37, %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit", %"_ZN4core3ptr50drop_in_place$LT$alloc..borrow..Cow$LT$str$GT$$GT$17h2aa5d16e69a31c39E.exit", %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit77", %"_ZN4core3ptr50drop_in_place$LT$alloc..borrow..Cow$LT$str$GT$$GT$17h2aa5d16e69a31c39E.exit83", %1 ret void } @@ -61299,7 +61295,7 @@ _ZN4core4iter6traits8iterator8Iterator10advance_by17h28467f46fcc1ed39E.exit: ; p br i1 %114, label %121, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit17.i.i.i.i" "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit17.i.i.i.i": ; preds = %111 - %115 = icmp ne ptr %103, %112 + %115 = icmp ne i64 %104, 1 call void @llvm.assume(i1 %115) %116 = getelementptr inbounds i8, ptr %108, i64 -2 %117 = load i8, ptr %116, align 1, !alias.scope !7189, !noalias !7203, !noundef !3 @@ -61313,7 +61309,7 @@ _ZN4core4iter6traits8iterator8Iterator10advance_by17h28467f46fcc1ed39E.exit: ; p br label %148 "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit19.i.i.i.i": ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit17.i.i.i.i" - %123 = icmp ne ptr %103, %116 + %123 = icmp ne i64 %104, 2 call void @llvm.assume(i1 %123) %124 = getelementptr inbounds i8, ptr %108, i64 -3 %125 = load i8, ptr %124, align 1, !alias.scope !7189, !noalias !7203, !noundef !3 @@ -61331,7 +61327,7 @@ _ZN4core4iter6traits8iterator8Iterator10advance_by17h28467f46fcc1ed39E.exit: ; p br label %148 "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit21.i.i.i.i": ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit19.i.i.i.i" - %134 = icmp ne ptr %103, %124 + %134 = icmp ne i64 %104, 3 call void @llvm.assume(i1 %134) %135 = getelementptr inbounds i8, ptr %108, i64 -4 %136 = load i8, ptr %135, align 1, !alias.scope !7189, !noalias !7203, !noundef !3 @@ -61410,7 +61406,7 @@ _ZN4core3str7pattern7Pattern12is_suffix_of17h59ae7b525c0b45d6E.exit: ; preds = % br i1 %163, label %170, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit17.i.i.i.i50" "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit17.i.i.i.i50": ; preds = %160 - %164 = icmp ne ptr %103, %161 + %164 = icmp ne i64 %104, 1 call void @llvm.assume(i1 %164) %165 = getelementptr inbounds i8, ptr %108, i64 -2 store ptr %165, ptr %.sroa.4.0..sroa_idx.i.i, align 8, !alias.scope !7244, !noalias !7241 @@ -61425,7 +61421,7 @@ _ZN4core3str7pattern7Pattern12is_suffix_of17h59ae7b525c0b45d6E.exit: ; preds = % br label %197 "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit19.i.i.i.i59": ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit17.i.i.i.i50" - %172 = icmp ne ptr %103, %165 + %172 = icmp ne i64 %104, 2 call void @llvm.assume(i1 %172) %173 = getelementptr inbounds i8, ptr %108, i64 -3 store ptr %173, ptr %.sroa.4.0..sroa_idx.i.i, align 8, !alias.scope !7247, !noalias !7241 @@ -61444,7 +61440,7 @@ _ZN4core3str7pattern7Pattern12is_suffix_of17h59ae7b525c0b45d6E.exit: ; preds = % br label %197 "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit21.i.i.i.i61": ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit19.i.i.i.i59" - %183 = icmp ne ptr %103, %173 + %183 = icmp ne i64 %104, 3 call void @llvm.assume(i1 %183) %184 = getelementptr inbounds i8, ptr %108, i64 -4 store ptr %184, ptr %.sroa.4.0..sroa_idx.i.i, align 8, !alias.scope !7250, !noalias !7241 @@ -76842,7 +76838,7 @@ _ZN11ruff_linter7locator7Locator5slice17h4a87bdd24d049517E.exit.i: ; preds = %13 br i1 %150, label %157, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit17.i.i.i.i.i" "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit17.i.i.i.i.i": ; preds = %147 - %151 = icmp ne ptr %140, %148 + %151 = icmp ne i64 %141, 1 call void @llvm.assume(i1 %151) %152 = getelementptr inbounds i8, ptr %142, i64 -2 store ptr %152, ptr %.sroa.4.0..sroa_idx.i.i.i, align 8, !alias.scope !8704, !noalias !8701 @@ -76857,7 +76853,7 @@ _ZN11ruff_linter7locator7Locator5slice17h4a87bdd24d049517E.exit.i: ; preds = %13 br label %184 "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit19.i.i.i.i.i": ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit17.i.i.i.i.i" - %159 = icmp ne ptr %140, %152 + %159 = icmp ne i64 %141, 2 call void @llvm.assume(i1 %159) %160 = getelementptr inbounds i8, ptr %142, i64 -3 store ptr %160, ptr %.sroa.4.0..sroa_idx.i.i.i, align 8, !alias.scope !8707, !noalias !8701 @@ -76876,7 +76872,7 @@ _ZN11ruff_linter7locator7Locator5slice17h4a87bdd24d049517E.exit.i: ; preds = %13 br label %184 "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit21.i.i.i.i.i": ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit19.i.i.i.i.i" - %170 = icmp ne ptr %140, %160 + %170 = icmp ne i64 %141, 3 call void @llvm.assume(i1 %170) %171 = getelementptr inbounds i8, ptr %142, i64 -4 store ptr %171, ptr %.sroa.4.0..sroa_idx.i.i.i, align 8, !alias.scope !8710, !noalias !8701 diff --git a/bench/sdl/optimized/SDL_qsort.ll b/bench/sdl/optimized/SDL_qsort.ll index 2fab4979b2a..7c4e61d196a 100644 --- a/bench/sdl/optimized/SDL_qsort.ll +++ b/bench/sdl/optimized/SDL_qsort.ll @@ -36,20 +36,20 @@ define hidden void @SDL_qsort_r_REAL(ptr noundef %0, i64 noundef %1, i64 noundef br label %.outer221 .outer221: ; preds = %.outer221.backedge, %19 - %.0241.i.ph = phi ptr [ %20, %19 ], [ %.0241.i.ph.be, %.outer221.backedge ] - %.0236.i.ph = phi ptr [ %0, %19 ], [ %.0236.i.ph.be, %.outer221.backedge ] - %.0221.i.ph = phi i32 [ 0, %19 ], [ %.0221.i.ph.be, %.outer221.backedge ] + %.0241.i.ph = phi ptr [ %20, %19 ], [ %.0241.i.ph.be, %.outer220.backedge ] + %.0236.i.ph = phi ptr [ %0, %19 ], [ %.0236.i.ph.be, %.outer220.backedge ] + %.0221.i.ph = phi i32 [ 0, %19 ], [ %.0221.i.ph.be, %.outer220.backedge ] %23 = ptrtoint ptr %.0241.i.ph to i64 %24 = getelementptr inbounds i8, ptr %.0241.i.ph, i64 %22 br label %.outer222 .outer222: ; preds = %.outer221, %123 - %.0236.i.ph223 = phi ptr [ %.0236.i.ph, %.outer221 ], [ %.4.i, %123 ] - %.0221.i.ph224 = phi i32 [ %.0221.i.ph, %.outer221 ], [ %126, %123 ] + %.0236.i.ph223 = phi ptr [ %.0236.i.ph, %.outer220 ], [ %.4.i, %123 ] + %.0221.i.ph224 = phi i32 [ %.0221.i.ph, %.outer220 ], [ %126, %123 ] br label %25 25: ; preds = %.outer222, %106 - %.0236.i = phi ptr [ %.4.i, %106 ], [ %.0236.i.ph223, %.outer222 ] + %.0236.i = phi ptr [ %.4.i, %106 ], [ %.0236.i.ph223, %.outer221 ] %26 = ptrtoint ptr %.0236.i to i64 %27 = sub i64 %23, %26 %28 = udiv i64 %27, %2 @@ -401,20 +401,20 @@ qsort_r_nonaligned.exit: ; preds = %._crit_edge315.thre br label %.outer198 .outer198: ; preds = %.outer198.backedge, %162 - %.0241.i20.ph = phi ptr [ %163, %162 ], [ %.0241.i20.ph.be, %.outer198.backedge ] - %.0236.i21.ph = phi ptr [ %0, %162 ], [ %.0236.i21.ph.be, %.outer198.backedge ] - %.0221.i22.ph = phi i32 [ 0, %162 ], [ %.0221.i22.ph.be, %.outer198.backedge ] + %.0241.i20.ph = phi ptr [ %163, %162 ], [ %.0241.i20.ph.be, %.outer197.backedge ] + %.0236.i21.ph = phi ptr [ %0, %162 ], [ %.0236.i21.ph.be, %.outer197.backedge ] + %.0221.i22.ph = phi i32 [ 0, %162 ], [ %.0221.i22.ph.be, %.outer197.backedge ] %166 = ptrtoint ptr %.0241.i20.ph to i64 %167 = getelementptr inbounds i8, ptr %.0241.i20.ph, i64 %165 br label %.outer199 .outer199: ; preds = %.outer198, %266 - %.0236.i21.ph200 = phi ptr [ %.0236.i21.ph, %.outer198 ], [ %.4.i43, %266 ] - %.0221.i22.ph201 = phi i32 [ %.0221.i22.ph, %.outer198 ], [ %269, %266 ] + %.0236.i21.ph200 = phi ptr [ %.0236.i21.ph, %.outer197 ], [ %.4.i43, %266 ] + %.0221.i22.ph201 = phi i32 [ %.0221.i22.ph, %.outer197 ], [ %269, %266 ] br label %168 168: ; preds = %.outer199, %249 - %.0236.i21 = phi ptr [ %.4.i43, %249 ], [ %.0236.i21.ph200, %.outer199 ] + %.0236.i21 = phi ptr [ %.4.i43, %249 ], [ %.0236.i21.ph200, %.outer198 ] %169 = ptrtoint ptr %.0236.i21 to i64 %170 = sub i64 %166, %169 %171 = udiv i64 %170, %2 @@ -773,7 +773,7 @@ qsort_r_aligned.exit: ; preds = %._crit_edge315.thre br label %309 309: ; preds = %.outer179, %368 - %.0174.i = phi ptr [ %.4.i115, %368 ], [ %.0174.i.ph180, %.outer179 ] + %.0174.i = phi ptr [ %.4.i115, %368 ], [ %.0174.i.ph180, %.outer178 ] %310 = ptrtoint ptr %.0174.i to i64 %311 = sub i64 %307, %310 %312 = lshr i64 %311, 1 @@ -862,7 +862,7 @@ qsort_r_aligned.exit: ; preds = %._crit_edge315.thre br i1 %350, label %348, label %.preheader.i111, !llvm.loop !30 .preheader.i111: ; preds = %348, %.preheader.i111 - %.3169.i = phi ptr [ %354, %.preheader.i111 ], [ %.2168.i, %348 ] + %.3169.i = phi ptr [ %354, %.preheader.i110 ], [ %.2168.i, %348 ] %352 = tail call i32 %3(ptr noundef %4, ptr noundef nonnull %300, ptr noundef %.3169.i) #5 %353 = icmp slt i32 %352, 0 %354 = getelementptr inbounds i8, ptr %.3169.i, i64 -4 @@ -953,12 +953,11 @@ qsort_r_aligned.exit: ; preds = %._crit_edge315.thre %393 = shl nuw nsw i64 %392, 2 %394 = getelementptr i8, ptr %0, i64 %393 %.7173200.i = getelementptr i8, ptr %394, i64 -4 - %.not185201.i = icmp eq ptr %.7173200.i, %0 - br i1 %.not185201.i, label %._crit_edge.thread.i, label %.lr.ph.i107 + br label %.lr.ph.i106 -.lr.ph.i107: ; preds = %.thread.i106, %.lr.ph.i107 - %.7173203.i = phi ptr [ %.7173.i, %.lr.ph.i107 ], [ %.7173200.i, %.thread.i106 ] - %.7202.i = phi ptr [ %spec.select.i108, %.lr.ph.i107 ], [ %0, %.thread.i106 ] +.lr.ph.i107: ; preds = %.lr.ph.i106, %.lr.ph.preheader.i + %.7173203.i = phi ptr [ %.7173.i, %.lr.ph.i106 ], [ %.7173200.i, %.lr.ph.preheader.i ] + %.7202.i = phi ptr [ %spec.select.i108, %.lr.ph.i106 ], [ %0, %.lr.ph.preheader.i ] %395 = tail call i32 %3(ptr noundef %4, ptr noundef %.7202.i, ptr noundef %.7173203.i) #5 %396 = icmp sgt i32 %395, 0 %spec.select.i108 = select i1 %396, ptr %.7173203.i, ptr %.7202.i @@ -977,7 +976,7 @@ qsort_r_aligned.exit: ; preds = %._crit_edge315.thre store i32 %398, ptr %0, align 4 br label %._crit_edge.thread.i -._crit_edge.thread.i: ; preds = %397, %._crit_edge.i109, %.thread.i106 +._crit_edge.thread.i: ; preds = %397, %._crit_edge.i109 %400 = getelementptr inbounds nuw i8, ptr %0, i64 %301 %.not188214.i = icmp samesign eq i64 %301, 4 br i1 %.not188214.i, label %qsort_r_words.exit, label %.lr.ph218.preheader.i @@ -2185,7 +2184,7 @@ pivot_big.exit: ; preds = %.sink.split134.i, % br i1 %526, label %524, label %.preheader.i111.i, !llvm.loop !30 .preheader.i111.i: ; preds = %524, %.preheader.i111.i - %.3169.i.i = phi ptr [ %530, %.preheader.i111.i ], [ %.2168.i.i, %524 ] + %.3169.i.i = phi ptr [ %530, %.preheader.i110.i ], [ %.2168.i.i, %524 ] %528 = tail call i32 %3(ptr noundef nonnull %417, ptr noundef %.3169.i.i) #5 %529 = icmp slt i32 %528, 0 %530 = getelementptr inbounds i8, ptr %.3169.i.i, i64 -4 @@ -2276,12 +2275,11 @@ pivot_big.exit: ; preds = %.sink.split134.i, % %569 = shl nuw nsw i64 %568, 2 %570 = getelementptr i8, ptr %0, i64 %569 %.7173200.i.i = getelementptr i8, ptr %570, i64 -4 - %.not185201.i.i = icmp eq ptr %.7173200.i.i, %0 - br i1 %.not185201.i.i, label %._crit_edge.thread.i.i, label %.lr.ph.i107.i + br label %.lr.ph.i106.i -.lr.ph.i107.i: ; preds = %.thread.i106.i, %.lr.ph.i107.i - %.7173203.i.i = phi ptr [ %.7173.i.i, %.lr.ph.i107.i ], [ %.7173200.i.i, %.thread.i106.i ] - %.7202.i.i = phi ptr [ %spec.select.i108.i, %.lr.ph.i107.i ], [ %0, %.thread.i106.i ] +.lr.ph.i107.i: ; preds = %.lr.ph.i106.i, %.lr.ph.preheader.i.i + %.7173203.i.i = phi ptr [ %.7173.i.i, %.lr.ph.i106.i ], [ %.7173200.i.i, %.lr.ph.preheader.i.i ] + %.7202.i.i = phi ptr [ %spec.select.i108.i, %.lr.ph.i106.i ], [ %0, %.lr.ph.preheader.i.i ] %571 = tail call i32 %3(ptr noundef %.7202.i.i, ptr noundef %.7173203.i.i) #5 %572 = icmp sgt i32 %571, 0 %spec.select.i108.i = select i1 %572, ptr %.7173203.i.i, ptr %.7202.i.i @@ -2300,7 +2298,7 @@ pivot_big.exit: ; preds = %.sink.split134.i, % store i32 %574, ptr %0, align 4 br label %._crit_edge.thread.i.i -._crit_edge.thread.i.i: ; preds = %573, %._crit_edge.i109.i, %.thread.i106.i +._crit_edge.thread.i.i: ; preds = %573, %._crit_edge.i109.i %576 = getelementptr inbounds nuw i8, ptr %0, i64 %418 %.not188214.i.i = icmp samesign eq i64 %418, 4 br i1 %.not188214.i.i, label %qsort_r_words.exit.i, label %.lr.ph218.preheader.i.i diff --git a/bench/snappy/optimized/snappy.ll b/bench/snappy/optimized/snappy.ll index 9eb9108d812..a5696fa8f06 100644 --- a/bench/snappy/optimized/snappy.ll +++ b/bench/snappy/optimized/snappy.ll @@ -4253,8 +4253,8 @@ define linkonce_odr dso_local noundef zeroext i1 @_ZN6snappy17SnappyIOVecWriter1 br i1 %.not53101, label %.lr.ph102, label %.split.us .split.us: ; preds = %127, %.lr.ph87.split - %.pre.i = phi i64 [ %.pre.i135, %.lr.ph87.split ], [ %130, %127 ] - %.promoted86112127 = phi i64 [ %.promoted86112, %.lr.ph87.split ], [ %130, %127 ] + %.pre.i = phi i64 [ %.pre.i135, %.lr.ph87.split ], [ %130, %126 ] + %.promoted86112127 = phi i64 [ %.promoted86112, %.lr.ph87.split ], [ %130, %126 ] %29 = getelementptr inbounds nuw i8, ptr %.140.ph107, i64 8 %30 = load i64, ptr %29, align 8, !tbaa !66 %31 = sub i64 %30, %.235.ph109 @@ -4323,8 +4323,8 @@ _ZN6snappy17SnappyIOVecWriter13AppendNoCheckEPKcm.exit: ; preds = %36, %44, %.sp br label %.outer .lr.ph102: ; preds = %.lr.ph87.split, %127 - %55 = phi i64 [ %130, %127 ], [ %.promoted86112, %.lr.ph87.split ] - %56 = phi ptr [ %59, %127 ], [ %.promoted111, %.lr.ph87.split ] + %55 = phi i64 [ %130, %126 ], [ %.promoted86112, %.lr.ph87.split ] + %56 = phi ptr [ %59, %126 ], [ %.promoted111, %.lr.ph87.split ] %57 = icmp eq i64 %55, 0 br i1 %57, label %58, label %.split93.us @@ -4347,8 +4347,7 @@ _ZN6snappy17SnappyIOVecWriter13AppendNoCheckEPKcm.exit: ; preds = %36, %44, %.sp br i1 %68, label %69, label %77 69: ; preds = %.split93.us - %70 = getelementptr inbounds i8, ptr %64, i64 -11 - %.not.i58 = icmp ugt ptr %62, %70 + %.not.i58 = icmp slt i64 %55, 11 br i1 %.not.i58, label %.lr.ph.i.i, label %.lr.ph.i59, !prof !23 .lr.ph.i59: ; preds = %69, %.lr.ph.i59 @@ -4438,14 +4437,14 @@ _ZN6snappy17SnappyIOVecWriter13AppendNoCheckEPKcm.exit: ; preds = %36, %44, %.sp br i1 %104, label %.lr.ph90.i, label %._crit_edge91.i ._crit_edge91.i: ; preds = %.lr.ph90.i, %102 - %.2.lcssa.i = phi ptr [ %.056.i, %102 ], [ %107, %.lr.ph90.i ] - %.053.lcssa.i = phi ptr [ %61, %102 ], [ %108, %.lr.ph90.i ] + %.2.lcssa.i = phi ptr [ %.056.i, %101 ], [ %107, %.lr.ph90.i ] + %.053.lcssa.i = phi ptr [ %61, %101 ], [ %108, %.lr.ph90.i ] %.not69.i = icmp ult ptr %.2.lcssa.i, %63 br i1 %.not69.i, label %110, label %.thread69 .lr.ph90.i: ; preds = %102, %.lr.ph90.i - %.05388.i = phi ptr [ %108, %.lr.ph90.i ], [ %61, %102 ] - %.287.i = phi ptr [ %107, %.lr.ph90.i ], [ %.056.i, %102 ] + %.05388.i = phi ptr [ %108, %.lr.ph90.i ], [ %61, %101 ] + %.287.i = phi ptr [ %107, %.lr.ph90.i ], [ %.056.i, %101 ] %.val4.i77.i = load i64, ptr %.05388.i, align 1 store i64 %.val4.i77.i, ptr %.287.i, align 1 %105 = getelementptr inbounds nuw i8, ptr %.05388.i, i64 8 @@ -4470,14 +4469,14 @@ _ZN6snappy17SnappyIOVecWriter13AppendNoCheckEPKcm.exit: ; preds = %36, %44, %.sp br label %115 115: ; preds = %112, %110 - %.3.i = phi ptr [ %114, %112 ], [ %.2.lcssa.i, %110 ] - %.154.i = phi ptr [ %113, %112 ], [ %.053.lcssa.i, %110 ] + %.3.i = phi ptr [ %114, %111 ], [ %.2.lcssa.i, %109 ] + %.154.i = phi ptr [ %113, %111 ], [ %.053.lcssa.i, %109 ] %116 = icmp ult ptr %.3.i, %63 br i1 %116, label %.lr.ph.i79.i, label %.thread69 .lr.ph.i79.i: ; preds = %115, %.lr.ph.i79.i - %.08.i80.i = phi ptr [ %117, %.lr.ph.i79.i ], [ %.154.i, %115 ] - %.057.i81.i = phi ptr [ %119, %.lr.ph.i79.i ], [ %.3.i, %115 ] + %.08.i80.i = phi ptr [ %117, %.lr.ph.i79.i ], [ %.154.i, %114 ] + %.057.i81.i = phi ptr [ %119, %.lr.ph.i79.i ], [ %.3.i, %114 ] %117 = getelementptr inbounds nuw i8, ptr %.08.i80.i, i64 1 %118 = load i8, ptr %.08.i80.i, align 1, !tbaa !4 %119 = getelementptr inbounds nuw i8, ptr %.057.i81.i, i64 1 diff --git a/bench/sqlite/optimized/sqlite3.ll b/bench/sqlite/optimized/sqlite3.ll index 3ac09216eea..a4ad572fc3f 100644 --- a/bench/sqlite/optimized/sqlite3.ll +++ b/bench/sqlite/optimized/sqlite3.ll @@ -407126,9 +407126,8 @@ define internal void @fts3MIBufferFree(ptr noundef %0) #0 { %4 = zext i32 %3 to i64 %5 = sub nsw i64 0, %4 %6 = getelementptr inbounds i8, ptr %0, i64 %5 - %7 = getelementptr inbounds nuw i8, ptr %6, i64 28 - %8 = icmp eq ptr %0, %7 - br i1 %8, label %9, label %11 + %7 = icmp eq i32 %3, 28 + br i1 %7, label %8, label %10 9: ; preds = %1 %10 = getelementptr inbounds nuw i8, ptr %6, i64 1 @@ -407169,12 +407168,12 @@ define internal void @fts3MIBufferFree(ptr noundef %0) #0 { 28: ; preds = %26 %29 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @sqlite3Config, i64 128), align 8, !tbaa !3 - tail call void %29(ptr noundef nonnull %27) #73 + tail call void %28(ptr noundef nonnull %27) #73 br label %sqlite3_mutex_enter.exit.i sqlite3_mutex_enter.exit.i: ; preds = %28, %26 %30 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @sqlite3Config, i64 56), align 8, !tbaa !85 - %31 = tail call i32 %30(ptr noundef nonnull %6) #73 + %31 = tail call i32 %29(ptr noundef nonnull %6) #73 %32 = sext i32 %31 to i64 %33 = load i64, ptr @sqlite3Stat, align 8, !tbaa !14 %34 = sub nsw i64 %33, %32 @@ -407183,19 +407182,19 @@ sqlite3_mutex_enter.exit.i: ; preds = %28, %26 %36 = add nsw i64 %35, -1 store i64 %36, ptr getelementptr inbounds nuw (i8, ptr @sqlite3Stat, i64 72), align 8, !tbaa !14 %37 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @sqlite3Config, i64 40), align 8, !tbaa !163 - tail call void %37(ptr noundef nonnull %6) #73 + tail call void %36(ptr noundef nonnull %6) #73 %38 = load ptr, ptr @mem0, align 8, !tbaa !161 %.not.i4.i = icmp eq ptr %38, null br i1 %.not.i4.i, label %sqlite3_free.exit, label %39 39: ; preds = %sqlite3_mutex_enter.exit.i %40 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @sqlite3Config, i64 144), align 8, !tbaa !15 - tail call void %40(ptr noundef nonnull %38) #73 + tail call void %39(ptr noundef nonnull %38) #73 br label %sqlite3_free.exit 41: ; preds = %24 %42 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @sqlite3Config, i64 40), align 8, !tbaa !163 - tail call void %42(ptr noundef nonnull %6) #73 + tail call void %41(ptr noundef nonnull %6) #73 br label %sqlite3_free.exit sqlite3_free.exit: ; preds = %41, %39, %sqlite3_mutex_enter.exit.i, %20, %16, %13 diff --git a/bench/typst-rs/optimized/2i78fvbm4wocuesi.ll b/bench/typst-rs/optimized/2i78fvbm4wocuesi.ll index a3201224fa3..67edb7126bf 100644 --- a/bench/typst-rs/optimized/2i78fvbm4wocuesi.ll +++ b/bench/typst-rs/optimized/2i78fvbm4wocuesi.ll @@ -1473,7 +1473,7 @@ default.unreachable: ; preds = %_ZN20unicode_segmen br i1 %173, label %.thread90.i.i, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h3e738a363550f352E.exit19.i.i.i" "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h3e738a363550f352E.exit19.i.i.i": ; preds = %169 - %174 = icmp ne ptr %11, %171 + %174 = icmp ne i64 %147, 1 tail call void @llvm.assume(i1 %174) %175 = getelementptr inbounds i8, ptr %170, i64 -2 %176 = load i8, ptr %175, align 1, !alias.scope !46, !noalias !47, !noundef !4 @@ -1487,7 +1487,7 @@ default.unreachable: ; preds = %_ZN20unicode_segmen br label %.thread110.i.i "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h3e738a363550f352E.exit21.i.i.i": ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h3e738a363550f352E.exit19.i.i.i" - %181 = icmp ne ptr %11, %175 + %181 = icmp ne i64 %147, 2 tail call void @llvm.assume(i1 %181) %182 = getelementptr inbounds i8, ptr %170, i64 -3 %183 = load i8, ptr %182, align 1, !alias.scope !46, !noalias !47, !noundef !4 @@ -1497,7 +1497,7 @@ default.unreachable: ; preds = %_ZN20unicode_segmen br i1 %186, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h3e738a363550f352E.exit23.i.i.i", label %196 "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h3e738a363550f352E.exit23.i.i.i": ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h3e738a363550f352E.exit21.i.i.i" - %187 = icmp ne ptr %11, %182 + %187 = icmp ne i64 %147, 3 tail call void @llvm.assume(i1 %187) %188 = getelementptr inbounds i8, ptr %170, i64 -4 %189 = load i8, ptr %188, align 1, !alias.scope !46, !noalias !47, !noundef !4 @@ -8290,7 +8290,7 @@ define internal fastcc void @_ZN20unicode_segmentation8grapheme14GraphemeCursor1 br i1 %9, label %.thread40, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h3e738a363550f352E.exit19.i" "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h3e738a363550f352E.exit19.i": ; preds = %6 - %10 = icmp ne ptr %1, %7 + %10 = icmp ne i64 %2, 1 tail call void @llvm.assume(i1 %10) %11 = getelementptr inbounds i8, ptr %4, i64 -2 %12 = load i8, ptr %11, align 1, !noalias !1241, !noundef !4 @@ -8304,7 +8304,7 @@ define internal fastcc void @_ZN20unicode_segmentation8grapheme14GraphemeCursor1 br label %42 "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h3e738a363550f352E.exit21.i": ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h3e738a363550f352E.exit19.i" - %17 = icmp ne ptr %1, %11 + %17 = icmp ne i64 %2, 2 tail call void @llvm.assume(i1 %17) %18 = getelementptr inbounds i8, ptr %4, i64 -3 %19 = load i8, ptr %18, align 1, !noalias !1241, !noundef !4 @@ -8314,7 +8314,7 @@ define internal fastcc void @_ZN20unicode_segmentation8grapheme14GraphemeCursor1 br i1 %22, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h3e738a363550f352E.exit23.i", label %32 "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h3e738a363550f352E.exit23.i": ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h3e738a363550f352E.exit21.i" - %23 = icmp ne ptr %1, %18 + %23 = icmp ne i64 %2, 3 tail call void @llvm.assume(i1 %23) %24 = getelementptr inbounds i8, ptr %4, i64 -4 %25 = load i8, ptr %24, align 1, !noalias !1241, !noundef !4 @@ -20967,7 +20967,7 @@ define hidden { ptr, i64 } @"_ZN4core3str21_$LT$impl$u20$str$GT$16trim_end_match br i1 %11, label %.thread19.i.i, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h3e738a363550f352E.exit19.i.i.i" "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h3e738a363550f352E.exit19.i.i.i": ; preds = %8 - %12 = icmp ne ptr %0, %9 + %12 = icmp ne i64 %5, 1 tail call void @llvm.assume(i1 %12) %13 = getelementptr inbounds i8, ptr %6, i64 -2 %14 = load i8, ptr %13, align 1, !noalias !4769, !noundef !4 @@ -20981,7 +20981,7 @@ define hidden { ptr, i64 } @"_ZN4core3str21_$LT$impl$u20$str$GT$16trim_end_match br label %"_ZN88_$LT$core..str..pattern..CharSearcher$u20$as$u20$core..str..pattern..ReverseSearcher$GT$9next_back17h52ac94b8128301b2E.llvm.16978709814855407318.exit.i" "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h3e738a363550f352E.exit21.i.i.i": ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h3e738a363550f352E.exit19.i.i.i" - %19 = icmp ne ptr %0, %13 + %19 = icmp ne i64 %5, 2 tail call void @llvm.assume(i1 %19) %20 = getelementptr inbounds i8, ptr %6, i64 -3 %21 = load i8, ptr %20, align 1, !noalias !4769, !noundef !4 @@ -20991,7 +20991,7 @@ define hidden { ptr, i64 } @"_ZN4core3str21_$LT$impl$u20$str$GT$16trim_end_match br i1 %24, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h3e738a363550f352E.exit23.i.i.i", label %34 "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h3e738a363550f352E.exit23.i.i.i": ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h3e738a363550f352E.exit21.i.i.i" - %25 = icmp ne ptr %0, %20 + %25 = icmp ne i64 %5, 3 tail call void @llvm.assume(i1 %25) %26 = getelementptr inbounds i8, ptr %6, i64 -4 %27 = load i8, ptr %26, align 1, !noalias !4769, !noundef !4 @@ -64423,7 +64423,7 @@ define hidden void @"_ZN87_$LT$core..str..pattern..StrSearcher$u20$as$u20$core.. br i1 %36, label %43, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h3e738a363550f352E.exit19.i" "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h3e738a363550f352E.exit19.i": ; preds = %32 - %37 = icmp ne ptr %20, %34 + %37 = icmp ne i64 %18, 1 tail call void @llvm.assume(i1 %37) %38 = getelementptr inbounds i8, ptr %33, i64 -2 %39 = load i8, ptr %38, align 1, !noalias !13120, !noundef !4 @@ -64437,7 +64437,7 @@ define hidden void @"_ZN87_$LT$core..str..pattern..StrSearcher$u20$as$u20$core.. br label %_ZN4core3str11validations23next_code_point_reverse17h959ef17ebe8ebef2E.exit.thread "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h3e738a363550f352E.exit21.i": ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h3e738a363550f352E.exit19.i" - %45 = icmp ne ptr %20, %38 + %45 = icmp ne i64 %18, 2 tail call void @llvm.assume(i1 %45) %46 = getelementptr inbounds i8, ptr %33, i64 -3 %47 = load i8, ptr %46, align 1, !noalias !13120, !noundef !4 @@ -64455,7 +64455,7 @@ define hidden void @"_ZN87_$LT$core..str..pattern..StrSearcher$u20$as$u20$core.. br label %_ZN4core3str11validations23next_code_point_reverse17h959ef17ebe8ebef2E.exit.thread "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h3e738a363550f352E.exit23.i": ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h3e738a363550f352E.exit21.i" - %56 = icmp ne ptr %20, %46 + %56 = icmp ne i64 %18, 3 tail call void @llvm.assume(i1 %56) %57 = getelementptr inbounds i8, ptr %33, i64 -4 %58 = load i8, ptr %57, align 1, !noalias !13120, !noundef !4 @@ -77984,7 +77984,7 @@ _ZN4core3str7pattern7Pattern12is_prefix_of17h9159519063a47b28E.exit.thread.i: ; br i1 %179, label %186, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h3e738a363550f352E.exit19.i.i.i" "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h3e738a363550f352E.exit19.i.i.i": ; preds = %176 - %180 = icmp ne ptr %.val.i37, %177 + %180 = icmp ne i64 %.val3.i, 1 tail call void @llvm.assume(i1 %180) %181 = getelementptr inbounds i8, ptr %174, i64 -2 %182 = load i8, ptr %181, align 1, !noalias !16270, !noundef !4 @@ -77998,7 +77998,7 @@ _ZN4core3str7pattern7Pattern12is_prefix_of17h9159519063a47b28E.exit.thread.i: ; br label %213 "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h3e738a363550f352E.exit21.i.i.i": ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h3e738a363550f352E.exit19.i.i.i" - %188 = icmp ne ptr %.val.i37, %181 + %188 = icmp ne i64 %.val3.i, 2 tail call void @llvm.assume(i1 %188) %189 = getelementptr inbounds i8, ptr %174, i64 -3 %190 = load i8, ptr %189, align 1, !noalias !16270, !noundef !4 @@ -78016,7 +78016,7 @@ _ZN4core3str7pattern7Pattern12is_prefix_of17h9159519063a47b28E.exit.thread.i: ; br label %213 "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h3e738a363550f352E.exit23.i.i.i": ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h3e738a363550f352E.exit21.i.i.i" - %199 = icmp ne ptr %.val.i37, %189 + %199 = icmp ne i64 %.val3.i, 3 tail call void @llvm.assume(i1 %199) %200 = getelementptr inbounds i8, ptr %174, i64 -4 %201 = load i8, ptr %200, align 1, !noalias !16270, !noundef !4 diff --git a/bench/uv-rs/optimized/bt5f6f08hvtjlcji6qu3dcjek.ll b/bench/uv-rs/optimized/bt5f6f08hvtjlcji6qu3dcjek.ll index a71650865be..e0e14d8d3af 100644 --- a/bench/uv-rs/optimized/bt5f6f08hvtjlcji6qu3dcjek.ll +++ b/bench/uv-rs/optimized/bt5f6f08hvtjlcji6qu3dcjek.ll @@ -1667,22 +1667,20 @@ define hidden void @"_ZN113_$LT$$RF$petgraph..graph_impl..Graph$LT$N$C$E$C$Ty$C$ ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(write, argmem: readwrite, inaccessiblemem: none) uwtable define hidden void @_ZN11fixedbitset11FixedBitSet5clear17h9e58cda2ad60b73cE.llvm.2437970333601430186(ptr noalias noundef readonly align 8 captures(none) dereferenceable(24) %0) unnamed_addr #5 { - %2 = load ptr, ptr %0, align 8, !nonnull !3, !noundef !3 - %3 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %4 = load i64, ptr %3, align 8, !noundef !3 - %5 = lshr i64 %4, 7 - %6 = and i64 %4, 127 - %7 = icmp ne i64 %6, 0 - %8 = zext i1 %7 to i64 - %9 = getelementptr inbounds nuw <2 x i64>, ptr %2, i64 %5 - %10 = getelementptr inbounds nuw <2 x i64>, ptr %9, i64 %8 - %11 = icmp eq ptr %2, %10 - br i1 %11, label %._crit_edge, label %.lr.ph.preheader + %2 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %3 = load i64, ptr %2, align 8, !noundef !3 + %.not8.not = icmp eq i64 %3, 0 + br i1 %.not8.not, label %._crit_edge, label %.lr.ph.preheader .lr.ph.preheader: ; preds = %1 - %12 = add nuw nsw i64 %5, %8 - %13 = shl nuw nsw i64 %12, 4 - tail call void @llvm.memset.p0.i64(ptr nonnull align 16 %2, i8 0, i64 %13, i1 false) + %4 = and i64 %3, 127 + %5 = icmp ne i64 %4, 0 + %6 = zext i1 %5 to i64 + %7 = lshr i64 %3, 7 + %8 = load ptr, ptr %0, align 8, !nonnull !3, !noundef !3 + %9 = add nuw nsw i64 %7, %6 + %10 = shl nuw nsw i64 %9, 4 + tail call void @llvm.memset.p0.i64(ptr nonnull align 16 %8, i8 0, i64 %10, i1 false) br label %._crit_edge ._crit_edge: ; preds = %.lr.ph.preheader, %1 @@ -3818,22 +3816,20 @@ define hidden void @"_ZN52_$LT$$RF$G$u20$as$u20$petgraph..visit..Visitable$GT$9r tail call void @llvm.experimental.noalias.scope.decl(metadata !1092) tail call void @llvm.experimental.noalias.scope.decl(metadata !1095) tail call void @llvm.experimental.noalias.scope.decl(metadata !1097) - %4 = load ptr, ptr %1, align 8, !alias.scope !1100, !noalias !1092, !nonnull !3, !noundef !3 - %5 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %6 = load i64, ptr %5, align 8, !alias.scope !1100, !noalias !1092, !noundef !3 - %7 = lshr i64 %6, 7 - %8 = and i64 %6, 127 - %9 = icmp ne i64 %8, 0 - %10 = zext i1 %9 to i64 - %11 = getelementptr inbounds nuw <2 x i64>, ptr %4, i64 %7 - %12 = getelementptr inbounds nuw <2 x i64>, ptr %11, i64 %10 - %13 = icmp eq ptr %4, %12 - br i1 %13, label %_ZN11fixedbitset11FixedBitSet5clear17h9e58cda2ad60b73cE.llvm.2437970333601430186.exit.i, label %.lr.ph.preheader.i.i + %4 = getelementptr inbounds nuw i8, ptr %1, i64 19 + %5 = load i64, ptr %4, align 8, !alias.scope !1100, !noalias !1092, !noundef !3 + %.not8.not.i.i = icmp eq i64 %5, 0 + br i1 %.not8.not.i.i, label %_ZN11fixedbitset11FixedBitSet5clear17h9e58cda2ad60b73cE.llvm.2437970333601430186.exit.i, label %.lr.ph.preheader.i.i .lr.ph.preheader.i.i: ; preds = %2 - %14 = add nuw nsw i64 %7, %10 - %15 = shl nuw nsw i64 %14, 4 - tail call void @llvm.memset.p0.i64(ptr nonnull align 16 %4, i8 0, i64 %15, i1 false), !noalias !1101 + %6 = and i64 %5, 127 + %7 = icmp ne i64 %6, 0 + %8 = zext i1 %7 to i64 + %9 = lshr i64 %5, 7 + %10 = load ptr, ptr %1, align 8, !alias.scope !1100, !noalias !1092, !nonnull !3, !noundef !3 + %11 = add nuw nsw i64 %9, %8 + %12 = shl nuw nsw i64 %11, 4 + tail call void @llvm.memset.p0.i64(ptr nonnull align 16 %10, i8 0, i64 %12, i1 false), !noalias !1101 br label %_ZN11fixedbitset11FixedBitSet5clear17h9e58cda2ad60b73cE.llvm.2437970333601430186.exit.i _ZN11fixedbitset11FixedBitSet5clear17h9e58cda2ad60b73cE.llvm.2437970333601430186.exit.i: ; preds = %.lr.ph.preheader.i.i, %2 @@ -3841,7 +3837,7 @@ _ZN11fixedbitset11FixedBitSet5clear17h9e58cda2ad60b73cE.llvm.2437970333601430186 %17 = load i64, ptr %16, align 8, !alias.scope !1092, !noalias !1095, !noundef !3 %18 = icmp ult i64 %17, 230584300921369396 tail call void @llvm.assume(i1 %18) - %19 = icmp ugt i64 %17, %6 + %19 = icmp ugt i64 %17, %5 br i1 %19, label %20, label %"_ZN97_$LT$petgraph..graph_impl..Graph$LT$N$C$E$C$Ty$C$Ix$GT$$u20$as$u20$petgraph..visit..Visitable$GT$9reset_map17h78d0aaae2bc1392cE.llvm.2437970333601430186.exit", !prof !475 20: ; preds = %_ZN11fixedbitset11FixedBitSet5clear17h9e58cda2ad60b73cE.llvm.2437970333601430186.exit.i @@ -9946,22 +9942,20 @@ define hidden void @"_ZN97_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$alloc..ve ; Function Attrs: nonlazybind uwtable define hidden void @"_ZN97_$LT$petgraph..graph_impl..Graph$LT$N$C$E$C$Ty$C$Ix$GT$$u20$as$u20$petgraph..visit..Visitable$GT$9reset_map17h78d0aaae2bc1392cE.llvm.2437970333601430186"(ptr noalias noundef readonly align 8 captures(none) dereferenceable(48) %0, ptr noalias noundef align 8 dereferenceable(24) %1) unnamed_addr #4 { tail call void @llvm.experimental.noalias.scope.decl(metadata !2204) - %3 = load ptr, ptr %1, align 8, !alias.scope !2204, !nonnull !3, !noundef !3 - %4 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %5 = load i64, ptr %4, align 8, !alias.scope !2204, !noundef !3 - %6 = lshr i64 %5, 7 - %7 = and i64 %5, 127 - %8 = icmp ne i64 %7, 0 - %9 = zext i1 %8 to i64 - %10 = getelementptr inbounds nuw <2 x i64>, ptr %3, i64 %6 - %11 = getelementptr inbounds nuw <2 x i64>, ptr %10, i64 %9 - %12 = icmp eq ptr %3, %11 - br i1 %12, label %_ZN11fixedbitset11FixedBitSet5clear17h9e58cda2ad60b73cE.llvm.2437970333601430186.exit, label %.lr.ph.preheader.i + %3 = getelementptr inbounds nuw i8, ptr %1, i64 16 + %4 = load i64, ptr %3, align 8, !alias.scope !2204, !noundef !3 + %.not8.not.i = icmp eq i64 %4, 0 + br i1 %.not8.not.i, label %_ZN11fixedbitset11FixedBitSet5clear17h9e58cda2ad60b73cE.llvm.2437970333601430186.exit, label %.lr.ph.preheader.i .lr.ph.preheader.i: ; preds = %2 - %13 = add nuw nsw i64 %6, %9 - %14 = shl nuw nsw i64 %13, 4 - tail call void @llvm.memset.p0.i64(ptr nonnull align 16 %3, i8 0, i64 %14, i1 false), !noalias !2204 + %5 = and i64 %4, 127 + %6 = icmp ne i64 %5, 0 + %7 = zext i1 %6 to i64 + %8 = lshr i64 %4, 7 + %9 = load ptr, ptr %1, align 8, !alias.scope !2204, !nonnull !3, !noundef !3 + %10 = add nuw nsw i64 %8, %7 + %11 = shl nuw nsw i64 %10, 4 + tail call void @llvm.memset.p0.i64(ptr nonnull align 16 %9, i8 0, i64 %11, i1 false), !noalias !2204 br label %_ZN11fixedbitset11FixedBitSet5clear17h9e58cda2ad60b73cE.llvm.2437970333601430186.exit _ZN11fixedbitset11FixedBitSet5clear17h9e58cda2ad60b73cE.llvm.2437970333601430186.exit: ; preds = %2, %.lr.ph.preheader.i @@ -9969,7 +9963,7 @@ _ZN11fixedbitset11FixedBitSet5clear17h9e58cda2ad60b73cE.llvm.2437970333601430186 %16 = load i64, ptr %15, align 8, !noundef !3 %17 = icmp ult i64 %16, 230584300921369396 tail call void @llvm.assume(i1 %17) - %18 = icmp ugt i64 %16, %5 + %18 = icmp ugt i64 %16, %4 br i1 %18, label %19, label %20, !prof !475 19: ; preds = %_ZN11fixedbitset11FixedBitSet5clear17h9e58cda2ad60b73cE.llvm.2437970333601430186.exit diff --git a/bench/velox/optimized/Filter.ll b/bench/velox/optimized/Filter.ll index b01d773054f..5a69a187b5c 100644 --- a/bench/velox/optimized/Filter.ll +++ b/bench/velox/optimized/Filter.ll @@ -45924,7 +45924,7 @@ invoke.cont20: ; preds = %.noexc %add.ptr.i.i.i = getelementptr inbounds nuw %"class.std::__cxx11::basic_string", ptr %6, i64 %conv.i.i.i %add.ptr2.i.i.i = getelementptr inbounds i8, ptr %add.ptr.i.i.i, i64 -32 call void @llvm.assume(i1 %cmp.not.i.i.i) - %cmp.i714.i.i = icmp eq ptr %add.ptr2.i.i.i, %6 + %cmp.i714.i.i = icmp eq i32 %5, 1 br i1 %cmp.i714.i.i, label %invoke.cont22, label %while.body.i.i.preheader while.body.i.i.preheader: ; preds = %invoke.cont20 @@ -45952,7 +45952,7 @@ _ZNK9__gnu_cxx5__ops15_Iter_less_iterclIN5folly3f146detail23VectorContainerItera br i1 %cmp.i7.i.i, label %invoke.cont22, label %while.body.i.i, !llvm.loop !996 invoke.cont22: ; preds = %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclIN5folly3f146detail23VectorContainerIteratorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESF_EEbT_T0_.exit.i.i, %invoke.cont20 - %retval.sroa.0.0.i.i = phi ptr [ %6, %invoke.cont20 ], [ %retval.sroa.0.2.i.i, %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclIN5folly3f146detail23VectorContainerIteratorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESF_EEbT_T0_.exit.i.i ] + %retval.sroa.0.0.i.i = phi ptr [ %add.ptr2.i.i.i, %invoke.cont20 ], [ %retval.sroa.0.2.i.i, %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclIN5folly3f146detail23VectorContainerIteratorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESF_EEbT_T0_.exit.i.i ] %call27 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %lower_, ptr noundef nonnull align 8 dereferenceable(32) %retval.sroa.0.0.i.i) to label %invoke.cont35 unwind label %lpad.loopexit.split-lp @@ -45964,7 +45964,7 @@ invoke.cont35: ; preds = %invoke.cont22 %add.ptr.i.i.i16 = getelementptr inbounds nuw %"class.std::__cxx11::basic_string", ptr %10, i64 %conv.i.i.i14 %add.ptr2.i.i.i17 = getelementptr inbounds i8, ptr %add.ptr.i.i.i16, i64 -32 call void @llvm.assume(i1 %cmp.not.i.i.i15) - %cmp.i714.i.i23 = icmp eq ptr %add.ptr2.i.i.i17, %10 + %cmp.i714.i.i23 = icmp eq i32 %9, 1 br i1 %cmp.i714.i.i23, label %invoke.cont37, label %while.body.i.i27.preheader while.body.i.i27.preheader: ; preds = %invoke.cont35 @@ -45992,7 +45992,7 @@ _ZNK9__gnu_cxx5__ops15_Iter_less_iterclIN5folly3f146detail23VectorContainerItera br i1 %cmp.i7.i.i38, label %invoke.cont37, label %while.body.i.i27, !llvm.loop !997 invoke.cont37: ; preds = %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclIN5folly3f146detail23VectorContainerIteratorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESF_EEbT_T0_.exit.i.i34, %invoke.cont35 - %retval.sroa.0.0.i.i42 = phi ptr [ %10, %invoke.cont35 ], [ %retval.sroa.0.2.i.i36, %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclIN5folly3f146detail23VectorContainerIteratorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESF_EEbT_T0_.exit.i.i34 ] + %retval.sroa.0.0.i.i42 = phi ptr [ %add.ptr2.i.i.i17, %invoke.cont35 ], [ %retval.sroa.0.2.i.i36, %_ZNK9__gnu_cxx5__ops15_Iter_less_iterclIN5folly3f146detail23VectorContainerIteratorIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESF_EEbT_T0_.exit.i.i34 ] %call42 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %upper_, ptr noundef nonnull align 8 dereferenceable(32) %retval.sroa.0.0.i.i42) to label %invoke.cont41 unwind label %lpad.loopexit.split-lp @@ -47748,11 +47748,13 @@ _ZSt13copy_backwardISt13_Bit_iteratorS0_ET0_T_S2_S1_.exit: ; preds = %_ZNSt14_Bi %add.ptr.i.i.i23 = getelementptr inbounds i64, ptr %__position.coerce0, i64 %div.i.i.i22 %9 = and i64 %add.i.i.i21, -9223372036854775745 %cmp.i.i.i24 = icmp ugt i64 %9, -9223372036854775808 + %storemerge.idx.i.i.i25.neg = select i1 %cmp.i.i.i24, i64 8, i64 0 %storemerge.idx.i.i.i25 = select i1 %cmp.i.i.i24, i64 -8, i64 0 %storemerge.i.i.i26 = getelementptr inbounds i8, ptr %add.ptr.i.i.i23, i64 %storemerge.idx.i.i.i25 %10 = trunc i64 %add.i.i.i21 to i32 %conv4.i.i.i27 = and i32 %10, 63 - %cmp.not.i.i.i = icmp eq ptr %__position.coerce0, %storemerge.i.i.i26 + %add.ptr.i.i.i23.idx = shl nsw i64 %div.i.i.i22, 3 + %cmp.not.i.i.i = icmp eq i64 %add.ptr.i.i.i23.idx, %storemerge.idx.i.i.i25.neg br i1 %cmp.not.i.i.i, label %if.else.i.i.i, label %if.then.i.i.i if.then.i.i.i: ; preds = %_ZSt13copy_backwardISt13_Bit_iteratorS0_ET0_T_S2_S1_.exit @@ -47945,11 +47947,13 @@ _ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterato %add.ptr.i.i.i58 = getelementptr inbounds i64, ptr %__result.sroa.0.0.lcssa.i.i.i.i.i.i, i64 %div.i.i.i57 %27 = and i64 %add.i.i.i56, -9223372036854775745 %cmp.i.i.i59 = icmp ugt i64 %27, -9223372036854775808 + %storemerge.idx.i.i.i60.neg = select i1 %cmp.i.i.i59, i64 8, i64 0 %storemerge.idx.i.i.i60 = select i1 %cmp.i.i.i59, i64 -8, i64 0 %storemerge.i.i.i61 = getelementptr inbounds i8, ptr %add.ptr.i.i.i58, i64 %storemerge.idx.i.i.i60 %28 = trunc i64 %add.i.i.i56 to i32 %conv4.i.i.i62 = and i32 %28, 63 - %cmp.not.i.i.i65 = icmp eq ptr %__result.sroa.0.0.lcssa.i.i.i.i.i.i, %storemerge.i.i.i61 + %add.ptr.i.i.i58.idx = shl nsw i64 %div.i.i.i57, 3 + %cmp.not.i.i.i65 = icmp eq i64 %add.ptr.i.i.i58.idx, %storemerge.idx.i.i.i60.neg br i1 %cmp.not.i.i.i65, label %if.else.i.i.i98, label %if.then.i.i.i66 if.then.i.i.i66: ; preds = %_ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator.exit diff --git a/bench/wasmtime-rs/optimized/3r0osxvwe4cd326n.ll b/bench/wasmtime-rs/optimized/3r0osxvwe4cd326n.ll index 9f52c01d0d0..96cc6413ac3 100644 --- a/bench/wasmtime-rs/optimized/3r0osxvwe4cd326n.ll +++ b/bench/wasmtime-rs/optimized/3r0osxvwe4cd326n.ll @@ -6943,12 +6943,12 @@ define internal noundef zeroext i1 @_ZN4core3fmt5Write10write_char17h86a9a28432d %3 = alloca [4 x i8], align 4 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) store i32 0, ptr %3, align 4 - %4 = icmp ult i32 %1, 128 + %4 = icmp ugt i32 %1, 127 %.sroa.gep = getelementptr inbounds nuw i8, ptr %3, i64 4 %.sroa.gep1 = getelementptr inbounds nuw i8, ptr %3, i64 3 %.sroa.gep2 = getelementptr inbounds nuw i8, ptr %3, i64 2 %.sroa.gep3 = getelementptr inbounds nuw i8, ptr %3, i64 1 - br i1 %4, label %9, label %5 + br i1 %4, label %5, label %9 5: ; preds = %2 %6 = icmp ult i32 %1, 2048 @@ -7013,6 +7013,8 @@ define internal noundef zeroext i1 @_ZN4core3fmt5Write10write_char17h86a9a28432d br label %45 45: ; preds = %29, %18, %11, %9 + %46 = phi i1 [ true, %29 ], [ true, %18 ], [ false, %11 ], [ true, %9 ] + %47 = phi i1 [ true, %29 ], [ false, %18 ], [ true, %11 ], [ true, %9 ] %.sroa.phi = phi ptr [ %.sroa.gep, %29 ], [ %.sroa.gep1, %18 ], [ %.sroa.gep2, %11 ], [ %.sroa.gep3, %9 ] %46 = phi i64 [ 4, %29 ], [ 3, %18 ], [ 2, %11 ], [ 1, %9 ] tail call void @llvm.experimental.noalias.scope.decl(metadata !975) @@ -7032,7 +7034,7 @@ define internal noundef zeroext i1 @_ZN4core3fmt5Write10write_char17h86a9a28432d br label %55 55: ; preds = %54, %45 - %56 = phi i64 [ %50, %45 ], [ %.pre.i.i.i.i.i, %54 ] + %56 = phi i64 [ %50, %45 ], [ %.pre.i.i.i.i.i, %56 ] %57 = getelementptr inbounds nuw i8, ptr %48, i64 8 %58 = load ptr, ptr %57, align 8, !alias.scope !995, !noalias !991, !nonnull !9, !noundef !9 %59 = getelementptr inbounds i8, ptr %58, i64 %56 @@ -7043,25 +7045,23 @@ define internal noundef zeroext i1 @_ZN4core3fmt5Write10write_char17h86a9a28432d %62 = getelementptr inbounds i8, ptr %.sroa.phi, i64 -1 %63 = load i8, ptr %62, align 1, !alias.scope !978, !noalias !996, !noundef !9 %64 = icmp sgt i8 %63, -1 - br i1 %64, label %71, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h92a730e7328c8c0fE.exit19.i.i.i.i" + br i1 %64, label %72, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h92a730e7328c8c0fE.exit19.i.i.i.i" "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h92a730e7328c8c0fE.exit19.i.i.i.i": ; preds = %55 - %65 = icmp ne ptr %3, %62 - call void @llvm.assume(i1 %65) - %66 = getelementptr inbounds i8, ptr %.sroa.phi, i64 -2 - %67 = load i8, ptr %66, align 1, !alias.scope !978, !noalias !996, !noundef !9 - %68 = and i8 %67, 31 - %69 = zext nneg i8 %68 to i32 - %70 = icmp slt i8 %67, -64 - br i1 %70, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h92a730e7328c8c0fE.exit21.i.i.i.i", label %79 - -71: ; preds = %55 - %72 = zext nneg i8 %63 to i32 + tail call void @llvm.assume(i1 %4) + %67 = getelementptr inbounds i8, ptr %.sroa.phi, i64 -2 + %68 = load i8, ptr %67, align 1, !alias.scope !978, !noalias !996, !noundef !9 + %69 = and i8 %68, 31 + %70 = zext nneg i8 %69 to i32 + %71 = icmp slt i8 %68, -64 + br i1 %71, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h92a730e7328c8c0fE.exit21.i.i.i.i", label %79 + +72: ; preds = %57 + %73 = zext nneg i8 %65 to i32 br label %"_ZN80_$LT$cpp_demangle..ast..DemangleContext$LT$W$GT$$u20$as$u20$core..fmt..Write$GT$9write_str17h1ae077186a859904E.exit" "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h92a730e7328c8c0fE.exit21.i.i.i.i": ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h92a730e7328c8c0fE.exit19.i.i.i.i" - %73 = icmp ne ptr %3, %66 - call void @llvm.assume(i1 %73) + tail call void @llvm.assume(i1 %46) %74 = getelementptr inbounds i8, ptr %.sroa.phi, i64 -3 %75 = load i8, ptr %74, align 1, !alias.scope !978, !noalias !996, !noundef !9 %76 = and i8 %75, 15 @@ -7070,7 +7070,7 @@ define internal noundef zeroext i1 @_ZN4core3fmt5Write10write_char17h86a9a28432d br i1 %78, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h92a730e7328c8c0fE.exit23.i.i.i.i", label %93 79: ; preds = %93, %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h92a730e7328c8c0fE.exit19.i.i.i.i" - %.013.i.i.i.i = phi i32 [ %97, %93 ], [ %69, %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h92a730e7328c8c0fE.exit19.i.i.i.i" ] + %.013.i.i.i.i = phi i32 [ %97, %92 ], [ %70, %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h92a730e7328c8c0fE.exit19.i.i.i.i" ] %80 = shl nuw nsw i32 %.013.i.i.i.i, 6 %81 = and i8 %63, 63 %82 = zext nneg i8 %81 to i32 @@ -7078,28 +7078,27 @@ define internal noundef zeroext i1 @_ZN4core3fmt5Write10write_char17h86a9a28432d br label %"_ZN80_$LT$cpp_demangle..ast..DemangleContext$LT$W$GT$$u20$as$u20$core..fmt..Write$GT$9write_str17h1ae077186a859904E.exit" "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h92a730e7328c8c0fE.exit23.i.i.i.i": ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h92a730e7328c8c0fE.exit21.i.i.i.i" - %84 = icmp ne ptr %3, %74 - call void @llvm.assume(i1 %84) - %85 = getelementptr inbounds i8, ptr %.sroa.phi, i64 -4 - %86 = load i8, ptr %85, align 1, !alias.scope !978, !noalias !996, !noundef !9 - %87 = and i8 %86, 7 - %88 = zext nneg i8 %87 to i32 - %89 = shl nuw nsw i32 %88, 6 - %90 = and i8 %75, 63 - %91 = zext nneg i8 %90 to i32 - %92 = or disjoint i32 %89, %91 - br label %93 + tail call void @llvm.assume(i1 %47) + %84 = getelementptr inbounds i8, ptr %.sroa.phi, i64 -4 + %85 = load i8, ptr %84, align 1, !alias.scope !978, !noalias !996, !noundef !9 + %86 = and i8 %85, 7 + %87 = zext nneg i8 %86 to i32 + %88 = shl nuw nsw i32 %87, 6 + %89 = and i8 %75, 63 + %90 = zext nneg i8 %89 to i32 + %91 = or disjoint i32 %88, %90 + br label %92 93: ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h92a730e7328c8c0fE.exit23.i.i.i.i", %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h92a730e7328c8c0fE.exit21.i.i.i.i" - %.1.i.i.i.i = phi i32 [ %92, %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h92a730e7328c8c0fE.exit23.i.i.i.i" ], [ %77, %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h92a730e7328c8c0fE.exit21.i.i.i.i" ] + %.1.i.i.i.i = phi i32 [ %91, %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h92a730e7328c8c0fE.exit23.i.i.i.i" ], [ %77, %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h92a730e7328c8c0fE.exit21.i.i.i.i" ] %94 = shl nuw nsw i32 %.1.i.i.i.i, 6 - %95 = and i8 %67, 63 + %95 = and i8 %68, 63 %96 = zext nneg i8 %95 to i32 %97 = or disjoint i32 %94, %96 br label %79 -"_ZN80_$LT$cpp_demangle..ast..DemangleContext$LT$W$GT$$u20$as$u20$core..fmt..Write$GT$9write_str17h1ae077186a859904E.exit": ; preds = %71, %79 - %98 = phi i32 [ %72, %71 ], [ %83, %79 ] +"_ZN80_$LT$cpp_demangle..ast..DemangleContext$LT$W$GT$$u20$as$u20$core..fmt..Write$GT$9write_str17h1ae077186a859904E.exit": ; preds = %72, %79 + %98 = phi i32 [ %73, %72 ], [ %83, %79 ] %99 = getelementptr inbounds nuw i8, ptr %0, i64 80 store i32 %98, ptr %99, align 8, !alias.scope !975, !noalias !978 %100 = getelementptr inbounds nuw i8, ptr %0, i64 72 @@ -17165,7 +17164,7 @@ define internal void @"_ZN79_$LT$cpp_demangle..ast..TemplateArgs$u20$as$u20$cpp_ } ; Function Attrs: nonlazybind uwtable -define internal noundef zeroext i1 @"_ZN80_$LT$cpp_demangle..ast..DemangleContext$LT$W$GT$$u20$as$u20$core..fmt..Write$GT$9write_str17h1ae077186a859904E"(ptr noalias noundef align 8 captures(none) dereferenceable(104) %0, ptr noalias noundef nonnull readonly align 1 captures(address) %1, i64 noundef %2) unnamed_addr #4 { +define internal noundef zeroext i1 @"_ZN80_$LT$cpp_demangle..ast..DemangleContext$LT$W$GT$$u20$as$u20$core..fmt..Write$GT$9write_str17h1ae077186a859904E"(ptr noalias noundef align 8 captures(none) dereferenceable(104) %0, ptr noalias noundef nonnull readonly align 1 captures(none) %1, i64 noundef %2) unnamed_addr #4 { %4 = icmp eq i64 %2, 0 br i1 %4, label %63, label %5 @@ -17200,7 +17199,7 @@ define internal noundef zeroext i1 @"_ZN80_$LT$cpp_demangle..ast..DemangleContex br i1 %24, label %31, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h92a730e7328c8c0fE.exit19.i.i.i" "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h92a730e7328c8c0fE.exit19.i.i.i": ; preds = %14 - %25 = icmp ne ptr %1, %22 + %25 = icmp ne i64 %2, 1 tail call void @llvm.assume(i1 %25) %26 = getelementptr inbounds i8, ptr %21, i64 -2 %27 = load i8, ptr %26, align 1, !noalias !2270, !noundef !9 @@ -17214,7 +17213,7 @@ define internal noundef zeroext i1 @"_ZN80_$LT$cpp_demangle..ast..DemangleContex br label %"_ZN4core6result19Result$LT$T$C$E$GT$3map17h5980d9bcd8ee26f8E.exit" "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h92a730e7328c8c0fE.exit21.i.i.i": ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h92a730e7328c8c0fE.exit19.i.i.i" - %33 = icmp ne ptr %1, %26 + %33 = icmp ne i64 %2, 2 tail call void @llvm.assume(i1 %33) %34 = getelementptr inbounds i8, ptr %21, i64 -3 %35 = load i8, ptr %34, align 1, !noalias !2270, !noundef !9 @@ -17232,7 +17231,7 @@ define internal noundef zeroext i1 @"_ZN80_$LT$cpp_demangle..ast..DemangleContex br label %"_ZN4core6result19Result$LT$T$C$E$GT$3map17h5980d9bcd8ee26f8E.exit" "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h92a730e7328c8c0fE.exit23.i.i.i": ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h92a730e7328c8c0fE.exit21.i.i.i" - %44 = icmp ne ptr %1, %34 + %44 = icmp ne i64 %2, 3 tail call void @llvm.assume(i1 %44) %45 = getelementptr inbounds i8, ptr %21, i64 -4 %46 = load i8, ptr %45, align 1, !noalias !2270, !noundef !9 @@ -24574,7 +24573,7 @@ define internal fastcc noundef zeroext i1 @"_ZN87_$LT$cpp_demangle..ast..ExprPri br i1 %131, label %138, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h92a730e7328c8c0fE.exit19.i.i.i.i.i" "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h92a730e7328c8c0fE.exit19.i.i.i.i.i": ; preds = %121 - %132 = icmp ne ptr %107, %129 + %132 = icmp ne i64 %109, 1 tail call void @llvm.assume(i1 %132) %133 = getelementptr inbounds i8, ptr %128, i64 -2 %134 = load i8, ptr %133, align 1, !alias.scope !2839, !noalias !2858, !noundef !9 @@ -24588,7 +24587,7 @@ define internal fastcc noundef zeroext i1 @"_ZN87_$LT$cpp_demangle..ast..ExprPri br label %"_ZN4core6result19Result$LT$T$C$E$GT$3map17h5980d9bcd8ee26f8E.exit.i.i" "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h92a730e7328c8c0fE.exit21.i.i.i.i.i": ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h92a730e7328c8c0fE.exit19.i.i.i.i.i" - %140 = icmp ne ptr %107, %133 + %140 = icmp ne i64 %109, 2 tail call void @llvm.assume(i1 %140) %141 = getelementptr inbounds i8, ptr %128, i64 -3 %142 = load i8, ptr %141, align 1, !alias.scope !2839, !noalias !2858, !noundef !9 @@ -24606,7 +24605,7 @@ define internal fastcc noundef zeroext i1 @"_ZN87_$LT$cpp_demangle..ast..ExprPri br label %"_ZN4core6result19Result$LT$T$C$E$GT$3map17h5980d9bcd8ee26f8E.exit.i.i" "_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h92a730e7328c8c0fE.exit23.i.i.i.i.i": ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17h92a730e7328c8c0fE.exit21.i.i.i.i.i" - %151 = icmp ne ptr %107, %141 + %151 = icmp ne i64 %109, 3 tail call void @llvm.assume(i1 %151) %152 = getelementptr inbounds i8, ptr %128, i64 -4 %153 = load i8, ptr %152, align 1, !alias.scope !2839, !noalias !2858, !noundef !9 diff --git a/bench/wireshark/optimized/qcustomplot.ll b/bench/wireshark/optimized/qcustomplot.ll index 0e6929e1017..2febf755cc7 100644 --- a/bench/wireshark/optimized/qcustomplot.ll +++ b/bench/wireshark/optimized/qcustomplot.ll @@ -256852,7 +256852,8 @@ _ZSt4moveIPP8QCPLayerS2_ET0_T_S4_S3_.exit: ; preds = %29, %32 49: ; preds = %46 %50 = getelementptr i8, ptr %48, i64 -8 %51 = load ptr, ptr %50, align 8 - %.not.i.i.i.i.i68 = icmp eq ptr %50, %.058 + %.idx.mask = and i64 %.086, 2305843009213693951 + %.not.i.i.i.i.i68 = icmp eq i64 %.idx.mask, 1 br i1 %.not.i.i.i.i.i68, label %_ZSt13move_backwardIPP8QCPLayerS2_ET0_T_S4_S3_.exit, label %52 52: ; preds = %49 @@ -279444,7 +279445,8 @@ _ZSt4moveIPP7QCPBarsS2_ET0_T_S4_S3_.exit: ; preds = %29, %32 49: ; preds = %46 %50 = getelementptr i8, ptr %48, i64 -8 %51 = load ptr, ptr %50, align 8 - %.not.i.i.i.i.i68 = icmp eq ptr %50, %.058 + %.idx.mask = and i64 %.086, 2305843009213693951 + %.not.i.i.i.i.i68 = icmp eq i64 %.idx.mask, 1 br i1 %.not.i.i.i.i.i68, label %_ZSt13move_backwardIPP7QCPBarsS2_ET0_T_S4_S3_.exit, label %52 52: ; preds = %49 diff --git a/bench/xgboost/optimized/updater_approx.ll b/bench/xgboost/optimized/updater_approx.ll index 37d22a83291..42746209e4c 100644 --- a/bench/xgboost/optimized/updater_approx.ll +++ b/bench/xgboost/optimized/updater_approx.ll @@ -32654,11 +32654,13 @@ _ZSt13copy_backwardISt13_Bit_iteratorS0_ET0_T_S2_S1_.exit: ; preds = %_ZNSt14_Bi %61 = getelementptr inbounds i64, ptr %1, i64 %60 %62 = and i64 %59, -9223372036854775745 %63 = icmp ugt i64 %62, -9223372036854775808 + %storemerge.idx.i.i.i75.neg = select i1 %63, i64 8, i64 0 %storemerge.idx.i.i.i75 = select i1 %63, i64 -8, i64 0 %storemerge.i.i.i76 = getelementptr inbounds i8, ptr %61, i64 %storemerge.idx.i.i.i75 %64 = trunc i64 %59 to i32 %65 = and i32 %64, 63 - %.not.i.i.i = icmp eq ptr %1, %storemerge.i.i.i76 + %.idx = shl nsw i64 %60, 3 + %.not.i.i.i = icmp eq i64 %.idx, %storemerge.idx.i.i.i75.neg br i1 %.not.i.i.i, label %91, label %66 66: ; preds = %_ZSt13copy_backwardISt13_Bit_iteratorS0_ET0_T_S2_S1_.exit @@ -32851,11 +32853,13 @@ _ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterato %154 = getelementptr inbounds i64, ptr %.sroa.03.0.lcssa.i.i.i.i.i.i, i64 %153 %155 = and i64 %152, -9223372036854775745 %156 = icmp ugt i64 %155, -9223372036854775808 + %storemerge.idx.i.i.i85.neg = select i1 %156, i64 8, i64 0 %storemerge.idx.i.i.i85 = select i1 %156, i64 -8, i64 0 %storemerge.i.i.i86 = getelementptr inbounds i8, ptr %154, i64 %storemerge.idx.i.i.i85 %157 = trunc i64 %152 to i32 %158 = and i32 %157, 63 - %.not.i.i.i89 = icmp eq ptr %.sroa.03.0.lcssa.i.i.i.i.i.i, %storemerge.i.i.i86 + %.idx158 = shl nsw i64 %153, 3 + %.not.i.i.i89 = icmp eq i64 %.idx158, %storemerge.idx.i.i.i85.neg br i1 %.not.i.i.i89, label %185, label %159 159: ; preds = %_ZNSt6vectorIbSaIbEE15_M_copy_alignedESt19_Bit_const_iteratorS2_St13_Bit_iterator.exit @@ -109993,7 +109997,7 @@ _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPmSt6vectorImSaImEEEES6_ET0_T_S8_S7_.ex 49: ; preds = %46 %50 = getelementptr inbounds i8, ptr %48, i64 -8 %51 = load i64, ptr %50, align 8, !tbaa !44 - %.not.i.i.i.i.i35 = icmp eq ptr %50, %.sroa.043.0 + %.not.i.i.i.i.i35 = icmp eq i64 %.0, 1 br i1 %.not.i.i.i.i.i35, label %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPmSt6vectorImSaImEEEES6_ET0_T_S8_S7_.exit, label %52 52: ; preds = %49 diff --git a/bench/z3/optimized/inj_axiom.ll b/bench/z3/optimized/inj_axiom.ll index e0a316cd719..b87ac3dbe09 100644 --- a/bench/z3/optimized/inj_axiom.ll +++ b/bench/z3/optimized/inj_axiom.ll @@ -650,24 +650,25 @@ _ZN11ast_manager5mk_eqEP4exprS1_.exit: ; preds = %300 store ptr %302, ptr %16, align 8, !tbaa !30 %304 = load ptr, ptr %7, align 8, !tbaa !39 %305 = load i32, ptr %219, align 8, !tbaa !42 - %306 = zext i32 %305 to i64 - %307 = getelementptr inbounds nuw ptr, ptr %304, i64 %306 - %308 = icmp ne i32 %305, 0 - %.012.i.i = getelementptr inbounds i8, ptr %307, i64 -8 - %309 = icmp ult ptr %304, %.012.i.i - %or.cond.i.i = select i1 %308, i1 %309, i1 false - br i1 %or.cond.i.i, label %.lr.ph.i.i, label %_ZSt7reverseIPP4sortEvT_S3_.exit - -.lr.ph.i.i: ; preds = %303, %.lr.ph.i.i - %.014.i.i = phi ptr [ %.0.i.i, %.lr.ph.i.i ], [ %.012.i.i, %303 ] - %.0913.i.i = phi ptr [ %312, %.lr.ph.i.i ], [ %304, %303 ] + %306 = icmp ugt i32 %305, 1 + br i1 %306, label %.lr.ph.i.i.preheader, label %_ZSt7reverseIPP4sortEvT_S3_.exit + +.lr.ph.i.i.preheader:; preds = %303 + %307 = zext i32 %305 to i64 + %308 = getelementptr inbounds nuw ptr, ptr %304, i64 %307 + %.012.i.i = getelementptr inbounds i8, ptr %308, i64 -8 + br label %.lr.ph.i.i + +.lr.ph.i.i:; preds = %.lr.ph.i.i.preheader, %.lr.ph.i.i + %.0913.i.i = phi ptr [ %.0.i.i, %.lr.ph.i.i ], [ %.012.i.i, %.lr.ph.i.i.preheader ] + %.0913.i.i = phi ptr [ %311, %.lr.ph.i.i ], [ %304, %.lr.ph.i.i.preheader ] + %311 = load ptr, ptr %.0913.i.i, align 8, !tbaa !50 %310 = load ptr, ptr %.0913.i.i, align 8, !tbaa !50 - %311 = load ptr, ptr %.014.i.i, align 8, !tbaa !50 - store ptr %311, ptr %.0913.i.i, align 8, !tbaa !50 - store ptr %310, ptr %.014.i.i, align 8, !tbaa !50 - %312 = getelementptr inbounds nuw i8, ptr %.0913.i.i, i64 8 + store ptr %310, ptr %.0913.i.i, align 8, !tbaa !50 + store ptr %309, ptr %.0913.i.i, align 8, !tbaa !50 + %311 = getelementptr inbounds nuw i8, ptr %.0913.i.i, i64 8 %.0.i.i = getelementptr inbounds i8, ptr %.014.i.i, i64 -8 - %313 = icmp ult ptr %312, %.0.i.i + %313 = icmp ult ptr %311, %.0.i.i br i1 %313, label %.lr.ph.i.i, label %_ZSt7reverseIPP4sortEvT_S3_.exit, !llvm.loop !58 _ZSt7reverseIPP4sortEvT_S3_.exit: ; preds = %.lr.ph.i.i, %303 @@ -681,7 +682,7 @@ _ZSt7reverseIPP4sortEvT_S3_.exit: ; preds = %.lr.ph.i.i, %303 _ZN11ast_manager9mk_forallEjPKP4sortPK6symbolP4expriRS5_S9_jPKS8_jSB_.exit: ; preds = %_ZSt7reverseIPP4sortEvT_S3_.exit %316 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN7obj_refI4expr11ast_managerEaSEPS0_(ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef %315) - to label %317 unwind label %326 + to label %316 unwind label %326 317: ; preds = %_ZN11ast_manager9mk_forallEjPKP4sortPK6symbolP4expriRS5_S9_jPKS8_jSB_.exit call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #17 @@ -727,18 +728,18 @@ _ZN11ast_manager9mk_forallEjPKP4sortPK6symbolP4expriRS5_S9_jPKS8_jSB_.exit: ; pr br label %328 328: ; preds = %326, %324 - %.pn = phi { ptr, i32 } [ %327, %326 ], [ %325, %324 ] + %.pn = phi { ptr, i32 } [ %327, %325 ], [ %325, %323 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #17 br label %329 329: ; preds = %318, %322, %328, %320, %294, %282 - %.pn118 = phi { ptr, i32 } [ %295, %294 ], [ %283, %282 ], [ %319, %318 ], [ %321, %320 ], [ %.pn, %328 ], [ %323, %322 ] + %.pn118 = phi { ptr, i32 } [ %295, %294 ], [ %283, %282 ], [ %319, %317 ], [ %321, %319 ], [ %.pn, %327 ], [ %323, %321 ] call void @_ZN6vectorIP4sortLb0EjED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #17 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #17 br label %330 330: ; preds = %280, %329, %263 - %.pn121.pn.pn = phi { ptr, i32 } [ %.pn121.pn, %263 ], [ %.pn118, %329 ], [ %281, %280 ] + %.pn121.pn.pn = phi { ptr, i32 } [ %.pn121.pn, %263 ], [ %.pn118, %328 ], [ %281, %280 ] call void @_ZN6bufferI6symbolLb1ELj16EED2Ev(ptr noundef nonnull align 8 dereferenceable(144) %8) #17 call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %8) #17 call void @_ZN6bufferIP4sortLb0ELj16EED2Ev(ptr noundef nonnull align 8 dereferenceable(144) %7) #17 @@ -750,7 +751,7 @@ _ZN11ast_manager9mk_forallEjPKP4sortPK6symbolP4expriRS5_S9_jPKS8_jSB_.exit: ; pr resume { ptr, i32 } %.pn121.pn.pn _Z9is_forallPK3ast.exit.thread: ; preds = %_Z17is_uninterp_constPK4expr.exit, %201, %204, %184, %177, %._crit_edge, %209, %118, %109, %_ZNK11ast_manager5is_eqEPK4expr.exit.i136, %129, %94, %87, %_ZNK11ast_manager5is_eqEPK4expr.exit.i, %105, %72, %_ZNK11ast_manager6is_notEPK4expr.exit.thread, %_ZNK11ast_manager6is_notEPK4expr.exit.i, %83, %33, %28, %_ZNK11ast_manager5is_orEPK4expr.exit.i, %44, %3, %_Z9is_forallPK3ast.exit, %133, %142, %147, %153, %_ZNK3app13get_family_idEv.exit, %_ZNK3app13get_family_idEv.exit.thread, %165, %170, %317 - %.4 = phi i1 [ true, %317 ], [ false, %170 ], [ false, %165 ], [ false, %_ZNK3app13get_family_idEv.exit.thread ], [ false, %_ZNK3app13get_family_idEv.exit ], [ false, %153 ], [ false, %147 ], [ false, %142 ], [ false, %133 ], [ false, %_Z9is_forallPK3ast.exit ], [ false, %3 ], [ false, %44 ], [ false, %_ZNK11ast_manager5is_orEPK4expr.exit.i ], [ false, %28 ], [ false, %33 ], [ false, %83 ], [ false, %_ZNK11ast_manager6is_notEPK4expr.exit.i ], [ false, %_ZNK11ast_manager6is_notEPK4expr.exit.thread ], [ false, %72 ], [ false, %105 ], [ false, %_ZNK11ast_manager5is_eqEPK4expr.exit.i ], [ false, %87 ], [ false, %94 ], [ false, %129 ], [ false, %_ZNK11ast_manager5is_eqEPK4expr.exit.i136 ], [ false, %109 ], [ false, %118 ], [ false, %209 ], [ false, %._crit_edge ], [ false, %177 ], [ false, %184 ], [ false, %204 ], [ false, %201 ], [ false, %_Z17is_uninterp_constPK4expr.exit ] + %.4 = phi i1 [ true, %316 ], [ false, %170 ], [ false, %165 ], [ false, %_ZNK3app13get_family_idEv.exit.thread ], [ false, %_ZNK3app13get_family_idEv.exit ], [ false, %153 ], [ false, %147 ], [ false, %142 ], [ false, %133 ], [ false, %_Z9is_forallPK3ast.exit ], [ false, %3 ], [ false, %44 ], [ false, %_ZNK11ast_manager5is_orEPK4expr.exit.i ], [ false, %28 ], [ false, %33 ], [ false, %83 ], [ false, %_ZNK11ast_manager6is_notEPK4expr.exit.i ], [ false, %_ZNK11ast_manager6is_notEPK4expr.exit.thread ], [ false, %72 ], [ false, %105 ], [ false, %_ZNK11ast_manager5is_eqEPK4expr.exit.i ], [ false, %87 ], [ false, %94 ], [ false, %129 ], [ false, %_ZNK11ast_manager5is_eqEPK4expr.exit.i136 ], [ false, %109 ], [ false, %118 ], [ false, %209 ], [ false, %._crit_edge ], [ false, %177 ], [ false, %184 ], [ false, %204 ], [ false, %201 ], [ false, %_Z17is_uninterp_constPK4expr.exit ] ret i1 %.4 } diff --git a/bench/z3/optimized/nlsat_explain.ll b/bench/z3/optimized/nlsat_explain.ll index c269a61c2f9..ab0d3cce631 100644 --- a/bench/z3/optimized/nlsat_explain.ll +++ b/bench/z3/optimized/nlsat_explain.ll @@ -1622,17 +1622,18 @@ _ZN6vectorIN3sat7literalELb0EjE6appendEjPKS1_.exit: ; preds = %_ZN6vectorIN3sat7 _ZN6vectorIN3sat7literalELb0EjE3endEv.exit: ; preds = %31 %34 = getelementptr inbounds i8, ptr %32, i64 -4 %35 = load i32, ptr %34, align 4, !tbaa !61 - %36 = zext i32 %35 to i64 - %37 = getelementptr inbounds nuw %"class.sat::literal", ptr %32, i64 %36 - %38 = icmp ne i32 %35, 0 - %.012.i.i = getelementptr inbounds i8, ptr %37, i64 -4 - %39 = icmp ult ptr %32, %.012.i.i - %or.cond.i.i = select i1 %38, i1 %39, i1 false - br i1 %or.cond.i.i, label %.lr.ph.i.i, label %_ZSt7reverseIPN3sat7literalEEvT_S3_.exit - -.lr.ph.i.i: ; preds = %_ZN6vectorIN3sat7literalELb0EjE3endEv.exit, %.lr.ph.i.i - %.014.i.i = phi ptr [ %.0.i.i17, %.lr.ph.i.i ], [ %.012.i.i, %_ZN6vectorIN3sat7literalELb0EjE3endEv.exit ] - %.0913.i.i = phi ptr [ %41, %.lr.ph.i.i ], [ %32, %_ZN6vectorIN3sat7literalELb0EjE3endEv.exit ] + %36 = icmp ugt i32 %35, 1 + br i1 %36, label %.lr.ph.i.i.preheader, label %_ZSt7reverseIPN3sat7literalEEvT_S3_.exit + +.lr.ph.i.i.preheader:; preds = %_ZN6vectorIN3sat7literalELb0EjE3endEv.exit + %37 = zext i32 %35 to i64 + %38 = getelementptr inbounds nuw %"class.sat::literal", ptr %32, i64 %37 + %.012.i.i = getelementptr inbounds i8, ptr %38, i64 -4 + br label %.lr.ph.i.i + +.lr.ph.i.i:; preds = %.lr.ph.i.i.preheader, %.lr.ph.i.i + %.0913.i.i = phi ptr [ %.0.i.i17, %.lr.ph.i.i ], [ %.012.i.i, %.lr.ph.i.i.preheader ] + %.0913.i.i = phi ptr [ %40, %.lr.ph.i.i ], [ %32, %.lr.ph.i.i.preheader ] %.sroa.0.0.copyload.i.i.i.i = load i32, ptr %.0913.i.i, align 4, !tbaa !61 %40 = load i32, ptr %.014.i.i, align 4, !tbaa !61 store i32 %40, ptr %.0913.i.i, align 4, !tbaa !61 @@ -1689,8 +1690,8 @@ _ZNK6vectorIN3sat7literalELb0EjE4sizeEv.exit: ; preds = %44 br label %_ZN5nlsat21scoped_literal_vector9push_backEN3sat7literalE.exit.i _ZN5nlsat21scoped_literal_vector9push_backEN3sat7literalE.exit.i: ; preds = %62, %56 - %63 = phi i32 [ %.pre2.i.i.i, %62 ], [ %58, %56 ] - %64 = phi ptr [ %.pre.i.i.i, %62 ], [ %54, %56 ] + %63 = phi i32 [ %.pre2.i.i.i, %61 ], [ %58, %55 ] + %64 = phi ptr [ %.pre.i.i.i, %61 ], [ %54, %55 ] %65 = getelementptr inbounds i8, ptr %64, i64 -4 %66 = zext i32 %63 to i64 %67 = getelementptr inbounds nuw %"class.sat::literal", ptr %64, i64 %66 diff --git a/bench/z3/optimized/polynomial.ll b/bench/z3/optimized/polynomial.ll index 9b58dc54b15..59c4dbf8dac 100644 --- a/bench/z3/optimized/polynomial.ll +++ b/bench/z3/optimized/polynomial.ll @@ -75172,24 +75172,25 @@ _ZN15ref_vector_coreIN10polynomial10polynomialE19ref_manager_wrapperIS1_NS0_7man _ZNK15ref_vector_coreIN10polynomial10polynomialE19ref_manager_wrapperIS1_NS0_7managerEEE4sizeEv.exit: ; preds = %_ZN15ref_vector_coreIN10polynomial10polynomialE19ref_manager_wrapperIS1_NS0_7managerEEE9push_backEPS1_.exit, %_ZNK15ref_vector_coreIN10polynomial10polynomialE19ref_manager_wrapperIS1_NS0_7managerEEE5emptyEv.exit %167 = phi i32 [ %166, %_ZN15ref_vector_coreIN10polynomial10polynomialE19ref_manager_wrapperIS1_NS0_7managerEEE9push_backEPS1_.exit ], [ %147, %_ZNK15ref_vector_coreIN10polynomial10polynomialE19ref_manager_wrapperIS1_NS0_7managerEEE5emptyEv.exit ] %168 = phi ptr [ %162, %_ZN15ref_vector_coreIN10polynomial10polynomialE19ref_manager_wrapperIS1_NS0_7managerEEE9push_backEPS1_.exit ], [ %144, %_ZNK15ref_vector_coreIN10polynomial10polynomialE19ref_manager_wrapperIS1_NS0_7managerEEE5emptyEv.exit ] - %169 = zext i32 %167 to i64 - %170 = getelementptr inbounds nuw ptr, ptr %168, i64 %169 - %171 = icmp ne i32 %167, 0 - %.012.i.i = getelementptr inbounds i8, ptr %170, i64 -8 - %172 = icmp ult ptr %168, %.012.i.i - %or.cond.i.i = select i1 %171, i1 %172, i1 false - br i1 %or.cond.i.i, label %.lr.ph.i.i53, label %_ZSt7reverseIPPN10polynomial10polynomialEEvT_S4_.exit - -.lr.ph.i.i53: ; preds = %_ZNK15ref_vector_coreIN10polynomial10polynomialE19ref_manager_wrapperIS1_NS0_7managerEEE4sizeEv.exit, %.lr.ph.i.i53 - %.014.i.i = phi ptr [ %.0.i.i54, %.lr.ph.i.i53 ], [ %.012.i.i, %_ZNK15ref_vector_coreIN10polynomial10polynomialE19ref_manager_wrapperIS1_NS0_7managerEEE4sizeEv.exit ] - %.0913.i.i = phi ptr [ %175, %.lr.ph.i.i53 ], [ %168, %_ZNK15ref_vector_coreIN10polynomial10polynomialE19ref_manager_wrapperIS1_NS0_7managerEEE4sizeEv.exit ] + %169 = icmp ugt i32 %167, 1 + br i1 %169, label %.lr.ph.i.i53.preheader, label %_ZSt7reverseIPPN10polynomial10polynomialEEvT_S4_.exit + +.lr.ph.i.i53.preheader:; preds = %_ZNK15ref_vector_coreIN10polynomial10polynomialE19ref_manager_wrapperIS1_NS0_7managerEEE4sizeEv.exit + %170 = zext i32 %167 to i64 + %171 = getelementptr inbounds nuw ptr, ptr %168, i64 %170 + %.012.i.i = getelementptr inbounds i8, ptr %171, i64 -8 + br label %.lr.ph.i.i53 + +.lr.ph.i.i53:; preds = %.lr.ph.i.i53.preheader, %.lr.ph.i.i53 + %.0913.i.i = phi ptr [ %.0.i.i54, %.lr.ph.i.i53 ], [ %.012.i.i, %.lr.ph.i.i53.preheader ] + %.0913.i.i = phi ptr [ %174, %.lr.ph.i.i53 ], [ %168, %.lr.ph.i.i53.preheader ] + %174 = load ptr, ptr %.0913.i.i, align 8, !tbaa !47 %173 = load ptr, ptr %.0913.i.i, align 8, !tbaa !47 - %174 = load ptr, ptr %.014.i.i, align 8, !tbaa !47 - store ptr %174, ptr %.0913.i.i, align 8, !tbaa !47 - store ptr %173, ptr %.014.i.i, align 8, !tbaa !47 - %175 = getelementptr inbounds nuw i8, ptr %.0913.i.i, i64 8 + store ptr %173, ptr %.0913.i.i, align 8, !tbaa !47 + store ptr %172, ptr %.0913.i.i, align 8, !tbaa !47 + %174 = getelementptr inbounds nuw i8, ptr %.0913.i.i, i64 8 %.0.i.i54 = getelementptr inbounds i8, ptr %.014.i.i, i64 -8 - %176 = icmp ult ptr %175, %.0.i.i54 + %176 = icmp ult ptr %174, %.0.i.i54 br i1 %176, label %.lr.ph.i.i53, label %_ZSt7reverseIPPN10polynomial10polynomialEEvT_S4_.exit, !llvm.loop !581 _ZSt7reverseIPPN10polynomial10polynomialEEvT_S4_.exit: ; preds = %.lr.ph.i.i53, %_ZNK15ref_vector_coreIN10polynomial10polynomialE19ref_manager_wrapperIS1_NS0_7managerEEE4sizeEv.exit diff --git a/bench/z3/optimized/upolynomial.ll b/bench/z3/optimized/upolynomial.ll index 11680ae328d..fdda1cc9776 100644 --- a/bench/z3/optimized/upolynomial.ll +++ b/bench/z3/optimized/upolynomial.ll @@ -17967,99 +17967,97 @@ define hidden noundef i32 @_ZN11upolynomial7manager24nonzero_root_lower_boundEjP %11 = sub i32 %1, %.0 %12 = zext i32 %11 to i64 %13 = getelementptr inbounds nuw %class.mpz, ptr %6, i64 %12 - %14 = icmp ne i32 %1, %.0 %.012.i.i = getelementptr inbounds i8, ptr %13, i64 -16 - %15 = icmp ult ptr %6, %.012.i.i - %or.cond.i.i = select i1 %14, i1 %15, i1 false - br i1 %or.cond.i.i, label %.lr.ph.i.i, label %_ZSt7reverseIP3mpzEvT_S2_.exit + %15 = icmp ugt i32 %11, 1 + br i1 %14, label %.lr.ph.i.i, label %_ZSt7reverseIP3mpzEvT_S2_.exit .lr.ph.i.i: ; preds = %10, %.lr.ph.i.i %.015.i.i = phi ptr [ %.0.i.i, %.lr.ph.i.i ], [ %.012.i.i, %10 ] %.pn14.i.i = phi ptr [ %.015.i.i, %.lr.ph.i.i ], [ %13, %10 ] - %.0913.i.i = phi ptr [ %41, %.lr.ph.i.i ], [ %6, %10 ] + %.0913.i.i = phi ptr [ %40, %.lr.ph.i.i ], [ %6, %10 ] %16 = load i32, ptr %.0913.i.i, align 4, !tbaa !27 %17 = load i32, ptr %.015.i.i, align 4, !tbaa !27 store i32 %17, ptr %.0913.i.i, align 4, !tbaa !27 store i32 %16, ptr %.015.i.i, align 4, !tbaa !27 %18 = getelementptr inbounds nuw i8, ptr %.0913.i.i, i64 8 %19 = getelementptr inbounds i8, ptr %.pn14.i.i, i64 -8 + %19 = load ptr, ptr %17, align 8, !tbaa !44 %20 = load ptr, ptr %18, align 8, !tbaa !44 - %21 = load ptr, ptr %19, align 8, !tbaa !44 - store ptr %21, ptr %18, align 8, !tbaa !44 - store ptr %20, ptr %19, align 8, !tbaa !44 - %22 = getelementptr inbounds nuw i8, ptr %.0913.i.i, i64 4 - %23 = load i8, ptr %22, align 4 - %24 = and i8 %23, 2 - %25 = getelementptr inbounds i8, ptr %.pn14.i.i, i64 -12 - %26 = load i8, ptr %25, align 4 - %27 = and i8 %26, 2 - %28 = and i8 %23, -3 - %29 = or disjoint i8 %27, %28 - store i8 %29, ptr %22, align 4 - %30 = load i8, ptr %25, align 4 - %31 = and i8 %30, -3 - %32 = or disjoint i8 %31, %24 - store i8 %32, ptr %25, align 4 - %33 = load i8, ptr %22, align 4 - %34 = and i8 %33, 1 - %35 = and i8 %30, 1 - %36 = and i8 %33, -2 - %37 = or disjoint i8 %36, %35 - store i8 %37, ptr %22, align 4 - %38 = load i8, ptr %25, align 4 - %39 = and i8 %38, -2 - %40 = or disjoint i8 %39, %34 - store i8 %40, ptr %25, align 4 - %41 = getelementptr inbounds nuw i8, ptr %.0913.i.i, i64 16 + store ptr %20, ptr %17, align 8, !tbaa !44 + store ptr %19, ptr %18, align 8, !tbaa !44 + %21 = getelementptr inbounds nuw i8, ptr %.0913.i.i, i64 4 + %22 = load i8, ptr %21, align 4 + %23 = and i8 %22, 2 + %24 = getelementptr inbounds i8, ptr %.pn14.i.i, i64 -12 + %25 = load i8, ptr %24, align 4 + %26 = and i8 %25, 2 + %27 = and i8 %22, -3 + %28 = or disjoint i8 %26, %27 + store i8 %28, ptr %21, align 4 + %29 = load i8, ptr %24, align 4 + %30 = and i8 %29, -3 + %31 = or disjoint i8 %30, %23 + store i8 %31, ptr %24, align 4 + %32 = load i8, ptr %21, align 4 + %33 = and i8 %32, 1 + %34 = and i8 %29, 1 + %35 = and i8 %32, -2 + %36 = or disjoint i8 %35, %34 + store i8 %36, ptr %21, align 4 + %37 = load i8, ptr %24, align 4 + %38 = and i8 %37, -2 + %39 = or disjoint i8 %38, %33 + store i8 %39, ptr %24, align 4 + %40 = getelementptr inbounds nuw i8, ptr %.0913.i.i, i64 16 %.0.i.i = getelementptr inbounds i8, ptr %.015.i.i, i64 -16 - %42 = icmp ult ptr %41, %.0.i.i + %42 = icmp ult ptr %40, %.0.i.i br i1 %42, label %.lr.ph.i.i, label %_ZSt7reverseIP3mpzEvT_S2_.exit, !llvm.loop !186 _ZSt7reverseIP3mpzEvT_S2_.exit: ; preds = %.lr.ph.i.i, %10 %43 = tail call noundef i32 @_ZN11upolynomial7manager31knuth_positive_root_upper_boundEjPK3mpz(ptr noundef nonnull align 8 dereferenceable(312) %0, i32 noundef %11, ptr noundef nonnull %6) %44 = tail call noundef i32 @_ZN11upolynomial7manager31knuth_negative_root_upper_boundEjPK3mpz(ptr noundef nonnull align 8 dereferenceable(312) %0, i32 noundef %11, ptr noundef nonnull %6) - br i1 %or.cond.i.i, label %.lr.ph.i.i20, label %_ZSt7reverseIP3mpzEvT_S2_.exit25 + br i1 %14, label %.lr.ph.i.i20, label %_ZSt7reverseIP3mpzEvT_S2_.exit25 .lr.ph.i.i20: ; preds = %_ZSt7reverseIP3mpzEvT_S2_.exit, %.lr.ph.i.i20 %.015.i.i21 = phi ptr [ %.0.i.i24, %.lr.ph.i.i20 ], [ %.012.i.i, %_ZSt7reverseIP3mpzEvT_S2_.exit ] %.pn14.i.i22 = phi ptr [ %.015.i.i21, %.lr.ph.i.i20 ], [ %13, %_ZSt7reverseIP3mpzEvT_S2_.exit ] - %.0913.i.i23 = phi ptr [ %70, %.lr.ph.i.i20 ], [ %6, %_ZSt7reverseIP3mpzEvT_S2_.exit ] + %.0913.i.i23 = phi ptr [ %69, %.lr.ph.i.i20 ], [ %6, %_ZSt7reverseIP3mpzEvT_S2_.exit ] %45 = load i32, ptr %.0913.i.i23, align 4, !tbaa !27 %46 = load i32, ptr %.015.i.i21, align 4, !tbaa !27 store i32 %46, ptr %.0913.i.i23, align 4, !tbaa !27 store i32 %45, ptr %.015.i.i21, align 4, !tbaa !27 %47 = getelementptr inbounds nuw i8, ptr %.0913.i.i23, i64 8 %48 = getelementptr inbounds i8, ptr %.pn14.i.i22, i64 -8 + %48 = load ptr, ptr %46, align 8, !tbaa !44 %49 = load ptr, ptr %47, align 8, !tbaa !44 - %50 = load ptr, ptr %48, align 8, !tbaa !44 - store ptr %50, ptr %47, align 8, !tbaa !44 - store ptr %49, ptr %48, align 8, !tbaa !44 - %51 = getelementptr inbounds nuw i8, ptr %.0913.i.i23, i64 4 - %52 = load i8, ptr %51, align 4 - %53 = and i8 %52, 2 - %54 = getelementptr inbounds i8, ptr %.pn14.i.i22, i64 -12 - %55 = load i8, ptr %54, align 4 - %56 = and i8 %55, 2 - %57 = and i8 %52, -3 - %58 = or disjoint i8 %56, %57 - store i8 %58, ptr %51, align 4 - %59 = load i8, ptr %54, align 4 - %60 = and i8 %59, -3 - %61 = or disjoint i8 %60, %53 - store i8 %61, ptr %54, align 4 - %62 = load i8, ptr %51, align 4 - %63 = and i8 %62, 1 - %64 = and i8 %59, 1 - %65 = and i8 %62, -2 - %66 = or disjoint i8 %65, %64 - store i8 %66, ptr %51, align 4 - %67 = load i8, ptr %54, align 4 - %68 = and i8 %67, -2 - %69 = or disjoint i8 %68, %63 - store i8 %69, ptr %54, align 4 - %70 = getelementptr inbounds nuw i8, ptr %.0913.i.i23, i64 16 + store ptr %49, ptr %46, align 8, !tbaa !44 + store ptr %48, ptr %47, align 8, !tbaa !44 + %50 = getelementptr inbounds nuw i8, ptr %.0913.i.i23, i64 4 + %51 = load i8, ptr %50, align 4 + %52 = and i8 %51, 2 + %53 = getelementptr inbounds i8, ptr %.pn14.i.i22, i64 -12 + %54 = load i8, ptr %53, align 4 + %55 = and i8 %54, 2 + %56 = and i8 %51, -3 + %57 = or disjoint i8 %55, %56 + store i8 %57, ptr %50, align 4 + %58 = load i8, ptr %53, align 4 + %59 = and i8 %58, -3 + %60 = or disjoint i8 %59, %52 + store i8 %60, ptr %53, align 4 + %61 = load i8, ptr %50, align 4 + %62 = and i8 %61, 1 + %63 = and i8 %58, 1 + %64 = and i8 %61, -2 + %65 = or disjoint i8 %64, %63 + store i8 %65, ptr %50, align 4 + %66 = load i8, ptr %53, align 4 + %67 = and i8 %66, -2 + %68 = or disjoint i8 %67, %62 + store i8 %68, ptr %53, align 4 + %69 = getelementptr inbounds nuw i8, ptr %.0913.i.i23, i64 16 %.0.i.i24 = getelementptr inbounds i8, ptr %.015.i.i21, i64 -16 - %71 = icmp ult ptr %70, %.0.i.i24 + %71 = icmp ult ptr %69, %.0.i.i24 br i1 %71, label %.lr.ph.i.i20, label %_ZSt7reverseIP3mpzEvT_S2_.exit25, !llvm.loop !186 _ZSt7reverseIP3mpzEvT_S2_.exit25: ; preds = %.lr.ph.i.i20, %_ZSt7reverseIP3mpzEvT_S2_.exit diff --git a/bench/zed-rs/optimized/axq0fnk57nrkchega3zj2zynp.ll b/bench/zed-rs/optimized/axq0fnk57nrkchega3zj2zynp.ll index afc07a52726..c610fb62ee8 100644 --- a/bench/zed-rs/optimized/axq0fnk57nrkchega3zj2zynp.ll +++ b/bench/zed-rs/optimized/axq0fnk57nrkchega3zj2zynp.ll @@ -41899,7 +41899,7 @@ default.unreachable: ; preds = %.noexc .loopexit.split-lp36: ; preds = %.loopexit35, %.loopexit.split-lp36.loopexit.split-lp, %.loopexit.split-lp36.loopexit, %85 %.pn16 = phi { ptr, i32 } [ %.pn, %85 ], [ %lpad.loopexit37, %.loopexit35 ], [ %lpad.loopexit40, %.loopexit.split-lp36.loopexit ], [ %lpad.loopexit.split-lp41, %.loopexit.split-lp36.loopexit.split-lp ] invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h456eb04633331537E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %2) #47 - to label %162 unwind label %160 + to label %159 unwind label %160 .loopexit35: ; preds = %"_ZN4core4iter6traits8iterator8Iterator3any5check28_$u7b$$u7b$closure$u7d$$u7d$17h58da1117c5d7b386E.exit.i" %lpad.loopexit37 = landingpad { ptr, i32 } @@ -42165,32 +42165,28 @@ default.unreachable: ; preds = %.noexc store i8 1, ptr %126, align 1 store i8 0, ptr %0, align 8 invoke void @"_ZN4core3ptr80drop_in_place$LT$alloc..vec..Vec$LT$fuzzy..strings..StringMatchCandidate$GT$$GT$17hfccd7c2898e26539E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %14) - to label %150 unwind label %.loopexit.split-lp36.loopexit.split-lp + to label %147 unwind label %.loopexit.split-lp36.loopexit.split-lp 127: ; preds = %.loopexit33 %128 = load ptr, ptr %99, align 8, !nonnull !4, !noundef !4 %129 = load i64, ptr %101, align 8, !noundef !4 - %130 = icmp eq i64 %129, 0 + %130 = icmp ult i64 %129, 2 br i1 %130, label %_ZN4core4iter6traits8iterator8Iterator6reduce17h7a4000cb9b54e9a4E.exit.thread, label %131 131: ; preds = %127 %132 = getelementptr inbounds { { { i64, ptr, {} }, i64 }, { { { i64, ptr, {} }, i64 } }, i64, double }, ptr %128, i64 %129 - %133 = getelementptr inbounds i8, ptr %132, i64 -64 - %134 = icmp eq ptr %128, %133 - br i1 %134, label %_ZN4core4iter6traits8iterator8Iterator6reduce17h7a4000cb9b54e9a4E.exit.thread, label %.lr.ph.i.i.i.i.i.preheader - -.lr.ph.i.i.i.i.i.preheader: ; preds = %131 - %135 = getelementptr inbounds i8, ptr %132, i64 -8 - %136 = load double, ptr %135, align 8, !alias.scope !7622, !noalias !7627, !noundef !4 - %137 = add i64 %129, 288230376151711743 - %138 = and i64 %137, 288230376151711743 + %133 = getelementptr inbounds i8, ptr %132, i64 -8 + %132 = load double, ptr %131, align 8, !alias.scope !7622, !noalias !7627, !noundef !4 + %133 = add i64 %129, 288230376151711743 + %134 = and i64 %133, 288230376151711743 + %135 = getelementptr inbounds i8, ptr %130, i64 -64 br label %.lr.ph.i.i.i.i.i .lr.ph.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i.preheader, %.lr.ph.i.i.i.i.i - %.sroa.013.0.i = phi double [ %.sroa.013.0.copyload14.sroa.speculated.i, %.lr.ph.i.i.i.i.i ], [ %136, %.lr.ph.i.i.i.i.i.preheader ] - %.sroa.616.0.i = phi i64 [ %.sroa.616.0.copyload17.sroa.speculated.i, %.lr.ph.i.i.i.i.i ], [ %138, %.lr.ph.i.i.i.i.i.preheader ] - %.sroa.04.09.i.i.i.i.i = phi i64 [ %140, %.lr.ph.i.i.i.i.i ], [ %138, %.lr.ph.i.i.i.i.i.preheader ] - %.sroa.2.08.i.i.i.i.i = phi ptr [ %139, %.lr.ph.i.i.i.i.i ], [ %133, %.lr.ph.i.i.i.i.i.preheader ] + %.sroa.013.0.i = phi double [ %.sroa.013.0.copyload14.sroa.speculated.i, %.lr.ph.i.i.i.i.i ], [ %132, %.lr.ph.i.i.i.i.i.preheader ] + %.sroa.616.0.i = phi i64 [ %.sroa.616.0.copyload17.sroa.speculated.i, %.lr.ph.i.i.i.i.i ], [ %134, %.lr.ph.i.i.i.i.i.preheader ] + %.sroa.04.09.i.i.i.i.i = phi i64 [ %140, %.lr.ph.i.i.i.i.i ], [ %134, %.lr.ph.i.i.i.i.i.preheader ] + %.sroa.2.08.i.i.i.i.i = phi ptr [ %139, %.lr.ph.i.i.i.i.i ], [ %135, %.lr.ph.i.i.i.i.i.preheader ] %139 = getelementptr inbounds i8, ptr %.sroa.2.08.i.i.i.i.i, i64 -64 %140 = add nsw i64 %.sroa.04.09.i.i.i.i.i, -1 %141 = getelementptr inbounds i8, ptr %.sroa.2.08.i.i.i.i.i, i64 -8 @@ -42207,8 +42203,8 @@ default.unreachable: ; preds = %.noexc %148 = icmp eq ptr %128, %139 br i1 %148, label %_ZN4core4iter6traits8iterator8Iterator6reduce17h7a4000cb9b54e9a4E.exit.thread, label %.lr.ph.i.i.i.i.i -_ZN4core4iter6traits8iterator8Iterator6reduce17h7a4000cb9b54e9a4E.exit.thread: ; preds = %.lr.ph.i.i.i.i.i, %131, %127 - %.sroa.012.0 = phi i64 [ 0, %127 ], [ 0, %131 ], [ %.sroa.616.0.copyload17.sroa.speculated.i, %.lr.ph.i.i.i.i.i ] +_ZN4core4iter6traits8iterator8Iterator6reduce17h7a4000cb9b54e9a4E.exit.thread: ; preds = %.lr.ph.i.i.i.i.i, %127 + %.sroa.012.0 = phi i64 [ 0, %127 ], [ %.sroa.616.0.copyload17.sroa.speculated.i, %.lr.ph.i.i.i.i.i ] %149 = getelementptr inbounds nuw i8, ptr %1, i64 80 store i64 %.sroa.012.0, ptr %149, align 8 br label %125 diff --git a/bench/zstd/optimized/zstd_double_fast.ll b/bench/zstd/optimized/zstd_double_fast.ll index a2b6ff9f179..72cbbc9303c 100644 --- a/bench/zstd/optimized/zstd_double_fast.ll +++ b/bench/zstd/optimized/zstd_double_fast.ll @@ -10010,7 +10010,7 @@ define internal fastcc i64 @ZSTD_compressBlock_doubleFast_extDict_generic(ptr no br i1 %.not, label %.preheader, label %59 .preheader: ; preds = %6 - %47 = icmp ult ptr %3, %17 + %47 = icmp sgt i64 %4, 8 br i1 %47, label %.lr.ph542, label %._crit_edge .lr.ph542: ; preds = %.preheader @@ -10121,7 +10121,7 @@ ZSTD_hashPtr.exit358: ; preds = %62, %66, %69, %72 %105 = select i1 %94, ptr %43, ptr %16 %106 = getelementptr inbounds nuw i8, ptr %.0306541, i64 5 %107 = getelementptr inbounds nuw i8, ptr %97, i64 4 - %108 = tail call fastcc i64 @ZSTD_count_2segments(ptr noundef nonnull %106, ptr noundef nonnull %107, ptr noundef %16, ptr noundef %105, ptr noundef nonnull %38) + %108 = tail call fastcc i64 @ZSTD_count_2segments(ptr noundef nonnull %106, ptr noundef nonnull %107, ptr noundef nonnull %16, ptr noundef nonnull %105, ptr noundef nonnull %38) %109 = add i64 %108, 4 %110 = ptrtoint ptr %102 to i64 %111 = ptrtoint ptr %.0307540 to i64 @@ -10259,7 +10259,7 @@ ZSTD_storeSeq.exit364: ; preds = %125, %.lr.ph.i, %ZS %168 = select i1 %85, ptr %42, ptr %38 %169 = getelementptr inbounds nuw i8, ptr %.0306541, i64 8 %170 = getelementptr inbounds nuw i8, ptr %88, i64 8 - %171 = tail call fastcc i64 @ZSTD_count_2segments(ptr noundef nonnull %169, ptr noundef nonnull %170, ptr noundef %16, ptr noundef %167, ptr noundef nonnull %38) + %171 = tail call fastcc i64 @ZSTD_count_2segments(ptr noundef nonnull %169, ptr noundef nonnull %170, ptr noundef nonnull %16, ptr noundef nonnull %167, ptr noundef nonnull %38) %172 = add i64 %171, 8 %173 = sub i32 %91, %84 %174 = icmp ugt ptr %.0306541, %.0307540 @@ -10452,7 +10452,7 @@ ZSTD_storeSeq.exit362: ; preds = %202, %.lr.ph.i431, %258 = select i1 %249, ptr %42, ptr %38 %259 = getelementptr inbounds nuw i8, ptr %.0306541, i64 9 %260 = getelementptr inbounds nuw i8, ptr %252, i64 8 - %261 = tail call fastcc i64 @ZSTD_count_2segments(ptr noundef nonnull %259, ptr noundef nonnull %260, ptr noundef %16, ptr noundef %257, ptr noundef nonnull %38) + %261 = tail call fastcc i64 @ZSTD_count_2segments(ptr noundef nonnull %259, ptr noundef nonnull %260, ptr noundef nonnull %16, ptr noundef nonnull %257, ptr noundef nonnull %38) %262 = add i64 %261, 8 %263 = sub i32 %92, %248 %264 = icmp ugt ptr %244, %.0307540 @@ -10483,7 +10483,7 @@ ZSTD_storeSeq.exit362: ; preds = %202, %.lr.ph.i431, %279 = select i1 %77, ptr %42, ptr %38 %280 = getelementptr inbounds nuw i8, ptr %.0306541, i64 4 %281 = getelementptr inbounds nuw i8, ptr %80, i64 4 - %282 = tail call fastcc i64 @ZSTD_count_2segments(ptr noundef nonnull %280, ptr noundef nonnull %281, ptr noundef %16, ptr noundef %278, ptr noundef nonnull %38) + %282 = tail call fastcc i64 @ZSTD_count_2segments(ptr noundef nonnull %280, ptr noundef nonnull %281, ptr noundef nonnull %16, ptr noundef nonnull %278, ptr noundef nonnull %38) %283 = add i64 %282, 4 %284 = sub i32 %91, %76 %285 = icmp ugt ptr %.0306541, %.0307540 @@ -10789,7 +10789,7 @@ ZSTD_hashPtr.exit352: ; preds = %367 %423 = select i1 %414, ptr %43, ptr %16 %424 = getelementptr inbounds nuw i8, ptr %.3310525, i64 4 %425 = getelementptr inbounds nuw i8, ptr %416, i64 4 - %426 = tail call fastcc i64 @ZSTD_count_2segments(ptr noundef nonnull %424, ptr noundef nonnull %425, ptr noundef %16, ptr noundef %423, ptr noundef nonnull %38) + %426 = tail call fastcc i64 @ZSTD_count_2segments(ptr noundef nonnull %424, ptr noundef nonnull %425, ptr noundef nonnull %16, ptr noundef nonnull %423, ptr noundef nonnull %38) %.not.i = icmp ugt ptr %.3310525, %53 br i1 %.not.i, label %ZSTD_storeSeq.exit, label %427 diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c5409e09ef4..83617772298 100755 --- a/scripts/setup_pre_commit_patch.sh +++ b/scripts/setup_pre_commit_patch.sh @@ -2,7 +2,7 @@ set -euo pipefail shopt -s inherit_errexit -export GITHUB_PATCH_ID="/llvm-project/commit/" +export GITHUB_PATCH_ID=llvm/llvm-project/pull/144065 export COMPTIME_MODE=0 # Please rebase manually