diff --git a/bench/abc/optimized/giaFx.c.ll b/bench/abc/optimized/giaFx.c.ll index 946cc764342..9750f220c71 100644 --- a/bench/abc/optimized/giaFx.c.ll +++ b/bench/abc/optimized/giaFx.c.ll @@ -438,224 +438,233 @@ Vec_WrdAlloc.exit: ; preds = %4, %15 br i1 %50, label %Vec_IntCheckUniqueSmall.exit, label %46 Vec_IntCheckUniqueSmall.exit: ; preds = %47 + %51 = icmp eq i32 %35, 1 + br i1 %51, label %Vec_IntUniqify.exit, label %52 + +52: ; preds = %Vec_IntCheckUniqueSmall.exit call void @qsort(ptr noundef nonnull %40, i64 noundef %42, i64 noundef 4, ptr noundef nonnull @Vec_IntSortCompare1) #17 - %51 = load i32, ptr %24, align 4 - %52 = icmp sgt i32 %51, 1 - br i1 %52, label %.lr.ph.i50, label %._crit_edge.i - -.lr.ph.i50: ; preds = %Vec_IntCheckUniqueSmall.exit, %63 - %53 = phi i32 [ %64, %63 ], [ %51, %Vec_IntCheckUniqueSmall.exit ] - %indvars.iv.i51 = phi i64 [ %indvars.iv.next.i53, %63 ], [ 1, %Vec_IntCheckUniqueSmall.exit ] - %.01824.i = phi i32 [ %.1.i, %63 ], [ 1, %Vec_IntCheckUniqueSmall.exit ] - %54 = load ptr, ptr %25, align 8 - %55 = getelementptr inbounds i32, ptr %54, i64 %indvars.iv.i51 - %56 = load i32, ptr %55, align 4 - %57 = getelementptr i8, ptr %55, i64 -4 + %53 = load i32, ptr %24, align 4 + %54 = icmp sgt i32 %53, 1 + br i1 %54, label %.lr.ph.i50, label %._crit_edge.i + +.lr.ph.i50: ; preds = %52, %65 + %55 = phi i32 [ %66, %65 ], [ %53, %52 ] + %indvars.iv.i51 = phi i64 [ %indvars.iv.next.i53, %65 ], [ 1, %52 ] + %.01824.i = phi i32 [ %.1.i, %65 ], [ 1, %52 ] + %56 = load ptr, ptr %25, align 8 + %57 = getelementptr inbounds i32, ptr %56, i64 %indvars.iv.i51 %58 = load i32, ptr %57, align 4 - %.not.i52 = icmp eq i32 %56, %58 - br i1 %.not.i52, label %63, label %59 - -59: ; preds = %.lr.ph.i50 - %60 = add nsw i32 %.01824.i, 1 - %61 = sext i32 %.01824.i to i64 - %62 = getelementptr inbounds i32, ptr %54, i64 %61 - store i32 %56, ptr %62, align 4 + %59 = getelementptr i8, ptr %57, i64 -4 + %60 = load i32, ptr %59, align 4 + %.not.i52 = icmp eq i32 %58, %60 + br i1 %.not.i52, label %65, label %61 + +61: ; preds = %.lr.ph.i50 + %62 = add nsw i32 %.01824.i, 1 + %63 = sext i32 %.01824.i to i64 + %64 = getelementptr inbounds i32, ptr %56, i64 %63 + store i32 %58, ptr %64, align 4 %.pre.i = load i32, ptr %24, align 4 - br label %63 + br label %65 -63: ; preds = %59, %.lr.ph.i50 - %64 = phi i32 [ %.pre.i, %59 ], [ %53, %.lr.ph.i50 ] - %.1.i = phi i32 [ %60, %59 ], [ %.01824.i, %.lr.ph.i50 ] +65: ; preds = %61, %.lr.ph.i50 + %66 = phi i32 [ %.pre.i, %61 ], [ %55, %.lr.ph.i50 ] + %.1.i = phi i32 [ %62, %61 ], [ %.01824.i, %.lr.ph.i50 ] %indvars.iv.next.i53 = add nuw nsw i64 %indvars.iv.i51, 1 - %65 = sext i32 %64 to i64 - %66 = icmp slt i64 %indvars.iv.next.i53, %65 - br i1 %66, label %.lr.ph.i50, label %._crit_edge.i, !llvm.loop !11 + %67 = sext i32 %66 to i64 + %68 = icmp slt i64 %indvars.iv.next.i53, %67 + br i1 %68, label %.lr.ph.i50, label %._crit_edge.i, !llvm.loop !11 -._crit_edge.i: ; preds = %63, %Vec_IntCheckUniqueSmall.exit - %.018.lcssa.i = phi i32 [ 1, %Vec_IntCheckUniqueSmall.exit ], [ %.1.i, %63 ] +._crit_edge.i: ; preds = %65, %52 + %.018.lcssa.i = phi i32 [ 1, %52 ], [ %.1.i, %65 ] store i32 %.018.lcssa.i, ptr %24, align 4 - %67 = load ptr, ptr %23, align 8 - %68 = getelementptr i8, ptr %67, i64 8 - %.val38 = load ptr, ptr %68, align 8 - %69 = getelementptr inbounds i32, ptr %.val38, i64 %indvars.iv79 - %70 = load i32, ptr %69, align 4 - %71 = sext i32 %70 to i64 - %72 = getelementptr inbounds i32, ptr %.val38, i64 %71 - store i32 %.018.lcssa.i, ptr %72, align 4 - %73 = load i32, ptr %24, align 4 - %74 = icmp sgt i32 %73, 0 - br i1 %74, label %.lr.ph, label %Vec_IntReverseOrder.exit - -.lr.ph: ; preds = %._crit_edge.i, %.lr.ph - %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %._crit_edge.i ] - %75 = load ptr, ptr %23, align 8 - %76 = getelementptr i8, ptr %75, i64 8 - %.val = load ptr, ptr %76, align 8 - %77 = getelementptr inbounds i32, ptr %.val, i64 %indvars.iv79 - %78 = load i32, ptr %77, align 4 + %.pre = load ptr, ptr %23, align 8 + br label %Vec_IntUniqify.exit + +Vec_IntUniqify.exit: ; preds = %Vec_IntCheckUniqueSmall.exit, %._crit_edge.i + %69 = phi i32 [ 1, %Vec_IntCheckUniqueSmall.exit ], [ %.018.lcssa.i, %._crit_edge.i ] + %70 = phi ptr [ %.val40, %Vec_IntCheckUniqueSmall.exit ], [ %.pre, %._crit_edge.i ] + %71 = getelementptr i8, ptr %70, i64 8 + %.val38 = load ptr, ptr %71, align 8 + %72 = getelementptr inbounds i32, ptr %.val38, i64 %indvars.iv79 + %73 = load i32, ptr %72, align 4 + %74 = sext i32 %73 to i64 + %75 = getelementptr inbounds i32, ptr %.val38, i64 %74 + store i32 %69, ptr %75, align 4 + %76 = load i32, ptr %24, align 4 + %77 = icmp sgt i32 %76, 0 + br i1 %77, label %.lr.ph, label %Vec_IntReverseOrder.exit + +.lr.ph: ; preds = %Vec_IntUniqify.exit, %.lr.ph + %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %Vec_IntUniqify.exit ] + %78 = load ptr, ptr %23, align 8 + %79 = getelementptr i8, ptr %78, i64 8 + %.val = load ptr, ptr %79, align 8 + %80 = getelementptr inbounds i32, ptr %.val, i64 %indvars.iv79 + %81 = load i32, ptr %80, align 4 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %79 = trunc nuw nsw i64 %indvars.iv.next to i32 - %80 = add i32 %78, %79 - %81 = load ptr, ptr %25, align 8 - %82 = getelementptr inbounds i32, ptr %81, i64 %indvars.iv - %83 = load i32, ptr %82, align 4 - %84 = sext i32 %80 to i64 - %85 = getelementptr inbounds i32, ptr %.val, i64 %84 - store i32 %83, ptr %85, align 4 - %86 = load i32, ptr %24, align 4 - %87 = sext i32 %86 to i64 - %88 = icmp slt i64 %indvars.iv.next, %87 - br i1 %88, label %.lr.ph, label %.loopexit68, !llvm.loop !12 + %82 = trunc nuw nsw i64 %indvars.iv.next to i32 + %83 = add i32 %81, %82 + %84 = load ptr, ptr %25, align 8 + %85 = getelementptr inbounds i32, ptr %84, i64 %indvars.iv + %86 = load i32, ptr %85, align 4 + %87 = sext i32 %83 to i64 + %88 = getelementptr inbounds i32, ptr %.val, i64 %87 + store i32 %86, ptr %88, align 4 + %89 = load i32, ptr %24, align 4 + %90 = sext i32 %89 to i64 + %91 = icmp slt i64 %indvars.iv.next, %90 + br i1 %91, label %.lr.ph, label %.loopexit68, !llvm.loop !12 .loopexit68: ; preds = %.loopexit.i, %.lr.ph - %.val48 = phi i32 [ %86, %.lr.ph ], [ %35, %.loopexit.i ] + %.val48 = phi i32 [ %89, %.lr.ph ], [ %35, %.loopexit.i ] %.val47 = load ptr, ptr %25, align 8 - %89 = icmp sgt i32 %.val48, 1 - br i1 %89, label %.lr.ph27.preheader.i, label %Vec_IntReverseOrder.exit + %92 = icmp sgt i32 %.val48, 1 + br i1 %92, label %.lr.ph27.preheader.i, label %Vec_IntReverseOrder.exit .lr.ph27.preheader.i: ; preds = %.loopexit68 - %90 = add nsw i32 %.val48, -1 - %wide.trip.count35.i = zext nneg i32 %90 to i64 + %93 = add nsw i32 %.val48, -1 + %wide.trip.count35.i = zext nneg i32 %93 to i64 %wide.trip.count.i = zext nneg i32 %.val48 to i64 br label %.lr.ph.preheader.i .lr.ph.preheader.i: ; preds = %._crit_edge.i57, %.lr.ph27.preheader.i %indvars.iv32.i = phi i64 [ 0, %.lr.ph27.preheader.i ], [ %indvars.iv.next33.i, %._crit_edge.i57 ] %indvars.iv.i54 = phi i64 [ 1, %.lr.ph27.preheader.i ], [ %indvars.iv.next.i58, %._crit_edge.i57 ] - %91 = trunc nuw nsw i64 %indvars.iv32.i to i32 + %94 = trunc nuw nsw i64 %indvars.iv32.i to i32 br label %.lr.ph.i55 .lr.ph.i55: ; preds = %.lr.ph.i55, %.lr.ph.preheader.i %indvars.iv29.i = phi i64 [ %indvars.iv.i54, %.lr.ph.preheader.i ], [ %indvars.iv.next30.i, %.lr.ph.i55 ] - %.024.i = phi i32 [ %91, %.lr.ph.preheader.i ], [ %spec.select.i, %.lr.ph.i55 ] - %92 = getelementptr inbounds i32, ptr %.val47, i64 %indvars.iv29.i - %93 = load i32, ptr %92, align 4 - %94 = sext i32 %.024.i to i64 - %95 = getelementptr inbounds i32, ptr %.val47, i64 %94 + %.024.i = phi i32 [ %94, %.lr.ph.preheader.i ], [ %spec.select.i, %.lr.ph.i55 ] + %95 = getelementptr inbounds i32, ptr %.val47, i64 %indvars.iv29.i %96 = load i32, ptr %95, align 4 - %97 = icmp slt i32 %93, %96 - %98 = trunc nuw nsw i64 %indvars.iv29.i to i32 - %spec.select.i = select i1 %97, i32 %98, i32 %.024.i + %97 = sext i32 %.024.i to i64 + %98 = getelementptr inbounds i32, ptr %.val47, i64 %97 + %99 = load i32, ptr %98, align 4 + %100 = icmp slt i32 %96, %99 + %101 = trunc nuw nsw i64 %indvars.iv29.i to i32 + %spec.select.i = select i1 %100, i32 %101, i32 %.024.i %indvars.iv.next30.i = add nuw nsw i64 %indvars.iv29.i, 1 %exitcond.not.i56 = icmp eq i64 %indvars.iv.next30.i, %wide.trip.count.i br i1 %exitcond.not.i56, label %._crit_edge.i57, label %.lr.ph.i55, !llvm.loop !13 ._crit_edge.i57: ; preds = %.lr.ph.i55 %indvars.iv.next33.i = add nuw nsw i64 %indvars.iv32.i, 1 - %99 = getelementptr inbounds i32, ptr %.val47, i64 %indvars.iv32.i - %100 = load i32, ptr %99, align 4 - %101 = sext i32 %spec.select.i to i64 - %102 = getelementptr inbounds i32, ptr %.val47, i64 %101 + %102 = getelementptr inbounds i32, ptr %.val47, i64 %indvars.iv32.i %103 = load i32, ptr %102, align 4 - store i32 %103, ptr %99, align 4 - store i32 %100, ptr %102, align 4 + %104 = sext i32 %spec.select.i to i64 + %105 = getelementptr inbounds i32, ptr %.val47, i64 %104 + %106 = load i32, ptr %105, align 4 + store i32 %106, ptr %102, align 4 + store i32 %103, ptr %105, align 4 %indvars.iv.next.i58 = add nuw nsw i64 %indvars.iv.i54, 1 %exitcond36.not.i = icmp eq i64 %indvars.iv.next33.i, %wide.trip.count35.i br i1 %exitcond36.not.i, label %Vec_IntSelectSort.exit, label %.lr.ph.preheader.i, !llvm.loop !14 Vec_IntSelectSort.exit: ; preds = %._crit_edge.i57 - %.pre = load i32, ptr %24, align 4 - %104 = icmp sgt i32 %.pre, 1 - %or.cond = select i1 %.not37, i1 %104, i1 false + %.pre82 = load i32, ptr %24, align 4 + %107 = icmp sgt i32 %.pre82, 1 + %or.cond = select i1 %.not37, i1 %107, i1 false br i1 %or.cond, label %.lr.ph.i60, label %Vec_IntReverseOrder.exit .lr.ph.i60: ; preds = %Vec_IntSelectSort.exit, %.lr.ph.i60 %indvars.iv.i61 = phi i64 [ %indvars.iv.next.i62, %.lr.ph.i60 ], [ 0, %Vec_IntSelectSort.exit ] - %105 = phi i32 [ %120, %.lr.ph.i60 ], [ %.pre, %Vec_IntSelectSort.exit ] - %106 = load ptr, ptr %25, align 8 - %107 = getelementptr inbounds i32, ptr %106, i64 %indvars.iv.i61 - %108 = load i32, ptr %107, align 4 - %109 = trunc nuw nsw i64 %indvars.iv.i61 to i32 - %110 = xor i32 %109, -1 - %111 = add i32 %105, %110 - %112 = sext i32 %111 to i64 - %113 = getelementptr inbounds i32, ptr %106, i64 %112 - %114 = load i32, ptr %113, align 4 - store i32 %114, ptr %107, align 4 - %115 = load ptr, ptr %25, align 8 - %116 = load i32, ptr %24, align 4 - %117 = add i32 %116, %110 - %118 = sext i32 %117 to i64 - %119 = getelementptr inbounds i32, ptr %115, i64 %118 - store i32 %108, ptr %119, align 4 + %108 = phi i32 [ %123, %.lr.ph.i60 ], [ %.pre82, %Vec_IntSelectSort.exit ] + %109 = load ptr, ptr %25, align 8 + %110 = getelementptr inbounds i32, ptr %109, i64 %indvars.iv.i61 + %111 = load i32, ptr %110, align 4 + %112 = trunc nuw nsw i64 %indvars.iv.i61 to i32 + %113 = xor i32 %112, -1 + %114 = add i32 %108, %113 + %115 = sext i32 %114 to i64 + %116 = getelementptr inbounds i32, ptr %109, i64 %115 + %117 = load i32, ptr %116, align 4 + store i32 %117, ptr %110, align 4 + %118 = load ptr, ptr %25, align 8 + %119 = load i32, ptr %24, align 4 + %120 = add i32 %119, %113 + %121 = sext i32 %120 to i64 + %122 = getelementptr inbounds i32, ptr %118, i64 %121 + store i32 %111, ptr %122, align 4 %indvars.iv.next.i62 = add nuw nsw i64 %indvars.iv.i61, 1 - %120 = load i32, ptr %24, align 4 - %121 = sdiv i32 %120, 2 - %122 = sext i32 %121 to i64 - %123 = icmp slt i64 %indvars.iv.next.i62, %122 - br i1 %123, label %.lr.ph.i60, label %Vec_IntReverseOrder.exit, !llvm.loop !15 + %123 = load i32, ptr %24, align 4 + %124 = sdiv i32 %123, 2 + %125 = sext i32 %124 to i64 + %126 = icmp slt i64 %indvars.iv.next.i62, %125 + br i1 %126, label %.lr.ph.i60, label %Vec_IntReverseOrder.exit, !llvm.loop !15 -Vec_IntReverseOrder.exit: ; preds = %.lr.ph.i60, %32, %._crit_edge.i, %.loopexit68, %Vec_IntSelectSort.exit +Vec_IntReverseOrder.exit: ; preds = %.lr.ph.i60, %32, %Vec_IntUniqify.exit, %.loopexit68, %Vec_IntSelectSort.exit %.val49 = load ptr, ptr %26, align 8 - %124 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val49, i64 %indvars.iv79 - %125 = call ptr @Gia_ObjComputeTruthTableCut(ptr noundef %0, ptr noundef nonnull %124, ptr noundef nonnull %5) #17 + %127 = getelementptr inbounds %struct.Gia_Obj_t_, ptr %.val49, i64 %indvars.iv79 + %128 = call ptr @Gia_ObjComputeTruthTableCut(ptr noundef %0, ptr noundef nonnull %127, ptr noundef nonnull %5) #17 br i1 %27, label %.lr.ph71, label %.loopexit .lr.ph71: ; preds = %Vec_IntReverseOrder.exit, %Vec_WrdPush.exit %indvars.iv76 = phi i64 [ %indvars.iv.next77, %Vec_WrdPush.exit ], [ 0, %Vec_IntReverseOrder.exit ] - %126 = getelementptr inbounds i64, ptr %125, i64 %indvars.iv76 - %127 = load i64, ptr %126, align 8 - %128 = load i32, ptr %14, align 4 - %129 = load i32, ptr %12, align 8 - %130 = icmp eq i32 %128, %129 - br i1 %130, label %131, label %.Vec_WrdGrow.exit10_crit_edge.i + %129 = getelementptr inbounds i64, ptr %128, i64 %indvars.iv76 + %130 = load i64, ptr %129, align 8 + %131 = load i32, ptr %14, align 4 + %132 = load i32, ptr %12, align 8 + %133 = icmp eq i32 %131, %132 + br i1 %133, label %134, label %.Vec_WrdGrow.exit10_crit_edge.i .Vec_WrdGrow.exit10_crit_edge.i: ; preds = %.lr.ph71 %.pre.i63 = load ptr, ptr %20, align 8 br label %Vec_WrdPush.exit -131: ; preds = %.lr.ph71 - %132 = icmp slt i32 %128, 16 - br i1 %132, label %133, label %140 +134: ; preds = %.lr.ph71 + %135 = icmp slt i32 %131, 16 + br i1 %135, label %136, label %143 -133: ; preds = %131 - %134 = load ptr, ptr %20, align 8 - %.not9.i.i = icmp eq ptr %134, null - br i1 %.not9.i.i, label %137, label %135 +136: ; preds = %134 + %137 = load ptr, ptr %20, align 8 + %.not9.i.i = icmp eq ptr %137, null + br i1 %.not9.i.i, label %140, label %138 -135: ; preds = %133 - %136 = call dereferenceable_or_null(128) ptr @realloc(ptr noundef nonnull %134, i64 noundef 128) #19 +138: ; preds = %136 + %139 = call dereferenceable_or_null(128) ptr @realloc(ptr noundef nonnull %137, i64 noundef 128) #19 br label %Vec_WrdGrow.exit.i -137: ; preds = %133 - %138 = call noalias dereferenceable_or_null(128) ptr @malloc(i64 noundef 128) #18 +140: ; preds = %136 + %141 = call noalias dereferenceable_or_null(128) ptr @malloc(i64 noundef 128) #18 br label %Vec_WrdGrow.exit.i -Vec_WrdGrow.exit.i: ; preds = %137, %135 - %139 = phi ptr [ %136, %135 ], [ %138, %137 ] - store ptr %139, ptr %20, align 8 +Vec_WrdGrow.exit.i: ; preds = %140, %138 + %142 = phi ptr [ %139, %138 ], [ %141, %140 ] + store ptr %142, ptr %20, align 8 store i32 16, ptr %12, align 8 br label %Vec_WrdPush.exit -140: ; preds = %131 - %141 = shl nuw nsw i32 %128, 1 - %142 = load ptr, ptr %20, align 8 - %.not9.i9.i = icmp eq ptr %142, null - %143 = zext nneg i32 %141 to i64 - %144 = shl nuw nsw i64 %143, 3 - br i1 %.not9.i9.i, label %147, label %145 - -145: ; preds = %140 - %146 = call ptr @realloc(ptr noundef nonnull %142, i64 noundef %144) #19 - br label %149 - -147: ; preds = %140 - %148 = call noalias ptr @malloc(i64 noundef %144) #18 - br label %149 - -149: ; preds = %147, %145 - %150 = phi ptr [ %146, %145 ], [ %148, %147 ] - store ptr %150, ptr %20, align 8 - store i32 %141, ptr %12, align 8 +143: ; preds = %134 + %144 = shl nuw nsw i32 %131, 1 + %145 = load ptr, ptr %20, align 8 + %.not9.i9.i = icmp eq ptr %145, null + %146 = zext nneg i32 %144 to i64 + %147 = shl nuw nsw i64 %146, 3 + br i1 %.not9.i9.i, label %150, label %148 + +148: ; preds = %143 + %149 = call ptr @realloc(ptr noundef nonnull %145, i64 noundef %147) #19 + br label %152 + +150: ; preds = %143 + %151 = call noalias ptr @malloc(i64 noundef %147) #18 + br label %152 + +152: ; preds = %150, %148 + %153 = phi ptr [ %149, %148 ], [ %151, %150 ] + store ptr %153, ptr %20, align 8 + store i32 %144, ptr %12, align 8 br label %Vec_WrdPush.exit -Vec_WrdPush.exit: ; preds = %.Vec_WrdGrow.exit10_crit_edge.i, %Vec_WrdGrow.exit.i, %149 - %151 = phi ptr [ %.pre.i63, %.Vec_WrdGrow.exit10_crit_edge.i ], [ %150, %149 ], [ %139, %Vec_WrdGrow.exit.i ] - %152 = add nsw i32 %128, 1 - store i32 %152, ptr %14, align 4 - %153 = sext i32 %128 to i64 - %154 = getelementptr inbounds i64, ptr %151, i64 %153 - store i64 %127, ptr %154, align 8 +Vec_WrdPush.exit: ; preds = %.Vec_WrdGrow.exit10_crit_edge.i, %Vec_WrdGrow.exit.i, %152 + %154 = phi ptr [ %.pre.i63, %.Vec_WrdGrow.exit10_crit_edge.i ], [ %153, %152 ], [ %142, %Vec_WrdGrow.exit.i ] + %155 = add nsw i32 %131, 1 + store i32 %155, ptr %14, align 4 + %156 = sext i32 %131 to i64 + %157 = getelementptr inbounds i64, ptr %154, i64 %156 + store i64 %130, ptr %157, align 8 %indvars.iv.next77 = add nuw nsw i64 %indvars.iv76, 1 %exitcond.not = icmp eq i64 %indvars.iv.next77, %wide.trip.count br i1 %exitcond.not, label %.loopexit, label %.lr.ph71, !llvm.loop !16 @@ -663,9 +672,9 @@ Vec_WrdPush.exit: ; preds = %.Vec_WrdGrow.exit10 .loopexit: ; preds = %Vec_WrdPush.exit, %Vec_IntReverseOrder.exit, %28 %indvars.iv.next80 = add nuw nsw i64 %indvars.iv79, 1 %.val39 = load i32, ptr %21, align 8 - %155 = sext i32 %.val39 to i64 - %156 = icmp slt i64 %indvars.iv.next80, %155 - br i1 %156, label %28, label %._crit_edge, !llvm.loop !17 + %158 = sext i32 %.val39 to i64 + %159 = icmp slt i64 %indvars.iv.next80, %158 + br i1 %159, label %28, label %._crit_edge, !llvm.loop !17 ._crit_edge: ; preds = %.loopexit, %Vec_WrdAlloc.exit call void @Gia_ObjComputeTruthTableStop(ptr noundef nonnull %0) #17 diff --git a/bench/assimp/optimized/IFCReaderGen1_2x3.cpp.ll b/bench/assimp/optimized/IFCReaderGen1_2x3.cpp.ll index 0420b5352bb..3c3e24651c8 100644 --- a/bench/assimp/optimized/IFCReaderGen1_2x3.cpp.ll +++ b/bench/assimp/optimized/IFCReaderGen1_2x3.cpp.ll @@ -58784,7 +58784,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit55: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool43.not, label %if.end50, label %if.then44 ehcleanup35: ; preds = %cleanup.done32, %lpad12 - %.merged = phi { ptr, i32 } [ %.pn.pn206, %cleanup.done32 ], [ %12, %lpad12 ] + %.merged40 = phi { ptr, i32 } [ %.pn.pn206, %cleanup.done32 ], [ %12, %lpad12 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -59191,7 +59191,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit158: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool154.not, label %if.end161, label %if.then155 ehcleanup145: ; preds = %cleanup.done138, %lpad110 - %.merged40 = phi { ptr, i32 } [ %.pn31.pn214, %cleanup.done138 ], [ %71, %lpad110 ] + %.merged = phi { ptr, i32 } [ %.pn31.pn214, %cleanup.done138 ], [ %71, %lpad110 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg89) #22 br label %eh.resume @@ -59370,7 +59370,7 @@ ehcleanup204: ; preds = %cleanup.done197, %l br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup204, %ehcleanup145, %ehcleanup86, %ehcleanup35 - %lpad.val208.merged = phi { ptr, i32 } [ %.pn37203, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged39, %ehcleanup204 ], [ %.merged40, %ehcleanup145 ], [ %.merged41, %ehcleanup86 ], [ %.merged, %ehcleanup35 ] + %lpad.val208.merged = phi { ptr, i32 } [ %.pn37203, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged39, %ehcleanup204 ], [ %.merged, %ehcleanup145 ], [ %.merged41, %ehcleanup86 ], [ %.merged40, %ehcleanup35 ] resume { ptr, i32 } %lpad.val208.merged terminate.lpad: ; preds = %cleanup.done197, %cleanup.done138, %cleanup.done79, %cleanup.done32 @@ -60153,7 +60153,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit106: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool102.not, label %if.end109, label %if.then103 ehcleanup93: ; preds = %cleanup.done86, %lpad58 - %.merged40 = phi { ptr, i32 } [ %.pn28.pn210, %cleanup.done86 ], [ %42, %lpad58 ] + %.merged39 = phi { ptr, i32 } [ %.pn28.pn210, %cleanup.done86 ], [ %42, %lpad58 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg37) #22 br label %eh.resume @@ -60527,12 +60527,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit200: ; preds = %clea ret i64 4 ehcleanup204: ; preds = %cleanup.done197, %lpad169 - %.merged39 = phi { ptr, i32 } [ %.pn34.pn218, %cleanup.done197 ], [ %101, %lpad169 ] + %.merged40 = phi { ptr, i32 } [ %.pn34.pn218, %cleanup.done197 ], [ %101, %lpad169 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg155) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup204, %ehcleanup152, %ehcleanup93, %ehcleanup35 - %lpad.val208.merged = phi { ptr, i32 } [ %.pn37203, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged39, %ehcleanup204 ], [ %.merged, %ehcleanup152 ], [ %.merged40, %ehcleanup93 ], [ %.merged41, %ehcleanup35 ] + %lpad.val208.merged = phi { ptr, i32 } [ %.pn37203, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged40, %ehcleanup204 ], [ %.merged, %ehcleanup152 ], [ %.merged39, %ehcleanup93 ], [ %.merged41, %ehcleanup35 ] resume { ptr, i32 } %lpad.val208.merged terminate.lpad: ; preds = %cleanup.done197, %cleanup.done145, %cleanup.done86, %cleanup.done32 @@ -61324,7 +61324,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit44: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool50.not, label %if.end57, label %if.then51 ehcleanup42: ; preds = %cleanup.done39, %lpad19 - %.merged30 = phi { ptr, i32 } [ %.pn.pn143, %cleanup.done39 ], [ %13, %lpad19 ] + %.merged29 = phi { ptr, i32 } [ %.pn.pn143, %cleanup.done39 ], [ %13, %lpad19 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -61698,12 +61698,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit137: ; preds = %clea ret i64 3 ehcleanup152: ; preds = %cleanup.done145, %lpad117 - %.merged29 = phi { ptr, i32 } [ %.pn24.pn151, %cleanup.done145 ], [ %72, %lpad117 ] + %.merged30 = phi { ptr, i32 } [ %.pn24.pn151, %cleanup.done145 ], [ %72, %lpad117 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg103) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup152, %ehcleanup100, %ehcleanup42 - %lpad.val156.merged = phi { ptr, i32 } [ %.pn27140, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged29, %ehcleanup152 ], [ %.merged, %ehcleanup100 ], [ %.merged30, %ehcleanup42 ] + %lpad.val156.merged = phi { ptr, i32 } [ %.pn27140, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged30, %ehcleanup152 ], [ %.merged, %ehcleanup100 ], [ %.merged29, %ehcleanup42 ] resume { ptr, i32 } %lpad.val156.merged terminate.lpad: ; preds = %cleanup.done145, %cleanup.done93, %cleanup.done39 @@ -62014,7 +62014,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit37: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool51.not, label %if.end59, label %if.then52 ehcleanup43: ; preds = %cleanup.done40, %lpad20 - %.merged = phi { ptr, i32 } [ %.pn.pn84, %cleanup.done40 ], [ %13, %lpad20 ] + %.merged22 = phi { ptr, i32 } [ %.pn.pn84, %cleanup.done40 ], [ %13, %lpad20 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -62188,12 +62188,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit78: ; preds = %clean ret i64 7 ehcleanup102: ; preds = %cleanup.done95, %lpad67 - %.merged22 = phi { ptr, i32 } [ %.pn17.pn88, %cleanup.done95 ], [ %43, %lpad67 ] + %.merged = phi { ptr, i32 } [ %.pn17.pn88, %cleanup.done95 ], [ %43, %lpad67 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg45) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup102, %ehcleanup43 - %lpad.val106.merged = phi { ptr, i32 } [ %.pn2081, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged22, %ehcleanup102 ], [ %.merged, %ehcleanup43 ] + %lpad.val106.merged = phi { ptr, i32 } [ %.pn2081, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup102 ], [ %.merged22, %ehcleanup43 ] resume { ptr, i32 } %lpad.val106.merged terminate.lpad: ; preds = %cleanup.done95, %cleanup.done40 @@ -62788,7 +62788,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit36: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool44.not, label %if.end52, label %if.then45 ehcleanup36: ; preds = %cleanup.done33, %lpad13 - %.merged = phi { ptr, i32 } [ %.pn.pn93, %cleanup.done33 ], [ %12, %lpad13 ] + %.merged22 = phi { ptr, i32 } [ %.pn.pn93, %cleanup.done33 ], [ %12, %lpad13 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -62982,7 +62982,7 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit87: ; preds = %clean ret i64 2 eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup36 - %lpad.val92.merged = phi { ptr, i32 } [ %.pn2090, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup36 ] + %lpad.val92.merged = phi { ptr, i32 } [ %.pn2090, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged22, %ehcleanup36 ] resume { ptr, i32 } %lpad.val92.merged terminate.lpad: ; preds = %cleanup.done33 @@ -63308,7 +63308,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit58: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool51.not, label %if.end59, label %if.then52 ehcleanup43: ; preds = %cleanup.done40, %lpad20 - %.merged42 = phi { ptr, i32 } [ %.pn.pn210, %cleanup.done40 ], [ %13, %lpad20 ] + %.merged = phi { ptr, i32 } [ %.pn.pn210, %cleanup.done40 ], [ %13, %lpad20 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -63515,7 +63515,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit112: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool111.not, label %if.end119, label %if.then112 ehcleanup102: ; preds = %cleanup.done95, %lpad67 - %.merged = phi { ptr, i32 } [ %.pn31.pn214, %cleanup.done95 ], [ %43, %lpad67 ] + %.merged42 = phi { ptr, i32 } [ %.pn31.pn214, %cleanup.done95 ], [ %43, %lpad67 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg45) #22 br label %eh.resume @@ -63894,7 +63894,7 @@ ehcleanup215: ; preds = %cleanup.done208, %l br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup215, %ehcleanup155, %ehcleanup102, %ehcleanup43 - %lpad.val219.merged = phi { ptr, i32 } [ %.pn40207, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged44, %ehcleanup215 ], [ %.merged43, %ehcleanup155 ], [ %.merged, %ehcleanup102 ], [ %.merged42, %ehcleanup43 ] + %lpad.val219.merged = phi { ptr, i32 } [ %.pn40207, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged44, %ehcleanup215 ], [ %.merged43, %ehcleanup155 ], [ %.merged42, %ehcleanup102 ], [ %.merged, %ehcleanup43 ] resume { ptr, i32 } %lpad.val219.merged terminate.lpad: ; preds = %cleanup.done208, %cleanup.done148, %cleanup.done95, %cleanup.done40 @@ -66635,7 +66635,7 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit68: ; preds = %invok ret i64 6 ehcleanup29: ; preds = %cleanup.done26, %lpad6 - %.merged = phi { ptr, i32 } [ %.pn.pn76, %cleanup.done26 ], [ %26, %lpad6 ] + %.merged20 = phi { ptr, i32 } [ %.pn.pn76, %cleanup.done26 ], [ %26, %lpad6 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -66709,12 +66709,12 @@ cleanup.done61: ; preds = %cleanup.action60, % to label %ehcleanup68 unwind label %terminate.lpad ehcleanup68: ; preds = %cleanup.done61, %lpad33 - %.merged20 = phi { ptr, i32 } [ %.pn15.pn80, %cleanup.done61 ], [ %46, %lpad33 ] + %.merged = phi { ptr, i32 } [ %.pn15.pn80, %cleanup.done61 ], [ %46, %lpad33 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg31) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup68, %ehcleanup29 - %lpad.val72.merged = phi { ptr, i32 } [ %.pn1873, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged20, %ehcleanup68 ], [ %.merged, %ehcleanup29 ] + %lpad.val72.merged = phi { ptr, i32 } [ %.pn1873, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup68 ], [ %.merged20, %ehcleanup29 ] resume { ptr, i32 } %lpad.val72.merged terminate.lpad: ; preds = %cleanup.done61, %cleanup.done26 @@ -67112,7 +67112,7 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit68: ; preds = %invok ret i64 6 ehcleanup29: ; preds = %cleanup.done26, %lpad6 - %.merged = phi { ptr, i32 } [ %.pn.pn76, %cleanup.done26 ], [ %26, %lpad6 ] + %.merged20 = phi { ptr, i32 } [ %.pn.pn76, %cleanup.done26 ], [ %26, %lpad6 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -67186,12 +67186,12 @@ cleanup.done61: ; preds = %cleanup.action60, % to label %ehcleanup68 unwind label %terminate.lpad ehcleanup68: ; preds = %cleanup.done61, %lpad33 - %.merged20 = phi { ptr, i32 } [ %.pn15.pn80, %cleanup.done61 ], [ %46, %lpad33 ] + %.merged = phi { ptr, i32 } [ %.pn15.pn80, %cleanup.done61 ], [ %46, %lpad33 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg31) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup68, %ehcleanup29 - %lpad.val72.merged = phi { ptr, i32 } [ %.pn1873, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged20, %ehcleanup68 ], [ %.merged, %ehcleanup29 ] + %lpad.val72.merged = phi { ptr, i32 } [ %.pn1873, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup68 ], [ %.merged20, %ehcleanup29 ] resume { ptr, i32 } %lpad.val72.merged terminate.lpad: ; preds = %cleanup.done61, %cleanup.done26 @@ -69608,7 +69608,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit35: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool40.not, label %if.end42, label %cleanup75 ehcleanup32: ; preds = %cleanup.done29, %lpad9 - %.merged20 = phi { ptr, i32 } [ %.pn.pn78, %cleanup.done29 ], [ %11, %lpad9 ] + %.merged = phi { ptr, i32 } [ %.pn.pn78, %cleanup.done29 ], [ %11, %lpad9 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -69770,12 +69770,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit72: ; preds = %clean ret i64 3 ehcleanup78: ; preds = %cleanup.done71, %lpad43 - %.merged = phi { ptr, i32 } [ %.pn15.pn82, %cleanup.done71 ], [ %39, %lpad43 ] + %.merged20 = phi { ptr, i32 } [ %.pn15.pn82, %cleanup.done71 ], [ %39, %lpad43 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg34) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup78, %ehcleanup32 - %lpad.val82.merged = phi { ptr, i32 } [ %.pn1875, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup78 ], [ %.merged20, %ehcleanup32 ] + %lpad.val82.merged = phi { ptr, i32 } [ %.pn1875, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged20, %ehcleanup78 ], [ %.merged, %ehcleanup32 ] resume { ptr, i32 } %lpad.val82.merged terminate.lpad: ; preds = %cleanup.done71, %cleanup.done29 @@ -70453,7 +70453,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit90: ; preds = %_ZNSt10shared_ptrIK to label %invoke.cont74 unwind label %lpad73 ehcleanup29: ; preds = %cleanup.done26, %lpad6 - %.merged30 = phi { ptr, i32 } [ %.pn.pn133, %cleanup.done26 ], [ %26, %lpad6 ] + %.merged = phi { ptr, i32 } [ %.pn.pn133, %cleanup.done26 ], [ %26, %lpad6 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -70604,7 +70604,7 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit125: ; preds = %invo ret i64 3 ehcleanup68: ; preds = %cleanup.done61, %lpad33 - %.merged29 = phi { ptr, i32 } [ %.pn21.pn137, %cleanup.done61 ], [ %52, %lpad33 ] + %.merged30 = phi { ptr, i32 } [ %.pn21.pn137, %cleanup.done61 ], [ %52, %lpad33 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg31) #22 br label %eh.resume @@ -70678,12 +70678,12 @@ cleanup.done101: ; preds = %cleanup.action100, to label %ehcleanup108 unwind label %terminate.lpad ehcleanup108: ; preds = %cleanup.done101, %lpad73 - %.merged = phi { ptr, i32 } [ %.pn24.pn141, %cleanup.done101 ], [ %72, %lpad73 ] + %.merged29 = phi { ptr, i32 } [ %.pn24.pn141, %cleanup.done101 ], [ %72, %lpad73 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg71) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup108, %ehcleanup68, %ehcleanup29 - %lpad.val112.merged = phi { ptr, i32 } [ %.pn27130, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup108 ], [ %.merged29, %ehcleanup68 ], [ %.merged30, %ehcleanup29 ] + %lpad.val112.merged = phi { ptr, i32 } [ %.pn27130, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged29, %ehcleanup108 ], [ %.merged30, %ehcleanup68 ], [ %.merged, %ehcleanup29 ] resume { ptr, i32 } %lpad.val112.merged terminate.lpad: ; preds = %cleanup.done101, %cleanup.done61, %cleanup.done26 @@ -71704,12 +71704,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit78: ; preds = %_ZNK6 ret i64 2 ehcleanup32: ; preds = %cleanup.done29, %lpad9 - %.merged20 = phi { ptr, i32 } [ %.pn.pn86, %cleanup.done29 ], [ %11, %lpad9 ] + %.merged = phi { ptr, i32 } [ %.pn.pn86, %cleanup.done29 ], [ %11, %lpad9 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup32 - %lpad.val75.merged = phi { ptr, i32 } [ %.pn1883, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged20, %ehcleanup32 ] + %lpad.val75.merged = phi { ptr, i32 } [ %.pn1883, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup32 ] resume { ptr, i32 } %lpad.val75.merged terminate.lpad: ; preds = %cleanup.done29 @@ -72546,7 +72546,7 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit68: ; preds = %invok ret i64 4 ehcleanup29: ; preds = %cleanup.done26, %lpad6 - %.merged = phi { ptr, i32 } [ %.pn.pn76, %cleanup.done26 ], [ %26, %lpad6 ] + %.merged20 = phi { ptr, i32 } [ %.pn.pn76, %cleanup.done26 ], [ %26, %lpad6 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -72620,12 +72620,12 @@ cleanup.done61: ; preds = %cleanup.action60, % to label %ehcleanup68 unwind label %terminate.lpad ehcleanup68: ; preds = %cleanup.done61, %lpad33 - %.merged20 = phi { ptr, i32 } [ %.pn15.pn80, %cleanup.done61 ], [ %46, %lpad33 ] + %.merged = phi { ptr, i32 } [ %.pn15.pn80, %cleanup.done61 ], [ %46, %lpad33 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg31) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup68, %ehcleanup29 - %lpad.val72.merged = phi { ptr, i32 } [ %.pn1873, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged20, %ehcleanup68 ], [ %.merged, %ehcleanup29 ] + %lpad.val72.merged = phi { ptr, i32 } [ %.pn1873, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup68 ], [ %.merged20, %ehcleanup29 ] resume { ptr, i32 } %lpad.val72.merged terminate.lpad: ; preds = %cleanup.done61, %cleanup.done26 @@ -73047,7 +73047,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit109: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool.not, label %if.end75, label %cleanup108 ehcleanup29: ; preds = %cleanup.done26, %lpad6 - %.merged47 = phi { ptr, i32 } [ %.pn.pn247, %cleanup.done26 ], [ %26, %lpad6 ] + %.merged48 = phi { ptr, i32 } [ %.pn.pn247, %cleanup.done26 ], [ %26, %lpad6 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -73424,7 +73424,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit203: ; preds = %_ZNSt10shared_ptrIK to label %invoke.cont157 unwind label %lpad156 ehcleanup111: ; preds = %cleanup.done104, %lpad76 - %.merged49 = phi { ptr, i32 } [ %.pn36.pn255, %cleanup.done104 ], [ %63, %lpad76 ] + %.merged47 = phi { ptr, i32 } [ %.pn36.pn255, %cleanup.done104 ], [ %63, %lpad76 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg71) #22 br label %eh.resume @@ -73575,7 +73575,7 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit239: ; preds = %invo ret i64 5 ehcleanup151: ; preds = %cleanup.done144, %lpad116 - %.merged48 = phi { ptr, i32 } [ %.pn39.pn259, %cleanup.done144 ], [ %106, %lpad116 ] + %.merged = phi { ptr, i32 } [ %.pn39.pn259, %cleanup.done144 ], [ %106, %lpad116 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg114) #22 br label %eh.resume @@ -73649,12 +73649,12 @@ cleanup.done184: ; preds = %cleanup.action183, to label %ehcleanup191 unwind label %terminate.lpad ehcleanup191: ; preds = %cleanup.done184, %lpad156 - %.merged = phi { ptr, i32 } [ %.pn42.pn263, %cleanup.done184 ], [ %126, %lpad156 ] + %.merged49 = phi { ptr, i32 } [ %.pn42.pn263, %cleanup.done184 ], [ %126, %lpad156 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg154) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup191, %ehcleanup151, %ehcleanup111, %ehcleanup68, %ehcleanup29 - %lpad.val195.merged = phi { ptr, i32 } [ %.pn45244, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup191 ], [ %.merged48, %ehcleanup151 ], [ %.merged49, %ehcleanup111 ], [ %.merged50, %ehcleanup68 ], [ %.merged47, %ehcleanup29 ] + %lpad.val195.merged = phi { ptr, i32 } [ %.pn45244, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged49, %ehcleanup191 ], [ %.merged, %ehcleanup151 ], [ %.merged47, %ehcleanup111 ], [ %.merged50, %ehcleanup68 ], [ %.merged48, %ehcleanup29 ] resume { ptr, i32 } %lpad.val195.merged terminate.lpad: ; preds = %cleanup.done184, %cleanup.done144, %cleanup.done104, %cleanup.done61, %cleanup.done26 @@ -73956,7 +73956,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit36: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool44.not, label %if.end52, label %if.then45 ehcleanup36: ; preds = %cleanup.done33, %lpad13 - %.merged22 = phi { ptr, i32 } [ %.pn.pn82, %cleanup.done33 ], [ %12, %lpad13 ] + %.merged = phi { ptr, i32 } [ %.pn.pn82, %cleanup.done33 ], [ %12, %lpad13 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -74123,12 +74123,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit76: ; preds = %clean ret i64 2 ehcleanup88: ; preds = %cleanup.done81, %lpad53 - %.merged = phi { ptr, i32 } [ %.pn17.pn86, %cleanup.done81 ], [ %41, %lpad53 ] + %.merged22 = phi { ptr, i32 } [ %.pn17.pn86, %cleanup.done81 ], [ %41, %lpad53 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg38) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup88, %ehcleanup36 - %lpad.val92.merged = phi { ptr, i32 } [ %.pn2079, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup88 ], [ %.merged22, %ehcleanup36 ] + %lpad.val92.merged = phi { ptr, i32 } [ %.pn2079, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged22, %ehcleanup88 ], [ %.merged, %ehcleanup36 ] resume { ptr, i32 } %lpad.val92.merged terminate.lpad: ; preds = %cleanup.done81, %cleanup.done33 @@ -75196,7 +75196,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit148: ; preds = %_ZNSt10shared_ptrIK to label %invoke.cont124 unwind label %lpad123 ehcleanup78: ; preds = %cleanup.done71, %lpad43 - %.merged39 = phi { ptr, i32 } [ %.pn27.pn195, %cleanup.done71 ], [ %39, %lpad43 ] + %.merged40 = phi { ptr, i32 } [ %.pn27.pn195, %cleanup.done71 ], [ %39, %lpad43 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg34) #22 br label %eh.resume @@ -75347,7 +75347,7 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit183: ; preds = %invo ret i64 9 ehcleanup118: ; preds = %cleanup.done111, %lpad83 - %.merged40 = phi { ptr, i32 } [ %.pn30.pn199, %cleanup.done111 ], [ %82, %lpad83 ] + %.merged38 = phi { ptr, i32 } [ %.pn30.pn199, %cleanup.done111 ], [ %82, %lpad83 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg81) #22 br label %eh.resume @@ -75421,12 +75421,12 @@ cleanup.done151: ; preds = %cleanup.action150, to label %ehcleanup158 unwind label %terminate.lpad ehcleanup158: ; preds = %cleanup.done151, %lpad123 - %.merged38 = phi { ptr, i32 } [ %.pn33.pn203, %cleanup.done151 ], [ %102, %lpad123 ] + %.merged39 = phi { ptr, i32 } [ %.pn33.pn203, %cleanup.done151 ], [ %102, %lpad123 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg121) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup158, %ehcleanup118, %ehcleanup78, %ehcleanup32 - %lpad.val162.merged = phi { ptr, i32 } [ %.pn36188, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged38, %ehcleanup158 ], [ %.merged40, %ehcleanup118 ], [ %.merged39, %ehcleanup78 ], [ %.merged, %ehcleanup32 ] + %lpad.val162.merged = phi { ptr, i32 } [ %.pn36188, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged39, %ehcleanup158 ], [ %.merged38, %ehcleanup118 ], [ %.merged40, %ehcleanup78 ], [ %.merged, %ehcleanup32 ] resume { ptr, i32 } %lpad.val162.merged terminate.lpad: ; preds = %cleanup.done151, %cleanup.done111, %cleanup.done71, %cleanup.done29 @@ -75883,7 +75883,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit109: ; preds = %_ZNSt10shared_ptrIK to label %invoke.cont74 unwind label %lpad73 ehcleanup29: ; preds = %cleanup.done26, %lpad6 - %.merged = phi { ptr, i32 } [ %.pn.pn248, %cleanup.done26 ], [ %26, %lpad6 ] + %.merged50 = phi { ptr, i32 } [ %.pn.pn248, %cleanup.done26 ], [ %26, %lpad6 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -76066,7 +76066,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit157: ; preds = %_ZNSt10shared_ptrIK to label %invoke.cont114 unwind label %lpad113 ehcleanup68: ; preds = %cleanup.done61, %lpad33 - %.merged50 = phi { ptr, i32 } [ %.pn33.pn252, %cleanup.done61 ], [ %52, %lpad33 ] + %.merged49 = phi { ptr, i32 } [ %.pn33.pn252, %cleanup.done61 ], [ %52, %lpad33 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg31) #22 br label %eh.resume @@ -76474,12 +76474,12 @@ cleanup.done181: ; preds = %cleanup.action180, to label %ehcleanup188 unwind label %terminate.lpad ehcleanup188: ; preds = %cleanup.done181, %lpad153 - %.merged49 = phi { ptr, i32 } [ %.pn42.pn264, %cleanup.done181 ], [ %124, %lpad153 ] + %.merged = phi { ptr, i32 } [ %.pn42.pn264, %cleanup.done181 ], [ %124, %lpad153 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg151) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup188, %ehcleanup148, %ehcleanup108, %ehcleanup68, %ehcleanup29 - %lpad.val192.merged = phi { ptr, i32 } [ %.pn45245, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged49, %ehcleanup188 ], [ %.merged47, %ehcleanup148 ], [ %.merged48, %ehcleanup108 ], [ %.merged50, %ehcleanup68 ], [ %.merged, %ehcleanup29 ] + %lpad.val192.merged = phi { ptr, i32 } [ %.pn45245, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup188 ], [ %.merged47, %ehcleanup148 ], [ %.merged48, %ehcleanup108 ], [ %.merged49, %ehcleanup68 ], [ %.merged50, %ehcleanup29 ] resume { ptr, i32 } %lpad.val192.merged terminate.lpad: ; preds = %cleanup.done181, %cleanup.done141, %cleanup.done101, %cleanup.done61, %cleanup.done26 @@ -77767,7 +77767,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit37: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool44.not, label %if.end52, label %if.then45 ehcleanup36: ; preds = %cleanup.done33, %lpad13 - %.merged22 = phi { ptr, i32 } [ %.pn.pn83, %cleanup.done33 ], [ %12, %lpad13 ] + %.merged = phi { ptr, i32 } [ %.pn.pn83, %cleanup.done33 ], [ %12, %lpad13 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -77934,12 +77934,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit77: ; preds = %clean ret i64 6 ehcleanup88: ; preds = %cleanup.done81, %lpad53 - %.merged = phi { ptr, i32 } [ %.pn17.pn87, %cleanup.done81 ], [ %41, %lpad53 ] + %.merged22 = phi { ptr, i32 } [ %.pn17.pn87, %cleanup.done81 ], [ %41, %lpad53 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg38) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup88, %ehcleanup36 - %lpad.val92.merged = phi { ptr, i32 } [ %.pn2080, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup88 ], [ %.merged22, %ehcleanup36 ] + %lpad.val92.merged = phi { ptr, i32 } [ %.pn2080, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged22, %ehcleanup88 ], [ %.merged, %ehcleanup36 ] resume { ptr, i32 } %lpad.val92.merged terminate.lpad: ; preds = %cleanup.done81, %cleanup.done33 @@ -80171,7 +80171,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit94: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool87.not, label %if.end89, label %cleanup122 ehcleanup78: ; preds = %cleanup.done71, %lpad43 - %.merged = phi { ptr, i32 } [ %.pn21.pn140, %cleanup.done71 ], [ %39, %lpad43 ] + %.merged30 = phi { ptr, i32 } [ %.pn21.pn140, %cleanup.done71 ], [ %39, %lpad43 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg34) #22 br label %eh.resume @@ -80333,12 +80333,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit130: ; preds = %clea ret i64 12 ehcleanup125: ; preds = %cleanup.done118, %lpad90 - %.merged30 = phi { ptr, i32 } [ %.pn24.pn144, %cleanup.done118 ], [ %67, %lpad90 ] + %.merged = phi { ptr, i32 } [ %.pn24.pn144, %cleanup.done118 ], [ %67, %lpad90 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg81) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup125, %ehcleanup78, %ehcleanup32 - %lpad.val129.merged = phi { ptr, i32 } [ %.pn27133, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged30, %ehcleanup125 ], [ %.merged, %ehcleanup78 ], [ %.merged29, %ehcleanup32 ] + %lpad.val129.merged = phi { ptr, i32 } [ %.pn27133, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup125 ], [ %.merged30, %ehcleanup78 ], [ %.merged29, %ehcleanup32 ] resume { ptr, i32 } %lpad.val129.merged terminate.lpad: ; preds = %cleanup.done118, %cleanup.done71, %cleanup.done29 @@ -81242,7 +81242,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit70: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool44.not, label %if.end52, label %if.then45 ehcleanup36: ; preds = %cleanup.done33, %lpad13 - %.merged53 = phi { ptr, i32 } [ %.pn.pn274, %cleanup.done33 ], [ %12, %lpad13 ] + %.merged55 = phi { ptr, i32 } [ %.pn.pn274, %cleanup.done33 ], [ %12, %lpad13 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -81442,7 +81442,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit123: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool97.not, label %if.end105, label %if.then98 ehcleanup88: ; preds = %cleanup.done81, %lpad53 - %.merged52 = phi { ptr, i32 } [ %.pn38.pn278, %cleanup.done81 ], [ %41, %lpad53 ] + %.merged53 = phi { ptr, i32 } [ %.pn38.pn278, %cleanup.done81 ], [ %41, %lpad53 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg38) #22 br label %eh.resume @@ -81642,7 +81642,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit176: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool150.not, label %if.end158, label %if.then151 ehcleanup141: ; preds = %cleanup.done134, %lpad106 - %.merged55 = phi { ptr, i32 } [ %.pn41.pn282, %cleanup.done134 ], [ %70, %lpad106 ] + %.merged52 = phi { ptr, i32 } [ %.pn41.pn282, %cleanup.done134 ], [ %70, %lpad106 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg91) #22 br label %eh.resume @@ -82021,7 +82021,7 @@ ehcleanup254: ; preds = %cleanup.done247, %l br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup254, %ehcleanup194, %ehcleanup141, %ehcleanup88, %ehcleanup36 - %lpad.val258.merged = phi { ptr, i32 } [ %.pn50271, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged54, %ehcleanup254 ], [ %.merged, %ehcleanup194 ], [ %.merged55, %ehcleanup141 ], [ %.merged52, %ehcleanup88 ], [ %.merged53, %ehcleanup36 ] + %lpad.val258.merged = phi { ptr, i32 } [ %.pn50271, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged54, %ehcleanup254 ], [ %.merged, %ehcleanup194 ], [ %.merged52, %ehcleanup141 ], [ %.merged53, %ehcleanup88 ], [ %.merged55, %ehcleanup36 ] resume { ptr, i32 } %lpad.val258.merged terminate.lpad: ; preds = %cleanup.done247, %cleanup.done187, %cleanup.done134, %cleanup.done81, %cleanup.done33 @@ -83346,7 +83346,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit47: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool51.not, label %if.end59, label %if.then52 ehcleanup43: ; preds = %cleanup.done40, %lpad20 - %.merged = phi { ptr, i32 } [ %.pn.pn145, %cleanup.done40 ], [ %13, %lpad20 ] + %.merged33 = phi { ptr, i32 } [ %.pn.pn145, %cleanup.done40 ], [ %13, %lpad20 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #22 br label %eh.resume @@ -83546,7 +83546,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit98: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool104.not, label %if.end112, label %if.then105 ehcleanup95: ; preds = %cleanup.done88, %lpad60 - %.merged32 = phi { ptr, i32 } [ %.pn24.pn149, %cleanup.done88 ], [ %42, %lpad60 ] + %.merged = phi { ptr, i32 } [ %.pn24.pn149, %cleanup.done88 ], [ %42, %lpad60 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg45) #22 br label %eh.resume @@ -83720,12 +83720,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit139: ; preds = %clea ret i64 3 ehcleanup155: ; preds = %cleanup.done148, %lpad120 - %.merged33 = phi { ptr, i32 } [ %.pn27.pn153, %cleanup.done148 ], [ %72, %lpad120 ] + %.merged32 = phi { ptr, i32 } [ %.pn27.pn153, %cleanup.done148 ], [ %72, %lpad120 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg98) #22 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup155, %ehcleanup95, %ehcleanup43 - %lpad.val159.merged = phi { ptr, i32 } [ %.pn30142, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged33, %ehcleanup155 ], [ %.merged32, %ehcleanup95 ], [ %.merged, %ehcleanup43 ] + %lpad.val159.merged = phi { ptr, i32 } [ %.pn30142, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged32, %ehcleanup155 ], [ %.merged, %ehcleanup95 ], [ %.merged33, %ehcleanup43 ] resume { ptr, i32 } %lpad.val159.merged terminate.lpad: ; preds = %cleanup.done148, %cleanup.done88, %cleanup.done40 diff --git a/bench/assimp/optimized/IFCReaderGen2_2x3.cpp.ll b/bench/assimp/optimized/IFCReaderGen2_2x3.cpp.ll index 7ba278b22b1..e15711d202e 100644 --- a/bench/assimp/optimized/IFCReaderGen2_2x3.cpp.ll +++ b/bench/assimp/optimized/IFCReaderGen2_2x3.cpp.ll @@ -640,7 +640,7 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit68: ; preds = %invok ret i64 %inc32 ehcleanup29: ; preds = %cleanup.done26, %lpad6 - %.merged20 = phi { ptr, i32 } [ %.pn.pn76, %cleanup.done26 ], [ %27, %lpad6 ] + %.merged = phi { ptr, i32 } [ %.pn.pn76, %cleanup.done26 ], [ %27, %lpad6 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #18 br label %eh.resume @@ -714,12 +714,12 @@ cleanup.done61: ; preds = %cleanup.action60, % to label %ehcleanup68 unwind label %terminate.lpad ehcleanup68: ; preds = %cleanup.done61, %lpad33 - %.merged = phi { ptr, i32 } [ %.pn15.pn80, %cleanup.done61 ], [ %47, %lpad33 ] + %.merged20 = phi { ptr, i32 } [ %.pn15.pn80, %cleanup.done61 ], [ %47, %lpad33 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg31) #18 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup68, %ehcleanup29 - %lpad.val72.merged = phi { ptr, i32 } [ %.pn1873, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup68 ], [ %.merged20, %ehcleanup29 ] + %lpad.val72.merged = phi { ptr, i32 } [ %.pn1873, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged20, %ehcleanup68 ], [ %.merged, %ehcleanup29 ] resume { ptr, i32 } %lpad.val72.merged terminate.lpad: ; preds = %cleanup.done61, %cleanup.done26 @@ -2369,7 +2369,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit91: ; preds = %_ZNSt10shared_ptrIK to label %invoke.cont74 unwind label %lpad73 ehcleanup29: ; preds = %cleanup.done26, %lpad6 - %.merged29 = phi { ptr, i32 } [ %.pn.pn135, %cleanup.done26 ], [ %26, %lpad6 ] + %.merged30 = phi { ptr, i32 } [ %.pn.pn135, %cleanup.done26 ], [ %26, %lpad6 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #18 br label %eh.resume @@ -2520,7 +2520,7 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit127: ; preds = %invo ret i64 4 ehcleanup68: ; preds = %cleanup.done61, %lpad33 - %.merged = phi { ptr, i32 } [ %.pn21.pn139, %cleanup.done61 ], [ %52, %lpad33 ] + %.merged29 = phi { ptr, i32 } [ %.pn21.pn139, %cleanup.done61 ], [ %52, %lpad33 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg31) #18 br label %eh.resume @@ -2594,12 +2594,12 @@ cleanup.done101: ; preds = %cleanup.action100, to label %ehcleanup108 unwind label %terminate.lpad ehcleanup108: ; preds = %cleanup.done101, %lpad73 - %.merged30 = phi { ptr, i32 } [ %.pn24.pn143, %cleanup.done101 ], [ %72, %lpad73 ] + %.merged = phi { ptr, i32 } [ %.pn24.pn143, %cleanup.done101 ], [ %72, %lpad73 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg71) #18 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup108, %ehcleanup68, %ehcleanup29 - %lpad.val112.merged = phi { ptr, i32 } [ %.pn27132, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged30, %ehcleanup108 ], [ %.merged, %ehcleanup68 ], [ %.merged29, %ehcleanup29 ] + %lpad.val112.merged = phi { ptr, i32 } [ %.pn27132, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup108 ], [ %.merged29, %ehcleanup68 ], [ %.merged30, %ehcleanup29 ] resume { ptr, i32 } %lpad.val112.merged terminate.lpad: ; preds = %cleanup.done101, %cleanup.done61, %cleanup.done26 @@ -3126,7 +3126,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit114: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool87.not, label %if.end89, label %cleanup122 ehcleanup78: ; preds = %cleanup.done71, %lpad43 - %.merged49 = phi { ptr, i32 } [ %.pn33.pn256, %cleanup.done71 ], [ %40, %lpad43 ] + %.merged47 = phi { ptr, i32 } [ %.pn33.pn256, %cleanup.done71 ], [ %40, %lpad43 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg34) #18 br label %eh.resume @@ -3681,12 +3681,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit246: ; preds = %clea ret i64 %inc176 ehcleanup219: ; preds = %cleanup.done212, %lpad184 - %.merged47 = phi { ptr, i32 } [ %.pn42.pn268, %cleanup.done212 ], [ %127, %lpad184 ] + %.merged49 = phi { ptr, i32 } [ %.pn42.pn268, %cleanup.done212 ], [ %127, %lpad184 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg175) #18 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup219, %ehcleanup172, %ehcleanup125, %ehcleanup78, %ehcleanup32 - %lpad.val223.merged = phi { ptr, i32 } [ %.pn45249, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged47, %ehcleanup219 ], [ %.merged50, %ehcleanup172 ], [ %.merged, %ehcleanup125 ], [ %.merged49, %ehcleanup78 ], [ %.merged48, %ehcleanup32 ] + %lpad.val223.merged = phi { ptr, i32 } [ %.pn45249, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged49, %ehcleanup219 ], [ %.merged50, %ehcleanup172 ], [ %.merged, %ehcleanup125 ], [ %.merged47, %ehcleanup78 ], [ %.merged48, %ehcleanup32 ] resume { ptr, i32 } %lpad.val223.merged terminate.lpad: ; preds = %cleanup.done212, %cleanup.done165, %cleanup.done118, %cleanup.done71, %cleanup.done29 @@ -4153,7 +4153,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit70: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool44.not, label %if.end52, label %if.then45 ehcleanup36: ; preds = %cleanup.done33, %lpad13 - %.merged55 = phi { ptr, i32 } [ %.pn.pn328, %cleanup.done33 ], [ %12, %lpad13 ] + %.merged = phi { ptr, i32 } [ %.pn.pn328, %cleanup.done33 ], [ %12, %lpad13 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #18 br label %eh.resume @@ -4354,7 +4354,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit122: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool97.not, label %if.end105, label %if.then98 ehcleanup88: ; preds = %cleanup.done81, %lpad53 - %.merged = phi { ptr, i32 } [ %.pn38.pn332, %cleanup.done81 ], [ %42, %lpad53 ] + %.merged52 = phi { ptr, i32 } [ %.pn38.pn332, %cleanup.done81 ], [ %42, %lpad53 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg38) #18 br label %eh.resume @@ -4549,7 +4549,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit174: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool150.not, label %if.end158, label %if.then151 ehcleanup141: ; preds = %cleanup.done134, %lpad106 - %.merged52 = phi { ptr, i32 } [ %.pn41.pn336, %cleanup.done134 ], [ %72, %lpad106 ] + %.merged53 = phi { ptr, i32 } [ %.pn41.pn336, %cleanup.done134 ], [ %72, %lpad106 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg91) #18 br label %eh.resume @@ -4961,7 +4961,7 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit322: ; preds = %clea ret i64 %inc198 eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup141, %ehcleanup88, %ehcleanup36 - %lpad.val251.merged = phi { ptr, i32 } [ %.pn50325, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged52, %ehcleanup141 ], [ %.merged, %ehcleanup88 ], [ %.merged55, %ehcleanup36 ] + %lpad.val251.merged = phi { ptr, i32 } [ %.pn50325, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged53, %ehcleanup141 ], [ %.merged52, %ehcleanup88 ], [ %.merged, %ehcleanup36 ] resume { ptr, i32 } %lpad.val251.merged terminate.lpad: ; preds = %cleanup.done134, %cleanup.done81, %cleanup.done33 @@ -6136,7 +6136,7 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit68: ; preds = %invok ret i64 %inc32 ehcleanup29: ; preds = %cleanup.done26, %lpad6 - %.merged20 = phi { ptr, i32 } [ %.pn.pn76, %cleanup.done26 ], [ %27, %lpad6 ] + %.merged = phi { ptr, i32 } [ %.pn.pn76, %cleanup.done26 ], [ %27, %lpad6 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #18 br label %eh.resume @@ -6210,12 +6210,12 @@ cleanup.done61: ; preds = %cleanup.action60, % to label %ehcleanup68 unwind label %terminate.lpad ehcleanup68: ; preds = %cleanup.done61, %lpad33 - %.merged = phi { ptr, i32 } [ %.pn15.pn80, %cleanup.done61 ], [ %47, %lpad33 ] + %.merged20 = phi { ptr, i32 } [ %.pn15.pn80, %cleanup.done61 ], [ %47, %lpad33 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg31) #18 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup68, %ehcleanup29 - %lpad.val72.merged = phi { ptr, i32 } [ %.pn1873, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup68 ], [ %.merged20, %ehcleanup29 ] + %lpad.val72.merged = phi { ptr, i32 } [ %.pn1873, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged20, %ehcleanup68 ], [ %.merged, %ehcleanup29 ] resume { ptr, i32 } %lpad.val72.merged terminate.lpad: ; preds = %cleanup.done61, %cleanup.done26 @@ -6524,7 +6524,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit35: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool40.not, label %if.end42, label %cleanup75 ehcleanup32: ; preds = %cleanup.done29, %lpad9 - %.merged = phi { ptr, i32 } [ %.pn.pn78, %cleanup.done29 ], [ %11, %lpad9 ] + %.merged20 = phi { ptr, i32 } [ %.pn.pn78, %cleanup.done29 ], [ %11, %lpad9 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #18 br label %eh.resume @@ -6687,12 +6687,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit72: ; preds = %clean ret i64 %inc35 ehcleanup78: ; preds = %cleanup.done71, %lpad43 - %.merged20 = phi { ptr, i32 } [ %.pn15.pn82, %cleanup.done71 ], [ %40, %lpad43 ] + %.merged = phi { ptr, i32 } [ %.pn15.pn82, %cleanup.done71 ], [ %40, %lpad43 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg34) #18 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup78, %ehcleanup32 - %lpad.val82.merged = phi { ptr, i32 } [ %.pn1875, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged20, %ehcleanup78 ], [ %.merged, %ehcleanup32 ] + %lpad.val82.merged = phi { ptr, i32 } [ %.pn1875, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup78 ], [ %.merged20, %ehcleanup32 ] resume { ptr, i32 } %lpad.val82.merged terminate.lpad: ; preds = %cleanup.done71, %cleanup.done29 @@ -8397,7 +8397,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit59: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool44.not, label %if.end52, label %if.then45 ehcleanup36: ; preds = %cleanup.done33, %lpad13 - %.merged = phi { ptr, i32 } [ %.pn.pn220, %cleanup.done33 ], [ %12, %lpad13 ] + %.merged44 = phi { ptr, i32 } [ %.pn.pn220, %cleanup.done33 ], [ %12, %lpad13 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #18 br label %eh.resume @@ -8994,12 +8994,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit214: ; preds = %clea ret i64 6 ehcleanup208: ; preds = %cleanup.done201, %lpad173 - %.merged44 = phi { ptr, i32 } [ %.pn37.pn228, %cleanup.done201 ], [ %105, %lpad173 ] + %.merged = phi { ptr, i32 } [ %.pn37.pn228, %cleanup.done201 ], [ %105, %lpad173 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg151) #18 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup208, %ehcleanup95, %ehcleanup36 - %lpad.val212.merged = phi { ptr, i32 } [ %.pn40217, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged44, %ehcleanup208 ], [ %.merged43, %ehcleanup95 ], [ %.merged, %ehcleanup36 ] + %lpad.val212.merged = phi { ptr, i32 } [ %.pn40217, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup208 ], [ %.merged43, %ehcleanup95 ], [ %.merged44, %ehcleanup36 ] resume { ptr, i32 } %lpad.val212.merged terminate.lpad: ; preds = %cleanup.done201, %cleanup.done88, %cleanup.done33 @@ -9383,7 +9383,7 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit67: ; preds = %invok ret i64 %inc35 ehcleanup32: ; preds = %cleanup.done29, %lpad9 - %.merged20 = phi { ptr, i32 } [ %.pn.pn75, %cleanup.done29 ], [ %11, %lpad9 ] + %.merged = phi { ptr, i32 } [ %.pn.pn75, %cleanup.done29 ], [ %11, %lpad9 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #18 br label %eh.resume @@ -9457,12 +9457,12 @@ cleanup.done64: ; preds = %cleanup.action63, % to label %ehcleanup71 unwind label %terminate.lpad ehcleanup71: ; preds = %cleanup.done64, %lpad36 - %.merged = phi { ptr, i32 } [ %.pn15.pn79, %cleanup.done64 ], [ %49, %lpad36 ] + %.merged20 = phi { ptr, i32 } [ %.pn15.pn79, %cleanup.done64 ], [ %49, %lpad36 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg34) #18 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup71, %ehcleanup32 - %lpad.val75.merged = phi { ptr, i32 } [ %.pn1872, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup71 ], [ %.merged20, %ehcleanup32 ] + %lpad.val75.merged = phi { ptr, i32 } [ %.pn1872, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged20, %ehcleanup71 ], [ %.merged, %ehcleanup32 ] resume { ptr, i32 } %lpad.val75.merged terminate.lpad: ; preds = %cleanup.done64, %cleanup.done29 @@ -11736,7 +11736,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit37: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool44.not, label %if.end52, label %if.then45 ehcleanup36: ; preds = %cleanup.done33, %lpad13 - %.merged22 = phi { ptr, i32 } [ %.pn.pn83, %cleanup.done33 ], [ %12, %lpad13 ] + %.merged = phi { ptr, i32 } [ %.pn.pn83, %cleanup.done33 ], [ %12, %lpad13 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #18 br label %eh.resume @@ -11904,12 +11904,12 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit77: ; preds = %clean ret i64 %inc39 ehcleanup88: ; preds = %cleanup.done81, %lpad53 - %.merged = phi { ptr, i32 } [ %.pn17.pn87, %cleanup.done81 ], [ %42, %lpad53 ] + %.merged22 = phi { ptr, i32 } [ %.pn17.pn87, %cleanup.done81 ], [ %42, %lpad53 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg38) #18 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup88, %ehcleanup36 - %lpad.val92.merged = phi { ptr, i32 } [ %.pn2080, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup88 ], [ %.merged22, %ehcleanup36 ] + %lpad.val92.merged = phi { ptr, i32 } [ %.pn2080, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged22, %ehcleanup88 ], [ %.merged, %ehcleanup36 ] resume { ptr, i32 } %lpad.val92.merged terminate.lpad: ; preds = %cleanup.done81, %cleanup.done33 @@ -12355,7 +12355,7 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit68: ; preds = %invok ret i64 %inc32 ehcleanup29: ; preds = %cleanup.done26, %lpad6 - %.merged = phi { ptr, i32 } [ %.pn.pn76, %cleanup.done26 ], [ %27, %lpad6 ] + %.merged20 = phi { ptr, i32 } [ %.pn.pn76, %cleanup.done26 ], [ %27, %lpad6 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #18 br label %eh.resume @@ -12429,12 +12429,12 @@ cleanup.done61: ; preds = %cleanup.action60, % to label %ehcleanup68 unwind label %terminate.lpad ehcleanup68: ; preds = %cleanup.done61, %lpad33 - %.merged20 = phi { ptr, i32 } [ %.pn15.pn80, %cleanup.done61 ], [ %47, %lpad33 ] + %.merged = phi { ptr, i32 } [ %.pn15.pn80, %cleanup.done61 ], [ %47, %lpad33 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg31) #18 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup68, %ehcleanup29 - %lpad.val72.merged = phi { ptr, i32 } [ %.pn1873, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged20, %ehcleanup68 ], [ %.merged, %ehcleanup29 ] + %lpad.val72.merged = phi { ptr, i32 } [ %.pn1873, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup68 ], [ %.merged20, %ehcleanup29 ] resume { ptr, i32 } %lpad.val72.merged terminate.lpad: ; preds = %cleanup.done61, %cleanup.done26 @@ -13129,7 +13129,7 @@ _ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev.exit67: ; preds = %invok ret i64 %inc35 ehcleanup32: ; preds = %cleanup.done29, %lpad9 - %.merged = phi { ptr, i32 } [ %.pn.pn75, %cleanup.done29 ], [ %11, %lpad9 ] + %.merged20 = phi { ptr, i32 } [ %.pn.pn75, %cleanup.done29 ], [ %11, %lpad9 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #18 br label %eh.resume @@ -13203,12 +13203,12 @@ cleanup.done64: ; preds = %cleanup.action63, % to label %ehcleanup71 unwind label %terminate.lpad ehcleanup71: ; preds = %cleanup.done64, %lpad36 - %.merged20 = phi { ptr, i32 } [ %.pn15.pn79, %cleanup.done64 ], [ %49, %lpad36 ] + %.merged = phi { ptr, i32 } [ %.pn15.pn79, %cleanup.done64 ], [ %49, %lpad36 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg34) #18 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup71, %ehcleanup32 - %lpad.val75.merged = phi { ptr, i32 } [ %.pn1872, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged20, %ehcleanup71 ], [ %.merged, %ehcleanup32 ] + %lpad.val75.merged = phi { ptr, i32 } [ %.pn1872, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged, %ehcleanup71 ], [ %.merged20, %ehcleanup32 ] resume { ptr, i32 } %lpad.val75.merged terminate.lpad: ; preds = %cleanup.done64, %cleanup.done29 @@ -17083,7 +17083,7 @@ _ZNK6Assimp4STEP7EXPRESS4LISTixEm.exit95: ; preds = %_ZNSt10shared_ptrIK br i1 %tobool40.not, label %if.end42, label %cleanup75 ehcleanup32: ; preds = %cleanup.done29, %lpad9 - %.merged78 = phi { ptr, i32 } [ %.pn.pn648, %cleanup.done29 ], [ %11, %lpad9 ] + %.merged80 = phi { ptr, i32 } [ %.pn.pn648, %cleanup.done29 ], [ %11, %lpad9 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg) #18 br label %eh.resume @@ -18530,12 +18530,12 @@ cleanup.done346: ; preds = %cleanup.action345, to label %ehcleanup353 unwind label %terminate.lpad ehcleanup353: ; preds = %cleanup.done346, %lpad318 - %.merged79 = phi { ptr, i32 } [ %.pn69.pn652, %cleanup.done346 ], [ %247, %lpad318 ] + %.merged74 = phi { ptr, i32 } [ %.pn69.pn652, %cleanup.done346 ], [ %247, %lpad318 ] call void @_ZNSt10shared_ptrIKN6Assimp4STEP7EXPRESS8DataTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %arg316) #18 br label %eh.resume eh.resume: ; preds = %ehcleanup, %cleanup.action, %ehcleanup353, %ehcleanup32 - %lpad.val357.merged = phi { ptr, i32 } [ %.pn72645, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged79, %ehcleanup353 ], [ %.merged78, %ehcleanup32 ] + %lpad.val357.merged = phi { ptr, i32 } [ %.pn72645, %cleanup.action ], [ %3, %ehcleanup ], [ %.merged74, %ehcleanup353 ], [ %.merged80, %ehcleanup32 ] resume { ptr, i32 } %lpad.val357.merged terminate.lpad: ; preds = %cleanup.done346, %cleanup.done29 diff --git a/bench/boost/optimized/path.ll b/bench/boost/optimized/path.ll index 15a3f033da7..e9c321ebfb6 100644 --- a/bench/boost/optimized/path.ll +++ b/bench/boost/optimized/path.ll @@ -4614,186 +4614,191 @@ _ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit: ; preds = %17, %23, %2 %33 = getelementptr inbounds nuw i8, ptr %7, i64 %32 %34 = load i8, ptr %33, align 1, !tbaa !11 %35 = icmp eq i8 %34, 47 - br i1 %35, label %.preheader, label %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit.thread + br i1 %35, label %36, label %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit.thread -.preheader: ; preds = %31, %37 - %.0.i = phi i64 [ %38, %37 ], [ %32, %31 ] - %36 = icmp ugt i64 %.0.i, %.048 - br i1 %36, label %37, label %.thread +36: ; preds = %31 + %umin.i = tail call i64 @llvm.umin.i64(i64 %32, i64 %.048) + br label %37 -37: ; preds = %.preheader - %38 = add i64 %.0.i, -1 - %39 = getelementptr inbounds nuw i8, ptr %7, i64 %38 - %40 = load i8, ptr %39, align 1, !tbaa !11 - %41 = icmp eq i8 %40, 47 - br i1 %41, label %.preheader, label %_ZN12_GLOBAL__N_117is_root_separatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit, !llvm.loop !29 +37: ; preds = %39, %36 + %.0.i = phi i64 [ %32, %36 ], [ %40, %39 ] + %38 = icmp ugt i64 %.0.i, %.048 + br i1 %38, label %39, label %_ZN12_GLOBAL__N_117is_root_separatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit -_ZN12_GLOBAL__N_117is_root_separatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit: ; preds = %37 - %42 = icmp eq i64 %.0.i, %.048 - br i1 %42, label %.thread, label %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit.thread +39: ; preds = %37 + %40 = add i64 %.0.i, -1 + %41 = getelementptr inbounds nuw i8, ptr %7, i64 %40 + %42 = load i8, ptr %41, align 1, !tbaa !11 + %43 = icmp eq i8 %42, 47 + br i1 %43, label %37, label %_ZN12_GLOBAL__N_117is_root_separatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit, !llvm.loop !29 + +_ZN12_GLOBAL__N_117is_root_separatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit: ; preds = %37, %39 + %.0.lcssa.i = phi i64 [ %umin.i, %37 ], [ %.0.i, %39 ] + %44 = icmp eq i64 %.0.lcssa.i, %.048 + br i1 %44, label %.thread, label %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit.thread _ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit.thread: ; preds = %9, %_ZN12_GLOBAL__N_117is_root_separatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit, %31, %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit %.021.i52 = phi i64 [ %.048, %_ZN12_GLOBAL__N_117is_root_separatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit ], [ %.048, %31 ], [ %.048, %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit ], [ %6, %9 ] %.04851 = phi i64 [ %.048, %_ZN12_GLOBAL__N_117is_root_separatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit ], [ %.048, %31 ], [ %.048, %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit ], [ 0, %9 ] - %43 = icmp eq i64 %.04851, %6 - br i1 %43, label %87, label %44 + %45 = icmp eq i64 %.04851, %6 + br i1 %45, label %89, label %46 -44: ; preds = %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit.thread +46: ; preds = %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit.thread %umin.i38 = tail call i64 @llvm.umin.i64(i64 %6, i64 %.04851) - br label %45 + br label %47 -45: ; preds = %47, %44 - %.0.i39 = phi i64 [ %6, %44 ], [ %48, %47 ] - %46 = icmp ugt i64 %.0.i39, %.04851 - br i1 %46, label %47, label %_ZN12_GLOBAL__N_118find_filename_sizeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit - -47: ; preds = %45 - %48 = add i64 %.0.i39, -1 - %49 = getelementptr inbounds nuw i8, ptr %7, i64 %48 - %50 = load i8, ptr %49, align 1, !tbaa !11 - %51 = icmp eq i8 %50, 47 - br i1 %51, label %_ZN12_GLOBAL__N_118find_filename_sizeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit, label %45, !llvm.loop !17 - -_ZN12_GLOBAL__N_118find_filename_sizeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit: ; preds = %45, %47 - %.0.lcssa.i40 = phi i64 [ %.0.i39, %47 ], [ %umin.i38, %45 ] - %52 = sub i64 %6, %.0.lcssa.i40 - %53 = icmp eq i64 %52, 0 - br i1 %53, label %54, label %87 - -54: ; preds = %_ZN12_GLOBAL__N_118find_filename_sizeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit - %55 = icmp ugt i64 %.0.lcssa.i40, %.04851 - br i1 %55, label %56, label %.thread - -56: ; preds = %54 - %57 = add i64 %.0.lcssa.i40, -1 - %58 = getelementptr inbounds nuw i8, ptr %7, i64 %57 - %59 = load i8, ptr %58, align 1, !tbaa !11 - %60 = icmp eq i8 %59, 47 - br i1 %60, label %61, label %.thread +47: ; preds = %49, %46 + %.0.i39 = phi i64 [ %6, %46 ], [ %50, %49 ] + %48 = icmp ugt i64 %.0.i39, %.04851 + br i1 %48, label %49, label %_ZN12_GLOBAL__N_118find_filename_sizeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit -61: ; preds = %56 - %umin.i41 = tail call i64 @llvm.umin.i64(i64 %57, i64 %.021.i52) - br label %62 +49: ; preds = %47 + %50 = add i64 %.0.i39, -1 + %51 = getelementptr inbounds nuw i8, ptr %7, i64 %50 + %52 = load i8, ptr %51, align 1, !tbaa !11 + %53 = icmp eq i8 %52, 47 + br i1 %53, label %_ZN12_GLOBAL__N_118find_filename_sizeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit, label %47, !llvm.loop !17 + +_ZN12_GLOBAL__N_118find_filename_sizeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit: ; preds = %47, %49 + %.0.lcssa.i40 = phi i64 [ %.0.i39, %49 ], [ %umin.i38, %47 ] + %54 = sub i64 %6, %.0.lcssa.i40 + %55 = icmp eq i64 %54, 0 + br i1 %55, label %56, label %89 + +56: ; preds = %_ZN12_GLOBAL__N_118find_filename_sizeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit + %57 = icmp ugt i64 %.0.lcssa.i40, %.04851 + br i1 %57, label %58, label %.thread + +58: ; preds = %56 + %59 = add i64 %.0.lcssa.i40, -1 + %60 = getelementptr inbounds nuw i8, ptr %7, i64 %59 + %61 = load i8, ptr %60, align 1, !tbaa !11 + %62 = icmp eq i8 %61, 47 + br i1 %62, label %63, label %.thread + +63: ; preds = %58 + %umin.i41 = tail call i64 @llvm.umin.i64(i64 %59, i64 %.021.i52) + br label %64 + +64: ; preds = %66, %63 + %.0.i42 = phi i64 [ %59, %63 ], [ %67, %66 ] + %65 = icmp ugt i64 %.0.i42, %.021.i52 + br i1 %65, label %66, label %_ZN12_GLOBAL__N_117is_root_separatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit44 + +66: ; preds = %64 + %67 = add i64 %.0.i42, -1 + %68 = getelementptr inbounds nuw i8, ptr %7, i64 %67 + %69 = load i8, ptr %68, align 1, !tbaa !11 + %70 = icmp eq i8 %69, 47 + br i1 %70, label %64, label %_ZN12_GLOBAL__N_117is_root_separatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit44, !llvm.loop !29 + +_ZN12_GLOBAL__N_117is_root_separatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit44: ; preds = %64, %66 + %.0.lcssa.i43 = phi i64 [ %umin.i41, %64 ], [ %.0.i42, %66 ] + %71 = icmp eq i64 %.0.lcssa.i43, %.021.i52 + br i1 %71, label %.thread, label %72 -62: ; preds = %64, %61 - %.0.i42 = phi i64 [ %57, %61 ], [ %65, %64 ] - %63 = icmp ugt i64 %.0.i42, %.021.i52 - br i1 %63, label %64, label %_ZN12_GLOBAL__N_117is_root_separatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit44 - -64: ; preds = %62 - %65 = add i64 %.0.i42, -1 - %66 = getelementptr inbounds nuw i8, ptr %7, i64 %65 - %67 = load i8, ptr %66, align 1, !tbaa !11 - %68 = icmp eq i8 %67, 47 - br i1 %68, label %62, label %_ZN12_GLOBAL__N_117is_root_separatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit44, !llvm.loop !29 - -_ZN12_GLOBAL__N_117is_root_separatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit44: ; preds = %62, %64 - %.0.lcssa.i43 = phi i64 [ %umin.i41, %62 ], [ %.0.i42, %64 ] - %69 = icmp eq i64 %.0.lcssa.i43, %.021.i52 - br i1 %69, label %.thread, label %70 - -70: ; preds = %_ZN12_GLOBAL__N_117is_root_separatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit44 - %71 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %71, ptr %0, align 8, !tbaa !12 - %72 = load ptr, ptr @_ZN12_GLOBAL__N_110g_dot_pathE, align 8, !tbaa !3 - %73 = load i64, ptr getelementptr inbounds nuw (i8, ptr @_ZN12_GLOBAL__N_110g_dot_pathE, i64 8), align 8, !tbaa !10 +72: ; preds = %_ZN12_GLOBAL__N_117is_root_separatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit44 + %73 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr %73, ptr %0, align 8, !tbaa !12 + %74 = load ptr, ptr @_ZN12_GLOBAL__N_110g_dot_pathE, align 8, !tbaa !3 + %75 = load i64, ptr getelementptr inbounds nuw (i8, ptr @_ZN12_GLOBAL__N_110g_dot_pathE, i64 8), align 8, !tbaa !10 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #21 - store i64 %73, ptr %4, align 8, !tbaa !13 - %74 = icmp ugt i64 %73, 15 - br i1 %74, label %.noexc.i.i, label %._crit_edge.i.i.i - -.noexc.i.i: ; preds = %70 - %75 = call noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(8) %4, i64 noundef 0) - store ptr %75, ptr %0, align 8, !tbaa !3 - %76 = load i64, ptr %4, align 8, !tbaa !13 - store i64 %76, ptr %71, align 8, !tbaa !11 + store i64 %75, ptr %4, align 8, !tbaa !13 + %76 = icmp ugt i64 %75, 15 + br i1 %76, label %.noexc.i.i, label %._crit_edge.i.i.i + +.noexc.i.i: ; preds = %72 + %77 = call noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(8) %4, i64 noundef 0) + store ptr %77, ptr %0, align 8, !tbaa !3 + %78 = load i64, ptr %4, align 8, !tbaa !13 + store i64 %78, ptr %73, align 8, !tbaa !11 br label %._crit_edge.i.i.i -._crit_edge.i.i.i: ; preds = %.noexc.i.i, %70 - %77 = phi ptr [ %75, %.noexc.i.i ], [ %71, %70 ] - switch i64 %73, label %80 [ - i64 1, label %78 +._crit_edge.i.i.i: ; preds = %.noexc.i.i, %72 + %79 = phi ptr [ %77, %.noexc.i.i ], [ %73, %72 ] + switch i64 %75, label %82 [ + i64 1, label %80 i64 0, label %_ZN5boost10filesystem4pathC2ERKS1_.exit ] -78: ; preds = %._crit_edge.i.i.i - %79 = load i8, ptr %72, align 1, !tbaa !11 - store i8 %79, ptr %77, align 1, !tbaa !11 +80: ; preds = %._crit_edge.i.i.i + %81 = load i8, ptr %74, align 1, !tbaa !11 + store i8 %81, ptr %79, align 1, !tbaa !11 br label %_ZN5boost10filesystem4pathC2ERKS1_.exit -80: ; preds = %._crit_edge.i.i.i - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %77, ptr align 1 %72, i64 %73, i1 false) +82: ; preds = %._crit_edge.i.i.i + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %79, ptr align 1 %74, i64 %75, i1 false) br label %_ZN5boost10filesystem4pathC2ERKS1_.exit -_ZN5boost10filesystem4pathC2ERKS1_.exit: ; preds = %._crit_edge.i.i.i, %78, %80 - %81 = load i64, ptr %4, align 8, !tbaa !13 - %82 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %81, ptr %82, align 8, !tbaa !10 - %83 = load ptr, ptr %0, align 8, !tbaa !3 - %84 = getelementptr inbounds nuw i8, ptr %83, i64 %81 - store i8 0, ptr %84, align 1, !tbaa !11 +_ZN5boost10filesystem4pathC2ERKS1_.exit: ; preds = %._crit_edge.i.i.i, %80, %82 + %83 = load i64, ptr %4, align 8, !tbaa !13 + %84 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 %83, ptr %84, align 8, !tbaa !10 + %85 = load ptr, ptr %0, align 8, !tbaa !3 + %86 = getelementptr inbounds nuw i8, ptr %85, i64 %83 + store i8 0, ptr %86, align 1, !tbaa !11 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #21 - br label %102 - -.thread: ; preds = %.preheader, %_ZN12_GLOBAL__N_117is_root_separatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit44, %56, %54, %_ZN12_GLOBAL__N_117is_root_separatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit - %.027.ph = phi i64 [ %.048, %_ZN12_GLOBAL__N_117is_root_separatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit ], [ %.0.lcssa.i40, %54 ], [ %.0.lcssa.i40, %56 ], [ %.0.lcssa.i40, %_ZN12_GLOBAL__N_117is_root_separatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit44 ], [ %.048, %.preheader ] - %.0.ph = phi i64 [ 1, %_ZN12_GLOBAL__N_117is_root_separatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit ], [ 0, %54 ], [ 0, %56 ], [ 0, %_ZN12_GLOBAL__N_117is_root_separatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit44 ], [ 1, %.preheader ] - %85 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %85, ptr %0, align 8, !tbaa !12 - %86 = getelementptr inbounds nuw i8, ptr %0, i64 8 + br label %104 + +.thread: ; preds = %_ZN12_GLOBAL__N_117is_root_separatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit44, %58, %56, %_ZN12_GLOBAL__N_117is_root_separatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit + %.027.ph = phi i64 [ %.048, %_ZN12_GLOBAL__N_117is_root_separatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit ], [ %.0.lcssa.i40, %56 ], [ %.0.lcssa.i40, %58 ], [ %.0.lcssa.i40, %_ZN12_GLOBAL__N_117is_root_separatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit44 ] + %.0.ph = phi i64 [ 1, %_ZN12_GLOBAL__N_117is_root_separatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit ], [ 0, %56 ], [ 0, %58 ], [ 0, %_ZN12_GLOBAL__N_117is_root_separatorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit44 ] + %87 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr %87, ptr %0, align 8, !tbaa !12 + %88 = getelementptr inbounds nuw i8, ptr %0, i64 8 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #21 store i64 %.0.ph, ptr %3, align 8, !tbaa !13 br label %._crit_edge.i.i.i45 -87: ; preds = %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit.thread, %_ZN12_GLOBAL__N_118find_filename_sizeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit +89: ; preds = %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit.thread, %_ZN12_GLOBAL__N_118find_filename_sizeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit %.027 = phi i64 [ %.0.lcssa.i40, %_ZN12_GLOBAL__N_118find_filename_sizeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit ], [ 0, %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit.thread ] - %.0 = phi i64 [ %52, %_ZN12_GLOBAL__N_118find_filename_sizeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit ], [ %6, %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit.thread ] - %88 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr %88, ptr %0, align 8, !tbaa !12 - %89 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 0, ptr %89, align 8, !tbaa !10 + %.0 = phi i64 [ %54, %_ZN12_GLOBAL__N_118find_filename_sizeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEmm.exit ], [ %6, %_ZN12_GLOBAL__N_125find_root_directory_startEPKcmRm.exit.thread ] + %90 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr %90, ptr %0, align 8, !tbaa !12 + %91 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 0, ptr %91, align 8, !tbaa !10 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #21 store i64 %.0, ptr %3, align 8, !tbaa !13 - %90 = icmp ugt i64 %.0, 15 - br i1 %90, label %.noexc.i.i46, label %._crit_edge.i.i.i45 - -.noexc.i.i46: ; preds = %87 - %91 = call noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(8) %3, i64 noundef 0) - store ptr %91, ptr %0, align 8, !tbaa !3 - %92 = load i64, ptr %3, align 8, !tbaa !13 - store i64 %92, ptr %88, align 8, !tbaa !11 + %92 = icmp ugt i64 %.0, 15 + br i1 %92, label %.noexc.i.i46, label %._crit_edge.i.i.i45 + +.noexc.i.i46: ; preds = %89 + %93 = call noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(8) %3, i64 noundef 0) + store ptr %93, ptr %0, align 8, !tbaa !3 + %94 = load i64, ptr %3, align 8, !tbaa !13 + store i64 %94, ptr %90, align 8, !tbaa !11 br label %._crit_edge.i.i.i45 -._crit_edge.i.i.i45: ; preds = %.thread, %.noexc.i.i46, %87 - %93 = phi ptr [ %89, %.noexc.i.i46 ], [ %89, %87 ], [ %86, %.thread ] - %.027.pn = phi i64 [ %.027, %.noexc.i.i46 ], [ %.027, %87 ], [ %.027.ph, %.thread ] - %.056 = phi i64 [ %.0, %.noexc.i.i46 ], [ %.0, %87 ], [ %.0.ph, %.thread ] - %94 = phi ptr [ %91, %.noexc.i.i46 ], [ %88, %87 ], [ %85, %.thread ] - %95 = getelementptr inbounds nuw i8, ptr %7, i64 %.027.pn - switch i64 %.056, label %98 [ - i64 1, label %96 +._crit_edge.i.i.i45: ; preds = %.thread, %.noexc.i.i46, %89 + %95 = phi ptr [ %91, %.noexc.i.i46 ], [ %91, %89 ], [ %88, %.thread ] + %.027.pn = phi i64 [ %.027, %.noexc.i.i46 ], [ %.027, %89 ], [ %.027.ph, %.thread ] + %.055 = phi i64 [ %.0, %.noexc.i.i46 ], [ %.0, %89 ], [ %.0.ph, %.thread ] + %96 = phi ptr [ %93, %.noexc.i.i46 ], [ %90, %89 ], [ %87, %.thread ] + %97 = getelementptr inbounds nuw i8, ptr %7, i64 %.027.pn + switch i64 %.055, label %100 [ + i64 1, label %98 i64 0, label %_ZN5boost10filesystem4pathC2EPKcS3_.exit ] -96: ; preds = %._crit_edge.i.i.i45 - %97 = load i8, ptr %95, align 1, !tbaa !11 - store i8 %97, ptr %94, align 1, !tbaa !11 +98: ; preds = %._crit_edge.i.i.i45 + %99 = load i8, ptr %97, align 1, !tbaa !11 + store i8 %99, ptr %96, align 1, !tbaa !11 br label %_ZN5boost10filesystem4pathC2EPKcS3_.exit -98: ; preds = %._crit_edge.i.i.i45 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %94, ptr align 1 %95, i64 %.056, i1 false) +100: ; preds = %._crit_edge.i.i.i45 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %96, ptr align 1 %97, i64 %.055, i1 false) br label %_ZN5boost10filesystem4pathC2EPKcS3_.exit -_ZN5boost10filesystem4pathC2EPKcS3_.exit: ; preds = %._crit_edge.i.i.i45, %96, %98 - %99 = load i64, ptr %3, align 8, !tbaa !13 - store i64 %99, ptr %93, align 8, !tbaa !10 - %100 = load ptr, ptr %0, align 8, !tbaa !3 - %101 = getelementptr inbounds nuw i8, ptr %100, i64 %99 - store i8 0, ptr %101, align 1, !tbaa !11 +_ZN5boost10filesystem4pathC2EPKcS3_.exit: ; preds = %._crit_edge.i.i.i45, %98, %100 + %101 = load i64, ptr %3, align 8, !tbaa !13 + store i64 %101, ptr %95, align 8, !tbaa !10 + %102 = load ptr, ptr %0, align 8, !tbaa !3 + %103 = getelementptr inbounds nuw i8, ptr %102, i64 %101 + store i8 0, ptr %103, align 1, !tbaa !11 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #21 - br label %102 + br label %104 -102: ; preds = %_ZN5boost10filesystem4pathC2EPKcS3_.exit, %_ZN5boost10filesystem4pathC2ERKS1_.exit +104: ; preds = %_ZN5boost10filesystem4pathC2EPKcS3_.exit, %_ZN5boost10filesystem4pathC2ERKS1_.exit ret void } diff --git a/bench/coreutils-rs/optimized/389ib4lq03w39x6a.ll b/bench/coreutils-rs/optimized/389ib4lq03w39x6a.ll index 93346255c33..241ad5649b5 100644 --- a/bench/coreutils-rs/optimized/389ib4lq03w39x6a.ll +++ b/bench/coreutils-rs/optimized/389ib4lq03w39x6a.ll @@ -32,6 +32,8 @@ target triple = "x86_64-unknown-linux-gnu" @anon.da59c305f0f0aed4eca35e39d10eabc9.49 = private unnamed_addr constant <{ [6 x i8] }> <{ [6 x i8] c"range " }>, align 1 @anon.da59c305f0f0aed4eca35e39d10eabc9.50 = private unnamed_addr constant <{ [14 x i8] }> <{ [14 x i8] c" was invalid: " }>, align 1 @anon.da59c305f0f0aed4eca35e39d10eabc9.51 = private unnamed_addr constant <{ ptr, [8 x i8], ptr, [8 x i8] }> <{ ptr @anon.da59c305f0f0aed4eca35e39d10eabc9.49, [8 x i8] c"\06\00\00\00\00\00\00\00", ptr @anon.da59c305f0f0aed4eca35e39d10eabc9.50, [8 x i8] c"\0E\00\00\00\00\00\00\00" }>, align 8 +@anon.da59c305f0f0aed4eca35e39d10eabc9.52 = private unnamed_addr constant <{ [37 x i8] }> <{ [37 x i8] c"src/uucore/src/lib/features/ranges.rs" }>, align 1 +@anon.da59c305f0f0aed4eca35e39d10eabc9.56 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.da59c305f0f0aed4eca35e39d10eabc9.52, [16 x i8] c"%\00\00\00\00\00\00\00f\00\00\00,\00\00\00" }>, align 8 @anon.da59c305f0f0aed4eca35e39d10eabc9.58 = private unnamed_addr constant <{ [39 x i8] }> <{ [39 x i8] c"src/uucore/src/lib/parser/parse_glob.rs" }>, align 1 @anon.da59c305f0f0aed4eca35e39d10eabc9.59 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.da59c305f0f0aed4eca35e39d10eabc9.58, [16 x i8] c"'\00\00\00\00\00\00\00\13\00\00\00\11\00\00\00" }>, align 8 @anon.da59c305f0f0aed4eca35e39d10eabc9.60 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.da59c305f0f0aed4eca35e39d10eabc9.58, [16 x i8] c"'\00\00\00\00\00\00\00\13\00\00\00$\00\00\00" }>, align 8 @@ -1493,10 +1495,10 @@ define void @_ZN6uucore8features6ranges5Range9from_list17h70bbf16599e55ca3E(ptr br label %26 26: ; preds = %3, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E.exit" - %.sroa.842.077 = phi ptr [ %1, %3 ], [ %.sroa.842.2.ph, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E.exit" ] - %.sroa.14.075 = phi i64 [ 0, %3 ], [ %.sroa.14.4.ph, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E.exit" ] - %.sroa.17.074 = phi i64 [ 0, %3 ], [ %.sroa.17.1.ph, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E.exit" ] - %27 = icmp eq ptr %.sroa.842.077, %18 + %.sroa.842.079 = phi ptr [ %1, %3 ], [ %.sroa.842.2.ph, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E.exit" ] + %.sroa.14.077 = phi i64 [ 0, %3 ], [ %.sroa.14.4.ph, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E.exit" ] + %.sroa.17.076 = phi i64 [ 0, %3 ], [ %.sroa.17.1.ph, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E.exit" ] + %27 = icmp eq ptr %.sroa.842.079, %18 br i1 %27, label %.loopexit71, label %.lr.ph.i.i .loopexit.i.i: ; preds = %71 @@ -1504,8 +1506,8 @@ define void @_ZN6uucore8features6ranges5Range9from_list17h70bbf16599e55ca3E(ptr br i1 %28, label %.loopexit71, label %.lr.ph.i.i .lr.ph.i.i: ; preds = %26, %.loopexit.i.i - %.sroa.14.1 = phi i64 [ %70, %.loopexit.i.i ], [ %.sroa.14.075, %26 ] - %29 = phi ptr [ %.sink13.i.i.i, %.loopexit.i.i ], [ %.sroa.842.077, %26 ] + %.sroa.14.1 = phi i64 [ %70, %.loopexit.i.i ], [ %.sroa.14.077, %26 ] + %29 = phi ptr [ %.sink13.i.i.i, %.loopexit.i.i ], [ %.sroa.842.079, %26 ] %30 = ptrtoint ptr %29 to i64 %31 = getelementptr inbounds i8, ptr %29, i64 1 %32 = load i8, ptr %29, align 1, !noalias !237, !noundef !13 @@ -1581,7 +1583,7 @@ define void @_ZN6uucore8features6ranges5Range9from_list17h70bbf16599e55ca3E(ptr .body: ; preds = %.noexc.i, %83, %87 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11), !noalias !255 - br label %140 + br label %146 74: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E.exit" call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13) @@ -1595,14 +1597,14 @@ define void @_ZN6uucore8features6ranges5Range9from_list17h70bbf16599e55ca3E(ptr %78 = load i64, ptr %77, align 8, !alias.scope !266, !noalias !265, !noundef !13 call void @llvm.lifetime.start.p0(i64 0, ptr nonnull %4), !noalias !267 invoke void @_ZN4core5slice4sort10merge_sort17h8ad7b542fb834e75E(ptr noalias noundef nonnull align 8 %76, i64 noundef %78, ptr noalias noundef nonnull align 1 %4) - to label %.split35.i unwind label %79, !noalias !267 + to label %89 unwind label %79, !noalias !267 -79: ; preds = %74 +79: ; preds = %111, %74 %80 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11), !noalias !255 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17he5813fa0a75b2090E.llvm.3307611119196902081"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %11, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %12) - to label %.noexc.i unwind label %108, !noalias !265 + to label %.noexc.i unwind label %114, !noalias !265 .noexc.i: ; preds = %79 %81 = getelementptr inbounds i8, ptr %11, i64 8 @@ -1621,219 +1623,228 @@ define void @_ZN6uucore8features6ranges5Range9from_list17h70bbf16599e55ca3E(ptr call void @__rust_dealloc(ptr noundef nonnull %88, i64 noundef %85, i64 noundef %82) #22, !noalias !265 br label %.body -.split35.i: ; preds = %74 +89: ; preds = %74 call void @llvm.lifetime.end.p0(i64 0, ptr nonnull %4), !noalias !267 - %.not38.i = icmp eq i64 %78, 0 - br i1 %.not38.i, label %.loopexit, label %.split.i - -.split.i: ; preds = %.split35.i, %._crit_edge.i - %.promoted = phi i64 [ %.promoted90, %._crit_edge.i ], [ %78, %.split35.i ] - %89 = phi i64 [ %100, %._crit_edge.i ], [ %78, %.split35.i ] - %.sroa.01.036.i = phi i64 [ %90, %._crit_edge.i ], [ 0, %.split35.i ] - %90 = add nuw i64 %.sroa.01.036.i, 1 - %91 = icmp ult i64 %90, %89 - br i1 %91, label %.lr.ph.preheader.i, label %._crit_edge.i - -.lr.ph.preheader.i: ; preds = %.split.i - %.phi.trans.insert.i = getelementptr inbounds [0 x { i64, i64 }], ptr %76, i64 0, i64 %.sroa.01.036.i, i32 1 + %.not39.i = icmp eq i64 %78, 0 + br i1 %.not39.i, label %.loopexit, label %.lr.ph37.i + +.lr.ph37.i: ; preds = %89, %._crit_edge.i + %.promoted = phi i64 [ %.promoted90, %._crit_edge.i ], [ %78, %89 ] + %90 = phi i64 [ %101, %._crit_edge.i ], [ %78, %89 ] + %.sroa.01.035.i = phi i64 [ %91, %._crit_edge.i ], [ 0, %89 ] + %91 = add nuw i64 %.sroa.01.035.i, 1 + %92 = icmp ult i64 %91, %90 + br i1 %92, label %.lr.ph.preheader.i, label %._crit_edge.i + +.lr.ph.preheader.i: ; preds = %.lr.ph37.i + %.phi.trans.insert.i = getelementptr inbounds [0 x { i64, i64 }], ptr %76, i64 0, i64 %.sroa.01.035.i, i32 1 %.pre.i = load i64, ptr %.phi.trans.insert.i, align 8, !noalias !267 - %92 = getelementptr inbounds [0 x { i64, i64 }], ptr %76, i64 0, i64 %90 - %93 = load i64, ptr %92, align 8, !noalias !267, !noundef !13 - %94 = add i64 %.pre.i, 1 - %.not.i78 = icmp ugt i64 %93, %94 - br i1 %.not.i78, label %._crit_edge.i.loopexit, label %.lr.ph + %93 = getelementptr inbounds [0 x { i64, i64 }], ptr %76, i64 0, i64 %91 + %94 = load i64, ptr %93, align 8, !noalias !267, !noundef !13 + %95 = add i64 %.pre.i, 1 + %.not.i81 = icmp ugt i64 %94, %95 + br i1 %.not.i81, label %._crit_edge.i.loopexit, label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader.i - %95 = getelementptr inbounds i8, ptr %92, i64 8 - %96 = getelementptr inbounds i8, ptr %92, i64 16 - br label %101 + %96 = getelementptr inbounds i8, ptr %93, i64 8 + %97 = getelementptr inbounds i8, ptr %93, i64 16 + br label %103 + +.lr.ph.i: ; preds = %112 + %98 = load i64, ptr %93, align 8, !noalias !267, !noundef !13 + %99 = add i64 %.0.sroa.speculated.i.i, 1 + %.not.i = icmp ugt i64 %98, %99 + br i1 %.not.i, label %._crit_edge.i.loopexit, label %103 + +._crit_edge.i.loopexit: ; preds = %112, %.lr.ph.i, %.lr.ph.preheader.i + %100 = phi i64 [ %.promoted, %.lr.ph.preheader.i ], [ %109, %.lr.ph.i ], [ %109, %112 ] + %.ph = phi i64 [ %90, %.lr.ph.preheader.i ], [ %109, %.lr.ph.i ], [ %109, %112 ] + store i64 %100, ptr %77, align 8 + br label %._crit_edge.i -.lr.ph.i: ; preds = %101 - %97 = load i64, ptr %92, align 8, !noalias !267, !noundef !13 - %98 = add i64 %.0.sroa.speculated.i.i, 1 - %.not.i = icmp ugt i64 %97, %98 - br i1 %.not.i, label %._crit_edge.i.loopexit.sink.split, label %101 +._crit_edge.i: ; preds = %._crit_edge.i.loopexit, %.lr.ph37.i + %.promoted90 = phi i64 [ %.promoted, %.lr.ph37.i ], [ %100, %._crit_edge.i.loopexit ] + %101 = phi i64 [ %90, %.lr.ph37.i ], [ %.ph, %._crit_edge.i.loopexit ] + %exitcond.not.i = icmp eq i64 %91, %78 + br i1 %exitcond.not.i, label %.loopexit, label %.lr.ph37.i -._crit_edge.i.loopexit.sink.split: ; preds = %101, %.lr.ph.i - store i64 %.0.sroa.speculated.i.i, ptr %.phi.trans.insert.i, align 8, !noalias !267 - br label %._crit_edge.i.loopexit +102: ; preds = %111 + unreachable -._crit_edge.i.loopexit: ; preds = %._crit_edge.i.loopexit.sink.split, %.lr.ph.preheader.i - %99 = phi i64 [ %.promoted, %.lr.ph.preheader.i ], [ %106, %._crit_edge.i.loopexit.sink.split ] - %.ph = phi i64 [ %89, %.lr.ph.preheader.i ], [ %106, %._crit_edge.i.loopexit.sink.split ] - store i64 %99, ptr %77, align 8 - br label %._crit_edge.i +103: ; preds = %.lr.ph, %.lr.ph.i + %104 = phi i64 [ %.pre.i, %.lr.ph ], [ %.0.sroa.speculated.i.i, %.lr.ph.i ] + %105 = phi i64 [ %90, %.lr.ph ], [ %109, %.lr.ph.i ] + %106 = load i64, ptr %96, align 8, !noalias !268, !noundef !13 + %reass.sub.i = sub i64 %105, %.sroa.01.035.i + %107 = shl i64 %reass.sub.i, 4 + %108 = add i64 %107, -32 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %93, ptr nonnull align 8 %97, i64 %108, i1 false), !noalias !268 + %109 = add i64 %105, -1 + %110 = icmp ult i64 %.sroa.01.035.i, %109 + br i1 %110, label %112, label %111, !prof !272 + +111: ; preds = %103 + store i64 %109, ptr %77, align 8 + invoke void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %.sroa.01.035.i, i64 noundef %109, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.da59c305f0f0aed4eca35e39d10eabc9.56) #20 + to label %102 unwind label %79, !noalias !267 + +112: ; preds = %103 + %.0.sroa.speculated.i.i = call noundef i64 @llvm.umax.i64(i64 %104, i64 %106) + store i64 %.0.sroa.speculated.i.i, ptr %.phi.trans.insert.i, align 8, !noalias !267 + %113 = icmp ult i64 %91, %109 + br i1 %113, label %.lr.ph.i, label %._crit_edge.i.loopexit -._crit_edge.i: ; preds = %._crit_edge.i.loopexit, %.split.i - %.promoted90 = phi i64 [ %.promoted, %.split.i ], [ %99, %._crit_edge.i.loopexit ] - %100 = phi i64 [ %89, %.split.i ], [ %.ph, %._crit_edge.i.loopexit ] - %exitcond.not.i = icmp eq i64 %90, %78 - br i1 %exitcond.not.i, label %.loopexit, label %.split.i - -101: ; preds = %.lr.ph, %.lr.ph.i - %.0.sroa.speculated.i.i83 = phi i64 [ %.pre.i, %.lr.ph ], [ %.0.sroa.speculated.i.i, %.lr.ph.i ] - %102 = phi i64 [ %89, %.lr.ph ], [ %106, %.lr.ph.i ] - %103 = load i64, ptr %95, align 8, !noalias !268, !noundef !13 - %reass.sub.i = sub i64 %102, %.sroa.01.036.i - %104 = shl i64 %reass.sub.i, 4 - %105 = add i64 %104, -32 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %92, ptr nonnull align 8 %96, i64 %105, i1 false), !noalias !268 - %106 = add i64 %102, -1 - %.0.sroa.speculated.i.i = call noundef i64 @llvm.umax.i64(i64 %.0.sroa.speculated.i.i83, i64 %103) - %107 = icmp ult i64 %90, %106 - br i1 %107, label %.lr.ph.i, label %._crit_edge.i.loopexit.sink.split - -108: ; preds = %79 - %109 = landingpad { ptr, i32 } +114: ; preds = %79 + %115 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #21, !noalias !265 unreachable .loopexit71: ; preds = %56, %.loopexit.i.i, %72, %26 - %.sroa.17.1.ph = phi i64 [ %.sroa.17.074, %26 ], [ %70, %72 ], [ %.sroa.17.074, %.loopexit.i.i ], [ %.sroa.17.074, %56 ] - %.sroa.14.4.ph = phi i64 [ %.sroa.14.075, %26 ], [ %70, %72 ], [ %.sroa.14.1, %56 ], [ %70, %.loopexit.i.i ] + %.sroa.17.1.ph = phi i64 [ %.sroa.17.076, %26 ], [ %70, %72 ], [ %.sroa.17.076, %.loopexit.i.i ], [ %.sroa.17.076, %56 ] + %.sroa.14.4.ph = phi i64 [ %.sroa.14.077, %26 ], [ %70, %72 ], [ %.sroa.14.1, %56 ], [ %70, %.loopexit.i.i ] %.sroa.27.1.ph = phi i1 [ true, %26 ], [ false, %72 ], [ true, %.loopexit.i.i ], [ true, %56 ] %.sroa.842.2.ph = phi ptr [ %18, %26 ], [ %.sink13.i.i.i, %72 ], [ %58, %56 ], [ %18, %.loopexit.i.i ] %.pn = phi i64 [ %2, %26 ], [ %.sroa.14.1, %72 ], [ %2, %.loopexit.i.i ], [ %2, %56 ] - %.sroa.0.0.i.ph = getelementptr inbounds i8, ptr %1, i64 %.sroa.17.074 - %.sroa.4.0.i.ph = sub i64 %.pn, %.sroa.17.074 + %.sroa.0.0.i.ph = getelementptr inbounds i8, ptr %1, i64 %.sroa.17.076 + %.sroa.4.0.i.ph = sub i64 %.pn, %.sroa.17.076 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) invoke void @"_ZN78_$LT$uucore..features..ranges..Range$u20$as$u20$core..str..traits..FromStr$GT$8from_str17h12c464303d9b27cfE"(ptr noalias nocapture noundef nonnull sret({ i64, [2 x i64] }) align 8 dereferenceable(24) %14, ptr noalias noundef nonnull readonly align 1 %.sroa.0.0.i.ph, i64 noundef %.sroa.4.0.i.ph) - to label %112 unwind label %141 + to label %118 unwind label %147 -.loopexit: ; preds = %._crit_edge.i, %.split35.i +.loopexit: ; preds = %._crit_edge.i, %89 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 8 dereferenceable(24) %12, i64 24, i1 false), !alias.scope !267 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) - %110 = getelementptr inbounds i8, ptr %0, i64 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %110, ptr noundef nonnull align 8 dereferenceable(24) %13, i64 24, i1 false) + %116 = getelementptr inbounds i8, ptr %0, i64 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %116, ptr noundef nonnull align 8 dereferenceable(24) %13, i64 24, i1 false) store i64 0, ptr %0, align 8 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) - br label %111 + br label %117 -111: ; preds = %"_ZN4core3ptr75drop_in_place$LT$alloc..vec..Vec$LT$uucore..features..ranges..Range$GT$$GT$17h2b41abbd8e33abaeE.exit", %.loopexit +117: ; preds = %"_ZN4core3ptr75drop_in_place$LT$alloc..vec..Vec$LT$uucore..features..ranges..Range$GT$$GT$17h2b41abbd8e33abaeE.exit", %.loopexit call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) ret void -112: ; preds = %.loopexit71 - call void @llvm.experimental.noalias.scope.decl(metadata !272) - %113 = load i64, ptr %14, align 8, !range !275, !alias.scope !272, !noalias !276, !noundef !13 - %trunc.i = trunc nuw i64 %113 to i1 - %114 = load i64, ptr %20, align 8, !alias.scope !272, !noalias !276, !noundef !13 - br i1 %trunc.i, label %116, label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit.thread" +118: ; preds = %.loopexit71 + call void @llvm.experimental.noalias.scope.decl(metadata !273) + %119 = load i64, ptr %14, align 8, !range !276, !alias.scope !273, !noalias !277, !noundef !13 + %trunc.i = trunc nuw i64 %119 to i1 + %120 = load i64, ptr %20, align 8, !alias.scope !273, !noalias !277, !noundef !13 + br i1 %trunc.i, label %122, label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit.thread" -"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit.thread": ; preds = %112 - %115 = load i64, ptr %19, align 8, !alias.scope !272, !noalias !276, !noundef !13 +"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit.thread": ; preds = %118 + %121 = load i64, ptr %19, align 8, !alias.scope !273, !noalias !277, !noundef !13 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) - br label %119 - -116: ; preds = %112 - %117 = load ptr, ptr %19, align 8, !alias.scope !272, !noalias !276, !nonnull !13, !align !279, !noundef !13 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10), !noalias !280 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9), !noalias !280 - store ptr %117, ptr %9, align 8, !noalias !281 - store i64 %114, ptr %21, align 8, !noalias !281 - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8), !noalias !281 - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7), !noalias !281 - store i64 0, ptr %7, align 8, !noalias !281 - store ptr %.sroa.0.0.i.ph, ptr %.sroa.44.0..sroa_idx.i.i, align 8, !noalias !281 - store i64 %.sroa.4.0.i.ph, ptr %.sroa.5.0..sroa_idx.i.i, align 8, !noalias !281 - store i8 1, ptr %22, align 8, !noalias !281 - store ptr %7, ptr %8, align 8, !noalias !281 - store ptr @"_ZN57_$LT$os_display..Quoted$u20$as$u20$core..fmt..Display$GT$3fmt17hc7575a8a53a92903E", ptr %23, align 8, !noalias !281 - store ptr %9, ptr %24, align 8, !noalias !281 - store ptr @"_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h4251bc0782d18e2eE", ptr %25, align 8, !noalias !281 - call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %6), !noalias !286 - store ptr @anon.da59c305f0f0aed4eca35e39d10eabc9.51, ptr %6, align 8, !noalias !297 - store i64 2, ptr %.sroa.5.0..sroa_idx5.i.i, align 8, !noalias !297 - store ptr %8, ptr %.sroa.7.0..sroa_idx.i.i, align 8, !noalias !297 - store i64 2, ptr %.sroa.8.0..sroa_idx.i.i, align 8, !noalias !297 - store ptr null, ptr %.sroa.10.0..sroa_idx.i.i, align 8, !noalias !297 + br label %125 + +122: ; preds = %118 + %123 = load ptr, ptr %19, align 8, !alias.scope !273, !noalias !277, !nonnull !13, !align !280, !noundef !13 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10), !noalias !281 + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9), !noalias !281 + store ptr %123, ptr %9, align 8, !noalias !282 + store i64 %120, ptr %21, align 8, !noalias !282 + call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8), !noalias !282 + call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7), !noalias !282 + store i64 0, ptr %7, align 8, !noalias !282 + store ptr %.sroa.0.0.i.ph, ptr %.sroa.44.0..sroa_idx.i.i, align 8, !noalias !282 + store i64 %.sroa.4.0.i.ph, ptr %.sroa.5.0..sroa_idx.i.i, align 8, !noalias !282 + store i8 1, ptr %22, align 8, !noalias !282 + store ptr %7, ptr %8, align 8, !noalias !282 + store ptr @"_ZN57_$LT$os_display..Quoted$u20$as$u20$core..fmt..Display$GT$3fmt17hc7575a8a53a92903E", ptr %23, align 8, !noalias !282 + store ptr %9, ptr %24, align 8, !noalias !282 + store ptr @"_ZN44_$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$3fmt17h4251bc0782d18e2eE", ptr %25, align 8, !noalias !282 + call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %6), !noalias !287 + store ptr @anon.da59c305f0f0aed4eca35e39d10eabc9.51, ptr %6, align 8, !noalias !298 + store i64 2, ptr %.sroa.5.0..sroa_idx5.i.i, align 8, !noalias !298 + store ptr %8, ptr %.sroa.7.0..sroa_idx.i.i, align 8, !noalias !298 + store i64 2, ptr %.sroa.8.0..sroa_idx.i.i, align 8, !noalias !298 + store ptr null, ptr %.sroa.10.0..sroa_idx.i.i, align 8, !noalias !298 invoke void @_ZN5alloc3fmt6format12format_inner17h20bbaee2ca87fbecE(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr, {} }, i64 } }) align 8 dereferenceable(24) %10, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %6) - to label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit" unwind label %141 - -"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit": ; preds = %116 - call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %6), !noalias !286 - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7), !noalias !281 - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8), !noalias !281 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9), !noalias !280 - %.sroa.046.0.copyload = load i64, ptr %10, align 8, !noalias !298 - %.sroa.547.0.copyload = load i64, ptr %.sroa.547.0..sroa_idx, align 8, !noalias !298 - %.sroa.848.0.copyload = load i64, ptr %.sroa.848.0..sroa_idx, align 8, !noalias !298 - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10), !noalias !280 + to label %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit" unwind label %147 + +"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit": ; preds = %122 + call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %6), !noalias !287 + call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7), !noalias !282 + call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8), !noalias !282 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9), !noalias !281 + %.sroa.046.0.copyload = load i64, ptr %10, align 8, !noalias !299 + %.sroa.547.0.copyload = load i64, ptr %.sroa.547.0..sroa_idx, align 8, !noalias !299 + %.sroa.848.0.copyload = load i64, ptr %.sroa.848.0..sroa_idx, align 8, !noalias !299 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10), !noalias !281 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) - %118 = icmp eq i64 %.sroa.046.0.copyload, -9223372036854775808 - br i1 %118, label %119, label %130 - -119: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit.thread", %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit" - %.sroa.848.070 = phi i64 [ %114, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit.thread" ], [ %.sroa.848.0.copyload, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit" ] - %.sroa.547.069 = phi i64 [ %115, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit.thread" ], [ %.sroa.547.0.copyload, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit" ] - %120 = load i64, ptr %17, align 8, !alias.scope !299, !noundef !13 - %121 = load i64, ptr %15, align 8, !alias.scope !299, !noundef !13 - %122 = icmp eq i64 %120, %121 - br i1 %122, label %123, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E.exit" - -123: ; preds = %119 - invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h4f00cef2620ee283E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %15, i64 noundef %120) - to label %.noexc41 unwind label %141 - -.noexc41: ; preds = %123 - %.pre.i40 = load i64, ptr %17, align 8, !alias.scope !299 + %124 = icmp eq i64 %.sroa.046.0.copyload, -9223372036854775808 + br i1 %124, label %125, label %136 + +125: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit.thread", %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit" + %.sroa.848.070 = phi i64 [ %120, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit.thread" ], [ %.sroa.848.0.copyload, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit" ] + %.sroa.547.069 = phi i64 [ %121, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit.thread" ], [ %.sroa.547.0.copyload, %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit" ] + %126 = load i64, ptr %17, align 8, !alias.scope !300, !noundef !13 + %127 = load i64, ptr %15, align 8, !alias.scope !300, !noundef !13 + %128 = icmp eq i64 %126, %127 + br i1 %128, label %129, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E.exit" + +129: ; preds = %125 + invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17h4f00cef2620ee283E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %15, i64 noundef %126) + to label %.noexc41 unwind label %147 + +.noexc41: ; preds = %129 + %.pre.i40 = load i64, ptr %17, align 8, !alias.scope !300 br label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E.exit" -"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E.exit": ; preds = %119, %.noexc41 - %124 = phi i64 [ %.pre.i40, %.noexc41 ], [ %120, %119 ] - %125 = load ptr, ptr %16, align 8, !alias.scope !299, !nonnull !13, !noundef !13 - %126 = getelementptr inbounds { i64, i64 }, ptr %125, i64 %124 - store i64 %.sroa.547.069, ptr %126, align 8 - %127 = getelementptr inbounds i8, ptr %126, i64 8 - store i64 %.sroa.848.070, ptr %127, align 8 - %128 = load i64, ptr %17, align 8, !alias.scope !299, !noundef !13 - %129 = add i64 %128, 1 - store i64 %129, ptr %17, align 8, !alias.scope !299 +"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E.exit": ; preds = %125, %.noexc41 + %130 = phi i64 [ %.pre.i40, %.noexc41 ], [ %126, %125 ] + %131 = load ptr, ptr %16, align 8, !alias.scope !300, !nonnull !13, !noundef !13 + %132 = getelementptr inbounds { i64, i64 }, ptr %131, i64 %130 + store i64 %.sroa.547.069, ptr %132, align 8 + %133 = getelementptr inbounds i8, ptr %132, i64 8 + store i64 %.sroa.848.070, ptr %133, align 8 + %134 = load i64, ptr %17, align 8, !alias.scope !300, !noundef !13 + %135 = add i64 %134, 1 + store i64 %135, ptr %17, align 8, !alias.scope !300 br i1 %.sroa.27.1.ph, label %74, label %26 -130: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit" - %131 = getelementptr inbounds i8, ptr %0, i64 8 - store i64 %.sroa.046.0.copyload, ptr %131, align 8 +136: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE.exit" + %137 = getelementptr inbounds i8, ptr %0, i64 8 + store i64 %.sroa.046.0.copyload, ptr %137, align 8 %.sroa.234.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 store i64 %.sroa.547.0.copyload, ptr %.sroa.234.0..sroa_idx, align 8 %.sroa.335.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 24 store i64 %.sroa.848.0.copyload, ptr %.sroa.335.0..sroa_idx, align 8 store i64 1, ptr %0, align 8 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5), !noalias !302 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5), !noalias !303 call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17he5813fa0a75b2090E.llvm.3307611119196902081"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %5, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %15) - %132 = getelementptr inbounds i8, ptr %5, i64 8 - %133 = load i64, ptr %132, align 8, !range !189, !noalias !302, !noundef !13 - %.not.i.i.i = icmp eq i64 %133, 0 - br i1 %.not.i.i.i, label %"_ZN4core3ptr75drop_in_place$LT$alloc..vec..Vec$LT$uucore..features..ranges..Range$GT$$GT$17h2b41abbd8e33abaeE.exit", label %134 - -134: ; preds = %130 - %135 = getelementptr inbounds i8, ptr %5, i64 16 - %136 = load i64, ptr %135, align 8, !noalias !302, !noundef !13 - %137 = icmp eq i64 %136, 0 - br i1 %137, label %"_ZN4core3ptr75drop_in_place$LT$alloc..vec..Vec$LT$uucore..features..ranges..Range$GT$$GT$17h2b41abbd8e33abaeE.exit", label %138 - -138: ; preds = %134 - %139 = load ptr, ptr %5, align 8, !noalias !302, !nonnull !13, !noundef !13 - call void @__rust_dealloc(ptr noundef nonnull %139, i64 noundef %136, i64 noundef %133) #22 + %138 = getelementptr inbounds i8, ptr %5, i64 8 + %139 = load i64, ptr %138, align 8, !range !189, !noalias !303, !noundef !13 + %.not.i.i.i = icmp eq i64 %139, 0 + br i1 %.not.i.i.i, label %"_ZN4core3ptr75drop_in_place$LT$alloc..vec..Vec$LT$uucore..features..ranges..Range$GT$$GT$17h2b41abbd8e33abaeE.exit", label %140 + +140: ; preds = %136 + %141 = getelementptr inbounds i8, ptr %5, i64 16 + %142 = load i64, ptr %141, align 8, !noalias !303, !noundef !13 + %143 = icmp eq i64 %142, 0 + br i1 %143, label %"_ZN4core3ptr75drop_in_place$LT$alloc..vec..Vec$LT$uucore..features..ranges..Range$GT$$GT$17h2b41abbd8e33abaeE.exit", label %144 + +144: ; preds = %140 + %145 = load ptr, ptr %5, align 8, !noalias !303, !nonnull !13, !noundef !13 + call void @__rust_dealloc(ptr noundef nonnull %145, i64 noundef %142, i64 noundef %139) #22 br label %"_ZN4core3ptr75drop_in_place$LT$alloc..vec..Vec$LT$uucore..features..ranges..Range$GT$$GT$17h2b41abbd8e33abaeE.exit" -"_ZN4core3ptr75drop_in_place$LT$alloc..vec..Vec$LT$uucore..features..ranges..Range$GT$$GT$17h2b41abbd8e33abaeE.exit": ; preds = %130, %134, %138 - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5), !noalias !302 - br label %111 +"_ZN4core3ptr75drop_in_place$LT$alloc..vec..Vec$LT$uucore..features..ranges..Range$GT$$GT$17h2b41abbd8e33abaeE.exit": ; preds = %136, %140, %144 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5), !noalias !303 + br label %117 -140: ; preds = %.body, %141 - %eh.lpad-body52 = phi { ptr, i32 } [ %142, %141 ], [ %80, %.body ] +146: ; preds = %.body, %147 + %eh.lpad-body52 = phi { ptr, i32 } [ %148, %147 ], [ %80, %.body ] resume { ptr, i32 } %eh.lpad-body52 -141: ; preds = %.loopexit71, %116, %123 - %142 = landingpad { ptr, i32 } +147: ; preds = %.loopexit71, %122, %129 + %148 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr75drop_in_place$LT$alloc..vec..Vec$LT$uucore..features..ranges..Range$GT$$GT$17h2b41abbd8e33abaeE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %15) #23 - to label %140 unwind label %143 + to label %146 unwind label %149 -143: ; preds = %141 - %144 = landingpad { ptr, i32 } +149: ; preds = %147 + %150 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #21 unreachable @@ -1889,7 +1900,7 @@ define void @_ZN6uucore8features6ranges10complement17h517318b1f899fd1cE(ptr noal %.0.lcssa23 = phi i64 [ %46, %._crit_edge ], [ 0, %3 ] %20 = phi i64 [ %44, %._crit_edge ], [ 0, %3 ] %21 = add nuw i64 %.0.lcssa23, 1 - %22 = load i64, ptr %4, align 8, !alias.scope !309, !noundef !13 + %22 = load i64, ptr %4, align 8, !alias.scope !310, !noundef !13 %23 = icmp eq i64 %20, %22 br i1 %23, label %24, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E.exit" @@ -1898,19 +1909,19 @@ define void @_ZN6uucore8features6ranges10complement17h517318b1f899fd1cE(ptr noal to label %.noexc unwind label %.loopexit.split-lp .noexc: ; preds = %24 - %.pre.i = load i64, ptr %10, align 8, !alias.scope !309 + %.pre.i = load i64, ptr %10, align 8, !alias.scope !310 br label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E.exit" "_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E.exit": ; preds = %._crit_edge.thread, %.noexc %25 = phi i64 [ %.pre.i, %.noexc ], [ %20, %._crit_edge.thread ] - %26 = load ptr, ptr %9, align 8, !alias.scope !309, !nonnull !13, !noundef !13 + %26 = load ptr, ptr %9, align 8, !alias.scope !310, !nonnull !13, !noundef !13 %27 = getelementptr inbounds { i64, i64 }, ptr %26, i64 %25 store i64 %21, ptr %27, align 8 %28 = getelementptr inbounds i8, ptr %27, i64 8 store i64 -2, ptr %28, align 8 - %29 = load i64, ptr %10, align 8, !alias.scope !309, !noundef !13 + %29 = load i64, ptr %10, align 8, !alias.scope !310, !noundef !13 %30 = add i64 %29, 1 - store i64 %30, ptr %10, align 8, !alias.scope !309 + store i64 %30, ptr %10, align 8, !alias.scope !310 br label %31 31: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E.exit", %._crit_edge @@ -1920,7 +1931,7 @@ define void @_ZN6uucore8features6ranges10complement17h517318b1f899fd1cE(ptr noal 32: ; preds = %.lr.ph %33 = add i64 %17, -1 - %34 = load i64, ptr %4, align 8, !alias.scope !312, !noundef !13 + %34 = load i64, ptr %4, align 8, !alias.scope !313, !noundef !13 %35 = icmp eq i64 %15, %34 br i1 %35, label %36, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E.exit16" @@ -1929,19 +1940,19 @@ define void @_ZN6uucore8features6ranges10complement17h517318b1f899fd1cE(ptr noal to label %.noexc15 unwind label %.loopexit .noexc15: ; preds = %36 - %.pre.i14 = load i64, ptr %10, align 8, !alias.scope !312 + %.pre.i14 = load i64, ptr %10, align 8, !alias.scope !313 br label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E.exit16" "_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E.exit16": ; preds = %32, %.noexc15 %37 = phi i64 [ %.pre.i14, %.noexc15 ], [ %15, %32 ] - %38 = load ptr, ptr %9, align 8, !alias.scope !312, !nonnull !13, !noundef !13 + %38 = load ptr, ptr %9, align 8, !alias.scope !313, !nonnull !13, !noundef !13 %39 = getelementptr inbounds { i64, i64 }, ptr %38, i64 %37 store i64 %18, ptr %39, align 8 %40 = getelementptr inbounds i8, ptr %39, i64 8 store i64 %33, ptr %40, align 8 - %41 = load i64, ptr %10, align 8, !alias.scope !312, !noundef !13 + %41 = load i64, ptr %10, align 8, !alias.scope !313, !noundef !13 %42 = add i64 %41, 1 - store i64 %42, ptr %10, align 8, !alias.scope !312 + store i64 %42, ptr %10, align 8, !alias.scope !313 br label %43 43: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E.exit16", %.lr.ph @@ -1996,14 +2007,14 @@ define void @_ZN6uucore6parser10parse_glob8from_str17hb352925bc8c38089E(ptr noal %6 = alloca { { i64, ptr, {} }, i64 }, align 8 %7 = alloca { { { i64, ptr, {} }, i64 } }, align 8 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6), !noalias !315 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6), !noalias !316 %8 = getelementptr inbounds i8, ptr %1, i64 %2 - call void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17hdd330c06e0f8d21cE.llvm.16339748825870905331"(ptr noalias nocapture noundef nonnull sret({ { i64, ptr, {} }, i64 }) align 8 dereferenceable(24) %6, ptr noundef nonnull readonly align 1 %1, ptr noundef nonnull readonly %8), !noalias !319 + call void @"_ZN111_$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter_nested..SpecFromIterNested$LT$T$C$I$GT$$GT$9from_iter17hdd330c06e0f8d21cE.llvm.16339748825870905331"(ptr noalias nocapture noundef nonnull sret({ { i64, ptr, {} }, i64 }) align 8 dereferenceable(24) %6, ptr noundef nonnull readonly align 1 %1, ptr noundef nonnull readonly %8), !noalias !320 %9 = getelementptr inbounds i8, ptr %6, i64 16 - %10 = load i64, ptr %9, align 8, !noalias !315, !noundef !13 + %10 = load i64, ptr %9, align 8, !noalias !316, !noundef !13 %11 = icmp ugt i64 %10, 3 %12 = getelementptr inbounds i8, ptr %6, i64 8 - %.pre.i = load ptr, ptr %12, align 8, !noalias !315 + %.pre.i = load ptr, ptr %12, align 8, !noalias !316 br i1 %11, label %.lr.ph.i, label %_ZN6uucore6parser10parse_glob12fix_negation17h99365c49fc9b1722E.exit .lr.ph.i: ; preds = %3 @@ -2015,22 +2026,22 @@ define void @_ZN6uucore6parser10parse_glob8from_str17hb352925bc8c38089E(ptr noal %15 = phi i64 [ 3, %.lr.ph.i ], [ %44, %.backedge.i ] %.03671.i = phi i64 [ 0, %.lr.ph.i ], [ %.036.be.i, %.backedge.i ] %16 = icmp ult i64 %.03671.i, %10 - br i1 %16, label %17, label %.invoke.i, !prof !320 + br i1 %16, label %17, label %.invoke.i, !prof !272 17: ; preds = %14 %18 = getelementptr inbounds [0 x i32], ptr %.pre.i, i64 0, i64 %.03671.i - %19 = load i32, ptr %18, align 4, !range !250, !noalias !319, !noundef !13 + %19 = load i32, ptr %18, align 4, !range !250, !noalias !320, !noundef !13 %20 = icmp eq i32 %19, 91 %21 = add nuw i64 %.03671.i, 1 br i1 %20, label %22, label %.backedge.i 22: ; preds = %17 %23 = icmp ult i64 %21, %10 - br i1 %23, label %24, label %.invoke.i, !prof !320 + br i1 %23, label %24, label %.invoke.i, !prof !272 24: ; preds = %22 %25 = getelementptr inbounds [0 x i32], ptr %.pre.i, i64 0, i64 %21 - %26 = load i32, ptr %25, align 4, !range !250, !noalias !319, !noundef !13 + %26 = load i32, ptr %25, align 4, !range !250, !noalias !320, !noundef !13 %27 = icmp eq i32 %26, 94 br i1 %27, label %30, label %.backedge.i @@ -2038,7 +2049,7 @@ define void @_ZN6uucore6parser10parse_glob8from_str17hb352925bc8c38089E(ptr noal %28 = phi i64 [ %.03671.i, %14 ], [ %21, %22 ] %29 = phi ptr [ @anon.da59c305f0f0aed4eca35e39d10eabc9.59, %14 ], [ @anon.da59c305f0f0aed4eca35e39d10eabc9.60, %22 ] invoke void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %28, i64 noundef %10, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %29) #20 - to label %.cont.i unwind label %46, !noalias !319 + to label %.cont.i unwind label %46, !noalias !320 .cont.i: ; preds = %.invoke.i unreachable @@ -2070,7 +2081,7 @@ define void @_ZN6uucore6parser10parse_glob8from_str17hb352925bc8c38089E(ptr noal 40: ; preds = %.lr.ph.i.i %41 = icmp samesign ult i64 %.010.i.i, %31 tail call void @llvm.assume(i1 %41) - store i32 33, ptr %25, align 4, !noalias !319 + store i32 33, ptr %25, align 4, !noalias !320 %42 = add i64 %.03671.i, 4 %43 = add i64 %42, %.010.i.i br label %.backedge.i @@ -2089,17 +2100,17 @@ common.resume: ; preds = %57, %46 %lpad.thr_comm.i = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr48drop_in_place$LT$alloc..vec..Vec$LT$char$GT$$GT$17h8831d7013b4c577dE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6) #23 - to label %common.resume unwind label %47, !noalias !319 + to label %common.resume unwind label %47, !noalias !320 47: ; preds = %46 %48 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #21, !noalias !319 + call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #21, !noalias !320 unreachable _ZN6uucore6parser10parse_glob12fix_negation17h99365c49fc9b1722E.exit: ; preds = %30, %.backedge.i, %36, %3 - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5), !noalias !315 - %.sroa.042.0.copyload.i = load i64, ptr %6, align 8, !noalias !315 + call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5), !noalias !316 + %.sroa.042.0.copyload.i = load i64, ptr %6, align 8, !noalias !316 %49 = getelementptr inbounds i32, ptr %.pre.i, i64 %10 store ptr %.pre.i, ptr %5, align 8, !alias.scope !324, !noalias !327 %50 = getelementptr inbounds i8, ptr %5, i64 16 @@ -2109,8 +2120,8 @@ _ZN6uucore6parser10parse_glob12fix_negation17h99365c49fc9b1722E.exit: ; preds = %52 = getelementptr inbounds i8, ptr %5, i64 24 store ptr %49, ptr %52, align 8, !alias.scope !324, !noalias !327 call void @"_ZN95_$LT$alloc..string..String$u20$as$u20$core..iter..traits..collect..FromIterator$LT$char$GT$$GT$9from_iter17h11c01ad718e74363E"(ptr noalias nocapture noundef nonnull sret({ { { i64, ptr, {} }, i64 } }) align 8 dereferenceable(24) %7, ptr noalias nocapture noundef nonnull align 8 dereferenceable(32) %5) - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5), !noalias !315 - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6), !noalias !315 + call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5), !noalias !316 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6), !noalias !316 %53 = getelementptr inbounds i8, ptr %7, i64 8 %54 = load ptr, ptr %53, align 8, !nonnull !13, !noundef !13 %55 = getelementptr inbounds i8, ptr %7, i64 16 @@ -2599,62 +2610,62 @@ attributes #23 = { cold } !269 = distinct !{!269, !270, !"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6remove17he568c37258f53127E: argument 0"} !270 = distinct !{!270, !"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6remove17he568c37258f53127E"} !271 = distinct !{!271, !270, !"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6remove17he568c37258f53127E: argument 1"} -!272 = !{!273} -!273 = distinct !{!273, !274, !"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE: argument 1"} -!274 = distinct !{!274, !"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE"} -!275 = !{i64 0, i64 2} -!276 = !{!277, !278} -!277 = distinct !{!277, !274, !"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE: argument 0"} -!278 = distinct !{!278, !274, !"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE: argument 2"} -!279 = !{i64 1} -!280 = !{!277, !273, !278} -!281 = !{!282, !284, !285, !277, !273, !278} -!282 = distinct !{!282, !283, !"_ZN6uucore8features6ranges5Range9from_list28_$u7b$$u7b$closure$u7d$$u7d$17h8781908009c5442aE: argument 0"} -!283 = distinct !{!283, !"_ZN6uucore8features6ranges5Range9from_list28_$u7b$$u7b$closure$u7d$$u7d$17h8781908009c5442aE"} -!284 = distinct !{!284, !283, !"_ZN6uucore8features6ranges5Range9from_list28_$u7b$$u7b$closure$u7d$$u7d$17h8781908009c5442aE: argument 1"} -!285 = distinct !{!285, !283, !"_ZN6uucore8features6ranges5Range9from_list28_$u7b$$u7b$closure$u7d$$u7d$17h8781908009c5442aE: argument 2"} -!286 = !{!287, !289, !290, !292, !293, !294, !296, !282, !284, !285, !277, !273, !278} -!287 = distinct !{!287, !288, !"_ZN5alloc3fmt6format28_$u7b$$u7b$closure$u7d$$u7d$17hbf590de69589b11cE: argument 0"} -!288 = distinct !{!288, !"_ZN5alloc3fmt6format28_$u7b$$u7b$closure$u7d$$u7d$17hbf590de69589b11cE"} -!289 = distinct !{!289, !288, !"_ZN5alloc3fmt6format28_$u7b$$u7b$closure$u7d$$u7d$17hbf590de69589b11cE: argument 1"} -!290 = distinct !{!290, !291, !"_ZN4core6option15Option$LT$T$GT$11map_or_else17hc36d58ec3b625d08E: argument 0"} -!291 = distinct !{!291, !"_ZN4core6option15Option$LT$T$GT$11map_or_else17hc36d58ec3b625d08E"} -!292 = distinct !{!292, !291, !"_ZN4core6option15Option$LT$T$GT$11map_or_else17hc36d58ec3b625d08E: argument 1"} -!293 = distinct !{!293, !291, !"_ZN4core6option15Option$LT$T$GT$11map_or_else17hc36d58ec3b625d08E: argument 2"} -!294 = distinct !{!294, !295, !"_ZN5alloc3fmt6format17h7ead8f60e83381d7E: argument 0"} -!295 = distinct !{!295, !"_ZN5alloc3fmt6format17h7ead8f60e83381d7E"} -!296 = distinct !{!296, !295, !"_ZN5alloc3fmt6format17h7ead8f60e83381d7E: argument 1"} -!297 = !{!287, !290, !292, !294, !282, !284, !285, !277, !273, !278} -!298 = !{!273, !278} -!299 = !{!300} -!300 = distinct !{!300, !301, !"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E: argument 0"} -!301 = distinct !{!301, !"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E"} -!302 = !{!303, !305, !307} -!303 = distinct !{!303, !304, !"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdfd8722d2486d57cE.llvm.3307611119196902081: argument 0"} -!304 = distinct !{!304, !"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdfd8722d2486d57cE.llvm.3307611119196902081"} -!305 = distinct !{!305, !306, !"_ZN4core3ptr82drop_in_place$LT$alloc..raw_vec..RawVec$LT$uucore..features..ranges..Range$GT$$GT$17h974ab778084cd36eE.llvm.3307611119196902081: argument 0"} -!306 = distinct !{!306, !"_ZN4core3ptr82drop_in_place$LT$alloc..raw_vec..RawVec$LT$uucore..features..ranges..Range$GT$$GT$17h974ab778084cd36eE.llvm.3307611119196902081"} -!307 = distinct !{!307, !308, !"_ZN4core3ptr75drop_in_place$LT$alloc..vec..Vec$LT$uucore..features..ranges..Range$GT$$GT$17h2b41abbd8e33abaeE: argument 0"} -!308 = distinct !{!308, !"_ZN4core3ptr75drop_in_place$LT$alloc..vec..Vec$LT$uucore..features..ranges..Range$GT$$GT$17h2b41abbd8e33abaeE"} -!309 = !{!310} -!310 = distinct !{!310, !311, !"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E: argument 0"} -!311 = distinct !{!311, !"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E"} -!312 = !{!313} -!313 = distinct !{!313, !314, !"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E: argument 0"} -!314 = distinct !{!314, !"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E"} -!315 = !{!316, !318} -!316 = distinct !{!316, !317, !"_ZN6uucore6parser10parse_glob12fix_negation17h99365c49fc9b1722E: argument 0"} -!317 = distinct !{!317, !"_ZN6uucore6parser10parse_glob12fix_negation17h99365c49fc9b1722E"} -!318 = distinct !{!318, !317, !"_ZN6uucore6parser10parse_glob12fix_negation17h99365c49fc9b1722E: argument 1"} -!319 = !{!316} -!320 = !{!"branch_weights", !"expected", i32 2000, i32 1} -!321 = !{!322, !316} +!272 = !{!"branch_weights", !"expected", i32 2000, i32 1} +!273 = !{!274} +!274 = distinct !{!274, !275, !"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE: argument 1"} +!275 = distinct !{!275, !"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE"} +!276 = !{i64 0, i64 2} +!277 = !{!278, !279} +!278 = distinct !{!278, !275, !"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE: argument 0"} +!279 = distinct !{!279, !275, !"_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcaa2fadaaed0a09eE: argument 2"} +!280 = !{i64 1} +!281 = !{!278, !274, !279} +!282 = !{!283, !285, !286, !278, !274, !279} +!283 = distinct !{!283, !284, !"_ZN6uucore8features6ranges5Range9from_list28_$u7b$$u7b$closure$u7d$$u7d$17h8781908009c5442aE: argument 0"} +!284 = distinct !{!284, !"_ZN6uucore8features6ranges5Range9from_list28_$u7b$$u7b$closure$u7d$$u7d$17h8781908009c5442aE"} +!285 = distinct !{!285, !284, !"_ZN6uucore8features6ranges5Range9from_list28_$u7b$$u7b$closure$u7d$$u7d$17h8781908009c5442aE: argument 1"} +!286 = distinct !{!286, !284, !"_ZN6uucore8features6ranges5Range9from_list28_$u7b$$u7b$closure$u7d$$u7d$17h8781908009c5442aE: argument 2"} +!287 = !{!288, !290, !291, !293, !294, !295, !297, !283, !285, !286, !278, !274, !279} +!288 = distinct !{!288, !289, !"_ZN5alloc3fmt6format28_$u7b$$u7b$closure$u7d$$u7d$17hbf590de69589b11cE: argument 0"} +!289 = distinct !{!289, !"_ZN5alloc3fmt6format28_$u7b$$u7b$closure$u7d$$u7d$17hbf590de69589b11cE"} +!290 = distinct !{!290, !289, !"_ZN5alloc3fmt6format28_$u7b$$u7b$closure$u7d$$u7d$17hbf590de69589b11cE: argument 1"} +!291 = distinct !{!291, !292, !"_ZN4core6option15Option$LT$T$GT$11map_or_else17hc36d58ec3b625d08E: argument 0"} +!292 = distinct !{!292, !"_ZN4core6option15Option$LT$T$GT$11map_or_else17hc36d58ec3b625d08E"} +!293 = distinct !{!293, !292, !"_ZN4core6option15Option$LT$T$GT$11map_or_else17hc36d58ec3b625d08E: argument 1"} +!294 = distinct !{!294, !292, !"_ZN4core6option15Option$LT$T$GT$11map_or_else17hc36d58ec3b625d08E: argument 2"} +!295 = distinct !{!295, !296, !"_ZN5alloc3fmt6format17h7ead8f60e83381d7E: argument 0"} +!296 = distinct !{!296, !"_ZN5alloc3fmt6format17h7ead8f60e83381d7E"} +!297 = distinct !{!297, !296, !"_ZN5alloc3fmt6format17h7ead8f60e83381d7E: argument 1"} +!298 = !{!288, !291, !293, !295, !283, !285, !286, !278, !274, !279} +!299 = !{!274, !279} +!300 = !{!301} +!301 = distinct !{!301, !302, !"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E: argument 0"} +!302 = distinct !{!302, !"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E"} +!303 = !{!304, !306, !308} +!304 = distinct !{!304, !305, !"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdfd8722d2486d57cE.llvm.3307611119196902081: argument 0"} +!305 = distinct !{!305, !"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hdfd8722d2486d57cE.llvm.3307611119196902081"} +!306 = distinct !{!306, !307, !"_ZN4core3ptr82drop_in_place$LT$alloc..raw_vec..RawVec$LT$uucore..features..ranges..Range$GT$$GT$17h974ab778084cd36eE.llvm.3307611119196902081: argument 0"} +!307 = distinct !{!307, !"_ZN4core3ptr82drop_in_place$LT$alloc..raw_vec..RawVec$LT$uucore..features..ranges..Range$GT$$GT$17h974ab778084cd36eE.llvm.3307611119196902081"} +!308 = distinct !{!308, !309, !"_ZN4core3ptr75drop_in_place$LT$alloc..vec..Vec$LT$uucore..features..ranges..Range$GT$$GT$17h2b41abbd8e33abaeE: argument 0"} +!309 = distinct !{!309, !"_ZN4core3ptr75drop_in_place$LT$alloc..vec..Vec$LT$uucore..features..ranges..Range$GT$$GT$17h2b41abbd8e33abaeE"} +!310 = !{!311} +!311 = distinct !{!311, !312, !"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E: argument 0"} +!312 = distinct !{!312, !"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E"} +!313 = !{!314} +!314 = distinct !{!314, !315, !"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E: argument 0"} +!315 = distinct !{!315, !"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17he97175bf1bfbf2d4E"} +!316 = !{!317, !319} +!317 = distinct !{!317, !318, !"_ZN6uucore6parser10parse_glob12fix_negation17h99365c49fc9b1722E: argument 0"} +!318 = distinct !{!318, !"_ZN6uucore6parser10parse_glob12fix_negation17h99365c49fc9b1722E"} +!319 = distinct !{!319, !318, !"_ZN6uucore6parser10parse_glob12fix_negation17h99365c49fc9b1722E: argument 1"} +!320 = !{!317} +!321 = !{!322, !317} !322 = distinct !{!322, !323, !"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8position17h44a3402926673de2E: argument 0"} !323 = distinct !{!323, !"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8position17h44a3402926673de2E"} !324 = !{!325} !325 = distinct !{!325, !326, !"_ZN90_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17h3887f422f41978b2E: argument 0"} !326 = distinct !{!326, !"_ZN90_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17h3887f422f41978b2E"} -!327 = !{!328, !316, !318} +!327 = !{!328, !317, !319} !328 = distinct !{!328, !326, !"_ZN90_$LT$alloc..vec..Vec$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..collect..IntoIterator$GT$9into_iter17h3887f422f41978b2E: argument 1"} !329 = !{!330, !332, !334, !336} !330 = distinct !{!330, !331, !"_ZN77_$LT$alloc..raw_vec..RawVec$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h8309910008a03fdfE.llvm.3307611119196902081: argument 0"} diff --git a/bench/csmith/optimized/Variable.cpp.ll b/bench/csmith/optimized/Variable.cpp.ll index 1fd548b9b0c..089f4af3241 100644 --- a/bench/csmith/optimized/Variable.cpp.ll +++ b/bench/csmith/optimized/Variable.cpp.ll @@ -1702,21 +1702,18 @@ define dso_local noundef zeroext i1 @_Z19equal_variable_setsRKSt6vectorIPK8Varia .lr.ph: ; preds = %.preheader %.not.i = icmp eq ptr %11, %12 - br i1 %.not.i, label %_Z18is_variable_in_setRKSt6vectorIPK8VariableSaIS2_EES2_.exit.thread, label %.lr.ph.preheader.i.preheader - -.lr.ph.preheader.i.preheader: ; preds = %.lr.ph - %umax = tail call i64 @llvm.umax.i64(i64 %9, i64 1) - br label %.lr.ph.preheader.i + %umax.i = tail call i64 @llvm.umax.i64(i64 %9, i64 1) + br i1 %.not.i, label %_Z18is_variable_in_setRKSt6vectorIPK8VariableSaIS2_EES2_.exit.thread, label %.lr.ph.preheader.i -.lr.ph.preheader.i: ; preds = %.lr.ph.preheader.i.preheader, %_Z18is_variable_in_setRKSt6vectorIPK8VariableSaIS2_EES2_.exit - %.011 = phi i64 [ %24, %_Z18is_variable_in_setRKSt6vectorIPK8VariableSaIS2_EES2_.exit ], [ 0, %.lr.ph.preheader.i.preheader ] +.lr.ph.preheader.i: ; preds = %.lr.ph, %_Z18is_variable_in_setRKSt6vectorIPK8VariableSaIS2_EES2_.exit + %.011 = phi i64 [ %24, %_Z18is_variable_in_setRKSt6vectorIPK8VariableSaIS2_EES2_.exit ], [ 0, %.lr.ph ] %17 = getelementptr inbounds ptr, ptr %5, i64 %.011 %18 = load ptr, ptr %17, align 8 br label %.lr.ph.i 19: ; preds = %.lr.ph.i %20 = add nuw i64 %.07.i, 1 - %exitcond.not.i = icmp eq i64 %20, %9 + %exitcond.not.i = icmp eq i64 %20, %umax.i br i1 %exitcond.not.i, label %_Z18is_variable_in_setRKSt6vectorIPK8VariableSaIS2_EES2_.exit.thread, label %.lr.ph.i, !llvm.loop !12 .lr.ph.i: ; preds = %19, %.lr.ph.preheader.i @@ -1728,7 +1725,7 @@ define dso_local noundef zeroext i1 @_Z19equal_variable_setsRKSt6vectorIPK8Varia _Z18is_variable_in_setRKSt6vectorIPK8VariableSaIS2_EES2_.exit: ; preds = %.lr.ph.i %24 = add nuw i64 %.011, 1 - %exitcond.not = icmp eq i64 %24, %umax + %exitcond.not = icmp eq i64 %24, %umax.i br i1 %exitcond.not, label %_Z18is_variable_in_setRKSt6vectorIPK8VariableSaIS2_EES2_.exit.thread, label %.lr.ph.preheader.i, !llvm.loop !14 _Z18is_variable_in_setRKSt6vectorIPK8VariableSaIS2_EES2_.exit.thread: ; preds = %_Z18is_variable_in_setRKSt6vectorIPK8VariableSaIS2_EES2_.exit, %19, %.preheader, %.lr.ph, %2 @@ -1761,6 +1758,7 @@ define dso_local noundef zeroext i1 @_Z17sub_variable_setsRKSt6vectorIPK8Variabl .lr.ph: ; preds = %.preheader %.not.i = icmp eq ptr %11, %12 + %umax.i = tail call i64 @llvm.umax.i64(i64 %16, i64 1) br i1 %.not.i, label %_Z18is_variable_in_setRKSt6vectorIPK8VariableSaIS2_EES2_.exit.thread, label %.lr.ph.preheader.i.preheader .lr.ph.preheader.i.preheader: ; preds = %.lr.ph @@ -1775,7 +1773,7 @@ define dso_local noundef zeroext i1 @_Z17sub_variable_setsRKSt6vectorIPK8Variabl 19: ; preds = %.lr.ph.i %20 = add nuw i64 %.07.i, 1 - %exitcond.not.i = icmp eq i64 %20, %16 + %exitcond.not.i = icmp eq i64 %20, %umax.i br i1 %exitcond.not.i, label %_Z18is_variable_in_setRKSt6vectorIPK8VariableSaIS2_EES2_.exit.thread, label %.lr.ph.i, !llvm.loop !12 .lr.ph.i: ; preds = %19, %.lr.ph.preheader.i diff --git a/bench/darktable/optimized/RawDecoder.cpp.ll b/bench/darktable/optimized/RawDecoder.cpp.ll index 20f52aa3697..14a43a278a6 100644 --- a/bench/darktable/optimized/RawDecoder.cpp.ll +++ b/bench/darktable/optimized/RawDecoder.cpp.ll @@ -320,441 +320,447 @@ define hidden void @_ZNK8rawspeed10RawDecoder18decodeUncompressedEPKNS_7TiffIFDE unreachable 56: ; preds = %54, %54 - %57 = mul nuw nsw i64 %50, 12 - %58 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %57) #29 - %59 = getelementptr inbounds %"struct.rawspeed::RawDecoder::RawSlice", ptr %58, i64 %50 - %60 = getelementptr inbounds i8, ptr %0, i64 40 - br label %63 - -61: ; preds = %132 - %62 = icmp eq ptr %135, %136 - br i1 %62, label %140, label %144 - -63: ; preds = %132, %56 - %64 = phi i32 [ 0, %56 ], [ %81, %132 ] - %65 = phi i32 [ 0, %56 ], [ %137, %132 ] - %66 = phi ptr [ %58, %56 ], [ %135, %132 ] - %67 = phi ptr [ %58, %56 ], [ %136, %132 ] - %68 = phi ptr [ %59, %56 ], [ %133, %132 ] - %69 = invoke noundef i32 @_ZNK8rawspeed9TiffEntry6getU32Ej(ptr noundef nonnull align 8 dereferenceable(52) %8, i32 noundef %65) - to label %70 unwind label %76 - -70: ; preds = %63 - %71 = invoke noundef i32 @_ZNK8rawspeed9TiffEntry6getU32Ej(ptr noundef nonnull align 8 dereferenceable(52) %9, i32 noundef %65) - to label %72 unwind label %76 + %57 = icmp eq i32 %33, 0 + br i1 %57, label %142, label %58 + +58: ; preds = %56 + %59 = mul nuw nsw i64 %50, 12 + %60 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %59) #29 + %61 = getelementptr inbounds %"struct.rawspeed::RawDecoder::RawSlice", ptr %60, i64 %50 + %62 = getelementptr inbounds i8, ptr %0, i64 40 + br label %65 -72: ; preds = %70 - %73 = icmp eq i32 %71, 0 - br i1 %73, label %74, label %80 +63: ; preds = %134 + %64 = icmp eq ptr %137, %138 + br i1 %64, label %142, label %148 + +65: ; preds = %134, %58 + %66 = phi i32 [ 0, %58 ], [ %83, %134 ] + %67 = phi i32 [ 0, %58 ], [ %139, %134 ] + %68 = phi ptr [ %60, %58 ], [ %137, %134 ] + %69 = phi ptr [ %60, %58 ], [ %138, %134 ] + %70 = phi ptr [ %61, %58 ], [ %135, %134 ] + %71 = invoke noundef i32 @_ZNK8rawspeed9TiffEntry6getU32Ej(ptr noundef nonnull align 8 dereferenceable(52) %8, i32 noundef %67) + to label %72 unwind label %78 + +72: ; preds = %65 + %73 = invoke noundef i32 @_ZNK8rawspeed9TiffEntry6getU32Ej(ptr noundef nonnull align 8 dereferenceable(52) %9, i32 noundef %67) + to label %74 unwind label %78 74: ; preds = %72 - invoke void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_19RawDecoderExceptionEEEvPKcz(ptr noundef nonnull @.str.4, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK8rawspeed10RawDecoder18decodeUncompressedEPKNS_7TiffIFDENS_8BitOrderE, i32 noundef %65) #20 - to label %75 unwind label %78 + %75 = icmp eq i32 %73, 0 + br i1 %75, label %76, label %82 + +76: ; preds = %74 + invoke void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_19RawDecoderExceptionEEEvPKcz(ptr noundef nonnull @.str.4, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK8rawspeed10RawDecoder18decodeUncompressedEPKNS_7TiffIFDENS_8BitOrderE, i32 noundef %67) #20 + to label %77 unwind label %80 -75: ; preds = %74 +77: ; preds = %76 unreachable -76: ; preds = %113, %70, %63 - %77 = landingpad { ptr, i32 } +78: ; preds = %115, %72, %65 + %79 = landingpad { ptr, i32 } cleanup - br label %287 + br label %291 -78: ; preds = %103, %91, %74 - %79 = landingpad { ptr, i32 } +80: ; preds = %105, %93, %76 + %81 = landingpad { ptr, i32 } cleanup - br label %287 + br label %291 -80: ; preds = %72 - %81 = add i32 %64, %11 - %82 = icmp ugt i32 %81, %15 - %83 = sub i32 %15, %64 - %84 = select i1 %82, i32 %83, i32 %11 - %85 = zext i32 %69 to i64 - %86 = zext i32 %71 to i64 - %87 = add nuw nsw i64 %86, %85 - %88 = load i32, ptr %60, align 8, !tbaa !109 - %89 = zext i32 %88 to i64 - %90 = icmp samesign ugt i64 %87, %89 - br i1 %90, label %91, label %93 - -91: ; preds = %80 +82: ; preds = %74 + %83 = add i32 %66, %11 + %84 = icmp ugt i32 %83, %15 + %85 = sub i32 %15, %66 + %86 = select i1 %84, i32 %85, i32 %11 + %87 = zext i32 %71 to i64 + %88 = zext i32 %73 to i64 + %89 = add nuw nsw i64 %88, %87 + %90 = load i32, ptr %62, align 8, !tbaa !109 + %91 = zext i32 %90 to i64 + %92 = icmp samesign ugt i64 %89, %91 + br i1 %92, label %93, label %95 + +93: ; preds = %82 invoke void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_19RawDecoderExceptionEEEvPKcz(ptr noundef nonnull @.str.5, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK8rawspeed10RawDecoder18decodeUncompressedEPKNS_7TiffIFDENS_8BitOrderE) #20 - to label %92 unwind label %78 + to label %94 unwind label %80 -92: ; preds = %91 +94: ; preds = %93 unreachable -93: ; preds = %80 - %94 = icmp eq ptr %67, %68 - br i1 %94, label %98, label %95 - -95: ; preds = %93 - store i32 %84, ptr %67, align 4, !tbaa !31 - %96 = getelementptr inbounds i8, ptr %67, i64 4 - store i32 %69, ptr %96, align 4, !tbaa !31 - %97 = getelementptr inbounds i8, ptr %67, i64 8 - store i32 %71, ptr %97, align 4, !tbaa !31 - br label %132 - -98: ; preds = %93 - %99 = ptrtoint ptr %67 to i64 - %100 = ptrtoint ptr %66 to i64 - %101 = sub i64 %99, %100 - %102 = icmp eq i64 %101, 9223372036854775800 - br i1 %102, label %103, label %105 - -103: ; preds = %98 +95: ; preds = %82 + %96 = icmp eq ptr %69, %70 + br i1 %96, label %100, label %97 + +97: ; preds = %95 + store i32 %86, ptr %69, align 4, !tbaa !31 + %98 = getelementptr inbounds i8, ptr %69, i64 4 + store i32 %71, ptr %98, align 4, !tbaa !31 + %99 = getelementptr inbounds i8, ptr %69, i64 8 + store i32 %73, ptr %99, align 4, !tbaa !31 + br label %134 + +100: ; preds = %95 + %101 = ptrtoint ptr %69 to i64 + %102 = ptrtoint ptr %68 to i64 + %103 = sub i64 %101, %102 + %104 = icmp eq i64 %103, 9223372036854775800 + br i1 %104, label %105, label %107 + +105: ; preds = %100 invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.28) #31 - to label %104 unwind label %78 + to label %106 unwind label %80 -104: ; preds = %103 +106: ; preds = %105 unreachable -105: ; preds = %98 - %106 = sdiv exact i64 %101, 12 - %107 = tail call i64 @llvm.umax.i64(i64 %106, i64 1) - %108 = add nsw i64 %107, %106 - %109 = icmp ult i64 %108, %106 - %110 = tail call i64 @llvm.umin.i64(i64 %108, i64 768614336404564650) - %111 = select i1 %109, i64 768614336404564650, i64 %110 - %112 = icmp eq i64 %111, 0 - br i1 %112, label %116, label %113 - -113: ; preds = %105 - %114 = mul nuw nsw i64 %111, 12 - %115 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %114) #29 - to label %116 unwind label %76 - -116: ; preds = %113, %105 - %117 = phi ptr [ null, %105 ], [ %115, %113 ] - %118 = getelementptr inbounds %"struct.rawspeed::RawDecoder::RawSlice", ptr %117, i64 %106 - store i32 %84, ptr %118, align 4, !tbaa !31 - %119 = getelementptr inbounds i8, ptr %118, i64 4 - store i32 %69, ptr %119, align 4, !tbaa !31 - %120 = getelementptr inbounds i8, ptr %118, i64 8 - store i32 %71, ptr %120, align 4, !tbaa !31 - %121 = icmp eq ptr %66, %67 - br i1 %121, label %.loopexit, label %.preheader - -.preheader: ; preds = %116, %.preheader - %122 = phi ptr [ %125, %.preheader ], [ %117, %116 ] - %123 = phi ptr [ %124, %.preheader ], [ %66, %116 ] - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %122, ptr noundef nonnull align 4 dereferenceable(12) %123, i64 12, i1 false), !tbaa.struct !110, !alias.scope !111 - %124 = getelementptr inbounds i8, ptr %123, i64 12 - %125 = getelementptr inbounds i8, ptr %122, i64 12 - %126 = icmp eq ptr %124, %67 - br i1 %126, label %.loopexit, label %.preheader, !llvm.loop !115 - -.loopexit: ; preds = %.preheader, %116 - %127 = phi ptr [ %117, %116 ], [ %125, %.preheader ] - %128 = icmp eq ptr %66, null - br i1 %128, label %130, label %129 - -129: ; preds = %.loopexit - tail call void @_ZdlPv(ptr noundef nonnull %66) #30 - br label %130 - -130: ; preds = %129, %.loopexit - %131 = getelementptr inbounds %"struct.rawspeed::RawDecoder::RawSlice", ptr %117, i64 %111 +107: ; preds = %100 + %108 = sdiv exact i64 %103, 12 + %109 = tail call i64 @llvm.umax.i64(i64 %108, i64 1) + %110 = add nsw i64 %109, %108 + %111 = icmp ult i64 %110, %108 + %112 = tail call i64 @llvm.umin.i64(i64 %110, i64 768614336404564650) + %113 = select i1 %111, i64 768614336404564650, i64 %112 + %114 = icmp eq i64 %113, 0 + br i1 %114, label %118, label %115 + +115: ; preds = %107 + %116 = mul nuw nsw i64 %113, 12 + %117 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %116) #29 + to label %118 unwind label %78 + +118: ; preds = %115, %107 + %119 = phi ptr [ null, %107 ], [ %117, %115 ] + %120 = getelementptr inbounds %"struct.rawspeed::RawDecoder::RawSlice", ptr %119, i64 %108 + store i32 %86, ptr %120, align 4, !tbaa !31 + %121 = getelementptr inbounds i8, ptr %120, i64 4 + store i32 %71, ptr %121, align 4, !tbaa !31 + %122 = getelementptr inbounds i8, ptr %120, i64 8 + store i32 %73, ptr %122, align 4, !tbaa !31 + %123 = icmp eq ptr %68, %69 + br i1 %123, label %.loopexit, label %.preheader + +.preheader: ; preds = %118, %.preheader + %124 = phi ptr [ %127, %.preheader ], [ %119, %118 ] + %125 = phi ptr [ %126, %.preheader ], [ %68, %118 ] + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %124, ptr noundef nonnull align 4 dereferenceable(12) %125, i64 12, i1 false), !tbaa.struct !110, !alias.scope !111 + %126 = getelementptr inbounds i8, ptr %125, i64 12 + %127 = getelementptr inbounds i8, ptr %124, i64 12 + %128 = icmp eq ptr %126, %69 + br i1 %128, label %.loopexit, label %.preheader, !llvm.loop !115 + +.loopexit: ; preds = %.preheader, %118 + %129 = phi ptr [ %119, %118 ], [ %127, %.preheader ] + %130 = icmp eq ptr %68, null + br i1 %130, label %132, label %131 + +131: ; preds = %.loopexit + tail call void @_ZdlPv(ptr noundef nonnull %68) #30 br label %132 -132: ; preds = %130, %95 - %133 = phi ptr [ %131, %130 ], [ %68, %95 ] - %134 = phi ptr [ %127, %130 ], [ %67, %95 ] - %135 = phi ptr [ %117, %130 ], [ %66, %95 ] - %136 = getelementptr inbounds i8, ptr %134, i64 12 - %137 = add nuw i32 %65, 1 - %138 = load i32, ptr %32, align 8, !tbaa !42 - %139 = icmp ult i32 %137, %138 - br i1 %139, label %63, label %61, !llvm.loop !117 - -140: ; preds = %61 +132: ; preds = %131, %.loopexit + %133 = getelementptr inbounds %"struct.rawspeed::RawDecoder::RawSlice", ptr %119, i64 %113 + br label %134 + +134: ; preds = %132, %97 + %135 = phi ptr [ %133, %132 ], [ %70, %97 ] + %136 = phi ptr [ %129, %132 ], [ %69, %97 ] + %137 = phi ptr [ %119, %132 ], [ %68, %97 ] + %138 = getelementptr inbounds i8, ptr %136, i64 12 + %139 = add nuw i32 %67, 1 + %140 = load i32, ptr %32, align 8, !tbaa !42 + %141 = icmp ult i32 %139, %140 + br i1 %141, label %65, label %63, !llvm.loop !117 + +142: ; preds = %63, %56 + %143 = phi ptr [ %137, %63 ], [ null, %56 ] invoke void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_19RawDecoderExceptionEEEvPKcz(ptr noundef nonnull @.str.6, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK8rawspeed10RawDecoder18decodeUncompressedEPKNS_7TiffIFDENS_8BitOrderE) #20 - to label %141 unwind label %142 + to label %144 unwind label %145 -141: ; preds = %140 +144: ; preds = %142 unreachable -142: ; preds = %144, %140 - %143 = landingpad { ptr, i32 } +145: ; preds = %148, %142 + %146 = phi ptr [ %137, %148 ], [ %143, %142 ] + %147 = landingpad { ptr, i32 } cleanup - br label %287 - -144: ; preds = %61 - %145 = load ptr, ptr %25, align 8, !tbaa !23 - invoke void @_ZN8rawspeed12RawImageData10createDataEv(ptr noundef nonnull align 8 dereferenceable(616) %145) - to label %146 unwind label %142 + br label %291 -146: ; preds = %144 - %147 = zext nneg i32 %17 to i64 - %148 = shl nsw i64 -1, %147 +148: ; preds = %63 %149 = load ptr, ptr %25, align 8, !tbaa !23 - %150 = getelementptr inbounds i8, ptr %149, i64 160 - %151 = and i64 %148, 4294967295 - %152 = xor i64 %151, 8589934591 - store i64 %152, ptr %150, align 4 - %153 = getelementptr inbounds i8, ptr %0, i64 32 - %154 = getelementptr inbounds i8, ptr %5, i64 8 - %155 = getelementptr inbounds i8, ptr %5, i64 16 - %156 = getelementptr inbounds i8, ptr %6, i64 8 - %157 = getelementptr inbounds i8, ptr %7, i64 8 - %158 = getelementptr inbounds i8, ptr %4, i64 32 - br label %163 - -159: ; preds = %276 - %160 = icmp eq ptr %135, null - br i1 %160, label %162, label %161 - -161: ; preds = %159 - call void @_ZdlPv(ptr noundef nonnull %135) #30 - br label %162 - -162: ; preds = %161, %159 + invoke void @_ZN8rawspeed12RawImageData10createDataEv(ptr noundef nonnull align 8 dereferenceable(616) %149) + to label %150 unwind label %145 + +150: ; preds = %148 + %151 = zext nneg i32 %17 to i64 + %152 = shl nsw i64 -1, %151 + %153 = load ptr, ptr %25, align 8, !tbaa !23 + %154 = getelementptr inbounds i8, ptr %153, i64 160 + %155 = and i64 %152, 4294967295 + %156 = xor i64 %155, 8589934591 + store i64 %156, ptr %154, align 4 + %157 = getelementptr inbounds i8, ptr %0, i64 32 + %158 = getelementptr inbounds i8, ptr %5, i64 8 + %159 = getelementptr inbounds i8, ptr %5, i64 16 + %160 = getelementptr inbounds i8, ptr %6, i64 8 + %161 = getelementptr inbounds i8, ptr %7, i64 8 + %162 = getelementptr inbounds i8, ptr %4, i64 32 + br label %167 + +163: ; preds = %280 + %164 = icmp eq ptr %137, null + br i1 %164, label %166, label %165 + +165: ; preds = %163 + call void @_ZdlPv(ptr noundef nonnull %137) #30 + br label %166 + +166: ; preds = %165, %163 ret void -163: ; preds = %276, %146 - %164 = phi i32 [ 0, %146 ], [ %249, %276 ] - %165 = phi ptr [ %135, %146 ], [ %277, %276 ] - %166 = load i32, ptr %165, align 4, !tbaa !118 - %167 = getelementptr inbounds i8, ptr %165, i64 8 - %168 = load i32, ptr %167, align 4, !tbaa !120 - %169 = zext i32 %168 to i64 - %170 = shl nuw nsw i64 %169, 3 - %171 = mul i32 %166, %13 - %172 = zext i32 %171 to i64 - %173 = udiv i64 %170, %172 - %174 = trunc i64 %173 to i32 - %175 = mul i32 %13, %174 - %176 = lshr i32 %175, 3 - %177 = icmp ult i32 %175, 8 - br i1 %177, label %178, label %182 - -178: ; preds = %163 +167: ; preds = %280, %150 + %168 = phi i32 [ 0, %150 ], [ %253, %280 ] + %169 = phi ptr [ %137, %150 ], [ %281, %280 ] + %170 = load i32, ptr %169, align 4, !tbaa !118 + %171 = getelementptr inbounds i8, ptr %169, i64 8 + %172 = load i32, ptr %171, align 4, !tbaa !120 + %173 = zext i32 %172 to i64 + %174 = shl nuw nsw i64 %173, 3 + %175 = mul i32 %170, %13 + %176 = zext i32 %175 to i64 + %177 = udiv i64 %174, %176 + %178 = trunc i64 %177 to i32 + %179 = mul i32 %13, %178 + %180 = lshr i32 %179, 3 + %181 = icmp ult i32 %179, 8 + br i1 %181, label %182, label %186 + +182: ; preds = %167 invoke void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_19RawDecoderExceptionEEEvPKcz(ptr noundef nonnull @.str.7, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK8rawspeed10RawDecoder18decodeUncompressedEPKNS_7TiffIFDENS_8BitOrderE) #20 - to label %179 unwind label %180 + to label %183 unwind label %184 -179: ; preds = %178 +183: ; preds = %182 unreachable -180: ; preds = %178 - %181 = landingpad { ptr, i32 } +184: ; preds = %182 + %185 = landingpad { ptr, i32 } cleanup - br label %287 + br label %291 -182: ; preds = %163 +186: ; preds = %167 call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %4) #32 - %183 = getelementptr inbounds i8, ptr %165, i64 4 - %184 = load i32, ptr %183, align 4, !tbaa !121 - %185 = zext i32 %184 to i64 - %186 = add nuw nsw i64 %185, %169 - %187 = load i32, ptr %60, align 8, !tbaa !109 - %188 = zext i32 %187 to i64 - %189 = icmp samesign ugt i64 %186, %188 - br i1 %189, label %190, label %192 - -190: ; preds = %182 + %187 = getelementptr inbounds i8, ptr %169, i64 4 + %188 = load i32, ptr %187, align 4, !tbaa !121 + %189 = zext i32 %188 to i64 + %190 = add nuw nsw i64 %189, %173 + %191 = load i32, ptr %62, align 8, !tbaa !109 + %192 = zext i32 %191 to i64 + %193 = icmp samesign ugt i64 %190, %192 + br i1 %193, label %194, label %196 + +194: ; preds = %186 invoke void (ptr, ...) @_ZN8rawspeed14ThrowExceptionINS_11IOExceptionEEEvPKcz(ptr noundef nonnull @.str.29, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK8rawspeed6Buffer10getSubViewEjj) #20 - to label %191 unwind label %279 + to label %195 unwind label %283 -191: ; preds = %190 +195: ; preds = %194 unreachable -192: ; preds = %182 - %193 = load ptr, ptr %153, align 8, !tbaa !122, !nonnull !123, !noundef !123 - %194 = icmp sgt i32 %187, -1 - call void @llvm.assume(i1 %194) - %195 = add nuw nsw i32 %184, %168 - %196 = icmp samesign ule i32 %195, %187 - call void @llvm.assume(i1 %196) - %197 = icmp sgt i32 %184, -1 - call void @llvm.assume(i1 %197) - %198 = icmp sgt i32 %168, -1 +196: ; preds = %186 + %197 = load ptr, ptr %157, align 8, !tbaa !122, !nonnull !123, !noundef !123 + %198 = icmp sgt i32 %191, -1 call void @llvm.assume(i1 %198) - %199 = getelementptr inbounds i8, ptr %193, i64 %185 - %200 = or disjoint i64 %169, 244834610708480 - store ptr %199, ptr %5, align 8 - store i64 %200, ptr %154, align 8 - store i32 0, ptr %155, align 8, !tbaa !124 - %201 = load <2 x ptr>, ptr %25, align 8, !tbaa !30 - store <2 x ptr> %201, ptr %6, align 16, !tbaa !30 - %202 = extractelement <2 x ptr> %201, i64 1 - %203 = icmp eq ptr %202, null - br i1 %203, label %213, label %204 - -204: ; preds = %192 - %205 = getelementptr inbounds i8, ptr %202, i64 8 - %206 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !125 - %207 = icmp eq i8 %206, 0 - br i1 %207, label %211, label %208 - -208: ; preds = %204 - %209 = load i32, ptr %205, align 4, !tbaa !31 - %210 = add nsw i32 %209, 1 - store i32 %210, ptr %205, align 4, !tbaa !31 - br label %213 - -211: ; preds = %204 - %212 = atomicrmw volatile add ptr %205, i32 1 acq_rel, align 4 - br label %213 - -213: ; preds = %211, %208, %192 + %199 = add nuw nsw i32 %188, %172 + %200 = icmp samesign ule i32 %199, %191 + call void @llvm.assume(i1 %200) + %201 = icmp sgt i32 %188, -1 + call void @llvm.assume(i1 %201) + %202 = icmp sgt i32 %172, -1 + call void @llvm.assume(i1 %202) + %203 = getelementptr inbounds i8, ptr %197, i64 %189 + %204 = or disjoint i64 %173, 244834610708480 + store ptr %203, ptr %5, align 8 + store i64 %204, ptr %158, align 8 + store i32 0, ptr %159, align 8, !tbaa !124 + %205 = load <2 x ptr>, ptr %25, align 8, !tbaa !30 + store <2 x ptr> %205, ptr %6, align 16, !tbaa !30 + %206 = extractelement <2 x ptr> %205, i64 1 + %207 = icmp eq ptr %206, null + br i1 %207, label %217, label %208 + +208: ; preds = %196 + %209 = getelementptr inbounds i8, ptr %206, i64 8 + %210 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !125 + %211 = icmp eq i8 %210, 0 + br i1 %211, label %215, label %212 + +212: ; preds = %208 + %213 = load i32, ptr %209, align 4, !tbaa !31 + %214 = add nsw i32 %213, 1 + store i32 %214, ptr %209, align 4, !tbaa !31 + br label %217 + +215: ; preds = %208 + %216 = atomicrmw volatile add ptr %209, i32 1 acq_rel, align 4 + br label %217 + +217: ; preds = %215, %212, %196 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #32 - %214 = zext i32 %164 to i64 - %215 = shl nuw i64 %214, 32 - store i64 %215, ptr %7, align 8, !tbaa.struct !41 - %216 = zext i32 %166 to i64 - %217 = shl nuw i64 %216, 32 - %218 = or disjoint i64 %217, %30 - store i64 %218, ptr %157, align 8, !tbaa.struct !41 - invoke void @_ZN8rawspeed24UncompressedDecompressorC1ENS_10ByteStreamENS_8RawImageERKNS_12iRectangle2DEiiNS_8BitOrderE(ptr noundef nonnull align 8 dereferenceable(72) %4, ptr noundef nonnull byval(%"class.rawspeed::ByteStream") align 8 %5, ptr noundef nonnull %6, ptr noundef nonnull align 4 dereferenceable(16) %7, i32 noundef %176, i32 noundef %174, i32 noundef %2) - to label %219 unwind label %281 - -219: ; preds = %213 + %218 = zext i32 %168 to i64 + %219 = shl nuw i64 %218, 32 + store i64 %219, ptr %7, align 8, !tbaa.struct !41 + %220 = zext i32 %170 to i64 + %221 = shl nuw i64 %220, 32 + %222 = or disjoint i64 %221, %30 + store i64 %222, ptr %161, align 8, !tbaa.struct !41 + invoke void @_ZN8rawspeed24UncompressedDecompressorC1ENS_10ByteStreamENS_8RawImageERKNS_12iRectangle2DEiiNS_8BitOrderE(ptr noundef nonnull align 8 dereferenceable(72) %4, ptr noundef nonnull byval(%"class.rawspeed::ByteStream") align 8 %5, ptr noundef nonnull %6, ptr noundef nonnull align 4 dereferenceable(16) %7, i32 noundef %180, i32 noundef %178, i32 noundef %2) + to label %223 unwind label %285 + +223: ; preds = %217 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #32 - %220 = load ptr, ptr %156, align 8, !tbaa !27 - %221 = icmp eq ptr %220, null - br i1 %221, label %246, label %222 - -222: ; preds = %219 - %223 = getelementptr inbounds i8, ptr %220, i64 8 - %224 = load atomic i64, ptr %223 acquire, align 8 - %225 = icmp eq i64 %224, 4294967297 - %226 = trunc i64 %224 to i32 - br i1 %225, label %227, label %235 - -227: ; preds = %222 - store i32 0, ptr %223, align 8, !tbaa !17 - %228 = getelementptr inbounds i8, ptr %220, i64 12 - store i32 0, ptr %228, align 4, !tbaa !22 - %229 = load ptr, ptr %220, align 8, !tbaa !6 - %230 = getelementptr inbounds i8, ptr %229, i64 16 - %231 = load ptr, ptr %230, align 8 - call void %231(ptr noundef nonnull align 8 dereferenceable(16) %220) #32 - %232 = load ptr, ptr %220, align 8, !tbaa !6 - %233 = getelementptr inbounds i8, ptr %232, i64 24 - %234 = load ptr, ptr %233, align 8 - call void %234(ptr noundef nonnull align 8 dereferenceable(16) %220) #32 + %224 = load ptr, ptr %160, align 8, !tbaa !27 + %225 = icmp eq ptr %224, null + br i1 %225, label %250, label %226 + +226: ; preds = %223 + %227 = getelementptr inbounds i8, ptr %224, i64 8 + %228 = load atomic i64, ptr %227 acquire, align 8 + %229 = icmp eq i64 %228, 4294967297 + %230 = trunc i64 %228 to i32 + br i1 %229, label %231, label %239 + +231: ; preds = %226 + store i32 0, ptr %227, align 8, !tbaa !17 + %232 = getelementptr inbounds i8, ptr %224, i64 12 + store i32 0, ptr %232, align 4, !tbaa !22 + %233 = load ptr, ptr %224, align 8, !tbaa !6 + %234 = getelementptr inbounds i8, ptr %233, i64 16 + %235 = load ptr, ptr %234, align 8 + call void %235(ptr noundef nonnull align 8 dereferenceable(16) %224) #32 + %236 = load ptr, ptr %224, align 8, !tbaa !6 + %237 = getelementptr inbounds i8, ptr %236, i64 24 + %238 = load ptr, ptr %237, align 8 + call void %238(ptr noundef nonnull align 8 dereferenceable(16) %224) #32 + br label %250 + +239: ; preds = %226 + %240 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !125 + %241 = icmp eq i8 %240, 0 + br i1 %241, label %244, label %242 + +242: ; preds = %239 + %243 = add nsw i32 %230, -1 + store i32 %243, ptr %227, align 4, !tbaa !31 br label %246 -235: ; preds = %222 - %236 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !125 - %237 = icmp eq i8 %236, 0 - br i1 %237, label %240, label %238 - -238: ; preds = %235 - %239 = add nsw i32 %226, -1 - store i32 %239, ptr %223, align 4, !tbaa !31 - br label %242 - -240: ; preds = %235 - %241 = atomicrmw volatile add ptr %223, i32 -1 acq_rel, align 4 - br label %242 +244: ; preds = %239 + %245 = atomicrmw volatile add ptr %227, i32 -1 acq_rel, align 4 + br label %246 -242: ; preds = %240, %238 - %243 = phi i32 [ %226, %238 ], [ %241, %240 ] - %244 = icmp eq i32 %243, 1 - br i1 %244, label %245, label %246, !prof !126 +246: ; preds = %244, %242 + %247 = phi i32 [ %230, %242 ], [ %245, %244 ] + %248 = icmp eq i32 %247, 1 + br i1 %248, label %249, label %250, !prof !126 -245: ; preds = %242 - call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %220) #32 - br label %246 +249: ; preds = %246 + call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %224) #32 + br label %250 -246: ; preds = %245, %242, %227, %219 +250: ; preds = %249, %246, %231, %223 invoke void @_ZN8rawspeed24UncompressedDecompressor19readUncompressedRawEv(ptr noundef nonnull align 8 dereferenceable(72) %4) - to label %247 unwind label %283 - -247: ; preds = %246 - %248 = load i32, ptr %165, align 4, !tbaa !118 - %249 = add i32 %248, %164 - %250 = load ptr, ptr %158, align 8, !tbaa !27 - %251 = icmp eq ptr %250, null - br i1 %251, label %276, label %252 - -252: ; preds = %247 - %253 = getelementptr inbounds i8, ptr %250, i64 8 - %254 = load atomic i64, ptr %253 acquire, align 8 - %255 = icmp eq i64 %254, 4294967297 - %256 = trunc i64 %254 to i32 - br i1 %255, label %257, label %265 - -257: ; preds = %252 - store i32 0, ptr %253, align 8, !tbaa !17 - %258 = getelementptr inbounds i8, ptr %250, i64 12 - store i32 0, ptr %258, align 4, !tbaa !22 - %259 = load ptr, ptr %250, align 8, !tbaa !6 - %260 = getelementptr inbounds i8, ptr %259, i64 16 - %261 = load ptr, ptr %260, align 8 - call void %261(ptr noundef nonnull align 8 dereferenceable(16) %250) #32 - %262 = load ptr, ptr %250, align 8, !tbaa !6 - %263 = getelementptr inbounds i8, ptr %262, i64 24 - %264 = load ptr, ptr %263, align 8 - call void %264(ptr noundef nonnull align 8 dereferenceable(16) %250) #32 + to label %251 unwind label %287 + +251: ; preds = %250 + %252 = load i32, ptr %169, align 4, !tbaa !118 + %253 = add i32 %252, %168 + %254 = load ptr, ptr %162, align 8, !tbaa !27 + %255 = icmp eq ptr %254, null + br i1 %255, label %280, label %256 + +256: ; preds = %251 + %257 = getelementptr inbounds i8, ptr %254, i64 8 + %258 = load atomic i64, ptr %257 acquire, align 8 + %259 = icmp eq i64 %258, 4294967297 + %260 = trunc i64 %258 to i32 + br i1 %259, label %261, label %269 + +261: ; preds = %256 + store i32 0, ptr %257, align 8, !tbaa !17 + %262 = getelementptr inbounds i8, ptr %254, i64 12 + store i32 0, ptr %262, align 4, !tbaa !22 + %263 = load ptr, ptr %254, align 8, !tbaa !6 + %264 = getelementptr inbounds i8, ptr %263, i64 16 + %265 = load ptr, ptr %264, align 8 + call void %265(ptr noundef nonnull align 8 dereferenceable(16) %254) #32 + %266 = load ptr, ptr %254, align 8, !tbaa !6 + %267 = getelementptr inbounds i8, ptr %266, i64 24 + %268 = load ptr, ptr %267, align 8 + call void %268(ptr noundef nonnull align 8 dereferenceable(16) %254) #32 + br label %280 + +269: ; preds = %256 + %270 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !125 + %271 = icmp eq i8 %270, 0 + br i1 %271, label %274, label %272 + +272: ; preds = %269 + %273 = add nsw i32 %260, -1 + store i32 %273, ptr %257, align 4, !tbaa !31 br label %276 -265: ; preds = %252 - %266 = load i8, ptr @__libc_single_threaded, align 1, !tbaa !125 - %267 = icmp eq i8 %266, 0 - br i1 %267, label %270, label %268 - -268: ; preds = %265 - %269 = add nsw i32 %256, -1 - store i32 %269, ptr %253, align 4, !tbaa !31 - br label %272 +274: ; preds = %269 + %275 = atomicrmw volatile add ptr %257, i32 -1 acq_rel, align 4 + br label %276 -270: ; preds = %265 - %271 = atomicrmw volatile add ptr %253, i32 -1 acq_rel, align 4 - br label %272 +276: ; preds = %274, %272 + %277 = phi i32 [ %260, %272 ], [ %275, %274 ] + %278 = icmp eq i32 %277, 1 + br i1 %278, label %279, label %280, !prof !126 -272: ; preds = %270, %268 - %273 = phi i32 [ %256, %268 ], [ %271, %270 ] - %274 = icmp eq i32 %273, 1 - br i1 %274, label %275, label %276, !prof !126 +279: ; preds = %276 + call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %254) #32 + br label %280 -275: ; preds = %272 - call void @_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_coldEv(ptr noundef nonnull align 8 dereferenceable(16) %250) #32 - br label %276 - -276: ; preds = %275, %272, %257, %247 +280: ; preds = %279, %276, %261, %251 call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %4) #32 - %277 = getelementptr inbounds i8, ptr %165, i64 12 - %278 = icmp eq ptr %165, %134 - br i1 %278, label %159, label %163 + %281 = getelementptr inbounds i8, ptr %169, i64 12 + %282 = icmp eq ptr %169, %136 + br i1 %282, label %163, label %167 -279: ; preds = %190 - %280 = landingpad { ptr, i32 } +283: ; preds = %194 + %284 = landingpad { ptr, i32 } cleanup - br label %285 + br label %289 -281: ; preds = %213 - %282 = landingpad { ptr, i32 } +285: ; preds = %217 + %286 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #32 call void @_ZN8rawspeed8RawImageD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #32 - br label %285 + br label %289 -283: ; preds = %246 - %284 = landingpad { ptr, i32 } +287: ; preds = %250 + %288 = landingpad { ptr, i32 } cleanup call void @_ZN8rawspeed24UncompressedDecompressorD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %4) #32 - br label %285 + br label %289 -285: ; preds = %283, %281, %279 - %286 = phi { ptr, i32 } [ %284, %283 ], [ %282, %281 ], [ %280, %279 ] +289: ; preds = %287, %285, %283 + %290 = phi { ptr, i32 } [ %288, %287 ], [ %286, %285 ], [ %284, %283 ] call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %4) #32 - br label %287 + br label %291 -287: ; preds = %285, %180, %142, %78, %76 - %288 = phi ptr [ %135, %142 ], [ %135, %285 ], [ %135, %180 ], [ %66, %76 ], [ %66, %78 ] - %289 = phi { ptr, i32 } [ %143, %142 ], [ %286, %285 ], [ %181, %180 ], [ %77, %76 ], [ %79, %78 ] - %290 = icmp eq ptr %288, null - br i1 %290, label %292, label %291 +291: ; preds = %289, %184, %145, %80, %78 + %292 = phi ptr [ %146, %145 ], [ %137, %289 ], [ %137, %184 ], [ %68, %78 ], [ %68, %80 ] + %293 = phi { ptr, i32 } [ %147, %145 ], [ %290, %289 ], [ %185, %184 ], [ %79, %78 ], [ %81, %80 ] + %294 = icmp eq ptr %292, null + br i1 %294, label %296, label %295 -291: ; preds = %287 - call void @_ZdlPv(ptr noundef nonnull %288) #30 - br label %292 +295: ; preds = %291 + call void @_ZdlPv(ptr noundef nonnull %292) #30 + br label %296 -292: ; preds = %291, %287 - resume { ptr, i32 } %289 +296: ; preds = %295, %291 + resume { ptr, i32 } %293 } ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) diff --git a/bench/eastl/optimized/TestString.cpp.ll b/bench/eastl/optimized/TestString.cpp.ll index b7d98ecda1a..a0770f71e0b 100644 --- a/bench/eastl/optimized/TestString.cpp.ll +++ b/bench/eastl/optimized/TestString.cpp.ll @@ -301182,7 +301182,8 @@ if.then6.i.i14433: ; preds = %while.cond.i.i14417 %cond.i13.i.i14436 = call noundef i64 @llvm.umin.i64(i64 %sub.i.i14435, i64 20) %add.ptr.i.i14437 = getelementptr inbounds i8, ptr %spec.select.i.i.i14434, i64 %cond.i13.i.i14436 %add.ptr10.i.i14438 = getelementptr inbounds i8, ptr %add.ptr.i.i14437, i64 1 - br label %while.cond.i.i.i.i14488 + %cmp.i.i.i14439 = icmp eq ptr %spec.select.i.i.i14434, %add.ptr10.i.i14438 + br i1 %cmp.i.i.i14439, label %invoke.cont3032, label %while.cond.i.i.i.i14488 while.cond.i.i.i.i14488: ; preds = %if.then6.i.i14433, %while.body.i.i.i.i14492 %pTemp.0.i.i.i.i14489 = phi ptr [ %incdec.ptr.i.i.i.i14490, %while.body.i.i.i.i14492 ], [ %add.ptr10.i.i14438, %if.then6.i.i14433 ] @@ -301202,8 +301203,8 @@ if.then16.i.i14482: ; preds = %while.body.i.i.i.i1 %3503 = icmp ne i64 %sub.ptr.sub.i5.i14486, -1 br label %invoke.cont3032 -invoke.cont3032: ; preds = %while.cond.i.i.i.i14488, %if.then16.i.i14482, %while.cond.i.i14417.preheader - %retval.0.i.i14472 = phi i1 [ %3503, %if.then16.i.i14482 ], [ false, %while.cond.i.i14417.preheader ], [ false, %while.cond.i.i.i.i14488 ] +invoke.cont3032: ; preds = %while.cond.i.i.i.i14488, %if.then6.i.i14433, %if.then16.i.i14482, %while.cond.i.i14417.preheader + %retval.0.i.i14472 = phi i1 [ %3503, %if.then16.i.i14482 ], [ false, %while.cond.i.i14417.preheader ], [ false, %if.then6.i.i14433 ], [ false, %while.cond.i.i.i.i14488 ] %call3036 = invoke noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %retval.0.i.i14472, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.49, i32 noundef 1711, ptr noundef nonnull @.str.281) to label %while.cond.i.i14496.preheader unwind label %lpad2982 @@ -301224,19 +301225,22 @@ if.then6.i.i14512: ; preds = %while.cond.i.i14496 %cond.i13.i.i14515 = call noundef i64 @llvm.umin.i64(i64 %sub.i.i14514, i64 20) %add.ptr.i.i14516 = getelementptr inbounds i8, ptr %spec.select.i.i.i14513, i64 %cond.i13.i.i14515 %add.ptr10.i.i14517 = getelementptr inbounds i8, ptr %add.ptr.i.i14516, i64 3 + %cmp.i.i.i14518 = icmp eq ptr %spec.select.i.i.i14513, %add.ptr10.i.i14517 + br i1 %cmp.i.i.i14518, label %_ZN5eastl12basic_stringIc17CountingAllocatorE21CharTypeStringRSearchEPKcS4_S4_S4_.exit.i.i14558, label %if.end4.i.i.i14521 + +if.end4.i.i.i14521: ; preds = %if.then6.i.i14512 %sub.ptr.lhs.cast5.i.i.i14522 = ptrtoint ptr %add.ptr10.i.i14517 to i64 %sub.ptr.rhs.cast6.i.i.i14523 = ptrtoint ptr %spec.select.i.i.i14513 to i64 %sub.ptr.sub7.i.i.i14524 = sub i64 %sub.ptr.lhs.cast5.i.i.i14522, %sub.ptr.rhs.cast6.i.i.i14523 %cmp8.i.i.i14525 = icmp slt i64 %sub.ptr.sub7.i.i.i14524, 3 - br i1 %cmp8.i.i.i14525, label %invoke.cont3037, label %while.body.i.i.i14531.preheader - -while.body.i.i.i14531.preheader: ; preds = %if.then6.i.i14512 %add.ptr15.i.i.i14528 = getelementptr inbounds i8, ptr %add.ptr.i.i14516, i64 1 - br label %while.body.i.i.i14531 + %cmp16.not44.i.i.i14529 = icmp eq ptr %add.ptr15.i.i.i14528, %spec.select.i.i.i14513 + %or.cond21820 = select i1 %cmp8.i.i.i14525, i1 true, i1 %cmp16.not44.i.i.i14529 + br i1 %or.cond21820, label %invoke.cont3037, label %while.body.i.i.i14531 -while.body.i.i.i14531: ; preds = %while.body.i.i.i14531.preheader, %while.end.i.i.i14547 - %indvars.iv.i.i.i14532 = phi ptr [ %scevgep.i.i.i14550, %while.end.i.i.i14547 ], [ %add.ptr10.i.i14517, %while.body.i.i.i14531.preheader ] - %pSearchEnd.045.i.i.i14533 = phi ptr [ %incdec.ptr34.i.i.i14548, %while.end.i.i.i14547 ], [ %add.ptr15.i.i.i14528, %while.body.i.i.i14531.preheader ] +while.body.i.i.i14531: ; preds = %if.end4.i.i.i14521, %while.end.i.i.i14547 + %indvars.iv.i.i.i14532 = phi ptr [ %scevgep.i.i.i14550, %while.end.i.i.i14547 ], [ %add.ptr10.i.i14517, %if.end4.i.i.i14521 ] + %pSearchEnd.045.i.i.i14533 = phi ptr [ %incdec.ptr34.i.i.i14548, %while.end.i.i.i14547 ], [ %add.ptr15.i.i.i14528, %if.end4.i.i.i14521 ] br label %while.cond.i30.i.i.i14534 while.cond.i30.i.i.i14534: ; preds = %while.body.i34.i.i.i14539, %while.body.i.i.i14531 @@ -301269,8 +301273,7 @@ while.body25.i.i.i14552: ; preds = %while.cond21.i.i.i1 if.then27.i.i.i14556: ; preds = %while.body25.i.i.i14552 %add.ptr32.i.i.i14557 = getelementptr inbounds i8, ptr %indvars.iv49.i.i.i14535, i64 -3 - %cmp15.not.i.i14560 = icmp eq ptr %add.ptr32.i.i.i14557, %add.ptr10.i.i14517 - br i1 %cmp15.not.i.i14560, label %invoke.cont3037, label %if.then16.i.i14561 + br label %_ZN5eastl12basic_stringIc17CountingAllocatorE21CharTypeStringRSearchEPKcS4_S4_S4_.exit.i.i14558 while.end.i.i.i14547: ; preds = %while.cond21.i.i.i14543 %incdec.ptr34.i.i.i14548 = getelementptr inbounds i8, ptr %pSearchEnd.045.i.i.i14533, i64 -1 @@ -301278,14 +301281,20 @@ while.end.i.i.i14547: ; preds = %while.cond21.i.i.i1 %scevgep.i.i.i14550 = getelementptr i8, ptr %indvars.iv.i.i.i14532, i64 -1 br i1 %cmp16.not.i.i.i14549, label %invoke.cont3037, label %while.body.i.i.i14531, !llvm.loop !493 -if.then16.i.i14561: ; preds = %if.then27.i.i.i14556 - %sub.ptr.lhs.cast.i3.i14563 = ptrtoint ptr %add.ptr32.i.i.i14557 to i64 - %sub.ptr.sub.i5.i14565 = sub i64 %sub.ptr.lhs.cast.i3.i14563, %sub.ptr.rhs.cast6.i.i.i14523 +_ZN5eastl12basic_stringIc17CountingAllocatorE21CharTypeStringRSearchEPKcS4_S4_S4_.exit.i.i14558: ; preds = %if.then27.i.i.i14556, %if.then6.i.i14512 + %retval.0.i.i.i14559 = phi ptr [ %add.ptr32.i.i.i14557, %if.then27.i.i.i14556 ], [ %spec.select.i.i.i14513, %if.then6.i.i14512 ] + %cmp15.not.i.i14560 = icmp eq ptr %retval.0.i.i.i14559, %add.ptr10.i.i14517 + br i1 %cmp15.not.i.i14560, label %invoke.cont3037, label %if.then16.i.i14561 + +if.then16.i.i14561: ; preds = %_ZN5eastl12basic_stringIc17CountingAllocatorE21CharTypeStringRSearchEPKcS4_S4_S4_.exit.i.i14558 + %sub.ptr.lhs.cast.i3.i14563 = ptrtoint ptr %retval.0.i.i.i14559 to i64 + %sub.ptr.rhs.cast.i4.i14564 = ptrtoint ptr %spec.select.i.i.i14513 to i64 + %sub.ptr.sub.i5.i14565 = sub i64 %sub.ptr.lhs.cast.i3.i14563, %sub.ptr.rhs.cast.i4.i14564 %3510 = icmp ne i64 %sub.ptr.sub.i5.i14565, -1 br label %invoke.cont3037 -invoke.cont3037: ; preds = %while.end.i.i.i14547, %while.cond.i30.i.i.i14534, %if.then16.i.i14561, %if.then27.i.i.i14556, %if.then6.i.i14512, %while.cond.i.i14496.preheader - %retval.0.i.i14551 = phi i1 [ %3510, %if.then16.i.i14561 ], [ false, %if.then27.i.i.i14556 ], [ false, %while.cond.i.i14496.preheader ], [ false, %if.then6.i.i14512 ], [ false, %while.cond.i30.i.i.i14534 ], [ false, %while.end.i.i.i14547 ] +invoke.cont3037: ; preds = %while.end.i.i.i14547, %while.cond.i30.i.i.i14534, %if.then16.i.i14561, %_ZN5eastl12basic_stringIc17CountingAllocatorE21CharTypeStringRSearchEPKcS4_S4_S4_.exit.i.i14558, %if.end4.i.i.i14521, %while.cond.i.i14496.preheader + %retval.0.i.i14551 = phi i1 [ %3510, %if.then16.i.i14561 ], [ false, %_ZN5eastl12basic_stringIc17CountingAllocatorE21CharTypeStringRSearchEPKcS4_S4_S4_.exit.i.i14558 ], [ false, %while.cond.i.i14496.preheader ], [ false, %if.end4.i.i.i14521 ], [ false, %while.cond.i30.i.i.i14534 ], [ false, %while.end.i.i.i14547 ] %call3041 = invoke noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %retval.0.i.i14551, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.49, i32 noundef 1712, ptr noundef nonnull @.str.282) to label %while.cond.i.i14576.preheader unwind label %lpad2982 @@ -301306,19 +301315,22 @@ if.then6.i.i14592: ; preds = %while.cond.i.i14576 %cond.i13.i.i14595 = call noundef i64 @llvm.umin.i64(i64 %sub.i.i14594, i64 20) %add.ptr.i.i14596 = getelementptr inbounds i8, ptr %spec.select.i.i.i14593, i64 %cond.i13.i.i14595 %add.ptr10.i.i14597 = getelementptr inbounds i8, ptr %add.ptr.i.i14596, i64 4 + %cmp.i.i.i14598 = icmp eq ptr %spec.select.i.i.i14593, %add.ptr10.i.i14597 + br i1 %cmp.i.i.i14598, label %_ZN5eastl12basic_stringIc17CountingAllocatorE21CharTypeStringRSearchEPKcS4_S4_S4_.exit.i.i14638, label %if.end4.i.i.i14601 + +if.end4.i.i.i14601: ; preds = %if.then6.i.i14592 %sub.ptr.lhs.cast5.i.i.i14602 = ptrtoint ptr %add.ptr10.i.i14597 to i64 %sub.ptr.rhs.cast6.i.i.i14603 = ptrtoint ptr %spec.select.i.i.i14593 to i64 %sub.ptr.sub7.i.i.i14604 = sub i64 %sub.ptr.lhs.cast5.i.i.i14602, %sub.ptr.rhs.cast6.i.i.i14603 %cmp8.i.i.i14605 = icmp slt i64 %sub.ptr.sub7.i.i.i14604, 4 - br i1 %cmp8.i.i.i14605, label %invoke.cont3042, label %while.body.i.i.i14611.preheader - -while.body.i.i.i14611.preheader: ; preds = %if.then6.i.i14592 %add.ptr15.i.i.i14608 = getelementptr inbounds i8, ptr %add.ptr.i.i14596, i64 1 - br label %while.body.i.i.i14611 + %cmp16.not44.i.i.i14609 = icmp eq ptr %add.ptr15.i.i.i14608, %spec.select.i.i.i14593 + %or.cond21821 = select i1 %cmp8.i.i.i14605, i1 true, i1 %cmp16.not44.i.i.i14609 + br i1 %or.cond21821, label %invoke.cont3042, label %while.body.i.i.i14611 -while.body.i.i.i14611: ; preds = %while.body.i.i.i14611.preheader, %while.end.i.i.i14627 - %indvars.iv.i.i.i14612 = phi ptr [ %scevgep.i.i.i14630, %while.end.i.i.i14627 ], [ %add.ptr10.i.i14597, %while.body.i.i.i14611.preheader ] - %pSearchEnd.045.i.i.i14613 = phi ptr [ %incdec.ptr34.i.i.i14628, %while.end.i.i.i14627 ], [ %add.ptr15.i.i.i14608, %while.body.i.i.i14611.preheader ] +while.body.i.i.i14611: ; preds = %if.end4.i.i.i14601, %while.end.i.i.i14627 + %indvars.iv.i.i.i14612 = phi ptr [ %scevgep.i.i.i14630, %while.end.i.i.i14627 ], [ %add.ptr10.i.i14597, %if.end4.i.i.i14601 ] + %pSearchEnd.045.i.i.i14613 = phi ptr [ %incdec.ptr34.i.i.i14628, %while.end.i.i.i14627 ], [ %add.ptr15.i.i.i14608, %if.end4.i.i.i14601 ] br label %while.cond.i30.i.i.i14614 while.cond.i30.i.i.i14614: ; preds = %while.body.i34.i.i.i14619, %while.body.i.i.i14611 @@ -301351,8 +301363,7 @@ while.body25.i.i.i14632: ; preds = %while.cond21.i.i.i1 if.then27.i.i.i14636: ; preds = %while.body25.i.i.i14632 %add.ptr32.i.i.i14637 = getelementptr inbounds i8, ptr %indvars.iv49.i.i.i14615, i64 -4 - %cmp15.not.i.i14640 = icmp eq ptr %add.ptr32.i.i.i14637, %add.ptr10.i.i14597 - br i1 %cmp15.not.i.i14640, label %invoke.cont3042, label %if.then16.i.i14641 + br label %_ZN5eastl12basic_stringIc17CountingAllocatorE21CharTypeStringRSearchEPKcS4_S4_S4_.exit.i.i14638 while.end.i.i.i14627: ; preds = %while.cond21.i.i.i14623 %incdec.ptr34.i.i.i14628 = getelementptr inbounds i8, ptr %pSearchEnd.045.i.i.i14613, i64 -1 @@ -301360,14 +301371,20 @@ while.end.i.i.i14627: ; preds = %while.cond21.i.i.i1 %scevgep.i.i.i14630 = getelementptr i8, ptr %indvars.iv.i.i.i14612, i64 -1 br i1 %cmp16.not.i.i.i14629, label %invoke.cont3042, label %while.body.i.i.i14611, !llvm.loop !493 -if.then16.i.i14641: ; preds = %if.then27.i.i.i14636 - %sub.ptr.lhs.cast.i3.i14643 = ptrtoint ptr %add.ptr32.i.i.i14637 to i64 - %sub.ptr.sub.i5.i14645 = sub i64 %sub.ptr.lhs.cast.i3.i14643, %sub.ptr.rhs.cast6.i.i.i14603 +_ZN5eastl12basic_stringIc17CountingAllocatorE21CharTypeStringRSearchEPKcS4_S4_S4_.exit.i.i14638: ; preds = %if.then27.i.i.i14636, %if.then6.i.i14592 + %retval.0.i.i.i14639 = phi ptr [ %add.ptr32.i.i.i14637, %if.then27.i.i.i14636 ], [ %spec.select.i.i.i14593, %if.then6.i.i14592 ] + %cmp15.not.i.i14640 = icmp eq ptr %retval.0.i.i.i14639, %add.ptr10.i.i14597 + br i1 %cmp15.not.i.i14640, label %invoke.cont3042, label %if.then16.i.i14641 + +if.then16.i.i14641: ; preds = %_ZN5eastl12basic_stringIc17CountingAllocatorE21CharTypeStringRSearchEPKcS4_S4_S4_.exit.i.i14638 + %sub.ptr.lhs.cast.i3.i14643 = ptrtoint ptr %retval.0.i.i.i14639 to i64 + %sub.ptr.rhs.cast.i4.i14644 = ptrtoint ptr %spec.select.i.i.i14593 to i64 + %sub.ptr.sub.i5.i14645 = sub i64 %sub.ptr.lhs.cast.i3.i14643, %sub.ptr.rhs.cast.i4.i14644 %3517 = icmp eq i64 %sub.ptr.sub.i5.i14645, -1 br label %invoke.cont3042 -invoke.cont3042: ; preds = %while.end.i.i.i14627, %while.cond.i30.i.i.i14614, %if.then16.i.i14641, %if.then27.i.i.i14636, %if.then6.i.i14592, %while.cond.i.i14576.preheader - %retval.0.i.i14631 = phi i1 [ %3517, %if.then16.i.i14641 ], [ true, %if.then27.i.i.i14636 ], [ true, %while.cond.i.i14576.preheader ], [ true, %if.then6.i.i14592 ], [ true, %while.cond.i30.i.i.i14614 ], [ true, %while.end.i.i.i14627 ] +invoke.cont3042: ; preds = %while.end.i.i.i14627, %while.cond.i30.i.i.i14614, %if.then16.i.i14641, %_ZN5eastl12basic_stringIc17CountingAllocatorE21CharTypeStringRSearchEPKcS4_S4_S4_.exit.i.i14638, %if.end4.i.i.i14601, %while.cond.i.i14576.preheader + %retval.0.i.i14631 = phi i1 [ %3517, %if.then16.i.i14641 ], [ true, %_ZN5eastl12basic_stringIc17CountingAllocatorE21CharTypeStringRSearchEPKcS4_S4_S4_.exit.i.i14638 ], [ true, %while.cond.i.i14576.preheader ], [ true, %if.end4.i.i.i14601 ], [ true, %while.cond.i30.i.i.i14614 ], [ true, %while.end.i.i.i14627 ] %call3046 = invoke noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %retval.0.i.i14631, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.49, i32 noundef 1713, ptr noundef nonnull @.str.283) to label %invoke.cont3045 unwind label %lpad2982 @@ -329050,7 +329067,8 @@ if.then6.i.i14293: ; preds = %while.cond.i.i14276 %cond.i13.i.i14296 = call noundef i64 @llvm.umin.i64(i64 %sub.i.i14295, i64 20) %add.ptr.i.i14297 = getelementptr inbounds i32, ptr %spec.select.i.i.i14294, i64 %cond.i13.i.i14296 %add.ptr10.i.i14298 = getelementptr inbounds i8, ptr %add.ptr.i.i14297, i64 4 - br label %while.cond.i.i.i.i14344 + %cmp.i.i.i14299 = icmp eq ptr %spec.select.i.i.i14294, %add.ptr10.i.i14298 + br i1 %cmp.i.i.i14299, label %invoke.cont2974, label %while.cond.i.i.i.i14344 while.cond.i.i.i.i14344: ; preds = %if.then6.i.i14293, %while.body.i.i.i.i14348 %pTemp.0.i.i.i.i14345 = phi ptr [ %incdec.ptr.i.i.i.i14346, %while.body.i.i.i.i14348 ], [ %add.ptr10.i.i14298, %if.then6.i.i14293 ] @@ -329070,8 +329088,8 @@ if.then16.i.i14337: ; preds = %while.body.i.i.i.i1 %3309 = icmp ne i64 %sub.ptr.sub.i5.i14341, -4 br label %invoke.cont2974 -invoke.cont2974: ; preds = %while.cond.i.i.i.i14344, %if.then16.i.i14337, %while.cond.i.i14276.preheader - %retval.0.i.i14327 = phi i1 [ %3309, %if.then16.i.i14337 ], [ false, %while.cond.i.i14276.preheader ], [ false, %while.cond.i.i.i.i14344 ] +invoke.cont2974: ; preds = %while.cond.i.i.i.i14344, %if.then6.i.i14293, %if.then16.i.i14337, %while.cond.i.i14276.preheader + %retval.0.i.i14327 = phi i1 [ %3309, %if.then16.i.i14337 ], [ false, %while.cond.i.i14276.preheader ], [ false, %if.then6.i.i14293 ], [ false, %while.cond.i.i.i.i14344 ] %call2978 = invoke noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %retval.0.i.i14327, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.49, i32 noundef 1711, ptr noundef nonnull @.str.281) to label %while.cond.i.i14352.preheader unwind label %lpad2924 @@ -329092,19 +329110,22 @@ if.then6.i.i14369: ; preds = %while.cond.i.i14352 %cond.i13.i.i14372 = call noundef i64 @llvm.umin.i64(i64 %sub.i.i14371, i64 20) %add.ptr.i.i14373 = getelementptr inbounds i32, ptr %spec.select.i.i.i14370, i64 %cond.i13.i.i14372 %add.ptr10.i.i14374 = getelementptr inbounds i8, ptr %add.ptr.i.i14373, i64 12 + %cmp.i.i.i14375 = icmp eq ptr %spec.select.i.i.i14370, %add.ptr10.i.i14374 + br i1 %cmp.i.i.i14375, label %_ZN5eastl12basic_stringIw17CountingAllocatorE21CharTypeStringRSearchEPKwS4_S4_S4_.exit.i.i14410, label %if.end4.i.i.i14378 + +if.end4.i.i.i14378: ; preds = %if.then6.i.i14369 %sub.ptr.lhs.cast5.i.i.i14379 = ptrtoint ptr %add.ptr10.i.i14374 to i64 %sub.ptr.rhs.cast6.i.i.i14380 = ptrtoint ptr %spec.select.i.i.i14370 to i64 %sub.ptr.sub7.i.i.i14381 = sub i64 %sub.ptr.lhs.cast5.i.i.i14379, %sub.ptr.rhs.cast6.i.i.i14380 %cmp9.i.i.i14382 = icmp slt i64 %sub.ptr.sub7.i.i.i14381, 12 - br i1 %cmp9.i.i.i14382, label %invoke.cont2979, label %while.body.i.i.i14388.preheader - -while.body.i.i.i14388.preheader: ; preds = %if.then6.i.i14369 %add.ptr17.i.i.i14385 = getelementptr inbounds i8, ptr %add.ptr.i.i14373, i64 4 - br label %while.body.i.i.i14388 + %cmp18.not44.i.i.i14386 = icmp eq ptr %add.ptr17.i.i.i14385, %spec.select.i.i.i14370 + %or.cond22302 = select i1 %cmp9.i.i.i14382, i1 true, i1 %cmp18.not44.i.i.i14386 + br i1 %or.cond22302, label %invoke.cont2979, label %while.body.i.i.i14388 -while.body.i.i.i14388: ; preds = %while.body.i.i.i14388.preheader, %while.end.i.i.i14400 - %indvars.iv21595 = phi ptr [ %scevgep21596, %while.end.i.i.i14400 ], [ %add.ptr10.i.i14374, %while.body.i.i.i14388.preheader ] - %pSearchEnd.045.i.i.i14389 = phi ptr [ %incdec.ptr36.i.i.i14401, %while.end.i.i.i14400 ], [ %add.ptr17.i.i.i14385, %while.body.i.i.i14388.preheader ] +while.body.i.i.i14388: ; preds = %if.end4.i.i.i14378, %while.end.i.i.i14400 + %indvars.iv21595 = phi ptr [ %scevgep21596, %while.end.i.i.i14400 ], [ %add.ptr10.i.i14374, %if.end4.i.i.i14378 ] + %pSearchEnd.045.i.i.i14389 = phi ptr [ %incdec.ptr36.i.i.i14401, %while.end.i.i.i14400 ], [ %add.ptr17.i.i.i14385, %if.end4.i.i.i14378 ] br label %while.cond.i30.i.i.i14390 while.cond.i30.i.i.i14390: ; preds = %while.body.i34.i.i.i14394, %while.body.i.i.i14388 @@ -329137,8 +329158,7 @@ while.body26.i.i.i14404: ; preds = %while.cond23.i.i.i1 if.then28.i.i.i14408: ; preds = %while.body26.i.i.i14404 %add.ptr34.i.i.i14409 = getelementptr inbounds i8, ptr %indvars.iv21597, i64 -12 - %cmp15.not.i.i14412 = icmp eq ptr %add.ptr34.i.i.i14409, %add.ptr10.i.i14374 - br i1 %cmp15.not.i.i14412, label %invoke.cont2979, label %if.then16.i.i14413 + br label %_ZN5eastl12basic_stringIw17CountingAllocatorE21CharTypeStringRSearchEPKwS4_S4_S4_.exit.i.i14410 while.end.i.i.i14400: ; preds = %while.cond23.i.i.i14396 %incdec.ptr36.i.i.i14401 = getelementptr inbounds i8, ptr %pSearchEnd.045.i.i.i14389, i64 -4 @@ -329146,14 +329166,20 @@ while.end.i.i.i14400: ; preds = %while.cond23.i.i.i1 %scevgep21596 = getelementptr i8, ptr %indvars.iv21595, i64 -4 br i1 %cmp18.not.i.i.i14402, label %invoke.cont2979, label %while.body.i.i.i14388, !llvm.loop !526 -if.then16.i.i14413: ; preds = %if.then28.i.i.i14408 - %sub.ptr.lhs.cast.i3.i14415 = ptrtoint ptr %add.ptr34.i.i.i14409 to i64 - %sub.ptr.sub.i5.i14417 = sub i64 %sub.ptr.lhs.cast.i3.i14415, %sub.ptr.rhs.cast6.i.i.i14380 +_ZN5eastl12basic_stringIw17CountingAllocatorE21CharTypeStringRSearchEPKwS4_S4_S4_.exit.i.i14410: ; preds = %if.then28.i.i.i14408, %if.then6.i.i14369 + %retval.0.i.i.i14411 = phi ptr [ %add.ptr34.i.i.i14409, %if.then28.i.i.i14408 ], [ %spec.select.i.i.i14370, %if.then6.i.i14369 ] + %cmp15.not.i.i14412 = icmp eq ptr %retval.0.i.i.i14411, %add.ptr10.i.i14374 + br i1 %cmp15.not.i.i14412, label %invoke.cont2979, label %if.then16.i.i14413 + +if.then16.i.i14413: ; preds = %_ZN5eastl12basic_stringIw17CountingAllocatorE21CharTypeStringRSearchEPKwS4_S4_S4_.exit.i.i14410 + %sub.ptr.lhs.cast.i3.i14415 = ptrtoint ptr %retval.0.i.i.i14411 to i64 + %sub.ptr.rhs.cast.i4.i14416 = ptrtoint ptr %spec.select.i.i.i14370 to i64 + %sub.ptr.sub.i5.i14417 = sub i64 %sub.ptr.lhs.cast.i3.i14415, %sub.ptr.rhs.cast.i4.i14416 %3316 = icmp ne i64 %sub.ptr.sub.i5.i14417, -4 br label %invoke.cont2979 -invoke.cont2979: ; preds = %while.end.i.i.i14400, %while.cond.i30.i.i.i14390, %if.then16.i.i14413, %if.then28.i.i.i14408, %if.then6.i.i14369, %while.cond.i.i14352.preheader - %retval.0.i.i14403 = phi i1 [ %3316, %if.then16.i.i14413 ], [ false, %if.then28.i.i.i14408 ], [ false, %while.cond.i.i14352.preheader ], [ false, %if.then6.i.i14369 ], [ false, %while.cond.i30.i.i.i14390 ], [ false, %while.end.i.i.i14400 ] +invoke.cont2979: ; preds = %while.end.i.i.i14400, %while.cond.i30.i.i.i14390, %if.then16.i.i14413, %_ZN5eastl12basic_stringIw17CountingAllocatorE21CharTypeStringRSearchEPKwS4_S4_S4_.exit.i.i14410, %if.end4.i.i.i14378, %while.cond.i.i14352.preheader + %retval.0.i.i14403 = phi i1 [ %3316, %if.then16.i.i14413 ], [ false, %_ZN5eastl12basic_stringIw17CountingAllocatorE21CharTypeStringRSearchEPKwS4_S4_S4_.exit.i.i14410 ], [ false, %while.cond.i.i14352.preheader ], [ false, %if.end4.i.i.i14378 ], [ false, %while.cond.i30.i.i.i14390 ], [ false, %while.end.i.i.i14400 ] %call2983 = invoke noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %retval.0.i.i14403, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.49, i32 noundef 1712, ptr noundef nonnull @.str.282) to label %while.cond.i.i14429.preheader unwind label %lpad2924 @@ -329174,19 +329200,22 @@ if.then6.i.i14446: ; preds = %while.cond.i.i14429 %cond.i13.i.i14449 = call noundef i64 @llvm.umin.i64(i64 %sub.i.i14448, i64 20) %add.ptr.i.i14450 = getelementptr inbounds i32, ptr %spec.select.i.i.i14447, i64 %cond.i13.i.i14449 %add.ptr10.i.i14451 = getelementptr inbounds i8, ptr %add.ptr.i.i14450, i64 16 + %cmp.i.i.i14452 = icmp eq ptr %spec.select.i.i.i14447, %add.ptr10.i.i14451 + br i1 %cmp.i.i.i14452, label %_ZN5eastl12basic_stringIw17CountingAllocatorE21CharTypeStringRSearchEPKwS4_S4_S4_.exit.i.i14487, label %if.end4.i.i.i14455 + +if.end4.i.i.i14455: ; preds = %if.then6.i.i14446 %sub.ptr.lhs.cast5.i.i.i14456 = ptrtoint ptr %add.ptr10.i.i14451 to i64 %sub.ptr.rhs.cast6.i.i.i14457 = ptrtoint ptr %spec.select.i.i.i14447 to i64 %sub.ptr.sub7.i.i.i14458 = sub i64 %sub.ptr.lhs.cast5.i.i.i14456, %sub.ptr.rhs.cast6.i.i.i14457 %cmp9.i.i.i14459 = icmp slt i64 %sub.ptr.sub7.i.i.i14458, 16 - br i1 %cmp9.i.i.i14459, label %invoke.cont2984, label %while.body.i.i.i14465.preheader - -while.body.i.i.i14465.preheader: ; preds = %if.then6.i.i14446 %add.ptr17.i.i.i14462 = getelementptr inbounds i8, ptr %add.ptr.i.i14450, i64 4 - br label %while.body.i.i.i14465 + %cmp18.not44.i.i.i14463 = icmp eq ptr %add.ptr17.i.i.i14462, %spec.select.i.i.i14447 + %or.cond22303 = select i1 %cmp9.i.i.i14459, i1 true, i1 %cmp18.not44.i.i.i14463 + br i1 %or.cond22303, label %invoke.cont2984, label %while.body.i.i.i14465 -while.body.i.i.i14465: ; preds = %while.body.i.i.i14465.preheader, %while.end.i.i.i14477 - %indvars.iv21600 = phi ptr [ %scevgep21601, %while.end.i.i.i14477 ], [ %add.ptr10.i.i14451, %while.body.i.i.i14465.preheader ] - %pSearchEnd.045.i.i.i14466 = phi ptr [ %incdec.ptr36.i.i.i14478, %while.end.i.i.i14477 ], [ %add.ptr17.i.i.i14462, %while.body.i.i.i14465.preheader ] +while.body.i.i.i14465: ; preds = %if.end4.i.i.i14455, %while.end.i.i.i14477 + %indvars.iv21600 = phi ptr [ %scevgep21601, %while.end.i.i.i14477 ], [ %add.ptr10.i.i14451, %if.end4.i.i.i14455 ] + %pSearchEnd.045.i.i.i14466 = phi ptr [ %incdec.ptr36.i.i.i14478, %while.end.i.i.i14477 ], [ %add.ptr17.i.i.i14462, %if.end4.i.i.i14455 ] br label %while.cond.i30.i.i.i14467 while.cond.i30.i.i.i14467: ; preds = %while.body.i34.i.i.i14471, %while.body.i.i.i14465 @@ -329219,8 +329248,7 @@ while.body26.i.i.i14481: ; preds = %while.cond23.i.i.i1 if.then28.i.i.i14485: ; preds = %while.body26.i.i.i14481 %add.ptr34.i.i.i14486 = getelementptr inbounds i8, ptr %indvars.iv21602, i64 -16 - %cmp15.not.i.i14489 = icmp eq ptr %add.ptr34.i.i.i14486, %add.ptr10.i.i14451 - br i1 %cmp15.not.i.i14489, label %invoke.cont2984, label %if.then16.i.i14490 + br label %_ZN5eastl12basic_stringIw17CountingAllocatorE21CharTypeStringRSearchEPKwS4_S4_S4_.exit.i.i14487 while.end.i.i.i14477: ; preds = %while.cond23.i.i.i14473 %incdec.ptr36.i.i.i14478 = getelementptr inbounds i8, ptr %pSearchEnd.045.i.i.i14466, i64 -4 @@ -329228,14 +329256,20 @@ while.end.i.i.i14477: ; preds = %while.cond23.i.i.i1 %scevgep21601 = getelementptr i8, ptr %indvars.iv21600, i64 -4 br i1 %cmp18.not.i.i.i14479, label %invoke.cont2984, label %while.body.i.i.i14465, !llvm.loop !526 -if.then16.i.i14490: ; preds = %if.then28.i.i.i14485 - %sub.ptr.lhs.cast.i3.i14492 = ptrtoint ptr %add.ptr34.i.i.i14486 to i64 - %sub.ptr.sub.i5.i14494 = sub i64 %sub.ptr.lhs.cast.i3.i14492, %sub.ptr.rhs.cast6.i.i.i14457 +_ZN5eastl12basic_stringIw17CountingAllocatorE21CharTypeStringRSearchEPKwS4_S4_S4_.exit.i.i14487: ; preds = %if.then28.i.i.i14485, %if.then6.i.i14446 + %retval.0.i.i.i14488 = phi ptr [ %add.ptr34.i.i.i14486, %if.then28.i.i.i14485 ], [ %spec.select.i.i.i14447, %if.then6.i.i14446 ] + %cmp15.not.i.i14489 = icmp eq ptr %retval.0.i.i.i14488, %add.ptr10.i.i14451 + br i1 %cmp15.not.i.i14489, label %invoke.cont2984, label %if.then16.i.i14490 + +if.then16.i.i14490: ; preds = %_ZN5eastl12basic_stringIw17CountingAllocatorE21CharTypeStringRSearchEPKwS4_S4_S4_.exit.i.i14487 + %sub.ptr.lhs.cast.i3.i14492 = ptrtoint ptr %retval.0.i.i.i14488 to i64 + %sub.ptr.rhs.cast.i4.i14493 = ptrtoint ptr %spec.select.i.i.i14447 to i64 + %sub.ptr.sub.i5.i14494 = sub i64 %sub.ptr.lhs.cast.i3.i14492, %sub.ptr.rhs.cast.i4.i14493 %3323 = icmp eq i64 %sub.ptr.sub.i5.i14494, -4 br label %invoke.cont2984 -invoke.cont2984: ; preds = %while.end.i.i.i14477, %while.cond.i30.i.i.i14467, %if.then16.i.i14490, %if.then28.i.i.i14485, %if.then6.i.i14446, %while.cond.i.i14429.preheader - %retval.0.i.i14480 = phi i1 [ %3323, %if.then16.i.i14490 ], [ true, %if.then28.i.i.i14485 ], [ true, %while.cond.i.i14429.preheader ], [ true, %if.then6.i.i14446 ], [ true, %while.cond.i30.i.i.i14467 ], [ true, %while.end.i.i.i14477 ] +invoke.cont2984: ; preds = %while.end.i.i.i14477, %while.cond.i30.i.i.i14467, %if.then16.i.i14490, %_ZN5eastl12basic_stringIw17CountingAllocatorE21CharTypeStringRSearchEPKwS4_S4_S4_.exit.i.i14487, %if.end4.i.i.i14455, %while.cond.i.i14429.preheader + %retval.0.i.i14480 = phi i1 [ %3323, %if.then16.i.i14490 ], [ true, %_ZN5eastl12basic_stringIw17CountingAllocatorE21CharTypeStringRSearchEPKwS4_S4_S4_.exit.i.i14487 ], [ true, %while.cond.i.i14429.preheader ], [ true, %if.end4.i.i.i14455 ], [ true, %while.cond.i30.i.i.i14467 ], [ true, %while.end.i.i.i14477 ] %call2988 = invoke noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %retval.0.i.i14480, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.49, i32 noundef 1713, ptr noundef nonnull @.str.283) to label %invoke.cont2987 unwind label %lpad2924 @@ -358304,7 +358338,8 @@ if.then6.i.i14433: ; preds = %while.cond.i.i14417 %cond.i13.i.i14436 = call noundef i64 @llvm.umin.i64(i64 %sub.i.i14435, i64 20) %add.ptr.i.i14437 = getelementptr inbounds i8, ptr %spec.select.i.i.i14434, i64 %cond.i13.i.i14436 %add.ptr10.i.i14438 = getelementptr inbounds i8, ptr %add.ptr.i.i14437, i64 1 - br label %while.cond.i.i.i.i14488 + %cmp.i.i.i14439 = icmp eq ptr %spec.select.i.i.i14434, %add.ptr10.i.i14438 + br i1 %cmp.i.i.i14439, label %invoke.cont3028, label %while.cond.i.i.i.i14488 while.cond.i.i.i.i14488: ; preds = %if.then6.i.i14433, %while.body.i.i.i.i14492 %pTemp.0.i.i.i.i14489 = phi ptr [ %incdec.ptr.i.i.i.i14490, %while.body.i.i.i.i14492 ], [ %add.ptr10.i.i14438, %if.then6.i.i14433 ] @@ -358324,8 +358359,8 @@ if.then16.i.i14482: ; preds = %while.body.i.i.i.i1 %3512 = icmp ne i64 %sub.ptr.sub.i5.i14486, -1 br label %invoke.cont3028 -invoke.cont3028: ; preds = %while.cond.i.i.i.i14488, %if.then16.i.i14482, %while.cond.i.i14417.preheader - %retval.0.i.i14472 = phi i1 [ %3512, %if.then16.i.i14482 ], [ false, %while.cond.i.i14417.preheader ], [ false, %while.cond.i.i.i.i14488 ] +invoke.cont3028: ; preds = %while.cond.i.i.i.i14488, %if.then6.i.i14433, %if.then16.i.i14482, %while.cond.i.i14417.preheader + %retval.0.i.i14472 = phi i1 [ %3512, %if.then16.i.i14482 ], [ false, %while.cond.i.i14417.preheader ], [ false, %if.then6.i.i14433 ], [ false, %while.cond.i.i.i.i14488 ] %call3032 = invoke noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %retval.0.i.i14472, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.49, i32 noundef 1711, ptr noundef nonnull @.str.281) to label %while.cond.i.i14496.preheader unwind label %lpad2978 @@ -358346,19 +358381,22 @@ if.then6.i.i14512: ; preds = %while.cond.i.i14496 %cond.i13.i.i14515 = call noundef i64 @llvm.umin.i64(i64 %sub.i.i14514, i64 20) %add.ptr.i.i14516 = getelementptr inbounds i8, ptr %spec.select.i.i.i14513, i64 %cond.i13.i.i14515 %add.ptr10.i.i14517 = getelementptr inbounds i8, ptr %add.ptr.i.i14516, i64 3 + %cmp.i.i.i14518 = icmp eq ptr %spec.select.i.i.i14513, %add.ptr10.i.i14517 + br i1 %cmp.i.i.i14518, label %_ZN5eastl12basic_stringIDu17CountingAllocatorE21CharTypeStringRSearchEPKDuS4_S4_S4_.exit.i.i14558, label %if.end4.i.i.i14521 + +if.end4.i.i.i14521: ; preds = %if.then6.i.i14512 %sub.ptr.lhs.cast5.i.i.i14522 = ptrtoint ptr %add.ptr10.i.i14517 to i64 %sub.ptr.rhs.cast6.i.i.i14523 = ptrtoint ptr %spec.select.i.i.i14513 to i64 %sub.ptr.sub7.i.i.i14524 = sub i64 %sub.ptr.lhs.cast5.i.i.i14522, %sub.ptr.rhs.cast6.i.i.i14523 %cmp8.i.i.i14525 = icmp slt i64 %sub.ptr.sub7.i.i.i14524, 3 - br i1 %cmp8.i.i.i14525, label %invoke.cont3033, label %while.body.i.i.i14531.preheader - -while.body.i.i.i14531.preheader: ; preds = %if.then6.i.i14512 %add.ptr15.i.i.i14528 = getelementptr inbounds i8, ptr %add.ptr.i.i14516, i64 1 - br label %while.body.i.i.i14531 + %cmp16.not44.i.i.i14529 = icmp eq ptr %add.ptr15.i.i.i14528, %spec.select.i.i.i14513 + %or.cond21860 = select i1 %cmp8.i.i.i14525, i1 true, i1 %cmp16.not44.i.i.i14529 + br i1 %or.cond21860, label %invoke.cont3033, label %while.body.i.i.i14531 -while.body.i.i.i14531: ; preds = %while.body.i.i.i14531.preheader, %while.end.i.i.i14547 - %indvars.iv.i.i.i14532 = phi ptr [ %scevgep.i.i.i14550, %while.end.i.i.i14547 ], [ %add.ptr10.i.i14517, %while.body.i.i.i14531.preheader ] - %pSearchEnd.045.i.i.i14533 = phi ptr [ %incdec.ptr34.i.i.i14548, %while.end.i.i.i14547 ], [ %add.ptr15.i.i.i14528, %while.body.i.i.i14531.preheader ] +while.body.i.i.i14531: ; preds = %if.end4.i.i.i14521, %while.end.i.i.i14547 + %indvars.iv.i.i.i14532 = phi ptr [ %scevgep.i.i.i14550, %while.end.i.i.i14547 ], [ %add.ptr10.i.i14517, %if.end4.i.i.i14521 ] + %pSearchEnd.045.i.i.i14533 = phi ptr [ %incdec.ptr34.i.i.i14548, %while.end.i.i.i14547 ], [ %add.ptr15.i.i.i14528, %if.end4.i.i.i14521 ] br label %while.cond.i30.i.i.i14534 while.cond.i30.i.i.i14534: ; preds = %while.body.i34.i.i.i14539, %while.body.i.i.i14531 @@ -358391,8 +358429,7 @@ while.body25.i.i.i14552: ; preds = %while.cond21.i.i.i1 if.then27.i.i.i14556: ; preds = %while.body25.i.i.i14552 %add.ptr32.i.i.i14557 = getelementptr inbounds i8, ptr %indvars.iv49.i.i.i14535, i64 -3 - %cmp15.not.i.i14560 = icmp eq ptr %add.ptr32.i.i.i14557, %add.ptr10.i.i14517 - br i1 %cmp15.not.i.i14560, label %invoke.cont3033, label %if.then16.i.i14561 + br label %_ZN5eastl12basic_stringIDu17CountingAllocatorE21CharTypeStringRSearchEPKDuS4_S4_S4_.exit.i.i14558 while.end.i.i.i14547: ; preds = %while.cond21.i.i.i14543 %incdec.ptr34.i.i.i14548 = getelementptr inbounds i8, ptr %pSearchEnd.045.i.i.i14533, i64 -1 @@ -358400,14 +358437,20 @@ while.end.i.i.i14547: ; preds = %while.cond21.i.i.i1 %scevgep.i.i.i14550 = getelementptr i8, ptr %indvars.iv.i.i.i14532, i64 -1 br i1 %cmp16.not.i.i.i14549, label %invoke.cont3033, label %while.body.i.i.i14531, !llvm.loop !556 -if.then16.i.i14561: ; preds = %if.then27.i.i.i14556 - %sub.ptr.lhs.cast.i3.i14563 = ptrtoint ptr %add.ptr32.i.i.i14557 to i64 - %sub.ptr.sub.i5.i14565 = sub i64 %sub.ptr.lhs.cast.i3.i14563, %sub.ptr.rhs.cast6.i.i.i14523 +_ZN5eastl12basic_stringIDu17CountingAllocatorE21CharTypeStringRSearchEPKDuS4_S4_S4_.exit.i.i14558: ; preds = %if.then27.i.i.i14556, %if.then6.i.i14512 + %retval.0.i.i.i14559 = phi ptr [ %add.ptr32.i.i.i14557, %if.then27.i.i.i14556 ], [ %spec.select.i.i.i14513, %if.then6.i.i14512 ] + %cmp15.not.i.i14560 = icmp eq ptr %retval.0.i.i.i14559, %add.ptr10.i.i14517 + br i1 %cmp15.not.i.i14560, label %invoke.cont3033, label %if.then16.i.i14561 + +if.then16.i.i14561: ; preds = %_ZN5eastl12basic_stringIDu17CountingAllocatorE21CharTypeStringRSearchEPKDuS4_S4_S4_.exit.i.i14558 + %sub.ptr.lhs.cast.i3.i14563 = ptrtoint ptr %retval.0.i.i.i14559 to i64 + %sub.ptr.rhs.cast.i4.i14564 = ptrtoint ptr %spec.select.i.i.i14513 to i64 + %sub.ptr.sub.i5.i14565 = sub i64 %sub.ptr.lhs.cast.i3.i14563, %sub.ptr.rhs.cast.i4.i14564 %3519 = icmp ne i64 %sub.ptr.sub.i5.i14565, -1 br label %invoke.cont3033 -invoke.cont3033: ; preds = %while.end.i.i.i14547, %while.cond.i30.i.i.i14534, %if.then16.i.i14561, %if.then27.i.i.i14556, %if.then6.i.i14512, %while.cond.i.i14496.preheader - %retval.0.i.i14551 = phi i1 [ %3519, %if.then16.i.i14561 ], [ false, %if.then27.i.i.i14556 ], [ false, %while.cond.i.i14496.preheader ], [ false, %if.then6.i.i14512 ], [ false, %while.cond.i30.i.i.i14534 ], [ false, %while.end.i.i.i14547 ] +invoke.cont3033: ; preds = %while.end.i.i.i14547, %while.cond.i30.i.i.i14534, %if.then16.i.i14561, %_ZN5eastl12basic_stringIDu17CountingAllocatorE21CharTypeStringRSearchEPKDuS4_S4_S4_.exit.i.i14558, %if.end4.i.i.i14521, %while.cond.i.i14496.preheader + %retval.0.i.i14551 = phi i1 [ %3519, %if.then16.i.i14561 ], [ false, %_ZN5eastl12basic_stringIDu17CountingAllocatorE21CharTypeStringRSearchEPKDuS4_S4_S4_.exit.i.i14558 ], [ false, %while.cond.i.i14496.preheader ], [ false, %if.end4.i.i.i14521 ], [ false, %while.cond.i30.i.i.i14534 ], [ false, %while.end.i.i.i14547 ] %call3037 = invoke noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %retval.0.i.i14551, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.49, i32 noundef 1712, ptr noundef nonnull @.str.282) to label %while.cond.i.i14576.preheader unwind label %lpad2978 @@ -358428,19 +358471,22 @@ if.then6.i.i14592: ; preds = %while.cond.i.i14576 %cond.i13.i.i14595 = call noundef i64 @llvm.umin.i64(i64 %sub.i.i14594, i64 20) %add.ptr.i.i14596 = getelementptr inbounds i8, ptr %spec.select.i.i.i14593, i64 %cond.i13.i.i14595 %add.ptr10.i.i14597 = getelementptr inbounds i8, ptr %add.ptr.i.i14596, i64 4 + %cmp.i.i.i14598 = icmp eq ptr %spec.select.i.i.i14593, %add.ptr10.i.i14597 + br i1 %cmp.i.i.i14598, label %_ZN5eastl12basic_stringIDu17CountingAllocatorE21CharTypeStringRSearchEPKDuS4_S4_S4_.exit.i.i14638, label %if.end4.i.i.i14601 + +if.end4.i.i.i14601: ; preds = %if.then6.i.i14592 %sub.ptr.lhs.cast5.i.i.i14602 = ptrtoint ptr %add.ptr10.i.i14597 to i64 %sub.ptr.rhs.cast6.i.i.i14603 = ptrtoint ptr %spec.select.i.i.i14593 to i64 %sub.ptr.sub7.i.i.i14604 = sub i64 %sub.ptr.lhs.cast5.i.i.i14602, %sub.ptr.rhs.cast6.i.i.i14603 %cmp8.i.i.i14605 = icmp slt i64 %sub.ptr.sub7.i.i.i14604, 4 - br i1 %cmp8.i.i.i14605, label %invoke.cont3038, label %while.body.i.i.i14611.preheader - -while.body.i.i.i14611.preheader: ; preds = %if.then6.i.i14592 %add.ptr15.i.i.i14608 = getelementptr inbounds i8, ptr %add.ptr.i.i14596, i64 1 - br label %while.body.i.i.i14611 + %cmp16.not44.i.i.i14609 = icmp eq ptr %add.ptr15.i.i.i14608, %spec.select.i.i.i14593 + %or.cond21861 = select i1 %cmp8.i.i.i14605, i1 true, i1 %cmp16.not44.i.i.i14609 + br i1 %or.cond21861, label %invoke.cont3038, label %while.body.i.i.i14611 -while.body.i.i.i14611: ; preds = %while.body.i.i.i14611.preheader, %while.end.i.i.i14627 - %indvars.iv.i.i.i14612 = phi ptr [ %scevgep.i.i.i14630, %while.end.i.i.i14627 ], [ %add.ptr10.i.i14597, %while.body.i.i.i14611.preheader ] - %pSearchEnd.045.i.i.i14613 = phi ptr [ %incdec.ptr34.i.i.i14628, %while.end.i.i.i14627 ], [ %add.ptr15.i.i.i14608, %while.body.i.i.i14611.preheader ] +while.body.i.i.i14611: ; preds = %if.end4.i.i.i14601, %while.end.i.i.i14627 + %indvars.iv.i.i.i14612 = phi ptr [ %scevgep.i.i.i14630, %while.end.i.i.i14627 ], [ %add.ptr10.i.i14597, %if.end4.i.i.i14601 ] + %pSearchEnd.045.i.i.i14613 = phi ptr [ %incdec.ptr34.i.i.i14628, %while.end.i.i.i14627 ], [ %add.ptr15.i.i.i14608, %if.end4.i.i.i14601 ] br label %while.cond.i30.i.i.i14614 while.cond.i30.i.i.i14614: ; preds = %while.body.i34.i.i.i14619, %while.body.i.i.i14611 @@ -358473,8 +358519,7 @@ while.body25.i.i.i14632: ; preds = %while.cond21.i.i.i1 if.then27.i.i.i14636: ; preds = %while.body25.i.i.i14632 %add.ptr32.i.i.i14637 = getelementptr inbounds i8, ptr %indvars.iv49.i.i.i14615, i64 -4 - %cmp15.not.i.i14640 = icmp eq ptr %add.ptr32.i.i.i14637, %add.ptr10.i.i14597 - br i1 %cmp15.not.i.i14640, label %invoke.cont3038, label %if.then16.i.i14641 + br label %_ZN5eastl12basic_stringIDu17CountingAllocatorE21CharTypeStringRSearchEPKDuS4_S4_S4_.exit.i.i14638 while.end.i.i.i14627: ; preds = %while.cond21.i.i.i14623 %incdec.ptr34.i.i.i14628 = getelementptr inbounds i8, ptr %pSearchEnd.045.i.i.i14613, i64 -1 @@ -358482,14 +358527,20 @@ while.end.i.i.i14627: ; preds = %while.cond21.i.i.i1 %scevgep.i.i.i14630 = getelementptr i8, ptr %indvars.iv.i.i.i14612, i64 -1 br i1 %cmp16.not.i.i.i14629, label %invoke.cont3038, label %while.body.i.i.i14611, !llvm.loop !556 -if.then16.i.i14641: ; preds = %if.then27.i.i.i14636 - %sub.ptr.lhs.cast.i3.i14643 = ptrtoint ptr %add.ptr32.i.i.i14637 to i64 - %sub.ptr.sub.i5.i14645 = sub i64 %sub.ptr.lhs.cast.i3.i14643, %sub.ptr.rhs.cast6.i.i.i14603 +_ZN5eastl12basic_stringIDu17CountingAllocatorE21CharTypeStringRSearchEPKDuS4_S4_S4_.exit.i.i14638: ; preds = %if.then27.i.i.i14636, %if.then6.i.i14592 + %retval.0.i.i.i14639 = phi ptr [ %add.ptr32.i.i.i14637, %if.then27.i.i.i14636 ], [ %spec.select.i.i.i14593, %if.then6.i.i14592 ] + %cmp15.not.i.i14640 = icmp eq ptr %retval.0.i.i.i14639, %add.ptr10.i.i14597 + br i1 %cmp15.not.i.i14640, label %invoke.cont3038, label %if.then16.i.i14641 + +if.then16.i.i14641: ; preds = %_ZN5eastl12basic_stringIDu17CountingAllocatorE21CharTypeStringRSearchEPKDuS4_S4_S4_.exit.i.i14638 + %sub.ptr.lhs.cast.i3.i14643 = ptrtoint ptr %retval.0.i.i.i14639 to i64 + %sub.ptr.rhs.cast.i4.i14644 = ptrtoint ptr %spec.select.i.i.i14593 to i64 + %sub.ptr.sub.i5.i14645 = sub i64 %sub.ptr.lhs.cast.i3.i14643, %sub.ptr.rhs.cast.i4.i14644 %3526 = icmp eq i64 %sub.ptr.sub.i5.i14645, -1 br label %invoke.cont3038 -invoke.cont3038: ; preds = %while.end.i.i.i14627, %while.cond.i30.i.i.i14614, %if.then16.i.i14641, %if.then27.i.i.i14636, %if.then6.i.i14592, %while.cond.i.i14576.preheader - %retval.0.i.i14631 = phi i1 [ %3526, %if.then16.i.i14641 ], [ true, %if.then27.i.i.i14636 ], [ true, %while.cond.i.i14576.preheader ], [ true, %if.then6.i.i14592 ], [ true, %while.cond.i30.i.i.i14614 ], [ true, %while.end.i.i.i14627 ] +invoke.cont3038: ; preds = %while.end.i.i.i14627, %while.cond.i30.i.i.i14614, %if.then16.i.i14641, %_ZN5eastl12basic_stringIDu17CountingAllocatorE21CharTypeStringRSearchEPKDuS4_S4_S4_.exit.i.i14638, %if.end4.i.i.i14601, %while.cond.i.i14576.preheader + %retval.0.i.i14631 = phi i1 [ %3526, %if.then16.i.i14641 ], [ true, %_ZN5eastl12basic_stringIDu17CountingAllocatorE21CharTypeStringRSearchEPKDuS4_S4_S4_.exit.i.i14638 ], [ true, %while.cond.i.i14576.preheader ], [ true, %if.end4.i.i.i14601 ], [ true, %while.cond.i30.i.i.i14614 ], [ true, %while.end.i.i.i14627 ] %call3042 = invoke noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %retval.0.i.i14631, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.49, i32 noundef 1713, ptr noundef nonnull @.str.283) to label %invoke.cont3041 unwind label %lpad2978 @@ -386167,7 +386218,8 @@ if.then6.i.i14264: ; preds = %while.cond.i.i14247 %cond.i13.i.i14267 = call noundef i64 @llvm.umin.i64(i64 %sub.i.i14266, i64 20) %add.ptr.i.i14268 = getelementptr inbounds i16, ptr %spec.select.i.i.i14265, i64 %cond.i13.i.i14267 %add.ptr10.i.i14269 = getelementptr inbounds i8, ptr %add.ptr.i.i14268, i64 2 - br label %while.cond.i.i.i.i14315 + %cmp.i.i.i14270 = icmp eq ptr %spec.select.i.i.i14265, %add.ptr10.i.i14269 + br i1 %cmp.i.i.i14270, label %invoke.cont3028, label %while.cond.i.i.i.i14315 while.cond.i.i.i.i14315: ; preds = %if.then6.i.i14264, %while.body.i.i.i.i14319 %pTemp.0.i.i.i.i14316 = phi ptr [ %incdec.ptr.i.i.i.i14317, %while.body.i.i.i.i14319 ], [ %add.ptr10.i.i14269, %if.then6.i.i14264 ] @@ -386187,8 +386239,8 @@ if.then16.i.i14308: ; preds = %while.body.i.i.i.i1 %3278 = icmp ne i64 %sub.ptr.sub.i5.i14312, -2 br label %invoke.cont3028 -invoke.cont3028: ; preds = %while.cond.i.i.i.i14315, %if.then16.i.i14308, %while.cond.i.i14247.preheader - %retval.0.i.i14298 = phi i1 [ %3278, %if.then16.i.i14308 ], [ false, %while.cond.i.i14247.preheader ], [ false, %while.cond.i.i.i.i14315 ] +invoke.cont3028: ; preds = %while.cond.i.i.i.i14315, %if.then6.i.i14264, %if.then16.i.i14308, %while.cond.i.i14247.preheader + %retval.0.i.i14298 = phi i1 [ %3278, %if.then16.i.i14308 ], [ false, %while.cond.i.i14247.preheader ], [ false, %if.then6.i.i14264 ], [ false, %while.cond.i.i.i.i14315 ] %call3032 = invoke noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %retval.0.i.i14298, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.49, i32 noundef 1711, ptr noundef nonnull @.str.281) to label %while.cond.i.i14323.preheader unwind label %lpad2978 @@ -386209,19 +386261,22 @@ if.then6.i.i14340: ; preds = %while.cond.i.i14323 %cond.i13.i.i14343 = call noundef i64 @llvm.umin.i64(i64 %sub.i.i14342, i64 20) %add.ptr.i.i14344 = getelementptr inbounds i16, ptr %spec.select.i.i.i14341, i64 %cond.i13.i.i14343 %add.ptr10.i.i14345 = getelementptr inbounds i8, ptr %add.ptr.i.i14344, i64 6 + %cmp.i.i.i14346 = icmp eq ptr %spec.select.i.i.i14341, %add.ptr10.i.i14345 + br i1 %cmp.i.i.i14346, label %_ZN5eastl12basic_stringIDs17CountingAllocatorE21CharTypeStringRSearchEPKDsS4_S4_S4_.exit.i.i14381, label %if.end4.i.i.i14349 + +if.end4.i.i.i14349: ; preds = %if.then6.i.i14340 %sub.ptr.lhs.cast5.i.i.i14350 = ptrtoint ptr %add.ptr10.i.i14345 to i64 %sub.ptr.rhs.cast6.i.i.i14351 = ptrtoint ptr %spec.select.i.i.i14341 to i64 %sub.ptr.sub7.i.i.i14352 = sub i64 %sub.ptr.lhs.cast5.i.i.i14350, %sub.ptr.rhs.cast6.i.i.i14351 %cmp9.i.i.i14353 = icmp slt i64 %sub.ptr.sub7.i.i.i14352, 6 - br i1 %cmp9.i.i.i14353, label %invoke.cont3033, label %while.body.i.i.i14359.preheader - -while.body.i.i.i14359.preheader: ; preds = %if.then6.i.i14340 %add.ptr17.i.i.i14356 = getelementptr inbounds i8, ptr %add.ptr.i.i14344, i64 2 - br label %while.body.i.i.i14359 + %cmp18.not44.i.i.i14357 = icmp eq ptr %add.ptr17.i.i.i14356, %spec.select.i.i.i14341 + %or.cond22334 = select i1 %cmp9.i.i.i14353, i1 true, i1 %cmp18.not44.i.i.i14357 + br i1 %or.cond22334, label %invoke.cont3033, label %while.body.i.i.i14359 -while.body.i.i.i14359: ; preds = %while.body.i.i.i14359.preheader, %while.end.i.i.i14371 - %indvars.iv21615 = phi ptr [ %scevgep21616, %while.end.i.i.i14371 ], [ %add.ptr10.i.i14345, %while.body.i.i.i14359.preheader ] - %pSearchEnd.045.i.i.i14360 = phi ptr [ %incdec.ptr37.i.i.i14372, %while.end.i.i.i14371 ], [ %add.ptr17.i.i.i14356, %while.body.i.i.i14359.preheader ] +while.body.i.i.i14359: ; preds = %if.end4.i.i.i14349, %while.end.i.i.i14371 + %indvars.iv21615 = phi ptr [ %scevgep21616, %while.end.i.i.i14371 ], [ %add.ptr10.i.i14345, %if.end4.i.i.i14349 ] + %pSearchEnd.045.i.i.i14360 = phi ptr [ %incdec.ptr37.i.i.i14372, %while.end.i.i.i14371 ], [ %add.ptr17.i.i.i14356, %if.end4.i.i.i14349 ] br label %while.cond.i30.i.i.i14361 while.cond.i30.i.i.i14361: ; preds = %while.body.i34.i.i.i14365, %while.body.i.i.i14359 @@ -386254,8 +386309,7 @@ while.body27.i.i.i14375: ; preds = %while.cond23.i.i.i1 if.then29.i.i.i14379: ; preds = %while.body27.i.i.i14375 %add.ptr35.i.i.i14380 = getelementptr inbounds i8, ptr %indvars.iv21617, i64 -6 - %cmp15.not.i.i14383 = icmp eq ptr %add.ptr35.i.i.i14380, %add.ptr10.i.i14345 - br i1 %cmp15.not.i.i14383, label %invoke.cont3033, label %if.then16.i.i14384 + br label %_ZN5eastl12basic_stringIDs17CountingAllocatorE21CharTypeStringRSearchEPKDsS4_S4_S4_.exit.i.i14381 while.end.i.i.i14371: ; preds = %while.cond23.i.i.i14367 %incdec.ptr37.i.i.i14372 = getelementptr inbounds i8, ptr %pSearchEnd.045.i.i.i14360, i64 -2 @@ -386263,14 +386317,20 @@ while.end.i.i.i14371: ; preds = %while.cond23.i.i.i1 %scevgep21616 = getelementptr i8, ptr %indvars.iv21615, i64 -2 br i1 %cmp18.not.i.i.i14373, label %invoke.cont3033, label %while.body.i.i.i14359, !llvm.loop !589 -if.then16.i.i14384: ; preds = %if.then29.i.i.i14379 - %sub.ptr.lhs.cast.i3.i14386 = ptrtoint ptr %add.ptr35.i.i.i14380 to i64 - %sub.ptr.sub.i5.i14388 = sub i64 %sub.ptr.lhs.cast.i3.i14386, %sub.ptr.rhs.cast6.i.i.i14351 +_ZN5eastl12basic_stringIDs17CountingAllocatorE21CharTypeStringRSearchEPKDsS4_S4_S4_.exit.i.i14381: ; preds = %if.then29.i.i.i14379, %if.then6.i.i14340 + %retval.0.i.i.i14382 = phi ptr [ %add.ptr35.i.i.i14380, %if.then29.i.i.i14379 ], [ %spec.select.i.i.i14341, %if.then6.i.i14340 ] + %cmp15.not.i.i14383 = icmp eq ptr %retval.0.i.i.i14382, %add.ptr10.i.i14345 + br i1 %cmp15.not.i.i14383, label %invoke.cont3033, label %if.then16.i.i14384 + +if.then16.i.i14384: ; preds = %_ZN5eastl12basic_stringIDs17CountingAllocatorE21CharTypeStringRSearchEPKDsS4_S4_S4_.exit.i.i14381 + %sub.ptr.lhs.cast.i3.i14386 = ptrtoint ptr %retval.0.i.i.i14382 to i64 + %sub.ptr.rhs.cast.i4.i14387 = ptrtoint ptr %spec.select.i.i.i14341 to i64 + %sub.ptr.sub.i5.i14388 = sub i64 %sub.ptr.lhs.cast.i3.i14386, %sub.ptr.rhs.cast.i4.i14387 %3285 = icmp ne i64 %sub.ptr.sub.i5.i14388, -2 br label %invoke.cont3033 -invoke.cont3033: ; preds = %while.end.i.i.i14371, %while.cond.i30.i.i.i14361, %if.then16.i.i14384, %if.then29.i.i.i14379, %if.then6.i.i14340, %while.cond.i.i14323.preheader - %retval.0.i.i14374 = phi i1 [ %3285, %if.then16.i.i14384 ], [ false, %if.then29.i.i.i14379 ], [ false, %while.cond.i.i14323.preheader ], [ false, %if.then6.i.i14340 ], [ false, %while.cond.i30.i.i.i14361 ], [ false, %while.end.i.i.i14371 ] +invoke.cont3033: ; preds = %while.end.i.i.i14371, %while.cond.i30.i.i.i14361, %if.then16.i.i14384, %_ZN5eastl12basic_stringIDs17CountingAllocatorE21CharTypeStringRSearchEPKDsS4_S4_S4_.exit.i.i14381, %if.end4.i.i.i14349, %while.cond.i.i14323.preheader + %retval.0.i.i14374 = phi i1 [ %3285, %if.then16.i.i14384 ], [ false, %_ZN5eastl12basic_stringIDs17CountingAllocatorE21CharTypeStringRSearchEPKDsS4_S4_S4_.exit.i.i14381 ], [ false, %while.cond.i.i14323.preheader ], [ false, %if.end4.i.i.i14349 ], [ false, %while.cond.i30.i.i.i14361 ], [ false, %while.end.i.i.i14371 ] %call3037 = invoke noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %retval.0.i.i14374, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.49, i32 noundef 1712, ptr noundef nonnull @.str.282) to label %while.cond.i.i14400.preheader unwind label %lpad2978 @@ -386291,19 +386351,22 @@ if.then6.i.i14417: ; preds = %while.cond.i.i14400 %cond.i13.i.i14420 = call noundef i64 @llvm.umin.i64(i64 %sub.i.i14419, i64 20) %add.ptr.i.i14421 = getelementptr inbounds i16, ptr %spec.select.i.i.i14418, i64 %cond.i13.i.i14420 %add.ptr10.i.i14422 = getelementptr inbounds i8, ptr %add.ptr.i.i14421, i64 8 + %cmp.i.i.i14423 = icmp eq ptr %spec.select.i.i.i14418, %add.ptr10.i.i14422 + br i1 %cmp.i.i.i14423, label %_ZN5eastl12basic_stringIDs17CountingAllocatorE21CharTypeStringRSearchEPKDsS4_S4_S4_.exit.i.i14458, label %if.end4.i.i.i14426 + +if.end4.i.i.i14426: ; preds = %if.then6.i.i14417 %sub.ptr.lhs.cast5.i.i.i14427 = ptrtoint ptr %add.ptr10.i.i14422 to i64 %sub.ptr.rhs.cast6.i.i.i14428 = ptrtoint ptr %spec.select.i.i.i14418 to i64 %sub.ptr.sub7.i.i.i14429 = sub i64 %sub.ptr.lhs.cast5.i.i.i14427, %sub.ptr.rhs.cast6.i.i.i14428 %cmp9.i.i.i14430 = icmp slt i64 %sub.ptr.sub7.i.i.i14429, 8 - br i1 %cmp9.i.i.i14430, label %invoke.cont3038, label %while.body.i.i.i14436.preheader - -while.body.i.i.i14436.preheader: ; preds = %if.then6.i.i14417 %add.ptr17.i.i.i14433 = getelementptr inbounds i8, ptr %add.ptr.i.i14421, i64 2 - br label %while.body.i.i.i14436 + %cmp18.not44.i.i.i14434 = icmp eq ptr %add.ptr17.i.i.i14433, %spec.select.i.i.i14418 + %or.cond22335 = select i1 %cmp9.i.i.i14430, i1 true, i1 %cmp18.not44.i.i.i14434 + br i1 %or.cond22335, label %invoke.cont3038, label %while.body.i.i.i14436 -while.body.i.i.i14436: ; preds = %while.body.i.i.i14436.preheader, %while.end.i.i.i14448 - %indvars.iv21620 = phi ptr [ %scevgep21621, %while.end.i.i.i14448 ], [ %add.ptr10.i.i14422, %while.body.i.i.i14436.preheader ] - %pSearchEnd.045.i.i.i14437 = phi ptr [ %incdec.ptr37.i.i.i14449, %while.end.i.i.i14448 ], [ %add.ptr17.i.i.i14433, %while.body.i.i.i14436.preheader ] +while.body.i.i.i14436: ; preds = %if.end4.i.i.i14426, %while.end.i.i.i14448 + %indvars.iv21620 = phi ptr [ %scevgep21621, %while.end.i.i.i14448 ], [ %add.ptr10.i.i14422, %if.end4.i.i.i14426 ] + %pSearchEnd.045.i.i.i14437 = phi ptr [ %incdec.ptr37.i.i.i14449, %while.end.i.i.i14448 ], [ %add.ptr17.i.i.i14433, %if.end4.i.i.i14426 ] br label %while.cond.i30.i.i.i14438 while.cond.i30.i.i.i14438: ; preds = %while.body.i34.i.i.i14442, %while.body.i.i.i14436 @@ -386336,8 +386399,7 @@ while.body27.i.i.i14452: ; preds = %while.cond23.i.i.i1 if.then29.i.i.i14456: ; preds = %while.body27.i.i.i14452 %add.ptr35.i.i.i14457 = getelementptr inbounds i8, ptr %indvars.iv21622, i64 -8 - %cmp15.not.i.i14460 = icmp eq ptr %add.ptr35.i.i.i14457, %add.ptr10.i.i14422 - br i1 %cmp15.not.i.i14460, label %invoke.cont3038, label %if.then16.i.i14461 + br label %_ZN5eastl12basic_stringIDs17CountingAllocatorE21CharTypeStringRSearchEPKDsS4_S4_S4_.exit.i.i14458 while.end.i.i.i14448: ; preds = %while.cond23.i.i.i14444 %incdec.ptr37.i.i.i14449 = getelementptr inbounds i8, ptr %pSearchEnd.045.i.i.i14437, i64 -2 @@ -386345,14 +386407,20 @@ while.end.i.i.i14448: ; preds = %while.cond23.i.i.i1 %scevgep21621 = getelementptr i8, ptr %indvars.iv21620, i64 -2 br i1 %cmp18.not.i.i.i14450, label %invoke.cont3038, label %while.body.i.i.i14436, !llvm.loop !589 -if.then16.i.i14461: ; preds = %if.then29.i.i.i14456 - %sub.ptr.lhs.cast.i3.i14463 = ptrtoint ptr %add.ptr35.i.i.i14457 to i64 - %sub.ptr.sub.i5.i14465 = sub i64 %sub.ptr.lhs.cast.i3.i14463, %sub.ptr.rhs.cast6.i.i.i14428 +_ZN5eastl12basic_stringIDs17CountingAllocatorE21CharTypeStringRSearchEPKDsS4_S4_S4_.exit.i.i14458: ; preds = %if.then29.i.i.i14456, %if.then6.i.i14417 + %retval.0.i.i.i14459 = phi ptr [ %add.ptr35.i.i.i14457, %if.then29.i.i.i14456 ], [ %spec.select.i.i.i14418, %if.then6.i.i14417 ] + %cmp15.not.i.i14460 = icmp eq ptr %retval.0.i.i.i14459, %add.ptr10.i.i14422 + br i1 %cmp15.not.i.i14460, label %invoke.cont3038, label %if.then16.i.i14461 + +if.then16.i.i14461: ; preds = %_ZN5eastl12basic_stringIDs17CountingAllocatorE21CharTypeStringRSearchEPKDsS4_S4_S4_.exit.i.i14458 + %sub.ptr.lhs.cast.i3.i14463 = ptrtoint ptr %retval.0.i.i.i14459 to i64 + %sub.ptr.rhs.cast.i4.i14464 = ptrtoint ptr %spec.select.i.i.i14418 to i64 + %sub.ptr.sub.i5.i14465 = sub i64 %sub.ptr.lhs.cast.i3.i14463, %sub.ptr.rhs.cast.i4.i14464 %3292 = icmp eq i64 %sub.ptr.sub.i5.i14465, -2 br label %invoke.cont3038 -invoke.cont3038: ; preds = %while.end.i.i.i14448, %while.cond.i30.i.i.i14438, %if.then16.i.i14461, %if.then29.i.i.i14456, %if.then6.i.i14417, %while.cond.i.i14400.preheader - %retval.0.i.i14451 = phi i1 [ %3292, %if.then16.i.i14461 ], [ true, %if.then29.i.i.i14456 ], [ true, %while.cond.i.i14400.preheader ], [ true, %if.then6.i.i14417 ], [ true, %while.cond.i30.i.i.i14438 ], [ true, %while.end.i.i.i14448 ] +invoke.cont3038: ; preds = %while.end.i.i.i14448, %while.cond.i30.i.i.i14438, %if.then16.i.i14461, %_ZN5eastl12basic_stringIDs17CountingAllocatorE21CharTypeStringRSearchEPKDsS4_S4_S4_.exit.i.i14458, %if.end4.i.i.i14426, %while.cond.i.i14400.preheader + %retval.0.i.i14451 = phi i1 [ %3292, %if.then16.i.i14461 ], [ true, %_ZN5eastl12basic_stringIDs17CountingAllocatorE21CharTypeStringRSearchEPKDsS4_S4_S4_.exit.i.i14458 ], [ true, %while.cond.i.i14400.preheader ], [ true, %if.end4.i.i.i14426 ], [ true, %while.cond.i30.i.i.i14438 ], [ true, %while.end.i.i.i14448 ] %call3042 = invoke noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %retval.0.i.i14451, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.49, i32 noundef 1713, ptr noundef nonnull @.str.283) to label %invoke.cont3041 unwind label %lpad2978 @@ -414042,7 +414110,8 @@ if.then6.i.i14285: ; preds = %while.cond.i.i14268 %cond.i13.i.i14288 = call noundef i64 @llvm.umin.i64(i64 %sub.i.i14287, i64 20) %add.ptr.i.i14289 = getelementptr inbounds i32, ptr %spec.select.i.i.i14286, i64 %cond.i13.i.i14288 %add.ptr10.i.i14290 = getelementptr inbounds i8, ptr %add.ptr.i.i14289, i64 4 - br label %while.cond.i.i.i.i14336 + %cmp.i.i.i14291 = icmp eq ptr %spec.select.i.i.i14286, %add.ptr10.i.i14290 + br i1 %cmp.i.i.i14291, label %invoke.cont2974, label %while.cond.i.i.i.i14336 while.cond.i.i.i.i14336: ; preds = %if.then6.i.i14285, %while.body.i.i.i.i14340 %pTemp.0.i.i.i.i14337 = phi ptr [ %incdec.ptr.i.i.i.i14338, %while.body.i.i.i.i14340 ], [ %add.ptr10.i.i14290, %if.then6.i.i14285 ] @@ -414062,8 +414131,8 @@ if.then16.i.i14329: ; preds = %while.body.i.i.i.i1 %3309 = icmp ne i64 %sub.ptr.sub.i5.i14333, -4 br label %invoke.cont2974 -invoke.cont2974: ; preds = %while.cond.i.i.i.i14336, %if.then16.i.i14329, %while.cond.i.i14268.preheader - %retval.0.i.i14319 = phi i1 [ %3309, %if.then16.i.i14329 ], [ false, %while.cond.i.i14268.preheader ], [ false, %while.cond.i.i.i.i14336 ] +invoke.cont2974: ; preds = %while.cond.i.i.i.i14336, %if.then6.i.i14285, %if.then16.i.i14329, %while.cond.i.i14268.preheader + %retval.0.i.i14319 = phi i1 [ %3309, %if.then16.i.i14329 ], [ false, %while.cond.i.i14268.preheader ], [ false, %if.then6.i.i14285 ], [ false, %while.cond.i.i.i.i14336 ] %call2978 = invoke noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %retval.0.i.i14319, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.49, i32 noundef 1711, ptr noundef nonnull @.str.281) to label %while.cond.i.i14344.preheader unwind label %lpad2924 @@ -414084,19 +414153,22 @@ if.then6.i.i14361: ; preds = %while.cond.i.i14344 %cond.i13.i.i14364 = call noundef i64 @llvm.umin.i64(i64 %sub.i.i14363, i64 20) %add.ptr.i.i14365 = getelementptr inbounds i32, ptr %spec.select.i.i.i14362, i64 %cond.i13.i.i14364 %add.ptr10.i.i14366 = getelementptr inbounds i8, ptr %add.ptr.i.i14365, i64 12 + %cmp.i.i.i14367 = icmp eq ptr %spec.select.i.i.i14362, %add.ptr10.i.i14366 + br i1 %cmp.i.i.i14367, label %_ZN5eastl12basic_stringIDi17CountingAllocatorE21CharTypeStringRSearchEPKDiS4_S4_S4_.exit.i.i14402, label %if.end4.i.i.i14370 + +if.end4.i.i.i14370: ; preds = %if.then6.i.i14361 %sub.ptr.lhs.cast5.i.i.i14371 = ptrtoint ptr %add.ptr10.i.i14366 to i64 %sub.ptr.rhs.cast6.i.i.i14372 = ptrtoint ptr %spec.select.i.i.i14362 to i64 %sub.ptr.sub7.i.i.i14373 = sub i64 %sub.ptr.lhs.cast5.i.i.i14371, %sub.ptr.rhs.cast6.i.i.i14372 %cmp9.i.i.i14374 = icmp slt i64 %sub.ptr.sub7.i.i.i14373, 12 - br i1 %cmp9.i.i.i14374, label %invoke.cont2979, label %while.body.i.i.i14380.preheader - -while.body.i.i.i14380.preheader: ; preds = %if.then6.i.i14361 %add.ptr17.i.i.i14377 = getelementptr inbounds i8, ptr %add.ptr.i.i14365, i64 4 - br label %while.body.i.i.i14380 + %cmp18.not44.i.i.i14378 = icmp eq ptr %add.ptr17.i.i.i14377, %spec.select.i.i.i14362 + %or.cond22294 = select i1 %cmp9.i.i.i14374, i1 true, i1 %cmp18.not44.i.i.i14378 + br i1 %or.cond22294, label %invoke.cont2979, label %while.body.i.i.i14380 -while.body.i.i.i14380: ; preds = %while.body.i.i.i14380.preheader, %while.end.i.i.i14392 - %indvars.iv21587 = phi ptr [ %scevgep21588, %while.end.i.i.i14392 ], [ %add.ptr10.i.i14366, %while.body.i.i.i14380.preheader ] - %pSearchEnd.045.i.i.i14381 = phi ptr [ %incdec.ptr36.i.i.i14393, %while.end.i.i.i14392 ], [ %add.ptr17.i.i.i14377, %while.body.i.i.i14380.preheader ] +while.body.i.i.i14380: ; preds = %if.end4.i.i.i14370, %while.end.i.i.i14392 + %indvars.iv21587 = phi ptr [ %scevgep21588, %while.end.i.i.i14392 ], [ %add.ptr10.i.i14366, %if.end4.i.i.i14370 ] + %pSearchEnd.045.i.i.i14381 = phi ptr [ %incdec.ptr36.i.i.i14393, %while.end.i.i.i14392 ], [ %add.ptr17.i.i.i14377, %if.end4.i.i.i14370 ] br label %while.cond.i30.i.i.i14382 while.cond.i30.i.i.i14382: ; preds = %while.body.i34.i.i.i14386, %while.body.i.i.i14380 @@ -414129,8 +414201,7 @@ while.body26.i.i.i14396: ; preds = %while.cond23.i.i.i1 if.then28.i.i.i14400: ; preds = %while.body26.i.i.i14396 %add.ptr34.i.i.i14401 = getelementptr inbounds i8, ptr %indvars.iv21589, i64 -12 - %cmp15.not.i.i14404 = icmp eq ptr %add.ptr34.i.i.i14401, %add.ptr10.i.i14366 - br i1 %cmp15.not.i.i14404, label %invoke.cont2979, label %if.then16.i.i14405 + br label %_ZN5eastl12basic_stringIDi17CountingAllocatorE21CharTypeStringRSearchEPKDiS4_S4_S4_.exit.i.i14402 while.end.i.i.i14392: ; preds = %while.cond23.i.i.i14388 %incdec.ptr36.i.i.i14393 = getelementptr inbounds i8, ptr %pSearchEnd.045.i.i.i14381, i64 -4 @@ -414138,14 +414209,20 @@ while.end.i.i.i14392: ; preds = %while.cond23.i.i.i1 %scevgep21588 = getelementptr i8, ptr %indvars.iv21587, i64 -4 br i1 %cmp18.not.i.i.i14394, label %invoke.cont2979, label %while.body.i.i.i14380, !llvm.loop !626 -if.then16.i.i14405: ; preds = %if.then28.i.i.i14400 - %sub.ptr.lhs.cast.i3.i14407 = ptrtoint ptr %add.ptr34.i.i.i14401 to i64 - %sub.ptr.sub.i5.i14409 = sub i64 %sub.ptr.lhs.cast.i3.i14407, %sub.ptr.rhs.cast6.i.i.i14372 +_ZN5eastl12basic_stringIDi17CountingAllocatorE21CharTypeStringRSearchEPKDiS4_S4_S4_.exit.i.i14402: ; preds = %if.then28.i.i.i14400, %if.then6.i.i14361 + %retval.0.i.i.i14403 = phi ptr [ %add.ptr34.i.i.i14401, %if.then28.i.i.i14400 ], [ %spec.select.i.i.i14362, %if.then6.i.i14361 ] + %cmp15.not.i.i14404 = icmp eq ptr %retval.0.i.i.i14403, %add.ptr10.i.i14366 + br i1 %cmp15.not.i.i14404, label %invoke.cont2979, label %if.then16.i.i14405 + +if.then16.i.i14405: ; preds = %_ZN5eastl12basic_stringIDi17CountingAllocatorE21CharTypeStringRSearchEPKDiS4_S4_S4_.exit.i.i14402 + %sub.ptr.lhs.cast.i3.i14407 = ptrtoint ptr %retval.0.i.i.i14403 to i64 + %sub.ptr.rhs.cast.i4.i14408 = ptrtoint ptr %spec.select.i.i.i14362 to i64 + %sub.ptr.sub.i5.i14409 = sub i64 %sub.ptr.lhs.cast.i3.i14407, %sub.ptr.rhs.cast.i4.i14408 %3316 = icmp ne i64 %sub.ptr.sub.i5.i14409, -4 br label %invoke.cont2979 -invoke.cont2979: ; preds = %while.end.i.i.i14392, %while.cond.i30.i.i.i14382, %if.then16.i.i14405, %if.then28.i.i.i14400, %if.then6.i.i14361, %while.cond.i.i14344.preheader - %retval.0.i.i14395 = phi i1 [ %3316, %if.then16.i.i14405 ], [ false, %if.then28.i.i.i14400 ], [ false, %while.cond.i.i14344.preheader ], [ false, %if.then6.i.i14361 ], [ false, %while.cond.i30.i.i.i14382 ], [ false, %while.end.i.i.i14392 ] +invoke.cont2979: ; preds = %while.end.i.i.i14392, %while.cond.i30.i.i.i14382, %if.then16.i.i14405, %_ZN5eastl12basic_stringIDi17CountingAllocatorE21CharTypeStringRSearchEPKDiS4_S4_S4_.exit.i.i14402, %if.end4.i.i.i14370, %while.cond.i.i14344.preheader + %retval.0.i.i14395 = phi i1 [ %3316, %if.then16.i.i14405 ], [ false, %_ZN5eastl12basic_stringIDi17CountingAllocatorE21CharTypeStringRSearchEPKDiS4_S4_S4_.exit.i.i14402 ], [ false, %while.cond.i.i14344.preheader ], [ false, %if.end4.i.i.i14370 ], [ false, %while.cond.i30.i.i.i14382 ], [ false, %while.end.i.i.i14392 ] %call2983 = invoke noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %retval.0.i.i14395, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.49, i32 noundef 1712, ptr noundef nonnull @.str.282) to label %while.cond.i.i14421.preheader unwind label %lpad2924 @@ -414166,19 +414243,22 @@ if.then6.i.i14438: ; preds = %while.cond.i.i14421 %cond.i13.i.i14441 = call noundef i64 @llvm.umin.i64(i64 %sub.i.i14440, i64 20) %add.ptr.i.i14442 = getelementptr inbounds i32, ptr %spec.select.i.i.i14439, i64 %cond.i13.i.i14441 %add.ptr10.i.i14443 = getelementptr inbounds i8, ptr %add.ptr.i.i14442, i64 16 + %cmp.i.i.i14444 = icmp eq ptr %spec.select.i.i.i14439, %add.ptr10.i.i14443 + br i1 %cmp.i.i.i14444, label %_ZN5eastl12basic_stringIDi17CountingAllocatorE21CharTypeStringRSearchEPKDiS4_S4_S4_.exit.i.i14479, label %if.end4.i.i.i14447 + +if.end4.i.i.i14447: ; preds = %if.then6.i.i14438 %sub.ptr.lhs.cast5.i.i.i14448 = ptrtoint ptr %add.ptr10.i.i14443 to i64 %sub.ptr.rhs.cast6.i.i.i14449 = ptrtoint ptr %spec.select.i.i.i14439 to i64 %sub.ptr.sub7.i.i.i14450 = sub i64 %sub.ptr.lhs.cast5.i.i.i14448, %sub.ptr.rhs.cast6.i.i.i14449 %cmp9.i.i.i14451 = icmp slt i64 %sub.ptr.sub7.i.i.i14450, 16 - br i1 %cmp9.i.i.i14451, label %invoke.cont2984, label %while.body.i.i.i14457.preheader - -while.body.i.i.i14457.preheader: ; preds = %if.then6.i.i14438 %add.ptr17.i.i.i14454 = getelementptr inbounds i8, ptr %add.ptr.i.i14442, i64 4 - br label %while.body.i.i.i14457 + %cmp18.not44.i.i.i14455 = icmp eq ptr %add.ptr17.i.i.i14454, %spec.select.i.i.i14439 + %or.cond22295 = select i1 %cmp9.i.i.i14451, i1 true, i1 %cmp18.not44.i.i.i14455 + br i1 %or.cond22295, label %invoke.cont2984, label %while.body.i.i.i14457 -while.body.i.i.i14457: ; preds = %while.body.i.i.i14457.preheader, %while.end.i.i.i14469 - %indvars.iv21592 = phi ptr [ %scevgep21593, %while.end.i.i.i14469 ], [ %add.ptr10.i.i14443, %while.body.i.i.i14457.preheader ] - %pSearchEnd.045.i.i.i14458 = phi ptr [ %incdec.ptr36.i.i.i14470, %while.end.i.i.i14469 ], [ %add.ptr17.i.i.i14454, %while.body.i.i.i14457.preheader ] +while.body.i.i.i14457: ; preds = %if.end4.i.i.i14447, %while.end.i.i.i14469 + %indvars.iv21592 = phi ptr [ %scevgep21593, %while.end.i.i.i14469 ], [ %add.ptr10.i.i14443, %if.end4.i.i.i14447 ] + %pSearchEnd.045.i.i.i14458 = phi ptr [ %incdec.ptr36.i.i.i14470, %while.end.i.i.i14469 ], [ %add.ptr17.i.i.i14454, %if.end4.i.i.i14447 ] br label %while.cond.i30.i.i.i14459 while.cond.i30.i.i.i14459: ; preds = %while.body.i34.i.i.i14463, %while.body.i.i.i14457 @@ -414211,8 +414291,7 @@ while.body26.i.i.i14473: ; preds = %while.cond23.i.i.i1 if.then28.i.i.i14477: ; preds = %while.body26.i.i.i14473 %add.ptr34.i.i.i14478 = getelementptr inbounds i8, ptr %indvars.iv21594, i64 -16 - %cmp15.not.i.i14481 = icmp eq ptr %add.ptr34.i.i.i14478, %add.ptr10.i.i14443 - br i1 %cmp15.not.i.i14481, label %invoke.cont2984, label %if.then16.i.i14482 + br label %_ZN5eastl12basic_stringIDi17CountingAllocatorE21CharTypeStringRSearchEPKDiS4_S4_S4_.exit.i.i14479 while.end.i.i.i14469: ; preds = %while.cond23.i.i.i14465 %incdec.ptr36.i.i.i14470 = getelementptr inbounds i8, ptr %pSearchEnd.045.i.i.i14458, i64 -4 @@ -414220,14 +414299,20 @@ while.end.i.i.i14469: ; preds = %while.cond23.i.i.i1 %scevgep21593 = getelementptr i8, ptr %indvars.iv21592, i64 -4 br i1 %cmp18.not.i.i.i14471, label %invoke.cont2984, label %while.body.i.i.i14457, !llvm.loop !626 -if.then16.i.i14482: ; preds = %if.then28.i.i.i14477 - %sub.ptr.lhs.cast.i3.i14484 = ptrtoint ptr %add.ptr34.i.i.i14478 to i64 - %sub.ptr.sub.i5.i14486 = sub i64 %sub.ptr.lhs.cast.i3.i14484, %sub.ptr.rhs.cast6.i.i.i14449 +_ZN5eastl12basic_stringIDi17CountingAllocatorE21CharTypeStringRSearchEPKDiS4_S4_S4_.exit.i.i14479: ; preds = %if.then28.i.i.i14477, %if.then6.i.i14438 + %retval.0.i.i.i14480 = phi ptr [ %add.ptr34.i.i.i14478, %if.then28.i.i.i14477 ], [ %spec.select.i.i.i14439, %if.then6.i.i14438 ] + %cmp15.not.i.i14481 = icmp eq ptr %retval.0.i.i.i14480, %add.ptr10.i.i14443 + br i1 %cmp15.not.i.i14481, label %invoke.cont2984, label %if.then16.i.i14482 + +if.then16.i.i14482: ; preds = %_ZN5eastl12basic_stringIDi17CountingAllocatorE21CharTypeStringRSearchEPKDiS4_S4_S4_.exit.i.i14479 + %sub.ptr.lhs.cast.i3.i14484 = ptrtoint ptr %retval.0.i.i.i14480 to i64 + %sub.ptr.rhs.cast.i4.i14485 = ptrtoint ptr %spec.select.i.i.i14439 to i64 + %sub.ptr.sub.i5.i14486 = sub i64 %sub.ptr.lhs.cast.i3.i14484, %sub.ptr.rhs.cast.i4.i14485 %3323 = icmp eq i64 %sub.ptr.sub.i5.i14486, -4 br label %invoke.cont2984 -invoke.cont2984: ; preds = %while.end.i.i.i14469, %while.cond.i30.i.i.i14459, %if.then16.i.i14482, %if.then28.i.i.i14477, %if.then6.i.i14438, %while.cond.i.i14421.preheader - %retval.0.i.i14472 = phi i1 [ %3323, %if.then16.i.i14482 ], [ true, %if.then28.i.i.i14477 ], [ true, %while.cond.i.i14421.preheader ], [ true, %if.then6.i.i14438 ], [ true, %while.cond.i30.i.i.i14459 ], [ true, %while.end.i.i.i14469 ] +invoke.cont2984: ; preds = %while.end.i.i.i14469, %while.cond.i30.i.i.i14459, %if.then16.i.i14482, %_ZN5eastl12basic_stringIDi17CountingAllocatorE21CharTypeStringRSearchEPKDiS4_S4_S4_.exit.i.i14479, %if.end4.i.i.i14447, %while.cond.i.i14421.preheader + %retval.0.i.i14472 = phi i1 [ %3323, %if.then16.i.i14482 ], [ true, %_ZN5eastl12basic_stringIDi17CountingAllocatorE21CharTypeStringRSearchEPKDiS4_S4_S4_.exit.i.i14479 ], [ true, %while.cond.i.i14421.preheader ], [ true, %if.end4.i.i.i14447 ], [ true, %while.cond.i30.i.i.i14459 ], [ true, %while.end.i.i.i14469 ] %call2988 = invoke noundef i32 @_ZN2EA8UnitTest12TestInternal17EATEST_VERIFY_IMPEbRiPKciS4_(i1 noundef zeroext %retval.0.i.i14472, ptr noundef nonnull align 4 dereferenceable(4) %nErrorCount, ptr noundef nonnull @.str.49, i32 noundef 1713, ptr noundef nonnull @.str.283) to label %invoke.cont2987 unwind label %lpad2924 diff --git a/bench/faiss/optimized/IndexIDMap.cpp.ll b/bench/faiss/optimized/IndexIDMap.cpp.ll index 4e7a39e2118..cc53aacdc71 100644 --- a/bench/faiss/optimized/IndexIDMap.cpp.ll +++ b/bench/faiss/optimized/IndexIDMap.cpp.ll @@ -3486,34 +3486,34 @@ define weak_odr void @_ZNK5faiss19IndexIDMap2TemplateINS_5IndexEE17check_consist 27: ; preds = %23 invoke void @__cxa_throw(ptr nonnull %26, ptr nonnull @_ZTIN5faiss14FaissExceptionE, ptr nonnull @_ZN5faiss14FaissExceptionD2Ev) #22 - to label %93 unwind label %28 + to label %91 unwind label %28 28: ; preds = %27, %21, %17 %29 = landingpad { ptr, i32 } cleanup - br label %92 + br label %90 30: ; preds = %23 %31 = landingpad { ptr, i32 } cleanup call void @__cxa_free_exception(ptr %26) #14 - br label %92 + br label %90 32: ; preds = %1 %33 = getelementptr inbounds i8, ptr %0, i64 16 %34 = load i64, ptr %33, align 8 %35 = icmp eq i64 %7, %34 - br i1 %35, label %.preheader.split, label %39 + br i1 %35, label %.preheader, label %39 -.preheader.split: ; preds = %32 +.preheader: ; preds = %32 %.not = icmp eq i64 %7, 0 - br i1 %.not, label %._crit_edge, label %.lr.ph + br i1 %.not, label %._crit_edge, label %.lr.ph.split.preheader -.lr.ph: ; preds = %.preheader.split +.lr.ph.split.preheader: ; preds = %.preheader %36 = getelementptr inbounds i8, ptr %0, i64 88 %37 = load i64, ptr %36, align 8 %38 = load ptr, ptr %5, align 8 - br label %56 + br label %.lr.ph.split 39: ; preds = %32 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #14 @@ -3536,113 +3536,113 @@ define weak_odr void @_ZNK5faiss19IndexIDMap2TemplateINS_5IndexEE17check_consist 49: ; preds = %45 invoke void @__cxa_throw(ptr nonnull %48, ptr nonnull @_ZTIN5faiss14FaissExceptionE, ptr nonnull @_ZN5faiss14FaissExceptionD2Ev) #22 - to label %93 unwind label %50 + to label %91 unwind label %50 50: ; preds = %49, %43, %39 %51 = landingpad { ptr, i32 } cleanup - br label %92 + br label %90 52: ; preds = %45 %53 = landingpad { ptr, i32 } cleanup call void @__cxa_free_exception(ptr %48) #14 - br label %92 + br label %90 54: ; preds = %_ZNKSt13unordered_mapIllSt4hashIlESt8equal_toIlESaISt4pairIKllEEE2atERS5_.exit %55 = add nuw i64 %.01426, 1 %exitcond.not = icmp eq i64 %55, %7 - br i1 %exitcond.not, label %._crit_edge, label %56, !llvm.loop !23 - -56: ; preds = %.lr.ph, %54 - %.01426 = phi i64 [ 0, %.lr.ph ], [ %55, %54 ] - %57 = getelementptr inbounds i64, ptr %11, i64 %.01426 - %58 = load i64, ptr %57, align 8 - %59 = urem i64 %58, %37 - %60 = getelementptr inbounds ptr, ptr %38, i64 %59 - %61 = load ptr, ptr %60, align 8 - %.not.i.i.i.i.i = icmp eq ptr %61, null - br i1 %.not.i.i.i.i.i, label %.loopexit.i.i, label %62 - -62: ; preds = %56 - %63 = load ptr, ptr %61, align 8 - %64 = getelementptr inbounds i8, ptr %63, i64 8 - %65 = load i64, ptr %64, align 8 - %66 = icmp eq i64 %58, %65 - br i1 %66, label %_ZNKSt13unordered_mapIllSt4hashIlESt8equal_toIlESaISt4pairIKllEEE2atERS5_.exit, label %.lr.ph.i.i.i.i.i - -67: ; preds = %70 - %68 = icmp eq i64 %58, %72 - br i1 %68, label %_ZNKSt13unordered_mapIllSt4hashIlESt8equal_toIlESaISt4pairIKllEEE2atERS5_.exit, label %.lr.ph.i.i.i.i.i, !llvm.loop !12 - -.lr.ph.i.i.i.i.i: ; preds = %62, %67 - %.018.i.i.i.i.i = phi ptr [ %69, %67 ], [ %63, %62 ] - %69 = load ptr, ptr %.018.i.i.i.i.i, align 8 - %.not16.i.i.i.i.i = icmp eq ptr %69, null - br i1 %.not16.i.i.i.i.i, label %.loopexit.i.i, label %70 - -70: ; preds = %.lr.ph.i.i.i.i.i - %71 = getelementptr inbounds i8, ptr %69, i64 8 - %72 = load i64, ptr %71, align 8 - %73 = urem i64 %72, %37 - %.not17.i.i.i.i.i = icmp eq i64 %73, %59 - br i1 %.not17.i.i.i.i.i, label %67, label %.loopexit.i.i, !llvm.loop !12 - -.loopexit.i.i: ; preds = %56, %70, %.lr.ph.i.i.i.i.i + br i1 %exitcond.not, label %._crit_edge, label %.lr.ph.split, !llvm.loop !23 + +.lr.ph.split: ; preds = %.lr.ph.split.preheader, %54 + %.01426 = phi i64 [ %55, %54 ], [ 0, %.lr.ph.split.preheader ] + %56 = getelementptr inbounds i64, ptr %11, i64 %.01426 + %57 = load i64, ptr %56, align 8 + %58 = urem i64 %57, %37 + %59 = getelementptr inbounds ptr, ptr %38, i64 %58 + %60 = load ptr, ptr %59, align 8 + %.not.i.i.i.i.i = icmp eq ptr %60, null + br i1 %.not.i.i.i.i.i, label %.loopexit.i.i, label %61 + +61: ; preds = %.lr.ph.split + %62 = load ptr, ptr %60, align 8 + %63 = getelementptr inbounds i8, ptr %62, i64 8 + %64 = load i64, ptr %63, align 8 + %65 = icmp eq i64 %57, %64 + br i1 %65, label %_ZNKSt13unordered_mapIllSt4hashIlESt8equal_toIlESaISt4pairIKllEEE2atERS5_.exit, label %.lr.ph.i.i.i.i.i + +66: ; preds = %69 + %67 = icmp eq i64 %57, %71 + br i1 %67, label %_ZNKSt13unordered_mapIllSt4hashIlESt8equal_toIlESaISt4pairIKllEEE2atERS5_.exit, label %.lr.ph.i.i.i.i.i, !llvm.loop !12 + +.lr.ph.i.i.i.i.i: ; preds = %61, %66 + %.018.i.i.i.i.i = phi ptr [ %68, %66 ], [ %62, %61 ] + %68 = load ptr, ptr %.018.i.i.i.i.i, align 8 + %.not16.i.i.i.i.i = icmp eq ptr %68, null + br i1 %.not16.i.i.i.i.i, label %.loopexit.i.i, label %69 + +69: ; preds = %.lr.ph.i.i.i.i.i + %70 = getelementptr inbounds i8, ptr %68, i64 8 + %71 = load i64, ptr %70, align 8 + %72 = urem i64 %71, %37 + %.not17.i.i.i.i.i = icmp eq i64 %72, %58 + br i1 %.not17.i.i.i.i.i, label %66, label %.loopexit.i.i, !llvm.loop !12 + +.loopexit.i.i: ; preds = %.lr.ph.split, %69, %.lr.ph.i.i.i.i.i tail call void @_ZSt20__throw_out_of_rangePKc(ptr noundef nonnull @.str.13) #22 unreachable -_ZNKSt13unordered_mapIllSt4hashIlESt8equal_toIlESaISt4pairIKllEEE2atERS5_.exit: ; preds = %67, %62 - %.sroa.06.1.i.i.i = phi ptr [ %63, %62 ], [ %69, %67 ] - %74 = getelementptr inbounds i8, ptr %.sroa.06.1.i.i.i, i64 16 - %75 = load i64, ptr %74, align 8 - %76 = icmp eq i64 %75, %.01426 - br i1 %76, label %54, label %77 +_ZNKSt13unordered_mapIllSt4hashIlESt8equal_toIlESaISt4pairIKllEEE2atERS5_.exit: ; preds = %66, %61 + %.sroa.06.1.i.i.i = phi ptr [ %62, %61 ], [ %68, %66 ] + %73 = getelementptr inbounds i8, ptr %.sroa.06.1.i.i.i, i64 16 + %74 = load i64, ptr %73, align 8 + %75 = icmp eq i64 %74, %.01426 + br i1 %75, label %54, label %.split.us -77: ; preds = %_ZNKSt13unordered_mapIllSt4hashIlESt8equal_toIlESaISt4pairIKllEEE2atERS5_.exit +.split.us: ; preds = %_ZNKSt13unordered_mapIllSt4hashIlESt8equal_toIlESaISt4pairIKllEEE2atERS5_.exit call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #14 - %78 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef null, i64 noundef 0, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.16) #14 - %79 = add nsw i32 %78, 1 - %80 = sext i32 %79 to i64 - invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(32) %4, i64 noundef %80) - to label %81 unwind label %88 - -81: ; preds = %77 - %82 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %4, i64 noundef 0) - to label %83 unwind label %88 - -83: ; preds = %81 - %84 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %4) #14 - %85 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %82, i64 noundef %84, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.16) #14 - %86 = call ptr @__cxa_allocate_exception(i64 40) #14 - invoke void @_ZN5faiss14FaissExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKcSA_i(ptr noundef nonnull align 8 dereferenceable(40) %86, ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK5faiss19IndexIDMap2TemplateINS_5IndexEE17check_consistencyEv, ptr noundef nonnull @.str.2, i32 noundef 240) - to label %87 unwind label %90 - -87: ; preds = %83 - invoke void @__cxa_throw(ptr nonnull %86, ptr nonnull @_ZTIN5faiss14FaissExceptionE, ptr nonnull @_ZN5faiss14FaissExceptionD2Ev) #22 - to label %93 unwind label %88 - -88: ; preds = %87, %81, %77 - %89 = landingpad { ptr, i32 } + %76 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef null, i64 noundef 0, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.16) #14 + %77 = add nsw i32 %76, 1 + %78 = sext i32 %77 to i64 + invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(32) %4, i64 noundef %78) + to label %79 unwind label %86 + +79: ; preds = %.split.us + %80 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %4, i64 noundef 0) + to label %81 unwind label %86 + +81: ; preds = %79 + %82 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %4) #14 + %83 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %80, i64 noundef %82, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.16) #14 + %84 = call ptr @__cxa_allocate_exception(i64 40) #14 + invoke void @_ZN5faiss14FaissExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKcSA_i(ptr noundef nonnull align 8 dereferenceable(40) %84, ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK5faiss19IndexIDMap2TemplateINS_5IndexEE17check_consistencyEv, ptr noundef nonnull @.str.2, i32 noundef 240) + to label %85 unwind label %88 + +85: ; preds = %81 + invoke void @__cxa_throw(ptr nonnull %84, ptr nonnull @_ZTIN5faiss14FaissExceptionE, ptr nonnull @_ZN5faiss14FaissExceptionD2Ev) #22 + to label %91 unwind label %86 + +86: ; preds = %85, %79, %.split.us + %87 = landingpad { ptr, i32 } cleanup - br label %92 + br label %90 -90: ; preds = %83 - %91 = landingpad { ptr, i32 } +88: ; preds = %81 + %89 = landingpad { ptr, i32 } cleanup - call void @__cxa_free_exception(ptr %86) #14 - br label %92 + call void @__cxa_free_exception(ptr %84) #14 + br label %90 -._crit_edge: ; preds = %54, %.preheader.split +._crit_edge: ; preds = %54, %.preheader ret void -92: ; preds = %88, %90, %50, %52, %28, %30 - %.sink = phi ptr [ %2, %30 ], [ %2, %28 ], [ %3, %52 ], [ %3, %50 ], [ %4, %90 ], [ %4, %88 ] - %.pn18.pn = phi { ptr, i32 } [ %31, %30 ], [ %29, %28 ], [ %53, %52 ], [ %51, %50 ], [ %91, %90 ], [ %89, %88 ] +90: ; preds = %86, %88, %50, %52, %28, %30 + %.sink = phi ptr [ %2, %30 ], [ %2, %28 ], [ %3, %52 ], [ %3, %50 ], [ %4, %88 ], [ %4, %86 ] + %.pn18.pn = phi { ptr, i32 } [ %31, %30 ], [ %29, %28 ], [ %53, %52 ], [ %51, %50 ], [ %89, %88 ], [ %87, %86 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink) #14 resume { ptr, i32 } %.pn18.pn -93: ; preds = %87, %49, %27 +91: ; preds = %85, %49, %27 unreachable } @@ -3901,34 +3901,34 @@ define weak_odr void @_ZNK5faiss19IndexIDMap2TemplateINS_11IndexBinaryEE17check_ 27: ; preds = %23 invoke void @__cxa_throw(ptr nonnull %26, ptr nonnull @_ZTIN5faiss14FaissExceptionE, ptr nonnull @_ZN5faiss14FaissExceptionD2Ev) #22 - to label %93 unwind label %28 + to label %91 unwind label %28 28: ; preds = %27, %21, %17 %29 = landingpad { ptr, i32 } cleanup - br label %92 + br label %90 30: ; preds = %23 %31 = landingpad { ptr, i32 } cleanup call void @__cxa_free_exception(ptr %26) #14 - br label %92 + br label %90 32: ; preds = %1 %33 = getelementptr inbounds i8, ptr %0, i64 16 %34 = load i64, ptr %33, align 8 %35 = icmp eq i64 %7, %34 - br i1 %35, label %.preheader.split, label %39 + br i1 %35, label %.preheader, label %39 -.preheader.split: ; preds = %32 +.preheader: ; preds = %32 %.not = icmp eq i64 %7, 0 - br i1 %.not, label %._crit_edge, label %.lr.ph + br i1 %.not, label %._crit_edge, label %.lr.ph.split.preheader -.lr.ph: ; preds = %.preheader.split +.lr.ph.split.preheader: ; preds = %.preheader %36 = getelementptr inbounds i8, ptr %0, i64 80 %37 = load i64, ptr %36, align 8 %38 = load ptr, ptr %5, align 8 - br label %56 + br label %.lr.ph.split 39: ; preds = %32 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #14 @@ -3951,113 +3951,113 @@ define weak_odr void @_ZNK5faiss19IndexIDMap2TemplateINS_11IndexBinaryEE17check_ 49: ; preds = %45 invoke void @__cxa_throw(ptr nonnull %48, ptr nonnull @_ZTIN5faiss14FaissExceptionE, ptr nonnull @_ZN5faiss14FaissExceptionD2Ev) #22 - to label %93 unwind label %50 + to label %91 unwind label %50 50: ; preds = %49, %43, %39 %51 = landingpad { ptr, i32 } cleanup - br label %92 + br label %90 52: ; preds = %45 %53 = landingpad { ptr, i32 } cleanup call void @__cxa_free_exception(ptr %48) #14 - br label %92 + br label %90 54: ; preds = %_ZNKSt13unordered_mapIllSt4hashIlESt8equal_toIlESaISt4pairIKllEEE2atERS5_.exit %55 = add nuw i64 %.01426, 1 %exitcond.not = icmp eq i64 %55, %7 - br i1 %exitcond.not, label %._crit_edge, label %56, !llvm.loop !25 - -56: ; preds = %.lr.ph, %54 - %.01426 = phi i64 [ 0, %.lr.ph ], [ %55, %54 ] - %57 = getelementptr inbounds i64, ptr %11, i64 %.01426 - %58 = load i64, ptr %57, align 8 - %59 = urem i64 %58, %37 - %60 = getelementptr inbounds ptr, ptr %38, i64 %59 - %61 = load ptr, ptr %60, align 8 - %.not.i.i.i.i.i = icmp eq ptr %61, null - br i1 %.not.i.i.i.i.i, label %.loopexit.i.i, label %62 - -62: ; preds = %56 - %63 = load ptr, ptr %61, align 8 - %64 = getelementptr inbounds i8, ptr %63, i64 8 - %65 = load i64, ptr %64, align 8 - %66 = icmp eq i64 %58, %65 - br i1 %66, label %_ZNKSt13unordered_mapIllSt4hashIlESt8equal_toIlESaISt4pairIKllEEE2atERS5_.exit, label %.lr.ph.i.i.i.i.i - -67: ; preds = %70 - %68 = icmp eq i64 %58, %72 - br i1 %68, label %_ZNKSt13unordered_mapIllSt4hashIlESt8equal_toIlESaISt4pairIKllEEE2atERS5_.exit, label %.lr.ph.i.i.i.i.i, !llvm.loop !12 - -.lr.ph.i.i.i.i.i: ; preds = %62, %67 - %.018.i.i.i.i.i = phi ptr [ %69, %67 ], [ %63, %62 ] - %69 = load ptr, ptr %.018.i.i.i.i.i, align 8 - %.not16.i.i.i.i.i = icmp eq ptr %69, null - br i1 %.not16.i.i.i.i.i, label %.loopexit.i.i, label %70 - -70: ; preds = %.lr.ph.i.i.i.i.i - %71 = getelementptr inbounds i8, ptr %69, i64 8 - %72 = load i64, ptr %71, align 8 - %73 = urem i64 %72, %37 - %.not17.i.i.i.i.i = icmp eq i64 %73, %59 - br i1 %.not17.i.i.i.i.i, label %67, label %.loopexit.i.i, !llvm.loop !12 - -.loopexit.i.i: ; preds = %56, %70, %.lr.ph.i.i.i.i.i + br i1 %exitcond.not, label %._crit_edge, label %.lr.ph.split, !llvm.loop !25 + +.lr.ph.split: ; preds = %.lr.ph.split.preheader, %54 + %.01426 = phi i64 [ %55, %54 ], [ 0, %.lr.ph.split.preheader ] + %56 = getelementptr inbounds i64, ptr %11, i64 %.01426 + %57 = load i64, ptr %56, align 8 + %58 = urem i64 %57, %37 + %59 = getelementptr inbounds ptr, ptr %38, i64 %58 + %60 = load ptr, ptr %59, align 8 + %.not.i.i.i.i.i = icmp eq ptr %60, null + br i1 %.not.i.i.i.i.i, label %.loopexit.i.i, label %61 + +61: ; preds = %.lr.ph.split + %62 = load ptr, ptr %60, align 8 + %63 = getelementptr inbounds i8, ptr %62, i64 8 + %64 = load i64, ptr %63, align 8 + %65 = icmp eq i64 %57, %64 + br i1 %65, label %_ZNKSt13unordered_mapIllSt4hashIlESt8equal_toIlESaISt4pairIKllEEE2atERS5_.exit, label %.lr.ph.i.i.i.i.i + +66: ; preds = %69 + %67 = icmp eq i64 %57, %71 + br i1 %67, label %_ZNKSt13unordered_mapIllSt4hashIlESt8equal_toIlESaISt4pairIKllEEE2atERS5_.exit, label %.lr.ph.i.i.i.i.i, !llvm.loop !12 + +.lr.ph.i.i.i.i.i: ; preds = %61, %66 + %.018.i.i.i.i.i = phi ptr [ %68, %66 ], [ %62, %61 ] + %68 = load ptr, ptr %.018.i.i.i.i.i, align 8 + %.not16.i.i.i.i.i = icmp eq ptr %68, null + br i1 %.not16.i.i.i.i.i, label %.loopexit.i.i, label %69 + +69: ; preds = %.lr.ph.i.i.i.i.i + %70 = getelementptr inbounds i8, ptr %68, i64 8 + %71 = load i64, ptr %70, align 8 + %72 = urem i64 %71, %37 + %.not17.i.i.i.i.i = icmp eq i64 %72, %58 + br i1 %.not17.i.i.i.i.i, label %66, label %.loopexit.i.i, !llvm.loop !12 + +.loopexit.i.i: ; preds = %.lr.ph.split, %69, %.lr.ph.i.i.i.i.i tail call void @_ZSt20__throw_out_of_rangePKc(ptr noundef nonnull @.str.13) #22 unreachable -_ZNKSt13unordered_mapIllSt4hashIlESt8equal_toIlESaISt4pairIKllEEE2atERS5_.exit: ; preds = %67, %62 - %.sroa.06.1.i.i.i = phi ptr [ %63, %62 ], [ %69, %67 ] - %74 = getelementptr inbounds i8, ptr %.sroa.06.1.i.i.i, i64 16 - %75 = load i64, ptr %74, align 8 - %76 = icmp eq i64 %75, %.01426 - br i1 %76, label %54, label %77 +_ZNKSt13unordered_mapIllSt4hashIlESt8equal_toIlESaISt4pairIKllEEE2atERS5_.exit: ; preds = %66, %61 + %.sroa.06.1.i.i.i = phi ptr [ %62, %61 ], [ %68, %66 ] + %73 = getelementptr inbounds i8, ptr %.sroa.06.1.i.i.i, i64 16 + %74 = load i64, ptr %73, align 8 + %75 = icmp eq i64 %74, %.01426 + br i1 %75, label %54, label %.split.us -77: ; preds = %_ZNKSt13unordered_mapIllSt4hashIlESt8equal_toIlESaISt4pairIKllEEE2atERS5_.exit +.split.us: ; preds = %_ZNKSt13unordered_mapIllSt4hashIlESt8equal_toIlESaISt4pairIKllEEE2atERS5_.exit call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #14 - %78 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef null, i64 noundef 0, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.16) #14 - %79 = add nsw i32 %78, 1 - %80 = sext i32 %79 to i64 - invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(32) %4, i64 noundef %80) - to label %81 unwind label %88 - -81: ; preds = %77 - %82 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %4, i64 noundef 0) - to label %83 unwind label %88 - -83: ; preds = %81 - %84 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %4) #14 - %85 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %82, i64 noundef %84, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.16) #14 - %86 = call ptr @__cxa_allocate_exception(i64 40) #14 - invoke void @_ZN5faiss14FaissExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKcSA_i(ptr noundef nonnull align 8 dereferenceable(40) %86, ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK5faiss19IndexIDMap2TemplateINS_11IndexBinaryEE17check_consistencyEv, ptr noundef nonnull @.str.2, i32 noundef 240) - to label %87 unwind label %90 - -87: ; preds = %83 - invoke void @__cxa_throw(ptr nonnull %86, ptr nonnull @_ZTIN5faiss14FaissExceptionE, ptr nonnull @_ZN5faiss14FaissExceptionD2Ev) #22 - to label %93 unwind label %88 - -88: ; preds = %87, %81, %77 - %89 = landingpad { ptr, i32 } + %76 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef null, i64 noundef 0, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.16) #14 + %77 = add nsw i32 %76, 1 + %78 = sext i32 %77 to i64 + invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(32) %4, i64 noundef %78) + to label %79 unwind label %86 + +79: ; preds = %.split.us + %80 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %4, i64 noundef 0) + to label %81 unwind label %86 + +81: ; preds = %79 + %82 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %4) #14 + %83 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %80, i64 noundef %82, ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.16) #14 + %84 = call ptr @__cxa_allocate_exception(i64 40) #14 + invoke void @_ZN5faiss14FaissExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKcSA_i(ptr noundef nonnull align 8 dereferenceable(40) %84, ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK5faiss19IndexIDMap2TemplateINS_11IndexBinaryEE17check_consistencyEv, ptr noundef nonnull @.str.2, i32 noundef 240) + to label %85 unwind label %88 + +85: ; preds = %81 + invoke void @__cxa_throw(ptr nonnull %84, ptr nonnull @_ZTIN5faiss14FaissExceptionE, ptr nonnull @_ZN5faiss14FaissExceptionD2Ev) #22 + to label %91 unwind label %86 + +86: ; preds = %85, %79, %.split.us + %87 = landingpad { ptr, i32 } cleanup - br label %92 + br label %90 -90: ; preds = %83 - %91 = landingpad { ptr, i32 } +88: ; preds = %81 + %89 = landingpad { ptr, i32 } cleanup - call void @__cxa_free_exception(ptr %86) #14 - br label %92 + call void @__cxa_free_exception(ptr %84) #14 + br label %90 -._crit_edge: ; preds = %54, %.preheader.split +._crit_edge: ; preds = %54, %.preheader ret void -92: ; preds = %88, %90, %50, %52, %28, %30 - %.sink = phi ptr [ %2, %30 ], [ %2, %28 ], [ %3, %52 ], [ %3, %50 ], [ %4, %90 ], [ %4, %88 ] - %.pn18.pn = phi { ptr, i32 } [ %31, %30 ], [ %29, %28 ], [ %53, %52 ], [ %51, %50 ], [ %91, %90 ], [ %89, %88 ] +90: ; preds = %86, %88, %50, %52, %28, %30 + %.sink = phi ptr [ %2, %30 ], [ %2, %28 ], [ %3, %52 ], [ %3, %50 ], [ %4, %88 ], [ %4, %86 ] + %.pn18.pn = phi { ptr, i32 } [ %31, %30 ], [ %29, %28 ], [ %53, %52 ], [ %51, %50 ], [ %89, %88 ], [ %87, %86 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %.sink) #14 resume { ptr, i32 } %.pn18.pn -93: ; preds = %87, %49, %27 +91: ; preds = %85, %49, %27 unreachable } diff --git a/bench/faiss/optimized/kmeans1d.cpp.ll b/bench/faiss/optimized/kmeans1d.cpp.ll index 7f97b99291a..2f3ed4fcdb9 100644 --- a/bench/faiss/optimized/kmeans1d.cpp.ll +++ b/bench/faiss/optimized/kmeans1d.cpp.ll @@ -1351,7 +1351,7 @@ define noundef double @_ZN5faiss8kmeans1dEPKfmmPf(ptr nocapture noundef readonly 21: ; preds = %17 invoke void @__cxa_throw(ptr nonnull %20, ptr nonnull @_ZTIN5faiss14FaissExceptionE, ptr nonnull @_ZN5faiss14FaissExceptionD2Ev) #18 - to label %317 unwind label %22 + to label %319 unwind label %22 22: ; preds = %21, %15, %11 %23 = landingpad { ptr, i32 } @@ -1732,7 +1732,7 @@ _ZN5faiss12_GLOBAL__N_16MatrixIlEC2Ell.exit: ; preds = %_ZSt6fill_nIPlmlET_ 167: ; preds = %._crit_edge invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.1) #18 - to label %.noexc unwind label %249 + to label %.noexc unwind label %250 .noexc: ; preds = %167 unreachable @@ -1751,406 +1751,421 @@ _ZNSt6vectorIlSaIlEE17_S_check_init_lenEmRKS0_.exit.i: ; preds = %._crit_edge %171 = add nsw i64 %169, -8 %172 = getelementptr inbounds i8, ptr %9, i64 16 %173 = getelementptr inbounds i8, ptr %9, i64 24 - br i1 %168, label %175, label %_ZNSt6vectorIlSaIlEE17_S_check_init_lenEmRKS0_.exit.i127 + br i1 %168, label %174, label %_ZNSt6vectorIlSaIlEE17_S_check_init_lenEmRKS0_.exit.i127 .lr.ph219.preheader: ; preds = %_ZNSt6vectorIlSaIlEED2Ev.exit, %_ZNSt6vectorIlSaIlEE17_S_check_init_lenEmRKS0_.exit.i %.080214 = add nsw i64 %2, -1 br label %.lr.ph219 _ZNSt6vectorIlSaIlEE17_S_check_init_lenEmRKS0_.exit.i127: ; preds = %.lr.ph213, %_ZNSt6vectorIlSaIlEED2Ev.exit - %174 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %169) #19 - to label %.noexc131 unwind label %.loopexit + br i1 %.not.i.i.i, label %_ZNSt6vectorIlSaIlEEC2EmRKS0_.exit, label %175 -175: ; preds = %.lr.ph213 +174: ; preds = %.lr.ph213 invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.1) #18 to label %.noexc130 unwind label %.loopexit.split-lp -.noexc130: ; preds = %175 +.noexc130: ; preds = %174 unreachable -.noexc131: ; preds = %_ZNSt6vectorIlSaIlEE17_S_check_init_lenEmRKS0_.exit.i127 - store i64 0, ptr %174, align 8 - %176 = getelementptr i8, ptr %174, i64 8 +175: ; preds = %_ZNSt6vectorIlSaIlEE17_S_check_init_lenEmRKS0_.exit.i127 + %176 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %169) #19 + to label %.noexc131 unwind label %.loopexit + +.noexc131: ; preds = %175 + store i64 0, ptr %176, align 8 + %177 = getelementptr i8, ptr %176, i64 8 br i1 %170, label %_ZNSt6vectorIlSaIlEEC2EmRKS0_.exit, label %_ZSt6fill_nIPlmlET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i _ZSt6fill_nIPlmlET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i: ; preds = %.noexc131 - %177 = getelementptr i64, ptr %174, i64 %1 - call void @llvm.memset.p0.i64(ptr align 8 %176, i8 0, i64 %171, i1 false) + %178 = getelementptr i64, ptr %176, i64 %1 + call void @llvm.memset.p0.i64(ptr align 8 %177, i8 0, i64 %171, i1 false) br label %_ZNSt6vectorIlSaIlEEC2EmRKS0_.exit -_ZNSt6vectorIlSaIlEEC2EmRKS0_.exit: ; preds = %_ZSt6fill_nIPlmlET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i, %.noexc131 - %.0.i.i.i.i.i = phi ptr [ %176, %.noexc131 ], [ %177, %_ZSt6fill_nIPlmlET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i ] +_ZNSt6vectorIlSaIlEEC2EmRKS0_.exit: ; preds = %_ZSt6fill_nIPlmlET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i, %.noexc131, %_ZNSt6vectorIlSaIlEE17_S_check_init_lenEmRKS0_.exit.i127 + %.sroa.0.1 = phi ptr [ %176, %.noexc131 ], [ %176, %_ZSt6fill_nIPlmlET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i ], [ null, %_ZNSt6vectorIlSaIlEE17_S_check_init_lenEmRKS0_.exit.i127 ] + %.0.i.i.i.i.i = phi ptr [ %177, %.noexc131 ], [ %178, %_ZSt6fill_nIPlmlET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i ], [ null, %_ZNSt6vectorIlSaIlEE17_S_check_init_lenEmRKS0_.exit.i127 ] call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %9, i8 0, i64 32, i1 false) - %178 = invoke noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #19 - to label %179 unwind label %251 + %179 = invoke noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #19 + to label %180 unwind label %252 -179: ; preds = %_ZNSt6vectorIlSaIlEEC2EmRKS0_.exit - store ptr %7, ptr %178, align 16 - %.sroa.3.0..sroa_idx = getelementptr inbounds i8, ptr %178, i64 8 +180: ; preds = %_ZNSt6vectorIlSaIlEEC2EmRKS0_.exit + store ptr %7, ptr %179, align 16 + %.sroa.3.0..sroa_idx = getelementptr inbounds i8, ptr %179, i64 8 store ptr %6, ptr %.sroa.3.0..sroa_idx, align 8 - %.sroa.6.0..sroa_idx = getelementptr inbounds i8, ptr %178, i64 16 + %.sroa.6.0..sroa_idx = getelementptr inbounds i8, ptr %179, i64 16 store ptr %8, ptr %.sroa.6.0..sroa_idx, align 16 - store ptr %178, ptr %9, align 8 + store ptr %179, ptr %9, align 8 store ptr @"_ZNSt17_Function_handlerIFfllEZN5faiss8kmeans1dEPKfmmPfE3$_0E9_M_invokeERKSt9_Any_dataOlSA_", ptr %173, align 8 store ptr @"_ZNSt17_Function_handlerIFfllEZN5faiss8kmeans1dEPKfmmPfE3$_0E10_M_managerERSt9_Any_dataRKS7_St18_Manager_operation", ptr %172, align 8 - invoke void @_ZN5faiss5smawkEllRKSt8functionIFfllEEPl(i64 noundef %1, i64 noundef %1, ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull %174) - to label %180 unwind label %253 + invoke void @_ZN5faiss5smawkEllRKSt8functionIFfllEEPl(i64 noundef %1, i64 noundef %1, ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef %.sroa.0.1) + to label %181 unwind label %254 -180: ; preds = %179 - %181 = load ptr, ptr %172, align 8 - %.not.i.i = icmp eq ptr %181, null - br i1 %.not.i.i, label %_ZNSt8functionIFfllEED2Ev.exit, label %182 +181: ; preds = %180 + %182 = load ptr, ptr %172, align 8 + %.not.i.i = icmp eq ptr %182, null + br i1 %.not.i.i, label %_ZNSt8functionIFfllEED2Ev.exit, label %183 -182: ; preds = %180 - %183 = invoke noundef zeroext i1 %181(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(32) %9, i32 noundef 3) - to label %_ZNSt8functionIFfllEED2Ev.exit unwind label %184 +183: ; preds = %181 + %184 = invoke noundef zeroext i1 %182(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(32) %9, i32 noundef 3) + to label %_ZNSt8functionIFfllEED2Ev.exit unwind label %185 -184: ; preds = %182 - %185 = landingpad { ptr, i32 } +185: ; preds = %183 + %186 = landingpad { ptr, i32 } catch ptr null - %186 = extractvalue { ptr, i32 } %185, 0 - call void @__clang_call_terminate(ptr %186) #22 + %187 = extractvalue { ptr, i32 } %186, 0 + call void @__clang_call_terminate(ptr %187) #22 unreachable -_ZNSt8functionIFfllEED2Ev.exit: ; preds = %180, %182 - %.not223 = icmp eq ptr %.0.i.i.i.i.i, %174 - br i1 %.not223, label %_ZNSt6vectorIlSaIlEED2Ev.exit, label %.lr.ph211.preheader +_ZNSt8functionIFfllEED2Ev.exit: ; preds = %181, %183 + %.not223 = icmp eq ptr %.0.i.i.i.i.i, %.sroa.0.1 + br i1 %.not223, label %._crit_edge212, label %.lr.ph211.preheader .lr.ph211.preheader: ; preds = %_ZNSt8functionIFfllEED2Ev.exit - %187 = ptrtoint ptr %.0.i.i.i.i.i to i64 - %188 = ptrtoint ptr %174 to i64 - %189 = sub i64 %187, %188 - %190 = ashr exact i64 %189, 3 - %umax = call i64 @llvm.umax.i64(i64 %190, i64 1) + %188 = ptrtoint ptr %.0.i.i.i.i.i to i64 + %189 = ptrtoint ptr %.sroa.0.1 to i64 + %190 = sub i64 %188, %189 + %191 = ashr exact i64 %190, 3 + %umax = call i64 @llvm.umax.i64(i64 %191, i64 1) br label %.lr.ph211 .lr.ph211: ; preds = %.lr.ph211.preheader, %"_ZZN5faiss8kmeans1dEPKfmmPfENK3$_0clEll.exit" %.084210 = phi i64 [ %.pre-phi, %"_ZZN5faiss8kmeans1dEPKfmmPfENK3$_0clEll.exit" ], [ 0, %.lr.ph211.preheader ] - %191 = getelementptr inbounds i64, ptr %174, i64 %.084210 - %192 = load i64, ptr %191, align 8 - %193 = icmp eq i64 %192, 0 - br i1 %193, label %194, label %211 + %192 = getelementptr inbounds i64, ptr %.sroa.0.1, i64 %.084210 + %193 = load i64, ptr %192, align 8 + %194 = icmp eq i64 %193, 0 + br i1 %194, label %195, label %212 -194: ; preds = %.lr.ph211 +195: ; preds = %.lr.ph211 %.val9.i = load ptr, ptr %36, align 8 %.val8.i = load ptr, ptr %6, align 8 - %195 = add nuw nsw i64 %.084210, 1 - %196 = getelementptr inbounds double, ptr %.val8.i, i64 %195 - %197 = load double, ptr %196, align 8 - %198 = load double, ptr %.val8.i, align 8 - %199 = fsub double %197, %198 - %200 = uitofp nneg i64 %195 to double - %201 = fdiv double %199, %200 - %202 = getelementptr inbounds double, ptr %.val9.i, i64 %195 - %203 = load double, ptr %202, align 8 - %204 = load double, ptr %.val9.i, align 8 - %205 = fsub double %203, %204 - %206 = fmul double %201, %201 - %207 = call double @llvm.fmuladd.f64(double %200, double %206, double %205) - %208 = fmul double %201, -2.000000e+00 - %209 = call double @llvm.fmuladd.f64(double %208, double %199, double %207) - %210 = fptrunc double %209 to float + %196 = add nuw nsw i64 %.084210, 1 + %197 = getelementptr inbounds double, ptr %.val8.i, i64 %196 + %198 = load double, ptr %197, align 8 + %199 = load double, ptr %.val8.i, align 8 + %200 = fsub double %198, %199 + %201 = uitofp nneg i64 %196 to double + %202 = fdiv double %200, %201 + %203 = getelementptr inbounds double, ptr %.val9.i, i64 %196 + %204 = load double, ptr %203, align 8 + %205 = load double, ptr %.val9.i, align 8 + %206 = fsub double %204, %205 + %207 = fmul double %202, %202 + %208 = call double @llvm.fmuladd.f64(double %201, double %207, double %206) + %209 = fmul double %202, -2.000000e+00 + %210 = call double @llvm.fmuladd.f64(double %209, double %200, double %208) + %211 = fptrunc double %210 to float %.pre235 = load i64, ptr %8, align 8 %.val103.pre = load ptr, ptr %7, align 8 %.val104.pre = load i64, ptr %119, align 8 br label %"_ZZN5faiss8kmeans1dEPKfmmPfENK3$_0clEll.exit" -211: ; preds = %.lr.ph211 - %212 = add nsw i64 %192, -1 - %.sroa.speculated.i = call i64 @llvm.smin.i64(i64 %212, i64 %.084210) - %213 = load i64, ptr %8, align 8 - %214 = add nsw i64 %213, -1 +212: ; preds = %.lr.ph211 + %213 = add nsw i64 %193, -1 + %.sroa.speculated.i = call i64 @llvm.smin.i64(i64 %213, i64 %.084210) + %214 = load i64, ptr %8, align 8 + %215 = add nsw i64 %214, -1 %.val10.i = load ptr, ptr %7, align 8 %.val11.i = load i64, ptr %119, align 8 - %215 = mul nsw i64 %.val11.i, %214 - %216 = getelementptr float, ptr %.val10.i, i64 %215 - %217 = getelementptr float, ptr %216, i64 %.sroa.speculated.i - %218 = load float, ptr %217, align 4 - %219 = icmp slt i64 %.084210, %192 - br i1 %219, label %._ZN5faiss12_GLOBAL__N_114CostCalculatorclEll.exit13.i_crit_edge, label %220 - -._ZN5faiss12_GLOBAL__N_114CostCalculatorclEll.exit13.i_crit_edge: ; preds = %211 + %216 = mul nsw i64 %.val11.i, %215 + %217 = getelementptr float, ptr %.val10.i, i64 %216 + %218 = getelementptr float, ptr %217, i64 %.sroa.speculated.i + %219 = load float, ptr %218, align 4 + %220 = icmp slt i64 %.084210, %193 + br i1 %220, label %._ZN5faiss12_GLOBAL__N_114CostCalculatorclEll.exit13.i_crit_edge, label %221 + +._ZN5faiss12_GLOBAL__N_114CostCalculatorclEll.exit13.i_crit_edge: ; preds = %212 %.pre239 = add nuw nsw i64 %.084210, 1 br label %_ZN5faiss12_GLOBAL__N_114CostCalculatorclEll.exit13.i -220: ; preds = %211 +221: ; preds = %212 %.val7.i = load ptr, ptr %36, align 8 %.val.i = load ptr, ptr %6, align 8 - %221 = add nuw nsw i64 %.084210, 1 - %222 = getelementptr inbounds double, ptr %.val.i, i64 %221 - %223 = load double, ptr %222, align 8 - %224 = getelementptr inbounds double, ptr %.val.i, i64 %192 - %225 = load double, ptr %224, align 8 - %226 = fsub double %223, %225 - %227 = sub i64 %221, %192 - %228 = sitofp i64 %227 to double - %229 = fdiv double %226, %228 - %230 = getelementptr inbounds double, ptr %.val7.i, i64 %221 - %231 = load double, ptr %230, align 8 - %232 = getelementptr inbounds double, ptr %.val7.i, i64 %192 - %233 = load double, ptr %232, align 8 - %234 = fsub double %231, %233 - %235 = fmul double %229, %229 - %236 = call double @llvm.fmuladd.f64(double %228, double %235, double %234) - %237 = fmul double %229, -2.000000e+00 - %238 = call double @llvm.fmuladd.f64(double %237, double %226, double %236) - %239 = fptrunc double %238 to float + %222 = add nuw nsw i64 %.084210, 1 + %223 = getelementptr inbounds double, ptr %.val.i, i64 %222 + %224 = load double, ptr %223, align 8 + %225 = getelementptr inbounds double, ptr %.val.i, i64 %193 + %226 = load double, ptr %225, align 8 + %227 = fsub double %224, %226 + %228 = sub i64 %222, %193 + %229 = sitofp i64 %228 to double + %230 = fdiv double %227, %229 + %231 = getelementptr inbounds double, ptr %.val7.i, i64 %222 + %232 = load double, ptr %231, align 8 + %233 = getelementptr inbounds double, ptr %.val7.i, i64 %193 + %234 = load double, ptr %233, align 8 + %235 = fsub double %232, %234 + %236 = fmul double %230, %230 + %237 = call double @llvm.fmuladd.f64(double %229, double %236, double %235) + %238 = fmul double %230, -2.000000e+00 + %239 = call double @llvm.fmuladd.f64(double %238, double %227, double %237) + %240 = fptrunc double %239 to float br label %_ZN5faiss12_GLOBAL__N_114CostCalculatorclEll.exit13.i -_ZN5faiss12_GLOBAL__N_114CostCalculatorclEll.exit13.i: ; preds = %._ZN5faiss12_GLOBAL__N_114CostCalculatorclEll.exit13.i_crit_edge, %220 - %.pre238.pre-phi = phi i64 [ %.pre239, %._ZN5faiss12_GLOBAL__N_114CostCalculatorclEll.exit13.i_crit_edge ], [ %221, %220 ] - %.0.i12.i = phi float [ 0.000000e+00, %._ZN5faiss12_GLOBAL__N_114CostCalculatorclEll.exit13.i_crit_edge ], [ %239, %220 ] - %240 = fadd float %218, %.0.i12.i +_ZN5faiss12_GLOBAL__N_114CostCalculatorclEll.exit13.i: ; preds = %._ZN5faiss12_GLOBAL__N_114CostCalculatorclEll.exit13.i_crit_edge, %221 + %.pre238.pre-phi = phi i64 [ %.pre239, %._ZN5faiss12_GLOBAL__N_114CostCalculatorclEll.exit13.i_crit_edge ], [ %222, %221 ] + %.0.i12.i = phi float [ 0.000000e+00, %._ZN5faiss12_GLOBAL__N_114CostCalculatorclEll.exit13.i_crit_edge ], [ %240, %221 ] + %241 = fadd float %219, %.0.i12.i br label %"_ZZN5faiss8kmeans1dEPKfmmPfENK3$_0clEll.exit" -"_ZZN5faiss8kmeans1dEPKfmmPfENK3$_0clEll.exit": ; preds = %_ZN5faiss12_GLOBAL__N_114CostCalculatorclEll.exit13.i, %194 - %.pre-phi = phi i64 [ %.pre238.pre-phi, %_ZN5faiss12_GLOBAL__N_114CostCalculatorclEll.exit13.i ], [ %195, %194 ] - %.val104 = phi i64 [ %.val11.i, %_ZN5faiss12_GLOBAL__N_114CostCalculatorclEll.exit13.i ], [ %.val104.pre, %194 ] - %.val103 = phi ptr [ %.val10.i, %_ZN5faiss12_GLOBAL__N_114CostCalculatorclEll.exit13.i ], [ %.val103.pre, %194 ] - %241 = phi i64 [ %213, %_ZN5faiss12_GLOBAL__N_114CostCalculatorclEll.exit13.i ], [ %.pre235, %194 ] - %.0.i = phi float [ %240, %_ZN5faiss12_GLOBAL__N_114CostCalculatorclEll.exit13.i ], [ %210, %194 ] - %242 = mul nsw i64 %.val104, %241 - %243 = getelementptr float, ptr %.val103, i64 %242 - %244 = getelementptr float, ptr %243, i64 %.084210 - store float %.0.i, ptr %244, align 4 - %245 = load i64, ptr %8, align 8 - %246 = mul nsw i64 %245, %1 - %247 = getelementptr i64, ptr %.sroa.0186.0, i64 %246 - %248 = getelementptr i64, ptr %247, i64 %.084210 - store i64 %192, ptr %248, align 8 +"_ZZN5faiss8kmeans1dEPKfmmPfENK3$_0clEll.exit": ; preds = %_ZN5faiss12_GLOBAL__N_114CostCalculatorclEll.exit13.i, %195 + %.pre-phi = phi i64 [ %.pre238.pre-phi, %_ZN5faiss12_GLOBAL__N_114CostCalculatorclEll.exit13.i ], [ %196, %195 ] + %.val104 = phi i64 [ %.val11.i, %_ZN5faiss12_GLOBAL__N_114CostCalculatorclEll.exit13.i ], [ %.val104.pre, %195 ] + %.val103 = phi ptr [ %.val10.i, %_ZN5faiss12_GLOBAL__N_114CostCalculatorclEll.exit13.i ], [ %.val103.pre, %195 ] + %242 = phi i64 [ %214, %_ZN5faiss12_GLOBAL__N_114CostCalculatorclEll.exit13.i ], [ %.pre235, %195 ] + %.0.i = phi float [ %241, %_ZN5faiss12_GLOBAL__N_114CostCalculatorclEll.exit13.i ], [ %211, %195 ] + %243 = mul nsw i64 %.val104, %242 + %244 = getelementptr float, ptr %.val103, i64 %243 + %245 = getelementptr float, ptr %244, i64 %.084210 + store float %.0.i, ptr %245, align 4 + %246 = load i64, ptr %8, align 8 + %247 = mul nsw i64 %246, %1 + %248 = getelementptr i64, ptr %.sroa.0186.0, i64 %247 + %249 = getelementptr i64, ptr %248, i64 %.084210 + store i64 %193, ptr %249, align 8 %exitcond234.not = icmp eq i64 %.pre-phi, %umax - br i1 %exitcond234.not, label %_ZNSt6vectorIlSaIlEED2Ev.exit, label %.lr.ph211, !llvm.loop !17 + br i1 %exitcond234.not, label %._crit_edge212.thread, label %.lr.ph211, !llvm.loop !17 -249: ; preds = %167 - %250 = landingpad { ptr, i32 } +250: ; preds = %167 + %251 = landingpad { ptr, i32 } cleanup br label %_ZNSt6vectorIlSaIlEED2Ev.exit151 -.loopexit: ; preds = %_ZNSt6vectorIlSaIlEE17_S_check_init_lenEmRKS0_.exit.i127 +.loopexit: ; preds = %175 %lpad.loopexit = landingpad { ptr, i32 } cleanup br label %_ZNSt6vectorIlSaIlEED2Ev.exit151 -.loopexit.split-lp: ; preds = %175 +.loopexit.split-lp: ; preds = %174 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup br label %_ZNSt6vectorIlSaIlEED2Ev.exit151 -251: ; preds = %_ZNSt6vectorIlSaIlEEC2EmRKS0_.exit - %252 = landingpad { ptr, i32 } +252: ; preds = %_ZNSt6vectorIlSaIlEEC2EmRKS0_.exit + %253 = landingpad { ptr, i32 } cleanup br label %_ZNSt8functionIFfllEED2Ev.exit134 -253: ; preds = %179 - %254 = landingpad { ptr, i32 } +254: ; preds = %180 + %255 = landingpad { ptr, i32 } cleanup - %255 = load ptr, ptr %172, align 8 - %.not.i.i133 = icmp eq ptr %255, null - br i1 %.not.i.i133, label %_ZNSt8functionIFfllEED2Ev.exit134, label %256 + %256 = load ptr, ptr %172, align 8 + %.not.i.i133 = icmp eq ptr %256, null + br i1 %.not.i.i133, label %_ZNSt8functionIFfllEED2Ev.exit134, label %257 -256: ; preds = %253 - %257 = invoke noundef zeroext i1 %255(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(32) %9, i32 noundef 3) - to label %_ZNSt8functionIFfllEED2Ev.exit134 unwind label %258 +257: ; preds = %254 + %258 = invoke noundef zeroext i1 %256(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(32) %9, i32 noundef 3) + to label %_ZNSt8functionIFfllEED2Ev.exit134 unwind label %259 -258: ; preds = %256 - %259 = landingpad { ptr, i32 } +259: ; preds = %257 + %260 = landingpad { ptr, i32 } catch ptr null - %260 = extractvalue { ptr, i32 } %259, 0 - call void @__clang_call_terminate(ptr %260) #22 + %261 = extractvalue { ptr, i32 } %260, 0 + call void @__clang_call_terminate(ptr %261) #22 unreachable -_ZNSt6vectorIlSaIlEED2Ev.exit: ; preds = %"_ZZN5faiss8kmeans1dEPKfmmPfENK3$_0clEll.exit", %_ZNSt8functionIFfllEED2Ev.exit - call void @_ZdlPv(ptr noundef nonnull %174) #20 - %261 = load i64, ptr %8, align 8 - %262 = add nsw i64 %261, 1 - store i64 %262, ptr %8, align 8 - %263 = icmp ult i64 %262, %2 - br i1 %263, label %_ZNSt6vectorIlSaIlEE17_S_check_init_lenEmRKS0_.exit.i127, label %.lr.ph219.preheader, !llvm.loop !18 - -_ZNSt8functionIFfllEED2Ev.exit134: ; preds = %251, %253, %256 - %.pn92 = phi { ptr, i32 } [ %252, %251 ], [ %254, %253 ], [ %254, %256 ] - call void @_ZdlPv(ptr noundef nonnull %174) #20 +._crit_edge212: ; preds = %_ZNSt8functionIFfllEED2Ev.exit + %.not.i.i.i135 = icmp eq ptr %.sroa.0.1, null + br i1 %.not.i.i.i135, label %_ZNSt6vectorIlSaIlEED2Ev.exit, label %._crit_edge212.thread + +._crit_edge212.thread: ; preds = %"_ZZN5faiss8kmeans1dEPKfmmPfENK3$_0clEll.exit", %._crit_edge212 + call void @_ZdlPv(ptr noundef nonnull %.sroa.0.1) #20 + br label %_ZNSt6vectorIlSaIlEED2Ev.exit + +_ZNSt6vectorIlSaIlEED2Ev.exit: ; preds = %._crit_edge212, %._crit_edge212.thread + %262 = load i64, ptr %8, align 8 + %263 = add nsw i64 %262, 1 + store i64 %263, ptr %8, align 8 + %264 = icmp ult i64 %263, %2 + br i1 %264, label %_ZNSt6vectorIlSaIlEE17_S_check_init_lenEmRKS0_.exit.i127, label %.lr.ph219.preheader, !llvm.loop !18 + +_ZNSt8functionIFfllEED2Ev.exit134: ; preds = %257, %254, %252 + %.pn92 = phi { ptr, i32 } [ %253, %252 ], [ %255, %254 ], [ %255, %257 ] + %.not.i.i.i136 = icmp eq ptr %.sroa.0.1, null + br i1 %.not.i.i.i136, label %_ZNSt6vectorIlSaIlEED2Ev.exit151, label %265 + +265: ; preds = %_ZNSt8functionIFfllEED2Ev.exit134 + call void @_ZdlPv(ptr noundef nonnull %.sroa.0.1) #20 br label %_ZNSt6vectorIlSaIlEED2Ev.exit151 -.lr.ph219: ; preds = %.lr.ph219.preheader, %294 - %.080218 = phi i64 [ %.080, %294 ], [ %.080214, %.lr.ph219.preheader ] - %.081217 = phi i64 [ %268, %294 ], [ %1, %.lr.ph219.preheader ] - %.082216 = phi double [ %300, %294 ], [ 0.000000e+00, %.lr.ph219.preheader ] - %.083215 = phi double [ %299, %294 ], [ 0.000000e+00, %.lr.ph219.preheader ] - %264 = mul nsw i64 %.080218, %1 - %265 = getelementptr i64, ptr %.sroa.0186.0, i64 %264 - %266 = getelementptr i64, ptr %265, i64 %.081217 - %267 = getelementptr i8, ptr %266, i64 -8 - %268 = load i64, ptr %267, align 8 - %269 = getelementptr inbounds float, ptr %.sroa.0190.0, i64 %.081217 - %.not7.i = icmp eq i64 %268, %.081217 +.lr.ph219: ; preds = %.lr.ph219.preheader, %296 + %.080218 = phi i64 [ %.080, %296 ], [ %.080214, %.lr.ph219.preheader ] + %.081217 = phi i64 [ %270, %296 ], [ %1, %.lr.ph219.preheader ] + %.082216 = phi double [ %302, %296 ], [ 0.000000e+00, %.lr.ph219.preheader ] + %.083215 = phi double [ %301, %296 ], [ 0.000000e+00, %.lr.ph219.preheader ] + %266 = mul nsw i64 %.080218, %1 + %267 = getelementptr i64, ptr %.sroa.0186.0, i64 %266 + %268 = getelementptr i64, ptr %267, i64 %.081217 + %269 = getelementptr i8, ptr %268, i64 -8 + %270 = load i64, ptr %269, align 8 + %271 = getelementptr inbounds float, ptr %.sroa.0190.0, i64 %.081217 + %.not7.i = icmp eq i64 %270, %.081217 br i1 %.not7.i, label %_ZSt10accumulateIPffET0_T_S2_S1_.exit, label %.lr.ph.i138.preheader .lr.ph.i138.preheader: ; preds = %.lr.ph219 - %270 = getelementptr inbounds float, ptr %.sroa.0190.0, i64 %268 + %272 = getelementptr inbounds float, ptr %.sroa.0190.0, i64 %270 br label %.lr.ph.i138 .lr.ph.i138: ; preds = %.lr.ph.i138.preheader, %.lr.ph.i138 - %.09.i = phi float [ %272, %.lr.ph.i138 ], [ 0.000000e+00, %.lr.ph.i138.preheader ] - %.068.i = phi ptr [ %273, %.lr.ph.i138 ], [ %270, %.lr.ph.i138.preheader ] - %271 = load float, ptr %.068.i, align 4 - %272 = fadd float %.09.i, %271 - %273 = getelementptr inbounds i8, ptr %.068.i, i64 4 - %.not.i139 = icmp eq ptr %273, %269 + %.09.i = phi float [ %274, %.lr.ph.i138 ], [ 0.000000e+00, %.lr.ph.i138.preheader ] + %.068.i = phi ptr [ %275, %.lr.ph.i138 ], [ %272, %.lr.ph.i138.preheader ] + %273 = load float, ptr %.068.i, align 4 + %274 = fadd float %.09.i, %273 + %275 = getelementptr inbounds i8, ptr %.068.i, i64 4 + %.not.i139 = icmp eq ptr %275, %271 br i1 %.not.i139, label %_ZSt10accumulateIPffET0_T_S2_S1_.exit, label %.lr.ph.i138, !llvm.loop !19 _ZSt10accumulateIPffET0_T_S2_S1_.exit: ; preds = %.lr.ph.i138, %.lr.ph219 - %.0.lcssa.i = phi float [ 0.000000e+00, %.lr.ph219 ], [ %272, %.lr.ph.i138 ] - %274 = sub nsw i64 %.081217, %268 - %275 = icmp sgt i64 %274, 0 - br i1 %275, label %294, label %276 + %.0.lcssa.i = phi float [ 0.000000e+00, %.lr.ph219 ], [ %274, %.lr.ph.i138 ] + %276 = sub nsw i64 %.081217, %270 + %277 = icmp sgt i64 %276, 0 + br i1 %277, label %296, label %278 -276: ; preds = %_ZSt10accumulateIPffET0_T_S2_S1_.exit +278: ; preds = %_ZSt10accumulateIPffET0_T_S2_S1_.exit call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #21 - %277 = trunc i64 %.080218 to i32 - %278 = trunc i64 %274 to i32 - %279 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef null, i64 noundef 0, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, i32 noundef %277, i32 noundef %278) #21 - %280 = add nsw i32 %279, 1 - %281 = sext i32 %280 to i64 - invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(32) %10, i64 noundef %281) - to label %282 unwind label %289 - -282: ; preds = %276 - %283 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %10, i64 noundef 0) - to label %284 unwind label %289 - -284: ; preds = %282 - %285 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %10) #21 - %286 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %283, i64 noundef %285, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, i32 noundef %277, i32 noundef %278) #21 - %287 = call ptr @__cxa_allocate_exception(i64 40) #21 - invoke void @_ZN5faiss14FaissExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKcSA_i(ptr noundef nonnull align 8 dereferenceable(40) %287, ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5faiss8kmeans1dEPKfmmPf, ptr noundef nonnull @.str.4, i32 noundef 290) - to label %288 unwind label %291 - -288: ; preds = %284 - invoke void @__cxa_throw(ptr nonnull %287, ptr nonnull @_ZTIN5faiss14FaissExceptionE, ptr nonnull @_ZN5faiss14FaissExceptionD2Ev) #18 - to label %317 unwind label %289 - -289: ; preds = %288, %282, %276 - %290 = landingpad { ptr, i32 } + %279 = trunc i64 %.080218 to i32 + %280 = trunc i64 %276 to i32 + %281 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef null, i64 noundef 0, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, i32 noundef %279, i32 noundef %280) #21 + %282 = add nsw i32 %281, 1 + %283 = sext i32 %282 to i64 + invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(32) %10, i64 noundef %283) + to label %284 unwind label %291 + +284: ; preds = %278 + %285 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %10, i64 noundef 0) + to label %286 unwind label %291 + +286: ; preds = %284 + %287 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(32) %10) #21 + %288 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull %285, i64 noundef %287, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, i32 noundef %279, i32 noundef %280) #21 + %289 = call ptr @__cxa_allocate_exception(i64 40) #21 + invoke void @_ZN5faiss14FaissExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKcSA_i(ptr noundef nonnull align 8 dereferenceable(40) %289, ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN5faiss8kmeans1dEPKfmmPf, ptr noundef nonnull @.str.4, i32 noundef 290) + to label %290 unwind label %293 + +290: ; preds = %286 + invoke void @__cxa_throw(ptr nonnull %289, ptr nonnull @_ZTIN5faiss14FaissExceptionE, ptr nonnull @_ZN5faiss14FaissExceptionD2Ev) #18 + to label %319 unwind label %291 + +291: ; preds = %290, %284, %278 + %292 = landingpad { ptr, i32 } cleanup - br label %293 + br label %295 -291: ; preds = %284 - %292 = landingpad { ptr, i32 } +293: ; preds = %286 + %294 = landingpad { ptr, i32 } cleanup - call void @__cxa_free_exception(ptr %287) #21 - br label %293 + call void @__cxa_free_exception(ptr %289) #21 + br label %295 -293: ; preds = %291, %289 - %.pn90 = phi { ptr, i32 } [ %290, %289 ], [ %292, %291 ] +295: ; preds = %293, %291 + %.pn90 = phi { ptr, i32 } [ %292, %291 ], [ %294, %293 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #21 br label %_ZNSt6vectorIlSaIlEED2Ev.exit151 -294: ; preds = %_ZSt10accumulateIPffET0_T_S2_S1_.exit - %295 = uitofp nneg i64 %274 to float - %296 = fdiv float %.0.lcssa.i, %295 - %297 = getelementptr inbounds float, ptr %3, i64 %.080218 - store float %296, ptr %297, align 4 - %298 = uitofp nneg i64 %274 to double - %299 = fadd double %.083215, %298 - %300 = call double @llvm.fmuladd.f64(double %298, double %298, double %.082216) +296: ; preds = %_ZSt10accumulateIPffET0_T_S2_S1_.exit + %297 = uitofp nneg i64 %276 to float + %298 = fdiv float %.0.lcssa.i, %297 + %299 = getelementptr inbounds float, ptr %3, i64 %.080218 + store float %298, ptr %299, align 4 + %300 = uitofp nneg i64 %276 to double + %301 = fadd double %.083215, %300 + %302 = call double @llvm.fmuladd.f64(double %300, double %300, double %.082216) %.080 = add i64 %.080218, -1 - %301 = icmp sgt i64 %.080, -1 - br i1 %301, label %.lr.ph219, label %.loopexit253, !llvm.loop !20 - -.loopexit253: ; preds = %294 - %302 = uitofp i64 %2 to double - %303 = fmul double %300, %302 - %304 = fmul double %299, %299 - %305 = fdiv double %303, %304 + %303 = icmp sgt i64 %.080, -1 + br i1 %303, label %.lr.ph219, label %.loopexit254, !llvm.loop !20 + +.loopexit254: ; preds = %296 + %304 = uitofp i64 %2 to double + %305 = fmul double %302, %304 + %306 = fmul double %301, %301 + %307 = fdiv double %305, %306 br label %_ZNSt6vectorIlSaIlEED2Ev.exit141 -_ZNSt6vectorIlSaIlEED2Ev.exit141: ; preds = %_ZNSt6vectorIlSaIlEE17_S_check_init_lenEmRKS0_.exit.i, %.loopexit253 - %306 = phi double [ %305, %.loopexit253 ], [ 0x7FF8000000000000, %_ZNSt6vectorIlSaIlEE17_S_check_init_lenEmRKS0_.exit.i ] +_ZNSt6vectorIlSaIlEED2Ev.exit141: ; preds = %_ZNSt6vectorIlSaIlEE17_S_check_init_lenEmRKS0_.exit.i, %.loopexit254 + %308 = phi double [ %307, %.loopexit254 ], [ 0x7FF8000000000000, %_ZNSt6vectorIlSaIlEE17_S_check_init_lenEmRKS0_.exit.i ] %.not.i.i.i.i142 = icmp eq ptr %.sroa.0186.0, null - br i1 %.not.i.i.i.i142, label %_ZN5faiss12_GLOBAL__N_16MatrixIlED2Ev.exit, label %307 + br i1 %.not.i.i.i.i142, label %_ZN5faiss12_GLOBAL__N_16MatrixIlED2Ev.exit, label %309 -307: ; preds = %_ZNSt6vectorIlSaIlEED2Ev.exit141 +309: ; preds = %_ZNSt6vectorIlSaIlEED2Ev.exit141 call void @_ZdlPv(ptr noundef nonnull %.sroa.0186.0) #20 br label %_ZN5faiss12_GLOBAL__N_16MatrixIlED2Ev.exit -_ZN5faiss12_GLOBAL__N_16MatrixIlED2Ev.exit: ; preds = %_ZNSt6vectorIlSaIlEED2Ev.exit141, %307 +_ZN5faiss12_GLOBAL__N_16MatrixIlED2Ev.exit: ; preds = %_ZNSt6vectorIlSaIlEED2Ev.exit141, %309 %.val113 = load ptr, ptr %7, align 8 %.not.i.i.i.i144 = icmp eq ptr %.val113, null - br i1 %.not.i.i.i.i144, label %_ZN5faiss12_GLOBAL__N_16MatrixIfED2Ev.exit, label %308 + br i1 %.not.i.i.i.i144, label %_ZN5faiss12_GLOBAL__N_16MatrixIfED2Ev.exit, label %310 -308: ; preds = %_ZN5faiss12_GLOBAL__N_16MatrixIlED2Ev.exit +310: ; preds = %_ZN5faiss12_GLOBAL__N_16MatrixIlED2Ev.exit call void @_ZdlPv(ptr noundef nonnull %.val113) #20 br label %_ZN5faiss12_GLOBAL__N_16MatrixIfED2Ev.exit -_ZN5faiss12_GLOBAL__N_16MatrixIfED2Ev.exit: ; preds = %_ZN5faiss12_GLOBAL__N_16MatrixIlED2Ev.exit, %308 - %309 = load ptr, ptr %36, align 8 - %.not.i.i.i.i146 = icmp eq ptr %309, null - br i1 %.not.i.i.i.i146, label %_ZNSt6vectorIdSaIdEED2Ev.exit.i147, label %310 +_ZN5faiss12_GLOBAL__N_16MatrixIfED2Ev.exit: ; preds = %_ZN5faiss12_GLOBAL__N_16MatrixIlED2Ev.exit, %310 + %311 = load ptr, ptr %36, align 8 + %.not.i.i.i.i146 = icmp eq ptr %311, null + br i1 %.not.i.i.i.i146, label %_ZNSt6vectorIdSaIdEED2Ev.exit.i147, label %312 -310: ; preds = %_ZN5faiss12_GLOBAL__N_16MatrixIfED2Ev.exit - call void @_ZdlPv(ptr noundef nonnull %309) #20 +312: ; preds = %_ZN5faiss12_GLOBAL__N_16MatrixIfED2Ev.exit + call void @_ZdlPv(ptr noundef nonnull %311) #20 br label %_ZNSt6vectorIdSaIdEED2Ev.exit.i147 -_ZNSt6vectorIdSaIdEED2Ev.exit.i147: ; preds = %310, %_ZN5faiss12_GLOBAL__N_16MatrixIfED2Ev.exit - %311 = load ptr, ptr %6, align 8 - %.not.i.i.i1.i = icmp eq ptr %311, null - br i1 %.not.i.i.i1.i, label %_ZN5faiss12_GLOBAL__N_114CostCalculatorD2Ev.exit, label %312 +_ZNSt6vectorIdSaIdEED2Ev.exit.i147: ; preds = %312, %_ZN5faiss12_GLOBAL__N_16MatrixIfED2Ev.exit + %313 = load ptr, ptr %6, align 8 + %.not.i.i.i1.i = icmp eq ptr %313, null + br i1 %.not.i.i.i1.i, label %_ZN5faiss12_GLOBAL__N_114CostCalculatorD2Ev.exit, label %314 -312: ; preds = %_ZNSt6vectorIdSaIdEED2Ev.exit.i147 - call void @_ZdlPv(ptr noundef nonnull %311) #20 +314: ; preds = %_ZNSt6vectorIdSaIdEED2Ev.exit.i147 + call void @_ZdlPv(ptr noundef nonnull %313) #20 br label %_ZN5faiss12_GLOBAL__N_114CostCalculatorD2Ev.exit -_ZN5faiss12_GLOBAL__N_114CostCalculatorD2Ev.exit: ; preds = %_ZNSt6vectorIdSaIdEED2Ev.exit.i147, %312 +_ZN5faiss12_GLOBAL__N_114CostCalculatorD2Ev.exit: ; preds = %_ZNSt6vectorIdSaIdEED2Ev.exit.i147, %314 %.not.i.i.i148 = icmp eq ptr %.sroa.0190.0, null - br i1 %.not.i.i.i148, label %_ZNSt6vectorIfSaIfEED2Ev.exit, label %313 + br i1 %.not.i.i.i148, label %_ZNSt6vectorIfSaIfEED2Ev.exit, label %315 -313: ; preds = %_ZN5faiss12_GLOBAL__N_114CostCalculatorD2Ev.exit +315: ; preds = %_ZN5faiss12_GLOBAL__N_114CostCalculatorD2Ev.exit call void @_ZdlPv(ptr noundef nonnull %.sroa.0190.0) #20 br label %_ZNSt6vectorIfSaIfEED2Ev.exit -_ZNSt6vectorIlSaIlEED2Ev.exit151: ; preds = %.loopexit, %.loopexit.split-lp, %_ZNSt8functionIFfllEED2Ev.exit134, %293, %249 - %.pn92.pn.pn = phi { ptr, i32 } [ %250, %249 ], [ %.pn90, %293 ], [ %.pn92, %_ZNSt8functionIFfllEED2Ev.exit134 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] +_ZNSt6vectorIlSaIlEED2Ev.exit151: ; preds = %.loopexit, %.loopexit.split-lp, %265, %_ZNSt8functionIFfllEED2Ev.exit134, %295, %250 + %.pn92.pn.pn = phi { ptr, i32 } [ %251, %250 ], [ %.pn90, %295 ], [ %.pn92, %_ZNSt8functionIFfllEED2Ev.exit134 ], [ %.pn92, %265 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] %.not.i.i.i.i152 = icmp eq ptr %.sroa.0186.0, null - br i1 %.not.i.i.i.i152, label %.body122, label %314 + br i1 %.not.i.i.i.i152, label %.body122, label %316 -314: ; preds = %_ZNSt6vectorIlSaIlEED2Ev.exit151 +316: ; preds = %_ZNSt6vectorIlSaIlEED2Ev.exit151 call void @_ZdlPv(ptr noundef nonnull %.sroa.0186.0) #20 br label %.body122 -.body122: ; preds = %314, %_ZNSt6vectorIlSaIlEED2Ev.exit151, %_ZNSt6vectorIlSaIlEED2Ev.exit.i - %.pn92.pn.pn.pn = phi { ptr, i32 } [ %145, %_ZNSt6vectorIlSaIlEED2Ev.exit.i ], [ %.pn92.pn.pn, %_ZNSt6vectorIlSaIlEED2Ev.exit151 ], [ %.pn92.pn.pn, %314 ] +.body122: ; preds = %316, %_ZNSt6vectorIlSaIlEED2Ev.exit151, %_ZNSt6vectorIlSaIlEED2Ev.exit.i + %.pn92.pn.pn.pn = phi { ptr, i32 } [ %145, %_ZNSt6vectorIlSaIlEED2Ev.exit.i ], [ %.pn92.pn.pn, %_ZNSt6vectorIlSaIlEED2Ev.exit151 ], [ %.pn92.pn.pn, %316 ] %.val114 = load ptr, ptr %7, align 8 %.not.i.i.i.i155 = icmp eq ptr %.val114, null - br i1 %.not.i.i.i.i155, label %.body118, label %315 + br i1 %.not.i.i.i.i155, label %.body118, label %317 -315: ; preds = %.body122 +317: ; preds = %.body122 call void @_ZdlPv(ptr noundef nonnull %.val114) #20 br label %.body118 -.body118: ; preds = %315, %.body122, %133, %130 - %.pn92.pn.pn.pn.pn = phi { ptr, i32 } [ %131, %133 ], [ %131, %130 ], [ %.pn92.pn.pn.pn, %.body122 ], [ %.pn92.pn.pn.pn, %315 ] +.body118: ; preds = %317, %.body122, %133, %130 + %.pn92.pn.pn.pn.pn = phi { ptr, i32 } [ %131, %133 ], [ %131, %130 ], [ %.pn92.pn.pn.pn, %.body122 ], [ %.pn92.pn.pn.pn, %317 ] call fastcc void @_ZN5faiss12_GLOBAL__N_114CostCalculatorD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %6) #21 br label %.body115 .body115: ; preds = %164, %117, %_ZNSt6vectorIdSaIdEED2Ev.exit.i, %.body118 %.pn92.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn92.pn.pn.pn.pn, %.body118 ], [ %165, %164 ], [ %lpad.phi.i, %117 ], [ %lpad.phi.i, %_ZNSt6vectorIdSaIdEED2Ev.exit.i ] %.not.i.i.i158 = icmp eq ptr %.sroa.0190.0, null - br i1 %.not.i.i.i158, label %.body, label %316 + br i1 %.not.i.i.i158, label %.body, label %318 -316: ; preds = %.body115 +318: ; preds = %.body115 call void @_ZdlPv(ptr noundef nonnull %.sroa.0190.0) #20 br label %.body -_ZNSt6vectorIfSaIfEED2Ev.exit: ; preds = %313, %_ZN5faiss12_GLOBAL__N_114CostCalculatorD2Ev.exit, %30 - %.0 = phi double [ 0.000000e+00, %30 ], [ %306, %_ZN5faiss12_GLOBAL__N_114CostCalculatorD2Ev.exit ], [ %306, %313 ] +_ZNSt6vectorIfSaIfEED2Ev.exit: ; preds = %315, %_ZN5faiss12_GLOBAL__N_114CostCalculatorD2Ev.exit, %30 + %.0 = phi double [ 0.000000e+00, %30 ], [ %308, %_ZN5faiss12_GLOBAL__N_114CostCalculatorD2Ev.exit ], [ %308, %315 ] ret double %.0 -.body: ; preds = %316, %.body115, %26 - %.pn92.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn, %26 ], [ %.pn92.pn.pn.pn.pn.pn, %.body115 ], [ %.pn92.pn.pn.pn.pn.pn, %316 ] +.body: ; preds = %318, %.body115, %26 + %.pn92.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn, %26 ], [ %.pn92.pn.pn.pn.pn.pn, %.body115 ], [ %.pn92.pn.pn.pn.pn.pn, %318 ] resume { ptr, i32 } %.pn92.pn.pn.pn.pn.pn.pn -317: ; preds = %288, %21 +319: ; preds = %290, %21 unreachable } diff --git a/bench/folly/optimized/LoggerDB.cpp.ll b/bench/folly/optimized/LoggerDB.cpp.ll index 058535c6920..f9687231f61 100644 --- a/bench/folly/optimized/LoggerDB.cpp.ll +++ b/bench/folly/optimized/LoggerDB.cpp.ll @@ -14189,7 +14189,7 @@ ehcleanup: ; preds = %lpad57 br i1 %cleanup.isactive.0, label %cleanup.action, label %ehcleanup197 cleanup.action: ; preds = %ehcleanup, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, %ehcleanup.thread - %.merged52 = phi { ptr, i32 } [ %37, %ehcleanup.thread ], [ %38, %ehcleanup ], [ %38, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i ] + %.merged54 = phi { ptr, i32 } [ %37, %ehcleanup.thread ], [ %38, %ehcleanup ], [ %38, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i ] call void @__cxa_free_exception(ptr %exception) #28 br label %ehcleanup197 @@ -14502,7 +14502,7 @@ ehcleanup79: ; preds = %lpad75 br i1 %cleanup.isactive77.0, label %cleanup.action82, label %ehcleanup197 cleanup.action82: ; preds = %ehcleanup79, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i357, %ehcleanup79.thread - %.merged51 = phi { ptr, i32 } [ %82, %ehcleanup79.thread ], [ %83, %ehcleanup79 ], [ %83, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i357 ] + %.merged52 = phi { ptr, i32 } [ %82, %ehcleanup79.thread ], [ %83, %ehcleanup79 ], [ %83, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i357 ] call void @__cxa_free_exception(ptr %exception70) #28 br label %ehcleanup197 @@ -15372,17 +15372,17 @@ ehcleanup193: ; preds = %lpad181, %cleanup.d br label %ehcleanup197 ehcleanup197: ; preds = %lpad89.loopexit, %lpad89.loopexit.split-lp, %ehcleanup193, %cleanup.action124, %ehcleanup121, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i378, %lpad86, %cleanup.action82, %ehcleanup79, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i357, %lpad63, %cleanup.action, %ehcleanup, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i - %.merged50 = phi { ptr, i32 } [ %87, %lpad86 ], [ %.merged51, %cleanup.action82 ], [ %83, %ehcleanup79 ], [ %81, %lpad63 ], [ %.merged52, %cleanup.action ], [ %38, %ehcleanup ], [ %38, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i ], [ %83, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i357 ], [ %.merged53, %cleanup.action124 ], [ %92, %ehcleanup121 ], [ %207, %ehcleanup193 ], [ %92, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i378 ], [ %lpad.loopexit, %lpad89.loopexit ], [ %lpad.loopexit.split-lp, %lpad89.loopexit.split-lp ] + %.merged51 = phi { ptr, i32 } [ %87, %lpad86 ], [ %.merged52, %cleanup.action82 ], [ %83, %ehcleanup79 ], [ %81, %lpad63 ], [ %.merged54, %cleanup.action ], [ %38, %ehcleanup ], [ %38, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i ], [ %83, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i357 ], [ %.merged53, %cleanup.action124 ], [ %92, %ehcleanup121 ], [ %207, %ehcleanup193 ], [ %92, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i378 ], [ %lpad.loopexit, %lpad89.loopexit ], [ %lpad.loopexit.split-lp, %lpad89.loopexit.split-lp ] call void @_ZN5folly16LogHandlerConfigD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %updatedConfig) #28 br label %ehcleanup199 ehcleanup199: ; preds = %ehcleanup197, %lpad45 - %.merged49 = phi { ptr, i32 } [ %.merged50, %ehcleanup197 ], [ %35, %lpad45 ] + %.merged50 = phi { ptr, i32 } [ %.merged51, %ehcleanup197 ], [ %35, %lpad45 ] call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %updatedConfig) #28 br label %ehcleanup200 ehcleanup200: ; preds = %ehcleanup199, %lpad31 - %.merged = phi { ptr, i32 } [ %.merged49, %ehcleanup199 ], [ %33, %lpad31 ] + %.merged49 = phi { ptr, i32 } [ %.merged50, %ehcleanup199 ], [ %33, %lpad31 ] call void @_ZNSt12__shared_ptrIN5folly10LogHandlerELN9__gnu_cxx12_Lock_policyE2EED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %oldHandler) #28 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %oldHandler) #28 br label %eh.resume @@ -15680,7 +15680,7 @@ ehcleanup262: ; preds = %lpad258 br i1 %cleanup.isactive260.0, label %cleanup.action265, label %eh.resume cleanup.action265: ; preds = %ehcleanup262, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i609, %ehcleanup262.thread.body - %.merged54 = phi { ptr, i32 } [ %249, %ehcleanup262.thread.body ], [ %252, %ehcleanup262 ], [ %252, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i609 ] + %.merged = phi { ptr, i32 } [ %249, %ehcleanup262.thread.body ], [ %252, %ehcleanup262 ], [ %252, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i609 ] call void @__cxa_free_exception(ptr %exception253) #28 br label %eh.resume @@ -15695,7 +15695,7 @@ cleanup: ; preds = %if.end267.us, %if.e br i1 %cmp.i598.not, label %for.cond.cleanup222, label %for.body223 eh.resume: ; preds = %cleanup.action265, %ehcleanup262, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i609, %ehcleanup200, %lpad - %lpad.val288.merged = phi { ptr, i32 } [ %11, %lpad ], [ %.merged, %ehcleanup200 ], [ %.merged54, %cleanup.action265 ], [ %252, %ehcleanup262 ], [ %252, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i609 ] + %lpad.val288.merged = phi { ptr, i32 } [ %11, %lpad ], [ %.merged49, %ehcleanup200 ], [ %.merged, %cleanup.action265 ], [ %252, %ehcleanup262 ], [ %252, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i609 ] resume { ptr, i32 } %lpad.val288.merged terminate.lpad: ; preds = %cleanup.done177 diff --git a/bench/glslang/optimized/Initialize.cpp.ll b/bench/glslang/optimized/Initialize.cpp.ll index 673e0978d7c..f6bcdd8af65 100644 --- a/bench/glslang/optimized/Initialize.cpp.ll +++ b/bench/glslang/optimized/Initialize.cpp.ll @@ -2632,14 +2632,15 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE15 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.i.i128.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE15_M_check_lengthEmmPKc.exit.i127.i %305 = icmp ult i64 %299, 16 tail call void @llvm.assume(i1 %305) - br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE9_M_createERmm.exit.i176.i + %.not.i.i129.i = icmp samesign ugt i64 %302, 15 + br i1 %.not.i.i129.i, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE9_M_createERmm.exit.i176.i, label %307 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.i.i128.thread.i: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE15_M_check_lengthEmmPKc.exit.i127.i %306 = load i64, ptr %5, align 8 %.not.i.i129277.i = icmp ugt i64 %302, %306 br i1 %.not.i.i129277.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.i175.i, label %307 -307: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.i.i128.thread.i +307: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.i.i128.thread.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE8capacityEv.exit.i.i128.i %308 = getelementptr inbounds i8, ptr %303, i64 %299 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(18) %308, ptr noundef nonnull align 1 dereferenceable(18) @.str.1290, i64 18, i1 false) %.pre310.i = load ptr, ptr %4, align 8 diff --git a/bench/graphviz/optimized/routespl.c.ll b/bench/graphviz/optimized/routespl.c.ll index 5efabc48238..cc1139ae06e 100644 --- a/bench/graphviz/optimized/routespl.c.ll +++ b/bench/graphviz/optimized/routespl.c.ll @@ -2319,7 +2319,8 @@ define internal fastcc void @cycles_append(ptr nocapture noundef nonnull %0, ptr define internal fastcc void @dfs(ptr noundef %0, ptr noundef %1, ptr nocapture noundef %2, ptr noundef nonnull %3, ptr nocapture noundef nonnull %4) unnamed_addr #0 { %6 = getelementptr inbounds i8, ptr %2, i64 8 %7 = load i64, ptr %6, align 8 - %.not.i = icmp eq i64 %7, 0 + %.val21.fr.i = freeze i64 %7 + %.not.i = icmp eq i64 %.val21.fr.i, 0 br i1 %.not.i, label %.loopexit30, label %.lr.ph.i .lr.ph.i: ; preds = %5 @@ -2328,7 +2329,7 @@ define internal fastcc void @dfs(ptr noundef %0, ptr noundef %1, ptr nocapture n 9: ; preds = %11 %10 = add nuw i64 %.01.i, 1 - %exitcond.not.i = icmp eq i64 %10, %7 + %exitcond.not.i = icmp eq i64 %10, %.val21.fr.i br i1 %exitcond.not.i, label %.loopexit30, label %11 11: ; preds = %9, %.lr.ph.i @@ -2350,157 +2351,157 @@ nodes_contains.exit: ; preds = %11 .lr.ph33.i: ; preds = %16 %.val23.i = load ptr, ptr %4, align 8 - br label %19 - -19: ; preds = %.loopexit.i, %.lr.ph33.i - %.01932.i = phi i64 [ 0, %.lr.ph33.i ], [ %33, %.loopexit.i ] - %20 = getelementptr inbounds ptr, ptr %.val23.i, i64 %.01932.i - %21 = load ptr, ptr %20, align 8 - %22 = getelementptr i8, ptr %21, i64 8 - %.val.i = load i64, ptr %22, align 8 - %23 = icmp eq i64 %.val.i, %7 - br i1 %23, label %.lr.ph.i27, label %.loopexit.i - -.lr.ph.i27: ; preds = %19 - %.val24.i = load ptr, ptr %21, align 8 + br label %.lr.ph33.split.i + +.lr.ph33.split.i: ; preds = %.lr.ph33.i, %.loopexit.i + %.01932.i = phi i64 [ %32, %.loopexit.i ], [ 0, %.lr.ph33.i ] + %19 = getelementptr inbounds ptr, ptr %.val23.i, i64 %.01932.i + %20 = load ptr, ptr %19, align 8 + %21 = getelementptr i8, ptr %20, i64 8 + %.val.i = load i64, ptr %21, align 8 + %22 = icmp eq i64 %.val.i, %.val21.fr.i + br i1 %22, label %.lr.ph.i27, label %.loopexit.i + +.lr.ph.i27: ; preds = %.lr.ph33.split.i + %.val24.i = load ptr, ptr %20, align 8 br label %.lr.ph.i.i .lr.ph.i.i: ; preds = %nodes_contains.exit.i, %.lr.ph.i27 - %.01730.i = phi i64 [ 0, %.lr.ph.i27 ], [ %32, %nodes_contains.exit.i ] - %24 = getelementptr inbounds ptr, ptr %.val24.i, i64 %.01730.i - %25 = load ptr, ptr %24, align 8 - br label %28 - -26: ; preds = %28 - %27 = add nuw i64 %.01.i.i, 1 - %exitcond.not.i.i = icmp eq i64 %27, %7 - br i1 %exitcond.not.i.i, label %.loopexit.i, label %28 - -28: ; preds = %26, %.lr.ph.i.i - %.01.i.i = phi i64 [ 0, %.lr.ph.i.i ], [ %27, %26 ] - %29 = getelementptr inbounds ptr, ptr %8, i64 %.01.i.i - %30 = load ptr, ptr %29, align 8 - %31 = icmp eq ptr %30, %25 - br i1 %31, label %nodes_contains.exit.i, label %26 - -nodes_contains.exit.i: ; preds = %28 - %32 = add nuw i64 %.01730.i, 1 - %exitcond.not.i28 = icmp eq i64 %32, %7 + %.01730.i = phi i64 [ 0, %.lr.ph.i27 ], [ %31, %nodes_contains.exit.i ] + %23 = getelementptr inbounds ptr, ptr %.val24.i, i64 %.01730.i + %24 = load ptr, ptr %23, align 8 + br label %27 + +25: ; preds = %27 + %26 = add nuw i64 %.01.i.i, 1 + %exitcond.not.i.i = icmp eq i64 %26, %.val21.fr.i + br i1 %exitcond.not.i.i, label %.loopexit.i, label %27 + +27: ; preds = %25, %.lr.ph.i.i + %.01.i.i = phi i64 [ 0, %.lr.ph.i.i ], [ %26, %25 ] + %28 = getelementptr inbounds ptr, ptr %8, i64 %.01.i.i + %29 = load ptr, ptr %28, align 8 + %30 = icmp eq ptr %29, %24 + br i1 %30, label %nodes_contains.exit.i, label %25 + +nodes_contains.exit.i: ; preds = %27 + %31 = add nuw i64 %.01730.i, 1 + %exitcond.not.i28 = icmp eq i64 %31, %.val21.fr.i br i1 %exitcond.not.i28, label %is_cycle_unique.exit, label %.lr.ph.i.i -.loopexit.i: ; preds = %26, %19 - %33 = add nuw i64 %.01932.i, 1 - %exitcond37.not.i = icmp eq i64 %33, %.val22.i - br i1 %exitcond37.not.i, label %.loopexit, label %19 +.loopexit.i: ; preds = %25, %.lr.ph33.split.i + %32 = add nuw i64 %.01932.i, 1 + %exitcond41.not.i = icmp eq i64 %32, %.val22.i + br i1 %exitcond41.not.i, label %.loopexit, label %.lr.ph33.split.i .loopexit: ; preds = %.loopexit.i, %16 - %34 = tail call noalias dereferenceable_or_null(24) ptr @calloc(i64 noundef 1, i64 noundef 24) #22 - %35 = icmp eq ptr %34, null - br i1 %35, label %36, label %gv_alloc.exit + %33 = tail call noalias dereferenceable_or_null(24) ptr @calloc(i64 noundef 1, i64 noundef 24) #22 + %34 = icmp eq ptr %33, null + br i1 %34, label %35, label %gv_alloc.exit -36: ; preds = %.loopexit - %37 = load ptr, ptr @stderr, align 8 - %38 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %37, ptr noundef nonnull @.str.3, i64 noundef 24) #23 +35: ; preds = %.loopexit + %36 = load ptr, ptr @stderr, align 8 + %37 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %36, ptr noundef nonnull @.str.3, i64 noundef 24) #23 tail call fastcc void @graphviz_exit() #24 unreachable gv_alloc.exit: ; preds = %.loopexit - %39 = getelementptr inbounds i8, ptr %2, i64 16 - %40 = load i64, ptr %39, align 8, !noalias !7 - %41 = tail call fastcc ptr @gv_calloc(i64 noundef %40, i64 noundef 8), !noalias !7 - %42 = load i64, ptr %6, align 8, !noalias !7 - %43 = load i64, ptr %39, align 8, !noalias !7 - %44 = load ptr, ptr %2, align 8, !noalias !7 - %45 = shl i64 %42, 3 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %41, ptr align 8 %44, i64 %45, i1 false), !noalias !7 - store ptr %41, ptr %34, align 8 - %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %34, i64 8 - store i64 %42, ptr %.sroa.2.0..sroa_idx, align 8 - %.sroa.3.0..sroa_idx = getelementptr inbounds i8, ptr %34, i64 16 - store i64 %43, ptr %.sroa.3.0..sroa_idx, align 8 - tail call fastcc void @cycles_append(ptr noundef %4, ptr noundef nonnull %34) + %38 = getelementptr inbounds i8, ptr %2, i64 16 + %39 = load i64, ptr %38, align 8, !noalias !7 + %40 = tail call fastcc ptr @gv_calloc(i64 noundef %39, i64 noundef 8), !noalias !7 + %41 = load i64, ptr %6, align 8, !noalias !7 + %42 = load i64, ptr %38, align 8, !noalias !7 + %43 = load ptr, ptr %2, align 8, !noalias !7 + %44 = shl i64 %41, 3 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %40, ptr align 8 %43, i64 %44, i1 false), !noalias !7 + store ptr %40, ptr %33, align 8 + %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %33, i64 8 + store i64 %41, ptr %.sroa.2.0..sroa_idx, align 8 + %.sroa.3.0..sroa_idx = getelementptr inbounds i8, ptr %33, i64 16 + store i64 %42, ptr %.sroa.3.0..sroa_idx, align 8 + tail call fastcc void @cycles_append(ptr noundef %4, ptr noundef nonnull %33) br label %is_cycle_unique.exit .loopexit30: ; preds = %9, %5 - %46 = getelementptr inbounds i8, ptr %2, i64 16 - %47 = load i64, ptr %46, align 8 - %48 = icmp eq i64 %7, %47 - br i1 %48, label %49, label %._crit_edge.i.i + %45 = getelementptr inbounds i8, ptr %2, i64 16 + %46 = load i64, ptr %45, align 8 + %47 = icmp eq i64 %.val21.fr.i, %46 + br i1 %47, label %48, label %._crit_edge.i.i ._crit_edge.i.i: ; preds = %.loopexit30 %.pre.i.i = load ptr, ptr %2, align 8 br label %nodes_append.exit -49: ; preds = %.loopexit30 - %50 = shl i64 %7, 1 - %spec.select.i.i = select i1 %.not.i, i64 1, i64 %50 +48: ; preds = %.loopexit30 + %49 = shl i64 %.val21.fr.i, 1 + %spec.select.i.i = select i1 %.not.i, i64 1, i64 %49 %mul.ov.i.i = icmp ugt i64 %spec.select.i.i, 2305843009213693951 - br i1 %mul.ov.i.i, label %62, label %51 - -51: ; preds = %49 - %52 = load ptr, ptr %2, align 8 - %53 = shl nuw i64 %spec.select.i.i, 3 - %54 = tail call ptr @realloc(ptr noundef %52, i64 noundef %53) #26 - %55 = icmp eq ptr %54, null - br i1 %55, label %62, label %56 - -56: ; preds = %51 - %57 = load i64, ptr %46, align 8 - %58 = shl i64 %57, 3 - %59 = getelementptr inbounds i8, ptr %54, i64 %58 - %60 = sub i64 %spec.select.i.i, %57 - %61 = shl i64 %60, 3 - tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %59, i8 0, i64 %61, i1 false) - store ptr %54, ptr %2, align 8 - store i64 %spec.select.i.i, ptr %46, align 8 + br i1 %mul.ov.i.i, label %61, label %50 + +50: ; preds = %48 + %51 = load ptr, ptr %2, align 8 + %52 = shl nuw i64 %spec.select.i.i, 3 + %53 = tail call ptr @realloc(ptr noundef %51, i64 noundef %52) #26 + %54 = icmp eq ptr %53, null + br i1 %54, label %61, label %55 + +55: ; preds = %50 + %56 = load i64, ptr %45, align 8 + %57 = shl i64 %56, 3 + %58 = getelementptr inbounds i8, ptr %53, i64 %57 + %59 = sub i64 %spec.select.i.i, %56 + %60 = shl i64 %59, 3 + tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %58, i8 0, i64 %60, i1 false) + store ptr %53, ptr %2, align 8 + store i64 %spec.select.i.i, ptr %45, align 8 %.pre22.i.i = load i64, ptr %6, align 8 br label %nodes_append.exit -62: ; preds = %51, %49 - %.0.i.ph.i = phi i32 [ 12, %51 ], [ 34, %49 ] - %63 = load ptr, ptr @stderr, align 8 - %64 = tail call ptr @strerror(i32 noundef %.0.i.ph.i) #21 - %65 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %63, ptr noundef nonnull @.str.21, ptr noundef %64) #23 +61: ; preds = %50, %48 + %.0.i.ph.i = phi i32 [ 12, %50 ], [ 34, %48 ] + %62 = load ptr, ptr @stderr, align 8 + %63 = tail call ptr @strerror(i32 noundef %.0.i.ph.i) #21 + %64 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %62, ptr noundef nonnull @.str.21, ptr noundef %63) #23 tail call fastcc void @graphviz_exit() #24 unreachable -nodes_append.exit: ; preds = %._crit_edge.i.i, %56 - %66 = phi i64 [ %7, %._crit_edge.i.i ], [ %.pre22.i.i, %56 ] - %67 = phi ptr [ %.pre.i.i, %._crit_edge.i.i ], [ %54, %56 ] - %68 = getelementptr inbounds ptr, ptr %67, i64 %66 - store ptr %1, ptr %68, align 8 - %69 = load i64, ptr %6, align 8 - %70 = add i64 %69, 1 - store i64 %70, ptr %6, align 8 - %71 = tail call ptr @agfstout(ptr noundef %0, ptr noundef %1) #21 - %.not31 = icmp eq ptr %71, null +nodes_append.exit: ; preds = %._crit_edge.i.i, %55 + %65 = phi i64 [ %.val21.fr.i, %._crit_edge.i.i ], [ %.pre22.i.i, %55 ] + %66 = phi ptr [ %.pre.i.i, %._crit_edge.i.i ], [ %53, %55 ] + %67 = getelementptr inbounds ptr, ptr %66, i64 %65 + store ptr %1, ptr %67, align 8 + %68 = load i64, ptr %6, align 8 + %69 = add i64 %68, 1 + store i64 %69, ptr %6, align 8 + %70 = tail call ptr @agfstout(ptr noundef %0, ptr noundef %1) #21 + %.not31 = icmp eq ptr %70, null br i1 %.not31, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %nodes_append.exit, %.lr.ph - %.032 = phi ptr [ %78, %.lr.ph ], [ %71, %nodes_append.exit ] - %72 = load i32, ptr %.032, align 8 - %73 = and i32 %72, 3 - %74 = icmp eq i32 %73, 2 - %.idx = select i1 %74, i64 0, i64 -64 - %75 = getelementptr inbounds i8, ptr %.032, i64 %.idx - %76 = getelementptr inbounds i8, ptr %75, i64 56 - %77 = load ptr, ptr %76, align 8 - tail call fastcc void @dfs(ptr noundef %0, ptr noundef %77, ptr noundef %2, ptr noundef %3, ptr noundef %4) - %78 = tail call ptr @agnxtout(ptr noundef %0, ptr noundef nonnull %.032) #21 - %.not = icmp eq ptr %78, null + %.032 = phi ptr [ %77, %.lr.ph ], [ %70, %nodes_append.exit ] + %71 = load i32, ptr %.032, align 8 + %72 = and i32 %71, 3 + %73 = icmp eq i32 %72, 2 + %.idx = select i1 %73, i64 0, i64 -64 + %74 = getelementptr inbounds i8, ptr %.032, i64 %.idx + %75 = getelementptr inbounds i8, ptr %74, i64 56 + %76 = load ptr, ptr %75, align 8 + tail call fastcc void @dfs(ptr noundef %0, ptr noundef %76, ptr noundef %2, ptr noundef %3, ptr noundef %4) + %77 = tail call ptr @agnxtout(ptr noundef %0, ptr noundef nonnull %.032) #21 + %.not = icmp eq ptr %77, null br i1 %.not, label %._crit_edge, label %.lr.ph ._crit_edge: ; preds = %.lr.ph, %nodes_append.exit %.val = load i64, ptr %6, align 8 - %79 = icmp eq i64 %.val, 0 - br i1 %79, label %is_cycle_unique.exit, label %80 + %78 = icmp eq i64 %.val, 0 + br i1 %78, label %is_cycle_unique.exit, label %79 -80: ; preds = %._crit_edge - %81 = add i64 %.val, -1 - store i64 %81, ptr %6, align 8 +79: ; preds = %._crit_edge + %80 = add i64 %.val, -1 + store i64 %80, ptr %6, align 8 br label %is_cycle_unique.exit -is_cycle_unique.exit: ; preds = %nodes_contains.exit.i, %._crit_edge, %80, %nodes_contains.exit, %gv_alloc.exit +is_cycle_unique.exit: ; preds = %nodes_contains.exit.i, %._crit_edge, %79, %nodes_contains.exit, %gv_alloc.exit ret void } diff --git a/bench/hyperscan/optimized/repeat.c.ll b/bench/hyperscan/optimized/repeat.c.ll index 28ccf1590fc..3a949b71f72 100644 --- a/bench/hyperscan/optimized/repeat.c.ll +++ b/bench/hyperscan/optimized/repeat.c.ll @@ -2211,8 +2211,10 @@ if.end7.i: ; preds = %do.end43 %spec.select274.i = sub nuw i32 %add10.i, %sub14.i %cmp16.i = icmp ult i32 %spec.select.i, %spec.select274.i %cond.i = select i1 %cmp16.i, i32 %spec.select274.i, i32 %add.i + %tobool.i36.not.i = icmp eq i32 %add.i, 0 %cmp.i39.i = icmp eq i32 %cond.i, %spec.select.i - br i1 %cmp.i39.i, label %if.end22.i, label %if.end.i40.i + %or.cond.i = select i1 %tobool.i36.not.i, i1 true, i1 %cmp.i39.i + br i1 %or.cond.i, label %if.end22.i, label %if.end.i40.i if.end.i40.i: ; preds = %if.end7.i %cmp.i50.i = icmp ult i32 %add.i, 257 @@ -2223,7 +2225,7 @@ if.then2.i46.i: ; preds = %if.end.i40.i br i1 %cmp.i58.i, label %if.then.i60.i, label %if.end5.i59.i if.then.i60.i: ; preds = %if.then2.i46.i - %add.i292.i = add nsw i32 %info.val, 8 + %add.i292.i = add nuw nsw i32 %info.val, 8 %div.i294261.i = lshr i32 %add.i292.i, 3 switch i32 %div.i294261.i, label %sw.default.i309.i [ i32 1, label %sw.bb.i307.i @@ -2499,7 +2501,8 @@ if.end5.i45.i: ; preds = %if.then.i157.i, %if if.end22.i: ; preds = %if.else.i155.i, %if.end5.i45.i, %get_flat_masks.exit520.i, %for.end.i.i, %if.end.i437.i, %if.end7.i %cmp.i.i39 = icmp eq i32 %add10.i, %sub14.i - %or.cond278.i = or i1 %cmp16.i, %cmp.i.i39 + %or.cond276.i = select i1 %tobool.i36.not.i, i1 true, i1 %cmp.i.i39 + %or.cond278.i = or i1 %cmp16.i, %or.cond276.i br i1 %or.cond278.i, label %ringHasMatch.exit.thread45, label %if.end.i.i if.end.i.i: ; preds = %if.end22.i @@ -2511,7 +2514,7 @@ if.then2.i.i: ; preds = %if.end.i.i br i1 %cmp.i79.i, label %if.then.i125.i, label %if.end5.i80.i if.then.i125.i: ; preds = %if.then2.i.i - %add.i238.i = add nsw i32 %info.val, 8 + %add.i238.i = add nuw nsw i32 %info.val, 8 %div.i240270.i = lshr i32 %add.i238.i, 3 switch i32 %div.i240270.i, label %sw.default.i.i [ i32 1, label %sw.bb.i.i diff --git a/bench/linux/optimized/gov_step_wise.ll b/bench/linux/optimized/gov_step_wise.ll index f15b84d58be..a2703581c6a 100644 --- a/bench/linux/optimized/gov_step_wise.ll +++ b/bench/linux/optimized/gov_step_wise.ll @@ -30,8 +30,8 @@ target triple = "x86_64-unknown-linux-gnu" ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid define internal noundef i32 @step_wise_throttle(ptr noundef %0, ptr noundef %1) #0 align 16 { %3 = alloca i64, align 8 - %4 = tail call i32 @thermal_zone_trip_id(ptr noundef %0, ptr noundef %1) #8 - %5 = tail call i32 @get_tz_trend(ptr noundef %0, ptr noundef %1) #8 + %4 = tail call i32 @thermal_zone_trip_id(ptr noundef %0, ptr noundef %1) #7 + %5 = tail call i32 @get_tz_trend(ptr noundef %0, ptr noundef %1) #7 %6 = getelementptr inbounds i8, ptr %0, i64 896 %7 = load i32, ptr %6, align 8 %8 = load i32, ptr %1, align 8 @@ -41,21 +41,21 @@ define internal noundef i32 @step_wise_throttle(ptr noundef %0, ptr noundef %1) 10: ; preds = %2 %11 = getelementptr inbounds i8, ptr %1, i64 12 %12 = load i32, ptr %11, align 4 - callbr void asm sideeffect "1:jmp ${2:l} # objtool NOPs this \0A\09.pushsection __jump_table, \22aw\22 \0A\09 .balign 8 \0A\09.long 1b - . \0A\09.long ${2:l} - . \0A\09 .quad ${0:c} + ${1:c} - .\0A\09.popsection \0A\09", "i,i,!i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull getelementptr inbounds (i8, ptr @__tracepoint_thermal_zone_trip, i64 8), i32 2) #8 + callbr void asm sideeffect "1:jmp ${2:l} # objtool NOPs this \0A\09.pushsection __jump_table, \22aw\22 \0A\09 .balign 8 \0A\09.long 1b - . \0A\09.long ${2:l} - . \0A\09 .quad ${0:c} + ${1:c} - .\0A\09.popsection \0A\09", "i,i,!i,~{dirflag},~{fpsr},~{flags}"(ptr nonnull getelementptr inbounds (i8, ptr @__tracepoint_thermal_zone_trip, i64 8), i32 2) #7 to label %33 [label %13], !srcloc !6 13: ; preds = %10 - %14 = tail call i32 asm sideeffect "movl %gs:$1, $0", "=r,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds (i8, ptr @pcpu_hot, i64 12)) #8, !srcloc !7 + %14 = tail call i32 asm sideeffect "movl %gs:$1, $0", "=r,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds (i8, ptr @pcpu_hot, i64 12)) #7, !srcloc !7 %15 = zext i32 %14 to i64 - %16 = tail call i8 asm sideeffect " btq $2,$1\0A\09/* output condition code c*/\0A", "={@ccc},*m,Ir,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) @__cpu_online_mask, i64 %15) #8, !srcloc !8 + %16 = tail call i8 asm sideeffect " btq $2,$1\0A\09/* output condition code c*/\0A", "={@ccc},*m,Ir,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i64) @__cpu_online_mask, i64 %15) #7, !srcloc !8 %17 = icmp ult i8 %16, 2 tail call void @llvm.assume(i1 %17) %18 = icmp eq i8 %16, 0 br i1 %18, label %33, label %19 19: ; preds = %13 - tail call void asm "incl %gs:$0", "=*m,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds (i8, ptr @pcpu_hot, i64 8), ptr nonnull elementtype(i32) getelementptr inbounds (i8, ptr @pcpu_hot, i64 8)) #8, !srcloc !9 - tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #8, !srcloc !10 + tail call void asm "incl %gs:$0", "=*m,*m,~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds (i8, ptr @pcpu_hot, i64 8), ptr nonnull elementtype(i32) getelementptr inbounds (i8, ptr @pcpu_hot, i64 8)) #7, !srcloc !9 + tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #7, !srcloc !10 %20 = load volatile ptr, ptr getelementptr inbounds (i8, ptr @__tracepoint_thermal_zone_trip, i64 72), align 8 %21 = icmp eq ptr %20, null br i1 %21, label %26, label %22 @@ -63,12 +63,12 @@ define internal noundef i32 @step_wise_throttle(ptr noundef %0, ptr noundef %1) 22: ; preds = %19 %23 = getelementptr inbounds i8, ptr %20, i64 8 %24 = load ptr, ptr %23, align 8 - %25 = tail call i32 @__SCT__tp_func_thermal_zone_trip(ptr noundef %24, ptr noundef %0, i32 noundef %4, i32 noundef %12) #8 + %25 = tail call i32 @__SCT__tp_func_thermal_zone_trip(ptr noundef %24, ptr noundef %0, i32 noundef %4, i32 noundef %12) #7 br label %26 26: ; preds = %22, %19 - tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #8, !srcloc !11 - %27 = tail call i8 asm sideeffect "decl %gs:$0\0A\09/* output condition code e*/\0A", "=*m,={@cce},*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds (i8, ptr @pcpu_hot, i64 8), ptr nonnull elementtype(i32) getelementptr inbounds (i8, ptr @pcpu_hot, i64 8)) #8, !srcloc !12 + tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #7, !srcloc !11 + %27 = tail call i8 asm sideeffect "decl %gs:$0\0A\09/* output condition code e*/\0A", "=*m,={@cce},*m,~{memory},~{dirflag},~{fpsr},~{flags}"(ptr nonnull elementtype(i32) getelementptr inbounds (i8, ptr @pcpu_hot, i64 8), ptr nonnull elementtype(i32) getelementptr inbounds (i8, ptr @pcpu_hot, i64 8)) #7, !srcloc !12 %28 = icmp ult i8 %27, 2 tail call void @llvm.assume(i1 %28) %29 = icmp eq i8 %27, 0 @@ -76,7 +76,7 @@ define internal noundef i32 @step_wise_throttle(ptr noundef %0, ptr noundef %1) 30: ; preds = %26 %31 = tail call i64 @llvm.read_register.i64(metadata !0) - %32 = tail call i64 asm sideeffect "call __SCT__preempt_schedule_notrace", "={rsp},{rsp},~{dirflag},~{fpsr},~{flags}"(i64 %31) #8, !srcloc !14 + %32 = tail call i64 asm sideeffect "call __SCT__preempt_schedule_notrace", "={rsp},{rsp},~{dirflag},~{fpsr},~{flags}"(i64 %31) #7, !srcloc !14 tail call void @llvm.write_register.i64(metadata !0, i64 %32) br label %33 @@ -93,25 +93,25 @@ define internal noundef i32 @step_wise_throttle(ptr noundef %0, ptr noundef %1) %41 = getelementptr inbounds i8, ptr %0, i64 908 br label %42 -42: ; preds = %126, %37 - %43 = phi ptr [ %35, %37 ], [ %127, %126 ] +42: ; preds = %128, %37 + %43 = phi ptr [ %35, %37 ], [ %129, %128 ] %44 = getelementptr i8, ptr %43, i64 -152 %45 = load ptr, ptr %44, align 8 %46 = icmp eq ptr %45, %1 - br i1 %46, label %47, label %126 + br i1 %46, label %47, label %128 47: ; preds = %42 %48 = getelementptr i8, ptr %43, i64 -120 %49 = load i64, ptr %48, align 8 %50 = getelementptr i8, ptr %43, i64 -160 %51 = load ptr, ptr %50, align 8 - call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #8 + call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #7 store i64 0, ptr %3, align 8, !annotation !15 %52 = getelementptr inbounds i8, ptr %51, i64 776 %53 = load ptr, ptr %52, align 8 %54 = getelementptr inbounds i8, ptr %53, i64 8 %55 = load ptr, ptr %54, align 8 - %56 = call i32 %55(ptr noundef %51, ptr noundef nonnull %3) #8 + %56 = call i32 %55(ptr noundef %51, ptr noundef nonnull %3) #7 %57 = load i64, ptr %48, align 8 %58 = getelementptr i8, ptr %43, i64 -144 %59 = load i8, ptr %58, align 8, !range !16, !noundef !17 @@ -119,7 +119,7 @@ define internal noundef i32 @step_wise_throttle(ptr noundef %0, ptr noundef %1) br i1 %60, label %61, label %72 61: ; preds = %47 - br i1 %9, label %95, label %62 + br i1 %9, label %97, label %62 62: ; preds = %61 %63 = load i64, ptr %3, align 8 @@ -127,19 +127,19 @@ define internal noundef i32 @step_wise_throttle(ptr noundef %0, ptr noundef %1) %65 = getelementptr i8, ptr %43, i64 -136 %66 = load i64, ptr %65, align 8 %67 = icmp ult i64 %64, %66 - br i1 %67, label %68, label %95 + br i1 %67, label %68, label %97 68: ; preds = %62 %69 = getelementptr i8, ptr %43, i64 -128 %70 = load i64, ptr %69, align 8 %71 = call i64 @llvm.umax.i64(i64 %64, i64 %70) - br label %95 + br label %97 72: ; preds = %47 br i1 %9, label %84, label %73 73: ; preds = %72 - br i1 %38, label %74, label %95 + br i1 %38, label %74, label %97 74: ; preds = %73 %75 = load i64, ptr %3, align 8 @@ -147,109 +147,111 @@ define internal noundef i32 @step_wise_throttle(ptr noundef %0, ptr noundef %1) %77 = getelementptr i8, ptr %43, i64 -136 %78 = load i64, ptr %77, align 8 %79 = icmp ult i64 %76, %78 - br i1 %79, label %80, label %95 + br i1 %79, label %80, label %97 80: ; preds = %74 %81 = getelementptr i8, ptr %43, i64 -128 %82 = load i64, ptr %81, align 8 %83 = call i64 @llvm.umax.i64(i64 %76, i64 %82) - br label %95 + br label %97 84: ; preds = %72 - br i1 %39, label %85, label %95 + br i1 %39, label %85, label %97 85: ; preds = %84 %86 = load i64, ptr %3, align 8 %87 = getelementptr i8, ptr %43, i64 -128 %88 = load i64, ptr %87, align 8 %89 = icmp ugt i64 %86, %88 - br i1 %89, label %90, label %95 + br i1 %89, label %90, label %97 90: ; preds = %85 %91 = add i64 %86, -1 %92 = getelementptr i8, ptr %43, i64 -136 %93 = load i64, ptr %92, align 8 - %94 = call i64 @llvm.umin.i64(i64 %91, i64 %93) - br label %95 - -95: ; preds = %90, %85, %84, %80, %74, %73, %68, %62, %61 - %96 = phi i64 [ %71, %68 ], [ %66, %62 ], [ -1, %61 ], [ %57, %73 ], [ %94, %90 ], [ %57, %84 ], [ %83, %80 ], [ %78, %74 ], [ -1, %85 ] - call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #8 - store i64 %96, ptr %48, align 8 - %97 = load i8, ptr %58, align 8, !range !16, !noundef !17 - %98 = icmp eq i8 %97, 0 - br i1 %98, label %103, label %99 - -99: ; preds = %95 - %100 = shl i64 %49, 32 - %101 = ashr exact i64 %100, 32 - %102 = icmp eq i64 %101, %96 - br i1 %102, label %126, label %103 - -103: ; preds = %99, %95 - %104 = and i64 %49, 4294967295 - %105 = icmp eq i64 %104, 4294967295 - %106 = icmp eq i64 %96, -1 - br i1 %105, label %107, label %111 - -107: ; preds = %103 - br i1 %106, label %119, label %108 - -108: ; preds = %107 - %109 = load i32, ptr %40, align 4 - %110 = icmp eq i32 %109, 1 - br i1 %110, label %115, label %119 - -111: ; preds = %103 - br i1 %106, label %112, label %119 - -112: ; preds = %111 - %113 = load i32, ptr %40, align 4 - %114 = icmp eq i32 %113, 1 - br i1 %114, label %115, label %119 - -115: ; preds = %112, %108 - %116 = phi i32 [ 1, %108 ], [ -1, %112 ] - %117 = load i32, ptr %41, align 4 - %118 = add i32 %117, %116 - store i32 %118, ptr %41, align 4 - br label %119 - -119: ; preds = %115, %112, %111, %108, %107 + %94 = icmp ult i64 %91, %93 + %95 = call i64 @llvm.umax.i64(i64 %91, i64 %88) + %96 = select i1 %94, i64 %95, i64 %93 + br label %97 + +97: ; preds = %90, %85, %84, %80, %74, %73, %68, %62, %61 + %98 = phi i64 [ %71, %68 ], [ %66, %62 ], [ -1, %61 ], [ %57, %73 ], [ %96, %90 ], [ %57, %84 ], [ %83, %80 ], [ %78, %74 ], [ -1, %85 ] + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #7 + store i64 %98, ptr %48, align 8 + %99 = load i8, ptr %58, align 8, !range !16, !noundef !17 + %100 = icmp eq i8 %99, 0 + br i1 %100, label %105, label %101 + +101: ; preds = %97 + %102 = shl i64 %49, 32 + %103 = ashr exact i64 %102, 32 + %104 = icmp eq i64 %103, %98 + br i1 %104, label %128, label %105 + +105: ; preds = %101, %97 + %106 = and i64 %49, 4294967295 + %107 = icmp eq i64 %106, 4294967295 + %108 = icmp eq i64 %98, -1 + br i1 %107, label %109, label %113 + +109: ; preds = %105 + br i1 %108, label %121, label %110 + +110: ; preds = %109 + %111 = load i32, ptr %40, align 4 + %112 = icmp eq i32 %111, 1 + br i1 %112, label %117, label %121 + +113: ; preds = %105 + br i1 %108, label %114, label %121 + +114: ; preds = %113 + %115 = load i32, ptr %40, align 4 + %116 = icmp eq i32 %115, 1 + br i1 %116, label %117, label %121 + +117: ; preds = %114, %110 + %118 = phi i32 [ 1, %110 ], [ -1, %114 ] + %119 = load i32, ptr %41, align 4 + %120 = add i32 %119, %118 + store i32 %120, ptr %41, align 4 + br label %121 + +121: ; preds = %117, %114, %113, %110, %109 store i8 1, ptr %58, align 8 - %120 = load ptr, ptr %50, align 8 - %121 = getelementptr inbounds i8, ptr %120, i64 792 - call void @mutex_lock(ptr noundef %121) #8 %122 = load ptr, ptr %50, align 8 - %123 = getelementptr inbounds i8, ptr %122, i64 784 - store i8 0, ptr %123, align 8 + %123 = getelementptr inbounds i8, ptr %122, i64 792 + call void @mutex_lock(ptr noundef %123) #7 %124 = load ptr, ptr %50, align 8 - %125 = getelementptr inbounds i8, ptr %124, i64 792 - call void @mutex_unlock(ptr noundef %125) #8 - br label %126 - -126: ; preds = %119, %99, %42 - %127 = load ptr, ptr %43, align 8 - %128 = icmp eq ptr %127, %34 - br i1 %128, label %.loopexit11.loopexit, label %42, !llvm.loop !18 + %125 = getelementptr inbounds i8, ptr %124, i64 784 + store i8 0, ptr %125, align 8 + %126 = load ptr, ptr %50, align 8 + %127 = getelementptr inbounds i8, ptr %126, i64 792 + call void @mutex_unlock(ptr noundef %127) #7 + br label %128 + +128: ; preds = %121, %101, %42 + %129 = load ptr, ptr %43, align 8 + %130 = icmp eq ptr %129, %34 + br i1 %130, label %.loopexit11.loopexit, label %42, !llvm.loop !18 -.loopexit11.loopexit: ; preds = %126 +.loopexit11.loopexit: ; preds = %128 %.pre = load ptr, ptr %34, align 8 br label %.loopexit11 .loopexit11: ; preds = %.loopexit11.loopexit, %33 - %129 = phi ptr [ %.pre, %.loopexit11.loopexit ], [ %35, %33 ] - %130 = icmp eq ptr %129, %34 - br i1 %130, label %.loopexit, label %.preheader + %131 = phi ptr [ %.pre, %.loopexit11.loopexit ], [ %35, %33 ] + %132 = icmp eq ptr %131, %34 + br i1 %132, label %.loopexit, label %.preheader .preheader: ; preds = %.loopexit11, %.preheader - %131 = phi ptr [ %134, %.preheader ], [ %129, %.loopexit11 ] - %132 = getelementptr i8, ptr %131, i64 -160 - %133 = load ptr, ptr %132, align 8 - call void @thermal_cdev_update(ptr noundef %133) #8 - %134 = load ptr, ptr %131, align 8 - %135 = icmp eq ptr %134, %34 - br i1 %135, label %.loopexit, label %.preheader, !llvm.loop !21 + %133 = phi ptr [ %136, %.preheader ], [ %131, %.loopexit11 ] + %134 = getelementptr i8, ptr %133, i64 -160 + %135 = load ptr, ptr %134, align 8 + call void @thermal_cdev_update(ptr noundef %135) #7 + %136 = load ptr, ptr %133, align 8 + %137 = icmp eq ptr %136, %34 + br i1 %137, label %.loopexit, label %.preheader, !llvm.loop !21 .loopexit: ; preds = %.preheader, %.loopexit11 ret i32 0 @@ -291,9 +293,6 @@ declare void @llvm.assume(i1 noundef) #5 ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umax.i64(i64, i64) #6 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umin.i64(i64, i64) #7 - attributes #0 = { fn_ret_thunk_extern nounwind null_pointer_is_valid "min-legal-vector-width"="0" "no-jump-tables"="true" "no-trapping-math"="true" "patchable-function-entry"="0" "patchable-function-prefix"="16" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+retpoline-external-thunk,+retpoline-indirect-branches,+retpoline-indirect-calls,-3dnow,-3dnowa,-aes,-avx,-avx10.1-256,-avx10.1-512,-avx2,-avx512bf16,-avx512bitalg,-avx512bw,-avx512cd,-avx512dq,-avx512er,-avx512f,-avx512fp16,-avx512ifma,-avx512pf,-avx512vbmi,-avx512vbmi2,-avx512vl,-avx512vnni,-avx512vp2intersect,-avx512vpopcntdq,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-f16c,-fma,-fma4,-gfni,-kl,-mmx,-pclmul,-sha,-sha512,-sm3,-sm4,-sse,-sse2,-sse3,-sse4.1,-sse4.2,-sse4a,-ssse3,-vaes,-vpclmulqdq,-widekl,-x87,-xop" "tune-cpu"="generic" } attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } attributes #2 = { null_pointer_is_valid "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+retpoline-external-thunk,+retpoline-indirect-branches,+retpoline-indirect-calls,-3dnow,-3dnowa,-aes,-avx,-avx10.1-256,-avx10.1-512,-avx2,-avx512bf16,-avx512bitalg,-avx512bw,-avx512cd,-avx512dq,-avx512er,-avx512f,-avx512fp16,-avx512ifma,-avx512pf,-avx512vbmi,-avx512vbmi2,-avx512vl,-avx512vnni,-avx512vp2intersect,-avx512vpopcntdq,-avxifma,-avxneconvert,-avxvnni,-avxvnniint16,-avxvnniint8,-f16c,-fma,-fma4,-gfni,-kl,-mmx,-pclmul,-sha,-sha512,-sm3,-sm4,-sse,-sse2,-sse3,-sse4.1,-sse4.2,-sse4a,-ssse3,-vaes,-vpclmulqdq,-widekl,-x87,-xop" "tune-cpu"="generic" } @@ -301,8 +300,7 @@ attributes #3 = { mustprogress nocallback nofree nosync nounwind willreturn memo attributes #4 = { nocallback nounwind } attributes #5 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } attributes #6 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #7 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #8 = { nounwind } +attributes #7 = { nounwind } !llvm.named.register.rsp = !{!0} !llvm.module.flags = !{!1, !2, !3, !4, !5} diff --git a/bench/llvm/optimized/InstCombineSimplifyDemanded.cpp.ll b/bench/llvm/optimized/InstCombineSimplifyDemanded.cpp.ll index 9be9b6862c7..bf001564152 100644 --- a/bench/llvm/optimized/InstCombineSimplifyDemanded.cpp.ll +++ b/bench/llvm/optimized/InstCombineSimplifyDemanded.cpp.ll @@ -13312,7 +13312,7 @@ _ZN4llvm5APIntaNERKS0_.exit: ; preds = %100, %104 %105 = getelementptr inbounds nuw i8, ptr %8, i64 8 store i32 %54, ptr %105, align 8, !alias.scope !152 %106 = icmp ult i32 %54, 65 - br i1 %106, label %107, label %114 + br i1 %106, label %107, label %115 107: ; preds = %_ZN4llvm5APIntaNERKS0_.exit %108 = add nuw nsw i32 %54, 63 @@ -13320,518 +13320,520 @@ _ZN4llvm5APIntaNERKS0_.exit: ; preds = %100, %104 %110 = xor i32 %109, 63 %111 = zext nneg i32 %110 to i64 %112 = lshr i64 -1, %111 - store i64 %112, ptr %8, align 8, !alias.scope !152 - %113 = getelementptr inbounds nuw i8, ptr %9, i64 8 - store i32 %54, ptr %113, align 8, !alias.scope !155 - store i64 %112, ptr %9, align 8, !alias.scope !158 + %113 = icmp eq i32 %54, 0 + %spec.store.select.i.i.i = select i1 %113, i64 0, i64 %112 + store i64 %spec.store.select.i.i.i, ptr %8, align 8, !alias.scope !152 + %114 = getelementptr inbounds nuw i8, ptr %9, i64 8 + store i32 %54, ptr %114, align 8, !alias.scope !155 + store i64 %spec.store.select.i.i.i, ptr %9, align 8, !alias.scope !158 br label %_ZN4llvm5APInt10getAllOnesEj.exit86 -114: ; preds = %_ZN4llvm5APIntaNERKS0_.exit +115: ; preds = %_ZN4llvm5APIntaNERKS0_.exit call void @_ZN4llvm5APInt12initSlowCaseEmb(ptr noundef nonnull align 8 dereferenceable(12) %8, i64 noundef -1, i1 noundef zeroext true) #19 - %115 = getelementptr inbounds nuw i8, ptr %9, i64 8 - store i32 %54, ptr %115, align 8, !alias.scope !158 + %116 = getelementptr inbounds nuw i8, ptr %9, i64 8 + store i32 %54, ptr %116, align 8, !alias.scope !158 call void @_ZN4llvm5APInt12initSlowCaseEmb(ptr noundef nonnull align 8 dereferenceable(12) %9, i64 noundef -1, i1 noundef zeroext true) #19 br label %_ZN4llvm5APInt10getAllOnesEj.exit86 -_ZN4llvm5APInt10getAllOnesEj.exit86: ; preds = %107, %114 - %116 = phi ptr [ %113, %107 ], [ %115, %114 ] - %117 = load i8, ptr %1, align 8 - %.not = icmp eq i8 %117, 55 - br i1 %.not, label %118, label %143 +_ZN4llvm5APInt10getAllOnesEj.exit86: ; preds = %107, %115 + %117 = phi ptr [ %114, %107 ], [ %116, %115 ] + %118 = load i8, ptr %1, align 8 + %.not = icmp eq i8 %118, 55 + br i1 %.not, label %119, label %144 -118: ; preds = %_ZN4llvm5APInt10getAllOnesEj.exit86 +119: ; preds = %_ZN4llvm5APInt10getAllOnesEj.exit86 call void @llvm.experimental.noalias.scope.decl(metadata !160) - %119 = getelementptr inbounds nuw i8, ptr %11, i64 8 - %120 = load i32, ptr %105, align 8, !noalias !160 - store i32 %120, ptr %119, align 8, !alias.scope !160 - %121 = icmp ult i32 %120, 65 - br i1 %121, label %_ZN4llvm5APIntC2ERKS0_.exit.thread.i, label %_ZN4llvm5APIntC2ERKS0_.exit.i - -_ZN4llvm5APIntC2ERKS0_.exit.thread.i: ; preds = %118 - %122 = load i64, ptr %8, align 8, !noalias !160 - store i64 %122, ptr %11, align 8, !alias.scope !160 + %120 = getelementptr inbounds nuw i8, ptr %11, i64 8 + %121 = load i32, ptr %105, align 8, !noalias !160 + store i32 %121, ptr %120, align 8, !alias.scope !160 + %122 = icmp ult i32 %121, 65 + br i1 %122, label %_ZN4llvm5APIntC2ERKS0_.exit.thread.i, label %_ZN4llvm5APIntC2ERKS0_.exit.i + +_ZN4llvm5APIntC2ERKS0_.exit.thread.i: ; preds = %119 + %123 = load i64, ptr %8, align 8, !noalias !160 + store i64 %123, ptr %11, align 8, !alias.scope !160 br label %_ZNK4llvm5APInt4lshrEj.exit.thread -_ZN4llvm5APIntC2ERKS0_.exit.i: ; preds = %118 +_ZN4llvm5APIntC2ERKS0_.exit.i: ; preds = %119 call void @_ZN4llvm5APInt12initSlowCaseERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %11, ptr noundef nonnull align 8 dereferenceable(12) %8) #19 - %.pr.i = load i32, ptr %119, align 8, !alias.scope !160 - %123 = icmp ult i32 %.pr.i, 65 - br i1 %123, label %_ZNK4llvm5APInt4lshrEj.exit.thread, label %_ZNK4llvm5APInt4lshrEj.exit + %.pr.i = load i32, ptr %120, align 8, !alias.scope !160 + %124 = icmp ult i32 %.pr.i, 65 + br i1 %124, label %_ZNK4llvm5APInt4lshrEj.exit.thread, label %_ZNK4llvm5APInt4lshrEj.exit _ZNK4llvm5APInt4lshrEj.exit.thread: ; preds = %_ZN4llvm5APIntC2ERKS0_.exit.i, %_ZN4llvm5APIntC2ERKS0_.exit.thread.i - %124 = phi i32 [ %120, %_ZN4llvm5APIntC2ERKS0_.exit.thread.i ], [ %.pr.i, %_ZN4llvm5APIntC2ERKS0_.exit.i ] - %125 = icmp eq i32 %124, %67 - %126 = load i64, ptr %11, align 8 - %127 = lshr i64 %126, %.0.i.i.i81 - %.sink = select i1 %125, i64 0, i64 %127 + %125 = phi i32 [ %121, %_ZN4llvm5APIntC2ERKS0_.exit.thread.i ], [ %.pr.i, %_ZN4llvm5APIntC2ERKS0_.exit.i ] + %126 = icmp eq i32 %125, %67 + %127 = load i64, ptr %11, align 8 + %128 = lshr i64 %127, %.0.i.i.i81 + %.sink = select i1 %126, i64 0, i64 %128 store i64 %.sink, ptr %11, align 8, !alias.scope !160 - %128 = getelementptr inbounds nuw i8, ptr %10, i64 8 - store i32 %124, ptr %128, align 8, !alias.scope !163 + %129 = getelementptr inbounds nuw i8, ptr %10, i64 8 + store i32 %125, ptr %129, align 8, !alias.scope !163 br label %_ZN4llvm5APInt15clearUnusedBitsEv.exit.i.i.i _ZNK4llvm5APInt4lshrEj.exit: ; preds = %_ZN4llvm5APIntC2ERKS0_.exit.i call void @_ZN4llvm5APInt12lshrSlowCaseEj(ptr noundef nonnull align 8 dereferenceable(12) %11, i32 noundef %67) #19 - %.pre122 = load i32, ptr %119, align 8, !noalias !168 + %.pre122 = load i32, ptr %120, align 8, !noalias !168 call void @llvm.experimental.noalias.scope.decl(metadata !171) call void @llvm.experimental.noalias.scope.decl(metadata !172) - %129 = getelementptr inbounds nuw i8, ptr %10, i64 8 - store i32 %.pre122, ptr %129, align 8, !alias.scope !168 - %130 = icmp ult i32 %.pre122, 65 - br i1 %130, label %_ZN4llvm5APInt15clearUnusedBitsEv.exit.i.i.i, label %_ZN4llvm5APIntC2ERKS0_.exit.i.i + %130 = getelementptr inbounds nuw i8, ptr %10, i64 8 + store i32 %.pre122, ptr %130, align 8, !alias.scope !168 + %131 = icmp ult i32 %.pre122, 65 + br i1 %131, label %_ZN4llvm5APInt15clearUnusedBitsEv.exit.i.i.i, label %_ZN4llvm5APIntC2ERKS0_.exit.i.i _ZN4llvm5APIntC2ERKS0_.exit.i.i: ; preds = %_ZNK4llvm5APInt4lshrEj.exit call void @_ZN4llvm5APInt12initSlowCaseERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %10, ptr noundef nonnull align 8 dereferenceable(12) %11) #19 - %.pr.i.i = load i32, ptr %129, align 8, !alias.scope !168 - %131 = icmp ult i32 %.pr.i.i, 65 - br i1 %131, label %_ZN4llvm5APInt15clearUnusedBitsEv.exit.i.i.i, label %142 + %.pr.i.i = load i32, ptr %130, align 8, !alias.scope !168 + %132 = icmp ult i32 %.pr.i.i, 65 + br i1 %132, label %_ZN4llvm5APInt15clearUnusedBitsEv.exit.i.i.i, label %143 _ZN4llvm5APInt15clearUnusedBitsEv.exit.i.i.i: ; preds = %_ZNK4llvm5APInt4lshrEj.exit.thread, %_ZN4llvm5APIntC2ERKS0_.exit.i.i, %_ZNK4llvm5APInt4lshrEj.exit %.sink.i.i = phi ptr [ %11, %_ZNK4llvm5APInt4lshrEj.exit ], [ %10, %_ZN4llvm5APIntC2ERKS0_.exit.i.i ], [ %11, %_ZNK4llvm5APInt4lshrEj.exit.thread ] - %132 = phi i32 [ %.pre122, %_ZNK4llvm5APInt4lshrEj.exit ], [ %.pr.i.i, %_ZN4llvm5APIntC2ERKS0_.exit.i.i ], [ %124, %_ZNK4llvm5APInt4lshrEj.exit.thread ] + %133 = phi i32 [ %.pre122, %_ZNK4llvm5APInt4lshrEj.exit ], [ %.pr.i.i, %_ZN4llvm5APIntC2ERKS0_.exit.i.i ], [ %125, %_ZNK4llvm5APInt4lshrEj.exit.thread ] %.pre.i.i = load i64, ptr %.sink.i.i, align 8 - %133 = icmp eq i32 %132, %66 - %134 = shl i64 %.pre.i.i, %.0.i.i.i - %storemerge.i.i.i = select i1 %133, i64 0, i64 %134 - %135 = add nuw nsw i32 %132, 63 - %136 = and i32 %135, 63 - %137 = xor i32 %136, 63 - %138 = zext nneg i32 %137 to i64 - %139 = lshr i64 -1, %138 - %140 = icmp eq i32 %132, 0 - %spec.store.select.i.i.i.i = select i1 %140, i64 0, i64 %139 - %141 = and i64 %spec.store.select.i.i.i.i, %storemerge.i.i.i - store i64 %141, ptr %10, align 8, !alias.scope !168 + %134 = icmp eq i32 %133, %66 + %135 = shl i64 %.pre.i.i, %.0.i.i.i + %storemerge.i.i.i = select i1 %134, i64 0, i64 %135 + %136 = add nuw nsw i32 %133, 63 + %137 = and i32 %136, 63 + %138 = xor i32 %137, 63 + %139 = zext nneg i32 %138 to i64 + %140 = lshr i64 -1, %139 + %141 = icmp eq i32 %133, 0 + %spec.store.select.i.i.i.i = select i1 %141, i64 0, i64 %140 + %142 = and i64 %spec.store.select.i.i.i.i, %storemerge.i.i.i + store i64 %142, ptr %10, align 8, !alias.scope !168 br label %_ZNK4llvm5APIntlsEj.exit -142: ; preds = %_ZN4llvm5APIntC2ERKS0_.exit.i.i +143: ; preds = %_ZN4llvm5APIntC2ERKS0_.exit.i.i call void @_ZN4llvm5APInt11shlSlowCaseEj(ptr noundef nonnull align 8 dereferenceable(12) %10, i32 noundef %66) #19 br label %_ZNK4llvm5APIntlsEj.exit -143: ; preds = %_ZN4llvm5APInt10getAllOnesEj.exit86 +144: ; preds = %_ZN4llvm5APInt10getAllOnesEj.exit86 call void @llvm.experimental.noalias.scope.decl(metadata !173) - %144 = getelementptr inbounds nuw i8, ptr %12, i64 8 - %145 = load i32, ptr %105, align 8, !noalias !173 - store i32 %145, ptr %144, align 8, !alias.scope !173 - %146 = icmp ult i32 %145, 65 - br i1 %146, label %_ZNK4llvm5APInt4ashrEj.exit.thread, label %_ZN4llvm5APIntC2ERKS0_.exit.i87 + %145 = getelementptr inbounds nuw i8, ptr %12, i64 8 + %146 = load i32, ptr %105, align 8, !noalias !173 + store i32 %146, ptr %145, align 8, !alias.scope !173 + %147 = icmp ult i32 %146, 65 + br i1 %147, label %_ZNK4llvm5APInt4ashrEj.exit.thread, label %_ZN4llvm5APIntC2ERKS0_.exit.i87 -_ZN4llvm5APIntC2ERKS0_.exit.i87: ; preds = %143 +_ZN4llvm5APIntC2ERKS0_.exit.i87: ; preds = %144 call void @_ZN4llvm5APInt12initSlowCaseERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %12, ptr noundef nonnull align 8 dereferenceable(12) %8) #19 - %.pr.i88 = load i32, ptr %144, align 8, !alias.scope !173 - %147 = icmp ult i32 %.pr.i88, 65 - br i1 %147, label %_ZNK4llvm5APInt4ashrEj.exit.thread, label %_ZNK4llvm5APInt4ashrEj.exit + %.pr.i88 = load i32, ptr %145, align 8, !alias.scope !173 + %148 = icmp ult i32 %.pr.i88, 65 + br i1 %148, label %_ZNK4llvm5APInt4ashrEj.exit.thread, label %_ZNK4llvm5APInt4ashrEj.exit -_ZNK4llvm5APInt4ashrEj.exit.thread: ; preds = %143, %_ZN4llvm5APIntC2ERKS0_.exit.i87 - %.sink.i = phi ptr [ %8, %143 ], [ %12, %_ZN4llvm5APIntC2ERKS0_.exit.i87 ] - %148 = phi i32 [ %145, %143 ], [ %.pr.i88, %_ZN4llvm5APIntC2ERKS0_.exit.i87 ] +_ZNK4llvm5APInt4ashrEj.exit.thread: ; preds = %144, %_ZN4llvm5APIntC2ERKS0_.exit.i87 + %.sink.i = phi ptr [ %8, %144 ], [ %12, %_ZN4llvm5APIntC2ERKS0_.exit.i87 ] + %149 = phi i32 [ %146, %144 ], [ %.pr.i88, %_ZN4llvm5APIntC2ERKS0_.exit.i87 ] %.pre.i = load i64, ptr %.sink.i, align 8 - %149 = icmp eq i32 %148, 0 - %150 = sub nuw nsw i32 64, %148 - %151 = zext nneg i32 %150 to i64 - %152 = shl i64 %.pre.i, %151 - %153 = ashr exact i64 %152, %151 - %.0.i.i.i89 = select i1 %149, i64 0, i64 %153 - %154 = icmp eq i32 %148, %67 - %.pn.i.i = select i1 %154, i64 63, i64 %.0.i.i.i81 + %150 = icmp eq i32 %149, 0 + %151 = sub nuw nsw i32 64, %149 + %152 = zext nneg i32 %151 to i64 + %153 = shl i64 %.pre.i, %152 + %154 = ashr exact i64 %153, %152 + %.0.i.i.i89 = select i1 %150, i64 0, i64 %154 + %155 = icmp eq i32 %149, %67 + %.pn.i.i = select i1 %155, i64 63, i64 %.0.i.i.i81 %storemerge.i.i = ashr i64 %.0.i.i.i89, %.pn.i.i - %155 = add nuw nsw i32 %148, 63 - %156 = and i32 %155, 63 - %157 = xor i32 %156, 63 - %158 = zext nneg i32 %157 to i64 - %159 = lshr i64 -1, %158 - %spec.store.select.i.i.i90 = select i1 %149, i64 0, i64 %159 - %160 = and i64 %storemerge.i.i, %spec.store.select.i.i.i90 - store i64 %160, ptr %12, align 8, !alias.scope !173 - %161 = getelementptr inbounds nuw i8, ptr %10, i64 8 - store i32 %148, ptr %161, align 8, !alias.scope !176 + %156 = add nuw nsw i32 %149, 63 + %157 = and i32 %156, 63 + %158 = xor i32 %157, 63 + %159 = zext nneg i32 %158 to i64 + %160 = lshr i64 -1, %159 + %spec.store.select.i.i.i90 = select i1 %150, i64 0, i64 %160 + %161 = and i64 %storemerge.i.i, %spec.store.select.i.i.i90 + store i64 %161, ptr %12, align 8, !alias.scope !173 + %162 = getelementptr inbounds nuw i8, ptr %10, i64 8 + store i32 %149, ptr %162, align 8, !alias.scope !176 br label %_ZN4llvm5APInt15clearUnusedBitsEv.exit.i.i.i93 _ZNK4llvm5APInt4ashrEj.exit: ; preds = %_ZN4llvm5APIntC2ERKS0_.exit.i87 call void @_ZN4llvm5APInt12ashrSlowCaseEj(ptr noundef nonnull align 8 dereferenceable(12) %12, i32 noundef %67) #19 - %.pre = load i32, ptr %144, align 8, !noalias !181 + %.pre = load i32, ptr %145, align 8, !noalias !181 call void @llvm.experimental.noalias.scope.decl(metadata !184) call void @llvm.experimental.noalias.scope.decl(metadata !185) - %162 = getelementptr inbounds nuw i8, ptr %10, i64 8 - store i32 %.pre, ptr %162, align 8, !alias.scope !181 - %163 = icmp ult i32 %.pre, 65 - br i1 %163, label %_ZN4llvm5APInt15clearUnusedBitsEv.exit.i.i.i93, label %_ZN4llvm5APIntC2ERKS0_.exit.i.i91 + %163 = getelementptr inbounds nuw i8, ptr %10, i64 8 + store i32 %.pre, ptr %163, align 8, !alias.scope !181 + %164 = icmp ult i32 %.pre, 65 + br i1 %164, label %_ZN4llvm5APInt15clearUnusedBitsEv.exit.i.i.i93, label %_ZN4llvm5APIntC2ERKS0_.exit.i.i91 _ZN4llvm5APIntC2ERKS0_.exit.i.i91: ; preds = %_ZNK4llvm5APInt4ashrEj.exit call void @_ZN4llvm5APInt12initSlowCaseERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %10, ptr noundef nonnull align 8 dereferenceable(12) %12) #19 - %.pr.i.i92 = load i32, ptr %162, align 8, !alias.scope !181 - %164 = icmp ult i32 %.pr.i.i92, 65 - br i1 %164, label %_ZN4llvm5APInt15clearUnusedBitsEv.exit.i.i.i93, label %175 + %.pr.i.i92 = load i32, ptr %163, align 8, !alias.scope !181 + %165 = icmp ult i32 %.pr.i.i92, 65 + br i1 %165, label %_ZN4llvm5APInt15clearUnusedBitsEv.exit.i.i.i93, label %176 _ZN4llvm5APInt15clearUnusedBitsEv.exit.i.i.i93: ; preds = %_ZNK4llvm5APInt4ashrEj.exit.thread, %_ZN4llvm5APIntC2ERKS0_.exit.i.i91, %_ZNK4llvm5APInt4ashrEj.exit %.sink.i.i94 = phi ptr [ %12, %_ZNK4llvm5APInt4ashrEj.exit ], [ %10, %_ZN4llvm5APIntC2ERKS0_.exit.i.i91 ], [ %12, %_ZNK4llvm5APInt4ashrEj.exit.thread ] - %165 = phi i32 [ %.pre, %_ZNK4llvm5APInt4ashrEj.exit ], [ %.pr.i.i92, %_ZN4llvm5APIntC2ERKS0_.exit.i.i91 ], [ %148, %_ZNK4llvm5APInt4ashrEj.exit.thread ] + %166 = phi i32 [ %.pre, %_ZNK4llvm5APInt4ashrEj.exit ], [ %.pr.i.i92, %_ZN4llvm5APIntC2ERKS0_.exit.i.i91 ], [ %149, %_ZNK4llvm5APInt4ashrEj.exit.thread ] %.pre.i.i95 = load i64, ptr %.sink.i.i94, align 8 - %166 = icmp eq i32 %165, %66 - %167 = shl i64 %.pre.i.i95, %.0.i.i.i - %storemerge.i.i.i96 = select i1 %166, i64 0, i64 %167 - %168 = add nuw nsw i32 %165, 63 - %169 = and i32 %168, 63 - %170 = xor i32 %169, 63 - %171 = zext nneg i32 %170 to i64 - %172 = lshr i64 -1, %171 - %173 = icmp eq i32 %165, 0 - %spec.store.select.i.i.i.i97 = select i1 %173, i64 0, i64 %172 - %174 = and i64 %spec.store.select.i.i.i.i97, %storemerge.i.i.i96 - store i64 %174, ptr %10, align 8, !alias.scope !181 + %167 = icmp eq i32 %166, %66 + %168 = shl i64 %.pre.i.i95, %.0.i.i.i + %storemerge.i.i.i96 = select i1 %167, i64 0, i64 %168 + %169 = add nuw nsw i32 %166, 63 + %170 = and i32 %169, 63 + %171 = xor i32 %170, 63 + %172 = zext nneg i32 %171 to i64 + %173 = lshr i64 -1, %172 + %174 = icmp eq i32 %166, 0 + %spec.store.select.i.i.i.i97 = select i1 %174, i64 0, i64 %173 + %175 = and i64 %spec.store.select.i.i.i.i97, %storemerge.i.i.i96 + store i64 %175, ptr %10, align 8, !alias.scope !181 br label %_ZNK4llvm5APIntlsEj.exit -175: ; preds = %_ZN4llvm5APIntC2ERKS0_.exit.i.i91 +176: ; preds = %_ZN4llvm5APIntC2ERKS0_.exit.i.i91 call void @_ZN4llvm5APInt11shlSlowCaseEj(ptr noundef nonnull align 8 dereferenceable(12) %10, i32 noundef %66) #19 br label %_ZNK4llvm5APIntlsEj.exit -_ZNK4llvm5APIntlsEj.exit: ; preds = %175, %_ZN4llvm5APInt15clearUnusedBitsEv.exit.i.i.i93, %142, %_ZN4llvm5APInt15clearUnusedBitsEv.exit.i.i.i - %176 = load i32, ptr %105, align 8 - %177 = icmp ult i32 %176, 65 - br i1 %177, label %_ZN4llvm5APIntD2Ev.exit, label %178 +_ZNK4llvm5APIntlsEj.exit: ; preds = %176, %_ZN4llvm5APInt15clearUnusedBitsEv.exit.i.i.i93, %143, %_ZN4llvm5APInt15clearUnusedBitsEv.exit.i.i.i + %177 = load i32, ptr %105, align 8 + %178 = icmp ult i32 %177, 65 + br i1 %178, label %_ZN4llvm5APIntD2Ev.exit, label %179 -178: ; preds = %_ZNK4llvm5APIntlsEj.exit - %179 = load ptr, ptr %8, align 8 - %180 = icmp eq ptr %179, null - br i1 %180, label %_ZN4llvm5APIntD2Ev.exit, label %181 +179: ; preds = %_ZNK4llvm5APIntlsEj.exit + %180 = load ptr, ptr %8, align 8 + %181 = icmp eq ptr %180, null + br i1 %181, label %_ZN4llvm5APIntD2Ev.exit, label %182 -181: ; preds = %178 - call void @_ZdaPv(ptr noundef nonnull %179) #20 +182: ; preds = %179 + call void @_ZdaPv(ptr noundef nonnull %180) #20 br label %_ZN4llvm5APIntD2Ev.exit -_ZN4llvm5APIntD2Ev.exit: ; preds = %181, %178, %_ZNK4llvm5APIntlsEj.exit - %182 = load i64, ptr %10, align 8 - store i64 %182, ptr %8, align 8 - %183 = getelementptr inbounds nuw i8, ptr %10, i64 8 - %184 = load i32, ptr %183, align 8 - store i32 %184, ptr %105, align 8 - store i32 0, ptr %183, align 8 - br i1 %.not, label %.critedge, label %185 - -185: ; preds = %_ZN4llvm5APIntD2Ev.exit - %186 = getelementptr inbounds nuw i8, ptr %12, i64 8 - %187 = load i32, ptr %186, align 8 - %188 = icmp ult i32 %187, 65 - %189 = load ptr, ptr %12, align 8 - %190 = icmp eq ptr %189, null - %or.cond130 = select i1 %188, i1 true, i1 %190 +_ZN4llvm5APIntD2Ev.exit: ; preds = %182, %179, %_ZNK4llvm5APIntlsEj.exit + %183 = load i64, ptr %10, align 8 + store i64 %183, ptr %8, align 8 + %184 = getelementptr inbounds nuw i8, ptr %10, i64 8 + %185 = load i32, ptr %184, align 8 + store i32 %185, ptr %105, align 8 + store i32 0, ptr %184, align 8 + br i1 %.not, label %.critedge, label %186 + +186: ; preds = %_ZN4llvm5APIntD2Ev.exit + %187 = getelementptr inbounds nuw i8, ptr %12, i64 8 + %188 = load i32, ptr %187, align 8 + %189 = icmp ult i32 %188, 65 + %190 = load ptr, ptr %12, align 8 + %191 = icmp eq ptr %190, null + %or.cond130 = select i1 %189, i1 true, i1 %191 br i1 %or.cond130, label %_ZN4llvm5APIntD2Ev.exit99, label %_ZN4llvm5APIntD2Ev.exit99.sink.split .critedge: ; preds = %_ZN4llvm5APIntD2Ev.exit - %191 = getelementptr inbounds nuw i8, ptr %11, i64 8 - %192 = load i32, ptr %191, align 8 - %193 = icmp ult i32 %192, 65 - %194 = load ptr, ptr %11, align 8 - %195 = icmp eq ptr %194, null - %or.cond132 = select i1 %193, i1 true, i1 %195 + %192 = getelementptr inbounds nuw i8, ptr %11, i64 8 + %193 = load i32, ptr %192, align 8 + %194 = icmp ult i32 %193, 65 + %195 = load ptr, ptr %11, align 8 + %196 = icmp eq ptr %195, null + %or.cond132 = select i1 %194, i1 true, i1 %196 br i1 %or.cond132, label %_ZN4llvm5APIntD2Ev.exit99, label %_ZN4llvm5APIntD2Ev.exit99.sink.split -_ZN4llvm5APIntD2Ev.exit99.sink.split: ; preds = %.critedge, %185 - %.sink126 = phi ptr [ %189, %185 ], [ %194, %.critedge ] +_ZN4llvm5APIntD2Ev.exit99.sink.split: ; preds = %.critedge, %186 + %.sink126 = phi ptr [ %190, %186 ], [ %195, %.critedge ] call void @_ZdaPv(ptr noundef nonnull %.sink126) #20 br label %_ZN4llvm5APIntD2Ev.exit99 -_ZN4llvm5APIntD2Ev.exit99: ; preds = %_ZN4llvm5APIntD2Ev.exit99.sink.split, %.critedge, %185 +_ZN4llvm5APIntD2Ev.exit99: ; preds = %_ZN4llvm5APIntD2Ev.exit99.sink.split, %.critedge, %186 %.not76 = icmp ugt i32 %67, %66 - br i1 %.not76, label %212, label %196 - -196: ; preds = %_ZN4llvm5APIntD2Ev.exit99 - %197 = sub nuw i32 %66, %67 - %198 = load i32, ptr %116, align 8 - %199 = icmp ult i32 %198, 65 - br i1 %199, label %_ZN4llvm5APInt15clearUnusedBitsEv.exit.i, label %211 - -_ZN4llvm5APInt15clearUnusedBitsEv.exit.i: ; preds = %196 - %200 = icmp eq i32 %197, %198 - %201 = load i64, ptr %9, align 8 - %202 = zext nneg i32 %197 to i64 - %203 = shl i64 %201, %202 - %storemerge.i = select i1 %200, i64 0, i64 %203 - %204 = add nuw nsw i32 %198, 63 - %205 = and i32 %204, 63 - %206 = xor i32 %205, 63 - %207 = zext nneg i32 %206 to i64 - %208 = lshr i64 -1, %207 - %209 = icmp eq i32 %198, 0 - %spec.store.select.i.i = select i1 %209, i64 0, i64 %208 - %210 = and i64 %storemerge.i, %spec.store.select.i.i - store i64 %210, ptr %9, align 8 + br i1 %.not76, label %213, label %197 + +197: ; preds = %_ZN4llvm5APIntD2Ev.exit99 + %198 = sub nuw i32 %66, %67 + %199 = load i32, ptr %117, align 8 + %200 = icmp ult i32 %199, 65 + br i1 %200, label %_ZN4llvm5APInt15clearUnusedBitsEv.exit.i, label %212 + +_ZN4llvm5APInt15clearUnusedBitsEv.exit.i: ; preds = %197 + %201 = icmp eq i32 %198, %199 + %202 = load i64, ptr %9, align 8 + %203 = zext nneg i32 %198 to i64 + %204 = shl i64 %202, %203 + %storemerge.i = select i1 %201, i64 0, i64 %204 + %205 = add nuw nsw i32 %199, 63 + %206 = and i32 %205, 63 + %207 = xor i32 %206, 63 + %208 = zext nneg i32 %207 to i64 + %209 = lshr i64 -1, %208 + %210 = icmp eq i32 %199, 0 + %spec.store.select.i.i = select i1 %210, i64 0, i64 %209 + %211 = and i64 %storemerge.i, %spec.store.select.i.i + store i64 %211, ptr %9, align 8 br label %_ZN4llvm5APIntlSEj.exit -211: ; preds = %196 - call void @_ZN4llvm5APInt11shlSlowCaseEj(ptr noundef nonnull align 8 dereferenceable(12) %9, i32 noundef %197) #19 +212: ; preds = %197 + call void @_ZN4llvm5APInt11shlSlowCaseEj(ptr noundef nonnull align 8 dereferenceable(12) %9, i32 noundef %198) #19 br label %_ZN4llvm5APIntlSEj.exit -212: ; preds = %_ZN4llvm5APIntD2Ev.exit99 - %213 = sub nuw i32 %67, %66 - br i1 %.not, label %214, label %215 +213: ; preds = %_ZN4llvm5APIntD2Ev.exit99 + %214 = sub nuw i32 %67, %66 + br i1 %.not, label %215, label %216 -214: ; preds = %212 - call void @_ZNK4llvm5APInt4lshrEj(ptr dead_on_unwind nonnull writable sret(%"class.llvm::APInt") align 8 %13, ptr noundef nonnull align 8 dereferenceable(12) %9, i32 noundef %213) - br label %216 +215: ; preds = %213 + call void @_ZNK4llvm5APInt4lshrEj(ptr dead_on_unwind nonnull writable sret(%"class.llvm::APInt") align 8 %13, ptr noundef nonnull align 8 dereferenceable(12) %9, i32 noundef %214) + br label %217 -215: ; preds = %212 - call void @_ZNK4llvm5APInt4ashrEj(ptr dead_on_unwind nonnull writable sret(%"class.llvm::APInt") align 8 %13, ptr noundef nonnull align 8 dereferenceable(12) %9, i32 noundef %213) - br label %216 +216: ; preds = %213 + call void @_ZNK4llvm5APInt4ashrEj(ptr dead_on_unwind nonnull writable sret(%"class.llvm::APInt") align 8 %13, ptr noundef nonnull align 8 dereferenceable(12) %9, i32 noundef %214) + br label %217 -216: ; preds = %215, %214 - %217 = load i32, ptr %116, align 8 - %218 = icmp ult i32 %217, 65 - br i1 %218, label %_ZN4llvm5APIntD2Ev.exit102, label %219 +217: ; preds = %216, %215 + %218 = load i32, ptr %117, align 8 + %219 = icmp ult i32 %218, 65 + br i1 %219, label %_ZN4llvm5APIntD2Ev.exit102, label %220 -219: ; preds = %216 - %220 = load ptr, ptr %9, align 8 - %221 = icmp eq ptr %220, null - br i1 %221, label %_ZN4llvm5APIntD2Ev.exit102, label %222 +220: ; preds = %217 + %221 = load ptr, ptr %9, align 8 + %222 = icmp eq ptr %221, null + br i1 %222, label %_ZN4llvm5APIntD2Ev.exit102, label %223 -222: ; preds = %219 - call void @_ZdaPv(ptr noundef nonnull %220) #20 +223: ; preds = %220 + call void @_ZdaPv(ptr noundef nonnull %221) #20 br label %_ZN4llvm5APIntD2Ev.exit102 -_ZN4llvm5APIntD2Ev.exit102: ; preds = %222, %219, %216 - %223 = load i64, ptr %13, align 8 - store i64 %223, ptr %9, align 8 - %224 = getelementptr inbounds nuw i8, ptr %13, i64 8 - %225 = load i32, ptr %224, align 8 - store i32 %225, ptr %116, align 8 - store i32 0, ptr %224, align 8 +_ZN4llvm5APIntD2Ev.exit102: ; preds = %223, %220, %217 + %224 = load i64, ptr %13, align 8 + store i64 %224, ptr %9, align 8 + %225 = getelementptr inbounds nuw i8, ptr %13, i64 8 + %226 = load i32, ptr %225, align 8 + store i32 %226, ptr %117, align 8 + store i32 0, ptr %225, align 8 br label %_ZN4llvm5APIntlSEj.exit -_ZN4llvm5APIntlSEj.exit: ; preds = %211, %_ZN4llvm5APInt15clearUnusedBitsEv.exit.i, %_ZN4llvm5APIntD2Ev.exit102 - %226 = getelementptr inbounds nuw i8, ptr %15, i64 8 - %227 = load i32, ptr %105, align 8 - store i32 %227, ptr %226, align 8 - %228 = icmp ult i32 %227, 65 - br i1 %228, label %_ZN4llvm5APIntC2ERKS0_.exit.thread, label %_ZN4llvm5APIntC2ERKS0_.exit +_ZN4llvm5APIntlSEj.exit: ; preds = %212, %_ZN4llvm5APInt15clearUnusedBitsEv.exit.i, %_ZN4llvm5APIntD2Ev.exit102 + %227 = getelementptr inbounds nuw i8, ptr %15, i64 8 + %228 = load i32, ptr %105, align 8 + store i32 %228, ptr %227, align 8 + %229 = icmp ult i32 %228, 65 + br i1 %229, label %_ZN4llvm5APIntC2ERKS0_.exit.thread, label %_ZN4llvm5APIntC2ERKS0_.exit _ZN4llvm5APIntC2ERKS0_.exit: ; preds = %_ZN4llvm5APIntlSEj.exit call void @_ZN4llvm5APInt12initSlowCaseERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %15, ptr noundef nonnull align 8 dereferenceable(12) %8) #19 - %.pr = load i32, ptr %226, align 8, !noalias !186 + %.pr = load i32, ptr %227, align 8, !noalias !186 call void @llvm.experimental.noalias.scope.decl(metadata !186) - %229 = icmp ult i32 %.pr, 65 - br i1 %229, label %_ZN4llvm5APIntC2ERKS0_.exit.thread, label %233 + %230 = icmp ult i32 %.pr, 65 + br i1 %230, label %_ZN4llvm5APIntC2ERKS0_.exit.thread, label %234 _ZN4llvm5APIntC2ERKS0_.exit.thread: ; preds = %_ZN4llvm5APIntC2ERKS0_.exit, %_ZN4llvm5APIntlSEj.exit %.sink127 = phi ptr [ %8, %_ZN4llvm5APIntlSEj.exit ], [ %15, %_ZN4llvm5APIntC2ERKS0_.exit ] - %230 = phi i32 [ %227, %_ZN4llvm5APIntlSEj.exit ], [ %.pr, %_ZN4llvm5APIntC2ERKS0_.exit ] + %231 = phi i32 [ %228, %_ZN4llvm5APIntlSEj.exit ], [ %.pr, %_ZN4llvm5APIntC2ERKS0_.exit ] %.pre123 = load i64, ptr %.sink127, align 8 - %231 = load i64, ptr %5, align 8, !noalias !186 - %232 = and i64 %.pre123, %231 - store i64 %232, ptr %15, align 8, !noalias !186 + %232 = load i64, ptr %5, align 8, !noalias !186 + %233 = and i64 %.pre123, %232 + store i64 %233, ptr %15, align 8, !noalias !186 br label %_ZN4llvmanENS_5APIntERKS0_.exit -233: ; preds = %_ZN4llvm5APIntC2ERKS0_.exit +234: ; preds = %_ZN4llvm5APIntC2ERKS0_.exit call void @_ZN4llvm5APInt17andAssignSlowCaseERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %15, ptr noundef nonnull align 8 dereferenceable(12) %5) #19, !noalias !186 - %.pre.i103 = load i32, ptr %226, align 8, !noalias !186 + %.pre.i103 = load i32, ptr %227, align 8, !noalias !186 %.pre1.i = load i64, ptr %15, align 8, !noalias !186 br label %_ZN4llvmanENS_5APIntERKS0_.exit -_ZN4llvmanENS_5APIntERKS0_.exit: ; preds = %_ZN4llvm5APIntC2ERKS0_.exit.thread, %233 - %234 = phi i64 [ %232, %_ZN4llvm5APIntC2ERKS0_.exit.thread ], [ %.pre1.i, %233 ] - %235 = phi i32 [ %230, %_ZN4llvm5APIntC2ERKS0_.exit.thread ], [ %.pre.i103, %233 ] - %236 = getelementptr inbounds nuw i8, ptr %14, i64 8 - store i32 %235, ptr %236, align 8, !alias.scope !186 - store i64 %234, ptr %14, align 8, !alias.scope !186 - store i32 0, ptr %226, align 8, !noalias !186 - %237 = getelementptr inbounds nuw i8, ptr %17, i64 8 - %238 = load i32, ptr %116, align 8 - store i32 %238, ptr %237, align 8 - %239 = icmp ult i32 %238, 65 - br i1 %239, label %_ZN4llvm5APIntC2ERKS0_.exit104.thread, label %_ZN4llvm5APIntC2ERKS0_.exit104 +_ZN4llvmanENS_5APIntERKS0_.exit: ; preds = %_ZN4llvm5APIntC2ERKS0_.exit.thread, %234 + %235 = phi i64 [ %233, %_ZN4llvm5APIntC2ERKS0_.exit.thread ], [ %.pre1.i, %234 ] + %236 = phi i32 [ %231, %_ZN4llvm5APIntC2ERKS0_.exit.thread ], [ %.pre.i103, %234 ] + %237 = getelementptr inbounds nuw i8, ptr %14, i64 8 + store i32 %236, ptr %237, align 8, !alias.scope !186 + store i64 %235, ptr %14, align 8, !alias.scope !186 + store i32 0, ptr %227, align 8, !noalias !186 + %238 = getelementptr inbounds nuw i8, ptr %17, i64 8 + %239 = load i32, ptr %117, align 8 + store i32 %239, ptr %238, align 8 + %240 = icmp ult i32 %239, 65 + br i1 %240, label %_ZN4llvm5APIntC2ERKS0_.exit104.thread, label %_ZN4llvm5APIntC2ERKS0_.exit104 _ZN4llvm5APIntC2ERKS0_.exit104: ; preds = %_ZN4llvmanENS_5APIntERKS0_.exit call void @_ZN4llvm5APInt12initSlowCaseERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %17, ptr noundef nonnull align 8 dereferenceable(12) %9) #19 - %.pr119 = load i32, ptr %237, align 8, !noalias !189 + %.pr119 = load i32, ptr %238, align 8, !noalias !189 call void @llvm.experimental.noalias.scope.decl(metadata !189) - %240 = icmp ult i32 %.pr119, 65 - br i1 %240, label %_ZN4llvm5APIntC2ERKS0_.exit104.thread, label %244 + %241 = icmp ult i32 %.pr119, 65 + br i1 %241, label %_ZN4llvm5APIntC2ERKS0_.exit104.thread, label %245 _ZN4llvm5APIntC2ERKS0_.exit104.thread: ; preds = %_ZN4llvm5APIntC2ERKS0_.exit104, %_ZN4llvmanENS_5APIntERKS0_.exit %.sink128 = phi ptr [ %9, %_ZN4llvmanENS_5APIntERKS0_.exit ], [ %17, %_ZN4llvm5APIntC2ERKS0_.exit104 ] - %241 = phi i32 [ %238, %_ZN4llvmanENS_5APIntERKS0_.exit ], [ %.pr119, %_ZN4llvm5APIntC2ERKS0_.exit104 ] + %242 = phi i32 [ %239, %_ZN4llvmanENS_5APIntERKS0_.exit ], [ %.pr119, %_ZN4llvm5APIntC2ERKS0_.exit104 ] %.pre124 = load i64, ptr %.sink128, align 8 - %242 = load i64, ptr %5, align 8, !noalias !189 - %243 = and i64 %.pre124, %242 - store i64 %243, ptr %17, align 8, !noalias !189 + %243 = load i64, ptr %5, align 8, !noalias !189 + %244 = and i64 %.pre124, %243 + store i64 %244, ptr %17, align 8, !noalias !189 br label %_ZN4llvmanENS_5APIntERKS0_.exit107 -244: ; preds = %_ZN4llvm5APIntC2ERKS0_.exit104 +245: ; preds = %_ZN4llvm5APIntC2ERKS0_.exit104 call void @_ZN4llvm5APInt17andAssignSlowCaseERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %17, ptr noundef nonnull align 8 dereferenceable(12) %5) #19, !noalias !189 - %.pre.i105 = load i32, ptr %237, align 8, !noalias !189 + %.pre.i105 = load i32, ptr %238, align 8, !noalias !189 %.pre1.i106 = load i64, ptr %17, align 8, !noalias !189 br label %_ZN4llvmanENS_5APIntERKS0_.exit107 -_ZN4llvmanENS_5APIntERKS0_.exit107: ; preds = %_ZN4llvm5APIntC2ERKS0_.exit104.thread, %244 - %245 = phi i64 [ %243, %_ZN4llvm5APIntC2ERKS0_.exit104.thread ], [ %.pre1.i106, %244 ] - %246 = phi i32 [ %241, %_ZN4llvm5APIntC2ERKS0_.exit104.thread ], [ %.pre.i105, %244 ] - %247 = getelementptr inbounds nuw i8, ptr %16, i64 8 - store i32 %246, ptr %247, align 8, !alias.scope !189 - store i64 %245, ptr %16, align 8, !alias.scope !189 - store i32 0, ptr %237, align 8, !noalias !189 - %248 = load i32, ptr %236, align 8 - %249 = icmp ult i32 %248, 65 - %250 = inttoptr i64 %245 to ptr - br i1 %249, label %251, label %254 - -251: ; preds = %_ZN4llvmanENS_5APIntERKS0_.exit107 - %252 = load i64, ptr %14, align 8 - %253 = icmp eq i64 %252, %245 +_ZN4llvmanENS_5APIntERKS0_.exit107: ; preds = %_ZN4llvm5APIntC2ERKS0_.exit104.thread, %245 + %246 = phi i64 [ %244, %_ZN4llvm5APIntC2ERKS0_.exit104.thread ], [ %.pre1.i106, %245 ] + %247 = phi i32 [ %242, %_ZN4llvm5APIntC2ERKS0_.exit104.thread ], [ %.pre.i105, %245 ] + %248 = getelementptr inbounds nuw i8, ptr %16, i64 8 + store i32 %247, ptr %248, align 8, !alias.scope !189 + store i64 %246, ptr %16, align 8, !alias.scope !189 + store i32 0, ptr %238, align 8, !noalias !189 + %249 = load i32, ptr %237, align 8 + %250 = icmp ult i32 %249, 65 + %251 = inttoptr i64 %246 to ptr + br i1 %250, label %252, label %255 + +252: ; preds = %_ZN4llvmanENS_5APIntERKS0_.exit107 + %253 = load i64, ptr %14, align 8 + %254 = icmp eq i64 %253, %246 br label %_ZNK4llvm5APInteqERKS0_.exit -254: ; preds = %_ZN4llvmanENS_5APIntERKS0_.exit107 - %255 = call noundef zeroext i1 @_ZNK4llvm5APInt13equalSlowCaseERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %14, ptr noundef nonnull align 8 dereferenceable(12) %16) #21 +255: ; preds = %_ZN4llvmanENS_5APIntERKS0_.exit107 + %256 = call noundef zeroext i1 @_ZNK4llvm5APInt13equalSlowCaseERKS0_(ptr noundef nonnull align 8 dereferenceable(12) %14, ptr noundef nonnull align 8 dereferenceable(12) %16) #21 br label %_ZNK4llvm5APInteqERKS0_.exit -_ZNK4llvm5APInteqERKS0_.exit: ; preds = %251, %254 - %.0.i108 = phi i1 [ %253, %251 ], [ %255, %254 ] - %256 = icmp ult i32 %246, 65 - %257 = icmp eq i64 %245, 0 - %or.cond = select i1 %256, i1 true, i1 %257 +_ZNK4llvm5APInteqERKS0_.exit: ; preds = %252, %255 + %.0.i108 = phi i1 [ %254, %252 ], [ %256, %255 ] + %257 = icmp ult i32 %247, 65 + %258 = icmp eq i64 %246, 0 + %or.cond = select i1 %257, i1 true, i1 %258 br i1 %or.cond, label %_ZN4llvm5APIntD2Ev.exit110, label %_ZN4llvm5APIntD2Ev.exit109 _ZN4llvm5APIntD2Ev.exit109: ; preds = %_ZNK4llvm5APInteqERKS0_.exit - call void @_ZdaPv(ptr noundef nonnull %250) #20 - %.pre125 = load i32, ptr %237, align 8 - %258 = icmp ugt i32 %.pre125, 64 - br i1 %258, label %259, label %_ZN4llvm5APIntD2Ev.exit110 - -259: ; preds = %_ZN4llvm5APIntD2Ev.exit109 - %260 = load ptr, ptr %17, align 8 - %261 = icmp eq ptr %260, null - br i1 %261, label %_ZN4llvm5APIntD2Ev.exit110, label %262 - -262: ; preds = %259 - call void @_ZdaPv(ptr noundef nonnull %260) #20 + call void @_ZdaPv(ptr noundef nonnull %251) #20 + %.pre125 = load i32, ptr %238, align 8 + %259 = icmp ugt i32 %.pre125, 64 + br i1 %259, label %260, label %_ZN4llvm5APIntD2Ev.exit110 + +260: ; preds = %_ZN4llvm5APIntD2Ev.exit109 + %261 = load ptr, ptr %17, align 8 + %262 = icmp eq ptr %261, null + br i1 %262, label %_ZN4llvm5APIntD2Ev.exit110, label %263 + +263: ; preds = %260 + call void @_ZdaPv(ptr noundef nonnull %261) #20 br label %_ZN4llvm5APIntD2Ev.exit110 -_ZN4llvm5APIntD2Ev.exit110: ; preds = %_ZNK4llvm5APInteqERKS0_.exit, %_ZN4llvm5APIntD2Ev.exit109, %259, %262 - %263 = load i32, ptr %236, align 8 - %264 = icmp ugt i32 %263, 64 - br i1 %264, label %265, label %_ZN4llvm5APIntD2Ev.exit111 +_ZN4llvm5APIntD2Ev.exit110: ; preds = %_ZNK4llvm5APInteqERKS0_.exit, %_ZN4llvm5APIntD2Ev.exit109, %260, %263 + %264 = load i32, ptr %237, align 8 + %265 = icmp ugt i32 %264, 64 + br i1 %265, label %266, label %_ZN4llvm5APIntD2Ev.exit111 -265: ; preds = %_ZN4llvm5APIntD2Ev.exit110 - %266 = load ptr, ptr %14, align 8 - %267 = icmp eq ptr %266, null - br i1 %267, label %_ZN4llvm5APIntD2Ev.exit111, label %268 +266: ; preds = %_ZN4llvm5APIntD2Ev.exit110 + %267 = load ptr, ptr %14, align 8 + %268 = icmp eq ptr %267, null + br i1 %268, label %_ZN4llvm5APIntD2Ev.exit111, label %269 -268: ; preds = %265 - call void @_ZdaPv(ptr noundef nonnull %266) #20 +269: ; preds = %266 + call void @_ZdaPv(ptr noundef nonnull %267) #20 br label %_ZN4llvm5APIntD2Ev.exit111 -_ZN4llvm5APIntD2Ev.exit111: ; preds = %_ZN4llvm5APIntD2Ev.exit110, %265, %268 - %269 = load i32, ptr %226, align 8 - %270 = icmp ugt i32 %269, 64 - br i1 %270, label %271, label %_ZN4llvm5APIntD2Ev.exit112 +_ZN4llvm5APIntD2Ev.exit111: ; preds = %_ZN4llvm5APIntD2Ev.exit110, %266, %269 + %270 = load i32, ptr %227, align 8 + %271 = icmp ugt i32 %270, 64 + br i1 %271, label %272, label %_ZN4llvm5APIntD2Ev.exit112 -271: ; preds = %_ZN4llvm5APIntD2Ev.exit111 - %272 = load ptr, ptr %15, align 8 - %273 = icmp eq ptr %272, null - br i1 %273, label %_ZN4llvm5APIntD2Ev.exit112, label %274 +272: ; preds = %_ZN4llvm5APIntD2Ev.exit111 + %273 = load ptr, ptr %15, align 8 + %274 = icmp eq ptr %273, null + br i1 %274, label %_ZN4llvm5APIntD2Ev.exit112, label %275 -274: ; preds = %271 - call void @_ZdaPv(ptr noundef nonnull %272) #20 +275: ; preds = %272 + call void @_ZdaPv(ptr noundef nonnull %273) #20 br label %_ZN4llvm5APIntD2Ev.exit112 -_ZN4llvm5APIntD2Ev.exit112: ; preds = %_ZN4llvm5APIntD2Ev.exit111, %271, %274 - br i1 %.0.i108, label %275, label %_ZNK4llvm5Value9hasOneUseEv.exit.thread +_ZN4llvm5APIntD2Ev.exit112: ; preds = %_ZN4llvm5APIntD2Ev.exit111, %272, %275 + br i1 %.0.i108, label %276, label %_ZNK4llvm5Value9hasOneUseEv.exit.thread -275: ; preds = %_ZN4llvm5APIntD2Ev.exit112 - %276 = icmp eq i32 %67, %66 - br i1 %276, label %_ZNK4llvm5Value9hasOneUseEv.exit.thread, label %277 +276: ; preds = %_ZN4llvm5APIntD2Ev.exit112 + %277 = icmp eq i32 %67, %66 + br i1 %277, label %_ZNK4llvm5Value9hasOneUseEv.exit.thread, label %278 -277: ; preds = %275 - %278 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %279 = load ptr, ptr %278, align 8 - %.not.i.i113 = icmp eq ptr %279, null +278: ; preds = %276 + %279 = getelementptr inbounds nuw i8, ptr %1, i64 16 + %280 = load ptr, ptr %279, align 8 + %.not.i.i113 = icmp eq ptr %280, null br i1 %.not.i.i113, label %_ZNK4llvm5Value9hasOneUseEv.exit.thread, label %_ZNK4llvm5Value9hasOneUseEv.exit -_ZNK4llvm5Value9hasOneUseEv.exit: ; preds = %277 - %280 = getelementptr inbounds nuw i8, ptr %279, i64 8 - %281 = load ptr, ptr %280, align 8 - %282 = icmp eq ptr %281, null - br i1 %282, label %283, label %_ZNK4llvm5Value9hasOneUseEv.exit.thread - -283: ; preds = %_ZNK4llvm5Value9hasOneUseEv.exit - %284 = icmp ult i32 %67, %66 - %285 = load ptr, ptr %52, align 8 - br i1 %284, label %286, label %294 - -286: ; preds = %283 - %287 = sub nsw i64 %.0.i.i.i, %.0.i.i.i81 - %288 = and i64 %287, 4294967295 - %289 = call noundef ptr @_ZN4llvm11ConstantInt3getEPNS_4TypeEmb(ptr noundef %285, i64 noundef %288, i1 noundef zeroext false) #19 - %290 = getelementptr inbounds nuw i8, ptr %18, i64 32 - store i16 257, ptr %290, align 8 - %291 = call noundef ptr @_ZN4llvm14BinaryOperator6CreateENS_11Instruction9BinaryOpsEPNS_5ValueES4_RKNS_5TwineENS_14InsertPositionE(i32 noundef 25, ptr noundef nonnull %51, ptr noundef %289, ptr noundef nonnull align 8 dereferenceable(34) %18, ptr null, i64 0) #19 - %292 = call noundef zeroext i1 @_ZNK4llvm11Instruction15hasNoSignedWrapEv(ptr noundef nonnull align 8 dereferenceable(72) %3) #21 - call void @_ZN4llvm11Instruction18setHasNoSignedWrapEb(ptr noundef nonnull align 8 dereferenceable(72) %291, i1 noundef zeroext %292) #19 - %293 = call noundef zeroext i1 @_ZNK4llvm11Instruction17hasNoUnsignedWrapEv(ptr noundef nonnull align 8 dereferenceable(72) %3) #21 - call void @_ZN4llvm11Instruction20setHasNoUnsignedWrapEb(ptr noundef nonnull align 8 dereferenceable(72) %291, i1 noundef zeroext %293) #19 - br label %308 - -294: ; preds = %283 - %295 = sub nsw i64 %.0.i.i.i81, %.0.i.i.i - %296 = and i64 %295, 4294967295 - %297 = call noundef ptr @_ZN4llvm11ConstantInt3getEPNS_4TypeEmb(ptr noundef %285, i64 noundef %296, i1 noundef zeroext false) #19 - br i1 %.not, label %298, label %301 - -298: ; preds = %294 - %299 = getelementptr inbounds nuw i8, ptr %19, i64 32 - store i16 257, ptr %299, align 8 - %300 = call noundef ptr @_ZN4llvm14BinaryOperator6CreateENS_11Instruction9BinaryOpsEPNS_5ValueES4_RKNS_5TwineENS_14InsertPositionE(i32 noundef 26, ptr noundef nonnull %51, ptr noundef %297, ptr noundef nonnull align 8 dereferenceable(34) %19, ptr null, i64 0) #19 - br label %304 - -301: ; preds = %294 - %302 = getelementptr inbounds nuw i8, ptr %20, i64 32 - store i16 257, ptr %302, align 8 - %303 = call noundef ptr @_ZN4llvm14BinaryOperator6CreateENS_11Instruction9BinaryOpsEPNS_5ValueES4_RKNS_5TwineENS_14InsertPositionE(i32 noundef 27, ptr noundef nonnull %51, ptr noundef %297, ptr noundef nonnull align 8 dereferenceable(34) %20, ptr null, i64 0) #19 - br label %304 - -304: ; preds = %301, %298 - %305 = phi ptr [ %300, %298 ], [ %303, %301 ] - %306 = call noundef zeroext i1 @_ZNK4llvm11Instruction7isExactEv(ptr noundef nonnull align 8 dereferenceable(72) %1) #21 - br i1 %306, label %307, label %308 - -307: ; preds = %304 - call void @_ZN4llvm11Instruction10setIsExactEb(ptr noundef nonnull align 8 dereferenceable(72) %305, i1 noundef zeroext true) #19 - br label %308 - -308: ; preds = %304, %307, %286 - %.070 = phi ptr [ %291, %286 ], [ %305, %307 ], [ %305, %304 ] - %309 = getelementptr inbounds i8, ptr %3, i64 24 - %310 = call noundef ptr @_ZN4llvm12InstCombiner17InsertNewInstWithEPNS_11InstructionENS_21ilist_iterator_w_bitsINS_12ilist_detail12node_optionsIS1_Lb0ELb0EvLb1ENS_10BasicBlockEEELb0ELb0EEE(ptr noundef nonnull align 8 dereferenceable(1081) %0, ptr noundef %.070, ptr nonnull %309, i64 0) +_ZNK4llvm5Value9hasOneUseEv.exit: ; preds = %278 + %281 = getelementptr inbounds nuw i8, ptr %280, i64 8 + %282 = load ptr, ptr %281, align 8 + %283 = icmp eq ptr %282, null + br i1 %283, label %284, label %_ZNK4llvm5Value9hasOneUseEv.exit.thread + +284: ; preds = %_ZNK4llvm5Value9hasOneUseEv.exit + %285 = icmp ult i32 %67, %66 + %286 = load ptr, ptr %52, align 8 + br i1 %285, label %287, label %295 + +287: ; preds = %284 + %288 = sub nsw i64 %.0.i.i.i, %.0.i.i.i81 + %289 = and i64 %288, 4294967295 + %290 = call noundef ptr @_ZN4llvm11ConstantInt3getEPNS_4TypeEmb(ptr noundef %286, i64 noundef %289, i1 noundef zeroext false) #19 + %291 = getelementptr inbounds nuw i8, ptr %18, i64 32 + store i16 257, ptr %291, align 8 + %292 = call noundef ptr @_ZN4llvm14BinaryOperator6CreateENS_11Instruction9BinaryOpsEPNS_5ValueES4_RKNS_5TwineENS_14InsertPositionE(i32 noundef 25, ptr noundef nonnull %51, ptr noundef %290, ptr noundef nonnull align 8 dereferenceable(34) %18, ptr null, i64 0) #19 + %293 = call noundef zeroext i1 @_ZNK4llvm11Instruction15hasNoSignedWrapEv(ptr noundef nonnull align 8 dereferenceable(72) %3) #21 + call void @_ZN4llvm11Instruction18setHasNoSignedWrapEb(ptr noundef nonnull align 8 dereferenceable(72) %292, i1 noundef zeroext %293) #19 + %294 = call noundef zeroext i1 @_ZNK4llvm11Instruction17hasNoUnsignedWrapEv(ptr noundef nonnull align 8 dereferenceable(72) %3) #21 + call void @_ZN4llvm11Instruction20setHasNoUnsignedWrapEb(ptr noundef nonnull align 8 dereferenceable(72) %292, i1 noundef zeroext %294) #19 + br label %309 + +295: ; preds = %284 + %296 = sub nsw i64 %.0.i.i.i81, %.0.i.i.i + %297 = and i64 %296, 4294967295 + %298 = call noundef ptr @_ZN4llvm11ConstantInt3getEPNS_4TypeEmb(ptr noundef %286, i64 noundef %297, i1 noundef zeroext false) #19 + br i1 %.not, label %299, label %302 + +299: ; preds = %295 + %300 = getelementptr inbounds nuw i8, ptr %19, i64 32 + store i16 257, ptr %300, align 8 + %301 = call noundef ptr @_ZN4llvm14BinaryOperator6CreateENS_11Instruction9BinaryOpsEPNS_5ValueES4_RKNS_5TwineENS_14InsertPositionE(i32 noundef 26, ptr noundef nonnull %51, ptr noundef %298, ptr noundef nonnull align 8 dereferenceable(34) %19, ptr null, i64 0) #19 + br label %305 + +302: ; preds = %295 + %303 = getelementptr inbounds nuw i8, ptr %20, i64 32 + store i16 257, ptr %303, align 8 + %304 = call noundef ptr @_ZN4llvm14BinaryOperator6CreateENS_11Instruction9BinaryOpsEPNS_5ValueES4_RKNS_5TwineENS_14InsertPositionE(i32 noundef 27, ptr noundef nonnull %51, ptr noundef %298, ptr noundef nonnull align 8 dereferenceable(34) %20, ptr null, i64 0) #19 + br label %305 + +305: ; preds = %302, %299 + %306 = phi ptr [ %301, %299 ], [ %304, %302 ] + %307 = call noundef zeroext i1 @_ZNK4llvm11Instruction7isExactEv(ptr noundef nonnull align 8 dereferenceable(72) %1) #21 + br i1 %307, label %308, label %309 + +308: ; preds = %305 + call void @_ZN4llvm11Instruction10setIsExactEb(ptr noundef nonnull align 8 dereferenceable(72) %306, i1 noundef zeroext true) #19 + br label %309 + +309: ; preds = %305, %308, %287 + %.070 = phi ptr [ %292, %287 ], [ %306, %308 ], [ %306, %305 ] + %310 = getelementptr inbounds i8, ptr %3, i64 24 + %311 = call noundef ptr @_ZN4llvm12InstCombiner17InsertNewInstWithEPNS_11InstructionENS_21ilist_iterator_w_bitsINS_12ilist_detail12node_optionsIS1_Lb0ELb0EvLb1ENS_10BasicBlockEEELb0ELb0EEE(ptr noundef nonnull align 8 dereferenceable(1081) %0, ptr noundef %.070, ptr nonnull %310, i64 0) br label %_ZNK4llvm5Value9hasOneUseEv.exit.thread -_ZNK4llvm5Value9hasOneUseEv.exit.thread: ; preds = %277, %_ZN4llvm5APIntD2Ev.exit112, %_ZNK4llvm5Value9hasOneUseEv.exit, %275, %308 - %.1 = phi ptr [ %310, %308 ], [ %51, %275 ], [ null, %_ZNK4llvm5Value9hasOneUseEv.exit ], [ null, %_ZN4llvm5APIntD2Ev.exit112 ], [ null, %277 ] - %311 = load i32, ptr %116, align 8 - %312 = icmp ugt i32 %311, 64 - br i1 %312, label %313, label %_ZN4llvm5APIntD2Ev.exit117 +_ZNK4llvm5Value9hasOneUseEv.exit.thread: ; preds = %278, %_ZN4llvm5APIntD2Ev.exit112, %_ZNK4llvm5Value9hasOneUseEv.exit, %276, %309 + %.1 = phi ptr [ %311, %309 ], [ %51, %276 ], [ null, %_ZNK4llvm5Value9hasOneUseEv.exit ], [ null, %_ZN4llvm5APIntD2Ev.exit112 ], [ null, %278 ] + %312 = load i32, ptr %117, align 8 + %313 = icmp ugt i32 %312, 64 + br i1 %313, label %314, label %_ZN4llvm5APIntD2Ev.exit117 -313: ; preds = %_ZNK4llvm5Value9hasOneUseEv.exit.thread - %314 = load ptr, ptr %9, align 8 - %315 = icmp eq ptr %314, null - br i1 %315, label %_ZN4llvm5APIntD2Ev.exit117, label %316 +314: ; preds = %_ZNK4llvm5Value9hasOneUseEv.exit.thread + %315 = load ptr, ptr %9, align 8 + %316 = icmp eq ptr %315, null + br i1 %316, label %_ZN4llvm5APIntD2Ev.exit117, label %317 -316: ; preds = %313 - call void @_ZdaPv(ptr noundef nonnull %314) #20 +317: ; preds = %314 + call void @_ZdaPv(ptr noundef nonnull %315) #20 br label %_ZN4llvm5APIntD2Ev.exit117 -_ZN4llvm5APIntD2Ev.exit117: ; preds = %_ZNK4llvm5Value9hasOneUseEv.exit.thread, %313, %316 - %317 = load i32, ptr %105, align 8 - %318 = icmp ugt i32 %317, 64 - br i1 %318, label %319, label %_ZN4llvm5APIntD2Ev.exit118 +_ZN4llvm5APIntD2Ev.exit117: ; preds = %_ZNK4llvm5Value9hasOneUseEv.exit.thread, %314, %317 + %318 = load i32, ptr %105, align 8 + %319 = icmp ugt i32 %318, 64 + br i1 %319, label %320, label %_ZN4llvm5APIntD2Ev.exit118 -319: ; preds = %_ZN4llvm5APIntD2Ev.exit117 - %320 = load ptr, ptr %8, align 8 - %321 = icmp eq ptr %320, null - br i1 %321, label %_ZN4llvm5APIntD2Ev.exit118, label %322 +320: ; preds = %_ZN4llvm5APIntD2Ev.exit117 + %321 = load ptr, ptr %8, align 8 + %322 = icmp eq ptr %321, null + br i1 %322, label %_ZN4llvm5APIntD2Ev.exit118, label %323 -322: ; preds = %319 - call void @_ZdaPv(ptr noundef nonnull %320) #20 +323: ; preds = %320 + call void @_ZdaPv(ptr noundef nonnull %321) #20 br label %_ZN4llvm5APIntD2Ev.exit118 -_ZN4llvm5APIntD2Ev.exit118: ; preds = %_ZNK4llvm5APInt13getActiveBitsEv.exit.i.i79, %_ZNK4llvm5APInt13getActiveBitsEv.exit.i.i, %322, %319, %_ZN4llvm5APIntD2Ev.exit117, %33, %24, %_ZNK4llvm5APInt3ugeEm.exit, %_ZNK4llvm5APInt3ugeEm.exit82, %_ZNK4llvm5APIntntEv.exit, %_ZNK4llvm5APIntntEv.exit78 - %.0 = phi ptr [ null, %_ZNK4llvm5APIntntEv.exit78 ], [ null, %_ZNK4llvm5APIntntEv.exit ], [ null, %_ZNK4llvm5APInt3ugeEm.exit82 ], [ null, %_ZNK4llvm5APInt3ugeEm.exit ], [ null, %24 ], [ null, %33 ], [ %.1, %_ZN4llvm5APIntD2Ev.exit117 ], [ %.1, %319 ], [ %.1, %322 ], [ null, %_ZNK4llvm5APInt13getActiveBitsEv.exit.i.i ], [ null, %_ZNK4llvm5APInt13getActiveBitsEv.exit.i.i79 ] +_ZN4llvm5APIntD2Ev.exit118: ; preds = %_ZNK4llvm5APInt13getActiveBitsEv.exit.i.i79, %_ZNK4llvm5APInt13getActiveBitsEv.exit.i.i, %323, %320, %_ZN4llvm5APIntD2Ev.exit117, %33, %24, %_ZNK4llvm5APInt3ugeEm.exit, %_ZNK4llvm5APInt3ugeEm.exit82, %_ZNK4llvm5APIntntEv.exit, %_ZNK4llvm5APIntntEv.exit78 + %.0 = phi ptr [ null, %_ZNK4llvm5APIntntEv.exit78 ], [ null, %_ZNK4llvm5APIntntEv.exit ], [ null, %_ZNK4llvm5APInt3ugeEm.exit82 ], [ null, %_ZNK4llvm5APInt3ugeEm.exit ], [ null, %24 ], [ null, %33 ], [ %.1, %_ZN4llvm5APIntD2Ev.exit117 ], [ %.1, %320 ], [ %.1, %323 ], [ null, %_ZNK4llvm5APInt13getActiveBitsEv.exit.i.i ], [ null, %_ZNK4llvm5APInt13getActiveBitsEv.exit.i.i79 ] ret ptr %.0 } diff --git a/bench/llvm/optimized/VirtualFileSystem.cpp.ll b/bench/llvm/optimized/VirtualFileSystem.cpp.ll index b533747c022..f9d5d7abc82 100644 --- a/bench/llvm/optimized/VirtualFileSystem.cpp.ll +++ b/bench/llvm/optimized/VirtualFileSystem.cpp.ll @@ -17919,7 +17919,7 @@ define linkonce_odr hidden void @_ZN4llvm3vfs27RedirectingFileSystemParser10pars %63 = load ptr, ptr %1, align 8 call void @_ZN4llvm4yaml6Stream10printErrorEPNS0_4NodeERKNS_5TwineENS_9SourceMgr8DiagKindE(ptr noundef nonnull align 8 dereferenceable(16) %63, ptr noundef nonnull %2, ptr noundef nonnull align 8 dereferenceable(34) %14, i32 noundef 0) #27 store ptr null, ptr %0, align 8 - br label %510 + br label %511 64: ; preds = %5 store ptr @.str.41, ptr %15, align 16 @@ -18776,7 +18776,7 @@ select.unfold348: ; preds = %400, %367, %407, %3 br i1 %415, label %.lr.ph392, label %.critedge .lr.ph392: ; preds = %select.unfold348, %418 - %.sroa.6.0391 = phi i64 [ %419, %418 ], [ %412, %select.unfold348 ] + %.sroa.6.0391 = phi i64 [ %420, %418 ], [ %412, %select.unfold348 ] %gep = getelementptr i8, ptr %invariant.gep, i64 %.sroa.6.0391 %416 = load i8, ptr %gep, align 1 %417 = call noundef zeroext i1 @_ZN4llvm3sys4path12is_separatorEcNS1_5StyleE(i8 noundef signext %416, i32 noundef %.0124) #27 @@ -18784,159 +18784,160 @@ select.unfold348: ; preds = %400, %367, %407, %3 418: ; preds = %.lr.ph392 %419 = add i64 %.sroa.6.0391, -1 - %420 = icmp ugt i64 %419, %414 - br i1 %420, label %.lr.ph392, label %.critedge, !llvm.loop !361 + %420 = call i64 @llvm.umin.i64(i64 %419, i64 %.sroa.6.0391) + %421 = icmp ugt i64 %420, %414 + br i1 %421, label %.lr.ph392, label %.critedge, !llvm.loop !361 .critedge: ; preds = %.lr.ph392, %418, %select.unfold348 - %.sroa.6.0.lcssa = phi i64 [ %412, %select.unfold348 ], [ %414, %418 ], [ %.sroa.6.0391, %.lr.ph392 ] - %421 = call { ptr, i64 } @_ZN4llvm3sys4path8filenameENS_9StringRefENS1_5StyleE(ptr %411, i64 %.sroa.6.0.lcssa, i32 noundef %.0124) #27 - %422 = extractvalue { ptr, i64 } %421, 0 - store ptr %422, ptr %45, align 8 - %423 = getelementptr inbounds nuw i8, ptr %45, i64 8 - %424 = extractvalue { ptr, i64 } %421, 1 - store i64 %424, ptr %423, align 8 + %.sroa.6.0.lcssa = phi i64 [ %412, %select.unfold348 ], [ %420, %418 ], [ %.sroa.6.0391, %.lr.ph392 ] + %422 = call { ptr, i64 } @_ZN4llvm3sys4path8filenameENS_9StringRefENS1_5StyleE(ptr %411, i64 %.sroa.6.0.lcssa, i32 noundef %.0124) #27 + %423 = extractvalue { ptr, i64 } %422, 0 + store ptr %423, ptr %45, align 8 + %424 = getelementptr inbounds nuw i8, ptr %45, i64 8 + %425 = extractvalue { ptr, i64 } %422, 1 + store i64 %425, ptr %424, align 8 store ptr null, ptr %0, align 8 - switch i32 %.1120, label %441 [ + switch i32 %.1120, label %442 [ i32 2, label %_ZNSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS3_EEaSINS2_9FileEntryES4_IS8_EEENSt9enable_ifIXsr6__and_ISt6__and_IJSt14is_convertibleINS_IT_T0_E7pointerEPS3_ESt6__not_ISt8is_arrayISD_EEEESt13is_assignableIRS5_OSE_EEE5valueERS6_E4typeEOSF_.exit i32 1, label %_ZNSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS3_EEaSINS2_19DirectoryRemapEntryES4_IS8_EEENSt9enable_ifIXsr6__and_ISt6__and_IJSt14is_convertibleINS_IT_T0_E7pointerEPS3_ESt6__not_ISt8is_arrayISD_EEEESt13is_assignableIRS5_OSE_EEE5valueERS6_E4typeEOSF_.exit - i32 0, label %427 + i32 0, label %428 ] _ZNSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS3_EEaSINS2_9FileEntryES4_IS8_EEENSt9enable_ifIXsr6__and_ISt6__and_IJSt14is_convertibleINS_IT_T0_E7pointerEPS3_ESt6__not_ISt8is_arrayISD_EEEESt13is_assignableIRS5_OSE_EEE5valueERS6_E4typeEOSF_.exit: ; preds = %.critedge call void @_ZSt11make_uniqueIN4llvm3vfs21RedirectingFileSystem9FileEntryEJRNS0_9StringRefENS0_11SmallStringILj256EEERNS2_8NameKindEEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.240") align 8 %46, ptr noundef nonnull align 8 dereferenceable(16) %45, ptr noundef nonnull align 8 dereferenceable(280) %20, ptr noundef nonnull align 4 dereferenceable(4) %22) - %425 = load ptr, ptr %46, align 8 - store ptr %425, ptr %0, align 8 + %426 = load ptr, ptr %46, align 8 + store ptr %426, ptr %0, align 8 store ptr null, ptr %46, align 8 - br label %441 + br label %442 _ZNSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS3_EEaSINS2_19DirectoryRemapEntryES4_IS8_EEENSt9enable_ifIXsr6__and_ISt6__and_IJSt14is_convertibleINS_IT_T0_E7pointerEPS3_ESt6__not_ISt8is_arrayISD_EEEESt13is_assignableIRS5_OSE_EEE5valueERS6_E4typeEOSF_.exit: ; preds = %.critedge call void @_ZSt11make_uniqueIN4llvm3vfs21RedirectingFileSystem19DirectoryRemapEntryEJRNS0_9StringRefENS0_11SmallStringILj256EEERNS2_8NameKindEEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.375") align 8 %47, ptr noundef nonnull align 8 dereferenceable(16) %45, ptr noundef nonnull align 8 dereferenceable(280) %20, ptr noundef nonnull align 4 dereferenceable(4) %22) - %426 = load ptr, ptr %47, align 8 - store ptr %426, ptr %0, align 8 + %427 = load ptr, ptr %47, align 8 + store ptr %427, ptr %0, align 8 store ptr null, ptr %47, align 8 - br label %441 - -427: ; preds = %.critedge - %428 = getelementptr inbounds nuw i8, ptr %50, i64 32 - store i16 257, ptr %428, align 8 - %429 = atomicrmw add ptr @_ZZN4llvm3vfs22getNextVirtualUniqueIDEvE3UID, i32 1 seq_cst, align 4 - %430 = add i32 %429, 1 - %431 = zext i32 %430 to i64 - %432 = call i64 @_ZNSt6chrono3_V212system_clock3nowEv() #27 - call void @_ZN4llvm3vfs6StatusC1ERKNS_5TwineENS_3sys2fs8UniqueIDENSt6chrono10time_pointINS8_3_V212system_clockENS8_8durationIlSt5ratioILl1ELl1000000000EEEEEEjjmNS6_9file_typeENS6_5permsE(ptr noundef nonnull align 8 dereferenceable(81) %49, ptr noundef nonnull align 8 dereferenceable(34) %50, i64 -1, i64 %431, i64 %432, i32 noundef 0, i32 noundef 0, i64 noundef 0, i32 noundef 3, i32 noundef 511) #27 + br label %442 + +428: ; preds = %.critedge + %429 = getelementptr inbounds nuw i8, ptr %50, i64 32 + store i16 257, ptr %429, align 8 + %430 = atomicrmw add ptr @_ZZN4llvm3vfs22getNextVirtualUniqueIDEvE3UID, i32 1 seq_cst, align 4 + %431 = add i32 %430, 1 + %432 = zext i32 %431 to i64 + %433 = call i64 @_ZNSt6chrono3_V212system_clock3nowEv() #27 + call void @_ZN4llvm3vfs6StatusC1ERKNS_5TwineENS_3sys2fs8UniqueIDENSt6chrono10time_pointINS8_3_V212system_clockENS8_8durationIlSt5ratioILl1ELl1000000000EEEEEEjjmNS6_9file_typeENS6_5permsE(ptr noundef nonnull align 8 dereferenceable(81) %49, ptr noundef nonnull align 8 dereferenceable(34) %50, i64 -1, i64 %432, i64 %433, i32 noundef 0, i32 noundef 0, i64 noundef 0, i32 noundef 3, i32 noundef 511) #27 call void @_ZSt11make_uniqueIN4llvm3vfs21RedirectingFileSystem14DirectoryEntryEJRNS0_9StringRefESt6vectorISt10unique_ptrINS2_5EntryESt14default_deleteIS8_EESaISB_EENS1_6StatusEEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.383") align 8 %48, ptr noundef nonnull align 8 dereferenceable(16) %45, ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef nonnull align 8 dereferenceable(81) %49) - %433 = load ptr, ptr %48, align 8 + %434 = load ptr, ptr %48, align 8 store ptr null, ptr %48, align 8 - %434 = load ptr, ptr %0, align 8 - store ptr %433, ptr %0, align 8 - %.not.i.i.i205 = icmp eq ptr %434, null + %435 = load ptr, ptr %0, align 8 + store ptr %434, ptr %0, align 8 + %.not.i.i.i205 = icmp eq ptr %435, null br i1 %.not.i.i.i205, label %_ZNSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem14DirectoryEntryESt14default_deleteIS3_EED2Ev.exit, label %_ZNSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS3_EEaSINS2_14DirectoryEntryES4_IS8_EEENSt9enable_ifIXsr6__and_ISt6__and_IJSt14is_convertibleINS_IT_T0_E7pointerEPS3_ESt6__not_ISt8is_arrayISD_EEEESt13is_assignableIRS5_OSE_EEE5valueERS6_E4typeEOSF_.exit -_ZNSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS3_EEaSINS2_14DirectoryEntryES4_IS8_EEENSt9enable_ifIXsr6__and_ISt6__and_IJSt14is_convertibleINS_IT_T0_E7pointerEPS3_ESt6__not_ISt8is_arrayISD_EEEESt13is_assignableIRS5_OSE_EEE5valueERS6_E4typeEOSF_.exit: ; preds = %427 - %435 = load ptr, ptr %434, align 8 - %436 = getelementptr inbounds i8, ptr %435, i64 8 - %437 = load ptr, ptr %436, align 8 - call void %437(ptr noundef nonnull align 8 dereferenceable(48) %434) #27 +_ZNSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS3_EEaSINS2_14DirectoryEntryES4_IS8_EEENSt9enable_ifIXsr6__and_ISt6__and_IJSt14is_convertibleINS_IT_T0_E7pointerEPS3_ESt6__not_ISt8is_arrayISD_EEEESt13is_assignableIRS5_OSE_EEE5valueERS6_E4typeEOSF_.exit: ; preds = %428 + %436 = load ptr, ptr %435, align 8 + %437 = getelementptr inbounds i8, ptr %436, i64 8 + %438 = load ptr, ptr %437, align 8 + call void %438(ptr noundef nonnull align 8 dereferenceable(48) %435) #27 %.pr350 = load ptr, ptr %48, align 8 %.not.i207 = icmp eq ptr %.pr350, null br i1 %.not.i207, label %_ZNSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem14DirectoryEntryESt14default_deleteIS3_EED2Ev.exit, label %_ZNKSt14default_deleteIN4llvm3vfs21RedirectingFileSystem14DirectoryEntryEEclEPS3_.exit.i _ZNKSt14default_deleteIN4llvm3vfs21RedirectingFileSystem14DirectoryEntryEEclEPS3_.exit.i: ; preds = %_ZNSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS3_EEaSINS2_14DirectoryEntryES4_IS8_EEENSt9enable_ifIXsr6__and_ISt6__and_IJSt14is_convertibleINS_IT_T0_E7pointerEPS3_ESt6__not_ISt8is_arrayISD_EEEESt13is_assignableIRS5_OSE_EEE5valueERS6_E4typeEOSF_.exit - %438 = load ptr, ptr %.pr350, align 8 - %439 = getelementptr inbounds i8, ptr %438, i64 8 - %440 = load ptr, ptr %439, align 8 - call void %440(ptr noundef nonnull align 8 dereferenceable(160) %.pr350) #27 + %439 = load ptr, ptr %.pr350, align 8 + %440 = getelementptr inbounds i8, ptr %439, i64 8 + %441 = load ptr, ptr %440, align 8 + call void %441(ptr noundef nonnull align 8 dereferenceable(160) %.pr350) #27 br label %_ZNSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem14DirectoryEntryESt14default_deleteIS3_EED2Ev.exit -_ZNSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem14DirectoryEntryESt14default_deleteIS3_EED2Ev.exit: ; preds = %427, %_ZNSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS3_EEaSINS2_14DirectoryEntryES4_IS8_EEENSt9enable_ifIXsr6__and_ISt6__and_IJSt14is_convertibleINS_IT_T0_E7pointerEPS3_ESt6__not_ISt8is_arrayISD_EEEESt13is_assignableIRS5_OSE_EEE5valueERS6_E4typeEOSF_.exit, %_ZNKSt14default_deleteIN4llvm3vfs21RedirectingFileSystem14DirectoryEntryEEclEPS3_.exit.i +_ZNSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem14DirectoryEntryESt14default_deleteIS3_EED2Ev.exit: ; preds = %428, %_ZNSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS3_EEaSINS2_14DirectoryEntryES4_IS8_EEENSt9enable_ifIXsr6__and_ISt6__and_IJSt14is_convertibleINS_IT_T0_E7pointerEPS3_ESt6__not_ISt8is_arrayISD_EEEESt13is_assignableIRS5_OSE_EEE5valueERS6_E4typeEOSF_.exit, %_ZNKSt14default_deleteIN4llvm3vfs21RedirectingFileSystem14DirectoryEntryEEclEPS3_.exit.i store ptr null, ptr %48, align 8 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(81) %49) #27 - br label %441 - -441: ; preds = %_ZNSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem14DirectoryEntryESt14default_deleteIS3_EED2Ev.exit, %_ZNSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS3_EEaSINS2_19DirectoryRemapEntryES4_IS8_EEENSt9enable_ifIXsr6__and_ISt6__and_IJSt14is_convertibleINS_IT_T0_E7pointerEPS3_ESt6__not_ISt8is_arrayISD_EEEESt13is_assignableIRS5_OSE_EEE5valueERS6_E4typeEOSF_.exit, %_ZNSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS3_EEaSINS2_9FileEntryES4_IS8_EEENSt9enable_ifIXsr6__and_ISt6__and_IJSt14is_convertibleINS_IT_T0_E7pointerEPS3_ESt6__not_ISt8is_arrayISD_EEEESt13is_assignableIRS5_OSE_EEE5valueERS6_E4typeEOSF_.exit, %.critedge - %442 = call { ptr, i64 } @_ZN4llvm3sys4path11parent_pathENS_9StringRefENS1_5StyleE(ptr %411, i64 %.sroa.6.0.lcssa, i32 noundef %.0124) #27 - %443 = extractvalue { ptr, i64 } %442, 1 - %444 = icmp eq i64 %443, 0 - br i1 %444, label %.loopexit, label %445 - -445: ; preds = %441 - %446 = extractvalue { ptr, i64 } %442, 0 - call void @_ZN4llvm3sys4path6rbeginENS_9StringRefENS1_5StyleE(ptr dead_on_unwind nonnull writable sret(%"class.llvm::sys::path::reverse_iterator") align 8 %51, ptr %446, i64 %443, i32 noundef %.0124) #27 - call void @_ZN4llvm3sys4path4rendENS_9StringRefE(ptr dead_on_unwind nonnull writable sret(%"class.llvm::sys::path::reverse_iterator") align 8 %52, ptr %446, i64 %443) #27 - %447 = call noundef zeroext i1 @_ZNK4llvm3sys4path16reverse_iteratoreqERKS2_(ptr noundef nonnull align 8 dereferenceable(44) %51, ptr noundef nonnull align 8 dereferenceable(44) %52) #27 - br i1 %447, label %.loopexit, label %.lr.ph396 - -.lr.ph396: ; preds = %445 - %448 = getelementptr inbounds nuw i8, ptr %53, i64 8 - %449 = getelementptr inbounds nuw i8, ptr %53, i64 16 - %450 = getelementptr inbounds nuw i8, ptr %51, i64 16 - %451 = getelementptr inbounds nuw i8, ptr %56, i64 32 + br label %442 + +442: ; preds = %_ZNSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem14DirectoryEntryESt14default_deleteIS3_EED2Ev.exit, %_ZNSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS3_EEaSINS2_19DirectoryRemapEntryES4_IS8_EEENSt9enable_ifIXsr6__and_ISt6__and_IJSt14is_convertibleINS_IT_T0_E7pointerEPS3_ESt6__not_ISt8is_arrayISD_EEEESt13is_assignableIRS5_OSE_EEE5valueERS6_E4typeEOSF_.exit, %_ZNSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS3_EEaSINS2_9FileEntryES4_IS8_EEENSt9enable_ifIXsr6__and_ISt6__and_IJSt14is_convertibleINS_IT_T0_E7pointerEPS3_ESt6__not_ISt8is_arrayISD_EEEESt13is_assignableIRS5_OSE_EEE5valueERS6_E4typeEOSF_.exit, %.critedge + %443 = call { ptr, i64 } @_ZN4llvm3sys4path11parent_pathENS_9StringRefENS1_5StyleE(ptr %411, i64 %.sroa.6.0.lcssa, i32 noundef %.0124) #27 + %444 = extractvalue { ptr, i64 } %443, 1 + %445 = icmp eq i64 %444, 0 + br i1 %445, label %.loopexit, label %446 + +446: ; preds = %442 + %447 = extractvalue { ptr, i64 } %443, 0 + call void @_ZN4llvm3sys4path6rbeginENS_9StringRefENS1_5StyleE(ptr dead_on_unwind nonnull writable sret(%"class.llvm::sys::path::reverse_iterator") align 8 %51, ptr %447, i64 %444, i32 noundef %.0124) #27 + call void @_ZN4llvm3sys4path4rendENS_9StringRefE(ptr dead_on_unwind nonnull writable sret(%"class.llvm::sys::path::reverse_iterator") align 8 %52, ptr %447, i64 %444) #27 + %448 = call noundef zeroext i1 @_ZNK4llvm3sys4path16reverse_iteratoreqERKS2_(ptr noundef nonnull align 8 dereferenceable(44) %51, ptr noundef nonnull align 8 dereferenceable(44) %52) #27 + br i1 %448, label %.loopexit, label %.lr.ph396 + +.lr.ph396: ; preds = %446 + %449 = getelementptr inbounds nuw i8, ptr %53, i64 8 + %450 = getelementptr inbounds nuw i8, ptr %53, i64 16 + %451 = getelementptr inbounds nuw i8, ptr %51, i64 16 + %452 = getelementptr inbounds nuw i8, ptr %56, i64 32 br label %_ZNSt6vectorISt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EESaIS7_EE9push_backEOS7_.exit209 _ZNSt6vectorISt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EESaIS7_EE9push_backEOS7_.exit209: ; preds = %_ZNSt6vectorISt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EESaIS7_EED2Ev.exit, %.lr.ph396 - %452 = call noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #30 - %453 = load i64, ptr %0, align 8 - store i64 %453, ptr %452, align 8 + %453 = call noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #30 + %454 = load i64, ptr %0, align 8 + store i64 %454, ptr %453, align 8 store ptr null, ptr %0, align 8 - %454 = getelementptr inbounds i8, ptr %452, i64 8 - store ptr %452, ptr %53, align 8 - store ptr %454, ptr %448, align 8 - store ptr %454, ptr %449, align 8 - store i16 257, ptr %451, align 8 - %455 = atomicrmw add ptr @_ZZN4llvm3vfs22getNextVirtualUniqueIDEvE3UID, i32 1 seq_cst, align 4 - %456 = add i32 %455, 1 - %457 = zext i32 %456 to i64 - %458 = call i64 @_ZNSt6chrono3_V212system_clock3nowEv() #27 - call void @_ZN4llvm3vfs6StatusC1ERKNS_5TwineENS_3sys2fs8UniqueIDENSt6chrono10time_pointINS8_3_V212system_clockENS8_8durationIlSt5ratioILl1ELl1000000000EEEEEEjjmNS6_9file_typeENS6_5permsE(ptr noundef nonnull align 8 dereferenceable(81) %55, ptr noundef nonnull align 8 dereferenceable(34) %56, i64 -1, i64 %457, i64 %458, i32 noundef 0, i32 noundef 0, i64 noundef 0, i32 noundef 3, i32 noundef 511) #27 - call void @_ZSt11make_uniqueIN4llvm3vfs21RedirectingFileSystem14DirectoryEntryEJRKNS0_9StringRefESt6vectorISt10unique_ptrINS2_5EntryESt14default_deleteIS9_EESaISC_EENS1_6StatusEEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.383") align 8 %54, ptr noundef nonnull align 8 dereferenceable(16) %450, ptr noundef nonnull align 8 dereferenceable(24) %53, ptr noundef nonnull align 8 dereferenceable(81) %55) - %459 = load ptr, ptr %54, align 8 + %455 = getelementptr inbounds i8, ptr %453, i64 8 + store ptr %453, ptr %53, align 8 + store ptr %455, ptr %449, align 8 + store ptr %455, ptr %450, align 8 + store i16 257, ptr %452, align 8 + %456 = atomicrmw add ptr @_ZZN4llvm3vfs22getNextVirtualUniqueIDEvE3UID, i32 1 seq_cst, align 4 + %457 = add i32 %456, 1 + %458 = zext i32 %457 to i64 + %459 = call i64 @_ZNSt6chrono3_V212system_clock3nowEv() #27 + call void @_ZN4llvm3vfs6StatusC1ERKNS_5TwineENS_3sys2fs8UniqueIDENSt6chrono10time_pointINS8_3_V212system_clockENS8_8durationIlSt5ratioILl1ELl1000000000EEEEEEjjmNS6_9file_typeENS6_5permsE(ptr noundef nonnull align 8 dereferenceable(81) %55, ptr noundef nonnull align 8 dereferenceable(34) %56, i64 -1, i64 %458, i64 %459, i32 noundef 0, i32 noundef 0, i64 noundef 0, i32 noundef 3, i32 noundef 511) #27 + call void @_ZSt11make_uniqueIN4llvm3vfs21RedirectingFileSystem14DirectoryEntryEJRKNS0_9StringRefESt6vectorISt10unique_ptrINS2_5EntryESt14default_deleteIS9_EESaISC_EENS1_6StatusEEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_(ptr dead_on_unwind nonnull writable sret(%"class.std::unique_ptr.383") align 8 %54, ptr noundef nonnull align 8 dereferenceable(16) %451, ptr noundef nonnull align 8 dereferenceable(24) %53, ptr noundef nonnull align 8 dereferenceable(81) %55) + %460 = load ptr, ptr %54, align 8 store ptr null, ptr %54, align 8 - %460 = load ptr, ptr %0, align 8 - store ptr %459, ptr %0, align 8 - %.not.i.i.i211 = icmp eq ptr %460, null + %461 = load ptr, ptr %0, align 8 + store ptr %460, ptr %0, align 8 + %.not.i.i.i211 = icmp eq ptr %461, null br i1 %.not.i.i.i211, label %_ZNSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem14DirectoryEntryESt14default_deleteIS3_EED2Ev.exit216, label %_ZNSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS3_EEaSINS2_14DirectoryEntryES4_IS8_EEENSt9enable_ifIXsr6__and_ISt6__and_IJSt14is_convertibleINS_IT_T0_E7pointerEPS3_ESt6__not_ISt8is_arrayISD_EEEESt13is_assignableIRS5_OSE_EEE5valueERS6_E4typeEOSF_.exit213 _ZNSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS3_EEaSINS2_14DirectoryEntryES4_IS8_EEENSt9enable_ifIXsr6__and_ISt6__and_IJSt14is_convertibleINS_IT_T0_E7pointerEPS3_ESt6__not_ISt8is_arrayISD_EEEESt13is_assignableIRS5_OSE_EEE5valueERS6_E4typeEOSF_.exit213: ; preds = %_ZNSt6vectorISt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EESaIS7_EE9push_backEOS7_.exit209 - %461 = load ptr, ptr %460, align 8 - %462 = getelementptr inbounds i8, ptr %461, i64 8 - %463 = load ptr, ptr %462, align 8 - call void %463(ptr noundef nonnull align 8 dereferenceable(48) %460) #27 + %462 = load ptr, ptr %461, align 8 + %463 = getelementptr inbounds i8, ptr %462, i64 8 + %464 = load ptr, ptr %463, align 8 + call void %464(ptr noundef nonnull align 8 dereferenceable(48) %461) #27 %.pr352 = load ptr, ptr %54, align 8 %.not.i214 = icmp eq ptr %.pr352, null br i1 %.not.i214, label %_ZNSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem14DirectoryEntryESt14default_deleteIS3_EED2Ev.exit216, label %_ZNKSt14default_deleteIN4llvm3vfs21RedirectingFileSystem14DirectoryEntryEEclEPS3_.exit.i215 _ZNKSt14default_deleteIN4llvm3vfs21RedirectingFileSystem14DirectoryEntryEEclEPS3_.exit.i215: ; preds = %_ZNSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS3_EEaSINS2_14DirectoryEntryES4_IS8_EEENSt9enable_ifIXsr6__and_ISt6__and_IJSt14is_convertibleINS_IT_T0_E7pointerEPS3_ESt6__not_ISt8is_arrayISD_EEEESt13is_assignableIRS5_OSE_EEE5valueERS6_E4typeEOSF_.exit213 - %464 = load ptr, ptr %.pr352, align 8 - %465 = getelementptr inbounds i8, ptr %464, i64 8 - %466 = load ptr, ptr %465, align 8 - call void %466(ptr noundef nonnull align 8 dereferenceable(160) %.pr352) #27 + %465 = load ptr, ptr %.pr352, align 8 + %466 = getelementptr inbounds i8, ptr %465, i64 8 + %467 = load ptr, ptr %466, align 8 + call void %467(ptr noundef nonnull align 8 dereferenceable(160) %.pr352) #27 br label %_ZNSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem14DirectoryEntryESt14default_deleteIS3_EED2Ev.exit216 _ZNSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem14DirectoryEntryESt14default_deleteIS3_EED2Ev.exit216: ; preds = %_ZNSt6vectorISt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EESaIS7_EE9push_backEOS7_.exit209, %_ZNSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS3_EEaSINS2_14DirectoryEntryES4_IS8_EEENSt9enable_ifIXsr6__and_ISt6__and_IJSt14is_convertibleINS_IT_T0_E7pointerEPS3_ESt6__not_ISt8is_arrayISD_EEEESt13is_assignableIRS5_OSE_EEE5valueERS6_E4typeEOSF_.exit213, %_ZNKSt14default_deleteIN4llvm3vfs21RedirectingFileSystem14DirectoryEntryEEclEPS3_.exit.i215 store ptr null, ptr %54, align 8 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(81) %55) #27 - %467 = load ptr, ptr %53, align 8 - %468 = load ptr, ptr %448, align 8 - %.not4.i.i.i.i = icmp eq ptr %467, %468 + %468 = load ptr, ptr %53, align 8 + %469 = load ptr, ptr %449, align 8 + %.not4.i.i.i.i = icmp eq ptr %468, %469 br i1 %.not4.i.i.i.i, label %_ZSt8_DestroyIPSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EES7_EvT_S9_RSaIT0_E.exit.i, label %.lr.ph.i.i.i.i .lr.ph.i.i.i.i: ; preds = %_ZNSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem14DirectoryEntryESt14default_deleteIS3_EED2Ev.exit216, %_ZSt8_DestroyISt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EEEvPT_.exit.i.i.i.i - %.05.i.i.i.i = phi ptr [ %473, %_ZSt8_DestroyISt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EEEvPT_.exit.i.i.i.i ], [ %467, %_ZNSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem14DirectoryEntryESt14default_deleteIS3_EED2Ev.exit216 ] - %469 = load ptr, ptr %.05.i.i.i.i, align 8 - %.not.i.i.i.i.i.i = icmp eq ptr %469, null + %.05.i.i.i.i = phi ptr [ %474, %_ZSt8_DestroyISt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EEEvPT_.exit.i.i.i.i ], [ %468, %_ZNSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem14DirectoryEntryESt14default_deleteIS3_EED2Ev.exit216 ] + %470 = load ptr, ptr %.05.i.i.i.i, align 8 + %.not.i.i.i.i.i.i = icmp eq ptr %470, null br i1 %.not.i.i.i.i.i.i, label %_ZSt8_DestroyISt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EEEvPT_.exit.i.i.i.i, label %_ZNKSt14default_deleteIN4llvm3vfs21RedirectingFileSystem5EntryEEclEPS3_.exit.i.i.i.i.i.i _ZNKSt14default_deleteIN4llvm3vfs21RedirectingFileSystem5EntryEEclEPS3_.exit.i.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i - %470 = load ptr, ptr %469, align 8 - %471 = getelementptr inbounds i8, ptr %470, i64 8 - %472 = load ptr, ptr %471, align 8 - call void %472(ptr noundef nonnull align 8 dereferenceable(48) %469) #27 + %471 = load ptr, ptr %470, align 8 + %472 = getelementptr inbounds i8, ptr %471, i64 8 + %473 = load ptr, ptr %472, align 8 + call void %473(ptr noundef nonnull align 8 dereferenceable(48) %470) #27 br label %_ZSt8_DestroyISt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EEEvPT_.exit.i.i.i.i _ZSt8_DestroyISt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EEEvPT_.exit.i.i.i.i: ; preds = %_ZNKSt14default_deleteIN4llvm3vfs21RedirectingFileSystem5EntryEEclEPS3_.exit.i.i.i.i.i.i, %.lr.ph.i.i.i.i store ptr null, ptr %.05.i.i.i.i, align 8 - %473 = getelementptr inbounds i8, ptr %.05.i.i.i.i, i64 8 - %.not.i.i.i.i = icmp eq ptr %473, %468 + %474 = getelementptr inbounds i8, ptr %.05.i.i.i.i, i64 8 + %.not.i.i.i.i = icmp eq ptr %474, %469 br i1 %.not.i.i.i.i, label %_ZSt8_DestroyIPSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EES7_EvT_S9_RSaIT0_E.exitthread-pre-split.i, label %.lr.ph.i.i.i.i, !llvm.loop !196 _ZSt8_DestroyIPSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EES7_EvT_S9_RSaIT0_E.exitthread-pre-split.i: ; preds = %_ZSt8_DestroyISt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EEEvPT_.exit.i.i.i.i @@ -18944,71 +18945,71 @@ _ZSt8_DestroyIPSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14defaul br label %_ZSt8_DestroyIPSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EES7_EvT_S9_RSaIT0_E.exit.i _ZSt8_DestroyIPSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EES7_EvT_S9_RSaIT0_E.exit.i: ; preds = %_ZSt8_DestroyIPSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EES7_EvT_S9_RSaIT0_E.exitthread-pre-split.i, %_ZNSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem14DirectoryEntryESt14default_deleteIS3_EED2Ev.exit216 - %474 = phi ptr [ %.pr.i, %_ZSt8_DestroyIPSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EES7_EvT_S9_RSaIT0_E.exitthread-pre-split.i ], [ %467, %_ZNSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem14DirectoryEntryESt14default_deleteIS3_EED2Ev.exit216 ] - %.not.i.i.i217 = icmp eq ptr %474, null - br i1 %.not.i.i.i217, label %_ZNSt6vectorISt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EESaIS7_EED2Ev.exit, label %475 - -475: ; preds = %_ZSt8_DestroyIPSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EES7_EvT_S9_RSaIT0_E.exit.i - %476 = load ptr, ptr %449, align 8 - %477 = ptrtoint ptr %476 to i64 - %478 = ptrtoint ptr %474 to i64 - %479 = sub i64 %477, %478 - call void @_ZdlPvm(ptr noundef nonnull %474, i64 noundef %479) #31 + %475 = phi ptr [ %.pr.i, %_ZSt8_DestroyIPSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EES7_EvT_S9_RSaIT0_E.exitthread-pre-split.i ], [ %468, %_ZNSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem14DirectoryEntryESt14default_deleteIS3_EED2Ev.exit216 ] + %.not.i.i.i217 = icmp eq ptr %475, null + br i1 %.not.i.i.i217, label %_ZNSt6vectorISt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EESaIS7_EED2Ev.exit, label %476 + +476: ; preds = %_ZSt8_DestroyIPSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EES7_EvT_S9_RSaIT0_E.exit.i + %477 = load ptr, ptr %450, align 8 + %478 = ptrtoint ptr %477 to i64 + %479 = ptrtoint ptr %475 to i64 + %480 = sub i64 %478, %479 + call void @_ZdlPvm(ptr noundef nonnull %475, i64 noundef %480) #31 br label %_ZNSt6vectorISt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EESaIS7_EED2Ev.exit -_ZNSt6vectorISt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EESaIS7_EED2Ev.exit: ; preds = %_ZSt8_DestroyIPSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EES7_EvT_S9_RSaIT0_E.exit.i, %475 - %480 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN4llvm3sys4path16reverse_iteratorppEv(ptr noundef nonnull align 8 dereferenceable(44) %51) #27 - %481 = call noundef zeroext i1 @_ZNK4llvm3sys4path16reverse_iteratoreqERKS2_(ptr noundef nonnull align 8 dereferenceable(44) %51, ptr noundef nonnull align 8 dereferenceable(44) %52) #27 - br i1 %481, label %.loopexit, label %_ZNSt6vectorISt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EESaIS7_EE9push_backEOS7_.exit209, !llvm.loop !362 +_ZNSt6vectorISt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EESaIS7_EED2Ev.exit: ; preds = %_ZSt8_DestroyIPSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EES7_EvT_S9_RSaIT0_E.exit.i, %476 + %481 = call noundef nonnull align 8 dereferenceable(44) ptr @_ZN4llvm3sys4path16reverse_iteratorppEv(ptr noundef nonnull align 8 dereferenceable(44) %51) #27 + %482 = call noundef zeroext i1 @_ZNK4llvm3sys4path16reverse_iteratoreqERKS2_(ptr noundef nonnull align 8 dereferenceable(44) %51, ptr noundef nonnull align 8 dereferenceable(44) %52) #27 + br i1 %482, label %.loopexit, label %_ZNSt6vectorISt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EESaIS7_EE9push_backEOS7_.exit209, !llvm.loop !362 .loopexit.sink.split: ; preds = %select.unfold._crit_edge, %select.unfold._crit_edge.thread, %.thread, %341, %355, %362, %396 store ptr null, ptr %0, align 8 br label %.loopexit -.loopexit: ; preds = %_ZN4llvm11SmallStringILj256EED2Ev.exit188, %_ZNSt6vectorISt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EESaIS7_EED2Ev.exit, %.loopexit.sink.split, %445, %441 - %482 = call noundef i64 @_ZNK4llvm15SmallVectorBaseImE4sizeEv(ptr noundef nonnull align 8 dereferenceable(280) %21) #27 - %483 = load ptr, ptr %21, align 8 - %484 = icmp eq ptr %483, %86 - br i1 %484, label %_ZN4llvm11SmallStringILj256EED2Ev.exit218, label %485 +.loopexit: ; preds = %_ZN4llvm11SmallStringILj256EED2Ev.exit188, %_ZNSt6vectorISt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EESaIS7_EED2Ev.exit, %.loopexit.sink.split, %446, %442 + %483 = call noundef i64 @_ZNK4llvm15SmallVectorBaseImE4sizeEv(ptr noundef nonnull align 8 dereferenceable(280) %21) #27 + %484 = load ptr, ptr %21, align 8 + %485 = icmp eq ptr %484, %86 + br i1 %485, label %_ZN4llvm11SmallStringILj256EED2Ev.exit218, label %486 -485: ; preds = %.loopexit - call void @free(ptr noundef %483) #27 +486: ; preds = %.loopexit + call void @free(ptr noundef %484) #27 br label %_ZN4llvm11SmallStringILj256EED2Ev.exit218 -_ZN4llvm11SmallStringILj256EED2Ev.exit218: ; preds = %.loopexit, %485 - %486 = call noundef i64 @_ZNK4llvm15SmallVectorBaseImE4sizeEv(ptr noundef nonnull align 8 dereferenceable(280) %20) #27 - %487 = load ptr, ptr %20, align 8 - %488 = icmp eq ptr %487, %85 - br i1 %488, label %_ZN4llvm11SmallStringILj256EED2Ev.exit219, label %489 +_ZN4llvm11SmallStringILj256EED2Ev.exit218: ; preds = %.loopexit, %486 + %487 = call noundef i64 @_ZNK4llvm15SmallVectorBaseImE4sizeEv(ptr noundef nonnull align 8 dereferenceable(280) %20) #27 + %488 = load ptr, ptr %20, align 8 + %489 = icmp eq ptr %488, %85 + br i1 %489, label %_ZN4llvm11SmallStringILj256EED2Ev.exit219, label %490 -489: ; preds = %_ZN4llvm11SmallStringILj256EED2Ev.exit218 - call void @free(ptr noundef %487) #27 +490: ; preds = %_ZN4llvm11SmallStringILj256EED2Ev.exit218 + call void @free(ptr noundef %488) #27 br label %_ZN4llvm11SmallStringILj256EED2Ev.exit219 -_ZN4llvm11SmallStringILj256EED2Ev.exit219: ; preds = %_ZN4llvm11SmallStringILj256EED2Ev.exit218, %489 - %490 = load ptr, ptr %19, align 8 - %491 = getelementptr inbounds nuw i8, ptr %19, i64 8 - %492 = load ptr, ptr %491, align 8 - %.not4.i.i.i.i220 = icmp eq ptr %490, %492 +_ZN4llvm11SmallStringILj256EED2Ev.exit219: ; preds = %_ZN4llvm11SmallStringILj256EED2Ev.exit218, %490 + %491 = load ptr, ptr %19, align 8 + %492 = getelementptr inbounds nuw i8, ptr %19, i64 8 + %493 = load ptr, ptr %492, align 8 + %.not4.i.i.i.i220 = icmp eq ptr %491, %493 br i1 %.not4.i.i.i.i220, label %_ZSt8_DestroyIPSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EES7_EvT_S9_RSaIT0_E.exit.i229, label %.lr.ph.i.i.i.i221 .lr.ph.i.i.i.i221: ; preds = %_ZN4llvm11SmallStringILj256EED2Ev.exit219, %_ZSt8_DestroyISt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EEEvPT_.exit.i.i.i.i225 - %.05.i.i.i.i222 = phi ptr [ %497, %_ZSt8_DestroyISt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EEEvPT_.exit.i.i.i.i225 ], [ %490, %_ZN4llvm11SmallStringILj256EED2Ev.exit219 ] - %493 = load ptr, ptr %.05.i.i.i.i222, align 8 - %.not.i.i.i.i.i.i223 = icmp eq ptr %493, null + %.05.i.i.i.i222 = phi ptr [ %498, %_ZSt8_DestroyISt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EEEvPT_.exit.i.i.i.i225 ], [ %491, %_ZN4llvm11SmallStringILj256EED2Ev.exit219 ] + %494 = load ptr, ptr %.05.i.i.i.i222, align 8 + %.not.i.i.i.i.i.i223 = icmp eq ptr %494, null br i1 %.not.i.i.i.i.i.i223, label %_ZSt8_DestroyISt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EEEvPT_.exit.i.i.i.i225, label %_ZNKSt14default_deleteIN4llvm3vfs21RedirectingFileSystem5EntryEEclEPS3_.exit.i.i.i.i.i.i224 _ZNKSt14default_deleteIN4llvm3vfs21RedirectingFileSystem5EntryEEclEPS3_.exit.i.i.i.i.i.i224: ; preds = %.lr.ph.i.i.i.i221 - %494 = load ptr, ptr %493, align 8 - %495 = getelementptr inbounds i8, ptr %494, i64 8 - %496 = load ptr, ptr %495, align 8 - call void %496(ptr noundef nonnull align 8 dereferenceable(48) %493) #27 + %495 = load ptr, ptr %494, align 8 + %496 = getelementptr inbounds i8, ptr %495, i64 8 + %497 = load ptr, ptr %496, align 8 + call void %497(ptr noundef nonnull align 8 dereferenceable(48) %494) #27 br label %_ZSt8_DestroyISt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EEEvPT_.exit.i.i.i.i225 _ZSt8_DestroyISt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EEEvPT_.exit.i.i.i.i225: ; preds = %_ZNKSt14default_deleteIN4llvm3vfs21RedirectingFileSystem5EntryEEclEPS3_.exit.i.i.i.i.i.i224, %.lr.ph.i.i.i.i221 store ptr null, ptr %.05.i.i.i.i222, align 8 - %497 = getelementptr inbounds i8, ptr %.05.i.i.i.i222, i64 8 - %.not.i.i.i.i226 = icmp eq ptr %497, %492 + %498 = getelementptr inbounds i8, ptr %.05.i.i.i.i222, i64 8 + %.not.i.i.i.i226 = icmp eq ptr %498, %493 br i1 %.not.i.i.i.i226, label %_ZSt8_DestroyIPSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EES7_EvT_S9_RSaIT0_E.exitthread-pre-split.i227, label %.lr.ph.i.i.i.i221, !llvm.loop !196 _ZSt8_DestroyIPSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EES7_EvT_S9_RSaIT0_E.exitthread-pre-split.i227: ; preds = %_ZSt8_DestroyISt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EEEvPT_.exit.i.i.i.i225 @@ -19016,29 +19017,29 @@ _ZSt8_DestroyIPSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14defaul br label %_ZSt8_DestroyIPSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EES7_EvT_S9_RSaIT0_E.exit.i229 _ZSt8_DestroyIPSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EES7_EvT_S9_RSaIT0_E.exit.i229: ; preds = %_ZSt8_DestroyIPSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EES7_EvT_S9_RSaIT0_E.exitthread-pre-split.i227, %_ZN4llvm11SmallStringILj256EED2Ev.exit219 - %498 = phi ptr [ %.pr.i228, %_ZSt8_DestroyIPSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EES7_EvT_S9_RSaIT0_E.exitthread-pre-split.i227 ], [ %490, %_ZN4llvm11SmallStringILj256EED2Ev.exit219 ] - %.not.i.i.i230 = icmp eq ptr %498, null - br i1 %.not.i.i.i230, label %_ZNSt6vectorISt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EESaIS7_EED2Ev.exit231, label %499 - -499: ; preds = %_ZSt8_DestroyIPSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EES7_EvT_S9_RSaIT0_E.exit.i229 - %500 = getelementptr inbounds nuw i8, ptr %19, i64 16 - %501 = load ptr, ptr %500, align 8 - %502 = ptrtoint ptr %501 to i64 - %503 = ptrtoint ptr %498 to i64 - %504 = sub i64 %502, %503 - call void @_ZdlPvm(ptr noundef nonnull %498, i64 noundef %504) #31 + %499 = phi ptr [ %.pr.i228, %_ZSt8_DestroyIPSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EES7_EvT_S9_RSaIT0_E.exitthread-pre-split.i227 ], [ %491, %_ZN4llvm11SmallStringILj256EED2Ev.exit219 ] + %.not.i.i.i230 = icmp eq ptr %499, null + br i1 %.not.i.i.i230, label %_ZNSt6vectorISt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EESaIS7_EED2Ev.exit231, label %500 + +500: ; preds = %_ZSt8_DestroyIPSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EES7_EvT_S9_RSaIT0_E.exit.i229 + %501 = getelementptr inbounds nuw i8, ptr %19, i64 16 + %502 = load ptr, ptr %501, align 8 + %503 = ptrtoint ptr %502 to i64 + %504 = ptrtoint ptr %499 to i64 + %505 = sub i64 %503, %504 + call void @_ZdlPvm(ptr noundef nonnull %499, i64 noundef %505) #31 br label %_ZNSt6vectorISt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EESaIS7_EED2Ev.exit231 -_ZNSt6vectorISt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EESaIS7_EED2Ev.exit231: ; preds = %_ZSt8_DestroyIPSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EES7_EvT_S9_RSaIT0_E.exit.i229, %499 - %505 = load ptr, ptr %16, align 8 - %506 = getelementptr inbounds nuw i8, ptr %16, i64 16 - %507 = load i32, ptr %506, align 8 - %508 = zext i32 %507 to i64 - %509 = mul nuw nsw i64 %508, 24 - call void @_ZN4llvm17deallocate_bufferEPvmm(ptr noundef %505, i64 noundef %509, i64 noundef 8) #27 - br label %510 +_ZNSt6vectorISt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EESaIS7_EED2Ev.exit231: ; preds = %_ZSt8_DestroyIPSt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EES7_EvT_S9_RSaIT0_E.exit.i229, %500 + %506 = load ptr, ptr %16, align 8 + %507 = getelementptr inbounds nuw i8, ptr %16, i64 16 + %508 = load i32, ptr %507, align 8 + %509 = zext i32 %508 to i64 + %510 = mul nuw nsw i64 %509, 24 + call void @_ZN4llvm17deallocate_bufferEPvmm(ptr noundef %506, i64 noundef %510, i64 noundef 8) #27 + br label %511 -510: ; preds = %_ZNSt6vectorISt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EESaIS7_EED2Ev.exit231, %60 +511: ; preds = %_ZNSt6vectorISt10unique_ptrIN4llvm3vfs21RedirectingFileSystem5EntryESt14default_deleteIS4_EESaIS7_EED2Ev.exit231, %60 ret void } diff --git a/bench/meshlab/optimized/filter_func.cpp.ll b/bench/meshlab/optimized/filter_func.cpp.ll index 907398eff4c..f99d9a453fc 100644 --- a/bench/meshlab/optimized/filter_func.cpp.ll +++ b/bench/meshlab/optimized/filter_func.cpp.ll @@ -18411,12 +18411,12 @@ _ZN9QtPrivate8RefCount5derefEv.exit.thread2.i1029: ; preds = %_ZN9QtPrivate8RefC br label %_ZN7QStringD2Ev.exit1034 620: ; preds = %592, %573, %572, %566 - %.merged921 = phi { ptr, i32 } [ %567, %566 ], [ %.pn912.pn2205, %592 ], [ %574, %573 ], [ %.pn910, %572 ] + %.merged927 = phi { ptr, i32 } [ %567, %566 ], [ %.pn912.pn2205, %592 ], [ %574, %573 ], [ %.pn910, %572 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %45) #28 br label %621 621: ; preds = %620, %564 - %.merged920 = phi { ptr, i32 } [ %.merged921, %620 ], [ %565, %564 ] + %.merged926 = phi { ptr, i32 } [ %.merged927, %620 ], [ %565, %564 ] call void @_ZN7QStringD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #28 br label %_ZN3vcg12SimpleVolumeINS_11SimpleVoxelIfEEED2Ev.exit2026 @@ -19597,32 +19597,32 @@ _ZN7QStringD2Ev.exit1138: ; preds = %_ZNK19MeshLabPlugin br label %_ZN7QStringD2Ev.exit1034 .loopexit: ; preds = %862, %837, %819, %801, %.loopexit2435, %.loopexit.split-lp, %877, %861, %836, %818, %890 - %.merged927 = phi { ptr, i32 } [ %891, %890 ], [ %.pn906, %877 ], [ %.pn904, %861 ], [ %.pn902, %836 ], [ %.pn900, %818 ], [ %lpad.loopexit, %.loopexit2435 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ], [ %802, %801 ], [ %820, %819 ], [ %838, %837 ], [ %863, %862 ] + %.merged925 = phi { ptr, i32 } [ %891, %890 ], [ %.pn906, %877 ], [ %.pn904, %861 ], [ %.pn902, %836 ], [ %.pn900, %818 ], [ %lpad.loopexit, %.loopexit2435 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ], [ %802, %801 ], [ %820, %819 ], [ %838, %837 ], [ %863, %862 ] call void @_ZN7QStringD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %77) #28 br label %1033 1033: ; preds = %.loopexit, %799, %797, %795, %793, %791 - %.merged926 = phi { ptr, i32 } [ %.merged927, %.loopexit ], [ %792, %791 ], [ %800, %799 ], [ %798, %797 ], [ %796, %795 ], [ %794, %793 ] + %.merged924 = phi { ptr, i32 } [ %.merged925, %.loopexit ], [ %792, %791 ], [ %800, %799 ], [ %798, %797 ], [ %796, %795 ], [ %794, %793 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %72) #28 br label %1034 1034: ; preds = %1033, %789 - %.merged925 = phi { ptr, i32 } [ %.merged926, %1033 ], [ %790, %789 ] + %.merged923 = phi { ptr, i32 } [ %.merged924, %1033 ], [ %790, %789 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %71) #28 br label %1035 1035: ; preds = %1034, %787 - %.merged924 = phi { ptr, i32 } [ %.merged925, %1034 ], [ %788, %787 ] + %.merged922 = phi { ptr, i32 } [ %.merged923, %1034 ], [ %788, %787 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %70) #28 br label %1036 1036: ; preds = %1035, %785 - %.merged923 = phi { ptr, i32 } [ %.merged924, %1035 ], [ %786, %785 ] + %.merged921 = phi { ptr, i32 } [ %.merged922, %1035 ], [ %786, %785 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %69) #28 br label %1037 1037: ; preds = %734, %736, %1036, %731, %703, %698, %693, %688, %682 - %.merged922 = phi { ptr, i32 } [ %.pn9082213, %736 ], [ %735, %734 ], [ %683, %682 ], [ %.merged923, %1036 ], [ %732, %731 ], [ %.pn898, %703 ], [ %.pn896, %698 ], [ %.pn894, %693 ], [ %.pn892, %688 ] + %.merged920 = phi { ptr, i32 } [ %.pn9082213, %736 ], [ %735, %734 ], [ %683, %682 ], [ %.merged921, %1036 ], [ %732, %731 ], [ %.pn898, %703 ], [ %.pn896, %698 ], [ %.pn894, %693 ], [ %.pn892, %688 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #28 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #28 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #28 @@ -20311,12 +20311,12 @@ _ZNK19MeshLabPluginLogger3logIJRifEEEvPKcDpOT_.exit1225: ; preds = %_ZN11GLLogSt br label %_ZN7QStringD2Ev.exit1034 1270: ; preds = %.loopexit2436, %.loopexit.split-lp2437, %1150, %1250, %1200, %1131, %1129 - %.merged947 = phi { ptr, i32 } [ %.pn887.pn2227, %1150 ], [ %1132, %1131 ], [ %1251, %1250 ], [ %1201, %1200 ], [ %1130, %1129 ], [ %lpad.loopexit2438, %.loopexit2436 ], [ %lpad.loopexit.split-lp2439, %.loopexit.split-lp2437 ] + %.merged957 = phi { ptr, i32 } [ %.pn887.pn2227, %1150 ], [ %1132, %1131 ], [ %1251, %1250 ], [ %1201, %1200 ], [ %1130, %1129 ], [ %lpad.loopexit2438, %.loopexit2436 ], [ %lpad.loopexit.split-lp2439, %.loopexit.split-lp2437 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %88) #28 br label %1271 1271: ; preds = %1087, %1089, %1270, %1084, %1082 - %.merged946 = phi { ptr, i32 } [ %.pn8902220, %1089 ], [ %1088, %1087 ], [ %1083, %1082 ], [ %.merged947, %1270 ], [ %1085, %1084 ] + %.merged956 = phi { ptr, i32 } [ %.pn8902220, %1089 ], [ %1088, %1087 ], [ %1083, %1082 ], [ %.merged957, %1270 ], [ %1085, %1084 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #28 br label %_ZN3vcg12SimpleVolumeINS_11SimpleVoxelIfEEED2Ev.exit2026 @@ -20827,22 +20827,22 @@ _ZNK19MeshLabPluginLogger3logIJRifEEEvPKcDpOT_.exit1276: ; preds = %_ZN11GLLogSt br label %_ZN7QStringD2Ev.exit1034 1451: ; preds = %1430, %1411, %1409 - %.merged931 = phi { ptr, i32 } [ %.pn880.pn2245, %1430 ], [ %1412, %1411 ], [ %1410, %1409 ] + %.merged981 = phi { ptr, i32 } [ %.pn880.pn2245, %1430 ], [ %1412, %1411 ], [ %1410, %1409 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %104) #28 br label %1452 1452: ; preds = %1451, %1407 - %.merged930 = phi { ptr, i32 } [ %.merged931, %1451 ], [ %1408, %1407 ] + %.merged980 = phi { ptr, i32 } [ %.merged981, %1451 ], [ %1408, %1407 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %103) #28 br label %1453 1453: ; preds = %1340, %1342, %1452, %1337, %1335 - %.merged929 = phi { ptr, i32 } [ %.pn8832238, %1342 ], [ %1341, %1340 ], [ %1336, %1335 ], [ %.merged930, %1452 ], [ %1338, %1337 ] + %.merged979 = phi { ptr, i32 } [ %.pn8832238, %1342 ], [ %1341, %1340 ], [ %1336, %1335 ], [ %.merged980, %1452 ], [ %1338, %1337 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #28 br label %1454 1454: ; preds = %1453, %1334, %1328 - %.merged928 = phi { ptr, i32 } [ %.merged929, %1453 ], [ %.pn878, %1334 ], [ %1329, %1328 ] + %.merged978 = phi { ptr, i32 } [ %.merged979, %1453 ], [ %.pn878, %1334 ], [ %1329, %1328 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #28 br label %_ZN3vcg12SimpleVolumeINS_11SimpleVoxelIfEEED2Ev.exit2026 @@ -21832,62 +21832,62 @@ _ZNK19MeshLabPluginLogger3logIJRifEEEvPKcDpOT_.exit1387: ; preds = %_ZN11GLLogSt br label %_ZN7QStringD2Ev.exit1034 1768: ; preds = %1747, %1728, %1726, %1724, %1722, %1720, %1718, %1716, %1714 - %.merged974 = phi { ptr, i32 } [ %.pn871.pn2259, %1747 ], [ %1729, %1728 ], [ %1715, %1714 ], [ %1727, %1726 ], [ %1725, %1724 ], [ %1723, %1722 ], [ %1721, %1720 ], [ %1719, %1718 ], [ %1717, %1716 ] + %.merged942 = phi { ptr, i32 } [ %.pn871.pn2259, %1747 ], [ %1729, %1728 ], [ %1715, %1714 ], [ %1727, %1726 ], [ %1725, %1724 ], [ %1723, %1722 ], [ %1721, %1720 ], [ %1719, %1718 ], [ %1717, %1716 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %133) #28 br label %1769 1769: ; preds = %1768, %1712 - %.merged973 = phi { ptr, i32 } [ %.merged974, %1768 ], [ %1713, %1712 ] + %.merged941 = phi { ptr, i32 } [ %.merged942, %1768 ], [ %1713, %1712 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %132) #28 br label %1770 1770: ; preds = %1769, %1710 - %.merged972 = phi { ptr, i32 } [ %.merged973, %1769 ], [ %1711, %1710 ] + %.merged940 = phi { ptr, i32 } [ %.merged941, %1769 ], [ %1711, %1710 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %131) #28 br label %1771 1771: ; preds = %1770, %1708 - %.merged971 = phi { ptr, i32 } [ %.merged972, %1770 ], [ %1709, %1708 ] + %.merged939 = phi { ptr, i32 } [ %.merged940, %1770 ], [ %1709, %1708 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %130) #28 br label %1772 1772: ; preds = %1771, %1706 - %.merged970 = phi { ptr, i32 } [ %.merged971, %1771 ], [ %1707, %1706 ] + %.merged938 = phi { ptr, i32 } [ %.merged939, %1771 ], [ %1707, %1706 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %129) #28 br label %1773 1773: ; preds = %1772, %1704 - %.merged969 = phi { ptr, i32 } [ %.merged970, %1772 ], [ %1705, %1704 ] + %.merged937 = phi { ptr, i32 } [ %.merged938, %1772 ], [ %1705, %1704 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %128) #28 br label %1774 1774: ; preds = %1595, %1597, %1773, %1592, %1590 - %.merged968 = phi { ptr, i32 } [ %.pn8742253, %1597 ], [ %1596, %1595 ], [ %1591, %1590 ], [ %.merged969, %1773 ], [ %1593, %1592 ] + %.merged936 = phi { ptr, i32 } [ %.pn8742253, %1597 ], [ %1596, %1595 ], [ %1591, %1590 ], [ %.merged937, %1773 ], [ %1593, %1592 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %123) #28 br label %1775 1775: ; preds = %1774, %1589, %1583 - %.merged967 = phi { ptr, i32 } [ %.merged968, %1774 ], [ %.pn869, %1589 ], [ %1584, %1583 ] + %.merged935 = phi { ptr, i32 } [ %.merged936, %1774 ], [ %.pn869, %1589 ], [ %1584, %1583 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %120) #28 br label %1776 1776: ; preds = %1775, %1582, %1576 - %.merged966 = phi { ptr, i32 } [ %.merged967, %1775 ], [ %.pn867, %1582 ], [ %1577, %1576 ] + %.merged934 = phi { ptr, i32 } [ %.merged935, %1775 ], [ %.pn867, %1582 ], [ %1577, %1576 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %117) #28 br label %1777 1777: ; preds = %1776, %1575, %1569 - %.merged965 = phi { ptr, i32 } [ %.merged966, %1776 ], [ %.pn865, %1575 ], [ %1570, %1569 ] + %.merged933 = phi { ptr, i32 } [ %.merged934, %1776 ], [ %.pn865, %1575 ], [ %1570, %1569 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %114) #28 br label %1778 1778: ; preds = %1777, %1568, %1562 - %.merged964 = phi { ptr, i32 } [ %.merged965, %1777 ], [ %.pn863, %1568 ], [ %1563, %1562 ] + %.merged932 = phi { ptr, i32 } [ %.merged933, %1777 ], [ %.pn863, %1568 ], [ %1563, %1562 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %111) #28 br label %1779 1779: ; preds = %1778, %1561, %1555 - %.merged963 = phi { ptr, i32 } [ %.merged964, %1778 ], [ %.pn861, %1561 ], [ %1556, %1555 ] + %.merged931 = phi { ptr, i32 } [ %.merged932, %1778 ], [ %.pn861, %1561 ], [ %1556, %1555 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %108) #28 br label %_ZN3vcg12SimpleVolumeINS_11SimpleVoxelIfEEED2Ev.exit2026 @@ -22614,32 +22614,32 @@ _ZNK19MeshLabPluginLogger3logIJRifEEEvPKcDpOT_.exit1463: ; preds = %_ZN11GLLogSt br label %_ZN7QStringD2Ev.exit1034 .loopexit2443: ; preds = %1946, %1928, %1910, %.loopexit2444, %.loopexit.split-lp2445, %1973, %1945, %1927, %1974, %1908, %1906, %1904 - %.merged953 = phi { ptr, i32 } [ %1975, %1974 ], [ %.pn855, %1973 ], [ %.pn853, %1945 ], [ %.pn851, %1927 ], [ %1909, %1908 ], [ %1907, %1906 ], [ %1905, %1904 ], [ %lpad.loopexit2446, %.loopexit2444 ], [ %lpad.loopexit.split-lp2447, %.loopexit.split-lp2445 ], [ %1911, %1910 ], [ %1929, %1928 ], [ %1947, %1946 ] + %.merged989 = phi { ptr, i32 } [ %1975, %1974 ], [ %.pn855, %1973 ], [ %.pn853, %1945 ], [ %.pn851, %1927 ], [ %1909, %1908 ], [ %1907, %1906 ], [ %1905, %1904 ], [ %lpad.loopexit2446, %.loopexit2444 ], [ %lpad.loopexit.split-lp2447, %.loopexit.split-lp2445 ], [ %1911, %1910 ], [ %1929, %1928 ], [ %1947, %1946 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %156) #28 br label %2003 2003: ; preds = %.loopexit2443, %1902 - %.merged952 = phi { ptr, i32 } [ %.merged953, %.loopexit2443 ], [ %1903, %1902 ] + %.merged988 = phi { ptr, i32 } [ %.merged989, %.loopexit2443 ], [ %1903, %1902 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %155) #28 br label %2004 2004: ; preds = %2003, %1900 - %.merged951 = phi { ptr, i32 } [ %.merged952, %2003 ], [ %1901, %1900 ] + %.merged987 = phi { ptr, i32 } [ %.merged988, %2003 ], [ %1901, %1900 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %154) #28 br label %2005 2005: ; preds = %1863, %1865, %2004, %1860, %1858 - %.merged950 = phi { ptr, i32 } [ %.pn8572267, %1865 ], [ %1864, %1863 ], [ %1859, %1858 ], [ %.merged951, %2004 ], [ %1861, %1860 ] + %.merged986 = phi { ptr, i32 } [ %.pn8572267, %1865 ], [ %1864, %1863 ], [ %1859, %1858 ], [ %.merged987, %2004 ], [ %1861, %1860 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %149) #28 br label %2006 2006: ; preds = %2005, %1857, %1851 - %.merged949 = phi { ptr, i32 } [ %.merged950, %2005 ], [ %.pn849, %1857 ], [ %1852, %1851 ] + %.merged985 = phi { ptr, i32 } [ %.merged986, %2005 ], [ %.pn849, %1857 ], [ %1852, %1851 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #28 br label %2007 2007: ; preds = %2006, %1850, %1844 - %.merged948 = phi { ptr, i32 } [ %.merged949, %2006 ], [ %.pn847, %1850 ], [ %1845, %1844 ] + %.merged984 = phi { ptr, i32 } [ %.merged985, %2006 ], [ %.pn847, %1850 ], [ %1845, %1844 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %143) #28 br label %_ZN3vcg12SimpleVolumeINS_11SimpleVoxelIfEEED2Ev.exit2026 @@ -23542,42 +23542,42 @@ _ZNK19MeshLabPluginLogger3logIJRifEEEvPKcDpOT_.exit1557: ; preds = %_ZN11GLLogSt br label %_ZN7QStringD2Ev.exit1034 .loopexit2449: ; preds = %2219, %2201, %2183, %2165, %.loopexit2450, %.loopexit.split-lp2451, %2246, %2218, %2200, %2182, %2247, %2163, %2161, %2159, %2157 - %.merged942 = phi { ptr, i32 } [ %2248, %2247 ], [ %.pn841, %2246 ], [ %.pn839, %2218 ], [ %.pn837, %2200 ], [ %.pn835, %2182 ], [ %2164, %2163 ], [ %2162, %2161 ], [ %2160, %2159 ], [ %2158, %2157 ], [ %lpad.loopexit2452, %.loopexit2450 ], [ %lpad.loopexit.split-lp2453, %.loopexit.split-lp2451 ], [ %2166, %2165 ], [ %2184, %2183 ], [ %2202, %2201 ], [ %2220, %2219 ] + %.merged965 = phi { ptr, i32 } [ %2248, %2247 ], [ %.pn841, %2246 ], [ %.pn839, %2218 ], [ %.pn837, %2200 ], [ %.pn835, %2182 ], [ %2164, %2163 ], [ %2162, %2161 ], [ %2160, %2159 ], [ %2158, %2157 ], [ %lpad.loopexit2452, %.loopexit2450 ], [ %lpad.loopexit.split-lp2453, %.loopexit.split-lp2451 ], [ %2166, %2165 ], [ %2184, %2183 ], [ %2202, %2201 ], [ %2220, %2219 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %181) #28 br label %2285 2285: ; preds = %.loopexit2449, %2155 - %.merged941 = phi { ptr, i32 } [ %.merged942, %.loopexit2449 ], [ %2156, %2155 ] + %.merged964 = phi { ptr, i32 } [ %.merged965, %.loopexit2449 ], [ %2156, %2155 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %180) #28 br label %2286 2286: ; preds = %2285, %2153 - %.merged940 = phi { ptr, i32 } [ %.merged941, %2285 ], [ %2154, %2153 ] + %.merged963 = phi { ptr, i32 } [ %.merged964, %2285 ], [ %2154, %2153 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %179) #28 br label %2287 2287: ; preds = %2286, %2151 - %.merged939 = phi { ptr, i32 } [ %.merged940, %2286 ], [ %2152, %2151 ] + %.merged962 = phi { ptr, i32 } [ %.merged963, %2286 ], [ %2152, %2151 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %178) #28 br label %2288 2288: ; preds = %2110, %2112, %2287, %2107, %2105 - %.merged938 = phi { ptr, i32 } [ %.pn8432273, %2112 ], [ %2111, %2110 ], [ %2106, %2105 ], [ %.merged939, %2287 ], [ %2108, %2107 ] + %.merged961 = phi { ptr, i32 } [ %.pn8432273, %2112 ], [ %2111, %2110 ], [ %2106, %2105 ], [ %.merged962, %2287 ], [ %2108, %2107 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %173) #28 br label %2289 2289: ; preds = %2288, %2104, %2098 - %.merged937 = phi { ptr, i32 } [ %.merged938, %2288 ], [ %.pn833, %2104 ], [ %2099, %2098 ] + %.merged960 = phi { ptr, i32 } [ %.merged961, %2288 ], [ %.pn833, %2104 ], [ %2099, %2098 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %170) #28 br label %2290 2290: ; preds = %2289, %2097, %2091 - %.merged936 = phi { ptr, i32 } [ %.merged937, %2289 ], [ %.pn831, %2097 ], [ %2092, %2091 ] + %.merged959 = phi { ptr, i32 } [ %.merged960, %2289 ], [ %.pn831, %2097 ], [ %2092, %2091 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %167) #28 br label %2291 2291: ; preds = %2290, %2090, %2084 - %.merged935 = phi { ptr, i32 } [ %.merged936, %2290 ], [ %.pn829, %2090 ], [ %2085, %2084 ] + %.merged958 = phi { ptr, i32 } [ %.merged959, %2290 ], [ %.pn829, %2090 ], [ %2085, %2084 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %164) #28 br label %_ZN3vcg12SimpleVolumeINS_11SimpleVoxelIfEEED2Ev.exit2026 @@ -24198,12 +24198,12 @@ _ZNK19MeshLabPluginLogger3logIJRifEEEvPKcDpOT_.exit1634: ; preds = %_ZN11GLLogSt br label %_ZN7QStringD2Ev.exit1034 .loopexit2456: ; preds = %2379, %.loopexit2457, %.loopexit.split-lp2458, %2406, %2495, %2483, %2407, %2377 - %.merged962 = phi { ptr, i32 } [ %2408, %2407 ], [ %.pn823, %2406 ], [ %2496, %2495 ], [ %2484, %2483 ], [ %2378, %2377 ], [ %lpad.loopexit2459, %.loopexit2457 ], [ %lpad.loopexit.split-lp2460, %.loopexit.split-lp2458 ], [ %2380, %2379 ] + %.merged983 = phi { ptr, i32 } [ %2408, %2407 ], [ %.pn823, %2406 ], [ %2496, %2495 ], [ %2484, %2483 ], [ %2378, %2377 ], [ %lpad.loopexit2459, %.loopexit2457 ], [ %lpad.loopexit.split-lp2460, %.loopexit.split-lp2458 ], [ %2380, %2379 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %196) #28 br label %2515 2515: ; preds = %2337, %2339, %.loopexit2456, %2334, %2332 - %.merged961 = phi { ptr, i32 } [ %.pn8252279, %2339 ], [ %2338, %2337 ], [ %2333, %2332 ], [ %.merged962, %.loopexit2456 ], [ %2335, %2334 ] + %.merged982 = phi { ptr, i32 } [ %.pn8252279, %2339 ], [ %2338, %2337 ], [ %2333, %2332 ], [ %.merged983, %.loopexit2456 ], [ %2335, %2334 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %191) #28 br label %_ZN3vcg12SimpleVolumeINS_11SimpleVoxelIfEEED2Ev.exit2026 @@ -24842,17 +24842,17 @@ _ZNK19MeshLabPluginLogger3logIJRifEEEvPKcDpOT_.exit1684: ; preds = %_ZN11GLLogSt br label %_ZN7QStringD2Ev.exit1034 2736: ; preds = %2647, %2628, %2626, %2624 - %.merged989 = phi { ptr, i32 } [ %.pn818.pn2292, %2647 ], [ %2629, %2628 ], [ %2625, %2624 ], [ %2627, %2626 ] + %.merged930 = phi { ptr, i32 } [ %.pn818.pn2292, %2647 ], [ %2629, %2628 ], [ %2625, %2624 ], [ %2627, %2626 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %211) #28 br label %2737 2737: ; preds = %2585, %2587, %2736, %2594, %.body, %2582 - %.merged988 = phi { ptr, i32 } [ %.merged989, %2736 ], [ %2583, %2582 ], [ %.pn8162286, %2587 ], [ %2586, %2585 ], [ %2595, %2594 ], [ %2548, %.body ] + %.merged929 = phi { ptr, i32 } [ %.merged930, %2736 ], [ %2583, %2582 ], [ %.pn8162286, %2587 ], [ %2586, %2585 ], [ %2595, %2594 ], [ %2548, %.body ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %205) #28 br label %2738 2738: ; preds = %2737, %2581, %2575 - %.merged987 = phi { ptr, i32 } [ %.merged988, %2737 ], [ %.pn814, %2581 ], [ %2576, %2575 ] + %.merged928 = phi { ptr, i32 } [ %.merged929, %2737 ], [ %.pn814, %2581 ], [ %2576, %2575 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %202) #28 br label %_ZN3vcg12SimpleVolumeINS_11SimpleVoxelIfEEED2Ev.exit2026 @@ -25316,17 +25316,17 @@ _ZNK19MeshLabPluginLogger3logIJRifEEEvPKcDpOT_.exit1728: ; preds = %_ZN11GLLogSt br label %_ZN7QStringD2Ev.exit1034 2890: ; preds = %2869, %2850, %2848, %2846 - %.merged934 = phi { ptr, i32 } [ %.pn809.pn2307, %2869 ], [ %2851, %2850 ], [ %2847, %2846 ], [ %2849, %2848 ] + %.merged955 = phi { ptr, i32 } [ %.pn809.pn2307, %2869 ], [ %2851, %2850 ], [ %2847, %2846 ], [ %2849, %2848 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %225) #28 br label %2891 2891: ; preds = %2808, %2810, %2890, %2816, %.body1711, %2805 - %.merged933 = phi { ptr, i32 } [ %.merged934, %2890 ], [ %2806, %2805 ], [ %.pn8072301, %2810 ], [ %2809, %2808 ], [ %2817, %2816 ], [ %2771, %.body1711 ] + %.merged954 = phi { ptr, i32 } [ %.merged955, %2890 ], [ %2806, %2805 ], [ %.pn8072301, %2810 ], [ %2809, %2808 ], [ %2817, %2816 ], [ %2771, %.body1711 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %219) #28 br label %2892 2892: ; preds = %2891, %2804, %2798 - %.merged932 = phi { ptr, i32 } [ %.merged933, %2891 ], [ %.pn805, %2804 ], [ %2799, %2798 ] + %.merged953 = phi { ptr, i32 } [ %.merged954, %2891 ], [ %.pn805, %2804 ], [ %2799, %2798 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %216) #28 br label %_ZN3vcg12SimpleVolumeINS_11SimpleVoxelIfEEED2Ev.exit2026 @@ -26042,37 +26042,37 @@ _ZNK19MeshLabPluginLogger3logIJRifEEEvPKcDpOT_.exit1805: ; preds = %_ZN11GLLogSt br label %_ZN7QStringD2Ev.exit1034 3120: ; preds = %3099, %3080, %3078, %3076, %3074, %3072 - %.merged986 = phi { ptr, i32 } [ %.pn800.pn2322, %3099 ], [ %3081, %3080 ], [ %3073, %3072 ], [ %3079, %3078 ], [ %3077, %3076 ], [ %3075, %3074 ] + %.merged977 = phi { ptr, i32 } [ %.pn800.pn2322, %3099 ], [ %3081, %3080 ], [ %3073, %3072 ], [ %3079, %3078 ], [ %3077, %3076 ], [ %3075, %3074 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %247) #28 br label %3121 3121: ; preds = %3120, %3070 - %.merged985 = phi { ptr, i32 } [ %.merged986, %3120 ], [ %3071, %3070 ] + %.merged976 = phi { ptr, i32 } [ %.merged977, %3120 ], [ %3071, %3070 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %246) #28 br label %3122 3122: ; preds = %3121, %3068 - %.merged984 = phi { ptr, i32 } [ %.merged985, %3121 ], [ %3069, %3068 ] + %.merged975 = phi { ptr, i32 } [ %.merged976, %3121 ], [ %3069, %3068 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %245) #28 br label %3123 3123: ; preds = %3000, %3002, %3122, %3008, %.body1783, %2997 - %.merged983 = phi { ptr, i32 } [ %.merged984, %3122 ], [ %2998, %2997 ], [ %.pn7982316, %3002 ], [ %3001, %3000 ], [ %3009, %3008 ], [ %2949, %.body1783 ] + %.merged974 = phi { ptr, i32 } [ %.merged975, %3122 ], [ %2998, %2997 ], [ %.pn7982316, %3002 ], [ %3001, %3000 ], [ %3009, %3008 ], [ %2949, %.body1783 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %239) #28 br label %3124 3124: ; preds = %3123, %2996, %2990 - %.merged982 = phi { ptr, i32 } [ %.merged983, %3123 ], [ %.pn796, %2996 ], [ %2991, %2990 ] + %.merged973 = phi { ptr, i32 } [ %.merged974, %3123 ], [ %.pn796, %2996 ], [ %2991, %2990 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %236) #28 br label %3125 3125: ; preds = %3124, %2989, %2983 - %.merged981 = phi { ptr, i32 } [ %.merged982, %3124 ], [ %.pn794, %2989 ], [ %2984, %2983 ] + %.merged972 = phi { ptr, i32 } [ %.merged973, %3124 ], [ %.pn794, %2989 ], [ %2984, %2983 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %233) #28 br label %3126 3126: ; preds = %3125, %2982, %2976 - %.merged980 = phi { ptr, i32 } [ %.merged981, %3125 ], [ %.pn792, %2982 ], [ %2977, %2976 ] + %.merged971 = phi { ptr, i32 } [ %.merged972, %3125 ], [ %.pn792, %2982 ], [ %2977, %2976 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %230) #28 br label %_ZN3vcg12SimpleVolumeINS_11SimpleVoxelIfEEED2Ev.exit2026 @@ -26788,37 +26788,37 @@ _ZNK19MeshLabPluginLogger3logIJRifEEEvPKcDpOT_.exit1882: ; preds = %_ZN11GLLogSt br label %_ZN7QStringD2Ev.exit1034 3354: ; preds = %3333, %3314, %3312, %3310, %3308, %3306 - %.merged960 = phi { ptr, i32 } [ %.pn787.pn2337, %3333 ], [ %3315, %3314 ], [ %3307, %3306 ], [ %3313, %3312 ], [ %3311, %3310 ], [ %3309, %3308 ] + %.merged952 = phi { ptr, i32 } [ %.pn787.pn2337, %3333 ], [ %3315, %3314 ], [ %3307, %3306 ], [ %3313, %3312 ], [ %3311, %3310 ], [ %3309, %3308 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %271) #28 br label %3355 3355: ; preds = %3354, %3304 - %.merged959 = phi { ptr, i32 } [ %.merged960, %3354 ], [ %3305, %3304 ] + %.merged951 = phi { ptr, i32 } [ %.merged952, %3354 ], [ %3305, %3304 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %270) #28 br label %3356 3356: ; preds = %3355, %3302 - %.merged958 = phi { ptr, i32 } [ %.merged959, %3355 ], [ %3303, %3302 ] + %.merged950 = phi { ptr, i32 } [ %.merged951, %3355 ], [ %3303, %3302 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %269) #28 br label %3357 3357: ; preds = %3234, %3236, %3356, %3242, %.body1860, %3231 - %.merged957 = phi { ptr, i32 } [ %.merged958, %3356 ], [ %3232, %3231 ], [ %.pn7852331, %3236 ], [ %3235, %3234 ], [ %3243, %3242 ], [ %3183, %.body1860 ] + %.merged949 = phi { ptr, i32 } [ %.merged950, %3356 ], [ %3232, %3231 ], [ %.pn7852331, %3236 ], [ %3235, %3234 ], [ %3243, %3242 ], [ %3183, %.body1860 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %263) #28 br label %3358 3358: ; preds = %3357, %3230, %3224 - %.merged956 = phi { ptr, i32 } [ %.merged957, %3357 ], [ %.pn783, %3230 ], [ %3225, %3224 ] + %.merged948 = phi { ptr, i32 } [ %.merged949, %3357 ], [ %.pn783, %3230 ], [ %3225, %3224 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %260) #28 br label %3359 3359: ; preds = %3358, %3223, %3217 - %.merged955 = phi { ptr, i32 } [ %.merged956, %3358 ], [ %.pn781, %3223 ], [ %3218, %3217 ] + %.merged947 = phi { ptr, i32 } [ %.merged948, %3358 ], [ %.pn781, %3223 ], [ %3218, %3217 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %257) #28 br label %3360 3360: ; preds = %3359, %3216, %3210 - %.merged954 = phi { ptr, i32 } [ %.merged955, %3359 ], [ %.pn779, %3216 ], [ %3211, %3210 ] + %.merged946 = phi { ptr, i32 } [ %.merged947, %3359 ], [ %.pn779, %3216 ], [ %3211, %3210 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %254) #28 br label %_ZN3vcg12SimpleVolumeINS_11SimpleVoxelIfEEED2Ev.exit2026 @@ -28202,17 +28202,17 @@ _ZN3vcg3tri13TrivialWalkerI6CMeshONS_12SimpleVolumeINS_11SimpleVoxelIfEEEEED2Ev. br label %_ZN7QStringD2Ev.exit1034 3834: ; preds = %3761, %.split.us, %3745, %3743, %3741 - %.merged979 = phi { ptr, i32 } [ %.pn772.pn2351, %3761 ], [ %3690, %.split.us ], [ %3742, %3741 ], [ %3746, %3745 ], [ %3744, %3743 ] + %.merged970 = phi { ptr, i32 } [ %.pn772.pn2351, %3761 ], [ %3690, %.split.us ], [ %3742, %3741 ], [ %3746, %3745 ], [ %3744, %3743 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %306) #28 br label %3835 3835: ; preds = %3834, %3740, %3735, %3727, %3719, %3710 - %.merged978 = phi { ptr, i32 } [ %.merged979, %3834 ], [ %.pn770, %3740 ], [ %3711, %3710 ], [ %.pn767.pn, %3735 ], [ %.pn764.pn, %3727 ], [ %.pn761.pn, %3719 ] + %.merged969 = phi { ptr, i32 } [ %.merged970, %3834 ], [ %.pn770, %3740 ], [ %3711, %3710 ], [ %.pn767.pn, %3735 ], [ %.pn764.pn, %3727 ], [ %.pn761.pn, %3719 ] call void @_ZN2mu10ParserBaseD2Ev(ptr noundef nonnull align 8 dereferenceable(596) %293) #28 br label %3836 3836: ; preds = %3694, %3696, %3698, %3700, %3702, %3704, %3706, %3708, %3835 - %.merged976 = phi { ptr, i32 } [ %.merged978, %3835 ], [ %3695, %3694 ], [ %3709, %3708 ], [ %3707, %3706 ], [ %3705, %3704 ], [ %3703, %3702 ], [ %3701, %3700 ], [ %3699, %3698 ], [ %3697, %3696 ] + %.merged967 = phi { ptr, i32 } [ %.merged969, %3835 ], [ %3695, %3694 ], [ %3709, %3708 ], [ %3707, %3706 ], [ %3705, %3704 ], [ %3703, %3702 ], [ %3701, %3700 ], [ %3699, %3698 ], [ %3697, %3696 ] call void @_ZN3vcg3tri13TrivialWalkerI6CMeshONS_12SimpleVolumeINS_11SimpleVoxelIfEEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(172) %285) #28 %3837 = load ptr, ptr %3487, align 8 %.not.i.i.i.i2025 = icmp eq ptr %3837, null @@ -28739,7 +28739,7 @@ _ZN7QStringD2Ev.exit1034: ; preds = %_ZN3vcg3tri14Update ret void _ZN3vcg12SimpleVolumeINS_11SimpleVoxelIfEEED2Ev.exit2026: ; preds = %3838, %3836, %3407, %3409, %3967, %3909, %3444, %3404, %3402, %3400, %3398, %3360, %3209, %3126, %2975, %2892, %2797, %2738, %2574, %2515, %2331, %2291, %2083, %2007, %1843, %1779, %1554, %1454, %1327, %1271, %1081, %1037, %621, %562, %536, %484, %373 - %.merged = phi { ptr, i32 } [ %.pn752.pn.pn.pn.pn.pn.pn.pn, %3967 ], [ %.pn741, %3909 ], [ %.pn7752345, %3409 ], [ %3408, %3407 ], [ %3445, %3444 ], [ %3405, %3404 ], [ %3403, %3402 ], [ %3401, %3400 ], [ %3399, %3398 ], [ %.merged954, %3360 ], [ %.pn777, %3209 ], [ %.merged980, %3126 ], [ %.pn790, %2975 ], [ %.merged932, %2892 ], [ %.pn803, %2797 ], [ %.merged987, %2738 ], [ %.pn812, %2574 ], [ %.merged961, %2515 ], [ %.pn821, %2331 ], [ %.merged935, %2291 ], [ %.pn827, %2083 ], [ %.merged948, %2007 ], [ %.pn845, %1843 ], [ %.merged963, %1779 ], [ %.pn859, %1554 ], [ %.merged928, %1454 ], [ %.pn876, %1327 ], [ %.merged946, %1271 ], [ %.pn885, %1081 ], [ %.merged922, %1037 ], [ %.merged920, %621 ], [ %563, %562 ], [ %.merged943, %536 ], [ %.pn915, %484 ], [ %.pn, %373 ], [ %.merged976, %3836 ], [ %.merged976, %3838 ] + %.merged = phi { ptr, i32 } [ %.pn752.pn.pn.pn.pn.pn.pn.pn, %3967 ], [ %.pn741, %3909 ], [ %.pn7752345, %3409 ], [ %3408, %3407 ], [ %3445, %3444 ], [ %3405, %3404 ], [ %3403, %3402 ], [ %3401, %3400 ], [ %3399, %3398 ], [ %.merged946, %3360 ], [ %.pn777, %3209 ], [ %.merged971, %3126 ], [ %.pn790, %2975 ], [ %.merged953, %2892 ], [ %.pn803, %2797 ], [ %.merged928, %2738 ], [ %.pn812, %2574 ], [ %.merged982, %2515 ], [ %.pn821, %2331 ], [ %.merged958, %2291 ], [ %.pn827, %2083 ], [ %.merged984, %2007 ], [ %.pn845, %1843 ], [ %.merged931, %1779 ], [ %.pn859, %1554 ], [ %.merged978, %1454 ], [ %.pn876, %1327 ], [ %.merged956, %1271 ], [ %.pn885, %1081 ], [ %.merged920, %1037 ], [ %.merged926, %621 ], [ %563, %562 ], [ %.merged943, %536 ], [ %.pn915, %484 ], [ %.pn, %373 ], [ %.merged967, %3836 ], [ %.merged967, %3838 ] resume { ptr, i32 } %.merged 3973: ; preds = %3761, %3333, %3099, %2869, %2647, %2406, %2246, %2218, %2200, %2182, %1973, %1945, %1927, %1747, %1430, %1150, %877, %861, %836, %818, %592, %510 diff --git a/bench/minetest/optimized/c_content.cpp.ll b/bench/minetest/optimized/c_content.cpp.ll index fbd37a0ef18..ecd205f4d58 100644 --- a/bench/minetest/optimized/c_content.cpp.ll +++ b/bench/minetest/optimized/c_content.cpp.ll @@ -7170,7 +7170,7 @@ if.then.i.i7.i: ; preds = %lpad2.i br label %common.resume common.resume: ; preds = %ehcleanup34, %ehcleanup141, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i405, %ehcleanup150, %cleanup.action, %if.then.i.i8.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i216, %if.then.i.i7.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i - %common.resume.op = phi { ptr, i32 } [ %1, %if.then.i.i7.i ], [ %1, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i ], [ %14, %if.then.i.i8.i ], [ %14, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i216 ], [ %.merged, %ehcleanup34 ], [ %.pn198.pn.pn.pn.pn.pn.pn.pn.pn, %ehcleanup141 ], [ %.merged23, %cleanup.action ], [ %104, %ehcleanup150 ], [ %104, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i405 ] + %common.resume.op = phi { ptr, i32 } [ %1, %if.then.i.i7.i ], [ %1, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i ], [ %14, %if.then.i.i8.i ], [ %14, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i216 ], [ %.merged21, %ehcleanup34 ], [ %.pn198.pn.pn.pn.pn.pn.pn.pn.pn, %ehcleanup141 ], [ %.merged, %cleanup.action ], [ %104, %ehcleanup150 ], [ %104, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i405 ] resume { ptr, i32 } %common.resume.op if.end5: ; preds = %if.end @@ -7443,7 +7443,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %if.th br label %return ehcleanup32: ; preds = %lpad19, %lpad29, %catch.dispatch - %.merged21 = phi { ptr, i32 } [ %.pn208, %catch.dispatch ], [ %37, %lpad29 ], [ %36, %lpad19 ] + %.merged22 = phi { ptr, i32 } [ %.pn208, %catch.dispatch ], [ %37, %lpad29 ], [ %36, %lpad19 ] %40 = load ptr, ptr %itemstring, align 8, !tbaa !11 %cmp.i.i.i242 = icmp eq ptr %40, %17 br i1 %cmp.i.i.i242, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i244, label %if.then.i.i243 @@ -7459,7 +7459,7 @@ if.then.i.i243: ; preds = %ehcleanup32 br label %ehcleanup34 ehcleanup34: ; preds = %if.then.i.i243, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i244, %lpad - %.merged = phi { ptr, i32 } [ %27, %lpad ], [ %.merged21, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i244 ], [ %.merged21, %if.then.i.i243 ] + %.merged21 = phi { ptr, i32 } [ %27, %lpad ], [ %.merged22, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i244 ], [ %.merged22, %if.then.i.i243 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %itemstring) #31 br label %common.resume @@ -8055,7 +8055,7 @@ ehcleanup150: ; preds = %lpad147 br i1 %cleanup.isactive.0, label %cleanup.action, label %common.resume cleanup.action: ; preds = %ehcleanup150, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i405, %ehcleanup150.thread - %.merged23 = phi { ptr, i32 } [ %103, %ehcleanup150.thread ], [ %104, %ehcleanup150 ], [ %104, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i405 ] + %.merged = phi { ptr, i32 } [ %103, %ehcleanup150.thread ], [ %104, %ehcleanup150 ], [ %104, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i405 ] call void @__cxa_free_exception(ptr %exception) #31 br label %common.resume diff --git a/bench/mitsuba3/optimized/ply.cpp.ll b/bench/mitsuba3/optimized/ply.cpp.ll index f2245de3024..8862d98139c 100644 --- a/bench/mitsuba3/optimized/ply.cpp.ll +++ b/bench/mitsuba3/optimized/ply.cpp.ll @@ -2468,7 +2468,7 @@ _ZNSt3__110unique_ptrIA_fNS_14default_deleteIS1_EEED2B8ne190000Ev.exit759: ; pre .loopexit.split-lp1151: ; preds = %.loopexit1150, %.loopexit.split-lp1151.loopexit.split-lp, %.loopexit.split-lp1151.loopexit, %_ZNSt3__110unique_ptrIA_fNS_14default_deleteIS1_EEED2B8ne190000Ev.exit759 %.sroa.01033.1 = phi ptr [ %.sroa.01033.0, %_ZNSt3__110unique_ptrIA_fNS_14default_deleteIS1_EEED2B8ne190000Ev.exit759 ], [ %.sroa.01033.0, %.loopexit1150 ], [ %.sroa.01033.2.ph.ph, %.loopexit.split-lp1151.loopexit ], [ %.sroa.01033.0, %.loopexit.split-lp1151.loopexit.split-lp ] - %.merged607 = phi { ptr, i32 } [ %.pn593.pn.pn.pn, %_ZNSt3__110unique_ptrIA_fNS_14default_deleteIS1_EEED2B8ne190000Ev.exit759 ], [ %lpad.loopexit1152, %.loopexit1150 ], [ %lpad.loopexit1196, %.loopexit.split-lp1151.loopexit ], [ %lpad.loopexit.split-lp1197, %.loopexit.split-lp1151.loopexit.split-lp ] + %.merged604 = phi { ptr, i32 } [ %.pn593.pn.pn.pn, %_ZNSt3__110unique_ptrIA_fNS_14default_deleteIS1_EEED2B8ne190000Ev.exit759 ], [ %lpad.loopexit1152, %.loopexit1150 ], [ %lpad.loopexit1196, %.loopexit.split-lp1151.loopexit ], [ %lpad.loopexit.split-lp1197, %.loopexit.split-lp1151.loopexit.split-lp ] %.not.i760 = icmp eq ptr %.sroa.01033.1, null br i1 %.not.i760, label %_ZN7mitsuba3refINS_15StructConverterEED2Ev.exit761, label %746 @@ -2477,7 +2477,7 @@ _ZNSt3__110unique_ptrIA_fNS_14default_deleteIS1_EEED2B8ne190000Ev.exit759: ; pre br label %_ZN7mitsuba3refINS_15StructConverterEED2Ev.exit761 _ZN7mitsuba3refINS_15StructConverterEED2Ev.exit761: ; preds = %483, %540, %746, %.loopexit.split-lp1151, %_ZN7mitsuba3refINS_6StructEED2Ev.exit705, %471 - %.merged606 = phi { ptr, i32 } [ %472, %471 ], [ %474, %_ZN7mitsuba3refINS_6StructEED2Ev.exit705 ], [ %.merged607, %.loopexit.split-lp1151 ], [ %.merged607, %746 ], [ %541, %540 ], [ %.pn588, %483 ] + %.merged603 = phi { ptr, i32 } [ %472, %471 ], [ %474, %_ZN7mitsuba3refINS_6StructEED2Ev.exit705 ], [ %.merged604, %.loopexit.split-lp1151 ], [ %.merged604, %746 ], [ %541, %540 ], [ %.pn588, %483 ] %747 = load ptr, ptr %52, align 8 %.not.i.i762 = icmp eq ptr %747, null br i1 %.not.i.i762, label %_ZNSt3__16vectorIN7mitsuba7PLYMeshIfN5drjit6MatrixINS1_8SpectrumIfLm4EEELm4EEEE22PLYAttributeDescriptorENS_9allocatorIS9_EEED2B8ne190000Ev.exit772, label %748 @@ -3248,7 +3248,7 @@ _ZNSt3__110unique_ptrIA_jNS_14default_deleteIS1_EEED2B8ne190000Ev.exit878: ; pre 991: ; preds = %.loopexit1177, %.loopexit.split-lp1178, %_ZNSt3__110unique_ptrIA_jNS_14default_deleteIS1_EEED2B8ne190000Ev.exit878 %.sroa.0984.1 = phi ptr [ %.sroa.0984.0, %_ZNSt3__110unique_ptrIA_jNS_14default_deleteIS1_EEED2B8ne190000Ev.exit878 ], [ %.sroa.0984.0, %.loopexit1177 ], [ %.sroa.0984.2.ph, %.loopexit.split-lp1178 ] - %.merged605 = phi { ptr, i32 } [ %.pn571.pn, %_ZNSt3__110unique_ptrIA_jNS_14default_deleteIS1_EEED2B8ne190000Ev.exit878 ], [ %lpad.loopexit1179, %.loopexit1177 ], [ %lpad.loopexit.split-lp1180, %.loopexit.split-lp1178 ] + %.merged607 = phi { ptr, i32 } [ %.pn571.pn, %_ZNSt3__110unique_ptrIA_jNS_14default_deleteIS1_EEED2B8ne190000Ev.exit878 ], [ %lpad.loopexit1179, %.loopexit1177 ], [ %lpad.loopexit.split-lp1180, %.loopexit.split-lp1178 ] %.not.i879 = icmp eq ptr %.sroa.0984.1, null br i1 %.not.i879, label %_ZN7mitsuba3refINS_15StructConverterEED2Ev.exit880, label %992 @@ -3257,13 +3257,13 @@ _ZNSt3__110unique_ptrIA_jNS_14default_deleteIS1_EEED2B8ne190000Ev.exit878: ; pre br label %_ZN7mitsuba3refINS_15StructConverterEED2Ev.exit880 _ZN7mitsuba3refINS_15StructConverterEED2Ev.exit880: ; preds = %850, %887, %992, %991, %_ZN7mitsuba3refINS_6StructEED2Ev.exit831, %838 - %.merged604 = phi { ptr, i32 } [ %839, %838 ], [ %841, %_ZN7mitsuba3refINS_6StructEED2Ev.exit831 ], [ %.merged605, %991 ], [ %.merged605, %992 ], [ %888, %887 ], [ %.pn567, %850 ] + %.merged606 = phi { ptr, i32 } [ %839, %838 ], [ %841, %_ZN7mitsuba3refINS_6StructEED2Ev.exit831 ], [ %.merged607, %991 ], [ %.merged607, %992 ], [ %888, %887 ], [ %.pn567, %850 ] call void @_ZNSt3__16vectorIN7mitsuba7PLYMeshIfN5drjit6MatrixINS1_8SpectrumIfLm4EEELm4EEEE22PLYAttributeDescriptorENS_9allocatorIS9_EEED2B8ne190000Ev(ptr noundef nonnull align 8 dereferenceable(24) %63) #24 call void @_ZNSt3__113unordered_setINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS_4hashIS6_EENS_8equal_toIS6_EENS4_IS6_EEED2B8ne190000Ev(ptr noundef nonnull align 8 dereferenceable(40) %61) #24 br label %.body793 .body793: ; preds = %830, %834, %.loopexit1182, %.loopexit.split-lp1183.loopexit.split-lp, %.loopexit.split-lp1183.loopexit, %.thread1122, %789, %_ZN7mitsuba3refINS_15StructConverterEED2Ev.exit880, %798, %782, %774 - %.merged603 = phi { ptr, i32 } [ %799, %798 ], [ %.merged604, %_ZN7mitsuba3refINS_15StructConverterEED2Ev.exit880 ], [ %783, %782 ], [ %775, %774 ], [ %790, %789 ], [ %801, %.thread1122 ], [ %lpad.loopexit1184, %.loopexit1182 ], [ %lpad.loopexit1190, %.loopexit.split-lp1183.loopexit ], [ %lpad.loopexit.split-lp1191, %.loopexit.split-lp1183.loopexit.split-lp ], [ %803, %834 ], [ %829, %830 ] + %.merged605 = phi { ptr, i32 } [ %799, %798 ], [ %.merged606, %_ZN7mitsuba3refINS_15StructConverterEED2Ev.exit880 ], [ %783, %782 ], [ %775, %774 ], [ %790, %789 ], [ %801, %.thread1122 ], [ %lpad.loopexit1184, %.loopexit1182 ], [ %lpad.loopexit1190, %.loopexit.split-lp1183.loopexit ], [ %lpad.loopexit.split-lp1191, %.loopexit.split-lp1183.loopexit.split-lp ], [ %803, %834 ], [ %829, %830 ] call void @_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED1Ev(ptr noundef nonnull align 8 dereferenceable(24) %56) #24 br label %_ZN7mitsuba3refINS_6StructEED2Ev.exit922 @@ -3644,7 +3644,7 @@ _ZN7mitsuba10filesystem4pathD2Ev.exit920: ; preds = %_ZN7mitsuba3refINS_ ret void _ZN7mitsuba3refINS_6StructEED2Ev.exit922: ; preds = %463, %467, %.loopexit1155, %.loopexit.split-lp1156.loopexit.split-lp.loopexit, %.loopexit.split-lp1156.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp1156.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp1156.loopexit, %760, %_ZNSt3__112__hash_tableINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS_4hashIS6_EENS_8equal_toIS6_EENS4_IS6_EEE17__deallocate_nodeEPNS_16__hash_node_baseIPNS_11__hash_nodeIS6_PvEEEE.exit.i.i777, %.thread1113, %1041, %1005, %1113, %1110, %.body793, %432, %431, %411, %409, %408, %385, %383, %382, %360, %346, %324, %315 - %.merged602 = phi { ptr, i32 } [ %316, %315 ], [ %433, %432 ], [ %.pn585, %431 ], [ %386, %385 ], [ %384, %383 ], [ %412, %411 ], [ %410, %409 ], [ %.pn583, %408 ], [ %.pn581, %382 ], [ %.pn579, %360 ], [ %325, %324 ], [ %.pn576.pn, %346 ], [ %.merged603, %.body793 ], [ %1114, %1113 ], [ %.pn563, %1110 ], [ %1006, %1005 ], [ %1042, %1041 ], [ %434, %.thread1113 ], [ %.merged606, %_ZNSt3__112__hash_tableINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS_4hashIS6_EENS_8equal_toIS6_EENS4_IS6_EEE17__deallocate_nodeEPNS_16__hash_node_baseIPNS_11__hash_nodeIS6_PvEEEE.exit.i.i777 ], [ %.merged606, %760 ], [ %lpad.loopexit1157, %.loopexit1155 ], [ %lpad.loopexit1161, %.loopexit.split-lp1156.loopexit ], [ %lpad.loopexit1165, %.loopexit.split-lp1156.loopexit.split-lp.loopexit ], [ %lpad.loopexit1187, %.loopexit.split-lp1156.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp1188, %.loopexit.split-lp1156.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ], [ %436, %467 ], [ %462, %463 ] + %.merged602 = phi { ptr, i32 } [ %316, %315 ], [ %433, %432 ], [ %.pn585, %431 ], [ %386, %385 ], [ %384, %383 ], [ %412, %411 ], [ %410, %409 ], [ %.pn583, %408 ], [ %.pn581, %382 ], [ %.pn579, %360 ], [ %325, %324 ], [ %.pn576.pn, %346 ], [ %.merged605, %.body793 ], [ %1114, %1113 ], [ %.pn563, %1110 ], [ %1006, %1005 ], [ %1042, %1041 ], [ %434, %.thread1113 ], [ %.merged603, %_ZNSt3__112__hash_tableINS_12basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEENS_4hashIS6_EENS_8equal_toIS6_EENS4_IS6_EEE17__deallocate_nodeEPNS_16__hash_node_baseIPNS_11__hash_nodeIS6_PvEEEE.exit.i.i777 ], [ %.merged603, %760 ], [ %lpad.loopexit1157, %.loopexit1155 ], [ %lpad.loopexit1161, %.loopexit.split-lp1156.loopexit ], [ %lpad.loopexit1165, %.loopexit.split-lp1156.loopexit.split-lp.loopexit ], [ %lpad.loopexit1187, %.loopexit.split-lp1156.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp1188, %.loopexit.split-lp1156.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ], [ %436, %467 ], [ %462, %463 ] call void @_ZNK7mitsuba6Object7dec_refEb(ptr noundef nonnull align 8 dereferenceable(12) %232, i1 noundef zeroext true) #24 br label %_ZN7mitsuba3refINS_6StructEED2Ev.exit924 diff --git a/bench/nix/optimized/nix-build.ll b/bench/nix/optimized/nix-build.ll index d2a97cbd81d..fe24b3779dd 100644 --- a/bench/nix/optimized/nix-build.ll +++ b/bench/nix/optimized/nix-build.ll @@ -7226,7 +7226,7 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i10 br label %.loopexit1864 .loopexit1864: ; preds = %1487, %1731, %1562 - %.merged831 = phi { ptr, i32 } [ %.pn647.pn, %1731 ], [ %1563, %1562 ], [ %.pn640, %1487 ] + %.merged833 = phi { ptr, i32 } [ %.pn647.pn, %1731 ], [ %1563, %1562 ], [ %.pn640, %1487 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #35 br label %1737 @@ -7257,7 +7257,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit1062: ; preds = %_ br i1 %1736, label %.loopexit1860, label %1351 1737: ; preds = %.loopexit1864, %1481, %1438 - %.merged830 = phi { ptr, i32 } [ %.pn650, %1438 ], [ %.merged831, %.loopexit1864 ], [ %1482, %1481 ] + %.merged832 = phi { ptr, i32 } [ %.pn650, %1438 ], [ %.merged833, %.loopexit1864 ], [ %1482, %1481 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %118) #35 br label %_ZNSt8functionIFbRKN3nix5ValueEEED2Ev.exit1085 @@ -11380,13 +11380,13 @@ _ZNSt6vectorIPcSaIS0_EED2Ev.exit1303: ; preds = %3077, %_ZNSt6vector unreachable _ZNSt8functionIFvN3nix3refINS0_17SingleDerivedPathEEERKNS0_14DerivedPathMapISt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessISB_ESaISB_EEE9ChildNodeEEED2Ev.exit1305: ; preds = %3085, %.body1152, %2178, %2176, %_ZNSt8optionalIN3nix11PackageInfoEED2Ev.exit1143 - %.merged833 = phi { ptr, i32 } [ %2177, %2176 ], [ %.pn702, %2178 ], [ %.pn698.pn.pn, %_ZNSt8optionalIN3nix11PackageInfoEED2Ev.exit1143 ], [ %.pn807.pn, %.body1152 ], [ %.pn807.pn, %3085 ] + %.merged831 = phi { ptr, i32 } [ %2177, %2176 ], [ %.pn702, %2178 ], [ %.pn698.pn.pn, %_ZNSt8optionalIN3nix11PackageInfoEED2Ev.exit1143 ], [ %.pn807.pn, %.body1152 ], [ %.pn807.pn, %3085 ] call void @_ZNSt8optionalIN3nix9StorePathEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %151) #35 call void @_ZNSt8optionalINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %148) #35 br label %3090 3090: ; preds = %_ZNSt8functionIFvN3nix3refINS0_17SingleDerivedPathEEERKNS0_14DerivedPathMapISt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessISB_ESaISB_EEE9ChildNodeEEED2Ev.exit1305, %1949 - %.merged832 = phi { ptr, i32 } [ %.merged833, %_ZNSt8functionIFvN3nix3refINS0_17SingleDerivedPathEEERKNS0_14DerivedPathMapISt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessISB_ESaISB_EEE9ChildNodeEEED2Ev.exit1305 ], [ %.pn684, %1949 ] + %.merged830 = phi { ptr, i32 } [ %.merged831, %_ZNSt8functionIFvN3nix3refINS0_17SingleDerivedPathEEERKNS0_14DerivedPathMapISt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessISB_ESaISB_EEE9ChildNodeEEED2Ev.exit1305 ], [ %.pn684, %1949 ] call void @_ZNSt3setIN3nix12RealisedPathESt4lessIS1_ESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %147) #35 call void @_ZNSt6vectorIN3nix11DerivedPathESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %146) #35 call void @_ZN3nix10DerivationD2Ev(ptr noundef nonnull align 8 dereferenceable(320) %144) #35 @@ -13789,7 +13789,7 @@ _ZNSt7__cxx114listINS_12basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.exit _ZNSt8functionIFbRKN3nix5ValueEEED2Ev.exit1085: ; preds = %.loopexit1853, %.loopexit.split-lp1854.loopexit.split-lp, %.loopexit.split-lp1854.loopexit, %1825, %1823, %.loopexit1858, %1844, %1846, %3728, %3090, %1943, %1737 %.sroa.01653.2 = phi ptr [ %.sroa.01653.1, %3090 ], [ %.sroa.01653.1, %1943 ], [ %.sroa.01653.1, %1846 ], [ %.sroa.01653.1, %1844 ], [ %.sroa.01653.1, %3728 ], [ %.sroa.01653.1, %.loopexit1858 ], [ %.sroa.01653.32054, %1737 ], [ %.sroa.01653.1, %1823 ], [ %.sroa.01653.1, %1825 ], [ %.sroa.01653.1, %.loopexit1853 ], [ %.sroa.01653.32054, %.loopexit.split-lp1854.loopexit ], [ %.sroa.01653.0.ph.ph, %.loopexit.split-lp1854.loopexit.split-lp ] - %.merged829 = phi { ptr, i32 } [ %.merged832, %3090 ], [ %1944, %1943 ], [ %.pn8101706, %1846 ], [ %1845, %1844 ], [ %.pn677.pn.pn.pn.pn, %3728 ], [ %.pn652, %.loopexit1858 ], [ %.merged830, %1737 ], [ %.pn812.pn, %1823 ], [ %.pn812.pn, %1825 ], [ %lpad.loopexit1855, %.loopexit1853 ], [ %lpad.loopexit1861, %.loopexit.split-lp1854.loopexit ], [ %lpad.loopexit.split-lp1862, %.loopexit.split-lp1854.loopexit.split-lp ] + %.merged829 = phi { ptr, i32 } [ %.merged830, %3090 ], [ %1944, %1943 ], [ %.pn8101706, %1846 ], [ %1845, %1844 ], [ %.pn677.pn.pn.pn.pn, %3728 ], [ %.pn652, %.loopexit1858 ], [ %.merged832, %1737 ], [ %.pn812.pn, %1823 ], [ %.pn812.pn, %1825 ], [ %lpad.loopexit1855, %.loopexit1853 ], [ %lpad.loopexit1861, %.loopexit.split-lp1854.loopexit ], [ %lpad.loopexit.split-lp1862, %.loopexit.split-lp1854.loopexit.split-lp ] %.not.i.i.i1576 = icmp eq ptr %.sroa.01653.2, null br i1 %.not.i.i.i1576, label %_ZNSt6vectorIPN3nix4ExprESaIS2_EED2Ev.exit1577, label %3877 diff --git a/bench/ocio/optimized/OpOptimizers.cpp.ll b/bench/ocio/optimized/OpOptimizers.cpp.ll index 7288b5cceee..742a59fdfc5 100644 --- a/bench/ocio/optimized/OpOptimizers.cpp.ll +++ b/bench/ocio/optimized/OpOptimizers.cpp.ll @@ -6858,12 +6858,16 @@ _ZN19OpenColorIO_v2_4dev12_GLOBAL__N_119FindSeparablePrefixERKNS_10OpRcPtrVecE.e call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %constOp.i.i) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp.i.i) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp55.i.i) + %cmp5.i = icmp eq i32 %prefixLen.0.lcssa.i.i, 0 + br i1 %cmp5.i, label %_ZN19OpenColorIO_v2_4dev12_GLOBAL__N_123OptimizeSeparablePrefixERNS_10OpRcPtrVecENS_8BitDepthE.exit, label %if.end7.i + +if.end7.i: ; preds = %_ZN19OpenColorIO_v2_4dev12_GLOBAL__N_119FindSeparablePrefixERKNS_10OpRcPtrVecE.exit.i call void @_ZN19OpenColorIO_v2_4dev10OpRcPtrVecC1Ev(ptr noundef nonnull align 8 dereferenceable(144) %prefixOps.i) %_M_refcount.i.i.i70 = getelementptr inbounds i8, ptr %ref.tmp.i, i64 8 br label %for.body.i -for.body.i: ; preds = %_ZNSt10shared_ptrIN19OpenColorIO_v2_4dev2OpEED2Ev.exit.i, %_ZN19OpenColorIO_v2_4dev12_GLOBAL__N_119FindSeparablePrefixERKNS_10OpRcPtrVecE.exit.i - %indvars.iv.i = phi i64 [ 0, %_ZN19OpenColorIO_v2_4dev12_GLOBAL__N_119FindSeparablePrefixERKNS_10OpRcPtrVecE.exit.i ], [ %indvars.iv.next.i, %_ZNSt10shared_ptrIN19OpenColorIO_v2_4dev2OpEED2Ev.exit.i ] +for.body.i: ; preds = %_ZNSt10shared_ptrIN19OpenColorIO_v2_4dev2OpEED2Ev.exit.i, %if.end7.i + %indvars.iv.i = phi i64 [ 0, %if.end7.i ], [ %indvars.iv.next.i, %_ZNSt10shared_ptrIN19OpenColorIO_v2_4dev2OpEED2Ev.exit.i ] %226 = load ptr, ptr %this, align 8 %add.ptr.i.i.i71 = getelementptr inbounds %"class.std::shared_ptr", ptr %226, i64 %indvars.iv.i %227 = load ptr, ptr %add.ptr.i.i.i71, align 8 @@ -7107,7 +7111,7 @@ ehcleanup51.i: ; preds = %ehcleanup.i, %lpad1 call void @_ZN19OpenColorIO_v2_4dev10OpRcPtrVecD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %prefixOps.i) #14 br label %common.resume -_ZN19OpenColorIO_v2_4dev12_GLOBAL__N_123OptimizeSeparablePrefixERNS_10OpRcPtrVecENS_8BitDepthE.exit: ; preds = %if.then10, %if.end.i, %if.end.i, %_ZN19OpenColorIO_v2_4dev12_GLOBAL__N_119FindSeparablePrefixERKNS_10OpRcPtrVecE.exit.thread.i, %_ZNSt10shared_ptrIN19OpenColorIO_v2_4dev11Lut1DOpDataEED2Ev.exit.i +_ZN19OpenColorIO_v2_4dev12_GLOBAL__N_123OptimizeSeparablePrefixERNS_10OpRcPtrVecENS_8BitDepthE.exit: ; preds = %if.then10, %if.end.i, %if.end.i, %_ZN19OpenColorIO_v2_4dev12_GLOBAL__N_119FindSeparablePrefixERKNS_10OpRcPtrVecE.exit.thread.i, %_ZN19OpenColorIO_v2_4dev12_GLOBAL__N_119FindSeparablePrefixERKNS_10OpRcPtrVecE.exit.i, %_ZNSt10shared_ptrIN19OpenColorIO_v2_4dev11Lut1DOpDataEED2Ev.exit.i call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %prefixOps.i) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp.i) call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %newDomain.i) diff --git a/bench/openblas/optimized/dlasq1.c.ll b/bench/openblas/optimized/dlasq1.c.ll index 1b03c41812d..d5349074f26 100644 --- a/bench/openblas/optimized/dlasq1.c.ll +++ b/bench/openblas/optimized/dlasq1.c.ll @@ -38,11 +38,11 @@ define void @dlasq1_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef store i32 -1, ptr %4, align 4, !tbaa !3 store i32 1, ptr %6, align 4, !tbaa !3 %18 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %6, i32 noundef 6) #5 - br label %127 + br label %130 19: ; preds = %5 switch i32 %15, label %29 [ - i32 0, label %127 + i32 0, label %130 i32 1, label %20 i32 2, label %25 ] @@ -53,7 +53,7 @@ define void @dlasq1_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %23 = fneg double %21 %24 = select i1 %22, double %23, double %21 store double %24, ptr %1, align 8, !tbaa !7 - br label %127 + br label %130 25: ; preds = %19 %26 = getelementptr inbounds i8, ptr %1, i64 8 @@ -62,7 +62,7 @@ define void @dlasq1_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef store double %27, ptr %1, align 8, !tbaa !7 %28 = load double, ptr %10, align 8, !tbaa !7 store double %28, ptr %26, align 8, !tbaa !7 - br label %127 + br label %130 29: ; preds = %19 %30 = add nsw i32 %15, -1 @@ -103,133 +103,138 @@ define void @dlasq1_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef 56: ; preds = %49 call void @dlasrt_(ptr noundef nonnull @.str.1, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %9) #5 - br label %127 + br label %130 57: ; preds = %49 - %58 = tail call i32 @llvm.smax.i32(i32 %15, i32 1) - %59 = add nuw i32 %58, 1 - %60 = zext i32 %59 to i64 - br label %61 - -61: ; preds = %61, %57 - %62 = phi i64 [ 1, %57 ], [ %68, %61 ] - %63 = phi double [ %46, %57 ], [ %67, %61 ] - %64 = getelementptr inbounds double, ptr %14, i64 %62 - %65 = load double, ptr %64, align 8, !tbaa !7 - %66 = fcmp oge double %63, %65 - %67 = select i1 %66, double %63, double %65 - %68 = add nuw nsw i64 %62, 1 - %69 = icmp eq i64 %68, %60 - br i1 %69, label %.loopexit5, label %61, !llvm.loop !12 - -.loopexit5: ; preds = %61 - store double %67, ptr %11, align 8, !tbaa !7 - %70 = tail call double @dlamch_(ptr noundef nonnull @.str.2) #5 - %71 = tail call double @dlamch_(ptr noundef nonnull @.str.3) #5 - %72 = fdiv double %70, %71 - %73 = tail call double @sqrt(double noundef %72) #5 - store double %73, ptr %8, align 8, !tbaa !7 + %58 = icmp eq i32 %15, 0 + br i1 %58, label %.loopexit5, label %59 + +59: ; preds = %57 + %60 = tail call i32 @llvm.smax.i32(i32 %15, i32 1) + %61 = add nuw i32 %60, 1 + %62 = zext i32 %61 to i64 + br label %63 + +63: ; preds = %63, %59 + %64 = phi i64 [ 1, %59 ], [ %70, %63 ] + %65 = phi double [ %46, %59 ], [ %69, %63 ] + %66 = getelementptr inbounds double, ptr %14, i64 %64 + %67 = load double, ptr %66, align 8, !tbaa !7 + %68 = fcmp oge double %65, %67 + %69 = select i1 %68, double %65, double %67 + %70 = add nuw nsw i64 %64, 1 + %71 = icmp eq i64 %70, %62 + br i1 %71, label %.loopexit5, label %63, !llvm.loop !12 + +.loopexit5: ; preds = %63, %57 + %72 = phi double [ %46, %57 ], [ %69, %63 ] + store double %72, ptr %11, align 8, !tbaa !7 + %73 = tail call double @dlamch_(ptr noundef nonnull @.str.2) #5 + %74 = tail call double @dlamch_(ptr noundef nonnull @.str.3) #5 + %75 = fdiv double %73, %74 + %76 = tail call double @sqrt(double noundef %75) #5 + store double %76, ptr %8, align 8, !tbaa !7 tail call void @dcopy_(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %3, ptr noundef nonnull @c__2) #5 - %74 = load i32, ptr %0, align 4, !tbaa !3 - %75 = add nsw i32 %74, -1 - store i32 %75, ptr %6, align 4, !tbaa !3 - %76 = getelementptr inbounds i8, ptr %3, i64 8 - call void @dcopy_(ptr noundef nonnull %6, ptr noundef %2, ptr noundef nonnull @c__1, ptr noundef nonnull %76, ptr noundef nonnull @c__2) #5 %77 = load i32, ptr %0, align 4, !tbaa !3 - %78 = shl i32 %77, 1 - %79 = add nsw i32 %78, -1 - store i32 %79, ptr %6, align 4, !tbaa !3 - store i32 %79, ptr %7, align 4, !tbaa !3 - call void @dlascl_(ptr noundef nonnull @.str.4, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %11, ptr noundef nonnull %8, ptr noundef nonnull %6, ptr noundef nonnull @c__1, ptr noundef %3, ptr noundef nonnull %7, ptr noundef nonnull %9) #5 + %78 = add nsw i32 %77, -1 + store i32 %78, ptr %6, align 4, !tbaa !3 + %79 = getelementptr inbounds i8, ptr %3, i64 8 + call void @dcopy_(ptr noundef nonnull %6, ptr noundef %2, ptr noundef nonnull @c__1, ptr noundef nonnull %79, ptr noundef nonnull @c__2) #5 %80 = load i32, ptr %0, align 4, !tbaa !3 %81 = shl i32 %80, 1 %82 = add nsw i32 %81, -1 store i32 %82, ptr %6, align 4, !tbaa !3 - %83 = icmp sgt i32 %81, 1 - br i1 %83, label %84, label %.loopexit4 - -84: ; preds = %.loopexit5 - %85 = zext nneg i32 %81 to i64 - br label %86 - -86: ; preds = %86, %84 - %87 = phi i64 [ 1, %84 ], [ %91, %86 ] - %88 = getelementptr inbounds double, ptr %12, i64 %87 - %89 = load double, ptr %88, align 8, !tbaa !7 - %90 = fmul double %89, %89 - store double %90, ptr %88, align 8, !tbaa !7 - %91 = add nuw nsw i64 %87, 1 - %92 = icmp eq i64 %91, %85 - br i1 %92, label %.loopexit4, label %86, !llvm.loop !13 - -.loopexit4: ; preds = %86, %.loopexit5 - %93 = sext i32 %81 to i64 - %94 = getelementptr inbounds double, ptr %12, i64 %93 - store double 0.000000e+00, ptr %94, align 8, !tbaa !7 + store i32 %82, ptr %7, align 4, !tbaa !3 + call void @dlascl_(ptr noundef nonnull @.str.4, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %11, ptr noundef nonnull %8, ptr noundef nonnull %6, ptr noundef nonnull @c__1, ptr noundef %3, ptr noundef nonnull %7, ptr noundef nonnull %9) #5 + %83 = load i32, ptr %0, align 4, !tbaa !3 + %84 = shl i32 %83, 1 + %85 = add nsw i32 %84, -1 + store i32 %85, ptr %6, align 4, !tbaa !3 + %86 = icmp sgt i32 %84, 1 + br i1 %86, label %87, label %.loopexit4 + +87: ; preds = %.loopexit5 + %88 = zext nneg i32 %84 to i64 + br label %89 + +89: ; preds = %89, %87 + %90 = phi i64 [ 1, %87 ], [ %94, %89 ] + %91 = getelementptr inbounds double, ptr %12, i64 %90 + %92 = load double, ptr %91, align 8, !tbaa !7 + %93 = fmul double %92, %92 + store double %93, ptr %91, align 8, !tbaa !7 + %94 = add nuw nsw i64 %90, 1 + %95 = icmp eq i64 %94, %88 + br i1 %95, label %.loopexit4, label %89, !llvm.loop !13 + +.loopexit4: ; preds = %89, %.loopexit5 + %96 = sext i32 %84 to i64 + %97 = getelementptr inbounds double, ptr %12, i64 %96 + store double 0.000000e+00, ptr %97, align 8, !tbaa !7 call void @dlasq2_(ptr noundef nonnull %0, ptr noundef %3, ptr noundef nonnull %4) #5 - %95 = load i32, ptr %4, align 4, !tbaa !3 - switch i32 %95, label %127 [ - i32 0, label %96 - i32 2, label %108 + %98 = load i32, ptr %4, align 4, !tbaa !3 + switch i32 %98, label %130 [ + i32 0, label %99 + i32 2, label %111 ] -96: ; preds = %.loopexit4 - %97 = load i32, ptr %0, align 4, !tbaa !3 - store i32 %97, ptr %6, align 4, !tbaa !3 - %98 = icmp slt i32 %97, 1 - br i1 %98, label %.loopexit, label %.preheader - -.preheader: ; preds = %96, %.preheader - %99 = phi i64 [ %104, %.preheader ], [ 1, %96 ] - %100 = getelementptr inbounds double, ptr %12, i64 %99 - %101 = load double, ptr %100, align 8, !tbaa !7 - %102 = call double @sqrt(double noundef %101) #5 - %103 = getelementptr inbounds double, ptr %14, i64 %99 - store double %102, ptr %103, align 8, !tbaa !7 - %104 = add nuw nsw i64 %99, 1 - %105 = load i32, ptr %6, align 4, !tbaa !3 - %106 = sext i32 %105 to i64 - %107 = icmp slt i64 %99, %106 - br i1 %107, label %.preheader, label %.loopexit, !llvm.loop !14 - -.loopexit: ; preds = %.preheader, %96 +99: ; preds = %.loopexit4 + %100 = load i32, ptr %0, align 4, !tbaa !3 + store i32 %100, ptr %6, align 4, !tbaa !3 + %101 = icmp slt i32 %100, 1 + br i1 %101, label %.loopexit, label %.preheader + +.preheader: ; preds = %99, %.preheader + %102 = phi i64 [ %107, %.preheader ], [ 1, %99 ] + %103 = getelementptr inbounds double, ptr %12, i64 %102 + %104 = load double, ptr %103, align 8, !tbaa !7 + %105 = call double @sqrt(double noundef %104) #5 + %106 = getelementptr inbounds double, ptr %14, i64 %102 + store double %105, ptr %106, align 8, !tbaa !7 + %107 = add nuw nsw i64 %102, 1 + %108 = load i32, ptr %6, align 4, !tbaa !3 + %109 = sext i32 %108 to i64 + %110 = icmp slt i64 %102, %109 + br i1 %110, label %.preheader, label %.loopexit, !llvm.loop !14 + +.loopexit: ; preds = %.preheader, %99 call void @dlascl_(ptr noundef nonnull @.str.4, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %8, ptr noundef nonnull %11, ptr noundef nonnull %0, ptr noundef nonnull @c__1, ptr noundef %1, ptr noundef nonnull %0, ptr noundef nonnull %9) #5 - br label %127 - -108: ; preds = %.loopexit4 - %109 = load i32, ptr %0, align 4, !tbaa !3 - store i32 %109, ptr %6, align 4, !tbaa !3 - %110 = getelementptr i8, ptr %3, i64 -16 - %111 = icmp slt i32 %109, 1 - br i1 %111, label %.loopexit3, label %.preheader2 - -.preheader2: ; preds = %108, %.preheader2 - %112 = phi i64 [ %123, %.preheader2 ], [ 1, %108 ] - %113 = shl i64 %112, 33 - %114 = ashr exact i64 %113, 29 - %115 = getelementptr i8, ptr %110, i64 %114 - %116 = load double, ptr %115, align 8, !tbaa !7 - %117 = call double @sqrt(double noundef %116) #5 - %118 = getelementptr inbounds double, ptr %14, i64 %112 - store double %117, ptr %118, align 8, !tbaa !7 - %.idx = shl i64 %112, 4 - %119 = getelementptr inbounds i8, ptr %12, i64 %.idx - %120 = load double, ptr %119, align 8, !tbaa !7 - %121 = call double @sqrt(double noundef %120) #5 - %122 = getelementptr inbounds double, ptr %13, i64 %112 - store double %121, ptr %122, align 8, !tbaa !7 - %123 = add nuw nsw i64 %112, 1 - %124 = load i32, ptr %6, align 4, !tbaa !3 - %125 = sext i32 %124 to i64 - %126 = icmp slt i64 %112, %125 - br i1 %126, label %.preheader2, label %.loopexit3, !llvm.loop !15 - -.loopexit3: ; preds = %.preheader2, %108 + br label %130 + +111: ; preds = %.loopexit4 + %112 = load i32, ptr %0, align 4, !tbaa !3 + store i32 %112, ptr %6, align 4, !tbaa !3 + %113 = getelementptr i8, ptr %3, i64 -16 + %114 = icmp slt i32 %112, 1 + br i1 %114, label %.loopexit3, label %.preheader2 + +.preheader2: ; preds = %111, %.preheader2 + %115 = phi i64 [ %126, %.preheader2 ], [ 1, %111 ] + %116 = shl i64 %115, 33 + %117 = ashr exact i64 %116, 29 + %118 = getelementptr i8, ptr %113, i64 %117 + %119 = load double, ptr %118, align 8, !tbaa !7 + %120 = call double @sqrt(double noundef %119) #5 + %121 = getelementptr inbounds double, ptr %14, i64 %115 + store double %120, ptr %121, align 8, !tbaa !7 + %.idx = shl i64 %115, 4 + %122 = getelementptr inbounds i8, ptr %12, i64 %.idx + %123 = load double, ptr %122, align 8, !tbaa !7 + %124 = call double @sqrt(double noundef %123) #5 + %125 = getelementptr inbounds double, ptr %13, i64 %115 + store double %124, ptr %125, align 8, !tbaa !7 + %126 = add nuw nsw i64 %115, 1 + %127 = load i32, ptr %6, align 4, !tbaa !3 + %128 = sext i32 %127 to i64 + %129 = icmp slt i64 %115, %128 + br i1 %129, label %.preheader2, label %.loopexit3, !llvm.loop !15 + +.loopexit3: ; preds = %.preheader2, %111 call void @dlascl_(ptr noundef nonnull @.str.4, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %8, ptr noundef nonnull %11, ptr noundef nonnull %0, ptr noundef nonnull @c__1, ptr noundef %1, ptr noundef nonnull %0, ptr noundef nonnull %9) #5 call void @dlascl_(ptr noundef nonnull @.str.4, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %8, ptr noundef nonnull %11, ptr noundef nonnull %0, ptr noundef nonnull @c__1, ptr noundef %2, ptr noundef nonnull %0, ptr noundef nonnull %9) #5 - br label %127 + br label %130 -127: ; preds = %.loopexit3, %.loopexit, %.loopexit4, %56, %25, %20, %19, %17 +130: ; preds = %.loopexit3, %.loopexit, %.loopexit4, %56, %25, %20, %19, %17 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #5 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #5 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #5 diff --git a/bench/openjdk/optimized/verifier.ll b/bench/openjdk/optimized/verifier.ll index 412eb9b69a9..809e34fb908 100644 --- a/bench/openjdk/optimized/verifier.ll +++ b/bench/openjdk/optimized/verifier.ll @@ -2266,7 +2266,7 @@ _ZN14ExceptionTableC2EPK6Method.exit.thread: ; preds = %_ZN14ExceptionTable ; Function Attrs: mustprogress nounwind uwtable define hidden void @_ZNK12ErrorContext16stackmap_detailsEP12outputStreamPK6Method(ptr nocapture nonnull readnone align 8 %0, ptr noundef %1, ptr noundef readonly %2) local_unnamed_addr #1 align 2 { %.not = icmp eq ptr %2, null - br i1 %.not, label %174, label %4 + br i1 %.not, label %175, label %4 4: ; preds = %3 %5 = getelementptr inbounds i8, ptr %2, i64 8 @@ -2274,7 +2274,7 @@ define hidden void @_ZNK12ErrorContext16stackmap_detailsEP12outputStreamPK6Metho %7 = getelementptr inbounds i8, ptr %6, i64 16 %8 = load ptr, ptr %7, align 8 %.not51 = icmp eq ptr %8, null - br i1 %.not51, label %174, label %9 + br i1 %.not51, label %175, label %9 9: ; preds = %4 %10 = getelementptr inbounds i8, ptr %1, i64 8 @@ -2305,9 +2305,9 @@ define hidden void @_ZNK12ErrorContext16stackmap_detailsEP12outputStreamPK6Metho br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %_ZNK15stack_map_frame4nextEv.exit - %.064 = phi i16 [ %169, %_ZNK15stack_map_frame4nextEv.exit ], [ 0, %.lr.ph.preheader ] - %.02662 = phi ptr [ %168, %_ZNK15stack_map_frame4nextEv.exit ], [ %26, %.lr.ph.preheader ] - %.02761 = phi i32 [ %167, %_ZNK15stack_map_frame4nextEv.exit ], [ -1, %.lr.ph.preheader ] + %.064 = phi i16 [ %170, %_ZNK15stack_map_frame4nextEv.exit ], [ 0, %.lr.ph.preheader ] + %.02662 = phi ptr [ %169, %_ZNK15stack_map_frame4nextEv.exit ], [ %26, %.lr.ph.preheader ] + %.02761 = phi i32 [ %168, %_ZNK15stack_map_frame4nextEv.exit ], [ -1, %.lr.ph.preheader ] %27 = tail call noundef nonnull align 8 dereferenceable(56) ptr @_ZN12outputStream6indentEv(ptr noundef nonnull align 8 dereferenceable(56) %1) #20 %28 = icmp ult ptr %.02662, %25 br i1 %28, label %29, label %_ZNK15stack_map_frame6verifyEPhS0_.exit.thread39 @@ -2375,7 +2375,7 @@ define hidden void @_ZNK12ErrorContext16stackmap_detailsEP12outputStreamPK6Metho 57: ; preds = %51 %58 = add nsw i8 %30, 1 %spec.select.i.i55.i = icmp ult i8 %58, -3 - br i1 %spec.select.i.i55.i, label %84, label %59 + br i1 %spec.select.i.i55.i, label %85, label %59 59: ; preds = %57 %60 = getelementptr inbounds i8, ptr %.02662, i64 3 @@ -2400,271 +2400,273 @@ _ZN22verification_type_info6verifyEPhS0_.exit.thread.i: ; preds = %62 br i1 %67, label %_ZNK15stack_map_frame6verifyEPhS0_.exit.thread, label %68 68: ; preds = %_ZN22verification_type_info6verifyEPhS0_.exit.thread.i - %69 = icmp ult ptr %66, %25 - br i1 %69, label %70, label %_ZNK15stack_map_frame6verifyEPhS0_.exit.thread39 + %69 = icmp uge ptr %66, %.02662 + %70 = icmp ult ptr %66, %25 + %or.cond.i18.i = and i1 %69, %70 + br i1 %or.cond.i18.i, label %71, label %_ZNK15stack_map_frame6verifyEPhS0_.exit.thread39 -70: ; preds = %68 - %71 = getelementptr inbounds i8, ptr %66, i64 3 - %.not.i19.i = icmp ule ptr %71, %25 +71: ; preds = %68 + %72 = getelementptr inbounds i8, ptr %66, i64 3 + %.not.i19.i = icmp ule ptr %72, %25 %.pre33.i = load i8, ptr %66, align 1 - %72 = add i8 %.pre33.i, -9 - %spec.select.i20.i = icmp ult i8 %72, -2 + %73 = add i8 %.pre33.i, -9 + %spec.select.i20.i = icmp ult i8 %73, -2 %or.cond35.i = select i1 %.not.i19.i, i1 true, i1 %spec.select.i20.i br i1 %or.cond35.i, label %_ZN22verification_type_info6verifyEPhS0_.exit21.thread.i, label %_ZNK15stack_map_frame6verifyEPhS0_.exit.thread39 -_ZN22verification_type_info6verifyEPhS0_.exit21.thread.i: ; preds = %70 - %73 = add i8 %.pre33.i, -7 - %or.cond.i.i.i22.i = icmp ult i8 %73, 2 +_ZN22verification_type_info6verifyEPhS0_.exit21.thread.i: ; preds = %71 + %74 = add i8 %.pre33.i, -7 + %or.cond.i.i.i22.i = icmp ult i8 %74, 2 %..i.i.i23.i = select i1 %or.cond.i.i.i22.i, i64 3, i64 1 - %74 = getelementptr inbounds i8, ptr %66, i64 %..i.i.i23.i - %75 = add nsw i8 %30, 5 - %76 = icmp samesign ult i8 %75, 3 - br i1 %76, label %_ZNK15stack_map_frame6verifyEPhS0_.exit.thread, label %77 - -77: ; preds = %_ZN22verification_type_info6verifyEPhS0_.exit21.thread.i - %78 = icmp uge ptr %74, %.02662 - %79 = icmp ult ptr %74, %25 - %or.cond.i24.i = and i1 %78, %79 - br i1 %or.cond.i24.i, label %80, label %_ZNK15stack_map_frame6verifyEPhS0_.exit.thread39 - -80: ; preds = %77 - %81 = getelementptr inbounds i8, ptr %74, i64 3 - %.not.i25.i = icmp ugt ptr %81, %25 + %75 = getelementptr inbounds i8, ptr %66, i64 %..i.i.i23.i + %76 = add nsw i8 %30, 5 + %77 = icmp samesign ult i8 %76, 3 + br i1 %77, label %_ZNK15stack_map_frame6verifyEPhS0_.exit.thread, label %78 + +78: ; preds = %_ZN22verification_type_info6verifyEPhS0_.exit21.thread.i + %79 = icmp uge ptr %75, %.02662 + %80 = icmp ult ptr %75, %25 + %or.cond.i24.i = and i1 %79, %80 + br i1 %or.cond.i24.i, label %81, label %_ZNK15stack_map_frame6verifyEPhS0_.exit.thread39 + +81: ; preds = %78 + %82 = getelementptr inbounds i8, ptr %75, i64 3 + %.not.i25.i = icmp ugt ptr %82, %25 br i1 %.not.i25.i, label %_ZN22verification_type_info6verifyEPhS0_.exit27.i, label %_ZNK15stack_map_frame6verifyEPhS0_.exit.thread -_ZN22verification_type_info6verifyEPhS0_.exit27.i: ; preds = %80 - %82 = load i8, ptr %74, align 1 - %83 = add i8 %82, -9 - %spec.select.i26.i = icmp ult i8 %83, -2 +_ZN22verification_type_info6verifyEPhS0_.exit27.i: ; preds = %81 + %83 = load i8, ptr %75, align 1 + %84 = add i8 %83, -9 + %spec.select.i26.i = icmp ult i8 %84, -2 br i1 %spec.select.i26.i, label %_ZNK15stack_map_frame6verifyEPhS0_.exit.thread, label %_ZNK15stack_map_frame6verifyEPhS0_.exit.thread39 -84: ; preds = %57 +85: ; preds = %57 %.not62.i = icmp eq i8 %30, -1 - br i1 %.not62.i, label %85, label %_ZNK15stack_map_frame6verifyEPhS0_.exit.thread39 + br i1 %.not62.i, label %86, label %_ZNK15stack_map_frame6verifyEPhS0_.exit.thread39 -85: ; preds = %84 - %86 = tail call noundef zeroext i1 @_ZNK10full_frame14verify_subtypeEPhS0_(ptr noundef nonnull align 1 dereferenceable(1) %.02662, ptr noundef nonnull %.02662, ptr noundef nonnull %25) - br i1 %86, label %_ZNK15stack_map_frame6verifyEPhS0_.exit.thread, label %_ZNK15stack_map_frame6verifyEPhS0_.exit.thread39 +86: ; preds = %85 + %87 = tail call noundef zeroext i1 @_ZNK10full_frame14verify_subtypeEPhS0_(ptr noundef nonnull align 1 dereferenceable(1) %.02662, ptr noundef nonnull %.02662, ptr noundef nonnull %25) + br i1 %87, label %_ZNK15stack_map_frame6verifyEPhS0_.exit.thread, label %_ZNK15stack_map_frame6verifyEPhS0_.exit.thread39 _ZNK15stack_map_frame6verifyEPhS0_.exit: ; preds = %49 - %87 = load i8, ptr %47, align 1 - %88 = add i8 %87, -9 - %spec.select.i.i52.i = icmp ult i8 %88, -2 + %88 = load i8, ptr %47, align 1 + %89 = add i8 %88, -9 + %spec.select.i.i52.i = icmp ult i8 %89, -2 br i1 %spec.select.i.i52.i, label %_ZNK15stack_map_frame6verifyEPhS0_.exit.thread, label %_ZNK15stack_map_frame6verifyEPhS0_.exit.thread39 -_ZNK15stack_map_frame6verifyEPhS0_.exit.thread39: ; preds = %59, %62, %68, %70, %77, %_ZN22verification_type_info6verifyEPhS0_.exit27.i, %46, %37, %.lr.ph, %84, %42, %85, %55, %33, %_ZNK15stack_map_frame6verifyEPhS0_.exit +_ZNK15stack_map_frame6verifyEPhS0_.exit.thread39: ; preds = %59, %62, %68, %71, %78, %_ZN22verification_type_info6verifyEPhS0_.exit27.i, %46, %37, %.lr.ph, %85, %42, %86, %55, %33, %_ZNK15stack_map_frame6verifyEPhS0_.exit tail call void @_ZNK15stack_map_frame15print_truncatedEP12outputStreami(ptr noundef nonnull align 1 dereferenceable(1) %.02662, ptr noundef nonnull %1, i32 noundef %.02761) br label %.loopexit -_ZNK15stack_map_frame6verifyEPhS0_.exit.thread: ; preds = %80, %_ZN22verification_type_info6verifyEPhS0_.exit.thread.i, %_ZN22verification_type_info6verifyEPhS0_.exit21.thread.i, %_ZN22verification_type_info6verifyEPhS0_.exit27.i, %49, %40, %29, %42, %85, %55, %33, %_ZNK15stack_map_frame6verifyEPhS0_.exit +_ZNK15stack_map_frame6verifyEPhS0_.exit.thread: ; preds = %81, %_ZN22verification_type_info6verifyEPhS0_.exit.thread.i, %_ZN22verification_type_info6verifyEPhS0_.exit21.thread.i, %_ZN22verification_type_info6verifyEPhS0_.exit27.i, %49, %40, %29, %42, %86, %55, %33, %_ZNK15stack_map_frame6verifyEPhS0_.exit tail call void @_ZNK15stack_map_frame8print_onEP12outputStreami(ptr noundef nonnull align 1 dereferenceable(1) %.02662, ptr noundef nonnull %1, i32 noundef %.02761) tail call void @_ZN12outputStream2crEv(ptr noundef nonnull align 8 dereferenceable(56) %1) #20 - %89 = load i8, ptr %.02662, align 1 - %90 = icmp ugt i8 %89, 63 - br i1 %90, label %91, label %_ZNK15stack_map_frame12offset_deltaEv.exit - -91: ; preds = %_ZNK15stack_map_frame6verifyEPhS0_.exit.thread - %.not.i = icmp eq i8 %89, -5 - br i1 %.not.i, label %.thread44, label %97 - -.thread44: ; preds = %91 - %92 = getelementptr inbounds i8, ptr %.02662, i64 1 - %.0.i.i.i.i.i = load i16, ptr %92, align 1 - %93 = tail call noundef i16 @llvm.bswap.i16(i16 %.0.i.i.i.i.i) - %94 = zext i16 %93 to i32 - %95 = add i32 %.02761, 1 - %96 = add i32 %95, %94 + %90 = load i8, ptr %.02662, align 1 + %91 = icmp ugt i8 %90, 63 + br i1 %91, label %92, label %_ZNK15stack_map_frame12offset_deltaEv.exit + +92: ; preds = %_ZNK15stack_map_frame6verifyEPhS0_.exit.thread + %.not.i = icmp eq i8 %90, -5 + br i1 %.not.i, label %.thread44, label %98 + +.thread44: ; preds = %92 + %93 = getelementptr inbounds i8, ptr %.02662, i64 1 + %.0.i.i.i.i.i = load i16, ptr %93, align 1 + %94 = tail call noundef i16 @llvm.bswap.i16(i16 %.0.i.i.i.i.i) + %95 = zext i16 %94 to i32 + %96 = add i32 %.02761, 1 + %97 = add i32 %96, %95 br label %_ZNK15stack_map_frame4nextEv.exit -97: ; preds = %91 - %98 = icmp slt i8 %89, 64 - br i1 %98, label %99, label %107 - -99: ; preds = %97 - %.not39.i = icmp eq i8 %89, -9 - br i1 %.not39.i, label %118, label %100 - -100: ; preds = %99 - %101 = icmp ult i8 %89, -5 - %102 = and i8 %89, -4 - %103 = icmp eq i8 %102, -8 - %spec.select.i.i.not.i.not86 = and i1 %101, %103 - %104 = icmp ugt i8 %89, -5 - %or.cond82 = or i1 %spec.select.i.i.not.i.not86, %104 +98: ; preds = %92 + %99 = icmp slt i8 %90, 64 + br i1 %99, label %100, label %108 + +100: ; preds = %98 + %.not39.i = icmp eq i8 %90, -9 + br i1 %.not39.i, label %119, label %101 + +101: ; preds = %100 + %102 = icmp ult i8 %90, -5 + %103 = and i8 %90, -4 + %104 = icmp eq i8 %103, -8 + %spec.select.i.i.not.i.not86 = and i1 %102, %104 + %105 = icmp ugt i8 %90, -5 + %or.cond82 = or i1 %spec.select.i.i.not.i.not86, %105 br i1 %or.cond82, label %.thread47.thread72, label %.thread47.thread _ZNK15stack_map_frame12offset_deltaEv.exit: ; preds = %_ZNK15stack_map_frame6verifyEPhS0_.exit.thread - %narrow.i = add nuw nsw i8 %89, 1 - %105 = zext nneg i8 %narrow.i to i32 - %106 = add nsw i32 %.02761, %105 + %narrow.i = add nuw nsw i8 %90, 1 + %106 = zext nneg i8 %narrow.i to i32 + %107 = add nsw i32 %.02761, %106 br label %_ZNK15stack_map_frame4nextEv.exit -107: ; preds = %97 - %108 = zext nneg i8 %89 to i32 - %109 = add i32 %.02761, -63 - %110 = add i32 %109, %108 - %111 = getelementptr inbounds i8, ptr %.02662, i64 1 - %112 = load i8, ptr %111, align 1 - %113 = add i8 %112, -7 - %or.cond.i.i.i.i.i.i = icmp ult i8 %113, 2 - %114 = select i1 %or.cond.i.i.i.i.i.i, i64 4, i64 2 +108: ; preds = %98 + %109 = zext nneg i8 %90 to i32 + %110 = add i32 %.02761, -63 + %111 = add i32 %110, %109 + %112 = getelementptr inbounds i8, ptr %.02662, i64 1 + %113 = load i8, ptr %112, align 1 + %114 = add i8 %113, -7 + %or.cond.i.i.i.i.i.i = icmp ult i8 %114, 2 + %115 = select i1 %or.cond.i.i.i.i.i.i, i64 4, i64 2 br label %_ZNK15stack_map_frame4nextEv.exit -.thread47.thread72: ; preds = %100 - %115 = getelementptr inbounds i8, ptr %.02662, i64 1 - %.0.i.i.i.i38.i = load i16, ptr %115, align 1 - %116 = tail call noundef i16 @llvm.bswap.i16(i16 %.0.i.i.i.i38.i) - %.0.i29.ph.ph.ph.in74 = zext i16 %116 to i32 +.thread47.thread72: ; preds = %101 + %116 = getelementptr inbounds i8, ptr %.02662, i64 1 + %.0.i.i.i.i38.i = load i16, ptr %116, align 1 + %117 = tail call noundef i16 @llvm.bswap.i16(i16 %.0.i.i.i.i38.i) + %.0.i29.ph.ph.ph.in74 = zext i16 %117 to i32 %.0.i29.ph.ph.ph75 = add i32 %.02761, 1 - %117 = add i32 %.0.i29.ph.ph.ph75, %.0.i29.ph.ph.ph.in74 + %118 = add i32 %.0.i29.ph.ph.ph75, %.0.i29.ph.ph.ph.in74 br label %.thread47.thread -118: ; preds = %99 - %119 = getelementptr inbounds i8, ptr %.02662, i64 1 - %.0.i.i.i.i31.i = load i16, ptr %119, align 1 - %120 = tail call noundef i16 @llvm.bswap.i16(i16 %.0.i.i.i.i31.i) - %.0.i29.ph.ph.ph.in = zext i16 %120 to i32 +119: ; preds = %100 + %120 = getelementptr inbounds i8, ptr %.02662, i64 1 + %.0.i.i.i.i31.i = load i16, ptr %120, align 1 + %121 = tail call noundef i16 @llvm.bswap.i16(i16 %.0.i.i.i.i31.i) + %.0.i29.ph.ph.ph.in = zext i16 %121 to i32 %.0.i29.ph.ph.ph = add i32 %.02761, 1 - %121 = add i32 %.0.i29.ph.ph.ph, %.0.i29.ph.ph.ph.in - %122 = getelementptr inbounds i8, ptr %.02662, i64 3 - %123 = load i8, ptr %122, align 1 - %124 = add i8 %123, -7 - %or.cond.i.i.i.i31.i.i = icmp ult i8 %124, 2 - %125 = select i1 %or.cond.i.i.i.i31.i.i, i64 6, i64 4 + %122 = add i32 %.0.i29.ph.ph.ph, %.0.i29.ph.ph.ph.in + %123 = getelementptr inbounds i8, ptr %.02662, i64 3 + %124 = load i8, ptr %123, align 1 + %125 = add i8 %124, -7 + %or.cond.i.i.i.i31.i.i = icmp ult i8 %125, 2 + %126 = select i1 %or.cond.i.i.i.i31.i.i, i64 6, i64 4 br label %_ZNK15stack_map_frame4nextEv.exit -.thread47.thread: ; preds = %100, %.thread47.thread72 - %126 = phi i32 [ %117, %.thread47.thread72 ], [ %.02761, %100 ] - %127 = icmp samesign ugt i8 %89, -6 - %128 = and i8 %89, -4 - %129 = icmp ne i8 %128, -8 - %spec.select.i.i.not.i.i = or i1 %127, %129 - br i1 %spec.select.i.i.not.i.i, label %130, label %_ZNK15stack_map_frame4nextEv.exit - -130: ; preds = %.thread47.thread - %131 = add nsw i8 %89, 1 - %spec.select.i.i33.i.i = icmp ult i8 %131, -3 - br i1 %spec.select.i.i33.i.i, label %140, label %.lr.ph.i.preheader.i.i.i - -.lr.ph.i.preheader.i.i.i: ; preds = %130 - %132 = getelementptr inbounds i8, ptr %.02662, i64 3 - %133 = zext i8 %89 to i32 - %134 = add nsw i32 %133, -252 +.thread47.thread: ; preds = %101, %.thread47.thread72 + %127 = phi i32 [ %118, %.thread47.thread72 ], [ %.02761, %101 ] + %128 = icmp samesign ugt i8 %90, -6 + %129 = and i8 %90, -4 + %130 = icmp ne i8 %129, -8 + %spec.select.i.i.not.i.i = or i1 %128, %130 + br i1 %spec.select.i.i.not.i.i, label %131, label %_ZNK15stack_map_frame4nextEv.exit + +131: ; preds = %.thread47.thread + %132 = add nsw i8 %90, 1 + %spec.select.i.i33.i.i = icmp ult i8 %132, -3 + br i1 %spec.select.i.i33.i.i, label %141, label %.lr.ph.i.preheader.i.i.i + +.lr.ph.i.preheader.i.i.i: ; preds = %131 + %133 = getelementptr inbounds i8, ptr %.02662, i64 3 + %134 = zext i8 %90 to i32 + %135 = add nsw i32 %134, -252 br label %.lr.ph.i.i.i.i .lr.ph.i.i.i.i: ; preds = %.lr.ph.i.i.i.i, %.lr.ph.i.preheader.i.i.i - %.010.i.i.i.i = phi i32 [ %139, %.lr.ph.i.i.i.i ], [ 0, %.lr.ph.i.preheader.i.i.i ] - %.069.i.i.i.i = phi i64 [ %137, %.lr.ph.i.i.i.i ], [ 3, %.lr.ph.i.preheader.i.i.i ] - %.078.i.i.i.i = phi ptr [ %138, %.lr.ph.i.i.i.i ], [ %132, %.lr.ph.i.preheader.i.i.i ] - %135 = load i8, ptr %.078.i.i.i.i, align 1 - %136 = add i8 %135, -7 - %or.cond.i.i.i.i35.i.i = icmp ult i8 %136, 2 + %.010.i.i.i.i = phi i32 [ %140, %.lr.ph.i.i.i.i ], [ 0, %.lr.ph.i.preheader.i.i.i ] + %.069.i.i.i.i = phi i64 [ %138, %.lr.ph.i.i.i.i ], [ 3, %.lr.ph.i.preheader.i.i.i ] + %.078.i.i.i.i = phi ptr [ %139, %.lr.ph.i.i.i.i ], [ %133, %.lr.ph.i.preheader.i.i.i ] + %136 = load i8, ptr %.078.i.i.i.i, align 1 + %137 = add i8 %136, -7 + %or.cond.i.i.i.i35.i.i = icmp ult i8 %137, 2 %..i.i.i.i.i.i = select i1 %or.cond.i.i.i.i35.i.i, i64 3, i64 1 - %137 = add i64 %..i.i.i.i.i.i, %.069.i.i.i.i - %138 = getelementptr inbounds i8, ptr %.078.i.i.i.i, i64 %..i.i.i.i.i.i - %139 = add nuw nsw i32 %.010.i.i.i.i, 1 - %exitcond.not.i.i.i.i = icmp eq i32 %.010.i.i.i.i, %134 + %138 = add i64 %..i.i.i.i.i.i, %.069.i.i.i.i + %139 = getelementptr inbounds i8, ptr %.078.i.i.i.i, i64 %..i.i.i.i.i.i + %140 = add nuw nsw i32 %.010.i.i.i.i, 1 + %exitcond.not.i.i.i.i = icmp eq i32 %.010.i.i.i.i, %135 br i1 %exitcond.not.i.i.i.i, label %_ZNK15stack_map_frame4nextEv.exit, label %.lr.ph.i.i.i.i, !llvm.loop !13 -140: ; preds = %130 - %.not40.i.i = icmp eq i8 %89, -1 - br i1 %.not40.i.i, label %141, label %_ZNK15stack_map_frame4nextEv.exit +141: ; preds = %131 + %.not40.i.i = icmp eq i8 %90, -1 + br i1 %.not40.i.i, label %142, label %_ZNK15stack_map_frame4nextEv.exit -141: ; preds = %140 - %142 = getelementptr inbounds i8, ptr %.02662, i64 5 - %143 = getelementptr inbounds i8, ptr %.02662, i64 3 - %.0.i.i.i.i.i.i = load i16, ptr %143, align 1 +142: ; preds = %141 + %143 = getelementptr inbounds i8, ptr %.02662, i64 5 + %144 = getelementptr inbounds i8, ptr %.02662, i64 3 + %.0.i.i.i.i.i.i = load i16, ptr %144, align 1 %.not.i.i32 = icmp eq i16 %.0.i.i.i.i.i.i, 0 br i1 %.not.i.i32, label %_ZNK10full_frame13end_of_localsEv.exit.thread.i, label %.lr.ph.preheader.i.i -_ZNK10full_frame13end_of_localsEv.exit.thread.i: ; preds = %141 - %.0.i.i.i.i313.i = load i16, ptr %142, align 1 - %144 = tail call noundef i16 @llvm.bswap.i16(i16 %.0.i.i.i.i313.i) - %145 = getelementptr inbounds i8, ptr %.02662, i64 7 +_ZNK10full_frame13end_of_localsEv.exit.thread.i: ; preds = %142 + %.0.i.i.i.i313.i = load i16, ptr %143, align 1 + %145 = tail call noundef i16 @llvm.bswap.i16(i16 %.0.i.i.i.i313.i) + %146 = getelementptr inbounds i8, ptr %.02662, i64 7 br label %.preheader.i.i -.lr.ph.preheader.i.i: ; preds = %141 - %146 = tail call noundef i16 @llvm.bswap.i16(i16 %.0.i.i.i.i.i.i) - %147 = tail call i16 @llvm.umax.i16(i16 %146, i16 1) - %umax.i.i = zext i16 %147 to i32 +.lr.ph.preheader.i.i: ; preds = %142 + %147 = tail call noundef i16 @llvm.bswap.i16(i16 %.0.i.i.i.i.i.i) + %148 = tail call i16 @llvm.umax.i16(i16 %147, i16 1) + %umax.i.i = zext i16 %148 to i32 br label %.lr.ph.i.i .lr.ph.i.i: ; preds = %.lr.ph.i.i, %.lr.ph.preheader.i.i - %.06.i.i = phi i32 [ %151, %.lr.ph.i.i ], [ 0, %.lr.ph.preheader.i.i ] - %.045.i.i = phi ptr [ %150, %.lr.ph.i.i ], [ %142, %.lr.ph.preheader.i.i ] - %148 = load i8, ptr %.045.i.i, align 1 - %149 = add i8 %148, -7 - %or.cond.i.i.i.i.i = icmp ult i8 %149, 2 + %.06.i.i = phi i32 [ %152, %.lr.ph.i.i ], [ 0, %.lr.ph.preheader.i.i ] + %.045.i.i = phi ptr [ %151, %.lr.ph.i.i ], [ %143, %.lr.ph.preheader.i.i ] + %149 = load i8, ptr %.045.i.i, align 1 + %150 = add i8 %149, -7 + %or.cond.i.i.i.i.i = icmp ult i8 %150, 2 %..i.i.i.i.i = select i1 %or.cond.i.i.i.i.i, i64 3, i64 1 - %150 = getelementptr inbounds i8, ptr %.045.i.i, i64 %..i.i.i.i.i - %151 = add nuw nsw i32 %.06.i.i, 1 - %exitcond.not.i.i = icmp eq i32 %151, %umax.i.i + %151 = getelementptr inbounds i8, ptr %.045.i.i, i64 %..i.i.i.i.i + %152 = add nuw nsw i32 %.06.i.i, 1 + %exitcond.not.i.i = icmp eq i32 %152, %umax.i.i br i1 %exitcond.not.i.i, label %_ZNK10full_frame13end_of_localsEv.exit.i, label %.lr.ph.i.i, !llvm.loop !14 _ZNK10full_frame13end_of_localsEv.exit.i: ; preds = %.lr.ph.i.i - %152 = zext i16 %146 to i32 - %.0.i.i.i.i3.i = load i16, ptr %150, align 1 - %153 = tail call noundef i16 @llvm.bswap.i16(i16 %.0.i.i.i.i3.i) + %153 = zext i16 %147 to i32 + %.0.i.i.i.i3.i = load i16, ptr %151, align 1 + %154 = tail call noundef i16 @llvm.bswap.i16(i16 %.0.i.i.i.i3.i) br label %.lr.ph.i4.i .preheader.i.i.loopexit: ; preds = %.lr.ph.i4.i - %154 = getelementptr inbounds i8, ptr %150, i64 2 + %155 = getelementptr inbounds i8, ptr %151, i64 2 br label %.preheader.i.i .preheader.i.i: ; preds = %.preheader.i.i.loopexit, %_ZNK10full_frame13end_of_localsEv.exit.thread.i - %155 = phi ptr [ %145, %_ZNK10full_frame13end_of_localsEv.exit.thread.i ], [ %154, %.preheader.i.i.loopexit ] - %.shrunk.i = phi i16 [ %144, %_ZNK10full_frame13end_of_localsEv.exit.thread.i ], [ %153, %.preheader.i.i.loopexit ] + %156 = phi ptr [ %146, %_ZNK10full_frame13end_of_localsEv.exit.thread.i ], [ %155, %.preheader.i.i.loopexit ] + %.shrunk.i = phi i16 [ %145, %_ZNK10full_frame13end_of_localsEv.exit.thread.i ], [ %154, %.preheader.i.i.loopexit ] %.0.i.i.i.i314.i = phi i16 [ %.0.i.i.i.i313.i, %_ZNK10full_frame13end_of_localsEv.exit.thread.i ], [ %.0.i.i.i.i3.i, %.preheader.i.i.loopexit ] - %.016.lcssa.i.i = phi i64 [ 7, %_ZNK10full_frame13end_of_localsEv.exit.thread.i ], [ %159, %.preheader.i.i.loopexit ] - %156 = zext i16 %.shrunk.i to i32 + %.016.lcssa.i.i = phi i64 [ 7, %_ZNK10full_frame13end_of_localsEv.exit.thread.i ], [ %160, %.preheader.i.i.loopexit ] + %157 = zext i16 %.shrunk.i to i32 %.not6.i = icmp eq i16 %.0.i.i.i.i314.i, 0 br i1 %.not6.i, label %_ZNK15stack_map_frame4nextEv.exit, label %.lr.ph28.i.i .lr.ph.i4.i: ; preds = %.lr.ph.i4.i, %_ZNK10full_frame13end_of_localsEv.exit.i - %.01424.i.i = phi i32 [ %161, %.lr.ph.i4.i ], [ 0, %_ZNK10full_frame13end_of_localsEv.exit.i ] - %.01523.i.i = phi ptr [ %160, %.lr.ph.i4.i ], [ %142, %_ZNK10full_frame13end_of_localsEv.exit.i ] - %.01622.i.i = phi i64 [ %159, %.lr.ph.i4.i ], [ 7, %_ZNK10full_frame13end_of_localsEv.exit.i ] - %157 = load i8, ptr %.01523.i.i, align 1 - %158 = add i8 %157, -7 - %or.cond.i.i.i.i33 = icmp ult i8 %158, 2 + %.01424.i.i = phi i32 [ %162, %.lr.ph.i4.i ], [ 0, %_ZNK10full_frame13end_of_localsEv.exit.i ] + %.01523.i.i = phi ptr [ %161, %.lr.ph.i4.i ], [ %143, %_ZNK10full_frame13end_of_localsEv.exit.i ] + %.01622.i.i = phi i64 [ %160, %.lr.ph.i4.i ], [ 7, %_ZNK10full_frame13end_of_localsEv.exit.i ] + %158 = load i8, ptr %.01523.i.i, align 1 + %159 = add i8 %158, -7 + %or.cond.i.i.i.i33 = icmp ult i8 %159, 2 %..i.i.i.i34 = select i1 %or.cond.i.i.i.i33, i64 3, i64 1 - %159 = add i64 %..i.i.i.i34, %.01622.i.i - %160 = getelementptr inbounds i8, ptr %.01523.i.i, i64 %..i.i.i.i34 - %161 = add nuw nsw i32 %.01424.i.i, 1 - %exitcond.not.i5.i = icmp eq i32 %161, %152 + %160 = add i64 %..i.i.i.i34, %.01622.i.i + %161 = getelementptr inbounds i8, ptr %.01523.i.i, i64 %..i.i.i.i34 + %162 = add nuw nsw i32 %.01424.i.i, 1 + %exitcond.not.i5.i = icmp eq i32 %162, %153 br i1 %exitcond.not.i5.i, label %.preheader.i.i.loopexit, label %.lr.ph.i4.i, !llvm.loop !15 .lr.ph28.i.i: ; preds = %.preheader.i.i, %.lr.ph28.i.i - %.027.i.i = phi i32 [ %166, %.lr.ph28.i.i ], [ 0, %.preheader.i.i ] - %.126.i.i = phi ptr [ %165, %.lr.ph28.i.i ], [ %155, %.preheader.i.i ] - %.11725.i.i = phi i64 [ %164, %.lr.ph28.i.i ], [ %.016.lcssa.i.i, %.preheader.i.i ] - %162 = load i8, ptr %.126.i.i, align 1 - %163 = add i8 %162, -7 - %or.cond.i.i18.i.i = icmp ult i8 %163, 2 + %.027.i.i = phi i32 [ %167, %.lr.ph28.i.i ], [ 0, %.preheader.i.i ] + %.126.i.i = phi ptr [ %166, %.lr.ph28.i.i ], [ %156, %.preheader.i.i ] + %.11725.i.i = phi i64 [ %165, %.lr.ph28.i.i ], [ %.016.lcssa.i.i, %.preheader.i.i ] + %163 = load i8, ptr %.126.i.i, align 1 + %164 = add i8 %163, -7 + %or.cond.i.i18.i.i = icmp ult i8 %164, 2 %..i.i19.i.i = select i1 %or.cond.i.i18.i.i, i64 3, i64 1 - %164 = add i64 %..i.i19.i.i, %.11725.i.i - %165 = getelementptr inbounds i8, ptr %.126.i.i, i64 %..i.i19.i.i - %166 = add nuw nsw i32 %.027.i.i, 1 - %exitcond31.not.i.i = icmp eq i32 %166, %156 + %165 = add i64 %..i.i19.i.i, %.11725.i.i + %166 = getelementptr inbounds i8, ptr %.126.i.i, i64 %..i.i19.i.i + %167 = add nuw nsw i32 %.027.i.i, 1 + %exitcond31.not.i.i = icmp eq i32 %167, %157 br i1 %exitcond31.not.i.i, label %_ZNK15stack_map_frame4nextEv.exit, label %.lr.ph28.i.i, !llvm.loop !16 -_ZNK15stack_map_frame4nextEv.exit: ; preds = %.lr.ph.i.i.i.i, %.lr.ph28.i.i, %.preheader.i.i, %.thread44, %_ZNK15stack_map_frame12offset_deltaEv.exit, %107, %118, %.thread47.thread, %140 - %167 = phi i32 [ %110, %107 ], [ %121, %118 ], [ %126, %140 ], [ %106, %_ZNK15stack_map_frame12offset_deltaEv.exit ], [ %126, %.thread47.thread ], [ %96, %.thread44 ], [ %126, %.preheader.i.i ], [ %126, %.lr.ph28.i.i ], [ %126, %.lr.ph.i.i.i.i ] - %.0.i.i = phi i64 [ %114, %107 ], [ %125, %118 ], [ 0, %140 ], [ 1, %_ZNK15stack_map_frame12offset_deltaEv.exit ], [ 3, %.thread47.thread ], [ 3, %.thread44 ], [ %.016.lcssa.i.i, %.preheader.i.i ], [ %164, %.lr.ph28.i.i ], [ %137, %.lr.ph.i.i.i.i ] - %168 = getelementptr inbounds i8, ptr %.02662, i64 %.0.i.i - %169 = add nuw i16 %.064, 1 +_ZNK15stack_map_frame4nextEv.exit: ; preds = %.lr.ph.i.i.i.i, %.lr.ph28.i.i, %.preheader.i.i, %.thread44, %_ZNK15stack_map_frame12offset_deltaEv.exit, %108, %119, %.thread47.thread, %141 + %168 = phi i32 [ %111, %108 ], [ %122, %119 ], [ %127, %141 ], [ %107, %_ZNK15stack_map_frame12offset_deltaEv.exit ], [ %127, %.thread47.thread ], [ %97, %.thread44 ], [ %127, %.preheader.i.i ], [ %127, %.lr.ph28.i.i ], [ %127, %.lr.ph.i.i.i.i ] + %.0.i.i = phi i64 [ %115, %108 ], [ %126, %119 ], [ 0, %141 ], [ 1, %_ZNK15stack_map_frame12offset_deltaEv.exit ], [ 3, %.thread47.thread ], [ 3, %.thread44 ], [ %.016.lcssa.i.i, %.preheader.i.i ], [ %165, %.lr.ph28.i.i ], [ %138, %.lr.ph.i.i.i.i ] + %169 = getelementptr inbounds i8, ptr %.02662, i64 %.0.i.i + %170 = add nuw i16 %.064, 1 %.0.i.i.i.i = load i16, ptr %17, align 1 - %170 = tail call noundef i16 @llvm.bswap.i16(i16 %.0.i.i.i.i) - %171 = icmp ult i16 %169, %170 - br i1 %171, label %.lr.ph, label %.loopexit, !llvm.loop !17 + %171 = tail call noundef i16 @llvm.bswap.i16(i16 %.0.i.i.i.i) + %172 = icmp ult i16 %170, %171 + br i1 %172, label %.lr.ph, label %.loopexit, !llvm.loop !17 .loopexit: ; preds = %_ZNK15stack_map_frame4nextEv.exit, %9, %_ZNK15stack_map_frame6verifyEPhS0_.exit.thread39 - %172 = load i32, ptr %10, align 8 - %173 = add nsw i32 %172, -4 - store i32 %173, ptr %10, align 8 - br label %174 + %173 = load i32, ptr %10, align 8 + %174 = add nsw i32 %173, -4 + store i32 %174, ptr %10, align 8 + br label %175 -174: ; preds = %.loopexit, %4, %3 +175: ; preds = %.loopexit, %4, %3 ret void } diff --git a/bench/openmpi/optimized/bfrop_base_macro_backers.ll b/bench/openmpi/optimized/bfrop_base_macro_backers.ll index 692af0e00ef..60f58defd77 100644 --- a/bench/openmpi/optimized/bfrop_base_macro_backers.ll +++ b/bench/openmpi/optimized/bfrop_base_macro_backers.ll @@ -4066,9 +4066,10 @@ pmix_strncpy.exit.i: ; preds = %20, %.lr.ph.i.i store i8 58, ptr %24, align 1 %25 = getelementptr i8, ptr %24, i64 1 %26 = sub nuw nsw i64 255, %.0.i.i - br label %.lr.ph.i19.i + %.not.i.i = icmp eq i64 %.0.i.i, 255 + br i1 %.not.i.i, label %pmix_strncpy.exit25.i, label %.lr.ph.i19.i -.lr.ph.i19.i: ; preds = %29, %pmix_strncpy.exit.i +.lr.ph.i19.i: ; preds = %pmix_strncpy.exit.i, %29 %.012.i20.i = phi i64 [ %30, %29 ], [ 0, %pmix_strncpy.exit.i ] %.0811.i21.i = phi ptr [ %32, %29 ], [ %25, %pmix_strncpy.exit.i ] %.0910.i22.i = phi ptr [ %31, %29 ], [ %2, %pmix_strncpy.exit.i ] @@ -4084,9 +4085,9 @@ pmix_strncpy.exit.i: ; preds = %20, %.lr.ph.i.i %exitcond.not.i23.i = icmp eq i64 %30, %26 br i1 %exitcond.not.i23.i, label %pmix_strncpy.exit25.i, label %.lr.ph.i19.i, !llvm.loop !4 -pmix_strncpy.exit25.i: ; preds = %29, %.lr.ph.i19.i - %.08.lcssa.i24.ph.i = phi ptr [ %32, %29 ], [ %.0811.i21.i, %.lr.ph.i19.i ] - store i8 0, ptr %.08.lcssa.i24.ph.i, align 1 +pmix_strncpy.exit25.i: ; preds = %29, %.lr.ph.i19.i, %pmix_strncpy.exit.i + %.08.lcssa.i24.i = phi ptr [ %25, %pmix_strncpy.exit.i ], [ %.0811.i21.i, %.lr.ph.i19.i ], [ %32, %29 ] + store i8 0, ptr %.08.lcssa.i24.i, align 1 br label %pmix_bfrops_base_tma_multicluster_nspace_construct.exit pmix_bfrops_base_tma_multicluster_nspace_construct.exit: ; preds = %pmix_nslen.exit17.i, %pmix_strncpy.exit25.i diff --git a/bench/proj/optimized/coordinateoperationfactory.cpp.ll b/bench/proj/optimized/coordinateoperationfactory.cpp.ll index 475427fa27e..11bfdce644e 100644 --- a/bench/proj/optimized/coordinateoperationfactory.cpp.ll +++ b/bench/proj/optimized/coordinateoperationfactory.cpp.ll @@ -43991,12 +43991,12 @@ _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_cold br label %_ZNSt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEED2Ev.exit667 .loopexit1600: ; preds = %1355, %1361 - %.merged392 = phi { ptr, i32 } [ %1362, %1361 ], [ %.pn349, %1355 ] + %.merged397 = phi { ptr, i32 } [ %1362, %1361 ], [ %.pn349, %1355 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #28 br label %1517 1517: ; preds = %.loopexit1600, %1235, %1032, %825, %816, %814 - %.merged391 = phi { ptr, i32 } [ %815, %814 ], [ %.pn351.pn, %1032 ], [ %.merged392, %.loopexit1600 ], [ %.pn346, %1235 ], [ %.pn342.pn, %825 ], [ %817, %816 ] + %.merged396 = phi { ptr, i32 } [ %815, %814 ], [ %.pn351.pn, %1032 ], [ %.merged397, %.loopexit1600 ], [ %.pn346, %1235 ], [ %.pn342.pn, %825 ], [ %817, %816 ] call void @_ZNSt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #28 br label %4900 @@ -45598,7 +45598,7 @@ _ZNSt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEED2Ev.exit832: ; p br i1 %2192, label %.critedge408, label %2312 .loopexit1598: ; preds = %2182, %1977, %1968, %1966 - %.merged399 = phi { ptr, i32 } [ %1967, %1966 ], [ %.pn336.pn, %1977 ], [ %1969, %1968 ], [ %.pn340, %2182 ] + %.merged390 = phi { ptr, i32 } [ %1967, %1966 ], [ %.pn336.pn, %1977 ], [ %1969, %1968 ], [ %.pn340, %2182 ] call void @_ZNSt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %45) #28 call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #28 br label %2394 @@ -46000,7 +46000,7 @@ _ZSt8_DestroyIPN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19Coordi br label %_ZNSt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEED2Ev.exit667 2394: ; preds = %.loopexit1598, %1965, %1959 - %.merged398 = phi { ptr, i32 } [ %.merged399, %.loopexit1598 ], [ %.pn334, %1965 ], [ %1960, %1959 ] + %.merged389 = phi { ptr, i32 } [ %.merged390, %.loopexit1598 ], [ %.pn334, %1965 ], [ %1960, %1959 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #28 br label %4900 @@ -47768,17 +47768,17 @@ _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_cold br label %_ZNSt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEED2Ev.exit667 .loopexit1596: ; preds = %3092, %.loopexit1597, %.loopexit.split-lp, %3081, %3080 - %.merged395 = phi { ptr, i32 } [ %3082, %3081 ], [ %.pn321, %3080 ], [ %lpad.loopexit, %.loopexit1597 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ], [ %.pn323.pn, %3092 ] + %.merged400 = phi { ptr, i32 } [ %3082, %3081 ], [ %.pn321, %3080 ], [ %lpad.loopexit, %.loopexit1597 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ], [ %.pn323.pn, %3092 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation14TransformationEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %66) #28 br label %3215 3215: ; preds = %.loopexit1596, %3074 - %.merged394 = phi { ptr, i32 } [ %.merged395, %.loopexit1596 ], [ %3075, %3074 ] + %.merged399 = phi { ptr, i32 } [ %.merged400, %.loopexit1596 ], [ %3075, %3074 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %62) #28 br label %3216 3216: ; preds = %3215, %3073, %2705, %2694, %2692 - %.merged393 = phi { ptr, i32 } [ %.pn329, %2705 ], [ %2693, %2692 ], [ %.merged394, %3215 ], [ %.pn318, %3073 ], [ %2695, %2694 ] + %.merged398 = phi { ptr, i32 } [ %.pn329, %2705 ], [ %2693, %2692 ], [ %.merged399, %3215 ], [ %.pn318, %3073 ], [ %2695, %2694 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs13GeographicCRSEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %56) #28 br label %4900 @@ -48638,7 +48638,7 @@ _ZSt8_DestroyIPN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19Coordi br label %_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev.exit1143 .loopexit1586: ; preds = %3550, %3556 - %.merged390 = phi { ptr, i32 } [ %3557, %3556 ], [ %.pn383.pn, %3550 ] + %.merged395 = phi { ptr, i32 } [ %3557, %3556 ], [ %.pn383.pn, %3550 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %77) #28 br label %3661 @@ -48773,7 +48773,7 @@ _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_cold br label %_ZNSt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEED2Ev.exit667 3661: ; preds = %3534, %.loopexit1586, %3540, %3292 - %.merged389 = phi { ptr, i32 } [ %.merged390, %.loopexit1586 ], [ %.pn381, %3540 ], [ %3293, %3292 ], [ %3535, %3534 ] + %.merged394 = phi { ptr, i32 } [ %.merged395, %.loopexit1586 ], [ %.pn381, %3540 ], [ %3293, %3292 ], [ %3535, %3534 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs3CRSEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %75) #28 br label %4900 @@ -49568,12 +49568,12 @@ _ZSt8_DestroyIPN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19Coordi br label %_ZNSt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEED2Ev.exit667 .loopexit1592: ; preds = %3892, %3881 - %.merged397 = phi { ptr, i32 } [ %3882, %3881 ], [ %.pn359.pn, %3892 ] + %.merged402 = phi { ptr, i32 } [ %3882, %3881 ], [ %.pn359.pn, %3892 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %86) #28 br label %3987 3987: ; preds = %.loopexit1592, %3880, %3874 - %.merged396 = phi { ptr, i32 } [ %.merged397, %.loopexit1592 ], [ %.pn357, %3880 ], [ %3875, %3874 ] + %.merged401 = phi { ptr, i32 } [ %.merged402, %.loopexit1592 ], [ %.pn357, %3880 ], [ %3875, %3874 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %83) #28 br label %4900 @@ -50305,7 +50305,7 @@ _ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperation br label %.critedge414 .loopexit1588: ; preds = %4306, %4296, %4287 - %.merged401 = phi { ptr, i32 } [ %4288, %4287 ], [ %.pn371.pn, %4296 ], [ %.pn374.pn, %4306 ] + %.merged393 = phi { ptr, i32 } [ %4288, %4287 ], [ %.pn371.pn, %4296 ], [ %.pn374.pn, %4306 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation10ConversionEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %96) #28 br label %4617 @@ -51050,12 +51050,12 @@ _ZSt8_DestroyIPN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19Coordi br label %_ZNSt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEED2Ev.exit667 .loopexit1590: ; preds = %4522, %4511 - %.merged402 = phi { ptr, i32 } [ %4512, %4511 ], [ %.pn366.pn, %4522 ] + %.merged392 = phi { ptr, i32 } [ %4512, %4511 ], [ %.pn366.pn, %4522 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %107) #28 br label %4617 4617: ; preds = %4074, %.loopexit1590, %4510, %.loopexit1588, %4286, %4076, %4072 - %.merged400 = phi { ptr, i32 } [ %4073, %4072 ], [ %4077, %4076 ], [ %.merged401, %.loopexit1588 ], [ %.pn369, %4286 ], [ %4075, %4074 ], [ %.merged402, %.loopexit1590 ], [ %.pn364, %4510 ] + %.merged391 = phi { ptr, i32 } [ %4073, %4072 ], [ %4077, %4076 ], [ %.merged393, %.loopexit1588 ], [ %.pn369, %4286 ], [ %4075, %4074 ], [ %.merged392, %.loopexit1590 ], [ %.pn364, %4510 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %92) #28 br label %4900 @@ -51700,7 +51700,7 @@ _ZNSt10shared_ptrIN5osgeo4proj3crs13GeographicCRSEED2Ev.exit1464: ; preds = %_ZN br label %4900 4900: ; preds = %3235, %2690, %1952, %812, %4899, %4617, %4071, %3987, %3873, %3661, %3216, %2394, %1958, %1517, %480, %471 - %.merged388 = phi { ptr, i32 } [ %.merged389, %3661 ], [ %.pn378, %4899 ], [ %472, %471 ], [ %.merged400, %4617 ], [ %.pn362, %4071 ], [ %.merged396, %3987 ], [ %.pn355, %3873 ], [ %3236, %3235 ], [ %.merged391, %1517 ], [ %.merged398, %2394 ], [ %.pn331, %1958 ], [ %.merged393, %3216 ], [ %2691, %2690 ], [ %1953, %1952 ], [ %813, %812 ], [ %.pn.pn, %480 ] + %.merged388 = phi { ptr, i32 } [ %.merged394, %3661 ], [ %.pn378, %4899 ], [ %472, %471 ], [ %.merged391, %4617 ], [ %.pn362, %4071 ], [ %.merged401, %3987 ], [ %.pn355, %3873 ], [ %3236, %3235 ], [ %.merged396, %1517 ], [ %.merged389, %2394 ], [ %.pn331, %1958 ], [ %.merged398, %3216 ], [ %2691, %2690 ], [ %1953, %1952 ], [ %813, %812 ], [ %.pn.pn, %480 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj5datum22GeodeticReferenceFrameEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #28 br label %4901 @@ -64823,7 +64823,7 @@ _ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperation br i1 %.not1997, label %._crit_edge2102, label %.lr.ph2101 .loopexit2017: ; preds = %2721, %.loopexit2018, %.loopexit.split-lp2019 - %.merged509 = phi { ptr, i32 } [ %lpad.loopexit2020, %.loopexit2018 ], [ %lpad.loopexit.split-lp2021, %.loopexit.split-lp2019 ], [ %.pn473.pn, %2721 ] + %.merged516 = phi { ptr, i32 } [ %lpad.loopexit2020, %.loopexit2018 ], [ %lpad.loopexit.split-lp2021, %.loopexit.split-lp2019 ], [ %.pn473.pn, %2721 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %147) #28 br label %2799 @@ -64906,7 +64906,7 @@ _ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperation br i1 %.not1981, label %._crit_edge2107, label %2399 2799: ; preds = %.loopexit2023, %.loopexit.split-lp2024, %.loopexit2017 - %.merged508 = phi { ptr, i32 } [ %.merged509, %.loopexit2017 ], [ %lpad.loopexit2025, %.loopexit2023 ], [ %lpad.loopexit.split-lp2026, %.loopexit.split-lp2024 ] + %.merged515 = phi { ptr, i32 } [ %.merged516, %.loopexit2017 ], [ %lpad.loopexit2025, %.loopexit2023 ], [ %lpad.loopexit.split-lp2026, %.loopexit.split-lp2024 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %146) #28 br label %2965 @@ -65291,22 +65291,22 @@ _ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19Coordina br i1 %2803, label %.critedge530, label %3041 2965: ; preds = %2799, %2674 - %.merged507 = phi { ptr, i32 } [ %.merged508, %2799 ], [ %2675, %2674 ] + %.merged514 = phi { ptr, i32 } [ %.merged515, %2799 ], [ %2675, %2674 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %143) #28 br label %2966 2966: ; preds = %2965, %2673, %2667 - %.merged506 = phi { ptr, i32 } [ %.merged507, %2965 ], [ %.pn446, %2673 ], [ %2668, %2667 ] + %.merged513 = phi { ptr, i32 } [ %.merged514, %2965 ], [ %.pn446, %2673 ], [ %2668, %2667 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %133) #28 br label %2967 2967: ; preds = %2966, %2666, %2648 - %.merged505 = phi { ptr, i32 } [ %.merged506, %2966 ], [ %.pn439.pn.pn.pn.pn.pn, %2666 ], [ %2649, %2648 ] + %.merged512 = phi { ptr, i32 } [ %.merged513, %2966 ], [ %.pn439.pn.pn.pn.pn.pn, %2666 ], [ %2649, %2648 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs3CRSEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %131) #28 br label %2968 2968: ; preds = %2967, %2646 - %.merged504 = phi { ptr, i32 } [ %.merged505, %2967 ], [ %2647, %2646 ] + %.merged511 = phi { ptr, i32 } [ %.merged512, %2967 ], [ %2647, %2646 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %122) #28 br label %3113 @@ -65606,12 +65606,12 @@ _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_cold br label %_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs3CRSEEEESaIS9_EED2Ev.exit 3113: ; preds = %2628, %2968, %.loopexit2028, %2616 - %.merged503 = phi { ptr, i32 } [ %.merged504, %2968 ], [ %.pn432.pn.pn.pn.pn.pn, %.loopexit2028 ], [ %2617, %2616 ], [ %.pn428.pn.pn, %2628 ] + %.merged510 = phi { ptr, i32 } [ %.merged511, %2968 ], [ %.pn432.pn.pn.pn.pn.pn, %.loopexit2028 ], [ %2617, %2616 ], [ %.pn428.pn.pn, %2628 ] call void @_ZNSt10shared_ptrIN5osgeo4proj3crs13GeographicCRSEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %115) #28 br label %3114 3114: ; preds = %3113, %2614 - %.merged502 = phi { ptr, i32 } [ %.merged503, %3113 ], [ %2615, %2614 ] + %.merged509 = phi { ptr, i32 } [ %.merged510, %3113 ], [ %2615, %2614 ] call void @_ZNSt10shared_ptrIN5osgeo4proj3crs13GeographicCRSEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %114) #28 br label %.loopexit2034 @@ -71497,12 +71497,12 @@ _ZSt8_DestroyIPN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19Coordi br label %_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev.exit1470 .body1422: ; preds = %5543, %.loopexit, %.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit, %5448, %_ZSt8_DestroyIPN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEES9_EvT_SB_RSaIT0_E.exit.i1690, %4717, %4634 - %.merged516 = phi { ptr, i32 } [ %.pn469, %4634 ], [ %.pn467, %4717 ], [ %.pn.pn.pn.i, %_ZSt8_DestroyIPN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEES9_EvT_SB_RSaIT0_E.exit.i1690 ], [ %.pn.pn.pn.i, %5448 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit2004, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp2005, %.loopexit.split-lp.loopexit.split-lp ], [ %.pn465, %5543 ] + %.merged508 = phi { ptr, i32 } [ %.pn469, %4634 ], [ %.pn467, %4717 ], [ %.pn.pn.pn.i, %_ZSt8_DestroyIPN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEES9_EvT_SB_RSaIT0_E.exit.i1690 ], [ %.pn.pn.pn.i, %5448 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit2004, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp2005, %.loopexit.split-lp.loopexit.split-lp ], [ %.pn465, %5543 ] call void @_ZNSt3mapIPN5osgeo4proj9operation19CoordinateOperationESt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessISB_ESaISB_EESC_IS4_ESaISt4pairIKS4_SF_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %188) #28 br label %.body1294 .body1294: ; preds = %4339, %4331, %.body1422, %4629, %4455, %4341 - %.merged515 = phi { ptr, i32 } [ %.merged516, %.body1422 ], [ %.pn463, %4629 ], [ %4456, %4455 ], [ %4342, %4341 ], [ %4340, %4339 ], [ %4332, %4331 ] + %.merged507 = phi { ptr, i32 } [ %.merged508, %.body1422 ], [ %.pn463, %4629 ], [ %4456, %4455 ], [ %4342, %4341 ], [ %4340, %4339 ], [ %4332, %4331 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %179) #28 call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %178) #28 call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %177) #28 @@ -74088,28 +74088,28 @@ _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_cold br label %_ZNSt10shared_ptrIN5osgeo4proj2io15DatabaseContextEED2Ev.exit1579 .body1291: ; preds = %.body1510, %.body1294, %6514, %4060, %4312 - %.merged513 = phi { ptr, i32 } [ %4313, %4312 ], [ %4061, %4060 ], [ %.merged515, %.body1294 ], [ %6515, %6514 ], [ %.pn461, %.body1510 ] + %.merged505 = phi { ptr, i32 } [ %4313, %4312 ], [ %4061, %4060 ], [ %.merged507, %.body1294 ], [ %6515, %6514 ], [ %.pn461, %.body1510 ] call void @_ZNSt10shared_ptrIN5osgeo4proj3crs13GeographicCRSEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %176) #28 call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairISt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaISH_EESJ_ESt4lessIS5_ESaIS6_IKS5_SK_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %175) #28 br label %6712 6712: ; preds = %.body1291, %3968, %3549 - %.merged512 = phi { ptr, i32 } [ %3550, %3549 ], [ %.merged513, %.body1291 ], [ %.pn458.pn, %3968 ] + %.merged504 = phi { ptr, i32 } [ %3550, %3549 ], [ %.merged505, %.body1291 ], [ %.pn458.pn, %3968 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %156) #28 br label %6713 6713: ; preds = %6712, %3338 - %.merged511 = phi { ptr, i32 } [ %.merged512, %6712 ], [ %3339, %3338 ] + %.merged503 = phi { ptr, i32 } [ %.merged504, %6712 ], [ %3339, %3338 ] call void @_ZNSt10shared_ptrIN5osgeo4proj3crs13GeographicCRSEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %154) #28 br label %6714 6714: ; preds = %6713, %3336 - %.merged510 = phi { ptr, i32 } [ %.merged511, %6713 ], [ %3337, %3336 ] + %.merged502 = phi { ptr, i32 } [ %.merged503, %6713 ], [ %3337, %3336 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %153) #28 br label %.loopexit2034 .loopexit2034: ; preds = %618, %1551, %.thread1899, %6714, %3240, %3114, %1744, %1072, %814, %233 - %.merged = phi { ptr, i32 } [ %.merged497, %814 ], [ %.merged492, %1744 ], [ %1546, %1551 ], [ %.merged502, %3114 ], [ %.pn471, %3240 ], [ %234, %233 ], [ %.merged510, %6714 ], [ %.pn417.pn.pn.pn.pn.pn.pn.pn, %1072 ], [ %1545, %.thread1899 ], [ %617, %618 ] + %.merged = phi { ptr, i32 } [ %.merged497, %814 ], [ %.merged492, %1744 ], [ %1546, %1551 ], [ %.merged509, %3114 ], [ %.pn471, %3240 ], [ %234, %233 ], [ %.merged502, %6714 ], [ %.pn417.pn.pn.pn.pn.pn.pn.pn, %1072 ], [ %1545, %.thread1899 ], [ %617, %618 ] call void @_ZNSt10shared_ptrIN5osgeo4proj2io15DatabaseContextEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %55) #28 resume { ptr, i32 } %.merged @@ -75265,22 +75265,22 @@ _ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperation br i1 %579, label %.critedge477, label %622 .loopexit.split-lp1226: ; preds = %568, %.loopexit1225, %.loopexit.split-lp1226.loopexit.split-lp, %.loopexit.split-lp1226.loopexit - %.merged462 = phi { ptr, i32 } [ %lpad.loopexit1227, %.loopexit1225 ], [ %lpad.loopexit1232, %.loopexit.split-lp1226.loopexit ], [ %lpad.loopexit.split-lp1233, %.loopexit.split-lp1226.loopexit.split-lp ], [ %.pn.pn, %568 ] + %.merged472 = phi { ptr, i32 } [ %lpad.loopexit1227, %.loopexit1225 ], [ %lpad.loopexit1232, %.loopexit.split-lp1226.loopexit ], [ %lpad.loopexit.split-lp1233, %.loopexit.split-lp1226.loopexit.split-lp ], [ %.pn.pn, %568 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #28 br label %580 580: ; preds = %.loopexit.split-lp1226, %557 - %.merged461 = phi { ptr, i32 } [ %.merged462, %.loopexit.split-lp1226 ], [ %558, %557 ] + %.merged471 = phi { ptr, i32 } [ %.merged472, %.loopexit.split-lp1226 ], [ %558, %557 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %34) #28 br label %581 581: ; preds = %580, %555 - %.merged460 = phi { ptr, i32 } [ %.merged461, %580 ], [ %556, %555 ] + %.merged470 = phi { ptr, i32 } [ %.merged471, %580 ], [ %556, %555 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #28 br label %582 582: ; preds = %581, %553 - %.merged459 = phi { ptr, i32 } [ %.merged460, %581 ], [ %554, %553 ] + %.merged469 = phi { ptr, i32 } [ %.merged470, %581 ], [ %554, %553 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs3CRSEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %31) #28 br label %623 @@ -75388,7 +75388,7 @@ _ZSt8_DestroyIPN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation20PointM br label %_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev.exit1021 623: ; preds = %582, %551 - %.merged458 = phi { ptr, i32 } [ %.merged459, %582 ], [ %552, %551 ] + %.merged468 = phi { ptr, i32 } [ %.merged469, %582 ], [ %552, %551 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation20PointMotionOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #28 br label %3745 @@ -77704,7 +77704,7 @@ _ZN5osgeo4proj9operationL12getStepCountERKN7dropbox6oxygen2nnISt10shared_ptrINS1 br label %1744 .loopexit1219: ; preds = %.critedge492, %.loopexit1214, %.loopexit.split-lp1215 - %.merged468 = phi { ptr, i32 } [ %lpad.loopexit1216, %.loopexit1214 ], [ %lpad.loopexit.split-lp1217, %.loopexit.split-lp1215 ], [ %.pn451, %.critedge492 ] + %.merged463 = phi { ptr, i32 } [ %lpad.loopexit1216, %.loopexit1214 ], [ %lpad.loopexit.split-lp1217, %.loopexit.split-lp1215 ], [ %.pn451, %.critedge492 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %68) #28 br label %1829 @@ -77898,22 +77898,22 @@ _ZN5osgeo4proj4util8optionalINS0_6common9DataEpochEEC2Ev.exit711: ; preds = %_ZN br i1 %1828, label %.critedge479, label %_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev.exit1004 1829: ; preds = %1822, %1821, %1783, %1782, %.loopexit1219, %1389 - %.merged467 = phi { ptr, i32 } [ %.merged468, %.loopexit1219 ], [ %1823, %1822 ], [ %.pn414, %1821 ], [ %1390, %1389 ], [ %1784, %1783 ], [ %.pn412, %1782 ] + %.merged462 = phi { ptr, i32 } [ %.merged463, %.loopexit1219 ], [ %1823, %1822 ], [ %.pn414, %1821 ], [ %1390, %1389 ], [ %1784, %1783 ], [ %.pn412, %1782 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #28 br label %1830 1830: ; preds = %1829, %1387 - %.merged466 = phi { ptr, i32 } [ %.merged467, %1829 ], [ %1388, %1387 ] + %.merged461 = phi { ptr, i32 } [ %.merged462, %1829 ], [ %1388, %1387 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %65) #28 br label %1831 1831: ; preds = %1830, %1385 - %.merged465 = phi { ptr, i32 } [ %.merged466, %1830 ], [ %1386, %1385 ] + %.merged460 = phi { ptr, i32 } [ %.merged461, %1830 ], [ %1386, %1385 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs3CRSEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %63) #28 br label %1832 1832: ; preds = %1383, %1831, %1381 - %.merged464 = phi { ptr, i32 } [ %.merged465, %1831 ], [ %1384, %1383 ], [ %1382, %1381 ] + %.merged459 = phi { ptr, i32 } [ %.merged460, %1831 ], [ %1384, %1383 ], [ %1382, %1381 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs3CRSEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %60) #28 br label %3744 @@ -81660,22 +81660,22 @@ _ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs13GeographicCRSEEED2Ev.exit br i1 %.not1197, label %._crit_edge1456, label %1878 .body872: ; preds = %2731, %.loopexit, %.loopexit.split-lp, %2778, %.body895 - %.merged472 = phi { ptr, i32 } [ %.pn441, %.body895 ], [ %2779, %2778 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ], [ %.pn443, %2731 ] + %.merged467 = phi { ptr, i32 } [ %.pn441, %.body895 ], [ %2779, %2778 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ], [ %.pn443, %2731 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %96) #28 br label %3473 3473: ; preds = %.body872, %2721 - %.merged471 = phi { ptr, i32 } [ %.merged472, %.body872 ], [ %.pn434.pn, %2721 ] + %.merged466 = phi { ptr, i32 } [ %.merged467, %.body872 ], [ %.pn434.pn, %2721 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %92) #28 br label %.loopexit1212 .loopexit1212: ; preds = %2498, %2378, %2103, %3473, %2713, %1995 - %.merged470 = phi { ptr, i32 } [ %.merged471, %3473 ], [ %.pn431, %2713 ], [ %1996, %1995 ], [ %2379, %2378 ], [ %2104, %2103 ], [ %.pn426.pn, %2498 ] + %.merged465 = phi { ptr, i32 } [ %.merged466, %3473 ], [ %.pn431, %2713 ], [ %1996, %1995 ], [ %2379, %2378 ], [ %2104, %2103 ], [ %.pn426.pn, %2498 ] call void @_ZNSt10shared_ptrIN5osgeo4proj3crs3CRSEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %81) #28 br label %3474 3474: ; preds = %.loopexit1212, %1918 - %.merged469 = phi { ptr, i32 } [ %.merged470, %.loopexit1212 ], [ %1919, %1918 ] + %.merged464 = phi { ptr, i32 } [ %.merged465, %.loopexit1212 ], [ %1919, %1918 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs13GeographicCRSEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %80) #28 br label %3744 @@ -82305,12 +82305,12 @@ _ZNSt10shared_ptrIN5osgeo4proj3crs13GeographicCRSEED2Ev.exit1042: ; preds = %_ZN ret void 3744: ; preds = %1294, %1265, %3593, %3549, %3474, %1832, %1379, %1300, %1271, %1223, %1197 - %.merged463 = phi { ptr, i32 } [ %.merged464, %1832 ], [ %.merged469, %3474 ], [ %.pn418, %3593 ], [ %.pn416, %3549 ], [ %1198, %1197 ], [ %1380, %1379 ], [ %.pn410, %1271 ], [ %.pn408, %1300 ], [ %1295, %1294 ], [ %1266, %1265 ], [ %.pn405.pn, %1223 ] + %.merged458 = phi { ptr, i32 } [ %.merged459, %1832 ], [ %.merged464, %3474 ], [ %.pn418, %3593 ], [ %.pn416, %3549 ], [ %1198, %1197 ], [ %1380, %1379 ], [ %.pn410, %1271 ], [ %.pn408, %1300 ], [ %1295, %1294 ], [ %1266, %1265 ], [ %.pn405.pn, %1223 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #28 br label %3745 3745: ; preds = %878, %547, %3744, %904, %879, %623, %549, %545 - %.merged457 = phi { ptr, i32 } [ %.merged473, %904 ], [ %880, %879 ], [ %.merged463, %3744 ], [ %.pn403, %878 ], [ %.merged458, %623 ], [ %550, %549 ], [ %548, %547 ], [ %546, %545 ] + %.merged457 = phi { ptr, i32 } [ %.merged473, %904 ], [ %880, %879 ], [ %.merged458, %3744 ], [ %.pn403, %878 ], [ %.merged468, %623 ], [ %550, %549 ], [ %548, %547 ], [ %546, %545 ] call void @_ZNSt10shared_ptrIN5osgeo4proj2io15DatabaseContextEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #28 br label %3746 @@ -111518,7 +111518,7 @@ _ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj2io16AuthorityFactoryEEED2Ev.ex br label %456 456: ; preds = %454, %377 - %.merged118 = phi { ptr, i32 } [ %455, %454 ], [ %.pn.pn, %377 ] + %.merged119 = phi { ptr, i32 } [ %455, %454 ], [ %.pn.pn, %377 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj2io16AuthorityFactoryEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #28 br label %1325 @@ -112046,7 +112046,7 @@ _ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj2io16AuthorityFactoryEEED2Ev.ex br label %707 707: ; preds = %705, %663 - %.merged120 = phi { ptr, i32 } [ %706, %705 ], [ %.pn107.pn, %663 ] + %.merged118 = phi { ptr, i32 } [ %706, %705 ], [ %.pn107.pn, %663 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj2io16AuthorityFactoryEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #28 br label %1325 @@ -112702,7 +112702,7 @@ _ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj2io16AuthorityFactoryEEED2Ev.ex br label %1010 1010: ; preds = %1008, %931 - %.merged119 = phi { ptr, i32 } [ %1009, %1008 ], [ %.pn111.pn, %931 ] + %.merged120 = phi { ptr, i32 } [ %1009, %1008 ], [ %.pn111.pn, %931 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj2io16AuthorityFactoryEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #28 br label %1325 @@ -113379,7 +113379,7 @@ _ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj3crs3CRSEEEC2ERKS8_.exit: ; pre ret void 1325: ; preds = %1276, %1010, %707, %456 - %.merged = phi { ptr, i32 } [ %.pn116, %1276 ], [ %.merged119, %1010 ], [ %.merged120, %707 ], [ %.merged118, %456 ] + %.merged = phi { ptr, i32 } [ %.pn116, %1276 ], [ %.merged120, %1010 ], [ %.merged118, %707 ], [ %.merged119, %456 ] resume { ptr, i32 } %.merged } diff --git a/bench/proj/optimized/factory.cpp.ll b/bench/proj/optimized/factory.cpp.ll index 9b72d0dcca7..0ad5d090a1f 100644 --- a/bench/proj/optimized/factory.cpp.ll +++ b/bench/proj/optimized/factory.cpp.ll @@ -76810,7 +76810,7 @@ _ZNSt16allocator_traitsISaISt10_List_nodeISt6vectorINSt7__cxx1112basic_stringIcS to label %2741 unwind label %5255 2741: ; preds = %2740, %262, %264, %2727 - %.merged616 = phi { ptr, i32 } [ %.pn6081716, %264 ], [ %263, %262 ], [ %.pn606, %2740 ], [ %.pn597.pn.pn.pn.pn.pn.pn.pn, %2727 ] + %.merged614 = phi { ptr, i32 } [ %.pn6081716, %264 ], [ %263, %262 ], [ %.pn606, %2740 ], [ %.pn597.pn.pn.pn.pn.pn.pn.pn, %2727 ] call void @_ZNSt7__cxx114listISt6vectorINS_12basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %37) #30 br label %.body @@ -81053,12 +81053,12 @@ _ZNSt7__cxx114listISt6vectorINS_12basic_stringIcSt11char_traitsIcESaIcEEESaIS6_E to label %4572 unwind label %5255 4572: ; preds = %4571, %3829, %3831, %4558 - %.merged614 = phi { ptr, i32 } [ %.pn5591726, %3831 ], [ %3830, %3829 ], [ %.pn557, %4571 ], [ %.pn550.pn.pn.pn.pn.pn, %4558 ] + %.merged617 = phi { ptr, i32 } [ %.pn5591726, %3831 ], [ %3830, %3829 ], [ %.pn557, %4571 ], [ %.pn550.pn.pn.pn.pn.pn, %4558 ] call void @_ZNSt7__cxx114listISt6vectorINS_12basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %135) #30 br label %4573 4573: ; preds = %.loopexit1742, %.loopexit.split-lp1743, %4572, %3826 - %.merged613 = phi { ptr, i32 } [ %.merged614, %4572 ], [ %3827, %3826 ], [ %lpad.loopexit1744, %.loopexit1742 ], [ %lpad.loopexit.split-lp1745, %.loopexit.split-lp1743 ] + %.merged616 = phi { ptr, i32 } [ %.merged617, %4572 ], [ %3827, %3826 ], [ %lpad.loopexit1744, %.loopexit1742 ], [ %lpad.loopexit.split-lp1745, %.loopexit.split-lp1743 ] call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %133) #30 br label %.body @@ -82718,7 +82718,7 @@ _ZNSt16allocator_traitsISaISt10_List_nodeISt6vectorINSt7__cxx1112basic_stringIcS br label %.body1557 .body1557: ; preds = %4606, %4596, %4598, %5243 - %.merged617 = phi { ptr, i32 } [ %.pn5381732, %4598 ], [ %4597, %4596 ], [ %5245, %5243 ], [ %.pn.i1556, %4606 ] + %.merged613 = phi { ptr, i32 } [ %.pn5381732, %4598 ], [ %4597, %4596 ], [ %5245, %5243 ], [ %.pn.i1556, %4606 ] call void @_ZNSt7__cxx114listISt6vectorINS_12basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %165) #30 br label %.body @@ -82762,7 +82762,7 @@ _ZNSt7__cxx114listISt6vectorINS_12basic_stringIcSt11char_traitsIcESaIcEEESaIS6_E ret void .body: ; preds = %5252, %193, %2752, %4585, %203, %251, %5254, %.body1557, %4573, %3761, %2741, %225 - %.merged = phi { ptr, i32 } [ %.pn610.pn, %225 ], [ %.merged616, %2741 ], [ %.merged615, %3761 ], [ %.merged613, %4573 ], [ %.merged617, %.body1557 ], [ %.pn1736, %5254 ], [ %5253, %5252 ], [ %.pn.i, %193 ], [ %.pn.i622, %251 ], [ %.pn.i1160, %2752 ], [ %204, %203 ], [ %.pn.i1552, %4585 ] + %.merged = phi { ptr, i32 } [ %.pn610.pn, %225 ], [ %.merged614, %2741 ], [ %.merged615, %3761 ], [ %.merged616, %4573 ], [ %.merged613, %.body1557 ], [ %.pn1736, %5254 ], [ %5253, %5252 ], [ %.pn.i, %193 ], [ %.pn.i622, %251 ], [ %.pn.i1160, %2752 ], [ %204, %203 ], [ %.pn.i1552, %4585 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #30 resume { ptr, i32 } %.merged @@ -90771,7 +90771,7 @@ _ZNSt16allocator_traitsISaISt10_List_nodeISt6vectorINSt7__cxx1112basic_stringIcS br i1 %.not.i.i.i278, label %_ZNSt10shared_ptrIN5osgeo4proj3crs12ProjectedCRSEED2Ev.exitthread-pre-split, label %.lr.ph.i.i.i, !llvm.loop !6 337: ; preds = %326, %318 - %.merged237 = phi { ptr, i32 } [ %327, %326 ], [ %319, %318 ] + %.merged233 = phi { ptr, i32 } [ %327, %326 ], [ %319, %318 ] call void @_ZNSt7__cxx114listISt6vectorINS_12basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #30 br label %605 @@ -91319,18 +91319,18 @@ _ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj2io16AuthorityFactoryEEED2Ev.ex br i1 %cond, label %.invoke, label %1428 605: ; preds = %397, %337, %316 - %.merged236 = phi { ptr, i32 } [ %398, %397 ], [ %317, %316 ], [ %.merged237, %337 ] + %.merged232 = phi { ptr, i32 } [ %398, %397 ], [ %317, %316 ], [ %.merged233, %337 ] call void @_ZNSt10shared_ptrIN5osgeo4proj3crs12ProjectedCRSEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %29) #30 call void @_ZNSt10shared_ptrIN5osgeo4proj3crs3CRSEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #30 br label %606 606: ; preds = %605, %301 - %.merged235 = phi { ptr, i32 } [ %.merged236, %605 ], [ %302, %301 ] + %.merged231 = phi { ptr, i32 } [ %.merged232, %605 ], [ %302, %301 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #30 br label %.body .body: ; preds = %299, %243, %606 - %.merged234 = phi { ptr, i32 } [ %.merged235, %606 ], [ %300, %299 ], [ %244, %243 ] + %.merged230 = phi { ptr, i32 } [ %.merged231, %606 ], [ %300, %299 ], [ %244, %243 ] call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj2io16AuthorityFactoryEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %26) #30 br label %1472 @@ -93346,7 +93346,7 @@ _ZNSt7__cxx114listIN5osgeo4proj2io9SQLValuesESaIS4_EED2Ev.exit: ; preds = %.lr.p br label %.critedge245 .body450: ; preds = %1064, %1316, %.loopexit, %.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit, %918, %1145, %1387, %1149, %922 - %.merged233 = phi { ptr, i32 } [ %923, %922 ], [ %1388, %1387 ], [ %1150, %1149 ], [ %919, %918 ], [ %1146, %1145 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit622, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp623, %.loopexit.split-lp.loopexit.split-lp ], [ %.pn220, %1316 ], [ %.pn224, %1064 ] + %.merged237 = phi { ptr, i32 } [ %923, %922 ], [ %1388, %1387 ], [ %1150, %1149 ], [ %919, %918 ], [ %1146, %1145 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit622, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp623, %.loopexit.split-lp.loopexit.split-lp ], [ %.pn220, %1316 ], [ %.pn224, %1064 ] %1418 = load ptr, ptr %38, align 8 %.not.i.i.i547 = icmp eq ptr %1418, null br i1 %.not.i.i.i547, label %.body444, label %1419 @@ -93368,18 +93368,18 @@ _ZNSt7__cxx114listIN5osgeo4proj2io9SQLValuesESaIS4_EED2Ev.exit: ; preds = %.lr.p br label %.body444 .body444: ; preds = %1419, %.body450, %878, %870, %880 - %.merged232 = phi { ptr, i32 } [ %881, %880 ], [ %879, %878 ], [ %871, %870 ], [ %.merged233, %.body450 ], [ %.merged233, %1419 ] + %.merged236 = phi { ptr, i32 } [ %881, %880 ], [ %879, %878 ], [ %871, %870 ], [ %.merged237, %.body450 ], [ %.merged237, %1419 ] call void @_ZNSt3setISt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_ESt4lessIS7_ESaIS7_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %36) #30 call void @_ZNSt7__cxx114listISt6vectorINS_12basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #30 br label %.body319 .body319: ; preds = %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i326, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i336, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i346, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i356, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i366, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i376, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i386, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i396, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i406, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i416, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i426, %688, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i437, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i431, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i421, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i411, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i401, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i391, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i381, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i371, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i361, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i351, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i341, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i331, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i321, %.body444 - %.merged231 = phi { ptr, i32 } [ %.merged232, %.body444 ], [ %624, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i ], [ %633, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i321 ], [ %642, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i326 ], [ %651, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i331 ], [ %660, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i336 ], [ %669, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i341 ], [ %678, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i346 ], [ %687, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i351 ], [ %696, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i356 ], [ %705, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i361 ], [ %714, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i366 ], [ %723, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i371 ], [ %733, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i376 ], [ %742, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i381 ], [ %751, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i386 ], [ %760, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i391 ], [ %767, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i396 ], [ %776, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i401 ], [ %786, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i406 ], [ %795, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i411 ], [ %804, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i416 ], [ %813, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i421 ], [ %820, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i426 ], [ %829, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i431 ], [ %689, %688 ], [ %849, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i437 ] + %.merged235 = phi { ptr, i32 } [ %.merged236, %.body444 ], [ %624, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i ], [ %633, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i321 ], [ %642, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i326 ], [ %651, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i331 ], [ %660, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i336 ], [ %669, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i341 ], [ %678, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i346 ], [ %687, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i351 ], [ %696, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i356 ], [ %705, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i361 ], [ %714, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i366 ], [ %723, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i371 ], [ %733, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i376 ], [ %742, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i381 ], [ %751, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i386 ], [ %760, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i391 ], [ %767, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i396 ], [ %776, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i401 ], [ %786, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i406 ], [ %795, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i411 ], [ %804, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i416 ], [ %813, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i421 ], [ %820, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i426 ], [ %829, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i431 ], [ %689, %688 ], [ %849, %_ZNSt15__allocated_ptrISaISt10_List_nodeIN5osgeo4proj2io9SQLValuesEEEED2Ev.exit9.i.i.i437 ] call void @_ZNSt7__cxx114listIN5osgeo4proj2io9SQLValuesESaIS4_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %34) #30 br label %1427 1427: ; preds = %.body319, %609 - %.merged230 = phi { ptr, i32 } [ %.merged231, %.body319 ], [ %610, %609 ] + %.merged234 = phi { ptr, i32 } [ %.merged235, %.body319 ], [ %610, %609 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #30 br label %1472 @@ -93491,7 +93491,7 @@ _ZSt8_DestroyIPN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19Coordi ret void 1472: ; preds = %1427, %.body, %233 - %.merged229 = phi { ptr, i32 } [ %.merged230, %1427 ], [ %.merged234, %.body ], [ %234, %233 ] + %.merged229 = phi { ptr, i32 } [ %.merged234, %1427 ], [ %.merged230, %.body ], [ %234, %233 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation19CoordinateOperationEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #30 br label %.loopexit629 diff --git a/bench/proj/optimized/filemanager.cpp.ll b/bench/proj/optimized/filemanager.cpp.ll index d0ecafcdb86..7f94c762682 100644 --- a/bench/proj/optimized/filemanager.cpp.ll +++ b/bench/proj/optimized/filemanager.cpp.ll @@ -2783,7 +2783,7 @@ _ZNSt10shared_ptrIN5osgeo4proj2io15DatabaseContextEED2Ev.exit: ; preds = %106, % br i1 %cond1, label %_ZNSt10shared_ptrIN5osgeo4proj2io15DatabaseContextEED2Ev.exit162, label %312 143: ; preds = %102, %104, %87 - %.merged125 = phi { ptr, i32 } [ %105, %104 ], [ %103, %102 ], [ %.pn118, %87 ] + %.merged126 = phi { ptr, i32 } [ %105, %104 ], [ %103, %102 ], [ %.pn118, %87 ] call void @_ZNSt10shared_ptrIN5osgeo4proj2io15DatabaseContextEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #24 br label %316 @@ -3089,7 +3089,7 @@ _ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE24_M_release_last_use_cold br label %_ZNSt10shared_ptrIN5osgeo4proj2io15DatabaseContextEED2Ev.exit162 243: ; preds = %202, %204, %191 - %.merged126 = phi { ptr, i32 } [ %205, %204 ], [ %203, %202 ], [ %.pn114, %191 ] + %.merged125 = phi { ptr, i32 } [ %205, %204 ], [ %203, %202 ], [ %.pn114, %191 ] call void @_ZNSt10shared_ptrIN5osgeo4proj2io15DatabaseContextEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #24 br label %316 @@ -3372,7 +3372,7 @@ _ZNSt10unique_ptrIN5osgeo4proj4FileESt14default_deleteIS2_EED2Ev.exit180: ; pred 316: ; preds = %294, %243, %143 %.sroa.0.3 = phi ptr [ %.sroa.0.14, %294 ], [ %.sroa.0.4, %143 ], [ %.sroa.0.10, %243 ] - %.merged = phi { ptr, i32 } [ %295, %294 ], [ %.merged125, %143 ], [ %.merged126, %243 ] + %.merged = phi { ptr, i32 } [ %295, %294 ], [ %.merged126, %143 ], [ %.merged125, %243 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #24 %.not.i181 = icmp eq ptr %.sroa.0.3, null br i1 %.not.i181, label %_ZNSt10unique_ptrIN5osgeo4proj4FileESt14default_deleteIS2_EED2Ev.exit183, label %_ZNKSt14default_deleteIN5osgeo4proj4FileEEclEPS2_.exit.i182 diff --git a/bench/proj/optimized/io.cpp.ll b/bench/proj/optimized/io.cpp.ll index dd06dfedb43..fceb8ff605a 100644 --- a/bench/proj/optimized/io.cpp.ll +++ b/bench/proj/optimized/io.cpp.ll @@ -45771,7 +45771,7 @@ _ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5osgeo4proj6commo br label %.loopexit547 .loopexit547: ; preds = %292, %298 - %.merged297 = phi { ptr, i32 } [ %299, %298 ], [ %.pn258.pn.pn.pn, %292 ] + %.merged290 = phi { ptr, i32 } [ %299, %298 ], [ %.pn258.pn.pn.pn, %292 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #39 br label %446 @@ -46230,7 +46230,7 @@ _ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5osgeo4proj6commo br label %446 446: ; preds = %445, %353, %.loopexit547, %280 - %.merged296 = phi { ptr, i32 } [ %.merged297, %.loopexit547 ], [ %281, %280 ], [ %.pn247.pn.pn.pn.pn.pn.pn.pn.pn.pn, %445 ], [ %.pn231, %353 ] + %.merged289 = phi { ptr, i32 } [ %.merged290, %.loopexit547 ], [ %281, %280 ], [ %.pn247.pn.pn.pn.pn.pn.pn.pn.pn.pn, %445 ], [ %.pn231, %353 ] call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN5osgeo4proj6common7MeasureESt4lessIS5_ESaISt4pairIKS5_S9_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %17) #39 br label %1445 @@ -46535,7 +46535,7 @@ _ZNSt10shared_ptrIN5osgeo4proj3crs12ProjectedCRSEED2Ev.exit339: ; preds = %.crit br label %.sink.split642 580: ; preds = %538, %474 - %.merged289 = phi { ptr, i32 } [ %475, %474 ], [ %.pn.pn, %538 ] + %.merged297 = phi { ptr, i32 } [ %475, %474 ], [ %.pn.pn, %538 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #39 br label %1445 @@ -47581,17 +47581,17 @@ _ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation14ParameterValueEEED2 br label %1020 1017: ; preds = %1015, %1002, %990, %851 - %.merged295 = phi { ptr, i32 } [ %.pn287519, %1015 ], [ %.pn283.pn.pn, %1002 ], [ %991, %990 ], [ %852, %851 ] + %.merged296 = phi { ptr, i32 } [ %.pn287519, %1015 ], [ %.pn283.pn.pn, %1002 ], [ %991, %990 ], [ %852, %851 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #39 br label %1018 1018: ; preds = %1017, %849 - %.merged294 = phi { ptr, i32 } [ %.merged295, %1017 ], [ %850, %849 ] + %.merged295 = phi { ptr, i32 } [ %.merged296, %1017 ], [ %850, %849 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #39 br label %1019 1019: ; preds = %1018, %847 - %.merged293 = phi { ptr, i32 } [ %.merged294, %1018 ], [ %848, %847 ] + %.merged294 = phi { ptr, i32 } [ %.merged295, %1018 ], [ %848, %847 ] call void @_ZN5osgeo4proj4util11PropertyMapD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #39 br label %.loopexit.split-lp @@ -48351,7 +48351,7 @@ _ZNSt6vectorIbSaIbEED2Ev.exit: ; preds = %_ZN7dropbox6oxygen2 br label %.loopexit.split-lp .loopexit.split-lp: ; preds = %.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit, %1349, %1284, %1162, %1152, %1019 - %.merged292 = phi { ptr, i32 } [ %.merged293, %1019 ], [ %.pn278.pn, %1162 ], [ %.pn276, %1152 ], [ %.pn274, %1349 ], [ %.pn272, %1284 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit534, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit539, %.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ] + %.merged293 = phi { ptr, i32 } [ %.merged294, %1019 ], [ %.pn278.pn, %1162 ], [ %.pn276, %1152 ], [ %.pn274, %1349 ], [ %.pn272, %1284 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit534, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit539, %.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ] %1350 = load ptr, ptr %63, align 8 %.not.i.i.i450 = icmp eq ptr %1350, null br i1 %.not.i.i.i450, label %_ZNSt6vectorIbSaIbEED2Ev.exit454, label %1351 @@ -48373,12 +48373,12 @@ _ZNSt6vectorIbSaIbEED2Ev.exit: ; preds = %_ZN7dropbox6oxygen2 br label %_ZNSt6vectorIbSaIbEED2Ev.exit454 _ZNSt6vectorIbSaIbEED2Ev.exit454: ; preds = %1351, %.loopexit.split-lp, %787 - %.merged291 = phi { ptr, i32 } [ %788, %787 ], [ %.merged292, %.loopexit.split-lp ], [ %.merged292, %1351 ] + %.merged292 = phi { ptr, i32 } [ %788, %787 ], [ %.merged293, %.loopexit.split-lp ], [ %.merged293, %1351 ] call void @_ZN5osgeo4proj4util11PropertyMapD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #39 br label %1359 1359: ; preds = %.loopexit542, %.loopexit.split-lp543, %774, %_ZNSt6vectorIbSaIbEED2Ev.exit454, %592 - %.merged290 = phi { ptr, i32 } [ %.merged291, %_ZNSt6vectorIbSaIbEED2Ev.exit454 ], [ %775, %774 ], [ %593, %592 ], [ %lpad.loopexit544, %.loopexit542 ], [ %lpad.loopexit.split-lp545, %.loopexit.split-lp543 ] + %.merged291 = phi { ptr, i32 } [ %.merged292, %_ZNSt6vectorIbSaIbEED2Ev.exit454 ], [ %775, %774 ], [ %593, %592 ], [ %lpad.loopexit544, %.loopexit542 ], [ %lpad.loopexit.split-lp545, %.loopexit.split-lp543 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #39 br label %1445 @@ -48592,7 +48592,7 @@ _ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation18Operatio ret void 1445: ; preds = %1359, %580, %446, %237, %116 - %.merged = phi { ptr, i32 } [ %.merged290, %1359 ], [ %.pn263.pn.pn, %237 ], [ %117, %116 ], [ %.merged296, %446 ], [ %.merged289, %580 ] + %.merged = phi { ptr, i32 } [ %.merged291, %1359 ], [ %.pn263.pn.pn, %237 ], [ %117, %116 ], [ %.merged289, %446 ], [ %.merged297, %580 ] call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation14ParameterValueEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #39 call void @_ZNSt6vectorIN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj9operation18OperationParameterEEEESaIS9_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #39 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #39 @@ -110351,7 +110351,7 @@ _ZN5osgeo4proj2io10JSONParserD2Ev.exit: ; preds = %386, %404, %417, %_ br label %428 428: ; preds = %385, %426, %_ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEED2Ev.exit574 - %.merged532 = phi { ptr, i32 } [ %427, %426 ], [ %.pn410, %385 ], [ %361, %_ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEED2Ev.exit574 ] + %.merged534 = phi { ptr, i32 } [ %427, %426 ], [ %.pn410, %385 ], [ %361, %_ZNSt8functionIFbiN8nlohmann6detail13parse_event_tERNS0_10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS0_14adl_serializerES5_IhSaIhEEEEEED2Ev.exit574 ] call void @_ZN8nlohmann10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %17) #39 br label %2041 @@ -114521,7 +114521,7 @@ _ZN5osgeo4proj4util15BaseObjectNNPtrC2INS0_3crs11CompoundCRSEEEON7dropbox6oxygen br label %2039 _ZNSt6vectorIN5osgeo4proj2io16AuthorityFactory10ObjectTypeESaIS4_EED2Ev.exit721: ; preds = %2000, %1997, %.thread805, %.thread809, %1993, %1942 - %.merged534 = phi { ptr, i32 } [ %1994, %1993 ], [ %.pn432.pn.pn.pn.pn.pn.pn.pn, %1942 ], [ %1996, %.thread809 ], [ %1995, %.thread805 ], [ %1998, %1997 ], [ %1998, %2000 ] + %.merged533 = phi { ptr, i32 } [ %1994, %1993 ], [ %.pn432.pn.pn.pn.pn.pn.pn.pn, %1942 ], [ %1996, %.thread809 ], [ %1995, %.thread805 ], [ %1998, %1997 ], [ %1998, %2000 ] call void @_ZNSt10shared_ptrIN5osgeo4proj3crs11CompoundCRSEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %159) #39 call void @_ZN7dropbox6oxygen2nnISt10shared_ptrIN5osgeo4proj2io16AuthorityFactoryEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %155) #39 br label %2040 @@ -114556,7 +114556,7 @@ _ZNSt6vectorIN5osgeo4proj2io16AuthorityFactory10ObjectTypeESaIS4_EED2Ev.exit721: br label %_ZN8nlohmann10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEblmdSaNS_14adl_serializerES2_IhSaIhEEED2Ev.exit582 2040: ; preds = %1737, %1777, %1739, %2037, %_ZNSt6vectorIN5osgeo4proj2io16AuthorityFactory10ObjectTypeESaIS4_EED2Ev.exit721, %1906, %1826, %1792, %1741, %1709, %1616, %1609, %983, %976, %847, %610, %608 - %.merged533 = phi { ptr, i32 } [ %.pn502.pn.pn, %1609 ], [ %611, %610 ], [ %984, %983 ], [ %.pn455.pn, %1709 ], [ %1617, %1616 ], [ %1742, %1741 ], [ %1740, %1739 ], [ %1738, %1737 ], [ %.pn445.pn.pn.pn, %1792 ], [ %1827, %1826 ], [ %2038, %2037 ], [ %.merged534, %_ZNSt6vectorIN5osgeo4proj2io16AuthorityFactory10ObjectTypeESaIS4_EED2Ev.exit721 ], [ %1907, %1906 ], [ %1778, %1777 ], [ %.pn523.pn, %847 ], [ %609, %608 ], [ %.pn418.pn.pn.pn.pn.pn.pn.pn.pn.pn, %976 ] + %.merged532 = phi { ptr, i32 } [ %.pn502.pn.pn, %1609 ], [ %611, %610 ], [ %984, %983 ], [ %.pn455.pn, %1709 ], [ %1617, %1616 ], [ %1742, %1741 ], [ %1740, %1739 ], [ %1738, %1737 ], [ %.pn445.pn.pn.pn, %1792 ], [ %1827, %1826 ], [ %2038, %2037 ], [ %.merged533, %_ZNSt6vectorIN5osgeo4proj2io16AuthorityFactory10ObjectTypeESaIS4_EED2Ev.exit721 ], [ %1907, %1906 ], [ %1778, %1777 ], [ %.pn523.pn, %847 ], [ %609, %608 ], [ %.pn418.pn.pn.pn.pn.pn.pn.pn.pn.pn, %976 ] call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #39 br label %2041 @@ -114564,7 +114564,7 @@ _ZN8nlohmann10basic_jsonISt3mapSt6vectorNSt7__cxx1112basic_stringIcSt11char_trai ret void 2041: ; preds = %2040, %594, %576, %545, %460, %453, %428, %286, %186 - %.merged = phi { ptr, i32 } [ %187, %186 ], [ %461, %460 ], [ %546, %545 ], [ %577, %576 ], [ %.merged533, %2040 ], [ %595, %594 ], [ %.pn412, %453 ], [ %.merged532, %428 ], [ %.merged529, %286 ] + %.merged = phi { ptr, i32 } [ %187, %186 ], [ %461, %460 ], [ %546, %545 ], [ %577, %576 ], [ %.merged532, %2040 ], [ %595, %594 ], [ %.pn412, %453 ], [ %.merged534, %428 ], [ %.merged529, %286 ] resume { ptr, i32 } %.merged 2042: ; preds = %844, %834, %385, %281, %244 @@ -121420,7 +121420,7 @@ _ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdSt4lessIS5_ESaISt br label %.loopexit1866 .loopexit1866: ; preds = %2196, %2346, %2304, %2211 - %.merged937 = phi { ptr, i32 } [ %2212, %2211 ], [ %.pn915.pn.pn, %2346 ], [ %2305, %2304 ], [ %lpad.phi1862, %2196 ] + %.merged936 = phi { ptr, i32 } [ %2212, %2211 ], [ %.pn915.pn.pn, %2346 ], [ %2305, %2304 ], [ %lpad.phi1862, %2196 ] call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdSt4lessIS5_ESaISt4pairIKS5_dEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %77) #39 call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdSt4lessIS5_ESaISt4pairIKS5_dEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %76) #39 br label %3583 @@ -121725,7 +121725,7 @@ _ZNSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_ ] .loopexit.split-lp1853: ; preds = %2413, %.loopexit1852, %.loopexit.split-lp1853.loopexit.split-lp, %.loopexit.split-lp1853.loopexit - %.merged938 = phi { ptr, i32 } [ %lpad.loopexit1854, %.loopexit1852 ], [ %lpad.loopexit1856, %.loopexit.split-lp1853.loopexit ], [ %lpad.loopexit.split-lp1857, %.loopexit.split-lp1853.loopexit.split-lp ], [ %2414, %2413 ] + %.merged937 = phi { ptr, i32 } [ %lpad.loopexit1854, %.loopexit1852 ], [ %lpad.loopexit1856, %.loopexit.split-lp1853.loopexit ], [ %lpad.loopexit.split-lp1857, %.loopexit.split-lp1853.loopexit.split-lp ], [ %2414, %2413 ] call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %93) #39 call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %92) #39 call void @_ZNSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %91) #39 @@ -122069,7 +122069,7 @@ _ZNSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_ ] .loopexit.split-lp: ; preds = %2527, %.loopexit1848, %.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit - %.merged936 = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit1848 ], [ %lpad.loopexit1849, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp1850, %.loopexit.split-lp.loopexit.split-lp ], [ %2528, %2527 ] + %.merged938 = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit1848 ], [ %lpad.loopexit1849, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp1850, %.loopexit.split-lp.loopexit.split-lp ], [ %2528, %2527 ] call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %97) #39 call void @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %96) #39 call void @_ZNSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %95) #39 @@ -124077,7 +124077,7 @@ _ZN5osgeo4proj2io19PROJStringFormatter7Private14appendToResultEPKc.exit1482: ; p ret ptr %3582 3583: ; preds = %3569, %3422, %3256, %.body1314, %2703, %.loopexit.split-lp, %.loopexit.split-lp1853, %.loopexit1866, %2048, %1974, %1804, %1678, %1552, %1441, %1330, %1220, %1103, %385 - %.merged = phi { ptr, i32 } [ %.pn934, %385 ], [ %.pn931.pn, %2703 ], [ %.merged936, %.loopexit.split-lp ], [ %.pn925, %.body1314 ], [ %3257, %3256 ], [ %3423, %3422 ], [ %.pn919.pn, %3569 ], [ %.merged938, %.loopexit.split-lp1853 ], [ %.merged937, %.loopexit1866 ], [ %.pn912, %2048 ], [ %.pn910, %1974 ], [ %.pn905.pn.pn.pn, %1804 ], [ %.pn900.pn.pn.pn, %1678 ], [ %.pn895.pn.pn.pn, %1552 ], [ %.pn890.pn.pn.pn, %1441 ], [ %.pn885.pn.pn.pn, %1330 ], [ %.pn882.pn, %1220 ], [ %.pn.pn.pn.pn, %1103 ] + %.merged = phi { ptr, i32 } [ %.pn934, %385 ], [ %.pn931.pn, %2703 ], [ %.merged938, %.loopexit.split-lp ], [ %.pn925, %.body1314 ], [ %3257, %3256 ], [ %3423, %3422 ], [ %.pn919.pn, %3569 ], [ %.merged937, %.loopexit.split-lp1853 ], [ %.merged936, %.loopexit1866 ], [ %.pn912, %2048 ], [ %.pn910, %1974 ], [ %.pn905.pn.pn.pn, %1804 ], [ %.pn900.pn.pn.pn, %1678 ], [ %.pn895.pn.pn.pn, %1552 ], [ %.pn890.pn.pn.pn, %1441 ], [ %.pn885.pn.pn.pn, %1330 ], [ %.pn882.pn, %1220 ], [ %.pn.pn.pn.pn, %1103 ] resume { ptr, i32 } %.merged 3584: ; preds = %_ZNSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_EED2Ev.exit1258, %_ZNSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_EED2Ev.exit1236, %_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEdSt4lessIS5_ESaISt4pairIKS5_dEEED2Ev.exit1221 diff --git a/bench/quantlib/optimized/qrdecomposition.ll b/bench/quantlib/optimized/qrdecomposition.ll index 2b4d1e7c4eb..00914854ea1 100644 --- a/bench/quantlib/optimized/qrdecomposition.ll +++ b/bench/quantlib/optimized/qrdecomposition.ll @@ -335,18 +335,22 @@ for.body106.preheader: ; preds = %invoke.cont96 %wide.trip.count = and i64 %0, 2147483647 br label %for.body106 -cond.true.i175: ; preds = %for.body106, %invoke.cont96 +for.cond.cleanup105: ; preds = %for.body106 + br i1 %cmp19.not.i, label %_ZN8QuantLib5ArrayC2Em.exit, label %cond.true.i175 + +cond.true.i175: ; preds = %invoke.cont96, %for.cond.cleanup105 %48 = icmp ugt i64 %1, 2305843009213693951 %49 = shl nuw i64 %1, 3 %50 = select i1 %48, i64 -1, i64 %49 %call.i178 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %50) #19 to label %_ZN8QuantLib5ArrayC2Em.exit unwind label %lpad116 -_ZN8QuantLib5ArrayC2Em.exit: ; preds = %cond.true.i175 - br i1 %cmp104456, label %for.body122.lr.ph, label %if.end321.sink.split +_ZN8QuantLib5ArrayC2Em.exit: ; preds = %cond.true.i175, %for.cond.cleanup105 + %cond.i176 = phi ptr [ null, %for.cond.cleanup105 ], [ %call.i178, %cond.true.i175 ] + br i1 %cmp104456, label %for.body122.lr.ph, label %for.cond.cleanup121 for.body122.lr.ph: ; preds = %_ZN8QuantLib5ArrayC2Em.exit - %add.ptr.i209 = getelementptr inbounds nuw double, ptr %call.i178, i64 %1 + %add.ptr.i209 = getelementptr inbounds nuw double, ptr %cond.i176, i64 %1 %51 = shl i64 %0, 3 %52 = add i64 %51, 34359738360 %53 = and i64 %52, 34359738360 @@ -362,7 +366,11 @@ for.body106: ; preds = %for.body106.prehead store double 1.000000e+00, ptr %arrayidx111, align 8, !tbaa !20 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond484.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond484.not, label %cond.true.i175, label %for.body106, !llvm.loop !28 + br i1 %exitcond484.not, label %for.cond.cleanup105, label %for.body106, !llvm.loop !28 + +for.cond.cleanup121: ; preds = %for.inc224, %_ZN8QuantLib5ArrayC2Em.exit + %cmp.not.i.i182 = icmp eq ptr %cond.i176, null + br i1 %cmp.not.i.i182, label %if.end321, label %if.end321.sink.split lpad116: ; preds = %cond.true.i175 %56 = landingpad { ptr, i32 } @@ -386,12 +394,12 @@ for.body122: ; preds = %for.body122.lr.ph, if.then131: ; preds = %for.body122 %div = fdiv double 1.000000e+00, %60 - %add.ptr142 = getelementptr inbounds double, ptr %call.i178, i64 %indvars.iv.next489 + %add.ptr142 = getelementptr inbounds double, ptr %cond.i176, i64 %indvars.iv.next489 %cmp.not3.i.i.i190 = icmp eq i64 %indvars.iv.next489, 0 br i1 %cmp.not3.i.i.i190, label %invoke.cont145, label %for.body.i.i.i191.preheader for.body.i.i.i191.preheader: ; preds = %if.then131 - tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %call.i178, i8 0, i64 %59, i1 false), !tbaa !20 + tail call void @llvm.memset.p0.i64(ptr align 8 %cond.i176, i8 0, i64 %59, i1 false), !tbaa !20 br label %invoke.cont145 invoke.cont145: ; preds = %for.body.i.i.i191.preheader, %if.then131 @@ -404,7 +412,7 @@ if.then.i.i.i.i.i: ; preds = %invoke.cont145 %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr.i202 to i64 %sub.ptr.rhs.cast.i.i.i.i.i = ptrtoint ptr %arrayidx128 to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i.i.i.i.i - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %add.ptr142, ptr nonnull align 8 %arrayidx128, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %add.ptr142, ptr nonnull align 8 %arrayidx128, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) br label %invoke.cont159 invoke.cont159: ; preds = %if.then.i.i.i.i.i, %invoke.cont145 @@ -412,7 +420,7 @@ invoke.cont159: ; preds = %if.then.i.i.i.i.i, for.body.i.i.i.preheader.i: ; preds = %invoke.cont159 %call.i207 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %12) #19 - to label %invoke.cont180.lr.ph unwind label %_ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i234 + to label %invoke.cont180.lr.ph unwind label %lpad161 invoke.cont180.lr.ph: ; preds = %for.body.i.i.i.preheader.i tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %call.i207, i8 0, i64 %11, i1 false), !tbaa !20 @@ -444,7 +452,7 @@ for.body195.lr.ph: ; preds = %for.cond192.prehead for.body195.us: ; preds = %for.body195.lr.ph, %for.cond200.for.cond.cleanup202_crit_edge.us %k.0465.us = phi i64 [ %inc217.us, %for.cond200.for.cond.cleanup202_crit_edge.us ], [ %indvars.iv.next489, %for.body195.lr.ph ] - %arrayidx.i228.us = getelementptr inbounds nuw double, ptr %call.i178, i64 %k.0465.us + %arrayidx.i228.us = getelementptr inbounds nuw double, ptr %cond.i176, i64 %k.0465.us %67 = load double, ptr %arrayidx.i228.us, align 8, !tbaa !20 %mul.i.i231.us = mul i64 %66, %k.0465.us %add.ptr.i.i232.us = getelementptr inbounds nuw double, ptr %65, i64 %mul.i.i231.us @@ -469,18 +477,24 @@ for.cond200.for.cond.cleanup202_crit_edge.us: ; preds = %for.body203.us %cmp193.us = icmp ult i64 %inc217.us, %1 br i1 %cmp193.us, label %for.body195.us, label %_ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i226, !llvm.loop !31 +lpad161: ; preds = %for.body.i.i.i.preheader.i + %72 = landingpad { ptr, i32 } + cleanup + %cmp.not.i.i233 = icmp eq ptr %cond.i176, null + br i1 %cmp.not.i.i233, label %_ZNSt10unique_ptrIA_dSt14default_deleteIS0_EED2Ev.exit322, label %_ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i234 + invoke.cont180: ; preds = %invoke.cont180.lr.ph, %_ZSt13inner_productIPdN8QuantLib13step_iteratorIS0_EEdET1_T_S5_T0_S4_.exit.loopexit %l.0459 = phi i64 [ %inc188, %_ZSt13inner_productIPdN8QuantLib13step_iteratorIS0_EEdET1_T_S5_T0_S4_.exit.loopexit ], [ 0, %invoke.cont180.lr.ph ] %gep461 = getelementptr double, ptr %invariant.gep460, i64 %l.0459 br label %for.body.i for.body.i: ; preds = %invoke.cont180, %for.body.i - %__init.addr.08.i = phi double [ %74, %for.body.i ], [ 0.000000e+00, %invoke.cont180 ] + %__init.addr.08.i = phi double [ %75, %for.body.i ], [ 0.000000e+00, %invoke.cont180 ] %__first1.addr.07.i = phi ptr [ %incdec.ptr.i, %for.body.i ], [ %add.ptr142, %invoke.cont180 ] %__first2.sroa.0.06.i = phi ptr [ %add.ptr.i.i219, %for.body.i ], [ %gep461, %invoke.cont180 ] - %72 = load double, ptr %__first1.addr.07.i, align 8, !tbaa !20 - %73 = load double, ptr %__first2.sroa.0.06.i, align 8, !tbaa !20 - %74 = tail call double @llvm.fmuladd.f64(double %72, double %73, double %__init.addr.08.i) + %73 = load double, ptr %__first1.addr.07.i, align 8, !tbaa !20 + %74 = load double, ptr %__first2.sroa.0.06.i, align 8, !tbaa !20 + %75 = tail call double @llvm.fmuladd.f64(double %73, double %74, double %__init.addr.08.i) %incdec.ptr.i = getelementptr inbounds nuw i8, ptr %__first1.addr.07.i, i64 8 %add.ptr.i.i219 = getelementptr inbounds double, ptr %__first2.sroa.0.06.i, i64 %63 %cmp.not.i220 = icmp eq ptr %incdec.ptr.i, %add.ptr.i209 @@ -488,8 +502,8 @@ for.body.i: ; preds = %invoke.cont180, %fo _ZSt13inner_productIPdN8QuantLib13step_iteratorIS0_EEdET1_T_S5_T0_S4_.exit.loopexit: ; preds = %for.body.i %arrayidx.i221 = getelementptr inbounds nuw double, ptr %call.i207, i64 %l.0459 - %75 = load double, ptr %arrayidx.i221, align 8, !tbaa !20 - %add = fadd double %74, %75 + %76 = load double, ptr %arrayidx.i221, align 8, !tbaa !20 + %add = fadd double %75, %76 store double %add, ptr %arrayidx.i221, align 8, !tbaa !20 %inc188 = add nuw i64 %l.0459, 1 %exitcond485.not = icmp eq i64 %inc188, %0 @@ -499,16 +513,14 @@ _ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5v tail call void @_ZdaPv(ptr noundef nonnull %call.i207) #20 br label %for.inc224 -_ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i234: ; preds = %for.body.i.i.i.preheader.i - %76 = landingpad { ptr, i32 } - cleanup - tail call void @_ZdaPv(ptr noundef nonnull %call.i178) #20 +_ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i234: ; preds = %lpad161 + tail call void @_ZdaPv(ptr noundef nonnull %cond.i176) #20 br label %_ZNSt10unique_ptrIA_dSt14default_deleteIS0_EED2Ev.exit322 for.inc224: ; preds = %invoke.cont159, %_ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i226, %for.body122 %indvar.next = add nuw nsw i64 %indvar, 1 %exitcond492.not = icmp eq i64 %indvar.next, %55 - br i1 %exitcond492.not, label %if.end321.sink.split, label %for.body122, !llvm.loop !33 + br i1 %exitcond492.not, label %for.cond.cleanup121, label %for.body122, !llvm.loop !33 if.else230: ; preds = %if.end87 br i1 %cmp19.not.i, label %if.end321, label %cond.true.i237 @@ -622,12 +634,12 @@ invoke.cont313: ; preds = %for.body.i.i.i267.p %exitcond482.not = icmp eq i64 %add.i263, %1 br i1 %exitcond482.not, label %if.end321.sink.split, label %for.body238, !llvm.loop !37 -if.end321.sink.split: ; preds = %invoke.cont313, %for.inc224, %_ZN8QuantLib5ArrayC2Em.exit - %call.i241.sink = phi ptr [ %call.i178, %_ZN8QuantLib5ArrayC2Em.exit ], [ %call.i178, %for.inc224 ], [ %call.i241, %invoke.cont313 ] +if.end321.sink.split: ; preds = %invoke.cont313, %for.cond.cleanup121 + %call.i241.sink = phi ptr [ %cond.i176, %for.cond.cleanup121 ], [ %call.i241, %invoke.cont313 ] tail call void @_ZdaPv(ptr noundef nonnull %call.i241.sink) #20 br label %if.end321 -if.end321: ; preds = %if.end321.sink.split, %if.else230 +if.end321: ; preds = %if.end321.sink.split, %if.else230, %for.cond.cleanup121 %cmp.i.i = icmp ugt i64 %0, 1152921504606846975 br i1 %cmp.i.i, label %if.then.i.i, label %_ZNSt6vectorImSaImEE17_S_check_init_lenEmRKS0_.exit.i @@ -711,8 +723,8 @@ _ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5v _ZN8QuantLib6MatrixD2Ev.exit319: ; preds = %_ZNSt10unique_ptrIA_iSt14default_deleteIS0_EED2Ev.exit, %_ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i318 ret void -_ZNSt10unique_ptrIA_dSt14default_deleteIS0_EED2Ev.exit322: ; preds = %lpad232, %lpad116, %_ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i234, %lpad323, %lpad83, %lpad28, %lpad14 - %.pn93.pn = phi { ptr, i32 } [ %100, %lpad323 ], [ %43, %lpad83 ], [ %23, %lpad28 ], [ %22, %lpad14 ], [ %56, %lpad116 ], [ %76, %_ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i234 ], [ %88, %lpad232 ] +_ZNSt10unique_ptrIA_dSt14default_deleteIS0_EED2Ev.exit322: ; preds = %lpad232, %lpad116, %lpad161, %_ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i234, %lpad323, %lpad83, %lpad28, %lpad14 + %.pn93.pn = phi { ptr, i32 } [ %100, %lpad323 ], [ %43, %lpad83 ], [ %23, %lpad28 ], [ %22, %lpad14 ], [ %56, %lpad116 ], [ %72, %lpad161 ], [ %72, %_ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i234 ], [ %88, %lpad232 ] tail call void @_ZdaPv(ptr noundef nonnull %call12) #20 br label %_ZNSt10unique_ptrIA_dSt14default_deleteIS0_EED2Ev.exit325 diff --git a/bench/regex-rs/optimized/154fzydpihuymjog.ll b/bench/regex-rs/optimized/154fzydpihuymjog.ll index fb7cf150d22..aca36066345 100644 --- a/bench/regex-rs/optimized/154fzydpihuymjog.ll +++ b/bench/regex-rs/optimized/154fzydpihuymjog.ll @@ -6637,51 +6637,47 @@ _ZN12regex_syntax7unicode16SimpleCaseFolder8overlaps17hc3d01e5086a27cc1E.exit: ; br label %.preheader.i.us "_ZN107_$LT$core..ops..range..RangeInclusive$LT$T$GT$$u20$as$u20$core..iter..range..RangeInclusiveIteratorImpl$GT$13spec_try_fold17h16897c9f60553028E.exit.us": ; preds = %17 - %22 = icmp eq i32 %.sroa.030.1.us, 1114112 - br i1 %22, label %"_ZN107_$LT$core..ops..range..RangeInclusive$LT$T$GT$$u20$as$u20$core..iter..range..RangeInclusiveIteratorImpl$GT$13spec_try_fold17h16897c9f60553028E.exit.thread", label %"_ZN107_$LT$core..ops..range..RangeInclusive$LT$T$GT$$u20$as$u20$core..iter..range..RangeInclusiveIteratorImpl$GT$13spec_try_fold17h16897c9f60553028E.exit.thread38.us" - -"_ZN107_$LT$core..ops..range..RangeInclusive$LT$T$GT$$u20$as$u20$core..iter..range..RangeInclusiveIteratorImpl$GT$13spec_try_fold17h16897c9f60553028E.exit.thread38.us": ; preds = %"_ZN107_$LT$core..ops..range..RangeInclusive$LT$T$GT$$u20$as$u20$core..iter..range..RangeInclusiveIteratorImpl$GT$13spec_try_fold17h16897c9f60553028E.exit.us" - %23 = call { ptr, i64 } @_ZN12regex_syntax7unicode16SimpleCaseFolder7mapping17hc0114632213dcb17E(ptr noalias noundef nonnull align 8 dereferenceable(32) %5, i32 noundef %.sroa.030.1.us) - %24 = extractvalue { ptr, i64 } %23, 0 - %25 = extractvalue { ptr, i64 } %23, 1 - %26 = getelementptr inbounds i32, ptr %24, i64 %25 - %27 = icmp ne ptr %24, null - call void @llvm.assume(i1 %27) - %28 = icmp eq i64 %25, 0 - br i1 %28, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.thread.loopexit.us", label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.us.preheader" - -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.us.preheader": ; preds = %"_ZN107_$LT$core..ops..range..RangeInclusive$LT$T$GT$$u20$as$u20$core..iter..range..RangeInclusiveIteratorImpl$GT$13spec_try_fold17h16897c9f60553028E.exit.thread38.us" - %.pre58 = load i64, ptr %15, align 8, !alias.scope !1154 + %22 = call { ptr, i64 } @_ZN12regex_syntax7unicode16SimpleCaseFolder7mapping17hc0114632213dcb17E(ptr noalias noundef nonnull align 8 dereferenceable(32) %5, i32 noundef %.sroa.030.1.us) + %23 = extractvalue { ptr, i64 } %22, 0 + %24 = extractvalue { ptr, i64 } %22, 1 + %25 = getelementptr inbounds i32, ptr %23, i64 %24 + %26 = icmp ne ptr %23, null + call void @llvm.assume(i1 %26) + %27 = icmp eq i64 %24, 0 + br i1 %27, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.thread.loopexit.us", label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.us.preheader" + +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.us.preheader": ; preds = %"_ZN107_$LT$core..ops..range..RangeInclusive$LT$T$GT$$u20$as$u20$core..iter..range..RangeInclusiveIteratorImpl$GT$13spec_try_fold17h16897c9f60553028E.exit.us" + %.pre56 = load i64, ptr %15, align 8, !alias.scope !1154 br label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.us" "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.us": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.us.preheader", %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h131c3eb7ecad0db3E.exit.us" - %29 = phi i64 [ %40, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h131c3eb7ecad0db3E.exit.us" ], [ %.pre58, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.us.preheader" ] - %.sroa.032.048.us = phi ptr [ %30, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h131c3eb7ecad0db3E.exit.us" ], [ %24, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.us.preheader" ] - %30 = getelementptr inbounds i8, ptr %.sroa.032.048.us, i64 4 - %31 = load i32, ptr %.sroa.032.048.us, align 4, !range !692, !noundef !9 - %32 = load i64, ptr %1, align 8, !alias.scope !1154, !noundef !9 - %33 = icmp eq i64 %29, %32 - br i1 %33, label %34, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h131c3eb7ecad0db3E.exit.us" - -34: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.us" - call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17hdc5c4217bfea58a0E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %29) + %28 = phi i64 [ %39, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h131c3eb7ecad0db3E.exit.us" ], [ %.pre56, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.us.preheader" ] + %.sroa.032.048.us = phi ptr [ %29, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h131c3eb7ecad0db3E.exit.us" ], [ %23, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.us.preheader" ] + %29 = getelementptr inbounds i8, ptr %.sroa.032.048.us, i64 4 + %30 = load i32, ptr %.sroa.032.048.us, align 4, !range !692, !noundef !9 + %31 = load i64, ptr %1, align 8, !alias.scope !1154, !noundef !9 + %32 = icmp eq i64 %28, %31 + br i1 %32, label %33, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h131c3eb7ecad0db3E.exit.us" + +33: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.us" + call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17hdc5c4217bfea58a0E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %28) %.pre.i.us = load i64, ptr %15, align 8, !alias.scope !1154 br label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h131c3eb7ecad0db3E.exit.us" -"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h131c3eb7ecad0db3E.exit.us": ; preds = %34, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.us" - %35 = phi i64 [ %.pre.i.us, %34 ], [ %29, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.us" ] - %36 = load ptr, ptr %16, align 8, !alias.scope !1154, !nonnull !9, !noundef !9 - %37 = getelementptr inbounds { i32, i32 }, ptr %36, i64 %35 - store i32 %31, ptr %37, align 4 - %38 = getelementptr inbounds i8, ptr %37, i64 4 - store i32 %31, ptr %38, align 4 - %39 = load i64, ptr %15, align 8, !alias.scope !1154, !noundef !9 - %40 = add i64 %39, 1 - store i64 %40, ptr %15, align 8, !alias.scope !1154 - %41 = icmp eq ptr %30, %26 - br i1 %41, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.thread.loopexit.us", label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.us" - -"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.thread.loopexit.us": ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h131c3eb7ecad0db3E.exit.us", %"_ZN107_$LT$core..ops..range..RangeInclusive$LT$T$GT$$u20$as$u20$core..iter..range..RangeInclusiveIteratorImpl$GT$13spec_try_fold17h16897c9f60553028E.exit.thread38.us" +"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h131c3eb7ecad0db3E.exit.us": ; preds = %33, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.us" + %34 = phi i64 [ %.pre.i.us, %33 ], [ %28, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.us" ] + %35 = load ptr, ptr %16, align 8, !alias.scope !1154, !nonnull !9, !noundef !9 + %36 = getelementptr inbounds { i32, i32 }, ptr %35, i64 %34 + store i32 %30, ptr %36, align 4 + %37 = getelementptr inbounds i8, ptr %36, i64 4 + store i32 %30, ptr %37, align 4 + %38 = load i64, ptr %15, align 8, !alias.scope !1154, !noundef !9 + %39 = add i64 %38, 1 + store i64 %39, ptr %15, align 8, !alias.scope !1154 + %40 = icmp eq ptr %29, %25 + br i1 %40, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.thread.loopexit.us", label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.us" + +"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.thread.loopexit.us": ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h131c3eb7ecad0db3E.exit.us", %"_ZN107_$LT$core..ops..range..RangeInclusive$LT$T$GT$$u20$as$u20$core..iter..range..RangeInclusiveIteratorImpl$GT$13spec_try_fold17h16897c9f60553028E.exit.us" %.not.i25.us = icmp ugt i32 %18, %8 br i1 %.not.i25.us, label %"_ZN107_$LT$core..ops..range..RangeInclusive$LT$T$GT$$u20$as$u20$core..iter..range..RangeInclusiveIteratorImpl$GT$13spec_try_fold17h16897c9f60553028E.exit.thread", label %.preheader.i.us.backedge @@ -6693,69 +6689,65 @@ _ZN12regex_syntax7unicode16SimpleCaseFolder8overlaps17hc3d01e5086a27cc1E.exit: ; .preheader.i: ; preds = %.preheader.i.preheader.lr.ph, %.preheader.i.backedge %.sroa.030.1 = phi i32 [ %.sroa.030.1.be, %.preheader.i.backedge ], [ %6, %.preheader.i.preheader.lr.ph ] %exitcond.not.i = icmp eq i32 %.sroa.030.1, %8 - br i1 %exitcond.not.i, label %"_ZN107_$LT$core..ops..range..RangeInclusive$LT$T$GT$$u20$as$u20$core..iter..range..RangeInclusiveIteratorImpl$GT$13spec_try_fold17h16897c9f60553028E.exit.thread38", label %42 + br i1 %exitcond.not.i, label %"_ZN107_$LT$core..ops..range..RangeInclusive$LT$T$GT$$u20$as$u20$core..iter..range..RangeInclusiveIteratorImpl$GT$13spec_try_fold17h16897c9f60553028E.exit.thread38", label %41 -42: ; preds = %.preheader.i - %43 = add i32 %.sroa.030.1, 1 - %44 = xor i32 %.sroa.030.1, 55296 - %45 = add i32 %44, -1114112 - %46 = icmp ult i32 %45, -1112064 - br i1 %46, label %.preheader.i.backedge, label %"_ZN107_$LT$core..ops..range..RangeInclusive$LT$T$GT$$u20$as$u20$core..iter..range..RangeInclusiveIteratorImpl$GT$13spec_try_fold17h16897c9f60553028E.exit" +41: ; preds = %.preheader.i + %42 = add i32 %.sroa.030.1, 1 + %43 = xor i32 %.sroa.030.1, 55296 + %44 = add i32 %43, -1114112 + %45 = icmp ult i32 %44, -1112064 + br i1 %45, label %.preheader.i.backedge, label %"_ZN107_$LT$core..ops..range..RangeInclusive$LT$T$GT$$u20$as$u20$core..iter..range..RangeInclusiveIteratorImpl$GT$13spec_try_fold17h16897c9f60553028E.exit.thread38" -.preheader.i.backedge: ; preds = %42, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.thread.loopexit" - %.sroa.030.1.be = phi i32 [ %43, %42 ], [ %.sroa.030.242, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.thread.loopexit" ] +.preheader.i.backedge: ; preds = %41, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.thread.loopexit" + %.sroa.030.1.be = phi i32 [ %42, %41 ], [ %.sroa.030.242, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.thread.loopexit" ] br label %.preheader.i -"_ZN107_$LT$core..ops..range..RangeInclusive$LT$T$GT$$u20$as$u20$core..iter..range..RangeInclusiveIteratorImpl$GT$13spec_try_fold17h16897c9f60553028E.exit": ; preds = %42 - %47 = icmp eq i32 %.sroa.030.1, 1114112 - br i1 %47, label %"_ZN107_$LT$core..ops..range..RangeInclusive$LT$T$GT$$u20$as$u20$core..iter..range..RangeInclusiveIteratorImpl$GT$13spec_try_fold17h16897c9f60553028E.exit.thread", label %"_ZN107_$LT$core..ops..range..RangeInclusive$LT$T$GT$$u20$as$u20$core..iter..range..RangeInclusiveIteratorImpl$GT$13spec_try_fold17h16897c9f60553028E.exit.thread38" - -"_ZN107_$LT$core..ops..range..RangeInclusive$LT$T$GT$$u20$as$u20$core..iter..range..RangeInclusiveIteratorImpl$GT$13spec_try_fold17h16897c9f60553028E.exit.thread38": ; preds = %.preheader.i, %"_ZN107_$LT$core..ops..range..RangeInclusive$LT$T$GT$$u20$as$u20$core..iter..range..RangeInclusiveIteratorImpl$GT$13spec_try_fold17h16897c9f60553028E.exit" - %.0.i44 = phi i32 [ %.sroa.030.1, %"_ZN107_$LT$core..ops..range..RangeInclusive$LT$T$GT$$u20$as$u20$core..iter..range..RangeInclusiveIteratorImpl$GT$13spec_try_fold17h16897c9f60553028E.exit" ], [ %8, %.preheader.i ] - %.sroa.030.242 = phi i32 [ %43, %"_ZN107_$LT$core..ops..range..RangeInclusive$LT$T$GT$$u20$as$u20$core..iter..range..RangeInclusiveIteratorImpl$GT$13spec_try_fold17h16897c9f60553028E.exit" ], [ %8, %.preheader.i ] - %48 = call { ptr, i64 } @_ZN12regex_syntax7unicode16SimpleCaseFolder7mapping17hc0114632213dcb17E(ptr noalias noundef nonnull align 8 dereferenceable(32) %5, i32 noundef %.0.i44) - %49 = extractvalue { ptr, i64 } %48, 0 - %50 = extractvalue { ptr, i64 } %48, 1 - %51 = getelementptr inbounds i32, ptr %49, i64 %50 - %52 = icmp ne ptr %49, null - call void @llvm.assume(i1 %52) - %53 = icmp eq i64 %50, 0 - br i1 %53, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.thread.loopexit", label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.preheader" +"_ZN107_$LT$core..ops..range..RangeInclusive$LT$T$GT$$u20$as$u20$core..iter..range..RangeInclusiveIteratorImpl$GT$13spec_try_fold17h16897c9f60553028E.exit.thread38": ; preds = %41, %.preheader.i + %.0.i44 = phi i32 [ %.sroa.030.1, %41 ], [ %8, %.preheader.i ] + %.sroa.030.242 = phi i32 [ %42, %41 ], [ %8, %.preheader.i ] + %46 = call { ptr, i64 } @_ZN12regex_syntax7unicode16SimpleCaseFolder7mapping17hc0114632213dcb17E(ptr noalias noundef nonnull align 8 dereferenceable(32) %5, i32 noundef %.0.i44) + %47 = extractvalue { ptr, i64 } %46, 0 + %48 = extractvalue { ptr, i64 } %46, 1 + %49 = getelementptr inbounds i32, ptr %47, i64 %48 + %50 = icmp ne ptr %47, null + call void @llvm.assume(i1 %50) + %51 = icmp eq i64 %48, 0 + br i1 %51, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.thread.loopexit", label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.preheader" "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.preheader": ; preds = %"_ZN107_$LT$core..ops..range..RangeInclusive$LT$T$GT$$u20$as$u20$core..iter..range..RangeInclusiveIteratorImpl$GT$13spec_try_fold17h16897c9f60553028E.exit.thread38" %.pre = load i64, ptr %15, align 8, !alias.scope !1154 br label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit" -"_ZN107_$LT$core..ops..range..RangeInclusive$LT$T$GT$$u20$as$u20$core..iter..range..RangeInclusiveIteratorImpl$GT$13spec_try_fold17h16897c9f60553028E.exit.thread": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.thread.loopexit", %"_ZN107_$LT$core..ops..range..RangeInclusive$LT$T$GT$$u20$as$u20$core..iter..range..RangeInclusiveIteratorImpl$GT$13spec_try_fold17h16897c9f60553028E.exit", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.thread.loopexit.us", %"_ZN107_$LT$core..ops..range..RangeInclusive$LT$T$GT$$u20$as$u20$core..iter..range..RangeInclusiveIteratorImpl$GT$13spec_try_fold17h16897c9f60553028E.exit.us", %.preheader.i.us, %_ZN12regex_syntax7unicode16SimpleCaseFolder8overlaps17hc3d01e5086a27cc1E.exit +"_ZN107_$LT$core..ops..range..RangeInclusive$LT$T$GT$$u20$as$u20$core..iter..range..RangeInclusiveIteratorImpl$GT$13spec_try_fold17h16897c9f60553028E.exit.thread": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.thread.loopexit", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.thread.loopexit.us", %.preheader.i.us, %_ZN12regex_syntax7unicode16SimpleCaseFolder8overlaps17hc3d01e5086a27cc1E.exit call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) ret i1 false "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.preheader", %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h131c3eb7ecad0db3E.exit" - %54 = phi i64 [ %65, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h131c3eb7ecad0db3E.exit" ], [ %.pre, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.preheader" ] - %.sroa.032.048 = phi ptr [ %55, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h131c3eb7ecad0db3E.exit" ], [ %49, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.preheader" ] - %55 = getelementptr inbounds i8, ptr %.sroa.032.048, i64 4 - %56 = load i32, ptr %.sroa.032.048, align 4, !range !692, !noundef !9 - %57 = load i64, ptr %1, align 8, !alias.scope !1154, !noundef !9 - %58 = icmp eq i64 %54, %57 - br i1 %58, label %59, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h131c3eb7ecad0db3E.exit" - -59: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit" - call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17hdc5c4217bfea58a0E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %54) + %52 = phi i64 [ %63, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h131c3eb7ecad0db3E.exit" ], [ %.pre, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.preheader" ] + %.sroa.032.048 = phi ptr [ %53, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h131c3eb7ecad0db3E.exit" ], [ %47, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.preheader" ] + %53 = getelementptr inbounds i8, ptr %.sroa.032.048, i64 4 + %54 = load i32, ptr %.sroa.032.048, align 4, !range !692, !noundef !9 + %55 = load i64, ptr %1, align 8, !alias.scope !1154, !noundef !9 + %56 = icmp eq i64 %52, %55 + br i1 %56, label %57, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h131c3eb7ecad0db3E.exit" + +57: ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit" + call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17hdc5c4217bfea58a0E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %52) %.pre.i = load i64, ptr %15, align 8, !alias.scope !1154 br label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h131c3eb7ecad0db3E.exit" -"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h131c3eb7ecad0db3E.exit": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit", %59 - %60 = phi i64 [ %.pre.i, %59 ], [ %54, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit" ] - %61 = load ptr, ptr %16, align 8, !alias.scope !1154, !nonnull !9, !noundef !9 - %62 = getelementptr inbounds { i32, i32 }, ptr %61, i64 %60 - store i32 %56, ptr %62, align 4 - %63 = getelementptr inbounds i8, ptr %62, i64 4 - store i32 %56, ptr %63, align 4 - %64 = load i64, ptr %15, align 8, !alias.scope !1154, !noundef !9 - %65 = add i64 %64, 1 - store i64 %65, ptr %15, align 8, !alias.scope !1154 - %66 = icmp eq ptr %55, %51 - br i1 %66, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.thread.loopexit", label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit" +"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h131c3eb7ecad0db3E.exit": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit", %57 + %58 = phi i64 [ %.pre.i, %57 ], [ %52, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit" ] + %59 = load ptr, ptr %16, align 8, !alias.scope !1154, !nonnull !9, !noundef !9 + %60 = getelementptr inbounds { i32, i32 }, ptr %59, i64 %58 + store i32 %54, ptr %60, align 4 + %61 = getelementptr inbounds i8, ptr %60, i64 4 + store i32 %54, ptr %61, align 4 + %62 = load i64, ptr %15, align 8, !alias.scope !1154, !noundef !9 + %63 = add i64 %62, 1 + store i64 %63, ptr %15, align 8, !alias.scope !1154 + %64 = icmp eq ptr %53, %49 + br i1 %64, label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit.thread.loopexit", label %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hcb33e61609b9aba5E.exit" } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable diff --git a/bench/regex-rs/optimized/4sqmacerw61c696o.ll b/bench/regex-rs/optimized/4sqmacerw61c696o.ll index 9dc519f9509..0c5f2a1a2a0 100644 --- a/bench/regex-rs/optimized/4sqmacerw61c696o.ll +++ b/bench/regex-rs/optimized/4sqmacerw61c696o.ll @@ -3298,6 +3298,9 @@ _ZN14regex_automata3nfa8thompson6pikevm9SlotTable9for_state17hfa3384813d106466E. br i1 %144, label %_ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit193, label %._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit193_crit_edge .thread468: ; preds = %544 + br i1 %144, label %.thread468._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit193_crit_edge, label %_ZN14regex_automata3nfa8thompson6pikevm6PikeVM23epsilon_closure_explore17ha868693d3953210cE.exit75 + +.thread468._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit193_crit_edge: ; preds = %.thread468 %550 = load i8, ptr %145, align 1, !alias.scope !679, !noundef !4 %551 = zext i8 %550 to i64 %552 = getelementptr inbounds [256 x i8], ptr @anon.ba51361bcc0ea5fd4636dffa08bd088c.93, i64 0, i64 %551 @@ -3513,8 +3516,8 @@ _ZN14regex_automata4util4look11LookMatcher17is_word_end_ascii17h212097b5ac445074 store i64 %664, ptr %29, align 8, !alias.scope !700, !noalias !703 br label %.backedge500 -.backedge500: ; preds = %.thread3952, %.thread3952._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit197_crit_edge, %._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit197_crit_edge, %667, %693, %529, %528, %530, %531, %533, %536, %538, %541, %618, %625, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17hc6e2d87346815150E.exit213", %674, %635, %632, %615, %612, %_ZN14regex_automata4util4look11LookMatcher17is_word_end_ascii17h212097b5ac445074E.exit206, %_ZN14regex_automata4util4look11LookMatcher19is_word_start_ascii17h9805bd83da0c6cbfE.exit201, %579, %576, %_ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit197, %_ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit193, %643, %638, %527, %526, %534, %542, %619, %626, %._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit193_crit_edge, %.thread468 - %.0.i71.be = phi i32 [ %653, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17hc6e2d87346815150E.exit213" ], [ %677, %674 ], [ %524, %635 ], [ %524, %632 ], [ %524, %615 ], [ %524, %612 ], [ %524, %_ZN14regex_automata4util4look11LookMatcher17is_word_end_ascii17h212097b5ac445074E.exit206 ], [ %524, %_ZN14regex_automata4util4look11LookMatcher19is_word_start_ascii17h9805bd83da0c6cbfE.exit201 ], [ %524, %579 ], [ %524, %576 ], [ %524, %_ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit197 ], [ %524, %_ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit193 ], [ %524, %643 ], [ %524, %638 ], [ %524, %527 ], [ %524, %526 ], [ %524, %534 ], [ %524, %542 ], [ %524, %619 ], [ %524, %626 ], [ %524, %._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit193_crit_edge ], [ %524, %.thread468 ], [ %524, %625 ], [ %524, %618 ], [ %524, %541 ], [ %524, %538 ], [ %524, %536 ], [ %524, %533 ], [ %524, %531 ], [ %524, %530 ], [ %524, %528 ], [ %524, %529 ], [ %669, %693 ], [ %669, %667 ], [ %524, %._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit197_crit_edge ], [ %524, %.thread3952._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit197_crit_edge ], [ %524, %.thread3952 ] +.backedge500: ; preds = %.thread3952, %.thread3952._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit197_crit_edge, %._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit197_crit_edge, %667, %693, %529, %528, %530, %531, %533, %536, %538, %541, %618, %625, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17hc6e2d87346815150E.exit213", %674, %635, %632, %615, %612, %_ZN14regex_automata4util4look11LookMatcher17is_word_end_ascii17h212097b5ac445074E.exit206, %_ZN14regex_automata4util4look11LookMatcher19is_word_start_ascii17h9805bd83da0c6cbfE.exit201, %579, %576, %_ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit197, %_ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit193, %643, %638, %527, %526, %534, %542, %619, %626, %._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit193_crit_edge, %.thread468._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit193_crit_edge + %.0.i71.be = phi i32 [ %653, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17hc6e2d87346815150E.exit213" ], [ %677, %674 ], [ %524, %635 ], [ %524, %632 ], [ %524, %615 ], [ %524, %612 ], [ %524, %_ZN14regex_automata4util4look11LookMatcher17is_word_end_ascii17h212097b5ac445074E.exit206 ], [ %524, %_ZN14regex_automata4util4look11LookMatcher19is_word_start_ascii17h9805bd83da0c6cbfE.exit201 ], [ %524, %579 ], [ %524, %576 ], [ %524, %_ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit197 ], [ %524, %_ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit193 ], [ %524, %643 ], [ %524, %638 ], [ %524, %527 ], [ %524, %526 ], [ %524, %534 ], [ %524, %542 ], [ %524, %619 ], [ %524, %626 ], [ %524, %._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit193_crit_edge ], [ %524, %.thread468._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit193_crit_edge ], [ %524, %625 ], [ %524, %618 ], [ %524, %541 ], [ %524, %538 ], [ %524, %536 ], [ %524, %533 ], [ %524, %531 ], [ %524, %530 ], [ %524, %528 ], [ %524, %529 ], [ %669, %693 ], [ %669, %667 ], [ %524, %._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit197_crit_edge ], [ %524, %.thread3952._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit197_crit_edge ], [ %524, %.thread3952 ] call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) store i32 %.0.i71.be, ptr %21, align 4, !noalias !705 %665 = zext i32 %.0.i71.be to i64 @@ -3580,7 +3583,7 @@ _ZN14regex_automata4util4look11LookMatcher17is_word_end_ascii17h212097b5ac445074 %696 = icmp ugt i64 %440, %695 br i1 %696, label %698, label %700, !prof !96 -_ZN14regex_automata3nfa8thompson6pikevm6PikeVM23epsilon_closure_explore17ha868693d3953210cE.exit75: ; preds = %.thread3952._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit197_crit_edge, %583, %.thread468, %538, %531, %._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit193_crit_edge, %648, %635, %632, %615, %612, %_ZN14regex_automata4util4look11LookMatcher17is_word_end_ascii17h212097b5ac445074E.exit206, %_ZN14regex_automata4util4look11LookMatcher19is_word_start_ascii17h9805bd83da0c6cbfE.exit201, %579, %576, %_ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit197, %_ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit193, %643, %638, %527, %526, %534, %542, %619, %626, %._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit197_crit_edge, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hcb411a41664aea14E.exit184", %_ZN14regex_automata4util10sparse_set9SparseSet6insert17h28e54596c218918eE.exit89, %698 +_ZN14regex_automata3nfa8thompson6pikevm6PikeVM23epsilon_closure_explore17ha868693d3953210cE.exit75: ; preds = %.thread3952._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit197_crit_edge, %.thread468, %583, %.thread468._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit193_crit_edge, %538, %531, %._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit193_crit_edge, %648, %635, %632, %615, %612, %_ZN14regex_automata4util4look11LookMatcher17is_word_end_ascii17h212097b5ac445074E.exit206, %_ZN14regex_automata4util4look11LookMatcher19is_word_start_ascii17h9805bd83da0c6cbfE.exit201, %579, %576, %_ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit197, %_ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit193, %643, %638, %527, %526, %534, %542, %619, %626, %._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit197_crit_edge, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hcb411a41664aea14E.exit184", %_ZN14regex_automata4util10sparse_set9SparseSet6insert17h28e54596c218918eE.exit89, %698 %.pr404 = load i64, ptr %29, align 8, !alias.scope !617, !noalias !620 %697 = icmp eq i64 %.pr404, 0 br i1 %697, label %_ZN14regex_automata3nfa8thompson6pikevm6PikeVM4next17h95ca2ba2ce7ce6e0E.exit, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h16bd68c55b87d794E.exit168" @@ -6795,6 +6798,9 @@ _ZN14regex_automata3nfa8thompson6pikevm9SlotTable9for_state17hfa3384813d106466E. br i1 %373, label %_ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit217, label %._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit217_crit_edge .thread446: ; preds = %772 + br i1 %373, label %.thread446._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit217_crit_edge, label %_ZN14regex_automata3nfa8thompson6pikevm6PikeVM23epsilon_closure_explore17ha868693d3953210cE.exit49 + +.thread446._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit217_crit_edge: ; preds = %.thread446 %778 = load i8, ptr %374, align 1, !alias.scope !1355, !noundef !4 %779 = zext i8 %778 to i64 %780 = getelementptr inbounds [256 x i8], ptr @anon.ba51361bcc0ea5fd4636dffa08bd088c.93, i64 0, i64 %779 @@ -7010,8 +7016,8 @@ _ZN14regex_automata4util4look11LookMatcher17is_word_end_ascii17h212097b5ac445074 store i64 %892, ptr %26, align 8, !alias.scope !1376, !noalias !1379 br label %.backedge475 -.backedge475: ; preds = %.thread2818, %.thread2818._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit221_crit_edge, %._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit221_crit_edge, %895, %921, %757, %756, %758, %759, %761, %764, %766, %769, %846, %853, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17hc6e2d87346815150E.exit237", %902, %863, %860, %843, %840, %_ZN14regex_automata4util4look11LookMatcher17is_word_end_ascii17h212097b5ac445074E.exit230, %_ZN14regex_automata4util4look11LookMatcher19is_word_start_ascii17h9805bd83da0c6cbfE.exit225, %807, %804, %_ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit221, %_ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit217, %871, %866, %755, %754, %762, %770, %847, %854, %._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit217_crit_edge, %.thread446 - %.0.i45.be = phi i32 [ %881, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17hc6e2d87346815150E.exit237" ], [ %905, %902 ], [ %752, %863 ], [ %752, %860 ], [ %752, %843 ], [ %752, %840 ], [ %752, %_ZN14regex_automata4util4look11LookMatcher17is_word_end_ascii17h212097b5ac445074E.exit230 ], [ %752, %_ZN14regex_automata4util4look11LookMatcher19is_word_start_ascii17h9805bd83da0c6cbfE.exit225 ], [ %752, %807 ], [ %752, %804 ], [ %752, %_ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit221 ], [ %752, %_ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit217 ], [ %752, %871 ], [ %752, %866 ], [ %752, %755 ], [ %752, %754 ], [ %752, %762 ], [ %752, %770 ], [ %752, %847 ], [ %752, %854 ], [ %752, %._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit217_crit_edge ], [ %752, %.thread446 ], [ %752, %853 ], [ %752, %846 ], [ %752, %769 ], [ %752, %766 ], [ %752, %764 ], [ %752, %761 ], [ %752, %759 ], [ %752, %758 ], [ %752, %756 ], [ %752, %757 ], [ %897, %921 ], [ %897, %895 ], [ %752, %._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit221_crit_edge ], [ %752, %.thread2818._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit221_crit_edge ], [ %752, %.thread2818 ] +.backedge475: ; preds = %.thread2818, %.thread2818._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit221_crit_edge, %._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit221_crit_edge, %895, %921, %757, %756, %758, %759, %761, %764, %766, %769, %846, %853, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17hc6e2d87346815150E.exit237", %902, %863, %860, %843, %840, %_ZN14regex_automata4util4look11LookMatcher17is_word_end_ascii17h212097b5ac445074E.exit230, %_ZN14regex_automata4util4look11LookMatcher19is_word_start_ascii17h9805bd83da0c6cbfE.exit225, %807, %804, %_ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit221, %_ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit217, %871, %866, %755, %754, %762, %770, %847, %854, %._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit217_crit_edge, %.thread446._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit217_crit_edge + %.0.i45.be = phi i32 [ %881, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17hc6e2d87346815150E.exit237" ], [ %905, %902 ], [ %752, %863 ], [ %752, %860 ], [ %752, %843 ], [ %752, %840 ], [ %752, %_ZN14regex_automata4util4look11LookMatcher17is_word_end_ascii17h212097b5ac445074E.exit230 ], [ %752, %_ZN14regex_automata4util4look11LookMatcher19is_word_start_ascii17h9805bd83da0c6cbfE.exit225 ], [ %752, %807 ], [ %752, %804 ], [ %752, %_ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit221 ], [ %752, %_ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit217 ], [ %752, %871 ], [ %752, %866 ], [ %752, %755 ], [ %752, %754 ], [ %752, %762 ], [ %752, %770 ], [ %752, %847 ], [ %752, %854 ], [ %752, %._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit217_crit_edge ], [ %752, %.thread446._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit217_crit_edge ], [ %752, %853 ], [ %752, %846 ], [ %752, %769 ], [ %752, %766 ], [ %752, %764 ], [ %752, %761 ], [ %752, %759 ], [ %752, %758 ], [ %752, %756 ], [ %752, %757 ], [ %897, %921 ], [ %897, %895 ], [ %752, %._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit221_crit_edge ], [ %752, %.thread2818._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit221_crit_edge ], [ %752, %.thread2818 ] call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) store i32 %.0.i45.be, ptr %19, align 4, !noalias !1381 %893 = zext i32 %.0.i45.be to i64 @@ -7077,7 +7083,7 @@ _ZN14regex_automata4util4look11LookMatcher17is_word_end_ascii17h212097b5ac445074 %924 = icmp ugt i64 %668, %923 br i1 %924, label %926, label %928, !prof !96 -_ZN14regex_automata3nfa8thompson6pikevm6PikeVM23epsilon_closure_explore17ha868693d3953210cE.exit49: ; preds = %.thread2818._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit221_crit_edge, %811, %.thread446, %766, %759, %._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit217_crit_edge, %876, %863, %860, %843, %840, %_ZN14regex_automata4util4look11LookMatcher17is_word_end_ascii17h212097b5ac445074E.exit230, %_ZN14regex_automata4util4look11LookMatcher19is_word_start_ascii17h9805bd83da0c6cbfE.exit225, %807, %804, %_ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit221, %_ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit217, %871, %866, %755, %754, %762, %770, %847, %854, %._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit221_crit_edge, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hcb411a41664aea14E.exit208", %_ZN14regex_automata4util10sparse_set9SparseSet6insert17h28e54596c218918eE.exit63, %926 +_ZN14regex_automata3nfa8thompson6pikevm6PikeVM23epsilon_closure_explore17ha868693d3953210cE.exit49: ; preds = %.thread2818._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit221_crit_edge, %.thread446, %811, %.thread446._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit217_crit_edge, %766, %759, %._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit217_crit_edge, %876, %863, %860, %843, %840, %_ZN14regex_automata4util4look11LookMatcher17is_word_end_ascii17h212097b5ac445074E.exit230, %_ZN14regex_automata4util4look11LookMatcher19is_word_start_ascii17h9805bd83da0c6cbfE.exit225, %807, %804, %_ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit221, %_ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit217, %871, %866, %755, %754, %762, %770, %847, %854, %._ZN14regex_automata4util4look11LookMatcher13is_word_ascii17hebbfd5d695ea5afaE.exit221_crit_edge, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hcb411a41664aea14E.exit208", %_ZN14regex_automata4util10sparse_set9SparseSet6insert17h28e54596c218918eE.exit63, %926 %.pr391 = load i64, ptr %26, align 8, !alias.scope !1293, !noalias !1296 %925 = icmp eq i64 %.pr391, 0 br i1 %925, label %.backedge481, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$3pop17h16bd68c55b87d794E.exit192" diff --git a/bench/ring-rs/optimized/2r3wc2wo4j1ozk7e.ll b/bench/ring-rs/optimized/2r3wc2wo4j1ozk7e.ll index 0d39bf4f33e..45eb510e43a 100644 --- a/bench/ring-rs/optimized/2r3wc2wo4j1ozk7e.ll +++ b/bench/ring-rs/optimized/2r3wc2wo4j1ozk7e.ll @@ -46,6 +46,8 @@ target triple = "x86_64-unknown-linux-gnu" @anon.0f131c1448f32f4cf12b0cd6fa3810b4.49 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.0f131c1448f32f4cf12b0cd6fa3810b4.33, [16 x i8] c"\1F\00\00\00\00\00\00\00\8D\01\00\00\1F\00\00\00" }>, align 8 @anon.0f131c1448f32f4cf12b0cd6fa3810b4.51 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.0f131c1448f32f4cf12b0cd6fa3810b4.33, [16 x i8] c"\1F\00\00\00\00\00\00\00\95\01\00\00>\00\00\00" }>, align 8 @anon.0f131c1448f32f4cf12b0cd6fa3810b4.53 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.0f131c1448f32f4cf12b0cd6fa3810b4.33, [16 x i8] c"\1F\00\00\00\00\00\00\00\9F\01\00\00\09\00\00\00" }>, align 8 +@anon.0f131c1448f32f4cf12b0cd6fa3810b4.54 = private unnamed_addr constant <{ [35 x i8] }> <{ [35 x i8] c"assertion failed: value.len() < 128" }>, align 1 +@anon.0f131c1448f32f4cf12b0cd6fa3810b4.55 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.0f131c1448f32f4cf12b0cd6fa3810b4.33, [16 x i8] c"\1F\00\00\00\00\00\00\00\A2\01\00\00\09\00\00\00" }>, align 8 @anon.0f131c1448f32f4cf12b0cd6fa3810b4.56 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.0f131c1448f32f4cf12b0cd6fa3810b4.33, [16 x i8] c"\1F\00\00\00\00\00\00\00\A5\01\00\00\0D\00\00\00" }>, align 8 @anon.0f131c1448f32f4cf12b0cd6fa3810b4.58 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.0f131c1448f32f4cf12b0cd6fa3810b4.33, [16 x i8] c"\1F\00\00\00\00\00\00\00\A8\01\00\00\11\00\00\00" }>, align 8 @anon.0f131c1448f32f4cf12b0cd6fa3810b4.60 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.0f131c1448f32f4cf12b0cd6fa3810b4.33, [16 x i8] c"\1F\00\00\00\00\00\00\00\9D\01\00\00\1B\00\00\00" }>, align 8 @@ -95,6 +97,7 @@ target triple = "x86_64-unknown-linux-gnu" @anon.a08cbc0fed5954eef0273385eb99bffc.41.llvm.8403485840513791397 = external hidden unnamed_addr constant <{ ptr, [16 x i8] }>, align 8 @anon.a08cbc0fed5954eef0273385eb99bffc.42.llvm.8403485840513791397 = external hidden unnamed_addr constant <{ ptr, [16 x i8] }>, align 8 @anon.a08cbc0fed5954eef0273385eb99bffc.48.llvm.8403485840513791397 = external hidden unnamed_addr constant <{ ptr, [16 x i8] }>, align 8 +@anon.a08cbc0fed5954eef0273385eb99bffc.49.llvm.8403485840513791397 = external hidden unnamed_addr constant <{ ptr, [16 x i8] }>, align 8 @anon.a08cbc0fed5954eef0273385eb99bffc.51.llvm.8403485840513791397 = external hidden unnamed_addr constant <{ ptr, [16 x i8] }>, align 8 @anon.a08cbc0fed5954eef0273385eb99bffc.53.llvm.8403485840513791397 = external hidden unnamed_addr constant <{ ptr, [16 x i8] }>, align 8 @anon.a08cbc0fed5954eef0273385eb99bffc.58.llvm.8403485840513791397 = external hidden unnamed_addr constant <{ [52 x i8] }>, align 1 @@ -2649,7 +2652,7 @@ _ZN4ring2ec7suite_b3ops9ScalarOps10leak_limbs17h08faba48ba6090eeE.exit: ; preds 28: ; preds = %22 %29 = sub nuw i64 %9, %.0 %.not = icmp eq i64 %2, 0 - br i1 %.not, label %32, label %31, !prof !727 + br i1 %.not, label %33, label %31, !prof !727 30: ; preds = %22 call void @_ZN4core5slice5index26slice_start_index_len_fail17h0187bf4d120fc375E(i64 noundef %.0, i64 noundef %9, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.0f131c1448f32f4cf12b0cd6fa3810b4.60) #23 @@ -2657,34 +2660,42 @@ _ZN4ring2ec7suite_b3ops9ScalarOps10leak_limbs17h08faba48ba6090eeE.exit: ; preds 31: ; preds = %28 store i8 2, ptr %1, align 1 - %.not17 = icmp eq i64 %2, 1 - br i1 %.not17, label %41, label %"_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h6e56ef8d07eaea13E.llvm.7363024586935657205.exit18", !prof !727 + %32 = icmp ult i64 %29, 128 + br i1 %32, label %35, label %34 -32: ; preds = %28 +33: ; preds = %28 call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef 0, i64 noundef 0, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.0f131c1448f32f4cf12b0cd6fa3810b4.53) #23 unreachable -"_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h6e56ef8d07eaea13E.llvm.7363024586935657205.exit18": ; preds = %31 - %33 = getelementptr inbounds i8, ptr %1, i64 1 - %34 = trunc nuw nsw i64 %29 to i8 - store i8 %34, ptr %33, align 1 - %35 = add i64 %2, -2 - %36 = icmp ugt i64 %29, %35 - br i1 %36, label %37, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hcd5c9a8e6f63698bE.exit" +34: ; preds = %31 + call void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.0f131c1448f32f4cf12b0cd6fa3810b4.54, i64 noundef 35, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.0f131c1448f32f4cf12b0cd6fa3810b4.55) #23 + unreachable -37: ; preds = %"_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h6e56ef8d07eaea13E.llvm.7363024586935657205.exit18" - call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %29, i64 noundef %35, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.0f131c1448f32f4cf12b0cd6fa3810b4.58) #23, !noalias !752 +35: ; preds = %31 + %.not17 = icmp eq i64 %2, 1 + br i1 %.not17, label %44, label %"_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h6e56ef8d07eaea13E.llvm.7363024586935657205.exit18", !prof !727 + +"_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h6e56ef8d07eaea13E.llvm.7363024586935657205.exit18": ; preds = %35 + %36 = getelementptr inbounds i8, ptr %1, i64 1 + %37 = trunc nuw nsw i64 %29 to i8 + store i8 %37, ptr %36, align 1 + %38 = add i64 %2, -2 + %39 = icmp ugt i64 %29, %38 + br i1 %39, label %40, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hcd5c9a8e6f63698bE.exit" + +40: ; preds = %"_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h6e56ef8d07eaea13E.llvm.7363024586935657205.exit18" + call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %29, i64 noundef %38, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.0f131c1448f32f4cf12b0cd6fa3810b4.58) #23, !noalias !752 unreachable "_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hcd5c9a8e6f63698bE.exit": ; preds = %"_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h6e56ef8d07eaea13E.llvm.7363024586935657205.exit18" - %38 = getelementptr inbounds i8, ptr %1, i64 2 - %39 = getelementptr inbounds i8, ptr %4, i64 %.0 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %38, ptr nonnull readonly align 1 %39, i64 %29, i1 false), !alias.scope !755, !noalias !759 - %40 = add nuw nsw i64 %29, 2 + %41 = getelementptr inbounds i8, ptr %1, i64 2 + %42 = getelementptr inbounds i8, ptr %4, i64 %.0 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %41, ptr nonnull readonly align 1 %42, i64 %29, i1 false), !alias.scope !755, !noalias !759 + %43 = add nuw nsw i64 %29, 2 call void @llvm.lifetime.end.p0(i64 49, ptr nonnull %4) - ret i64 %40 + ret i64 %43 -41: ; preds = %31 +44: ; preds = %35 call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef 1, i64 noundef 1, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.0f131c1448f32f4cf12b0cd6fa3810b4.56) #23 unreachable } @@ -2887,104 +2898,113 @@ define internal fastcc void @_ZN4ring2ec7suite_b11private_key20affine_from_jacob %17 = getelementptr inbounds i8, ptr %.0.val, i64 24 %18 = load i64, ptr %17, align 8, !alias.scope !823, !noalias !829, !noundef !9 %19 = icmp ugt i64 %18, 6 - br i1 %19, label %20, label %_ZN4ring2ec7suite_b3ops9CommonOps23elem_verify_is_not_zero17h39c3ddb8be505643E.exit + br i1 %19, label %20, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17haee67adab7116f68E.llvm.8403485840513791397.exit.i" 20: ; preds = %2 tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %18, i64 noundef 6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a08cbc0fed5954eef0273385eb99bffc.48.llvm.8403485840513791397) #23, !noalias !830 unreachable -_ZN4ring2ec7suite_b3ops9CommonOps23elem_verify_is_not_zero17h39c3ddb8be505643E.exit: ; preds = %2 - %.idx.i = shl nuw nsw i64 %18, 4 - %21 = getelementptr inbounds i8, ptr %1, i64 %.idx.i - %22 = shl nuw nsw i64 %18, 3 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %.sroa.0.i, ptr nonnull readonly align 8 %21, i64 %22, i1 false), !alias.scope !833, !noalias !837 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %15, ptr noundef nonnull align 8 dereferenceable(48) %.sroa.0.i, i64 48, i1 false), !noalias !839 +"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17haee67adab7116f68E.llvm.8403485840513791397.exit.i": ; preds = %2 + %21 = shl nuw nsw i64 %18, 1 + %22 = mul nuw nsw i64 %18, 3 + %23 = icmp samesign ugt i64 %21, %22 + br i1 %23, label %24, label %_ZN4ring2ec7suite_b3ops9CommonOps23elem_verify_is_not_zero17h39c3ddb8be505643E.exit + +24: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17haee67adab7116f68E.llvm.8403485840513791397.exit.i" + tail call void @_ZN4core5slice5index22slice_index_order_fail17hcfcb08cd5efc8d4cE(i64 noundef %21, i64 noundef %22, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a08cbc0fed5954eef0273385eb99bffc.49.llvm.8403485840513791397) #23, !noalias !833 + unreachable + +_ZN4ring2ec7suite_b3ops9CommonOps23elem_verify_is_not_zero17h39c3ddb8be505643E.exit: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17haee67adab7116f68E.llvm.8403485840513791397.exit.i" + %25 = getelementptr inbounds i64, ptr %1, i64 %21 + %26 = shl nuw nsw i64 %18, 3 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %.sroa.0.i, ptr nonnull readonly align 8 %25, i64 %26, i1 false), !alias.scope !836, !noalias !840 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %15, ptr noundef nonnull align 8 dereferenceable(48) %.sroa.0.i, i64 48, i1 false), !noalias !842 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %.sroa.0.i) - %23 = call noundef i64 @ring_core_0_17_8__LIMBS_are_zero(ptr noundef nonnull readonly align 8 dereferenceable(48) %15, i64 noundef %18), !noalias !840 - %24 = icmp eq i64 %23, -1 - br i1 %24, label %40, label %25 + %27 = call noundef i64 @ring_core_0_17_8__LIMBS_are_zero(ptr noundef nonnull readonly align 8 dereferenceable(48) %15, i64 noundef %18), !noalias !843 + %28 = icmp eq i64 %27, -1 + br i1 %28, label %44, label %29 -25: ; preds = %_ZN4ring2ec7suite_b3ops9CommonOps23elem_verify_is_not_zero17h39c3ddb8be505643E.exit +29: ; preds = %_ZN4ring2ec7suite_b3ops9CommonOps23elem_verify_is_not_zero17h39c3ddb8be505643E.exit call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %14) - call void @llvm.experimental.noalias.scope.decl(metadata !843) + call void @llvm.experimental.noalias.scope.decl(metadata !846) call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %.sroa.0.i5) - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %.sroa.0.i5, i8 0, i64 48, i1 false), !noalias !846 - %26 = load i64, ptr %17, align 8, !alias.scope !843, !noalias !849, !noundef !9 - %27 = icmp ugt i64 %26, 6 - br i1 %27, label %28, label %_ZN4ring2ec7suite_b3ops9CommonOps7point_y17heb3dae4970743ecfE.exit + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %.sroa.0.i5, i8 0, i64 48, i1 false), !noalias !849 + %30 = load i64, ptr %17, align 8, !alias.scope !846, !noalias !852, !noundef !9 + %31 = icmp ugt i64 %30, 6 + br i1 %31, label %32, label %_ZN4ring2ec7suite_b3ops9CommonOps7point_y17heb3dae4970743ecfE.exit -28: ; preds = %25 - call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %26, i64 noundef 6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a08cbc0fed5954eef0273385eb99bffc.42.llvm.8403485840513791397) #23, !noalias !850 +32: ; preds = %29 + call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %30, i64 noundef 6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a08cbc0fed5954eef0273385eb99bffc.42.llvm.8403485840513791397) #23, !noalias !853 unreachable -_ZN4ring2ec7suite_b3ops9CommonOps7point_y17heb3dae4970743ecfE.exit: ; preds = %25 - %29 = shl nuw nsw i64 %26, 3 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %.sroa.0.i5, ptr nonnull readonly align 8 dereferenceable(144) %1, i64 %29, i1 false), !alias.scope !853, !noalias !857 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %14, ptr noundef nonnull align 8 dereferenceable(48) %.sroa.0.i5, i64 48, i1 false), !noalias !859 +_ZN4ring2ec7suite_b3ops9CommonOps7point_y17heb3dae4970743ecfE.exit: ; preds = %29 + %33 = shl nuw nsw i64 %30, 3 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %.sroa.0.i5, ptr nonnull readonly align 8 dereferenceable(144) %1, i64 %33, i1 false), !alias.scope !856, !noalias !860 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %14, ptr noundef nonnull align 8 dereferenceable(48) %.sroa.0.i5, i64 48, i1 false), !noalias !862 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %.sroa.0.i5) call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %13) call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %.sroa.0.i6) - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %.sroa.0.i6, i8 0, i64 48, i1 false), !noalias !860 - %30 = getelementptr inbounds i64, ptr %1, i64 %26 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %.sroa.0.i6, ptr nonnull readonly align 8 %30, i64 %29, i1 false), !alias.scope !865, !noalias !869 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %13, ptr noundef nonnull align 8 dereferenceable(48) %.sroa.0.i6, i64 48, i1 false), !noalias !871 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %.sroa.0.i6, i8 0, i64 48, i1 false), !noalias !863 + %34 = getelementptr inbounds i64, ptr %1, i64 %30 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %.sroa.0.i6, ptr nonnull readonly align 8 %34, i64 %33, i1 false), !alias.scope !868, !noalias !872 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %13, ptr noundef nonnull align 8 dereferenceable(48) %.sroa.0.i6, i64 48, i1 false), !noalias !874 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %.sroa.0.i6) call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %12) - %31 = icmp ne ptr %.8.val, null - call void @llvm.assume(i1 %31) + %35 = icmp ne ptr %.8.val, null + call void @llvm.assume(i1 %35) call void %.8.val(ptr noalias nocapture noundef nonnull sret({ [6 x i64], {}, {} }) align 8 dereferenceable(48) %12, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %15) call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %11) - %32 = load ptr, ptr %.0.val, align 8, !nonnull !9, !noundef !9 + %36 = load ptr, ptr %.0.val, align 8, !nonnull !9, !noundef !9 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %6) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %6, i8 0, i64 48, i1 false) - call void %32(ptr noundef nonnull %6, ptr noundef nonnull %14, ptr noundef nonnull %12) + call void %36(ptr noundef nonnull %6, ptr noundef nonnull %14, ptr noundef nonnull %12) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %11, ptr noundef nonnull align 8 dereferenceable(48) %6, i64 48, i1 false) call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %6) call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %10) call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %9) - %33 = getelementptr inbounds i8, ptr %.0.val, i64 8 - %34 = load ptr, ptr %33, align 8, !nonnull !9, !noundef !9 + %37 = getelementptr inbounds i8, ptr %.0.val, i64 8 + %38 = load ptr, ptr %37, align 8, !nonnull !9, !noundef !9 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %5) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %5, i8 0, i64 48, i1 false) - call void %34(ptr noundef nonnull %5, ptr noundef nonnull %12) + call void %38(ptr noundef nonnull %5, ptr noundef nonnull %12) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %9, ptr noundef nonnull align 8 dereferenceable(48) %5, i64 48, i1 false) call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %5) call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %8) - %35 = load ptr, ptr %.0.val, align 8, !nonnull !9, !noundef !9 + %39 = load ptr, ptr %.0.val, align 8, !nonnull !9, !noundef !9 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %4) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %4, i8 0, i64 48, i1 false) - call void %35(ptr noundef nonnull %4, ptr noundef nonnull %15, ptr noundef nonnull %9) + call void %39(ptr noundef nonnull %4, ptr noundef nonnull %15, ptr noundef nonnull %9) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %8, ptr noundef nonnull align 8 dereferenceable(48) %4, i64 48, i1 false) call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %4) - %36 = load ptr, ptr %.0.val, align 8, !nonnull !9, !noundef !9 + %40 = load ptr, ptr %.0.val, align 8, !nonnull !9, !noundef !9 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %3) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %3, i8 0, i64 48, i1 false) - call void %36(ptr noundef nonnull %3, ptr noundef nonnull %13, ptr noundef nonnull %8) + call void %40(ptr noundef nonnull %3, ptr noundef nonnull %13, ptr noundef nonnull %8) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %10, ptr noundef nonnull align 8 dereferenceable(48) %3, i64 48, i1 false) call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %3) call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %8) call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %9) - %37 = getelementptr inbounds i8, ptr %.0.val, i64 176 - %38 = getelementptr inbounds i8, ptr %.0.val, i64 224 - %39 = call noundef zeroext i1 @_ZN4ring2ec7suite_b42verify_affine_point_is_on_the_curve_scaled17hc34fef75fd6185caE.llvm.4505101779727634190(ptr noalias noundef nonnull readonly align 8 dereferenceable(272) %.0.val, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %11, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %10, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %37, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %38) - br i1 %39, label %44, label %41 + %41 = getelementptr inbounds i8, ptr %.0.val, i64 176 + %42 = getelementptr inbounds i8, ptr %.0.val, i64 224 + %43 = call noundef zeroext i1 @_ZN4ring2ec7suite_b42verify_affine_point_is_on_the_curve_scaled17hc34fef75fd6185caE.llvm.4505101779727634190(ptr noalias noundef nonnull readonly align 8 dereferenceable(272) %.0.val, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %11, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %10, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %41, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %42) + br i1 %43, label %48, label %45 -40: ; preds = %_ZN4ring2ec7suite_b3ops9CommonOps23elem_verify_is_not_zero17h39c3ddb8be505643E.exit +44: ; preds = %_ZN4ring2ec7suite_b3ops9CommonOps23elem_verify_is_not_zero17h39c3ddb8be505643E.exit call void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.0f131c1448f32f4cf12b0cd6fa3810b4.68, i64 noundef 64, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.0f131c1448f32f4cf12b0cd6fa3810b4.69) #23 unreachable -41: ; preds = %_ZN4ring2ec7suite_b3ops9CommonOps7point_y17heb3dae4970743ecfE.exit +45: ; preds = %_ZN4ring2ec7suite_b3ops9CommonOps7point_y17heb3dae4970743ecfE.exit call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %7) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %7, ptr noundef nonnull align 8 dereferenceable(48) %11, i64 48, i1 false) - %42 = getelementptr inbounds i8, ptr %7, i64 48 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %42, ptr noundef nonnull align 8 dereferenceable(48) %10, i64 48, i1 false) - %43 = getelementptr inbounds i8, ptr %0, i64 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(96) %43, ptr noundef nonnull align 8 dereferenceable(96) %7, i64 96, i1 false) + %46 = getelementptr inbounds i8, ptr %7, i64 48 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %46, ptr noundef nonnull align 8 dereferenceable(48) %10, i64 48, i1 false) + %47 = getelementptr inbounds i8, ptr %0, i64 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(96) %47, ptr noundef nonnull align 8 dereferenceable(96) %7, i64 96, i1 false) call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %7) - br label %44 + br label %48 -44: ; preds = %_ZN4ring2ec7suite_b3ops9CommonOps7point_y17heb3dae4970743ecfE.exit, %41 - %.sink = phi i64 [ 0, %41 ], [ 1, %_ZN4ring2ec7suite_b3ops9CommonOps7point_y17heb3dae4970743ecfE.exit ] +48: ; preds = %_ZN4ring2ec7suite_b3ops9CommonOps7point_y17heb3dae4970743ecfE.exit, %45 + %.sink = phi i64 [ 0, %45 ], [ 1, %_ZN4ring2ec7suite_b3ops9CommonOps7point_y17heb3dae4970743ecfE.exit ] call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %10) call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %11) call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %12) @@ -3042,12 +3062,12 @@ define hidden noundef zeroext i1 @_ZN4ring2ec7suite_b11private_key31big_endian_a call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %10, ptr noundef nonnull align 8 dereferenceable(48) %8, i64 48, i1 false) call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %8) %21 = getelementptr inbounds i8, ptr %.val, i64 24 - %22 = load i64, ptr %21, align 8, !noalias !872, !noundef !9 + %22 = load i64, ptr %21, align 8, !noalias !875, !noundef !9 %23 = icmp ugt i64 %22, 6 br i1 %23, label %24, label %_ZN4ring2ec7suite_b3ops13PrivateKeyOps10leak_limbs17h1aaccf2c12d99696E.exit 24: ; preds = %19 - call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %22, i64 noundef 6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a08cbc0fed5954eef0273385eb99bffc.51.llvm.8403485840513791397) #23, !noalias !876 + call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %22, i64 noundef 6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a08cbc0fed5954eef0273385eb99bffc.51.llvm.8403485840513791397) #23, !noalias !879 unreachable _ZN4ring2ec7suite_b3ops13PrivateKeyOps10leak_limbs17h1aaccf2c12d99696E.exit: ; preds = %19 @@ -3068,12 +3088,12 @@ _ZN4ring2ec7suite_b3ops13PrivateKeyOps10leak_limbs17h1aaccf2c12d99696E.exit: ; p call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %9, ptr noundef nonnull align 8 dereferenceable(48) %7, i64 48, i1 false) call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %7) %28 = getelementptr inbounds i8, ptr %.val, i64 24 - %29 = load i64, ptr %28, align 8, !noalias !879, !noundef !9 + %29 = load i64, ptr %28, align 8, !noalias !882, !noundef !9 %30 = icmp ugt i64 %29, 6 br i1 %30, label %31, label %_ZN4ring2ec7suite_b3ops13PrivateKeyOps10leak_limbs17h1aaccf2c12d99696E.exit13 31: ; preds = %26 - call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %29, i64 noundef 6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a08cbc0fed5954eef0273385eb99bffc.51.llvm.8403485840513791397) #23, !noalias !883 + call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %29, i64 noundef 6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a08cbc0fed5954eef0273385eb99bffc.51.llvm.8403485840513791397) #23, !noalias !886 unreachable _ZN4ring2ec7suite_b3ops13PrivateKeyOps10leak_limbs17h1aaccf2c12d99696E.exit13: ; preds = %26 @@ -3106,16 +3126,16 @@ define noundef zeroext i1 @"_ZN91_$LT$ring..ec..curve25519..ed25519..signing..Ed define noundef zeroext i1 @"_ZN86_$LT$ring..ec..curve25519..ed25519..signing..PublicKey$u20$as$u20$core..fmt..Debug$GT$3fmt17h61f26a7421e5a672E"(ptr noalias noundef readonly align 1 dereferenceable(32) %0, ptr noalias noundef align 8 dereferenceable(64) %1) unnamed_addr #6 { %3 = alloca { ptr, i64 }, align 8 %4 = alloca { i64, ptr, i8, i8, [6 x i8] }, align 8 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4), !noalias !886 - call void @_ZN4core3fmt9Formatter11debug_tuple17hdafdf15840d214fbE(ptr noalias nocapture noundef nonnull sret({ i64, ptr, i8, i8, [6 x i8] }) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull align 8 dereferenceable(64) %1, ptr noalias noundef nonnull readonly align 1 @anon.0f131c1448f32f4cf12b0cd6fa3810b4.75, i64 noundef 9), !noalias !891 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3), !noalias !886 - store ptr %0, ptr %3, align 8, !noalias !886 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4), !noalias !889 + call void @_ZN4core3fmt9Formatter11debug_tuple17hdafdf15840d214fbE(ptr noalias nocapture noundef nonnull sret({ i64, ptr, i8, i8, [6 x i8] }) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull align 8 dereferenceable(64) %1, ptr noalias noundef nonnull readonly align 1 @anon.0f131c1448f32f4cf12b0cd6fa3810b4.75, i64 noundef 9), !noalias !894 + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3), !noalias !889 + store ptr %0, ptr %3, align 8, !noalias !889 %5 = getelementptr inbounds i8, ptr %3, i64 8 - store i64 32, ptr %5, align 8, !noalias !886 - %6 = call noundef align 8 dereferenceable(24) ptr @_ZN4core3fmt8builders10DebugTuple5field17h93f7018964b8f2e6E(ptr noalias noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 1 %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.3beb75dc861d66d2d938a1ec4e9d58e9.11.llvm.5814777820638942741), !noalias !891 - %7 = call noundef zeroext i1 @_ZN4core3fmt8builders10DebugTuple6finish17hb754cbe52e06c43eE(ptr noalias noundef nonnull align 8 dereferenceable(24) %6), !noalias !891 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3), !noalias !886 - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4), !noalias !886 + store i64 32, ptr %5, align 8, !noalias !889 + %6 = call noundef align 8 dereferenceable(24) ptr @_ZN4core3fmt8builders10DebugTuple5field17h93f7018964b8f2e6E(ptr noalias noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 1 %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.3beb75dc861d66d2d938a1ec4e9d58e9.11.llvm.5814777820638942741), !noalias !894 + %7 = call noundef zeroext i1 @_ZN4core3fmt8builders10DebugTuple6finish17hb754cbe52e06c43eE(ptr noalias noundef nonnull align 8 dereferenceable(24) %6), !noalias !894 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3), !noalias !889 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4), !noalias !889 ret i1 %7 } @@ -3150,28 +3170,28 @@ define noundef zeroext i1 @"_ZN84_$LT$ring..ec..suite_b..ecdsa..signing..EcdsaKe define noundef zeroext i1 @"_ZN81_$LT$ring..ec..suite_b..ecdsa..signing..PublicKey$u20$as$u20$core..fmt..Debug$GT$3fmt17h59f380bacfe5e664E"(ptr noalias noundef readonly align 8 dereferenceable(112) %0, ptr noalias noundef align 8 dereferenceable(64) %1) unnamed_addr #6 { %3 = alloca { ptr, i64 }, align 8 %4 = alloca { i64, ptr, i8, i8, [6 x i8] }, align 8 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4), !noalias !892 - call void @_ZN4core3fmt9Formatter11debug_tuple17hdafdf15840d214fbE(ptr noalias nocapture noundef nonnull sret({ i64, ptr, i8, i8, [6 x i8] }) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull align 8 dereferenceable(64) %1, ptr noalias noundef nonnull readonly align 1 @anon.0f131c1448f32f4cf12b0cd6fa3810b4.75, i64 noundef 9), !noalias !897 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3), !noalias !892 - tail call void @llvm.experimental.noalias.scope.decl(metadata !898) - tail call void @llvm.experimental.noalias.scope.decl(metadata !901), !noalias !897 - %5 = load i64, ptr %0, align 8, !alias.scope !904, !noalias !897, !noundef !9 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4), !noalias !895 + call void @_ZN4core3fmt9Formatter11debug_tuple17hdafdf15840d214fbE(ptr noalias nocapture noundef nonnull sret({ i64, ptr, i8, i8, [6 x i8] }) align 8 dereferenceable(24) %4, ptr noalias noundef nonnull align 8 dereferenceable(64) %1, ptr noalias noundef nonnull readonly align 1 @anon.0f131c1448f32f4cf12b0cd6fa3810b4.75, i64 noundef 9), !noalias !900 + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3), !noalias !895 + tail call void @llvm.experimental.noalias.scope.decl(metadata !901) + tail call void @llvm.experimental.noalias.scope.decl(metadata !904), !noalias !900 + %5 = load i64, ptr %0, align 8, !alias.scope !907, !noalias !900, !noundef !9 %6 = icmp ugt i64 %5, 97 br i1 %6, label %7, label %"_ZN105_$LT$ring..ec..suite_b..ecdsa..signing..PublicKey$u20$as$u20$core..convert..AsRef$LT$$u5b$u8$u5d$$GT$$GT$6as_ref17hba6de885ea57ea44E.exit" 7: ; preds = %2 - tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %5, i64 noundef 97, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.530c81c04d65135741421c4dd2531efc.17.llvm.6801758991666044160) #23, !noalias !905 + tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %5, i64 noundef 97, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.530c81c04d65135741421c4dd2531efc.17.llvm.6801758991666044160) #23, !noalias !908 unreachable "_ZN105_$LT$ring..ec..suite_b..ecdsa..signing..PublicKey$u20$as$u20$core..convert..AsRef$LT$$u5b$u8$u5d$$GT$$GT$6as_ref17hba6de885ea57ea44E.exit": ; preds = %2 %8 = getelementptr inbounds i8, ptr %0, i64 8 - store ptr %8, ptr %3, align 8, !noalias !892 + store ptr %8, ptr %3, align 8, !noalias !895 %9 = getelementptr inbounds i8, ptr %3, i64 8 - store i64 %5, ptr %9, align 8, !noalias !892 - %10 = call noundef align 8 dereferenceable(24) ptr @_ZN4core3fmt8builders10DebugTuple5field17h93f7018964b8f2e6E(ptr noalias noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 1 %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.3beb75dc861d66d2d938a1ec4e9d58e9.11.llvm.5814777820638942741), !noalias !897 - %11 = call noundef zeroext i1 @_ZN4core3fmt8builders10DebugTuple6finish17hb754cbe52e06c43eE(ptr noalias noundef nonnull align 8 dereferenceable(24) %10), !noalias !897 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3), !noalias !892 - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4), !noalias !892 + store i64 %5, ptr %9, align 8, !noalias !895 + %10 = call noundef align 8 dereferenceable(24) ptr @_ZN4core3fmt8builders10DebugTuple5field17h93f7018964b8f2e6E(ptr noalias noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 1 %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.3beb75dc861d66d2d938a1ec4e9d58e9.11.llvm.5814777820638942741), !noalias !900 + %11 = call noundef zeroext i1 @_ZN4core3fmt8builders10DebugTuple6finish17hb754cbe52e06c43eE(ptr noalias noundef nonnull align 8 dereferenceable(24) %10), !noalias !900 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3), !noalias !895 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4), !noalias !895 ret i1 %11 } @@ -4222,78 +4242,81 @@ attributes #23 = { noreturn } !830 = !{!831, !827, !824, !828} !831 = distinct !{!831, !832, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17haee67adab7116f68E.llvm.8403485840513791397: argument 0"} !832 = distinct !{!832, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17haee67adab7116f68E.llvm.8403485840513791397"} -!833 = !{!834, !836} -!834 = distinct !{!834, !835, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hebe1c783f3496088E: argument 0"} -!835 = distinct !{!835, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hebe1c783f3496088E"} -!836 = distinct !{!836, !835, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hebe1c783f3496088E: argument 1"} -!837 = !{!838, !827, !824} -!838 = distinct !{!838, !835, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hebe1c783f3496088E: argument 2"} -!839 = !{!824, !828} -!840 = !{!841} -!841 = distinct !{!841, !842, !"_ZN4ring2ec7suite_b3ops9CommonOps23elem_verify_is_not_zero17h39c3ddb8be505643E: argument 0"} -!842 = distinct !{!842, !"_ZN4ring2ec7suite_b3ops9CommonOps23elem_verify_is_not_zero17h39c3ddb8be505643E"} +!833 = !{!834, !827, !824, !828} +!834 = distinct !{!834, !835, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397: argument 0"} +!835 = distinct !{!835, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397"} +!836 = !{!837, !839} +!837 = distinct !{!837, !838, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hebe1c783f3496088E: argument 0"} +!838 = distinct !{!838, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hebe1c783f3496088E"} +!839 = distinct !{!839, !838, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hebe1c783f3496088E: argument 1"} +!840 = !{!841, !827, !824} +!841 = distinct !{!841, !838, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hebe1c783f3496088E: argument 2"} +!842 = !{!824, !828} !843 = !{!844} -!844 = distinct !{!844, !845, !"_ZN4ring2ec7suite_b3ops9CommonOps7point_x17h5d9c925f48bee176E: argument 1"} -!845 = distinct !{!845, !"_ZN4ring2ec7suite_b3ops9CommonOps7point_x17h5d9c925f48bee176E"} -!846 = !{!847, !844, !848} -!847 = distinct !{!847, !845, !"_ZN4ring2ec7suite_b3ops9CommonOps7point_x17h5d9c925f48bee176E: argument 0"} -!848 = distinct !{!848, !845, !"_ZN4ring2ec7suite_b3ops9CommonOps7point_x17h5d9c925f48bee176E: argument 2"} -!849 = !{!847, !848} -!850 = !{!851, !847, !844, !848} -!851 = distinct !{!851, !852, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17haee67adab7116f68E.llvm.8403485840513791397: argument 0"} -!852 = distinct !{!852, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17haee67adab7116f68E.llvm.8403485840513791397"} -!853 = !{!854, !856} -!854 = distinct !{!854, !855, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hebe1c783f3496088E: argument 0"} -!855 = distinct !{!855, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hebe1c783f3496088E"} -!856 = distinct !{!856, !855, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hebe1c783f3496088E: argument 1"} -!857 = !{!858, !847, !844} -!858 = distinct !{!858, !855, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hebe1c783f3496088E: argument 2"} -!859 = !{!844, !848} -!860 = !{!861, !863, !864} -!861 = distinct !{!861, !862, !"_ZN4ring2ec7suite_b3ops9CommonOps7point_y17heb3dae4970743ecfE: argument 0"} -!862 = distinct !{!862, !"_ZN4ring2ec7suite_b3ops9CommonOps7point_y17heb3dae4970743ecfE"} -!863 = distinct !{!863, !862, !"_ZN4ring2ec7suite_b3ops9CommonOps7point_y17heb3dae4970743ecfE: argument 1"} -!864 = distinct !{!864, !862, !"_ZN4ring2ec7suite_b3ops9CommonOps7point_y17heb3dae4970743ecfE: argument 2"} -!865 = !{!866, !868} -!866 = distinct !{!866, !867, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hebe1c783f3496088E: argument 0"} -!867 = distinct !{!867, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hebe1c783f3496088E"} -!868 = distinct !{!868, !867, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hebe1c783f3496088E: argument 1"} -!869 = !{!870, !861, !863} -!870 = distinct !{!870, !867, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hebe1c783f3496088E: argument 2"} -!871 = !{!863, !864} -!872 = !{!873, !875} -!873 = distinct !{!873, !874, !"_ZN4ring2ec7suite_b3ops13PrivateKeyOps10leak_limbs17h1aaccf2c12d99696E: argument 0"} -!874 = distinct !{!874, !"_ZN4ring2ec7suite_b3ops13PrivateKeyOps10leak_limbs17h1aaccf2c12d99696E"} -!875 = distinct !{!875, !874, !"_ZN4ring2ec7suite_b3ops13PrivateKeyOps10leak_limbs17h1aaccf2c12d99696E: argument 1"} -!876 = !{!877, !873, !875} -!877 = distinct !{!877, !878, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397: argument 0"} -!878 = distinct !{!878, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397"} -!879 = !{!880, !882} -!880 = distinct !{!880, !881, !"_ZN4ring2ec7suite_b3ops13PrivateKeyOps10leak_limbs17h1aaccf2c12d99696E: argument 0"} -!881 = distinct !{!881, !"_ZN4ring2ec7suite_b3ops13PrivateKeyOps10leak_limbs17h1aaccf2c12d99696E"} -!882 = distinct !{!882, !881, !"_ZN4ring2ec7suite_b3ops13PrivateKeyOps10leak_limbs17h1aaccf2c12d99696E: argument 1"} -!883 = !{!884, !880, !882} -!884 = distinct !{!884, !885, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397: argument 0"} -!885 = distinct !{!885, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397"} -!886 = !{!887, !889, !890} -!887 = distinct !{!887, !888, !"_ZN4ring5debug15write_hex_tuple17h30fed513d9c05879E: argument 0"} -!888 = distinct !{!888, !"_ZN4ring5debug15write_hex_tuple17h30fed513d9c05879E"} -!889 = distinct !{!889, !888, !"_ZN4ring5debug15write_hex_tuple17h30fed513d9c05879E: argument 1"} -!890 = distinct !{!890, !888, !"_ZN4ring5debug15write_hex_tuple17h30fed513d9c05879E: argument 2"} -!891 = !{!890} -!892 = !{!893, !895, !896} -!893 = distinct !{!893, !894, !"_ZN4ring5debug15write_hex_tuple17h30fed513d9c05879E: argument 0"} -!894 = distinct !{!894, !"_ZN4ring5debug15write_hex_tuple17h30fed513d9c05879E"} -!895 = distinct !{!895, !894, !"_ZN4ring5debug15write_hex_tuple17h30fed513d9c05879E: argument 1"} -!896 = distinct !{!896, !894, !"_ZN4ring5debug15write_hex_tuple17h30fed513d9c05879E: argument 2"} -!897 = !{!896} -!898 = !{!899} -!899 = distinct !{!899, !900, !"_ZN105_$LT$ring..ec..suite_b..ecdsa..signing..PublicKey$u20$as$u20$core..convert..AsRef$LT$$u5b$u8$u5d$$GT$$GT$6as_ref17hba6de885ea57ea44E: argument 0"} -!900 = distinct !{!900, !"_ZN105_$LT$ring..ec..suite_b..ecdsa..signing..PublicKey$u20$as$u20$core..convert..AsRef$LT$$u5b$u8$u5d$$GT$$GT$6as_ref17hba6de885ea57ea44E"} +!844 = distinct !{!844, !845, !"_ZN4ring2ec7suite_b3ops9CommonOps23elem_verify_is_not_zero17h39c3ddb8be505643E: argument 0"} +!845 = distinct !{!845, !"_ZN4ring2ec7suite_b3ops9CommonOps23elem_verify_is_not_zero17h39c3ddb8be505643E"} +!846 = !{!847} +!847 = distinct !{!847, !848, !"_ZN4ring2ec7suite_b3ops9CommonOps7point_x17h5d9c925f48bee176E: argument 1"} +!848 = distinct !{!848, !"_ZN4ring2ec7suite_b3ops9CommonOps7point_x17h5d9c925f48bee176E"} +!849 = !{!850, !847, !851} +!850 = distinct !{!850, !848, !"_ZN4ring2ec7suite_b3ops9CommonOps7point_x17h5d9c925f48bee176E: argument 0"} +!851 = distinct !{!851, !848, !"_ZN4ring2ec7suite_b3ops9CommonOps7point_x17h5d9c925f48bee176E: argument 2"} +!852 = !{!850, !851} +!853 = !{!854, !850, !847, !851} +!854 = distinct !{!854, !855, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17haee67adab7116f68E.llvm.8403485840513791397: argument 0"} +!855 = distinct !{!855, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17haee67adab7116f68E.llvm.8403485840513791397"} +!856 = !{!857, !859} +!857 = distinct !{!857, !858, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hebe1c783f3496088E: argument 0"} +!858 = distinct !{!858, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hebe1c783f3496088E"} +!859 = distinct !{!859, !858, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hebe1c783f3496088E: argument 1"} +!860 = !{!861, !850, !847} +!861 = distinct !{!861, !858, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hebe1c783f3496088E: argument 2"} +!862 = !{!847, !851} +!863 = !{!864, !866, !867} +!864 = distinct !{!864, !865, !"_ZN4ring2ec7suite_b3ops9CommonOps7point_y17heb3dae4970743ecfE: argument 0"} +!865 = distinct !{!865, !"_ZN4ring2ec7suite_b3ops9CommonOps7point_y17heb3dae4970743ecfE"} +!866 = distinct !{!866, !865, !"_ZN4ring2ec7suite_b3ops9CommonOps7point_y17heb3dae4970743ecfE: argument 1"} +!867 = distinct !{!867, !865, !"_ZN4ring2ec7suite_b3ops9CommonOps7point_y17heb3dae4970743ecfE: argument 2"} +!868 = !{!869, !871} +!869 = distinct !{!869, !870, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hebe1c783f3496088E: argument 0"} +!870 = distinct !{!870, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hebe1c783f3496088E"} +!871 = distinct !{!871, !870, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hebe1c783f3496088E: argument 1"} +!872 = !{!873, !864, !866} +!873 = distinct !{!873, !870, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hebe1c783f3496088E: argument 2"} +!874 = !{!866, !867} +!875 = !{!876, !878} +!876 = distinct !{!876, !877, !"_ZN4ring2ec7suite_b3ops13PrivateKeyOps10leak_limbs17h1aaccf2c12d99696E: argument 0"} +!877 = distinct !{!877, !"_ZN4ring2ec7suite_b3ops13PrivateKeyOps10leak_limbs17h1aaccf2c12d99696E"} +!878 = distinct !{!878, !877, !"_ZN4ring2ec7suite_b3ops13PrivateKeyOps10leak_limbs17h1aaccf2c12d99696E: argument 1"} +!879 = !{!880, !876, !878} +!880 = distinct !{!880, !881, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397: argument 0"} +!881 = distinct !{!881, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397"} +!882 = !{!883, !885} +!883 = distinct !{!883, !884, !"_ZN4ring2ec7suite_b3ops13PrivateKeyOps10leak_limbs17h1aaccf2c12d99696E: argument 0"} +!884 = distinct !{!884, !"_ZN4ring2ec7suite_b3ops13PrivateKeyOps10leak_limbs17h1aaccf2c12d99696E"} +!885 = distinct !{!885, !884, !"_ZN4ring2ec7suite_b3ops13PrivateKeyOps10leak_limbs17h1aaccf2c12d99696E: argument 1"} +!886 = !{!887, !883, !885} +!887 = distinct !{!887, !888, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397: argument 0"} +!888 = distinct !{!888, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397"} +!889 = !{!890, !892, !893} +!890 = distinct !{!890, !891, !"_ZN4ring5debug15write_hex_tuple17h30fed513d9c05879E: argument 0"} +!891 = distinct !{!891, !"_ZN4ring5debug15write_hex_tuple17h30fed513d9c05879E"} +!892 = distinct !{!892, !891, !"_ZN4ring5debug15write_hex_tuple17h30fed513d9c05879E: argument 1"} +!893 = distinct !{!893, !891, !"_ZN4ring5debug15write_hex_tuple17h30fed513d9c05879E: argument 2"} +!894 = !{!893} +!895 = !{!896, !898, !899} +!896 = distinct !{!896, !897, !"_ZN4ring5debug15write_hex_tuple17h30fed513d9c05879E: argument 0"} +!897 = distinct !{!897, !"_ZN4ring5debug15write_hex_tuple17h30fed513d9c05879E"} +!898 = distinct !{!898, !897, !"_ZN4ring5debug15write_hex_tuple17h30fed513d9c05879E: argument 1"} +!899 = distinct !{!899, !897, !"_ZN4ring5debug15write_hex_tuple17h30fed513d9c05879E: argument 2"} +!900 = !{!899} !901 = !{!902} -!902 = distinct !{!902, !903, !"_ZN86_$LT$ring..ec..keys..PublicKey$u20$as$u20$core..convert..AsRef$LT$$u5b$u8$u5d$$GT$$GT$6as_ref17hf285068a11369dfaE: argument 0"} -!903 = distinct !{!903, !"_ZN86_$LT$ring..ec..keys..PublicKey$u20$as$u20$core..convert..AsRef$LT$$u5b$u8$u5d$$GT$$GT$6as_ref17hf285068a11369dfaE"} -!904 = !{!902, !899} -!905 = !{!906, !902, !899, !896} -!906 = distinct !{!906, !907, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17heb3913cfe867f2eeE.llvm.6801758991666044160: argument 0"} -!907 = distinct !{!907, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17heb3913cfe867f2eeE.llvm.6801758991666044160"} +!902 = distinct !{!902, !903, !"_ZN105_$LT$ring..ec..suite_b..ecdsa..signing..PublicKey$u20$as$u20$core..convert..AsRef$LT$$u5b$u8$u5d$$GT$$GT$6as_ref17hba6de885ea57ea44E: argument 0"} +!903 = distinct !{!903, !"_ZN105_$LT$ring..ec..suite_b..ecdsa..signing..PublicKey$u20$as$u20$core..convert..AsRef$LT$$u5b$u8$u5d$$GT$$GT$6as_ref17hba6de885ea57ea44E"} +!904 = !{!905} +!905 = distinct !{!905, !906, !"_ZN86_$LT$ring..ec..keys..PublicKey$u20$as$u20$core..convert..AsRef$LT$$u5b$u8$u5d$$GT$$GT$6as_ref17hf285068a11369dfaE: argument 0"} +!906 = distinct !{!906, !"_ZN86_$LT$ring..ec..keys..PublicKey$u20$as$u20$core..convert..AsRef$LT$$u5b$u8$u5d$$GT$$GT$6as_ref17hf285068a11369dfaE"} +!907 = !{!905, !902} +!908 = !{!909, !905, !902, !899} +!909 = distinct !{!909, !910, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17heb3913cfe867f2eeE.llvm.6801758991666044160: argument 0"} +!910 = distinct !{!910, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17heb3913cfe867f2eeE.llvm.6801758991666044160"} diff --git a/bench/ring-rs/optimized/3r96bqjv88cu5m8n.ll b/bench/ring-rs/optimized/3r96bqjv88cu5m8n.ll index 9708424b965..9ff4ef604b1 100644 --- a/bench/ring-rs/optimized/3r96bqjv88cu5m8n.ll +++ b/bench/ring-rs/optimized/3r96bqjv88cu5m8n.ll @@ -1260,10 +1260,19 @@ define hidden void @_ZN4ring2ec7suite_b3ops9CommonOps7point_z17h34030798387f85fe unreachable "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17haee67adab7116f68E.llvm.8403485840513791397.exit": ; preds = %3 - %.idx = shl nuw nsw i64 %5, 4 - %8 = getelementptr inbounds i8, ptr %2, i64 %.idx - %9 = shl nuw nsw i64 %5, 3 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %.sroa.0, ptr nonnull readonly align 8 %8, i64 %9, i1 false), !alias.scope !251, !noalias !255 + %8 = shl nuw nsw i64 %5, 1 + %9 = mul nuw nsw i64 %5, 3 + %10 = icmp samesign ugt i64 %8, %9 + br i1 %10, label %11, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397.exit" + +11: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17haee67adab7116f68E.llvm.8403485840513791397.exit" + tail call void @_ZN4core5slice5index22slice_index_order_fail17hcfcb08cd5efc8d4cE(i64 noundef %8, i64 noundef %9, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a08cbc0fed5954eef0273385eb99bffc.49.llvm.8403485840513791397) #26, !noalias !251 + unreachable + +"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397.exit": ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17haee67adab7116f68E.llvm.8403485840513791397.exit" + %12 = getelementptr inbounds i64, ptr %2, i64 %8 + %13 = shl nuw nsw i64 %5, 3 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %.sroa.0, ptr nonnull readonly align 8 %12, i64 %13, i1 false), !alias.scope !254, !noalias !258 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %0, ptr noundef nonnull align 8 dereferenceable(48) %.sroa.0, i64 48, i1 false) call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %.sroa.0) ret void @@ -1278,7 +1287,7 @@ define hidden { ptr, i64 } @_ZN4ring2ec7suite_b3ops13PrivateKeyOps10leak_limbs17 br i1 %6, label %7, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397.exit" 7: ; preds = %2 - tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %5, i64 noundef 6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a08cbc0fed5954eef0273385eb99bffc.51.llvm.8403485840513791397) #26, !noalias !257 + tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %5, i64 noundef 6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a08cbc0fed5954eef0273385eb99bffc.51.llvm.8403485840513791397) #26, !noalias !260 unreachable "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397.exit": ; preds = %2 @@ -1291,7 +1300,7 @@ define hidden { ptr, i64 } @_ZN4ring2ec7suite_b3ops13PrivateKeyOps10leak_limbs17 define hidden void @_ZN4ring2ec7suite_b3ops13PrivateKeyOps9point_mul17h36123dcdc5d41a21E.llvm.8403485840513791397(ptr noalias nocapture noundef writeonly sret({ [18 x i64] }) align 8 dereferenceable(144) initializes((0, 144)) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(32) %1, ptr noalias noundef readonly align 8 dereferenceable(48) %2, ptr noalias noundef readonly align 8 dereferenceable(96) %3) unnamed_addr #12 { %5 = alloca { [18 x i64] }, align 8 call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %5) - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(144) %5, i8 0, i64 144, i1 false), !alias.scope !260 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(144) %5, i8 0, i64 144, i1 false), !alias.scope !263 %6 = getelementptr inbounds i8, ptr %1, i64 24 %7 = load ptr, ptr %6, align 8, !nonnull !4, !noundef !4 %8 = getelementptr inbounds i8, ptr %3, i64 48 @@ -1308,30 +1317,30 @@ define hidden void @_ZN4ring2ec7suite_b3ops12PublicKeyOps10elem_parse17h2c4b2e31 %6 = alloca { [6 x i64], {}, {} }, align 8 %7 = load ptr, ptr %1, align 8, !nonnull !4, !align !9, !noundef !4 %8 = getelementptr inbounds i8, ptr %7, i64 24 - %9 = load i64, ptr %8, align 8, !alias.scope !263, !noundef !4 + %9 = load i64, ptr %8, align 8, !alias.scope !266, !noundef !4 %10 = shl i64 %9, 3 %11 = getelementptr inbounds i8, ptr %2, i64 16 - %12 = load i64, ptr %11, align 8, !alias.scope !266, !noundef !4 + %12 = load i64, ptr %11, align 8, !alias.scope !269, !noundef !4 %13 = tail call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %12, i64 %10) %14 = extractvalue { i64, i1 } %13, 0 %15 = extractvalue { i64, i1 } %13, 1 %16 = getelementptr inbounds i8, ptr %2, i64 8 - %17 = load i64, ptr %16, align 8, !alias.scope !266 + %17 = load i64, ptr %16, align 8, !alias.scope !269 %18 = icmp ugt i64 %14, %17 %or.cond.i = select i1 %15, i1 true, i1 %18 br i1 %or.cond.i, label %28, label %19 19: ; preds = %3 - %20 = load ptr, ptr %2, align 8, !alias.scope !266, !nonnull !4, !align !5, !noundef !4 + %20 = load ptr, ptr %2, align 8, !alias.scope !269, !nonnull !4, !align !5, !noundef !4 %21 = getelementptr inbounds i8, ptr %20, i64 %12 - store i64 %14, ptr %11, align 8, !alias.scope !266 + store i64 %14, ptr %11, align 8, !alias.scope !269 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %6) %22 = getelementptr inbounds i8, ptr %7, i64 32 %23 = icmp ugt i64 %9, 6 br i1 %23, label %24, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397.exit" 24: ; preds = %19 - tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %9, i64 noundef 6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a08cbc0fed5954eef0273385eb99bffc.52) #26, !noalias !269 + tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %9, i64 noundef 6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a08cbc0fed5954eef0273385eb99bffc.52) #26, !noalias !272 unreachable "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397.exit": ; preds = %19 @@ -1340,13 +1349,13 @@ define hidden void @_ZN4ring2ec7suite_b3ops12PublicKeyOps10elem_parse17h2c4b2e31 br i1 %.not.i, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17haee67adab7116f68E.llvm.9292951165861561203.exit.i", label %33 "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17haee67adab7116f68E.llvm.9292951165861561203.exit.i": ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397.exit" - call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %4), !noalias !272 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %4, i8 0, i64 48, i1 false), !noalias !272 - %26 = call noundef zeroext i1 @_ZN4ring4limb43parse_big_endian_in_range_and_pad_consttime17h9048a00efd342339E(ptr noalias noundef nonnull readonly align 1 %21, i64 noundef %10, i1 noundef zeroext true, ptr noalias noundef nonnull readonly align 8 %22, i64 noundef %9, ptr noalias noundef nonnull align 8 %4, i64 noundef %9), !noalias !278 + call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %4), !noalias !275 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %4, i8 0, i64 48, i1 false), !noalias !275 + %26 = call noundef zeroext i1 @_ZN4ring4limb43parse_big_endian_in_range_and_pad_consttime17h9048a00efd342339E(ptr noalias noundef nonnull readonly align 1 %21, i64 noundef %10, i1 noundef zeroext true, ptr noalias noundef nonnull readonly align 8 %22, i64 noundef %9, ptr noalias noundef nonnull align 8 %4, i64 noundef %9), !noalias !281 br i1 %26, label %27, label %29 27: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17haee67adab7116f68E.llvm.9292951165861561203.exit.i" - call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %4), !noalias !272 + call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %4), !noalias !275 br label %33 28: ; preds = %3 @@ -1355,7 +1364,7 @@ define hidden void @_ZN4ring2ec7suite_b3ops12PublicKeyOps10elem_parse17h2c4b2e31 29: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17haee67adab7116f68E.llvm.9292951165861561203.exit.i" call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %6, ptr noundef nonnull align 8 dereferenceable(48) %4, i64 48, i1 false) - call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %4), !noalias !272 + call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %4), !noalias !275 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %5) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %5, i8 0, i64 48, i1 false) %30 = load ptr, ptr %7, align 8, !nonnull !4, !noundef !4 @@ -1381,7 +1390,7 @@ define hidden void @_ZN4ring2ec7suite_b3ops12PublicKeyOps10elem_parse17h2c4b2e31 define hidden noundef range(i64 0, -7) i64 @_ZN4ring2ec7suite_b3ops9ScalarOps16scalar_bytes_len17hca28ce069050a2f9E(ptr noalias nocapture noundef readonly align 8 dereferenceable(16) %0) unnamed_addr #13 { %2 = load ptr, ptr %0, align 8, !nonnull !4, !align !9, !noundef !4 %3 = getelementptr inbounds i8, ptr %2, i64 24 - %4 = load i64, ptr %3, align 8, !alias.scope !279, !noundef !4 + %4 = load i64, ptr %3, align 8, !alias.scope !282, !noundef !4 %5 = shl i64 %4, 3 ret i64 %5 } @@ -1395,7 +1404,7 @@ define hidden { ptr, i64 } @_ZN4ring2ec7suite_b3ops9ScalarOps10leak_limbs17h08fa br i1 %6, label %7, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397.exit" 7: ; preds = %2 - tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %5, i64 noundef 6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a08cbc0fed5954eef0273385eb99bffc.53.llvm.8403485840513791397) #26, !noalias !282 + tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %5, i64 noundef 6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a08cbc0fed5954eef0273385eb99bffc.53.llvm.8403485840513791397) #26, !noalias !285 unreachable "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397.exit": ; preds = %2 @@ -1431,7 +1440,7 @@ define void @_ZN4ring2ec7suite_b3ops16PrivateScalarOps18scalar_inv_to_mont17h6d2 br i1 %10, label %11, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397.exit" 11: ; preds = %3 - tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %9, i64 noundef 6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a08cbc0fed5954eef0273385eb99bffc.41.llvm.8403485840513791397) #26, !noalias !285 + tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %9, i64 noundef 6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a08cbc0fed5954eef0273385eb99bffc.41.llvm.8403485840513791397) #26, !noalias !288 unreachable "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397.exit": ; preds = %3 @@ -1445,13 +1454,13 @@ define void @_ZN4ring2ec7suite_b3ops16PrivateScalarOps18scalar_inv_to_mont17h6d2 15: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397.exit" %16 = getelementptr inbounds i8, ptr %6, i64 8 - %17 = load ptr, ptr %16, align 8, !noalias !288, !nonnull !4, !noundef !4 - call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %4), !noalias !288 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %4, i8 0, i64 48, i1 false), !noalias !288 + %17 = load ptr, ptr %16, align 8, !noalias !291, !nonnull !4, !noundef !4 + call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %4), !noalias !291 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %4, i8 0, i64 48, i1 false), !noalias !291 %18 = getelementptr inbounds i8, ptr %1, i64 16 - call void %17(ptr noundef nonnull %4, ptr noundef nonnull readonly align 8 dereferenceable(48) %2, ptr noundef nonnull readonly %18), !noalias !293 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %5, ptr noundef nonnull align 8 dereferenceable(48) %4, i64 48, i1 false), !noalias !294 - call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %4), !noalias !288 + call void %17(ptr noundef nonnull %4, ptr noundef nonnull readonly align 8 dereferenceable(48) %2, ptr noundef nonnull readonly %18), !noalias !296 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %5, ptr noundef nonnull align 8 dereferenceable(48) %4, i64 48, i1 false), !noalias !297 + call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %4), !noalias !291 %19 = getelementptr inbounds i8, ptr %1, i64 8 %20 = load ptr, ptr %19, align 8, !nonnull !4, !noundef !4 call void %20(ptr noalias nocapture noundef nonnull sret({ [6 x i64], {}, {} }) align 8 dereferenceable(48) %0, ptr noalias nocapture noundef nonnull align 8 dereferenceable(48) %5) @@ -1469,24 +1478,24 @@ define void @_ZN4ring2ec7suite_b3ops20twin_mul_inefficient17he0ec1380182272dbE(p %11 = load ptr, ptr %10, align 8, !nonnull !4, !noundef !4 call void %11(ptr noalias nocapture noundef nonnull sret({ [18 x i64] }) align 8 dereferenceable(144) %9, ptr noalias noundef nonnull readonly align 8 dereferenceable(48) %2) call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %8) - tail call void @llvm.experimental.noalias.scope.decl(metadata !295) - call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %7), !noalias !298 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(144) %7, i8 0, i64 144, i1 false), !alias.scope !302, !noalias !298 + tail call void @llvm.experimental.noalias.scope.decl(metadata !298) + call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %7), !noalias !301 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(144) %7, i8 0, i64 144, i1 false), !alias.scope !305, !noalias !301 %12 = getelementptr inbounds i8, ptr %1, i64 24 - %13 = load ptr, ptr %12, align 8, !alias.scope !295, !noalias !305, !nonnull !4, !noundef !4 + %13 = load ptr, ptr %12, align 8, !alias.scope !298, !noalias !308, !nonnull !4, !noundef !4 %14 = getelementptr inbounds i8, ptr %4, i64 48 - call void %13(ptr noundef nonnull %7, ptr noundef nonnull readonly align 8 dereferenceable(48) %3, ptr noundef nonnull readonly align 8 dereferenceable(96) %4, ptr noundef nonnull readonly %14), !noalias !306 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(144) %8, ptr noundef nonnull align 8 dereferenceable(144) %7, i64 144, i1 false), !noalias !307 - call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %7), !noalias !298 + call void %13(ptr noundef nonnull %7, ptr noundef nonnull readonly align 8 dereferenceable(48) %3, ptr noundef nonnull readonly align 8 dereferenceable(96) %4, ptr noundef nonnull readonly %14), !noalias !309 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(144) %8, ptr noundef nonnull align 8 dereferenceable(144) %7, i64 144, i1 false), !noalias !310 + call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %7), !noalias !301 %15 = load ptr, ptr %1, align 8, !nonnull !4, !align !9, !noundef !4 - call void @llvm.experimental.noalias.scope.decl(metadata !308) - call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %6), !noalias !311 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(144) %6, i8 0, i64 144, i1 false), !alias.scope !315, !noalias !311 + call void @llvm.experimental.noalias.scope.decl(metadata !311) + call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %6), !noalias !314 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(144) %6, i8 0, i64 144, i1 false), !alias.scope !318, !noalias !314 %16 = getelementptr inbounds i8, ptr %15, i64 16 - %17 = load ptr, ptr %16, align 8, !alias.scope !308, !noalias !318, !nonnull !4, !noundef !4 - call void %17(ptr noundef nonnull %6, ptr noundef nonnull readonly align 8 dereferenceable(144) %9, ptr noundef nonnull readonly align 8 dereferenceable(144) %8), !noalias !319 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(144) %0, ptr noundef nonnull align 8 dereferenceable(144) %6, i64 144, i1 false), !noalias !320 - call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %6), !noalias !311 + %17 = load ptr, ptr %16, align 8, !alias.scope !311, !noalias !321, !nonnull !4, !noundef !4 + call void %17(ptr noundef nonnull %6, ptr noundef nonnull readonly align 8 dereferenceable(144) %9, ptr noundef nonnull readonly align 8 dereferenceable(144) %8), !noalias !322 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(144) %0, ptr noundef nonnull align 8 dereferenceable(144) %6, i64 144, i1 false), !noalias !323 + call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %6), !noalias !314 call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %8) call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %9) ret void @@ -1503,7 +1512,7 @@ define hidden void @_ZN4ring2ec7suite_b3ops22elem_reduced_to_scalar17h6b2521de08 br i1 %7, label %8, label %_ZN4ring4limb31limbs_reduce_once_constant_time17he3b97071749e2ae9E.llvm.8403485840513791397.exit 8: ; preds = %3 - tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %6, i64 noundef 6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a08cbc0fed5954eef0273385eb99bffc.60.llvm.8403485840513791397) #26, !noalias !321 + tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %6, i64 noundef 6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a08cbc0fed5954eef0273385eb99bffc.60.llvm.8403485840513791397) #26, !noalias !324 unreachable _ZN4ring4limb31limbs_reduce_once_constant_time17he3b97071749e2ae9E.llvm.8403485840513791397.exit: ; preds = %3 @@ -1522,7 +1531,7 @@ define hidden void @_ZN4ring2ec7suite_b3ops10scalar_sum17h914f58a4bef20d0cE(ptr br i1 %7, label %8, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397.exit5" 8: ; preds = %4 - tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %6, i64 noundef 6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a08cbc0fed5954eef0273385eb99bffc.62.llvm.8403485840513791397) #26, !noalias !324 + tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %6, i64 noundef 6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a08cbc0fed5954eef0273385eb99bffc.62.llvm.8403485840513791397) #26, !noalias !327 unreachable "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397.exit5": ; preds = %4 @@ -1605,42 +1614,42 @@ define hidden void @_ZN4ring2ec7suite_b3ops60scalar_parse_big_endian_partially_r br i1 %13, label %14, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17haee67adab7116f68E.llvm.8403485840513791397.exit" 14: ; preds = %4 - tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %12, i64 noundef 6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a08cbc0fed5954eef0273385eb99bffc.67.llvm.8403485840513791397) #26, !noalias !327 + tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h9163fa4abd3ca1acE(i64 noundef %12, i64 noundef 6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a08cbc0fed5954eef0273385eb99bffc.67.llvm.8403485840513791397) #26, !noalias !330 unreachable "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17haee67adab7116f68E.llvm.8403485840513791397.exit": ; preds = %4 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) - store ptr %2, ptr %9, align 8, !noalias !330 + store ptr %2, ptr %9, align 8, !noalias !333 %15 = getelementptr inbounds i8, ptr %9, i64 8 - store i64 %3, ptr %15, align 8, !noalias !330 + store i64 %3, ptr %15, align 8, !noalias !333 %16 = icmp eq i64 %3, 0 br i1 %16, label %.sink.split, label %17 17: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17haee67adab7116f68E.llvm.8403485840513791397.exit" - call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8), !noalias !330 + call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8), !noalias !333 %18 = and i64 %3, 7 %19 = icmp ne i64 %18, 0 %spec.store.select.i = select i1 %19, i64 %18, i64 8 - store i64 %spec.store.select.i, ptr %8, align 8, !noalias !330 - call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7), !noalias !330 + store i64 %spec.store.select.i, ptr %8, align 8, !noalias !333 + call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7), !noalias !333 %20 = lshr i64 %3, 3 %..i = zext i1 %19 to i64 %21 = add nuw nsw i64 %20, %..i - store i64 %21, ptr %7, align 8, !noalias !330 + store i64 %21, ptr %7, align 8, !noalias !333 %22 = icmp samesign ugt i64 %21, %12 br i1 %22, label %_ZN4ring4limb34parse_big_endian_and_pad_consttime17he048a2e6bf7d0cd1E.exit.thread8, label %23 _ZN4ring4limb34parse_big_endian_and_pad_consttime17he048a2e6bf7d0cd1E.exit.thread8: ; preds = %17 - call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7), !noalias !330 - call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8), !noalias !330 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7), !noalias !333 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8), !noalias !333 br label %.sink.split 23: ; preds = %17 %24 = getelementptr inbounds i64, ptr %10, i64 %12 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5), !noalias !334 - store ptr %10, ptr %5, align 8, !noalias !334 + call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5), !noalias !337 + store ptr %10, ptr %5, align 8, !noalias !337 %25 = getelementptr inbounds i8, ptr %5, i64 8 - store ptr %24, ptr %25, align 8, !noalias !334 + store ptr %24, ptr %25, align 8, !noalias !337 %26 = call noundef align 8 dereferenceable_or_null(8) ptr @"_ZN94_$LT$core..slice..iter..IterMut$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h505fdbce7cfc4f1bE.llvm.12309478120345669377"(ptr noalias noundef nonnull align 8 dereferenceable(16) %5) %27 = icmp eq ptr %26, null br i1 %27, label %_ZN4ring4limb34parse_big_endian_and_pad_consttime17he048a2e6bf7d0cd1E.exit, label %.lr.ph.i.i @@ -1653,19 +1662,19 @@ _ZN4ring4limb34parse_big_endian_and_pad_consttime17he048a2e6bf7d0cd1E.exit.threa br i1 %30, label %_ZN4ring4limb34parse_big_endian_and_pad_consttime17he048a2e6bf7d0cd1E.exit, label %.lr.ph.i.i _ZN4ring4limb34parse_big_endian_and_pad_consttime17he048a2e6bf7d0cd1E.exit: ; preds = %.lr.ph.i.i, %23 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5), !noalias !334 - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6), !noalias !330 - store ptr %7, ptr %6, align 8, !noalias !330 + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5), !noalias !337 + call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6), !noalias !333 + store ptr %7, ptr %6, align 8, !noalias !333 %31 = getelementptr inbounds i8, ptr %6, i64 8 - store ptr %8, ptr %31, align 8, !noalias !330 + store ptr %8, ptr %31, align 8, !noalias !333 %32 = getelementptr inbounds i8, ptr %6, i64 16 - store ptr %10, ptr %32, align 8, !noalias !330 + store ptr %10, ptr %32, align 8, !noalias !333 %33 = getelementptr inbounds i8, ptr %6, i64 24 - store i64 %12, ptr %33, align 8, !noalias !330 + store i64 %12, ptr %33, align 8, !noalias !333 %34 = call noundef zeroext i1 @_ZN9untrusted5input5Input8read_all17hf8c54ada4aa095d8E(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %9, ptr noalias nocapture noundef nonnull align 8 dereferenceable(32) %6) - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6), !noalias !330 - call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7), !noalias !330 - call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8), !noalias !330 + call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6), !noalias !333 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7), !noalias !333 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8), !noalias !333 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) br i1 %34, label %37, label %_ZN4ring4limb31limbs_reduce_once_constant_time17he3b97071749e2ae9E.llvm.8403485840513791397.exit @@ -1716,37 +1725,37 @@ define hidden void @_ZN4ring4limb31limbs_reduce_once_constant_time17he3b97071749 define hidden void @_ZN4ring3rsa7keypair7KeyPair15from_components17hcabd923a430ab622E(ptr noalias nocapture noundef sret({ ptr, [29 x i64] }) align 8 dereferenceable(240) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(128) %1) unnamed_addr #2 personality ptr @rust_eh_personality { %3 = alloca { { { ptr, i64 }, { ptr, i64 } }, { ptr, i64 }, { ptr, i64 }, { ptr, i64 }, { ptr, i64 }, { ptr, i64 }, { ptr, i64 } }, align 8 call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %3) - %4 = load ptr, ptr %1, align 8, !alias.scope !337, !nonnull !4, !align !5, !noundef !4 + %4 = load ptr, ptr %1, align 8, !alias.scope !340, !nonnull !4, !align !5, !noundef !4 %5 = getelementptr inbounds i8, ptr %1, i64 8 - %6 = load i64, ptr %5, align 8, !alias.scope !337, !noundef !4 + %6 = load i64, ptr %5, align 8, !alias.scope !340, !noundef !4 %7 = getelementptr inbounds i8, ptr %1, i64 16 - %8 = load ptr, ptr %7, align 8, !alias.scope !340, !nonnull !4, !align !5, !noundef !4 + %8 = load ptr, ptr %7, align 8, !alias.scope !343, !nonnull !4, !align !5, !noundef !4 %9 = getelementptr inbounds i8, ptr %1, i64 24 - %10 = load i64, ptr %9, align 8, !alias.scope !340, !noundef !4 + %10 = load i64, ptr %9, align 8, !alias.scope !343, !noundef !4 %11 = getelementptr inbounds i8, ptr %1, i64 32 - %12 = load ptr, ptr %11, align 8, !alias.scope !343, !nonnull !4, !align !5, !noundef !4 + %12 = load ptr, ptr %11, align 8, !alias.scope !346, !nonnull !4, !align !5, !noundef !4 %13 = getelementptr inbounds i8, ptr %1, i64 40 - %14 = load i64, ptr %13, align 8, !alias.scope !343, !noundef !4 + %14 = load i64, ptr %13, align 8, !alias.scope !346, !noundef !4 %15 = getelementptr inbounds i8, ptr %1, i64 48 - %16 = load ptr, ptr %15, align 8, !alias.scope !346, !nonnull !4, !align !5, !noundef !4 + %16 = load ptr, ptr %15, align 8, !alias.scope !349, !nonnull !4, !align !5, !noundef !4 %17 = getelementptr inbounds i8, ptr %1, i64 56 - %18 = load i64, ptr %17, align 8, !alias.scope !346, !noundef !4 + %18 = load i64, ptr %17, align 8, !alias.scope !349, !noundef !4 %19 = getelementptr inbounds i8, ptr %1, i64 64 - %20 = load ptr, ptr %19, align 8, !alias.scope !349, !nonnull !4, !align !5, !noundef !4 + %20 = load ptr, ptr %19, align 8, !alias.scope !352, !nonnull !4, !align !5, !noundef !4 %21 = getelementptr inbounds i8, ptr %1, i64 72 - %22 = load i64, ptr %21, align 8, !alias.scope !349, !noundef !4 + %22 = load i64, ptr %21, align 8, !alias.scope !352, !noundef !4 %23 = getelementptr inbounds i8, ptr %1, i64 80 - %24 = load ptr, ptr %23, align 8, !alias.scope !352, !nonnull !4, !align !5, !noundef !4 + %24 = load ptr, ptr %23, align 8, !alias.scope !355, !nonnull !4, !align !5, !noundef !4 %25 = getelementptr inbounds i8, ptr %1, i64 88 - %26 = load i64, ptr %25, align 8, !alias.scope !352, !noundef !4 + %26 = load i64, ptr %25, align 8, !alias.scope !355, !noundef !4 %27 = getelementptr inbounds i8, ptr %1, i64 96 - %28 = load ptr, ptr %27, align 8, !alias.scope !355, !nonnull !4, !align !5, !noundef !4 + %28 = load ptr, ptr %27, align 8, !alias.scope !358, !nonnull !4, !align !5, !noundef !4 %29 = getelementptr inbounds i8, ptr %1, i64 104 - %30 = load i64, ptr %29, align 8, !alias.scope !355, !noundef !4 + %30 = load i64, ptr %29, align 8, !alias.scope !358, !noundef !4 %31 = getelementptr inbounds i8, ptr %1, i64 112 - %32 = load ptr, ptr %31, align 8, !alias.scope !358, !nonnull !4, !align !5, !noundef !4 + %32 = load ptr, ptr %31, align 8, !alias.scope !361, !nonnull !4, !align !5, !noundef !4 %33 = getelementptr inbounds i8, ptr %1, i64 120 - %34 = load i64, ptr %33, align 8, !alias.scope !358, !noundef !4 + %34 = load i64, ptr %33, align 8, !alias.scope !361, !noundef !4 store ptr %4, ptr %3, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %3, i64 8 store i64 %6, ptr %.sroa.4.0..sroa_idx, align 8 @@ -2047,9 +2056,9 @@ define hidden void @"_ZN4ring3rsa7keypair24PrivateCrtPrime$LT$M$GT$3new17h09b68f %27 = getelementptr inbounds i8, ptr %1, i64 48 %28 = load i64, ptr %27, align 8, !noundef !4 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) - store ptr %26, ptr %5, align 8, !noalias !361 + store ptr %26, ptr %5, align 8, !noalias !364 %29 = getelementptr inbounds i8, ptr %5, i64 8 - store i64 %28, ptr %29, align 8, !noalias !361 + store i64 %28, ptr %29, align 8, !noalias !364 invoke void @ring_core_0_17_8__bn_mul_mont(ptr noundef nonnull align 8 %26, ptr noundef nonnull align 8 %26, ptr noundef nonnull align 8 %26, ptr noundef nonnull readonly align 8 %8, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %12, i64 noundef %28) to label %43 unwind label %30 @@ -2184,9 +2193,9 @@ define hidden void @"_ZN4ring3rsa7keypair24PrivateCrtPrime$LT$M$GT$3new17h9b0bf5 %27 = getelementptr inbounds i8, ptr %1, i64 48 %28 = load i64, ptr %27, align 8, !noundef !4 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) - store ptr %26, ptr %5, align 8, !noalias !365 + store ptr %26, ptr %5, align 8, !noalias !368 %29 = getelementptr inbounds i8, ptr %5, i64 8 - store i64 %28, ptr %29, align 8, !noalias !365 + store i64 %28, ptr %29, align 8, !noalias !368 invoke void @ring_core_0_17_8__bn_mul_mont(ptr noundef nonnull align 8 %26, ptr noundef nonnull align 8 %26, ptr noundef nonnull align 8 %26, ptr noundef nonnull readonly align 8 %8, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %12, i64 noundef %28) to label %43 unwind label %30 @@ -2294,25 +2303,25 @@ define hidden { ptr, i64 } @_ZN4ring3rsa7keypair18elem_exp_consttime17h9eb95b503 %16 = extractvalue { ptr, i64 } %15, 0 %17 = extractvalue { ptr, i64 } %15, 1 %18 = getelementptr inbounds i8, ptr %1, i64 40 - call void @llvm.experimental.noalias.scope.decl(metadata !369) + call void @llvm.experimental.noalias.scope.decl(metadata !372) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) - store ptr %16, ptr %4, align 8, !noalias !372 + store ptr %16, ptr %4, align 8, !noalias !375 %19 = getelementptr inbounds i8, ptr %4, i64 8 - store i64 %17, ptr %19, align 8, !noalias !372 - %20 = load ptr, ptr %18, align 8, !alias.scope !369, !noalias !375, !nonnull !4, !align !9, !noundef !4 + store i64 %17, ptr %19, align 8, !noalias !375 + %20 = load ptr, ptr %18, align 8, !alias.scope !372, !noalias !378, !nonnull !4, !align !9, !noundef !4 invoke void @ring_core_0_17_8__bn_mul_mont(ptr noundef nonnull align 8 %16, ptr noundef nonnull align 8 %16, ptr noundef nonnull readonly align 8 %20, ptr noundef nonnull readonly align 8 %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %10, i64 noundef %17) - to label %_ZN4ring10arithmetic6bigint8elem_mul17h7fc93e5245d78e17E.exit unwind label %21, !noalias !369 + to label %_ZN4ring10arithmetic6bigint8elem_mul17h7fc93e5245d78e17E.exit unwind label %21, !noalias !372 21: ; preds = %3 %22 = landingpad { ptr, i32 } cleanup invoke void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hea6b5afbd10e64d6E.llvm.4129427866461079095"(ptr noalias noundef nonnull align 8 dereferenceable(16) %4) - to label %"_ZN4core3ptr121drop_in_place$LT$ring..arithmetic..bigint..Elem$LT$ring..rsa..keypair..P$C$ring..arithmetic..montgomery..RInverse$GT$$GT$17hd8224f4b26b724d9E.exit.i" unwind label %23, !noalias !369 + to label %"_ZN4core3ptr121drop_in_place$LT$ring..arithmetic..bigint..Elem$LT$ring..rsa..keypair..P$C$ring..arithmetic..montgomery..RInverse$GT$$GT$17hd8224f4b26b724d9E.exit.i" unwind label %23, !noalias !372 23: ; preds = %21 %24 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #27, !noalias !369 + call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #27, !noalias !372 unreachable "_ZN4core3ptr121drop_in_place$LT$ring..arithmetic..bigint..Elem$LT$ring..rsa..keypair..P$C$ring..arithmetic..montgomery..RInverse$GT$$GT$17hd8224f4b26b724d9E.exit.i": ; preds = %21 @@ -2348,25 +2357,25 @@ define hidden { ptr, i64 } @_ZN4ring3rsa7keypair18elem_exp_consttime17hefaf08603 %16 = extractvalue { ptr, i64 } %15, 0 %17 = extractvalue { ptr, i64 } %15, 1 %18 = getelementptr inbounds i8, ptr %1, i64 40 - call void @llvm.experimental.noalias.scope.decl(metadata !376) + call void @llvm.experimental.noalias.scope.decl(metadata !379) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) - store ptr %16, ptr %4, align 8, !noalias !379 + store ptr %16, ptr %4, align 8, !noalias !382 %19 = getelementptr inbounds i8, ptr %4, i64 8 - store i64 %17, ptr %19, align 8, !noalias !379 - %20 = load ptr, ptr %18, align 8, !alias.scope !376, !noalias !382, !nonnull !4, !align !9, !noundef !4 + store i64 %17, ptr %19, align 8, !noalias !382 + %20 = load ptr, ptr %18, align 8, !alias.scope !379, !noalias !385, !nonnull !4, !align !9, !noundef !4 invoke void @ring_core_0_17_8__bn_mul_mont(ptr noundef nonnull align 8 %16, ptr noundef nonnull align 8 %16, ptr noundef nonnull readonly align 8 %20, ptr noundef nonnull readonly align 8 %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %10, i64 noundef %17) - to label %_ZN4ring10arithmetic6bigint8elem_mul17ha2dff2ea9ad58d18E.exit unwind label %21, !noalias !376 + to label %_ZN4ring10arithmetic6bigint8elem_mul17ha2dff2ea9ad58d18E.exit unwind label %21, !noalias !379 21: ; preds = %3 %22 = landingpad { ptr, i32 } cleanup invoke void @"_ZN72_$LT$alloc..boxed..Box$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hea6b5afbd10e64d6E.llvm.4129427866461079095"(ptr noalias noundef nonnull align 8 dereferenceable(16) %4) - to label %"_ZN4core3ptr121drop_in_place$LT$ring..arithmetic..bigint..Elem$LT$ring..rsa..keypair..Q$C$ring..arithmetic..montgomery..RInverse$GT$$GT$17he40d1a8d77668808E.exit.i" unwind label %23, !noalias !376 + to label %"_ZN4core3ptr121drop_in_place$LT$ring..arithmetic..bigint..Elem$LT$ring..rsa..keypair..Q$C$ring..arithmetic..montgomery..RInverse$GT$$GT$17he40d1a8d77668808E.exit.i" unwind label %23, !noalias !379 23: ; preds = %21 %24 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer - call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #27, !noalias !376 + call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #27, !noalias !379 unreachable "_ZN4core3ptr121drop_in_place$LT$ring..arithmetic..bigint..Elem$LT$ring..rsa..keypair..Q$C$ring..arithmetic..montgomery..RInverse$GT$$GT$17he40d1a8d77668808E.exit.i": ; preds = %21 @@ -2384,7 +2393,7 @@ _ZN4ring10arithmetic6bigint8elem_mul17ha2dff2ea9ad58d18E.exit: ; preds = %3 define noundef zeroext i1 @"_ZN103_$LT$ring..ec..suite_b..ecdsa..verification..EcdsaVerificationAlgorithm$u20$as$u20$core..fmt..Debug$GT$3fmt17h9fcaefcc0b82ec6bE"(ptr noalias nocapture noundef readonly align 8 dereferenceable(32) %0, ptr noalias noundef align 8 dereferenceable(64) %1) unnamed_addr #2 { switch.lookup: %2 = getelementptr inbounds i8, ptr %0, i64 24 - %.val = load i8, ptr %2, align 8, !range !383, !noundef !4 + %.val = load i8, ptr %2, align 8, !range !386, !noundef !4 %3 = zext nneg i8 %.val to i64 %switch.gep = getelementptr inbounds [6 x i64], ptr @"switch.table._ZN103_$LT$ring..ec..suite_b..ecdsa..verification..EcdsaVerificationAlgorithm$u20$as$u20$core..fmt..Debug$GT$3fmt17h9fcaefcc0b82ec6bE", i64 0, i64 %3 %switch.load = load i64, ptr %switch.gep, align 8 @@ -2837,95 +2846,95 @@ attributes #27 = { cold noreturn nounwind } !248 = !{!249} !249 = distinct !{!249, !250, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17haee67adab7116f68E.llvm.8403485840513791397: argument 0"} !250 = distinct !{!250, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17haee67adab7116f68E.llvm.8403485840513791397"} -!251 = !{!252, !254} -!252 = distinct !{!252, !253, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hebe1c783f3496088E: argument 0"} -!253 = distinct !{!253, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hebe1c783f3496088E"} -!254 = distinct !{!254, !253, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hebe1c783f3496088E: argument 1"} -!255 = !{!256} -!256 = distinct !{!256, !253, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hebe1c783f3496088E: argument 2"} -!257 = !{!258} -!258 = distinct !{!258, !259, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397: argument 0"} -!259 = distinct !{!259, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397"} +!251 = !{!252} +!252 = distinct !{!252, !253, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397: argument 0"} +!253 = distinct !{!253, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397"} +!254 = !{!255, !257} +!255 = distinct !{!255, !256, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hebe1c783f3496088E: argument 0"} +!256 = distinct !{!256, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hebe1c783f3496088E"} +!257 = distinct !{!257, !256, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hebe1c783f3496088E: argument 1"} +!258 = !{!259} +!259 = distinct !{!259, !256, !"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$15copy_from_slice17hebe1c783f3496088E: argument 2"} !260 = !{!261} -!261 = distinct !{!261, !262, !"_ZN4ring2ec7suite_b3ops5Point15new_at_infinity17h8c198f0783050f16E: argument 0"} -!262 = distinct !{!262, !"_ZN4ring2ec7suite_b3ops5Point15new_at_infinity17h8c198f0783050f16E"} +!261 = distinct !{!261, !262, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397: argument 0"} +!262 = distinct !{!262, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397"} !263 = !{!264} -!264 = distinct !{!264, !265, !"_ZN4ring2ec7suite_b3ops9CommonOps3len17h84c39d79f9214ed3E: argument 0"} -!265 = distinct !{!265, !"_ZN4ring2ec7suite_b3ops9CommonOps3len17h84c39d79f9214ed3E"} +!264 = distinct !{!264, !265, !"_ZN4ring2ec7suite_b3ops5Point15new_at_infinity17h8c198f0783050f16E: argument 0"} +!265 = distinct !{!265, !"_ZN4ring2ec7suite_b3ops5Point15new_at_infinity17h8c198f0783050f16E"} !266 = !{!267} -!267 = distinct !{!267, !268, !"_ZN9untrusted6reader6Reader10read_bytes17he1adbfb9916ba18dE: argument 0"} -!268 = distinct !{!268, !"_ZN9untrusted6reader6Reader10read_bytes17he1adbfb9916ba18dE"} +!267 = distinct !{!267, !268, !"_ZN4ring2ec7suite_b3ops9CommonOps3len17h84c39d79f9214ed3E: argument 0"} +!268 = distinct !{!268, !"_ZN4ring2ec7suite_b3ops9CommonOps3len17h84c39d79f9214ed3E"} !269 = !{!270} -!270 = distinct !{!270, !271, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397: argument 0"} -!271 = distinct !{!271, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397"} -!272 = !{!273, !275, !276, !277} -!273 = distinct !{!273, !274, !"_ZN4ring2ec7suite_b3ops32parse_big_endian_fixed_consttime17ha8d0e4d4ab85ff06E: argument 0"} -!274 = distinct !{!274, !"_ZN4ring2ec7suite_b3ops32parse_big_endian_fixed_consttime17ha8d0e4d4ab85ff06E"} -!275 = distinct !{!275, !274, !"_ZN4ring2ec7suite_b3ops32parse_big_endian_fixed_consttime17ha8d0e4d4ab85ff06E: argument 1"} -!276 = distinct !{!276, !274, !"_ZN4ring2ec7suite_b3ops32parse_big_endian_fixed_consttime17ha8d0e4d4ab85ff06E: argument 2"} -!277 = distinct !{!277, !274, !"_ZN4ring2ec7suite_b3ops32parse_big_endian_fixed_consttime17ha8d0e4d4ab85ff06E: argument 3"} -!278 = !{!273, !275} -!279 = !{!280} -!280 = distinct !{!280, !281, !"_ZN4ring2ec7suite_b3ops9CommonOps3len17h84c39d79f9214ed3E: argument 0"} -!281 = distinct !{!281, !"_ZN4ring2ec7suite_b3ops9CommonOps3len17h84c39d79f9214ed3E"} +!270 = distinct !{!270, !271, !"_ZN9untrusted6reader6Reader10read_bytes17he1adbfb9916ba18dE: argument 0"} +!271 = distinct !{!271, !"_ZN9untrusted6reader6Reader10read_bytes17he1adbfb9916ba18dE"} +!272 = !{!273} +!273 = distinct !{!273, !274, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397: argument 0"} +!274 = distinct !{!274, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397"} +!275 = !{!276, !278, !279, !280} +!276 = distinct !{!276, !277, !"_ZN4ring2ec7suite_b3ops32parse_big_endian_fixed_consttime17ha8d0e4d4ab85ff06E: argument 0"} +!277 = distinct !{!277, !"_ZN4ring2ec7suite_b3ops32parse_big_endian_fixed_consttime17ha8d0e4d4ab85ff06E"} +!278 = distinct !{!278, !277, !"_ZN4ring2ec7suite_b3ops32parse_big_endian_fixed_consttime17ha8d0e4d4ab85ff06E: argument 1"} +!279 = distinct !{!279, !277, !"_ZN4ring2ec7suite_b3ops32parse_big_endian_fixed_consttime17ha8d0e4d4ab85ff06E: argument 2"} +!280 = distinct !{!280, !277, !"_ZN4ring2ec7suite_b3ops32parse_big_endian_fixed_consttime17ha8d0e4d4ab85ff06E: argument 3"} +!281 = !{!276, !278} !282 = !{!283} -!283 = distinct !{!283, !284, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397: argument 0"} -!284 = distinct !{!284, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397"} +!283 = distinct !{!283, !284, !"_ZN4ring2ec7suite_b3ops9CommonOps3len17h84c39d79f9214ed3E: argument 0"} +!284 = distinct !{!284, !"_ZN4ring2ec7suite_b3ops9CommonOps3len17h84c39d79f9214ed3E"} !285 = !{!286} !286 = distinct !{!286, !287, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397: argument 0"} !287 = distinct !{!287, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397"} -!288 = !{!289, !291, !292} -!289 = distinct !{!289, !290, !"_ZN4ring2ec7suite_b3ops16PrivateScalarOps7to_mont17h23a0c8d7efdcdea0E: argument 0"} -!290 = distinct !{!290, !"_ZN4ring2ec7suite_b3ops16PrivateScalarOps7to_mont17h23a0c8d7efdcdea0E"} -!291 = distinct !{!291, !290, !"_ZN4ring2ec7suite_b3ops16PrivateScalarOps7to_mont17h23a0c8d7efdcdea0E: argument 1"} -!292 = distinct !{!292, !290, !"_ZN4ring2ec7suite_b3ops16PrivateScalarOps7to_mont17h23a0c8d7efdcdea0E: argument 2"} -!293 = !{!289} -!294 = !{!291, !292} -!295 = !{!296} -!296 = distinct !{!296, !297, !"_ZN4ring2ec7suite_b3ops13PrivateKeyOps9point_mul17h36123dcdc5d41a21E.llvm.8403485840513791397: argument 1"} -!297 = distinct !{!297, !"_ZN4ring2ec7suite_b3ops13PrivateKeyOps9point_mul17h36123dcdc5d41a21E.llvm.8403485840513791397"} -!298 = !{!299, !296, !300, !301} -!299 = distinct !{!299, !297, !"_ZN4ring2ec7suite_b3ops13PrivateKeyOps9point_mul17h36123dcdc5d41a21E.llvm.8403485840513791397: argument 0"} -!300 = distinct !{!300, !297, !"_ZN4ring2ec7suite_b3ops13PrivateKeyOps9point_mul17h36123dcdc5d41a21E.llvm.8403485840513791397: argument 2"} -!301 = distinct !{!301, !297, !"_ZN4ring2ec7suite_b3ops13PrivateKeyOps9point_mul17h36123dcdc5d41a21E.llvm.8403485840513791397: argument 3"} -!302 = !{!303} -!303 = distinct !{!303, !304, !"_ZN4ring2ec7suite_b3ops5Point15new_at_infinity17h8c198f0783050f16E: argument 0"} -!304 = distinct !{!304, !"_ZN4ring2ec7suite_b3ops5Point15new_at_infinity17h8c198f0783050f16E"} -!305 = !{!299, !300, !301} -!306 = !{!299, !296} -!307 = !{!296, !300, !301} -!308 = !{!309} -!309 = distinct !{!309, !310, !"_ZN4ring2ec7suite_b3ops9CommonOps9point_sum17h7273dc046bac653bE: argument 1"} -!310 = distinct !{!310, !"_ZN4ring2ec7suite_b3ops9CommonOps9point_sum17h7273dc046bac653bE"} -!311 = !{!312, !309, !313, !314} -!312 = distinct !{!312, !310, !"_ZN4ring2ec7suite_b3ops9CommonOps9point_sum17h7273dc046bac653bE: argument 0"} -!313 = distinct !{!313, !310, !"_ZN4ring2ec7suite_b3ops9CommonOps9point_sum17h7273dc046bac653bE: argument 2"} -!314 = distinct !{!314, !310, !"_ZN4ring2ec7suite_b3ops9CommonOps9point_sum17h7273dc046bac653bE: argument 3"} -!315 = !{!316} -!316 = distinct !{!316, !317, !"_ZN4ring2ec7suite_b3ops5Point15new_at_infinity17h8c198f0783050f16E: argument 0"} -!317 = distinct !{!317, !"_ZN4ring2ec7suite_b3ops5Point15new_at_infinity17h8c198f0783050f16E"} -!318 = !{!312, !313, !314} -!319 = !{!312, !309} -!320 = !{!309, !313, !314} -!321 = !{!322} -!322 = distinct !{!322, !323, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17haee67adab7116f68E.llvm.8403485840513791397: argument 0"} -!323 = distinct !{!323, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17haee67adab7116f68E.llvm.8403485840513791397"} +!288 = !{!289} +!289 = distinct !{!289, !290, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397: argument 0"} +!290 = distinct !{!290, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17h2894363935a0893bE.llvm.8403485840513791397"} +!291 = !{!292, !294, !295} +!292 = distinct !{!292, !293, !"_ZN4ring2ec7suite_b3ops16PrivateScalarOps7to_mont17h23a0c8d7efdcdea0E: argument 0"} +!293 = distinct !{!293, !"_ZN4ring2ec7suite_b3ops16PrivateScalarOps7to_mont17h23a0c8d7efdcdea0E"} +!294 = distinct !{!294, !293, !"_ZN4ring2ec7suite_b3ops16PrivateScalarOps7to_mont17h23a0c8d7efdcdea0E: argument 1"} +!295 = distinct !{!295, !293, !"_ZN4ring2ec7suite_b3ops16PrivateScalarOps7to_mont17h23a0c8d7efdcdea0E: argument 2"} +!296 = !{!292} +!297 = !{!294, !295} +!298 = !{!299} +!299 = distinct !{!299, !300, !"_ZN4ring2ec7suite_b3ops13PrivateKeyOps9point_mul17h36123dcdc5d41a21E.llvm.8403485840513791397: argument 1"} +!300 = distinct !{!300, !"_ZN4ring2ec7suite_b3ops13PrivateKeyOps9point_mul17h36123dcdc5d41a21E.llvm.8403485840513791397"} +!301 = !{!302, !299, !303, !304} +!302 = distinct !{!302, !300, !"_ZN4ring2ec7suite_b3ops13PrivateKeyOps9point_mul17h36123dcdc5d41a21E.llvm.8403485840513791397: argument 0"} +!303 = distinct !{!303, !300, !"_ZN4ring2ec7suite_b3ops13PrivateKeyOps9point_mul17h36123dcdc5d41a21E.llvm.8403485840513791397: argument 2"} +!304 = distinct !{!304, !300, !"_ZN4ring2ec7suite_b3ops13PrivateKeyOps9point_mul17h36123dcdc5d41a21E.llvm.8403485840513791397: argument 3"} +!305 = !{!306} +!306 = distinct !{!306, !307, !"_ZN4ring2ec7suite_b3ops5Point15new_at_infinity17h8c198f0783050f16E: argument 0"} +!307 = distinct !{!307, !"_ZN4ring2ec7suite_b3ops5Point15new_at_infinity17h8c198f0783050f16E"} +!308 = !{!302, !303, !304} +!309 = !{!302, !299} +!310 = !{!299, !303, !304} +!311 = !{!312} +!312 = distinct !{!312, !313, !"_ZN4ring2ec7suite_b3ops9CommonOps9point_sum17h7273dc046bac653bE: argument 1"} +!313 = distinct !{!313, !"_ZN4ring2ec7suite_b3ops9CommonOps9point_sum17h7273dc046bac653bE"} +!314 = !{!315, !312, !316, !317} +!315 = distinct !{!315, !313, !"_ZN4ring2ec7suite_b3ops9CommonOps9point_sum17h7273dc046bac653bE: argument 0"} +!316 = distinct !{!316, !313, !"_ZN4ring2ec7suite_b3ops9CommonOps9point_sum17h7273dc046bac653bE: argument 2"} +!317 = distinct !{!317, !313, !"_ZN4ring2ec7suite_b3ops9CommonOps9point_sum17h7273dc046bac653bE: argument 3"} +!318 = !{!319} +!319 = distinct !{!319, !320, !"_ZN4ring2ec7suite_b3ops5Point15new_at_infinity17h8c198f0783050f16E: argument 0"} +!320 = distinct !{!320, !"_ZN4ring2ec7suite_b3ops5Point15new_at_infinity17h8c198f0783050f16E"} +!321 = !{!315, !316, !317} +!322 = !{!315, !312} +!323 = !{!312, !316, !317} !324 = !{!325} !325 = distinct !{!325, !326, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17haee67adab7116f68E.llvm.8403485840513791397: argument 0"} !326 = distinct !{!326, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17haee67adab7116f68E.llvm.8403485840513791397"} !327 = !{!328} !328 = distinct !{!328, !329, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17haee67adab7116f68E.llvm.8403485840513791397: argument 0"} !329 = distinct !{!329, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17haee67adab7116f68E.llvm.8403485840513791397"} -!330 = !{!331, !333} -!331 = distinct !{!331, !332, !"_ZN4ring4limb34parse_big_endian_and_pad_consttime17he048a2e6bf7d0cd1E: argument 0"} -!332 = distinct !{!332, !"_ZN4ring4limb34parse_big_endian_and_pad_consttime17he048a2e6bf7d0cd1E"} -!333 = distinct !{!333, !332, !"_ZN4ring4limb34parse_big_endian_and_pad_consttime17he048a2e6bf7d0cd1E: argument 1"} -!334 = !{!335, !331, !333} -!335 = distinct !{!335, !336, !"_ZN74_$LT$$u5b$T$u5d$$u20$as$u20$core..slice..specialize..SpecFill$LT$T$GT$$GT$9spec_fill17h4e46b5d621a3658dE: argument 0"} -!336 = distinct !{!336, !"_ZN74_$LT$$u5b$T$u5d$$u20$as$u20$core..slice..specialize..SpecFill$LT$T$GT$$GT$9spec_fill17h4e46b5d621a3658dE"} -!337 = !{!338} -!338 = distinct !{!338, !339, !"_ZN55_$LT$$RF$T$u20$as$u20$core..convert..AsRef$LT$U$GT$$GT$6as_ref17hae49edd0d8c0c2caE.llvm.8403485840513791397: argument 0"} -!339 = distinct !{!339, !"_ZN55_$LT$$RF$T$u20$as$u20$core..convert..AsRef$LT$U$GT$$GT$6as_ref17hae49edd0d8c0c2caE.llvm.8403485840513791397"} +!330 = !{!331} +!331 = distinct !{!331, !332, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17haee67adab7116f68E.llvm.8403485840513791397: argument 0"} +!332 = distinct !{!332, !"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17haee67adab7116f68E.llvm.8403485840513791397"} +!333 = !{!334, !336} +!334 = distinct !{!334, !335, !"_ZN4ring4limb34parse_big_endian_and_pad_consttime17he048a2e6bf7d0cd1E: argument 0"} +!335 = distinct !{!335, !"_ZN4ring4limb34parse_big_endian_and_pad_consttime17he048a2e6bf7d0cd1E"} +!336 = distinct !{!336, !335, !"_ZN4ring4limb34parse_big_endian_and_pad_consttime17he048a2e6bf7d0cd1E: argument 1"} +!337 = !{!338, !334, !336} +!338 = distinct !{!338, !339, !"_ZN74_$LT$$u5b$T$u5d$$u20$as$u20$core..slice..specialize..SpecFill$LT$T$GT$$GT$9spec_fill17h4e46b5d621a3658dE: argument 0"} +!339 = distinct !{!339, !"_ZN74_$LT$$u5b$T$u5d$$u20$as$u20$core..slice..specialize..SpecFill$LT$T$GT$$GT$9spec_fill17h4e46b5d621a3658dE"} !340 = !{!341} !341 = distinct !{!341, !342, !"_ZN55_$LT$$RF$T$u20$as$u20$core..convert..AsRef$LT$U$GT$$GT$6as_ref17hae49edd0d8c0c2caE.llvm.8403485840513791397: argument 0"} !342 = distinct !{!342, !"_ZN55_$LT$$RF$T$u20$as$u20$core..convert..AsRef$LT$U$GT$$GT$6as_ref17hae49edd0d8c0c2caE.llvm.8403485840513791397"} @@ -2947,26 +2956,29 @@ attributes #27 = { cold noreturn nounwind } !358 = !{!359} !359 = distinct !{!359, !360, !"_ZN55_$LT$$RF$T$u20$as$u20$core..convert..AsRef$LT$U$GT$$GT$6as_ref17hae49edd0d8c0c2caE.llvm.8403485840513791397: argument 0"} !360 = distinct !{!360, !"_ZN55_$LT$$RF$T$u20$as$u20$core..convert..AsRef$LT$U$GT$$GT$6as_ref17hae49edd0d8c0c2caE.llvm.8403485840513791397"} -!361 = !{!362, !364} -!362 = distinct !{!362, !363, !"_ZN4ring10arithmetic6bigint12elem_squared17h29ebc371e98ef597E: argument 0"} -!363 = distinct !{!363, !"_ZN4ring10arithmetic6bigint12elem_squared17h29ebc371e98ef597E"} -!364 = distinct !{!364, !363, !"_ZN4ring10arithmetic6bigint12elem_squared17h29ebc371e98ef597E: argument 1"} -!365 = !{!366, !368} -!366 = distinct !{!366, !367, !"_ZN4ring10arithmetic6bigint12elem_squared17h9ca866f28948a997E: argument 0"} -!367 = distinct !{!367, !"_ZN4ring10arithmetic6bigint12elem_squared17h9ca866f28948a997E"} -!368 = distinct !{!368, !367, !"_ZN4ring10arithmetic6bigint12elem_squared17h9ca866f28948a997E: argument 1"} -!369 = !{!370} -!370 = distinct !{!370, !371, !"_ZN4ring10arithmetic6bigint8elem_mul17h7fc93e5245d78e17E: argument 0"} -!371 = distinct !{!371, !"_ZN4ring10arithmetic6bigint8elem_mul17h7fc93e5245d78e17E"} -!372 = !{!370, !373, !374} -!373 = distinct !{!373, !371, !"_ZN4ring10arithmetic6bigint8elem_mul17h7fc93e5245d78e17E: argument 1"} -!374 = distinct !{!374, !371, !"_ZN4ring10arithmetic6bigint8elem_mul17h7fc93e5245d78e17E: argument 2"} -!375 = !{!373, !374} -!376 = !{!377} -!377 = distinct !{!377, !378, !"_ZN4ring10arithmetic6bigint8elem_mul17ha2dff2ea9ad58d18E: argument 0"} -!378 = distinct !{!378, !"_ZN4ring10arithmetic6bigint8elem_mul17ha2dff2ea9ad58d18E"} -!379 = !{!377, !380, !381} -!380 = distinct !{!380, !378, !"_ZN4ring10arithmetic6bigint8elem_mul17ha2dff2ea9ad58d18E: argument 1"} -!381 = distinct !{!381, !378, !"_ZN4ring10arithmetic6bigint8elem_mul17ha2dff2ea9ad58d18E: argument 2"} -!382 = !{!380, !381} -!383 = !{i8 0, i8 6} +!361 = !{!362} +!362 = distinct !{!362, !363, !"_ZN55_$LT$$RF$T$u20$as$u20$core..convert..AsRef$LT$U$GT$$GT$6as_ref17hae49edd0d8c0c2caE.llvm.8403485840513791397: argument 0"} +!363 = distinct !{!363, !"_ZN55_$LT$$RF$T$u20$as$u20$core..convert..AsRef$LT$U$GT$$GT$6as_ref17hae49edd0d8c0c2caE.llvm.8403485840513791397"} +!364 = !{!365, !367} +!365 = distinct !{!365, !366, !"_ZN4ring10arithmetic6bigint12elem_squared17h29ebc371e98ef597E: argument 0"} +!366 = distinct !{!366, !"_ZN4ring10arithmetic6bigint12elem_squared17h29ebc371e98ef597E"} +!367 = distinct !{!367, !366, !"_ZN4ring10arithmetic6bigint12elem_squared17h29ebc371e98ef597E: argument 1"} +!368 = !{!369, !371} +!369 = distinct !{!369, !370, !"_ZN4ring10arithmetic6bigint12elem_squared17h9ca866f28948a997E: argument 0"} +!370 = distinct !{!370, !"_ZN4ring10arithmetic6bigint12elem_squared17h9ca866f28948a997E"} +!371 = distinct !{!371, !370, !"_ZN4ring10arithmetic6bigint12elem_squared17h9ca866f28948a997E: argument 1"} +!372 = !{!373} +!373 = distinct !{!373, !374, !"_ZN4ring10arithmetic6bigint8elem_mul17h7fc93e5245d78e17E: argument 0"} +!374 = distinct !{!374, !"_ZN4ring10arithmetic6bigint8elem_mul17h7fc93e5245d78e17E"} +!375 = !{!373, !376, !377} +!376 = distinct !{!376, !374, !"_ZN4ring10arithmetic6bigint8elem_mul17h7fc93e5245d78e17E: argument 1"} +!377 = distinct !{!377, !374, !"_ZN4ring10arithmetic6bigint8elem_mul17h7fc93e5245d78e17E: argument 2"} +!378 = !{!376, !377} +!379 = !{!380} +!380 = distinct !{!380, !381, !"_ZN4ring10arithmetic6bigint8elem_mul17ha2dff2ea9ad58d18E: argument 0"} +!381 = distinct !{!381, !"_ZN4ring10arithmetic6bigint8elem_mul17ha2dff2ea9ad58d18E"} +!382 = !{!380, !383, !384} +!383 = distinct !{!383, !381, !"_ZN4ring10arithmetic6bigint8elem_mul17ha2dff2ea9ad58d18E: argument 1"} +!384 = distinct !{!384, !381, !"_ZN4ring10arithmetic6bigint8elem_mul17ha2dff2ea9ad58d18E: argument 2"} +!385 = !{!383, !384} +!386 = !{i8 0, i8 6} diff --git a/bench/ruby/optimized/array.ll b/bench/ruby/optimized/array.ll index 3a41bc11036..8d984b13d7f 100644 --- a/bench/ruby/optimized/array.ll +++ b/bench/ruby/optimized/array.ll @@ -629,13 +629,13 @@ RB_OBJ_FROZEN.exit.thread: ; preds = %62, %57, %rb_array_ %132 = tail call noalias nonnull ptr @ruby_xmalloc2(i64 noundef %.0.i, i64 noundef 8) #22 %133 = getelementptr inbounds i8, ptr %2, i64 32 %134 = icmp samesign ugt i64 %.0.i, 2305843009213693951 - br i1 %134, label %135, label %rbimpl_size_mul_or_raise.exit66 + br i1 %134, label %135, label %ruby_nonempty_memcpy.exit68 135: ; preds = %RB_OBJ_FROZEN.exit.thread tail call void @ruby_malloc_size_overflow(i64 noundef 8, i64 noundef %.0.i) #20 unreachable -rbimpl_size_mul_or_raise.exit66: ; preds = %RB_OBJ_FROZEN.exit.thread +ruby_nonempty_memcpy.exit68: ; preds = %RB_OBJ_FROZEN.exit.thread %136 = load ptr, ptr %133, align 8 %137 = shl nuw i64 %.0.i, 3 tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %132, ptr readonly align 1 %136, i64 %137, i1 false) @@ -646,7 +646,7 @@ rbimpl_size_mul_or_raise.exit66: ; preds = %RB_OBJ_FROZEN.exit. %142 = or i1 %141, %140 br i1 %142, label %rb_ary_decrement_share.exit.i, label %143 -143: ; preds = %rbimpl_size_mul_or_raise.exit66 +143: ; preds = %ruby_nonempty_memcpy.exit68 %144 = inttoptr i64 %138 to ptr %145 = load i64, ptr %144, align 8 %146 = and i64 %145, 31 @@ -663,7 +663,7 @@ rbimpl_size_mul_or_raise.exit66: ; preds = %RB_OBJ_FROZEN.exit. store i64 %153, ptr %151, align 8 br label %rb_ary_decrement_share.exit.i -rb_ary_decrement_share.exit.i: ; preds = %150, %143, %rbimpl_size_mul_or_raise.exit66 +rb_ary_decrement_share.exit.i: ; preds = %150, %143, %ruby_nonempty_memcpy.exit68 %154 = and i64 %0, 7 %155 = icmp ne i64 %154, 0 %156 = icmp eq i64 %0, 0 @@ -17604,7 +17604,7 @@ rb_array_len.exit: ; preds = %5, %8 12: ; preds = %rb_array_len.exit %13 = tail call i64 @rb_ary_dup(i64 noundef %0) - br label %72 + br label %73 14: ; preds = %rb_array_len.exit %15 = tail call i32 @rb_block_given_p() #21 @@ -17612,7 +17612,7 @@ rb_array_len.exit: ; preds = %5, %8 %16 = load i64, ptr %2, align 8 %17 = and i64 %16, 8192 %.not.i.i.i7 = icmp eq i64 %17, 0 - br i1 %.not, label %45, label %18 + br i1 %.not, label %46, label %18 18: ; preds = %14 br i1 %.not.i.i.i7, label %22, label %19 @@ -17637,8 +17637,8 @@ ary_tmp_hash_new.exit.i: ; preds = %22, %19 %29 = getelementptr inbounds i8, ptr %2, i64 32 br label %30 -30: ; preds = %RARRAY_AREF.exit.i.i.i, %ary_tmp_hash_new.exit.i - %.0.i.i = phi i64 [ 0, %ary_tmp_hash_new.exit.i ], [ %43, %RARRAY_AREF.exit.i.i.i ] +30: ; preds = %rb_ary_elt.exit.i.i, %ary_tmp_hash_new.exit.i + %.0.i.i = phi i64 [ 0, %ary_tmp_hash_new.exit.i ], [ %44, %rb_ary_elt.exit.i.i ] %31 = load i64, ptr %2, align 8 %32 = and i64 %31, 8192 %.not.i.i3.i = icmp eq i64 %32, 0 @@ -17656,81 +17656,89 @@ rb_array_len.exit.thread.i.i: ; preds = %30 br i1 %37, label %RARRAY_AREF.exit.i.i.i, label %ary_make_hash_by.exit rb_array_len.exit.i.i.i: ; preds = %rb_array_len.exit.i.i - %38 = load ptr, ptr %29, align 8 + %.not.i.i = icmp eq i64 %33, 0 + br i1 %.not.i.i, label %rb_ary_elt.exit.i.i, label %38 + +38: ; preds = %rb_array_len.exit.i.i.i + %39 = load ptr, ptr %29, align 8 br label %RARRAY_AREF.exit.i.i.i -RARRAY_AREF.exit.i.i.i: ; preds = %rb_array_len.exit.i.i.i, %rb_array_len.exit.thread.i.i - %.0.i.i.i.i.i = phi ptr [ %38, %rb_array_len.exit.i.i.i ], [ %28, %rb_array_len.exit.thread.i.i ] - %39 = getelementptr i64, ptr %.0.i.i.i.i.i, i64 %.0.i.i - %40 = load i64, ptr %39, align 8 - %41 = tail call i64 @rb_yield(i64 noundef %40) #21 - %42 = tail call i32 @rb_hash_add_new_element(i64 noundef %25, i64 noundef %41, i64 noundef %40) #21 - %43 = add nuw nsw i64 %.0.i.i, 1 +RARRAY_AREF.exit.i.i.i: ; preds = %38, %rb_array_len.exit.thread.i.i + %.0.i.i.i.i.i = phi ptr [ %39, %38 ], [ %28, %rb_array_len.exit.thread.i.i ] + %40 = getelementptr i64, ptr %.0.i.i.i.i.i, i64 %.0.i.i + %41 = load i64, ptr %40, align 8 + br label %rb_ary_elt.exit.i.i + +rb_ary_elt.exit.i.i: ; preds = %RARRAY_AREF.exit.i.i.i, %rb_array_len.exit.i.i.i + %.0.i11.i.i = phi i64 [ %41, %RARRAY_AREF.exit.i.i.i ], [ 4, %rb_array_len.exit.i.i.i ] + %42 = tail call i64 @rb_yield(i64 noundef %.0.i11.i.i) #21 + %43 = tail call i32 @rb_hash_add_new_element(i64 noundef %25, i64 noundef %42, i64 noundef %.0.i11.i.i) #21 + %44 = add nuw nsw i64 %.0.i.i, 1 br label %30, !llvm.loop !91 ary_make_hash_by.exit: ; preds = %rb_array_len.exit.i.i, %rb_array_len.exit.thread.i.i - %44 = tail call i64 @rb_hash_values(i64 noundef %25) #21 - br label %72 + %45 = tail call i64 @rb_hash_values(i64 noundef %25) #21 + br label %73 -45: ; preds = %14 - br i1 %.not.i.i.i7, label %49, label %46 +46: ; preds = %14 + br i1 %.not.i.i.i7, label %50, label %47 -46: ; preds = %45 - %47 = lshr i64 %16, 15 - %48 = and i64 %47, 127 +47: ; preds = %46 + %48 = lshr i64 %16, 15 + %49 = and i64 %48, 127 br label %ary_tmp_hash_new.exit.i8 -49: ; preds = %45 - %50 = getelementptr inbounds i8, ptr %2, i64 16 - %51 = load i64, ptr %50, align 8 +50: ; preds = %46 + %51 = getelementptr inbounds i8, ptr %2, i64 16 + %52 = load i64, ptr %51, align 8 br label %ary_tmp_hash_new.exit.i8 -ary_tmp_hash_new.exit.i8: ; preds = %49, %46 - %.0.i.i.i9 = phi i64 [ %48, %46 ], [ %51, %49 ] - %52 = tail call i64 @rb_hash_new_with_size(i64 noundef %.0.i.i.i9) #21 - %53 = inttoptr i64 %52 to ptr - %54 = getelementptr inbounds i8, ptr %53, i64 8 - store i64 0, ptr %54, align 8 - %55 = getelementptr inbounds i8, ptr %2, i64 16 - %56 = getelementptr inbounds i8, ptr %2, i64 32 - br label %57 +ary_tmp_hash_new.exit.i8: ; preds = %50, %47 + %.0.i.i.i9 = phi i64 [ %49, %47 ], [ %52, %50 ] + %53 = tail call i64 @rb_hash_new_with_size(i64 noundef %.0.i.i.i9) #21 + %54 = inttoptr i64 %53 to ptr + %55 = getelementptr inbounds i8, ptr %54, i64 8 + store i64 0, ptr %55, align 8 + %56 = getelementptr inbounds i8, ptr %2, i64 16 + %57 = getelementptr inbounds i8, ptr %2, i64 32 + br label %58 -57: ; preds = %RARRAY_AREF.exit.i.i, %ary_tmp_hash_new.exit.i8 - %.0.i.i10 = phi i64 [ 0, %ary_tmp_hash_new.exit.i8 ], [ %70, %RARRAY_AREF.exit.i.i ] - %58 = load i64, ptr %2, align 8 - %59 = and i64 %58, 8192 - %.not.i.i3.i11 = icmp eq i64 %59, 0 +58: ; preds = %RARRAY_AREF.exit.i.i, %ary_tmp_hash_new.exit.i8 + %.0.i.i10 = phi i64 [ 0, %ary_tmp_hash_new.exit.i8 ], [ %71, %RARRAY_AREF.exit.i.i ] + %59 = load i64, ptr %2, align 8 + %60 = and i64 %59, 8192 + %.not.i.i3.i11 = icmp eq i64 %60, 0 br i1 %.not.i.i3.i11, label %rb_array_len.exit.i.i13, label %rb_array_len.exit.thread.i.i12 -rb_array_len.exit.i.i13: ; preds = %57 - %60 = load i64, ptr %55, align 8 - %61 = icmp slt i64 %.0.i.i10, %60 - br i1 %61, label %65, label %ary_make_hash.exit +rb_array_len.exit.i.i13: ; preds = %58 + %61 = load i64, ptr %56, align 8 + %62 = icmp slt i64 %.0.i.i10, %61 + br i1 %62, label %66, label %ary_make_hash.exit -rb_array_len.exit.thread.i.i12: ; preds = %57 - %62 = lshr i64 %58, 15 - %63 = and i64 %62, 127 - %64 = icmp samesign ult i64 %.0.i.i10, %63 - br i1 %64, label %RARRAY_AREF.exit.i.i, label %ary_make_hash.exit +rb_array_len.exit.thread.i.i12: ; preds = %58 + %63 = lshr i64 %59, 15 + %64 = and i64 %63, 127 + %65 = icmp samesign ult i64 %.0.i.i10, %64 + br i1 %65, label %RARRAY_AREF.exit.i.i, label %ary_make_hash.exit -65: ; preds = %rb_array_len.exit.i.i13 - %66 = load ptr, ptr %56, align 8 +66: ; preds = %rb_array_len.exit.i.i13 + %67 = load ptr, ptr %57, align 8 br label %RARRAY_AREF.exit.i.i -RARRAY_AREF.exit.i.i: ; preds = %65, %rb_array_len.exit.thread.i.i12 - %.0.i.i.i.i = phi ptr [ %66, %65 ], [ %55, %rb_array_len.exit.thread.i.i12 ] - %67 = getelementptr i64, ptr %.0.i.i.i.i, i64 %.0.i.i10 - %68 = load i64, ptr %67, align 8 - %69 = tail call i32 @rb_hash_add_new_element(i64 noundef %52, i64 noundef %68, i64 noundef %68) #21 - %70 = add nuw nsw i64 %.0.i.i10, 1 - br label %57, !llvm.loop !38 +RARRAY_AREF.exit.i.i: ; preds = %66, %rb_array_len.exit.thread.i.i12 + %.0.i.i.i.i = phi ptr [ %67, %66 ], [ %56, %rb_array_len.exit.thread.i.i12 ] + %68 = getelementptr i64, ptr %.0.i.i.i.i, i64 %.0.i.i10 + %69 = load i64, ptr %68, align 8 + %70 = tail call i32 @rb_hash_add_new_element(i64 noundef %53, i64 noundef %69, i64 noundef %69) #21 + %71 = add nuw nsw i64 %.0.i.i10, 1 + br label %58, !llvm.loop !38 ary_make_hash.exit: ; preds = %rb_array_len.exit.i.i13, %rb_array_len.exit.thread.i.i12 - %71 = tail call i64 @rb_hash_values(i64 noundef %52) #21 - br label %72 + %72 = tail call i64 @rb_hash_values(i64 noundef %53) #21 + br label %73 -72: ; preds = %ary_make_hash_by.exit, %ary_make_hash.exit, %12 - %.0 = phi i64 [ %13, %12 ], [ %44, %ary_make_hash_by.exit ], [ %71, %ary_make_hash.exit ] +73: ; preds = %ary_make_hash_by.exit, %ary_make_hash.exit, %12 + %.0 = phi i64 [ %13, %12 ], [ %45, %ary_make_hash_by.exit ], [ %72, %ary_make_hash.exit ] ret i64 %.0 } @@ -17774,7 +17782,7 @@ rb_ary_modify_check.exit: ; preds = %6 rb_array_len.exit: ; preds = %14, %17 %.0.i = phi i64 [ %16, %14 ], [ %19, %17 ] %20 = icmp slt i64 %.0.i, 2 - br i1 %20, label %132, label %21 + br i1 %20, label %133, label %21 21: ; preds = %rb_array_len.exit %22 = tail call i32 @rb_block_given_p() #21 @@ -17782,7 +17790,7 @@ rb_array_len.exit: ; preds = %14, %17 %23 = load i64, ptr %7, align 8 %24 = and i64 %23, 8192 %.not.i.i.i25 = icmp eq i64 %24, 0 - br i1 %.not, label %51, label %25 + br i1 %.not, label %52, label %25 25: ; preds = %21 br i1 %.not.i.i.i25, label %29, label %26 @@ -17807,8 +17815,8 @@ ary_tmp_hash_new.exit.i: ; preds = %29, %26 %36 = getelementptr inbounds i8, ptr %7, i64 32 br label %37 -37: ; preds = %RARRAY_AREF.exit.i.i.i, %ary_tmp_hash_new.exit.i - %.0.i.i = phi i64 [ 0, %ary_tmp_hash_new.exit.i ], [ %50, %RARRAY_AREF.exit.i.i.i ] +37: ; preds = %rb_ary_elt.exit.i.i, %ary_tmp_hash_new.exit.i + %.0.i.i = phi i64 [ 0, %ary_tmp_hash_new.exit.i ], [ %51, %rb_ary_elt.exit.i.i ] %38 = load i64, ptr %7, align 8 %39 = and i64 %38, 8192 %.not.i.i3.i = icmp eq i64 %39, 0 @@ -17826,196 +17834,204 @@ rb_array_len.exit.thread.i.i: ; preds = %37 br i1 %44, label %RARRAY_AREF.exit.i.i.i, label %ary_make_hash_by.exit rb_array_len.exit.i.i.i: ; preds = %rb_array_len.exit.i.i - %45 = load ptr, ptr %36, align 8 + %.not.i.i = icmp eq i64 %40, 0 + br i1 %.not.i.i, label %rb_ary_elt.exit.i.i, label %45 + +45: ; preds = %rb_array_len.exit.i.i.i + %46 = load ptr, ptr %36, align 8 br label %RARRAY_AREF.exit.i.i.i -RARRAY_AREF.exit.i.i.i: ; preds = %rb_array_len.exit.i.i.i, %rb_array_len.exit.thread.i.i - %.0.i.i.i.i.i = phi ptr [ %45, %rb_array_len.exit.i.i.i ], [ %35, %rb_array_len.exit.thread.i.i ] - %46 = getelementptr i64, ptr %.0.i.i.i.i.i, i64 %.0.i.i - %47 = load i64, ptr %46, align 8 - %48 = tail call i64 @rb_yield(i64 noundef %47) #21 - %49 = tail call i32 @rb_hash_add_new_element(i64 noundef %32, i64 noundef %48, i64 noundef %47) #21 - %50 = add nuw nsw i64 %.0.i.i, 1 +RARRAY_AREF.exit.i.i.i: ; preds = %45, %rb_array_len.exit.thread.i.i + %.0.i.i.i.i.i = phi ptr [ %46, %45 ], [ %35, %rb_array_len.exit.thread.i.i ] + %47 = getelementptr i64, ptr %.0.i.i.i.i.i, i64 %.0.i.i + %48 = load i64, ptr %47, align 8 + br label %rb_ary_elt.exit.i.i + +rb_ary_elt.exit.i.i: ; preds = %RARRAY_AREF.exit.i.i.i, %rb_array_len.exit.i.i.i + %.0.i11.i.i = phi i64 [ %48, %RARRAY_AREF.exit.i.i.i ], [ 4, %rb_array_len.exit.i.i.i ] + %49 = tail call i64 @rb_yield(i64 noundef %.0.i11.i.i) #21 + %50 = tail call i32 @rb_hash_add_new_element(i64 noundef %32, i64 noundef %49, i64 noundef %.0.i11.i.i) #21 + %51 = add nuw nsw i64 %.0.i.i, 1 br label %37, !llvm.loop !91 -51: ; preds = %21 - br i1 %.not.i.i.i25, label %55, label %52 +52: ; preds = %21 + br i1 %.not.i.i.i25, label %56, label %53 -52: ; preds = %51 - %53 = lshr i64 %23, 15 - %54 = and i64 %53, 127 +53: ; preds = %52 + %54 = lshr i64 %23, 15 + %55 = and i64 %54, 127 br label %ary_tmp_hash_new.exit.i26 -55: ; preds = %51 - %56 = getelementptr inbounds i8, ptr %7, i64 16 - %57 = load i64, ptr %56, align 8 +56: ; preds = %52 + %57 = getelementptr inbounds i8, ptr %7, i64 16 + %58 = load i64, ptr %57, align 8 br label %ary_tmp_hash_new.exit.i26 -ary_tmp_hash_new.exit.i26: ; preds = %55, %52 - %.0.i.i.i27 = phi i64 [ %54, %52 ], [ %57, %55 ] - %58 = tail call i64 @rb_hash_new_with_size(i64 noundef %.0.i.i.i27) #21 - %59 = inttoptr i64 %58 to ptr - %60 = getelementptr inbounds i8, ptr %59, i64 8 - store i64 0, ptr %60, align 8 - %61 = getelementptr inbounds i8, ptr %7, i64 16 - %62 = getelementptr inbounds i8, ptr %7, i64 32 - br label %63 +ary_tmp_hash_new.exit.i26: ; preds = %56, %53 + %.0.i.i.i27 = phi i64 [ %55, %53 ], [ %58, %56 ] + %59 = tail call i64 @rb_hash_new_with_size(i64 noundef %.0.i.i.i27) #21 + %60 = inttoptr i64 %59 to ptr + %61 = getelementptr inbounds i8, ptr %60, i64 8 + store i64 0, ptr %61, align 8 + %62 = getelementptr inbounds i8, ptr %7, i64 16 + %63 = getelementptr inbounds i8, ptr %7, i64 32 + br label %64 -63: ; preds = %RARRAY_AREF.exit.i.i, %ary_tmp_hash_new.exit.i26 - %.0.i.i28 = phi i64 [ 0, %ary_tmp_hash_new.exit.i26 ], [ %76, %RARRAY_AREF.exit.i.i ] - %64 = load i64, ptr %7, align 8 - %65 = and i64 %64, 8192 - %.not.i.i3.i29 = icmp eq i64 %65, 0 +64: ; preds = %RARRAY_AREF.exit.i.i, %ary_tmp_hash_new.exit.i26 + %.0.i.i28 = phi i64 [ 0, %ary_tmp_hash_new.exit.i26 ], [ %77, %RARRAY_AREF.exit.i.i ] + %65 = load i64, ptr %7, align 8 + %66 = and i64 %65, 8192 + %.not.i.i3.i29 = icmp eq i64 %66, 0 br i1 %.not.i.i3.i29, label %rb_array_len.exit.i.i31, label %rb_array_len.exit.thread.i.i30 -rb_array_len.exit.i.i31: ; preds = %63 - %66 = load i64, ptr %61, align 8 - %67 = icmp slt i64 %.0.i.i28, %66 - br i1 %67, label %71, label %ary_make_hash_by.exit +rb_array_len.exit.i.i31: ; preds = %64 + %67 = load i64, ptr %62, align 8 + %68 = icmp slt i64 %.0.i.i28, %67 + br i1 %68, label %72, label %ary_make_hash_by.exit -rb_array_len.exit.thread.i.i30: ; preds = %63 - %68 = lshr i64 %64, 15 - %69 = and i64 %68, 127 - %70 = icmp samesign ult i64 %.0.i.i28, %69 - br i1 %70, label %RARRAY_AREF.exit.i.i, label %ary_make_hash_by.exit +rb_array_len.exit.thread.i.i30: ; preds = %64 + %69 = lshr i64 %65, 15 + %70 = and i64 %69, 127 + %71 = icmp samesign ult i64 %.0.i.i28, %70 + br i1 %71, label %RARRAY_AREF.exit.i.i, label %ary_make_hash_by.exit -71: ; preds = %rb_array_len.exit.i.i31 - %72 = load ptr, ptr %62, align 8 +72: ; preds = %rb_array_len.exit.i.i31 + %73 = load ptr, ptr %63, align 8 br label %RARRAY_AREF.exit.i.i -RARRAY_AREF.exit.i.i: ; preds = %71, %rb_array_len.exit.thread.i.i30 - %.0.i.i.i.i = phi ptr [ %72, %71 ], [ %61, %rb_array_len.exit.thread.i.i30 ] - %73 = getelementptr i64, ptr %.0.i.i.i.i, i64 %.0.i.i28 - %74 = load i64, ptr %73, align 8 - %75 = tail call i32 @rb_hash_add_new_element(i64 noundef %58, i64 noundef %74, i64 noundef %74) #21 - %76 = add nuw nsw i64 %.0.i.i28, 1 - br label %63, !llvm.loop !38 +RARRAY_AREF.exit.i.i: ; preds = %72, %rb_array_len.exit.thread.i.i30 + %.0.i.i.i.i = phi ptr [ %73, %72 ], [ %62, %rb_array_len.exit.thread.i.i30 ] + %74 = getelementptr i64, ptr %.0.i.i.i.i, i64 %.0.i.i28 + %75 = load i64, ptr %74, align 8 + %76 = tail call i32 @rb_hash_add_new_element(i64 noundef %59, i64 noundef %75, i64 noundef %75) #21 + %77 = add nuw nsw i64 %.0.i.i28, 1 + br label %64, !llvm.loop !38 ary_make_hash_by.exit: ; preds = %rb_array_len.exit.thread.i.i, %rb_array_len.exit.i.i, %rb_array_len.exit.thread.i.i30, %rb_array_len.exit.i.i31 - %.pre-phi = phi ptr [ %59, %rb_array_len.exit.i.i31 ], [ %59, %rb_array_len.exit.thread.i.i30 ], [ %33, %rb_array_len.exit.i.i ], [ %33, %rb_array_len.exit.thread.i.i ] - %77 = phi i64 [ %64, %rb_array_len.exit.i.i31 ], [ %64, %rb_array_len.exit.thread.i.i30 ], [ %38, %rb_array_len.exit.i.i ], [ %38, %rb_array_len.exit.thread.i.i ] - %.023 = phi i64 [ %58, %rb_array_len.exit.i.i31 ], [ %58, %rb_array_len.exit.thread.i.i30 ], [ %32, %rb_array_len.exit.i.i ], [ %32, %rb_array_len.exit.thread.i.i ] - %78 = load i64, ptr %.pre-phi, align 8 - %79 = and i64 %78, 32768 - %.not.i.i = icmp eq i64 %79, 0 - br i1 %.not.i.i, label %80, label %83 - -80: ; preds = %ary_make_hash_by.exit - %81 = lshr i64 %78, 16 - %82 = and i64 %81, 15 + %.pre-phi = phi ptr [ %60, %rb_array_len.exit.i.i31 ], [ %60, %rb_array_len.exit.thread.i.i30 ], [ %33, %rb_array_len.exit.i.i ], [ %33, %rb_array_len.exit.thread.i.i ] + %78 = phi i64 [ %65, %rb_array_len.exit.i.i31 ], [ %65, %rb_array_len.exit.thread.i.i30 ], [ %38, %rb_array_len.exit.i.i ], [ %38, %rb_array_len.exit.thread.i.i ] + %.023 = phi i64 [ %59, %rb_array_len.exit.i.i31 ], [ %59, %rb_array_len.exit.thread.i.i30 ], [ %32, %rb_array_len.exit.i.i ], [ %32, %rb_array_len.exit.thread.i.i ] + %79 = load i64, ptr %.pre-phi, align 8 + %80 = and i64 %79, 32768 + %.not.i.i32 = icmp eq i64 %80, 0 + br i1 %.not.i.i32, label %81, label %84 + +81: ; preds = %ary_make_hash_by.exit + %82 = lshr i64 %79, 16 + %83 = and i64 %82, 15 br label %RHASH_SIZE.exit -83: ; preds = %ary_make_hash_by.exit - %84 = add i64 %.023, 24 - %85 = inttoptr i64 %84 to ptr - %86 = getelementptr inbounds i8, ptr %85, i64 16 - %87 = load i64, ptr %86, align 8 +84: ; preds = %ary_make_hash_by.exit + %85 = add i64 %.023, 24 + %86 = inttoptr i64 %85 to ptr + %87 = getelementptr inbounds i8, ptr %86, i64 16 + %88 = load i64, ptr %87, align 8 br label %RHASH_SIZE.exit -RHASH_SIZE.exit: ; preds = %80, %83 - %.0.i32 = phi i64 [ %82, %80 ], [ %87, %83 ] - %88 = and i64 %77, 8192 - %.not.i33 = icmp eq i64 %88, 0 - br i1 %.not.i33, label %92, label %89 +RHASH_SIZE.exit: ; preds = %81, %84 + %.0.i33 = phi i64 [ %83, %81 ], [ %88, %84 ] + %89 = and i64 %78, 8192 + %.not.i34 = icmp eq i64 %89, 0 + br i1 %.not.i34, label %93, label %90 -89: ; preds = %RHASH_SIZE.exit - %90 = lshr i64 %77, 15 - %91 = and i64 %90, 127 - br label %rb_array_len.exit35 +90: ; preds = %RHASH_SIZE.exit + %91 = lshr i64 %78, 15 + %92 = and i64 %91, 127 + br label %rb_array_len.exit36 -92: ; preds = %RHASH_SIZE.exit - %93 = getelementptr inbounds i8, ptr %7, i64 16 - %94 = load i64, ptr %93, align 8 - br label %rb_array_len.exit35 +93: ; preds = %RHASH_SIZE.exit + %94 = getelementptr inbounds i8, ptr %7, i64 16 + %95 = load i64, ptr %94, align 8 + br label %rb_array_len.exit36 -rb_array_len.exit35: ; preds = %89, %92 - %.0.i34 = phi i64 [ %91, %89 ], [ %94, %92 ] - %95 = icmp eq i64 %.0.i34, %.0.i32 - br i1 %95, label %132, label %96 +rb_array_len.exit36: ; preds = %90, %93 + %.0.i35 = phi i64 [ %92, %90 ], [ %95, %93 ] + %96 = icmp eq i64 %.0.i35, %.0.i33 + br i1 %96, label %133, label %97 -96: ; preds = %rb_array_len.exit35 - %97 = and i64 %77, 31 - %98 = icmp eq i64 %97, 27 - %99 = and i64 %77, 2048 - %100 = icmp ne i64 %99, 0 - %or.cond.i.i36 = or i1 %98, %100 - br i1 %or.cond.i.i36, label %RB_OBJ_FROZEN.exit.thread.i.i37, label %rb_ary_modify_check.exit38 +97: ; preds = %rb_array_len.exit36 + %98 = and i64 %78, 31 + %99 = icmp eq i64 %98, 27 + %100 = and i64 %78, 2048 + %101 = icmp ne i64 %100, 0 + %or.cond.i.i37 = or i1 %99, %101 + br i1 %or.cond.i.i37, label %RB_OBJ_FROZEN.exit.thread.i.i38, label %rb_ary_modify_check.exit39 -RB_OBJ_FROZEN.exit.thread.i.i37: ; preds = %96 +RB_OBJ_FROZEN.exit.thread.i.i38: ; preds = %97 tail call void @rb_error_frozen_object(i64 noundef %0) #20 unreachable -rb_ary_modify_check.exit38: ; preds = %96 - br i1 %.not.i33, label %103, label %101 +rb_ary_modify_check.exit39: ; preds = %97 + br i1 %.not.i34, label %104, label %102 -101: ; preds = %rb_ary_modify_check.exit38 - %102 = and i64 %77, -4163585 - store i64 %102, ptr %7, align 8 - br label %105 +102: ; preds = %rb_ary_modify_check.exit39 + %103 = and i64 %78, -4163585 + store i64 %103, ptr %7, align 8 + br label %106 -103: ; preds = %rb_ary_modify_check.exit38 - %104 = getelementptr inbounds i8, ptr %7, i64 16 - store i64 0, ptr %104, align 8 - br label %105 +104: ; preds = %rb_ary_modify_check.exit39 + %105 = getelementptr inbounds i8, ptr %7, i64 16 + store i64 0, ptr %105, align 8 + br label %106 -105: ; preds = %101, %103 - %106 = phi i64 [ %102, %101 ], [ %77, %103 ] - %107 = and i64 %106, 24576 - %or.cond.not = icmp eq i64 %107, 16384 - br i1 %or.cond.not, label %108, label %RB_FL_SET.exit +106: ; preds = %102, %104 + %107 = phi i64 [ %103, %102 ], [ %78, %104 ] + %108 = and i64 %107, 24576 + %or.cond.not = icmp eq i64 %108, 16384 + br i1 %or.cond.not, label %109, label %RB_FL_SET.exit -108: ; preds = %105 - %109 = getelementptr inbounds i8, ptr %7, i64 24 - %110 = load i64, ptr %109, align 8 - %111 = and i64 %110, 7 - %112 = icmp ne i64 %111, 0 - %113 = icmp eq i64 %110, 0 - %114 = or i1 %113, %112 - br i1 %114, label %rb_ary_decrement_share.exit.i, label %115 - -115: ; preds = %108 - %116 = inttoptr i64 %110 to ptr - %117 = load i64, ptr %116, align 8 - %118 = and i64 %117, 31 - %119 = icmp eq i64 %118, 27 - %120 = and i64 %117, 2048 - %121 = icmp ne i64 %120, 0 - %or.cond.i.i39 = or i1 %119, %121 - br i1 %or.cond.i.i39, label %rb_ary_decrement_share.exit.i, label %122 - -122: ; preds = %115 - %123 = getelementptr inbounds i8, ptr %116, i64 24 - %124 = load i64, ptr %123, align 8 - %125 = add i64 %124, -1 - store i64 %125, ptr %123, align 8 +109: ; preds = %106 + %110 = getelementptr inbounds i8, ptr %7, i64 24 + %111 = load i64, ptr %110, align 8 + %112 = and i64 %111, 7 + %113 = icmp ne i64 %112, 0 + %114 = icmp eq i64 %111, 0 + %115 = or i1 %114, %113 + br i1 %115, label %rb_ary_decrement_share.exit.i, label %116 + +116: ; preds = %109 + %117 = inttoptr i64 %111 to ptr + %118 = load i64, ptr %117, align 8 + %119 = and i64 %118, 31 + %120 = icmp eq i64 %119, 27 + %121 = and i64 %118, 2048 + %122 = icmp ne i64 %121, 0 + %or.cond.i.i40 = or i1 %120, %122 + br i1 %or.cond.i.i40, label %rb_ary_decrement_share.exit.i, label %123 + +123: ; preds = %116 + %124 = getelementptr inbounds i8, ptr %117, i64 24 + %125 = load i64, ptr %124, align 8 + %126 = add i64 %125, -1 + store i64 %126, ptr %124, align 8 %.pre = load i64, ptr %7, align 8 br label %rb_ary_decrement_share.exit.i -rb_ary_decrement_share.exit.i: ; preds = %108, %115, %122 - %126 = phi i64 [ %106, %108 ], [ %106, %115 ], [ %.pre, %122 ] - %127 = and i64 %126, 31 - %128 = icmp eq i64 %127, 27 - br i1 %128, label %RB_FL_SET.exit, label %rb_ary_unshare.exit +rb_ary_decrement_share.exit.i: ; preds = %109, %116, %123 + %127 = phi i64 [ %107, %109 ], [ %107, %116 ], [ %.pre, %123 ] + %128 = and i64 %127, 31 + %129 = icmp eq i64 %128, 27 + br i1 %129, label %RB_FL_SET.exit, label %rb_ary_unshare.exit rb_ary_unshare.exit: ; preds = %rb_ary_decrement_share.exit.i - %129 = and i64 %126, -16385 - store i64 %129, ptr %7, align 8 - %.pre44 = and i64 %126, 31 - %130 = icmp eq i64 %.pre44, 27 - br i1 %130, label %RB_FL_SET.exit, label %.critedge.i + %130 = and i64 %127, -16385 + store i64 %130, ptr %7, align 8 + %.pre45 = and i64 %127, 31 + %131 = icmp eq i64 %.pre45, 27 + br i1 %131, label %RB_FL_SET.exit, label %.critedge.i .critedge.i: ; preds = %rb_ary_unshare.exit - %131 = or i64 %129, 8192 - store i64 %131, ptr %7, align 8 + %132 = or i64 %130, 8192 + store i64 %132, ptr %7, align 8 br label %RB_FL_SET.exit -RB_FL_SET.exit: ; preds = %rb_ary_decrement_share.exit.i, %.critedge.i, %rb_ary_unshare.exit, %105 - tail call fastcc void @ary_resize_capa(i64 noundef %0, i64 noundef %.0.i32) +RB_FL_SET.exit: ; preds = %rb_ary_decrement_share.exit.i, %.critedge.i, %rb_ary_unshare.exit, %106 + tail call fastcc void @ary_resize_capa(i64 noundef %0, i64 noundef %.0.i33) tail call void @rb_hash_foreach(i64 noundef %.023, ptr noundef nonnull @push_value, i64 noundef %0) #21 - br label %132 + br label %133 -132: ; preds = %rb_array_len.exit35, %rb_array_len.exit, %RB_FL_SET.exit - %.0 = phi i64 [ %0, %RB_FL_SET.exit ], [ 4, %rb_array_len.exit ], [ 4, %rb_array_len.exit35 ] +133: ; preds = %rb_array_len.exit36, %rb_array_len.exit, %RB_FL_SET.exit + %.0 = phi i64 [ %0, %RB_FL_SET.exit ], [ 4, %rb_array_len.exit ], [ 4, %rb_array_len.exit36 ] ret i64 %.0 } diff --git a/bench/rust-analyzer-rs/optimized/2ebx9eutyph8un4i.ll b/bench/rust-analyzer-rs/optimized/2ebx9eutyph8un4i.ll index 3395bad7231..de26f35f4cc 100644 --- a/bench/rust-analyzer-rs/optimized/2ebx9eutyph8un4i.ll +++ b/bench/rust-analyzer-rs/optimized/2ebx9eutyph8un4i.ll @@ -28878,28 +28878,30 @@ define hidden void @_ZN8smol_str7SmolStr14from_char_iter17hf599b2ba39552fa3E(ptr %5 = alloca { { { i64, ptr, {} }, i64 } }, align 8 %6 = alloca { i64, { i8, [1 x i8] }, [6 x i8] }, align 8 %7 = alloca { { i64, ptr, {} }, i64 }, align 8 + %8 = alloca { { i64, ptr, {} }, i64 }, align 8 %.sroa.46 = alloca [7 x i8], align 1 - %8 = alloca { i64, [2 x i64] }, align 8 - %9 = alloca { { { i64, ptr, {} }, i64 } }, align 8 - %10 = alloca [23 x i8], align 1 + %9 = alloca { i64, [2 x i64] }, align 8 + %10 = alloca { { { i64, ptr, {} }, i64 } }, align 8 + %11 = alloca [23 x i8], align 1 + %.sroa.4 = alloca [7 x i8], align 1 %.val = load i64, ptr %1, align 8, !noundef !26 - %11 = getelementptr inbounds i8, ptr %1, i64 8 - %.val66 = load i64, ptr %11, align 8, !noundef !26 - %12 = sub nuw i64 %.val66, %.val - %13 = icmp ugt i64 %12, 23 - br i1 %13, label %16, label %14 + %12 = getelementptr inbounds i8, ptr %1, i64 8 + %.val66 = load i64, ptr %12, align 8, !noundef !26 + %13 = sub nuw i64 %.val66, %.val + %14 = icmp ugt i64 %13, 23 + br i1 %14, label %17, label %15 -14: ; preds = %2 - call void @llvm.lifetime.start.p0(i64 23, ptr nonnull %10) - call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(23) %10, i8 0, i64 23, i1 false) +15: ; preds = %2 + call void @llvm.lifetime.start.p0(i64 23, ptr nonnull %11) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(23) %11, i8 0, i64 23, i1 false) %.not.not.i101 = icmp eq i64 %.val66, %.val br i1 %.not.not.i101, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %14 - %15 = getelementptr inbounds i8, ptr %1, i64 16 - br label %25 +.lr.ph: ; preds = %15 + %16 = getelementptr inbounds i8, ptr %1, i64 16 + br label %26 -16: ; preds = %2 +17: ; preds = %2 %.sroa.576.0..sroa_idx = getelementptr inbounds i8, ptr %1, i64 16 %.sroa.576.0.copyload = load i64, ptr %.sroa.576.0..sroa_idx, align 8 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5), !noalias !6617 @@ -28908,241 +28910,268 @@ define hidden void @_ZN8smol_str7SmolStr14from_char_iter17hf599b2ba39552fa3E(ptr store ptr inttoptr (i64 1 to ptr), ptr %.sroa.4.0..sroa_idx.i.i, align 8, !noalias !6617 %.sroa.5.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %5, i64 16 store i64 0, ptr %.sroa.5.0..sroa_idx.i.i, align 8, !noalias !6617 - invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17h0e8c409a22dc4347E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0, i64 noundef %12) + invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17h0e8c409a22dc4347E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %5, i64 noundef 0, i64 noundef %13) to label %.lr.ph.i.i.i.i.preheader.i.i unwind label %.loopexit.split-lp.i.i, !noalias !6617 -.lr.ph.i.i.i.i.preheader.i.i: ; preds = %16 +.lr.ph.i.i.i.i.preheader.i.i: ; preds = %17 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4), !noalias !6624 %.sroa.6.0..sroa_idx.i.i.i = getelementptr inbounds i8, ptr %4, i64 16 store i64 %.sroa.576.0.copyload, ptr %.sroa.6.0..sroa_idx.i.i.i, align 8, !noalias !6624 br label %.lr.ph.i.i.i.i.i.i .lr.ph.i.i.i.i.i.i: ; preds = %.noexc3.i.i, %.lr.ph.i.i.i.i.preheader.i.i - %17 = phi i64 [ %21, %.noexc3.i.i ], [ %.val, %.lr.ph.i.i.i.i.preheader.i.i ] - %18 = icmp ult i64 %17, 2 - call void @llvm.assume(i1 %18) - %19 = getelementptr inbounds i32, ptr %.sroa.6.0..sroa_idx.i.i.i, i64 %17 - %20 = load i32, ptr %19, align 4, !range !627, !alias.scope !6628, !noalias !6635, !noundef !26 - invoke void @_ZN5alloc6string6String4push17h1a3e9179dd826612E.llvm.2875332049115192089(ptr noalias noundef nonnull align 8 dereferenceable(24) %5, i32 noundef range(i32 0, 1114112) %20) + %18 = phi i64 [ %22, %.noexc3.i.i ], [ %.val, %.lr.ph.i.i.i.i.preheader.i.i ] + %19 = icmp ult i64 %18, 2 + call void @llvm.assume(i1 %19) + %20 = getelementptr inbounds i32, ptr %.sroa.6.0..sroa_idx.i.i.i, i64 %18 + %21 = load i32, ptr %20, align 4, !range !627, !alias.scope !6628, !noalias !6635, !noundef !26 + invoke void @_ZN5alloc6string6String4push17h1a3e9179dd826612E.llvm.2875332049115192089(ptr noalias noundef nonnull align 8 dereferenceable(24) %5, i32 noundef range(i32 0, 1114112) %21) to label %.noexc3.i.i unwind label %.loopexit.i.i, !noalias !6617 .noexc3.i.i: ; preds = %.lr.ph.i.i.i.i.i.i - %21 = add nuw nsw i64 %17, 1 - br label %.lr.ph.i.i.i.i.i.i + %22 = add nuw nsw i64 %18, 1 + %.not.i.i.i.i.i.i.i = icmp eq i64 %.val66, %22 + br i1 %.not.i.i.i.i.i.i.i, label %.loopexit, label %.lr.ph.i.i.i.i.i.i .loopexit.i.i: ; preds = %.lr.ph.i.i.i.i.i.i %lpad.loopexit.i.i = landingpad { ptr, i32 } cleanup - br label %22 + br label %23 -.loopexit.split-lp.i.i: ; preds = %16 +.loopexit.split-lp.i.i: ; preds = %17 %lpad.loopexit.split-lp.i.i = landingpad { ptr, i32 } cleanup - br label %22 + br label %23 -22: ; preds = %.loopexit.split-lp.i.i, %.loopexit.i.i +23: ; preds = %.loopexit.split-lp.i.i, %.loopexit.i.i %lpad.phi.i.i = phi { ptr, i32 } [ %lpad.loopexit.i.i, %.loopexit.i.i ], [ %lpad.loopexit.split-lp.i.i, %.loopexit.split-lp.i.i ] invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17hdcf7b889bac065f1E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %5) #54 - to label %.body.thread unwind label %23, !noalias !6617 + to label %.body.thread unwind label %24, !noalias !6617 -23: ; preds = %22 - %24 = landingpad { ptr, i32 } +24: ; preds = %23 + %25 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #52, !noalias !6617 unreachable -25: ; preds = %.lr.ph, %40 - %.0102 = phi i64 [ 0, %.lr.ph ], [ %38, %40 ] - %26 = phi i64 [ %.val, %.lr.ph ], [ %27, %40 ] - %27 = add nuw nsw i64 %26, 1 - store i64 %27, ptr %1, align 8, !alias.scope !6640 - %28 = icmp ult i64 %26, 2 - call void @llvm.assume(i1 %28) - %29 = getelementptr inbounds i32, ptr %15, i64 %26 - %30 = load i32, ptr %29, align 4, !range !627, !alias.scope !6640, !noundef !26 - %31 = icmp samesign ult i32 %30, 128 - br i1 %31, label %37, label %33 - -._crit_edge.loopexit: ; preds = %40 - %32 = trunc nuw i64 %38 to i8 +26: ; preds = %.lr.ph, %41 + %.0102 = phi i64 [ 0, %.lr.ph ], [ %39, %41 ] + %27 = phi i64 [ %.val, %.lr.ph ], [ %28, %41 ] + %28 = add nuw nsw i64 %27, 1 + store i64 %28, ptr %1, align 8, !alias.scope !6640 + %29 = icmp ult i64 %27, 2 + call void @llvm.assume(i1 %29) + %30 = getelementptr inbounds i32, ptr %16, i64 %27 + %31 = load i32, ptr %30, align 4, !range !627, !alias.scope !6640, !noundef !26 + %32 = icmp samesign ult i32 %31, 128 + br i1 %32, label %38, label %34 + +._crit_edge.loopexit: ; preds = %41 + %33 = trunc nuw i64 %39 to i8 br label %._crit_edge -._crit_edge: ; preds = %._crit_edge.loopexit, %14 - %.0.lcssa = phi i8 [ 0, %14 ], [ %32, %._crit_edge.loopexit ] +._crit_edge: ; preds = %._crit_edge.loopexit, %15 + %.0.lcssa = phi i8 [ 0, %15 ], [ %33, %._crit_edge.loopexit ] store i8 %.0.lcssa, ptr %0, align 8 %.sroa.416.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(23) %.sroa.416.0..sroa_idx, ptr noundef nonnull align 1 dereferenceable(23) %10, i64 23, i1 false) - br label %85 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(23) %.sroa.416.0..sroa_idx, ptr noundef nonnull align 1 dereferenceable(23) %11, i64 23, i1 false) + call void @llvm.lifetime.end.p0(i64 23, ptr nonnull %11) + br label %86 -33: ; preds = %25 - %34 = icmp samesign ult i32 %30, 2048 - br i1 %34, label %37, label %35 +34: ; preds = %26 + %35 = icmp samesign ult i32 %31, 2048 + br i1 %35, label %38, label %36 -35: ; preds = %33 - %36 = icmp samesign ult i32 %30, 65536 - %. = select i1 %36, i64 3, i64 4 - br label %37 +36: ; preds = %34 + %37 = icmp samesign ult i32 %31, 65536 + %. = select i1 %37, i64 3, i64 4 + br label %38 -37: ; preds = %33, %35, %25 - %.061 = phi i64 [ 1, %25 ], [ %., %35 ], [ 2, %33 ] - %38 = add nuw nsw i64 %.061, %.0102 - %39 = icmp samesign ugt i64 %38, 23 - br i1 %39, label %44, label %40 - -40: ; preds = %37 - %41 = sub nuw nsw i64 23, %.0102 - %42 = getelementptr inbounds i8, ptr %10, i64 %.0102 - %43 = call { ptr, i64 } @_ZN4core4char7methods15encode_utf8_raw17ha5a8bd16826d1590E.llvm.2875332049115192089(i32 noundef %30, ptr noalias noundef nonnull align 1 %42, i64 noundef %41) - %.not.not.i = icmp eq i64 %.val66, %27 - br i1 %.not.not.i, label %._crit_edge.loopexit, label %25 - -44: ; preds = %37 - %45 = sub nuw i64 %.val66, %27 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) - %46 = add i64 %45, %38 - %47 = call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h9a996dac75790d5fE"(i64 noundef %46, i1 noundef zeroext false) - %48 = extractvalue { i64, ptr } %47, 0 - %49 = extractvalue { i64, ptr } %47, 1 - store i64 %48, ptr %9, align 8 - %.sroa.429.0..sroa_idx = getelementptr inbounds i8, ptr %9, i64 8 - store ptr %49, ptr %.sroa.429.0..sroa_idx, align 8 - %.sroa.530.0..sroa_idx = getelementptr inbounds i8, ptr %9, i64 16 +38: ; preds = %34, %36, %26 + %.061 = phi i64 [ 1, %26 ], [ %., %36 ], [ 2, %34 ] + %39 = add nuw nsw i64 %.061, %.0102 + %40 = icmp samesign ugt i64 %39, 23 + br i1 %40, label %45, label %41 + +41: ; preds = %38 + %42 = sub nuw nsw i64 23, %.0102 + %43 = getelementptr inbounds i8, ptr %11, i64 %.0102 + %44 = call { ptr, i64 } @_ZN4core4char7methods15encode_utf8_raw17ha5a8bd16826d1590E.llvm.2875332049115192089(i32 noundef %31, ptr noalias noundef nonnull align 1 %43, i64 noundef %42) + %.not.not.i = icmp eq i64 %.val66, %28 + br i1 %.not.not.i, label %._crit_edge.loopexit, label %26 + +45: ; preds = %38 + %46 = sub nuw i64 %.val66, %28 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) + %47 = add i64 %46, %39 + %48 = call { i64, ptr } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h9a996dac75790d5fE"(i64 noundef %47, i1 noundef zeroext false) + %49 = extractvalue { i64, ptr } %48, 0 + %50 = extractvalue { i64, ptr } %48, 1 + store i64 %49, ptr %10, align 8 + %.sroa.429.0..sroa_idx = getelementptr inbounds i8, ptr %10, i64 8 + store ptr %50, ptr %.sroa.429.0..sroa_idx, align 8 + %.sroa.530.0..sroa_idx = getelementptr inbounds i8, ptr %10, i64 16 store i64 0, ptr %.sroa.530.0..sroa_idx, align 8 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) - invoke void @_ZN4core3str8converts9from_utf817hca39c4a07e0467cbE(ptr noalias nocapture noundef nonnull sret({ i64, [2 x i64] }) align 8 dereferenceable(24) %8, ptr noalias noundef nonnull readonly align 1 %10, i64 noundef %.0102) - to label %50 unwind label %.loopexit.split-lp + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) + invoke void @_ZN4core3str8converts9from_utf817hca39c4a07e0467cbE(ptr noalias nocapture noundef nonnull sret({ i64, [2 x i64] }) align 8 dereferenceable(24) %9, ptr noalias noundef nonnull readonly align 1 %11, i64 noundef %.0102) + to label %51 unwind label %.loopexit.split-lp -50: ; preds = %44 +51: ; preds = %45 call void @llvm.experimental.noalias.scope.decl(metadata !6643) - %51 = load i64, ptr %8, align 8, !range !214, !alias.scope !6643, !noalias !6646, !noundef !26 - %trunc.i = trunc nuw i64 %51 to i1 - br i1 %trunc.i, label %52, label %54 + %52 = load i64, ptr %9, align 8, !range !214, !alias.scope !6643, !noalias !6646, !noundef !26 + %trunc.i = trunc nuw i64 %52 to i1 + br i1 %trunc.i, label %53, label %55 -52: ; preds = %50 +53: ; preds = %51 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6), !noalias !6648 - %53 = getelementptr inbounds i8, ptr %8, i64 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(16) %53, i64 16, i1 false), !noalias !6646 + %54 = getelementptr inbounds i8, ptr %9, i64 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull align 8 dereferenceable(16) %54, i64 16, i1 false), !noalias !6646 invoke void @_ZN4core6result13unwrap_failed17ha188096f98826595E(ptr noalias noundef nonnull readonly align 1 @anon.b76da6c2f44d53201df22ce56aee29b6.45, i64 noundef 43, ptr noundef nonnull align 1 %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.b76da6c2f44d53201df22ce56aee29b6.47, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.b76da6c2f44d53201df22ce56aee29b6.213) #53 to label %.noexc unwind label %.loopexit.split-lp -.noexc: ; preds = %52 +.noexc: ; preds = %53 unreachable -54: ; preds = %50 - %55 = getelementptr inbounds i8, ptr %8, i64 8 - %56 = load ptr, ptr %55, align 8, !alias.scope !6643, !noalias !6646, !nonnull !26, !align !626, !noundef !26 - %57 = getelementptr inbounds i8, ptr %8, i64 16 - %58 = load i64, ptr %57, align 8, !alias.scope !6643, !noalias !6646, !noundef !26 - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) - %59 = icmp ugt i64 %58, %48 - br i1 %59, label %60, label %61 +55: ; preds = %51 + %56 = getelementptr inbounds i8, ptr %9, i64 8 + %57 = load ptr, ptr %56, align 8, !alias.scope !6643, !noalias !6646, !nonnull !26, !align !626, !noundef !26 + %58 = getelementptr inbounds i8, ptr %9, i64 16 + %59 = load i64, ptr %58, align 8, !alias.scope !6643, !noalias !6646, !noundef !26 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) + %60 = icmp ugt i64 %59, %49 + br i1 %60, label %61, label %62 -60: ; preds = %54 - invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17h0e8c409a22dc4347E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %9, i64 noundef 0, i64 noundef %58) +61: ; preds = %55 + invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17h0e8c409a22dc4347E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %10, i64 noundef 0, i64 noundef %59) to label %.noexc70 unwind label %.loopexit.split-lp -.noexc70: ; preds = %60 +.noexc70: ; preds = %61 %.pre.i.i = load i64, ptr %.sroa.530.0..sroa_idx, align 8, !alias.scope !6649, !noalias !6654 %.pre = load ptr, ptr %.sroa.429.0..sroa_idx, align 8, !alias.scope !6649, !noalias !6654 - br label %61 + br label %62 -61: ; preds = %.noexc70, %54 - %62 = phi ptr [ %49, %54 ], [ %.pre, %.noexc70 ] - %63 = phi i64 [ 0, %54 ], [ %.pre.i.i, %.noexc70 ] - %64 = getelementptr inbounds i8, ptr %62, i64 %63 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %64, ptr nonnull readonly align 1 %56, i64 %58, i1 false) - %65 = load i64, ptr %.sroa.530.0..sroa_idx, align 8, !alias.scope !6649, !noalias !6654, !noundef !26 - %66 = add i64 %65, %58 - store i64 %66, ptr %.sroa.530.0..sroa_idx, align 8, !alias.scope !6649, !noalias !6654 - invoke void @_ZN5alloc6string6String4push17h1a3e9179dd826612E.llvm.2875332049115192089(ptr noalias noundef nonnull align 8 dereferenceable(24) %9, i32 noundef %30) - to label %67 unwind label %.loopexit.split-lp - -67: ; preds = %61 - %.sroa.583.0.copyload = load i64, ptr %15, align 8 +62: ; preds = %.noexc70, %55 + %63 = phi ptr [ %50, %55 ], [ %.pre, %.noexc70 ] + %64 = phi i64 [ 0, %55 ], [ %.pre.i.i, %.noexc70 ] + %65 = getelementptr inbounds i8, ptr %63, i64 %64 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %65, ptr nonnull readonly align 1 %57, i64 %59, i1 false) + %66 = load i64, ptr %.sroa.530.0..sroa_idx, align 8, !alias.scope !6649, !noalias !6654, !noundef !26 + %67 = add i64 %66, %59 + store i64 %67, ptr %.sroa.530.0..sroa_idx, align 8, !alias.scope !6649, !noalias !6654 + invoke void @_ZN5alloc6string6String4push17h1a3e9179dd826612E.llvm.2875332049115192089(ptr noalias noundef nonnull align 8 dereferenceable(24) %10, i32 noundef %31) + to label %68 unwind label %.loopexit.split-lp + +68: ; preds = %62 + %.sroa.583.0.copyload = load i64, ptr %16, align 8 call void @llvm.experimental.noalias.scope.decl(metadata !6656) - %68 = load i64, ptr %.sroa.530.0..sroa_idx, align 8, !alias.scope !6659, !noalias !6662, !noundef !26 - %69 = load i64, ptr %9, align 8, !alias.scope !6659, !noalias !6662, !noundef !26 - %70 = sub i64 %69, %68 - %71 = icmp ugt i64 %45, %70 - br i1 %71, label %72, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hc14a1b1e1833777fE.exit.i" + %69 = load i64, ptr %.sroa.530.0..sroa_idx, align 8, !alias.scope !6659, !noalias !6662, !noundef !26 + %70 = load i64, ptr %10, align 8, !alias.scope !6659, !noalias !6662, !noundef !26 + %71 = sub i64 %70, %69 + %72 = icmp ugt i64 %46, %71 + br i1 %72, label %73, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hc14a1b1e1833777fE.exit.i" -72: ; preds = %67 - invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17h0e8c409a22dc4347E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %68, i64 noundef %45) +73: ; preds = %68 + invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$7reserve21do_reserve_and_handle17h0e8c409a22dc4347E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %69, i64 noundef %46) to label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hc14a1b1e1833777fE.exit.i" unwind label %.loopexit.split-lp -"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hc14a1b1e1833777fE.exit.i": ; preds = %72, %67 +"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hc14a1b1e1833777fE.exit.i": ; preds = %73, %68 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3), !noalias !6664 %.sroa.6.0..sroa_idx.i = getelementptr inbounds i8, ptr %3, i64 16 store i64 %.sroa.583.0.copyload, ptr %.sroa.6.0..sroa_idx.i, align 8, !noalias !6664 - %.not.i4.i.i.i.i = icmp eq i64 %.val66, %27 + %.not.i4.i.i.i.i = icmp eq i64 %.val66, %28 br i1 %.not.i4.i.i.i.i, label %.loopexit98, label %.lr.ph.i.i.i.i .lr.ph.i.i.i.i: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hc14a1b1e1833777fE.exit.i", %.noexc72 - %73 = phi i64 [ %77, %.noexc72 ], [ %27, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hc14a1b1e1833777fE.exit.i" ] - %74 = icmp samesign ult i64 %73, 2 - call void @llvm.assume(i1 %74) - %75 = getelementptr inbounds i32, ptr %.sroa.6.0..sroa_idx.i, i64 %73 - %76 = load i32, ptr %75, align 4, !range !627, !alias.scope !6665, !noalias !6672, !noundef !26 - invoke void @_ZN5alloc6string6String4push17h1a3e9179dd826612E.llvm.2875332049115192089(ptr noalias noundef nonnull align 8 dereferenceable(24) %9, i32 noundef range(i32 0, 1114112) %76) + %74 = phi i64 [ %78, %.noexc72 ], [ %28, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hc14a1b1e1833777fE.exit.i" ] + %75 = icmp samesign ult i64 %74, 2 + call void @llvm.assume(i1 %75) + %76 = getelementptr inbounds i32, ptr %.sroa.6.0..sroa_idx.i, i64 %74 + %77 = load i32, ptr %76, align 4, !range !627, !alias.scope !6665, !noalias !6672, !noundef !26 + invoke void @_ZN5alloc6string6String4push17h1a3e9179dd826612E.llvm.2875332049115192089(ptr noalias noundef nonnull align 8 dereferenceable(24) %10, i32 noundef range(i32 0, 1114112) %77) to label %.noexc72 unwind label %.loopexit97 .noexc72: ; preds = %.lr.ph.i.i.i.i - %77 = add nuw nsw i64 %73, 1 - %.not.i.i.i.i.i = icmp eq i64 %.val66, %77 + %78 = add nuw nsw i64 %74, 1 + %.not.i.i.i.i.i = icmp eq i64 %.val66, %78 br i1 %.not.i.i.i.i.i, label %.loopexit98, label %.lr.ph.i.i.i.i .loopexit98: ; preds = %.noexc72, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hc14a1b1e1833777fE.exit.i" call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3), !noalias !6664 call void @llvm.lifetime.start.p0(i64 7, ptr nonnull %.sroa.46) call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %9, i64 24, i1 false) - %78 = call { ptr, i64 } @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$16into_boxed_slice17h890071f97a488957E"(ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %7) - %79 = extractvalue { ptr, i64 } %78, 0 - %80 = extractvalue { ptr, i64 } %78, 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %10, i64 24, i1 false) + %79 = call { ptr, i64 } @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$16into_boxed_slice17h890071f97a488957E"(ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %7) + %80 = extractvalue { ptr, i64 } %79, 0 + %81 = extractvalue { ptr, i64 } %79, 1 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) - %81 = icmp ne ptr %79, null - call void @llvm.assume(i1 %81) - %82 = call { ptr, i64 } @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$11from_box_in17h6569217fd575a01bE"(ptr noalias noundef nonnull align 1 %79, i64 noundef %80) - %83 = extractvalue { ptr, i64 } %82, 0 - %84 = extractvalue { ptr, i64 } %82, 1 + %82 = icmp ne ptr %80, null + call void @llvm.assume(i1 %82) + %83 = call { ptr, i64 } @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$11from_box_in17h6569217fd575a01bE"(ptr noalias noundef nonnull align 1 %80, i64 noundef %81) + %84 = extractvalue { ptr, i64 } %83, 0 + %85 = extractvalue { ptr, i64 } %83, 1 store i8 24, ptr %0, align 8 %.sroa.46.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 1 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(7) %.sroa.46.0..sroa_idx, ptr noundef nonnull align 1 dereferenceable(7) %.sroa.46, i64 7, i1 false) %.sroa.47.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 - store ptr %83, ptr %.sroa.47.0..sroa_idx, align 8 + store ptr %84, ptr %.sroa.47.0..sroa_idx, align 8 %.sroa.58.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 - store i64 %84, ptr %.sroa.58.0..sroa_idx, align 8 + store i64 %85, ptr %.sroa.58.0..sroa_idx, align 8 call void @llvm.lifetime.end.p0(i64 7, ptr nonnull %.sroa.46) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) - br label %85 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) + call void @llvm.lifetime.end.p0(i64 23, ptr nonnull %11) + br label %86 -85: ; preds = %.loopexit98, %._crit_edge - call void @llvm.lifetime.end.p0(i64 23, ptr nonnull %10) +86: ; preds = %.loopexit, %.loopexit98, %._crit_edge ret void .loopexit97: ; preds = %.lr.ph.i.i.i.i %lpad.loopexit = landingpad { ptr, i32 } cleanup - br label %86 + br label %87 -.loopexit.split-lp: ; preds = %72, %60, %52, %44, %61 +.loopexit.split-lp: ; preds = %73, %61, %53, %45, %62 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup - br label %86 + br label %87 -86: ; preds = %.loopexit.split-lp, %.loopexit97 +87: ; preds = %.loopexit.split-lp, %.loopexit97 %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit97 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] - invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17hdcf7b889bac065f1E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %9) #54 - to label %.body.thread unwind label %87 + invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17hdcf7b889bac065f1E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %10) #54 + to label %.body.thread unwind label %88 -87: ; preds = %86 - %88 = landingpad { ptr, i32 } +88: ; preds = %87 + %89 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #52 unreachable -.body.thread: ; preds = %86, %22 - %.pn86 = phi { ptr, i32 } [ %lpad.phi.i.i, %22 ], [ %lpad.phi, %86 ] +.loopexit: ; preds = %.noexc3.i.i + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4), !noalias !6624 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(24) %5, i64 24, i1 false) + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5), !noalias !6617 + call void @llvm.lifetime.start.p0(i64 7, ptr nonnull %.sroa.4) + %90 = call { ptr, i64 } @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$16into_boxed_slice17h890071f97a488957E"(ptr noalias nocapture noundef nonnull align 8 dereferenceable(24) %8) + %91 = extractvalue { ptr, i64 } %90, 0 + %92 = extractvalue { ptr, i64 } %90, 1 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) + %93 = icmp ne ptr %91, null + call void @llvm.assume(i1 %93) + %94 = call { ptr, i64 } @"_ZN5alloc4sync16Arc$LT$T$C$A$GT$11from_box_in17h6569217fd575a01bE"(ptr noalias noundef nonnull align 1 %91, i64 noundef %92) + %95 = extractvalue { ptr, i64 } %94, 0 + %96 = extractvalue { ptr, i64 } %94, 1 + store i8 24, ptr %0, align 8 + %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(7) %.sroa.4.0..sroa_idx, ptr noundef nonnull align 1 dereferenceable(7) %.sroa.4, i64 7, i1 false) + %.sroa.41.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 8 + store ptr %95, ptr %.sroa.41.0..sroa_idx, align 8 + %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 16 + store i64 %96, ptr %.sroa.5.0..sroa_idx, align 8 + call void @llvm.lifetime.end.p0(i64 7, ptr nonnull %.sroa.4) + br label %86 + +.body.thread: ; preds = %87, %23 + %.pn86 = phi { ptr, i32 } [ %lpad.phi.i.i, %23 ], [ %lpad.phi, %87 ] resume { ptr, i32 } %.pn86 } diff --git a/bench/tokenizers-rs/optimized/2d3ht47jz0iets91.ll b/bench/tokenizers-rs/optimized/2d3ht47jz0iets91.ll index a83a45423b5..de4e42b6ee7 100644 --- a/bench/tokenizers-rs/optimized/2d3ht47jz0iets91.ll +++ b/bench/tokenizers-rs/optimized/2d3ht47jz0iets91.ll @@ -90,6 +90,7 @@ target triple = "x86_64-unknown-linux-gnu" @anon.6e929131f0dd62016d572efc3b163756.154 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.6e929131f0dd62016d572efc3b163756.148, [16 x i8] c"\16\00\00\00\00\00\00\00\89\00\00\00$\00\00\00" }>, align 8 @anon.6e929131f0dd62016d572efc3b163756.156 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.6e929131f0dd62016d572efc3b163756.148, [16 x i8] c"\16\00\00\00\00\00\00\00\8F\00\00\00\1E\00\00\00" }>, align 8 @anon.6e929131f0dd62016d572efc3b163756.157 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.6e929131f0dd62016d572efc3b163756.148, [16 x i8] c"\16\00\00\00\00\00\00\00\90\00\00\00\1E\00\00\00" }>, align 8 +@anon.6e929131f0dd62016d572efc3b163756.158 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.6e929131f0dd62016d572efc3b163756.148, [16 x i8] c"\16\00\00\00\00\00\00\00\94\00\00\00:\00\00\00" }>, align 8 @anon.6e929131f0dd62016d572efc3b163756.159 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.6e929131f0dd62016d572efc3b163756.148, [16 x i8] c"\16\00\00\00\00\00\00\00\95\00\00\00$\00\00\00" }>, align 8 @anon.6e929131f0dd62016d572efc3b163756.161 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.6e929131f0dd62016d572efc3b163756.148, [16 x i8] c"\16\00\00\00\00\00\00\00\BD\00\00\00 \00\00\00" }>, align 8 @anon.6e929131f0dd62016d572efc3b163756.164 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.6e929131f0dd62016d572efc3b163756.148, [16 x i8] c"\16\00\00\00\00\00\00\00\C6\00\00\00)\00\00\00" }>, align 8 @@ -17744,17 +17745,17 @@ define hidden void @_ZN10tokenizers6models3bpe4word4Word5merge17hcb1c32d829ff04a %11 = getelementptr inbounds i8, ptr %1, i64 8 br label %13 -._crit_edge: ; preds = %._crit_edge152, %.split +._crit_edge: ; preds = %._crit_edge158, %.split call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %6, i64 24, i1 false) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) ret void -.loopexit: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hf92aea6c285a0523E.llvm.4432219087322099438.exit.i", %57, %79, %112, %131 +.loopexit: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$7reserve17hf92aea6c285a0523E.llvm.4432219087322099438.exit.i", %57, %79, %114, %133 %lpad.loopexit = landingpad { ptr, i32 } cleanup br label %12 -.loopexit.split-lp: ; preds = %.invoke173, %.invoke, %56 +.loopexit.split-lp: ; preds = %.invoke185, %.invoke, %56 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup br label %12 @@ -17762,11 +17763,11 @@ define hidden void @_ZN10tokenizers6models3bpe4word4Word5merge17hcb1c32d829ff04a 12: ; preds = %.loopexit.split-lp, %.loopexit %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] invoke void @"_ZN4core3ptr75drop_in_place$LT$alloc..vec..Vec$LT$$LP$$LP$u32$C$u32$RP$$C$i32$RP$$GT$$GT$17h0c6dc9bfb358697eE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6) #58 - to label %140 unwind label %138 + to label %142 unwind label %140 -13: ; preds = %.lr.ph, %._crit_edge152 - %14 = phi i64 [ %10, %.lr.ph ], [ %21, %._crit_edge152 ] - %.0131 = phi i64 [ 0, %.lr.ph ], [ %19, %._crit_edge152 ] +13: ; preds = %.lr.ph, %._crit_edge158 + %14 = phi i64 [ %10, %.lr.ph ], [ %21, %._crit_edge158 ] + %.0131 = phi i64 [ 0, %.lr.ph ], [ %19, %._crit_edge158 ] %.val45 = load ptr, ptr %11, align 8, !alias.scope !3843, !nonnull !4, !noundef !4 %15 = getelementptr inbounds [0 x { i64, i64, i64, i32, [1 x i32] }], ptr %.val45, i64 0, i64 %.0131 %16 = getelementptr inbounds i8, ptr %15, i64 24 @@ -17775,10 +17776,10 @@ define hidden void @_ZN10tokenizers6models3bpe4word4Word5merge17hcb1c32d829ff04a %19 = add nuw i64 %.0131, 1 %20 = icmp ult i64 %19, %14 %or.cond = select i1 %18, i1 %20, i1 false - br i1 %or.cond, label %22, label %._crit_edge152 + br i1 %or.cond, label %22, label %._crit_edge158 -._crit_edge152: ; preds = %13, %132, %120, %97, %22 - %21 = phi i64 [ %.pre151, %132 ], [ %.val30, %120 ], [ %103, %97 ], [ %14, %22 ], [ %14, %13 ] +._crit_edge158: ; preds = %13, %134, %122, %97, %22 + %21 = phi i64 [ %.pre157, %134 ], [ %.val30, %122 ], [ %103, %97 ], [ %14, %22 ], [ %14, %13 ] %.not = icmp ult i64 %19, %21 br i1 %.not, label %13, label %._crit_edge @@ -17787,7 +17788,7 @@ define hidden void @_ZN10tokenizers6models3bpe4word4Word5merge17hcb1c32d829ff04a %24 = getelementptr inbounds i8, ptr %23, i64 24 %25 = load i32, ptr %24, align 8, !noundef !4 %26 = icmp eq i32 %25, %3 - br i1 %26, label %27, label %._crit_edge152 + br i1 %26, label %27, label %._crit_edge158 27: ; preds = %22 %28 = load i64, ptr %15, align 8, !noundef !4 @@ -17868,10 +17869,10 @@ define hidden void @_ZN10tokenizers6models3bpe4word4Word5merge17hcb1c32d829ff04a %64 = icmp ult i64 %37, %.val36 br i1 %64, label %68, label %.invoke, !prof !553 -.invoke: ; preds = %113, %58 - %65 = phi i64 [ %37, %58 ], [ %19, %113 ] - %66 = phi i64 [ %.val36, %58 ], [ %.val30, %113 ] - %67 = phi ptr [ @anon.6e929131f0dd62016d572efc3b163756.154, %58 ], [ @anon.6e929131f0dd62016d572efc3b163756.159, %113 ] +.invoke: ; preds = %115, %106, %58 + %65 = phi i64 [ %37, %58 ], [ %19, %106 ], [ %19, %115 ] + %66 = phi i64 [ %.val36, %58 ], [ %103, %106 ], [ %.val30, %115 ] + %67 = phi ptr [ @anon.6e929131f0dd62016d572efc3b163756.154, %58 ], [ @anon.6e929131f0dd62016d572efc3b163756.158, %106 ], [ @anon.6e929131f0dd62016d572efc3b163756.159, %115 ] invoke void @_ZN4core9panicking18panic_bounds_check17h9bb22f08a42e1ac8E(i64 noundef %65, i64 noundef %66, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %67) #56 to label %.cont unwind label %.loopexit.split-lp @@ -17929,15 +17930,15 @@ define hidden void @_ZN10tokenizers6models3bpe4word4Word5merge17hcb1c32d829ff04a store i64 %87, ptr %9, align 8, !alias.scope !3851, !noalias !3854 call void @llvm.experimental.noalias.scope.decl(metadata !3861) %.not.i = icmp ult i64 %19, %87 - br i1 %.not.i, label %90, label %.invoke173 + br i1 %.not.i, label %90, label %.invoke185 -.invoke173: ; preds = %90, %86 +.invoke185: ; preds = %90, %86 %88 = phi i64 [ %87, %86 ], [ %44, %90 ] %89 = phi ptr [ @anon.6e929131f0dd62016d572efc3b163756.156, %86 ], [ @anon.6e929131f0dd62016d572efc3b163756.157, %90 ] invoke void @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6remove13assert_failed17h185874160a15642dE"(i64 noundef %19, i64 noundef %88, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %89) #56 - to label %.cont174 unwind label %.loopexit.split-lp + to label %.cont186 unwind label %.loopexit.split-lp -.cont174: ; preds = %.invoke173 +.cont186: ; preds = %.invoke185 unreachable 90: ; preds = %86 @@ -17951,7 +17952,7 @@ define hidden void @_ZN10tokenizers6models3bpe4word4Word5merge17hcb1c32d829ff04a store i64 %44, ptr %9, align 8, !alias.scope !3861, !noalias !3864 call void @llvm.experimental.noalias.scope.decl(metadata !3868) %.not.i66 = icmp ult i64 %19, %44 - br i1 %.not.i66, label %97, label %.invoke173 + br i1 %.not.i66, label %97, label %.invoke185 97: ; preds = %90 %98 = load ptr, ptr %11, align 8, !alias.scope !3868, !noalias !3871, !nonnull !4, !noundef !4 @@ -17964,87 +17965,91 @@ define hidden void @_ZN10tokenizers6models3bpe4word4Word5merge17hcb1c32d829ff04a store i64 %103, ptr %9, align 8, !alias.scope !3868, !noalias !3871 %104 = add i64 %44, -2 %105 = icmp ult i64 %.0131, %104 - br i1 %105, label %106, label %._crit_edge152 + br i1 %105, label %106, label %._crit_edge158 106: ; preds = %97 + %107 = icmp ult i64 %19, %103 + br i1 %107, label %108, label %.invoke, !prof !553 + +108: ; preds = %106 %.val31 = load ptr, ptr %11, align 8, !alias.scope !3843, !nonnull !4, !noundef !4 - %107 = getelementptr inbounds [0 x { i64, i64, i64, i32, [1 x i32] }], ptr %.val31, i64 0, i64 %19, i32 3 - %108 = load i32, ptr %107, align 8, !noundef !4 - %109 = load i64, ptr %8, align 8, !alias.scope !3875, !noalias !3878, !noundef !4 - %110 = load i64, ptr %6, align 8, !alias.scope !3875, !noalias !3878, !noundef !4 - %111 = icmp eq i64 %109, %110 - br i1 %111, label %112, label %113 - -112: ; preds = %106 - invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17had99f42dd8272ddbE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %109) + %109 = getelementptr inbounds [0 x { i64, i64, i64, i32, [1 x i32] }], ptr %.val31, i64 0, i64 %19, i32 3 + %110 = load i32, ptr %109, align 8, !noundef !4 + %111 = load i64, ptr %8, align 8, !alias.scope !3875, !noalias !3878, !noundef !4 + %112 = load i64, ptr %6, align 8, !alias.scope !3875, !noalias !3878, !noundef !4 + %113 = icmp eq i64 %111, %112 + br i1 %113, label %114, label %115 + +114: ; preds = %108 + invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17had99f42dd8272ddbE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %111) to label %.noexc72 unwind label %.loopexit -.noexc72: ; preds = %112 +.noexc72: ; preds = %114 %.pre.i71 = load i64, ptr %8, align 8, !alias.scope !3875, !noalias !3878 - br label %113 - -113: ; preds = %.noexc72, %106 - %114 = phi i64 [ %.pre.i71, %.noexc72 ], [ %109, %106 ] - %115 = load ptr, ptr %7, align 8, !alias.scope !3875, !noalias !3878, !nonnull !4, !noundef !4 - %116 = getelementptr inbounds { { i32, i32 }, i32 }, ptr %115, i64 %114 - store i32 %3, ptr %116, align 4 - %.sroa.488.0..sroa_idx = getelementptr inbounds i8, ptr %116, i64 4 - store i32 %108, ptr %.sroa.488.0..sroa_idx, align 4 - %.sroa.589.0..sroa_idx = getelementptr inbounds i8, ptr %116, i64 8 + br label %115 + +115: ; preds = %.noexc72, %108 + %116 = phi i64 [ %.pre.i71, %.noexc72 ], [ %111, %108 ] + %117 = load ptr, ptr %7, align 8, !alias.scope !3875, !noalias !3878, !nonnull !4, !noundef !4 + %118 = getelementptr inbounds { { i32, i32 }, i32 }, ptr %117, i64 %116 + store i32 %3, ptr %118, align 4 + %.sroa.488.0..sroa_idx = getelementptr inbounds i8, ptr %118, i64 4 + store i32 %110, ptr %.sroa.488.0..sroa_idx, align 4 + %.sroa.589.0..sroa_idx = getelementptr inbounds i8, ptr %118, i64 8 store i32 -1, ptr %.sroa.589.0..sroa_idx, align 4 - %117 = load i64, ptr %8, align 8, !alias.scope !3875, !noalias !3878, !noundef !4 - %118 = add i64 %117, 1 - store i64 %118, ptr %8, align 8, !alias.scope !3875, !noalias !3878 + %119 = load i64, ptr %8, align 8, !alias.scope !3875, !noalias !3878, !noundef !4 + %120 = add i64 %119, 1 + store i64 %120, ptr %8, align 8, !alias.scope !3875, !noalias !3878 %.val30 = load i64, ptr %9, align 8, !alias.scope !3843, !noundef !4 - %119 = icmp ult i64 %19, %.val30 - br i1 %119, label %120, label %.invoke, !prof !553 + %121 = icmp ult i64 %19, %.val30 + br i1 %121, label %122, label %.invoke, !prof !553 -120: ; preds = %113 +122: ; preds = %115 %.val29 = load ptr, ptr %11, align 8, !alias.scope !3843, !nonnull !4, !noundef !4 - %121 = getelementptr inbounds [0 x { i64, i64, i64, i32, [1 x i32] }], ptr %.val29, i64 0, i64 %19 - %122 = getelementptr inbounds i8, ptr %121, i64 16 - %123 = load i64, ptr %122, align 8, !noundef !4 - %124 = add i64 %123, %35 - %125 = icmp ult i64 %124, %5 - br i1 %125, label %126, label %._crit_edge152 - -126: ; preds = %120 - %127 = getelementptr inbounds i8, ptr %121, i64 24 - %128 = load i32, ptr %127, align 8, !noundef !4 - %129 = load i64, ptr %6, align 8, !alias.scope !3880, !noalias !3883, !noundef !4 - %130 = icmp eq i64 %118, %129 - br i1 %130, label %131, label %132 - -131: ; preds = %126 - invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17had99f42dd8272ddbE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %118) + %123 = getelementptr inbounds [0 x { i64, i64, i64, i32, [1 x i32] }], ptr %.val29, i64 0, i64 %19 + %124 = getelementptr inbounds i8, ptr %123, i64 16 + %125 = load i64, ptr %124, align 8, !noundef !4 + %126 = add i64 %125, %35 + %127 = icmp ult i64 %126, %5 + br i1 %127, label %128, label %._crit_edge158 + +128: ; preds = %122 + %129 = getelementptr inbounds i8, ptr %123, i64 24 + %130 = load i32, ptr %129, align 8, !noundef !4 + %131 = load i64, ptr %6, align 8, !alias.scope !3880, !noalias !3883, !noundef !4 + %132 = icmp eq i64 %120, %131 + br i1 %132, label %133, label %134 + +133: ; preds = %128 + invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$16reserve_for_push17had99f42dd8272ddbE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %120) to label %.noexc79 unwind label %.loopexit -.noexc79: ; preds = %131 +.noexc79: ; preds = %133 %.pre.i78 = load i64, ptr %8, align 8, !alias.scope !3880, !noalias !3883 - br label %132 - -132: ; preds = %.noexc79, %126 - %133 = phi i64 [ %.pre.i78, %.noexc79 ], [ %118, %126 ] - %134 = load ptr, ptr %7, align 8, !alias.scope !3880, !noalias !3883, !nonnull !4, !noundef !4 - %135 = getelementptr inbounds { { i32, i32 }, i32 }, ptr %134, i64 %133 - store i32 %4, ptr %135, align 4 - %.sroa.491.0..sroa_idx = getelementptr inbounds i8, ptr %135, i64 4 - store i32 %128, ptr %.sroa.491.0..sroa_idx, align 4 - %.sroa.592.0..sroa_idx = getelementptr inbounds i8, ptr %135, i64 8 + br label %134 + +134: ; preds = %.noexc79, %128 + %135 = phi i64 [ %.pre.i78, %.noexc79 ], [ %120, %128 ] + %136 = load ptr, ptr %7, align 8, !alias.scope !3880, !noalias !3883, !nonnull !4, !noundef !4 + %137 = getelementptr inbounds { { i32, i32 }, i32 }, ptr %136, i64 %135 + store i32 %4, ptr %137, align 4 + %.sroa.491.0..sroa_idx = getelementptr inbounds i8, ptr %137, i64 4 + store i32 %130, ptr %.sroa.491.0..sroa_idx, align 4 + %.sroa.592.0..sroa_idx = getelementptr inbounds i8, ptr %137, i64 8 store i32 1, ptr %.sroa.592.0..sroa_idx, align 4 - %136 = load i64, ptr %8, align 8, !alias.scope !3880, !noalias !3883, !noundef !4 - %137 = add i64 %136, 1 - store i64 %137, ptr %8, align 8, !alias.scope !3880, !noalias !3883 - %.pre151 = load i64, ptr %9, align 8 - br label %._crit_edge152 - -138: ; preds = %12 - %139 = landingpad { ptr, i32 } + %138 = load i64, ptr %8, align 8, !alias.scope !3880, !noalias !3883, !noundef !4 + %139 = add i64 %138, 1 + store i64 %139, ptr %8, align 8, !alias.scope !3880, !noalias !3883 + %.pre157 = load i64, ptr %9, align 8 + br label %._crit_edge158 + +140: ; preds = %12 + %141 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hc8e2b17e1b6d1381E() #57 unreachable -140: ; preds = %12 +142: ; preds = %12 resume { ptr, i32 } %lpad.phi } diff --git a/bench/velox/optimized/BaseVector.cpp.ll b/bench/velox/optimized/BaseVector.cpp.ll index e6d06dd6f3b..f578a9131df 100644 --- a/bench/velox/optimized/BaseVector.cpp.ll +++ b/bench/velox/optimized/BaseVector.cpp.ll @@ -196965,21 +196965,13 @@ if.then11: ; preds = %if.then7 if.end12: ; preds = %if.then7 %7 = load i64, ptr %capacity_.i, align 8 %cmp.not.i = icmp ugt i64 %1, %7 - br i1 %cmp.not.i, label %if.then.i14, label %if.end.i + br i1 %cmp.not.i, label %if.then.i14, label %if.end9.i if.then.i14: ; preds = %if.end12 tail call void @llvm.trap() unreachable -if.end.i: ; preds = %if.end12 - %cmp2.not.i = icmp ult i64 %1, %3 - br i1 %cmp2.not.i, label %if.then4.i, label %if.end9.i - -if.then4.i: ; preds = %if.end.i - tail call void @llvm.trap() - unreachable - -if.end9.i: ; preds = %if.end.i +if.end9.i: ; preds = %if.end12 %rem10.i = and i64 %3, 15 %cmp11.not.i = icmp eq i64 %rem10.i, 0 br i1 %cmp11.not.i, label %if.end14.i, label %if.then13.i diff --git a/bench/z3/optimized/mpn.cpp.ll b/bench/z3/optimized/mpn.cpp.ll index 6833d8fe76c..ea4bef22a76 100644 --- a/bench/z3/optimized/mpn.cpp.ll +++ b/bench/z3/optimized/mpn.cpp.ll @@ -1150,6 +1150,7 @@ for.body.lr.ph: ; preds = %_ZN6bufferIjLb0ELj1 %m_capacity.i.i84 = getelementptr inbounds i8, ptr %ab, i64 12 %m_initial_buffer.i.i.i.i85 = getelementptr inbounds i8, ptr %ab, i64 16 %cond.i = tail call i32 @llvm.umax.i32(i32 %1, i32 %add) + %cmp231.not.i = icmp eq i32 %cond.i, 0 %wide.trip.count.i124 = zext i32 %cond.i to i64 %12 = zext i32 %dec155 to i64 br label %for.body @@ -1369,11 +1370,11 @@ _ZN6bufferIjLb0ELj16EE6resizeEjRKj.exit120: ; preds = %_ZN6bufferIjLb0ELj1 %37 = load ptr, ptr %numer, align 8 %arrayidx.i122 = getelementptr inbounds i32, ptr %37, i64 %indvars.iv159 %38 = load ptr, ptr %ab, align 8 - br label %for.body.i125 + br i1 %cmp231.not.i, label %for.end.i, label %for.body.i125 -for.body.i125: ; preds = %for.body.i125, %_ZN6bufferIjLb0ELj16EE6resizeEjRKj.exit120 - %indvars.iv.i126 = phi i64 [ 0, %_ZN6bufferIjLb0ELj16EE6resizeEjRKj.exit120 ], [ %indvars.iv.next.i137, %for.body.i125 ] - %k.033.i = phi i32 [ 0, %_ZN6bufferIjLb0ELj16EE6resizeEjRKj.exit120 ], [ %or.i136, %for.body.i125 ] +for.body.i125: ; preds = %_ZN6bufferIjLb0ELj16EE6resizeEjRKj.exit120, %for.body.i125 + %indvars.iv.i126 = phi i64 [ %indvars.iv.next.i137, %for.body.i125 ], [ 0, %_ZN6bufferIjLb0ELj16EE6resizeEjRKj.exit120 ] + %k.033.i = phi i32 [ %or.i136, %for.body.i125 ], [ 0, %_ZN6bufferIjLb0ELj16EE6resizeEjRKj.exit120 ] %cmp3.i127 = icmp samesign ult i64 %indvars.iv.i126, %wide.trip.count43.i %arrayidx.i128 = getelementptr inbounds i32, ptr %36, i64 %indvars.iv.i126 %cond-lvalue.i129 = select i1 %cmp3.i127, ptr %arrayidx.i128, ptr @_ZN11mpn_manager4zeroE @@ -1392,15 +1393,16 @@ for.body.i125: ; preds = %for.body.i125, %_ZN %or.i136 = zext i1 %or30.i to i32 %indvars.iv.next.i137 = add nuw nsw i64 %indvars.iv.i126, 1 %exitcond.not.i138 = icmp eq i64 %indvars.iv.next.i137, %wide.trip.count.i124 - br i1 %exitcond.not.i138, label %for.end.i.loopexit, label %for.body.i125, !llvm.loop !6 + br i1 %exitcond.not.i138, label %for.end.i, label %for.body.i125, !llvm.loop !6 -for.end.i.loopexit: ; preds = %for.body.i125 +for.end.i: ; preds = %for.body.i125, %_ZN6bufferIjLb0ELj16EE6resizeEjRKj.exit120 + %k.0.lcssa.i = phi i32 [ 0, %_ZN6bufferIjLb0ELj16EE6resizeEjRKj.exit120 ], [ %or.i136, %for.body.i125 ] %arrayidx25.i = getelementptr inbounds i32, ptr %38, i64 %wide.trip.count.i124 - store i32 %or.i136, ptr %arrayidx25.i, align 4 + store i32 %k.0.lcssa.i, ptr %arrayidx25.i, align 4 br i1 %cmp225.not.i, label %if.end65, label %for.body61 -for.body61: ; preds = %for.end.i.loopexit, %for.body61 - %indvars.iv = phi i64 [ %indvars.iv.next, %for.body61 ], [ 0, %for.end.i.loopexit ] +for.body61: ; preds = %for.end.i, %for.body61 + %indvars.iv = phi i64 [ %indvars.iv.next, %for.body61 ], [ 0, %for.end.i ] %41 = load ptr, ptr %ab, align 8 %arrayidx.i140 = getelementptr inbounds i32, ptr %41, i64 %indvars.iv %42 = load i32, ptr %arrayidx.i140, align 4 @@ -1413,7 +1415,7 @@ for.body61: ; preds = %for.end.i.loopexit, %exitcond.not = icmp eq i64 %indvars.iv.next, %11 br i1 %exitcond.not, label %if.end65, label %for.body61, !llvm.loop !23 -if.end65: ; preds = %for.body61, %for.end.i.loopexit, %_ZNK11mpn_manager3subEPKjjS1_jPjS2_.exit.thread, %_ZNK11mpn_manager3subEPKjjS1_jPjS2_.exit +if.end65: ; preds = %for.body61, %for.end.i, %_ZNK11mpn_manager3subEPKjjS1_jPjS2_.exit.thread, %_ZNK11mpn_manager3subEPKjjS1_jPjS2_.exit %indvars.iv.next160 = add nsw i64 %indvars.iv159, -1 %cmp.not = icmp eq i64 %indvars.iv159, 0 br i1 %cmp.not, label %for.end66, label %for.body, !llvm.loop !24 diff --git a/bench/zed-rs/optimized/8eitysufhvsi37fsnmjuossia.ll b/bench/zed-rs/optimized/8eitysufhvsi37fsnmjuossia.ll index 12f05e2d395..82fc788467d 100644 --- a/bench/zed-rs/optimized/8eitysufhvsi37fsnmjuossia.ll +++ b/bench/zed-rs/optimized/8eitysufhvsi37fsnmjuossia.ll @@ -8445,9 +8445,10 @@ define hidden void @"_ZN3vte4ansi18Processor$LT$T$GT$16advance_sync_csi17h91d2b6 27: ; preds = %15 tail call void @llvm.experimental.noalias.scope.decl(metadata !724) - br label %.lr.ph.i + %.not.i = icmp eq i64 %5, 0 + br i1 %.not.i, label %"_ZN3vte4ansi18Processor$LT$T$GT$9stop_sync17h998f858f0d38185fE.exit", label %.lr.ph.i -.lr.ph.i: ; preds = %27, %26 +.lr.ph.i: ; preds = %26, %27 %28 = getelementptr inbounds i8, ptr %0, i64 8 %29 = getelementptr inbounds i8, ptr %3, i64 8 %30 = getelementptr inbounds i8, ptr %0, i64 48 @@ -8476,7 +8477,7 @@ define hidden void @"_ZN3vte4ansi18Processor$LT$T$GT$16advance_sync_csi17h91d2b6 call void @_ZN4core9panicking18panic_bounds_check17h9397cb495d89a72dE(i64 noundef %.sroa.01.04.i, i64 noundef %32, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.e3cc8027431ef4e63f1cd1d874429458.85.llvm.16596252480382604378) #24 unreachable -"_ZN3vte4ansi18Processor$LT$T$GT$9stop_sync17h998f858f0d38185fE.exit": ; preds = %34 +"_ZN3vte4ansi18Processor$LT$T$GT$9stop_sync17h998f858f0d38185fE.exit": ; preds = %34, %27 call void @"_ZN78_$LT$alacritty_terminal..term..Term$LT$T$GT$$u20$as$u20$vte..ansi..Handler$GT$18unset_private_mode17hf038456de6f0e718E.llvm.16596252480382604378"(ptr noalias noundef nonnull align 8 dereferenceable(1736) %1, i16 noundef 0, i16 noundef 2026) store i64 0, ptr %4, align 8, !alias.scope !724, !noalias !727 br label %.sink.split diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index 820278fb20a..a9686ffbdb4 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/118458 # Please rebase manually # git fetch origin