diff --git a/bench/abc/optimized/giaKf.c.ll b/bench/abc/optimized/giaKf.c.ll index 969ed32b1af..fc9066b7b8c 100644 --- a/bench/abc/optimized/giaKf.c.ll +++ b/bench/abc/optimized/giaKf.c.ll @@ -5522,7 +5522,7 @@ select.unfold._crit_edge.split.us.us: ; preds = %Kf_SetStoreAddOne.e .lr.ph.us: ; preds = %.split.us, %Kf_SetStoreAddOne.exit.us.us %.159.us.us = phi i32 [ %.0.i.us.us, %Kf_SetStoreAddOne.exit.us.us ], [ %.061.us, %.split.us ] - %.pn96.in = phi i32 [ %48, %Kf_SetStoreAddOne.exit.us.us ], [ %9, %.split.us ] + %.pn96.in = phi i32 [ %47, %Kf_SetStoreAddOne.exit.us.us ], [ %9, %.split.us ] %.pn96 = zext nneg i32 %.pn96.in to i64 %.pre38.i.us.us = getelementptr inbounds nuw %struct.Kf_Cut_t_, ptr %5, i64 %.pn96 %13 = load i16, ptr %6, align 2 @@ -5546,228 +5546,228 @@ select.unfold._crit_edge.split.us.us: ; preds = %Kf_SetStoreAddOne.e br label %.lr.ph.split.us.i.us.us .lr.ph.split.us.i.us.us: ; preds = %Kf_CutCompare.exit.us.i.us.us, %.lr.ph.i.us.us - %indvars.iv77 = phi i64 [ %23, %Kf_CutCompare.exit.us.i.us.us ], [ %.phi.trans.insert36.i.us.us, %.lr.ph.i.us.us ] - %23 = add nsw i64 %indvars.iv77, -1 - %24 = getelementptr inbounds nuw [32 x ptr], ptr %7, i64 0, i64 %23 - %25 = load ptr, ptr %24, align 8 - %26 = getelementptr inbounds nuw [32 x ptr], ptr %7, i64 0, i64 %indvars.iv77 - %27 = getelementptr inbounds nuw i8, ptr %25, i64 12 - %28 = load i32, ptr %27, align 4 - %29 = load i32, ptr %20, align 4 - %30 = icmp slt i32 %28, %29 - br i1 %30, label %Kf_CutCompare.exit.thread.i.us.us, label %31 - -31: ; preds = %.lr.ph.split.us.i.us.us - %32 = icmp sgt i32 %28, %29 - br i1 %32, label %Kf_CutCompare.exit.us.i.us.us, label %33 - -33: ; preds = %31 - %34 = getelementptr inbounds nuw i8, ptr %25, i64 28 - %35 = load i32, ptr %34, align 4 - %36 = load i32, ptr %21, align 4 - %37 = icmp slt i32 %35, %36 - br i1 %37, label %Kf_CutCompare.exit.thread.i.us.us, label %38 - -38: ; preds = %33 - %39 = icmp sgt i32 %35, %36 - br i1 %39, label %Kf_CutCompare.exit.us.i.us.us, label %40 - -40: ; preds = %38 - %41 = getelementptr inbounds nuw i8, ptr %25, i64 16 - %42 = load float, ptr %41, align 8 - %43 = load float, ptr %22, align 8 - %or.cond26.us.i.us.us = fcmp ogt float %42, %43 + %indvars.iv77 = phi i64 [ %indvars.iv.next78, %Kf_CutCompare.exit.us.i.us.us ], [ %.phi.trans.insert36.i.us.us, %.lr.ph.i.us.us ] + %indvars.iv.next78 = add nsw i64 %indvars.iv77, -1 + %23 = getelementptr inbounds nuw [32 x ptr], ptr %7, i64 0, i64 %indvars.iv.next78 + %24 = load ptr, ptr %23, align 8 + %25 = getelementptr inbounds nuw [32 x ptr], ptr %7, i64 0, i64 %indvars.iv77 + %26 = getelementptr inbounds nuw i8, ptr %24, i64 12 + %27 = load i32, ptr %26, align 4 + %28 = load i32, ptr %20, align 4 + %29 = icmp slt i32 %27, %28 + br i1 %29, label %Kf_CutCompare.exit.thread.i.us.us, label %30 + +30: ; preds = %.lr.ph.split.us.i.us.us + %31 = icmp sgt i32 %27, %28 + br i1 %31, label %Kf_CutCompare.exit.us.i.us.us, label %32 + +32: ; preds = %30 + %33 = getelementptr inbounds nuw i8, ptr %24, i64 28 + %34 = load i32, ptr %33, align 4 + %35 = load i32, ptr %21, align 4 + %36 = icmp slt i32 %34, %35 + br i1 %36, label %Kf_CutCompare.exit.thread.i.us.us, label %37 + +37: ; preds = %32 + %38 = icmp sgt i32 %34, %35 + br i1 %38, label %Kf_CutCompare.exit.us.i.us.us, label %39 + +39: ; preds = %37 + %40 = getelementptr inbounds nuw i8, ptr %24, i64 16 + %41 = load float, ptr %40, align 8 + %42 = load float, ptr %22, align 8 + %or.cond26.us.i.us.us = fcmp ogt float %41, %42 br i1 %or.cond26.us.i.us.us, label %Kf_CutCompare.exit.us.i.us.us, label %Kf_CutCompare.exit.thread.i.us.us -Kf_CutCompare.exit.us.i.us.us: ; preds = %40, %38, %31 - store ptr %.pre38.i.us.us, ptr %24, align 8 - store ptr %25, ptr %26, align 8 - %44 = icmp samesign ugt i64 %indvars.iv77, 1 - br i1 %44, label %.lr.ph.split.us.i.us.us, label %Kf_CutCompare.exit.thread.i.us.us, !llvm.loop !64 +Kf_CutCompare.exit.us.i.us.us: ; preds = %39, %37, %30 + store ptr %.pre38.i.us.us, ptr %23, align 8 + store ptr %24, ptr %25, align 8 + %43 = icmp samesign ugt i64 %indvars.iv77, 1 + br i1 %43, label %.lr.ph.split.us.i.us.us, label %Kf_CutCompare.exit.thread.i.us.us, !llvm.loop !64 -Kf_CutCompare.exit.thread.i.us.us: ; preds = %.lr.ph.split.us.i.us.us, %33, %40, %Kf_CutCompare.exit.us.i.us.us, %.preheader.i.us.us - %45 = add nsw i32 %.159.us.us, 1 - %46 = tail call range(i32 -2147483648, 65535) i32 @llvm.smin.i32(i32 %45, i32 range(i32 -1, 65535) %15) +Kf_CutCompare.exit.thread.i.us.us: ; preds = %.lr.ph.split.us.i.us.us, %32, %39, %Kf_CutCompare.exit.us.i.us.us, %.preheader.i.us.us + %44 = add nsw i32 %.159.us.us, 1 + %45 = tail call range(i32 -2147483648, 65535) i32 @llvm.smin.i32(i32 %44, i32 range(i32 -1, 65535) %15) br label %Kf_SetStoreAddOne.exit.us.us Kf_SetStoreAddOne.exit.us.us: ; preds = %Kf_CutCompare.exit.thread.i.us.us, %.lr.ph.us - %.0.i.us.us = phi i32 [ %46, %Kf_CutCompare.exit.thread.i.us.us ], [ 1, %.lr.ph.us ] - %47 = getelementptr inbounds nuw i8, ptr %.pre38.i.us.us, i64 24 - %48 = load i32, ptr %47, align 8 - %49 = icmp slt i32 %48, 0 - br i1 %49, label %select.unfold._crit_edge.split.us.us, label %.lr.ph.us + %.0.i.us.us = phi i32 [ %45, %Kf_CutCompare.exit.thread.i.us.us ], [ 1, %.lr.ph.us ] + %46 = getelementptr inbounds nuw i8, ptr %.pre38.i.us.us, i64 24 + %47 = load i32, ptr %46, align 8 + %48 = icmp slt i32 %47, 0 + br i1 %48, label %select.unfold._crit_edge.split.us.us, label %.lr.ph.us .split: ; preds = %2, %select.unfold._crit_edge.split %indvars.iv = phi i64 [ %indvars.iv.next, %select.unfold._crit_edge.split ], [ 0, %2 ] %.061 = phi i32 [ %.1.lcssa, %select.unfold._crit_edge.split ], [ 0, %2 ] - %50 = getelementptr inbounds nuw [17 x i32], ptr %4, i64 0, i64 %indvars.iv - %51 = load i32, ptr %50, align 4 - %52 = icmp slt i32 %51, 0 - br i1 %52, label %select.unfold._crit_edge.split, label %.lr.ph + %49 = getelementptr inbounds nuw [17 x i32], ptr %4, i64 0, i64 %indvars.iv + %50 = load i32, ptr %49, align 4 + %51 = icmp slt i32 %50, 0 + br i1 %51, label %select.unfold._crit_edge.split, label %.lr.ph .lr.ph: ; preds = %.split, %Kf_SetStoreAddOne.exit %.159 = phi i32 [ %.0.i, %Kf_SetStoreAddOne.exit ], [ %.061, %.split ] - %.pn.in = phi i32 [ %88, %Kf_SetStoreAddOne.exit ], [ %51, %.split ] + %.pn.in = phi i32 [ %87, %Kf_SetStoreAddOne.exit ], [ %50, %.split ] %.pn = zext nneg i32 %.pn.in to i64 %.pre38.i = getelementptr inbounds nuw %struct.Kf_Cut_t_, ptr %5, i64 %.pn - %53 = load i16, ptr %6, align 2 - %54 = zext i16 %53 to i32 - %55 = add nsw i32 %54, -1 - %56 = sext i32 %.159 to i64 - %57 = getelementptr inbounds [32 x ptr], ptr %7, i64 0, i64 %56 - store ptr %.pre38.i, ptr %57, align 8 - %58 = icmp eq i32 %.159, 0 - br i1 %58, label %Kf_SetStoreAddOne.exit, label %.preheader.i + %52 = load i16, ptr %6, align 2 + %53 = zext i16 %52 to i32 + %54 = add nsw i32 %53, -1 + %55 = sext i32 %.159 to i64 + %56 = getelementptr inbounds [32 x ptr], ptr %7, i64 0, i64 %55 + store ptr %.pre38.i, ptr %56, align 8 + %57 = icmp eq i32 %.159, 0 + br i1 %57, label %Kf_SetStoreAddOne.exit, label %.preheader.i .preheader.i: ; preds = %.lr.ph - %59 = icmp sgt i32 %.159, 0 - br i1 %59, label %.lr.ph.i, label %Kf_CutCompare.exit.thread.i + %58 = icmp sgt i32 %.159, 0 + br i1 %58, label %.lr.ph.i, label %Kf_CutCompare.exit.thread.i .lr.ph.i: ; preds = %.preheader.i %.phi.trans.insert36.i = zext nneg i32 %.159 to i64 - %60 = getelementptr inbounds nuw i8, ptr %.pre38.i, i64 16 - %61 = getelementptr inbounds nuw i8, ptr %.pre38.i, i64 12 - %62 = getelementptr inbounds nuw i8, ptr %.pre38.i, i64 28 + %59 = getelementptr inbounds nuw i8, ptr %.pre38.i, i64 16 + %60 = getelementptr inbounds nuw i8, ptr %.pre38.i, i64 12 + %61 = getelementptr inbounds nuw i8, ptr %.pre38.i, i64 28 br label %.lr.ph.split.i .lr.ph.split.i: ; preds = %Kf_CutCompare.exit.i, %.lr.ph.i %indvars.iv.i = phi i64 [ %.phi.trans.insert36.i, %.lr.ph.i ], [ %indvars.iv.next.i, %Kf_CutCompare.exit.i ] %indvars.iv.next.i = add nsw i64 %indvars.iv.i, -1 - %63 = getelementptr inbounds nuw [32 x ptr], ptr %7, i64 0, i64 %indvars.iv.next.i - %64 = load ptr, ptr %63, align 8 - %65 = getelementptr inbounds nuw [32 x ptr], ptr %7, i64 0, i64 %indvars.iv.i - %66 = getelementptr inbounds nuw i8, ptr %64, i64 16 - %67 = load float, ptr %66, align 8 - %68 = load float, ptr %60, align 8 - %69 = fcmp olt float %67, %68 - br i1 %69, label %Kf_CutCompare.exit.thread.i, label %70 - -70: ; preds = %.lr.ph.split.i - %71 = fcmp ogt float %67, %68 - br i1 %71, label %Kf_CutCompare.exit.i, label %72 - -72: ; preds = %70 - %73 = getelementptr inbounds nuw i8, ptr %64, i64 12 - %74 = load i32, ptr %73, align 4 - %75 = load i32, ptr %61, align 4 - %76 = icmp slt i32 %74, %75 - br i1 %76, label %Kf_CutCompare.exit.thread.i, label %77 - -77: ; preds = %72 - %78 = icmp sgt i32 %74, %75 - br i1 %78, label %Kf_CutCompare.exit.i, label %79 - -79: ; preds = %77 - %80 = getelementptr inbounds nuw i8, ptr %64, i64 28 - %81 = load i32, ptr %80, align 4 - %82 = load i32, ptr %62, align 4 - %83 = icmp sgt i32 %81, %82 - br i1 %83, label %Kf_CutCompare.exit.i, label %Kf_CutCompare.exit.thread.i - -Kf_CutCompare.exit.i: ; preds = %79, %77, %70 - store ptr %.pre38.i, ptr %63, align 8 - store ptr %64, ptr %65, align 8 - %84 = icmp samesign ugt i64 %indvars.iv.i, 1 - br i1 %84, label %.lr.ph.split.i, label %Kf_CutCompare.exit.thread.i, !llvm.loop !64 - -Kf_CutCompare.exit.thread.i: ; preds = %Kf_CutCompare.exit.i, %79, %72, %.lr.ph.split.i, %.preheader.i - %85 = add nsw i32 %.159, 1 - %86 = tail call range(i32 -2147483648, 65535) i32 @llvm.smin.i32(i32 %85, i32 range(i32 -1, 65535) %55) + %62 = getelementptr inbounds nuw [32 x ptr], ptr %7, i64 0, i64 %indvars.iv.next.i + %63 = load ptr, ptr %62, align 8 + %64 = getelementptr inbounds nuw [32 x ptr], ptr %7, i64 0, i64 %indvars.iv.i + %65 = getelementptr inbounds nuw i8, ptr %63, i64 16 + %66 = load float, ptr %65, align 8 + %67 = load float, ptr %59, align 8 + %68 = fcmp olt float %66, %67 + br i1 %68, label %Kf_CutCompare.exit.thread.i, label %69 + +69: ; preds = %.lr.ph.split.i + %70 = fcmp ogt float %66, %67 + br i1 %70, label %Kf_CutCompare.exit.i, label %71 + +71: ; preds = %69 + %72 = getelementptr inbounds nuw i8, ptr %63, i64 12 + %73 = load i32, ptr %72, align 4 + %74 = load i32, ptr %60, align 4 + %75 = icmp slt i32 %73, %74 + br i1 %75, label %Kf_CutCompare.exit.thread.i, label %76 + +76: ; preds = %71 + %77 = icmp sgt i32 %73, %74 + br i1 %77, label %Kf_CutCompare.exit.i, label %78 + +78: ; preds = %76 + %79 = getelementptr inbounds nuw i8, ptr %63, i64 28 + %80 = load i32, ptr %79, align 4 + %81 = load i32, ptr %61, align 4 + %82 = icmp sgt i32 %80, %81 + br i1 %82, label %Kf_CutCompare.exit.i, label %Kf_CutCompare.exit.thread.i + +Kf_CutCompare.exit.i: ; preds = %78, %76, %69 + store ptr %.pre38.i, ptr %62, align 8 + store ptr %63, ptr %64, align 8 + %83 = icmp samesign ugt i64 %indvars.iv.i, 1 + br i1 %83, label %.lr.ph.split.i, label %Kf_CutCompare.exit.thread.i, !llvm.loop !64 + +Kf_CutCompare.exit.thread.i: ; preds = %Kf_CutCompare.exit.i, %78, %71, %.lr.ph.split.i, %.preheader.i + %84 = add nsw i32 %.159, 1 + %85 = tail call range(i32 -2147483648, 65535) i32 @llvm.smin.i32(i32 %84, i32 range(i32 -1, 65535) %54) br label %Kf_SetStoreAddOne.exit Kf_SetStoreAddOne.exit: ; preds = %.lr.ph, %Kf_CutCompare.exit.thread.i - %.0.i = phi i32 [ %86, %Kf_CutCompare.exit.thread.i ], [ 1, %.lr.ph ] - %87 = getelementptr inbounds nuw i8, ptr %.pre38.i, i64 24 - %88 = load i32, ptr %87, align 8 - %89 = icmp slt i32 %88, 0 - br i1 %89, label %select.unfold._crit_edge.split, label %.lr.ph + %.0.i = phi i32 [ %85, %Kf_CutCompare.exit.thread.i ], [ 1, %.lr.ph ] + %86 = getelementptr inbounds nuw i8, ptr %.pre38.i, i64 24 + %87 = load i32, ptr %86, align 8 + %88 = icmp slt i32 %87, 0 + br i1 %88, label %select.unfold._crit_edge.split, label %.lr.ph select.unfold._crit_edge.split: ; preds = %Kf_SetStoreAddOne.exit, %.split %.1.lcssa = phi i32 [ %.061, %.split ], [ %.0.i, %Kf_SetStoreAddOne.exit ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %90 = load i16, ptr %3, align 8 - %91 = zext i16 %90 to i64 - %.not.not = icmp samesign ult i64 %indvars.iv, %91 + %89 = load i16, ptr %3, align 8 + %90 = zext i16 %89 to i64 + %.not.not = icmp samesign ult i64 %indvars.iv, %90 br i1 %.not.not, label %.split, label %.split63.us, !llvm.loop !63 .split63.us: ; preds = %select.unfold._crit_edge.split, %select.unfold._crit_edge.split.us.us - %.pre-phi = phi i64 [ %12, %select.unfold._crit_edge.split.us.us ], [ %91, %select.unfold._crit_edge.split ] - %92 = phi i16 [ %11, %select.unfold._crit_edge.split.us.us ], [ %90, %select.unfold._crit_edge.split ] + %.pre-phi = phi i64 [ %12, %select.unfold._crit_edge.split.us.us ], [ %90, %select.unfold._crit_edge.split ] + %91 = phi i16 [ %11, %select.unfold._crit_edge.split.us.us ], [ %89, %select.unfold._crit_edge.split ] %.us-phi64 = phi i32 [ %.1.lcssa.us, %select.unfold._crit_edge.split.us.us ], [ %.1.lcssa, %select.unfold._crit_edge.split ] - %93 = getelementptr inbounds nuw i8, ptr %0, i64 20 - store i32 %.us-phi64, ptr %93, align 4 - %94 = load ptr, ptr %7, align 8 - %95 = getelementptr inbounds nuw i8, ptr %0, i64 106920 - store ptr %94, ptr %95, align 8 - %96 = shl nuw nsw i64 %.pre-phi, 2 - %97 = add nuw nsw i64 %96, 4 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %4, i8 -1, i64 %97, i1 false) - %98 = icmp sgt i32 %.us-phi64, 0 - br i1 %98, label %.lr.ph68, label %._crit_edge + %92 = getelementptr inbounds nuw i8, ptr %0, i64 20 + store i32 %.us-phi64, ptr %92, align 4 + %93 = load ptr, ptr %7, align 8 + %94 = getelementptr inbounds nuw i8, ptr %0, i64 106920 + store ptr %93, ptr %94, align 8 + %95 = shl nuw nsw i64 %.pre-phi, 2 + %96 = add nuw nsw i64 %95, 4 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %4, i8 -1, i64 %96, i1 false) + %97 = icmp sgt i32 %.us-phi64, 0 + br i1 %97, label %.lr.ph68, label %._crit_edge .lr.ph68: ; preds = %.split63.us - %99 = ptrtoint ptr %5 to i64 + %98 = ptrtoint ptr %5 to i64 %wide.trip.count = zext nneg i32 %.us-phi64 to i64 - br label %100 + br label %99 -100: ; preds = %.lr.ph68, %100 - %indvars.iv86 = phi i64 [ 0, %.lr.ph68 ], [ %indvars.iv.next87, %100 ] - %101 = getelementptr inbounds nuw [32 x ptr], ptr %7, i64 0, i64 %indvars.iv86 - %102 = load ptr, ptr %101, align 8 - %103 = getelementptr inbounds nuw i8, ptr %102, i64 28 - %104 = load i32, ptr %103, align 4 - %105 = sext i32 %104 to i64 - %106 = getelementptr inbounds [17 x i32], ptr %4, i64 0, i64 %105 - %107 = load i32, ptr %106, align 4 - %108 = getelementptr inbounds nuw i8, ptr %102, i64 24 - store i32 %107, ptr %108, align 8 - %109 = ptrtoint ptr %102 to i64 - %110 = sub i64 %109, %99 - %111 = sdiv exact i64 %110, 96 - %112 = trunc i64 %111 to i32 - store i32 %112, ptr %106, align 4 +99: ; preds = %.lr.ph68, %99 + %indvars.iv86 = phi i64 [ 0, %.lr.ph68 ], [ %indvars.iv.next87, %99 ] + %100 = getelementptr inbounds nuw [32 x ptr], ptr %7, i64 0, i64 %indvars.iv86 + %101 = load ptr, ptr %100, align 8 + %102 = getelementptr inbounds nuw i8, ptr %101, i64 28 + %103 = load i32, ptr %102, align 4 + %104 = sext i32 %103 to i64 + %105 = getelementptr inbounds [17 x i32], ptr %4, i64 0, i64 %104 + %106 = load i32, ptr %105, align 4 + %107 = getelementptr inbounds nuw i8, ptr %101, i64 24 + store i32 %106, ptr %107, align 8 + %108 = ptrtoint ptr %101 to i64 + %109 = sub i64 %108, %98 + %110 = sdiv exact i64 %109, 96 + %111 = trunc i64 %110 to i32 + store i32 %111, ptr %105, align 4 %indvars.iv.next87 = add nuw nsw i64 %indvars.iv86, 1 %exitcond.not = icmp eq i64 %indvars.iv.next87, %wide.trip.count - br i1 %exitcond.not, label %._crit_edge.loopexit, label %100, !llvm.loop !65 + br i1 %exitcond.not, label %._crit_edge.loopexit, label %99, !llvm.loop !65 -._crit_edge.loopexit: ; preds = %100 +._crit_edge.loopexit: ; preds = %99 %.pre = load i16, ptr %3, align 8 br label %._crit_edge ._crit_edge: ; preds = %._crit_edge.loopexit, %.split63.us - %113 = phi i16 [ %.pre, %._crit_edge.loopexit ], [ %92, %.split63.us ] - store i32 0, ptr %93, align 4 - %114 = zext i16 %113 to i64 - br label %115 - -115: ; preds = %._crit_edge, %select.unfold50._crit_edge - %indvars.iv89 = phi i64 [ %114, %._crit_edge ], [ %indvars.iv.next90, %select.unfold50._crit_edge ] - %116 = getelementptr inbounds nuw [17 x i32], ptr %4, i64 0, i64 %indvars.iv89 - %117 = load i32, ptr %116, align 4 - %118 = icmp slt i32 %117, 0 - br i1 %118, label %select.unfold50._crit_edge, label %select.unfold50 - -select.unfold50: ; preds = %115, %select.unfold50 - %.pn97.in = phi i32 [ %124, %select.unfold50 ], [ %117, %115 ] + %112 = phi i16 [ %.pre, %._crit_edge.loopexit ], [ %91, %.split63.us ] + store i32 0, ptr %92, align 4 + %113 = zext i16 %112 to i64 + br label %114 + +114: ; preds = %._crit_edge, %select.unfold50._crit_edge + %indvars.iv89 = phi i64 [ %113, %._crit_edge ], [ %indvars.iv.next90, %select.unfold50._crit_edge ] + %115 = getelementptr inbounds nuw [17 x i32], ptr %4, i64 0, i64 %indvars.iv89 + %116 = load i32, ptr %115, align 4 + %117 = icmp slt i32 %116, 0 + br i1 %117, label %select.unfold50._crit_edge, label %select.unfold50 + +select.unfold50: ; preds = %114, %select.unfold50 + %.pn97.in = phi i32 [ %123, %select.unfold50 ], [ %116, %114 ] %.pn97 = zext nneg i32 %.pn97.in to i64 %.14570 = getelementptr inbounds nuw %struct.Kf_Cut_t_, ptr %5, i64 %.pn97 - %119 = load i32, ptr %93, align 4 - %120 = add nsw i32 %119, 1 - store i32 %120, ptr %93, align 4 - %121 = sext i32 %119 to i64 - %122 = getelementptr inbounds [32 x ptr], ptr %7, i64 0, i64 %121 - store ptr %.14570, ptr %122, align 8 - %123 = getelementptr inbounds nuw i8, ptr %.14570, i64 24 - %124 = load i32, ptr %123, align 8 - %125 = icmp slt i32 %124, 0 - br i1 %125, label %select.unfold50._crit_edge, label %select.unfold50 - -select.unfold50._crit_edge: ; preds = %select.unfold50, %115 + %118 = load i32, ptr %92, align 4 + %119 = add nsw i32 %118, 1 + store i32 %119, ptr %92, align 4 + %120 = sext i32 %118 to i64 + %121 = getelementptr inbounds [32 x ptr], ptr %7, i64 0, i64 %120 + store ptr %.14570, ptr %121, align 8 + %122 = getelementptr inbounds nuw i8, ptr %.14570, i64 24 + %123 = load i32, ptr %122, align 8 + %124 = icmp slt i32 %123, 0 + br i1 %124, label %select.unfold50._crit_edge, label %select.unfold50 + +select.unfold50._crit_edge: ; preds = %select.unfold50, %114 %indvars.iv.next90 = add nsw i64 %indvars.iv89, -1 - %126 = icmp sgt i64 %indvars.iv89, 0 - br i1 %126, label %115, label %127, !llvm.loop !66 + %125 = icmp sgt i64 %indvars.iv89, 0 + br i1 %125, label %114, label %126, !llvm.loop !66 -127: ; preds = %select.unfold50._crit_edge +126: ; preds = %select.unfold50._crit_edge ret void } diff --git a/bench/abc/optimized/sfmLib.c.ll b/bench/abc/optimized/sfmLib.c.ll index 6d4f576b7a0..ca7a32b8a2c 100644 --- a/bench/abc/optimized/sfmLib.c.ll +++ b/bench/abc/optimized/sfmLib.c.ll @@ -3587,8 +3587,7 @@ Abc_TtSwapAdjacent.exit: ; preds = %._crit_edge.us.i, % br i1 %191, label %.lr.ph268.preheader, label %._crit_edge269 .lr.ph268.preheader: ; preds = %184 - %smax = call i32 @llvm.smax.i32(i32 %190, i32 1) - %wide.trip.count314 = zext nneg i32 %smax to i64 + %wide.trip.count314 = zext i32 %190 to i64 br label %.lr.ph268 .lr.ph268: ; preds = %.lr.ph268.preheader, %.lr.ph268 diff --git a/bench/casadi/optimized/sundials_iterative.c.ll b/bench/casadi/optimized/sundials_iterative.c.ll index 7e57e7f123f..a96c52018fe 100644 --- a/bench/casadi/optimized/sundials_iterative.c.ll +++ b/bench/casadi/optimized/sundials_iterative.c.ll @@ -504,76 +504,80 @@ define range(i32 0, -2147483648) i32 @QRsol(i32 noundef %0, ptr nocapture nounde br label %.lr.ph .lr.ph56.preheader: ; preds = %.lr.ph - %6 = zext nneg i32 %0 to i64 + %6 = add nsw i32 %0, -1 + %7 = zext nneg i32 %6 to i64 + %8 = zext nneg i32 %0 to i64 br label %.lr.ph56 .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph - %7 = phi double [ %.pre, %.lr.ph.preheader ], [ %21, %.lr.ph ] + %9 = phi double [ %.pre, %.lr.ph.preheader ], [ %23, %.lr.ph ] %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ] - %8 = shl nuw nsw i64 %indvars.iv, 1 - %9 = getelementptr inbounds nuw double, ptr %2, i64 %8 - %10 = load double, ptr %9, align 8 - %11 = or disjoint i64 %8, 1 - %12 = getelementptr inbounds nuw double, ptr %2, i64 %11 - %13 = load double, ptr %12, align 8 - %14 = getelementptr inbounds nuw double, ptr %3, i64 %indvars.iv + %10 = shl nuw nsw i64 %indvars.iv, 1 + %11 = getelementptr inbounds nuw double, ptr %2, i64 %10 + %12 = load double, ptr %11, align 8 + %13 = or disjoint i64 %10, 1 + %14 = getelementptr inbounds nuw double, ptr %2, i64 %13 + %15 = load double, ptr %14, align 8 + %16 = getelementptr inbounds nuw double, ptr %3, i64 %indvars.iv %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %15 = getelementptr inbounds nuw double, ptr %3, i64 %indvars.iv.next - %16 = load double, ptr %15, align 8 - %17 = fneg double %16 - %18 = fmul double %13, %17 - %19 = tail call double @llvm.fmuladd.f64(double %10, double %7, double %18) - store double %19, ptr %14, align 8 - %20 = fmul double %10, %16 - %21 = tail call double @llvm.fmuladd.f64(double %13, double %7, double %20) - store double %21, ptr %15, align 8 + %17 = getelementptr inbounds nuw double, ptr %3, i64 %indvars.iv.next + %18 = load double, ptr %17, align 8 + %19 = fneg double %18 + %20 = fmul double %15, %19 + %21 = tail call double @llvm.fmuladd.f64(double %12, double %9, double %20) + store double %21, ptr %16, align 8 + %22 = fmul double %12, %18 + %23 = tail call double @llvm.fmuladd.f64(double %15, double %9, double %22) + store double %23, ptr %17, align 8 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %.lr.ph56.preheader, label %.lr.ph, !llvm.loop !14 .loopexit: ; preds = %.lr.ph52 - %22 = icmp sgt i64 %indvars.iv63, 1 - br i1 %22, label %.lr.ph56, label %._crit_edge, !llvm.loop !15 + %24 = icmp sgt i64 %indvars.iv69, 1 + %indvars.iv.next68 = add nsw i64 %indvars.iv67, -1 + br i1 %24, label %.lr.ph56, label %._crit_edge, !llvm.loop !15 .lr.ph56: ; preds = %.lr.ph56.preheader, %.loopexit - %indvars.iv63 = phi i64 [ %6, %.lr.ph56.preheader ], [ %indvars.iv.next64, %.loopexit ] - %indvars.iv.next64 = add nsw i64 %indvars.iv63, -1 - %23 = getelementptr inbounds nuw ptr, ptr %1, i64 %indvars.iv.next64 - %24 = load ptr, ptr %23, align 8 - %25 = getelementptr inbounds nuw double, ptr %24, i64 %indvars.iv.next64 - %26 = load double, ptr %25, align 8 - %27 = fcmp oeq double %26, 0.000000e+00 - br i1 %27, label %._crit_edge.loopexit.split.loop.exit66, label %28 - -28: ; preds = %.lr.ph56 - %29 = getelementptr inbounds nuw double, ptr %3, i64 %indvars.iv.next64 - %30 = load double, ptr %29, align 8 - %31 = fdiv double %30, %26 - store double %31, ptr %29, align 8 - %32 = icmp samesign ugt i64 %indvars.iv63, 1 - br i1 %32, label %.lr.ph52, label %._crit_edge - -.lr.ph52: ; preds = %28, %.lr.ph52 - %indvars.iv60 = phi i64 [ %indvars.iv.next61, %.lr.ph52 ], [ 0, %28 ] - %33 = load double, ptr %29, align 8 - %34 = getelementptr inbounds nuw ptr, ptr %1, i64 %indvars.iv60 - %35 = load ptr, ptr %34, align 8 - %36 = getelementptr inbounds nuw double, ptr %35, i64 %indvars.iv.next64 - %37 = load double, ptr %36, align 8 - %38 = getelementptr inbounds nuw double, ptr %3, i64 %indvars.iv60 + %indvars.iv69 = phi i64 [ %8, %.lr.ph56.preheader ], [ %indvars.iv.next70, %.loopexit ] + %indvars.iv67 = phi i64 [ %7, %.lr.ph56.preheader ], [ %indvars.iv.next68, %.loopexit ] + %indvars.iv.next70 = add nsw i64 %indvars.iv69, -1 + %25 = getelementptr inbounds nuw ptr, ptr %1, i64 %indvars.iv.next70 + %26 = load ptr, ptr %25, align 8 + %27 = getelementptr inbounds nuw double, ptr %26, i64 %indvars.iv.next70 + %28 = load double, ptr %27, align 8 + %29 = fcmp oeq double %28, 0.000000e+00 + br i1 %29, label %._crit_edge.loopexit.split.loop.exit75, label %30 + +30: ; preds = %.lr.ph56 + %31 = getelementptr inbounds nuw double, ptr %3, i64 %indvars.iv.next70 + %32 = load double, ptr %31, align 8 + %33 = fdiv double %32, %28 + store double %33, ptr %31, align 8 + %34 = icmp samesign ugt i64 %indvars.iv69, 1 + br i1 %34, label %.lr.ph52, label %._crit_edge + +.lr.ph52: ; preds = %30, %.lr.ph52 + %indvars.iv60 = phi i64 [ %indvars.iv.next61, %.lr.ph52 ], [ 0, %30 ] + %35 = load double, ptr %31, align 8 + %36 = getelementptr inbounds nuw ptr, ptr %1, i64 %indvars.iv60 + %37 = load ptr, ptr %36, align 8 + %38 = getelementptr inbounds nuw double, ptr %37, i64 %indvars.iv.next70 %39 = load double, ptr %38, align 8 - %40 = fneg double %33 - %41 = tail call double @llvm.fmuladd.f64(double %40, double %37, double %39) - store double %41, ptr %38, align 8 + %40 = getelementptr inbounds nuw double, ptr %3, i64 %indvars.iv60 + %41 = load double, ptr %40, align 8 + %42 = fneg double %35 + %43 = tail call double @llvm.fmuladd.f64(double %42, double %39, double %41) + store double %43, ptr %40, align 8 %indvars.iv.next61 = add nuw nsw i64 %indvars.iv60, 1 - %42 = icmp slt i64 %indvars.iv.next61, %indvars.iv.next64 - br i1 %42, label %.lr.ph52, label %.loopexit, !llvm.loop !16 + %exitcond66.not = icmp eq i64 %indvars.iv.next61, %indvars.iv67 + br i1 %exitcond66.not, label %.loopexit, label %.lr.ph52, !llvm.loop !16 -._crit_edge.loopexit.split.loop.exit66: ; preds = %.lr.ph56 - %43 = trunc nuw nsw i64 %indvars.iv63 to i32 +._crit_edge.loopexit.split.loop.exit75: ; preds = %.lr.ph56 + %44 = trunc nuw nsw i64 %indvars.iv69 to i32 br label %._crit_edge -._crit_edge: ; preds = %28, %.loopexit, %._crit_edge.loopexit.split.loop.exit66, %4 - %.0 = phi i32 [ 0, %4 ], [ %43, %._crit_edge.loopexit.split.loop.exit66 ], [ 0, %.loopexit ], [ 0, %28 ] +._crit_edge: ; preds = %30, %.loopexit, %._crit_edge.loopexit.split.loop.exit75, %4 + %.0 = phi i32 [ 0, %4 ], [ %44, %._crit_edge.loopexit.split.loop.exit75 ], [ 0, %.loopexit ], [ 0, %30 ] ret i32 %.0 } diff --git a/bench/cmake/optimized/archive_read_support_format_lha.c.ll b/bench/cmake/optimized/archive_read_support_format_lha.c.ll index fb39b902f52..a866a7d94b2 100644 --- a/bench/cmake/optimized/archive_read_support_format_lha.c.ll +++ b/bench/cmake/optimized/archive_read_support_format_lha.c.ll @@ -4936,15 +4936,15 @@ define internal fastcc range(i32 0, 2) i32 @lzh_make_huffman_table(ptr nocapture br i1 %108, label %.lr.ph244, label %.loopexit .lr.ph244: ; preds = %104, %.lr.ph244 - %indvars.iv280 = phi i64 [ %109, %.lr.ph244 ], [ %106, %104 ] - %109 = add nsw i64 %indvars.iv280, -16 - %110 = getelementptr inbounds nuw i16, ptr %86, i64 %109 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(32) %110, ptr noundef nonnull align 2 dereferenceable(32) %107, i64 32, i1 false) - %.wide = icmp ugt i64 %109, 15 - br i1 %.wide, label %.lr.ph244, label %.loopexit.loopexit, !llvm.loop !30 + %indvars.iv280 = phi i64 [ %indvars.iv.next281, %.lr.ph244 ], [ %106, %104 ] + %indvars.iv.next281 = add nsw i64 %indvars.iv280, -16 + %109 = getelementptr inbounds nuw i16, ptr %86, i64 %indvars.iv.next281 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 2 dereferenceable(32) %109, ptr noundef nonnull align 2 dereferenceable(32) %107, i64 32, i1 false) + %110 = icmp samesign ugt i64 %indvars.iv.next281, 15 + br i1 %110, label %.lr.ph244, label %.loopexit.loopexit, !llvm.loop !30 .loopexit.loopexit: ; preds = %.lr.ph244 - %111 = trunc nuw i64 %109 to i32 + %111 = trunc nuw nsw i64 %indvars.iv.next281 to i32 br label %.loopexit .loopexit: ; preds = %.loopexit.loopexit, %104, %91 diff --git a/bench/gromacs/optimized/huffman.c.ll b/bench/gromacs/optimized/huffman.c.ll index c120a6a11d5..99ba1533d8e 100644 --- a/bench/gromacs/optimized/huffman.c.ll +++ b/bench/gromacs/optimized/huffman.c.ll @@ -150,7 +150,7 @@ define void @Ptngc_comp_conv_to_huffman(ptr nocapture noundef readonly %0, i32 n br i1 %73, label %.lr.ph390, label %._crit_edge391, !llvm.loop !6 ._crit_edge391: ; preds = %71, %.lr.ph390 - %.0186.lcssa.ph = phi i32 [ %72, %71 ], [ %.0186388, %.lr.ph390 ] + %.0186.lcssa.ph = phi i32 [ 0, %71 ], [ %.0186388, %.lr.ph390 ] %74 = zext i32 %.0186.lcssa.ph to i64 %.not202 = icmp eq i64 %indvars.iv.next470, %74 br i1 %.not202, label %81, label %75 diff --git a/bench/icu/optimized/punycode.ll b/bench/icu/optimized/punycode.ll index e9430142fbf..f41675737e4 100644 --- a/bench/icu/optimized/punycode.ll +++ b/bench/icu/optimized/punycode.ll @@ -650,53 +650,53 @@ for.body.preheader: ; preds = %if.end15 br label %for.body for.body: ; preds = %for.body.preheader, %for.body - %indvars.iv = phi i64 [ %1, %for.body.preheader ], [ %2, %for.body ] - %2 = add nsw i64 %indvars.iv, -1 - %arrayidx = getelementptr inbounds nuw i16, ptr %src, i64 %2 - %3 = load i16, ptr %arrayidx, align 2 - %cmp17 = icmp ne i16 %3, 45 + %indvars.iv = phi i64 [ %1, %for.body.preheader ], [ %indvars.iv.next, %for.body ] + %indvars.iv.next = add nsw i64 %indvars.iv, -1 + %arrayidx = getelementptr inbounds nuw i16, ptr %src, i64 %indvars.iv.next + %2 = load i16, ptr %arrayidx, align 2 + %cmp17 = icmp ne i16 %2, 45 %cmp16 = icmp samesign ugt i64 %indvars.iv, 1 %or.cond2 = and i1 %cmp16, %cmp17 br i1 %or.cond2, label %for.body, label %for.end, !llvm.loop !12 for.end: ; preds = %for.body - %4 = trunc i64 %2 to i32 - %cmp20161 = icmp sgt i32 %4, 0 + %3 = trunc nuw nsw i64 %indvars.iv.next to i32 + %cmp20161 = icmp sgt i64 %indvars.iv, 1 br i1 %cmp20161, label %while.body.lr.ph, label %while.end.thread while.body.lr.ph: ; preds = %for.end %cmp32.not = icmp eq ptr %caseFlags, null - %5 = and i64 %2, 2147483647 - %6 = sext i32 %destCapacity to i64 + %4 = and i64 %indvars.iv.next, 4294967295 + %5 = sext i32 %destCapacity to i64 br i1 %cmp32.not, label %while.body.us, label %while.body while.body.us: ; preds = %while.body.lr.ph, %if.end42.us - %indvars.iv199 = phi i64 [ %indvars.iv.next200, %if.end42.us ], [ %5, %while.body.lr.ph ] - %indvars.iv.next200 = add nsw i64 %indvars.iv199, -1 - %arrayidx23.us = getelementptr inbounds nuw i16, ptr %src, i64 %indvars.iv.next200 - %7 = load i16, ptr %arrayidx23.us, align 2 - %cmp25.us = icmp ult i16 %7, 128 + %indvars.iv198 = phi i64 [ %indvars.iv.next199, %if.end42.us ], [ %4, %while.body.lr.ph ] + %indvars.iv.next199 = add nsw i64 %indvars.iv198, -1 + %arrayidx23.us = getelementptr inbounds nuw i16, ptr %src, i64 %indvars.iv.next199 + %6 = load i16, ptr %arrayidx23.us, align 2 + %cmp25.us = icmp ult i16 %6, 128 br i1 %cmp25.us, label %if.end27.us, label %if.then26 if.end27.us: ; preds = %while.body.us - %cmp28.not.us = icmp sgt i64 %indvars.iv199, %6 + %cmp28.not.us = icmp sgt i64 %indvars.iv198, %5 br i1 %cmp28.not.us, label %if.end42.us, label %if.then29.us if.then29.us: ; preds = %if.end27.us - %arrayidx31.us = getelementptr inbounds nuw i16, ptr %dest, i64 %indvars.iv.next200 - store i16 %7, ptr %arrayidx31.us, align 2 + %arrayidx31.us = getelementptr inbounds nuw i16, ptr %dest, i64 %indvars.iv.next199 + store i16 %6, ptr %arrayidx31.us, align 2 br label %if.end42.us if.end42.us: ; preds = %if.then29.us, %if.end27.us - %cmp20.us = icmp samesign ugt i64 %indvars.iv199, 1 + %cmp20.us = icmp samesign ugt i64 %indvars.iv198, 1 br i1 %cmp20.us, label %while.body.us, label %while.end, !llvm.loop !13 while.body: ; preds = %while.body.lr.ph, %if.end42 - %indvars.iv196 = phi i64 [ %indvars.iv.next197, %if.end42 ], [ %5, %while.body.lr.ph ] - %indvars.iv.next197 = add nsw i64 %indvars.iv196, -1 - %arrayidx23 = getelementptr inbounds nuw i16, ptr %src, i64 %indvars.iv.next197 - %8 = load i16, ptr %arrayidx23, align 2 - %cmp25 = icmp ult i16 %8, 128 + %indvars.iv195 = phi i64 [ %indvars.iv.next196, %if.end42 ], [ %4, %while.body.lr.ph ] + %indvars.iv.next196 = add nsw i64 %indvars.iv195, -1 + %arrayidx23 = getelementptr inbounds nuw i16, ptr %src, i64 %indvars.iv.next196 + %7 = load i16, ptr %arrayidx23, align 2 + %cmp25 = icmp ult i16 %7, 128 br i1 %cmp25, label %if.end27, label %if.then26 if.then26: ; preds = %while.body, %while.body.us @@ -704,48 +704,48 @@ if.then26: ; preds = %while.body, %while. br label %return if.end27: ; preds = %while.body - %cmp28.not = icmp sgt i64 %indvars.iv196, %6 + %cmp28.not = icmp sgt i64 %indvars.iv195, %5 br i1 %cmp28.not, label %if.end42, label %if.then29 if.then29: ; preds = %if.end27 - %arrayidx31 = getelementptr inbounds nuw i16, ptr %dest, i64 %indvars.iv.next197 - store i16 %8, ptr %arrayidx31, align 2 - %9 = add nsw i16 %8, -65 - %10 = icmp ult i16 %9, 26 - %conv38 = zext i1 %10 to i8 - %arrayidx40 = getelementptr inbounds nuw i8, ptr %caseFlags, i64 %indvars.iv.next197 + %arrayidx31 = getelementptr inbounds nuw i16, ptr %dest, i64 %indvars.iv.next196 + store i16 %7, ptr %arrayidx31, align 2 + %8 = add nsw i16 %7, -65 + %9 = icmp ult i16 %8, 26 + %conv38 = zext i1 %9 to i8 + %arrayidx40 = getelementptr inbounds nuw i8, ptr %caseFlags, i64 %indvars.iv.next196 store i8 %conv38, ptr %arrayidx40, align 1 br label %if.end42 if.end42: ; preds = %if.then29, %if.end27 - %cmp20 = icmp samesign ugt i64 %indvars.iv196, 1 + %cmp20 = icmp samesign ugt i64 %indvars.iv195, 1 br i1 %cmp20, label %while.body, label %while.end, !llvm.loop !13 while.end: ; preds = %if.end42, %if.end42.us - %add = add nuw nsw i32 %4, 1 + %add = add nsw i32 %3, 1 br label %while.end.thread while.end.thread: ; preds = %while.end, %if.end15, %for.end - %j.1207212 = phi i32 [ %4, %for.end ], [ %srcLength.addr.0, %if.end15 ], [ %4, %while.end ] - %11 = phi i32 [ 0, %for.end ], [ 0, %if.end15 ], [ %add, %while.end ] - %cmp45172 = icmp slt i32 %11, %srcLength.addr.0 + %j.1206211 = phi i32 [ %3, %for.end ], [ %srcLength.addr.0, %if.end15 ], [ %3, %while.end ] + %10 = phi i32 [ 0, %for.end ], [ 0, %if.end15 ], [ %add, %while.end ] + %cmp45172 = icmp slt i32 %10, %srcLength.addr.0 br i1 %cmp45172, label %for.cond47.preheader.lr.ph, label %for.end218 for.cond47.preheader.lr.ph: ; preds = %while.end.thread %cmp161.not = icmp eq ptr %caseFlags, null - %12 = zext nneg i32 %srcLength.addr.0 to i64 + %11 = zext nneg i32 %srcLength.addr.0 to i64 br label %for.cond47.preheader for.cond47.preheader: ; preds = %for.cond47.preheader.lr.ph, %if.end215 %firstSupplementaryIndex.0180 = phi i32 [ 1000000000, %for.cond47.preheader.lr.ph ], [ %firstSupplementaryIndex.1, %if.end215 ] - %destCPCount.0179 = phi i32 [ %j.1207212, %for.cond47.preheader.lr.ph ], [ %inc82, %if.end215 ] + %destCPCount.0179 = phi i32 [ %j.1206211, %for.cond47.preheader.lr.ph ], [ %inc82, %if.end215 ] %n.0178 = phi i32 [ 128, %for.cond47.preheader.lr.ph ], [ %add93, %if.end215 ] - %destLength.0176 = phi i32 [ %j.1207212, %for.cond47.preheader.lr.ph ], [ %add103, %if.end215 ] - %in.0175 = phi i32 [ %11, %for.cond47.preheader.lr.ph ], [ %15, %if.end215 ] + %destLength.0176 = phi i32 [ %j.1206211, %for.cond47.preheader.lr.ph ], [ %add103, %if.end215 ] + %in.0175 = phi i32 [ %10, %for.cond47.preheader.lr.ph ], [ %14, %if.end215 ] %i.0174 = phi i32 [ 0, %for.cond47.preheader.lr.ph ], [ %inc217, %if.end215 ] %bias.0173 = phi i32 [ 72, %for.cond47.preheader.lr.ph ], [ %add7.i, %if.end215 ] %add65 = add nsw i32 %bias.0173, 26 - %13 = sext i32 %in.0175 to i64 + %12 = sext i32 %in.0175 to i64 br label %if.end50 if.then49: ; preds = %if.end77 @@ -753,23 +753,23 @@ if.then49: ; preds = %if.end77 br label %return if.end50: ; preds = %for.cond47.preheader, %if.end77 - %indvars.iv202 = phi i64 [ %13, %for.cond47.preheader ], [ %indvars.iv.next203, %if.end77 ] + %indvars.iv201 = phi i64 [ %12, %for.cond47.preheader ], [ %indvars.iv.next202, %if.end77 ] %k.0166 = phi i32 [ 36, %for.cond47.preheader ], [ %add80, %if.end77 ] %w.0165 = phi i32 [ 1, %for.cond47.preheader ], [ %mul79, %if.end77 ] %i.1163 = phi i32 [ %i.0174, %for.cond47.preheader ], [ %add61, %if.end77 ] - %indvars.iv.next203 = add nsw i64 %indvars.iv202, 1 - %arrayidx52 = getelementptr inbounds i16, ptr %src, i64 %indvars.iv202 - %14 = load i16, ptr %arrayidx52, align 2 - %conv53 = zext i16 %14 to i32 - %cmp.i137 = icmp ult i16 %14, 91 + %indvars.iv.next202 = add nsw i64 %indvars.iv201, 1 + %arrayidx52 = getelementptr inbounds i16, ptr %src, i64 %indvars.iv201 + %13 = load i16, ptr %arrayidx52, align 2 + %conv53 = zext i16 %13 to i32 + %cmp.i137 = icmp ult i16 %13, 91 br i1 %cmp.i137, label %if.then.i, label %if.else7.i if.then.i: ; preds = %if.end50 - %cmp1.i = icmp samesign ult i16 %14, 58 + %cmp1.i = icmp samesign ult i16 %13, 58 br i1 %cmp1.i, label %if.then2.i, label %if.else5.i if.then2.i: ; preds = %if.then.i - %cmp3.i = icmp samesign ult i16 %14, 48 + %cmp3.i = icmp samesign ult i16 %13, 48 %add.i = add nsw i32 %conv53, -22 br i1 %cmp3.i, label %if.then56, label %if.end57 @@ -778,7 +778,7 @@ if.else5.i: ; preds = %if.then.i br label %_ZL11decodeDigiti.exit if.else7.i: ; preds = %if.end50 - %cmp8.i = icmp ult i16 %14, 123 + %cmp8.i = icmp ult i16 %13, 123 %sub10.i = add nsw i32 %conv53, -97 br i1 %cmp8.i, label %_ZL11decodeDigiti.exit, label %if.then56 @@ -826,12 +826,12 @@ if.then76: ; preds = %if.end72 if.end77: ; preds = %if.end72 %mul79 = mul nsw i32 %sub73, %w.0165 %add80 = add nuw nsw i32 %k.0166, 36 - %cmp48.not = icmp slt i64 %indvars.iv.next203, %12 + %cmp48.not = icmp slt i64 %indvars.iv.next202, %11 br i1 %cmp48.not, label %if.end50, label %if.then49, !llvm.loop !14 for.end81: ; preds = %if.end60 - %arrayidx52.le = getelementptr inbounds i16, ptr %src, i64 %indvars.iv202 - %15 = trunc nsw i64 %indvars.iv.next203 to i32 + %arrayidx52.le = getelementptr inbounds i16, ptr %src, i64 %indvars.iv201 + %14 = trunc nsw i64 %indvars.iv.next202 to i32 %inc82 = add nsw i32 %destCPCount.0179, 1 %sub83 = sub nsw i32 %add61, %i.0174 %cmp84.not = icmp eq i32 %i.0174, 0 @@ -933,15 +933,15 @@ lor.rhs: ; preds = %land.rhs117 land.rhs120: ; preds = %lor.rhs %idxprom121 = sext i32 %codeUnitIndex.1168 to i64 %arrayidx122 = getelementptr inbounds i16, ptr %dest, i64 %idxprom121 - %16 = load i16, ptr %arrayidx122, align 2 - %cmp124.not = icmp eq i16 %16, 0 + %15 = load i16, ptr %arrayidx122, align 2 + %cmp124.not = icmp eq i16 %15, 0 br i1 %cmp124.not, label %if.end149, label %do.body128 do.body128: ; preds = %land.rhs117.do.body128_crit_edge, %land.rhs120 - %17 = phi i16 [ %.pre, %land.rhs117.do.body128_crit_edge ], [ %16, %land.rhs120 ] + %16 = phi i16 [ %.pre, %land.rhs117.do.body128_crit_edge ], [ %15, %land.rhs120 ] %inc129 = add nsw i32 %codeUnitIndex.1168, 1 - %18 = and i16 %17, -1024 - %cmp134 = icmp ne i16 %18, -10240 + %17 = and i16 %16, -1024 + %cmp134 = icmp ne i16 %17, -10240 %cmp136.not = icmp eq i32 %inc129, %destLength.0176 %or.cond134 = select i1 %cmp134, i1 true, i1 %cmp136.not br i1 %or.cond134, label %do.end, label %land.lhs.true137 @@ -949,9 +949,9 @@ do.body128: ; preds = %land.rhs117.do.body land.lhs.true137: ; preds = %do.body128 %idxprom138 = sext i32 %inc129 to i64 %arrayidx139 = getelementptr inbounds i16, ptr %dest, i64 %idxprom138 - %19 = load i16, ptr %arrayidx139, align 2 - %20 = and i16 %19, -1024 - %cmp142 = icmp eq i16 %20, -9216 + %18 = load i16, ptr %arrayidx139, align 2 + %19 = and i16 %18, -1024 + %cmp142 = icmp eq i16 %19, -9216 %inc144 = add nsw i32 %codeUnitIndex.1168, 2 %spec.select135 = select i1 %cmp142, i32 %inc144, i32 %inc129 br label %do.end @@ -977,19 +977,19 @@ do.body152: ; preds = %if.end149 %mul158 = shl nsw i32 %sub157, 1 %conv159 = sext i32 %mul158 to i64 tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 2 %add.ptr154, ptr nonnull align 2 %add.ptr, i64 %conv159, i1 false) - br i1 %cmp161.not, label %if.end174.thread220, label %if.end174.thread + br i1 %cmp161.not, label %if.end174.thread219, label %if.end174.thread if.end174: ; preds = %if.end149 br i1 %cmp99, label %if.end190, label %if.end190.thread -if.end174.thread220: ; preds = %do.body152 - br i1 %cmp99, label %if.end190, label %if.end190.thread.thread221 +if.end174.thread219: ; preds = %do.body152 + br i1 %cmp99, label %if.end190, label %if.end190.thread.thread220 -if.end190.thread.thread221: ; preds = %if.end174.thread220 - %conv177222 = trunc nuw i32 %add93 to i16 - %idxprom178223 = sext i32 %codeUnitIndex.0 to i64 - %arrayidx179224 = getelementptr inbounds i16, ptr %dest, i64 %idxprom178223 - store i16 %conv177222, ptr %arrayidx179224, align 2 +if.end190.thread.thread220: ; preds = %if.end174.thread219 + %conv177221 = trunc nuw i32 %add93 to i16 + %idxprom178222 = sext i32 %codeUnitIndex.0 to i64 + %arrayidx179223 = getelementptr inbounds i16, ptr %dest, i64 %idxprom178222 + store i16 %conv177221, ptr %arrayidx179223, align 2 br label %if.end215 if.end174.thread: ; preds = %do.body152 @@ -1000,22 +1000,22 @@ if.end174.thread: ; preds = %do.body152 br i1 %cmp99, label %if.end190, label %if.end190.thread.thread if.end190.thread.thread: ; preds = %if.end174.thread - %conv177217 = trunc nuw i32 %add93 to i16 - %idxprom178218 = sext i32 %codeUnitIndex.0 to i64 - %arrayidx179219 = getelementptr inbounds i16, ptr %dest, i64 %idxprom178218 - store i16 %conv177217, ptr %arrayidx179219, align 2 + %conv177216 = trunc nuw i32 %add93 to i16 + %idxprom178217 = sext i32 %codeUnitIndex.0 to i64 + %arrayidx179218 = getelementptr inbounds i16, ptr %dest, i64 %idxprom178217 + store i16 %conv177216, ptr %arrayidx179218, align 2 br label %if.then192.thread -if.end190: ; preds = %if.end174.thread220, %if.end174.thread, %if.end174 +if.end190: ; preds = %if.end174.thread219, %if.end174.thread, %if.end174 %shr = lshr i32 %add93, 10 - %21 = trunc i32 %shr to i16 - %conv182 = add i16 %21, -10304 + %20 = trunc i32 %shr to i16 + %conv182 = add i16 %20, -10304 %idxprom183 = sext i32 %codeUnitIndex.0 to i64 %arrayidx184 = getelementptr inbounds i16, ptr %dest, i64 %idxprom183 store i16 %conv182, ptr %arrayidx184, align 2 - %22 = trunc i32 %add93 to i16 - %23 = and i16 %22, 1023 - %conv186 = or disjoint i16 %23, -9216 + %21 = trunc i32 %add93 to i16 + %22 = and i16 %21, 1023 + %conv186 = or disjoint i16 %22, -9216 %arrayidx189 = getelementptr i8, ptr %arrayidx184, i64 2 store i16 %conv186, ptr %arrayidx189, align 2 br i1 %cmp161.not, label %if.end215, label %if.then192 @@ -1028,19 +1028,19 @@ if.end190.thread: ; preds = %if.end174 br i1 %cmp161.not, label %if.end215, label %if.then192.thread if.then192.thread: ; preds = %if.end190.thread.thread, %if.end190.thread - %24 = load i16, ptr %arrayidx52.le, align 2 - %25 = add i16 %24, -65 - %narrow213 = icmp ult i16 %25, 26 - %conv205214 = zext i1 %narrow213 to i8 - %idxprom206215 = sext i32 %codeUnitIndex.0 to i64 - %arrayidx207216 = getelementptr inbounds i8, ptr %caseFlags, i64 %idxprom206215 - store i8 %conv205214, ptr %arrayidx207216, align 1 + %23 = load i16, ptr %arrayidx52.le, align 2 + %24 = add i16 %23, -65 + %narrow212 = icmp ult i16 %24, 26 + %conv205213 = zext i1 %narrow212 to i8 + %idxprom206214 = sext i32 %codeUnitIndex.0 to i64 + %arrayidx207215 = getelementptr inbounds i8, ptr %caseFlags, i64 %idxprom206214 + store i8 %conv205213, ptr %arrayidx207215, align 1 br label %if.end215 if.then192: ; preds = %if.end190 - %26 = load i16, ptr %arrayidx52.le, align 2 - %27 = add i16 %26, -65 - %narrow = icmp ult i16 %27, 26 + %25 = load i16, ptr %arrayidx52.le, align 2 + %26 = add i16 %25, -65 + %narrow = icmp ult i16 %26, 26 %conv205 = zext i1 %narrow to i8 %idxprom206 = sext i32 %codeUnitIndex.0 to i64 %arrayidx207 = getelementptr inbounds i8, ptr %caseFlags, i64 %idxprom206 @@ -1052,14 +1052,14 @@ if.then209: ; preds = %if.then192 store i8 0, ptr %arrayidx212, align 1 br label %if.end215 -if.end215: ; preds = %if.end190.thread.thread221, %if.then192.thread, %if.end190.thread, %if.end190, %if.then209, %if.then192, %if.end98 - %firstSupplementaryIndex.1 = phi i32 [ %firstSupplementaryIndex.2, %if.then209 ], [ %firstSupplementaryIndex.2, %if.then192 ], [ %firstSupplementaryIndex.2, %if.end190 ], [ %firstSupplementaryIndex.0180, %if.end98 ], [ %firstSupplementaryIndex.2, %if.end190.thread ], [ %firstSupplementaryIndex.2, %if.then192.thread ], [ %firstSupplementaryIndex.2, %if.end190.thread.thread221 ] +if.end215: ; preds = %if.end190.thread.thread220, %if.then192.thread, %if.end190.thread, %if.end190, %if.then209, %if.then192, %if.end98 + %firstSupplementaryIndex.1 = phi i32 [ %firstSupplementaryIndex.2, %if.then209 ], [ %firstSupplementaryIndex.2, %if.then192 ], [ %firstSupplementaryIndex.2, %if.end190 ], [ %firstSupplementaryIndex.0180, %if.end98 ], [ %firstSupplementaryIndex.2, %if.end190.thread ], [ %firstSupplementaryIndex.2, %if.then192.thread ], [ %firstSupplementaryIndex.2, %if.end190.thread.thread220 ] %inc217 = add nsw i32 %rem, 1 - %cmp45 = icmp sgt i32 %srcLength.addr.0, %15 + %cmp45 = icmp sgt i32 %srcLength.addr.0, %14 br i1 %cmp45, label %for.cond47.preheader, label %for.end218, !llvm.loop !16 for.end218: ; preds = %if.end215, %while.end.thread - %destLength.0.lcssa = phi i32 [ %j.1207212, %while.end.thread ], [ %add103, %if.end215 ] + %destLength.0.lcssa = phi i32 [ %j.1206211, %while.end.thread ], [ %add103, %if.end215 ] %call219 = tail call i32 @u_terminateUChars_75(ptr noundef %dest, i32 noundef %destCapacity, i32 noundef %destLength.0.lcssa, ptr noundef nonnull %pErrorCode) br label %return diff --git a/bench/libwebp/optimized/huffman_encode_utils.c.ll b/bench/libwebp/optimized/huffman_encode_utils.c.ll index d47b48a884b..51fddc52f02 100644 --- a/bench/libwebp/optimized/huffman_encode_utils.c.ll +++ b/bench/libwebp/optimized/huffman_encode_utils.c.ll @@ -11,23 +11,23 @@ target triple = "x86_64-pc-linux-gnu" define hidden i32 @VP8LCreateCompressedHuffmanTree(ptr nocapture noundef readonly %0, ptr noundef %1, i32 noundef %2) local_unnamed_addr #0 { %4 = load i32, ptr %0, align 8 %5 = icmp sgt i32 %4, 0 - br i1 %5, label %.lr.ph62, label %._crit_edge + br i1 %5, label %.lr.ph60, label %._crit_edge -.lr.ph62: ; preds = %3 +.lr.ph60: ; preds = %3 %6 = getelementptr inbounds nuw i8, ptr %0, i64 8 %7 = zext nneg i32 %4 to i64 br label %8 -8: ; preds = %.lr.ph62, %CodeRepeatedZeros.exit - %.061 = phi ptr [ %1, %.lr.ph62 ], [ %.1, %CodeRepeatedZeros.exit ] - %.02960 = phi i32 [ 8, %.lr.ph62 ], [ %.130, %CodeRepeatedZeros.exit ] - %.03159 = phi i32 [ 0, %.lr.ph62 ], [ %.028.lcssa, %CodeRepeatedZeros.exit ] +8: ; preds = %.lr.ph60, %CodeRepeatedZeros.exit + %.059 = phi ptr [ %1, %.lr.ph60 ], [ %.1, %CodeRepeatedZeros.exit ] + %.02958 = phi i32 [ 8, %.lr.ph60 ], [ %.130, %CodeRepeatedZeros.exit ] + %.03157 = phi i32 [ 0, %.lr.ph60 ], [ %.028.lcssa, %CodeRepeatedZeros.exit ] %9 = load ptr, ptr %6, align 8 - %10 = sext i32 %.03159 to i64 + %10 = sext i32 %.03157 to i64 %11 = getelementptr inbounds i8, ptr %9, i64 %10 %12 = load i8, ptr %11, align 1 %13 = zext i8 %12 to i32 - %14 = add nsw i32 %.03159, 1 + %14 = add nsw i32 %.03157, 1 %smax = tail call i32 @llvm.smax.i32(i32 %4, i32 %14) br label %15 @@ -41,17 +41,17 @@ define hidden i32 @VP8LCreateCompressedHuffmanTree(ptr nocapture noundef readonl %18 = getelementptr inbounds i8, ptr %9, i64 %indvars.iv.next %19 = load i8, ptr %18, align 1 %20 = icmp eq i8 %19, %12 - br i1 %20, label %15, label %.critedge.split.loop.exit81, !llvm.loop !4 + br i1 %20, label %15, label %.critedge.split.loop.exit84, !llvm.loop !4 -.critedge.split.loop.exit81: ; preds = %17 +.critedge.split.loop.exit84: ; preds = %17 %21 = trunc nsw i64 %indvars.iv.next to i32 br label %.critedge -.critedge: ; preds = %15, %.critedge.split.loop.exit81 - %.028.lcssa = phi i32 [ %21, %.critedge.split.loop.exit81 ], [ %smax, %15 ] - %22 = sub i32 %.028.lcssa, %.03159 +.critedge: ; preds = %15, %.critedge.split.loop.exit84 + %.028.lcssa = phi i32 [ %21, %.critedge.split.loop.exit84 ], [ %smax, %15 ] + %22 = sub nsw i32 %.028.lcssa, %.03157 %23 = icmp eq i8 %12, 0 - br i1 %23, label %24, label %53 + br i1 %23, label %24, label %48 24: ; preds = %.critedge %25 = icmp sgt i32 %22, 0 @@ -60,149 +60,137 @@ define hidden i32 @VP8LCreateCompressedHuffmanTree(ptr nocapture noundef readonl .lr.ph.preheader.i: ; preds = %24 %26 = add nsw i32 %22, -1 %27 = urem i32 %26, 138 - %28 = udiv i32 %26, 138 - %29 = zext nneg i32 %26 to i64 - %30 = shl nuw nsw i64 %29, 1 - %31 = getelementptr i8, ptr %.061, i64 %30 - %scevgep.i = getelementptr i8, ptr %31, i64 2 - %32 = icmp samesign ult i32 %22, 3 - br i1 %32, label %.lr.ph35.preheader.i, label %.lr.ph55.preheader - -.lr.ph55.preheader: ; preds = %.lr.ph.preheader.i - %wide.trip.count = zext nneg i32 %28 to i64 - br label %.lr.ph55 + %28 = icmp samesign ult i32 %22, 3 + br i1 %28, label %.lr.ph35.preheader.i, label %.lr.ph53 .lr.ph35.preheader.i.loopexit: ; preds = %.lr.ph.i - %33 = mul nsw i64 %indvar.next.i, -276 + %.pre = add nsw i32 %.02331.i51, -139 br label %.lr.ph35.preheader.i .lr.ph35.preheader.i: ; preds = %.lr.ph35.preheader.i.loopexit, %.lr.ph.preheader.i - %indvars.iv.i.lcssa = phi ptr [ %scevgep.i, %.lr.ph.preheader.i ], [ %scevgep47.i, %.lr.ph35.preheader.i.loopexit ] - %indvar.i.lcssa = phi i64 [ 0, %.lr.ph.preheader.i ], [ %33, %.lr.ph35.preheader.i.loopexit ] - %.02232.i.lcssa = phi ptr [ %.061, %.lr.ph.preheader.i ], [ %50, %.lr.ph35.preheader.i.loopexit ] - %34 = shl nuw i32 %22, 1 - %35 = zext i32 %34 to i64 - %36 = add i64 %indvar.i.lcssa, %35 - tail call void @llvm.memset.p0.i64(ptr align 1 %.02232.i.lcssa, i8 0, i64 %36, i1 false) + %.pre-phi = phi i32 [ %.pre, %.lr.ph35.preheader.i.loopexit ], [ %26, %.lr.ph.preheader.i ] + %.02232.i.lcssa = phi ptr [ %indvars.iv.i52, %.lr.ph35.preheader.i.loopexit ], [ %.059, %.lr.ph.preheader.i ] + %.02331.i.lcssa = phi i32 [ %46, %.lr.ph35.preheader.i.loopexit ], [ %22, %.lr.ph.preheader.i ] + %29 = getelementptr i8, ptr %.02232.i.lcssa, i64 2 + %30 = shl nuw nsw i32 %.02331.i.lcssa, 1 + %31 = zext nneg i32 %30 to i64 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.02232.i.lcssa, i8 0, i64 %31, i1 false) + %32 = zext nneg i32 %.pre-phi to i64 + %33 = shl nuw nsw i64 %32, 1 + %scevgep53.i = getelementptr i8, ptr %29, i64 %33 br label %CodeRepeatedZeros.exit -.lr.ph55: ; preds = %.lr.ph55.preheader, %.lr.ph.i - %.02331.i54 = phi i32 [ %51, %.lr.ph.i ], [ %22, %.lr.ph55.preheader ] - %.02232.i53 = phi ptr [ %50, %.lr.ph.i ], [ %.061, %.lr.ph55.preheader ] - %indvar.i52 = phi i64 [ %indvar.next.i, %.lr.ph.i ], [ 0, %.lr.ph55.preheader ] - %indvars.iv.i51 = phi ptr [ %scevgep47.i, %.lr.ph.i ], [ %scevgep.i, %.lr.ph55.preheader ] - %37 = icmp samesign ult i32 %.02331.i54, 11 - br i1 %37, label %38, label %43 - -38: ; preds = %.lr.ph55 - store i8 17, ptr %.02232.i53, align 1 - %39 = trunc nuw i32 %.02331.i54 to i8 - %40 = add nsw i8 %39, -3 - %41 = getelementptr inbounds nuw i8, ptr %.02232.i53, i64 1 - store i8 %40, ptr %41, align 1 - %42 = getelementptr inbounds nuw i8, ptr %.02232.i53, i64 2 +.lr.ph53: ; preds = %.lr.ph.preheader.i, %.lr.ph.i + %indvars.iv.i52.pn = phi ptr [ %indvars.iv.i52, %.lr.ph.i ], [ %.059, %.lr.ph.preheader.i ] + %.02331.i51 = phi i32 [ %46, %.lr.ph.i ], [ %22, %.lr.ph.preheader.i ] + %indvars.iv.i52 = getelementptr i8, ptr %indvars.iv.i52.pn, i64 2 + %34 = icmp samesign ult i32 %.02331.i51, 11 + br i1 %34, label %35, label %39 + +35: ; preds = %.lr.ph53 + store i8 17, ptr %indvars.iv.i52.pn, align 1 + %36 = trunc nuw i32 %.02331.i51 to i8 + %37 = add nsw i8 %36, -3 + %38 = getelementptr inbounds nuw i8, ptr %indvars.iv.i52.pn, i64 1 + store i8 %37, ptr %38, align 1 br label %CodeRepeatedZeros.exit -43: ; preds = %.lr.ph55 - %exitcond = icmp eq i64 %indvar.i52, %wide.trip.count - store i8 18, ptr %.02232.i53, align 1 - br i1 %exitcond, label %44, label %.lr.ph.i - -44: ; preds = %43 - %45 = trunc nuw i32 %27 to i8 - %46 = add i8 %45, -10 - %47 = getelementptr inbounds nuw i8, ptr %.02232.i53, i64 1 - store i8 %46, ptr %47, align 1 - %48 = getelementptr inbounds nuw i8, ptr %.02232.i53, i64 2 +39: ; preds = %.lr.ph53 + %40 = icmp samesign ult i32 %.02331.i51, 139 + store i8 18, ptr %indvars.iv.i52.pn, align 1 + br i1 %40, label %41, label %.lr.ph.i + +41: ; preds = %39 + %42 = trunc nuw i32 %27 to i8 + %43 = add i8 %42, -10 + %44 = getelementptr inbounds nuw i8, ptr %indvars.iv.i52.pn, i64 1 + store i8 %43, ptr %44, align 1 br label %CodeRepeatedZeros.exit -.lr.ph.i: ; preds = %43 - %49 = getelementptr inbounds nuw i8, ptr %.02232.i53, i64 1 - store i8 127, ptr %49, align 1 - %50 = getelementptr i8, ptr %.02232.i53, i64 2 - %51 = add nsw i32 %.02331.i54, -138 - %indvar.next.i = add nuw nsw i64 %indvar.i52, 1 - %scevgep47.i = getelementptr i8, ptr %indvars.iv.i51, i64 -274 - %52 = icmp samesign ult i32 %51, 3 - br i1 %52, label %.lr.ph35.preheader.i.loopexit, label %.lr.ph55 - -53: ; preds = %.critedge - %.not.i = icmp eq i32 %.02960, %13 - br i1 %.not.i, label %58, label %54 - -54: ; preds = %53 - store i8 %12, ptr %.061, align 1 - %55 = getelementptr inbounds nuw i8, ptr %.061, i64 1 - store i8 0, ptr %55, align 1 - %56 = getelementptr inbounds nuw i8, ptr %.061, i64 2 - %57 = add nsw i32 %22, -1 - br label %58 - -58: ; preds = %54, %53 - %.026.i = phi ptr [ %56, %54 ], [ %.061, %53 ] - %.025.i = phi i32 [ %57, %54 ], [ %22, %53 ] - %59 = icmp sgt i32 %.025.i, 0 - br i1 %59, label %.lr.ph.preheader.i34, label %CodeRepeatedZeros.exit - -.lr.ph.preheader.i34: ; preds = %58 - %60 = add nsw i32 %.025.i, -1 - %61 = urem i32 %60, 6 - %62 = icmp samesign ult i32 %.025.i, 3 - br i1 %62, label %.lr.ph38.i.preheader, label %.lr.ph +.lr.ph.i: ; preds = %39 + %45 = getelementptr inbounds nuw i8, ptr %indvars.iv.i52.pn, i64 1 + store i8 127, ptr %45, align 1 + %46 = add nsw i32 %.02331.i51, -138 + %47 = icmp samesign ult i32 %46, 3 + br i1 %47, label %.lr.ph35.preheader.i.loopexit, label %.lr.ph53 + +48: ; preds = %.critedge + %.not.i = icmp eq i32 %.02958, %13 + br i1 %.not.i, label %53, label %49 + +49: ; preds = %48 + store i8 %12, ptr %.059, align 1 + %50 = getelementptr inbounds nuw i8, ptr %.059, i64 1 + store i8 0, ptr %50, align 1 + %51 = getelementptr inbounds nuw i8, ptr %.059, i64 2 + %52 = add nsw i32 %22, -1 + br label %53 + +53: ; preds = %49, %48 + %.026.i = phi ptr [ %51, %49 ], [ %.059, %48 ] + %.025.i = phi i32 [ %52, %49 ], [ %22, %48 ] + %54 = icmp sgt i32 %.025.i, 0 + br i1 %54, label %.lr.ph.preheader.i34, label %CodeRepeatedZeros.exit + +.lr.ph.preheader.i34: ; preds = %53 + %55 = add nsw i32 %.025.i, -1 + %56 = urem i32 %55, 6 + %57 = icmp samesign ult i32 %.025.i, 3 + br i1 %57, label %.lr.ph38.i.preheader, label %.lr.ph .lr.ph38.i.preheader: ; preds = %.lr.ph.i36, %.lr.ph.preheader.i34 - %.135.i.lcssa = phi i32 [ %.025.i, %.lr.ph.preheader.i34 ], [ %74, %.lr.ph.i36 ] - %.12734.i.lcssa = phi ptr [ %.026.i, %.lr.ph.preheader.i34 ], [ %73, %.lr.ph.i36 ] + %.135.i.lcssa = phi i32 [ %.025.i, %.lr.ph.preheader.i34 ], [ %69, %.lr.ph.i36 ] + %.12734.i.lcssa = phi ptr [ %.026.i, %.lr.ph.preheader.i34 ], [ %68, %.lr.ph.i36 ] br label %.lr.ph38.i .lr.ph38.i: ; preds = %.lr.ph38.i.preheader, %.lr.ph38.i - %.037.i = phi i32 [ %65, %.lr.ph38.i ], [ 0, %.lr.ph38.i.preheader ] - %.336.i = phi ptr [ %64, %.lr.ph38.i ], [ %.12734.i.lcssa, %.lr.ph38.i.preheader ] + %.037.i = phi i32 [ %60, %.lr.ph38.i ], [ 0, %.lr.ph38.i.preheader ] + %.336.i = phi ptr [ %59, %.lr.ph38.i ], [ %.12734.i.lcssa, %.lr.ph38.i.preheader ] store i8 %12, ptr %.336.i, align 1 - %63 = getelementptr inbounds nuw i8, ptr %.336.i, i64 1 - store i8 0, ptr %63, align 1 - %64 = getelementptr inbounds nuw i8, ptr %.336.i, i64 2 - %65 = add nuw nsw i32 %.037.i, 1 - %exitcond.not.i = icmp eq i32 %65, %.135.i.lcssa + %58 = getelementptr inbounds nuw i8, ptr %.336.i, i64 1 + store i8 0, ptr %58, align 1 + %59 = getelementptr inbounds nuw i8, ptr %.336.i, i64 2 + %60 = add nuw nsw i32 %.037.i, 1 + %exitcond.not.i = icmp eq i32 %60, %.135.i.lcssa br i1 %exitcond.not.i, label %CodeRepeatedZeros.exit, label %.lr.ph38.i, !llvm.loop !6 .lr.ph: ; preds = %.lr.ph.preheader.i34, %.lr.ph.i36 - %.12734.i49 = phi ptr [ %73, %.lr.ph.i36 ], [ %.026.i, %.lr.ph.preheader.i34 ] - %.135.i48 = phi i32 [ %74, %.lr.ph.i36 ], [ %.025.i, %.lr.ph.preheader.i34 ] - %66 = icmp samesign ult i32 %.135.i48, 7 - store i8 16, ptr %.12734.i49, align 1 - br i1 %66, label %67, label %.lr.ph.i36 - -67: ; preds = %.lr.ph - %68 = trunc nuw nsw i32 %61 to i8 - %69 = add nsw i8 %68, -2 - %70 = getelementptr inbounds nuw i8, ptr %.12734.i49, i64 1 - store i8 %69, ptr %70, align 1 - %71 = getelementptr inbounds nuw i8, ptr %.12734.i49, i64 2 + %.12734.i47 = phi ptr [ %68, %.lr.ph.i36 ], [ %.026.i, %.lr.ph.preheader.i34 ] + %.135.i46 = phi i32 [ %69, %.lr.ph.i36 ], [ %.025.i, %.lr.ph.preheader.i34 ] + %61 = icmp samesign ult i32 %.135.i46, 7 + store i8 16, ptr %.12734.i47, align 1 + br i1 %61, label %62, label %.lr.ph.i36 + +62: ; preds = %.lr.ph + %63 = trunc nuw nsw i32 %56 to i8 + %64 = add nsw i8 %63, -2 + %65 = getelementptr inbounds nuw i8, ptr %.12734.i47, i64 1 + store i8 %64, ptr %65, align 1 + %66 = getelementptr inbounds nuw i8, ptr %.12734.i47, i64 2 br label %CodeRepeatedZeros.exit .lr.ph.i36: ; preds = %.lr.ph - %72 = getelementptr inbounds nuw i8, ptr %.12734.i49, i64 1 - store i8 3, ptr %72, align 1 - %73 = getelementptr inbounds nuw i8, ptr %.12734.i49, i64 2 - %74 = add nsw i32 %.135.i48, -6 - %75 = icmp samesign ult i32 %74, 3 - br i1 %75, label %.lr.ph38.i.preheader, label %.lr.ph - -CodeRepeatedZeros.exit: ; preds = %.lr.ph38.i, %67, %58, %44, %38, %.lr.ph35.preheader.i, %24 - %.130 = phi i32 [ %.02960, %24 ], [ %.02960, %.lr.ph35.preheader.i ], [ %.02960, %38 ], [ %.02960, %44 ], [ %13, %58 ], [ %13, %67 ], [ %13, %.lr.ph38.i ] - %.1 = phi ptr [ %.061, %24 ], [ %indvars.iv.i.lcssa, %.lr.ph35.preheader.i ], [ %42, %38 ], [ %48, %44 ], [ %.026.i, %58 ], [ %71, %67 ], [ %64, %.lr.ph38.i ] - %76 = icmp slt i32 %.028.lcssa, %4 - br i1 %76, label %8, label %._crit_edge, !llvm.loop !7 + %67 = getelementptr inbounds nuw i8, ptr %.12734.i47, i64 1 + store i8 3, ptr %67, align 1 + %68 = getelementptr inbounds nuw i8, ptr %.12734.i47, i64 2 + %69 = add nsw i32 %.135.i46, -6 + %70 = icmp samesign ult i32 %69, 3 + br i1 %70, label %.lr.ph38.i.preheader, label %.lr.ph + +CodeRepeatedZeros.exit: ; preds = %.lr.ph38.i, %62, %53, %41, %35, %.lr.ph35.preheader.i, %24 + %.130 = phi i32 [ %.02958, %24 ], [ %.02958, %.lr.ph35.preheader.i ], [ %.02958, %35 ], [ %.02958, %41 ], [ %13, %53 ], [ %13, %62 ], [ %13, %.lr.ph38.i ] + %.1 = phi ptr [ %.059, %24 ], [ %scevgep53.i, %.lr.ph35.preheader.i ], [ %indvars.iv.i52, %35 ], [ %indvars.iv.i52, %41 ], [ %.026.i, %53 ], [ %66, %62 ], [ %59, %.lr.ph38.i ] + %71 = icmp slt i32 %.028.lcssa, %4 + br i1 %71, label %8, label %._crit_edge, !llvm.loop !7 ._crit_edge: ; preds = %CodeRepeatedZeros.exit, %3 %.0.lcssa = phi ptr [ %1, %3 ], [ %.1, %CodeRepeatedZeros.exit ] - %77 = ptrtoint ptr %.0.lcssa to i64 - %78 = ptrtoint ptr %1 to i64 - %79 = sub i64 %77, %78 - %80 = lshr exact i64 %79, 1 - %81 = trunc i64 %80 to i32 - ret i32 %81 + %72 = ptrtoint ptr %.0.lcssa to i64 + %73 = ptrtoint ptr %1 to i64 + %74 = sub i64 %72, %73 + %75 = lshr exact i64 %74, 1 + %76 = trunc i64 %75 to i32 + ret i32 %76 } ; Function Attrs: nofree nounwind uwtable diff --git a/bench/linux/optimized/sky2.ll b/bench/linux/optimized/sky2.ll index 7a6c2572f2d..2d75881c635 100644 --- a/bench/linux/optimized/sky2.ll +++ b/bench/linux/optimized/sky2.ll @@ -10683,7 +10683,7 @@ define internal fastcc noundef range(i32 -5, 1) i32 @sky2_rx_map_skb(ptr noundef .thread: ; preds = %22 %23 = getelementptr inbounds nuw i8, ptr %1, i64 8 store i64 -1, ptr %23, align 8 - br label %96 + br label %95 24: ; preds = %22 %25 = load i64, ptr @vmemmap_base, align 8 @@ -10703,7 +10703,7 @@ define internal fastcc noundef range(i32 -5, 1) i32 @sky2_rx_map_skb(ptr noundef %39 = getelementptr inbounds nuw i8, ptr %1, i64 8 store i64 %38, ptr %39, align 8 %40 = icmp eq i64 %38, -1 - br i1 %40, label %96, label %41 + br i1 %40, label %95, label %41 41: ; preds = %24 %42 = getelementptr inbounds nuw i8, ptr %1, i64 16 @@ -10758,45 +10758,45 @@ define internal fastcc noundef range(i32 -5, 1) i32 @sky2_rx_map_skb(ptr noundef br i1 %80, label %54, label %.loopexit3, !llvm.loop !70 .preheader: ; preds = %69, %.preheader - %indvars.iv = phi i64 [ %81, %.preheader ], [ %55, %69 ] - %81 = add nsw i64 %indvars.iv, -1 - %82 = getelementptr [2 x i64], ptr %53, i64 0, i64 %81 - %83 = load i64, ptr %82, align 8 - %84 = load ptr, ptr %43, align 8 - %85 = load i32, ptr %44, align 4 - %86 = zext i32 %85 to i64 - %87 = getelementptr i8, ptr %84, i64 %86 - %.idx = shl nuw nsw i64 %81, 4 - %88 = getelementptr i8, ptr %87, i64 56 - %89 = getelementptr i8, ptr %88, i64 %.idx - %90 = load i32, ptr %89, align 8 - %91 = zext i32 %90 to i64 - tail call void @dma_unmap_page_attrs(ptr noundef nonnull %5, i64 noundef %83, i64 noundef %91, i32 noundef 2, i64 noundef 0) #23 - %92 = icmp samesign ugt i64 %indvars.iv, 1 - br i1 %92, label %.preheader, label %.loopexit, !llvm.loop !71 + %indvars.iv = phi i64 [ %indvars.iv.next, %.preheader ], [ %55, %69 ] + %indvars.iv.next = add nsw i64 %indvars.iv, -1 + %81 = getelementptr [2 x i64], ptr %53, i64 0, i64 %indvars.iv.next + %82 = load i64, ptr %81, align 8 + %83 = load ptr, ptr %43, align 8 + %84 = load i32, ptr %44, align 4 + %85 = zext i32 %84 to i64 + %86 = getelementptr i8, ptr %83, i64 %85 + %.idx = shl nuw nsw i64 %indvars.iv.next, 4 + %87 = getelementptr i8, ptr %86, i64 56 + %88 = getelementptr i8, ptr %87, i64 %.idx + %89 = load i32, ptr %88, align 8 + %90 = zext i32 %89 to i64 + tail call void @dma_unmap_page_attrs(ptr noundef nonnull %5, i64 noundef %82, i64 noundef %90, i32 noundef 2, i64 noundef 0) #23 + %91 = icmp samesign ugt i64 %indvars.iv, 1 + br i1 %91, label %.preheader, label %.loopexit, !llvm.loop !71 .loopexit: ; preds = %.preheader, %69 - %93 = load i64, ptr %39, align 8 - %94 = load i32, ptr %42, align 8 - %95 = zext i32 %94 to i64 - tail call void @dma_unmap_page_attrs(ptr noundef nonnull %5, i64 noundef %93, i64 noundef %95, i32 noundef 2, i64 noundef 0) #23 - br label %96 - -96: ; preds = %.thread, %.loopexit, %24 - %97 = tail call i32 @net_ratelimit() #23 - %98 = icmp eq i32 %97, 0 - br i1 %98, label %.loopexit3, label %99 - -99: ; preds = %96 - %100 = getelementptr inbounds nuw i8, ptr %4, i64 16 - %101 = load ptr, ptr %100, align 8 - %102 = getelementptr inbounds nuw i8, ptr %101, i64 296 - tail call void (ptr, ptr, ...) @_dev_warn(ptr noundef nonnull %5, ptr noundef nonnull @.str.44, ptr noundef nonnull %102) #24 + %92 = load i64, ptr %39, align 8 + %93 = load i32, ptr %42, align 8 + %94 = zext i32 %93 to i64 + tail call void @dma_unmap_page_attrs(ptr noundef nonnull %5, i64 noundef %92, i64 noundef %94, i32 noundef 2, i64 noundef 0) #23 + br label %95 + +95: ; preds = %.thread, %.loopexit, %24 + %96 = tail call i32 @net_ratelimit() #23 + %97 = icmp eq i32 %96, 0 + br i1 %97, label %.loopexit3, label %98 + +98: ; preds = %95 + %99 = getelementptr inbounds nuw i8, ptr %4, i64 16 + %100 = load ptr, ptr %99, align 8 + %101 = getelementptr inbounds nuw i8, ptr %100, i64 296 + tail call void (ptr, ptr, ...) @_dev_warn(ptr noundef nonnull %5, ptr noundef nonnull @.str.44, ptr noundef nonnull %101) #24 br label %.loopexit3 -.loopexit3: ; preds = %71, %99, %96, %41 - %103 = phi i32 [ -5, %99 ], [ -5, %96 ], [ 0, %41 ], [ 0, %71 ] - ret i32 %103 +.loopexit3: ; preds = %71, %98, %95, %41 + %102 = phi i32 [ -5, %98 ], [ -5, %95 ], [ 0, %41 ], [ 0, %71 ] + ret i32 %102 } ; Function Attrs: null_pointer_is_valid diff --git a/bench/opencv/optimized/einsum_layer.cpp.ll b/bench/opencv/optimized/einsum_layer.cpp.ll index e8dc26a6e16..50c99871031 100644 --- a/bench/opencv/optimized/einsum_layer.cpp.ll +++ b/bench/opencv/optimized/einsum_layer.cpp.ll @@ -833,166 +833,162 @@ _ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i: ; preds = %21 br i1 %46, label %.lr.ph, label %_ZNSt6vectorIiSaIiEED2Ev.exit common.resume: ; preds = %20, %40, %.body, %.body.thread - %common.resume.op = phi { ptr, i32 } [ %.pn45, %40 ], [ %.pn, %20 ], [ %104, %.body ], [ %.pn4988, %.body.thread ] + %common.resume.op = phi { ptr, i32 } [ %.pn45, %40 ], [ %.pn, %20 ], [ %103, %.body ], [ %.pn4988, %.body.thread ] resume { ptr, i32 } %common.resume.op -.lr.ph: ; preds = %_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i - %wide.trip.count = zext nneg i32 %28 to i64 - br label %47 - -47: ; preds = %.lr.ph, %47 - %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %47 ] - %.03968 = phi i32 [ 1, %.lr.ph ], [ %50, %47 ] - %48 = getelementptr inbounds nuw i32, ptr %24, i64 %indvars.iv - %49 = load i32, ptr %48, align 4 - %50 = mul nsw i32 %49, %.03968 +.lr.ph: ; preds = %_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i, %.lr.ph + %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i ] + %.03968 = phi i32 [ %49, %.lr.ph ], [ 1, %_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i ] + %47 = getelementptr inbounds nuw i32, ptr %24, i64 %indvars.iv + %48 = load i32, ptr %47, align 4 + %49 = mul nsw i32 %48, %.03968 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond.not, label %._crit_edge, label %47, !llvm.loop !6 + %exitcond.not = icmp eq i64 %indvars.iv.next, %29 + br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !6 -._crit_edge: ; preds = %47 - %51 = load i32, ptr %30, align 4 - %52 = load i32, ptr %26, align 4 +._crit_edge: ; preds = %.lr.ph + %50 = load i32, ptr %30, align 4 + %51 = load i32, ptr %26, align 4 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %8, i8 0, i64 24, i1 false) - %53 = invoke noalias noundef nonnull dereferenceable(12) ptr @_Znwm(i64 noundef 12) #24 - to label %56 unwind label %54 + %52 = invoke noalias noundef nonnull dereferenceable(12) ptr @_Znwm(i64 noundef 12) #24 + to label %55 unwind label %53 -54: ; preds = %._crit_edge - %55 = landingpad { ptr, i32 } +53: ; preds = %._crit_edge + %54 = landingpad { ptr, i32 } cleanup br label %.body.thread -56: ; preds = %._crit_edge - store ptr %53, ptr %8, align 8 - %57 = getelementptr inbounds nuw i8, ptr %53, i64 12 - %58 = getelementptr inbounds nuw i8, ptr %8, i64 16 - store ptr %57, ptr %58, align 8 - store i32 %50, ptr %53, align 4 - %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %53, i64 4 - store i32 %51, ptr %.sroa.2.0..sroa_idx, align 4 - %.sroa.3.0..sroa_idx = getelementptr inbounds nuw i8, ptr %53, i64 8 - store i32 %52, ptr %.sroa.3.0..sroa_idx, align 4 - %59 = getelementptr inbounds nuw i8, ptr %8, i64 8 - store ptr %57, ptr %59, align 8 +55: ; preds = %._crit_edge + store ptr %52, ptr %8, align 8 + %56 = getelementptr inbounds nuw i8, ptr %52, i64 12 + %57 = getelementptr inbounds nuw i8, ptr %8, i64 16 + store ptr %56, ptr %57, align 8 + store i32 %49, ptr %52, align 4 + %.sroa.2.0..sroa_idx = getelementptr inbounds nuw i8, ptr %52, i64 4 + store i32 %50, ptr %.sroa.2.0..sroa_idx, align 4 + %.sroa.3.0..sroa_idx = getelementptr inbounds nuw i8, ptr %52, i64 8 + store i32 %51, ptr %.sroa.3.0..sroa_idx, align 4 + %58 = getelementptr inbounds nuw i8, ptr %8, i64 8 + store ptr %56, ptr %58, align 8 invoke void @_ZNK2cv3Mat7reshapeEiRKSt6vectorIiSaIiEE(ptr dead_on_unwind nonnull writable sret(%"class.cv::Mat") align 8 %9, ptr noundef nonnull align 8 dereferenceable(96) %1, i32 noundef 1, ptr noundef nonnull align 8 dereferenceable(24) %8) - to label %60 unwind label %65 + to label %59 unwind label %64 -60: ; preds = %56 - %61 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN2cv3MataSEOS0_(ptr noundef nonnull align 8 dereferenceable(96) %1, ptr noundef nonnull align 8 dereferenceable(96) %9) - to label %62 unwind label %67 +59: ; preds = %55 + %60 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN2cv3MataSEOS0_(ptr noundef nonnull align 8 dereferenceable(96) %1, ptr noundef nonnull align 8 dereferenceable(96) %9) + to label %61 unwind label %66 -62: ; preds = %60 +61: ; preds = %59 call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %9) #22 - %63 = load ptr, ptr %8, align 8 - %.not.i.i.i = icmp eq ptr %63, null - br i1 %.not.i.i.i, label %_ZNSt6vectorIiSaIiEED2Ev.exit, label %64 + %62 = load ptr, ptr %8, align 8 + %.not.i.i.i = icmp eq ptr %62, null + br i1 %.not.i.i.i, label %_ZNSt6vectorIiSaIiEED2Ev.exit, label %63 -64: ; preds = %62 - call void @_ZdlPv(ptr noundef nonnull %63) #25 +63: ; preds = %61 + call void @_ZdlPv(ptr noundef nonnull %62) #25 br label %_ZNSt6vectorIiSaIiEED2Ev.exit -65: ; preds = %56 - %66 = landingpad { ptr, i32 } +64: ; preds = %55 + %65 = landingpad { ptr, i32 } cleanup - br label %69 + br label %68 -67: ; preds = %60 - %68 = landingpad { ptr, i32 } +66: ; preds = %59 + %67 = landingpad { ptr, i32 } cleanup call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %9) #22 - br label %69 + br label %68 -69: ; preds = %67, %65 - %.pn47 = phi { ptr, i32 } [ %68, %67 ], [ %66, %65 ] - %70 = load ptr, ptr %8, align 8 - %.not.i.i.i54 = icmp eq ptr %70, null - br i1 %.not.i.i.i54, label %.body.thread, label %71 +68: ; preds = %66, %64 + %.pn47 = phi { ptr, i32 } [ %67, %66 ], [ %65, %64 ] + %69 = load ptr, ptr %8, align 8 + %.not.i.i.i54 = icmp eq ptr %69, null + br i1 %.not.i.i.i54, label %.body.thread, label %70 -71: ; preds = %69 - call void @_ZdlPv(ptr noundef nonnull %70) #25 +70: ; preds = %68 + call void @_ZdlPv(ptr noundef nonnull %69) #25 br label %.body.thread -_ZNSt6vectorIiSaIiEED2Ev.exit: ; preds = %64, %62, %_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i - %72 = load ptr, ptr %22, align 8 - %73 = load i32, ptr %72, align 4 - %74 = getelementptr inbounds nuw i32, ptr %43, i64 %25 - store i32 1, ptr %74, align 4 - %75 = load i32, ptr %1, align 8 - %76 = and i32 %75, 4095 - invoke void @_ZN2cv3MatC1ERKSt6vectorIiSaIiEEi(ptr noundef nonnull align 8 dereferenceable(96) %0, ptr noundef nonnull align 8 dereferenceable(24) %7, i32 noundef %76) - to label %77 unwind label %.body - -77: ; preds = %_ZNSt6vectorIiSaIiEED2Ev.exit - %78 = load i32, ptr %10, align 4 - %79 = load ptr, ptr %22, align 8 - %80 = sext i32 %78 to i64 - %81 = getelementptr i32, ptr %79, i64 %80 - %82 = getelementptr i8, ptr %81, i64 -4 - %83 = load i32, ptr %82, align 4 - %84 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %85 = load ptr, ptr %84, align 8 - %86 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %87 = load ptr, ptr %86, align 8 - %88 = icmp sgt i32 %73, 0 - %89 = icmp sgt i32 %83, 0 - %or.cond = select i1 %88, i1 %89, i1 false +_ZNSt6vectorIiSaIiEED2Ev.exit: ; preds = %63, %61, %_ZNSt12_Vector_baseIiSaIiEE11_M_allocateEm.exit.i.i + %71 = load ptr, ptr %22, align 8 + %72 = load i32, ptr %71, align 4 + %73 = getelementptr inbounds nuw i32, ptr %43, i64 %25 + store i32 1, ptr %73, align 4 + %74 = load i32, ptr %1, align 8 + %75 = and i32 %74, 4095 + invoke void @_ZN2cv3MatC1ERKSt6vectorIiSaIiEEi(ptr noundef nonnull align 8 dereferenceable(96) %0, ptr noundef nonnull align 8 dereferenceable(24) %7, i32 noundef %75) + to label %76 unwind label %.body + +76: ; preds = %_ZNSt6vectorIiSaIiEED2Ev.exit + %77 = load i32, ptr %10, align 4 + %78 = load ptr, ptr %22, align 8 + %79 = sext i32 %77 to i64 + %80 = getelementptr i32, ptr %78, i64 %79 + %81 = getelementptr i8, ptr %80, i64 -4 + %82 = load i32, ptr %81, align 4 + %83 = getelementptr inbounds nuw i8, ptr %1, i64 16 + %84 = load ptr, ptr %83, align 8 + %85 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %86 = load ptr, ptr %85, align 8 + %87 = icmp sgt i32 %72, 0 + %88 = icmp sgt i32 %82, 0 + %or.cond = select i1 %87, i1 %88, i1 false br i1 %or.cond, label %.preheader.us.preheader, label %._crit_edge73 -.preheader.us.preheader: ; preds = %77 - %90 = zext nneg i32 %83 to i64 - %wide.trip.count84 = zext nneg i32 %73 to i64 +.preheader.us.preheader: ; preds = %76 + %89 = zext nneg i32 %82 to i64 + %wide.trip.count84 = zext nneg i32 %72 to i64 br label %.preheader.us .preheader.us: ; preds = %.preheader.us.preheader, %._crit_edge71.us %indvars.iv81 = phi i64 [ 0, %.preheader.us.preheader ], [ %indvars.iv.next82, %._crit_edge71.us ] - %91 = mul nuw nsw i64 %indvars.iv81, %90 - br label %92 - -92: ; preds = %.preheader.us, %92 - %indvars.iv76 = phi i64 [ 0, %.preheader.us ], [ %indvars.iv.next77, %92 ] - %93 = add nuw nsw i64 %indvars.iv76, %91 - %94 = trunc nuw i64 %93 to i32 - %95 = mul i32 %83, %94 - %96 = sext i32 %95 to i64 - %97 = getelementptr float, ptr %85, i64 %indvars.iv76 - %98 = getelementptr float, ptr %97, i64 %96 - %99 = load float, ptr %98, align 4 - %sext = shl i64 %93, 32 - %100 = ashr exact i64 %sext, 30 - %101 = getelementptr inbounds i8, ptr %87, i64 %100 - store float %99, ptr %101, align 4 + %90 = mul nuw nsw i64 %indvars.iv81, %89 + br label %91 + +91: ; preds = %.preheader.us, %91 + %indvars.iv76 = phi i64 [ 0, %.preheader.us ], [ %indvars.iv.next77, %91 ] + %92 = add nuw nsw i64 %indvars.iv76, %90 + %93 = trunc nuw i64 %92 to i32 + %94 = mul i32 %82, %93 + %95 = sext i32 %94 to i64 + %96 = getelementptr float, ptr %84, i64 %indvars.iv76 + %97 = getelementptr float, ptr %96, i64 %95 + %98 = load float, ptr %97, align 4 + %sext = shl i64 %92, 32 + %99 = ashr exact i64 %sext, 30 + %100 = getelementptr inbounds i8, ptr %86, i64 %99 + store float %98, ptr %100, align 4 %indvars.iv.next77 = add nuw nsw i64 %indvars.iv76, 1 - %exitcond80.not = icmp eq i64 %indvars.iv.next77, %90 - br i1 %exitcond80.not, label %._crit_edge71.us, label %92, !llvm.loop !7 + %exitcond80.not = icmp eq i64 %indvars.iv.next77, %89 + br i1 %exitcond80.not, label %._crit_edge71.us, label %91, !llvm.loop !7 -._crit_edge71.us: ; preds = %92 +._crit_edge71.us: ; preds = %91 %indvars.iv.next82 = add nuw nsw i64 %indvars.iv81, 1 %exitcond85.not = icmp eq i64 %indvars.iv.next82, %wide.trip.count84 br i1 %exitcond85.not, label %._crit_edge73, label %.preheader.us, !llvm.loop !8 -._crit_edge73: ; preds = %._crit_edge71.us, %77 - %102 = load ptr, ptr %7, align 8 - %.not.i.i.i57 = icmp eq ptr %102, null - br i1 %.not.i.i.i57, label %_ZNSt6vectorIiSaIiEED2Ev.exit59, label %103 +._crit_edge73: ; preds = %._crit_edge71.us, %76 + %101 = load ptr, ptr %7, align 8 + %.not.i.i.i57 = icmp eq ptr %101, null + br i1 %.not.i.i.i57, label %_ZNSt6vectorIiSaIiEED2Ev.exit59, label %102 -103: ; preds = %._crit_edge73 - call void @_ZdlPv(ptr noundef nonnull %102) #25 +102: ; preds = %._crit_edge73 + call void @_ZdlPv(ptr noundef nonnull %101) #25 br label %_ZNSt6vectorIiSaIiEED2Ev.exit59 -_ZNSt6vectorIiSaIiEED2Ev.exit59: ; preds = %._crit_edge73, %103 +_ZNSt6vectorIiSaIiEED2Ev.exit59: ; preds = %._crit_edge73, %102 ret void .body: ; preds = %_ZNSt6vectorIiSaIiEED2Ev.exit - %104 = landingpad { ptr, i32 } + %103 = landingpad { ptr, i32 } cleanup %.pre = load ptr, ptr %7, align 8 %.not.i.i.i60 = icmp eq ptr %.pre, null br i1 %.not.i.i.i60, label %common.resume, label %.body.thread -.body.thread: ; preds = %71, %69, %54, %.body - %.pn4988 = phi { ptr, i32 } [ %104, %.body ], [ %.pn47, %71 ], [ %.pn47, %69 ], [ %55, %54 ] - %105 = phi ptr [ %.pre, %.body ], [ %43, %71 ], [ %43, %69 ], [ %43, %54 ] - call void @_ZdlPv(ptr noundef nonnull %105) #25 +.body.thread: ; preds = %70, %68, %53, %.body + %.pn4988 = phi { ptr, i32 } [ %103, %.body ], [ %.pn47, %70 ], [ %.pn47, %68 ], [ %54, %53 ] + %104 = phi ptr [ %.pre, %.body ], [ %43, %70 ], [ %43, %68 ], [ %43, %53 ] + call void @_ZdlPv(ptr noundef nonnull %104) #25 br label %common.resume } @@ -15842,9 +15838,6 @@ declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) declare void @llvm.experimental.noalias.scope.decl(metadata) #18 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #16 - ; Function Attrs: nofree nounwind willreturn memory(argmem: read) declare i32 @bcmp(ptr nocapture, ptr nocapture, i64) local_unnamed_addr #19 @@ -15866,6 +15859,9 @@ declare i64 @llvm.umin.i64(i64, i64) #16 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smin.i32(i32, i32) #16 +; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.smax.i32(i32, i32) #16 + attributes #0 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+sse3,+x87" "tune-cpu"="generic" } attributes #1 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+sse3,+x87" "tune-cpu"="generic" } attributes #2 = { nofree nounwind } diff --git a/bench/openexr/optimized/ImfHuf.cpp.ll b/bench/openexr/optimized/ImfHuf.cpp.ll index 39b4981eb07..29b8f91791b 100644 --- a/bench/openexr/optimized/ImfHuf.cpp.ll +++ b/bench/openexr/optimized/ImfHuf.cpp.ll @@ -676,7 +676,7 @@ for.inc35.i.i: ; preds = %if.then.i164.i, %fo _ZN7Imf_3_29AutoArrayIiLi65537EED2Ev.exit177.i: ; preds = %lpad1.i, %lpad.i %.pn.pn.i = phi { ptr, i32 } [ %7, %lpad1.i ], [ %4, %lpad.i ] tail call void @_ZdaPv(ptr noundef nonnull %call.i.i17) #12 - br label %_ZN7Imf_3_29AutoArrayImLi65537EED2Ev.exit97 + br label %_ZN7Imf_3_29AutoArrayImLi65537EED2Ev.exit99 invoke.cont4: ; preds = %for.inc35.i.i call void @llvm.lifetime.end.p0(i64 472, ptr nonnull %n.i.i) @@ -884,20 +884,20 @@ for.body.lr.ph.i: ; preds = %invoke.cont7 br label %for.body.i42 for.body.i42: ; preds = %if.end.i49, %for.body.lr.ph.i - %indvars.iv177.i = phi i64 [ 1, %for.body.lr.ph.i ], [ %indvars.iv.next178.i, %if.end.i49 ] + %indvars.iv174.i = phi i64 [ 1, %for.body.lr.ph.i ], [ %indvars.iv.next175.i, %if.end.i49 ] %s.0.in155.i = phi i16 [ %s.0.in148.i, %for.body.lr.ph.i ], [ %s.0.in.i, %if.end.i49 ] %cs.0153.i = phi i32 [ 0, %for.body.lr.ph.i ], [ %cs.1.i, %if.end.i49 ] %lc.0152.i = phi i32 [ 0, %for.body.lr.ph.i ], [ %lc.1.i51, %if.end.i49 ] %c.0151.i = phi i64 [ 0, %for.body.lr.ph.i ], [ %c.1.i50, %if.end.i49 ] %out.addr.0150.i = phi ptr [ %p.2.i, %for.body.lr.ph.i ], [ %out.addr.1.i, %if.end.i49 ] - %arrayidx1.i = getelementptr inbounds nuw i16, ptr %raw, i64 %indvars.iv177.i + %arrayidx1.i = getelementptr inbounds nuw i16, ptr %raw, i64 %indvars.iv174.i %86 = load i16, ptr %arrayidx1.i, align 2 %cmp3.i43 = icmp eq i16 %s.0.in155.i, %86 %cmp4.i = icmp slt i32 %cs.0153.i, 255 %or.cond.i44 = select i1 %cmp3.i43, i1 %cmp4.i, i1 false - br i1 %or.cond.i44, label %if.then.i58, label %if.else.i45 + br i1 %or.cond.i44, label %if.then.i60, label %if.else.i45 -if.then.i58: ; preds = %for.body.i42 +if.then.i60: ; preds = %for.body.i42 %inc.i = add nsw i32 %cs.0153.i, 1 br label %if.end.i49 @@ -930,35 +930,35 @@ if.then.i.i: ; preds = %if.else.i45 %conv.i.i.i = and i32 %90, 63 %shr.i.i.i.i = lshr i64 %87, 6 %shl.i.i.i.i = shl i64 %c.0151.i, %and.i.i.i - %add.i.i.i.i55 = add nsw i32 %conv.i.i.i, %lc.0152.i + %add.i.i.i.i56 = add nsw i32 %conv.i.i.i, %lc.0152.i %or.i.i.i.i = or i64 %shl.i.i.i.i, %shr.i.i.i.i - %cmp6.i.i.i.i = icmp sgt i32 %add.i.i.i.i55, 7 + %cmp6.i.i.i.i = icmp sgt i32 %add.i.i.i.i56, 7 br i1 %cmp6.i.i.i.i, label %while.body.i.i.i.preheader.i, label %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit.i.i while.body.i.i.i.preheader.i: ; preds = %if.then.i.i - %91 = zext nneg i32 %add.i.i.i.i55 to i64 - br label %while.body.i.i.i.i57 - -while.body.i.i.i.i57: ; preds = %while.body.i.i.i.i57, %while.body.i.i.i.preheader.i - %indvars.iv165.i = phi i64 [ %91, %while.body.i.i.i.preheader.i ], [ %92, %while.body.i.i.i.i57 ] - %out.addr.9.i = phi ptr [ %out.addr.0150.i, %while.body.i.i.i.preheader.i ], [ %incdec.ptr.i.i.i.i, %while.body.i.i.i.i57 ] - %92 = add nsw i64 %indvars.iv165.i, -8 - %shr.i2.i.i.i = lshr i64 %or.i.i.i.i, %92 + %91 = zext nneg i32 %add.i.i.i.i56 to i64 + br label %while.body.i.i.i.i58 + +while.body.i.i.i.i58: ; preds = %while.body.i.i.i.i58, %while.body.i.i.i.preheader.i + %indvars.iv164.i = phi i64 [ %91, %while.body.i.i.i.preheader.i ], [ %indvars.iv.next165.i, %while.body.i.i.i.i58 ] + %out.addr.9.i = phi ptr [ %out.addr.0150.i, %while.body.i.i.i.preheader.i ], [ %incdec.ptr.i.i.i.i, %while.body.i.i.i.i58 ] + %indvars.iv.next165.i = add nsw i64 %indvars.iv164.i, -8 + %shr.i2.i.i.i = lshr i64 %or.i.i.i.i, %indvars.iv.next165.i %conv.i.i.i.i = trunc i64 %shr.i2.i.i.i to i8 %incdec.ptr.i.i.i.i = getelementptr inbounds nuw i8, ptr %out.addr.9.i, i64 1 store i8 %conv.i.i.i.i, ptr %out.addr.9.i, align 1 - %cmp.i.i.i.wide.i = icmp ugt i64 %92, 7 - br i1 %cmp.i.i.i.wide.i, label %while.body.i.i.i.i57, label %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit.i.loopexit.i, !llvm.loop !18 + %cmp.i.i.i.i59 = icmp samesign ugt i64 %indvars.iv.next165.i, 7 + br i1 %cmp.i.i.i.i59, label %while.body.i.i.i.i58, label %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit.i.loopexit.i, !llvm.loop !18 -_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit.i.loopexit.i: ; preds = %while.body.i.i.i.i57 - %93 = trunc nuw i64 %92 to i32 +_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit.i.loopexit.i: ; preds = %while.body.i.i.i.i58 + %92 = trunc nuw nsw i64 %indvars.iv.next165.i to i32 br label %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit.i.i _ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit.i.i: ; preds = %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit.i.loopexit.i, %if.then.i.i %out.addr.5.i = phi ptr [ %out.addr.0150.i, %if.then.i.i ], [ %incdec.ptr.i.i.i.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit.i.loopexit.i ] - %lc.4.i = phi i32 [ %add.i.i.i.i55, %if.then.i.i ], [ %93, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit.i.loopexit.i ] - %94 = trunc i64 %88 to i32 - %conv.i18.i.i = and i32 %94, 63 + %lc.4.i = phi i32 [ %add.i.i.i.i56, %if.then.i.i ], [ %92, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit.i.loopexit.i ] + %93 = trunc i64 %88 to i32 + %conv.i18.i.i = and i32 %93, 63 %shr.i.i19.i.i = lshr i64 %88, 6 %shl.i.i21.i.i = shl i64 %or.i.i.i.i, %and.i16.i.i %add.i.i22.i.i = add nsw i32 %lc.4.i, %conv.i18.i.i @@ -967,25 +967,25 @@ _ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit.i.i: ; preds = %_ZN7Imf_3_21 br i1 %cmp6.i.i24.i.i, label %while.body.i.i25.i.preheader.i, label %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i.i while.body.i.i25.i.preheader.i: ; preds = %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit.i.i - %95 = zext nneg i32 %add.i.i22.i.i to i64 + %94 = zext nneg i32 %add.i.i22.i.i to i64 br label %while.body.i.i25.i.i while.body.i.i25.i.i: ; preds = %while.body.i.i25.i.i, %while.body.i.i25.i.preheader.i - %indvars.iv169.i = phi i64 [ %95, %while.body.i.i25.i.preheader.i ], [ %96, %while.body.i.i25.i.i ] + %indvars.iv167.i = phi i64 [ %94, %while.body.i.i25.i.preheader.i ], [ %indvars.iv.next168.i, %while.body.i.i25.i.i ] %out.addr.8.i = phi ptr [ %out.addr.5.i, %while.body.i.i25.i.preheader.i ], [ %incdec.ptr.i.i30.i.i, %while.body.i.i25.i.i ] - %96 = add nsw i64 %indvars.iv169.i, -8 - %shr.i2.i28.i.i = lshr i64 %or.i.i23.i.i, %96 + %indvars.iv.next168.i = add nsw i64 %indvars.iv167.i, -8 + %shr.i2.i28.i.i = lshr i64 %or.i.i23.i.i, %indvars.iv.next168.i %conv.i.i29.i.i = trunc i64 %shr.i2.i28.i.i to i8 %incdec.ptr.i.i30.i.i = getelementptr inbounds nuw i8, ptr %out.addr.8.i, i64 1 store i8 %conv.i.i29.i.i, ptr %out.addr.8.i, align 1 - %cmp.i.i31.i.wide.i = icmp ugt i64 %96, 7 - br i1 %cmp.i.i31.i.wide.i, label %while.body.i.i25.i.i, label %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i.thread.i, !llvm.loop !18 + %cmp.i.i31.i.i = icmp samesign ugt i64 %indvars.iv.next168.i, 7 + br i1 %cmp.i.i31.i.i, label %while.body.i.i25.i.i, label %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i.thread.i, !llvm.loop !18 _ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i.thread.i: ; preds = %while.body.i.i25.i.i - %97 = trunc nuw i64 %96 to i32 - %shl.i.i197.i = shl i64 %or.i.i23.i.i, 8 - %add.i.i198.i = or disjoint i32 %97, 8 - %or.i.i199.i = or i64 %shl.i.i197.i, %conv.i.i48 + %95 = trunc nuw nsw i64 %indvars.iv.next168.i to i32 + %shl.i.i191.i = shl i64 %or.i.i23.i.i, 8 + %add.i.i192.i = or disjoint i32 %95, 8 + %or.i.i193.i = or i64 %shl.i.i191.i, %conv.i.i48 br label %while.body.i.i.preheader.i _ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i.i: ; preds = %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit.i.i @@ -996,22 +996,22 @@ _ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i.i: ; preds = %_ZN7Imf_3_ br i1 %cmp6.i.i.i, label %while.body.i.i.preheader.i, label %if.end.i49 while.body.i.i.preheader.i: ; preds = %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i.thread.i - %or.i.i203.i = phi i64 [ %or.i.i199.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i.thread.i ], [ %or.i.i.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i.i ] - %add.i.i202.i = phi i32 [ %add.i.i198.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i.thread.i ], [ %add.i.i.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i.i ] - %out.addr.6201.i = phi ptr [ %incdec.ptr.i.i30.i.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i.thread.i ], [ %out.addr.5.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i.i ] - %98 = zext nneg i32 %add.i.i202.i to i64 - br label %while.body.i.i.i56 - -while.body.i.i.i56: ; preds = %while.body.i.i.i56, %while.body.i.i.preheader.i - %indvars.iv173.i = phi i64 [ %98, %while.body.i.i.preheader.i ], [ %99, %while.body.i.i.i56 ] - %out.addr.7.i = phi ptr [ %out.addr.6201.i, %while.body.i.i.preheader.i ], [ %incdec.ptr.i.i.i, %while.body.i.i.i56 ] - %99 = add nsw i64 %indvars.iv173.i, -8 - %shr.i.i.i = lshr i64 %or.i.i203.i, %99 + %or.i.i197.i = phi i64 [ %or.i.i193.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i.thread.i ], [ %or.i.i.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i.i ] + %add.i.i196.i = phi i32 [ %add.i.i192.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i.thread.i ], [ %add.i.i.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i.i ] + %out.addr.6195.i = phi ptr [ %incdec.ptr.i.i30.i.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i.thread.i ], [ %out.addr.5.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i.i ] + %96 = zext nneg i32 %add.i.i196.i to i64 + br label %while.body.i.i.i57 + +while.body.i.i.i57: ; preds = %while.body.i.i.i57, %while.body.i.i.preheader.i + %indvars.iv170.i = phi i64 [ %96, %while.body.i.i.preheader.i ], [ %97, %while.body.i.i.i57 ] + %out.addr.7.i = phi ptr [ %out.addr.6195.i, %while.body.i.i.preheader.i ], [ %incdec.ptr.i.i.i, %while.body.i.i.i57 ] + %97 = add nsw i64 %indvars.iv170.i, -8 + %shr.i.i.i = lshr i64 %or.i.i197.i, %97 %conv.i33.i.i = trunc i64 %shr.i.i.i to i8 %incdec.ptr.i.i.i = getelementptr inbounds nuw i8, ptr %out.addr.7.i, i64 1 store i8 %conv.i33.i.i, ptr %out.addr.7.i, align 1 - %cmp.i.i.wide.i = icmp ugt i64 %99, 7 - br i1 %cmp.i.i.wide.i, label %while.body.i.i.i56, label %if.end.loopexit.i, !llvm.loop !18 + %cmp.i.i.wide.i = icmp ugt i64 %97, 7 + br i1 %cmp.i.i.wide.i, label %while.body.i.i.i57, label %if.end.loopexit.i, !llvm.loop !18 while.body.i.i53: ; preds = %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit48.i.i, %while.body.lr.ph.i.i %out.addr.2.i = phi ptr [ %out.addr.0150.i, %while.body.lr.ph.i.i ], [ %out.addr.3.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit48.i.i ] @@ -1026,42 +1026,42 @@ while.body.i.i53: ; preds = %_ZN7Imf_3_212_GLOBA br i1 %cmp6.i.i40.i.i, label %while.body.i.i41.i.preheader.i, label %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit48.i.i while.body.i.i41.i.preheader.i: ; preds = %while.body.i.i53 - %100 = zext nneg i32 %add.i.i38.i.i to i64 + %98 = zext nneg i32 %add.i.i38.i.i to i64 br label %while.body.i.i41.i.i while.body.i.i41.i.i: ; preds = %while.body.i.i41.i.i, %while.body.i.i41.i.preheader.i - %indvars.iv.i54 = phi i64 [ %100, %while.body.i.i41.i.preheader.i ], [ %101, %while.body.i.i41.i.i ] + %indvars.iv.i54 = phi i64 [ %98, %while.body.i.i41.i.preheader.i ], [ %indvars.iv.next.i55, %while.body.i.i41.i.i ] %out.addr.4.i = phi ptr [ %out.addr.2.i, %while.body.i.i41.i.preheader.i ], [ %incdec.ptr.i.i46.i.i, %while.body.i.i41.i.i ] - %101 = add nsw i64 %indvars.iv.i54, -8 - %shr.i2.i44.i.i = lshr i64 %or.i.i39.i.i, %101 + %indvars.iv.next.i55 = add nsw i64 %indvars.iv.i54, -8 + %shr.i2.i44.i.i = lshr i64 %or.i.i39.i.i, %indvars.iv.next.i55 %conv.i.i45.i.i = trunc i64 %shr.i2.i44.i.i to i8 %incdec.ptr.i.i46.i.i = getelementptr inbounds nuw i8, ptr %out.addr.4.i, i64 1 store i8 %conv.i.i45.i.i, ptr %out.addr.4.i, align 1 - %cmp.i.i47.i.wide.i = icmp ugt i64 %101, 7 - br i1 %cmp.i.i47.i.wide.i, label %while.body.i.i41.i.i, label %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit48.i.loopexit.i, !llvm.loop !18 + %cmp.i.i47.i.i = icmp samesign ugt i64 %indvars.iv.next.i55, 7 + br i1 %cmp.i.i47.i.i, label %while.body.i.i41.i.i, label %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit48.i.loopexit.i, !llvm.loop !18 _ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit48.i.loopexit.i: ; preds = %while.body.i.i41.i.i - %102 = trunc nuw i64 %101 to i32 + %99 = trunc nuw nsw i64 %indvars.iv.next.i55 to i32 br label %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit48.i.i _ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit48.i.i: ; preds = %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit48.i.loopexit.i, %while.body.i.i53 %out.addr.3.i = phi ptr [ %out.addr.2.i, %while.body.i.i53 ], [ %incdec.ptr.i.i46.i.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit48.i.loopexit.i ] - %lc.3.i = phi i32 [ %add.i.i38.i.i, %while.body.i.i53 ], [ %102, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit48.i.loopexit.i ] + %lc.3.i = phi i32 [ %add.i.i38.i.i, %while.body.i.i53 ], [ %99, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit48.i.loopexit.i ] %cmp5.i.i = icmp sgt i32 %runCount.addr.051.i.i, 0 br i1 %cmp5.i.i, label %while.body.i.i53, label %if.end.i49, !llvm.loop !20 -if.end.loopexit.i: ; preds = %while.body.i.i.i56 - %103 = trunc nuw i64 %99 to i32 +if.end.loopexit.i: ; preds = %while.body.i.i.i57 + %100 = trunc nuw i64 %97 to i32 br label %if.end.i49 -if.end.i49: ; preds = %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit48.i.i, %if.end.loopexit.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i.i, %while.cond.preheader.i.i, %if.then.i58 - %out.addr.1.i = phi ptr [ %out.addr.0150.i, %if.then.i58 ], [ %out.addr.5.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i.i ], [ %out.addr.0150.i, %while.cond.preheader.i.i ], [ %incdec.ptr.i.i.i, %if.end.loopexit.i ], [ %out.addr.3.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit48.i.i ] - %c.1.i50 = phi i64 [ %c.0151.i, %if.then.i58 ], [ %or.i.i.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i.i ], [ %c.0151.i, %while.cond.preheader.i.i ], [ %or.i.i203.i, %if.end.loopexit.i ], [ %or.i.i39.i.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit48.i.i ] - %lc.1.i51 = phi i32 [ %lc.0152.i, %if.then.i58 ], [ %add.i.i.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i.i ], [ %lc.0152.i, %while.cond.preheader.i.i ], [ %103, %if.end.loopexit.i ], [ %lc.3.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit48.i.i ] - %cs.1.i = phi i32 [ %inc.i, %if.then.i58 ], [ 0, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i.i ], [ 0, %while.cond.preheader.i.i ], [ 0, %if.end.loopexit.i ], [ 0, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit48.i.i ] - %indvars.iv.next178.i = add nuw nsw i64 %indvars.iv177.i, 1 +if.end.i49: ; preds = %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit48.i.i, %if.end.loopexit.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i.i, %while.cond.preheader.i.i, %if.then.i60 + %out.addr.1.i = phi ptr [ %out.addr.0150.i, %if.then.i60 ], [ %out.addr.5.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i.i ], [ %out.addr.0150.i, %while.cond.preheader.i.i ], [ %incdec.ptr.i.i.i, %if.end.loopexit.i ], [ %out.addr.3.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit48.i.i ] + %c.1.i50 = phi i64 [ %c.0151.i, %if.then.i60 ], [ %or.i.i.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i.i ], [ %c.0151.i, %while.cond.preheader.i.i ], [ %or.i.i197.i, %if.end.loopexit.i ], [ %or.i.i39.i.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit48.i.i ] + %lc.1.i51 = phi i32 [ %lc.0152.i, %if.then.i60 ], [ %add.i.i.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i.i ], [ %lc.0152.i, %while.cond.preheader.i.i ], [ %100, %if.end.loopexit.i ], [ %lc.3.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit48.i.i ] + %cs.1.i = phi i32 [ %inc.i, %if.then.i60 ], [ 0, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i.i ], [ 0, %while.cond.preheader.i.i ], [ 0, %if.end.loopexit.i ], [ 0, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit48.i.i ] + %indvars.iv.next175.i = add nuw nsw i64 %indvars.iv174.i, 1 %s.0.in.i = load i16, ptr %arrayidx1.i, align 2 - %exitcond.not.i52 = icmp eq i64 %indvars.iv.next178.i, %wide.trip.count.i41 + %exitcond.not.i52 = icmp eq i64 %indvars.iv.next175.i, %wide.trip.count.i41 br i1 %exitcond.not.i52, label %for.end.i31, label %for.body.i42, !llvm.loop !21 for.end.i31: ; preds = %if.end.i49, %invoke.cont7 @@ -1072,10 +1072,10 @@ for.end.i31: ; preds = %if.end.i49, %invoke %s.0.in.lcssa.i = phi i16 [ %s.0.in148.i, %invoke.cont7 ], [ %s.0.in.i, %if.end.i49 ] %idxprom13.i = zext i16 %s.0.in.lcssa.i to i64 %arrayidx14.i = getelementptr inbounds nuw i64, ptr %call.i, i64 %idxprom13.i - %104 = load i64, ptr %arrayidx14.i, align 8 - %105 = load i64, ptr %arrayidx18.i, align 8 - %and.i.i15.i = and i64 %104, 63 - %and.i16.i16.i = and i64 %105, 63 + %101 = load i64, ptr %arrayidx14.i, align 8 + %102 = load i64, ptr %arrayidx18.i, align 8 + %and.i.i15.i = and i64 %101, 63 + %and.i16.i16.i = and i64 %102, 63 %add.i17.i32 = add nuw nsw i64 %and.i.i15.i, 8 %add2.i18.i = add nuw nsw i64 %add.i17.i32, %and.i16.i16.i %conv.i19.i = sext i32 %cs.0.lcssa.i to i64 @@ -1088,15 +1088,15 @@ while.cond.preheader.i22.i: ; preds = %for.end.i31 br i1 %cmp550.i23.i, label %while.body.lr.ph.i24.i, label %_ZN7Imf_3_212_GLOBAL__N_18sendCodeEmimRmRiRPc.exit87.i while.body.lr.ph.i24.i: ; preds = %while.cond.preheader.i22.i - %106 = trunc i64 %104 to i32 - %conv.i34.i25.i = and i32 %106, 63 - %shr.i.i35.i26.i = lshr i64 %104, 6 + %103 = trunc i64 %101 to i32 + %conv.i34.i25.i = and i32 %103, 63 + %shr.i.i35.i26.i = lshr i64 %101, 6 br label %while.body.i27.i if.then.i43.i: ; preds = %for.end.i31 - %107 = trunc i64 %104 to i32 - %conv.i.i44.i = and i32 %107, 63 - %shr.i.i.i45.i = lshr i64 %104, 6 + %104 = trunc i64 %101 to i32 + %conv.i.i44.i = and i32 %104, 63 + %shr.i.i.i45.i = lshr i64 %101, 6 %shl.i.i.i46.i = shl i64 %c.0.lcssa.i, %and.i.i15.i %add.i.i.i47.i = add nsw i32 %conv.i.i44.i, %lc.0.lcssa.i %or.i.i.i48.i = or i64 %shl.i.i.i46.i, %shr.i.i.i45.i @@ -1104,30 +1104,30 @@ if.then.i43.i: ; preds = %for.end.i31 br i1 %cmp6.i.i.i49.i, label %while.body.i.i.i78.preheader.i, label %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit.i50.i while.body.i.i.i78.preheader.i: ; preds = %if.then.i43.i - %108 = zext nneg i32 %add.i.i.i47.i to i64 + %105 = zext nneg i32 %add.i.i.i47.i to i64 br label %while.body.i.i.i78.i while.body.i.i.i78.i: ; preds = %while.body.i.i.i78.i, %while.body.i.i.i78.preheader.i - %indvars.iv183.i = phi i64 [ %108, %while.body.i.i.i78.preheader.i ], [ %109, %while.body.i.i.i78.i ] + %indvars.iv179.i = phi i64 [ %105, %while.body.i.i.i78.preheader.i ], [ %indvars.iv.next180.i, %while.body.i.i.i78.i ] %out.addr.18.i = phi ptr [ %out.addr.0.lcssa.i, %while.body.i.i.i78.preheader.i ], [ %incdec.ptr.i.i.i83.i, %while.body.i.i.i78.i ] - %109 = add nsw i64 %indvars.iv183.i, -8 - %shr.i2.i.i81.i = lshr i64 %or.i.i.i48.i, %109 + %indvars.iv.next180.i = add nsw i64 %indvars.iv179.i, -8 + %shr.i2.i.i81.i = lshr i64 %or.i.i.i48.i, %indvars.iv.next180.i %conv.i.i.i82.i = trunc i64 %shr.i2.i.i81.i to i8 %incdec.ptr.i.i.i83.i = getelementptr inbounds nuw i8, ptr %out.addr.18.i, i64 1 store i8 %conv.i.i.i82.i, ptr %out.addr.18.i, align 1 - %cmp.i.i.i84.wide.i = icmp ugt i64 %109, 7 - br i1 %cmp.i.i.i84.wide.i, label %while.body.i.i.i78.i, label %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit.i50.loopexit.i, !llvm.loop !18 + %cmp.i.i.i84.i = icmp samesign ugt i64 %indvars.iv.next180.i, 7 + br i1 %cmp.i.i.i84.i, label %while.body.i.i.i78.i, label %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit.i50.loopexit.i, !llvm.loop !18 _ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit.i50.loopexit.i: ; preds = %while.body.i.i.i78.i - %110 = trunc nuw i64 %109 to i32 + %106 = trunc nuw nsw i64 %indvars.iv.next180.i to i32 br label %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit.i50.i _ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit.i50.i: ; preds = %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit.i50.loopexit.i, %if.then.i43.i %out.addr.14.i = phi ptr [ %out.addr.0.lcssa.i, %if.then.i43.i ], [ %incdec.ptr.i.i.i83.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit.i50.loopexit.i ] - %lc.9.i = phi i32 [ %add.i.i.i47.i, %if.then.i43.i ], [ %110, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit.i50.loopexit.i ] - %111 = trunc i64 %105 to i32 - %conv.i18.i51.i = and i32 %111, 63 - %shr.i.i19.i52.i = lshr i64 %105, 6 + %lc.9.i = phi i32 [ %add.i.i.i47.i, %if.then.i43.i ], [ %106, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit.i50.loopexit.i ] + %107 = trunc i64 %102 to i32 + %conv.i18.i51.i = and i32 %107, 63 + %shr.i.i19.i52.i = lshr i64 %102, 6 %shl.i.i21.i53.i = shl i64 %or.i.i.i48.i, %and.i16.i16.i %add.i.i22.i54.i = add nsw i32 %lc.9.i, %conv.i18.i51.i %or.i.i23.i55.i = or i64 %shl.i.i21.i53.i, %shr.i.i19.i52.i @@ -1135,25 +1135,25 @@ _ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit.i50.i: ; preds = %_ZN7Imf_3_ br i1 %cmp6.i.i24.i56.i, label %while.body.i.i25.i69.preheader.i, label %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i57.i while.body.i.i25.i69.preheader.i: ; preds = %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit.i50.i - %112 = zext nneg i32 %add.i.i22.i54.i to i64 + %108 = zext nneg i32 %add.i.i22.i54.i to i64 br label %while.body.i.i25.i69.i while.body.i.i25.i69.i: ; preds = %while.body.i.i25.i69.i, %while.body.i.i25.i69.preheader.i - %indvars.iv187.i = phi i64 [ %112, %while.body.i.i25.i69.preheader.i ], [ %113, %while.body.i.i25.i69.i ] + %indvars.iv182.i = phi i64 [ %108, %while.body.i.i25.i69.preheader.i ], [ %indvars.iv.next183.i, %while.body.i.i25.i69.i ] %out.addr.17.i = phi ptr [ %out.addr.14.i, %while.body.i.i25.i69.preheader.i ], [ %incdec.ptr.i.i30.i74.i, %while.body.i.i25.i69.i ] - %113 = add nsw i64 %indvars.iv187.i, -8 - %shr.i2.i28.i72.i = lshr i64 %or.i.i23.i55.i, %113 + %indvars.iv.next183.i = add nsw i64 %indvars.iv182.i, -8 + %shr.i2.i28.i72.i = lshr i64 %or.i.i23.i55.i, %indvars.iv.next183.i %conv.i.i29.i73.i = trunc i64 %shr.i2.i28.i72.i to i8 %incdec.ptr.i.i30.i74.i = getelementptr inbounds nuw i8, ptr %out.addr.17.i, i64 1 store i8 %conv.i.i29.i73.i, ptr %out.addr.17.i, align 1 - %cmp.i.i31.i75.wide.i = icmp ugt i64 %113, 7 - br i1 %cmp.i.i31.i75.wide.i, label %while.body.i.i25.i69.i, label %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i57.thread.i, !llvm.loop !18 + %cmp.i.i31.i75.i = icmp samesign ugt i64 %indvars.iv.next183.i, 7 + br i1 %cmp.i.i31.i75.i, label %while.body.i.i25.i69.i, label %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i57.thread.i, !llvm.loop !18 _ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i57.thread.i: ; preds = %while.body.i.i25.i69.i - %114 = trunc nuw i64 %113 to i32 - %shl.i.i58206.i = shl i64 %or.i.i23.i55.i, 8 - %add.i.i59207.i = or disjoint i32 %114, 8 - %or.i.i60208.i = or i64 %shl.i.i58206.i, %conv.i19.i + %109 = trunc nuw nsw i64 %indvars.iv.next183.i to i32 + %shl.i.i58200.i = shl i64 %or.i.i23.i55.i, 8 + %add.i.i59201.i = or disjoint i32 %109, 8 + %or.i.i60202.i = or i64 %shl.i.i58200.i, %conv.i19.i br label %while.body.i.i62.preheader.i _ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i57.i: ; preds = %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit.i50.i @@ -1164,21 +1164,21 @@ _ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i57.i: ; preds = %_ZN7Imf_ br i1 %cmp6.i.i61.i, label %while.body.i.i62.preheader.i, label %_ZN7Imf_3_212_GLOBAL__N_18sendCodeEmimRmRiRPc.exit87.i while.body.i.i62.preheader.i: ; preds = %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i57.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i57.thread.i - %or.i.i60212.i = phi i64 [ %or.i.i60208.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i57.thread.i ], [ %or.i.i60.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i57.i ] - %add.i.i59211.i = phi i32 [ %add.i.i59207.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i57.thread.i ], [ %add.i.i59.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i57.i ] - %out.addr.15210.i = phi ptr [ %incdec.ptr.i.i30.i74.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i57.thread.i ], [ %out.addr.14.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i57.i ] - %115 = zext nneg i32 %add.i.i59211.i to i64 + %or.i.i60206.i = phi i64 [ %or.i.i60202.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i57.thread.i ], [ %or.i.i60.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i57.i ] + %add.i.i59205.i = phi i32 [ %add.i.i59201.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i57.thread.i ], [ %add.i.i59.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i57.i ] + %out.addr.15204.i = phi ptr [ %incdec.ptr.i.i30.i74.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i57.thread.i ], [ %out.addr.14.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i57.i ] + %110 = zext nneg i32 %add.i.i59205.i to i64 br label %while.body.i.i62.i while.body.i.i62.i: ; preds = %while.body.i.i62.i, %while.body.i.i62.preheader.i - %indvars.iv191.i = phi i64 [ %115, %while.body.i.i62.preheader.i ], [ %116, %while.body.i.i62.i ] - %out.addr.16.i = phi ptr [ %out.addr.15210.i, %while.body.i.i62.preheader.i ], [ %incdec.ptr.i.i67.i, %while.body.i.i62.i ] - %116 = add nsw i64 %indvars.iv191.i, -8 - %shr.i.i65.i = lshr i64 %or.i.i60212.i, %116 + %indvars.iv185.i = phi i64 [ %110, %while.body.i.i62.preheader.i ], [ %111, %while.body.i.i62.i ] + %out.addr.16.i = phi ptr [ %out.addr.15204.i, %while.body.i.i62.preheader.i ], [ %incdec.ptr.i.i67.i, %while.body.i.i62.i ] + %111 = add nsw i64 %indvars.iv185.i, -8 + %shr.i.i65.i = lshr i64 %or.i.i60206.i, %111 %conv.i33.i66.i = trunc i64 %shr.i.i65.i to i8 %incdec.ptr.i.i67.i = getelementptr inbounds nuw i8, ptr %out.addr.16.i, i64 1 store i8 %conv.i33.i66.i, ptr %out.addr.16.i, align 1 - %cmp.i.i68.wide.i = icmp ugt i64 %116, 7 + %cmp.i.i68.wide.i = icmp ugt i64 %111, 7 br i1 %cmp.i.i68.wide.i, label %while.body.i.i62.i, label %_ZN7Imf_3_212_GLOBAL__N_18sendCodeEmimRmRiRPc.exit87.loopexit.i, !llvm.loop !18 while.body.i27.i: ; preds = %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit48.i34.i, %while.body.lr.ph.i24.i @@ -1194,38 +1194,38 @@ while.body.i27.i: ; preds = %_ZN7Imf_3_212_GLOBA br i1 %cmp6.i.i40.i33.i, label %while.body.i.i41.i36.preheader.i, label %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit48.i34.i while.body.i.i41.i36.preheader.i: ; preds = %while.body.i27.i - %117 = zext nneg i32 %add.i.i38.i31.i to i64 + %112 = zext nneg i32 %add.i.i38.i31.i to i64 br label %while.body.i.i41.i36.i while.body.i.i41.i36.i: ; preds = %while.body.i.i41.i36.i, %while.body.i.i41.i36.preheader.i - %indvars.iv179.i = phi i64 [ %117, %while.body.i.i41.i36.preheader.i ], [ %118, %while.body.i.i41.i36.i ] + %indvars.iv176.i = phi i64 [ %112, %while.body.i.i41.i36.preheader.i ], [ %indvars.iv.next177.i, %while.body.i.i41.i36.i ] %out.addr.13.i = phi ptr [ %out.addr.11.i, %while.body.i.i41.i36.preheader.i ], [ %incdec.ptr.i.i46.i41.i, %while.body.i.i41.i36.i ] - %118 = add nsw i64 %indvars.iv179.i, -8 - %shr.i2.i44.i39.i = lshr i64 %or.i.i39.i32.i, %118 + %indvars.iv.next177.i = add nsw i64 %indvars.iv176.i, -8 + %shr.i2.i44.i39.i = lshr i64 %or.i.i39.i32.i, %indvars.iv.next177.i %conv.i.i45.i40.i = trunc i64 %shr.i2.i44.i39.i to i8 %incdec.ptr.i.i46.i41.i = getelementptr inbounds nuw i8, ptr %out.addr.13.i, i64 1 store i8 %conv.i.i45.i40.i, ptr %out.addr.13.i, align 1 - %cmp.i.i47.i42.wide.i = icmp ugt i64 %118, 7 - br i1 %cmp.i.i47.i42.wide.i, label %while.body.i.i41.i36.i, label %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit48.i34.loopexit.i, !llvm.loop !18 + %cmp.i.i47.i42.i = icmp samesign ugt i64 %indvars.iv.next177.i, 7 + br i1 %cmp.i.i47.i42.i, label %while.body.i.i41.i36.i, label %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit48.i34.loopexit.i, !llvm.loop !18 _ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit48.i34.loopexit.i: ; preds = %while.body.i.i41.i36.i - %119 = trunc nuw i64 %118 to i32 + %113 = trunc nuw nsw i64 %indvars.iv.next177.i to i32 br label %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit48.i34.i _ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit48.i34.i: ; preds = %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit48.i34.loopexit.i, %while.body.i27.i %out.addr.12.i = phi ptr [ %out.addr.11.i, %while.body.i27.i ], [ %incdec.ptr.i.i46.i41.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit48.i34.loopexit.i ] - %lc.8.i = phi i32 [ %add.i.i38.i31.i, %while.body.i27.i ], [ %119, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit48.i34.loopexit.i ] + %lc.8.i = phi i32 [ %add.i.i38.i31.i, %while.body.i27.i ], [ %113, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit48.i34.loopexit.i ] %cmp5.i35.i = icmp sgt i32 %runCount.addr.051.i28.i, 0 br i1 %cmp5.i35.i, label %while.body.i27.i, label %_ZN7Imf_3_212_GLOBAL__N_18sendCodeEmimRmRiRPc.exit87.i, !llvm.loop !20 _ZN7Imf_3_212_GLOBAL__N_18sendCodeEmimRmRiRPc.exit87.loopexit.i: ; preds = %while.body.i.i62.i - %120 = trunc nuw i64 %116 to i32 + %114 = trunc nuw i64 %111 to i32 br label %_ZN7Imf_3_212_GLOBAL__N_18sendCodeEmimRmRiRPc.exit87.i _ZN7Imf_3_212_GLOBAL__N_18sendCodeEmimRmRiRPc.exit87.i: ; preds = %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit48.i34.i, %_ZN7Imf_3_212_GLOBAL__N_18sendCodeEmimRmRiRPc.exit87.loopexit.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i57.i, %while.cond.preheader.i22.i %out.addr.19.i = phi ptr [ %out.addr.14.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i57.i ], [ %out.addr.0.lcssa.i, %while.cond.preheader.i22.i ], [ %incdec.ptr.i.i67.i, %_ZN7Imf_3_212_GLOBAL__N_18sendCodeEmimRmRiRPc.exit87.loopexit.i ], [ %out.addr.12.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit48.i34.i ] - %c.5.i = phi i64 [ %or.i.i60.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i57.i ], [ %c.0.lcssa.i, %while.cond.preheader.i22.i ], [ %or.i.i60212.i, %_ZN7Imf_3_212_GLOBAL__N_18sendCodeEmimRmRiRPc.exit87.loopexit.i ], [ %or.i.i39.i32.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit48.i34.i ] - %lc.11.i = phi i32 [ %add.i.i59.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i57.i ], [ %lc.0.lcssa.i, %while.cond.preheader.i22.i ], [ %120, %_ZN7Imf_3_212_GLOBAL__N_18sendCodeEmimRmRiRPc.exit87.loopexit.i ], [ %lc.8.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit48.i34.i ] + %c.5.i = phi i64 [ %or.i.i60.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i57.i ], [ %c.0.lcssa.i, %while.cond.preheader.i22.i ], [ %or.i.i60206.i, %_ZN7Imf_3_212_GLOBAL__N_18sendCodeEmimRmRiRPc.exit87.loopexit.i ], [ %or.i.i39.i32.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit48.i34.i ] + %lc.11.i = phi i32 [ %add.i.i59.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit32.i57.i ], [ %lc.0.lcssa.i, %while.cond.preheader.i22.i ], [ %114, %_ZN7Imf_3_212_GLOBAL__N_18sendCodeEmimRmRiRPc.exit87.loopexit.i ], [ %lc.8.i, %_ZN7Imf_3_212_GLOBAL__N_110outputCodeEmRmRiRPc.exit48.i34.i ] %tobool.not.i33 = icmp eq i32 %lc.11.i, 0 br i1 %tobool.not.i33, label %_ZN7Imf_3_29AutoArrayImLi65537EED2Ev.exit, label %if.then17.i @@ -1242,71 +1242,71 @@ _ZN7Imf_3_29AutoArrayImLi65537EED2Ev.exit: ; preds = %if.then17.i, %_ZN7I %sub.ptr.rhs.cast.i38 = ptrtoint ptr %p.2.i to i64 %sub.ptr.sub.i39 = sub i64 %sub.ptr.lhs.cast.i37, %sub.ptr.rhs.cast.i38 %sub.ptr.sub.tr.i = trunc i64 %sub.ptr.sub.i39 to i32 - %121 = shl i32 %sub.ptr.sub.tr.i, 3 - %conv21.i = add i32 %121, %lc.11.i + %115 = shl i32 %sub.ptr.sub.tr.i, 3 + %conv21.i = add i32 %115, %lc.11.i %sub.ptr.rhs.cast = ptrtoint ptr %add.ptr to i64 %sub.ptr.sub = sub i64 %sub.ptr.rhs.cast.i38, %sub.ptr.rhs.cast %add = add nsw i32 %conv21.i, 7 %div = sdiv i32 %add, 8 - %conv.i59 = trunc i64 %indvars.iv.i13 to i8 - store i8 %conv.i59, ptr %compressed, align 1 - %shr.i109 = lshr i64 %indvars.iv.i13, 8 - %conv1.i = trunc i64 %shr.i109 to i8 + %conv.i61 = trunc i64 %indvars.iv.i13 to i8 + store i8 %conv.i61, ptr %compressed, align 1 + %shr.i111 = lshr i64 %indvars.iv.i13, 8 + %conv1.i = trunc i64 %shr.i111 to i8 %arrayidx2.i = getelementptr inbounds nuw i8, ptr %compressed, i64 1 store i8 %conv1.i, ptr %arrayidx2.i, align 1 - %shr3.i110 = lshr i64 %indvars.iv.i13, 16 - %conv4.i = trunc i64 %shr3.i110 to i8 - %arrayidx5.i60 = getelementptr inbounds nuw i8, ptr %compressed, i64 2 - store i8 %conv4.i, ptr %arrayidx5.i60, align 1 - %shr6.i111 = lshr i64 %indvars.iv.i13, 24 - %conv7.i = trunc i64 %shr6.i111 to i8 - %arrayidx8.i61 = getelementptr inbounds nuw i8, ptr %compressed, i64 3 - store i8 %conv7.i, ptr %arrayidx8.i61, align 1 + %shr3.i112 = lshr i64 %indvars.iv.i13, 16 + %conv4.i = trunc i64 %shr3.i112 to i8 + %arrayidx5.i62 = getelementptr inbounds nuw i8, ptr %compressed, i64 2 + store i8 %conv4.i, ptr %arrayidx5.i62, align 1 + %shr6.i113 = lshr i64 %indvars.iv.i13, 24 + %conv7.i = trunc i64 %shr6.i113 to i8 + %arrayidx8.i63 = getelementptr inbounds nuw i8, ptr %compressed, i64 3 + store i8 %conv7.i, ptr %arrayidx8.i63, align 1 %add.ptr13 = getelementptr inbounds nuw i8, ptr %compressed, i64 4 - %conv.i62 = trunc i32 %inc16.i to i8 - store i8 %conv.i62, ptr %add.ptr13, align 1 - %shr.i63 = lshr i32 %inc16.i, 8 - %conv1.i64 = trunc i32 %shr.i63 to i8 - %arrayidx2.i65 = getelementptr inbounds nuw i8, ptr %compressed, i64 5 - store i8 %conv1.i64, ptr %arrayidx2.i65, align 1 - %shr3.i66 = lshr i32 %inc16.i, 16 - %conv4.i67 = trunc i32 %shr3.i66 to i8 - %arrayidx5.i68 = getelementptr inbounds nuw i8, ptr %compressed, i64 6 - store i8 %conv4.i67, ptr %arrayidx5.i68, align 1 - %shr6.i69 = lshr i32 %inc16.i, 24 - %conv7.i70 = trunc nuw i32 %shr6.i69 to i8 - %arrayidx8.i71 = getelementptr inbounds nuw i8, ptr %compressed, i64 7 - store i8 %conv7.i70, ptr %arrayidx8.i71, align 1 + %conv.i64 = trunc i32 %inc16.i to i8 + store i8 %conv.i64, ptr %add.ptr13, align 1 + %shr.i65 = lshr i32 %inc16.i, 8 + %conv1.i66 = trunc i32 %shr.i65 to i8 + %arrayidx2.i67 = getelementptr inbounds nuw i8, ptr %compressed, i64 5 + store i8 %conv1.i66, ptr %arrayidx2.i67, align 1 + %shr3.i68 = lshr i32 %inc16.i, 16 + %conv4.i69 = trunc i32 %shr3.i68 to i8 + %arrayidx5.i70 = getelementptr inbounds nuw i8, ptr %compressed, i64 6 + store i8 %conv4.i69, ptr %arrayidx5.i70, align 1 + %shr6.i71 = lshr i32 %inc16.i, 24 + %conv7.i72 = trunc nuw i32 %shr6.i71 to i8 + %arrayidx8.i73 = getelementptr inbounds nuw i8, ptr %compressed, i64 7 + store i8 %conv7.i72, ptr %arrayidx8.i73, align 1 %add.ptr15 = getelementptr inbounds nuw i8, ptr %compressed, i64 8 - %conv.i72 = trunc i64 %sub.ptr.sub to i8 - store i8 %conv.i72, ptr %add.ptr15, align 1 - %shr.i73112 = lshr i64 %sub.ptr.sub, 8 - %conv1.i74 = trunc i64 %shr.i73112 to i8 - %arrayidx2.i75 = getelementptr inbounds nuw i8, ptr %compressed, i64 9 - store i8 %conv1.i74, ptr %arrayidx2.i75, align 1 - %shr3.i76113 = lshr i64 %sub.ptr.sub, 16 - %conv4.i77 = trunc i64 %shr3.i76113 to i8 - %arrayidx5.i78 = getelementptr inbounds nuw i8, ptr %compressed, i64 10 - store i8 %conv4.i77, ptr %arrayidx5.i78, align 1 - %shr6.i79114 = lshr i64 %sub.ptr.sub, 24 - %conv7.i80 = trunc i64 %shr6.i79114 to i8 - %arrayidx8.i81 = getelementptr inbounds nuw i8, ptr %compressed, i64 11 - store i8 %conv7.i80, ptr %arrayidx8.i81, align 1 + %conv.i74 = trunc i64 %sub.ptr.sub to i8 + store i8 %conv.i74, ptr %add.ptr15, align 1 + %shr.i75114 = lshr i64 %sub.ptr.sub, 8 + %conv1.i76 = trunc i64 %shr.i75114 to i8 + %arrayidx2.i77 = getelementptr inbounds nuw i8, ptr %compressed, i64 9 + store i8 %conv1.i76, ptr %arrayidx2.i77, align 1 + %shr3.i78115 = lshr i64 %sub.ptr.sub, 16 + %conv4.i79 = trunc i64 %shr3.i78115 to i8 + %arrayidx5.i80 = getelementptr inbounds nuw i8, ptr %compressed, i64 10 + store i8 %conv4.i79, ptr %arrayidx5.i80, align 1 + %shr6.i81116 = lshr i64 %sub.ptr.sub, 24 + %conv7.i82 = trunc i64 %shr6.i81116 to i8 + %arrayidx8.i83 = getelementptr inbounds nuw i8, ptr %compressed, i64 11 + store i8 %conv7.i82, ptr %arrayidx8.i83, align 1 %add.ptr17 = getelementptr inbounds nuw i8, ptr %compressed, i64 12 - %conv.i82 = trunc i32 %conv21.i to i8 - store i8 %conv.i82, ptr %add.ptr17, align 1 - %shr.i83 = lshr i32 %conv21.i, 8 - %conv1.i84 = trunc i32 %shr.i83 to i8 - %arrayidx2.i85 = getelementptr inbounds nuw i8, ptr %compressed, i64 13 - store i8 %conv1.i84, ptr %arrayidx2.i85, align 1 - %shr3.i86 = lshr i32 %conv21.i, 16 - %conv4.i87 = trunc i32 %shr3.i86 to i8 - %arrayidx5.i88 = getelementptr inbounds nuw i8, ptr %compressed, i64 14 - store i8 %conv4.i87, ptr %arrayidx5.i88, align 1 - %shr6.i89 = lshr i32 %conv21.i, 24 - %conv7.i90 = trunc nuw i32 %shr6.i89 to i8 - %arrayidx8.i91 = getelementptr inbounds nuw i8, ptr %compressed, i64 15 - store i8 %conv7.i90, ptr %arrayidx8.i91, align 1 + %conv.i84 = trunc i32 %conv21.i to i8 + store i8 %conv.i84, ptr %add.ptr17, align 1 + %shr.i85 = lshr i32 %conv21.i, 8 + %conv1.i86 = trunc i32 %shr.i85 to i8 + %arrayidx2.i87 = getelementptr inbounds nuw i8, ptr %compressed, i64 13 + store i8 %conv1.i86, ptr %arrayidx2.i87, align 1 + %shr3.i88 = lshr i32 %conv21.i, 16 + %conv4.i89 = trunc i32 %shr3.i88 to i8 + %arrayidx5.i90 = getelementptr inbounds nuw i8, ptr %compressed, i64 14 + store i8 %conv4.i89, ptr %arrayidx5.i90, align 1 + %shr6.i91 = lshr i32 %conv21.i, 24 + %conv7.i92 = trunc nuw i32 %shr6.i91 to i8 + %arrayidx8.i93 = getelementptr inbounds nuw i8, ptr %compressed, i64 15 + store i8 %conv7.i92, ptr %arrayidx8.i93, align 1 %add.ptr19 = getelementptr inbounds nuw i8, ptr %compressed, i64 16 %idx.ext = sext i32 %div to i64 %add.ptr21 = getelementptr inbounds i8, ptr %p.2.i, i64 %idx.ext @@ -1319,12 +1319,12 @@ _ZN7Imf_3_29AutoArrayImLi65537EED2Ev.exit: ; preds = %if.then17.i, %_ZN7I br label %return lpad: ; preds = %_ZN7Imf_3_212_GLOBAL__N_116countFrequenciesEPmPKti.exit - %122 = landingpad { ptr, i32 } + %116 = landingpad { ptr, i32 } cleanup - br label %_ZN7Imf_3_29AutoArrayImLi65537EED2Ev.exit97 + br label %_ZN7Imf_3_29AutoArrayImLi65537EED2Ev.exit99 -_ZN7Imf_3_29AutoArrayImLi65537EED2Ev.exit97: ; preds = %_ZN7Imf_3_29AutoArrayIiLi65537EED2Ev.exit177.i, %lpad - %eh.lpad-body = phi { ptr, i32 } [ %122, %lpad ], [ %.pn.pn.i, %_ZN7Imf_3_29AutoArrayIiLi65537EED2Ev.exit177.i ] +_ZN7Imf_3_29AutoArrayImLi65537EED2Ev.exit99: ; preds = %_ZN7Imf_3_29AutoArrayIiLi65537EED2Ev.exit177.i, %lpad + %eh.lpad-body = phi { ptr, i32 } [ %116, %lpad ], [ %.pn.pn.i, %_ZN7Imf_3_29AutoArrayIiLi65537EED2Ev.exit177.i ] tail call void @_ZdaPv(ptr noundef nonnull %call.i) #12 resume { ptr, i32 } %eh.lpad-body diff --git a/bench/openmpi/optimized/opal_graph.ll b/bench/openmpi/optimized/opal_graph.ll index 0df772d701b..7dae6b12aaa 100644 --- a/bench/openmpi/optimized/opal_graph.ll +++ b/bench/openmpi/optimized/opal_graph.ll @@ -1254,7 +1254,7 @@ define range(i32 -2147483648, 2147483647) i32 @opal_graph_dijkstra(ptr noundef r %4 = getelementptr inbounds nuw i8, ptr %1, i64 40 %5 = load ptr, ptr %4, align 8 %.not = icmp eq ptr %0, %5 - br i1 %.not, label %6, label %79 + br i1 %.not, label %6, label %78 6: ; preds = %3 %7 = getelementptr inbounds nuw i8, ptr %0, i64 28 @@ -1299,7 +1299,7 @@ define range(i32 -2147483648, 2147483647) i32 @opal_graph_dijkstra(ptr noundef r br i1 %25, label %.lr.ph69.preheader, label %.preheader .lr.ph69.preheader: ; preds = %._crit_edge - %26 = and i64 %indvars.iv.next, 2147483647 + %26 = and i64 %indvars.iv, 4294967295 br label %.lr.ph69 .preheader: ; preds = %._crit_edge65, %._crit_edge65.thread, %._crit_edge.thread, %._crit_edge @@ -1312,18 +1312,19 @@ define range(i32 -2147483648, 2147483647) i32 @opal_graph_dijkstra(ptr noundef r %30 = getelementptr inbounds nuw i8, ptr %2, i64 16 %31 = getelementptr inbounds nuw i8, ptr %2, i64 24 %wide.trip.count = zext nneg i32 %27 to i64 - br label %69 + br label %68 .lr.ph69: ; preds = %.lr.ph69.preheader, %._crit_edge65 - %indvars.iv79 = phi i64 [ %26, %.lr.ph69.preheader ], [ %indvars.iv.next80, %._crit_edge65 ] + %indvars.iv83 = phi i64 [ %24, %.lr.ph69.preheader ], [ %indvars.iv.next84, %._crit_edge65 ] + %indvars.iv81 = phi i64 [ %26, %.lr.ph69.preheader ], [ %indvars.iv.next82, %._crit_edge65 ] %.05166 = phi ptr [ %11, %.lr.ph69.preheader ], [ %32, %._crit_edge65 ] %32 = getelementptr inbounds nuw i8, ptr %.05166, i64 16 - %indvars.iv.next80 = add nsw i64 %indvars.iv79, -1 - %33 = icmp samesign ugt i64 %indvars.iv79, 1 + %indvars.iv.next84 = add nsw i64 %indvars.iv83, -1 + %33 = icmp samesign ugt i64 %indvars.iv83, 1 br i1 %33, label %.lr.ph64, label %._crit_edge65.thread ._crit_edge65.thread: ; preds = %.lr.ph69 - tail call void @qsort(ptr noundef nonnull %32, i64 noundef %indvars.iv.next80, i64 noundef 16, ptr noundef nonnull @compare_vertex_distance) #13 + tail call void @qsort(ptr noundef nonnull %32, i64 noundef %indvars.iv.next84, i64 noundef 16, ptr noundef nonnull @compare_vertex_distance) #13 br label %.preheader .lr.ph64: ; preds = %.lr.ph69 @@ -1394,41 +1395,42 @@ opal_graph_adjacent.exit: ; preds = %58, %37, %41, %44, 66: ; preds = %opal_graph_adjacent.exit, %65 %indvars.iv.next77 = add nuw nsw i64 %indvars.iv76, 1 - %67 = icmp slt i64 %indvars.iv.next77, %indvars.iv.next80 - br i1 %67, label %37, label %._crit_edge65, !llvm.loop !20 + %exitcond.not = icmp eq i64 %indvars.iv.next77, %indvars.iv81 + br i1 %exitcond.not, label %._crit_edge65, label %37, !llvm.loop !20 ._crit_edge65: ; preds = %66 - tail call void @qsort(ptr noundef nonnull %32, i64 noundef %indvars.iv.next80, i64 noundef 16, ptr noundef nonnull @compare_vertex_distance) #13 - %68 = icmp sgt i64 %indvars.iv79, 1 - br i1 %68, label %.lr.ph69, label %.preheader, !llvm.loop !21 - -69: ; preds = %.lr.ph71, %opal_value_array_append_item.exit - %indvars.iv82 = phi i64 [ 0, %.lr.ph71 ], [ %indvars.iv.next83, %opal_value_array_append_item.exit ] - %indvars.iv.next83 = add nuw nsw i64 %indvars.iv82, 1 - %70 = load i64, ptr %29, align 8 - %71 = add i64 %70, 1 - %72 = tail call i32 @opal_value_array_set_size(ptr noundef nonnull %2, i64 noundef %71) #13 - %.not12.i.i = icmp eq i32 %72, 0 - br i1 %.not12.i.i, label %73, label %opal_value_array_append_item.exit - -73: ; preds = %69 - %74 = getelementptr inbounds nuw %struct.vertex_distance_from_t, ptr %11, i64 %indvars.iv.next83 - %75 = load ptr, ptr %30, align 8 - %76 = load i64, ptr %31, align 8 - %77 = mul i64 %76, %70 - %78 = getelementptr inbounds i8, ptr %75, i64 %77 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %78, ptr nonnull readonly align 1 %74, i64 %76, i1 false) + tail call void @qsort(ptr noundef nonnull %32, i64 noundef %indvars.iv.next84, i64 noundef 16, ptr noundef nonnull @compare_vertex_distance) #13 + %67 = icmp sgt i64 %indvars.iv83, 1 + %indvars.iv.next82 = add nsw i64 %indvars.iv81, -1 + br i1 %67, label %.lr.ph69, label %.preheader, !llvm.loop !21 + +68: ; preds = %.lr.ph71, %opal_value_array_append_item.exit + %indvars.iv88 = phi i64 [ 0, %.lr.ph71 ], [ %indvars.iv.next89, %opal_value_array_append_item.exit ] + %indvars.iv.next89 = add nuw nsw i64 %indvars.iv88, 1 + %69 = load i64, ptr %29, align 8 + %70 = add i64 %69, 1 + %71 = tail call i32 @opal_value_array_set_size(ptr noundef nonnull %2, i64 noundef %70) #13 + %.not12.i.i = icmp eq i32 %71, 0 + br i1 %.not12.i.i, label %72, label %opal_value_array_append_item.exit + +72: ; preds = %68 + %73 = getelementptr inbounds nuw %struct.vertex_distance_from_t, ptr %11, i64 %indvars.iv.next89 + %74 = load ptr, ptr %30, align 8 + %75 = load i64, ptr %31, align 8 + %76 = mul i64 %75, %69 + %77 = getelementptr inbounds i8, ptr %74, i64 %76 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %77, ptr nonnull readonly align 1 %73, i64 %75, i1 false) br label %opal_value_array_append_item.exit -opal_value_array_append_item.exit: ; preds = %69, %73 - %exitcond.not = icmp eq i64 %indvars.iv.next83, %wide.trip.count - br i1 %exitcond.not, label %._crit_edge72, label %69, !llvm.loop !22 +opal_value_array_append_item.exit: ; preds = %68, %72 + %exitcond91.not = icmp eq i64 %indvars.iv.next89, %wide.trip.count + br i1 %exitcond91.not, label %._crit_edge72, label %68, !llvm.loop !22 ._crit_edge72: ; preds = %opal_value_array_append_item.exit, %.preheader tail call void @free(ptr noundef %11) #13 - br label %79 + br label %78 -79: ; preds = %3, %._crit_edge72 +78: ; preds = %3, %._crit_edge72 %.0 = phi i32 [ %27, %._crit_edge72 ], [ 0, %3 ] ret i32 %.0 } diff --git a/bench/openssl/optimized/openssl-bin-enc.ll b/bench/openssl/optimized/openssl-bin-enc.ll index 1b374b3205c..2c821dc1a48 100644 --- a/bench/openssl/optimized/openssl-bin-enc.ll +++ b/bench/openssl/optimized/openssl-bin-enc.ll @@ -410,23 +410,23 @@ if.then78: ; preds = %if.end73 br label %opthelp land.rhs86: ; preds = %land.rhs86.preheader, %while.body99 - %indvars.iv = phi i64 [ %10, %land.rhs86.preheader ], [ %12, %while.body99 ] - %12 = add nsw i64 %indvars.iv, -1 - %arrayidx88 = getelementptr inbounds nuw [128 x i8], ptr @enc_main.buf, i64 0, i64 %12 - %13 = load i8, ptr %arrayidx88, align 1 - switch i8 %13, label %while.cond.backedge [ + %indvars.iv = phi i64 [ %10, %land.rhs86.preheader ], [ %indvars.iv.next, %while.body99 ] + %indvars.iv.next = add nsw i64 %indvars.iv, -1 + %arrayidx88 = getelementptr inbounds nuw [128 x i8], ptr @enc_main.buf, i64 0, i64 %indvars.iv.next + %12 = load i8, ptr %arrayidx88, align 1 + switch i8 %12, label %while.cond.backedge [ i8 13, label %while.body99 i8 10, label %while.body99 ], !llvm.loop !5 while.body99: ; preds = %land.rhs86, %land.rhs86 store i8 0, ptr %arrayidx88, align 1 - %cmp84.wide = icmp ugt i64 %12, 1 - br i1 %cmp84.wide, label %land.rhs86, label %if.then104, !llvm.loop !7 + %cmp84 = icmp samesign ugt i64 %indvars.iv.next, 1 + br i1 %cmp84, label %land.rhs86, label %if.then104, !llvm.loop !7 if.then104: ; preds = %while.cond82.preheader, %while.body99 - %14 = load ptr, ptr @bio_err, align 8 - %call105 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %14, ptr noundef nonnull @.str.87, ptr noundef %call7) #11 + %13 = load ptr, ptr @bio_err, align 8 + %call105 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %13, ptr noundef nonnull @.str.87, ptr noundef %call7) #11 br label %opthelp sw.bb107: ; preds = %while.cond @@ -460,8 +460,8 @@ sw.bb119: ; preds = %while.cond br i1 %tobool122.not, label %opthelp, label %if.end124 if.end124: ; preds = %sw.bb119 - %15 = load i32, ptr %saltlen, align 4 - %cmp125 = icmp sgt i32 %15, 16 + %14 = load i32, ptr %saltlen, align 4 + %cmp125 = icmp sgt i32 %14, 16 br i1 %cmp125, label %if.then127, label %while.cond.backedge if.then127: ; preds = %if.end124 @@ -498,8 +498,8 @@ if.end151: ; preds = %while.end147 br i1 %tobool153.not, label %end, label %if.end155 if.end155: ; preds = %if.end151 - %16 = load i32, ptr %saltlen, align 4 - %cmp156 = icmp eq i32 %16, 0 + %15 = load i32, ptr %saltlen, align 4 + %cmp156 = icmp eq i32 %15, 0 %cmp159 = icmp eq i32 %pbkdf2.0, 0 %or.cond2 = select i1 %cmp156, i1 true, i1 %cmp159 br i1 %or.cond2, label %if.then161, label %if.end162 @@ -514,12 +514,12 @@ if.end162: ; preds = %if.end155, %if.then br i1 %tobool164.not, label %opthelp, label %if.end166 if.end166: ; preds = %if.end162 - %17 = load ptr, ptr %cipher, align 8 - %tobool167.not = icmp eq ptr %17, null + %16 = load ptr, ptr %cipher, align 8 + %tobool167.not = icmp eq ptr %16, null br i1 %tobool167.not, label %if.end173, label %land.lhs.true168 land.lhs.true168: ; preds = %if.end166 - %call169 = call i32 @EVP_CIPHER_get_mode(ptr noundef nonnull %17) #11 + %call169 = call i32 @EVP_CIPHER_get_mode(ptr noundef nonnull %16) #11 %call169.fr = freeze i32 %call169 %cmp170 = icmp eq i32 %call169.fr, 65538 %not.cmp170 = xor i1 %cmp170, true @@ -537,8 +537,8 @@ if.then176: ; preds = %if.end173 br i1 %tobool178.not, label %opthelp, label %if.end181 if.end181: ; preds = %if.then176, %if.end173 - %18 = load ptr, ptr %dgst, align 8 - %cmp182 = icmp eq ptr %18, null + %17 = load ptr, ptr %dgst, align 8 + %cmp182 = icmp eq ptr %17, null br i1 %cmp182, label %if.then184, label %if.end186 if.then184: ; preds = %if.end181 @@ -549,22 +549,22 @@ if.then184: ; preds = %if.end181 if.end186: ; preds = %if.then184, %if.end181 %spec.store.select3 = call i32 @llvm.umax.i32(i32 %iter.0, i32 1) %tobool191.not = icmp eq i32 %base64.1, 0 - %19 = call i32 @llvm.smax.i32(i32 %bsize.0, i32 80) - %spec.store.select12 = select i1 %tobool191.not, i32 %bsize.0, i32 %19 + %18 = call i32 @llvm.smax.i32(i32 %bsize.0, i32 80) + %spec.store.select12 = select i1 %tobool191.not, i32 %bsize.0, i32 %18 %tobool197.not = icmp eq i32 %verbose.0, 0 br i1 %tobool197.not, label %if.end206, label %if.then198 if.then198: ; preds = %if.end186 - %20 = load ptr, ptr @bio_err, align 8 - %call199 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %20, ptr noundef nonnull @.str.88, i32 noundef %spec.store.select12) #11 + %19 = load ptr, ptr @bio_err, align 8 + %call199 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %19, ptr noundef nonnull @.str.88, i32 noundef %spec.store.select12) #11 br label %if.end206 if.end206: ; preds = %if.then198, %if.end186 %tobool209.not = icmp eq i32 %enc.0, 0 %. = select i1 %tobool209.not, i32 32771, i32 2 %informat.0 = select i1 %tobool191.not, i32 2, i32 %. - %21 = select i1 %tobool191.not, i1 true, i1 %tobool209.not - %outformat.0 = select i1 %21, i32 2, i32 32771 + %20 = select i1 %tobool191.not, i1 true, i1 %tobool209.not + %outformat.0 = select i1 %20, i32 2, i32 32771 %call214 = call ptr @app_malloc(i64 noundef 512, ptr noundef nonnull @.str.89) #11 %add = add nsw i32 %spec.store.select12, 2 %div = sdiv i32 %add, 3 @@ -584,8 +584,8 @@ if.then225: ; preds = %if.end206 br i1 %or.cond5, label %if.then230, label %if.end232 if.then230: ; preds = %if.then225 - %22 = load ptr, ptr @bio_err, align 8 - %call231 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %22, ptr noundef nonnull @.str.91) #11 + %21 = load ptr, ptr @bio_err, align 8 + %call231 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %21, ptr noundef nonnull @.str.91) #11 br label %end if.end232: ; preds = %if.then225 @@ -613,19 +613,19 @@ if.then246: ; preds = %if.end240 br i1 %tobool248.not, label %if.then249, label %if.end251 if.then249: ; preds = %if.then246 - %23 = load ptr, ptr @bio_err, align 8 - %call250 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %23, ptr noundef nonnull @.str.92) #11 + %22 = load ptr, ptr @bio_err, align 8 + %call250 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %22, ptr noundef nonnull @.str.92) #11 br label %end if.end251: ; preds = %if.then246 - %24 = load ptr, ptr %pass, align 8 + %23 = load ptr, ptr %pass, align 8 br label %if.end252 if.end252: ; preds = %if.end251, %if.end240 - %str.2 = phi ptr [ %24, %if.end251 ], [ %str.0, %if.end240 ] + %str.2 = phi ptr [ %23, %if.end251 ], [ %str.0, %if.end240 ] %cmp253 = icmp eq ptr %str.2, null - %25 = load ptr, ptr %cipher, align 8 - %cmp256 = icmp ne ptr %25, null + %24 = load ptr, ptr %cipher, align 8 + %cmp256 = icmp ne ptr %24, null %or.cond7 = select i1 %cmp253, i1 %cmp256, i1 false %cmp259 = icmp eq ptr %hkey.0, null %or.cond8 = select i1 %or.cond7, i1 %cmp259, i1 false @@ -636,8 +636,8 @@ for.cond.preheader: ; preds = %if.end252 br label %for.cond for.cond: ; preds = %for.cond.preheader, %if.end277 - %26 = load ptr, ptr %cipher, align 8 - %call262 = call ptr @EVP_CIPHER_get0_name(ptr noundef %26) #11 + %25 = load ptr, ptr %cipher, align 8 + %call262 = call ptr @EVP_CIPHER_get0_name(ptr noundef %25) #11 %call264 = call i32 (ptr, i64, ptr, ...) @BIO_snprintf(ptr noundef nonnull %prompt, i64 noundef 200, ptr noundef nonnull @.str.93, ptr noundef %call262, ptr noundef nonnull %cond) #11 store i8 0, ptr %call214, align 1 %call267 = call i32 @EVP_read_pw_string(ptr noundef %call214, i32 noundef 512, ptr noundef nonnull %prompt, i32 noundef %enc.0) #11 @@ -645,8 +645,8 @@ for.cond: ; preds = %for.cond.preheader, br i1 %cmp268, label %if.then270, label %if.end277 if.then270: ; preds = %for.cond - %27 = load i8, ptr %call214, align 1 - %cmp273 = icmp eq i8 %27, 0 + %26 = load i8, ptr %call214, align 1 + %cmp273 = icmp eq i8 %26, 0 br i1 %cmp273, label %end, label %if.end283 if.end277: ; preds = %for.cond @@ -654,8 +654,8 @@ if.end277: ; preds = %for.cond br i1 %cmp278, label %if.then280, label %for.cond if.then280: ; preds = %if.end277 - %28 = load ptr, ptr @bio_err, align 8 - %call281 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %28, ptr noundef nonnull @.str.96) #11 + %27 = load ptr, ptr @bio_err, align 8 + %call281 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %27, ptr noundef nonnull @.str.96) #11 br label %end if.end283: ; preds = %if.then270, %if.end252 @@ -671,10 +671,10 @@ if.end288: ; preds = %if.end283 if.then290: ; preds = %if.end288 call void @BIO_set_callback_ex(ptr noundef %in.4, ptr noundef nonnull @BIO_debug_callback_ex) #11 call void @BIO_set_callback_ex(ptr noundef nonnull %call284, ptr noundef nonnull @BIO_debug_callback_ex) #11 + %28 = load ptr, ptr @bio_err, align 8 + call void @BIO_set_callback_arg(ptr noundef %in.4, ptr noundef %28) #11 %29 = load ptr, ptr @bio_err, align 8 - call void @BIO_set_callback_arg(ptr noundef %in.4, ptr noundef %29) #11 - %30 = load ptr, ptr @bio_err, align 8 - call void @BIO_set_callback_arg(ptr noundef nonnull %call284, ptr noundef %30) #11 + call void @BIO_set_callback_arg(ptr noundef nonnull %call284, ptr noundef %29) #11 br label %if.end327 if.end327: ; preds = %if.then290, %if.end288 @@ -691,8 +691,8 @@ if.end335: ; preds = %if.then329 if.then337: ; preds = %if.end335 call void @BIO_set_callback_ex(ptr noundef nonnull %call331, ptr noundef nonnull @BIO_debug_callback_ex) #11 - %31 = load ptr, ptr @bio_err, align 8 - call void @BIO_set_callback_arg(ptr noundef nonnull %call331, ptr noundef %31) #11 + %30 = load ptr, ptr @bio_err, align 8 + call void @BIO_set_callback_arg(ptr noundef nonnull %call331, ptr noundef %30) #11 br label %if.end338 if.end338: ; preds = %if.then337, %if.end335 @@ -718,8 +718,8 @@ if.end348: ; preds = %if.then343, %if.els %wbio.2 = phi ptr [ %call344, %if.then343 ], [ %call284, %if.else345 ], [ %call284, %if.end327 ] %rbio.2 = phi ptr [ %in.4, %if.then343 ], [ %call346, %if.else345 ], [ %in.4, %if.end327 ] %b64.1 = phi ptr [ %call331, %if.then343 ], [ %call331, %if.else345 ], [ null, %if.end327 ] - %32 = load ptr, ptr %cipher, align 8 - %cmp349.not = icmp eq ptr %32, null + %31 = load ptr, ptr %cipher, align 8 + %cmp349.not = icmp eq ptr %31, null br i1 %cmp349.not, label %if.end613, label %if.then351 if.then351: ; preds = %if.end348 @@ -736,28 +736,28 @@ if.else358: ; preds = %if.then354 br i1 %cmp359.not, label %if.end367, label %land.lhs.true361 land.lhs.true361: ; preds = %if.else358 - %33 = load i32, ptr %saltlen, align 4 - %call363 = call fastcc i32 @set_hex(ptr noundef %hsalt.0, ptr noundef %salt, i32 noundef %33) + %32 = load i32, ptr %saltlen, align 4 + %call363 = call fastcc i32 @set_hex(ptr noundef %hsalt.0, ptr noundef %salt, i32 noundef %32) %tobool364.not = icmp eq i32 %call363, 0 br i1 %tobool364.not, label %if.then365, label %if.end426 if.then365: ; preds = %land.lhs.true361 - %34 = load ptr, ptr @bio_err, align 8 - %call366 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %34, ptr noundef nonnull @.str.97) #11 + %33 = load ptr, ptr @bio_err, align 8 + %call366 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %33, ptr noundef nonnull @.str.97) #11 br label %end if.end367: ; preds = %if.else358 br i1 %tobool209.not, label %if.then399, label %if.then372 if.then372: ; preds = %if.end367 - %35 = load i32, ptr %saltlen, align 4 - %call374 = call i32 @RAND_bytes(ptr noundef nonnull %salt, i32 noundef %35) #11 + %34 = load i32, ptr %saltlen, align 4 + %call374 = call i32 @RAND_bytes(ptr noundef nonnull %salt, i32 noundef %34) #11 %cmp375 = icmp slt i32 %call374, 1 br i1 %cmp375, label %if.then377, label %if.end379 if.then377: ; preds = %if.then372 - %36 = load ptr, ptr @bio_err, align 8 - %call378 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %36, ptr noundef nonnull @.str.98) #11 + %35 = load ptr, ptr @bio_err, align 8 + %call378 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %35, ptr noundef nonnull @.str.98) #11 br label %end if.end379: ; preds = %if.then372 @@ -770,15 +770,15 @@ land.lhs.true382: ; preds = %if.end379 br i1 %cmp385.not, label %lor.lhs.false387, label %if.then392 lor.lhs.false387: ; preds = %land.lhs.true382 + %36 = load i32, ptr %saltlen, align 4 + %call389 = call i32 @BIO_write(ptr noundef %wbio.2, ptr noundef nonnull %salt, i32 noundef %36) #11 %37 = load i32, ptr %saltlen, align 4 - %call389 = call i32 @BIO_write(ptr noundef %wbio.2, ptr noundef nonnull %salt, i32 noundef %37) #11 - %38 = load i32, ptr %saltlen, align 4 - %cmp390.not = icmp eq i32 %call389, %38 + %cmp390.not = icmp eq i32 %call389, %37 br i1 %cmp390.not, label %if.end426, label %if.then392 if.then392: ; preds = %lor.lhs.false387, %land.lhs.true382 - %39 = load ptr, ptr @bio_err, align 8 - %call393 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %39, ptr noundef nonnull @.str.99) #11 + %38 = load ptr, ptr @bio_err, align 8 + %call393 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %38, ptr noundef nonnull @.str.99) #11 br label %end if.then399: ; preds = %if.end367 @@ -787,8 +787,8 @@ if.then399: ; preds = %if.end367 br i1 %cmp403.not, label %if.end407, label %if.then405 if.then405: ; preds = %if.then399 - %40 = load ptr, ptr @bio_err, align 8 - %call406 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %40, ptr noundef nonnull @.str.100) #11 + %39 = load ptr, ptr @bio_err, align 8 + %call406 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %39, ptr noundef nonnull @.str.100) #11 br label %end if.end407: ; preds = %if.then399 @@ -797,20 +797,20 @@ if.end407: ; preds = %if.then399 br i1 %cmp410, label %if.then412, label %if.else420 if.then412: ; preds = %if.end407 + %40 = load i32, ptr %saltlen, align 4 + %call414 = call i32 @BIO_read(ptr noundef %rbio.2, ptr noundef nonnull %salt, i32 noundef %40) #11 %41 = load i32, ptr %saltlen, align 4 - %call414 = call i32 @BIO_read(ptr noundef %rbio.2, ptr noundef nonnull %salt, i32 noundef %41) #11 - %42 = load i32, ptr %saltlen, align 4 - %cmp415.not = icmp eq i32 %call414, %42 + %cmp415.not = icmp eq i32 %call414, %41 br i1 %cmp415.not, label %if.end426, label %if.then417 if.then417: ; preds = %if.then412 - %43 = load ptr, ptr @bio_err, align 8 - %call418 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %43, ptr noundef nonnull @.str.100) #11 + %42 = load ptr, ptr @bio_err, align 8 + %call418 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %42, ptr noundef nonnull @.str.100) #11 br label %end if.else420: ; preds = %if.end407 - %44 = load ptr, ptr @bio_err, align 8 - %call421 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %44, ptr noundef nonnull @.str.101) #11 + %43 = load ptr, ptr @bio_err, align 8 + %call421 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %43, ptr noundef nonnull @.str.101) #11 br label %end if.end426: ; preds = %land.lhs.true361, %if.end379, %lor.lhs.false387, %if.then412, %if.then354 @@ -819,23 +819,23 @@ if.end426: ; preds = %land.lhs.true361, % br i1 %cmp427.not, label %if.else449, label %if.then429 if.then429: ; preds = %if.end426 + %44 = load ptr, ptr %cipher, align 8 + %call430 = call i32 @EVP_CIPHER_get_key_length(ptr noundef %44) #11 %45 = load ptr, ptr %cipher, align 8 - %call430 = call i32 @EVP_CIPHER_get_key_length(ptr noundef %45) #11 - %46 = load ptr, ptr %cipher, align 8 - %call431 = call i32 @EVP_CIPHER_get_iv_length(ptr noundef %46) #11 + %call431 = call i32 @EVP_CIPHER_get_iv_length(ptr noundef %45) #11 %cmp432.not = icmp eq ptr %sptr.0, null - %47 = load i32, ptr %saltlen, align 4 - %cond434 = select i1 %cmp432.not, i32 0, i32 %47 + %46 = load i32, ptr %saltlen, align 4 + %cond434 = select i1 %cmp432.not, i32 0, i32 %46 %conv435 = trunc i64 %call355 to i32 - %48 = load ptr, ptr %dgst, align 8 + %47 = load ptr, ptr %dgst, align 8 %add436 = add nsw i32 %call431, %call430 - %call438 = call i32 @PKCS5_PBKDF2_HMAC(ptr noundef nonnull %str.3, i32 noundef %conv435, ptr noundef %sptr.0, i32 noundef %cond434, i32 noundef %spec.store.select3, ptr noundef %48, i32 noundef %add436, ptr noundef nonnull %tmpkeyiv) #11 + %call438 = call i32 @PKCS5_PBKDF2_HMAC(ptr noundef nonnull %str.3, i32 noundef %conv435, ptr noundef %sptr.0, i32 noundef %cond434, i32 noundef %spec.store.select3, ptr noundef %47, i32 noundef %add436, ptr noundef nonnull %tmpkeyiv) #11 %tobool439.not = icmp eq i32 %call438, 0 br i1 %tobool439.not, label %if.then440, label %if.end442 if.then440: ; preds = %if.then429 - %49 = load ptr, ptr @bio_err, align 8 - %call441 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %49, ptr noundef nonnull @.str.102) #11 + %48 = load ptr, ptr @bio_err, align 8 + %call441 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %48, ptr noundef nonnull @.str.102) #11 br label %end if.end442: ; preds = %if.then429 @@ -847,18 +847,18 @@ if.end442: ; preds = %if.then429 br label %if.end459 if.else449: ; preds = %if.end426 - %50 = load ptr, ptr @bio_err, align 8 - %call450 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %50, ptr noundef nonnull @.str.103) #11 - %51 = load ptr, ptr %cipher, align 8 - %52 = load ptr, ptr %dgst, align 8 + %49 = load ptr, ptr @bio_err, align 8 + %call450 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %49, ptr noundef nonnull @.str.103) #11 + %50 = load ptr, ptr %cipher, align 8 + %51 = load ptr, ptr %dgst, align 8 %conv451 = trunc i64 %call355 to i32 - %call454 = call i32 @EVP_BytesToKey(ptr noundef %51, ptr noundef %52, ptr noundef %sptr.0, ptr noundef nonnull %str.3, i32 noundef %conv451, i32 noundef 1, ptr noundef nonnull %key, ptr noundef nonnull %iv) #11 + %call454 = call i32 @EVP_BytesToKey(ptr noundef %50, ptr noundef %51, ptr noundef %sptr.0, ptr noundef nonnull %str.3, i32 noundef %conv451, i32 noundef 1, ptr noundef nonnull %key, ptr noundef nonnull %iv) #11 %tobool455.not = icmp eq i32 %call454, 0 br i1 %tobool455.not, label %if.then456, label %if.end459 if.then456: ; preds = %if.else449 - %53 = load ptr, ptr @bio_err, align 8 - %call457 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %53, ptr noundef nonnull @.str.104) #11 + %52 = load ptr, ptr @bio_err, align 8 + %call457 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %52, ptr noundef nonnull @.str.104) #11 br label %end if.end459: ; preds = %if.else449, %if.end442 @@ -869,18 +869,18 @@ if.end459: ; preds = %if.else449, %if.end br i1 %cmp466.not, label %if.end497, label %if.then468 if.end465.thread: ; preds = %if.then351 - %cmp466.not480 = icmp eq ptr %hiv.0, null - br i1 %cmp466.not480, label %land.lhs.true488, label %if.then468 + %cmp466.not479 = icmp eq ptr %hiv.0, null + br i1 %cmp466.not479, label %land.lhs.true488, label %if.then468 if.then468: ; preds = %if.end465.thread, %if.end459 - %54 = load ptr, ptr %cipher, align 8 - %call469 = call i32 @EVP_CIPHER_get_iv_length(ptr noundef %54) #11 + %53 = load ptr, ptr %cipher, align 8 + %call469 = call i32 @EVP_CIPHER_get_iv_length(ptr noundef %53) #11 %cmp470 = icmp eq i32 %call469, 0 br i1 %cmp470, label %if.then472, label %if.else474 if.then472: ; preds = %if.then468 - %55 = load ptr, ptr @bio_err, align 8 - %call473 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %55, ptr noundef nonnull @.str.105) #11 + %54 = load ptr, ptr @bio_err, align 8 + %call473 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %54, ptr noundef nonnull @.str.105) #11 br label %if.end497 if.else474: ; preds = %if.then468 @@ -889,36 +889,36 @@ if.else474: ; preds = %if.then468 br i1 %tobool477.not, label %if.then478, label %if.end497 if.then478: ; preds = %if.else474 - %56 = load ptr, ptr @bio_err, align 8 - %call479 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %56, ptr noundef nonnull @.str.106) #11 + %55 = load ptr, ptr @bio_err, align 8 + %call479 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %55, ptr noundef nonnull @.str.106) #11 br label %end land.lhs.true488: ; preds = %if.end465.thread - %57 = load ptr, ptr %cipher, align 8 - %call489 = call i32 @EVP_CIPHER_get_iv_length(ptr noundef %57) #11 + %56 = load ptr, ptr %cipher, align 8 + %call489 = call i32 @EVP_CIPHER_get_iv_length(ptr noundef %56) #11 %cmp490 = icmp ne i32 %call489, 0 %or.cond10 = and i1 %cmp493, %cmp490 br i1 %or.cond10, label %if.then495, label %if.end497 if.then495: ; preds = %land.lhs.true488 - %58 = load ptr, ptr @bio_err, align 8 - %call496 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %58, ptr noundef nonnull @.str.107) #11 + %57 = load ptr, ptr @bio_err, align 8 + %call496 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %57, ptr noundef nonnull @.str.107) #11 br label %end if.end497: ; preds = %if.end459, %if.else474, %if.then472, %land.lhs.true488 - %cmp466.not481 = phi i1 [ false, %if.else474 ], [ false, %if.then472 ], [ true, %land.lhs.true488 ], [ true, %if.end459 ] + %cmp466.not480 = phi i1 [ false, %if.else474 ], [ false, %if.then472 ], [ true, %land.lhs.true488 ], [ true, %if.end459 ] br i1 %cmp259, label %if.end508, label %if.then500 if.then500: ; preds = %if.end497 - %59 = load ptr, ptr %cipher, align 8 - %call502 = call i32 @EVP_CIPHER_get_key_length(ptr noundef %59) #11 + %58 = load ptr, ptr %cipher, align 8 + %call502 = call i32 @EVP_CIPHER_get_key_length(ptr noundef %58) #11 %call503 = call fastcc i32 @set_hex(ptr noundef %hkey.0, ptr noundef %key, i32 noundef %call502) %tobool504.not = icmp eq i32 %call503, 0 br i1 %tobool504.not, label %if.then505, label %if.end507 if.then505: ; preds = %if.then500 - %60 = load ptr, ptr @bio_err, align 8 - %call506 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %60, ptr noundef nonnull @.str.108) #11 + %59 = load ptr, ptr @bio_err, align 8 + %call506 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %59, ptr noundef nonnull @.str.108) #11 br label %end if.end507: ; preds = %if.then500 @@ -936,24 +936,24 @@ if.end514: ; preds = %if.end508 br i1 %tobool226, label %if.then518, label %if.end519 if.then518: ; preds = %if.end514 - %61 = load ptr, ptr %ctx, align 8 - call void @EVP_CIPHER_CTX_set_flags(ptr noundef %61, i32 noundef 1) #11 + %60 = load ptr, ptr %ctx, align 8 + call void @EVP_CIPHER_CTX_set_flags(ptr noundef %60, i32 noundef 1) #11 br label %if.end519 if.end519: ; preds = %if.then518, %if.end514 - %62 = load ptr, ptr %ctx, align 8 - %63 = load ptr, ptr %cipher, align 8 - %call520 = call i32 @EVP_CipherInit_ex(ptr noundef %62, ptr noundef %63, ptr noundef %e.0, ptr noundef null, ptr noundef null, i32 noundef %enc.0) #11 + %61 = load ptr, ptr %ctx, align 8 + %62 = load ptr, ptr %cipher, align 8 + %call520 = call i32 @EVP_CipherInit_ex(ptr noundef %61, ptr noundef %62, ptr noundef %e.0, ptr noundef null, ptr noundef null, i32 noundef %enc.0) #11 %tobool521.not = icmp eq i32 %call520, 0 br i1 %tobool521.not, label %if.then522, label %if.end525 if.then522: ; preds = %if.end519 - %64 = load ptr, ptr @bio_err, align 8 - %65 = load ptr, ptr %cipher, align 8 - %call523 = call ptr @EVP_CIPHER_get0_name(ptr noundef %65) #11 - %call524 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %64, ptr noundef nonnull @.str.109, ptr noundef %call523) #11 - %66 = load ptr, ptr @bio_err, align 8 - call void @ERR_print_errors(ptr noundef %66) #11 + %63 = load ptr, ptr @bio_err, align 8 + %64 = load ptr, ptr %cipher, align 8 + %call523 = call ptr @EVP_CIPHER_get0_name(ptr noundef %64) #11 + %call524 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %63, ptr noundef nonnull @.str.109, ptr noundef %call523) #11 + %65 = load ptr, ptr @bio_err, align 8 + call void @ERR_print_errors(ptr noundef %65) #11 br label %end if.end525: ; preds = %if.end519 @@ -961,25 +961,25 @@ if.end525: ; preds = %if.end519 br i1 %tobool526.not, label %if.end529, label %if.then527 if.then527: ; preds = %if.end525 - %67 = load ptr, ptr %ctx, align 8 - %call528 = call i32 @EVP_CIPHER_CTX_set_padding(ptr noundef %67, i32 noundef 0) #11 + %66 = load ptr, ptr %ctx, align 8 + %call528 = call i32 @EVP_CIPHER_CTX_set_padding(ptr noundef %66, i32 noundef 0) #11 br label %if.end529 if.end529: ; preds = %if.then527, %if.end525 - %68 = load ptr, ptr %ctx, align 8 - %or.cond11 = and i1 %cmp466.not481, %tobool226 + %67 = load ptr, ptr %ctx, align 8 + %or.cond11 = and i1 %cmp466.not480, %tobool226 %cond540 = select i1 %or.cond11, ptr null, ptr %iv - %call541 = call i32 @EVP_CipherInit_ex(ptr noundef %68, ptr noundef null, ptr noundef null, ptr noundef nonnull %key, ptr noundef %cond540, i32 noundef %enc.0) #11 + %call541 = call i32 @EVP_CipherInit_ex(ptr noundef %67, ptr noundef null, ptr noundef null, ptr noundef nonnull %key, ptr noundef %cond540, i32 noundef %enc.0) #11 %tobool542.not = icmp eq i32 %call541, 0 br i1 %tobool542.not, label %if.then543, label %if.end546 if.then543: ; preds = %if.end529 - %69 = load ptr, ptr @bio_err, align 8 - %70 = load ptr, ptr %cipher, align 8 - %call544 = call ptr @EVP_CIPHER_get0_name(ptr noundef %70) #11 - %call545 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %69, ptr noundef nonnull @.str.109, ptr noundef %call544) #11 - %71 = load ptr, ptr @bio_err, align 8 - call void @ERR_print_errors(ptr noundef %71) #11 + %68 = load ptr, ptr @bio_err, align 8 + %69 = load ptr, ptr %cipher, align 8 + %call544 = call ptr @EVP_CIPHER_get0_name(ptr noundef %69) #11 + %call545 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %68, ptr noundef nonnull @.str.109, ptr noundef %call544) #11 + %70 = load ptr, ptr @bio_err, align 8 + call void @ERR_print_errors(ptr noundef %70) #11 br label %end if.end546: ; preds = %if.end529 @@ -987,8 +987,8 @@ if.end546: ; preds = %if.end529 if.then548: ; preds = %if.end546 call void @BIO_set_callback_ex(ptr noundef nonnull %call510, ptr noundef nonnull @BIO_debug_callback_ex) #11 - %72 = load ptr, ptr @bio_err, align 8 - call void @BIO_set_callback_arg(ptr noundef nonnull %call510, ptr noundef %72) #11 + %71 = load ptr, ptr @bio_err, align 8 + call void @BIO_set_callback_arg(ptr noundef nonnull %call510, ptr noundef %71) #11 br label %if.end549 if.end549: ; preds = %if.then548, %if.end546 @@ -1001,20 +1001,20 @@ if.then551: ; preds = %if.end549 if.then553: ; preds = %if.then551 %call554 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.110) - %73 = load i32, ptr %saltlen, align 4 - %cmp556310 = icmp sgt i32 %73, 0 + %72 = load i32, ptr %saltlen, align 4 + %cmp556310 = icmp sgt i32 %72, 0 br i1 %cmp556310, label %for.body, label %for.end562 for.body: ; preds = %if.then553, %for.body - %indvars.iv471 = phi i64 [ %indvars.iv.next472, %for.body ], [ 0, %if.then553 ] - %arrayidx559 = getelementptr inbounds nuw [16 x i8], ptr %salt, i64 0, i64 %indvars.iv471 - %74 = load i8, ptr %arrayidx559, align 1 - %conv560 = zext i8 %74 to i32 + %indvars.iv470 = phi i64 [ %indvars.iv.next471, %for.body ], [ 0, %if.then553 ] + %arrayidx559 = getelementptr inbounds nuw [16 x i8], ptr %salt, i64 0, i64 %indvars.iv470 + %73 = load i8, ptr %arrayidx559, align 1 + %conv560 = zext i8 %73 to i32 %call561 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.111, i32 noundef %conv560) - %indvars.iv.next472 = add nuw nsw i64 %indvars.iv471, 1 - %75 = load i32, ptr %saltlen, align 4 - %76 = sext i32 %75 to i64 - %cmp556 = icmp slt i64 %indvars.iv.next472, %76 + %indvars.iv.next471 = add nuw nsw i64 %indvars.iv470, 1 + %74 = load i32, ptr %saltlen, align 4 + %75 = sext i32 %74 to i64 + %cmp556 = icmp slt i64 %indvars.iv.next471, %75 br i1 %cmp556, label %for.body, label %for.end562, !llvm.loop !8 for.end562: ; preds = %for.body, %if.then553 @@ -1022,29 +1022,29 @@ for.end562: ; preds = %for.body, %if.then5 br label %if.end564 if.end564: ; preds = %for.end562, %if.then551 - %77 = load ptr, ptr %cipher, align 8 - %call565 = call i32 @EVP_CIPHER_get_key_length(ptr noundef %77) #11 + %76 = load ptr, ptr %cipher, align 8 + %call565 = call i32 @EVP_CIPHER_get_key_length(ptr noundef %76) #11 %cmp566 = icmp sgt i32 %call565, 0 br i1 %cmp566, label %if.then568, label %if.end583 if.then568: ; preds = %if.end564 %call569 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.112) - %78 = load ptr, ptr %cipher, align 8 - %call571312 = call i32 @EVP_CIPHER_get_key_length(ptr noundef %78) #11 + %77 = load ptr, ptr %cipher, align 8 + %call571312 = call i32 @EVP_CIPHER_get_key_length(ptr noundef %77) #11 %cmp572313 = icmp sgt i32 %call571312, 0 br i1 %cmp572313, label %for.body574, label %for.end581 for.body574: ; preds = %if.then568, %for.body574 - %indvars.iv474 = phi i64 [ %indvars.iv.next475, %for.body574 ], [ 0, %if.then568 ] - %arrayidx576 = getelementptr inbounds nuw [64 x i8], ptr %key, i64 0, i64 %indvars.iv474 - %79 = load i8, ptr %arrayidx576, align 1 - %conv577 = zext i8 %79 to i32 + %indvars.iv473 = phi i64 [ %indvars.iv.next474, %for.body574 ], [ 0, %if.then568 ] + %arrayidx576 = getelementptr inbounds nuw [64 x i8], ptr %key, i64 0, i64 %indvars.iv473 + %78 = load i8, ptr %arrayidx576, align 1 + %conv577 = zext i8 %78 to i32 %call578 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.111, i32 noundef %conv577) - %indvars.iv.next475 = add nuw nsw i64 %indvars.iv474, 1 - %80 = load ptr, ptr %cipher, align 8 - %call571 = call i32 @EVP_CIPHER_get_key_length(ptr noundef %80) #11 - %81 = sext i32 %call571 to i64 - %cmp572 = icmp slt i64 %indvars.iv.next475, %81 + %indvars.iv.next474 = add nuw nsw i64 %indvars.iv473, 1 + %79 = load ptr, ptr %cipher, align 8 + %call571 = call i32 @EVP_CIPHER_get_key_length(ptr noundef %79) #11 + %80 = sext i32 %call571 to i64 + %cmp572 = icmp slt i64 %indvars.iv.next474, %80 br i1 %cmp572, label %for.body574, label %for.end581, !llvm.loop !9 for.end581: ; preds = %for.body574, %if.then568 @@ -1052,29 +1052,29 @@ for.end581: ; preds = %for.body574, %if.th br label %if.end583 if.end583: ; preds = %for.end581, %if.end564 - %82 = load ptr, ptr %cipher, align 8 - %call584 = call i32 @EVP_CIPHER_get_iv_length(ptr noundef %82) #11 + %81 = load ptr, ptr %cipher, align 8 + %call584 = call i32 @EVP_CIPHER_get_iv_length(ptr noundef %81) #11 %cmp585 = icmp sgt i32 %call584, 0 br i1 %cmp585, label %if.then587, label %if.end602 if.then587: ; preds = %if.end583 %call588 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.113) - %83 = load ptr, ptr %cipher, align 8 - %call590315 = call i32 @EVP_CIPHER_get_iv_length(ptr noundef %83) #11 + %82 = load ptr, ptr %cipher, align 8 + %call590315 = call i32 @EVP_CIPHER_get_iv_length(ptr noundef %82) #11 %cmp591316 = icmp sgt i32 %call590315, 0 br i1 %cmp591316, label %for.body593, label %for.end600 for.body593: ; preds = %if.then587, %for.body593 - %indvars.iv477 = phi i64 [ %indvars.iv.next478, %for.body593 ], [ 0, %if.then587 ] - %arrayidx595 = getelementptr inbounds nuw [16 x i8], ptr %iv, i64 0, i64 %indvars.iv477 - %84 = load i8, ptr %arrayidx595, align 1 - %conv596 = zext i8 %84 to i32 + %indvars.iv476 = phi i64 [ %indvars.iv.next477, %for.body593 ], [ 0, %if.then587 ] + %arrayidx595 = getelementptr inbounds nuw [16 x i8], ptr %iv, i64 0, i64 %indvars.iv476 + %83 = load i8, ptr %arrayidx595, align 1 + %conv596 = zext i8 %83 to i32 %call597 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.111, i32 noundef %conv596) - %indvars.iv.next478 = add nuw nsw i64 %indvars.iv477, 1 - %85 = load ptr, ptr %cipher, align 8 - %call590 = call i32 @EVP_CIPHER_get_iv_length(ptr noundef %85) #11 - %86 = sext i32 %call590 to i64 - %cmp591 = icmp slt i64 %indvars.iv.next478, %86 + %indvars.iv.next477 = add nuw nsw i64 %indvars.iv476, 1 + %84 = load ptr, ptr %cipher, align 8 + %call590 = call i32 @EVP_CIPHER_get_iv_length(ptr noundef %84) #11 + %85 = sext i32 %call590 to i64 + %cmp591 = icmp slt i64 %indvars.iv.next477, %85 br i1 %cmp591, label %for.body593, label %for.end600, !llvm.loop !10 for.end600: ; preds = %for.body593, %if.then587 @@ -1096,14 +1096,14 @@ if.end613: ; preds = %if.end348, %if.then while.cond614.us: ; preds = %if.end613 %call615.us = call i64 @BIO_ctrl(ptr noundef %rbio.2, i32 noundef 10, i64 noundef 0, ptr noundef null) #11 - %87 = and i64 %call615.us, 4294967295 - %tobool617.not.us = icmp eq i64 %87, 0 + %86 = and i64 %call615.us, 4294967295 + %tobool617.not.us = icmp eq i64 %86, 0 br i1 %tobool617.not.us, label %lor.rhs618.us, label %while.body623.us lor.rhs618.us: ; preds = %while.cond614.us %call619.us = call i64 @BIO_ctrl(ptr noundef %rbio.2, i32 noundef 2, i64 noundef 0, ptr noundef null) #11 - %88 = and i64 %call619.us, 4294967295 - %tobool621.not.us = icmp eq i64 %88, 0 + %87 = and i64 %call619.us, 4294967295 + %tobool621.not.us = icmp eq i64 %87, 0 br i1 %tobool621.not.us, label %while.body623.us, label %while.end646 while.body623.us: ; preds = %lor.rhs618.us, %while.cond614.us @@ -1113,8 +1113,8 @@ while.body623.us: ; preds = %lor.rhs618.us, %whi land.lhs.true630.us: ; preds = %while.body623.us %call631.us = call i64 @BIO_ctrl(ptr noundef %rbio.2, i32 noundef 2, i64 noundef 0, ptr noundef null) #11 - %89 = and i64 %call631.us, 4294967295 - %tobool633.not.us = icmp eq i64 %89, 0 + %88 = and i64 %call631.us, 4294967295 + %tobool633.not.us = icmp eq i64 %88, 0 br i1 %tobool633.not.us, label %if.then634, label %if.end636.us if.end636.us: ; preds = %land.lhs.true630.us @@ -1124,14 +1124,14 @@ if.end636.us: ; preds = %land.lhs.true630.us while.cond614: ; preds = %if.end613, %if.end628 %call615 = call i64 @BIO_ctrl(ptr noundef %rbio.2, i32 noundef 10, i64 noundef 0, ptr noundef null) #11 - %90 = and i64 %call615, 4294967295 - %tobool617.not = icmp eq i64 %90, 0 + %89 = and i64 %call615, 4294967295 + %tobool617.not = icmp eq i64 %89, 0 br i1 %tobool617.not, label %lor.rhs618, label %while.body623 lor.rhs618: ; preds = %while.cond614 %call619 = call i64 @BIO_ctrl(ptr noundef %rbio.2, i32 noundef 2, i64 noundef 0, ptr noundef null) #11 - %91 = and i64 %call619, 4294967295 - %tobool621.not = icmp eq i64 %91, 0 + %90 = and i64 %call619, 4294967295 + %tobool621.not = icmp eq i64 %90, 0 br i1 %tobool621.not, label %while.body623, label %while.end646 while.body623: ; preds = %while.cond614, %lor.rhs618 @@ -1145,43 +1145,43 @@ if.end628: ; preds = %while.body623 br i1 %cmp638.not, label %while.cond614, label %if.then640 if.then634: ; preds = %land.lhs.true630.us - %92 = load ptr, ptr @bio_err, align 8 - %call635 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %92, ptr noundef nonnull @.str.91) #11 + %91 = load ptr, ptr @bio_err, align 8 + %call635 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %91, ptr noundef nonnull @.str.91) #11 br label %end if.then640: ; preds = %if.end628, %if.end636.us - %93 = load ptr, ptr @bio_err, align 8 - %call641 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %93, ptr noundef nonnull @.str.99) #11 + %92 = load ptr, ptr @bio_err, align 8 + %call641 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %92, ptr noundef nonnull @.str.99) #11 br label %end while.end646: ; preds = %lor.rhs618, %while.body623, %lor.rhs618.us, %while.body623.us, %if.end636.us %call647 = call i64 @BIO_ctrl(ptr noundef %wbio.3, i32 noundef 11, i64 noundef 0, ptr noundef null) #11 - %94 = and i64 %call647, 4294967295 - %tobool649.not = icmp eq i64 %94, 0 + %93 = and i64 %call647, 4294967295 + %tobool649.not = icmp eq i64 %93, 0 br i1 %tobool649.not, label %if.then650, label %if.end657 if.then650: ; preds = %while.end646 - %95 = load ptr, ptr @bio_err, align 8 + %94 = load ptr, ptr @bio_err, align 8 br i1 %tobool209.not, label %if.else654, label %if.then652 if.then652: ; preds = %if.then650 - %call653 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %95, ptr noundef nonnull @.str.114) #11 + %call653 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %94, ptr noundef nonnull @.str.114) #11 br label %end if.else654: ; preds = %if.then650 - %call655 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %95, ptr noundef nonnull @.str.115) #11 + %call655 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %94, ptr noundef nonnull @.str.115) #11 br label %end if.end657: ; preds = %while.end646 br i1 %tobool197.not, label %end, label %if.then659 if.then659: ; preds = %if.end657 - %96 = load ptr, ptr @bio_err, align 8 + %95 = load ptr, ptr @bio_err, align 8 %call660 = call i64 @BIO_number_read(ptr noundef %in.4) #11 - %call661 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %96, ptr noundef nonnull @.str.116, i64 noundef %call660) #11 - %97 = load ptr, ptr @bio_err, align 8 + %call661 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %95, ptr noundef nonnull @.str.116, i64 noundef %call660) #11 + %96 = load ptr, ptr @bio_err, align 8 %call662 = call i64 @BIO_number_written(ptr noundef %call284) #11 - %call663 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %97, ptr noundef nonnull @.str.117, i64 noundef %call662) #11 + %call663 = call i32 (ptr, ptr, ...) @BIO_printf(ptr noundef %96, ptr noundef nonnull @.str.117, i64 noundef %call662) #11 br label %end end: ; preds = %sw.bb142, %sw.bb136, %if.end602, %if.then270, %if.end657, %if.then659, %if.then652, %if.else654, %if.end508, %if.then329, %if.end283, %if.end236, %if.end151, %if.then640, %if.then634, %if.then543, %if.then522, %if.then505, %if.then495, %if.then478, %if.then456, %if.then440, %if.else420, %if.then417, %if.then405, %if.then392, %if.then377, %if.then365, %if.then280, %if.then249, %if.then230, %sw.bb12, %sw.bb11, %opthelp @@ -1192,23 +1192,23 @@ end: ; preds = %sw.bb142, %sw.bb136 %b64.0 = phi ptr [ null, %opthelp ], [ null, %sw.bb12 ], [ null, %sw.bb11 ], [ null, %if.then230 ], [ null, %if.end236 ], [ null, %if.end283 ], [ null, %if.then329 ], [ %b64.1, %if.then495 ], [ %b64.1, %if.end508 ], [ %b64.1, %if.then659 ], [ %b64.1, %if.end657 ], [ %b64.1, %if.then652 ], [ %b64.1, %if.else654 ], [ %b64.1, %if.then640 ], [ %b64.1, %if.then634 ], [ %b64.1, %if.then543 ], [ %b64.1, %if.then522 ], [ %b64.1, %if.then505 ], [ %b64.1, %if.then478 ], [ %b64.1, %if.then440 ], [ %b64.1, %if.then456 ], [ %b64.1, %if.then377 ], [ %b64.1, %if.then392 ], [ %b64.1, %if.then405 ], [ %b64.1, %if.then417 ], [ %b64.1, %if.else420 ], [ %b64.1, %if.then365 ], [ null, %if.then280 ], [ null, %if.then249 ], [ null, %if.end151 ], [ null, %if.then270 ], [ %b64.1, %if.end602 ], [ null, %sw.bb136 ], [ null, %sw.bb142 ] %out.0 = phi ptr [ null, %opthelp ], [ null, %sw.bb12 ], [ null, %sw.bb11 ], [ null, %if.then230 ], [ null, %if.end236 ], [ null, %if.end283 ], [ %call284, %if.then329 ], [ %call284, %if.then495 ], [ %call284, %if.end508 ], [ %call284, %if.then659 ], [ %call284, %if.end657 ], [ %call284, %if.then652 ], [ %call284, %if.else654 ], [ %call284, %if.then640 ], [ %call284, %if.then634 ], [ %call284, %if.then543 ], [ %call284, %if.then522 ], [ %call284, %if.then505 ], [ %call284, %if.then478 ], [ %call284, %if.then440 ], [ %call284, %if.then456 ], [ %call284, %if.then377 ], [ %call284, %if.then392 ], [ %call284, %if.then405 ], [ %call284, %if.then417 ], [ %call284, %if.else420 ], [ %call284, %if.then365 ], [ null, %if.then280 ], [ null, %if.then249 ], [ null, %if.end151 ], [ null, %if.then270 ], [ %call284, %if.end602 ], [ null, %sw.bb136 ], [ null, %sw.bb142 ] %in.3 = phi ptr [ null, %opthelp ], [ null, %sw.bb12 ], [ null, %sw.bb11 ], [ null, %if.then230 ], [ null, %if.end236 ], [ %in.4, %if.end283 ], [ %in.4, %if.then329 ], [ %in.4, %if.then495 ], [ %in.4, %if.end508 ], [ %in.4, %if.then659 ], [ %in.4, %if.end657 ], [ %in.4, %if.then652 ], [ %in.4, %if.else654 ], [ %in.4, %if.then640 ], [ %in.4, %if.then634 ], [ %in.4, %if.then543 ], [ %in.4, %if.then522 ], [ %in.4, %if.then505 ], [ %in.4, %if.then478 ], [ %in.4, %if.then440 ], [ %in.4, %if.then456 ], [ %in.4, %if.then377 ], [ %in.4, %if.then392 ], [ %in.4, %if.then405 ], [ %in.4, %if.then417 ], [ %in.4, %if.else420 ], [ %in.4, %if.then365 ], [ %in.4, %if.then280 ], [ %in.4, %if.then249 ], [ null, %if.end151 ], [ %in.4, %if.then270 ], [ %in.4, %if.end602 ], [ null, %sw.bb136 ], [ null, %sw.bb142 ] - %98 = load ptr, ptr @bio_err, align 8 - call void @ERR_print_errors(ptr noundef %98) #11 + %97 = load ptr, ptr @bio_err, align 8 + call void @ERR_print_errors(ptr noundef %97) #11 call void @CRYPTO_free(ptr noundef %strbuf.0, ptr noundef nonnull @.str.118, i32 noundef 718) #11 call void @CRYPTO_free(ptr noundef %buff.0, ptr noundef nonnull @.str.118, i32 noundef 719) #11 %call665 = call i32 @BIO_free(ptr noundef %in.3) #11 call void @BIO_free_all(ptr noundef %out.0) #11 %call666 = call i32 @BIO_free(ptr noundef %benc.0) #11 %call667 = call i32 @BIO_free(ptr noundef %b64.0) #11 - %99 = load ptr, ptr %dgst, align 8 - call void @EVP_MD_free(ptr noundef %99) #11 - %100 = load ptr, ptr %cipher, align 8 - call void @EVP_CIPHER_free(ptr noundef %100) #11 + %98 = load ptr, ptr %dgst, align 8 + call void @EVP_MD_free(ptr noundef %98) #11 + %99 = load ptr, ptr %cipher, align 8 + call void @EVP_CIPHER_free(ptr noundef %99) #11 %call668 = call i32 @BIO_free(ptr noundef null) #11 %call669 = call i32 @BIO_free(ptr noundef null) #11 call void @release_engine(ptr noundef %e.0) #11 - %101 = load ptr, ptr %pass, align 8 - call void @CRYPTO_free(ptr noundef %101, ptr noundef nonnull @.str.118, i32 noundef 732) #11 + %100 = load ptr, ptr %pass, align 8 + call void @CRYPTO_free(ptr noundef %100, ptr noundef nonnull @.str.118, i32 noundef 732) #11 ret i32 %ret.0 } diff --git a/bench/postgres/optimized/zic.ll b/bench/postgres/optimized/zic.ll index aa3052c6ff0..e29fc2ea56e 100644 --- a/bench/postgres/optimized/zic.ll +++ b/bench/postgres/optimized/zic.ll @@ -826,23 +826,23 @@ oadd.exit.i: ; preds = %.thread.i adjleap.exit: ; preds = %255, %253, %237, %234, %203 %257 = load i32, ptr @optind, align 4 %258 = icmp slt i32 %257, %0 - br i1 %258, label %.lr.ph194.preheader, label %._crit_edge + br i1 %258, label %.lr.ph196.preheader, label %._crit_edge -.lr.ph194.preheader: ; preds = %adjleap.exit +.lr.ph196.preheader: ; preds = %adjleap.exit %259 = sext i32 %257 to i64 - br label %.lr.ph194 + br label %.lr.ph196 -.lr.ph194: ; preds = %.lr.ph194.preheader, %.lr.ph194 - %indvars.iv304 = phi i64 [ %259, %.lr.ph194.preheader ], [ %indvars.iv.next305, %.lr.ph194 ] - %260 = getelementptr ptr, ptr %1, i64 %indvars.iv304 +.lr.ph196: ; preds = %.lr.ph196.preheader, %.lr.ph196 + %indvars.iv308 = phi i64 [ %259, %.lr.ph196.preheader ], [ %indvars.iv.next309, %.lr.ph196 ] + %260 = getelementptr ptr, ptr %1, i64 %indvars.iv308 %261 = load ptr, ptr %260, align 8 tail call fastcc void @infile(ptr noundef %261) - %indvars.iv.next305 = add nsw i64 %indvars.iv304, 1 - %lftr.wideiv = trunc i64 %indvars.iv.next305 to i32 - %exitcond307.not = icmp eq i32 %0, %lftr.wideiv - br i1 %exitcond307.not, label %._crit_edge, label %.lr.ph194, !llvm.loop !9 + %indvars.iv.next309 = add nsw i64 %indvars.iv308, 1 + %lftr.wideiv = trunc i64 %indvars.iv.next309 to i32 + %exitcond311.not = icmp eq i32 %0, %lftr.wideiv + br i1 %exitcond311.not, label %._crit_edge, label %.lr.ph196, !llvm.loop !9 -._crit_edge: ; preds = %.lr.ph194, %adjleap.exit +._crit_edge: ; preds = %.lr.ph196, %adjleap.exit %.b5254 = load i1, ptr @errors, align 1 br i1 %.b5254, label %close_file.exit, label %262 @@ -1207,9 +1207,9 @@ change_directory.exit: ; preds = %associate.exit, %39 .preheader92: ; preds = %.preheader92.lr.ph, %outzone.exit %453 = phi i64 [ %408, %.preheader92.lr.ph ], [ %2140, %outzone.exit ] - %.043195 = phi i64 [ 0, %.preheader92.lr.ph ], [ %.041.lcssa, %outzone.exit ] + %.043197 = phi i64 [ 0, %.preheader92.lr.ph ], [ %.041.lcssa, %outzone.exit ] %454 = load ptr, ptr @zones, align 8 - %455 = add nsw i64 %.043195, 1 + %455 = add nsw i64 %.043197, 1 %smax = call i64 @llvm.smax.i64(i64 %453, i64 %455) %456 = add nsw i64 %smax, -1 br label %459 @@ -1217,12 +1217,12 @@ change_directory.exit: ; preds = %associate.exit, %39 .preheader91: ; preds = %outzone.exit, %change_directory.exit %457 = load i64, ptr @nlinks, align 8 %458 = icmp sgt i64 %457, 0 - br i1 %458, label %.lr.ph200, label %._crit_edge201 + br i1 %458, label %.lr.ph202, label %._crit_edge203 459: ; preds = %.preheader92, %460 - %.041.in = phi i64 [ %.041, %460 ], [ %.043195, %.preheader92 ] - %exitcond308.not = icmp eq i64 %.041.in, %456 - br i1 %exitcond308.not, label %.critedge, label %460 + %.041.in = phi i64 [ %.041, %460 ], [ %.043197, %.preheader92 ] + %exitcond312.not = icmp eq i64 %.041.in, %456 + br i1 %exitcond312.not, label %.critedge, label %460 460: ; preds = %459 %.041 = add nsw i64 %.041.in, 1 @@ -1233,8 +1233,8 @@ change_directory.exit: ; preds = %associate.exit, %39 .critedge: ; preds = %459, %460 %.041.lcssa = phi i64 [ %smax, %459 ], [ %.041, %460 ] - %464 = getelementptr %struct.zone, ptr %454, i64 %.043195 - %465 = sub i64 %.041.lcssa, %.043195 + %464 = getelementptr %struct.zone, ptr %454, i64 %.043197 + %465 = sub i64 %.041.lcssa, %.043197 call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %23) %466 = load i32, ptr @max_format_len, align 4 %467 = add i32 %466, 2 @@ -1296,19 +1296,19 @@ emalloc.exit337.i: ; preds = %emalloc.exit336.i br i1 %496, label %updateminmax.exit.sink.split.i, label %497 497: ; preds = %494 - %.not971.i = icmp eq i64 %495, 1970 - br i1 %.not971.i, label %updateminmax.exit.i, label %updateminmax.exit.sink.split.i + %.not977.i = icmp eq i64 %495, 1970 + br i1 %.not977.i, label %updateminmax.exit.i, label %updateminmax.exit.sink.split.i updateminmax.exit.sink.split.i: ; preds = %497, %494 %min_year.sink.i = phi ptr [ @min_year, %494 ], [ @max_year, %497 ] - %.ph965.i = phi i64 [ %495, %494 ], [ 1970, %497 ] - %.ph966.i = phi i64 [ 1970, %494 ], [ %495, %497 ] + %.ph971.i = phi i64 [ %495, %494 ], [ 1970, %497 ] + %.ph972.i = phi i64 [ 1970, %494 ], [ %495, %497 ] store i64 %495, ptr %min_year.sink.i, align 8 br label %updateminmax.exit.i updateminmax.exit.i: ; preds = %updateminmax.exit.sink.split.i, %497 - %498 = phi i64 [ 1970, %497 ], [ %.ph965.i, %updateminmax.exit.sink.split.i ] - %499 = phi i64 [ 1970, %497 ], [ %.ph966.i, %updateminmax.exit.sink.split.i ] + %498 = phi i64 [ 1970, %497 ], [ %.ph971.i, %updateminmax.exit.sink.split.i ] + %499 = phi i64 [ 1970, %497 ], [ %.ph972.i, %updateminmax.exit.sink.split.i ] %500 = load i64, ptr @leapmaxyear, align 8 %501 = add nsw i64 %500, 1 %502 = icmp sgt i64 %498, %501 @@ -1319,7 +1319,7 @@ updateminmax.exit.i: ; preds = %updateminmax.exit.s br label %504 504: ; preds = %503, %updateminmax.exit.i - %min_year.promoted659830.i = phi i64 [ %501, %503 ], [ %498, %updateminmax.exit.i ] + %min_year.promoted661834.i = phi i64 [ %501, %503 ], [ %498, %updateminmax.exit.i ] %.not449.i = icmp sgt i64 %499, %500 br i1 %.not449.i, label %updateminmax.exit338.i, label %505 @@ -1328,28 +1328,28 @@ updateminmax.exit.i: ; preds = %updateminmax.exit.s br label %updateminmax.exit338.i updateminmax.exit338.i: ; preds = %505, %504, %emalloc.exit337.i - %min_year.promoted659.i = phi i64 [ %min_year.promoted659830.i, %505 ], [ %min_year.promoted659830.i, %504 ], [ 1970, %emalloc.exit337.i ] - %max_year.promoted669.i = phi i64 [ %501, %505 ], [ %499, %504 ], [ 1970, %emalloc.exit337.i ] + %min_year.promoted661.i = phi i64 [ %min_year.promoted661834.i, %505 ], [ %min_year.promoted661834.i, %504 ], [ 1970, %emalloc.exit337.i ] + %max_year.promoted671.i = phi i64 [ %501, %505 ], [ %499, %504 ], [ 1970, %emalloc.exit337.i ] %506 = icmp sgt i64 %465, 0 - br i1 %506, label %.lr.ph681.i, label %._crit_edge682.i + br i1 %506, label %.lr.ph683.i, label %._crit_edge684.i -.lr.ph681.i: ; preds = %updateminmax.exit338.i +.lr.ph683.i: ; preds = %updateminmax.exit338.i %507 = add nsw i64 %465, -1 br label %508 -508: ; preds = %._crit_edge.i86, %.lr.ph681.i - %.0269680.i = phi i64 [ 0, %.lr.ph681.i ], [ %561, %._crit_edge.i86 ] - %.0300679.i = phi i1 [ %493, %.lr.ph681.i ], [ %.1301.lcssa.i, %._crit_edge.i86 ] - %min_year.promoted668678.i = phi i64 [ %min_year.promoted659.i, %.lr.ph681.i ], [ %min_year.promoted660.i, %._crit_edge.i86 ] - %max_year.promoted670677.i = phi i64 [ %max_year.promoted669.i, %.lr.ph681.i ], [ %max_year.promoted671.i, %._crit_edge.i86 ] - %509 = getelementptr %struct.zone, ptr %464, i64 %.0269680.i - %510 = icmp slt i64 %.0269680.i, %507 +508: ; preds = %._crit_edge.i86, %.lr.ph683.i + %.0269682.i = phi i64 [ 0, %.lr.ph683.i ], [ %561, %._crit_edge.i86 ] + %.0300681.i = phi i1 [ %493, %.lr.ph683.i ], [ %.1301.lcssa.i, %._crit_edge.i86 ] + %min_year.promoted670680.i = phi i64 [ %min_year.promoted661.i, %.lr.ph683.i ], [ %min_year.promoted662.i, %._crit_edge.i86 ] + %max_year.promoted672679.i = phi i64 [ %max_year.promoted671.i, %.lr.ph683.i ], [ %max_year.promoted673.i, %._crit_edge.i86 ] + %509 = getelementptr %struct.zone, ptr %464, i64 %.0269682.i + %510 = icmp slt i64 %.0269682.i, %507 br i1 %510, label %511, label %updateminmax.exit339.i 511: ; preds = %508 %512 = getelementptr inbounds nuw i8, ptr %509, i64 104 %513 = load i64, ptr %512, align 8 - %514 = icmp sgt i64 %min_year.promoted668678.i, %513 + %514 = icmp sgt i64 %min_year.promoted670680.i, %513 br i1 %514, label %515, label %516 515: ; preds = %511 @@ -1357,8 +1357,8 @@ updateminmax.exit338.i: ; preds = %505, %504, %emalloc br label %516 516: ; preds = %515, %511 - %min_year.promoted667.i = phi i64 [ %513, %515 ], [ %min_year.promoted668678.i, %511 ] - %517 = icmp slt i64 %max_year.promoted670677.i, %513 + %min_year.promoted669.i = phi i64 [ %513, %515 ], [ %min_year.promoted670680.i, %511 ] + %517 = icmp slt i64 %max_year.promoted672679.i, %513 br i1 %517, label %518, label %updateminmax.exit339.i 518: ; preds = %516 @@ -1366,8 +1366,8 @@ updateminmax.exit338.i: ; preds = %505, %504, %emalloc br label %updateminmax.exit339.i updateminmax.exit339.i: ; preds = %518, %516, %508 - %max_year.promoted676.i = phi i64 [ %513, %518 ], [ %max_year.promoted670677.i, %516 ], [ %max_year.promoted670677.i, %508 ] - %min_year.promoted666.i = phi i64 [ %min_year.promoted667.i, %518 ], [ %min_year.promoted667.i, %516 ], [ %min_year.promoted668678.i, %508 ] + %max_year.promoted678.i = phi i64 [ %513, %518 ], [ %max_year.promoted672679.i, %516 ], [ %max_year.promoted672679.i, %508 ] + %min_year.promoted668.i = phi i64 [ %min_year.promoted669.i, %518 ], [ %min_year.promoted669.i, %516 ], [ %min_year.promoted670680.i, %508 ] %519 = getelementptr inbounds nuw i8, ptr %509, i64 72 %520 = load i64, ptr %519, align 8 %521 = icmp sgt i64 %520, 0 @@ -1379,13 +1379,13 @@ updateminmax.exit339.i: ; preds = %518, %516, %508 br label %524 524: ; preds = %.thread.i88, %.lr.ph.i87 - %max_year.promoted675.i = phi i64 [ %max_year.promoted676.i, %.lr.ph.i87 ], [ %max_year.promoted672.i, %.thread.i88 ] - %min_year.promoted665.i = phi i64 [ %min_year.promoted666.i, %.lr.ph.i87 ], [ %min_year.promoted661.i, %.thread.i88 ] - %.0272658.i = phi i64 [ 0, %.lr.ph.i87 ], [ %560, %.thread.i88 ] - %.1301657.i = phi i1 [ %.0300679.i, %.lr.ph.i87 ], [ %.2302.i, %.thread.i88 ] - %525 = phi i64 [ %min_year.promoted666.i, %.lr.ph.i87 ], [ %559, %.thread.i88 ] - %526 = phi i64 [ %max_year.promoted676.i, %.lr.ph.i87 ], [ %558, %.thread.i88 ] - %527 = getelementptr %struct.rule, ptr %523, i64 %.0272658.i + %max_year.promoted677.i = phi i64 [ %max_year.promoted678.i, %.lr.ph.i87 ], [ %max_year.promoted674.i, %.thread.i88 ] + %min_year.promoted667.i = phi i64 [ %min_year.promoted668.i, %.lr.ph.i87 ], [ %min_year.promoted663.i, %.thread.i88 ] + %.0272660.i = phi i64 [ 0, %.lr.ph.i87 ], [ %560, %.thread.i88 ] + %.1301659.i = phi i1 [ %.0300681.i, %.lr.ph.i87 ], [ %.2302.i, %.thread.i88 ] + %525 = phi i64 [ %min_year.promoted668.i, %.lr.ph.i87 ], [ %559, %.thread.i88 ] + %526 = phi i64 [ %max_year.promoted678.i, %.lr.ph.i87 ], [ %558, %.thread.i88 ] + %527 = getelementptr %struct.rule, ptr %523, i64 %.0272660.i %528 = getelementptr inbounds nuw i8, ptr %527, i64 40 %529 = load i8, ptr %528, align 8 %530 = trunc i8 %529 to i1 @@ -1402,7 +1402,7 @@ updateminmax.exit339.i: ; preds = %518, %516, %508 br label %536 536: ; preds = %535, %531 - %min_year.promoted664.i = phi i64 [ %533, %535 ], [ %min_year.promoted665.i, %531 ] + %min_year.promoted666.i = phi i64 [ %533, %535 ], [ %min_year.promoted667.i, %531 ] %537 = phi i64 [ %533, %535 ], [ %525, %531 ] %538 = icmp slt i64 %526, %533 br i1 %538, label %539, label %updateminmax.exit340.i @@ -1412,7 +1412,7 @@ updateminmax.exit339.i: ; preds = %518, %516, %508 br label %updateminmax.exit340.i updateminmax.exit340.i: ; preds = %539, %536 - %max_year.promoted674.i = phi i64 [ %533, %539 ], [ %max_year.promoted675.i, %536 ] + %max_year.promoted676.i = phi i64 [ %533, %539 ], [ %max_year.promoted677.i, %536 ] %540 = phi i64 [ %533, %539 ], [ %526, %536 ] %541 = getelementptr inbounds nuw i8, ptr %527, i64 41 %542 = load i8, ptr %541, align 1 @@ -1426,8 +1426,8 @@ updateminmax.exit340.thread.i: ; preds = %524 br i1 %546, label %547, label %.thread.i88 547: ; preds = %updateminmax.exit340.thread.i, %updateminmax.exit340.i - %max_year.promoted673.i = phi i64 [ %max_year.promoted675.i, %updateminmax.exit340.thread.i ], [ %max_year.promoted674.i, %updateminmax.exit340.i ] - %min_year.promoted663.i = phi i64 [ %min_year.promoted665.i, %updateminmax.exit340.thread.i ], [ %min_year.promoted664.i, %updateminmax.exit340.i ] + %max_year.promoted675.i = phi i64 [ %max_year.promoted677.i, %updateminmax.exit340.thread.i ], [ %max_year.promoted676.i, %updateminmax.exit340.i ] + %min_year.promoted665.i = phi i64 [ %min_year.promoted667.i, %updateminmax.exit340.thread.i ], [ %min_year.promoted666.i, %updateminmax.exit340.i ] %548 = phi i64 [ %526, %updateminmax.exit340.thread.i ], [ %540, %updateminmax.exit340.i ] %549 = phi i64 [ %525, %updateminmax.exit340.thread.i ], [ %537, %updateminmax.exit340.i ] %550 = getelementptr inbounds nuw i8, ptr %527, i64 32 @@ -1440,7 +1440,7 @@ updateminmax.exit340.thread.i: ; preds = %524 br label %554 554: ; preds = %553, %547 - %min_year.promoted662.i = phi i64 [ %551, %553 ], [ %min_year.promoted663.i, %547 ] + %min_year.promoted664.i = phi i64 [ %551, %553 ], [ %min_year.promoted665.i, %547 ] %555 = phi i64 [ %551, %553 ], [ %549, %547 ] %556 = icmp slt i64 %548, %551 br i1 %556, label %557, label %.thread.i88 @@ -1450,24 +1450,24 @@ updateminmax.exit340.thread.i: ; preds = %524 br label %.thread.i88 .thread.i88: ; preds = %557, %554, %updateminmax.exit340.thread.i, %updateminmax.exit340.i - %max_year.promoted672.i = phi i64 [ %max_year.promoted675.i, %updateminmax.exit340.thread.i ], [ %max_year.promoted674.i, %updateminmax.exit340.i ], [ %max_year.promoted673.i, %554 ], [ %551, %557 ] - %min_year.promoted661.i = phi i64 [ %min_year.promoted665.i, %updateminmax.exit340.thread.i ], [ %min_year.promoted664.i, %updateminmax.exit340.i ], [ %min_year.promoted662.i, %554 ], [ %min_year.promoted662.i, %557 ] + %max_year.promoted674.i = phi i64 [ %max_year.promoted677.i, %updateminmax.exit340.thread.i ], [ %max_year.promoted676.i, %updateminmax.exit340.i ], [ %max_year.promoted675.i, %554 ], [ %551, %557 ] + %min_year.promoted663.i = phi i64 [ %min_year.promoted667.i, %updateminmax.exit340.thread.i ], [ %min_year.promoted666.i, %updateminmax.exit340.i ], [ %min_year.promoted664.i, %554 ], [ %min_year.promoted664.i, %557 ] %558 = phi i64 [ %526, %updateminmax.exit340.thread.i ], [ %540, %updateminmax.exit340.i ], [ %548, %554 ], [ %551, %557 ] %559 = phi i64 [ %525, %updateminmax.exit340.thread.i ], [ %537, %updateminmax.exit340.i ], [ %555, %554 ], [ %555, %557 ] - %.2302.i = phi i1 [ %.1301657.i, %updateminmax.exit340.thread.i ], [ false, %updateminmax.exit340.i ], [ false, %554 ], [ false, %557 ] - %560 = add nuw nsw i64 %.0272658.i, 1 + %.2302.i = phi i1 [ %.1301659.i, %updateminmax.exit340.thread.i ], [ false, %updateminmax.exit340.i ], [ false, %554 ], [ false, %557 ] + %560 = add nuw nsw i64 %.0272660.i, 1 %exitcond.not.i89 = icmp eq i64 %560, %520 br i1 %exitcond.not.i89, label %._crit_edge.i86, label %524, !llvm.loop !18 ._crit_edge.i86: ; preds = %.thread.i88, %updateminmax.exit339.i - %max_year.promoted671.i = phi i64 [ %max_year.promoted676.i, %updateminmax.exit339.i ], [ %max_year.promoted672.i, %.thread.i88 ] - %min_year.promoted660.i = phi i64 [ %min_year.promoted666.i, %updateminmax.exit339.i ], [ %min_year.promoted661.i, %.thread.i88 ] - %.1301.lcssa.i = phi i1 [ %.0300679.i, %updateminmax.exit339.i ], [ %.2302.i, %.thread.i88 ] - %561 = add nuw nsw i64 %.0269680.i, 1 - %exitcond824.not.i = icmp eq i64 %561, %465 - br i1 %exitcond824.not.i, label %._crit_edge682.i, label %508, !llvm.loop !19 - -._crit_edge682.i: ; preds = %._crit_edge.i86, %updateminmax.exit338.i + %max_year.promoted673.i = phi i64 [ %max_year.promoted678.i, %updateminmax.exit339.i ], [ %max_year.promoted674.i, %.thread.i88 ] + %min_year.promoted662.i = phi i64 [ %min_year.promoted668.i, %updateminmax.exit339.i ], [ %min_year.promoted663.i, %.thread.i88 ] + %.1301.lcssa.i = phi i1 [ %.0300681.i, %updateminmax.exit339.i ], [ %.2302.i, %.thread.i88 ] + %561 = add nuw nsw i64 %.0269682.i, 1 + %exitcond828.not.i = icmp eq i64 %561, %465 + br i1 %exitcond828.not.i, label %._crit_edge684.i, label %508, !llvm.loop !19 + +._crit_edge684.i: ; preds = %._crit_edge.i86, %updateminmax.exit338.i %.0300.lcssa.i = phi i1 [ %493, %updateminmax.exit338.i ], [ %.1301.lcssa.i, %._crit_edge.i86 ] call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %21) call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %22) @@ -1476,7 +1476,7 @@ updateminmax.exit340.thread.i: ; preds = %524 %.not.i.i76 = icmp eq i64 %562, 9223372036854775807 br i1 %.not.i.i76, label %563, label %stringzone.exit.i -563: ; preds = %._crit_edge682.i +563: ; preds = %._crit_edge684.i %564 = getelementptr %struct.zone, ptr %454, i64 %.041.lcssa %565 = getelementptr i8, ptr %564, i64 -200 %566 = getelementptr i8, ptr %564, i64 -128 @@ -1915,8 +1915,8 @@ stringoffset.exit139.i.i: ; preds = %746, %741, %736 %spec.select125.i.i = call i32 @llvm.umax.i32(i32 %760, i32 %769) br label %stringzone.exit.i -stringzone.exit.i: ; preds = %585, %583, %772, %771, %762, %751, %703, %702, %662, %.thread158.i.i, %661, %._crit_edge191.i.i, %._crit_edge682.i - %.0102.i.i = phi i32 [ -1, %762 ], [ -1, %771 ], [ %spec.select125.i.i, %772 ], [ -1, %751 ], [ -1, %702 ], [ -1, %._crit_edge682.i ], [ -1, %662 ], [ -1, %.thread158.i.i ], [ 0, %703 ], [ -1, %._crit_edge191.i.i ], [ -1, %661 ], [ -1, %583 ], [ -1, %585 ] +stringzone.exit.i: ; preds = %585, %583, %772, %771, %762, %751, %703, %702, %662, %.thread158.i.i, %661, %._crit_edge191.i.i, %._crit_edge684.i + %.0102.i.i = phi i32 [ -1, %762 ], [ -1, %771 ], [ %spec.select125.i.i, %772 ], [ -1, %751 ], [ -1, %702 ], [ -1, %._crit_edge684.i ], [ -1, %662 ], [ -1, %.thread158.i.i ], [ 0, %703 ], [ -1, %._crit_edge191.i.i ], [ -1, %661 ], [ -1, %583 ], [ -1, %585 ] call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %21) call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %22) %773 = icmp sgt i32 %.0102.i.i, -1 @@ -1949,7 +1949,7 @@ stringzone.exit.i: ; preds = %585, %583, %772, %7 br label %783 783: ; preds = %780, %776, %stringzone.exit.i - %.pr.pre831.i = load i64, ptr @max_year, align 8 + %.pr.pre835.i = load i64, ptr @max_year, align 8 br i1 %773, label %thread-pre-split.i77, label %784 784: ; preds = %783 @@ -1957,7 +1957,7 @@ stringzone.exit.i: ; preds = %585, %583, %772, %7 %786 = call i64 @llvm.smax.i64(i64 %785, i64 -9223372036854775406) %storemerge.i = add nsw i64 %786, -402 store i64 %storemerge.i, ptr @min_year, align 8 - %787 = call i64 @llvm.smin.i64(i64 %.pr.pre831.i, i64 9223372036854775405) + %787 = call i64 @llvm.smin.i64(i64 %.pr.pre835.i, i64 9223372036854775405) %storemerge324.i = add nsw i64 %787, 402 store i64 %storemerge324.i, ptr @max_year, align 8 br i1 %.0300.lcssa.i, label %788, label %thread-pre-split.i77 @@ -1968,7 +1968,7 @@ stringzone.exit.i: ; preds = %585, %583, %772, %7 br label %thread-pre-split.i77 thread-pre-split.i77: ; preds = %788, %784, %783, %.thread-pre-split_crit_edge.i - %789 = phi i64 [ %storemerge324.i, %784 ], [ 2302, %788 ], [ %.pr.pre.i, %.thread-pre-split_crit_edge.i ], [ %.pr.pre831.i, %783 ] + %789 = phi i64 [ %storemerge324.i, %784 ], [ 2302, %788 ], [ %.pr.pre.i, %.thread-pre-split_crit_edge.i ], [ %.pr.pre835.i, %783 ] %790 = load i32, ptr @bloat, align 4 %791 = icmp sgt i32 %790, -1 br i1 %791, label %792, label %799 @@ -1991,23 +1991,23 @@ thread-pre-split.i77: ; preds = %788, %784, %783, %. br label %799 799: ; preds = %798, %796, %thread-pre-split.i77 - br i1 %506, label %.lr.ph727.i, label %._crit_edge728.thread.i + br i1 %506, label %.lr.ph729.i, label %._crit_edge730.thread.i -.lr.ph727.i: ; preds = %799 +.lr.ph729.i: ; preds = %799 %800 = add nsw i64 %465, -1 br label %801 -801: ; preds = %tadd.exit393.i, %.lr.ph727.i - %.0267725.i = phi i32 [ -1, %.lr.ph727.i ], [ %.1268.i, %tadd.exit393.i ] - %.1270724.i = phi i64 [ 0, %.lr.ph727.i ], [ %1345, %tadd.exit393.i ] - %.0280723.i = phi i64 [ -1, %.lr.ph727.i ], [ %.1281.i, %tadd.exit393.i ] - %.0286722.i = phi i64 [ 0, %.lr.ph727.i ], [ %.1287.i, %tadd.exit393.i ] - %.0289721.i = phi i64 [ 0, %.lr.ph727.i ], [ %.1290.i, %tadd.exit393.i ] - %.0307720.i = phi i8 [ 0, %.lr.ph727.i ], [ %.1308.i, %tadd.exit393.i ] - %.0309719.i = phi i8 [ 0, %.lr.ph727.i ], [ %.1310.i, %tadd.exit393.i ] - %802 = getelementptr %struct.zone, ptr %464, i64 %.1270724.i - %.not839.i = icmp eq i64 %.1270724.i, 0 - br i1 %.not839.i, label %807, label %803 +801: ; preds = %tadd.exit393.i, %.lr.ph729.i + %.0267727.i = phi i32 [ -1, %.lr.ph729.i ], [ %.1268.i, %tadd.exit393.i ] + %.1270726.i = phi i64 [ 0, %.lr.ph729.i ], [ %1345, %tadd.exit393.i ] + %.0280725.i = phi i64 [ -1, %.lr.ph729.i ], [ %.1281.i, %tadd.exit393.i ] + %.0286724.i = phi i64 [ 0, %.lr.ph729.i ], [ %.1287.i, %tadd.exit393.i ] + %.0289723.i = phi i64 [ 0, %.lr.ph729.i ], [ %.1290.i, %tadd.exit393.i ] + %.0307722.i = phi i8 [ 0, %.lr.ph729.i ], [ %.1308.i, %tadd.exit393.i ] + %.0309721.i = phi i8 [ 0, %.lr.ph729.i ], [ %.1310.i, %tadd.exit393.i ] + %802 = getelementptr %struct.zone, ptr %464, i64 %.1270726.i + %.not843.i = icmp eq i64 %.1270726.i, 0 + br i1 %.not843.i, label %807, label %803 803: ; preds = %801 %804 = getelementptr i8, ptr %802, i64 -8 @@ -2018,7 +2018,7 @@ thread-pre-split.i77: ; preds = %788, %784, %783, %. 807: ; preds = %803, %801 %808 = phi i1 [ false, %801 ], [ %806, %803 ] %809 = zext i1 %808 to i8 - %810 = icmp slt i64 %.1270724.i, %800 + %810 = icmp slt i64 %.1270726.i, %800 br i1 %810, label %811, label %815 811: ; preds = %807 @@ -2073,22 +2073,22 @@ oadd.exit.i85: ; preds = %836, %833 %840 = add i64 %831, %826 %841 = load i8, ptr %827, align 1 %842 = trunc i8 %841 to i1 - %843 = trunc i8 %.0307720.i to i1 - %844 = trunc i8 %.0309719.i to i1 + %843 = trunc i8 %.0307722.i to i1 + %844 = trunc i8 %.0309721.i to i1 %845 = call fastcc i32 @addtype(i64 noundef %840, ptr noundef nonnull %473, i1 noundef zeroext %842, i1 noundef zeroext %843, i1 noundef zeroext %844) br i1 %808, label %846, label %.thread420.i 846: ; preds = %oadd.exit.i85 - call fastcc void @addtt(i64 noundef %.0286722.i, i32 noundef %845) + call fastcc void @addtt(i64 noundef %.0286724.i, i32 noundef %845) br label %.thread420.i 847: ; preds = %815 %848 = load i64, ptr @min_year, align 8 %849 = load i64, ptr @max_year, align 8 - %.not326694.i = icmp sgt i64 %848, %849 - br i1 %.not326694.i, label %._crit_edge705.i, label %.lr.ph704.i + %.not326696.i = icmp sgt i64 %848, %849 + br i1 %.not326696.i, label %._crit_edge707.i, label %.lr.ph706.i -.lr.ph704.i: ; preds = %847 +.lr.ph706.i: ; preds = %847 %850 = getelementptr inbounds nuw i8, ptr %802, i64 112 %851 = getelementptr inbounds nuw i8, ptr %802, i64 64 %852 = getelementptr inbounds nuw i8, ptr %802, i64 192 @@ -2099,35 +2099,35 @@ oadd.exit.i85: ; preds = %836, %833 %857 = getelementptr inbounds nuw i8, ptr %802, i64 48 br label %858 -858: ; preds = %._crit_edge691.thread.i, %.lr.ph704.i - %.0265702.i = phi ptr [ null, %.lr.ph704.i ], [ %.1266.i, %._crit_edge691.thread.i ] - %.3701.i = phi i32 [ %.0267725.i, %.lr.ph704.i ], [ %.4.i, %._crit_edge691.thread.i ] - %.1276700.i = phi i8 [ %809, %.lr.ph704.i ], [ %.4279.i, %._crit_edge691.thread.i ] - %.3283699.i = phi i64 [ %.0280723.i, %.lr.ph704.i ], [ %.4284.i, %._crit_edge691.thread.i ] - %.3292698.i = phi i64 [ %.0289721.i, %.lr.ph704.i ], [ %.5294.i, %._crit_edge691.thread.i ] - %.1297697.i = phi i64 [ 0, %.lr.ph704.i ], [ %.3299.i, %._crit_edge691.thread.i ] - %.0303696.i = phi i64 [ %848, %.lr.ph704.i ], [ %1272, %._crit_edge691.thread.i ] - %.1305695.i = phi i64 [ %817, %.lr.ph704.i ], [ %.2306.ph.i, %._crit_edge691.thread.i ] +858: ; preds = %._crit_edge693.thread.i, %.lr.ph706.i + %.0265704.i = phi ptr [ null, %.lr.ph706.i ], [ %.1266.i, %._crit_edge693.thread.i ] + %.3703.i = phi i32 [ %.0267727.i, %.lr.ph706.i ], [ %.4.i, %._crit_edge693.thread.i ] + %.1276702.i = phi i8 [ %809, %.lr.ph706.i ], [ %.4279.i, %._crit_edge693.thread.i ] + %.3283701.i = phi i64 [ %.0280725.i, %.lr.ph706.i ], [ %.4284.i, %._crit_edge693.thread.i ] + %.3292700.i = phi i64 [ %.0289723.i, %.lr.ph706.i ], [ %.5294.i, %._crit_edge693.thread.i ] + %.1297699.i = phi i64 [ 0, %.lr.ph706.i ], [ %.3299.i, %._crit_edge693.thread.i ] + %.0303698.i = phi i64 [ %848, %.lr.ph706.i ], [ %1272, %._crit_edge693.thread.i ] + %.1305697.i = phi i64 [ %817, %.lr.ph706.i ], [ %.2306.ph.i, %._crit_edge693.thread.i ] br i1 %810, label %859, label %862 859: ; preds = %858 %860 = load i64, ptr %850, align 8 - %861 = icmp sgt i64 %.0303696.i, %860 - br i1 %861, label %._crit_edge705.loopexit.i, label %862 + %861 = icmp sgt i64 %.0303698.i, %860 + br i1 %861, label %._crit_edge707.loopexit.i, label %862 862: ; preds = %859, %858 %863 = load i64, ptr %821, align 8 %864 = icmp sgt i64 %863, 0 - br i1 %864, label %.lr.ph686.i, label %.outer.i.preheader + br i1 %864, label %.lr.ph688.i, label %.outer.i.preheader -.lr.ph686.i: ; preds = %862 - %865 = icmp sle i64 %.0303696.i, %789 +.lr.ph688.i: ; preds = %862 + %865 = icmp sle i64 %.0303698.i, %789 br label %866 -866: ; preds = %889, %.lr.ph686.i - %.1273684.i = phi i64 [ 0, %.lr.ph686.i ], [ %890, %889 ] +866: ; preds = %889, %.lr.ph688.i + %.1273686.i = phi i64 [ 0, %.lr.ph688.i ], [ %890, %889 ] %867 = load ptr, ptr %851, align 8 - %868 = getelementptr %struct.rule, ptr %867, i64 %.1273684.i + %868 = getelementptr %struct.rule, ptr %867, i64 %.1273686.i %869 = load ptr, ptr %802, align 8 %870 = load i32, ptr %819, align 8 %871 = load ptr, ptr %868, align 8 @@ -2139,7 +2139,7 @@ oadd.exit.i85: ; preds = %836, %833 store i32 %873, ptr @rlinenum, align 4 %874 = getelementptr inbounds nuw i8, ptr %868, i64 24 %875 = load i64, ptr %874, align 8 - %.not.i84 = icmp slt i64 %.0303696.i, %875 + %.not.i84 = icmp slt i64 %.0303698.i, %875 br i1 %.not.i84, label %.thread407.i, label %877 .thread407.i: ; preds = %866 @@ -2150,14 +2150,14 @@ oadd.exit.i85: ; preds = %836, %833 877: ; preds = %866 %878 = getelementptr inbounds nuw i8, ptr %868, i64 32 %879 = load i64, ptr %878, align 8 - %880 = icmp sle i64 %.0303696.i, %879 + %880 = icmp sle i64 %.0303698.i, %879 %881 = getelementptr inbounds nuw i8, ptr %868, i64 96 %882 = zext i1 %880 to i8 store i8 %882, ptr %881, align 8 br i1 %880, label %883, label %889 883: ; preds = %877 - %884 = call fastcc i64 @rpytime(ptr noundef nonnull %868, i64 noundef %.0303696.i) + %884 = call fastcc i64 @rpytime(ptr noundef nonnull %868, i64 noundef %.0303698.i) %885 = getelementptr inbounds nuw i8, ptr %868, i64 104 store i64 %884, ptr %885, align 8 %886 = icmp slt i64 %884, 2147483648 @@ -2167,7 +2167,7 @@ oadd.exit.i85: ; preds = %836, %833 br label %889 889: ; preds = %883, %877, %.thread407.i - %890 = add nuw nsw i64 %.1273684.i, 1 + %890 = add nuw nsw i64 %.1273686.i, 1 %891 = load i64, ptr %821, align 8 %892 = icmp slt i64 %890, %891 br i1 %892, label %866, label %.outer.i.preheader, !llvm.loop !22 @@ -2201,7 +2201,7 @@ oadd.exit.i85: ; preds = %836, %833 903: ; preds = %900 %.not11.i.i83 = icmp eq i64 %895, -9223372036854775808 - br i1 %.not11.i.i83, label %tadd.exit.thread841.i, label %904 + br i1 %.not11.i.i83, label %tadd.exit.thread845.i, label %904 904: ; preds = %903 call void (ptr, ...) @error(ptr noundef nonnull @.str.57) @@ -2232,13 +2232,13 @@ tadd.exit.i82: ; preds = %910, %894 %913 = trunc i8 %912 to i1 br i1 %913, label %tadd.exit346.i, label %922 -tadd.exit.thread841.i: ; preds = %903 +tadd.exit.thread845.i: ; preds = %903 %914 = load i8, ptr %855, align 8 %915 = trunc i8 %914 to i1 %916 = sub i64 0, %.2298.i %917 = icmp slt i64 %916, 0 - %or.cond968.i = select i1 %915, i1 true, i1 %917 - br i1 %or.cond968.i, label %tadd.exit346.i, label %935 + %or.cond974.i = select i1 %915, i1 true, i1 %917 + br i1 %or.cond974.i, label %tadd.exit346.i, label %935 tadd.exit.thread.i: ; preds = %908 %918 = load i8, ptr %855, align 8 @@ -2281,31 +2281,31 @@ tadd.exit.thread.i: ; preds = %908 call void @exit(i32 noundef 1) #29 unreachable -935: ; preds = %930, %925, %tadd.exit.thread.i, %tadd.exit.thread841.i - %936 = phi i64 [ %923, %930 ], [ %923, %925 ], [ %920, %tadd.exit.thread.i ], [ %916, %tadd.exit.thread841.i ] - %.6295409413.i = phi i64 [ %.6295.i, %930 ], [ %.6295.i, %925 ], [ 9223372036854775807, %tadd.exit.thread.i ], [ -9223372036854775808, %tadd.exit.thread841.i ] +935: ; preds = %930, %925, %tadd.exit.thread.i, %tadd.exit.thread845.i + %936 = phi i64 [ %923, %930 ], [ %923, %925 ], [ %920, %tadd.exit.thread.i ], [ %916, %tadd.exit.thread845.i ] + %.6295409413.i = phi i64 [ %.6295.i, %930 ], [ %.6295.i, %925 ], [ 9223372036854775807, %tadd.exit.thread.i ], [ -9223372036854775808, %tadd.exit.thread845.i ] %937 = add i64 %.6295409413.i, %936 br label %tadd.exit346.i -tadd.exit346.i: ; preds = %935, %933, %928, %tadd.exit.thread.i, %tadd.exit.thread841.i, %tadd.exit.i82, %893 - %.5294.i = phi i64 [ %.6295.i, %tadd.exit.i82 ], [ %.4293.i, %893 ], [ 9223372036854775807, %tadd.exit.thread.i ], [ %937, %935 ], [ -9223372036854775808, %928 ], [ 9223372036854775807, %933 ], [ -9223372036854775808, %tadd.exit.thread841.i ] +tadd.exit346.i: ; preds = %935, %933, %928, %tadd.exit.thread.i, %tadd.exit.thread845.i, %tadd.exit.i82, %893 + %.5294.i = phi i64 [ %.6295.i, %tadd.exit.i82 ], [ %.4293.i, %893 ], [ 9223372036854775807, %tadd.exit.thread.i ], [ %937, %935 ], [ -9223372036854775808, %928 ], [ 9223372036854775807, %933 ], [ -9223372036854775808, %tadd.exit.thread845.i ] %938 = load i64, ptr %821, align 8 %939 = icmp sgt i64 %938, 0 - br i1 %939, label %.lr.ph690.i, label %._crit_edge691.thread.i + br i1 %939, label %.lr.ph692.i, label %._crit_edge693.thread.i -.lr.ph690.i: ; preds = %tadd.exit346.i, %997 +.lr.ph692.i: ; preds = %tadd.exit346.i, %997 %940 = phi i64 [ %998, %997 ], [ %938, %tadd.exit346.i ] - %.0261689.i = phi i64 [ %.1262.i, %997 ], [ 0, %tadd.exit346.i ] - %.0263688.i = phi i64 [ %.1264.i, %997 ], [ -1, %tadd.exit346.i ] - %.2274687.i = phi i64 [ %999, %997 ], [ 0, %tadd.exit346.i ] + %.0261691.i = phi i64 [ %.1262.i, %997 ], [ 0, %tadd.exit346.i ] + %.0263690.i = phi i64 [ %.1264.i, %997 ], [ -1, %tadd.exit346.i ] + %.2274689.i = phi i64 [ %999, %997 ], [ 0, %tadd.exit346.i ] %941 = load ptr, ptr %851, align 8 - %942 = getelementptr %struct.rule, ptr %941, i64 %.2274687.i + %942 = getelementptr %struct.rule, ptr %941, i64 %.2274689.i %943 = getelementptr inbounds nuw i8, ptr %942, i64 96 %944 = load i8, ptr %943, align 8 %945 = trunc i8 %944 to i1 br i1 %945, label %946, label %997 -946: ; preds = %.lr.ph690.i +946: ; preds = %.lr.ph692.i %947 = load ptr, ptr %802, align 8 %948 = load i32, ptr %819, align 8 %949 = load ptr, ptr %942, align 8 @@ -2382,13 +2382,13 @@ oadd.exit347.i: ; preds = %964, %961 tadd.exit351.i: ; preds = %980, %976 %984 = sub i64 %971, %.0260.i - %985 = icmp slt i64 %.0263688.i, 0 - %986 = icmp slt i64 %984, %.0261689.i + %985 = icmp slt i64 %.0263690.i, 0 + %986 = icmp slt i64 %984, %.0261691.i %or.cond329.i = select i1 %985, i1 true, i1 %986 br i1 %or.cond329.i, label %997, label %987 987: ; preds = %tadd.exit351.i - %988 = icmp eq i64 %984, %.0261689.i + %988 = icmp eq i64 %984, %.0261691.i br i1 %988, label %989, label %997 989: ; preds = %987 @@ -2396,7 +2396,7 @@ tadd.exit351.i: ; preds = %980, %976 store i32 %951, ptr @rlinenum, align 4 call void (ptr, ...) @warning(ptr noundef nonnull @.str.51, ptr noundef nonnull @.str.158) %990 = load ptr, ptr %851, align 8 - %991 = getelementptr %struct.rule, ptr %990, i64 %.0263688.i + %991 = getelementptr %struct.rule, ptr %990, i64 %.0263690.i %992 = load ptr, ptr %802, align 8 %993 = load i32, ptr %819, align 8 %994 = load ptr, ptr %991, align 8 @@ -2410,39 +2410,39 @@ tadd.exit351.i: ; preds = %980, %976 %.pre.i81 = load i64, ptr %821, align 8 br label %997 -997: ; preds = %989, %987, %tadd.exit351.i, %969, %.lr.ph690.i - %998 = phi i64 [ %940, %969 ], [ %.pre.i81, %989 ], [ %940, %987 ], [ %940, %.lr.ph690.i ], [ %940, %tadd.exit351.i ] - %.1264.i = phi i64 [ %.0263688.i, %969 ], [ %.0263688.i, %989 ], [ %.0263688.i, %987 ], [ %.0263688.i, %.lr.ph690.i ], [ %.2274687.i, %tadd.exit351.i ] - %.1262.i = phi i64 [ %.0261689.i, %969 ], [ %.0261689.i, %989 ], [ %.0261689.i, %987 ], [ %.0261689.i, %.lr.ph690.i ], [ %984, %tadd.exit351.i ] - %999 = add nuw nsw i64 %.2274687.i, 1 +997: ; preds = %989, %987, %tadd.exit351.i, %969, %.lr.ph692.i + %998 = phi i64 [ %940, %969 ], [ %.pre.i81, %989 ], [ %940, %987 ], [ %940, %.lr.ph692.i ], [ %940, %tadd.exit351.i ] + %.1264.i = phi i64 [ %.0263690.i, %969 ], [ %.0263690.i, %989 ], [ %.0263690.i, %987 ], [ %.0263690.i, %.lr.ph692.i ], [ %.2274689.i, %tadd.exit351.i ] + %.1262.i = phi i64 [ %.0261691.i, %969 ], [ %.0261691.i, %989 ], [ %.0261691.i, %987 ], [ %.0261691.i, %.lr.ph692.i ], [ %984, %tadd.exit351.i ] + %999 = add nuw nsw i64 %.2274689.i, 1 %1000 = icmp slt i64 %999, %998 - br i1 %1000, label %.lr.ph690.i, label %._crit_edge691.i, !llvm.loop !23 + br i1 %1000, label %.lr.ph692.i, label %._crit_edge693.i, !llvm.loop !23 -._crit_edge691.i: ; preds = %997 +._crit_edge693.i: ; preds = %997 %1001 = icmp slt i64 %.1264.i, 0 - br i1 %1001, label %._crit_edge691.thread.i, label %1002 + br i1 %1001, label %._crit_edge693.thread.i, label %1002 -1002: ; preds = %._crit_edge691.i +1002: ; preds = %._crit_edge693.i %1003 = load ptr, ptr %851, align 8 %1004 = getelementptr %struct.rule, ptr %1003, i64 %.1264.i %1005 = getelementptr inbounds nuw i8, ptr %1004, i64 96 store i8 0, ptr %1005, align 8 %.not327.i = icmp sge i64 %.1262.i, %.5294.i %or.cond331.not.i = select i1 %810, i1 %.not327.i, i1 false - br i1 %or.cond331.not.i, label %._crit_edge691.thread.i, label %1006 + br i1 %or.cond331.not.i, label %._crit_edge693.thread.i, label %1006 1006: ; preds = %1002 %1007 = getelementptr inbounds nuw i8, ptr %1004, i64 80 %1008 = load i64, ptr %1007, align 8 %1009 = trunc nuw i8 %.2277.i to i1 - %1010 = icmp eq i64 %.1262.i, %.0286722.i + %1010 = icmp eq i64 %.1262.i, %.0286724.i %or.cond332.i = select i1 %1009, i1 %1010, i1 false %.3278.i = select i1 %or.cond332.i, i8 0, i8 %.2277.i %1011 = trunc nuw i8 %.3278.i to i1 br i1 %1011, label %1012, label %1139 1012: ; preds = %1006 - %1013 = icmp slt i64 %.1262.i, %.0286722.i + %1013 = icmp slt i64 %.1262.i, %.0286724.i br i1 %1013, label %1014, label %1095 1014: ; preds = %1012 @@ -2570,13 +2570,13 @@ doabbr.exit.i: ; preds = %1069, %1066, %abbro br label %.outer.i .outer.i: ; preds = %.outer.i.preheader, %doabbr.exit.i - %.2306.ph.i = phi i64 [ %1024, %doabbr.exit.i ], [ %.1305695.i, %.outer.i.preheader ] - %.2298.ph.i = phi i64 [ %1008, %doabbr.exit.i ], [ %.1297697.i, %.outer.i.preheader ] - %.4293.ph.i = phi i64 [ %.5294.i, %doabbr.exit.i ], [ %.3292698.i, %.outer.i.preheader ] - %.4284.ph.i = phi i64 [ %.4284.i, %doabbr.exit.i ], [ %.3283699.i, %.outer.i.preheader ] - %.2277.ph.i = phi i8 [ %.3278.i, %doabbr.exit.i ], [ %.1276700.i, %.outer.i.preheader ] - %.4.ph.i = phi i32 [ %.4.i, %doabbr.exit.i ], [ %.3701.i, %.outer.i.preheader ] - %.1266.ph.i = phi ptr [ %.1266.i, %doabbr.exit.i ], [ %.0265702.i, %.outer.i.preheader ] + %.2306.ph.i = phi i64 [ %1024, %doabbr.exit.i ], [ %.1305697.i, %.outer.i.preheader ] + %.2298.ph.i = phi i64 [ %1008, %doabbr.exit.i ], [ %.1297699.i, %.outer.i.preheader ] + %.4293.ph.i = phi i64 [ %.5294.i, %doabbr.exit.i ], [ %.3292700.i, %.outer.i.preheader ] + %.4284.ph.i = phi i64 [ %.4284.i, %doabbr.exit.i ], [ %.3283701.i, %.outer.i.preheader ] + %.2277.ph.i = phi i8 [ %.3278.i, %doabbr.exit.i ], [ %.1276702.i, %.outer.i.preheader ] + %.4.ph.i = phi i32 [ %.4.i, %doabbr.exit.i ], [ %.3703.i, %.outer.i.preheader ] + %.1266.ph.i = phi ptr [ %.1266.i, %doabbr.exit.i ], [ %.0265704.i, %.outer.i.preheader ] %spec.select34.i.i363.i = call i64 @llvm.abs.i64(i64 %.2306.ph.i, i1 false) %1074 = srem i64 %spec.select34.i.i363.i, 60 %1075 = sdiv i64 %spec.select34.i.i363.i, 60 @@ -2710,11 +2710,11 @@ abbroffset.exit.i361.i: ; preds = %1127, %1126, %1122 doabbr.exit370.i: ; preds = %1134, %1131, %abbroffset.exit.i361.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) - %.pre833.i = load i64, ptr %1007, align 8 + %.pre837.i = load i64, ptr %1007, align 8 br label %1139 1139: ; preds = %doabbr.exit370.i, %oadd.exit357.i, %1095, %1006 - %1140 = phi i64 [ %1008, %1095 ], [ %1008, %oadd.exit357.i ], [ %.pre833.i, %doabbr.exit370.i ], [ %1008, %1006 ] + %1140 = phi i64 [ %1008, %1095 ], [ %1008, %oadd.exit357.i ], [ %.pre837.i, %doabbr.exit370.i ], [ %1008, %1006 ] %1141 = load ptr, ptr %802, align 8 %1142 = load i32, ptr %819, align 8 %1143 = load ptr, ptr %1004, align 8 @@ -2867,7 +2867,7 @@ oadd.exit384.i: ; preds = %1203, %1200 %1217 = getelementptr inbounds nuw i8, ptr %.1266.i, i64 32 %1218 = load i64, ptr %1217, align 8 %1219 = icmp eq i64 %1218, 9223372036854775807 - br i1 %1219, label %._crit_edge691.thread.i, label %1220 + br i1 %1219, label %._crit_edge693.thread.i, label %1220 1220: ; preds = %1216, %1212, %oadd.exit384.i %1221 = load i8, ptr %1148, align 2 @@ -2965,38 +2965,38 @@ addtt.exit.i: ; preds = %size_product.exit.i store i64 %1271, ptr @timecnt, align 8 br label %893 -._crit_edge691.thread.i: ; preds = %1216, %1002, %._crit_edge691.i, %tadd.exit346.i - %.3299.i = phi i64 [ %.2298.i, %._crit_edge691.i ], [ %1008, %1216 ], [ %.2298.i, %1002 ], [ %.2298.i, %tadd.exit346.i ] - %.4279.i = phi i8 [ %.2277.i, %._crit_edge691.i ], [ %.3278.i, %1216 ], [ %.2277.i, %1002 ], [ %.2277.i, %tadd.exit346.i ] - %1272 = add i64 %.0303696.i, 1 +._crit_edge693.thread.i: ; preds = %1216, %1002, %._crit_edge693.i, %tadd.exit346.i + %.3299.i = phi i64 [ %.2298.i, %._crit_edge693.i ], [ %1008, %1216 ], [ %.2298.i, %1002 ], [ %.2298.i, %tadd.exit346.i ] + %.4279.i = phi i8 [ %.2277.i, %._crit_edge693.i ], [ %.3278.i, %1216 ], [ %.2277.i, %1002 ], [ %.2277.i, %tadd.exit346.i ] + %1272 = add i64 %.0303698.i, 1 %1273 = load i64, ptr @max_year, align 8 %.not326.i = icmp sgt i64 %1272, %1273 - br i1 %.not326.i, label %._crit_edge705.loopexit.i, label %858, !llvm.loop !24 - -._crit_edge705.loopexit.i: ; preds = %._crit_edge691.thread.i, %859 - %.1305.lcssa.ph.i = phi i64 [ %.1305695.i, %859 ], [ %.2306.ph.i, %._crit_edge691.thread.i ] - %.1297.lcssa.ph.i = phi i64 [ %.1297697.i, %859 ], [ %.3299.i, %._crit_edge691.thread.i ] - %.3292.lcssa.ph.i = phi i64 [ %.3292698.i, %859 ], [ %.5294.i, %._crit_edge691.thread.i ] - %.3283.lcssa.ph.i = phi i64 [ %.3283699.i, %859 ], [ %.4284.i, %._crit_edge691.thread.i ] - %.1276.lcssa.ph.i = phi i8 [ %.1276700.i, %859 ], [ %.4279.i, %._crit_edge691.thread.i ] - %.3.lcssa.ph.i = phi i32 [ %.3701.i, %859 ], [ %.4.i, %._crit_edge691.thread.i ] + br i1 %.not326.i, label %._crit_edge707.loopexit.i, label %858, !llvm.loop !24 + +._crit_edge707.loopexit.i: ; preds = %._crit_edge693.thread.i, %859 + %.1305.lcssa.ph.i = phi i64 [ %.1305697.i, %859 ], [ %.2306.ph.i, %._crit_edge693.thread.i ] + %.1297.lcssa.ph.i = phi i64 [ %.1297699.i, %859 ], [ %.3299.i, %._crit_edge693.thread.i ] + %.3292.lcssa.ph.i = phi i64 [ %.3292700.i, %859 ], [ %.5294.i, %._crit_edge693.thread.i ] + %.3283.lcssa.ph.i = phi i64 [ %.3283701.i, %859 ], [ %.4284.i, %._crit_edge693.thread.i ] + %.1276.lcssa.ph.i = phi i8 [ %.1276702.i, %859 ], [ %.4279.i, %._crit_edge693.thread.i ] + %.3.lcssa.ph.i = phi i32 [ %.3703.i, %859 ], [ %.4.i, %._crit_edge693.thread.i ] %1274 = trunc nuw i8 %.1276.lcssa.ph.i to i1 br i1 %1274, label %1275, label %.thread420.i -._crit_edge705.i: ; preds = %847 +._crit_edge707.i: ; preds = %847 br i1 %808, label %.thread, label %.thread420.i -1275: ; preds = %._crit_edge705.loopexit.i +1275: ; preds = %._crit_edge707.loopexit.i %.pre = load i8, ptr %473, align 1 %1276 = icmp eq i8 %.pre, 0 br i1 %1276, label %.thread, label %.critedge.i -.thread: ; preds = %._crit_edge705.i, %1275 - %.1305.lcssa855.i327 = phi i64 [ %.1305.lcssa.ph.i, %1275 ], [ %817, %._crit_edge705.i ] - %.1297.lcssa856.i324 = phi i64 [ %.1297.lcssa.ph.i, %1275 ], [ 0, %._crit_edge705.i ] - %.3292.lcssa857.i322 = phi i64 [ %.3292.lcssa.ph.i, %1275 ], [ %.0289721.i, %._crit_edge705.i ] - %.3283.lcssa858.i320 = phi i64 [ %.3283.lcssa.ph.i, %1275 ], [ %.0280723.i, %._crit_edge705.i ] - %.3.lcssa859.i318 = phi i32 [ %.3.lcssa.ph.i, %1275 ], [ %.0267725.i, %._crit_edge705.i ] +.thread: ; preds = %._crit_edge707.i, %1275 + %.1305.lcssa859.i331 = phi i64 [ %.1305.lcssa.ph.i, %1275 ], [ %817, %._crit_edge707.i ] + %.1297.lcssa860.i328 = phi i64 [ %.1297.lcssa.ph.i, %1275 ], [ 0, %._crit_edge707.i ] + %.3292.lcssa861.i326 = phi i64 [ %.3292.lcssa.ph.i, %1275 ], [ %.0289723.i, %._crit_edge707.i ] + %.3283.lcssa862.i324 = phi i64 [ %.3283.lcssa.ph.i, %1275 ], [ %.0280725.i, %._crit_edge707.i ] + %.3.lcssa863.i322 = phi i32 [ %.3.lcssa.ph.i, %1275 ], [ %.0267727.i, %._crit_edge707.i ] %1277 = getelementptr inbounds nuw i8, ptr %802, i64 40 %1278 = load ptr, ptr %1277, align 8 %.not328.i = icmp eq ptr %1278, null @@ -3047,27 +3047,27 @@ thread-pre-split430.i: ; preds = %1282 br label %1294 1294: ; preds = %.critedge.i, %thread-pre-split430.i - %.1305.lcssa855.i326 = phi i64 [ %.1305.lcssa.ph.i, %.critedge.i ], [ %.1305.lcssa855.i327, %thread-pre-split430.i ] - %.1297.lcssa856.i325 = phi i64 [ %.1297.lcssa.ph.i, %.critedge.i ], [ %.1297.lcssa856.i324, %thread-pre-split430.i ] - %.3292.lcssa857.i323 = phi i64 [ %.3292.lcssa.ph.i, %.critedge.i ], [ %.3292.lcssa857.i322, %thread-pre-split430.i ] - %.3283.lcssa858.i321 = phi i64 [ %.3283.lcssa.ph.i, %.critedge.i ], [ %.3283.lcssa858.i320, %thread-pre-split430.i ] - %.3.lcssa859.i317 = phi i32 [ %.3.lcssa.ph.i, %.critedge.i ], [ %.3.lcssa859.i318, %thread-pre-split430.i ] + %.1305.lcssa859.i330 = phi i64 [ %.1305.lcssa.ph.i, %.critedge.i ], [ %.1305.lcssa859.i331, %thread-pre-split430.i ] + %.1297.lcssa860.i329 = phi i64 [ %.1297.lcssa.ph.i, %.critedge.i ], [ %.1297.lcssa860.i328, %thread-pre-split430.i ] + %.3292.lcssa861.i327 = phi i64 [ %.3292.lcssa.ph.i, %.critedge.i ], [ %.3292.lcssa861.i326, %thread-pre-split430.i ] + %.3283.lcssa862.i325 = phi i64 [ %.3283.lcssa.ph.i, %.critedge.i ], [ %.3283.lcssa862.i324, %thread-pre-split430.i ] + %.3.lcssa863.i321 = phi i32 [ %.3.lcssa.ph.i, %.critedge.i ], [ %.3.lcssa863.i322, %thread-pre-split430.i ] %1295 = load i64, ptr %816, align 8 - %1296 = icmp ne i64 %.1305.lcssa855.i326, %1295 - %1297 = trunc i8 %.0307720.i to i1 - %1298 = trunc i8 %.0309719.i to i1 - %1299 = call fastcc i32 @addtype(i64 noundef %.1305.lcssa855.i326, ptr noundef nonnull %473, i1 noundef zeroext %1296, i1 noundef zeroext %1297, i1 noundef zeroext %1298) - %1300 = icmp slt i32 %.3.lcssa859.i317, 0 - %spec.select334.i = select i1 %1296, i32 %.3.lcssa859.i317, i32 %1299 - %.7.i = select i1 %1300, i32 %spec.select334.i, i32 %.3.lcssa859.i317 - call fastcc void @addtt(i64 noundef %.0286722.i, i32 noundef %1299) + %1296 = icmp ne i64 %.1305.lcssa859.i330, %1295 + %1297 = trunc i8 %.0307722.i to i1 + %1298 = trunc i8 %.0309721.i to i1 + %1299 = call fastcc i32 @addtype(i64 noundef %.1305.lcssa859.i330, ptr noundef nonnull %473, i1 noundef zeroext %1296, i1 noundef zeroext %1297, i1 noundef zeroext %1298) + %1300 = icmp slt i32 %.3.lcssa863.i321, 0 + %spec.select334.i = select i1 %1296, i32 %.3.lcssa863.i321, i32 %1299 + %.7.i = select i1 %1300, i32 %spec.select334.i, i32 %.3.lcssa863.i321 + call fastcc void @addtt(i64 noundef %.0286724.i, i32 noundef %1299) br label %.thread420.i -.thread420.i: ; preds = %1294, %1291, %._crit_edge705.i, %._crit_edge705.loopexit.i, %846, %oadd.exit.i85 - %.2282429.i = phi i64 [ %.3283.lcssa858.i320, %1291 ], [ %.3283.lcssa858.i321, %1294 ], [ %.0280723.i, %._crit_edge705.i ], [ %.0280723.i, %846 ], [ %.0280723.i, %oadd.exit.i85 ], [ %.3283.lcssa.ph.i, %._crit_edge705.loopexit.i ] - %.2291428.i = phi i64 [ %.3292.lcssa857.i322, %1291 ], [ %.3292.lcssa857.i323, %1294 ], [ %.0289721.i, %._crit_edge705.i ], [ %.0289721.i, %846 ], [ %.0289721.i, %oadd.exit.i85 ], [ %.3292.lcssa.ph.i, %._crit_edge705.loopexit.i ] - %.0296427.i = phi i64 [ %.1297.lcssa856.i324, %1291 ], [ %.1297.lcssa856.i325, %1294 ], [ 0, %._crit_edge705.i ], [ %826, %846 ], [ %826, %oadd.exit.i85 ], [ %.1297.lcssa.ph.i, %._crit_edge705.loopexit.i ] - %.6.i = phi i32 [ %.3.lcssa859.i318, %1291 ], [ %.7.i, %1294 ], [ %.0267725.i, %._crit_edge705.i ], [ %.0267725.i, %846 ], [ %845, %oadd.exit.i85 ], [ %.3.lcssa.ph.i, %._crit_edge705.loopexit.i ] +.thread420.i: ; preds = %1294, %1291, %._crit_edge707.i, %._crit_edge707.loopexit.i, %846, %oadd.exit.i85 + %.2282429.i = phi i64 [ %.3283.lcssa862.i324, %1291 ], [ %.3283.lcssa862.i325, %1294 ], [ %.0280725.i, %._crit_edge707.i ], [ %.0280725.i, %846 ], [ %.0280725.i, %oadd.exit.i85 ], [ %.3283.lcssa.ph.i, %._crit_edge707.loopexit.i ] + %.2291428.i = phi i64 [ %.3292.lcssa861.i326, %1291 ], [ %.3292.lcssa861.i327, %1294 ], [ %.0289723.i, %._crit_edge707.i ], [ %.0289723.i, %846 ], [ %.0289723.i, %oadd.exit.i85 ], [ %.3292.lcssa.ph.i, %._crit_edge707.loopexit.i ] + %.0296427.i = phi i64 [ %.1297.lcssa860.i328, %1291 ], [ %.1297.lcssa860.i329, %1294 ], [ 0, %._crit_edge707.i ], [ %826, %846 ], [ %826, %oadd.exit.i85 ], [ %.1297.lcssa.ph.i, %._crit_edge707.loopexit.i ] + %.6.i = phi i32 [ %.3.lcssa863.i322, %1291 ], [ %.7.i, %1294 ], [ %.0267727.i, %._crit_edge707.i ], [ %.0267727.i, %846 ], [ %845, %oadd.exit.i85 ], [ %.3.lcssa.ph.i, %._crit_edge707.loopexit.i ] br i1 %810, label %1301, label %tadd.exit393.i 1301: ; preds = %.thread420.i @@ -3093,7 +3093,7 @@ thread-pre-split430.i: ; preds = %1282 1316: ; preds = %1313 %.not11.i388.i = icmp eq i64 %1309, -9223372036854775808 - br i1 %.not11.i388.i, label %tadd.exit389.thread861.i, label %1317 + br i1 %.not11.i388.i, label %tadd.exit389.thread865.i, label %1317 1317: ; preds = %1316 call void (ptr, ...) @error(ptr noundef nonnull @.str.57) @@ -3122,11 +3122,11 @@ tadd.exit389.i: ; preds = %1323, %1301 %.2288.i = phi i64 [ %1309, %1301 ], [ %1324, %1323 ] br i1 %1307, label %tadd.exit393.i, label %1329 -tadd.exit389.thread861.i: ; preds = %1316 +tadd.exit389.thread865.i: ; preds = %1316 %1325 = sub i64 0, %817 %1326 = icmp slt i64 %1325, 0 - %or.cond970.i = select i1 %1307, i1 true, i1 %1326 - br i1 %or.cond970.i, label %tadd.exit393.i, label %1342 + %or.cond976.i = select i1 %1307, i1 true, i1 %1326 + br i1 %or.cond976.i, label %tadd.exit393.i, label %1342 tadd.exit389.thread.i: ; preds = %1321 %1327 = sub i64 0, %817 @@ -3167,86 +3167,86 @@ tadd.exit389.thread.i: ; preds = %1321 call void @exit(i32 noundef 1) #29 unreachable -1342: ; preds = %1337, %1332, %tadd.exit389.thread.i, %tadd.exit389.thread861.i - %1343 = phi i64 [ %1330, %1337 ], [ %1330, %1332 ], [ %1327, %tadd.exit389.thread.i ], [ %1325, %tadd.exit389.thread861.i ] - %.2288433437.i = phi i64 [ %.2288.i, %1337 ], [ %.2288.i, %1332 ], [ 9223372036854775807, %tadd.exit389.thread.i ], [ -9223372036854775808, %tadd.exit389.thread861.i ] +1342: ; preds = %1337, %1332, %tadd.exit389.thread.i, %tadd.exit389.thread865.i + %1343 = phi i64 [ %1330, %1337 ], [ %1330, %1332 ], [ %1327, %tadd.exit389.thread.i ], [ %1325, %tadd.exit389.thread865.i ] + %.2288433437.i = phi i64 [ %.2288.i, %1337 ], [ %.2288.i, %1332 ], [ 9223372036854775807, %tadd.exit389.thread.i ], [ -9223372036854775808, %tadd.exit389.thread865.i ] %1344 = add i64 %.2288433437.i, %1343 br label %tadd.exit393.i -tadd.exit393.i: ; preds = %1342, %1340, %1335, %tadd.exit389.thread.i, %tadd.exit389.thread861.i, %tadd.exit389.i, %.thread420.i, %811 - %.1310.i = phi i8 [ %.0309719.i, %811 ], [ %1306, %tadd.exit389.i ], [ %.0309719.i, %.thread420.i ], [ %1306, %tadd.exit389.thread.i ], [ %1306, %1335 ], [ %1306, %1340 ], [ %1306, %1342 ], [ %1306, %tadd.exit389.thread861.i ] - %.1308.i = phi i8 [ %.0307720.i, %811 ], [ %1303, %tadd.exit389.i ], [ %.0307720.i, %.thread420.i ], [ %1303, %tadd.exit389.thread.i ], [ %1303, %1335 ], [ %1303, %1340 ], [ %1303, %1342 ], [ %1303, %tadd.exit389.thread861.i ] - %.1290.i = phi i64 [ %.0289721.i, %811 ], [ %.2291428.i, %tadd.exit389.i ], [ %.2291428.i, %.thread420.i ], [ %.2291428.i, %tadd.exit389.thread.i ], [ %.2291428.i, %1335 ], [ %.2291428.i, %1340 ], [ %.2291428.i, %1342 ], [ %.2291428.i, %tadd.exit389.thread861.i ] - %.1287.i = phi i64 [ %.0286722.i, %811 ], [ %.2288.i, %tadd.exit389.i ], [ %.0286722.i, %.thread420.i ], [ 9223372036854775807, %tadd.exit389.thread.i ], [ -9223372036854775808, %1335 ], [ 9223372036854775807, %1340 ], [ %1344, %1342 ], [ -9223372036854775808, %tadd.exit389.thread861.i ] - %.1281.i = phi i64 [ %.0280723.i, %811 ], [ %.2282429.i, %tadd.exit389.i ], [ %.2282429.i, %.thread420.i ], [ %.2282429.i, %tadd.exit389.thread.i ], [ %.2282429.i, %1335 ], [ %.2282429.i, %1340 ], [ %.2282429.i, %1342 ], [ %.2282429.i, %tadd.exit389.thread861.i ] - %.1268.i = phi i32 [ %.0267725.i, %811 ], [ %.6.i, %tadd.exit389.i ], [ %.6.i, %.thread420.i ], [ %.6.i, %tadd.exit389.thread.i ], [ %.6.i, %1335 ], [ %.6.i, %1340 ], [ %.6.i, %1342 ], [ %.6.i, %tadd.exit389.thread861.i ] - %1345 = add nuw nsw i64 %.1270724.i, 1 - %exitcond825.not.i = icmp eq i64 %1345, %465 - br i1 %exitcond825.not.i, label %._crit_edge728.i, label %801, !llvm.loop !25 - -._crit_edge728.i: ; preds = %tadd.exit393.i +tadd.exit393.i: ; preds = %1342, %1340, %1335, %tadd.exit389.thread.i, %tadd.exit389.thread865.i, %tadd.exit389.i, %.thread420.i, %811 + %.1310.i = phi i8 [ %.0309721.i, %811 ], [ %1306, %tadd.exit389.i ], [ %.0309721.i, %.thread420.i ], [ %1306, %tadd.exit389.thread.i ], [ %1306, %1335 ], [ %1306, %1340 ], [ %1306, %1342 ], [ %1306, %tadd.exit389.thread865.i ] + %.1308.i = phi i8 [ %.0307722.i, %811 ], [ %1303, %tadd.exit389.i ], [ %.0307722.i, %.thread420.i ], [ %1303, %tadd.exit389.thread.i ], [ %1303, %1335 ], [ %1303, %1340 ], [ %1303, %1342 ], [ %1303, %tadd.exit389.thread865.i ] + %.1290.i = phi i64 [ %.0289723.i, %811 ], [ %.2291428.i, %tadd.exit389.i ], [ %.2291428.i, %.thread420.i ], [ %.2291428.i, %tadd.exit389.thread.i ], [ %.2291428.i, %1335 ], [ %.2291428.i, %1340 ], [ %.2291428.i, %1342 ], [ %.2291428.i, %tadd.exit389.thread865.i ] + %.1287.i = phi i64 [ %.0286724.i, %811 ], [ %.2288.i, %tadd.exit389.i ], [ %.0286724.i, %.thread420.i ], [ 9223372036854775807, %tadd.exit389.thread.i ], [ -9223372036854775808, %1335 ], [ 9223372036854775807, %1340 ], [ %1344, %1342 ], [ -9223372036854775808, %tadd.exit389.thread865.i ] + %.1281.i = phi i64 [ %.0280725.i, %811 ], [ %.2282429.i, %tadd.exit389.i ], [ %.2282429.i, %.thread420.i ], [ %.2282429.i, %tadd.exit389.thread.i ], [ %.2282429.i, %1335 ], [ %.2282429.i, %1340 ], [ %.2282429.i, %1342 ], [ %.2282429.i, %tadd.exit389.thread865.i ] + %.1268.i = phi i32 [ %.0267727.i, %811 ], [ %.6.i, %tadd.exit389.i ], [ %.6.i, %.thread420.i ], [ %.6.i, %tadd.exit389.thread.i ], [ %.6.i, %1335 ], [ %.6.i, %1340 ], [ %.6.i, %1342 ], [ %.6.i, %tadd.exit389.thread865.i ] + %1345 = add nuw nsw i64 %.1270726.i, 1 + %exitcond829.not.i = icmp eq i64 %1345, %465 + br i1 %exitcond829.not.i, label %._crit_edge730.i, label %801, !llvm.loop !25 + +._crit_edge730.i: ; preds = %tadd.exit393.i %spec.store.select.i = call i32 @llvm.smax.i32(i32 %.1268.i, i32 0) %1346 = icmp sgt i64 %.1281.i, -1 - br i1 %1346, label %1347, label %._crit_edge728.thread.i + br i1 %1346, label %1347, label %._crit_edge730.thread.i -1347: ; preds = %._crit_edge728.i +1347: ; preds = %._crit_edge730.i %1348 = load ptr, ptr @attypes, align 8 %1349 = getelementptr %struct.attype, ptr %1348, i64 %.1281.i, i32 1 store i8 1, ptr %1349, align 8 - br label %._crit_edge728.thread.i + br label %._crit_edge730.thread.i -._crit_edge728.thread.i: ; preds = %1347, %._crit_edge728.i, %799 - %spec.store.select876.i = phi i32 [ %spec.store.select.i, %1347 ], [ %spec.store.select.i, %._crit_edge728.i ], [ 0, %799 ] - %.pre838.i = load i64, ptr @timecnt, align 8 +._crit_edge730.thread.i: ; preds = %1347, %._crit_edge730.i, %799 + %spec.store.select880.i = phi i32 [ %spec.store.select.i, %1347 ], [ %spec.store.select.i, %._crit_edge730.i ], [ 0, %799 ] + %.pre842.i = load i64, ptr @timecnt, align 8 br i1 %773, label %1382, label %1350 -1350: ; preds = %._crit_edge728.thread.i +1350: ; preds = %._crit_edge730.thread.i store i32 0, ptr %449, align 4 store i32 0, ptr %450, align 8 store i32 1, ptr %451, align 4 store i64 0, ptr %452, align 8 %1351 = load ptr, ptr @attypes, align 8 - %1352 = icmp sgt i64 %.pre838.i, 1 - br i1 %1352, label %.lr.ph734.preheader.i, label %._crit_edge735.i - -.lr.ph734.preheader.i: ; preds = %1350 - %.pre835.i = load i64, ptr %1351, align 8 - br label %.lr.ph734.i - -.lr.ph734.i: ; preds = %.lr.ph734.i, %.lr.ph734.preheader.i - %1353 = phi i64 [ %1357, %.lr.ph734.i ], [ %.pre835.i, %.lr.ph734.preheader.i ] - %.0732.i = phi ptr [ %spec.select335.i, %.lr.ph734.i ], [ %1351, %.lr.ph734.preheader.i ] - %.2271731.i = phi i64 [ %1358, %.lr.ph734.i ], [ 1, %.lr.ph734.preheader.i ] - %1354 = getelementptr %struct.attype, ptr %1351, i64 %.2271731.i + %1352 = icmp sgt i64 %.pre842.i, 1 + br i1 %1352, label %.lr.ph736.preheader.i, label %._crit_edge737.i + +.lr.ph736.preheader.i: ; preds = %1350 + %.pre839.i = load i64, ptr %1351, align 8 + br label %.lr.ph736.i + +.lr.ph736.i: ; preds = %.lr.ph736.i, %.lr.ph736.preheader.i + %1353 = phi i64 [ %1357, %.lr.ph736.i ], [ %.pre839.i, %.lr.ph736.preheader.i ] + %.0734.i = phi ptr [ %spec.select335.i, %.lr.ph736.i ], [ %1351, %.lr.ph736.preheader.i ] + %.2271733.i = phi i64 [ %1358, %.lr.ph736.i ], [ 1, %.lr.ph736.preheader.i ] + %1354 = getelementptr %struct.attype, ptr %1351, i64 %.2271733.i %1355 = load i64, ptr %1354, align 8 %1356 = icmp sgt i64 %1355, %1353 %1357 = call i64 @llvm.smax.i64(i64 %1355, i64 %1353) - %spec.select335.i = select i1 %1356, ptr %1354, ptr %.0732.i - %1358 = add nuw nsw i64 %.2271731.i, 1 - %exitcond826.not.i = icmp eq i64 %1358, %.pre838.i - br i1 %exitcond826.not.i, label %._crit_edge735.i, label %.lr.ph734.i, !llvm.loop !26 + %spec.select335.i = select i1 %1356, ptr %1354, ptr %.0734.i + %1358 = add nuw nsw i64 %.2271733.i, 1 + %exitcond830.not.i = icmp eq i64 %1358, %.pre842.i + br i1 %exitcond830.not.i, label %._crit_edge737.i, label %.lr.ph736.i, !llvm.loop !26 -._crit_edge735.i: ; preds = %.lr.ph734.i, %1350 - %.0.lcssa.i = phi ptr [ %1351, %1350 ], [ %spec.select335.i, %.lr.ph734.i ] +._crit_edge737.i: ; preds = %.lr.ph736.i, %1350 + %.0.lcssa.i = phi ptr [ %1351, %1350 ], [ %spec.select335.i, %.lr.ph736.i ] %.not325.i = icmp eq ptr %.0.lcssa.i, null br i1 %.not325.i, label %.thread444.i, label %1362 -.thread444.i: ; preds = %._crit_edge735.i +.thread444.i: ; preds = %._crit_edge737.i %1359 = load i64, ptr @max_year, align 8 %1360 = add nuw i64 %1359, 1 %1361 = call fastcc i64 @rpytime(ptr noundef nonnull %23, i64 noundef %1360) br label %1375 -1362: ; preds = %._crit_edge735.i +1362: ; preds = %._crit_edge737.i %1363 = load i64, ptr %.0.lcssa.i, align 8 %1364 = load i64, ptr @max_year, align 8 %1365 = add nsw i64 %1364, -1 %1366 = call fastcc i64 @rpytime(ptr noundef nonnull %23, i64 noundef %1365) %1367 = icmp slt i64 %1363, %1366 - br i1 %1367, label %1368, label %._crit_edge836.i + br i1 %1367, label %1368, label %._crit_edge840.i -._crit_edge836.i: ; preds = %1362 - %.pre837.i = load i64, ptr @timecnt, align 8 +._crit_edge840.i: ; preds = %1362 + %.pre841.i = load i64, ptr @timecnt, align 8 br label %1382 1368: ; preds = %1362 @@ -3260,7 +3260,7 @@ tadd.exit393.i: ; preds = %1342, %1340, %1335, 1375: ; preds = %1368, %.thread444.i %1376 = phi i64 [ %1371, %1368 ], [ %1361, %.thread444.i ] - %1377 = phi i32 [ %1374, %1368 ], [ %spec.store.select876.i, %.thread444.i ] + %1377 = phi i32 [ %1374, %1368 ], [ %spec.store.select880.i, %.thread444.i ] call fastcc void @addtt(i64 noundef %1376, i32 noundef %1377) %1378 = load ptr, ptr @attypes, align 8 %1379 = load i64, ptr @timecnt, align 8 @@ -3269,8 +3269,8 @@ tadd.exit393.i: ; preds = %1342, %1340, %1335, store i8 1, ptr %1381, align 8 br label %1382 -1382: ; preds = %1375, %._crit_edge836.i, %._crit_edge728.thread.i - %1383 = phi i64 [ %.pre837.i, %._crit_edge836.i ], [ %1379, %1375 ], [ %.pre838.i, %._crit_edge728.thread.i ] +1382: ; preds = %1375, %._crit_edge840.i, %._crit_edge730.thread.i + %1383 = phi i64 [ %.pre841.i, %._crit_edge840.i ], [ %1379, %1375 ], [ %.pre842.i, %._crit_edge730.thread.i ] %1384 = icmp slt i32 %.0102.i.i, 2013 %1385 = select i1 %1384, i8 50, i8 51 %1386 = getelementptr inbounds nuw i8, ptr %464, i64 16 @@ -3591,10 +3591,10 @@ thread-pre-split.i.i: ; preds = %1517, %1515, %1510, br i1 %exitcond797.not.i.i, label %.critedge.i.loopexit.i.i, label %.lr.ph.i.i.i, !llvm.loop !34 .critedge.i.loopexit.i.i: ; preds = %.lr.ph687.i.i, %.lr.ph.i.i.i - %.lcssa742.i = phi i64 [ %1529, %.lr.ph687.i.i ], [ %1535, %.lr.ph.i.i.i ] + %.lcssa746.i = phi i64 [ %1529, %.lr.ph687.i.i ], [ %1535, %.lr.ph.i.i.i ] %.ph852.i.i = phi i64 [ %1522, %.lr.ph687.i.i ], [ %1530, %.lr.ph.i.i.i ] %.pr.i.ph.i.i = phi i64 [ 0, %.lr.ph687.i.i ], [ %1531, %.lr.ph.i.i.i ] - %1537 = getelementptr i8, ptr %1399, i64 %.lcssa742.i + %1537 = getelementptr i8, ptr %1399, i64 %.lcssa746.i %1538 = load i8, ptr %1537, align 1, !noalias !31 %1539 = zext i8 %1538 to i32 br label %.critedge.i.i.i @@ -3603,7 +3603,7 @@ thread-pre-split.i.i: ; preds = %1517, %1515, %1510, %1540 = phi i64 [ %1525, %thread-pre-split.i.i ], [ %1525, %.lr.ph.i.preheader.i.i ], [ %1408, %thread-pre-split.thread.i.i ], [ %1525, %.critedge.i.loopexit.i.i ] %1541 = phi i64 [ %1524, %thread-pre-split.i.i ], [ %1524, %.lr.ph.i.preheader.i.i ], [ %1407, %thread-pre-split.thread.i.i ], [ %1524, %.critedge.i.loopexit.i.i ] %1542 = phi i32 [ %1523, %thread-pre-split.i.i ], [ %1523, %.lr.ph.i.preheader.i.i ], [ %1406, %thread-pre-split.thread.i.i ], [ %1523, %.critedge.i.loopexit.i.i ] - %.lcssa21.i.i.i = phi i32 [ %spec.store.select876.i, %thread-pre-split.i.i ], [ %spec.store.select876.i, %.lr.ph.i.preheader.i.i ], [ %spec.store.select876.i, %thread-pre-split.thread.i.i ], [ %1539, %.critedge.i.loopexit.i.i ] + %.lcssa21.i.i.i = phi i32 [ %spec.store.select880.i, %thread-pre-split.i.i ], [ %spec.store.select880.i, %.lr.ph.i.preheader.i.i ], [ %spec.store.select880.i, %thread-pre-split.thread.i.i ], [ %1539, %.critedge.i.loopexit.i.i ] %1543 = phi i64 [ 0, %thread-pre-split.i.i ], [ 0, %.lr.ph.i.preheader.i.i ], [ 0, %thread-pre-split.thread.i.i ], [ %.ph852.i.i, %.critedge.i.loopexit.i.i ] %.pr.i.i.i = phi i64 [ %1522, %thread-pre-split.i.i ], [ %1522, %.lr.ph.i.preheader.i.i ], [ 0, %thread-pre-split.thread.i.i ], [ %.pr.i.ph.i.i, %.critedge.i.loopexit.i.i ] %1544 = icmp sgt i32 %1542, 0 @@ -3668,25 +3668,28 @@ thread-pre-split.i.i.i: ; preds = %.critedge2.i.i.i %1564 = zext nneg i32 %.pr15.i.i.i to i64 br label %.lr.ph44.i.i.i -.lr.ph44.i.i.i: ; preds = %1572, %.lr.ph44.i.preheader.i.i - %indvars.iv.i.i = phi i64 [ %1564, %.lr.ph44.i.preheader.i.i ], [ %indvars.iv.next.i.i, %1572 ] +.lr.ph44.i.i.i: ; preds = %1571, %.lr.ph44.i.preheader.i.i + %indvars.iv.i.i = phi i64 [ %1564, %.lr.ph44.i.preheader.i.i ], [ %indvars.iv.next.i.i, %1571 ] %indvars.iv.next.i.i = add nsw i64 %indvars.iv.i.i, -1 - %1565 = trunc i64 %indvars.iv.next.i.i to i32 + %1565 = trunc nsw i64 %indvars.iv.next.i.i to i32 %1566 = add i32 %1553, %1565 %1567 = sext i32 %1566 to i64 %1568 = getelementptr [50 x i64], ptr @trans, i64 0, i64 %1567 %1569 = load i64, ptr %1568, align 8, !noalias !31 %1570 = icmp slt i64 %1554, %1569 - %1571 = trunc i64 %indvars.iv.i.i to i32 - br i1 %1570, label %1572, label %limitrange.exit.i.i + br i1 %1570, label %1571, label %limitrange.exit.loopexit.split.loop.exit863.i.i -1572: ; preds = %.lr.ph44.i.i.i - %1573 = icmp samesign ugt i32 %1571, 1 - br i1 %1573, label %.lr.ph44.i.i.i, label %limitrange.exit.i.i, !llvm.loop !37 +1571: ; preds = %.lr.ph44.i.i.i + %1572 = icmp samesign ugt i64 %indvars.iv.i.i, 1 + br i1 %1572, label %.lr.ph44.i.i.i, label %limitrange.exit.i.i, !llvm.loop !37 -limitrange.exit.i.i: ; preds = %1572, %.lr.ph44.i.i.i, %.critedge4.i.i.i, %.critedge2.i.i.i - %.sroa.12.1.i.i = phi i64 [ %.pr.i.i.i, %.critedge2.i.i.i ], [ %.sroa.12.0.i.i, %.critedge4.i.i.i ], [ %.sroa.12.0.i.i, %.lr.ph44.i.i.i ], [ %.sroa.12.0.i.i, %1572 ] - %.sroa.22.0.i.i = phi i32 [ %.pr15.i.i.i, %.critedge2.i.i.i ], [ %.pr15.i.i.i, %.critedge4.i.i.i ], [ 0, %1572 ], [ %1571, %.lr.ph44.i.i.i ] +limitrange.exit.loopexit.split.loop.exit863.i.i: ; preds = %.lr.ph44.i.i.i + %1573 = trunc nuw nsw i64 %indvars.iv.i.i to i32 + br label %limitrange.exit.i.i + +limitrange.exit.i.i: ; preds = %1571, %limitrange.exit.loopexit.split.loop.exit863.i.i, %.critedge4.i.i.i, %.critedge2.i.i.i + %.sroa.12.1.i.i = phi i64 [ %.pr.i.i.i, %.critedge2.i.i.i ], [ %.sroa.12.0.i.i, %.critedge4.i.i.i ], [ %.sroa.12.0.i.i, %limitrange.exit.loopexit.split.loop.exit863.i.i ], [ %.sroa.12.0.i.i, %1571 ] + %.sroa.22.0.i.i = phi i32 [ %.pr15.i.i.i, %.critedge2.i.i.i ], [ %.pr15.i.i.i, %.critedge4.i.i.i ], [ %1573, %limitrange.exit.loopexit.split.loop.exit863.i.i ], [ 0, %1571 ] %1574 = icmp sgt i64 %.sroa.12.1.i.i, 0 br i1 %1574, label %.lr.ph.preheader.i483.i.i, label %.critedge.i462.i.i @@ -3716,10 +3719,10 @@ limitrange.exit.i.i: ; preds = %1572, %.lr.ph44.i.i br i1 %1587, label %.lr.ph.i484.i.i, label %.critedge.i462.loopexit.i.i, !llvm.loop !34 .critedge.i462.loopexit.i.i: ; preds = %.lr.ph694.i.i, %.lr.ph.i484.i.i - %.lcssa741.i = phi i64 [ %1579, %.lr.ph694.i.i ], [ %1585, %.lr.ph.i484.i.i ] + %.lcssa744.i = phi i64 [ %1579, %.lr.ph694.i.i ], [ %1585, %.lr.ph.i484.i.i ] %.ph850.i.i = phi i64 [ %1575, %.lr.ph694.i.i ], [ %1580, %.lr.ph.i484.i.i ] %.pr.i464.ph.i.i = phi i64 [ 0, %.lr.ph694.i.i ], [ %1581, %.lr.ph.i484.i.i ] - %1588 = getelementptr i8, ptr %1399, i64 %.lcssa741.i + %1588 = getelementptr i8, ptr %1399, i64 %.lcssa744.i %1589 = load i8, ptr %1588, align 1, !noalias !38 %1590 = zext i8 %1589 to i32 br label %.critedge.i462.i.i @@ -3782,24 +3785,27 @@ limitrange.exit.i.i: ; preds = %1572, %.lr.ph44.i.i %1614 = zext nneg i32 %.pr15.i468.i.i to i64 br label %.lr.ph44.i473.i.i -.lr.ph44.i473.i.i: ; preds = %1622, %.lr.ph44.i473.preheader.i.i - %indvars.iv800.i.i = phi i64 [ %1614, %.lr.ph44.i473.preheader.i.i ], [ %indvars.iv.next801.i.i, %1622 ] +.lr.ph44.i473.i.i: ; preds = %1621, %.lr.ph44.i473.preheader.i.i + %indvars.iv800.i.i = phi i64 [ %1614, %.lr.ph44.i473.preheader.i.i ], [ %indvars.iv.next801.i.i, %1621 ] %indvars.iv.next801.i.i = add nsw i64 %indvars.iv800.i.i, -1 - %1615 = trunc i64 %indvars.iv.next801.i.i to i32 + %1615 = trunc nsw i64 %indvars.iv.next801.i.i to i32 %1616 = add i32 %1604, %1615 %1617 = sext i32 %1616 to i64 %1618 = getelementptr [50 x i64], ptr @trans, i64 0, i64 %1617 %1619 = load i64, ptr %1618, align 8, !noalias !38 %1620 = icmp sgt i64 %1619, 2147483648 - %1621 = trunc i64 %indvars.iv800.i.i to i32 - br i1 %1620, label %1622, label %limitrange.exit485.i.i + br i1 %1620, label %1621, label %limitrange.exit485.loopexit.split.loop.exit868.i.i + +1621: ; preds = %.lr.ph44.i473.i.i + %1622 = icmp samesign ugt i64 %indvars.iv800.i.i, 1 + br i1 %1622, label %.lr.ph44.i473.i.i, label %limitrange.exit485.i.i, !llvm.loop !37 -1622: ; preds = %.lr.ph44.i473.i.i - %1623 = icmp samesign ugt i32 %1621, 1 - br i1 %1623, label %.lr.ph44.i473.i.i, label %limitrange.exit485.i.i, !llvm.loop !37 +limitrange.exit485.loopexit.split.loop.exit868.i.i: ; preds = %.lr.ph44.i473.i.i + %1623 = trunc nuw nsw i64 %indvars.iv800.i.i to i32 + br label %limitrange.exit485.i.i -limitrange.exit485.i.i: ; preds = %1622, %.lr.ph44.i473.i.i, %.critedge4.i470.i.i - %.sroa.22622.0.i.i = phi i32 [ %.pr15.i468.i.i, %.critedge4.i470.i.i ], [ 0, %1622 ], [ %1621, %.lr.ph44.i473.i.i ] +limitrange.exit485.i.i: ; preds = %1621, %limitrange.exit485.loopexit.split.loop.exit868.i.i, %.critedge4.i470.i.i + %.sroa.22622.0.i.i = phi i32 [ %.pr15.i468.i.i, %.critedge4.i470.i.i ], [ %1623, %limitrange.exit485.loopexit.split.loop.exit868.i.i ], [ 0, %1621 ] %1624 = call i32 @remove(ptr noundef %1387) #26 %1625 = icmp eq i32 %1624, 0 br i1 %1625, label %1635, label %1626 @@ -3854,7 +3860,7 @@ limitrange.exit485.i.i: ; preds = %1622, %.lr.ph44.i47 %1650 = icmp ugt i64 %.sroa.12617.0.i.i, 4294967295 %1651 = icmp slt i64 %.sroa.12.1.i.i, 0 %invariant.gep745.i.i = getelementptr i8, ptr %1393, i64 8 - %1652 = and i32 %spec.store.select876.i, 255 + %1652 = and i32 %spec.store.select880.i, 255 %1653 = zext nneg i32 %1652 to i64 %1654 = getelementptr [256 x i8], ptr @desigidx, i64 0, i64 %1653 %1655 = getelementptr [256 x i64], ptr @utoffs, i64 0, i64 %1653 @@ -4988,10 +4994,10 @@ outzone.exit: ; preds = %.loopexit658.i.i %2141 = icmp slt i64 %.041.lcssa, %2140 br i1 %2141, label %.preheader92, label %.preheader91, !llvm.loop !59 -.lr.ph200: ; preds = %.preheader91, %.loopexit - %.144198 = phi i64 [ %2168, %.loopexit ], [ 0, %.preheader91 ] +.lr.ph202: ; preds = %.preheader91, %.loopexit + %.144200 = phi i64 [ %2168, %.loopexit ], [ 0, %.preheader91 ] %2142 = load ptr, ptr @links, align 8 - %2143 = getelementptr %struct.link, ptr %2142, i64 %.144198 + %2143 = getelementptr %struct.link, ptr %2142, i64 %.144200 %2144 = load ptr, ptr %2143, align 8 %2145 = getelementptr inbounds nuw i8, ptr %2143, i64 8 %2146 = load i32, ptr %2145, align 8 @@ -5007,50 +5013,50 @@ outzone.exit: ; preds = %.loopexit658.i.i %.b61 = load i1, ptr @noise, align 1 %2151 = load i64, ptr @nlinks, align 8 %2152 = icmp sgt i64 %2151, 0 - %or.cond203 = select i1 %.b61, i1 %2152, i1 false - br i1 %or.cond203, label %.lr.ph197.preheader, label %.loopexit - -.lr.ph197.preheader: ; preds = %.lr.ph200 - %.pre310 = load ptr, ptr @links, align 8 - br label %.lr.ph197 - -.lr.ph197: ; preds = %.lr.ph197.preheader, %2162 - %2153 = phi i64 [ %2163, %2162 ], [ %2151, %.lr.ph197.preheader ] - %2154 = phi ptr [ %2164, %2162 ], [ %.pre310, %.lr.ph197.preheader ] - %.142196 = phi i64 [ %2165, %2162 ], [ 0, %.lr.ph197.preheader ] - %2155 = getelementptr %struct.link, ptr %2154, i64 %.144198, i32 3 + %or.cond205 = select i1 %.b61, i1 %2152, i1 false + br i1 %or.cond205, label %.lr.ph199.preheader, label %.loopexit + +.lr.ph199.preheader: ; preds = %.lr.ph202 + %.pre314 = load ptr, ptr @links, align 8 + br label %.lr.ph199 + +.lr.ph199: ; preds = %.lr.ph199.preheader, %2162 + %2153 = phi i64 [ %2163, %2162 ], [ %2151, %.lr.ph199.preheader ] + %2154 = phi ptr [ %2164, %2162 ], [ %.pre314, %.lr.ph199.preheader ] + %.142198 = phi i64 [ %2165, %2162 ], [ 0, %.lr.ph199.preheader ] + %2155 = getelementptr %struct.link, ptr %2154, i64 %.144200, i32 3 %2156 = load ptr, ptr %2155, align 8 - %2157 = getelementptr %struct.link, ptr %2154, i64 %.142196, i32 2 + %2157 = getelementptr %struct.link, ptr %2154, i64 %.142198, i32 2 %2158 = load ptr, ptr %2157, align 8 %2159 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %2156, ptr noundef nonnull dereferenceable(1) %2158) #27 %2160 = icmp eq i32 %2159, 0 br i1 %2160, label %2161, label %2162 -2161: ; preds = %.lr.ph197 +2161: ; preds = %.lr.ph199 call void (ptr, ...) @warning(ptr noundef nonnull @.str.21) - %.pre309 = load ptr, ptr @links, align 8 - %.pre311 = load i64, ptr @nlinks, align 8 + %.pre313 = load ptr, ptr @links, align 8 + %.pre315 = load i64, ptr @nlinks, align 8 br label %2162 -2162: ; preds = %.lr.ph197, %2161 - %2163 = phi i64 [ %2153, %.lr.ph197 ], [ %.pre311, %2161 ] - %2164 = phi ptr [ %2154, %.lr.ph197 ], [ %.pre309, %2161 ] - %2165 = add nuw nsw i64 %.142196, 1 +2162: ; preds = %.lr.ph199, %2161 + %2163 = phi i64 [ %2153, %.lr.ph199 ], [ %.pre315, %2161 ] + %2164 = phi ptr [ %2154, %.lr.ph199 ], [ %.pre313, %2161 ] + %2165 = add nuw nsw i64 %.142198, 1 %2166 = icmp slt i64 %2165, %2163 - br i1 %2166, label %.lr.ph197, label %.loopexit, !llvm.loop !60 + br i1 %2166, label %.lr.ph199, label %.loopexit, !llvm.loop !60 -.loopexit: ; preds = %2162, %.lr.ph200 - %2167 = phi i64 [ %2151, %.lr.ph200 ], [ %2163, %2162 ] - %2168 = add nuw nsw i64 %.144198, 1 +.loopexit: ; preds = %2162, %.lr.ph202 + %2167 = phi i64 [ %2151, %.lr.ph202 ], [ %2163, %2162 ] + %2168 = add nuw nsw i64 %.144200, 1 %2169 = icmp slt i64 %2168, %2167 - br i1 %2169, label %.lr.ph200, label %._crit_edge201, !llvm.loop !61 + br i1 %2169, label %.lr.ph202, label %._crit_edge203, !llvm.loop !61 -._crit_edge201: ; preds = %.loopexit, %.preheader91 +._crit_edge203: ; preds = %.loopexit, %.preheader91 %2170 = load ptr, ptr @lcltime, align 8 %.not55 = icmp eq ptr %2170, null br i1 %.not55, label %2173, label %2171 -2171: ; preds = %._crit_edge201 +2171: ; preds = %._crit_edge203 store ptr @.str.22, ptr @filename, align 8 store i32 1, ptr @linenum, align 4 store ptr null, ptr @rfilename, align 8 @@ -5059,7 +5065,7 @@ outzone.exit: ; preds = %.loopexit658.i.i call fastcc void @dolink(ptr noundef nonnull %2170, ptr noundef %2172, i1 noundef zeroext true) br label %2173 -2173: ; preds = %2171, %._crit_edge201 +2173: ; preds = %2171, %._crit_edge203 %2174 = load ptr, ptr @psxrules, align 8 %.not56 = icmp eq ptr %2174, null br i1 %.not56, label %2176, label %2175 diff --git a/bench/sqlite/optimized/sqlite3.ll b/bench/sqlite/optimized/sqlite3.ll index 3089906b276..790e295f16b 100644 --- a/bench/sqlite/optimized/sqlite3.ll +++ b/bench/sqlite/optimized/sqlite3.ll @@ -170181,63 +170181,63 @@ define internal fastcc void @sqlite3SrcListShiftJoinType(ptr noundef %0) unnamed .preheader1: ; preds = %2 %invariant.gep = getelementptr i8, ptr %0, i64 68 %5 = zext nneg i32 %3 to i64 - %invariant.gep17 = getelementptr i8, ptr %0, i64 -140 + %invariant.gep16 = getelementptr i8, ptr %0, i64 -140 br label %6 6: ; preds = %.preheader1, %6 - %indvars.iv = phi i64 [ %5, %.preheader1 ], [ %7, %6 ] - %.0 = phi i32 [ 0, %.preheader1 ], [ %11, %6 ] - %7 = add nsw i64 %indvars.iv, -1 - %8 = mul i64 %indvars.iv, 104 - %gep18 = getelementptr i8, ptr %invariant.gep17, i64 %8 - %9 = load i8, ptr %gep18, align 4 - %.idx22 = mul nuw nsw i64 %7, 104 + %indvars.iv = phi i64 [ %5, %.preheader1 ], [ %indvars.iv.next, %6 ] + %.0 = phi i32 [ 0, %.preheader1 ], [ %10, %6 ] + %indvars.iv.next = add nsw i64 %indvars.iv, -1 + %7 = mul i64 %indvars.iv, 104 + %gep17 = getelementptr i8, ptr %invariant.gep16, i64 %7 + %8 = load i8, ptr %gep17, align 4 + %.idx22 = mul nuw nsw i64 %indvars.iv.next, 104 %gep4 = getelementptr i8, ptr %invariant.gep, i64 %.idx22 - store i8 %9, ptr %gep4, align 4 - %10 = zext i8 %9 to i32 - %11 = or i32 %.0, %10 - %12 = icmp samesign ugt i64 %indvars.iv, 2 - br i1 %12, label %6, label %13, !llvm.loop !717 + store i8 %8, ptr %gep4, align 4 + %9 = zext i8 %8 to i32 + %10 = or i32 %.0, %9 + %11 = icmp samesign ugt i64 %indvars.iv, 2 + br i1 %11, label %6, label %12, !llvm.loop !717 -13: ; preds = %6 +12: ; preds = %6 store i8 0, ptr %invariant.gep, align 4 - %14 = and i32 %11, 16 - %.not23 = icmp eq i32 %14, 0 + %13 = and i32 %10, 16 + %.not23 = icmp eq i32 %13, 0 br i1 %.not23, label %.loopexit, label %.preheader -.preheader: ; preds = %13, %16 - %indvars.iv11 = phi i64 [ %indvars.iv.next12, %16 ], [ %5, %13 ] - %15 = icmp sgt i64 %indvars.iv11, 1 - br i1 %15, label %16, label %.critedge +.preheader: ; preds = %12, %15 + %indvars.iv10 = phi i64 [ %indvars.iv.next11, %15 ], [ %5, %12 ] + %14 = icmp sgt i64 %indvars.iv10, 1 + br i1 %14, label %15, label %.critedge -16: ; preds = %.preheader - %indvars.iv.next12 = add nsw i64 %indvars.iv11, -1 - %.idx24 = mul nuw nsw i64 %indvars.iv.next12, 104 +15: ; preds = %.preheader + %indvars.iv.next11 = add nsw i64 %indvars.iv10, -1 + %.idx24 = mul nuw nsw i64 %indvars.iv.next11, 104 %gep6 = getelementptr inbounds nuw i8, ptr %invariant.gep, i64 %.idx24 - %17 = load i8, ptr %gep6, align 4 - %18 = and i8 %17, 16 - %19 = icmp eq i8 %18, 0 - br i1 %19, label %.preheader, label %.critedge, !llvm.loop !718 + %16 = load i8, ptr %gep6, align 4 + %17 = and i8 %16, 16 + %18 = icmp eq i8 %17, 0 + br i1 %18, label %.preheader, label %.critedge, !llvm.loop !718 -.critedge: ; preds = %.preheader, %16 - %.1.in.lcssa = phi i64 [ 1, %.preheader ], [ %indvars.iv11, %16 ] - %20 = shl i64 %.1.in.lcssa, 32 - %sext = add i64 %20, -8589934592 - %21 = ashr exact i64 %sext, 32 - br label %22 +.critedge: ; preds = %.preheader, %15 + %.1.in.lcssa = phi i64 [ 1, %.preheader ], [ %indvars.iv10, %15 ] + %19 = shl i64 %.1.in.lcssa, 32 + %sext = add i64 %19, -8589934592 + %20 = ashr exact i64 %sext, 32 + br label %21 -22: ; preds = %22, %.critedge - %indvars.iv14 = phi i64 [ %indvars.iv.next15, %22 ], [ %21, %.critedge ] - %.idx25 = mul nsw i64 %indvars.iv14, 104 +21: ; preds = %21, %.critedge + %indvars.iv13 = phi i64 [ %indvars.iv.next14, %21 ], [ %20, %.critedge ] + %.idx25 = mul nsw i64 %indvars.iv13, 104 %gep8 = getelementptr i8, ptr %invariant.gep, i64 %.idx25 - %23 = load i8, ptr %gep8, align 4 - %24 = or i8 %23, 64 - store i8 %24, ptr %gep8, align 4 - %indvars.iv.next15 = add nsw i64 %indvars.iv14, -1 - %25 = icmp sgt i64 %indvars.iv14, 0 - br i1 %25, label %22, label %.loopexit, !llvm.loop !719 - -.loopexit: ; preds = %22, %13, %2, %1 + %22 = load i8, ptr %gep8, align 4 + %23 = or i8 %22, 64 + store i8 %23, ptr %gep8, align 4 + %indvars.iv.next14 = add nsw i64 %indvars.iv13, -1 + %24 = icmp sgt i64 %indvars.iv13, 0 + br i1 %24, label %21, label %.loopexit, !llvm.loop !719 + +.loopexit: ; preds = %21, %12, %2, %1 ret void } @@ -225192,9 +225192,9 @@ define internal fastcc void @sqlite3ColumnsFromExprList(ptr nocapture noundef %0 %7 = load ptr, ptr %0, align 8 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %6, i8 0, i64 24, i1 false) %.not = icmp eq ptr %1, null - br i1 %.not, label %.thread202, label %9 + br i1 %.not, label %.thread200, label %9 -.thread202: ; preds = %4 +.thread200: ; preds = %4 store i16 0, ptr %2, align 2 store ptr null, ptr %3, align 8 %8 = getelementptr inbounds nuw i8, ptr %0, i64 48 @@ -225252,10 +225252,10 @@ sqlite3DbMallocRaw.exit.i: ; preds = %15, %13 34: ; preds = %.lr.ph174, %sqlite3OomFault.exit %indvars.iv192 = phi i64 [ 0, %.lr.ph174 ], [ %indvars.iv.next193, %sqlite3OomFault.exit ] - %.097171 = phi ptr [ %.0.i.i, %.lr.ph174 ], [ %263, %sqlite3OomFault.exit ] + %.097171 = phi ptr [ %.0.i.i, %.lr.ph174 ], [ %265, %sqlite3OomFault.exit ] %35 = load i32, ptr %20, align 8 %.not107 = icmp eq i32 %35, 0 - br i1 %.not107, label %36, label %.critedge.loopexit.split.loop.exit229 + br i1 %.not107, label %36, label %.critedge.loopexit.split.loop.exit227 36: ; preds = %34 %37 = getelementptr inbounds nuw [1 x %struct.ExprList_item], ptr %22, i64 0, i64 %indvars.iv192 @@ -225272,34 +225272,34 @@ sqlite3DbMallocRaw.exit.i: ; preds = %15, %13 br i1 %44, label %.thread145, label %45 45: ; preds = %40, %36 - %.1.i.sink9 = load ptr, ptr %37, align 8, !nonnull !176, !noundef !176 - %46 = getelementptr inbounds nuw i8, ptr %.1.i.sink9, i64 4 + %.1.i.sink8 = load ptr, ptr %37, align 8, !nonnull !176, !noundef !176 + %46 = getelementptr inbounds nuw i8, ptr %.1.i.sink8, i64 4 %47 = load i32, ptr %46, align 4 %48 = and i32 %47, 532480 - %.not6.i10 = icmp eq i32 %48, 0 - br i1 %.not6.i10, label %.lr.ph.preheader, label %.lr.ph13 + %.not6.i9 = icmp eq i32 %48, 0 + br i1 %.not6.i9, label %.lr.ph.preheader, label %.lr.ph12 .lr.ph.preheader: ; preds = %.lr.ph.i, %45 - %.1.i.sink.lcssa = phi ptr [ %.1.i.sink9, %45 ], [ %.1.i.sink, %.lr.ph.i ] + %.1.i.sink.lcssa = phi ptr [ %.1.i.sink8, %45 ], [ %.1.i.sink, %.lr.ph.i ] %49 = load i8, ptr %.1.i.sink.lcssa, align 8 %50 = icmp eq i8 %49, -115 br i1 %50, label %.lr.ph, label %.critedge2 -.lr.ph13: ; preds = %45, %.lr.ph.i +.lr.ph12: ; preds = %45, %.lr.ph.i %51 = phi i32 [ %60, %.lr.ph.i ], [ %47, %45 ] - %.1.i.sink11 = phi ptr [ %.1.i.sink, %.lr.ph.i ], [ %.1.i.sink9, %45 ] + %.1.i.sink10 = phi ptr [ %.1.i.sink, %.lr.ph.i ], [ %.1.i.sink8, %45 ] %52 = and i32 %51, 524288 %.not7.i = icmp eq i32 %52, 0 br i1 %.not7.i, label %57, label %53 -53: ; preds = %.lr.ph13 - %54 = getelementptr inbounds nuw i8, ptr %.1.i.sink11, i64 32 +53: ; preds = %.lr.ph12 + %54 = getelementptr inbounds nuw i8, ptr %.1.i.sink10, i64 32 %55 = load ptr, ptr %54, align 8 %56 = getelementptr inbounds nuw i8, ptr %55, i64 8 br label %.lr.ph.i -57: ; preds = %.lr.ph13 - %58 = getelementptr inbounds nuw i8, ptr %.1.i.sink11, i64 16 +57: ; preds = %.lr.ph12 + %58 = getelementptr inbounds nuw i8, ptr %.1.i.sink10, i64 16 br label %.lr.ph.i .lr.ph.i: ; preds = %57, %53 @@ -225309,11 +225309,11 @@ sqlite3DbMallocRaw.exit.i: ; preds = %15, %13 %60 = load i32, ptr %59, align 4 %61 = and i32 %60, 532480 %.not6.i = icmp eq i32 %61, 0 - br i1 %.not6.i, label %.lr.ph.preheader, label %.lr.ph13 + br i1 %.not6.i, label %.lr.ph.preheader, label %.lr.ph12 .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph - %.08916414 = phi ptr [ %63, %.lr.ph ], [ %.1.i.sink.lcssa, %.lr.ph.preheader ] - %62 = getelementptr inbounds nuw i8, ptr %.08916414, i64 24 + %.08916413 = phi ptr [ %63, %.lr.ph ], [ %.1.i.sink.lcssa, %.lr.ph.preheader ] + %62 = getelementptr inbounds nuw i8, ptr %.08916413, i64 24 %63 = load ptr, ptr %62, align 8, !nonnull !176, !noundef !176 %64 = load i8, ptr %63, align 8 %65 = icmp eq i8 %64, -115 @@ -225445,13 +225445,13 @@ sqlite3IsTrueOrFalse.exit: ; preds = %109 sqlite3DbMallocRaw.exit.i124: ; preds = %123, %121 %.0.i.i125 = phi ptr [ %122, %121 ], [ %124, %123 ] %.not.i126 = icmp eq ptr %.0.i.i125, null - br i1 %.not.i126, label %sqlite3DbStrDup.exit.thread, label %sqlite3DbStrDup.exit.thread212 + br i1 %.not.i126, label %sqlite3DbStrDup.exit.thread, label %sqlite3DbStrDup.exit.thread210 sqlite3DbStrDup.exit.thread: ; preds = %sqlite3DbMallocRaw.exit.i124 store i32 0, ptr %5, align 4 br label %.split99 -sqlite3DbStrDup.exit.thread212: ; preds = %sqlite3DbMallocRaw.exit.i124 +sqlite3DbStrDup.exit.thread210: ; preds = %sqlite3DbMallocRaw.exit.i124 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %.0.i.i125, ptr nonnull readonly align 1 %.094148, i64 %120, i1 false) store i32 0, ptr %5, align 4 br label %.lr.ph168 @@ -225464,17 +225464,17 @@ sqlite3DbStrDup.exit: ; preds = %92, %107, %.thread1 %.not114165 = icmp eq ptr %127, null br i1 %.not114165, label %.split99, label %.lr.ph168 -.lr.ph168: ; preds = %sqlite3DbStrDup.exit.thread212, %sqlite3DbStrDup.exit - %.195215 = phi ptr [ %.0.i.i125, %sqlite3DbStrDup.exit.thread212 ], [ %127, %sqlite3DbStrDup.exit ] +.lr.ph168: ; preds = %sqlite3DbStrDup.exit.thread210, %sqlite3DbStrDup.exit + %.195213 = phi ptr [ %.0.i.i125, %sqlite3DbStrDup.exit.thread210 ], [ %127, %sqlite3DbStrDup.exit ] %128 = getelementptr inbounds nuw i8, ptr %.097171, i64 14 br label %129 -.split99: ; preds = %228, %sqlite3DbStrDup.exit.thread, %sqlite3DbStrDup.exit +.split99: ; preds = %230, %sqlite3DbStrDup.exit.thread, %sqlite3DbStrDup.exit store ptr null, ptr %.097171, align 8 br label %.critedge4 -129: ; preds = %.lr.ph168, %228 - %.2166 = phi ptr [ %.195215, %.lr.ph168 ], [ %199, %228 ] +129: ; preds = %.lr.ph168, %230 + %.2166 = phi ptr [ %.195213, %.lr.ph168 ], [ %201, %230 ] %130 = load ptr, ptr %23, align 8 %.not.i.i128 = icmp eq ptr %130, null br i1 %.not.i.i128, label %146, label %131 @@ -225602,7 +225602,7 @@ sqlite3Strlen30.exit: ; preds = %180, %176 %184 = trunc i64 %183 to i32 %185 = and i32 %184, 1073741823 %.not118 = icmp eq i32 %185, 0 - br i1 %.not118, label %196, label %.preheader151.preheader + br i1 %.not118, label %198, label %.preheader151.preheader .preheader151.preheader: ; preds = %sqlite3Strlen30.exit %186 = and i64 %183, 1073741823 @@ -225611,241 +225611,238 @@ sqlite3Strlen30.exit: ; preds = %180, %176 .preheader151: ; preds = %.preheader151.preheader, %188 %indvars.iv = phi i64 [ %186, %.preheader151.preheader ], [ %indvars.iv.next, %188 ] %187 = icmp samesign ugt i64 %indvars.iv, 1 - br i1 %187, label %188, label %.preheader151..critedge6_crit_edge - -.preheader151..critedge6_crit_edge: ; preds = %.preheader151 - %.pre = load i8, ptr %.2166, align 1 - br label %.critedge6 + br i1 %187, label %188, label %.critedge6 188: ; preds = %.preheader151 %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %189 = and i64 %indvars.iv.next, 4294967295 - %190 = getelementptr inbounds nuw i8, ptr %.2166, i64 %189 - %191 = load i8, ptr %190, align 1 - %192 = zext i8 %191 to i64 - %193 = add nsw i64 %192, -58 - %.not119 = icmp ult i64 %193, -10 - br i1 %.not119, label %.critedge6.loopexit, label %.preheader151, !llvm.loop !938 + %189 = getelementptr inbounds nuw i8, ptr %.2166, i64 %indvars.iv.next + %190 = load i8, ptr %189, align 1 + %191 = zext i8 %190 to i64 + %192 = add nsw i64 %191, -58 + %.not119 = icmp ult i64 %192, -10 + br i1 %.not119, label %.critedge6.split.loop.exit225, label %.preheader151, !llvm.loop !938 -.critedge6.loopexit: ; preds = %188 - %indvars.le = trunc i64 %indvars.iv.next to i32 +.critedge6.split.loop.exit225: ; preds = %188 + %193 = trunc nuw nsw i64 %indvars.iv.next to i32 br label %.critedge6 -.critedge6: ; preds = %.critedge6.loopexit, %.preheader151..critedge6_crit_edge - %194 = phi i8 [ %.pre, %.preheader151..critedge6_crit_edge ], [ %191, %.critedge6.loopexit ] - %.092.lcssa = phi i32 [ 0, %.preheader151..critedge6_crit_edge ], [ %indvars.le, %.critedge6.loopexit ] - %195 = icmp eq i8 %194, 58 - %spec.select = select i1 %195, i32 %.092.lcssa, i32 %185 - br label %196 +.critedge6: ; preds = %.preheader151, %.critedge6.split.loop.exit225 + %.092.lcssa = phi i32 [ %193, %.critedge6.split.loop.exit225 ], [ 0, %.preheader151 ] + %194 = zext nneg i32 %.092.lcssa to i64 + %195 = getelementptr inbounds nuw i8, ptr %.2166, i64 %194 + %196 = load i8, ptr %195, align 1 + %197 = icmp eq i8 %196, 58 + %spec.select = select i1 %197, i32 %.092.lcssa, i32 %185 + br label %198 -196: ; preds = %.critedge6, %sqlite3Strlen30.exit +198: ; preds = %.critedge6, %sqlite3Strlen30.exit %.093 = phi i32 [ 0, %sqlite3Strlen30.exit ], [ %spec.select, %.critedge6 ] - %197 = load i32, ptr %5, align 4 - %198 = add i32 %197, 1 - store i32 %198, ptr %5, align 4 - %199 = call ptr (ptr, ptr, ...) @sqlite3MPrintf(ptr noundef %7, ptr noundef nonnull @.str.704, i32 noundef %.093, ptr noundef nonnull %.2166, i32 noundef %198) - %200 = load ptr, ptr %0, align 8 - %201 = getelementptr inbounds nuw i8, ptr %200, i64 400 - %202 = load atomic volatile i32, ptr %201 monotonic, align 8 - %.not.i133 = icmp eq i32 %202, 0 - br i1 %.not.i133, label %206, label %203 - -203: ; preds = %196 - %204 = load i32, ptr %20, align 8 - %205 = add nsw i32 %204, 1 - store i32 %205, ptr %20, align 8 + %199 = load i32, ptr %5, align 4 + %200 = add i32 %199, 1 + store i32 %200, ptr %5, align 4 + %201 = call ptr (ptr, ptr, ...) @sqlite3MPrintf(ptr noundef %7, ptr noundef nonnull @.str.704, i32 noundef %.093, ptr noundef nonnull %.2166, i32 noundef %200) + %202 = load ptr, ptr %0, align 8 + %203 = getelementptr inbounds nuw i8, ptr %202, i64 400 + %204 = load atomic volatile i32, ptr %203 monotonic, align 8 + %.not.i133 = icmp eq i32 %204, 0 + br i1 %.not.i133, label %208, label %205 + +205: ; preds = %198 + %206 = load i32, ptr %20, align 8 + %207 = add nsw i32 %206, 1 + store i32 %207, ptr %20, align 8 store i32 9, ptr %25, align 8 - br label %206 - -206: ; preds = %203, %196 - %207 = getelementptr inbounds nuw i8, ptr %200, i64 520 - %208 = load ptr, ptr %207, align 8 - %.not14.i = icmp eq ptr %208, null - br i1 %.not14.i, label %sqlite3ProgressCheck.exit, label %209 + br label %208 -209: ; preds = %206 - %210 = load i32, ptr %25, align 8 - %211 = icmp eq i32 %210, 9 - br i1 %211, label %.sink.split.i, label %212 +208: ; preds = %205, %198 + %209 = getelementptr inbounds nuw i8, ptr %202, i64 520 + %210 = load ptr, ptr %209, align 8 + %.not14.i = icmp eq ptr %210, null + br i1 %.not14.i, label %sqlite3ProgressCheck.exit, label %211 -212: ; preds = %209 - %213 = load i32, ptr %26, align 8 - %214 = add i32 %213, 1 - store i32 %214, ptr %26, align 8 - %215 = getelementptr inbounds nuw i8, ptr %200, i64 536 - %216 = load i32, ptr %215, align 8 - %.not15.i = icmp ult i32 %214, %216 - br i1 %.not15.i, label %sqlite3ProgressCheck.exit, label %217 +211: ; preds = %208 + %212 = load i32, ptr %25, align 8 + %213 = icmp eq i32 %212, 9 + br i1 %213, label %.sink.split.i, label %214 -217: ; preds = %212 - %218 = load ptr, ptr %207, align 8 - %219 = getelementptr inbounds nuw i8, ptr %200, i64 528 - %220 = load ptr, ptr %219, align 8 - %221 = call i32 %218(ptr noundef %220) #57 - %.not16.i = icmp eq i32 %221, 0 - br i1 %.not16.i, label %.sink.split.i, label %222 +214: ; preds = %211 + %215 = load i32, ptr %26, align 8 + %216 = add i32 %215, 1 + store i32 %216, ptr %26, align 8 + %217 = getelementptr inbounds nuw i8, ptr %202, i64 536 + %218 = load i32, ptr %217, align 8 + %.not15.i = icmp ult i32 %216, %218 + br i1 %.not15.i, label %sqlite3ProgressCheck.exit, label %219 -222: ; preds = %217 - %223 = load i32, ptr %20, align 8 - %224 = add nsw i32 %223, 1 - store i32 %224, ptr %20, align 8 +219: ; preds = %214 + %220 = load ptr, ptr %209, align 8 + %221 = getelementptr inbounds nuw i8, ptr %202, i64 528 + %222 = load ptr, ptr %221, align 8 + %223 = call i32 %220(ptr noundef %222) #57 + %.not16.i = icmp eq i32 %223, 0 + br i1 %.not16.i, label %.sink.split.i, label %224 + +224: ; preds = %219 + %225 = load i32, ptr %20, align 8 + %226 = add nsw i32 %225, 1 + store i32 %226, ptr %20, align 8 store i32 9, ptr %25, align 8 br label %.sink.split.i -.sink.split.i: ; preds = %222, %217, %209 +.sink.split.i: ; preds = %224, %219, %211 store i32 0, ptr %26, align 8 br label %sqlite3ProgressCheck.exit -sqlite3ProgressCheck.exit: ; preds = %206, %212, %.sink.split.i - %225 = load i32, ptr %5, align 4 - %226 = icmp ugt i32 %225, 3 - br i1 %226, label %227, label %228 +sqlite3ProgressCheck.exit: ; preds = %208, %214, %.sink.split.i + %227 = load i32, ptr %5, align 4 + %228 = icmp ugt i32 %227, 3 + br i1 %228, label %229, label %230 -227: ; preds = %sqlite3ProgressCheck.exit +229: ; preds = %sqlite3ProgressCheck.exit call void @sqlite3_randomness(i32 noundef 4, ptr noundef nonnull %5) - br label %228 + br label %230 -228: ; preds = %227, %sqlite3ProgressCheck.exit - %.not114 = icmp eq ptr %199, null +230: ; preds = %229, %sqlite3ProgressCheck.exit + %.not114 = icmp eq ptr %201, null br i1 %.not114, label %.split99, label %129, !llvm.loop !939 .critedge4: ; preds = %.lr.ph.i130, %.preheader.i, %.split99 %.2161 = phi ptr [ null, %.split99 ], [ %.2166, %.preheader.i ], [ %.2166, %.lr.ph.i130 ] %.not114159 = phi i1 [ true, %.split99 ], [ false, %.preheader.i ], [ false, %.lr.ph.i130 ] %phi.call = phi i8 [ 0, %.split99 ], [ 0, %.preheader.i ], [ %173, %.lr.ph.i130 ] - %229 = getelementptr inbounds nuw i8, ptr %.097171, i64 11 - store i8 %phi.call, ptr %229, align 1 - %230 = getelementptr inbounds nuw i8, ptr %37, i64 17 - %231 = load i16, ptr %230, align 1 - %232 = and i16 %231, 256 - %.not116 = icmp eq i16 %232, 0 - br i1 %.not116, label %237, label %233 - -233: ; preds = %.critedge4 - %234 = getelementptr inbounds nuw i8, ptr %.097171, i64 14 - %235 = load i16, ptr %234, align 2 - %236 = or i16 %235, 1024 - store i16 %236, ptr %234, align 2 - br label %237 + %231 = getelementptr inbounds nuw i8, ptr %.097171, i64 11 + store i8 %phi.call, ptr %231, align 1 + %232 = getelementptr inbounds nuw i8, ptr %37, i64 17 + %233 = load i16, ptr %232, align 1 + %234 = and i16 %233, 256 + %.not116 = icmp eq i16 %234, 0 + br i1 %.not116, label %239, label %235 + +235: ; preds = %.critedge4 + %236 = getelementptr inbounds nuw i8, ptr %.097171, i64 14 + %237 = load i16, ptr %236, align 2 + %238 = or i16 %237, 1024 + store i16 %238, ptr %236, align 2 + br label %239 -237: ; preds = %233, %.critedge4 - br i1 %.not114159, label %sqlite3OomFault.exit, label %238 +239: ; preds = %235, %.critedge4 + br i1 %.not114159, label %sqlite3OomFault.exit, label %240 -238: ; preds = %237 - %239 = call fastcc ptr @sqlite3HashInsert(ptr noundef nonnull %6, ptr noundef nonnull %.2161, ptr noundef nonnull %37) - %240 = icmp eq ptr %239, %37 - br i1 %240, label %241, label %sqlite3OomFault.exit +240: ; preds = %239 + %241 = call fastcc ptr @sqlite3HashInsert(ptr noundef nonnull %6, ptr noundef nonnull %.2161, ptr noundef nonnull %37) + %242 = icmp eq ptr %241, %37 + br i1 %242, label %243, label %sqlite3OomFault.exit -241: ; preds = %238 - %242 = load i8, ptr %27, align 1 - %243 = icmp eq i8 %242, 0 - br i1 %243, label %244, label %sqlite3OomFault.exit +243: ; preds = %240 + %244 = load i8, ptr %27, align 1 + %245 = icmp eq i8 %244, 0 + br i1 %245, label %246, label %sqlite3OomFault.exit -244: ; preds = %241 - %245 = load i8, ptr %28, align 8 - %246 = icmp eq i8 %245, 0 - br i1 %246, label %247, label %sqlite3OomFault.exit +246: ; preds = %243 + %247 = load i8, ptr %28, align 8 + %248 = icmp eq i8 %247, 0 + br i1 %248, label %249, label %sqlite3OomFault.exit -247: ; preds = %244 +249: ; preds = %246 store i8 1, ptr %27, align 1 - %248 = load i32, ptr %29, align 4 - %249 = icmp sgt i32 %248, 0 - br i1 %249, label %250, label %251 + %250 = load i32, ptr %29, align 4 + %251 = icmp sgt i32 %250, 0 + br i1 %251, label %252, label %253 -250: ; preds = %247 +252: ; preds = %249 store atomic volatile i32 1, ptr %30 monotonic, align 8 - br label %251 + br label %253 -251: ; preds = %250, %247 - %252 = load i32, ptr %31, align 8 - %253 = add i32 %252, 1 - store i32 %253, ptr %31, align 8 +253: ; preds = %252, %249 + %254 = load i32, ptr %31, align 8 + %255 = add i32 %254, 1 + store i32 %255, ptr %31, align 8 store i16 0, ptr %32, align 4 - %254 = load ptr, ptr %33, align 8 - %.not.i134 = icmp eq ptr %254, null - br i1 %.not.i134, label %sqlite3OomFault.exit, label %255 - -255: ; preds = %251 - call void (ptr, ptr, ...) @sqlite3ErrorMsg(ptr noundef nonnull %254, ptr noundef nonnull @.str.115) #60 %256 = load ptr, ptr %33, align 8 - %257 = getelementptr inbounds nuw i8, ptr %256, i64 24 - store i32 7, ptr %257, align 8 + %.not.i134 = icmp eq ptr %256, null + br i1 %.not.i134, label %sqlite3OomFault.exit, label %257 + +257: ; preds = %253 + call void (ptr, ptr, ...) @sqlite3ErrorMsg(ptr noundef nonnull %256, ptr noundef nonnull @.str.115) #60 %258 = load ptr, ptr %33, align 8 - %.0.in17.i = getelementptr inbounds nuw i8, ptr %258, i64 264 + %259 = getelementptr inbounds nuw i8, ptr %258, i64 24 + store i32 7, ptr %259, align 8 + %260 = load ptr, ptr %33, align 8 + %.0.in17.i = getelementptr inbounds nuw i8, ptr %260, i64 264 %.018.i = load ptr, ptr %.0.in17.i, align 8 %.not1619.i = icmp eq ptr %.018.i, null br i1 %.not1619.i, label %sqlite3OomFault.exit, label %.lr.ph.i135 -.lr.ph.i135: ; preds = %255, %.lr.ph.i135 - %.020.i = phi ptr [ %.0.i136, %.lr.ph.i135 ], [ %.018.i, %255 ] - %259 = getelementptr inbounds nuw i8, ptr %.020.i, i64 48 - %260 = load i32, ptr %259, align 8 - %261 = add nsw i32 %260, 1 - store i32 %261, ptr %259, align 8 - %262 = getelementptr inbounds nuw i8, ptr %.020.i, i64 24 - store i32 7, ptr %262, align 8 +.lr.ph.i135: ; preds = %257, %.lr.ph.i135 + %.020.i = phi ptr [ %.0.i136, %.lr.ph.i135 ], [ %.018.i, %257 ] + %261 = getelementptr inbounds nuw i8, ptr %.020.i, i64 48 + %262 = load i32, ptr %261, align 8 + %263 = add nsw i32 %262, 1 + store i32 %263, ptr %261, align 8 + %264 = getelementptr inbounds nuw i8, ptr %.020.i, i64 24 + store i32 7, ptr %264, align 8 %.0.in.i = getelementptr inbounds nuw i8, ptr %.020.i, i64 264 %.0.i136 = load ptr, ptr %.0.in.i, align 8 %.not16.i137 = icmp eq ptr %.0.i136, null br i1 %.not16.i137, label %sqlite3OomFault.exit, label %.lr.ph.i135, !llvm.loop !62 -sqlite3OomFault.exit: ; preds = %.lr.ph.i135, %255, %251, %244, %241, %237, %238 +sqlite3OomFault.exit: ; preds = %.lr.ph.i135, %257, %253, %246, %243, %239, %240 %indvars.iv.next193 = add nuw nsw i64 %indvars.iv192, 1 - %263 = getelementptr inbounds nuw i8, ptr %.097171, i64 16 + %265 = getelementptr inbounds nuw i8, ptr %.097171, i64 16 %exitcond.not = icmp eq i64 %indvars.iv.next193, %wide.trip.count br i1 %exitcond.not, label %.critedge, label %34, !llvm.loop !940 -.critedge.loopexit.split.loop.exit229: ; preds = %34 - %264 = trunc nuw nsw i64 %indvars.iv192 to i32 +.critedge.loopexit.split.loop.exit227: ; preds = %34 + %266 = trunc nuw nsw i64 %indvars.iv192 to i32 br label %.critedge -.critedge: ; preds = %sqlite3OomFault.exit, %.critedge.loopexit.split.loop.exit229, %.thread202, %18 - %265 = phi ptr [ %20, %18 ], [ %8, %.thread202 ], [ %20, %.critedge.loopexit.split.loop.exit229 ], [ %20, %sqlite3OomFault.exit ] - %.098205 = phi ptr [ %.0.i.i, %18 ], [ null, %.thread202 ], [ %.0.i.i, %.critedge.loopexit.split.loop.exit229 ], [ %.0.i.i, %sqlite3OomFault.exit ] - %.091.lcssa = phi i32 [ 0, %18 ], [ 0, %.thread202 ], [ %264, %.critedge.loopexit.split.loop.exit229 ], [ %spec.store.select, %sqlite3OomFault.exit ] +.critedge: ; preds = %sqlite3OomFault.exit, %.critedge.loopexit.split.loop.exit227, %.thread200, %18 + %267 = phi ptr [ %20, %18 ], [ %8, %.thread200 ], [ %20, %.critedge.loopexit.split.loop.exit227 ], [ %20, %sqlite3OomFault.exit ] + %.098203 = phi ptr [ %.0.i.i, %18 ], [ null, %.thread200 ], [ %.0.i.i, %.critedge.loopexit.split.loop.exit227 ], [ %.0.i.i, %sqlite3OomFault.exit ] + %.091.lcssa = phi i32 [ 0, %18 ], [ 0, %.thread200 ], [ %266, %.critedge.loopexit.split.loop.exit227 ], [ %spec.store.select, %sqlite3OomFault.exit ] call fastcc void @sqlite3HashClear(ptr noundef nonnull %6) - %266 = load i32, ptr %265, align 8 - %.not108 = icmp eq i32 %266, 0 - br i1 %.not108, label %270, label %.preheader + %268 = load i32, ptr %267, align 8 + %.not108 = icmp eq i32 %268, 0 + br i1 %.not108, label %272, label %.preheader .preheader: ; preds = %.critedge %.not180 = icmp eq i32 %.091.lcssa, 0 br i1 %.not180, label %._crit_edge, label %.lr.ph179.preheader .lr.ph179.preheader: ; preds = %.preheader - %wide.trip.count200 = zext i32 %.091.lcssa to i64 + %wide.trip.count198 = zext i32 %.091.lcssa to i64 br label %.lr.ph179 .lr.ph179: ; preds = %.lr.ph179.preheader, %sqlite3DbFree.exit - %indvars.iv196 = phi i64 [ 0, %.lr.ph179.preheader ], [ %indvars.iv.next197, %sqlite3DbFree.exit ] - %267 = getelementptr inbounds nuw %struct.Column, ptr %.098205, i64 %indvars.iv196 - %268 = load ptr, ptr %267, align 8 - %.not.i138 = icmp eq ptr %268, null - br i1 %.not.i138, label %sqlite3DbFree.exit, label %269 + %indvars.iv195 = phi i64 [ 0, %.lr.ph179.preheader ], [ %indvars.iv.next196, %sqlite3DbFree.exit ] + %269 = getelementptr inbounds nuw %struct.Column, ptr %.098203, i64 %indvars.iv195 + %270 = load ptr, ptr %269, align 8 + %.not.i138 = icmp eq ptr %270, null + br i1 %.not.i138, label %sqlite3DbFree.exit, label %271 -269: ; preds = %.lr.ph179 - call fastcc void @sqlite3DbFreeNN(ptr noundef %7, ptr noundef nonnull %268) +271: ; preds = %.lr.ph179 + call fastcc void @sqlite3DbFreeNN(ptr noundef %7, ptr noundef nonnull %270) br label %sqlite3DbFree.exit -sqlite3DbFree.exit: ; preds = %.lr.ph179, %269 - %indvars.iv.next197 = add nuw nsw i64 %indvars.iv196, 1 - %exitcond201.not = icmp eq i64 %indvars.iv.next197, %wide.trip.count200 - br i1 %exitcond201.not, label %._crit_edge.thread, label %.lr.ph179, !llvm.loop !941 +sqlite3DbFree.exit: ; preds = %.lr.ph179, %271 + %indvars.iv.next196 = add nuw nsw i64 %indvars.iv195, 1 + %exitcond199.not = icmp eq i64 %indvars.iv.next196, %wide.trip.count198 + br i1 %exitcond199.not, label %._crit_edge.thread, label %.lr.ph179, !llvm.loop !941 ._crit_edge: ; preds = %.preheader - %.not.i139 = icmp eq ptr %.098205, null + %.not.i139 = icmp eq ptr %.098203, null br i1 %.not.i139, label %sqlite3DbFree.exit140, label %._crit_edge.thread ._crit_edge.thread: ; preds = %sqlite3DbFree.exit, %._crit_edge - call fastcc void @sqlite3DbFreeNN(ptr noundef %7, ptr noundef nonnull %.098205) + call fastcc void @sqlite3DbFreeNN(ptr noundef %7, ptr noundef nonnull %.098203) br label %sqlite3DbFree.exit140 sqlite3DbFree.exit140: ; preds = %._crit_edge, %._crit_edge.thread store ptr null, ptr %3, align 8 store i16 0, ptr %2, align 2 - br label %270 + br label %272 -270: ; preds = %.critedge, %sqlite3DbFree.exit140 +272: ; preds = %.critedge, %sqlite3DbFree.exit140 ret void } diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c5409e09ef4..c3a26bdc9cd 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/124270 export COMPTIME_MODE=0 # Please rebase manually