diff --git a/bench/abc/optimized/bmcMaj.ll b/bench/abc/optimized/bmcMaj.ll index b2517a7403f..79d1cb25f8f 100644 --- a/bench/abc/optimized/bmcMaj.ll +++ b/bench/abc/optimized/bmcMaj.ll @@ -5010,13 +5010,13 @@ define internal fastcc void @Abc_TtReadHex(ptr noundef nonnull captures(none) %0 %40 = xor i64 %indvars.iv66, -1 %41 = getelementptr i8, ptr %39, i64 %40 %42 = load i8, ptr %41, align 1, !tbaa !152 - %43 = sext i8 %42 to i32 + %43 = sext i8 %42 to i64 %44 = add i8 %42, -48 %or.cond.i43 = icmp ult i8 %44, 10 br i1 %or.cond.i43, label %45, label %47 45: ; preds = %.lr.ph57 - %46 = add nsw i32 %43, -48 + %46 = add nsw i64 %43, -48 br label %Abc_TtReadHexDigit.exit 47: ; preds = %.lr.ph57 @@ -5025,28 +5025,27 @@ define internal fastcc void @Abc_TtReadHex(ptr noundef nonnull captures(none) %0 br i1 %or.cond5.i, label %49, label %51 49: ; preds = %47 - %50 = add nsw i32 %43, -55 + %50 = add nsw i64 %43, -55 br label %Abc_TtReadHexDigit.exit 51: ; preds = %47 %52 = add i8 %42, -97 %or.cond8.i = icmp ult i8 %52, 6 - %53 = add nsw i32 %43, -87 - %spec.select.i = select i1 %or.cond8.i, i32 %53, i32 -1 + %53 = add nsw i64 %43, -87 + %spec.select.i = select i1 %or.cond8.i, i64 %53, i64 -1 br label %Abc_TtReadHexDigit.exit Abc_TtReadHexDigit.exit: ; preds = %45, %49, %51 - %.0.i = phi i32 [ %46, %45 ], [ %50, %49 ], [ %spec.select.i, %51 ] - %54 = sext i32 %.0.i to i64 - %55 = shl i64 %indvars.iv66, 2 - %56 = and i64 %55, 60 - %57 = shl i64 %54, %56 - %58 = lshr i64 %indvars.iv66, 4 - %59 = and i64 %58, 268435455 - %60 = getelementptr inbounds nuw i64, ptr %0, i64 %59 - %61 = load i64, ptr %60, align 8, !tbaa !21 - %62 = or i64 %57, %61 - store i64 %62, ptr %60, align 8, !tbaa !21 + %.0.i = phi i64 [ %46, %45 ], [ %50, %49 ], [ %spec.select.i, %51 ] + %54 = shl i64 %indvars.iv66, 2 + %55 = and i64 %54, 60 + %56 = shl i64 %.0.i, %55 + %57 = lshr i64 %indvars.iv66, 4 + %58 = and i64 %57, 268435455 + %59 = getelementptr inbounds nuw i64, ptr %0, i64 %58 + %60 = load i64, ptr %59, align 8, !tbaa !21 + %61 = or i64 %60, %56 + store i64 %61, ptr %59, align 8, !tbaa !21 %indvars.iv.next67 = add nuw nsw i64 %indvars.iv66, 1 %exitcond.not = icmp eq i64 %indvars.iv.next67, %wide.trip.count br i1 %exitcond.not, label %._crit_edge58, label %.lr.ph57, !llvm.loop !154 @@ -5074,7 +5073,7 @@ Abc_TtReadHexDigit.exit: ; preds = %45, %49, %51 br label %.sink.split .sink.split: ; preds = %.thread83, %64, %22, %25 - %.sink = phi i64 [ %27, %25 ], [ %24, %22 ], [ 0, %.thread83 ], [ %76, %64 ] + %.sink = phi i64 [ %27, %25 ], [ %24, %22 ], [ 0, %.thread83 ], [ %76, %63 ] store i64 %.sink, ptr %0, align 8, !tbaa !21 br label %77 diff --git a/bench/abc/optimized/ioReadPla.ll b/bench/abc/optimized/ioReadPla.ll index eef68589490..fc19d5ff07a 100644 --- a/bench/abc/optimized/ioReadPla.ll +++ b/bench/abc/optimized/ioReadPla.ll @@ -900,39 +900,40 @@ Abc_TtImply.exit83.us: ; preds = %.lr.ph.i78.us %98 = icmp eq i64 %97, 0 %99 = lshr exact i64 %94, 32 %spec.select.i.i.us.us = select i1 %98, i64 %99, i64 %94 - %spec.select27.i.i.us.us = select i1 %98, i32 32, i32 0 + %spec.select27.i.i.us.us = select i1 %98, i8 32, i8 0 %100 = and i64 %spec.select.i.i.us.us, 21845 %101 = icmp eq i64 %100, 0 - %102 = or disjoint i32 %spec.select27.i.i.us.us, 16 + %102 = or disjoint i8 %spec.select27.i.i.us.us, 16 %103 = lshr exact i64 %spec.select.i.i.us.us, 16 %.121.i.i.us.us = select i1 %101, i64 %103, i64 %spec.select.i.i.us.us - %.1.i.i.us.us = select i1 %101, i32 %102, i32 %spec.select27.i.i.us.us + %.1.i.i.us.us = select i1 %101, i8 %102, i8 %spec.select27.i.i.us.us %104 = and i64 %.121.i.i.us.us, 85 %105 = icmp eq i64 %104, 0 - %106 = or disjoint i32 %.1.i.i.us.us, 8 + %106 = or disjoint i8 %.1.i.i.us.us, 8 %107 = lshr exact i64 %.121.i.i.us.us, 8 %.222.i.i.us.us = select i1 %105, i64 %107, i64 %.121.i.i.us.us - %.2.i.i.us.us = select i1 %105, i32 %106, i32 %.1.i.i.us.us + %.2.i.i.us.us = select i1 %105, i8 %106, i8 %.1.i.i.us.us %108 = and i64 %.222.i.i.us.us, 15 %109 = icmp eq i64 %108, 0 - %110 = or disjoint i32 %.2.i.i.us.us, 4 + %110 = or disjoint i8 %.2.i.i.us.us, 4 %111 = lshr exact i64 %.222.i.i.us.us, 4 %.323.i.i.us.us = select i1 %109, i64 %111, i64 %.222.i.i.us.us - %.3.i.i.us.us = select i1 %109, i32 %110, i32 %.2.i.i.us.us + %.3.i.i.us.us = select i1 %109, i8 %110, i8 %.2.i.i.us.us %112 = and i64 %.323.i.i.us.us, 3 %113 = icmp eq i64 %112, 0 - %114 = add nuw nsw i32 %.3.i.i.us.us, 2 + %114 = add nuw nsw i8 %.3.i.i.us.us, 2 %115 = lshr exact i64 %.323.i.i.us.us, 2 %.424.i.i.us.us = select i1 %113, i64 %115, i64 %.323.i.i.us.us - %.4.i.i.us.us = select i1 %113, i32 %114, i32 %.3.i.i.us.us - %116 = trunc i64 %.424.i.i.us.us to i32 - %117 = and i32 %116, 1 - %118 = xor i32 %117, 1 - %.5.i.i.us.us = add nuw nsw i32 %118, %.4.i.i.us.us - %119 = lshr i32 %.5.i.i.us.us, 1 + %.4.i.i.us.us = select i1 %113, i8 %114, i8 %.3.i.i.us.us + %116 = trunc i64 %.424.i.i.us.us to i8 + %117 = and i8 %116, 1 + %118 = xor i8 %117, 1 + %.5.i.i.us.us = add nuw nsw i8 %118, %.4.i.i.us.us + %119 = lshr i8 %.5.i.i.us.us, 1 + %.zext.i.us.us = zext nneg i8 %119 to i32 %indvars.iv.tr.i.us.us = trunc i64 %indvars.iv.i.us.us to i32 %120 = shl i32 %indvars.iv.tr.i.us.us, 5 - %121 = add nuw nsw i32 %119, %120 + %121 = add nuw nsw i32 %120, %.zext.i.us.us %indvars.iv.next.i.us.us147 = add nuw nsw i64 %indvars.iv.i.us.us, 1 %exitcond.not.i.us.us148 = icmp eq i64 %indvars.iv.next.i.us.us147, %wide.trip.count.i br i1 %exitcond.not.i.us.us148, label %.lr.ph.preheader.i68.split.us.us, label %.lr.ph.i67.us.us.outer, !llvm.loop !31 diff --git a/bench/abc/optimized/luckyRead.ll b/bench/abc/optimized/luckyRead.ll index 187446f9e68..092435c3735 100644 --- a/bench/abc/optimized/luckyRead.ll +++ b/bench/abc/optimized/luckyRead.ll @@ -165,10 +165,10 @@ Abc_TruthStoreAlloc.exit: ; preds = %49, %Abc_TruthGetPa br label %.lr.ph.split.us.i .lr.ph.split.us.i: ; preds = %.lr.ph.i10, %96 - %indvars.iv26.i = phi i64 [ %indvars.iv.next27.i, %96 ], [ 0, %.lr.ph.i10 ] - %60 = phi i8 [ %99, %96 ], [ %54, %.lr.ph.i10 ] - %61 = phi ptr [ %98, %96 ], [ %52, %.lr.ph.i10 ] - %.01216.us.i = phi i64 [ %indvars.iv.next24.i, %96 ], [ 0, %.lr.ph.i10 ] + %indvars.iv26.i = phi i64 [ %indvars.iv.next27.i, %95 ], [ 0, %.lr.ph.i10 ] + %60 = phi i8 [ %99, %95 ], [ %54, %.lr.ph.i10 ] + %61 = phi ptr [ %98, %95 ], [ %52, %.lr.ph.i10 ] + %.01216.us.i = phi i64 [ %indvars.iv.next24.i, %95 ], [ 0, %.lr.ph.i10 ] %indvars.iv.next27.i = add nuw nsw i64 %indvars.iv26.i, 1 %62 = getelementptr inbounds nuw ptr, ptr %41, i64 %indvars.iv26.i %63 = load ptr, ptr %62, align 8, !tbaa !10 @@ -193,7 +193,7 @@ Abc_TruthStoreAlloc.exit: ; preds = %49, %Abc_TruthGetPa %70 = xor i64 %indvars.iv.i.us.i, -1 %71 = getelementptr i8, ptr %69, i64 %70 %72 = load i8, ptr %71, align 1, !tbaa !12 - %73 = sext i8 %72 to i32 + %73 = sext i8 %72 to i64 %74 = add i8 %72, -48 %or.cond.i.i.us.i = icmp ult i8 %74, 10 br i1 %or.cond.i.i.us.i, label %82, label %75 @@ -206,30 +206,29 @@ Abc_TruthStoreAlloc.exit: ; preds = %49, %Abc_TruthGetPa 77: ; preds = %75 %78 = add i8 %72, -97 %or.cond8.i.i.us.i = icmp ult i8 %78, 6 - %79 = add nsw i32 %73, -87 - %spec.select.i.i.us.i = select i1 %or.cond8.i.i.us.i, i32 %79, i32 -1 + %79 = add nsw i64 %73, -87 + %spec.select.i.i.us.i = select i1 %or.cond8.i.i.us.i, i64 %79, i64 -1 br label %Abc_TruthReadHexDigit.exit.i.us.i 80: ; preds = %75 - %81 = add nsw i32 %73, -55 + %81 = add nsw i64 %73, -55 br label %Abc_TruthReadHexDigit.exit.i.us.i 82: ; preds = %.lr.ph.i.us.i - %83 = add nsw i32 %73, -48 + %83 = add nsw i64 %73, -48 br label %Abc_TruthReadHexDigit.exit.i.us.i Abc_TruthReadHexDigit.exit.i.us.i: ; preds = %82, %80, %77 - %.0.i.i.us.i = phi i32 [ %83, %82 ], [ %81, %80 ], [ %spec.select.i.i.us.i, %77 ] - %84 = sext i32 %.0.i.i.us.i to i64 - %85 = shl i64 %indvars.iv.i.us.i, 2 - %86 = and i64 %85, 60 - %87 = shl i64 %84, %86 - %88 = lshr i64 %indvars.iv.i.us.i, 4 - %89 = and i64 %88, 268435455 - %90 = getelementptr inbounds nuw i64, ptr %63, i64 %89 - %91 = load i64, ptr %90, align 8, !tbaa !21 - %92 = or i64 %87, %91 - store i64 %92, ptr %90, align 8, !tbaa !21 + %.0.i.i.us.i = phi i64 [ %83, %82 ], [ %81, %80 ], [ %spec.select.i.i.us.i, %77 ] + %84 = shl i64 %indvars.iv.i.us.i, 2 + %85 = and i64 %84, 60 + %86 = shl i64 %.0.i.i.us.i, %85 + %87 = lshr i64 %indvars.iv.i.us.i, 4 + %88 = and i64 %87, 268435455 + %89 = getelementptr inbounds nuw i64, ptr %63, i64 %88 + %90 = load i64, ptr %89, align 8, !tbaa !21 + %91 = or i64 %90, %86 + store i64 %91, ptr %89, align 8, !tbaa !21 %indvars.iv.next.i.us.i = add nuw nsw i64 %indvars.iv.i.us.i, 1 %exitcond.not.i.us.i = icmp eq i64 %indvars.iv.next.i.us.i, %59 br i1 %exitcond.not.i.us.i, label %Abc_TruthReadHex.exit.loopexit.us.preheader.i, label %.lr.ph.i.us.i, !llvm.loop !23 diff --git a/bench/abc/optimized/wlcReadVer.ll b/bench/abc/optimized/wlcReadVer.ll index 9c94003fa51..d3b52a6a664 100644 --- a/bench/abc/optimized/wlcReadVer.ll +++ b/bench/abc/optimized/wlcReadVer.ll @@ -9436,13 +9436,13 @@ Vec_IntFill.exit99: ; preds = %Vec_IntGrow.exit.i9 %145 = xor i64 %indvars.iv25.i, -1 %146 = getelementptr i8, ptr %138, i64 %145 %147 = load i8, ptr %146, align 1, !tbaa !39 - %148 = sext i8 %147 to i32 + %148 = sext i8 %147 to i64 %149 = add i8 %147, -48 %or.cond.i14.i = icmp ult i8 %149, 10 br i1 %or.cond.i14.i, label %150, label %152 150: ; preds = %.lr.ph21.i - %151 = add nsw i32 %148, -48 + %151 = add nsw i64 %148, -48 br label %Abc_TtReadHexDigit.exit.i 152: ; preds = %.lr.ph21.i @@ -9451,28 +9451,27 @@ Vec_IntFill.exit99: ; preds = %Vec_IntGrow.exit.i9 br i1 %or.cond5.i.i, label %154, label %156 154: ; preds = %152 - %155 = add nsw i32 %148, -55 + %155 = add nsw i64 %148, -55 br label %Abc_TtReadHexDigit.exit.i 156: ; preds = %152 %157 = add i8 %147, -97 %or.cond8.i.i = icmp ult i8 %157, 6 - %158 = add nsw i32 %148, -87 - %spec.select.i.i = select i1 %or.cond8.i.i, i32 %158, i32 -1 + %158 = add nsw i64 %148, -87 + %spec.select.i.i = select i1 %or.cond8.i.i, i64 %158, i64 -1 br label %Abc_TtReadHexDigit.exit.i Abc_TtReadHexDigit.exit.i: ; preds = %156, %154, %150 - %.0.i.i = phi i32 [ %151, %150 ], [ %155, %154 ], [ %spec.select.i.i, %156 ] - %159 = sext i32 %.0.i.i to i64 - %160 = shl i64 %indvars.iv25.i, 2 - %161 = and i64 %160, 60 - %162 = shl i64 %159, %161 - %163 = lshr i64 %indvars.iv25.i, 4 - %164 = and i64 %163, 268435455 - %165 = getelementptr inbounds nuw i64, ptr %128, i64 %164 - %166 = load i64, ptr %165, align 8, !tbaa !107 - %167 = or i64 %162, %166 - store i64 %167, ptr %165, align 8, !tbaa !107 + %.0.i.i = phi i64 [ %151, %150 ], [ %155, %154 ], [ %spec.select.i.i, %156 ] + %159 = shl i64 %indvars.iv25.i, 2 + %160 = and i64 %159, 60 + %161 = shl i64 %.0.i.i, %160 + %162 = lshr i64 %indvars.iv25.i, 4 + %163 = and i64 %162, 268435455 + %164 = getelementptr inbounds nuw i64, ptr %128, i64 %163 + %165 = load i64, ptr %164, align 8, !tbaa !107 + %166 = or i64 %165, %161 + store i64 %166, ptr %164, align 8, !tbaa !107 %indvars.iv.next26.i = add nuw nsw i64 %indvars.iv25.i, 1 %exitcond.not.i105 = icmp eq i64 %indvars.iv.next26.i, %136 br i1 %exitcond.not.i105, label %Abc_TtReadHexNumber.exit, label %.lr.ph21.i, !llvm.loop !109 @@ -9504,7 +9503,7 @@ Wlc_PrsIsChar.exit.thread: ; preds = %172, %172, %172, %1 br label %168, !llvm.loop !110 .loopexit: ; preds = %172, %101, %._crit_edge, %94, %Vec_IntGrow.exit.i - %.0 = phi ptr [ %.061, %Vec_IntGrow.exit.i ], [ null, %94 ], [ %100, %._crit_edge ], [ null, %101 ], [ %.2, %172 ] + %.0 = phi ptr [ %.061, %Vec_IntGrow.exit.i ], [ null, %94 ], [ %100, %._crit_edge ], [ null, %101 ], [ %.2, %171 ] ret ptr %.0 } diff --git a/bench/abseil-cpp/optimized/charconv_parse.ll b/bench/abseil-cpp/optimized/charconv_parse.ll index 95c23616116..e3556fdb415 100644 --- a/bench/abseil-cpp/optimized/charconv_parse.ll +++ b/bench/abseil-cpp/optimized/charconv_parse.ll @@ -780,15 +780,9 @@ define weak_odr dso_local void @_ZN4absl16strings_internal10ParseFloatILi16EEENS %exitcond72.not.i = icmp eq ptr %49, %scevgep71.i br i1 %exitcond72.not.i, label %.critedge4.i, label %.lr.ph62.i, !llvm.loop !34 -.critedge4.i: ; preds = %47, %.lr.ph62.i - %.2.lcssa.i = phi ptr [ %.260.i, %.lr.ph62.i ], [ %scevgep71.i, %47 ] - %.0.lcssa.i = phi i1 [ %.061.i, %.lr.ph62.i ], [ %spec.select.i, %47 ] - %spec.select155 = zext i1 %.0.lcssa.i to i8 - br label %_ZN4absl12_GLOBAL__N_113ConsumeDigitsILi16EmEEiPKcS3_iPT0_Pb.exit - -_ZN4absl12_GLOBAL__N_113ConsumeDigitsILi16EmEEiPKcS3_iPT0_Pb.exit: ; preds = %.critedge4.i, %.critedge2.i - %.1147 = phi i8 [ 0, %.critedge2.i ], [ %spec.select155, %.critedge4.i ] - %.2.lcssa80.i = phi ptr [ %.1.lcssa.i, %.critedge2.i ], [ %.2.lcssa.i, %.critedge4.i ] +.critedge4.i: ; preds = %.lr.ph62.i, %47, %.critedge2.i + %.2.lcssa.i = phi i1 [ false, %.critedge2.i ], [ %spec.select.i, %47 ], [ %.061.i, %.lr.ph62.i ] + %.0.lcssa.i = phi ptr [ %.1.lcssa.i, %.critedge2.i ], [ %scevgep71.i, %47 ], [ %.260.i, %.lr.ph62.i ] %50 = ptrtoint ptr %.2.lcssa80.i to i64 %51 = sub i64 %50, %.pre-phi %52 = trunc i64 %51 to i32 @@ -952,11 +946,11 @@ _ZN4absl12_GLOBAL__N_113ConsumeDigitsILi16EmEEiPKcS3_iPT0_Pb.exit: ; preds = %.c .critedge4.i124: ; preds = %111, %.lr.ph62.i121 %.2.lcssa.i125 = phi ptr [ %.260.i123, %.lr.ph62.i121 ], [ %scevgep71.i120, %111 ] %.0.lcssa.i126 = phi i1 [ %.061.i122, %.lr.ph62.i121 ], [ %spec.select.i127, %111 ] - %spec.select156 = select i1 %.0.lcssa.i126, i8 1, i8 %.1147 + %spec.select156 = select i1 %.0.lcssa.i126, i1 true, i1 %.1147 br label %_ZN4absl12_GLOBAL__N_113ConsumeDigitsILi16EmEEiPKcS3_iPT0_Pb.exit140 _ZN4absl12_GLOBAL__N_113ConsumeDigitsILi16EmEEiPKcS3_iPT0_Pb.exit140: ; preds = %.critedge4.i124, %.critedge2.i114 - %.2148 = phi i8 [ %.1147, %.critedge2.i114 ], [ %spec.select156, %.critedge4.i124 ] + %.2148 = phi i1 [ %.1147, %.critedge2.i114 ], [ %spec.select156, %.critedge4.i124 ] %.2.lcssa80.i118 = phi ptr [ %.1.lcssa.i117, %.critedge2.i114 ], [ %.2.lcssa.i125, %.critedge4.i124 ] %114 = ptrtoint ptr %.2.lcssa80.i118 to i64 %115 = sub i64 %114, %.pre-phi175204 @@ -971,7 +965,7 @@ _ZN4absl12_GLOBAL__N_113ConsumeDigitsILi16EmEEiPKcS3_iPT0_Pb.exit140: ; preds = 120: ; preds = %_ZN4absl12_GLOBAL__N_113ConsumeDigitsILi16EmEEiPKcS3_iPT0_Pb.exit140, %61, %56 %.0149 = phi i64 [ %.039.lcssa.i116, %_ZN4absl12_GLOBAL__N_113ConsumeDigitsILi16EmEEiPKcS3_iPT0_Pb.exit140 ], [ %.039.lcssa.i, %61 ], [ %.039.lcssa.i, %56 ] - %.0146 = phi i8 [ %.2148, %_ZN4absl12_GLOBAL__N_113ConsumeDigitsILi16EmEEiPKcS3_iPT0_Pb.exit140 ], [ %.1147, %61 ], [ %.1147, %56 ] + %.0146 = phi i1 [ %.2148, %_ZN4absl12_GLOBAL__N_113ConsumeDigitsILi16EmEEiPKcS3_iPT0_Pb.exit140 ], [ %.1147, %61 ], [ %.1147, %56 ] %.182 = phi i32 [ %.586, %_ZN4absl12_GLOBAL__N_113ConsumeDigitsILi16EmEEiPKcS3_iPT0_Pb.exit140 ], [ %.081, %61 ], [ %.081, %56 ] %.1 = phi ptr [ %118, %_ZN4absl12_GLOBAL__N_113ConsumeDigitsILi16EmEEiPKcS3_iPT0_Pb.exit140 ], [ %54, %61 ], [ %54, %56 ] %121 = icmp eq ptr %1, %.1 @@ -989,7 +983,7 @@ _ZN4absl12_GLOBAL__N_113ConsumeDigitsILi16EmEEiPKcS3_iPT0_Pb.exit140: ; preds = br i1 %128, label %166, label %129 129: ; preds = %126, %122 - %130 = zext nneg i8 %.0146 to i64 + %130 = zext i1 %.0146 to i64 %spec.select157 = or i64 %.0149, %130 store i64 %spec.select157, ptr %0, align 8, !tbaa !21 %131 = getelementptr inbounds nuw i8, ptr %0, i64 12 diff --git a/bench/abseil-cpp/optimized/node_hash_map_test.ll b/bench/abseil-cpp/optimized/node_hash_map_test.ll index e8f4b14d54a..434e68f7dbc 100644 --- a/bench/abseil-cpp/optimized/node_hash_map_test.ll +++ b/bench/abseil-cpp/optimized/node_hash_map_test.ll @@ -22594,7 +22594,6 @@ _ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEP %1957 = phi i1 [ false, %_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i558 ], [ false, %1950 ], [ true, %_ZN7testing15AssertionResultD2Ev.exit543.thread1520 ] %1958 = phi ptr [ %1917, %_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i558 ], [ %1917, %1950 ], [ %1871, %_ZN7testing15AssertionResultD2Ev.exit543.thread1520 ] %.sroa.71035.114551519 = phi ptr [ %.sroa.71035.114551518, %_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i558 ], [ %.sroa.71035.114551518, %1950 ], [ %.sroa.71035.0.copyload, %_ZN7testing15AssertionResultD2Ev.exit543.thread1520 ] - %.sroa.161040.214561517 = phi i8 [ 0, %_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i558 ], [ 0, %1950 ], [ 1, %_ZN7testing15AssertionResultD2Ev.exit543.thread1520 ] %.sroa.321048.214801515 = phi i64 [ 0, %_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i558 ], [ 0, %1950 ], [ %1870, %_ZN7testing15AssertionResultD2Ev.exit543.thread1520 ] store ptr null, ptr %1958, align 8, !tbaa !136 call void @llvm.lifetime.end.p0(ptr nonnull %99) @@ -24266,7 +24265,6 @@ _ZN4absl18container_internal12raw_hash_setINS0_17NodeHashMapPolicyINS0_12_GLOBAL br i1 %1957, label %_ZN4absl18container_internal16node_handle_baseINS0_18hash_policy_traitsINS0_17NodeHashMapPolicyINS0_12_GLOBAL__N_113NonMovableKeyEiEEvEESaISt4pairIKS5_iEEE7destroyEv.exit.i.i.i, label %_ZN4absl18container_internal16node_handle_baseINS0_18hash_policy_traitsINS0_17NodeHashMapPolicyINS0_12_GLOBAL__N_113NonMovableKeyEiEEvEESaISt4pairIKS5_iEEE7destroyEv.exit.i.i.i.thread _ZN4absl18container_internal16node_handle_baseINS0_18hash_policy_traitsINS0_17NodeHashMapPolicyINS0_12_GLOBAL__N_113NonMovableKeyEiEEvEESaISt4pairIKS5_iEEE7destroyEv.exit.i.i.i.thread: ; preds = %_ZN4absl18container_internal12raw_hash_setINS0_17NodeHashMapPolicyINS0_12_GLOBAL__N_113NonMovableKeyEiEENS3_17NonMovableKeyHashENS3_15NonMovableKeyEqESaISt4pairIKS4_iEEE6insertEONS0_11node_handleIS5_NS0_18hash_policy_traitsIS5_vEESB_vEE.exit748 - %spec.select1525 = zext i1 %.sroa.101025.1 to i8 %spec.select10921526 = select i1 %.sroa.101025.1, i64 %.sroa.201029.1, i64 %.sroa.321048.214801515 call void @llvm.lifetime.start.p0(ptr nonnull %141) %2542 = getelementptr inbounds nuw i8, ptr %141, i64 8 @@ -24275,7 +24273,6 @@ _ZN4absl18container_internal16node_handle_baseINS0_18hash_policy_traitsINS0_17No _ZN4absl18container_internal16node_handle_baseINS0_18hash_policy_traitsINS0_17NodeHashMapPolicyINS0_12_GLOBAL__N_113NonMovableKeyEiEEvEESaISt4pairIKS5_iEEE7destroyEv.exit.i.i.i: ; preds = %_ZN4absl18container_internal12raw_hash_setINS0_17NodeHashMapPolicyINS0_12_GLOBAL__N_113NonMovableKeyEiEENS3_17NonMovableKeyHashENS3_15NonMovableKeyEqESaISt4pairIKS4_iEEE6insertEONS0_11node_handleIS5_NS0_18hash_policy_traitsIS5_vEESB_vEE.exit748 call void @_ZdlPvm(ptr noundef nonnull %1959, i64 noundef 8) #39 %.val276.pre = load i8, ptr %1526, align 1, !tbaa !671, !range !23 - %spec.select = zext i1 %.sroa.101025.1 to i8 %spec.select1092 = select i1 %.sroa.101025.1, i64 %.sroa.201029.1, i64 %.sroa.321048.214801515 call void @llvm.lifetime.start.p0(ptr nonnull %141) %2543 = trunc nuw i8 %.val276.pre to i1 @@ -24423,7 +24420,6 @@ _ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEP _ZN7testing15AssertionResultD2Ev.exit769: ; preds = %_ZN4absl18container_internal16node_handle_baseINS0_18hash_policy_traitsINS0_17NodeHashMapPolicyINS0_12_GLOBAL__N_113NonMovableKeyEiEEvEESaISt4pairIKS5_iEEE7destroyEv.exit.i.i.i.thread, %_ZN4absl18container_internal16node_handle_baseINS0_18hash_policy_traitsINS0_17NodeHashMapPolicyINS0_12_GLOBAL__N_113NonMovableKeyEiEEvEESaISt4pairIKS5_iEEE7destroyEv.exit.i.i.i, %2582, %_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i767 %2589 = phi ptr [ %2542, %_ZN4absl18container_internal16node_handle_baseINS0_18hash_policy_traitsINS0_17NodeHashMapPolicyINS0_12_GLOBAL__N_113NonMovableKeyEiEEvEESaISt4pairIKS5_iEEE7destroyEv.exit.i.i.i.thread ], [ %2545, %_ZN4absl18container_internal16node_handle_baseINS0_18hash_policy_traitsINS0_17NodeHashMapPolicyINS0_12_GLOBAL__N_113NonMovableKeyEiEEvEESaISt4pairIKS5_iEEE7destroyEv.exit.i.i.i ], [ %2545, %2582 ], [ %2545, %_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i767 ] %spec.select10921535 = phi i64 [ %spec.select10921526, %_ZN4absl18container_internal16node_handle_baseINS0_18hash_policy_traitsINS0_17NodeHashMapPolicyINS0_12_GLOBAL__N_113NonMovableKeyEiEEvEESaISt4pairIKS5_iEEE7destroyEv.exit.i.i.i.thread ], [ %spec.select1092, %_ZN4absl18container_internal16node_handle_baseINS0_18hash_policy_traitsINS0_17NodeHashMapPolicyINS0_12_GLOBAL__N_113NonMovableKeyEiEEvEESaISt4pairIKS5_iEEE7destroyEv.exit.i.i.i ], [ %spec.select1092, %2582 ], [ %spec.select1092, %_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i767 ] - %spec.select1527 = phi i8 [ %spec.select1525, %_ZN4absl18container_internal16node_handle_baseINS0_18hash_policy_traitsINS0_17NodeHashMapPolicyINS0_12_GLOBAL__N_113NonMovableKeyEiEEvEESaISt4pairIKS5_iEEE7destroyEv.exit.i.i.i.thread ], [ %spec.select, %_ZN4absl18container_internal16node_handle_baseINS0_18hash_policy_traitsINS0_17NodeHashMapPolicyINS0_12_GLOBAL__N_113NonMovableKeyEiEEvEESaISt4pairIKS5_iEEE7destroyEv.exit.i.i.i ], [ %spec.select, %2582 ], [ %spec.select, %_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i767 ] store ptr null, ptr %2589, align 8, !tbaa !136 call void @llvm.lifetime.end.p0(ptr nonnull %141) call void @llvm.lifetime.start.p0(ptr nonnull %145) @@ -25550,11 +25546,10 @@ _ZN4absl18container_internal12raw_hash_setINS0_17NodeHashMapPolicyINS0_12_GLOBAL br label %3001 3001: ; preds = %3000, %2920, %_ZN7testing7MessageD2Ev.exit781, %_ZN7testing7MessageD2Ev.exit764, %2547, %2546, %2481, %2367, %_ZN7testing7MessageD2Ev.exit665, %2274, %2273, %2218, %2098, %2009 - %.sroa.161040.0 = phi i8 [ %spec.select1527, %3000 ], [ %spec.select1527, %2920 ], [ %spec.select1527, %_ZN7testing7MessageD2Ev.exit781 ], [ %spec.select, %_ZN7testing7MessageD2Ev.exit764 ], [ %.sroa.161040.214561517, %2547 ], [ %.sroa.161040.214561517, %2546 ], [ %.sroa.161040.214561517, %2481 ], [ %.sroa.161040.214561517, %2367 ], [ %.sroa.161040.214561517, %_ZN7testing7MessageD2Ev.exit665 ], [ %.sroa.161040.214561517, %2274 ], [ %.sroa.161040.214561517, %2273 ], [ %.sroa.161040.214561517, %2218 ], [ %.sroa.161040.214561517, %2098 ], [ %.sroa.161040.214561517, %2009 ] + %.sroa.161040.0 = phi i1 [ %.sroa.101025.1, %3000 ], [ %.sroa.101025.1, %2920 ], [ %.sroa.101025.1, %_ZN7testing7MessageD2Ev.exit781 ], [ %.sroa.101025.1, %_ZN7testing7MessageD2Ev.exit764 ], [ %1957, %2547 ], [ %1957, %2546 ], [ %1957, %2481 ], [ %1957, %2367 ], [ %1957, %_ZN7testing7MessageD2Ev.exit665 ], [ %1957, %2274 ], [ %1957, %2273 ], [ %1957, %2218 ], [ %1957, %2098 ], [ %1957, %2009 ] %.sroa.321048.0 = phi i64 [ %spec.select10921535, %3000 ], [ %spec.select10921535, %2920 ], [ %spec.select10921535, %_ZN7testing7MessageD2Ev.exit781 ], [ %spec.select1092, %_ZN7testing7MessageD2Ev.exit764 ], [ %.sroa.321048.214801515, %2547 ], [ %.sroa.321048.214801515, %2546 ], [ %.sroa.321048.214801515, %2481 ], [ %.sroa.321048.214801515, %2367 ], [ %.sroa.321048.214801515, %_ZN7testing7MessageD2Ev.exit665 ], [ %.sroa.321048.214801515, %2274 ], [ %.sroa.321048.214801515, %2273 ], [ %.sroa.321048.214801515, %2218 ], [ %.sroa.321048.214801515, %2098 ], [ %.sroa.321048.214801515, %2009 ] %.pn260.pn.pn.pn = phi { ptr, i32 } [ %.pn260.pn.pn, %3000 ], [ %.pn251.pn.pn, %2920 ], [ %.pn240.pn.pn, %_ZN7testing7MessageD2Ev.exit781 ], [ %.pn236.pn.pn, %_ZN7testing7MessageD2Ev.exit764 ], [ %2548, %2547 ], [ %.pn232.pn.pn, %2546 ], [ %.pn224.pn.pn, %2481 ], [ %.pn220.pn.pn, %2367 ], [ %.pn216.pn.pn, %_ZN7testing7MessageD2Ev.exit665 ], [ %2275, %2274 ], [ %.pn212.pn.pn, %2273 ], [ %.pn204.pn.pn, %2218 ], [ %.pn197.pn.pn, %2098 ], [ %.pn193.pn.pn, %2009 ] - %3002 = trunc nuw i8 %.sroa.161040.0 to i1 - br i1 %3002, label %.thread1088, label %_ZN4absl18container_internal16InsertReturnTypeINS0_12raw_hash_setINS0_17NodeHashMapPolicyINS0_12_GLOBAL__N_113NonMovableKeyEiEENS4_17NonMovableKeyHashENS4_15NonMovableKeyEqESaISt4pairIKS5_iEEE8iteratorENS0_11node_handleIS6_NS0_18hash_policy_traitsIS6_vEESC_vEEED2Ev.exit879 + br i1 %.sroa.161040.0, label %.thread1088, label %_ZN4absl18container_internal16InsertReturnTypeINS0_12raw_hash_setINS0_17NodeHashMapPolicyINS0_12_GLOBAL__N_113NonMovableKeyEiEENS4_17NonMovableKeyHashENS4_15NonMovableKeyEqESaISt4pairIKS5_iEEE8iteratorENS0_11node_handleIS6_NS0_18hash_policy_traitsIS6_vEESC_vEEED2Ev.exit879 .thread1088: ; preds = %3001, %.thread1081 %.pn260.pn.pn.pn1087 = phi { ptr, i32 } [ %.pn244.pn.pn, %.thread1081 ], [ %.pn260.pn.pn.pn, %3001 ] @@ -25576,7 +25571,7 @@ _ZN4absl18container_internal16InsertReturnTypeINS0_12raw_hash_setINS0_17NodeHash br label %_ZN4absl18container_internal16node_handle_baseINS0_18hash_policy_traitsINS0_17NodeHashMapPolicyINS0_12_GLOBAL__N_113NonMovableKeyEiEEvEESaISt4pairIKS5_iEEED2Ev.exit882 _ZN4absl18container_internal16node_handle_baseINS0_18hash_policy_traitsINS0_17NodeHashMapPolicyINS0_12_GLOBAL__N_113NonMovableKeyEiEEvEESaISt4pairIKS5_iEEED2Ev.exit882: ; preds = %3005, %_ZN4absl18container_internal16InsertReturnTypeINS0_12raw_hash_setINS0_17NodeHashMapPolicyINS0_12_GLOBAL__N_113NonMovableKeyEiEENS4_17NonMovableKeyHashENS4_15NonMovableKeyEqESaISt4pairIKS5_iEEE8iteratorENS0_11node_handleIS6_NS0_18hash_policy_traitsIS6_vEESC_vEEED2Ev.exit879, %1530 - %.pn260.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %1531, %1530 ], [ %.pn260.pn.pn.pn.pn.pn, %_ZN4absl18container_internal16InsertReturnTypeINS0_12raw_hash_setINS0_17NodeHashMapPolicyINS0_12_GLOBAL__N_113NonMovableKeyEiEENS4_17NonMovableKeyHashENS4_15NonMovableKeyEqESaISt4pairIKS5_iEEE8iteratorENS0_11node_handleIS6_NS0_18hash_policy_traitsIS6_vEESC_vEEED2Ev.exit879 ], [ %.pn260.pn.pn.pn.pn.pn, %3005 ] + %.pn260.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %1531, %1530 ], [ %.pn260.pn.pn.pn.pn.pn, %_ZN4absl18container_internal16InsertReturnTypeINS0_12raw_hash_setINS0_17NodeHashMapPolicyINS0_12_GLOBAL__N_113NonMovableKeyEiEENS4_17NonMovableKeyHashENS4_15NonMovableKeyEqESaISt4pairIKS5_iEEE8iteratorENS0_11node_handleIS6_NS0_18hash_policy_traitsIS6_vEESC_vEEED2Ev.exit879 ], [ %.pn260.pn.pn.pn.pn.pn, %3004 ] call void @llvm.lifetime.end.p0(ptr nonnull %75) br label %3007 diff --git a/bench/actix-rs/optimized/5k5ycrtlwwxldg7.ll b/bench/actix-rs/optimized/5k5ycrtlwwxldg7.ll index 1b366b11eef..9d548e75c1a 100644 --- a/bench/actix-rs/optimized/5k5ycrtlwwxldg7.ll +++ b/bench/actix-rs/optimized/5k5ycrtlwwxldg7.ll @@ -8112,8 +8112,8 @@ default.unreachable125: ; preds = %"_ZN50_$LT$T$u20$as invoke void @"_ZN4core3ptr55drop_in_place$LT$actix_web..service..ServiceRequest$GT$17ha25503416280416aE"(ptr noalias noundef nonnull align 8 dereferenceable(32) %1) #35 to label %165 unwind label %153 -.sink.split126: ; preds = %162, %164, %.thread101, %160 - %.pn22116.ph = phi { ptr, i32 } [ %.pn1991, %.thread101 ], [ %161, %160 ], [ %eh.lpad-body37108, %164 ], [ %eh.lpad-body37108, %162 ] +.sink.split126: ; preds = %164, %162, %.thread101, %160 + %.pn22116.ph = phi { ptr, i32 } [ %.pn1991, %.thread101 ], [ %161, %160 ], [ %eh.lpad-body37108, %162 ], [ %eh.lpad-body37108, %164 ] call void @llvm.lifetime.end.p0(ptr nonnull %21) br label %165 diff --git a/bench/boost/optimized/config_file.ll b/bench/boost/optimized/config_file.ll index 9fc54c308c8..aa9b0536a6e 100644 --- a/bench/boost/optimized/config_file.ll +++ b/bench/boost/optimized/config_file.ll @@ -648,7 +648,7 @@ _ZNSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_ %66 = load i64, ptr %65, align 8, !tbaa !19 %67 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEPKcmm(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef %64, i64 noundef 0, i64 noundef %66) #27 %68 = icmp eq i64 %67, 0 - %spec.select25 = or i1 %68, %.014 + %spec.select25 = or i1 %.014, %68 br i1 %spec.select25, label %70, label %119 69: ; preds = %_ZNSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_EE11lower_boundERKS5_.exit.thread diff --git a/bench/clamav/optimized/strfn.ll b/bench/clamav/optimized/strfn.ll index af14b951521..6a95598d8b2 100644 --- a/bench/clamav/optimized/strfn.ll +++ b/bench/clamav/optimized/strfn.ll @@ -374,129 +374,126 @@ define void @_Z8BinToHexPKhmPcPwm(ptr noundef readonly captures(none) %0, i64 no .lr.ph.split: ; preds = %.lr.ph br i1 %.not55, label %.lr.ph.split.split.us, label %.lr.ph.split.split -.lr.ph.split.split.us: ; preds = %.lr.ph.split, %57 - %33 = phi i64 [ %59, %57 ], [ 0, %.lr.ph.split ] - %.058.us61 = phi i32 [ %.1.us64, %57 ], [ 0, %.lr.ph.split ] - %.04356.us63 = phi i32 [ %58, %57 ], [ 0, %.lr.ph.split ] +.lr.ph.split.split.us: ; preds = %.lr.ph.split, %54 + %33 = phi i64 [ %56, %54 ], [ 0, %.lr.ph.split ] + %.058.us61 = phi i32 [ %.1.us64, %54 ], [ 0, %.lr.ph.split ] + %.04356.us63 = phi i32 [ %55, %54 ], [ 0, %.lr.ph.split ] %34 = zext i32 %.058.us61 to i64 %35 = icmp ugt i64 %6, %34 - br i1 %35, label %36, label %57 + br i1 %35, label %36, label %54 36: ; preds = %.lr.ph.split.split.us %37 = getelementptr inbounds nuw i8, ptr %0, i64 %33 %38 = load i8, ptr %37, align 1, !tbaa !3 - %39 = zext i8 %38 to i32 - %40 = and i32 %39, 15 - %41 = icmp samesign ugt i32 %40, 9 - %42 = add nuw nsw i32 %40, 87 - %43 = or disjoint i32 %40, 48 - %44 = select i1 %41, i32 %42, i32 %43 - %45 = icmp ugt i8 %38, -97 - %46 = lshr i32 %39, 4 - %47 = add nuw nsw i32 %46, 87 - %48 = or disjoint i32 %46, 48 - %49 = select i1 %45, i32 %47, i32 %48 - %50 = trunc nuw nsw i32 %49 to i8 - %51 = add i32 %.058.us61, 1 - %52 = getelementptr inbounds nuw i8, ptr %2, i64 %34 - store i8 %50, ptr %52, align 1, !tbaa !3 - %53 = trunc nuw nsw i32 %44 to i8 - %54 = add i32 %.058.us61, 2 - %55 = zext i32 %51 to i64 - %56 = getelementptr inbounds nuw i8, ptr %2, i64 %55 - store i8 %53, ptr %56, align 1, !tbaa !3 - br label %57 - -57: ; preds = %36, %.lr.ph.split.split.us - %.1.us64 = phi i32 [ %54, %36 ], [ %.058.us61, %.lr.ph.split.split.us ] - %58 = add i32 %.04356.us63, 1 - %59 = zext i32 %58 to i64 - %60 = icmp ugt i64 %1, %59 - br i1 %60, label %.lr.ph.split.split.us, label %._crit_edge, !llvm.loop !14 - -._crit_edge: ; preds = %96, %57, %29, %5 - %.041.lcssa = phi i32 [ 0, %5 ], [ %.142.us, %29 ], [ 0, %57 ], [ %.142, %96 ] - %.0.lcssa = phi i32 [ 0, %5 ], [ 0, %29 ], [ %.1.us64, %57 ], [ %.1, %96 ] - %61 = icmp ne ptr %2, null - %62 = icmp ne i64 %4, 0 - %or.cond = and i1 %61, %62 - br i1 %or.cond, label %100, label %103 - -.lr.ph.split.split: ; preds = %.lr.ph.split, %96 - %63 = phi i64 [ %98, %96 ], [ 0, %.lr.ph.split ] - %.058 = phi i32 [ %.1, %96 ], [ 0, %.lr.ph.split ] - %.04157 = phi i32 [ %.142, %96 ], [ 0, %.lr.ph.split ] - %.04356 = phi i32 [ %97, %96 ], [ 0, %.lr.ph.split ] - %64 = getelementptr inbounds nuw i8, ptr %0, i64 %63 - %65 = load i8, ptr %64, align 1, !tbaa !3 - %66 = zext i8 %65 to i32 - %67 = lshr i32 %66, 4 - %68 = and i32 %66, 15 - %69 = icmp ugt i8 %65, -97 - %70 = add nuw nsw i32 %67, 87 - %71 = or disjoint i32 %67, 48 - %72 = select i1 %69, i32 %70, i32 %71 - %73 = icmp samesign ugt i32 %68, 9 - %74 = add nuw nsw i32 %68, 87 - %75 = or disjoint i32 %68, 48 - %76 = select i1 %73, i32 %74, i32 %75 - %77 = zext i32 %.058 to i64 - %78 = icmp ugt i64 %6, %77 - br i1 %78, label %79, label %87 - -79: ; preds = %.lr.ph.split.split - %80 = trunc nuw nsw i32 %72 to i8 - %81 = add i32 %.058, 1 - %82 = getelementptr inbounds nuw i8, ptr %2, i64 %77 - store i8 %80, ptr %82, align 1, !tbaa !3 - %83 = trunc nuw nsw i32 %76 to i8 - %84 = add i32 %.058, 2 - %85 = zext i32 %81 to i64 - %86 = getelementptr inbounds nuw i8, ptr %2, i64 %85 - store i8 %83, ptr %86, align 1, !tbaa !3 - br label %87 - -87: ; preds = %79, %.lr.ph.split.split - %.1 = phi i32 [ %84, %79 ], [ %.058, %.lr.ph.split.split ] - %88 = zext i32 %.04157 to i64 - %89 = icmp ugt i64 %6, %88 - br i1 %89, label %90, label %96 - -90: ; preds = %87 - %91 = add i32 %.04157, 1 - %92 = getelementptr inbounds nuw i32, ptr %3, i64 %88 - store i32 %72, ptr %92, align 4, !tbaa !8 - %93 = add i32 %.04157, 2 - %94 = zext i32 %91 to i64 - %95 = getelementptr inbounds nuw i32, ptr %3, i64 %94 - store i32 %76, ptr %95, align 4, !tbaa !8 - br label %96 - -96: ; preds = %90, %87 - %.142 = phi i32 [ %93, %90 ], [ %.04157, %87 ] - %97 = add i32 %.04356, 1 - %98 = zext i32 %97 to i64 - %99 = icmp ugt i64 %1, %98 - br i1 %99, label %.lr.ph.split.split, label %._crit_edge, !llvm.loop !14 - -100: ; preds = %._crit_edge - %101 = zext i32 %.0.lcssa to i64 - %102 = getelementptr inbounds nuw i8, ptr %2, i64 %101 - store i8 0, ptr %102, align 1, !tbaa !3 - br label %103 - -103: ; preds = %100, %._crit_edge - %104 = icmp ne ptr %3, null - %or.cond3 = and i1 %104, %62 - br i1 %or.cond3, label %105, label %.thread - -105: ; preds = %103 - %106 = zext i32 %.041.lcssa to i64 - %107 = getelementptr inbounds nuw i32, ptr %3, i64 %106 - store i32 0, ptr %107, align 4, !tbaa !8 + %39 = and i8 %38, 15 + %40 = icmp samesign ugt i8 %39, 9 + %41 = add nuw nsw i8 %39, 87 + %42 = or disjoint i8 %39, 48 + %43 = select i1 %40, i8 %41, i8 %42 + %44 = icmp ugt i8 %38, -97 + %45 = lshr i8 %38, 4 + %46 = add nuw nsw i8 %45, 87 + %47 = or disjoint i8 %45, 48 + %48 = select i1 %44, i8 %46, i8 %47 + %49 = add i32 %.058.us61, 1 + %50 = getelementptr inbounds nuw i8, ptr %2, i64 %34 + store i8 %48, ptr %50, align 1, !tbaa !3 + %51 = add i32 %.058.us61, 2 + %52 = zext i32 %49 to i64 + %53 = getelementptr inbounds nuw i8, ptr %2, i64 %52 + store i8 %43, ptr %53, align 1, !tbaa !3 + br label %54 + +54:; preds = %36, %.lr.ph.split.split.us + %.1.us64 = phi i32 [ %51, %36 ], [ %.058.us61, %.lr.ph.split.split.us ] + %55 = add i32 %.04356.us63, 1 + %56 = zext i32 %55 to i64 + %57 = icmp ugt i64 %1, %56 + br i1 %57, label %.lr.ph.split.split.us, label %._crit_edge, !llvm.loop !14 + +._crit_edge:; preds = %93, %54, %29, %5 + %.041.lcssa = phi i32 [ 0, %5 ], [ %.142.us, %29 ], [ 0, %54 ], [ %.142, %93 ] + %.0.lcssa = phi i32 [ 0, %5 ], [ 0, %29 ], [ %.1.us64, %54 ], [ %.1, %93 ] + %58 = icmp ne ptr %2, null + %59 = icmp ne i64 %4, 0 + %or.cond = and i1 %58, %59 + br i1 %or.cond, label %97, label %100 + +.lr.ph.split.split:; preds = %.lr.ph.split, %93 + %60 = phi i64 [ %95, %93 ], [ 0, %.lr.ph.split ] + %.058 = phi i32 [ %.1, %93 ], [ 0, %.lr.ph.split ] + %.04157 = phi i32 [ %.142, %93 ], [ 0, %.lr.ph.split ] + %63 = phi i32 [ %94, %93 ], [ 0, %.lr.ph.split ] + %61 = getelementptr inbounds nuw i8, ptr %0, i64 %60 + %62 = load i8, ptr %61, align 1, !tbaa !3 + %63 = zext i8 %62 to i32 + %64 = lshr i32 %63, 4 + %65 = and i32 %63, 15 + %66 = icmp ugt i8 %62, -97 + %67 = add nuw nsw i32 %64, 87 + %68 = or disjoint i32 %64, 48 + %69 = select i1 %66, i32 %67, i32 %68 + %70 = icmp samesign ugt i32 %65, 9 + %71 = add nuw nsw i32 %65, 87 + %72 = or disjoint i32 %65, 48 + %73 = select i1 %70, i32 %71, i32 %72 + %74 = zext i32 %.058 to i64 + %75 = icmp ugt i64 %6, %74 + br i1 %75, label %76, label %84 + +76:; preds = %.lr.ph.split.split + %77 = trunc nuw nsw i32 %69 to i8 + %78 = add i32 %.058, 1 + %79 = getelementptr inbounds nuw i8, ptr %2, i64 %74 + store i8 %77, ptr %79, align 1, !tbaa !3 + %80 = trunc nuw nsw i32 %73 to i8 + %81 = add i32 %.058, 2 + %82 = zext i32 %78 to i64 + %83 = getelementptr inbounds nuw i8, ptr %2, i64 %82 + store i8 %80, ptr %83, align 1, !tbaa !3 + br label %84 + +84: ; preds = %76, %.lr.ph.split.split + %.1 = phi i32 [ %81, %76 ], [ %.058, %.lr.ph.split.split ] + %85 = zext i32 %.04157 to i64 + %86 = icmp ugt i64 %6, %85 + br i1 %86, label %87, label %93 + +87:; preds = %84 + %88 = add i32 %.04157, 1 + %89 = getelementptr inbounds nuw i32, ptr %3, i64 %85 + store i32 %69, ptr %89, align 4, !tbaa !8 + %91 = add i32 %.04157, 2 + %91 = zext i32 %88 to i64 + %92 = getelementptr inbounds nuw i32, ptr %3, i64 %91 + store i32 %73, ptr %92, align 4, !tbaa !8 + br label %93 + +93: ; preds = %87, %84 + %.142 = phi i32 [ %90, %87 ], [ %.04157, %84 ] + %94 = add i32 %.04356, 1 + %95 = zext i32 %94 to i64 + %96 = icmp ugt i64 %1, %95 + br i1 %96, label %.lr.ph.split.split, label %._crit_edge, !llvm.loop !14 + +97:; preds = %._crit_edge + %98 = zext i32 %.0.lcssa to i64 + %99 = getelementptr inbounds nuw i8, ptr %2, i64 %98 + store i8 0, ptr %99, align 1, !tbaa !3 + br label %100 + +100:; preds = %97, %._crit_edge + %101 = icmp ne ptr %3, null + %or.cond3 = and i1 %101, %59 + br i1 %or.cond3, label %102, label %.thread + +102:; preds = %100 + %103 = zext i32 %.041.lcssa to i64 + %104 = getelementptr inbounds nuw i32, ptr %3, i64 %103 + store i32 0, ptr %104, align 4, !tbaa !8 br label %.thread -.thread: ; preds = %.lr.ph.split.us, %105, %103 +.thread: ; preds = %.lr.ph.split.us, %102, %100 ret void } diff --git a/bench/clamav/optimized/volume.ll b/bench/clamav/optimized/volume.ll index 5f10fb46407..03e9a010a42 100644 --- a/bench/clamav/optimized/volume.ll +++ b/bench/clamav/optimized/volume.ll @@ -186,7 +186,7 @@ _Z5uiMsgIJRA2048_wS1_EEv14UIMESSAGE_CODEDpOT_.exit: ; preds = %48 103: ; preds = %.thread107, %96 %104 = load ptr, ptr %89, align 8, !tbaa !91 %.not.i = icmp eq ptr %104, null - br i1 %.not.i, label %.thread.i.thread, label %105 + br i1 %.not.i, label %.thread.thread.i, label %105 105: ; preds = %103 call void @llvm.lifetime.start.p0(ptr nonnull %8) @@ -195,7 +195,7 @@ _Z5uiMsgIJRA2048_wS1_EEv14UIMESSAGE_CODEDpOT_.exit: ; preds = %48 %107 = load i64, ptr %90, align 8, !tbaa !92 %108 = call noundef i32 %106(i32 noundef 3, i64 noundef %107, i64 noundef %91, i64 noundef 0) %109 = icmp eq i32 %108, -1 - br i1 %109, label %.thread.i.thread121, label %110 + br i1 %109, label %.thread.i.thread, label %110 110: ; preds = %105 %111 = call i32 @wcscmp(ptr noundef nonnull %8, ptr noundef nonnull %13) #6 @@ -216,7 +216,7 @@ _Z5uiMsgIJRA2048_wS1_EEv14UIMESSAGE_CODEDpOT_.exit: ; preds = %48 118: ; preds = %112 %119 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %10, ptr noundef nonnull dereferenceable(1) %9) #6 %.not27.i = icmp eq i32 %119, 0 - br i1 %.not27.i, label %.thread.i, label %120 + br i1 %.not27.i, label %.thread.i.thread120, label %120 120: ; preds = %118 %121 = call noundef zeroext i1 @_Z10CharToWidePKcPwm(ptr noundef nonnull %9, ptr noundef nonnull %13, i64 noundef 2048) @@ -224,51 +224,56 @@ _Z5uiMsgIJRA2048_wS1_EEv14UIMESSAGE_CODEDpOT_.exit: ; preds = %48 call void @llvm.lifetime.end.p0(ptr nonnull %9) br label %.thread42.sink.split.i -.thread.i: ; preds = %112, %118 +.thread.i: ; preds = %112 call void @llvm.lifetime.end.p0(ptr nonnull %10) call void @llvm.lifetime.end.p0(ptr nonnull %9) call void @llvm.lifetime.end.p0(ptr nonnull %8) %122 = load ptr, ptr %93, align 8, !tbaa !93 %.not28.i = icmp eq ptr %122, null - br i1 %.not28.i, label %132, label %125 + br i1 %.not28.i, label %.thread112, label %126 -.thread.i.thread121: ; preds = %105 +.thread.i.thread121: ; preds = %118 + call void @llvm.lifetime.end.p0(ptr nonnull %10) + call void @llvm.lifetime.end.p0(ptr nonnull %9) call void @llvm.lifetime.end.p0(ptr nonnull %8) %123 = load ptr, ptr %93, align 8, !tbaa !93 %.not28.i123 = icmp eq ptr %123, null - br i1 %.not28.i123, label %.loopexit, label %125 + br i1 %.not28.i123, label %.thread41.i, label %126 -.thread.i.thread: ; preds = %103 +.thread.i.thread: ; preds = %105 + call void @llvm.lifetime.end.p0(ptr nonnull %8) %124 = load ptr, ptr %93, align 8, !tbaa !93 %.not28.i110 = icmp eq ptr %124, null - br i1 %.not28.i110, label %.loopexit, label %125 + br i1 %.not28.i110, label %.loopexit, label %126 -125: ; preds = %.thread.i.thread121, %.thread.i.thread, %.thread.i - %.02231.i111 = phi i1 [ false, %.thread.i.thread ], [ %117, %.thread.i ], [ true, %.thread.i.thread121 ] +125: ; preds = %103 + %125 = load ptr, ptr %93, align 8, !tbaa !93 + %.not2846.i = icmp eq ptr %125, null + br i1 %.not2846.i, label %.thread112, label %126 + +126: ; preds = %.thread.i.thread120, %.thread.i.thread, %.thread.thread.i, %.thread.i + %.0223147.i = phi i1 [ false, %.thread.thread.i ], [ true, %.thread.i ], [ true, %.thread.i.thread ], [ false, %.thread.i.thread120 ] call void @llvm.lifetime.start.p0(ptr nonnull %11) %126 = call noundef zeroext i1 @_Z10WideToCharPKwPcm(ptr noundef nonnull %13, ptr noundef nonnull %11, i64 noundef 2048) %127 = load ptr, ptr %93, align 8, !tbaa !93 - %128 = call noundef i32 %127(ptr noundef nonnull %11, i32 noundef 0) + %128 = call noundef i32 %128(ptr noundef nonnull %11, i32 noundef 0) %129 = icmp eq i32 %128, 0 br i1 %129, label %.thread44.i, label %130 -.thread44.i: ; preds = %125 +.thread44.i: ; preds = %126 call void @llvm.lifetime.end.p0(ptr nonnull %11) br label %.loopexit -130: ; preds = %125 +130: ; preds = %126 %131 = call noundef zeroext i1 @_Z10CharToWidePKcPwm(ptr noundef nonnull %11, ptr noundef nonnull %13, i64 noundef 2048) call void @llvm.lifetime.end.p0(ptr nonnull %11) - br i1 %.02231.i111, label %.loopexit, label %.thread42.i - -132: ; preds = %.thread.i - br i1 %117, label %.loopexit, label %.thread42.i + br i1 %.0223147.i, label %.loopexit, label %.thread42.i .thread42.sink.split.i: ; preds = %120, %110 call void @llvm.lifetime.end.p0(ptr nonnull %8) br label %.thread42.i -.thread42.i: ; preds = %.thread42.sink.split.i, %132, %130 +.thread42.i: ; preds = %.thread.i.thread120, %.thread42.sink.split.i, %131 %.pr = load ptr, ptr %89, align 8, !tbaa !91 %133 = icmp eq ptr %.pr, null br i1 %133, label %134, label %_ZL12DllVolChangeP11CommandDataPwm.exit @@ -285,14 +290,14 @@ _ZL12DllVolChangeP11CommandDataPwm.exit: ; preds = %.thread42.i, %134 %139 = call noundef zeroext i1 %138(ptr noundef nonnull align 8 dereferenceable(57108) %0, ptr noundef nonnull %13, i32 noundef %83) br i1 %139, label %.critedge96, label %94, !llvm.loop !94 -.loopexit: ; preds = %.thread.i.thread, %.thread.i.thread121, %130, %132, %134, %.thread44.i +.loopexit: ; preds = %.thread.thread.i, %.thread.i.thread, %131, %134, %.thread.i, %.thread44.i %140 = getelementptr inbounds nuw i8, ptr %16, i64 83424 store i32 15, ptr %140, align 8, !tbaa !95 call void @llvm.lifetime.start.p0(ptr nonnull %7) br label %141 141: ; preds = %141, %.loopexit - %indvars.iv.i.i97 = phi i64 [ 0, %.loopexit ], [ %indvars.iv.next.i.i98, %141 ] + %indvars.iv.i.i97 = phi i64 [ 0, %.thread112 ], [ %indvars.iv.next.i.i98, %141 ] %142 = getelementptr inbounds nuw ptr, ptr %7, i64 %indvars.iv.i.i97 store ptr @.str, ptr %142, align 8, !tbaa !64 %indvars.iv.next.i.i98 = add nuw nsw i64 %indvars.iv.i.i97, 1 diff --git a/bench/clap-rs/optimized/46qpaucouebcxfrx.ll b/bench/clap-rs/optimized/46qpaucouebcxfrx.ll index b3afe071465..502576511ef 100644 --- a/bench/clap-rs/optimized/46qpaucouebcxfrx.ll +++ b/bench/clap-rs/optimized/46qpaucouebcxfrx.ll @@ -9946,7 +9946,7 @@ define hidden noundef nonnull align 8 ptr @"_ZN12clap_builder5error14Error$LT$F$ %234 = getelementptr inbounds nuw i8, ptr %2, i64 24 %235 = load i64, ptr %234, align 8, !range !118, !noundef !7 %236 = icmp ne i64 %235, -9223372036854775808 - %or.cond5 = and i1 %236, %.1146 + %or.cond5 = and i1 %.1146, %236 br i1 %or.cond5, label %238, label %232 237: ; preds = %231 diff --git a/bench/coreutils-rs/optimized/11hiuykak1azonq6.ll b/bench/coreutils-rs/optimized/11hiuykak1azonq6.ll index dec940b11d6..fa05fe6862d 100644 --- a/bench/coreutils-rs/optimized/11hiuykak1azonq6.ll +++ b/bench/coreutils-rs/optimized/11hiuykak1azonq6.ll @@ -6930,8 +6930,8 @@ define internal fastcc void @_ZN7uu_expr11syntax_tree6Parser23parse_simple_expre call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #17 unreachable -common.resume: ; preds = %203, %191, %152, %91, %179, %184, %220, %249, %.thread362, %.body264, %.thread392, %.body - %common.resume.op = phi { ptr, i32 } [ %250, %249 ], [ %.pn222.pn.pn.pn371, %220 ], [ %.pn222.pn.pn378, %184 ], [ %180, %179 ], [ %92, %91 ], [ %166, %.thread362 ], [ %174, %.body264 ], [ %232, %.thread392 ], [ %243, %.body ], [ %153, %152 ], [ %.pn222.pn385, %191 ], [ %.pn222, %203 ] +common.resume: ; preds = %152, %91, %179, %184, %220, %249, %.thread362, %.body264, %191, %203, %.thread392, %.body + %common.resume.op = phi { ptr, i32 } [ %250, %249 ], [ %.pn222.pn.pn.pn371, %220 ], [ %.pn222.pn.pn378, %184 ], [ %180, %179 ], [ %92, %91 ], [ %166, %.thread362 ], [ %174, %.body264 ], [ %.pn222.pn385, %191 ], [ %.pn222, %203 ], [ %232, %.thread392 ], [ %243, %.body ], [ %153, %152 ] resume { ptr, i32 } %common.resume.op 128: ; preds = %248, %219, %178, %156, %141, %125 diff --git a/bench/coreutils-rs/optimized/2145dndjkhee8wnm.ll b/bench/coreutils-rs/optimized/2145dndjkhee8wnm.ll index ac019a7693a..d1792c19de8 100644 --- a/bench/coreutils-rs/optimized/2145dndjkhee8wnm.ll +++ b/bench/coreutils-rs/optimized/2145dndjkhee8wnm.ll @@ -862,7 +862,7 @@ define hidden void @_ZN4core4iter8adapters11try_process17h6ff427c7eb76bd2bE(ptr 19: ; preds = %6 invoke void @"_ZN4core3ptr137drop_in_place$LT$core..result..Result$LT$core..convert..Infallible$C$alloc..boxed..Box$LT$dyn$u20$uucore..mods..error..UError$GT$$GT$$GT$17he5cd97119cff5eb9E.llvm.4103517291658523209"(ptr noalias noundef nonnull align 8 dereferenceable(16) %5) #26 - to label %.thread unwind label %17 + to label %19 unwind label %17 } ; Function Attrs: inlinehint nonlazybind uwtable diff --git a/bench/cpython/optimized/_zoneinfo.ll b/bench/cpython/optimized/_zoneinfo.ll index 73833ef6b73..cf2f4063a62 100644 --- a/bench/cpython/optimized/_zoneinfo.ll +++ b/bench/cpython/optimized/_zoneinfo.ll @@ -1152,38 +1152,37 @@ ymd_to_ord.exit35: ; preds = %.thread, %is_leap_y %.lhs.trunc = trunc nsw i32 %60 to i16 %61 = srem i16 %.lhs.trunc, 7 %62 = icmp slt i16 %61, 0 - %63 = add nsw i16 %61, 7 - %spec.select26 = select i1 %62, i16 %63, i16 %61 - %64 = zext i8 %46 to i16 - %65 = mul nuw nsw i16 %64, 7 - %66 = add nsw i16 %spec.select26, %65 - %67 = trunc i16 %66 to i8 - %68 = add i8 %67, -6 - %69 = sext i8 %68 to i32 - %70 = icmp slt i32 %48, %69 - %71 = add i8 %67, -13 - %.1 = select i1 %70, i8 %71, i8 %68 - %72 = sext i8 %.1 to i32 - %73 = add i32 %55, -719163 - %74 = add i32 %73, %72 - %75 = add i32 %74, %.0.i28 - %76 = sext i32 %75 to i64 - %77 = mul nsw i64 %76, 86400 - %78 = getelementptr inbounds nuw i8, ptr %0, i64 12 - %79 = load i16, ptr %78, align 4, !tbaa !14 - %80 = sext i16 %79 to i64 - %81 = mul nsw i64 %80, 3600 - %82 = add nsw i64 %77, %81 - %83 = getelementptr inbounds nuw i8, ptr %0, i64 14 - %84 = load i8, ptr %83, align 2, !tbaa !15 - %85 = sext i8 %84 to i64 - %86 = mul nsw i64 %85, 60 - %87 = add nsw i64 %82, %86 - %88 = getelementptr inbounds nuw i8, ptr %0, i64 15 - %89 = load i8, ptr %88, align 1, !tbaa !16 - %90 = sext i8 %89 to i64 - %91 = add nsw i64 %87, %90 - ret i64 %91 + %.sext = trunc nsw i16 %61 to i8 + %63 = add nsw i8 %.sext, 7 + %spec.select26 = select i1 %62, i8 %63, i8 %.sext + %65 = mul i8 %46, 7 + %66 = add i8 %spec.select26, %65 + %66 = add i8 %65, -6 + %67 = sext i8 %66 to i32 + %68 = icmp slt i32 %48, %67 + %69 = add i8 %65, -13 + %.1 = select i1 %68, i8 %69, i8 %66 + %70 = sext i8 %.1 to i32 + %71 = add i32 %55, -719163 + %73 = add i32 %71, %70 + %74 = add i32 %73, %.0.i28 + %74 = sext i32 %74 to i64 + %75 = mul nsw i64 %74, 86400 + %76 = getelementptr inbounds nuw i8, ptr %0, i64 12 + %77 = load i16, ptr %76, align 4, !tbaa !14 + %78 = sext i16 %77 to i64 + %79 = mul nsw i64 %78, 3600 + %80 = add nsw i64 %75, %79 + %81 = getelementptr inbounds nuw i8, ptr %0, i64 14 + %82 = load i8, ptr %81, align 2, !tbaa !15 + %83 = sext i8 %82 to i64 + %84 = mul nsw i64 %83, 60 + %85 = add nsw i64 %80, %84 + %86 = getelementptr inbounds nuw i8, ptr %0, i64 15 + %87 = load i8, ptr %86, align 1, !tbaa !16 + %88 = sext i8 %87 to i64 + %89 = add nsw i64 %85, %88 + ret i64 %89 } ; Function Attrs: nounwind uwtable diff --git a/bench/curl/optimized/altsvc.ll b/bench/curl/optimized/altsvc.ll index 2b66085873b..d5acc6bde78 100644 --- a/bench/curl/optimized/altsvc.ll +++ b/bench/curl/optimized/altsvc.ll @@ -757,13 +757,12 @@ thread-pre-split: ; preds = %36 84: ; preds = %71, %73, %78, %82 %.0133.ph = phi ptr [ %.mux, %71 ], [ @.str.3, %73 ], [ @.str.3, %78 ], [ @.str.3, %82 ] - %.0115.ph = phi i1 [ %or.cond, %71 ], [ false, %73 ], [ false, %78 ], [ false, %82 ] %.pr271 = load i8, ptr %.2, align 1, !tbaa !14 %85 = icmp eq i8 %.pr271, 58 br i1 %85, label %86, label %111 86: ; preds = %.thread272, %84 - %.2117282 = phi i1 [ true, %.thread272 ], [ %.0115.ph, %84 ] + %.2117282 = phi i1 [ true, %.thread272 ], [ %or.cond, %84 ] %.2132281 = phi i64 [ %83, %.thread272 ], [ %.1131, %84 ] %.2135279 = phi ptr [ %4, %.thread272 ], [ %.0133.ph, %84 ] %.5277 = phi ptr [ %52, %.thread272 ], [ %.2, %84 ] @@ -833,7 +832,7 @@ thread-pre-split286: ; preds = %98, %99, %104, %108 %.2132280 = phi i64 [ %.2132281, %thread-pre-split286 ], [ %.1131, %84 ] %.2135278 = phi ptr [ %.2135279, %thread-pre-split286 ], [ %.0133.ph, %84 ] %.6 = phi ptr [ %.6.ph, %thread-pre-split286 ], [ %.2, %84 ] - %.3118 = phi i1 [ %.3118.ph, %thread-pre-split286 ], [ %.0115.ph, %84 ] + %.3118 = phi i1 [ %.3118.ph, %thread-pre-split286 ], [ %or.cond, %84 ] %.2113 = phi i16 [ %.2113.ph, %thread-pre-split286 ], [ %.0111, %84 ] %.not177 = icmp eq i8 %112, 34 br i1 %.not177, label %.preheader319.preheader, label %.loopexit314 @@ -856,8 +855,8 @@ thread-pre-split286: ; preds = %98, %99, %104, %108 br label %.preheader319 .preheader319: ; preds = %.preheader319.outer458, %.critedge20 - %.7 = phi ptr [ %.13, %.critedge20 ], [ %.7.ph459, %.preheader319.outer458 ] - %.0124 = phi i1 [ %.1125397, %.critedge20 ], [ %.0124.ph460, %.preheader319.outer458 ] + %.7 = phi ptr [ %.13, %.critedge20 ], [ %.7.ph459, %.preheader319.outer457 ] + %.0124 = phi i1 [ %.1125397, %.critedge20 ], [ %.0124.ph460, %.preheader319.outer457 ] br label %114 114: ; preds = %.critedge8, %.preheader319 @@ -934,7 +933,7 @@ getalnum.exit221: ; preds = %.critedge4.i215 br label %129 129: ; preds = %.preheader454, %.critedge12 - %.10 = phi ptr [ %131, %.critedge12 ], [ %.1.i214, %.preheader454 ] + %.10 = phi ptr [ %131, %.critedge12 ], [ %.1.i214, %.preheader453 ] %130 = load i8, ptr %.10, align 1, !tbaa !14 switch i8 %130, label %.loopexit314 [ i8 9, label %.critedge12 diff --git a/bench/cvc5/optimized/infer_proof_cons.ll b/bench/cvc5/optimized/infer_proof_cons.ll index f34c1a65953..f984ec29bbe 100644 --- a/bench/cvc5/optimized/infer_proof_cons.ll +++ b/bench/cvc5/optimized/infer_proof_cons.ll @@ -6448,7 +6448,7 @@ _ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit2052: ; preds = %1941, %1945, %195 to label %2006 unwind label %2025 2006: ; preds = %2005 - switch i32 %1, label %.loopexit4788 [ + switch i32 %1, label %.loopexit4789 [ i32 307, label %2007 i32 301, label %2007 i32 316, label %2053 @@ -7520,7 +7520,7 @@ _ZN4cvc58internal8RationalD2Ev.exit2058: ; preds = %2249, %2237 br label %2431 2287: ; preds = %.loopexit4788, %1797, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit2046, %1885, %1969 - %.13 = phi i8 [ %.14, %.loopexit4788 ], [ %spec.select4809, %1797 ], [ %spec.select4810, %1885 ], [ %spec.select4811, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit2046 ], [ 0, %1969 ] + %.13 = phi i8 [ %.14, %.loopexit4789 ], [ %spec.select4809, %1797 ], [ %spec.select4810, %1885 ], [ %spec.select4811, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit2046 ], [ 0, %1969 ] call void @_ZN4cvc58internal12NodeTemplateILb1EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %84) #25 call void @llvm.lifetime.end.p0(ptr nonnull %84) call void @_ZN4cvc58internal12NodeTemplateILb1EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %83) #25 @@ -8879,7 +8879,7 @@ _ZN4cvc58internal12NodeTemplateILb1EEC2ERKS2_.exit2163: ; preds = %2660, %2654, call void @_ZN4cvc58internal12NodeTemplateILb1EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %217) #25 call void @llvm.lifetime.end.p0(ptr nonnull %217) call void @llvm.lifetime.end.p0(ptr nonnull %216) - br label %2745 + br i1 %2664, label %2746, label %.thread4776 2743: ; preds = %2741, %2735 %.pn1066.pn = phi { ptr, i32 } [ %.pn1066, %2741 ], [ %2736, %2735 ] @@ -8892,11 +8892,12 @@ _ZN4cvc58internal12NodeTemplateILb1EEC2ERKS2_.exit2163: ; preds = %2660, %2654, call void @llvm.lifetime.end.p0(ptr nonnull %216) br label %.body2167 -2745: ; preds = %2703, %2742, %2707 - %.0833 = phi i32 [ 117, %2703 ], [ %.1834, %2742 ], [ 118, %2707 ] +2745: ; preds = %2703, %2707 + %.0833 = phi i32 [ 117, %2703 ], [ 118, %2707 ] br i1 %2664, label %2746, label %.thread4776 -2746: ; preds = %2745 +2746: ; preds = %2742, %2745 + %.08334780 = phi i32 [ %.1834, %2742 ], [ %.0833, %2745 ] call void @llvm.lifetime.start.p0(ptr nonnull %221) call void @llvm.lifetime.start.p0(ptr nonnull %222) call void @llvm.lifetime.start.p0(ptr nonnull %223) @@ -8913,7 +8914,7 @@ _ZN4cvc58internal12NodeTemplateILb1EEC2ERKS2_.exit2163: ; preds = %2660, %2654, to label %2749 unwind label %2774 2749: ; preds = %2748 - invoke void @_ZN4cvc58internal15ProofStepBuffer7tryStepENS_9ProofRuleERKSt6vectorINS0_12NodeTemplateILb1EEESaIS5_EES9_S5_(ptr dead_on_unwind nonnull writable sret(%"class.cvc5::internal::NodeTemplate") align 8 %221, ptr noundef nonnull align 8 dereferenceable(104) %23, i32 noundef %.0833, ptr noundef nonnull align 8 dereferenceable(24) %222, ptr noundef nonnull align 8 dereferenceable(24) %213, ptr noundef nonnull %225) + invoke void @_ZN4cvc58internal15ProofStepBuffer7tryStepENS_9ProofRuleERKSt6vectorINS0_12NodeTemplateILb1EEESaIS5_EES9_S5_(ptr dead_on_unwind nonnull writable sret(%"class.cvc5::internal::NodeTemplate") align 8 %221, ptr noundef nonnull align 8 dereferenceable(104) %23, i32 noundef %.08334780, ptr noundef nonnull align 8 dereferenceable(24) %222, ptr noundef nonnull align 8 dereferenceable(24) %213, ptr noundef nonnull %225) to label %2750 unwind label %2776 2750: ; preds = %2749 @@ -9010,8 +9011,8 @@ _ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit2172: ; preds = %2752, %2756, %276 call void @llvm.lifetime.end.p0(ptr nonnull %221) br label %.body2167 -.thread4776: ; preds = %2698, %2745 - %.08334779 = phi i32 [ %.0833, %2745 ], [ 156, %2698 ] +.thread4776: ; preds = %2698, %2742, %2745 + %.08334779 = phi i32 [ %.0833, %2745 ], [ %.1834, %2742 ], [ 156, %2698 ] store i32 %.08334779, ptr %22, align 8, !tbaa !117 %2782 = getelementptr inbounds nuw i8, ptr %22, i64 32 %2783 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN4cvc58internal12NodeTemplateILb1EEESaIS3_EEaSERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %2782, ptr noundef nonnull align 8 dereferenceable(24) %213) diff --git a/bench/cvc5/optimized/theory_arith_private.ll b/bench/cvc5/optimized/theory_arith_private.ll index c772fb32780..52598cd951d 100644 --- a/bench/cvc5/optimized/theory_arith_private.ll +++ b/bench/cvc5/optimized/theory_arith_private.ll @@ -66909,51 +66909,60 @@ define hidden void @_ZN4cvc58internal6theory5arith6linear18TheoryArithPrivate18p %7 = load i32, ptr %6, align 4, !tbaa !411 %8 = getelementptr inbounds nuw i8, ptr %0, i64 1456 %9 = tail call noundef zeroext i1 @_ZNK4cvc58internal6theory5arith6linear14ArithVariables23strictlyAboveLowerBoundEj(ptr noundef nonnull align 8 dereferenceable(568) %8, i32 noundef %1) - br i1 %9, label %10, label %14 + br i1 %9, label %10, label %.thread21 10: ; preds = %2 %11 = getelementptr inbounds nuw i8, ptr %0, i64 2760 %12 = tail call noundef ptr @_ZN4cvc58internal6theory5arith6linear20LinearEqualityModule13rowLacksBoundEjbj(ptr noundef nonnull align 8 dereferenceable(456) %11, i32 noundef %7, i1 noundef zeroext false, i32 noundef %1) %13 = icmp eq ptr %12, null - br label %14 + %14 = tail call noundef zeroext i1 @_ZNK4cvc58internal6theory5arith6linear14ArithVariables23strictlyBelowUpperBoundEj(ptr noundef nonnull align 8 dereferenceable(568) %8, i32 noundef %1) + br i1 %14, label %19, label %.thread19 -14: ; preds = %10, %2 - %15 = phi i1 [ false, %2 ], [ %13, %10 ] +.thread21:; preds = %2 %16 = tail call noundef zeroext i1 @_ZNK4cvc58internal6theory5arith6linear14ArithVariables23strictlyBelowUpperBoundEj(ptr noundef nonnull align 8 dereferenceable(568) %8, i32 noundef %1) - br i1 %16, label %17, label %21 + br i1 %16, label %17, label %33 -17: ; preds = %14 +17: ; preds = %.thread21 %18 = getelementptr inbounds nuw i8, ptr %0, i64 2760 %19 = tail call noundef ptr @_ZN4cvc58internal6theory5arith6linear20LinearEqualityModule13rowLacksBoundEjbj(ptr noundef nonnull align 8 dereferenceable(456) %18, i32 noundef %7, i1 noundef zeroext true, i32 noundef %1) %20 = icmp eq ptr %19, null - br label %21 + br i1 %18, label %26, label %33 -21: ; preds = %17, %14 - %22 = phi i1 [ false, %14 ], [ %20, %17 ] - br i1 %15, label %23, label %25 +21: ; preds = %10 + %20 = getelementptr inbounds nuw i8, ptr %0, i64 2760 + %21 = tail call noundef ptr @_ZN4cvc58internal6theory5arith6linear20LinearEqualityModule13rowLacksBoundEjbj(ptr noundef nonnull align 8 dereferenceable(456) %20, i32 noundef %7, i1 noundef zeroext true, i32 noundef %1) + %22 = icmp eq ptr %21, null + br i1 %13, label %24, label %26 -23: ; preds = %21 - %24 = tail call noundef zeroext i1 @_ZN4cvc58internal6theory5arith6linear18TheoryArithPrivate23propagateCandidateBoundEjb(ptr noundef nonnull align 8 dereferenceable(9440) %0, i32 noundef %1, i1 noundef zeroext false) - br label %25 +.thread19:; preds = %10 + br i1 %13, label %.thread20, label %.thread17 -25: ; preds = %23, %21 - %.0 = phi i1 [ %24, %23 ], [ false, %21 ] +.thread20:; preds = %.thread21 + %23 = tail call noundef zeroext i1 @_ZN4cvc58internal6theory5arith6linear18TheoryArithPrivate23propagateCandidateBoundEjb(ptr noundef nonnull align 8 dereferenceable(9440) %0, i32 noundef %1, i1 noundef zeroext false) + br i1 %23, label %30, label %.thread17 + +24: ; preds = %19 + %25 = tail call noundef zeroext i1 @_ZN4cvc58internal6theory5arith6linear18TheoryArithPrivate23propagateCandidateBoundEjb(ptr noundef nonnull align 8 dereferenceable(9440) %0, i32 noundef %1, i1 noundef zeroext false) br i1 %22, label %26, label %29 -26: ; preds = %25 +26: ; preds = %21 + br i1 %22, label %26, label %.thread17 + +26: ; preds = %.thread22, %.thread, %24 + %.015 = phi i1 [ false, %.thread ], [ %25, %24 ], [ false, %.thread22 ] %27 = tail call noundef zeroext i1 @_ZN4cvc58internal6theory5arith6linear18TheoryArithPrivate23propagateCandidateBoundEjb(ptr noundef nonnull align 8 dereferenceable(9440) %0, i32 noundef %1, i1 noundef zeroext true) - %28 = or i1 %.0, %27 + %28 = or i1 %.015, %27 br i1 %28, label %30, label %33 -29: ; preds = %25 - br i1 %.0, label %30, label %33 +29: ; preds = %24 + br i1 %25, label %30, label %33 -30: ; preds = %26, %29 +30: ; preds = %.thread20, %26, %29 %31 = getelementptr inbounds nuw i8, ptr %0, i64 8992 %32 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN4cvc58internal7IntStatppEv(ptr noundef nonnull align 8 dereferenceable(8) %31) br label %33 -33: ; preds = %26, %30, %29 +33: ; preds = %17, %.thread21, %.thread19, %.thread20, %26, %26, %30, %29 ret void } diff --git a/bench/delta-rs/optimized/11f8x98axanecwnw.ll b/bench/delta-rs/optimized/11f8x98axanecwnw.ll index 1ae64f9fd86..118ddcd76e4 100644 --- a/bench/delta-rs/optimized/11f8x98axanecwnw.ll +++ b/bench/delta-rs/optimized/11f8x98axanecwnw.ll @@ -80265,7 +80265,7 @@ define void @_ZN14deltalake_core10operations6create13CreateBuilder22into_table_a %.1197 = phi i8 [ %.0196, %81 ], [ %.3199, %609 ], [ %.3199, %595 ], [ 1, %127 ], [ 0, %610 ], [ %.5201, %199 ], [ 1, %128 ], [ 1, %181 ], [ 1, %177 ] %.0188 = phi i8 [ 1, %81 ], [ %.2190645, %609 ], [ %.1189, %595 ], [ 1, %127 ], [ 1, %610 ], [ 1, %199 ], [ 1, %128 ], [ 1, %181 ], [ 1, %177 ] %.0181 = phi i8 [ 1, %81 ], [ %.2183646, %609 ], [ %.1182, %595 ], [ 1, %127 ], [ 1, %610 ], [ 1, %199 ], [ 1, %128 ], [ 1, %181 ], [ 1, %177 ] - %.0177 = phi i8 [ 1, %81 ], [ %.2647, %609 ], [ %.1, %595 ], [ 1, %127 ], [ 1, %610 ], [ 1, %199 ], [ 1, %128 ], [ 1, %181 ], [ 1, %177 ] + %.0177 = phi i1 [ true, %81 ], [ %.2647, %609 ], [ %.1, %595 ], [ true, %127 ], [ true, %610 ], [ true, %199 ], [ true, %128 ], [ true, %181 ], [ true, %177 ] %.pn293 = phi { ptr, i32 } [ %82, %81 ], [ %.pn291648, %609 ], [ %.pn288.pn, %595 ], [ %.pn267, %127 ], [ %611, %610 ], [ %.pn.pn, %199 ], [ %lpad.thr_comm.split-lp, %128 ], [ %.pn269531, %181 ], [ %.pn269531, %177 ] %77 = getelementptr inbounds nuw i8, ptr %1, i64 48 %78 = load i64, ptr %77, align 8, !range !266, !noundef !4 @@ -80837,7 +80837,7 @@ define void @_ZN14deltalake_core10operations6create13CreateBuilder22into_table_a %.3217 = phi i8 [ 1, %608 ], [ 1, %.body363 ], [ 1, %302 ], [ %.5219.ph, %.thread590 ], [ 1, %354 ], [ %.8610, %.thread599 ], [ 1, %.loopexit.split-lp ], [ 1, %.loopexit ], [ 0, %.body376 ] %.1189 = phi i8 [ 1, %608 ], [ 1, %.body363 ], [ 1, %302 ], [ 1, %.thread590 ], [ 1, %354 ], [ %.4192612, %.thread599 ], [ 1, %.loopexit.split-lp ], [ 1, %.loopexit ], [ %.5193, %.body376 ] %.1182 = phi i8 [ 1, %608 ], [ 1, %.body363 ], [ 1, %302 ], [ 1, %.thread590 ], [ 1, %354 ], [ %.4185614, %.thread599 ], [ 1, %.loopexit.split-lp ], [ 1, %.loopexit ], [ %.6187, %.body376 ] - %.1 = phi i8 [ 1, %608 ], [ 1, %.body363 ], [ 1, %302 ], [ 1, %.thread590 ], [ 1, %354 ], [ 1, %.thread599 ], [ 1, %.loopexit.split-lp ], [ 1, %.loopexit ], [ 0, %.body376 ] + %.1 = phi i1 [ true, %608 ], [ true, %.body363 ], [ true, %302 ], [ true, %.thread590 ], [ true, %354 ], [ true, %.thread599 ], [ true, %.loopexit.split-lp ], [ true, %.loopexit ], [ false, %.body376 ] %.pn288.pn = phi { ptr, i32 } [ %lpad.thr_comm.split-lp589, %608 ], [ %.pn271, %.body363 ], [ %303, %302 ], [ %lpad.thr_comm588, %.thread590 ], [ %355, %354 ], [ %.pn286618, %.thread599 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ], [ %lpad.loopexit, %.loopexit ], [ %.pn275, %.body376 ] invoke void @"_ZN4core3ptr54drop_in_place$LT$deltalake_core..table..DeltaTable$GT$17h6bf8ee1f75411a04E"(ptr noalias noundef nonnull align 8 dereferenceable(632) %64) #64 to label %595 unwind label %174 @@ -81844,7 +81844,7 @@ _ZN3std4hash6random11RandomState3new4KEYS7__getit17h7a0280ef360f84c5E.llvm.82263 to label %"_ZN4core3ptr87drop_in_place$LT$alloc..sync..Arc$LT$dyn$u20$deltalake_core..logstore..LogStore$GT$$GT$17hd733535e0c787fc9E.llvm.8226331118977765550.exit405" unwind label %174 588: ; preds = %768, %712, %"_ZN4core3ptr87drop_in_place$LT$alloc..sync..Arc$LT$dyn$u20$deltalake_core..logstore..LogStore$GT$$GT$17hd733535e0c787fc9E.llvm.8226331118977765550.exit405" - %.pn309.pn = phi { ptr, i32 } [ %.pn309, %712 ], [ %.pn293, %768 ], [ %.pn284, %"_ZN4core3ptr87drop_in_place$LT$alloc..sync..Arc$LT$dyn$u20$deltalake_core..logstore..LogStore$GT$$GT$17hd733535e0c787fc9E.llvm.8226331118977765550.exit405" ] + %.pn309.pn = phi { ptr, i32 } [ %.pn309, %712 ], [ %.pn293, %767 ], [ %.pn284, %"_ZN4core3ptr87drop_in_place$LT$alloc..sync..Arc$LT$dyn$u20$deltalake_core..logstore..LogStore$GT$$GT$17hd733535e0c787fc9E.llvm.8226331118977765550.exit405" ] resume { ptr, i32 } %.pn309.pn 589: ; preds = %472 @@ -81941,7 +81941,7 @@ _ZN3std4hash6random11RandomState3new4KEYS7__getit17h7a0280ef360f84c5E.llvm.82263 609: ; preds = %.thread635, %595 %.pn291648 = phi { ptr, i32 } [ %596, %.thread635 ], [ %.pn288.pn, %595 ] - %.2647 = phi i8 [ 1, %.thread635 ], [ %.1, %595 ] + %.2647 = phi i1 [ true, %.thread635 ], [ %.1, %595 ] %.2183646 = phi i8 [ 1, %.thread635 ], [ %.1182, %595 ] %.2190645 = phi i8 [ 1, %.thread635 ], [ %.1189, %595 ] %.4218644 = phi i8 [ 0, %.thread635 ], [ %.3217, %595 ] @@ -82335,8 +82335,7 @@ _ZN3std4hash6random11RandomState3new4KEYS7__getit17h7a0280ef360f84c5E.llvm.82263 to label %"_ZN4core3ptr93drop_in_place$LT$core..option..Option$LT$alloc..vec..Vec$LT$alloc..string..String$GT$$GT$$GT$17h4be47992871ca0d1E.llvm.8226331118977765550.exit433" unwind label %174 754: ; preds = %756, %"_ZN4core3ptr93drop_in_place$LT$core..option..Option$LT$alloc..vec..Vec$LT$alloc..string..String$GT$$GT$$GT$17h4be47992871ca0d1E.llvm.8226331118977765550.exit433" - %755 = trunc nuw i8 %.0177 to i1 - br i1 %755, label %763, label %758 + br i1 %.0177, label %762, label %757 756: ; preds = %"_ZN4core3ptr93drop_in_place$LT$core..option..Option$LT$alloc..vec..Vec$LT$alloc..string..String$GT$$GT$$GT$17h4be47992871ca0d1E.llvm.8226331118977765550.exit433" %757 = getelementptr inbounds nuw i8, ptr %1, i64 192 @@ -82353,7 +82352,7 @@ _ZN3std4hash6random11RandomState3new4KEYS7__getit17h7a0280ef360f84c5E.llvm.82263 763: ; preds = %754 invoke void @"_ZN4core3ptr82drop_in_place$LT$alloc..vec..Vec$LT$deltalake_core..kernel..models..Action$GT$$GT$17h30c0b44d1061daa0E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %66) #64 - to label %758 unwind label %174 + to label %757 unwind label %174 "_ZN4core3ptr87drop_in_place$LT$alloc..sync..Arc$LT$dyn$u20$deltalake_core..logstore..LogStore$GT$$GT$17hd733535e0c787fc9E.llvm.8226331118977765550.exit435": ; preds = %764, %767, %758 br i1 %746, label %770, label %768 @@ -82376,7 +82375,7 @@ _ZN3std4hash6random11RandomState3new4KEYS7__getit17h7a0280ef360f84c5E.llvm.82263 770: ; preds = %"_ZN4core3ptr87drop_in_place$LT$alloc..sync..Arc$LT$dyn$u20$deltalake_core..logstore..LogStore$GT$$GT$17hd733535e0c787fc9E.llvm.8226331118977765550.exit435" %771 = getelementptr inbounds nuw i8, ptr %1, i64 144 invoke void @"_ZN4core3ptr138drop_in_place$LT$std..collections..hash..map..HashMap$LT$alloc..string..String$C$core..option..Option$LT$alloc..string..String$GT$$GT$$GT$17h6dd0457013f72378E"(ptr noalias noundef nonnull align 8 dereferenceable(48) %771) #64 - to label %768 unwind label %174 + to label %767 unwind label %174 } ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: read) uwtable @@ -94148,7 +94147,7 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit188.i: ; preds = %779 %.pn84 = phi { ptr, i32 } [ %916, %915 ], [ %.pn82.ph, %917 ], [ %881, %.body86 ] %913 = load i64, ptr %1, align 8, !range !266, !noundef !4 %914 = icmp ne i64 %913, -9223372036854775808 - %or.cond = and i1 %914, %.2 + %or.cond = and i1 %.2, %914 br i1 %or.cond, label %919, label %918 915: ; preds = %808 diff --git a/bench/draco/optimized/parser_utils.ll b/bench/draco/optimized/parser_utils.ll index ba565092455..c9f39fe687e 100644 --- a/bench/draco/optimized/parser_utils.ll +++ b/bench/draco/optimized/parser_utils.ll @@ -471,7 +471,7 @@ _ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit61: ; preds = %.lr.ph store i64 %.lcssa89, ptr %6, align 8, !tbaa !14 %33 = add i64 %.lcssa89, 1 %.not88100 = icmp slt i64 %5, %33 - br i1 %.not88100, label %.critedge8, label %_ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit62.preheader + br i1 %.not88100, label %_ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit62, label %_ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit62.preheader _ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit62.preheader: ; preds = %.preheader %34 = getelementptr inbounds i8, ptr %10, i64 %.lcssa89 @@ -480,7 +480,10 @@ _ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit62.preheader: ; preds = %.preheader %37 = icmp ult i8 %36, 10 br i1 %37, label %.lr.ph179, label %.critedge8 -_ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit62: ; preds = %.lr.ph179 +_ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit62: ; preds = %.preheader + br i1 %.050.lcssa, label %_ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit62.thread.thread.thread, label %51 + +_ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit62: ; preds = %.lr.ph190 %38 = getelementptr inbounds i8, ptr %10, i64 %43 %39 = load i8, ptr %38, align 1 %40 = add i8 %39, -48 @@ -502,14 +505,14 @@ _ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit62: ; preds = %.lr.ph179 %.not88 = icmp slt i64 %5, %49 br i1 %.not88, label %.critedge8.thread, label %_ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit62, !llvm.loop !28 -.critedge8: ; preds = %_ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit62, %_ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit62.preheader, %.preheader, %.critedge - %50 = phi i64 [ %31, %.critedge ], [ %.lcssa89, %.preheader ], [ %.lcssa89, %_ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit62.preheader ], [ %43, %_ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit62 ] - %.1 = phi i8 [ %.480, %.critedge ], [ 46, %.preheader ], [ %35, %_ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit62.preheader ], [ %39, %_ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit62 ] - %.151 = phi i1 [ %.050.lcssa, %.critedge ], [ %.050.lcssa, %.preheader ], [ %.050.lcssa, %_ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit62.preheader ], [ true, %_ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit62 ] - %.147 = phi double [ %.046.lcssa, %.critedge ], [ %.046.lcssa, %.preheader ], [ %.046.lcssa, %_ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit62.preheader ], [ %48, %_ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit62 ] +.critedge8: ; preds = %_ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit62, %_ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit62.preheader, %.critedge + %50 = phi i64 [ %31, %.critedge ], [ %.lcssa89, %_ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit62.preheader ], [ %43, %_ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit62 ] + %.1 = phi i8 [ %.480, %.critedge ], [ %35, %_ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit62.preheader ], [ %39, %_ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit62 ] + %.151 = phi i1 [ %.050.lcssa, %.critedge ], [ %.050.lcssa, %_ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit62.preheader ], [ true, %_ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit62 ] + %.147 = phi double [ %.046.lcssa, %.critedge ], [ %.046.lcssa, %_ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit62.preheader ], [ %48, %_ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit62 ] br i1 %.151, label %.critedge8.thread, label %51 -51: ; preds = %.critedge8 +51: ; preds = %_ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit62, %.critedge8 call void @llvm.lifetime.start.p0(ptr nonnull %3) %52 = getelementptr inbounds nuw i8, ptr %3, i64 16 store ptr %52, ptr %3, align 8, !tbaa !29 @@ -576,10 +579,10 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit65: ; preds = %74, br label %110 .critedge8.thread: ; preds = %.lr.ph, %.lr.ph179, %.critedge8 - %.147135 = phi double [ %.147, %.critedge8 ], [ %48, %.lr.ph179 ], [ %29, %.lr.ph ] - %.1134 = phi i8 [ %.1, %.critedge8 ], [ %42, %.lr.ph179 ], [ %23, %.lr.ph ] - %79 = phi i64 [ %50, %.critedge8 ], [ %43, %.lr.ph179 ], [ %24, %.lr.ph ] - %80 = and i8 %.1134, -33 + %.147135 = phi i64 [ %50, %.critedge8 ], [ %43, %.lr.ph190 ], [ %24, %.lr.ph ] + %.1134 = phi double [ %.147, %.critedge8 ], [ %48, %.lr.ph190 ], [ %29, %.lr.ph ] + %79 = phi i8 [ %.1, %.critedge8 ], [ %42, %.lr.ph190 ], [ %23, %.lr.ph ] + %80 = and i8 %.183, -33 %or.cond11 = icmp eq i8 %80, 69 br i1 %or.cond11, label %81, label %110 @@ -642,11 +645,11 @@ _ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit.i.i: ; preds = %.lr.ph.i %106 = select i1 %switch.selectcmp4.i.not.i, i32 %105, i32 %102 %107 = sitofp i32 %106 to double %108 = tail call double @pow(double noundef 1.000000e+01, double noundef %107) #19, !tbaa !31 - %109 = fmul double %.147135, %108 + %109 = fmul double %.1134, %108 br label %110 -110: ; preds = %104, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit65, %.critedge8.thread - %.5 = phi double [ %109, %104 ], [ %.147135, %.critedge8.thread ], [ %.349, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit65 ] +110: ; preds = %_ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit62, %104, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit65, %.critedge8.thread + %.5 = phi double [ %109, %104 ], [ %.1134, %_ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit62.thread.thread ], [ %.349, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit65 ], [ %.046.lcssa, %_ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit62.thread ] %111 = fptrunc double %.5 to float %112 = fneg float %111 %113 = select i1 %.053, float %112, float %111 @@ -669,7 +672,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit68: ; preds = %.cr br label %_ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit _ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit: ; preds = %_ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit.lr.ph.i.i, %88, %81, %2, %110, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit68 - %.0 = phi i1 [ true, %110 ], [ false, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit68 ], [ false, %2 ], [ false, %81 ], [ false, %88 ], [ false, %_ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit.lr.ph.i.i ] + %.0 = phi i1 [ true, %_ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit62.thread.thread.thread ], [ false, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit68 ], [ false, %2 ], [ false, %81 ], [ false, %88 ], [ false, %_ZN5draco13DecoderBuffer4PeekIcEEbPT_.exit.lr.ph.i.i ] ret i1 %.0 } diff --git a/bench/duckdb/optimized/miniz.ll b/bench/duckdb/optimized/miniz.ll index 3174be5434d..112cdb0c3f4 100644 --- a/bench/duckdb/optimized/miniz.ll +++ b/bench/duckdb/optimized/miniz.ll @@ -13915,7 +13915,7 @@ define internal fastcc noundef i32 @_ZN12duckdb_minizL37mz_zip_writer_create_zip 12: ; preds = %9, %4 %.022 = phi ptr [ %11, %9 ], [ %8, %4 ] - %.0 = phi i32 [ 8, %9 ], [ 0, %4 ] + %.0 = phi i16 [ 8, %9 ], [ 0, %4 ] %.not28 = icmp eq ptr %2, null br i1 %.not28, label %16, label %13 @@ -13923,12 +13923,12 @@ define internal fastcc noundef i32 @_ZN12duckdb_minizL37mz_zip_writer_create_zip %14 = load i64, ptr %2, align 8, !tbaa !53 store i64 %14, ptr %.022, align 1 %15 = getelementptr inbounds nuw i8, ptr %.022, i64 8 - %narrow = add nuw nsw i32 %.0, 8 + %narrow = add nuw nsw i16 %.0, 8 br label %16 16: ; preds = %13, %12 %.123 = phi ptr [ %15, %13 ], [ %.022, %12 ] - %.1 = phi i32 [ %narrow, %13 ], [ %.0, %12 ] + %.1 = phi i16 [ %narrow, %13 ], [ %.0, %12 ] %.not29 = icmp eq ptr %3, null br i1 %.not29, label %21, label %17 @@ -13936,19 +13936,18 @@ define internal fastcc noundef i32 @_ZN12duckdb_minizL37mz_zip_writer_create_zip %18 = load i64, ptr %3, align 8, !tbaa !53 store i64 %18, ptr %.123, align 1 %19 = getelementptr inbounds nuw i8, ptr %.123, i64 8 - %20 = add nuw nsw i32 %.1, 8 + %20 = add nuw nsw i16 %.1, 8 br label %21 21: ; preds = %17, %16 %.224 = phi ptr [ %19, %17 ], [ %.123, %16 ] - %.2 = phi i32 [ %20, %17 ], [ %.1, %16 ] - %22 = trunc nuw nsw i32 %.2 to i16 - store i16 %22, ptr %6, align 1 - %23 = ptrtoint ptr %.224 to i64 - %24 = ptrtoint ptr %0 to i64 - %25 = sub i64 %23, %24 - %26 = trunc i64 %25 to i32 - ret i32 %26 + %.2 = phi i16 [ %20, %17 ], [ %.1, %16 ] + store i16 %.2, ptr %6, align 1 + %22 = ptrtoint ptr %.224 to i64 + %23 = ptrtoint ptr %0 to i64 + %24 = sub i64 %22, %23 + %25 = trunc i64 %24 to i32 + ret i32 %25 } ; Function Attrs: mustprogress uwtable diff --git a/bench/ffmpeg/optimized/cabac.ll b/bench/ffmpeg/optimized/cabac.ll index b5b5e88244c..5bd9d7bc6fe 100644 --- a/bench/ffmpeg/optimized/cabac.ll +++ b/bench/ffmpeg/optimized/cabac.ll @@ -120,8 +120,8 @@ define range(i32 -1094995529, 1) i32 @ff_vvc_cabac_init(ptr noundef readonly cap %.0.i.i = select i1 %.not.i.i, i32 %61, i32 %62 %63 = getelementptr inbounds nuw i8, ptr %58, i64 1345 %64 = load i8, ptr %63, align 1, !tbaa !75 - %65 = zext i8 %64 to i32 - %66 = sub nsw i32 2, %65 + %65 = zext i8 %64 to i64 + %66 = sub nsw i64 2, %65 %67 = getelementptr inbounds nuw i8, ptr %0, i64 4580560 %68 = load ptr, ptr %67, align 16, !tbaa !67 %69 = getelementptr inbounds nuw i8, ptr %56, i64 28 @@ -140,58 +140,57 @@ define range(i32 -1094995529, 1) i32 @ff_vvc_cabac_init(ptr noundef readonly cap 78: ; preds = %52 %79 = load i8, ptr %63, align 1, !tbaa !75 %80 = icmp eq i8 %79, 2 - %81 = xor i32 %66, 3 - %spec.select.i = select i1 %80, i32 %66, i32 %81 + %81 = xor i64 %66, 3 + %spec.select.i = select i1 %80, i64 %66, i64 %81 br label %82 82: ; preds = %78, %52 - %.0.i = phi i32 [ %66, %52 ], [ %spec.select.i, %78 ] - %83 = sext i32 %.0.i to i64 - %84 = getelementptr inbounds [378 x i8], ptr @init_values, i64 %83 - %85 = add nsw i32 %.0.i.i, -16 - br label %86 - -86: ; preds = %86, %82 - %indvars.iv.i = phi i64 [ 0, %82 ], [ %indvars.iv.next.i, %86 ] - %87 = load ptr, ptr %67, align 16, !tbaa !67 - %88 = getelementptr inbounds nuw i8, ptr %87, i64 400 - %89 = getelementptr inbounds nuw %struct.VVCCabacState, ptr %88, i64 %indvars.iv.i - %90 = getelementptr inbounds nuw i8, ptr %84, i64 %indvars.iv.i - %91 = load i8, ptr %90, align 1, !tbaa !97 - %92 = zext i8 %91 to i32 - %93 = getelementptr inbounds nuw i8, ptr getelementptr inbounds nuw (i8, ptr @init_values, i64 1134), i64 %indvars.iv.i - %94 = load i8, ptr %93, align 1, !tbaa !97 - %95 = lshr i32 %92, 3 - %96 = add nsw i32 %95, -4 - %97 = and i32 %92, 7 - %98 = mul nuw nsw i32 %97, 18 - %99 = or disjoint i32 %98, 1 - %100 = mul nsw i32 %96, %85 - %101 = ashr i32 %100, 1 - %102 = add nsw i32 %99, %101 - %103 = tail call i32 @llvm.smax.i32(i32 %102, i32 1) - %104 = tail call i32 @llvm.umin.i32(i32 %103, i32 127) - %.tr.i = trunc nuw nsw i32 %104 to i16 - %105 = shl nuw nsw i16 %.tr.i, 3 - store i16 %105, ptr %89, align 2, !tbaa !58 - %106 = shl nuw nsw i16 %.tr.i, 7 - %107 = getelementptr inbounds nuw i8, ptr %89, i64 2 - store i16 %106, ptr %107, align 2, !tbaa !58 - %108 = lshr i8 %94, 2 - %109 = add nuw nsw i8 %108, 2 - %110 = getelementptr inbounds nuw i8, ptr %89, i64 4 - store i8 %109, ptr %110, align 2, !tbaa !97 - %111 = and i8 %94, 3 - %narrow.i = add nuw nsw i8 %111, 3 - %narrow32.i = add nuw nsw i8 %narrow.i, %109 - %112 = getelementptr inbounds nuw i8, ptr %89, i64 5 - store i8 %narrow32.i, ptr %112, align 1, !tbaa !97 + %.0.i = phi i64 [ %66, %52 ], [ %spec.select.i, %78 ] + %83 = getelementptr inbounds [378 x i8], ptr @init_values, i64 %.0.i + %84 = add nsw i32 %.0.i.i, -16 + br label %85 + +85: ; preds = %85, %82 + %indvars.iv.i = phi i64 [ 0, %82 ], [ %indvars.iv.next.i, %85 ] + %86 = load ptr, ptr %67, align 16, !tbaa !67 + %87 = getelementptr inbounds nuw i8, ptr %86, i64 400 + %88 = getelementptr inbounds nuw %struct.VVCCabacState, ptr %87, i64 %indvars.iv.i + %89 = getelementptr inbounds nuw i8, ptr %83, i64 %indvars.iv.i + %90 = load i8, ptr %89, align 1, !tbaa !97 + %91 = zext i8 %90 to i32 + %92 = getelementptr inbounds nuw i8, ptr getelementptr inbounds nuw (i8, ptr @init_values, i64 1134), i64 %indvars.iv.i + %93 = load i8, ptr %92, align 1, !tbaa !97 + %94 = lshr i32 %91, 3 + %95 = add nsw i32 %94, -4 + %96 = and i32 %91, 7 + %97 = mul nuw nsw i32 %96, 18 + %98 = or disjoint i32 %97, 1 + %99 = mul nsw i32 %95, %84 + %100 = ashr i32 %99, 1 + %101 = add nsw i32 %98, %100 + %102 = tail call i32 @llvm.smax.i32(i32 %101, i32 1) + %103 = tail call i32 @llvm.umin.i32(i32 %102, i32 127) + %.tr.i = trunc nuw nsw i32 %103 to i16 + %104 = shl nuw nsw i16 %.tr.i, 3 + store i16 %104, ptr %88, align 2, !tbaa !58 + %105 = shl nuw nsw i16 %.tr.i, 7 + %106 = getelementptr inbounds nuw i8, ptr %88, i64 2 + store i16 %105, ptr %106, align 2, !tbaa !58 + %107 = lshr i8 %93, 2 + %108 = add nuw nsw i8 %107, 2 + %109 = getelementptr inbounds nuw i8, ptr %88, i64 4 + store i8 %108, ptr %109, align 2, !tbaa !97 + %110 = and i8 %93, 3 + %narrow.i = add nuw nsw i8 %110, 3 + %narrow.i = add nuw nsw i8 %narrow.i, %108 + %111 = getelementptr inbounds nuw i8, ptr %88, i64 5 + store i8 %narrow.i, ptr %111, align 1, !tbaa !97 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, 378 - br i1 %exitcond.not.i, label %cabac_reinit.exit, label %86, !llvm.loop !98 + br i1 %exitcond.not.i, label %cabac_reinit.exit, label %85, !llvm.loop !98 -cabac_reinit.exit: ; preds = %86, %46, %32, %24 - %.0 = phi i32 [ 0, %24 ], [ -1094995529, %32 ], [ -1094995529, %46 ], [ 0, %86 ] +cabac_reinit.exit: ; preds = %85, %46, %32, %24 + %.0 = phi i32 [ 0, %24 ], [ -1094995529, %32 ], [ -1094995529, %46 ], [ 0, %85 ] ret i32 %.0 } diff --git a/bench/ffmpeg/optimized/ituh263enc.ll b/bench/ffmpeg/optimized/ituh263enc.ll index 054f669589b..5892e53c987 100644 --- a/bench/ffmpeg/optimized/ituh263enc.ll +++ b/bench/ffmpeg/optimized/ituh263enc.ll @@ -6263,24 +6263,24 @@ define internal fastcc void @init_mv_penalty_and_fcode() unnamed_addr #7 { %1 = getelementptr inbounds nuw [16385 x i8], ptr @mv_penalty, i64 %indvars.iv28 %2 = trunc i64 %indvars.iv28 to i32 %3 = add i32 %2, -1 - %4 = trunc i64 %indvars.iv28 to i32 - %5 = add i32 %4, 13 - %6 = trunc nuw nsw i64 %indvars.iv28 to i32 + %4 = trunc i64 %indvars.iv28 to i8 + %5 = add i8 %4, 13 + %6 = trunc i64 %indvars.iv28 to i8 br label %9 7: ; preds = %8 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(8193) @umv_fcode_tab, i8 1, i64 8193, i1 false) ret void -8: ; preds = %35 +8: ; preds = %31 %indvars.iv.next29 = add nuw nsw i64 %indvars.iv28, 1 %exitcond31.not = icmp eq i64 %indvars.iv.next29, 8 br i1 %exitcond31.not, label %7, label %.preheader, !llvm.loop !157 -9: ; preds = %.preheader, %35 - %indvars.iv = phi i64 [ -8192, %.preheader ], [ %indvars.iv.next, %35 ] +9: ; preds = %.preheader, %31 + %indvars.iv = phi i64 [ -8192, %.preheader ], [ %indvars.iv.next, %31 ] %10 = icmp eq i64 %indvars.iv, 0 - br i1 %10, label %35, label %11 + br i1 %10, label %31, label %11 11: ; preds = %9 %12 = trunc nsw i64 %indvars.iv to i32 @@ -6296,38 +6296,31 @@ define internal fastcc void @init_mv_penalty_and_fcode() unnamed_addr #7 { %19 = getelementptr inbounds nuw [2 x i8], ptr @ff_mvtab, i64 %18 %20 = getelementptr inbounds nuw i8, ptr %19, i64 1 %21 = load i8, ptr %20, align 1, !tbaa !14 - %22 = zext i8 %21 to i32 - %23 = add nuw nsw i32 %6, %22 - br label %33 + %22 = add i8 %21, %6 + br label %31 24: ; preds = %11 %.not.i = icmp samesign ult i32 %15, 2097152 %spec.select.i.v = select i1 %.not.i, i32 5, i32 21 %spec.select.i = lshr i32 %15, %spec.select.i.v - %spec.select12.i = select i1 %.not.i, i32 0, i32 16 + %spec.select12.i = select i1 %.not.i, i8 0, i8 16 %.not11.i = icmp samesign ult i32 %spec.select.i, 256 %25 = lshr i32 %spec.select.i, 8 - %26 = or disjoint i32 %spec.select12.i, 8 + %26 = or disjoint i8 %spec.select12.i, 8 %.110.i = select i1 %.not11.i, i32 %spec.select.i, i32 %25 - %.1.i = select i1 %.not11.i, i32 %spec.select12.i, i32 %26 + %.1.i = select i1 %.not11.i, i8 %spec.select12.i, i8 %26 %27 = zext nneg i32 %.110.i to i64 %28 = getelementptr inbounds nuw i8, ptr @ff_log2_tab, i64 %27 %29 = load i8, ptr %28, align 1, !tbaa !14 - %30 = zext i8 %29 to i32 - %31 = add i32 %5, %.1.i - %32 = add i32 %31, %30 - br label %33 - -33: ; preds = %24, %17 - %.1 = phi i32 [ %23, %17 ], [ %32, %24 ] - %34 = trunc i32 %.1 to i8 - br label %35 - -35: ; preds = %9, %33 - %.021 = phi i8 [ %34, %33 ], [ 1, %9 ] - %36 = getelementptr i8, ptr %1, i64 %indvars.iv - %37 = getelementptr i8, ptr %36, i64 8192 - store i8 %.021, ptr %37, align 1, !tbaa !14 + %29 = add i8 %5, %.1.i + %31 = add i8 %29, %28 + br label %31 + +31: ; preds = %17, %23, %9 + %.021 = phi i8 [ 1, %9 ], [ %22, %17 ], [ %30, %23 ] + %32 = getelementptr i8, ptr %1, i64 %indvars.iv + %33 = getelementptr i8, ptr %32, i64 8192 + store i8 %.021, ptr %33, align 1, !tbaa !14 %indvars.iv.next = add nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 8193 br i1 %exitcond.not, label %8, label %9, !llvm.loop !158 diff --git a/bench/ffmpeg/optimized/mpeg12enc.ll b/bench/ffmpeg/optimized/mpeg12enc.ll index 463d7ac480c..36b60665685 100644 --- a/bench/ffmpeg/optimized/mpeg12enc.ll +++ b/bench/ffmpeg/optimized/mpeg12enc.ll @@ -222,13 +222,13 @@ define void @ff_mpeg1_init_uni_ac_vlc(ptr noundef readonly captures(none) %0, pt %invariant.gep = getelementptr inbounds nuw i8, ptr %3, i64 %indvars.iv35 br label %14 -14: ; preds = %.preheader, %39 - %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %39 ] +14: ; preds = %.preheader, %42 + %indvars.iv = phi i64 [ 0, %.preheader ], [ %indvars.iv.next, %42 ] %15 = getelementptr inbounds nuw i8, ptr %0, i64 %indvars.iv %16 = load i8, ptr %15, align 1, !tbaa !4 %17 = sext i8 %16 to i32 %18 = icmp sgt i32 %12, %17 - br i1 %18, label %32, label %19 + br i1 %18, label %34, label %19 19: ; preds = %14 %20 = getelementptr inbounds nuw i8, ptr %1, i64 %indvars.iv @@ -236,44 +236,46 @@ define void @ff_mpeg1_init_uni_ac_vlc(ptr noundef readonly captures(none) %0, pt %22 = zext i8 %21 to i32 %23 = add nsw i32 %12, %22 %24 = icmp slt i32 %23, 112 - br i1 %24, label %26, label %.thread31 + br i1 %24, label %27, label %.thread31 .thread31: ; preds = %19 %25 = load i16, ptr %5, align 2, !tbaa !7 - br label %34 - -26: ; preds = %19 - %27 = sext i32 %23 to i64 - %28 = getelementptr [2 x i16], ptr %2, i64 %27 - %29 = getelementptr i8, ptr %28, i64 -2 - %30 = load i16, ptr %29, align 2, !tbaa !7 - %31 = add i16 %30, 1 - br label %39 - -32: ; preds = %14 - %33 = load i16, ptr %5, align 2, !tbaa !7 - br i1 %13, label %34, label %37 - -34: ; preds = %.thread31, %32 - %35 = phi i16 [ %25, %.thread31 ], [ %33, %32 ] - %36 = add i16 %35, 14 - br label %39 - -37: ; preds = %32 - %38 = add i16 %33, 22 - br label %39 - -39: ; preds = %34, %37, %26 - %.026 = phi i16 [ %31, %26 ], [ %36, %34 ], [ %38, %37 ] - %40 = trunc i16 %.026 to i8 - %41 = shl nuw nsw i64 %indvars.iv, 7 - %gep = getelementptr inbounds nuw i8, ptr %invariant.gep, i64 %41 - store i8 %40, ptr %gep, align 1, !tbaa !4 + %26 = trunc i16 %25 to i8 + br label %37 + +27:; preds = %19 + %28 = sext i32 %23 to i64 + %29 = getelementptr [2 x i16], ptr %2, i64 %28 + %30 = getelementptr i8, ptr %29, i64 -2 + %31 = load i16, ptr %30, align 2, !tbaa !7 + %32 = trunc i16 %31 to i8 + %33 = add i8 %32, 1 + br label %42 + +34:; preds = %14 + %35 = load i16, ptr %5, align 2, !tbaa !7 + %36 = trunc i16 %35 to i8 + br i1 %13, label %37, label %40 + +37:; preds = %.thread31, %34 + %38 = phi i8 [ %26, %.thread31 ], [ %36, %34 ] + %39 = add i8 %38, 14 + br label %42 + +40: ; preds = %34 + %41 = add i8 %36, 22 + br label %42 + +42:; preds = %37, %40, %27 + %.026 = phi i8 [ %33, %27 ], [ %39, %37 ], [ %41, %40 ] + %43 = shl nuw nsw i64 %indvars.iv, 7 + %gep = getelementptr inbounds nuw i8, ptr %invariant.gep, i64 %43 + store i8 %.026, ptr %gep, align 1, !tbaa !4 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 64 br i1 %exitcond.not, label %.loopexit, label %14, !llvm.loop !9 -.loopexit: ; preds = %39, %6 +.loopexit: ; preds = %42, %6 %indvars.iv.next36 = add nuw nsw i64 %indvars.iv35, 1 %exitcond38.not = icmp eq i64 %indvars.iv.next36, 128 br i1 %exitcond38.not, label %42, label %6, !llvm.loop !11 diff --git a/bench/foundations-rs/optimized/f1iknzskasm8x3xyu95gzvwuf.ll b/bench/foundations-rs/optimized/f1iknzskasm8x3xyu95gzvwuf.ll index 1113931dd62..ce619ce3311 100644 --- a/bench/foundations-rs/optimized/f1iknzskasm8x3xyu95gzvwuf.ll +++ b/bench/foundations-rs/optimized/f1iknzskasm8x3xyu95gzvwuf.ll @@ -7258,7 +7258,7 @@ define hidden void @_ZN4http8response7Builder8and_then17ha8eb36b96dbbad3dE(ptr d to label %"_ZN90_$LT$http..header..value..HeaderValue$u20$as$u20$core..convert..TryFrom$LT$$RF$str$GT$$GT$8try_from17h6805b39b6f9aea8eE.exit.i" unwind label %189, !noalias !786 .body.thread.i: ; preds = %189, %.thread59.i.i, %76, %71, %.body.thread52.i, %22 - %.pn.i = phi { ptr, i32 } [ %23, %22 ], [ %lpad.thr_comm.split-lp.i, %189 ], [ %lpad.thr_comm.i, %.body.thread52.i ], [ %.pn63.i.i, %.thread59.i.i ], [ %72, %71 ], [ %77, %76 ] + %.pn.i = phi { ptr, i32 } [ %23, %22 ], [ %lpad.thr_comm.split-lp.i, %189 ], [ %lpad.thr_comm.i, %.body.thread52.i ], [ %.pn63.i.i, %.thread59.i.i ], [ %77, %76 ], [ %72, %71 ] invoke void @"_ZN4core3ptr42drop_in_place$LT$http..response..Parts$GT$17hf7b5d50c9d568e5cE"(ptr noalias noundef nonnull align 8 dereferenceable(112) %15) #27 to label %192 unwind label %190, !noalias !793 @@ -7301,6 +7301,11 @@ define hidden void @_ZN4http8response7Builder8and_then17ha8eb36b96dbbad3dE(ptr d %28 = invoke noundef zeroext i1 @"_ZN4http6header3map18HeaderMap$LT$T$GT$15try_reserve_one17hf8d212768bf1b46aE"(ptr noalias noundef nonnull align 8 dereferenceable(112) %15) to label %29 unwind label %.loopexit.split-lp.i.i, !noalias !799 +.body.i.i: ; preds = %172 + %lpad.thr_comm.split-lp71.i.i = landingpad { ptr, i32 } + cleanup + br label %.thread59.i.i + 29: ; preds = %27 br i1 %28, label %41, label %30 @@ -7632,7 +7637,7 @@ split.i.i: ; preds = %112, %"_ZN71_$LT$ht 172: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17hffe02bad38e8c0d1E.exit.i.i.i" invoke void @_ZN4core9panicking18panic_bounds_check17h2d3ab0b83311a572E(i64 noundef %129, i64 noundef %147, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.c0b4d8e696f2119813f5afb453ac3e63.42) #26 - to label %.noexc44.i.i unwind label %.body.thread.i.i, !noalias !801 + to label %.noexc44.i.i unwind label %.body.i.i, !noalias !801 .noexc44.i.i: ; preds = %172 unreachable @@ -7653,11 +7658,6 @@ split.i.i: ; preds = %112, %"_ZN71_$LT$ht invoke void @"_ZN4core3ptr51drop_in_place$LT$http..header..name..HeaderName$GT$17hf225be49148e758aE"(ptr noalias noundef nonnull align 8 dereferenceable(32) %11) to label %"_ZN4http6header3map18HeaderMap$LT$T$GT$11try_append217haec3da05dc6bcc0dE.exit.thread57.i" unwind label %.body.thread52.i, !noalias !793 -.body.thread.i.i: ; preds = %172 - %lpad.thr_comm.split-lp73.i.i = landingpad { ptr, i32 } - cleanup - br label %.thread59.i.i - 179: ; preds = %41 %180 = landingpad { ptr, i32 } cleanup @@ -7688,8 +7688,8 @@ split.i.i: ; preds = %112, %"_ZN71_$LT$ht call void @_ZN4core9panicking16panic_in_cleanup17hccd47ddd364deb23E() #28, !noalias !793 unreachable -.thread59.i.i: ; preds = %181, %179, %.body.thread.i.i, %159, %140 - %.pn63.i.i = phi { ptr, i32 } [ %lpad.thr_comm.split-lp73.i.i, %.body.thread.i.i ], [ %lpad.phi.i.i, %181 ], [ %180, %179 ], [ %160, %159 ], [ %141, %140 ] +.thread59.i.i: ; preds = %181, %179, %159, %140, %.body.i.i + %.pn63.i.i = phi { ptr, i32 } [ %lpad.thr_comm.split-lp71.i.i, %.body.i.i ], [ %lpad.phi.i.i, %181 ], [ %180, %179 ], [ %160, %159 ], [ %141, %140 ] invoke void @"_ZN4core3ptr51drop_in_place$LT$http..header..name..HeaderName$GT$17hf225be49148e758aE"(ptr noalias noundef nonnull align 8 dereferenceable(32) %11) #27 to label %.body.thread.i unwind label %182, !noalias !793 diff --git a/bench/freetype/optimized/bdf.ll b/bench/freetype/optimized/bdf.ll index 01df684e7c0..d91926d8e3b 100644 --- a/bench/freetype/optimized/bdf.ll +++ b/bench/freetype/optimized/bdf.ll @@ -999,10 +999,10 @@ bdf_interpret_style.exit: ; preds = %317 %372 = trunc nsw i64 %369 to i32 %.lhs.trunc = add nsw i32 %372, 5 %373 = sdiv i32 %.lhs.trunc, 10 - %374 = icmp slt i64 %369, -14 - %375 = sub nsw i32 0, %373 - %376 = select i1 %374, i32 %375, i32 %373 - %377 = trunc nuw nsw i32 %376 to i16 + %374 = trunc nsw i32 %373 to i16 + %375 = icmp slt i64 %369, -14 + %376 = sub nsw i16 0, %374 + %377 = select i1 %375, i16 %376, i16 %374 br label %385 378: ; preds = %361 diff --git a/bench/git/optimized/log.ll b/bench/git/optimized/log.ll index 9d70f15817b..ca9c2fab22d 100644 --- a/bench/git/optimized/log.ll +++ b/bench/git/optimized/log.ll @@ -7603,47 +7603,44 @@ define internal fastcc void @add_header(ptr noundef %0, ptr noundef %1) unnamed_ %.not = icmp eq i64 %indvars.iv.next, 0 br i1 %.not, label %.critedge, label %.lr.ph, !llvm.loop !325 -.critedge.loopexit.split.loop.exit24: ; preds = %.lr.ph - %11 = trunc nsw i64 %indvars.iv to i32 - br label %.critedge - -.critedge: ; preds = %10, %.critedge.loopexit.split.loop.exit24, %2 - %.0.lcssa = phi i32 [ 0, %2 ], [ %11, %.critedge.loopexit.split.loop.exit24 ], [ 0, %10 ] - %12 = tail call i32 @strncasecmp(ptr noundef nonnull %1, ptr noundef nonnull @.str.201, i64 noundef 4) #24 - %.not17 = icmp eq i32 %12, 0 - br i1 %.not17, label %13, label %18 - -13: ; preds = %.critedge - %14 = getelementptr inbounds nuw i8, ptr %0, i64 248 - %15 = getelementptr inbounds nuw i8, ptr %1, i64 4 - %16 = tail call ptr @string_list_append(ptr noundef nonnull %14, ptr noundef nonnull %15) #23 - %17 = add nsw i32 %.0.lcssa, -4 - br label %28 - -18: ; preds = %.critedge - %19 = tail call i32 @strncasecmp(ptr noundef nonnull %1, ptr noundef nonnull @.str.202, i64 noundef 4) #24 - %.not18 = icmp eq i32 %19, 0 - br i1 %.not18, label %20, label %25 - -20: ; preds = %18 - %21 = getelementptr inbounds nuw i8, ptr %0, i64 288 - %22 = getelementptr inbounds nuw i8, ptr %1, i64 4 - %23 = tail call ptr @string_list_append(ptr noundef nonnull %21, ptr noundef nonnull %22) #23 - %24 = add nsw i32 %.0.lcssa, -4 - br label %28 - -25: ; preds = %18 - %26 = getelementptr inbounds nuw i8, ptr %0, i64 208 - %27 = tail call ptr @string_list_append(ptr noundef nonnull %26, ptr noundef nonnull %1) #23 - br label %28 - -28: ; preds = %20, %25, %13 - %.016 = phi ptr [ %27, %25 ], [ %23, %20 ], [ %16, %13 ] - %.1 = phi i32 [ %.0.lcssa, %25 ], [ %24, %20 ], [ %17, %13 ] - %29 = load ptr, ptr %.016, align 8, !tbaa !191 - %30 = sext i32 %.1 to i64 - %31 = getelementptr inbounds i8, ptr %29, i64 %30 - store i8 0, ptr %31, align 1, !tbaa !77 +.critedge.loopexit.split.loop.exit24: ; preds = %.lr.ph, %10, %2 + %.0.lcssa = phi i64 [ 0, %2 ], [ 0, %10 ], [ %indvars.iv, %.lr.ph ] + %11 = tail call i32 @strncasecmp(ptr noundef nonnull %1, ptr noundef nonnull @.str.201, i64 noundef 4) #24 + %.not17 = icmp eq i32 %11, 0 + br i1 %.not17, label %12, label %17 + +12:; preds = %.critedge.loopexit.split.loop.exit24 + %13 = getelementptr inbounds nuw i8, ptr %0, i64 248 + %14 = getelementptr inbounds nuw i8, ptr %1, i64 4 + %15 = tail call ptr @string_list_append(ptr noundef nonnull %13, ptr noundef nonnull %14) #23 + %16 = add i64 %.0.lcssa, -4 + br label %27 + +17:; preds = %.critedge.loopexit.split.loop.exit24 + %18 = tail call i32 @strncasecmp(ptr noundef nonnull %1, ptr noundef nonnull @.str.202, i64 noundef 4) #24 + %.not18 = icmp eq i32 %18, 0 + br i1 %.not18, label %19, label %24 + +19:; preds = %17 + %20 = getelementptr inbounds nuw i8, ptr %0, i64 288 + %21 = getelementptr inbounds nuw i8, ptr %1, i64 4 + %22 = tail call ptr @string_list_append(ptr noundef nonnull %20, ptr noundef nonnull %21) #23 + %23 = add i64 %.0.lcssa, -4 + br label %27 + +24:; preds = %17 + %25 = getelementptr inbounds nuw i8, ptr %0, i64 208 + %26 = tail call ptr @string_list_append(ptr noundef nonnull %25, ptr noundef nonnull %1) #23 + br label %27 + +27: ; preds = %19, %24, %12 + %.016 = phi ptr [ %26, %24 ], [ %22, %19 ], [ %15, %12 ] + %.1 = phi i64 [ %.0.lcssa, %24 ], [ %23, %19 ], [ %16, %12 ] + %28 = load ptr, ptr %.016, align 8, !tbaa !191 + %sext24 = shl i64 %.1, 32 + %29 = ashr exact i64 %sext24, 32 + %30 = getelementptr inbounds i8, ptr %28, i64 %29 + store i8 0, ptr %30, align 1, !tbaa !77 ret void } diff --git a/bench/git/optimized/setup.ll b/bench/git/optimized/setup.ll index 590174ac246..02297136354 100644 --- a/bench/git/optimized/setup.ll +++ b/bench/git/optimized/setup.ll @@ -262,14 +262,14 @@ define dso_local ptr @prefix_path_gently(ptr noundef %0, i32 noundef %1, ptr nou %18 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %8) #24 %.val.i = load i8, ptr %8, align 1, !tbaa !4 %19 = icmp eq i8 %.val.i, 47 - %20 = zext i1 %19 to i32 + %20 = zext i1 %19 to i64 %.not50.i = icmp ugt i64 %17, %18 - br i1 %.not50.i, label %39, label %21 + br i1 %.not50.i, label %37, label %21 21: ; preds = %16 %22 = tail call i32 @git_fspathncmp(ptr noundef nonnull %8, ptr noundef nonnull %15, i64 noundef %17) #25 %.not51.i = icmp eq i32 %22, 0 - br i1 %.not51.i, label %23, label %39 + br i1 %.not51.i, label %23, label %37 23: ; preds = %21 %24 = getelementptr inbounds nuw i8, ptr %8, i64 %17 @@ -297,24 +297,21 @@ define dso_local ptr @prefix_path_gently(ptr noundef %0, i32 noundef %1, ptr nou tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 1 %8, ptr nonnull align 1 %24, i64 %36, i1 false) br label %abspath_part_inside_repo.exit.thread -37: ; preds = %30 - %38 = trunc i64 %17 to i32 - br label %39 - -39: ; preds = %37, %21, %16 - %.044.i = phi i32 [ %20, %21 ], [ %38, %37 ], [ %20, %16 ] - %40 = sext i32 %.044.i to i64 - %41 = getelementptr inbounds i8, ptr %8, i64 %40 - %42 = load i8, ptr %41, align 1, !tbaa !4 - %.not5256.i = icmp eq i8 %42, 0 +37: ; preds = %30, %21, %16 + %.044.i = phi i64 [ %20, %21 ], [ %20, %16 ], [ %17, %30 ] + %sext.i = shl i64 %.044.i, 32 + %38 = ashr exact i64 %sext.i, 32 + %39 = getelementptr inbounds i8, ptr %8, i64 %38 + %40 = load i8, ptr %39, align 1, !tbaa !4 + %.not5256.i = icmp eq i8 %40, 0 br i1 %.not5256.i, label %._crit_edge.i, label %.lr.ph.i -.lr.ph.i: ; preds = %39 +.lr.ph.i: ; preds = %37 %43 = getelementptr inbounds nuw i8, ptr %5, i64 16 br label %.backedge .backedge: ; preds = %.backedge.backedge, %.lr.ph.i - %.04557.i = phi ptr [ %41, %.lr.ph.i ], [ %44, %.backedge.backedge ] + %.04557.i = phi ptr [ %39, %.lr.ph.i ], [ %44, %.backedge.backedge ] %44 = getelementptr inbounds nuw i8, ptr %.04557.i, i64 1 %45 = load i8, ptr %44, align 1, !tbaa !4 switch i8 %45, label %.backedge.backedge [ @@ -347,7 +344,7 @@ define dso_local ptr @prefix_path_gently(ptr noundef %0, i32 noundef %1, ptr nou store i8 47, ptr %44, align 1, !tbaa !4 br label %.backedge.backedge -._crit_edge.i: ; preds = %.backedge, %39 +._crit_edge.i: ; preds = %.backedge, %37 %57 = call ptr @strbuf_realpath(ptr noundef nonnull %5, ptr noundef nonnull %8, i32 noundef 1) #25 %58 = getelementptr inbounds nuw i8, ptr %5, i64 16 %59 = load ptr, ptr %58, align 8, !tbaa !14 @@ -394,7 +391,7 @@ abspath_part_inside_repo.exit.thread: ; preds = %51, %62, %27, %35 br label %72 72: ; preds = %abspath_part_inside_repo.exit.thread, %69, %71, %64, %12 - %.023 = phi ptr [ null, %12 ], [ null, %64 ], [ null, %71 ], [ %67, %69 ], [ %8, %abspath_part_inside_repo.exit.thread ] + %.023 = phi ptr [ null, %12 ], [ null, %62 ], [ null, %69 ], [ %67, %67 ], [ %8, %abspath_part_inside_repo.exit.thread ] ret ptr %.023 } diff --git a/bench/glslang/optimized/linkValidate.ll b/bench/glslang/optimized/linkValidate.ll index 0bca6195fa5..8ccf73ed6d0 100644 --- a/bench/glslang/optimized/linkValidate.ll +++ b/bench/glslang/optimized/linkValidate.ll @@ -15184,20 +15184,20 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2E br label %.lr.ph824.lr.ph .lr.ph824.lr.ph: ; preds = %.lr.ph824.lr.ph.lr.ph, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev.exit518 - %749 = phi i64 [ 0, %.lr.ph824.lr.ph.lr.ph ], [ %967, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev.exit518 ] - %.2367.ph.ph835 = phi i1 [ %.0365, %.lr.ph824.lr.ph.lr.ph ], [ %.3368, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev.exit518 ] - %.0374.ph.ph834 = phi i32 [ 0, %.lr.ph824.lr.ph.lr.ph ], [ %966, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev.exit518 ] - %.0375.ph.ph833 = phi i32 [ 0, %.lr.ph824.lr.ph.lr.ph ], [ %965, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev.exit518 ] + %749 = phi i64 [ 0, %.lr.ph829.lr.ph.lr.ph ], [ %967, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev.exit518 ] + %.2367.ph.ph835 = phi i1 [ %.0365, %.lr.ph829.lr.ph.lr.ph ], [ %.3368, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev.exit518 ] + %.0374.ph.ph834 = phi i32 [ 0, %.lr.ph829.lr.ph.lr.ph ], [ %966, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev.exit518 ] + %.0375.ph.ph833 = phi i32 [ 0, %.lr.ph829.lr.ph.lr.ph ], [ %965, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev.exit518 ] br label %.lr.ph824 .lr.ph824: ; preds = %.lr.ph824.lr.ph, %.outer - %750 = phi i64 [ %749, %.lr.ph824.lr.ph ], [ %784, %.outer ] - %.0374.ph830 = phi i32 [ %.0374.ph.ph834, %.lr.ph824.lr.ph ], [ %.0374823, %.outer ] - %.0375.ph829 = phi i32 [ %.0375.ph.ph833, %.lr.ph824.lr.ph ], [ %783, %.outer ] + %750 = phi i64 [ %749, %.lr.ph829.lr.ph ], [ %784, %.outer ] + %.0374.ph830 = phi i32 [ %.0374.ph.ph834, %.lr.ph829.lr.ph ], [ %.0374823, %.outer ] + %.0375.ph829 = phi i32 [ %.0375.ph.ph833, %.lr.ph829.lr.ph ], [ %783, %.outer ] br label %751 751: ; preds = %.lr.ph824, %815 - %.0374823 = phi i32 [ %.0374.ph830, %.lr.ph824 ], [ %816, %815 ] + %.0374823 = phi i32 [ %.0374.ph830, %.lr.ph829 ], [ %816, %815 ] %752 = zext i32 %.0374823 to i64 %753 = load ptr, ptr %3, align 8 %754 = getelementptr inbounds nuw i8, ptr %753, i64 240 @@ -16450,12 +16450,13 @@ _ZStneIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEbRKNSt7__cxx1112basic_st br label %1621 1602: ; preds = %1589, %1581 - %spec.select432 = select i1 %.5, i8 1, i8 %1452 - %1603 = select i1 %.5, i1 true, i1 %1453 - %or.cond7 = select i1 %1603, i1 true, i1 %.1366 + br i1 %.5, label %.thread799, label %1603 + +1603:; preds = %1602 + %or.cond7 = select i1 %1453, i1 true, i1 %.1366 br i1 %or.cond7, label %1620, label %1604 -1604: ; preds = %1602 +1604: ; preds = %1603 %1605 = getelementptr inbounds nuw i8, ptr %2, i64 248 %1606 = load ptr, ptr %1605, align 8 %1607 = icmp eq ptr %1606, null @@ -16482,11 +16483,11 @@ _ZStneIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEbRKNSt7__cxx1112basic_st call void @_ZN7glslang13TInfoSinkBase6appendEPKc(ptr noundef nonnull align 8 dereferenceable(48) %1, ptr noundef nonnull @.str.3) #18 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev.exit572 -1620: ; preds = %1604, %1611, %1602 - br i1 %1603, label %1621, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev.exit572 +1620: ; preds = %1604, %1611, %1603 + br i1 %1453, label %1621, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev.exit572 -1621: ; preds = %.thread792, %1620 - %spec.select432791794 = phi i8 [ 1, %.thread792 ], [ %spec.select432, %1620 ] +1621: ; preds = %.thread793, %1602, %1620 + %spec.select432791794 = phi i8 [ %1452, %1620 ], [ 1, %.thread793 ], [ 1, %1602 ] %1622 = load ptr, ptr %2, align 8 %1623 = getelementptr inbounds nuw i8, ptr %1622, i64 240 %1624 = load ptr, ptr %1623, align 8 diff --git a/bench/graphviz/optimized/shapes.ll b/bench/graphviz/optimized/shapes.ll index b7e4496db21..cc64c0168c6 100644 --- a/bench/graphviz/optimized/shapes.ll +++ b/bench/graphviz/optimized/shapes.ll @@ -4955,8 +4955,8 @@ closestSide.exit: ; preds = %closestSide.exit.lo ; Function Attrs: nounwind uwtable define internal fastcc range(i32 0, 2) i32 @compassPort(ptr noundef %0, ptr noundef %1, ptr noundef writeonly captures(none) %2, ptr noundef readonly captures(address_is_null) %3, i8 noundef zeroext %4, ptr noundef %5) unnamed_addr #0 { - %.not = icmp eq ptr %1, null - br i1 %.not, label %12, label %7 + %.not = icmp ne ptr %1, null + br i1 %.not, label %7, label %12 7: ; preds = %6 %.sroa.055.0.copyload = load double, ptr %1, align 8, !tbaa !4 @@ -4996,7 +4996,6 @@ define internal fastcc range(i32 0, 2) i32 @compassPort(ptr noundef %0, ptr noun br label %28 28: ; preds = %12, %7 - %.0130 = phi i8 [ 1, %7 ], [ 0, %12 ] %.sroa.050.0 = phi double [ %9, %7 ], [ 0.000000e+00, %12 ] %.sroa.26.0 = phi double [ %11, %7 ], [ 0.000000e+00, %12 ] %.sroa.055.0 = phi double [ %.sroa.055.0.copyload, %7 ], [ %., %12 ] @@ -5190,7 +5189,7 @@ define internal fastcc range(i32 0, 2) i32 @compassPort(ptr noundef %0, ptr noun br label %106 106: ; preds = %80, %70, %44, %35, %33, %104, %105, %42, %68, %60, %52, %78, %102, %94, %87, %31, %28 - %.1 = phi i8 [ %.0130, %105 ], [ 1, %42 ], [ 1, %52 ], [ 1, %60 ], [ 1, %68 ], [ 1, %78 ], [ 1, %87 ], [ 1, %94 ], [ 1, %102 ], [ %.0130, %104 ], [ %.0130, %33 ], [ %.0130, %31 ], [ %.0130, %28 ], [ %.0130, %35 ], [ %.0130, %44 ], [ %.0130, %70 ], [ %.0130, %80 ] + %.1 = phi i1 [ %.not, %105 ], [ true, %42 ], [ true, %52 ], [ true, %60 ], [ true, %68 ], [ true, %78 ], [ true, %87 ], [ true, %94 ], [ true, %102 ], [ %.not, %104 ], [ %.not, %33 ], [ %.not, %31 ], [ %.not, %28 ], [ %.not, %35 ], [ %.not, %44 ], [ %.not, %70 ], [ %.not, %80 ] %.0129 = phi i8 [ 1, %105 ], [ 0, %42 ], [ 0, %52 ], [ 0, %60 ], [ 0, %68 ], [ 0, %78 ], [ 0, %87 ], [ 0, %94 ], [ 0, %102 ], [ 1, %104 ], [ 1, %33 ], [ 1, %31 ], [ 1, %28 ], [ 1, %35 ], [ 1, %44 ], [ 1, %70 ], [ 1, %80 ] %.0128 = phi i8 [ 0, %105 ], [ %43, %42 ], [ %53, %52 ], [ %61, %60 ], [ %69, %68 ], [ %79, %78 ], [ %88, %87 ], [ %95, %94 ], [ %103, %102 ], [ %4, %104 ], [ 0, %33 ], [ 0, %31 ], [ 0, %28 ], [ 0, %35 ], [ 0, %44 ], [ 0, %70 ], [ 0, %80 ] %.0127 = phi i1 [ false, %105 ], [ false, %42 ], [ false, %52 ], [ false, %60 ], [ false, %68 ], [ false, %78 ], [ false, %87 ], [ false, %94 ], [ false, %102 ], [ true, %104 ], [ false, %33 ], [ false, %31 ], [ false, %28 ], [ false, %35 ], [ false, %44 ], [ false, %70 ], [ false, %80 ] @@ -5359,12 +5358,13 @@ invflip_angle.exit: ; preds = %invflip_side.exit, %178 = getelementptr inbounds nuw i8, ptr %2, i64 33 store i8 %.0126, ptr %178, align 1, !tbaa !138 %179 = getelementptr inbounds nuw i8, ptr %2, i64 32 - store i8 %.1, ptr %179, align 8, !tbaa !139 - %180 = getelementptr inbounds nuw i8, ptr %2, i64 34 - store i8 %.0129, ptr %180, align 2, !tbaa !140 - %181 = getelementptr inbounds nuw i8, ptr %2, i64 35 - %182 = zext i1 %.0127 to i8 - store i8 %182, ptr %181, align 1, !tbaa !141 + %180 = zext i1 %.1 to i8 + store i8 %180, ptr %179, align 8, !tbaa !139 + %181 = getelementptr inbounds nuw i8, ptr %2, i64 34 + store i8 %.0129, ptr %181, align 2, !tbaa !140 + %182 = getelementptr inbounds nuw i8, ptr %2, i64 35 + %183 = zext i1 %.0127 to i8 + store i8 %183, ptr %182, align 1, !tbaa !141 ret i32 %.0124 } diff --git a/bench/hdf5/optimized/H5B2int.ll b/bench/hdf5/optimized/H5B2int.ll index 71ed2e018fc..ba9b3511036 100644 --- a/bench/hdf5/optimized/H5B2int.ll +++ b/bench/hdf5/optimized/H5B2int.ll @@ -3485,9 +3485,9 @@ define i32 @H5B2__iterate_node(ptr noundef %0, i16 noundef zeroext %1, ptr nound br i1 %129, label %.thread127, label %._crit_edge, !llvm.loop !82 ._crit_edge: ; preds = %125, %111, %.thread184, %.thread, %88 - %.083.lcssa = phi i64 [ 0, %88 ], [ %indvars.iv.next165179, %.thread ], [ %indvars.iv.next185, %.thread184 ], [ %indvars.iv.next165, %111 ], [ %indvars.iv.next, %125 ] - %.5.lcssa = phi i32 [ 0, %88 ], [ %.7.us.ph, %.thread ], [ %120, %.thread184 ], [ %102, %111 ], [ %120, %125 ] - %.not.lcssa = phi i1 [ true, %88 ], [ false, %.thread ], [ false, %.thread184 ], [ %.not.us, %111 ], [ %.not, %125 ] + %.083.lcssa = phi i64 [ 0, %88 ], [ %indvars.iv.next165179, %.thread ], [ %indvars.iv.next185, %.thread188 ], [ %indvars.iv.next165, %111 ], [ %indvars.iv.next, %125 ] + %.5.lcssa = phi i32 [ 0, %88 ], [ %.7.us.ph, %.thread ], [ %120, %.thread188 ], [ %102, %111 ], [ %120, %125 ] + %.not.lcssa = phi i1 [ true, %88 ], [ false, %.thread ], [ false, %.thread188 ], [ %.not.us, %111 ], [ %.not, %125 ] %or.cond = and i1 %14, %.not.lcssa br i1 %or.cond, label %130, label %140 @@ -3503,13 +3503,14 @@ define i32 @H5B2__iterate_node(ptr noundef %0, i16 noundef zeroext %1, ptr nound %137 = load i64, ptr @H5E_BTREE_g, align 8, !tbaa !17 %138 = load i64, ptr @H5E_CANTLIST_g, align 8, !tbaa !17 %139 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5B2__iterate_node, i32 noundef 1686, i64 noundef %137, i64 noundef %138, ptr noundef nonnull @.str.22) #4 - br label %140 + br i1 %90, label %141, label %.thread134 -140: ; preds = %._crit_edge, %136, %130 - %.282 = phi i32 [ %134, %136 ], [ %134, %130 ], [ %.5.lcssa, %._crit_edge ] +140: ; preds = %._crit_edge, %130 + %.282 = phi i32 [ %134, %130 ], [ %.5.lcssa, %._crit_edge ] br i1 %90, label %141, label %.thread134 -141: ; preds = %140 +141: ; preds = %136, %140 + %.282145 = phi i32 [ %134, %136 ], [ %.282, %140 ] %142 = tail call i32 @H5AC_unpin_entry(ptr noundef nonnull %.295) #4 %143 = icmp slt i32 %142, 0 br i1 %143, label %144, label %.thread134 @@ -3520,8 +3521,8 @@ define i32 @H5B2__iterate_node(ptr noundef %0, i16 noundef zeroext %1, ptr nound %147 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5B2__iterate_node, i32 noundef 1691, i64 noundef %145, i64 noundef %146, ptr noundef nonnull @.str.24) #4 br label %.thread134 -.thread134: ; preds = %84, %62, %144, %141, %140 - %.8 = phi i32 [ -1, %144 ], [ %.282, %141 ], [ %.282, %140 ], [ -1, %84 ], [ -1, %62 ] +.thread134: ; preds = %84, %62, %136, %144, %141, %140 + %.8 = phi i32 [ -1, %144 ], [ %.282145, %141 ], [ %.282, %140 ], [ %134, %136 ], [ -1, %84 ], [ -1, %62 ] %.not113 = icmp eq ptr %.288, null br i1 %.not113, label %154, label %148 diff --git a/bench/hdf5/optimized/H5Fsuper.ll b/bench/hdf5/optimized/H5Fsuper.ll index 58eadaeecb3..ba634051939 100644 --- a/bench/hdf5/optimized/H5Fsuper.ll +++ b/bench/hdf5/optimized/H5Fsuper.ll @@ -1743,7 +1743,6 @@ define range(i32 -1, 1) i32 @H5F__super_ext_write_msg(ptr noundef %0, i32 nounde br label %80 H5F__super_ext_open.exit.thread: ; preds = %21, %28, %40 - %.129 = phi i8 [ 1, %40 ], [ 0, %28 ], [ 0, %21 ] %47 = call i32 @H5O_msg_exists(ptr noundef nonnull %7, i32 noundef %1) #6 %48 = icmp slt i32 %47, 0 br i1 %48, label %49, label %53 @@ -1802,7 +1801,7 @@ H5F__super_ext_open.exit.thread: ; preds = %21, %28, %40 80: ; preds = %59, %72, %76, %68, %63, %55, %49, %43, %33 %.030 = phi i1 [ false, %33 ], [ true, %49 ], [ true, %55 ], [ true, %63 ], [ true, %59 ], [ true, %76 ], [ true, %72 ], [ true, %68 ], [ false, %43 ] - %.028 = phi i8 [ 0, %33 ], [ %.129, %49 ], [ %.129, %55 ], [ %.129, %63 ], [ %.129, %59 ], [ %.129, %76 ], [ %.129, %72 ], [ %.129, %68 ], [ 0, %43 ] + %.028 = phi i1 [ false, %33 ], [ %.not, %49 ], [ %.not, %55 ], [ %.not, %63 ], [ %.not, %59 ], [ %.not, %76 ], [ %.not, %72 ], [ %.not, %68 ], [ false, %43 ] %.1 = phi i32 [ -1, %33 ], [ -1, %49 ], [ -1, %55 ], [ -1, %63 ], [ 0, %59 ], [ -1, %76 ], [ 0, %72 ], [ -1, %68 ], [ -1, %43 ] %81 = load i32, ptr %6, align 4, !tbaa !17 %.not36 = icmp eq i32 %81, 0 @@ -1813,14 +1812,13 @@ H5F__super_ext_open.exit.thread: ; preds = %21, %28, %40 br label %83 83: ; preds = %82, %80 - %84 = trunc nuw i8 %.028 to i1 - br i1 %.030, label %85, label %._crit_edge + br i1 %.030, label %84, label %._crit_edge ._crit_edge: ; preds = %83 - br i1 %84, label %93, label %103 + br i1 %.028, label %93, label %103 85: ; preds = %83 - %86 = call i32 @H5F__super_ext_close(ptr noundef nonnull %0, ptr noundef nonnull %7, i1 noundef zeroext %84) + %86 = call i32 @H5F__super_ext_close(ptr noundef nonnull %0, ptr noundef nonnull %7, i1 noundef zeroext %.028) %87 = icmp slt i32 %86, 0 br i1 %87, label %88, label %92 @@ -1828,13 +1826,13 @@ H5F__super_ext_open.exit.thread: ; preds = %21, %28, %40 %89 = load i64, ptr @H5E_FILE_g, align 8, !tbaa !16 %90 = load i64, ptr @H5E_CANTRELEASE_g, align 8, !tbaa !16 %91 = call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str.1, ptr noundef nonnull @__func__.H5F__super_ext_write_msg, i32 noundef 1720, i64 noundef %89, i64 noundef %90, ptr noundef nonnull @.str.58) #6 - br i1 %84, label %93, label %103 + br i1 %.028, label %93, label %103 92: ; preds = %85 - br i1 %84, label %93, label %103 + br i1 %.028, label %93, label %103 93: ; preds = %88, %._crit_edge, %92 - %.241 = phi i32 [ %.1, %._crit_edge ], [ %.1, %92 ], [ -1, %88 ] + %.241 = phi i32 [ %.1, %._crit_edge ], [ %.1, %91 ], [ -1, %87 ] %94 = load ptr, ptr %15, align 8, !tbaa !25 %95 = getelementptr inbounds nuw i8, ptr %94, i64 8 %96 = load ptr, ptr %95, align 8, !tbaa !102 @@ -1849,7 +1847,7 @@ H5F__super_ext_open.exit.thread: ; preds = %21, %28, %40 br label %103 103: ; preds = %88, %._crit_edge, %92, %93, %99, %5 - %.0 = phi i32 [ -1, %99 ], [ %.241, %93 ], [ %.1, %92 ], [ 0, %5 ], [ %.1, %._crit_edge ], [ -1, %88 ] + %.0 = phi i32 [ -1, %98 ], [ %.241, %92 ], [ %.1, %91 ], [ 0, %5 ], [ %.1, %._crit_edge ], [ -1, %87 ] call void @llvm.lifetime.end.p0(ptr nonnull %7) call void @llvm.lifetime.end.p0(ptr nonnull %6) ret i32 %.0 diff --git a/bench/hdf5/optimized/H5Groot.ll b/bench/hdf5/optimized/H5Groot.ll index 16fb2d2049f..784a5d084c2 100644 --- a/bench/hdf5/optimized/H5Groot.ll +++ b/bench/hdf5/optimized/H5Groot.ll @@ -474,7 +474,12 @@ define range(i32 -1, 1) i32 @H5G_mkroot(ptr noundef %0, i1 noundef zeroext %1) l %228 = load i32, ptr %227, align 8, !tbaa !85 %229 = add i32 %228, -1 store i32 %229, ptr %227, align 8, !tbaa !85 - br i1 %.273, label %260, label %.thread115 + br i1 %.273, label %._crit_edge120, label %.thread115 + +._crit_edge120: ; preds = %220 + %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %223, i64 8 + %.pre121 = load ptr, ptr %.phi.trans.insert, align 8, !tbaa !60 + br label %260 230: ; preds = %15, %30, %39, %49, %69, %76, %84, %99, %219, %123, %140, %168 %.071.ph = phi i1 [ false, %168 ], [ false, %140 ], [ false, %123 ], [ %1, %219 ], [ true, %99 ], [ false, %84 ], [ false, %76 ], [ false, %69 ], [ false, %49 ], [ false, %39 ], [ false, %30 ], [ false, %15 ] @@ -527,23 +532,21 @@ define range(i32 -1, 1) i32 @H5G_mkroot(ptr noundef %0, i1 noundef zeroext %1) l 259: ; preds = %247 br i1 %.071.ph, label %260, label %.thread115 -260: ; preds = %220, %251, %259 - %.068113129 = phi i32 [ -1, %251 ], [ -1, %259 ], [ 0, %220 ] - %261 = phi ptr [ %255, %251 ], [ %248, %259 ], [ %223, %220 ] - %262 = getelementptr inbounds nuw i8, ptr %261, i64 8 - %263 = load ptr, ptr %262, align 8, !tbaa !60 - %264 = call i32 @H5AC_mark_entry_dirty(ptr noundef %263) #6 - %265 = icmp slt i32 %264, 0 - br i1 %265, label %266, label %.thread115 - -266: ; preds = %260 - %267 = load i64, ptr @H5E_FILE_g, align 8, !tbaa !49 - %268 = load i64, ptr @H5E_CANTMARKDIRTY_g, align 8, !tbaa !49 - %269 = call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5G_mkroot, i32 noundef 302, i64 noundef %267, i64 noundef %268, ptr noundef nonnull @.str.13) #6 +260: ; preds = %._crit_edge120, %251, %259 + %.068113129 = phi ptr [ %257, %251 ], [ null, %259 ], [ %.pre121, %._crit_edge120 ] + %261 = phi i32 [ -1, %251 ], [ -1, %259 ], [ 0, %._crit_edge120 ] + %262 = call i32 @H5AC_mark_entry_dirty(ptr noundef %261) #6 + %263 = icmp slt i32 %262, 0 + br i1 %263, label %264, label %.thread115 + +264:; preds = %260 + %265 = load i64, ptr @H5E_FILE_g, align 8, !tbaa !49 + %266 = load i64, ptr @H5E_CANTMARKDIRTY_g, align 8, !tbaa !49 + %267 = call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5G_mkroot, i32 noundef 302, i64 noundef %265, i64 noundef %266, ptr noundef nonnull @.str.13) #6 br label %.thread115 -.thread115: ; preds = %220, %251, %22, %19, %260, %266, %259 - %.078 = phi i32 [ -1, %266 ], [ %.068113129, %260 ], [ -1, %259 ], [ 0, %19 ], [ 0, %22 ], [ -1, %251 ], [ 0, %220 ] +.thread115: ; preds = %22, %220, %251, %19, %260, %264, %259 + %.078 = phi i32 [ -1, %264 ], [ %.068113118, %260 ], [ -1, %259 ], [ 0, %19 ], [ -1, %251 ], [ 0, %220 ], [ 0, %22 ] call void @llvm.lifetime.end.p0(ptr nonnull %4) call void @llvm.lifetime.end.p0(ptr nonnull %3) ret i32 %.078 diff --git a/bench/hdf5/optimized/H5I.ll b/bench/hdf5/optimized/H5I.ll index e9b2e3b09c2..c79b27aa062 100644 --- a/bench/hdf5/optimized/H5I.ll +++ b/bench/hdf5/optimized/H5I.ll @@ -335,7 +335,7 @@ define range(i32 -1, 1) i32 @H5Inmembers(i32 noundef %0, ptr noundef writeonly c %31 = call i32 @H5E_clear_stack() #4 %32 = add i32 %0, -1 %or.cond = icmp ult i32 %32, 16 - br i1 %or.cond, label %33, label %37 + br i1 %or.cond, label %33, label %37, !prof !13 33: ; preds = %30 %34 = load i64, ptr @H5E_ID_g, align 8, !tbaa !11 @@ -348,7 +348,7 @@ define range(i32 -1, 1) i32 @H5Inmembers(i32 noundef %0, ptr noundef writeonly c %39 = load i32, ptr @H5I_next_type_g, align 4 %.not = icmp slt i32 %0, %39 %or.cond29 = select i1 %38, i1 %.not, i1 false - br i1 %or.cond29, label %44, label %40 + br i1 %or.cond29, label %44, label %40, !prof !14 40: ; preds = %37 %41 = load i64, ptr @H5E_ARGS_g, align 8, !tbaa !11 @@ -361,7 +361,7 @@ define range(i32 -1, 1) i32 @H5Inmembers(i32 noundef %0, ptr noundef writeonly c %46 = getelementptr inbounds nuw ptr, ptr @H5I_type_info_array_g, i64 %45 %47 = load ptr, ptr %46, align 8, !tbaa !15 %48 = icmp eq ptr %47, null - br i1 %48, label %49, label %53 + br i1 %48, label %49, label %53, !prof !13 49: ; preds = %44 %50 = load i64, ptr @H5E_ARGS_g, align 8, !tbaa !11 @@ -1989,12 +1989,12 @@ switch.early.test: ; preds = %29 switch i32 %35, label %50 [ i32 5, label %36 i32 1, label %36 - ] + ], !prof !31 36: ; preds = %switch.early.test, %switch.early.test, %29 %37 = call ptr @H5VL_vol_object(i64 noundef %0) #4 %38 = icmp eq ptr %37, null - br i1 %38, label %39, label %43 + br i1 %38, label %39, label %43, !prof !13 39: ; preds = %36 %40 = load i64, ptr @H5E_ID_g, align 8, !tbaa !11 @@ -2005,7 +2005,7 @@ switch.early.test: ; preds = %29 43: ; preds = %36 %44 = call i64 @H5F_get_file_id(ptr noundef nonnull %37, i32 noundef %33, i1 noundef zeroext true) #4 %45 = icmp slt i64 %44, 0 - br i1 %45, label %46, label %55 + br i1 %45, label %46, label %55, !prof !13 46: ; preds = %43 %47 = load i64, ptr @H5E_ID_g, align 8, !tbaa !11 @@ -2112,16 +2112,16 @@ define i64 @H5Iget_name(i64 noundef %0, ptr noundef %1, i64 noundef %2) local_un 42: ; preds = %34 %43 = getelementptr inbounds nuw i8, ptr %5, i64 4 - store i32 0, ptr %43, align 4, !tbaa !31 + store i32 0, ptr %43, align 4, !tbaa !32 %44 = call i32 @H5I_get_type(i64 noundef %0) #4 - store i32 %44, ptr %5, align 8, !tbaa !33 - store i32 1, ptr %4, align 8, !tbaa !34 + store i32 %44, ptr %5, align 8, !tbaa !34 + store i32 1, ptr %4, align 8, !tbaa !35 %45 = getelementptr inbounds nuw i8, ptr %4, i64 8 - store i64 %2, ptr %45, align 8, !tbaa !36 + store i64 %2, ptr %45, align 8, !tbaa !37 %46 = getelementptr inbounds nuw i8, ptr %4, i64 16 - store ptr %1, ptr %46, align 8, !tbaa !36 + store ptr %1, ptr %46, align 8, !tbaa !37 %47 = getelementptr inbounds nuw i8, ptr %4, i64 24 - store ptr %6, ptr %47, align 8, !tbaa !36 + store ptr %6, ptr %47, align 8, !tbaa !37 %48 = load i64, ptr @H5P_LST_DATASET_XFER_ID_g, align 8, !tbaa !11 %49 = call i32 @H5VL_object_get(ptr noundef nonnull %36, ptr noundef nonnull %5, ptr noundef nonnull %4, i64 noundef %48, ptr noundef null) #4 %50 = icmp slt i32 %49, 0 @@ -2206,9 +2206,10 @@ attributes #4 = { nounwind } !28 = !{!29, !17, i64 0} !29 = !{!"", !17, i64 0, !17, i64 8} !30 = !{!29, !17, i64 8} -!31 = !{!32, !20, i64 4} -!32 = !{!"H5VL_loc_params_t", !20, i64 0, !20, i64 4, !5, i64 8} -!33 = !{!32, !20, i64 0} -!34 = !{!35, !20, i64 0} -!35 = !{!"H5VL_object_get_args_t", !20, i64 0, !5, i64 8} -!36 = !{!5, !5, i64 0} +!31 = !{!"branch_weights", i32 0, i32 1073741824, i32 1073741824} +!32 = !{!33, !20, i64 4} +!33 = !{!"H5VL_loc_params_t", !20, i64 0, !20, i64 4, !5, i64 8} +!34 = !{!33, !20, i64 0} +!35 = !{!36, !20, i64 0} +!36 = !{!"H5VL_object_get_args_t", !20, i64 0, !5, i64 8} +!37 = !{!5, !5, i64 0} diff --git a/bench/hdf5/optimized/H5Rdeprec.ll b/bench/hdf5/optimized/H5Rdeprec.ll index ba94f5f8ef3..cf6adbc351c 100644 --- a/bench/hdf5/optimized/H5Rdeprec.ll +++ b/bench/hdf5/optimized/H5Rdeprec.ll @@ -2314,7 +2314,7 @@ define range(i32 -1, -2147483648) i32 @H5Rcreate(ptr noundef %0, i64 noundef %1, %520 = load i64, ptr @H5E_BADTYPE_g, align 8, !tbaa !13 %521 = call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5Rcreate, i32 noundef 455, i64 noundef %335, i64 noundef %520, ptr noundef nonnull @.str.19) #7 %.not76 = icmp eq i64 %322, -1 - br i1 %.not76, label %.thread115, label %.thread84 + br i1 %.not76, label %.thread115, label %.thread84, !prof !27 .thread84: ; preds = %518, %424, %394, %361, %519 %.05493 = phi i1 [ true, %519 ], [ %.2, %518 ], [ %403, %424 ], [ true, %394 ], [ true, %361 ] @@ -2365,7 +2365,7 @@ define range(i32 -1, -2147483648) i32 @H5Rcreate(ptr noundef %0, i64 noundef %1, 546: ; preds = %.thread84 %547 = call i32 @H5CX_pop(i1 noundef zeroext true) #7 - br i1 %.05493, label %.thread107, label %549, !prof !27 + br i1 %.05493, label %.thread107, label %549, !prof !28 .thread107: ; preds = %91, %68, %39, %.thread115, %.thread111, %546 %.36099110 = phi i32 [ %.05791, %546 ], [ -1, %.thread111 ], [ -1, %.thread115 ], [ -1, %39 ], [ -1, %68 ], [ -1, %91 ] @@ -2539,7 +2539,7 @@ define internal fastcc range(i32 -1, 1) i32 @H5R__encode_token_region_compat(ptr 90: ; preds = %66 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %68, ptr nonnull align 1 %1, i64 %2, i1 false) %91 = getelementptr inbounds nuw i8, ptr %68, i64 %2 - store ptr %91, ptr %8, align 8, !tbaa !28 + store ptr %91, ptr %8, align 8, !tbaa !29 %92 = call i32 @H5S_select_serialize(ptr noundef nonnull %3, ptr noundef nonnull %8) #7 %93 = icmp slt i32 %92, 0 br i1 %93, label %94, label %114 @@ -3733,7 +3733,7 @@ define range(i64 -1, -9223372036854775808) i64 @H5Rget_region(i64 noundef %0, i3 call void @llvm.lifetime.start.p0(ptr nonnull %6) store i64 12, ptr %6, align 8, !tbaa !13 call void @llvm.lifetime.start.p0(ptr nonnull %7) - store ptr null, ptr %7, align 8, !tbaa !31 + store ptr null, ptr %7, align 8, !tbaa !32 call void @llvm.lifetime.start.p0(ptr nonnull %8) store i8 0, ptr %8, align 1, !tbaa !7 call void @llvm.lifetime.start.p0(ptr nonnull %9) @@ -4286,7 +4286,7 @@ define range(i64 -1, -9223372036854775808) i64 @H5Rget_region(i64 noundef %0, i3 br label %.thread53 349: ; preds = %324 - %350 = load ptr, ptr %7, align 8, !tbaa !31 + %350 = load ptr, ptr %7, align 8, !tbaa !32 %351 = call i64 @H5I_register(i32 noundef 4, ptr noundef %350, i1 noundef zeroext true) #7 %352 = icmp slt i64 %351, 0 br i1 %352, label %353, label %.thread53 @@ -4327,7 +4327,7 @@ define range(i64 -1, -9223372036854775808) i64 @H5Rget_region(i64 noundef %0, i3 %374 = load i64, ptr @H5E_BADTYPE_g, align 8, !tbaa !13 %375 = call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5Rget_region, i32 noundef 706, i64 noundef %239, i64 noundef %374, ptr noundef nonnull @.str.19) #7 %.not45 = icmp eq i64 %226, -1 - br i1 %.not45, label %.thread85, label %.thread53 + br i1 %.not45, label %.thread85, label %.thread53, !prof !27 .thread53: ; preds = %349, %370, %346, %321, %298, %265, %373 %.062 = phi i1 [ true, %373 ], [ false, %349 ], [ true, %370 ], [ true, %346 ], [ true, %321 ], [ true, %298 ], [ true, %265 ] @@ -4378,7 +4378,7 @@ define range(i64 -1, -9223372036854775808) i64 @H5Rget_region(i64 noundef %0, i3 400: ; preds = %.thread53 %401 = call i32 @H5CX_pop(i1 noundef zeroext true) #7 - br i1 %.062, label %.thread76, label %403, !prof !27 + br i1 %.062, label %.thread76, label %403, !prof !28 .thread76: ; preds = %86, %63, %34, %.thread85, %.thread81, %400 %.1356880 = phi i64 [ %.03460, %400 ], [ -1, %.thread81 ], [ -1, %.thread85 ], [ -1, %34 ], [ -1, %63 ], [ -1, %86 ] @@ -4873,9 +4873,10 @@ attributes #8 = { nounwind allocsize(0) } !24 = !{!"H5VL_file_cont_info_t", !4, i64 0, !14, i64 8, !14, i64 16, !14, i64 24} !25 = !{!26, !4, i64 0} !26 = !{!"H5VL_object_specific_args_t", !4, i64 0, !5, i64 8} -!27 = !{!"branch_weights", !"expected", i32 0, i32 -2147483648} -!28 = !{!29, !29, i64 0} -!29 = !{!"p1 omnipotent char", !30, i64 0} -!30 = !{!"any pointer", !5, i64 0} -!31 = !{!32, !32, i64 0} -!32 = !{!"p1 _ZTS5H5S_t", !30, i64 0} +!27 = !{!"branch_weights", i32 0, i32 -2147483648} +!28 = !{!"branch_weights", !"expected", i32 0, i32 -2147483648} +!29 = !{!30, !30, i64 0} +!30 = !{!"p1 omnipotent char", !31, i64 0} +!31 = !{!"any pointer", !5, i64 0} +!32 = !{!33, !33, i64 0} +!33 = !{!"p1 _ZTS5H5S_t", !31, i64 0} diff --git a/bench/hdf5/optimized/H5Rint.ll b/bench/hdf5/optimized/H5Rint.ll index f85aec5e575..59a6066a3bd 100644 --- a/bench/hdf5/optimized/H5Rint.ll +++ b/bench/hdf5/optimized/H5Rint.ll @@ -1603,8 +1603,8 @@ define range(i32 -1, 1) i32 @H5R__decode(ptr noundef %0, ptr noundef captures(no %.286 = phi i64 [ %57, %100 ], [ %94, %.thread111 ] %.280 = phi i64 [ %58, %100 ], [ %95, %.thread111 ] %102 = load i8, ptr %21, align 4, !tbaa !15 - switch i8 %102, label %127 [ - i8 2, label %131 + switch i8 %102, label %131 [ + i8 2, label %127 i8 3, label %103 i8 4, label %113 i8 0, label %123 @@ -1625,14 +1625,14 @@ define range(i32 -1, 1) i32 @H5R__decode(ptr noundef %0, ptr noundef captures(no %107 = load i64, ptr %4, align 8, !tbaa !17 %108 = add i64 %107, %.280 call void @llvm.lifetime.end.p0(ptr nonnull %4) - br label %131 + br label %127 109: ; preds = %103 %110 = load i64, ptr @H5E_REFERENCE_g, align 8, !tbaa !17 %111 = load i64, ptr @H5E_CANTDECODE_g, align 8, !tbaa !17 %112 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5R__decode, i32 noundef 1010, i64 noundef %110, i64 noundef %111, ptr noundef nonnull @.str.35) #15 call void @llvm.lifetime.end.p0(ptr nonnull %4) - br label %135 + br i1 %.not.not, label %.thread134, label %135 113: ; preds = %101 call void @llvm.lifetime.start.p0(ptr nonnull %5) @@ -1646,28 +1646,22 @@ define range(i32 -1, 1) i32 @H5R__decode(ptr noundef %0, ptr noundef captures(no %117 = load i64, ptr %5, align 8, !tbaa !17 %118 = add i64 %117, %.280 call void @llvm.lifetime.end.p0(ptr nonnull %5) - br label %131 + br label %127 119: ; preds = %113 %120 = load i64, ptr @H5E_REFERENCE_g, align 8, !tbaa !17 %121 = load i64, ptr @H5E_CANTDECODE_g, align 8, !tbaa !17 %122 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5R__decode, i32 noundef 1017, i64 noundef %120, i64 noundef %121, ptr noundef nonnull @.str.36) #15 call void @llvm.lifetime.end.p0(ptr nonnull %5) - br label %135 + br i1 %.not.not, label %.thread134, label %135 123: ; preds = %101, %101, %101, %101 %124 = load i64, ptr @H5E_REFERENCE_g, align 8, !tbaa !17 %125 = load i64, ptr @H5E_UNSUPPORTED_g, align 8, !tbaa !17 %126 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5R__decode, i32 noundef 1026, i64 noundef %124, i64 noundef %125, ptr noundef nonnull @.str.7) #15 - br label %135 + br i1 %.not.not, label %.thread134, label %135 -127: ; preds = %101 - %128 = load i64, ptr @H5E_REFERENCE_g, align 8, !tbaa !17 - %129 = load i64, ptr @H5E_UNSUPPORTED_g, align 8, !tbaa !17 - %130 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5R__decode, i32 noundef 1030, i64 noundef %128, i64 noundef %129, ptr noundef nonnull @.str.8) #15 - br label %135 - -131: ; preds = %101, %.thread117, %.thread121 +127: ; preds = %101, %.thread117, %.thread121 %.381 = phi i64 [ %.280, %101 ], [ %108, %.thread117 ], [ %118, %.thread121 ] %132 = getelementptr inbounds nuw i8, ptr %2, i64 32 store i64 -1, ptr %132, align 8, !tbaa !11 @@ -1677,18 +1671,21 @@ define range(i32 -1, 1) i32 @H5R__decode(ptr noundef %0, ptr noundef captures(no store i64 %.381, ptr %1, align 8, !tbaa !17 br label %.thread134 -135: ; preds = %127, %109, %119, %123 - br i1 %.not.not, label %.thread134, label %136 - -136: ; preds = %135 - %137 = getelementptr inbounds nuw i8, ptr %2, i64 16 - %138 = load ptr, ptr %137, align 8, !tbaa !10 - %139 = tail call ptr @H5MM_xfree(ptr noundef %138) #15 - store ptr null, ptr %137, align 8, !tbaa !10 +135: ; preds = %101 + %132 = load i64, ptr @H5E_REFERENCE_g, align 8, !tbaa !17 + %133 = load i64, ptr @H5E_UNSUPPORTED_g, align 8, !tbaa !17 + %134 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str, ptr noundef nonnull @__func__.H5R__decode, i32 noundef 1030, i64 noundef %132, i64 noundef %133, ptr noundef nonnull @.str.8) #15 + br i1 %.not.not, label %.thread134, label %135 + +135:; preds = %109, %119, %123, %131 + %136 = getelementptr inbounds nuw i8, ptr %2, i64 16 + %137 = load ptr, ptr %136, align 8, !tbaa !10 + %138 = tail call ptr @H5MM_xfree(ptr noundef %137) #15 + store ptr null, ptr %136, align 8, !tbaa !10 br label %.thread134 -.thread134: ; preds = %15, %23, %96, %46, %136, %135, %131, %3 - %.077 = phi i32 [ 0, %131 ], [ 0, %3 ], [ -1, %135 ], [ -1, %136 ], [ -1, %46 ], [ -1, %96 ], [ -1, %23 ], [ -1, %15 ] +.thread134: ; preds = %15, %23, %96, %46, %109, %119, %123, %135, %131, %127, %3 + %.077 = phi i32 [ 0, %127 ], [ 0, %3 ], [ -1, %131 ], [ -1, %135 ], [ -1, %123 ], [ -1, %119 ], [ -1, %109 ], [ -1, %46 ], [ -1, %96 ], [ -1, %23 ], [ -1, %15 ] ret i32 %.077 } diff --git a/bench/hermes/optimized/JSParserImpl.ll b/bench/hermes/optimized/JSParserImpl.ll index 045d113facd..6167628cd7b 100644 --- a/bench/hermes/optimized/JSParserImpl.ll +++ b/bench/hermes/optimized/JSParserImpl.ll @@ -2469,7 +2469,6 @@ if.then20: ; preds = %if.then18 if.end23: ; preds = %if.then20, %if.then18 %9 = phi i32 [ %.pre, %if.then20 ], [ %8, %if.then18 ] %10 = phi ptr [ %call2.i20, %if.then20 ], [ %call2.i, %if.then18 ] - %optional.1 = phi i8 [ 1, %if.then20 ], [ 0, %if.then18 ] %cmp.i22 = icmp eq i32 %9, 92 br i1 %cmp.i22, label %if.then25, label %if.end35 @@ -2505,7 +2504,7 @@ if.end32: ; preds = %_ZN6hermes6parser6d br label %if.end35 if.end35: ; preds = %if.end23, %if.end32, %if.end15 - %optional.0 = phi i8 [ %optional.1, %if.end32 ], [ %optional.1, %if.end23 ], [ 0, %if.end15 ] + %optional.0 = phi i1 [ %cmp.i11, %if.end32 ], [ %cmp.i11, %if.end23 ], [ false, %if.end15 ] %type.0 = phi ptr [ %16, %if.end32 ], [ null, %if.end23 ], [ null, %if.end15 ] %prevTokenEndLoc_.i.i = getelementptr inbounds nuw i8, ptr %this, i64 144 %retval.sroa.0.0.copyload.i.i36 = load ptr, ptr %prevTokenEndLoc_.i.i, align 8 @@ -2545,6 +2544,7 @@ if.end.i.i.i: ; preds = %if.end35 _ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit: ; preds = %if.then.i.i.i, %if.end.i.i.i %retval.0.i.i.i = phi ptr [ %call11.i.i.i, %if.then.i.i.i ], [ %27, %if.end.i.i.i ] + %frombool.i = zext i1 %optional.0 to i8 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(65) %retval.0.i.i.i, i8 0, i64 16, i1 false) %kind_.i.i = getelementptr inbounds nuw i8, ptr %retval.0.i.i.i, i64 16 store i32 63, ptr %kind_.i.i, align 8 @@ -2555,7 +2555,7 @@ _ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit: ; preds = %if.then.i.i.i, %if. %_typeAnnotation.i = getelementptr inbounds nuw i8, ptr %retval.0.i.i.i, i64 56 store ptr %type.0, ptr %_typeAnnotation.i, align 8 %_optional.i = getelementptr inbounds nuw i8, ptr %retval.0.i.i.i, i64 64 - store i8 %optional.0, ptr %_optional.i, align 8 + store i8 %frombool.i, ptr %_optional.i, align 8 %sourceRange_.i.i = getelementptr inbounds nuw i8, ptr %retval.0.i.i.i, i64 24 store ptr %retval.sroa.0.0.copyload.i, ptr %sourceRange_.i.i, align 8 %End.i.i = getelementptr inbounds nuw i8, ptr %retval.0.i.i.i, i64 32 @@ -16338,7 +16338,7 @@ if.end351: ; preds = %_ZN6hermes6ESTree4N %async.0 = phi i8 [ 0, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit ], [ 0, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit48 ], [ 0, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit243 ], [ 0, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit273 ], [ 0, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit491 ], [ 0, %if.then269 ], [ 1, %if.end304 ], [ 0, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit629 ], [ 0, %if.end346 ] %generator.0.shrunk = phi i1 [ false, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit ], [ false, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit48 ], [ false, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit243 ], [ false, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit273 ], [ false, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit491 ], [ false, %if.then269 ], [ %cmp.i602, %if.end304 ], [ false, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit629 ], [ %cmp.i715, %if.end346 ] %key.0 = phi ptr [ %retval.0.i.i.i, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit ], [ %retval.0.i.i.i45, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit48 ], [ %retval.0.i.i.i240, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit243 ], [ %retval.0.i.i.i270, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit273 ], [ %retval.0.i.i.i488, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit491 ], [ %call273, %if.then269 ], [ %235, %if.end304 ], [ %retval.0.i.i.i626, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit629 ], [ %275, %if.end346 ] - %method.0 = phi i8 [ 0, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit ], [ 1, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit48 ], [ 0, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit243 ], [ 1, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit273 ], [ 0, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit491 ], [ 1, %if.then269 ], [ 1, %if.end304 ], [ 0, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit629 ], [ 0, %if.end346 ] + %method.0 = phi i1 [ false, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit ], [ true, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit48 ], [ false, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit243 ], [ true, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit273 ], [ false, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit491 ], [ true, %if.then269 ], [ true, %if.end304 ], [ false, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit629 ], [ false, %if.end346 ] %computed.0.shrunk = phi i1 [ false, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit ], [ false, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit48 ], [ false, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit243 ], [ false, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit273 ], [ false, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit491 ], [ false, %if.then269 ], [ %cmp.i607, %if.end304 ], [ false, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit629 ], [ %cmp.i721, %if.end346 ] %generator.0 = zext i1 %generator.0.shrunk to i8 %kind_.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %key.0, i64 16 @@ -16627,7 +16627,7 @@ if.end481: ; preds = %if.end474 if.end484: ; preds = %cleanup467, %if.end481, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit755 %shorthand.0 = phi i8 [ 1, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit755 ], [ 0, %cleanup467 ], [ 0, %if.end481 ] %value352.0 = phi ptr [ %retval.0.i.i.i752, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit755 ], [ %call457, %cleanup467 ], [ %324, %if.end481 ] - %method.1 = phi i8 [ %method.0, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit755 ], [ 1, %cleanup467 ], [ %method.0, %if.end481 ] + %method.1 = phi i1 [ %method.0, %_ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit755 ], [ true, %cleanup467 ], [ %method.0, %if.end481 ] %prevTokenEndLoc_.i.i842 = getelementptr inbounds nuw i8, ptr %this, i64 144 %retval.sroa.0.0.copyload.i.i843 = load ptr, ptr %prevTokenEndLoc_.i.i842, align 8 %325 = load ptr, ptr %this, align 8 @@ -16669,6 +16669,7 @@ _ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit859: ; preds = %if.then.i.i.i857, % %initIdent_492 = getelementptr inbounds nuw i8, ptr %this, i64 1224 %336 = load ptr, ptr %initIdent_492, align 8 %frombool.i860 = zext i1 %computed.0.shrunk to i8 + %frombool1.i = zext i1 %method.1 to i8 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(75) %retval.0.i.i.i856, i8 0, i64 16, i1 false) %kind_.i.i861 = getelementptr inbounds nuw i8, ptr %retval.0.i.i.i856, i64 16 store i32 73, ptr %kind_.i.i861, align 8 @@ -16683,7 +16684,7 @@ _ZN6hermes6ESTree4NodenwEmRNS_7ContextEm.exit859: ; preds = %if.then.i.i.i857, % %_computed.i866 = getelementptr inbounds nuw i8, ptr %retval.0.i.i.i856, i64 72 store i8 %frombool.i860, ptr %_computed.i866, align 8 %_method.i867 = getelementptr inbounds nuw i8, ptr %retval.0.i.i.i856, i64 73 - store i8 %method.1, ptr %_method.i867, align 1 + store i8 %frombool1.i, ptr %_method.i867, align 1 %_shorthand.i868 = getelementptr inbounds nuw i8, ptr %retval.0.i.i.i856, i64 74 store i8 %shorthand.0, ptr %_shorthand.i868, align 2 %sourceRange_.i.i869 = getelementptr inbounds nuw i8, ptr %retval.0.i.i.i856, i64 24 diff --git a/bench/icu/optimized/numparse_compositions.ll b/bench/icu/optimized/numparse_compositions.ll index 3ba18c911f8..7692003c33c 100644 --- a/bench/icu/optimized/numparse_compositions.ll +++ b/bench/icu/optimized/numparse_compositions.ll @@ -103,11 +103,11 @@ _ZN6icu_778numparse4impl12ParsedNumberC2ERKS2_.exit: ; preds = %11 .preheader.outer: ; preds = %23, %.preheader.outer.backedge %.051.ph = phi ptr [ %.051.ph.be, %.preheader.outer.backedge ], [ %27, %23 ] - %.046.ph = phi i8 [ %.248, %.preheader.outer.backedge ], [ 1, %23 ] + %.046.ph = phi i1 [ %.248, %.preheader.outer.backedge ], [ true, %23 ] br label %.preheader .preheader: ; preds = %.preheader.outer, %57 - %.046 = phi i8 [ %.248, %57 ], [ %.046.ph, %.preheader.outer ] + %.046 = phi i1 [ %.248, %55 ], [ %.046.ph, %.preheader.outer ] %28 = load ptr, ptr %0, align 8, !tbaa !6 %29 = getelementptr inbounds nuw i8, ptr %28, i64 64 %30 = load ptr, ptr %29, align 8 @@ -136,11 +136,11 @@ _ZN6icu_778numparse4impl12ParsedNumberC2ERKS2_.exit: ; preds = %11 35: ; preds = %32 %36 = load ptr, ptr %.051.ph, align 8, !tbaa !8 %37 = invoke noundef i32 @_ZNK6icu_7713StringSegment9getOffsetEv(ptr noundef nonnull align 8 dereferenceable(17) %1) - to label %38 unwind label %48 + to label %38 unwind label %46 38: ; preds = %35 %39 = invoke noundef i32 @_ZNK6icu_7713StringSegment6lengthEv(ptr noundef nonnull align 8 dereferenceable(17) %1) - to label %40 unwind label %48 + to label %40 unwind label %46 40: ; preds = %38 %.not = icmp eq i32 %39, 0 @@ -151,28 +151,24 @@ _ZN6icu_778numparse4impl12ParsedNumberC2ERKS2_.exit: ; preds = %11 %43 = getelementptr inbounds nuw i8, ptr %42, i64 24 %44 = load ptr, ptr %43, align 8 %45 = invoke noundef zeroext i1 %44(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(17) %1, ptr noundef nonnull align 8 dereferenceable(216) %2, ptr noundef nonnull align 4 dereferenceable(4) %3) - to label %46 unwind label %48 + to label %48 unwind label %46 -46: ; preds = %41 - %47 = zext i1 %45 to i8 - br label %50 - -48: ; preds = %41, %38, %35 - %49 = landingpad { ptr, i32 } +46: ; preds = %41, %38, %35 + %47 = landingpad { ptr, i32 } cleanup br label %.loopexit71 -50: ; preds = %40, %46 - %.248 = phi i8 [ %47, %46 ], [ 1, %40 ] +50: ; preds = %41, %40 + %.248 = phi i1 [ true, %40 ], [ %45, %41 ] %51 = invoke noundef i32 @_ZNK6icu_7713StringSegment9getOffsetEv(ptr noundef nonnull align 8 dereferenceable(17) %1) - to label %52 unwind label %59 + to label %50 unwind label %59 52: ; preds = %50 %53 = load ptr, ptr %36, align 8, !tbaa !6 %54 = getelementptr inbounds nuw i8, ptr %53, i64 16 %55 = load ptr, ptr %54, align 8 - %56 = invoke noundef zeroext i1 %55(ptr noundef nonnull align 8 dereferenceable(8) %36) - to label %57 unwind label %.loopexit71.loopexit + %56 = invoke noundef zeroext i1 %53(ptr noundef nonnull align 8 dereferenceable(8) %36) + to label %55 unwind label %.loopexit71.loopexit 57: ; preds = %52 %58 = icmp ne i32 %51, %37 @@ -189,7 +185,7 @@ _ZN6icu_778numparse4impl12ParsedNumberC2ERKS2_.exit: ; preds = %11 cleanup br label %.loopexit71 -.loopexit71.loopexit.split-lp: ; preds = %75, %70, %62 +.loopexit71.loopexit.split-lp: ; preds = %73, %68, %60 %lpad.loopexit.split-lp118 = landingpad { ptr, i32 } cleanup br label %.loopexit71 @@ -200,37 +196,37 @@ _ZN6icu_778numparse4impl12ParsedNumberC2ERKS2_.exit: ; preds = %11 br label %.loopexit71 61: ; preds = %57 - br i1 %58, label %62, label %76 + br i1 %58, label %60, label %76 + +60: ; preds = %59 + %61 = getelementptr inbounds nuw i8, ptr %.051.ph, i64 8 + %62 = load ptr, ptr %0, align 8, !tbaa !6 + %63 = getelementptr inbounds nuw i8, ptr %62, i64 64 + %64 = load ptr, ptr %63, align 8 + %65 = invoke noundef ptr %64(ptr noundef nonnull align 8 dereferenceable(8) %0) + to label %66 unwind label %.loopexit71.loopexit.split-lp -62: ; preds = %61 - %63 = getelementptr inbounds nuw i8, ptr %.051.ph, i64 8 - %64 = load ptr, ptr %0, align 8, !tbaa !6 - %65 = getelementptr inbounds nuw i8, ptr %64, i64 64 - %66 = load ptr, ptr %65, align 8 - %67 = invoke noundef ptr %66(ptr noundef nonnull align 8 dereferenceable(8) %0) - to label %68 unwind label %.loopexit71.loopexit.split-lp +62: ; preds = %60 + %67 = icmp ult ptr %61, %65 + br i1 %67, label %68, label %.preheader.outer.backedge 68: ; preds = %62 - %69 = icmp ult ptr %63, %67 - br i1 %69, label %70, label %.preheader.outer.backedge + %69 = invoke noundef i32 @_ZNK6icu_7713StringSegment9getOffsetEv(ptr noundef nonnull align 8 dereferenceable(17) %1) + to label %70 unwind label %.loopexit71.loopexit.split-lp 70: ; preds = %68 - %71 = invoke noundef i32 @_ZNK6icu_7713StringSegment9getOffsetEv(ptr noundef nonnull align 8 dereferenceable(17) %1) - to label %72 unwind label %.loopexit71.loopexit.split-lp - -72: ; preds = %70 - %73 = load i32, ptr %7, align 8, !tbaa !13 - %.not58 = icmp ne i32 %71, %73 - %74 = icmp sgt i32 %73, %37 - %or.cond64 = and i1 %.not58, %74 - br i1 %or.cond64, label %75, label %.preheader.outer.backedge - -75: ; preds = %72 - invoke void @_ZN6icu_7713StringSegment9setOffsetEi(ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %73) + %71 = load i32, ptr %7, align 8, !tbaa !13 + %.not58 = icmp ne i32 %69, %71 + %72 = icmp sgt i32 %71, %37 + %or.cond64 = and i1 %.not58, %72 + br i1 %or.cond64, label %73, label %.preheader.outer.backedge + +73:; preds = %70 + invoke void @_ZN6icu_7713StringSegment9setOffsetEi(ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %71) to label %.preheader.outer.backedge unwind label %.loopexit71.loopexit.split-lp -.preheader.outer.backedge: ; preds = %75, %72, %68, %77 - %.051.ph.be = phi ptr [ %78, %77 ], [ %63, %68 ], [ %63, %72 ], [ %63, %75 ] +.preheader.outer.backedge: ; preds = %73, %70, %66, %77 + %.051.ph.be = phi ptr [ %78, %75 ], [ %61, %66 ], [ %61, %70 ], [ %61, %73 ] br label %.preheader.outer, !llvm.loop !11 76: ; preds = %61 @@ -242,7 +238,7 @@ _ZN6icu_778numparse4impl12ParsedNumberC2ERKS2_.exit: ; preds = %11 79: ; preds = %76 invoke void @_ZN6icu_7713StringSegment9setOffsetEi(ptr noundef nonnull align 8 dereferenceable(17) %1, i32 noundef %22) - to label %80 unwind label %.loopexit.split-lp72 + to label %78 unwind label %.loopexit.split-lp72 80: ; preds = %79 %81 = invoke noundef nonnull align 8 dereferenceable(66) ptr @_ZN6icu_776number4impl15DecimalQuantityaSERKS2_(ptr noundef nonnull align 8 dereferenceable(216) %2, ptr noundef nonnull align 8 dereferenceable(216) %5) @@ -264,16 +260,15 @@ _ZN6icu_778numparse4impl12ParsedNumberC2ERKS2_.exit: ; preds = %11 br label %.loopexit70 .loopexit70: ; preds = %32, %.thread - %.3.in = phi i8 [ %.248, %.thread ], [ %.046, %32 ] - %.3 = trunc nuw i8 %.3.in to i1 + %.3.in = phi i1 [ %.248, %.thread ], [ %.046, %32 ] call void @_ZN6icu_7713UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %12) #14 call void @_ZN6icu_7713UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %9) #14 call void @_ZN6icu_776number4impl15DecimalQuantityD1Ev(ptr noundef nonnull align 8 dereferenceable(216) %5) #14 call void @llvm.lifetime.end.p0(ptr nonnull %5) - ret i1 %.3 + ret i1 %.3.in -.loopexit71: ; preds = %.loopexit71.loopexit, %.loopexit71.loopexit.split-lp, %.loopexit.split-lp72, %.loopexit, %.loopexit.split-lp, %59, %48, %33 - %.pn.pn.pn.pn = phi { ptr, i32 } [ %34, %33 ], [ %49, %48 ], [ %60, %59 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ], [ %lpad.loopexit.split-lp74, %.loopexit.split-lp72 ], [ %lpad.loopexit117, %.loopexit71.loopexit ], [ %lpad.loopexit.split-lp118, %.loopexit71.loopexit.split-lp ] +.loopexit71: ; preds = %.loopexit71.loopexit, %.loopexit71.loopexit.split-lp, %.loopexit.split-lp72, %.loopexit, %.loopexit.split-lp, %59, %46, %33 + %.pn.pn.pn.pn = phi { ptr, i32 } [ %34, %33 ], [ %47, %46 ], [ %60, %57 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ], [ %lpad.loopexit.split-lp74, %.loopexit.split-lp72 ], [ %lpad.loopexit117, %.loopexit71.loopexit ], [ %lpad.loopexit.split-lp118, %.loopexit71.loopexit.split-lp ] call void @_ZN6icu_778numparse4impl12ParsedNumberD2Ev(ptr noundef nonnull align 8 dereferenceable(216) %5) #14 call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %common.resume diff --git a/bench/jemalloc/optimized/extent.ll b/bench/jemalloc/optimized/extent.ll index 334423d3cb5..da5b99806db 100644 --- a/bench/jemalloc/optimized/extent.ll +++ b/bench/jemalloc/optimized/extent.ll @@ -2634,13 +2634,13 @@ extent_coalesce.exit52: ; preds = %26 br i1 %34, label %.sink.split, label %35 .sink.split: ; preds = %extent_coalesce.exit52, %extent_coalesce.exit, %.loopexit71 - %.sink = phi i8 [ 0, %.loopexit71 ], [ 1, %extent_coalesce.exit ], [ 1, %extent_coalesce.exit52 ] - %.3.ph = phi ptr [ %.340.ph70, %.loopexit71 ], [ %.037.ph, %extent_coalesce.exit ], [ %25, %extent_coalesce.exit52 ] + %.sink = phi i8 [ 0, %.loopexit61 ], [ 1, %extent_coalesce.exit ], [ 1, %extent_coalesce.exit52 ] + %.3.ph = phi ptr [ %.340.ph70, %.loopexit61 ], [ %.037.ph, %extent_coalesce.exit ], [ %25, %extent_coalesce.exit52 ] store i8 %.sink, ptr %5, align 1, !tbaa !4 br label %35 35: ; preds = %.sink.split, %.loopexit71 - %.3 = phi ptr [ %.340.ph70, %.loopexit71 ], [ %.3.ph, %.sink.split ] + %.3 = phi ptr [ %.340.ph70, %.loopexit61 ], [ %.3.ph, %.sink.split ] ret ptr %.3 } diff --git a/bench/libquic/optimized/string_number_conversions.ll b/bench/libquic/optimized/string_number_conversions.ll index 022c39b1701..6e57d0f5a82 100644 --- a/bench/libquic/optimized/string_number_conversions.ll +++ b/bench/libquic/optimized/string_number_conversions.ll @@ -992,11 +992,14 @@ define noundef zeroext i1 @_ZN4base11StringToIntERKNS_16BasicStringPieceINSt7__c _ZN4base12_GLOBAL__N_121IteratorRangeToNumberINS0_25StringPieceToNumberTraitsIiLi10EEEE6InvokeEPKcS6_Pi.exit.sink.split.i: ; preds = %.lr.ph.i, %21, %19, %37, %35 %.sink.i = phi i32 [ 2147483647, %35 ], [ 2147483647, %37 ], [ -2147483648, %19 ], [ -2147483648, %21 ], [ 0, %.lr.ph.i ] + %.037.i.ph.i = phi i1 [ %.038.i.i, %35 ], [ %.038.i.i, %37 ], [ %.not32.i9.i, %19 ], [ %.not32.i9.i, %21 ], [ false, %.lr.ph.i ] store i32 %.sink.i, ptr %1, align 4, !tbaa !66 br label %_ZN4base12_GLOBAL__N_115StringToIntImplIiEEbRKNS_16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEPT_.exit _ZN4base12_GLOBAL__N_115StringToIntImplIiEEbRKNS_16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEPT_.exit: ; preds = %.preheader.i.i.i, %.critedge.i.i.i, %.preheader.i24.i.i, %.critedge.i30.i.i, %13, %.critedge21.i.i, %_ZN4base12_GLOBAL__N_121IteratorRangeToNumberINS0_25StringPieceToNumberTraitsIiLi10EEEE6InvokeEPKcS6_Pi.exit.sink.split.i - %.1.i.i = phi i1 [ false, %13 ], [ false, %.critedge21.i.i ], [ false, %_ZN4base12_GLOBAL__N_121IteratorRangeToNumberINS0_25StringPieceToNumberTraitsIiLi10EEEE6InvokeEPKcS6_Pi.exit.sink.split.i ], [ false, %.preheader.i24.i.i ], [ %.039.i.i, %.critedge.i30.i.i ], [ false, %.preheader.i.i.i ], [ %.not34.i9.i, %.critedge.i.i.i ] + %.1.i.i = phi i1 [ %.not32.i9.i, %13 ], [ %.038.i.i, %.critedge21.i.i ], [ %.037.i.ph.i, %_ZN4base12_GLOBAL__N_121IteratorRangeToNumberINS0_25StringPieceToNumberTraitsIiLi10EEEE6InvokeEPKcS6_Pi.exit.sink.split.i ], [ %.039.i.i, %.critedge.i30.i.i ], [ %.038.i.i, %.preheader.i24.i.i ], [ %.not34.i9.i, %.critedge.i.i.i ], [ %.not32.i9.i, %.preheader.i.i.i ] + %.016.i.pn.i.i = phi i1 [ false, %13 ], [ false, %.critedge21.i.i ], [ false, %_ZN4base12_GLOBAL__N_121IteratorRangeToNumberINS0_25StringPieceToNumberTraitsIiLi10EEEE6InvokeEPKcS6_Pi.exit.sink.split.i ], [ %or.cond.i.i.i26.i.i, %.critedge.i30.i.i ], [ %or.cond.i.i.i26.i.i, %.preheader.i24.i.i ], [ %or.cond.i.i.i.i.i, %.critedge.i.i.i ], [ %or.cond.i.i.i.i.i, %.preheader.i.i.i ] + %.1.i.i = and i1 %.037.i.i, %.016.i.pn.i.i ret i1 %.1.i.i } @@ -1133,11 +1136,14 @@ define noundef zeroext i1 @_ZN4base11StringToIntERKNS_16BasicStringPieceINSt7__c _ZN4base12_GLOBAL__N_121IteratorRangeToNumberINS0_27StringPiece16ToNumberTraitsIiLi10EEEE6InvokeEPKtS6_Pi.exit.sink.split.i: ; preds = %.lr.ph.i, %24, %22, %42, %40 %.sink.i = phi i32 [ 2147483647, %40 ], [ 2147483647, %42 ], [ -2147483648, %22 ], [ -2147483648, %24 ], [ 0, %.lr.ph.i ] + %.037.i.ph.i = phi i1 [ %.038.i.i, %40 ], [ %.038.i.i, %42 ], [ %.not32.i6.i, %22 ], [ %.not32.i6.i, %24 ], [ false, %.lr.ph.i ] store i32 %.sink.i, ptr %1, align 4, !tbaa !66 br label %_ZN4base12_GLOBAL__N_117String16ToIntImplIiEEbRKNS_16BasicStringPieceINSt7__cxx1112basic_stringItNS_20string16_char_traitsESaItEEEEEPT_.exit _ZN4base12_GLOBAL__N_117String16ToIntImplIiEEbRKNS_16BasicStringPieceINSt7__cxx1112basic_stringItNS_20string16_char_traitsESaItEEEEEPT_.exit: ; preds = %.preheader.i.i.i, %.critedge.i.i.i, %.preheader.i24.i.i, %.critedge.i30.i.i, %14, %.critedge21.i.i, %_ZN4base12_GLOBAL__N_121IteratorRangeToNumberINS0_27StringPiece16ToNumberTraitsIiLi10EEEE6InvokeEPKtS6_Pi.exit.sink.split.i - %.1.i.i = phi i1 [ false, %14 ], [ false, %.critedge21.i.i ], [ false, %_ZN4base12_GLOBAL__N_121IteratorRangeToNumberINS0_27StringPiece16ToNumberTraitsIiLi10EEEE6InvokeEPKtS6_Pi.exit.sink.split.i ], [ false, %.preheader.i24.i.i ], [ %.039.i.i, %.critedge.i30.i.i ], [ false, %.preheader.i.i.i ], [ %.not34.i6.i, %.critedge.i.i.i ] + %.1.i.i = phi i1 [ %.not32.i6.i, %14 ], [ %.038.i.i, %.critedge21.i.i ], [ %.037.i.ph.i, %_ZN4base12_GLOBAL__N_121IteratorRangeToNumberINS0_27StringPiece16ToNumberTraitsIiLi10EEEE6InvokeEPKtS6_Pi.exit.sink.split.i ], [ %.039.i.i, %.critedge.i30.i.i ], [ %.038.i.i, %.preheader.i24.i.i ], [ %.not34.i6.i, %.critedge.i.i.i ], [ %.not32.i6.i, %.preheader.i.i.i ] + %.016.i.pn.i.i = phi i1 [ false, %14 ], [ false, %.critedge21.i.i ], [ false, %_ZN4base12_GLOBAL__N_121IteratorRangeToNumberINS0_27StringPiece16ToNumberTraitsIiLi10EEEE6InvokeEPKtS6_Pi.exit.sink.split.i ], [ %or.cond.i.i.i26.i.i, %.critedge.i30.i.i ], [ %or.cond.i.i.i26.i.i, %.preheader.i24.i.i ], [ %or.cond.i.i.i.i.i, %.critedge.i.i.i ], [ %or.cond.i.i.i.i.i, %.preheader.i.i.i ] + %.1.i.i = and i1 %.037.i.i, %.016.i.pn.i.i ret i1 %.1.i.i } @@ -1480,11 +1486,14 @@ define noundef zeroext i1 @_ZN4base13StringToInt64ERKNS_16BasicStringPieceINSt7_ _ZN4base12_GLOBAL__N_121IteratorRangeToNumberINS0_25StringPieceToNumberTraitsIlLi10EEEE6InvokeEPKcS6_Pl.exit.sink.split.i: ; preds = %.lr.ph.i, %21, %19, %37, %35 %.sink.i = phi i64 [ 9223372036854775807, %35 ], [ 9223372036854775807, %37 ], [ -9223372036854775808, %19 ], [ -9223372036854775808, %21 ], [ 0, %.lr.ph.i ] + %.037.i.ph.i = phi i1 [ %.038.i.i, %35 ], [ %.038.i.i, %37 ], [ %.not32.i9.i, %19 ], [ %.not32.i9.i, %21 ], [ false, %.lr.ph.i ] store i64 %.sink.i, ptr %1, align 8, !tbaa !18 br label %_ZN4base12_GLOBAL__N_115StringToIntImplIlEEbRKNS_16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEPT_.exit _ZN4base12_GLOBAL__N_115StringToIntImplIlEEbRKNS_16BasicStringPieceINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEPT_.exit: ; preds = %.preheader.i.i.i, %.critedge.i.i.i, %.preheader.i24.i.i, %.critedge.i30.i.i, %13, %.critedge21.i.i, %_ZN4base12_GLOBAL__N_121IteratorRangeToNumberINS0_25StringPieceToNumberTraitsIlLi10EEEE6InvokeEPKcS6_Pl.exit.sink.split.i - %.1.i.i = phi i1 [ false, %13 ], [ false, %.critedge21.i.i ], [ false, %_ZN4base12_GLOBAL__N_121IteratorRangeToNumberINS0_25StringPieceToNumberTraitsIlLi10EEEE6InvokeEPKcS6_Pl.exit.sink.split.i ], [ false, %.preheader.i24.i.i ], [ %.039.i.i, %.critedge.i30.i.i ], [ false, %.preheader.i.i.i ], [ %.not34.i9.i, %.critedge.i.i.i ] + %.1.i.i = phi i1 [ %.not32.i9.i, %13 ], [ %.038.i.i, %.critedge21.i.i ], [ %.037.i.ph.i, %_ZN4base12_GLOBAL__N_121IteratorRangeToNumberINS0_25StringPieceToNumberTraitsIlLi10EEEE6InvokeEPKcS6_Pl.exit.sink.split.i ], [ %.039.i.i, %.critedge.i30.i.i ], [ %.038.i.i, %.preheader.i24.i.i ], [ %.not34.i9.i, %.critedge.i.i.i ], [ %.not32.i9.i, %.preheader.i.i.i ] + %.016.i.pn.i.i = phi i1 [ false, %13 ], [ false, %.critedge21.i.i ], [ false, %_ZN4base12_GLOBAL__N_121IteratorRangeToNumberINS0_25StringPieceToNumberTraitsIlLi10EEEE6InvokeEPKcS6_Pl.exit.sink.split.i ], [ %or.cond.i.i.i26.i.i, %.critedge.i30.i.i ], [ %or.cond.i.i.i26.i.i, %.preheader.i24.i.i ], [ %or.cond.i.i.i.i.i, %.critedge.i.i.i ], [ %or.cond.i.i.i.i.i, %.preheader.i.i.i ] + %.1.i.i = and i1 %.037.i.i, %.016.i.pn.i.i ret i1 %.1.i.i } @@ -1621,11 +1630,14 @@ define noundef zeroext i1 @_ZN4base13StringToInt64ERKNS_16BasicStringPieceINSt7_ _ZN4base12_GLOBAL__N_121IteratorRangeToNumberINS0_27StringPiece16ToNumberTraitsIlLi10EEEE6InvokeEPKtS6_Pl.exit.sink.split.i: ; preds = %.lr.ph.i, %24, %22, %42, %40 %.sink.i = phi i64 [ 9223372036854775807, %40 ], [ 9223372036854775807, %42 ], [ -9223372036854775808, %22 ], [ -9223372036854775808, %24 ], [ 0, %.lr.ph.i ] + %.037.i.ph.i = phi i1 [ %.038.i.i, %40 ], [ %.038.i.i, %42 ], [ %.not32.i6.i, %22 ], [ %.not32.i6.i, %24 ], [ false, %.lr.ph.i ] store i64 %.sink.i, ptr %1, align 8, !tbaa !18 br label %_ZN4base12_GLOBAL__N_117String16ToIntImplIlEEbRKNS_16BasicStringPieceINSt7__cxx1112basic_stringItNS_20string16_char_traitsESaItEEEEEPT_.exit _ZN4base12_GLOBAL__N_117String16ToIntImplIlEEbRKNS_16BasicStringPieceINSt7__cxx1112basic_stringItNS_20string16_char_traitsESaItEEEEEPT_.exit: ; preds = %.preheader.i.i.i, %.critedge.i.i.i, %.preheader.i24.i.i, %.critedge.i30.i.i, %14, %.critedge21.i.i, %_ZN4base12_GLOBAL__N_121IteratorRangeToNumberINS0_27StringPiece16ToNumberTraitsIlLi10EEEE6InvokeEPKtS6_Pl.exit.sink.split.i - %.1.i.i = phi i1 [ false, %14 ], [ false, %.critedge21.i.i ], [ false, %_ZN4base12_GLOBAL__N_121IteratorRangeToNumberINS0_27StringPiece16ToNumberTraitsIlLi10EEEE6InvokeEPKtS6_Pl.exit.sink.split.i ], [ false, %.preheader.i24.i.i ], [ %.039.i.i, %.critedge.i30.i.i ], [ false, %.preheader.i.i.i ], [ %.not34.i6.i, %.critedge.i.i.i ] + %.1.i.i = phi i1 [ %.not32.i6.i, %14 ], [ %.038.i.i, %.critedge21.i.i ], [ %.037.i.ph.i, %_ZN4base12_GLOBAL__N_121IteratorRangeToNumberINS0_27StringPiece16ToNumberTraitsIlLi10EEEE6InvokeEPKtS6_Pl.exit.sink.split.i ], [ %.039.i.i, %.critedge.i30.i.i ], [ %.038.i.i, %.preheader.i24.i.i ], [ %.not34.i6.i, %.critedge.i.i.i ], [ %.not32.i6.i, %.preheader.i.i.i ] + %.016.i.pn.i.i = phi i1 [ false, %14 ], [ false, %.critedge21.i.i ], [ false, %_ZN4base12_GLOBAL__N_121IteratorRangeToNumberINS0_27StringPiece16ToNumberTraitsIlLi10EEEE6InvokeEPKtS6_Pl.exit.sink.split.i ], [ %or.cond.i.i.i26.i.i, %.critedge.i30.i.i ], [ %or.cond.i.i.i26.i.i, %.preheader.i24.i.i ], [ %or.cond.i.i.i.i.i, %.critedge.i.i.i ], [ %or.cond.i.i.i.i.i, %.preheader.i.i.i ] + %.1.i.i = and i1 %.037.i.i, %.016.i.pn.i.i ret i1 %.1.i.i } @@ -2380,11 +2392,14 @@ define noundef zeroext i1 @_ZN4base14HexStringToIntERKNS_16BasicStringPieceINSt7 _ZN4base12_GLOBAL__N_121IteratorRangeToNumberINS0_31BaseHexIteratorRangeToIntTraitsIPKcEEE6InvokeES4_S4_Pi.exit.sink.split: ; preds = %.lr.ph, %44, %46, %82 %.sink = phi i32 [ 2147483647, %82 ], [ -2147483648, %46 ], [ -2147483648, %44 ], [ 0, %.lr.ph ] + %.040.i.ph = phi i1 [ %.041.i, %82 ], [ %.not36.i11, %46 ], [ %.not36.i11, %44 ], [ false, %.lr.ph ] store i32 %.sink, ptr %1, align 4, !tbaa !66 br label %_ZN4base12_GLOBAL__N_121IteratorRangeToNumberINS0_31BaseHexIteratorRangeToIntTraitsIPKcEEE6InvokeES4_S4_Pi.exit _ZN4base12_GLOBAL__N_121IteratorRangeToNumberINS0_31BaseHexIteratorRangeToIntTraitsIPKcEEE6InvokeES4_S4_Pi.exit: ; preds = %39, %.critedge.i.i, %77, %.critedge.i34.i, %_ZN4base12_GLOBAL__N_121IteratorRangeToNumberINS0_31BaseHexIteratorRangeToIntTraitsIPKcEEE6InvokeES4_S4_Pi.exit.sink.split, %16, %31, %.critedge21.i, %69 - %.1.i = phi i1 [ %.not38.i11, %31 ], [ %.042.i, %69 ], [ false, %16 ], [ false, %.critedge21.i ], [ false, %_ZN4base12_GLOBAL__N_121IteratorRangeToNumberINS0_31BaseHexIteratorRangeToIntTraitsIPKcEEE6InvokeES4_S4_Pi.exit.sink.split ], [ %.042.i, %.critedge.i34.i ], [ false, %77 ], [ %.not38.i11, %.critedge.i.i ], [ false, %39 ] + %.1.i = phi i1 [ %.not38.i11, %16 ], [ %.not36.i11, %31 ], [ %.042.i, %.critedge21.i ], [ %.041.i, %69 ], [ %.040.i.ph, %_ZN4base12_GLOBAL__N_121IteratorRangeToNumberINS0_31BaseHexIteratorRangeToIntTraitsIPKcEEE6InvokeES4_S4_Pi.exit.sink.split ], [ %.042.i, %.critedge.i34.i ], [ %.041.i, %77 ], [ %.not38.i11, %.critedge.i.i ], [ %.not36.i11, %39 ] + %.022.i.pn.i = phi i1 [ false, %16 ], [ true, %31 ], [ false, %.critedge21.i ], [ true, %69 ], [ false, %_ZN4base12_GLOBAL__N_121IteratorRangeToNumberINS0_31BaseHexIteratorRangeToIntTraitsIPKcEEE6InvokeES4_S4_Pi.exit.sink.split ], [ false, %77 ], [ true, %.critedge.i34.i ], [ false, %39 ], [ true, %.critedge.i.i ] + %.1.i = and i1 %.040.i, %.022.i.pn.i ret i1 %.1.i } @@ -2749,11 +2764,14 @@ define noundef zeroext i1 @_ZN4base16HexStringToInt64ERKNS_16BasicStringPieceINS _ZN4base12_GLOBAL__N_121IteratorRangeToNumberINS0_33BaseHexIteratorRangeToInt64TraitsIPKcEEE6InvokeES4_S4_Pl.exit.sink.split: ; preds = %.lr.ph, %44, %46, %82 %.sink = phi i64 [ 9223372036854775807, %82 ], [ -9223372036854775808, %46 ], [ -9223372036854775808, %44 ], [ 0, %.lr.ph ] + %.040.i.ph = phi i1 [ %.041.i, %82 ], [ %.not36.i11, %46 ], [ %.not36.i11, %44 ], [ false, %.lr.ph ] store i64 %.sink, ptr %1, align 8, !tbaa !18 br label %_ZN4base12_GLOBAL__N_121IteratorRangeToNumberINS0_33BaseHexIteratorRangeToInt64TraitsIPKcEEE6InvokeES4_S4_Pl.exit _ZN4base12_GLOBAL__N_121IteratorRangeToNumberINS0_33BaseHexIteratorRangeToInt64TraitsIPKcEEE6InvokeES4_S4_Pl.exit: ; preds = %39, %.critedge.i.i, %77, %.critedge.i34.i, %_ZN4base12_GLOBAL__N_121IteratorRangeToNumberINS0_33BaseHexIteratorRangeToInt64TraitsIPKcEEE6InvokeES4_S4_Pl.exit.sink.split, %16, %31, %.critedge21.i, %69 - %.1.i = phi i1 [ %.not38.i11, %31 ], [ %.042.i, %69 ], [ false, %16 ], [ false, %.critedge21.i ], [ false, %_ZN4base12_GLOBAL__N_121IteratorRangeToNumberINS0_33BaseHexIteratorRangeToInt64TraitsIPKcEEE6InvokeES4_S4_Pl.exit.sink.split ], [ %.042.i, %.critedge.i34.i ], [ false, %77 ], [ %.not38.i11, %.critedge.i.i ], [ false, %39 ] + %.1.i = phi i1 [ %.not38.i11, %16 ], [ %.not36.i11, %31 ], [ %.042.i, %.critedge21.i ], [ %.041.i, %69 ], [ %.040.i.ph, %_ZN4base12_GLOBAL__N_121IteratorRangeToNumberINS0_33BaseHexIteratorRangeToInt64TraitsIPKcEEE6InvokeES4_S4_Pl.exit.sink.split ], [ %.042.i, %.critedge.i34.i ], [ %.041.i, %77 ], [ %.not38.i11, %.critedge.i.i ], [ %.not36.i11, %39 ] + %.022.i.pn.i = phi i1 [ false, %16 ], [ true, %31 ], [ false, %.critedge21.i ], [ true, %69 ], [ false, %_ZN4base12_GLOBAL__N_121IteratorRangeToNumberINS0_33BaseHexIteratorRangeToInt64TraitsIPKcEEE6InvokeES4_S4_Pl.exit.sink.split ], [ false, %77 ], [ true, %.critedge.i34.i ], [ false, %39 ], [ true, %.critedge.i.i ] + %.1.i = and i1 %.040.i, %.022.i.pn.i ret i1 %.1.i } diff --git a/bench/libzmq/optimized/stream_engine_base.ll b/bench/libzmq/optimized/stream_engine_base.ll index d422808c352..01b3ec0e4ac 100644 --- a/bench/libzmq/optimized/stream_engine_base.ll +++ b/bench/libzmq/optimized/stream_engine_base.ll @@ -3577,7 +3577,7 @@ define void @_ZN3zmq20stream_engine_base_t15mechanism_readyEv(ptr noundef nonnul %30 = getelementptr inbounds nuw i8, ptr %29, i64 232 %31 = load ptr, ptr %30, align 8 %32 = call noundef i32 %31(ptr noundef nonnull align 8 dereferenceable(1624) %28, ptr noundef nonnull %2) - switch i32 %32, label %._crit_edge47 [ + switch i32 %32, label %._crit_edge53 [ i32 -1, label %33 i32 0, label %44 ], !prof !155 @@ -3593,7 +3593,7 @@ define void @_ZN3zmq20stream_engine_base_t15mechanism_readyEv(ptr noundef nonnul br i1 %36, label %.critedge, label %37 37: ; preds = %._crit_edge47, %33 - %.pre-phi = phi ptr [ %.pre, %._crit_edge47 ], [ %34, %33 ] + %.pre-phi = phi ptr [ %.pre, %._crit_edge53 ], [ %34, %33 ] %38 = load i32, ptr %.pre-phi, align 4, !tbaa !19 %39 = call ptr @strerror(i32 noundef %38) #26 %40 = load ptr, ptr @stderr, align 8, !tbaa !93 @@ -3653,7 +3653,7 @@ define void @_ZN3zmq20stream_engine_base_t15mechanism_readyEv(ptr noundef nonnul call void @_ZN3zmq9zmq_abortEPKc(ptr noundef %65) br label %.thread -.thread: ; preds = %51, %63 +.thread: ; preds = %63, %51 call void @llvm.lifetime.end.p0(ptr nonnull %3) br label %70 diff --git a/bench/llvm/optimized/CGPointerAuth.ll b/bench/llvm/optimized/CGPointerAuth.ll index 339080c8be0..2cd621b0c1d 100644 --- a/bench/llvm/optimized/CGPointerAuth.ll +++ b/bench/llvm/optimized/CGPointerAuth.ll @@ -1749,8 +1749,8 @@ define dso_local range(i64 0, 8589934592) i64 @_ZN5clang7CodeGen13CodeGenModule3 %11 = tail call noundef ptr @_ZN5clang10ASTContext27baseForVTableAuthenticationEPKNS_13CXXRecordDeclE(ptr noundef nonnull align 8 dereferenceable(23216) %10, ptr noundef %1) #11 %12 = lshr i32 %6, 9 %13 = and i32 %12, 3 - %14 = trunc i32 %6 to i8 - %15 = lshr i8 %14, 2 + %14 = and i32 %6, 4 + %15 = icmp ne i32 %14, 0 %16 = lshr i32 %6, 7 %17 = and i32 %16, 3 %18 = load ptr, ptr %9, align 8, !tbaa !6 @@ -1844,8 +1844,7 @@ _ZNK5clang4Decl7getAttrINS_31VTablePointerAuthenticationAttrEEEPT_v.exit: ; pred %.2 = phi i32 [ 2, %59 ], [ 3, %60 ], [ %13, %_ZNK5clang4Decl7getAttrINS_31VTablePointerAuthenticationAttrEEEPT_v.exit ] %.not42 = icmp eq i32 %54, 0 %62 = icmp eq i32 %54, 2 - %63 = zext i1 %62 to i8 - %.230 = select i1 %.not42, i8 %15, i8 %63 + %spec.select = select i1 %.not42, i1 %15, i1 %62 switch i32 %56, label %.fold.split [ i32 2, label %_ZNK5clang4Decl7getAttrINS_31VTablePointerAuthenticationAttrEEEPT_v.exit.thread i32 3, label %64 @@ -1864,21 +1863,20 @@ _ZNK5clang4Decl7getAttrINS_31VTablePointerAuthenticationAttrEEEPT_v.exit: ; pred br label %_ZNK5clang4Decl7getAttrINS_31VTablePointerAuthenticationAttrEEEPT_v.exit.thread _ZNK5clang4Decl7getAttrINS_31VTablePointerAuthenticationAttrEEEPT_v.exit.thread: ; preds = %39, %61, %.fold.split, %64, %67, %28, %_ZN5clangneENS_22specific_attr_iteratorINS_31VTablePointerAuthenticationAttrEN4llvm11SmallVectorIPNS_4AttrELj4EEEEES7_.exit.i.i, %24 - %.4 = phi i32 [ %.032, %24 ], [ %.032, %_ZN5clangneENS_22specific_attr_iteratorINS_31VTablePointerAuthenticationAttrEN4llvm11SmallVectorIPNS_4AttrELj4EEEEES7_.exit.i.i ], [ %.032, %28 ], [ %.032, %.fold.split ], [ %20, %61 ], [ 0, %67 ], [ %66, %64 ], [ %.032, %39 ] - %.331 = phi i8 [ %15, %24 ], [ %15, %_ZN5clangneENS_22specific_attr_iteratorINS_31VTablePointerAuthenticationAttrEN4llvm11SmallVectorIPNS_4AttrELj4EEEEES7_.exit.i.i ], [ %15, %28 ], [ %.230, %.fold.split ], [ %.230, %61 ], [ %.230, %67 ], [ %.230, %64 ], [ %15, %39 ] - %.3 = phi i32 [ %13, %24 ], [ %13, %_ZN5clangneENS_22specific_attr_iteratorINS_31VTablePointerAuthenticationAttrEN4llvm11SmallVectorIPNS_4AttrELj4EEEEES7_.exit.i.i ], [ %13, %28 ], [ %.2, %.fold.split ], [ %.2, %61 ], [ %.2, %67 ], [ %.2, %64 ], [ %13, %39 ] - %68 = trunc i8 %.331 to i1 - %69 = select i1 %68, i32 3, i32 1 - %70 = shl nuw nsw i32 %.3, 6 - %71 = or disjoint i32 %69, %70 - %72 = shl i32 %.4, 16 - %73 = or i32 %72, %71 - %74 = or disjoint i32 %73, 12 - %75 = zext i32 %74 to i64 + %.4 = phi i32 [ %.032, %24 ], [ %.032, %_ZN5clangneENS_22specific_attr_iteratorINS_31VTablePointerAuthenticationAttrEN4llvm11SmallVectorIPNS_4AttrELj4EEEEES7_.exit.i.i ], [ %.032, %28 ], [ %.032, %.fold.split ], [ %20, %61 ], [ 0, %66 ], [ %65, %63 ], [ %.032, %39 ] + %.331 = phi i1 [ %15, %24 ], [ %15, %_ZN5clangneENS_22specific_attr_iteratorINS_31VTablePointerAuthenticationAttrEN4llvm11SmallVectorIPNS_4AttrELj4EEEEES7_.exit.i.i ], [ %15, %28 ], [ %spec.select, %.fold.split ], [ %spec.select, %61 ], [ %spec.select, %66 ], [ %spec.select, %63 ], [ %15, %39 ] + %.3 = phi i32 [ %13, %24 ], [ %13, %_ZN5clangneENS_22specific_attr_iteratorINS_31VTablePointerAuthenticationAttrEN4llvm11SmallVectorIPNS_4AttrELj4EEEEES7_.exit.i.i ], [ %13, %28 ], [ %.2, %.fold.split ], [ %.2, %61 ], [ %.2, %66 ], [ %.2, %63 ], [ %13, %39 ] + %67 = select i1 %.331, i32 3, i32 1 + %68 = shl nuw nsw i32 %.3, 6 + %69 = or disjoint i32 %68, %67 + %70 = shl i32 %.4, 16 + %71 = or i32 %70, %69 + %73 = or disjoint i32 %71, 12 + %73 = zext i32 %73 to i64 br label %.critedge .critedge: ; preds = %_ZNK5clang4Decl7getAttrINS_31VTablePointerAuthenticationAttrEEEPT_v.exit, %2, %_ZNK5clang4Decl7getAttrINS_31VTablePointerAuthenticationAttrEEEPT_v.exit.thread - %.sroa.049.0 = phi i64 [ %75, %_ZNK5clang4Decl7getAttrINS_31VTablePointerAuthenticationAttrEEEPT_v.exit.thread ], [ 0, %2 ], [ 0, %_ZNK5clang4Decl7getAttrINS_31VTablePointerAuthenticationAttrEEEPT_v.exit ] + %.sroa.049.0 = phi i64 [ %73, %_ZNK5clang4Decl7getAttrINS_31VTablePointerAuthenticationAttrEEEPT_v.exit.thread ], [ 0, %2 ], [ 0, %_ZNK5clang4Decl7getAttrINS_31VTablePointerAuthenticationAttrEEEPT_v.exit ] %.sroa.2.0 = phi i64 [ 4294967296, %_ZNK5clang4Decl7getAttrINS_31VTablePointerAuthenticationAttrEEEPT_v.exit.thread ], [ 0, %2 ], [ 0, %_ZNK5clang4Decl7getAttrINS_31VTablePointerAuthenticationAttrEEEPT_v.exit ] %.sroa.049.0.insert.insert = or disjoint i64 %.sroa.2.0, %.sroa.049.0 ret i64 %.sroa.049.0.insert.insert diff --git a/bench/llvm/optimized/LegalizeTypes.ll b/bench/llvm/optimized/LegalizeTypes.ll index 9a5dff74f06..01ede497f7d 100644 --- a/bench/llvm/optimized/LegalizeTypes.ll +++ b/bench/llvm/optimized/LegalizeTypes.ll @@ -6650,20 +6650,19 @@ _ZNK4llvm3EVT13getSizeInBitsEv.exit: ; preds = %34, %38 br i1 %61, label %62, label %_ZN4llvm3MVT12getIntegerVTEj.exit 62: ; preds = %_ZNK4llvm3EVT13getSizeInBitsEv.exit - %63 = lshr i64 %56, 1 - %64 = or i64 %63, %56 - %65 = lshr i64 %64, 2 - %66 = or i64 %65, %64 - %67 = lshr i64 %66, 4 - %68 = or i64 %67, %66 - %69 = trunc nuw nsw i64 %68 to i32 - %70 = add nuw nsw i32 %69, 1 - %71 = call range(i32 1, 33) i32 @llvm.ctpop.i32(i32 %70) - %72 = icmp eq i32 %71, 1 - br i1 %72, label %.split.i, label %_ZN4llvm3MVT12getIntegerVTEj.exit + %63 = lshr i32 %44, 1 + %64 = or i32 %63, %44 + %65 = lshr i32 %64, 2 + %66 = lshr i32 %64, 4 + %67 = or i32 %65, %66 + %68 = or i32 %67, %64 + %69 = add nuw nsw i32 %68, 1 + %70 = call range(i32 1, 31) i32 @llvm.ctpop.i32(i32 %69) + %71 = icmp eq i32 %70, 1 + br i1 %71, label %.split.i, label %_ZN4llvm3MVT12getIntegerVTEj.exit .split.i: ; preds = %62 - %73 = call range(i32 0, 33) i32 @llvm.cttz.i32(i32 %70, i1 true) + %73 = call range(i32 0, 33) i32 @llvm.cttz.i32(i32 %69, i1 true) %switch.idx.cast.i = trunc nuw nsw i32 %73 to i16 %switch.offset.i = add nuw nsw i16 %switch.idx.cast.i, 2 br label %_ZN4llvm3MVT12getIntegerVTEj.exit @@ -6699,7 +6698,7 @@ _ZN4llvm3MVT12getIntegerVTEj.exit: ; preds = %.split.i, %62, %_ZN br label %_ZNK4llvm3EVT13getSizeInBitsEv.exit71 _ZNK4llvm3EVT13getSizeInBitsEv.exit71: ; preds = %77, %81 - %.pn.i70 = phi { i64, i8 } [ %.fca.1.insert.i.i69, %77 ], [ %82, %81 ] + %.pn.i70 = phi { i64, i8 } [ %.fca.1.insert.i.i69, %76 ], [ %82, %80 ] %.fca.0.extract14 = extractvalue { i64, i8 } %.pn.i70, 0 %.fca.1.extract15 = extractvalue { i64, i8 } %.pn.i70, 1 store i64 %.fca.0.extract14, ptr %17, align 8 diff --git a/bench/llvm/optimized/LoopStrengthReduce.ll b/bench/llvm/optimized/LoopStrengthReduce.ll index b23c5a33e17..d4958df2a5a 100644 --- a/bench/llvm/optimized/LoopStrengthReduce.ll +++ b/bench/llvm/optimized/LoopStrengthReduce.ll @@ -56414,16 +56414,20 @@ _ZN4llvm8dyn_castINS_12SCEVCastExprEKNS_4SCEVEEEDcPT0_.exit: ; preds = %147, %14 br label %.critedge 150: ; preds = %147 - %151 = icmp ne i16 %4, 5 - %.not57.not = or i1 %.not89, %151 - br i1 %.not57.not, label %.critedge, label %.thread86 + %151 = icmp eq i16 %4, 5 + br i1 %151, label %152, label %154 .thread86: ; preds = %150 %152 = tail call fastcc noundef zeroext i1 @_ZN12_GLOBAL__N_119SCEVDbgValueBuilder18pushArithmeticExprEPKN4llvm19SCEVCommutativeExprEm(ptr noundef nonnull align 8 dereferenceable(96) %0, ptr noundef %1, i64 noundef 34) - br label %.critedge + br label %154 + +154: ; preds = %150, %152 + %.637 = phi i1 [ %153, %152 ], [ true, %150 ] + %155 = and i1 %151, %.637 + br label %_ZN12_GLOBAL__N_119SCEVDbgValueBuilder9pushConstEPKN4llvm12SCEVConstantE.exit -.critedge: ; preds = %120, %95, %.thread86, %92, %_ZN12_GLOBAL__N_119SCEVDbgValueBuilder12pushOperatorEm.exit, %_ZN4llvm8dyn_castINS_12SCEVCastExprEKNS_4SCEVEEEDcPT0_.exit, %_ZNK4llvm5APInt18getSignificantBitsEv.exit.i, %_ZN4llvm23SmallVectorTemplateBaseImLb1EE9push_backEm.exit6.i, %150, %89 - %.11 = phi i1 [ false, %89 ], [ false, %150 ], [ %152, %.thread86 ], [ %149, %_ZN4llvm8dyn_castINS_12SCEVCastExprEKNS_4SCEVEEEDcPT0_.exit ], [ %132, %_ZN12_GLOBAL__N_119SCEVDbgValueBuilder12pushOperatorEm.exit ], [ true, %92 ], [ false, %_ZNK4llvm5APInt18getSignificantBitsEv.exit.i ], [ true, %_ZN4llvm23SmallVectorTemplateBaseImLb1EE9push_backEm.exit6.i ], [ true, %95 ], [ %107, %120 ] +.critedge: ; preds = %120, %95, %89, %92, %_ZN12_GLOBAL__N_119SCEVDbgValueBuilder12pushOperatorEm.exit, %154, %_ZN4llvm8dyn_castINS_12SCEVCastExprEKNS_4SCEVEEEDcPT0_.exit, %_ZN4llvm23SmallVectorTemplateBaseImLb1EE9push_backEm.exit6.i, %_ZNK4llvm5APInt18getSignificantBitsEv.exit.i + %.11 = phi i1 [ false, %_ZNK4llvm5APInt18getSignificantBitsEv.exit.i ], [ true, %_ZN4llvm23SmallVectorTemplateBaseImLb1EE9push_backEm.exit6.i ], [ false, %89 ], [ true, %92 ], [ %132, %_ZN12_GLOBAL__N_119SCEVDbgValueBuilder12pushOperatorEm.exit ], [ %149, %_ZN4llvm8dyn_castINS_12SCEVCastExprEKNS_4SCEVEEEDcPT0_.exit ], [ %155, %154 ], [ true, %95 ], [ %107, %120 ] ret i1 %.11 } diff --git a/bench/llvm/optimized/ToolChain.ll b/bench/llvm/optimized/ToolChain.ll index 1f7581c5dcd..c3ed0cb8965 100644 --- a/bench/llvm/optimized/ToolChain.ll +++ b/bench/llvm/optimized/ToolChain.ll @@ -17812,11 +17812,11 @@ _ZNK4llvm3opt7ArgList13hasArgNoClaimIJN5clang6driver7options2IDEEEEbDpT_.exit.th %22 = load ptr, ptr %20, align 8, !tbaa !606 %23 = getelementptr inbounds nuw i8, ptr %22, i64 40 %24 = load i32, ptr %23, align 8, !tbaa !607 - switch i32 %24, label %_ZN4llvmneENS_9StringRefES0_.exit.thread40.fold.split [ - i32 1111, label %_ZN4llvmneENS_9StringRefES0_.exit.thread40 - i32 1421, label %_ZN4llvmneENS_9StringRefES0_.exit.thread40 - i32 782, label %25 - ] + %switch.selectcmp.case1 = icmp ne i32 %24, 1111 + %switch.selectcmp.case2 = icmp ne i32 %23, 1421 + %switch.selectcmp.not = and i1 %switch.selectcmp.case1, %switch.selectcmp.case2 + %24 = icmp eq i32 %23, 782 + br i1 %24, label %25, label %_ZN4llvmneENS_9StringRefES0_.exit.thread40 25: ; preds = %21 %26 = getelementptr inbounds nuw i8, ptr %20, i64 48 @@ -17846,11 +17846,8 @@ _ZN4llvmneENS_9StringRefES0_.exit24: ; preds = %_ZN4llvm9StringRefC _ZN4llvmneENS_9StringRefES0_.exit24.thread: ; preds = %_ZN4llvmneENS_9StringRefES0_.exit, %25, %_ZN4llvm9StringRefC2EPKc.exit, %_ZN4llvmneENS_9StringRefES0_.exit24 br label %_ZN4llvmneENS_9StringRefES0_.exit.thread40 -_ZN4llvmneENS_9StringRefES0_.exit.thread40.fold.split: ; preds = %21 - br label %_ZN4llvmneENS_9StringRefES0_.exit.thread40 - -_ZN4llvmneENS_9StringRefES0_.exit.thread40: ; preds = %21, %21, %_ZN4llvmneENS_9StringRefES0_.exit.thread40.fold.split, %19, %_ZN4llvmneENS_9StringRefES0_.exit24.thread, %_ZN4llvmneENS_9StringRefES0_.exit24, %_ZN4llvmneENS_9StringRefES0_.exit, %_ZNK4llvm3opt7ArgList13hasArgNoClaimIJN5clang6driver7options2IDEEEEbDpT_.exit.thread, %_ZNK4llvm3opt7ArgList13hasArgNoClaimIJN5clang6driver7options2IDEEEEbDpT_.exit - %.017 = phi i1 [ true, %_ZNK4llvm3opt7ArgList13hasArgNoClaimIJN5clang6driver7options2IDEEEEbDpT_.exit.thread ], [ false, %_ZNK4llvm3opt7ArgList13hasArgNoClaimIJN5clang6driver7options2IDEEEEbDpT_.exit ], [ false, %19 ], [ true, %_ZN4llvmneENS_9StringRefES0_.exit ], [ false, %_ZN4llvmneENS_9StringRefES0_.exit24.thread ], [ true, %_ZN4llvmneENS_9StringRefES0_.exit24 ], [ false, %21 ], [ false, %21 ], [ true, %_ZN4llvmneENS_9StringRefES0_.exit.thread40.fold.split ] +_ZN4llvmneENS_9StringRefES0_.exit.thread40.fold.split: ; preds = %_ZN4llvmneENS_9StringRefES0_.exit, %_ZN4llvmneENS_9StringRefES0_.exit24, %_ZN4llvmneENS_9StringRefES0_.exit2421, %19, %21, %_ZNK4llvm3opt7ArgList13hasArgNoClaimIJN5clang6driver7options2IDEEEEbDpT_.exit21, %_ZNK4llvm3opt7ArgList13hasArgNoClaimIJN5clang6driver7options2IDEEEEbDpT_.exit + %.017 = phi i1 [ true, %_ZNK4llvm3opt7ArgList13hasArgNoClaimIJN5clang6driver7options2IDEEEEbDpT_.exit.thread ], [ false, %_ZNK4llvm3opt7ArgList13hasArgNoClaimIJN5clang6driver7options2IDEEEEbDpT_.exit ], [ %switch.selectcmp.not, %.thread ], [ false, %19 ], [ %switch.selectcmp.not, %_ZN4llvmneENS_9StringRefES0_.exit ], [ false, %_ZN4llvmneENS_9StringRefES0_.exit24.thread ], [ %switch.selectcmp.not, %_ZN4llvmneENS_9StringRefES0_.exit24 ] %30 = call noundef zeroext i1 @_ZNK4llvm3opt7ArgList7hasFlagENS0_12OptSpecifierES2_b(ptr noundef nonnull align 8 dereferenceable(176) %1, i32 2267, i32 2512, i1 noundef zeroext %.017) #28 br i1 %30, label %31, label %72 diff --git a/bench/llvm/optimized/ValueTracking.ll b/bench/llvm/optimized/ValueTracking.ll index 6785c5e3ab5..b7f1de105a3 100644 --- a/bench/llvm/optimized/ValueTracking.ll +++ b/bench/llvm/optimized/ValueTracking.ll @@ -39334,7 +39334,7 @@ _ZN4llvm12PatternMatch5matchINS_5ValueENS0_14cstval_pred_tyINS0_14is_any_zero_fp br i1 %brmerge, label %91, label %.critedge113 91: ; preds = %.thread299, %89, %90, %84 - %.0107 = phi i8 [ 0, %84 ], [ 0, %.thread299 ], [ 1, %89 ], [ 0, %90 ] + %.0107 = phi i1 [ false, %84 ], [ false, %.thread299 ], [ true, %89 ], [ false, %90 ] %.0104 = phi i32 [ 0, %84 ], [ 3, %.thread299 ], [ %.mux, %89 ], [ %.mux119, %90 ] %92 = icmp eq ptr %4, %.0294 %93 = icmp eq ptr %5, %.0291 @@ -39347,13 +39347,13 @@ _ZN4llvm12PatternMatch5matchINS_5ValueENS0_14cstval_pred_tyINS0_14is_any_zero_fp %97 = icmp eq i32 %.0104, 2 %spec.store.select = select i1 %97, i32 1, i32 %.0104 %.4 = select i1 %96, i32 2, i32 %spec.store.select - %98 = xor i8 %.0107, 1 + %98 = xor i1 %.0107, true br label %99 99: ; preds = %94, %91 %.1295 = phi ptr [ %.0291, %94 ], [ %.0294, %91 ] %.2293 = phi ptr [ %.0294, %94 ], [ %.0291, %91 ] - %.3110 = phi i8 [ %98, %94 ], [ %.0107, %91 ] + %.3110 = phi i1 [ %98, %94 ], [ %.0107, %91 ] %.3 = phi i32 [ %.4, %94 ], [ %.0104, %91 ] %.0 = phi i32 [ %95, %94 ], [ %0, %91 ] %100 = icmp eq ptr %4, %.2293 @@ -39402,7 +39402,8 @@ _ZN4llvm12PatternMatch5matchINS_5ValueENS0_14cstval_pred_tyINS0_14is_any_zero_fp _ZN4llvm16getSelectPatternENS_7CmpInst9PredicateENS_24SelectPatternNaNBehaviorEb.exit: ; preds = %102, %103, %104, %105, %106, %107, %108 %.sroa.05.0.i = phi i64 [ 4, %103 ], [ 3, %104 ], [ 2, %105 ], [ 1, %106 ], [ 6, %107 ], [ 5, %108 ], [ 0, %102 ] %.sroa.8.0.i = phi i32 [ 0, %103 ], [ 0, %104 ], [ 0, %105 ], [ 0, %106 ], [ %.3, %107 ], [ %.3, %108 ], [ 0, %102 ] - %.sroa.15.0.shrunk.i = phi i8 [ 0, %103 ], [ 0, %104 ], [ 0, %105 ], [ 0, %106 ], [ %.3110, %107 ], [ %.3110, %108 ], [ 0, %102 ] + %.sroa.15.0.shrunk.i = phi i1 [ false, %103 ], [ false, %104 ], [ false, %105 ], [ false, %106 ], [ %.3110, %107 ], [ %.3110, %108 ], [ false, %102 ] + %.sroa.15.0.i = zext i1 %.sroa.15.0.shrunk.i to i8 %.sroa.8.0.insert.ext.i = zext nneg i32 %.sroa.8.0.i to i64 %.sroa.8.0.insert.shift.i = shl nuw nsw i64 %.sroa.8.0.insert.ext.i, 32 %.sroa.05.0.insert.insert.i = or disjoint i64 %.sroa.8.0.insert.shift.i, %.sroa.05.0.i @@ -40676,7 +40677,7 @@ switch.lookup477: ; preds = %428 .critedge113: ; preds = %430, %428, %switch.lookup477, %switch.lookup, %442, %444, %434, %477, %_ZL19matchMinMaxOfMinMaxN4llvm7CmpInst9PredicateEPNS_5ValueES3_S3_S3_j.exit, %_ZL10matchClampN4llvm7CmpInst9PredicateEPNS_5ValueES3_S3_S3_.exit.thread321, %.thread313, %90, %89, %478, %483, %_ZL19matchFastFloatClampN4llvm7CmpInst9PredicateEPNS_5ValueES3_S3_S3_RS3_S4_.exit, %_ZN4llvm16getSelectPatternENS_7CmpInst9PredicateENS_24SelectPatternNaNBehaviorEb.exit %.sroa.093.3 = phi i64 [ %.sroa.05.0.insert.insert.i, %_ZN4llvm16getSelectPatternENS_7CmpInst9PredicateENS_24SelectPatternNaNBehaviorEb.exit ], [ %.sroa.022.0.insert.insert.i, %_ZL19matchFastFloatClampN4llvm7CmpInst9PredicateEPNS_5ValueES3_S3_S3_RS3_S4_.exit ], [ 0, %483 ], [ 0, %478 ], [ 0, %89 ], [ 0, %90 ], [ %.sroa.093.4.ph, %.thread313 ], [ %413, %_ZL19matchMinMaxOfMinMaxN4llvm7CmpInst9PredicateEPNS_5ValueES3_S3_S3_j.exit ], [ %.sroa.038.1.ph.i.ph, %_ZL10matchClampN4llvm7CmpInst9PredicateEPNS_5ValueES3_S3_S3_.exit.thread321 ], [ %.sroa.079.2.i, %477 ], [ 0, %434 ], [ 0, %444 ], [ 0, %442 ], [ %switch.load, %switch.lookup ], [ %switch.load479, %switch.lookup477 ], [ 0, %428 ], [ 0, %430 ] %.sroa.13.3 = phi i64 [ %.sroa.8.0.insert.shift.i, %_ZN4llvm16getSelectPatternENS_7CmpInst9PredicateENS_24SelectPatternNaNBehaviorEb.exit ], [ %.sroa.13.0.extract.shift, %_ZL19matchFastFloatClampN4llvm7CmpInst9PredicateEPNS_5ValueES3_S3_S3_RS3_S4_.exit ], [ 0, %483 ], [ 0, %478 ], [ 0, %89 ], [ 0, %90 ], [ 0, %.thread313 ], [ 0, %_ZL19matchMinMaxOfMinMaxN4llvm7CmpInst9PredicateEPNS_5ValueES3_S3_S3_j.exit ], [ 0, %_ZL10matchClampN4llvm7CmpInst9PredicateEPNS_5ValueES3_S3_S3_.exit.thread321 ], [ 0, %477 ], [ 0, %434 ], [ 0, %444 ], [ 0, %442 ], [ 0, %switch.lookup ], [ 0, %switch.lookup477 ], [ 0, %428 ], [ 0, %430 ] - %.sroa.22.3 = phi i8 [ %.sroa.15.0.shrunk.i, %_ZN4llvm16getSelectPatternENS_7CmpInst9PredicateENS_24SelectPatternNaNBehaviorEb.exit ], [ 0, %_ZL19matchFastFloatClampN4llvm7CmpInst9PredicateEPNS_5ValueES3_S3_S3_RS3_S4_.exit ], [ 0, %483 ], [ 0, %478 ], [ 0, %89 ], [ 0, %90 ], [ 0, %.thread313 ], [ 0, %_ZL19matchMinMaxOfMinMaxN4llvm7CmpInst9PredicateEPNS_5ValueES3_S3_S3_j.exit ], [ 0, %_ZL10matchClampN4llvm7CmpInst9PredicateEPNS_5ValueES3_S3_S3_.exit.thread321 ], [ 0, %477 ], [ 0, %434 ], [ 0, %444 ], [ 0, %442 ], [ 0, %switch.lookup ], [ 0, %switch.lookup477 ], [ 0, %428 ], [ 0, %430 ] + %.sroa.22.3 = phi i8 [ %.sroa.15.0.i, %_ZN4llvm16getSelectPatternENS_7CmpInst9PredicateENS_24SelectPatternNaNBehaviorEb.exit ], [ 0, %_ZL19matchFastFloatClampN4llvm7CmpInst9PredicateEPNS_5ValueES3_S3_S3_RS3_S4_.exit ], [ 0, %483 ], [ 0, %478 ], [ 0, %89 ], [ 0, %90 ], [ 0, %.thread313 ], [ 0, %_ZL19matchMinMaxOfMinMaxN4llvm7CmpInst9PredicateEPNS_5ValueES3_S3_S3_j.exit ], [ 0, %_ZL10matchClampN4llvm7CmpInst9PredicateEPNS_5ValueES3_S3_S3_.exit.thread321 ], [ 0, %477 ], [ 0, %434 ], [ 0, %444 ], [ 0, %442 ], [ 0, %switch.lookup ], [ 0, %switch.lookup477 ], [ 0, %428 ], [ 0, %430 ] %544 = and i64 %.sroa.093.3, 4294967295 %545 = or disjoint i64 %.sroa.13.3, %544 br label %546 diff --git a/bench/logos-rs/optimized/hwk26id9epou4ag.ll b/bench/logos-rs/optimized/hwk26id9epou4ag.ll index 29f5a7f3961..28d47407de9 100644 --- a/bench/logos-rs/optimized/hwk26id9epou4ag.ll +++ b/bench/logos-rs/optimized/hwk26id9epou4ag.ll @@ -145,8 +145,8 @@ define void @_ZN4core4iter8adapters11try_process17h30c3f45d9218bb3aE(ptr sret([2 to label %13 unwind label %11 8: ; preds = %.thread, %11 - %.pn = phi { ptr, i32 } [ %12, %11 ], [ %16, %.thread ] - %.sroa.03.1 = phi i1 [ %.sroa.03.0, %11 ], [ true, %.thread ] + %.pn = phi { ptr, i32 } [ %12, %11 ], [ %16, %.thread10 ] + %.sroa.03.1 = phi i1 [ %.sroa.03.0, %11 ], [ true, %.thread10 ] %9 = load ptr, ptr %7, align 8 %10 = icmp ne ptr %9, null %or.cond = and i1 %.sroa.03.1, %10 @@ -190,7 +190,7 @@ define void @_ZN4core4iter8adapters11try_process17h30c3f45d9218bb3aE(ptr sret([2 %23 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr67drop_in_place$LT$alloc..vec..Vec$LT$logos_codegen..mir..Mir$GT$$GT$17hc20cac6ab2edaf04E"(ptr nonnull align 8 %6) #6 - to label %.thread7 unwind label %24 + to label %.thread unwind label %24 24: ; preds = %26, %22 %25 = landingpad { ptr, i32 } @@ -204,7 +204,7 @@ define void @_ZN4core4iter8adapters11try_process17h30c3f45d9218bb3aE(ptr sret([2 26: ; preds = %8 invoke void @"_ZN4core3ptr104drop_in_place$LT$core..result..Result$LT$core..convert..Infallible$C$logos_codegen..error..Error$GT$$GT$17ha848683f0254fea1E"(ptr nonnull align 8 %7) #6 - to label %.thread7 unwind label %24 + to label %.thread unwind label %24 } ; Function Attrs: inlinehint mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(argmem: readwrite) uwtable diff --git a/bench/luau/optimized/Simplify.ll b/bench/luau/optimized/Simplify.ll index 05282f019d1..f37d13558bb 100644 --- a/bench/luau/optimized/Simplify.ll +++ b/bench/luau/optimized/Simplify.ll @@ -1749,8 +1749,8 @@ _ZN4Luau3getINS_13SingletonTypeEEEPKT_PKNS_4TypeE.exit.i: ; preds = %63 br i1 %73, label %74, label %.critedge97.i 74: ; preds = %._crit_edge.i, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit.i - %.153.i = phi i8 [ 1, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit.i ], [ 0, %._crit_edge.i ] - %.248.i = phi i8 [ 0, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit.i ], [ 1, %._crit_edge.i ] + %.153.i = phi i1 [ true, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit.i ], [ false, %._crit_edge.i ] + %.248.i = phi i1 [ false, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit.i ], [ true, %._crit_edge.i ] %75 = load i64, ptr %18, align 8, !tbaa !14 %76 = icmp eq i64 %75, 0 br i1 %76, label %_ZN4Luau12TypeIteratorINS_9UnionTypeEE7advanceEv.exit.i.i, label %.lr.ph.i.i.i @@ -1924,8 +1924,8 @@ _ZN4Luau3getINS_13SingletonTypeEEEPKT_PKNS_4TypeE.exit127.i: ; preds = %148 br i1 %158, label %159, label %.critedge97.i 159: ; preds = %._crit_edge171.i, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit125.i - %.355.i = phi i8 [ 1, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit125.i ], [ %.153.i, %._crit_edge171.i ] - %.551.i = phi i8 [ %.248.i, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit125.i ], [ 1, %._crit_edge171.i ] + %.355.i = phi i1 [ true, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit125.i ], [ %.153.i, %._crit_edge167.i ] + %.551.i = phi i1 [ %.248.i, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit125.i ], [ true, %._crit_edge167.i ] %160 = load i64, ptr %18, align 8, !tbaa !14 %161 = icmp eq i64 %160, 0 br i1 %161, label %_ZN4Luau12TypeIteratorINS_9UnionTypeEE7advanceEv.exit.i136.i, label %.lr.ph.i.i132.i @@ -2036,7 +2036,9 @@ _ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev.exit141.i: ; preds = %216, %213 %220 = shl i64 %219, 4 call void @_ZdlPvm(ptr noundef %217, i64 noundef %220) #24 call void @llvm.lifetime.end.p0(ptr nonnull %5) - br i1 %.0.i.i.i, label %223, label %.critedge97.i + %221 = and i1 %.355.i, %.551.i + %spec.select.i = and i1 %221, %.0.i.i.i + br label %.critedge97.i 221: ; preds = %_ZN4Luau12TypeIteratorINS_9UnionTypeEEppEv.exit139.i %222 = landingpad { ptr, i32 } @@ -2044,21 +2046,16 @@ _ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev.exit141.i: ; preds = %216, %213 call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %.loopexit.split-lp.i -223: ; preds = %_ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev.exit141.i - %224 = and i8 %.551.i, %.355.i - %225 = icmp ne i8 %224, 0 - br label %.critedge97.i - -.critedge97.i: ; preds = %223, %_ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev.exit141.i, %._crit_edge171.i, %_ZN4Luau3getINS_13SingletonTypeEEEPKT_PKNS_4TypeE.exit127.i, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit125.i, %148, %147, %_ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev.exit116.i, %._crit_edge.i, %_ZN4Luau3getINS_13SingletonTypeEEEPKT_PKNS_4TypeE.exit.i, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit.i, %63, %62, %_ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev.exit.i - %.1.i = phi i1 [ false, %_ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev.exit.i ], [ %225, %223 ], [ false, %_ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev.exit116.i ], [ false, %_ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev.exit141.i ], [ false, %._crit_edge.i ], [ false, %62 ], [ false, %._crit_edge171.i ], [ false, %147 ], [ false, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit.i ], [ false, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit125.i ], [ false, %63 ], [ false, %148 ], [ false, %_ZN4Luau3getINS_13SingletonTypeEEEPKT_PKNS_4TypeE.exit.i ], [ false, %_ZN4Luau3getINS_13SingletonTypeEEEPKT_PKNS_4TypeE.exit127.i ] - %226 = getelementptr inbounds nuw i8, ptr %2, i64 32 - %227 = load ptr, ptr %226, align 8, !tbaa !23 - %.not.i.i.i142.i = icmp eq ptr %227, null - br i1 %.not.i.i.i142.i, label %_ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev.exit143.i, label %228 +223: ; preds = %_ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev.exit141.i, %._crit_edge167.i, %_ZN4Luau3getINS_13SingletonTypeEEEPKT_PKNS_4TypeE.exit127.i, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit125.i, %148, %147, %_ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev.exit116.i, %._crit_edge.i, %_ZN4Luau3getINS_13SingletonTypeEEEPKT_PKNS_4TypeE.exit.i, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit.i, %63, %62, %_ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev.exit.i + %.1.i = phi i1 [ false, %_ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev.exit.i ], [ false, %_ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev.exit116.i ], [ false, %._crit_edge.i ], [ false, %._crit_edge167.i ], [ %spec.select.i, %_ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev.exit141.i ], [ false, %62 ], [ false, %147 ], [ false, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit.i ], [ false, %_ZN4Luau3getINS_13PrimitiveTypeEEEPKT_PKNS_4TypeE.exit125.i ], [ false, %63 ], [ false, %148 ], [ false, %_ZN4Luau3getINS_13SingletonTypeEEEPKT_PKNS_4TypeE.exit.i ], [ false, %_ZN4Luau3getINS_13SingletonTypeEEEPKT_PKNS_4TypeE.exit127.i ] + %224 = getelementptr inbounds nuw i8, ptr %2, i64 32 + %225 = load ptr, ptr %224, align 8, !tbaa !23 + %.not.i.i.i142.i = icmp eq ptr %225, null + br i1 %.not.i.i.i142.i, label %_ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev.exit143.i, label %226 228: ; preds = %.critedge97.i - call void @_ZdlPv(ptr noundef nonnull %227) #23 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %226, i8 0, i64 16, i1 false) + call void @_ZdlPv(ptr noundef nonnull %225) #23 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %224, i8 0, i64 16, i1 false) br label %_ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev.exit143.i _ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev.exit143.i: ; preds = %228, %.critedge97.i @@ -2071,7 +2068,7 @@ _ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev.exit143.i: ; preds = %228, %.critedge br label %_ZN4LuauL11isFalsyTypeEPKNS_4TypeE.exit .loopexit.split-lp.i: ; preds = %221, %135, %.loopexit.split-lp.loopexit.split-lp.i, %.loopexit.split-lp.loopexit.i, %.loopexit.i, %49 - %.pn92.pn.pn.i = phi { ptr, i32 } [ %50, %49 ], [ %222, %221 ], [ %136, %135 ], [ %lpad.loopexit.i, %.loopexit.i ], [ %lpad.loopexit168.i, %.loopexit.split-lp.loopexit.i ], [ %lpad.loopexit.split-lp169.i, %.loopexit.split-lp.loopexit.split-lp.i ] + %.pn92.pn.pn.i = phi { ptr, i32 } [ %50, %49 ], [ %222, %222 ], [ %136, %135 ], [ %lpad.loopexit.i, %.loopexit.i ], [ %lpad.loopexit168.i, %.loopexit.split-lp.loopexit.i ], [ %lpad.loopexit.split-lp169.i, %.loopexit.split-lp.loopexit.split-lp.i ] call void @_ZN4Luau12TypeIteratorINS_9UnionTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(72) %2) #23 call void @llvm.lifetime.end.p0(ptr nonnull %2) resume { ptr, i32 } %.pn92.pn.pn.i diff --git a/bench/mini-lsm-rs/optimized/3l74wehtlfae5jz1.ll b/bench/mini-lsm-rs/optimized/3l74wehtlfae5jz1.ll index 34973b58dc5..0b56a9c601d 100644 --- a/bench/mini-lsm-rs/optimized/3l74wehtlfae5jz1.ll +++ b/bench/mini-lsm-rs/optimized/3l74wehtlfae5jz1.ll @@ -3730,13 +3730,13 @@ define internal void @"_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.s 85: ; preds = %"_ZN4core3ptr129drop_in_place$LT$core..option..Option$LT$alloc..sync..Arc$LT$std..sync..mutex..Mutex$LT$alloc..vec..Vec$LT$u8$GT$$GT$$GT$$GT$$GT$17ha0062cb45dffaa63E.exit30.i", %76 %86 = getelementptr inbounds nuw i8, ptr %0, i64 24 invoke void @"_ZN4core3ptr210drop_in_place$LT$std..thread..Builder..spawn_unchecked_..MaybeDangling$LT$mini_lsm..compact..$LT$impl$u20$mini_lsm..lsm_storage..LsmStorageInner$GT$..spawn_compaction_thread..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h6b0ba02e51ab8c0fE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %86) #47 - to label %.thread67.i unwind label %69 + to label %.thread67.thread.i unwind label %69 "_ZN4core3ptr80drop_in_place$LT$alloc..sync..Arc$LT$std..thread..Packet$LT$$LP$$RP$$GT$$GT$$GT$17h61a9eec0087feb3dE.llvm.18239827628611957360.exit32.i": ; preds = %91, %.thread67.i resume { ptr, i32 } %.pn.pn44647287.i .thread67.i: ; preds = %85, %"_ZN4core3ptr129drop_in_place$LT$core..option..Option$LT$alloc..sync..Arc$LT$std..sync..mutex..Mutex$LT$alloc..vec..Vec$LT$u8$GT$$GT$$GT$$GT$$GT$17ha0062cb45dffaa63E.exit30.i", %76, %.thread67.thread.i, %8 - %.pn.pn44647287.i = phi { ptr, i32 } [ %48, %.thread67.thread.i ], [ %.pn.pn45.i, %85 ], [ %.pn.pn45.i, %76 ], [ %.pn.pn45.i, %"_ZN4core3ptr129drop_in_place$LT$core..option..Option$LT$alloc..sync..Arc$LT$std..sync..mutex..Mutex$LT$alloc..vec..Vec$LT$u8$GT$$GT$$GT$$GT$$GT$17ha0062cb45dffaa63E.exit30.i" ], [ %lpad.thr_comm.i, %8 ] + %.pn.pn44647287.i = phi { ptr, i32 } [ %48, %.thread67.thread88.i ], [ %lpad.thr_comm.i, %8 ], [ %.pn.pn45.i, %"_ZN4core3ptr129drop_in_place$LT$core..option..Option$LT$alloc..sync..Arc$LT$std..sync..mutex..Mutex$LT$alloc..vec..Vec$LT$u8$GT$$GT$$GT$$GT$$GT$17ha0062cb45dffaa63E.exit30.i" ], [ %.pn.pn45.i, %85 ], [ %.pn.pn45.i, %76 ] %87 = getelementptr inbounds nuw i8, ptr %0, i64 8 call void @llvm.experimental.noalias.scope.decl(metadata !927) call void @llvm.experimental.noalias.scope.decl(metadata !930) @@ -3981,13 +3981,13 @@ define internal void @"_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.s 85: ; preds = %"_ZN4core3ptr129drop_in_place$LT$core..option..Option$LT$alloc..sync..Arc$LT$std..sync..mutex..Mutex$LT$alloc..vec..Vec$LT$u8$GT$$GT$$GT$$GT$$GT$17ha0062cb45dffaa63E.exit30.i", %76 %86 = getelementptr inbounds nuw i8, ptr %0, i64 24 invoke void @"_ZN4core3ptr205drop_in_place$LT$std..thread..Builder..spawn_unchecked_..MaybeDangling$LT$mini_lsm..compact..$LT$impl$u20$mini_lsm..lsm_storage..LsmStorageInner$GT$..spawn_flush_thread..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h9fcef98d58b19452E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %86) #47 - to label %.thread67.i unwind label %69 + to label %.thread67.thread.i unwind label %69 "_ZN4core3ptr80drop_in_place$LT$alloc..sync..Arc$LT$std..thread..Packet$LT$$LP$$RP$$GT$$GT$$GT$17h61a9eec0087feb3dE.llvm.18239827628611957360.exit32.i": ; preds = %91, %.thread67.i resume { ptr, i32 } %.pn.pn44647287.i .thread67.i: ; preds = %85, %"_ZN4core3ptr129drop_in_place$LT$core..option..Option$LT$alloc..sync..Arc$LT$std..sync..mutex..Mutex$LT$alloc..vec..Vec$LT$u8$GT$$GT$$GT$$GT$$GT$17ha0062cb45dffaa63E.exit30.i", %76, %.thread67.thread.i, %8 - %.pn.pn44647287.i = phi { ptr, i32 } [ %48, %.thread67.thread.i ], [ %.pn.pn45.i, %85 ], [ %.pn.pn45.i, %76 ], [ %.pn.pn45.i, %"_ZN4core3ptr129drop_in_place$LT$core..option..Option$LT$alloc..sync..Arc$LT$std..sync..mutex..Mutex$LT$alloc..vec..Vec$LT$u8$GT$$GT$$GT$$GT$$GT$17ha0062cb45dffaa63E.exit30.i" ], [ %lpad.thr_comm.i, %8 ] + %.pn.pn44647287.i = phi { ptr, i32 } [ %48, %.thread67.thread88.i ], [ %lpad.thr_comm.i, %8 ], [ %.pn.pn45.i, %"_ZN4core3ptr129drop_in_place$LT$core..option..Option$LT$alloc..sync..Arc$LT$std..sync..mutex..Mutex$LT$alloc..vec..Vec$LT$u8$GT$$GT$$GT$$GT$$GT$17ha0062cb45dffaa63E.exit30.i" ], [ %.pn.pn45.i, %85 ], [ %.pn.pn45.i, %76 ] %87 = getelementptr inbounds nuw i8, ptr %0, i64 8 call void @llvm.experimental.noalias.scope.decl(metadata !980) call void @llvm.experimental.noalias.scope.decl(metadata !983) diff --git a/bench/mold/optimized/input-files.cc.X86_64.ll b/bench/mold/optimized/input-files.cc.X86_64.ll index a4e861231f4..c7366596e60 100644 --- a/bench/mold/optimized/input-files.cc.X86_64.ll +++ b/bench/mold/optimized/input-files.cc.X86_64.ll @@ -19535,7 +19535,7 @@ _ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEED2Ev.exit: ; preds = %_ZN %.140139 = phi i1 [ %.039, %_ZNK3tbb6detail2d213hash_map_baseINS0_2d113tbb_allocatorISt4pairIKSt17basic_string_viewIcSt11char_traitsIcEEN4mold11ComdatGroupEEEENS3_13spin_rw_mutexEE15check_mask_raceEmRm.exit.thread127 ], [ %.140, %_ZNK3tbb6detail2d213hash_map_baseINS0_2d113tbb_allocatorISt4pairIKSt17basic_string_viewIcSt11char_traitsIcEEN4mold11ComdatGroupEEEENS3_13spin_rw_mutexEE15check_mask_raceEmRm.exit ], [ %.140, %173 ], [ %.140, %175 ] %.3138 = phi ptr [ %.243, %_ZNK3tbb6detail2d213hash_map_baseINS0_2d113tbb_allocatorISt4pairIKSt17basic_string_viewIcSt11char_traitsIcEEN4mold11ComdatGroupEEEENS3_13spin_rw_mutexEE15check_mask_raceEmRm.exit.thread127 ], [ %.3, %_ZNK3tbb6detail2d213hash_map_baseINS0_2d113tbb_allocatorISt4pairIKSt17basic_string_viewIcSt11char_traitsIcEEN4mold11ComdatGroupEEEENS3_13spin_rw_mutexEE15check_mask_raceEmRm.exit ], [ %.3, %173 ], [ %.3, %175 ] %.2116137 = phi i64 [ %170, %_ZNK3tbb6detail2d213hash_map_baseINS0_2d113tbb_allocatorISt4pairIKSt17basic_string_viewIcSt11char_traitsIcEEN4mold11ComdatGroupEEEENS3_13spin_rw_mutexEE15check_mask_raceEmRm.exit.thread127 ], [ %.2116, %_ZNK3tbb6detail2d213hash_map_baseINS0_2d113tbb_allocatorISt4pairIKSt17basic_string_viewIcSt11char_traitsIcEEN4mold11ComdatGroupEEEENS3_13spin_rw_mutexEE15check_mask_raceEmRm.exit ], [ %.2116, %173 ], [ %.2116, %175 ] - switch i32 %.0142, label %unreachable [ + switch i32 %.0142, label %.loopexit [ i32 0, label %177 i32 2, label %15 i32 6, label %.loopexit @@ -19622,11 +19622,8 @@ _ZN3tbb6detail2d213hash_map_baseINS0_2d113tbb_allocatorISt4pairIKSt17basic_strin tail call void @_ZN3tbb6detail2r117deallocate_memoryEPv(ptr noundef nonnull %.3138) #15 br label %207 -207: ; preds = %206, %205 +207: ; preds = %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEED2Ev.exit, %205, %206 ret i1 %.140139 - -unreachable: ; preds = %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEED2Ev.exit - unreachable } ; Function Attrs: mustprogress nounwind @@ -24028,7 +24025,7 @@ _ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEED2Ev.exit: ; preds = %_ZN %.140139 = phi i1 [ %.039, %_ZNK3tbb6detail2d213hash_map_baseINS0_2d113tbb_allocatorISt4pairIKSt17basic_string_viewIcSt11char_traitsIcEEN4mold6SymbolINSB_6X86_64EEEEEENS3_13spin_rw_mutexEE15check_mask_raceEmRm.exit.thread127 ], [ %.140, %_ZNK3tbb6detail2d213hash_map_baseINS0_2d113tbb_allocatorISt4pairIKSt17basic_string_viewIcSt11char_traitsIcEEN4mold6SymbolINSB_6X86_64EEEEEENS3_13spin_rw_mutexEE15check_mask_raceEmRm.exit ], [ %.140, %173 ], [ %.140, %175 ] %.3138 = phi ptr [ %.243, %_ZNK3tbb6detail2d213hash_map_baseINS0_2d113tbb_allocatorISt4pairIKSt17basic_string_viewIcSt11char_traitsIcEEN4mold6SymbolINSB_6X86_64EEEEEENS3_13spin_rw_mutexEE15check_mask_raceEmRm.exit.thread127 ], [ %.3, %_ZNK3tbb6detail2d213hash_map_baseINS0_2d113tbb_allocatorISt4pairIKSt17basic_string_viewIcSt11char_traitsIcEEN4mold6SymbolINSB_6X86_64EEEEEENS3_13spin_rw_mutexEE15check_mask_raceEmRm.exit ], [ %.3, %173 ], [ %.3, %175 ] %.2116137 = phi i64 [ %170, %_ZNK3tbb6detail2d213hash_map_baseINS0_2d113tbb_allocatorISt4pairIKSt17basic_string_viewIcSt11char_traitsIcEEN4mold6SymbolINSB_6X86_64EEEEEENS3_13spin_rw_mutexEE15check_mask_raceEmRm.exit.thread127 ], [ %.2116, %_ZNK3tbb6detail2d213hash_map_baseINS0_2d113tbb_allocatorISt4pairIKSt17basic_string_viewIcSt11char_traitsIcEEN4mold6SymbolINSB_6X86_64EEEEEENS3_13spin_rw_mutexEE15check_mask_raceEmRm.exit ], [ %.2116, %173 ], [ %.2116, %175 ] - switch i32 %.0142, label %unreachable [ + switch i32 %.0142, label %.loopexit [ i32 0, label %177 i32 2, label %15 i32 6, label %.loopexit @@ -24115,11 +24112,8 @@ _ZN3tbb6detail2d213hash_map_baseINS0_2d113tbb_allocatorISt4pairIKSt17basic_strin tail call void @_ZN3tbb6detail2r117deallocate_memoryEPv(ptr noundef nonnull %.3138) #15 br label %207 -207: ; preds = %206, %205 +207: ; preds = %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEED2Ev.exit, %205, %206 ret i1 %.140139 - -unreachable: ; preds = %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEED2Ev.exit - unreachable } ; Function Attrs: mustprogress nounwind diff --git a/bench/mold/optimized/input-sections.cc.X86_64.ll b/bench/mold/optimized/input-sections.cc.X86_64.ll index 1479e24908d..5fa60f3d7ef 100644 --- a/bench/mold/optimized/input-sections.cc.X86_64.ll +++ b/bench/mold/optimized/input-sections.cc.X86_64.ll @@ -5559,7 +5559,7 @@ _ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEED2Ev.exit: ; preds = %_ZN %.140113 = phi i1 [ %.039, %_ZNK3tbb6detail2d213hash_map_baseINS0_2d113tbb_allocatorISt4pairIKPN4mold6SymbolINS6_6X86_64EEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISI_EEEEENS3_13spin_rw_mutexEE15check_mask_raceEmRm.exit.thread101 ], [ %.140, %_ZNK3tbb6detail2d213hash_map_baseINS0_2d113tbb_allocatorISt4pairIKPN4mold6SymbolINS6_6X86_64EEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISI_EEEEENS3_13spin_rw_mutexEE15check_mask_raceEmRm.exit ], [ %.140, %166 ], [ %.140, %168 ] %.3112 = phi ptr [ %.243, %_ZNK3tbb6detail2d213hash_map_baseINS0_2d113tbb_allocatorISt4pairIKPN4mold6SymbolINS6_6X86_64EEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISI_EEEEENS3_13spin_rw_mutexEE15check_mask_raceEmRm.exit.thread101 ], [ %.3, %_ZNK3tbb6detail2d213hash_map_baseINS0_2d113tbb_allocatorISt4pairIKPN4mold6SymbolINS6_6X86_64EEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISI_EEEEENS3_13spin_rw_mutexEE15check_mask_raceEmRm.exit ], [ %.3, %166 ], [ %.3, %168 ] %.290111 = phi i64 [ %163, %_ZNK3tbb6detail2d213hash_map_baseINS0_2d113tbb_allocatorISt4pairIKPN4mold6SymbolINS6_6X86_64EEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISI_EEEEENS3_13spin_rw_mutexEE15check_mask_raceEmRm.exit.thread101 ], [ %.290, %_ZNK3tbb6detail2d213hash_map_baseINS0_2d113tbb_allocatorISt4pairIKPN4mold6SymbolINS6_6X86_64EEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISI_EEEEENS3_13spin_rw_mutexEE15check_mask_raceEmRm.exit ], [ %.290, %166 ], [ %.290, %168 ] - switch i32 %.0116, label %unreachable [ + switch i32 %.0116, label %.loopexit [ i32 0, label %170 i32 2, label %16 i32 6, label %.loopexit @@ -5690,11 +5690,8 @@ _ZN3tbb6detail2d219concurrent_hash_mapIPN4mold6SymbolINS3_6X86_64EEESt6vectorINS tail call void @_ZN3tbb6detail2r117deallocate_memoryEPv(ptr noundef nonnull %.3112) #14 br label %217 -217: ; preds = %_ZN3tbb6detail2d219concurrent_hash_mapIPN4mold6SymbolINS3_6X86_64EEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISE_EENS0_2d116tbb_hash_compareIS7_EENSH_13tbb_allocatorISt4pairIKS7_SG_EEEE11delete_nodeEPNS1_18hash_map_node_baseINSH_13spin_rw_mutexEEE.exit, %198 +217: ; preds = %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEED2Ev.exit, %198, %_ZN3tbb6detail2d219concurrent_hash_mapIPN4mold6SymbolINS3_6X86_64EEESt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISE_EENS0_2d116tbb_hash_compareIS7_EENSH_13tbb_allocatorISt4pairIKS7_SG_EEEE11delete_nodeEPNS1_18hash_map_node_baseINSH_13spin_rw_mutexEEE.exit ret i1 %.140113 - -unreachable: ; preds = %_ZN3tbb6detail2d114rw_scoped_lockINS1_13spin_rw_mutexEED2Ev.exit - unreachable } ; Function Attrs: mustprogress nounwind diff --git a/bench/nori/optimized/tabwidget.ll b/bench/nori/optimized/tabwidget.ll index 9ba3a73f2d6..c8595891eee 100644 --- a/bench/nori/optimized/tabwidget.ll +++ b/bench/nori/optimized/tabwidget.ll @@ -1701,8 +1701,8 @@ _ZNK7nanogui13TabWidgetBase15tab_at_positionERKNS_5ArrayIiLm2EEEb.exit: ; preds %66 = tail call noundef ptr @_ZN7nanogui6Widget6screenEv(ptr noundef nonnull align 8 dereferenceable(140) %0) %67 = getelementptr inbounds nuw i8, ptr %0, i64 288 %68 = load ptr, ptr %67, align 8 - %.not = icmp eq ptr %68, null - br i1 %.not, label %97, label %_ZN7nanoguimiERKNS_5ArrayIiLm2EEES3_.exit.critedge + %.not = icmp ne ptr %68, null + br i1 %.not, label %_ZN7nanoguimiERKNS_5ArrayIiLm2EEES3_.exit.critedge, label %97 _ZN7nanoguimiERKNS_5ArrayIiLm2EEES3_.exit.critedge: ; preds = %_ZNK7nanogui13TabWidgetBase15tab_at_positionERKNS_5ArrayIiLm2EEEb.exit %69 = getelementptr inbounds nuw i8, ptr %0, i64 40 @@ -1748,7 +1748,6 @@ _ZN7nanoguimiERKNS_5ArrayIiLm2EEES3_.exit.critedge: ; preds = %_ZNK7nanogui13Tab br label %97 97: ; preds = %_ZN7nanoguimiERKNS_5ArrayIiLm2EEES3_.exit.critedge, %_ZNK7nanogui13TabWidgetBase15tab_at_positionERKNS_5ArrayIiLm2EEEb.exit - %.0 = phi i8 [ 1, %_ZN7nanoguimiERKNS_5ArrayIiLm2EEES3_.exit.critedge ], [ 0, %_ZNK7nanogui13TabWidgetBase15tab_at_positionERKNS_5ArrayIiLm2EEEb.exit ] %98 = getelementptr inbounds nuw i8, ptr %0, i64 256 %99 = load i32, ptr %98, align 8 %.not48 = icmp ne i32 %99, -1 @@ -1914,7 +1913,7 @@ _ZN7nanogui6Widget10set_layoutEPNS_6LayoutE.exit: ; preds = %143, %133, %_ZNKSt8 174: ; preds = %._crit_edge, %97 %175 = phi i1 [ true, %97 ], [ %173, %._crit_edge ] - %.1 = phi i8 [ %.0, %97 ], [ 1, %._crit_edge ] + %.1 = phi i1 [ %.not, %97 ], [ true, %._crit_edge ] %176 = icmp eq i32 %2, 0 %or.cond54 = select i1 %176, i1 %175, i1 false br i1 %or.cond54, label %177, label %.thread140 @@ -2039,7 +2038,7 @@ _ZNKSt8functionIFviEEclEi.exit: ; preds = %230, %224 br i1 %3, label %.thread140, label %.thread142 .thread142.sink.split: ; preds = %.thread142.sink.split.loopexit170.critedge, %.thread142.sink.split.loopexit.critedge - %.sink = phi ptr [ %10, %.thread142.sink.split.loopexit.critedge ], [ %11, %.thread142.sink.split.loopexit170.critedge ] + %.sink = phi ptr [ %10, %.thread142.sink.split.loopexit.critedge ], [ %11, %.thread142.sink.split.loopexit169.critedge ] %241 = load ptr, ptr %0, align 8 %242 = getelementptr inbounds nuw i8, ptr %241, i64 40 %243 = load ptr, ptr %242, align 8 @@ -2053,12 +2052,10 @@ _ZNKSt8functionIFviEEclEi.exit: ; preds = %230, %224 br label %.thread140 .thread140: ; preds = %_ZNKSt8functionIFviEEclEi.exit, %220, %200, %183, %240, %.thread142, %174 - %.2 = phi i8 [ %.1, %174 ], [ 1, %.thread142 ], [ 1, %240 ], [ 1, %183 ], [ 1, %200 ], [ 1, %220 ], [ 1, %_ZNKSt8functionIFviEEclEi.exit ] + %.2 = phi i1 [ %.1, %174 ], [ true, %.thread142 ], [ true, %240 ], [ true, %183 ], [ true, %200 ], [ true, %220 ], [ true, %_ZNKSt8functionIFviEEclEi.exit ] %246 = call noundef zeroext i1 @_ZN7nanogui6Widget18mouse_button_eventERKNS_5ArrayIiLm2EEEibi(ptr noundef nonnull align 8 dereferenceable(140) %0, ptr noundef nonnull align 4 dereferenceable(8) %1, i32 noundef %2, i1 noundef zeroext %3, i32 noundef %4) - %247 = zext i1 %246 to i8 - %248 = or i8 %.2, %247 - %249 = icmp ne i8 %248, 0 - ret i1 %249 + %247 = or i1 %.2, %246 + ret i1 %247 } ; Function Attrs: mustprogress uwtable diff --git a/bench/openjdk/optimized/ciReplay.ll b/bench/openjdk/optimized/ciReplay.ll index 0513fda0436..d85fd97910b 100644 --- a/bench/openjdk/optimized/ciReplay.ll +++ b/bench/openjdk/optimized/ciReplay.ll @@ -8156,8 +8156,8 @@ define linkonce_odr hidden void @_ZN13CompileReplay15unescape_stringEPc(ptr noun br label %3 3: ; preds = %49, %1 - %.027 = phi ptr [ %0, %1 ], [ %.128, %49 ] - %.0 = phi ptr [ %0, %1 ], [ %.1, %49 ] + %.027 = phi ptr [ %0, %1 ], [ %.128, %45 ] + %.0 = phi ptr [ %0, %1 ], [ %.1, %45 ] %4 = load i8, ptr %.0, align 1 switch i8 %4, label %5 [ i8 0, label %50 @@ -8173,7 +8173,7 @@ define linkonce_odr hidden void @_ZN13CompileReplay15unescape_stringEPc(ptr noun 8: ; preds = %3 %9 = getelementptr inbounds nuw i8, ptr %.0, i64 1 %10 = load i8, ptr %9, align 1 - switch i8 %10, label %47 [ + switch i8 %10, label %43 [ i8 117, label %11 i8 116, label %39 i8 110, label %41 @@ -8187,13 +8187,13 @@ define linkonce_odr hidden void @_ZN13CompileReplay15unescape_stringEPc(ptr noun br label %13 13: ; preds = %11, %34 - %.237 = phi ptr [ %12, %11 ], [ %15, %34 ] - %.02636 = phi i32 [ 0, %11 ], [ %37, %34 ] - %14 = phi i16 [ 0, %11 ], [ %36, %34 ] + %.237 = phi ptr [ %12, %11 ], [ %15, %31 ] + %.02636 = phi i32 [ 0, %11 ], [ %33, %31 ] + %14 = phi i16 [ 0, %11 ], [ %32, %31 ] %15 = getelementptr inbounds nuw i8, ptr %.237, i64 1 %16 = load i8, ptr %.237, align 1 - %17 = sext i8 %16 to i32 - switch i8 %16, label %32 [ + %17 = sext i8 %16 to i16 + switch i8 %16, label %29 [ i8 48, label %18 i8 49, label %18 i8 50, label %18 @@ -8219,24 +8219,21 @@ define linkonce_odr hidden void @_ZN13CompileReplay15unescape_stringEPc(ptr noun ] 18: ; preds = %13, %13, %13, %13, %13, %13, %13, %13, %13, %13 - %19 = zext i16 %14 to i32 - %20 = shl nuw nsw i32 %19, 4 - %21 = add nuw nsw i32 %20, %17 - br label %34 + %19 = shl i16 %14, 4 + %20 = add i16 %19, %17 + br label %31 22: ; preds = %13, %13, %13, %13, %13, %13 - %23 = zext i16 %14 to i32 - %24 = shl nuw nsw i32 %23, 4 - %25 = add nuw nsw i32 %17, 10 - %26 = add nuw nsw i32 %25, %24 + %22 = shl i16 %14, 4 + %23 = add nsw i16 %17, 10 + %25 = add i16 %23, %22 br label %34 27: ; preds = %13, %13, %13, %13, %13, %13 - %28 = zext i16 %14 to i32 - %29 = shl nuw nsw i32 %28, 4 - %30 = add nuw nsw i32 %17, 10 - %31 = add nuw nsw i32 %30, %29 - br label %34 + %26 = shl i16 %14, 4 + %27 = add nsw i16 %17, 10 + %30 = add i16 %27, %26 + br label %31 32: ; preds = %13 %33 = load ptr, ptr @g_assert_poison, align 8 @@ -8245,16 +8242,15 @@ define linkonce_odr hidden void @_ZN13CompileReplay15unescape_stringEPc(ptr noun unreachable 34: ; preds = %18, %22, %27 - %.sink = phi i32 [ %21, %18 ], [ %26, %22 ], [ %31, %27 ] - %.sink50 = phi i16 [ -48, %18 ], [ -97, %22 ], [ -65, %27 ] - %35 = trunc i32 %.sink to i16 - %36 = add i16 %.sink50, %35 - store i16 %36, ptr %2, align 2 - %37 = add nuw nsw i32 %.02636, 1 - %exitcond.not = icmp eq i32 %37, 4 - br i1 %exitcond.not, label %38, label %13, !llvm.loop !38 - -38: ; preds = %34 + %.sink = phi i16 [ %20, %18 ], [ %24, %21 ], [ %30, %25 ] + %.sink50 = phi i16 [ -48, %18 ], [ -97, %21 ], [ -65, %25 ] + %32 = add i16 %.sink, %.sink50 + store i16 %32, ptr %2, align 2 + %33 = add nuw nsw i32 %.02636, 1 + %exitcond.not = icmp eq i32 %33, 4 + br i1 %exitcond.not, label %34, label %13, !llvm.loop !38 + +34: ; preds = %31 call void @_ZN7UNICODE15convert_to_utf8EPKtiPc(ptr noundef nonnull %2, i32 noundef 1, ptr noundef %.027) #17 br label %49 @@ -8284,8 +8280,8 @@ define linkonce_odr hidden void @_ZN13CompileReplay15unescape_stringEPc(ptr noun call void @_Z28report_should_not_reach_herePKci(ptr noundef nonnull @.str.10, i32 noundef 1333) #20 unreachable -49: ; preds = %38, %39, %41, %43, %45, %5 - %.1 = phi ptr [ %7, %5 ], [ %15, %38 ], [ %40, %39 ], [ %42, %41 ], [ %44, %43 ], [ %46, %45 ] +49: ; preds = %34, %39, %41, %43, %45, %5 + %.1 = phi ptr [ %7, %5 ], [ %15, %34 ], [ %36, %35 ], [ %38, %37 ], [ %40, %39 ], [ %42, %41 ] %.128 = getelementptr inbounds nuw i8, ptr %.027, i64 1 br label %3, !llvm.loop !39 diff --git a/bench/openjdk/optimized/compilerOracle.ll b/bench/openjdk/optimized/compilerOracle.ll index 3862c3d61f9..ded87e8cd0c 100644 --- a/bench/openjdk/optimized/compilerOracle.ll +++ b/bench/openjdk/optimized/compilerOracle.ll @@ -3181,13 +3181,9 @@ define hidden noundef zeroext i1 @_Z19compilerOracle_initv() local_unnamed_addr call void @llvm.lifetime.start.p0(ptr nonnull %1) %19 = call noundef ptr @_ZN2os5fopenEPKcS1_(ptr noundef nonnull %17, ptr noundef nonnull @.str.24) #19 %20 = icmp eq ptr %19, null - br i1 %20, label %_ZN14CompilerOracle15parse_from_fileEv.exit.thread, label %_ZN14CompilerOracle15parse_from_fileEv.exit + br i1 %20, label %_ZN14CompilerOracle15parse_from_fileEv.exit, label %_ZN14CompilerOracle15parse_from_fileEv.exit.thread _ZN14CompilerOracle15parse_from_fileEv.exit.thread: ; preds = %18 - call void @llvm.lifetime.end.p0(ptr nonnull %1) - br label %26 - -_ZN14CompilerOracle15parse_from_fileEv.exit: ; preds = %18 store ptr getelementptr inbounds nuw inrange(-16, 8) (i8, ptr @_ZTV9FileInput, i64 16), ptr %1, align 8 %21 = getelementptr inbounds nuw i8, ptr %1, i64 8 %22 = getelementptr inbounds nuw i8, ptr %1, i64 16 @@ -3201,10 +3197,12 @@ _ZN14CompilerOracle15parse_from_fileEv.exit: ; preds = %18 %25 = call noundef zeroext i1 @_ZN14CompilerOracle16parse_from_inputEPN11inputStream5InputEPFbPcE(ptr noundef nonnull %1, ptr noundef nonnull @_ZN14CompilerOracle15parse_from_lineEPc) store ptr getelementptr inbounds nuw inrange(-16, 8) (i8, ptr @_ZTV9FileInput, i64 16), ptr %1, align 8 call void @_ZN10fileStreamD1Ev(ptr noundef nonnull align 8 dereferenceable(65) %22) #19 - call void @llvm.lifetime.end.p0(ptr nonnull %1) - br i1 %25, label %26, label %31 + br label %26 -26: ; preds = %_ZN14CompilerOracle15parse_from_fileEv.exit.thread, %_ZN14CompilerOracle15parse_from_fileEv.exit +26: ; preds = %18, %_ZN14CompilerOracle15parse_from_fileEv.exit.thread + %.0.i = phi i1 [ %26, %21 ], [ true, %18 ] + call void @llvm.lifetime.end.p0(ptr nonnull %1) + %spec.select = and i1 %.2, %.0.i br label %31 27: ; preds = %0 @@ -3216,8 +3214,8 @@ _ZN14CompilerOracle15parse_from_fileEv.exit: ; preds = %18 call void (ptr, ...) @_Z7warningPKcz(ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.141, ptr noundef nonnull @.str.141) #19 br label %31 -31: ; preds = %26, %_ZN14CompilerOracle15parse_from_fileEv.exit, %27, %30 - %.3.shrunk = phi i1 [ %narrow, %30 ], [ %narrow, %27 ], [ %narrow, %26 ], [ false, %_ZN14CompilerOracle15parse_from_fileEv.exit ] +31: ; preds = %_ZN14CompilerOracle15parse_from_fileEv.exit, %27, %30 + %.3.shrunk = phi i1 [ %narrow, %30 ], [ %narrow, %27 ], [ %spec.select, %_ZN14CompilerOracle15parse_from_fileEv.exit ] %32 = load i8, ptr getelementptr inbounds nuw (i8, ptr @_ZL13option_filter, i64 3), align 1 %33 = trunc i8 %32 to i1 %34 = load i8, ptr @PrintAssembly, align 1 diff --git a/bench/openjdk/optimized/systemDictionary.ll b/bench/openjdk/optimized/systemDictionary.ll index 54507d69b21..f262529ff9b 100644 --- a/bench/openjdk/optimized/systemDictionary.ll +++ b/bench/openjdk/optimized/systemDictionary.ll @@ -4494,67 +4494,70 @@ _ZN11MutexLockerC2EP6ThreadP5MutexNS2_18SafepointCheckFlagE.exit: ; preds = %4, %21 = load ptr, ptr %20, align 8 %22 = call noundef ptr @_ZN10Dictionary10find_classEP6ThreadP6Symbol(ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull %3, ptr noundef %17) #14 %.not = icmp eq ptr %22, null - br i1 %.not, label %29, label %23 + br i1 %.not, label %24, label %23 23: ; preds = %_ZN11MutexLockerC2EP6ThreadP5MutexNS2_18SafepointCheckFlagE.exit %.not35 = icmp ne ptr %0, %22 %or.cond.not = or i1 %2, %.not35 - br i1 %or.cond.not, label %24, label %.critedge - -24: ; preds = %23 - %25 = call noundef ptr @_ZNK15ClassLoaderData18loader_name_and_idEv(ptr noundef nonnull align 8 dereferenceable(160) %1) #14 - call void (ptr, ptr, ...) @_ZN12outputStream5printEPKcz(ptr noundef nonnull align 8 dereferenceable(56) %5, ptr noundef nonnull @.str.13, ptr noundef %25) #14 - %26 = call noundef ptr @_ZNK5Klass13external_kindEv(ptr noundef nonnull align 8 dereferenceable(196) %0) #14 - %27 = call noundef ptr @_ZNK5Klass13external_nameEv(ptr noundef nonnull align 8 dereferenceable(196) %0) #14 - %28 = call noundef ptr @_ZNK5Klass25class_in_module_of_loaderEbb(ptr noundef nonnull align 8 dereferenceable(196) %0, i1 noundef zeroext false, i1 noundef zeroext true) #14 - call void (ptr, ptr, ...) @_ZN12outputStream5printEPKcz(ptr noundef nonnull align 8 dereferenceable(56) %5, ptr noundef nonnull @.str.14, ptr noundef %26, ptr noundef %27, ptr noundef %28) #14 - br label %46 - -29: ; preds = %_ZN11MutexLockerC2EP6ThreadP5MutexNS2_18SafepointCheckFlagE.exit - %30 = call noundef zeroext i1 @_ZN21LoaderConstraintTable15check_or_updateEP13InstanceKlassP15ClassLoaderDataP6Symbol(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef %17) #14 - br i1 %30, label %46, label %31 - -31: ; preds = %29 - %32 = call noundef ptr @_ZNK15ClassLoaderData18loader_name_and_idEv(ptr noundef nonnull align 8 dereferenceable(160) %1) #14 - call void (ptr, ptr, ...) @_ZN12outputStream5printEPKcz(ptr noundef nonnull align 8 dereferenceable(56) %5, ptr noundef nonnull @.str.15, ptr noundef %32) #14 - %33 = call noundef ptr @_ZNK5Klass13external_kindEv(ptr noundef nonnull align 8 dereferenceable(196) %0) #14 - %34 = call noundef ptr @_ZNK5Klass13external_nameEv(ptr noundef nonnull align 8 dereferenceable(196) %0) #14 - call void (ptr, ptr, ...) @_ZN12outputStream5printEPKcz(ptr noundef nonnull align 8 dereferenceable(56) %5, ptr noundef nonnull @.str.16, ptr noundef %33, ptr noundef %34) #14 - %35 = call noundef ptr @_ZN21LoaderConstraintTable22find_constrained_klassEP6SymbolP15ClassLoaderData(ptr noundef %17, ptr noundef nonnull %1) #14 - %.not36 = icmp eq ptr %35, null - br i1 %.not36, label %44, label %36 - -36: ; preds = %31 - %37 = getelementptr inbounds nuw i8, ptr %35, i64 152 - %38 = load ptr, ptr %37, align 8 - %.not37 = icmp eq ptr %38, %1 - br i1 %.not37, label %44, label %39 - -39: ; preds = %36 - %40 = call noundef ptr @_ZNK5Klass13external_kindEv(ptr noundef nonnull align 8 dereferenceable(196) %35) #14 - %41 = load ptr, ptr %37, align 8 - %42 = call noundef ptr @_ZNK15ClassLoaderData18loader_name_and_idEv(ptr noundef nonnull align 8 dereferenceable(160) %41) #14 - %43 = call noundef ptr @_ZNK5Klass25class_in_module_of_loaderEbb(ptr noundef nonnull align 8 dereferenceable(196) %35, i1 noundef zeroext false, i1 noundef zeroext true) #14 - call void (ptr, ptr, ...) @_ZN12outputStream5printEPKcz(ptr noundef nonnull align 8 dereferenceable(56) %5, ptr noundef nonnull @.str.17, ptr noundef %40, ptr noundef %42, ptr noundef %43) #14 - br label %46 - -44: ; preds = %36, %31 - %45 = call noundef ptr @_ZNK5Klass25class_in_module_of_loaderEbb(ptr noundef nonnull align 8 dereferenceable(196) %0, i1 noundef zeroext false, i1 noundef zeroext true) #14 - call void (ptr, ptr, ...) @_ZN12outputStream5printEPKcz(ptr noundef nonnull align 8 dereferenceable(56) %5, ptr noundef nonnull @.str.18, ptr noundef %45) #14 - br label %46 - -46: ; preds = %24, %29, %44, %39 - %.2 = phi i1 [ true, %39 ], [ true, %44 ], [ false, %29 ], [ true, %24 ] - br i1 %.not.i.i, label %_ZN11MutexLockerD2Ev.exit, label %47 + br i1 %or.cond.not, label %.critedge44, label %.critedge -47: ; preds = %46 +24: ; preds = %_ZN11MutexLockerC2EP6ThreadP5MutexNS2_18SafepointCheckFlagE.exit + %25 = call noundef zeroext i1 @_ZN21LoaderConstraintTable15check_or_updateEP13InstanceKlassP15ClassLoaderDataP6Symbol(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef %17) #14 + br i1 %24, label %40, label %25 + +25:; preds = %.critedge + %28 = call noundef ptr @_ZNK15ClassLoaderData18loader_name_and_idEv(ptr noundef nonnull align 8 dereferenceable(160) %1) #14 + call void (ptr, ptr, ...) @_ZN12outputStream5printEPKcz(ptr noundef nonnull align 8 dereferenceable(56) %5, ptr noundef nonnull @.str.15, ptr noundef %26) #14 + %27 = call noundef ptr @_ZNK5Klass13external_kindEv(ptr noundef nonnull align 8 dereferenceable(196) %0) #14 + %28 = call noundef ptr @_ZNK5Klass13external_nameEv(ptr noundef nonnull align 8 dereferenceable(196) %0) #14 + call void (ptr, ptr, ...) @_ZN12outputStream5printEPKcz(ptr noundef nonnull align 8 dereferenceable(56) %5, ptr noundef nonnull @.str.16, ptr noundef %27, ptr noundef %28) #14 + %30 = call noundef ptr @_ZN21LoaderConstraintTable22find_constrained_klassEP6SymbolP15ClassLoaderData(ptr noundef %17, ptr noundef nonnull %1) #14 + %.not36 = icmp eq ptr %29, null + br i1 %.not36, label %38, label %30 + +30:; preds = %25 + %31 = getelementptr inbounds nuw i8, ptr %30, i64 152 + %32 = load ptr, ptr %31, align 8 + %.not37 = icmp eq ptr %32, %1 + br i1 %.not37, label %38, label %47 + +47: ; preds = %30 + %34 = call noundef ptr @_ZNK5Klass13external_kindEv(ptr noundef nonnull align 8 dereferenceable(196) %29) #14 + %35 = load ptr, ptr %31, align 8 + %36 = call noundef ptr @_ZNK15ClassLoaderData18loader_name_and_idEv(ptr noundef nonnull align 8 dereferenceable(160) %35) #14 + %37 = call noundef ptr @_ZNK5Klass25class_in_module_of_loaderEbb(ptr noundef nonnull align 8 dereferenceable(196) %29, i1 noundef zeroext false, i1 noundef zeroext true) #14 + call void (ptr, ptr, ...) @_ZN12outputStream5printEPKcz(ptr noundef nonnull align 8 dereferenceable(56) %5, ptr noundef nonnull @.str.17, ptr noundef %34, ptr noundef %36, ptr noundef %37) #14 + br label %.critedge42 + +38: ; preds = %30, %25 + %39 = call noundef ptr @_ZNK5Klass25class_in_module_of_loaderEbb(ptr noundef nonnull align 8 dereferenceable(196) %0, i1 noundef zeroext false, i1 noundef zeroext true) #14 + call void (ptr, ptr, ...) @_ZN12outputStream5printEPKcz(ptr noundef nonnull align 8 dereferenceable(56) %5, ptr noundef nonnull @.str.18, ptr noundef %39) #14 + br label %.critedge42 + +40: ; preds = %.critedge + br i1 %.not.i.i, label %_ZN11MutexLockerD2Ev.exit, label %41 + +41: ; preds = %40 call void @_ZN5Mutex6unlockEv(ptr noundef nonnull align 8 dereferenceable(104) %18) #14 br label %_ZN11MutexLockerD2Ev.exit -_ZN11MutexLockerD2Ev.exit: ; preds = %46, %47 - br i1 %.2, label %48, label %_ZN11MutexLockerD2Ev.exit41 +_ZN11MutexLockerD2Ev.exit: ; preds = %38, %47 + br i1 %.not.i.i, label %48, label %_ZN11MutexLockerD2Ev.exit47.sink.split + +.critedge44: ; preds = %23 + %42 = call noundef ptr @_ZNK15ClassLoaderData18loader_name_and_idEv(ptr noundef nonnull align 8 dereferenceable(160) %1) #14 + call void (ptr, ptr, ...) @_ZN12outputStream5printEPKcz(ptr noundef nonnull align 8 dereferenceable(56) %5, ptr noundef nonnull @.str.13, ptr noundef %42) #14 + %43 = call noundef ptr @_ZNK5Klass13external_kindEv(ptr noundef nonnull align 8 dereferenceable(196) %0) #14 + %44 = call noundef ptr @_ZNK5Klass13external_nameEv(ptr noundef nonnull align 8 dereferenceable(196) %0) #14 + %45 = call noundef ptr @_ZNK5Klass25class_in_module_of_loaderEbb(ptr noundef nonnull align 8 dereferenceable(196) %0, i1 noundef zeroext false, i1 noundef zeroext true) #14 + call void (ptr, ptr, ...) @_ZN12outputStream5printEPKcz(ptr noundef nonnull align 8 dereferenceable(56) %5, ptr noundef nonnull @.str.14, ptr noundef %43, ptr noundef %44, ptr noundef %45) #14 + br i1 %.not.i.i, label %_ZN11MutexLockerD2Ev.exit47, label %_ZN11MutexLockerD2Ev.exit47.sink.split + +_ZN11MutexLockerD2Ev.exit47.sink.split: ; preds = %.critedge44, %.critedge42 + call void @_ZN5Mutex6unlockEv(ptr noundef nonnull align 8 dereferenceable(104) %18) #14 + br label %_ZN11MutexLockerD2Ev.exit47 -48: ; preds = %_ZN11MutexLockerD2Ev.exit +48: ; preds = %_ZN11MutexLockerD2Ev.exit47.sink.split, %.critedge44, %.critedge42 %49 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @_ZN6Symbol11_vm_symbolsE, i64 1176), align 8 %50 = call noundef ptr @_ZNK12stringStream9as_stringEb(ptr noundef nonnull align 8 dereferenceable(129) %5, i1 noundef zeroext false) #14 call void @_ZN10Exceptions10_throw_msgEP10JavaThreadPKciP6SymbolS3_(ptr noundef nonnull %3, ptr noundef nonnull @.str, i32 noundef 1684, ptr noundef %49, ptr noundef %50) #14 @@ -4567,7 +4570,7 @@ _ZN11MutexLockerD2Ev.exit: ; preds = %46, %47 call void @_ZN5Mutex6unlockEv(ptr noundef nonnull align 8 dereferenceable(104) %18) #14 br label %_ZN11MutexLockerD2Ev.exit41 -_ZN11MutexLockerD2Ev.exit41: ; preds = %51, %.critedge, %_ZN11MutexLockerD2Ev.exit, %48 +_ZN11MutexLockerD2Ev.exit41: ; preds = %51, %.critedge, %41, %40, %_ZN11MutexLockerD2Ev.exit47 call void @_ZN12stringStreamD1Ev(ptr noundef nonnull align 8 dereferenceable(129) %5) #14 %52 = load ptr, ptr %9, align 8 %.not.i.i.i.i = icmp eq ptr %52, null diff --git a/bench/openssl/optimized/cipher_des_hw.ll b/bench/openssl/optimized/cipher_des_hw.ll index 83e9c7bfdcf..2f7bbdf9b75 100644 --- a/bench/openssl/optimized/cipher_des_hw.ll +++ b/bench/openssl/optimized/cipher_des_hw.ll @@ -281,13 +281,13 @@ define internal noundef i32 @cipher_hw_des_cfb1_cipher(ptr noundef %0, ptr nound br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph - %.03137 = phi i64 [ %36, %.lr.ph ], [ 0, %.lr.ph.preheader ] + %.03137 = phi i64 [ %37, %.lr.ph ], [ 0, %.lr.ph.preheader ] %11 = lshr i64 %.03137, 3 %12 = getelementptr inbounds nuw i8, ptr %.03338, i64 %11 %13 = load i8, ptr %12, align 1, !tbaa !3 %14 = zext i8 %13 to i32 - %15 = trunc i64 %.03137 to i32 - %16 = and i32 %15, 7 + %15 = and i64 %.03137, 7 + %16 = trunc nuw nsw i64 %15 to i32 %17 = xor i32 %16, 7 %18 = shl nuw nsw i32 1, %17 %19 = and i32 %18, %14 @@ -301,18 +301,19 @@ define internal noundef i32 @cipher_hw_des_cfb1_cipher(ptr noundef %0, ptr nound call void @DES_cfb_encrypt(ptr noundef nonnull %5, ptr noundef nonnull %6, i32 noundef 1, i64 noundef 1, ptr noundef nonnull %7, ptr noundef nonnull %8, i32 noundef %24) #7 %25 = getelementptr inbounds nuw i8, ptr %.041, i64 %11 %26 = load i8, ptr %25, align 1, !tbaa !3 - %27 = zext i8 %26 to i32 - %28 = ashr i32 -129, %16 - %29 = and i32 %28, %27 - %30 = load i8, ptr %6, align 1, !tbaa !3 - %31 = and i8 %30, -128 - %32 = zext i8 %31 to i32 - %33 = lshr exact i32 %32, %16 - %34 = or i32 %33, %29 - %35 = trunc nuw i32 %34 to i8 - store i8 %35, ptr %25, align 1, !tbaa !3 - %36 = add nuw i64 %.03137, 1 - %exitcond.not = icmp eq i64 %36, %10 + %27 = zext i8 %26 to i16 + %28 = trunc nuw nsw i64 %15 to i16 + %29 = ashr i16 -129, %28 + %30 = and i16 %29, %27 + %31 = load i8, ptr %6, align 1, !tbaa !3 + %32 = and i8 %31, -128 + %33 = zext i8 %32 to i16 + %34 = lshr exact i16 %33, %28 + %35 = or i16 %34, %30 + %36 = trunc nuw i16 %35 to i8 + store i8 %36, ptr %25, align 1, !tbaa !3 + %37 = add nuw i64 %.03137, 1 + %exitcond.not = icmp eq i64 %37, %10 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !28 ._crit_edge: ; preds = %.lr.ph, %.preheader diff --git a/bench/php/optimized/ZendAccelerator.ll b/bench/php/optimized/ZendAccelerator.ll index 91ae096e677..bd9785ed94e 100644 --- a/bench/php/optimized/ZendAccelerator.ll +++ b/bench/php/optimized/ZendAccelerator.ll @@ -1829,8 +1829,8 @@ define hidden range(i32 -1, 1) i32 @zend_accel_invalidate(ptr noundef %0, i1 nou 9: ; preds = %7 %10 = load ptr, ptr @accelerator_orig_zend_resolve_path, align 8, !tbaa !39 %11 = tail call ptr %10(ptr noundef %0) #26 - %.not20 = icmp eq ptr %11, null - br i1 %.not20, label %12, label %zend_string_copy.exit + %.not20 = icmp ne ptr %11, null + br i1 %.not20, label %zend_string_copy.exit, label %12 12: ; preds = %9 %13 = getelementptr inbounds nuw i8, ptr %0, i64 4 @@ -1847,7 +1847,6 @@ define hidden range(i32 -1, 1) i32 @zend_accel_invalidate(ptr noundef %0, i1 nou zend_string_copy.exit: ; preds = %16, %12, %9 %.016 = phi ptr [ %11, %9 ], [ %0, %12 ], [ %0, %16 ] - %.0 = phi i8 [ 1, %9 ], [ 0, %12 ], [ 0, %16 ] %19 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @accel_globals, i64 152), align 8, !tbaa !154 %.not21 = icmp eq ptr %19, null br i1 %.not21, label %21, label %20 @@ -1969,7 +1968,7 @@ zend_accel_lock_discard_script.exit: ; preds = %42, %45, %57, %64 br label %80 80: ; preds = %79, %25, %21 - %.1 = phi i8 [ %.0, %25 ], [ 1, %79 ], [ %.0, %21 ] + %.1 = phi i1 [ %.not20, %25 ], [ true, %79 ], [ %.not20, %21 ] %81 = load i8, ptr @accel_globals, align 8, !tbaa !148, !range !37, !noundef !38 %82 = trunc nuw i8 %81 to i1 br i1 %82, label %accelerator_shm_read_unlock.exit, label %83 @@ -2021,13 +2020,12 @@ accelerator_shm_read_unlock.exit: ; preds = %80, %accel_deactiva br label %zend_string_release_ex.exit zend_string_release_ex.exit: ; preds = %accelerator_shm_read_unlock.exit, %98, %103 - %104 = xor i8 %.1, 1 - %105 = zext nneg i8 %104 to i32 - %106 = sub nsw i32 0, %105 - br label %107 + %104 = xor i1 %.1, true + %104 = sext i1 %104 to i32 + br label %105 107: ; preds = %2, %7, %zend_string_release_ex.exit - %.015 = phi i32 [ %106, %zend_string_release_ex.exit ], [ -1, %7 ], [ -1, %2 ] + %.015 = phi i32 [ %104, %zend_string_release_ex.exit ], [ -1, %7 ], [ -1, %2 ] ret i32 %.015 } diff --git a/bench/php/optimized/element.ll b/bench/php/optimized/element.ll index c19aa10b6df..a5bea22170d 100644 --- a/bench/php/optimized/element.ll +++ b/bench/php/optimized/element.ll @@ -4569,81 +4569,85 @@ zend_parse_arg_str_ex.exit: ; preds = %zend_parse_arg_obje %76 = load ptr, ptr %75, align 8, !tbaa !65 %77 = call ptr @xmlNewDocNode(ptr noundef %76, ptr noundef %74, ptr noundef nonnull @.str.15, ptr noundef null) #11 %78 = icmp eq ptr %77, null - br i1 %78, label %.thread139, label %.thread137, !prof !15 + br i1 %78, label %.thread139, label %.thread137110, !prof !15 .thread139: ; preds = %72 call void @php_dom_throw_error(i32 noundef 11, i1 noundef zeroext true) #11 br label %110 -.thread137: ; preds = %72, %68, %66 - %.189 = phi ptr [ %.088, %68 ], [ %.088, %66 ], [ %77, %72 ] - %.0 = phi i1 [ false, %68 ], [ false, %66 ], [ true, %72 ] +.thread137: ; preds = %68, %66 %79 = load ptr, ptr %3, align 8, !tbaa !24 - %80 = call ptr @dom_parse_fragment(ptr noundef nonnull %34, ptr noundef nonnull %.189, ptr noundef %79) #11 + %80 = call ptr @dom_parse_fragment(ptr noundef nonnull %34, ptr noundef nonnull %.088, ptr noundef %79) #11 %81 = icmp eq ptr %80, null - br i1 %81, label %109, label %82 - -82: ; preds = %.thread137 - %83 = getelementptr inbounds i8, ptr %33, i64 -16 - %84 = load ptr, ptr %83, align 8, !tbaa !16 - %.not.i108 = icmp eq ptr %84, null - br i1 %.not.i108, label %php_libxml_invalidate_node_list_cache.exit, label %85 - -85: ; preds = %82 - %86 = getelementptr inbounds nuw i8, ptr %84, i64 16 - %87 = load i64, ptr %86, align 8, !tbaa !105 - %88 = add i64 %87, 1 - store i64 %88, ptr %86, align 8, !tbaa !105 + br i1 %81, label %113, label %85 + +82: ; preds = %72 + %82 = load ptr, ptr %3, align 8, !tbaa !24 + %83 = call ptr @dom_parse_fragment(ptr noundef nonnull %34, ptr noundef nonnull %77, ptr noundef %82) #11 + %.not.i108 = icmp eq ptr %83, null + br i1 %.not.i108, label %.thread, label %85 + +85: ; preds = %82, %.thread137 + %86 = phi ptr [ %83, %.thread137.thread ], [ %80, %.thread137 ] + %.0157 = phi i1 [ true, %.thread137.thread ], [ false, %.thread137 ] + %.189155 = phi ptr [ %77, %.thread137.thread ], [ %.088, %.thread137 ] + %87 = getelementptr inbounds i8, ptr %33, i64 -16 + %88 = load ptr, ptr %87, align 8, !tbaa !16 + %.not.i108 = icmp eq ptr %88, null + br i1 %.not.i108, label %php_libxml_invalidate_node_list_cache.exit, label %89 + +89: ; preds = %85 + %90 = getelementptr inbounds nuw i8, ptr %88, i64 16 + %91 = load i64, ptr %90, align 8, !tbaa !105 + %92 = add i64 %91, 1 + store i64 %92, ptr %90, align 8, !tbaa !105 br label %php_libxml_invalidate_node_list_cache.exit -php_libxml_invalidate_node_list_cache.exit: ; preds = %82, %85 +php_libxml_invalidate_node_list_cache.exit: ; preds = %85, %89 %89 = load i64, ptr %48, align 8, !tbaa !29 %90 = load i8, ptr %50, align 2, !tbaa !13 %91 = sext i8 %90 to i64 %92 = add i64 %89, %91 - switch i64 %92, label %108 [ - i64 113, label %93 - i64 124, label %97 - i64 126, label %103 - i64 111, label %107 + switch i64 %92, label %112 [ + i64 113, label %97 + i64 124, label %101 + i64 126, label %107 + i64 111, label %108 ] -93: ; preds = %php_libxml_invalidate_node_list_cache.exit - %94 = getelementptr inbounds nuw i8, ptr %44, i64 40 - %95 = load ptr, ptr %94, align 8, !tbaa !98 - %96 = call zeroext i1 @php_dom_pre_insert(ptr noundef %84, ptr noundef nonnull %80, ptr noundef %95, ptr noundef %44) #11 - br label %109 - 97: ; preds = %php_libxml_invalidate_node_list_cache.exit %98 = getelementptr inbounds nuw i8, ptr %44, i64 40 %99 = load ptr, ptr %98, align 8, !tbaa !98 - %100 = getelementptr inbounds nuw i8, ptr %44, i64 48 - %101 = load ptr, ptr %100, align 8, !tbaa !97 - %102 = call zeroext i1 @php_dom_pre_insert(ptr noundef %84, ptr noundef nonnull %80, ptr noundef %99, ptr noundef %101) #11 - br label %109 + %100 = call zeroext i1 @php_dom_pre_insert(ptr noundef %88, ptr noundef nonnull %86, ptr noundef %99, ptr noundef %44) #11 + br i1 %.0157, label %110, label %113 103: ; preds = %php_libxml_invalidate_node_list_cache.exit - %104 = getelementptr inbounds nuw i8, ptr %44, i64 24 - %105 = load ptr, ptr %104, align 8, !tbaa !66 - %106 = call zeroext i1 @php_dom_pre_insert(ptr noundef %84, ptr noundef nonnull %80, ptr noundef %44, ptr noundef %105) #11 - br label %109 + %104 = getelementptr inbounds nuw i8, ptr %44, i64 40 + %105 = load ptr, ptr %104, align 8, !tbaa !98 + %104 = getelementptr inbounds nuw i8, ptr %44, i64 48 + %105 = load ptr, ptr %104, align 8, !tbaa !97 + %106 = call zeroext i1 @php_dom_pre_insert(ptr noundef %88, ptr noundef nonnull %86, ptr noundef %103, ptr noundef %105) #11 + br i1 %.0157, label %.thread, label %113 107: ; preds = %php_libxml_invalidate_node_list_cache.exit - call void @php_dom_node_append(ptr noundef %84, ptr noundef nonnull %80, ptr noundef %44) #11 - br label %109 + %108 = getelementptr inbounds nuw i8, ptr %44, i64 24 + %109 = load ptr, ptr %108, align 8, !tbaa !66 + %110 = call zeroext i1 @php_dom_pre_insert(ptr noundef %88, ptr noundef nonnull %86, ptr noundef %44, ptr noundef %109) #11 + br i1 %.0157, label %.thread, label %113 108: ; preds = %php_libxml_invalidate_node_list_cache.exit - unreachable + call void @php_dom_node_append(ptr noundef %88, ptr noundef nonnull %86, ptr noundef %44) #11 + br i1 %.0157, label %.thread, label %113 -109: ; preds = %93, %97, %103, %107, %.thread137 - br i1 %.0, label %110, label %111 +109: ; preds = %php_libxml_invalidate_node_list_cache.exit + unreachable -110: ; preds = %.thread139, %109 - %.2142 = phi ptr [ null, %.thread139 ], [ %.189, %109 ] +110: ; preds = %82, %111, %107, %101, %97, %.thread139 + %.2142 = phi ptr [ null, %.thread139 ], [ %.189155, %97 ], [ %.189155, %101 ], [ %.189155, %107 ], [ %.189155, %111 ], [ %77, %.thread137.thread ] call void @xmlFreeNode(ptr noundef %.2142) #11 br label %111 -111: ; preds = %.thread123, %61, %110, %109, %37 +111: ; preds = %.thread137, %111, %107, %101, %97, %.thread123, %61, %110, %37 call void @llvm.lifetime.end.p0(ptr nonnull %3) ret void } diff --git a/bench/php/optimized/logical_filters.ll b/bench/php/optimized/logical_filters.ll index 2ebcbf99b1a..87ef9388783 100644 --- a/bench/php/optimized/logical_filters.ll +++ b/bench/php/optimized/logical_filters.ll @@ -348,26 +348,25 @@ zval_get_long.exit: ; preds = %26, %24, %4, %17 119: ; preds = %114 %narrow.i140 = add nsw i8 %116, -48 - %120 = zext nneg i8 %narrow.i140 to i32 - %121 = sub nsw i32 0, %120 - %122 = select i1 %.1.i151, i32 %120, i32 %121 - %123 = sext i32 %122 to i64 - %124 = ptrtoint ptr %54 to i64 - %125 = ptrtoint ptr %115 to i64 - %126 = sub i64 %124, %125 - %127 = icmp sgt i64 %126, 19 - br i1 %127, label %.thread152, label %.preheader.i + %120 = zext nneg i8 %narrow.i140 to i64 + %121 = sub nsw i64 0, %120 + %122 = ptrtoint ptr %54 to i64 + %123 = ptrtoint ptr %115 to i64 + %124 = sub i64 %122, %123 + %125 = icmp sgt i64 %124, 19 + br i1 %125, label %.thread152, label %.preheader.i .preheader.i: ; preds = %119 - %128 = icmp ult ptr %115, %54 - br i1 %128, label %.lr.ph.i, label %php_filter_parse_octal.exit + %126 = select i1 %.1.i151, i64 %120, i64 %121 + %127 = icmp ult ptr %115, %54 + br i1 %127, label %.lr.ph.i, label %php_filter_parse_octal.exit .lr.ph.i: ; preds = %.preheader.i br i1 %.1.i151, label %.lr.ph.split.us.i, label %.lr.ph.split.i .lr.ph.split.us.i: ; preds = %.lr.ph.i, %135 - %.03349.us.i = phi i64 [ %138, %135 ], [ %123, %.lr.ph.i ] - %.13648.us.i = phi ptr [ %136, %135 ], [ %115, %.lr.ph.i ] + %.03349.us.i = phi i64 [ %138, %134 ], [ %120, %.lr.ph.i ] + %.13648.us.i = phi ptr [ %136, %134 ], [ %115, %.lr.ph.i ] %129 = load i8, ptr %.13648.us.i, align 1, !tbaa !4 %130 = add i8 %129, -48 %or.cond44.us.i = icmp ult i8 %130, 10 @@ -388,8 +387,8 @@ zval_get_long.exit: ; preds = %26, %24, %4, %17 br i1 %139, label %.lr.ph.split.us.i, label %php_filter_parse_octal.exit .lr.ph.split.i: ; preds = %.lr.ph.i, %144 - %.03349.i = phi i64 [ %147, %144 ], [ %123, %.lr.ph.i ] - %.13648.i = phi ptr [ %145, %144 ], [ %115, %.lr.ph.i ] + %.03349.i = phi i64 [ %147, %143 ], [ %121, %.lr.ph.i ] + %.13648.i = phi ptr [ %145, %143 ], [ %115, %.lr.ph.i ] %140 = load i8, ptr %.13648.i, align 1, !tbaa !4 %141 = add i8 %140, -48 %or.cond44.i = icmp ult i8 %141, 10 @@ -411,7 +410,7 @@ zval_get_long.exit: ; preds = %26, %24, %4, %17 br i1 %148, label %.lr.ph.split.i, label %php_filter_parse_octal.exit php_filter_parse_octal.exit: ; preds = %94, %144, %135, %.preheader.i, %._crit_edge, %108, %105 - %149 = phi i64 [ %.pre, %._crit_edge ], [ 0, %108 ], [ 0, %105 ], [ %123, %.preheader.i ], [ %138, %135 ], [ %147, %144 ], [ %.017.i, %94 ] + %149 = phi i64 [ %.pre, %._crit_edge ], [ 0, %108 ], [ 0, %105 ], [ %126, %.preheader.i ], [ %138, %134 ], [ %147, %143 ], [ %.017.i, %94 ] %150 = icmp slt i64 %149, %.099144 %not..not122146 = xor i1 %.not122146, true %or.cond.not = select i1 %not..not122146, i1 %150, i1 false diff --git a/bench/pingora-rs/optimized/86gtuzsa8hmfthtp7wbav90h5.ll b/bench/pingora-rs/optimized/86gtuzsa8hmfthtp7wbav90h5.ll index c7dcd5cb62c..0dcafcc68ff 100644 --- a/bench/pingora-rs/optimized/86gtuzsa8hmfthtp7wbav90h5.ll +++ b/bench/pingora-rs/optimized/86gtuzsa8hmfthtp7wbav90h5.ll @@ -4028,10 +4028,10 @@ define internal fastcc void @"_ZN114_$LT$pingora_cache..cache_control..CacheCont br label %.loopexit.i.i .loopexit.i.i: ; preds = %21, %25 - %.sroa.8.1 = phi i8 [ 0, %25 ], [ 1, %21 ] %.sroa.5.1 = phi i64 [ %27, %25 ], [ %.sroa.5.032, %21 ] %.sroa.0.1 = phi ptr [ %28, %25 ], [ %.sroa.0.033, %21 ] %.sroa.5.0.i.ph.i = phi i64 [ %.sroa.02.011.i.i.i, %25 ], [ %.sroa.5.032, %21 ] + %.sroa.8.1 = xor i1 %20, true call void @llvm.experimental.noalias.scope.decl(metadata !486) %29 = getelementptr inbounds nuw i8, ptr %.sroa.0.033, i64 %.sroa.5.0.i.ph.i %30 = icmp samesign eq i64 %.sroa.5.0.i.ph.i, 0 @@ -4098,7 +4098,7 @@ define internal fastcc void @"_ZN114_$LT$pingora_cache..cache_control..CacheCont "_ZN102_$LT$pingora_cache..cache_control..ListValueIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he316613c72b6c358E.exit": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9rposition17h0f42106b92fa50baE.exit.thread.i.i", %.loopexit.i.i, %14 %.sroa.0.116 = phi ptr [ %.sroa.0.1, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9rposition17h0f42106b92fa50baE.exit.thread.i.i" ], [ %.sroa.0.1, %.loopexit.i.i ], [ %.sroa.0.033, %14 ] %.sroa.5.115 = phi i64 [ %.sroa.5.1, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9rposition17h0f42106b92fa50baE.exit.thread.i.i" ], [ %.sroa.5.1, %.loopexit.i.i ], [ 0, %14 ] - %.sroa.8.114 = phi i8 [ %.sroa.8.1, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9rposition17h0f42106b92fa50baE.exit.thread.i.i" ], [ %.sroa.8.1, %.loopexit.i.i ], [ 1, %14 ] + %.sroa.8.114 = phi i1 [ %.sroa.8.1, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9rposition17h0f42106b92fa50baE.exit.thread.i.i" ], [ %.sroa.8.1, %.loopexit.i.i ], [ true, %14 ] %.sroa.03.0172227.i.i = phi i64 [ %.sroa.0.0.i.i.i, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9rposition17h0f42106b92fa50baE.exit.thread.i.i" ], [ 0, %.loopexit.i.i ], [ 0, %14 ] %.sroa.06.02326.i.i = phi i64 [ %.sroa.0.0.i1237.i.i, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$9rposition17h0f42106b92fa50baE.exit.thread.i.i" ], [ 0, %.loopexit.i.i ], [ 0, %14 ] %47 = getelementptr inbounds nuw i8, ptr %.sroa.0.033, i64 %.sroa.03.0172227.i.i @@ -4196,8 +4196,7 @@ define internal fastcc void @"_ZN114_$LT$pingora_cache..cache_control..CacheCont 72: ; preds = %"_ZN102_$LT$pingora_cache..cache_control..ListValueIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he316613c72b6c358E.exit", %.thread call void @llvm.lifetime.end.p0(ptr nonnull %7) - %73 = trunc nuw i8 %.sroa.8.114 to i1 - br i1 %73, label %"_ZN102_$LT$pingora_cache..cache_control..ListValueIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he316613c72b6c358E.exit.thread", label %14 + br i1 %.sroa.8.114, label %"_ZN102_$LT$pingora_cache..cache_control..ListValueIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he316613c72b6c358E.exit.thread", label %14 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/pola-rs/optimized/b4ioxe3ookh320kj8ajxke72f.ll b/bench/pola-rs/optimized/b4ioxe3ookh320kj8ajxke72f.ll index f3bd544f73b..425d96436c1 100644 --- a/bench/pola-rs/optimized/b4ioxe3ookh320kj8ajxke72f.ll +++ b/bench/pola-rs/optimized/b4ioxe3ookh320kj8ajxke72f.ll @@ -31383,9 +31383,8 @@ define void @_ZN14polars_parquet7parquet5write11compression8compress17he312145bc %.not41.i = icmp eq i8 %.val.i, 0 br i1 %.not41.i, label %37, label %41 -35: ; preds = %61, %44 - %.pn.i = phi { ptr, i32 } [ %lpad.thr_comm.i, %61 ], [ %lpad.thr_comm.split-lp.i, %44 ] - br i1 %.not41.i, label %.thread42.i, label %64 +35: ; preds = %61 + br i1 %.not41.i, label %.thread51.i, label %64 .thread.i: ; preds = %41 %36 = landingpad { ptr, i32 } @@ -31417,10 +31416,10 @@ define void @_ZN14polars_parquet7parquet5write11compression8compress17he312145bc invoke void @_ZN14polars_parquet7parquet11compression8compress17h08c80d0cd82c045bE(ptr noalias noundef nonnull sret([32 x i8]) align 8 captures(none) dereferenceable(32) %22, ptr noalias noundef nonnull align 4 captures(none) dereferenceable(12) %18, ptr noalias noundef nonnull readonly align 1 %.sroa.08.0.i, i64 noundef %.sroa.2.0.i, ptr noalias noundef nonnull align 8 dereferenceable(24) %2) to label %47 unwind label %.thread.i, !noalias !7215 -44: ; preds = %55, %45 +44: ; preds = %45 %lpad.thr_comm.split-lp.i = landingpad { ptr, i32 } cleanup - br label %35 + br label %.thread51.i 45: ; preds = %37 call void @llvm.lifetime.end.p0(ptr nonnull %19), !noalias !7210 @@ -31475,7 +31474,12 @@ define void @_ZN14polars_parquet7parquet5write11compression8compress17he312145bc 55: ; preds = %53 call void @llvm.lifetime.end.p0(ptr nonnull %17), !noalias !7210 invoke void @_ZN14polars_parquet7parquet4page18CompressedDictPage3new17ha598eacba5f97f14E(ptr noalias noundef nonnull sret([72 x i8]) align 8 captures(none) dereferenceable(72) %21, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %20, i8 noundef %54, i64 noundef %.sroa.2.0.i, i64 noundef %.sroa.413.0.copyload, i1 noundef zeroext %28) - to label %56 unwind label %44, !noalias !7215 + to label %56 unwind label %.thread45.i, !noalias !7215 + +.thread45.i: ; preds = %55 + %lpad.thr_comm.split-lp46.i = landingpad { ptr, i32 } + cleanup + br label %64 56: ; preds = %55 call void @llvm.lifetime.end.p0(ptr nonnull %20), !noalias !7210 @@ -31513,7 +31517,7 @@ define void @_ZN14polars_parquet7parquet5write11compression8compress17he312145bc %lpad.thr_comm.i = landingpad { ptr, i32 } cleanup invoke fastcc void @"_ZN4core3ptr55drop_in_place$LT$polars_parquet..parquet..CowBuffer$GT$17hc5fa5a6b40b9e5eeE"(ptr noalias noundef align 8 dereferenceable(48) %20) #29 - to label %35 unwind label %62, !noalias !7215 + to label %36 unwind label %62, !noalias !7215 62: ; preds = %.thread42.i, %64, %61 %63 = landingpad { ptr, i32 } @@ -31526,18 +31530,18 @@ _ZN14polars_parquet7parquet5write11compression13compress_dict17h8276e6a243b59ac6 call void @"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h70e19ca66a30789fE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %2), !noalias !7215 br label %172 -64: ; preds = %.thread.i, %35 - %.sroa.013.030.i = phi i1 [ true, %.thread.i ], [ false, %35 ] - %.pn29.i = phi { ptr, i32 } [ %36, %.thread.i ], [ %.pn.i, %35 ] +64: ; preds = %.thread45.i, %.thread.i, %35 + %.sroa.013.030.i = phi i1 [ true, %.thread.i ], [ false, %36 ], [ false, %.thread45.i ] + %.pn29.i = phi { ptr, i32 } [ %36, %.thread.i ], [ %lpad.thr_comm.i, %36 ], [ %lpad.thr_comm.split-lp46.i, %.thread45.i ] invoke fastcc void @"_ZN4core3ptr55drop_in_place$LT$polars_parquet..parquet..CowBuffer$GT$17hc5fa5a6b40b9e5eeE"(ptr noalias noundef align 8 dereferenceable(48) %23) #29 to label %60 unwind label %62, !noalias !7215 common.resume: ; preds = %143, %165, %60, %.thread42.i - %common.resume.op = phi { ptr, i32 } [ %.pn1946.i, %.thread42.i ], [ %.pn29.i, %60 ], [ %.pn.pn.pn.pn48.i, %165 ], [ %.pn.pn.pn.i, %143 ] + %common.resume.op = phi { ptr, i32 } [ %.pn1946.i, %.thread51.i ], [ %.pn29.i, %60 ], [ %.pn.pn.pn.pn48.i, %165 ], [ %.pn.pn.pn.i, %143 ] resume { ptr, i32 } %common.resume.op -.thread42.i: ; preds = %.thread49.i, %60, %35 - %.pn1946.i = phi { ptr, i32 } [ %.pn29.i, %60 ], [ %lpad.thr_comm47.i, %.thread49.i ], [ %.pn.i, %35 ] +.thread42.i: ; preds = %.thread49.i, %60, %44, %35 + %.pn1946.i = phi { ptr, i32 } [ %.pn29.i, %60 ], [ %lpad.thr_comm47.i, %.thread43.i ], [ %lpad.thr_comm.split-lp.i, %.thread48.i ], [ %lpad.thr_comm.i, %36 ] invoke void @"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h70e19ca66a30789fE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %2) #29 to label %common.resume unwind label %62, !noalias !7215 @@ -31821,8 +31825,8 @@ _ZN4core10intrinsics25typed_swap_nonoverlapping17h1a2e260d6aa5e0eaE.exit.i: ; pr to label %"_ZN4core3ptr66drop_in_place$LT$polars_parquet..parquet..page..DataPageHeader$GT$17habcfe5d3fba94ce5E.exit.i" unwind label %158, !noalias !7231 157: ; preds = %164, %158, %149, %.thread42.i4 - %.sroa.012.4.i = phi i1 [ true, %164 ], [ false, %149 ], [ true, %158 ], [ false, %.thread42.i4 ] - %.pn.pn.pn.i = phi { ptr, i32 } [ %.pn.pn41.i, %164 ], [ %.pn.ph.i, %149 ], [ %159, %158 ], [ %138, %.thread42.i4 ] + %.sroa.012.4.i = phi i1 [ true, %164 ], [ false, %149 ], [ true, %158 ], [ false, %.thread42.i ] + %.pn.pn.pn.i = phi { ptr, i32 } [ %.pn.pn41.i, %164 ], [ %.pn.ph.i, %149 ], [ %159, %158 ], [ %138, %.thread42.i ] invoke fastcc void @"_ZN4core3ptr55drop_in_place$LT$polars_parquet..parquet..CowBuffer$GT$17hc5fa5a6b40b9e5eeE"(ptr noalias noundef align 8 dereferenceable(48) %16) #29 to label %143 unwind label %146, !noalias !7231 diff --git a/bench/pola-rs/optimized/d8q9hkuy9m3r0tdsdk3s5e5sl.ll b/bench/pola-rs/optimized/d8q9hkuy9m3r0tdsdk3s5e5sl.ll index 7804d9ac572..48d2459ccfc 100644 --- a/bench/pola-rs/optimized/d8q9hkuy9m3r0tdsdk3s5e5sl.ll +++ b/bench/pola-rs/optimized/d8q9hkuy9m3r0tdsdk3s5e5sl.ll @@ -3071,14 +3071,14 @@ _ZN12polars_arrow6bitmap7builder13BitmapBuilder14push_unchecked17hacd8c13c7f934e 246: ; preds = %.thread171, %343, %247 %.sroa.060.1 = phi i1 [ true, %343 ], [ %.sroa.060.0, %247 ], [ true, %.thread171 ] - %.sroa.065.5 = phi i8 [ 0, %343 ], [ %.sroa.065.4, %247 ], [ 0, %.thread171 ] + %.sroa.065.5 = phi i1 [ false, %343 ], [ %.sroa.065.4, %247 ], [ false, %.thread171 ] %.pn = phi { ptr, i32 } [ %344, %343 ], [ %248, %247 ], [ %272, %.thread171 ] invoke void @"_ZN4core3ptr47drop_in_place$LT$alloc..vec..Vec$LT$u32$GT$$GT$17h2b14d8af7961fbeaE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %27) #32 to label %276 unwind label %181 247: ; preds = %"_ZN5alloc4sync12Arc$LT$T$GT$19allocate_for_layout17hd26d673220541fd5E.exit.i", %230, %.loopexit238, %198 %.sroa.060.0 = phi i1 [ true, %198 ], [ false, %.loopexit238 ], [ false, %230 ], [ false, %"_ZN5alloc4sync12Arc$LT$T$GT$19allocate_for_layout17hd26d673220541fd5E.exit.i" ] - %.sroa.065.4 = phi i8 [ 0, %198 ], [ 1, %.loopexit238 ], [ 1, %230 ], [ 1, %"_ZN5alloc4sync12Arc$LT$T$GT$19allocate_for_layout17hd26d673220541fd5E.exit.i" ] + %.sroa.065.4 = phi i1 [ false, %198 ], [ true, %.loopexit238 ], [ true, %230 ], [ true, %"_ZN5alloc4sync12Arc$LT$T$GT$19allocate_for_layout17hd26d673220541fd5E.exit.i" ] %248 = landingpad { ptr, i32 } cleanup br label %246 @@ -3321,7 +3321,7 @@ _ZN12polars_arrow6bitmap7builder13BitmapBuilder14push_unchecked17hacd8c13c7f934e unreachable 355: ; preds = %.thread186, %.thread179, %356 - %.sroa.065.7 = phi i8 [ 0, %.thread179 ], [ 0, %356 ], [ 1, %.thread186 ] + %.sroa.065.7 = phi i1 [ false, %.thread179 ], [ false, %356 ], [ true, %.thread186 ] %.pn88.pn = phi { ptr, i32 } [ %.pn88184, %.thread179 ], [ %357, %356 ], [ %lpad.thr_comm, %.thread186 ] invoke void @"_ZN4core3ptr123drop_in_place$LT$hashbrown..map..HashMap$LT$$LP$$BP$const$u20$u8$C$usize$RP$$C$u32$C$foldhash..quality..RandomState$GT$$GT$17h224e0e030ec889dbE"(ptr noalias noundef nonnull align 8 dereferenceable(40) %37) #32 to label %"_ZN4core3ptr104drop_in_place$LT$alloc..sync..Arc$LT$$u5b$polars_arrow..buffer..immutable..Buffer$LT$u8$GT$$u5d$$GT$$GT$17h167fa0923a68d3e5E.exit" unwind label %181 @@ -3767,14 +3767,13 @@ _ZN12polars_arrow6bitmap7builder13BitmapBuilder14push_unchecked17hacd8c13c7f934e to label %355 unwind label %181 "_ZN4core3ptr104drop_in_place$LT$alloc..sync..Arc$LT$$u5b$polars_arrow..buffer..immutable..Buffer$LT$u8$GT$$u5d$$GT$$GT$17h167fa0923a68d3e5E.exit": ; preds = %276, %345, %355, %.thread159, %537 - %.pn98158 = phi { ptr, i32 } [ %.pn98166, %537 ], [ %.pn98166, %.thread159 ], [ %.pn88.pn, %355 ], [ %.pn, %345 ], [ %.pn, %276 ] - %.sroa.066.0157 = phi i1 [ %.sroa.066.0165, %537 ], [ %.sroa.066.0165, %.thread159 ], [ true, %355 ], [ true, %345 ], [ true, %276 ] - %.sroa.065.1156 = phi i8 [ 1, %537 ], [ 1, %.thread159 ], [ %.sroa.065.7, %355 ], [ %.sroa.065.5, %345 ], [ %.sroa.065.5, %276 ] - %531 = trunc nuw i8 %.sroa.065.1156 to i1 - %532 = load ptr, ptr %42, align 8 - %533 = icmp ne ptr %532, null - %or.cond.not = select i1 %531, i1 %533, i1 false - br i1 %or.cond.not, label %538, label %"_ZN4core3ptr88drop_in_place$LT$core..option..Option$LT$polars_arrow..bitmap..immutable..Bitmap$GT$$GT$17hac20a6c4daf6a014E.exit" + %.pn98158 = phi { ptr, i32 } [ %.pn98166, %536 ], [ %.pn98166, %.thread159 ], [ %.pn88.pn, %355 ], [ %.pn, %345 ], [ %.pn, %276 ] + %.sroa.066.0157 = phi i1 [ %.sroa.066.0165, %536 ], [ %.sroa.066.0165, %.thread159 ], [ true, %355 ], [ true, %345 ], [ true, %276 ] + %.sroa.065.1156 = phi i1 [ true, %536 ], [ true, %.thread159 ], [ %.sroa.065.7, %355 ], [ %.sroa.065.5, %345 ], [ %.sroa.065.5, %276 ] + %531 = load ptr, ptr %42, align 8 + %532 = icmp ne ptr %531, null + %or.cond.not = select i1 %.sroa.065.1156, i1 %532, i1 false + br i1 %or.cond.not, label %537, label %"_ZN4core3ptr88drop_in_place$LT$core..option..Option$LT$polars_arrow..bitmap..immutable..Bitmap$GT$$GT$17hac20a6c4daf6a014E.exit" .thread159: ; preds = %..thread159_crit_edge, %.thread214, %467 %534 = phi ptr [ %.pre, %..thread159_crit_edge ], [ %124, %467 ], [ %.sroa.05.0.i.i.i.i.i, %.thread214 ] @@ -4344,14 +4343,14 @@ _ZN12polars_arrow6bitmap7builder13BitmapBuilder14push_unchecked17hacd8c13c7f934e 246: ; preds = %.thread171, %343, %247 %.sroa.060.1 = phi i1 [ true, %343 ], [ %.sroa.060.0, %247 ], [ true, %.thread171 ] - %.sroa.065.5 = phi i8 [ 0, %343 ], [ %.sroa.065.4, %247 ], [ 0, %.thread171 ] + %.sroa.065.5 = phi i1 [ false, %343 ], [ %.sroa.065.4, %247 ], [ false, %.thread171 ] %.pn = phi { ptr, i32 } [ %344, %343 ], [ %248, %247 ], [ %272, %.thread171 ] invoke void @"_ZN4core3ptr47drop_in_place$LT$alloc..vec..Vec$LT$u32$GT$$GT$17h2b14d8af7961fbeaE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %27) #32 to label %276 unwind label %181 247: ; preds = %"_ZN5alloc4sync12Arc$LT$T$GT$19allocate_for_layout17hd26d673220541fd5E.exit.i", %230, %.loopexit238, %198 %.sroa.060.0 = phi i1 [ true, %198 ], [ false, %.loopexit238 ], [ false, %230 ], [ false, %"_ZN5alloc4sync12Arc$LT$T$GT$19allocate_for_layout17hd26d673220541fd5E.exit.i" ] - %.sroa.065.4 = phi i8 [ 0, %198 ], [ 1, %.loopexit238 ], [ 1, %230 ], [ 1, %"_ZN5alloc4sync12Arc$LT$T$GT$19allocate_for_layout17hd26d673220541fd5E.exit.i" ] + %.sroa.065.4 = phi i1 [ false, %198 ], [ true, %.loopexit238 ], [ true, %230 ], [ true, %"_ZN5alloc4sync12Arc$LT$T$GT$19allocate_for_layout17hd26d673220541fd5E.exit.i" ] %248 = landingpad { ptr, i32 } cleanup br label %246 @@ -4594,7 +4593,7 @@ _ZN12polars_arrow6bitmap7builder13BitmapBuilder14push_unchecked17hacd8c13c7f934e unreachable 355: ; preds = %.thread186, %.thread179, %356 - %.sroa.065.7 = phi i8 [ 0, %.thread179 ], [ 0, %356 ], [ 1, %.thread186 ] + %.sroa.065.7 = phi i1 [ false, %.thread179 ], [ false, %356 ], [ true, %.thread186 ] %.pn88.pn = phi { ptr, i32 } [ %.pn88184, %.thread179 ], [ %357, %356 ], [ %lpad.thr_comm, %.thread186 ] invoke void @"_ZN4core3ptr123drop_in_place$LT$hashbrown..map..HashMap$LT$$LP$$BP$const$u20$u8$C$usize$RP$$C$u32$C$foldhash..quality..RandomState$GT$$GT$17h224e0e030ec889dbE"(ptr noalias noundef nonnull align 8 dereferenceable(40) %37) #32 to label %"_ZN4core3ptr104drop_in_place$LT$alloc..sync..Arc$LT$$u5b$polars_arrow..buffer..immutable..Buffer$LT$u8$GT$$u5d$$GT$$GT$17h167fa0923a68d3e5E.exit" unwind label %181 @@ -5040,14 +5039,13 @@ _ZN12polars_arrow6bitmap7builder13BitmapBuilder14push_unchecked17hacd8c13c7f934e to label %355 unwind label %181 "_ZN4core3ptr104drop_in_place$LT$alloc..sync..Arc$LT$$u5b$polars_arrow..buffer..immutable..Buffer$LT$u8$GT$$u5d$$GT$$GT$17h167fa0923a68d3e5E.exit": ; preds = %276, %345, %355, %.thread159, %537 - %.pn98158 = phi { ptr, i32 } [ %.pn98166, %537 ], [ %.pn98166, %.thread159 ], [ %.pn88.pn, %355 ], [ %.pn, %345 ], [ %.pn, %276 ] - %.sroa.066.0157 = phi i1 [ %.sroa.066.0165, %537 ], [ %.sroa.066.0165, %.thread159 ], [ true, %355 ], [ true, %345 ], [ true, %276 ] - %.sroa.065.1156 = phi i8 [ 1, %537 ], [ 1, %.thread159 ], [ %.sroa.065.7, %355 ], [ %.sroa.065.5, %345 ], [ %.sroa.065.5, %276 ] - %531 = trunc nuw i8 %.sroa.065.1156 to i1 - %532 = load ptr, ptr %42, align 8 - %533 = icmp ne ptr %532, null - %or.cond.not = select i1 %531, i1 %533, i1 false - br i1 %or.cond.not, label %538, label %"_ZN4core3ptr88drop_in_place$LT$core..option..Option$LT$polars_arrow..bitmap..immutable..Bitmap$GT$$GT$17hac20a6c4daf6a014E.exit" + %.pn98158 = phi { ptr, i32 } [ %.pn98166, %536 ], [ %.pn98166, %.thread159 ], [ %.pn88.pn, %355 ], [ %.pn, %345 ], [ %.pn, %276 ] + %.sroa.066.0157 = phi i1 [ %.sroa.066.0165, %536 ], [ %.sroa.066.0165, %.thread159 ], [ true, %355 ], [ true, %345 ], [ true, %276 ] + %.sroa.065.1156 = phi i1 [ true, %536 ], [ true, %.thread159 ], [ %.sroa.065.7, %355 ], [ %.sroa.065.5, %345 ], [ %.sroa.065.5, %276 ] + %531 = load ptr, ptr %42, align 8 + %532 = icmp ne ptr %531, null + %or.cond.not = select i1 %.sroa.065.1156, i1 %532, i1 false + br i1 %or.cond.not, label %537, label %"_ZN4core3ptr88drop_in_place$LT$core..option..Option$LT$polars_arrow..bitmap..immutable..Bitmap$GT$$GT$17hac20a6c4daf6a014E.exit" .thread159: ; preds = %..thread159_crit_edge, %.thread214, %467 %534 = phi ptr [ %.pre, %..thread159_crit_edge ], [ %124, %467 ], [ %.sroa.05.0.i.i.i.i.i, %.thread214 ] diff --git a/bench/postgres/optimized/copy.ll b/bench/postgres/optimized/copy.ll index 56dc2034d9b..f38c0b682d7 100644 --- a/bench/postgres/optimized/copy.ll +++ b/bench/postgres/optimized/copy.ll @@ -842,9 +842,9 @@ define dso_local zeroext i1 @handleCopyIn(ptr noundef %0, ptr noundef captures(a %33 = icmp slt i32 %32, 1 br i1 %33, label %.thread, label %27 -.preheader: ; preds = %19, %77 - %.05895 = phi i1 [ %.159, %77 ], [ true, %19 ] - %.06194 = phi i32 [ %.566, %77 ], [ 0, %19 ] +.preheader: ; preds = %19, %76 + %.05895 = phi i1 [ %.159, %76 ], [ true, %19 ] + %.06194 = phi i32 [ %.566, %76 ], [ 0, %19 ] %or.cond = and i1 %.not73, %.05895 br i1 %or.cond, label %34, label %40 @@ -906,14 +906,13 @@ define dso_local zeroext i1 @handleCopyIn(ptr noundef %0, ptr noundef captures(a 63: ; preds = %62, %54 %64 = phi ptr [ %.pre, %62 ], [ %55, %54 ] - %.269 = phi i8 [ 1, %62 ], [ 0, %54 ] %.263 = phi i32 [ %.06194, %62 ], [ %48, %54 ] %65 = icmp eq ptr %1, %64 br i1 %65, label %.thread101, label %70 .thread101: ; preds = %58, %57, %60, %63 %.263105 = phi i32 [ %.263, %63 ], [ %48, %60 ], [ %48, %57 ], [ %48, %58 ] - %.269104 = phi i8 [ %.269, %63 ], [ 0, %60 ], [ 0, %57 ], [ 0, %58 ] + %.269104 = phi i1 [ %or.cond79, %63 ], [ false, %60 ], [ false, %57 ], [ false, %58 ] %66 = load i64, ptr getelementptr inbounds nuw (i8, ptr @pset, i64 352), align 8 %67 = add i64 %66, 1 store i64 %67, ptr getelementptr inbounds nuw (i8, ptr @pset, i64 352), align 8 @@ -923,29 +922,28 @@ define dso_local zeroext i1 @handleCopyIn(ptr noundef %0, ptr noundef captures(a br label %70 70: ; preds = %.thread101, %63, %45, %40 - %.168 = phi i8 [ 1, %40 ], [ %.269104, %.thread101 ], [ %.269, %63 ], [ 0, %45 ] + %.168 = phi i1 [ true, %40 ], [ %.269104, %.thread101 ], [ %or.cond79, %63 ], [ false, %45 ] %.162 = phi i32 [ %.06194, %40 ], [ %.263105, %.thread101 ], [ %.263, %63 ], [ %48, %45 ] %.159 = phi i1 [ %.05895, %40 ], [ true, %.thread101 ], [ true, %63 ], [ false, %45 ] %71 = icmp sgt i32 %.162, 8186 - %72 = trunc nuw i8 %.168 to i1 - %73 = icmp sgt i32 %.162, 0 - %or.cond3 = and i1 %73, %72 - %or.cond81 = select i1 %71, i1 true, i1 %or.cond3 - br i1 %or.cond81, label %74, label %77 - -74: ; preds = %70 - %75 = call i32 @PQputCopyData(ptr noundef %0, ptr noundef nonnull %5, i32 noundef %.162) #11 - %76 = icmp slt i32 %75, 1 - br i1 %76, label %.thread, label %77 - -77: ; preds = %74, %70 - %.566 = phi i32 [ %.162, %70 ], [ 0, %74 ] - br i1 %72, label %.thread, label %.preheader - -.thread: ; preds = %74, %77, %31, %27 - %.3 = phi i8 [ 0, %31 ], [ 1, %27 ], [ 0, %74 ], [ 1, %77 ] - %78 = call i32 @ferror(ptr noundef %1) #11 - %.not76 = icmp eq i32 %78, 0 + %72 = icmp sgt i32 %.162, 0 + %or.cond3 = and i1 %72, %.168 + %or.cond81 = or i1 %71, %or.cond3 + br i1 %or.cond81, label %73, label %76 + +73: ; preds = %70 + %74 = call i32 @PQputCopyData(ptr noundef %0, ptr noundef nonnull %5, i32 noundef %.162) #11 + %75 = icmp slt i32 %74, 1 + br i1 %75, label %.thread, label %76 + +76: ; preds = %73, %70 + %.566 = phi i32 [ %.162, %70 ], [ 0, %73 ] + br i1 %.168, label %.thread, label %.preheader + +.thread: ; preds = %73, %76, %31, %27 + %.3 = phi i8 [ 0, %31 ], [ 1, %27 ], [ 0, %73 ], [ 1, %76 ] + %77 = call i32 @ferror(ptr noundef %1) #11 + %.not76 = icmp eq i32 %77, 0 %spec.select = select i1 %.not76, i8 %.3, i8 0 %79 = trunc nuw i8 %spec.select to i1 br i1 %79, label %84, label %80 @@ -957,14 +955,14 @@ define dso_local zeroext i1 @handleCopyIn(ptr noundef %0, ptr noundef captures(a br label %84 84: ; preds = %80, %.thread - %85 = phi ptr [ null, %.thread ], [ %83, %80 ] + %85 = phi ptr [ null, %.thread ], [ %83, %79 ] %86 = call i32 @PQputCopyEnd(ptr noundef %0, ptr noundef %85) #11 %87 = icmp slt i32 %86, 1 %spec.select83 = select i1 %87, i8 0, i8 %spec.select br label %88 88: ; preds = %84, %7 - %.0 = phi i8 [ 0, %7 ], [ %spec.select83, %84 ] + %.0 = phi i8 [ 0, %7 ], [ %spec.select83, %83 ] call void @clearerr(ptr noundef %1) #11 %89 = call ptr @PQgetResult(ptr noundef %0) #11 store ptr %89, ptr %3, align 8 @@ -986,7 +984,7 @@ define dso_local zeroext i1 @handleCopyIn(ptr noundef %0, ptr noundef captures(a br i1 %99, label %.lr.ph, label %._crit_edge, !llvm.loop !8 ._crit_edge: ; preds = %.lr.ph, %88 - %.8.lcssa = phi i8 [ %.0, %88 ], [ 0, %.lr.ph ] + %.8.lcssa = phi i8 [ %.0, %87 ], [ 0, %.lr.ph ] %100 = load ptr, ptr %3, align 8 %101 = call i32 @PQresultStatus(ptr noundef %100) #11 %.not77 = icmp eq i32 %101, 1 @@ -998,7 +996,7 @@ define dso_local zeroext i1 @handleCopyIn(ptr noundef %0, ptr noundef captures(a br label %104 104: ; preds = %102, %._crit_edge - %.9 = phi i8 [ 0, %102 ], [ %.8.lcssa, %._crit_edge ] + %.9 = phi i8 [ 0, %101 ], [ %.8.lcssa, %._crit_edge ] %105 = trunc nuw i8 %.9 to i1 call void @llvm.lifetime.end.p0(ptr nonnull %5) ret i1 %105 diff --git a/bench/postgres/optimized/nodeWindowAgg.ll b/bench/postgres/optimized/nodeWindowAgg.ll index ed02ea9b286..4161002ea0d 100644 --- a/bench/postgres/optimized/nodeWindowAgg.ll +++ b/bench/postgres/optimized/nodeWindowAgg.ll @@ -4104,12 +4104,13 @@ are_peers.exit: ; preds = %76 %125 = load ptr, ptr %124, align 8 %126 = load i16, ptr %125, align 2 %127 = sext i16 %126 to i32 - %128 = lshr i32 %7, 11 - %129 = trunc i32 %128 to i8 - %130 = getelementptr inbounds nuw i8, ptr %0, i64 492 - %131 = load i8, ptr %130, align 4, !range !4, !noundef !5 - %132 = xor i8 %131, 1 - %.0127 = zext nneg i8 %132 to i64 + %128 = and i32 %7, 2048 + %129 = getelementptr inbounds nuw i8, ptr %0, i64 492 + %130 = load i8, ptr %129, align 4, !range !4, !noundef !5 + %131 = trunc nuw i8 %130 to i1 + %132 = icmp eq i32 %128, 0 + %spec.select155 = xor i1 %132, %131 + %.0127 = xor i1 %131, true %133 = getelementptr inbounds nuw i8, ptr %0, i64 272 %134 = load ptr, ptr %133, align 8 %135 = getelementptr inbounds nuw i8, ptr %0, i64 284 @@ -4153,10 +4154,8 @@ are_peers.exit: ; preds = %76 %160 = getelementptr inbounds nuw i8, ptr %0, i64 392 %161 = getelementptr inbounds nuw i8, ptr %0, i64 488 %162 = getelementptr inbounds nuw i8, ptr %0, i64 376 - %.masked = and i8 %129, 1 - %163 = xor i8 %131, %.masked - %.reass = xor i8 %163, 1 - %164 = zext nneg i8 %.reass to i64 + %163 = zext i1 %spec.select155 to i64 + %164 = zext i1 %.0127 to i64 br label %165 165: ; preds = %209, %154 @@ -4232,7 +4231,7 @@ slot_getattr.exit157: ; preds = %slot_getattr.exit, %205 = load i64, ptr %204, align 8 %206 = load i32, ptr %161, align 8 %207 = load i64, ptr %162, align 8 - %208 = tail call i64 @FunctionCall5Coll(ptr noundef nonnull %160, i32 noundef %206, i64 noundef %184, i64 noundef %205, i64 noundef %207, i64 noundef %164, i64 noundef %.0127) #8 + %208 = tail call i64 @FunctionCall5Coll(ptr noundef nonnull %160, i32 noundef %206, i64 noundef %184, i64 noundef %205, i64 noundef %207, i64 noundef %163, i64 noundef %164) #8 %.not171 = icmp eq i64 %208, 0 br i1 %.not171, label %209, label %.sink.split188.sink.split @@ -4777,11 +4776,12 @@ are_peers.exit.thread: ; preds = %81, %are_peers.exit %134 = load ptr, ptr %133, align 8 %135 = load i16, ptr %134, align 2 %136 = sext i16 %135 to i32 - %137 = lshr i32 %7, 12 - %138 = trunc i32 %137 to i8 - %139 = getelementptr inbounds nuw i8, ptr %0, i64 492 - %140 = load i8, ptr %139, align 4, !range !4, !noundef !5 - %141 = zext nneg i8 %140 to i64 + %137 = and i32 %7, 4096 + %138 = getelementptr inbounds nuw i8, ptr %0, i64 492 + %139 = load i8, ptr %138, align 4, !range !4, !noundef !5 + %140 = trunc nuw i8 %139 to i1 + %141 = icmp eq i32 %137, 0 + %spec.select154 = xor i1 %141, %140 %142 = getelementptr inbounds nuw i8, ptr %0, i64 272 %143 = load ptr, ptr %142, align 8 %144 = getelementptr inbounds nuw i8, ptr %0, i64 288 @@ -4825,10 +4825,8 @@ are_peers.exit.thread: ; preds = %81, %are_peers.exit %169 = getelementptr inbounds nuw i8, ptr %0, i64 440 %170 = getelementptr inbounds nuw i8, ptr %0, i64 488 %171 = getelementptr inbounds nuw i8, ptr %0, i64 384 - %.masked = and i8 %138, 1 - %172 = xor i8 %140, %.masked - %.reass = xor i8 %172, 1 - %173 = zext nneg i8 %.reass to i64 + %172 = zext i1 %spec.select154 to i64 + %173 = zext nneg i8 %139 to i64 br label %174 174: ; preds = %218, %163 @@ -4901,7 +4899,7 @@ slot_getattr.exit156: ; preds = %slot_getattr.exit, %214 = load i64, ptr %213, align 8 %215 = load i32, ptr %170, align 8 %216 = load i64, ptr %171, align 8 - %217 = tail call i64 @FunctionCall5Coll(ptr noundef nonnull %169, i32 noundef %215, i64 noundef %193, i64 noundef %214, i64 noundef %216, i64 noundef %173, i64 noundef %141) #8 + %217 = tail call i64 @FunctionCall5Coll(ptr noundef nonnull %169, i32 noundef %215, i64 noundef %193, i64 noundef %214, i64 noundef %216, i64 noundef %172, i64 noundef %173) #8 %.not170 = icmp eq i64 %217, 0 br i1 %.not170, label %.sink.split187.sink.split, label %218 diff --git a/bench/postgres/optimized/relcache.ll b/bench/postgres/optimized/relcache.ll index 844d6734345..1a30314fdca 100644 --- a/bench/postgres/optimized/relcache.ll +++ b/bench/postgres/optimized/relcache.ll @@ -6177,7 +6177,7 @@ define dso_local void @RelationCacheInitializePhase3() local_unnamed_addr #0 { br i1 %.not48, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %22, %130 - %25 = phi ptr [ %131, %130 ], [ %24, %22 ] + %25 = phi ptr [ %131, %135 ], [ %24, %22 ] %26 = getelementptr inbounds nuw i8, ptr %25, i64 8 %27 = load ptr, ptr %26, align 8 %28 = load ptr, ptr @CurrentResourceOwner, align 8 @@ -6332,13 +6332,13 @@ RelationIncrementReferenceCount.exit: ; preds = %.lr.ph, %34 %112 = getelementptr inbounds nuw i8, ptr %27, i64 320 %113 = load ptr, ptr %112, align 8 %114 = icmp eq ptr %113, null - br i1 %114, label %115, label %120 + br i1 %114, label %115, label %126 115: ; preds = %111 %116 = load ptr, ptr %37, align 8 %117 = getelementptr inbounds nuw i8, ptr %116, i64 115 %118 = load i8, ptr %117, align 1 - switch i8 %118, label %120 [ + switch i8 %118, label %126 [ i8 114, label %119 i8 116, label %119 i8 109, label %119 @@ -6347,33 +6347,43 @@ RelationIncrementReferenceCount.exit: ; preds = %.lr.ph, %34 119: ; preds = %115, %115, %115, %115 call void @RelationInitTableAccessMethod(ptr noundef nonnull %27) - br label %120 - -120: ; preds = %115, %119, %111 - %.4 = phi i1 [ true, %119 ], [ %.3, %111 ], [ %.3, %115 ] - %121 = load i32, ptr %29, align 8 - %122 = add i32 %121, -1 - store i32 %122, ptr %29, align 8 - %123 = load i32, ptr @Mode, align 4 - %124 = icmp eq i32 %123, 0 - br i1 %124, label %RelationDecrementReferenceCount.exit, label %125 - -125: ; preds = %120 - %126 = load ptr, ptr @CurrentResourceOwner, align 8 - %127 = ptrtoint ptr %27 to i64 - call void @ResourceOwnerForget(ptr noundef %126, i64 noundef %127, ptr noundef nonnull @relref_resowner_desc) #13 + %119 = load i32, ptr %29, align 8 + %120 = add i32 %119, -1 + store i32 %120, ptr %29, align 8 + %121 = load i32, ptr @Mode, align 4 + %122 = icmp eq i32 %121, 0 + br i1 %122, label %RelationDecrementReferenceCount.exit, label %123 + +123:; preds = %.critedge + %124 = load ptr, ptr @CurrentResourceOwner, align 8 + %125 = ptrtoint ptr %27 to i64 + call void @ResourceOwnerForget(ptr noundef %124, i64 noundef %125, ptr noundef nonnull @relref_resowner_desc) #13 br label %RelationDecrementReferenceCount.exit -RelationDecrementReferenceCount.exit: ; preds = %120, %125 - br i1 %.4, label %128, label %130 +RelationDecrementReferenceCount.exit: ; preds = %115, %111 + %127 = load i32, ptr %29, align 8 + %128 = add i32 %127, -1 + store i32 %128, ptr %29, align 8 + %129 = load i32, ptr @Mode, align 4 + %130 = icmp eq i32 %129, 0 + br i1 %130, label %RelationDecrementReferenceCount.exit45, label %131 128: ; preds = %RelationDecrementReferenceCount.exit + %132 = load ptr, ptr @CurrentResourceOwner, align 8 + %133 = ptrtoint ptr %27 to i64 + call void @ResourceOwnerForget(ptr noundef %132, i64 noundef %133, ptr noundef nonnull @relref_resowner_desc) #13 + br label %RelationDecrementReferenceCount.exit45 + +RelationDecrementReferenceCount.exit45: ; preds = %126, %131 + br i1 %.3, label %RelationDecrementReferenceCount.exit, label %135 + +RelationDecrementReferenceCount.exit: ; preds = %123, %.critedge, %RelationDecrementReferenceCount.exit45 call void @hash_seq_term(ptr noundef nonnull %1) #13 %129 = load ptr, ptr @RelationIdCache, align 8 call void @hash_seq_init(ptr noundef nonnull %1, ptr noundef %129) #13 br label %130 -130: ; preds = %128, %RelationDecrementReferenceCount.exit +130: ; preds = %RelationDecrementReferenceCount.exit, %RelationDecrementReferenceCount.exit45 %131 = call ptr @hash_seq_search(ptr noundef nonnull %1) #13 %.not = icmp eq ptr %131, null br i1 %.not, label %._crit_edge, label %.lr.ph, !llvm.loop !32 diff --git a/bench/qemu/optimized/optimize.ll b/bench/qemu/optimized/optimize.ll index 0e7a03671b1..87e55e98814 100644 --- a/bench/qemu/optimized/optimize.ll +++ b/bench/qemu/optimized/optimize.ll @@ -43,7 +43,7 @@ target triple = "x86_64-pc-linux-gnu" @switch.table.tcg_opt_gen_mov = private unnamed_addr constant [6 x i32] [i32 5, i32 63, i32 poison, i32 149, i32 149, i32 149], align 4 @switch.table.do_constant_folding_cond = private unnamed_addr constant [14 x i32] [i32 0, i32 1, i32 poison, i32 poison, i32 0, i32 1, i32 1, i32 0, i32 0, i32 1, i32 -1, i32 -1, i32 0, i32 1], align 4 @switch.table.do_constant_folding_cond2 = private unnamed_addr constant [4 x i32] [i32 0, i32 1, i32 1, i32 0], align 4 -@switch.table.fold_setcond_zmask = private unnamed_addr constant [8 x i32] [i32 0, i32 1, i32 1, i32 0, i32 poison, i32 poison, i32 0, i32 1], align 4 +@switch.table.fold_setcond_zmask = private unnamed_addr constant [8 x i64] [i64 0, i64 1, i64 1, i64 0, i64 poison, i64 poison, i64 0, i64 1], align 8 ; Function Attrs: nounwind sspstrong uwtable define dso_local void @tcg_optimize(ptr noundef %0) local_unnamed_addr #0 { @@ -8838,14 +8838,13 @@ define internal fastcc range(i32 -1, 2) i32 @fold_setcond_zmask(ptr noundef nonn switch.lookup: ; preds = %28 %30 = zext nneg i32 %switch.tableidx to i64 - %switch.gep = getelementptr inbounds nuw i32, ptr @switch.table.fold_setcond_zmask, i64 %30 - %switch.load = load i32, ptr %switch.gep, align 4 + %switch.gep = getelementptr inbounds nuw i64, ptr @switch.table.fold_setcond_zmask, i64 %30 + %switch.load = load i64, ptr %switch.gep, align 8 %31 = load i64, ptr %4, align 8 - %32 = sub nsw i32 0, %switch.load - %33 = select i1 %2, i32 %32, i32 %switch.load - %34 = sext i32 %33 to i64 - %35 = tail call fastcc i64 @arg_new_constant(ptr noundef nonnull %0, i64 noundef %34) - tail call fastcc void @tcg_opt_gen_mov(ptr noundef nonnull %0, ptr noundef nonnull %1, i64 noundef %31, i64 noundef %35) + %32 = sub nsw i64 0, %switch.load + %33 = select i1 %2, i64 %32, i64 %switch.load + %34 = tail call fastcc i64 @arg_new_constant(ptr noundef nonnull %0, i64 noundef %33) + tail call fastcc void @tcg_opt_gen_mov(ptr noundef nonnull %0, ptr noundef nonnull %1, i64 noundef %31, i64 noundef %34) br label %.thread 36: ; preds = %28, %10 @@ -8866,7 +8865,7 @@ switch.lookup: ; preds = %28 br label %40 40: ; preds = %39, %38 - %.046 = phi i1 [ true, %39 ], [ false, %38 ] + %.046 = phi i1 [ true, %38 ], [ false, %37 ] %41 = icmp eq i64 %.052, 0 br i1 %41, label %45, label %.thread @@ -8874,12 +8873,12 @@ switch.lookup: ; preds = %28 br label %43 43: ; preds = %38, %38, %42 - %.1 = phi i1 [ true, %42 ], [ false, %38 ], [ false, %38 ] + %.1 = phi i1 [ true, %41 ], [ false, %37 ], [ false, %37 ] %44 = icmp eq i64 %.052, 1 br i1 %44, label %45, label %.thread 45: ; preds = %40, %43 - %.263 = phi i1 [ %.046, %40 ], [ %.1, %43 ] + %.263 = phi i1 [ %.046, %39 ], [ %.1, %42 ] %or.cond = or i1 %2, %.263 br i1 %or.cond, label %48, label %46 @@ -8889,7 +8888,7 @@ switch.lookup: ; preds = %28 br label %.thread 48: ; preds = %45 - switch i32 %23, label %50 [ + switch i32 %23, label %49 [ i32 0, label %51 i32 1, label %49 ] @@ -8902,9 +8901,9 @@ switch.lookup: ; preds = %28 unreachable 51: ; preds = %48, %49 - %.045 = phi i32 [ 78, %49 ], [ 17, %48 ] - %.044 = phi i32 [ 89, %49 ], [ 28, %48 ] - %.0 = phi i32 [ 114, %49 ], [ 54, %48 ] + %.045 = phi i32 [ 78, %48 ], [ 17, %47 ] + %.044 = phi i32 [ 89, %48 ], [ 28, %47 ] + %.0 = phi i32 [ 114, %48 ], [ 54, %47 ] %52 = load i32, ptr %1, align 8 %53 = and i32 %52, -256 br i1 %.263, label %56, label %54 @@ -8932,7 +8931,7 @@ switch.lookup: ; preds = %28 br label %.thread .thread: ; preds = %54, %60, %57, %46, %38, %36, %40, %43, %switch.lookup, %3 - %.054 = phi i32 [ 0, %3 ], [ 1, %switch.lookup ], [ 0, %43 ], [ 0, %40 ], [ 0, %36 ], [ 0, %38 ], [ -1, %54 ], [ -1, %60 ], [ -1, %57 ], [ 1, %46 ] + %.054 = phi i32 [ 0, %3 ], [ 1, %switch.lookup ], [ 0, %42 ], [ 0, %39 ], [ 0, %35 ], [ 0, %37 ], [ -1, %53 ], [ -1, %59 ], [ -1, %56 ], [ 1, %45 ] ret i32 %.054 } diff --git a/bench/quantlib/optimized/capflooredinflationcoupon.ll b/bench/quantlib/optimized/capflooredinflationcoupon.ll index 48954ed7411..1657021daa0 100644 --- a/bench/quantlib/optimized/capflooredinflationcoupon.ll +++ b/bench/quantlib/optimized/capflooredinflationcoupon.ll @@ -614,9 +614,8 @@ if.then3: ; preds = %if.then br label %if.end if.end: ; preds = %if.then3, %if.then - %1 = phi i8 [ 1, %if.then3 ], [ 0, %if.then ] %cmp7 = fcmp une double %floor, 0x47EFFFFFE0000000 - br i1 %cmp7, label %if.then8, label %if.end25 + br i1 %cmp7, label %if.then8, label %if.end66 if.then8: ; preds = %if.end %floor_ = getelementptr inbounds nuw i8, ptr %this, i64 224 @@ -634,9 +633,8 @@ if.then14: ; preds = %if.else br label %if.end17 if.end17: ; preds = %if.then14, %if.else - %2 = phi i8 [ 1, %if.then14 ], [ 0, %if.else ] %cmp20 = fcmp une double %floor, 0x47EFFFFFE0000000 - br i1 %cmp20, label %if.then21, label %if.end25 + br i1 %cmp20, label %if.then21, label %if.end66 if.then21: ; preds = %if.end17 store i8 1, ptr %isCapped_, align 1, !tbaa !49 @@ -644,13 +642,9 @@ if.then21: ; preds = %if.end17 store double %floor, ptr %cap_23, align 8, !tbaa !64 br label %if.end25 -if.end25: ; preds = %if.end17, %if.then21, %if.end, %if.then8 - %3 = phi i8 [ %2, %if.end17 ], [ %2, %if.then21 ], [ 0, %if.end ], [ 1, %if.then8 ] - %4 = phi i8 [ 0, %if.end17 ], [ 1, %if.then21 ], [ %1, %if.end ], [ %1, %if.then8 ] - %5 = and i8 %4, %3 - %or.cond = icmp ne i8 %5, 0 +if.end25: ; preds = %if.then21, %if.then8 %cmp30 = fcmp ult double %cap, %floor - %or.cond15 = and i1 %cmp30, %or.cond + %or.cond15 = and i1 %cmp30, %cmp2 br i1 %or.cond15, label %if.then31, label %if.end66 if.then31: ; preds = %if.end25 @@ -800,7 +794,7 @@ ehcleanup63: ; preds = %_ZNKSt7__cxx1112bas call void @llvm.lifetime.end.p0(ptr nonnull %_ql_msg_stream) resume { ptr, i32 } %.pn.pn.pn.pn -if.end66: ; preds = %if.end25 +if.end66: ; preds = %if.end, %if.end17, %if.end25 ret void unreachable: ; preds = %invoke.cont53 diff --git a/bench/raylib/optimized/rmodels.ll b/bench/raylib/optimized/rmodels.ll index d6cea0e3fba..94a4484f785 100644 --- a/bench/raylib/optimized/rmodels.ll +++ b/bench/raylib/optimized/rmodels.ll @@ -31881,8 +31881,8 @@ define void @LoadModel(ptr dead_on_unwind noalias writable sret(%struct.Model) a %.9247.i = phi i32 [ %.8.i, %.lr.ph254.i ], [ %.10.i, %._crit_edge243.i ] %.4166246.i = phi i32 [ 0, %.lr.ph254.i ], [ %spec.select190.i, %._crit_edge243.i ] %174 = zext i32 %.9247.i to i64 - %.not179.i = icmp samesign ult i64 %indvars.iv290.i, %174 - br i1 %.not179.i, label %._crit_edge301.i, label %175 + %.not179.i = icmp samesign uge i64 %indvars.iv290.i, %174 + br i1 %.not179.i, label %175, label %._crit_edge301.i 175: ; preds = %173 %176 = add i32 %.4251.i, 1 @@ -31898,18 +31898,22 @@ define void @LoadModel(ptr dead_on_unwind noalias writable sret(%struct.Model) a ._crit_edge301.i: ; preds = %178, %175, %173 %.10.i = phi i32 [ %.9247.i, %173 ], [ %182, %178 ], [ %59, %175 ] - %.0141.i = phi i8 [ 0, %173 ], [ 1, %178 ], [ 1, %175 ] %.5.i = phi i32 [ %.4251.i, %173 ], [ %176, %178 ], [ %176, %175 ] %.not180.i = icmp eq i32 %.2146249.i, -1 %.phi.trans.insert.i = getelementptr inbounds nuw i32, ptr %162, i64 %indvars.iv290.i %.pre.i = load i32, ptr %.phi.trans.insert.i, align 4, !noalias !7 - %.not181.i = icmp eq i32 %.pre.i, %.2146249.i - %183 = select i1 %.not180.i, i1 true, i1 %.not181.i - %.1142.i = select i1 %183, i8 %.0141.i, i8 1 - %184 = trunc nuw i8 %.1142.i to i1 - %185 = zext nneg i8 %.1142.i to i32 + br i1 %.not180.i, label %._crit_edge301.i, label %184 + +184:; preds = %._crit_edge301.i + %.not181.i = icmp ne i32 %.pre.i, %.2146249.i + %spec.select189.i = or i1 %.not179.i, %.not181.i + br label %._crit_edge301.i + +._crit_edge301.i: ; preds = %184, %183 + %.1142.i = phi i1 [ %spec.select189.i, %184 ], [ %.not179.i, %183 ] + %185 = zext i1 %.1142.i to i32 %spec.select190.i = add i32 %.4166246.i, %185 - %spec.select191.i = select i1 %184, i32 0, i32 %.2152248.i + %spec.select191.i = select i1 %.1142.i, i32 0, i32 %.2152248.i %186 = icmp sgt i32 %.pre.i, -1 %187 = icmp slt i32 %.pre.i, %75 %or.cond.i = and i1 %186, %187 diff --git a/bench/rayon-rs/optimized/1kw8d85q77j78ldq.ll b/bench/rayon-rs/optimized/1kw8d85q77j78ldq.ll index 1eb7f1dc468..b64d279b3ae 100644 --- a/bench/rayon-rs/optimized/1kw8d85q77j78ldq.ll +++ b/bench/rayon-rs/optimized/1kw8d85q77j78ldq.ll @@ -676,9 +676,6 @@ define internal void @"_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.s %7 = invoke { ptr, i64 } @_ZN3std6thread6Thread5cname17h91163d95cfb5c369E(ptr noalias noundef nonnull readonly align 8 dereferenceable(128) %0) to label %9 unwind label %.thread.i -"_ZN4core3ptr144drop_in_place$LT$$LT$rayon_core..registry..DefaultSpawn$u20$as$u20$rayon_core..registry..ThreadSpawn$GT$..spawn..$u7b$$u7b$closure$u7d$$u7d$$GT$17h1ae2b47a0ded9c1aE.exit.i": ; preds = %67 - br i1 %.119.ph.i, label %70, label %"_ZN4core3ptr205drop_in_place$LT$std..thread..Builder..spawn_unchecked_..MaybeDangling$LT$$LT$rayon_core..registry..DefaultSpawn$u20$as$u20$rayon_core..registry..ThreadSpawn$GT$..spawn..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h643ab4d61bbbda3fE.exit.i" - .thread.i: ; preds = %20, %11, %10, %1 %.0.i = phi i1 [ false, %11 ], [ true, %10 ], [ true, %1 ], [ false, %20 ] %8 = landingpad { ptr, i32 } @@ -837,6 +834,9 @@ define internal void @"_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.s invoke void @"_ZN4core3ptr56drop_in_place$LT$rayon_core..registry..ThreadBuilder$GT$17h2133eca97e52be5cE"(ptr noalias noundef nonnull align 8 dereferenceable(104) %5) to label %"_ZN4core3ptr144drop_in_place$LT$$LT$rayon_core..registry..DefaultSpawn$u20$as$u20$rayon_core..registry..ThreadSpawn$GT$..spawn..$u7b$$u7b$closure$u7d$$u7d$$GT$17h1ae2b47a0ded9c1aE.exit.i" unwind label %68 +"_ZN4core3ptr144drop_in_place$LT$$LT$rayon_core..registry..DefaultSpawn$u20$as$u20$rayon_core..registry..ThreadSpawn$GT$..spawn..$u7b$$u7b$closure$u7d$$u7d$$GT$17h1ae2b47a0ded9c1aE.exit.i": ; preds = %67 + br i1 %.119.ph.i, label %70, label %.thread70.thread.i + 68: ; preds = %90, %84, %83, %74, %67 %69 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer @@ -846,7 +846,7 @@ define internal void @"_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.s .noexc29.i: ; preds = %74, %70 br i1 %.145.i, label %76, label %75 -70: ; preds = %.thread.i, %"_ZN4core3ptr144drop_in_place$LT$$LT$rayon_core..registry..DefaultSpawn$u20$as$u20$rayon_core..registry..ThreadSpawn$GT$..spawn..$u7b$$u7b$closure$u7d$$u7d$$GT$17h1ae2b47a0ded9c1aE.exit.i" +70: ; preds = %"_ZN4core3ptr144drop_in_place$LT$$LT$rayon_core..registry..DefaultSpawn$u20$as$u20$rayon_core..registry..ThreadSpawn$GT$..spawn..$u7b$$u7b$closure$u7d$$u7d$$GT$17h1ae2b47a0ded9c1aE.exit.i", %.thread.i %.pn.pn47.i = phi { ptr, i32 } [ %8, %.thread.i ], [ %lpad.thr_comm.i, %"_ZN4core3ptr144drop_in_place$LT$$LT$rayon_core..registry..DefaultSpawn$u20$as$u20$rayon_core..registry..ThreadSpawn$GT$..spawn..$u7b$$u7b$closure$u7d$$u7d$$GT$17h1ae2b47a0ded9c1aE.exit.i" ] %.145.i = phi i1 [ %.0.i, %.thread.i ], [ false, %"_ZN4core3ptr144drop_in_place$LT$$LT$rayon_core..registry..DefaultSpawn$u20$as$u20$rayon_core..registry..ThreadSpawn$GT$..spawn..$u7b$$u7b$closure$u7d$$u7d$$GT$17h1ae2b47a0ded9c1aE.exit.i" ] %.01743.i = phi i1 [ true, %.thread.i ], [ false, %"_ZN4core3ptr144drop_in_place$LT$$LT$rayon_core..registry..DefaultSpawn$u20$as$u20$rayon_core..registry..ThreadSpawn$GT$..spawn..$u7b$$u7b$closure$u7d$$u7d$$GT$17h1ae2b47a0ded9c1aE.exit.i" ] @@ -890,13 +890,13 @@ define internal void @"_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.s 84: ; preds = %"_ZN4core3ptr129drop_in_place$LT$core..option..Option$LT$alloc..sync..Arc$LT$std..sync..mutex..Mutex$LT$alloc..vec..Vec$LT$u8$GT$$GT$$GT$$GT$$GT$17ha9001a46134deedaE.exit31.i", %75 %85 = getelementptr inbounds nuw i8, ptr %0, i64 24 invoke void @"_ZN4core3ptr56drop_in_place$LT$rayon_core..registry..ThreadBuilder$GT$17h2133eca97e52be5cE"(ptr noalias noundef nonnull align 8 dereferenceable(104) %85) - to label %"_ZN4core3ptr205drop_in_place$LT$std..thread..Builder..spawn_unchecked_..MaybeDangling$LT$$LT$rayon_core..registry..DefaultSpawn$u20$as$u20$rayon_core..registry..ThreadSpawn$GT$..spawn..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h643ab4d61bbbda3fE.exit.i" unwind label %68 + to label %.thread70.thread.i unwind label %68 "_ZN4core3ptr80drop_in_place$LT$alloc..sync..Arc$LT$std..thread..Packet$LT$$LP$$RP$$GT$$GT$$GT$17hc6e90a3f351adae0E.exit34.i": ; preds = %90, %"_ZN4core3ptr205drop_in_place$LT$std..thread..Builder..spawn_unchecked_..MaybeDangling$LT$$LT$rayon_core..registry..DefaultSpawn$u20$as$u20$rayon_core..registry..ThreadSpawn$GT$..spawn..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h643ab4d61bbbda3fE.exit.i" resume { ptr, i32 } %.pn.pn46667487.i -"_ZN4core3ptr205drop_in_place$LT$std..thread..Builder..spawn_unchecked_..MaybeDangling$LT$$LT$rayon_core..registry..DefaultSpawn$u20$as$u20$rayon_core..registry..ThreadSpawn$GT$..spawn..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h643ab4d61bbbda3fE.exit.i": ; preds = %84, %"_ZN4core3ptr129drop_in_place$LT$core..option..Option$LT$alloc..sync..Arc$LT$std..sync..mutex..Mutex$LT$alloc..vec..Vec$LT$u8$GT$$GT$$GT$$GT$$GT$17ha9001a46134deedaE.exit31.i", %75, %"_ZN4core3ptr205drop_in_place$LT$std..thread..Builder..spawn_unchecked_..MaybeDangling$LT$$LT$rayon_core..registry..DefaultSpawn$u20$as$u20$rayon_core..registry..ThreadSpawn$GT$..spawn..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h643ab4d61bbbda3fE.exit.thread.i", %"_ZN4core3ptr144drop_in_place$LT$$LT$rayon_core..registry..DefaultSpawn$u20$as$u20$rayon_core..registry..ThreadSpawn$GT$..spawn..$u7b$$u7b$closure$u7d$$u7d$$GT$17h1ae2b47a0ded9c1aE.exit.i" - %.pn.pn46667487.i = phi { ptr, i32 } [ %47, %"_ZN4core3ptr205drop_in_place$LT$std..thread..Builder..spawn_unchecked_..MaybeDangling$LT$$LT$rayon_core..registry..DefaultSpawn$u20$as$u20$rayon_core..registry..ThreadSpawn$GT$..spawn..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h643ab4d61bbbda3fE.exit.thread.i" ], [ %.pn.pn47.i, %75 ], [ %.pn.pn47.i, %"_ZN4core3ptr129drop_in_place$LT$core..option..Option$LT$alloc..sync..Arc$LT$std..sync..mutex..Mutex$LT$alloc..vec..Vec$LT$u8$GT$$GT$$GT$$GT$$GT$17ha9001a46134deedaE.exit31.i" ], [ %.pn.pn47.i, %84 ], [ %lpad.thr_comm.i, %"_ZN4core3ptr144drop_in_place$LT$$LT$rayon_core..registry..DefaultSpawn$u20$as$u20$rayon_core..registry..ThreadSpawn$GT$..spawn..$u7b$$u7b$closure$u7d$$u7d$$GT$17h1ae2b47a0ded9c1aE.exit.i" ] +"_ZN4core3ptr205drop_in_place$LT$std..thread..Builder..spawn_unchecked_..MaybeDangling$LT$$LT$rayon_core..registry..DefaultSpawn$u20$as$u20$rayon_core..registry..ThreadSpawn$GT$..spawn..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h643ab4d61bbbda3fE.exit.i": ; preds = %84, %"_ZN4core3ptr129drop_in_place$LT$core..option..Option$LT$alloc..sync..Arc$LT$std..sync..mutex..Mutex$LT$alloc..vec..Vec$LT$u8$GT$$GT$$GT$$GT$$GT$17ha9001a46134deedaE.exit31.i", %75, %"_ZN4core3ptr144drop_in_place$LT$$LT$rayon_core..registry..DefaultSpawn$u20$as$u20$rayon_core..registry..ThreadSpawn$GT$..spawn..$u7b$$u7b$closure$u7d$$u7d$$GT$17h1ae2b47a0ded9c1aE.exit.i", %"_ZN4core3ptr205drop_in_place$LT$std..thread..Builder..spawn_unchecked_..MaybeDangling$LT$$LT$rayon_core..registry..DefaultSpawn$u20$as$u20$rayon_core..registry..ThreadSpawn$GT$..spawn..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h643ab4d61bbbda3fE.exit.thread.i" + %.pn.pn46667487.i = phi { ptr, i32 } [ %47, %.thread48.i ], [ %lpad.thr_comm.i, %"_ZN4core3ptr144drop_in_place$LT$$LT$rayon_core..registry..DefaultSpawn$u20$as$u20$rayon_core..registry..ThreadSpawn$GT$..spawn..$u7b$$u7b$closure$u7d$$u7d$$GT$17h1ae2b47a0ded9c1aE.exit.i" ], [ %.pn.pn47.i, %"_ZN4core3ptr129drop_in_place$LT$core..option..Option$LT$alloc..sync..Arc$LT$std..sync..mutex..Mutex$LT$alloc..vec..Vec$LT$u8$GT$$GT$$GT$$GT$$GT$17ha9001a46134deedaE.exit31.i" ], [ %.pn.pn47.i, %75 ], [ %.pn.pn47.i, %84 ] %86 = getelementptr inbounds nuw i8, ptr %0, i64 8 call void @llvm.experimental.noalias.scope.decl(metadata !176) call void @llvm.experimental.noalias.scope.decl(metadata !179) diff --git a/bench/recastnavigation/optimized/DetourCrowd.ll b/bench/recastnavigation/optimized/DetourCrowd.ll index e724131821a..4b7124d9653 100644 --- a/bench/recastnavigation/optimized/DetourCrowd.ll +++ b/bench/recastnavigation/optimized/DetourCrowd.ll @@ -1675,16 +1675,15 @@ _ZNK14dtPathCorridor11getLastPolyEv.exit: ; preds = %122, %123 %131 = getelementptr inbounds nuw i8, ptr %22, i64 596 %132 = load i32, ptr %131, align 4 %.not55 = icmp ne i32 %130, %132 - %spec.select57 = or i1 %.not55, %spec.select - br label %133 + %spec.select57 = or i1 %spec.select, %.not55 + br i1 %spec.select57, label %134, label %_ZN7dtCrowd23requestMoveTargetReplanEijPKf.exit -133: ; preds = %_ZNK14dtPathCorridor11getLastPolyEv.exit, %116, %119, %108 - %.4 = phi i1 [ %spec.select, %119 ], [ %spec.select, %116 ], [ %spec.select, %108 ], [ %spec.select57, %_ZNK14dtPathCorridor11getLastPolyEv.exit ] +133: ; preds = %116, %119, %108 %.not56 = icmp ne i8 %114, 0 - %or.cond.not = and i1 %.not56, %.4 + %or.cond.not = and i1 %spec.select, %.not56 br i1 %or.cond.not, label %134, label %_ZN7dtCrowd23requestMoveTargetReplanEijPKf.exit -134: ; preds = %133 +134: ; preds = %133, %_ZNK14dtPathCorridor11getLastPolyEv.exit %135 = icmp sgt i32 %34, -1 %136 = load i32, ptr %0, align 8 %.not.i59 = icmp sgt i32 %136, %34 @@ -1721,7 +1720,7 @@ _ZNK14dtPathCorridor11getLastPolyEv.exit: ; preds = %122, %123 store i8 %..i, ptr %154, align 8 br label %_ZN7dtCrowd23requestMoveTargetReplanEijPKf.exit -_ZN7dtCrowd23requestMoveTargetReplanEijPKf.exit: ; preds = %.sink.split.i, %134, %77, %77, %133, %20, %68 +_ZN7dtCrowd23requestMoveTargetReplanEijPKf.exit: ; preds = %.sink.split.i, %134, %_ZNK14dtPathCorridor11getLastPolyEv.exit, %77, %77, %133, %20, %68 %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 %._crit_edge, label %20, !llvm.loop !17 diff --git a/bench/ruby/optimized/bignum.ll b/bench/ruby/optimized/bignum.ll index 52c03719812..8c5f1937c8f 100644 --- a/bench/ruby/optimized/bignum.ll +++ b/bench/ruby/optimized/bignum.ll @@ -17189,16 +17189,15 @@ BIGNUM_LEN.exit38: ; preds = %76, %81 %117 = getelementptr i32, ptr %116, i64 %112 %118 = load i32, ptr %117, align 4, !tbaa !18 %119 = icmp ult i32 %115, %118 - %120 = select i1 %119, i32 -1, i32 1 + %120 = select i1 %119, i64 -1, i64 1 br label %bary_cmp.exit bary_cmp.exit: ; preds = %108, %.critedge2.i, %98, %._crit_edge.i41, %111 - %.032.i = phi i32 [ %120, %111 ], [ -1, %.critedge2.i ], [ 1, %98 ], [ 0, %._crit_edge.i41 ], [ 0, %108 ] - %121 = sub nsw i32 0, %.032.i - %122 = select i1 %60, i32 %.032.i, i32 %121 - %123 = sext i32 %122 to i64 - %124 = shl nsw i64 %123, 1 - %125 = or disjoint i64 %124, 1 + %.032.i = phi i64 [ %120, %111 ], [ -1, %.critedge2.i ], [ 1, %98 ], [ 0, %._crit_edge.i41 ], [ 0, %108 ] + %121 = sub nsw i64 0, %.032.i + %122 = select i1 %60, i64 %.032.i, i64 %121 + %123 = shl nsw i64 %122, 1 + %124 = or disjoint i64 %123, 1 br label %131 rbimpl_RB_TYPE_P_fastpath.exit.thread: ; preds = %48 @@ -17221,7 +17220,7 @@ RB_FLOAT_TYPE_P.exit.thread55: ; preds = %rbimpl_RB_TYPE_P_fa br label %131 131: ; preds = %45, %bigfixize.exit.thread, %129, %RB_FLOAT_TYPE_P.exit.thread55, %RB_FLOAT_TYPE_P.exit.thread, %bary_cmp.exit - %.1 = phi i64 [ %130, %129 ], [ %125, %bary_cmp.exit ], [ %127, %RB_FLOAT_TYPE_P.exit.thread ], [ %128, %RB_FLOAT_TYPE_P.exit.thread55 ], [ %47, %45 ], [ -1, %bigfixize.exit.thread ] + %.1 = phi i64 [ %130, %128 ], [ %124, %bary_cmp.exit ], [ %127, %RB_FLOAT_TYPE_P.exit.thread ], [ %128, %RB_FLOAT_TYPE_P.exit.thread55 ], [ %47, %45 ], [ -1, %bigfixize.exit.thread ] ret i64 %.1 } diff --git a/bench/rust-analyzer-rs/optimized/1r5fg81ha4dpx7ns.ll b/bench/rust-analyzer-rs/optimized/1r5fg81ha4dpx7ns.ll index 605c1c7b95c..0eea6d0bc21 100644 --- a/bench/rust-analyzer-rs/optimized/1r5fg81ha4dpx7ns.ll +++ b/bench/rust-analyzer-rs/optimized/1r5fg81ha4dpx7ns.ll @@ -28806,7 +28806,7 @@ _ZN8smol_str7SmolStr9to_string17h93dac77a42b56f9eE.exit: ; preds = %.noexc166 %504 = getelementptr inbounds nuw i8, ptr %1, i64 96 %505 = load i64, ptr %504, align 8, !range !2270, !noundef !10 %506 = icmp ne i64 %505, -9223372036854775808 - %or.cond5 = and i1 %506, %.1103 + %or.cond5 = and i1 %.1103, %506 br i1 %or.cond5, label %509, label %477 507: ; preds = %500 @@ -32019,11 +32019,11 @@ define hidden void @_ZN14ide_completion6render13union_literal20render_union_lite br label %81 71: ; preds = %.body, %74 - %.1 = phi i1 [ %.0, %74 ], [ %.3, %.body ] + %.1 = phi i1 [ %.0, %74 ], [ %83, %.body ] %.pn131 = phi { ptr, i32 } [ %75, %74 ], [ %.pn129, %.body ] %72 = load i8, ptr %3, align 8, !range !5168, !noundef !10 %73 = icmp ne i8 %72, 5 - %or.cond = and i1 %73, %.1 + %or.cond = and i1 %.1, %73 br i1 %or.cond, label %523, label %"_ZN4core3ptr50drop_in_place$LT$hir_expand..mod_path..ModPath$GT$17hc8bc511ef4ec97d6E.exit229" 74: ; preds = %.noexc224, %511, %.noexc214, %473, %76 @@ -32064,7 +32064,6 @@ define hidden void @_ZN14ide_completion6render13union_literal20render_union_lite to label %138 unwind label %136 .body: ; preds = %.body141, %104, %88, %453, %.body136, %110 - %.3 = phi i1 [ %83, %453 ], [ true, %.body136 ], [ true, %110 ], [ %83, %88 ], [ true, %104 ], [ false, %.body141 ] %.pn129 = phi { ptr, i32 } [ %.pn127, %453 ], [ %126, %.body136 ], [ %111, %110 ], [ %89, %88 ], [ %105, %104 ], [ %.pn, %.body141 ] invoke void @"_ZN4core3ptr43drop_in_place$LT$hir_expand..name..Name$GT$17h852c0cc8bc06109eE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %67) #41 to label %71 unwind label %133 @@ -32381,7 +32380,7 @@ define hidden void @_ZN14ide_completion6render13union_literal20render_union_lite br label %132 .thread305: ; preds = %268, %.body164, %521, %251, %.thread, %217, %199, %179 - %.pn123.pn.pn = phi { ptr, i32 } [ %.pn123.pn255, %.thread ], [ %lpad.thr_comm, %217 ], [ %200, %199 ], [ %180, %179 ], [ %lpad.thr_comm.split-lp, %251 ], [ %.pn121310, %521 ], [ %.pn119, %.body164 ], [ %lpad.thr_comm.split-lp344, %268 ] + %.pn123.pn.pn = phi { ptr, i32 } [ %.pn123.pn255, %.thread ], [ %lpad.thr_comm, %217 ], [ %200, %199 ], [ %180, %179 ], [ %lpad.thr_comm.split-lp, %251 ], [ %lpad.thr_comm.split-lp344, %.body164 ], [ %.pn119, %268 ], [ %.pn121269, %521 ] invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17hb173e8889283780eE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %65) #41 to label %453 unwind label %133 @@ -32429,7 +32428,7 @@ default.unreachable: ; preds = %220, %181 %200 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr38drop_in_place$LT$smol_str..SmolStr$GT$17h5ba97c416cdfadc7E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %54) #41 - to label %.thread305 unwind label %133 + to label %.thread314 unwind label %133 201: ; preds = %184, %190, %195 %.pn5.i = phi ptr [ %189, %184 ], [ %192, %190 ], [ %198, %195 ] @@ -32660,10 +32659,10 @@ _ZN14ide_completion6render13RenderContext12source_range17h251998eb486cab67E.exit to label %282 unwind label %280 279: ; preds = %.thread312, %280 - %.3103 = phi i1 [ %.2102, %280 ], [ %.4104, %.thread312 ] - %.pn119 = phi { ptr, i32 } [ %281, %280 ], [ %.pn115.pn.pn, %.thread312 ] + %.3103 = phi i1 [ %.2102, %280 ], [ %.4104, %.thread318 ] + %.pn119 = phi { ptr, i32 } [ %281, %280 ], [ %.pn115.pn.pn, %.thread318 ] invoke void @"_ZN4core3ptr54drop_in_place$LT$alloc..vec..Vec$LT$hir..Field$GT$$GT$17h21740f6ed1928a33E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %49) #41 - to label %.body164 unwind label %133 + to label %268 unwind label %133 280: ; preds = %426, %291, %273 %.2102 = phi i1 [ true, %273 ], [ true, %291 ], [ false, %426 ] @@ -32747,8 +32746,8 @@ _ZN14ide_completion6render13RenderContext12source_range17h251998eb486cab67E.exit br label %484 .thread312: ; preds = %.thread293, %.thread289, %.thread278, %483, %310 - %.4104 = phi i1 [ true, %483 ], [ true, %310 ], [ true, %.thread293 ], [ true, %.thread289 ], [ false, %.thread278 ] - %.pn115.pn.pn = phi { ptr, i32 } [ %.pn115.pn276, %483 ], [ %311, %310 ], [ %418, %.thread293 ], [ %403, %.thread289 ], [ %351, %.thread278 ] + %.4104 = phi i1 [ true, %483 ], [ true, %310 ], [ true, %.thread302 ], [ true, %.thread298 ], [ false, %.thread287 ] + %.pn115.pn.pn = phi { ptr, i32 } [ %.pn115.pn276, %483 ], [ %311, %310 ], [ %418, %.thread302 ], [ %403, %.thread298 ], [ %351, %.thread287 ] invoke void @"_ZN4core3ptr54drop_in_place$LT$alloc..vec..Vec$LT$hir..Field$GT$$GT$17h21740f6ed1928a33E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %48) #41 to label %279 unwind label %133 @@ -33226,7 +33225,7 @@ _ZN14ide_completion6render13RenderContext4docs17h4d21e59f5904ee33E.exit: ; preds br label %456 453: ; preds = %454, %.thread305 - %.pn127 = phi { ptr, i32 } [ %455, %454 ], [ %.pn123.pn.pn, %.thread305 ] + %.pn127 = phi { ptr, i32 } [ %455, %454 ], [ %.pn123.pn.pn, %.thread314 ] invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17hb173e8889283780eE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %66) #41 to label %.body unwind label %133 @@ -33323,14 +33322,14 @@ common.resume: ; preds = %"_ZN4core3ptr50drop ret void 482: ; preds = %.thread301, %.thread283 - %eh.lpad-body189288 = phi { ptr, i32 } [ %369, %.thread283 ], [ %lpad.thr_comm299, %.thread301 ] + %eh.lpad-body189288 = phi { ptr, i32 } [ %369, %.thread292 ], [ %lpad.thr_comm299, %.thread310 ] invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17hb173e8889283780eE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %39) #41 to label %483 unwind label %133 483: ; preds = %482, %352, %.thread271 - %.pn115.pn276 = phi { ptr, i32 } [ %347, %.thread271 ], [ %eh.lpad-body189288, %482 ], [ %lpad.thr_comm.split-lp300, %352 ] + %.pn115.pn276 = phi { ptr, i32 } [ %347, %.thread280 ], [ %eh.lpad-body189288, %482 ], [ %lpad.thr_comm.split-lp300, %352 ] invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17hb173e8889283780eE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %46) #41 - to label %.thread312 unwind label %133 + to label %.thread318 unwind label %133 484: ; preds = %308, %304, %.noexc168 call void @llvm.lifetime.end.p0(ptr nonnull %19), !noalias !6932 @@ -33444,9 +33443,9 @@ common.resume: ; preds = %"_ZN4core3ptr50drop unreachable 521: ; preds = %.thread345, %.body164.thread, %.body164 - %.pn121310 = phi { ptr, i32 } [ %267, %.body164.thread ], [ %.pn119, %.body164 ], [ %lpad.thr_comm343, %.thread345 ] + %.pn121310 = phi { ptr, i32 } [ %.pn119, %268 ], [ %267, %.body164.thread ], [ %lpad.thr_comm343, %.body164.thread274 ] invoke void @"_ZN4core3ptr50drop_in_place$LT$ide_completion..item..Builder$GT$17hdc3cf802c61ba50eE"(ptr noalias noundef nonnull align 8 dereferenceable(320) %51) #41 - to label %.thread305 unwind label %133 + to label %.thread314 unwind label %133 522: ; preds = %_ZN14ide_completion6render13RenderContext12source_range17h251998eb486cab67E.exit, %250, %.noexc159, %"_ZN4core3ptr38drop_in_place$LT$smol_str..SmolStr$GT$17h5ba97c416cdfadc7E.exit161" %.196.ph = phi i1 [ true, %"_ZN4core3ptr38drop_in_place$LT$smol_str..SmolStr$GT$17h5ba97c416cdfadc7E.exit161" ], [ true, %.noexc159 ], [ true, %250 ], [ false, %_ZN14ide_completion6render13RenderContext12source_range17h251998eb486cab67E.exit ] @@ -33458,7 +33457,7 @@ common.resume: ; preds = %"_ZN4core3ptr50drop .thread: ; preds = %218, %238, %217 %.pn123.pn255 = phi { ptr, i32 } [ %lpad.thr_comm, %217 ], [ %219, %218 ], [ %239, %238 ] invoke void @"_ZN4core3ptr38drop_in_place$LT$smol_str..SmolStr$GT$17h5ba97c416cdfadc7E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %55) #41 - to label %.thread305 unwind label %133 + to label %.thread314 unwind label %133 "_ZN4core3ptr50drop_in_place$LT$hir_expand..mod_path..ModPath$GT$17hc8bc511ef4ec97d6E.exit229": ; preds = %523, %71 invoke void @"_ZN4core3ptr58drop_in_place$LT$ide_completion..render..RenderContext$GT$17h8018363ebf04c8ecE"(ptr noalias noundef nonnull align 8 dereferenceable(120) %1) #41 diff --git a/bench/rust-analyzer-rs/optimized/3r60zyztvepuy9ka.ll b/bench/rust-analyzer-rs/optimized/3r60zyztvepuy9ka.ll index a551b360d20..a9d8837793b 100644 --- a/bench/rust-analyzer-rs/optimized/3r60zyztvepuy9ka.ll +++ b/bench/rust-analyzer-rs/optimized/3r60zyztvepuy9ka.ll @@ -1271,7 +1271,7 @@ define hidden noundef nonnull ptr @_ZN6syntax3ast4make10block_expr17ha75901efbf0 br i1 %30, label %._crit_edge, label %108 "_ZN4core3ptr56drop_in_place$LT$syntax..ast..generated..nodes..Stmt$GT$17h85a52133cb3782c6E.exit": ; preds = %102, %"_ZN4core3ptr59drop_in_place$LT$syntax..ast..generated..nodes..LetStmt$GT$17h556017dd6827bb8aE.exit.sink.split.i", %31 - %.pn = phi { ptr, i32 } [ %32, %31 ], [ %103, %"_ZN4core3ptr59drop_in_place$LT$syntax..ast..generated..nodes..LetStmt$GT$17h556017dd6827bb8aE.exit.sink.split.i" ], [ %103, %102 ] + %.pn = phi { ptr, i32 } [ %32, %31 ], [ %103, %"_ZN4core3ptr59drop_in_place$LT$syntax..ast..generated..nodes..LetStmt$GT$17h556017dd6827bb8aE.exit.sink.split.i" ], [ %103, %103 ] invoke void @"_ZN4core3ptr86drop_in_place$LT$core..option..IntoIter$LT$syntax..ast..generated..nodes..Stmt$GT$$GT$17hf0f03be56a46a444E"(ptr noalias noundef nonnull align 8 dereferenceable(16) %16) #14 to label %"_ZN4core3ptr56drop_in_place$LT$syntax..ast..generated..nodes..Expr$GT$17h87ac9ab3623e59cdE.exit" unwind label %60 @@ -1490,7 +1490,7 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit: ; preds = %62 call void @_ZN5rowan6cursor4free17ha2e1b2c8c83f79d6E(ptr noundef nonnull %2) br label %"_ZN4core3ptr56drop_in_place$LT$syntax..ast..generated..nodes..Expr$GT$17h87ac9ab3623e59cdE.exit62" -"_ZN4core3ptr56drop_in_place$LT$syntax..ast..generated..nodes..Expr$GT$17h87ac9ab3623e59cdE.exit69": ; preds = %120, %"_ZN4core3ptr61drop_in_place$LT$syntax..ast..generated..nodes..YieldExpr$GT$17h9d683dd9cb63267aE.exit.sink.split.i67", %19 +"_ZN4core3ptr56drop_in_place$LT$syntax..ast..generated..nodes..Expr$GT$17h87ac9ab3623e59cdE.exit69": ; preds = %19 br i1 %.1, label %126, label %"_ZN4core3ptr84drop_in_place$LT$core..option..Option$LT$syntax..ast..generated..nodes..Stmt$GT$$GT$17h93539aad082bb019E.exit" 102: ; preds = %108 @@ -1528,7 +1528,7 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit: ; preds = %62 store ptr %13, ptr %110, align 8, !alias.scope !310, !noalias !313 store i64 1, ptr %109, align 8, !alias.scope !310, !noalias !313 %114 = invoke noundef zeroext i1 @_ZN4core3fmt5write17he40921d4802ce2acE(ptr noundef nonnull align 1 %17, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.1c1dd3933f2bc4a41a1833cda07bf943.0, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %14) - to label %115 unwind label %102 + to label %116 unwind label %102 115: ; preds = %108 call void @llvm.lifetime.end.p0(ptr nonnull %14) @@ -1559,10 +1559,13 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.exit: ; preds = %62 invoke void @_ZN5rowan6cursor4free17ha2e1b2c8c83f79d6E(ptr noundef nonnull %2) to label %"_ZN4core3ptr56drop_in_place$LT$syntax..ast..generated..nodes..Expr$GT$17h87ac9ab3623e59cdE.exit69" unwind label %60 -"_ZN4core3ptr84drop_in_place$LT$core..option..Option$LT$syntax..ast..generated..nodes..Stmt$GT$$GT$17h93539aad082bb019E.exit": ; preds = %129, %126, %"_ZN4core3ptr59drop_in_place$LT$syntax..ast..generated..nodes..LetStmt$GT$17h556017dd6827bb8aE.exit.sink.split.i.i", %"_ZN4core3ptr56drop_in_place$LT$syntax..ast..generated..nodes..Expr$GT$17h87ac9ab3623e59cdE.exit69" +"_ZN4core3ptr84drop_in_place$LT$core..option..Option$LT$syntax..ast..generated..nodes..Stmt$GT$$GT$17h93539aad082bb019E.exit": ; preds = %"_ZN4core3ptr61drop_in_place$LT$syntax..ast..generated..nodes..YieldExpr$GT$17h9d683dd9cb63267aE.exit.sink.split.i67", %121 + br i1 %.1, label %127, label %"_ZN4core3ptr84drop_in_place$LT$core..option..Option$LT$syntax..ast..generated..nodes..Stmt$GT$$GT$17h93539aad082bb019E.exit" + +"_ZN4core3ptr84drop_in_place$LT$core..option..Option$LT$syntax..ast..generated..nodes..Stmt$GT$$GT$17h93539aad082bb019E.exit": ; preds = %130, %127, %"_ZN4core3ptr59drop_in_place$LT$syntax..ast..generated..nodes..LetStmt$GT$17h556017dd6827bb8aE.exit.sink.split.i.i", %"_ZN4core3ptr56drop_in_place$LT$syntax..ast..generated..nodes..Expr$GT$17h87ac9ab3623e59cdE.exit69", %102 resume { ptr, i32 } %.pn27 -126: ; preds = %"_ZN4core3ptr56drop_in_place$LT$syntax..ast..generated..nodes..Expr$GT$17h87ac9ab3623e59cdE.exit69" +126: ; preds = %"_ZN4core3ptr56drop_in_place$LT$syntax..ast..generated..nodes..Expr$GT$17h87ac9ab3623e59cdE.exit69", %102 %.val42 = load i64, ptr %0, align 8, !range !316, !noundef !22 %127 = getelementptr inbounds nuw i8, ptr %0, i64 8 %.val43 = load ptr, ptr %127, align 8 diff --git a/bench/rust-analyzer-rs/optimized/577813mpo9tvqnpt.ll b/bench/rust-analyzer-rs/optimized/577813mpo9tvqnpt.ll index 032ccec78f6..252859c9fef 100644 --- a/bench/rust-analyzer-rs/optimized/577813mpo9tvqnpt.ll +++ b/bench/rust-analyzer-rs/optimized/577813mpo9tvqnpt.ll @@ -24543,11 +24543,11 @@ define internal fastcc void @_ZN14ide_completion6render7literal6render17h8332190 .body: ; preds = %90, %71, %"_ZN4core3ptr50drop_in_place$LT$hir_expand..mod_path..ModPath$GT$17hc8bc511ef4ec97d6E.exit" %.1104 = phi i8 [ %.4107, %"_ZN4core3ptr50drop_in_place$LT$hir_expand..mod_path..ModPath$GT$17hc8bc511ef4ec97d6E.exit" ], [ %.0103, %71 ], [ 1, %90 ] %.195 = phi i8 [ %.498, %"_ZN4core3ptr50drop_in_place$LT$hir_expand..mod_path..ModPath$GT$17hc8bc511ef4ec97d6E.exit" ], [ %.094, %71 ], [ 1, %90 ] - %.1 = phi i1 [ %.3, %"_ZN4core3ptr50drop_in_place$LT$hir_expand..mod_path..ModPath$GT$17hc8bc511ef4ec97d6E.exit" ], [ %.074, %71 ], [ true, %90 ] + %.1 = phi i1 [ %138, %"_ZN4core3ptr50drop_in_place$LT$hir_expand..mod_path..ModPath$GT$17hc8bc511ef4ec97d6E.exit" ], [ %.074, %71 ], [ true, %90 ] %.pn123 = phi { ptr, i32 } [ %.pn121, %"_ZN4core3ptr50drop_in_place$LT$hir_expand..mod_path..ModPath$GT$17hc8bc511ef4ec97d6E.exit" ], [ %72, %71 ], [ %91, %90 ] %69 = load i8, ptr %6, align 8, !range !2573, !noundef !8 %70 = icmp ne i8 %69, 5 - %or.cond3 = and i1 %70, %.1 + %or.cond3 = and i1 %.1, %70 br i1 %or.cond3, label %574, label %"_ZN4core3ptr50drop_in_place$LT$hir_expand..mod_path..ModPath$GT$17hc8bc511ef4ec97d6E.exit231" 71: ; preds = %"_ZN4core3ptr50drop_in_place$LT$hir_expand..mod_path..ModPath$GT$17hc8bc511ef4ec97d6E.exit219", %114, %99, %87, %84, %67, %65 @@ -24845,7 +24845,6 @@ default.unreachable: ; preds = %147 "_ZN4core3ptr50drop_in_place$LT$hir_expand..mod_path..ModPath$GT$17hc8bc511ef4ec97d6E.exit": ; preds = %"_ZN4core3ptr50drop_in_place$LT$hir_expand..mod_path..ModPath$GT$17hc8bc511ef4ec97d6E.exit143", %.body140, %173, %169 %.4107 = phi i8 [ %.3106, %169 ], [ 0, %173 ], [ 1, %.body140 ], [ %.073, %"_ZN4core3ptr50drop_in_place$LT$hir_expand..mod_path..ModPath$GT$17hc8bc511ef4ec97d6E.exit143" ] %.498 = phi i8 [ %.397, %169 ], [ 1, %173 ], [ 1, %.body140 ], [ %.7, %"_ZN4core3ptr50drop_in_place$LT$hir_expand..mod_path..ModPath$GT$17hc8bc511ef4ec97d6E.exit143" ] - %.3 = phi i1 [ %138, %169 ], [ true, %173 ], [ false, %.body140 ], [ %138, %"_ZN4core3ptr50drop_in_place$LT$hir_expand..mod_path..ModPath$GT$17hc8bc511ef4ec97d6E.exit143" ] %.pn121 = phi { ptr, i32 } [ %170, %169 ], [ %174, %173 ], [ %eh.lpad-body141, %.body140 ], [ %.pn119, %"_ZN4core3ptr50drop_in_place$LT$hir_expand..mod_path..ModPath$GT$17hc8bc511ef4ec97d6E.exit143" ] invoke void @"_ZN4core3ptr54drop_in_place$LT$alloc..vec..Vec$LT$hir..Field$GT$$GT$17h21740f6ed1928a33E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %59) #26 to label %.body unwind label %179 @@ -25124,8 +25123,8 @@ _ZN4core4iter6traits8iterator8Iterator7collect17h988ad945460ec732E.llvm.16702486 to label %.body146 unwind label %179 245: ; preds = %.thread350, %552, %551 - %.8 = phi i8 [ %.10266, %552 ], [ %.10266, %551 ], [ %.16, %.thread350 ] - %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn270, %552 ], [ %.pn.pn.pn.pn270, %551 ], [ %lpad.thr_comm.split-lp, %.thread350 ] + %.8 = phi i8 [ %.10266, %552 ], [ %.10266, %551 ], [ %.16, %.thread355 ] + %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn270, %552 ], [ %.pn.pn.pn.pn270, %551 ], [ %lpad.thr_comm.split-lp, %.thread355 ] br i1 %.1102, label %554, label %508 .thread255: ; preds = %254, %257, %266 @@ -26033,7 +26032,7 @@ common.resume: ; preds = %570, %547, %"_ZN4co %.10266 = phi i8 [ %.10267, %.thread340.thread ], [ %.14298, %.thread340 ] br i1 %.176268, label %552, label %245 -.thread340.thread: ; preds = %303, %.thread273, %.thread261, %.thread340 +.thread340.thread: ; preds = %.thread273, %303, %.thread261, %.thread340 %.pn.pn.pn.pn271 = phi { ptr, i32 } [ %292, %.thread261 ], [ %.pn304, %.thread340 ], [ %550, %303 ], [ %.pn.pn.pn282, %.thread273 ] %.176269 = phi i1 [ true, %.thread261 ], [ %.5302, %.thread340 ], [ true, %303 ], [ true, %.thread273 ] %.10267 = phi i8 [ 1, %.thread261 ], [ %.14298, %.thread340 ], [ 1, %303 ], [ 1, %.thread273 ] diff --git a/bench/rustfmt-rs/optimized/x2cb3fifm47d4t5.ll b/bench/rustfmt-rs/optimized/x2cb3fifm47d4t5.ll index 04b75f872e6..14a37ca60de 100644 --- a/bench/rustfmt-rs/optimized/x2cb3fifm47d4t5.ll +++ b/bench/rustfmt-rs/optimized/x2cb3fifm47d4t5.ll @@ -22747,9 +22747,9 @@ define hidden void @_ZN15rustfmt_nightly7imports7UseTree9normalize17he7fddc60269 %26 = icmp eq i64 %25, 0 br i1 %26, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h4ce2161b51294ec1E.exit.thread", label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h4ce2161b51294ec1E.exit" -27: ; preds = %242, %241, %240 - %.1 = phi i1 [ %.2173212218, %242 ], [ %.2173.ph, %240 ], [ %.2173.ph, %241 ] - %.pn103 = phi { ptr, i32 } [ %.pn101174211219, %242 ], [ %.pn101174.ph, %240 ], [ %.pn101174.ph, %241 ] +27: ; preds = %242, %243, %242 + %.1 = phi i1 [ %.2173212218, %.thread209 ], [ %.2173.ph, %242 ], [ %.2173207, %243 ] + %.pn103 = phi { ptr, i32 } [ %.pn101174211219, %.thread209 ], [ %.pn101174.ph, %242 ], [ %.pn101174205, %243 ] br i1 %.1, label %.thread202, label %.critedge114 28: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h4ce2161b51294ec1E.exit.thread" @@ -22903,8 +22903,8 @@ define hidden void @_ZN15rustfmt_nightly7imports7UseTree9normalize17he7fddc60269 to label %84 unwind label %.thread180 .thread180: ; preds = %.critedge108, %.thread241, %106, %183, %208, %218, %148, %151, %"_ZN77_$LT$alloc..string..String$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2ne17hc7a77847675160bbE.exit.thread", %157, %163 - %.281 = phi i1 [ false, %218 ], [ true, %208 ], [ false, %183 ], [ true, %106 ], [ true, %.thread241 ], [ true, %.critedge108 ], [ true, %148 ], [ true, %151 ], [ true, %"_ZN77_$LT$alloc..string..String$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2ne17hc7a77847675160bbE.exit.thread" ], [ true, %157 ], [ true, %163 ] - %.4 = phi i1 [ false, %218 ], [ true, %208 ], [ true, %183 ], [ true, %106 ], [ true, %.thread241 ], [ true, %.critedge108 ], [ true, %148 ], [ true, %151 ], [ true, %"_ZN77_$LT$alloc..string..String$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2ne17hc7a77847675160bbE.exit.thread" ], [ true, %157 ], [ true, %163 ] + %.281 = phi i1 [ false, %218 ], [ true, %208 ], [ false, %183 ], [ true, %106 ], [ true, %.thread251 ], [ true, %.critedge108 ], [ true, %148 ], [ true, %151 ], [ true, %"_ZN77_$LT$alloc..string..String$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2ne17hc7a77847675160bbE.exit.thread" ], [ true, %157 ], [ true, %163 ] + %.4 = phi i1 [ false, %218 ], [ true, %208 ], [ true, %183 ], [ true, %106 ], [ true, %.thread251 ], [ true, %.critedge108 ], [ true, %148 ], [ true, %151 ], [ true, %"_ZN77_$LT$alloc..string..String$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2ne17hc7a77847675160bbE.exit.thread" ], [ true, %157 ], [ true, %163 ] %83 = landingpad { ptr, i32 } cleanup br label %.thread175 @@ -22956,7 +22956,7 @@ define hidden void @_ZN15rustfmt_nightly7imports7UseTree9normalize17he7fddc60269 invoke fastcc void @"_ZN4core3ptr61drop_in_place$LT$rustfmt_nightly..imports..UseSegmentKind$GT$17h021bb7b76df88697E"(ptr noalias noundef align 8 dereferenceable(48) %22) #60 to label %.thread175 unwind label %101 -101: ; preds = %252, %246, %.noexc156, %.thread202, %242, %241, %.body153, %197, %100 +101: ; preds = %252, %246, %.noexc156, %.thread202, %242, %243, %.body153, %197, %100 %102 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h7bbd4fcd6f160435E() #59 @@ -23110,7 +23110,7 @@ define hidden void @_ZN15rustfmt_nightly7imports7UseTree9normalize17he7fddc60269 142: ; preds = %.loopexit.split-lp.i, %.loopexit.i %lpad.phi.i = phi { ptr, i32 } [ %lpad.loopexit.i, %.loopexit.i ], [ %lpad.loopexit.split-lp.i, %.loopexit.split-lp.i ] invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h65321bb4306ac23aE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %11) #60 - to label %.thread175 unwind label %144, !noalias !6490 + to label %.thread175.thread unwind label %144, !noalias !6490 143: ; preds = %.noexc7.i, %.noexc.i call void @llvm.lifetime.end.p0(ptr nonnull %9), !noalias !6493 @@ -23243,7 +23243,7 @@ _ZN15rustfmt_nightly7imports7UseTree11has_comment17hea44b230ad42a0a7E.exit.threa %180 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr61drop_in_place$LT$rustfmt_nightly..imports..UseSegmentKind$GT$17h021bb7b76df88697E.llvm.17249484671449717553"(ptr noalias noundef nonnull align 8 dereferenceable(56) %14) - to label %.thread202 unwind label %181 + to label %.thread216 unwind label %181 181: ; preds = %179 %182 = landingpad { ptr, i32 } @@ -23445,31 +23445,38 @@ _ZN5alloc5slice11stable_sort17h35b75b64f0e783d3E.exit: ; preds = %185 call void @"_ZN4core3ptr77drop_in_place$LT$alloc..vec..Vec$LT$rustfmt_nightly..imports..UseTree$GT$$GT$17hfad38442bbea55ccE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.sroa.6.0..sroa_idx159) br label %.thread199 -.thread175: ; preds = %66, %57, %100, %96, %197, %.body153, %142, %.thread180 - %.pn101174.ph = phi { ptr, i32 } [ %eh.lpad-body154, %.body153 ], [ %198, %197 ], [ %97, %96 ], [ %97, %100 ], [ %58, %57 ], [ %67, %66 ], [ %lpad.phi.i, %142 ], [ %83, %.thread180 ] - %.2173.ph = phi i1 [ %.5.lpad-body, %.body153 ], [ true, %197 ], [ true, %96 ], [ true, %100 ], [ true, %57 ], [ true, %66 ], [ true, %142 ], [ %.4, %.thread180 ] - %.079172.ph = phi i1 [ false, %.body153 ], [ false, %197 ], [ true, %96 ], [ true, %100 ], [ true, %57 ], [ true, %66 ], [ true, %142 ], [ %.281, %.thread180 ] +.thread175: ; preds = %66, %57, %100, %96, %197, %.body153, %.thread180 + %.pn101174.ph = phi { ptr, i32 } [ %eh.lpad-body154, %.body153 ], [ %198, %197 ], [ %97, %96 ], [ %97, %100 ], [ %58, %57 ], [ %67, %66 ], [ %83, %.thread180 ] + %.2173.ph = phi i1 [ %.5.lpad-body, %.body153 ], [ true, %197 ], [ true, %96 ], [ true, %100 ], [ true, %57 ], [ true, %66 ], [ %.4, %.thread180 ] + %.079172.ph = phi i1 [ false, %.body153 ], [ false, %197 ], [ true, %96 ], [ true, %100 ], [ true, %57 ], [ true, %66 ], [ %.281, %.thread180 ] %.pr207 = load i64, ptr %23, align 8 %239 = icmp eq i64 %.pr207, -9223372036854775804 - br i1 %239, label %240, label %241 + br i1 %239, label %242, label %243 -240: ; preds = %.thread175 - br i1 %.079172.ph, label %242, label %27 +240: ; preds = %142 + %240 = load i64, ptr %23, align 8, !range !1460, !noundef !4 + %241 = icmp eq i64 %240, -9223372036854775804 + br i1 %241, label %.thread209, label %243 -241: ; preds = %.thread175 +242: ; preds = %.thread175 + br i1 %.079172.ph, label %.thread209, label %27 + +243: ; preds = %.thread175.thread, %.thread175 + %.2173207 = phi i1 [ true, %.thread175.thread ], [ %.2173.ph, %.thread175 ] + %.pn101174205 = phi { ptr, i32 } [ %lpad.phi.i, %.thread175.thread ], [ %.pn101174.ph, %.thread175 ] invoke fastcc void @"_ZN4core3ptr61drop_in_place$LT$rustfmt_nightly..imports..UseSegmentKind$GT$17h021bb7b76df88697E"(ptr noalias noundef align 8 dereferenceable(48) %23) #60 to label %27 unwind label %101 -242: ; preds = %.thread214, %240 - %.pn101174211219 = phi { ptr, i32 } [ %190, %.thread214 ], [ %.pn101174.ph, %240 ] - %.2173212218 = phi i1 [ true, %.thread214 ], [ %.2173.ph, %240 ] +242: ; preds = %.thread214, %240, %242 + %.pn101174211219 = phi { ptr, i32 } [ %.pn101174.ph, %242 ], [ %lpad.phi.i, %.thread175.thread ], [ %190, %.thread226 ] + %.2173212218 = phi i1 [ %.2173.ph, %242 ], [ true, %.thread175.thread ], [ true, %.thread226 ] invoke void @"_ZN4core3ptr77drop_in_place$LT$alloc..vec..Vec$LT$rustfmt_nightly..imports..UseTree$GT$$GT$17hfad38442bbea55ccE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %.sroa.6.0..sroa_idx159) #60 to label %27 unwind label %101 .thread202: ; preds = %28, %179, %27 %.pn103206 = phi { ptr, i32 } [ %.pn103, %27 ], [ %180, %179 ], [ %lpad.thr_comm.split-lp, %28 ] invoke void @"_ZN4core3ptr80drop_in_place$LT$alloc..vec..Vec$LT$rustfmt_nightly..imports..UseSegment$GT$$GT$17h98511aa84bbc718aE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1) #60 - to label %.thread201 unwind label %101 + to label %.thread215 unwind label %101 .thread201: ; preds = %.thread202 %243 = getelementptr inbounds nuw i8, ptr %1, i64 24 @@ -23487,7 +23494,7 @@ _ZN5alloc5slice11stable_sort17h35b75b64f0e783d3E.exit: ; preds = %185 to label %.critedge113 unwind label %101 .critedge114: ; preds = %.critedge113, %252, %27 - %.pn103205 = phi { ptr, i32 } [ %.pn103206, %.critedge113 ], [ %.pn103206, %252 ], [ %.pn103, %27 ] + %.pn103205 = phi { ptr, i32 } [ %.pn103206, %.critedge113 ], [ %.pn103206, %253 ], [ %.pn103, %27 ] resume { ptr, i32 } %.pn103205 .critedge113: ; preds = %.noexc156 diff --git a/bench/sdl/optimized/SDL_blit.ll b/bench/sdl/optimized/SDL_blit.ll index fdda3357f26..afcd787e453 100644 --- a/bench/sdl/optimized/SDL_blit.ll +++ b/bench/sdl/optimized/SDL_blit.ll @@ -359,32 +359,36 @@ define internal noundef zeroext i1 @SDL_SoftBlit(ptr noundef %0, ptr noundef rea %5 = load i32, ptr %2, align 8 %6 = and i32 %5, 2 %.not = icmp eq i32 %6, 0 - br i1 %.not, label %9, label %7 + br i1 %.not, label %.thread, label %7 7: ; preds = %4 %8 = tail call zeroext i1 @SDL_LockSurface_REAL(ptr noundef nonnull %2) #2 %not. = xor i1 %8, true - br label %9 - -9: ; preds = %7, %4 - %.not48 = phi i1 [ true, %4 ], [ %not., %7 ] - %.0 = phi i1 [ true, %4 ], [ %8, %7 ] - %10 = load i32, ptr %0, align 8 - %11 = and i32 %10, 2 - %.not47 = icmp eq i32 %11, 0 - br i1 %.not47, label %14, label %12 - -12: ; preds = %9 - %13 = tail call zeroext i1 @SDL_LockSurface_REAL(ptr noundef nonnull %0) #2 - %not.52 = xor i1 %13, true - %.0. = select i1 %13, i1 %.0, i1 false - br i1 %.0., label %15, label %86 - -14: ; preds = %9 - br i1 %.0, label %15, label %86 - -15: ; preds = %12, %14 - %.not4954 = phi i1 [ %not.52, %12 ], [ true, %14 ] + %9 = load i32, ptr %0, align 8 + %10 = and i32 %9, 2 + %.not47 = icmp eq i32 %10, 0 + br i1 %.not47, label %15, label %13 + +.thread:; preds = %4 + %11 = load i32, ptr %0, align 8 + %12 = and i32 %11, 2 + %.not4759 = icmp eq i32 %12, 0 + br i1 %.not4759, label %.thread66, label %13 + +13:; preds = %.thread, %7 + %.064 = phi i1 [ true, %.thread ], [ %8, %7 ] + %.not4862 = phi i1 [ true, %.thread ], [ %not., %7 ] + %14 = tail call zeroext i1 @SDL_LockSurface_REAL(ptr noundef nonnull %0) #2 + %not.56 = xor i1 %14, true + %.0. = select i1 %14, i1 %.064, i1 false + br i1 %.0., label %.thread66, label %86 + +15: ; preds = %7 + br i1 %8, label %.thread66, label %86 + +.thread66: ; preds = %.thread, %13, %15 + %.not4861 = phi i1 [ %.not4862, %13 ], [ %not., %15 ], [ true, %.thread ] + %.not4953 = phi i1 [ %not.56, %13 ], [ true, %15 ], [ true, %.thread ] %16 = getelementptr inbounds nuw i8, ptr %0, i64 144 %17 = getelementptr inbounds nuw i8, ptr %0, i64 24 %18 = load ptr, ptr %17, align 8 @@ -466,26 +470,32 @@ define internal noundef zeroext i1 @SDL_SoftBlit(ptr noundef %0, ptr noundef rea %84 = getelementptr inbounds nuw i8, ptr %0, i64 136 %85 = load ptr, ptr %84, align 8 tail call void %85(ptr noundef nonnull %16) #2 - br label %86 + br i1 %.not4861, label %88, label %87 -86: ; preds = %12, %15, %14 - %.155 = phi i1 [ false, %12 ], [ true, %15 ], [ false, %14 ] - %.not4953 = phi i1 [ %not.52, %12 ], [ %.not4954, %15 ], [ true, %14 ] - br i1 %.not48, label %88, label %87 +86: ; preds = %13, %15 + %.155 = phi i1 [ %.not4862, %13 ], [ %not., %15 ] + %.not4953 = phi i1 [ %not.56, %13 ], [ true, %15 ] + br i1 %.not4860, label %88, label %87 -87: ; preds = %86 +87: ; preds = %.thread66, %86 + %.not495271 = phi i1 [ %.not4953, %.thread66 ], [ %.not4952, %86 ] + %.15469 = phi i1 [ true, %.thread66 ], [ false, %86 ] tail call void @SDL_UnlockSurface_REAL(ptr noundef nonnull %2) #2 - br label %88 + br i1 %.not495271, label %90, label %89 -88: ; preds = %87, %86 - br i1 %.not4953, label %90, label %89 +88: ; preds = %.thread66, %86 + %.not495272 = phi i1 [ %.not4953, %.thread66 ], [ %.not4952, %86 ] + %.15470 = phi i1 [ true, %.thread66 ], [ false, %86 ] + br i1 %.not495272, label %90, label %89 -89: ; preds = %88 +89: ; preds = %87, %88 + %.1547073 = phi i1 [ %.15469, %87 ], [ %.15470, %88 ] tail call void @SDL_UnlockSurface_REAL(ptr noundef nonnull %0) #2 br label %90 -90: ; preds = %89, %88 - ret i1 %.155 +90: ; preds = %87, %89, %88 + %.1547074 = phi i1 [ %.15469, %87 ], [ %.1547073, %89 ], [ %.15470, %88 ] + ret i1 %.1547074 } declare zeroext i1 @SDL_RLESurface(ptr noundef) local_unnamed_addr #1 diff --git a/bench/sdl/optimized/SDL_bmp.ll b/bench/sdl/optimized/SDL_bmp.ll index cd3bba2a98b..bae9a7edd6b 100644 --- a/bench/sdl/optimized/SDL_bmp.ll +++ b/bench/sdl/optimized/SDL_bmp.ll @@ -963,7 +963,7 @@ define hidden ptr @SDL_LoadBMP_REAL(ptr noundef %0) local_unnamed_addr #0 { declare ptr @SDL_IOFromFile_REAL(ptr noundef, ptr noundef) local_unnamed_addr #1 ; Function Attrs: nounwind uwtable -define hidden zeroext i1 @SDL_SaveBMP_IO_REAL(ptr noundef %0, ptr noundef %1, i1 noundef zeroext %2) local_unnamed_addr #0 { +define hidden noundef zeroext i1 @SDL_SaveBMP_IO_REAL(ptr noundef %0, ptr noundef %1, i1 noundef zeroext %2) local_unnamed_addr #0 { %4 = alloca [2 x i8], align 2 %5 = alloca [9 x i32], align 16 call void @llvm.lifetime.start.p0(ptr nonnull %4) @@ -983,7 +983,7 @@ define hidden zeroext i1 @SDL_SaveBMP_IO_REAL(ptr noundef %0, ptr noundef %1, i1 .thread313.thread: ; preds = %9 %10 = tail call zeroext i1 (ptr, ...) @SDL_SetError_REAL(ptr noundef nonnull @.str, ptr noundef nonnull @.str.14) #4 - br label %228 + br label %229 11: ; preds = %9 %12 = getelementptr inbounds nuw i8, ptr %0, i64 4 @@ -1074,8 +1074,8 @@ define hidden zeroext i1 @SDL_SaveBMP_IO_REAL(ptr noundef %0, ptr noundef %1, i1 br i1 %or.cond285373, label %.thread301, label %42 42: ; preds = %.critedge.thread.thread371, %.critedge.thread - %43 = phi i32 [ 390076419, %.critedge.thread.thread371 ], [ 372645892, %.critedge.thread ] - %.0229294360375 = phi i1 [ false, %.critedge.thread.thread371 ], [ true, %.critedge.thread ] + %43 = phi i32 [ 390076419, %.critedge.thread.thread375 ], [ 372645892, %.critedge.thread ] + %.0229294360375 = phi i1 [ false, %.critedge.thread.thread375 ], [ true, %.critedge.thread ] %44 = tail call ptr @SDL_ConvertSurface_REAL(ptr noundef nonnull %0, i32 noundef %43) #4 %.not265 = icmp eq ptr %44, null br i1 %.not265, label %46, label %.thread299 @@ -1089,7 +1089,7 @@ define hidden zeroext i1 @SDL_SaveBMP_IO_REAL(ptr noundef %0, ptr noundef %1, i1 br i1 %.0229294360375, label %51, label %.thread301 46: ; preds = %.thread366, %42 - %47 = phi i32 [ 390076419, %.thread366 ], [ %43, %42 ] + %47 = phi i32 [ 390076419, %.thread370 ], [ %43, %42 ] %48 = lshr i32 %47, 8 %49 = and i32 %48, 56 %50 = tail call zeroext i1 (ptr, ...) @SDL_SetError_REAL(ptr noundef nonnull @.str.16, i32 noundef %49) #4 @@ -1101,8 +1101,8 @@ define hidden zeroext i1 @SDL_SaveBMP_IO_REAL(ptr noundef %0, ptr noundef %1, i1 br label %.thread301 .thread301: ; preds = %.thread366, %.critedge.thread.thread371, %35, %.thread299, %51 - %.1210305 = phi ptr [ %.1210307, %51 ], [ %44, %.thread299 ], [ %0, %35 ], [ %0, %.critedge.thread.thread371 ], [ %45, %.thread366 ] - %.not = phi i1 [ %52, %51 ], [ true, %.thread299 ], [ true, %35 ], [ true, %.critedge.thread.thread371 ], [ true, %.thread366 ] + %.1210305 = phi ptr [ %.1210307, %51 ], [ %44, %.thread299 ], [ %0, %35 ], [ %0, %.critedge.thread.thread375 ], [ %45, %.thread370 ] + %.not = phi i1 [ %52, %51 ], [ true, %.thread299 ], [ true, %35 ], [ true, %.critedge.thread.thread375 ], [ true, %.thread370 ] %53 = tail call zeroext i1 @SDL_LockSurface_REAL(ptr noundef nonnull %.1210305) #4 br i1 %53, label %54, label %.thread308 @@ -1369,7 +1369,7 @@ define hidden zeroext i1 @SDL_SaveBMP_IO_REAL(ptr noundef %0, ptr noundef %1, i1 br i1 %.not270, label %.lr.ph333.split.us, label %.lr.ph333.split .lr.ph333.split.us: ; preds = %.lr.ph333, %195 - %.0227332.us = phi ptr [ %193, %195 ], [ %189, %.lr.ph333 ] + %.0227332.us = phi ptr [ %193, %195 ], [ %189, %.lr.ph337 ] %190 = load i32, ptr %84, align 8 %191 = sext i32 %190 to i64 %192 = sub nsw i64 0, %191 @@ -1384,7 +1384,7 @@ define hidden zeroext i1 @SDL_SaveBMP_IO_REAL(ptr noundef %0, ptr noundef %1, i1 br i1 %197, label %.lr.ph333.split.us, label %._crit_edge, !llvm.loop !15 .lr.ph333.split: ; preds = %.lr.ph333, %.loopexit - %.0227332 = phi ptr [ %201, %.loopexit ], [ %189, %.lr.ph333 ] + %.0227332 = phi ptr [ %201, %.loopexit ], [ %189, %.lr.ph337 ] %198 = load i32, ptr %84, align 8 %199 = sext i32 %198 to i64 %200 = sub nsw i64 0, %199 @@ -1399,7 +1399,7 @@ define hidden zeroext i1 @SDL_SaveBMP_IO_REAL(ptr noundef %0, ptr noundef %1, i1 br i1 %exitcond346.not, label %.loopexit, label %.preheader, !llvm.loop !16 .preheader: ; preds = %.lr.ph333.split, %203 - %.2208331 = phi i32 [ %204, %203 ], [ 0, %.lr.ph333.split ] + %.2208331 = phi i32 [ %204, %203 ], [ 0, %.lr.ph337.split ] %205 = call zeroext i1 @SDL_WriteU8_REAL(ptr noundef nonnull %1, i8 noundef zeroext 0) #4 br i1 %205, label %203, label %.thread308 @@ -1437,7 +1437,7 @@ define hidden zeroext i1 @SDL_SaveBMP_IO_REAL(ptr noundef %0, ptr noundef %1, i1 br label %.thread308 .thread308: ; preds = %.preheader326, %162, %159, %155, %.lr.ph, %.lr.ph333.split, %.preheader, %.lr.ph333.split.us, %223, %54, %74, %72, %70, %68, %66, %113, %111, %109, %107, %105, %103, %101, %99, %97, %95, %93, %124, %122, %120, %118, %116, %134, %132, %130, %142, %140, %138, %136, %.loopexit324, %171, %174, %._crit_edge, %210, %215, %218, %.thread301 - %.0205 = phi i1 [ true, %.thread301 ], [ false, %223 ], [ true, %54 ], [ true, %74 ], [ true, %72 ], [ true, %70 ], [ true, %68 ], [ true, %66 ], [ true, %113 ], [ true, %111 ], [ true, %109 ], [ true, %107 ], [ true, %105 ], [ true, %103 ], [ true, %101 ], [ true, %99 ], [ true, %97 ], [ true, %95 ], [ true, %93 ], [ true, %124 ], [ true, %122 ], [ true, %120 ], [ true, %118 ], [ true, %116 ], [ true, %134 ], [ true, %132 ], [ true, %130 ], [ true, %142 ], [ true, %140 ], [ true, %138 ], [ true, %136 ], [ true, %.loopexit324 ], [ true, %171 ], [ true, %174 ], [ true, %._crit_edge ], [ true, %210 ], [ true, %215 ], [ true, %218 ], [ true, %.lr.ph333.split.us ], [ true, %.preheader ], [ true, %.lr.ph333.split ], [ true, %.lr.ph ], [ true, %155 ], [ true, %159 ], [ true, %162 ], [ true, %.preheader326 ] + %.0205 = phi i1 [ true, %.thread301 ], [ false, %223 ], [ true, %54 ], [ true, %74 ], [ true, %72 ], [ true, %70 ], [ true, %68 ], [ true, %66 ], [ true, %113 ], [ true, %111 ], [ true, %109 ], [ true, %107 ], [ true, %105 ], [ true, %103 ], [ true, %101 ], [ true, %99 ], [ true, %97 ], [ true, %95 ], [ true, %93 ], [ true, %124 ], [ true, %122 ], [ true, %120 ], [ true, %118 ], [ true, %116 ], [ true, %134 ], [ true, %132 ], [ true, %130 ], [ true, %142 ], [ true, %140 ], [ true, %138 ], [ true, %136 ], [ true, %.loopexit328 ], [ true, %171 ], [ true, %174 ], [ true, %._crit_edge ], [ true, %210 ], [ true, %215 ], [ true, %218 ], [ true, %.lr.ph337.split.us ], [ true, %.preheader ], [ true, %.lr.ph337.split ], [ true, %.lr.ph ], [ true, %155 ], [ true, %159 ], [ true, %162 ], [ true, %.preheader330 ] %.not277 = icmp eq ptr %.1210305, %0 br i1 %.not277, label %.thread313, label %224 @@ -1453,16 +1453,22 @@ define hidden zeroext i1 @SDL_SaveBMP_IO_REAL(ptr noundef %0, ptr noundef %1, i1 226: ; preds = %.thread313 %227 = call zeroext i1 @SDL_CloseIO_REAL(ptr noundef nonnull %1) #4 - %not.335 = xor i1 %227, true - %spec.select = or i1 %.0205319, %not.335 - br label %228 + %.fr = freeze i1 %227 + %not. = xor i1 %.fr, true + %spec.select = or i1 %.0205319, %not. + br i1 %spec.select, label %229, label %230 -228: ; preds = %.thread313.thread, %.thread313, %226 - %.2 = phi i1 [ %.0205319, %.thread313 ], [ %spec.select, %226 ], [ true, %.thread313.thread ] - %not. = xor i1 %.2, true +228: ; preds = %.thread313 + br i1 %.0205319, label %229, label %230 + +229: ; preds = %226, %.thread322, %228 + br label %230 + +230: ; preds = %226, %228, %229 + %231 = phi i1 [ false, %229 ], [ true, %228 ], [ true, %226 ] call void @llvm.lifetime.end.p0(ptr nonnull %5) call void @llvm.lifetime.end.p0(ptr nonnull %4) - ret i1 %not. + ret i1 %231 } ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write) @@ -1489,7 +1495,7 @@ declare zeroext i1 @SDL_WriteU8_REAL(ptr noundef, i8 noundef zeroext) local_unna declare void @SDL_UnlockSurface_REAL(ptr noundef) local_unnamed_addr #1 ; Function Attrs: nounwind uwtable -define hidden zeroext i1 @SDL_SaveBMP_REAL(ptr noundef %0, ptr noundef %1) local_unnamed_addr #0 { +define hidden noundef zeroext i1 @SDL_SaveBMP_REAL(ptr noundef %0, ptr noundef %1) local_unnamed_addr #0 { %3 = tail call ptr @SDL_IOFromFile_REAL(ptr noundef %1, ptr noundef nonnull @.str.18) #4 %.not = icmp eq ptr %3, null br i1 %.not, label %6, label %4 diff --git a/bench/sdl/optimized/SDL_render_vulkan.ll b/bench/sdl/optimized/SDL_render_vulkan.ll index 7bffd92ecf3..9039577c381 100644 --- a/bench/sdl/optimized/SDL_render_vulkan.ll +++ b/bench/sdl/optimized/SDL_render_vulkan.ll @@ -8513,13 +8513,14 @@ VULKAN_GetRotationForCurrentRenderTarget.exit.i: ; preds = %276, %272 br label %.sink.split .sink.split: ; preds = %VULKAN_GetRotationForCurrentRenderTarget.exit.i, %282, %315 - %.1132.ph = phi i1 [ true, %315 ], [ %.0131, %282 ], [ %.0131, %VULKAN_GetRotationForCurrentRenderTarget.exit.i ] + %.1132.ph = phi i1 [ true, %315 ], [ false, %282 ], [ false, %VULKAN_GetRotationForCurrentRenderTarget.exit.i ] call void @llvm.lifetime.end.p0(ptr nonnull %13) call void @llvm.lifetime.end.p0(ptr nonnull %12) + %spec.select = or i1 %.0131, %.0.i br label %328 328: ; preds = %.sink.split, %268 - %.1132 = phi i1 [ %.0131, %268 ], [ %.1132.ph, %.sink.split ] + %.1132 = phi i1 [ %.0131, %268 ], [ %spec.select, %VULKAN_UpdateViewport.exit ] %329 = getelementptr inbounds nuw i8, ptr %38, i64 10496 %330 = load i8, ptr %329, align 8, !range !3, !noundef !4 %331 = trunc nuw i8 %330 to i1 @@ -8671,7 +8672,7 @@ thread-pre-split13: ; preds = %402 br label %406 406: ; preds = %thread-pre-split13, %386 - %407 = phi i32 [ %.pr14, %thread-pre-split13 ], [ %401, %386 ] + %407 = phi i32 [ %.pr14, %thread-pre-split12 ], [ %401, %386 ] %408 = icmp eq i32 %407, -1 br i1 %408, label %.thread15, label %409 @@ -8766,8 +8767,8 @@ thread-pre-split13: ; preds = %402 br label %494 468: ; preds = %.thread17, %.thread15, %409 - %.2138 = phi i64 [ %417, %409 ], [ 0, %.thread15 ], [ 0, %.thread17 ] - %.1134 = phi ptr [ %399, %409 ], [ %399, %.thread15 ], [ %466, %.thread17 ] + %.2138 = phi i64 [ %417, %409 ], [ 0, %.thread14 ], [ 0, %.thread16 ] + %.1134 = phi ptr [ %399, %409 ], [ %399, %.thread14 ], [ %466, %.thread16 ] %469 = load ptr, ptr %81, align 8 %470 = getelementptr inbounds nuw i8, ptr %469, i64 4 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(48) %470, ptr noundef nonnull align 4 dereferenceable(48) %.0130, i64 48, i1 false) diff --git a/bench/sdl/optimized/SDL_wave.ll b/bench/sdl/optimized/SDL_wave.ll index c9e9b2cecd2..54c248de5c1 100644 --- a/bench/sdl/optimized/SDL_wave.ll +++ b/bench/sdl/optimized/SDL_wave.ll @@ -1659,7 +1659,7 @@ SafeMult.exit79: ; preds = %43 %56 = getelementptr inbounds nuw i8, ptr %0, i64 34 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %51, i8 0, i64 16, i1 false) %57 = load i16, ptr %56, align 2 - switch i16 %57, label %95 [ + switch i16 %57, label %98 [ i16 6, label %.preheader i16 7, label %.preheader98 ] @@ -1710,15 +1710,18 @@ SafeMult.exit79: ; preds = %43 %83 = lshr i8 %81, 4 %84 = and i8 %83, 7 %85 = zext nneg i8 %84 to i16 - %86 = zext nneg i8 %82 to i16 - %87 = add nuw nsw i16 %85, 3 - %88 = shl nuw nsw i16 %86, %87 - %89 = shl nuw nsw i16 132, %85 - %90 = add nuw nsw i16 %88, %89 - %91 = add nsw i16 %90, -132 + %86 = shl nuw nsw i16 8, %85 + %87 = shl nuw nsw i16 128, %85 + %88 = zext nneg i8 %82 to i16 + %89 = add nuw nsw i16 %85, 3 + %90 = shl nuw nsw i16 %88, %89 + %91 = add nuw nsw i16 %90, %87 + %92 = lshr exact i16 %86, 1 + %93 = add nuw nsw i16 %91, %92 + %94 = add nsw i16 %93, -132 %.not70 = icmp slt i8 %80, 0 - %92 = sub nsw i16 132, %90 - %93 = select i1 %.not70, i16 %91, i16 %92 + %92 = sub nsw i16 132, %93 + %93 = select i1 %.not70, i16 %94, i16 %92 %94 = getelementptr inbounds nuw i16, ptr %54, i64 %78 store i16 %93, ptr %94, align 2 %.not69 = icmp eq i64 %78, 0 @@ -1736,7 +1739,7 @@ SafeMult.exit79: ; preds = %43 br label %98 98: ; preds = %WaveAdjustToFactValue.exit.thread, %.thread, %WaveAdjustToFactValue.exit, %.loopexit, %95, %48, %SafeMult.exit79, %SafeMult.exit, %34 - %.0 = phi i1 [ true, %34 ], [ %40, %SafeMult.exit ], [ %44, %SafeMult.exit79 ], [ %49, %48 ], [ %96, %95 ], [ true, %.loopexit ], [ false, %WaveAdjustToFactValue.exit ], [ false, %.thread ], [ false, %WaveAdjustToFactValue.exit.thread ] + %.0 = phi i1 [ true, %34 ], [ %40, %SafeMult.exit ], [ %44, %SafeMult.exit79 ], [ %49, %48 ], [ %96, %98 ], [ true, %.loopexit ], [ false, %WaveAdjustToFactValue.exit ], [ false, %.thread ], [ false, %WaveAdjustToFactValue.exit.thread ] ret i1 %.0 } diff --git a/bench/slurm/optimized/reservation.ll b/bench/slurm/optimized/reservation.ll index 80ccaf54c98..8968f4130dd 100644 --- a/bench/slurm/optimized/reservation.ll +++ b/bench/slurm/optimized/reservation.ll @@ -10895,10 +10895,11 @@ define internal fastcc range(i32 0, 2054) i32 @_valid_job_access_resv(ptr nounde %139 = getelementptr inbounds nuw i8, ptr %1, i64 64 %140 = load i32, ptr %139, align 8 %.fr = freeze i32 %140 - %141 = trunc i32 %.fr to i1 - %brmerge154.demorgan = and i1 %2, %141 - %brmerge154 = xor i1 %brmerge154.demorgan, true - br i1 %141, label %147, label %146 + %141 = and i32 %.fr, 1 + %.not102 = icmp eq i32 %141, 0 + %brmerge154 = xor i1 %2, true + %brmerge154 = or i1 %.not102, %brmerge154 + br i1 %.not102, label %146, label %147 142: ; preds = %._crit_edge135, %131 %143 = phi i32 [ %.pre136, %._crit_edge135 ], [ %129, %131 ] diff --git a/bench/softposit-rs/optimized/1e6z9tsqxvhrpdzq.ll b/bench/softposit-rs/optimized/1e6z9tsqxvhrpdzq.ll index 56205d0884e..e4d576b5b79 100644 --- a/bench/softposit-rs/optimized/1e6z9tsqxvhrpdzq.ll +++ b/bench/softposit-rs/optimized/1e6z9tsqxvhrpdzq.ll @@ -205,7 +205,7 @@ _ZN9softposit5p32e25P32E217separate_bits_tmp17hdc27d662c293f752E.exit269: ; pred .loopexit: ; preds = %.lr.ph312, %131, %.preheader, %62, %.thread, %162 %.0209 = phi i8 [ %.1210275, %.thread ], [ %.5214, %162 ], [ %.1175, %62 ], [ %.2211.lcssa, %.preheader ], [ %.1210, %131 ], [ %spec.select238, %.lr.ph312 ] %.0204 = phi i1 [ %.2206276, %.thread ], [ %19, %162 ], [ %19, %62 ], [ %.2206276363, %.preheader ], [ %19, %131 ], [ %.2206276363, %.lr.ph312 ] - %.0192 = phi i8 [ %.1193277, %.thread ], [ %.1193288, %162 ], [ 0, %62 ], [ %.1193277362, %.preheader ], [ %.1193, %131 ], [ %.1193277362, %.lr.ph312 ] + %.0192 = phi i1 [ %93, %.thread ], [ %.1193288, %162 ], [ false, %62 ], [ %.1193277362, %.preheader ], [ %.1193, %131 ], [ %.1193277362, %.lr.ph312 ] %.1183 = phi i64 [ 0, %.thread ], [ %167, %162 ], [ %.0182, %62 ], [ %.9191.lcssa, %.preheader ], [ %134, %131 ], [ %173, %.lr.ph312 ] %.3 = phi i32 [ %.4279, %.thread ], [ %.7, %162 ], [ %.1177, %62 ], [ %.4279360, %.preheader ], [ %.4, %131 ], [ %spec.select239, %.lr.ph312 ] %94 = icmp slt i8 %.0209, 0 @@ -288,7 +288,7 @@ _ZN9softposit5p32e25P32E217separate_bits_tmp17hdc27d662c293f752E.exit269: ; pred %.6188.sink = phi i64 [ %.6188, %151 ], [ 0, %117 ], [ %86, %119 ], [ %86, %120 ] %.sink392 = phi i64 [ %86, %151 ], [ %.0182, %117 ], [ %.0182, %119 ], [ %.0182, %120 ] %.1210 = phi i8 [ %.211.i260, %151 ], [ %.1175, %117 ], [ %.1175, %119 ], [ %.1175, %120 ] - %.1193 = phi i8 [ %.5197, %151 ], [ 1, %117 ], [ 0, %119 ], [ 1, %120 ] + %.1193 = phi i1 [ %.5197, %151 ], [ true, %117 ], [ false, %119 ], [ true, %120 ] %.4 = phi i32 [ %81, %151 ], [ %.1177, %117 ], [ %.1177, %119 ], [ %.1177, %120 ] %132 = zext nneg i16 %.sink to i64 %133 = lshr i64 %.6188.sink, %132 @@ -322,7 +322,7 @@ _ZN9softposit5p32e25P32E217separate_bits_tmp17hdc27d662c293f752E.exit269: ; pred br label %.preheader294 151: ; preds = %145, %144, %142 - %.5197 = phi i8 [ 1, %142 ], [ 0, %144 ], [ 1, %145 ] + %.5197 = phi i1 [ true, %142 ], [ false, %144 ], [ true, %145 ] %.6188 = phi i64 [ 0, %142 ], [ %.0182, %144 ], [ %.0182, %145 ] %.1 = phi i16 [ 0, %142 ], [ %92, %144 ], [ %92, %145 ] %152 = sub nsw i16 0, %.1 @@ -343,7 +343,6 @@ _ZN9softposit5p32e25P32E217separate_bits_tmp17hdc27d662c293f752E.exit269: ; pred .thread: ; preds = %153, %107, %109 %.4279 = phi i32 [ %81, %153 ], [ %.1177, %109 ], [ %.1177, %107 ] %.3185278 = phi i64 [ %154, %153 ], [ %110, %109 ], [ %108, %107 ] - %.1193277 = phi i8 [ 1, %153 ], [ 0, %109 ], [ 0, %107 ] %.2206276 = phi i1 [ %18, %153 ], [ %18, %109 ], [ %19, %107 ] %.1210275 = phi i8 [ %.211.i260, %153 ], [ %.1175, %109 ], [ %.1175, %107 ] %160 = icmp eq i64 %.3185278, 0 @@ -352,7 +351,7 @@ _ZN9softposit5p32e25P32E217separate_bits_tmp17hdc27d662c293f752E.exit269: ; pred .preheader294: ; preds = %121, %125, %146, %.thread %.1210275364 = phi i8 [ %.1210275, %.thread ], [ %.1175, %121 ], [ %.1175, %125 ], [ %.211.i260, %146 ] %.2206276363 = phi i1 [ %.2206276, %.thread ], [ %19, %121 ], [ %19, %125 ], [ %18, %146 ] - %.1193277362 = phi i8 [ %.1193277, %.thread ], [ 0, %121 ], [ 1, %125 ], [ 0, %146 ] + %.1193277362 = phi i1 [ %93, %.thread ], [ false, %121 ], [ true, %125 ], [ false, %146 ] %.3185278361 = phi i64 [ %.3185278, %.thread ], [ %124, %121 ], [ %126, %125 ], [ %150, %146 ] %.4279360 = phi i32 [ %.4279, %.thread ], [ %.1177, %121 ], [ %.1177, %125 ], [ %81, %146 ] %161 = icmp samesign ult i64 %.3185278361, 576460752303423488 @@ -361,7 +360,7 @@ _ZN9softposit5p32e25P32E217separate_bits_tmp17hdc27d662c293f752E.exit269: ; pred 162: ; preds = %.thread280, %131 %.4290 = phi i32 [ %.1177, %.thread280 ], [ %.4, %131 ] %.3185289 = phi i64 [ %106, %.thread280 ], [ %134, %131 ] - %.1193288 = phi i8 [ 0, %.thread280 ], [ %.1193, %131 ] + %.1193288 = phi i1 [ false, %.thread280 ], [ %.1193, %131 ] %.1210286 = phi i8 [ %.1175, %.thread280 ], [ %.1210, %131 ] %163 = add nuw nsw i32 %.4290, 1 %164 = icmp samesign ugt i32 %.4290, 2 @@ -423,7 +422,7 @@ _ZN9softposit5p32e25P32E217separate_bits_tmp17hdc27d662c293f752E.exit269: ; pred br i1 %190, label %193, label %206 191: ; preds = %193, %184, %177, %214, %206 - %.0203 = phi i32 [ %224, %214 ], [ %213, %206 ], [ 2147483647, %177 ], [ 1, %184 ], [ %205, %193 ] + %.0203 = phi i32 [ %223, %214 ], [ %213, %206 ], [ 2147483647, %177 ], [ 1, %184 ], [ %205, %193 ] %192 = sub i32 0, %.0203 %.0.i = select i1 %.0204, i32 %192, i32 %.0203 br label %61 @@ -447,9 +446,9 @@ _ZN9softposit5p32e25P32E217separate_bits_tmp17hdc27d662c293f752E.exit269: ; pred 206: ; preds = %189 %207 = icmp eq i32 %.0170, 30 %208 = trunc i32 %.3 to i8 - %209 = and i8 %208, 1 + %209 = trunc i32 %.3 to i1 %210 = ashr i32 %.3, 1 - %.9201 = select i1 %207, i8 %209, i8 %.0192 + %.9201 = select i1 %207, i1 %209, i1 %.0192 %211 = zext i1 %207 to i8 %.1181.in = lshr i8 %208, %211 %.9 = select i1 %207, i32 0, i32 %210 @@ -460,16 +459,16 @@ _ZN9softposit5p32e25P32E217separate_bits_tmp17hdc27d662c293f752E.exit269: ; pred 214: ; preds = %193, %206 %215 = phi i32 [ %205, %193 ], [ %213, %206 ] %.11292 = phi i64 [ %194, %193 ], [ %.1183, %206 ] - %.8200291 = phi i8 [ %.0192, %193 ], [ %.9201, %206 ] + %.8200291 = phi i1 [ %.0192, %193 ], [ %.9201, %206 ] %216 = sub nuw nsw i32 32, %.0170 %217 = zext nneg i32 %216 to i64 %218 = shl i64 %.11292, %217 - %219 = icmp eq i64 %218, 0 + %219 = icmp ne i64 %218, 0 + %spec.select240 = select i1 %219, i1 true, i1 %.8200291 %220 = and i32 %215, 1 - %221 = zext nneg i8 %.8200291 to i32 - %222 = select i1 %219, i32 %221, i32 1 - %223 = or i32 %222, %220 - %224 = add i32 %223, %215 + %221 = zext i1 %spec.select240 to i32 + %222 = or i32 %220, %221 + %223 = add i32 %222, %215 br label %191 } diff --git a/bench/softposit-rs/optimized/kf9u47qfx5x7qom.ll b/bench/softposit-rs/optimized/kf9u47qfx5x7qom.ll index 7a8f78ae891..2212342af85 100644 --- a/bench/softposit-rs/optimized/kf9u47qfx5x7qom.ll +++ b/bench/softposit-rs/optimized/kf9u47qfx5x7qom.ll @@ -128,7 +128,7 @@ _ZN9softposit7quire325Q32E26is_nar17h609ee7b07649a137E.exit.thread: ; preds = %_ "_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha54595ee08877e97E.exit.thread": ; preds = %64, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha54595ee08877e97E.exit107.thread" %.180 = phi i64 [ %74, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha54595ee08877e97E.exit107.thread" ], [ 512, %64 ] %.075 = phi i64 [ %89, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha54595ee08877e97E.exit107.thread" ], [ 0, %64 ] - %.069 = phi i8 [ %.2, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha54595ee08877e97E.exit107.thread" ], [ 0, %64 ] + %.069 = phi i1 [ %.2, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha54595ee08877e97E.exit107.thread" ], [ false, %64 ] %55 = sub i64 271, %.180 %56 = lshr i64 %55, 2 %57 = trunc i64 %56 to i8 @@ -166,7 +166,7 @@ _ZN9softposit7quire325Q32E26is_nar17h609ee7b07649a137E.exit.thread: ; preds = %_ %74 = phi i64 [ %71, %._crit_edge ], [ %71, %78 ], [ %.079160, %.preheader ] %.sroa.0112.1.idx = phi i64 [ %.sroa.0112.0.add, %._crit_edge ], [ %.ptr.add, %78 ], [ %.sroa.0112.0.add, %.preheader ] %.277 = phi i64 [ %69, %._crit_edge ], [ %83, %78 ], [ %52, %.preheader ] - %.1 = phi i8 [ 0, %._crit_edge ], [ %spec.select, %78 ], [ 0, %.preheader ] + %.1 = phi i1 [ false, %._crit_edge ], [ %86, %78 ], [ false, %.preheader ] br label %87 75: ; preds = %._crit_edge @@ -188,7 +188,6 @@ _ZN9softposit7quire325Q32E26is_nar17h609ee7b07649a137E.exit.thread: ; preds = %_ %84 = xor i64 %notmask, -1 %85 = and i64 %79, %84 %86 = icmp ne i64 %85, 0 - %spec.select = zext i1 %86 to i8 br label %._crit_edge.thread 87: ; preds = %90, %._crit_edge.thread @@ -197,7 +196,7 @@ _ZN9softposit7quire325Q32E26is_nar17h609ee7b07649a137E.exit.thread: ; preds = %_ br i1 %88, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha54595ee08877e97E.exit107.thread", label %90 "_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha54595ee08877e97E.exit107.thread": ; preds = %87, %90 - %.2 = phi i8 [ 1, %90 ], [ %.1, %87 ] + %.2 = phi i1 [ true, %90 ], [ %.1, %87 ] %89 = and i64 %.277, 9223372036854775807 br label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17ha54595ee08877e97E.exit.thread" @@ -231,7 +230,7 @@ _ZN9softposit7quire325Q32E26is_nar17h609ee7b07649a137E.exit.thread: ; preds = %_ br i1 %105, label %114, label %108 106: ; preds = %99, %92, %132, %128 - %.068 = phi i32 [ %137, %132 ], [ %130, %128 ], [ 2147483647, %92 ], [ 1, %99 ] + %.068 = phi i32 [ %136, %132 ], [ %130, %128 ], [ 2147483647, %92 ], [ 1, %99 ] %107 = sub i32 0, %.068 %.0.i108 = select i1 %.not, i32 %.068, i32 %107 call void @llvm.lifetime.end.p0(ptr nonnull %2) @@ -240,12 +239,12 @@ _ZN9softposit7quire325Q32E26is_nar17h609ee7b07649a137E.exit.thread: ; preds = %_ 108: ; preds = %104 %109 = icmp eq i32 %.065, 30 %110 = trunc i32 %62 to i8 - %111 = and i8 %110, 1 + %111 = trunc i32 %62 to i1 %112 = ashr i32 %62, 1 %.073 = select i1 %109, i32 0, i32 %112 %113 = zext i1 %109 to i8 %.070.in = lshr i8 %110, %113 - %.3 = select i1 %109, i8 %111, i8 %.069 + %.3 = select i1 %109, i1 %111, i1 %.069 br label %128 114: ; preds = %104 @@ -266,7 +265,7 @@ _ZN9softposit7quire325Q32E26is_nar17h609ee7b07649a137E.exit.thread: ; preds = %_ 128: ; preds = %108, %114 %.075.sink = phi i64 [ %.075, %108 ], [ %127, %114 ] - %.3.sink = phi i8 [ %.3, %108 ], [ %.069, %114 ] + %.3.sink = phi i1 [ %.3, %108 ], [ %.069, %114 ] %.174 = phi i32 [ %.073, %108 ], [ %124, %114 ] %.072 = phi i32 [ 0, %108 ], [ %118, %114 ] %.171.in = phi i8 [ %.070.in, %108 ], [ %122, %114 ] @@ -276,12 +275,12 @@ _ZN9softposit7quire325Q32E26is_nar17h609ee7b07649a137E.exit.thread: ; preds = %_ br i1 %131, label %132, label %106 132: ; preds = %128 - %.not89 = icmp eq i64 %.075.sink, 0 + %.not89 = icmp ne i64 %.075.sink, 0 + %spec.select92 = select i1 %.not89, i1 true, i1 %.3.sink %133 = and i32 %130, 1 - %134 = zext nneg i8 %.3.sink to i32 - %135 = select i1 %.not89, i32 %134, i32 1 - %136 = or i32 %133, %135 - %137 = add i32 %136, %130 + %134 = zext i1 %spec.select92 to i32 + %135 = or i32 %133, %134 + %136 = add i32 %135, %130 br label %106 138: ; preds = %23, %_ZN9softposit7quire325Q32E27is_zero17h3d5652a3c8069b49E.exit, %106 diff --git a/bench/sqlite/optimized/sqlite3.ll b/bench/sqlite/optimized/sqlite3.ll index ff05e3ef4de..fbba98880d0 100644 --- a/bench/sqlite/optimized/sqlite3.ll +++ b/bench/sqlite/optimized/sqlite3.ll @@ -386214,14 +386214,14 @@ common.ret368: ; preds = %36, %.critedge11, % 56: ; preds = %53 %57 = load i64, ptr %47, align 8, !tbaa !3924 - %58 = tail call i32 @llvm.scmp.i32.i64(i64 %.pre242, i64 %57) - %59 = sub nsw i32 0, %58 - %60 = select i1 %.not175, i32 %58, i32 %59 - %61 = icmp eq i32 %60, 0 + %58 = tail call i64 @llvm.scmp.i64.i64(i64 %.pre242, i64 %57) + %59 = sub nsw i64 0, %58 + %60 = select i1 %.not175, i64 %58, i64 %59 + %61 = icmp eq i64 %60, 0 br i1 %61, label %.loopexit, label %62 62: ; preds = %56 - %63 = icmp slt i32 %60, 0 + %63 = icmp slt i64 %60, 0 %. = select i1 %63, ptr %22, ptr %24 tail call fastcc void @fts3EvalNextRow(ptr noundef nonnull %0, ptr noundef nonnull %., ptr noundef %2) %64 = load i8, ptr %43, align 8, !tbaa !3922 @@ -430107,6 +430107,9 @@ declare void @llvm.assume(i1 noundef) #71 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.ctlz.i64(i64, i1 immarg) #69 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare range(i64 -1, 2) i64 @llvm.scmp.i64.i64(i64, i64) #69 + attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: read) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/tev/optimized/Common.ll b/bench/tev/optimized/Common.ll index dd4b8e93ced..05abdcdad76 100644 --- a/bench/tev/optimized/Common.ll +++ b/bench/tev/optimized/Common.ll @@ -12735,54 +12735,50 @@ define linkonce_odr dso_local ptr @_ZNSt3__111basic_regexIcNS_12regex_traitsIcEE br i1 %or.cond, label %59, label %86 59: ; preds = %57 - %60 = zext nneg i8 %8 to i32 - %61 = add nsw i32 %60, -48 - %62 = getelementptr inbounds nuw i8, ptr %1, i64 1 - %.not68 = icmp eq ptr %62, %2 - br i1 %.not68, label %81, label %63 + %60 = add nsw i8 %8, -48 + %61 = getelementptr inbounds nuw i8, ptr %1, i64 1 + %.not68 = icmp eq ptr %61, %2 + br i1 %.not68, label %78, label %62 63: ; preds = %59 - %64 = load i8, ptr %62, align 1 + %64 = load i8, ptr %61, align 1 %65 = and i8 %64, -8 %or.cond66 = icmp eq i8 %65, 48 - br i1 %or.cond66, label %66, label %81 + br i1 %or.cond66, label %66, label %78 66: ; preds = %63 - %67 = shl nuw nsw i32 %61, 3 - %68 = zext nneg i8 %64 to i32 - %69 = add nsw i32 %67, -48 - %70 = add nsw i32 %69, %68 - %71 = getelementptr inbounds nuw i8, ptr %1, i64 2 - %.not69 = icmp eq ptr %71, %2 - br i1 %.not69, label %81, label %72 - -72: ; preds = %66 - %73 = load i8, ptr %71, align 1 - %74 = and i8 %73, -8 - %or.cond67 = icmp eq i8 %74, 48 - br i1 %or.cond67, label %75, label %81 + %67 = shl nuw nsw i8 %60, 3 + %67 = add nsw i8 %66, -48 + %69 = add i8 %67, %64 + %69 = getelementptr inbounds nuw i8, ptr %1, i64 2 + %.not69 = icmp eq ptr %69, %2 + br i1 %.not69, label %78, label %70 + +75: ; preds = %65 + %71 = load i8, ptr %69, align 1 + %72 = and i8 %71, -8 + %or.cond67 = icmp eq i8 %72, 48 + br i1 %or.cond67, label %73, label %78 -75: ; preds = %72 - %76 = shl nuw nsw i32 %70, 3 - %77 = getelementptr inbounds nuw i8, ptr %1, i64 3 - %78 = zext nneg i8 %73 to i32 - %79 = add nsw i32 %76, -48 - %80 = add nsw i32 %79, %78 - br label %81 +81: ; preds = %75 + %74 = shl i8 %68, 3 + %75 = getelementptr inbounds nuw i8, ptr %1, i64 3 + %76 = add i8 %74, -48 + %77 = add i8 %76, %71 + br label %78 -81: ; preds = %66, %72, %75, %63, %59 - %.sroa.042.1 = phi ptr [ %77, %75 ], [ %71, %72 ], [ %71, %66 ], [ %62, %63 ], [ %62, %59 ] - %.0 = phi i32 [ %80, %75 ], [ %70, %72 ], [ %70, %66 ], [ %61, %63 ], [ %61, %59 ] +78: ; preds = %65, %70, %73, %62, %59 + %.sroa.042.1 = phi ptr [ %75, %73 ], [ %69, %70 ], [ %69, %65 ], [ %61, %62 ], [ %61, %59 ] + %.0 = phi i8 [ %77, %73 ], [ %68, %70 ], [ %68, %65 ], [ %60, %62 ], [ %60, %59 ] %.not38 = icmp eq ptr %3, null - %82 = trunc i32 %.0 to i8 - br i1 %.not38, label %85, label %83 + br i1 %.not38, label %81, label %79 -83: ; preds = %81 - %84 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEaSEc(ptr noundef nonnull align 8 dereferenceable(24) %3, i8 noundef signext %82) +83: ; preds = %78 + %84 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEaSEc(ptr noundef nonnull align 8 dereferenceable(24) %3, i8 noundef signext %.0) br label %87 -85: ; preds = %81 - tail call void @_ZNSt3__111basic_regexIcNS_12regex_traitsIcEEE11__push_charEc(ptr noundef nonnull align 8 dereferenceable(64) %0, i8 noundef signext %82) +85: ; preds = %78 + tail call void @_ZNSt3__111basic_regexIcNS_12regex_traitsIcEEE11__push_charEc(ptr noundef nonnull align 8 dereferenceable(64) %0, i8 noundef signext %.0) br label %87 86: ; preds = %57 @@ -12790,7 +12786,7 @@ define linkonce_odr dso_local ptr @_ZNSt3__111basic_regexIcNS_12regex_traitsIcEE unreachable 87: ; preds = %85, %83, %55, %49, %43, %37, %31, %25, %19, %13 - %.sroa.042.0 = phi ptr [ %.sroa.042.1, %85 ], [ %.sroa.042.1, %83 ], [ %14, %13 ], [ %20, %19 ], [ %26, %25 ], [ %32, %31 ], [ %38, %37 ], [ %44, %43 ], [ %50, %49 ], [ %56, %55 ] + %.sroa.042.0 = phi ptr [ %.sroa.042.1, %81 ], [ %.sroa.042.1, %79 ], [ %14, %13 ], [ %20, %19 ], [ %26, %25 ], [ %32, %31 ], [ %38, %37 ], [ %44, %43 ], [ %50, %49 ], [ %56, %55 ] ret ptr %.sroa.042.0 } diff --git a/bench/tokio-rs/optimized/3nmgzybx6iv04snk.ll b/bench/tokio-rs/optimized/3nmgzybx6iv04snk.ll index 239d7b82b53..de12a2d39c5 100644 --- a/bench/tokio-rs/optimized/3nmgzybx6iv04snk.ll +++ b/bench/tokio-rs/optimized/3nmgzybx6iv04snk.ll @@ -1808,13 +1808,13 @@ define internal void @"_ZN4core3ops8function6FnOnce40call_once$u7b$$u7b$vtable.s 85: ; preds = %"_ZN4core3ptr129drop_in_place$LT$core..option..Option$LT$alloc..sync..Arc$LT$std..sync..mutex..Mutex$LT$alloc..vec..Vec$LT$u8$GT$$GT$$GT$$GT$$GT$17h269473c41c910fc4E.exit30.i", %76 %86 = getelementptr inbounds nuw i8, ptr %0, i64 24 invoke void @"_ZN4core3ptr103drop_in_place$LT$tokio..runtime..blocking..pool..Spawner..spawn_thread..$u7b$$u7b$closure$u7d$$u7d$$GT$17h72382fd4f33d066fE.llvm.700930863383756518"(ptr noalias noundef nonnull align 8 dereferenceable(32) %86) - to label %"_ZN4core3ptr164drop_in_place$LT$std..thread..Builder..spawn_unchecked_..MaybeDangling$LT$tokio..runtime..blocking..pool..Spawner..spawn_thread..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hc80701bfb7747f13E.exit.i" unwind label %69 + to label %.thread68.thread.i unwind label %69 "_ZN4core3ptr80drop_in_place$LT$alloc..sync..Arc$LT$std..thread..Packet$LT$$LP$$RP$$GT$$GT$$GT$17h0b65c2f43aaccd40E.llvm.6895680396811105915.exit33.i": ; preds = %91, %"_ZN4core3ptr164drop_in_place$LT$std..thread..Builder..spawn_unchecked_..MaybeDangling$LT$tokio..runtime..blocking..pool..Spawner..spawn_thread..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hc80701bfb7747f13E.exit.i" resume { ptr, i32 } %.pn.pn45657388.i "_ZN4core3ptr164drop_in_place$LT$std..thread..Builder..spawn_unchecked_..MaybeDangling$LT$tokio..runtime..blocking..pool..Spawner..spawn_thread..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hc80701bfb7747f13E.exit.i": ; preds = %85, %"_ZN4core3ptr129drop_in_place$LT$core..option..Option$LT$alloc..sync..Arc$LT$std..sync..mutex..Mutex$LT$alloc..vec..Vec$LT$u8$GT$$GT$$GT$$GT$$GT$17h269473c41c910fc4E.exit30.i", %76, %"_ZN4core3ptr164drop_in_place$LT$std..thread..Builder..spawn_unchecked_..MaybeDangling$LT$tokio..runtime..blocking..pool..Spawner..spawn_thread..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hc80701bfb7747f13E.exit.thread.i", %8 - %.pn.pn45657388.i = phi { ptr, i32 } [ %48, %"_ZN4core3ptr164drop_in_place$LT$std..thread..Builder..spawn_unchecked_..MaybeDangling$LT$tokio..runtime..blocking..pool..Spawner..spawn_thread..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17hc80701bfb7747f13E.exit.thread.i" ], [ %.pn.pn46.i, %76 ], [ %.pn.pn46.i, %"_ZN4core3ptr129drop_in_place$LT$core..option..Option$LT$alloc..sync..Arc$LT$std..sync..mutex..Mutex$LT$alloc..vec..Vec$LT$u8$GT$$GT$$GT$$GT$$GT$17h269473c41c910fc4E.exit30.i" ], [ %.pn.pn46.i, %85 ], [ %lpad.thr_comm.i, %8 ] + %.pn.pn45657388.i = phi { ptr, i32 } [ %48, %.thread68.thread89.i ], [ %lpad.thr_comm.i, %8 ], [ %.pn.pn46.i, %"_ZN4core3ptr129drop_in_place$LT$core..option..Option$LT$alloc..sync..Arc$LT$std..sync..mutex..Mutex$LT$alloc..vec..Vec$LT$u8$GT$$GT$$GT$$GT$$GT$17h269473c41c910fc4E.exit30.i" ], [ %.pn.pn46.i, %76 ], [ %.pn.pn46.i, %85 ] %87 = getelementptr inbounds nuw i8, ptr %0, i64 8 call void @llvm.experimental.noalias.scope.decl(metadata !430) call void @llvm.experimental.noalias.scope.decl(metadata !433) diff --git a/bench/uv-rs/optimized/01kc013hwbqzr83fvgj8tm5o0.ll b/bench/uv-rs/optimized/01kc013hwbqzr83fvgj8tm5o0.ll index 96124ba1234..d8986f75d51 100644 --- a/bench/uv-rs/optimized/01kc013hwbqzr83fvgj8tm5o0.ll +++ b/bench/uv-rs/optimized/01kc013hwbqzr83fvgj8tm5o0.ll @@ -11045,8 +11045,8 @@ define hidden void @_ZN16uv_build_backend16find_module_root17hb1484561db880aa8E( call void @_ZN4core9panicking16panic_in_cleanup17h7e5529b9cf989fd4E() #48, !noalias !2558 unreachable -common.resume: ; preds = %"_ZN4core3ptr58drop_in_place$LT$uv_pypi_types..identifier..Identifier$GT$17h14ad23ea180ea91eE.exit", %122, %.thread212, %59 - %common.resume.op = phi { ptr, i32 } [ %60, %59 ], [ %.pn116.pn215, %.thread212 ], [ %.pn116.pn, %122 ], [ %.pn, %"_ZN4core3ptr58drop_in_place$LT$uv_pypi_types..identifier..Identifier$GT$17h14ad23ea180ea91eE.exit" ] +common.resume: ; preds = %.body143, %"_ZN4core3ptr58drop_in_place$LT$uv_pypi_types..identifier..Identifier$GT$17h14ad23ea180ea91eE.exit", %122, %.thread212, %59 + %common.resume.op = phi { ptr, i32 } [ %60, %59 ], [ %.pn116.pn215, %.thread212 ], [ %.pn114257, %122 ], [ %.pn, %"_ZN4core3ptr58drop_in_place$LT$uv_pypi_types..identifier..Identifier$GT$17h14ad23ea180ea91eE.exit" ], [ %.pn111, %.body143 ] resume { ptr, i32 } %common.resume.op "_ZN49_$LT$T$u20$as$u20$alloc..string..SpecToString$GT$14spec_to_string17h457a06b2298908dfE.exit": ; preds = %61 @@ -11242,10 +11242,8 @@ common.resume: ; preds = %"_ZN4core3ptr58drop call void @llvm.lifetime.end.p0(ptr nonnull %52) br label %70 -122: ; preds = %.body143.thread, %.body143 - %.sroa.066.2 = phi i1 [ %.sroa.066.4256, %.body143.thread ], [ false, %.body143 ] - %.pn116.pn = phi { ptr, i32 } [ %.pn114257, %.body143.thread ], [ %.pn111, %.body143 ] - br i1 %.sroa.066.2, label %.thread212, label %common.resume +122: ; preds = %.body143.thread + br i1 %.sroa.066.4256, label %.thread212, label %common.resume 123: ; preds = %81, %70, %331, %.thread242 %124 = landingpad { ptr, i32 } @@ -11505,7 +11503,7 @@ default.unreachable: ; preds = %._crit_edge br i1 %199, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8find_map17hfbee4642de6ad6daE.exit.thread", label %171 .body143: ; preds = %332, %244 - br i1 %.sroa.064.4, label %.body143.thread, label %122 + br i1 %.sroa.064.4, label %.body143.thread, label %common.resume .body143.thread284: ; preds = %"_ZN16uv_build_backend16find_module_root28_$u7b$$u7b$closure$u7d$$u7d$17h8c2ea9bf3f0f7dedE.exit.i", %193, %190, %187, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17hb6565719fc1a0fd6E.exit.thread.i.i", %171 %lpad.loopexit = landingpad { ptr, i32 } @@ -12014,7 +12012,7 @@ _ZN3std2io5error5Error4kind17he6aa3f96c380349fE.exit.thread251: ; preds = %140, br label %310 .thread212: ; preds = %128, %136, %151, %335, %123, %75, %122 - %.pn116.pn215 = phi { ptr, i32 } [ %.pn116.pn, %122 ], [ %152, %151 ], [ %124, %123 ], [ %76, %75 ], [ %336, %335 ], [ %129, %136 ], [ %129, %128 ] + %.pn116.pn215 = phi { ptr, i32 } [ %.pn114257, %122 ], [ %152, %151 ], [ %124, %123 ], [ %76, %75 ], [ %336, %335 ], [ %129, %136 ], [ %129, %128 ] invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17h4bb9012c6e739e7fE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %53) #47 to label %common.resume unwind label %311 diff --git a/bench/uv-rs/optimized/dv79qfcpy73s7ozlb66podgd3.ll b/bench/uv-rs/optimized/dv79qfcpy73s7ozlb66podgd3.ll index 430e3206086..927ccaa3b71 100644 --- a/bench/uv-rs/optimized/dv79qfcpy73s7ozlb66podgd3.ll +++ b/bench/uv-rs/optimized/dv79qfcpy73s7ozlb66podgd3.ll @@ -24836,10 +24836,10 @@ _ZN9uv_pep5086marker4tree10MarkerTree20simplify_extras_with17h53f6c480bb2f28daE. br label %79 .body.thread: ; preds = %86, %83, %.body - %.sroa.030.1 = phi i8 [ %.sroa.030.2, %83 ], [ %.sroa.030.0.lpad-body, %.body ], [ %.sroa.030.0.lpad-body, %86 ] - %.sroa.032.1 = phi i8 [ %.sroa.032.2, %83 ], [ %.sroa.032.0.lpad-body, %.body ], [ %.sroa.032.0.lpad-body, %86 ] - %.sroa.034.1 = phi i1 [ false, %83 ], [ %.sroa.034.0.lpad-body, %.body ], [ %.sroa.034.0.lpad-body, %86 ] - %.pn = phi { ptr, i32 } [ %84, %83 ], [ %eh.lpad-body, %.body ], [ %eh.lpad-body, %86 ] + %.sroa.030.1 = phi i8 [ %.sroa.030.2, %83 ], [ %.sroa.030.0.lpad-body, %.body ], [ %.sroa.030.0.lpad-body, %87 ] + %.sroa.032.1 = phi i8 [ %.sroa.032.2, %83 ], [ %.sroa.032.0.lpad-body, %.body ], [ %.sroa.032.0.lpad-body, %87 ] + %.sroa.034.1 = phi i1 [ false, %83 ], [ %.sroa.034.0.lpad-body, %.body ], [ %.sroa.034.0.lpad-body, %87 ] + %.pn = phi { ptr, i32 } [ %84, %83 ], [ %eh.lpad-body, %.body ], [ %eh.lpad-body, %87 ] %82 = trunc nuw i8 %.sroa.030.1 to i1 br i1 %82, label %.body.thread.thread, label %"_ZN4core3ptr56drop_in_place$LT$uv_normalize..extra_name..ExtraName$GT$17hcc3de07393fe8bdfE.exit87" @@ -24856,9 +24856,9 @@ _ZN9uv_pep5086marker4tree10MarkerTree20simplify_extras_with17h53f6c480bb2f28daE. call void @"_ZN65_$LT$arcstr..arc_str..ArcStr$u20$as$u20$core..ops..drop..Drop$GT$4drop17h8e919af4bb65cafcE.llvm.14234798039696082073"(ptr noalias noundef nonnull align 8 dereferenceable(8) %11) br label %"_ZN4core3ptr56drop_in_place$LT$uv_normalize..extra_name..ExtraName$GT$17hcc3de07393fe8bdfE.exit" -"_ZN4core3ptr56drop_in_place$LT$uv_normalize..extra_name..ExtraName$GT$17hcc3de07393fe8bdfE.exit87": ; preds = %92, %.body.thread.thread, %.body.thread - %.sroa.034.5 = phi i1 [ %.sroa.034.1106, %.body.thread.thread ], [ %.sroa.034.1, %.body.thread ], [ %.sroa.034.1106, %92 ] - %.pn49 = phi { ptr, i32 } [ %.pn107, %.body.thread.thread ], [ %.pn, %.body.thread ], [ %.pn107, %92 ] +"_ZN4core3ptr56drop_in_place$LT$uv_normalize..extra_name..ExtraName$GT$17hcc3de07393fe8bdfE.exit87": ; preds = %.body.thread.thread, %.body.thread + %.sroa.034.5 = phi i1 [ %.sroa.034.1106, %.body.thread.thread ], [ %.sroa.034.1, %.body.thread ] + %.pn49 = phi { ptr, i32 } [ %.pn107, %.body.thread.thread ], [ %.pn, %.body.thread ] br i1 %.sroa.034.5, label %93, label %"_ZN4core3ptr60drop_in_place$LT$uv_normalize..package_name..PackageName$GT$17h615841448838b63aE.exit" 86: ; preds = %.body @@ -24885,10 +24885,15 @@ _ZN9uv_pep5086marker4tree10MarkerTree20simplify_extras_with17h53f6c480bb2f28daE. invoke void @"_ZN65_$LT$arcstr..arc_str..ArcStr$u20$as$u20$core..ops..drop..Drop$GT$4drop17h8e919af4bb65cafcE.llvm.14234798039696082073"(ptr noalias noundef nonnull align 8 dereferenceable(8) %11) to label %"_ZN4core3ptr56drop_in_place$LT$uv_normalize..extra_name..ExtraName$GT$17hcc3de07393fe8bdfE.exit87" unwind label %87 -"_ZN4core3ptr60drop_in_place$LT$uv_normalize..package_name..PackageName$GT$17h615841448838b63aE.exit": ; preds = %93, %"_ZN4core3ptr56drop_in_place$LT$uv_normalize..extra_name..ExtraName$GT$17hcc3de07393fe8bdfE.exit87" - resume { ptr, i32 } %.pn49 +"_ZN4core3ptr56drop_in_place$LT$uv_normalize..extra_name..ExtraName$GT$17hcc3de07393fe8bdfE.exit87": ; preds = %93 + br i1 %.sroa.034.1106, label %94, label %"_ZN4core3ptr60drop_in_place$LT$uv_normalize..package_name..PackageName$GT$17h615841448838b63aE.exit" -93: ; preds = %"_ZN4core3ptr56drop_in_place$LT$uv_normalize..extra_name..ExtraName$GT$17hcc3de07393fe8bdfE.exit87" +"_ZN4core3ptr60drop_in_place$LT$uv_normalize..package_name..PackageName$GT$17h615841448838b63aE.exit": ; preds = %93, %"_ZN4core3ptr56drop_in_place$LT$uv_normalize..extra_name..ExtraName$GT$17hcc3de07393fe8bdfE.exit87", %86 + %.pn49110 = phi { ptr, i32 } [ %.pn49, %86 ], [ %.pn107, %"_ZN4core3ptr56drop_in_place$LT$uv_normalize..extra_name..ExtraName$GT$17hcc3de07393fe8bdfE.exit87" ], [ %.pn49111, %94 ] + resume { ptr, i32 } %.pn49110 + +93: ; preds = %"_ZN4core3ptr56drop_in_place$LT$uv_normalize..extra_name..ExtraName$GT$17hcc3de07393fe8bdfE.exit87", %86 + %.pn49111 = phi { ptr, i32 } [ %.pn107, %"_ZN4core3ptr56drop_in_place$LT$uv_normalize..extra_name..ExtraName$GT$17hcc3de07393fe8bdfE.exit87" ], [ %.pn49, %86 ] invoke void @"_ZN65_$LT$arcstr..arc_str..ArcStr$u20$as$u20$core..ops..drop..Drop$GT$4drop17h8e919af4bb65cafcE.llvm.14234798039696082073"(ptr noalias noundef nonnull align 8 dereferenceable(8) %12) to label %"_ZN4core3ptr60drop_in_place$LT$uv_normalize..package_name..PackageName$GT$17h615841448838b63aE.exit" unwind label %87 } diff --git a/bench/velox/optimized/Sequence.ll b/bench/velox/optimized/Sequence.ll index 5197e1426ed..b53cc511cb3 100644 --- a/bench/velox/optimized/Sequence.ll +++ b/bench/velox/optimized/Sequence.ll @@ -9955,7 +9955,6 @@ _ZN4date14year_month_dayC2ERKNS_19year_month_day_lastE.exit: ; preds = %land.rhs %mul129.i = mul nsw i32 %sub.i, 12 %add.i = sub nsw i32 %conv.i141, %conv.i135 %sub132.i = add nsw i32 %add.i, %mul129.i - %conv133.i = sext i32 %sub132.i to i64 %cmp136.i.not = icmp ne i32 %conv.i138, %retval.sroa.0.0.i.i %cmp139.i = icmp samesign ugt i32 %conv.i133, %conv.i138 %or.cond = select i1 %cmp136.i.not, i1 %cmp139.i, i1 false @@ -9968,18 +9967,17 @@ lor.lhs.false140.i: ; preds = %_ZN4date14year_mont br i1 %or.cond40, label %if.then146.i, label %cond.end.i if.then146.i: ; preds = %lor.lhs.false140.i, %_ZN4date14year_month_dayC2ERKNS_19year_month_day_lastE.exit - %dec.i = add nsw i64 %conv133.i, -1 + %dec.i = add i32 %sub132.i, -1 br label %cond.end.i cond.end.i: ; preds = %if.then146.i, %lor.lhs.false140.i - %diff.i.0 = phi i64 [ %dec.i, %if.then146.i ], [ %conv133.i, %lor.lhs.false140.i ] - %12 = sub nsw i64 0, %diff.i.0 - %mul151.i = select i1 %cmp.i44, i64 %diff.i.0, i64 %12 - %13 = trunc i64 %mul151.i to i32 + %diff.i.0 = phi i32 [ %dec.i, %if.then146.i ], [ %sub132.i, %lor.lhs.false140.i ] + %12 = sub i32 0, %diff.i.0 + %mul151.i = select i1 %cmp.i44, i32 %diff.i.0, i32 %12 br label %_ZN8facebook5velox9functions8diffDateENS1_12_GLOBAL__N_112DateTimeUnitEii.exit _ZN8facebook5velox9functions8diffDateENS1_12_GLOBAL__N_112DateTimeUnitEii.exit: ; preds = %cond.end.i, %entry - %retval.i.0 = phi i32 [ 0, %entry ], [ %13, %cond.end.i ] + %retval.i.0 = phi i32 [ 0, %entry ], [ %mul151.i, %cond.end.i ] %div207 = sdiv i32 %retval.i.0, %step %div.sext = sext i32 %div207 to i64 %add = add nsw i64 %div.sext, 1 @@ -21159,7 +21157,6 @@ _ZN4date14year_month_dayC2ERKNS_19year_month_day_lastE.exit: ; preds = %land.rhs %mul129.i = mul nsw i32 %sub.i, 12 %add.i = sub nsw i32 %conv.i133, %conv.i127 %sub132.i = add nsw i32 %add.i, %mul129.i - %conv133.i = sext i32 %sub132.i to i64 %cmp136.i.not = icmp ne i32 %conv.i130, %retval.sroa.0.0.i.i %cmp139.i = icmp samesign ugt i32 %conv.i125, %conv.i130 %or.cond = select i1 %cmp136.i.not, i1 %cmp139.i, i1 false @@ -21172,18 +21169,17 @@ lor.lhs.false140.i: ; preds = %_ZN4date14year_mont br i1 %or.cond38, label %if.then146.i, label %cond.end.i if.then146.i: ; preds = %lor.lhs.false140.i, %_ZN4date14year_month_dayC2ERKNS_19year_month_day_lastE.exit - %dec.i = add nsw i64 %conv133.i, -1 + %dec.i = add i32 %sub132.i, -1 br label %cond.end.i cond.end.i: ; preds = %if.then146.i, %lor.lhs.false140.i - %diff.i.0 = phi i64 [ %dec.i, %if.then146.i ], [ %conv133.i, %lor.lhs.false140.i ] - %17 = sub nsw i64 0, %diff.i.0 - %mul151.i = select i1 %2, i64 %diff.i.0, i64 %17 - %18 = trunc i64 %mul151.i to i32 + %diff.i.0 = phi i32 [ %dec.i, %if.then146.i ], [ %sub132.i, %lor.lhs.false140.i ] + %17 = sub i32 0, %diff.i.0 + %mul151.i = select i1 %2, i32 %diff.i.0, i32 %17 br label %_ZN8facebook5velox9functions13diffTimestampENS1_12_GLOBAL__N_112DateTimeUnitERKNS0_9TimestampES6_.exit _ZN8facebook5velox9functions13diffTimestampENS1_12_GLOBAL__N_112DateTimeUnitERKNS0_9TimestampES6_.exit: ; preds = %entry, %cond.end.i - %retval.i.0 = phi i32 [ %18, %cond.end.i ], [ 0, %entry ] + %retval.i.0 = phi i32 [ %mul151.i, %cond.end.i ], [ 0, %entry ] %div205 = sdiv i32 %retval.i.0, %step %div.sext = sext i32 %div205 to i64 %add = add nsw i64 %div.sext, 1 diff --git a/bench/velox/optimized/TimestampConversion.ll b/bench/velox/optimized/TimestampConversion.ll index 941edba978b..b5ac42640a0 100644 --- a/bench/velox/optimized/TimestampConversion.ll +++ b/bench/velox/optimized/TimestampConversion.ll @@ -1442,14 +1442,14 @@ lor.lhs.false.i: ; preds = %if.end5.i br i1 %14, label %if.end11.i, label %if.end30 if.end11.i: ; preds = %lor.lhs.false.i - %conv13.i = zext nneg i8 %9 to i32 - %15 = mul nuw nsw i32 %conv13.i, 10 - %conv16.i = zext nneg i8 %12 to i32 - %sub17.i = add nuw nsw i32 %15, %conv16.i - %add18.i = add nsw i32 %sub17.i, -528 + %conv13.i = zext nneg i8 %9 to i64 + %15 = mul nuw nsw i64 %conv13.i, 10 + %conv16.i = zext nneg i8 %12 to i64 + %sub17.i = add nuw nsw i64 %15, %conv16.i + %add18.i = add nuw nsw i64 %sub17.i, 4294966768 %cmp20.i = icmp eq i8 %8, 45 - %sub22.i = sub nsw i32 528, %sub17.i - %spec.select.i = select i1 %cmp20.i, i32 %sub22.i, i32 %add18.i + %sub22.i = sub nsw i64 528, %sub17.i + %spec.select.i = select i1 %cmp20.i, i64 %sub22.i, i64 %add18.i %cmp25.not.i = icmp ult i64 %add.i25, %len br i1 %cmp25.not.i, label %if.end27.i, label %if.then23 @@ -1478,22 +1478,23 @@ lor.lhs.false39.i: ; preds = %lor.lhs.false36.i br i1 %22, label %if.end44.i, label %if.then23 if.end44.i: ; preds = %lor.lhs.false39.i - %conv46.i = zext nneg i8 %17 to i32 - %23 = mul nuw nsw i32 %conv46.i, 10 - %conv51.i = zext nneg i8 %20 to i32 - %sub52.i = add nuw nsw i32 %23, %conv51.i - %add53.i = add nsw i32 %sub52.i, -528 - %sub57.i = sub nsw i32 528, %sub52.i - %spec.select43.i = select i1 %cmp20.i, i32 %sub57.i, i32 %add53.i - %24 = mul nsw i32 %spec.select43.i, 60 + %conv46.i = zext nneg i8 %17 to i64 + %23 = mul nuw nsw i64 %conv46.i, 10 + %conv51.i = zext nneg i8 %20 to i64 + %sub52.i = add nuw nsw i64 %23, %conv51.i + %add53.i = add nsw i64 %sub52.i, -528 + %sub57.i = sub nsw i64 528, %sub52.i + %spec.select43.i = select i1 %cmp20.i, i64 %sub57.i, i64 %add53.i + %24 = mul nsw i64 %spec.select43.i, 60 br label %if.then23 if.then23: ; preds = %if.end44.i, %lor.lhs.false39.i, %lor.lhs.false36.i, %if.end27.i, %if.end11.i - %minuteOffset.0 = phi i32 [ 0, %if.end27.i ], [ %24, %if.end44.i ], [ 0, %lor.lhs.false39.i ], [ 0, %lor.lhs.false36.i ], [ 0, %if.end11.i ] + %minuteOffset.0 = phi i64 [ 0, %if.end27.i ], [ %24, %if.end44.i ], [ 0, %lor.lhs.false39.i ], [ 0, %lor.lhs.false36.i ], [ 0, %if.end11.i ] %add34.sink.i = phi i64 [ %spec.select42.i, %if.end27.i ], [ %add34.i, %if.end44.i ], [ %spec.select42.i, %lor.lhs.false39.i ], [ %spec.select42.i, %lor.lhs.false36.i ], [ %add.i25, %if.end11.i ] - %mul = mul nsw i32 %spec.select.i, 3600 - %add25 = add nsw i32 %minuteOffset.0, %mul - %conv27 = sext i32 %add25 to i64 + %mul = mul nsw i64 %spec.select.i, 3600 + %add25 = add nsw i64 %minuteOffset.0, %mul + %sext = shl i64 %add25, 32 + %conv27 = ashr exact i64 %sext, 32 %sub28 = sub nsw i64 %add.i, %conv27 br label %if.end30 diff --git a/bench/velox/optimized/URLFunctions.ll b/bench/velox/optimized/URLFunctions.ll index d18be74de2e..62359e40543 100644 --- a/bench/velox/optimized/URLFunctions.ll +++ b/bench/velox/optimized/URLFunctions.ll @@ -12554,7 +12554,7 @@ if.then24: ; preds = %land.lhs.true19 if.end27: ; preds = %if.then24, %land.lhs.true19, %if.end %50 = phi ptr [ %incdec.ptr26, %if.then24 ], [ %45, %land.lhs.true19 ], [ %45, %if.end ] - %greedy.1 = phi i8 [ 0, %if.then24 ], [ 1, %land.lhs.true19 ], [ 1, %if.end ] + %greedy.1 = phi i1 [ false, %if.then24 ], [ true, %land.lhs.true19 ], [ true, %if.end ] %cmp30.not = icmp eq ptr %50, %1 br i1 %cmp30.not, label %if.end45, label %land.lhs.true31 @@ -12584,7 +12584,7 @@ if.then41: ; preds = %land.lhs.true35 if.end45: ; preds = %land.lhs.true, %if.end27, %land.lhs.true31, %land.lhs.true35, %if.then41, %entry %56 = phi ptr [ %incdec.ptr43, %if.then41 ], [ %50, %land.lhs.true35 ], [ %50, %land.lhs.true31 ], [ %1, %if.end27 ], [ %0, %entry ], [ %0, %land.lhs.true ] %pocessive.0 = phi i1 [ true, %if.then41 ], [ false, %land.lhs.true35 ], [ false, %land.lhs.true31 ], [ false, %if.end27 ], [ false, %entry ], [ false, %land.lhs.true ] - %greedy.0 = phi i8 [ %greedy.1, %if.then41 ], [ %greedy.1, %land.lhs.true35 ], [ %greedy.1, %land.lhs.true31 ], [ %greedy.1, %if.end27 ], [ 1, %entry ], [ 1, %land.lhs.true ] + %greedy.0 = phi i1 [ %greedy.1, %if.then41 ], [ %greedy.1, %land.lhs.true35 ], [ %greedy.1, %land.lhs.true31 ], [ %greedy.1, %if.end27 ], [ true, %entry ], [ true, %land.lhs.true ] %m_last_state = getelementptr inbounds nuw i8, ptr %this, i64 16 %57 = load ptr, ptr %m_last_state, align 8 %cmp46 = icmp eq ptr %57, null @@ -12842,7 +12842,8 @@ _ZN5boost16re_detail_10740019basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_re %max = getelementptr inbounds nuw i8, ptr %call11.i, i64 296 store i64 %high, ptr %max, align 8 %greedy84 = getelementptr inbounds nuw i8, ptr %call11.i, i64 309 - store i8 %greedy.0, ptr %greedy84, align 1 + %frombool = zext i1 %greedy.0 to i8 + store i8 %frombool, ptr %greedy84, align 1 %leading = getelementptr inbounds nuw i8, ptr %call11.i, i64 308 store i8 0, ptr %leading, align 4 %98 = load ptr, ptr %this, align 8 @@ -17382,10 +17383,8 @@ if.end1193: ; preds = %option_group_jump %idxprom.i.i633 = zext i8 %412 to i64 %arrayidx.i.i634 = getelementptr inbounds nuw i8, ptr %m_char_map.i.i632, i64 %idxprom.i.i633 %414 = load i8, ptr %arrayidx.i.i634, align 1 - switch i8 %414, label %while.cond1226 [ - i8 2, label %if.then1206 - i8 36, label %if.then1220 - ] + %cmp1205 = icmp ne i8 %414, 2 + br i1 %cmp1205, label %if.else1214, label %if.then1206 if.then1206: ; preds = %if.end1193 %415 = load ptr, ptr %this, align 8 @@ -17412,6 +17411,10 @@ _ZN5boost16re_detail_10740019basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_re br label %if.end1242 if.then1220: ; preds = %if.end1193 + %cmp1219 = icmp eq i8 %414, 36 + br i1 %cmp1219, label %if.then1220, label %while.cond1226 + +if.then1220: ; preds = %if.else1214 %420 = load ptr, ptr %this, align 8 %m_flags.i641 = getelementptr inbounds nuw i8, ptr %420, i64 40 store i32 %call1171, ptr %m_flags.i641, align 8 @@ -17436,8 +17439,8 @@ _ZN5boost16re_detail_10740019basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_re %.pre857 = load i8, ptr %m_has_case_change, align 8 br label %if.end1242 -while.cond1226: ; preds = %if.end1193, %while.cond1226 - %.pn144 = phi ptr [ %storemerge143, %while.cond1226 ], [ %411, %if.end1193 ] +while.cond1226: ; preds = %if.else1214, %while.cond1226 + %.pn144 = phi ptr [ %storemerge143, %while.cond1226 ], [ %411, %if.else1214 ] %storemerge143 = getelementptr inbounds i8, ptr %.pn144, i64 -1 store ptr %storemerge143, ptr %m_position, align 8 %424 = load i8, ptr %storemerge143, align 1 @@ -17461,7 +17464,6 @@ while.end1235: ; preds = %while.cond1226 if.end1242: ; preds = %_ZN5boost16re_detail_10740019basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE5flagsEj.exit649, %_ZN5boost16re_detail_10740019basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE5flagsEj.exit %428 = phi i8 [ %418, %_ZN5boost16re_detail_10740019basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE5flagsEj.exit ], [ %.pre857, %_ZN5boost16re_detail_10740019basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE5flagsEj.exit649 ] %old_case_change.1 = phi i8 [ %or145, %_ZN5boost16re_detail_10740019basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE5flagsEj.exit ], [ %frombool38, %_ZN5boost16re_detail_10740019basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE5flagsEj.exit649 ] - %restore_flags.1 = phi i1 [ false, %_ZN5boost16re_detail_10740019basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE5flagsEj.exit ], [ true, %_ZN5boost16re_detail_10740019basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE5flagsEj.exit649 ] %tobool1244 = trunc i8 %428 to i1 br i1 %tobool1244, label %if.then1245, label %sw.epilog @@ -17475,7 +17477,7 @@ if.then1245: ; preds = %if.end1242 sw.epilog: ; preds = %if.end1242, %if.then1245, %if.end445, %if.end684, %if.end868, %if.end900, %if.end738, %if.end588, %if.end1008, %_ZN5boost16re_detail_10740019basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE12append_stateENS0_19syntax_element_typeEm.exit431, %if.end261, %_ZN5boost16re_detail_10740019basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE12append_stateENS0_19syntax_element_typeEm.exit359, %_ZN5boost16re_detail_10740019basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE12append_stateENS0_19syntax_element_typeEm.exit310, %_ZN5boost16re_detail_10740019basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE12append_stateENS0_19syntax_element_typeEm.exit269, %sw.bb48 %old_case_change.0 = phi i8 [ %frombool38, %_ZN5boost16re_detail_10740019basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE12append_stateENS0_19syntax_element_typeEm.exit269 ], [ %old_case_change.1, %if.then1245 ], [ %old_case_change.1, %if.end1242 ], [ %frombool38, %sw.bb48 ], [ %frombool38, %_ZN5boost16re_detail_10740019basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE12append_stateENS0_19syntax_element_typeEm.exit310 ], [ %frombool38, %_ZN5boost16re_detail_10740019basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE12append_stateENS0_19syntax_element_typeEm.exit359 ], [ %frombool38, %if.end261 ], [ %frombool38, %if.end1008 ], [ %frombool38, %_ZN5boost16re_detail_10740019basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE12append_stateENS0_19syntax_element_typeEm.exit431 ], [ %frombool38, %if.end445 ], [ %frombool38, %if.end588 ], [ %frombool38, %if.end684 ], [ %frombool38, %if.end738 ], [ %frombool38, %if.end868 ], [ %frombool38, %if.end900 ] - %restore_flags.0 = phi i1 [ true, %_ZN5boost16re_detail_10740019basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE12append_stateENS0_19syntax_element_typeEm.exit269 ], [ %restore_flags.1, %if.then1245 ], [ %restore_flags.1, %if.end1242 ], [ true, %sw.bb48 ], [ true, %_ZN5boost16re_detail_10740019basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE12append_stateENS0_19syntax_element_typeEm.exit310 ], [ true, %_ZN5boost16re_detail_10740019basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE12append_stateENS0_19syntax_element_typeEm.exit359 ], [ true, %if.end261 ], [ true, %if.end1008 ], [ true, %_ZN5boost16re_detail_10740019basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE12append_stateENS0_19syntax_element_typeEm.exit431 ], [ true, %if.end445 ], [ true, %if.end588 ], [ true, %if.end684 ], [ true, %if.end738 ], [ true, %if.end868 ], [ true, %if.end900 ] + %restore_flags.0 = phi i1 [ true, %_ZN5boost16re_detail_10740019basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE12append_stateENS0_19syntax_element_typeEm.exit269 ], [ %cmp1205, %if.then1245 ], [ %cmp1205, %if.end1242 ], [ true, %sw.bb48 ], [ true, %_ZN5boost16re_detail_10740019basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE12append_stateENS0_19syntax_element_typeEm.exit310 ], [ true, %_ZN5boost16re_detail_10740019basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE12append_stateENS0_19syntax_element_typeEm.exit359 ], [ true, %if.end261 ], [ true, %if.end1008 ], [ true, %_ZN5boost16re_detail_10740019basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE12append_stateENS0_19syntax_element_typeEm.exit431 ], [ true, %if.end445 ], [ true, %if.end588 ], [ true, %if.end684 ], [ true, %if.end738 ], [ true, %if.end868 ], [ true, %if.end900 ] %jump_offset.0 = phi i64 [ 0, %_ZN5boost16re_detail_10740019basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE12append_stateENS0_19syntax_element_typeEm.exit269 ], [ 0, %if.then1245 ], [ 0, %if.end1242 ], [ 0, %sw.bb48 ], [ %sub.ptr.sub.i.i314, %_ZN5boost16re_detail_10740019basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE12append_stateENS0_19syntax_element_typeEm.exit310 ], [ %sub.ptr.sub.i.i363, %_ZN5boost16re_detail_10740019basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE12append_stateENS0_19syntax_element_typeEm.exit359 ], [ %sub.ptr.sub.i.i386, %if.end261 ], [ 0, %if.end1008 ], [ %sub.ptr.sub.i.i435, %_ZN5boost16re_detail_10740019basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE12append_stateENS0_19syntax_element_typeEm.exit431 ], [ 0, %if.end445 ], [ 0, %if.end588 ], [ 0, %if.end684 ], [ 0, %if.end738 ], [ 0, %if.end868 ], [ 0, %if.end900 ] %markid.0 = phi i32 [ 0, %_ZN5boost16re_detail_10740019basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE12append_stateENS0_19syntax_element_typeEm.exit269 ], [ 0, %if.then1245 ], [ 0, %if.end1242 ], [ 0, %sw.bb48 ], [ -1, %_ZN5boost16re_detail_10740019basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE12append_stateENS0_19syntax_element_typeEm.exit310 ], [ -2, %_ZN5boost16re_detail_10740019basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE12append_stateENS0_19syntax_element_typeEm.exit359 ], [ %.sink, %if.end261 ], [ %markid.2, %if.end1008 ], [ -3, %_ZN5boost16re_detail_10740019basic_regex_creatorIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE12append_stateENS0_19syntax_element_typeEm.exit431 ], [ -4, %if.end445 ], [ -4, %if.end588 ], [ -4, %if.end684 ], [ -4, %if.end738 ], [ -4, %if.end868 ], [ -4, %if.end900 ] %call1252 = call noundef zeroext i1 @_ZN5boost16re_detail_10740018basic_regex_parserIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE9parse_allEv(ptr noundef nonnull align 8 dereferenceable(264) %this) diff --git a/bench/wireshark/optimized/packet-iwarp-mpa.ll b/bench/wireshark/optimized/packet-iwarp-mpa.ll index 3a1d8251373..0c0dd01934b 100644 --- a/bench/wireshark/optimized/packet-iwarp-mpa.ll +++ b/bench/wireshark/optimized/packet-iwarp-mpa.ll @@ -163,7 +163,7 @@ define internal noundef zeroext i1 @dissect_iwarp_mpa_heur(ptr noundef %0, ptr n 6: ; preds = %4 %7 = tail call i32 @tvb_captured_length(ptr noundef %0) %8 = icmp ugt i32 %7, 19 - br i1 %8, label %9, label %13 + br i1 %8, label %9, label %16 9: ; preds = %6 %10 = tail call fastcc zeroext i1 @is_mpa_req(ptr noundef %0, ptr noundef %1) @@ -173,56 +173,64 @@ define internal noundef zeroext i1 @dissect_iwarp_mpa_heur(ptr noundef %0, ptr n %12 = tail call fastcc zeroext i1 @is_mpa_rep(ptr noundef %0, ptr noundef %1) br label %13 -13: ; preds = %11, %9, %6 - %.0 = phi i1 [ false, %6 ], [ true, %9 ], [ %12, %11 ] +13: ; preds = %11, %9 + %.0 = phi i1 [ true, %9 ], [ %12, %11 ] %14 = tail call i32 @tvb_captured_length(ptr noundef %0) %15 = icmp ugt i32 %14, 7 - br i1 %15, label %16, label %is_mpa_fpdu.exit.thread + br i1 %15, label %18, label %35 -16: ; preds = %13 - %17 = tail call ptr @find_conversation_pinfo(ptr noundef %1, i32 noundef 0) - %.not.i = icmp eq ptr %17, null - br i1 %.not.i, label %is_mpa_fpdu.exit.thread, label %get_mpa_state.exit.i +16: ; preds = %6 + %17 = tail call i32 @tvb_captured_length(ptr noundef %0) + %.not.i = icmp ugt i32 %17, 7 + br i1 %.not.i, label %get_mpa_state.exit.i, label %33 -get_mpa_state.exit.i: ; preds = %16 - %18 = load i32, ptr @proto_iwarp_mpa, align 4 - %19 = tail call ptr @conversation_get_proto_data(ptr noundef nonnull %17, i32 noundef %18) +get_mpa_state.exit.i: ; preds = %16, %13 + %.024 = phi i1 [ false, %.thread ], [ %.0, %13 ] + %19 = tail call ptr @find_conversation_pinfo(ptr noundef %1, i32 noundef 0) %.not13.i = icmp eq ptr %19, null br i1 %.not13.i, label %is_mpa_fpdu.exit.thread, label %20 20: ; preds = %get_mpa_state.exit.i - %21 = load i8, ptr %19, align 4, !range !6, !noundef !7 - %22 = trunc nuw i8 %21 to i1 - br i1 %22, label %23, label %is_mpa_fpdu.exit.thread - -23: ; preds = %20 - %24 = getelementptr inbounds nuw i8, ptr %1, i64 20 - %25 = load i32, ptr %24, align 4 - %.fr = freeze i32 %25 - %26 = getelementptr inbounds nuw i8, ptr %19, i64 4 + %21 = load i32, ptr @proto_iwarp_mpa, align 4 + %21 = tail call ptr @conversation_get_proto_data(ptr noundef nonnull %19, i32 noundef %21) + %.not13.i = icmp eq ptr %21, null + br i1 %.not13.i, label %is_mpa_fpdu.exit, label %22 + +22: ; preds = %20 + %25 = load i8, ptr %21, align 4, !range !6, !noundef !7 + %24 = trunc nuw i8 %25 to i1 + br i1 %24, label %25, label %is_mpa_fpdu.exit + +25: ; preds = %22 + %26 = getelementptr inbounds nuw i8, ptr %1, i64 20 %27 = load i32, ptr %26, align 4 - %28 = icmp eq i32 %.fr, %27 - br i1 %28, label %is_mpa_fpdu.exit.thread, label %is_mpa_fpdu.exit - -is_mpa_fpdu.exit: ; preds = %23 - %29 = getelementptr inbounds nuw i8, ptr %19, i64 8 - %30 = load i32, ptr %29, align 4 - %.fr21 = freeze i32 %30 - %31 = icmp ne i32 %.fr, %.fr21 - %or.cond = or i1 %.0, %31 - br i1 %or.cond, label %.thread, label %33 - -is_mpa_fpdu.exit.thread: ; preds = %23, %20, %get_mpa_state.exit.i, %16, %13 - br i1 %.0, label %.thread, label %33 - -.thread: ; preds = %is_mpa_fpdu.exit, %is_mpa_fpdu.exit.thread - %32 = getelementptr inbounds nuw i8, ptr %1, i64 280 - store i32 12, ptr %32, align 8 + %28 = getelementptr inbounds nuw i8, ptr %21, i64 4 + %29 = load i32, ptr %28, align 4 + %30 = icmp eq i32 %27, %29 + br i1 %30, label %is_mpa_fpdu.exit.thread, label %31 + +31:; preds = %25 + %32 = getelementptr inbounds nuw i8, ptr %21, i64 8 + %33 = load i32, ptr %32, align 4 + %34 = icmp ne i32 %27, %33 + br label %is_mpa_fpdu.exit.thread + +is_mpa_fpdu.exit.thread: ; preds = %18, %get_mpa_state.exit.i, %22, %25, %31 + %.0.i = phi i1 [ false, %18 ], [ false, %get_mpa_state.exit.i ], [ false, %22 ], [ false, %25 ], [ %34, %31 ] + %spec.select17 = or i1 %.024, %.0.i + br i1 %spec.select17, label %36, label %33 + +35: ; preds = %13 + br i1 %.0, label %36, label %.thread25 + +36: ; preds = %is_mpa_fpdu.exit, %35 + %37 = getelementptr inbounds nuw i8, ptr %1, i64 280 + store i32 12, ptr %37, align 8 tail call void @tcp_dissect_pdus(ptr noundef %0, ptr noundef %1, ptr noundef %2, i1 noundef zeroext true, i32 noundef 8, ptr noundef nonnull @iwrap_mpa_pdu_length, ptr noundef nonnull @dissect_iwarp_mpa_pdu, ptr noundef nonnull %3) br label %33 -33: ; preds = %is_mpa_fpdu.exit, %is_mpa_fpdu.exit.thread, %4, %.thread - %.015 = phi i1 [ true, %.thread ], [ false, %4 ], [ false, %is_mpa_fpdu.exit.thread ], [ false, %is_mpa_fpdu.exit ] +33: ; preds = %16, %is_mpa_fpdu.exit.thread, %35, %4, %36 + %.015 = phi i1 [ true, %36 ], [ false, %4 ], [ false, %35 ], [ false, %is_mpa_fpdu.exit ], [ false, %.thread ] ret i1 %.015 } diff --git a/bench/wireshark/optimized/packet-ntlmssp.ll b/bench/wireshark/optimized/packet-ntlmssp.ll index 0c9649e514a..ca8e5c4e283 100644 --- a/bench/wireshark/optimized/packet-ntlmssp.ll +++ b/bench/wireshark/optimized/packet-ntlmssp.ll @@ -2415,7 +2415,8 @@ dissect_ntlmssp_challenge.exit: ; preds = %200, %203, %167 .thread.i: ; preds = %227 %244 = call i32 @tvb_get_letohl(ptr noundef %0, i32 noundef %225) - %245 = trunc i32 %244 to i1 + %245 = and i32 %244, 1 + %.not181.i = icmp ne i32 %245, 0 %246 = icmp ne ptr %.0168.i, null br label %255 @@ -2431,12 +2432,13 @@ dissect_ntlmssp_challenge.exit: ; preds = %200, %203, %167 252: ; preds = %248 %253 = load i32, ptr %.0168.i, align 8 - %254 = trunc i32 %253 to i1 + %254 = and i32 %253, 1 + %.not182.i = icmp ne i32 %254, 0 br label %255 255: ; preds = %252, %248, %247, %.thread.i %256 = phi i1 [ true, %248 ], [ false, %247 ], [ true, %252 ], [ %246, %.thread.i ] - %.1171.i = phi i1 [ false, %248 ], [ false, %247 ], [ %254, %252 ], [ %245, %.thread.i ] + %.1171.i = phi i1 [ false, %248 ], [ false, %247 ], [ %.not182.i, %252 ], [ %.not181.i, %.thread.i ] %257 = add i32 %.0..0..0..0.51, 4 %258 = call i32 @tvb_get_letohl(ptr noundef %0, i32 noundef %257) %259 = load i32, ptr @hf_ntlmssp_auth_lmresponse, align 4 diff --git a/bench/wireshark/optimized/packet-sctp.ll b/bench/wireshark/optimized/packet-sctp.ll index 4cab82bb167..169f5040d9c 100644 --- a/bench/wireshark/optimized/packet-sctp.ll +++ b/bench/wireshark/optimized/packet-sctp.ll @@ -2521,42 +2521,44 @@ proto_item_set_hidden.exit119: ; preds = %163, %160, %proto_i store i16 %261, ptr %219, align 2 %262 = call zeroext i8 @tvb_get_uint8(ptr noundef %240, i32 noundef 0) %263 = icmp eq i8 %262, 6 - br i1 %263, label %264, label %266 + br i1 %263, label %264, label %269 264: ; preds = %253 %265 = call zeroext i8 @tvb_get_uint8(ptr noundef %240, i32 noundef 1) - br label %266 - -266: ; preds = %264, %253 - %.069.i = phi i8 [ 0, %253 ], [ %265, %264 ] + %266 = and i8 %265, 1 + %.not.i122 = icmp ne i8 %266, 0 %267 = call zeroext i8 @tvb_get_uint8(ptr noundef %240, i32 noundef 0) %268 = icmp eq i8 %267, 14 - br i1 %268, label %269, label %272 + br i1 %268, label %271, label %274 -269: ; preds = %266 - %270 = call zeroext i8 @tvb_get_uint8(ptr noundef %240, i32 noundef 1) - %271 = and i8 %270, 1 - %.not88.i = icmp eq i8 %271, 0 - %spec.select89.i = select i1 %.not88.i, i8 %.069.i, i8 1 - br label %272 - -272: ; preds = %269, %266 - %.170.i = phi i8 [ %.069.i, %266 ], [ %spec.select89.i, %269 ] - %273 = trunc i8 %.170.i to i1 - br i1 %273, label %274, label %276 - -274: ; preds = %272 +269: ; preds = %253 + %270 = call zeroext i8 @tvb_get_uint8(ptr noundef %240, i32 noundef 0) + %270 = icmp eq i8 %270, 14 + br i1 %270, label %271, label %276 + +271:; preds = %270, %264 + %.069.i171 = phi i1 [ false, %.thread ], [ %.not.i122, %264 ] + %272 = call zeroext i8 @tvb_get_uint8(ptr noundef %240, i32 noundef 1) + %273 = and i8 %272, 1 + %.not88.i = icmp ne i8 %273, 0 + %spec.select89.i = select i1 %.not88.i, i1 true, i1 %.069.i171 + br i1 %spec.select89.i, label %275, label %.thread172 + +274: ; preds = %264 + br i1 %.not.i122, label %275, label %.thread172 + +275: ; preds = %271, %274 store i32 0, ptr %220, align 4 %275 = load i32, ptr getelementptr inbounds nuw (i8, ptr @sctp_info, i64 64), align 8 br label %278 -276: ; preds = %272 +276: ; preds = %270, %271, %274 %277 = load i32, ptr getelementptr inbounds nuw (i8, ptr @sctp_info, i64 64), align 8 store i32 %277, ptr %220, align 4 br label %278 -278: ; preds = %276, %274 - %storemerge = phi i32 [ 0, %276 ], [ %275, %274 ] +278: ; preds = %276, %275 + %storemerge = phi i32 [ 0, %.thread172 ], [ %275, %275 ] store i32 %storemerge, ptr %221, align 8 %279 = call zeroext i8 @tvb_get_uint8(ptr noundef %240, i32 noundef 0) %280 = icmp eq i8 %279, 1 diff --git a/bench/wireshark/optimized/wlan_statistics_dialog.ll b/bench/wireshark/optimized/wlan_statistics_dialog.ll index ba991ab71d9..a30dc4253e5 100644 --- a/bench/wireshark/optimized/wlan_statistics_dialog.ll +++ b/bench/wireshark/optimized/wlan_statistics_dialog.ll @@ -2586,20 +2586,24 @@ _ZN10QByteArrayixEx.exit: ; preds = %_ZNK17QArrayDataPoi 134: ; preds = %129 call void @_ZN25WlanNetworkTreeWidgetItem11updateBssidEPK9_wlan_hdr(ptr noundef align 8 dereferenceable_or_null(216) %0, ptr noundef %1) - br i1 %.not45.not, label %.thread69.thread, label %136 + br i1 %.not45.not, label %.thread69.thread, label %._crit_edge + +._crit_edge: ; preds = %134 + %.pre = load i8, ptr %28, align 1 + br label %136 135: ; preds = %129 br i1 %.not45.not, label %.thread69.thread, label %136 -136: ; preds = %.thread69, %134, %135 - %137 = getelementptr inbounds nuw i8, ptr %1, i64 76 - %138 = load i8, ptr %28, align 1 - %139 = zext i8 %138 to i64 +136: ; preds = %._crit_edge, %.thread69, %135 + %137 = phi i8 [ %.pre, %._crit_edge ], [ 1, %.thread69 ], [ %128, %135 ] + %138 = getelementptr inbounds nuw i8, ptr %1, i64 76 + %139 = zext i8 %137 to i64 %140 = getelementptr inbounds nuw i8, ptr %0, i64 128 %141 = load ptr, ptr %140, align 8 store ptr null, ptr %140, align 8 %142 = getelementptr inbounds nuw i8, ptr %0, i64 136 - store ptr %137, ptr %142, align 8 + store ptr %138, ptr %142, align 8 %143 = getelementptr inbounds nuw i8, ptr %0, i64 144 store i64 %139, ptr %143, align 8 %.not.i.i.i54 = icmp eq ptr %141, null @@ -2617,7 +2621,7 @@ _ZN17QArrayDataPointerIcE5derefEv.exit.i.i55: ; preds = %136 _ZN10QByteArrayD2Ev.exit57: ; preds = %136, %_ZN17QArrayDataPointerIcE5derefEv.exit.i.i55, %145 %146 = load i8, ptr %28, align 1 %147 = zext i8 %146 to i64 - %148 = call ptr @format_text(ptr noundef null, ptr noundef nonnull %137, i64 noundef %147) + %148 = call ptr @format_text(ptr noundef null, ptr noundef nonnull %138, i64 noundef %147) call void @llvm.lifetime.start.p0(ptr nonnull %6) call void @llvm.lifetime.start.p0(ptr nonnull %4) %.not.i.i58 = icmp eq ptr %148, null @@ -2706,15 +2710,15 @@ _ZN7QStringD2Ev.exit64: ; preds = %.body, %_ZN17QArray call void @llvm.lifetime.end.p0(ptr nonnull %6) resume { ptr, i32 } %eh.lpad-body -.thread69.thread: ; preds = %133, %79, %.thread, %84, %75, %88, %101, %97, %92, %.thread69, %134, %_ZN7QStringD2Ev.exit, %135 - %.276 = phi i8 [ 1, %_ZN7QStringD2Ev.exit ], [ 1, %135 ], [ 1, %134 ], [ %27, %.thread69 ], [ %27, %92 ], [ %27, %97 ], [ %27, %101 ], [ %27, %88 ], [ %27, %75 ], [ %27, %84 ], [ 1, %.thread ], [ %.1, %133 ], [ %27, %79 ] - %.4 = phi i8 [ 1, %_ZN7QStringD2Ev.exit ], [ %.3, %135 ], [ %.3, %134 ], [ 0, %.thread69 ], [ 0, %92 ], [ 0, %97 ], [ 0, %101 ], [ 0, %88 ], [ 1, %75 ], [ 0, %84 ], [ %.23994.ph, %.thread ], [ %.3, %133 ], [ 1, %79 ] +.thread69.thread: ; preds = %84, %75, %88, %101, %97, %92, %79, %133, %.thread, %.thread69, %134, %_ZN7QStringD2Ev.exit, %135 + %.276 = phi i8 [ 1, %_ZN7QStringD2Ev.exit ], [ 1, %135 ], [ 1, %134 ], [ %27, %.thread69 ], [ 1, %.thread88 ], [ %27, %79 ], [ %.1, %133 ], [ %27, %92 ], [ %27, %97 ], [ %27, %101 ], [ %27, %88 ], [ %27, %75 ], [ %27, %84 ] + %.4 = phi i8 [ 1, %_ZN7QStringD2Ev.exit ], [ %.3, %135 ], [ %.3, %134 ], [ 0, %.thread69 ], [ %.23994.ph, %.thread88 ], [ 1, %79 ], [ %.3, %133 ], [ 0, %92 ], [ 0, %97 ], [ 0, %101 ], [ 0, %88 ], [ 1, %75 ], [ 0, %84 ] %173 = and i8 %.4, %.276 %174 = icmp ne i8 %173, 0 br label %175 175: ; preds = %101, %66, %.thread69.thread - %.0 = phi i1 [ %174, %.thread69.thread ], [ true, %66 ], [ true, %101 ] + %.0 = phi i1 [ %174, %.thread79 ], [ true, %66 ], [ true, %101 ] ret i1 %.0 } diff --git a/bench/z3/optimized/monomial_bounds.ll b/bench/z3/optimized/monomial_bounds.ll index 270904bfc8a..3f288f7574d 100644 --- a/bench/z3/optimized/monomial_bounds.ll +++ b/bench/z3/optimized/monomial_bounds.ll @@ -2709,11 +2709,7 @@ _ZN14core_hashtableI18default_hash_entryIjE6u_hash4u_eqED2Ev.exit.i73: ; preds = store ptr null, ptr %141, align 8, !tbaa !210 %197 = load ptr, ptr %8, align 8, !tbaa !202 %.not.i.i.i74 = icmp eq ptr %197, null - br i1 %.not.i.i.i74, label %_ZN2lp11explanationD2Ev.exit86.thread, label %_ZNK6vectorISt4pairIj8rationalELb1EjE4sizeEv.exit.i.i.i.i75 - -_ZN2lp11explanationD2Ev.exit86.thread: ; preds = %_ZN14core_hashtableI18default_hash_entryIjE6u_hash4u_eqED2Ev.exit.i73 - call void @llvm.lifetime.end.p0(ptr nonnull %8) - br label %272 + br i1 %.not.i.i.i74, label %_ZN2lp11explanationD2Ev.exit86, label %_ZNK6vectorISt4pairIj8rationalELb1EjE4sizeEv.exit.i.i.i.i75 _ZNK6vectorISt4pairIj8rationalELb1EjE4sizeEv.exit.i.i.i.i75: ; preds = %_ZN14core_hashtableI18default_hash_entryIjE6u_hash4u_eqED2Ev.exit.i73 %198 = getelementptr inbounds i8, ptr %197, i64 -4 @@ -2764,7 +2760,7 @@ _ZN6vectorISt4pairIj8rationalELb1EjE16destroy_elementsEv.exit.i.i.i85: ; preds = call void @__clang_call_terminate(ptr %212) #20 unreachable -_ZN2lp11explanationD2Ev.exit86: ; preds = %_ZN6vectorISt4pairIj8rationalELb1EjE16destroy_elementsEv.exit.i.i.i85 +_ZN2lp11explanationD2Ev.exit86: ; preds = %_ZN14core_hashtableI18default_hash_entryIjE6u_hash4u_eqED2Ev.exit.i73, %_ZN6vectorISt4pairIj8rationalELb1EjE16destroy_elementsEv.exit.i.i.i85 call void @llvm.lifetime.end.p0(ptr nonnull %8) br label %272 @@ -2971,8 +2967,8 @@ _ZN2lp11explanationD2Ev.exit114: ; preds = %_ZN14core_hashtable call void @llvm.lifetime.end.p0(ptr nonnull %8) br label %272 -272: ; preds = %120, %_ZN2lp11explanationD2Ev.exit86.thread, %_ZN2lp11explanationD2Ev.exit86, %_ZN2lp11explanationD2Ev.exit114, %_ZN2lp11explanationD2Ev.exit100 - %.2 = phi i1 [ false, %_ZN2lp11explanationD2Ev.exit100 ], [ false, %_ZN2lp11explanationD2Ev.exit114 ], [ true, %_ZN2lp11explanationD2Ev.exit86 ], [ %12, %120 ], [ true, %_ZN2lp11explanationD2Ev.exit86.thread ] +272: ; preds = %_ZN2lp11explanationD2Ev.exit86, %120, %_ZN2lp11explanationD2Ev.exit114, %_ZN2lp11explanationD2Ev.exit100 + %.2 = phi i1 [ false, %_ZN2lp11explanationD2Ev.exit100 ], [ false, %_ZN2lp11explanationD2Ev.exit114 ], [ %12, %120 ], [ true, %_ZN2lp11explanationD2Ev.exit86 ] ret i1 %.2 } diff --git a/bench/z3/optimized/spacer_antiunify.ll b/bench/z3/optimized/spacer_antiunify.ll index 4d80ef25fe6..b278e338f84 100644 --- a/bench/z3/optimized/spacer_antiunify.ll +++ b/bench/z3/optimized/spacer_antiunify.ll @@ -3531,6 +3531,9 @@ define linkonce_odr hidden noundef zeroext i1 @_ZN6spacer16var_abs_rewriter9pre_ %.not.i.i.i.i = icmp eq ptr %18, null br i1 %.not.i.i.i.i, label %_ZNK17arith_recognizers6is_mulEPK4expr.exit.thread, label %_ZNK17arith_recognizers6is_mulEPK4expr.exit +_ZNK17arith_recognizers6is_mulEPK4expr.exit.thread: ; preds = %8, %14 + br i1 %9, label %50, label %._crit_edge.thread + _ZNK17arith_recognizers6is_mulEPK4expr.exit: ; preds = %14 %19 = load i32, ptr %18, align 8, !tbaa !176 %20 = icmp eq i32 %19, 5 @@ -3551,7 +3554,7 @@ _ZNK17arith_recognizers6is_mulEPK4expr.exit: ; preds = %14 br i1 %.not21, label %._crit_edge.thread, label %.lr.ph ._crit_edge: ; preds = %_ZNK10arith_util10is_numeralEPK4expr.exit.thread - %spec.select = and i1 %47, %9 + %spec.select = and i1 %9, %47 br i1 %spec.select, label %49, label %._crit_edge.thread .lr.ph: ; preds = %25, %_ZNK10arith_util10is_numeralEPK4expr.exit.thread @@ -3590,10 +3593,10 @@ _ZNK10arith_util10is_numeralEPK4expr.exit.thread: ; preds = %_ZNK10arith_util10i %.not = icmp eq ptr %48, %30 br i1 %.not, label %._crit_edge, label %.lr.ph -_ZNK17arith_recognizers6is_mulEPK4expr.exit.thread: ; preds = %14, %8, %_ZNK17arith_recognizers6is_mulEPK4expr.exit +_ZNK17arith_recognizers6is_mulEPK4expr.exit.thread: ; preds = %_ZNK17arith_recognizers6is_mulEPK4expr.exit br i1 %9, label %49, label %._crit_edge.thread -49: ; preds = %._crit_edge, %_ZNK17arith_recognizers6is_mulEPK4expr.exit.thread +49: ; preds = %_ZNK17arith_recognizers6is_mulEPK4expr.exit.thread, %._crit_edge, %49 %50 = getelementptr inbounds nuw i8, ptr %0, i64 168 %51 = load ptr, ptr %50, align 8, !tbaa !23 %52 = icmp eq ptr %51, null @@ -3615,8 +3618,8 @@ _ZNK17arith_recognizers6is_mulEPK4expr.exit.thread: ; preds = %14, %8, %_ZNK17ar br label %_ZN6vectorIP4exprLb0EjE9push_backERKS1_.exit _ZN6vectorIP4exprLb0EjE9push_backERKS1_.exit: ; preds = %53, %59 - %60 = phi i32 [ %.pre2.i, %59 ], [ %55, %53 ] - %61 = phi ptr [ %.pre.i, %59 ], [ %51, %53 ] + %60 = phi i32 [ %.pre2.i, %60 ], [ %55, %54 ] + %61 = phi ptr [ %.pre.i, %60 ], [ %51, %54 ] %62 = getelementptr inbounds i8, ptr %61, i64 -4 %63 = zext i32 %60 to i64 %64 = getelementptr inbounds nuw ptr, ptr %61, i64 %63 @@ -3625,8 +3628,8 @@ _ZN6vectorIP4exprLb0EjE9push_backERKS1_.exit: ; preds = %53, %59 store i32 %65, ptr %62, align 4, !tbaa !27 br label %._crit_edge.thread -._crit_edge.thread: ; preds = %25, %._crit_edge, %_ZN6vectorIP4exprLb0EjE9push_backERKS1_.exit, %_ZNK17arith_recognizers6is_mulEPK4expr.exit.thread - %.029 = phi i1 [ false, %._crit_edge ], [ true, %_ZN6vectorIP4exprLb0EjE9push_backERKS1_.exit ], [ false, %_ZNK17arith_recognizers6is_mulEPK4expr.exit.thread ], [ false, %25 ] +._crit_edge.thread: ; preds = %25, %_ZNK17arith_recognizers6is_mulEPK4expr.exit.thread, %._crit_edge, %_ZN6vectorIP4exprLb0EjE9push_backERKS1_.exit, %_ZNK17arith_recognizers6is_mulEPK4expr.exit.thread + %.029 = phi i1 [ false, %._crit_edge ], [ true, %_ZN6vectorIP4exprLb0EjE9push_backERKS1_.exit ], [ false, %49 ], [ false, %_ZNK17arith_recognizers6is_mulEPK4expr.exit.thread ], [ false, %25 ] ret i1 %.029 } diff --git a/bench/zed-rs/optimized/0oeh7hwbxnw4zu37xj5psd1f6.ll b/bench/zed-rs/optimized/0oeh7hwbxnw4zu37xj5psd1f6.ll index 23ba3955bb9..6dadff36617 100644 --- a/bench/zed-rs/optimized/0oeh7hwbxnw4zu37xj5psd1f6.ll +++ b/bench/zed-rs/optimized/0oeh7hwbxnw4zu37xj5psd1f6.ll @@ -1253,11 +1253,7 @@ default.unreachable: ; preds = %188 198: ; preds = %195 call void @llvm.lifetime.start.p0(ptr nonnull %23), !noalias !314 invoke void @"_ZN8smallvec17SmallVec$LT$A$GT$10triple_mut17h1c6438b3c4be1499E.llvm.12878139696234281404"(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %23, ptr noalias noundef nonnull align 8 dereferenceable(48) %44) - to label %.noexc52 unwind label %.thread102.thread136.thread - -.noexc52: ; preds = %198 - call void @llvm.lifetime.end.p0(ptr nonnull %23), !noalias !314 - br label %233 + to label %233 unwind label %.thread102.thread136.thread 199: ; preds = %195 %200 = load ptr, ptr %44, align 8, !alias.scope !313, !noalias !294, !nonnull !9, !noundef !9 @@ -1288,7 +1284,8 @@ default.unreachable: ; preds = %188 "_ZN4core3ptr47drop_in_place$LT$alloc..vec..Vec$LT$u64$GT$$GT$17h2497f5309a171237E.exit.i.i.i.i46": ; preds = %207, %204, %.noexc53 call void @llvm.lifetime.end.p0(ptr nonnull %22), !noalias !318 call void @llvm.lifetime.end.p0(ptr nonnull %24), !noalias !317 - br label %233 + call void @llvm.lifetime.end.p0(ptr nonnull %27) + br i1 %.sink.i45, label %.loopexit258, label %336 209: ; preds = %190 call void @llvm.lifetime.end.p0(ptr nonnull %25), !noalias !296 @@ -1348,11 +1345,12 @@ default.unreachable: ; preds = %188 call void @_ZN4core9panicking16panic_in_cleanup17hfa05ef7d5107e16aE() #33, !noalias !294 unreachable -233: ; preds = %"_ZN4core3ptr47drop_in_place$LT$alloc..vec..Vec$LT$u64$GT$$GT$17h2497f5309a171237E.exit.i.i.i.i46", %.noexc52 +233: ; preds = %198 + call void @llvm.lifetime.end.p0(ptr nonnull %23), !noalias !314 call void @llvm.lifetime.end.p0(ptr nonnull %27) br i1 %.sink.i45, label %.loopexit259, label %336 -.loopexit259: ; preds = %233, %.thread +.loopexit259: ; preds = %"_ZN4core3ptr47drop_in_place$LT$alloc..vec..Vec$LT$u64$GT$$GT$17h2497f5309a171237E.exit.i.i.i.i46", %233, %.thread call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %49, ptr noundef nonnull align 8 dereferenceable(40) %.sroa.6, i64 40, i1 false) call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.6) call void @llvm.lifetime.start.p0(ptr nonnull %42) @@ -1666,7 +1664,7 @@ default.unreachable: ; preds = %188 call void @_ZN4core9panicking16panic_in_cleanup17hfa05ef7d5107e16aE() #33 unreachable -336: ; preds = %233 +336: ; preds = %"_ZN4core3ptr47drop_in_place$LT$alloc..vec..Vec$LT$u64$GT$$GT$17h2497f5309a171237E.exit.i.i.i.i46", %233 call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.6) br label %.backedge.backedge diff --git a/bench/zed-rs/optimized/83f7cv59nhkcel85ism08ubeo.ll b/bench/zed-rs/optimized/83f7cv59nhkcel85ism08ubeo.ll index 2bb36d0c69b..6fb4199f7a1 100644 --- a/bench/zed-rs/optimized/83f7cv59nhkcel85ism08ubeo.ll +++ b/bench/zed-rs/optimized/83f7cv59nhkcel85ism08ubeo.ll @@ -51773,12 +51773,12 @@ define hidden void @_ZN5which6finder6Finder4find17hc5547b1878ee5797E(ptr dead_on %switch171 = icmp sgt i64 %19, 0 br i1 %switch171, label %.critedge.sink.split, label %.critedge -"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h2bae03e23e7f5985E.exit105": ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.10833762189268282141.exit.i.i1.i.i.i.i104", %85, %.body - br i1 %.sroa.059.2, label %89, label %.thread167 +"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h2bae03e23e7f5985E.exit105": ; preds = %.body + br i1 %.sroa.059.2, label %90, label %.thread167 .critedge.sink.split: ; preds = %77, %74, %30 - %.sink = phi ptr [ %4, %30 ], [ %5, %74 ], [ %5, %77 ] - %.sink180 = phi i64 [ %.val89, %30 ], [ %19, %74 ], [ %19, %77 ] + %.sink = phi ptr [ %4, %30 ], [ %5, %74 ], [ %5, %78 ] + %.sink180 = phi i64 [ %.val89, %30 ], [ %19, %74 ], [ %19, %78 ] %75 = getelementptr inbounds nuw i8, ptr %.sink, i64 8 %76 = load ptr, ptr %75, align 8, !nonnull !4, !noundef !4 call void @__rust_dealloc(ptr noundef nonnull %76, i64 noundef %.sink180, i64 noundef 1) #49, !noalias !4 @@ -51811,7 +51811,7 @@ define hidden void @_ZN5which6finder6Finder4find17hc5547b1878ee5797E(ptr dead_on %switch183 = icmp sgt i64 %19, 0 br i1 %switch183, label %.critedge.sink.split, label %.critedge -.thread167: ; preds = %89, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.10833762189268282141.exit.i.i1.i.i.i.i106", %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h2bae03e23e7f5985E.exit105" +.thread167: ; preds = %90, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.10833762189268282141.exit.i.i1.i.i.i.i106", %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h2bae03e23e7f5985E.exit105", %75 resume { ptr, i32 } %.pn83 79: ; preds = %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h2bae03e23e7f5985E.exit103" @@ -51855,12 +51855,15 @@ define hidden void @_ZN5which6finder6Finder4find17hc5547b1878ee5797E(ptr dead_on call void @__rust_dealloc(ptr noundef nonnull %88, i64 noundef %70, i64 noundef 1) #49, !noalias !15131 br label %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h2bae03e23e7f5985E.exit105" -89: ; preds = %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h2bae03e23e7f5985E.exit105" +"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h2bae03e23e7f5985E.exit105":; preds = %86, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.10833762189268282141.exit.i.i1.i.i.i.i104" + br i1 %.sroa.059.2, label %90, label %.thread167 + +90: ; preds = %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h2bae03e23e7f5985E.exit105", %75 %.val91 = load i64, ptr %4, align 8, !range !182, !noundef !4 %switch172 = icmp sgt i64 %.val91, 0 br i1 %switch172, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.10833762189268282141.exit.i.i1.i.i.i.i106", label %.thread167 -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.10833762189268282141.exit.i.i1.i.i.i.i106": ; preds = %89 +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.10833762189268282141.exit.i.i1.i.i.i.i106": ; preds = %90 %90 = getelementptr inbounds nuw i8, ptr %4, i64 8 %.val92 = load ptr, ptr %90, align 8, !nonnull !4, !noundef !4 call void @__rust_dealloc(ptr noundef nonnull %.val92, i64 noundef %.val91, i64 noundef 1) #49, !noalias !15132 diff --git a/bench/zed-rs/optimized/aoil3dh3wwwg6dihc4l59fpms.ll b/bench/zed-rs/optimized/aoil3dh3wwwg6dihc4l59fpms.ll index 7ff61248927..0faf96827ca 100644 --- a/bench/zed-rs/optimized/aoil3dh3wwwg6dihc4l59fpms.ll +++ b/bench/zed-rs/optimized/aoil3dh3wwwg6dihc4l59fpms.ll @@ -543,7 +543,7 @@ define void @"_ZN66_$LT$breadcrumbs..Breadcrumbs$u20$as$u20$gpui..element..Rende call void @llvm.lifetime.end.p0(ptr nonnull %13) br label %160 -.body60: ; preds = %188, %186 +.body60: ; preds = %186 br i1 %.sroa.09.2113, label %.body60.thread97, label %190 160: ; preds = %184, %158 @@ -676,14 +676,17 @@ define void @"_ZN66_$LT$breadcrumbs..Breadcrumbs$u20$as$u20$gpui..element..Rende 188: ; preds = %186 %189 = getelementptr inbounds nuw i8, ptr %23, i64 8 invoke void @"_ZN72_$LT$alloc..sync..Weak$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hbe66930c6c9e3dddE.llvm.13949071745391659084"(ptr noalias noundef nonnull align 8 dereferenceable(8) %189) - to label %.body60 unwind label %163 + to label %"_ZN4core3ptr63drop_in_place$LT$gpui..view..WeakView$LT$editor..Editor$GT$$GT$17h61a818424aa0d07bE.exit" unwind label %163 -190: ; preds = %.body60.thread97, %.body60, %.body63 - %.pn35.pn = phi { ptr, i32 } [ %.pn35, %.body63 ], [ %.pn33100, %.body60.thread97 ], [ %.pn31115, %.body60 ] +190: ; preds = %188 + br i1 %.sroa.09.2113, label %.body60.thread97, label %190 + +190: ; preds = %"_ZN4core3ptr63drop_in_place$LT$gpui..view..WeakView$LT$editor..Editor$GT$$GT$17h61a818424aa0d07bE.exit", %.body60.thread97, %.body60, %.body63 + %.pn35.pn = phi { ptr, i32 } [ %.pn35, %.body63 ], [ %.pn33100, %.body60.thread97 ], [ %.pn31115, %.body60 ], [ %.pn31115, %"_ZN4core3ptr63drop_in_place$LT$gpui..view..WeakView$LT$editor..Editor$GT$$GT$17h61a818424aa0d07bE.exit" ] resume { ptr, i32 } %.pn35.pn -.body60.thread97: ; preds = %152, %161, %.body60 - %.pn33100 = phi { ptr, i32 } [ %.pn31115, %.body60 ], [ %153, %152 ], [ %162, %161 ] +.body60.thread97: ; preds = %152, %161, %190, %.body60 + %.pn33100 = phi { ptr, i32 } [ %.pn31115, %.body60 ], [ %.pn31115, %"_ZN4core3ptr63drop_in_place$LT$gpui..view..WeakView$LT$editor..Editor$GT$$GT$17h61a818424aa0d07bE.exit" ], [ %153, %152 ], [ %162, %161 ] invoke void @"_ZN4core3ptr45drop_in_place$LT$gpui..elements..div..Div$GT$17hef5780e2de7f6d62E"(ptr noalias noundef nonnull align 8 dereferenceable(720) %26) #16 to label %190 unwind label %163 diff --git a/bench/zed-rs/optimized/c4c7jl64zv8zhv2ne6xdvhty4.ll b/bench/zed-rs/optimized/c4c7jl64zv8zhv2ne6xdvhty4.ll index 75820c3b0fa..012987577b4 100644 --- a/bench/zed-rs/optimized/c4c7jl64zv8zhv2ne6xdvhty4.ll +++ b/bench/zed-rs/optimized/c4c7jl64zv8zhv2ne6xdvhty4.ll @@ -11029,7 +11029,7 @@ _ZN3std4path7PathBuf4push17h6312f45eb4e33c1fE.exit.i.i: ; preds = %"_ZN63_$LT$al "_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h3e3c0df7a4d44b92E.llvm.148755494358810581.exit.i.i.i": ; preds = %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h4f1d1534f892ba9dE.exit.i" call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !3517 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h144c6dfc95057d1dE"(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %12) - to label %.noexc.i unwind label %103, !noalias !3338 + to label %.noexc.i unwind label %102, !noalias !3338 .noexc.i: ; preds = %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h3e3c0df7a4d44b92E.llvm.148755494358810581.exit.i.i.i" %90 = getelementptr inbounds nuw i8, ptr %4, i64 8 @@ -11054,17 +11054,16 @@ _ZN3std4path7PathBuf4push17h6312f45eb4e33c1fE.exit.i.i: ; preds = %"_ZN63_$LT$al call void @_ZN4core9panicking16panic_in_cleanup17hfa05ef7d5107e16aE() #44, !noalias !3338 unreachable -.body98.i: ; preds = %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h4f1d1534f892ba9dE.exit104.i", %103, %88 - %.sroa.057.1.i = phi i1 [ true, %88 ], [ true, %103 ], [ %.sroa.057.0.i, %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h4f1d1534f892ba9dE.exit104.i" ] - %.sroa.059.2.i = phi i1 [ false, %88 ], [ false, %103 ], [ %.sroa.059.1.i, %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h4f1d1534f892ba9dE.exit104.i" ] - %.pn83.i = phi { ptr, i32 } [ %89, %88 ], [ %104, %103 ], [ %.pn81.i, %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h4f1d1534f892ba9dE.exit104.i" ] - %101 = and i64 %16, 9223372036854775807 - %102 = icmp ne i64 %101, 0 - %or.cond.not = and i1 %.sroa.057.1.i, %102 - br i1 %or.cond.not, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.148755494358810581.exit.i.i1.i.i.i.i105.i", label %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h4f1d1534f892ba9dE.exit106.i" - -103: ; preds = %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h3e3c0df7a4d44b92E.llvm.148755494358810581.exit.i.i.i" - %104 = landingpad { ptr, i32 } +.body98.i: ; preds = %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h4f1d1534f892ba9dE.exit104.i", %102, %88 + %.sroa.057.1.i = phi i1 [ true, %88 ], [ true, %102 ], [ %.sroa.057.0.i, %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h4f1d1534f892ba9dE.exit104.i" ] + %.sroa.059.2.i = phi i1 [ false, %88 ], [ false, %102 ], [ %.sroa.059.1.i, %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h4f1d1534f892ba9dE.exit104.i" ] + %.pn83.i = phi { ptr, i32 } [ %89, %88 ], [ %103, %102 ], [ %.pn81.i, %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h4f1d1534f892ba9dE.exit104.i" ] + %101 = icmp ne i64 %16, -9223372036854775808 + %or.cond.i = and i1 %.sroa.057.1.i, %101 + br i1 %or.cond.i, label %114, label %105 + +102: ; preds = %"_ZN70_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h3e3c0df7a4d44b92E.llvm.148755494358810581.exit.i.i.i" + %103 = landingpad { ptr, i32 } cleanup br label %.body98.i @@ -11073,12 +11072,12 @@ _ZN3std4path7PathBuf4push17h6312f45eb4e33c1fE.exit.i.i: ; preds = %"_ZN63_$LT$al %switch107.i = icmp sgt i64 %16, 0 br i1 %switch107.i, label %.critedge.sink.split.i, label %115 -"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h4f1d1534f892ba9dE.exit106.i": ; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.148755494358810581.exit.i.i1.i.i.i.i105.i", %.body98.i - br i1 %.sroa.059.2.i, label %114, label %.body +"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h4f1d1534f892ba9dE.exit106.i": ; preds = %.body98.i + br i1 %.sroa.059.2.i, label %116, label %.body .critedge.sink.split.i: ; preds = %106, %105, %"_ZN61_$LT$std..path..PathBuf$u20$as$u20$which..finder..PathExt$GT$11to_absolute17hea2e3622eabd0bfcE.exit.i" - %.sink.i.sroa.phi.sroa.speculated = phi ptr [ %".sink.i.sroa.phi.sroa.speculate.load._ZN61_$LT$std..path..PathBuf$u20$as$u20$which..finder..PathExt$GT$11to_absolute17hea2e3622eabd0bfcE.exit.i", %"_ZN61_$LT$std..path..PathBuf$u20$as$u20$which..finder..PathExt$GT$11to_absolute17hea2e3622eabd0bfcE.exit.i" ], [ %.sroa.6.030, %105 ], [ %.sroa.6.030, %106 ] - %.sink117.i = phi i64 [ %.val89.i, %"_ZN61_$LT$std..path..PathBuf$u20$as$u20$which..finder..PathExt$GT$11to_absolute17hea2e3622eabd0bfcE.exit.i" ], [ %16, %105 ], [ %16, %106 ] + %.sink.i.sroa.phi.sroa.speculated = phi ptr [ %".sink.i.sroa.phi.sroa.speculate.load._ZN61_$LT$std..path..PathBuf$u20$as$u20$which..finder..PathExt$GT$11to_absolute17hea2e3622eabd0bfcE.exit.i", %"_ZN61_$LT$std..path..PathBuf$u20$as$u20$which..finder..PathExt$GT$11to_absolute17hea2e3622eabd0bfcE.exit.i" ], [ %.sroa.6.030, %104 ], [ %.sroa.6.030, %106 ] + %.sink117.i = phi i64 [ %.val89.i, %"_ZN61_$LT$std..path..PathBuf$u20$as$u20$which..finder..PathExt$GT$11to_absolute17hea2e3622eabd0bfcE.exit.i" ], [ %16, %104 ], [ %16, %106 ] call void @__rust_dealloc(ptr noundef nonnull %.sink.i.sroa.phi.sroa.speculated, i64 noundef %.sink117.i, i64 noundef 1) #45, !noalias !3338 br label %115 @@ -11138,15 +11137,22 @@ _ZN3std4path7PathBuf4push17h6312f45eb4e33c1fE.exit.i.i: ; preds = %"_ZN63_$LT$al br label %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h4f1d1534f892ba9dE.exit104.i" "_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.148755494358810581.exit.i.i1.i.i.i.i105.i": ; preds = %.body98.i + %115 = icmp eq i64 %16, 0 + br i1 %115, label %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h4f1d1534f892ba9dE.exit106.i", label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.148755494358810581.exit.i.i1.i.i.i.i105.i" + +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.148755494358810581.exit.i.i1.i.i.i.i105.i": ; preds = %114 call void @__rust_dealloc(ptr noundef nonnull %.sroa.6.030, i64 noundef %16, i64 noundef 1) #45, !noalias !3546 br label %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h4f1d1534f892ba9dE.exit106.i" -114: ; preds = %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h4f1d1534f892ba9dE.exit106.i" +"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h4f1d1534f892ba9dE.exit106.i":; preds = %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.148755494358810581.exit.i.i1.i.i.i.i105.i", %114 + br i1 %.sroa.059.2.i, label %116, label %.body + +116: ; preds = %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h4f1d1534f892ba9dE.exit106.i", %105 %.val91.i = load i64, ptr %13, align 8, !range !53, !alias.scope !3329, !noalias !3339, !noundef !4 %switch108.i = icmp sgt i64 %.val91.i, 0 br i1 %switch108.i, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.148755494358810581.exit.i.i1.i.i.i.i107.i", label %.body -"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.148755494358810581.exit.i.i1.i.i.i.i107.i": ; preds = %114 +"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.148755494358810581.exit.i.i1.i.i.i.i107.i": ; preds = %116 %.val92.i = load ptr, ptr %.sink.i.sroa.gep17, align 8, !alias.scope !3329, !noalias !3339, !nonnull !4, !noundef !4 call void @__rust_dealloc(ptr noundef nonnull %.val92.i, i64 noundef %.val91.i, i64 noundef 1) #45, !noalias !3559 br label %.body @@ -11162,7 +11168,7 @@ _ZN3std4path7PathBuf4push17h6312f45eb4e33c1fE.exit.i.i: ; preds = %"_ZN63_$LT$al %117 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr53drop_in_place$LT$which..checker..CompositeChecker$GT$17hdc1a0752fcf2d29cE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %14) #43 - to label %120 unwind label %118 + to label %122 unwind label %118 118: ; preds = %116 %119 = landingpad { ptr, i32 } @@ -11171,7 +11177,7 @@ _ZN3std4path7PathBuf4push17h6312f45eb4e33c1fE.exit.i.i: ; preds = %"_ZN63_$LT$al unreachable 120: ; preds = %116, %26 - %.pn.ph = phi { ptr, i32 } [ %27, %26 ], [ %117, %116 ] + %.pn.ph = phi { ptr, i32 } [ %27, %26 ], [ %117, %118 ] %switch = icmp sgt i64 %16, 0 br i1 %switch, label %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.148755494358810581.exit.i.i1.i.i.i.i.i11", label %.body @@ -11181,8 +11187,8 @@ _ZN3std4path7PathBuf4push17h6312f45eb4e33c1fE.exit.i.i: ; preds = %"_ZN63_$LT$al call void @__rust_dealloc(ptr noundef nonnull %.sroa.6.030, i64 noundef %16, i64 noundef 1) #45, !noalias !3570 br label %.body -.body: ; preds = %120, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.148755494358810581.exit.i.i1.i.i.i.i.i11", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.148755494358810581.exit.i.i1.i.i.i.i107.i", %114, %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h4f1d1534f892ba9dE.exit106.i" - %.pn46 = phi { ptr, i32 } [ %.pn83.i, %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h4f1d1534f892ba9dE.exit106.i" ], [ %.pn83.i, %114 ], [ %.pn83.i, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.148755494358810581.exit.i.i1.i.i.i.i107.i" ], [ %.pn.ph, %120 ], [ %.pn.ph, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.148755494358810581.exit.i.i1.i.i.i.i.i11" ] +.body: ; preds = %120, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.148755494358810581.exit.i.i1.i.i.i.i.i11", %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.148755494358810581.exit.i.i1.i.i.i.i107.i", %116, %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h4f1d1534f892ba9dE.exit106.i", %105 + %.pn46 = phi { ptr, i32 } [ %.pn83.i, %105 ], [ %.pn83.i, %"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h4f1d1534f892ba9dE.exit106.i" ], [ %.pn83.i, %116 ], [ %.pn83.i, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.148755494358810581.exit.i.i1.i.i.i.i107.i" ], [ %.pn.ph, %122 ], [ %.pn.ph, %"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hb66d9ce94201aa99E.llvm.148755494358810581.exit.i.i1.i.i.i.i.i11" ] resume { ptr, i32 } %.pn46 } diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c8d0fce0bf7..9b0262c6e5d 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/165877 export COMPTIME_MODE=0 export STAT_MODE=0 export STAT_NAME=""