diff --git a/bench/abc/optimized/aigRet.ll b/bench/abc/optimized/aigRet.ll index 408982e7c14..5d83d743ea5 100644 --- a/bench/abc/optimized/aigRet.ll +++ b/bench/abc/optimized/aigRet.ll @@ -611,15 +611,11 @@ define void @Rtm_ObjRetimeFwd(ptr noundef captures(none) %0, ptr noundef capture %24 = and i32 %15, -4096 %25 = or disjoint i32 %19, %24 store i32 %25, ptr %gep, align 8 - %26 = lshr i32 %15, 4 - %27 = and i32 %26, 255 - %28 = and i32 %15, 15 - %29 = icmp ne i32 %28, 0 - %30 = zext i1 %29 to i32 - %31 = add nuw nsw i32 %27, %30 - %32 = zext nneg i32 %31 to i64 - %33 = getelementptr inbounds nuw i32, ptr %23, i64 %32 - %.01.i.i = getelementptr inbounds i8, ptr %33, i64 -4 + %26 = add nuw nsw i32 %16, 15 + %27 = lshr i32 %26, 4 + %28 = zext nneg i32 %27 to i64 + %29 = getelementptr inbounds nuw i32, ptr %23, i64 %28 + %.01.i.i = getelementptr inbounds i8, ptr %29, i64 -4 %.not2.i.i = icmp ult ptr %.01.i.i, %23 br i1 %.not2.i.i, label %Rtm_ObjRemFirst2.exit.i, label %.lr.ph.i.i @@ -648,8 +644,8 @@ Rtm_ObjRemFirst2.exit.loopexit.i: ; preds = %.lr.ph.i.i br label %Rtm_ObjRemFirst2.exit.i Rtm_ObjRemFirst2.exit.i: ; preds = %Rtm_ObjRemFirst2.exit.loopexit.i, %37, %20 - %43 = phi i32 [ %42, %37 ], [ %25, %20 ], [ %.pre.i, %Rtm_ObjRemFirst2.exit.loopexit.i ] - %44 = phi i32 [ %39, %37 ], [ 0, %20 ], [ %35, %Rtm_ObjRemFirst2.exit.loopexit.i ] + %43 = phi i32 [ %42, %33 ], [ %25, %20 ], [ %.pre.i, %Rtm_ObjRemFirst2.exit.loopexit.i ] + %44 = phi i32 [ %39, %33 ], [ 0, %20 ], [ %35, %Rtm_ObjRemFirst2.exit.loopexit.i ] %45 = and i32 %43, 4095 %46 = icmp eq i32 %45, 10 br i1 %46, label %47, label %Rtm_ObjRemFirst.exit @@ -736,17 +732,17 @@ Rtm_ObjRemFirst.exit: ; preds = %Rtm_ObjRemFirst2.ex br label %92 92: ; preds = %90, %88 - %.pre16.i.i = phi i32 [ %.pre16.pre.i.i, %88 ], [ %80, %90 ] - %93 = phi ptr [ %89, %88 ], [ %91, %90 ] + %.pre16.i.i = phi i32 [ %.pre16.pre.i.i, %84 ], [ %80, %86 ] + %93 = phi ptr [ %89, %84 ], [ %91, %86 ] store ptr %93, ptr %13, align 8, !tbaa !33 store i32 %84, ptr %12, align 4, !tbaa !49 %.pre.i25 = load i32, ptr %75, align 8 br label %Rtm_ObjTransferToBig.exit.i Rtm_ObjTransferToBig.exit.i: ; preds = %92, %._crit_edge.i.i - %94 = phi i32 [ %76, %._crit_edge.i.i ], [ %.pre.i25, %92 ] - %95 = phi i32 [ %80, %._crit_edge.i.i ], [ %.pre16.i.i, %92 ] - %96 = phi ptr [ %.pre.i.i, %._crit_edge.i.i ], [ %93, %92 ] + %94 = phi i32 [ %76, %._crit_edge.i.i ], [ %.pre.i25, %88 ] + %95 = phi i32 [ %80, %._crit_edge.i.i ], [ %.pre16.i.i, %88 ] + %96 = phi ptr [ %.pre.i.i, %._crit_edge.i.i ], [ %93, %88 ] %97 = lshr i32 %94, 12 %98 = sext i32 %95 to i64 %99 = getelementptr inbounds i32, ptr %96, i64 %98 @@ -759,12 +755,12 @@ Rtm_ObjTransferToBig.exit.i: ; preds = %92, %._crit_edge.i. %104 = and i32 %102, 4095 %105 = or disjoint i32 %104, %103 store i32 %105, ptr %75, align 8 - br label %150 + br label %146 106: ; preds = %66 %107 = and i32 %76, 15 %108 = icmp eq i32 %107, 15 - br i1 %108, label %109, label %150 + br i1 %108, label %109, label %146 109: ; preds = %106 %110 = add nuw nsw i32 %77, 1 @@ -798,17 +794,17 @@ Rtm_ObjTransferToBig.exit.i: ; preds = %92, %._crit_edge.i. br label %125 125: ; preds = %123, %121 - %.pre25.i.i = phi i32 [ %.pre25.pre.i.i, %121 ], [ %112, %123 ] - %126 = phi ptr [ %122, %121 ], [ %124, %123 ] + %.pre25.i.i = phi i32 [ %.pre25.pre.i.i, %117 ], [ %112, %119 ] + %126 = phi ptr [ %122, %117 ], [ %124, %119 ] store ptr %126, ptr %13, align 8, !tbaa !33 store i32 %117, ptr %12, align 4, !tbaa !49 %.pre26.i.i = load i32, ptr %75, align 8 br label %Rtm_ObjTransferToBigger.exit.i Rtm_ObjTransferToBigger.exit.i: ; preds = %125, %._crit_edge.i12.i - %127 = phi i32 [ %76, %._crit_edge.i12.i ], [ %.pre26.i.i, %125 ] - %128 = phi i32 [ %112, %._crit_edge.i12.i ], [ %.pre25.i.i, %125 ] - %129 = phi ptr [ %.pre.i14.i, %._crit_edge.i12.i ], [ %126, %125 ] + %127 = phi i32 [ %76, %._crit_edge.i12.i ], [ %.pre26.i.i, %121 ] + %128 = phi i32 [ %112, %._crit_edge.i12.i ], [ %.pre25.i.i, %121 ] + %129 = phi ptr [ %.pre.i14.i, %._crit_edge.i12.i ], [ %126, %121 ] %130 = sext i32 %128 to i64 %131 = getelementptr inbounds i32, ptr %129, i64 %130 %132 = lshr i32 %127, 12 @@ -818,36 +814,36 @@ Rtm_ObjTransferToBigger.exit.i: ; preds = %125, %._crit_edge.i %136 = zext nneg i32 %135 to i64 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %131, ptr noundef nonnull align 4 dereferenceable(1) %134, i64 %136, i1 false) %137 = load ptr, ptr %13, align 8, !tbaa !33 + %134 = load i32, ptr %11, align 8, !tbaa !48 + %135 = add nsw i32 %134, %107 + %136 = sext i32 %135 to i64 + %137 = getelementptr inbounds i32, ptr %133, i64 %136 + store i32 0, ptr %137, align 4, !tbaa !29 %138 = load i32, ptr %11, align 8, !tbaa !48 - %139 = add nsw i32 %138, %111 - %140 = sext i32 %139 to i64 - %141 = getelementptr inbounds i32, ptr %137, i64 %140 - store i32 0, ptr %141, align 4, !tbaa !29 - %142 = load i32, ptr %11, align 8, !tbaa !48 - %143 = load i32, ptr %75, align 8 - %144 = shl i32 %142, 12 - %145 = and i32 %143, 4095 - %146 = or disjoint i32 %145, %144 - store i32 %146, ptr %75, align 8 - %147 = add nuw nsw i32 %111, 1 - %148 = load i32, ptr %11, align 8, !tbaa !48 - %149 = add nsw i32 %147, %148 - store i32 %149, ptr %11, align 8, !tbaa !48 + %139 = load i32, ptr %71, align 8 + %140 = shl i32 %138, 12 + %141 = and i32 %139, 4095 + %142 = or disjoint i32 %141, %140 + store i32 %142, ptr %71, align 8 + %143 = add nuw nsw i32 %107, 1 + %144 = load i32, ptr %11, align 8, !tbaa !48 + %145 = add nsw i32 %143, %144 + store i32 %145, ptr %11, align 8, !tbaa !48 %.pre16.i = load i32, ptr %75, align 8 - br label %150 + br label %146 -150: ; preds = %Rtm_ObjTransferToBigger.exit.i, %106, %Rtm_ObjTransferToBig.exit.i - %151 = phi i32 [ %76, %106 ], [ %.pre16.i, %Rtm_ObjTransferToBigger.exit.i ], [ %105, %Rtm_ObjTransferToBig.exit.i ] - %152 = and i32 %151, 4094 - %153 = icmp samesign ugt i32 %152, 9 - br i1 %153, label %154, label %171 +146:; preds = %Rtm_ObjTransferToBigger.exit.i, %104, %Rtm_ObjTransferToBig.exit.i + %147 = phi i32 [ %72, %102 ], [ %.pre16.i, %Rtm_ObjTransferToBigger.exit.i ], [ %105, %Rtm_ObjTransferToBig.exit.i ] + %148 = and i32 %147, 4094 + %149 = icmp samesign ugt i32 %148, 9 + br i1 %149, label %150, label %167 -154: ; preds = %150 +150: ; preds = %146 %.val.i23 = load ptr, ptr %13, align 8, !tbaa !33 - %155 = lshr i32 %151, 12 + %155 = lshr i32 %147, 12 %156 = zext nneg i32 %155 to i64 %157 = getelementptr inbounds nuw i32, ptr %.val.i23, i64 %156 - %158 = and i32 %151, 4095 + %158 = and i32 %147, 4095 %159 = shl nuw nsw i32 %158, 1 %160 = and i32 %159, 30 %161 = shl i32 %.022.lcssa, %160 @@ -864,20 +860,20 @@ Rtm_ObjTransferToBigger.exit.i: ; preds = %125, %._crit_edge.i %170 = or disjoint i32 %168, %169 br label %Rtm_ObjAddLast.exit -171: ; preds = %150 - %172 = shl i32 %151, 1 +171: ; preds = %146 + %172 = shl i32 %147, 1 %173 = and i32 %172, 8190 %174 = shl i32 %.022.lcssa, %173 %175 = shl i32 %174, 12 - %.masked.i.i = and i32 %151, -4096 - %narrow.i15.i = add i32 %151, 1 + %.masked.i.i = and i32 %147, -4096 + %narrow.i15.i = add i32 %147, 1 %176 = and i32 %narrow.i15.i, 4095 %177 = or disjoint i32 %176, %.masked.i.i %178 = or i32 %177, %175 br label %Rtm_ObjAddLast.exit -Rtm_ObjAddLast.exit: ; preds = %154, %171 - %storemerge.i = phi i32 [ %178, %171 ], [ %170, %154 ] +Rtm_ObjAddLast.exit: ; preds = %150, %171 + %storemerge.i = phi i32 [ %178, %167 ], [ %170, %150 ] store i32 %storemerge.i, ptr %75, align 8 %179 = add nuw nsw i32 %.130, 1 %180 = load i32, ptr %7, align 4, !tbaa !41 @@ -1171,14 +1167,12 @@ Rtm_ObjTransferToBigger.exit: ; preds = %._crit_edge.i12, %5 %95 = and i32 %86, -4096 %96 = or disjoint i32 %94, %95 store i32 %96, ptr %1, align 8 - %97 = lshr i32 %94, 4 - %98 = and i32 %narrow.i, 15 - %99 = icmp ne i32 %98, 0 - %100 = zext i1 %99 to i32 - %101 = add nuw nsw i32 %97, %100 - %102 = zext nneg i32 %101 to i64 - %103 = getelementptr inbounds nuw i32, ptr %93, i64 %102 - %.not.i15 = icmp eq i32 %101, 0 + %97 = add nuw nsw i32 %94, 15 + %98 = lshr i32 %97, 4 + %99 = zext nneg i32 %98 to i64 + %100 = getelementptr inbounds nuw i32, ptr %93, i64 %99 + %101 = and i32 %90, 4095 + %.not.i15 = icmp eq i32 %101, 4095 br i1 %.not.i15, label %Rtm_ObjAddFirst2.exit, label %.lr.ph.i .lr.ph.i: ; preds = %89, %.lr.ph.i @@ -1190,7 +1184,7 @@ Rtm_ObjTransferToBigger.exit: ; preds = %._crit_edge.i12, %5 %107 = or disjoint i32 %106, %.02.i store i32 %107, ptr %.0111.i, align 4, !tbaa !29 %108 = getelementptr inbounds nuw i8, ptr %.0111.i, i64 4 - %109 = icmp ult ptr %108, %103 + %109 = icmp ult ptr %108, %100 br i1 %109, label %.lr.ph.i, label %Rtm_ObjAddFirst2.exit, !llvm.loop !53 110: ; preds = %85 diff --git a/bench/abc/optimized/cecSatG3.ll b/bench/abc/optimized/cecSatG3.ll index a2a6686896c..9b848479886 100644 --- a/bench/abc/optimized/cecSatG3.ll +++ b/bench/abc/optimized/cecSatG3.ll @@ -10399,9 +10399,9 @@ define void @Cec5_ManExtend(ptr noundef readonly captures(none) %0, ptr noundef %10 = getelementptr inbounds nuw i8, ptr %1, i64 280 br label %11 -11: ; preds = %.lr.ph, %122 - %12 = phi i32 [ %6, %.lr.ph ], [ %125, %122 ] - %13 = phi ptr [ %4, %.lr.ph ], [ %123, %122 ] +11: ; preds = %.lr.ph, %119 + %12 = phi i32 [ %6, %.lr.ph ], [ %122, %119 ] + %13 = phi ptr [ %4, %.lr.ph ], [ %120, %119 ] %14 = getelementptr inbounds nuw i8, ptr %13, i64 408 %15 = getelementptr inbounds nuw i8, ptr %13, i64 412 %16 = load i32, ptr %14, align 8, !tbaa !70 @@ -10505,35 +10505,32 @@ Vec_BitGrow.exit.i: ; preds = %57, %55 br label %Vec_BitPush.exit 60: ; preds = %50 - %61 = lshr i32 %47, 4 - %62 = and i32 %47, 15 - %63 = icmp ne i32 %62, 0 - %64 = zext i1 %63 to i32 - %65 = add nuw nsw i32 %61, %64 - %66 = getelementptr inbounds nuw i8, ptr %45, i64 8 - %67 = load ptr, ptr %66, align 8, !tbaa !81 - %.not11.i16.i = icmp eq ptr %67, null - %68 = shl nuw nsw i32 %65, 2 - %69 = zext nneg i32 %68 to i64 - br i1 %.not11.i16.i, label %72, label %70 - -70: ; preds = %60 - %71 = tail call ptr @realloc(ptr noundef nonnull %67, i64 noundef %69) #28 - br label %74 + %61 = add nuw i32 %47, 15 + %62 = lshr i32 %61, 4 + %63 = getelementptr inbounds nuw i8, ptr %45, i64 8 + %64 = load ptr, ptr %63, align 8, !tbaa !81 + %.not11.i16.i = icmp eq ptr %64, null + %65 = shl nuw nsw i32 %62, 2 + %66 = zext nneg i32 %65 to i64 + br i1 %.not11.i16.i, label %69, label %67 + +67:; preds = %60 + %68 = tail call ptr @realloc(ptr noundef nonnull %64, i64 noundef %66) #28 + br label %71 72: ; preds = %60 - %73 = tail call noalias ptr @malloc(i64 noundef %69) #25 + %73 = tail call noalias ptr @malloc(i64 noundef %66) #25 br label %74 -74: ; preds = %72, %70 - %75 = phi ptr [ %71, %70 ], [ %73, %72 ] - store ptr %75, ptr %66, align 8, !tbaa !81 - %76 = shl nuw nsw i32 %65, 5 +74: ; preds = %72, %67 + %75 = phi ptr [ %68, %67 ], [ %73, %69 ] + store ptr %75, ptr %63, align 8, !tbaa !81 + %76 = shl nuw nsw i32 %62, 5 store i32 %76, ptr %45, align 8, !tbaa !79 br label %Vec_BitPush.exit Vec_BitPush.exit: ; preds = %.Vec_BitGrow.exit17_crit_edge.i, %Vec_BitGrow.exit.i, %74 - %77 = phi ptr [ %.pre.i7, %.Vec_BitGrow.exit17_crit_edge.i ], [ %75, %74 ], [ %59, %Vec_BitGrow.exit.i ] + %77 = phi ptr [ %.pre.i7, %.Vec_BitGrow.exit17_crit_edge.i ], [ %75, %71 ], [ %59, %Vec_BitGrow.exit.i ] %78 = load i32, ptr %46, align 4, !tbaa !82 %79 = and i32 %78, 31 %80 = shl nuw i32 1, %79 @@ -10547,7 +10544,7 @@ Vec_BitPush.exit: ; preds = %.Vec_BitGrow.exit17 %87 = load i32, ptr %46, align 4, !tbaa !82 %88 = add nsw i32 %87, 1 store i32 %88, ptr %46, align 4, !tbaa !82 - br i1 %.not, label %122, label %89 + br i1 %.not, label %119, label %89 89: ; preds = %Vec_BitPush.exit %90 = load ptr, ptr %10, align 8, !tbaa !219 @@ -10581,7 +10578,7 @@ Vec_BitPush.exit: ; preds = %.Vec_BitGrow.exit17 br label %Vec_IntGrow.exit.i13 Vec_IntGrow.exit.i13: ; preds = %102, %100 - %104 = phi ptr [ %101, %100 ], [ %103, %102 ] + %104 = phi ptr [ %101, %97 ], [ %103, %99 ] store ptr %104, ptr %98, align 8, !tbaa !19 store i32 16, ptr %90, align 8, !tbaa !70 br label %Vec_IntPush.exit14 @@ -10593,42 +10590,42 @@ Vec_IntGrow.exit.i13: ; preds = %102, %100 %.not9.i9.i11 = icmp eq ptr %108, null %109 = zext nneg i32 %106 to i64 %110 = shl nuw nsw i64 %109, 2 - br i1 %.not9.i9.i11, label %113, label %111 - -111: ; preds = %105 - %112 = tail call ptr @realloc(ptr noundef nonnull %108, i64 noundef %110) #28 - br label %115 + br i1 %.not9.i9.i11, label %110, label %115 -113: ; preds = %105 - %114 = tail call noalias ptr @malloc(i64 noundef %110) #25 - br label %115 - -115: ; preds = %113, %111 - %116 = phi ptr [ %112, %111 ], [ %114, %113 ] - store ptr %116, ptr %107, align 8, !tbaa !19 - store i32 %106, ptr %90, align 8, !tbaa !70 - br label %Vec_IntPush.exit14 +115: ; preds = %102 + %109 = tail call ptr @realloc(ptr noundef nonnull %105, i64 noundef %107) #28 + br label %112 -Vec_IntPush.exit14: ; preds = %.Vec_IntGrow.exit10_crit_edge.i8, %Vec_IntGrow.exit.i13, %115 - %117 = phi ptr [ %.pre.i10, %.Vec_IntGrow.exit10_crit_edge.i8 ], [ %116, %115 ], [ %104, %Vec_IntGrow.exit.i13 ] - %118 = load i32, ptr %91, align 4, !tbaa !16 - %119 = add nsw i32 %118, 1 - store i32 %119, ptr %91, align 4, !tbaa !16 - %120 = sext i32 %118 to i64 - %121 = getelementptr inbounds i32, ptr %117, i64 %120 - store i32 -1, ptr %121, align 4, !tbaa !20 +Vec_IntPush.exit14: ; preds = %105 + %111 = tail call noalias ptr @malloc(i64 noundef %107) #25 br label %122 -122: ; preds = %Vec_IntPush.exit14, %Vec_BitPush.exit - %123 = load ptr, ptr %3, align 8, !tbaa !133 - %124 = getelementptr inbounds nuw i8, ptr %123, i64 412 - %125 = load i32, ptr %124, align 4, !tbaa !218 - %126 = getelementptr i8, ptr %123, i64 24 - %.val = load i32, ptr %126, align 8, !tbaa !73 - %127 = icmp slt i32 %125, %.val - br i1 %127, label %11, label %._crit_edge, !llvm.loop !224 +122: ; preds = %Vec_IntPush.exit14, %108 + %113 = phi ptr [ %109, %108 ], [ %111, %110 ] + store ptr %113, ptr %104, align 8, !tbaa !19 + store i32 %103, ptr %87, align 8, !tbaa !70 + br label %Vec_IntPush.exit14 -._crit_edge: ; preds = %122, %2 +._crit_edge: ; preds = %.Vec_IntGrow.exit10_crit_edge.i8, %Vec_IntGrow.exit.i13, %112 + %114 = phi ptr [ %.pre.i10, %.Vec_IntGrow.exit10_crit_edge.i8 ], [ %113, %112 ], [ %101, %Vec_IntGrow.exit.i13 ] + %115 = load i32, ptr %88, align 4, !tbaa !16 + %116 = add nsw i32 %115, 1 + store i32 %116, ptr %88, align 4, !tbaa !16 + %117 = sext i32 %115 to i64 + %118 = getelementptr inbounds i32, ptr %114, i64 %117 + store i32 -1, ptr %118, align 4, !tbaa !20 + br label %119 + +119: ; preds = %Vec_IntPush.exit14, %Vec_BitPush.exit + %120 = load ptr, ptr %3, align 8, !tbaa !133 + %121 = getelementptr inbounds nuw i8, ptr %120, i64 412 + %122 = load i32, ptr %121, align 4, !tbaa !218 + %123 = getelementptr i8, ptr %120, i64 24 + %.val = load i32, ptr %123, align 8, !tbaa !73 + %124 = icmp slt i32 %122, %.val + br i1 %124, label %11, label %._crit_edge, !llvm.loop !224 + +._crit_edge: ; preds = %119, %2 ret void } diff --git a/bench/abc/optimized/dauTree.ll b/bench/abc/optimized/dauTree.ll index a88254d24d0..5471af4d41a 100644 --- a/bench/abc/optimized/dauTree.ll +++ b/bench/abc/optimized/dauTree.ll @@ -2371,39 +2371,31 @@ define ptr @Dss_ManCacheCreate(ptr noundef captures(none) %0, ptr noundef readon %12 = load ptr, ptr %4, align 8, !tbaa !82 %.val = load i32, ptr %2, align 4 %13 = lshr i32 %.val, 26 - %14 = add nuw nsw i32 %13, 4 - %15 = and i32 %14, 7 - %.not = icmp eq i32 %15, 0 - %16 = select i1 %.not, i32 0, i32 8 - %17 = add nuw nsw i32 %16, %14 - %18 = and i32 %17, 248 - %19 = tail call ptr @Mem_FlexEntryFetch(ptr noundef %12, i32 noundef %18) #30 - %20 = load i64, ptr %6, align 8 - %21 = lshr i64 %20, 24 - %22 = and i64 %21, 248 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %11, ptr align 8 %1, i64 %22, i1 false) + %14 = add nuw nsw i32 %13, 11 + %15 = and i32 %14, 120 + %16 = tail call ptr @Mem_FlexEntryFetch(ptr noundef %12, i32 noundef %15) #30 + %17 = load i64, ptr %6, align 8 + %18 = lshr i64 %17, 24 + %18 = and i64 %18, 248 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %11, ptr align 8 %1, i64 %19, i1 false) %.val16 = load i32, ptr %2, align 4 %23 = lshr i32 %.val16, 26 - %24 = add nuw nsw i32 %23, 4 - %25 = and i32 %24, 7 - %.not17 = icmp eq i32 %25, 0 - %26 = select i1 %.not17, i32 0, i32 8 - %27 = add nuw nsw i32 %26, %24 - %28 = and i32 %27, 248 - %29 = zext nneg i32 %28 to i64 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %19, ptr nonnull align 4 %2, i64 %29, i1 false) - store ptr %19, ptr %11, align 8, !tbaa !83 - %30 = getelementptr inbounds nuw i8, ptr %11, i64 8 - store ptr null, ptr %30, align 8, !tbaa !86 - %31 = getelementptr inbounds nuw i8, ptr %0, i64 112 - %32 = getelementptr inbounds nuw i8, ptr %11, i64 16 - %33 = load i64, ptr %32, align 8 - %34 = icmp ugt i64 %33, 576460752303423487 - %35 = zext i1 %34 to i64 - %36 = getelementptr inbounds nuw [2 x i32], ptr %31, i64 0, i64 %35 - %37 = load i32, ptr %36, align 4, !tbaa !25 - %38 = add nsw i32 %37, 1 - store i32 %38, ptr %36, align 4, !tbaa !25 + %24 = add nuw nsw i32 %23, 11 + %25 = and i32 %24, 120 + %23 = zext nneg i32 %25 to i64 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %16, ptr nonnull align 4 %2, i64 %23, i1 false) + store ptr %16, ptr %11, align 8, !tbaa !83 + %24 = getelementptr inbounds nuw i8, ptr %11, i64 8 + store ptr null, ptr %24, align 8, !tbaa !86 + %25 = getelementptr inbounds nuw i8, ptr %0, i64 112 + %26 = getelementptr inbounds nuw i8, ptr %11, i64 16 + %27 = load i64, ptr %26, align 8 + %28 = icmp ugt i64 %27, 576460752303423487 + %29 = zext i1 %28 to i64 + %32 = getelementptr inbounds nuw [2 x i32], ptr %25, i64 0, i64 %29 + %33 = load i32, ptr %32, align 4, !tbaa !25 + %32 = add nsw i32 %33, 1 + store i32 %32, ptr %30, align 4, !tbaa !25 ret ptr %11 } @@ -6482,44 +6474,36 @@ Abc_Clock.exit50._crit_edge: ; preds = %Abc_Clock.exit50 %133 = load ptr, ptr %126, align 8, !tbaa !82 %.val.i51 = load i32, ptr %.04456, align 4 %134 = lshr i32 %.val.i51, 26 - %135 = add nuw nsw i32 %134, 4 - %136 = and i32 %135, 7 - %.not.i52 = icmp eq i32 %136, 0 - %137 = select i1 %.not.i52, i32 0, i32 8 - %138 = add nuw nsw i32 %137, %135 - %139 = and i32 %138, 248 - %140 = call ptr @Mem_FlexEntryFetch(ptr noundef %133, i32 noundef %139) #30 - %141 = load i64, ptr getelementptr inbounds nuw (i8, ptr @Dss_ManSharedMapDerive.Buffer, i64 16), align 16 - %142 = lshr i64 %141, 24 - %143 = and i64 %142, 248 - call void @llvm.memcpy.p0.p0.i64(ptr align 8 %132, ptr nonnull align 16 @Dss_ManSharedMapDerive.Buffer, i64 %143, i1 false) - %.val16.i = load i32, ptr %.04456, align 4 - %144 = lshr i32 %.val16.i, 26 - %145 = add nuw nsw i32 %144, 4 - %146 = and i32 %145, 7 - %.not17.i = icmp eq i32 %146, 0 - %147 = select i1 %.not17.i, i32 0, i32 8 - %148 = add nuw nsw i32 %147, %145 - %149 = and i32 %148, 248 - %150 = zext nneg i32 %149 to i64 - call void @llvm.memcpy.p0.p0.i64(ptr align 4 %140, ptr nonnull readonly align 4 %.04456, i64 %150, i1 false) - store ptr %140, ptr %132, align 8, !tbaa !83 - %151 = getelementptr inbounds nuw i8, ptr %132, i64 8 - store ptr null, ptr %151, align 8, !tbaa !86 - %152 = getelementptr inbounds nuw i8, ptr %0, i64 112 - %153 = getelementptr inbounds nuw i8, ptr %132, i64 16 - %154 = load i64, ptr %153, align 8 - %155 = icmp ugt i64 %154, 576460752303423487 - %156 = zext i1 %155 to i64 - %157 = getelementptr inbounds nuw [2 x i32], ptr %152, i64 0, i64 %156 - %158 = load i32, ptr %157, align 4, !tbaa !25 - %159 = add nsw i32 %158, 1 - store i32 %159, ptr %157, align 4, !tbaa !25 + %135 = add nuw nsw i32 %134, 11 + %136 = and i32 %135, 120 + %137 = call ptr @Mem_FlexEntryFetch(ptr noundef %133, i32 noundef %136) #30 + %138 = load i64, ptr getelementptr inbounds nuw (i8, ptr @Dss_ManSharedMapDerive.Buffer, i64 16), align 16 + %139 = lshr i64 %138, 24 + %139 = and i64 %139, 248 + call void @llvm.memcpy.p0.p0.i64(ptr align 8 %132, ptr nonnull align 16 @Dss_ManSharedMapDerive.Buffer, i64 %139, i1 false) + %141 = load i32, ptr %.04456, align 4 + %142 = lshr i32 %141, 26 + %142 = add nuw nsw i32 %142, 11 + %143 = and i32 %142, 120 + %144 = zext nneg i32 %143 to i64 + call void @llvm.memcpy.p0.p0.i64(ptr align 4 %137, ptr nonnull readonly align 4 %.04455, i64 %144, i1 false) + store ptr %137, ptr %132, align 8, !tbaa !83 + %145 = getelementptr inbounds nuw i8, ptr %132, i64 8 + store ptr null, ptr %145, align 8, !tbaa !86 + %146 = getelementptr inbounds nuw i8, ptr %0, i64 112 + %147 = getelementptr inbounds nuw i8, ptr %132, i64 16 + %148 = load i64, ptr %147, align 8 + %149 = icmp ugt i64 %148, 576460752303423487 + %150 = zext i1 %149 to i64 + %151 = getelementptr inbounds nuw [2 x i32], ptr %146, i64 0, i64 %150 + %152 = load i32, ptr %151, align 4, !tbaa !25 + %153 = add nsw i32 %152, 1 + store i32 %153, ptr %151, align 4, !tbaa !25 store ptr %132, ptr %.029.i, align 8, !tbaa !76 br label %160 160: ; preds = %Abc_Clock.exit50._crit_edge, %125 - %161 = phi ptr [ %140, %125 ], [ %.pre, %Abc_Clock.exit50._crit_edge ] + %161 = phi ptr [ %137, %125 ], [ %.pre, %Abc_Clock.exit50._crit_edge ] call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #30 %162 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %7) #30 %163 = icmp slt i32 %162, 0 @@ -6535,7 +6519,7 @@ Abc_Clock.exit50._crit_edge: ; preds = %Abc_Clock.exit50 br label %Abc_Clock.exit54 Abc_Clock.exit54: ; preds = %160, %164 - %.0.i53 = phi i64 [ %170, %164 ], [ -1, %160 ] + %.0.i53 = phi i64 [ %170, %158 ], [ -1, %154 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #30 %171 = add i64 %.0.i53, %.0.i49.neg %172 = getelementptr inbounds nuw i8, ptr %0, i64 128 @@ -6554,7 +6538,7 @@ Abc_Clock.exit54: ; preds = %160, %164 br label %179 179: ; preds = %.lr.ph, %179 - %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %179 ] + %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %173 ] %180 = getelementptr inbounds nuw [0 x i8], ptr %178, i64 0, i64 %indvars.iv %181 = load i8, ptr %180, align 1, !tbaa !37 %182 = zext i8 %181 to i32 @@ -6568,7 +6552,7 @@ Abc_Clock.exit54: ; preds = %160, %164 br i1 %187, label %179, label %._crit_edge, !llvm.loop !148 ._crit_edge: ; preds = %179, %Abc_Clock.exit54 - %.lcssa = phi i32 [ %177, %Abc_Clock.exit54 ], [ %184, %179 ] + %.lcssa = phi i32 [ %177, %Abc_Clock.exit53 ], [ %184, %173 ] %188 = and i32 %.lcssa, 67108863 br label %189 diff --git a/bench/abc/optimized/giaDup.ll b/bench/abc/optimized/giaDup.ll index a2586da51df..3f0d3860870 100644 --- a/bench/abc/optimized/giaDup.ll +++ b/bench/abc/optimized/giaDup.ll @@ -3781,33 +3781,31 @@ Vec_BitAlloc.exit: ; preds = %3, %11 br label %Vec_BitGrow.exit17.i 43: ; preds = %36 - %44 = lshr i32 %22, 4 - %45 = and i32 %22, 15 - %46 = icmp ne i32 %45, 0 - %47 = zext i1 %46 to i32 - %48 = add nuw nsw i32 %44, %47 + %44 = shl nuw nsw i32 %22, 1 + %45 = add nuw i32 %44, 31 %.not11.i16.i = icmp eq ptr %21, null - %49 = shl nuw nsw i32 %48, 2 - %50 = zext nneg i32 %49 to i64 - br i1 %.not11.i16.i, label %53, label %51 + %46 = lshr i32 %45, 3 + %47 = and i32 %46, 536870908 + %48 = zext nneg i32 %47 to i64 + br i1 %.not11.i16.i, label %51, label %49 51: ; preds = %43 - %52 = tail call ptr @realloc(ptr noundef nonnull %21, i64 noundef %50) #30 + %52 = tail call ptr @realloc(ptr noundef nonnull %21, i64 noundef %48) #30 br label %55 53: ; preds = %43 - %54 = tail call noalias ptr @malloc(i64 noundef %50) #29 + %54 = tail call noalias ptr @malloc(i64 noundef %48) #29 br label %55 55: ; preds = %53, %51 - %56 = phi ptr [ %52, %51 ], [ %54, %53 ] - %57 = shl nuw nsw i32 %48, 5 + %56 = phi ptr [ %52, %49 ], [ %54, %51 ] + %55 = and i32 %45, -32 br label %Vec_BitGrow.exit17.i Vec_BitGrow.exit17.i: ; preds = %55, %41, %39, %24 - %58 = phi ptr [ %20, %24 ], [ %56, %55 ], [ %40, %39 ], [ %42, %41 ] - %59 = phi ptr [ %21, %24 ], [ %56, %55 ], [ %40, %39 ], [ %42, %41 ] - %60 = phi i32 [ %22, %24 ], [ %57, %55 ], [ 32, %39 ], [ 32, %41 ] + %58 = phi ptr [ %20, %24 ], [ %56, %53 ], [ %40, %39 ], [ %42, %41 ] + %59 = phi ptr [ %21, %24 ], [ %56, %53 ], [ %40, %39 ], [ %42, %41 ] + %60 = phi i32 [ %22, %24 ], [ %55, %53 ], [ 32, %39 ], [ 32, %41 ] %61 = and i64 %34, 1073741824 %.not.i24 = icmp eq i64 %61, 0 %62 = and i32 %23, 31 @@ -3834,7 +3832,7 @@ Vec_BitGrow.exit17.i: ; preds = %55, %41, %39, %24 br label %Vec_BitPush.exit Vec_BitPush.exit: ; preds = %64, %70 - %77 = phi ptr [ %59, %64 ], [ %58, %70 ] + %77 = phi ptr [ %59, %62 ], [ %58, %68 ] %78 = add nuw nsw i32 %23, 1 %79 = add nuw nsw i32 %.027, 1 %.val19 = load i32, ptr %4, align 8, !tbaa !57 diff --git a/bench/abc/optimized/giaGen.ll b/bench/abc/optimized/giaGen.ll index 2fb9b6433b9..51aebf6d15a 100644 --- a/bench/abc/optimized/giaGen.ll +++ b/bench/abc/optimized/giaGen.ll @@ -1904,33 +1904,31 @@ Vec_BitAlloc.exit124: ; preds = %Vec_BitAlloc.exit, br label %Vec_BitGrow.exit17.i 94: ; preds = %87 - %95 = lshr i32 %73, 4 - %96 = and i32 %73, 15 - %97 = icmp ne i32 %96, 0 - %98 = zext i1 %97 to i32 - %99 = add nuw nsw i32 %95, %98 + %95 = shl nuw nsw i32 %73, 1 + %96 = add nuw i32 %95, 31 %.not11.i16.i = icmp eq ptr %72, null - %100 = shl nuw nsw i32 %99, 2 - %101 = zext nneg i32 %100 to i64 - br i1 %.not11.i16.i, label %104, label %102 + %97 = lshr i32 %96, 3 + %98 = and i32 %97, 536870908 + %99 = zext nneg i32 %98 to i64 + br i1 %.not11.i16.i, label %102, label %100 102: ; preds = %94 - %103 = tail call ptr @realloc(ptr noundef nonnull %72, i64 noundef %101) #22 + %103 = tail call ptr @realloc(ptr noundef nonnull %72, i64 noundef %99) #22 br label %106 104: ; preds = %94 - %105 = tail call noalias ptr @malloc(i64 noundef %101) #23 + %105 = tail call noalias ptr @malloc(i64 noundef %99) #23 br label %106 106: ; preds = %104, %102 - %107 = phi ptr [ %103, %102 ], [ %105, %104 ] - %108 = shl nuw nsw i32 %99, 5 + %107 = phi ptr [ %103, %100 ], [ %105, %102 ] + %106 = and i32 %96, -32 br label %Vec_BitGrow.exit17.i Vec_BitGrow.exit17.i: ; preds = %106, %92, %90, %79 - %109 = phi ptr [ %70, %79 ], [ %107, %106 ], [ %91, %90 ], [ %93, %92 ] - %110 = phi ptr [ %71, %79 ], [ %107, %106 ], [ %91, %90 ], [ %93, %92 ] - %111 = phi i32 [ %73, %79 ], [ %108, %106 ], [ 32, %90 ], [ 32, %92 ] + %109 = phi ptr [ %70, %79 ], [ %107, %104 ], [ %91, %90 ], [ %93, %92 ] + %110 = phi ptr [ %71, %79 ], [ %107, %104 ], [ %91, %90 ], [ %93, %92 ] + %111 = phi i32 [ %73, %79 ], [ %106, %104 ], [ 32, %90 ], [ 32, %92 ] %112 = and i64 %85, %68 %.not.i125 = icmp eq i64 %112, 0 %113 = and i32 %74, 31 @@ -1957,7 +1955,7 @@ Vec_BitGrow.exit17.i: ; preds = %106, %92, %90, %79 br label %Vec_BitPush.exit Vec_BitPush.exit: ; preds = %115, %121 - %128 = phi ptr [ %110, %115 ], [ %109, %121 ] + %128 = phi ptr [ %110, %113 ], [ %109, %119 ] %129 = add nsw i32 %74, 1 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %130 = load ptr, ptr %24, align 8, !tbaa !22 @@ -1981,11 +1979,11 @@ Vec_BitPush.exit: ; preds = %115, %121 .lr.ph145: ; preds = %.critedge %142 = lshr i32 %.085147, 6 + %141 = zext nneg i32 %140 to i64 + %142 = and i32 %.085147, 63 %143 = zext nneg i32 %142 to i64 - %144 = and i32 %.085147, 63 - %145 = zext nneg i32 %144 to i64 - %146 = shl nuw i64 1, %145 - br label %147 + %144 = shl nuw i64 1, %143 + br label %145 147: ; preds = %.lr.ph145, %Vec_BitPush.exit133 %indvars.iv150 = phi i64 [ 0, %.lr.ph145 ], [ %indvars.iv.next151, %Vec_BitPush.exit133 ] @@ -2005,7 +2003,7 @@ Vec_BitPush.exit: ; preds = %115, %121 %154 = mul nsw i32 %.val104, %151 %155 = sext i32 %154 to i64 %156 = getelementptr inbounds i64, ptr %.val105.val, i64 %155 - %157 = getelementptr inbounds nuw i64, ptr %156, i64 %143 + %157 = getelementptr inbounds nuw i64, ptr %156, i64 %141 %158 = load i64, ptr %157, align 8, !tbaa !16 %159 = load i32, ptr %43, align 4, !tbaa !73 %160 = load i32, ptr %42, align 8, !tbaa !75 @@ -2014,59 +2012,57 @@ Vec_BitPush.exit: ; preds = %115, %121 162: ; preds = %152 %163 = icmp slt i32 %159, 16 - br i1 %163, label %164, label %171 + br i1 %163, label %162, label %171 -164: ; preds = %162 - %165 = load ptr, ptr %50, align 8, !tbaa !76 - %.not11.i.i131 = icmp eq ptr %165, null - br i1 %.not11.i.i131, label %168, label %166 +162: ; preds = %160 + %163 = load ptr, ptr %50, align 8, !tbaa !76 + %.not11.i.i131 = icmp eq ptr %163, null + br i1 %.not11.i.i131, label %166, label %164 -166: ; preds = %164 - %167 = tail call dereferenceable_or_null(4) ptr @realloc(ptr noundef nonnull %165, i64 noundef 4) #22 +164: ; preds = %162 + %165 = tail call dereferenceable_or_null(4) ptr @realloc(ptr noundef nonnull %163, i64 noundef 4) #22 br label %Vec_BitGrow.exit.i132 -168: ; preds = %164 +168: ; preds = %162 %169 = tail call noalias dereferenceable_or_null(4) ptr @malloc(i64 noundef 4) #23 br label %Vec_BitGrow.exit.i132 -Vec_BitGrow.exit.i132: ; preds = %168, %166 - %170 = phi ptr [ %167, %166 ], [ %169, %168 ] +Vec_BitGrow.exit.i132: ; preds = %168, %164 + %170 = phi ptr [ %165, %164 ], [ %169, %166 ] store ptr %170, ptr %50, align 8, !tbaa !76 br label %Vec_BitGrow.exit17.sink.split.i129 171: ; preds = %162 - %172 = lshr i32 %159, 4 - %173 = and i32 %159, 15 - %174 = icmp ne i32 %173, 0 - %175 = zext i1 %174 to i32 - %176 = add nuw nsw i32 %172, %175 - %177 = load ptr, ptr %50, align 8, !tbaa !76 - %.not11.i16.i128 = icmp eq ptr %177, null - %178 = shl nuw nsw i32 %176, 2 - %179 = zext nneg i32 %178 to i64 - br i1 %.not11.i16.i128, label %182, label %180 - -180: ; preds = %171 - %181 = tail call ptr @realloc(ptr noundef nonnull %177, i64 noundef %179) #22 - br label %184 - -182: ; preds = %171 - %183 = tail call noalias ptr @malloc(i64 noundef %179) #23 - br label %184 - -184: ; preds = %182, %180 - %185 = phi ptr [ %181, %180 ], [ %183, %182 ] - store ptr %185, ptr %50, align 8, !tbaa !76 - %186 = shl nuw nsw i32 %176, 5 + %170 = shl nuw nsw i32 %159, 1 + %171 = add nuw i32 %170, 31 + %172 = load ptr, ptr %50, align 8, !tbaa !76 + %.not11.i16.i128 = icmp eq ptr %172, null + %173 = lshr i32 %171, 3 + %174 = and i32 %173, 536870908 + %175 = zext nneg i32 %174 to i64 + br i1 %.not11.i16.i128, label %178, label %176 + +176:; preds = %171 + %177 = tail call ptr @realloc(ptr noundef nonnull %172, i64 noundef %175) #22 + br label %180 + +178:; preds = %169 + %179 = tail call noalias ptr @malloc(i64 noundef %175) #23 + br label %180 + +180:; preds = %178, %176 + %181 = phi ptr [ %177, %176 ], [ %179, %178 ] + store ptr %181, ptr %50, align 8, !tbaa !76 + %182 = and i32 %171, -32 br label %Vec_BitGrow.exit17.sink.split.i129 -Vec_BitGrow.exit17.sink.split.i129: ; preds = %184, %Vec_BitGrow.exit.i132 - %.sink.i130 = phi i32 [ %186, %184 ], [ 32, %Vec_BitGrow.exit.i132 ] +Vec_BitGrow.exit17.sink.split.i129: ; preds = %180, %Vec_BitGrow.exit.i132 + %.sink.i130 = phi i32 [ %182, %180 ], [ 32, %Vec_BitGrow.exit.i132 ] store i32 %.sink.i130, ptr %42, align 8, !tbaa !75 br label %Vec_BitGrow.exit17.i126 Vec_BitGrow.exit17.i126: ; preds = %Vec_BitGrow.exit17.sink.split.i129, %152 - %187 = and i64 %158, %146 + %187 = and i64 %158, %144 %.not.i127 = icmp eq i64 %187, 0 %188 = and i32 %159, 31 %189 = shl nuw i32 1, %188 @@ -2176,7 +2172,7 @@ Vec_BitFree.exit136: ; preds = %Vec_BitFree.exit, % br label %237 237: ; preds = %233, %236 - %238 = phi ptr [ %.val120, %236 ], [ %4, %233 ] + %238 = phi ptr [ %.val120, %232 ], [ %4, %229 ] %239 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %10, ptr noundef nonnull dereferenceable(1) @.str.8, ptr noundef %238) #21 %240 = call noalias ptr @fopen(ptr noundef nonnull %10, ptr noundef nonnull @.str.6) %241 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %240, ptr noundef nonnull @.str.9, ptr noundef nonnull %6) #21 diff --git a/bench/abc/optimized/plaMan.ll b/bench/abc/optimized/plaMan.ll index afa9e12d01b..90f16eabb9c 100644 --- a/bench/abc/optimized/plaMan.ll +++ b/bench/abc/optimized/plaMan.ll @@ -130,29 +130,26 @@ define noalias noundef ptr @Pla_ManPrimesTable(i32 noundef %0) local_unnamed_add Vec_BitStartFull.exit: %1 = shl nuw i32 1, %0 %2 = tail call noundef i32 @llvm.smax.i32(i32 %1, i32 64) - %3 = lshr i32 %2, 5 - %4 = and i32 %2, 31 - %5 = icmp ne i32 %4, 0 - %6 = zext i1 %5 to i32 - %7 = add nuw nsw i32 %3, %6 - %8 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #19 - %9 = shl nuw nsw i32 %7, 5 - store i32 %9, ptr %8, align 8, !tbaa !8 - %10 = shl nuw nsw i32 %7, 2 - %11 = zext nneg i32 %10 to i64 - %12 = tail call noalias ptr @malloc(i64 noundef %11) #19 - %13 = getelementptr inbounds nuw i8, ptr %8, i64 4 - %14 = getelementptr inbounds nuw i8, ptr %8, i64 8 - store ptr %12, ptr %14, align 8, !tbaa !15 - tail call void @llvm.memset.p0.i64(ptr align 4 %12, i8 -1, i64 %11, i1 false) - %15 = icmp slt i32 %1, 64 - br i1 %15, label %.lr.ph, label %._crit_edge.thread + %3 = add nuw i32 %2, 31 + %4 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #19 + %5 = and i32 %3, -32 + store i32 %5, ptr %4, align 8, !tbaa !8 + %6 = lshr i32 %3, 3 + %7 = and i32 %6, 536870908 + %8 = zext nneg i32 %7 to i64 + %9 = tail call noalias ptr @malloc(i64 noundef %8) #19 + %10 = getelementptr inbounds nuw i8, ptr %4, i64 4 + %11 = getelementptr inbounds nuw i8, ptr %4, i64 8 + store ptr %9, ptr %11, align 8, !tbaa !15 + tail call void @llvm.memset.p0.i64(ptr align 4 %9, i8 -1, i64 %8, i1 false) + %12 = icmp slt i32 %1, 64 + br i1 %12, label %.lr.ph, label %._crit_edge.thread ._crit_edge.thread: ; preds = %Vec_BitStartFull.exit - store i32 %1, ptr %13, align 4, !tbaa !16 - %16 = load i32, ptr %12, align 4, !tbaa !17 + store i32 %1, ptr %10, align 4, !tbaa !16 + %16 = load i32, ptr %9, align 4, !tbaa !17 %17 = and i32 %16, -4 - store i32 %17, ptr %12, align 4, !tbaa !17 + store i32 %17, ptr %9, align 4, !tbaa !17 br label %.lr.ph32.preheader .lr.ph: ; preds = %Vec_BitStartFull.exit, %.lr.ph @@ -162,7 +159,7 @@ Vec_BitStartFull.exit: %20 = xor i32 %19, -1 %21 = ashr i32 %.025, 5 %22 = sext i32 %21 to i64 - %23 = getelementptr inbounds i32, ptr %12, i64 %22 + %23 = getelementptr inbounds i32, ptr %9, i64 %22 %24 = load i32, ptr %23, align 4, !tbaa !17 %25 = and i32 %24, %20 store i32 %25, ptr %23, align 4, !tbaa !17 @@ -171,10 +168,10 @@ Vec_BitStartFull.exit: br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !18 ._crit_edge: ; preds = %.lr.ph - store i32 %1, ptr %13, align 4, !tbaa !16 - %27 = load i32, ptr %12, align 4, !tbaa !17 + store i32 %1, ptr %10, align 4, !tbaa !16 + %27 = load i32, ptr %9, align 4, !tbaa !17 %28 = and i32 %27, -4 - store i32 %28, ptr %12, align 4, !tbaa !17 + store i32 %28, ptr %9, align 4, !tbaa !17 %29 = icmp sgt i32 %1, 2 br i1 %29, label %.lr.ph32.preheader, label %._crit_edge33 @@ -185,7 +182,7 @@ Vec_BitStartFull.exit: %.02329 = phi i32 [ %49, %.loopexit ], [ 2, %.lr.ph32.preheader ] %30 = lshr i32 %.02329, 5 %31 = zext nneg i32 %30 to i64 - %32 = getelementptr inbounds nuw i32, ptr %12, i64 %31 + %32 = getelementptr inbounds nuw i32, ptr %9, i64 %31 %33 = load i32, ptr %32, align 4, !tbaa !17 %34 = and i32 %.02329, 31 %35 = shl nuw i32 1, %34 @@ -203,7 +200,7 @@ Vec_BitStartFull.exit: %41 = xor i32 %40, -1 %42 = lshr i32 %.126, 5 %43 = zext nneg i32 %42 to i64 - %44 = getelementptr inbounds nuw i32, ptr %12, i64 %43 + %44 = getelementptr inbounds nuw i32, ptr %9, i64 %43 %45 = load i32, ptr %44, align 4, !tbaa !17 %46 = and i32 %45, %41 store i32 %46, ptr %44, align 4, !tbaa !17 @@ -217,7 +214,7 @@ Vec_BitStartFull.exit: br i1 %exitcond35.not, label %._crit_edge33, label %.lr.ph32, !llvm.loop !20 ._crit_edge33: ; preds = %.loopexit, %._crit_edge - ret ptr %8 + ret ptr %4 } ; Function Attrs: nounwind uwtable diff --git a/bench/abc/optimized/wlcNtk.ll b/bench/abc/optimized/wlcNtk.ll index d1d14098ef7..508cd8f0695 100644 --- a/bench/abc/optimized/wlcNtk.ll +++ b/bench/abc/optimized/wlcNtk.ll @@ -6962,18 +6962,10 @@ Wlc_ObjConstValue.exit: ; preds = %.critedge %.val29 = load i32, ptr %59, align 4, !tbaa !48 %60 = sub nsw i32 %.val28, %.val29 %61 = tail call i32 @llvm.abs.i32(i32 %60, i1 true) - %62 = add nuw nsw i32 %61, 1 + %62 = add nuw i32 %61, 32 %63 = lshr i32 %62, 5 - %64 = and i32 %62, 31 - %65 = icmp ne i32 %64, 0 - %66 = zext i1 %65 to i32 - %67 = add nuw nsw i32 %63, %66 - %.not = icmp eq i32 %67, 0 - br i1 %.not, label %.loopexit, label %.lr.ph52 - -.lr.ph52: ; preds = %Wlc_ObjConstValue.exit %.phi.trans.insert.i35 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %wide.trip.count = zext nneg i32 %67 to i64 + %wide.trip.count = zext nneg i32 %63 to i64 br label %68 68: ; preds = %.lr.ph52, %Vec_IntPush.exit40 @@ -7007,7 +6999,7 @@ Wlc_ObjConstValue.exit: ; preds = %.critedge br label %Vec_IntGrow.exit.i39 Vec_IntGrow.exit.i39: ; preds = %80, %78 - %82 = phi ptr [ %79, %78 ], [ %81, %80 ] + %82 = phi ptr [ %79, %75 ], [ %81, %77 ] store ptr %82, ptr %.phi.trans.insert.i35, align 8, !tbaa !34 store i32 16, ptr %2, align 8, !tbaa !35 br label %Vec_IntPush.exit40 @@ -7029,13 +7021,13 @@ Vec_IntGrow.exit.i39: ; preds = %80, %78 br label %92 92: ; preds = %90, %88 - %93 = phi ptr [ %89, %88 ], [ %91, %90 ] + %93 = phi ptr [ %89, %85 ], [ %91, %87 ] store ptr %93, ptr %.phi.trans.insert.i35, align 8, !tbaa !34 store i32 %84, ptr %2, align 8, !tbaa !35 br label %Vec_IntPush.exit40 Vec_IntPush.exit40: ; preds = %.Vec_IntGrow.exit10_crit_edge.i34, %Vec_IntGrow.exit.i39, %92 - %94 = phi ptr [ %.pre.i36, %.Vec_IntGrow.exit10_crit_edge.i34 ], [ %93, %92 ], [ %82, %Vec_IntGrow.exit.i39 ] + %94 = phi ptr [ %.pre.i36, %.Vec_IntGrow.exit10_crit_edge.i34 ], [ %93, %89 ], [ %82, %Vec_IntGrow.exit.i39 ] %95 = load i32, ptr %7, align 4, !tbaa !40 %96 = add nsw i32 %95, 1 store i32 %96, ptr %7, align 4, !tbaa !40 @@ -7043,8 +7035,8 @@ Vec_IntPush.exit40: ; preds = %.Vec_IntGrow.exit10 %98 = getelementptr inbounds i32, ptr %94, i64 %97 store i32 %70, ptr %98, align 4, !tbaa !42 %indvars.iv.next55 = add nuw nsw i64 %indvars.iv54, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next55, %wide.trip.count - br i1 %exitcond.not, label %.loopexit, label %68, !llvm.loop !138 + %exitcond.not = icmp samesign ult i64 %indvars.iv.next55, %wide.trip.count + br i1 %exitcond.not, label %65, label %.loopexit, !llvm.loop !138 99: ; preds = %.critedge %100 = getelementptr i8, ptr %6, i64 16 @@ -7082,7 +7074,7 @@ Vec_IntPush.exit40: ; preds = %.Vec_IntGrow.exit10 br label %Vec_IntGrow.exit.i.i Vec_IntGrow.exit.i.i: ; preds = %113, %111 - %115 = phi ptr [ %112, %111 ], [ %114, %113 ] + %115 = phi ptr [ %112, %109 ], [ %114, %111 ] store ptr %115, ptr %109, align 8, !tbaa !34 store i32 16, ptr %2, align 8, !tbaa !35 br label %Vec_IntPush.exit.i @@ -7105,13 +7097,13 @@ Vec_IntGrow.exit.i.i: ; preds = %113, %111 br label %126 126: ; preds = %124, %122 - %127 = phi ptr [ %123, %122 ], [ %125, %124 ] + %127 = phi ptr [ %123, %120 ], [ %125, %122 ] store ptr %127, ptr %118, align 8, !tbaa !34 store i32 %117, ptr %2, align 8, !tbaa !35 br label %Vec_IntPush.exit.i Vec_IntPush.exit.i: ; preds = %126, %Vec_IntGrow.exit.i.i, %.Vec_IntGrow.exit10_crit_edge.i.i - %128 = phi ptr [ %.pre.i.i, %.Vec_IntGrow.exit10_crit_edge.i.i ], [ %127, %126 ], [ %115, %Vec_IntGrow.exit.i.i ] + %128 = phi ptr [ %.pre.i.i, %.Vec_IntGrow.exit10_crit_edge.i.i ], [ %127, %124 ], [ %115, %Vec_IntGrow.exit.i.i ] %129 = load i32, ptr %7, align 4, !tbaa !40 %130 = add nsw i32 %129, 1 store i32 %130, ptr %7, align 4, !tbaa !40 @@ -7168,7 +7160,7 @@ Vec_IntPush.exit9.sink.split.i: ; preds = %Vec_IntPush.exit.i br label %Vec_IntGrow.exit.i46 Vec_IntGrow.exit.i46: ; preds = %155, %153 - %157 = phi ptr [ %154, %153 ], [ %156, %155 ] + %157 = phi ptr [ %154, %151 ], [ %156, %153 ] store ptr %157, ptr %151, align 8, !tbaa !34 store i32 16, ptr %2, align 8, !tbaa !35 br label %.loopexit.sink.split.sink.split @@ -7191,14 +7183,14 @@ Vec_IntGrow.exit.i46: ; preds = %155, %153 br label %168 168: ; preds = %166, %164 - %169 = phi ptr [ %165, %164 ], [ %167, %166 ] + %169 = phi ptr [ %165, %162 ], [ %167, %164 ] store ptr %169, ptr %160, align 8, !tbaa !34 store i32 %159, ptr %2, align 8, !tbaa !35 br label %.loopexit.sink.split.sink.split .loopexit.sink.split.sink.split: ; preds = %168, %Vec_IntGrow.exit.i46, %.Vec_IntGrow.exit10_crit_edge.i41, %Vec_IntPush.exit9.sink.split.i - %.sink58.ph = phi ptr [ %140, %Vec_IntPush.exit9.sink.split.i ], [ %.pre.i43, %.Vec_IntGrow.exit10_crit_edge.i41 ], [ %169, %168 ], [ %157, %Vec_IntGrow.exit.i46 ] - %.val32.val.sink.ph = phi i32 [ %.val32.val, %Vec_IntPush.exit9.sink.split.i ], [ %144, %.Vec_IntGrow.exit10_crit_edge.i41 ], [ %144, %168 ], [ %144, %Vec_IntGrow.exit.i46 ] + %.sink58.ph = phi ptr [ %140, %Vec_IntPush.exit9.sink.split.i ], [ %.pre.i43, %.Vec_IntGrow.exit10_crit_edge.i41 ], [ %169, %166 ], [ %157, %Vec_IntGrow.exit.i46 ] + %.val32.val.sink.ph = phi i32 [ %.val32.val, %Vec_IntPush.exit9.sink.split.i ], [ %144, %.Vec_IntGrow.exit10_crit_edge.i41 ], [ %144, %166 ], [ %144, %Vec_IntGrow.exit.i46 ] %.pre = load i32, ptr %7, align 4, !tbaa !40 br label %.loopexit.sink.split @@ -7213,7 +7205,7 @@ Vec_IntGrow.exit.i46: ; preds = %155, %153 store i32 %.val32.val.sink, ptr %172, align 4, !tbaa !42 br label %.loopexit -.loopexit: ; preds = %Vec_IntPush.exit40, %.loopexit.sink.split, %Wlc_ObjConstValue.exit, %.critedge +.loopexit: ; preds = %Vec_IntPush.exit40, %.loopexit.sink.split, %.critedge ret void } diff --git a/bench/arrow/optimized/builder_primitive.ll b/bench/arrow/optimized/builder_primitive.ll index 13e75b8c034..a2e0703aed6 100644 --- a/bench/arrow/optimized/builder_primitive.ll +++ b/bench/arrow/optimized/builder_primitive.ll @@ -1206,15 +1206,12 @@ _ZN5arrow6StatusD2Ev.exit: ; preds = %13, %8 %17 = getelementptr inbounds nuw i8, ptr %1, i64 176 %18 = load i64, ptr %17, align 8, !tbaa !108, !noalias !109 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #20, !noalias !109 - %19 = lshr i64 %.sroa.speculated, 3 - %20 = and i64 %.sroa.speculated, 7 - %21 = icmp ne i64 %20, 0 - %22 = zext i1 %21 to i64 - %23 = add nuw nsw i64 %19, %22 - call void @_ZN5arrow13BufferBuilder6ResizeElb(ptr dead_on_unwind nonnull writable sret(%"class.arrow::Status") align 8 %4, ptr noundef nonnull align 8 dereferenceable(72) %16, i64 noundef %23, i1 noundef zeroext true), !noalias !109 - %24 = load ptr, ptr %4, align 8, !tbaa !72, !noalias !112 + %19 = add nuw i64 %.sroa.speculated, 7 + %20 = lshr i64 %19, 3 + call void @_ZN5arrow13BufferBuilder6ResizeElb(ptr dead_on_unwind nonnull writable sret(%"class.arrow::Status") align 8 %4, ptr noundef nonnull align 8 dereferenceable(72) %16, i64 noundef %20, i1 noundef zeroext true), !noalias !109 + %21 = load ptr, ptr %4, align 8, !tbaa !72, !noalias !112 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #20, !noalias !109 - %25 = icmp eq ptr %24, null + %25 = icmp eq ptr %21, null br i1 %25, label %_ZN5arrow6StatusD2Ev.exit13.i, label %33 _ZN5arrow6StatusD2Ev.exit13.i: ; preds = %15 @@ -1231,7 +1228,7 @@ _ZN5arrow6StatusD2Ev.exit13.i: ; preds = %15 br label %34 33: ; preds = %15 - store ptr %24, ptr %0, align 8, !tbaa !72, !alias.scope !115 + store ptr %21, ptr %0, align 8, !tbaa !72, !alias.scope !115 br label %35 34: ; preds = %_ZN5arrow6StatusD2Ev.exit13.i, %28 diff --git a/bench/arrow/optimized/compare.ll b/bench/arrow/optimized/compare.ll index 77547248444..7bd2b2c6c92 100644 --- a/bench/arrow/optimized/compare.ll +++ b/bench/arrow/optimized/compare.ll @@ -18474,8 +18474,7 @@ define internal fastcc noundef zeroext i1 @_ZZN5arrow12_GLOBAL__N_119RangeDataEq %68 = srem i64 %64, 8 %69 = sub nsw i64 8, %68 %.not.i = icmp samesign ult i64 %2, %69 - %70 = and i64 %68, 4294967295 - br i1 %.not.i, label %80, label %71 + br i1 %.not.i, label %86, label %72 71: ; preds = %65 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) @@ -18487,7 +18486,8 @@ define internal fastcc noundef zeroext i1 @_ZZN5arrow12_GLOBAL__N_119RangeDataEq %76 = add nuw nsw i64 %72, %75 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %9, ptr nonnull align 1 %67, i64 %76, i1 false) %.0..0..0..0..0..0..0..0..i.i = load i64, ptr %9, align 8, !tbaa !223 - %77 = lshr i64 %.0..0..0..0..0..0..0..0..i.i, %70 + %76 = and i64 %68, 4294967295 + %77 = lshr i64 %.0..0..0..0..0..0..0..0..i.i, %76 %notmask.i.i.i = shl nsw i64 -1, %69 %78 = xor i64 %notmask.i.i.i, -1 %79 = and i64 %77, %78 @@ -18497,23 +18497,21 @@ define internal fastcc noundef zeroext i1 @_ZZN5arrow12_GLOBAL__N_119RangeDataEq 80: ; preds = %65 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) store i64 0, ptr %8, align 8, !tbaa !223 - %81 = lshr i64 %2, 3 - %82 = and i64 %2, 7 - %83 = icmp ne i64 %82, 0 - %84 = zext i1 %83 to i64 - %85 = add nuw nsw i64 %81, %84 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %8, ptr nonnull align 1 %67, i64 %85, i1 false) + %81 = add nuw nsw i64 %2, 7 + %82 = lshr i64 %81, 3 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %8, ptr nonnull align 1 %67, i64 %82, i1 false) %.0..0..0..0..0..0..0..0..i5.i = load i64, ptr %8, align 8, !tbaa !223 - %86 = lshr i64 %.0..0..0..0..0..0..0..0..i5.i, %70 + %83 = and i64 %68, 4294967295 + %84 = lshr i64 %.0..0..0..0..0..0..0..0..i5.i, %83 %notmask.i.i6.i = shl nsw i64 -1, %2 %87 = xor i64 %notmask.i.i6.i, -1 - %88 = and i64 %86, %87 + %88 = and i64 %84, %87 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) br label %89 89: ; preds = %80, %71 - %.pn = phi i64 [ %85, %80 ], [ %76, %71 ] - %.sink.i = phi i64 [ %88, %80 ], [ %79, %71 ] + %.pn = phi i64 [ 2, %80 ], [ %76, %70 ] + %.sink.i = phi i64 [ %88, %80 ], [ %79, %70 ] %.sroa.052.1 = getelementptr inbounds nuw i8, ptr %67, i64 %.pn %90 = getelementptr inbounds nuw i8, ptr %0, i64 16 %91 = load ptr, ptr %90, align 8, !tbaa !981 @@ -18533,10 +18531,9 @@ define internal fastcc noundef zeroext i1 @_ZZN5arrow12_GLOBAL__N_119RangeDataEq %103 = srem i64 %100, 8 %104 = sub nsw i64 8, %103 %.not.i31 = icmp samesign ult i64 %2, %104 - %105 = and i64 %103, 4294967295 - br i1 %.not.i31, label %115, label %106 + br i1 %.not.i31, label %113, label %103 -106: ; preds = %89 +103: ; preds = %87 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) store i64 0, ptr %7, align 8, !tbaa !223 %107 = lshr i64 %104, 3 @@ -18546,33 +18543,32 @@ define internal fastcc noundef zeroext i1 @_ZZN5arrow12_GLOBAL__N_119RangeDataEq %111 = add nuw nsw i64 %107, %110 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %7, ptr nonnull align 1 %102, i64 %111, i1 false) %.0..0..0..0..0..0..0..0..i.i32 = load i64, ptr %7, align 8, !tbaa !223 - %112 = lshr i64 %.0..0..0..0..0..0..0..0..i.i32, %105 - %notmask.i.i.i33 = shl nsw i64 -1, %104 - %113 = xor i64 %notmask.i.i.i33, -1 - %114 = and i64 %112, %113 + %109 = and i64 %101, 4294967295 + %110 = lshr i64 %.0..0..0..0..0..0..0..0..i.i32, %109 + %notmask.i.i.i33 = shl nsw i64 -1, %102 + %111 = xor i64 %notmask.i.i.i33, -1 + %112 = and i64 %110, %111 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) br label %_ZN5arrow8internal18BitmapUInt64ReaderC2EPKhll.exit38 115: ; preds = %89 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) store i64 0, ptr %6, align 8, !tbaa !223 - %116 = lshr i64 %2, 3 - %117 = and i64 %2, 7 - %118 = icmp ne i64 %117, 0 - %119 = zext i1 %118 to i64 - %120 = add nuw nsw i64 %116, %119 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %6, ptr nonnull align 1 %102, i64 %120, i1 false) + %114 = add nuw nsw i64 %2, 7 + %115 = lshr i64 %114, 3 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %6, ptr nonnull align 1 %100, i64 %115, i1 false) %.0..0..0..0..0..0..0..0..i5.i36 = load i64, ptr %6, align 8, !tbaa !223 - %121 = lshr i64 %.0..0..0..0..0..0..0..0..i5.i36, %105 + %116 = and i64 %101, 4294967295 + %117 = lshr i64 %.0..0..0..0..0..0..0..0..i5.i36, %116 %notmask.i.i6.i37 = shl nsw i64 -1, %2 %122 = xor i64 %notmask.i.i6.i37, -1 - %123 = and i64 %121, %122 + %123 = and i64 %117, %122 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) br label %_ZN5arrow8internal18BitmapUInt64ReaderC2EPKhll.exit38 -_ZN5arrow8internal18BitmapUInt64ReaderC2EPKhll.exit38: ; preds = %106, %115 - %.pn59 = phi i64 [ %120, %115 ], [ %111, %106 ] - %.sink.i35 = phi i64 [ %123, %115 ], [ %114, %106 ] +_ZN5arrow8internal18BitmapUInt64ReaderC2EPKhll.exit38: ; preds = %103, %115 + %.pn59 = phi i64 [ 2, %113 ], [ %111, %103 ] + %.sink.i35 = phi i64 [ %123, %113 ], [ %112, %103 ] %.sroa.0.1 = getelementptr inbounds nuw i8, ptr %102, i64 %.pn59 %124 = sub nsw i64 72, %68 %125 = add nsw i64 %68, 56 @@ -18630,10 +18626,10 @@ _ZN5arrow8internal18BitmapUInt64ReaderC2EPKhll.exit38: ; preds = %106, %115 br label %_ZN5arrow8internal18BitmapUInt64Reader8NextWordEv.exit _ZN5arrow8internal18BitmapUInt64Reader8NextWordEv.exit: ; preds = %137, %131, %139 - %.sroa.052.3 = phi ptr [ %146, %139 ], [ %132, %131 ], [ %.sroa.052.0, %137 ] - %.sroa.13.1 = phi i64 [ %.sroa.speculated.i, %139 ], [ %136, %131 ], [ 0, %137 ] - %.sroa.19.2 = phi i64 [ %151, %139 ], [ %135, %131 ], [ %.sroa.19.0, %137 ] - %.0.i = phi i64 [ %150, %139 ], [ %134, %131 ], [ %.sroa.19.0, %137 ] + %.sroa.052.3 = phi ptr [ %146, %135 ], [ %132, %127 ], [ %.sroa.052.0, %133 ] + %.sroa.13.1 = phi i64 [ %.sroa.speculated.i, %135 ], [ %136, %127 ], [ 0, %133 ] + %.sroa.19.2 = phi i64 [ %151, %135 ], [ %135, %127 ], [ %.sroa.19.0, %133 ] + %.0.i = phi i64 [ %150, %135 ], [ %134, %127 ], [ %.sroa.19.0, %133 ] %.not.i42 = icmp slt i64 %.sroa.12.0, %126 br i1 %.not.i42, label %158, label %152, !prof !289 @@ -18674,10 +18670,10 @@ _ZN5arrow8internal18BitmapUInt64Reader8NextWordEv.exit: ; preds = %137, %131, %1 br label %_ZN5arrow8internal18BitmapUInt64Reader8NextWordEv.exit48 _ZN5arrow8internal18BitmapUInt64Reader8NextWordEv.exit48: ; preds = %158, %152, %160 - %.sroa.17.2 = phi i64 [ %172, %160 ], [ %156, %152 ], [ %.sroa.17.0, %158 ] - %.sroa.12.1 = phi i64 [ %.sroa.speculated.i47, %160 ], [ %157, %152 ], [ 0, %158 ] - %.sroa.0.3 = phi ptr [ %167, %160 ], [ %153, %152 ], [ %.sroa.0.0, %158 ] - %.0.i44 = phi i64 [ %171, %160 ], [ %155, %152 ], [ %.sroa.17.0, %158 ] + %.sroa.17.2 = phi i64 [ %172, %156 ], [ %156, %148 ], [ %.sroa.17.0, %154 ] + %.sroa.12.1 = phi i64 [ %.sroa.speculated.i47, %156 ], [ %157, %148 ], [ 0, %154 ] + %.sroa.0.3 = phi ptr [ %167, %156 ], [ %153, %148 ], [ %.sroa.0.0, %154 ] + %.0.i44 = phi i64 [ %171, %156 ], [ %155, %148 ], [ %.sroa.17.0, %154 ] %.not = icmp eq i64 %.0.i, %.0.i44 br i1 %.not, label %128, label %.loopexit, !llvm.loop !983 @@ -18701,7 +18697,7 @@ _ZN5arrow8internal18BitmapUInt64Reader8NextWordEv.exit48: ; preds = %158, %152, br label %.loopexit .loopexit: ; preds = %_ZN5arrow8internal18BitmapUInt64Reader8NextWordEv.exit48, %128, %.loopexit.loopexit, %.preheader, %174 - %.122 = phi i1 [ %186, %174 ], [ true, %.preheader ], [ %.122.ph, %.loopexit.loopexit ], [ %129, %128 ], [ %129, %_ZN5arrow8internal18BitmapUInt64Reader8NextWordEv.exit48 ] + %.122 = phi i1 [ %186, %170 ], [ true, %.preheader ], [ %.122.ph, %.loopexit.loopexit ], [ %129, %124 ], [ %129, %_ZN5arrow8internal18BitmapUInt64Reader8NextWordEv.exit48 ] ret i1 %.122 } @@ -18859,15 +18855,12 @@ _ZN5arrow8internal19BaseSetBitRunReaderILb0EE14FindCurrentRunEv.exit: ; preds = 45: ; preds = %._crit_edge.i call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) store i64 0, ptr %3, align 8, !tbaa !223 - %46 = lshr i64 %.pr, 3 - %47 = and i64 %.pr, 7 - %48 = icmp ne i64 %47, 0 - %49 = zext i1 %48 to i64 - %50 = add nuw nsw i64 %46, %49 - %51 = load ptr, ptr %0, align 8, !tbaa !989 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %3, ptr align 1 %51, i64 %50, i1 false) - %52 = getelementptr inbounds nuw i8, ptr %51, i64 %50 - store ptr %52, ptr %0, align 8, !tbaa !989 + %46 = add nuw nsw i64 %.pr, 7 + %47 = lshr i64 %46, 3 + %48 = load ptr, ptr %0, align 8, !tbaa !989 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %3, ptr align 1 %48, i64 %47, i1 false) + %52 = getelementptr inbounds nuw i8, ptr %48, i64 %47 + store ptr %49, ptr %0, align 8, !tbaa !989 %.0..0..0..0..0..0..0..0..i.i = load i64, ptr %3, align 8, !tbaa !223 %notmask.i.i.i = shl nsw i64 -1, %.pr %53 = xor i64 %notmask.i.i.i, -1 @@ -18924,15 +18917,12 @@ _ZN5arrow8internal19BaseSetBitRunReaderILb0EE13SkipNextZerosEv.exit: ; preds = % 75: ; preds = %73 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) store i64 0, ptr %2, align 8, !tbaa !223 - %76 = lshr i64 %26, 3 - %77 = and i64 %26, 7 - %78 = icmp ne i64 %77, 0 - %79 = zext i1 %78 to i64 - %80 = add nuw nsw i64 %76, %79 - %81 = load ptr, ptr %0, align 8, !tbaa !989 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %2, ptr align 1 %81, i64 %80, i1 false) - %82 = getelementptr inbounds nuw i8, ptr %81, i64 %80 - store ptr %82, ptr %0, align 8, !tbaa !989 + %73 = add nuw nsw i64 %26, 7 + %74 = lshr i64 %73, 3 + %75 = load ptr, ptr %0, align 8, !tbaa !989 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %2, ptr align 1 %75, i64 %74, i1 false) + %76 = getelementptr inbounds nuw i8, ptr %75, i64 %74 + store ptr %76, ptr %0, align 8, !tbaa !989 %.0..0..0..0..0..0..i = load i64, ptr %2, align 8, !tbaa !223 %notmask.i.i = shl nsw i64 -1, %26 %83 = xor i64 %notmask.i.i, -1 @@ -18943,23 +18933,23 @@ _ZN5arrow8internal19BaseSetBitRunReaderILb0EE13SkipNextZerosEv.exit: ; preds = % br label %86 86: ; preds = %75, %70 - %87 = phi i64 [ %84, %75 ], [ %.0.copyload.i, %70 ] - %storemerge = phi i32 [ %85, %75 ], [ 64, %70 ] + %87 = phi i64 [ %84, %72 ], [ %.0.copyload.i, %67 ] + %storemerge = phi i32 [ %85, %72 ], [ 64, %67 ] store i32 %storemerge, ptr %4, align 8, !tbaa !988 %88 = and i64 %87, 1 %.not29 = icmp eq i64 %88, 0 br i1 %.not29, label %92, label %89 89: ; preds = %67, %86, %63 - %.02054 = phi i64 [ %21, %67 ], [ %21, %86 ], [ 0, %63 ] - %.2 = phi i64 [ %19, %67 ], [ %19, %86 ], [ %66, %63 ] + %.02054 = phi i64 [ %21, %64 ], [ %21, %80 ], [ 0, %60 ] + %.2 = phi i64 [ %19, %64 ], [ %19, %80 ], [ %66, %60 ] %90 = tail call noundef i64 @_ZN5arrow8internal19BaseSetBitRunReaderILb0EE13CountNextOnesEv(ptr noundef nonnull align 8 dereferenceable(36) %0) %91 = add nsw i64 %90, %.02054 br label %92 92: ; preds = %86, %73, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE14FindCurrentRunEv.exit, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE13SkipNextZerosEv.exit, %89 - %.sroa.019.1 = phi i64 [ %.2, %89 ], [ 0, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE13SkipNextZerosEv.exit ], [ %19, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE14FindCurrentRunEv.exit ], [ %19, %73 ], [ %19, %86 ] - %.sroa.6.1 = phi i64 [ %91, %89 ], [ 0, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE13SkipNextZerosEv.exit ], [ %21, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE14FindCurrentRunEv.exit ], [ %21, %73 ], [ %21, %86 ] + %.sroa.019.1 = phi i64 [ %.2, %83 ], [ 0, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE13SkipNextZerosEv.exit ], [ %19, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE14FindCurrentRunEv.exit ], [ %19, %70 ], [ %19, %80 ] + %.sroa.6.1 = phi i64 [ %91, %83 ], [ 0, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE13SkipNextZerosEv.exit ], [ %21, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE14FindCurrentRunEv.exit ], [ %21, %70 ], [ %21, %80 ] %.fca.0.insert = insertvalue { i64, i64 } poison, i64 %.sroa.019.1, 0 %.fca.1.insert = insertvalue { i64, i64 } %.fca.0.insert, i64 %.sroa.6.1, 1 ret { i64, i64 } %.fca.1.insert @@ -19047,14 +19037,11 @@ define linkonce_odr noundef i64 @_ZN5arrow8internal19BaseSetBitRunReaderILb0EE13 40: ; preds = %38 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) store i64 0, ptr %2, align 8, !tbaa !223 - %41 = lshr i64 %25, 3 - %42 = and i64 %25, 7 - %43 = icmp ne i64 %42, 0 - %44 = zext i1 %43 to i64 - %45 = add nuw nsw i64 %41, %44 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %2, ptr align 1 %24, i64 %45, i1 false) - %46 = getelementptr inbounds nuw i8, ptr %24, i64 %45 - store ptr %46, ptr %0, align 8, !tbaa !989 + %41 = add nuw nsw i64 %25, 7 + %42 = lshr i64 %41, 3 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %2, ptr align 1 %24, i64 %42, i1 false) + %43 = getelementptr inbounds nuw i8, ptr %24, i64 %42 + store ptr %43, ptr %0, align 8, !tbaa !989 %.0..0..0..0..0..0..i = load i64, ptr %2, align 8, !tbaa !223 %notmask.i.i = shl nsw i64 -1, %25 %47 = xor i64 %notmask.i.i, -1 diff --git a/bench/arrow/optimized/int_util.ll b/bench/arrow/optimized/int_util.ll index 6d71c1750a3..4754254d1d5 100644 --- a/bench/arrow/optimized/int_util.ll +++ b/bench/arrow/optimized/int_util.ll @@ -19912,15 +19912,12 @@ _ZN5arrow8internal19BaseSetBitRunReaderILb0EE14FindCurrentRunEv.exit: ; preds = 45: ; preds = %._crit_edge.i call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) store i64 0, ptr %3, align 8, !tbaa !23 - %46 = lshr i64 %.pr, 3 - %47 = and i64 %.pr, 7 - %48 = icmp ne i64 %47, 0 - %49 = zext i1 %48 to i64 - %50 = add nuw nsw i64 %46, %49 - %51 = load ptr, ptr %0, align 8, !tbaa !1257 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %3, ptr align 1 %51, i64 %50, i1 false) - %52 = getelementptr inbounds nuw i8, ptr %51, i64 %50 - store ptr %52, ptr %0, align 8, !tbaa !1257 + %46 = add nuw nsw i64 %.pr, 7 + %47 = lshr i64 %46, 3 + %48 = load ptr, ptr %0, align 8, !tbaa !1257 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %3, ptr align 1 %48, i64 %47, i1 false) + %52 = getelementptr inbounds nuw i8, ptr %48, i64 %47 + store ptr %49, ptr %0, align 8, !tbaa !1257 %.0..0..0..0..0..0..0..0..i.i = load i64, ptr %3, align 8, !tbaa !23 %notmask.i.i.i = shl nsw i64 -1, %.pr %53 = xor i64 %notmask.i.i.i, -1 @@ -19977,15 +19974,12 @@ _ZN5arrow8internal19BaseSetBitRunReaderILb0EE13SkipNextZerosEv.exit: ; preds = % 75: ; preds = %73 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) store i64 0, ptr %2, align 8, !tbaa !23 - %76 = lshr i64 %26, 3 - %77 = and i64 %26, 7 - %78 = icmp ne i64 %77, 0 - %79 = zext i1 %78 to i64 - %80 = add nuw nsw i64 %76, %79 - %81 = load ptr, ptr %0, align 8, !tbaa !1257 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %2, ptr align 1 %81, i64 %80, i1 false) - %82 = getelementptr inbounds nuw i8, ptr %81, i64 %80 - store ptr %82, ptr %0, align 8, !tbaa !1257 + %73 = add nuw nsw i64 %26, 7 + %74 = lshr i64 %73, 3 + %75 = load ptr, ptr %0, align 8, !tbaa !1257 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %2, ptr align 1 %75, i64 %74, i1 false) + %76 = getelementptr inbounds nuw i8, ptr %75, i64 %74 + store ptr %76, ptr %0, align 8, !tbaa !1257 %.0..0..0..0..0..0..i = load i64, ptr %2, align 8, !tbaa !23 %notmask.i.i = shl nsw i64 -1, %26 %83 = xor i64 %notmask.i.i, -1 @@ -19996,23 +19990,23 @@ _ZN5arrow8internal19BaseSetBitRunReaderILb0EE13SkipNextZerosEv.exit: ; preds = % br label %86 86: ; preds = %75, %70 - %87 = phi i64 [ %84, %75 ], [ %.0.copyload.i, %70 ] - %storemerge = phi i32 [ %85, %75 ], [ 64, %70 ] + %87 = phi i64 [ %84, %72 ], [ %.0.copyload.i, %67 ] + %storemerge = phi i32 [ %85, %72 ], [ 64, %67 ] store i32 %storemerge, ptr %4, align 8, !tbaa !1256 %88 = and i64 %87, 1 %.not29 = icmp eq i64 %88, 0 br i1 %.not29, label %92, label %89 89: ; preds = %67, %86, %63 - %.02054 = phi i64 [ %21, %67 ], [ %21, %86 ], [ 0, %63 ] - %.2 = phi i64 [ %19, %67 ], [ %19, %86 ], [ %66, %63 ] + %.02054 = phi i64 [ %21, %64 ], [ %21, %80 ], [ 0, %60 ] + %.2 = phi i64 [ %19, %64 ], [ %19, %80 ], [ %66, %60 ] %90 = tail call noundef i64 @_ZN5arrow8internal19BaseSetBitRunReaderILb0EE13CountNextOnesEv(ptr noundef nonnull align 8 dereferenceable(36) %0) %91 = add nsw i64 %90, %.02054 br label %92 92: ; preds = %86, %73, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE14FindCurrentRunEv.exit, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE13SkipNextZerosEv.exit, %89 - %.sroa.019.1 = phi i64 [ %.2, %89 ], [ 0, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE13SkipNextZerosEv.exit ], [ %19, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE14FindCurrentRunEv.exit ], [ %19, %73 ], [ %19, %86 ] - %.sroa.6.1 = phi i64 [ %91, %89 ], [ 0, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE13SkipNextZerosEv.exit ], [ %21, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE14FindCurrentRunEv.exit ], [ %21, %73 ], [ %21, %86 ] + %.sroa.019.1 = phi i64 [ %.2, %83 ], [ 0, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE13SkipNextZerosEv.exit ], [ %19, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE14FindCurrentRunEv.exit ], [ %19, %70 ], [ %19, %80 ] + %.sroa.6.1 = phi i64 [ %91, %83 ], [ 0, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE13SkipNextZerosEv.exit ], [ %21, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE14FindCurrentRunEv.exit ], [ %21, %70 ], [ %21, %80 ] %.fca.0.insert = insertvalue { i64, i64 } poison, i64 %.sroa.019.1, 0 %.fca.1.insert = insertvalue { i64, i64 } %.fca.0.insert, i64 %.sroa.6.1, 1 ret { i64, i64 } %.fca.1.insert @@ -20573,14 +20567,11 @@ define linkonce_odr noundef i64 @_ZN5arrow8internal19BaseSetBitRunReaderILb0EE13 40: ; preds = %38 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) store i64 0, ptr %2, align 8, !tbaa !23 - %41 = lshr i64 %25, 3 - %42 = and i64 %25, 7 - %43 = icmp ne i64 %42, 0 - %44 = zext i1 %43 to i64 - %45 = add nuw nsw i64 %41, %44 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %2, ptr align 1 %24, i64 %45, i1 false) - %46 = getelementptr inbounds nuw i8, ptr %24, i64 %45 - store ptr %46, ptr %0, align 8, !tbaa !1257 + %41 = add nuw nsw i64 %25, 7 + %42 = lshr i64 %41, 3 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %2, ptr align 1 %24, i64 %42, i1 false) + %43 = getelementptr inbounds nuw i8, ptr %24, i64 %42 + store ptr %43, ptr %0, align 8, !tbaa !1257 %.0..0..0..0..0..0..i = load i64, ptr %2, align 8, !tbaa !23 %notmask.i.i = shl nsw i64 -1, %25 %47 = xor i64 %notmask.i.i, -1 diff --git a/bench/arrow/optimized/list_util.ll b/bench/arrow/optimized/list_util.ll index 515d87956b6..fa05a8b9a34 100644 --- a/bench/arrow/optimized/list_util.ll +++ b/bench/arrow/optimized/list_util.ll @@ -1860,15 +1860,12 @@ _ZN5arrow8internal19BaseSetBitRunReaderILb0EE14FindCurrentRunEv.exit: ; preds = 45: ; preds = %._crit_edge.i call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) store i64 0, ptr %3, align 8, !tbaa !68 - %46 = lshr i64 %.pr, 3 - %47 = and i64 %.pr, 7 - %48 = icmp ne i64 %47, 0 - %49 = zext i1 %48 to i64 - %50 = add nuw nsw i64 %46, %49 - %51 = load ptr, ptr %0, align 8, !tbaa !109 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %3, ptr align 1 %51, i64 %50, i1 false) - %52 = getelementptr inbounds nuw i8, ptr %51, i64 %50 - store ptr %52, ptr %0, align 8, !tbaa !109 + %46 = add nuw nsw i64 %.pr, 7 + %47 = lshr i64 %46, 3 + %48 = load ptr, ptr %0, align 8, !tbaa !109 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %3, ptr align 1 %48, i64 %47, i1 false) + %52 = getelementptr inbounds nuw i8, ptr %48, i64 %47 + store ptr %49, ptr %0, align 8, !tbaa !109 %.0..0..0..0..0..0..0..0..i.i = load i64, ptr %3, align 8, !tbaa !68 %notmask.i.i.i = shl nsw i64 -1, %.pr %53 = xor i64 %notmask.i.i.i, -1 @@ -1925,15 +1922,12 @@ _ZN5arrow8internal19BaseSetBitRunReaderILb0EE13SkipNextZerosEv.exit: ; preds = % 75: ; preds = %73 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) store i64 0, ptr %2, align 8, !tbaa !68 - %76 = lshr i64 %26, 3 - %77 = and i64 %26, 7 - %78 = icmp ne i64 %77, 0 - %79 = zext i1 %78 to i64 - %80 = add nuw nsw i64 %76, %79 - %81 = load ptr, ptr %0, align 8, !tbaa !109 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %2, ptr align 1 %81, i64 %80, i1 false) - %82 = getelementptr inbounds nuw i8, ptr %81, i64 %80 - store ptr %82, ptr %0, align 8, !tbaa !109 + %73 = add nuw nsw i64 %26, 7 + %74 = lshr i64 %73, 3 + %75 = load ptr, ptr %0, align 8, !tbaa !109 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %2, ptr align 1 %75, i64 %74, i1 false) + %76 = getelementptr inbounds nuw i8, ptr %75, i64 %74 + store ptr %76, ptr %0, align 8, !tbaa !109 %.0..0..0..0..0..0..i = load i64, ptr %2, align 8, !tbaa !68 %notmask.i.i = shl nsw i64 -1, %26 %83 = xor i64 %notmask.i.i, -1 @@ -1944,23 +1938,23 @@ _ZN5arrow8internal19BaseSetBitRunReaderILb0EE13SkipNextZerosEv.exit: ; preds = % br label %86 86: ; preds = %75, %70 - %87 = phi i64 [ %84, %75 ], [ %.0.copyload.i, %70 ] - %storemerge = phi i32 [ %85, %75 ], [ 64, %70 ] + %87 = phi i64 [ %84, %72 ], [ %.0.copyload.i, %70 ] + %storemerge = phi i32 [ %85, %72 ], [ 64, %70 ] store i32 %storemerge, ptr %4, align 8, !tbaa !108 %88 = and i64 %87, 1 %.not29 = icmp eq i64 %88, 0 br i1 %.not29, label %92, label %89 89: ; preds = %67, %86, %63 - %.02054 = phi i64 [ %21, %67 ], [ %21, %86 ], [ 0, %63 ] - %.2 = phi i64 [ %19, %67 ], [ %19, %86 ], [ %66, %63 ] + %.02054 = phi i64 [ %21, %67 ], [ %21, %80 ], [ 0, %60 ] + %.2 = phi i64 [ %19, %67 ], [ %19, %80 ], [ %66, %60 ] %90 = tail call noundef i64 @_ZN5arrow8internal19BaseSetBitRunReaderILb0EE13CountNextOnesEv(ptr noundef nonnull align 8 dereferenceable(36) %0) %91 = add nsw i64 %90, %.02054 br label %92 92: ; preds = %86, %73, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE14FindCurrentRunEv.exit, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE13SkipNextZerosEv.exit, %89 - %.sroa.019.1 = phi i64 [ %.2, %89 ], [ 0, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE13SkipNextZerosEv.exit ], [ %19, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE14FindCurrentRunEv.exit ], [ %19, %73 ], [ %19, %86 ] - %.sroa.6.1 = phi i64 [ %91, %89 ], [ 0, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE13SkipNextZerosEv.exit ], [ %21, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE14FindCurrentRunEv.exit ], [ %21, %73 ], [ %21, %86 ] + %.sroa.019.1 = phi i64 [ %.2, %89 ], [ 0, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE13SkipNextZerosEv.exit ], [ %19, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE14FindCurrentRunEv.exit ], [ %19, %70 ], [ %19, %80 ] + %.sroa.6.1 = phi i64 [ %91, %89 ], [ 0, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE13SkipNextZerosEv.exit ], [ %21, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE14FindCurrentRunEv.exit ], [ %21, %70 ], [ %21, %80 ] %.fca.0.insert = insertvalue { i64, i64 } poison, i64 %.sroa.019.1, 0 %.fca.1.insert = insertvalue { i64, i64 } %.fca.0.insert, i64 %.sroa.6.1, 1 ret { i64, i64 } %.fca.1.insert @@ -2043,14 +2037,11 @@ define linkonce_odr noundef i64 @_ZN5arrow8internal19BaseSetBitRunReaderILb0EE13 40: ; preds = %38 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) store i64 0, ptr %2, align 8, !tbaa !68 - %41 = lshr i64 %25, 3 - %42 = and i64 %25, 7 - %43 = icmp ne i64 %42, 0 - %44 = zext i1 %43 to i64 - %45 = add nuw nsw i64 %41, %44 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %2, ptr align 1 %24, i64 %45, i1 false) - %46 = getelementptr inbounds nuw i8, ptr %24, i64 %45 - store ptr %46, ptr %0, align 8, !tbaa !109 + %41 = add nuw nsw i64 %25, 7 + %42 = lshr i64 %41, 3 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %2, ptr align 1 %24, i64 %42, i1 false) + %43 = getelementptr inbounds nuw i8, ptr %24, i64 %42 + store ptr %43, ptr %0, align 8, !tbaa !109 %.0..0..0..0..0..0..i = load i64, ptr %2, align 8, !tbaa !68 %notmask.i.i = shl nsw i64 -1, %25 %47 = xor i64 %notmask.i.i, -1 @@ -2233,22 +2224,19 @@ _ZN5arrow8internal19BaseSetBitRunReaderILb1EE14FindCurrentRunEv.exit: ; preds = 41: ; preds = %._crit_edge.i call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #17 store i64 0, ptr %3, align 8, !tbaa !68 - %42 = lshr i64 %.pr, 3 - %43 = and i64 %.pr, 7 - %44 = icmp ne i64 %43, 0 - %45 = zext i1 %44 to i64 - %46 = add nuw nsw i64 %42, %45 - %47 = load ptr, ptr %0, align 8, !tbaa !118 - %48 = sub nsw i64 0, %46 + %42 = add nuw nsw i64 %.pr, 7 + %43 = lshr i64 %42, 3 + %44 = load ptr, ptr %0, align 8, !tbaa !118 + %45 = sub nsw i64 0, %43 + %46 = getelementptr inbounds i8, ptr %44, i64 %45 + store ptr %46, ptr %0, align 8, !tbaa !118 + %47 = getelementptr inbounds nuw i8, ptr %3, i64 8 %49 = getelementptr inbounds i8, ptr %47, i64 %48 - store ptr %49, ptr %0, align 8, !tbaa !118 - %50 = getelementptr inbounds nuw i8, ptr %3, i64 8 - %51 = getelementptr inbounds i8, ptr %50, i64 %48 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %51, ptr align 1 %49, i64 %46, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %49, ptr align 1 %46, i64 %43, i1 false) %52 = load i64, ptr %3, align 8, !tbaa !68 - %53 = sub nuw nsw i64 64, %.pr - %notmask.i.i.i = shl nsw i64 -1, %53 - %54 = and i64 %52, %notmask.i.i.i + %50 = sub nuw nsw i64 64, %.pr + %notmask.i.i.i = shl nsw i64 -1, %50 + %51 = and i64 %49, %notmask.i.i.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #17 %55 = getelementptr inbounds nuw i8, ptr %0, i64 24 %56 = trunc nuw nsw i64 %.pr to i32 @@ -2295,22 +2283,19 @@ _ZN5arrow8internal19BaseSetBitRunReaderILb1EE13SkipNextZerosEv.exit: ; preds = % 71: ; preds = %69 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #17 store i64 0, ptr %2, align 8, !tbaa !68 - %72 = lshr i64 %23, 3 - %73 = and i64 %23, 7 - %74 = icmp ne i64 %73, 0 - %75 = zext i1 %74 to i64 - %76 = add nuw nsw i64 %72, %75 - %77 = load ptr, ptr %0, align 8, !tbaa !118 - %78 = sub nsw i64 0, %76 - %79 = getelementptr inbounds i8, ptr %77, i64 %78 - store ptr %79, ptr %0, align 8, !tbaa !118 - %80 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %81 = getelementptr inbounds i8, ptr %80, i64 %78 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %81, ptr align 1 %79, i64 %76, i1 false) - %82 = load i64, ptr %2, align 8, !tbaa !68 - %83 = sub nuw nsw i64 64, %23 - %notmask.i.i = shl nsw i64 -1, %83 - %84 = and i64 %82, %notmask.i.i + %72 = add nuw nsw i64 %23, 7 + %70 = lshr i64 %72, 3 + %74 = load ptr, ptr %0, align 8, !tbaa !118 + %72 = sub nsw i64 0, %70 + %73 = getelementptr inbounds i8, ptr %71, i64 %72 + store ptr %73, ptr %0, align 8, !tbaa !118 + %74 = getelementptr inbounds nuw i8, ptr %2, i64 8 + %79 = getelementptr inbounds i8, ptr %74, i64 %72 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %79, ptr align 1 %73, i64 %70, i1 false) + %76 = load i64, ptr %2, align 8, !tbaa !68 + %77 = sub nuw nsw i64 64, %23 + %notmask.i.i = shl nsw i64 -1, %77 + %78 = and i64 %76, %notmask.i.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #17 store i64 %84, ptr %7, align 8, !tbaa !116 %85 = trunc nuw nsw i64 %23 to i32 @@ -2324,16 +2309,16 @@ _ZN5arrow8internal19BaseSetBitRunReaderILb1EE13SkipNextZerosEv.exit: ; preds = % br i1 %.not29, label %92, label %88 88: ; preds = %_ZN5arrow8internal19BaseSetBitRunReaderILb1EE13SkipNextZerosEv.exit, %63, %86 - %.02055 = phi i64 [ %18, %63 ], [ %18, %86 ], [ 0, %_ZN5arrow8internal19BaseSetBitRunReaderILb1EE13SkipNextZerosEv.exit ] - %.2 = phi i64 [ %16, %63 ], [ %16, %86 ], [ %61, %_ZN5arrow8internal19BaseSetBitRunReaderILb1EE13SkipNextZerosEv.exit ] + %.02055 = phi i64 [ %18, %60 ], [ %18, %80 ], [ 0, %_ZN5arrow8internal19BaseSetBitRunReaderILb1EE13SkipNextZerosEv.exit ] + %.2 = phi i64 [ %16, %60 ], [ %16, %80 ], [ %61, %_ZN5arrow8internal19BaseSetBitRunReaderILb1EE13SkipNextZerosEv.exit ] %89 = tail call noundef i64 @_ZN5arrow8internal19BaseSetBitRunReaderILb1EE13CountNextOnesEv(ptr noundef nonnull align 8 dereferenceable(36) %0) %90 = add nsw i64 %89, %.02055 %91 = sub nsw i64 %.2, %90 br label %92 92: ; preds = %86, %69, %_ZN5arrow8internal19BaseSetBitRunReaderILb1EE14FindCurrentRunEv.exit, %_ZN5arrow8internal19BaseSetBitRunReaderILb1EE13SkipNextZerosEv.exit, %88 - %.sroa.019.1 = phi i64 [ %91, %88 ], [ 0, %_ZN5arrow8internal19BaseSetBitRunReaderILb1EE13SkipNextZerosEv.exit ], [ %23, %_ZN5arrow8internal19BaseSetBitRunReaderILb1EE14FindCurrentRunEv.exit ], [ %23, %69 ], [ %23, %86 ] - %.sroa.6.1 = phi i64 [ %90, %88 ], [ 0, %_ZN5arrow8internal19BaseSetBitRunReaderILb1EE13SkipNextZerosEv.exit ], [ %18, %_ZN5arrow8internal19BaseSetBitRunReaderILb1EE14FindCurrentRunEv.exit ], [ %18, %69 ], [ %18, %86 ] + %.sroa.019.1 = phi i64 [ %91, %88 ], [ 0, %_ZN5arrow8internal19BaseSetBitRunReaderILb1EE13SkipNextZerosEv.exit ], [ %23, %_ZN5arrow8internal19BaseSetBitRunReaderILb1EE14FindCurrentRunEv.exit ], [ %23, %69 ], [ %23, %80 ] + %.sroa.6.1 = phi i64 [ %90, %88 ], [ 0, %_ZN5arrow8internal19BaseSetBitRunReaderILb1EE13SkipNextZerosEv.exit ], [ %18, %_ZN5arrow8internal19BaseSetBitRunReaderILb1EE14FindCurrentRunEv.exit ], [ %18, %69 ], [ %18, %80 ] %.fca.0.insert = insertvalue { i64, i64 } poison, i64 %.sroa.019.1, 0 %.fca.1.insert = insertvalue { i64, i64 } %.fca.0.insert, i64 %.sroa.6.1, 1 ret { i64, i64 } %.fca.1.insert @@ -2416,21 +2401,18 @@ define linkonce_odr noundef i64 @_ZN5arrow8internal19BaseSetBitRunReaderILb1EE13 40: ; preds = %38 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #17 store i64 0, ptr %2, align 8, !tbaa !68 - %41 = lshr i64 %25, 3 - %42 = and i64 %25, 7 - %43 = icmp ne i64 %42, 0 - %44 = zext i1 %43 to i64 - %45 = add nuw nsw i64 %41, %44 - %46 = sub nsw i64 0, %45 - %47 = getelementptr inbounds i8, ptr %24, i64 %46 + %41 = add nuw nsw i64 %25, 7 + %42 = lshr i64 %41, 3 + %43 = sub nsw i64 0, %42 + %44 = getelementptr inbounds i8, ptr %24, i64 %43 store ptr %47, ptr %0, align 8, !tbaa !118 - %48 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %49 = getelementptr inbounds i8, ptr %48, i64 %46 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %49, ptr align 1 %47, i64 %45, i1 false) - %50 = load i64, ptr %2, align 8, !tbaa !68 - %51 = sub nuw nsw i64 64, %25 + %45 = getelementptr inbounds nuw i8, ptr %2, i64 8 + %47 = getelementptr inbounds i8, ptr %45, i64 %43 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %47, ptr align 1 %44, i64 %42, i1 false) + %47 = load i64, ptr %2, align 8, !tbaa !68 + %49 = sub nuw nsw i64 64, %25 %notmask.i.i = shl nsw i64 -1, %51 - %52 = and i64 %50, %notmask.i.i + %52 = and i64 %47, %notmask.i.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #17 %53 = trunc nuw nsw i64 %25 to i32 %54 = getelementptr inbounds nuw i8, ptr %0, i64 32 diff --git a/bench/arrow/optimized/scalar_cast_string.ll b/bench/arrow/optimized/scalar_cast_string.ll index 7783f36449a..42da9fd534c 100644 --- a/bench/arrow/optimized/scalar_cast_string.ll +++ b/bench/arrow/optimized/scalar_cast_string.ll @@ -49637,15 +49637,12 @@ _ZN5arrow8internal19BaseSetBitRunReaderILb0EE14FindCurrentRunEv.exit: ; preds = 45: ; preds = %._crit_edge.i call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) store i64 0, ptr %3, align 8, !tbaa !391 - %46 = lshr i64 %.pr, 3 - %47 = and i64 %.pr, 7 - %48 = icmp ne i64 %47, 0 - %49 = zext i1 %48 to i64 - %50 = add nuw nsw i64 %46, %49 - %51 = load ptr, ptr %0, align 8, !tbaa !1477 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %3, ptr align 1 %51, i64 %50, i1 false) - %52 = getelementptr inbounds nuw i8, ptr %51, i64 %50 - store ptr %52, ptr %0, align 8, !tbaa !1477 + %46 = add nuw nsw i64 %.pr, 7 + %47 = lshr i64 %46, 3 + %48 = load ptr, ptr %0, align 8, !tbaa !1477 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %3, ptr align 1 %48, i64 %47, i1 false) + %52 = getelementptr inbounds nuw i8, ptr %48, i64 %47 + store ptr %49, ptr %0, align 8, !tbaa !1477 %.0..0..0..0..0..0..0..0..i.i = load i64, ptr %3, align 8, !tbaa !391 %notmask.i.i.i = shl nsw i64 -1, %.pr %53 = xor i64 %notmask.i.i.i, -1 @@ -49702,15 +49699,12 @@ _ZN5arrow8internal19BaseSetBitRunReaderILb0EE13SkipNextZerosEv.exit: ; preds = % 75: ; preds = %73 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) store i64 0, ptr %2, align 8, !tbaa !391 - %76 = lshr i64 %26, 3 - %77 = and i64 %26, 7 - %78 = icmp ne i64 %77, 0 - %79 = zext i1 %78 to i64 - %80 = add nuw nsw i64 %76, %79 - %81 = load ptr, ptr %0, align 8, !tbaa !1477 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %2, ptr align 1 %81, i64 %80, i1 false) - %82 = getelementptr inbounds nuw i8, ptr %81, i64 %80 - store ptr %82, ptr %0, align 8, !tbaa !1477 + %73 = add nuw nsw i64 %26, 7 + %74 = lshr i64 %73, 3 + %75 = load ptr, ptr %0, align 8, !tbaa !1477 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %2, ptr align 1 %75, i64 %74, i1 false) + %76 = getelementptr inbounds nuw i8, ptr %75, i64 %74 + store ptr %76, ptr %0, align 8, !tbaa !1477 %.0..0..0..0..0..0..i = load i64, ptr %2, align 8, !tbaa !391 %notmask.i.i = shl nsw i64 -1, %26 %83 = xor i64 %notmask.i.i, -1 @@ -49721,23 +49715,23 @@ _ZN5arrow8internal19BaseSetBitRunReaderILb0EE13SkipNextZerosEv.exit: ; preds = % br label %86 86: ; preds = %75, %70 - %87 = phi i64 [ %84, %75 ], [ %.0.copyload.i, %70 ] - %storemerge = phi i32 [ %85, %75 ], [ 64, %70 ] + %87 = phi i64 [ %84, %72 ], [ %.0.copyload.i, %67 ] + %storemerge = phi i32 [ %85, %72 ], [ 64, %67 ] store i32 %storemerge, ptr %4, align 8, !tbaa !1476 %88 = and i64 %87, 1 %.not29 = icmp eq i64 %88, 0 br i1 %.not29, label %92, label %89 89: ; preds = %67, %86, %63 - %.02054 = phi i64 [ %21, %67 ], [ %21, %86 ], [ 0, %63 ] - %.2 = phi i64 [ %19, %67 ], [ %19, %86 ], [ %66, %63 ] + %.02054 = phi i64 [ %21, %64 ], [ %21, %80 ], [ 0, %60 ] + %.2 = phi i64 [ %19, %64 ], [ %19, %80 ], [ %66, %60 ] %90 = tail call noundef i64 @_ZN5arrow8internal19BaseSetBitRunReaderILb0EE13CountNextOnesEv(ptr noundef nonnull align 8 dereferenceable(36) %0) %91 = add nsw i64 %90, %.02054 br label %92 92: ; preds = %86, %73, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE14FindCurrentRunEv.exit, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE13SkipNextZerosEv.exit, %89 - %.sroa.019.1 = phi i64 [ %.2, %89 ], [ 0, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE13SkipNextZerosEv.exit ], [ %19, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE14FindCurrentRunEv.exit ], [ %19, %73 ], [ %19, %86 ] - %.sroa.6.1 = phi i64 [ %91, %89 ], [ 0, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE13SkipNextZerosEv.exit ], [ %21, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE14FindCurrentRunEv.exit ], [ %21, %73 ], [ %21, %86 ] + %.sroa.019.1 = phi i64 [ %.2, %83 ], [ 0, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE13SkipNextZerosEv.exit ], [ %19, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE14FindCurrentRunEv.exit ], [ %19, %70 ], [ %19, %80 ] + %.sroa.6.1 = phi i64 [ %91, %83 ], [ 0, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE13SkipNextZerosEv.exit ], [ %21, %_ZN5arrow8internal19BaseSetBitRunReaderILb0EE14FindCurrentRunEv.exit ], [ %21, %70 ], [ %21, %80 ] %.fca.0.insert = insertvalue { i64, i64 } poison, i64 %.sroa.019.1, 0 %.fca.1.insert = insertvalue { i64, i64 } %.fca.0.insert, i64 %.sroa.6.1, 1 ret { i64, i64 } %.fca.1.insert @@ -49820,14 +49814,11 @@ define linkonce_odr noundef i64 @_ZN5arrow8internal19BaseSetBitRunReaderILb0EE13 40: ; preds = %38 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) store i64 0, ptr %2, align 8, !tbaa !391 - %41 = lshr i64 %25, 3 - %42 = and i64 %25, 7 - %43 = icmp ne i64 %42, 0 - %44 = zext i1 %43 to i64 - %45 = add nuw nsw i64 %41, %44 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %2, ptr align 1 %24, i64 %45, i1 false) - %46 = getelementptr inbounds nuw i8, ptr %24, i64 %45 - store ptr %46, ptr %0, align 8, !tbaa !1477 + %41 = add nuw nsw i64 %25, 7 + %42 = lshr i64 %41, 3 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %2, ptr align 1 %24, i64 %42, i1 false) + %43 = getelementptr inbounds nuw i8, ptr %24, i64 %42 + store ptr %43, ptr %0, align 8, !tbaa !1477 %.0..0..0..0..0..0..i = load i64, ptr %2, align 8, !tbaa !391 %notmask.i.i = shl nsw i64 -1, %25 %47 = xor i64 %notmask.i.i, -1 diff --git a/bench/delta-rs/optimized/4say4x9grcidoih4.ll b/bench/delta-rs/optimized/4say4x9grcidoih4.ll index bb63bed401c..25e62d8f630 100644 --- a/bench/delta-rs/optimized/4say4x9grcidoih4.ll +++ b/bench/delta-rs/optimized/4say4x9grcidoih4.ll @@ -16466,19 +16466,16 @@ define hidden void @_ZN11arrow_array5array23fixed_size_binary_array20FixedSizeBi %28 = sub nuw i64 %26, %27 %29 = udiv exact i64 %28, 24 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %22) - %30 = lshr i64 %29, 3 - %31 = and i64 %29, 7 - %32 = icmp ne i64 %31, 0 - %33 = zext i1 %32 to i64 + %30 = add nuw nsw i64 %29, 7 + %31 = lshr i64 %30, 3 tail call void @llvm.experimental.noalias.scope.decl(metadata !3596) - %34 = add nuw nsw i64 %30, 63 - %35 = add nuw nsw i64 %34, %33 - %36 = and i64 %35, 576460752303423424 - %37 = icmp eq i64 %36, 0 - br i1 %37, label %45, label %40 + %34 = add nuw nsw i64 %31, 63 + %33 = and i64 %34, 576460752303423424 + %34 = icmp eq i64 %33, 0 + br i1 %34, label %42, label %40 "_ZN4core3ptr65drop_in_place$LT$arrow_buffer..buffer..mutable..MutableBuffer$GT$17h3960fb853678e5c0E.exit48": ; preds = %210, %211, %"_ZN4core3ptr65drop_in_place$LT$arrow_buffer..buffer..mutable..MutableBuffer$GT$17h3960fb853678e5c0E.exit46", %38 - %.pn.pn.pn = phi { ptr, i32 } [ %eh.lpad-body, %"_ZN4core3ptr65drop_in_place$LT$arrow_buffer..buffer..mutable..MutableBuffer$GT$17h3960fb853678e5c0E.exit46" ], [ %39, %38 ], [ %.pn.pn83, %211 ], [ %204, %210 ] + %.pn.pn.pn = phi { ptr, i32 } [ %eh.lpad-body, %"_ZN4core3ptr65drop_in_place$LT$arrow_buffer..buffer..mutable..MutableBuffer$GT$17h3960fb853678e5c0E.exit46" ], [ %39, %35 ], [ %.pn.pn83, %208 ], [ %204, %207 ] invoke void @"_ZN86_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17haaee7fddbd72506cE.llvm.4057250340930679409"(ptr noalias noundef nonnull align 8 dereferenceable(32) %1) to label %"_ZN4core3ptr113drop_in_place$LT$alloc..vec..into_iter..IntoIter$LT$core..option..Option$LT$alloc..vec..Vec$LT$u8$GT$$GT$$GT$$GT$17h56773bf96027c338E.exit" unwind label %208 @@ -16489,26 +16486,26 @@ define hidden void @_ZN11arrow_array5array23fixed_size_binary_array20FixedSizeBi 40: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h29b70314f0df8dcaE.exit.i" %41 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !3596 - %42 = tail call noundef align 128 ptr @__rust_alloc(i64 noundef %36, i64 noundef 128) #34, !noalias !3596 + %42 = tail call noundef align 128 ptr @__rust_alloc(i64 noundef %33, i64 noundef 128) #34, !noalias !3596 %43 = icmp eq ptr %42, null br i1 %43, label %44, label %45 44: ; preds = %40 - invoke void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef 128, i64 noundef %36) #42 + invoke void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef 128, i64 noundef %33) #42 to label %.noexc24 unwind label %38 .noexc24: ; preds = %44 unreachable 45: ; preds = %40, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h29b70314f0df8dcaE.exit.i" - %.0.i = phi ptr [ inttoptr (i64 128 to ptr), %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h29b70314f0df8dcaE.exit.i" ], [ %42, %40 ] + %.0.i = phi ptr [ inttoptr (i64 128 to ptr), %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h29b70314f0df8dcaE.exit.i" ], [ %42, %37 ] %46 = getelementptr inbounds nuw i8, ptr %22, i64 16 store ptr %.0.i, ptr %46, align 8, !alias.scope !3596 %47 = getelementptr inbounds nuw i8, ptr %22, i64 24 store i64 0, ptr %47, align 8, !alias.scope !3596 store i64 128, ptr %22, align 8, !alias.scope !3596 %48 = getelementptr inbounds nuw i8, ptr %22, i64 8 - store i64 %36, ptr %48, align 8, !alias.scope !3596 + store i64 %33, ptr %48, align 8, !alias.scope !3596 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) %49 = sext i32 %2 to i64 %50 = mul i64 %29, %49 @@ -16553,7 +16550,7 @@ define hidden void @_ZN11arrow_array5array23fixed_size_binary_array20FixedSizeBi br label %211 62: ; preds = %56, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h29b70314f0df8dcaE.exit.i25" - %.0.i26 = phi ptr [ inttoptr (i64 128 to ptr), %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h29b70314f0df8dcaE.exit.i25" ], [ %58, %56 ] + %.0.i26 = phi ptr [ inttoptr (i64 128 to ptr), %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h29b70314f0df8dcaE.exit.i25" ], [ %58, %53 ] %63 = getelementptr inbounds nuw i8, ptr %21, i64 16 store ptr %.0.i26, ptr %63, align 8, !alias.scope !3599 %64 = getelementptr inbounds nuw i8, ptr %21, i64 24 @@ -16579,9 +16576,9 @@ define hidden void @_ZN11arrow_array5array23fixed_size_binary_array20FixedSizeBi br label %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd19334bebcc40c72E.exit.i.i" "_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd19334bebcc40c72E.exit.i.i": ; preds = %159, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd19334bebcc40c72E.exit.lr.ph.i.i" - %.080 = phi i32 [ 0, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd19334bebcc40c72E.exit.lr.ph.i.i" ], [ %95, %159 ] - %.077 = phi i64 [ 0, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd19334bebcc40c72E.exit.lr.ph.i.i" ], [ %160, %159 ] - %73 = phi ptr [ %.promoted.i.i, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd19334bebcc40c72E.exit.lr.ph.i.i" ], [ %74, %159 ] + %.080 = phi i32 [ 0, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd19334bebcc40c72E.exit.lr.ph.i.i" ], [ %95, %156 ] + %.077 = phi i64 [ 0, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd19334bebcc40c72E.exit.lr.ph.i.i" ], [ %160, %156 ] + %73 = phi ptr [ %.promoted.i.i, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd19334bebcc40c72E.exit.lr.ph.i.i" ], [ %74, %156 ] call void @llvm.experimental.noalias.scope.decl(metadata !3617) %74 = getelementptr inbounds nuw i8, ptr %73, i64 24 store ptr %74, ptr %24, align 8, !alias.scope !3608, !noalias !3611 @@ -16626,7 +16623,7 @@ define hidden void @_ZN11arrow_array5array23fixed_size_binary_array20FixedSizeBi br i1 %.not44.i.i.i.i, label %.thread84, label %158 87: ; preds = %.noexc24.i.i.i.i, %77 - %88 = phi i64 [ %78, %77 ], [ %.pre.i.i.i.i.i, %.noexc24.i.i.i.i ] + %88 = phi i64 [ %78, %74 ], [ %.pre.i.i.i.i.i, %.noexc24.i.i.i.i ] %89 = load ptr, ptr %46, align 8, !alias.scope !3636, !noalias !3631, !nonnull !24, !noundef !24 %90 = getelementptr inbounds i8, ptr %89, i64 %88 store i8 0, ptr %90, align 1, !noalias !3631 @@ -16636,7 +16633,7 @@ define hidden void @_ZN11arrow_array5array23fixed_size_binary_array20FixedSizeBi br label %93 93: ; preds = %87, %75 - %94 = phi i32 [ %.080, %75 ], [ 8, %87 ] + %94 = phi i32 [ %.080, %72 ], [ 8, %84 ] %95 = add i32 %94, -1 %.not.i.i.i.i = icmp eq i64 %.sroa.0.0.copyload24.i.i, -9223372036854775808 br i1 %.not.i.i.i.i, label %96, label %110 @@ -16665,7 +16662,7 @@ define hidden void @_ZN11arrow_array5array23fixed_size_binary_array20FixedSizeBi br label %_ZN12arrow_buffer6buffer7mutable13MutableBuffer7reserve17hf23e37ca235a0348E.exit.i.i.i.i.i _ZN12arrow_buffer6buffer7mutable13MutableBuffer7reserve17hf23e37ca235a0348E.exit.i.i.i.i.i: ; preds = %.noexc30, %100 - %106 = phi i64 [ %97, %100 ], [ %.pre.i26.i.i.i.i, %.noexc30 ] + %106 = phi i64 [ %97, %97 ], [ %.pre.i26.i.i.i.i, %.noexc30 ] %107 = load ptr, ptr %63, align 8, !alias.scope !3637, !noalias !3631, !nonnull !24, !noundef !24 %108 = getelementptr inbounds i8, ptr %107, i64 %106 call void @llvm.memset.p0.i64(ptr nonnull align 1 %108, i8 0, i64 range(i64 -2147483648, 2147483648) %49, i1 false), !noalias !3631 @@ -16740,10 +16737,10 @@ _ZN12arrow_buffer6buffer7mutable13MutableBuffer12extend_zeros17h642b672236da3bf5 131: ; preds = %111 invoke void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %114, i64 noundef %113, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.78e2cf43c31d963ada85e9db6aba8ffd.59) #42 - to label %116 unwind label %.loopexit.split-lp.i.i, !noalias !3631 + to label %113 unwind label %.loopexit.split-lp.i.i, !noalias !3631 _ZN12arrow_buffer6buffer7mutable13MutableBuffer7reserve17hf23e37ca235a0348E.exit.i.i.i.i: ; preds = %.noexc._ZN12arrow_buffer6buffer7mutable13MutableBuffer7reserve17hf23e37ca235a0348E.exit_crit_edge.i.i.i.i, %117 - %132 = phi i64 [ %.pre.i.i.i.i, %.noexc._ZN12arrow_buffer6buffer7mutable13MutableBuffer7reserve17hf23e37ca235a0348E.exit_crit_edge.i.i.i.i ], [ %124, %117 ] + %132 = phi i64 [ %.pre.i.i.i.i, %.noexc._ZN12arrow_buffer6buffer7mutable13MutableBuffer7reserve17hf23e37ca235a0348E.exit_crit_edge.i.i.i.i ], [ %124, %114 ] %133 = load ptr, ptr %63, align 8, !noalias !3631, !nonnull !24, !noundef !24 %134 = getelementptr inbounds i8, ptr %133, i64 %132 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %134, ptr nonnull align 1 %.val.i.i.i.i, i64 %.val23.i.i.i.i, i1 false), !noalias !3631 @@ -16848,13 +16845,13 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.llvm.1318268667020908976.exit.i.i.i.i: br label %.thread84 .loopexit.split-lp: ; preds = %178, %181, %_ZN5alloc3fmt6format17h7ead8f60e83381d7E.llvm.1318268667020908976.exit.i.i.i.i, %189, %.noexc37 - %.1.ph = phi i1 [ false, %.noexc37 ], [ false, %189 ], [ true, %_ZN5alloc3fmt6format17h7ead8f60e83381d7E.llvm.1318268667020908976.exit.i.i.i.i ], [ false, %178 ], [ false, %181 ] + %.1.ph = phi i1 [ false, %.noexc37 ], [ false, %186 ], [ true, %_ZN5alloc3fmt6format17h7ead8f60e83381d7E.llvm.1318268667020908976.exit.i.i.i.i ], [ false, %175 ], [ false, %178 ] %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup br label %.thread84 .loopexit.loopexit: ; preds = %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd19334bebcc40c72E.exit.i.i", %159 - %.279.ph.ph = phi i64 [ %160, %159 ], [ %.077, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd19334bebcc40c72E.exit.i.i" ] + %.279.ph.ph = phi i64 [ %160, %156 ], [ %.077, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hd19334bebcc40c72E.exit.i.i" ] %.pre = load ptr, ptr %46, align 8 %.pre121 = load i64, ptr %47, align 8 %.pre122 = load i64, ptr %22, align 8, !range !3673 @@ -16862,11 +16859,11 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.llvm.1318268667020908976.exit.i.i.i.i: br label %.loopexit .loopexit: ; preds = %.loopexit.loopexit, %62 - %162 = phi i64 [ %36, %62 ], [ %.pre123, %.loopexit.loopexit ] - %163 = phi i64 [ 128, %62 ], [ %.pre122, %.loopexit.loopexit ] - %164 = phi i64 [ 0, %62 ], [ %.pre121, %.loopexit.loopexit ] - %165 = phi ptr [ %.0.i, %62 ], [ %.pre, %.loopexit.loopexit ] - %.279.ph = phi i64 [ 0, %62 ], [ %.279.ph.ph, %.loopexit.loopexit ] + %162 = phi i64 [ %33, %59 ], [ %.pre123, %.loopexit.loopexit ] + %163 = phi i64 [ 128, %59 ], [ %.pre122, %.loopexit.loopexit ] + %164 = phi i64 [ 0, %59 ], [ %.pre121, %.loopexit.loopexit ] + %165 = phi ptr [ %.0.i, %59 ], [ %.pre, %.loopexit.loopexit ] + %.279.ph = phi i64 [ 0, %59 ], [ %.279.ph.ph, %.loopexit.loopexit ] call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %.sroa.6.i.i) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %19) call void @llvm.experimental.noalias.scope.decl(metadata !3674) @@ -16933,7 +16930,7 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.llvm.1318268667020908976.exit.i.i.i.i: %180 = getelementptr inbounds nuw i8, ptr %19, i64 16 store i64 %164, ptr %180, align 8, !alias.scope !3674, !noalias !3682 invoke void @_ZN12arrow_buffer6buffer7boolean13BooleanBuffer3new17hf0019d945e4cf486E(ptr noalias noundef nonnull sret({ { ptr, ptr, i64 }, i64, i64 }) align 8 captures(none) dereferenceable(40) %20, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(24) %19, i64 noundef 0, i64 noundef %.279.ph) - to label %181 unwind label %.loopexit.split-lp + to label %178 unwind label %.loopexit.split-lp 181: ; preds = %178 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) @@ -16941,7 +16938,7 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.llvm.1318268667020908976.exit.i.i.i.i: call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %.sroa.657) call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %17) invoke void @_ZN12arrow_buffer6buffer4null10NullBuffer3new17h3502facc74782eecE(ptr noalias noundef nonnull sret({ { { ptr, ptr, i64 }, i64, i64 }, i64 }) align 8 captures(none) dereferenceable(48) %17, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(40) %20) - to label %182 unwind label %.loopexit.split-lp + to label %179 unwind label %.loopexit.split-lp 182: ; preds = %181 %.sroa.054.0.copyload = load ptr, ptr %17, align 8 @@ -16994,7 +16991,7 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.llvm.1318268667020908976.exit.i.i.i.i: br label %"_ZN4core6option15Option$LT$T$GT$6filter17h7fdfb6db926e624dE.exit" "_ZN4core6option15Option$LT$T$GT$6filter17h7fdfb6db926e624dE.exit": ; preds = %190, %.thread.i, %183 - %191 = phi i32 [ %2, %190 ], [ %.pre124, %.thread.i ], [ %2, %183 ] + %191 = phi i32 [ %2, %187 ], [ %.pre124, %.thread.i ], [ %2, %180 ] call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %.sroa.657) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %.sroa.04.sroa.0) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16) @@ -17021,7 +17018,7 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.llvm.1318268667020908976.exit.i.i.i.i: store i64 %194, ptr %.sroa.872.0..sroa_idx, align 8, !noalias !3704 %199 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !3705 %200 = call noundef align 8 dereferenceable_or_null(56) ptr @__rust_alloc(i64 noundef 56, i64 noundef 8) #34, !noalias !3705 - %201 = icmp eq ptr %200, null + %201 = icmp eq ptr %1100, null br i1 %201, label %202, label %207 202: ; preds = %"_ZN4core6option15Option$LT$T$GT$6filter17h7fdfb6db926e624dE.exit" @@ -17045,16 +17042,16 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.llvm.1318268667020908976.exit.i.i.i.i: .body40: ; preds = %203 invoke void @"_ZN4core3ptr53drop_in_place$LT$arrow_schema..datatype..DataType$GT$17he7cb2288da6b5fb2E.llvm.1318268667020908976"(ptr noalias noundef nonnull align 8 dereferenceable(24) %16) #43 - to label %210 unwind label %208 + to label %207 unwind label %208 207: ; preds = %"_ZN4core6option15Option$LT$T$GT$6filter17h7fdfb6db926e624dE.exit" - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %200, ptr noundef nonnull align 8 dereferenceable(56) %4, i64 56, i1 false), !noalias !3700 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %1100, ptr noundef nonnull align 8 dereferenceable(56) %4, i64 56, i1 false), !noalias !3700 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %4), !noalias !3700 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.04.sroa.0, ptr noundef nonnull align 8 dereferenceable(24) %16, i64 24, i1 false) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.04.sroa.0, i64 24, i1 false) %.sroa.04.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 - store ptr %200, ptr %.sroa.04.sroa.4.0..sroa_idx, align 8 + store ptr %1100, ptr %.sroa.04.sroa.4.0..sroa_idx, align 8 %.sroa.04.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 32 store ptr %193, ptr %.sroa.04.sroa.5.0..sroa_idx, align 8 %.sroa.04.sroa.6.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 40 @@ -17091,8 +17088,8 @@ _ZN5alloc3fmt6format17h7ead8f60e83381d7E.llvm.1318268667020908976.exit.i.i.i.i: to label %"_ZN4core3ptr65drop_in_place$LT$arrow_buffer..buffer..mutable..MutableBuffer$GT$17h3960fb853678e5c0E.exit44" unwind label %38 .thread84: ; preds = %.loopexit100, %.loopexit.split-lp, %172, %86, %109, %158 - %.1.lpad-body = phi i1 [ true, %158 ], [ true, %109 ], [ true, %86 ], [ false, %172 ], [ true, %.loopexit100 ], [ %.1.ph, %.loopexit.split-lp ] - %eh.lpad-body = phi { ptr, i32 } [ %lpad.thr_comm.split-lp.i.i.i.i, %158 ], [ %lpad.phi.i.i, %109 ], [ %lpad.thr_comm.split-lp.i.i.i.i, %86 ], [ %173, %172 ], [ %lpad.loopexit, %.loopexit100 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] + %.1.lpad-body = phi i1 [ true, %155 ], [ true, %106 ], [ true, %83 ], [ false, %169 ], [ true, %.loopexit100 ], [ %.1.ph, %.loopexit.split-lp ] + %eh.lpad-body = phi { ptr, i32 } [ %lpad.thr_comm.split-lp.i.i.i.i, %155 ], [ %lpad.phi.i.i, %106 ], [ %lpad.thr_comm.split-lp.i.i.i.i, %83 ], [ %173, %169 ], [ %lpad.loopexit, %.loopexit100 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] invoke void @"_ZN86_$LT$arrow_buffer..buffer..mutable..MutableBuffer$u20$as$u20$core..ops..drop..Drop$GT$4drop17h47fe387639924742E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %21) to label %"_ZN4core3ptr65drop_in_place$LT$arrow_buffer..buffer..mutable..MutableBuffer$GT$17h3960fb853678e5c0E.exit46" unwind label %208 diff --git a/bench/duckdb/optimized/bignum.ll b/bench/duckdb/optimized/bignum.ll index 2b116b30ed4..4746eb346b0 100644 --- a/bench/duckdb/optimized/bignum.ll +++ b/bench/duckdb/optimized/bignum.ll @@ -688,50 +688,47 @@ define hidden range(i32 -16, 1) i32 @mbedtls_mpi_read_string(ptr noundef capture br i1 %29, label %mbedtls_mpi_free.exit, label %30 30: ; preds = %28 - %31 = lshr i64 %26, 4 - %32 = and i64 %26, 15 - %33 = icmp ne i64 %32, 0 - %34 = zext i1 %33 to i64 - %35 = add nuw nsw i64 %31, %34 - %36 = icmp samesign ugt i64 %35, 10000 - br i1 %36, label %mbedtls_mpi_grow.exit, label %37 - -37: ; preds = %30 - %38 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %39 = load i64, ptr %38, align 8, !tbaa !12 - %40 = icmp ult i64 %39, %35 - br i1 %40, label %41, label %50 + %31 = add nuw nsw i64 %26, 15 + %32 = lshr i64 %31, 4 + %33 = icmp samesign ugt i64 %26, 160000 + br i1 %33, label %mbedtls_mpi_grow.exit, label %34 + +34:; preds = %30 + %35 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %36 = load i64, ptr %35, align 8, !tbaa !12 + %37 = icmp ult i64 %36, %32 + br i1 %37, label %38, label %47 + +38:; preds = %34 + %39 = tail call noalias ptr @calloc(i64 noundef %32, i64 noundef 8) #16 + %40 = icmp eq ptr %39, null + br i1 %40, label %mbedtls_mpi_grow.exit, label %41 -41: ; preds = %37 - %42 = tail call noalias ptr @calloc(i64 noundef %35, i64 noundef 8) #16 - %43 = icmp eq ptr %42, null - br i1 %43, label %mbedtls_mpi_grow.exit, label %44 +41: ; preds = %38 + %42 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %43 = load ptr, ptr %42, align 8, !tbaa !11 + %.not.i67 = icmp eq ptr %43, null + br i1 %.not.i67, label %.thread, label %44 44: ; preds = %41 - %45 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %46 = load ptr, ptr %45, align 8, !tbaa !11 - %.not.i67 = icmp eq ptr %46, null - br i1 %.not.i67, label %.thread, label %47 - -47: ; preds = %44 - %48 = shl nuw nsw i64 %39, 3 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %42, ptr nonnull align 8 %46, i64 %48, i1 false) - tail call void @mbedtls_platform_zeroize(ptr noundef nonnull %46, i64 noundef %48) - %49 = load ptr, ptr %45, align 8, !tbaa !11 - tail call void @free(ptr noundef %49) #15 + %45 = shl nuw nsw i64 %36, 3 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %39, ptr nonnull align 8 %43, i64 %45, i1 false) + tail call void @mbedtls_platform_zeroize(ptr noundef nonnull %43, i64 noundef %45) + %46 = load ptr, ptr %42, align 8, !tbaa !11 + tail call void @free(ptr noundef %46) #15 br label %.thread -.thread: ; preds = %44, %47 - store i64 %35, ptr %38, align 8, !tbaa !12 - store ptr %42, ptr %45, align 8, !tbaa !11 +.thread: ; preds = %41, %44 + store i64 %32, ptr %35, align 8, !tbaa !12 + store ptr %39, ptr %42, align 8, !tbaa !11 br label %._crit_edge.i -50: ; preds = %37 - %51 = icmp eq i64 %39, 0 +50: ; preds = %34 + %51 = icmp eq i64 %36, 0 br i1 %51, label %54, label %._crit_edge.i ._crit_edge.i: ; preds = %.thread, %50 - %52 = phi i64 [ %35, %.thread ], [ %39, %50 ] + %52 = phi i64 [ %32, %.thread ], [ %36, %47 ] %.phi.trans.insert.i = getelementptr inbounds nuw i8, ptr %0, i64 16 %.pre.i = load ptr, ptr %.phi.trans.insert.i, align 8, !tbaa !11 %53 = shl i64 %52, 3 @@ -740,28 +737,28 @@ define hidden range(i32 -16, 1) i32 @mbedtls_mpi_read_string(ptr noundef capture 54: ; preds = %50 %55 = tail call noalias dereferenceable_or_null(8) ptr @calloc(i64 noundef 1, i64 noundef 8) #16 %56 = icmp eq ptr %55, null - br i1 %56, label %mbedtls_mpi_grow.exit, label %57 - -57: ; preds = %54 - %58 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %59 = load ptr, ptr %58, align 8, !tbaa !11 - %.not.i.i = icmp eq ptr %59, null - br i1 %.not.i.i, label %62, label %60 - -60: ; preds = %57 - tail call void @mbedtls_platform_zeroize(ptr noundef nonnull %59, i64 noundef 0) - %61 = load ptr, ptr %58, align 8, !tbaa !11 - tail call void @free(ptr noundef %61) #15 - br label %62 - -62: ; preds = %60, %57 - store i64 1, ptr %38, align 8, !tbaa !12 - store ptr %55, ptr %58, align 8, !tbaa !11 + br i1 %56, label %mbedtls_mpi_grow.exit, label %54 + +60: ; preds = %51 + %55 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %61 = load ptr, ptr %55, align 8, !tbaa !11 + %.not.i.i = icmp eq ptr %61, null + br i1 %.not.i.i, label %59, label %62 + +62: ; preds = %60 + tail call void @mbedtls_platform_zeroize(ptr noundef nonnull %56, i64 noundef 0) + %58 = load ptr, ptr %55, align 8, !tbaa !11 + tail call void @free(ptr noundef %58) #15 + br label %59 + +59: ; preds = %57, %54 + store i64 1, ptr %35, align 8, !tbaa !12 + store ptr %52, ptr %55, align 8, !tbaa !11 br label %mbedtls_mpi_lset.exit -mbedtls_mpi_lset.exit: ; preds = %._crit_edge.i, %62 - %63 = phi i64 [ %53, %._crit_edge.i ], [ 8, %62 ] - %64 = phi ptr [ %.pre.i, %._crit_edge.i ], [ %55, %62 ] +mbedtls_mpi_lset.exit: ; preds = %._crit_edge.i, %59 + %63 = phi i64 [ %53, %._crit_edge.i ], [ 8, %59 ] + %64 = phi ptr [ %.pre.i, %._crit_edge.i ], [ %55, %59 ] %65 = getelementptr inbounds nuw i8, ptr %0, i64 16 tail call void @llvm.memset.p0.i64(ptr align 8 %64, i8 0, i64 %63, i1 false) %66 = load ptr, ptr %65, align 8, !tbaa !11 @@ -772,26 +769,26 @@ mbedtls_mpi_lset.exit: ; preds = %._crit_edge.i, %62 br i1 %.not6496, label %.loopexit, label %.lr.ph99 .lr.ph99: ; preds = %mbedtls_mpi_lset.exit, %78 - %.04198 = phi i64 [ %87, %78 ], [ 0, %mbedtls_mpi_lset.exit ] - %.04297 = phi i64 [ %86, %78 ], [ %26, %mbedtls_mpi_lset.exit ] + %.04198 = phi i64 [ %87, %75 ], [ 0, %mbedtls_mpi_lset.exit ] + %.04297 = phi i64 [ %86, %75 ], [ %26, %mbedtls_mpi_lset.exit ] %gep = getelementptr i8, ptr %invariant.gep, i64 %.04297 %67 = load i8, ptr %gep, align 1, !tbaa !21 %68 = sext i8 %67 to i32 %69 = add i8 %67, -48 %or.cond.i = icmp ult i8 %69, 10 %70 = add nsw i32 %68, -48 + %68 = zext nneg i32 %67 to i64 + %storemerge.i = select i1 %or.cond.i, i64 %68, i64 255 + %69 = add i8 %64, -65 + %or.cond5.i = icmp ult i8 %69, 6 + %70 = add nsw i32 %65, -55 %71 = zext nneg i32 %70 to i64 - %storemerge.i = select i1 %or.cond.i, i64 %71, i64 255 - %72 = add i8 %67, -65 + %storemerge.i = select i1 %or.cond5.i, i64 %71, i64 %storemerge.i + %72 = add i8 %67, -97 %or.cond5.i = icmp ult i8 %72, 6 - %73 = add nsw i32 %68, -55 + %73 = add nsw i32 %68, -87 %74 = zext nneg i32 %73 to i64 %storemerge24.i = select i1 %or.cond5.i, i64 %74, i64 %storemerge.i - %75 = add i8 %67, -97 - %or.cond8.i = icmp ult i8 %75, 6 - %76 = add nsw i32 %68, -87 - %77 = zext nneg i32 %76 to i64 - %storemerge25.i = select i1 %or.cond8.i, i64 %77, i64 %storemerge24.i %.not.i68 = icmp samesign ult i64 %storemerge25.i, 16 br i1 %.not.i68, label %78, label %mbedtls_mpi_grow.exit @@ -824,28 +821,28 @@ mbedtls_mpi_lset.exit: ; preds = %._crit_edge.i, %62 93: ; preds = %88 %94 = tail call noalias dereferenceable_or_null(8) ptr @calloc(i64 noundef 1, i64 noundef 8) #16 %95 = icmp eq ptr %94, null - br i1 %95, label %mbedtls_mpi_grow.exit, label %96 + br i1 %95, label %mbedtls_mpi_grow.exit, label %93 + +93: ; preds = %90 + %94 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %95 = load ptr, ptr %94, align 8, !tbaa !11 + %.not.i.i74 = icmp eq ptr %95, null + br i1 %.not.i.i74, label %98, label %96 96: ; preds = %93 - %97 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %98 = load ptr, ptr %97, align 8, !tbaa !11 - %.not.i.i74 = icmp eq ptr %98, null - br i1 %.not.i.i74, label %101, label %99 - -99: ; preds = %96 - tail call void @mbedtls_platform_zeroize(ptr noundef nonnull %98, i64 noundef 0) - %100 = load ptr, ptr %97, align 8, !tbaa !11 - tail call void @free(ptr noundef %100) #15 - br label %101 - -101: ; preds = %99, %96 - store i64 1, ptr %89, align 8, !tbaa !12 - store ptr %94, ptr %97, align 8, !tbaa !11 + tail call void @mbedtls_platform_zeroize(ptr noundef nonnull %95, i64 noundef 0) + %98 = load ptr, ptr %94, align 8, !tbaa !11 + tail call void @free(ptr noundef %98) #15 + br label %99 + +99: ; preds = %96, %93 + store i64 1, ptr %86, align 8, !tbaa !12 + store ptr %91, ptr %94, align 8, !tbaa !11 br label %mbedtls_mpi_lset.exit75 -mbedtls_mpi_lset.exit75: ; preds = %._crit_edge.i70, %101 - %102 = phi i64 [ %92, %._crit_edge.i70 ], [ 8, %101 ] - %103 = phi ptr [ %.pre.i72, %._crit_edge.i70 ], [ %94, %101 ] +mbedtls_mpi_lset.exit75: ; preds = %._crit_edge.i70, %98 + %102 = phi i64 [ %92, %._crit_edge.i70 ], [ 8, %98 ] + %103 = phi ptr [ %.pre.i72, %._crit_edge.i70 ], [ %94, %98 ] %104 = getelementptr inbounds nuw i8, ptr %0, i64 16 tail call void @llvm.memset.p0.i64(ptr align 8 %103, i8 0, i64 %102, i1 false) %105 = load ptr, ptr %104, align 8, !tbaa !11 @@ -873,27 +870,27 @@ mbedtls_mpi_lset.exit75: ; preds = %._crit_edge.i70, %1 %115 = add i8 %113, -48 %or.cond.i76 = icmp ult i8 %115, 10 %116 = add nsw i32 %114, -48 + %114 = zext nneg i32 %113 to i64 + %storemerge.i77 = select i1 %or.cond.i76, i64 %114, i64 255 + %115 = add i8 %110, -65 + %or.cond5.i78 = icmp ult i8 %115, 6 + %116 = add nsw i32 %111, -55 %117 = zext nneg i32 %116 to i64 - %storemerge.i77 = select i1 %or.cond.i76, i64 %117, i64 255 - %118 = add i8 %113, -65 + %storemerge.i77 = select i1 %or.cond5.i78, i64 %117, i64 %storemerge.i77 + %118 = add i8 %113, -97 %or.cond5.i78 = icmp ult i8 %118, 6 - %119 = add nsw i32 %114, -55 + %119 = add nsw i32 %114, -87 %120 = zext nneg i32 %119 to i64 %storemerge24.i79 = select i1 %or.cond5.i78, i64 %120, i64 %storemerge.i77 - %121 = add i8 %113, -97 - %or.cond8.i80 = icmp ult i8 %121, 6 - %122 = add nsw i32 %114, -87 - %123 = zext nneg i32 %122 to i64 - %storemerge25.i81 = select i1 %or.cond8.i80, i64 %123, i64 %storemerge24.i79 - %.not.i82 = icmp samesign ult i64 %storemerge25.i81, %106 - br i1 %.not.i82, label %124, label %mbedtls_mpi_grow.exit + %.not.i82 = icmp samesign ult i64 %storemerge25.i81, %103 + br i1 %.not.i82, label %121, label %mbedtls_mpi_grow.exit -124: ; preds = %111 - %125 = call i32 @mbedtls_mpi_mul_int(ptr noundef nonnull %6, ptr noundef nonnull %0, i64 noundef %106) - %.not60 = icmp eq i32 %125, 0 - br i1 %.not60, label %126, label %mbedtls_mpi_grow.exit +121:; preds = %108 + %125 = call i32 @mbedtls_mpi_mul_int(ptr noundef nonnull %6, ptr noundef nonnull %0, i64 noundef %103) + %.not.i82 = icmp eq i32 %122, 0 + br i1 %.not.i82, label %124, label %mbedtls_mpi_grow.exit -126: ; preds = %124 +124: ; preds = %121 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) #15 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #15 store i64 %storemerge25.i81, ptr %5, align 8, !tbaa !13 @@ -918,8 +915,8 @@ mbedtls_mpi_lset.exit75: ; preds = %._crit_edge.i70, %1 store i32 -1, ptr %0, align 8, !tbaa !3 br label %mbedtls_mpi_grow.exit -mbedtls_mpi_grow.exit: ; preds = %126, %124, %111, %.lr.ph99, %93, %54, %41, %30, %.loopexit, %128, %130 - %.043 = phi i32 [ 0, %130 ], [ 0, %128 ], [ 0, %.loopexit ], [ -16, %30 ], [ -16, %41 ], [ -16, %54 ], [ -16, %93 ], [ -6, %.lr.ph99 ], [ %127, %126 ], [ %125, %124 ], [ -6, %111 ] +mbedtls_mpi_grow.exit: ; preds = %126, %124, %111, %.lr.ph99, %93, %54, %38, %30, %.loopexit, %128, %130 + %.043 = phi i32 [ 0, %130 ], [ 0, %128 ], [ 0, %.loopexit ], [ -16, %30 ], [ -16, %38 ], [ -16, %51 ], [ -16, %90 ], [ -6, %.lr.ph99 ], [ %127, %126 ], [ %125, %124 ], [ -6, %111 ] %131 = getelementptr inbounds nuw i8, ptr %6, i64 16 %132 = load ptr, ptr %131, align 8, !tbaa !11 %.not.i84 = icmp eq ptr %132, null @@ -933,7 +930,7 @@ mbedtls_mpi_grow.exit: ; preds = %126, %124, %111, %. br label %mbedtls_mpi_free.exit mbedtls_mpi_free.exit: ; preds = %133, %mbedtls_mpi_grow.exit, %22, %12, %28, %3 - %.039 = phi i32 [ -4, %3 ], [ -4, %28 ], [ 0, %12 ], [ 0, %22 ], [ %.043, %mbedtls_mpi_grow.exit ], [ %.043, %133 ] + %.039 = phi i32 [ -4, %3 ], [ -4, %28 ], [ 0, %12 ], [ 0, %22 ], [ %.043, %mbedtls_mpi_grow.exit ], [ %.043, %130 ] call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #15 ret i32 %.039 } @@ -6204,47 +6201,44 @@ mbedtls_mpi_lset.exit: ; preds = %._crit_edge.i45, %7 tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %78, i8 0, i64 %77, i1 false) store i64 %1, ptr %78, align 8, !tbaa !13 store i32 1, ptr %8, align 8, !tbaa !3 - %80 = and i64 %35, 7 - %81 = icmp ne i64 %80, 0 - %82 = zext i1 %81 to i64 - %83 = lshr i64 %35, 3 - %84 = add nuw nsw i64 %83, %82 - %85 = shl nuw nsw i64 %84, 3 - %86 = sub nsw i64 %85, %35 - %87 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %88 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %89 = icmp eq i64 %84, 0 - %90 = and i64 %34, -8 - %91 = sub i64 %90, %.0.i5456 - br label %92 - -92: ; preds = %mbedtls_mpi_lset.exit, %121 - %.023 = phi i32 [ %60, %mbedtls_mpi_lset.exit ], [ %115, %121 ] - %93 = load i64, ptr %88, align 8, !tbaa !12 - %94 = icmp ult i64 %93, %84 - br i1 %94, label %mbedtls_mpi_grow.exit, label %95 - -95: ; preds = %92 - %96 = load ptr, ptr %87, align 8, !tbaa !11 - call void @llvm.memset.p0.i64(ptr align 8 %96, i8 0, i64 %86, i1 false) - %97 = load ptr, ptr %87, align 8, !tbaa !11 - %98 = getelementptr inbounds nuw i8, ptr %97, i64 %85 - %99 = load i64, ptr %88, align 8, !tbaa !12 - %100 = sub i64 %99, %84 - %101 = shl i64 %100, 3 - call void @llvm.memset.p0.i64(ptr align 1 %98, i8 0, i64 %101, i1 false) - %102 = load ptr, ptr %87, align 8, !tbaa !11 - %103 = getelementptr inbounds nuw i8, ptr %102, i64 %86 - %104 = call noundef i32 %3(ptr noundef %4, ptr noundef %103, i64 noundef %35) - %.not.i47 = icmp eq i32 %104, 0 - br i1 %.not.i47, label %105, label %mbedtls_mpi_grow.exit - -105: ; preds = %95 - %106 = load ptr, ptr %87, align 8, !tbaa !11 - %107 = getelementptr i64, ptr %106, i64 %84 - %.01214.i.i = getelementptr i8, ptr %107, i64 -8 - %.not15.i.i = icmp ugt ptr %106, %.01214.i.i - %or.cond.i.i49 = or i1 %89, %.not15.i.i + %80 = add nuw nsw i64 %35, 7 + %81 = lshr i64 %80, 3 + %82 = and i64 %80, 4611686018427387896 + %83 = sub nsw i64 %85, %35 + %84 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %85 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %86 = icmp eq i64 %35, 0 + %87 = and i64 %34, -8 + %88 = sub i64 %87, %.0.i5456 + br label %89 + +89:; preds = %mbedtls_mpi_lset.exit, %118 + %.023 = phi i32 [ %60, %mbedtls_mpi_lset.exit ], [ %112, %118 ] + %90 = load i64, ptr %85, align 8, !tbaa !12 + %91 = icmp ult i64 %90, %81 + br i1 %91, label %mbedtls_mpi_grow.exit, label %92 + +92:; preds = %89 + %93 = load ptr, ptr %84, align 8, !tbaa !11 + call void @llvm.memset.p0.i64(ptr align 8 %93, i8 0, i64 %83, i1 false) + %94 = load ptr, ptr %84, align 8, !tbaa !11 + %95 = getelementptr inbounds nuw i8, ptr %94, i64 %82 + %96 = load i64, ptr %85, align 8, !tbaa !12 + %97 = sub i64 %96, %81 + %98 = shl i64 %98, 3 + call void @llvm.memset.p0.i64(ptr align 1 %95, i8 0, i64 %98, i1 false) + %102 = load ptr, ptr %84, align 8, !tbaa !11 + %100 = getelementptr inbounds nuw i8, ptr %99, i64 %83 + %101 = call noundef i32 %3(ptr noundef %4, ptr noundef %100, i64 noundef %35) + %.not.i47 = icmp eq i32 %101, 0 + br i1 %.not.i47, label %102, label %mbedtls_mpi_grow.exit + +102:; preds = %92 + %103 = load ptr, ptr %84, align 8, !tbaa !11 + %104 = getelementptr i64, ptr %103, i64 %81 + %.01214.i.i = getelementptr i8, ptr %104, i64 -8 + %.not15.i.i = icmp ugt ptr %103, %.01214.i.i + %or.cond.i.i49 = or i1 %86, %.not15.i.i br i1 %or.cond.i.i49, label %.loopexit, label %.lr.ph.i.i50 .lr.ph.i.i50: ; preds = %105, %.lr.ph.i.i50 @@ -6290,7 +6284,7 @@ mbedtls_mpi_lset.exit: ; preds = %._crit_edge.i45, %7 br i1 %126, label %92, label %mbedtls_mpi_grow.exit, !llvm.loop !75 mbedtls_mpi_grow.exit: ; preds = %95, %92, %114, %121, %119, %117, %.loopexit - %.022.ph = phi i32 [ %113, %.loopexit ], [ %118, %117 ], [ %120, %119 ], [ 0, %121 ], [ -14, %114 ], [ -4, %92 ], [ %104, %95 ] + %.022.ph = phi i32 [ %113, %.loopexit ], [ %118, %114 ], [ %120, %116 ], [ 0, %118 ], [ -14, %114 ], [ -4, %92 ], [ %104, %95 ] %.pre = load ptr, ptr %79, align 8, !tbaa !11 %.not.i52 = icmp eq ptr %.pre, null br i1 %.not.i52, label %mbedtls_mpi_cmp_int.exit.thread, label %127 diff --git a/bench/folly/optimized/Symbolizer.ll b/bench/folly/optimized/Symbolizer.ll index 5d45f725817..d29c8d7f14b 100644 --- a/bench/folly/optimized/Symbolizer.ll +++ b/bench/folly/optimized/Symbolizer.ll @@ -578,7 +578,7 @@ _ZN5folly10symbolizer17getStackTraceSafeILm100EEEbRNS0_10FrameArrayIXT_EEE.exit: invoke void %17(ptr noundef nonnull align 8 dereferenceable(13) %14, ptr nonnull @.str.1, ptr nonnull getelementptr inbounds nuw (i8, ptr @.str.1, i64 31)) to label %_ZN5folly10symbolizer21SafeStackTracePrinter5printENS_5RangeIPKcEE.exit unwind label %18 -18: ; preds = %269, %.noexc34, %"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit93.i", %228, %.noexc31, %"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit79.i", %.noexc29, %.noexc28, %.noexc27, %"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit65.i", %.noexc25, %.noexc24, %.noexc23, %.critedge.i, %.noexc21, %"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit46.i", %97, %.noexc18, %"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit.i", %.noexc16, %.noexc15, %.noexc, %50, %24, %13, %_ZN5folly10symbolizer21SafeStackTracePrinter5printENS_5RangeIPKcEE.exit, %2, %265, %20 +18: ; preds = %269, %.noexc34, %"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit81.i", %208, %.noexc31, %"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit70.i", %.noexc29, %.noexc28, %.noexc27, %"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit59.i", %.noexc25, %.noexc24, %.noexc23, %.critedge.i, %.noexc21, %"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit43.i", %97, %.noexc18, %"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit.i", %.noexc16, %.noexc15, %.noexc, %50, %24, %13, %_ZN5folly10symbolizer21SafeStackTracePrinter5printENS_5RangeIPKcEE.exit, %2, %265, %20 %19 = landingpad { ptr, i32 } cleanup call fastcc void @"_ZN5folly6detail14ScopeGuardImplIZNS_10symbolizer21SafeStackTracePrinter15printStackTraceEbE3$_0Lb1EED2Ev"(i8 0, ptr nonnull %0) #19 @@ -692,71 +692,58 @@ _ZN5folly10symbolizer6detail13fixFrameArrayILm100EEEbRNS0_10FrameArrayIXT_EEEl.e to label %.noexc17 unwind label %18 .noexc17: ; preds = %.noexc16 - br i1 %.not.i14, label %._crit_edge.thread.i.i.i.i, label %_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i.i, !prof !23 - -._crit_edge.thread.i.i.i.i: ; preds = %.noexc17 - %65 = load i16, ptr @_ZN5folly6detail14to_ascii_tableILm16ENS_17to_ascii_alphabetILb0EEEE4dataE, align 2, !tbaa !76 - br label %86 - -_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i.i: ; preds = %.noexc17 - %66 = ptrtoint ptr %47 to i64 - %67 = tail call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %66, i1 true) - %68 = sub nuw nsw i64 64, %67 - %69 = lshr i64 %68, 2 - %70 = and i64 %68, 3 - %71 = icmp ne i64 %70, 0 - %72 = zext i1 %71 to i64 - %73 = add nuw nsw i64 %69, %72 - %74 = icmp samesign ugt i64 %73, 2 - br i1 %74, label %.lr.ph.i.i.i.i, label %._crit_edge.i.i.i.i, !prof !77 - -.lr.ph.i.i.i.i: ; preds = %_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i.i, %.lr.ph.i.i.i.i - %.0.i3.i.i.i.i = phi i64 [ %76, %.lr.ph.i.i.i.i ], [ %66, %_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i.i ] - %.014.i2.i.i.i.i = phi i64 [ %75, %.lr.ph.i.i.i.i ], [ %73, %_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i.i ] - %75 = add i64 %.014.i2.i.i.i.i, -2 - %76 = lshr i64 %.0.i3.i.i.i.i, 8 - %77 = and i64 %.0.i3.i.i.i.i, 255 - %78 = getelementptr inbounds nuw [256 x i16], ptr @_ZN5folly6detail14to_ascii_tableILm16ENS_17to_ascii_alphabetILb0EEEE4dataE, i64 0, i64 %77 - %79 = load i16, ptr %78, align 2, !tbaa !76 - %80 = getelementptr inbounds nuw i8, ptr %3, i64 %75 - store i16 %79, ptr %80, align 1 - %81 = icmp ugt i64 %75, 2 - br i1 %81, label %.lr.ph.i.i.i.i, label %._crit_edge.i.i.i.i, !prof !78, !llvm.loop !79 - -._crit_edge.i.i.i.i: ; preds = %.lr.ph.i.i.i.i, %_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i.i - %.014.i.lcssa.i.i.i.i = phi i64 [ %73, %_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i.i ], [ %75, %.lr.ph.i.i.i.i ] - %.0.i.lcssa.i.i.i.i = phi i64 [ %66, %_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i.i ], [ %76, %.lr.ph.i.i.i.i ] - %82 = getelementptr inbounds nuw [256 x i16], ptr @_ZN5folly6detail14to_ascii_tableILm16ENS_17to_ascii_alphabetILb0EEEE4dataE, i64 0, i64 %.0.i.lcssa.i.i.i.i - %83 = load i16, ptr %82, align 2, !tbaa !76 - %84 = icmp eq i64 %.014.i.lcssa.i.i.i.i, 2 - br i1 %84, label %85, label %86, !prof !80 - -85: ; preds = %._crit_edge.i.i.i.i - store i16 %83, ptr %3, align 16 + %65 = ptrtoint ptr %47 to i64 + %66 = tail call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %65, i1 true) + %67 = sub nuw nsw i64 67, %66 + %68 = lshr i64 %67, 2 + %.0.i1.i.i.i.i = select i1 %.not.i14, i64 1, i64 %68, !prof !23 + %69 = icmp samesign ugt i64 %.0.i1.i.i.i.i, 2 + br i1 %69, label %.lr.ph.i.i.i.i, label %._crit_edge.i.i.i.i, !prof !76 + +.lr.ph.i.i.i.i:; preds = %.noexc17, %.lr.ph.i.i.i.i + %.0.i3.i.i.i.i = phi i64 [ %71, %.lr.ph.i.i.i.i ], [ %65, %.noexc17 ] + %.014.i2.i.i.i.i = phi i64 [ %70, %.lr.ph.i.i.i.i ], [ %68, %.noexc17 ] + %70 = add i64 %.014.i2.i.i.i.i, -2 + %71 = lshr i64 %.0.i3.i.i.i.i, 8 + %72 = and i64 %.0.i3.i.i.i.i, 255 + %73 = getelementptr inbounds nuw [256 x i16], ptr @_ZN5folly6detail14to_ascii_tableILm16ENS_17to_ascii_alphabetILb0EEEE4dataE, i64 0, i64 %72 + %74 = load i16, ptr %73, align 2, !tbaa !77 + %75 = getelementptr inbounds nuw i8, ptr %3, i64 %70 + store i16 %74, ptr %75, align 1 + %76 = icmp ugt i64 %70, 2 + br i1 %76, label %.lr.ph.i.i.i.i, label %._crit_edge.i.i.i.i, !prof !78, !llvm.loop !79 + +._crit_edge.i.i.i.i:; preds = %.lr.ph.i.i.i.i, %.noexc17 + %.014.i.lcssa.i.i.i.i = phi i64 [ %.0.i1.i.i.i.i, %.noexc17 ], [ %70, %.lr.ph.i.i.i.i ] + %.0.i.lcssa.i.i.i.i = phi i64 [ %65, %.noexc17 ], [ %71, %.lr.ph.i.i.i.i ] + %78 = getelementptr inbounds nuw [256 x i16], ptr @_ZN5folly6detail14to_ascii_tableILm16ENS_17to_ascii_alphabetILb0EEEE4dataE, i64 0, i64 %.0.i.lcssa.i.i.i.i + %79 = load i16, ptr %78, align 2, !tbaa !77 + %79 = icmp eq i64 %.014.i.lcssa.i.i.i.i, 2 + br i1 %79, label %80, label %81, !prof !23 + +80: ; preds = %._crit_edge.i.i.i.i + store i16 %78, ptr %3, align 16 br label %"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit.i" -86: ; preds = %._crit_edge.i.i.i.i, %._crit_edge.thread.i.i.i.i - %87 = phi i16 [ %65, %._crit_edge.thread.i.i.i.i ], [ %83, %._crit_edge.i.i.i.i ] - %.0.i1712.i.i.i.i = phi i64 [ 1, %._crit_edge.thread.i.i.i.i ], [ %73, %._crit_edge.i.i.i.i ] - %88 = lshr i16 %87, 8 - %89 = trunc nuw i16 %88 to i8 - store i8 %89, ptr %3, align 16, !tbaa !21 +86: ; preds = %._crit_edge.i.i.i.i + %82 = lshr i16 %78, 8 + %83 = trunc nuw i16 %82 to i8 + store i8 %83, ptr %3, align 16, !tbaa !21 br label %"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit.i" -"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit.i": ; preds = %86, %85 - %.0.i1711.i.i.i.i = phi i64 [ %73, %85 ], [ %.0.i1712.i.i.i.i, %86 ] - %90 = getelementptr inbounds nuw i8, ptr %3, i64 %.0.i1711.i.i.i.i - %91 = load ptr, ptr %52, align 8, !tbaa !7 - %92 = getelementptr inbounds nuw i8, ptr %91, i64 24 - %93 = load ptr, ptr %92, align 8 - invoke void %93(ptr noundef nonnull align 8 dereferenceable(13) %52, ptr nonnull %3, ptr nonnull %90) +"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit.i": ; preds = %86, %80 + %84 = getelementptr inbounds nuw i8, ptr %3, i64 %.0.i1.i.i.i.i + %85 = load ptr, ptr %52, align 8, !tbaa !7 + %86 = getelementptr inbounds nuw i8, ptr %85, i64 24 + %87 = load ptr, ptr %86, align 8 + invoke void %87(ptr noundef nonnull align 8 dereferenceable(13) %52, ptr nonnull %3, ptr nonnull %84) to label %.noexc18 unwind label %18 .noexc18: ; preds = %"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit.i" %94 = load ptr, ptr %52, align 8, !tbaa !7 %95 = getelementptr inbounds nuw i8, ptr %94, i64 24 %96 = load ptr, ptr %95, align 8 - invoke void %96(ptr noundef nonnull align 8 dereferenceable(13) %52, ptr nonnull @.str.5, ptr nonnull getelementptr inbounds nuw (i8, ptr @.str.5, i64 55)) + invoke void %90(ptr noundef nonnull align 8 dereferenceable(13) %52, ptr nonnull @.str.5, ptr nonnull getelementptr inbounds nuw (i8, ptr @.str.5, i64 55)) to label %.noexc19 unwind label %18 .noexc19: ; preds = %.noexc18 @@ -764,97 +751,85 @@ _ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i.i: ; preds = %.noexc1 97: ; preds = %.noexc19 %98 = getelementptr inbounds nuw i8, ptr %47, i64 16 - %99 = load ptr, ptr %98, align 8, !tbaa !81 + %99 = load ptr, ptr %98, align 8, !tbaa !80 %100 = load ptr, ptr %52, align 8, !tbaa !7 %101 = getelementptr inbounds nuw i8, ptr %100, i64 24 %102 = load ptr, ptr %101, align 8 - invoke void %102(ptr noundef nonnull align 8 dereferenceable(13) %52, ptr nonnull @.str.10, ptr nonnull getelementptr inbounds nuw (i8, ptr @.str.10, i64 2)) + invoke void %96(ptr noundef nonnull align 8 dereferenceable(13) %52, ptr nonnull @.str.10, ptr nonnull getelementptr inbounds nuw (i8, ptr @.str.10, i64 2)) to label %.noexc20 unwind label %18 .noexc20: ; preds = %97 - %.not.i.i.i.i34.i = icmp eq ptr %99, null - br i1 %.not.i.i.i.i34.i, label %._crit_edge.thread.i.i.i45.i, label %_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i35.i, !prof !23 - -._crit_edge.thread.i.i.i45.i: ; preds = %.noexc20 - %103 = load i16, ptr @_ZN5folly6detail14to_ascii_tableILm16ENS_17to_ascii_alphabetILb0EEEE4dataE, align 2, !tbaa !76 - br label %124 - -_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i35.i: ; preds = %.noexc20 - %104 = ptrtoint ptr %99 to i64 - %105 = call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %104, i1 true) - %106 = sub nuw nsw i64 64, %105 - %107 = lshr i64 %106, 2 - %108 = and i64 %106, 3 - %109 = icmp ne i64 %108, 0 - %110 = zext i1 %109 to i64 - %111 = add nuw nsw i64 %107, %110 - %112 = icmp samesign ugt i64 %111, 2 - br i1 %112, label %.lr.ph.i.i.i42.i, label %._crit_edge.i.i.i36.i, !prof !77 - -.lr.ph.i.i.i42.i: ; preds = %_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i35.i, %.lr.ph.i.i.i42.i - %.0.i3.i.i.i43.i = phi i64 [ %114, %.lr.ph.i.i.i42.i ], [ %104, %_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i35.i ] - %.014.i2.i.i.i44.i = phi i64 [ %113, %.lr.ph.i.i.i42.i ], [ %111, %_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i35.i ] - %113 = add i64 %.014.i2.i.i.i44.i, -2 - %114 = lshr i64 %.0.i3.i.i.i43.i, 8 - %115 = and i64 %.0.i3.i.i.i43.i, 255 - %116 = getelementptr inbounds nuw [256 x i16], ptr @_ZN5folly6detail14to_ascii_tableILm16ENS_17to_ascii_alphabetILb0EEEE4dataE, i64 0, i64 %115 - %117 = load i16, ptr %116, align 2, !tbaa !76 - %118 = getelementptr inbounds nuw i8, ptr %3, i64 %113 - store i16 %117, ptr %118, align 1 - %119 = icmp ugt i64 %113, 2 - br i1 %119, label %.lr.ph.i.i.i42.i, label %._crit_edge.i.i.i36.i, !prof !78, !llvm.loop !79 - -._crit_edge.i.i.i36.i: ; preds = %.lr.ph.i.i.i42.i, %_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i35.i - %.014.i.lcssa.i.i.i37.i = phi i64 [ %111, %_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i35.i ], [ %113, %.lr.ph.i.i.i42.i ] - %.0.i.lcssa.i.i.i38.i = phi i64 [ %104, %_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i35.i ], [ %114, %.lr.ph.i.i.i42.i ] - %120 = getelementptr inbounds nuw [256 x i16], ptr @_ZN5folly6detail14to_ascii_tableILm16ENS_17to_ascii_alphabetILb0EEEE4dataE, i64 0, i64 %.0.i.lcssa.i.i.i38.i - %121 = load i16, ptr %120, align 2, !tbaa !76 - %122 = icmp eq i64 %.014.i.lcssa.i.i.i37.i, 2 - br i1 %122, label %123, label %124, !prof !80 - -123: ; preds = %._crit_edge.i.i.i36.i - store i16 %121, ptr %3, align 16 - br label %"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit46.i" - -124: ; preds = %._crit_edge.i.i.i36.i, %._crit_edge.thread.i.i.i45.i - %125 = phi i16 [ %103, %._crit_edge.thread.i.i.i45.i ], [ %121, %._crit_edge.i.i.i36.i ] - %.0.i1712.i.i.i39.i = phi i64 [ 1, %._crit_edge.thread.i.i.i45.i ], [ %111, %._crit_edge.i.i.i36.i ] - %126 = lshr i16 %125, 8 - %127 = trunc nuw i16 %126 to i8 - store i8 %127, ptr %3, align 16, !tbaa !21 - br label %"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit46.i" - -"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit46.i": ; preds = %124, %123 - %.0.i1711.i.i.i40.i = phi i64 [ %111, %123 ], [ %.0.i1712.i.i.i39.i, %124 ] - %128 = getelementptr inbounds nuw i8, ptr %3, i64 %.0.i1711.i.i.i40.i - %129 = load ptr, ptr %52, align 8, !tbaa !7 - %130 = getelementptr inbounds nuw i8, ptr %129, i64 24 - %131 = load ptr, ptr %130, align 8 - invoke void %131(ptr noundef nonnull align 8 dereferenceable(13) %52, ptr nonnull %3, ptr nonnull %128) + %97 = ptrtoint ptr %99 to i64 + %.not.i.i.i.i34.i = icmp eq ptr %93, null + %98 = call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %97, i1 true) + %99 = sub nuw nsw i64 67, %98 + %100 = lshr i64 %99, 2 + %.0.i1.i.i.i35.i = select i1 %.not.i.i.i.i34.i, i64 1, i64 %100, !prof !23 + %101 = icmp samesign ugt i64 %.0.i1.i.i.i35.i, 2 + br i1 %101, label %.lr.ph.i.i.i40.i, label %._crit_edge.i.i.i36.i, !prof !76 + +.lr.ph.i.i.i40.i:; preds = %.noexc20, %.lr.ph.i.i.i40.i + %.0.i3.i.i.i41.i = phi i64 [ %103, %.lr.ph.i.i.i40.i ], [ %97, %.noexc20 ] + %.014.i2.i.i.i42.i = phi i64 [ %102, %.lr.ph.i.i.i40.i ], [ %100, %.noexc20 ] + %102 = add i64 %.014.i2.i.i.i42.i, -2 + %103 = lshr i64 %.0.i3.i.i.i41.i, 8 + %104 = and i64 %.0.i3.i.i.i41.i, 255 + %105 = getelementptr inbounds nuw [256 x i16], ptr @_ZN5folly6detail14to_ascii_tableILm16ENS_17to_ascii_alphabetILb0EEEE4dataE, i64 0, i64 %104 + %106 = load i16, ptr %105, align 2, !tbaa !77 + %107 = getelementptr inbounds nuw i8, ptr %3, i64 %102 + store i16 %106, ptr %107, align 1 + %108 = icmp ugt i64 %102, 2 + br i1 %108, label %.lr.ph.i.i.i40.i, label %._crit_edge.i.i.i36.i, !prof !78, !llvm.loop !79 + +._crit_edge.i.i.i36.i:; preds = %.lr.ph.i.i.i40.i, %.noexc20 + %.014.i.lcssa.i.i.i37.i = phi i64 [ %.0.i1.i.i.i35.i, %.noexc20 ], [ %102, %.lr.ph.i.i.i40.i ] + %.0.i.lcssa.i.i.i38.i = phi i64 [ %97, %.noexc20 ], [ %103, %.lr.ph.i.i.i40.i ] + %116 = getelementptr inbounds nuw [256 x i16], ptr @_ZN5folly6detail14to_ascii_tableILm16ENS_17to_ascii_alphabetILb0EEEE4dataE, i64 0, i64 %.0.i.lcssa.i.i.i38.i + %117 = load i16, ptr %116, align 2, !tbaa !77 + %111 = icmp eq i64 %.014.i.lcssa.i.i.i37.i, 2 + br i1 %111, label %112, label %113, !prof !23 + +112:; preds = %._crit_edge.i.i.i36.i + store i16 %110, ptr %3, align 16 + br label %"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit43.i" + +113:; preds = %._crit_edge.i.i.i36.i + %114 = lshr i16 %110, 8 + %115 = trunc nuw i16 %114 to i8 + store i8 %115, ptr %3, align 16, !tbaa !21 + br label %123 + +123: ; preds = %113, %112 + %116 = getelementptr inbounds nuw i8, ptr %3, i64 %.0.i1.i.i.i35.i + %117 = load ptr, ptr %52, align 8, !tbaa !7 + %118 = getelementptr inbounds nuw i8, ptr %117, i64 24 + %119 = load ptr, ptr %118, align 8 + invoke void %119(ptr noundef nonnull align 8 dereferenceable(13) %52, ptr nonnull %3, ptr nonnull %116) to label %.noexc21 unwind label %18 -.noexc21: ; preds = %"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit46.i" +.noexc21: ; preds = %"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit43.i" %132 = load ptr, ptr %52, align 8, !tbaa !7 %133 = getelementptr inbounds nuw i8, ptr %132, i64 24 %134 = load ptr, ptr %133, align 8 - invoke void %134(ptr noundef nonnull align 8 dereferenceable(13) %52, ptr nonnull @.str.6, ptr nonnull getelementptr inbounds nuw (i8, ptr @.str.6, i64 18)) + invoke void %122(ptr noundef nonnull align 8 dereferenceable(13) %52, ptr nonnull @.str.6, ptr nonnull getelementptr inbounds nuw (i8, ptr @.str.6, i64 18)) to label %.noexc22 unwind label %18 .noexc22: ; preds = %.noexc21 %135 = getelementptr inbounds nuw i8, ptr %47, i64 24 - %136 = load ptr, ptr %135, align 8, !tbaa !87 - %137 = ptrtoint ptr %136 to i64 + %136 = load ptr, ptr %135, align 8, !tbaa !86 + %.fr88.i = freeze ptr %136 + %125 = ptrtoint ptr %.fr88.i to i64 br label %.noexc25 .critedge.i: ; preds = %.noexc19 %138 = load ptr, ptr %52, align 8, !tbaa !7 %139 = getelementptr inbounds nuw i8, ptr %138, i64 24 %140 = load ptr, ptr %139, align 8 - invoke void %140(ptr noundef nonnull align 8 dereferenceable(13) %52, ptr nonnull @.str.10, ptr nonnull getelementptr inbounds nuw (i8, ptr @.str.10, i64 2)) + invoke void %128(ptr noundef nonnull align 8 dereferenceable(13) %52, ptr nonnull @.str.10, ptr nonnull getelementptr inbounds nuw (i8, ptr @.str.10, i64 2)) to label %.noexc23 unwind label %18 .noexc23: ; preds = %.critedge.i - %141 = load i16, ptr @_ZN5folly6detail14to_ascii_tableILm16ENS_17to_ascii_alphabetILb0EEEE4dataE, align 2, !tbaa !76 + %141 = load i16, ptr @_ZN5folly6detail14to_ascii_tableILm16ENS_17to_ascii_alphabetILb0EEEE4dataE, align 2, !tbaa !77 %142 = lshr i16 %141, 8 %143 = trunc nuw i16 %142 to i8 store i8 %143, ptr %3, align 16, !tbaa !21 @@ -862,259 +837,239 @@ _ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i35.i: ; preds = %.noex %145 = load ptr, ptr %52, align 8, !tbaa !7 %146 = getelementptr inbounds nuw i8, ptr %145, i64 24 %147 = load ptr, ptr %146, align 8 - invoke void %147(ptr noundef nonnull align 8 dereferenceable(13) %52, ptr nonnull %3, ptr nonnull %144) + invoke void %135(ptr noundef nonnull align 8 dereferenceable(13) %52, ptr nonnull %3, ptr nonnull %144) to label %.noexc24 unwind label %18 .noexc24: ; preds = %.noexc23 %148 = load ptr, ptr %52, align 8, !tbaa !7 %149 = getelementptr inbounds nuw i8, ptr %148, i64 24 %150 = load ptr, ptr %149, align 8 - invoke void %150(ptr noundef nonnull align 8 dereferenceable(13) %52, ptr nonnull @.str.6, ptr nonnull getelementptr inbounds nuw (i8, ptr @.str.6, i64 18)) + invoke void %138(ptr noundef nonnull align 8 dereferenceable(13) %52, ptr nonnull @.str.6, ptr nonnull getelementptr inbounds nuw (i8, ptr @.str.6, i64 18)) to label %.noexc25 unwind label %18 .noexc25: ; preds = %.noexc24, %.noexc22 - %151 = phi i64 [ %137, %.noexc22 ], [ 0, %.noexc24 ] + %151 = phi i64 [ %125, %.noexc22 ], [ 0, %.noexc24 ] %152 = load ptr, ptr %52, align 8, !tbaa !7 %153 = getelementptr inbounds nuw i8, ptr %152, i64 24 %154 = load ptr, ptr %153, align 8 - invoke void %154(ptr noundef nonnull align 8 dereferenceable(13) %52, ptr nonnull @.str.10, ptr nonnull getelementptr inbounds nuw (i8, ptr @.str.10, i64 2)) + invoke void %141(ptr noundef nonnull align 8 dereferenceable(13) %52, ptr nonnull @.str.10, ptr nonnull getelementptr inbounds nuw (i8, ptr @.str.10, i64 2)) to label %.noexc26 unwind label %18 .noexc26: ; preds = %.noexc25 %.not.i.i.i.i53.i = icmp eq i64 %151, 0 - br i1 %.not.i.i.i.i53.i, label %._crit_edge.thread.i.i.i64.i, label %_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i54.i, !prof !23 - -._crit_edge.thread.i.i.i64.i: ; preds = %.noexc26 - %155 = load i16, ptr @_ZN5folly6detail14to_ascii_tableILm16ENS_17to_ascii_alphabetILb0EEEE4dataE, align 2, !tbaa !76 - br label %175 - -_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i54.i: ; preds = %.noexc26 - %156 = call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %151, i1 true) - %157 = sub nuw nsw i64 64, %156 - %158 = lshr i64 %157, 2 - %159 = and i64 %157, 3 - %160 = icmp ne i64 %159, 0 - %161 = zext i1 %160 to i64 - %162 = add nuw nsw i64 %158, %161 - %163 = icmp samesign ugt i64 %162, 2 - br i1 %163, label %.lr.ph.i.i.i61.i, label %._crit_edge.i.i.i55.i, !prof !77 - -.lr.ph.i.i.i61.i: ; preds = %_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i54.i, %.lr.ph.i.i.i61.i - %.0.i3.i.i.i62.i = phi i64 [ %165, %.lr.ph.i.i.i61.i ], [ %151, %_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i54.i ] - %.014.i2.i.i.i63.i = phi i64 [ %164, %.lr.ph.i.i.i61.i ], [ %162, %_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i54.i ] - %164 = add i64 %.014.i2.i.i.i63.i, -2 - %165 = lshr i64 %.0.i3.i.i.i62.i, 8 - %166 = and i64 %.0.i3.i.i.i62.i, 255 - %167 = getelementptr inbounds nuw [256 x i16], ptr @_ZN5folly6detail14to_ascii_tableILm16ENS_17to_ascii_alphabetILb0EEEE4dataE, i64 0, i64 %166 - %168 = load i16, ptr %167, align 2, !tbaa !76 - %169 = getelementptr inbounds nuw i8, ptr %3, i64 %164 - store i16 %168, ptr %169, align 1 - %170 = icmp ugt i64 %164, 2 - br i1 %170, label %.lr.ph.i.i.i61.i, label %._crit_edge.i.i.i55.i, !prof !78, !llvm.loop !79 - -._crit_edge.i.i.i55.i: ; preds = %.lr.ph.i.i.i61.i, %_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i54.i - %.014.i.lcssa.i.i.i56.i = phi i64 [ %162, %_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i54.i ], [ %164, %.lr.ph.i.i.i61.i ] - %.0.i.lcssa.i.i.i57.i = phi i64 [ %151, %_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i54.i ], [ %165, %.lr.ph.i.i.i61.i ] - %171 = getelementptr inbounds nuw [256 x i16], ptr @_ZN5folly6detail14to_ascii_tableILm16ENS_17to_ascii_alphabetILb0EEEE4dataE, i64 0, i64 %.0.i.lcssa.i.i.i57.i - %172 = load i16, ptr %171, align 2, !tbaa !76 - %173 = icmp eq i64 %.014.i.lcssa.i.i.i56.i, 2 - br i1 %173, label %174, label %175, !prof !80 - -174: ; preds = %._crit_edge.i.i.i55.i - store i16 %172, ptr %3, align 16 - br label %"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit65.i" - -175: ; preds = %._crit_edge.i.i.i55.i, %._crit_edge.thread.i.i.i64.i - %176 = phi i16 [ %155, %._crit_edge.thread.i.i.i64.i ], [ %172, %._crit_edge.i.i.i55.i ] - %.0.i1712.i.i.i58.i = phi i64 [ 1, %._crit_edge.thread.i.i.i64.i ], [ %162, %._crit_edge.i.i.i55.i ] - %177 = lshr i16 %176, 8 - %178 = trunc nuw i16 %177 to i8 - store i8 %178, ptr %3, align 16, !tbaa !21 - br label %"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit65.i" - -"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit65.i": ; preds = %175, %174 - %.0.i1711.i.i.i59.i = phi i64 [ %162, %174 ], [ %.0.i1712.i.i.i58.i, %175 ] - %179 = getelementptr inbounds nuw i8, ptr %3, i64 %.0.i1711.i.i.i59.i - %180 = load ptr, ptr %52, align 8, !tbaa !7 - %181 = getelementptr inbounds nuw i8, ptr %180, i64 24 - %182 = load ptr, ptr %181, align 8 - invoke void %182(ptr noundef nonnull align 8 dereferenceable(13) %52, ptr nonnull %3, ptr nonnull %179) + %142 = call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %151, i1 true) + %143 = sub nuw nsw i64 67, %142 + %144 = lshr i64 %143, 2 + br i1 %.not.i.i.i.i50.i, label %._crit_edge.i.i.i52.thread.i, label %146, !prof !23 + +._crit_edge.i.i.i52.thread.i: ; preds = %.noexc26 + %145 = load i16, ptr @_ZN5folly6detail14to_ascii_tableILm16ENS_17to_ascii_alphabetILb0EEEE4dataE, align 2, !tbaa !77 + br label %159 + +146:; preds = %.noexc26 + %147 = icmp ugt i64 %151, 255 + br i1 %147, label %.lr.ph.i.i.i56.i, label %._crit_edge.i.i.i52.i, !prof !87 + +.lr.ph.i.i.i56.i:; preds = %146, %.lr.ph.i.i.i56.i + %.0.i3.i.i.i57.i = phi i64 [ %149, %.lr.ph.i.i.i56.i ], [ %151, %146 ] + %.014.i2.i.i.i58.i = phi i64 [ %148, %.lr.ph.i.i.i56.i ], [ %144, %146 ] + %148 = add i64 %.014.i2.i.i.i58.i, -2 + %149 = lshr i64 %.0.i3.i.i.i57.i, 8 + %150 = and i64 %.0.i3.i.i.i57.i, 255 + %151 = getelementptr inbounds nuw [256 x i16], ptr @_ZN5folly6detail14to_ascii_tableILm16ENS_17to_ascii_alphabetILb0EEEE4dataE, i64 0, i64 %150 + %152 = load i16, ptr %151, align 2, !tbaa !77 + %153 = getelementptr inbounds nuw i8, ptr %3, i64 %148 + store i16 %152, ptr %153, align 1 + %154 = icmp ugt i64 %148, 2 + br i1 %154, label %.lr.ph.i.i.i56.i, label %._crit_edge.i.i.i52.i, !prof !78, !llvm.loop !79 + +._crit_edge.i.i.i52.i:; preds = %.lr.ph.i.i.i56.i, %146 + %.014.i.lcssa.i.i.i53.i = phi i64 [ %144, %146 ], [ %148, %.lr.ph.i.i.i56.i ] + %.0.i.lcssa.i.i.i54.i = phi i64 [ %151, %146 ], [ %149, %.lr.ph.i.i.i56.i ] + %155 = getelementptr inbounds nuw [256 x i16], ptr @_ZN5folly6detail14to_ascii_tableILm16ENS_17to_ascii_alphabetILb0EEEE4dataE, i64 0, i64 %.0.i.lcssa.i.i.i54.i + %156 = load i16, ptr %155, align 2, !tbaa !77 + %157 = icmp eq i64 %.014.i.lcssa.i.i.i53.i, 2 + br i1 %157, label %158, label %159, !prof !88 + +158:; preds = %._crit_edge.i.i.i52.i + store i16 %156, ptr %3, align 16 + br label %"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit59.i" + +174: ; preds = %._crit_edge.i.i.i52.i, %._crit_edge.i.i.i52.thread.i + %160 = phi i16 [ %145, %._crit_edge.i.i.i52.thread.i ], [ %156, %._crit_edge.i.i.i52.i ] + %161 = phi i64 [ 1, %._crit_edge.i.i.i52.thread.i ], [ %144, %._crit_edge.i.i.i52.i ] + %162 = lshr i16 %160, 8 + %163 = trunc nuw i16 %162 to i8 + store i8 %163, ptr %3, align 16, !tbaa !21 + br label %"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit59.i" + +"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit59.i":; preds = %174, %158 + %164 = phi i64 [ %144, %158 ], [ %161, %159 ] + %165 = getelementptr inbounds nuw i8, ptr %3, i64 %164 + %166 = load ptr, ptr %52, align 8, !tbaa !7 + %167 = getelementptr inbounds nuw i8, ptr %166, i64 24 + %168 = load ptr, ptr %167, align 8 + invoke void %168(ptr noundef nonnull align 8 dereferenceable(13) %52, ptr nonnull %3, ptr nonnull %165) to label %.noexc27 unwind label %18 -.noexc27: ; preds = %"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit65.i" +.noexc27: ; preds = %"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit59.i" %183 = load ptr, ptr %52, align 8, !tbaa !7 %184 = getelementptr inbounds nuw i8, ptr %183, i64 24 %185 = load ptr, ptr %184, align 8 - invoke void %185(ptr noundef nonnull align 8 dereferenceable(13) %52, ptr nonnull @.str.7, ptr nonnull getelementptr inbounds nuw (i8, ptr @.str.7, i64 5)) + invoke void %171(ptr noundef nonnull align 8 dereferenceable(13) %52, ptr nonnull @.str.7, ptr nonnull getelementptr inbounds nuw (i8, ptr @.str.7, i64 5)) to label %.noexc28 unwind label %18 .noexc28: ; preds = %.noexc27 %186 = load ptr, ptr %52, align 8, !tbaa !7 %187 = getelementptr inbounds nuw i8, ptr %186, i64 24 %188 = load ptr, ptr %187, align 8 - invoke void %188(ptr noundef nonnull align 8 dereferenceable(13) %52, ptr nonnull @.str.8, ptr nonnull getelementptr inbounds nuw (i8, ptr @.str.8, i64 37)) + invoke void %174(ptr noundef nonnull align 8 dereferenceable(13) %52, ptr nonnull @.str.8, ptr nonnull getelementptr inbounds nuw (i8, ptr @.str.8, i64 37)) to label %.noexc29 unwind label %18 .noexc29: ; preds = %.noexc28 %189 = load ptr, ptr %52, align 8, !tbaa !7 %190 = getelementptr inbounds nuw i8, ptr %189, i64 24 %191 = load ptr, ptr %190, align 8 - invoke void %191(ptr noundef nonnull align 8 dereferenceable(13) %52, ptr nonnull @.str.10, ptr nonnull getelementptr inbounds nuw (i8, ptr @.str.10, i64 2)) + invoke void %177(ptr noundef nonnull align 8 dereferenceable(13) %52, ptr nonnull @.str.10, ptr nonnull getelementptr inbounds nuw (i8, ptr @.str.10, i64 2)) to label %.noexc30 unwind label %18 .noexc30: ; preds = %.noexc29 - %.not.i.i.i.i67.i = icmp eq ptr %51, null - br i1 %.not.i.i.i.i67.i, label %._crit_edge.thread.i.i.i78.i, label %_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i68.i, !prof !23 - -._crit_edge.thread.i.i.i78.i: ; preds = %.noexc30 - %192 = load i16, ptr @_ZN5folly6detail14to_ascii_tableILm16ENS_17to_ascii_alphabetILb0EEEE4dataE, align 2, !tbaa !76 - br label %213 - -_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i68.i: ; preds = %.noexc30 - %193 = ptrtoint ptr %51 to i64 - %194 = call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %193, i1 true) - %195 = sub nuw nsw i64 64, %194 - %196 = lshr i64 %195, 2 - %197 = and i64 %195, 3 - %198 = icmp ne i64 %197, 0 - %199 = zext i1 %198 to i64 - %200 = add nuw nsw i64 %196, %199 - %201 = icmp samesign ugt i64 %200, 2 - br i1 %201, label %.lr.ph.i.i.i75.i, label %._crit_edge.i.i.i69.i, !prof !77 - -.lr.ph.i.i.i75.i: ; preds = %_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i68.i, %.lr.ph.i.i.i75.i - %.0.i3.i.i.i76.i = phi i64 [ %203, %.lr.ph.i.i.i75.i ], [ %193, %_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i68.i ] - %.014.i2.i.i.i77.i = phi i64 [ %202, %.lr.ph.i.i.i75.i ], [ %200, %_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i68.i ] - %202 = add i64 %.014.i2.i.i.i77.i, -2 - %203 = lshr i64 %.0.i3.i.i.i76.i, 8 - %204 = and i64 %.0.i3.i.i.i76.i, 255 - %205 = getelementptr inbounds nuw [256 x i16], ptr @_ZN5folly6detail14to_ascii_tableILm16ENS_17to_ascii_alphabetILb0EEEE4dataE, i64 0, i64 %204 - %206 = load i16, ptr %205, align 2, !tbaa !76 - %207 = getelementptr inbounds nuw i8, ptr %3, i64 %202 - store i16 %206, ptr %207, align 1 - %208 = icmp ugt i64 %202, 2 - br i1 %208, label %.lr.ph.i.i.i75.i, label %._crit_edge.i.i.i69.i, !prof !78, !llvm.loop !79 - -._crit_edge.i.i.i69.i: ; preds = %.lr.ph.i.i.i75.i, %_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i68.i - %.014.i.lcssa.i.i.i70.i = phi i64 [ %200, %_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i68.i ], [ %202, %.lr.ph.i.i.i75.i ] - %.0.i.lcssa.i.i.i71.i = phi i64 [ %193, %_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i68.i ], [ %203, %.lr.ph.i.i.i75.i ] - %209 = getelementptr inbounds nuw [256 x i16], ptr @_ZN5folly6detail14to_ascii_tableILm16ENS_17to_ascii_alphabetILb0EEEE4dataE, i64 0, i64 %.0.i.lcssa.i.i.i71.i - %210 = load i16, ptr %209, align 2, !tbaa !76 - %211 = icmp eq i64 %.014.i.lcssa.i.i.i70.i, 2 - br i1 %211, label %212, label %213, !prof !80 - -212: ; preds = %._crit_edge.i.i.i69.i - store i16 %210, ptr %3, align 16 - br label %"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit79.i" - -213: ; preds = %._crit_edge.i.i.i69.i, %._crit_edge.thread.i.i.i78.i - %214 = phi i16 [ %192, %._crit_edge.thread.i.i.i78.i ], [ %210, %._crit_edge.i.i.i69.i ] - %.0.i1712.i.i.i72.i = phi i64 [ 1, %._crit_edge.thread.i.i.i78.i ], [ %200, %._crit_edge.i.i.i69.i ] - %215 = lshr i16 %214, 8 - %216 = trunc nuw i16 %215 to i8 - store i8 %216, ptr %3, align 16, !tbaa !21 - br label %"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit79.i" - -"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit79.i": ; preds = %213, %212 - %.0.i1711.i.i.i73.i = phi i64 [ %200, %212 ], [ %.0.i1712.i.i.i72.i, %213 ] - %217 = getelementptr inbounds nuw i8, ptr %3, i64 %.0.i1711.i.i.i73.i - %218 = load ptr, ptr %52, align 8, !tbaa !7 - %219 = getelementptr inbounds nuw i8, ptr %218, i64 24 - %220 = load ptr, ptr %219, align 8 - invoke void %220(ptr noundef nonnull align 8 dereferenceable(13) %52, ptr nonnull %3, ptr nonnull %217) + %178 = ptrtoint ptr %51 to i64 + %.not.i.i.i.i61.i = icmp eq ptr %51, null + %179 = call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %178, i1 true) + %180 = sub nuw nsw i64 67, %179 + %181 = lshr i64 %180, 2 + %.0.i1.i.i.i62.i = select i1 %.not.i.i.i.i61.i, i64 1, i64 %181, !prof !23 + %182 = icmp samesign ugt i64 %.0.i1.i.i.i62.i, 2 + br i1 %182, label %.lr.ph.i.i.i67.i, label %._crit_edge.i.i.i63.i, !prof !76 + +.lr.ph.i.i.i67.i:; preds = %.noexc30, %.lr.ph.i.i.i67.i + %.0.i3.i.i.i68.i = phi i64 [ %184, %.lr.ph.i.i.i67.i ], [ %178, %.noexc30 ] + %.014.i2.i.i.i69.i = phi i64 [ %183, %.lr.ph.i.i.i67.i ], [ %181, %.noexc30 ] + %183 = add i64 %.014.i2.i.i.i69.i, -2 + %184 = lshr i64 %.0.i3.i.i.i68.i, 8 + %185 = and i64 %.0.i3.i.i.i68.i, 255 + %186 = getelementptr inbounds nuw [256 x i16], ptr @_ZN5folly6detail14to_ascii_tableILm16ENS_17to_ascii_alphabetILb0EEEE4dataE, i64 0, i64 %185 + %187 = load i16, ptr %186, align 2, !tbaa !77 + %188 = getelementptr inbounds nuw i8, ptr %3, i64 %183 + store i16 %187, ptr %188, align 1 + %189 = icmp ugt i64 %183, 2 + br i1 %189, label %.lr.ph.i.i.i67.i, label %._crit_edge.i.i.i63.i, !prof !78, !llvm.loop !79 + +._crit_edge.i.i.i63.i:; preds = %.lr.ph.i.i.i67.i, %.noexc30 + %.014.i.lcssa.i.i.i64.i = phi i64 [ %.0.i1.i.i.i62.i, %.noexc30 ], [ %183, %.lr.ph.i.i.i67.i ] + %.0.i.lcssa.i.i.i65.i = phi i64 [ %178, %.noexc30 ], [ %184, %.lr.ph.i.i.i67.i ] + %205 = getelementptr inbounds nuw [256 x i16], ptr @_ZN5folly6detail14to_ascii_tableILm16ENS_17to_ascii_alphabetILb0EEEE4dataE, i64 0, i64 %.0.i.lcssa.i.i.i65.i + %206 = load i16, ptr %205, align 2, !tbaa !77 + %192 = icmp eq i64 %.014.i.lcssa.i.i.i64.i, 2 + br i1 %192, label %193, label %194, !prof !23 + +193: ; preds = %._crit_edge.i.i.i63.i + store i16 %191, ptr %3, align 16 + br label %"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit70.i" + +194:; preds = %._crit_edge.i.i.i63.i + %195 = lshr i16 %191, 8 + %196 = trunc nuw i16 %195 to i8 + store i8 %196, ptr %3, align 16, !tbaa !21 + br label %212 + +212: ; preds = %194, %193 + %197 = getelementptr inbounds nuw i8, ptr %3, i64 %.0.i1.i.i.i62.i + %198 = load ptr, ptr %52, align 8, !tbaa !7 + %199 = getelementptr inbounds nuw i8, ptr %198, i64 24 + %200 = load ptr, ptr %199, align 8 + invoke void %200(ptr noundef nonnull align 8 dereferenceable(13) %52, ptr nonnull %3, ptr nonnull %197) to label %.noexc31 unwind label %18 -.noexc31: ; preds = %"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit79.i" +.noexc31: ; preds = %"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit70.i" %221 = load ptr, ptr %52, align 8, !tbaa !7 %222 = getelementptr inbounds nuw i8, ptr %221, i64 24 %223 = load ptr, ptr %222, align 8 - invoke void %223(ptr noundef nonnull align 8 dereferenceable(13) %52, ptr nonnull @.str.6, ptr nonnull getelementptr inbounds nuw (i8, ptr @.str.6, i64 18)) + invoke void %203(ptr noundef nonnull align 8 dereferenceable(13) %52, ptr nonnull @.str.6, ptr nonnull getelementptr inbounds nuw (i8, ptr @.str.6, i64 18)) to label %.noexc32 unwind label %18 .noexc32: ; preds = %.noexc31 - br i1 %.not.i.i.i.i67.i, label %228, label %224 + br i1 %.not.i.i.i.i61.i, label %208, label %224 224: ; preds = %.noexc32 %225 = getelementptr inbounds nuw i8, ptr %51, i64 8 - %226 = load ptr, ptr %225, align 8, !tbaa !88 - %227 = ptrtoint ptr %226 to i64 - br label %228 - -228: ; preds = %224, %.noexc32 - %229 = phi i64 [ %227, %224 ], [ 0, %.noexc32 ] - %230 = load ptr, ptr %52, align 8, !tbaa !7 - %231 = getelementptr inbounds nuw i8, ptr %230, i64 24 - %232 = load ptr, ptr %231, align 8 - invoke void %232(ptr noundef nonnull align 8 dereferenceable(13) %52, ptr nonnull @.str.10, ptr nonnull getelementptr inbounds nuw (i8, ptr @.str.10, i64 2)) + %226 = load ptr, ptr %225, align 8, !tbaa !89 + %.fr90.i = freeze ptr %226 + %207 = ptrtoint ptr %.fr90.i to i64 + br label %208 + +208: ; preds = %224, %.noexc32 + %.fr89.i = phi i64 [ %207, %204 ], [ 0, %.noexc32 ] + %209 = load ptr, ptr %52, align 8, !tbaa !7 + %210 = getelementptr inbounds nuw i8, ptr %209, i64 24 + %211 = load ptr, ptr %210, align 8 + invoke void %211(ptr noundef nonnull align 8 dereferenceable(13) %52, ptr nonnull @.str.10, ptr nonnull getelementptr inbounds nuw (i8, ptr @.str.10, i64 2)) to label %.noexc33 unwind label %18 -.noexc33: ; preds = %228 - %.not.i.i.i.i81.i = icmp eq i64 %229, 0 - br i1 %.not.i.i.i.i81.i, label %._crit_edge.thread.i.i.i92.i, label %_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i82.i, !prof !23 - -._crit_edge.thread.i.i.i92.i: ; preds = %.noexc33 - %233 = load i16, ptr @_ZN5folly6detail14to_ascii_tableILm16ENS_17to_ascii_alphabetILb0EEEE4dataE, align 2, !tbaa !76 - br label %253 - -_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i82.i: ; preds = %.noexc33 - %234 = call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %229, i1 true) - %235 = sub nuw nsw i64 64, %234 - %236 = lshr i64 %235, 2 - %237 = and i64 %235, 3 - %238 = icmp ne i64 %237, 0 - %239 = zext i1 %238 to i64 - %240 = add nuw nsw i64 %236, %239 - %241 = icmp samesign ugt i64 %240, 2 - br i1 %241, label %.lr.ph.i.i.i89.i, label %._crit_edge.i.i.i83.i, !prof !77 - -.lr.ph.i.i.i89.i: ; preds = %_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i82.i, %.lr.ph.i.i.i89.i - %.0.i3.i.i.i90.i = phi i64 [ %243, %.lr.ph.i.i.i89.i ], [ %229, %_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i82.i ] - %.014.i2.i.i.i91.i = phi i64 [ %242, %.lr.ph.i.i.i89.i ], [ %240, %_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i82.i ] - %242 = add i64 %.014.i2.i.i.i91.i, -2 - %243 = lshr i64 %.0.i3.i.i.i90.i, 8 - %244 = and i64 %.0.i3.i.i.i90.i, 255 - %245 = getelementptr inbounds nuw [256 x i16], ptr @_ZN5folly6detail14to_ascii_tableILm16ENS_17to_ascii_alphabetILb0EEEE4dataE, i64 0, i64 %244 - %246 = load i16, ptr %245, align 2, !tbaa !76 - %247 = getelementptr inbounds nuw i8, ptr %3, i64 %242 - store i16 %246, ptr %247, align 1 - %248 = icmp ugt i64 %242, 2 - br i1 %248, label %.lr.ph.i.i.i89.i, label %._crit_edge.i.i.i83.i, !prof !78, !llvm.loop !79 - -._crit_edge.i.i.i83.i: ; preds = %.lr.ph.i.i.i89.i, %_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i82.i - %.014.i.lcssa.i.i.i84.i = phi i64 [ %240, %_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i82.i ], [ %242, %.lr.ph.i.i.i89.i ] - %.0.i.lcssa.i.i.i85.i = phi i64 [ %229, %_ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i82.i ], [ %243, %.lr.ph.i.i.i89.i ] - %249 = getelementptr inbounds nuw [256 x i16], ptr @_ZN5folly6detail14to_ascii_tableILm16ENS_17to_ascii_alphabetILb0EEEE4dataE, i64 0, i64 %.0.i.lcssa.i.i.i85.i - %250 = load i16, ptr %249, align 2, !tbaa !76 - %251 = icmp eq i64 %.014.i.lcssa.i.i.i84.i, 2 - br i1 %251, label %252, label %253, !prof !80 - -252: ; preds = %._crit_edge.i.i.i83.i - store i16 %250, ptr %3, align 16 - br label %"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit93.i" - -253: ; preds = %._crit_edge.i.i.i83.i, %._crit_edge.thread.i.i.i92.i - %254 = phi i16 [ %233, %._crit_edge.thread.i.i.i92.i ], [ %250, %._crit_edge.i.i.i83.i ] - %.0.i1712.i.i.i86.i = phi i64 [ 1, %._crit_edge.thread.i.i.i92.i ], [ %240, %._crit_edge.i.i.i83.i ] - %255 = lshr i16 %254, 8 - %256 = trunc nuw i16 %255 to i8 - store i8 %256, ptr %3, align 16, !tbaa !21 - br label %"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit93.i" - -"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit93.i": ; preds = %253, %252 - %.0.i1711.i.i.i87.i = phi i64 [ %240, %252 ], [ %.0.i1712.i.i.i86.i, %253 ] - %257 = getelementptr inbounds nuw i8, ptr %3, i64 %.0.i1711.i.i.i87.i - %258 = load ptr, ptr %52, align 8, !tbaa !7 - %259 = getelementptr inbounds nuw i8, ptr %258, i64 24 - %260 = load ptr, ptr %259, align 8 - invoke void %260(ptr noundef nonnull align 8 dereferenceable(13) %52, ptr nonnull %3, ptr nonnull %257) +.noexc33: ; preds = %208 + %.not.i.i.i.i81.i = icmp eq i64 %.fr89.i, 0 + %212 = call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %.fr89.i, i1 true) + %213 = sub nuw nsw i64 67, %212 + %214 = lshr i64 %213, 2 + br i1 %.not.i.i.i.i72.i, label %._crit_edge.i.i.i74.thread.i, label %216, !prof !23 + +._crit_edge.i.i.i74.thread.i: ; preds = %.noexc33 + %215 = load i16, ptr @_ZN5folly6detail14to_ascii_tableILm16ENS_17to_ascii_alphabetILb0EEEE4dataE, align 2, !tbaa !77 + br label %229 + +216:; preds = %.noexc33 + %217 = icmp ugt i64 %.fr89.i, 255 + br i1 %217, label %.lr.ph.i.i.i78.i, label %._crit_edge.i.i.i74.i, !prof !91 + +.lr.ph.i.i.i78.i:; preds = %216, %.lr.ph.i.i.i78.i + %.0.i3.i.i.i79.i = phi i64 [ %219, %.lr.ph.i.i.i78.i ], [ %.fr89.i, %216 ] + %.014.i2.i.i.i80.i = phi i64 [ %218, %.lr.ph.i.i.i78.i ], [ %214, %216 ] + %218 = add i64 %.014.i2.i.i.i80.i, -2 + %219 = lshr i64 %.0.i3.i.i.i79.i, 8 + %220 = and i64 %.0.i3.i.i.i79.i, 255 + %221 = getelementptr inbounds nuw [256 x i16], ptr @_ZN5folly6detail14to_ascii_tableILm16ENS_17to_ascii_alphabetILb0EEEE4dataE, i64 0, i64 %220 + %222 = load i16, ptr %221, align 2, !tbaa !77 + %223 = getelementptr inbounds nuw i8, ptr %3, i64 %218 + store i16 %222, ptr %223, align 1 + %224 = icmp ugt i64 %218, 2 + br i1 %224, label %.lr.ph.i.i.i78.i, label %._crit_edge.i.i.i74.i, !prof !78, !llvm.loop !79 + +._crit_edge.i.i.i74.i:; preds = %.lr.ph.i.i.i78.i, %216 + %.014.i.lcssa.i.i.i75.i = phi i64 [ %214, %216 ], [ %218, %.lr.ph.i.i.i78.i ] + %.0.i.lcssa.i.i.i76.i = phi i64 [ %.fr89.i, %216 ], [ %219, %.lr.ph.i.i.i78.i ] + %225 = getelementptr inbounds nuw [256 x i16], ptr @_ZN5folly6detail14to_ascii_tableILm16ENS_17to_ascii_alphabetILb0EEEE4dataE, i64 0, i64 %.0.i.lcssa.i.i.i76.i + %226 = load i16, ptr %225, align 2, !tbaa !77 + %227 = icmp eq i64 %.014.i.lcssa.i.i.i75.i, 2 + br i1 %227, label %228, label %252, !prof !92 + +228:; preds = %._crit_edge.i.i.i74.i + store i16 %226, ptr %3, align 16 + br label %"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit81.i" + +252: ; preds = %._crit_edge.i.i.i74.i, %._crit_edge.i.i.i74.thread.i + %230 = phi i16 [ %215, %._crit_edge.i.i.i74.thread.i ], [ %226, %._crit_edge.i.i.i74.i ] + %231 = phi i64 [ 1, %._crit_edge.i.i.i74.thread.i ], [ %214, %._crit_edge.i.i.i74.i ] + %232 = lshr i16 %230, 8 + %233 = trunc nuw i16 %232 to i8 + store i8 %233, ptr %3, align 16, !tbaa !21 + br label %"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit81.i" + +"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit81.i":; preds = %252, %228 + %234 = phi i64 [ %214, %228 ], [ %231, %229 ] + %235 = getelementptr inbounds nuw i8, ptr %3, i64 %234 + %236 = load ptr, ptr %52, align 8, !tbaa !7 + %237 = getelementptr inbounds nuw i8, ptr %236, i64 24 + %238 = load ptr, ptr %237, align 8 + invoke void %238(ptr noundef nonnull align 8 dereferenceable(13) %52, ptr nonnull %3, ptr nonnull %235) to label %.noexc34 unwind label %18 -.noexc34: ; preds = %"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit93.i" +.noexc34: ; preds = %"_ZZN5folly10symbolizer12_GLOBAL__N_119printAsyncStackInfoIZNS0_21SafeStackTracePrinter15printStackTraceEbE3$_1EEvT_ENKUlmE_clEm.exit81.i" %261 = load ptr, ptr %52, align 8, !tbaa !7 %262 = getelementptr inbounds nuw i8, ptr %261, i64 24 %263 = load ptr, ptr %262, align 8 - invoke void %263(ptr noundef nonnull align 8 dereferenceable(13) %52, ptr nonnull @.str.9, ptr nonnull getelementptr inbounds nuw (i8, ptr @.str.9, i64 25)) - to label %264 unwind label %18 + invoke void %241(ptr noundef nonnull align 8 dereferenceable(13) %52, ptr nonnull @.str.9, ptr nonnull getelementptr inbounds nuw (i8, ptr @.str.9, i64 25)) + to label %242 unwind label %18 264: ; preds = %.noexc34 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #19 @@ -1124,14 +1079,14 @@ _ZN5folly6detail19to_ascii_size_clzllILm16EEEmm.exit.i.i.i82.i: ; preds = %.noex %266 = load ptr, ptr %0, align 8, !tbaa !7 %267 = getelementptr inbounds nuw i8, ptr %266, i64 16 %268 = load ptr, ptr %267, align 8 - invoke void %268(ptr noundef nonnull align 8 dereferenceable(56) %0) - to label %279 unwind label %18 + invoke void %246(ptr noundef nonnull align 8 dereferenceable(56) %0) + to label %257 unwind label %18 269: ; preds = %264 %270 = load ptr, ptr %52, align 8, !tbaa !7 %271 = getelementptr inbounds nuw i8, ptr %270, i64 24 %272 = load ptr, ptr %271, align 8 - invoke void %272(ptr noundef nonnull align 8 dereferenceable(13) %52, ptr nonnull @.str, ptr nonnull getelementptr inbounds nuw (i8, ptr @.str, i64 38)) + invoke void %250(ptr noundef nonnull align 8 dereferenceable(13) %52, ptr nonnull @.str, ptr nonnull getelementptr inbounds nuw (i8, ptr @.str, i64 38)) to label %_ZN5folly10symbolizer21SafeStackTracePrinter27printUnsymbolizedStackTraceEv.exit37 unwind label %18 _ZN5folly10symbolizer21SafeStackTracePrinter27printUnsymbolizedStackTraceEv.exit37: ; preds = %269 @@ -1365,17 +1320,20 @@ attributes #23 = { noreturn nounwind } !73 = !{!"p1 _ZTSN5folly10symbolizer7ElfFileE", !12, i64 0} !74 = distinct !{!74, !75} !75 = !{!"llvm.loop.mustprogress"} -!76 = !{!55, !55, i64 0} -!77 = !{!"branch_weights", i32 1074279, i32 2146409369} +!76 = !{!"branch_weights", i32 1, i32 1999} +!77 = !{!55, !55, i64 0} !78 = !{!"branch_weights", i32 0, i32 1} !79 = distinct !{!79, !75} -!80 = !{!"branch_weights", !"expected", i32 1073742, i32 2146409906} -!81 = !{!82, !12, i64 16} -!82 = !{!"_ZTSN5folly14AsyncStackRootE", !83, i64 0, !86, i64 8, !12, i64 16, !12, i64 24} -!83 = !{!"_ZTSSt6atomicIPN5folly15AsyncStackFrameEE", !84, i64 0} -!84 = !{!"_ZTSSt13__atomic_baseIPN5folly15AsyncStackFrameEE", !85, i64 0} -!85 = !{!"p1 _ZTSN5folly15AsyncStackFrameE", !12, i64 0} -!86 = !{!"p1 _ZTSN5folly14AsyncStackRootE", !12, i64 0} -!87 = !{!82, !12, i64 24} -!88 = !{!89, !12, i64 8} -!89 = !{!"_ZTSN5folly15AsyncStackFrameE", !85, i64 0, !12, i64 8, !86, i64 16} +!80 = !{!81, !12, i64 16} +!81 = !{!"_ZTSN5folly14AsyncStackRootE", !82, i64 0, !85, i64 8, !12, i64 16, !12, i64 24} +!82 = !{!"_ZTSSt6atomicIPN5folly15AsyncStackFrameEE", !83, i64 0} +!83 = !{!"_ZTSSt13__atomic_baseIPN5folly15AsyncStackFrameEE", !84, i64 0} +!84 = !{!"p1 _ZTSN5folly15AsyncStackFrameE", !12, i64 0} +!85 = !{!"p1 _ZTSN5folly14AsyncStackRootE", !12, i64 0} +!86 = !{!81, !12, i64 24} +!87 = !{!"branch_weights", i32 1074279, i32 2146409369} +!88 = !{!"branch_weights", !"expected", i32 1073742, i32 2146409906} +!89 = !{!90, !12, i64 8} +!90 = !{!"_ZTSN5folly15AsyncStackFrameE", !84, i64 0, !12, i64 8, !85, i64 16} +!91 = !{!"branch_weights", i32 1073741824, i32 1073741824} +!92 = !{!"branch_weights", !"expected", i32 1073205, i32 2146410443} diff --git a/bench/git/optimized/pack-bitmap.ll b/bench/git/optimized/pack-bitmap.ll index d0152d818f6..3ca15726e15 100644 --- a/bench/git/optimized/pack-bitmap.ll +++ b/bench/git/optimized/pack-bitmap.ll @@ -3643,47 +3643,44 @@ sane_qsort.exit: ; preds = %.thread154, %._crit %.399164 = phi i64 [ %.197.ph, %sane_qsort.exit.thread ], [ 1, %sane_qsort.exit ] %.4109163 = phi ptr [ %.1106.ph, %sane_qsort.exit.thread ], [ %.4109, %sane_qsort.exit ] %127 = zext i32 %.290165 to i64 - %128 = lshr i64 %127, 6 - %129 = and i64 %127, 63 - %.not120 = icmp ne i64 %129, 0 - %130 = zext i1 %.not120 to i64 - %spec.select = add nuw nsw i64 %128, %130 - %131 = call ptr @bitmap_word_alloc(i64 noundef %spec.select) #21 - br label %132 - -132: ; preds = %124, %reuse_partial_packfile_from_bitmap_1.exit - %.1103185 = phi i64 [ 0, %124 ], [ %250, %reuse_partial_packfile_from_bitmap_1.exit ] - %133 = getelementptr inbounds nuw %struct.bitmapped_pack, ptr %.4109163, i64 %.1103185 - %134 = load ptr, ptr %125, align 8, !tbaa !87 + %128 = add nuw nsw i64 %127, 63 + %spec.select = lshr i64 %128, 6 + %129 = call ptr @bitmap_word_alloc(i64 noundef %spec.select) #21 + br label %130 + +130:; preds = %124, %reuse_partial_packfile_from_bitmap_1.exit + %.1103185 = phi i64 [ 0, %124 ], [ %248, %reuse_partial_packfile_from_bitmap_1.exit ] + %131 = getelementptr inbounds nuw %struct.bitmapped_pack, ptr %.4109163, i64 %.1103185 + %132 = load ptr, ptr %125, align 8, !tbaa !87 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #21 store ptr null, ptr %10, align 8, !tbaa !227 - %135 = getelementptr inbounds nuw i8, ptr %133, i64 8 + %135 = getelementptr inbounds nuw i8, ptr %131, i64 8 %136 = load i32, ptr %135, align 8, !tbaa !225 %137 = lshr i32 %136, 6 %138 = zext nneg i32 %137 to i64 %.not.i129 = icmp eq i32 %136, 0 br i1 %.not.i129, label %.preheader.i131, label %156 -.preheader.i131: ; preds = %132 - %139 = getelementptr inbounds nuw i8, ptr %134, i64 8 +.preheader.i131: ; preds = %130 + %139 = getelementptr inbounds nuw i8, ptr %132, i64 8 %140 = load i64, ptr %139, align 8, !tbaa !194 %141 = icmp ugt i64 %140, %138 br i1 %141, label %.lr.ph.i132, label %.critedge.i .lr.ph.i132: ; preds = %.preheader.i131 - %142 = getelementptr inbounds nuw i8, ptr %133, i64 12 + %142 = getelementptr inbounds nuw i8, ptr %131, i64 12 %143 = load i32, ptr %142, align 4, !tbaa !220 %144 = lshr i32 %143, 6 %145 = zext nneg i32 %144 to i64 br label %146 146: ; preds = %152, %.lr.ph.i132 - %.180.i = phi i64 [ %138, %.lr.ph.i132 ], [ %153, %152 ] + %.180.i = phi i64 [ %138, %.lr.ph.i132 ], [ %153, %150 ] %exitcond.not.i = icmp eq i64 %.180.i, %145 br i1 %exitcond.not.i, label %.critedge.i, label %147 147: ; preds = %146 - %148 = load ptr, ptr %134, align 8, !tbaa !197 + %148 = load ptr, ptr %132, align 8, !tbaa !197 %149 = getelementptr inbounds nuw i64, ptr %148, i64 %.180.i %150 = load i64, ptr %149, align 8, !tbaa !4 %151 = icmp eq i64 %150, -1 @@ -3695,34 +3692,34 @@ sane_qsort.exit: ; preds = %.thread154, %._crit br i1 %exitcond89.not.i, label %.critedge.i, label %146, !llvm.loop !229 .critedge.i: ; preds = %152, %147, %146, %.preheader.i131 - %.1.lcssa.i = phi i64 [ %138, %.preheader.i131 ], [ %.180.i, %147 ], [ %140, %152 ], [ %145, %146 ] - %154 = load ptr, ptr %131, align 8, !tbaa !197 + %.1.lcssa.i = phi i64 [ %138, %.preheader.i131 ], [ %.180.i, %145 ], [ %140, %150 ], [ %145, %144 ] + %154 = load ptr, ptr %129, align 8, !tbaa !197 %155 = shl nuw nsw i64 %.1.lcssa.i, 3 call void @llvm.memset.p0.i64(ptr align 8 %154, i8 -1, i64 %155, i1 false) br label %156 -156: ; preds = %.critedge.i, %132 - %.0.i130 = phi i64 [ %138, %132 ], [ %.1.lcssa.i, %.critedge.i ] - %157 = getelementptr inbounds nuw i8, ptr %134, i64 8 +156: ; preds = %.critedge.i, %130 + %.0.i130 = phi i64 [ %138, %130 ], [ %.1.lcssa.i, %.critedge.i ] + %157 = getelementptr inbounds nuw i8, ptr %132, i64 8 %158 = load i64, ptr %157, align 8, !tbaa !194 %159 = icmp ult i64 %.0.i130, %158 br i1 %159, label %.lr.ph87.i, label %reuse_partial_packfile_from_bitmap_1.exit .lr.ph87.i: ; preds = %156 - %160 = getelementptr inbounds nuw i8, ptr %133, i64 12 - %161 = getelementptr inbounds nuw i8, ptr %133, i64 24 + %160 = getelementptr inbounds nuw i8, ptr %131, i64 12 + %161 = getelementptr inbounds nuw i8, ptr %131, i64 24 br label %162 162: ; preds = %.loopexit.i, %.lr.ph87.i %.286.i = phi i64 [ %.0.i130, %.lr.ph87.i ], [ %247, %.loopexit.i ] - %163 = load ptr, ptr %134, align 8, !tbaa !197 + %163 = load ptr, ptr %132, align 8, !tbaa !197 %164 = getelementptr inbounds nuw i64, ptr %163, i64 %.286.i %165 = load i64, ptr %164, align 8, !tbaa !4 %166 = shl i64 %.286.i, 6 br label %167 167: ; preds = %244, %162 - %.05585.i = phi i64 [ 0, %162 ], [ %245, %244 ] + %.05585.i = phi i64 [ 0, %160 ], [ %245, %242 ] call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #21 %168 = lshr i64 %165, %.05585.i %169 = icmp eq i64 %168, 0 @@ -3754,13 +3751,13 @@ sane_qsort.exit: ; preds = %.thread154, %._crit %185 = call i32 @pack_pos_to_midx(ptr noundef nonnull %182, i32 noundef %183) #21 %186 = load ptr, ptr %14, align 8, !tbaa !49 %187 = call i64 @nth_midxed_offset(ptr noundef %186, i32 noundef %185) #21 - %188 = load ptr, ptr %133, align 8, !tbaa !222 + %188 = load ptr, ptr %131, align 8, !tbaa !222 %189 = call i32 @offset_to_pack_pos(ptr noundef %188, i64 noundef %187, ptr noundef nonnull %11) #21 %190 = icmp slt i32 %189, 0 br i1 %190, label %191, label %207 191: ; preds = %184 - %192 = load ptr, ptr %133, align 8, !tbaa !222 + %192 = load ptr, ptr %131, align 8, !tbaa !222 %193 = call ptr @pack_basename(ptr noundef %192) #21 call void (ptr, i32, ptr, ...) @BUG_fl(ptr noundef nonnull @.str.3, i32 noundef 2218, ptr noundef nonnull @.str.71, ptr noundef %193, i64 noundef %187) #23 unreachable @@ -3768,7 +3765,7 @@ sane_qsort.exit: ; preds = %.thread154, %._crit st_sub.exit.i: ; preds = %181 %194 = sub i32 %183, %174 store i32 %194, ptr %11, align 4, !tbaa !8 - %195 = load ptr, ptr %133, align 8, !tbaa !222 + %195 = load ptr, ptr %131, align 8, !tbaa !222 %196 = getelementptr inbounds nuw i8, ptr %195, i64 72 %197 = load i32, ptr %196, align 8, !tbaa !8 %.not62.i = icmp ult i32 %194, %197 @@ -3778,7 +3775,7 @@ st_sub.exit.i: ; preds = %181 %199 = call ptr @pack_basename(ptr noundef nonnull %195) #21 %200 = load i32, ptr %11, align 4, !tbaa !8 %201 = zext i32 %200 to i64 - %202 = load ptr, ptr %133, align 8, !tbaa !222 + %202 = load ptr, ptr %131, align 8, !tbaa !222 %203 = getelementptr inbounds nuw i8, ptr %202, i64 72 %204 = load i32, ptr %203, align 8, !tbaa !8 call void (ptr, i32, ptr, ...) @BUG_fl(ptr noundef nonnull @.str.3, i32 noundef 2224, ptr noundef nonnull @.str.72, ptr noundef %199, i64 noundef %201, i32 noundef %204) #23 @@ -3789,12 +3786,12 @@ st_sub.exit.i: ; preds = %181 br label %207 207: ; preds = %205, %184 - %.054.i = phi i64 [ %206, %205 ], [ %187, %184 ] + %.054.i = phi i64 [ %206, %203 ], [ %187, %182 ] %208 = load i32, ptr %11, align 4, !tbaa !8 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) store i64 %.054.i, ptr %6, align 8, !tbaa !4 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #21 - %209 = load ptr, ptr %133, align 8, !tbaa !222 + %209 = load ptr, ptr %131, align 8, !tbaa !222 %210 = getelementptr inbounds nuw i8, ptr %209, i64 72 %211 = load i32, ptr %210, align 8, !tbaa !8 %.not.i63.i = icmp ult i32 %208, %211 @@ -3813,13 +3810,13 @@ st_sub.exit.i: ; preds = %181 217: ; preds = %215 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #21 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #21 - %218 = load ptr, ptr %133, align 8, !tbaa !222 + %218 = load ptr, ptr %131, align 8, !tbaa !222 %219 = call i64 @get_delta_base(ptr noundef %218, ptr noundef nonnull %10, ptr noundef nonnull %6, i32 noundef %213, i64 noundef %.054.i) #21 %.not32.i.i = icmp eq i64 %219, 0 br i1 %.not32.i.i, label %.critedge.i.i, label %220 220: ; preds = %217 - %221 = load ptr, ptr %133, align 8, !tbaa !222 + %221 = load ptr, ptr %131, align 8, !tbaa !222 %222 = call i32 @offset_to_pack_pos(ptr noundef %221, i64 noundef %219, ptr noundef nonnull %8) #21 %223 = load ptr, ptr %14, align 8, !tbaa !49 %.not36.i.i = icmp eq ptr %223, null @@ -3836,7 +3833,7 @@ st_sub.exit.i: ; preds = %181 br label %237 228: ; preds = %220 - %229 = load ptr, ptr %133, align 8, !tbaa !222 + %229 = load ptr, ptr %131, align 8, !tbaa !222 %230 = call i32 @offset_to_pack_pos(ptr noundef %229, i64 noundef %219, ptr noundef nonnull %8) #21 %231 = icmp slt i32 %230, 0 br i1 %231, label %.critedge.i.i, label %232 @@ -3853,16 +3850,16 @@ st_sub.exit.i: ; preds = %181 br label %237 237: ; preds = %234, %._crit_edge.i.i - %238 = phi i32 [ %.pre.i.i, %._crit_edge.i.i ], [ %236, %234 ] + %238 = phi i32 [ %.pre.i.i, %._crit_edge.i.i ], [ %236, %232 ] %239 = zext i32 %238 to i64 - %240 = call i32 @bitmap_get(ptr noundef %131, i64 noundef %239) #21 + %240 = call i32 @bitmap_get(ptr noundef %129, i64 noundef %239) #21 %.not35.not.i.i = icmp eq i32 %240, 0 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #21 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #21 br i1 %.not35.not.i.i, label %try_partial_reuse.exit.thread.i, label %241 241: ; preds = %237, %215 - call void @bitmap_set(ptr noundef %131, i64 noundef range(i64 0, 4294967295) %173) #21 + call void @bitmap_set(ptr noundef %129, i64 noundef range(i64 0, 4294967295) %173) #21 br label %try_partial_reuse.exit.thread.i .critedge.i.i: ; preds = %232, %228, %224, %217 @@ -3905,23 +3902,23 @@ reuse_partial_packfile_from_bitmap_1.exit: ; preds = %.loopexit.i, %156, call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #21 %250 = add nuw i64 %.1103185, 1 %exitcond.not = icmp eq i64 %250, %.399164 - br i1 %exitcond.not, label %251, label %132, !llvm.loop !232 + br i1 %exitcond.not, label %251, label %130, !llvm.loop !232 251: ; preds = %reuse_partial_packfile_from_bitmap_1.exit - %252 = call i32 @bitmap_is_empty(ptr noundef %131) #21 + %252 = call i32 @bitmap_is_empty(ptr noundef %129) #21 %.not121 = icmp eq i32 %252, 0 br i1 %.not121, label %254, label %253 253: ; preds = %251 call void @free(ptr noundef %.4109163) #21 - call void @bitmap_free(ptr noundef %131) #21 + call void @bitmap_free(ptr noundef %129) #21 br label %sane_qsort.exit.thread201 254: ; preds = %251 - call void @bitmap_and_not(ptr noundef %126, ptr noundef %131) #21 + call void @bitmap_and_not(ptr noundef %126, ptr noundef %129) #21 store ptr %.4109163, ptr %1, align 8, !tbaa !233 store i64 %.399164, ptr %2, align 8, !tbaa !4 - store ptr %131, ptr %3, align 8, !tbaa !178 + store ptr %129, ptr %3, align 8, !tbaa !178 br label %sane_qsort.exit.thread201 sane_qsort.exit.thread201: ; preds = %.preheader, %121, %78, %sane_qsort.exit, %254, %253 diff --git a/bench/image-rs/optimized/2mngkegtim1o10y3.ll b/bench/image-rs/optimized/2mngkegtim1o10y3.ll index 866282fb055..9df7b388985 100644 --- a/bench/image-rs/optimized/2mngkegtim1o10y3.ll +++ b/bench/image-rs/optimized/2mngkegtim1o10y3.ll @@ -36461,11 +36461,8 @@ define void @"_ZN5image7buffer_75ImageBuffer$LT$image..color..Luma$LT$u8$GT$$C$a .split47.us.i.i.i.i.lr.ph: ; preds = %.split.preheader.i.i.i.i.preheader %spec.select.i.i.i = call i64 @llvm.usub.sat.i64(i64 %44, i64 range(i64 0, 5) 4) - %47 = lshr i64 %spec.select.i.i.i, 2 - %48 = and i64 %spec.select.i.i.i, 3 - %.not.i.i.i = icmp ne i64 %48, 0 - %49 = zext i1 %.not.i.i.i to i64 - %.0.i.i.i = add nuw nsw i64 %47, %49 + %47 = add nuw i64 %spec.select.i.i.i, 3 + %.0.i.i.i = lshr i64 %47, 2 br label %.split47.us.i.i.i.i .split47.us.i.i.i.i: ; preds = %.split47.us.i.i.i.i.lr.ph, %.noexc10 @@ -36517,28 +36514,28 @@ define void @"_ZN5image7buffer_75ImageBuffer$LT$image..color..Luma$LT$u8$GT$$C$a .noexc10: ; preds = %.noexc9 %65 = getelementptr inbounds i8, ptr %42, i64 %56 %66 = getelementptr inbounds nuw [0 x { i8, i8, i8 }], ptr %2, i64 0, i64 %63 + %65 = load i8, ptr %64, align 1, !noalias !4917, !noundef !4 + %66 = getelementptr inbounds nuw i8, ptr %64, i64 1 %67 = load i8, ptr %66, align 1, !noalias !4917, !noundef !4 - %68 = getelementptr inbounds nuw i8, ptr %66, i64 1 + %68 = getelementptr inbounds nuw i8, ptr %66, i64 2 %69 = load i8, ptr %68, align 1, !noalias !4917, !noundef !4 - %70 = getelementptr inbounds nuw i8, ptr %66, i64 2 - %71 = load i8, ptr %70, align 1, !noalias !4917, !noundef !4 - %72 = icmp ne i8 %5, %58 - %narrow = select i1 %not., i1 true, i1 %72 + %70 = icmp ne i8 %5, %56 + %narrow = select i1 %not., i1 true, i1 %70 %.0.i = sext i1 %narrow to i8 - store i8 %67, ptr %65, align 1, !alias.scope !4914, !noalias !4919 + store i8 %65, ptr %65, align 1, !alias.scope !4914, !noalias !4919 %73 = getelementptr inbounds nuw i8, ptr %65, i64 1 - store i8 %69, ptr %73, align 1, !alias.scope !4914, !noalias !4919 + store i8 %67, ptr %73, align 1, !alias.scope !4914, !noalias !4919 %74 = getelementptr inbounds nuw i8, ptr %65, i64 2 - store i8 %71, ptr %74, align 1, !alias.scope !4914, !noalias !4919 + store i8 %69, ptr %74, align 1, !alias.scope !4914, !noalias !4919 %75 = getelementptr inbounds nuw i8, ptr %65, i64 3 store i8 %.0.i, ptr %75, align 1, !alias.scope !4914, !noalias !4919 %.not136 = icmp eq i64 %50, 0 br i1 %.not136, label %.loopexit.i.i.i.i.i.i, label %.split47.us.i.i.i.i .split164.invoke: ; preds = %51, %.noexc9 - %76 = phi i64 [ %63, %.noexc9 ], [ %50, %51 ] - %77 = phi i64 [ %3, %.noexc9 ], [ %44, %51 ] - %78 = phi ptr [ @anon.ac22d30623b4aa6a7590c0e28ed98fa6.205, %.noexc9 ], [ @anon.ac22d30623b4aa6a7590c0e28ed98fa6.212, %51 ] + %76 = phi i64 [ %63, %.noexc9 ], [ %50, %49 ] + %77 = phi i64 [ %3, %.noexc9 ], [ %44, %49 ] + %78 = phi ptr [ @anon.ac22d30623b4aa6a7590c0e28ed98fa6.205, %.noexc9 ], [ @anon.ac22d30623b4aa6a7590c0e28ed98fa6.212, %49 ] invoke void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %76, i64 noundef %77, ptr noalias noundef readonly align 8 dereferenceable(24) %78) #49 to label %.split164.cont unwind label %79 @@ -36564,7 +36561,7 @@ define void @"_ZN5image7buffer_75ImageBuffer$LT$image..color..Luma$LT$u8$GT$$C$a unreachable .thread73: ; preds = %79, %28, %83 - %.pn72 = phi { ptr, i32 } [ %lpad.thr_comm.split-lp, %83 ], [ %29, %28 ], [ %80, %79 ] + %.pn72 = phi { ptr, i32 } [ %lpad.thr_comm.split-lp, %81 ], [ %29, %28 ], [ %80, %77 ] resume { ptr, i32 } %.pn72 83: ; preds = %22, %19 diff --git a/bench/influxdb-rs/optimized/1qfvsl8a7jfomqbf.ll b/bench/influxdb-rs/optimized/1qfvsl8a7jfomqbf.ll index 24a6638506f..8d3e5f46b1a 100644 --- a/bench/influxdb-rs/optimized/1qfvsl8a7jfomqbf.ll +++ b/bench/influxdb-rs/optimized/1qfvsl8a7jfomqbf.ll @@ -707,31 +707,28 @@ define hidden void @"_ZN108_$LT$arrow_array..array..dictionary_array..Dictionary %32 = getelementptr inbounds nuw i8, ptr %1, i64 64 %.val = load i64, ptr %32, align 8, !noundef !4 %33 = lshr i64 %.val, 2 - %34 = lshr i64 %.val, 5 - %35 = and i64 %33, 7 - %36 = icmp ne i64 %35, 0 - %37 = zext i1 %36 to i64 - %38 = add nuw nsw i64 %34, %37 - %39 = add nuw nsw i64 %38, 63 - %40 = and i64 %39, 2305843009213693888 - %41 = icmp eq i64 %40, 0 - br i1 %41, label %_ZN12arrow_buffer6buffer7mutable13MutableBuffer13with_capacity17h599cdfd446541586E.llvm.12936710431969675094.exit, label %42 - -42: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h8abf2ccb318cd650E.exit.i" - %43 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !80 - %44 = tail call noundef align 128 ptr @__rust_alloc(i64 noundef %40, i64 noundef 128) #31, !noalias !80 - %45 = icmp eq ptr %44, null - br i1 %45, label %46, label %_ZN12arrow_buffer6buffer7mutable13MutableBuffer13with_capacity17h599cdfd446541586E.llvm.12936710431969675094.exit + %34 = add nuw nsw i64 %33, 7 + %35 = lshr i64 %34, 3 + %36 = add nuw nsw i64 %35, 63 + %37 = and i64 %36, 2305843009213693888 + %38 = icmp eq i64 %37, 0 + br i1 %38, label %_ZN12arrow_buffer6buffer7mutable13MutableBuffer13with_capacity17h599cdfd446541586E.llvm.12936710431969675094.exit, label %39 + +39:; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h8abf2ccb318cd650E.exit.i" + %40 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !80 + %41 = tail call noundef align 128 ptr @__rust_alloc(i64 noundef %37, i64 noundef 128) #31, !noalias !80 + %42 = icmp eq ptr %41, null + br i1 %42, label %43, label %_ZN12arrow_buffer6buffer7mutable13MutableBuffer13with_capacity17h599cdfd446541586E.llvm.12936710431969675094.exit -46: ; preds = %42 - tail call void @_ZN5alloc5alloc18handle_alloc_error17h7d585e222775d2b3E(i64 noundef 128, i64 noundef %40) #32, !noalias !80 +46: ; preds = %39 + tail call void @_ZN5alloc5alloc18handle_alloc_error17h7d585e222775d2b3E(i64 noundef 128, i64 noundef %37) #32, !noalias !80 unreachable -_ZN12arrow_buffer6buffer7mutable13MutableBuffer13with_capacity17h599cdfd446541586E.llvm.12936710431969675094.exit: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h8abf2ccb318cd650E.exit.i", %42 - %.0.i = phi ptr [ inttoptr (i64 128 to ptr), %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h8abf2ccb318cd650E.exit.i" ], [ %44, %42 ] +_ZN12arrow_buffer6buffer7mutable13MutableBuffer13with_capacity17h599cdfd446541586E.llvm.12936710431969675094.exit: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h8abf2ccb318cd650E.exit.i", %39 + %.0.i = phi ptr [ inttoptr (i64 128 to ptr), %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17h8abf2ccb318cd650E.exit.i" ], [ %41, %39 ] store i64 128, ptr %9, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 8 - store i64 %40, ptr %.sroa.4.0..sroa_idx, align 8 + store i64 %37, ptr %.sroa.4.0..sroa_idx, align 8 %.sroa.528.0..sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 16 store ptr %.0.i, ptr %.sroa.528.0..sroa_idx, align 8 %.sroa.6.0..sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 24 @@ -747,48 +744,55 @@ _ZN12arrow_buffer6buffer7mutable13MutableBuffer13with_capacity17h599cdfd44654158 51: ; preds = %_ZN12arrow_buffer6buffer7mutable13MutableBuffer13with_capacity17h599cdfd446541586E.llvm.12936710431969675094.exit invoke void @_ZN12arrow_buffer7builder7boolean20BooleanBufferBuilder13append_buffer17hbe88d65e20dd880fE(ptr noalias noundef nonnull align 8 dereferenceable(40) %9, ptr noalias noundef nonnull readonly align 8 dereferenceable(40) %48) - to label %72 unwind label %52 + to label %76 unwind label %52 -52: ; preds = %118, %_ZN12arrow_buffer6buffer7mutable13MutableBuffer11into_buffer17hb20936623a6c6fedE.exit.i, %.thread29, %56, %93, %51 +52: ; preds = %118, %_ZN12arrow_buffer6buffer7mutable13MutableBuffer11into_buffer17hb20936623a6c6fedE.exit.i, %.thread29, %58, %93, %51 %53 = landingpad { ptr, i32 } cleanup br label %.body .body: ; preds = %87, %52 - %eh.lpad-body = phi { ptr, i32 } [ %53, %52 ], [ %88, %87 ] + %eh.lpad-body = phi { ptr, i32 } [ %53, %49 ], [ %88, %91 ] invoke void @"_ZN86_$LT$arrow_buffer..buffer..mutable..MutableBuffer$u20$as$u20$core..ops..drop..Drop$GT$4drop17h88adb87742f498e4E"(ptr noalias noundef nonnull align 8 dereferenceable(40) %9) to label %"_ZN4core3ptr73drop_in_place$LT$arrow_buffer..builder..boolean..BooleanBufferBuilder$GT$17h29fb1d42be871d16E.exit" unwind label %125 ._crit_edge.i: ; preds = %_ZN12arrow_buffer6buffer7mutable13MutableBuffer13with_capacity17h599cdfd446541586E.llvm.12936710431969675094.exit - %.not = icmp eq i64 %38, 0 - br i1 %.not, label %.thread, label %54 - -54: ; preds = %._crit_edge.i - %55 = icmp samesign ugt i64 %38, %40 - br i1 %55, label %56, label %58 - -56: ; preds = %54 - %57 = shl nuw nsw i64 %40, 1 - %.0.sroa.speculated.i.i = tail call noundef i64 @llvm.umax.i64(i64 %40, i64 %57) + %51 = lshr i64 %.val, 5 + %52 = and i64 %33, 7 + %53 = icmp ne i64 %52, 0 + %54 = zext i1 %53 to i64 + %55 = add nuw nsw i64 %51, %54 + %.not = icmp eq i64 %55, 0 + br i1 %.not, label %.thread, label %56 + +56:; preds = %._crit_edge.i + %57 = icmp samesign ugt i64 %55, %37 + br i1 %57, label %58, label %62 + +58: ; preds = %56 + %59 = add nuw nsw i64 %55, 63 + %60 = and i64 %59, 2305843009213693888 + %61 = shl nuw nsw i64 %37, 1 + %.0.sroa.speculated.i.i = tail call noundef i64 @llvm.umax.i64(i64 %60, i64 %61) invoke void @_ZN12arrow_buffer6buffer7mutable13MutableBuffer10reallocate17h4411256498d4cf7dE(ptr noalias noundef nonnull align 8 dereferenceable(40) %9, i64 noundef %.0.sroa.speculated.i.i) to label %.noexc22 unwind label %52 -.noexc22: ; preds = %56 +.noexc22: ; preds = %58 %.pre18.i = load i64, ptr %.sroa.6.0..sroa_idx, align 8, !alias.scope !83 %.pre = load ptr, ptr %.sroa.528.0..sroa_idx, align 8, !alias.scope !83 br label %58 -58: ; preds = %54, %.noexc22 - %59 = phi ptr [ %.0.i, %54 ], [ %.pre, %.noexc22 ] - %60 = phi i64 [ 0, %54 ], [ %.pre18.i, %.noexc22 ] +58: ; preds = %56, %.noexc22 + %59 = phi ptr [ %.0.i, %56 ], [ %.pre, %.noexc22 ] + %60 = phi i64 [ 0, %56 ], [ %.pre18.i, %.noexc22 ] %61 = getelementptr inbounds i8, ptr %59, i64 %60 - call void @llvm.memset.p0.i64(ptr nonnull align 1 %61, i8 -1, i64 %38, i1 false) - store i64 %38, ptr %.sroa.6.0..sroa_idx, align 8, !alias.scope !83 - %62 = icmp eq i64 %35, 0 + call void @llvm.memset.p0.i64(ptr nonnull align 1 %61, i8 -1, i64 %55, i1 false) + store i64 %55, ptr %.sroa.6.0..sroa_idx, align 8, !alias.scope !83 + %62 = icmp eq i64 %52, 0 br i1 %62, label %_ZN12arrow_buffer7builder7boolean20BooleanBufferBuilder8append_n17hae7f67c3f4b88995E.exit, label %64 .thread: ; preds = %._crit_edge.i - %63 = icmp eq i64 %35, 0 + %63 = icmp eq i64 %52, 0 br i1 %63, label %_ZN12arrow_buffer7builder7boolean20BooleanBufferBuilder8append_n17hae7f67c3f4b88995E.exit, label %.thread29 .thread29: ; preds = %.thread @@ -800,9 +804,9 @@ _ZN12arrow_buffer6buffer7mutable13MutableBuffer13with_capacity17h599cdfd44654158 64: ; preds = %58 %65 = load ptr, ptr %.sroa.528.0..sroa_idx, align 8, !alias.scope !83, !nonnull !4 - %66 = add nsw i64 %38, -1 + %66 = add nsw i64 %55, -1 %67 = getelementptr inbounds nuw [0 x i8], ptr %65, i64 0, i64 %66 - %68 = trunc nuw nsw i64 %35 to i8 + %68 = trunc nuw nsw i64 %52 to i8 %notmask16.i = shl nsw i8 -1, %68 %69 = xor i8 %notmask16.i, -1 %70 = load i8, ptr %67, align 1, !noundef !4 @@ -890,12 +894,12 @@ _ZN12arrow_buffer6buffer7mutable13MutableBuffer11into_buffer17hb20936623a6c6fedE %92 = getelementptr inbounds nuw i8, ptr %6, i64 16 store i64 %.sroa.68.0.copyload.i, ptr %92, align 8, !alias.scope !92, !noalias !103 invoke void @_ZN12arrow_buffer6buffer7boolean13BooleanBuffer3new17hb61e88c67471e6baE(ptr noalias noundef nonnull sret({ { ptr, ptr, i64 }, i64, i64 }) align 8 captures(none) dereferenceable(40) %7, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(24) %6, i64 noundef 0, i64 noundef %80) - to label %93 unwind label %52 + to label %97 unwind label %52 93: ; preds = %_ZN12arrow_buffer6buffer7mutable13MutableBuffer11into_buffer17hb20936623a6c6fedE.exit.i call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6), !noalias !91 invoke void @"_ZN130_$LT$arrow_buffer..buffer..null..NullBuffer$u20$as$u20$core..convert..From$LT$arrow_buffer..buffer..boolean..BooleanBuffer$GT$$GT$4from17h9e49cc6f18f24971E"(ptr noalias noundef nonnull sret({ { { ptr, ptr, i64 }, i64, i64 }, i64 }) align 8 captures(none) dereferenceable(48) %8, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(40) %7) - to label %94 unwind label %52 + to label %98 unwind label %52 94: ; preds = %93 call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %7) @@ -906,8 +910,8 @@ _ZN12arrow_buffer6buffer7mutable13MutableBuffer11into_buffer17hb20936623a6c6fedE br label %"_ZN4core6option19Option$LT$$RF$T$GT$6cloned17h94d15cf511857d9aE.exit" 95: ; preds = %.lr.ph, %102 - %.sroa.0.038 = phi ptr [ %74, %.lr.ph ], [ %96, %102 ] - %.sroa.7.037 = phi i64 [ 0, %.lr.ph ], [ %97, %102 ] + %.sroa.0.038 = phi ptr [ %74, %.lr.ph ], [ %96, %106 ] + %.sroa.7.037 = phi i64 [ 0, %.lr.ph ], [ %97, %106 ] %96 = getelementptr inbounds nuw i8, ptr %.sroa.0.038, i64 4 %97 = add nuw nsw i64 %.sroa.7.037, 1 %98 = load i32, ptr %.sroa.0.038, align 4, !noundef !4 diff --git a/bench/lief/optimized/bignum_core.ll b/bench/lief/optimized/bignum_core.ll index 22c20bfffcc..c5cbfb25628 100644 --- a/bench/lief/optimized/bignum_core.ll +++ b/bench/lief/optimized/bignum_core.ll @@ -1318,23 +1318,20 @@ mbedtls_mpi_core_bitlen.exit.thread: ; preds = %10, %mbedtls_mpi_co %25 = phi i64 [ %21, %mbedtls_mpi_core_bitlen.exit ], [ 0, %10 ] %26 = phi i32 [ %spec.select, %mbedtls_mpi_core_bitlen.exit ], [ 250, %10 ] %27 = phi i64 [ %24, %mbedtls_mpi_core_bitlen.exit ], [ 0, %10 ] - %28 = and i64 %25, 7 - %29 = icmp ne i64 %28, 0 - %30 = zext i1 %29 to i64 - %31 = lshr i64 %25, 3 - %32 = add nuw nsw i64 %31, %30 - %33 = shl nuw nsw i64 %32, 3 - %34 = sub nsw i64 %33, %25 - %35 = icmp ult i64 %3, %32 - %36 = getelementptr inbounds nuw i8, ptr %0, i64 %33 - %37 = sub nuw i64 %3, %32 - %38 = shl i64 %37, 3 - %39 = getelementptr inbounds nuw i8, ptr %0, i64 %34 - %40 = icmp eq i64 %32, 0 - %41 = getelementptr i64, ptr %0, i64 %32 - %.01214.i.i = getelementptr i8, ptr %41, i64 -8 + %28 = add nuw nsw i64 %25, 7 + %29 = and i64 %28, 4611686018427387896 + %30 = sub nsw i64 %29, %25 + %31 = lshr i64 %28, 3 + %32 = icmp ult i64 %3, %31 + %33 = getelementptr inbounds nuw i8, ptr %0, i64 %29 + %34 = sub nuw i64 %3, %31 + %35 = shl i64 %34, 3 + %36 = getelementptr inbounds nuw i8, ptr %0, i64 %30 + %37 = icmp eq i64 %25, 0 + %38 = getelementptr i64, ptr %0, i64 %31 + %39 = getelementptr i8, ptr %38, i64 -8 %.not15.i.i = icmp ugt ptr %0, %.01214.i.i - %or.cond.i.i = or i1 %40, %.not15.i.i + %or.cond.i.i = or i1 %37, %.not15.i.i %42 = lshr i64 %27, 6 %43 = and i64 %27, 63 %44 = icmp eq i64 %42, %3 @@ -1349,7 +1346,7 @@ mbedtls_mpi_core_bitlen.exit.thread: ; preds = %10, %mbedtls_mpi_co %50 = shl nuw nsw i64 %3, 3 %51 = icmp ugt i64 %3, 1 %.not20.i = icmp eq i64 %3, 0 - br i1 %35, label %mbedtls_mpi_core_fill_random.exit.split, label %mbedtls_mpi_core_bitlen.exit.thread.split.preheader + br i1 %32, label %mbedtls_mpi_core_fill_random.exit.split, label %mbedtls_mpi_core_bitlen.exit.thread.split.preheader mbedtls_mpi_core_bitlen.exit.thread.split.preheader: ; preds = %mbedtls_mpi_core_bitlen.exit.thread %.not4249.i = icmp ne i64 %3, 0 @@ -1362,9 +1359,9 @@ mbedtls_mpi_core_bitlen.exit.thread.split.preheader: ; preds = %mbedtls_mpi_core mbedtls_mpi_core_bitlen.exit.thread.split: ; preds = %mbedtls_mpi_core_bitlen.exit.thread.split.preheader, %mbedtls_mpi_core_lt_ct.exit %.0 = phi i32 [ %72, %mbedtls_mpi_core_lt_ct.exit ], [ %26, %mbedtls_mpi_core_bitlen.exit.thread.split.preheader ] - tail call void @llvm.memset.p0.i64(ptr align 8 %0, i8 0, i64 %34, i1 false) - tail call void @llvm.memset.p0.i64(ptr align 1 %36, i8 0, i64 %38, i1 false) - %54 = tail call i32 %4(ptr noundef %5, ptr noundef %39, i64 noundef %25) #10 + tail call void @llvm.memset.p0.i64(ptr align 8 %0, i8 0, i64 %30, i1 false) + tail call void @llvm.memset.p0.i64(ptr align 1 %33, i8 0, i64 %35, i1 false) + %54 = tail call i32 %4(ptr noundef %5, ptr noundef %36, i64 noundef %25) #10 %.not.i25 = icmp eq i32 %54, 0 br i1 %.not.i25, label %55, label %mbedtls_mpi_core_fill_random.exit.split @@ -1372,8 +1369,8 @@ mbedtls_mpi_core_bitlen.exit.thread.split: ; preds = %mbedtls_mpi_core_bi br i1 %or.cond.i.i, label %.loopexit, label %.lr.ph.i.i .lr.ph.i.i: ; preds = %55, %.lr.ph.i.i - %.01217.i.i = phi ptr [ %.012.i.i, %.lr.ph.i.i ], [ %.01214.i.i, %55 ] - %.016.i.i = phi ptr [ %60, %.lr.ph.i.i ], [ %0, %55 ] + %.01217.i.i = phi ptr [ %.012.i.i, %.lr.ph.i.i ], [ %.01214.i.i, %52 ] + %.016.i.i = phi ptr [ %60, %.lr.ph.i.i ], [ %0, %52 ] %56 = load i64, ptr %.016.i.i, align 8, !tbaa !3 %57 = tail call noundef i64 @llvm.bswap.i64(i64 %56) %58 = load i64, ptr %.01217.i.i, align 8, !tbaa !3 @@ -1443,8 +1440,8 @@ mbedtls_mpi_core_shift_r.exit: ; preds = %.lr.ph52.i, %.loope br i1 %51, label %.lr.ph.i28, label %mbedtls_mpi_core_uint_le_mpi.exit .lr.ph.i28: ; preds = %74, %.lr.ph.i28 - %.011.i = phi i64 [ %82, %.lr.ph.i28 ], [ 1, %74 ] - %.0910.i = phi i64 [ %81, %.lr.ph.i28 ], [ %77, %74 ] + %.011.i = phi i64 [ %82, %.lr.ph.i28 ], [ 1, %71 ] + %.0910.i = phi i64 [ %81, %.lr.ph.i28 ], [ %77, %71 ] %78 = getelementptr inbounds nuw i64, ptr %0, i64 %.011.i %79 = load i64, ptr %78, align 8, !tbaa !3 %80 = tail call i64 asm sideeffect "mov $1, $0 \0A\09neg $0 \0A\09or $1, $0 \0A\09sar $$63, $0 \0A\09", "=&{ax},{di},~{dirflag},~{fpsr},~{flags}"(i64 %79) #10, !srcloc !12 @@ -1454,7 +1451,7 @@ mbedtls_mpi_core_shift_r.exit: ; preds = %.lr.ph52.i, %.loope br i1 %exitcond.not.i29, label %mbedtls_mpi_core_uint_le_mpi.exit, label %.lr.ph.i28, !llvm.loop !13 mbedtls_mpi_core_uint_le_mpi.exit: ; preds = %.lr.ph.i28, %74 - %.09.lcssa.i = phi i64 [ %77, %74 ], [ %81, %.lr.ph.i28 ] + %.09.lcssa.i = phi i64 [ %77, %71 ], [ %81, %.lr.ph.i28 ] %83 = extractvalue { i64, i64, i64 } %76, 1 %84 = xor i64 %83, -1 %85 = or i64 %.09.lcssa.i, %84 diff --git a/bench/oiio/optimized/Codec.ll b/bench/oiio/optimized/Codec.ll index a1870c08fd6..65c7117acea 100644 --- a/bench/oiio/optimized/Codec.ll +++ b/bench/oiio/optimized/Codec.ll @@ -204,7 +204,7 @@ define hidden noundef zeroext i1 @_ZN3dpx5Codec4ReadERKNS_6HeaderEPNS_17ElementR %8 = getelementptr inbounds nuw i8, ptr %0, i64 8 %9 = load ptr, ptr %8, align 8, !tbaa !6 %10 = icmp eq ptr %9, null - br i1 %10, label %11, label %31 + br i1 %10, label %11, label %29 11: ; preds = %7 %12 = tail call noundef i32 @_ZNK3dpx13GenericHeader26ImageElementComponentCountEi(ptr noundef nonnull align 4 dereferenceable(1664) %1, i32 noundef %3) @@ -219,30 +219,27 @@ define hidden noundef zeroext i1 @_ZN3dpx5Codec4ReadERKNS_6HeaderEPNS_17ElementR %17 = getelementptr inbounds nuw i8, ptr %16, i64 23 %18 = load i8, ptr %17, align 1, !tbaa !11 %19 = zext i8 %18 to i32 + %20 = add nuw nsw i32 %19, 7 + %21 = lshr i32 %20, 3 br label %_ZNK3dpx13GenericHeader8BitDepthEi.exit _ZNK3dpx13GenericHeader8BitDepthEi.exit: ; preds = %11, %13 - %.0.i = phi i32 [ %19, %13 ], [ 255, %11 ] + %.0.i = phi i32 [ %21, %13 ], [ 32, %11 ] %20 = tail call noundef i32 @_ZNK3dpx6Header5WidthEv(ptr noundef nonnull align 4 dereferenceable(2049) %1) - %21 = mul i32 %20, %12 - %22 = lshr i32 %.0.i, 3 - %23 = and i32 %.0.i, 7 - %.not = icmp ne i32 %23, 0 - %24 = zext i1 %.not to i32 - %25 = add nuw nsw i32 %22, %24 - %26 = mul i32 %21, %25 - %27 = lshr i32 %26, 2 - %narrow = add nuw nsw i32 %27, 1 - %28 = zext nneg i32 %narrow to i64 - %29 = shl nuw nsw i64 %28, 2 - %30 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %29) #10 - store ptr %30, ptr %8, align 8, !tbaa !6 - br label %31 - -31: ; preds = %_ZNK3dpx13GenericHeader8BitDepthEi.exit, %7 - %32 = phi ptr [ %30, %_ZNK3dpx13GenericHeader8BitDepthEi.exit ], [ %9, %7 ] - %33 = tail call noundef zeroext i1 @_ZN3dpx14ReadImageBlockINS_17ElementReadStreamEEEbRKNS_6HeaderEPjPT_iRKNS_5BlockEPvNS_8DataSizeE(ptr noundef nonnull align 4 dereferenceable(2049) %1, ptr noundef nonnull %32, ptr noundef %2, i32 noundef %3, ptr noundef nonnull align 4 dereferenceable(16) %4, ptr noundef %5, i32 noundef %6) - ret i1 %33 + %21 = mul i32 %.0.i, %12 + %24 = mul i32 %23, %22 + %25 = lshr i32 %24, 2 + %narrow = add nuw nsw i32 %25, 1 + %24 = zext nneg i32 %narrow to i64 + %27 = shl nuw nsw i64 %26, 2 + %28 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %27) #10 + store ptr %28, ptr %8, align 8, !tbaa !6 + br label %29 + +29:; preds = %_ZNK3dpx13GenericHeader8BitDepthEi.exit, %7 + %30 = phi ptr [ %28, %_ZNK3dpx13GenericHeader8BitDepthEi.exit ], [ %9, %7 ] + %31 = tail call noundef zeroext i1 @_ZN3dpx14ReadImageBlockINS_17ElementReadStreamEEEbRKNS_6HeaderEPjPT_iRKNS_5BlockEPvNS_8DataSizeE(ptr noundef nonnull align 4 dereferenceable(2049) %1, ptr noundef nonnull %30, ptr noundef %2, i32 noundef %3, ptr noundef nonnull align 4 dereferenceable(16) %4, ptr noundef %5, i32 noundef %6) + ret i1 %31 } declare noundef i32 @_ZNK3dpx13GenericHeader26ImageElementComponentCountEi(ptr noundef nonnull align 4 dereferenceable(1664), i32 noundef) local_unnamed_addr #1 diff --git a/bench/pola-rs/optimized/0vhch0fuxqefukqucblhsujir.ll b/bench/pola-rs/optimized/0vhch0fuxqefukqucblhsujir.ll index a7d2902425b..b2013089373 100644 --- a/bench/pola-rs/optimized/0vhch0fuxqefukqucblhsujir.ll +++ b/bench/pola-rs/optimized/0vhch0fuxqefukqucblhsujir.ll @@ -5497,32 +5497,29 @@ define hidden void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$ br label %13 13: ; preds = %13, %8 - %14 = phi i64 [ %29, %13 ], [ %.sroa.42.0.copyload, %8 ] - %.sroa.06.0.i.i.i = phi i64 [ %30, %13 ], [ 0, %8 ] + %14 = phi i64 [ %26, %13 ], [ %.sroa.42.0.copyload, %8 ] + %.sroa.06.0.i.i.i = phi i64 [ %27, %13 ], [ 0, %8 ] %15 = getelementptr inbounds nuw { i32, i32, i32, i32 }, ptr %.sroa.0.0.copyload, i64 %.sroa.06.0.i.i.i %.val21.i.i.i = load i32, ptr %15, align 4, !noalias !1181, !noundef !3 %16 = zext i32 %.val21.i.i.i to i64 - %17 = lshr i64 %16, 5 - %18 = and i64 %16, 31 - %19 = icmp ne i64 %18, 0 - %20 = zext i1 %19 to i64 - %21 = add nuw nsw i64 %17, %20 - %22 = mul nuw nsw i64 %21, 33 - %23 = add nuw nsw i64 %22, 1 - %24 = load i64, ptr %4, align 8, !noalias !1189, !noundef !3 - %25 = add i64 %23, %24 - store i64 %25, ptr %4, align 8, !noalias !1189 - %26 = load i64, ptr %6, align 8, !noalias !1189, !noundef !3 - %27 = add i64 %23, %26 - %28 = getelementptr inbounds nuw i64, ptr %.sroa.53.0.copyload, i64 %14 - store i64 %27, ptr %28, align 8, !noalias !1196 - %29 = add i64 %14, 1 - %30 = add nuw i64 %.sroa.06.0.i.i.i, 1 - %31 = icmp eq i64 %30, %12 - br i1 %31, label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h270235a2cb236d87E.exit", label %13 + %17 = add nuw nsw i64 %16, 31 + %18 = lshr i64 %17, 5 + %19 = mul nuw nsw i64 %18, 33 + %20 = add nuw nsw i64 %19, 1 + %21 = load i64, ptr %4, align 8, !noalias !1189, !noundef !3 + %22 = add i64 %20, %21 + store i64 %22, ptr %4, align 8, !noalias !1189 + %24 = load i64, ptr %6, align 8, !noalias !1189, !noundef !3 + %25 = add i64 %20, %24 + %25 = getelementptr inbounds nuw i64, ptr %.sroa.53.0.copyload, i64 %14 + store i64 %24, ptr %25, align 8, !noalias !1196 + %27 = add i64 %14, 1 + %27 = add nuw i64 %.sroa.06.0.i.i.i, 1 + %28 = icmp eq i64 %27, %12 + br i1 %28, label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h270235a2cb236d87E.exit", label %13 "_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4fold17h270235a2cb236d87E.exit": ; preds = %13, %2 - %storemerge.i.i = phi i64 [ %.sroa.42.0.copyload, %2 ], [ %29, %13 ] + %storemerge.i.i = phi i64 [ %.sroa.42.0.copyload, %2 ], [ %26, %13 ] %32 = icmp ne ptr %.sroa.01.0.copyload, null tail call void @llvm.assume(i1 %32) store i64 %storemerge.i.i, ptr %.sroa.01.0.copyload, align 8, !noalias !1181 @@ -7278,7 +7275,7 @@ define hidden void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$ br label %"_ZN95_$LT$core..ops..control_flow..ControlFlow$LT$B$C$C$GT$$u20$as$u20$core..ops..try_trait..Try$GT$6branch17h44c47c96a2b02a24E.exit.i.i" "_ZN95_$LT$core..ops..control_flow..ControlFlow$LT$B$C$C$GT$$u20$as$u20$core..ops..try_trait..Try$GT$6branch17h44c47c96a2b02a24E.exit.i.i": ; preds = %11, %4 - %8 = phi i64 [ %21, %11 ], [ %.promoted, %4 ] + %8 = phi i64 [ %18, %11 ], [ %.promoted, %4 ] %9 = phi ptr [ %12, %11 ], [ %.promoted.i.i, %4 ] %10 = icmp eq ptr %9, %6 br i1 %10, label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17he05865d8b95f28efE.exit", label %11 @@ -7288,27 +7285,24 @@ define hidden void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$ store ptr %12, ptr %1, align 8, !alias.scope !1727, !noalias !1730 %.val5.i.i = load i32, ptr %9, align 4, !noalias !1732, !noundef !3 %13 = zext i32 %.val5.i.i to i64 - %14 = lshr i64 %13, 5 - %15 = and i64 %13, 31 - %16 = icmp ne i64 %15, 0 - %17 = zext i1 %16 to i64 - %18 = add nuw nsw i64 %14, %17 - %19 = mul nuw nsw i64 %18, 33 - %20 = add nuw nsw i64 %19, 1 - %.not.i.i.i.i.not.i.i = icmp eq i64 %20, %7 - %21 = add i64 %8, 1 - store i64 %21, ptr %3, align 8, !noalias !1733 - br i1 %.not.i.i.i.i.not.i.i, label %"_ZN95_$LT$core..ops..control_flow..ControlFlow$LT$B$C$C$GT$$u20$as$u20$core..ops..try_trait..Try$GT$6branch17h44c47c96a2b02a24E.exit.i.i", label %22 - -22: ; preds = %11 - %23 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %8, ptr %23, align 8, !alias.scope !1740, !noalias !1743 - %24 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %20, ptr %24, align 8, !alias.scope !1740, !noalias !1743 + %14 = add nuw nsw i64 %13, 31 + %15 = lshr i64 %14, 5 + %16 = mul nuw nsw i64 %15, 33 + %17 = add nuw nsw i64 %16, 1 + %.not.i.i.i.i.not.i.i = icmp eq i64 %17, %7 + %18 = add i64 %8, 1 + store i64 %18, ptr %3, align 8, !noalias !1733 + br i1 %.not.i.i.i.i.not.i.i, label %"_ZN95_$LT$core..ops..control_flow..ControlFlow$LT$B$C$C$GT$$u20$as$u20$core..ops..try_trait..Try$GT$6branch17h44c47c96a2b02a24E.exit.i.i", label %19 + +19:; preds = %11 + %20 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 %8, ptr %20, align 8, !alias.scope !1740, !noalias !1743 + %21 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store i64 %17, ptr %21, align 8, !alias.scope !1740, !noalias !1743 br label %"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17he05865d8b95f28efE.exit" -"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17he05865d8b95f28efE.exit": ; preds = %"_ZN95_$LT$core..ops..control_flow..ControlFlow$LT$B$C$C$GT$$u20$as$u20$core..ops..try_trait..Try$GT$6branch17h44c47c96a2b02a24E.exit.i.i", %22 - %storemerge.i.i = phi i64 [ 1, %22 ], [ 0, %"_ZN95_$LT$core..ops..control_flow..ControlFlow$LT$B$C$C$GT$$u20$as$u20$core..ops..try_trait..Try$GT$6branch17h44c47c96a2b02a24E.exit.i.i" ] +"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold17he05865d8b95f28efE.exit": ; preds = %"_ZN95_$LT$core..ops..control_flow..ControlFlow$LT$B$C$C$GT$$u20$as$u20$core..ops..try_trait..Try$GT$6branch17h44c47c96a2b02a24E.exit.i.i", %19 + %storemerge.i.i = phi i64 [ 1, %19 ], [ 0, %"_ZN95_$LT$core..ops..control_flow..ControlFlow$LT$B$C$C$GT$$u20$as$u20$core..ops..try_trait..Try$GT$6branch17h44c47c96a2b02a24E.exit.i.i" ] store i64 %storemerge.i.i, ptr %0, align 8, !alias.scope !1744, !noalias !1743 ret void } @@ -8678,17 +8672,14 @@ define hidden void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$ br i1 %35, label %.split.i.i.i, label %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hdfd29eb4a468b61eE.exit.i" .split.i.i.i: ; preds = %"_ZN102_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcf7d7e6598e69770E.exit.i" - %36 = lshr i64 %21, 5 - %37 = and i64 %21, 31 - %38 = icmp ne i64 %37, 0 - %39 = zext i1 %38 to i64 - %40 = add nuw nsw i64 %36, %39 - %41 = mul nuw nsw i64 %40, 33 - %42 = add nuw nsw i64 %41, 1 + %36 = add nuw nsw i64 %21, 31 + %37 = lshr i64 %36, 5 + %38 = mul nuw nsw i64 %37, 33 + %39 = add nuw nsw i64 %38, 1 br label %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hdfd29eb4a468b61eE.exit.i" "_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hdfd29eb4a468b61eE.exit.i": ; preds = %.split.i.i.i, %"_ZN102_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcf7d7e6598e69770E.exit.i" - %phi.call.i.i.i = phi i64 [ %42, %.split.i.i.i ], [ 1, %"_ZN102_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcf7d7e6598e69770E.exit.i" ] + %phi.call.i.i.i = phi i64 [ %39, %.split.i.i.i ], [ 1, %"_ZN102_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcf7d7e6598e69770E.exit.i" ] %.not.i.i.i.not.i = icmp eq i64 %phi.call.i.i.i, %11 %43 = add i64 %12, 1 store i64 %43, ptr %3, align 8, !noalias !2351 @@ -8702,7 +8693,7 @@ define hidden void @"_ZN102_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$ br label %_ZN4core4iter6traits8iterator8Iterator8try_fold17hdfe2a886483167e3E.exit _ZN4core4iter6traits8iterator8Iterator8try_fold17hdfe2a886483167e3E.exit: ; preds = %"_ZN95_$LT$core..ops..control_flow..ControlFlow$LT$B$C$C$GT$$u20$as$u20$core..ops..try_trait..Try$GT$6branch17h44c47c96a2b02a24E.exit.i", %23, %44 - %storemerge.i = phi i64 [ 1, %44 ], [ 0, %23 ], [ 0, %"_ZN95_$LT$core..ops..control_flow..ControlFlow$LT$B$C$C$GT$$u20$as$u20$core..ops..try_trait..Try$GT$6branch17h44c47c96a2b02a24E.exit.i" ] + %storemerge.i = phi i64 [ 1, %41 ], [ 0, %23 ], [ 0, %"_ZN95_$LT$core..ops..control_flow..ControlFlow$LT$B$C$C$GT$$u20$as$u20$core..ops..try_trait..Try$GT$6branch17h44c47c96a2b02a24E.exit.i" ] store i64 %storemerge.i, ptr %0, align 8, !alias.scope !2328, !noalias !2331 ret void } diff --git a/bench/pola-rs/optimized/2zzsdlmtuqz1lzylvupupdnd9.ll b/bench/pola-rs/optimized/2zzsdlmtuqz1lzylvupupdnd9.ll index 37dc62217a9..0c9237bbbae 100644 --- a/bench/pola-rs/optimized/2zzsdlmtuqz1lzylvupupdnd9.ll +++ b/bench/pola-rs/optimized/2zzsdlmtuqz1lzylvupupdnd9.ll @@ -131525,30 +131525,27 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a 29: ; preds = %.lr.ph.split.us %30 = and i32 %18, 255 - %31 = zext nneg i32 %30 to i64 - %32 = and i64 %31, 3 - %33 = icmp ne i64 %32, 0 - %34 = lshr i64 %31, 2 - %35 = zext i1 %33 to i64 - %.sroa.03.0.us = add nuw nsw i64 %34, %35 - %36 = add nuw nsw i64 %13, 2 - %37 = icmp ugt i64 %36, %12 - br i1 %37, label %.split121.us, label %38, !prof !1282 - -38: ; preds = %29 - %39 = sub nuw i64 %12, %36 - %40 = icmp ugt i64 %.sroa.03.0.us, %39 - br i1 %40, label %.split125.us, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb80be0761b85d0f1E.exit.us", !prof !1282 - -"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb80be0761b85d0f1E.exit.us": ; preds = %38 - %41 = getelementptr inbounds nuw i32, ptr %10, i64 %36 - %42 = getelementptr inbounds nuw i32, ptr %41, i64 %.sroa.03.0.us - br label %43 + %narrow.us = add nuw nsw i32 %30, 3 + %31 = lshr i32 %narrow.us, 2 + %.sroa.03.0.us = zext nneg i32 %31 to i64 + %32 = add nuw nsw i64 %13, 2 + %33 = icmp ugt i64 %32, %12 + br i1 %33, label %.split121.us, label %34, !prof !1282 + +34:; preds = %32 + %35 = sub nuw i64 %12, %32 + %36 = icmp ult i64 %35, %.sroa.03.0.us + br i1 %36, label %.split125.us, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb80be0761b85d0f1E.exit.us", !prof !1282 + +"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb80be0761b85d0f1E.exit.us":; preds = %34 + %40 = getelementptr inbounds nuw i32, ptr %10, i64 %32 + %38 = getelementptr inbounds nuw i32, ptr %37, i64 %.sroa.03.0.us + br label %39 43: ; preds = %53, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb80be0761b85d0f1E.exit.us" - %.sroa.8.0.us = phi i64 [ 0, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb80be0761b85d0f1E.exit.us" ], [ %46, %53 ] - %.sroa.0.035.us = phi ptr [ %41, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb80be0761b85d0f1E.exit.us" ], [ %45, %53 ] - %44 = icmp eq ptr %.sroa.0.035.us, %42 + %.sroa.8.0.us = phi i64 [ 0, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb80be0761b85d0f1E.exit.us" ], [ %46, %49 ] + %.sroa.0.035.us = phi ptr [ %40, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb80be0761b85d0f1E.exit.us" ], [ %45, %49 ] + %44 = icmp eq ptr %.sroa.0.035.us, %41 br i1 %44, label %.loopexit, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h587a722336d9878bE.exit.us" "_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h587a722336d9878bE.exit.us": ; preds = %43 @@ -131578,17 +131575,17 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a br i1 %54, label %.split150.us, label %43 .lr.ph.split: ; preds = %.lr.ph, %127 - %55 = phi i64 [ %130, %127 ], [ %13, %.lr.ph ] + %55 = phi i64 [ %130, %119 ], [ %13, %.lr.ph ] %56 = getelementptr inbounds nuw i32, ptr %10, i64 %55 %57 = load i32, ptr %56, align 4, !noundef !3 %trunc = trunc i32 %57 to i8 - switch i8 %trunc, label %61 [ + switch i8 %trunc, label %57 [ i8 -1, label %58 i8 -2, label %112 ] ._crit_edge: ; preds = %127, %4 - %.lcssa89 = phi i64 [ %13, %4 ], [ %130, %127 ] + %.lcssa89 = phi i64 [ %13, %4 ], [ %130, %119 ] tail call void @_ZN4core9panicking18panic_bounds_check17h0cc3ae16a8cc728fE(i64 noundef %.lcssa89, i64 noundef %12, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.19065cf71bd35e27ca4558f14fd94d50.302) #45 unreachable @@ -131599,40 +131596,37 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a 61: ; preds = %.lr.ph.split %62 = and i32 %57, 255 - %63 = zext nneg i32 %62 to i64 - %64 = and i64 %63, 3 - %65 = icmp ne i64 %64, 0 - %66 = lshr i64 %63, 2 - %67 = zext i1 %65 to i64 - %.sroa.03.0 = add nuw nsw i64 %66, %67 - %68 = add nuw nsw i64 %55, 2 - %69 = icmp ugt i64 %68, %12 - br i1 %69, label %.split121.us, label %70, !prof !1282 - -70: ; preds = %61 - %71 = sub nuw i64 %12, %68 - %72 = icmp ugt i64 %.sroa.03.0, %71 - br i1 %72, label %.split125.us, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb80be0761b85d0f1E.exit", !prof !1282 - -.split125.us: ; preds = %70, %38 - %.us-phi126 = phi i64 [ %39, %38 ], [ %71, %70 ] - %.us-phi127 = phi i64 [ %.sroa.03.0.us, %38 ], [ %.sroa.03.0, %70 ] + %narrow = add nuw nsw i32 %62, 3 + %59 = lshr i32 %narrow, 2 + %.sroa.03.0 = zext nneg i32 %59 to i64 + %60 = add nuw nsw i64 %51, 2 + %61 = icmp ugt i64 %60, %12 + br i1 %61, label %.split121.us, label %62, !prof !1282 + +62:; preds = %61 + %63 = sub nuw i64 %12, %60 + %64 = icmp ult i64 %63, %.sroa.03.0 + br i1 %64, label %.split125.us, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb80be0761b85d0f1E.exit", !prof !1282 + +.split125.us:; preds = %62, %37 + %.us-phi126 = phi i64 [ %38, %34 ], [ %63, %62 ] + %.us-phi127 = phi i64 [ %.sroa.03.0.us, %34 ], [ %.sroa.03.0, %62 ] tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h3977c10d2b967b2dE(i64 noundef %.us-phi127, i64 noundef %.us-phi126, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.19065cf71bd35e27ca4558f14fd94d50.303) #45, !noalias !16600 unreachable -"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb80be0761b85d0f1E.exit": ; preds = %70 - %73 = getelementptr inbounds nuw i32, ptr %10, i64 %68 +"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb80be0761b85d0f1E.exit": ; preds = %62 + %73 = getelementptr inbounds nuw i32, ptr %10, i64 %60 %74 = getelementptr inbounds nuw i32, ptr %73, i64 %.sroa.03.0 br label %75 .split121.us: ; preds = %61, %29 - %.us-phi123 = phi i64 [ %36, %29 ], [ %68, %61 ] + %.us-phi123 = phi i64 [ %32, %29 ], [ %60, %57 ] tail call void @_ZN4core5slice5index26slice_start_index_len_fail17hedf750467f84874aE(i64 noundef %.us-phi123, i64 noundef %12, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.19065cf71bd35e27ca4558f14fd94d50.308) #45 unreachable -75: ; preds = %94, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb80be0761b85d0f1E.exit" - %.sroa.8.0 = phi i64 [ 0, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb80be0761b85d0f1E.exit" ], [ %78, %94 ] - %.sroa.0.035 = phi ptr [ %73, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb80be0761b85d0f1E.exit" ], [ %77, %94 ] +75: ; preds = %86, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb80be0761b85d0f1E.exit" + %.sroa.8.0 = phi i64 [ 0, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb80be0761b85d0f1E.exit" ], [ %78, %86 ] + %.sroa.0.035 = phi ptr [ %73, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb80be0761b85d0f1E.exit" ], [ %77, %86 ] %76 = icmp eq ptr %.sroa.0.035, %74 br i1 %76, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h587a722336d9878bE.exit.thread", label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h587a722336d9878bE.exit" @@ -131652,75 +131646,75 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a %.sroa.5.0.extract.shift = lshr i32 %79, 8 %.sroa.5.0.extract.trunc = trunc i32 %.sroa.5.0.extract.shift to i8 %82 = icmp eq i8 %8, %.sroa.5.0.extract.trunc - br i1 %82, label %.split136.us, label %87 + br i1 %82, label %.split136.us, label %79 .split129.us: ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h587a722336d9878bE.exit", %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h587a722336d9878bE.exit.us" - %.us-phi130 = phi i64 [ %36, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h587a722336d9878bE.exit.us" ], [ %68, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h587a722336d9878bE.exit" ] + %.us-phi130 = phi i64 [ %32, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h587a722336d9878bE.exit.us" ], [ %60, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h587a722336d9878bE.exit" ] %.us-phi131 = phi i64 [ %.sroa.03.0.us, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h587a722336d9878bE.exit.us" ], [ %.sroa.03.0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h587a722336d9878bE.exit" ] %.us-phi134 = phi i64 [ %.sroa.8.0.us, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h587a722336d9878bE.exit.us" ], [ %.sroa.8.0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h587a722336d9878bE.exit" ] %83 = add nuw nsw i64 %.us-phi131, %.us-phi130 %84 = shl i64 %.us-phi134, 2 %85 = add i64 %84, %83 %86 = icmp ult i64 %85, %12 - br i1 %86, label %107, label %111 - -87: ; preds = %81 - %88 = icmp eq i8 %8, %.sroa.68.0.extract.trunc - br i1 %88, label %.split143.us, label %94 - -.split136.us: ; preds = %81, %49 - %.us-phi137 = phi i64 [ %36, %49 ], [ %68, %81 ] - %.us-phi138 = phi i64 [ %.sroa.03.0.us, %49 ], [ %.sroa.03.0, %81 ] - %.us-phi141 = phi i64 [ %.sroa.8.0.us, %49 ], [ %.sroa.8.0, %81 ] - %89 = add nuw nsw i64 %.us-phi138, %.us-phi137 - %90 = shl i64 %.us-phi141, 2 - %91 = add nuw nsw i64 %89, 1 - %92 = add i64 %91, %90 - %93 = icmp ult i64 %92, %12 - br i1 %93, label %107, label %110 - -94: ; preds = %87 - %95 = icmp eq i8 %8, %.sroa.7.0.extract.trunc - br i1 %95, label %.split150.us, label %75 - -.split143.us: ; preds = %87, %51 - %.us-phi144 = phi i64 [ %36, %51 ], [ %68, %87 ] - %.us-phi145 = phi i64 [ %.sroa.03.0.us, %51 ], [ %.sroa.03.0, %87 ] - %.us-phi148 = phi i64 [ %.sroa.8.0.us, %51 ], [ %.sroa.8.0, %87 ] - %96 = add nuw nsw i64 %.us-phi145, %.us-phi144 - %97 = shl i64 %.us-phi148, 2 - %98 = add nuw nsw i64 %96, 2 - %99 = add i64 %98, %97 - %100 = icmp ult i64 %99, %12 - br i1 %100, label %107, label %109 - -.split150.us: ; preds = %94, %53 - %.us-phi151 = phi i64 [ %36, %53 ], [ %68, %94 ] - %.us-phi152 = phi i64 [ %.sroa.03.0.us, %53 ], [ %.sroa.03.0, %94 ] - %.us-phi155 = phi i64 [ %.sroa.8.0.us, %53 ], [ %.sroa.8.0, %94 ] - %101 = add nuw nsw i64 %.us-phi152, %.us-phi151 - %102 = shl i64 %.us-phi155, 2 - %103 = add nuw nsw i64 %101, 3 - %104 = add i64 %103, %102 - %105 = icmp ult i64 %104, %12 - br i1 %105, label %107, label %106 - -106: ; preds = %.split150.us - tail call void @_ZN4core9panicking18panic_bounds_check17h0cc3ae16a8cc728fE(i64 noundef %104, i64 noundef %12, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.19065cf71bd35e27ca4558f14fd94d50.304) #45 - unreachable + br i1 %86, label %99, label %111 + +106: ; preds = %81 + %80 = icmp eq i8 %8, %.sroa.68.0.extract.trunc + br i1 %80, label %.split143.us, label %86 + +.split136.us: ; preds = %73, %45 + %.us-phi137 = phi i64 [ %32, %45 ], [ %60, %73 ] + %.us-phi138 = phi i64 [ %.sroa.03.0.us, %45 ], [ %.sroa.03.0, %73 ] + %.us-phi141 = phi i64 [ %.sroa.8.0.us, %45 ], [ %.sroa.8.0, %73 ] + %81 = add nuw nsw i64 %.us-phi138, %.us-phi137 + %82 = shl i64 %.us-phi141, 2 + %83 = add nuw nsw i64 %81, 1 + %84 = add i64 %83, %82 + %85 = icmp ult i64 %84, %12 + br i1 %85, label %99, label %102 -107: ; preds = %.split150.us, %.split129.us, %.split136.us, %.split143.us - %.sink = phi i64 [ %99, %.split143.us ], [ %92, %.split136.us ], [ %85, %.split129.us ], [ %104, %.split150.us ] - %108 = getelementptr inbounds nuw i32, ptr %10, i64 %.sink - %.sroa.01.0 = load i32, ptr %108, align 4, !noundef !3 +107: ; preds = %106 + %87 = icmp eq i8 %8, %.sroa.7.0.extract.trunc + br i1 %87, label %.split150.us, label %67 + +.split143.us: ; preds = %79, %47 + %.us-phi144 = phi i64 [ %32, %47 ], [ %60, %79 ] + %.us-phi145 = phi i64 [ %.sroa.03.0.us, %47 ], [ %.sroa.03.0, %79 ] + %.us-phi148 = phi i64 [ %.sroa.8.0.us, %47 ], [ %.sroa.8.0, %79 ] + %88 = add nuw nsw i64 %.us-phi145, %.us-phi144 + %89 = shl i64 %.us-phi148, 2 + %90 = add nuw nsw i64 %88, 2 + %91 = add i64 %90, %89 + %92 = icmp ult i64 %91, %12 + br i1 %92, label %99, label %101 + +.split150.us: ; preds = %86, %49 + %.us-phi151 = phi i64 [ %32, %49 ], [ %60, %86 ] + %.us-phi152 = phi i64 [ %.sroa.03.0.us, %49 ], [ %.sroa.03.0, %86 ] + %.us-phi155 = phi i64 [ %.sroa.8.0.us, %49 ], [ %.sroa.8.0, %86 ] + %93 = add nuw nsw i64 %.us-phi152, %.us-phi151 + %94 = shl i64 %.us-phi155, 2 + %95 = add nuw nsw i64 %93, 3 + %96 = add i64 %95, %94 + %97 = icmp ult i64 %96, %12 + br i1 %97, label %99, label %98 + +98: ; preds = %.split150.us + tail call void @_ZN4core9panicking18panic_bounds_check17h0cc3ae16a8cc728fE(i64 noundef %96, i64 noundef %12, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.19065cf71bd35e27ca4558f14fd94d50.304) #45 + unreachable + +99: ; preds = %.split150.us, %.split129.us, %.split136.us, %.split143.us + %.sink = phi i64 [ %91, %.split143.us ], [ %84, %.split136.us ], [ %77, %.split129.us ], [ %96, %.split150.us ] + %100 = getelementptr inbounds nuw i32, ptr %10, i64 %.sink + %.sroa.01.0 = load i32, ptr %100, align 4, !noundef !3 br label %.loopexit 109: ; preds = %.split143.us - tail call void @_ZN4core9panicking18panic_bounds_check17h0cc3ae16a8cc728fE(i64 noundef %99, i64 noundef %12, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.19065cf71bd35e27ca4558f14fd94d50.305) #45 + tail call void @_ZN4core9panicking18panic_bounds_check17h0cc3ae16a8cc728fE(i64 noundef %91, i64 noundef %12, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.19065cf71bd35e27ca4558f14fd94d50.305) #45 unreachable 110: ; preds = %.split136.us - tail call void @_ZN4core9panicking18panic_bounds_check17h0cc3ae16a8cc728fE(i64 noundef %92, i64 noundef %12, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.19065cf71bd35e27ca4558f14fd94d50.306) #45 + tail call void @_ZN4core9panicking18panic_bounds_check17h0cc3ae16a8cc728fE(i64 noundef %84, i64 noundef %12, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.19065cf71bd35e27ca4558f14fd94d50.306) #45 unreachable 111: ; preds = %.split129.us @@ -131734,7 +131728,7 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a br i1 %115, label %.split.us, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h587a722336d9878bE.exit.thread" .split.us: ; preds = %112, %19 - %.us-phi = phi i64 [ %13, %19 ], [ %55, %112 ] + %.us-phi = phi i64 [ %13, %19 ], [ %55, %104 ] %116 = add nuw nsw i64 %.us-phi, 2 %117 = icmp ult i64 %116, %12 br i1 %117, label %118, label %121 @@ -131755,7 +131749,7 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a br i1 %.not.not, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h587a722336d9878bE.exit.thread", label %.loopexit .split115.us: ; preds = %58, %23 - %.us-phi117 = phi i64 [ %24, %23 ], [ %59, %58 ] + %.us-phi117 = phi i64 [ %24, %23 ], [ %59, %54 ] tail call void @_ZN4core9panicking18panic_bounds_check17h0cc3ae16a8cc728fE(i64 noundef %.us-phi117, i64 noundef %12, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.19065cf71bd35e27ca4558f14fd94d50.311) #45 unreachable @@ -131764,8 +131758,8 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a %126 = icmp ult i64 %125, %12 br i1 %126, label %127, label %.split158 -.loopexit: ; preds = %122, %43, %.loopexit.split.loop.exit101.split.us, %19, %118, %107 - %.sroa.01.1 = phi i32 [ %.sroa.01.0, %107 ], [ %120, %118 ], [ 0, %19 ], [ %28, %.loopexit.split.loop.exit101.split.us ], [ 0, %43 ], [ %124, %122 ] +.loopexit: ; preds = %122, %43, %.loopexit.split.loop.exit101.split.us, %19, %118, %99 + %.sroa.01.1 = phi i32 [ %.sroa.01.0, %99 ], [ %120, %110 ], [ 0, %19 ], [ %28, %.loopexit.split.loop.exit101.split.us ], [ 0, %39 ], [ %124, %114 ] ret i32 %.sroa.01.1 127: ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h587a722336d9878bE.exit.thread" @@ -131883,14 +131877,11 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a 24: ; preds = %17 %25 = zext nneg i32 %19 to i64 - %26 = and i64 %25, 3 - %27 = icmp ne i64 %26, 0 - %28 = lshr i64 %25, 2 - %29 = zext i1 %27 to i64 - %.sroa.0.0.i = add nuw nsw i64 %25, 2 - %30 = add nuw nsw i64 %.sroa.0.0.i, %28 - %31 = add nuw nsw i64 %30, %29 - br label %32 + %26 = add nuw nsw i64 %25, 3 + %.sroa.0.0.i = lshr i64 %26, 2 + %27 = add nuw nsw i64 %25, 2 + %28 = add nuw nsw i64 %27, %.sroa.0.0.i + br label %29 32: ; preds = %24, %22 %.sroa.01.0.i = phi i64 [ %23, %22 ], [ %31, %24 ] @@ -131915,7 +131906,7 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a 43: ; preds = %34 %44 = icmp eq i64 %2, 0 - br i1 %44, label %49, label %51, !prof !863 + br i1 %44, label %49, label %52, !prof !863 45: ; preds = %39 %46 = getelementptr inbounds nuw i32, ptr %16, i64 %41 @@ -131937,7 +131928,7 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a unreachable _ZN12aho_corasick3nfa10contiguous5State13match_pattern17h6511265b75a1a5c8E.exit: ; preds = %45, %49 - %.sroa.05.0.i = phi i32 [ %47, %45 ], [ %50, %49 ] + %.sroa.05.0.i = phi i32 [ %47, %42 ], [ %51, %46 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) ret i32 %.sroa.05.0.i @@ -132024,18 +132015,15 @@ define internal noundef range(i64 0, 2147483648) i64 @"_ZN89_$LT$aho_corasick..n 22: ; preds = %14 %23 = zext nneg i32 %16 to i64 - %24 = and i64 %23, 3 - %25 = icmp ne i64 %24, 0 - %26 = lshr i64 %23, 2 - %27 = zext i1 %25 to i64 - %.sroa.02.0.i = add nuw nsw i64 %23, 2 - %28 = add nuw nsw i64 %.sroa.02.0.i, %26 - %29 = add nuw nsw i64 %28, %27 - %30 = icmp ult i64 %29, %12 - br i1 %30, label %_ZN12aho_corasick3nfa10contiguous5State9match_len17hf33f7c65adf6c728E.exit, label %31 + %24 = add nuw nsw i64 %23, 3 + %.sroa.02.0.i = lshr i64 %24, 2 + %25 = add nuw nsw i64 %23, 2 + %26 = add nuw nsw i64 %25, %.sroa.02.0.i + %27 = icmp ult i64 %26, %12 + br i1 %27, label %_ZN12aho_corasick3nfa10contiguous5State9match_len17hf33f7c65adf6c728E.exit, label %28 31: ; preds = %22 - tail call void @_ZN4core9panicking18panic_bounds_check17h0cc3ae16a8cc728fE(i64 noundef %29, i64 noundef %12, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.19065cf71bd35e27ca4558f14fd94d50.82) #45, !noalias !16606 + tail call void @_ZN4core9panicking18panic_bounds_check17h0cc3ae16a8cc728fE(i64 noundef %26, i64 noundef %12, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.19065cf71bd35e27ca4558f14fd94d50.82) #45, !noalias !16606 unreachable 32: ; preds = %19 @@ -132043,7 +132031,7 @@ define internal noundef range(i64 0, 2147483648) i64 @"_ZN89_$LT$aho_corasick..n unreachable _ZN12aho_corasick3nfa10contiguous5State9match_len17hf33f7c65adf6c728E.exit: ; preds = %19, %22 - %.pn.i = phi i64 [ %29, %22 ], [ %20, %19 ] + %.pn.i = phi i64 [ %26, %22 ], [ %20, %19 ] %.sroa.0.0.in.in.i = getelementptr inbounds nuw i32, ptr %13, i64 %.pn.i %.sroa.0.0.in.i = load i32, ptr %.sroa.0.0.in.in.i, align 4, !alias.scope !16606, !noundef !3 %33 = icmp sgt i32 %.sroa.0.0.in.i, -1 diff --git a/bench/pola-rs/optimized/79mthl535kfgm5ahqdg43dgbx.ll b/bench/pola-rs/optimized/79mthl535kfgm5ahqdg43dgbx.ll index 69a92a2703a..b5a50dab8fc 100644 --- a/bench/pola-rs/optimized/79mthl535kfgm5ahqdg43dgbx.ll +++ b/bench/pola-rs/optimized/79mthl535kfgm5ahqdg43dgbx.ll @@ -6495,14 +6495,14 @@ define hidden void @"_ZN97_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$alloc..ve %.promoted9.i = load i64, ptr %10, align 8, !alias.scope !1382, !noalias !1379 br label %16 -16: ; preds = %61, %.lr.ph.i - %17 = phi i64 [ %.promoted9.i, %.lr.ph.i ], [ %31, %61 ] - %18 = phi ptr [ %.promoted8.i, %.lr.ph.i ], [ %32, %61 ] - %19 = phi i64 [ %.promoted3.i, %.lr.ph.i ], [ %33, %61 ] - %.pre.i.i.i.i.i6.i = phi i64 [ %.phi.trans.insert.i.i.i.i.i.promoted.i, %.lr.ph.i ], [ %37, %61 ] - %20 = phi i64 [ %.promoted5.i, %.lr.ph.i ], [ %38, %61 ] - %21 = phi ptr [ %.promoted.i, %.lr.ph.i ], [ %23, %61 ] - %22 = phi i64 [ %.promoted3.i, %.lr.ph.i ], [ %34, %61 ] +16: ; preds = %58, %.lr.ph.i + %17 = phi i64 [ %.promoted9.i, %.lr.ph.i ], [ %31, %58 ] + %18 = phi ptr [ %.promoted8.i, %.lr.ph.i ], [ %32, %58 ] + %19 = phi i64 [ %.promoted3.i, %.lr.ph.i ], [ %33, %58 ] + %.pre.i.i.i.i.i6.i = phi i64 [ %.phi.trans.insert.i.i.i.i.i.promoted.i, %.lr.ph.i ], [ %37, %58 ] + %20 = phi i64 [ %.promoted5.i, %.lr.ph.i ], [ %38, %58 ] + %21 = phi ptr [ %.promoted.i, %.lr.ph.i ], [ %23, %58 ] + %22 = phi i64 [ %.promoted3.i, %.lr.ph.i ], [ %34, %58 ] tail call void @llvm.experimental.noalias.scope.decl(metadata !1397) tail call void @llvm.experimental.noalias.scope.decl(metadata !1398) tail call void @llvm.experimental.noalias.scope.decl(metadata !1399) @@ -6543,52 +6543,49 @@ define hidden void @"_ZN97_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$alloc..ve %38 = add i64 %35, -1 store i64 %38, ptr %9, align 8, !alias.scope !1406, !noalias !1379 %39 = trunc i64 %36 to i1 - br i1 %39, label %.split.i.i.i.i, label %47 + br i1 %39, label %.split.i.i.i.i, label %44 .split.i.i.i.i: ; preds = %"_ZN102_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcf7d7e6598e69770E.exit.i.i.i" - %40 = lshr i64 %24, 5 - %41 = and i64 %24, 31 - %42 = icmp ne i64 %41, 0 - %43 = zext i1 %42 to i64 - %44 = add nuw nsw i64 %40, %43 - %45 = mul nuw nsw i64 %44, 33 - %46 = add nuw nsw i64 %45, 1 - br label %47 + %40 = add nuw nsw i64 %24, 31 + %41 = lshr i64 %40, 5 + %42 = mul nuw nsw i64 %41, 33 + %43 = add nuw nsw i64 %42, 1 + br label %44 + +44:; preds = %.split.i.i.i.i, %"_ZN102_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcf7d7e6598e69770E.exit.i.i.i" + %.sroa.3.0.i.ph.i.i = phi i64 [ 1, %"_ZN102_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcf7d7e6598e69770E.exit.i.i.i" ], [ %43, %.split.i.i.i.i ] + %45 = load i64, ptr %.val.i.i, align 8, !noalias !1407, !noundef !3 + %46 = add i64 %45, %.sroa.3.0.i.ph.i.i + store i64 %46, ptr %.val.i.i, align 8, !noalias !1407 + %47 = load i64, ptr %.val2.i.i, align 8, !noalias !1407, !noundef !3 + %48 = add i64 %47, %.sroa.3.0.i.ph.i.i + %49 = load i64, ptr %13, align 8, !alias.scope !1379, !noalias !1382, !noundef !3 + %50 = icmp ult i64 %49, 1152921504606846976 + tail call void @llvm.assume(i1 %50) + %51 = load i64, ptr %0, align 8, !range !9, !alias.scope !1379, !noalias !1382, !noundef !3 + %52 = icmp eq i64 %49, %51 + br i1 %52, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h5b9b26d6e78a8ebbE.exit.i", label %58 + +"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h5b9b26d6e78a8ebbE.exit.i": ; preds = %44 + %53 = ptrtoint ptr %23 to i64 + %54 = sub nuw i64 %14, %53 + %55 = lshr exact i64 %54, 4 + %56 = add i64 %38, %33 + %.sroa.0.0.sroa.speculated.i.i.i.i.i.i = tail call noundef i64 @llvm.umin.i64(i64 %56, i64 %55) + %57 = add nuw nsw i64 %.sroa.0.0.sroa.speculated.i.i.i.i.i.i, 1 + tail call void @"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$7reserve21do_reserve_and_handle17hbcbae5e5ac0a5f59E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %49, i64 noundef %57, i64 noundef 8, i64 noundef 8), !noalias !1382 + br label %58 + +58: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h5b9b26d6e78a8ebbE.exit.i", %44 + %59 = load ptr, ptr %15, align 8, !alias.scope !1379, !noalias !1382, !nonnull !3, !noundef !3 + %60 = getelementptr inbounds nuw i64, ptr %59, i64 %49 + store i64 %48, ptr %60, align 8, !noalias !1382 + %61 = add nuw nsw i64 %49, 1 + store i64 %61, ptr %13, align 8, !alias.scope !1379, !noalias !1382 + %62 = icmp eq ptr %23, %6 + br i1 %62, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$16extend_desugared17h6a2139d86de3b75fE.exit", label %16 -47: ; preds = %.split.i.i.i.i, %"_ZN102_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcf7d7e6598e69770E.exit.i.i.i" - %.sroa.3.0.i.ph.i.i = phi i64 [ 1, %"_ZN102_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcf7d7e6598e69770E.exit.i.i.i" ], [ %46, %.split.i.i.i.i ] - %48 = load i64, ptr %.val.i.i, align 8, !noalias !1407, !noundef !3 - %49 = add i64 %48, %.sroa.3.0.i.ph.i.i - store i64 %49, ptr %.val.i.i, align 8, !noalias !1407 - %50 = load i64, ptr %.val2.i.i, align 8, !noalias !1407, !noundef !3 - %51 = add i64 %50, %.sroa.3.0.i.ph.i.i - %52 = load i64, ptr %13, align 8, !alias.scope !1379, !noalias !1382, !noundef !3 - %53 = icmp ult i64 %52, 1152921504606846976 - tail call void @llvm.assume(i1 %53) - %54 = load i64, ptr %0, align 8, !range !9, !alias.scope !1379, !noalias !1382, !noundef !3 - %55 = icmp eq i64 %52, %54 - br i1 %55, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h5b9b26d6e78a8ebbE.exit.i", label %61 - -"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h5b9b26d6e78a8ebbE.exit.i": ; preds = %47 - %56 = ptrtoint ptr %23 to i64 - %57 = sub nuw i64 %14, %56 - %58 = lshr exact i64 %57, 4 - %59 = add i64 %38, %33 - %.sroa.0.0.sroa.speculated.i.i.i.i.i.i = tail call noundef i64 @llvm.umin.i64(i64 %59, i64 %58) - %60 = add nuw nsw i64 %.sroa.0.0.sroa.speculated.i.i.i.i.i.i, 1 - tail call void @"_ZN5alloc7raw_vec20RawVecInner$LT$A$GT$7reserve21do_reserve_and_handle17hbcbae5e5ac0a5f59E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %52, i64 noundef %60, i64 noundef 8, i64 noundef 8), !noalias !1382 - br label %61 - -61: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17h5b9b26d6e78a8ebbE.exit.i", %47 - %62 = load ptr, ptr %15, align 8, !alias.scope !1379, !noalias !1382, !nonnull !3, !noundef !3 - %63 = getelementptr inbounds nuw i64, ptr %62, i64 %52 - store i64 %51, ptr %63, align 8, !noalias !1382 - %64 = add nuw nsw i64 %52, 1 - store i64 %64, ptr %13, align 8, !alias.scope !1379, !noalias !1382 - %65 = icmp eq ptr %23, %6 - br i1 %65, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$16extend_desugared17h6a2139d86de3b75fE.exit", label %16 - -"_ZN5alloc3vec16Vec$LT$T$C$A$GT$16extend_desugared17h6a2139d86de3b75fE.exit": ; preds = %26, %61, %3 +47: ; preds = %26, %58, %3 ret void } diff --git a/bench/pola-rs/optimized/8iz4w28nkww70r589pc3f77b4.ll b/bench/pola-rs/optimized/8iz4w28nkww70r589pc3f77b4.ll index 53dd69c80fc..499a27b44ba 100644 --- a/bench/pola-rs/optimized/8iz4w28nkww70r589pc3f77b4.ll +++ b/bench/pola-rs/optimized/8iz4w28nkww70r589pc3f77b4.ll @@ -20070,15 +20070,12 @@ _ZN4core5alloc6layout6Layout6repeat17hef5345a2963d8f0eE.exit.i.i: ; preds = %3 33: ; preds = %32 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) - %34 = lshr i64 %2, 3 - %35 = and i64 %2, 7 - %.not.i = icmp ne i64 %35, 0 - %36 = zext i1 %.not.i to i64 - %.sroa.0.0.i = add nuw nsw i64 %34, %36 - %37 = icmp samesign ult i64 %.sroa.0.0.i, 1048577 - br i1 %37, label %44, label %38 - -38: ; preds = %33 + %34 = add nuw nsw i64 %2, 7 + %.sroa.0.0.i = lshr i64 %34, 3 + %.not.i = icmp samesign ult i64 %2, 8388609 + br i1 %.not.i, label %42, label %36 + +36:; preds = %.not.i call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6), !noalias !1343 tail call void @llvm.experimental.noalias.scope.decl(metadata !1346) %39 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !1349 @@ -20157,7 +20154,7 @@ _ZN12polars_arrow6bitmap9immutable6Bitmap10new_zeroed17h7442c20f6c736165E.exit: %57 = getelementptr inbounds nuw i8, ptr %8, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %7, ptr noundef nonnull align 8 dereferenceable(64) %57, i64 64, i1 false), !noalias !1354 invoke void @_ZN4core6result13unwrap_failed17h730db56f15e0885aE(ptr noalias noundef nonnull readonly align 1 @anon.82afc2f80d886470e8e8fdc1ceb15811.179, i64 noundef 43, ptr noundef nonnull align 1 %7, ptr noalias noundef readonly align 8 dereferenceable(32) @anon.82afc2f80d886470e8e8fdc1ceb15811.178, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.82afc2f80d886470e8e8fdc1ceb15811.67) #30 - to label %60 unwind label %58, !noalias !1359 + to label %58 unwind label %58, !noalias !1359 58: ; preds = %56 %59 = landingpad { ptr, i32 } @@ -20195,11 +20192,11 @@ _ZN12polars_arrow6bitmap9immutable6Bitmap10new_zeroed17h7442c20f6c736165E.exit: unreachable .body.thread: ; preds = %58, %.thread - %.pn9 = phi { ptr, i32 } [ %.pn10, %.thread ], [ %59, %58 ] + %.pn9 = phi { ptr, i32 } [ %.pn10, %.thread ], [ %59, %56 ] resume { ptr, i32 } %.pn9 .thread: ; preds = %17, %64 - %.pn10 = phi { ptr, i32 } [ %18, %17 ], [ %lpad.thr_comm, %64 ] + %.pn10 = phi { ptr, i32 } [ %18, %17 ], [ %lpad.thr_comm, %62 ] invoke fastcc void @"_ZN4core3ptr59drop_in_place$LT$polars_arrow..datatypes..ArrowDataType$GT$17hbcf7f2f317a6d6b7E"(ptr noalias noundef align 8 dereferenceable(32) %12) #28 to label %.body.thread unwind label %65 } @@ -20268,13 +20265,10 @@ _ZN4core5alloc6layout6Layout6repeat17hef5345a2963d8f0eE.exit.i.i: ; preds = %3 30: ; preds = %29 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) - %31 = lshr i64 %2, 3 - %32 = and i64 %2, 7 - %.not.i = icmp ne i64 %32, 0 - %33 = zext i1 %.not.i to i64 - %.sroa.0.0.i = add nuw nsw i64 %31, %33 - %34 = icmp samesign ult i64 %.sroa.0.0.i, 1048577 - br i1 %34, label %41, label %35 + %31 = add nuw i64 %2, 7 + %.sroa.0.0.i = lshr i64 %31, 3 + %.not.i = icmp samesign ult i64 %2, 8388609 + br i1 %.not.i, label %41, label %33 35: ; preds = %30 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6), !noalias !1368 @@ -20397,7 +20391,7 @@ _ZN12polars_arrow6bitmap9immutable6Bitmap10new_zeroed17h7442c20f6c736165E.exit: resume { ptr, i32 } %.pn9 .thread: ; preds = %14, %61 - %.pn10 = phi { ptr, i32 } [ %15, %14 ], [ %lpad.thr_comm, %61 ] + %.pn10 = phi { ptr, i32 } [ %15, %14 ], [ %lpad.thr_comm, %59 ] invoke fastcc void @"_ZN4core3ptr59drop_in_place$LT$polars_arrow..datatypes..ArrowDataType$GT$17hbcf7f2f317a6d6b7E"(ptr noalias noundef align 8 dereferenceable(32) %12) #28 to label %.body.thread unwind label %62 } @@ -20470,15 +20464,12 @@ _ZN4core5alloc6layout6Layout6repeat17hef5345a2963d8f0eE.exit.i.i: ; preds = %3 33: ; preds = %32 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) - %34 = lshr i64 %2, 3 - %35 = and i64 %2, 7 - %.not.i = icmp ne i64 %35, 0 - %36 = zext i1 %.not.i to i64 - %.sroa.0.0.i = add nuw nsw i64 %34, %36 - %37 = icmp samesign ult i64 %.sroa.0.0.i, 1048577 - br i1 %37, label %44, label %38 - -38: ; preds = %33 + %34 = add nuw nsw i64 %2, 7 + %.sroa.0.0.i = lshr i64 %34, 3 + %.not.i = icmp samesign ult i64 %2, 8388609 + br i1 %.not.i, label %42, label %36 + +36:; preds = %.not.i call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6), !noalias !1393 tail call void @llvm.experimental.noalias.scope.decl(metadata !1396) %39 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !1399 @@ -20557,7 +20548,7 @@ _ZN12polars_arrow6bitmap9immutable6Bitmap10new_zeroed17h7442c20f6c736165E.exit: %57 = getelementptr inbounds nuw i8, ptr %8, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %7, ptr noundef nonnull align 8 dereferenceable(64) %57, i64 64, i1 false), !noalias !1404 invoke void @_ZN4core6result13unwrap_failed17h730db56f15e0885aE(ptr noalias noundef nonnull readonly align 1 @anon.82afc2f80d886470e8e8fdc1ceb15811.179, i64 noundef 43, ptr noundef nonnull align 1 %7, ptr noalias noundef readonly align 8 dereferenceable(32) @anon.82afc2f80d886470e8e8fdc1ceb15811.178, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.82afc2f80d886470e8e8fdc1ceb15811.67) #30 - to label %60 unwind label %58, !noalias !1409 + to label %58 unwind label %58, !noalias !1409 58: ; preds = %56 %59 = landingpad { ptr, i32 } @@ -20595,11 +20586,11 @@ _ZN12polars_arrow6bitmap9immutable6Bitmap10new_zeroed17h7442c20f6c736165E.exit: unreachable .body.thread: ; preds = %58, %.thread - %.pn9 = phi { ptr, i32 } [ %.pn10, %.thread ], [ %59, %58 ] + %.pn9 = phi { ptr, i32 } [ %.pn10, %.thread ], [ %59, %56 ] resume { ptr, i32 } %.pn9 .thread: ; preds = %17, %64 - %.pn10 = phi { ptr, i32 } [ %18, %17 ], [ %lpad.thr_comm, %64 ] + %.pn10 = phi { ptr, i32 } [ %18, %17 ], [ %lpad.thr_comm, %62 ] invoke fastcc void @"_ZN4core3ptr59drop_in_place$LT$polars_arrow..datatypes..ArrowDataType$GT$17hbcf7f2f317a6d6b7E"(ptr noalias noundef align 8 dereferenceable(32) %12) #28 to label %.body.thread unwind label %65 } @@ -20672,15 +20663,12 @@ _ZN4core5alloc6layout6Layout6repeat17hef5345a2963d8f0eE.exit.i.i: ; preds = %3 33: ; preds = %32 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) - %34 = lshr i64 %2, 3 - %35 = and i64 %2, 7 - %.not.i = icmp ne i64 %35, 0 - %36 = zext i1 %.not.i to i64 - %.sroa.0.0.i = add nuw nsw i64 %34, %36 - %37 = icmp samesign ult i64 %.sroa.0.0.i, 1048577 - br i1 %37, label %44, label %38 - -38: ; preds = %33 + %34 = add nuw nsw i64 %2, 7 + %.sroa.0.0.i = lshr i64 %34, 3 + %.not.i = icmp samesign ult i64 %2, 8388609 + br i1 %.not.i, label %42, label %36 + +36:; preds = %.not.i call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6), !noalias !1418 tail call void @llvm.experimental.noalias.scope.decl(metadata !1421) %39 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !1424 @@ -20759,7 +20747,7 @@ _ZN12polars_arrow6bitmap9immutable6Bitmap10new_zeroed17h7442c20f6c736165E.exit: %57 = getelementptr inbounds nuw i8, ptr %8, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %7, ptr noundef nonnull align 8 dereferenceable(64) %57, i64 64, i1 false), !noalias !1429 invoke void @_ZN4core6result13unwrap_failed17h730db56f15e0885aE(ptr noalias noundef nonnull readonly align 1 @anon.82afc2f80d886470e8e8fdc1ceb15811.179, i64 noundef 43, ptr noundef nonnull align 1 %7, ptr noalias noundef readonly align 8 dereferenceable(32) @anon.82afc2f80d886470e8e8fdc1ceb15811.178, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.82afc2f80d886470e8e8fdc1ceb15811.67) #30 - to label %60 unwind label %58, !noalias !1434 + to label %58 unwind label %58, !noalias !1434 58: ; preds = %56 %59 = landingpad { ptr, i32 } @@ -20797,11 +20785,11 @@ _ZN12polars_arrow6bitmap9immutable6Bitmap10new_zeroed17h7442c20f6c736165E.exit: unreachable .body.thread: ; preds = %58, %.thread - %.pn9 = phi { ptr, i32 } [ %.pn10, %.thread ], [ %59, %58 ] + %.pn9 = phi { ptr, i32 } [ %.pn10, %.thread ], [ %59, %56 ] resume { ptr, i32 } %.pn9 .thread: ; preds = %17, %64 - %.pn10 = phi { ptr, i32 } [ %18, %17 ], [ %lpad.thr_comm, %64 ] + %.pn10 = phi { ptr, i32 } [ %18, %17 ], [ %lpad.thr_comm, %62 ] invoke fastcc void @"_ZN4core3ptr59drop_in_place$LT$polars_arrow..datatypes..ArrowDataType$GT$17hbcf7f2f317a6d6b7E"(ptr noalias noundef align 8 dereferenceable(32) %12) #28 to label %.body.thread unwind label %65 } @@ -20874,15 +20862,12 @@ _ZN4core5alloc6layout6Layout6repeat17hef5345a2963d8f0eE.exit.i.i: ; preds = %3 33: ; preds = %32 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) - %34 = lshr i64 %2, 3 - %35 = and i64 %2, 7 - %.not.i = icmp ne i64 %35, 0 - %36 = zext i1 %.not.i to i64 - %.sroa.0.0.i = add nuw nsw i64 %34, %36 - %37 = icmp samesign ult i64 %.sroa.0.0.i, 1048577 - br i1 %37, label %44, label %38 - -38: ; preds = %33 + %34 = add nuw i64 %2, 7 + %.sroa.0.0.i = lshr i64 %34, 3 + %.not.i = icmp samesign ult i64 %2, 8388609 + br i1 %.not.i, label %42, label %36 + +36:; preds = %.not.i call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6), !noalias !1443 tail call void @llvm.experimental.noalias.scope.decl(metadata !1446) %39 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !1449 @@ -20961,7 +20946,7 @@ _ZN12polars_arrow6bitmap9immutable6Bitmap10new_zeroed17h7442c20f6c736165E.exit: %57 = getelementptr inbounds nuw i8, ptr %8, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %7, ptr noundef nonnull align 8 dereferenceable(64) %57, i64 64, i1 false), !noalias !1454 invoke void @_ZN4core6result13unwrap_failed17h730db56f15e0885aE(ptr noalias noundef nonnull readonly align 1 @anon.82afc2f80d886470e8e8fdc1ceb15811.179, i64 noundef 43, ptr noundef nonnull align 1 %7, ptr noalias noundef readonly align 8 dereferenceable(32) @anon.82afc2f80d886470e8e8fdc1ceb15811.178, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.82afc2f80d886470e8e8fdc1ceb15811.67) #30 - to label %60 unwind label %58, !noalias !1459 + to label %58 unwind label %58, !noalias !1459 58: ; preds = %56 %59 = landingpad { ptr, i32 } @@ -20999,11 +20984,11 @@ _ZN12polars_arrow6bitmap9immutable6Bitmap10new_zeroed17h7442c20f6c736165E.exit: unreachable .body.thread: ; preds = %58, %.thread - %.pn9 = phi { ptr, i32 } [ %.pn10, %.thread ], [ %59, %58 ] + %.pn9 = phi { ptr, i32 } [ %.pn10, %.thread ], [ %59, %56 ] resume { ptr, i32 } %.pn9 .thread: ; preds = %17, %64 - %.pn10 = phi { ptr, i32 } [ %18, %17 ], [ %lpad.thr_comm, %64 ] + %.pn10 = phi { ptr, i32 } [ %18, %17 ], [ %lpad.thr_comm, %62 ] invoke fastcc void @"_ZN4core3ptr59drop_in_place$LT$polars_arrow..datatypes..ArrowDataType$GT$17hbcf7f2f317a6d6b7E"(ptr noalias noundef align 8 dereferenceable(32) %12) #28 to label %.body.thread unwind label %65 } diff --git a/bench/pola-rs/optimized/90bdyry49xwqsl9ia2234gmqh.ll b/bench/pola-rs/optimized/90bdyry49xwqsl9ia2234gmqh.ll index 5d82b7a29e4..97146cd4999 100644 --- a/bench/pola-rs/optimized/90bdyry49xwqsl9ia2234gmqh.ll +++ b/bench/pola-rs/optimized/90bdyry49xwqsl9ia2234gmqh.ll @@ -13449,15 +13449,12 @@ _ZN4core5alloc6layout6Layout6repeat17hef5345a2963d8f0eE.exit.i.i: ; preds = %3 33: ; preds = %32 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) - %34 = lshr i64 %2, 3 - %35 = and i64 %2, 7 - %.not.i = icmp ne i64 %35, 0 - %36 = zext i1 %.not.i to i64 - %.sroa.0.0.i = add nuw nsw i64 %34, %36 - %37 = icmp samesign ult i64 %.sroa.0.0.i, 1048577 - br i1 %37, label %46, label %38 - -38: ; preds = %33 + %34 = add nuw nsw i64 %2, 7 + %.sroa.0.0.i = lshr i64 %34, 3 + %.not.i = icmp samesign ult i64 %2, 8388609 + br i1 %.not.i, label %44, label %36 + +36:; preds = %33 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6), !noalias !895 tail call void @llvm.experimental.noalias.scope.decl(metadata !898) %39 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !901 @@ -13465,14 +13462,14 @@ _ZN4core5alloc6layout6Layout6repeat17hef5345a2963d8f0eE.exit.i.i: ; preds = %3 %41 = icmp eq ptr %40, null br i1 %41, label %42, label %"_ZN63_$LT$u8$u20$as$u20$alloc..vec..spec_from_elem..SpecFromElem$GT$9from_elem17hed96c2aa7e50502aE.exit.i" -42: ; preds = %38 +42: ; preds = %36 invoke void @_ZN5alloc7raw_vec12handle_error17hd116ab85b3f6d03eE(i64 noundef 1, i64 range(i64 1048577, 2305843009213693953) %.sroa.0.0.i, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.4823a205e4f8b8ccb3acd5e2c12081f0.58) #35 to label %.noexc4 unwind label %66 .noexc4: ; preds = %42 unreachable -"_ZN63_$LT$u8$u20$as$u20$alloc..vec..spec_from_elem..SpecFromElem$GT$9from_elem17hed96c2aa7e50502aE.exit.i": ; preds = %38 +"_ZN63_$LT$u8$u20$as$u20$alloc..vec..spec_from_elem..SpecFromElem$GT$9from_elem17hed96c2aa7e50502aE.exit.i": ; preds = %36 store i64 %.sroa.0.0.i, ptr %6, align 8, !alias.scope !898, !noalias !895 %43 = getelementptr inbounds nuw i8, ptr %6, i64 8 store ptr %40, ptr %43, align 8, !alias.scope !898, !noalias !895 @@ -13515,7 +13512,7 @@ _ZN3std4sync6poison4once4Once9call_once17h6f3c4d6d87cbbe83E.exit.i: ; preds = %. br label %_ZN12polars_arrow6bitmap9immutable6Bitmap10new_zeroed17h7442c20f6c736165E.exit _ZN12polars_arrow6bitmap9immutable6Bitmap10new_zeroed17h7442c20f6c736165E.exit: ; preds = %53, %_ZN3std4sync6poison4once4Once9call_once17h6f3c4d6d87cbbe83E.exit.i, %.noexc5 - %.sroa.02.0.i = phi ptr [ %45, %.noexc5 ], [ %50, %53 ], [ %50, %_ZN3std4sync6poison4once4Once9call_once17h6f3c4d6d87cbbe83E.exit.i ] + %.sroa.02.0.i = phi ptr [ %45, %.noexc5 ], [ %50, %51 ], [ %50, %_ZN3std4sync6poison4once4Once9call_once17h6f3c4d6d87cbbe83E.exit.i ] store ptr %.sroa.02.0.i, ptr %9, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %9, i64 8 store i64 0, ptr %.sroa.4.0..sroa_idx, align 8 @@ -13536,7 +13533,7 @@ _ZN12polars_arrow6bitmap9immutable6Bitmap10new_zeroed17h7442c20f6c736165E.exit: %59 = getelementptr inbounds nuw i8, ptr %8, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %7, ptr noundef nonnull align 8 dereferenceable(64) %59, i64 64, i1 false), !noalias !910 invoke void @_ZN4core6result13unwrap_failed17h730db56f15e0885aE(ptr noalias noundef nonnull readonly align 1 @anon.4823a205e4f8b8ccb3acd5e2c12081f0.123, i64 noundef 43, ptr noundef nonnull align 1 %7, ptr noalias noundef readonly align 8 dereferenceable(32) @anon.4823a205e4f8b8ccb3acd5e2c12081f0.122, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.4823a205e4f8b8ccb3acd5e2c12081f0.56) #35 - to label %62 unwind label %60, !noalias !913 + to label %60 unwind label %60, !noalias !913 60: ; preds = %58 %61 = landingpad { ptr, i32 } @@ -13574,11 +13571,11 @@ _ZN12polars_arrow6bitmap9immutable6Bitmap10new_zeroed17h7442c20f6c736165E.exit: unreachable .body.thread: ; preds = %60, %.thread - %.pn9 = phi { ptr, i32 } [ %.pn10, %.thread ], [ %61, %60 ] + %.pn9 = phi { ptr, i32 } [ %.pn10, %.thread ], [ %61, %58 ] resume { ptr, i32 } %.pn9 .thread: ; preds = %17, %66 - %.pn10 = phi { ptr, i32 } [ %18, %17 ], [ %lpad.thr_comm, %66 ] + %.pn10 = phi { ptr, i32 } [ %18, %17 ], [ %lpad.thr_comm, %64 ] invoke void @"_ZN4core3ptr59drop_in_place$LT$polars_arrow..datatypes..ArrowDataType$GT$17h5f8e0d69e6d0c220E"(ptr noalias noundef nonnull align 8 dereferenceable(32) %12) #32 to label %.body.thread unwind label %67 } diff --git a/bench/pola-rs/optimized/dfnuuwew9rjefyx0hf8efvszi.ll b/bench/pola-rs/optimized/dfnuuwew9rjefyx0hf8efvszi.ll index f0e2063c3a1..66767b128a3 100644 --- a/bench/pola-rs/optimized/dfnuuwew9rjefyx0hf8efvszi.ll +++ b/bench/pola-rs/optimized/dfnuuwew9rjefyx0hf8efvszi.ll @@ -8325,22 +8325,19 @@ _ZN14polars_parquet7parquet8encoding7uleb1286encode17h47e23aa0bc6ec121E.exit: ; "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h27665d27856e7d26E.exit13": ; preds = %_ZN14polars_parquet7parquet8encoding7uleb1286encode17h47e23aa0bc6ec121E.exit call void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$17extend_from_slice17hb4bedd8121c1f674E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %0, ptr noalias noundef nonnull readonly align 1 %6, i64 noundef %.sroa.09.0.i.add, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.a96b5e9258cdab0d6665d86ea4df4314.36) %18 = zext i32 %3 to i64 - %19 = lshr i64 %18, 3 - %20 = and i64 %18, 7 - %21 = icmp ne i64 %20, 0 - %22 = zext i1 %21 to i64 - %23 = add nuw nsw i64 %19, %22 + %19 = add nuw nsw i64 %18, 7 + %20 = lshr i64 %19, 3 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) store i32 %2, ptr %5, align 4 - %24 = icmp samesign ugt i64 %23, 4 + %24 = icmp ugt i32 %3, 32 br i1 %24, label %25, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h27665d27856e7d26E.exit", !prof !290 25: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h27665d27856e7d26E.exit13" - call void @_ZN4core5slice5index24slice_end_index_len_fail17h3977c10d2b967b2dE(i64 noundef %23, i64 noundef 4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.a96b5e9258cdab0d6665d86ea4df4314.140) #31, !noalias !1392 + call void @_ZN4core5slice5index24slice_end_index_len_fail17h3977c10d2b967b2dE(i64 noundef %20, i64 noundef 4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.a96b5e9258cdab0d6665d86ea4df4314.140) #31, !noalias !1392 unreachable "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h27665d27856e7d26E.exit": ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h27665d27856e7d26E.exit13" - call void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$17extend_from_slice17hb4bedd8121c1f674E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %0, ptr noalias noundef nonnull readonly align 1 %5, i64 noundef %23, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.a96b5e9258cdab0d6665d86ea4df4314.36) + call void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$17extend_from_slice17hb4bedd8121c1f674E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %0, ptr noalias noundef nonnull readonly align 1 %5, i64 noundef %20, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.a96b5e9258cdab0d6665d86ea4df4314.36) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) call void @llvm.lifetime.end.p0(i64 10, ptr nonnull %6) ret void diff --git a/bench/quiche-rs/optimized/06b42xxedqi52uuzk83asr46k.ll b/bench/quiche-rs/optimized/06b42xxedqi52uuzk83asr46k.ll index 8b36d7cde81..8e39daa8b5a 100644 --- a/bench/quiche-rs/optimized/06b42xxedqi52uuzk83asr46k.ll +++ b/bench/quiche-rs/optimized/06b42xxedqi52uuzk83asr46k.ll @@ -7144,19 +7144,13 @@ _ZN4core3fmt9Formatter9write_fmt17h84cdd179c532562aE.exit96: ; preds = %_ZN4core } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable -define noundef range(i64 0, 10) i64 @_ZN6quiche6packet11pkt_num_len17h246dbb8a0458762fE(i64 noundef %0, i64 noundef %1) unnamed_addr #3 { +define noundef range(i64 0, 9) i64 @_ZN6quiche6packet11pkt_num_len17h246dbb8a0458762fE(i64 noundef %0, i64 noundef %1) unnamed_addr #3 { %3 = tail call i64 @llvm.usub.sat.i64(i64 %0, i64 %1) %4 = add i64 %3, 1 %5 = tail call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %4, i1 false) - %6 = trunc nuw nsw i64 %5 to i32 - %7 = sub nuw nsw i32 64, %6 - %8 = lshr i32 %7, 3 - %9 = and i32 %7, 7 - %.not = icmp ne i32 %9, 0 - %10 = zext i1 %.not to i32 - %.sroa.0.0 = add nuw nsw i32 %8, %10 - %11 = zext nneg i32 %.sroa.0.0 to i64 - ret i64 %11 + %6 = sub nuw nsw i64 71, %5 + %.sroa.0.0 = lshr i64 %6, 3 + ret i64 %.sroa.0.0 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/ripgrep-rs/optimized/544b63jf571x6ld1.ll b/bench/ripgrep-rs/optimized/544b63jf571x6ld1.ll index 14341ba0f65..89494110a31 100644 --- a/bench/ripgrep-rs/optimized/544b63jf571x6ld1.ll +++ b/bench/ripgrep-rs/optimized/544b63jf571x6ld1.ll @@ -702,46 +702,43 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a 29: ; preds = %.lr.ph.split.us %30 = and i32 %18, 255 - %31 = zext nneg i32 %30 to i64 - %32 = and i64 %31, 3 - %33 = icmp ne i64 %32, 0 - %34 = lshr i64 %31, 2 - %35 = zext i1 %33 to i64 - %.0.us = add nuw nsw i64 %34, %35 - %36 = add nuw nsw i64 %13, 2 - %37 = icmp ugt i64 %36, %12 - br i1 %37, label %.split173.us, label %38 - -38: ; preds = %29 - %39 = sub nuw i64 %12, %36 - %40 = icmp ugt i64 %.0.us, %39 - br i1 %40, label %.split177.us, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5b6de3bc991b0b08E.exit.us" - -"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5b6de3bc991b0b08E.exit.us": ; preds = %38 - %41 = getelementptr inbounds nuw i32, ptr %10, i64 %36 - %42 = getelementptr inbounds nuw i32, ptr %41, i64 %.0.us - br label %43 - -43: ; preds = %53, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5b6de3bc991b0b08E.exit.us" - %.sroa.8.0.us = phi i64 [ 0, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5b6de3bc991b0b08E.exit.us" ], [ %46, %53 ] - %.sroa.0.0.us = phi ptr [ %41, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5b6de3bc991b0b08E.exit.us" ], [ %45, %53 ] - %44 = icmp eq ptr %.sroa.0.0.us, %42 - br i1 %44, label %.loopexit, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h9c10b3a9556de695E.exit.us" - -"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h9c10b3a9556de695E.exit.us": ; preds = %43 - %45 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.us, i64 4 - %46 = add nuw nsw i64 %.sroa.8.0.us, 1 - %47 = load i32, ptr %.sroa.0.0.us, align 4, !noundef !5 - %.sroa.08.0.extract.trunc.us = trunc i32 %47 to i8 - %.sroa.69.0.extract.shift.us = lshr i32 %47, 16 + %narrow.us = add nuw nsw i32 %30, 3 + %31 = lshr i32 %narrow.us, 2 + %.0.us = zext nneg i32 %31 to i64 + %32 = add nuw nsw i64 %13, 2 + %33 = icmp ugt i64 %32, %12 + br i1 %33, label %.split173.us, label %34 + +34:; preds = %32 + %35 = sub nuw i64 %12, %32 + %36 = icmp ult i64 %35, %.0.us + br i1 %36, label %.split177.us, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5b6de3bc991b0b08E.exit.us" + +"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5b6de3bc991b0b08E.exit.us":; preds = %34 + %40 = getelementptr inbounds nuw i32, ptr %10, i64 %32 + %38 = getelementptr inbounds nuw i32, ptr %37, i64 %.0.us + br label %39 + +39: ; preds = %49, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5b6de3bc991b0b08E.exit.us" + %.sroa.8.0.us = phi i64 [ 0, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5b6de3bc991b0b08E.exit.us" ], [ %42, %49 ] + %.sroa.0.0.us = phi ptr [ %37, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5b6de3bc991b0b08E.exit.us" ], [ %41, %49 ] + %40 = icmp eq ptr %.sroa.0.0.us, %38 + br i1 %40, label %.loopexit, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h9c10b3a9556de695E.exit.us" + +"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h9c10b3a9556de695E.exit.us":; preds = %42 + %44 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.us, i64 4 + %42 = add nuw nsw i64 %.sroa.8.0.us, 1 + %43 = load i32, ptr %.sroa.0.0.us, align 4, !noundef !5 + %.sroa.08.0.extract.trunc.us = trunc i32 %43 to i8 + %.sroa.69.0.extract.shift.us = lshr i32 %43, 16 %.sroa.69.0.extract.trunc.us = trunc i32 %.sroa.69.0.extract.shift.us to i8 - %.sroa.7.0.extract.shift.us = lshr i32 %47, 24 + %.sroa.7.0.extract.shift.us = lshr i32 %43, 24 %.sroa.7.0.extract.trunc.us = trunc nuw i32 %.sroa.7.0.extract.shift.us to i8 %48 = icmp eq i8 %8, %.sroa.08.0.extract.trunc.us br i1 %48, label %.split181.us, label %49 49: ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h9c10b3a9556de695E.exit.us" - %.sroa.5.0.extract.shift.us = lshr i32 %47, 8 + %.sroa.5.0.extract.shift.us = lshr i32 %43, 8 %.sroa.5.0.extract.trunc.us = trunc i32 %.sroa.5.0.extract.shift.us to i8 %50 = icmp eq i8 %8, %.sroa.5.0.extract.trunc.us br i1 %50, label %.split188.us, label %51 @@ -752,20 +749,20 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a 53: ; preds = %51 %54 = icmp eq i8 %8, %.sroa.7.0.extract.trunc.us - br i1 %54, label %.split202.us, label %43 + br i1 %54, label %.split202.us, label %39 .lr.ph.split: ; preds = %.lr.ph, %127 - %55 = phi i64 [ %130, %127 ], [ %13, %.lr.ph ] + %55 = phi i64 [ %130, %119 ], [ %13, %.lr.ph ] %56 = getelementptr inbounds nuw [0 x i32], ptr %10, i64 0, i64 %55 %57 = load i32, ptr %56, align 4, !noundef !5 %trunc = trunc i32 %57 to i8 - switch i8 %trunc, label %61 [ + switch i8 %trunc, label %57 [ i8 -1, label %58 i8 -2, label %112 ] ._crit_edge: ; preds = %127, %4 - %.lcssa141 = phi i64 [ %13, %4 ], [ %130, %127 ] + %.lcssa141 = phi i64 [ %13, %4 ], [ %130, %119 ] tail call void @_ZN4core9panicking18panic_bounds_check17he5254f424ac3a4c4E(i64 noundef %.lcssa141, i64 noundef %12, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.e316c324bdc0d28376b7586f951427b3.37) #13 unreachable @@ -776,40 +773,37 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a 61: ; preds = %.lr.ph.split %62 = and i32 %57, 255 - %63 = zext nneg i32 %62 to i64 - %64 = and i64 %63, 3 - %65 = icmp ne i64 %64, 0 - %66 = lshr i64 %63, 2 - %67 = zext i1 %65 to i64 - %.0 = add nuw nsw i64 %66, %67 - %68 = add nuw nsw i64 %55, 2 - %69 = icmp ugt i64 %68, %12 - br i1 %69, label %.split173.us, label %70 - -70: ; preds = %61 - %71 = sub nuw i64 %12, %68 - %72 = icmp ugt i64 %.0, %71 - br i1 %72, label %.split177.us, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5b6de3bc991b0b08E.exit" - -.split177.us: ; preds = %70, %38 - %.us-phi178 = phi i64 [ %39, %38 ], [ %71, %70 ] - %.us-phi179 = phi i64 [ %.0.us, %38 ], [ %.0, %70 ] + %narrow = add nuw nsw i32 %62, 3 + %59 = lshr i32 %narrow, 2 + %.0 = zext nneg i32 %59 to i64 + %60 = add nuw nsw i64 %51, 2 + %61 = icmp ugt i64 %60, %12 + br i1 %61, label %.split173.us, label %62 + +62:; preds = %61 + %63 = sub nuw i64 %12, %60 + %64 = icmp ult i64 %63, %.0 + br i1 %64, label %.split177.us, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5b6de3bc991b0b08E.exit" + +.split177.us:; preds = %62, %34 + %.us-phi178 = phi i64 [ %35, %34 ], [ %63, %62 ] + %.us-phi179 = phi i64 [ %.0.us, %34 ], [ %.0, %62 ] tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h332fde1d59776f82E(i64 noundef range(i64 0, 65) %.us-phi179, i64 noundef range(i64 0, -2) %.us-phi178, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.e316c324bdc0d28376b7586f951427b3.38) #13, !noalias !20 unreachable -"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5b6de3bc991b0b08E.exit": ; preds = %70 - %73 = getelementptr inbounds nuw i32, ptr %10, i64 %68 +"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5b6de3bc991b0b08E.exit": ; preds = %62 + %73 = getelementptr inbounds nuw i32, ptr %10, i64 %60 %74 = getelementptr inbounds nuw i32, ptr %73, i64 %.0 br label %75 .split173.us: ; preds = %61, %29 - %.us-phi175 = phi i64 [ %36, %29 ], [ %68, %61 ] + %.us-phi175 = phi i64 [ %32, %29 ], [ %60, %57 ] tail call void @_ZN4core5slice5index26slice_start_index_len_fail17hdaca407d67a34612E(i64 noundef %.us-phi175, i64 noundef %12, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.e316c324bdc0d28376b7586f951427b3.43) #13 unreachable 75: ; preds = %94, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5b6de3bc991b0b08E.exit" - %.sroa.8.0 = phi i64 [ 0, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5b6de3bc991b0b08E.exit" ], [ %78, %94 ] - %.sroa.0.0 = phi ptr [ %73, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5b6de3bc991b0b08E.exit" ], [ %77, %94 ] + %.sroa.8.0 = phi i64 [ 0, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5b6de3bc991b0b08E.exit" ], [ %78, %86 ] + %.sroa.0.0 = phi ptr [ %73, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h5b6de3bc991b0b08E.exit" ], [ %77, %86 ] %76 = icmp eq ptr %.sroa.0.0, %74 br i1 %76, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h9c10b3a9556de695E.exit.thread", label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h9c10b3a9556de695E.exit" @@ -832,7 +826,7 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a br i1 %82, label %.split188.us, label %87 .split181.us: ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h9c10b3a9556de695E.exit", %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h9c10b3a9556de695E.exit.us" - %.us-phi182 = phi i64 [ %36, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h9c10b3a9556de695E.exit.us" ], [ %68, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h9c10b3a9556de695E.exit" ] + %.us-phi182 = phi i64 [ %32, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h9c10b3a9556de695E.exit.us" ], [ %60, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h9c10b3a9556de695E.exit" ] %.us-phi183 = phi i64 [ %.0.us, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h9c10b3a9556de695E.exit.us" ], [ %.0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h9c10b3a9556de695E.exit" ] %.us-phi186 = phi i64 [ %.sroa.8.0.us, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h9c10b3a9556de695E.exit.us" ], [ %.sroa.8.0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h9c10b3a9556de695E.exit" ] %83 = add nuw nsw i64 %.us-phi183, %.us-phi182 @@ -846,9 +840,9 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a br i1 %88, label %.split195.us, label %94 .split188.us: ; preds = %81, %49 - %.us-phi189 = phi i64 [ %36, %49 ], [ %68, %81 ] - %.us-phi190 = phi i64 [ %.0.us, %49 ], [ %.0, %81 ] - %.us-phi193 = phi i64 [ %.sroa.8.0.us, %49 ], [ %.sroa.8.0, %81 ] + %.us-phi189 = phi i64 [ %32, %45 ], [ %60, %73 ] + %.us-phi190 = phi i64 [ %.0.us, %45 ], [ %.0, %73 ] + %.us-phi193 = phi i64 [ %.sroa.8.0.us, %45 ], [ %.sroa.8.0, %73 ] %89 = add nuw nsw i64 %.us-phi190, %.us-phi189 %90 = shl i64 %.us-phi193, 2 %91 = add nuw nsw i64 %89, 1 @@ -861,9 +855,9 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a br i1 %95, label %.split202.us, label %75 .split195.us: ; preds = %87, %51 - %.us-phi196 = phi i64 [ %36, %51 ], [ %68, %87 ] - %.us-phi197 = phi i64 [ %.0.us, %51 ], [ %.0, %87 ] - %.us-phi200 = phi i64 [ %.sroa.8.0.us, %51 ], [ %.sroa.8.0, %87 ] + %.us-phi196 = phi i64 [ %32, %50 ], [ %60, %79 ] + %.us-phi197 = phi i64 [ %.0.us, %50 ], [ %.0, %79 ] + %.us-phi200 = phi i64 [ %.sroa.8.0.us, %50 ], [ %.sroa.8.0, %79 ] %96 = add nuw nsw i64 %.us-phi197, %.us-phi196 %97 = shl i64 %.us-phi200, 2 %98 = add nuw nsw i64 %96, 2 @@ -872,9 +866,9 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a br i1 %100, label %107, label %109, !prof !18 .split202.us: ; preds = %94, %53 - %.us-phi203 = phi i64 [ %36, %53 ], [ %68, %94 ] - %.us-phi204 = phi i64 [ %.0.us, %53 ], [ %.0, %94 ] - %.us-phi207 = phi i64 [ %.sroa.8.0.us, %53 ], [ %.sroa.8.0, %94 ] + %.us-phi203 = phi i64 [ %32, %49 ], [ %60, %86 ] + %.us-phi204 = phi i64 [ %.0.us, %49 ], [ %.0, %86 ] + %.us-phi207 = phi i64 [ %.sroa.8.0.us, %49 ], [ %.sroa.8.0, %86 ] %101 = add nuw nsw i64 %.us-phi204, %.us-phi203 %102 = shl i64 %.us-phi207, 2 %103 = add nuw nsw i64 %101, 3 @@ -911,7 +905,7 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a br i1 %115, label %.split.us, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h9c10b3a9556de695E.exit.thread" .split.us: ; preds = %112, %19 - %.us-phi = phi i64 [ %13, %19 ], [ %55, %112 ] + %.us-phi = phi i64 [ %13, %19 ], [ %55, %104 ] %116 = add nuw nsw i64 %.us-phi, 2 %117 = icmp ult i64 %116, %12 br i1 %117, label %118, label %121, !prof !18 @@ -932,7 +926,7 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a br i1 %.not.not, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h9c10b3a9556de695E.exit.thread", label %.loopexit .split167.us: ; preds = %58, %23 - %.us-phi169 = phi i64 [ %24, %23 ], [ %59, %58 ] + %.us-phi169 = phi i64 [ %24, %23 ], [ %59, %54 ] tail call void @_ZN4core9panicking18panic_bounds_check17he5254f424ac3a4c4E(i64 noundef %.us-phi169, i64 noundef %12, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.e316c324bdc0d28376b7586f951427b3.46) #13 unreachable @@ -941,8 +935,8 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a %126 = icmp ult i64 %125, %12 br i1 %126, label %127, label %.split210, !prof !18 -.loopexit: ; preds = %122, %43, %.loopexit.split.loop.exit153.split.us, %19, %118, %107 - %.1 = phi i32 [ %.068, %107 ], [ %120, %118 ], [ 0, %19 ], [ %28, %.loopexit.split.loop.exit153.split.us ], [ 0, %43 ], [ %124, %122 ] +.loopexit: ; preds = %122, %39, %.loopexit.split.loop.exit153.split.us, %19, %118, %107 + %.1 = phi i32 [ %.068, %99 ], [ %120, %110 ], [ 0, %19 ], [ %28, %.loopexit.split.loop.exit153.split.us ], [ 0, %39 ], [ %124, %114 ] ret i32 %.1 127: ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h9c10b3a9556de695E.exit.thread" @@ -1054,27 +1048,24 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a 24: ; preds = %17 %25 = zext nneg i32 %19 to i64 - %26 = and i64 %25, 3 - %27 = icmp ne i64 %26, 0 - %28 = lshr i64 %25, 2 - %29 = zext i1 %27 to i64 - %.08.i = add nuw nsw i64 %25, 2 - %30 = add nuw nsw i64 %.08.i, %28 - %31 = add nuw nsw i64 %30, %29 - br label %32 - -32: ; preds = %24, %22 - %.09.i = phi i64 [ %23, %22 ], [ %31, %24 ] - %33 = icmp ult i64 %.09.i, %15 - br i1 %33, label %34, label %38, !prof !18 - -34: ; preds = %32 - %35 = getelementptr inbounds [0 x i32], ptr %16, i64 0, i64 %.09.i - %36 = load i32, ptr %35, align 4, !alias.scope !24, !noundef !5 - %37 = icmp sgt i32 %36, -1 - br i1 %37, label %39, label %43 - -38: ; preds = %32 + %26 = add nuw nsw i64 %25, 3 + %.08.i = lshr i64 %26, 2 + %27 = add nuw nsw i64 %25, 2 + %28 = add nuw nsw i64 %27, %.08.i + br label %29 + +32:; preds = %24, %22 + %.09.i = phi i64 [ %23, %22 ], [ %28, %24 ] + %30 = icmp ult i64 %.09.i, %15 + br i1 %30, label %34, label %35, !prof !18 + +31:; preds = %29 + %32 = getelementptr inbounds [0 x i32], ptr %16, i64 0, i64 %.09.i + %33 = load i32, ptr %32, align 4, !alias.scope !24, !noundef !5 + %34 = icmp sgt i32 %33, -1 + br i1 %34, label %36, label %40 + +35:; preds = %32 tail call void @_ZN4core9panicking18panic_bounds_check17he5254f424ac3a4c4E(i64 noundef %.09.i, i64 noundef %15, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.e316c324bdc0d28376b7586f951427b3.14) #13, !noalias !24 unreachable @@ -1086,7 +1077,7 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a 43: ; preds = %34 %44 = icmp eq i64 %2, 0 - br i1 %44, label %49, label %51 + br i1 %44, label %49, label %52 45: ; preds = %39 %46 = getelementptr inbounds [0 x i32], ptr %16, i64 0, i64 %41 @@ -1098,7 +1089,7 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a unreachable 49: ; preds = %43 - %50 = and i32 %36, 2147483647 + %50 = and i32 %33, 2147483647 br label %_ZN12aho_corasick3nfa10contiguous5State13match_pattern17h3a2375ee6765aef4E.exit 51: ; preds = %43 @@ -1108,7 +1099,7 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a unreachable _ZN12aho_corasick3nfa10contiguous5State13match_pattern17h3a2375ee6765aef4E.exit: ; preds = %45, %49 - %.0.i = phi i32 [ %47, %45 ], [ %50, %49 ] + %.0.i = phi i32 [ %47, %42 ], [ %51, %46 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) ret i32 %.0.i @@ -1195,18 +1186,15 @@ define internal noundef range(i64 0, 2147483648) i64 @"_ZN89_$LT$aho_corasick..n 22: ; preds = %14 %23 = zext nneg i32 %16 to i64 - %24 = and i64 %23, 3 - %25 = icmp ne i64 %24, 0 - %26 = lshr i64 %23, 2 - %27 = zext i1 %25 to i64 - %.03.i = add nuw nsw i64 %23, 2 - %28 = add nuw nsw i64 %.03.i, %26 - %29 = add nuw nsw i64 %28, %27 - %30 = icmp ult i64 %29, %12 - br i1 %30, label %_ZN12aho_corasick3nfa10contiguous5State9match_len17hd21b541d2068b2cbE.exit, label %31, !prof !18 - -31: ; preds = %22 - tail call void @_ZN4core9panicking18panic_bounds_check17he5254f424ac3a4c4E(i64 noundef %29, i64 noundef %12, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.e316c324bdc0d28376b7586f951427b3.18) #13, !noalias !28 + %24 = add nuw nsw i64 %23, 3 + %.03.i = lshr i64 %24, 2 + %25 = add nuw nsw i64 %23, 2 + %26 = add nuw nsw i64 %25, %.03.i + %27 = icmp ult i64 %26, %12 + br i1 %27, label %_ZN12aho_corasick3nfa10contiguous5State9match_len17hd21b541d2068b2cbE.exit, label %28, !prof !18 + +28:; preds = %22 + tail call void @_ZN4core9panicking18panic_bounds_check17he5254f424ac3a4c4E(i64 noundef %26, i64 noundef %12, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.e316c324bdc0d28376b7586f951427b3.18) #13, !noalias !28 unreachable 32: ; preds = %19 @@ -1214,7 +1202,7 @@ define internal noundef range(i64 0, 2147483648) i64 @"_ZN89_$LT$aho_corasick..n unreachable _ZN12aho_corasick3nfa10contiguous5State9match_len17hd21b541d2068b2cbE.exit: ; preds = %19, %22 - %.pn.i = phi i64 [ %29, %22 ], [ %20, %19 ] + %.pn.i = phi i64 [ %26, %22 ], [ %20, %19 ] %.0.in.in.i = getelementptr inbounds [0 x i32], ptr %13, i64 0, i64 %.pn.i %.0.in.i = load i32, ptr %.0.in.in.i, align 4, !alias.scope !28, !noundef !5 %33 = icmp sgt i32 %.0.in.i, -1 diff --git a/bench/ruby/optimized/regexec.ll b/bench/ruby/optimized/regexec.ll index a5fdf712c64..671da79efab 100644 --- a/bench/ruby/optimized/regexec.ll +++ b/bench/ruby/optimized/regexec.ll @@ -732,12 +732,12 @@ define internal fastcc i64 @match_at(ptr noundef %0, ptr noundef %1, ptr noundef br label %.backedge.backedge .backedge.backedge: ; preds = %211, %._crit_edge4077, %244, %264, %289, %319, %338, %._crit_edge4071, %376, %401, %436, %._crit_edge4092, %._crit_edge4087, %._crit_edge4082, %544, %575, %599, %630, %670, %695, %747, %767, %841, %1015, %1089, %1236, %1311, %._crit_edge4056, %1571, %._crit_edge4049, %1749, %1783, %1807, %1841, %1873, %1949, %1975, %2049, %2067, %2105, %2123, %2161, %2169, %2177, %2185, %2213, %2221, %2225, %2233, %2251, %2288, %2293, %2354, %2374, %2442, %2462, %2470, %2559, %2679, %2754, %2833, %2912, %3002, %3078, %3135, %3177, %.thread3394, %3341, %3362, %3434, %3528, %3540, %3616, %3716, %3728, %3925, %4029, %4224, %4328, %4424, %4599, %4775, %5000, %5082, %5100, %5181, %5311, %5326, %5333, %5416, %5512, %5953, %6051, %6129, %6153, %6391 - %.02225.be = phi ptr [ %.02225, %211 ], [ %.02225, %._crit_edge4077 ], [ %.02225, %244 ], [ %.02225, %264 ], [ %.02225, %289 ], [ %.02225, %319 ], [ %.02225, %338 ], [ %.02225, %._crit_edge4071 ], [ %.02225, %376 ], [ %.02225, %401 ], [ %.02225, %436 ], [ %.02225, %._crit_edge4092 ], [ %.02225, %._crit_edge4087 ], [ %.02225, %._crit_edge4082 ], [ %.02225, %544 ], [ %.02225, %575 ], [ %.02225, %599 ], [ %.02225, %630 ], [ %.02225, %670 ], [ %.02225, %695 ], [ %.02225, %747 ], [ %.02225, %767 ], [ %.02225, %841 ], [ %.02225, %1015 ], [ %.02225, %1089 ], [ %.02225, %1236 ], [ %.02225, %1311 ], [ %.02225, %._crit_edge4056 ], [ %.02225, %1571 ], [ %.02225, %._crit_edge4049 ], [ %.02225, %1749 ], [ %.02225, %1783 ], [ %.02225, %1807 ], [ %.02225, %1841 ], [ %.02225, %1873 ], [ %.02225, %1949 ], [ %.02225, %1975 ], [ %.02225, %2049 ], [ %.02225, %2067 ], [ %.02225, %2105 ], [ %.02225, %2123 ], [ %.02225, %2161 ], [ %.02225, %2169 ], [ %.02225, %2177 ], [ %.02225, %2185 ], [ %.02225, %2213 ], [ %.02225, %2221 ], [ %.02225, %2225 ], [ %.02225, %2233 ], [ %.02225, %2251 ], [ %.02225, %2288 ], [ %.02225, %2293 ], [ %.02225, %2354 ], [ %.02225, %2374 ], [ %.02225, %2442 ], [ %.02225, %2462 ], [ %2471, %2470 ], [ %.02225, %2559 ], [ %.02225, %2679 ], [ %.02225, %2754 ], [ %.02225, %2833 ], [ %.02225, %2912 ], [ %.02225, %3002 ], [ %.02225, %3078 ], [ %.02225, %3135 ], [ %.02225, %3177 ], [ %.02225, %.thread3394 ], [ %.02225, %3341 ], [ %.02225, %3362 ], [ %.02225, %3434 ], [ %.02225, %3528 ], [ %.02225, %3540 ], [ %.02225, %3616 ], [ %.02225, %3716 ], [ %.02225, %3728 ], [ %.02225, %3925 ], [ %.02225, %4029 ], [ %.02225, %4224 ], [ %.02225, %4328 ], [ %.02225, %4424 ], [ %.02225, %4599 ], [ %.02225, %4775 ], [ %.02225, %5000 ], [ %.02225, %5082 ], [ %.02225, %5100 ], [ %.02225, %5181 ], [ %.02225, %5311 ], [ %.02225, %5326 ], [ %.02225, %5333 ], [ %.02225, %5416 ], [ %.02225, %5512 ], [ %.02225, %5953 ], [ %.02225, %6051 ], [ %.02225, %6129 ], [ %.02225, %6153 ], [ %6317, %6391 ] - %.02204.be = phi ptr [ %213, %211 ], [ %231, %._crit_edge4077 ], [ %246, %244 ], [ %266, %264 ], [ %291, %289 ], [ %321, %319 ], [ %332, %338 ], [ %363, %._crit_edge4071 ], [ %378, %376 ], [ %403, %401 ], [ %438, %436 ], [ %463, %._crit_edge4092 ], [ %493, %._crit_edge4087 ], [ %519, %._crit_edge4082 ], [ %549, %544 ], [ %578, %575 ], [ %606, %599 ], [ %635, %630 ], [ %675, %670 ], [ %702, %695 ], [ %750, %747 ], [ %768, %767 ], [ %844, %841 ], [ %1016, %1015 ], [ %1092, %1089 ], [ %1237, %1236 ], [ %1314, %1311 ], [ %1497, %._crit_edge4056 ], [ %1574, %1571 ], [ %1730, %._crit_edge4049 ], [ %1754, %1749 ], [ %1788, %1783 ], [ %1812, %1807 ], [ %1846, %1841 ], [ %1874, %1873 ], [ %1950, %1949 ], [ %1976, %1975 ], [ %2050, %2049 ], [ %2068, %2067 ], [ %2106, %2105 ], [ %2124, %2123 ], [ %2162, %2161 ], [ %2170, %2169 ], [ %2178, %2177 ], [ %2186, %2185 ], [ %2214, %2213 ], [ %2222, %2221 ], [ %2226, %2225 ], [ %2234, %2233 ], [ %2252, %2251 ], [ %2289, %2288 ], [ %2294, %2293 ], [ %2373, %2354 ], [ %2382, %2374 ], [ %2461, %2442 ], [ %2469, %2462 ], [ %2472, %2470 ], [ %2576, %2559 ], [ %2684, %2679 ], [ %2755, %2754 ], [ %2834, %2833 ], [ %2913, %2912 ], [ %3003, %3002 ], [ %3082, %3078 ], [ %3147, %3135 ], [ %3178, %3177 ], [ %3232, %.thread3394 ], [ %3350, %3341 ], [ %3363, %3362 ], [ %3437, %3434 ], [ %3539, %3528 ], [ %3545, %3540 ], [ %3619, %3616 ], [ %3727, %3716 ], [ %3731, %3728 ], [ %3928, %3925 ], [ %4030, %4029 ], [ %4227, %4224 ], [ %4329, %4328 ], [ %4427, %4424 ], [ %4600, %4599 ], [ %4778, %4775 ], [ %5001, %5000 ], [ %5091, %5082 ], [ %5105, %5100 ], [ %5192, %5181 ], [ %5315, %5311 ], [ %5327, %5326 ], [ %5336, %5333 ], [ %5417, %5416 ], [ %5519, %5512 ], [ %5954, %5953 ], [ %6059, %6051 ], [ %6133, %6129 ], [ %6154, %6153 ], [ %6392, %6391 ] - %.02187.be = phi i64 [ %.02187, %211 ], [ %.02187, %._crit_edge4077 ], [ %.02187, %244 ], [ %.02187, %264 ], [ %.02187, %289 ], [ %.02187, %319 ], [ %.02187, %338 ], [ %.02187, %._crit_edge4071 ], [ %.02187, %376 ], [ %.02187, %401 ], [ %.02187, %436 ], [ %.02187, %._crit_edge4092 ], [ %.02187, %._crit_edge4087 ], [ %.02187, %._crit_edge4082 ], [ %.02187, %544 ], [ %.02187, %575 ], [ %.02187, %599 ], [ %.02187, %630 ], [ %.02187, %670 ], [ %.02187, %695 ], [ %.02187, %747 ], [ %.02187, %767 ], [ %.02187, %841 ], [ %.02187, %1015 ], [ %.02187, %1089 ], [ %.02187, %1236 ], [ %.02187, %1311 ], [ %.02187, %._crit_edge4056 ], [ %.02187, %1571 ], [ %.02187, %._crit_edge4049 ], [ %.02187, %1749 ], [ %.02187, %1783 ], [ %.02187, %1807 ], [ %.02187, %1841 ], [ %.02187, %1873 ], [ %.02187, %1949 ], [ %.02187, %1975 ], [ %.02187, %2049 ], [ %.02187, %2067 ], [ %.02187, %2105 ], [ %.02187, %2123 ], [ %.02187, %2161 ], [ %.02187, %2169 ], [ %.02187, %2177 ], [ %.02187, %2185 ], [ %.02187, %2213 ], [ %.02187, %2221 ], [ %.02187, %2225 ], [ %.02187, %2233 ], [ %.02187, %2251 ], [ %.02187, %2288 ], [ %.02187, %2293 ], [ %.02187, %2354 ], [ %.02187, %2374 ], [ %.02187, %2442 ], [ %.02187, %2462 ], [ %.02187, %2470 ], [ %.02187, %2559 ], [ %.02187, %2679 ], [ %.02187, %2754 ], [ %.02187, %2833 ], [ %.02187, %2912 ], [ %.02187, %3002 ], [ %.02187, %3078 ], [ %.02187, %3135 ], [ %.02187, %3177 ], [ %.02187, %.thread3394 ], [ %.02187, %3341 ], [ %.02187, %3362 ], [ %.02187, %3434 ], [ %.02187, %3528 ], [ %.02187, %3540 ], [ %.02187, %3616 ], [ %.02187, %3716 ], [ %.02187, %3728 ], [ %.02187, %3925 ], [ %.02187, %4029 ], [ %.02187, %4224 ], [ %.02187, %4328 ], [ %.02187, %4424 ], [ %.02187, %4599 ], [ %.02187, %4775 ], [ %.02187, %5000 ], [ %.02187, %5082 ], [ %.02187, %5100 ], [ %.02187, %5181 ], [ %.02187, %5311 ], [ %.02187, %5326 ], [ %.02187, %5333 ], [ %.02187, %5416 ], [ %.02187, %5512 ], [ %.02187, %5953 ], [ %.02187, %6051 ], [ %.02187, %6129 ], [ %.02187, %6153 ], [ %.221894629, %6391 ] - %.02178.be = phi ptr [ %205, %211 ], [ %215, %._crit_edge4077 ], [ %241, %244 ], [ %261, %264 ], [ %286, %289 ], [ %316, %319 ], [ %339, %338 ], [ %.12179.lcssa, %._crit_edge4071 ], [ %365, %376 ], [ %393, %401 ], [ %428, %436 ], [ %462, %._crit_edge4092 ], [ %492, %._crit_edge4087 ], [ %518, %._crit_edge4082 ], [ %521, %544 ], [ %.02201, %575 ], [ %580, %599 ], [ %608, %630 ], [ %.12202, %670 ], [ %677, %695 ], [ %704, %747 ], [ %752, %767 ], [ %.22180, %841 ], [ %.22180, %1015 ], [ %.32181, %1089 ], [ %.32181, %1236 ], [ %.54053, %1311 ], [ %1239, %._crit_edge4056 ], [ %.64046, %1571 ], [ %1499, %._crit_edge4049 ], [ %1732, %1749 ], [ %1756, %1783 ], [ %1790, %1807 ], [ %1814, %1841 ], [ %.02178, %1873 ], [ %.02178, %1949 ], [ %.02178, %1975 ], [ %.02178, %2049 ], [ %.02178, %2067 ], [ %.02178, %2105 ], [ %.02178, %2123 ], [ %.02178, %2161 ], [ %.02178, %2169 ], [ %.02178, %2177 ], [ %.02178, %2185 ], [ %.02178, %2213 ], [ %.02178, %2221 ], [ %.02178, %2225 ], [ %.02178, %2233 ], [ %.02178, %2251 ], [ %.02178, %2288 ], [ %.02178, %2293 ], [ %.02178, %2354 ], [ %.02178, %2374 ], [ %.02178, %2442 ], [ %.02178, %2462 ], [ %.02178, %2470 ], [ %.02178, %2559 ], [ %.02178, %2679 ], [ %.8, %2754 ], [ %.9, %2833 ], [ %.11, %2912 ], [ %.15, %3002 ], [ %.18, %3078 ], [ %.02178, %3135 ], [ %.02178, %3177 ], [ %.02178, %.thread3394 ], [ %.02178, %3341 ], [ %.02178, %3362 ], [ %.02178, %3434 ], [ %.02178, %3528 ], [ %.02178, %3540 ], [ %.02178, %3616 ], [ %.02178, %3716 ], [ %.02178, %3728 ], [ %.02178, %3925 ], [ %.02178, %4029 ], [ %.02178, %4224 ], [ %.02178, %4328 ], [ %.02178, %4424 ], [ %.02178, %4599 ], [ %.02178, %4775 ], [ %.02178, %5000 ], [ %.02178, %5082 ], [ %5104, %5100 ], [ %.02178, %5181 ], [ %.02178, %5311 ], [ %.02178, %5326 ], [ %5335, %5333 ], [ %.19, %5416 ], [ %.02178, %5512 ], [ %.02178, %5953 ], [ %.02178, %6051 ], [ %.02178, %6129 ], [ %.02178, %6153 ], [ %6315, %6391 ] - %.02177.be = phi ptr [ %.02177, %211 ], [ %.02177, %._crit_edge4077 ], [ %.02177, %244 ], [ %.02177, %264 ], [ %.02177, %289 ], [ %.02177, %319 ], [ %.02177, %338 ], [ %.02177, %._crit_edge4071 ], [ %.02177, %376 ], [ %.02177, %401 ], [ %.02177, %436 ], [ %.02177, %._crit_edge4092 ], [ %.02177, %._crit_edge4087 ], [ %.02177, %._crit_edge4082 ], [ %.02177, %544 ], [ %.02177, %575 ], [ %.02177, %599 ], [ %.02177, %630 ], [ %.02177, %670 ], [ %.02177, %695 ], [ %.02177, %747 ], [ %.02177, %767 ], [ %.02177, %841 ], [ %.02177, %1015 ], [ %.02177, %1089 ], [ %.02177, %1236 ], [ %.02177, %1311 ], [ %.02177, %._crit_edge4056 ], [ %.02177, %1571 ], [ %.02177, %._crit_edge4049 ], [ %.02177, %1749 ], [ %.02177, %1783 ], [ %.02177, %1807 ], [ %.02177, %1841 ], [ %.02177, %1873 ], [ %.02177, %1949 ], [ %.02177, %1975 ], [ %.02177, %2049 ], [ %.02177, %2067 ], [ %.02177, %2105 ], [ %.02177, %2123 ], [ %.02177, %2161 ], [ %.02177, %2169 ], [ %.02177, %2177 ], [ %.02177, %2185 ], [ %.02177, %2213 ], [ %.02177, %2221 ], [ %.02177, %2225 ], [ %.02177, %2233 ], [ %.02177, %2251 ], [ %.02177, %2288 ], [ %.02177, %2293 ], [ %.02177, %2354 ], [ %.02177, %2374 ], [ %.02177, %2442 ], [ %.02177, %2462 ], [ %.02177, %2470 ], [ %.02177, %2559 ], [ %.02177, %2679 ], [ %.02177, %2754 ], [ %.02177, %2833 ], [ %.02177, %2912 ], [ %.02177, %3002 ], [ %.02177, %3078 ], [ %.02177, %3135 ], [ %.02177, %3177 ], [ %.02177, %.thread3394 ], [ %.02177, %3341 ], [ %.02177, %3362 ], [ %.02177, %3434 ], [ %.02177, %3528 ], [ %.02177, %3540 ], [ %.02177, %3616 ], [ %.02177, %3716 ], [ %.02177, %3728 ], [ %.02177, %3925 ], [ %.02177, %4029 ], [ %.02177, %4224 ], [ %.02177, %4328 ], [ %.02177, %4424 ], [ %.02177, %4599 ], [ %.02177, %4775 ], [ %.02177, %5000 ], [ %.02177, %5082 ], [ %.02177, %5100 ], [ %.02177, %5181 ], [ %.02177, %5311 ], [ %.02177, %5326 ], [ %.02177, %5333 ], [ %.02177, %5416 ], [ %.02177, %5512 ], [ %.1, %5953 ], [ %.02177, %6051 ], [ %.02177, %6129 ], [ %.02177, %6153 ], [ %.34631, %6391 ] - %.pn.in.in.be = phi ptr [ %212, %211 ], [ %.12205.lcssa, %._crit_edge4077 ], [ %245, %244 ], [ %265, %264 ], [ %290, %289 ], [ %320, %319 ], [ %.22206, %338 ], [ %.32207.lcssa, %._crit_edge4071 ], [ %377, %376 ], [ %402, %401 ], [ %437, %436 ], [ %.52209.lcssa, %._crit_edge4092 ], [ %.62210.lcssa, %._crit_edge4087 ], [ %.72211.lcssa, %._crit_edge4082 ], [ %536, %544 ], [ %577, %575 ], [ %604, %599 ], [ %622, %630 ], [ %674, %670 ], [ %700, %695 ], [ %.02204, %747 ], [ %.02204, %767 ], [ %843, %841 ], [ %.02204, %1015 ], [ %1091, %1089 ], [ %.02204, %1236 ], [ %1313, %1311 ], [ %1496, %._crit_edge4056 ], [ %1573, %1571 ], [ %1729, %._crit_edge4049 ], [ %.02204, %1749 ], [ %.02204, %1783 ], [ %.02204, %1807 ], [ %.02204, %1841 ], [ %.02204, %1873 ], [ %.02204, %1949 ], [ %.02204, %1975 ], [ %.02204, %2049 ], [ %.02204, %2067 ], [ %.02204, %2105 ], [ %.02204, %2123 ], [ %.02204, %2161 ], [ %.02204, %2169 ], [ %.02204, %2177 ], [ %.02204, %2185 ], [ %.02204, %2213 ], [ %.02204, %2221 ], [ %.02204, %2225 ], [ %.02204, %2233 ], [ %.02204, %2251 ], [ %.02204, %2288 ], [ %.02204, %2293 ], [ %2297, %2354 ], [ %2376, %2374 ], [ %2385, %2442 ], [ %2464, %2462 ], [ %.02204, %2470 ], [ %2475, %2559 ], [ %2579, %2679 ], [ %.112215, %2754 ], [ %2758, %2833 ], [ %.132217, %2912 ], [ %.152219, %3002 ], [ %3081, %3078 ], [ %3085, %3135 ], [ %.162220, %3177 ], [ %3197, %.thread3394 ], [ %3252, %3341 ], [ %3355, %3362 ], [ %3436, %3434 ], [ %3366, %3528 ], [ %.02204, %3540 ], [ %3618, %3616 ], [ %3658, %3716 ], [ %3658, %3728 ], [ %3927, %3925 ], [ %3736, %4029 ], [ %4226, %4224 ], [ %.182222, %4328 ], [ %4426, %4424 ], [ %.20, %4599 ], [ %4777, %4775 ], [ %.22, %5000 ], [ %.02204, %5082 ], [ %.02204, %5100 ], [ %5124, %5181 ], [ %.02204, %5311 ], [ %.02204, %5326 ], [ %5334, %5333 ], [ %.23, %5416 ], [ %.02204, %5512 ], [ %.24, %5953 ], [ %6058, %6051 ], [ %6069, %6129 ], [ %.25, %6153 ], [ %6311, %6391 ] + %.02225.be = phi ptr [ %.02225, %211 ], [ %.02225, %._crit_edge4077 ], [ %.02225, %244 ], [ %.02225, %264 ], [ %.02225, %289 ], [ %.02225, %319 ], [ %.02225, %338 ], [ %.02225, %._crit_edge4071 ], [ %.02225, %376 ], [ %.02225, %401 ], [ %.02225, %436 ], [ %.02225, %._crit_edge4092 ], [ %.02225, %._crit_edge4087 ], [ %.02225, %._crit_edge4082 ], [ %.02225, %544 ], [ %.02225, %575 ], [ %.02225, %599 ], [ %.02225, %630 ], [ %.02225, %670 ], [ %.02225, %695 ], [ %.02225, %747 ], [ %.02225, %767 ], [ %.02225, %841 ], [ %.02225, %1015 ], [ %.02225, %1089 ], [ %.02225, %1236 ], [ %.02225, %1311 ], [ %.02225, %._crit_edge4056 ], [ %.02225, %1571 ], [ %.02225, %._crit_edge4049 ], [ %.02225, %1749 ], [ %.02225, %1783 ], [ %.02225, %1807 ], [ %.02225, %1841 ], [ %.02225, %1873 ], [ %.02225, %1949 ], [ %.02225, %1975 ], [ %.02225, %2049 ], [ %.02225, %2067 ], [ %.02225, %2105 ], [ %.02225, %2123 ], [ %.02225, %2161 ], [ %.02225, %2169 ], [ %.02225, %2177 ], [ %.02225, %2185 ], [ %.02225, %2213 ], [ %.02225, %2221 ], [ %.02225, %2225 ], [ %.02225, %2233 ], [ %.02225, %2251 ], [ %.02225, %2288 ], [ %.02225, %2293 ], [ %.02225, %2354 ], [ %.02225, %2374 ], [ %.02225, %2442 ], [ %.02225, %2462 ], [ %2471, %2470 ], [ %.02225, %2559 ], [ %.02225, %2679 ], [ %.02225, %2754 ], [ %.02225, %2833 ], [ %.02225, %2912 ], [ %.02225, %3002 ], [ %.02225, %3078 ], [ %.02225, %3135 ], [ %.02225, %3177 ], [ %.02225, %.thread3394 ], [ %.02225, %3341 ], [ %.02225, %3362 ], [ %.02225, %3434 ], [ %.02225, %3528 ], [ %.02225, %3540 ], [ %.02225, %3616 ], [ %.02225, %3716 ], [ %.02225, %3728 ], [ %.02225, %3925 ], [ %.02225, %4029 ], [ %.02225, %4224 ], [ %.02225, %4328 ], [ %.02225, %4424 ], [ %.02225, %4599 ], [ %.02225, %4775 ], [ %.02225, %5000 ], [ %.02225, %5082 ], [ %.02225, %5100 ], [ %.02225, %5181 ], [ %.02225, %5311 ], [ %.02225, %5326 ], [ %.02225, %5333 ], [ %.02225, %5416 ], [ %.02225, %5512 ], [ %.02225, %5953 ], [ %.02225, %6051 ], [ %.02225, %6129 ], [ %.02225, %6153 ], [ %6317, %6389 ] + %.02204.be = phi ptr [ %213, %211 ], [ %231, %._crit_edge4077 ], [ %246, %244 ], [ %266, %264 ], [ %291, %289 ], [ %321, %319 ], [ %332, %338 ], [ %363, %._crit_edge4071 ], [ %378, %376 ], [ %403, %401 ], [ %438, %436 ], [ %463, %._crit_edge4092 ], [ %493, %._crit_edge4087 ], [ %519, %._crit_edge4082 ], [ %549, %544 ], [ %578, %575 ], [ %606, %599 ], [ %635, %630 ], [ %675, %670 ], [ %702, %695 ], [ %750, %747 ], [ %768, %767 ], [ %844, %841 ], [ %1016, %1015 ], [ %1092, %1089 ], [ %1237, %1236 ], [ %1314, %1311 ], [ %1497, %._crit_edge4056 ], [ %1574, %1571 ], [ %1730, %._crit_edge4049 ], [ %1754, %1749 ], [ %1788, %1783 ], [ %1812, %1807 ], [ %1846, %1841 ], [ %1874, %1873 ], [ %1950, %1949 ], [ %1976, %1975 ], [ %2050, %2049 ], [ %2068, %2067 ], [ %2106, %2105 ], [ %2124, %2123 ], [ %2162, %2161 ], [ %2170, %2169 ], [ %2178, %2177 ], [ %2186, %2185 ], [ %2214, %2213 ], [ %2222, %2221 ], [ %2226, %2225 ], [ %2234, %2233 ], [ %2252, %2251 ], [ %2289, %2288 ], [ %2294, %2293 ], [ %2373, %2354 ], [ %2382, %2374 ], [ %2461, %2442 ], [ %2469, %2462 ], [ %2472, %2470 ], [ %2576, %2559 ], [ %2684, %2679 ], [ %2755, %2754 ], [ %2834, %2833 ], [ %2913, %2912 ], [ %3003, %3002 ], [ %3082, %3078 ], [ %3147, %3135 ], [ %3178, %3177 ], [ %3232, %.thread3394 ], [ %3350, %3341 ], [ %3363, %3362 ], [ %3437, %3434 ], [ %3539, %3528 ], [ %3545, %3540 ], [ %3619, %3616 ], [ %3727, %3716 ], [ %3731, %3728 ], [ %3928, %3925 ], [ %4030, %4029 ], [ %4227, %4224 ], [ %4329, %4328 ], [ %4427, %4424 ], [ %4600, %4599 ], [ %4778, %4775 ], [ %5001, %5000 ], [ %5091, %5082 ], [ %5105, %5100 ], [ %5192, %5181 ], [ %5315, %5311 ], [ %5327, %5326 ], [ %5336, %5333 ], [ %5417, %5416 ], [ %5519, %5512 ], [ %5954, %5953 ], [ %6059, %6051 ], [ %6133, %6129 ], [ %6154, %6153 ], [ %6392, %6389 ] + %.02187.be = phi i64 [ %.02187, %211 ], [ %.02187, %._crit_edge4077 ], [ %.02187, %244 ], [ %.02187, %264 ], [ %.02187, %289 ], [ %.02187, %319 ], [ %.02187, %338 ], [ %.02187, %._crit_edge4071 ], [ %.02187, %376 ], [ %.02187, %401 ], [ %.02187, %436 ], [ %.02187, %._crit_edge4092 ], [ %.02187, %._crit_edge4087 ], [ %.02187, %._crit_edge4082 ], [ %.02187, %544 ], [ %.02187, %575 ], [ %.02187, %599 ], [ %.02187, %630 ], [ %.02187, %670 ], [ %.02187, %695 ], [ %.02187, %747 ], [ %.02187, %767 ], [ %.02187, %841 ], [ %.02187, %1015 ], [ %.02187, %1089 ], [ %.02187, %1236 ], [ %.02187, %1311 ], [ %.02187, %._crit_edge4056 ], [ %.02187, %1571 ], [ %.02187, %._crit_edge4049 ], [ %.02187, %1749 ], [ %.02187, %1783 ], [ %.02187, %1807 ], [ %.02187, %1841 ], [ %.02187, %1873 ], [ %.02187, %1949 ], [ %.02187, %1975 ], [ %.02187, %2049 ], [ %.02187, %2067 ], [ %.02187, %2105 ], [ %.02187, %2123 ], [ %.02187, %2161 ], [ %.02187, %2169 ], [ %.02187, %2177 ], [ %.02187, %2185 ], [ %.02187, %2213 ], [ %.02187, %2221 ], [ %.02187, %2225 ], [ %.02187, %2233 ], [ %.02187, %2251 ], [ %.02187, %2288 ], [ %.02187, %2293 ], [ %.02187, %2354 ], [ %.02187, %2374 ], [ %.02187, %2442 ], [ %.02187, %2462 ], [ %.02187, %2470 ], [ %.02187, %2559 ], [ %.02187, %2679 ], [ %.02187, %2754 ], [ %.02187, %2833 ], [ %.02187, %2912 ], [ %.02187, %3002 ], [ %.02187, %3078 ], [ %.02187, %3135 ], [ %.02187, %3177 ], [ %.02187, %.thread3394 ], [ %.02187, %3341 ], [ %.02187, %3362 ], [ %.02187, %3434 ], [ %.02187, %3528 ], [ %.02187, %3540 ], [ %.02187, %3616 ], [ %.02187, %3716 ], [ %.02187, %3728 ], [ %.02187, %3925 ], [ %.02187, %4029 ], [ %.02187, %4224 ], [ %.02187, %4328 ], [ %.02187, %4424 ], [ %.02187, %4599 ], [ %.02187, %4775 ], [ %.02187, %5000 ], [ %.02187, %5082 ], [ %.02187, %5100 ], [ %.02187, %5181 ], [ %.02187, %5311 ], [ %.02187, %5326 ], [ %.02187, %5333 ], [ %.02187, %5416 ], [ %.02187, %5512 ], [ %.02187, %5953 ], [ %.02187, %6051 ], [ %.02187, %6129 ], [ %.02187, %6153 ], [ %.221894629, %6389 ] + %.02178.be = phi ptr [ %205, %211 ], [ %215, %._crit_edge4077 ], [ %241, %244 ], [ %261, %264 ], [ %286, %289 ], [ %316, %319 ], [ %339, %338 ], [ %.12179.lcssa, %._crit_edge4071 ], [ %365, %376 ], [ %393, %401 ], [ %428, %436 ], [ %462, %._crit_edge4092 ], [ %492, %._crit_edge4087 ], [ %518, %._crit_edge4082 ], [ %521, %544 ], [ %.02201, %575 ], [ %580, %599 ], [ %608, %630 ], [ %.12202, %670 ], [ %677, %695 ], [ %704, %747 ], [ %752, %767 ], [ %.22180, %841 ], [ %.22180, %1015 ], [ %.32181, %1089 ], [ %.32181, %1236 ], [ %.54053, %1311 ], [ %1239, %._crit_edge4056 ], [ %.64046, %1571 ], [ %1499, %._crit_edge4049 ], [ %1732, %1749 ], [ %1756, %1783 ], [ %1790, %1807 ], [ %1814, %1841 ], [ %.02178, %1873 ], [ %.02178, %1949 ], [ %.02178, %1975 ], [ %.02178, %2049 ], [ %.02178, %2067 ], [ %.02178, %2105 ], [ %.02178, %2123 ], [ %.02178, %2161 ], [ %.02178, %2169 ], [ %.02178, %2177 ], [ %.02178, %2185 ], [ %.02178, %2213 ], [ %.02178, %2221 ], [ %.02178, %2225 ], [ %.02178, %2233 ], [ %.02178, %2251 ], [ %.02178, %2288 ], [ %.02178, %2293 ], [ %.02178, %2354 ], [ %.02178, %2374 ], [ %.02178, %2442 ], [ %.02178, %2462 ], [ %.02178, %2470 ], [ %.02178, %2559 ], [ %.02178, %2679 ], [ %.8, %2754 ], [ %.9, %2833 ], [ %.11, %2912 ], [ %.15, %3002 ], [ %.18, %3078 ], [ %.02178, %3135 ], [ %.02178, %3177 ], [ %.02178, %.thread3394 ], [ %.02178, %3341 ], [ %.02178, %3362 ], [ %.02178, %3434 ], [ %.02178, %3528 ], [ %.02178, %3540 ], [ %.02178, %3616 ], [ %.02178, %3716 ], [ %.02178, %3728 ], [ %.02178, %3925 ], [ %.02178, %4029 ], [ %.02178, %4224 ], [ %.02178, %4328 ], [ %.02178, %4424 ], [ %.02178, %4599 ], [ %.02178, %4775 ], [ %.02178, %5000 ], [ %.02178, %5082 ], [ %5104, %5100 ], [ %.02178, %5181 ], [ %.02178, %5311 ], [ %.02178, %5326 ], [ %5335, %5333 ], [ %.19, %5416 ], [ %.02178, %5512 ], [ %.02178, %5953 ], [ %.02178, %6051 ], [ %.02178, %6129 ], [ %.02178, %6153 ], [ %6315, %6389 ] + %.02177.be = phi ptr [ %.02177, %211 ], [ %.02177, %._crit_edge4077 ], [ %.02177, %244 ], [ %.02177, %264 ], [ %.02177, %289 ], [ %.02177, %319 ], [ %.02177, %338 ], [ %.02177, %._crit_edge4071 ], [ %.02177, %376 ], [ %.02177, %401 ], [ %.02177, %436 ], [ %.02177, %._crit_edge4092 ], [ %.02177, %._crit_edge4087 ], [ %.02177, %._crit_edge4082 ], [ %.02177, %544 ], [ %.02177, %575 ], [ %.02177, %599 ], [ %.02177, %630 ], [ %.02177, %670 ], [ %.02177, %695 ], [ %.02177, %747 ], [ %.02177, %767 ], [ %.02177, %841 ], [ %.02177, %1015 ], [ %.02177, %1089 ], [ %.02177, %1236 ], [ %.02177, %1311 ], [ %.02177, %._crit_edge4056 ], [ %.02177, %1571 ], [ %.02177, %._crit_edge4049 ], [ %.02177, %1749 ], [ %.02177, %1783 ], [ %.02177, %1807 ], [ %.02177, %1841 ], [ %.02177, %1873 ], [ %.02177, %1949 ], [ %.02177, %1975 ], [ %.02177, %2049 ], [ %.02177, %2067 ], [ %.02177, %2105 ], [ %.02177, %2123 ], [ %.02177, %2161 ], [ %.02177, %2169 ], [ %.02177, %2177 ], [ %.02177, %2185 ], [ %.02177, %2213 ], [ %.02177, %2221 ], [ %.02177, %2225 ], [ %.02177, %2233 ], [ %.02177, %2251 ], [ %.02177, %2288 ], [ %.02177, %2293 ], [ %.02177, %2354 ], [ %.02177, %2374 ], [ %.02177, %2442 ], [ %.02177, %2462 ], [ %.02177, %2470 ], [ %.02177, %2559 ], [ %.02177, %2679 ], [ %.02177, %2754 ], [ %.02177, %2833 ], [ %.02177, %2912 ], [ %.02177, %3002 ], [ %.02177, %3078 ], [ %.02177, %3135 ], [ %.02177, %3177 ], [ %.02177, %.thread3394 ], [ %.02177, %3341 ], [ %.02177, %3362 ], [ %.02177, %3434 ], [ %.02177, %3528 ], [ %.02177, %3540 ], [ %.02177, %3616 ], [ %.02177, %3716 ], [ %.02177, %3728 ], [ %.02177, %3925 ], [ %.02177, %4029 ], [ %.02177, %4224 ], [ %.02177, %4328 ], [ %.02177, %4424 ], [ %.02177, %4599 ], [ %.02177, %4775 ], [ %.02177, %5000 ], [ %.02177, %5082 ], [ %.02177, %5100 ], [ %.02177, %5181 ], [ %.02177, %5311 ], [ %.02177, %5326 ], [ %.02177, %5333 ], [ %.02177, %5416 ], [ %.02177, %5512 ], [ %.1, %5953 ], [ %.02177, %6051 ], [ %.02177, %6129 ], [ %.02177, %6153 ], [ %.34631, %6389 ] + %.pn.in.in.be = phi ptr [ %212, %211 ], [ %.12205.lcssa, %._crit_edge4077 ], [ %245, %244 ], [ %265, %264 ], [ %290, %289 ], [ %320, %319 ], [ %.22206, %338 ], [ %.32207.lcssa, %._crit_edge4071 ], [ %377, %376 ], [ %402, %401 ], [ %437, %436 ], [ %.52209.lcssa, %._crit_edge4092 ], [ %.62210.lcssa, %._crit_edge4087 ], [ %.72211.lcssa, %._crit_edge4082 ], [ %536, %544 ], [ %577, %575 ], [ %604, %599 ], [ %622, %630 ], [ %674, %670 ], [ %700, %695 ], [ %.02204, %747 ], [ %.02204, %767 ], [ %843, %841 ], [ %.02204, %1015 ], [ %1091, %1089 ], [ %.02204, %1236 ], [ %1313, %1311 ], [ %1496, %._crit_edge4056 ], [ %1573, %1571 ], [ %1729, %._crit_edge4049 ], [ %.02204, %1749 ], [ %.02204, %1783 ], [ %.02204, %1807 ], [ %.02204, %1841 ], [ %.02204, %1873 ], [ %.02204, %1949 ], [ %.02204, %1975 ], [ %.02204, %2049 ], [ %.02204, %2067 ], [ %.02204, %2105 ], [ %.02204, %2123 ], [ %.02204, %2161 ], [ %.02204, %2169 ], [ %.02204, %2177 ], [ %.02204, %2185 ], [ %.02204, %2213 ], [ %.02204, %2221 ], [ %.02204, %2225 ], [ %.02204, %2233 ], [ %.02204, %2251 ], [ %.02204, %2288 ], [ %.02204, %2293 ], [ %2297, %2354 ], [ %2376, %2374 ], [ %2385, %2442 ], [ %2464, %2462 ], [ %.02204, %2470 ], [ %2475, %2559 ], [ %2579, %2679 ], [ %.112215, %2754 ], [ %2758, %2833 ], [ %.132217, %2912 ], [ %.152219, %3002 ], [ %3081, %3078 ], [ %3085, %3135 ], [ %.162220, %3177 ], [ %3197, %.thread3394 ], [ %3252, %3341 ], [ %3355, %3362 ], [ %3436, %3434 ], [ %3366, %3528 ], [ %.02204, %3540 ], [ %3618, %3616 ], [ %3658, %3716 ], [ %3658, %3728 ], [ %3927, %3925 ], [ %3736, %4029 ], [ %4226, %4224 ], [ %.182222, %4328 ], [ %4426, %4424 ], [ %.20, %4599 ], [ %4777, %4775 ], [ %.22, %5000 ], [ %.02204, %5082 ], [ %.02204, %5100 ], [ %5124, %5181 ], [ %.02204, %5311 ], [ %.02204, %5326 ], [ %5334, %5333 ], [ %.23, %5416 ], [ %.02204, %5512 ], [ %.24, %5953 ], [ %6058, %6051 ], [ %6069, %6129 ], [ %.25, %6153 ], [ %6311, %6389 ] br label %.backedge 214: ; preds = %.backedge @@ -12248,7 +12248,7 @@ memoize_extended_match_cache_point.exit3315: ; preds = %6244, %6263, %6300, %6317 = load ptr, ptr %6316, align 8, !tbaa !57 %6318 = load i32, ptr %107, align 8, !tbaa !40 %.not2824 = icmp eq i32 %6318, -1 - br i1 %.not2824, label %6384, label %6319 + br i1 %.not2824, label %6382, label %6319 6319: ; preds = %.loopexit3524 %6320 = load i64, ptr %104, align 8, !tbaa !41 @@ -12259,7 +12259,7 @@ memoize_extended_match_cache_point.exit3315: ; preds = %6244, %6263, %6300, %6324 = load i64, ptr %109, align 8, !tbaa !42 %6325 = mul i64 %6324, %6323 %.not2825 = icmp slt i64 %6321, %6325 - br i1 %.not2825, label %6384, label %6326 + br i1 %.not2825, label %6382, label %6326 6326: ; preds = %6319 %6327 = icmp eq i32 %6318, 1 @@ -12302,13 +12302,13 @@ count_num_cache_opcodes.exit.thread3480: ; preds = %6332, %6335 6343: ; preds = %6341, %6341 store i32 -1, ptr %107, align 8, !tbaa !40 - br label %6384 + br label %6382 6344: ; preds = %6341 %6345 = load i64, ptr %104, align 8, !tbaa !41 %6346 = mul i64 %6342, %6323 %6347 = icmp slt i64 %6345, %6346 - br i1 %6347, label %6384, label %6348 + br i1 %6347, label %6382, label %6348 6348: ; preds = %6344 %6349 = load ptr, ptr %108, align 8, !tbaa !45 @@ -12361,7 +12361,7 @@ count_num_cache_opcodes.exit.thread3480: ; preds = %6332, %6335 6368: ; preds = %6367, %6348 %6369 = load ptr, ptr %103, align 8, !tbaa !46 %6370 = icmp eq ptr %6369, null - br i1 %6370, label %6371, label %6384 + br i1 %6370, label %6371, label %6382 6371: ; preds = %6368 %6372 = add i64 %6323, 1 @@ -12374,38 +12374,35 @@ count_num_cache_opcodes.exit.thread3480: ; preds = %6332, %6335 br i1 %or.cond2877, label %.loopexit3614, label %6375 6375: ; preds = %6371 - %6376 = lshr i64 %mul.val, 3 - %6377 = and i64 %mul.val, 7 - %.not2827 = icmp ne i64 %6377, 0 - %6378 = zext i1 %.not2827 to i64 - %6379 = add nuw nsw i64 %6376, 1 - %6380 = add nuw nsw i64 %6379, %6378 - %6381 = call noalias ptr @malloc(i64 noundef %6380) #22 - %6382 = icmp eq ptr %6381, null - br i1 %6382, label %.loopexit3614, label %6383 - -6383: ; preds = %6375 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %6381, i8 noundef 0, i64 noundef range(i64 1, 1152921504606846978) %6380, i1 noundef false) #21 - store ptr %6381, ptr %103, align 8, !tbaa !46 - br label %6384 - -6384: ; preds = %6343, %6344, %6368, %6383, %6319, %.loopexit3524 - %6385 = load i32, ptr %112, align 8, !tbaa !38 - %6386 = add i32 %6385, 1 - store i32 %6386, ptr %112, align 8, !tbaa !38 - %6387 = icmp sgt i32 %6386, 127 - br i1 %6387, label %6388, label %6391 - -6388: ; preds = %6384 + %6376 = add nuw i64 %mul.val, 7 + %6377 = lshr i64 %6376, 3 + %6378 = add nuw nsw i64 %6377, 1 + %6379 = call noalias ptr @malloc(i64 noundef %6378) #22 + %6380 = icmp eq ptr %6379, null + br i1 %6380, label %.loopexit3614, label %6381 + +6381:; preds = %6375 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %6379, i8 noundef 0, i64 noundef range(i64 1, 1152921504606846978) %6378, i1 noundef false) #21 + store ptr %6379, ptr %103, align 8, !tbaa !46 + br label %6382 + +6382:; preds = %6343, %6344, %6368, %6381, %6319, %.loopexit3524 + %6383 = load i32, ptr %112, align 8, !tbaa !38 + %6384 = add i32 %6383, 1 + store i32 %6384, ptr %112, align 8, !tbaa !38 + %6385 = icmp sgt i32 %6384, 127 + br i1 %6385, label %6386, label %6391 + +6386:; preds = %6382 store i32 0, ptr %112, align 8, !tbaa !38 %6389 = call zeroext i1 @rb_reg_timeout_p(ptr noundef nonnull %0, ptr noundef nonnull %113) #21 br i1 %6389, label %6421, label %6390 -6390: ; preds = %6388 +6390: ; preds = %6386 call void @rb_thread_check_ints() #21 br label %6391 -6391: ; preds = %6384, %6390 +6391: ; preds = %6382, %6390 %6392 = getelementptr i8, ptr %6311, i64 1 br label %.backedge.backedge @@ -12474,7 +12471,7 @@ count_num_cache_opcodes.exit.thread3480: ; preds = %6332, %6335 call void @free(ptr noundef %.02227) #21 br label %.loopexit3614 -6421: ; preds = %3359, %4596, %4997, %6388 +6421: ; preds = %3359, %4596, %4997, %6386 %6422 = load ptr, ptr %20, align 8, !tbaa !50 %.not2829 = icmp eq ptr %6422, %76 br i1 %.not2829, label %6430, label %6423 @@ -12495,7 +12492,7 @@ count_num_cache_opcodes.exit.thread3480: ; preds = %6332, %6335 br label %.loopexit3614 .loopexit3614: ; preds = %6375, %6371, %6351, %6430, %6420, %6411, %6402, %6121, %6043, %5941, %5877, %5817, %5740, %5504, %5396, %5303, %5173, %5074, %4980, %4918, %4860, %4797, %4693, %4580, %4509, %4446, %4309, %4246, %4136, %4085, %4010, %3947, %3837, %3786, %3708, %3638, %3520, %3456, %3340, %3134, %2671, %2551, %2434, %2346, %1691, %1623, %1431, %1363, %1204, %1141, %956, %893 - %.0 = phi i64 [ %.32190, %6402 ], [ -13, %6411 ], [ -23, %6430 ], [ -14, %6420 ], [ %.0.i2892.ph, %893 ], [ %.0.i2897.ph, %956 ], [ %.0.i2920.ph, %1141 ], [ %.0.i2926.ph, %1204 ], [ %.0.i2943.ph, %1363 ], [ %.0.i2949.ph, %1431 ], [ %.0.i2972.ph, %1623 ], [ %.0.i2978.ph, %1691 ], [ %.0.i3039.ph, %2346 ], [ %.0.i3045.ph, %2434 ], [ %.0.i3051.ph, %2551 ], [ %.0.i3057.ph, %2671 ], [ %3457, %3456 ], [ %.0.i3114.ph, %3520 ], [ %3639, %3638 ], [ %.0.i3128.ph, %3708 ], [ %.0.i3134.ph, %3786 ], [ %.0.i3140.ph, %3837 ], [ %3948, %3947 ], [ %.0.i3154.ph, %4010 ], [ %.0.i3160.ph, %4085 ], [ %.0.i3166.ph, %4136 ], [ %4247, %4246 ], [ %.0.i3180.ph, %4309 ], [ %.0.i3200.ph, %4580 ], [ %4447, %4446 ], [ %.0.i3194.ph, %4509 ], [ %.0.i3206.ph, %4693 ], [ %4798, %4797 ], [ %.0.i3220.ph, %4860 ], [ %.0.i3226.ph, %4918 ], [ %.0.i3232.ph, %4980 ], [ %.0.i3094.ph, %3134 ], [ %.0.i3100.ph, %3340 ], [ %.0.i3238.ph, %5074 ], [ %.0.i3246.ph, %5173 ], [ %.0.i3254.ph, %5303 ], [ %.0.i3260.ph, %5396 ], [ %.0.i3266.ph, %5504 ], [ %.0.i3278.ph, %5740 ], [ %.0.i3284.ph, %5817 ], [ %.0.i3290.ph, %5877 ], [ %.0.i3296.ph, %5941 ], [ %.0.i3302.ph, %6043 ], [ %.0.i3308.ph, %6121 ], [ -5, %6351 ], [ -5, %6371 ], [ -5, %6375 ] + %.0 = phi i64 [ %.32190, %6400 ], [ -13, %6409 ], [ -23, %6428 ], [ -14, %6418 ], [ %.0.i2892.ph, %893 ], [ %.0.i2897.ph, %956 ], [ %.0.i2920.ph, %1141 ], [ %.0.i2926.ph, %1204 ], [ %.0.i2943.ph, %1363 ], [ %.0.i2949.ph, %1431 ], [ %.0.i2972.ph, %1623 ], [ %.0.i2978.ph, %1691 ], [ %.0.i3039.ph, %2346 ], [ %.0.i3045.ph, %2434 ], [ %.0.i3051.ph, %2551 ], [ %.0.i3057.ph, %2671 ], [ %3457, %3456 ], [ %.0.i3114.ph, %3520 ], [ %3639, %3638 ], [ %.0.i3128.ph, %3708 ], [ %.0.i3134.ph, %3786 ], [ %.0.i3140.ph, %3837 ], [ %3948, %3947 ], [ %.0.i3154.ph, %4010 ], [ %.0.i3160.ph, %4085 ], [ %.0.i3166.ph, %4136 ], [ %4247, %4246 ], [ %.0.i3180.ph, %4309 ], [ %.0.i3200.ph, %4580 ], [ %4447, %4446 ], [ %.0.i3194.ph, %4509 ], [ %.0.i3206.ph, %4693 ], [ %4798, %4797 ], [ %.0.i3220.ph, %4860 ], [ %.0.i3226.ph, %4918 ], [ %.0.i3232.ph, %4980 ], [ %.0.i3094.ph, %3134 ], [ %.0.i3100.ph, %3340 ], [ %.0.i3238.ph, %5074 ], [ %.0.i3246.ph, %5173 ], [ %.0.i3254.ph, %5303 ], [ %.0.i3260.ph, %5396 ], [ %.0.i3266.ph, %5504 ], [ %.0.i3278.ph, %5740 ], [ %.0.i3284.ph, %5817 ], [ %.0.i3290.ph, %5877 ], [ %.0.i3296.ph, %5941 ], [ %.0.i3302.ph, %6043 ], [ %.0.i3308.ph, %6121 ], [ -5, %6351 ], [ -5, %6371 ], [ -5, %6375 ] ret i64 %.0 .backedge: ; preds = %.backedge.backedge, %96 diff --git a/bench/ruff-rs/optimized/9ezhgv3vaoku7b96fwwr4f701.ll b/bench/ruff-rs/optimized/9ezhgv3vaoku7b96fwwr4f701.ll index f53a30f51c7..98254b30bc5 100644 --- a/bench/ruff-rs/optimized/9ezhgv3vaoku7b96fwwr4f701.ll +++ b/bench/ruff-rs/optimized/9ezhgv3vaoku7b96fwwr4f701.ll @@ -21501,30 +21501,27 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a 29: ; preds = %.lr.ph.split.us %30 = and i32 %18, 255 - %31 = zext nneg i32 %30 to i64 - %32 = and i64 %31, 3 - %33 = icmp ne i64 %32, 0 - %34 = lshr i64 %31, 2 - %35 = zext i1 %33 to i64 - %.sroa.03.0.us = add nuw nsw i64 %34, %35 - %36 = add nuw nsw i64 %13, 2 - %37 = icmp ugt i64 %36, %12 - br i1 %37, label %.split121.us, label %38, !prof !143 - -38: ; preds = %29 - %39 = sub nuw i64 %12, %36 - %40 = icmp ugt i64 %.sroa.03.0.us, %39 - br i1 %40, label %.split125.us, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hc01ee6f5eef73d3aE.exit.us", !prof !143 - -"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hc01ee6f5eef73d3aE.exit.us": ; preds = %38 - %41 = getelementptr inbounds nuw i32, ptr %10, i64 %36 - %42 = getelementptr inbounds nuw i32, ptr %41, i64 %.sroa.03.0.us - br label %43 + %narrow.us = add nuw nsw i32 %30, 3 + %31 = lshr i32 %narrow.us, 2 + %.sroa.03.0.us = zext nneg i32 %31 to i64 + %32 = add nuw nsw i64 %13, 2 + %33 = icmp ugt i64 %32, %12 + br i1 %33, label %.split121.us, label %34, !prof !143 + +34:; preds = %32 + %35 = sub nuw i64 %12, %32 + %36 = icmp ult i64 %35, %.sroa.03.0.us + br i1 %36, label %.split125.us, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hc01ee6f5eef73d3aE.exit.us", !prof !143 + +"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hc01ee6f5eef73d3aE.exit.us":; preds = %34 + %40 = getelementptr inbounds nuw i32, ptr %10, i64 %32 + %38 = getelementptr inbounds nuw i32, ptr %37, i64 %.sroa.03.0.us + br label %39 43: ; preds = %53, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hc01ee6f5eef73d3aE.exit.us" - %.sroa.8.0.us = phi i64 [ 0, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hc01ee6f5eef73d3aE.exit.us" ], [ %46, %53 ] - %.sroa.0.035.us = phi ptr [ %41, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hc01ee6f5eef73d3aE.exit.us" ], [ %45, %53 ] - %44 = icmp eq ptr %.sroa.0.035.us, %42 + %.sroa.8.0.us = phi i64 [ 0, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hc01ee6f5eef73d3aE.exit.us" ], [ %46, %49 ] + %.sroa.0.035.us = phi ptr [ %40, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hc01ee6f5eef73d3aE.exit.us" ], [ %45, %49 ] + %44 = icmp eq ptr %.sroa.0.035.us, %41 br i1 %44, label %.loopexit, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcf49972a7a186c6bE.exit.us" "_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcf49972a7a186c6bE.exit.us": ; preds = %43 @@ -21554,17 +21551,17 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a br i1 %54, label %.split150.us, label %43 .lr.ph.split: ; preds = %.lr.ph, %127 - %55 = phi i64 [ %130, %127 ], [ %13, %.lr.ph ] + %55 = phi i64 [ %130, %119 ], [ %13, %.lr.ph ] %56 = getelementptr inbounds nuw i32, ptr %10, i64 %55 %57 = load i32, ptr %56, align 4, !noundef !3 %trunc = trunc i32 %57 to i8 - switch i8 %trunc, label %61 [ + switch i8 %trunc, label %57 [ i8 -1, label %58 i8 -2, label %112 ] ._crit_edge: ; preds = %127, %4 - %.lcssa89 = phi i64 [ %13, %4 ], [ %130, %127 ] + %.lcssa89 = phi i64 [ %13, %4 ], [ %130, %119 ] tail call void @_ZN4core9panicking18panic_bounds_check17h1a9bf3d94de0fc80E(i64 noundef %.lcssa89, i64 noundef %12, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.18ff8fbd04110e1d2a6adbb6cd15703a.272) #56 unreachable @@ -21575,40 +21572,37 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a 61: ; preds = %.lr.ph.split %62 = and i32 %57, 255 - %63 = zext nneg i32 %62 to i64 - %64 = and i64 %63, 3 - %65 = icmp ne i64 %64, 0 - %66 = lshr i64 %63, 2 - %67 = zext i1 %65 to i64 - %.sroa.03.0 = add nuw nsw i64 %66, %67 - %68 = add nuw nsw i64 %55, 2 - %69 = icmp ugt i64 %68, %12 - br i1 %69, label %.split121.us, label %70, !prof !143 - -70: ; preds = %61 - %71 = sub nuw i64 %12, %68 - %72 = icmp ugt i64 %.sroa.03.0, %71 - br i1 %72, label %.split125.us, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hc01ee6f5eef73d3aE.exit", !prof !143 - -.split125.us: ; preds = %70, %38 - %.us-phi126 = phi i64 [ %39, %38 ], [ %71, %70 ] - %.us-phi127 = phi i64 [ %.sroa.03.0.us, %38 ], [ %.sroa.03.0, %70 ] + %narrow = add nuw nsw i32 %62, 3 + %59 = lshr i32 %narrow, 2 + %.sroa.03.0 = zext nneg i32 %59 to i64 + %60 = add nuw nsw i64 %51, 2 + %61 = icmp ugt i64 %60, %12 + br i1 %61, label %.split121.us, label %62, !prof !143 + +62:; preds = %61 + %63 = sub nuw i64 %12, %60 + %64 = icmp ult i64 %63, %.sroa.03.0 + br i1 %64, label %.split125.us, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hc01ee6f5eef73d3aE.exit", !prof !143 + +.split125.us:; preds = %62, %37 + %.us-phi126 = phi i64 [ %35, %34 ], [ %63, %62 ] + %.us-phi127 = phi i64 [ %.sroa.03.0.us, %34 ], [ %.sroa.03.0, %62 ] tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h5b7964a60aa84510E(i64 noundef range(i64 0, 65) %.us-phi127, i64 noundef range(i64 0, -2) %.us-phi126, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.18ff8fbd04110e1d2a6adbb6cd15703a.273) #56, !noalias !3377 unreachable -"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hc01ee6f5eef73d3aE.exit": ; preds = %70 - %73 = getelementptr inbounds nuw i32, ptr %10, i64 %68 +"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hc01ee6f5eef73d3aE.exit": ; preds = %62 + %73 = getelementptr inbounds nuw i32, ptr %10, i64 %60 %74 = getelementptr inbounds nuw i32, ptr %73, i64 %.sroa.03.0 br label %75 .split121.us: ; preds = %61, %29 - %.us-phi123 = phi i64 [ %36, %29 ], [ %68, %61 ] + %.us-phi123 = phi i64 [ %32, %29 ], [ %60, %57 ] tail call void @_ZN4core5slice5index26slice_start_index_len_fail17hb49174c4f891794aE(i64 noundef %.us-phi123, i64 noundef %12, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.18ff8fbd04110e1d2a6adbb6cd15703a.278) #56 unreachable 75: ; preds = %94, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hc01ee6f5eef73d3aE.exit" - %.sroa.8.0 = phi i64 [ 0, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hc01ee6f5eef73d3aE.exit" ], [ %78, %94 ] - %.sroa.0.035 = phi ptr [ %73, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hc01ee6f5eef73d3aE.exit" ], [ %77, %94 ] + %.sroa.8.0 = phi i64 [ 0, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hc01ee6f5eef73d3aE.exit" ], [ %78, %86 ] + %.sroa.0.035 = phi ptr [ %73, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hc01ee6f5eef73d3aE.exit" ], [ %77, %86 ] %76 = icmp eq ptr %.sroa.0.035, %74 br i1 %76, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcf49972a7a186c6bE.exit.thread", label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcf49972a7a186c6bE.exit" @@ -21631,7 +21625,7 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a br i1 %82, label %.split136.us, label %87 .split129.us: ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcf49972a7a186c6bE.exit", %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcf49972a7a186c6bE.exit.us" - %.us-phi130 = phi i64 [ %36, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcf49972a7a186c6bE.exit.us" ], [ %68, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcf49972a7a186c6bE.exit" ] + %.us-phi130 = phi i64 [ %32, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcf49972a7a186c6bE.exit.us" ], [ %60, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcf49972a7a186c6bE.exit" ] %.us-phi131 = phi i64 [ %.sroa.03.0.us, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcf49972a7a186c6bE.exit.us" ], [ %.sroa.03.0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcf49972a7a186c6bE.exit" ] %.us-phi134 = phi i64 [ %.sroa.8.0.us, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcf49972a7a186c6bE.exit.us" ], [ %.sroa.8.0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcf49972a7a186c6bE.exit" ] %83 = add nuw nsw i64 %.us-phi131, %.us-phi130 @@ -21645,9 +21639,9 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a br i1 %88, label %.split143.us, label %94 .split136.us: ; preds = %81, %49 - %.us-phi137 = phi i64 [ %36, %49 ], [ %68, %81 ] - %.us-phi138 = phi i64 [ %.sroa.03.0.us, %49 ], [ %.sroa.03.0, %81 ] - %.us-phi141 = phi i64 [ %.sroa.8.0.us, %49 ], [ %.sroa.8.0, %81 ] + %.us-phi137 = phi i64 [ %32, %45 ], [ %60, %73 ] + %.us-phi138 = phi i64 [ %.sroa.03.0.us, %45 ], [ %.sroa.03.0, %73 ] + %.us-phi141 = phi i64 [ %.sroa.8.0.us, %45 ], [ %.sroa.8.0, %73 ] %89 = add nuw nsw i64 %.us-phi138, %.us-phi137 %90 = shl i64 %.us-phi141, 2 %91 = add nuw nsw i64 %89, 1 @@ -21660,9 +21654,9 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a br i1 %95, label %.split150.us, label %75 .split143.us: ; preds = %87, %51 - %.us-phi144 = phi i64 [ %36, %51 ], [ %68, %87 ] - %.us-phi145 = phi i64 [ %.sroa.03.0.us, %51 ], [ %.sroa.03.0, %87 ] - %.us-phi148 = phi i64 [ %.sroa.8.0.us, %51 ], [ %.sroa.8.0, %87 ] + %.us-phi144 = phi i64 [ %32, %50 ], [ %60, %79 ] + %.us-phi145 = phi i64 [ %.sroa.03.0.us, %50 ], [ %.sroa.03.0, %79 ] + %.us-phi148 = phi i64 [ %.sroa.8.0.us, %50 ], [ %.sroa.8.0, %79 ] %96 = add nuw nsw i64 %.us-phi145, %.us-phi144 %97 = shl i64 %.us-phi148, 2 %98 = add nuw nsw i64 %96, 2 @@ -21671,9 +21665,9 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a br i1 %100, label %107, label %109 .split150.us: ; preds = %94, %53 - %.us-phi151 = phi i64 [ %36, %53 ], [ %68, %94 ] - %.us-phi152 = phi i64 [ %.sroa.03.0.us, %53 ], [ %.sroa.03.0, %94 ] - %.us-phi155 = phi i64 [ %.sroa.8.0.us, %53 ], [ %.sroa.8.0, %94 ] + %.us-phi151 = phi i64 [ %32, %49 ], [ %60, %86 ] + %.us-phi152 = phi i64 [ %.sroa.03.0.us, %49 ], [ %.sroa.03.0, %86 ] + %.us-phi155 = phi i64 [ %.sroa.8.0.us, %49 ], [ %.sroa.8.0, %86 ] %101 = add nuw nsw i64 %.us-phi152, %.us-phi151 %102 = shl i64 %.us-phi155, 2 %103 = add nuw nsw i64 %101, 3 @@ -21710,7 +21704,7 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a br i1 %115, label %.split.us, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcf49972a7a186c6bE.exit.thread" .split.us: ; preds = %112, %19 - %.us-phi = phi i64 [ %13, %19 ], [ %55, %112 ] + %.us-phi = phi i64 [ %13, %19 ], [ %55, %104 ] %116 = add nuw nsw i64 %.us-phi, 2 %117 = icmp ult i64 %116, %12 br i1 %117, label %118, label %121 @@ -21731,7 +21725,7 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a br i1 %.not.not, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcf49972a7a186c6bE.exit.thread", label %.loopexit .split115.us: ; preds = %58, %23 - %.us-phi117 = phi i64 [ %24, %23 ], [ %59, %58 ] + %.us-phi117 = phi i64 [ %24, %23 ], [ %59, %54 ] tail call void @_ZN4core9panicking18panic_bounds_check17h1a9bf3d94de0fc80E(i64 noundef %.us-phi117, i64 noundef %12, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.18ff8fbd04110e1d2a6adbb6cd15703a.281) #56 unreachable @@ -21741,7 +21735,7 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a br i1 %126, label %127, label %.split158 .loopexit: ; preds = %122, %43, %.loopexit.split.loop.exit101.split.us, %19, %118, %107 - %.sroa.01.1 = phi i32 [ %.sroa.01.0, %107 ], [ %120, %118 ], [ 0, %19 ], [ %28, %.loopexit.split.loop.exit101.split.us ], [ 0, %43 ], [ %124, %122 ] + %.sroa.01.1 = phi i32 [ %.sroa.01.0, %99 ], [ %120, %110 ], [ 0, %19 ], [ %28, %.loopexit.split.loop.exit101.split.us ], [ 0, %39 ], [ %124, %114 ] ret i32 %.sroa.01.1 127: ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcf49972a7a186c6bE.exit.thread" @@ -21859,14 +21853,11 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a 24: ; preds = %17 %25 = zext nneg i32 %19 to i64 - %26 = and i64 %25, 3 - %27 = icmp ne i64 %26, 0 - %28 = lshr i64 %25, 2 - %29 = zext i1 %27 to i64 - %.sroa.0.0.i = add nuw nsw i64 %25, 2 - %30 = add nuw nsw i64 %.sroa.0.0.i, %28 - %31 = add nuw nsw i64 %30, %29 - br label %32 + %26 = add nuw nsw i64 %25, 3 + %.sroa.0.0.i = lshr i64 %26, 2 + %27 = add nuw nsw i64 %25, 2 + %28 = add nuw nsw i64 %27, %.sroa.0.0.i + br label %29 32: ; preds = %24, %22 %.sroa.01.0.i = phi i64 [ %23, %22 ], [ %31, %24 ] @@ -21891,7 +21882,7 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a 43: ; preds = %34 %44 = icmp eq i64 %2, 0 - br i1 %44, label %49, label %51, !prof !246 + br i1 %44, label %49, label %52, !prof !246 45: ; preds = %39 %46 = getelementptr inbounds nuw i32, ptr %16, i64 %41 @@ -21913,7 +21904,7 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a unreachable _ZN12aho_corasick3nfa10contiguous5State13match_pattern17h6c78a77872581689E.exit: ; preds = %45, %49 - %.sroa.05.0.i = phi i32 [ %47, %45 ], [ %50, %49 ] + %.sroa.05.0.i = phi i32 [ %47, %42 ], [ %51, %46 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) ret i32 %.sroa.05.0.i @@ -22000,18 +21991,15 @@ define internal noundef range(i64 0, 2147483648) i64 @"_ZN89_$LT$aho_corasick..n 22: ; preds = %14 %23 = zext nneg i32 %16 to i64 - %24 = and i64 %23, 3 - %25 = icmp ne i64 %24, 0 - %26 = lshr i64 %23, 2 - %27 = zext i1 %25 to i64 - %.sroa.02.0.i = add nuw nsw i64 %23, 2 - %28 = add nuw nsw i64 %.sroa.02.0.i, %26 - %29 = add nuw nsw i64 %28, %27 - %30 = icmp ult i64 %29, %12 - br i1 %30, label %_ZN12aho_corasick3nfa10contiguous5State9match_len17h20c2830356c193a7E.exit, label %31 + %24 = add nuw nsw i64 %23, 3 + %.sroa.02.0.i = lshr i64 %24, 2 + %25 = add nuw nsw i64 %23, 2 + %26 = add nuw nsw i64 %25, %.sroa.02.0.i + %27 = icmp ult i64 %26, %12 + br i1 %27, label %_ZN12aho_corasick3nfa10contiguous5State9match_len17h20c2830356c193a7E.exit, label %28 31: ; preds = %22 - tail call void @_ZN4core9panicking18panic_bounds_check17h1a9bf3d94de0fc80E(i64 noundef %29, i64 noundef %12, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.18ff8fbd04110e1d2a6adbb6cd15703a.52) #56, !noalias !3383 + tail call void @_ZN4core9panicking18panic_bounds_check17h1a9bf3d94de0fc80E(i64 noundef %26, i64 noundef %12, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.18ff8fbd04110e1d2a6adbb6cd15703a.52) #56, !noalias !3383 unreachable 32: ; preds = %19 @@ -22019,7 +22007,7 @@ define internal noundef range(i64 0, 2147483648) i64 @"_ZN89_$LT$aho_corasick..n unreachable _ZN12aho_corasick3nfa10contiguous5State9match_len17h20c2830356c193a7E.exit: ; preds = %19, %22 - %.pn.i = phi i64 [ %29, %22 ], [ %20, %19 ] + %.pn.i = phi i64 [ %26, %22 ], [ %20, %19 ] %.sroa.0.0.in.in.i = getelementptr inbounds nuw i32, ptr %13, i64 %.pn.i %.sroa.0.0.in.i = load i32, ptr %.sroa.0.0.in.in.i, align 4, !alias.scope !3383, !noundef !3 %33 = icmp sgt i32 %.sroa.0.0.in.i, -1 diff --git a/bench/ruff-rs/optimized/e2ejosr9keyhzyna9ksx8o1ej.ll b/bench/ruff-rs/optimized/e2ejosr9keyhzyna9ksx8o1ej.ll index 21cd6798476..25387a93654 100644 --- a/bench/ruff-rs/optimized/e2ejosr9keyhzyna9ksx8o1ej.ll +++ b/bench/ruff-rs/optimized/e2ejosr9keyhzyna9ksx8o1ej.ll @@ -74322,29 +74322,26 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a 29: ; preds = %.lr.ph.split.us %30 = and i32 %18, 255 - %31 = zext nneg i32 %30 to i64 - %32 = and i64 %31, 3 - %33 = icmp ne i64 %32, 0 - %34 = lshr i64 %31, 2 - %35 = zext i1 %33 to i64 - %.sroa.03.0.us = add nuw nsw i64 %34, %35 - %36 = add nuw nsw i64 %13, 2 - %37 = icmp ugt i64 %36, %12 - br i1 %37, label %.split121.us, label %38, !prof !12 + %narrow.us = add nuw nsw i32 %30, 3 + %31 = lshr i32 %narrow.us, 2 + %.sroa.03.0.us = zext nneg i32 %31 to i64 + %32 = add nuw nsw i64 %13, 2 + %33 = icmp ugt i64 %32, %12 + br i1 %33, label %.split121.us, label %34, !prof !12 38: ; preds = %29 - %39 = sub nuw i64 %12, %36 - %40 = icmp ugt i64 %.sroa.03.0.us, %39 + %39 = sub nuw i64 %12, %32 + %40 = icmp ult i64 %35, %.sroa.03.0.us br i1 %40, label %.split125.us, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb194421176b52864E.exit.us", !prof !12 "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb194421176b52864E.exit.us": ; preds = %38 - %41 = getelementptr inbounds nuw i32, ptr %10, i64 %36 + %41 = getelementptr inbounds nuw i32, ptr %10, i64 %32 %42 = getelementptr inbounds nuw i32, ptr %41, i64 %.sroa.03.0.us br label %43 43: ; preds = %53, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb194421176b52864E.exit.us" - %.sroa.8.0.us = phi i64 [ 0, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb194421176b52864E.exit.us" ], [ %46, %53 ] - %.sroa.0.035.us = phi ptr [ %41, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb194421176b52864E.exit.us" ], [ %45, %53 ] + %.sroa.8.0.us = phi i64 [ 0, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb194421176b52864E.exit.us" ], [ %46, %49 ] + %.sroa.0.035.us = phi ptr [ %41, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb194421176b52864E.exit.us" ], [ %45, %49 ] %44 = icmp eq ptr %.sroa.0.035.us, %42 br i1 %44, label %.loopexit, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h859c27588d4de5edE.exit.us" @@ -74375,17 +74372,17 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a br i1 %54, label %.split150.us, label %43 .lr.ph.split: ; preds = %.lr.ph, %127 - %55 = phi i64 [ %130, %127 ], [ %13, %.lr.ph ] + %55 = phi i64 [ %130, %119 ], [ %13, %.lr.ph ] %56 = getelementptr inbounds nuw i32, ptr %10, i64 %55 %57 = load i32, ptr %56, align 4, !noundef !4 %trunc = trunc i32 %57 to i8 - switch i8 %trunc, label %61 [ + switch i8 %trunc, label %57 [ i8 -1, label %58 i8 -2, label %112 ] ._crit_edge: ; preds = %127, %4 - %.lcssa89 = phi i64 [ %13, %4 ], [ %130, %127 ] + %.lcssa89 = phi i64 [ %13, %4 ], [ %130, %119 ] tail call void @_ZN4core9panicking18panic_bounds_check17h1a9bf3d94de0fc80E(i64 noundef %.lcssa89, i64 noundef %12, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.b051c46de04d2cc9e5a94505cde81379.439) #47 unreachable @@ -74396,40 +74393,37 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a 61: ; preds = %.lr.ph.split %62 = and i32 %57, 255 - %63 = zext nneg i32 %62 to i64 - %64 = and i64 %63, 3 - %65 = icmp ne i64 %64, 0 - %66 = lshr i64 %63, 2 - %67 = zext i1 %65 to i64 - %.sroa.03.0 = add nuw nsw i64 %66, %67 - %68 = add nuw nsw i64 %55, 2 - %69 = icmp ugt i64 %68, %12 - br i1 %69, label %.split121.us, label %70, !prof !12 - -70: ; preds = %61 - %71 = sub nuw i64 %12, %68 - %72 = icmp ugt i64 %.sroa.03.0, %71 - br i1 %72, label %.split125.us, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb194421176b52864E.exit", !prof !12 - -.split125.us: ; preds = %70, %38 - %.us-phi126 = phi i64 [ %39, %38 ], [ %71, %70 ] - %.us-phi127 = phi i64 [ %.sroa.03.0.us, %38 ], [ %.sroa.03.0, %70 ] + %narrow = add nuw nsw i32 %62, 3 + %59 = lshr i32 %narrow, 2 + %.sroa.03.0 = zext nneg i32 %59 to i64 + %60 = add nuw nsw i64 %51, 2 + %61 = icmp ugt i64 %60, %12 + br i1 %61, label %.split121.us, label %62, !prof !12 + +62:; preds = %61 + %63 = sub nuw i64 %12, %60 + %64 = icmp ult i64 %63, %.sroa.03.0 + br i1 %64, label %.split125.us, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb194421176b52864E.exit", !prof !12 + +.split125.us:; preds = %62, %37 + %.us-phi126 = phi i64 [ %35, %34 ], [ %63, %62 ] + %.us-phi127 = phi i64 [ %.sroa.03.0.us, %34 ], [ %.sroa.03.0, %62 ] tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h5b7964a60aa84510E(i64 noundef range(i64 0, 65) %.us-phi127, i64 noundef range(i64 0, -2) %.us-phi126, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.b051c46de04d2cc9e5a94505cde81379.440) #47, !noalias !8221 unreachable -"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb194421176b52864E.exit": ; preds = %70 - %73 = getelementptr inbounds nuw i32, ptr %10, i64 %68 +"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb194421176b52864E.exit": ; preds = %62 + %73 = getelementptr inbounds nuw i32, ptr %10, i64 %60 %74 = getelementptr inbounds nuw i32, ptr %73, i64 %.sroa.03.0 br label %75 .split121.us: ; preds = %61, %29 - %.us-phi123 = phi i64 [ %36, %29 ], [ %68, %61 ] + %.us-phi123 = phi i64 [ %32, %29 ], [ %60, %57 ] tail call void @_ZN4core5slice5index26slice_start_index_len_fail17hb49174c4f891794aE(i64 noundef %.us-phi123, i64 noundef %12, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.b051c46de04d2cc9e5a94505cde81379.445) #47 unreachable 75: ; preds = %94, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb194421176b52864E.exit" - %.sroa.8.0 = phi i64 [ 0, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb194421176b52864E.exit" ], [ %78, %94 ] - %.sroa.0.035 = phi ptr [ %73, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb194421176b52864E.exit" ], [ %77, %94 ] + %.sroa.8.0 = phi i64 [ 0, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb194421176b52864E.exit" ], [ %78, %86 ] + %.sroa.0.035 = phi ptr [ %73, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hb194421176b52864E.exit" ], [ %77, %86 ] %76 = icmp eq ptr %.sroa.0.035, %74 br i1 %76, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h859c27588d4de5edE.exit.thread", label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h859c27588d4de5edE.exit" @@ -74452,7 +74446,7 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a br i1 %82, label %.split136.us, label %87 .split129.us: ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h859c27588d4de5edE.exit", %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h859c27588d4de5edE.exit.us" - %.us-phi130 = phi i64 [ %36, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h859c27588d4de5edE.exit.us" ], [ %68, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h859c27588d4de5edE.exit" ] + %.us-phi130 = phi i64 [ %32, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h859c27588d4de5edE.exit.us" ], [ %60, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h859c27588d4de5edE.exit" ] %.us-phi131 = phi i64 [ %.sroa.03.0.us, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h859c27588d4de5edE.exit.us" ], [ %.sroa.03.0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h859c27588d4de5edE.exit" ] %.us-phi134 = phi i64 [ %.sroa.8.0.us, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h859c27588d4de5edE.exit.us" ], [ %.sroa.8.0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h859c27588d4de5edE.exit" ] %83 = add nuw nsw i64 %.us-phi131, %.us-phi130 @@ -74466,9 +74460,9 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a br i1 %88, label %.split143.us, label %94 .split136.us: ; preds = %81, %49 - %.us-phi137 = phi i64 [ %36, %49 ], [ %68, %81 ] - %.us-phi138 = phi i64 [ %.sroa.03.0.us, %49 ], [ %.sroa.03.0, %81 ] - %.us-phi141 = phi i64 [ %.sroa.8.0.us, %49 ], [ %.sroa.8.0, %81 ] + %.us-phi137 = phi i64 [ %32, %45 ], [ %60, %73 ] + %.us-phi138 = phi i64 [ %.sroa.03.0.us, %45 ], [ %.sroa.03.0, %73 ] + %.us-phi141 = phi i64 [ %.sroa.8.0.us, %45 ], [ %.sroa.8.0, %73 ] %89 = add nuw nsw i64 %.us-phi138, %.us-phi137 %90 = shl i64 %.us-phi141, 2 %91 = add nuw nsw i64 %89, 1 @@ -74481,9 +74475,9 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a br i1 %95, label %.split150.us, label %75 .split143.us: ; preds = %87, %51 - %.us-phi144 = phi i64 [ %36, %51 ], [ %68, %87 ] - %.us-phi145 = phi i64 [ %.sroa.03.0.us, %51 ], [ %.sroa.03.0, %87 ] - %.us-phi148 = phi i64 [ %.sroa.8.0.us, %51 ], [ %.sroa.8.0, %87 ] + %.us-phi144 = phi i64 [ %32, %50 ], [ %60, %79 ] + %.us-phi145 = phi i64 [ %.sroa.03.0.us, %50 ], [ %.sroa.03.0, %79 ] + %.us-phi148 = phi i64 [ %.sroa.8.0.us, %50 ], [ %.sroa.8.0, %79 ] %96 = add nuw nsw i64 %.us-phi145, %.us-phi144 %97 = shl i64 %.us-phi148, 2 %98 = add nuw nsw i64 %96, 2 @@ -74492,9 +74486,9 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a br i1 %100, label %107, label %109 .split150.us: ; preds = %94, %53 - %.us-phi151 = phi i64 [ %36, %53 ], [ %68, %94 ] - %.us-phi152 = phi i64 [ %.sroa.03.0.us, %53 ], [ %.sroa.03.0, %94 ] - %.us-phi155 = phi i64 [ %.sroa.8.0.us, %53 ], [ %.sroa.8.0, %94 ] + %.us-phi151 = phi i64 [ %32, %49 ], [ %60, %86 ] + %.us-phi152 = phi i64 [ %.sroa.03.0.us, %49 ], [ %.sroa.03.0, %86 ] + %.us-phi155 = phi i64 [ %.sroa.8.0.us, %49 ], [ %.sroa.8.0, %86 ] %101 = add nuw nsw i64 %.us-phi152, %.us-phi151 %102 = shl i64 %.us-phi155, 2 %103 = add nuw nsw i64 %101, 3 @@ -74531,7 +74525,7 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a br i1 %115, label %.split.us, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h859c27588d4de5edE.exit.thread" .split.us: ; preds = %112, %19 - %.us-phi = phi i64 [ %13, %19 ], [ %55, %112 ] + %.us-phi = phi i64 [ %13, %19 ], [ %55, %104 ] %116 = add nuw nsw i64 %.us-phi, 2 %117 = icmp ult i64 %116, %12 br i1 %117, label %118, label %121 @@ -74552,7 +74546,7 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a br i1 %.not.not, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h859c27588d4de5edE.exit.thread", label %.loopexit .split115.us: ; preds = %58, %23 - %.us-phi117 = phi i64 [ %24, %23 ], [ %59, %58 ] + %.us-phi117 = phi i64 [ %24, %23 ], [ %59, %54 ] tail call void @_ZN4core9panicking18panic_bounds_check17h1a9bf3d94de0fc80E(i64 noundef %.us-phi117, i64 noundef %12, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.b051c46de04d2cc9e5a94505cde81379.448) #47 unreachable @@ -74562,7 +74556,7 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a br i1 %126, label %127, label %.split158 .loopexit: ; preds = %122, %43, %.loopexit.split.loop.exit101.split.us, %19, %118, %107 - %.sroa.01.1 = phi i32 [ %.sroa.01.0, %107 ], [ %120, %118 ], [ 0, %19 ], [ %28, %.loopexit.split.loop.exit101.split.us ], [ 0, %43 ], [ %124, %122 ] + %.sroa.01.1 = phi i32 [ %.sroa.01.0, %99 ], [ %120, %110 ], [ 0, %19 ], [ %28, %.loopexit.split.loop.exit101.split.us ], [ 0, %39 ], [ %124, %114 ] ret i32 %.sroa.01.1 127: ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h859c27588d4de5edE.exit.thread" @@ -74680,14 +74674,11 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a 24: ; preds = %17 %25 = zext nneg i32 %19 to i64 - %26 = and i64 %25, 3 - %27 = icmp ne i64 %26, 0 - %28 = lshr i64 %25, 2 - %29 = zext i1 %27 to i64 - %.sroa.0.0.i = add nuw nsw i64 %25, 2 - %30 = add nuw nsw i64 %.sroa.0.0.i, %28 - %31 = add nuw nsw i64 %30, %29 - br label %32 + %26 = add nuw nsw i64 %25, 3 + %.sroa.0.0.i = lshr i64 %26, 2 + %27 = add nuw nsw i64 %25, 2 + %28 = add nuw nsw i64 %27, %.sroa.0.0.i + br label %29 32: ; preds = %24, %22 %.sroa.01.0.i = phi i64 [ %23, %22 ], [ %31, %24 ] @@ -74712,7 +74703,7 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a 43: ; preds = %34 %44 = icmp eq i64 %2, 0 - br i1 %44, label %49, label %51, !prof !229 + br i1 %44, label %49, label %52, !prof !229 45: ; preds = %39 %46 = getelementptr inbounds nuw i32, ptr %16, i64 %41 @@ -74734,7 +74725,7 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a unreachable _ZN12aho_corasick3nfa10contiguous5State13match_pattern17h6c78a77872581689E.exit: ; preds = %45, %49 - %.sroa.05.0.i = phi i32 [ %47, %45 ], [ %50, %49 ] + %.sroa.05.0.i = phi i32 [ %47, %42 ], [ %51, %46 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) ret i32 %.sroa.05.0.i @@ -74821,18 +74812,15 @@ define internal noundef range(i64 0, 2147483648) i64 @"_ZN89_$LT$aho_corasick..n 22: ; preds = %14 %23 = zext nneg i32 %16 to i64 - %24 = and i64 %23, 3 - %25 = icmp ne i64 %24, 0 - %26 = lshr i64 %23, 2 - %27 = zext i1 %25 to i64 - %.sroa.02.0.i = add nuw nsw i64 %23, 2 - %28 = add nuw nsw i64 %.sroa.02.0.i, %26 - %29 = add nuw nsw i64 %28, %27 - %30 = icmp ult i64 %29, %12 - br i1 %30, label %_ZN12aho_corasick3nfa10contiguous5State9match_len17h20c2830356c193a7E.exit, label %31 + %24 = add nuw nsw i64 %23, 3 + %.sroa.02.0.i = lshr i64 %24, 2 + %25 = add nuw nsw i64 %23, 2 + %26 = add nuw nsw i64 %25, %.sroa.02.0.i + %27 = icmp ult i64 %26, %12 + br i1 %27, label %_ZN12aho_corasick3nfa10contiguous5State9match_len17h20c2830356c193a7E.exit, label %28 31: ; preds = %22 - tail call void @_ZN4core9panicking18panic_bounds_check17h1a9bf3d94de0fc80E(i64 noundef %29, i64 noundef %12, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.b051c46de04d2cc9e5a94505cde81379.38) #47, !noalias !8227 + tail call void @_ZN4core9panicking18panic_bounds_check17h1a9bf3d94de0fc80E(i64 noundef %26, i64 noundef %12, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.b051c46de04d2cc9e5a94505cde81379.38) #47, !noalias !8227 unreachable 32: ; preds = %19 @@ -74840,7 +74828,7 @@ define internal noundef range(i64 0, 2147483648) i64 @"_ZN89_$LT$aho_corasick..n unreachable _ZN12aho_corasick3nfa10contiguous5State9match_len17h20c2830356c193a7E.exit: ; preds = %19, %22 - %.pn.i = phi i64 [ %29, %22 ], [ %20, %19 ] + %.pn.i = phi i64 [ %26, %22 ], [ %20, %19 ] %.sroa.0.0.in.in.i = getelementptr inbounds nuw i32, ptr %13, i64 %.pn.i %.sroa.0.0.in.i = load i32, ptr %.sroa.0.0.in.in.i, align 4, !alias.scope !8227, !noundef !4 %33 = icmp sgt i32 %.sroa.0.0.in.i, -1 diff --git a/bench/tokenizers-rs/optimized/1w676x6x6lprwvn5.ll b/bench/tokenizers-rs/optimized/1w676x6x6lprwvn5.ll index fee54c99660..ba9e670a959 100644 --- a/bench/tokenizers-rs/optimized/1w676x6x6lprwvn5.ll +++ b/bench/tokenizers-rs/optimized/1w676x6x6lprwvn5.ll @@ -7658,29 +7658,26 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a 26: ; preds = %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h4869133a0241fd5dE.exit.us" %27 = and i32 %16, 255 - %28 = zext nneg i32 %27 to i64 - %29 = and i64 %28, 3 - %30 = icmp ne i64 %29, 0 - %31 = lshr i64 %28, 2 - %32 = zext i1 %30 to i64 - %.0.us = add nuw nsw i64 %31, %32 - %33 = add nuw nsw i64 %11, 2 - %34 = icmp ugt i64 %33, %.val46 - br i1 %34, label %.split137.us, label %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17hcdc4f77e04ffb0a5E.exit.us" + %narrow.us = add nuw nsw i32 %27, 3 + %31 = lshr i32 %narrow.us, 2 + %.0.us = zext nneg i32 %28 to i64 + %29 = add nuw nsw i64 %11, 2 + %30 = icmp ugt i64 %29, %.val46 + br i1 %30, label %.split137.us, label %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17hcdc4f77e04ffb0a5E.exit.us" "_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17hcdc4f77e04ffb0a5E.exit.us": ; preds = %26 - %35 = sub nuw i64 %.val46, %33 - %36 = icmp ugt i64 %.0.us, %35 + %35 = sub nuw i64 %.val46, %32 + %36 = icmp ult i64 %31, %.0.us br i1 %36, label %.split141.us, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h84007412cb41c6acE.exit.us" "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h84007412cb41c6acE.exit.us": ; preds = %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17hcdc4f77e04ffb0a5E.exit.us" - %37 = getelementptr inbounds nuw i32, ptr %.val45, i64 %33 + %37 = getelementptr inbounds nuw i32, ptr %.val45, i64 %32 %38 = getelementptr inbounds nuw i32, ptr %37, i64 %.0.us br label %39 39: ; preds = %49, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h84007412cb41c6acE.exit.us" - %.sroa.8.0.us = phi i64 [ 0, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h84007412cb41c6acE.exit.us" ], [ %42, %49 ] - %.sroa.0.0.us = phi ptr [ %37, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h84007412cb41c6acE.exit.us" ], [ %41, %49 ] + %.sroa.8.0.us = phi i64 [ 0, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h84007412cb41c6acE.exit.us" ], [ %42, %45 ] + %.sroa.0.0.us = phi ptr [ %37, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h84007412cb41c6acE.exit.us" ], [ %41, %45 ] %40 = icmp eq ptr %.sroa.0.0.us, %38 br i1 %40, label %.loopexit, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf6e15cf434665b7aE.exit.us" @@ -7720,7 +7717,7 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a %52 = getelementptr inbounds nuw [0 x i32], ptr %.val45, i64 0, i64 %51 %53 = load i32, ptr %52, align 4, !noundef !9 %trunc = trunc i32 %53 to i8 - switch i8 %trunc, label %59 [ + switch i8 %trunc, label %55 [ i8 -1, label %54 i8 -2, label %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h4869133a0241fd5dE.exit48" ] @@ -7731,7 +7728,7 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a br i1 %56, label %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h4869133a0241fd5dE.exit47", label %.split131.us, !prof !1038 .split131.us: ; preds = %54, %20 - %.us-phi133 = phi i64 [ %21, %20 ], [ %55, %54 ] + %.us-phi133 = phi i64 [ %21, %20 ], [ %55, %50 ] tail call void @_ZN4core9panicking18panic_bounds_check17h9bb22f08a42e1ac8E(i64 noundef %.us-phi133, i64 noundef %.val46, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.82274a64a50163a9f6a7c2c109c19d14.189) #45, !noalias !1856 unreachable @@ -7743,24 +7740,21 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a 59: ; preds = %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h4869133a0241fd5dE.exit" %60 = and i32 %53, 255 - %61 = zext nneg i32 %60 to i64 - %62 = and i64 %61, 3 - %63 = icmp ne i64 %62, 0 - %64 = lshr i64 %61, 2 - %65 = zext i1 %63 to i64 - %.0 = add nuw nsw i64 %64, %65 - %66 = add nuw nsw i64 %51, 2 - %67 = icmp ugt i64 %66, %.val46 - br i1 %67, label %.split137.us, label %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17hcdc4f77e04ffb0a5E.exit" - -.split137.us: ; preds = %59, %26 - %.us-phi139 = phi i64 [ %33, %26 ], [ %66, %59 ] + %narrow = add nuw nsw i32 %60, 3 + %57 = lshr i32 %narrow, 2 + %.0 = zext nneg i32 %57 to i64 + %58 = add nuw nsw i64 %51, 2 + %59 = icmp ugt i64 %58, %.val46 + br i1 %59, label %.split137.us, label %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17hcdc4f77e04ffb0a5E.exit" + +.split137.us:; preds = %55, %26 + %.us-phi139 = phi i64 [ %29, %26 ], [ %58, %55 ] tail call void @_ZN4core5slice5index26slice_start_index_len_fail17h559b8f6dc3428c29E(i64 noundef range(i64 0, 4294967298) %.us-phi139, i64 noundef %.val46, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.82274a64a50163a9f6a7c2c109c19d14.181) #45, !noalias !1859 unreachable "_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17hcdc4f77e04ffb0a5E.exit": ; preds = %59 - %68 = sub nuw i64 %.val46, %66 - %69 = icmp ugt i64 %.0, %68 + %68 = sub nuw i64 %.val46, %58 + %69 = icmp ult i64 %60, %.0 br i1 %69, label %.split141.us, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h84007412cb41c6acE.exit" .split141.us: ; preds = %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17hcdc4f77e04ffb0a5E.exit", %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17hcdc4f77e04ffb0a5E.exit.us" @@ -7770,7 +7764,7 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a unreachable "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h84007412cb41c6acE.exit": ; preds = %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17hcdc4f77e04ffb0a5E.exit" - %70 = getelementptr inbounds nuw i32, ptr %.val45, i64 %66 + %70 = getelementptr inbounds nuw i32, ptr %.val45, i64 %58 %71 = getelementptr inbounds nuw i32, ptr %70, i64 %.0 br label %75 @@ -7780,9 +7774,9 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a %74 = icmp eq i8 %8, %73 br i1 %74, label %.split.us, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf6e15cf434665b7aE.exit.thread" -75: ; preds = %96, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h84007412cb41c6acE.exit" - %.sroa.8.0 = phi i64 [ 0, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h84007412cb41c6acE.exit" ], [ %78, %96 ] - %.sroa.0.0 = phi ptr [ %70, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h84007412cb41c6acE.exit" ], [ %77, %96 ] +75: ; preds = %88, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h84007412cb41c6acE.exit" + %.sroa.8.0 = phi i64 [ 0, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h84007412cb41c6acE.exit" ], [ %78, %88 ] + %.sroa.0.0 = phi ptr [ %70, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h84007412cb41c6acE.exit" ], [ %77, %88 ] %76 = icmp eq ptr %.sroa.0.0, %71 br i1 %76, label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf6e15cf434665b7aE.exit.thread", label %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf6e15cf434665b7aE.exit" @@ -7802,77 +7796,77 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a %.sroa.5.0.extract.shift = lshr i32 %79, 8 %.sroa.5.0.extract.trunc = trunc i32 %.sroa.5.0.extract.shift to i8 %82 = icmp eq i8 %8, %.sroa.5.0.extract.trunc - br i1 %82, label %.split152.us, label %88 + br i1 %82, label %.split152.us, label %80 .split145.us: ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf6e15cf434665b7aE.exit", %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf6e15cf434665b7aE.exit.us" - %.us-phi146 = phi i64 [ %33, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf6e15cf434665b7aE.exit.us" ], [ %66, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf6e15cf434665b7aE.exit" ] + %.us-phi146 = phi i64 [ %32, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf6e15cf434665b7aE.exit.us" ], [ %58, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf6e15cf434665b7aE.exit" ] %.us-phi147 = phi i64 [ %.0.us, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf6e15cf434665b7aE.exit.us" ], [ %.0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf6e15cf434665b7aE.exit" ] %.us-phi150 = phi i64 [ %.sroa.8.0.us, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf6e15cf434665b7aE.exit.us" ], [ %.sroa.8.0, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf6e15cf434665b7aE.exit" ] %83 = add nuw nsw i64 %.us-phi147, %.us-phi146 %84 = shl i64 %.us-phi150, 2 + %77 = add i64 %76, %75 + %78 = icmp ult i64 %77, %.val46 + br i1 %78, label %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h4869133a0241fd5dE.exit49", label %79, !prof !1038 + +79: ; preds = %.split145.us + tail call void @_ZN4core9panicking18panic_bounds_check17h9bb22f08a42e1ac8E(i64 noundef %77, i64 noundef %.val46, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.82274a64a50163a9f6a7c2c109c19d14.186) #45, !noalias !1865 + unreachable + +80: ; preds = %73 + %81 = icmp eq i8 %8, %.sroa.610.0.extract.trunc + br i1 %81, label %.split159.us, label %88 + +.split152.us: ; preds = %73, %41 + %.us-phi153 = phi i64 [ %29, %41 ], [ %58, %73 ] + %.us-phi154 = phi i64 [ %.0.us, %41 ], [ %.0, %73 ] + %.us-phi157 = phi i64 [ %.sroa.8.0.us, %41 ], [ %.sroa.8.0, %73 ] + %82 = add nuw nsw i64 %.us-phi154, %.us-phi153 + %83 = shl i64 %.us-phi157, 2 + %84 = add nuw nsw i64 %82, 1 %85 = add i64 %84, %83 %86 = icmp ult i64 %85, %.val46 br i1 %86, label %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h4869133a0241fd5dE.exit49", label %87, !prof !1038 -87: ; preds = %.split145.us - tail call void @_ZN4core9panicking18panic_bounds_check17h9bb22f08a42e1ac8E(i64 noundef %85, i64 noundef %.val46, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.82274a64a50163a9f6a7c2c109c19d14.186) #45, !noalias !1865 +87: ; preds = %.split152.us + tail call void @_ZN4core9panicking18panic_bounds_check17h9bb22f08a42e1ac8E(i64 noundef %85, i64 noundef %.val46, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.82274a64a50163a9f6a7c2c109c19d14.185) #45, !noalias !1868 unreachable -88: ; preds = %81 - %89 = icmp eq i8 %8, %.sroa.610.0.extract.trunc - br i1 %89, label %.split159.us, label %96 +88: ; preds = %80 + %89 = icmp eq i8 %8, %.sroa.7.0.extract.trunc + br i1 %89, label %.split166.us, label %67 -.split152.us: ; preds = %81, %45 - %.us-phi153 = phi i64 [ %33, %45 ], [ %66, %81 ] - %.us-phi154 = phi i64 [ %.0.us, %45 ], [ %.0, %81 ] - %.us-phi157 = phi i64 [ %.sroa.8.0.us, %45 ], [ %.sroa.8.0, %81 ] +.split152.us: ; preds = %80, %43 + %.us-phi153 = phi i64 [ %32, %43 ], [ %58, %80 ] + %.us-phi154 = phi i64 [ %.0.us, %43 ], [ %.0, %80 ] + %.us-phi157 = phi i64 [ %.sroa.8.0.us, %43 ], [ %.sroa.8.0, %80 ] %90 = add nuw nsw i64 %.us-phi154, %.us-phi153 %91 = shl i64 %.us-phi157, 2 - %92 = add nuw nsw i64 %90, 1 + %92 = add nuw nsw i64 %90, 2 %93 = add i64 %92, %91 %94 = icmp ult i64 %93, %.val46 br i1 %94, label %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h4869133a0241fd5dE.exit49", label %95, !prof !1038 95: ; preds = %.split152.us - tail call void @_ZN4core9panicking18panic_bounds_check17h9bb22f08a42e1ac8E(i64 noundef %93, i64 noundef %.val46, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.82274a64a50163a9f6a7c2c109c19d14.185) #45, !noalias !1868 - unreachable - -96: ; preds = %88 - %97 = icmp eq i8 %8, %.sroa.7.0.extract.trunc - br i1 %97, label %.split166.us, label %75 - -.split159.us: ; preds = %88, %47 - %.us-phi160 = phi i64 [ %33, %47 ], [ %66, %88 ] - %.us-phi161 = phi i64 [ %.0.us, %47 ], [ %.0, %88 ] - %.us-phi164 = phi i64 [ %.sroa.8.0.us, %47 ], [ %.sroa.8.0, %88 ] - %98 = add nuw nsw i64 %.us-phi161, %.us-phi160 - %99 = shl i64 %.us-phi164, 2 - %100 = add nuw nsw i64 %98, 2 - %101 = add i64 %100, %99 - %102 = icmp ult i64 %101, %.val46 - br i1 %102, label %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h4869133a0241fd5dE.exit49", label %103, !prof !1038 - -103: ; preds = %.split159.us - tail call void @_ZN4core9panicking18panic_bounds_check17h9bb22f08a42e1ac8E(i64 noundef %101, i64 noundef %.val46, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.82274a64a50163a9f6a7c2c109c19d14.184) #45, !noalias !1871 + tail call void @_ZN4core9panicking18panic_bounds_check17h9bb22f08a42e1ac8E(i64 noundef %93, i64 noundef %.val46, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.82274a64a50163a9f6a7c2c109c19d14.184) #45, !noalias !1871 unreachable -.split166.us: ; preds = %96, %49 - %.us-phi167 = phi i64 [ %33, %49 ], [ %66, %96 ] - %.us-phi168 = phi i64 [ %.0.us, %49 ], [ %.0, %96 ] - %.us-phi171 = phi i64 [ %.sroa.8.0.us, %49 ], [ %.sroa.8.0, %96 ] - %104 = add nuw nsw i64 %.us-phi168, %.us-phi167 - %105 = shl i64 %.us-phi171, 2 - %106 = add nuw nsw i64 %104, 3 - %107 = add i64 %106, %105 - %108 = icmp ult i64 %107, %.val46 - br i1 %108, label %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h4869133a0241fd5dE.exit49", label %109, !prof !1038 +96: ; preds = %88, %45 + %.us-phi167 = phi i64 [ %29, %45 ], [ %58, %88 ] + %.us-phi168 = phi i64 [ %.0.us, %45 ], [ %.0, %88 ] + %.us-phi171 = phi i64 [ %.sroa.8.0.us, %45 ], [ %.sroa.8.0, %88 ] + %96 = add nuw nsw i64 %.us-phi168, %.us-phi167 + %97 = shl i64 %.us-phi171, 2 + %98 = add nuw nsw i64 %96, 3 + %99 = add i64 %98, %97 + %100 = icmp ult i64 %99, %.val46 + br i1 %100, label %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h4869133a0241fd5dE.exit49", label %101, !prof !1038 -109: ; preds = %.split166.us - tail call void @_ZN4core9panicking18panic_bounds_check17h9bb22f08a42e1ac8E(i64 noundef %107, i64 noundef %.val46, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.82274a64a50163a9f6a7c2c109c19d14.183) #45, !noalias !1874 +103: ; preds = %.split166.us + tail call void @_ZN4core9panicking18panic_bounds_check17h9bb22f08a42e1ac8E(i64 noundef %99, i64 noundef %.val46, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.82274a64a50163a9f6a7c2c109c19d14.183) #45, !noalias !1874 unreachable "_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h4869133a0241fd5dE.exit49": ; preds = %.split166.us, %.split159.us, %.split152.us, %.split145.us - %.sink = phi i64 [ %85, %.split145.us ], [ %93, %.split152.us ], [ %101, %.split159.us ], [ %107, %.split166.us ] + %.sink = phi i64 [ %77, %.split145.us ], [ %85, %.split152.us ], [ %93, %.split159.us ], [ %99, %.split166.us ] %110 = getelementptr inbounds [0 x i32], ptr %.val45, i64 0, i64 %.sink %.026 = load i32, ptr %110, align 4, !noundef !9 br label %.loopexit @@ -7909,7 +7903,7 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a br i1 %121, label %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h4869133a0241fd5dE.exit", label %._crit_edge, !prof !1883 .loopexit: ; preds = %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h4869133a0241fd5dE.exit47", %39, %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h4869133a0241fd5dE.exit47.us", %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h4869133a0241fd5dE.exit48.us", %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h4869133a0241fd5dE.exit53", %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h4869133a0241fd5dE.exit49" - %.1 = phi i32 [ %.026, %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h4869133a0241fd5dE.exit49" ], [ %115, %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h4869133a0241fd5dE.exit53" ], [ 0, %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h4869133a0241fd5dE.exit48.us" ], [ %25, %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h4869133a0241fd5dE.exit47.us" ], [ 0, %39 ], [ %58, %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h4869133a0241fd5dE.exit47" ] + %.1 = phi i32 [ %.026, %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h4869133a0241fd5dE.exit49" ], [ %115, %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h4869133a0241fd5dE.exit53" ], [ 0, %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h4869133a0241fd5dE.exit48.us" ], [ %25, %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h4869133a0241fd5dE.exit47.us" ], [ 0, %35 ], [ %58, %"_ZN81_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..ops..index..Index$LT$I$GT$$GT$5index17h4869133a0241fd5dE.exit47" ] ret i32 %.1 } @@ -8014,14 +8008,11 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a 22: ; preds = %15 %23 = zext nneg i32 %17 to i64 - %24 = and i64 %23, 3 - %25 = icmp ne i64 %24, 0 - %26 = lshr i64 %23, 2 - %27 = zext i1 %25 to i64 - %.08.i = add nuw nsw i64 %23, 2 - %28 = add nuw nsw i64 %.08.i, %26 - %29 = add nuw nsw i64 %28, %27 - br label %30 + %24 = add nuw nsw i64 %23, 3 + %.08.i = lshr i64 %24, 2 + %25 = add nuw nsw i64 %23, 2 + %26 = add nuw nsw i64 %25, %.08.i + br label %27 30: ; preds = %22, %20 %.09.i = phi i64 [ %21, %20 ], [ %29, %22 ] @@ -8032,7 +8023,7 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a %33 = getelementptr inbounds [0 x i32], ptr %14, i64 0, i64 %.09.i %34 = load i32, ptr %33, align 4, !alias.scope !1893, !noundef !9 %35 = icmp sgt i32 %34, -1 - br i1 %35, label %37, label %41 + br i1 %35, label %37, label %42 36: ; preds = %30 tail call void @_ZN4core9panicking18panic_bounds_check17h9bb22f08a42e1ac8E(i64 noundef %.09.i, i64 noundef %13, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.82274a64a50163a9f6a7c2c109c19d14.49) #45, !noalias !1893 @@ -8057,18 +8048,18 @@ define internal noundef i32 @"_ZN89_$LT$aho_corasick..nfa..contiguous..NFA$u20$a tail call void @_ZN4core9panicking18panic_bounds_check17h9bb22f08a42e1ac8E(i64 noundef %39, i64 noundef %13, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.82274a64a50163a9f6a7c2c109c19d14.50) #45, !noalias !1893 unreachable -47: ; preds = %41 +47: ; preds = %42 %48 = and i32 %34, 2147483647 br label %_ZN12aho_corasick3nfa10contiguous5State13match_pattern17h2e7adf6f2f645163E.exit -49: ; preds = %41 +49: ; preds = %42 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %4), !noalias !1893 store ptr null, ptr %4, align 8, !noalias !1893 call void @_ZN4core9panicking13assert_failed17hfd47d916357f24a8E(i8 noundef 0, ptr noalias noundef readonly align 8 dereferenceable(8) @anon.82274a64a50163a9f6a7c2c109c19d14.51, ptr noalias noundef nonnull readonly align 8 dereferenceable(8) %5, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %4, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.82274a64a50163a9f6a7c2c109c19d14.52) #45, !noalias !1893 unreachable _ZN12aho_corasick3nfa10contiguous5State13match_pattern17h2e7adf6f2f645163E.exit: ; preds = %43, %47 - %.0.i = phi i32 [ %45, %43 ], [ %48, %47 ] + %.0.i = phi i32 [ %45, %40 ], [ %48, %44 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) ret i32 %.0.i } @@ -8155,18 +8146,15 @@ define internal noundef range(i64 0, 2147483648) i64 @"_ZN89_$LT$aho_corasick..n 20: ; preds = %12 %21 = zext nneg i32 %14 to i64 - %22 = and i64 %21, 3 - %23 = icmp ne i64 %22, 0 - %24 = lshr i64 %21, 2 - %25 = zext i1 %23 to i64 - %.03.i = add nuw nsw i64 %21, 2 - %26 = add nuw nsw i64 %.03.i, %24 - %27 = add nuw nsw i64 %26, %25 - %28 = icmp ult i64 %27, %10 - br i1 %28, label %_ZN12aho_corasick3nfa10contiguous5State9match_len17hfcc6bc160d39bae9E.exit, label %29, !prof !1038 + %22 = add nuw nsw i64 %21, 3 + %.03.i = lshr i64 %22, 2 + %23 = add nuw nsw i64 %21, 2 + %24 = add nuw nsw i64 %23, %.03.i + %25 = icmp ult i64 %24, %10 + br i1 %25, label %_ZN12aho_corasick3nfa10contiguous5State9match_len17hfcc6bc160d39bae9E.exit, label %26, !prof !1041 29: ; preds = %20 - tail call void @_ZN4core9panicking18panic_bounds_check17h9bb22f08a42e1ac8E(i64 noundef %27, i64 noundef %10, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.82274a64a50163a9f6a7c2c109c19d14.53) #45, !noalias !1899 + tail call void @_ZN4core9panicking18panic_bounds_check17h9bb22f08a42e1ac8E(i64 noundef %24, i64 noundef %10, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.82274a64a50163a9f6a7c2c109c19d14.53) #45, !noalias !1899 unreachable 30: ; preds = %17 @@ -8174,7 +8162,7 @@ define internal noundef range(i64 0, 2147483648) i64 @"_ZN89_$LT$aho_corasick..n unreachable _ZN12aho_corasick3nfa10contiguous5State9match_len17hfcc6bc160d39bae9E.exit: ; preds = %17, %20 - %.pn.i = phi i64 [ %27, %20 ], [ %18, %17 ] + %.pn.i = phi i64 [ %24, %20 ], [ %18, %17 ] %.0.in.in.i = getelementptr inbounds [0 x i32], ptr %11, i64 0, i64 %.pn.i %.0.in.i = load i32, ptr %.0.in.in.i, align 4, !alias.scope !1899, !noundef !9 %31 = icmp sgt i32 %.0.in.i, -1 diff --git a/bench/wireshark/optimized/packet-gcsna.ll b/bench/wireshark/optimized/packet-gcsna.ll index e44a7979f78..8e2d9ca056b 100644 --- a/bench/wireshark/optimized/packet-gcsna.ll +++ b/bench/wireshark/optimized/packet-gcsna.ll @@ -164,7 +164,7 @@ define internal i32 @dissect_gcsna(ptr noundef %0, ptr noundef %1, ptr noundef % %.02832 = phi i32 [ %.129, %gcsna_message_decode.exit ], [ 0, %12 ] %16 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %.02832) %17 = add i32 %.02832, 1 - switch i8 %16, label %155 [ + switch i8 %16, label %152 [ i8 1, label %18 i8 2, label %80 i8 3, label %89 @@ -381,11 +381,8 @@ gcsna_message_GCSNA1xCircuitService.exit.i: ; preds = %74, %52 gcsna_message_GCSNAServiceReject.exit.i: ; preds = %.lr.ph.i19.i, %145, %135, %130, %125, %120, %._crit_edge.i.i %.1.i.i = phi i16 [ %104, %145 ], [ %124, %120 ], [ %.0.lcssa.i.i, %._crit_edge.i.i ], [ %129, %125 ], [ %134, %130 ], [ %138, %135 ], [ %143, %.lr.ph.i19.i ] %149 = zext i16 %.1.i.i to i32 - %150 = and i32 %149, 7 - %151 = icmp ne i32 %150, 0 - %152 = lshr i32 %149, 3 - %153 = zext i1 %151 to i32 - %storemerge.i.i = add nuw nsw i32 %152, %153 + %150 = add nuw nsw i32 %149, 7 + %storemerge.i.i = lshr i32 %150, 3 br label %gcsna_message_decode.exit gcsna_message_decode.exit: ; preds = %gcsna_message_GCSNA1xCircuitService.exit.i, %80, %gcsna_message_GCSNAServiceReject.exit.i diff --git a/bench/wireshark/optimized/packet-tetra.ll b/bench/wireshark/optimized/packet-tetra.ll index 93be903cdee..43267b90670 100644 --- a/bench/wireshark/optimized/packet-tetra.ll +++ b/bench/wireshark/optimized/packet-tetra.ll @@ -2896,7 +2896,7 @@ target triple = "x86_64-pc-linux-gnu" @.str.1854 = private unnamed_addr constant [24 x i8] c"Tetra-UNITDATA-REQ Done\00", align 1 @.str.1855 = private unnamed_addr constant [20 x i8] c"Unknown command: %d\00", align 1 @.str.1856 = private unnamed_addr constant [43 x i8] c" (Multiple frame: %d, Frame: %d, Slot: %d)\00", align 1 -@switch.table.dissect_tetra = private unnamed_addr constant [11 x i32] [i32 14, i32 268, i32 124, i32 0, i32 60, i32 124, i32 274, i32 137, i32 144, i32 288, i32 124], align 4 +@switch.table.dissect_tetra = private unnamed_addr constant [11 x i32] [i32 2, i32 34, i32 16, i32 0, i32 8, i32 16, i32 35, i32 18, i32 18, i32 36, i32 16], align 4 @switch.table.dissect_tetra.15 = private unnamed_addr constant [15 x i32] [i32 14, i32 268, i32 124, i32 0, i32 60, i32 124, i32 274, i32 137, i32 144, i32 288, i32 124, i32 0, i32 0, i32 0, i32 92], align 4 ; Function Attrs: null_pointer_is_valid sspstrong uwtable @@ -3475,7 +3475,7 @@ define internal i32 @dissect_tetra(ptr noundef %0, ptr noundef %1, ptr noundef % 94: ; preds = %get_tx_pdu_length.exit.i, %90 %indvars.iv.i = phi i64 [ 0, %90 ], [ %indvars.iv.next.i, %get_tx_pdu_length.exit.i ] %.150.i = phi i32 [ %spec.select.i, %90 ], [ %102, %get_tx_pdu_length.exit.i ] - %.04548.i = phi i32 [ %91, %90 ], [ %109, %get_tx_pdu_length.exit.i ] + %.04548.i = phi i32 [ %91, %90 ], [ %106, %get_tx_pdu_length.exit.i ] call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %6) #3 %95 = load i32, ptr @hf_tetra_channel1, align 4 store i32 %95, ptr %6, align 4 @@ -3500,14 +3500,9 @@ switch.lookup: ; preds = %94 get_tx_pdu_length.exit.i: ; preds = %switch.lookup, %94 %.0.i.i = phi i32 [ 0, %94 ], [ %switch.load, %switch.lookup ] - %105 = lshr i32 %.0.i.i, 3 - %106 = and i32 %.0.i.i, 7 - %.not.i = icmp ne i32 %106, 0 - %107 = zext i1 %.not.i to i32 - %spec.select47.i = add nuw nsw i32 %105, %107 - %108 = tail call ptr @tvb_new_subset_length(ptr noundef %0, i32 noundef %.04548.i, i32 noundef %spec.select47.i) - tail call void @tetra_dissect_pdu(i32 noundef %98, i32 noundef 1, ptr noundef %108, ptr noundef %85, ptr noundef %1) - %109 = add i32 %spec.select47.i, %.04548.i + %105 = tail call ptr @tvb_new_subset_length(ptr noundef %0, i32 noundef %.04548.i, i32 noundef %.0.i.i) + tail call void @tetra_dissect_pdu(i32 noundef %98, i32 noundef 1, ptr noundef %105, ptr noundef %85, ptr noundef %1) + %106 = add i32 %.0.i.i, %.04548.i call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %6) #3 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i @@ -3538,7 +3533,7 @@ get_tx_pdu_length.exit.i: ; preds = %switch.lookup, %94 126: ; preds = %get_rx_pdu_length.exit.i, %.lr.ph.i %indvars.iv.i60 = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next.i61, %get_rx_pdu_length.exit.i ] - %.05557.i = phi i32 [ %123, %.lr.ph.i ], [ %149, %get_rx_pdu_length.exit.i ] + %.05557.i = phi i32 [ %123, %.lr.ph.i ], [ %145, %get_rx_pdu_length.exit.i ] call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %5) #3 %127 = load i32, ptr @hf_tetra_rxchannel1, align 4 store i32 %127, ptr %5, align 4 @@ -3572,17 +3567,16 @@ switch.lookup70: ; preds = %126 br label %get_rx_pdu_length.exit.i get_rx_pdu_length.exit.i: ; preds = %126, %switch.lookup70 - %.0.i.i63 = phi i32 [ %switch.load73, %switch.lookup70 ], [ 0, %126 ] - %144 = lshr i32 %.0.i.i63, 3 - %145 = and i32 %.0.i.i63, 7 - %.not56.i = icmp ne i32 %145, 0 - %146 = zext i1 %.not56.i to i32 - %spec.select.i64 = add nuw nsw i32 %144, %146 - %147 = tail call ptr @tvb_new_subset_length(ptr noundef %0, i32 noundef %.05557.i, i32 noundef %spec.select.i64) - tail call void @tetra_dissect_pdu(i32 noundef %132, i32 noundef 0, ptr noundef %147, ptr noundef %122, ptr noundef %1) - %148 = add nsw i32 %spec.select.i64, -1 - %.1.i = select i1 %.not56.i, i32 %148, i32 %144 - %149 = add i32 %.1.i, %.05557.i + %.0.i.i63 = phi i32 [ %switch.load73, %switch.lookup69 ], [ 0, %123 ] + %141 = and i32 %.0.i.i63, 7 + %.not56.not.i = icmp ne i32 %141, 0 + %142 = add nuw nsw i32 %.0.i.i62, 7 + %spec.select.i63 = lshr i32 %142, 3 + %143 = tail call ptr @tvb_new_subset_length(ptr noundef %0, i32 noundef %.05557.i, i32 noundef %spec.select.i63) + tail call void @tetra_dissect_pdu(i32 noundef %129, i32 noundef 0, ptr noundef %143, ptr noundef %119, ptr noundef %1) + %144 = sext i1 %.not56.not.i to i32 + %148 = add i32 %spec.select.i63, %.05557.i + %145 = add i32 %148, %144 call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %5) #3 %exitcond.not.i65 = icmp eq i64 %indvars.iv.next.i61, %wide.trip.count.i59 br i1 %exitcond.not.i65, label %dissect_tetra_UNITDATA_REQ.exit, label %126, !llvm.loop !10 diff --git a/bench/z3/optimized/sat_clause.ll b/bench/z3/optimized/sat_clause.ll index 834375b905a..5a533814e04 100644 --- a/bench/z3/optimized/sat_clause.ll +++ b/bench/z3/optimized/sat_clause.ll @@ -715,19 +715,17 @@ define linkonce_odr hidden noundef ptr @_ZN13sat_allocator8allocateEm(ptr nounde br label %84 9: ; preds = %2 - %10 = lshr i64 %1, 3 - %11 = and i64 %1, 7 - %.not.i = icmp ne i64 %11, 0 - %12 = zext i1 %.not.i to i64 - %13 = add nuw nsw i64 %10, %12 - %14 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %15 = getelementptr inbounds nuw [65 x %class.ptr_vector.1], ptr %14, i64 0, i64 %13 - %16 = load ptr, ptr %15, align 8, !tbaa !39 - %17 = icmp eq ptr %16, null - br i1 %17, label %_ZNK6vectorIPvLb0EjE5emptyEv.exit.thread, label %_ZNK6vectorIPvLb0EjE5emptyEv.exit + %10 = and i64 %1, 7 + %11 = add nuw nsw i64 %1, 7 + %12 = lshr i64 %11, 3 + %13 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %14 = getelementptr inbounds nuw [65 x %class.ptr_vector.1], ptr %13, i64 0, i64 %12 + %15 = load ptr, ptr %14, align 8, !tbaa !39 + %16 = icmp eq ptr %15, null + br i1 %16, label %_ZNK6vectorIPvLb0EjE5emptyEv.exit.thread, label %_ZNK6vectorIPvLb0EjE5emptyEv.exit _ZNK6vectorIPvLb0EjE5emptyEv.exit: ; preds = %9 - %18 = getelementptr inbounds i8, ptr %16, i64 -4 + %18 = getelementptr inbounds i8, ptr %15, i64 -4 %19 = load i32, ptr %18, align 4, !tbaa !16 %20 = icmp eq i32 %19, 0 br i1 %20, label %_ZNK6vectorIPvLb0EjE5emptyEv.exit.thread, label %_ZN6vectorIPvLb0EjE4backEv.exit @@ -735,7 +733,7 @@ _ZNK6vectorIPvLb0EjE5emptyEv.exit: ; preds = %9 _ZN6vectorIPvLb0EjE4backEv.exit: ; preds = %_ZNK6vectorIPvLb0EjE5emptyEv.exit %21 = add i32 %19, -1 %22 = zext i32 %21 to i64 - %23 = getelementptr inbounds nuw ptr, ptr %16, i64 %22 + %23 = getelementptr inbounds nuw ptr, ptr %15, i64 %22 %24 = load ptr, ptr %23, align 8, !tbaa !47 store i32 %21, ptr %18, align 4, !tbaa !16 br label %84 @@ -782,8 +780,8 @@ _ZNK6vectorIPN13sat_allocator5chunkELb0EjE5emptyEv.exit.thread: ; preds = %_ZNK6 br label %_ZN6vectorIPN13sat_allocator5chunkELb0EjE4backEv.exit _ZN6vectorIPN13sat_allocator5chunkELb0EjE4backEv.exit: ; preds = %36, %42 - %43 = phi i32 [ %.pre2.i, %42 ], [ %38, %36 ] - %44 = phi ptr [ %.pre.i, %42 ], [ %34, %36 ] + %43 = phi i32 [ %.pre2.i, %41 ], [ %38, %35 ] + %44 = phi ptr [ %.pre.i, %41 ], [ %34, %35 ] %45 = getelementptr inbounds i8, ptr %44, i64 -4 %46 = zext i32 %43 to i64 %47 = getelementptr inbounds nuw ptr, ptr %44, i64 %46 @@ -798,7 +796,7 @@ _ZN6vectorIPN13sat_allocator5chunkELb0EjE4backEv.exit17: ; preds = %_ZNK6vectorI %50 = phi i32 [ %31, %_ZNK6vectorIPN13sat_allocator5chunkELb0EjE5emptyEv.exit._crit_edge ], [ %43, %_ZN6vectorIPN13sat_allocator5chunkELb0EjE4backEv.exit ] %51 = phi ptr [ %26, %_ZNK6vectorIPN13sat_allocator5chunkELb0EjE5emptyEv.exit._crit_edge ], [ %44, %_ZN6vectorIPN13sat_allocator5chunkELb0EjE4backEv.exit ] %52 = phi ptr [ %.pre, %_ZNK6vectorIPN13sat_allocator5chunkELb0EjE5emptyEv.exit._crit_edge ], [ %32, %_ZN6vectorIPN13sat_allocator5chunkELb0EjE4backEv.exit ] - %.not.i.not.i = icmp eq i64 %11, 0 + %.not.i.not.i = icmp eq i64 %10, 0 %53 = select i1 %.not.i.not.i, i64 0, i64 8 %54 = add nuw nsw i64 %53, %1 %55 = and i64 %54, 1016 @@ -835,8 +833,8 @@ _ZN6vectorIPN13sat_allocator5chunkELb0EjE4backEv.exit17: ; preds = %_ZNK6vectorI br label %_ZN6vectorIPN13sat_allocator5chunkELb0EjE4backEv.exit23 _ZN6vectorIPN13sat_allocator5chunkELb0EjE4backEv.exit23: ; preds = %68, %74 - %75 = phi i32 [ %.pre2.i20, %74 ], [ %70, %68 ] - %76 = phi ptr [ %.pre.i18, %74 ], [ %66, %68 ] + %75 = phi i32 [ %.pre2.i20, %73 ], [ %70, %67 ] + %76 = phi ptr [ %.pre.i18, %73 ], [ %66, %67 ] %77 = getelementptr inbounds i8, ptr %76, i64 -4 %78 = zext i32 %75 to i64 %79 = getelementptr inbounds nuw ptr, ptr %76, i64 %78 @@ -852,7 +850,7 @@ _ZN6vectorIPN13sat_allocator5chunkELb0EjE4backEv.exit23: ; preds = %68, %74 br label %84 84: ; preds = %_ZN6vectorIPvLb0EjE4backEv.exit, %81, %7 - %.0 = phi ptr [ %8, %7 ], [ %82, %81 ], [ %24, %_ZN6vectorIPvLb0EjE4backEv.exit ] + %.0 = phi ptr [ %8, %7 ], [ %82, %80 ], [ %24, %_ZN6vectorIPvLb0EjE4backEv.exit ] ret ptr %.0 } @@ -1002,10 +1000,10 @@ _ZN6id_gen7recycleEj.exit: ; preds = %2, %_ZN6vectorIjLb0 %23 = load i32, ptr %22, align 4, !tbaa !10 %24 = zext i32 %23 to i64 %25 = shl nuw nsw i64 %24, 2 - %26 = add nuw nsw i64 %25, 20 - %27 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %28 = load i64, ptr %27, align 8, !tbaa !42 - %29 = sub i64 %28, %26 + %26 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %27 = load i64, ptr %26, align 8, !tbaa !42 + %.neg7 = add i64 %27, -20 + %29 = sub i64 %.neg7, %26 store i64 %29, ptr %27, align 8, !tbaa !42 %30 = icmp ugt i32 %23, 122 br i1 %30, label %31, label %32 @@ -1016,37 +1014,35 @@ _ZN6id_gen7recycleEj.exit: ; preds = %2, %_ZN6vectorIjLb0 32: ; preds = %_ZN6id_gen7recycleEj.exit %33 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %34 = lshr i64 %26, 3 - %35 = lshr exact i64 %26, 2 - %.lobit = and i64 %35, 1 - %36 = add nuw nsw i64 %.lobit, %34 - %37 = getelementptr inbounds nuw [65 x %class.ptr_vector.1], ptr %33, i64 0, i64 %36 - %38 = load ptr, ptr %37, align 8, !tbaa !39 - %39 = icmp eq ptr %38, null - br i1 %39, label %46, label %40 - -40: ; preds = %32 - %41 = getelementptr inbounds i8, ptr %38, i64 -4 + %34 = add nuw nsw i64 %26, 27 + %35 = lshr i64 %33, 3 + %35 = getelementptr inbounds nuw [65 x %class.ptr_vector.1], ptr %32, i64 0, i64 %35 + %36 = load ptr, ptr %35, align 8, !tbaa !39 + %37 = icmp eq ptr %36, null + br i1 %37, label %44, label %39 + +38:; preds = %31 + %39 = getelementptr inbounds i8, ptr %36, i64 -4 + %40 = load i32, ptr %39, align 4, !tbaa !16 + %41 = getelementptr inbounds i8, ptr %36, i64 -8 %42 = load i32, ptr %41, align 4, !tbaa !16 - %43 = getelementptr inbounds i8, ptr %38, i64 -8 - %44 = load i32, ptr %43, align 4, !tbaa !16 - %45 = icmp eq i32 %42, %44 - br i1 %45, label %46, label %_ZN6vectorIPvLb0EjE9push_backERKS0_.exit.i - -46: ; preds = %40, %32 - tail call void @_ZN6vectorIPvLb0EjE13expand_vectorEv(ptr noundef nonnull align 8 dereferenceable(8) %37) - %.pre.i.i4 = load ptr, ptr %37, align 8, !tbaa !39 + %43 = icmp eq i32 %40, %42 + br i1 %43, label %44, label %_ZN6vectorIPvLb0EjE9push_backERKS0_.exit.i + +44:; preds = %38, %31 + tail call void @_ZN6vectorIPvLb0EjE13expand_vectorEv(ptr noundef nonnull align 8 dereferenceable(8) %35) + %.pre.i.i4 = load ptr, ptr %35, align 8, !tbaa !39 %.phi.trans.insert.i.i5 = getelementptr inbounds i8, ptr %.pre.i.i4, i64 -4 %.pre2.i.i6 = load i32, ptr %.phi.trans.insert.i.i5, align 4, !tbaa !16 br label %_ZN6vectorIPvLb0EjE9push_backERKS0_.exit.i -_ZN6vectorIPvLb0EjE9push_backERKS0_.exit.i: ; preds = %46, %40 - %47 = phi i32 [ %.pre2.i.i6, %46 ], [ %42, %40 ] - %48 = phi ptr [ %.pre.i.i4, %46 ], [ %38, %40 ] +_ZN6vectorIPvLb0EjE9push_backERKS0_.exit.i: ; preds = %44, %38 + %47 = phi i32 [ %.pre2.i.i6, %44 ], [ %40, %38 ] + %48 = phi ptr [ %.pre.i.i4, %44 ], [ %36, %38 ] %49 = zext i32 %47 to i64 %50 = getelementptr inbounds nuw ptr, ptr %48, i64 %49 store ptr %1, ptr %50, align 8, !tbaa !47 - %51 = load ptr, ptr %37, align 8, !tbaa !39 + %51 = load ptr, ptr %35, align 8, !tbaa !39 %52 = getelementptr inbounds i8, ptr %51, i64 -4 %53 = load i32, ptr %52, align 4, !tbaa !16 %54 = add i32 %53, 1 diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c5409e09ef4..61b7a917f8c 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/142869 export COMPTIME_MODE=0 # Please rebase manually