From d078422d868e1e3c958e290e9140f4d289625ca5 Mon Sep 17 00:00:00 2001 From: dtcxzyw <15650457+dtcxzyw@users.noreply.github.com> Date: Sat, 8 Nov 2025 22:33:37 +0800 Subject: [PATCH 1/3] pre-commit: PR153053 --- scripts/setup_pre_commit_patch.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c8d0fce0bf7..d85330cf48d 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/153053 export COMPTIME_MODE=0 export STAT_MODE=0 export STAT_NAME="" From 3e7ae4252658c4220e211954a93252aeb63fc5c8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 8 Nov 2025 14:49:15 +0000 Subject: [PATCH 2/3] pre-commit: Update --- bench/boost/optimized/xml_grammar.ll | 347 ++++--- bench/cmake/optimized/hsts.ll | 213 ++--- bench/cpython/optimized/bytes_methods.ll | 41 +- bench/cpython/optimized/unicodeobject.ll | 89 +- bench/curl/optimized/altsvc.ll | 317 +++---- bench/curl/optimized/hsts.ll | 217 ++--- bench/ffmpeg/optimized/ffv1dec.ll | 33 +- bench/ffmpeg/optimized/ffv1enc.ll | 21 +- bench/ffmpeg/optimized/mace.ll | 127 ++- bench/ffmpeg/optimized/mov.ll | 119 +-- bench/grpc/optimized/grpc_ares_wrapper.ll | 5 +- bench/grpc/optimized/ping_rate_policy.ll | 69 +- bench/grpc/optimized/tcp_posix.ll | 279 +++--- bench/grpc/optimized/utils.ll | 7 +- .../libzmq/optimized/stream_connecter_base.ll | 81 +- bench/openjdk/optimized/ifnode.ll | 89 +- bench/openjdk/optimized/imageioJPEG.ll | 857 +++++++++--------- bench/php/optimized/zend_hash.ll | 279 +++--- bench/sqlite/optimized/sqlite3.ll | 38 +- bench/yalantinglibs/optimized/client.ll | 132 +-- bench/yalantinglibs/optimized/server.ll | 108 +-- 21 files changed, 1728 insertions(+), 1740 deletions(-) diff --git a/bench/boost/optimized/xml_grammar.ll b/bench/boost/optimized/xml_grammar.ll index 30df46b96eb..d259c9ee58f 100644 --- a/bench/boost/optimized/xml_grammar.ll +++ b/bench/boost/optimized/xml_grammar.ll @@ -6539,7 +6539,7 @@ define linkonce_odr hidden void @_ZN5boost6spirit7classic7utility4impl9range_run %4 = getelementptr inbounds nuw i8, ptr %0, i64 8 %5 = load ptr, ptr %4, align 8, !tbaa !10 %6 = icmp eq ptr %3, %5 - br i1 %6, label %143, label %7 + br i1 %6, label %135, label %7 7: ; preds = %2 %8 = ptrtoint ptr %5 to i64 @@ -6605,235 +6605,227 @@ _ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility 42: ; preds = %32 %43 = icmp eq i32 %34, -2147483648 %44 = add nsw i32 %34, -1 - %45 = icmp eq i32 %37, 2147483647 - %46 = add nsw i32 %37, 1 + %45 = tail call i32 @llvm.sadd.sat.i32(i32 %37, i32 1) %.not4.i = icmp sle i32 %44, %39 %.not.not.i = select i1 %43, i1 true, i1 %.not4.i - %47 = icmp sge i32 %46, %35 - %48 = select i1 %45, i1 true, i1 %47 - %49 = select i1 %.not.not.i, i1 %48, i1 false - br i1 %49, label %50, label %.critedge4 - -50: ; preds = %42 - %51 = tail call i32 @llvm.smin.i32(i32 %35, i32 %34) - store i32 %51, ptr %33, align 4, !tbaa !62 - %52 = load i32, ptr %38, align 4, !tbaa !60 - %53 = tail call i32 @llvm.smax.i32(i32 %37, i32 %52) - store i32 %53, ptr %36, align 4, !tbaa !64 + %46 = icmp sge i32 %45, %35 + %47 = select i1 %.not.not.i, i1 %46, i1 false + br i1 %47, label %48, label %.critedge4 + +48: ; preds = %42 + %49 = tail call i32 @llvm.smin.i32(i32 %35, i32 %34) + store i32 %49, ptr %33, align 4, !tbaa !62 + %50 = load i32, ptr %38, align 4, !tbaa !60 + %51 = tail call i32 @llvm.smax.i32(i32 %37, i32 %50) + store i32 %51, ptr %36, align 4, !tbaa !64 br i1 %.not, label %.critedge, label %.lr.ph.i -.lr.ph.i: ; preds = %50, %66 - %54 = phi i32 [ %69, %66 ], [ %53, %50 ] - %55 = phi i32 [ %67, %66 ], [ %51, %50 ] - %.sroa.06.0.ptr20.i = phi ptr [ %.sroa.06.0.ptr.i, %66 ], [ %.sroa.011.0.lcssa.i.i, %50 ] - %.sroa.06.0.idx19.i = phi i64 [ %.sroa.06.0.add.i, %66 ], [ 8, %50 ] - %56 = icmp eq i32 %55, -2147483648 - %57 = add nsw i32 %55, -1 - %58 = icmp eq i32 %54, 2147483647 - %59 = add nsw i32 %54, 1 - %60 = getelementptr inbounds nuw i8, ptr %.sroa.06.0.ptr20.i, i64 4 - %61 = load i32, ptr %60, align 4, !tbaa !64 - %.not4.i.i = icmp sle i32 %57, %61 - %.not.not.i.i = select i1 %56, i1 true, i1 %.not4.i.i - %62 = load i32, ptr %.sroa.06.0.ptr20.i, align 4 - %63 = icmp sge i32 %59, %62 - %64 = select i1 %58, i1 true, i1 %63 - %65 = select i1 %.not.not.i.i, i1 %64, i1 false - br i1 %65, label %66, label %.critedge.i - -66: ; preds = %.lr.ph.i +.lr.ph.i: ; preds = %48, %62 + %52 = phi i32 [ %65, %62 ], [ %51, %48 ] + %53 = phi i32 [ %63, %62 ], [ %49, %48 ] + %.sroa.06.0.ptr20.i = phi ptr [ %.sroa.06.0.ptr.i, %62 ], [ %.sroa.011.0.lcssa.i.i, %48 ] + %.sroa.06.0.idx19.i = phi i64 [ %.sroa.06.0.add.i, %62 ], [ 8, %48 ] + %54 = icmp eq i32 %53, -2147483648 + %55 = add nsw i32 %53, -1 + %56 = tail call i32 @llvm.sadd.sat.i32(i32 %52, i32 1) + %57 = getelementptr inbounds nuw i8, ptr %.sroa.06.0.ptr20.i, i64 4 + %58 = load i32, ptr %57, align 4, !tbaa !64 + %.not4.i.i = icmp sle i32 %55, %58 + %.not.not.i.i = select i1 %54, i1 true, i1 %.not4.i.i + %59 = load i32, ptr %.sroa.06.0.ptr20.i, align 4 + %60 = icmp sge i32 %56, %59 + %61 = select i1 %.not.not.i.i, i1 %60, i1 false + br i1 %61, label %62, label %.critedge.i + +62: ; preds = %.lr.ph.i %.sroa.06.0.add.i = add nuw nsw i64 %.sroa.06.0.idx19.i, 8 - %67 = tail call i32 @llvm.smin.i32(i32 %62, i32 %55) - store i32 %67, ptr %33, align 4, !tbaa !62 - %68 = load i32, ptr %60, align 4, !tbaa !60 - %69 = tail call i32 @llvm.smax.i32(i32 %54, i32 %68) - store i32 %69, ptr %36, align 4, !tbaa !64 + %63 = tail call i32 @llvm.smin.i32(i32 %59, i32 %53) + store i32 %63, ptr %33, align 4, !tbaa !62 + %64 = load i32, ptr %57, align 4, !tbaa !60 + %65 = tail call i32 @llvm.smax.i32(i32 %52, i32 %64) + store i32 %65, ptr %36, align 4, !tbaa !64 %.sroa.06.0.ptr.i = getelementptr i8, ptr %.sroa.011.0.lcssa.i.i, i64 %.sroa.06.0.idx19.i %.not.i21 = icmp eq ptr %.sroa.06.0.ptr.i, %5 br i1 %.not.i21, label %.thread.i, label %.lr.ph.i, !llvm.loop !86 -.thread.i: ; preds = %66 - %70 = ptrtoint ptr %.sroa.011.0.lcssa.i.i to i64 - %71 = sub i64 %70, %9 - %72 = getelementptr inbounds i8, ptr %3, i64 %10 +.thread.i: ; preds = %62 + %66 = ptrtoint ptr %.sroa.011.0.lcssa.i.i to i64 + %67 = sub i64 %66, %9 + %68 = getelementptr inbounds i8, ptr %3, i64 %10 br label %._crit_edge.i.i.i .critedge.i: ; preds = %.lr.ph.i - %73 = icmp eq i64 %.sroa.06.0.idx19.i, 8 - %74 = ptrtoint ptr %.sroa.011.0.lcssa.i.i to i64 - %75 = sub i64 %74, %9 - %76 = getelementptr inbounds i8, ptr %3, i64 %75 - %77 = ptrtoint ptr %.sroa.06.0.ptr20.i to i64 - %78 = sub i64 %77, %9 - %79 = getelementptr inbounds i8, ptr %3, i64 %78 - br i1 %73, label %.critedge, label %80 - -80: ; preds = %.critedge.i + %69 = icmp eq i64 %.sroa.06.0.idx19.i, 8 + %70 = ptrtoint ptr %.sroa.011.0.lcssa.i.i to i64 + %71 = sub i64 %70, %9 + %72 = getelementptr inbounds i8, ptr %3, i64 %71 + %73 = ptrtoint ptr %.sroa.06.0.ptr20.i to i64 + %74 = sub i64 %73, %9 + %75 = getelementptr inbounds i8, ptr %3, i64 %74 + br i1 %69, label %.critedge, label %76 + +76: ; preds = %.critedge.i %.not11.i.i.i = icmp eq ptr %.sroa.06.0.ptr20.i, %5 br i1 %.not11.i.i.i, label %._crit_edge.i.i.i, label %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i -_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i: ; preds = %80 - %81 = sub i64 %8, %77 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %76, ptr align 4 %79, i64 %81, i1 false) +_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i: ; preds = %76 + %77 = sub i64 %8, %73 + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %72, ptr align 4 %75, i64 %77, i1 false) %.pre.i.i.i = load ptr, ptr %4, align 8, !tbaa !10 %.pre13.i.i.i = ptrtoint ptr %.pre.i.i.i to i64 br label %._crit_edge.i.i.i -._crit_edge.i.i.i: ; preds = %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i, %80, %.thread.i - %82 = phi i64 [ %75, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i ], [ %75, %80 ], [ %71, %.thread.i ] - %83 = phi i64 [ %77, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i ], [ %77, %80 ], [ %8, %.thread.i ] - %.pre-phi14.i.i.i = phi i64 [ %.pre13.i.i.i, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i ], [ %77, %80 ], [ %8, %.thread.i ] - %84 = phi ptr [ %.pre.i.i.i, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i ], [ %79, %80 ], [ %72, %.thread.i ] - %85 = getelementptr inbounds i8, ptr %3, i64 %82 - %86 = sub i64 %.pre-phi14.i.i.i, %83 - %87 = getelementptr inbounds i8, ptr %85, i64 %86 - %.not.i.i.i.i = icmp eq ptr %84, %87 - br i1 %.not.i.i.i.i, label %.critedge, label %88 - -88: ; preds = %._crit_edge.i.i.i - store ptr %87, ptr %4, align 8, !tbaa !87 +._crit_edge.i.i.i: ; preds = %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i, %76, %.thread.i + %78 = phi i64 [ %71, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i ], [ %71, %76 ], [ %67, %.thread.i ] + %79 = phi i64 [ %73, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i ], [ %73, %76 ], [ %8, %.thread.i ] + %.pre-phi14.i.i.i = phi i64 [ %.pre13.i.i.i, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i ], [ %73, %76 ], [ %8, %.thread.i ] + %80 = phi ptr [ %.pre.i.i.i, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i ], [ %75, %76 ], [ %68, %.thread.i ] + %81 = getelementptr inbounds i8, ptr %3, i64 %78 + %82 = sub i64 %.pre-phi14.i.i.i, %79 + %83 = getelementptr inbounds i8, ptr %81, i64 %82 + %.not.i.i.i.i = icmp eq ptr %80, %83 + br i1 %.not.i.i.i.i, label %.critedge, label %84 + +84: ; preds = %._crit_edge.i.i.i + store ptr %83, ptr %4, align 8, !tbaa !87 br label %.critedge .critedge4: ; preds = %31, %42 - br i1 %.not, label %.critedge6, label %89 - -89: ; preds = %.critedge4 - %90 = load i32, ptr %.sroa.011.0.lcssa.i.i, align 4, !tbaa !62 - %91 = icmp eq i32 %90, -2147483648 - %92 = add nsw i32 %90, -1 - %93 = getelementptr inbounds nuw i8, ptr %.sroa.011.0.lcssa.i.i, i64 4 - %94 = load i32, ptr %93, align 4, !tbaa !64 - %95 = icmp eq i32 %94, 2147483647 - %96 = add nsw i32 %94, 1 - %97 = getelementptr inbounds nuw i8, ptr %1, i64 4 - %98 = load i32, ptr %97, align 4, !tbaa !64 - %.not4.i22 = icmp sle i32 %92, %98 - %.not.not.i23 = select i1 %91, i1 true, i1 %.not4.i22 - %99 = load i32, ptr %1, align 4 - %100 = icmp sge i32 %96, %99 - %101 = select i1 %95, i1 true, i1 %100 - %102 = select i1 %.not.not.i23, i1 %101, i1 false - br i1 %102, label %103, label %.critedge6 - -103: ; preds = %89 - %104 = tail call i32 @llvm.smin.i32(i32 %99, i32 %90) - store i32 %104, ptr %.sroa.011.0.lcssa.i.i, align 4, !tbaa !62 - %105 = load i32, ptr %97, align 4, !tbaa !60 - %106 = tail call i32 @llvm.smax.i32(i32 %94, i32 %105) - store i32 %106, ptr %93, align 4, !tbaa !64 + br i1 %.not, label %.critedge6, label %85 + +85: ; preds = %.critedge4 + %86 = load i32, ptr %.sroa.011.0.lcssa.i.i, align 4, !tbaa !62 + %87 = icmp eq i32 %86, -2147483648 + %88 = add nsw i32 %86, -1 + %89 = getelementptr inbounds nuw i8, ptr %.sroa.011.0.lcssa.i.i, i64 4 + %90 = load i32, ptr %89, align 4, !tbaa !64 + %91 = tail call i32 @llvm.sadd.sat.i32(i32 %90, i32 1) + %92 = getelementptr inbounds nuw i8, ptr %1, i64 4 + %93 = load i32, ptr %92, align 4, !tbaa !64 + %.not4.i22 = icmp sle i32 %88, %93 + %.not.not.i23 = select i1 %87, i1 true, i1 %.not4.i22 + %94 = load i32, ptr %1, align 4 + %95 = icmp sge i32 %91, %94 + %96 = select i1 %.not.not.i23, i1 %95, i1 false + br i1 %96, label %97, label %.critedge6 + +97: ; preds = %85 + %98 = tail call i32 @llvm.smin.i32(i32 %94, i32 %86) + store i32 %98, ptr %.sroa.011.0.lcssa.i.i, align 4, !tbaa !62 + %99 = load i32, ptr %92, align 4, !tbaa !60 + %100 = tail call i32 @llvm.smax.i32(i32 %90, i32 %99) + store i32 %100, ptr %89, align 4, !tbaa !64 %.ptr15.i24 = getelementptr inbounds nuw i8, ptr %.sroa.011.0.lcssa.i.i, i64 8 %.not18.i25 = icmp eq ptr %.ptr15.i24, %5 br i1 %.not18.i25, label %.critedge, label %.lr.ph.i26 -.lr.ph.i26: ; preds = %103, %119 - %107 = phi i32 [ %122, %119 ], [ %106, %103 ] - %108 = phi i32 [ %120, %119 ], [ %104, %103 ] - %.sroa.06.0.ptr20.i27 = phi ptr [ %.sroa.06.0.ptr.i40, %119 ], [ %.ptr15.i24, %103 ] - %.sroa.06.0.idx19.i28 = phi i64 [ %.sroa.06.0.add.i39, %119 ], [ 8, %103 ] - %109 = icmp eq i32 %108, -2147483648 - %110 = add nsw i32 %108, -1 - %111 = icmp eq i32 %107, 2147483647 - %112 = add nsw i32 %107, 1 - %113 = getelementptr inbounds nuw i8, ptr %.sroa.06.0.ptr20.i27, i64 4 - %114 = load i32, ptr %113, align 4, !tbaa !64 - %.not4.i.i29 = icmp sle i32 %110, %114 - %.not.not.i.i30 = select i1 %109, i1 true, i1 %.not4.i.i29 - %115 = load i32, ptr %.sroa.06.0.ptr20.i27, align 4 - %116 = icmp sge i32 %112, %115 - %117 = select i1 %111, i1 true, i1 %116 - %118 = select i1 %.not.not.i.i30, i1 %117, i1 false - br i1 %118, label %119, label %.critedge.i31 - -119: ; preds = %.lr.ph.i26 +.lr.ph.i26: ; preds = %97, %111 + %101 = phi i32 [ %114, %111 ], [ %100, %97 ] + %102 = phi i32 [ %112, %111 ], [ %98, %97 ] + %.sroa.06.0.ptr20.i27 = phi ptr [ %.sroa.06.0.ptr.i40, %111 ], [ %.ptr15.i24, %97 ] + %.sroa.06.0.idx19.i28 = phi i64 [ %.sroa.06.0.add.i39, %111 ], [ 8, %97 ] + %103 = icmp eq i32 %102, -2147483648 + %104 = add nsw i32 %102, -1 + %105 = tail call i32 @llvm.sadd.sat.i32(i32 %101, i32 1) + %106 = getelementptr inbounds nuw i8, ptr %.sroa.06.0.ptr20.i27, i64 4 + %107 = load i32, ptr %106, align 4, !tbaa !64 + %.not4.i.i29 = icmp sle i32 %104, %107 + %.not.not.i.i30 = select i1 %103, i1 true, i1 %.not4.i.i29 + %108 = load i32, ptr %.sroa.06.0.ptr20.i27, align 4 + %109 = icmp sge i32 %105, %108 + %110 = select i1 %.not.not.i.i30, i1 %109, i1 false + br i1 %110, label %111, label %.critedge.i31 + +111: ; preds = %.lr.ph.i26 %.sroa.06.0.add.i39 = add nuw nsw i64 %.sroa.06.0.idx19.i28, 8 - %120 = tail call i32 @llvm.smin.i32(i32 %115, i32 %108) - store i32 %120, ptr %.sroa.011.0.lcssa.i.i, align 4, !tbaa !62 - %121 = load i32, ptr %113, align 4, !tbaa !60 - %122 = tail call i32 @llvm.smax.i32(i32 %107, i32 %121) - store i32 %122, ptr %93, align 4, !tbaa !64 + %112 = tail call i32 @llvm.smin.i32(i32 %108, i32 %102) + store i32 %112, ptr %.sroa.011.0.lcssa.i.i, align 4, !tbaa !62 + %113 = load i32, ptr %106, align 4, !tbaa !60 + %114 = tail call i32 @llvm.smax.i32(i32 %101, i32 %113) + store i32 %114, ptr %89, align 4, !tbaa !64 %.sroa.06.0.ptr.i40 = getelementptr inbounds nuw i8, ptr %.sroa.011.0.lcssa.i.i, i64 %.sroa.06.0.add.i39 %.not.i41 = icmp eq ptr %.sroa.06.0.ptr.i40, %5 br i1 %.not.i41, label %.thread.i42, label %.lr.ph.i26, !llvm.loop !86 -.thread.i42: ; preds = %119 - %123 = ptrtoint ptr %.ptr15.i24 to i64 - %124 = sub i64 %123, %9 - %125 = getelementptr inbounds i8, ptr %3, i64 %10 +.thread.i42: ; preds = %111 + %115 = ptrtoint ptr %.ptr15.i24 to i64 + %116 = sub i64 %115, %9 + %117 = getelementptr inbounds i8, ptr %3, i64 %10 br label %._crit_edge.i.i.i36 .critedge.i31: ; preds = %.lr.ph.i26 - %126 = icmp eq i64 %.sroa.06.0.idx19.i28, 8 - %127 = ptrtoint ptr %.ptr15.i24 to i64 - %128 = sub i64 %127, %9 - %129 = getelementptr inbounds i8, ptr %3, i64 %128 - %130 = ptrtoint ptr %.sroa.06.0.ptr20.i27 to i64 - %131 = sub i64 %130, %9 - %132 = getelementptr inbounds i8, ptr %3, i64 %131 - br i1 %126, label %.critedge, label %133 - -133: ; preds = %.critedge.i31 + %118 = icmp eq i64 %.sroa.06.0.idx19.i28, 8 + %119 = ptrtoint ptr %.ptr15.i24 to i64 + %120 = sub i64 %119, %9 + %121 = getelementptr inbounds i8, ptr %3, i64 %120 + %122 = ptrtoint ptr %.sroa.06.0.ptr20.i27 to i64 + %123 = sub i64 %122, %9 + %124 = getelementptr inbounds i8, ptr %3, i64 %123 + br i1 %118, label %.critedge, label %125 + +125: ; preds = %.critedge.i31 %.not11.i.i.i32 = icmp eq ptr %.sroa.06.0.ptr20.i27, %5 br i1 %.not11.i.i.i32, label %._crit_edge.i.i.i36, label %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i33 -_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i33: ; preds = %133 - %134 = sub i64 %8, %130 - tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %129, ptr align 4 %132, i64 %134, i1 false) +_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i33: ; preds = %125 + %126 = sub i64 %8, %122 + tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %121, ptr align 4 %124, i64 %126, i1 false) %.pre.i.i.i34 = load ptr, ptr %4, align 8, !tbaa !10 %.pre13.i.i.i35 = ptrtoint ptr %.pre.i.i.i34 to i64 br label %._crit_edge.i.i.i36 -._crit_edge.i.i.i36: ; preds = %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i33, %133, %.thread.i42 - %135 = phi i64 [ %128, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i33 ], [ %128, %133 ], [ %124, %.thread.i42 ] - %136 = phi i64 [ %130, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i33 ], [ %130, %133 ], [ %8, %.thread.i42 ] - %.pre-phi14.i.i.i37 = phi i64 [ %.pre13.i.i.i35, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i33 ], [ %130, %133 ], [ %8, %.thread.i42 ] - %137 = phi ptr [ %.pre.i.i.i34, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i33 ], [ %132, %133 ], [ %125, %.thread.i42 ] - %138 = getelementptr inbounds i8, ptr %3, i64 %135 - %139 = sub i64 %.pre-phi14.i.i.i37, %136 - %140 = getelementptr inbounds i8, ptr %138, i64 %139 - %.not.i.i.i.i38 = icmp eq ptr %137, %140 - br i1 %.not.i.i.i.i38, label %.critedge, label %141 - -141: ; preds = %._crit_edge.i.i.i36 - store ptr %140, ptr %4, align 8, !tbaa !87 +._crit_edge.i.i.i36: ; preds = %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i33, %125, %.thread.i42 + %127 = phi i64 [ %120, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i33 ], [ %120, %125 ], [ %116, %.thread.i42 ] + %128 = phi i64 [ %122, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i33 ], [ %122, %125 ], [ %8, %.thread.i42 ] + %.pre-phi14.i.i.i37 = phi i64 [ %.pre13.i.i.i35, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i33 ], [ %122, %125 ], [ %8, %.thread.i42 ] + %129 = phi ptr [ %.pre.i.i.i34, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i33 ], [ %124, %125 ], [ %117, %.thread.i42 ] + %130 = getelementptr inbounds i8, ptr %3, i64 %127 + %131 = sub i64 %.pre-phi14.i.i.i37, %128 + %132 = getelementptr inbounds i8, ptr %130, i64 %131 + %.not.i.i.i.i38 = icmp eq ptr %129, %132 + br i1 %.not.i.i.i.i38, label %.critedge, label %133 + +133: ; preds = %._crit_edge.i.i.i36 + store ptr %132, ptr %4, align 8, !tbaa !87 br label %.critedge -.critedge6: ; preds = %.critedge4, %89 - %142 = tail call ptr @_ZNSt6vectorIN5boost6spirit7classic7utility4impl5rangeIwEESaIS6_EE6insertEN9__gnu_cxx17__normal_iteratorIPKS6_S8_EERSB_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %.sroa.011.0.lcssa.i.i, ptr noundef nonnull align 4 dereferenceable(8) %1) +.critedge6: ; preds = %.critedge4, %85 + %134 = tail call ptr @_ZNSt6vectorIN5boost6spirit7classic7utility4impl5rangeIwEESaIS6_EE6insertEN9__gnu_cxx17__normal_iteratorIPKS6_S8_EERSB_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %.sroa.011.0.lcssa.i.i, ptr noundef nonnull align 4 dereferenceable(8) %1) br label %.critedge -143: ; preds = %2 - %144 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %145 = load ptr, ptr %144, align 8, !tbaa !84 - %.not.i44 = icmp eq ptr %3, %145 - br i1 %.not.i44, label %_ZNSt6vectorIN5boost6spirit7classic7utility4impl5rangeIwEESaIS6_EE11_S_relocateEPS6_S9_S9_RS7_.exit22.i.i, label %146 - -146: ; preds = %143 - %147 = load i64, ptr %1, align 4 - store i64 %147, ptr %5, align 4 - %148 = load ptr, ptr %4, align 8, !tbaa !87 - %149 = getelementptr inbounds nuw i8, ptr %148, i64 8 - store ptr %149, ptr %4, align 8, !tbaa !87 +135: ; preds = %2 + %136 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %137 = load ptr, ptr %136, align 8, !tbaa !84 + %.not.i44 = icmp eq ptr %3, %137 + br i1 %.not.i44, label %_ZNSt6vectorIN5boost6spirit7classic7utility4impl5rangeIwEESaIS6_EE11_S_relocateEPS6_S9_S9_RS7_.exit22.i.i, label %138 + +138: ; preds = %135 + %139 = load i64, ptr %1, align 4 + store i64 %139, ptr %5, align 4 + %140 = load ptr, ptr %4, align 8, !tbaa !87 + %141 = getelementptr inbounds nuw i8, ptr %140, i64 8 + store ptr %141, ptr %4, align 8, !tbaa !87 br label %.critedge -_ZNSt6vectorIN5boost6spirit7classic7utility4impl5rangeIwEESaIS6_EE11_S_relocateEPS6_S9_S9_RS7_.exit22.i.i: ; preds = %143 - %150 = tail call noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #23 - %151 = load i64, ptr %1, align 4 - store i64 %151, ptr %150, align 4 - %152 = getelementptr inbounds nuw i8, ptr %150, i64 8 +_ZNSt6vectorIN5boost6spirit7classic7utility4impl5rangeIwEESaIS6_EE11_S_relocateEPS6_S9_S9_RS7_.exit22.i.i: ; preds = %135 + %142 = tail call noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #23 + %143 = load i64, ptr %1, align 4 + store i64 %143, ptr %142, align 4 + %144 = getelementptr inbounds nuw i8, ptr %142, i64 8 %.not.i23.i.i = icmp eq ptr %3, null - br i1 %.not.i23.i.i, label %_ZNSt6vectorIN5boost6spirit7classic7utility4impl5rangeIwEESaIS6_EE17_M_realloc_insertIJRKS6_EEEvN9__gnu_cxx17__normal_iteratorIPS6_S8_EEDpOT_.exit.i, label %153 + br i1 %.not.i23.i.i, label %_ZNSt6vectorIN5boost6spirit7classic7utility4impl5rangeIwEESaIS6_EE17_M_realloc_insertIJRKS6_EEEvN9__gnu_cxx17__normal_iteratorIPS6_S8_EEDpOT_.exit.i, label %145 -153: ; preds = %_ZNSt6vectorIN5boost6spirit7classic7utility4impl5rangeIwEESaIS6_EE11_S_relocateEPS6_S9_S9_RS7_.exit22.i.i +145: ; preds = %_ZNSt6vectorIN5boost6spirit7classic7utility4impl5rangeIwEESaIS6_EE11_S_relocateEPS6_S9_S9_RS7_.exit22.i.i tail call void @_ZdlPvm(ptr noundef nonnull %3, i64 noundef 0) #25 br label %_ZNSt6vectorIN5boost6spirit7classic7utility4impl5rangeIwEESaIS6_EE17_M_realloc_insertIJRKS6_EEEvN9__gnu_cxx17__normal_iteratorIPS6_S8_EEDpOT_.exit.i -_ZNSt6vectorIN5boost6spirit7classic7utility4impl5rangeIwEESaIS6_EE17_M_realloc_insertIJRKS6_EEEvN9__gnu_cxx17__normal_iteratorIPS6_S8_EEDpOT_.exit.i: ; preds = %153, %_ZNSt6vectorIN5boost6spirit7classic7utility4impl5rangeIwEESaIS6_EE11_S_relocateEPS6_S9_S9_RS7_.exit22.i.i - store ptr %150, ptr %0, align 8, !tbaa !82 - store ptr %152, ptr %4, align 8, !tbaa !87 - store ptr %152, ptr %144, align 8, !tbaa !84 +_ZNSt6vectorIN5boost6spirit7classic7utility4impl5rangeIwEESaIS6_EE17_M_realloc_insertIJRKS6_EEEvN9__gnu_cxx17__normal_iteratorIPS6_S8_EEDpOT_.exit.i: ; preds = %145, %_ZNSt6vectorIN5boost6spirit7classic7utility4impl5rangeIwEESaIS6_EE11_S_relocateEPS6_S9_S9_RS7_.exit22.i.i + store ptr %142, ptr %0, align 8, !tbaa !82 + store ptr %144, ptr %4, align 8, !tbaa !87 + store ptr %144, ptr %136, align 8, !tbaa !84 br label %.critedge -.critedge: ; preds = %_ZNSt6vectorIN5boost6spirit7classic7utility4impl5rangeIwEESaIS6_EE17_M_realloc_insertIJRKS6_EEEvN9__gnu_cxx17__normal_iteratorIPS6_S8_EEDpOT_.exit.i, %146, %32, %.critedge6, %22, %50, %.critedge.i, %._crit_edge.i.i.i, %88, %103, %.critedge.i31, %._crit_edge.i.i.i36, %141 +.critedge: ; preds = %_ZNSt6vectorIN5boost6spirit7classic7utility4impl5rangeIwEESaIS6_EE17_M_realloc_insertIJRKS6_EEEvN9__gnu_cxx17__normal_iteratorIPS6_S8_EEDpOT_.exit.i, %138, %32, %.critedge6, %22, %48, %.critedge.i, %._crit_edge.i.i.i, %84, %97, %.critedge.i31, %._crit_edge.i.i.i36, %133 ret void } @@ -14401,6 +14393,9 @@ declare i32 @bcmp(ptr captures(none), ptr captures(none), i64) local_unnamed_add ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: read) declare i64 @strlen(ptr captures(none)) local_unnamed_addr #21 +; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.sadd.sat.i32(i32, i32) #19 + ; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smin.i32(i32, i32) #19 diff --git a/bench/cmake/optimized/hsts.ll b/bench/cmake/optimized/hsts.ll index e4acb3e5028..a26822a3cad 100644 --- a/bench/cmake/optimized/hsts.ll +++ b/bench/cmake/optimized/hsts.ll @@ -26,12 +26,12 @@ target triple = "x86_64-pc-linux-gnu" ; Function Attrs: nounwind uwtable define dso_local ptr @Curl_hsts_init() local_unnamed_addr #0 { %1 = load ptr, ptr @Curl_ccalloc, align 8, !tbaa !4 - %2 = tail call ptr %1(i64 noundef 1, i64 noundef 48) #9 + %2 = tail call ptr %1(i64 noundef 1, i64 noundef 48) #10 %.not = icmp eq ptr %2, null br i1 %.not, label %4, label %3 3: ; preds = %0 - tail call void @Curl_llist_init(ptr noundef nonnull %2, ptr noundef null) #9 + tail call void @Curl_llist_init(ptr noundef nonnull %2, ptr noundef null) #10 br label %4 4: ; preds = %3, %0 @@ -47,20 +47,20 @@ define dso_local void @Curl_hsts_cleanup(ptr noundef captures(none) %0) local_un br i1 %.not, label %15, label %3 3: ; preds = %1 - %4 = tail call ptr @Curl_llist_head(ptr noundef nonnull %2) #9 + %4 = tail call ptr @Curl_llist_head(ptr noundef nonnull %2) #10 %.not1213 = icmp eq ptr %4, null br i1 %.not1213, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %3, %.lr.ph %.014 = phi ptr [ %6, %.lr.ph ], [ %4, %3 ] - %5 = tail call ptr @Curl_node_elem(ptr noundef nonnull %.014) #9 - %6 = tail call ptr @Curl_node_next(ptr noundef nonnull %.014) #9 + %5 = tail call ptr @Curl_node_elem(ptr noundef nonnull %.014) #10 + %6 = tail call ptr @Curl_node_next(ptr noundef nonnull %.014) #10 %7 = load ptr, ptr @Curl_cfree, align 8, !tbaa !4 %8 = getelementptr inbounds nuw i8, ptr %5, i64 32 %9 = load ptr, ptr %8, align 8, !tbaa !10 - tail call void %7(ptr noundef %9) #9 + tail call void %7(ptr noundef %9) #10 %10 = load ptr, ptr @Curl_cfree, align 8, !tbaa !4 - tail call void %10(ptr noundef %5) #9 + tail call void %10(ptr noundef %5) #10 %.not12 = icmp eq ptr %6, null br i1 %.not12, label %._crit_edge, label %.lr.ph, !llvm.loop !18 @@ -68,9 +68,9 @@ define dso_local void @Curl_hsts_cleanup(ptr noundef captures(none) %0) local_un %11 = load ptr, ptr @Curl_cfree, align 8, !tbaa !4 %12 = getelementptr inbounds nuw i8, ptr %2, i64 32 %13 = load ptr, ptr %12, align 8, !tbaa !20 - tail call void %11(ptr noundef %13) #9 + tail call void %11(ptr noundef %13) #10 %14 = load ptr, ptr @Curl_cfree, align 8, !tbaa !4 - tail call void %14(ptr noundef nonnull %2) #9 + tail call void %14(ptr noundef nonnull %2) #10 store ptr null, ptr %0, align 8, !tbaa !8 br label %15 @@ -90,8 +90,8 @@ define dso_local range(i32 0, 44) i32 @Curl_hsts_parse(ptr noundef %0, ptr nound %5 = alloca ptr, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %4) store i64 0, ptr %4, align 8, !tbaa !24 - %6 = tail call i64 @time(ptr noundef null) #9 - %7 = tail call zeroext i1 @Curl_host_is_ipnum(ptr noundef %1) #9 + %6 = tail call i64 @time(ptr noundef null) #10 + %7 = tail call zeroext i1 @Curl_host_is_ipnum(ptr noundef %1) #10 br i1 %7, label %.loopexit, label %.preheader113 .preheader113: ; preds = %3, %.critedge14 @@ -114,7 +114,7 @@ define dso_local range(i32 0, 44) i32 @Curl_hsts_parse(ptr noundef %0, ptr nound br label %8, !llvm.loop !26 .critedge: ; preds = %8 - %11 = call i32 @curl_strnequal(ptr noundef nonnull @.str, ptr noundef nonnull %.176, i64 noundef 7) #9 + %11 = call i32 @curl_strnequal(ptr noundef nonnull @.str, ptr noundef nonnull %.176, i64 noundef 7) #10 %.not95 = icmp eq i32 %11, 0 br i1 %.not95, label %31, label %12 @@ -156,7 +156,7 @@ define dso_local range(i32 0, 44) i32 @Curl_hsts_parse(ptr noundef %0, ptr nound %20 = icmp eq i8 %19, 34 %21 = getelementptr inbounds nuw i8, ptr %.378.pn, i64 2 %spec.select = select i1 %20, ptr %21, ptr %.4 - %22 = call i32 @curlx_strtoofft(ptr noundef nonnull %spec.select, ptr noundef nonnull %5, i32 noundef 10, ptr noundef nonnull %4) #9 + %22 = call i32 @curlx_strtoofft(ptr noundef nonnull %spec.select, ptr noundef nonnull %5, i32 noundef 10, ptr noundef nonnull %4) #10 switch i32 %22, label %.critedge110 [ i32 1, label %23 i32 0, label %24 @@ -185,7 +185,7 @@ define dso_local range(i32 0, 44) i32 @Curl_hsts_parse(ptr noundef %0, ptr nound br label %.critedge12 31: ; preds = %.critedge - %32 = call i32 @curl_strnequal(ptr noundef nonnull @.str.1, ptr noundef nonnull %.176, i64 noundef 17) #9 + %32 = call i32 @curl_strnequal(ptr noundef nonnull @.str.1, ptr noundef nonnull %.176, i64 noundef 17) #10 %.not96 = icmp eq i32 %32, 0 br i1 %.not96, label %.preheader, label %33 @@ -250,45 +250,42 @@ define dso_local range(i32 0, 44) i32 @Curl_hsts_parse(ptr noundef %0, ptr nound br i1 %.not107, label %.loopexit, label %50 50: ; preds = %48 - call void @Curl_node_remove(ptr noundef nonnull %49) #9 + call void @Curl_node_remove(ptr noundef nonnull %49) #10 %51 = load ptr, ptr @Curl_cfree, align 8, !tbaa !4 %52 = getelementptr inbounds nuw i8, ptr %49, i64 32 %53 = load ptr, ptr %52, align 8, !tbaa !10 - call void %51(ptr noundef %53) #9 + call void %51(ptr noundef %53) #10 %54 = load ptr, ptr @Curl_cfree, align 8, !tbaa !4 - call void %54(ptr noundef nonnull %49) #9 + call void %54(ptr noundef nonnull %49) #10 br label %.loopexit 55: ; preds = %46 - %56 = sub nsw i64 9223372036854775807, %6 - %57 = icmp slt i64 %56, %47 - %58 = add nsw i64 %47, %6 - %storemerge = select i1 %57, i64 9223372036854775807, i64 %58 + %storemerge = call i64 @llvm.sadd.sat.i64(i64 %6, i64 %47) store i64 %storemerge, ptr %4, align 8, !tbaa !24 - %59 = call ptr @Curl_hsts(ptr noundef %0, ptr noundef %1, i1 noundef zeroext false) - %.not108 = icmp eq ptr %59, null - br i1 %.not108, label %64, label %60 - -60: ; preds = %55 - %61 = load i64, ptr %4, align 8, !tbaa !24 - %62 = getelementptr inbounds nuw i8, ptr %59, i64 48 - store i64 %61, ptr %62, align 8, !tbaa !33 - %63 = getelementptr inbounds nuw i8, ptr %59, i64 40 - store i8 %.180, ptr %63, align 8, !tbaa !34 + %56 = call ptr @Curl_hsts(ptr noundef %0, ptr noundef %1, i1 noundef zeroext false) + %.not108 = icmp eq ptr %56, null + br i1 %.not108, label %61, label %57 + +57: ; preds = %55 + %58 = load i64, ptr %4, align 8, !tbaa !24 + %59 = getelementptr inbounds nuw i8, ptr %56, i64 48 + store i64 %58, ptr %59, align 8, !tbaa !33 + %60 = getelementptr inbounds nuw i8, ptr %56, i64 40 + store i8 %.180, ptr %60, align 8, !tbaa !34 br label %.loopexit -64: ; preds = %55 - %65 = trunc nuw i8 %.180 to i1 - %66 = load i64, ptr %4, align 8, !tbaa !24 - %67 = call fastcc i32 @hsts_create(ptr noundef %0, ptr noundef %1, i1 noundef zeroext %65, i64 noundef %66) +61: ; preds = %55 + %62 = trunc nuw i8 %.180 to i1 + %63 = load i64, ptr %4, align 8, !tbaa !24 + %64 = call fastcc i32 @hsts_create(ptr noundef %0, ptr noundef %1, i1 noundef zeroext %62, i64 noundef %63) br label %.loopexit .critedge110: ; preds = %26, %.critedge8, %12, %16 call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %.loopexit -.loopexit: ; preds = %33, %48, %50, %44, %.critedge110, %3, %60, %64 - %.0 = phi i32 [ 0, %60 ], [ %67, %64 ], [ 0, %3 ], [ 43, %.critedge110 ], [ 43, %44 ], [ 0, %50 ], [ 0, %48 ], [ 43, %33 ] +.loopexit: ; preds = %33, %48, %50, %44, %.critedge110, %3, %57, %61 + %.0 = phi i32 [ 0, %57 ], [ %64, %61 ], [ 0, %3 ], [ 43, %.critedge110 ], [ 43, %44 ], [ 0, %50 ], [ 0, %48 ], [ 43, %33 ] call void @llvm.lifetime.end.p0(ptr nonnull %4) ret i32 %.0 } @@ -308,8 +305,8 @@ define dso_local ptr @Curl_hsts(ptr noundef %0, ptr noundef %1, i1 noundef zeroe br i1 %.not, label %.thread75, label %4 4: ; preds = %3 - %5 = tail call i64 @time(ptr noundef null) #9 - %6 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #10 + %5 = tail call i64 @time(ptr noundef null) #10 + %6 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #11 %7 = add i64 %6, -1 %or.cond = icmp ult i64 %7, 256 br i1 %or.cond, label %8, label %.thread75 @@ -320,7 +317,7 @@ define dso_local ptr @Curl_hsts(ptr noundef %0, ptr noundef %1, i1 noundef zeroe %11 = load i8, ptr %10, align 1, !tbaa !25 %12 = icmp eq i8 %11, 46 %spec.select = select i1 %12, i64 %7, i64 %6 - %13 = tail call ptr @Curl_llist_head(ptr noundef nonnull %0) #9 + %13 = tail call ptr @Curl_llist_head(ptr noundef nonnull %0) #10 %.not5880 = icmp eq ptr %13, null br i1 %.not5880, label %.thread75, label %.lr.ph @@ -331,27 +328,27 @@ define dso_local ptr @Curl_hsts(ptr noundef %0, ptr noundef %1, i1 noundef zeroe %.24583.us = phi ptr [ %.346.ph.us, %45 ], [ null, %.lr.ph ] %.05082.us = phi i64 [ %.151.ph.us, %45 ], [ 0, %.lr.ph ] %.05481.us = phi ptr [ %15, %45 ], [ %13, %.lr.ph ] - %14 = tail call ptr @Curl_node_elem(ptr noundef nonnull %.05481.us) #9 - %15 = tail call ptr @Curl_node_next(ptr noundef nonnull %.05481.us) #9 + %14 = tail call ptr @Curl_node_elem(ptr noundef nonnull %.05481.us) #10 + %15 = tail call ptr @Curl_node_next(ptr noundef nonnull %.05481.us) #10 %16 = getelementptr inbounds nuw i8, ptr %14, i64 48 %17 = load i64, ptr %16, align 8, !tbaa !33 %.not59.us = icmp sgt i64 %17, %5 br i1 %.not59.us, label %23, label %18 18: ; preds = %.lr.ph.split.us - tail call void @Curl_node_remove(ptr noundef nonnull %14) #9 + tail call void @Curl_node_remove(ptr noundef nonnull %14) #10 %19 = load ptr, ptr @Curl_cfree, align 8, !tbaa !4 %20 = getelementptr inbounds nuw i8, ptr %14, i64 32 %21 = load ptr, ptr %20, align 8, !tbaa !10 - tail call void %19(ptr noundef %21) #9 + tail call void %19(ptr noundef %21) #10 %22 = load ptr, ptr @Curl_cfree, align 8, !tbaa !4 - tail call void %22(ptr noundef nonnull %14) #9 + tail call void %22(ptr noundef nonnull %14) #10 br label %45 23: ; preds = %.lr.ph.split.us %24 = getelementptr inbounds nuw i8, ptr %14, i64 32 %25 = load ptr, ptr %24, align 8, !tbaa !10 - %26 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %25) #10 + %26 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %25) #11 %27 = getelementptr inbounds nuw i8, ptr %14, i64 40 %28 = load i8, ptr %27, align 8, !tbaa !34, !range !35, !noundef !36 %29 = trunc nuw i8 %28 to i1 @@ -368,7 +365,7 @@ define dso_local ptr @Curl_hsts(ptr noundef %0, ptr noundef %1, i1 noundef zeroe br i1 %36, label %37, label %40 37: ; preds = %31 - %38 = tail call i32 @curl_strnequal(ptr noundef nonnull %33, ptr noundef nonnull %25, i64 noundef %26) #9 + %38 = tail call i32 @curl_strnequal(ptr noundef nonnull %33, ptr noundef nonnull %25, i64 noundef %26) #10 %.not60.us = icmp ne i32 %38, 0 %39 = icmp ugt i64 %26, %.05082.us %or.cond63.us = select i1 %.not60.us, i1 %39, i1 false @@ -384,7 +381,7 @@ define dso_local ptr @Curl_hsts(ptr noundef %0, ptr noundef %1, i1 noundef zeroe 42: ; preds = %40 %43 = load ptr, ptr %24, align 8, !tbaa !10 - %44 = tail call i32 @curl_strnequal(ptr noundef nonnull %1, ptr noundef %43, i64 noundef %spec.select) #9 + %44 = tail call i32 @curl_strnequal(ptr noundef nonnull %1, ptr noundef %43, i64 noundef %spec.select) #10 %.not61.us = icmp eq i32 %44, 0 br i1 %.not61.us, label %45, label %.thread75 @@ -396,32 +393,32 @@ define dso_local ptr @Curl_hsts(ptr noundef %0, ptr noundef %1, i1 noundef zeroe .lr.ph.split: ; preds = %.lr.ph, %62 %.05481 = phi ptr [ %47, %62 ], [ %13, %.lr.ph ] - %46 = tail call ptr @Curl_node_elem(ptr noundef nonnull %.05481) #9 - %47 = tail call ptr @Curl_node_next(ptr noundef nonnull %.05481) #9 + %46 = tail call ptr @Curl_node_elem(ptr noundef nonnull %.05481) #10 + %47 = tail call ptr @Curl_node_next(ptr noundef nonnull %.05481) #10 %48 = getelementptr inbounds nuw i8, ptr %46, i64 48 %49 = load i64, ptr %48, align 8, !tbaa !33 %.not59 = icmp sgt i64 %49, %5 br i1 %.not59, label %55, label %50 50: ; preds = %.lr.ph.split - tail call void @Curl_node_remove(ptr noundef nonnull %46) #9 + tail call void @Curl_node_remove(ptr noundef nonnull %46) #10 %51 = load ptr, ptr @Curl_cfree, align 8, !tbaa !4 %52 = getelementptr inbounds nuw i8, ptr %46, i64 32 %53 = load ptr, ptr %52, align 8, !tbaa !10 - tail call void %51(ptr noundef %53) #9 + tail call void %51(ptr noundef %53) #10 %54 = load ptr, ptr @Curl_cfree, align 8, !tbaa !4 - tail call void %54(ptr noundef nonnull %46) #9 + tail call void %54(ptr noundef nonnull %46) #10 br label %62 55: ; preds = %.lr.ph.split %56 = getelementptr inbounds nuw i8, ptr %46, i64 32 %57 = load ptr, ptr %56, align 8, !tbaa !10 - %58 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %57) #10 + %58 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %57) #11 %59 = icmp eq i64 %spec.select, %58 br i1 %59, label %60, label %62 60: ; preds = %55 - %61 = tail call i32 @curl_strnequal(ptr noundef nonnull %1, ptr noundef nonnull %57, i64 noundef %spec.select) #9 + %61 = tail call i32 @curl_strnequal(ptr noundef nonnull %1, ptr noundef nonnull %57, i64 noundef %spec.select) #10 %.not61 = icmp eq i32 %61, 0 br i1 %.not61, label %62, label %.thread75 @@ -439,7 +436,7 @@ declare void @Curl_node_remove(ptr noundef) local_unnamed_addr #1 ; Function Attrs: nounwind uwtable define internal fastcc range(i32 0, 28) i32 @hsts_create(ptr noundef %0, ptr noundef %1, i1 noundef zeroext %2, i64 noundef %3) unnamed_addr #0 { %5 = zext i1 %2 to i8 - %6 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #10 + %6 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #11 %.not = icmp eq i64 %6, 0 br i1 %.not, label %.thread, label %7 @@ -458,18 +455,18 @@ define internal fastcc range(i32 0, 28) i32 @hsts_create(ptr noundef %0, ptr nou .thread32: ; preds = %7, %12 %.02235 = phi i64 [ %13, %12 ], [ %6, %7 ] %14 = load ptr, ptr @Curl_ccalloc, align 8, !tbaa !4 - %15 = tail call ptr %14(i64 noundef 1, i64 noundef 56) #9 + %15 = tail call ptr %14(i64 noundef 1, i64 noundef 56) #10 %.not28 = icmp eq ptr %15, null br i1 %.not28, label %.thread, label %16 16: ; preds = %.thread32 - %17 = tail call ptr @Curl_memdup0(ptr noundef nonnull %1, i64 noundef %.02235) #9 + %17 = tail call ptr @Curl_memdup0(ptr noundef nonnull %1, i64 noundef %.02235) #10 %.not29 = icmp eq ptr %17, null br i1 %.not29, label %18, label %.critedge 18: ; preds = %16 %19 = load ptr, ptr @Curl_cfree, align 8, !tbaa !4 - tail call void %19(ptr noundef nonnull %15) #9 + tail call void %19(ptr noundef nonnull %15) #10 br label %.thread .critedge: ; preds = %16 @@ -479,7 +476,7 @@ define internal fastcc range(i32 0, 28) i32 @hsts_create(ptr noundef %0, ptr nou store i64 %3, ptr %21, align 8, !tbaa !33 %22 = getelementptr inbounds nuw i8, ptr %15, i64 40 store i8 %5, ptr %22, align 8, !tbaa !34 - tail call void @Curl_llist_append(ptr noundef %0, ptr noundef nonnull %15, ptr noundef nonnull %15) #9 + tail call void @Curl_llist_append(ptr noundef %0, ptr noundef nonnull %15, ptr noundef nonnull %15) #10 br label %.thread .thread: ; preds = %4, %12, %.critedge, %18, %.thread32 @@ -529,14 +526,14 @@ define dso_local i32 @Curl_hsts_save(ptr noundef %0, ptr noundef %1, ptr noundef br i1 %.not56, label %81, label %22 22: ; preds = %20 - %23 = call i32 @Curl_fopen(ptr noundef %0, ptr noundef nonnull %.040, ptr noundef nonnull %7, ptr noundef nonnull %8) #9 + %23 = call i32 @Curl_fopen(ptr noundef %0, ptr noundef nonnull %.040, ptr noundef nonnull %7, ptr noundef nonnull %8) #10 %.not57 = icmp eq i32 %23, 0 br i1 %.not57, label %24, label %78 24: ; preds = %22 %25 = load ptr, ptr %7, align 8, !tbaa !39 %26 = call i64 @fwrite(ptr nonnull @.str.2, i64 111, i64 1, ptr %25) - %27 = call ptr @Curl_llist_head(ptr noundef nonnull %1) #9 + %27 = call ptr @Curl_llist_head(ptr noundef nonnull %1) #10 %.not5879 = icmp eq ptr %27, null br i1 %.not5879, label %.loopexit, label %.lr.ph @@ -550,8 +547,8 @@ define dso_local i32 @Curl_hsts_save(ptr noundef %0, ptr noundef %1, ptr noundef 33: ; preds = %.lr.ph, %hsts_out.exit %.04480 = phi ptr [ %27, %.lr.ph ], [ %35, %hsts_out.exit ] - %34 = call ptr @Curl_node_elem(ptr noundef nonnull %.04480) #9 - %35 = call ptr @Curl_node_next(ptr noundef nonnull %.04480) #9 + %34 = call ptr @Curl_node_elem(ptr noundef nonnull %.04480) #10 + %35 = call ptr @Curl_node_next(ptr noundef nonnull %.04480) #10 %36 = load ptr, ptr %7, align 8, !tbaa !39 call void @llvm.lifetime.start.p0(ptr nonnull %6) %37 = getelementptr inbounds nuw i8, ptr %34, i64 48 @@ -560,7 +557,7 @@ define dso_local i32 @Curl_hsts_save(ptr noundef %0, ptr noundef %1, ptr noundef br i1 %.not.i, label %57, label %39 39: ; preds = %33 - %40 = call i32 @Curl_gmtime(i64 noundef %38, ptr noundef nonnull %6) #9 + %40 = call i32 @Curl_gmtime(i64 noundef %38, ptr noundef nonnull %6) #10 %.not13.i = icmp eq i32 %40, 0 br i1 %.not13.i, label %41, label %hsts_out.exit.thread @@ -583,7 +580,7 @@ hsts_out.exit.thread: ; preds = %39 %53 = load i32, ptr %31, align 8, !tbaa !45 %54 = load i32, ptr %32, align 4, !tbaa !46 %55 = load i32, ptr %6, align 8, !tbaa !47 - %56 = call i32 (ptr, ptr, ...) @curl_mfprintf(ptr noundef %36, ptr noundef nonnull @.str.3, ptr noundef nonnull %45, ptr noundef %47, i32 noundef %49, i32 noundef %51, i32 noundef %52, i32 noundef %53, i32 noundef %54, i32 noundef %55) #9 + %56 = call i32 (ptr, ptr, ...) @curl_mfprintf(ptr noundef %36, ptr noundef nonnull @.str.3, ptr noundef nonnull %45, ptr noundef %47, i32 noundef %49, i32 noundef %51, i32 noundef %52, i32 noundef %53, i32 noundef %54, i32 noundef %55) #10 br label %hsts_out.exit 57: ; preds = %33 @@ -593,7 +590,7 @@ hsts_out.exit.thread: ; preds = %39 %61 = select i1 %60, ptr @.str.4, ptr @.str.5 %62 = getelementptr inbounds nuw i8, ptr %34, i64 32 %63 = load ptr, ptr %62, align 8, !tbaa !10 - %64 = call i32 (ptr, ptr, ...) @curl_mfprintf(ptr noundef %36, ptr noundef nonnull @.str.6, ptr noundef nonnull %61, ptr noundef %63, ptr noundef nonnull @.str.7) #9 + %64 = call i32 (ptr, ptr, ...) @curl_mfprintf(ptr noundef %36, ptr noundef nonnull @.str.6, ptr noundef nonnull %61, ptr noundef %63, ptr noundef nonnull @.str.7) #10 br label %hsts_out.exit hsts_out.exit: ; preds = %41, %57 @@ -612,7 +609,7 @@ hsts_out.exit: ; preds = %41, %57 br i1 %or.cond3, label %70, label %72 70: ; preds = %.loopexit - %71 = call i32 @Curl_rename(ptr noundef nonnull %68, ptr noundef nonnull %.040) #9 + %71 = call i32 @Curl_rename(ptr noundef nonnull %68, ptr noundef nonnull %.040) #10 %.not60 = icmp eq i32 %71, 0 %spec.select63 = select i1 %.not60, i32 0, i32 23 %.pre = load ptr, ptr %8, align 8 @@ -627,14 +624,14 @@ hsts_out.exit: ; preds = %41, %57 br i1 %or.cond5, label %76, label %78 76: ; preds = %72 - %77 = call i32 @unlink(ptr noundef nonnull %73) #9 + %77 = call i32 @unlink(ptr noundef nonnull %73) #10 br label %78 78: ; preds = %72, %76, %22 %.143 = phi i32 [ %23, %22 ], [ %.4, %76 ], [ %.4, %72 ] %79 = load ptr, ptr @Curl_cfree, align 8, !tbaa !4 %80 = load ptr, ptr %8, align 8, !tbaa !29 - call void %79(ptr noundef %80) #9 + call void %79(ptr noundef %80) #10 br label %81 81: ; preds = %14, %20, %78 @@ -646,11 +643,11 @@ hsts_out.exit: ; preds = %41, %57 84: ; preds = %81 call void @llvm.lifetime.start.p0(ptr nonnull %9) - %85 = call i64 @Curl_llist_count(ptr noundef nonnull %1) #9 + %85 = call i64 @Curl_llist_count(ptr noundef nonnull %1) #10 %86 = getelementptr inbounds nuw i8, ptr %9, i64 8 store i64 %85, ptr %86, align 8, !tbaa !109 store i64 0, ptr %9, align 8, !tbaa !111 - %87 = call ptr @Curl_llist_head(ptr noundef nonnull %1) #9 + %87 = call ptr @Curl_llist_head(ptr noundef nonnull %1) #10 %.not6285 = icmp eq ptr %87, null br i1 %.not6285, label %.thread, label %.lr.ph87 @@ -668,14 +665,14 @@ hsts_out.exit: ; preds = %41, %57 97: ; preds = %.lr.ph87, %123 %.14586 = phi ptr [ %87, %.lr.ph87 ], [ %99, %123 ] - %98 = call ptr @Curl_node_elem(ptr noundef nonnull %.14586) #9 - %99 = call ptr @Curl_node_next(ptr noundef nonnull %.14586) #9 + %98 = call ptr @Curl_node_elem(ptr noundef nonnull %.14586) #10 + %99 = call ptr @Curl_node_next(ptr noundef nonnull %.14586) #10 call void @llvm.lifetime.start.p0(ptr nonnull %4) call void @llvm.lifetime.start.p0(ptr nonnull %5) %100 = getelementptr inbounds nuw i8, ptr %98, i64 32 %101 = load ptr, ptr %100, align 8, !tbaa !10 store ptr %101, ptr %4, align 8, !tbaa !112 - %102 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %101) #10 + %102 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %101) #11 store i64 %102, ptr %88, align 8, !tbaa !114 %103 = getelementptr inbounds nuw i8, ptr %98, i64 40 %104 = load i8, ptr %103, align 8, !tbaa !34, !range !35, !noundef !36 @@ -686,7 +683,7 @@ hsts_out.exit: ; preds = %41, %57 br i1 %.not.i64, label %119, label %107 107: ; preds = %97 - %108 = call i32 @Curl_gmtime(i64 noundef %106, ptr noundef nonnull %5) #9 + %108 = call i32 @Curl_gmtime(i64 noundef %106, ptr noundef nonnull %5) #10 %.not16.i = icmp eq i32 %108, 0 br i1 %.not16.i, label %109, label %hsts_push.exit.thread @@ -704,17 +701,17 @@ hsts_push.exit.thread: ; preds = %107 %115 = load i32, ptr %94, align 8, !tbaa !45 %116 = load i32, ptr %95, align 4, !tbaa !46 %117 = load i32, ptr %5, align 8, !tbaa !47 - %118 = call i32 (ptr, i64, ptr, ...) @curl_msnprintf(ptr noundef nonnull %90, i64 noundef 18, ptr noundef nonnull @.str.8, i32 noundef %111, i32 noundef %113, i32 noundef %114, i32 noundef %115, i32 noundef %116, i32 noundef %117) #9 + %118 = call i32 (ptr, i64, ptr, ...) @curl_msnprintf(ptr noundef nonnull %90, i64 noundef 18, ptr noundef nonnull @.str.8, i32 noundef %111, i32 noundef %113, i32 noundef %114, i32 noundef %115, i32 noundef %116, i32 noundef %117) #10 br label %hsts_push.exit 119: ; preds = %97 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(10) %90, ptr noundef nonnull align 1 dereferenceable(10) @.str.7, i64 10, i1 false) #9 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(10) %90, ptr noundef nonnull align 1 dereferenceable(10) @.str.7, i64 10, i1 false) #10 br label %hsts_push.exit hsts_push.exit: ; preds = %109, %119 %120 = load ptr, ptr %82, align 8, !tbaa !48 %121 = load ptr, ptr %96, align 8, !tbaa !115 - %122 = call i32 %120(ptr noundef nonnull %0, ptr noundef nonnull %4, ptr noundef nonnull %9, ptr noundef %121) #9 + %122 = call i32 %120(ptr noundef nonnull %0, ptr noundef nonnull %4, ptr noundef nonnull %9, ptr noundef %121) #10 %.not77 = icmp eq i32 %122, 0 call void @llvm.lifetime.end.p0(ptr nonnull %5) call void @llvm.lifetime.end.p0(ptr nonnull %4) @@ -764,9 +761,9 @@ define dso_local range(i32 0, 28) i32 @Curl_hsts_loadfile(ptr readnone captures( %7 = load ptr, ptr @Curl_cfree, align 8, !tbaa !4 %8 = getelementptr inbounds nuw i8, ptr %1, i64 32 %9 = load ptr, ptr %8, align 8, !tbaa !20 - tail call void %7(ptr noundef %9) #9 + tail call void %7(ptr noundef %9) #10 %10 = load ptr, ptr @Curl_cstrdup, align 8, !tbaa !4 - %11 = tail call ptr %10(ptr noundef %2) #9 + %11 = tail call ptr %10(ptr noundef %2) #10 store ptr %11, ptr %8, align 8, !tbaa !20 %.not.i = icmp eq ptr %11, null br i1 %.not.i, label %hsts_load.exit, label %12 @@ -778,13 +775,13 @@ define dso_local range(i32 0, 28) i32 @Curl_hsts_loadfile(ptr readnone captures( 14: ; preds = %12 call void @llvm.lifetime.start.p0(ptr nonnull %6) - call void @Curl_dyn_init(ptr noundef nonnull %6, i64 noundef 4095) #9 - %15 = call i32 @Curl_get_line(ptr noundef nonnull %6, ptr noundef nonnull %13) #9 + call void @Curl_dyn_init(ptr noundef nonnull %6, i64 noundef 4095) #10 + %15 = call i32 @Curl_get_line(ptr noundef nonnull %6, ptr noundef nonnull %13) #10 %.not2327.i = icmp eq i32 %15, 0 br i1 %.not2327.i, label %._crit_edge.i, label %.lr.ph.i .lr.ph.i: ; preds = %14, %.loopexit.i - %16 = call ptr @Curl_dyn_ptr(ptr noundef nonnull %6) #9 + %16 = call ptr @Curl_dyn_ptr(ptr noundef nonnull %6) #10 br label %17 17: ; preds = %.critedge2.i, %.lr.ph.i @@ -801,14 +798,14 @@ define dso_local range(i32 0, 28) i32 @Curl_hsts_loadfile(ptr readnone captures( br label %17, !llvm.loop !117 20: ; preds = %17 - %21 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.0.i) #10 + %21 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.0.i) #11 %22 = icmp ult i64 %21, 2 br i1 %22, label %.loopexit.i, label %23, !llvm.loop !118 23: ; preds = %20 call void @llvm.lifetime.start.p0(ptr nonnull %4) call void @llvm.lifetime.start.p0(ptr nonnull %5) - %24 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull readonly %.0.i, ptr noundef nonnull @.str.10, ptr noundef nonnull %4, ptr noundef nonnull %5) #9 + %24 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull readonly %.0.i, ptr noundef nonnull @.str.10, ptr noundef nonnull %4, ptr noundef nonnull %5) #10 %25 = icmp eq i32 %24, 2 br i1 %25, label %26, label %hsts_add.exit.i @@ -818,7 +815,7 @@ define dso_local range(i32 0, 28) i32 @Curl_hsts_loadfile(ptr readnone captures( br i1 %.not.i.i, label %29, label %27 27: ; preds = %26 - %28 = call i64 @Curl_getdate_capped(ptr noundef nonnull %5) #9 + %28 = call i64 @Curl_getdate_capped(ptr noundef nonnull %5) #10 br label %29 29: ; preds = %27, %26 @@ -833,7 +830,7 @@ define dso_local range(i32 0, 28) i32 @Curl_hsts_loadfile(ptr readnone captures( 34: ; preds = %29 %35 = zext i1 %32 to i8 - %36 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %spec.select.idx.sroa.sel.idx.i.sroa.sel.idx.sroa.sel.idx.i.sroa.sel.idx.sroa.sel.idx.sroa.sel) #10 + %36 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %spec.select.idx.sroa.sel.idx.i.sroa.sel.idx.sroa.sel.idx.i.sroa.sel.idx.sroa.sel.idx.sroa.sel) #11 %.not.i.i.i = icmp eq i64 %36, 0 br i1 %.not.i.i.i, label %hsts_add.exit.i, label %37 @@ -852,18 +849,18 @@ define dso_local range(i32 0, 28) i32 @Curl_hsts_loadfile(ptr readnone captures( .thread32.i.i.i: ; preds = %42, %37 %.02235.i.i.i = phi i64 [ %43, %42 ], [ %36, %37 ] %44 = load ptr, ptr @Curl_ccalloc, align 8, !tbaa !4 - %45 = call ptr %44(i64 noundef 1, i64 noundef 56) #9 + %45 = call ptr %44(i64 noundef 1, i64 noundef 56) #10 %.not28.i.i.i = icmp eq ptr %45, null br i1 %.not28.i.i.i, label %hsts_add.exit.i, label %46 46: ; preds = %.thread32.i.i.i - %47 = call ptr @Curl_memdup0(ptr noundef nonnull %spec.select.idx.sroa.sel.idx.i.sroa.sel.idx.sroa.sel.idx.i.sroa.sel.idx.sroa.sel.idx.sroa.sel, i64 noundef %.02235.i.i.i) #9 + %47 = call ptr @Curl_memdup0(ptr noundef nonnull %spec.select.idx.sroa.sel.idx.i.sroa.sel.idx.sroa.sel.idx.i.sroa.sel.idx.sroa.sel.idx.sroa.sel, i64 noundef %.02235.i.i.i) #10 %.not29.i.i.i = icmp eq ptr %47, null br i1 %.not29.i.i.i, label %48, label %.critedge.i.i.i 48: ; preds = %46 %49 = load ptr, ptr @Curl_cfree, align 8, !tbaa !4 - call void %49(ptr noundef nonnull %45) #9 + call void %49(ptr noundef nonnull %45) #10 br label %hsts_add.exit.i .critedge.i.i.i: ; preds = %46 @@ -873,13 +870,13 @@ define dso_local range(i32 0, 28) i32 @Curl_hsts_loadfile(ptr readnone captures( store i64 %30, ptr %51, align 8, !tbaa !33 %52 = getelementptr inbounds nuw i8, ptr %45, i64 40 store i8 %35, ptr %52, align 8, !tbaa !34 - call void @Curl_llist_append(ptr noundef %1, ptr noundef nonnull %45, ptr noundef nonnull %45) #9 + call void @Curl_llist_append(ptr noundef %1, ptr noundef nonnull %45, ptr noundef nonnull %45) #10 br label %hsts_add.exit.i 53: ; preds = %29 %54 = getelementptr inbounds nuw i8, ptr %33, i64 32 %55 = load ptr, ptr %54, align 8, !tbaa !10 - %56 = call i32 @curl_strequal(ptr noundef nonnull %spec.select.idx.sroa.sel.idx.i.sroa.sel.idx.sroa.sel.idx.i.sroa.sel.idx.sroa.sel.idx.sroa.sel, ptr noundef %55) #9 + %56 = call i32 @curl_strequal(ptr noundef nonnull %spec.select.idx.sroa.sel.idx.i.sroa.sel.idx.sroa.sel.idx.i.sroa.sel.idx.sroa.sel.idx.sroa.sel, ptr noundef %55) #10 %.not28.i.i = icmp eq i32 %56, 0 br i1 %.not28.i.i, label %hsts_add.exit.i, label %57 @@ -899,12 +896,12 @@ hsts_add.exit.i: ; preds = %61, %57, %53, %.cri br label %.loopexit.i .loopexit.i: ; preds = %17, %hsts_add.exit.i, %20 - %62 = call i32 @Curl_get_line(ptr noundef nonnull %6, ptr noundef nonnull %13) #9 + %62 = call i32 @Curl_get_line(ptr noundef nonnull %6, ptr noundef nonnull %13) #10 %.not23.i = icmp eq i32 %62, 0 br i1 %.not23.i, label %._crit_edge.i, label %.lr.ph.i ._crit_edge.i: ; preds = %.loopexit.i, %14 - call void @Curl_dyn_free(ptr noundef nonnull %6) #9 + call void @Curl_dyn_free(ptr noundef nonnull %6) #10 %63 = call i32 @fclose(ptr noundef nonnull %13) call void @llvm.lifetime.end.p0(ptr nonnull %6) br label %hsts_load.exit @@ -946,7 +943,7 @@ define dso_local range(i32 0, 44) i32 @Curl_hsts_loadcb(ptr noundef %0, ptr noun store i8 0, ptr %10, align 1, !tbaa !25 store i8 0, ptr %3, align 16, !tbaa !25 %16 = load ptr, ptr %11, align 8, !tbaa !120 - %17 = call i32 %13(ptr noundef nonnull %0, ptr noundef nonnull %4, ptr noundef %16) #9 + %17 = call i32 %13(ptr noundef nonnull %0, ptr noundef nonnull %4, ptr noundef %16) #10 switch i32 %17, label %.thread45.sink.split.i.loopexit [ i32 0, label %18 i32 2, label %.thread45.sink.split.i @@ -964,7 +961,7 @@ define dso_local range(i32 0, 44) i32 @Curl_hsts_loadcb(ptr noundef %0, ptr noun br i1 %.not22.i, label %25, label %23 23: ; preds = %21 - %24 = call i64 @Curl_getdate_capped(ptr noundef nonnull %10) #9 + %24 = call i64 @Curl_getdate_capped(ptr noundef nonnull %10) #10 %.pre49.i = load ptr, ptr %4, align 8, !tbaa !112 br label %25 @@ -973,7 +970,7 @@ define dso_local range(i32 0, 44) i32 @Curl_hsts_loadcb(ptr noundef %0, ptr noun %.018.i = phi i64 [ %24, %23 ], [ 9223372036854775807, %21 ] %27 = load i8, ptr %9, align 8 %28 = and i8 %27, 1 - %29 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %26) #10 + %29 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %26) #11 %.not.i.i = icmp eq i64 %29, 0 br i1 %.not.i.i, label %46, label %30 @@ -992,18 +989,18 @@ define dso_local range(i32 0, 44) i32 @Curl_hsts_loadcb(ptr noundef %0, ptr noun .thread32.i.i: ; preds = %35, %30 %.02235.i.i = phi i64 [ %36, %35 ], [ %29, %30 ] %37 = load ptr, ptr @Curl_ccalloc, align 8, !tbaa !4 - %38 = call ptr %37(i64 noundef 1, i64 noundef 56) #9 + %38 = call ptr %37(i64 noundef 1, i64 noundef 56) #10 %.not28.i.i = icmp eq ptr %38, null br i1 %.not28.i.i, label %.thread45.sink.split.i, label %39 39: ; preds = %.thread32.i.i - %40 = call ptr @Curl_memdup0(ptr noundef nonnull %26, i64 noundef %.02235.i.i) #9 + %40 = call ptr @Curl_memdup0(ptr noundef nonnull %26, i64 noundef %.02235.i.i) #10 %.not29.i.i = icmp eq ptr %40, null br i1 %.not29.i.i, label %41, label %.critedge.i.i 41: ; preds = %39 %42 = load ptr, ptr @Curl_cfree, align 8, !tbaa !4 - call void %42(ptr noundef nonnull %38) #9 + call void %42(ptr noundef nonnull %38) #10 br label %.thread45.sink.split.i .critedge.i.i: ; preds = %39 @@ -1013,7 +1010,7 @@ define dso_local range(i32 0, 44) i32 @Curl_hsts_loadcb(ptr noundef %0, ptr noun store i64 %.018.i, ptr %44, align 8, !tbaa !33 %45 = getelementptr inbounds nuw i8, ptr %38, i64 40 store i8 %28, ptr %45, align 8, !tbaa !34 - call void @Curl_llist_append(ptr noundef nonnull %1, ptr noundef nonnull %38, ptr noundef nonnull %38) #9 + call void @Curl_llist_append(ptr noundef nonnull %1, ptr noundef nonnull %38, ptr noundef nonnull %38) #10 br label %46 46: ; preds = %.critedge.i.i, %35, %25 @@ -1045,7 +1042,7 @@ define dso_local void @Curl_hsts_loadfiles(ptr noundef %0) local_unnamed_addr #0 br i1 %.not, label %15, label %4 4: ; preds = %1 - %5 = tail call i32 @Curl_share_lock(ptr noundef nonnull %0, i32 noundef 7, i32 noundef 2) #9 + %5 = tail call i32 @Curl_share_lock(ptr noundef nonnull %0, i32 noundef 7, i32 noundef 2) #10 %6 = getelementptr inbounds nuw i8, ptr %0, i64 2584 br label %7 @@ -1060,7 +1057,7 @@ define dso_local void @Curl_hsts_loadfiles(ptr noundef %0) local_unnamed_addr #0 br i1 %.not10, label %13, label %7, !llvm.loop !126 13: ; preds = %7 - %14 = tail call i32 @Curl_share_unlock(ptr noundef nonnull %0, i32 noundef 7) #9 + %14 = tail call i32 @Curl_share_unlock(ptr noundef nonnull %0, i32 noundef 7) #10 br label %15 15: ; preds = %13, %1 @@ -1114,6 +1111,9 @@ declare void @llvm.memcpy.p0.p0.i64(ptr noalias writeonly captures(none), ptr no ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: read) declare i32 @bcmp(ptr captures(none), ptr captures(none), i64) local_unnamed_addr #8 +; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) +declare i64 @llvm.sadd.sat.i64(i64, i64) #9 + attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } @@ -1123,8 +1123,9 @@ attributes #5 = { mustprogress nocallback nofree nosync nounwind willreturn memo attributes #6 = { nofree nounwind } attributes #7 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) } attributes #8 = { nocallback nofree nounwind willreturn memory(argmem: read) } -attributes #9 = { nounwind } -attributes #10 = { nounwind willreturn memory(read) } +attributes #9 = { nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) } +attributes #10 = { nounwind } +attributes #11 = { nounwind willreturn memory(read) } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/cpython/optimized/bytes_methods.ll b/bench/cpython/optimized/bytes_methods.ll index c8416e17b03..1b750062f4b 100644 --- a/bench/cpython/optimized/bytes_methods.ll +++ b/bench/cpython/optimized/bytes_methods.ll @@ -1030,14 +1030,14 @@ _PyIndex_Check.exit.thread.i: ; preds = %_PyIndex_Check.exit 23: ; preds = %18 %or.cond.i = icmp ugt i64 %19, 255 - br i1 %or.cond.i, label %.thread.i, label %parse_args_finds_byte.exit.thread40 + br i1 %or.cond.i, label %.thread.i, label %parse_args_finds_byte.exit.thread39 .thread.i: ; preds = %23, %21 %24 = load ptr, ptr @PyExc_ValueError, align 8, !tbaa !28 tail call void @PyErr_SetString(ptr noundef %24, ptr noundef nonnull @.str.7) #14 br label %parse_args_finds_byte.exit.thread -parse_args_finds_byte.exit.thread40: ; preds = %23 +parse_args_finds_byte.exit.thread39: ; preds = %23 %25 = trunc nuw i64 %19 to i8 store i8 %25, ptr %6, align 1, !tbaa !4 br label %32 @@ -1057,10 +1057,10 @@ parse_args_finds_byte.exit: ; preds = %5 %31 = load i64, ptr %30, align 8, !tbaa !21 br label %32 -32: ; preds = %parse_args_finds_byte.exit.thread40, %parse_args_finds_byte.exit, %28 - %.not2844 = phi i1 [ false, %28 ], [ true, %parse_args_finds_byte.exit ], [ true, %parse_args_finds_byte.exit.thread40 ] - %.020 = phi ptr [ %29, %28 ], [ %6, %parse_args_finds_byte.exit ], [ %6, %parse_args_finds_byte.exit.thread40 ] - %.019 = phi i64 [ %31, %28 ], [ 1, %parse_args_finds_byte.exit ], [ 1, %parse_args_finds_byte.exit.thread40 ] +32: ; preds = %parse_args_finds_byte.exit.thread39, %parse_args_finds_byte.exit, %28 + %.not2843 = phi i1 [ false, %28 ], [ true, %parse_args_finds_byte.exit ], [ true, %parse_args_finds_byte.exit.thread39 ] + %.020 = phi ptr [ %29, %28 ], [ %6, %parse_args_finds_byte.exit ], [ %6, %parse_args_finds_byte.exit.thread39 ] + %.019 = phi i64 [ %31, %28 ], [ 1, %parse_args_finds_byte.exit ], [ 1, %parse_args_finds_byte.exit.thread39 ] %33 = icmp sgt i64 %4, %1 br i1 %33, label %38, label %34 @@ -1086,30 +1086,28 @@ parse_args_finds_byte.exit: ; preds = %5 44: ; preds = %38 %45 = icmp eq i64 %.019, 0 - br i1 %45, label %46, label %49 + br i1 %45, label %46, label %48 46: ; preds = %44 - %.not.i32 = icmp eq i64 %42, 9223372036854775807 - %47 = add nuw nsw i64 %42, 1 - %48 = select i1 %.not.i32, i64 9223372036854775807, i64 %47 + %47 = call i64 @llvm.sadd.sat.i64(i64 %42, i64 1) br label %stringlib_count.exit -49: ; preds = %44 - %50 = call fastcc i64 @fastsearch(ptr noundef %41, i64 noundef %42, ptr noundef %.020, i64 noundef %.019, i64 noundef 9223372036854775807, i32 noundef 0) - %..i = call i64 @llvm.smax.i64(i64 %50, i64 0) +48: ; preds = %44 + %49 = call fastcc i64 @fastsearch(ptr noundef %41, i64 noundef %42, ptr noundef %.020, i64 noundef %.019, i64 noundef 9223372036854775807, i32 noundef 0) + %..i = call i64 @llvm.smax.i64(i64 %49, i64 0) br label %stringlib_count.exit -stringlib_count.exit: ; preds = %38, %46, %49 - %.0.i31 = phi i64 [ %48, %46 ], [ 0, %38 ], [ %..i, %49 ] - %51 = call ptr @PyLong_FromSsize_t(i64 noundef %.0.i31) #14 - br i1 %.not2844, label %parse_args_finds_byte.exit.thread, label %52 +stringlib_count.exit: ; preds = %38, %46, %48 + %.0.i31 = phi i64 [ %47, %46 ], [ 0, %38 ], [ %..i, %48 ] + %50 = call ptr @PyLong_FromSsize_t(i64 noundef %.0.i31) #14 + br i1 %.not2843, label %parse_args_finds_byte.exit.thread, label %51 -52: ; preds = %stringlib_count.exit +51: ; preds = %stringlib_count.exit call void @PyBuffer_Release(ptr noundef nonnull %7) #14 br label %parse_args_finds_byte.exit.thread -parse_args_finds_byte.exit.thread: ; preds = %21, %.thread.i, %_PyIndex_Check.exit.thread.i, %stringlib_count.exit, %52, %26 - %.0 = phi ptr [ null, %26 ], [ %51, %52 ], [ %51, %stringlib_count.exit ], [ null, %_PyIndex_Check.exit.thread.i ], [ null, %.thread.i ], [ null, %21 ] +parse_args_finds_byte.exit.thread: ; preds = %21, %.thread.i, %_PyIndex_Check.exit.thread.i, %stringlib_count.exit, %51, %26 + %.0 = phi ptr [ null, %26 ], [ %50, %51 ], [ %50, %stringlib_count.exit ], [ null, %_PyIndex_Check.exit.thread.i ], [ null, %.thread.i ], [ null, %21 ] call void @llvm.lifetime.end.p0(ptr nonnull %7) call void @llvm.lifetime.end.p0(ptr nonnull %6) ret ptr %.0 @@ -2487,6 +2485,9 @@ declare void @llvm.lifetime.end.p0(ptr captures(none)) #11 ; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.smax.i64(i64, i64) #12 +; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) +declare i64 @llvm.sadd.sat.i64(i64, i64) #12 + ; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umin.i64(i64, i64) #12 diff --git a/bench/cpython/optimized/unicodeobject.ll b/bench/cpython/optimized/unicodeobject.ll index fb2fb5bbbc7..4589a4ace3e 100644 --- a/bench/cpython/optimized/unicodeobject.ll +++ b/bench/cpython/optimized/unicodeobject.ll @@ -26411,7 +26411,7 @@ unicode_fill.exit: ; preds = %.lr.ph.i, %.lr.ph30 } ; Function Attrs: nounwind uwtable -define dso_local range(i64 -1, -9223372036854775807) i64 @PyUnicode_Count(ptr noundef %0, ptr noundef %1, i64 noundef %2, i64 noundef %3) local_unnamed_addr #0 { +define dso_local range(i64 -1, -9223372036854775808) i64 @PyUnicode_Count(ptr noundef %0, ptr noundef %1, i64 noundef %2, i64 noundef %3) local_unnamed_addr #0 { %5 = getelementptr i8, ptr %0, i64 8 %.val6 = load ptr, ptr %5, align 8, !tbaa !187 %6 = getelementptr i8, ptr %.val6, i64 168 @@ -26453,7 +26453,7 @@ ensure_unicode.exit10: ; preds = %ensure_unicode.exit } ; Function Attrs: nounwind uwtable -define internal fastcc range(i64 -1, -9223372036854775807) i64 @unicode_count_impl(ptr noundef %0, ptr noundef %1, i64 noundef %2, i64 noundef %3) unnamed_addr #0 { +define internal fastcc range(i64 -1, -9223372036854775808) i64 @unicode_count_impl(ptr noundef %0, ptr noundef %1, i64 noundef %2, i64 noundef %3) unnamed_addr #0 { %5 = getelementptr inbounds nuw i8, ptr %0, i64 34 %6 = load i16, ptr %5, align 2 %7 = and i16 %6, 7 @@ -26463,7 +26463,7 @@ define internal fastcc range(i64 -1, -9223372036854775807) i64 @unicode_count_im %11 = and i16 %10, 7 %12 = zext nneg i16 %11 to i32 %13 = icmp samesign ult i16 %7, %11 - br i1 %13, label %70, label %14 + br i1 %13, label %67, label %14 14: ; preds = %4 %15 = getelementptr i8, ptr %0, i64 16 @@ -26490,7 +26490,7 @@ define internal fastcc range(i64 -1, -9223372036854775807) i64 @unicode_count_im %.056 = select i1 %23, i64 %spec.store.select1, i64 %2 %25 = sub i64 %.058, %.056 %26 = icmp slt i64 %25, %.val - br i1 %26, label %70, label %27 + br i1 %26, label %67, label %27 27: ; preds = %22 %28 = and i16 %6, 8 @@ -26540,10 +26540,10 @@ _PyUnicode_DATA.exit79: ; preds = %34, %36 40: ; preds = %38, %_PyUnicode_DATA.exit79 %.057 = phi ptr [ %39, %38 ], [ %.0.i77, %_PyUnicode_DATA.exit79 ] %41 = icmp slt i64 %25, 0 - switch i16 %7, label %69 [ + switch i16 %7, label %66 [ i16 1, label %42 - i16 2, label %51 - i16 4, label %60 + i16 2, label %50 + i16 4, label %58 ] 42: ; preds = %40 @@ -26552,71 +26552,65 @@ _PyUnicode_DATA.exit79: ; preds = %34, %36 44: ; preds = %42 %45 = icmp eq i64 %.val, 0 - br i1 %45, label %46, label %49 + br i1 %45, label %46, label %48 46: ; preds = %44 - %.not87 = icmp eq i64 %25, 9223372036854775807 - %47 = add nuw i64 %25, 1 - %48 = select i1 %.not87, i64 9223372036854775807, i64 %47 + %47 = tail call i64 @llvm.sadd.sat.i64(i64 %25, i64 1) br label %ucs1lib_count.exit -49: ; preds = %44 - %50 = tail call fastcc i64 @ucs1lib_fastsearch(ptr noundef %43, i64 noundef %25, ptr noundef %.057, i64 noundef %.val, i64 noundef 9223372036854775807, i32 noundef 0) - %..i = tail call i64 @llvm.smax.i64(i64 %50, i64 0) +48: ; preds = %44 + %49 = tail call fastcc i64 @ucs1lib_fastsearch(ptr noundef %43, i64 noundef %25, ptr noundef %.057, i64 noundef %.val, i64 noundef 9223372036854775807, i32 noundef 0) + %..i = tail call i64 @llvm.smax.i64(i64 %49, i64 0) br label %ucs1lib_count.exit -51: ; preds = %40 - %52 = getelementptr i16, ptr %.0.i, i64 %.056 - br i1 %41, label %ucs1lib_count.exit, label %53 +50: ; preds = %40 + %51 = getelementptr i16, ptr %.0.i, i64 %.056 + br i1 %41, label %ucs1lib_count.exit, label %52 -53: ; preds = %51 - %54 = icmp eq i64 %.val, 0 - br i1 %54, label %55, label %58 +52: ; preds = %50 + %53 = icmp eq i64 %.val, 0 + br i1 %53, label %54, label %56 -55: ; preds = %53 - %.not86 = icmp eq i64 %25, 9223372036854775807 - %56 = add nuw i64 %25, 1 - %57 = select i1 %.not86, i64 9223372036854775807, i64 %56 +54: ; preds = %52 + %55 = tail call i64 @llvm.sadd.sat.i64(i64 %25, i64 1) br label %ucs1lib_count.exit -58: ; preds = %53 - %59 = tail call fastcc i64 @ucs2lib_fastsearch(ptr noundef %52, i64 noundef %25, ptr noundef %.057, i64 noundef %.val, i64 noundef 9223372036854775807, i32 noundef 0) - %..i81 = tail call i64 @llvm.smax.i64(i64 %59, i64 0) +56: ; preds = %52 + %57 = tail call fastcc i64 @ucs2lib_fastsearch(ptr noundef %51, i64 noundef %25, ptr noundef %.057, i64 noundef %.val, i64 noundef 9223372036854775807, i32 noundef 0) + %..i81 = tail call i64 @llvm.smax.i64(i64 %57, i64 0) br label %ucs1lib_count.exit -60: ; preds = %40 - %61 = getelementptr i32, ptr %.0.i, i64 %.056 - br i1 %41, label %ucs1lib_count.exit, label %62 +58: ; preds = %40 + %59 = getelementptr i32, ptr %.0.i, i64 %.056 + br i1 %41, label %ucs1lib_count.exit, label %60 -62: ; preds = %60 - %63 = icmp eq i64 %.val, 0 - br i1 %63, label %64, label %67 +60: ; preds = %58 + %61 = icmp eq i64 %.val, 0 + br i1 %61, label %62, label %64 -64: ; preds = %62 - %.not85 = icmp eq i64 %25, 9223372036854775807 - %65 = add nuw i64 %25, 1 - %66 = select i1 %.not85, i64 9223372036854775807, i64 %65 +62: ; preds = %60 + %63 = tail call i64 @llvm.sadd.sat.i64(i64 %25, i64 1) br label %ucs1lib_count.exit -67: ; preds = %62 - %68 = tail call fastcc i64 @ucs4lib_fastsearch(ptr noundef %61, i64 noundef %25, ptr noundef %.057, i64 noundef %.val, i64 noundef 9223372036854775807, i32 noundef 0) - %..i83 = tail call i64 @llvm.smax.i64(i64 %68, i64 0) +64: ; preds = %60 + %65 = tail call fastcc i64 @ucs4lib_fastsearch(ptr noundef %59, i64 noundef %25, ptr noundef %.057, i64 noundef %.val, i64 noundef 9223372036854775807, i32 noundef 0) + %..i83 = tail call i64 @llvm.smax.i64(i64 %65, i64 0) br label %ucs1lib_count.exit -69: ; preds = %40 +66: ; preds = %40 unreachable -ucs1lib_count.exit: ; preds = %67, %64, %60, %58, %55, %51, %49, %46, %42 - %.059 = phi i64 [ %48, %46 ], [ 0, %42 ], [ %..i, %49 ], [ %57, %55 ], [ 0, %51 ], [ %..i81, %58 ], [ %66, %64 ], [ 0, %60 ], [ %..i83, %67 ] - br i1 %.not, label %70, label %.sink.split +ucs1lib_count.exit: ; preds = %64, %62, %58, %56, %54, %50, %48, %46, %42 + %.059 = phi i64 [ %47, %46 ], [ 0, %42 ], [ %..i, %48 ], [ %55, %54 ], [ 0, %50 ], [ %..i81, %56 ], [ %63, %62 ], [ 0, %58 ], [ %..i83, %64 ] + br i1 %.not, label %67, label %.sink.split .sink.split: ; preds = %38, %ucs1lib_count.exit %.057.sink = phi ptr [ %.057, %ucs1lib_count.exit ], [ null, %38 ] %.0.ph = phi i64 [ %.059, %ucs1lib_count.exit ], [ -1, %38 ] tail call void @PyMem_Free(ptr noundef %.057.sink) #42 - br label %70 + br label %67 -70: ; preds = %.sink.split, %ucs1lib_count.exit, %22, %4 +67: ; preds = %.sink.split, %ucs1lib_count.exit, %22, %4 %.0 = phi i64 [ 0, %4 ], [ 0, %22 ], [ %.059, %ucs1lib_count.exit ], [ %.0.ph, %.sink.split ] ret i64 %.0 } @@ -103483,6 +103477,9 @@ declare i64 @llvm.umin.i64(i64, i64) #38 ; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) declare i8 @llvm.fshl.i8(i8, i8, i8) #38 +; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) +declare i64 @llvm.sadd.sat.i64(i64, i64) #38 + ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.abs.i32(i32, i1 immarg) #40 diff --git a/bench/curl/optimized/altsvc.ll b/bench/curl/optimized/altsvc.ll index 2b66085873b..a4e44250216 100644 --- a/bench/curl/optimized/altsvc.ll +++ b/bench/curl/optimized/altsvc.ll @@ -53,13 +53,13 @@ define hidden noundef nonnull ptr @Curl_alpnid2str(i32 noundef %0) local_unnamed ; Function Attrs: nounwind uwtable define hidden ptr @Curl_altsvc_init() local_unnamed_addr #1 { %1 = load ptr, ptr @Curl_ccalloc, align 8, !tbaa !3 - %2 = tail call ptr %1(i64 noundef 1, i64 noundef 48) #12 + %2 = tail call ptr %1(i64 noundef 1, i64 noundef 48) #13 %.not = icmp eq ptr %2, null br i1 %.not, label %6, label %3 3: ; preds = %0 %4 = getelementptr inbounds nuw i8, ptr %2, i64 8 - tail call void @Curl_llist_init(ptr noundef nonnull %4, ptr noundef null) #12 + tail call void @Curl_llist_init(ptr noundef nonnull %4, ptr noundef null) #13 %5 = getelementptr inbounds nuw i8, ptr %2, i64 40 store i64 8, ptr %5, align 8, !tbaa !7 br label %6 @@ -86,9 +86,9 @@ define hidden range(i32 0, 28) i32 @Curl_altsvc_load(ptr noundef %0, ptr noundef %14 = alloca %struct.dynbuf, align 8 %15 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 %16 = load ptr, ptr %0, align 8, !tbaa !13 - tail call void %15(ptr noundef %16) #12 + tail call void %15(ptr noundef %16) #13 %17 = load ptr, ptr @Curl_cstrdup, align 8, !tbaa !3 - %18 = tail call ptr %17(ptr noundef %1) #12 + %18 = tail call ptr %17(ptr noundef %1) #13 store ptr %18, ptr %0, align 8, !tbaa !13 %.not.i = icmp eq ptr %18, null br i1 %.not.i, label %altsvc_load.exit, label %19 @@ -100,8 +100,8 @@ define hidden range(i32 0, 28) i32 @Curl_altsvc_load(ptr noundef %0, ptr noundef 21: ; preds = %19 call void @llvm.lifetime.start.p0(ptr nonnull %14) - call void @Curl_dyn_init(ptr noundef nonnull %14, i64 noundef 4095) #12 - %22 = call i32 @Curl_get_line(ptr noundef nonnull %14, ptr noundef nonnull %20) #12 + call void @Curl_dyn_init(ptr noundef nonnull %14, i64 noundef 4095) #13 + %22 = call i32 @Curl_get_line(ptr noundef nonnull %14, ptr noundef nonnull %20) #13 %.not2225.i = icmp eq i32 %22, 0 br i1 %.not2225.i, label %._crit_edge.i, label %.lr.ph.i @@ -112,7 +112,7 @@ define hidden range(i32 0, 28) i32 @Curl_altsvc_load(ptr noundef %0, ptr noundef br label %26 26: ; preds = %.loopexit.i, %.lr.ph.i - %27 = call ptr @Curl_dyn_ptr(ptr noundef nonnull %14) #12 + %27 = call ptr @Curl_dyn_ptr(ptr noundef nonnull %14) #13 br label %28 28: ; preds = %.critedge2.i, %26 @@ -140,92 +140,92 @@ define hidden range(i32 0, 28) i32 @Curl_altsvc_load(ptr noundef %0, ptr noundef call void @llvm.lifetime.start.p0(ptr nonnull %10) call void @llvm.lifetime.start.p0(ptr nonnull %11) call void @llvm.lifetime.start.p0(ptr nonnull %12) - %32 = call i32 @Curl_str_word(ptr noundef nonnull %3, ptr noundef nonnull %6, i64 noundef 10) #12 + %32 = call i32 @Curl_str_word(ptr noundef nonnull %3, ptr noundef nonnull %6, i64 noundef 10) #13 %.not.i.i = icmp eq i32 %32, 0 br i1 %.not.i.i, label %33, label %altsvc_add.exit.i 33: ; preds = %31 - %34 = call i32 @Curl_str_singlespace(ptr noundef nonnull %3) #12 + %34 = call i32 @Curl_str_singlespace(ptr noundef nonnull %3) #13 %.not7.i.i = icmp eq i32 %34, 0 br i1 %.not7.i.i, label %35, label %altsvc_add.exit.i 35: ; preds = %33 - %36 = call i32 @Curl_str_word(ptr noundef nonnull %3, ptr noundef nonnull %4, i64 noundef 2048) #12 + %36 = call i32 @Curl_str_word(ptr noundef nonnull %3, ptr noundef nonnull %4, i64 noundef 2048) #13 %.not8.i.i = icmp eq i32 %36, 0 br i1 %.not8.i.i, label %37, label %altsvc_add.exit.i 37: ; preds = %35 - %38 = call i32 @Curl_str_singlespace(ptr noundef nonnull %3) #12 + %38 = call i32 @Curl_str_singlespace(ptr noundef nonnull %3) #13 %.not9.i.i = icmp eq i32 %38, 0 br i1 %.not9.i.i, label %39, label %altsvc_add.exit.i 39: ; preds = %37 - %40 = call i32 @Curl_str_number(ptr noundef nonnull %3, ptr noundef nonnull %9, i64 noundef 65535) #12 + %40 = call i32 @Curl_str_number(ptr noundef nonnull %3, ptr noundef nonnull %9, i64 noundef 65535) #13 %.not10.i.i = icmp eq i32 %40, 0 br i1 %.not10.i.i, label %41, label %altsvc_add.exit.i 41: ; preds = %39 - %42 = call i32 @Curl_str_singlespace(ptr noundef nonnull %3) #12 + %42 = call i32 @Curl_str_singlespace(ptr noundef nonnull %3) #13 %.not11.i.i = icmp eq i32 %42, 0 br i1 %.not11.i.i, label %43, label %altsvc_add.exit.i 43: ; preds = %41 - %44 = call i32 @Curl_str_word(ptr noundef nonnull %3, ptr noundef nonnull %7, i64 noundef 10) #12 + %44 = call i32 @Curl_str_word(ptr noundef nonnull %3, ptr noundef nonnull %7, i64 noundef 10) #13 %.not12.i.i = icmp eq i32 %44, 0 br i1 %.not12.i.i, label %45, label %altsvc_add.exit.i 45: ; preds = %43 - %46 = call i32 @Curl_str_singlespace(ptr noundef nonnull %3) #12 + %46 = call i32 @Curl_str_singlespace(ptr noundef nonnull %3) #13 %.not13.i.i = icmp eq i32 %46, 0 br i1 %.not13.i.i, label %47, label %altsvc_add.exit.i 47: ; preds = %45 - %48 = call i32 @Curl_str_word(ptr noundef nonnull %3, ptr noundef nonnull %5, i64 noundef 2048) #12 + %48 = call i32 @Curl_str_word(ptr noundef nonnull %3, ptr noundef nonnull %5, i64 noundef 2048) #13 %.not14.i.i = icmp eq i32 %48, 0 br i1 %.not14.i.i, label %49, label %altsvc_add.exit.i 49: ; preds = %47 - %50 = call i32 @Curl_str_singlespace(ptr noundef nonnull %3) #12 + %50 = call i32 @Curl_str_singlespace(ptr noundef nonnull %3) #13 %.not15.i.i = icmp eq i32 %50, 0 br i1 %.not15.i.i, label %51, label %altsvc_add.exit.i 51: ; preds = %49 - %52 = call i32 @Curl_str_number(ptr noundef nonnull %3, ptr noundef nonnull %10, i64 noundef 65535) #12 + %52 = call i32 @Curl_str_number(ptr noundef nonnull %3, ptr noundef nonnull %10, i64 noundef 65535) #13 %.not16.i.i = icmp eq i32 %52, 0 br i1 %.not16.i.i, label %53, label %altsvc_add.exit.i 53: ; preds = %51 - %54 = call i32 @Curl_str_singlespace(ptr noundef nonnull %3) #12 + %54 = call i32 @Curl_str_singlespace(ptr noundef nonnull %3) #13 %.not17.i.i = icmp eq i32 %54, 0 br i1 %.not17.i.i, label %55, label %altsvc_add.exit.i 55: ; preds = %53 - %56 = call i32 @Curl_str_quotedword(ptr noundef nonnull %3, ptr noundef nonnull %8, i64 noundef 256) #12 + %56 = call i32 @Curl_str_quotedword(ptr noundef nonnull %3, ptr noundef nonnull %8, i64 noundef 256) #13 %.not18.i.i = icmp eq i32 %56, 0 br i1 %.not18.i.i, label %57, label %altsvc_add.exit.i 57: ; preds = %55 - %58 = call i32 @Curl_str_singlespace(ptr noundef nonnull %3) #12 + %58 = call i32 @Curl_str_singlespace(ptr noundef nonnull %3) #13 %.not19.i.i = icmp eq i32 %58, 0 br i1 %.not19.i.i, label %59, label %altsvc_add.exit.i 59: ; preds = %57 - %60 = call i32 @Curl_str_number(ptr noundef nonnull %3, ptr noundef nonnull %11, i64 noundef 1) #12 + %60 = call i32 @Curl_str_number(ptr noundef nonnull %3, ptr noundef nonnull %11, i64 noundef 1) #13 %.not20.i.i = icmp eq i32 %60, 0 br i1 %.not20.i.i, label %61, label %altsvc_add.exit.i 61: ; preds = %59 - %62 = call i32 @Curl_str_singlespace(ptr noundef nonnull %3) #12 + %62 = call i32 @Curl_str_singlespace(ptr noundef nonnull %3) #13 %.not21.i.i = icmp eq i32 %62, 0 br i1 %.not21.i.i, label %63, label %altsvc_add.exit.i 63: ; preds = %61 - %64 = call i32 @Curl_str_number(ptr noundef nonnull %3, ptr noundef nonnull %12, i64 noundef 0) #12 + %64 = call i32 @Curl_str_number(ptr noundef nonnull %3, ptr noundef nonnull %12, i64 noundef 0) #13 %.not22.i.i = icmp eq i32 %64, 0 br i1 %.not22.i.i, label %65, label %altsvc_add.exit.i 65: ; preds = %63 - %66 = call i32 @Curl_str_newline(ptr noundef nonnull %3) #12 + %66 = call i32 @Curl_str_newline(ptr noundef nonnull %3) #13 %.not23.i.i = icmp eq i32 %66, 0 br i1 %.not23.i.i, label %67, label %altsvc_add.exit.i @@ -236,7 +236,7 @@ define hidden range(i32 0, 28) i32 @Curl_altsvc_load(ptr noundef %0, ptr noundef call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 16 %13, ptr align 1 %68, i64 %69, i1 false) %70 = getelementptr inbounds nuw i8, ptr %13, i64 %69 store i8 0, ptr %70, align 1, !tbaa !14 - %71 = call i64 @Curl_getdate_capped(ptr noundef nonnull %13) #12 + %71 = call i64 @Curl_getdate_capped(ptr noundef nonnull %13) #13 %72 = load i64, ptr %9, align 8, !tbaa !21 %73 = load i64, ptr %10, align 8, !tbaa !21 %.val.i.i = load ptr, ptr %7, align 8, !tbaa !18 @@ -256,7 +256,7 @@ define hidden range(i32 0, 28) i32 @Curl_altsvc_load(ptr noundef %0, ptr noundef %81 = zext i1 %79 to i8 store i8 %81, ptr %80, align 8, !tbaa !31 %82 = getelementptr inbounds nuw i8, ptr %74, i64 48 - call void @Curl_llist_append(ptr noundef nonnull %25, ptr noundef nonnull %74, ptr noundef nonnull %82) #12 + call void @Curl_llist_append(ptr noundef nonnull %25, ptr noundef nonnull %74, ptr noundef nonnull %82) #13 br label %83 83: ; preds = %75, %67 @@ -277,12 +277,12 @@ altsvc_add.exit.i: ; preds = %83, %65, %63, %61, br label %.loopexit.i .loopexit.i: ; preds = %28, %altsvc_add.exit.i - %84 = call i32 @Curl_get_line(ptr noundef nonnull %14, ptr noundef nonnull %20) #12 + %84 = call i32 @Curl_get_line(ptr noundef nonnull %14, ptr noundef nonnull %20) #13 %.not22.i = icmp eq i32 %84, 0 br i1 %.not22.i, label %._crit_edge.i, label %26 ._crit_edge.i: ; preds = %.loopexit.i, %21 - call void @Curl_dyn_free(ptr noundef nonnull %14) #12 + call void @Curl_dyn_free(ptr noundef nonnull %14) #13 %85 = call i32 @fclose(ptr noundef nonnull %20) call void @llvm.lifetime.end.p0(ptr nonnull %14) br label %altsvc_load.exit @@ -307,32 +307,32 @@ define hidden void @Curl_altsvc_cleanup(ptr noundef captures(none) %0) local_unn 3: ; preds = %1 %4 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %5 = tail call ptr @Curl_llist_head(ptr noundef nonnull %4) #12 + %5 = tail call ptr @Curl_llist_head(ptr noundef nonnull %4) #13 %.not1213 = icmp eq ptr %5, null br i1 %.not1213, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %3, %.lr.ph %.014 = phi ptr [ %7, %.lr.ph ], [ %5, %3 ] - %6 = tail call ptr @Curl_node_elem(ptr noundef nonnull %.014) #12 - %7 = tail call ptr @Curl_node_next(ptr noundef nonnull %.014) #12 + %6 = tail call ptr @Curl_node_elem(ptr noundef nonnull %.014) #13 + %7 = tail call ptr @Curl_node_next(ptr noundef nonnull %.014) #13 %8 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 %9 = load ptr, ptr %6, align 8, !tbaa !34 - tail call void %8(ptr noundef %9) #12 + tail call void %8(ptr noundef %9) #13 %10 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 %11 = getelementptr inbounds nuw i8, ptr %6, i64 16 %12 = load ptr, ptr %11, align 8, !tbaa !35 - tail call void %10(ptr noundef %12) #12 + tail call void %10(ptr noundef %12) #13 %13 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 - tail call void %13(ptr noundef nonnull %6) #12 + tail call void %13(ptr noundef nonnull %6) #13 %.not12 = icmp eq ptr %7, null br i1 %.not12, label %._crit_edge, label %.lr.ph, !llvm.loop !36 ._crit_edge: ; preds = %.lr.ph, %3 %14 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 %15 = load ptr, ptr %2, align 8, !tbaa !13 - tail call void %14(ptr noundef %15) #12 + tail call void %14(ptr noundef %15) #13 %16 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 - tail call void %16(ptr noundef nonnull %2) #12 + tail call void %16(ptr noundef nonnull %2) #13 store ptr null, ptr %0, align 8, !tbaa !32 br label %17 @@ -382,7 +382,7 @@ define hidden i32 @Curl_altsvc_save(ptr noundef %0, ptr noundef %1, ptr noundef br i1 %.not41, label %94, label %19 19: ; preds = %17 - %20 = call i32 @Curl_fopen(ptr noundef %0, ptr noundef nonnull %.027, ptr noundef nonnull %6, ptr noundef nonnull %7) #12 + %20 = call i32 @Curl_fopen(ptr noundef %0, ptr noundef nonnull %.027, ptr noundef nonnull %6, ptr noundef nonnull %7) #13 %.not42 = icmp eq i32 %20, 0 br i1 %.not42, label %21, label %91 @@ -390,7 +390,7 @@ define hidden i32 @Curl_altsvc_save(ptr noundef %0, ptr noundef %1, ptr noundef %22 = load ptr, ptr %6, align 8, !tbaa !37 %23 = call i64 @fwrite(ptr nonnull @.str.4, i64 117, i64 1, ptr %22) %24 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %25 = call ptr @Curl_llist_head(ptr noundef nonnull %24) #12 + %25 = call ptr @Curl_llist_head(ptr noundef nonnull %24) #13 %.not4347 = icmp eq ptr %25, null br i1 %.not4347, label %.loopexit, label %.lr.ph @@ -404,13 +404,13 @@ define hidden i32 @Curl_altsvc_save(ptr noundef %0, ptr noundef %1, ptr noundef 31: ; preds = %.lr.ph, %altsvc_out.exit %.02848 = phi ptr [ %25, %.lr.ph ], [ %33, %altsvc_out.exit ] - %32 = call ptr @Curl_node_elem(ptr noundef nonnull %.02848) #12 - %33 = call ptr @Curl_node_next(ptr noundef nonnull %.02848) #12 + %32 = call ptr @Curl_node_elem(ptr noundef nonnull %.02848) #13 + %33 = call ptr @Curl_node_next(ptr noundef nonnull %.02848) #13 %34 = load ptr, ptr %6, align 8, !tbaa !37 call void @llvm.lifetime.start.p0(ptr nonnull %4) %35 = getelementptr inbounds nuw i8, ptr %32, i64 32 %36 = load i64, ptr %35, align 8, !tbaa !22 - %37 = call i32 @Curl_gmtime(i64 noundef %36, ptr noundef nonnull %4) #12 + %37 = call i32 @Curl_gmtime(i64 noundef %36, ptr noundef nonnull %4) #13 %.not.i = icmp eq i32 %37, 0 br i1 %.not.i, label %38, label %altsvc_out.exit.thread @@ -422,12 +422,12 @@ altsvc_out.exit.thread: ; preds = %31 call void @llvm.lifetime.start.p0(ptr nonnull %5) %39 = getelementptr inbounds nuw i8, ptr %32, i64 16 %40 = load ptr, ptr %39, align 8, !tbaa !35 - %41 = call i32 @inet_pton(i32 noundef 10, ptr noundef %40, ptr noundef nonnull %5) #12 + %41 = call i32 @inet_pton(i32 noundef 10, ptr noundef %40, ptr noundef nonnull %5) #13 %42 = icmp eq i32 %41, 1 %spec.select.i = select i1 %42, ptr @.str.14, ptr @.str.3 %spec.select23.i = select i1 %42, ptr @.str.15, ptr @.str.3 %43 = load ptr, ptr %32, align 8, !tbaa !34 - %44 = call i32 @inet_pton(i32 noundef 10, ptr noundef %43, ptr noundef nonnull %5) #12 + %44 = call i32 @inet_pton(i32 noundef 10, ptr noundef %43, ptr noundef nonnull %5) #13 %45 = icmp eq i32 %44, 1 %.019.i = select i1 %45, ptr @.str.14, ptr @.str.3 %.018.i = select i1 %45, ptr @.str.15, ptr @.str.3 @@ -491,7 +491,7 @@ altsvc_out.exit: ; preds = %Curl_alpnid2str.exi %74 = zext nneg i8 %73 to i32 %75 = getelementptr inbounds nuw i8, ptr %32, i64 44 %76 = load i32, ptr %75, align 4, !tbaa !30 - %77 = call i32 (ptr, ptr, ...) @curl_mfprintf(ptr noundef %34, ptr noundef nonnull @.str.16, ptr noundef nonnull %.0.i.i, ptr noundef nonnull %.019.i, ptr noundef %51, ptr noundef nonnull %.018.i, i32 noundef %54, ptr noundef nonnull %.0.i24.i, ptr noundef nonnull %spec.select.i, ptr noundef %60, ptr noundef nonnull %spec.select23.i, i32 noundef %63, i32 noundef %65, i32 noundef %67, i32 noundef %68, i32 noundef %69, i32 noundef %70, i32 noundef %71, i32 noundef %74, i32 noundef %76) #12 + %77 = call i32 (ptr, ptr, ...) @curl_mfprintf(ptr noundef %34, ptr noundef nonnull @.str.16, ptr noundef nonnull %.0.i.i, ptr noundef nonnull %.019.i, ptr noundef %51, ptr noundef nonnull %.018.i, i32 noundef %54, ptr noundef nonnull %.0.i24.i, ptr noundef nonnull %spec.select.i, ptr noundef %60, ptr noundef nonnull %spec.select23.i, i32 noundef %63, i32 noundef %65, i32 noundef %67, i32 noundef %68, i32 noundef %69, i32 noundef %70, i32 noundef %71, i32 noundef %74, i32 noundef %76) #13 call void @llvm.lifetime.end.p0(ptr nonnull %4) %.not43 = icmp eq ptr %33, null br i1 %.not43, label %.loopexit, label %31 @@ -507,7 +507,7 @@ altsvc_out.exit: ; preds = %Curl_alpnid2str.exi br i1 %or.cond3, label %83, label %85 83: ; preds = %.loopexit - %84 = call i32 @Curl_rename(ptr noundef nonnull %81, ptr noundef nonnull %.027) #12 + %84 = call i32 @Curl_rename(ptr noundef nonnull %81, ptr noundef nonnull %.027) #13 %.not45 = icmp eq i32 %84, 0 %spec.select46 = select i1 %.not45, i32 0, i32 23 %.pre = load ptr, ptr %7, align 8 @@ -522,14 +522,14 @@ altsvc_out.exit: ; preds = %Curl_alpnid2str.exi br i1 %or.cond5, label %89, label %91 89: ; preds = %85 - %90 = call i32 @unlink(ptr noundef nonnull %86) #12 + %90 = call i32 @unlink(ptr noundef nonnull %86) #13 br label %91 91: ; preds = %85, %89, %19 %.030 = phi i32 [ %20, %19 ], [ %.3, %89 ], [ %.3, %85 ] %92 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 %93 = load ptr, ptr %7, align 8, !tbaa !17 - call void %92(ptr noundef %93) #12 + call void %92(ptr noundef %93) #13 br label %94 94: ; preds = %11, %17, %3, %91 @@ -602,8 +602,8 @@ define hidden noundef i32 @Curl_altsvc_parse(ptr noundef %0, ptr noundef %1, ptr br label %getalnum.exit getalnum.exit: ; preds = %.critedge4.i, %19 - %21 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %7) #13 - %22 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %4) #13 + %21 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %7) #14 + %22 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %4) #14 br i1 %or.cond.i, label %36, label %23 23: ; preds = %getalnum.exit @@ -630,11 +630,11 @@ getalnum.exit: ; preds = %.critedge4.i, %19 br i1 %34, label %35, label %.critedge28 35: ; preds = %31, %28 - tail call void (ptr, ptr, ...) @Curl_infof(ptr noundef nonnull %0, ptr noundef nonnull @.str.5) #12 + tail call void (ptr, ptr, ...) @Curl_infof(ptr noundef nonnull %0, ptr noundef nonnull @.str.5) #13 br label %.critedge28 36: ; preds = %getalnum.exit - %37 = call i32 @curl_strequal(ptr noundef nonnull %7, ptr noundef nonnull @.str.6) #12 + %37 = call i32 @curl_strequal(ptr noundef nonnull %7, ptr noundef nonnull @.str.6) #13 %.not166 = icmp eq i32 %37, 0 br i1 %.not166, label %thread-pre-split, label %38 @@ -652,7 +652,7 @@ thread-pre-split: ; preds = %36 br label %43 43: ; preds = %thread-pre-split, %getalnum.exit234 - %44 = phi i8 [ %.pr, %thread-pre-split ], [ %187, %getalnum.exit234 ] + %44 = phi i8 [ %.pr, %thread-pre-split ], [ %184, %getalnum.exit234 ] %.0 = phi ptr [ %.1.i, %thread-pre-split ], [ %.15, %getalnum.exit234 ] %.0126 = phi i64 [ 0, %thread-pre-split ], [ %.1127.ph, %getalnum.exit234 ] %.0111 = phi i16 [ %5, %thread-pre-split ], [ %.2113, %getalnum.exit234 ] @@ -660,7 +660,7 @@ thread-pre-split: ; preds = %36 br i1 %45, label %46, label %.critedge28 46: ; preds = %43 - %47 = call i32 @Curl_alpn2alpnid(ptr noundef nonnull %7, i64 noundef %21) #12 + %47 = call i32 @Curl_alpn2alpnid(ptr noundef nonnull %7, i64 noundef %21) #13 %48 = getelementptr inbounds nuw i8, ptr %.0, i64 1 %49 = load i8, ptr %48, align 1, !tbaa !14 %50 = icmp eq i8 %49, 34 @@ -679,7 +679,7 @@ thread-pre-split: ; preds = %36 54: ; preds = %51 %55 = getelementptr inbounds nuw i8, ptr %.0, i64 3 - %56 = call i64 @strspn(ptr noundef nonnull %55, ptr noundef nonnull @.str.7) #13 + %56 = call i64 @strspn(ptr noundef nonnull %55, ptr noundef nonnull @.str.7) #14 %57 = getelementptr inbounds nuw i8, ptr %55, i64 %56 %58 = load i8, ptr %57, align 1, !tbaa !14 %.not169 = icmp eq i8 %58, 93 @@ -748,11 +748,11 @@ thread-pre-split: ; preds = %36 br i1 %81, label %82, label %84 82: ; preds = %78, %76 - call void (ptr, ptr, ...) @Curl_infof(ptr noundef nonnull %0, ptr noundef nonnull @.str.8) #12 + call void (ptr, ptr, ...) @Curl_infof(ptr noundef nonnull %0, ptr noundef nonnull @.str.8) #13 br label %84 .thread272: ; preds = %51 - %83 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %4) #13 + %83 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %4) #14 br label %86 84: ; preds = %71, %73, %78, %82 @@ -778,7 +778,7 @@ thread-pre-split: ; preds = %36 br label %98 90: ; preds = %86 - %91 = call i64 @strtoul(ptr noundef nonnull %87, ptr noundef nonnull %9, i32 noundef 10) #12 + %91 = call i64 @strtoul(ptr noundef nonnull %87, ptr noundef nonnull %9, i32 noundef 10) #13 %92 = add i64 %91, -65536 %or.cond6 = icmp ult i64 %92, -65535 br i1 %or.cond6, label %98, label %93 @@ -814,11 +814,11 @@ thread-pre-split: ; preds = %36 br i1 %107, label %108, label %thread-pre-split286 108: ; preds = %104, %102 - call void (ptr, ptr, ...) @Curl_infof(ptr noundef nonnull %0, ptr noundef nonnull @.str.9) #12 + call void (ptr, ptr, ...) @Curl_infof(ptr noundef nonnull %0, ptr noundef nonnull @.str.9) #13 br label %thread-pre-split286 109: ; preds = %96 - %110 = call zeroext i16 @curlx_ultous(i64 noundef %91) #12 + %110 = call zeroext i16 @curlx_ultous(i64 noundef %91) #13 br label %thread-pre-split286 thread-pre-split286: ; preds = %98, %99, %104, %108, %109 @@ -1007,7 +1007,7 @@ getalnum.exit221: ; preds = %.critedge4.i215 %.1125397 = phi i1 [ true, %.critedge18 ], [ false, %.preheader312 ], [ false, %.preheader312 ], [ false, %.preheader312 ], [ false, %.preheader312 ], [ false, %.preheader312 ] %.11395 = phi ptr [ %.11396, %.critedge18 ], [ %storemerge, %.preheader312 ], [ %storemerge, %.preheader312 ], [ %storemerge, %.preheader312 ], [ %storemerge, %.preheader312 ], [ %storemerge, %.preheader312 ] %.13 = phi ptr [ %137, %.critedge18 ], [ %.14, %.preheader312 ], [ %.14, %.preheader312 ], [ %.14, %.preheader312 ], [ %.14, %.preheader312 ], [ %.14, %.preheader312 ] - %141 = call i64 @strtoul(ptr noundef nonnull %.11395, ptr noundef nonnull %9, i32 noundef 10) #12 + %141 = call i64 @strtoul(ptr noundef nonnull %.11395, ptr noundef nonnull %9, i32 noundef 10) #13 %142 = load ptr, ptr %9, align 8, !tbaa !17 %143 = icmp ne ptr %142, %.11395 %144 = icmp ne i64 %141, -1 @@ -1015,12 +1015,12 @@ getalnum.exit221: ; preds = %.critedge4.i215 br i1 %or.cond22, label %145, label %.preheader319 145: ; preds = %.critedge20 - %146 = call i32 @curl_strequal(ptr noundef nonnull @.str.10, ptr noundef nonnull %8) #12 + %146 = call i32 @curl_strequal(ptr noundef nonnull @.str.10, ptr noundef nonnull %8) #13 %.not191 = icmp eq i32 %146, 0 br i1 %.not191, label %147, label %.preheader319.outer 147: ; preds = %145 - %148 = call i32 @curl_strequal(ptr noundef nonnull @.str.11, ptr noundef nonnull %8) #12 + %148 = call i32 @curl_strequal(ptr noundef nonnull @.str.11, ptr noundef nonnull %8) #13 %149 = icmp ne i32 %148, 0 %150 = icmp eq i64 %141, 1 %or.cond24 = select i1 %149, i1 %150, i1 false @@ -1031,7 +1031,7 @@ getalnum.exit221: ; preds = %.critedge4.i215 %.9 = phi ptr [ %.8, %114 ], [ %118, %117 ], [ %118, %117 ], [ %118, %117 ] %151 = icmp ne i32 %47, 0 %or.cond26 = and i1 %151, %.3118 - br i1 %or.cond26, label %152, label %180 + br i1 %or.cond26, label %152, label %177 152: ; preds = %.loopexit317 %153 = add i64 %.0126, 1 @@ -1046,79 +1046,76 @@ getalnum.exit221: ; preds = %.critedge4.i215 %156 = zext i16 %.2113 to i64 %157 = call fastcc ptr @altsvc_createid(ptr noundef nonnull %4, i64 noundef %22, ptr noundef %.2135278, i64 noundef %.2132280, i32 noundef %3, i32 noundef %47, i64 noundef %41, i64 noundef %156) %.not193 = icmp eq ptr %157, null - br i1 %.not193, label %180, label %158 + br i1 %.not193, label %177, label %158 158: ; preds = %155 - %159 = call i64 @time(ptr noundef null) #12 - %160 = sub nsw i64 9223372036854775807, %159 - %161 = icmp sgt i64 %.0122.ph, %160 - %162 = add nsw i64 %159, %.0122.ph - %spec.select426 = select i1 %161, i64 9223372036854775807, i64 %162 - %163 = getelementptr inbounds nuw i8, ptr %157, i64 32 - store i64 %spec.select426, ptr %163, align 8, !tbaa !22 - %164 = getelementptr inbounds nuw i8, ptr %157, i64 40 - store i8 %.0120.ph461, ptr %164, align 8, !tbaa !31 - %165 = getelementptr inbounds nuw i8, ptr %157, i64 48 - call void @Curl_llist_append(ptr noundef nonnull %42, ptr noundef nonnull %157, ptr noundef nonnull %165) #12 - br i1 %.not170, label %180, label %166 - -166: ; preds = %158 - %167 = load i64, ptr %39, align 2 - %168 = and i64 %167, 2147483648 - %.not195 = icmp eq i64 %168, 0 - br i1 %.not195, label %180, label %169 - -169: ; preds = %166 - %170 = load ptr, ptr %40, align 8, !tbaa !54 - %.not196 = icmp eq ptr %170, null - br i1 %.not196, label %175, label %171 - -171: ; preds = %169 - %172 = getelementptr inbounds nuw i8, ptr %170, i64 8 - %173 = load i32, ptr %172, align 8, !tbaa !113 - %174 = icmp sgt i32 %173, 0 - br i1 %174, label %175, label %180 - -175: ; preds = %171, %169 - %176 = zext i16 %.2113 to i32 - switch i32 %47, label %179 [ + %159 = call i64 @time(ptr noundef null) #13 + %spec.select426 = call i64 @llvm.sadd.sat.i64(i64 %159, i64 %.0122.ph) + %160 = getelementptr inbounds nuw i8, ptr %157, i64 32 + store i64 %spec.select426, ptr %160, align 8, !tbaa !22 + %161 = getelementptr inbounds nuw i8, ptr %157, i64 40 + store i8 %.0120.ph461, ptr %161, align 8, !tbaa !31 + %162 = getelementptr inbounds nuw i8, ptr %157, i64 48 + call void @Curl_llist_append(ptr noundef nonnull %42, ptr noundef nonnull %157, ptr noundef nonnull %162) #13 + br i1 %.not170, label %177, label %163 + +163: ; preds = %158 + %164 = load i64, ptr %39, align 2 + %165 = and i64 %164, 2147483648 + %.not195 = icmp eq i64 %165, 0 + br i1 %.not195, label %177, label %166 + +166: ; preds = %163 + %167 = load ptr, ptr %40, align 8, !tbaa !54 + %.not196 = icmp eq ptr %167, null + br i1 %.not196, label %172, label %168 + +168: ; preds = %166 + %169 = getelementptr inbounds nuw i8, ptr %167, i64 8 + %170 = load i32, ptr %169, align 8, !tbaa !113 + %171 = icmp sgt i32 %170, 0 + br i1 %171, label %172, label %177 + +172: ; preds = %168, %166 + %173 = zext i16 %.2113 to i32 + switch i32 %47, label %176 [ i32 8, label %Curl_alpnid2str.exit - i32 16, label %177 - i32 32, label %178 + i32 16, label %174 + i32 32, label %175 ] -177: ; preds = %175 +174: ; preds = %172 br label %Curl_alpnid2str.exit -178: ; preds = %175 +175: ; preds = %172 br label %Curl_alpnid2str.exit -179: ; preds = %175 +176: ; preds = %172 br label %Curl_alpnid2str.exit -Curl_alpnid2str.exit: ; preds = %175, %177, %178, %179 - %.0.i222 = phi ptr [ @.str.3, %179 ], [ @.str.1, %177 ], [ @.str.2, %178 ], [ @.str, %175 ] - call void (ptr, ptr, ...) @Curl_infof(ptr noundef nonnull %0, ptr noundef nonnull @.str.12, ptr noundef %.2135278, i32 noundef %176, ptr noundef nonnull %.0.i222) #12 - br label %180 +Curl_alpnid2str.exit: ; preds = %172, %174, %175, %176 + %.0.i222 = phi ptr [ @.str.3, %176 ], [ @.str.1, %174 ], [ @.str.2, %175 ], [ @.str, %172 ] + call void (ptr, ptr, ...) @Curl_infof(ptr noundef nonnull %0, ptr noundef nonnull @.str.12, ptr noundef %.2135278, i32 noundef %173, ptr noundef nonnull %.0.i222) #13 + br label %177 .loopexit314: ; preds = %54, %111, %.critedge18, %129, %.preheader313 call void @llvm.lifetime.end.p0(ptr nonnull %9) call void @llvm.lifetime.end.p0(ptr nonnull %8) br label %.critedge28 -180: ; preds = %158, %166, %171, %Curl_alpnid2str.exit, %155, %.loopexit317 - %.1127.ph = phi i64 [ %153, %158 ], [ %153, %166 ], [ %153, %171 ], [ %153, %Curl_alpnid2str.exit ], [ %.0126, %.loopexit317 ], [ %153, %155 ] +177: ; preds = %158, %163, %168, %Curl_alpnid2str.exit, %155, %.loopexit317 + %.1127.ph = phi i64 [ %153, %158 ], [ %153, %163 ], [ %153, %168 ], [ %153, %Curl_alpnid2str.exit ], [ %.0126, %.loopexit317 ], [ %153, %155 ] call void @llvm.lifetime.end.p0(ptr nonnull %9) call void @llvm.lifetime.end.p0(ptr nonnull %8) - %181 = load i8, ptr %.9, align 1, !tbaa !14 - %182 = icmp eq i8 %181, 44 - br i1 %182, label %.preheader318, label %getalnum.exit234 + %178 = load i8, ptr %.9, align 1, !tbaa !14 + %179 = icmp eq i8 %178, 44 + br i1 %179, label %.preheader318, label %getalnum.exit234 -.preheader318: ; preds = %180, %.preheader318.backedge - %.9.pn = phi ptr [ %.0.i223.ptr, %.preheader318.backedge ], [ %.9, %180 ] +.preheader318: ; preds = %177, %.preheader318.backedge + %.9.pn = phi ptr [ %.0.i223.ptr, %.preheader318.backedge ], [ %.9, %177 ] %.0.i223.ptr = getelementptr inbounds nuw i8, ptr %.9.pn, i64 1 - %183 = load i8, ptr %.0.i223.ptr, align 1, !tbaa !14 - switch i8 %183, label %.critedge.i226 [ + %180 = load i8, ptr %.0.i223.ptr, align 1, !tbaa !14 + switch i8 %180, label %.critedge.i226 [ i8 9, label %.preheader318.backedge i8 32, label %.preheader318.backedge ] @@ -1126,10 +1123,10 @@ Curl_alpnid2str.exit: ; preds = %175, %177, %178, %1 .preheader318.backedge: ; preds = %.preheader318, %.preheader318 br label %.preheader318, !llvm.loop !52 -.critedge.i226: ; preds = %.preheader318, %185 - %184 = phi i8 [ %.pr.i233, %185 ], [ %183, %.preheader318 ] - %.1.i227.idx = phi i64 [ %.1.i227.add, %185 ], [ 1, %.preheader318 ] - switch i8 %184, label %185 [ +.critedge.i226: ; preds = %.preheader318, %182 + %181 = phi i8 [ %.pr.i233, %182 ], [ %180, %.preheader318 ] + %.1.i227.idx = phi i64 [ %.1.i227.add, %182 ], [ 1, %.preheader318 ] + switch i8 %181, label %182 [ i8 0, label %.critedge4.i228 i8 32, label %.critedge4.i228 i8 9, label %.critedge4.i228 @@ -1137,7 +1134,7 @@ Curl_alpnid2str.exit: ; preds = %175, %177, %178, %1 i8 61, label %.critedge4.i228 ] -185: ; preds = %.critedge.i226 +182: ; preds = %.critedge.i226 %.1.i227.add = add nuw nsw i64 %.1.i227.idx, 1 %.ptr = getelementptr inbounds nuw i8, ptr %.9.pn, i64 %.1.i227.add %.pr.i233 = load i8, ptr %.ptr, align 1, !tbaa !14 @@ -1153,15 +1150,15 @@ getalnum.exit234.thread: ; preds = %.critedge4.i228 %gepdiff = add nsw i64 %.1.i227.idx, -1 %.1.i227.ptr.le = getelementptr inbounds nuw i8, ptr %.9.pn, i64 %.1.i227.idx call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %7, ptr nonnull align 1 %.0.i223.ptr, i64 %gepdiff, i1 false) - %186 = getelementptr inbounds nuw i8, ptr %7, i64 %gepdiff - store i8 0, ptr %186, align 1, !tbaa !14 + %183 = getelementptr inbounds nuw i8, ptr %7, i64 %gepdiff + store i8 0, ptr %183, align 1, !tbaa !14 %.pr309 = load i8, ptr %.1.i227.ptr.le, align 1, !tbaa !14 br label %getalnum.exit234 -getalnum.exit234: ; preds = %getalnum.exit234.thread, %180 - %187 = phi i8 [ %.pr309, %getalnum.exit234.thread ], [ %181, %180 ] - %.15 = phi ptr [ %.1.i227.ptr.le, %getalnum.exit234.thread ], [ %.9, %180 ] - switch i8 %187, label %43 [ +getalnum.exit234: ; preds = %getalnum.exit234.thread, %177 + %184 = phi i8 [ %.pr309, %getalnum.exit234.thread ], [ %178, %177 ] + %.15 = phi ptr [ %.1.i227.ptr.le, %getalnum.exit234.thread ], [ %.9, %177 ] + switch i8 %184, label %43 [ i8 0, label %.critedge28 i8 59, label %.critedge28 i8 10, label %.critedge28 @@ -1186,14 +1183,14 @@ declare i32 @curl_strequal(ptr noundef, ptr noundef) local_unnamed_addr #2 ; Function Attrs: nounwind uwtable define internal fastcc void @altsvc_flush(ptr noundef %0, i32 noundef %1, ptr noundef %2, i16 noundef zeroext %3) unnamed_addr #1 { %5 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %6 = tail call ptr @Curl_llist_head(ptr noundef nonnull %5) #12 + %6 = tail call ptr @Curl_llist_head(ptr noundef nonnull %5) #13 %.not14 = icmp eq ptr %6, null br i1 %.not14, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %4, %hostcompare.exit.thread %.015 = phi ptr [ %8, %hostcompare.exit.thread ], [ %6, %4 ] - %7 = tail call ptr @Curl_node_elem(ptr noundef nonnull %.015) #12 - %8 = tail call ptr @Curl_node_next(ptr noundef nonnull %.015) #12 + %7 = tail call ptr @Curl_node_elem(ptr noundef nonnull %.015) #13 + %8 = tail call ptr @Curl_node_next(ptr noundef nonnull %.015) #13 %9 = getelementptr inbounds nuw i8, ptr %7, i64 12 %10 = load i32, ptr %9, align 4, !tbaa !39 %11 = icmp eq i32 %1, %10 @@ -1207,8 +1204,8 @@ define internal fastcc void @altsvc_flush(ptr noundef %0, i32 noundef %1, ptr no 16: ; preds = %12 %17 = load ptr, ptr %7, align 8, !tbaa !34 - %18 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %2) #13 - %19 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %17) #13 + %18 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %2) #14 + %19 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %17) #14 %.not.i = icmp eq i64 %18, 0 br i1 %.not.i, label %26, label %20 @@ -1227,21 +1224,21 @@ define internal fastcc void @altsvc_flush(ptr noundef %0, i32 noundef %1, ptr no br i1 %.not13.i, label %hostcompare.exit, label %hostcompare.exit.thread hostcompare.exit: ; preds = %26 - %27 = tail call i32 @curl_strnequal(ptr noundef nonnull %2, ptr noundef nonnull %17, i64 noundef %19) #12 + %27 = tail call i32 @curl_strnequal(ptr noundef nonnull %2, ptr noundef nonnull %17, i64 noundef %19) #13 %.not13 = icmp eq i32 %27, 0 br i1 %.not13, label %hostcompare.exit.thread, label %28 28: ; preds = %hostcompare.exit - tail call void @Curl_node_remove(ptr noundef nonnull %.015) #12 + tail call void @Curl_node_remove(ptr noundef nonnull %.015) #13 %29 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 %30 = load ptr, ptr %7, align 8, !tbaa !34 - tail call void %29(ptr noundef %30) #12 + tail call void %29(ptr noundef %30) #13 %31 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 %32 = getelementptr inbounds nuw i8, ptr %7, i64 16 %33 = load ptr, ptr %32, align 8, !tbaa !35 - tail call void %31(ptr noundef %33) #12 + tail call void %31(ptr noundef %33) #13 %34 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 - tail call void %34(ptr noundef nonnull %7) #12 + tail call void %34(ptr noundef nonnull %7) #13 br label %hostcompare.exit.thread hostcompare.exit.thread: ; preds = %26, %28, %hostcompare.exit, %12, %.lr.ph @@ -1265,7 +1262,7 @@ declare zeroext i16 @curlx_ultous(i64 noundef) local_unnamed_addr #2 ; Function Attrs: nounwind uwtable define internal fastcc ptr @altsvc_createid(ptr noundef %0, i64 noundef %1, ptr noundef %2, i64 noundef %3, i32 noundef %4, i32 noundef range(i32 1, 0) %5, i64 noundef %6, i64 noundef %7) unnamed_addr #1 { %9 = load ptr, ptr @Curl_ccalloc, align 8, !tbaa !3 - %10 = tail call ptr %9(i64 noundef 1, i64 noundef 80) #12 + %10 = tail call ptr %9(i64 noundef 1, i64 noundef 80) #13 %.not = icmp eq ptr %10, null br i1 %.not, label %56, label %11 @@ -1320,13 +1317,13 @@ define internal fastcc ptr @altsvc_createid(ptr noundef %0, i64 noundef %1, ptr 37: ; preds = %34, %31, %29 %.037 = phi i64 [ %36, %34 ], [ %3, %31 ], [ %3, %29 ] %.036 = phi ptr [ %35, %34 ], [ %2, %31 ], [ %2, %29 ] - %38 = tail call ptr @Curl_memdup0(ptr noundef nonnull %.034, i64 noundef %.035) #12 + %38 = tail call ptr @Curl_memdup0(ptr noundef nonnull %.034, i64 noundef %.035) #13 store ptr %38, ptr %10, align 8, !tbaa !34 %.not43 = icmp eq ptr %38, null br i1 %.not43, label %49, label %39 39: ; preds = %37 - %40 = tail call ptr @Curl_memdup0(ptr noundef %.036, i64 noundef %.037) #12 + %40 = tail call ptr @Curl_memdup0(ptr noundef %.036, i64 noundef %.037) #13 %41 = getelementptr inbounds nuw i8, ptr %10, i64 16 store ptr %40, ptr %41, align 8, !tbaa !35 %.not44 = icmp eq ptr %40, null @@ -1348,13 +1345,13 @@ define internal fastcc ptr @altsvc_createid(ptr noundef %0, i64 noundef %1, ptr 49: ; preds = %39, %37, %27, %11 %50 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 %51 = load ptr, ptr %10, align 8, !tbaa !34 - tail call void %50(ptr noundef %51) #12 + tail call void %50(ptr noundef %51) #13 %52 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 %53 = getelementptr inbounds nuw i8, ptr %10, i64 16 %54 = load ptr, ptr %53, align 8, !tbaa !35 - tail call void %52(ptr noundef %54) #12 + tail call void %52(ptr noundef %54) #13 %55 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 - tail call void %55(ptr noundef nonnull %10) #12 + tail call void %55(ptr noundef nonnull %10) #13 br label %56 56: ; preds = %8, %49, %42 @@ -1369,32 +1366,32 @@ declare void @Curl_llist_append(ptr noundef, ptr noundef, ptr noundef) local_unn ; Function Attrs: nounwind uwtable define hidden noundef zeroext i1 @Curl_altsvc_lookup(ptr noundef %0, i32 noundef %1, ptr noundef %2, i32 noundef %3, ptr noundef writeonly captures(none) %4, i32 noundef %5) local_unnamed_addr #1 { - %7 = tail call i64 @time(ptr noundef null) #12 + %7 = tail call i64 @time(ptr noundef null) #13 %8 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %9 = tail call ptr @Curl_llist_head(ptr noundef nonnull %8) #12 + %9 = tail call ptr @Curl_llist_head(ptr noundef nonnull %8) #13 %.not28.not = icmp eq ptr %9, null br i1 %.not28.not, label %.loopexit, label %.lr.ph .lr.ph: ; preds = %6, %hostcompare.exit.thread %.02129 = phi ptr [ %11, %hostcompare.exit.thread ], [ %9, %6 ] - %10 = tail call ptr @Curl_node_elem(ptr noundef nonnull %.02129) #12 - %11 = tail call ptr @Curl_node_next(ptr noundef nonnull %.02129) #12 + %10 = tail call ptr @Curl_node_elem(ptr noundef nonnull %.02129) #13 + %11 = tail call ptr @Curl_node_next(ptr noundef nonnull %.02129) #13 %12 = getelementptr inbounds nuw i8, ptr %10, i64 32 %13 = load i64, ptr %12, align 8, !tbaa !22 %14 = icmp slt i64 %13, %7 br i1 %14, label %15, label %22 15: ; preds = %.lr.ph - tail call void @Curl_node_remove(ptr noundef nonnull %.02129) #12 + tail call void @Curl_node_remove(ptr noundef nonnull %.02129) #13 %16 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 %17 = load ptr, ptr %10, align 8, !tbaa !34 - tail call void %16(ptr noundef %17) #12 + tail call void %16(ptr noundef %17) #13 %18 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 %19 = getelementptr inbounds nuw i8, ptr %10, i64 16 %20 = load ptr, ptr %19, align 8, !tbaa !35 - tail call void %18(ptr noundef %20) #12 + tail call void %18(ptr noundef %20) #13 %21 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 - tail call void %21(ptr noundef nonnull %10) #12 + tail call void %21(ptr noundef nonnull %10) #13 br label %hostcompare.exit.thread 22: ; preds = %.lr.ph @@ -1405,8 +1402,8 @@ define hidden noundef zeroext i1 @Curl_altsvc_lookup(ptr noundef %0, i32 noundef 26: ; preds = %22 %27 = load ptr, ptr %10, align 8, !tbaa !34 - %28 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %2) #13 - %29 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %27) #13 + %28 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %2) #14 + %29 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %27) #14 %.not.i = icmp eq i64 %28, 0 br i1 %.not.i, label %36, label %30 @@ -1425,7 +1422,7 @@ define hidden noundef zeroext i1 @Curl_altsvc_lookup(ptr noundef %0, i32 noundef br i1 %.not13.i, label %hostcompare.exit, label %hostcompare.exit.thread hostcompare.exit: ; preds = %36 - %37 = tail call i32 @curl_strnequal(ptr noundef nonnull %2, ptr noundef nonnull %27, i64 noundef %29) #12 + %37 = tail call i32 @curl_strnequal(ptr noundef nonnull %2, ptr noundef nonnull %27, i64 noundef %29) #13 %.not25 = icmp eq i32 %37, 0 br i1 %.not25, label %hostcompare.exit.thread, label %38 @@ -1486,11 +1483,11 @@ declare i64 @Curl_getdate_capped(ptr noundef) local_unnamed_addr #2 ; Function Attrs: nounwind uwtable define internal fastcc ptr @altsvc_create(ptr noundef nonnull readonly captures(none) %0, ptr noundef nonnull readonly captures(none) %1, ptr noundef nonnull readonly captures(none) %2, ptr %.0.val, i64 %.8.val, i64 noundef %3, i64 noundef %4) unnamed_addr #1 { - %6 = tail call i32 @Curl_alpn2alpnid(ptr noundef %.0.val, i64 noundef %.8.val) #12 + %6 = tail call i32 @Curl_alpn2alpnid(ptr noundef %.0.val, i64 noundef %.8.val) #13 %7 = load ptr, ptr %2, align 8, !tbaa !18 %8 = getelementptr inbounds nuw i8, ptr %2, i64 8 %9 = load i64, ptr %8, align 8, !tbaa !20 - %10 = tail call i32 @Curl_alpn2alpnid(ptr noundef %7, i64 noundef %9) #12 + %10 = tail call i32 @Curl_alpn2alpnid(ptr noundef %7, i64 noundef %9) #13 %11 = icmp ne i32 %10, 0 %12 = icmp ne i32 %6, 0 %or.cond = select i1 %11, i1 %12, i1 false @@ -1531,6 +1528,9 @@ declare void @llvm.lifetime.end.p0(ptr captures(none)) #10 ; Function Attrs: nofree nounwind declare noundef i64 @fwrite(ptr noundef readonly captures(none), i64 noundef, i64 noundef, ptr noundef captures(none)) local_unnamed_addr #11 +; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) +declare i64 @llvm.sadd.sat.i64(i64, i64) #12 + attributes #0 = { mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } @@ -1543,8 +1543,9 @@ attributes #8 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-siz attributes #9 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } attributes #10 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } attributes #11 = { nofree nounwind } -attributes #12 = { nounwind } -attributes #13 = { nounwind willreturn memory(read) } +attributes #12 = { nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) } +attributes #13 = { nounwind } +attributes #14 = { nounwind willreturn memory(read) } !llvm.module.flags = !{!0, !1, !2} diff --git a/bench/curl/optimized/hsts.ll b/bench/curl/optimized/hsts.ll index 05cdb0c6b27..c478a03c260 100644 --- a/bench/curl/optimized/hsts.ll +++ b/bench/curl/optimized/hsts.ll @@ -26,12 +26,12 @@ target triple = "x86_64-pc-linux-gnu" ; Function Attrs: nounwind uwtable define hidden ptr @Curl_hsts_init() local_unnamed_addr #0 { %1 = load ptr, ptr @Curl_ccalloc, align 8, !tbaa !3 - %2 = tail call ptr %1(i64 noundef 1, i64 noundef 48) #9 + %2 = tail call ptr %1(i64 noundef 1, i64 noundef 48) #10 %.not = icmp eq ptr %2, null br i1 %.not, label %4, label %3 3: ; preds = %0 - tail call void @Curl_llist_init(ptr noundef nonnull %2, ptr noundef null) #9 + tail call void @Curl_llist_init(ptr noundef nonnull %2, ptr noundef null) #10 br label %4 4: ; preds = %3, %0 @@ -47,20 +47,20 @@ define hidden void @Curl_hsts_cleanup(ptr noundef captures(none) %0) local_unnam br i1 %.not, label %15, label %3 3: ; preds = %1 - %4 = tail call ptr @Curl_llist_head(ptr noundef nonnull %2) #9 + %4 = tail call ptr @Curl_llist_head(ptr noundef nonnull %2) #10 %.not1213 = icmp eq ptr %4, null br i1 %.not1213, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %3, %.lr.ph %.014 = phi ptr [ %6, %.lr.ph ], [ %4, %3 ] - %5 = tail call ptr @Curl_node_elem(ptr noundef nonnull %.014) #9 - %6 = tail call ptr @Curl_node_next(ptr noundef nonnull %.014) #9 + %5 = tail call ptr @Curl_node_elem(ptr noundef nonnull %.014) #10 + %6 = tail call ptr @Curl_node_next(ptr noundef nonnull %.014) #10 %7 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 %8 = getelementptr inbounds nuw i8, ptr %5, i64 32 %9 = load ptr, ptr %8, align 8, !tbaa !9 - tail call void %7(ptr noundef %9) #9 + tail call void %7(ptr noundef %9) #10 %10 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 - tail call void %10(ptr noundef %5) #9 + tail call void %10(ptr noundef %5) #10 %.not12 = icmp eq ptr %6, null br i1 %.not12, label %._crit_edge, label %.lr.ph, !llvm.loop !17 @@ -68,9 +68,9 @@ define hidden void @Curl_hsts_cleanup(ptr noundef captures(none) %0) local_unnam %11 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 %12 = getelementptr inbounds nuw i8, ptr %2, i64 32 %13 = load ptr, ptr %12, align 8, !tbaa !19 - tail call void %11(ptr noundef %13) #9 + tail call void %11(ptr noundef %13) #10 %14 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 - tail call void %14(ptr noundef nonnull %2) #9 + tail call void %14(ptr noundef nonnull %2) #10 store ptr null, ptr %0, align 8, !tbaa !7 br label %15 @@ -90,9 +90,9 @@ define hidden range(i32 0, 44) i32 @Curl_hsts_parse(ptr noundef %0, ptr noundef %5 = alloca ptr, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %4) store i64 0, ptr %4, align 8, !tbaa !23 - %6 = tail call i64 @time(ptr noundef null) #9 - %7 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #10 - %8 = tail call zeroext i1 @Curl_host_is_ipnum(ptr noundef nonnull %1) #9 + %6 = tail call i64 @time(ptr noundef null) #10 + %7 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #11 + %8 = tail call zeroext i1 @Curl_host_is_ipnum(ptr noundef nonnull %1) #10 br i1 %8, label %.loopexit, label %.preheader117 .preheader117: ; preds = %3, %.critedge14 @@ -115,7 +115,7 @@ define hidden range(i32 0, 44) i32 @Curl_hsts_parse(ptr noundef %0, ptr noundef br label %9, !llvm.loop !25 .critedge: ; preds = %9 - %12 = call i32 @curl_strnequal(ptr noundef nonnull @.str, ptr noundef nonnull %.180, i64 noundef 7) #9 + %12 = call i32 @curl_strnequal(ptr noundef nonnull @.str, ptr noundef nonnull %.180, i64 noundef 7) #10 %.not99 = icmp eq i32 %12, 0 br i1 %.not99, label %32, label %13 @@ -157,7 +157,7 @@ define hidden range(i32 0, 44) i32 @Curl_hsts_parse(ptr noundef %0, ptr noundef %21 = icmp eq i8 %20, 34 %22 = getelementptr inbounds nuw i8, ptr %.382.pn, i64 2 %spec.select = select i1 %21, ptr %22, ptr %.4 - %23 = call i32 @curlx_strtoofft(ptr noundef nonnull %spec.select, ptr noundef nonnull %5, i32 noundef 10, ptr noundef nonnull %4) #9 + %23 = call i32 @curlx_strtoofft(ptr noundef nonnull %spec.select, ptr noundef nonnull %5, i32 noundef 10, ptr noundef nonnull %4) #10 switch i32 %23, label %.critedge114 [ i32 1, label %24 i32 0, label %25 @@ -186,7 +186,7 @@ define hidden range(i32 0, 44) i32 @Curl_hsts_parse(ptr noundef %0, ptr noundef br label %.critedge12 32: ; preds = %.critedge - %33 = call i32 @curl_strnequal(ptr noundef nonnull @.str.1, ptr noundef nonnull %.180, i64 noundef 17) #9 + %33 = call i32 @curl_strnequal(ptr noundef nonnull @.str.1, ptr noundef nonnull %.180, i64 noundef 17) #10 %.not100 = icmp eq i32 %33, 0 br i1 %.not100, label %.preheader, label %34 @@ -251,45 +251,42 @@ define hidden range(i32 0, 44) i32 @Curl_hsts_parse(ptr noundef %0, ptr noundef br i1 %.not111, label %.loopexit, label %51 51: ; preds = %49 - call void @Curl_node_remove(ptr noundef nonnull %50) #9 + call void @Curl_node_remove(ptr noundef nonnull %50) #10 %52 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 %53 = getelementptr inbounds nuw i8, ptr %50, i64 32 %54 = load ptr, ptr %53, align 8, !tbaa !9 - call void %52(ptr noundef %54) #9 + call void %52(ptr noundef %54) #10 %55 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 - call void %55(ptr noundef nonnull %50) #9 + call void %55(ptr noundef nonnull %50) #10 br label %.loopexit 56: ; preds = %47 - %57 = sub nsw i64 9223372036854775807, %6 - %58 = icmp slt i64 %57, %48 - %59 = add nsw i64 %48, %6 - %storemerge = select i1 %58, i64 9223372036854775807, i64 %59 + %storemerge = call i64 @llvm.sadd.sat.i64(i64 %6, i64 %48) store i64 %storemerge, ptr %4, align 8, !tbaa !23 - %60 = call ptr @Curl_hsts(ptr noundef %0, ptr noundef nonnull %1, i64 noundef %7, i1 noundef zeroext false) - %.not112 = icmp eq ptr %60, null - br i1 %.not112, label %65, label %61 - -61: ; preds = %56 - %62 = load i64, ptr %4, align 8, !tbaa !23 - %63 = getelementptr inbounds nuw i8, ptr %60, i64 48 - store i64 %62, ptr %63, align 8, !tbaa !32 - %64 = getelementptr inbounds nuw i8, ptr %60, i64 40 - store i8 %.187, ptr %64, align 8, !tbaa !33 + %57 = call ptr @Curl_hsts(ptr noundef %0, ptr noundef nonnull %1, i64 noundef %7, i1 noundef zeroext false) + %.not112 = icmp eq ptr %57, null + br i1 %.not112, label %62, label %58 + +58: ; preds = %56 + %59 = load i64, ptr %4, align 8, !tbaa !23 + %60 = getelementptr inbounds nuw i8, ptr %57, i64 48 + store i64 %59, ptr %60, align 8, !tbaa !32 + %61 = getelementptr inbounds nuw i8, ptr %57, i64 40 + store i8 %.187, ptr %61, align 8, !tbaa !33 br label %.loopexit -65: ; preds = %56 - %66 = trunc nuw i8 %.187 to i1 - %67 = load i64, ptr %4, align 8, !tbaa !23 - %68 = call fastcc i32 @hsts_create(ptr noundef %0, ptr noundef nonnull %1, i64 noundef %7, i1 noundef zeroext %66, i64 noundef %67) +62: ; preds = %56 + %63 = trunc nuw i8 %.187 to i1 + %64 = load i64, ptr %4, align 8, !tbaa !23 + %65 = call fastcc i32 @hsts_create(ptr noundef %0, ptr noundef nonnull %1, i64 noundef %7, i1 noundef zeroext %63, i64 noundef %64) br label %.loopexit .critedge114: ; preds = %27, %.critedge8, %13, %17 call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %.loopexit -.loopexit: ; preds = %34, %49, %51, %45, %.critedge114, %3, %61, %65 - %.0 = phi i32 [ 0, %61 ], [ %68, %65 ], [ 0, %3 ], [ 43, %.critedge114 ], [ 43, %45 ], [ 0, %51 ], [ 0, %49 ], [ 43, %34 ] +.loopexit: ; preds = %34, %49, %51, %45, %.critedge114, %3, %58, %62 + %.0 = phi i32 [ 0, %58 ], [ %65, %62 ], [ 0, %3 ], [ 43, %.critedge114 ], [ 43, %45 ], [ 0, %51 ], [ 0, %49 ], [ 43, %34 ] call void @llvm.lifetime.end.p0(ptr nonnull %4) ret i32 %.0 } @@ -312,7 +309,7 @@ define hidden ptr @Curl_hsts(ptr noundef %0, ptr noundef %1, i64 noundef %2, i1 br i1 %.not, label %.thread74, label %5 5: ; preds = %4 - %6 = tail call i64 @time(ptr noundef null) #9 + %6 = tail call i64 @time(ptr noundef null) #10 %7 = add i64 %2, -1 %or.cond = icmp ult i64 %7, 2048 br i1 %or.cond, label %8, label %.thread74 @@ -323,7 +320,7 @@ define hidden ptr @Curl_hsts(ptr noundef %0, ptr noundef %1, i64 noundef %2, i1 %11 = load i8, ptr %10, align 1, !tbaa !24 %12 = icmp eq i8 %11, 46 %spec.select = select i1 %12, i64 %7, i64 %2 - %13 = tail call ptr @Curl_llist_head(ptr noundef nonnull %0) #9 + %13 = tail call ptr @Curl_llist_head(ptr noundef nonnull %0) #10 %.not5779 = icmp eq ptr %13, null br i1 %.not5779, label %.thread74, label %.lr.ph @@ -334,27 +331,27 @@ define hidden ptr @Curl_hsts(ptr noundef %0, ptr noundef %1, i64 noundef %2, i1 %.24582.us = phi ptr [ %.346.ph.us, %45 ], [ null, %.lr.ph ] %.04981.us = phi i64 [ %.150.ph.us, %45 ], [ 0, %.lr.ph ] %.05380.us = phi ptr [ %15, %45 ], [ %13, %.lr.ph ] - %14 = tail call ptr @Curl_node_elem(ptr noundef nonnull %.05380.us) #9 - %15 = tail call ptr @Curl_node_next(ptr noundef nonnull %.05380.us) #9 + %14 = tail call ptr @Curl_node_elem(ptr noundef nonnull %.05380.us) #10 + %15 = tail call ptr @Curl_node_next(ptr noundef nonnull %.05380.us) #10 %16 = getelementptr inbounds nuw i8, ptr %14, i64 48 %17 = load i64, ptr %16, align 8, !tbaa !32 %.not58.us = icmp sgt i64 %17, %6 br i1 %.not58.us, label %23, label %18 18: ; preds = %.lr.ph.split.us - tail call void @Curl_node_remove(ptr noundef nonnull %14) #9 + tail call void @Curl_node_remove(ptr noundef nonnull %14) #10 %19 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 %20 = getelementptr inbounds nuw i8, ptr %14, i64 32 %21 = load ptr, ptr %20, align 8, !tbaa !9 - tail call void %19(ptr noundef %21) #9 + tail call void %19(ptr noundef %21) #10 %22 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 - tail call void %22(ptr noundef nonnull %14) #9 + tail call void %22(ptr noundef nonnull %14) #10 br label %45 23: ; preds = %.lr.ph.split.us %24 = getelementptr inbounds nuw i8, ptr %14, i64 32 %25 = load ptr, ptr %24, align 8, !tbaa !9 - %26 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %25) #10 + %26 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %25) #11 %27 = getelementptr inbounds nuw i8, ptr %14, i64 40 %28 = load i8, ptr %27, align 8, !tbaa !33, !range !34, !noundef !35 %29 = trunc nuw i8 %28 to i1 @@ -371,7 +368,7 @@ define hidden ptr @Curl_hsts(ptr noundef %0, ptr noundef %1, i64 noundef %2, i1 br i1 %36, label %37, label %40 37: ; preds = %31 - %38 = tail call i32 @curl_strnequal(ptr noundef %33, ptr noundef nonnull %25, i64 noundef %26) #9 + %38 = tail call i32 @curl_strnequal(ptr noundef %33, ptr noundef nonnull %25, i64 noundef %26) #10 %.not59.us = icmp ne i32 %38, 0 %39 = icmp ugt i64 %26, %.04981.us %or.cond62.us = select i1 %.not59.us, i1 %39, i1 false @@ -387,7 +384,7 @@ define hidden ptr @Curl_hsts(ptr noundef %0, ptr noundef %1, i64 noundef %2, i1 42: ; preds = %40 %43 = load ptr, ptr %24, align 8, !tbaa !9 - %44 = tail call i32 @curl_strnequal(ptr noundef %1, ptr noundef %43, i64 noundef %spec.select) #9 + %44 = tail call i32 @curl_strnequal(ptr noundef %1, ptr noundef %43, i64 noundef %spec.select) #10 %.not60.us = icmp eq i32 %44, 0 br i1 %.not60.us, label %45, label %.thread74 @@ -399,32 +396,32 @@ define hidden ptr @Curl_hsts(ptr noundef %0, ptr noundef %1, i64 noundef %2, i1 .lr.ph.split: ; preds = %.lr.ph, %62 %.05380 = phi ptr [ %47, %62 ], [ %13, %.lr.ph ] - %46 = tail call ptr @Curl_node_elem(ptr noundef nonnull %.05380) #9 - %47 = tail call ptr @Curl_node_next(ptr noundef nonnull %.05380) #9 + %46 = tail call ptr @Curl_node_elem(ptr noundef nonnull %.05380) #10 + %47 = tail call ptr @Curl_node_next(ptr noundef nonnull %.05380) #10 %48 = getelementptr inbounds nuw i8, ptr %46, i64 48 %49 = load i64, ptr %48, align 8, !tbaa !32 %.not58 = icmp sgt i64 %49, %6 br i1 %.not58, label %55, label %50 50: ; preds = %.lr.ph.split - tail call void @Curl_node_remove(ptr noundef nonnull %46) #9 + tail call void @Curl_node_remove(ptr noundef nonnull %46) #10 %51 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 %52 = getelementptr inbounds nuw i8, ptr %46, i64 32 %53 = load ptr, ptr %52, align 8, !tbaa !9 - tail call void %51(ptr noundef %53) #9 + tail call void %51(ptr noundef %53) #10 %54 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 - tail call void %54(ptr noundef nonnull %46) #9 + tail call void %54(ptr noundef nonnull %46) #10 br label %62 55: ; preds = %.lr.ph.split %56 = getelementptr inbounds nuw i8, ptr %46, i64 32 %57 = load ptr, ptr %56, align 8, !tbaa !9 - %58 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %57) #10 + %58 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %57) #11 %59 = icmp eq i64 %spec.select, %58 br i1 %59, label %60, label %62 60: ; preds = %55 - %61 = tail call i32 @curl_strnequal(ptr noundef %1, ptr noundef nonnull %57, i64 noundef %spec.select) #9 + %61 = tail call i32 @curl_strnequal(ptr noundef %1, ptr noundef nonnull %57, i64 noundef %spec.select) #10 %.not60 = icmp eq i32 %61, 0 br i1 %.not60, label %62, label %.thread74 @@ -460,18 +457,18 @@ define internal fastcc range(i32 0, 28) i32 @hsts_create(ptr noundef %0, ptr nou .thread31: ; preds = %7, %12 %.02134 = phi i64 [ %13, %12 ], [ %2, %7 ] %14 = load ptr, ptr @Curl_ccalloc, align 8, !tbaa !3 - %15 = tail call ptr %14(i64 noundef 1, i64 noundef 56) #9 + %15 = tail call ptr %14(i64 noundef 1, i64 noundef 56) #10 %.not27 = icmp eq ptr %15, null br i1 %.not27, label %.thread, label %16 16: ; preds = %.thread31 - %17 = tail call ptr @Curl_memdup0(ptr noundef nonnull %1, i64 noundef %.02134) #9 + %17 = tail call ptr @Curl_memdup0(ptr noundef nonnull %1, i64 noundef %.02134) #10 %.not28 = icmp eq ptr %17, null br i1 %.not28, label %18, label %20 18: ; preds = %16 %19 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 - tail call void %19(ptr noundef nonnull %15) #9 + tail call void %19(ptr noundef nonnull %15) #10 br label %.thread 20: ; preds = %16 @@ -481,7 +478,7 @@ define internal fastcc range(i32 0, 28) i32 @hsts_create(ptr noundef %0, ptr nou store i64 %4, ptr %22, align 8, !tbaa !32 %23 = getelementptr inbounds nuw i8, ptr %15, i64 40 store i8 %6, ptr %23, align 8, !tbaa !33 - tail call void @Curl_llist_append(ptr noundef %0, ptr noundef nonnull %15, ptr noundef nonnull %15) #9 + tail call void @Curl_llist_append(ptr noundef %0, ptr noundef nonnull %15, ptr noundef nonnull %15) #10 br label %.thread .thread: ; preds = %.thread31, %18, %5, %12, %20 @@ -528,14 +525,14 @@ define hidden i32 @Curl_hsts_save(ptr noundef %0, ptr noundef %1, ptr noundef %2 br i1 %.not56, label %81, label %22 22: ; preds = %20 - %23 = call i32 @Curl_fopen(ptr noundef %0, ptr noundef nonnull %.040, ptr noundef nonnull %7, ptr noundef nonnull %8) #9 + %23 = call i32 @Curl_fopen(ptr noundef %0, ptr noundef nonnull %.040, ptr noundef nonnull %7, ptr noundef nonnull %8) #10 %.not57 = icmp eq i32 %23, 0 br i1 %.not57, label %24, label %78 24: ; preds = %22 %25 = load ptr, ptr %7, align 8, !tbaa !38 %26 = call i64 @fwrite(ptr nonnull @.str.2, i64 111, i64 1, ptr %25) - %27 = call ptr @Curl_llist_head(ptr noundef nonnull %1) #9 + %27 = call ptr @Curl_llist_head(ptr noundef nonnull %1) #10 %.not5879 = icmp eq ptr %27, null br i1 %.not5879, label %.loopexit, label %.lr.ph @@ -549,8 +546,8 @@ define hidden i32 @Curl_hsts_save(ptr noundef %0, ptr noundef %1, ptr noundef %2 33: ; preds = %.lr.ph, %hsts_out.exit %.04480 = phi ptr [ %27, %.lr.ph ], [ %35, %hsts_out.exit ] - %34 = call ptr @Curl_node_elem(ptr noundef nonnull %.04480) #9 - %35 = call ptr @Curl_node_next(ptr noundef nonnull %.04480) #9 + %34 = call ptr @Curl_node_elem(ptr noundef nonnull %.04480) #10 + %35 = call ptr @Curl_node_next(ptr noundef nonnull %.04480) #10 %36 = load ptr, ptr %7, align 8, !tbaa !38 call void @llvm.lifetime.start.p0(ptr nonnull %6) %37 = getelementptr inbounds nuw i8, ptr %34, i64 48 @@ -559,7 +556,7 @@ define hidden i32 @Curl_hsts_save(ptr noundef %0, ptr noundef %1, ptr noundef %2 br i1 %.not.i, label %57, label %39 39: ; preds = %33 - %40 = call i32 @Curl_gmtime(i64 noundef %38, ptr noundef nonnull %6) #9 + %40 = call i32 @Curl_gmtime(i64 noundef %38, ptr noundef nonnull %6) #10 %.not13.i = icmp eq i32 %40, 0 br i1 %.not13.i, label %41, label %hsts_out.exit.thread @@ -582,7 +579,7 @@ hsts_out.exit.thread: ; preds = %39 %53 = load i32, ptr %31, align 8, !tbaa !44 %54 = load i32, ptr %32, align 4, !tbaa !45 %55 = load i32, ptr %6, align 8, !tbaa !46 - %56 = call i32 (ptr, ptr, ...) @curl_mfprintf(ptr noundef %36, ptr noundef nonnull @.str.3, ptr noundef nonnull %45, ptr noundef %47, i32 noundef %49, i32 noundef %51, i32 noundef %52, i32 noundef %53, i32 noundef %54, i32 noundef %55) #9 + %56 = call i32 (ptr, ptr, ...) @curl_mfprintf(ptr noundef %36, ptr noundef nonnull @.str.3, ptr noundef nonnull %45, ptr noundef %47, i32 noundef %49, i32 noundef %51, i32 noundef %52, i32 noundef %53, i32 noundef %54, i32 noundef %55) #10 br label %hsts_out.exit 57: ; preds = %33 @@ -592,7 +589,7 @@ hsts_out.exit.thread: ; preds = %39 %61 = select i1 %60, ptr @.str.4, ptr @.str.5 %62 = getelementptr inbounds nuw i8, ptr %34, i64 32 %63 = load ptr, ptr %62, align 8, !tbaa !9 - %64 = call i32 (ptr, ptr, ...) @curl_mfprintf(ptr noundef %36, ptr noundef nonnull @.str.6, ptr noundef nonnull %61, ptr noundef %63, ptr noundef nonnull @.str.7) #9 + %64 = call i32 (ptr, ptr, ...) @curl_mfprintf(ptr noundef %36, ptr noundef nonnull @.str.6, ptr noundef nonnull %61, ptr noundef %63, ptr noundef nonnull @.str.7) #10 br label %hsts_out.exit hsts_out.exit: ; preds = %41, %57 @@ -611,7 +608,7 @@ hsts_out.exit: ; preds = %41, %57 br i1 %or.cond3, label %70, label %72 70: ; preds = %.loopexit - %71 = call i32 @Curl_rename(ptr noundef nonnull %68, ptr noundef nonnull %.040) #9 + %71 = call i32 @Curl_rename(ptr noundef nonnull %68, ptr noundef nonnull %.040) #10 %.not60 = icmp eq i32 %71, 0 %spec.select63 = select i1 %.not60, i32 0, i32 23 %.pre = load ptr, ptr %8, align 8 @@ -626,14 +623,14 @@ hsts_out.exit: ; preds = %41, %57 br i1 %or.cond5, label %76, label %78 76: ; preds = %72 - %77 = call i32 @unlink(ptr noundef nonnull %73) #9 + %77 = call i32 @unlink(ptr noundef nonnull %73) #10 br label %78 78: ; preds = %72, %76, %22 %.143 = phi i32 [ %23, %22 ], [ %.4, %76 ], [ %.4, %72 ] %79 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 %80 = load ptr, ptr %8, align 8, !tbaa !28 - call void %79(ptr noundef %80) #9 + call void %79(ptr noundef %80) #10 br label %81 81: ; preds = %14, %20, %78 @@ -645,11 +642,11 @@ hsts_out.exit: ; preds = %41, %57 84: ; preds = %81 call void @llvm.lifetime.start.p0(ptr nonnull %9) - %85 = call i64 @Curl_llist_count(ptr noundef nonnull %1) #9 + %85 = call i64 @Curl_llist_count(ptr noundef nonnull %1) #10 %86 = getelementptr inbounds nuw i8, ptr %9, i64 8 store i64 %85, ptr %86, align 8, !tbaa !107 store i64 0, ptr %9, align 8, !tbaa !109 - %87 = call ptr @Curl_llist_head(ptr noundef nonnull %1) #9 + %87 = call ptr @Curl_llist_head(ptr noundef nonnull %1) #10 %.not6285 = icmp eq ptr %87, null br i1 %.not6285, label %.thread, label %.lr.ph87 @@ -667,14 +664,14 @@ hsts_out.exit: ; preds = %41, %57 97: ; preds = %.lr.ph87, %123 %.14586 = phi ptr [ %87, %.lr.ph87 ], [ %99, %123 ] - %98 = call ptr @Curl_node_elem(ptr noundef nonnull %.14586) #9 - %99 = call ptr @Curl_node_next(ptr noundef nonnull %.14586) #9 + %98 = call ptr @Curl_node_elem(ptr noundef nonnull %.14586) #10 + %99 = call ptr @Curl_node_next(ptr noundef nonnull %.14586) #10 call void @llvm.lifetime.start.p0(ptr nonnull %4) call void @llvm.lifetime.start.p0(ptr nonnull %5) %100 = getelementptr inbounds nuw i8, ptr %98, i64 32 %101 = load ptr, ptr %100, align 8, !tbaa !9 store ptr %101, ptr %4, align 8, !tbaa !110 - %102 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %101) #10 + %102 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %101) #11 store i64 %102, ptr %88, align 8, !tbaa !112 %103 = getelementptr inbounds nuw i8, ptr %98, i64 40 %104 = load i8, ptr %103, align 8, !tbaa !33, !range !34, !noundef !35 @@ -685,7 +682,7 @@ hsts_out.exit: ; preds = %41, %57 br i1 %.not.i64, label %119, label %107 107: ; preds = %97 - %108 = call i32 @Curl_gmtime(i64 noundef %106, ptr noundef nonnull %5) #9 + %108 = call i32 @Curl_gmtime(i64 noundef %106, ptr noundef nonnull %5) #10 %.not16.i = icmp eq i32 %108, 0 br i1 %.not16.i, label %109, label %hsts_push.exit.thread @@ -703,17 +700,17 @@ hsts_push.exit.thread: ; preds = %107 %115 = load i32, ptr %94, align 8, !tbaa !44 %116 = load i32, ptr %95, align 4, !tbaa !45 %117 = load i32, ptr %5, align 8, !tbaa !46 - %118 = call i32 (ptr, i64, ptr, ...) @curl_msnprintf(ptr noundef nonnull %90, i64 noundef 18, ptr noundef nonnull @.str.8, i32 noundef %111, i32 noundef %113, i32 noundef %114, i32 noundef %115, i32 noundef %116, i32 noundef %117) #9 + %118 = call i32 (ptr, i64, ptr, ...) @curl_msnprintf(ptr noundef nonnull %90, i64 noundef 18, ptr noundef nonnull @.str.8, i32 noundef %111, i32 noundef %113, i32 noundef %114, i32 noundef %115, i32 noundef %116, i32 noundef %117) #10 br label %hsts_push.exit 119: ; preds = %97 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(10) %90, ptr noundef nonnull align 1 dereferenceable(10) @.str.7, i64 10, i1 false) #9 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(10) %90, ptr noundef nonnull align 1 dereferenceable(10) @.str.7, i64 10, i1 false) #10 br label %hsts_push.exit hsts_push.exit: ; preds = %109, %119 %120 = load ptr, ptr %82, align 8, !tbaa !47 %121 = load ptr, ptr %96, align 8, !tbaa !113 - %122 = call i32 %120(ptr noundef nonnull %0, ptr noundef nonnull %4, ptr noundef nonnull %9, ptr noundef %121) #9 + %122 = call i32 %120(ptr noundef nonnull %0, ptr noundef nonnull %4, ptr noundef nonnull %9, ptr noundef %121) #10 %.not77 = icmp eq i32 %122, 0 call void @llvm.lifetime.end.p0(ptr nonnull %5) call void @llvm.lifetime.end.p0(ptr nonnull %4) @@ -765,9 +762,9 @@ define hidden range(i32 0, 28) i32 @Curl_hsts_loadfile(ptr readnone captures(non %9 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 %10 = getelementptr inbounds nuw i8, ptr %1, i64 32 %11 = load ptr, ptr %10, align 8, !tbaa !19 - tail call void %9(ptr noundef %11) #9 + tail call void %9(ptr noundef %11) #10 %12 = load ptr, ptr @Curl_cstrdup, align 8, !tbaa !3 - %13 = tail call ptr %12(ptr noundef %2) #9 + %13 = tail call ptr %12(ptr noundef %2) #10 store ptr %13, ptr %10, align 8, !tbaa !19 %.not.i = icmp eq ptr %13, null br i1 %.not.i, label %hsts_load.exit, label %14 @@ -779,8 +776,8 @@ define hidden range(i32 0, 28) i32 @Curl_hsts_loadfile(ptr readnone captures(non 16: ; preds = %14 call void @llvm.lifetime.start.p0(ptr nonnull %8) - call void @Curl_dyn_init(ptr noundef nonnull %8, i64 noundef 4095) #9 - %17 = call i32 @Curl_get_line(ptr noundef nonnull %8, ptr noundef nonnull %15) #9 + call void @Curl_dyn_init(ptr noundef nonnull %8, i64 noundef 4095) #10 + %17 = call i32 @Curl_get_line(ptr noundef nonnull %8, ptr noundef nonnull %15) #10 %.not2333.i = icmp eq i32 %17, 0 br i1 %.not2333.i, label %._crit_edge.i, label %.lr.ph.i @@ -790,7 +787,7 @@ define hidden range(i32 0, 28) i32 @Curl_hsts_loadfile(ptr readnone captures(non br label %19 19: ; preds = %.loopexit.i, %.lr.ph.i - %20 = call ptr @Curl_dyn_ptr(ptr noundef nonnull %8) #9 + %20 = call ptr @Curl_dyn_ptr(ptr noundef nonnull %8) #10 br label %21 21: ; preds = %.critedge2.i, %19 @@ -807,7 +804,7 @@ define hidden range(i32 0, 28) i32 @Curl_hsts_loadfile(ptr readnone captures(non br label %21, !llvm.loop !115 24: ; preds = %21 - %25 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.0.i) #10 + %25 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.0.i) #11 %26 = icmp ult i64 %25, 2 br i1 %26, label %.loopexit.i, label %27, !llvm.loop !116 @@ -816,22 +813,22 @@ define hidden range(i32 0, 28) i32 @Curl_hsts_loadfile(ptr readnone captures(non store ptr %.0.i, ptr %4, align 8, !tbaa !28 call void @llvm.lifetime.start.p0(ptr nonnull %5) call void @llvm.lifetime.start.p0(ptr nonnull %6) - %28 = call i32 @Curl_str_word(ptr noundef nonnull %4, ptr noundef nonnull %5, i64 noundef 2048) #9 + %28 = call i32 @Curl_str_word(ptr noundef nonnull %4, ptr noundef nonnull %5, i64 noundef 2048) #10 %.not.i.i = icmp eq i32 %28, 0 br i1 %.not.i.i, label %29, label %hsts_add.exit.i 29: ; preds = %27 - %30 = call i32 @Curl_str_singlespace(ptr noundef nonnull %4) #9 + %30 = call i32 @Curl_str_singlespace(ptr noundef nonnull %4) #10 %.not21.i.i = icmp eq i32 %30, 0 br i1 %.not21.i.i, label %31, label %hsts_add.exit.i 31: ; preds = %29 - %32 = call i32 @Curl_str_quotedword(ptr noundef nonnull %4, ptr noundef nonnull %6, i64 noundef 256) #9 + %32 = call i32 @Curl_str_quotedword(ptr noundef nonnull %4, ptr noundef nonnull %6, i64 noundef 256) #10 %.not22.i.i = icmp eq i32 %32, 0 br i1 %.not22.i.i, label %33, label %hsts_add.exit.i 33: ; preds = %31 - %34 = call i32 @Curl_str_newline(ptr noundef nonnull %4) #9 + %34 = call i32 @Curl_str_newline(ptr noundef nonnull %4) #10 %.not23.i.i = icmp eq i32 %34, 0 br i1 %.not23.i.i, label %35, label %hsts_add.exit.i @@ -847,7 +844,7 @@ define hidden range(i32 0, 28) i32 @Curl_hsts_loadfile(ptr readnone captures(non br i1 %.not24.i.i, label %41, label %39 39: ; preds = %35 - %40 = call i64 @Curl_getdate_capped(ptr noundef nonnull %7) #9 + %40 = call i64 @Curl_getdate_capped(ptr noundef nonnull %7) #10 br label %41 41: ; preds = %39, %35 @@ -879,14 +876,14 @@ define hidden range(i32 0, 28) i32 @Curl_hsts_loadfile(ptr readnone captures(non 54: ; preds = %50 %55 = getelementptr inbounds nuw i8, ptr %53, i64 32 %56 = load ptr, ptr %55, align 8, !tbaa !9 - %57 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %56) #10 + %57 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %56) #11 %58 = load i64, ptr %.phi.trans.insert.i.i, align 8, !tbaa !119 %59 = icmp eq i64 %57, %58 br i1 %59, label %60, label %hsts_add.exit.sink.split.i 60: ; preds = %54 %61 = load ptr, ptr %5, align 8, !tbaa !117 - %62 = call i32 @curl_strnequal(ptr noundef %61, ptr noundef nonnull %56, i64 noundef %57) #9 + %62 = call i32 @curl_strnequal(ptr noundef %61, ptr noundef nonnull %56, i64 noundef %57) #10 %.not26.i.i = icmp eq i32 %62, 0 br i1 %.not26.i.i, label %hsts_add.exit.sink.split.i, label %63 @@ -922,18 +919,18 @@ define hidden range(i32 0, 28) i32 @Curl_hsts_loadfile(ptr readnone captures(non .thread31.i.i: ; preds = %77, %72 %.02134.i.i = phi i64 [ %78, %77 ], [ %70, %72 ] %79 = load ptr, ptr @Curl_ccalloc, align 8, !tbaa !3 - %80 = call ptr %79(i64 noundef 1, i64 noundef 56) #9 + %80 = call ptr %79(i64 noundef 1, i64 noundef 56) #10 %.not27.i26.i = icmp eq ptr %80, null br i1 %.not27.i26.i, label %hsts_add.exit.sink.split.i, label %81 81: ; preds = %.thread31.i.i - %82 = call ptr @Curl_memdup0(ptr noundef nonnull %69, i64 noundef %.02134.i.i) #9 + %82 = call ptr @Curl_memdup0(ptr noundef nonnull %69, i64 noundef %.02134.i.i) #10 %.not28.i.i = icmp eq ptr %82, null br i1 %.not28.i.i, label %83, label %85 83: ; preds = %81 %84 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 - call void %84(ptr noundef nonnull %80) #9 + call void %84(ptr noundef nonnull %80) #10 br label %hsts_add.exit.sink.split.i 85: ; preds = %81 @@ -943,7 +940,7 @@ define hidden range(i32 0, 28) i32 @Curl_hsts_loadfile(ptr readnone captures(non store i64 %42, ptr %87, align 8, !tbaa !32 %88 = getelementptr inbounds nuw i8, ptr %80, i64 40 store i8 %71, ptr %88, align 8, !tbaa !33 - call void @Curl_llist_append(ptr noundef %1, ptr noundef nonnull %80, ptr noundef nonnull %80) #9 + call void @Curl_llist_append(ptr noundef %1, ptr noundef nonnull %80, ptr noundef nonnull %80) #10 br label %hsts_add.exit.sink.split.i hsts_add.exit.sink.split.i: ; preds = %85, %83, %.thread31.i.i, %77, %68, %67, %63, %60, %54 @@ -957,12 +954,12 @@ hsts_add.exit.i: ; preds = %hsts_add.exit.sink. br label %.loopexit.i .loopexit.i: ; preds = %21, %hsts_add.exit.i, %24 - %89 = call i32 @Curl_get_line(ptr noundef nonnull %8, ptr noundef nonnull %15) #9 + %89 = call i32 @Curl_get_line(ptr noundef nonnull %8, ptr noundef nonnull %15) #10 %.not23.i = icmp eq i32 %89, 0 br i1 %.not23.i, label %._crit_edge.i, label %19 ._crit_edge.i: ; preds = %.loopexit.i, %16 - call void @Curl_dyn_free(ptr noundef nonnull %8) #9 + call void @Curl_dyn_free(ptr noundef nonnull %8) #10 %90 = call i32 @fclose(ptr noundef nonnull %15) call void @llvm.lifetime.end.p0(ptr nonnull %8) br label %hsts_load.exit @@ -1004,7 +1001,7 @@ define hidden range(i32 0, 44) i32 @Curl_hsts_loadcb(ptr noundef %0, ptr noundef store i8 0, ptr %10, align 1, !tbaa !24 store i8 0, ptr %3, align 16, !tbaa !24 %16 = load ptr, ptr %11, align 8, !tbaa !121 - %17 = call i32 %13(ptr noundef nonnull %0, ptr noundef nonnull %4, ptr noundef %16) #9 + %17 = call i32 %13(ptr noundef nonnull %0, ptr noundef nonnull %4, ptr noundef %16) #10 switch i32 %17, label %.thread45.sink.split.i.loopexit [ i32 0, label %18 i32 2, label %.thread45.sink.split.i @@ -1022,14 +1019,14 @@ define hidden range(i32 0, 44) i32 @Curl_hsts_loadcb(ptr noundef %0, ptr noundef br i1 %.not22.i, label %25, label %23 23: ; preds = %21 - %24 = call i64 @Curl_getdate_capped(ptr noundef nonnull %10) #9 + %24 = call i64 @Curl_getdate_capped(ptr noundef nonnull %10) #10 %.pre49.i = load ptr, ptr %4, align 8, !tbaa !110 br label %25 25: ; preds = %23, %21 %26 = phi ptr [ %.pre49.i, %23 ], [ %19, %21 ] %.018.i = phi i64 [ %24, %23 ], [ 9223372036854775807, %21 ] - %27 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %26) #10 + %27 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %26) #11 %28 = load i8, ptr %9, align 8 %29 = and i8 %28, 1 %.not.i.i = icmp eq i64 %27, 0 @@ -1050,18 +1047,18 @@ define hidden range(i32 0, 44) i32 @Curl_hsts_loadcb(ptr noundef %0, ptr noundef .thread31.i.i: ; preds = %35, %30 %.02134.i.i = phi i64 [ %36, %35 ], [ %27, %30 ] %37 = load ptr, ptr @Curl_ccalloc, align 8, !tbaa !3 - %38 = call ptr %37(i64 noundef 1, i64 noundef 56) #9 + %38 = call ptr %37(i64 noundef 1, i64 noundef 56) #10 %.not27.i.i = icmp eq ptr %38, null br i1 %.not27.i.i, label %.thread45.sink.split.i, label %39 39: ; preds = %.thread31.i.i - %40 = call ptr @Curl_memdup0(ptr noundef nonnull %26, i64 noundef %.02134.i.i) #9 + %40 = call ptr @Curl_memdup0(ptr noundef nonnull %26, i64 noundef %.02134.i.i) #10 %.not28.i.i = icmp eq ptr %40, null br i1 %.not28.i.i, label %41, label %43 41: ; preds = %39 %42 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 - call void %42(ptr noundef nonnull %38) #9 + call void %42(ptr noundef nonnull %38) #10 br label %.thread45.sink.split.i 43: ; preds = %39 @@ -1071,7 +1068,7 @@ define hidden range(i32 0, 44) i32 @Curl_hsts_loadcb(ptr noundef %0, ptr noundef store i64 %.018.i, ptr %45, align 8, !tbaa !32 %46 = getelementptr inbounds nuw i8, ptr %38, i64 40 store i8 %29, ptr %46, align 8, !tbaa !33 - call void @Curl_llist_append(ptr noundef nonnull %1, ptr noundef nonnull %38, ptr noundef nonnull %38) #9 + call void @Curl_llist_append(ptr noundef nonnull %1, ptr noundef nonnull %38, ptr noundef nonnull %38) #10 br label %47 47: ; preds = %43, %35, %25 @@ -1103,7 +1100,7 @@ define hidden void @Curl_hsts_loadfiles(ptr noundef %0) local_unnamed_addr #0 { br i1 %.not, label %15, label %4 4: ; preds = %1 - %5 = tail call i32 @Curl_share_lock(ptr noundef nonnull %0, i32 noundef 7, i32 noundef 2) #9 + %5 = tail call i32 @Curl_share_lock(ptr noundef nonnull %0, i32 noundef 7, i32 noundef 2) #10 %6 = getelementptr inbounds nuw i8, ptr %0, i64 2680 br label %7 @@ -1118,7 +1115,7 @@ define hidden void @Curl_hsts_loadfiles(ptr noundef %0) local_unnamed_addr #0 { br i1 %.not10, label %13, label %7, !llvm.loop !127 13: ; preds = %7 - %14 = tail call i32 @Curl_share_unlock(ptr noundef nonnull %0, i32 noundef 7) #9 + %14 = tail call i32 @Curl_share_unlock(ptr noundef nonnull %0, i32 noundef 7) #10 br label %15 15: ; preds = %13, %1 @@ -1175,6 +1172,9 @@ declare noundef i64 @fwrite(ptr noundef readonly captures(none), i64 noundef, i6 ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: read) declare i32 @bcmp(ptr captures(none), ptr captures(none), i64) local_unnamed_addr #8 +; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) +declare i64 @llvm.sadd.sat.i64(i64, i64) #9 + attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } @@ -1184,8 +1184,9 @@ attributes #5 = { mustprogress nocallback nofree nounwind willreturn memory(argm attributes #6 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } attributes #7 = { nofree nounwind } attributes #8 = { nocallback nofree nounwind willreturn memory(argmem: read) } -attributes #9 = { nounwind } -attributes #10 = { nounwind willreturn memory(read) } +attributes #9 = { nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) } +attributes #10 = { nounwind } +attributes #11 = { nounwind willreturn memory(read) } !llvm.module.flags = !{!0, !1, !2} diff --git a/bench/ffmpeg/optimized/ffv1dec.ll b/bench/ffmpeg/optimized/ffv1dec.ll index a684baa3e0e..9738ab8a1f3 100644 --- a/bench/ffmpeg/optimized/ffv1dec.ll +++ b/bench/ffmpeg/optimized/ffv1dec.ll @@ -7508,26 +7508,24 @@ get_sr_golomb.exit: ; preds = %33, %42 br i1 %83, label %84, label %update_vlc_state.exit 84: ; preds = %82 - %85 = icmp eq i8 %69, 127 - %86 = add i8 %69, 1 - %spec.select43.i = select i1 %85, i8 127, i8 %86 + %spec.select43.i = tail call i8 @llvm.sadd.sat.i8(i8 %69, i8 1) store i8 %spec.select43.i, ptr %68, align 2, !tbaa !203 - %87 = sub nsw i32 %.035.i, %75 - %88 = tail call i32 @llvm.smin.i32(i32 %87, i32 0) + %85 = sub nsw i32 %.035.i, %75 + %86 = tail call i32 @llvm.smin.i32(i32 %85, i32 0) br label %update_vlc_state.exit update_vlc_state.exit: ; preds = %77, %82, %84 - %.1.i = phi i32 [ %81, %77 ], [ %88, %84 ], [ %.035.i, %82 ] - %89 = sext i8 %69 to i32 - %90 = add nsw i32 %67, %89 - %91 = sub i32 32, %2 - %sext.i = shl i32 %90, %91 - %92 = ashr exact i32 %sext.i, %91 - %93 = trunc nsw i32 %.1.i to i16 - store i16 %93, ptr %61, align 4, !tbaa !202 - %94 = trunc i32 %75 to i8 - store i8 %94, ptr %4, align 1, !tbaa !198 - ret i32 %92 + %.1.i = phi i32 [ %81, %77 ], [ %86, %84 ], [ %.035.i, %82 ] + %87 = sext i8 %69 to i32 + %88 = add nsw i32 %67, %87 + %89 = sub i32 32, %2 + %sext.i = shl i32 %88, %89 + %90 = ashr exact i32 %sext.i, %89 + %91 = trunc nsw i32 %.1.i to i16 + store i16 %91, ptr %61, align 4, !tbaa !202 + %92 = trunc i32 %75 to i8 + store i8 %92, ptr %4, align 1, !tbaa !198 + ret i32 %90 } declare void @ff_ffv1_compute_bits_per_plane(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #3 @@ -7558,6 +7556,9 @@ declare i32 @llvm.smax.i32(i32, i32) #10 ; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) declare i8 @llvm.smax.i8(i8, i8) #10 +; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) +declare i8 @llvm.sadd.sat.i8(i8, i8) #10 + ; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.usub.sat.i32(i32, i32) #10 diff --git a/bench/ffmpeg/optimized/ffv1enc.ll b/bench/ffmpeg/optimized/ffv1enc.ll index 5de4709da7d..bc55a4af828 100644 --- a/bench/ffmpeg/optimized/ffv1enc.ll +++ b/bench/ffmpeg/optimized/ffv1enc.ll @@ -33685,20 +33685,18 @@ set_sr_golomb.exit: ; preds = %put_bits.exit.i.i, 116: ; preds = %114 %117 = load i8, ptr %4, align 2, !tbaa !299 - %118 = icmp eq i8 %117, 127 - %119 = add i8 %117, 1 - %spec.select43.i = select i1 %118, i8 127, i8 %119 + %spec.select43.i = tail call i8 @llvm.sadd.sat.i8(i8 %117, i8 1) store i8 %spec.select43.i, ptr %4, align 2, !tbaa !299 - %120 = sub nsw i32 %.035.i, %106 - %121 = tail call i32 @llvm.smin.i32(i32 %120, i32 0) + %118 = sub nsw i32 %.035.i, %106 + %119 = tail call i32 @llvm.smin.i32(i32 %118, i32 0) br label %update_vlc_state.exit update_vlc_state.exit: ; preds = %108, %114, %116 - %.1.i = phi i32 [ %113, %108 ], [ %121, %116 ], [ %.035.i, %114 ] - %122 = trunc nsw i32 %.1.i to i16 - store i16 %122, ptr %18, align 4, !tbaa !304 - %123 = trunc i32 %106 to i8 - store i8 %123, ptr %10, align 1, !tbaa !301 + %.1.i = phi i32 [ %113, %108 ], [ %119, %116 ], [ %.035.i, %114 ] + %120 = trunc nsw i32 %.1.i to i16 + store i16 %120, ptr %18, align 4, !tbaa !304 + %121 = trunc i32 %106 to i8 + store i8 %121, ptr %10, align 1, !tbaa !301 ret void } @@ -33739,6 +33737,9 @@ declare i64 @llvm.abs.i64(i64, i1 immarg) #19 ; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) declare i8 @llvm.smax.i8(i8, i8) #18 +; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) +declare i8 @llvm.sadd.sat.i8(i8, i8) #18 + ; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.usub.sat.i32(i32, i32) #18 diff --git a/bench/ffmpeg/optimized/mace.ll b/bench/ffmpeg/optimized/mace.ll index 4fc9c3658a1..9ac0ac6d8e7 100644 --- a/bench/ffmpeg/optimized/mace.ll +++ b/bench/ffmpeg/optimized/mace.ll @@ -64,7 +64,7 @@ define internal i32 @mace_decode_frame(ptr noundef %0, ptr noundef %1, ptr nound tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef nonnull %0, i32 noundef 16, ptr noundef nonnull @.str.5, i32 noundef %9) #5 %21 = sub nsw i32 %9, %19 %.not76 = icmp eq i32 %21, 0 - br i1 %.not76, label %216, label %22 + br i1 %.not76, label %215, label %22 22: ; preds = %20, %4 %.067 = phi i32 [ %21, %20 ], [ %9, %4 ] @@ -77,7 +77,7 @@ define internal i32 @mace_decode_frame(ptr noundef %0, ptr noundef %1, ptr nound store i32 %26, ptr %27, align 8, !tbaa !33 %28 = tail call i32 @ff_get_buffer(ptr noundef nonnull %0, ptr noundef %1, i32 noundef 0) #5 %29 = icmp slt i32 %28, 0 - br i1 %29, label %216, label %30 + br i1 %29, label %215, label %30 30: ; preds = %22 %31 = getelementptr inbounds nuw i8, ptr %1, i64 96 @@ -242,7 +242,7 @@ chomp3.exit.us.us.us.us.us: ; preds = %79, %70 .split.us: ; preds = %.preheader.us97, %.split85.us %indvars.iv106 = phi i64 [ 0, %.preheader.us97 ], [ %indvars.iv.next107, %.split85.us ] - %.187.us = phi ptr [ %.06692.us98, %.preheader.us97 ], [ %211, %.split85.us ] + %.187.us = phi ptr [ %.06692.us98, %.preheader.us97 ], [ %210, %.split85.us ] %gep = getelementptr i8, ptr %invariant.gep, i64 %indvars.iv106 %118 = load i8, ptr %gep, align 1, !tbaa !40 call void @llvm.lifetime.start.p0(ptr nonnull %5) @@ -268,7 +268,7 @@ chomp3.exit.us.us.us.us.us: ; preds = %79, %70 125: ; preds = %chomp6.exit.us, %.split.us %indvars.iv = phi i64 [ %indvars.iv.next, %chomp6.exit.us ], [ 0, %.split.us ] - %.283.us = phi ptr [ %211, %chomp6.exit.us ], [ %.187.us, %.split.us ] + %.283.us = phi ptr [ %210, %chomp6.exit.us ], [ %.187.us, %.split.us ] %126 = getelementptr inbounds nuw i8, ptr %5, i64 %indvars.iv %127 = load i8, ptr %126, align 1, !tbaa !40 %128 = zext i8 %127 to i32 @@ -328,74 +328,73 @@ read_table.exit.i.us: ; preds = %147, %138 br label %chomp6.exit.us 168: ; preds = %read_table.exit.i.us - %169 = tail call i16 @llvm.smin.i16(i16 %164, i16 32261) - %spec.select.i.us = add nsw i16 %169, 506 + %spec.select.i.us = tail call i16 @llvm.sadd.sat.i16(i16 %164, i16 506) br label %chomp6.exit.us chomp6.exit.us: ; preds = %168, %165 %.sink.i.us = phi i16 [ %spec.select.i.us, %168 ], [ %spec.select45.i.us, %165 ] store i16 %.sink.i.us, ptr %113, align 2, !tbaa !56 - %170 = sext i16 %.0.i.i78.us to i32 - %171 = load i16, ptr %114, align 2, !tbaa !49 - %172 = sext i16 %171 to i32 - %173 = add nsw i32 %172, %170 - %174 = icmp sgt i32 %173, 32767 - %175 = icmp slt i32 %173, -32768 - %176 = trunc nsw i32 %173 to i16 - %spec.select.i39.i.us = select i1 %175, i16 -32767, i16 %176 - %.0.i40.i.us = select i1 %174, i16 32767, i16 %spec.select.i39.i.us - %177 = sext i16 %.0.i40.i.us to i32 - %178 = sext i16 %.sink.i.us to i32 - %179 = mul nsw i32 %177, %178 - %180 = lshr i32 %179, 15 - %181 = trunc i32 %180 to i16 - store i16 %181, ptr %114, align 2, !tbaa !49 - %182 = ashr i16 %.0.i40.i.us, 1 - %183 = zext i16 %161 to i32 - %184 = load i16, ptr %115, align 2, !tbaa !57 - %185 = sext i16 %184 to i32 - %186 = add nsw i32 %185, %183 - %187 = sext i16 %182 to i32 - %188 = sub nsw i32 %185, %187 - %189 = ashr i32 %188, 2 - %190 = sub nsw i32 %186, %189 - %191 = and i32 %190, 65280 - %192 = lshr i32 %190, 8 - %193 = and i32 %192, 255 - %194 = or disjoint i32 %193, %191 - %195 = trunc nuw i32 %194 to i16 - store i16 %195, ptr %.283.us, align 2, !tbaa !47 - %196 = load i16, ptr %112, align 2, !tbaa !55 - %197 = zext i16 %196 to i32 - %198 = add nsw i32 %187, %197 - %199 = load i16, ptr %115, align 2, !tbaa !57 - %200 = sext i16 %199 to i32 - %201 = sub nsw i32 %200, %187 - %202 = ashr i32 %201, 2 - %203 = add nsw i32 %198, %202 - %204 = and i32 %203, 65280 - %205 = lshr i32 %203, 8 - %206 = and i32 %205, 255 - %207 = or disjoint i32 %206, %204 - %208 = trunc nuw i32 %207 to i16 - %209 = getelementptr inbounds nuw i8, ptr %.283.us, i64 2 - store i16 %208, ptr %209, align 2, !tbaa !47 - %210 = load i16, ptr %112, align 2, !tbaa !55 - store i16 %210, ptr %115, align 2, !tbaa !57 - store i16 %182, ptr %112, align 2, !tbaa !55 - %211 = getelementptr inbounds nuw i16, ptr %.283.us, i64 %42 + %169 = sext i16 %.0.i.i78.us to i32 + %170 = load i16, ptr %114, align 2, !tbaa !49 + %171 = sext i16 %170 to i32 + %172 = add nsw i32 %171, %169 + %173 = icmp sgt i32 %172, 32767 + %174 = icmp slt i32 %172, -32768 + %175 = trunc nsw i32 %172 to i16 + %spec.select.i39.i.us = select i1 %174, i16 -32767, i16 %175 + %.0.i40.i.us = select i1 %173, i16 32767, i16 %spec.select.i39.i.us + %176 = sext i16 %.0.i40.i.us to i32 + %177 = sext i16 %.sink.i.us to i32 + %178 = mul nsw i32 %176, %177 + %179 = lshr i32 %178, 15 + %180 = trunc i32 %179 to i16 + store i16 %180, ptr %114, align 2, !tbaa !49 + %181 = ashr i16 %.0.i40.i.us, 1 + %182 = zext i16 %161 to i32 + %183 = load i16, ptr %115, align 2, !tbaa !57 + %184 = sext i16 %183 to i32 + %185 = add nsw i32 %184, %182 + %186 = sext i16 %181 to i32 + %187 = sub nsw i32 %184, %186 + %188 = ashr i32 %187, 2 + %189 = sub nsw i32 %185, %188 + %190 = and i32 %189, 65280 + %191 = lshr i32 %189, 8 + %192 = and i32 %191, 255 + %193 = or disjoint i32 %192, %190 + %194 = trunc nuw i32 %193 to i16 + store i16 %194, ptr %.283.us, align 2, !tbaa !47 + %195 = load i16, ptr %112, align 2, !tbaa !55 + %196 = zext i16 %195 to i32 + %197 = add nsw i32 %186, %196 + %198 = load i16, ptr %115, align 2, !tbaa !57 + %199 = sext i16 %198 to i32 + %200 = sub nsw i32 %199, %186 + %201 = ashr i32 %200, 2 + %202 = add nsw i32 %197, %201 + %203 = and i32 %202, 65280 + %204 = lshr i32 %202, 8 + %205 = and i32 %204, 255 + %206 = or disjoint i32 %205, %203 + %207 = trunc nuw i32 %206 to i16 + %208 = getelementptr inbounds nuw i8, ptr %.283.us, i64 2 + store i16 %207, ptr %208, align 2, !tbaa !47 + %209 = load i16, ptr %112, align 2, !tbaa !55 + store i16 %209, ptr %115, align 2, !tbaa !57 + store i16 %181, ptr %112, align 2, !tbaa !55 + %210 = getelementptr inbounds nuw i16, ptr %.283.us, i64 %42 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 3 br i1 %exitcond.not, label %.split85.us, label %125, !llvm.loop !50 .preheader.us97: ; preds = %.preheader.lr.ph.us, %.split89.us - %.06692.us98 = phi ptr [ %110, %.preheader.lr.ph.us ], [ %211, %.split89.us ] + %.06692.us98 = phi ptr [ %110, %.preheader.lr.ph.us ], [ %210, %.split89.us ] %.07191.us99 = phi i32 [ 0, %.preheader.lr.ph.us ], [ %117, %.split89.us ] - %212 = mul nuw nsw i32 %.07191.us99, %11 - %213 = add nuw i32 %212, %116 - %214 = shl i32 %213, %17 - %215 = sext i32 %214 to i64 - %invariant.gep = getelementptr i8, ptr %7, i64 %215 + %211 = mul nuw nsw i32 %.07191.us99, %11 + %212 = add nuw i32 %211, %116 + %213 = shl i32 %212, %17 + %214 = sext i32 %213 to i64 + %invariant.gep = getelementptr i8, ptr %7, i64 %214 br label %.split.us ._crit_edge.split.us100: ; preds = %.split89.us @@ -405,9 +404,9 @@ chomp6.exit.us: ; preds = %168, %165 ._crit_edge96: ; preds = %._crit_edge.split.us100, %._crit_edge.split.us.us.us, %.lr.ph, %30 store i32 1, ptr %2, align 4, !tbaa !58 - br label %216 + br label %215 -216: ; preds = %22, %20, %._crit_edge96 +215: ; preds = %22, %20, %._crit_edge96 %.0 = phi i32 [ %.067, %._crit_edge96 ], [ -1094995529, %20 ], [ %28, %22 ] ret i32 %.0 } @@ -426,7 +425,7 @@ declare void @llvm.lifetime.end.p0(ptr captures(none)) #3 declare i16 @llvm.smax.i16(i16, i16) #4 ; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) -declare i16 @llvm.smin.i16(i16, i16) #4 +declare i16 @llvm.sadd.sat.i16(i16, i16) #4 attributes #0 = { cold mustprogress nofree norecurse nosync nounwind optsize willreturn memory(argmem: readwrite) uwtable "min-legal-vector-width"="0" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nounwind uwtable "min-legal-vector-width"="0" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/ffmpeg/optimized/mov.ll b/bench/ffmpeg/optimized/mov.ll index ea1c9ffedd7..fd134eaa2c1 100644 --- a/bench/ffmpeg/optimized/mov.ll +++ b/bench/ffmpeg/optimized/mov.ll @@ -11130,13 +11130,13 @@ define internal range(i32 -1094995529, 1) i32 @mov_read_stsc(ptr noundef readonl 10: ; preds = %4 tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %9, i32 noundef 24, ptr noundef nonnull @.str.124) #17 - br label %148 + br label %146 11: ; preds = %4 %12 = getelementptr inbounds nuw i8, ptr %9, i64 44 %13 = load i32, ptr %12, align 4, !tbaa !25 %14 = icmp eq i32 %13, 0 - br i1 %14, label %148, label %15 + br i1 %14, label %146, label %15 15: ; preds = %11 %16 = getelementptr inbounds nuw i8, ptr %9, i64 48 @@ -11154,7 +11154,7 @@ define internal range(i32 -1094995529, 1) i32 @mov_read_stsc(ptr noundef readonl %28 = mul nuw nsw i64 %27, 12 %29 = add nuw nsw i64 %28, 4 %30 = icmp ugt i64 %29, %3 - br i1 %30, label %148, label %31 + br i1 %30, label %146, label %31 31: ; preds = %15 %32 = load ptr, ptr %8, align 8, !tbaa !4 @@ -11163,7 +11163,7 @@ define internal range(i32 -1094995529, 1) i32 @mov_read_stsc(ptr noundef readonl %35 = add i32 %34, -1 tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %32, i32 noundef 56, ptr noundef nonnull @.str.125, i32 noundef %35, i32 noundef %26) #17 %.not = icmp eq i32 %26, 0 - br i1 %.not, label %148, label %36 + br i1 %.not, label %146, label %36 36: ; preds = %31 %37 = getelementptr inbounds nuw i8, ptr %23, i64 112 @@ -11174,7 +11174,7 @@ define internal range(i32 -1094995529, 1) i32 @mov_read_stsc(ptr noundef readonl 39: ; preds = %36 %40 = load ptr, ptr %8, align 8, !tbaa !4 tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %40, i32 noundef 24, ptr noundef nonnull @.str.126) #17 - br label %148 + br label %146 41: ; preds = %36 tail call void @av_free(ptr noundef null) #17 @@ -11183,7 +11183,7 @@ define internal range(i32 -1094995529, 1) i32 @mov_read_stsc(ptr noundef readonl %43 = tail call ptr @av_malloc_array(i64 noundef %27, i64 noundef 12) #17 store ptr %43, ptr %37, align 8, !tbaa !169 %.not133 = icmp eq ptr %43, null - br i1 %.not133, label %148, label %.preheader + br i1 %.not133, label %146, label %.preheader .preheader: ; preds = %41 %44 = getelementptr inbounds nuw i8, ptr %1, i64 80 @@ -11231,10 +11231,10 @@ define internal range(i32 -1094995529, 1) i32 @mov_read_stsc(ptr noundef readonl %61 = zext i32 %.0120.lcssa to i64 br label %.lr.ph -.lr.ph: ; preds = %.lr.ph.preheader, %142 - %62 = phi ptr [ %60, %.lr.ph.preheader ], [ %143, %142 ] - %63 = phi i32 [ %.0120.lcssa, %.lr.ph.preheader ], [ %144, %142 ] - %indvars.iv149 = phi i64 [ %61, %.lr.ph.preheader ], [ %indvars.iv.next150, %142 ] +.lr.ph: ; preds = %.lr.ph.preheader, %140 + %62 = phi ptr [ %60, %.lr.ph.preheader ], [ %141, %140 ] + %63 = phi i32 [ %.0120.lcssa, %.lr.ph.preheader ], [ %142, %140 ] + %indvars.iv149 = phi i64 [ %61, %.lr.ph.preheader ], [ %indvars.iv.next150, %140 ] %indvars.iv.next150 = add nsw i64 %indvars.iv149, -1 %indvars = trunc i64 %indvars.iv.next150 to i32 %64 = zext i32 %63 to i64 @@ -11287,7 +11287,7 @@ define internal range(i32 -1094995529, 1) i32 @mov_read_stsc(ptr noundef readonl %91 = getelementptr inbounds nuw i8, ptr %83, i64 8 %92 = load i32, ptr %91, align 4, !tbaa !470 %93 = icmp slt i32 %92, 1 - br i1 %93, label %94, label %142 + br i1 %93, label %94, label %140 94: ; preds = %90, %86, %81, %73, %66 %95 = phi i32 [ %82, %90 ], [ %82, %86 ], [ %82, %81 ], [ %76, %73 ], [ %69, %66 ] @@ -11303,7 +11303,7 @@ define internal range(i32 -1094995529, 1) i32 @mov_read_stsc(ptr noundef readonl %103 = zext i32 %102 to i64 %.not140 = icmp ult i64 %indvars.iv149, %103 %104 = load ptr, ptr %37, align 8, !tbaa !169 - br i1 %.not140, label %128, label %105 + br i1 %.not140, label %126, label %105 105: ; preds = %94 %106 = getelementptr inbounds nuw %struct.MOVStsc, ptr %104, i64 %.pre-phi @@ -11317,7 +11317,7 @@ define internal range(i32 -1094995529, 1) i32 @mov_read_stsc(ptr noundef readonl 111: ; preds = %105 %112 = add i32 %102, -1 store i32 %112, ptr %42, align 8, !tbaa !167 - br label %142 + br label %140 113: ; preds = %105 %114 = load i32, ptr %106, align 4, !tbaa !170 @@ -11325,7 +11325,7 @@ define internal range(i32 -1094995529, 1) i32 @mov_read_stsc(ptr noundef readonl %..1.in163 = tail call i64 @llvm.smax.i64(i64 %indvars.iv149, i64 %115) %..1.in = trunc i64 %..1.in163 to i32 store i32 %..1.in, ptr %106, align 4, !tbaa !170 - br i1 %110, label %116, label %124 + br i1 %110, label %116, label %122 116: ; preds = %113 %117 = add i64 %indvars.iv149, 4294967294 @@ -11333,67 +11333,65 @@ define internal range(i32 -1094995529, 1) i32 @mov_read_stsc(ptr noundef readonl %119 = getelementptr inbounds nuw %struct.MOVStsc, ptr %104, i64 %118 %120 = load i32, ptr %119, align 4, !tbaa !170 %.not141 = icmp slt i32 %120, %..1.in - br i1 %.not141, label %124, label %121 + br i1 %.not141, label %122, label %121 121: ; preds = %116 - %122 = icmp eq i32 %120, 2147483647 - %123 = add i32 %120, 1 - %spec.select = select i1 %122, i32 2147483647, i32 %123 + %spec.select = tail call i32 @llvm.sadd.sat.i32(i32 %120, i32 1) store i32 %spec.select, ptr %106, align 4, !tbaa !170 - br label %124 + br label %122 -124: ; preds = %121, %116, %113 +122: ; preds = %121, %116, %113 %spec.select142 = tail call i32 @llvm.smax.i32(i32 %108, i32 1) store i32 %spec.select142, ptr %107, align 4, !tbaa !469 - %125 = getelementptr inbounds nuw i8, ptr %106, i64 8 - %126 = load i32, ptr %125, align 4, !tbaa !470 - %127 = tail call i32 @llvm.smax.i32(i32 %126, i32 1) - store i32 %127, ptr %125, align 4, !tbaa !470 - br label %142 + %123 = getelementptr inbounds nuw i8, ptr %106, i64 8 + %124 = load i32, ptr %123, align 4, !tbaa !470 + %125 = tail call i32 @llvm.smax.i32(i32 %124, i32 1) + store i32 %125, ptr %123, align 4, !tbaa !470 + br label %140 + +126: ; preds = %94 + %127 = getelementptr inbounds nuw %struct.MOVStsc, ptr %104, i64 %indvars.iv149 + %128 = load i32, ptr %127, align 4, !tbaa !170 + %129 = icmp sgt i32 %128, 1 + br i1 %129, label %131, label %130 -128: ; preds = %94 - %129 = getelementptr inbounds nuw %struct.MOVStsc, ptr %104, i64 %indvars.iv149 - %130 = load i32, ptr %129, align 4, !tbaa !170 - %131 = icmp sgt i32 %130, 1 - br i1 %131, label %133, label %132 - -132: ; preds = %128 +130: ; preds = %126 tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef null, i32 noundef 0, ptr noundef nonnull @.str, ptr noundef nonnull @.str.128, ptr noundef nonnull @.str.2, i32 noundef 3249) #17 tail call void @abort() #18 unreachable -133: ; preds = %128 - %134 = add nsw i32 %130, -1 - %135 = getelementptr inbounds nuw %struct.MOVStsc, ptr %104, i64 %.pre-phi - store i32 %134, ptr %135, align 4, !tbaa !170 - %136 = getelementptr inbounds nuw i8, ptr %129, i64 4 - %137 = load i32, ptr %136, align 4, !tbaa !469 - %138 = getelementptr inbounds nuw i8, ptr %135, i64 4 - store i32 %137, ptr %138, align 4, !tbaa !469 - %139 = getelementptr inbounds nuw i8, ptr %129, i64 8 - %140 = load i32, ptr %139, align 4, !tbaa !470 - %141 = getelementptr inbounds nuw i8, ptr %135, i64 8 - store i32 %140, ptr %141, align 4, !tbaa !470 - br label %142 - -142: ; preds = %90, %133, %124, %111 - %143 = phi ptr [ %62, %90 ], [ %104, %133 ], [ %104, %124 ], [ %104, %111 ] - %144 = phi i32 [ %63, %90 ], [ %102, %133 ], [ %102, %124 ], [ %112, %111 ] +131: ; preds = %126 + %132 = add nsw i32 %128, -1 + %133 = getelementptr inbounds nuw %struct.MOVStsc, ptr %104, i64 %.pre-phi + store i32 %132, ptr %133, align 4, !tbaa !170 + %134 = getelementptr inbounds nuw i8, ptr %127, i64 4 + %135 = load i32, ptr %134, align 4, !tbaa !469 + %136 = getelementptr inbounds nuw i8, ptr %133, i64 4 + store i32 %135, ptr %136, align 4, !tbaa !469 + %137 = getelementptr inbounds nuw i8, ptr %127, i64 8 + %138 = load i32, ptr %137, align 4, !tbaa !470 + %139 = getelementptr inbounds nuw i8, ptr %133, i64 8 + store i32 %138, ptr %139, align 4, !tbaa !470 + br label %140 + +140: ; preds = %90, %131, %122, %111 + %141 = phi ptr [ %62, %90 ], [ %104, %131 ], [ %104, %122 ], [ %104, %111 ] + %142 = phi i32 [ %63, %90 ], [ %102, %131 ], [ %102, %122 ], [ %112, %111 ] %.not135 = icmp eq i32 %indvars, 0 br i1 %.not135, label %._crit_edge, label %.lr.ph, !llvm.loop !471 -._crit_edge: ; preds = %142, %.critedge - %145 = load i32, ptr %44, align 8, !tbaa !47 - %.not136 = icmp eq i32 %145, 0 - br i1 %.not136, label %148, label %146 +._crit_edge: ; preds = %140, %.critedge + %143 = load i32, ptr %44, align 8, !tbaa !47 + %.not136 = icmp eq i32 %143, 0 + br i1 %.not136, label %146, label %144 -146: ; preds = %._crit_edge - %147 = load ptr, ptr %8, align 8, !tbaa !4 - tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %147, i32 noundef 24, ptr noundef nonnull @.str.129) #17 - br label %148 +144: ; preds = %._crit_edge + %145 = load ptr, ptr %8, align 8, !tbaa !4 + tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %145, i32 noundef 24, ptr noundef nonnull @.str.129) #17 + br label %146 -148: ; preds = %._crit_edge, %41, %31, %15, %11, %146, %39, %10 - %.0 = phi i32 [ 0, %10 ], [ 0, %39 ], [ -541478725, %146 ], [ 0, %11 ], [ -1094995529, %15 ], [ 0, %31 ], [ -12, %41 ], [ 0, %._crit_edge ] +146: ; preds = %._crit_edge, %41, %31, %15, %11, %144, %39, %10 + %.0 = phi i32 [ 0, %10 ], [ 0, %39 ], [ -541478725, %144 ], [ 0, %11 ], [ -1094995529, %15 ], [ 0, %31 ], [ -12, %41 ], [ 0, %._crit_edge ] ret i32 %.0 } @@ -27042,6 +27040,9 @@ declare i32 @llvm.smin.i32(i32, i32) #14 ; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.smax.i64(i64, i64) #14 +; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.sadd.sat.i32(i32, i32) #14 + attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { cold nofree noreturn nounwind "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/grpc/optimized/grpc_ares_wrapper.ll b/bench/grpc/optimized/grpc_ares_wrapper.ll index db0bc4161f6..23a28f59744 100644 --- a/bench/grpc/optimized/grpc_ares_wrapper.ll +++ b/bench/grpc/optimized/grpc_ares_wrapper.ll @@ -1867,8 +1867,7 @@ _ZN9grpc_core9Timestamp3NowEv.exit: ; preds = %.critedge8, %23 %28 = call i64 %27(ptr noundef nonnull align 8 dereferenceable(8) %25) %.off = add i64 %28, -9223372036854775807 %switch = icmp ult i64 %.off, 2 - %29 = call i64 @llvm.smin.i64(i64 %28, i64 9223372036854774807) - %spec.select = add nsw i64 %29, 1000 + %spec.select = call i64 @llvm.sadd.sat.i64(i64 %28, i64 1000) %.0.i.i = select i1 %switch, i64 %28, i64 %spec.select ret i64 %.0.i.i } @@ -9557,7 +9556,7 @@ declare i64 @llvm.umax.i64(i64, i64) #27 declare i64 @llvm.umin.i64(i64, i64) #27 ; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.smin.i64(i64, i64) #27 +declare i64 @llvm.sadd.sat.i64(i64, i64) #27 attributes #0 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/grpc/optimized/ping_rate_policy.ll b/bench/grpc/optimized/ping_rate_policy.ll index 6c4a17c1dff..ac84fc396e1 100644 --- a/bench/grpc/optimized/ping_rate_policy.ll +++ b/bench/grpc/optimized/ping_rate_policy.ll @@ -250,48 +250,47 @@ _ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread: ; preds = %54, %_Z ] 59: ; preds = %_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread - %60 = tail call i64 @llvm.smin.i64(i64 %.sroa.04.0.copyload, i64 9223372036854715807) - %spec.select = add nsw i64 %60, 60000 + %spec.select = tail call i64 @llvm.sadd.sat.i64(i64 %.sroa.04.0.copyload, i64 60000) br label %_ZN9grpc_coreplENS_9TimestampENS_8DurationE.exit26 _ZN9grpc_coreplENS_9TimestampENS_8DurationE.exit26: ; preds = %59, %_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread %.0.i.i25 = phi i64 [ %.sroa.04.0.copyload, %_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread ], [ %spec.select, %59 ] - %61 = icmp sgt i64 %.0.i.i25, %32 - br i1 %61, label %62, label %_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread46 + %60 = icmp sgt i64 %.0.i.i25, %32 + br i1 %60, label %61, label %_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread46 -62: ; preds = %_ZN9grpc_coreplENS_9TimestampENS_8DurationE.exit26 +61: ; preds = %_ZN9grpc_coreplENS_9TimestampENS_8DurationE.exit26 %cond49 = icmp eq i64 %32, -9223372036854775808 br i1 %cond49, label %_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread46.sink.split, label %.thread.i31 -.thread.i31: ; preds = %62 - %63 = sub nsw i64 0, %32 - %64 = icmp eq i64 %.0.i.i25, 9223372036854775807 - %65 = icmp eq i64 %32, -9223372036854775807 - %or.cond.i.i32 = or i1 %65, %64 - br i1 %or.cond.i.i32, label %_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread46.sink.split, label %66 - -66: ; preds = %.thread.i31 - %67 = icmp sgt i64 %.0.i.i25, 0 - br i1 %67, label %68, label %71 - -68: ; preds = %66 - %69 = sub nuw nsw i64 9223372036854775807, %.0.i.i25 - %70 = icmp slt i64 %69, %63 - br i1 %70, label %_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread46.sink.split, label %74 - -71: ; preds = %66 - %72 = sub nsw i64 -9223372036854775808, %.0.i.i25 - %73 = icmp sgt i64 %72, %63 - br i1 %73, label %_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread46.sink.split, label %74 - -74: ; preds = %71, %68 - %75 = sub i64 %.0.i.i25, %32 +.thread.i31: ; preds = %61 + %62 = sub nsw i64 0, %32 + %63 = icmp eq i64 %.0.i.i25, 9223372036854775807 + %64 = icmp eq i64 %32, -9223372036854775807 + %or.cond.i.i32 = or i1 %64, %63 + br i1 %or.cond.i.i32, label %_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread46.sink.split, label %65 + +65: ; preds = %.thread.i31 + %66 = icmp sgt i64 %.0.i.i25, 0 + br i1 %66, label %67, label %70 + +67: ; preds = %65 + %68 = sub nuw nsw i64 9223372036854775807, %.0.i.i25 + %69 = icmp slt i64 %68, %62 + br i1 %69, label %_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread46.sink.split, label %73 + +70: ; preds = %65 + %71 = sub nsw i64 -9223372036854775808, %.0.i.i25 + %72 = icmp sgt i64 %71, %62 + br i1 %72, label %_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread46.sink.split, label %73 + +73: ; preds = %70, %67 + %74 = sub i64 %.0.i.i25, %32 br label %_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread46.sink.split -_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread46.sink.split: ; preds = %74, %71, %68, %.thread.i31, %62, %47, %44, %41, %.thread.i, %34 - %.sink55 = phi i64 [ %2, %34 ], [ %2, %.thread.i ], [ %2, %41 ], [ %2, %44 ], [ %2, %47 ], [ 60000, %62 ], [ 60000, %.thread.i31 ], [ 60000, %68 ], [ 60000, %71 ], [ 60000, %74 ] - %.sink54 = phi i64 [ %35, %34 ], [ %35, %.thread.i ], [ %35, %41 ], [ %35, %44 ], [ %35, %47 ], [ %.sroa.04.0.copyload, %62 ], [ %.sroa.04.0.copyload, %.thread.i31 ], [ %.sroa.04.0.copyload, %68 ], [ %.sroa.04.0.copyload, %71 ], [ %.sroa.04.0.copyload, %74 ] - %.sroa.04.0.i.sink = phi i64 [ 9223372036854775807, %34 ], [ 9223372036854775807, %.thread.i ], [ 9223372036854775807, %41 ], [ -9223372036854775808, %44 ], [ %48, %47 ], [ 9223372036854775807, %62 ], [ 9223372036854775807, %.thread.i31 ], [ 9223372036854775807, %68 ], [ -9223372036854775808, %71 ], [ %75, %74 ] +_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread46.sink.split: ; preds = %73, %70, %67, %.thread.i31, %61, %47, %44, %41, %.thread.i, %34 + %.sink55 = phi i64 [ %2, %34 ], [ %2, %.thread.i ], [ %2, %41 ], [ %2, %44 ], [ %2, %47 ], [ 60000, %61 ], [ 60000, %.thread.i31 ], [ 60000, %67 ], [ 60000, %70 ], [ 60000, %73 ] + %.sink54 = phi i64 [ %35, %34 ], [ %35, %.thread.i ], [ %35, %41 ], [ %35, %44 ], [ %35, %47 ], [ %.sroa.04.0.copyload, %61 ], [ %.sroa.04.0.copyload, %.thread.i31 ], [ %.sroa.04.0.copyload, %67 ], [ %.sroa.04.0.copyload, %70 ], [ %.sroa.04.0.copyload, %73 ] + %.sroa.04.0.i.sink = phi i64 [ 9223372036854775807, %34 ], [ 9223372036854775807, %.thread.i ], [ 9223372036854775807, %41 ], [ -9223372036854775808, %44 ], [ %48, %47 ], [ 9223372036854775807, %61 ], [ 9223372036854775807, %.thread.i31 ], [ 9223372036854775807, %67 ], [ -9223372036854775808, %70 ], [ %74, %73 ] store i64 %.sink55, ptr %0, align 8, !tbaa !18 %.sroa.440.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 %.sink54, ptr %.sroa.440.0..sroa_idx, align 8, !tbaa !18 @@ -301,8 +300,8 @@ _ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread46.sink.split: ; pre _ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread46: ; preds = %_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread46.sink.split, %49, %_ZN9grpc_coreplENS_9TimestampENS_8DurationE.exit26, %_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread, %_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit, %57, %4 %.sink = phi i8 [ 1, %4 ], [ 1, %57 ], [ 1, %_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit ], [ 0, %_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread ], [ 0, %_ZN9grpc_coreplENS_9TimestampENS_8DurationE.exit26 ], [ 0, %49 ], [ 2, %_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread46.sink.split ] - %76 = getelementptr inbounds nuw i8, ptr %0, i64 24 - store i8 %.sink, ptr %76, align 8, !tbaa !24 + %75 = getelementptr inbounds nuw i8, ptr %0, i64 24 + store i8 %.sink, ptr %75, align 8, !tbaa !24 ret void } @@ -687,7 +686,7 @@ declare void @llvm.lifetime.end.p0(ptr captures(none)) #11 declare i32 @llvm.smax.i32(i32, i32) #12 ; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.smin.i64(i64, i64) #12 +declare i64 @llvm.sadd.sat.i64(i64, i64) #12 attributes #0 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/grpc/optimized/tcp_posix.ll b/bench/grpc/optimized/tcp_posix.ll index 792f42c4d7e..9756fc30ab1 100644 --- a/bench/grpc/optimized/tcp_posix.ll +++ b/bench/grpc/optimized/tcp_posix.ll @@ -9576,15 +9576,15 @@ define internal void @_ZL10run_pollerPvN4absl12lts_202407226StatusE(ptr noundef call void @llvm.lifetime.start.p0(ptr nonnull %4) call void @_ZN4absl12lts_2024072212log_internal10LogMessageC1EPKciNS2_7InfoTagE(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull @.str, i32 noundef 626) #37 invoke void @_ZN4absl12lts_2024072212log_internal10LogMessage19CopyToEncodedBufferILNS2_10StringTypeE0EEEvSt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 14, ptr nonnull @.str.43) - to label %_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit unwind label %56 + to label %_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit unwind label %55 _ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit: ; preds = %12 %13 = invoke fastcc noundef nonnull align 8 dereferenceable(16) ptr @_ZN4absl12lts_2024072212log_internal10LogMessagelsIPN12_GLOBAL__N_113backup_pollerETnNSt9enable_ifIXntsr4absl16HasAbslStringifyIT_EE5valueEiE4typeELi0EEERS2_RKS8_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr %0) - to label %14 unwind label %56 + to label %14 unwind label %55 14: ; preds = %_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit invoke void @_ZN4absl12lts_2024072212log_internal10LogMessage19CopyToEncodedBufferILNS2_10StringTypeE0EEEvSt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 4, ptr nonnull @.str.48) - to label %.critedge unwind label %56 + to label %.critedge unwind label %55 .critedge: ; preds = %14 call void @_ZN4absl12lts_2024072212log_internal10LogMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #39 @@ -9609,216 +9609,215 @@ _ZN9grpc_core9Timestamp3NowEv.exit: ; preds = %.critedge31, %16 %21 = call i64 %20(ptr noundef nonnull align 8 dereferenceable(8) %18) %.off = add i64 %21, -9223372036854775807 %switch = icmp ult i64 %.off, 2 - %22 = call i64 @llvm.smin.i64(i64 %21, i64 9223372036854765807) - %spec.select = add nsw i64 %22, 10000 + %spec.select = call i64 @llvm.sadd.sat.i64(i64 %21, i64 10000) %.0.i.i = select i1 %switch, i64 %21, i64 %spec.select - %23 = getelementptr inbounds nuw i8, ptr %0, i64 40 - call void @_Z17grpc_pollset_workP12grpc_pollsetPP19grpc_pollset_workerN9grpc_core9TimestampE(ptr dead_on_unwind nonnull writable sret(%"class.absl::lts_20240722::Status") align 8 %5, ptr noundef nonnull %23, ptr noundef null, i64 %.0.i.i) + %22 = getelementptr inbounds nuw i8, ptr %0, i64 40 + call void @_Z17grpc_pollset_workP12grpc_pollsetPP19grpc_pollset_workerN9grpc_core9TimestampE(ptr dead_on_unwind nonnull writable sret(%"class.absl::lts_20240722::Status") align 8 %5, ptr noundef nonnull %22, ptr noundef null, i64 %.0.i.i) call void @llvm.lifetime.start.p0(ptr nonnull %3) - %24 = load i64, ptr %5, align 8, !tbaa !110 - %25 = icmp eq i64 %24, 1 - br i1 %25, label %41, label %26 - -26: ; preds = %_ZN9grpc_core9Timestamp3NowEv.exit - store i64 %24, ptr %3, align 8, !tbaa !110 - %27 = and i64 %24, 1 - %.not.i.i.i = icmp eq i64 %27, 0 - br i1 %.not.i.i.i, label %28, label %_ZN4absl12lts_202407226StatusC2ERKS1_.exit.i - -28: ; preds = %26 - %29 = inttoptr i64 %24 to ptr - %30 = atomicrmw add ptr %29, i32 1 monotonic, align 4 + %23 = load i64, ptr %5, align 8, !tbaa !110 + %24 = icmp eq i64 %23, 1 + br i1 %24, label %40, label %25 + +25: ; preds = %_ZN9grpc_core9Timestamp3NowEv.exit + store i64 %23, ptr %3, align 8, !tbaa !110 + %26 = and i64 %23, 1 + %.not.i.i.i = icmp eq i64 %26, 0 + br i1 %.not.i.i.i, label %27, label %_ZN4absl12lts_202407226StatusC2ERKS1_.exit.i + +27: ; preds = %25 + %28 = inttoptr i64 %23 to ptr + %29 = atomicrmw add ptr %28, i32 1 monotonic, align 4 br label %_ZN4absl12lts_202407226StatusC2ERKS1_.exit.i -_ZN4absl12lts_202407226StatusC2ERKS1_.exit.i: ; preds = %28, %26 - %31 = invoke noundef zeroext i1 @_Z14grpc_log_errorPKcN4absl12lts_202407226StatusES0_i(ptr noundef nonnull @.str.49, ptr noundef nonnull %3, ptr noundef nonnull @.str, i32 noundef 632) - to label %32 unwind label %.body +_ZN4absl12lts_202407226StatusC2ERKS1_.exit.i: ; preds = %27, %25 + %30 = invoke noundef zeroext i1 @_Z14grpc_log_errorPKcN4absl12lts_202407226StatusES0_i(ptr noundef nonnull @.str.49, ptr noundef nonnull %3, ptr noundef nonnull @.str, i32 noundef 632) + to label %31 unwind label %.body -32: ; preds = %_ZN4absl12lts_202407226StatusC2ERKS1_.exit.i - %33 = load i64, ptr %3, align 8, !tbaa !110 - %34 = and i64 %33, 1 - %.not.i.i7.i = icmp eq i64 %34, 0 - br i1 %.not.i.i7.i, label %35, label %41 +31: ; preds = %_ZN4absl12lts_202407226StatusC2ERKS1_.exit.i + %32 = load i64, ptr %3, align 8, !tbaa !110 + %33 = and i64 %32, 1 + %.not.i.i7.i = icmp eq i64 %33, 0 + br i1 %.not.i.i7.i, label %34, label %40 -35: ; preds = %32 - %36 = inttoptr i64 %33 to ptr - invoke void @_ZNK4absl12lts_2024072215status_internal9StatusRep5UnrefEv(ptr noundef nonnull align 8 dereferenceable(48) %36) - to label %41 unwind label %37 +34: ; preds = %31 + %35 = inttoptr i64 %32 to ptr + invoke void @_ZNK4absl12lts_2024072215status_internal9StatusRep5UnrefEv(ptr noundef nonnull align 8 dereferenceable(48) %35) + to label %40 unwind label %36 -37: ; preds = %35 - %38 = landingpad { ptr, i32 } +36: ; preds = %34 + %37 = landingpad { ptr, i32 } catch ptr null - %39 = extractvalue { ptr, i32 } %38, 0 - call void @__clang_call_terminate(ptr %39) #38 + %38 = extractvalue { ptr, i32 } %37, 0 + call void @__clang_call_terminate(ptr %38) #38 unreachable .body: ; preds = %_ZN4absl12lts_202407226StatusC2ERKS1_.exit.i - %40 = landingpad { ptr, i32 } + %39 = landingpad { ptr, i32 } cleanup call void @_ZN4absl12lts_202407226StatusD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #34 call void @_ZN4absl12lts_202407226StatusD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #34 - br label %90 + br label %89 -41: ; preds = %35, %32, %_ZN9grpc_core9Timestamp3NowEv.exit +40: ; preds = %34, %31, %_ZN9grpc_core9Timestamp3NowEv.exit call void @llvm.lifetime.end.p0(ptr nonnull %3) - %42 = load i64, ptr %5, align 8, !tbaa !110 - %43 = and i64 %42, 1 - %.not.i.i42 = icmp eq i64 %43, 0 - br i1 %.not.i.i42, label %44, label %_ZN4absl12lts_202407226StatusD2Ev.exit - -44: ; preds = %41 - %45 = inttoptr i64 %42 to ptr - invoke void @_ZNK4absl12lts_2024072215status_internal9StatusRep5UnrefEv(ptr noundef nonnull align 8 dereferenceable(48) %45) - to label %_ZN4absl12lts_202407226StatusD2Ev.exit unwind label %46 - -46: ; preds = %44 - %47 = landingpad { ptr, i32 } - catch ptr null - %48 = extractvalue { ptr, i32 } %47, 0 - call void @__clang_call_terminate(ptr %48) #38 - unreachable + %41 = load i64, ptr %5, align 8, !tbaa !110 + %42 = and i64 %41, 1 + %.not.i.i42 = icmp eq i64 %42, 0 + br i1 %.not.i.i42, label %43, label %_ZN4absl12lts_202407226StatusD2Ev.exit -_ZN4absl12lts_202407226StatusD2Ev.exit: ; preds = %41, %44 - %49 = load ptr, ptr %0, align 8, !tbaa !304 - call void @gpr_mu_unlock(ptr noundef %49) - %50 = load ptr, ptr @_ZL18g_backup_poller_mu, align 8, !tbaa !227 - call void @_ZN4absl12lts_202407225Mutex4LockEv(ptr noundef nonnull align 8 dereferenceable(8) %50) - %51 = load i32, ptr @_ZL33g_uncovered_notifications_pending, align 4, !tbaa !3 - %52 = icmp eq i32 %51, 1 - br i1 %52, label %53, label %70 +43: ; preds = %40 + %44 = inttoptr i64 %41 to ptr + invoke void @_ZNK4absl12lts_2024072215status_internal9StatusRep5UnrefEv(ptr noundef nonnull align 8 dereferenceable(48) %44) + to label %_ZN4absl12lts_202407226StatusD2Ev.exit unwind label %45 -53: ; preds = %_ZN4absl12lts_202407226StatusD2Ev.exit - %54 = load ptr, ptr @_ZL15g_backup_poller, align 8, !tbaa !229 - %.not.not = icmp eq ptr %54, %0 - br i1 %.not.not, label %.critedge33, label %55, !prof !130 +45: ; preds = %43 + %46 = landingpad { ptr, i32 } + catch ptr null + %47 = extractvalue { ptr, i32 } %46, 0 + call void @__clang_call_terminate(ptr %47) #38 + unreachable -55: ; preds = %53 +_ZN4absl12lts_202407226StatusD2Ev.exit: ; preds = %40, %43 + %48 = load ptr, ptr %0, align 8, !tbaa !304 + call void @gpr_mu_unlock(ptr noundef %48) + %49 = load ptr, ptr @_ZL18g_backup_poller_mu, align 8, !tbaa !227 + call void @_ZN4absl12lts_202407225Mutex4LockEv(ptr noundef nonnull align 8 dereferenceable(8) %49) + %50 = load i32, ptr @_ZL33g_uncovered_notifications_pending, align 4, !tbaa !3 + %51 = icmp eq i32 %50, 1 + br i1 %51, label %52, label %69 + +52: ; preds = %_ZN4absl12lts_202407226StatusD2Ev.exit + %53 = load ptr, ptr @_ZL15g_backup_poller, align 8, !tbaa !229 + %.not.not = icmp eq ptr %53, %0 + br i1 %.not.not, label %.critedge33, label %54, !prof !130 + +54: ; preds = %52 call void @llvm.lifetime.start.p0(ptr nonnull %6) call void @_ZN4absl12lts_2024072212log_internal15LogMessageFatalC1EPKciSt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(16) %6, ptr noundef nonnull @.str, i32 noundef 637, i64 20, ptr nonnull @.str.50) #37 call void @_ZN4absl12lts_2024072212log_internal15LogMessageFatalD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #38 unreachable -56: ; preds = %14, %12, %_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit - %57 = landingpad { ptr, i32 } +55: ; preds = %14, %12, %_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit + %56 = landingpad { ptr, i32 } cleanup call void @_ZN4absl12lts_2024072212log_internal10LogMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #39 call void @llvm.lifetime.end.p0(ptr nonnull %4) - br label %90 + br label %89 -.critedge33: ; preds = %53 +.critedge33: ; preds = %52 store ptr null, ptr @_ZL15g_backup_poller, align 8, !tbaa !229 store i32 0, ptr @_ZL33g_uncovered_notifications_pending, align 4, !tbaa !3 - %58 = load ptr, ptr @_ZL18g_backup_poller_mu, align 8, !tbaa !227 - call void @_ZN4absl12lts_202407225Mutex6UnlockEv(ptr noundef nonnull align 8 dereferenceable(8) %58) - %59 = load atomic i8, ptr getelementptr inbounds nuw (i8, ptr @_ZN9grpc_core9tcp_traceE, i64 16) monotonic, align 8 - %60 = trunc i8 %59 to i1 - br i1 %60, label %61, label %.critedge36, !prof !89 + %57 = load ptr, ptr @_ZL18g_backup_poller_mu, align 8, !tbaa !227 + call void @_ZN4absl12lts_202407225Mutex6UnlockEv(ptr noundef nonnull align 8 dereferenceable(8) %57) + %58 = load atomic i8, ptr getelementptr inbounds nuw (i8, ptr @_ZN9grpc_core9tcp_traceE, i64 16) monotonic, align 8 + %59 = trunc i8 %58 to i1 + br i1 %59, label %60, label %.critedge36, !prof !89 -61: ; preds = %.critedge33 +60: ; preds = %.critedge33 call void @llvm.lifetime.start.p0(ptr nonnull %7) call void @_ZN4absl12lts_2024072212log_internal10LogMessageC1EPKciNS2_7InfoTagE(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull @.str, i32 noundef 641) #37 invoke void @_ZN4absl12lts_2024072212log_internal10LogMessage19CopyToEncodedBufferILNS2_10StringTypeE0EEEvSt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 14, ptr nonnull @.str.43) - to label %_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit43 unwind label %68 + to label %_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit43 unwind label %67 -_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit43: ; preds = %61 - %62 = invoke fastcc noundef nonnull align 8 dereferenceable(16) ptr @_ZN4absl12lts_2024072212log_internal10LogMessagelsIPN12_GLOBAL__N_113backup_pollerETnNSt9enable_ifIXntsr4absl16HasAbslStringifyIT_EE5valueEiE4typeELi0EEERS2_RKS8_(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr nonnull %0) - to label %63 unwind label %68 +_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit43: ; preds = %60 + %61 = invoke fastcc noundef nonnull align 8 dereferenceable(16) ptr @_ZN4absl12lts_2024072212log_internal10LogMessagelsIPN12_GLOBAL__N_113backup_pollerETnNSt9enable_ifIXntsr4absl16HasAbslStringifyIT_EE5valueEiE4typeELi0EEERS2_RKS8_(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr nonnull %0) + to label %62 unwind label %67 -63: ; preds = %_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit43 +62: ; preds = %_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit43 invoke void @_ZN4absl12lts_2024072212log_internal10LogMessage19CopyToEncodedBufferILNS2_10StringTypeE0EEEvSt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 9, ptr nonnull @.str.51) - to label %.critedge35 unwind label %68 + to label %.critedge35 unwind label %67 -.critedge35: ; preds = %63 +.critedge35: ; preds = %62 call void @_ZN4absl12lts_2024072212log_internal10LogMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #39 call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %.critedge36 .critedge36: ; preds = %.critedge33, %.critedge35 - %64 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %65 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr @_ZL11done_pollerPvN4absl12lts_202407226StatusE, ptr %65, align 8, !tbaa !127 - %66 = getelementptr inbounds nuw i8, ptr %0, i64 24 - store ptr %0, ptr %66, align 8, !tbaa !128 - %67 = getelementptr inbounds nuw i8, ptr %0, i64 32 - store i64 0, ptr %67, align 8, !tbaa !25 - call void @_Z21grpc_pollset_shutdownP12grpc_pollsetP12grpc_closure(ptr noundef nonnull %23, ptr noundef nonnull %64) + %63 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %64 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr @_ZL11done_pollerPvN4absl12lts_202407226StatusE, ptr %64, align 8, !tbaa !127 + %65 = getelementptr inbounds nuw i8, ptr %0, i64 24 + store ptr %0, ptr %65, align 8, !tbaa !128 + %66 = getelementptr inbounds nuw i8, ptr %0, i64 32 + store i64 0, ptr %66, align 8, !tbaa !25 + call void @_Z21grpc_pollset_shutdownP12grpc_pollsetP12grpc_closure(ptr noundef nonnull %22, ptr noundef nonnull %63) br label %_ZN4absl12lts_202407226StatusD2Ev.exit46 -68: ; preds = %63, %61, %_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit43 - %69 = landingpad { ptr, i32 } +67: ; preds = %62, %60, %_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit43 + %68 = landingpad { ptr, i32 } cleanup call void @_ZN4absl12lts_2024072212log_internal10LogMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #39 call void @llvm.lifetime.end.p0(ptr nonnull %7) - br label %90 + br label %89 -70: ; preds = %_ZN4absl12lts_202407226StatusD2Ev.exit - %71 = load ptr, ptr @_ZL18g_backup_poller_mu, align 8, !tbaa !227 - call void @_ZN4absl12lts_202407225Mutex6UnlockEv(ptr noundef nonnull align 8 dereferenceable(8) %71) - %72 = load atomic i8, ptr getelementptr inbounds nuw (i8, ptr @_ZN9grpc_core9tcp_traceE, i64 16) monotonic, align 8 - %73 = trunc i8 %72 to i1 - br i1 %73, label %74, label %.critedge39, !prof !89 +69: ; preds = %_ZN4absl12lts_202407226StatusD2Ev.exit + %70 = load ptr, ptr @_ZL18g_backup_poller_mu, align 8, !tbaa !227 + call void @_ZN4absl12lts_202407225Mutex6UnlockEv(ptr noundef nonnull align 8 dereferenceable(8) %70) + %71 = load atomic i8, ptr getelementptr inbounds nuw (i8, ptr @_ZN9grpc_core9tcp_traceE, i64 16) monotonic, align 8 + %72 = trunc i8 %71 to i1 + br i1 %72, label %73, label %.critedge39, !prof !89 -74: ; preds = %70 +73: ; preds = %69 call void @llvm.lifetime.start.p0(ptr nonnull %8) call void @_ZN4absl12lts_2024072212log_internal10LogMessageC1EPKciNS2_7InfoTagE(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull @.str, i32 noundef 647) #37 invoke void @_ZN4absl12lts_2024072212log_internal10LogMessage19CopyToEncodedBufferILNS2_10StringTypeE0EEEvSt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(16) %8, i64 14, ptr nonnull @.str.43) - to label %_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit44 unwind label %86 + to label %_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit44 unwind label %85 -_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit44: ; preds = %74 - %75 = invoke fastcc noundef nonnull align 8 dereferenceable(16) ptr @_ZN4absl12lts_2024072212log_internal10LogMessagelsIPN12_GLOBAL__N_113backup_pollerETnNSt9enable_ifIXntsr4absl16HasAbslStringifyIT_EE5valueEiE4typeELi0EEERS2_RKS8_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr nonnull %0) - to label %76 unwind label %86 +_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit44: ; preds = %73 + %74 = invoke fastcc noundef nonnull align 8 dereferenceable(16) ptr @_ZN4absl12lts_2024072212log_internal10LogMessagelsIPN12_GLOBAL__N_113backup_pollerETnNSt9enable_ifIXntsr4absl16HasAbslStringifyIT_EE5valueEiE4typeELi0EEERS2_RKS8_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr nonnull %0) + to label %75 unwind label %85 -76: ; preds = %_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit44 +75: ; preds = %_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit44 invoke void @_ZN4absl12lts_2024072212log_internal10LogMessage19CopyToEncodedBufferILNS2_10StringTypeE0EEEvSt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(16) %8, i64 11, ptr nonnull @.str.52) - to label %.critedge38 unwind label %86 + to label %.critedge38 unwind label %85 -.critedge38: ; preds = %76 +.critedge38: ; preds = %75 call void @_ZN4absl12lts_2024072212log_internal10LogMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #39 call void @llvm.lifetime.end.p0(ptr nonnull %8) br label %.critedge39 -.critedge39: ; preds = %70, %.critedge38 - %77 = getelementptr inbounds nuw i8, ptr %0, i64 8 +.critedge39: ; preds = %69, %.critedge38 + %76 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 1, ptr %9, align 8, !tbaa !110, !alias.scope !309 - invoke void @_ZN9grpc_core8Executor3RunEP12grpc_closureN4absl12lts_202407226StatusENS_12ExecutorTypeENS_15ExecutorJobTypeE(ptr noundef nonnull %77, ptr noundef nonnull %9, i32 noundef 0, i32 noundef 1) - to label %78 unwind label %88 - -78: ; preds = %.critedge39 - %79 = load i64, ptr %9, align 8, !tbaa !110 - %80 = and i64 %79, 1 - %.not.i.i45 = icmp eq i64 %80, 0 - br i1 %.not.i.i45, label %81, label %_ZN4absl12lts_202407226StatusD2Ev.exit46 - -81: ; preds = %78 - %82 = inttoptr i64 %79 to ptr - invoke void @_ZNK4absl12lts_2024072215status_internal9StatusRep5UnrefEv(ptr noundef nonnull align 8 dereferenceable(48) %82) - to label %_ZN4absl12lts_202407226StatusD2Ev.exit46 unwind label %83 - -83: ; preds = %81 - %84 = landingpad { ptr, i32 } + invoke void @_ZN9grpc_core8Executor3RunEP12grpc_closureN4absl12lts_202407226StatusENS_12ExecutorTypeENS_15ExecutorJobTypeE(ptr noundef nonnull %76, ptr noundef nonnull %9, i32 noundef 0, i32 noundef 1) + to label %77 unwind label %87 + +77: ; preds = %.critedge39 + %78 = load i64, ptr %9, align 8, !tbaa !110 + %79 = and i64 %78, 1 + %.not.i.i45 = icmp eq i64 %79, 0 + br i1 %.not.i.i45, label %80, label %_ZN4absl12lts_202407226StatusD2Ev.exit46 + +80: ; preds = %77 + %81 = inttoptr i64 %78 to ptr + invoke void @_ZNK4absl12lts_2024072215status_internal9StatusRep5UnrefEv(ptr noundef nonnull align 8 dereferenceable(48) %81) + to label %_ZN4absl12lts_202407226StatusD2Ev.exit46 unwind label %82 + +82: ; preds = %80 + %83 = landingpad { ptr, i32 } catch ptr null - %85 = extractvalue { ptr, i32 } %84, 0 - call void @__clang_call_terminate(ptr %85) #38 + %84 = extractvalue { ptr, i32 } %83, 0 + call void @__clang_call_terminate(ptr %84) #38 unreachable -86: ; preds = %76, %74, %_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit44 - %87 = landingpad { ptr, i32 } +85: ; preds = %75, %73, %_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit44 + %86 = landingpad { ptr, i32 } cleanup call void @_ZN4absl12lts_2024072212log_internal10LogMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #39 call void @llvm.lifetime.end.p0(ptr nonnull %8) - br label %90 + br label %89 -88: ; preds = %.critedge39 - %89 = landingpad { ptr, i32 } +87: ; preds = %.critedge39 + %88 = landingpad { ptr, i32 } cleanup call void @_ZN4absl12lts_202407226StatusD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #34 - br label %90 + br label %89 -_ZN4absl12lts_202407226StatusD2Ev.exit46: ; preds = %81, %78, %.critedge36 +_ZN4absl12lts_202407226StatusD2Ev.exit46: ; preds = %80, %77, %.critedge36 ret void -90: ; preds = %.body, %68, %86, %88, %56 - %.pn.pn = phi { ptr, i32 } [ %57, %56 ], [ %69, %68 ], [ %89, %88 ], [ %87, %86 ], [ %40, %.body ] +89: ; preds = %.body, %67, %85, %87, %55 + %.pn.pn = phi { ptr, i32 } [ %56, %55 ], [ %68, %67 ], [ %88, %87 ], [ %86, %85 ], [ %39, %.body ] resume { ptr, i32 } %.pn.pn } @@ -11235,7 +11234,7 @@ declare void @llvm.assume(i1 noundef) #29 declare void @llvm.experimental.noalias.scope.decl(metadata) #30 ; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.smin.i64(i64, i64) #31 +declare i64 @llvm.sadd.sat.i64(i64, i64) #31 ; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umax.i64(i64, i64) #31 diff --git a/bench/grpc/optimized/utils.ll b/bench/grpc/optimized/utils.ll index ec4ef731a33..53c53ad8f56 100644 --- a/bench/grpc/optimized/utils.ll +++ b/bench/grpc/optimized/utils.ll @@ -298,9 +298,7 @@ define range(i64 -9223372036854775805, -9223372036854775807) i64 @_ZN17grpc_even _ZN9grpc_coreplENS_9TimestampENS_8DurationE.exit: ; preds = %8 %12 = add nsw i64 %.sroa.01.0.copyload.sroa.speculated, %0 - %13 = icmp eq i64 %12, 9223372036854775807 - %14 = add nsw i64 %12, 1 - %spec.select = select i1 %13, i64 9223372036854775807, i64 %14 + %spec.select = tail call i64 @llvm.sadd.sat.i64(i64 %12, i64 1) br label %_ZN9grpc_coreplENS_9TimestampENS_8DurationE.exit9 _ZN9grpc_coreplENS_9TimestampENS_8DurationE.exit9: ; preds = %2, %_ZN9grpc_coreplENS_9TimestampENS_8DurationE.exit, %8 @@ -853,6 +851,9 @@ declare void @llvm.lifetime.end.p0(ptr captures(none)) #14 ; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.smax.i64(i64, i64) #15 +; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) +declare i64 @llvm.sadd.sat.i64(i64, i64) #15 + attributes #0 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { nofree nounwind } diff --git a/bench/libzmq/optimized/stream_connecter_base.ll b/bench/libzmq/optimized/stream_connecter_base.ll index a2dae6d0f28..a3808f41ee3 100644 --- a/bench/libzmq/optimized/stream_connecter_base.ll +++ b/bench/libzmq/optimized/stream_connecter_base.ll @@ -279,7 +279,7 @@ define void @_ZN3zmq23stream_connecter_base_t19add_reconnect_timerEv(ptr noundef %3 = getelementptr inbounds nuw i8, ptr %0, i64 352 %4 = load i32, ptr %3, align 8, !tbaa !84 %5 = icmp sgt i32 %4, 0 - br i1 %5, label %6, label %41 + br i1 %5, label %6, label %38 6: ; preds = %1 %7 = getelementptr inbounds nuw i8, ptr %0, i64 356 @@ -311,59 +311,56 @@ define void @_ZN3zmq23stream_connecter_base_t19add_reconnect_timerEv(ptr noundef %20 = load i32, ptr %3, align 8, !tbaa !84 %21 = urem i32 %19, %20 %22 = load i32, ptr %10, align 4, !tbaa !75 - %23 = sub nsw i32 2147483647, %21 - %24 = icmp slt i32 %22, %23 - %25 = add nsw i32 %22, %21 - %spec.select9.i = select i1 %24, i32 %25, i32 2147483647 + %spec.select9.i = tail call i32 @llvm.sadd.sat.i32(i32 %21, i32 %22) br label %_ZN3zmq23stream_connecter_base_t21get_new_reconnect_ivlEv.exit _ZN3zmq23stream_connecter_base_t21get_new_reconnect_ivlEv.exit: ; preds = %13, %18 %.0.i = phi i32 [ %..06.i, %13 ], [ %spec.select9.i, %18 ] - %26 = getelementptr inbounds nuw i8, ptr %0, i64 1448 - tail call void @_ZN3zmq11io_object_t9add_timerEii(ptr noundef nonnull align 8 dereferenceable(16) %26, i32 noundef %.0.i, i32 noundef 1) - %27 = getelementptr inbounds nuw i8, ptr %0, i64 1520 - %28 = load ptr, ptr %27, align 8, !tbaa !72 + %23 = getelementptr inbounds nuw i8, ptr %0, i64 1448 + tail call void @_ZN3zmq11io_object_t9add_timerEii(ptr noundef nonnull align 8 dereferenceable(16) %23, i32 noundef %.0.i, i32 noundef 1) + %24 = getelementptr inbounds nuw i8, ptr %0, i64 1520 + %25 = load ptr, ptr %24, align 8, !tbaa !72 call void @llvm.lifetime.start.p0(ptr nonnull %2) - %29 = getelementptr inbounds nuw i8, ptr %0, i64 1488 - call void @_ZN3zmq38make_unconnected_connect_endpoint_pairERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"struct.zmq::endpoint_uri_pair_t") align 8 %2, ptr noundef nonnull align 8 dereferenceable(32) %29) - invoke void @_ZN3zmq13socket_base_t21event_connect_retriedERKNS_19endpoint_uri_pair_tEi(ptr noundef nonnull align 8 dereferenceable(1825) %28, ptr noundef nonnull align 8 dereferenceable(68) %2, i32 noundef %.0.i) - to label %30 unwind label %39 - -30: ; preds = %_ZN3zmq23stream_connecter_base_t21get_new_reconnect_ivlEv.exit - %31 = getelementptr inbounds nuw i8, ptr %2, i64 32 - %32 = load ptr, ptr %31, align 8, !tbaa !80 - %33 = getelementptr inbounds nuw i8, ptr %2, i64 48 - %34 = icmp eq ptr %32, %33 - br i1 %34, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i + %26 = getelementptr inbounds nuw i8, ptr %0, i64 1488 + call void @_ZN3zmq38make_unconnected_connect_endpoint_pairERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"struct.zmq::endpoint_uri_pair_t") align 8 %2, ptr noundef nonnull align 8 dereferenceable(32) %26) + invoke void @_ZN3zmq13socket_base_t21event_connect_retriedERKNS_19endpoint_uri_pair_tEi(ptr noundef nonnull align 8 dereferenceable(1825) %25, ptr noundef nonnull align 8 dereferenceable(68) %2, i32 noundef %.0.i) + to label %27 unwind label %36 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i: ; preds = %30 - call void @_ZdlPv(ptr noundef %32) #20 +27: ; preds = %_ZN3zmq23stream_connecter_base_t21get_new_reconnect_ivlEv.exit + %28 = getelementptr inbounds nuw i8, ptr %2, i64 32 + %29 = load ptr, ptr %28, align 8, !tbaa !80 + %30 = getelementptr inbounds nuw i8, ptr %2, i64 48 + %31 = icmp eq ptr %29, %30 + br i1 %31, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i: ; preds = %27 + call void @_ZdlPv(ptr noundef %29) #20 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i: ; preds = %30, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i - %35 = load ptr, ptr %2, align 8, !tbaa !80 - %36 = getelementptr inbounds nuw i8, ptr %2, i64 16 - %37 = icmp eq ptr %35, %36 - br i1 %37, label %_ZN3zmq19endpoint_uri_pair_tD2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1.i +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i: ; preds = %27, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i + %32 = load ptr, ptr %2, align 8, !tbaa !80 + %33 = getelementptr inbounds nuw i8, ptr %2, i64 16 + %34 = icmp eq ptr %32, %33 + br i1 %34, label %_ZN3zmq19endpoint_uri_pair_tD2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i - call void @_ZdlPv(ptr noundef %35) #20 + call void @_ZdlPv(ptr noundef %32) #20 br label %_ZN3zmq19endpoint_uri_pair_tD2Ev.exit _ZN3zmq19endpoint_uri_pair_tD2Ev.exit: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1.i call void @llvm.lifetime.end.p0(ptr nonnull %2) - %38 = getelementptr inbounds nuw i8, ptr %0, i64 1529 - store i8 1, ptr %38, align 1, !tbaa !74 - br label %41 + %35 = getelementptr inbounds nuw i8, ptr %0, i64 1529 + store i8 1, ptr %35, align 1, !tbaa !74 + br label %38 -39: ; preds = %_ZN3zmq23stream_connecter_base_t21get_new_reconnect_ivlEv.exit - %40 = landingpad { ptr, i32 } +36: ; preds = %_ZN3zmq23stream_connecter_base_t21get_new_reconnect_ivlEv.exit + %37 = landingpad { ptr, i32 } cleanup call void @_ZN3zmq19endpoint_uri_pair_tD2Ev(ptr noundef nonnull align 8 dereferenceable(68) %2) #21 call void @llvm.lifetime.end.p0(ptr nonnull %2) - resume { ptr, i32 } %40 + resume { ptr, i32 } %37 -41: ; preds = %_ZN3zmq19endpoint_uri_pair_tD2Ev.exit, %1 +38: ; preds = %_ZN3zmq19endpoint_uri_pair_tD2Ev.exit, %1 ret void } @@ -511,7 +508,7 @@ define noundef i32 @_ZN3zmq23stream_connecter_base_t21get_new_reconnect_ivlEv(pt %.06 = select i1 %7, i32 %10, i32 %spec.select %..06 = tail call i32 @llvm.smin.i32(i32 %.06, i32 %3) store i32 %..06, ptr %5, align 4, !tbaa !75 - br label %26 + br label %23 13: ; preds = %1 br i1 %7, label %14, label %17 @@ -528,13 +525,10 @@ define noundef i32 @_ZN3zmq23stream_connecter_base_t21get_new_reconnect_ivlEv(pt %20 = load i32, ptr %19, align 8, !tbaa !84 %21 = urem i32 %18, %20 %22 = load i32, ptr %5, align 4, !tbaa !75 - %23 = sub nsw i32 2147483647, %21 - %24 = icmp slt i32 %22, %23 - %25 = add nsw i32 %22, %21 - %spec.select9 = select i1 %24, i32 %25, i32 2147483647 - br label %26 + %spec.select9 = tail call i32 @llvm.sadd.sat.i32(i32 %21, i32 %22) + br label %23 -26: ; preds = %17, %8 +23: ; preds = %17, %8 %.0 = phi i32 [ %..06, %8 ], [ %spec.select9, %17 ] ret i32 %.0 } @@ -946,6 +940,9 @@ declare void @llvm.lifetime.start.p0(ptr captures(none)) #17 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.end.p0(ptr captures(none)) #17 +; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.sadd.sat.i32(i32, i32) #18 + ; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smin.i32(i32, i32) #18 diff --git a/bench/openjdk/optimized/ifnode.ll b/bench/openjdk/optimized/ifnode.ll index 2efc7d02b96..f925eff17ba 100644 --- a/bench/openjdk/optimized/ifnode.ll +++ b/bench/openjdk/optimized/ifnode.ll @@ -959,14 +959,14 @@ define hidden noundef ptr @_ZN6IfNode17filtered_int_typeEP8PhaseGVNP4NodeS3_(ptr %5 = load ptr, ptr %4, align 8 %6 = load ptr, ptr %5, align 8 %.not = icmp eq ptr %6, null - br i1 %.not, label %132, label %7 + br i1 %.not, label %131, label %7 7: ; preds = %3 %8 = getelementptr inbounds nuw i8, ptr %6, i64 44 %9 = load i32, ptr %8, align 4 %10 = and i32 %9, 31 %11 = icmp eq i32 %10, 21 - br i1 %11, label %12, label %132 + br i1 %11, label %12, label %131 12: ; preds = %7 %13 = getelementptr inbounds nuw i8, ptr %6, i64 8 @@ -974,14 +974,14 @@ define hidden noundef ptr @_ZN6IfNode17filtered_int_typeEP8PhaseGVNP4NodeS3_(ptr %15 = getelementptr inbounds nuw i8, ptr %14, i64 8 %16 = load ptr, ptr %15, align 8 %.not56 = icmp eq ptr %16, null - br i1 %.not56, label %132, label %17 + br i1 %.not56, label %131, label %17 17: ; preds = %12 %18 = getelementptr inbounds nuw i8, ptr %16, i64 44 %19 = load i32, ptr %18, align 4 %20 = and i32 %19, 511 %21 = icmp eq i32 %20, 256 - br i1 %21, label %22, label %132 + br i1 %21, label %22, label %131 22: ; preds = %17 %23 = getelementptr inbounds nuw i8, ptr %16, i64 8 @@ -989,14 +989,14 @@ define hidden noundef ptr @_ZN6IfNode17filtered_int_typeEP8PhaseGVNP4NodeS3_(ptr %25 = getelementptr inbounds nuw i8, ptr %24, i64 8 %26 = load ptr, ptr %25, align 8 %.not57 = icmp eq ptr %26, null - br i1 %.not57, label %132, label %27 + br i1 %.not57, label %131, label %27 27: ; preds = %22 %28 = getelementptr inbounds nuw i8, ptr %26, i64 44 %29 = load i32, ptr %28, align 4 %30 = and i32 %29, 255 %31 = icmp eq i32 %30, 192 - br i1 %31, label %32, label %132 + br i1 %31, label %32, label %131 32: ; preds = %27 %33 = getelementptr inbounds nuw i8, ptr %26, i64 8 @@ -1004,7 +1004,7 @@ define hidden noundef ptr @_ZN6IfNode17filtered_int_typeEP8PhaseGVNP4NodeS3_(ptr %35 = getelementptr inbounds nuw i8, ptr %34, i64 8 %36 = load ptr, ptr %35, align 8 %37 = icmp eq ptr %36, %1 - br i1 %37, label %38, label %132 + br i1 %37, label %38, label %131 38: ; preds = %32 %39 = getelementptr inbounds nuw i8, ptr %34, i64 16 @@ -1023,7 +1023,7 @@ define hidden noundef ptr @_ZN6IfNode17filtered_int_typeEP8PhaseGVNP4NodeS3_(ptr %52 = icmp ne i32 %51, 3 %.not5864 = icmp eq ptr %49, null %.not58 = or i1 %.not5864, %52 - br i1 %.not58, label %132, label %53 + br i1 %.not58, label %131, label %53 53: ; preds = %38 %54 = getelementptr inbounds nuw i8, ptr %49, i64 24 @@ -1038,13 +1038,13 @@ define hidden noundef ptr @_ZN6IfNode17filtered_int_typeEP8PhaseGVNP4NodeS3_(ptr %63 = load i32, ptr %62, align 4 %64 = xor i32 %63, 4 %65 = select i1 %61, i32 %63, i32 %64 - switch i32 %65, label %127 [ + switch i32 %65, label %126 [ i32 4, label %66 - i32 0, label %132 + i32 0, label %131 i32 3, label %109 i32 5, label %114 i32 1, label %118 - i32 7, label %123 + i32 7, label %122 ] 66: ; preds = %53 @@ -1061,20 +1061,20 @@ define hidden noundef ptr @_ZN6IfNode17filtered_int_typeEP8PhaseGVNP4NodeS3_(ptr %77 = icmp ne i32 %76, 3 %.not6165 = icmp eq ptr %74, null %.not61 = or i1 %.not6165, %77 - br i1 %.not61, label %132, label %78 + br i1 %.not61, label %131, label %78 78: ; preds = %66 %79 = load ptr, ptr %74, align 8 %80 = getelementptr inbounds nuw i8, ptr %79, i64 64 %81 = load ptr, ptr %80, align 8 %82 = tail call noundef zeroext i1 %81(ptr noundef nonnull align 8 dereferenceable(32) %74) #9 - br i1 %82, label %132, label %83 + br i1 %82, label %131, label %83 83: ; preds = %78 %84 = load i32, ptr %54, align 8 %85 = load i32, ptr %56, align 4 %86 = icmp eq i32 %84, %85 - br i1 %86, label %87, label %132 + br i1 %86, label %87, label %131 87: ; preds = %83 %88 = getelementptr inbounds nuw i8, ptr %74, i64 24 @@ -1090,13 +1090,13 @@ define hidden noundef ptr @_ZN6IfNode17filtered_int_typeEP8PhaseGVNP4NodeS3_(ptr %96 = load i16, ptr %95, align 4 %97 = sext i16 %96 to i32 %98 = tail call noundef ptr @_ZN7TypeInt4makeEiii(i32 noundef %92, i32 noundef %94, i32 noundef %97) #9 - br label %132 + br label %131 99: ; preds = %87 %100 = getelementptr inbounds nuw i8, ptr %74, i64 28 %101 = load i32, ptr %100, align 4 %102 = icmp eq i32 %101, %57 - br i1 %102, label %103, label %132 + br i1 %102, label %103, label %131 103: ; preds = %99 %104 = add nsw i32 %57, -1 @@ -1104,7 +1104,7 @@ define hidden noundef ptr @_ZN6IfNode17filtered_int_typeEP8PhaseGVNP4NodeS3_(ptr %106 = load i16, ptr %105, align 4 %107 = sext i16 %106 to i32 %108 = tail call noundef ptr @_ZN7TypeInt4makeEiii(i32 noundef %89, i32 noundef %104, i32 noundef %107) #9 - br label %132 + br label %131 109: ; preds = %53 %110 = load ptr, ptr @_ZN7TypeInt3INTE, align 8 @@ -1113,40 +1113,38 @@ define hidden noundef ptr @_ZN6IfNode17filtered_int_typeEP8PhaseGVNP4NodeS3_(ptr %.not60 = icmp eq i32 %57, -2147483648 %113 = add nsw i32 %57, -1 %spec.select = select i1 %.not60, i32 -2147483648, i32 %113 - br label %127 + br label %126 114: ; preds = %53 %115 = load ptr, ptr @_ZN7TypeInt3INTE, align 8 %116 = getelementptr inbounds nuw i8, ptr %115, i64 24 %117 = load i32, ptr %116, align 8 - br label %127 + br label %126 118: ; preds = %53 - %.not59 = icmp eq i32 %55, 2147483647 - %119 = add nsw i32 %55, 1 - %spec.select62 = select i1 %.not59, i32 2147483647, i32 %119 - %120 = load ptr, ptr @_ZN7TypeInt3INTE, align 8 - %121 = getelementptr inbounds nuw i8, ptr %120, i64 28 - %122 = load i32, ptr %121, align 4 - br label %127 - -123: ; preds = %53 - %124 = load ptr, ptr @_ZN7TypeInt3INTE, align 8 - %125 = getelementptr inbounds nuw i8, ptr %124, i64 28 - %126 = load i32, ptr %125, align 4 - br label %127 - -127: ; preds = %109, %53, %123, %118, %114 - %.045 = phi i32 [ %57, %53 ], [ %57, %114 ], [ %122, %118 ], [ %126, %123 ], [ %spec.select, %109 ] - %.044 = phi i32 [ %55, %53 ], [ %117, %114 ], [ %spec.select62, %118 ], [ %55, %123 ], [ %112, %109 ] - %128 = getelementptr inbounds nuw i8, ptr %49, i64 20 - %129 = load i16, ptr %128, align 4 - %130 = sext i16 %129 to i32 - %131 = tail call noundef ptr @_ZN7TypeInt4makeEiii(i32 noundef %.044, i32 noundef %.045, i32 noundef %130) #9 - br label %132 - -132: ; preds = %3, %7, %22, %27, %38, %32, %17, %12, %53, %66, %78, %83, %99, %127, %103, %91 - %.0 = phi ptr [ %131, %127 ], [ %98, %91 ], [ %108, %103 ], [ null, %99 ], [ null, %83 ], [ null, %78 ], [ null, %66 ], [ %49, %53 ], [ null, %12 ], [ null, %17 ], [ null, %32 ], [ null, %38 ], [ null, %27 ], [ null, %22 ], [ null, %7 ], [ null, %3 ] + %spec.select62 = tail call i32 @llvm.sadd.sat.i32(i32 %55, i32 1) + %119 = load ptr, ptr @_ZN7TypeInt3INTE, align 8 + %120 = getelementptr inbounds nuw i8, ptr %119, i64 28 + %121 = load i32, ptr %120, align 4 + br label %126 + +122: ; preds = %53 + %123 = load ptr, ptr @_ZN7TypeInt3INTE, align 8 + %124 = getelementptr inbounds nuw i8, ptr %123, i64 28 + %125 = load i32, ptr %124, align 4 + br label %126 + +126: ; preds = %109, %53, %122, %118, %114 + %.045 = phi i32 [ %57, %53 ], [ %57, %114 ], [ %121, %118 ], [ %125, %122 ], [ %spec.select, %109 ] + %.044 = phi i32 [ %55, %53 ], [ %117, %114 ], [ %spec.select62, %118 ], [ %55, %122 ], [ %112, %109 ] + %127 = getelementptr inbounds nuw i8, ptr %49, i64 20 + %128 = load i16, ptr %127, align 4 + %129 = sext i16 %128 to i32 + %130 = tail call noundef ptr @_ZN7TypeInt4makeEiii(i32 noundef %.044, i32 noundef %.045, i32 noundef %129) #9 + br label %131 + +131: ; preds = %3, %7, %22, %27, %38, %32, %17, %12, %53, %66, %78, %83, %99, %126, %103, %91 + %.0 = phi ptr [ %130, %126 ], [ %98, %91 ], [ %108, %103 ], [ null, %99 ], [ null, %83 ], [ null, %78 ], [ null, %66 ], [ %49, %53 ], [ null, %12 ], [ null, %17 ], [ null, %32 ], [ null, %38 ], [ null, %27 ], [ null, %22 ], [ null, %7 ], [ null, %3 ] ret ptr %.0 } @@ -8603,6 +8601,9 @@ declare i64 @llvm.abs.i64(i64, i1 immarg) #8 ; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.ctpop.i32(i32) #7 +; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.sadd.sat.i32(i32, i32) #7 + attributes #0 = { mustprogress nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { mustprogress nofree norecurse nosync nounwind willreturn memory(read, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/openjdk/optimized/imageioJPEG.ll b/bench/openjdk/optimized/imageioJPEG.ll index ad30caef4fd..fcfd1c73c8c 100644 --- a/bench/openjdk/optimized/imageioJPEG.ll +++ b/bench/openjdk/optimized/imageioJPEG.ll @@ -2998,7 +2998,7 @@ define zeroext i8 @Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_readImage(p 26: ; preds = %20 call void @JNU_ThrowByName(ptr noundef %0, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.26) #13 - br label %370 + br label %369 27: ; preds = %20 %28 = icmp eq ptr %4, null @@ -3008,7 +3008,7 @@ define zeroext i8 @Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_readImage(p 30: ; preds = %27 call void @JNU_ThrowNullPointerException(ptr noundef %0, ptr noundef null) #13 - br label %370 + br label %369 31: ; preds = %27 %32 = load ptr, ptr %24, align 8 @@ -3054,7 +3054,7 @@ define zeroext i8 @Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_readImage(p 54: ; preds = %48, %45, %40, %35, %31 call void @JNU_ThrowByName(ptr noundef %0, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.28) #13 - br label %370 + br label %369 55: ; preds = %48 %spec.select = call i32 @llvm.umin.i32(i32 %12, i32 %37) @@ -3078,7 +3078,7 @@ define zeroext i8 @Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_readImage(p %66 = load ptr, ptr %65, align 8 call void %66(ptr noundef nonnull %0) #13 call void @JNU_ThrowByName(ptr noundef nonnull %0, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.29) #13 - br label %370 + br label %369 .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ] @@ -3109,7 +3109,7 @@ define zeroext i8 @Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_readImage(p 80: ; preds = %._crit_edge %81 = getelementptr inbounds nuw i8, ptr %74, i64 96 %82 = load i8, ptr %81, align 8 - br label %370 + br label %369 83: ; preds = %._crit_edge %84 = load ptr, ptr %32, align 8 @@ -3148,7 +3148,7 @@ define zeroext i8 @Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_readImage(p 100: ; preds = %99, %97 %101 = getelementptr inbounds nuw i8, ptr %74, i64 96 %102 = load i8, ptr %101, align 8 - br label %370 + br label %369 103: ; preds = %83 %104 = call fastcc i32 @GET_ARRAYS(ptr noundef nonnull %0, ptr noundef nonnull %74, ptr noundef %76) @@ -3163,7 +3163,7 @@ define zeroext i8 @Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_readImage(p call void @JNU_ThrowByName(ptr noundef nonnull %0, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.27) #13 %110 = getelementptr inbounds nuw i8, ptr %74, i64 96 %111 = load i8, ptr %110, align 8 - br label %370 + br label %369 112: ; preds = %103 %.not331 = icmp eq ptr %14, null @@ -3196,7 +3196,7 @@ define zeroext i8 @Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_readImage(p 124: ; preds = %123, %119, %118 %125 = call i32 @jHasMultScn(ptr noundef nonnull %32) #13 %126 = icmp ne i32 %125, 0 - br i1 %126, label %127, label %132 + br i1 %126, label %127, label %131 127: ; preds = %124 %128 = getelementptr inbounds nuw i8, ptr %32, i64 88 @@ -3204,471 +3204,469 @@ define zeroext i8 @Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_readImage(p %129 = add nuw nsw i32 %17, 1 %130 = getelementptr inbounds nuw i8, ptr %32, i64 172 store i32 %129, ptr %130, align 4 - %.not333 = icmp eq i32 %18, 2147483647 - %131 = add nuw nsw i32 %18, 1 - %spec.select357 = select i1 %.not333, i32 2147483647, i32 %131 - br label %132 + %spec.select357 = call i32 @llvm.sadd.sat.i32(i32 %18, i32 1) + br label %131 -132: ; preds = %127, %124 +131: ; preds = %127, %124 %.0295 = phi i32 [ %18, %124 ], [ %spec.select357, %127 ] - %133 = getelementptr inbounds nuw i8, ptr %74, i64 56 - store i32 0, ptr %133, align 8 - %134 = call i32 @jStrtDecompress(ptr noundef nonnull %32) #13 - %135 = getelementptr inbounds nuw i8, ptr %32, i64 148 - %136 = load i32, ptr %135, align 4 - %.not334 = icmp eq i32 %5, %136 - br i1 %.not334, label %141, label %137 - -137: ; preds = %132 - %138 = load ptr, ptr %76, align 8 - call fastcc void @RELEASE_ARRAYS(ptr noundef nonnull %0, ptr noundef nonnull %74, ptr noundef %138) + %132 = getelementptr inbounds nuw i8, ptr %74, i64 56 + store i32 0, ptr %132, align 8 + %133 = call i32 @jStrtDecompress(ptr noundef nonnull %32) #13 + %134 = getelementptr inbounds nuw i8, ptr %32, i64 148 + %135 = load i32, ptr %134, align 4 + %.not334 = icmp eq i32 %5, %135 + br i1 %.not334, label %140, label %136 + +136: ; preds = %131 + %137 = load ptr, ptr %76, align 8 + call fastcc void @RELEASE_ARRAYS(ptr noundef nonnull %0, ptr noundef nonnull %74, ptr noundef %137) call void @JNU_ThrowByName(ptr noundef nonnull %0, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.28) #13 - %139 = getelementptr inbounds nuw i8, ptr %74, i64 96 - %140 = load i8, ptr %139, align 8 - br label %370 + %138 = getelementptr inbounds nuw i8, ptr %74, i64 96 + %139 = load i8, ptr %138, align 8 + br label %369 -141: ; preds = %132 - %142 = load i32, ptr %36, align 8 - %mul = call { i32, i1 } @llvm.umul.with.overflow.i32(i32 %5, i32 %142) +140: ; preds = %131 + %141 = load i32, ptr %36, align 8 + %mul = call { i32, i1 } @llvm.umul.with.overflow.i32(i32 %5, i32 %141) %mul.ov = extractvalue { i32, i1 } %mul, 1 - br i1 %mul.ov, label %143, label %147 + br i1 %mul.ov, label %142, label %146 -143: ; preds = %141 - %144 = load ptr, ptr %76, align 8 - call fastcc void @RELEASE_ARRAYS(ptr noundef nonnull %0, ptr noundef nonnull %74, ptr noundef %144) +142: ; preds = %140 + %143 = load ptr, ptr %76, align 8 + call fastcc void @RELEASE_ARRAYS(ptr noundef nonnull %0, ptr noundef nonnull %74, ptr noundef %143) call void @JNU_ThrowByName(ptr noundef nonnull %0, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.30) #13 - %145 = getelementptr inbounds nuw i8, ptr %74, i64 96 - %146 = load i8, ptr %145, align 8 - br label %370 - -147: ; preds = %141 - %148 = mul i32 %142, %5 - %149 = zext i32 %148 to i64 - %150 = call noalias ptr @malloc(i64 noundef %149) #14 - store ptr %150, ptr %21, align 8 - %151 = icmp eq ptr %150, null - %152 = getelementptr inbounds nuw i8, ptr %74, i64 96 - br i1 %151, label %164, label %.preheader364 - -.preheader364: ; preds = %147 + %144 = getelementptr inbounds nuw i8, ptr %74, i64 96 + %145 = load i8, ptr %144, align 8 + br label %369 + +146: ; preds = %140 + %147 = mul i32 %141, %5 + %148 = zext i32 %147 to i64 + %149 = call noalias ptr @malloc(i64 noundef %148) #14 + store ptr %149, ptr %21, align 8 + %150 = icmp eq ptr %149, null + %151 = getelementptr inbounds nuw i8, ptr %74, i64 96 + br i1 %150, label %163, label %.preheader364 + +.preheader364: ; preds = %146 %.not337 = icmp eq i8 %19, 0 - %153 = getelementptr inbounds nuw i8, ptr %32, i64 172 - %154 = getelementptr inbounds nuw i8, ptr %32, i64 168 - %155 = add nuw nsw i32 %11, %9 - %156 = add nuw nsw i32 %10, %8 - %157 = getelementptr inbounds nuw i8, ptr %74, i64 88 - %158 = zext nneg i32 %5 to i64 - %159 = getelementptr inbounds nuw i8, ptr %74, i64 80 - %160 = getelementptr inbounds nuw i8, ptr %74, i64 32 - %161 = getelementptr inbounds nuw i8, ptr %74, i64 40 - %162 = getelementptr inbounds nuw i8, ptr %74, i64 24 - %163 = add nsw i32 %.0294, -1 - br label %167 - -164: ; preds = %147 - %165 = load ptr, ptr %76, align 8 - call fastcc void @RELEASE_ARRAYS(ptr noundef nonnull %0, ptr noundef nonnull %74, ptr noundef %165) + %152 = getelementptr inbounds nuw i8, ptr %32, i64 172 + %153 = getelementptr inbounds nuw i8, ptr %32, i64 168 + %154 = add nuw nsw i32 %11, %9 + %155 = add nuw nsw i32 %10, %8 + %156 = getelementptr inbounds nuw i8, ptr %74, i64 88 + %157 = zext nneg i32 %5 to i64 + %158 = getelementptr inbounds nuw i8, ptr %74, i64 80 + %159 = getelementptr inbounds nuw i8, ptr %74, i64 32 + %160 = getelementptr inbounds nuw i8, ptr %74, i64 40 + %161 = getelementptr inbounds nuw i8, ptr %74, i64 24 + %162 = add nsw i32 %.0294, -1 + br label %166 + +163: ; preds = %146 + %164 = load ptr, ptr %76, align 8 + call fastcc void @RELEASE_ARRAYS(ptr noundef nonnull %0, ptr noundef nonnull %74, ptr noundef %164) call void @JNU_ThrowByName(ptr noundef nonnull %0, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.31) #13 - %166 = load i8, ptr %152, align 8 - br label %370 - -167: ; preds = %.preheader364, %341 - br i1 %126, label %168, label %185 - -168: ; preds = %167 - %169 = load i32, ptr %153, align 4 - %170 = call i32 @jStrtOutput(ptr noundef nonnull %32, i32 noundef %169) #13 - br i1 %.not337, label %200, label %171 - -171: ; preds = %168 - %172 = load ptr, ptr %76, align 8 - call fastcc void @RELEASE_ARRAYS(ptr noundef nonnull %0, ptr noundef nonnull %74, ptr noundef %172) - %173 = load ptr, ptr %0, align 8 - %174 = getelementptr inbounds nuw i8, ptr %173, i64 488 - %175 = load ptr, ptr %174, align 8 - %176 = load ptr, ptr @JPEGImageReader_passStartedID, align 8 - %177 = load i32, ptr %153, align 4 - %178 = add nsw i32 %177, -1 - call void (ptr, ptr, ptr, ...) %175(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %176, i32 noundef %178) #13 - %179 = load ptr, ptr %0, align 8 - %180 = getelementptr inbounds nuw i8, ptr %179, i64 120 - %181 = load ptr, ptr %180, align 8 - %182 = call ptr %181(ptr noundef nonnull %0) #13 - %.not341 = icmp eq ptr %182, null - br i1 %.not341, label %183, label %.sink.split - -183: ; preds = %171 - %184 = call fastcc i32 @GET_ARRAYS(ptr noundef nonnull %0, ptr noundef nonnull %74, ptr noundef nonnull %76) - %.not342 = icmp eq i32 %184, 0 - br i1 %.not342, label %.sink.split, label %200 - -185: ; preds = %167 - br i1 %.not337, label %200, label %186 - -186: ; preds = %185 - %187 = load ptr, ptr %76, align 8 - call fastcc void @RELEASE_ARRAYS(ptr noundef nonnull %0, ptr noundef nonnull %74, ptr noundef %187) - %188 = load ptr, ptr %0, align 8 - %189 = getelementptr inbounds nuw i8, ptr %188, i64 488 - %190 = load ptr, ptr %189, align 8 - %191 = load ptr, ptr @JPEGImageReader_passStartedID, align 8 - call void (ptr, ptr, ptr, ...) %190(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %191, i32 noundef 0) #13 - %192 = load ptr, ptr %0, align 8 - %193 = getelementptr inbounds nuw i8, ptr %192, i64 120 - %194 = load ptr, ptr %193, align 8 - %195 = call ptr %194(ptr noundef nonnull %0) #13 - %.not338 = icmp eq ptr %195, null - br i1 %.not338, label %196, label %.sink.split - -196: ; preds = %186 - %197 = call fastcc i32 @GET_ARRAYS(ptr noundef nonnull %0, ptr noundef nonnull %74, ptr noundef nonnull %76) - %.not339 = icmp eq i32 %197, 0 - br i1 %.not339, label %.sink.split, label %200 - -.sink.split: ; preds = %186, %196, %171, %183 - %198 = load ptr, ptr %32, align 8 - %199 = load ptr, ptr %198, align 8 - call void %199(ptr noundef nonnull %32) #13 - br label %200 - -200: ; preds = %.sink.split, %185, %196, %168, %183 - %201 = load i8, ptr %152, align 8 - %202 = icmp eq i8 %201, 0 - br i1 %202, label %.lr.ph369, label %.critedge19 - -.lr.ph369: ; preds = %200, %204 - %203 = load i32, ptr %154, align 8 - %.not431 = icmp slt i32 %203, %9 - br i1 %.not431, label %204, label %.lr.ph385 - -204: ; preds = %.lr.ph369 - %205 = call i32 @jReadScanlines(ptr noundef nonnull %32, ptr noundef nonnull %21, i32 noundef 1) #13 - %206 = load i8, ptr %152, align 8 - %207 = icmp eq i8 %206, 0 - br i1 %207, label %.lr.ph369, label %.critedge19, !llvm.loop !11 + %165 = load i8, ptr %151, align 8 + br label %369 + +166: ; preds = %.preheader364, %340 + br i1 %126, label %167, label %184 + +167: ; preds = %166 + %168 = load i32, ptr %152, align 4 + %169 = call i32 @jStrtOutput(ptr noundef nonnull %32, i32 noundef %168) #13 + br i1 %.not337, label %199, label %170 + +170: ; preds = %167 + %171 = load ptr, ptr %76, align 8 + call fastcc void @RELEASE_ARRAYS(ptr noundef nonnull %0, ptr noundef nonnull %74, ptr noundef %171) + %172 = load ptr, ptr %0, align 8 + %173 = getelementptr inbounds nuw i8, ptr %172, i64 488 + %174 = load ptr, ptr %173, align 8 + %175 = load ptr, ptr @JPEGImageReader_passStartedID, align 8 + %176 = load i32, ptr %152, align 4 + %177 = add nsw i32 %176, -1 + call void (ptr, ptr, ptr, ...) %174(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %175, i32 noundef %177) #13 + %178 = load ptr, ptr %0, align 8 + %179 = getelementptr inbounds nuw i8, ptr %178, i64 120 + %180 = load ptr, ptr %179, align 8 + %181 = call ptr %180(ptr noundef nonnull %0) #13 + %.not341 = icmp eq ptr %181, null + br i1 %.not341, label %182, label %.sink.split + +182: ; preds = %170 + %183 = call fastcc i32 @GET_ARRAYS(ptr noundef nonnull %0, ptr noundef nonnull %74, ptr noundef nonnull %76) + %.not342 = icmp eq i32 %183, 0 + br i1 %.not342, label %.sink.split, label %199 + +184: ; preds = %166 + br i1 %.not337, label %199, label %185 + +185: ; preds = %184 + %186 = load ptr, ptr %76, align 8 + call fastcc void @RELEASE_ARRAYS(ptr noundef nonnull %0, ptr noundef nonnull %74, ptr noundef %186) + %187 = load ptr, ptr %0, align 8 + %188 = getelementptr inbounds nuw i8, ptr %187, i64 488 + %189 = load ptr, ptr %188, align 8 + %190 = load ptr, ptr @JPEGImageReader_passStartedID, align 8 + call void (ptr, ptr, ptr, ...) %189(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %190, i32 noundef 0) #13 + %191 = load ptr, ptr %0, align 8 + %192 = getelementptr inbounds nuw i8, ptr %191, i64 120 + %193 = load ptr, ptr %192, align 8 + %194 = call ptr %193(ptr noundef nonnull %0) #13 + %.not338 = icmp eq ptr %194, null + br i1 %.not338, label %195, label %.sink.split + +195: ; preds = %185 + %196 = call fastcc i32 @GET_ARRAYS(ptr noundef nonnull %0, ptr noundef nonnull %74, ptr noundef nonnull %76) + %.not339 = icmp eq i32 %196, 0 + br i1 %.not339, label %.sink.split, label %199 + +.sink.split: ; preds = %185, %195, %170, %182 + %197 = load ptr, ptr %32, align 8 + %198 = load ptr, ptr %197, align 8 + call void %198(ptr noundef nonnull %32) #13 + br label %199 + +199: ; preds = %.sink.split, %184, %195, %167, %182 + %200 = load i8, ptr %151, align 8 + %201 = icmp eq i8 %200, 0 + br i1 %201, label %.lr.ph369, label %.critedge19 + +.lr.ph369: ; preds = %199, %203 + %202 = load i32, ptr %153, align 8 + %.not431 = icmp slt i32 %202, %9 + br i1 %.not431, label %203, label %.lr.ph385 + +203: ; preds = %.lr.ph369 + %204 = call i32 @jReadScanlines(ptr noundef nonnull %32, ptr noundef nonnull %21, i32 noundef 1) #13 + %205 = load i8, ptr %151, align 8 + %206 = icmp eq i8 %205, 0 + br i1 %206, label %.lr.ph369, label %.critedge19, !llvm.loop !11 .lr.ph385: ; preds = %.lr.ph369 - %208 = load ptr, ptr %21, align 8 - %209 = load i32, ptr %135, align 4 - %210 = mul nsw i32 %209, %156 - %211 = sext i32 %210 to i64 - %212 = getelementptr inbounds i8, ptr %208, i64 %211 - %213 = mul nsw i32 %209, %spec.select - %214 = icmp eq i32 %213, %5 - %or.cond358 = select i1 %narrow, i1 %214, i1 false - %215 = sext i32 %213 to i64 - %216 = ptrtoint ptr %212 to i64 - br label %219 + %207 = load ptr, ptr %21, align 8 + %208 = load i32, ptr %134, align 4 + %209 = mul nsw i32 %208, %155 + %210 = sext i32 %209 to i64 + %211 = getelementptr inbounds i8, ptr %207, i64 %210 + %212 = mul nsw i32 %208, %spec.select + %213 = icmp eq i32 %212, %5 + %or.cond358 = select i1 %narrow, i1 %213, i1 false + %214 = sext i32 %212 to i64 + %215 = ptrtoint ptr %211 to i64 + br label %218 .loopexit: ; preds = %.lr.ph383, %GET_ARRAYS.exit - %217 = load i8, ptr %152, align 8 - %218 = icmp eq i8 %217, 0 - br i1 %218, label %219, label %.critedge19, !llvm.loop !12 - -219: ; preds = %.lr.ph385, %.loopexit - %.0297384 = phi i32 [ 0, %.lr.ph385 ], [ %270, %.loopexit ] - %220 = load i32, ptr %154, align 8 - %221 = icmp slt i32 %220, %155 - br i1 %221, label %222, label %.critedge19 - -222: ; preds = %219 - %223 = call i32 @jReadScanlines(ptr noundef nonnull %32, ptr noundef nonnull %21, i32 noundef 1) #13 - %224 = load ptr, ptr %157, align 8 - %225 = load ptr, ptr %21, align 8 - %226 = load i32, ptr %135, align 4 - %227 = mul nsw i32 %226, %8 - %228 = sext i32 %227 to i64 - %229 = getelementptr inbounds i8, ptr %225, i64 %228 - %230 = icmp ugt ptr %212, %229 - br i1 %or.cond358, label %231, label %237 - -231: ; preds = %222 - br i1 %230, label %232, label %.critedge21 - -232: ; preds = %231 - %233 = ptrtoint ptr %229 to i64 - %234 = sub i64 %216, %233 - %235 = load i32, ptr %159, align 8 - %236 = zext i32 %235 to i64 - %spec.select359 = call i64 @llvm.umin.i64(i64 %234, i64 %236) - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %224, ptr align 1 %229, i64 %spec.select359, i1 false) + %216 = load i8, ptr %151, align 8 + %217 = icmp eq i8 %216, 0 + br i1 %217, label %218, label %.critedge19, !llvm.loop !12 + +218: ; preds = %.lr.ph385, %.loopexit + %.0297384 = phi i32 [ 0, %.lr.ph385 ], [ %269, %.loopexit ] + %219 = load i32, ptr %153, align 8 + %220 = icmp slt i32 %219, %154 + br i1 %220, label %221, label %.critedge19 + +221: ; preds = %218 + %222 = call i32 @jReadScanlines(ptr noundef nonnull %32, ptr noundef nonnull %21, i32 noundef 1) #13 + %223 = load ptr, ptr %156, align 8 + %224 = load ptr, ptr %21, align 8 + %225 = load i32, ptr %134, align 4 + %226 = mul nsw i32 %225, %8 + %227 = sext i32 %226 to i64 + %228 = getelementptr inbounds i8, ptr %224, i64 %227 + %229 = icmp ugt ptr %211, %228 + br i1 %or.cond358, label %230, label %236 + +230: ; preds = %221 + br i1 %229, label %231, label %.critedge21 + +231: ; preds = %230 + %232 = ptrtoint ptr %228 to i64 + %233 = sub i64 %215, %232 + %234 = load i32, ptr %158, align 8 + %235 = zext i32 %234 to i64 + %spec.select359 = call i64 @llvm.umin.i64(i64 %233, i64 %235) + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %223, ptr align 1 %228, i64 %spec.select359, i1 false) br label %.critedge21 -237: ; preds = %222 - br i1 %230, label %.lr.ph380.split.us, label %.critedge21 +236: ; preds = %221 + br i1 %229, label %.lr.ph380.split.us, label %.critedge21 -.lr.ph380.split.us: ; preds = %237, %._crit_edge374.us - %.1378.us = phi i64 [ %246, %._crit_edge374.us ], [ %158, %237 ] - %.0300377.us = phi ptr [ %245, %._crit_edge374.us ], [ %224, %237 ] - %.0302376.us = phi ptr [ %247, %._crit_edge374.us ], [ %229, %237 ] - %238 = load i32, ptr %159, align 8 - %239 = zext i32 %238 to i64 - %.not348.us = icmp samesign ugt i64 %.1378.us, %239 +.lr.ph380.split.us: ; preds = %236, %._crit_edge374.us + %.1378.us = phi i64 [ %245, %._crit_edge374.us ], [ %157, %236 ] + %.0300377.us = phi ptr [ %244, %._crit_edge374.us ], [ %223, %236 ] + %.0302376.us = phi ptr [ %246, %._crit_edge374.us ], [ %228, %236 ] + %237 = load i32, ptr %158, align 8 + %238 = zext i32 %237 to i64 + %.not348.us = icmp samesign ugt i64 %.1378.us, %238 br i1 %.not348.us, label %.critedge21, label %.preheader.us .preheader.us: ; preds = %.lr.ph380.split.us, %.preheader.us %indvars.iv392 = phi i64 [ %indvars.iv.next393, %.preheader.us ], [ 0, %.lr.ph380.split.us ] - %.1301371.us = phi ptr [ %245, %.preheader.us ], [ %.0300377.us, %.lr.ph380.split.us ] - %240 = getelementptr inbounds nuw i32, ptr %22, i64 %indvars.iv392 - %241 = load i32, ptr %240, align 4 - %242 = sext i32 %241 to i64 - %243 = getelementptr inbounds i8, ptr %.0302376.us, i64 %242 - %244 = load i8, ptr %243, align 1 - %245 = getelementptr inbounds nuw i8, ptr %.1301371.us, i64 1 - store i8 %244, ptr %.1301371.us, align 1 + %.1301371.us = phi ptr [ %244, %.preheader.us ], [ %.0300377.us, %.lr.ph380.split.us ] + %239 = getelementptr inbounds nuw i32, ptr %22, i64 %indvars.iv392 + %240 = load i32, ptr %239, align 4 + %241 = sext i32 %240 to i64 + %242 = getelementptr inbounds i8, ptr %.0302376.us, i64 %241 + %243 = load i8, ptr %242, align 1 + %244 = getelementptr inbounds nuw i8, ptr %.1301371.us, i64 1 + store i8 %243, ptr %.1301371.us, align 1 %indvars.iv.next393 = add nuw nsw i64 %indvars.iv392, 1 - %exitcond396.not = icmp eq i64 %indvars.iv.next393, %158 + %exitcond396.not = icmp eq i64 %indvars.iv.next393, %157 br i1 %exitcond396.not, label %._crit_edge374.us, label %.preheader.us, !llvm.loop !13 ._crit_edge374.us: ; preds = %.preheader.us - %246 = add nuw nsw i64 %.1378.us, %158 - %247 = getelementptr inbounds i8, ptr %.0302376.us, i64 %215 - %248 = icmp ult ptr %247, %212 - br i1 %248, label %.lr.ph380.split.us, label %.critedge21, !llvm.loop !14 - -.critedge21: ; preds = %._crit_edge374.us, %.lr.ph380.split.us, %237, %231, %232 - %249 = load ptr, ptr %160, align 8 - %.not.i.i = icmp eq ptr %249, null - br i1 %.not.i.i, label %unpinStreamBuffer.exit.i, label %250 - -250: ; preds = %.critedge21 - %251 = load ptr, ptr %76, align 8 - %252 = icmp eq ptr %251, null - %253 = ptrtoint ptr %251 to i64 - %254 = ptrtoint ptr %249 to i64 - %255 = sub i64 %253, %254 - %.sink.i.i = select i1 %252, i64 -1, i64 %255 - store i64 %.sink.i.i, ptr %161, align 8 - %256 = load ptr, ptr %0, align 8 - %257 = getelementptr inbounds nuw i8, ptr %256, i64 1784 - %258 = load ptr, ptr %257, align 8 - %259 = load ptr, ptr %162, align 8 - call void %258(ptr noundef nonnull %0, ptr noundef %259, ptr noundef nonnull %249, i32 noundef 0) #13 - store ptr null, ptr %160, align 8 + %245 = add nuw nsw i64 %.1378.us, %157 + %246 = getelementptr inbounds i8, ptr %.0302376.us, i64 %214 + %247 = icmp ult ptr %246, %211 + br i1 %247, label %.lr.ph380.split.us, label %.critedge21, !llvm.loop !14 + +.critedge21: ; preds = %._crit_edge374.us, %.lr.ph380.split.us, %236, %230, %231 + %248 = load ptr, ptr %159, align 8 + %.not.i.i = icmp eq ptr %248, null + br i1 %.not.i.i, label %unpinStreamBuffer.exit.i, label %249 + +249: ; preds = %.critedge21 + %250 = load ptr, ptr %76, align 8 + %251 = icmp eq ptr %250, null + %252 = ptrtoint ptr %250 to i64 + %253 = ptrtoint ptr %248 to i64 + %254 = sub i64 %252, %253 + %.sink.i.i = select i1 %251, i64 -1, i64 %254 + store i64 %.sink.i.i, ptr %160, align 8 + %255 = load ptr, ptr %0, align 8 + %256 = getelementptr inbounds nuw i8, ptr %255, i64 1784 + %257 = load ptr, ptr %256, align 8 + %258 = load ptr, ptr %161, align 8 + call void %257(ptr noundef nonnull %0, ptr noundef %258, ptr noundef nonnull %248, i32 noundef 0) #13 + store ptr null, ptr %159, align 8 br label %unpinStreamBuffer.exit.i -unpinStreamBuffer.exit.i: ; preds = %250, %.critedge21 - %260 = load ptr, ptr %157, align 8 - %.not.i5.i = icmp eq ptr %260, null - br i1 %.not.i5.i, label %RELEASE_ARRAYS.exit, label %261 - -261: ; preds = %unpinStreamBuffer.exit.i - %262 = load ptr, ptr %0, align 8 - %263 = getelementptr inbounds nuw i8, ptr %262, i64 1784 - %264 = load ptr, ptr %263, align 8 - %265 = load ptr, ptr %77, align 8 - call void %264(ptr noundef nonnull %0, ptr noundef %265, ptr noundef nonnull %260, i32 noundef 0) #13 - store ptr null, ptr %157, align 8 +unpinStreamBuffer.exit.i: ; preds = %249, %.critedge21 + %259 = load ptr, ptr %156, align 8 + %.not.i5.i = icmp eq ptr %259, null + br i1 %.not.i5.i, label %RELEASE_ARRAYS.exit, label %260 + +260: ; preds = %unpinStreamBuffer.exit.i + %261 = load ptr, ptr %0, align 8 + %262 = getelementptr inbounds nuw i8, ptr %261, i64 1784 + %263 = load ptr, ptr %262, align 8 + %264 = load ptr, ptr %77, align 8 + call void %263(ptr noundef nonnull %0, ptr noundef %264, ptr noundef nonnull %259, i32 noundef 0) #13 + store ptr null, ptr %156, align 8 br label %RELEASE_ARRAYS.exit -RELEASE_ARRAYS.exit: ; preds = %unpinStreamBuffer.exit.i, %261 - %266 = load ptr, ptr %0, align 8 - %267 = getelementptr inbounds nuw i8, ptr %266, i64 488 - %268 = load ptr, ptr %267, align 8 - %269 = load ptr, ptr @JPEGImageReader_acceptPixelsID, align 8 - %270 = add nuw nsw i32 %.0297384, 1 - call void (ptr, ptr, ptr, ...) %268(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %269, i32 noundef %.0297384, i32 noundef %125) #13 - %271 = load ptr, ptr %0, align 8 - %272 = getelementptr inbounds nuw i8, ptr %271, i64 120 - %273 = load ptr, ptr %272, align 8 - %274 = call ptr %273(ptr noundef nonnull %0) #13 - %.not349 = icmp eq ptr %274, null - br i1 %.not349, label %275, label %GET_ARRAYS.exit.thread - -275: ; preds = %RELEASE_ARRAYS.exit - %276 = load ptr, ptr %162, align 8 - %.not.i.i361 = icmp eq ptr %276, null - br i1 %.not.i.i361, label %287, label %277 - -277: ; preds = %275 - %278 = load ptr, ptr %0, align 8 - %279 = getelementptr inbounds nuw i8, ptr %278, i64 1776 - %280 = load ptr, ptr %279, align 8 - %281 = call ptr %280(ptr noundef nonnull %0, ptr noundef nonnull %276, ptr noundef null) #13 - store ptr %281, ptr %160, align 8 - %282 = icmp eq ptr %281, null - br i1 %282, label %GET_ARRAYS.exit.thread, label %283 - -283: ; preds = %277 - %284 = load i64, ptr %161, align 8 - %.not13.i.i = icmp eq i64 %284, -1 - br i1 %.not13.i.i, label %287, label %285 - -285: ; preds = %283 - %286 = getelementptr inbounds i8, ptr %281, i64 %284 - store ptr %286, ptr %76, align 8 - br label %287 - -287: ; preds = %285, %283, %275 - %288 = load ptr, ptr %77, align 8 - %.not.i8.i = icmp eq ptr %288, null - br i1 %.not.i8.i, label %GET_ARRAYS.exit, label %289 - -289: ; preds = %287 - %290 = load ptr, ptr %0, align 8 - %291 = getelementptr inbounds nuw i8, ptr %290, i64 1776 - %292 = load ptr, ptr %291, align 8 - %293 = call ptr %292(ptr noundef nonnull %0, ptr noundef nonnull %288, ptr noundef null) #13 - store ptr %293, ptr %157, align 8 - %294 = icmp eq ptr %293, null - br i1 %294, label %295, label %GET_ARRAYS.exit - -295: ; preds = %289 - %296 = load ptr, ptr %160, align 8 - %.not.i.i.i = icmp eq ptr %296, null +RELEASE_ARRAYS.exit: ; preds = %unpinStreamBuffer.exit.i, %260 + %265 = load ptr, ptr %0, align 8 + %266 = getelementptr inbounds nuw i8, ptr %265, i64 488 + %267 = load ptr, ptr %266, align 8 + %268 = load ptr, ptr @JPEGImageReader_acceptPixelsID, align 8 + %269 = add nuw nsw i32 %.0297384, 1 + call void (ptr, ptr, ptr, ...) %267(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %268, i32 noundef %.0297384, i32 noundef %125) #13 + %270 = load ptr, ptr %0, align 8 + %271 = getelementptr inbounds nuw i8, ptr %270, i64 120 + %272 = load ptr, ptr %271, align 8 + %273 = call ptr %272(ptr noundef nonnull %0) #13 + %.not349 = icmp eq ptr %273, null + br i1 %.not349, label %274, label %GET_ARRAYS.exit.thread + +274: ; preds = %RELEASE_ARRAYS.exit + %275 = load ptr, ptr %161, align 8 + %.not.i.i361 = icmp eq ptr %275, null + br i1 %.not.i.i361, label %286, label %276 + +276: ; preds = %274 + %277 = load ptr, ptr %0, align 8 + %278 = getelementptr inbounds nuw i8, ptr %277, i64 1776 + %279 = load ptr, ptr %278, align 8 + %280 = call ptr %279(ptr noundef nonnull %0, ptr noundef nonnull %275, ptr noundef null) #13 + store ptr %280, ptr %159, align 8 + %281 = icmp eq ptr %280, null + br i1 %281, label %GET_ARRAYS.exit.thread, label %282 + +282: ; preds = %276 + %283 = load i64, ptr %160, align 8 + %.not13.i.i = icmp eq i64 %283, -1 + br i1 %.not13.i.i, label %286, label %284 + +284: ; preds = %282 + %285 = getelementptr inbounds i8, ptr %280, i64 %283 + store ptr %285, ptr %76, align 8 + br label %286 + +286: ; preds = %284, %282, %274 + %287 = load ptr, ptr %77, align 8 + %.not.i8.i = icmp eq ptr %287, null + br i1 %.not.i8.i, label %GET_ARRAYS.exit, label %288 + +288: ; preds = %286 + %289 = load ptr, ptr %0, align 8 + %290 = getelementptr inbounds nuw i8, ptr %289, i64 1776 + %291 = load ptr, ptr %290, align 8 + %292 = call ptr %291(ptr noundef nonnull %0, ptr noundef nonnull %287, ptr noundef null) #13 + store ptr %292, ptr %156, align 8 + %293 = icmp eq ptr %292, null + br i1 %293, label %294, label %GET_ARRAYS.exit + +294: ; preds = %288 + %295 = load ptr, ptr %159, align 8 + %.not.i.i.i = icmp eq ptr %295, null br i1 %.not.i.i.i, label %GET_ARRAYS.exit.thread, label %unpinStreamBuffer.exit.i.i -unpinStreamBuffer.exit.i.i: ; preds = %295 - %297 = load ptr, ptr %76, align 8 - %298 = icmp eq ptr %297, null - %299 = ptrtoint ptr %297 to i64 - %300 = ptrtoint ptr %296 to i64 - %301 = sub i64 %299, %300 - %.sink.i.i.i = select i1 %298, i64 -1, i64 %301 - store i64 %.sink.i.i.i, ptr %161, align 8 - %302 = load ptr, ptr %0, align 8 - %303 = getelementptr inbounds nuw i8, ptr %302, i64 1784 - %304 = load ptr, ptr %303, align 8 - %305 = load ptr, ptr %162, align 8 - call void %304(ptr noundef nonnull %0, ptr noundef %305, ptr noundef nonnull %296, i32 noundef 0) #13 - store ptr null, ptr %160, align 8 - %.pre.i = load ptr, ptr %157, align 8 +unpinStreamBuffer.exit.i.i: ; preds = %294 + %296 = load ptr, ptr %76, align 8 + %297 = icmp eq ptr %296, null + %298 = ptrtoint ptr %296 to i64 + %299 = ptrtoint ptr %295 to i64 + %300 = sub i64 %298, %299 + %.sink.i.i.i = select i1 %297, i64 -1, i64 %300 + store i64 %.sink.i.i.i, ptr %160, align 8 + %301 = load ptr, ptr %0, align 8 + %302 = getelementptr inbounds nuw i8, ptr %301, i64 1784 + %303 = load ptr, ptr %302, align 8 + %304 = load ptr, ptr %161, align 8 + call void %303(ptr noundef nonnull %0, ptr noundef %304, ptr noundef nonnull %295, i32 noundef 0) #13 + store ptr null, ptr %159, align 8 + %.pre.i = load ptr, ptr %156, align 8 %.not.i5.i.i = icmp eq ptr %.pre.i, null - br i1 %.not.i5.i.i, label %GET_ARRAYS.exit.thread, label %306 - -306: ; preds = %unpinStreamBuffer.exit.i.i - %307 = load ptr, ptr %0, align 8 - %308 = getelementptr inbounds nuw i8, ptr %307, i64 1784 - %309 = load ptr, ptr %308, align 8 - %310 = load ptr, ptr %77, align 8 - call void %309(ptr noundef nonnull %0, ptr noundef %310, ptr noundef nonnull %.pre.i, i32 noundef 0) #13 - store ptr null, ptr %157, align 8 + br i1 %.not.i5.i.i, label %GET_ARRAYS.exit.thread, label %305 + +305: ; preds = %unpinStreamBuffer.exit.i.i + %306 = load ptr, ptr %0, align 8 + %307 = getelementptr inbounds nuw i8, ptr %306, i64 1784 + %308 = load ptr, ptr %307, align 8 + %309 = load ptr, ptr %77, align 8 + call void %308(ptr noundef nonnull %0, ptr noundef %309, ptr noundef nonnull %.pre.i, i32 noundef 0) #13 + store ptr null, ptr %156, align 8 br label %GET_ARRAYS.exit.thread -GET_ARRAYS.exit.thread: ; preds = %295, %306, %unpinStreamBuffer.exit.i.i, %277, %RELEASE_ARRAYS.exit - %311 = load ptr, ptr %32, align 8 - %312 = load ptr, ptr %311, align 8 - call void %312(ptr noundef nonnull %32) #13 +GET_ARRAYS.exit.thread: ; preds = %294, %305, %unpinStreamBuffer.exit.i.i, %276, %RELEASE_ARRAYS.exit + %310 = load ptr, ptr %32, align 8 + %311 = load ptr, ptr %310, align 8 + call void %311(ptr noundef nonnull %32) #13 br label %GET_ARRAYS.exit -GET_ARRAYS.exit: ; preds = %289, %287, %GET_ARRAYS.exit.thread - %313 = load i32, ptr %154, align 8 - %314 = sub i32 %155, %313 - %spec.select360 = call i32 @llvm.smin.i32(i32 %163, i32 %314) - %315 = icmp sgt i32 %spec.select360, 0 - br i1 %315, label %.lr.ph383, label %.loopexit +GET_ARRAYS.exit: ; preds = %288, %286, %GET_ARRAYS.exit.thread + %312 = load i32, ptr %153, align 8 + %313 = sub i32 %154, %312 + %spec.select360 = call i32 @llvm.smin.i32(i32 %162, i32 %313) + %314 = icmp sgt i32 %spec.select360, 0 + br i1 %314, label %.lr.ph383, label %.loopexit .lr.ph383: ; preds = %GET_ARRAYS.exit, %.lr.ph383 - %.2382 = phi i32 [ %317, %.lr.ph383 ], [ 0, %GET_ARRAYS.exit ] - %316 = call i32 @jReadScanlines(ptr noundef nonnull %32, ptr noundef nonnull %21, i32 noundef 1) #13 - %317 = add nuw nsw i32 %.2382, 1 - %exitcond397.not = icmp eq i32 %317, %spec.select360 + %.2382 = phi i32 [ %316, %.lr.ph383 ], [ 0, %GET_ARRAYS.exit ] + %315 = call i32 @jReadScanlines(ptr noundef nonnull %32, ptr noundef nonnull %21, i32 noundef 1) #13 + %316 = add nuw nsw i32 %.2382, 1 + %exitcond397.not = icmp eq i32 %316, %spec.select360 br i1 %exitcond397.not, label %.loopexit, label %.lr.ph383, !llvm.loop !15 -.critedge19: ; preds = %204, %219, %.loopexit, %200 - br i1 %126, label %318, label %325 +.critedge19: ; preds = %203, %218, %.loopexit, %199 + br i1 %126, label %317, label %324 + +317: ; preds = %.critedge19 + %318 = call i32 @jFinOutput(ptr noundef nonnull %32) #13 + %319 = call i32 @jInComplete(ptr noundef nonnull %32) #13 + %.not343 = icmp eq i32 %319, 0 + br i1 %.not343, label %320, label %323 + +320: ; preds = %317 + %321 = load i32, ptr %152, align 4 + %322 = icmp sgt i32 %321, %.0295 + br i1 %322, label %323, label %324 + +323: ; preds = %320, %317 + br label %324 + +324: ; preds = %.critedge19, %320, %323 + %.not335 = phi i1 [ false, %323 ], [ true, %320 ], [ false, %.critedge19 ] + br i1 %.not337, label %340, label %325 + +325: ; preds = %324 + %326 = load ptr, ptr %76, align 8 + call fastcc void @RELEASE_ARRAYS(ptr noundef nonnull %0, ptr noundef nonnull %74, ptr noundef %326) + %327 = load ptr, ptr %0, align 8 + %328 = getelementptr inbounds nuw i8, ptr %327, i64 488 + %329 = load ptr, ptr %328, align 8 + %330 = load ptr, ptr @JPEGImageReader_passCompleteID, align 8 + call void (ptr, ptr, ptr, ...) %329(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %330) #13 + %331 = load ptr, ptr %0, align 8 + %332 = getelementptr inbounds nuw i8, ptr %331, i64 120 + %333 = load ptr, ptr %332, align 8 + %334 = call ptr %333(ptr noundef nonnull %0) #13 + %.not345 = icmp eq ptr %334, null + br i1 %.not345, label %335, label %337 + +335: ; preds = %325 + %336 = call fastcc i32 @GET_ARRAYS(ptr noundef nonnull %0, ptr noundef nonnull %74, ptr noundef nonnull %76) + %.not346 = icmp eq i32 %336, 0 + br i1 %.not346, label %337, label %340 + +337: ; preds = %335, %325 + %338 = load ptr, ptr %32, align 8 + %339 = load ptr, ptr %338, align 8 + call void %339(ptr noundef nonnull %32) #13 + br label %340 -318: ; preds = %.critedge19 - %319 = call i32 @jFinOutput(ptr noundef nonnull %32) #13 - %320 = call i32 @jInComplete(ptr noundef nonnull %32) #13 - %.not343 = icmp eq i32 %320, 0 - br i1 %.not343, label %321, label %324 +340: ; preds = %335, %337, %324 + br i1 %.not335, label %166, label %341, !llvm.loop !16 -321: ; preds = %318 - %322 = load i32, ptr %153, align 4 - %323 = icmp sgt i32 %322, %.0295 - br i1 %323, label %324, label %325 +341: ; preds = %340 + %342 = load i32, ptr %153, align 8 + %343 = getelementptr inbounds nuw i8, ptr %32, i64 140 + %344 = load i32, ptr %343, align 4 + %.not336 = icmp eq i32 %342, %344 + br i1 %.not336, label %345, label %348 -324: ; preds = %321, %318 - br label %325 +345: ; preds = %341 + %346 = load i8, ptr %151, align 8 + %347 = icmp eq i8 %346, 1 + br i1 %347, label %348, label %349 -325: ; preds = %.critedge19, %321, %324 - %.not335 = phi i1 [ false, %324 ], [ true, %321 ], [ false, %.critedge19 ] - br i1 %.not337, label %341, label %326 - -326: ; preds = %325 - %327 = load ptr, ptr %76, align 8 - call fastcc void @RELEASE_ARRAYS(ptr noundef nonnull %0, ptr noundef nonnull %74, ptr noundef %327) - %328 = load ptr, ptr %0, align 8 - %329 = getelementptr inbounds nuw i8, ptr %328, i64 488 - %330 = load ptr, ptr %329, align 8 - %331 = load ptr, ptr @JPEGImageReader_passCompleteID, align 8 - call void (ptr, ptr, ptr, ...) %330(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %331) #13 - %332 = load ptr, ptr %0, align 8 - %333 = getelementptr inbounds nuw i8, ptr %332, i64 120 - %334 = load ptr, ptr %333, align 8 - %335 = call ptr %334(ptr noundef nonnull %0) #13 - %.not345 = icmp eq ptr %335, null - br i1 %.not345, label %336, label %338 - -336: ; preds = %326 - %337 = call fastcc i32 @GET_ARRAYS(ptr noundef nonnull %0, ptr noundef nonnull %74, ptr noundef nonnull %76) - %.not346 = icmp eq i32 %337, 0 - br i1 %.not346, label %338, label %341 - -338: ; preds = %336, %326 - %339 = load ptr, ptr %32, align 8 - %340 = load ptr, ptr %339, align 8 - call void %340(ptr noundef nonnull %32) #13 - br label %341 - -341: ; preds = %336, %338, %325 - br i1 %.not335, label %167, label %342, !llvm.loop !16 - -342: ; preds = %341 - %343 = load i32, ptr %154, align 8 - %344 = getelementptr inbounds nuw i8, ptr %32, i64 140 - %345 = load i32, ptr %344, align 4 - %.not336 = icmp eq i32 %343, %345 - br i1 %.not336, label %346, label %349 - -346: ; preds = %342 - %347 = load i8, ptr %152, align 8 - %348 = icmp eq i8 %347, 1 - br i1 %348, label %349, label %350 - -349: ; preds = %346, %342 +348: ; preds = %345, %341 call void @jAbrtDecompress(ptr noundef nonnull %32) #13 - br label %366 - -350: ; preds = %346 - %351 = call i32 @jInComplete(ptr noundef nonnull %32) #13 - %352 = icmp eq i32 %351, 0 - %or.cond23 = and i1 %126, %352 - br i1 %or.cond23, label %353, label %364 - -353: ; preds = %350 - %354 = load i32, ptr %153, align 4 - %355 = icmp sgt i32 %354, %.0295 - br i1 %355, label %356, label %364 - -356: ; preds = %353 - %357 = load ptr, ptr %75, align 8 - %358 = getelementptr inbounds nuw i8, ptr %357, i64 48 - %359 = load ptr, ptr %358, align 8 - call void %359(ptr noundef nonnull %32) #13 + br label %365 + +349: ; preds = %345 + %350 = call i32 @jInComplete(ptr noundef nonnull %32) #13 + %351 = icmp eq i32 %350, 0 + %or.cond23 = and i1 %126, %351 + br i1 %or.cond23, label %352, label %363 + +352: ; preds = %349 + %353 = load i32, ptr %152, align 4 + %354 = icmp sgt i32 %353, %.0295 + br i1 %354, label %355, label %363 + +355: ; preds = %352 + %356 = load ptr, ptr %75, align 8 + %357 = getelementptr inbounds nuw i8, ptr %356, i64 48 + %358 = load ptr, ptr %357, align 8 + call void %358(ptr noundef nonnull %32) #13 call void @jAbort(ptr noundef nonnull %32) #13 - %360 = load ptr, ptr %0, align 8 - %361 = getelementptr inbounds nuw i8, ptr %360, i64 488 - %362 = load ptr, ptr %361, align 8 - %363 = load ptr, ptr @JPEGImageReader_skipPastImageID, align 8 - call void (ptr, ptr, ptr, ...) %362(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %363, i32 noundef %2) #13 - br label %366 - -364: ; preds = %353, %350 - %365 = call i32 @jFinDecompress(ptr noundef nonnull %32) #13 - br label %366 - -366: ; preds = %356, %364, %349 - %367 = load ptr, ptr %21, align 8 - call void @free(ptr noundef %367) #13 - %368 = load ptr, ptr %76, align 8 - call fastcc void @RELEASE_ARRAYS(ptr noundef nonnull %0, ptr noundef nonnull %74, ptr noundef %368) - %369 = load i8, ptr %152, align 8 - br label %370 - -370: ; preds = %366, %164, %143, %137, %106, %100, %80, %63, %54, %30, %26 - %.0288 = phi i8 [ 0, %26 ], [ 0, %30 ], [ 0, %54 ], [ 0, %63 ], [ %82, %80 ], [ %102, %100 ], [ %111, %106 ], [ %140, %137 ], [ %146, %143 ], [ %166, %164 ], [ %369, %366 ] + %359 = load ptr, ptr %0, align 8 + %360 = getelementptr inbounds nuw i8, ptr %359, i64 488 + %361 = load ptr, ptr %360, align 8 + %362 = load ptr, ptr @JPEGImageReader_skipPastImageID, align 8 + call void (ptr, ptr, ptr, ...) %361(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %362, i32 noundef %2) #13 + br label %365 + +363: ; preds = %352, %349 + %364 = call i32 @jFinDecompress(ptr noundef nonnull %32) #13 + br label %365 + +365: ; preds = %355, %363, %348 + %366 = load ptr, ptr %21, align 8 + call void @free(ptr noundef %366) #13 + %367 = load ptr, ptr %76, align 8 + call fastcc void @RELEASE_ARRAYS(ptr noundef nonnull %0, ptr noundef nonnull %74, ptr noundef %367) + %368 = load i8, ptr %151, align 8 + br label %369 + +369: ; preds = %365, %163, %142, %136, %106, %100, %80, %63, %54, %30, %26 + %.0288 = phi i8 [ 0, %26 ], [ 0, %30 ], [ 0, %54 ], [ 0, %63 ], [ %82, %80 ], [ %102, %100 ], [ %111, %106 ], [ %139, %136 ], [ %145, %142 ], [ %165, %163 ], [ %368, %365 ] ret i8 %.0288 } @@ -6089,6 +6087,9 @@ declare void @llvm.lifetime.end.p0(ptr captures(none)) #12 ; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.umin.i32(i32, i32) #10 +; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) +declare i32 @llvm.sadd.sat.i32(i32, i32) #10 + attributes #0 = { mustprogress nofree norecurse nosync nounwind willreturn memory(write, argmem: readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/php/optimized/zend_hash.ll b/bench/php/optimized/zend_hash.ll index a4c2aa685c1..bb3fd840b7e 100644 --- a/bench/php/optimized/zend_hash.ll +++ b/bench/php/optimized/zend_hash.ll @@ -7035,35 +7035,33 @@ zend_hash_real_init_mixed.exit: ; preds = %120, %103, %145, %. %163 = getelementptr inbounds nuw i8, ptr %0, i64 40 %164 = load i64, ptr %163, align 8, !tbaa !30 %.not127.i = icmp slt i64 %1, %164 - br i1 %.not127.i, label %168, label %165 + br i1 %.not127.i, label %167, label %165 165: ; preds = %zend_hash_real_init_mixed.exit - %.not128.i = icmp eq i64 %1, 9223372036854775807 - %166 = add nsw i64 %1, 1 - %167 = select i1 %.not128.i, i64 9223372036854775807, i64 %166 - store i64 %167, ptr %163, align 8, !tbaa !30 - br label %168 - -168: ; preds = %165, %zend_hash_real_init_mixed.exit - %169 = getelementptr inbounds nuw i8, ptr %0, i64 28 - %170 = load i32, ptr %169, align 4, !tbaa !28 - %171 = add i32 %170, 1 - store i32 %171, ptr %169, align 4, !tbaa !28 - %172 = getelementptr inbounds nuw i8, ptr %156, i64 16 - store i64 %1, ptr %172, align 8, !tbaa !23 - %173 = getelementptr inbounds nuw i8, ptr %156, i64 24 - store ptr null, ptr %173, align 8, !tbaa !18 - %174 = load ptr, ptr %2, align 8, !tbaa !5 - %175 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %176 = load i32, ptr %175, align 8, !tbaa !5 - store ptr %174, ptr %156, align 8, !tbaa !5 + %166 = tail call i64 @llvm.sadd.sat.i64(i64 %1, i64 1) + store i64 %166, ptr %163, align 8, !tbaa !30 + br label %167 + +167: ; preds = %165, %zend_hash_real_init_mixed.exit + %168 = getelementptr inbounds nuw i8, ptr %0, i64 28 + %169 = load i32, ptr %168, align 4, !tbaa !28 + %170 = add i32 %169, 1 + store i32 %170, ptr %168, align 4, !tbaa !28 + %171 = getelementptr inbounds nuw i8, ptr %156, i64 16 + store i64 %1, ptr %171, align 8, !tbaa !23 + %172 = getelementptr inbounds nuw i8, ptr %156, i64 24 + store ptr null, ptr %172, align 8, !tbaa !18 + %173 = load ptr, ptr %2, align 8, !tbaa !5 + %174 = getelementptr inbounds nuw i8, ptr %2, i64 8 + %175 = load i32, ptr %174, align 8, !tbaa !5 + store ptr %173, ptr %156, align 8, !tbaa !5 br label %_zend_hash_index_add_or_update_i.exit.sink.split -_zend_hash_index_add_or_update_i.exit.sink.split: ; preds = %168, %.loopexit - %.sink21 = phi ptr [ %26, %.loopexit ], [ %156, %168 ] - %.sink = phi i32 [ %42, %.loopexit ], [ %176, %168 ] - %177 = getelementptr inbounds nuw i8, ptr %.sink21, i64 8 - store i32 %.sink, ptr %177, align 8, !tbaa !5 +_zend_hash_index_add_or_update_i.exit.sink.split: ; preds = %167, %.loopexit + %.sink21 = phi ptr [ %26, %.loopexit ], [ %156, %167 ] + %.sink = phi i32 [ %42, %.loopexit ], [ %175, %167 ] + %176 = getelementptr inbounds nuw i8, ptr %.sink21, i64 8 + store i32 %.sink, ptr %176, align 8, !tbaa !5 br label %_zend_hash_index_add_or_update_i.exit _zend_hash_index_add_or_update_i.exit: ; preds = %138, %_zend_hash_index_add_or_update_i.exit.sink.split, %12 @@ -7394,35 +7392,33 @@ zend_hash_real_init_mixed.exit: ; preds = %120, %103, %128, %1 %146 = getelementptr inbounds nuw i8, ptr %0, i64 40 %147 = load i64, ptr %146, align 8, !tbaa !30 %.not127.i = icmp slt i64 %1, %147 - br i1 %.not127.i, label %151, label %148 + br i1 %.not127.i, label %150, label %148 148: ; preds = %zend_hash_real_init_mixed.exit - %.not128.i = icmp eq i64 %1, 9223372036854775807 - %149 = add nsw i64 %1, 1 - %150 = select i1 %.not128.i, i64 9223372036854775807, i64 %149 - store i64 %150, ptr %146, align 8, !tbaa !30 - br label %151 - -151: ; preds = %148, %zend_hash_real_init_mixed.exit - %152 = getelementptr inbounds nuw i8, ptr %0, i64 28 - %153 = load i32, ptr %152, align 4, !tbaa !28 - %154 = add i32 %153, 1 - store i32 %154, ptr %152, align 4, !tbaa !28 - %155 = getelementptr inbounds nuw i8, ptr %139, i64 16 - store i64 %1, ptr %155, align 8, !tbaa !23 - %156 = getelementptr inbounds nuw i8, ptr %139, i64 24 - store ptr null, ptr %156, align 8, !tbaa !18 - %157 = load ptr, ptr %2, align 8, !tbaa !5 - %158 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %159 = load i32, ptr %158, align 8, !tbaa !5 - store ptr %157, ptr %139, align 8, !tbaa !5 + %149 = tail call i64 @llvm.sadd.sat.i64(i64 %1, i64 1) + store i64 %149, ptr %146, align 8, !tbaa !30 + br label %150 + +150: ; preds = %148, %zend_hash_real_init_mixed.exit + %151 = getelementptr inbounds nuw i8, ptr %0, i64 28 + %152 = load i32, ptr %151, align 4, !tbaa !28 + %153 = add i32 %152, 1 + store i32 %153, ptr %151, align 4, !tbaa !28 + %154 = getelementptr inbounds nuw i8, ptr %139, i64 16 + store i64 %1, ptr %154, align 8, !tbaa !23 + %155 = getelementptr inbounds nuw i8, ptr %139, i64 24 + store ptr null, ptr %155, align 8, !tbaa !18 + %156 = load ptr, ptr %2, align 8, !tbaa !5 + %157 = getelementptr inbounds nuw i8, ptr %2, i64 8 + %158 = load i32, ptr %157, align 8, !tbaa !5 + store ptr %156, ptr %139, align 8, !tbaa !5 br label %_zend_hash_index_add_or_update_i.exit.sink.split -_zend_hash_index_add_or_update_i.exit.sink.split: ; preds = %151, %.loopexit - %.sink13 = phi ptr [ %26, %.loopexit ], [ %139, %151 ] - %.sink = phi i32 [ %42, %.loopexit ], [ %159, %151 ] - %160 = getelementptr inbounds nuw i8, ptr %.sink13, i64 8 - store i32 %.sink, ptr %160, align 8, !tbaa !5 +_zend_hash_index_add_or_update_i.exit.sink.split: ; preds = %150, %.loopexit + %.sink13 = phi ptr [ %26, %.loopexit ], [ %139, %150 ] + %.sink = phi i32 [ %42, %.loopexit ], [ %158, %150 ] + %159 = getelementptr inbounds nuw i8, ptr %.sink13, i64 8 + store i32 %.sink, ptr %159, align 8, !tbaa !5 br label %_zend_hash_index_add_or_update_i.exit _zend_hash_index_add_or_update_i.exit: ; preds = %_zend_hash_index_add_or_update_i.exit.sink.split, %12 @@ -7723,35 +7719,33 @@ zend_hash_real_init_mixed.exit: ; preds = %121, %104, %146, %. store i32 %148, ptr %163, align 4, !tbaa !17 %164 = load i64, ptr %3, align 8, !tbaa !30 %.not127.i = icmp slt i64 %spec.store.select.i, %164 - br i1 %.not127.i, label %168, label %165 + br i1 %.not127.i, label %167, label %165 165: ; preds = %zend_hash_real_init_mixed.exit - %.not128.i = icmp eq i64 %spec.store.select.i, 9223372036854775807 - %166 = add i64 %spec.store.select.i, 1 - %167 = select i1 %.not128.i, i64 9223372036854775807, i64 %166 - store i64 %167, ptr %3, align 8, !tbaa !30 - br label %168 - -168: ; preds = %165, %zend_hash_real_init_mixed.exit - %169 = getelementptr inbounds nuw i8, ptr %0, i64 28 - %170 = load i32, ptr %169, align 4, !tbaa !28 - %171 = add i32 %170, 1 - store i32 %171, ptr %169, align 4, !tbaa !28 - %172 = getelementptr inbounds nuw i8, ptr %157, i64 16 - store i64 %spec.store.select.i, ptr %172, align 8, !tbaa !23 - %173 = getelementptr inbounds nuw i8, ptr %157, i64 24 - store ptr null, ptr %173, align 8, !tbaa !18 - %174 = load ptr, ptr %1, align 8, !tbaa !5 - %175 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %176 = load i32, ptr %175, align 8, !tbaa !5 - store ptr %174, ptr %157, align 8, !tbaa !5 + %166 = tail call i64 @llvm.sadd.sat.i64(i64 %spec.store.select.i, i64 1) + store i64 %166, ptr %3, align 8, !tbaa !30 + br label %167 + +167: ; preds = %165, %zend_hash_real_init_mixed.exit + %168 = getelementptr inbounds nuw i8, ptr %0, i64 28 + %169 = load i32, ptr %168, align 4, !tbaa !28 + %170 = add i32 %169, 1 + store i32 %170, ptr %168, align 4, !tbaa !28 + %171 = getelementptr inbounds nuw i8, ptr %157, i64 16 + store i64 %spec.store.select.i, ptr %171, align 8, !tbaa !23 + %172 = getelementptr inbounds nuw i8, ptr %157, i64 24 + store ptr null, ptr %172, align 8, !tbaa !18 + %173 = load ptr, ptr %1, align 8, !tbaa !5 + %174 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %175 = load i32, ptr %174, align 8, !tbaa !5 + store ptr %173, ptr %157, align 8, !tbaa !5 br label %_zend_hash_index_add_or_update_i.exit.sink.split -_zend_hash_index_add_or_update_i.exit.sink.split: ; preds = %168, %.loopexit - %.sink20 = phi ptr [ %28, %.loopexit ], [ %157, %168 ] - %.sink = phi i32 [ %43, %.loopexit ], [ %176, %168 ] - %177 = getelementptr inbounds nuw i8, ptr %.sink20, i64 8 - store i32 %.sink, ptr %177, align 8, !tbaa !5 +_zend_hash_index_add_or_update_i.exit.sink.split: ; preds = %167, %.loopexit + %.sink20 = phi ptr [ %28, %.loopexit ], [ %157, %167 ] + %.sink = phi i32 [ %43, %.loopexit ], [ %175, %167 ] + %176 = getelementptr inbounds nuw i8, ptr %.sink20, i64 8 + store i32 %.sink, ptr %176, align 8, !tbaa !5 br label %_zend_hash_index_add_or_update_i.exit _zend_hash_index_add_or_update_i.exit: ; preds = %139, %_zend_hash_index_add_or_update_i.exit.sink.split, %14 @@ -7984,35 +7978,33 @@ zend_hash_real_init_mixed.exit: ; preds = %107, %90, %115, %11 store i32 %117, ptr %132, align 4, !tbaa !17 %133 = load i64, ptr %3, align 8, !tbaa !30 %.not127.i = icmp slt i64 %spec.store.select.i, %133 - br i1 %.not127.i, label %137, label %134 + br i1 %.not127.i, label %136, label %134 134: ; preds = %zend_hash_real_init_mixed.exit - %.not128.i = icmp eq i64 %spec.store.select.i, 9223372036854775807 - %135 = add i64 %spec.store.select.i, 1 - %136 = select i1 %.not128.i, i64 9223372036854775807, i64 %135 - store i64 %136, ptr %3, align 8, !tbaa !30 - br label %137 + %135 = tail call i64 @llvm.sadd.sat.i64(i64 %spec.store.select.i, i64 1) + store i64 %135, ptr %3, align 8, !tbaa !30 + br label %136 -137: ; preds = %134, %zend_hash_real_init_mixed.exit - %138 = getelementptr inbounds nuw i8, ptr %0, i64 28 - %139 = load i32, ptr %138, align 4, !tbaa !28 - %140 = add i32 %139, 1 - store i32 %140, ptr %138, align 4, !tbaa !28 - %141 = getelementptr inbounds nuw i8, ptr %126, i64 16 - store i64 %spec.store.select.i, ptr %141, align 8, !tbaa !23 - %142 = getelementptr inbounds nuw i8, ptr %126, i64 24 - store ptr null, ptr %142, align 8, !tbaa !18 - %143 = load ptr, ptr %1, align 8, !tbaa !5 - %144 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %145 = load i32, ptr %144, align 8, !tbaa !5 - store ptr %143, ptr %126, align 8, !tbaa !5 +136: ; preds = %134, %zend_hash_real_init_mixed.exit + %137 = getelementptr inbounds nuw i8, ptr %0, i64 28 + %138 = load i32, ptr %137, align 4, !tbaa !28 + %139 = add i32 %138, 1 + store i32 %139, ptr %137, align 4, !tbaa !28 + %140 = getelementptr inbounds nuw i8, ptr %126, i64 16 + store i64 %spec.store.select.i, ptr %140, align 8, !tbaa !23 + %141 = getelementptr inbounds nuw i8, ptr %126, i64 24 + store ptr null, ptr %141, align 8, !tbaa !18 + %142 = load ptr, ptr %1, align 8, !tbaa !5 + %143 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %144 = load i32, ptr %143, align 8, !tbaa !5 + store ptr %142, ptr %126, align 8, !tbaa !5 br label %_zend_hash_index_add_or_update_i.exit -_zend_hash_index_add_or_update_i.exit: ; preds = %14, %137 - %.sink10 = phi ptr [ %17, %14 ], [ %126, %137 ] - %.sink = phi i32 [ %27, %14 ], [ %145, %137 ] - %146 = getelementptr inbounds nuw i8, ptr %.sink10, i64 8 - store i32 %.sink, ptr %146, align 8, !tbaa !5 +_zend_hash_index_add_or_update_i.exit: ; preds = %14, %136 + %.sink10 = phi ptr [ %17, %14 ], [ %126, %136 ] + %.sink = phi i32 [ %27, %14 ], [ %144, %136 ] + %145 = getelementptr inbounds nuw i8, ptr %.sink10, i64 8 + store i32 %.sink, ptr %145, align 8, !tbaa !5 ret ptr %.sink10 } @@ -8325,35 +8317,33 @@ zend_hash_real_init_mixed.exit: ; preds = %127, %110, %152, %. %170 = getelementptr inbounds nuw i8, ptr %0, i64 40 %171 = load i64, ptr %170, align 8, !tbaa !30 %.not127.i = icmp slt i64 %1, %171 - br i1 %.not127.i, label %175, label %172 + br i1 %.not127.i, label %174, label %172 172: ; preds = %zend_hash_real_init_mixed.exit - %.not128.i = icmp eq i64 %1, 9223372036854775807 - %173 = add nsw i64 %1, 1 - %174 = select i1 %.not128.i, i64 9223372036854775807, i64 %173 - store i64 %174, ptr %170, align 8, !tbaa !30 - br label %175 - -175: ; preds = %172, %zend_hash_real_init_mixed.exit - %176 = getelementptr inbounds nuw i8, ptr %0, i64 28 - %177 = load i32, ptr %176, align 4, !tbaa !28 - %178 = add i32 %177, 1 - store i32 %178, ptr %176, align 4, !tbaa !28 - %179 = getelementptr inbounds nuw i8, ptr %163, i64 16 - store i64 %1, ptr %179, align 8, !tbaa !23 - %180 = getelementptr inbounds nuw i8, ptr %163, i64 24 - store ptr null, ptr %180, align 8, !tbaa !18 - %181 = load ptr, ptr %2, align 8, !tbaa !5 - %182 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %183 = load i32, ptr %182, align 8, !tbaa !5 - store ptr %181, ptr %163, align 8, !tbaa !5 + %173 = tail call i64 @llvm.sadd.sat.i64(i64 %1, i64 1) + store i64 %173, ptr %170, align 8, !tbaa !30 + br label %174 + +174: ; preds = %172, %zend_hash_real_init_mixed.exit + %175 = getelementptr inbounds nuw i8, ptr %0, i64 28 + %176 = load i32, ptr %175, align 4, !tbaa !28 + %177 = add i32 %176, 1 + store i32 %177, ptr %175, align 4, !tbaa !28 + %178 = getelementptr inbounds nuw i8, ptr %163, i64 16 + store i64 %1, ptr %178, align 8, !tbaa !23 + %179 = getelementptr inbounds nuw i8, ptr %163, i64 24 + store ptr null, ptr %179, align 8, !tbaa !18 + %180 = load ptr, ptr %2, align 8, !tbaa !5 + %181 = getelementptr inbounds nuw i8, ptr %2, i64 8 + %182 = load i32, ptr %181, align 8, !tbaa !5 + store ptr %180, ptr %163, align 8, !tbaa !5 br label %_zend_hash_index_add_or_update_i.exit -_zend_hash_index_add_or_update_i.exit: ; preds = %21, %.loopexit, %175 - %.0110.i.sink = phi ptr [ %.0110.i, %21 ], [ %33, %.loopexit ], [ %163, %175 ] - %.sink = phi i32 [ %24, %21 ], [ %49, %.loopexit ], [ %183, %175 ] - %184 = getelementptr inbounds nuw i8, ptr %.0110.i.sink, i64 8 - store i32 %.sink, ptr %184, align 8, !tbaa !5 +_zend_hash_index_add_or_update_i.exit: ; preds = %21, %.loopexit, %174 + %.0110.i.sink = phi ptr [ %.0110.i, %21 ], [ %33, %.loopexit ], [ %163, %174 ] + %.sink = phi i32 [ %24, %21 ], [ %49, %.loopexit ], [ %182, %174 ] + %183 = getelementptr inbounds nuw i8, ptr %.0110.i.sink, i64 8 + store i32 %.sink, ptr %183, align 8, !tbaa !5 ret ptr %.0110.i.sink } @@ -8644,30 +8634,28 @@ zend_hash_real_init_mixed.exit: ; preds = %116, %99, %141, %._ %159 = getelementptr inbounds nuw i8, ptr %0, i64 40 %160 = load i64, ptr %159, align 8, !tbaa !30 %.not127.i = icmp slt i64 %1, %160 - br i1 %.not127.i, label %164, label %161 + br i1 %.not127.i, label %163, label %161 161: ; preds = %zend_hash_real_init_mixed.exit - %.not128.i = icmp eq i64 %1, 9223372036854775807 - %162 = add nsw i64 %1, 1 - %163 = select i1 %.not128.i, i64 9223372036854775807, i64 %162 - store i64 %163, ptr %159, align 8, !tbaa !30 - br label %164 - -164: ; preds = %161, %zend_hash_real_init_mixed.exit - %165 = getelementptr inbounds nuw i8, ptr %0, i64 28 - %166 = load i32, ptr %165, align 4, !tbaa !28 - %167 = add i32 %166, 1 - store i32 %167, ptr %165, align 4, !tbaa !28 - %168 = getelementptr inbounds nuw i8, ptr %152, i64 16 - store i64 %1, ptr %168, align 8, !tbaa !23 - %169 = getelementptr inbounds nuw i8, ptr %152, i64 24 - store ptr null, ptr %169, align 8, !tbaa !18 + %162 = tail call i64 @llvm.sadd.sat.i64(i64 %1, i64 1) + store i64 %162, ptr %159, align 8, !tbaa !30 + br label %163 + +163: ; preds = %161, %zend_hash_real_init_mixed.exit + %164 = getelementptr inbounds nuw i8, ptr %0, i64 28 + %165 = load i32, ptr %164, align 4, !tbaa !28 + %166 = add i32 %165, 1 + store i32 %166, ptr %164, align 4, !tbaa !28 + %167 = getelementptr inbounds nuw i8, ptr %152, i64 16 + store i64 %1, ptr %167, align 8, !tbaa !23 + %168 = getelementptr inbounds nuw i8, ptr %152, i64 24 + store ptr null, ptr %168, align 8, !tbaa !18 br label %_zend_hash_index_add_or_update_i.exit.sink.split -_zend_hash_index_add_or_update_i.exit.sink.split: ; preds = %164, %.loopexit - %.sink21 = phi ptr [ %25, %.loopexit ], [ %152, %164 ] - %170 = getelementptr inbounds nuw i8, ptr %.sink21, i64 8 - store i32 1, ptr %170, align 8, !tbaa !5 +_zend_hash_index_add_or_update_i.exit.sink.split: ; preds = %163, %.loopexit + %.sink21 = phi ptr [ %25, %.loopexit ], [ %152, %163 ] + %169 = getelementptr inbounds nuw i8, ptr %.sink21, i64 8 + store i32 1, ptr %169, align 8, !tbaa !5 br label %_zend_hash_index_add_or_update_i.exit _zend_hash_index_add_or_update_i.exit: ; preds = %134, %_zend_hash_index_add_or_update_i.exit.sink.split, %11 @@ -17984,6 +17972,9 @@ declare void @llvm.lifetime.end.p0(ptr captures(none)) #25 ; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.fshl.i32(i32, i32, i32) #26 +; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) +declare i64 @llvm.sadd.sat.i64(i64, i64) #26 + ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: read) declare i32 @bcmp(ptr captures(none), ptr captures(none), i64) local_unnamed_addr #27 diff --git a/bench/sqlite/optimized/sqlite3.ll b/bench/sqlite/optimized/sqlite3.ll index 67391b9f14a..2270d192d6b 100644 --- a/bench/sqlite/optimized/sqlite3.ll +++ b/bench/sqlite/optimized/sqlite3.ll @@ -253420,11 +253420,8 @@ define internal fastcc void @wherePathSolver(ptr noundef %0, i16 noundef signext br i1 %.not89.i, label %._crit_edge124.i, label %.lr.ph123.i, !llvm.loop !2980 ._crit_edge124.i: ; preds = %96, %91 - %.067.lcssa.i = phi i16 [ %.168.i, %96 ], [ %.067120.i, %91 ] - %.067.lcssa.fr.i = freeze i16 %.067.lcssa.i - %.not90.i = icmp eq i16 %.067.lcssa.fr.i, 32767 - %99 = add nsw i16 %.067.lcssa.fr.i, 1 - %spec.select163.i = select i1 %.not90.i, i16 32767, i16 %99 + %.067.lcssa.ph.i = phi i16 [ %.168.i, %96 ], [ %.067120.i, %91 ] + %99 = tail call i16 @llvm.sadd.sat.i16(i16 %.067.lcssa.ph.i, i16 1) br label %.lr.ph131.i .lr.ph131.i: ; preds = %112, %._crit_edge124.i @@ -253444,11 +253441,11 @@ define internal fastcc void @wherePathSolver(ptr noundef %0, i16 noundef signext 107: ; preds = %104 %108 = getelementptr inbounds nuw i8, ptr %.2129.i, i64 20 %109 = load i16, ptr %108, align 4, !tbaa !2840 - %110 = icmp slt i16 %109, %spec.select163.i + %110 = icmp slt i16 %109, %99 br i1 %110, label %111, label %112 111: ; preds = %107 - store i16 %spec.select163.i, ptr %108, align 4, !tbaa !2840 + store i16 %99, ptr %108, align 4, !tbaa !2840 br label %112 112: ; preds = %111, %107, %104, %.lr.ph131.i @@ -253635,8 +253632,8 @@ computeMxChoice.exit: ; preds = %42, %.loopexit.i, % %.not351 = icmp ne i32 %193, 0 %.pre = load i16, ptr %176, align 8, !tbaa !2988 %194 = icmp slt i16 %.pre, 3 - %or.cond572 = select i1 %.not351, i1 %194, i1 false - br i1 %or.cond572, label %.loopexit, label %195 + %or.cond573 = select i1 %.not351, i1 %194, i1 false + br i1 %or.cond573, label %.loopexit, label %195 195: ; preds = %190 %196 = getelementptr inbounds nuw i8, ptr %.0307429, i64 20 @@ -254300,7 +254297,7 @@ sqlite3LogEstAdd.exit375: ; preds = %372, %378, %380, %3 br i1 %exitcond505.not, label %._crit_edge468, label %497, !llvm.loop !3001 ._crit_edge468: ; preds = %497, %159 - %.2313.lcssa550 = phi ptr [ %141, %159 ], [ %.2313.lcssa, %497 ] + %.2313.lcssa551 = phi ptr [ %141, %159 ], [ %.2313.lcssa, %497 ] %510 = getelementptr inbounds nuw i8, ptr %0, i64 60 %511 = load i16, ptr %510, align 4, !tbaa !2795 %512 = and i16 %511, 384 @@ -254321,12 +254318,12 @@ sqlite3LogEstAdd.exit375: ; preds = %372, %378, %380, %3 %520 = load ptr, ptr %519, align 8, !tbaa !2794 %521 = add nsw i32 %10, -1 %522 = trunc nsw i32 %521 to i16 - %523 = getelementptr inbounds nuw i8, ptr %.2313.lcssa550, i64 24 + %523 = getelementptr inbounds nuw i8, ptr %.2313.lcssa551, i64 24 %524 = load ptr, ptr %523, align 8, !tbaa !2983 %525 = sext i32 %521 to i64 %526 = getelementptr inbounds ptr, ptr %524, i64 %525 %527 = load ptr, ptr %526, align 8, !tbaa !2989 - %528 = call fastcc signext i8 @wherePathSatisfiesOrderBy(ptr noundef nonnull %0, ptr noundef %520, ptr noundef %.2313.lcssa550, i16 noundef zeroext 128, i16 noundef zeroext %522, ptr noundef %527, ptr noundef %4) + %528 = call fastcc signext i8 @wherePathSatisfiesOrderBy(ptr noundef nonnull %0, ptr noundef %520, ptr noundef %.2313.lcssa551, i16 noundef zeroext 128, i16 noundef zeroext %522, ptr noundef %527, ptr noundef %4) %529 = sext i8 %528 to i32 %530 = load ptr, ptr %519, align 8, !tbaa !2794 %531 = load i32, ptr %530, align 8, !tbaa !2119 @@ -254351,7 +254348,7 @@ sqlite3LogEstAdd.exit375: ; preds = %372, %378, %380, %3 br i1 %.not341, label %617, label %540 540: ; preds = %535 - %541 = getelementptr inbounds nuw i8, ptr %.2313.lcssa550, i64 22 + %541 = getelementptr inbounds nuw i8, ptr %.2313.lcssa551, i64 22 %542 = load i8, ptr %541, align 2, !tbaa !2987 %543 = getelementptr inbounds nuw i8, ptr %0, i64 65 store i8 %542, ptr %543, align 1, !tbaa !2354 @@ -254372,7 +254369,7 @@ sqlite3LogEstAdd.exit375: ; preds = %372, %378, %380, %3 br label %588 552: ; preds = %540 - %553 = getelementptr inbounds nuw i8, ptr %.2313.lcssa550, i64 8 + %553 = getelementptr inbounds nuw i8, ptr %.2313.lcssa551, i64 8 %554 = load i64, ptr %553, align 8, !tbaa !2993 %555 = getelementptr inbounds nuw i8, ptr %0, i64 96 store i64 %554, ptr %555, align 8, !tbaa !3002 @@ -254384,7 +254381,7 @@ sqlite3LogEstAdd.exit375: ; preds = %372, %378, %380, %3 br i1 %.not469, label %588, label %558 558: ; preds = %557 - %559 = getelementptr inbounds nuw i8, ptr %.2313.lcssa550, i64 24 + %559 = getelementptr inbounds nuw i8, ptr %.2313.lcssa551, i64 24 %560 = load ptr, ptr %559, align 8, !tbaa !2983 %561 = add nsw i32 %10, -1 %562 = zext nneg i32 %561 to i64 @@ -254403,7 +254400,7 @@ sqlite3LogEstAdd.exit375: ; preds = %372, %378, %380, %3 call void @llvm.lifetime.start.p0(ptr nonnull %5) store i64 0, ptr %5, align 8, !tbaa !14 %571 = trunc nuw nsw i32 %561 to i16 - %572 = call fastcc signext i8 @wherePathSatisfiesOrderBy(ptr noundef nonnull %0, ptr noundef nonnull %539, ptr noundef %.2313.lcssa550, i16 noundef zeroext 2048, i16 noundef zeroext %571, ptr noundef nonnull %564, ptr noundef %5) + %572 = call fastcc signext i8 @wherePathSatisfiesOrderBy(ptr noundef nonnull %0, ptr noundef nonnull %539, ptr noundef %.2313.lcssa551, i16 noundef zeroext 2048, i16 noundef zeroext %571, ptr noundef nonnull %564, ptr noundef %5) %573 = sext i8 %572 to i32 %574 = load ptr, ptr %121, align 8, !tbaa !2793 %575 = load i32, ptr %574, align 8, !tbaa !2119 @@ -254457,12 +254454,12 @@ sqlite3LogEstAdd.exit375: ; preds = %372, %378, %380, %3 store i64 0, ptr %6, align 8, !tbaa !14 %599 = add nsw i32 %10, -1 %600 = trunc nuw nsw i32 %599 to i16 - %601 = getelementptr inbounds nuw i8, ptr %.2313.lcssa550, i64 24 + %601 = getelementptr inbounds nuw i8, ptr %.2313.lcssa551, i64 24 %602 = load ptr, ptr %601, align 8, !tbaa !2983 %603 = zext nneg i32 %599 to i64 %604 = getelementptr inbounds nuw ptr, ptr %602, i64 %603 %605 = load ptr, ptr %604, align 8, !tbaa !2989 - %606 = call fastcc signext i8 @wherePathSatisfiesOrderBy(ptr noundef nonnull %0, ptr noundef nonnull %589, ptr noundef %.2313.lcssa550, i16 noundef zeroext 0, i16 noundef zeroext %600, ptr noundef %605, ptr noundef %6) + %606 = call fastcc signext i8 @wherePathSatisfiesOrderBy(ptr noundef nonnull %0, ptr noundef nonnull %589, ptr noundef %.2313.lcssa551, i16 noundef zeroext 0, i16 noundef zeroext %600, ptr noundef %605, ptr noundef %6) %607 = sext i8 %606 to i32 %608 = load ptr, ptr %121, align 8, !tbaa !2793 %609 = load i32, ptr %608, align 8, !tbaa !2119 @@ -254483,7 +254480,7 @@ sqlite3LogEstAdd.exit375: ; preds = %372, %378, %380, %3 br label %617 617: ; preds = %588, %592, %616, %535 - %618 = getelementptr inbounds nuw i8, ptr %.2313.lcssa550, i64 16 + %618 = getelementptr inbounds nuw i8, ptr %.2313.lcssa551, i64 16 %619 = load i16, ptr %618, align 8, !tbaa !2988 %620 = getelementptr inbounds nuw i8, ptr %0, i64 70 store i16 %619, ptr %620, align 2, !tbaa !2348 @@ -430180,6 +430177,9 @@ declare i8 @llvm.umax.i8(i8, i8) #69 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) declare void @llvm.assume(i1 noundef) #72 +; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) +declare i16 @llvm.sadd.sat.i16(i16, i16) #69 + ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.ctlz.i64(i64, i1 immarg) #70 diff --git a/bench/yalantinglibs/optimized/client.ll b/bench/yalantinglibs/optimized/client.ll index ac3ade15a61..1091983acd6 100644 --- a/bench/yalantinglibs/optimized/client.ll +++ b/bench/yalantinglibs/optimized/client.ll @@ -34533,22 +34533,21 @@ call2.i.i.i.i.i.i.i.i.i.i.i.noexc: ; preds = %if.end.i.i.i.i.i.i. br label %_ZN4asio6detail19asio_handler_invokeINS0_7binder0IZ4taskI16async_rpc_clientEvSt17basic_string_viewIcSt11char_traitsIcEES8_EUlvE0_EES9_EEvRT_PNS2_IT0_EE.exit.i _ZN4asio6detail19asio_handler_invokeINS0_7binder0IZ4taskI16async_rpc_clientEvSt17basic_string_viewIcSt11char_traitsIcEES8_EUlvE0_EES9_EEvRT_PNS2_IT0_EE.exit.i: ; preds = %call2.i.i.i.i.i.i.i.i.i.i.i.noexc, %if.then - %9 = tail call i64 @llvm.smin.i64(i64 %call.i.i.i.i.i.i.i.i.i.i, i64 9223372035854775807) - %retval.sroa.0.0.i.i.i.i.i.i.i.i.i.i = add nsw i64 %9, 1000000000 + %retval.sroa.0.0.i.i.i.i.i.i.i.i.i.i = tail call i64 @llvm.sadd.sat.i64(i64 %call.i.i.i.i.i.i.i.i.i.i, i64 1000000000) %implementation_.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %tmp.sroa.0.0.copyload, i64 8 store i64 %retval.sroa.0.0.i.i.i.i.i.i.i.i.i.i, ptr %implementation_.i.i.i.i.i.i.i.i.i, align 8 store i64 %call.i.i.i.i.i.i, ptr %ref.tmp4.i.i.i.i.i.i.i, align 8 - %10 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i.i.i.i.i.i.i, i64 8 - %11 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i.i.i.i.i.i.i, i64 32 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %10, i8 0, i64 20, i1 false) - store ptr @tot_client, ptr %11, align 8 - %12 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i.i.i.i.i.i.i, i64 40 - store ptr %tmp.sroa.2.0.copyload, ptr %12, align 8 - %13 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i.i.i.i.i.i.i, i64 48 - store ptr %tmp.sroa.0.0.copyload, ptr %13, align 8 - %14 = load ptr, ptr %tmp.sroa.0.0.copyload, align 8 + %9 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i.i.i.i.i.i.i, i64 8 + %10 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i.i.i.i.i.i.i, i64 32 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %9, i8 0, i64 20, i1 false) + store ptr @tot_client, ptr %10, align 8 + %11 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i.i.i.i.i.i.i, i64 40 + store ptr %tmp.sroa.2.0.copyload, ptr %11, align 8 + %12 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i.i.i.i.i.i.i, i64 48 + store ptr %tmp.sroa.0.0.copyload, ptr %12, align 8 + %13 = load ptr, ptr %tmp.sroa.0.0.copyload, align 8 %executor_.i.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %tmp.sroa.0.0.copyload, i64 64 - invoke void @_ZN4asio6detail22deadline_timer_serviceINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS5_EEEEE10async_waitIZ5watchI16async_rpc_clientEvRNS_20basic_waitable_timerIS5_S7_NS_15any_io_executorEEERjRSt5dequeIT_SaISJ_EENS3_10time_pointIS5_NS3_8durationIlSt5ratioILl1ELl1000000000EEEEEEddiEUlRKSt10error_codeE_SE_EEvRNS9_19implementation_typeERSJ_RKT0_(ptr noundef nonnull align 8 dereferenceable(96) %14, ptr noundef nonnull align 8 dereferenceable(56) %implementation_.i.i.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(56) %ref.tmp4.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(56) %executor_.i.i.i.i.i.i.i.i.i.i.i.i) + invoke void @_ZN4asio6detail22deadline_timer_serviceINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS5_EEEEE10async_waitIZ5watchI16async_rpc_clientEvRNS_20basic_waitable_timerIS5_S7_NS_15any_io_executorEEERjRSt5dequeIT_SaISJ_EENS3_10time_pointIS5_NS3_8durationIlSt5ratioILl1ELl1000000000EEEEEEddiEUlRKSt10error_codeE_SE_EEvRNS9_19implementation_typeERSJ_RKT0_(ptr noundef nonnull align 8 dereferenceable(96) %13, ptr noundef nonnull align 8 dereferenceable(56) %implementation_.i.i.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(56) %ref.tmp4.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(56) %executor_.i.i.i.i.i.i.i.i.i.i.i.i) to label %invoke.cont5 unwind label %lpad4 invoke.cont5: ; preds = %_ZN4asio6detail19asio_handler_invokeINS0_7binder0IZ4taskI16async_rpc_clientEvSt17basic_string_viewIcSt11char_traitsIcEES8_EUlvE0_EES9_EEvRT_PNS2_IT0_EE.exit.i @@ -34557,17 +34556,17 @@ invoke.cont5: ; preds = %_ZN4asio6detail19as br label %return lpad4: ; preds = %_ZN4asio6detail19asio_handler_invokeINS0_7binder0IZ4taskI16async_rpc_clientEvSt17basic_string_viewIcSt11char_traitsIcEES8_EUlvE0_EES9_EEvRT_PNS2_IT0_EE.exit.i, %if.end.i.i.i.i.i.i.i.i.i.i.i - %15 = landingpad { ptr, i32 } + %14 = landingpad { ptr, i32 } catch ptr null - %16 = extractvalue { ptr, i32 } %15, 0 + %15 = extractvalue { ptr, i32 } %14, 0 fence release - %17 = call ptr @__cxa_begin_catch(ptr %16) #32 - %18 = load i64, ptr %this, align 8 - %and.i5 = and i64 %18, -4 - %19 = inttoptr i64 %and.i5 to ptr - %impl_7 = getelementptr inbounds nuw i8, ptr %19, i64 8 - %20 = load ptr, ptr %impl_7, align 8 - invoke void @_ZN4asio6detail9scheduler25capture_current_exceptionEv(ptr noundef nonnull align 8 dereferenceable(256) %20) + %16 = call ptr @__cxa_begin_catch(ptr %15) #32 + %17 = load i64, ptr %this, align 8 + %and.i5 = and i64 %17, -4 + %18 = inttoptr i64 %and.i5 to ptr + %impl_7 = getelementptr inbounds nuw i8, ptr %18, i64 8 + %19 = load ptr, ptr %impl_7, align 8 + invoke void @_ZN4asio6detail9scheduler25capture_current_exceptionEv(ptr noundef nonnull align 8 dereferenceable(256) %19) to label %invoke.cont9 unwind label %lpad8 invoke.cont9: ; preds = %lpad4 @@ -34575,7 +34574,7 @@ invoke.cont9: ; preds = %lpad4 br label %return lpad8: ; preds = %lpad4 - %21 = landingpad { ptr, i32 } + %20 = landingpad { ptr, i32 } cleanup invoke void @__cxa_end_catch() to label %eh.resume unwind label %terminate.lpad @@ -34590,12 +34589,12 @@ if.end: ; preds = %if.end.i.i, %entry. cond.true.i.i.i.i: ; preds = %if.end %value_.i.i.i.i = getelementptr inbounds nuw i8, ptr %.pr, i64 8 - %22 = load ptr, ptr %value_.i.i.i.i, align 8 + %21 = load ptr, ptr %value_.i.i.i.i, align 8 br label %invoke.cont15 invoke.cont15: ; preds = %if.end.thread, %cond.true.i.i.i.i, %if.end %v17 = phi ptr [ %v, %cond.true.i.i.i.i ], [ %v, %if.end ], [ %v15, %if.end.thread ] - %cond.i.i.i.i = phi ptr [ %22, %cond.true.i.i.i.i ], [ null, %if.end ], [ null, %if.end.thread ] + %cond.i.i.i.i = phi ptr [ %21, %cond.true.i.i.i.i ], [ null, %if.end ], [ null, %if.end.thread ] %call2.i.i = tail call noundef ptr @_ZN4asio6detail16thread_info_base8allocateINS1_11default_tagEEEPvT_PS1_mm(ptr noundef %cond.i.i.i.i, i64 noundef 48, i64 noundef 8) store ptr %call2.i.i, ptr %v17, align 8 %p12 = getelementptr inbounds nuw i8, ptr %p, i64 16 @@ -34607,14 +34606,14 @@ invoke.cont15: ; preds = %if.end.thread, %con %handler_.i = getelementptr inbounds nuw i8, ptr %call2.i.i, i64 24 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %handler_.i, ptr noundef nonnull align 8 dereferenceable(16) %f, i64 16, i1 false) store ptr %call2.i.i, ptr %p12, align 8 - %23 = load i64, ptr %this, align 8 - %and.i6 = and i64 %23, -4 - %24 = inttoptr i64 %and.i6 to ptr - %impl_18 = getelementptr inbounds nuw i8, ptr %24, i64 8 - %25 = load ptr, ptr %impl_18, align 8 - %and21 = and i64 %23, 2 + %22 = load i64, ptr %this, align 8 + %and.i6 = and i64 %22, -4 + %23 = inttoptr i64 %and.i6 to ptr + %impl_18 = getelementptr inbounds nuw i8, ptr %23, i64 8 + %24 = load ptr, ptr %impl_18, align 8 + %and21 = and i64 %22, 2 %cmp22 = icmp ne i64 %and21, 0 - invoke void @_ZN4asio6detail9scheduler25post_immediate_completionEPNS0_19scheduler_operationEb(ptr noundef nonnull align 8 dereferenceable(256) %25, ptr noundef nonnull %call2.i.i, i1 noundef zeroext %cmp22) + invoke void @_ZN4asio6detail9scheduler25post_immediate_completionEPNS0_19scheduler_operationEb(ptr noundef nonnull align 8 dereferenceable(256) %24, ptr noundef nonnull %call2.i.i, i1 noundef zeroext %cmp22) to label %_ZN4asio6detail11executor_opINS0_7binder0IZ4taskI16async_rpc_clientEvSt17basic_string_viewIcSt11char_traitsIcEES8_EUlvE0_EESaIvENS0_19scheduler_operationEE3ptrD2Ev.exit unwind label %lpad14 _ZN4asio6detail11executor_opINS0_7binder0IZ4taskI16async_rpc_clientEvSt17basic_string_viewIcSt11char_traitsIcEES8_EUlvE0_EESaIvENS0_19scheduler_operationEE3ptrD2Ev.exit: ; preds = %invoke.cont15 @@ -34625,20 +34624,20 @@ return: ; preds = %_ZN4asio6detail11ex ret void lpad14: ; preds = %invoke.cont15 - %26 = landingpad { ptr, i32 } + %25 = landingpad { ptr, i32 } cleanup call void @_ZN4asio6detail11executor_opINS0_7binder0IZ4taskI16async_rpc_clientEvSt17basic_string_viewIcSt11char_traitsIcEES8_EUlvE0_EESaIvENS0_19scheduler_operationEE3ptrD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %p) #32 br label %eh.resume eh.resume: ; preds = %lpad8, %lpad14 - %.pn = phi { ptr, i32 } [ %21, %lpad8 ], [ %26, %lpad14 ] + %.pn = phi { ptr, i32 } [ %20, %lpad8 ], [ %25, %lpad14 ] resume { ptr, i32 } %.pn terminate.lpad: ; preds = %lpad8 - %27 = landingpad { ptr, i32 } + %26 = landingpad { ptr, i32 } catch ptr null - %28 = extractvalue { ptr, i32 } %27, 0 - call void @__clang_call_terminate(ptr %28) #37 + %27 = extractvalue { ptr, i32 } %26, 0 + call void @__clang_call_terminate(ptr %27) #37 unreachable } @@ -35269,26 +35268,25 @@ if.end.i.i.i.i.i: ; preds = %if.end42 br label %_Z5watchI16async_rpc_clientEvRN4asio20basic_waitable_timerINSt6chrono3_V212steady_clockENS1_11wait_traitsIS5_EENS1_15any_io_executorEEERjRSt5dequeIT_SaISD_EENS3_10time_pointIS5_NS3_8durationIlSt5ratioILl1ELl1000000000EEEEEEddi.exit _Z5watchI16async_rpc_clientEvRN4asio20basic_waitable_timerINSt6chrono3_V212steady_clockENS1_11wait_traitsIS5_EENS1_15any_io_executorEEERjRSt5dequeIT_SaISD_EENS3_10time_pointIS5_NS3_8durationIlSt5ratioILl1ELl1000000000EEEEEEddi.exit: ; preds = %if.end42, %if.end.i.i.i.i.i - %48 = tail call i64 @llvm.smin.i64(i64 %call.i.i.i.i, i64 9223372035854775807) - %retval.sroa.0.0.i.i.i.i = add nsw i64 %48, 1000000000 + %retval.sroa.0.0.i.i.i.i = tail call i64 @llvm.sadd.sat.i64(i64 %call.i.i.i.i, i64 1000000000) %implementation_.i.i.i = getelementptr inbounds nuw i8, ptr %37, i64 8 store i64 %retval.sroa.0.0.i.i.i.i, ptr %implementation_.i.i.i, align 8 store i64 %call21, ptr %ref.tmp4.i, align 8 - %49 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i, i64 8 - store double %41, ptr %49, align 8 - %50 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i, i64 16 - store double %43, ptr %50, align 8 - %51 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i, i64 24 - store i32 %44, ptr %51, align 8 - %52 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i, i64 32 - store ptr %38, ptr %52, align 8 - %53 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i, i64 40 - store ptr %40, ptr %53, align 8 - %54 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i, i64 48 - store ptr %37, ptr %54, align 8 - %55 = load ptr, ptr %37, align 8 + %48 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i, i64 8 + store double %41, ptr %48, align 8 + %49 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i, i64 16 + store double %43, ptr %49, align 8 + %50 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i, i64 24 + store i32 %44, ptr %50, align 8 + %51 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i, i64 32 + store ptr %38, ptr %51, align 8 + %52 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i, i64 40 + store ptr %40, ptr %52, align 8 + %53 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i, i64 48 + store ptr %37, ptr %53, align 8 + %54 = load ptr, ptr %37, align 8 %executor_.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %37, i64 64 - call void @_ZN4asio6detail22deadline_timer_serviceINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS5_EEEEE10async_waitIZ5watchI16async_rpc_clientEvRNS_20basic_waitable_timerIS5_S7_NS_15any_io_executorEEERjRSt5dequeIT_SaISJ_EENS3_10time_pointIS5_NS3_8durationIlSt5ratioILl1ELl1000000000EEEEEEddiEUlRKSt10error_codeE_SE_EEvRNS9_19implementation_typeERSJ_RKT0_(ptr noundef nonnull align 8 dereferenceable(96) %55, ptr noundef nonnull align 8 dereferenceable(56) %implementation_.i.i.i, ptr noundef nonnull align 8 dereferenceable(56) %ref.tmp4.i, ptr noundef nonnull align 8 dereferenceable(56) %executor_.i.i.i.i.i.i) + call void @_ZN4asio6detail22deadline_timer_serviceINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS5_EEEEE10async_waitIZ5watchI16async_rpc_clientEvRNS_20basic_waitable_timerIS5_S7_NS_15any_io_executorEEERjRSt5dequeIT_SaISJ_EENS3_10time_pointIS5_NS3_8durationIlSt5ratioILl1ELl1000000000EEEEEEddiEUlRKSt10error_codeE_SE_EEvRNS9_19implementation_typeERSJ_RKT0_(ptr noundef nonnull align 8 dereferenceable(96) %54, ptr noundef nonnull align 8 dereferenceable(56) %implementation_.i.i.i, ptr noundef nonnull align 8 dereferenceable(56) %ref.tmp4.i, ptr noundef nonnull align 8 dereferenceable(56) %executor_.i.i.i.i.i.i) call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp4.i) br label %if.end52 @@ -36154,22 +36152,21 @@ call2.i.i.i.i.i.i.i.i.i.i.i.noexc: ; preds = %if.end.i.i.i.i.i.i. br label %_ZN4asio6detail19asio_handler_invokeINS0_7binder0IZ4taskI16async_rpc_clientEvSt17basic_string_viewIcSt11char_traitsIcEES8_EUlvE0_EES9_EEvRT_PNS2_IT0_EE.exit.i _ZN4asio6detail19asio_handler_invokeINS0_7binder0IZ4taskI16async_rpc_clientEvSt17basic_string_viewIcSt11char_traitsIcEES8_EUlvE0_EES9_EEvRT_PNS2_IT0_EE.exit.i: ; preds = %call2.i.i.i.i.i.i.i.i.i.i.i.noexc, %if.then - %10 = call i64 @llvm.smin.i64(i64 %call.i.i.i.i.i.i.i.i.i.i, i64 9223372035854775807) - %retval.sroa.0.0.i.i.i.i.i.i.i.i.i.i = add nsw i64 %10, 1000000000 + %retval.sroa.0.0.i.i.i.i.i.i.i.i.i.i = call i64 @llvm.sadd.sat.i64(i64 %call.i.i.i.i.i.i.i.i.i.i, i64 1000000000) %implementation_.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %handler.sroa.0.0.copyload, i64 8 store i64 %retval.sroa.0.0.i.i.i.i.i.i.i.i.i.i, ptr %implementation_.i.i.i.i.i.i.i.i.i, align 8 store i64 %call.i.i.i.i.i.i, ptr %ref.tmp4.i.i.i.i.i.i.i, align 8 - %11 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i.i.i.i.i.i.i, i64 8 - %12 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i.i.i.i.i.i.i, i64 32 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %11, i8 0, i64 20, i1 false) - store ptr @tot_client, ptr %12, align 8 - %13 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i.i.i.i.i.i.i, i64 40 - store ptr %handler.sroa.2.0.copyload, ptr %13, align 8 - %14 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i.i.i.i.i.i.i, i64 48 - store ptr %handler.sroa.0.0.copyload, ptr %14, align 8 - %15 = load ptr, ptr %handler.sroa.0.0.copyload, align 8 + %10 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i.i.i.i.i.i.i, i64 8 + %11 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i.i.i.i.i.i.i, i64 32 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %10, i8 0, i64 20, i1 false) + store ptr @tot_client, ptr %11, align 8 + %12 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i.i.i.i.i.i.i, i64 40 + store ptr %handler.sroa.2.0.copyload, ptr %12, align 8 + %13 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i.i.i.i.i.i.i, i64 48 + store ptr %handler.sroa.0.0.copyload, ptr %13, align 8 + %14 = load ptr, ptr %handler.sroa.0.0.copyload, align 8 %executor_.i.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %handler.sroa.0.0.copyload, i64 64 - invoke void @_ZN4asio6detail22deadline_timer_serviceINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS5_EEEEE10async_waitIZ5watchI16async_rpc_clientEvRNS_20basic_waitable_timerIS5_S7_NS_15any_io_executorEEERjRSt5dequeIT_SaISJ_EENS3_10time_pointIS5_NS3_8durationIlSt5ratioILl1ELl1000000000EEEEEEddiEUlRKSt10error_codeE_SE_EEvRNS9_19implementation_typeERSJ_RKT0_(ptr noundef nonnull align 8 dereferenceable(96) %15, ptr noundef nonnull align 8 dereferenceable(56) %implementation_.i.i.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(56) %ref.tmp4.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(56) %executor_.i.i.i.i.i.i.i.i.i.i.i.i) + invoke void @_ZN4asio6detail22deadline_timer_serviceINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS5_EEEEE10async_waitIZ5watchI16async_rpc_clientEvRNS_20basic_waitable_timerIS5_S7_NS_15any_io_executorEEERjRSt5dequeIT_SaISJ_EENS3_10time_pointIS5_NS3_8durationIlSt5ratioILl1ELl1000000000EEEEEEddiEUlRKSt10error_codeE_SE_EEvRNS9_19implementation_typeERSJ_RKT0_(ptr noundef nonnull align 8 dereferenceable(96) %14, ptr noundef nonnull align 8 dereferenceable(56) %implementation_.i.i.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(56) %ref.tmp4.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(56) %executor_.i.i.i.i.i.i.i.i.i.i.i.i) to label %invoke.cont6 unwind label %lpad5 invoke.cont6: ; preds = %_ZN4asio6detail19asio_handler_invokeINS0_7binder0IZ4taskI16async_rpc_clientEvSt17basic_string_viewIcSt11char_traitsIcEES8_EUlvE0_EES9_EEvRT_PNS2_IT0_EE.exit.i @@ -36178,11 +36175,11 @@ invoke.cont6: ; preds = %_ZN4asio6detail19as br label %_ZN4asio6detail11executor_opINS0_7binder0IZ4taskI16async_rpc_clientEvSt17basic_string_viewIcSt11char_traitsIcEES8_EUlvE0_EESaIvENS0_19scheduler_operationEE3ptrD2Ev.exit lpad5: ; preds = %_ZN4asio6detail19asio_handler_invokeINS0_7binder0IZ4taskI16async_rpc_clientEvSt17basic_string_viewIcSt11char_traitsIcEES8_EUlvE0_EES9_EEvRT_PNS2_IT0_EE.exit.i, %if.end.i.i.i.i.i.i.i.i.i.i.i - %16 = landingpad { ptr, i32 } + %15 = landingpad { ptr, i32 } cleanup fence release call void @_ZN4asio6detail11executor_opINS0_7binder0IZ4taskI16async_rpc_clientEvSt17basic_string_viewIcSt11char_traitsIcEES8_EUlvE0_EESaIvENS0_19scheduler_operationEE3ptrD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %p) #32 - resume { ptr, i32 } %16 + resume { ptr, i32 } %15 _ZN4asio6detail11executor_opINS0_7binder0IZ4taskI16async_rpc_clientEvSt17basic_string_viewIcSt11char_traitsIcEES8_EUlvE0_EESaIvENS0_19scheduler_operationEE3ptrD2Ev.exit: ; preds = %invoke.cont6, %invoke.cont3 ret void @@ -36873,6 +36870,9 @@ declare i64 @llvm.smin.i64(i64, i64) #28 ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: read) declare i32 @bcmp(ptr captures(none), ptr captures(none), i64) local_unnamed_addr #31 +; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) +declare i64 @llvm.sadd.sat.i64(i64, i64) #28 + 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,+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,+x87" "tune-cpu"="generic" } attributes #2 = { nofree nounwind } diff --git a/bench/yalantinglibs/optimized/server.ll b/bench/yalantinglibs/optimized/server.ll index 21ef975e65e..ebd0e8494df 100644 --- a/bench/yalantinglibs/optimized/server.ll +++ b/bench/yalantinglibs/optimized/server.ll @@ -76226,19 +76226,18 @@ init.ready: ; preds = %entry.resume invoke.cont18: ; preds = %init.ready %3 = load ptr, ptr %timer.reload.addr, align 8 %call.i.i.i = tail call i64 @_ZNSt6chrono3_V212steady_clock3nowEv() #35 - %4 = tail call i64 @llvm.smin.i64(i64 %call.i.i.i, i64 9223372036844775807) - %retval.sroa.0.0.i.i.i = add nsw i64 %4, 10000000 + %retval.sroa.0.0.i.i.i = tail call i64 @llvm.sadd.sat.i64(i64 %call.i.i.i, i64 10000000) %might_have_pending_waits.i.i.i.i = getelementptr inbounds nuw i8, ptr %0, i64 56 - %5 = load i8, ptr %might_have_pending_waits.i.i.i.i, align 8 - %tobool.i.i.i.i = trunc i8 %5 to i1 + %4 = load i8, ptr %might_have_pending_waits.i.i.i.i, align 8 + %tobool.i.i.i.i = trunc i8 %4 to i1 br i1 %tobool.i.i.i.i, label %if.end.i.i.i.i, label %invoke.cont19 if.end.i.i.i.i: ; preds = %invoke.cont18 %scheduler_.i.i.i.i = getelementptr inbounds nuw i8, ptr %3, i64 88 - %6 = load ptr, ptr %scheduler_.i.i.i.i, align 8 + %5 = load ptr, ptr %scheduler_.i.i.i.i, align 8 %timer_queue_.i.i.i.i = getelementptr inbounds nuw i8, ptr %3, i64 40 %timer_data.i.i.i.i = getelementptr inbounds nuw i8, ptr %0, i64 64 - %call2.i.i.i.i2 = invoke noundef i64 @_ZN4asio6detail13epoll_reactor12cancel_timerINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS6_EEEEEEmRNS0_11timer_queueIT_EERNSC_14per_timer_dataEm(ptr noundef nonnull align 8 dereferenceable(216) %6, ptr noundef nonnull align 8 dereferenceable(48) %timer_queue_.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(40) %timer_data.i.i.i.i, i64 noundef -1) + %call2.i.i.i.i2 = invoke noundef i64 @_ZN4asio6detail13epoll_reactor12cancel_timerINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS6_EEEEEEmRNS0_11timer_queueIT_EERNSC_14per_timer_dataEm(ptr noundef nonnull align 8 dereferenceable(216) %5, ptr noundef nonnull align 8 dereferenceable(48) %timer_queue_.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(40) %timer_data.i.i.i.i, i64 noundef -1) to label %call2.i.i.i.i.noexc unwind label %lpad14 call2.i.i.i.i.noexc: ; preds = %if.end.i.i.i.i @@ -76252,10 +76251,10 @@ invoke.cont19: ; preds = %call2.i.i.i.i.noexc to label %CoroSave103 unwind label %terminate.lpad.i terminate.lpad.i: ; preds = %invoke.cont19 - %7 = landingpad { ptr, i32 } + %6 = landingpad { ptr, i32 } catch ptr null - %8 = extractvalue { ptr, i32 } %7, 0 - tail call void @__clang_call_terminate(ptr %8) #39 + %7 = extractvalue { ptr, i32 } %6, 0 + tail call void @__clang_call_terminate(ptr %7) #39 unreachable CoroSave103: ; preds = %invoke.cont19 @@ -76271,11 +76270,11 @@ CoroSave103: ; preds = %invoke.cont19 store i2 0, ptr %index.addr65.i, align 8 tail call void @llvm.experimental.noalias.scope.decl(metadata !1239) %_executor.i = getelementptr inbounds nuw i8, ptr %0, i64 24 - %9 = load ptr, ptr %_executor.i, align 8, !noalias !1239 + %8 = load ptr, ptr %_executor.i, align 8, !noalias !1239 tail call void @llvm.experimental.noalias.scope.decl(metadata !1242) tail call void @llvm.experimental.noalias.scope.decl(metadata !1245) %_executor.i.i.i = getelementptr inbounds nuw i8, ptr %call.i3, i64 24 - store ptr %9, ptr %_executor.i.i.i, align 8, !noalias !1248 + store ptr %8, ptr %_executor.i.i.i, align 8, !noalias !1248 store ptr null, ptr %ref.tmp22.reload.addr, align 8, !noalias !1248 store ptr %call.i3, ptr %ref.tmp21.reload.addr, align 8, !alias.scope !1248 store i2 1, ptr %index.addr, align 4 @@ -76284,38 +76283,38 @@ CoroSave103: ; preds = %invoke.cont19 ret void lpad10: ; preds = %init.ready - %10 = landingpad { ptr, i32 } + %9 = landingpad { ptr, i32 } catch ptr null br label %catch lpad14: ; preds = %if.end.i.i.i.i - %11 = landingpad { ptr, i32 } + %10 = landingpad { ptr, i32 } catch ptr null br label %ehcleanup51 await.ready: ; preds = %entry.resume - %12 = load ptr, ptr %ref.tmp21.reload.addr, align 8 - %13 = getelementptr inbounds nuw i8, ptr %12, i64 16 - %call2.i4 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNO12async_simple4coro6detail11LazyPromiseIbE6resultEv(ptr noundef nonnull align 8 dereferenceable(32) %13) + %11 = load ptr, ptr %ref.tmp21.reload.addr, align 8 + %12 = getelementptr inbounds nuw i8, ptr %11, i64 16 + %call2.i4 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNO12async_simple4coro6detail11LazyPromiseIbE6resultEv(ptr noundef nonnull align 8 dereferenceable(32) %12) to label %call2.i.noexc unwind label %lpad37 call2.i.noexc: ; preds = %await.ready - %14 = load ptr, ptr %ref.tmp21.reload.addr, align 8 - %15 = getelementptr inbounds nuw i8, ptr %14, i64 8 - %16 = load ptr, ptr %15, align 8 - invoke fastcc void %16(ptr nonnull %14) + %13 = load ptr, ptr %ref.tmp21.reload.addr, align 8 + %14 = getelementptr inbounds nuw i8, ptr %13, i64 8 + %15 = load ptr, ptr %14, align 8 + invoke fastcc void %15(ptr nonnull %13) to label %_ZN12async_simple4coro6detail8LazyBaseIbLb0EE12ValueAwaiterD2Ev.exit unwind label %lpad37 _ZN12async_simple4coro6detail8LazyBaseIbLb0EE12ValueAwaiterD2Ev.exit: ; preds = %call2.i.noexc store ptr null, ptr %ref.tmp21.reload.addr, align 8 - %17 = load ptr, ptr %ref.tmp22.reload.addr, align 8 - %cmp.i.not.i.i = icmp eq ptr %17, null + %16 = load ptr, ptr %ref.tmp22.reload.addr, align 8 + %cmp.i.not.i.i = icmp eq ptr %16, null br i1 %cmp.i.not.i.i, label %_ZN12async_simple4coro4LazyIbED2Ev.exit, label %if.then.i.i if.then.i.i: ; preds = %_ZN12async_simple4coro6detail8LazyBaseIbLb0EE12ValueAwaiterD2Ev.exit - %18 = getelementptr inbounds nuw i8, ptr %17, i64 8 - %19 = load ptr, ptr %18, align 8 - invoke fastcc void %19(ptr nonnull %17) + %17 = getelementptr inbounds nuw i8, ptr %16, i64 8 + %18 = load ptr, ptr %17, align 8 + invoke fastcc void %18(ptr nonnull %16) to label %invoke.cont.i.i unwind label %terminate.lpad.i.i invoke.cont.i.i: ; preds = %if.then.i.i @@ -76323,10 +76322,10 @@ invoke.cont.i.i: ; preds = %if.then.i.i br label %_ZN12async_simple4coro4LazyIbED2Ev.exit terminate.lpad.i.i: ; preds = %if.then.i.i - %20 = landingpad { ptr, i32 } + %19 = landingpad { ptr, i32 } catch ptr null - %21 = extractvalue { ptr, i32 } %20, 0 - tail call void @__clang_call_terminate(ptr %21) #39 + %20 = extractvalue { ptr, i32 } %19, 0 + tail call void @__clang_call_terminate(ptr %20) #39 unreachable _ZN12async_simple4coro4LazyIbED2Ev.exit: ; preds = %_ZN12async_simple4coro6detail8LazyBaseIbLb0EE12ValueAwaiterD2Ev.exit, %invoke.cont.i.i @@ -76338,16 +76337,16 @@ cleanup50: ; preds = %_ZN12async_simple4c br label %CoroSave107 lpad37: ; preds = %call2.i.noexc, %await.ready - %22 = landingpad { ptr, i32 } + %21 = landingpad { ptr, i32 } catch ptr null - %23 = load ptr, ptr %ref.tmp21.reload.addr, align 8 - %cmp.i.not.i.i.i6 = icmp eq ptr %23, null + %22 = load ptr, ptr %ref.tmp21.reload.addr, align 8 + %cmp.i.not.i.i.i6 = icmp eq ptr %22, null br i1 %cmp.i.not.i.i.i6, label %ehcleanup, label %if.then.i.i.i7 if.then.i.i.i7: ; preds = %lpad37 - %24 = getelementptr inbounds nuw i8, ptr %23, i64 8 - %25 = load ptr, ptr %24, align 8 - invoke fastcc void %25(ptr nonnull %23) + %23 = getelementptr inbounds nuw i8, ptr %22, i64 8 + %24 = load ptr, ptr %23, align 8 + invoke fastcc void %24(ptr nonnull %22) to label %invoke.cont.i.i.i9 unwind label %terminate.lpad.i.i.i8 invoke.cont.i.i.i9: ; preds = %if.then.i.i.i7 @@ -76355,21 +76354,21 @@ invoke.cont.i.i.i9: ; preds = %if.then.i.i.i7 br label %ehcleanup terminate.lpad.i.i.i8: ; preds = %if.then.i.i.i7 - %26 = landingpad { ptr, i32 } + %25 = landingpad { ptr, i32 } catch ptr null - %27 = extractvalue { ptr, i32 } %26, 0 - tail call void @__clang_call_terminate(ptr %27) #39 + %26 = extractvalue { ptr, i32 } %25, 0 + tail call void @__clang_call_terminate(ptr %26) #39 unreachable ehcleanup: ; preds = %invoke.cont.i.i.i9, %lpad37 - %28 = load ptr, ptr %ref.tmp22.reload.addr, align 8 - %cmp.i.not.i.i11 = icmp eq ptr %28, null + %27 = load ptr, ptr %ref.tmp22.reload.addr, align 8 + %cmp.i.not.i.i11 = icmp eq ptr %27, null br i1 %cmp.i.not.i.i11, label %ehcleanup51, label %if.then.i.i12 if.then.i.i12: ; preds = %ehcleanup - %29 = getelementptr inbounds nuw i8, ptr %28, i64 8 - %30 = load ptr, ptr %29, align 8 - invoke fastcc void %30(ptr nonnull %28) + %28 = getelementptr inbounds nuw i8, ptr %27, i64 8 + %29 = load ptr, ptr %28, align 8 + invoke fastcc void %29(ptr nonnull %27) to label %invoke.cont.i.i14 unwind label %terminate.lpad.i.i13 invoke.cont.i.i14: ; preds = %if.then.i.i12 @@ -76377,26 +76376,26 @@ invoke.cont.i.i14: ; preds = %if.then.i.i12 br label %ehcleanup51 terminate.lpad.i.i13: ; preds = %if.then.i.i12 - %31 = landingpad { ptr, i32 } + %30 = landingpad { ptr, i32 } catch ptr null - %32 = extractvalue { ptr, i32 } %31, 0 - tail call void @__clang_call_terminate(ptr %32) #39 + %31 = extractvalue { ptr, i32 } %30, 0 + tail call void @__clang_call_terminate(ptr %31) #39 unreachable lpad48: ; preds = %_ZN12async_simple4coro4LazyIbED2Ev.exit - %33 = landingpad { ptr, i32 } + %32 = landingpad { ptr, i32 } catch ptr null br label %ehcleanup51 ehcleanup51: ; preds = %invoke.cont.i.i14, %ehcleanup, %lpad48, %lpad14 - %.pn1 = phi { ptr, i32 } [ %33, %lpad48 ], [ %11, %lpad14 ], [ %22, %ehcleanup ], [ %22, %invoke.cont.i.i14 ] + %.pn1 = phi { ptr, i32 } [ %32, %lpad48 ], [ %10, %lpad14 ], [ %21, %ehcleanup ], [ %21, %invoke.cont.i.i14 ] tail call void @_ZN4asio6detail14io_object_implINS0_22deadline_timer_serviceINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS6_EEEEEENS_15any_io_executorEED2Ev(ptr noundef nonnull align 8 dereferenceable(120) %timer.reload.addr) #35 br label %catch catch: ; preds = %lpad10, %ehcleanup51 - %.pn1.pn = phi { ptr, i32 } [ %.pn1, %ehcleanup51 ], [ %10, %lpad10 ] + %.pn1.pn = phi { ptr, i32 } [ %.pn1, %ehcleanup51 ], [ %9, %lpad10 ] %exn.slot.2 = extractvalue { ptr, i32 } %.pn1.pn, 0 - %34 = tail call ptr @__cxa_begin_catch(ptr %exn.slot.2) #35 + %33 = tail call ptr @__cxa_begin_catch(ptr %exn.slot.2) #35 tail call void @_ZN12async_simple4coro6detail11LazyPromiseIvE19unhandled_exceptionEv(ptr noundef nonnull align 8 dereferenceable(24) %__promise.reload.addr) #35 invoke void @__cxa_end_catch() to label %CoroSave107 unwind label %lpad56 @@ -76405,16 +76404,16 @@ CoroSave107: ; preds = %cleanup50, %catch store ptr null, ptr %0, align 8 store i2 -2, ptr %index.addr, align 4 %retval.sroa.0.0.copyload.i16 = load ptr, ptr %__promise.reload.addr, align 8 - %35 = load ptr, ptr %retval.sroa.0.0.copyload.i16, align 8 - musttail call fastcc void %35(ptr nonnull %retval.sroa.0.0.copyload.i16) + %34 = load ptr, ptr %retval.sroa.0.0.copyload.i16, align 8 + musttail call fastcc void %34(ptr nonnull %retval.sroa.0.0.copyload.i16) ret void lpad56: ; preds = %catch - %36 = landingpad { ptr, i32 } + %35 = landingpad { ptr, i32 } cleanup store ptr null, ptr %0, align 8 store i2 -2, ptr %index.addr, align 4 - resume { ptr, i32 } %36 + resume { ptr, i32 } %35 } ; Function Attrs: mustprogress nounwind uwtable @@ -85138,6 +85137,9 @@ declare i64 @llvm.smin.i64(i64, i64) #33 ; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.usub.sat.i64(i64, i64) #33 +; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) +declare i64 @llvm.sadd.sat.i64(i64, i64) #33 + ; Function Attrs: nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smax.i32(i32, i32) #33 From bb722addbb72c7ce455f4e781b7cd3f55b43692f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 8 Nov 2025 14:49:19 +0000 Subject: [PATCH 3/3] pre-commit: Remap --- bench/boost/optimized/xml_grammar.ll | 240 +++--- bench/cmake/optimized/hsts.ll | 200 ++--- bench/cpython/optimized/bytes_methods.ll | 28 +- bench/cpython/optimized/unicodeobject.ll | 66 +- bench/curl/optimized/altsvc.ll | 248 +++--- bench/curl/optimized/hsts.ll | 204 ++--- bench/ffmpeg/optimized/ffv1dec.ll | 26 +- bench/ffmpeg/optimized/ffv1enc.ll | 14 +- bench/ffmpeg/optimized/mace.ll | 124 +-- bench/ffmpeg/optimized/mov.ll | 94 +-- bench/grpc/optimized/grpc_ares_wrapper.ll | 2 +- bench/grpc/optimized/ping_rate_policy.ll | 60 +- bench/grpc/optimized/tcp_posix.ll | 226 +++--- .../libzmq/optimized/stream_connecter_base.ll | 48 +- bench/openjdk/optimized/ifnode.ll | 10 +- bench/openjdk/optimized/imageioJPEG.ll | 734 +++++++++--------- bench/php/optimized/zend_hash.ll | 84 +- bench/sqlite/optimized/sqlite3.ll | 28 +- bench/yalantinglibs/optimized/client.ll | 126 +-- bench/yalantinglibs/optimized/server.ll | 102 +-- 20 files changed, 1332 insertions(+), 1332 deletions(-) diff --git a/bench/boost/optimized/xml_grammar.ll b/bench/boost/optimized/xml_grammar.ll index d259c9ee58f..c4442e0e214 100644 --- a/bench/boost/optimized/xml_grammar.ll +++ b/bench/boost/optimized/xml_grammar.ll @@ -6539,7 +6539,7 @@ define linkonce_odr hidden void @_ZN5boost6spirit7classic7utility4impl9range_run %4 = getelementptr inbounds nuw i8, ptr %0, i64 8 %5 = load ptr, ptr %4, align 8, !tbaa !10 %6 = icmp eq ptr %3, %5 - br i1 %6, label %135, label %7 + br i1 %6, label %143, label %7 7: ; preds = %2 %8 = ptrtoint ptr %5 to i64 @@ -6608,8 +6608,8 @@ _ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility %45 = tail call i32 @llvm.sadd.sat.i32(i32 %37, i32 1) %.not4.i = icmp sle i32 %44, %39 %.not.not.i = select i1 %43, i1 true, i1 %.not4.i - %46 = icmp sge i32 %45, %35 - %47 = select i1 %.not.not.i, i1 %46, i1 false + %47 = icmp sge i32 %45, %35 + %48 = select i1 %.not.not.i, i1 %47, i1 false br i1 %47, label %48, label %.critedge4 48: ; preds = %42 @@ -6621,13 +6621,13 @@ _ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility br i1 %.not, label %.critedge, label %.lr.ph.i .lr.ph.i: ; preds = %48, %62 - %52 = phi i32 [ %65, %62 ], [ %51, %48 ] - %53 = phi i32 [ %63, %62 ], [ %49, %48 ] + %54 = phi i32 [ %69, %62 ], [ %51, %48 ] + %55 = phi i32 [ %67, %62 ], [ %49, %48 ] %.sroa.06.0.ptr20.i = phi ptr [ %.sroa.06.0.ptr.i, %62 ], [ %.sroa.011.0.lcssa.i.i, %48 ] %.sroa.06.0.idx19.i = phi i64 [ %.sroa.06.0.add.i, %62 ], [ 8, %48 ] - %54 = icmp eq i32 %53, -2147483648 - %55 = add nsw i32 %53, -1 - %56 = tail call i32 @llvm.sadd.sat.i32(i32 %52, i32 1) + %56 = icmp eq i32 %55, -2147483648 + %57 = add nsw i32 %55, -1 + %56 = tail call i32 @llvm.sadd.sat.i32(i32 %54, i32 1) %57 = getelementptr inbounds nuw i8, ptr %.sroa.06.0.ptr20.i, i64 4 %58 = load i32, ptr %57, align 4, !tbaa !64 %.not4.i.i = icmp sle i32 %55, %58 @@ -6637,79 +6637,79 @@ _ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility %61 = select i1 %.not.not.i.i, i1 %60, i1 false br i1 %61, label %62, label %.critedge.i -62: ; preds = %.lr.ph.i +62: ; preds = %.lr.ph.i %.sroa.06.0.add.i = add nuw nsw i64 %.sroa.06.0.idx19.i, 8 - %63 = tail call i32 @llvm.smin.i32(i32 %59, i32 %53) - store i32 %63, ptr %33, align 4, !tbaa !62 - %64 = load i32, ptr %57, align 4, !tbaa !60 - %65 = tail call i32 @llvm.smax.i32(i32 %52, i32 %64) - store i32 %65, ptr %36, align 4, !tbaa !64 + %67 = tail call i32 @llvm.smin.i32(i32 %59, i32 %55) + store i32 %67, ptr %33, align 4, !tbaa !62 + %68 = load i32, ptr %57, align 4, !tbaa !60 + %69 = tail call i32 @llvm.smax.i32(i32 %54, i32 %68) + store i32 %69, ptr %36, align 4, !tbaa !64 %.sroa.06.0.ptr.i = getelementptr i8, ptr %.sroa.011.0.lcssa.i.i, i64 %.sroa.06.0.idx19.i %.not.i21 = icmp eq ptr %.sroa.06.0.ptr.i, %5 br i1 %.not.i21, label %.thread.i, label %.lr.ph.i, !llvm.loop !86 .thread.i: ; preds = %62 - %66 = ptrtoint ptr %.sroa.011.0.lcssa.i.i to i64 - %67 = sub i64 %66, %9 - %68 = getelementptr inbounds i8, ptr %3, i64 %10 - br label %._crit_edge.i.i.i - -.critedge.i: ; preds = %.lr.ph.i - %69 = icmp eq i64 %.sroa.06.0.idx19.i, 8 %70 = ptrtoint ptr %.sroa.011.0.lcssa.i.i to i64 %71 = sub i64 %70, %9 - %72 = getelementptr inbounds i8, ptr %3, i64 %71 - %73 = ptrtoint ptr %.sroa.06.0.ptr20.i to i64 - %74 = sub i64 %73, %9 - %75 = getelementptr inbounds i8, ptr %3, i64 %74 - br i1 %69, label %.critedge, label %76 + %72 = getelementptr inbounds i8, ptr %3, i64 %10 + br label %._crit_edge.i.i.i -76: ; preds = %.critedge.i +.critedge.i: ; preds = %.lr.ph.i + %73 = icmp eq i64 %.sroa.06.0.idx19.i, 8 + %74 = ptrtoint ptr %.sroa.011.0.lcssa.i.i to i64 + %75 = sub i64 %74, %9 + %76 = getelementptr inbounds i8, ptr %3, i64 %75 + %77 = ptrtoint ptr %.sroa.06.0.ptr20.i to i64 + %78 = sub i64 %77, %9 + %79 = getelementptr inbounds i8, ptr %3, i64 %78 + br i1 %73, label %.critedge, label %80 + +80: ; preds = %.critedge.i %.not11.i.i.i = icmp eq ptr %.sroa.06.0.ptr20.i, %5 br i1 %.not11.i.i.i, label %._crit_edge.i.i.i, label %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i -_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i: ; preds = %76 - %77 = sub i64 %8, %73 - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %72, ptr align 4 %75, i64 %77, i1 false) +_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i: ; preds = %80 + %81 = sub i64 %8, %77 + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %76, ptr align 4 %79, i64 %81, i1 false) %.pre.i.i.i = load ptr, ptr %4, align 8, !tbaa !10 %.pre13.i.i.i = ptrtoint ptr %.pre.i.i.i to i64 br label %._crit_edge.i.i.i -._crit_edge.i.i.i: ; preds = %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i, %76, %.thread.i - %78 = phi i64 [ %71, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i ], [ %71, %76 ], [ %67, %.thread.i ] - %79 = phi i64 [ %73, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i ], [ %73, %76 ], [ %8, %.thread.i ] - %.pre-phi14.i.i.i = phi i64 [ %.pre13.i.i.i, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i ], [ %73, %76 ], [ %8, %.thread.i ] - %80 = phi ptr [ %.pre.i.i.i, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i ], [ %75, %76 ], [ %68, %.thread.i ] - %81 = getelementptr inbounds i8, ptr %3, i64 %78 - %82 = sub i64 %.pre-phi14.i.i.i, %79 - %83 = getelementptr inbounds i8, ptr %81, i64 %82 - %.not.i.i.i.i = icmp eq ptr %80, %83 - br i1 %.not.i.i.i.i, label %.critedge, label %84 - -84: ; preds = %._crit_edge.i.i.i - store ptr %83, ptr %4, align 8, !tbaa !87 +._crit_edge.i.i.i: ; preds = %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i, %80, %.thread.i + %82 = phi i64 [ %75, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i ], [ %75, %76 ], [ %71, %.thread.i ] + %83 = phi i64 [ %77, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i ], [ %77, %76 ], [ %8, %.thread.i ] + %.pre-phi14.i.i.i = phi i64 [ %.pre13.i.i.i, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i ], [ %77, %76 ], [ %8, %.thread.i ] + %84 = phi ptr [ %.pre.i.i.i, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i ], [ %79, %76 ], [ %72, %.thread.i ] + %85 = getelementptr inbounds i8, ptr %3, i64 %82 + %86 = sub i64 %.pre-phi14.i.i.i, %83 + %87 = getelementptr inbounds i8, ptr %85, i64 %86 + %.not.i.i.i.i = icmp eq ptr %84, %87 + br i1 %.not.i.i.i.i, label %.critedge, label %88 + +88: ; preds = %._crit_edge.i.i.i + store ptr %87, ptr %4, align 8, !tbaa !87 br label %.critedge .critedge4: ; preds = %31, %42 - br i1 %.not, label %.critedge6, label %85 - -85: ; preds = %.critedge4 - %86 = load i32, ptr %.sroa.011.0.lcssa.i.i, align 4, !tbaa !62 - %87 = icmp eq i32 %86, -2147483648 - %88 = add nsw i32 %86, -1 - %89 = getelementptr inbounds nuw i8, ptr %.sroa.011.0.lcssa.i.i, i64 4 - %90 = load i32, ptr %89, align 4, !tbaa !64 - %91 = tail call i32 @llvm.sadd.sat.i32(i32 %90, i32 1) + br i1 %.not, label %.critedge6, label %89 + +89: ; preds = %.critedge4 + %90 = load i32, ptr %.sroa.011.0.lcssa.i.i, align 4, !tbaa !62 + %91 = icmp eq i32 %90, -2147483648 + %92 = add nsw i32 %90, -1 + %93 = getelementptr inbounds nuw i8, ptr %.sroa.011.0.lcssa.i.i, i64 4 + %94 = load i32, ptr %93, align 4, !tbaa !64 + %91 = tail call i32 @llvm.sadd.sat.i32(i32 %94, i32 1) %92 = getelementptr inbounds nuw i8, ptr %1, i64 4 %93 = load i32, ptr %92, align 4, !tbaa !64 - %.not4.i22 = icmp sle i32 %88, %93 + %.not4.i22 = icmp sle i32 %92, %93 %.not.not.i23 = select i1 %87, i1 true, i1 %.not4.i22 %94 = load i32, ptr %1, align 4 %95 = icmp sge i32 %91, %94 %96 = select i1 %.not.not.i23, i1 %95, i1 false br i1 %96, label %97, label %.critedge6 -97: ; preds = %85 +97: ; preds = %85 %98 = tail call i32 @llvm.smin.i32(i32 %94, i32 %86) store i32 %98, ptr %.sroa.011.0.lcssa.i.i, align 4, !tbaa !62 %99 = load i32, ptr %92, align 4, !tbaa !60 @@ -6720,13 +6720,13 @@ _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5ra br i1 %.not18.i25, label %.critedge, label %.lr.ph.i26 .lr.ph.i26: ; preds = %97, %111 - %101 = phi i32 [ %114, %111 ], [ %100, %97 ] - %102 = phi i32 [ %112, %111 ], [ %98, %97 ] + %107 = phi i32 [ %122, %111 ], [ %100, %97 ] + %108 = phi i32 [ %120, %111 ], [ %98, %97 ] %.sroa.06.0.ptr20.i27 = phi ptr [ %.sroa.06.0.ptr.i40, %111 ], [ %.ptr15.i24, %97 ] %.sroa.06.0.idx19.i28 = phi i64 [ %.sroa.06.0.add.i39, %111 ], [ 8, %97 ] - %103 = icmp eq i32 %102, -2147483648 - %104 = add nsw i32 %102, -1 - %105 = tail call i32 @llvm.sadd.sat.i32(i32 %101, i32 1) + %109 = icmp eq i32 %108, -2147483648 + %110 = add nsw i32 %108, -1 + %105 = tail call i32 @llvm.sadd.sat.i32(i32 %107, i32 1) %106 = getelementptr inbounds nuw i8, ptr %.sroa.06.0.ptr20.i27, i64 4 %107 = load i32, ptr %106, align 4, !tbaa !64 %.not4.i.i29 = icmp sle i32 %104, %107 @@ -6736,96 +6736,96 @@ _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5ra %110 = select i1 %.not.not.i.i30, i1 %109, i1 false br i1 %110, label %111, label %.critedge.i31 -111: ; preds = %.lr.ph.i26 +111:; preds = %.lr.ph.i26 %.sroa.06.0.add.i39 = add nuw nsw i64 %.sroa.06.0.idx19.i28, 8 - %112 = tail call i32 @llvm.smin.i32(i32 %108, i32 %102) - store i32 %112, ptr %.sroa.011.0.lcssa.i.i, align 4, !tbaa !62 - %113 = load i32, ptr %106, align 4, !tbaa !60 - %114 = tail call i32 @llvm.smax.i32(i32 %101, i32 %113) - store i32 %114, ptr %89, align 4, !tbaa !64 + %120 = tail call i32 @llvm.smin.i32(i32 %108, i32 %108) + store i32 %120, ptr %.sroa.011.0.lcssa.i.i, align 4, !tbaa !62 + %121 = load i32, ptr %106, align 4, !tbaa !60 + %122 = tail call i32 @llvm.smax.i32(i32 %107, i32 %121) + store i32 %122, ptr %93, align 4, !tbaa !64 %.sroa.06.0.ptr.i40 = getelementptr inbounds nuw i8, ptr %.sroa.011.0.lcssa.i.i, i64 %.sroa.06.0.add.i39 %.not.i41 = icmp eq ptr %.sroa.06.0.ptr.i40, %5 br i1 %.not.i41, label %.thread.i42, label %.lr.ph.i26, !llvm.loop !86 .thread.i42: ; preds = %111 - %115 = ptrtoint ptr %.ptr15.i24 to i64 - %116 = sub i64 %115, %9 - %117 = getelementptr inbounds i8, ptr %3, i64 %10 + %123 = ptrtoint ptr %.ptr15.i24 to i64 + %124 = sub i64 %123, %9 + %125 = getelementptr inbounds i8, ptr %3, i64 %10 br label %._crit_edge.i.i.i36 .critedge.i31: ; preds = %.lr.ph.i26 - %118 = icmp eq i64 %.sroa.06.0.idx19.i28, 8 - %119 = ptrtoint ptr %.ptr15.i24 to i64 - %120 = sub i64 %119, %9 - %121 = getelementptr inbounds i8, ptr %3, i64 %120 - %122 = ptrtoint ptr %.sroa.06.0.ptr20.i27 to i64 - %123 = sub i64 %122, %9 - %124 = getelementptr inbounds i8, ptr %3, i64 %123 - br i1 %118, label %.critedge, label %125 - -125: ; preds = %.critedge.i31 + %126 = icmp eq i64 %.sroa.06.0.idx19.i28, 8 + %127 = ptrtoint ptr %.ptr15.i24 to i64 + %128 = sub i64 %127, %9 + %129 = getelementptr inbounds i8, ptr %3, i64 %128 + %130 = ptrtoint ptr %.sroa.06.0.ptr20.i27 to i64 + %131 = sub i64 %130, %9 + %132 = getelementptr inbounds i8, ptr %3, i64 %131 + br i1 %126, label %.critedge, label %133 + +133: ; preds = %.critedge.i31 %.not11.i.i.i32 = icmp eq ptr %.sroa.06.0.ptr20.i27, %5 br i1 %.not11.i.i.i32, label %._crit_edge.i.i.i36, label %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i33 -_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i33: ; preds = %125 - %126 = sub i64 %8, %122 - tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %121, ptr align 4 %124, i64 %126, i1 false) +_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i33: ; preds = %133 + %134 = sub i64 %8, %130 + tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %129, ptr align 4 %132, i64 %134, i1 false) %.pre.i.i.i34 = load ptr, ptr %4, align 8, !tbaa !10 %.pre13.i.i.i35 = ptrtoint ptr %.pre.i.i.i34 to i64 br label %._crit_edge.i.i.i36 -._crit_edge.i.i.i36: ; preds = %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i33, %125, %.thread.i42 - %127 = phi i64 [ %120, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i33 ], [ %120, %125 ], [ %116, %.thread.i42 ] - %128 = phi i64 [ %122, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i33 ], [ %122, %125 ], [ %8, %.thread.i42 ] - %.pre-phi14.i.i.i37 = phi i64 [ %.pre13.i.i.i35, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i33 ], [ %122, %125 ], [ %8, %.thread.i42 ] - %129 = phi ptr [ %.pre.i.i.i34, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i33 ], [ %124, %125 ], [ %117, %.thread.i42 ] - %130 = getelementptr inbounds i8, ptr %3, i64 %127 - %131 = sub i64 %.pre-phi14.i.i.i37, %128 - %132 = getelementptr inbounds i8, ptr %130, i64 %131 - %.not.i.i.i.i38 = icmp eq ptr %129, %132 - br i1 %.not.i.i.i.i38, label %.critedge, label %133 - -133: ; preds = %._crit_edge.i.i.i36 - store ptr %132, ptr %4, align 8, !tbaa !87 +._crit_edge.i.i.i36: ; preds = %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i33, %133, %.thread.i42 + %135 = phi i64 [ %128, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i33 ], [ %128, %125 ], [ %124, %.thread.i42 ] + %136 = phi i64 [ %130, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i33 ], [ %130, %125 ], [ %8, %.thread.i42 ] + %.pre-phi14.i.i.i37 = phi i64 [ %.pre13.i.i.i35, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i33 ], [ %130, %125 ], [ %8, %.thread.i42 ] + %137 = phi ptr [ %.pre.i.i.i34, %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPN5boost6spirit7classic7utility4impl5rangeIwEESt6vectorIS8_SaIS8_EEEESD_ET0_T_SF_SE_.exit.i.i.i33 ], [ %132, %125 ], [ %117, %.thread.i42 ] + %138 = getelementptr inbounds i8, ptr %3, i64 %135 + %139 = sub i64 %.pre-phi14.i.i.i37, %136 + %140 = getelementptr inbounds i8, ptr %138, i64 %139 + %.not.i.i.i.i38 = icmp eq ptr %137, %140 + br i1 %.not.i.i.i.i38, label %.critedge, label %141 + +141: ; preds = %._crit_edge.i.i.i36 + store ptr %140, ptr %4, align 8, !tbaa !87 br label %.critedge -.critedge6: ; preds = %.critedge4, %85 - %134 = tail call ptr @_ZNSt6vectorIN5boost6spirit7classic7utility4impl5rangeIwEESaIS6_EE6insertEN9__gnu_cxx17__normal_iteratorIPKS6_S8_EERSB_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %.sroa.011.0.lcssa.i.i, ptr noundef nonnull align 4 dereferenceable(8) %1) +.critedge6: ; preds = %.critedge4, %89 + %142 = tail call ptr @_ZNSt6vectorIN5boost6spirit7classic7utility4impl5rangeIwEESaIS6_EE6insertEN9__gnu_cxx17__normal_iteratorIPKS6_S8_EERSB_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %.sroa.011.0.lcssa.i.i, ptr noundef nonnull align 4 dereferenceable(8) %1) br label %.critedge -135: ; preds = %2 - %136 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %137 = load ptr, ptr %136, align 8, !tbaa !84 - %.not.i44 = icmp eq ptr %3, %137 - br i1 %.not.i44, label %_ZNSt6vectorIN5boost6spirit7classic7utility4impl5rangeIwEESaIS6_EE11_S_relocateEPS6_S9_S9_RS7_.exit22.i.i, label %138 - -138: ; preds = %135 - %139 = load i64, ptr %1, align 4 - store i64 %139, ptr %5, align 4 - %140 = load ptr, ptr %4, align 8, !tbaa !87 - %141 = getelementptr inbounds nuw i8, ptr %140, i64 8 - store ptr %141, ptr %4, align 8, !tbaa !87 +143: ; preds = %2 + %144 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %145 = load ptr, ptr %144, align 8, !tbaa !84 + %.not.i44 = icmp eq ptr %3, %145 + br i1 %.not.i44, label %_ZNSt6vectorIN5boost6spirit7classic7utility4impl5rangeIwEESaIS6_EE11_S_relocateEPS6_S9_S9_RS7_.exit22.i.i, label %146 + +146: ; preds = %143 + %147 = load i64, ptr %1, align 4 + store i64 %147, ptr %5, align 4 + %148 = load ptr, ptr %4, align 8, !tbaa !87 + %149 = getelementptr inbounds nuw i8, ptr %148, i64 8 + store ptr %149, ptr %4, align 8, !tbaa !87 br label %.critedge -_ZNSt6vectorIN5boost6spirit7classic7utility4impl5rangeIwEESaIS6_EE11_S_relocateEPS6_S9_S9_RS7_.exit22.i.i: ; preds = %135 - %142 = tail call noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #23 - %143 = load i64, ptr %1, align 4 - store i64 %143, ptr %142, align 4 - %144 = getelementptr inbounds nuw i8, ptr %142, i64 8 +_ZNSt6vectorIN5boost6spirit7classic7utility4impl5rangeIwEESaIS6_EE11_S_relocateEPS6_S9_S9_RS7_.exit22.i.i: ; preds = %143 + %150 = tail call noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #23 + %151 = load i64, ptr %1, align 4 + store i64 %151, ptr %150, align 4 + %152 = getelementptr inbounds nuw i8, ptr %150, i64 8 %.not.i23.i.i = icmp eq ptr %3, null - br i1 %.not.i23.i.i, label %_ZNSt6vectorIN5boost6spirit7classic7utility4impl5rangeIwEESaIS6_EE17_M_realloc_insertIJRKS6_EEEvN9__gnu_cxx17__normal_iteratorIPS6_S8_EEDpOT_.exit.i, label %145 + br i1 %.not.i23.i.i, label %_ZNSt6vectorIN5boost6spirit7classic7utility4impl5rangeIwEESaIS6_EE17_M_realloc_insertIJRKS6_EEEvN9__gnu_cxx17__normal_iteratorIPS6_S8_EEDpOT_.exit.i, label %153 -145: ; preds = %_ZNSt6vectorIN5boost6spirit7classic7utility4impl5rangeIwEESaIS6_EE11_S_relocateEPS6_S9_S9_RS7_.exit22.i.i +153: ; preds = %_ZNSt6vectorIN5boost6spirit7classic7utility4impl5rangeIwEESaIS6_EE11_S_relocateEPS6_S9_S9_RS7_.exit22.i.i tail call void @_ZdlPvm(ptr noundef nonnull %3, i64 noundef 0) #25 br label %_ZNSt6vectorIN5boost6spirit7classic7utility4impl5rangeIwEESaIS6_EE17_M_realloc_insertIJRKS6_EEEvN9__gnu_cxx17__normal_iteratorIPS6_S8_EEDpOT_.exit.i -_ZNSt6vectorIN5boost6spirit7classic7utility4impl5rangeIwEESaIS6_EE17_M_realloc_insertIJRKS6_EEEvN9__gnu_cxx17__normal_iteratorIPS6_S8_EEDpOT_.exit.i: ; preds = %145, %_ZNSt6vectorIN5boost6spirit7classic7utility4impl5rangeIwEESaIS6_EE11_S_relocateEPS6_S9_S9_RS7_.exit22.i.i - store ptr %142, ptr %0, align 8, !tbaa !82 - store ptr %144, ptr %4, align 8, !tbaa !87 - store ptr %144, ptr %136, align 8, !tbaa !84 +_ZNSt6vectorIN5boost6spirit7classic7utility4impl5rangeIwEESaIS6_EE17_M_realloc_insertIJRKS6_EEEvN9__gnu_cxx17__normal_iteratorIPS6_S8_EEDpOT_.exit.i: ; preds = %153, %_ZNSt6vectorIN5boost6spirit7classic7utility4impl5rangeIwEESaIS6_EE11_S_relocateEPS6_S9_S9_RS7_.exit22.i.i + store ptr %150, ptr %0, align 8, !tbaa !82 + store ptr %152, ptr %4, align 8, !tbaa !87 + store ptr %152, ptr %144, align 8, !tbaa !84 br label %.critedge -.critedge: ; preds = %_ZNSt6vectorIN5boost6spirit7classic7utility4impl5rangeIwEESaIS6_EE17_M_realloc_insertIJRKS6_EEEvN9__gnu_cxx17__normal_iteratorIPS6_S8_EEDpOT_.exit.i, %138, %32, %.critedge6, %22, %48, %.critedge.i, %._crit_edge.i.i.i, %84, %97, %.critedge.i31, %._crit_edge.i.i.i36, %133 +.critedge: ; preds = %_ZNSt6vectorIN5boost6spirit7classic7utility4impl5rangeIwEESaIS6_EE17_M_realloc_insertIJRKS6_EEEvN9__gnu_cxx17__normal_iteratorIPS6_S8_EEDpOT_.exit.i, %146, %32, %.critedge6, %22, %48, %.critedge.i, %._crit_edge.i.i.i, %88, %97, %.critedge.i31, %._crit_edge.i.i.i36, %141 ret void } diff --git a/bench/cmake/optimized/hsts.ll b/bench/cmake/optimized/hsts.ll index a26822a3cad..99824c80d9e 100644 --- a/bench/cmake/optimized/hsts.ll +++ b/bench/cmake/optimized/hsts.ll @@ -26,12 +26,12 @@ target triple = "x86_64-pc-linux-gnu" ; Function Attrs: nounwind uwtable define dso_local ptr @Curl_hsts_init() local_unnamed_addr #0 { %1 = load ptr, ptr @Curl_ccalloc, align 8, !tbaa !4 - %2 = tail call ptr %1(i64 noundef 1, i64 noundef 48) #10 + %2 = tail call ptr %1(i64 noundef 1, i64 noundef 48) #9 %.not = icmp eq ptr %2, null br i1 %.not, label %4, label %3 3: ; preds = %0 - tail call void @Curl_llist_init(ptr noundef nonnull %2, ptr noundef null) #10 + tail call void @Curl_llist_init(ptr noundef nonnull %2, ptr noundef null) #9 br label %4 4: ; preds = %3, %0 @@ -47,20 +47,20 @@ define dso_local void @Curl_hsts_cleanup(ptr noundef captures(none) %0) local_un br i1 %.not, label %15, label %3 3: ; preds = %1 - %4 = tail call ptr @Curl_llist_head(ptr noundef nonnull %2) #10 + %4 = tail call ptr @Curl_llist_head(ptr noundef nonnull %2) #9 %.not1213 = icmp eq ptr %4, null br i1 %.not1213, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %3, %.lr.ph %.014 = phi ptr [ %6, %.lr.ph ], [ %4, %3 ] - %5 = tail call ptr @Curl_node_elem(ptr noundef nonnull %.014) #10 - %6 = tail call ptr @Curl_node_next(ptr noundef nonnull %.014) #10 + %5 = tail call ptr @Curl_node_elem(ptr noundef nonnull %.014) #9 + %6 = tail call ptr @Curl_node_next(ptr noundef nonnull %.014) #9 %7 = load ptr, ptr @Curl_cfree, align 8, !tbaa !4 %8 = getelementptr inbounds nuw i8, ptr %5, i64 32 %9 = load ptr, ptr %8, align 8, !tbaa !10 - tail call void %7(ptr noundef %9) #10 + tail call void %7(ptr noundef %9) #9 %10 = load ptr, ptr @Curl_cfree, align 8, !tbaa !4 - tail call void %10(ptr noundef %5) #10 + tail call void %10(ptr noundef %5) #9 %.not12 = icmp eq ptr %6, null br i1 %.not12, label %._crit_edge, label %.lr.ph, !llvm.loop !18 @@ -68,9 +68,9 @@ define dso_local void @Curl_hsts_cleanup(ptr noundef captures(none) %0) local_un %11 = load ptr, ptr @Curl_cfree, align 8, !tbaa !4 %12 = getelementptr inbounds nuw i8, ptr %2, i64 32 %13 = load ptr, ptr %12, align 8, !tbaa !20 - tail call void %11(ptr noundef %13) #10 + tail call void %11(ptr noundef %13) #9 %14 = load ptr, ptr @Curl_cfree, align 8, !tbaa !4 - tail call void %14(ptr noundef nonnull %2) #10 + tail call void %14(ptr noundef nonnull %2) #9 store ptr null, ptr %0, align 8, !tbaa !8 br label %15 @@ -90,8 +90,8 @@ define dso_local range(i32 0, 44) i32 @Curl_hsts_parse(ptr noundef %0, ptr nound %5 = alloca ptr, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %4) store i64 0, ptr %4, align 8, !tbaa !24 - %6 = tail call i64 @time(ptr noundef null) #10 - %7 = tail call zeroext i1 @Curl_host_is_ipnum(ptr noundef %1) #10 + %6 = tail call i64 @time(ptr noundef null) #9 + %7 = tail call zeroext i1 @Curl_host_is_ipnum(ptr noundef %1) #9 br i1 %7, label %.loopexit, label %.preheader113 .preheader113: ; preds = %3, %.critedge14 @@ -114,7 +114,7 @@ define dso_local range(i32 0, 44) i32 @Curl_hsts_parse(ptr noundef %0, ptr nound br label %8, !llvm.loop !26 .critedge: ; preds = %8 - %11 = call i32 @curl_strnequal(ptr noundef nonnull @.str, ptr noundef nonnull %.176, i64 noundef 7) #10 + %11 = call i32 @curl_strnequal(ptr noundef nonnull @.str, ptr noundef nonnull %.176, i64 noundef 7) #9 %.not95 = icmp eq i32 %11, 0 br i1 %.not95, label %31, label %12 @@ -156,7 +156,7 @@ define dso_local range(i32 0, 44) i32 @Curl_hsts_parse(ptr noundef %0, ptr nound %20 = icmp eq i8 %19, 34 %21 = getelementptr inbounds nuw i8, ptr %.378.pn, i64 2 %spec.select = select i1 %20, ptr %21, ptr %.4 - %22 = call i32 @curlx_strtoofft(ptr noundef nonnull %spec.select, ptr noundef nonnull %5, i32 noundef 10, ptr noundef nonnull %4) #10 + %22 = call i32 @curlx_strtoofft(ptr noundef nonnull %spec.select, ptr noundef nonnull %5, i32 noundef 10, ptr noundef nonnull %4) #9 switch i32 %22, label %.critedge110 [ i32 1, label %23 i32 0, label %24 @@ -185,7 +185,7 @@ define dso_local range(i32 0, 44) i32 @Curl_hsts_parse(ptr noundef %0, ptr nound br label %.critedge12 31: ; preds = %.critedge - %32 = call i32 @curl_strnequal(ptr noundef nonnull @.str.1, ptr noundef nonnull %.176, i64 noundef 17) #10 + %32 = call i32 @curl_strnequal(ptr noundef nonnull @.str.1, ptr noundef nonnull %.176, i64 noundef 17) #9 %.not96 = icmp eq i32 %32, 0 br i1 %.not96, label %.preheader, label %33 @@ -250,42 +250,42 @@ define dso_local range(i32 0, 44) i32 @Curl_hsts_parse(ptr noundef %0, ptr nound br i1 %.not107, label %.loopexit, label %50 50: ; preds = %48 - call void @Curl_node_remove(ptr noundef nonnull %49) #10 + call void @Curl_node_remove(ptr noundef nonnull %49) #9 %51 = load ptr, ptr @Curl_cfree, align 8, !tbaa !4 %52 = getelementptr inbounds nuw i8, ptr %49, i64 32 %53 = load ptr, ptr %52, align 8, !tbaa !10 - call void %51(ptr noundef %53) #10 + call void %51(ptr noundef %53) #9 %54 = load ptr, ptr @Curl_cfree, align 8, !tbaa !4 - call void %54(ptr noundef nonnull %49) #10 + call void %54(ptr noundef nonnull %49) #9 br label %.loopexit 55: ; preds = %46 %storemerge = call i64 @llvm.sadd.sat.i64(i64 %6, i64 %47) store i64 %storemerge, ptr %4, align 8, !tbaa !24 - %56 = call ptr @Curl_hsts(ptr noundef %0, ptr noundef %1, i1 noundef zeroext false) - %.not108 = icmp eq ptr %56, null - br i1 %.not108, label %61, label %57 - -57: ; preds = %55 - %58 = load i64, ptr %4, align 8, !tbaa !24 - %59 = getelementptr inbounds nuw i8, ptr %56, i64 48 - store i64 %58, ptr %59, align 8, !tbaa !33 - %60 = getelementptr inbounds nuw i8, ptr %56, i64 40 - store i8 %.180, ptr %60, align 8, !tbaa !34 + %59 = call ptr @Curl_hsts(ptr noundef %0, ptr noundef %1, i1 noundef zeroext false) + %.not108 = icmp eq ptr %59, null + br i1 %.not108, label %64, label %60 + +60: ; preds = %55 + %61 = load i64, ptr %4, align 8, !tbaa !24 + %62 = getelementptr inbounds nuw i8, ptr %59, i64 48 + store i64 %61, ptr %62, align 8, !tbaa !33 + %63 = getelementptr inbounds nuw i8, ptr %59, i64 40 + store i8 %.180, ptr %63, align 8, !tbaa !34 br label %.loopexit -61: ; preds = %55 - %62 = trunc nuw i8 %.180 to i1 - %63 = load i64, ptr %4, align 8, !tbaa !24 - %64 = call fastcc i32 @hsts_create(ptr noundef %0, ptr noundef %1, i1 noundef zeroext %62, i64 noundef %63) +64: ; preds = %55 + %65 = trunc nuw i8 %.180 to i1 + %66 = load i64, ptr %4, align 8, !tbaa !24 + %67 = call fastcc i32 @hsts_create(ptr noundef %0, ptr noundef %1, i1 noundef zeroext %65, i64 noundef %66) br label %.loopexit .critedge110: ; preds = %26, %.critedge8, %12, %16 call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %.loopexit -.loopexit: ; preds = %33, %48, %50, %44, %.critedge110, %3, %57, %61 - %.0 = phi i32 [ 0, %57 ], [ %64, %61 ], [ 0, %3 ], [ 43, %.critedge110 ], [ 43, %44 ], [ 0, %50 ], [ 0, %48 ], [ 43, %33 ] +.loopexit: ; preds = %33, %48, %50, %44, %.critedge110, %3, %60, %64 + %.0 = phi i32 [ 0, %57 ], [ %67, %61 ], [ 0, %3 ], [ 43, %.critedge110 ], [ 43, %44 ], [ 0, %50 ], [ 0, %48 ], [ 43, %33 ] call void @llvm.lifetime.end.p0(ptr nonnull %4) ret i32 %.0 } @@ -305,8 +305,8 @@ define dso_local ptr @Curl_hsts(ptr noundef %0, ptr noundef %1, i1 noundef zeroe br i1 %.not, label %.thread75, label %4 4: ; preds = %3 - %5 = tail call i64 @time(ptr noundef null) #10 - %6 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #11 + %5 = tail call i64 @time(ptr noundef null) #9 + %6 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #10 %7 = add i64 %6, -1 %or.cond = icmp ult i64 %7, 256 br i1 %or.cond, label %8, label %.thread75 @@ -317,7 +317,7 @@ define dso_local ptr @Curl_hsts(ptr noundef %0, ptr noundef %1, i1 noundef zeroe %11 = load i8, ptr %10, align 1, !tbaa !25 %12 = icmp eq i8 %11, 46 %spec.select = select i1 %12, i64 %7, i64 %6 - %13 = tail call ptr @Curl_llist_head(ptr noundef nonnull %0) #10 + %13 = tail call ptr @Curl_llist_head(ptr noundef nonnull %0) #9 %.not5880 = icmp eq ptr %13, null br i1 %.not5880, label %.thread75, label %.lr.ph @@ -328,27 +328,27 @@ define dso_local ptr @Curl_hsts(ptr noundef %0, ptr noundef %1, i1 noundef zeroe %.24583.us = phi ptr [ %.346.ph.us, %45 ], [ null, %.lr.ph ] %.05082.us = phi i64 [ %.151.ph.us, %45 ], [ 0, %.lr.ph ] %.05481.us = phi ptr [ %15, %45 ], [ %13, %.lr.ph ] - %14 = tail call ptr @Curl_node_elem(ptr noundef nonnull %.05481.us) #10 - %15 = tail call ptr @Curl_node_next(ptr noundef nonnull %.05481.us) #10 + %14 = tail call ptr @Curl_node_elem(ptr noundef nonnull %.05481.us) #9 + %15 = tail call ptr @Curl_node_next(ptr noundef nonnull %.05481.us) #9 %16 = getelementptr inbounds nuw i8, ptr %14, i64 48 %17 = load i64, ptr %16, align 8, !tbaa !33 %.not59.us = icmp sgt i64 %17, %5 br i1 %.not59.us, label %23, label %18 18: ; preds = %.lr.ph.split.us - tail call void @Curl_node_remove(ptr noundef nonnull %14) #10 + tail call void @Curl_node_remove(ptr noundef nonnull %14) #9 %19 = load ptr, ptr @Curl_cfree, align 8, !tbaa !4 %20 = getelementptr inbounds nuw i8, ptr %14, i64 32 %21 = load ptr, ptr %20, align 8, !tbaa !10 - tail call void %19(ptr noundef %21) #10 + tail call void %19(ptr noundef %21) #9 %22 = load ptr, ptr @Curl_cfree, align 8, !tbaa !4 - tail call void %22(ptr noundef nonnull %14) #10 + tail call void %22(ptr noundef nonnull %14) #9 br label %45 23: ; preds = %.lr.ph.split.us %24 = getelementptr inbounds nuw i8, ptr %14, i64 32 %25 = load ptr, ptr %24, align 8, !tbaa !10 - %26 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %25) #11 + %26 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %25) #10 %27 = getelementptr inbounds nuw i8, ptr %14, i64 40 %28 = load i8, ptr %27, align 8, !tbaa !34, !range !35, !noundef !36 %29 = trunc nuw i8 %28 to i1 @@ -365,7 +365,7 @@ define dso_local ptr @Curl_hsts(ptr noundef %0, ptr noundef %1, i1 noundef zeroe br i1 %36, label %37, label %40 37: ; preds = %31 - %38 = tail call i32 @curl_strnequal(ptr noundef nonnull %33, ptr noundef nonnull %25, i64 noundef %26) #10 + %38 = tail call i32 @curl_strnequal(ptr noundef nonnull %33, ptr noundef nonnull %25, i64 noundef %26) #9 %.not60.us = icmp ne i32 %38, 0 %39 = icmp ugt i64 %26, %.05082.us %or.cond63.us = select i1 %.not60.us, i1 %39, i1 false @@ -381,7 +381,7 @@ define dso_local ptr @Curl_hsts(ptr noundef %0, ptr noundef %1, i1 noundef zeroe 42: ; preds = %40 %43 = load ptr, ptr %24, align 8, !tbaa !10 - %44 = tail call i32 @curl_strnequal(ptr noundef nonnull %1, ptr noundef %43, i64 noundef %spec.select) #10 + %44 = tail call i32 @curl_strnequal(ptr noundef nonnull %1, ptr noundef %43, i64 noundef %spec.select) #9 %.not61.us = icmp eq i32 %44, 0 br i1 %.not61.us, label %45, label %.thread75 @@ -393,32 +393,32 @@ define dso_local ptr @Curl_hsts(ptr noundef %0, ptr noundef %1, i1 noundef zeroe .lr.ph.split: ; preds = %.lr.ph, %62 %.05481 = phi ptr [ %47, %62 ], [ %13, %.lr.ph ] - %46 = tail call ptr @Curl_node_elem(ptr noundef nonnull %.05481) #10 - %47 = tail call ptr @Curl_node_next(ptr noundef nonnull %.05481) #10 + %46 = tail call ptr @Curl_node_elem(ptr noundef nonnull %.05481) #9 + %47 = tail call ptr @Curl_node_next(ptr noundef nonnull %.05481) #9 %48 = getelementptr inbounds nuw i8, ptr %46, i64 48 %49 = load i64, ptr %48, align 8, !tbaa !33 %.not59 = icmp sgt i64 %49, %5 br i1 %.not59, label %55, label %50 50: ; preds = %.lr.ph.split - tail call void @Curl_node_remove(ptr noundef nonnull %46) #10 + tail call void @Curl_node_remove(ptr noundef nonnull %46) #9 %51 = load ptr, ptr @Curl_cfree, align 8, !tbaa !4 %52 = getelementptr inbounds nuw i8, ptr %46, i64 32 %53 = load ptr, ptr %52, align 8, !tbaa !10 - tail call void %51(ptr noundef %53) #10 + tail call void %51(ptr noundef %53) #9 %54 = load ptr, ptr @Curl_cfree, align 8, !tbaa !4 - tail call void %54(ptr noundef nonnull %46) #10 + tail call void %54(ptr noundef nonnull %46) #9 br label %62 55: ; preds = %.lr.ph.split %56 = getelementptr inbounds nuw i8, ptr %46, i64 32 %57 = load ptr, ptr %56, align 8, !tbaa !10 - %58 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %57) #11 + %58 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %57) #10 %59 = icmp eq i64 %spec.select, %58 br i1 %59, label %60, label %62 60: ; preds = %55 - %61 = tail call i32 @curl_strnequal(ptr noundef nonnull %1, ptr noundef nonnull %57, i64 noundef %spec.select) #10 + %61 = tail call i32 @curl_strnequal(ptr noundef nonnull %1, ptr noundef nonnull %57, i64 noundef %spec.select) #9 %.not61 = icmp eq i32 %61, 0 br i1 %.not61, label %62, label %.thread75 @@ -436,7 +436,7 @@ declare void @Curl_node_remove(ptr noundef) local_unnamed_addr #1 ; Function Attrs: nounwind uwtable define internal fastcc range(i32 0, 28) i32 @hsts_create(ptr noundef %0, ptr noundef %1, i1 noundef zeroext %2, i64 noundef %3) unnamed_addr #0 { %5 = zext i1 %2 to i8 - %6 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #11 + %6 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #10 %.not = icmp eq i64 %6, 0 br i1 %.not, label %.thread, label %7 @@ -455,18 +455,18 @@ define internal fastcc range(i32 0, 28) i32 @hsts_create(ptr noundef %0, ptr nou .thread32: ; preds = %7, %12 %.02235 = phi i64 [ %13, %12 ], [ %6, %7 ] %14 = load ptr, ptr @Curl_ccalloc, align 8, !tbaa !4 - %15 = tail call ptr %14(i64 noundef 1, i64 noundef 56) #10 + %15 = tail call ptr %14(i64 noundef 1, i64 noundef 56) #9 %.not28 = icmp eq ptr %15, null br i1 %.not28, label %.thread, label %16 16: ; preds = %.thread32 - %17 = tail call ptr @Curl_memdup0(ptr noundef nonnull %1, i64 noundef %.02235) #10 + %17 = tail call ptr @Curl_memdup0(ptr noundef nonnull %1, i64 noundef %.02235) #9 %.not29 = icmp eq ptr %17, null br i1 %.not29, label %18, label %.critedge 18: ; preds = %16 %19 = load ptr, ptr @Curl_cfree, align 8, !tbaa !4 - tail call void %19(ptr noundef nonnull %15) #10 + tail call void %19(ptr noundef nonnull %15) #9 br label %.thread .critedge: ; preds = %16 @@ -476,7 +476,7 @@ define internal fastcc range(i32 0, 28) i32 @hsts_create(ptr noundef %0, ptr nou store i64 %3, ptr %21, align 8, !tbaa !33 %22 = getelementptr inbounds nuw i8, ptr %15, i64 40 store i8 %5, ptr %22, align 8, !tbaa !34 - tail call void @Curl_llist_append(ptr noundef %0, ptr noundef nonnull %15, ptr noundef nonnull %15) #10 + tail call void @Curl_llist_append(ptr noundef %0, ptr noundef nonnull %15, ptr noundef nonnull %15) #9 br label %.thread .thread: ; preds = %4, %12, %.critedge, %18, %.thread32 @@ -526,14 +526,14 @@ define dso_local i32 @Curl_hsts_save(ptr noundef %0, ptr noundef %1, ptr noundef br i1 %.not56, label %81, label %22 22: ; preds = %20 - %23 = call i32 @Curl_fopen(ptr noundef %0, ptr noundef nonnull %.040, ptr noundef nonnull %7, ptr noundef nonnull %8) #10 + %23 = call i32 @Curl_fopen(ptr noundef %0, ptr noundef nonnull %.040, ptr noundef nonnull %7, ptr noundef nonnull %8) #9 %.not57 = icmp eq i32 %23, 0 br i1 %.not57, label %24, label %78 24: ; preds = %22 %25 = load ptr, ptr %7, align 8, !tbaa !39 %26 = call i64 @fwrite(ptr nonnull @.str.2, i64 111, i64 1, ptr %25) - %27 = call ptr @Curl_llist_head(ptr noundef nonnull %1) #10 + %27 = call ptr @Curl_llist_head(ptr noundef nonnull %1) #9 %.not5879 = icmp eq ptr %27, null br i1 %.not5879, label %.loopexit, label %.lr.ph @@ -547,8 +547,8 @@ define dso_local i32 @Curl_hsts_save(ptr noundef %0, ptr noundef %1, ptr noundef 33: ; preds = %.lr.ph, %hsts_out.exit %.04480 = phi ptr [ %27, %.lr.ph ], [ %35, %hsts_out.exit ] - %34 = call ptr @Curl_node_elem(ptr noundef nonnull %.04480) #10 - %35 = call ptr @Curl_node_next(ptr noundef nonnull %.04480) #10 + %34 = call ptr @Curl_node_elem(ptr noundef nonnull %.04480) #9 + %35 = call ptr @Curl_node_next(ptr noundef nonnull %.04480) #9 %36 = load ptr, ptr %7, align 8, !tbaa !39 call void @llvm.lifetime.start.p0(ptr nonnull %6) %37 = getelementptr inbounds nuw i8, ptr %34, i64 48 @@ -557,7 +557,7 @@ define dso_local i32 @Curl_hsts_save(ptr noundef %0, ptr noundef %1, ptr noundef br i1 %.not.i, label %57, label %39 39: ; preds = %33 - %40 = call i32 @Curl_gmtime(i64 noundef %38, ptr noundef nonnull %6) #10 + %40 = call i32 @Curl_gmtime(i64 noundef %38, ptr noundef nonnull %6) #9 %.not13.i = icmp eq i32 %40, 0 br i1 %.not13.i, label %41, label %hsts_out.exit.thread @@ -580,7 +580,7 @@ hsts_out.exit.thread: ; preds = %39 %53 = load i32, ptr %31, align 8, !tbaa !45 %54 = load i32, ptr %32, align 4, !tbaa !46 %55 = load i32, ptr %6, align 8, !tbaa !47 - %56 = call i32 (ptr, ptr, ...) @curl_mfprintf(ptr noundef %36, ptr noundef nonnull @.str.3, ptr noundef nonnull %45, ptr noundef %47, i32 noundef %49, i32 noundef %51, i32 noundef %52, i32 noundef %53, i32 noundef %54, i32 noundef %55) #10 + %56 = call i32 (ptr, ptr, ...) @curl_mfprintf(ptr noundef %36, ptr noundef nonnull @.str.3, ptr noundef nonnull %45, ptr noundef %47, i32 noundef %49, i32 noundef %51, i32 noundef %52, i32 noundef %53, i32 noundef %54, i32 noundef %55) #9 br label %hsts_out.exit 57: ; preds = %33 @@ -590,7 +590,7 @@ hsts_out.exit.thread: ; preds = %39 %61 = select i1 %60, ptr @.str.4, ptr @.str.5 %62 = getelementptr inbounds nuw i8, ptr %34, i64 32 %63 = load ptr, ptr %62, align 8, !tbaa !10 - %64 = call i32 (ptr, ptr, ...) @curl_mfprintf(ptr noundef %36, ptr noundef nonnull @.str.6, ptr noundef nonnull %61, ptr noundef %63, ptr noundef nonnull @.str.7) #10 + %64 = call i32 (ptr, ptr, ...) @curl_mfprintf(ptr noundef %36, ptr noundef nonnull @.str.6, ptr noundef nonnull %61, ptr noundef %63, ptr noundef nonnull @.str.7) #9 br label %hsts_out.exit hsts_out.exit: ; preds = %41, %57 @@ -609,7 +609,7 @@ hsts_out.exit: ; preds = %41, %57 br i1 %or.cond3, label %70, label %72 70: ; preds = %.loopexit - %71 = call i32 @Curl_rename(ptr noundef nonnull %68, ptr noundef nonnull %.040) #10 + %71 = call i32 @Curl_rename(ptr noundef nonnull %68, ptr noundef nonnull %.040) #9 %.not60 = icmp eq i32 %71, 0 %spec.select63 = select i1 %.not60, i32 0, i32 23 %.pre = load ptr, ptr %8, align 8 @@ -624,14 +624,14 @@ hsts_out.exit: ; preds = %41, %57 br i1 %or.cond5, label %76, label %78 76: ; preds = %72 - %77 = call i32 @unlink(ptr noundef nonnull %73) #10 + %77 = call i32 @unlink(ptr noundef nonnull %73) #9 br label %78 78: ; preds = %72, %76, %22 %.143 = phi i32 [ %23, %22 ], [ %.4, %76 ], [ %.4, %72 ] %79 = load ptr, ptr @Curl_cfree, align 8, !tbaa !4 %80 = load ptr, ptr %8, align 8, !tbaa !29 - call void %79(ptr noundef %80) #10 + call void %79(ptr noundef %80) #9 br label %81 81: ; preds = %14, %20, %78 @@ -643,11 +643,11 @@ hsts_out.exit: ; preds = %41, %57 84: ; preds = %81 call void @llvm.lifetime.start.p0(ptr nonnull %9) - %85 = call i64 @Curl_llist_count(ptr noundef nonnull %1) #10 + %85 = call i64 @Curl_llist_count(ptr noundef nonnull %1) #9 %86 = getelementptr inbounds nuw i8, ptr %9, i64 8 store i64 %85, ptr %86, align 8, !tbaa !109 store i64 0, ptr %9, align 8, !tbaa !111 - %87 = call ptr @Curl_llist_head(ptr noundef nonnull %1) #10 + %87 = call ptr @Curl_llist_head(ptr noundef nonnull %1) #9 %.not6285 = icmp eq ptr %87, null br i1 %.not6285, label %.thread, label %.lr.ph87 @@ -665,14 +665,14 @@ hsts_out.exit: ; preds = %41, %57 97: ; preds = %.lr.ph87, %123 %.14586 = phi ptr [ %87, %.lr.ph87 ], [ %99, %123 ] - %98 = call ptr @Curl_node_elem(ptr noundef nonnull %.14586) #10 - %99 = call ptr @Curl_node_next(ptr noundef nonnull %.14586) #10 + %98 = call ptr @Curl_node_elem(ptr noundef nonnull %.14586) #9 + %99 = call ptr @Curl_node_next(ptr noundef nonnull %.14586) #9 call void @llvm.lifetime.start.p0(ptr nonnull %4) call void @llvm.lifetime.start.p0(ptr nonnull %5) %100 = getelementptr inbounds nuw i8, ptr %98, i64 32 %101 = load ptr, ptr %100, align 8, !tbaa !10 store ptr %101, ptr %4, align 8, !tbaa !112 - %102 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %101) #11 + %102 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %101) #10 store i64 %102, ptr %88, align 8, !tbaa !114 %103 = getelementptr inbounds nuw i8, ptr %98, i64 40 %104 = load i8, ptr %103, align 8, !tbaa !34, !range !35, !noundef !36 @@ -683,7 +683,7 @@ hsts_out.exit: ; preds = %41, %57 br i1 %.not.i64, label %119, label %107 107: ; preds = %97 - %108 = call i32 @Curl_gmtime(i64 noundef %106, ptr noundef nonnull %5) #10 + %108 = call i32 @Curl_gmtime(i64 noundef %106, ptr noundef nonnull %5) #9 %.not16.i = icmp eq i32 %108, 0 br i1 %.not16.i, label %109, label %hsts_push.exit.thread @@ -701,17 +701,17 @@ hsts_push.exit.thread: ; preds = %107 %115 = load i32, ptr %94, align 8, !tbaa !45 %116 = load i32, ptr %95, align 4, !tbaa !46 %117 = load i32, ptr %5, align 8, !tbaa !47 - %118 = call i32 (ptr, i64, ptr, ...) @curl_msnprintf(ptr noundef nonnull %90, i64 noundef 18, ptr noundef nonnull @.str.8, i32 noundef %111, i32 noundef %113, i32 noundef %114, i32 noundef %115, i32 noundef %116, i32 noundef %117) #10 + %118 = call i32 (ptr, i64, ptr, ...) @curl_msnprintf(ptr noundef nonnull %90, i64 noundef 18, ptr noundef nonnull @.str.8, i32 noundef %111, i32 noundef %113, i32 noundef %114, i32 noundef %115, i32 noundef %116, i32 noundef %117) #9 br label %hsts_push.exit 119: ; preds = %97 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(10) %90, ptr noundef nonnull align 1 dereferenceable(10) @.str.7, i64 10, i1 false) #10 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(10) %90, ptr noundef nonnull align 1 dereferenceable(10) @.str.7, i64 10, i1 false) #9 br label %hsts_push.exit hsts_push.exit: ; preds = %109, %119 %120 = load ptr, ptr %82, align 8, !tbaa !48 %121 = load ptr, ptr %96, align 8, !tbaa !115 - %122 = call i32 %120(ptr noundef nonnull %0, ptr noundef nonnull %4, ptr noundef nonnull %9, ptr noundef %121) #10 + %122 = call i32 %120(ptr noundef nonnull %0, ptr noundef nonnull %4, ptr noundef nonnull %9, ptr noundef %121) #9 %.not77 = icmp eq i32 %122, 0 call void @llvm.lifetime.end.p0(ptr nonnull %5) call void @llvm.lifetime.end.p0(ptr nonnull %4) @@ -761,9 +761,9 @@ define dso_local range(i32 0, 28) i32 @Curl_hsts_loadfile(ptr readnone captures( %7 = load ptr, ptr @Curl_cfree, align 8, !tbaa !4 %8 = getelementptr inbounds nuw i8, ptr %1, i64 32 %9 = load ptr, ptr %8, align 8, !tbaa !20 - tail call void %7(ptr noundef %9) #10 + tail call void %7(ptr noundef %9) #9 %10 = load ptr, ptr @Curl_cstrdup, align 8, !tbaa !4 - %11 = tail call ptr %10(ptr noundef %2) #10 + %11 = tail call ptr %10(ptr noundef %2) #9 store ptr %11, ptr %8, align 8, !tbaa !20 %.not.i = icmp eq ptr %11, null br i1 %.not.i, label %hsts_load.exit, label %12 @@ -775,13 +775,13 @@ define dso_local range(i32 0, 28) i32 @Curl_hsts_loadfile(ptr readnone captures( 14: ; preds = %12 call void @llvm.lifetime.start.p0(ptr nonnull %6) - call void @Curl_dyn_init(ptr noundef nonnull %6, i64 noundef 4095) #10 - %15 = call i32 @Curl_get_line(ptr noundef nonnull %6, ptr noundef nonnull %13) #10 + call void @Curl_dyn_init(ptr noundef nonnull %6, i64 noundef 4095) #9 + %15 = call i32 @Curl_get_line(ptr noundef nonnull %6, ptr noundef nonnull %13) #9 %.not2327.i = icmp eq i32 %15, 0 br i1 %.not2327.i, label %._crit_edge.i, label %.lr.ph.i .lr.ph.i: ; preds = %14, %.loopexit.i - %16 = call ptr @Curl_dyn_ptr(ptr noundef nonnull %6) #10 + %16 = call ptr @Curl_dyn_ptr(ptr noundef nonnull %6) #9 br label %17 17: ; preds = %.critedge2.i, %.lr.ph.i @@ -798,14 +798,14 @@ define dso_local range(i32 0, 28) i32 @Curl_hsts_loadfile(ptr readnone captures( br label %17, !llvm.loop !117 20: ; preds = %17 - %21 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.0.i) #11 + %21 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.0.i) #10 %22 = icmp ult i64 %21, 2 br i1 %22, label %.loopexit.i, label %23, !llvm.loop !118 23: ; preds = %20 call void @llvm.lifetime.start.p0(ptr nonnull %4) call void @llvm.lifetime.start.p0(ptr nonnull %5) - %24 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull readonly %.0.i, ptr noundef nonnull @.str.10, ptr noundef nonnull %4, ptr noundef nonnull %5) #10 + %24 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull readonly %.0.i, ptr noundef nonnull @.str.10, ptr noundef nonnull %4, ptr noundef nonnull %5) #9 %25 = icmp eq i32 %24, 2 br i1 %25, label %26, label %hsts_add.exit.i @@ -815,7 +815,7 @@ define dso_local range(i32 0, 28) i32 @Curl_hsts_loadfile(ptr readnone captures( br i1 %.not.i.i, label %29, label %27 27: ; preds = %26 - %28 = call i64 @Curl_getdate_capped(ptr noundef nonnull %5) #10 + %28 = call i64 @Curl_getdate_capped(ptr noundef nonnull %5) #9 br label %29 29: ; preds = %27, %26 @@ -830,7 +830,7 @@ define dso_local range(i32 0, 28) i32 @Curl_hsts_loadfile(ptr readnone captures( 34: ; preds = %29 %35 = zext i1 %32 to i8 - %36 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %spec.select.idx.sroa.sel.idx.i.sroa.sel.idx.sroa.sel.idx.i.sroa.sel.idx.sroa.sel.idx.sroa.sel) #11 + %36 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %spec.select.idx.sroa.sel.idx.i.sroa.sel.idx.sroa.sel.idx.i.sroa.sel.idx.sroa.sel.idx.sroa.sel) #10 %.not.i.i.i = icmp eq i64 %36, 0 br i1 %.not.i.i.i, label %hsts_add.exit.i, label %37 @@ -849,18 +849,18 @@ define dso_local range(i32 0, 28) i32 @Curl_hsts_loadfile(ptr readnone captures( .thread32.i.i.i: ; preds = %42, %37 %.02235.i.i.i = phi i64 [ %43, %42 ], [ %36, %37 ] %44 = load ptr, ptr @Curl_ccalloc, align 8, !tbaa !4 - %45 = call ptr %44(i64 noundef 1, i64 noundef 56) #10 + %45 = call ptr %44(i64 noundef 1, i64 noundef 56) #9 %.not28.i.i.i = icmp eq ptr %45, null br i1 %.not28.i.i.i, label %hsts_add.exit.i, label %46 46: ; preds = %.thread32.i.i.i - %47 = call ptr @Curl_memdup0(ptr noundef nonnull %spec.select.idx.sroa.sel.idx.i.sroa.sel.idx.sroa.sel.idx.i.sroa.sel.idx.sroa.sel.idx.sroa.sel, i64 noundef %.02235.i.i.i) #10 + %47 = call ptr @Curl_memdup0(ptr noundef nonnull %spec.select.idx.sroa.sel.idx.i.sroa.sel.idx.sroa.sel.idx.i.sroa.sel.idx.sroa.sel.idx.sroa.sel, i64 noundef %.02235.i.i.i) #9 %.not29.i.i.i = icmp eq ptr %47, null br i1 %.not29.i.i.i, label %48, label %.critedge.i.i.i 48: ; preds = %46 %49 = load ptr, ptr @Curl_cfree, align 8, !tbaa !4 - call void %49(ptr noundef nonnull %45) #10 + call void %49(ptr noundef nonnull %45) #9 br label %hsts_add.exit.i .critedge.i.i.i: ; preds = %46 @@ -870,13 +870,13 @@ define dso_local range(i32 0, 28) i32 @Curl_hsts_loadfile(ptr readnone captures( store i64 %30, ptr %51, align 8, !tbaa !33 %52 = getelementptr inbounds nuw i8, ptr %45, i64 40 store i8 %35, ptr %52, align 8, !tbaa !34 - call void @Curl_llist_append(ptr noundef %1, ptr noundef nonnull %45, ptr noundef nonnull %45) #10 + call void @Curl_llist_append(ptr noundef %1, ptr noundef nonnull %45, ptr noundef nonnull %45) #9 br label %hsts_add.exit.i 53: ; preds = %29 %54 = getelementptr inbounds nuw i8, ptr %33, i64 32 %55 = load ptr, ptr %54, align 8, !tbaa !10 - %56 = call i32 @curl_strequal(ptr noundef nonnull %spec.select.idx.sroa.sel.idx.i.sroa.sel.idx.sroa.sel.idx.i.sroa.sel.idx.sroa.sel.idx.sroa.sel, ptr noundef %55) #10 + %56 = call i32 @curl_strequal(ptr noundef nonnull %spec.select.idx.sroa.sel.idx.i.sroa.sel.idx.sroa.sel.idx.i.sroa.sel.idx.sroa.sel.idx.sroa.sel, ptr noundef %55) #9 %.not28.i.i = icmp eq i32 %56, 0 br i1 %.not28.i.i, label %hsts_add.exit.i, label %57 @@ -896,12 +896,12 @@ hsts_add.exit.i: ; preds = %61, %57, %53, %.cri br label %.loopexit.i .loopexit.i: ; preds = %17, %hsts_add.exit.i, %20 - %62 = call i32 @Curl_get_line(ptr noundef nonnull %6, ptr noundef nonnull %13) #10 + %62 = call i32 @Curl_get_line(ptr noundef nonnull %6, ptr noundef nonnull %13) #9 %.not23.i = icmp eq i32 %62, 0 br i1 %.not23.i, label %._crit_edge.i, label %.lr.ph.i ._crit_edge.i: ; preds = %.loopexit.i, %14 - call void @Curl_dyn_free(ptr noundef nonnull %6) #10 + call void @Curl_dyn_free(ptr noundef nonnull %6) #9 %63 = call i32 @fclose(ptr noundef nonnull %13) call void @llvm.lifetime.end.p0(ptr nonnull %6) br label %hsts_load.exit @@ -943,7 +943,7 @@ define dso_local range(i32 0, 44) i32 @Curl_hsts_loadcb(ptr noundef %0, ptr noun store i8 0, ptr %10, align 1, !tbaa !25 store i8 0, ptr %3, align 16, !tbaa !25 %16 = load ptr, ptr %11, align 8, !tbaa !120 - %17 = call i32 %13(ptr noundef nonnull %0, ptr noundef nonnull %4, ptr noundef %16) #10 + %17 = call i32 %13(ptr noundef nonnull %0, ptr noundef nonnull %4, ptr noundef %16) #9 switch i32 %17, label %.thread45.sink.split.i.loopexit [ i32 0, label %18 i32 2, label %.thread45.sink.split.i @@ -961,7 +961,7 @@ define dso_local range(i32 0, 44) i32 @Curl_hsts_loadcb(ptr noundef %0, ptr noun br i1 %.not22.i, label %25, label %23 23: ; preds = %21 - %24 = call i64 @Curl_getdate_capped(ptr noundef nonnull %10) #10 + %24 = call i64 @Curl_getdate_capped(ptr noundef nonnull %10) #9 %.pre49.i = load ptr, ptr %4, align 8, !tbaa !112 br label %25 @@ -970,7 +970,7 @@ define dso_local range(i32 0, 44) i32 @Curl_hsts_loadcb(ptr noundef %0, ptr noun %.018.i = phi i64 [ %24, %23 ], [ 9223372036854775807, %21 ] %27 = load i8, ptr %9, align 8 %28 = and i8 %27, 1 - %29 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %26) #11 + %29 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %26) #10 %.not.i.i = icmp eq i64 %29, 0 br i1 %.not.i.i, label %46, label %30 @@ -989,18 +989,18 @@ define dso_local range(i32 0, 44) i32 @Curl_hsts_loadcb(ptr noundef %0, ptr noun .thread32.i.i: ; preds = %35, %30 %.02235.i.i = phi i64 [ %36, %35 ], [ %29, %30 ] %37 = load ptr, ptr @Curl_ccalloc, align 8, !tbaa !4 - %38 = call ptr %37(i64 noundef 1, i64 noundef 56) #10 + %38 = call ptr %37(i64 noundef 1, i64 noundef 56) #9 %.not28.i.i = icmp eq ptr %38, null br i1 %.not28.i.i, label %.thread45.sink.split.i, label %39 39: ; preds = %.thread32.i.i - %40 = call ptr @Curl_memdup0(ptr noundef nonnull %26, i64 noundef %.02235.i.i) #10 + %40 = call ptr @Curl_memdup0(ptr noundef nonnull %26, i64 noundef %.02235.i.i) #9 %.not29.i.i = icmp eq ptr %40, null br i1 %.not29.i.i, label %41, label %.critedge.i.i 41: ; preds = %39 %42 = load ptr, ptr @Curl_cfree, align 8, !tbaa !4 - call void %42(ptr noundef nonnull %38) #10 + call void %42(ptr noundef nonnull %38) #9 br label %.thread45.sink.split.i .critedge.i.i: ; preds = %39 @@ -1010,7 +1010,7 @@ define dso_local range(i32 0, 44) i32 @Curl_hsts_loadcb(ptr noundef %0, ptr noun store i64 %.018.i, ptr %44, align 8, !tbaa !33 %45 = getelementptr inbounds nuw i8, ptr %38, i64 40 store i8 %28, ptr %45, align 8, !tbaa !34 - call void @Curl_llist_append(ptr noundef nonnull %1, ptr noundef nonnull %38, ptr noundef nonnull %38) #10 + call void @Curl_llist_append(ptr noundef nonnull %1, ptr noundef nonnull %38, ptr noundef nonnull %38) #9 br label %46 46: ; preds = %.critedge.i.i, %35, %25 @@ -1042,7 +1042,7 @@ define dso_local void @Curl_hsts_loadfiles(ptr noundef %0) local_unnamed_addr #0 br i1 %.not, label %15, label %4 4: ; preds = %1 - %5 = tail call i32 @Curl_share_lock(ptr noundef nonnull %0, i32 noundef 7, i32 noundef 2) #10 + %5 = tail call i32 @Curl_share_lock(ptr noundef nonnull %0, i32 noundef 7, i32 noundef 2) #9 %6 = getelementptr inbounds nuw i8, ptr %0, i64 2584 br label %7 @@ -1057,7 +1057,7 @@ define dso_local void @Curl_hsts_loadfiles(ptr noundef %0) local_unnamed_addr #0 br i1 %.not10, label %13, label %7, !llvm.loop !126 13: ; preds = %7 - %14 = tail call i32 @Curl_share_unlock(ptr noundef nonnull %0, i32 noundef 7) #10 + %14 = tail call i32 @Curl_share_unlock(ptr noundef nonnull %0, i32 noundef 7) #9 br label %15 15: ; preds = %13, %1 diff --git a/bench/cpython/optimized/bytes_methods.ll b/bench/cpython/optimized/bytes_methods.ll index 1b750062f4b..07a85584ec3 100644 --- a/bench/cpython/optimized/bytes_methods.ll +++ b/bench/cpython/optimized/bytes_methods.ll @@ -1030,14 +1030,14 @@ _PyIndex_Check.exit.thread.i: ; preds = %_PyIndex_Check.exit 23: ; preds = %18 %or.cond.i = icmp ugt i64 %19, 255 - br i1 %or.cond.i, label %.thread.i, label %parse_args_finds_byte.exit.thread39 + br i1 %or.cond.i, label %.thread.i, label %parse_args_finds_byte.exit.thread40 .thread.i: ; preds = %23, %21 %24 = load ptr, ptr @PyExc_ValueError, align 8, !tbaa !28 tail call void @PyErr_SetString(ptr noundef %24, ptr noundef nonnull @.str.7) #14 br label %parse_args_finds_byte.exit.thread -parse_args_finds_byte.exit.thread39: ; preds = %23 +parse_args_finds_byte.exit.thread40: ; preds = %23 %25 = trunc nuw i64 %19 to i8 store i8 %25, ptr %6, align 1, !tbaa !4 br label %32 @@ -1057,8 +1057,8 @@ parse_args_finds_byte.exit: ; preds = %5 %31 = load i64, ptr %30, align 8, !tbaa !21 br label %32 -32: ; preds = %parse_args_finds_byte.exit.thread39, %parse_args_finds_byte.exit, %28 - %.not2843 = phi i1 [ false, %28 ], [ true, %parse_args_finds_byte.exit ], [ true, %parse_args_finds_byte.exit.thread39 ] +32: ; preds = %parse_args_finds_byte.exit.thread40, %parse_args_finds_byte.exit, %28 + %.not2844 = phi i1 [ false, %28 ], [ true, %parse_args_finds_byte.exit ], [ true, %parse_args_finds_byte.exit.thread39 ] %.020 = phi ptr [ %29, %28 ], [ %6, %parse_args_finds_byte.exit ], [ %6, %parse_args_finds_byte.exit.thread39 ] %.019 = phi i64 [ %31, %28 ], [ 1, %parse_args_finds_byte.exit ], [ 1, %parse_args_finds_byte.exit.thread39 ] %33 = icmp sgt i64 %4, %1 @@ -1086,28 +1086,28 @@ parse_args_finds_byte.exit: ; preds = %5 44: ; preds = %38 %45 = icmp eq i64 %.019, 0 - br i1 %45, label %46, label %48 + br i1 %45, label %46, label %49 46: ; preds = %44 %47 = call i64 @llvm.sadd.sat.i64(i64 %42, i64 1) br label %stringlib_count.exit -48: ; preds = %44 - %49 = call fastcc i64 @fastsearch(ptr noundef %41, i64 noundef %42, ptr noundef %.020, i64 noundef %.019, i64 noundef 9223372036854775807, i32 noundef 0) - %..i = call i64 @llvm.smax.i64(i64 %49, i64 0) +49: ; preds = %44 + %50 = call fastcc i64 @fastsearch(ptr noundef %41, i64 noundef %42, ptr noundef %.020, i64 noundef %.019, i64 noundef 9223372036854775807, i32 noundef 0) + %..i = call i64 @llvm.smax.i64(i64 %50, i64 0) br label %stringlib_count.exit -stringlib_count.exit: ; preds = %38, %46, %48 +stringlib_count.exit: ; preds = %38, %46, %49 %.0.i31 = phi i64 [ %47, %46 ], [ 0, %38 ], [ %..i, %48 ] - %50 = call ptr @PyLong_FromSsize_t(i64 noundef %.0.i31) #14 - br i1 %.not2843, label %parse_args_finds_byte.exit.thread, label %51 + %51 = call ptr @PyLong_FromSsize_t(i64 noundef %.0.i31) #14 + br i1 %.not2844, label %parse_args_finds_byte.exit.thread, label %52 -51: ; preds = %stringlib_count.exit +52: ; preds = %stringlib_count.exit call void @PyBuffer_Release(ptr noundef nonnull %7) #14 br label %parse_args_finds_byte.exit.thread -parse_args_finds_byte.exit.thread: ; preds = %21, %.thread.i, %_PyIndex_Check.exit.thread.i, %stringlib_count.exit, %51, %26 - %.0 = phi ptr [ null, %26 ], [ %50, %51 ], [ %50, %stringlib_count.exit ], [ null, %_PyIndex_Check.exit.thread.i ], [ null, %.thread.i ], [ null, %21 ] +parse_args_finds_byte.exit.thread: ; preds = %21, %.thread.i, %_PyIndex_Check.exit.thread.i, %stringlib_count.exit, %52, %26 + %.0 = phi ptr [ null, %26 ], [ %51, %51 ], [ %51, %stringlib_count.exit ], [ null, %_PyIndex_Check.exit.thread.i ], [ null, %.thread.i ], [ null, %21 ] call void @llvm.lifetime.end.p0(ptr nonnull %7) call void @llvm.lifetime.end.p0(ptr nonnull %6) ret ptr %.0 diff --git a/bench/cpython/optimized/unicodeobject.ll b/bench/cpython/optimized/unicodeobject.ll index 4589a4ace3e..4fdab256006 100644 --- a/bench/cpython/optimized/unicodeobject.ll +++ b/bench/cpython/optimized/unicodeobject.ll @@ -26463,7 +26463,7 @@ define internal fastcc range(i64 -1, -9223372036854775808) i64 @unicode_count_im %11 = and i16 %10, 7 %12 = zext nneg i16 %11 to i32 %13 = icmp samesign ult i16 %7, %11 - br i1 %13, label %67, label %14 + br i1 %13, label %70, label %14 14: ; preds = %4 %15 = getelementptr i8, ptr %0, i64 16 @@ -26490,7 +26490,7 @@ define internal fastcc range(i64 -1, -9223372036854775808) i64 @unicode_count_im %.056 = select i1 %23, i64 %spec.store.select1, i64 %2 %25 = sub i64 %.058, %.056 %26 = icmp slt i64 %25, %.val - br i1 %26, label %67, label %27 + br i1 %26, label %70, label %27 27: ; preds = %22 %28 = and i16 %6, 8 @@ -26542,8 +26542,8 @@ _PyUnicode_DATA.exit79: ; preds = %34, %36 %41 = icmp slt i64 %25, 0 switch i16 %7, label %66 [ i16 1, label %42 - i16 2, label %50 - i16 4, label %58 + i16 2, label %51 + i16 4, label %60 ] 42: ; preds = %40 @@ -26552,65 +26552,65 @@ _PyUnicode_DATA.exit79: ; preds = %34, %36 44: ; preds = %42 %45 = icmp eq i64 %.val, 0 - br i1 %45, label %46, label %48 + br i1 %45, label %46, label %49 46: ; preds = %44 %47 = tail call i64 @llvm.sadd.sat.i64(i64 %25, i64 1) br label %ucs1lib_count.exit -48: ; preds = %44 - %49 = tail call fastcc i64 @ucs1lib_fastsearch(ptr noundef %43, i64 noundef %25, ptr noundef %.057, i64 noundef %.val, i64 noundef 9223372036854775807, i32 noundef 0) - %..i = tail call i64 @llvm.smax.i64(i64 %49, i64 0) +49: ; preds = %44 + %50 = tail call fastcc i64 @ucs1lib_fastsearch(ptr noundef %43, i64 noundef %25, ptr noundef %.057, i64 noundef %.val, i64 noundef 9223372036854775807, i32 noundef 0) + %..i = tail call i64 @llvm.smax.i64(i64 %50, i64 0) br label %ucs1lib_count.exit -50: ; preds = %40 - %51 = getelementptr i16, ptr %.0.i, i64 %.056 - br i1 %41, label %ucs1lib_count.exit, label %52 +51: ; preds = %40 + %52 = getelementptr i16, ptr %.0.i, i64 %.056 + br i1 %41, label %ucs1lib_count.exit, label %53 -52: ; preds = %50 - %53 = icmp eq i64 %.val, 0 - br i1 %53, label %54, label %56 +53: ; preds = %51 + %54 = icmp eq i64 %.val, 0 + br i1 %54, label %55, label %58 -54: ; preds = %52 +55: ; preds = %53 %55 = tail call i64 @llvm.sadd.sat.i64(i64 %25, i64 1) br label %ucs1lib_count.exit -56: ; preds = %52 - %57 = tail call fastcc i64 @ucs2lib_fastsearch(ptr noundef %51, i64 noundef %25, ptr noundef %.057, i64 noundef %.val, i64 noundef 9223372036854775807, i32 noundef 0) - %..i81 = tail call i64 @llvm.smax.i64(i64 %57, i64 0) +58: ; preds = %53 + %59 = tail call fastcc i64 @ucs2lib_fastsearch(ptr noundef %52, i64 noundef %25, ptr noundef %.057, i64 noundef %.val, i64 noundef 9223372036854775807, i32 noundef 0) + %..i81 = tail call i64 @llvm.smax.i64(i64 %59, i64 0) br label %ucs1lib_count.exit -58: ; preds = %40 - %59 = getelementptr i32, ptr %.0.i, i64 %.056 - br i1 %41, label %ucs1lib_count.exit, label %60 - -60: ; preds = %58 - %61 = icmp eq i64 %.val, 0 - br i1 %61, label %62, label %64 +60: ; preds = %40 + %61 = getelementptr i32, ptr %.0.i, i64 %.056 + br i1 %41, label %ucs1lib_count.exit, label %62 62: ; preds = %60 + %63 = icmp eq i64 %.val, 0 + br i1 %63, label %64, label %67 + +64: ; preds = %62 %63 = tail call i64 @llvm.sadd.sat.i64(i64 %25, i64 1) br label %ucs1lib_count.exit -64: ; preds = %60 - %65 = tail call fastcc i64 @ucs4lib_fastsearch(ptr noundef %59, i64 noundef %25, ptr noundef %.057, i64 noundef %.val, i64 noundef 9223372036854775807, i32 noundef 0) - %..i83 = tail call i64 @llvm.smax.i64(i64 %65, i64 0) +67: ; preds = %62 + %68 = tail call fastcc i64 @ucs4lib_fastsearch(ptr noundef %61, i64 noundef %25, ptr noundef %.057, i64 noundef %.val, i64 noundef 9223372036854775807, i32 noundef 0) + %..i83 = tail call i64 @llvm.smax.i64(i64 %68, i64 0) br label %ucs1lib_count.exit -66: ; preds = %40 +69: ; preds = %40 unreachable -ucs1lib_count.exit: ; preds = %64, %62, %58, %56, %54, %50, %48, %46, %42 +ucs1lib_count.exit: ; preds = %67, %64, %60, %58, %55, %51, %49, %46, %42 %.059 = phi i64 [ %47, %46 ], [ 0, %42 ], [ %..i, %48 ], [ %55, %54 ], [ 0, %50 ], [ %..i81, %56 ], [ %63, %62 ], [ 0, %58 ], [ %..i83, %64 ] - br i1 %.not, label %67, label %.sink.split + br i1 %.not, label %70, label %.sink.split .sink.split: ; preds = %38, %ucs1lib_count.exit %.057.sink = phi ptr [ %.057, %ucs1lib_count.exit ], [ null, %38 ] %.0.ph = phi i64 [ %.059, %ucs1lib_count.exit ], [ -1, %38 ] tail call void @PyMem_Free(ptr noundef %.057.sink) #42 - br label %67 + br label %70 -67: ; preds = %.sink.split, %ucs1lib_count.exit, %22, %4 +70: ; preds = %.sink.split, %ucs1lib_count.exit, %22, %4 %.0 = phi i64 [ 0, %4 ], [ 0, %22 ], [ %.059, %ucs1lib_count.exit ], [ %.0.ph, %.sink.split ] ret i64 %.0 } diff --git a/bench/curl/optimized/altsvc.ll b/bench/curl/optimized/altsvc.ll index a4e44250216..9be15799708 100644 --- a/bench/curl/optimized/altsvc.ll +++ b/bench/curl/optimized/altsvc.ll @@ -53,13 +53,13 @@ define hidden noundef nonnull ptr @Curl_alpnid2str(i32 noundef %0) local_unnamed ; Function Attrs: nounwind uwtable define hidden ptr @Curl_altsvc_init() local_unnamed_addr #1 { %1 = load ptr, ptr @Curl_ccalloc, align 8, !tbaa !3 - %2 = tail call ptr %1(i64 noundef 1, i64 noundef 48) #13 + %2 = tail call ptr %1(i64 noundef 1, i64 noundef 48) #12 %.not = icmp eq ptr %2, null br i1 %.not, label %6, label %3 3: ; preds = %0 %4 = getelementptr inbounds nuw i8, ptr %2, i64 8 - tail call void @Curl_llist_init(ptr noundef nonnull %4, ptr noundef null) #13 + tail call void @Curl_llist_init(ptr noundef nonnull %4, ptr noundef null) #12 %5 = getelementptr inbounds nuw i8, ptr %2, i64 40 store i64 8, ptr %5, align 8, !tbaa !7 br label %6 @@ -86,9 +86,9 @@ define hidden range(i32 0, 28) i32 @Curl_altsvc_load(ptr noundef %0, ptr noundef %14 = alloca %struct.dynbuf, align 8 %15 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 %16 = load ptr, ptr %0, align 8, !tbaa !13 - tail call void %15(ptr noundef %16) #13 + tail call void %15(ptr noundef %16) #12 %17 = load ptr, ptr @Curl_cstrdup, align 8, !tbaa !3 - %18 = tail call ptr %17(ptr noundef %1) #13 + %18 = tail call ptr %17(ptr noundef %1) #12 store ptr %18, ptr %0, align 8, !tbaa !13 %.not.i = icmp eq ptr %18, null br i1 %.not.i, label %altsvc_load.exit, label %19 @@ -100,8 +100,8 @@ define hidden range(i32 0, 28) i32 @Curl_altsvc_load(ptr noundef %0, ptr noundef 21: ; preds = %19 call void @llvm.lifetime.start.p0(ptr nonnull %14) - call void @Curl_dyn_init(ptr noundef nonnull %14, i64 noundef 4095) #13 - %22 = call i32 @Curl_get_line(ptr noundef nonnull %14, ptr noundef nonnull %20) #13 + call void @Curl_dyn_init(ptr noundef nonnull %14, i64 noundef 4095) #12 + %22 = call i32 @Curl_get_line(ptr noundef nonnull %14, ptr noundef nonnull %20) #12 %.not2225.i = icmp eq i32 %22, 0 br i1 %.not2225.i, label %._crit_edge.i, label %.lr.ph.i @@ -112,7 +112,7 @@ define hidden range(i32 0, 28) i32 @Curl_altsvc_load(ptr noundef %0, ptr noundef br label %26 26: ; preds = %.loopexit.i, %.lr.ph.i - %27 = call ptr @Curl_dyn_ptr(ptr noundef nonnull %14) #13 + %27 = call ptr @Curl_dyn_ptr(ptr noundef nonnull %14) #12 br label %28 28: ; preds = %.critedge2.i, %26 @@ -140,92 +140,92 @@ define hidden range(i32 0, 28) i32 @Curl_altsvc_load(ptr noundef %0, ptr noundef call void @llvm.lifetime.start.p0(ptr nonnull %10) call void @llvm.lifetime.start.p0(ptr nonnull %11) call void @llvm.lifetime.start.p0(ptr nonnull %12) - %32 = call i32 @Curl_str_word(ptr noundef nonnull %3, ptr noundef nonnull %6, i64 noundef 10) #13 + %32 = call i32 @Curl_str_word(ptr noundef nonnull %3, ptr noundef nonnull %6, i64 noundef 10) #12 %.not.i.i = icmp eq i32 %32, 0 br i1 %.not.i.i, label %33, label %altsvc_add.exit.i 33: ; preds = %31 - %34 = call i32 @Curl_str_singlespace(ptr noundef nonnull %3) #13 + %34 = call i32 @Curl_str_singlespace(ptr noundef nonnull %3) #12 %.not7.i.i = icmp eq i32 %34, 0 br i1 %.not7.i.i, label %35, label %altsvc_add.exit.i 35: ; preds = %33 - %36 = call i32 @Curl_str_word(ptr noundef nonnull %3, ptr noundef nonnull %4, i64 noundef 2048) #13 + %36 = call i32 @Curl_str_word(ptr noundef nonnull %3, ptr noundef nonnull %4, i64 noundef 2048) #12 %.not8.i.i = icmp eq i32 %36, 0 br i1 %.not8.i.i, label %37, label %altsvc_add.exit.i 37: ; preds = %35 - %38 = call i32 @Curl_str_singlespace(ptr noundef nonnull %3) #13 + %38 = call i32 @Curl_str_singlespace(ptr noundef nonnull %3) #12 %.not9.i.i = icmp eq i32 %38, 0 br i1 %.not9.i.i, label %39, label %altsvc_add.exit.i 39: ; preds = %37 - %40 = call i32 @Curl_str_number(ptr noundef nonnull %3, ptr noundef nonnull %9, i64 noundef 65535) #13 + %40 = call i32 @Curl_str_number(ptr noundef nonnull %3, ptr noundef nonnull %9, i64 noundef 65535) #12 %.not10.i.i = icmp eq i32 %40, 0 br i1 %.not10.i.i, label %41, label %altsvc_add.exit.i 41: ; preds = %39 - %42 = call i32 @Curl_str_singlespace(ptr noundef nonnull %3) #13 + %42 = call i32 @Curl_str_singlespace(ptr noundef nonnull %3) #12 %.not11.i.i = icmp eq i32 %42, 0 br i1 %.not11.i.i, label %43, label %altsvc_add.exit.i 43: ; preds = %41 - %44 = call i32 @Curl_str_word(ptr noundef nonnull %3, ptr noundef nonnull %7, i64 noundef 10) #13 + %44 = call i32 @Curl_str_word(ptr noundef nonnull %3, ptr noundef nonnull %7, i64 noundef 10) #12 %.not12.i.i = icmp eq i32 %44, 0 br i1 %.not12.i.i, label %45, label %altsvc_add.exit.i 45: ; preds = %43 - %46 = call i32 @Curl_str_singlespace(ptr noundef nonnull %3) #13 + %46 = call i32 @Curl_str_singlespace(ptr noundef nonnull %3) #12 %.not13.i.i = icmp eq i32 %46, 0 br i1 %.not13.i.i, label %47, label %altsvc_add.exit.i 47: ; preds = %45 - %48 = call i32 @Curl_str_word(ptr noundef nonnull %3, ptr noundef nonnull %5, i64 noundef 2048) #13 + %48 = call i32 @Curl_str_word(ptr noundef nonnull %3, ptr noundef nonnull %5, i64 noundef 2048) #12 %.not14.i.i = icmp eq i32 %48, 0 br i1 %.not14.i.i, label %49, label %altsvc_add.exit.i 49: ; preds = %47 - %50 = call i32 @Curl_str_singlespace(ptr noundef nonnull %3) #13 + %50 = call i32 @Curl_str_singlespace(ptr noundef nonnull %3) #12 %.not15.i.i = icmp eq i32 %50, 0 br i1 %.not15.i.i, label %51, label %altsvc_add.exit.i 51: ; preds = %49 - %52 = call i32 @Curl_str_number(ptr noundef nonnull %3, ptr noundef nonnull %10, i64 noundef 65535) #13 + %52 = call i32 @Curl_str_number(ptr noundef nonnull %3, ptr noundef nonnull %10, i64 noundef 65535) #12 %.not16.i.i = icmp eq i32 %52, 0 br i1 %.not16.i.i, label %53, label %altsvc_add.exit.i 53: ; preds = %51 - %54 = call i32 @Curl_str_singlespace(ptr noundef nonnull %3) #13 + %54 = call i32 @Curl_str_singlespace(ptr noundef nonnull %3) #12 %.not17.i.i = icmp eq i32 %54, 0 br i1 %.not17.i.i, label %55, label %altsvc_add.exit.i 55: ; preds = %53 - %56 = call i32 @Curl_str_quotedword(ptr noundef nonnull %3, ptr noundef nonnull %8, i64 noundef 256) #13 + %56 = call i32 @Curl_str_quotedword(ptr noundef nonnull %3, ptr noundef nonnull %8, i64 noundef 256) #12 %.not18.i.i = icmp eq i32 %56, 0 br i1 %.not18.i.i, label %57, label %altsvc_add.exit.i 57: ; preds = %55 - %58 = call i32 @Curl_str_singlespace(ptr noundef nonnull %3) #13 + %58 = call i32 @Curl_str_singlespace(ptr noundef nonnull %3) #12 %.not19.i.i = icmp eq i32 %58, 0 br i1 %.not19.i.i, label %59, label %altsvc_add.exit.i 59: ; preds = %57 - %60 = call i32 @Curl_str_number(ptr noundef nonnull %3, ptr noundef nonnull %11, i64 noundef 1) #13 + %60 = call i32 @Curl_str_number(ptr noundef nonnull %3, ptr noundef nonnull %11, i64 noundef 1) #12 %.not20.i.i = icmp eq i32 %60, 0 br i1 %.not20.i.i, label %61, label %altsvc_add.exit.i 61: ; preds = %59 - %62 = call i32 @Curl_str_singlespace(ptr noundef nonnull %3) #13 + %62 = call i32 @Curl_str_singlespace(ptr noundef nonnull %3) #12 %.not21.i.i = icmp eq i32 %62, 0 br i1 %.not21.i.i, label %63, label %altsvc_add.exit.i 63: ; preds = %61 - %64 = call i32 @Curl_str_number(ptr noundef nonnull %3, ptr noundef nonnull %12, i64 noundef 0) #13 + %64 = call i32 @Curl_str_number(ptr noundef nonnull %3, ptr noundef nonnull %12, i64 noundef 0) #12 %.not22.i.i = icmp eq i32 %64, 0 br i1 %.not22.i.i, label %65, label %altsvc_add.exit.i 65: ; preds = %63 - %66 = call i32 @Curl_str_newline(ptr noundef nonnull %3) #13 + %66 = call i32 @Curl_str_newline(ptr noundef nonnull %3) #12 %.not23.i.i = icmp eq i32 %66, 0 br i1 %.not23.i.i, label %67, label %altsvc_add.exit.i @@ -236,7 +236,7 @@ define hidden range(i32 0, 28) i32 @Curl_altsvc_load(ptr noundef %0, ptr noundef call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 16 %13, ptr align 1 %68, i64 %69, i1 false) %70 = getelementptr inbounds nuw i8, ptr %13, i64 %69 store i8 0, ptr %70, align 1, !tbaa !14 - %71 = call i64 @Curl_getdate_capped(ptr noundef nonnull %13) #13 + %71 = call i64 @Curl_getdate_capped(ptr noundef nonnull %13) #12 %72 = load i64, ptr %9, align 8, !tbaa !21 %73 = load i64, ptr %10, align 8, !tbaa !21 %.val.i.i = load ptr, ptr %7, align 8, !tbaa !18 @@ -256,7 +256,7 @@ define hidden range(i32 0, 28) i32 @Curl_altsvc_load(ptr noundef %0, ptr noundef %81 = zext i1 %79 to i8 store i8 %81, ptr %80, align 8, !tbaa !31 %82 = getelementptr inbounds nuw i8, ptr %74, i64 48 - call void @Curl_llist_append(ptr noundef nonnull %25, ptr noundef nonnull %74, ptr noundef nonnull %82) #13 + call void @Curl_llist_append(ptr noundef nonnull %25, ptr noundef nonnull %74, ptr noundef nonnull %82) #12 br label %83 83: ; preds = %75, %67 @@ -277,12 +277,12 @@ altsvc_add.exit.i: ; preds = %83, %65, %63, %61, br label %.loopexit.i .loopexit.i: ; preds = %28, %altsvc_add.exit.i - %84 = call i32 @Curl_get_line(ptr noundef nonnull %14, ptr noundef nonnull %20) #13 + %84 = call i32 @Curl_get_line(ptr noundef nonnull %14, ptr noundef nonnull %20) #12 %.not22.i = icmp eq i32 %84, 0 br i1 %.not22.i, label %._crit_edge.i, label %26 ._crit_edge.i: ; preds = %.loopexit.i, %21 - call void @Curl_dyn_free(ptr noundef nonnull %14) #13 + call void @Curl_dyn_free(ptr noundef nonnull %14) #12 %85 = call i32 @fclose(ptr noundef nonnull %20) call void @llvm.lifetime.end.p0(ptr nonnull %14) br label %altsvc_load.exit @@ -307,32 +307,32 @@ define hidden void @Curl_altsvc_cleanup(ptr noundef captures(none) %0) local_unn 3: ; preds = %1 %4 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %5 = tail call ptr @Curl_llist_head(ptr noundef nonnull %4) #13 + %5 = tail call ptr @Curl_llist_head(ptr noundef nonnull %4) #12 %.not1213 = icmp eq ptr %5, null br i1 %.not1213, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %3, %.lr.ph %.014 = phi ptr [ %7, %.lr.ph ], [ %5, %3 ] - %6 = tail call ptr @Curl_node_elem(ptr noundef nonnull %.014) #13 - %7 = tail call ptr @Curl_node_next(ptr noundef nonnull %.014) #13 + %6 = tail call ptr @Curl_node_elem(ptr noundef nonnull %.014) #12 + %7 = tail call ptr @Curl_node_next(ptr noundef nonnull %.014) #12 %8 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 %9 = load ptr, ptr %6, align 8, !tbaa !34 - tail call void %8(ptr noundef %9) #13 + tail call void %8(ptr noundef %9) #12 %10 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 %11 = getelementptr inbounds nuw i8, ptr %6, i64 16 %12 = load ptr, ptr %11, align 8, !tbaa !35 - tail call void %10(ptr noundef %12) #13 + tail call void %10(ptr noundef %12) #12 %13 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 - tail call void %13(ptr noundef nonnull %6) #13 + tail call void %13(ptr noundef nonnull %6) #12 %.not12 = icmp eq ptr %7, null br i1 %.not12, label %._crit_edge, label %.lr.ph, !llvm.loop !36 ._crit_edge: ; preds = %.lr.ph, %3 %14 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 %15 = load ptr, ptr %2, align 8, !tbaa !13 - tail call void %14(ptr noundef %15) #13 + tail call void %14(ptr noundef %15) #12 %16 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 - tail call void %16(ptr noundef nonnull %2) #13 + tail call void %16(ptr noundef nonnull %2) #12 store ptr null, ptr %0, align 8, !tbaa !32 br label %17 @@ -382,7 +382,7 @@ define hidden i32 @Curl_altsvc_save(ptr noundef %0, ptr noundef %1, ptr noundef br i1 %.not41, label %94, label %19 19: ; preds = %17 - %20 = call i32 @Curl_fopen(ptr noundef %0, ptr noundef nonnull %.027, ptr noundef nonnull %6, ptr noundef nonnull %7) #13 + %20 = call i32 @Curl_fopen(ptr noundef %0, ptr noundef nonnull %.027, ptr noundef nonnull %6, ptr noundef nonnull %7) #12 %.not42 = icmp eq i32 %20, 0 br i1 %.not42, label %21, label %91 @@ -390,7 +390,7 @@ define hidden i32 @Curl_altsvc_save(ptr noundef %0, ptr noundef %1, ptr noundef %22 = load ptr, ptr %6, align 8, !tbaa !37 %23 = call i64 @fwrite(ptr nonnull @.str.4, i64 117, i64 1, ptr %22) %24 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %25 = call ptr @Curl_llist_head(ptr noundef nonnull %24) #13 + %25 = call ptr @Curl_llist_head(ptr noundef nonnull %24) #12 %.not4347 = icmp eq ptr %25, null br i1 %.not4347, label %.loopexit, label %.lr.ph @@ -404,13 +404,13 @@ define hidden i32 @Curl_altsvc_save(ptr noundef %0, ptr noundef %1, ptr noundef 31: ; preds = %.lr.ph, %altsvc_out.exit %.02848 = phi ptr [ %25, %.lr.ph ], [ %33, %altsvc_out.exit ] - %32 = call ptr @Curl_node_elem(ptr noundef nonnull %.02848) #13 - %33 = call ptr @Curl_node_next(ptr noundef nonnull %.02848) #13 + %32 = call ptr @Curl_node_elem(ptr noundef nonnull %.02848) #12 + %33 = call ptr @Curl_node_next(ptr noundef nonnull %.02848) #12 %34 = load ptr, ptr %6, align 8, !tbaa !37 call void @llvm.lifetime.start.p0(ptr nonnull %4) %35 = getelementptr inbounds nuw i8, ptr %32, i64 32 %36 = load i64, ptr %35, align 8, !tbaa !22 - %37 = call i32 @Curl_gmtime(i64 noundef %36, ptr noundef nonnull %4) #13 + %37 = call i32 @Curl_gmtime(i64 noundef %36, ptr noundef nonnull %4) #12 %.not.i = icmp eq i32 %37, 0 br i1 %.not.i, label %38, label %altsvc_out.exit.thread @@ -422,12 +422,12 @@ altsvc_out.exit.thread: ; preds = %31 call void @llvm.lifetime.start.p0(ptr nonnull %5) %39 = getelementptr inbounds nuw i8, ptr %32, i64 16 %40 = load ptr, ptr %39, align 8, !tbaa !35 - %41 = call i32 @inet_pton(i32 noundef 10, ptr noundef %40, ptr noundef nonnull %5) #13 + %41 = call i32 @inet_pton(i32 noundef 10, ptr noundef %40, ptr noundef nonnull %5) #12 %42 = icmp eq i32 %41, 1 %spec.select.i = select i1 %42, ptr @.str.14, ptr @.str.3 %spec.select23.i = select i1 %42, ptr @.str.15, ptr @.str.3 %43 = load ptr, ptr %32, align 8, !tbaa !34 - %44 = call i32 @inet_pton(i32 noundef 10, ptr noundef %43, ptr noundef nonnull %5) #13 + %44 = call i32 @inet_pton(i32 noundef 10, ptr noundef %43, ptr noundef nonnull %5) #12 %45 = icmp eq i32 %44, 1 %.019.i = select i1 %45, ptr @.str.14, ptr @.str.3 %.018.i = select i1 %45, ptr @.str.15, ptr @.str.3 @@ -491,7 +491,7 @@ altsvc_out.exit: ; preds = %Curl_alpnid2str.exi %74 = zext nneg i8 %73 to i32 %75 = getelementptr inbounds nuw i8, ptr %32, i64 44 %76 = load i32, ptr %75, align 4, !tbaa !30 - %77 = call i32 (ptr, ptr, ...) @curl_mfprintf(ptr noundef %34, ptr noundef nonnull @.str.16, ptr noundef nonnull %.0.i.i, ptr noundef nonnull %.019.i, ptr noundef %51, ptr noundef nonnull %.018.i, i32 noundef %54, ptr noundef nonnull %.0.i24.i, ptr noundef nonnull %spec.select.i, ptr noundef %60, ptr noundef nonnull %spec.select23.i, i32 noundef %63, i32 noundef %65, i32 noundef %67, i32 noundef %68, i32 noundef %69, i32 noundef %70, i32 noundef %71, i32 noundef %74, i32 noundef %76) #13 + %77 = call i32 (ptr, ptr, ...) @curl_mfprintf(ptr noundef %34, ptr noundef nonnull @.str.16, ptr noundef nonnull %.0.i.i, ptr noundef nonnull %.019.i, ptr noundef %51, ptr noundef nonnull %.018.i, i32 noundef %54, ptr noundef nonnull %.0.i24.i, ptr noundef nonnull %spec.select.i, ptr noundef %60, ptr noundef nonnull %spec.select23.i, i32 noundef %63, i32 noundef %65, i32 noundef %67, i32 noundef %68, i32 noundef %69, i32 noundef %70, i32 noundef %71, i32 noundef %74, i32 noundef %76) #12 call void @llvm.lifetime.end.p0(ptr nonnull %4) %.not43 = icmp eq ptr %33, null br i1 %.not43, label %.loopexit, label %31 @@ -507,7 +507,7 @@ altsvc_out.exit: ; preds = %Curl_alpnid2str.exi br i1 %or.cond3, label %83, label %85 83: ; preds = %.loopexit - %84 = call i32 @Curl_rename(ptr noundef nonnull %81, ptr noundef nonnull %.027) #13 + %84 = call i32 @Curl_rename(ptr noundef nonnull %81, ptr noundef nonnull %.027) #12 %.not45 = icmp eq i32 %84, 0 %spec.select46 = select i1 %.not45, i32 0, i32 23 %.pre = load ptr, ptr %7, align 8 @@ -522,14 +522,14 @@ altsvc_out.exit: ; preds = %Curl_alpnid2str.exi br i1 %or.cond5, label %89, label %91 89: ; preds = %85 - %90 = call i32 @unlink(ptr noundef nonnull %86) #13 + %90 = call i32 @unlink(ptr noundef nonnull %86) #12 br label %91 91: ; preds = %85, %89, %19 %.030 = phi i32 [ %20, %19 ], [ %.3, %89 ], [ %.3, %85 ] %92 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 %93 = load ptr, ptr %7, align 8, !tbaa !17 - call void %92(ptr noundef %93) #13 + call void %92(ptr noundef %93) #12 br label %94 94: ; preds = %11, %17, %3, %91 @@ -602,8 +602,8 @@ define hidden noundef i32 @Curl_altsvc_parse(ptr noundef %0, ptr noundef %1, ptr br label %getalnum.exit getalnum.exit: ; preds = %.critedge4.i, %19 - %21 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %7) #14 - %22 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %4) #14 + %21 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %7) #13 + %22 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %4) #13 br i1 %or.cond.i, label %36, label %23 23: ; preds = %getalnum.exit @@ -630,11 +630,11 @@ getalnum.exit: ; preds = %.critedge4.i, %19 br i1 %34, label %35, label %.critedge28 35: ; preds = %31, %28 - tail call void (ptr, ptr, ...) @Curl_infof(ptr noundef nonnull %0, ptr noundef nonnull @.str.5) #13 + tail call void (ptr, ptr, ...) @Curl_infof(ptr noundef nonnull %0, ptr noundef nonnull @.str.5) #12 br label %.critedge28 36: ; preds = %getalnum.exit - %37 = call i32 @curl_strequal(ptr noundef nonnull %7, ptr noundef nonnull @.str.6) #13 + %37 = call i32 @curl_strequal(ptr noundef nonnull %7, ptr noundef nonnull @.str.6) #12 %.not166 = icmp eq i32 %37, 0 br i1 %.not166, label %thread-pre-split, label %38 @@ -652,7 +652,7 @@ thread-pre-split: ; preds = %36 br label %43 43: ; preds = %thread-pre-split, %getalnum.exit234 - %44 = phi i8 [ %.pr, %thread-pre-split ], [ %184, %getalnum.exit234 ] + %44 = phi i8 [ %.pr, %thread-pre-split ], [ %187, %getalnum.exit234 ] %.0 = phi ptr [ %.1.i, %thread-pre-split ], [ %.15, %getalnum.exit234 ] %.0126 = phi i64 [ 0, %thread-pre-split ], [ %.1127.ph, %getalnum.exit234 ] %.0111 = phi i16 [ %5, %thread-pre-split ], [ %.2113, %getalnum.exit234 ] @@ -660,7 +660,7 @@ thread-pre-split: ; preds = %36 br i1 %45, label %46, label %.critedge28 46: ; preds = %43 - %47 = call i32 @Curl_alpn2alpnid(ptr noundef nonnull %7, i64 noundef %21) #13 + %47 = call i32 @Curl_alpn2alpnid(ptr noundef nonnull %7, i64 noundef %21) #12 %48 = getelementptr inbounds nuw i8, ptr %.0, i64 1 %49 = load i8, ptr %48, align 1, !tbaa !14 %50 = icmp eq i8 %49, 34 @@ -679,7 +679,7 @@ thread-pre-split: ; preds = %36 54: ; preds = %51 %55 = getelementptr inbounds nuw i8, ptr %.0, i64 3 - %56 = call i64 @strspn(ptr noundef nonnull %55, ptr noundef nonnull @.str.7) #14 + %56 = call i64 @strspn(ptr noundef nonnull %55, ptr noundef nonnull @.str.7) #13 %57 = getelementptr inbounds nuw i8, ptr %55, i64 %56 %58 = load i8, ptr %57, align 1, !tbaa !14 %.not169 = icmp eq i8 %58, 93 @@ -748,11 +748,11 @@ thread-pre-split: ; preds = %36 br i1 %81, label %82, label %84 82: ; preds = %78, %76 - call void (ptr, ptr, ...) @Curl_infof(ptr noundef nonnull %0, ptr noundef nonnull @.str.8) #13 + call void (ptr, ptr, ...) @Curl_infof(ptr noundef nonnull %0, ptr noundef nonnull @.str.8) #12 br label %84 .thread272: ; preds = %51 - %83 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %4) #14 + %83 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %4) #13 br label %86 84: ; preds = %71, %73, %78, %82 @@ -778,7 +778,7 @@ thread-pre-split: ; preds = %36 br label %98 90: ; preds = %86 - %91 = call i64 @strtoul(ptr noundef nonnull %87, ptr noundef nonnull %9, i32 noundef 10) #13 + %91 = call i64 @strtoul(ptr noundef nonnull %87, ptr noundef nonnull %9, i32 noundef 10) #12 %92 = add i64 %91, -65536 %or.cond6 = icmp ult i64 %92, -65535 br i1 %or.cond6, label %98, label %93 @@ -814,11 +814,11 @@ thread-pre-split: ; preds = %36 br i1 %107, label %108, label %thread-pre-split286 108: ; preds = %104, %102 - call void (ptr, ptr, ...) @Curl_infof(ptr noundef nonnull %0, ptr noundef nonnull @.str.9) #13 + call void (ptr, ptr, ...) @Curl_infof(ptr noundef nonnull %0, ptr noundef nonnull @.str.9) #12 br label %thread-pre-split286 109: ; preds = %96 - %110 = call zeroext i16 @curlx_ultous(i64 noundef %91) #13 + %110 = call zeroext i16 @curlx_ultous(i64 noundef %91) #12 br label %thread-pre-split286 thread-pre-split286: ; preds = %98, %99, %104, %108, %109 @@ -1007,7 +1007,7 @@ getalnum.exit221: ; preds = %.critedge4.i215 %.1125397 = phi i1 [ true, %.critedge18 ], [ false, %.preheader312 ], [ false, %.preheader312 ], [ false, %.preheader312 ], [ false, %.preheader312 ], [ false, %.preheader312 ] %.11395 = phi ptr [ %.11396, %.critedge18 ], [ %storemerge, %.preheader312 ], [ %storemerge, %.preheader312 ], [ %storemerge, %.preheader312 ], [ %storemerge, %.preheader312 ], [ %storemerge, %.preheader312 ] %.13 = phi ptr [ %137, %.critedge18 ], [ %.14, %.preheader312 ], [ %.14, %.preheader312 ], [ %.14, %.preheader312 ], [ %.14, %.preheader312 ], [ %.14, %.preheader312 ] - %141 = call i64 @strtoul(ptr noundef nonnull %.11395, ptr noundef nonnull %9, i32 noundef 10) #13 + %141 = call i64 @strtoul(ptr noundef nonnull %.11395, ptr noundef nonnull %9, i32 noundef 10) #12 %142 = load ptr, ptr %9, align 8, !tbaa !17 %143 = icmp ne ptr %142, %.11395 %144 = icmp ne i64 %141, -1 @@ -1015,12 +1015,12 @@ getalnum.exit221: ; preds = %.critedge4.i215 br i1 %or.cond22, label %145, label %.preheader319 145: ; preds = %.critedge20 - %146 = call i32 @curl_strequal(ptr noundef nonnull @.str.10, ptr noundef nonnull %8) #13 + %146 = call i32 @curl_strequal(ptr noundef nonnull @.str.10, ptr noundef nonnull %8) #12 %.not191 = icmp eq i32 %146, 0 br i1 %.not191, label %147, label %.preheader319.outer 147: ; preds = %145 - %148 = call i32 @curl_strequal(ptr noundef nonnull @.str.11, ptr noundef nonnull %8) #13 + %148 = call i32 @curl_strequal(ptr noundef nonnull @.str.11, ptr noundef nonnull %8) #12 %149 = icmp ne i32 %148, 0 %150 = icmp eq i64 %141, 1 %or.cond24 = select i1 %149, i1 %150, i1 false @@ -1031,7 +1031,7 @@ getalnum.exit221: ; preds = %.critedge4.i215 %.9 = phi ptr [ %.8, %114 ], [ %118, %117 ], [ %118, %117 ], [ %118, %117 ] %151 = icmp ne i32 %47, 0 %or.cond26 = and i1 %151, %.3118 - br i1 %or.cond26, label %152, label %177 + br i1 %or.cond26, label %152, label %180 152: ; preds = %.loopexit317 %153 = add i64 %.0126, 1 @@ -1046,10 +1046,10 @@ getalnum.exit221: ; preds = %.critedge4.i215 %156 = zext i16 %.2113 to i64 %157 = call fastcc ptr @altsvc_createid(ptr noundef nonnull %4, i64 noundef %22, ptr noundef %.2135278, i64 noundef %.2132280, i32 noundef %3, i32 noundef %47, i64 noundef %41, i64 noundef %156) %.not193 = icmp eq ptr %157, null - br i1 %.not193, label %177, label %158 + br i1 %.not193, label %180, label %158 158: ; preds = %155 - %159 = call i64 @time(ptr noundef null) #13 + %159 = call i64 @time(ptr noundef null) #12 %spec.select426 = call i64 @llvm.sadd.sat.i64(i64 %159, i64 %.0122.ph) %160 = getelementptr inbounds nuw i8, ptr %157, i64 32 store i64 %spec.select426, ptr %160, align 8, !tbaa !22 @@ -1059,63 +1059,63 @@ getalnum.exit221: ; preds = %.critedge4.i215 call void @Curl_llist_append(ptr noundef nonnull %42, ptr noundef nonnull %157, ptr noundef nonnull %162) #13 br i1 %.not170, label %177, label %163 -163: ; preds = %158 +163: ; preds = %158 %164 = load i64, ptr %39, align 2 %165 = and i64 %164, 2147483648 %.not195 = icmp eq i64 %165, 0 br i1 %.not195, label %177, label %166 -166: ; preds = %163 +166:; preds = %163 %167 = load ptr, ptr %40, align 8, !tbaa !54 %.not196 = icmp eq ptr %167, null br i1 %.not196, label %172, label %168 -168: ; preds = %166 +168:; preds = %166 %169 = getelementptr inbounds nuw i8, ptr %167, i64 8 %170 = load i32, ptr %169, align 8, !tbaa !113 %171 = icmp sgt i32 %170, 0 - br i1 %171, label %172, label %177 + br i1 %171, label %172, label %180 -172: ; preds = %168, %166 +172:; preds = %168, %166 %173 = zext i16 %.2113 to i32 switch i32 %47, label %176 [ i32 8, label %Curl_alpnid2str.exit - i32 16, label %174 - i32 32, label %175 + i32 16, label %177 + i32 32, label %178 ] -174: ; preds = %172 +177: ; preds = %172 br label %Curl_alpnid2str.exit -175: ; preds = %172 +178: ; preds = %172 br label %Curl_alpnid2str.exit -176: ; preds = %172 +179: ; preds = %172 br label %Curl_alpnid2str.exit -Curl_alpnid2str.exit: ; preds = %172, %174, %175, %176 +Curl_alpnid2str.exit: ; preds = %172, %177, %178, %179 %.0.i222 = phi ptr [ @.str.3, %176 ], [ @.str.1, %174 ], [ @.str.2, %175 ], [ @.str, %172 ] - call void (ptr, ptr, ...) @Curl_infof(ptr noundef nonnull %0, ptr noundef nonnull @.str.12, ptr noundef %.2135278, i32 noundef %173, ptr noundef nonnull %.0.i222) #13 - br label %177 + call void (ptr, ptr, ...) @Curl_infof(ptr noundef nonnull %0, ptr noundef nonnull @.str.12, ptr noundef %.2135278, i32 noundef %173, ptr noundef nonnull %.0.i222) #12 + br label %180 .loopexit314: ; preds = %54, %111, %.critedge18, %129, %.preheader313 call void @llvm.lifetime.end.p0(ptr nonnull %9) call void @llvm.lifetime.end.p0(ptr nonnull %8) br label %.critedge28 -177: ; preds = %158, %163, %168, %Curl_alpnid2str.exit, %155, %.loopexit317 +180: ; preds = %158, %163, %168, %Curl_alpnid2str.exit, %155, %.loopexit317 %.1127.ph = phi i64 [ %153, %158 ], [ %153, %163 ], [ %153, %168 ], [ %153, %Curl_alpnid2str.exit ], [ %.0126, %.loopexit317 ], [ %153, %155 ] call void @llvm.lifetime.end.p0(ptr nonnull %9) call void @llvm.lifetime.end.p0(ptr nonnull %8) - %178 = load i8, ptr %.9, align 1, !tbaa !14 - %179 = icmp eq i8 %178, 44 - br i1 %179, label %.preheader318, label %getalnum.exit234 + %181 = load i8, ptr %.9, align 1, !tbaa !14 + %182 = icmp eq i8 %181, 44 + br i1 %182, label %.preheader318, label %getalnum.exit234 -.preheader318: ; preds = %177, %.preheader318.backedge +.preheader318: ; preds = %180, %.preheader318.backedge %.9.pn = phi ptr [ %.0.i223.ptr, %.preheader318.backedge ], [ %.9, %177 ] %.0.i223.ptr = getelementptr inbounds nuw i8, ptr %.9.pn, i64 1 - %180 = load i8, ptr %.0.i223.ptr, align 1, !tbaa !14 - switch i8 %180, label %.critedge.i226 [ + %183 = load i8, ptr %.0.i223.ptr, align 1, !tbaa !14 + switch i8 %183, label %.critedge.i226 [ i8 9, label %.preheader318.backedge i8 32, label %.preheader318.backedge ] @@ -1123,10 +1123,10 @@ Curl_alpnid2str.exit: ; preds = %172, %174, %175, %1 .preheader318.backedge: ; preds = %.preheader318, %.preheader318 br label %.preheader318, !llvm.loop !52 -.critedge.i226: ; preds = %.preheader318, %182 - %181 = phi i8 [ %.pr.i233, %182 ], [ %180, %.preheader318 ] +.critedge.i226: ; preds = %.preheader318, %185 + %184 = phi i8 [ %.pr.i233, %182 ], [ %183, %.preheader318 ] %.1.i227.idx = phi i64 [ %.1.i227.add, %182 ], [ 1, %.preheader318 ] - switch i8 %181, label %182 [ + switch i8 %184, label %182 [ i8 0, label %.critedge4.i228 i8 32, label %.critedge4.i228 i8 9, label %.critedge4.i228 @@ -1134,7 +1134,7 @@ Curl_alpnid2str.exit: ; preds = %172, %174, %175, %1 i8 61, label %.critedge4.i228 ] -182: ; preds = %.critedge.i226 +185: ; preds = %.critedge.i226 %.1.i227.add = add nuw nsw i64 %.1.i227.idx, 1 %.ptr = getelementptr inbounds nuw i8, ptr %.9.pn, i64 %.1.i227.add %.pr.i233 = load i8, ptr %.ptr, align 1, !tbaa !14 @@ -1150,15 +1150,15 @@ getalnum.exit234.thread: ; preds = %.critedge4.i228 %gepdiff = add nsw i64 %.1.i227.idx, -1 %.1.i227.ptr.le = getelementptr inbounds nuw i8, ptr %.9.pn, i64 %.1.i227.idx call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %7, ptr nonnull align 1 %.0.i223.ptr, i64 %gepdiff, i1 false) - %183 = getelementptr inbounds nuw i8, ptr %7, i64 %gepdiff - store i8 0, ptr %183, align 1, !tbaa !14 + %186 = getelementptr inbounds nuw i8, ptr %7, i64 %gepdiff + store i8 0, ptr %186, align 1, !tbaa !14 %.pr309 = load i8, ptr %.1.i227.ptr.le, align 1, !tbaa !14 br label %getalnum.exit234 -getalnum.exit234: ; preds = %getalnum.exit234.thread, %177 - %184 = phi i8 [ %.pr309, %getalnum.exit234.thread ], [ %178, %177 ] +getalnum.exit234: ; preds = %getalnum.exit234.thread, %180 + %187 = phi i8 [ %.pr309, %getalnum.exit234.thread ], [ %181, %177 ] %.15 = phi ptr [ %.1.i227.ptr.le, %getalnum.exit234.thread ], [ %.9, %177 ] - switch i8 %184, label %43 [ + switch i8 %187, label %43 [ i8 0, label %.critedge28 i8 59, label %.critedge28 i8 10, label %.critedge28 @@ -1183,14 +1183,14 @@ declare i32 @curl_strequal(ptr noundef, ptr noundef) local_unnamed_addr #2 ; Function Attrs: nounwind uwtable define internal fastcc void @altsvc_flush(ptr noundef %0, i32 noundef %1, ptr noundef %2, i16 noundef zeroext %3) unnamed_addr #1 { %5 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %6 = tail call ptr @Curl_llist_head(ptr noundef nonnull %5) #13 + %6 = tail call ptr @Curl_llist_head(ptr noundef nonnull %5) #12 %.not14 = icmp eq ptr %6, null br i1 %.not14, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %4, %hostcompare.exit.thread %.015 = phi ptr [ %8, %hostcompare.exit.thread ], [ %6, %4 ] - %7 = tail call ptr @Curl_node_elem(ptr noundef nonnull %.015) #13 - %8 = tail call ptr @Curl_node_next(ptr noundef nonnull %.015) #13 + %7 = tail call ptr @Curl_node_elem(ptr noundef nonnull %.015) #12 + %8 = tail call ptr @Curl_node_next(ptr noundef nonnull %.015) #12 %9 = getelementptr inbounds nuw i8, ptr %7, i64 12 %10 = load i32, ptr %9, align 4, !tbaa !39 %11 = icmp eq i32 %1, %10 @@ -1204,8 +1204,8 @@ define internal fastcc void @altsvc_flush(ptr noundef %0, i32 noundef %1, ptr no 16: ; preds = %12 %17 = load ptr, ptr %7, align 8, !tbaa !34 - %18 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %2) #14 - %19 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %17) #14 + %18 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %2) #13 + %19 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %17) #13 %.not.i = icmp eq i64 %18, 0 br i1 %.not.i, label %26, label %20 @@ -1224,21 +1224,21 @@ define internal fastcc void @altsvc_flush(ptr noundef %0, i32 noundef %1, ptr no br i1 %.not13.i, label %hostcompare.exit, label %hostcompare.exit.thread hostcompare.exit: ; preds = %26 - %27 = tail call i32 @curl_strnequal(ptr noundef nonnull %2, ptr noundef nonnull %17, i64 noundef %19) #13 + %27 = tail call i32 @curl_strnequal(ptr noundef nonnull %2, ptr noundef nonnull %17, i64 noundef %19) #12 %.not13 = icmp eq i32 %27, 0 br i1 %.not13, label %hostcompare.exit.thread, label %28 28: ; preds = %hostcompare.exit - tail call void @Curl_node_remove(ptr noundef nonnull %.015) #13 + tail call void @Curl_node_remove(ptr noundef nonnull %.015) #12 %29 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 %30 = load ptr, ptr %7, align 8, !tbaa !34 - tail call void %29(ptr noundef %30) #13 + tail call void %29(ptr noundef %30) #12 %31 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 %32 = getelementptr inbounds nuw i8, ptr %7, i64 16 %33 = load ptr, ptr %32, align 8, !tbaa !35 - tail call void %31(ptr noundef %33) #13 + tail call void %31(ptr noundef %33) #12 %34 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 - tail call void %34(ptr noundef nonnull %7) #13 + tail call void %34(ptr noundef nonnull %7) #12 br label %hostcompare.exit.thread hostcompare.exit.thread: ; preds = %26, %28, %hostcompare.exit, %12, %.lr.ph @@ -1262,7 +1262,7 @@ declare zeroext i16 @curlx_ultous(i64 noundef) local_unnamed_addr #2 ; Function Attrs: nounwind uwtable define internal fastcc ptr @altsvc_createid(ptr noundef %0, i64 noundef %1, ptr noundef %2, i64 noundef %3, i32 noundef %4, i32 noundef range(i32 1, 0) %5, i64 noundef %6, i64 noundef %7) unnamed_addr #1 { %9 = load ptr, ptr @Curl_ccalloc, align 8, !tbaa !3 - %10 = tail call ptr %9(i64 noundef 1, i64 noundef 80) #13 + %10 = tail call ptr %9(i64 noundef 1, i64 noundef 80) #12 %.not = icmp eq ptr %10, null br i1 %.not, label %56, label %11 @@ -1317,13 +1317,13 @@ define internal fastcc ptr @altsvc_createid(ptr noundef %0, i64 noundef %1, ptr 37: ; preds = %34, %31, %29 %.037 = phi i64 [ %36, %34 ], [ %3, %31 ], [ %3, %29 ] %.036 = phi ptr [ %35, %34 ], [ %2, %31 ], [ %2, %29 ] - %38 = tail call ptr @Curl_memdup0(ptr noundef nonnull %.034, i64 noundef %.035) #13 + %38 = tail call ptr @Curl_memdup0(ptr noundef nonnull %.034, i64 noundef %.035) #12 store ptr %38, ptr %10, align 8, !tbaa !34 %.not43 = icmp eq ptr %38, null br i1 %.not43, label %49, label %39 39: ; preds = %37 - %40 = tail call ptr @Curl_memdup0(ptr noundef %.036, i64 noundef %.037) #13 + %40 = tail call ptr @Curl_memdup0(ptr noundef %.036, i64 noundef %.037) #12 %41 = getelementptr inbounds nuw i8, ptr %10, i64 16 store ptr %40, ptr %41, align 8, !tbaa !35 %.not44 = icmp eq ptr %40, null @@ -1345,13 +1345,13 @@ define internal fastcc ptr @altsvc_createid(ptr noundef %0, i64 noundef %1, ptr 49: ; preds = %39, %37, %27, %11 %50 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 %51 = load ptr, ptr %10, align 8, !tbaa !34 - tail call void %50(ptr noundef %51) #13 + tail call void %50(ptr noundef %51) #12 %52 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 %53 = getelementptr inbounds nuw i8, ptr %10, i64 16 %54 = load ptr, ptr %53, align 8, !tbaa !35 - tail call void %52(ptr noundef %54) #13 + tail call void %52(ptr noundef %54) #12 %55 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 - tail call void %55(ptr noundef nonnull %10) #13 + tail call void %55(ptr noundef nonnull %10) #12 br label %56 56: ; preds = %8, %49, %42 @@ -1366,32 +1366,32 @@ declare void @Curl_llist_append(ptr noundef, ptr noundef, ptr noundef) local_unn ; Function Attrs: nounwind uwtable define hidden noundef zeroext i1 @Curl_altsvc_lookup(ptr noundef %0, i32 noundef %1, ptr noundef %2, i32 noundef %3, ptr noundef writeonly captures(none) %4, i32 noundef %5) local_unnamed_addr #1 { - %7 = tail call i64 @time(ptr noundef null) #13 + %7 = tail call i64 @time(ptr noundef null) #12 %8 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %9 = tail call ptr @Curl_llist_head(ptr noundef nonnull %8) #13 + %9 = tail call ptr @Curl_llist_head(ptr noundef nonnull %8) #12 %.not28.not = icmp eq ptr %9, null br i1 %.not28.not, label %.loopexit, label %.lr.ph .lr.ph: ; preds = %6, %hostcompare.exit.thread %.02129 = phi ptr [ %11, %hostcompare.exit.thread ], [ %9, %6 ] - %10 = tail call ptr @Curl_node_elem(ptr noundef nonnull %.02129) #13 - %11 = tail call ptr @Curl_node_next(ptr noundef nonnull %.02129) #13 + %10 = tail call ptr @Curl_node_elem(ptr noundef nonnull %.02129) #12 + %11 = tail call ptr @Curl_node_next(ptr noundef nonnull %.02129) #12 %12 = getelementptr inbounds nuw i8, ptr %10, i64 32 %13 = load i64, ptr %12, align 8, !tbaa !22 %14 = icmp slt i64 %13, %7 br i1 %14, label %15, label %22 15: ; preds = %.lr.ph - tail call void @Curl_node_remove(ptr noundef nonnull %.02129) #13 + tail call void @Curl_node_remove(ptr noundef nonnull %.02129) #12 %16 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 %17 = load ptr, ptr %10, align 8, !tbaa !34 - tail call void %16(ptr noundef %17) #13 + tail call void %16(ptr noundef %17) #12 %18 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 %19 = getelementptr inbounds nuw i8, ptr %10, i64 16 %20 = load ptr, ptr %19, align 8, !tbaa !35 - tail call void %18(ptr noundef %20) #13 + tail call void %18(ptr noundef %20) #12 %21 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 - tail call void %21(ptr noundef nonnull %10) #13 + tail call void %21(ptr noundef nonnull %10) #12 br label %hostcompare.exit.thread 22: ; preds = %.lr.ph @@ -1402,8 +1402,8 @@ define hidden noundef zeroext i1 @Curl_altsvc_lookup(ptr noundef %0, i32 noundef 26: ; preds = %22 %27 = load ptr, ptr %10, align 8, !tbaa !34 - %28 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %2) #14 - %29 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %27) #14 + %28 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %2) #13 + %29 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %27) #13 %.not.i = icmp eq i64 %28, 0 br i1 %.not.i, label %36, label %30 @@ -1422,7 +1422,7 @@ define hidden noundef zeroext i1 @Curl_altsvc_lookup(ptr noundef %0, i32 noundef br i1 %.not13.i, label %hostcompare.exit, label %hostcompare.exit.thread hostcompare.exit: ; preds = %36 - %37 = tail call i32 @curl_strnequal(ptr noundef nonnull %2, ptr noundef nonnull %27, i64 noundef %29) #13 + %37 = tail call i32 @curl_strnequal(ptr noundef nonnull %2, ptr noundef nonnull %27, i64 noundef %29) #12 %.not25 = icmp eq i32 %37, 0 br i1 %.not25, label %hostcompare.exit.thread, label %38 @@ -1483,11 +1483,11 @@ declare i64 @Curl_getdate_capped(ptr noundef) local_unnamed_addr #2 ; Function Attrs: nounwind uwtable define internal fastcc ptr @altsvc_create(ptr noundef nonnull readonly captures(none) %0, ptr noundef nonnull readonly captures(none) %1, ptr noundef nonnull readonly captures(none) %2, ptr %.0.val, i64 %.8.val, i64 noundef %3, i64 noundef %4) unnamed_addr #1 { - %6 = tail call i32 @Curl_alpn2alpnid(ptr noundef %.0.val, i64 noundef %.8.val) #13 + %6 = tail call i32 @Curl_alpn2alpnid(ptr noundef %.0.val, i64 noundef %.8.val) #12 %7 = load ptr, ptr %2, align 8, !tbaa !18 %8 = getelementptr inbounds nuw i8, ptr %2, i64 8 %9 = load i64, ptr %8, align 8, !tbaa !20 - %10 = tail call i32 @Curl_alpn2alpnid(ptr noundef %7, i64 noundef %9) #13 + %10 = tail call i32 @Curl_alpn2alpnid(ptr noundef %7, i64 noundef %9) #12 %11 = icmp ne i32 %10, 0 %12 = icmp ne i32 %6, 0 %or.cond = select i1 %11, i1 %12, i1 false diff --git a/bench/curl/optimized/hsts.ll b/bench/curl/optimized/hsts.ll index c478a03c260..b20e44999eb 100644 --- a/bench/curl/optimized/hsts.ll +++ b/bench/curl/optimized/hsts.ll @@ -26,12 +26,12 @@ target triple = "x86_64-pc-linux-gnu" ; Function Attrs: nounwind uwtable define hidden ptr @Curl_hsts_init() local_unnamed_addr #0 { %1 = load ptr, ptr @Curl_ccalloc, align 8, !tbaa !3 - %2 = tail call ptr %1(i64 noundef 1, i64 noundef 48) #10 + %2 = tail call ptr %1(i64 noundef 1, i64 noundef 48) #9 %.not = icmp eq ptr %2, null br i1 %.not, label %4, label %3 3: ; preds = %0 - tail call void @Curl_llist_init(ptr noundef nonnull %2, ptr noundef null) #10 + tail call void @Curl_llist_init(ptr noundef nonnull %2, ptr noundef null) #9 br label %4 4: ; preds = %3, %0 @@ -47,20 +47,20 @@ define hidden void @Curl_hsts_cleanup(ptr noundef captures(none) %0) local_unnam br i1 %.not, label %15, label %3 3: ; preds = %1 - %4 = tail call ptr @Curl_llist_head(ptr noundef nonnull %2) #10 + %4 = tail call ptr @Curl_llist_head(ptr noundef nonnull %2) #9 %.not1213 = icmp eq ptr %4, null br i1 %.not1213, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %3, %.lr.ph %.014 = phi ptr [ %6, %.lr.ph ], [ %4, %3 ] - %5 = tail call ptr @Curl_node_elem(ptr noundef nonnull %.014) #10 - %6 = tail call ptr @Curl_node_next(ptr noundef nonnull %.014) #10 + %5 = tail call ptr @Curl_node_elem(ptr noundef nonnull %.014) #9 + %6 = tail call ptr @Curl_node_next(ptr noundef nonnull %.014) #9 %7 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 %8 = getelementptr inbounds nuw i8, ptr %5, i64 32 %9 = load ptr, ptr %8, align 8, !tbaa !9 - tail call void %7(ptr noundef %9) #10 + tail call void %7(ptr noundef %9) #9 %10 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 - tail call void %10(ptr noundef %5) #10 + tail call void %10(ptr noundef %5) #9 %.not12 = icmp eq ptr %6, null br i1 %.not12, label %._crit_edge, label %.lr.ph, !llvm.loop !17 @@ -68,9 +68,9 @@ define hidden void @Curl_hsts_cleanup(ptr noundef captures(none) %0) local_unnam %11 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 %12 = getelementptr inbounds nuw i8, ptr %2, i64 32 %13 = load ptr, ptr %12, align 8, !tbaa !19 - tail call void %11(ptr noundef %13) #10 + tail call void %11(ptr noundef %13) #9 %14 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 - tail call void %14(ptr noundef nonnull %2) #10 + tail call void %14(ptr noundef nonnull %2) #9 store ptr null, ptr %0, align 8, !tbaa !7 br label %15 @@ -90,9 +90,9 @@ define hidden range(i32 0, 44) i32 @Curl_hsts_parse(ptr noundef %0, ptr noundef %5 = alloca ptr, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %4) store i64 0, ptr %4, align 8, !tbaa !23 - %6 = tail call i64 @time(ptr noundef null) #10 - %7 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #11 - %8 = tail call zeroext i1 @Curl_host_is_ipnum(ptr noundef nonnull %1) #10 + %6 = tail call i64 @time(ptr noundef null) #9 + %7 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %1) #10 + %8 = tail call zeroext i1 @Curl_host_is_ipnum(ptr noundef nonnull %1) #9 br i1 %8, label %.loopexit, label %.preheader117 .preheader117: ; preds = %3, %.critedge14 @@ -115,7 +115,7 @@ define hidden range(i32 0, 44) i32 @Curl_hsts_parse(ptr noundef %0, ptr noundef br label %9, !llvm.loop !25 .critedge: ; preds = %9 - %12 = call i32 @curl_strnequal(ptr noundef nonnull @.str, ptr noundef nonnull %.180, i64 noundef 7) #10 + %12 = call i32 @curl_strnequal(ptr noundef nonnull @.str, ptr noundef nonnull %.180, i64 noundef 7) #9 %.not99 = icmp eq i32 %12, 0 br i1 %.not99, label %32, label %13 @@ -157,7 +157,7 @@ define hidden range(i32 0, 44) i32 @Curl_hsts_parse(ptr noundef %0, ptr noundef %21 = icmp eq i8 %20, 34 %22 = getelementptr inbounds nuw i8, ptr %.382.pn, i64 2 %spec.select = select i1 %21, ptr %22, ptr %.4 - %23 = call i32 @curlx_strtoofft(ptr noundef nonnull %spec.select, ptr noundef nonnull %5, i32 noundef 10, ptr noundef nonnull %4) #10 + %23 = call i32 @curlx_strtoofft(ptr noundef nonnull %spec.select, ptr noundef nonnull %5, i32 noundef 10, ptr noundef nonnull %4) #9 switch i32 %23, label %.critedge114 [ i32 1, label %24 i32 0, label %25 @@ -186,7 +186,7 @@ define hidden range(i32 0, 44) i32 @Curl_hsts_parse(ptr noundef %0, ptr noundef br label %.critedge12 32: ; preds = %.critedge - %33 = call i32 @curl_strnequal(ptr noundef nonnull @.str.1, ptr noundef nonnull %.180, i64 noundef 17) #10 + %33 = call i32 @curl_strnequal(ptr noundef nonnull @.str.1, ptr noundef nonnull %.180, i64 noundef 17) #9 %.not100 = icmp eq i32 %33, 0 br i1 %.not100, label %.preheader, label %34 @@ -251,42 +251,42 @@ define hidden range(i32 0, 44) i32 @Curl_hsts_parse(ptr noundef %0, ptr noundef br i1 %.not111, label %.loopexit, label %51 51: ; preds = %49 - call void @Curl_node_remove(ptr noundef nonnull %50) #10 + call void @Curl_node_remove(ptr noundef nonnull %50) #9 %52 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 %53 = getelementptr inbounds nuw i8, ptr %50, i64 32 %54 = load ptr, ptr %53, align 8, !tbaa !9 - call void %52(ptr noundef %54) #10 + call void %52(ptr noundef %54) #9 %55 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 - call void %55(ptr noundef nonnull %50) #10 + call void %55(ptr noundef nonnull %50) #9 br label %.loopexit 56: ; preds = %47 %storemerge = call i64 @llvm.sadd.sat.i64(i64 %6, i64 %48) store i64 %storemerge, ptr %4, align 8, !tbaa !23 - %57 = call ptr @Curl_hsts(ptr noundef %0, ptr noundef nonnull %1, i64 noundef %7, i1 noundef zeroext false) - %.not112 = icmp eq ptr %57, null - br i1 %.not112, label %62, label %58 - -58: ; preds = %56 - %59 = load i64, ptr %4, align 8, !tbaa !23 - %60 = getelementptr inbounds nuw i8, ptr %57, i64 48 - store i64 %59, ptr %60, align 8, !tbaa !32 - %61 = getelementptr inbounds nuw i8, ptr %57, i64 40 - store i8 %.187, ptr %61, align 8, !tbaa !33 + %60 = call ptr @Curl_hsts(ptr noundef %0, ptr noundef nonnull %1, i64 noundef %7, i1 noundef zeroext false) + %.not112 = icmp eq ptr %60, null + br i1 %.not112, label %65, label %61 + +61: ; preds = %56 + %62 = load i64, ptr %4, align 8, !tbaa !23 + %63 = getelementptr inbounds nuw i8, ptr %60, i64 48 + store i64 %62, ptr %63, align 8, !tbaa !32 + %64 = getelementptr inbounds nuw i8, ptr %60, i64 40 + store i8 %.187, ptr %64, align 8, !tbaa !33 br label %.loopexit -62: ; preds = %56 - %63 = trunc nuw i8 %.187 to i1 - %64 = load i64, ptr %4, align 8, !tbaa !23 - %65 = call fastcc i32 @hsts_create(ptr noundef %0, ptr noundef nonnull %1, i64 noundef %7, i1 noundef zeroext %63, i64 noundef %64) +65: ; preds = %56 + %66 = trunc nuw i8 %.187 to i1 + %67 = load i64, ptr %4, align 8, !tbaa !23 + %68 = call fastcc i32 @hsts_create(ptr noundef %0, ptr noundef nonnull %1, i64 noundef %7, i1 noundef zeroext %66, i64 noundef %67) br label %.loopexit .critedge114: ; preds = %27, %.critedge8, %13, %17 call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %.loopexit -.loopexit: ; preds = %34, %49, %51, %45, %.critedge114, %3, %58, %62 - %.0 = phi i32 [ 0, %58 ], [ %65, %62 ], [ 0, %3 ], [ 43, %.critedge114 ], [ 43, %45 ], [ 0, %51 ], [ 0, %49 ], [ 43, %34 ] +.loopexit: ; preds = %34, %49, %51, %45, %.critedge114, %3, %61, %65 + %.0 = phi i32 [ 0, %58 ], [ %68, %62 ], [ 0, %3 ], [ 43, %.critedge114 ], [ 43, %45 ], [ 0, %51 ], [ 0, %49 ], [ 43, %34 ] call void @llvm.lifetime.end.p0(ptr nonnull %4) ret i32 %.0 } @@ -309,7 +309,7 @@ define hidden ptr @Curl_hsts(ptr noundef %0, ptr noundef %1, i64 noundef %2, i1 br i1 %.not, label %.thread74, label %5 5: ; preds = %4 - %6 = tail call i64 @time(ptr noundef null) #10 + %6 = tail call i64 @time(ptr noundef null) #9 %7 = add i64 %2, -1 %or.cond = icmp ult i64 %7, 2048 br i1 %or.cond, label %8, label %.thread74 @@ -320,7 +320,7 @@ define hidden ptr @Curl_hsts(ptr noundef %0, ptr noundef %1, i64 noundef %2, i1 %11 = load i8, ptr %10, align 1, !tbaa !24 %12 = icmp eq i8 %11, 46 %spec.select = select i1 %12, i64 %7, i64 %2 - %13 = tail call ptr @Curl_llist_head(ptr noundef nonnull %0) #10 + %13 = tail call ptr @Curl_llist_head(ptr noundef nonnull %0) #9 %.not5779 = icmp eq ptr %13, null br i1 %.not5779, label %.thread74, label %.lr.ph @@ -331,27 +331,27 @@ define hidden ptr @Curl_hsts(ptr noundef %0, ptr noundef %1, i64 noundef %2, i1 %.24582.us = phi ptr [ %.346.ph.us, %45 ], [ null, %.lr.ph ] %.04981.us = phi i64 [ %.150.ph.us, %45 ], [ 0, %.lr.ph ] %.05380.us = phi ptr [ %15, %45 ], [ %13, %.lr.ph ] - %14 = tail call ptr @Curl_node_elem(ptr noundef nonnull %.05380.us) #10 - %15 = tail call ptr @Curl_node_next(ptr noundef nonnull %.05380.us) #10 + %14 = tail call ptr @Curl_node_elem(ptr noundef nonnull %.05380.us) #9 + %15 = tail call ptr @Curl_node_next(ptr noundef nonnull %.05380.us) #9 %16 = getelementptr inbounds nuw i8, ptr %14, i64 48 %17 = load i64, ptr %16, align 8, !tbaa !32 %.not58.us = icmp sgt i64 %17, %6 br i1 %.not58.us, label %23, label %18 18: ; preds = %.lr.ph.split.us - tail call void @Curl_node_remove(ptr noundef nonnull %14) #10 + tail call void @Curl_node_remove(ptr noundef nonnull %14) #9 %19 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 %20 = getelementptr inbounds nuw i8, ptr %14, i64 32 %21 = load ptr, ptr %20, align 8, !tbaa !9 - tail call void %19(ptr noundef %21) #10 + tail call void %19(ptr noundef %21) #9 %22 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 - tail call void %22(ptr noundef nonnull %14) #10 + tail call void %22(ptr noundef nonnull %14) #9 br label %45 23: ; preds = %.lr.ph.split.us %24 = getelementptr inbounds nuw i8, ptr %14, i64 32 %25 = load ptr, ptr %24, align 8, !tbaa !9 - %26 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %25) #11 + %26 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %25) #10 %27 = getelementptr inbounds nuw i8, ptr %14, i64 40 %28 = load i8, ptr %27, align 8, !tbaa !33, !range !34, !noundef !35 %29 = trunc nuw i8 %28 to i1 @@ -368,7 +368,7 @@ define hidden ptr @Curl_hsts(ptr noundef %0, ptr noundef %1, i64 noundef %2, i1 br i1 %36, label %37, label %40 37: ; preds = %31 - %38 = tail call i32 @curl_strnequal(ptr noundef %33, ptr noundef nonnull %25, i64 noundef %26) #10 + %38 = tail call i32 @curl_strnequal(ptr noundef %33, ptr noundef nonnull %25, i64 noundef %26) #9 %.not59.us = icmp ne i32 %38, 0 %39 = icmp ugt i64 %26, %.04981.us %or.cond62.us = select i1 %.not59.us, i1 %39, i1 false @@ -384,7 +384,7 @@ define hidden ptr @Curl_hsts(ptr noundef %0, ptr noundef %1, i64 noundef %2, i1 42: ; preds = %40 %43 = load ptr, ptr %24, align 8, !tbaa !9 - %44 = tail call i32 @curl_strnequal(ptr noundef %1, ptr noundef %43, i64 noundef %spec.select) #10 + %44 = tail call i32 @curl_strnequal(ptr noundef %1, ptr noundef %43, i64 noundef %spec.select) #9 %.not60.us = icmp eq i32 %44, 0 br i1 %.not60.us, label %45, label %.thread74 @@ -396,32 +396,32 @@ define hidden ptr @Curl_hsts(ptr noundef %0, ptr noundef %1, i64 noundef %2, i1 .lr.ph.split: ; preds = %.lr.ph, %62 %.05380 = phi ptr [ %47, %62 ], [ %13, %.lr.ph ] - %46 = tail call ptr @Curl_node_elem(ptr noundef nonnull %.05380) #10 - %47 = tail call ptr @Curl_node_next(ptr noundef nonnull %.05380) #10 + %46 = tail call ptr @Curl_node_elem(ptr noundef nonnull %.05380) #9 + %47 = tail call ptr @Curl_node_next(ptr noundef nonnull %.05380) #9 %48 = getelementptr inbounds nuw i8, ptr %46, i64 48 %49 = load i64, ptr %48, align 8, !tbaa !32 %.not58 = icmp sgt i64 %49, %6 br i1 %.not58, label %55, label %50 50: ; preds = %.lr.ph.split - tail call void @Curl_node_remove(ptr noundef nonnull %46) #10 + tail call void @Curl_node_remove(ptr noundef nonnull %46) #9 %51 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 %52 = getelementptr inbounds nuw i8, ptr %46, i64 32 %53 = load ptr, ptr %52, align 8, !tbaa !9 - tail call void %51(ptr noundef %53) #10 + tail call void %51(ptr noundef %53) #9 %54 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 - tail call void %54(ptr noundef nonnull %46) #10 + tail call void %54(ptr noundef nonnull %46) #9 br label %62 55: ; preds = %.lr.ph.split %56 = getelementptr inbounds nuw i8, ptr %46, i64 32 %57 = load ptr, ptr %56, align 8, !tbaa !9 - %58 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %57) #11 + %58 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %57) #10 %59 = icmp eq i64 %spec.select, %58 br i1 %59, label %60, label %62 60: ; preds = %55 - %61 = tail call i32 @curl_strnequal(ptr noundef %1, ptr noundef nonnull %57, i64 noundef %spec.select) #10 + %61 = tail call i32 @curl_strnequal(ptr noundef %1, ptr noundef nonnull %57, i64 noundef %spec.select) #9 %.not60 = icmp eq i32 %61, 0 br i1 %.not60, label %62, label %.thread74 @@ -457,18 +457,18 @@ define internal fastcc range(i32 0, 28) i32 @hsts_create(ptr noundef %0, ptr nou .thread31: ; preds = %7, %12 %.02134 = phi i64 [ %13, %12 ], [ %2, %7 ] %14 = load ptr, ptr @Curl_ccalloc, align 8, !tbaa !3 - %15 = tail call ptr %14(i64 noundef 1, i64 noundef 56) #10 + %15 = tail call ptr %14(i64 noundef 1, i64 noundef 56) #9 %.not27 = icmp eq ptr %15, null br i1 %.not27, label %.thread, label %16 16: ; preds = %.thread31 - %17 = tail call ptr @Curl_memdup0(ptr noundef nonnull %1, i64 noundef %.02134) #10 + %17 = tail call ptr @Curl_memdup0(ptr noundef nonnull %1, i64 noundef %.02134) #9 %.not28 = icmp eq ptr %17, null br i1 %.not28, label %18, label %20 18: ; preds = %16 %19 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 - tail call void %19(ptr noundef nonnull %15) #10 + tail call void %19(ptr noundef nonnull %15) #9 br label %.thread 20: ; preds = %16 @@ -478,7 +478,7 @@ define internal fastcc range(i32 0, 28) i32 @hsts_create(ptr noundef %0, ptr nou store i64 %4, ptr %22, align 8, !tbaa !32 %23 = getelementptr inbounds nuw i8, ptr %15, i64 40 store i8 %6, ptr %23, align 8, !tbaa !33 - tail call void @Curl_llist_append(ptr noundef %0, ptr noundef nonnull %15, ptr noundef nonnull %15) #10 + tail call void @Curl_llist_append(ptr noundef %0, ptr noundef nonnull %15, ptr noundef nonnull %15) #9 br label %.thread .thread: ; preds = %.thread31, %18, %5, %12, %20 @@ -525,14 +525,14 @@ define hidden i32 @Curl_hsts_save(ptr noundef %0, ptr noundef %1, ptr noundef %2 br i1 %.not56, label %81, label %22 22: ; preds = %20 - %23 = call i32 @Curl_fopen(ptr noundef %0, ptr noundef nonnull %.040, ptr noundef nonnull %7, ptr noundef nonnull %8) #10 + %23 = call i32 @Curl_fopen(ptr noundef %0, ptr noundef nonnull %.040, ptr noundef nonnull %7, ptr noundef nonnull %8) #9 %.not57 = icmp eq i32 %23, 0 br i1 %.not57, label %24, label %78 24: ; preds = %22 %25 = load ptr, ptr %7, align 8, !tbaa !38 %26 = call i64 @fwrite(ptr nonnull @.str.2, i64 111, i64 1, ptr %25) - %27 = call ptr @Curl_llist_head(ptr noundef nonnull %1) #10 + %27 = call ptr @Curl_llist_head(ptr noundef nonnull %1) #9 %.not5879 = icmp eq ptr %27, null br i1 %.not5879, label %.loopexit, label %.lr.ph @@ -546,8 +546,8 @@ define hidden i32 @Curl_hsts_save(ptr noundef %0, ptr noundef %1, ptr noundef %2 33: ; preds = %.lr.ph, %hsts_out.exit %.04480 = phi ptr [ %27, %.lr.ph ], [ %35, %hsts_out.exit ] - %34 = call ptr @Curl_node_elem(ptr noundef nonnull %.04480) #10 - %35 = call ptr @Curl_node_next(ptr noundef nonnull %.04480) #10 + %34 = call ptr @Curl_node_elem(ptr noundef nonnull %.04480) #9 + %35 = call ptr @Curl_node_next(ptr noundef nonnull %.04480) #9 %36 = load ptr, ptr %7, align 8, !tbaa !38 call void @llvm.lifetime.start.p0(ptr nonnull %6) %37 = getelementptr inbounds nuw i8, ptr %34, i64 48 @@ -556,7 +556,7 @@ define hidden i32 @Curl_hsts_save(ptr noundef %0, ptr noundef %1, ptr noundef %2 br i1 %.not.i, label %57, label %39 39: ; preds = %33 - %40 = call i32 @Curl_gmtime(i64 noundef %38, ptr noundef nonnull %6) #10 + %40 = call i32 @Curl_gmtime(i64 noundef %38, ptr noundef nonnull %6) #9 %.not13.i = icmp eq i32 %40, 0 br i1 %.not13.i, label %41, label %hsts_out.exit.thread @@ -579,7 +579,7 @@ hsts_out.exit.thread: ; preds = %39 %53 = load i32, ptr %31, align 8, !tbaa !44 %54 = load i32, ptr %32, align 4, !tbaa !45 %55 = load i32, ptr %6, align 8, !tbaa !46 - %56 = call i32 (ptr, ptr, ...) @curl_mfprintf(ptr noundef %36, ptr noundef nonnull @.str.3, ptr noundef nonnull %45, ptr noundef %47, i32 noundef %49, i32 noundef %51, i32 noundef %52, i32 noundef %53, i32 noundef %54, i32 noundef %55) #10 + %56 = call i32 (ptr, ptr, ...) @curl_mfprintf(ptr noundef %36, ptr noundef nonnull @.str.3, ptr noundef nonnull %45, ptr noundef %47, i32 noundef %49, i32 noundef %51, i32 noundef %52, i32 noundef %53, i32 noundef %54, i32 noundef %55) #9 br label %hsts_out.exit 57: ; preds = %33 @@ -589,7 +589,7 @@ hsts_out.exit.thread: ; preds = %39 %61 = select i1 %60, ptr @.str.4, ptr @.str.5 %62 = getelementptr inbounds nuw i8, ptr %34, i64 32 %63 = load ptr, ptr %62, align 8, !tbaa !9 - %64 = call i32 (ptr, ptr, ...) @curl_mfprintf(ptr noundef %36, ptr noundef nonnull @.str.6, ptr noundef nonnull %61, ptr noundef %63, ptr noundef nonnull @.str.7) #10 + %64 = call i32 (ptr, ptr, ...) @curl_mfprintf(ptr noundef %36, ptr noundef nonnull @.str.6, ptr noundef nonnull %61, ptr noundef %63, ptr noundef nonnull @.str.7) #9 br label %hsts_out.exit hsts_out.exit: ; preds = %41, %57 @@ -608,7 +608,7 @@ hsts_out.exit: ; preds = %41, %57 br i1 %or.cond3, label %70, label %72 70: ; preds = %.loopexit - %71 = call i32 @Curl_rename(ptr noundef nonnull %68, ptr noundef nonnull %.040) #10 + %71 = call i32 @Curl_rename(ptr noundef nonnull %68, ptr noundef nonnull %.040) #9 %.not60 = icmp eq i32 %71, 0 %spec.select63 = select i1 %.not60, i32 0, i32 23 %.pre = load ptr, ptr %8, align 8 @@ -623,14 +623,14 @@ hsts_out.exit: ; preds = %41, %57 br i1 %or.cond5, label %76, label %78 76: ; preds = %72 - %77 = call i32 @unlink(ptr noundef nonnull %73) #10 + %77 = call i32 @unlink(ptr noundef nonnull %73) #9 br label %78 78: ; preds = %72, %76, %22 %.143 = phi i32 [ %23, %22 ], [ %.4, %76 ], [ %.4, %72 ] %79 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 %80 = load ptr, ptr %8, align 8, !tbaa !28 - call void %79(ptr noundef %80) #10 + call void %79(ptr noundef %80) #9 br label %81 81: ; preds = %14, %20, %78 @@ -642,11 +642,11 @@ hsts_out.exit: ; preds = %41, %57 84: ; preds = %81 call void @llvm.lifetime.start.p0(ptr nonnull %9) - %85 = call i64 @Curl_llist_count(ptr noundef nonnull %1) #10 + %85 = call i64 @Curl_llist_count(ptr noundef nonnull %1) #9 %86 = getelementptr inbounds nuw i8, ptr %9, i64 8 store i64 %85, ptr %86, align 8, !tbaa !107 store i64 0, ptr %9, align 8, !tbaa !109 - %87 = call ptr @Curl_llist_head(ptr noundef nonnull %1) #10 + %87 = call ptr @Curl_llist_head(ptr noundef nonnull %1) #9 %.not6285 = icmp eq ptr %87, null br i1 %.not6285, label %.thread, label %.lr.ph87 @@ -664,14 +664,14 @@ hsts_out.exit: ; preds = %41, %57 97: ; preds = %.lr.ph87, %123 %.14586 = phi ptr [ %87, %.lr.ph87 ], [ %99, %123 ] - %98 = call ptr @Curl_node_elem(ptr noundef nonnull %.14586) #10 - %99 = call ptr @Curl_node_next(ptr noundef nonnull %.14586) #10 + %98 = call ptr @Curl_node_elem(ptr noundef nonnull %.14586) #9 + %99 = call ptr @Curl_node_next(ptr noundef nonnull %.14586) #9 call void @llvm.lifetime.start.p0(ptr nonnull %4) call void @llvm.lifetime.start.p0(ptr nonnull %5) %100 = getelementptr inbounds nuw i8, ptr %98, i64 32 %101 = load ptr, ptr %100, align 8, !tbaa !9 store ptr %101, ptr %4, align 8, !tbaa !110 - %102 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %101) #11 + %102 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %101) #10 store i64 %102, ptr %88, align 8, !tbaa !112 %103 = getelementptr inbounds nuw i8, ptr %98, i64 40 %104 = load i8, ptr %103, align 8, !tbaa !33, !range !34, !noundef !35 @@ -682,7 +682,7 @@ hsts_out.exit: ; preds = %41, %57 br i1 %.not.i64, label %119, label %107 107: ; preds = %97 - %108 = call i32 @Curl_gmtime(i64 noundef %106, ptr noundef nonnull %5) #10 + %108 = call i32 @Curl_gmtime(i64 noundef %106, ptr noundef nonnull %5) #9 %.not16.i = icmp eq i32 %108, 0 br i1 %.not16.i, label %109, label %hsts_push.exit.thread @@ -700,17 +700,17 @@ hsts_push.exit.thread: ; preds = %107 %115 = load i32, ptr %94, align 8, !tbaa !44 %116 = load i32, ptr %95, align 4, !tbaa !45 %117 = load i32, ptr %5, align 8, !tbaa !46 - %118 = call i32 (ptr, i64, ptr, ...) @curl_msnprintf(ptr noundef nonnull %90, i64 noundef 18, ptr noundef nonnull @.str.8, i32 noundef %111, i32 noundef %113, i32 noundef %114, i32 noundef %115, i32 noundef %116, i32 noundef %117) #10 + %118 = call i32 (ptr, i64, ptr, ...) @curl_msnprintf(ptr noundef nonnull %90, i64 noundef 18, ptr noundef nonnull @.str.8, i32 noundef %111, i32 noundef %113, i32 noundef %114, i32 noundef %115, i32 noundef %116, i32 noundef %117) #9 br label %hsts_push.exit 119: ; preds = %97 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(10) %90, ptr noundef nonnull align 1 dereferenceable(10) @.str.7, i64 10, i1 false) #10 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(10) %90, ptr noundef nonnull align 1 dereferenceable(10) @.str.7, i64 10, i1 false) #9 br label %hsts_push.exit hsts_push.exit: ; preds = %109, %119 %120 = load ptr, ptr %82, align 8, !tbaa !47 %121 = load ptr, ptr %96, align 8, !tbaa !113 - %122 = call i32 %120(ptr noundef nonnull %0, ptr noundef nonnull %4, ptr noundef nonnull %9, ptr noundef %121) #10 + %122 = call i32 %120(ptr noundef nonnull %0, ptr noundef nonnull %4, ptr noundef nonnull %9, ptr noundef %121) #9 %.not77 = icmp eq i32 %122, 0 call void @llvm.lifetime.end.p0(ptr nonnull %5) call void @llvm.lifetime.end.p0(ptr nonnull %4) @@ -762,9 +762,9 @@ define hidden range(i32 0, 28) i32 @Curl_hsts_loadfile(ptr readnone captures(non %9 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 %10 = getelementptr inbounds nuw i8, ptr %1, i64 32 %11 = load ptr, ptr %10, align 8, !tbaa !19 - tail call void %9(ptr noundef %11) #10 + tail call void %9(ptr noundef %11) #9 %12 = load ptr, ptr @Curl_cstrdup, align 8, !tbaa !3 - %13 = tail call ptr %12(ptr noundef %2) #10 + %13 = tail call ptr %12(ptr noundef %2) #9 store ptr %13, ptr %10, align 8, !tbaa !19 %.not.i = icmp eq ptr %13, null br i1 %.not.i, label %hsts_load.exit, label %14 @@ -776,8 +776,8 @@ define hidden range(i32 0, 28) i32 @Curl_hsts_loadfile(ptr readnone captures(non 16: ; preds = %14 call void @llvm.lifetime.start.p0(ptr nonnull %8) - call void @Curl_dyn_init(ptr noundef nonnull %8, i64 noundef 4095) #10 - %17 = call i32 @Curl_get_line(ptr noundef nonnull %8, ptr noundef nonnull %15) #10 + call void @Curl_dyn_init(ptr noundef nonnull %8, i64 noundef 4095) #9 + %17 = call i32 @Curl_get_line(ptr noundef nonnull %8, ptr noundef nonnull %15) #9 %.not2333.i = icmp eq i32 %17, 0 br i1 %.not2333.i, label %._crit_edge.i, label %.lr.ph.i @@ -787,7 +787,7 @@ define hidden range(i32 0, 28) i32 @Curl_hsts_loadfile(ptr readnone captures(non br label %19 19: ; preds = %.loopexit.i, %.lr.ph.i - %20 = call ptr @Curl_dyn_ptr(ptr noundef nonnull %8) #10 + %20 = call ptr @Curl_dyn_ptr(ptr noundef nonnull %8) #9 br label %21 21: ; preds = %.critedge2.i, %19 @@ -804,7 +804,7 @@ define hidden range(i32 0, 28) i32 @Curl_hsts_loadfile(ptr readnone captures(non br label %21, !llvm.loop !115 24: ; preds = %21 - %25 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.0.i) #11 + %25 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %.0.i) #10 %26 = icmp ult i64 %25, 2 br i1 %26, label %.loopexit.i, label %27, !llvm.loop !116 @@ -813,22 +813,22 @@ define hidden range(i32 0, 28) i32 @Curl_hsts_loadfile(ptr readnone captures(non store ptr %.0.i, ptr %4, align 8, !tbaa !28 call void @llvm.lifetime.start.p0(ptr nonnull %5) call void @llvm.lifetime.start.p0(ptr nonnull %6) - %28 = call i32 @Curl_str_word(ptr noundef nonnull %4, ptr noundef nonnull %5, i64 noundef 2048) #10 + %28 = call i32 @Curl_str_word(ptr noundef nonnull %4, ptr noundef nonnull %5, i64 noundef 2048) #9 %.not.i.i = icmp eq i32 %28, 0 br i1 %.not.i.i, label %29, label %hsts_add.exit.i 29: ; preds = %27 - %30 = call i32 @Curl_str_singlespace(ptr noundef nonnull %4) #10 + %30 = call i32 @Curl_str_singlespace(ptr noundef nonnull %4) #9 %.not21.i.i = icmp eq i32 %30, 0 br i1 %.not21.i.i, label %31, label %hsts_add.exit.i 31: ; preds = %29 - %32 = call i32 @Curl_str_quotedword(ptr noundef nonnull %4, ptr noundef nonnull %6, i64 noundef 256) #10 + %32 = call i32 @Curl_str_quotedword(ptr noundef nonnull %4, ptr noundef nonnull %6, i64 noundef 256) #9 %.not22.i.i = icmp eq i32 %32, 0 br i1 %.not22.i.i, label %33, label %hsts_add.exit.i 33: ; preds = %31 - %34 = call i32 @Curl_str_newline(ptr noundef nonnull %4) #10 + %34 = call i32 @Curl_str_newline(ptr noundef nonnull %4) #9 %.not23.i.i = icmp eq i32 %34, 0 br i1 %.not23.i.i, label %35, label %hsts_add.exit.i @@ -844,7 +844,7 @@ define hidden range(i32 0, 28) i32 @Curl_hsts_loadfile(ptr readnone captures(non br i1 %.not24.i.i, label %41, label %39 39: ; preds = %35 - %40 = call i64 @Curl_getdate_capped(ptr noundef nonnull %7) #10 + %40 = call i64 @Curl_getdate_capped(ptr noundef nonnull %7) #9 br label %41 41: ; preds = %39, %35 @@ -876,14 +876,14 @@ define hidden range(i32 0, 28) i32 @Curl_hsts_loadfile(ptr readnone captures(non 54: ; preds = %50 %55 = getelementptr inbounds nuw i8, ptr %53, i64 32 %56 = load ptr, ptr %55, align 8, !tbaa !9 - %57 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %56) #11 + %57 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %56) #10 %58 = load i64, ptr %.phi.trans.insert.i.i, align 8, !tbaa !119 %59 = icmp eq i64 %57, %58 br i1 %59, label %60, label %hsts_add.exit.sink.split.i 60: ; preds = %54 %61 = load ptr, ptr %5, align 8, !tbaa !117 - %62 = call i32 @curl_strnequal(ptr noundef %61, ptr noundef nonnull %56, i64 noundef %57) #10 + %62 = call i32 @curl_strnequal(ptr noundef %61, ptr noundef nonnull %56, i64 noundef %57) #9 %.not26.i.i = icmp eq i32 %62, 0 br i1 %.not26.i.i, label %hsts_add.exit.sink.split.i, label %63 @@ -919,18 +919,18 @@ define hidden range(i32 0, 28) i32 @Curl_hsts_loadfile(ptr readnone captures(non .thread31.i.i: ; preds = %77, %72 %.02134.i.i = phi i64 [ %78, %77 ], [ %70, %72 ] %79 = load ptr, ptr @Curl_ccalloc, align 8, !tbaa !3 - %80 = call ptr %79(i64 noundef 1, i64 noundef 56) #10 + %80 = call ptr %79(i64 noundef 1, i64 noundef 56) #9 %.not27.i26.i = icmp eq ptr %80, null br i1 %.not27.i26.i, label %hsts_add.exit.sink.split.i, label %81 81: ; preds = %.thread31.i.i - %82 = call ptr @Curl_memdup0(ptr noundef nonnull %69, i64 noundef %.02134.i.i) #10 + %82 = call ptr @Curl_memdup0(ptr noundef nonnull %69, i64 noundef %.02134.i.i) #9 %.not28.i.i = icmp eq ptr %82, null br i1 %.not28.i.i, label %83, label %85 83: ; preds = %81 %84 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 - call void %84(ptr noundef nonnull %80) #10 + call void %84(ptr noundef nonnull %80) #9 br label %hsts_add.exit.sink.split.i 85: ; preds = %81 @@ -940,7 +940,7 @@ define hidden range(i32 0, 28) i32 @Curl_hsts_loadfile(ptr readnone captures(non store i64 %42, ptr %87, align 8, !tbaa !32 %88 = getelementptr inbounds nuw i8, ptr %80, i64 40 store i8 %71, ptr %88, align 8, !tbaa !33 - call void @Curl_llist_append(ptr noundef %1, ptr noundef nonnull %80, ptr noundef nonnull %80) #10 + call void @Curl_llist_append(ptr noundef %1, ptr noundef nonnull %80, ptr noundef nonnull %80) #9 br label %hsts_add.exit.sink.split.i hsts_add.exit.sink.split.i: ; preds = %85, %83, %.thread31.i.i, %77, %68, %67, %63, %60, %54 @@ -954,12 +954,12 @@ hsts_add.exit.i: ; preds = %hsts_add.exit.sink. br label %.loopexit.i .loopexit.i: ; preds = %21, %hsts_add.exit.i, %24 - %89 = call i32 @Curl_get_line(ptr noundef nonnull %8, ptr noundef nonnull %15) #10 + %89 = call i32 @Curl_get_line(ptr noundef nonnull %8, ptr noundef nonnull %15) #9 %.not23.i = icmp eq i32 %89, 0 br i1 %.not23.i, label %._crit_edge.i, label %19 ._crit_edge.i: ; preds = %.loopexit.i, %16 - call void @Curl_dyn_free(ptr noundef nonnull %8) #10 + call void @Curl_dyn_free(ptr noundef nonnull %8) #9 %90 = call i32 @fclose(ptr noundef nonnull %15) call void @llvm.lifetime.end.p0(ptr nonnull %8) br label %hsts_load.exit @@ -1001,7 +1001,7 @@ define hidden range(i32 0, 44) i32 @Curl_hsts_loadcb(ptr noundef %0, ptr noundef store i8 0, ptr %10, align 1, !tbaa !24 store i8 0, ptr %3, align 16, !tbaa !24 %16 = load ptr, ptr %11, align 8, !tbaa !121 - %17 = call i32 %13(ptr noundef nonnull %0, ptr noundef nonnull %4, ptr noundef %16) #10 + %17 = call i32 %13(ptr noundef nonnull %0, ptr noundef nonnull %4, ptr noundef %16) #9 switch i32 %17, label %.thread45.sink.split.i.loopexit [ i32 0, label %18 i32 2, label %.thread45.sink.split.i @@ -1019,14 +1019,14 @@ define hidden range(i32 0, 44) i32 @Curl_hsts_loadcb(ptr noundef %0, ptr noundef br i1 %.not22.i, label %25, label %23 23: ; preds = %21 - %24 = call i64 @Curl_getdate_capped(ptr noundef nonnull %10) #10 + %24 = call i64 @Curl_getdate_capped(ptr noundef nonnull %10) #9 %.pre49.i = load ptr, ptr %4, align 8, !tbaa !110 br label %25 25: ; preds = %23, %21 %26 = phi ptr [ %.pre49.i, %23 ], [ %19, %21 ] %.018.i = phi i64 [ %24, %23 ], [ 9223372036854775807, %21 ] - %27 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %26) #11 + %27 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %26) #10 %28 = load i8, ptr %9, align 8 %29 = and i8 %28, 1 %.not.i.i = icmp eq i64 %27, 0 @@ -1047,18 +1047,18 @@ define hidden range(i32 0, 44) i32 @Curl_hsts_loadcb(ptr noundef %0, ptr noundef .thread31.i.i: ; preds = %35, %30 %.02134.i.i = phi i64 [ %36, %35 ], [ %27, %30 ] %37 = load ptr, ptr @Curl_ccalloc, align 8, !tbaa !3 - %38 = call ptr %37(i64 noundef 1, i64 noundef 56) #10 + %38 = call ptr %37(i64 noundef 1, i64 noundef 56) #9 %.not27.i.i = icmp eq ptr %38, null br i1 %.not27.i.i, label %.thread45.sink.split.i, label %39 39: ; preds = %.thread31.i.i - %40 = call ptr @Curl_memdup0(ptr noundef nonnull %26, i64 noundef %.02134.i.i) #10 + %40 = call ptr @Curl_memdup0(ptr noundef nonnull %26, i64 noundef %.02134.i.i) #9 %.not28.i.i = icmp eq ptr %40, null br i1 %.not28.i.i, label %41, label %43 41: ; preds = %39 %42 = load ptr, ptr @Curl_cfree, align 8, !tbaa !3 - call void %42(ptr noundef nonnull %38) #10 + call void %42(ptr noundef nonnull %38) #9 br label %.thread45.sink.split.i 43: ; preds = %39 @@ -1068,7 +1068,7 @@ define hidden range(i32 0, 44) i32 @Curl_hsts_loadcb(ptr noundef %0, ptr noundef store i64 %.018.i, ptr %45, align 8, !tbaa !32 %46 = getelementptr inbounds nuw i8, ptr %38, i64 40 store i8 %29, ptr %46, align 8, !tbaa !33 - call void @Curl_llist_append(ptr noundef nonnull %1, ptr noundef nonnull %38, ptr noundef nonnull %38) #10 + call void @Curl_llist_append(ptr noundef nonnull %1, ptr noundef nonnull %38, ptr noundef nonnull %38) #9 br label %47 47: ; preds = %43, %35, %25 @@ -1100,7 +1100,7 @@ define hidden void @Curl_hsts_loadfiles(ptr noundef %0) local_unnamed_addr #0 { br i1 %.not, label %15, label %4 4: ; preds = %1 - %5 = tail call i32 @Curl_share_lock(ptr noundef nonnull %0, i32 noundef 7, i32 noundef 2) #10 + %5 = tail call i32 @Curl_share_lock(ptr noundef nonnull %0, i32 noundef 7, i32 noundef 2) #9 %6 = getelementptr inbounds nuw i8, ptr %0, i64 2680 br label %7 @@ -1115,7 +1115,7 @@ define hidden void @Curl_hsts_loadfiles(ptr noundef %0) local_unnamed_addr #0 { br i1 %.not10, label %13, label %7, !llvm.loop !127 13: ; preds = %7 - %14 = tail call i32 @Curl_share_unlock(ptr noundef nonnull %0, i32 noundef 7) #10 + %14 = tail call i32 @Curl_share_unlock(ptr noundef nonnull %0, i32 noundef 7) #9 br label %15 15: ; preds = %13, %1 diff --git a/bench/ffmpeg/optimized/ffv1dec.ll b/bench/ffmpeg/optimized/ffv1dec.ll index 9738ab8a1f3..13ba10822fa 100644 --- a/bench/ffmpeg/optimized/ffv1dec.ll +++ b/bench/ffmpeg/optimized/ffv1dec.ll @@ -7510,22 +7510,22 @@ get_sr_golomb.exit: ; preds = %33, %42 84: ; preds = %82 %spec.select43.i = tail call i8 @llvm.sadd.sat.i8(i8 %69, i8 1) store i8 %spec.select43.i, ptr %68, align 2, !tbaa !203 - %85 = sub nsw i32 %.035.i, %75 - %86 = tail call i32 @llvm.smin.i32(i32 %85, i32 0) + %87 = sub nsw i32 %.035.i, %75 + %88 = tail call i32 @llvm.smin.i32(i32 %87, i32 0) br label %update_vlc_state.exit update_vlc_state.exit: ; preds = %77, %82, %84 - %.1.i = phi i32 [ %81, %77 ], [ %86, %84 ], [ %.035.i, %82 ] - %87 = sext i8 %69 to i32 - %88 = add nsw i32 %67, %87 - %89 = sub i32 32, %2 - %sext.i = shl i32 %88, %89 - %90 = ashr exact i32 %sext.i, %89 - %91 = trunc nsw i32 %.1.i to i16 - store i16 %91, ptr %61, align 4, !tbaa !202 - %92 = trunc i32 %75 to i8 - store i8 %92, ptr %4, align 1, !tbaa !198 - ret i32 %90 + %.1.i = phi i32 [ %81, %77 ], [ %88, %84 ], [ %.035.i, %82 ] + %89 = sext i8 %69 to i32 + %90 = add nsw i32 %67, %89 + %91 = sub i32 32, %2 + %sext.i = shl i32 %90, %91 + %92 = ashr exact i32 %sext.i, %91 + %93 = trunc nsw i32 %.1.i to i16 + store i16 %93, ptr %61, align 4, !tbaa !202 + %94 = trunc i32 %75 to i8 + store i8 %94, ptr %4, align 1, !tbaa !198 + ret i32 %92 } declare void @ff_ffv1_compute_bits_per_plane(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #3 diff --git a/bench/ffmpeg/optimized/ffv1enc.ll b/bench/ffmpeg/optimized/ffv1enc.ll index bc55a4af828..6c0f2f20da1 100644 --- a/bench/ffmpeg/optimized/ffv1enc.ll +++ b/bench/ffmpeg/optimized/ffv1enc.ll @@ -33687,16 +33687,16 @@ set_sr_golomb.exit: ; preds = %put_bits.exit.i.i, %117 = load i8, ptr %4, align 2, !tbaa !299 %spec.select43.i = tail call i8 @llvm.sadd.sat.i8(i8 %117, i8 1) store i8 %spec.select43.i, ptr %4, align 2, !tbaa !299 - %118 = sub nsw i32 %.035.i, %106 - %119 = tail call i32 @llvm.smin.i32(i32 %118, i32 0) + %120 = sub nsw i32 %.035.i, %106 + %121 = tail call i32 @llvm.smin.i32(i32 %120, i32 0) br label %update_vlc_state.exit update_vlc_state.exit: ; preds = %108, %114, %116 - %.1.i = phi i32 [ %113, %108 ], [ %119, %116 ], [ %.035.i, %114 ] - %120 = trunc nsw i32 %.1.i to i16 - store i16 %120, ptr %18, align 4, !tbaa !304 - %121 = trunc i32 %106 to i8 - store i8 %121, ptr %10, align 1, !tbaa !301 + %.1.i = phi i32 [ %113, %108 ], [ %121, %116 ], [ %.035.i, %114 ] + %122 = trunc nsw i32 %.1.i to i16 + store i16 %122, ptr %18, align 4, !tbaa !304 + %123 = trunc i32 %106 to i8 + store i8 %123, ptr %10, align 1, !tbaa !301 ret void } diff --git a/bench/ffmpeg/optimized/mace.ll b/bench/ffmpeg/optimized/mace.ll index 9ac0ac6d8e7..1af31279416 100644 --- a/bench/ffmpeg/optimized/mace.ll +++ b/bench/ffmpeg/optimized/mace.ll @@ -64,7 +64,7 @@ define internal i32 @mace_decode_frame(ptr noundef %0, ptr noundef %1, ptr nound tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef nonnull %0, i32 noundef 16, ptr noundef nonnull @.str.5, i32 noundef %9) #5 %21 = sub nsw i32 %9, %19 %.not76 = icmp eq i32 %21, 0 - br i1 %.not76, label %215, label %22 + br i1 %.not76, label %216, label %22 22: ; preds = %20, %4 %.067 = phi i32 [ %21, %20 ], [ %9, %4 ] @@ -77,7 +77,7 @@ define internal i32 @mace_decode_frame(ptr noundef %0, ptr noundef %1, ptr nound store i32 %26, ptr %27, align 8, !tbaa !33 %28 = tail call i32 @ff_get_buffer(ptr noundef nonnull %0, ptr noundef %1, i32 noundef 0) #5 %29 = icmp slt i32 %28, 0 - br i1 %29, label %215, label %30 + br i1 %29, label %216, label %30 30: ; preds = %22 %31 = getelementptr inbounds nuw i8, ptr %1, i64 96 @@ -242,7 +242,7 @@ chomp3.exit.us.us.us.us.us: ; preds = %79, %70 .split.us: ; preds = %.preheader.us97, %.split85.us %indvars.iv106 = phi i64 [ 0, %.preheader.us97 ], [ %indvars.iv.next107, %.split85.us ] - %.187.us = phi ptr [ %.06692.us98, %.preheader.us97 ], [ %210, %.split85.us ] + %.187.us = phi ptr [ %.06692.us98, %.preheader.us97 ], [ %211, %.split85.us ] %gep = getelementptr i8, ptr %invariant.gep, i64 %indvars.iv106 %118 = load i8, ptr %gep, align 1, !tbaa !40 call void @llvm.lifetime.start.p0(ptr nonnull %5) @@ -268,7 +268,7 @@ chomp3.exit.us.us.us.us.us: ; preds = %79, %70 125: ; preds = %chomp6.exit.us, %.split.us %indvars.iv = phi i64 [ %indvars.iv.next, %chomp6.exit.us ], [ 0, %.split.us ] - %.283.us = phi ptr [ %210, %chomp6.exit.us ], [ %.187.us, %.split.us ] + %.283.us = phi ptr [ %211, %chomp6.exit.us ], [ %.187.us, %.split.us ] %126 = getelementptr inbounds nuw i8, ptr %5, i64 %indvars.iv %127 = load i8, ptr %126, align 1, !tbaa !40 %128 = zext i8 %127 to i32 @@ -328,73 +328,73 @@ read_table.exit.i.us: ; preds = %147, %138 br label %chomp6.exit.us 168: ; preds = %read_table.exit.i.us - %spec.select.i.us = tail call i16 @llvm.sadd.sat.i16(i16 %164, i16 506) + %169 = tail call i16 @llvm.sadd.sat.i16(i16 %164, i16 506) br label %chomp6.exit.us chomp6.exit.us: ; preds = %168, %165 %.sink.i.us = phi i16 [ %spec.select.i.us, %168 ], [ %spec.select45.i.us, %165 ] store i16 %.sink.i.us, ptr %113, align 2, !tbaa !56 - %169 = sext i16 %.0.i.i78.us to i32 - %170 = load i16, ptr %114, align 2, !tbaa !49 - %171 = sext i16 %170 to i32 - %172 = add nsw i32 %171, %169 - %173 = icmp sgt i32 %172, 32767 - %174 = icmp slt i32 %172, -32768 - %175 = trunc nsw i32 %172 to i16 - %spec.select.i39.i.us = select i1 %174, i16 -32767, i16 %175 - %.0.i40.i.us = select i1 %173, i16 32767, i16 %spec.select.i39.i.us - %176 = sext i16 %.0.i40.i.us to i32 - %177 = sext i16 %.sink.i.us to i32 - %178 = mul nsw i32 %176, %177 - %179 = lshr i32 %178, 15 - %180 = trunc i32 %179 to i16 - store i16 %180, ptr %114, align 2, !tbaa !49 - %181 = ashr i16 %.0.i40.i.us, 1 - %182 = zext i16 %161 to i32 - %183 = load i16, ptr %115, align 2, !tbaa !57 - %184 = sext i16 %183 to i32 - %185 = add nsw i32 %184, %182 - %186 = sext i16 %181 to i32 - %187 = sub nsw i32 %184, %186 - %188 = ashr i32 %187, 2 - %189 = sub nsw i32 %185, %188 - %190 = and i32 %189, 65280 - %191 = lshr i32 %189, 8 - %192 = and i32 %191, 255 - %193 = or disjoint i32 %192, %190 - %194 = trunc nuw i32 %193 to i16 - store i16 %194, ptr %.283.us, align 2, !tbaa !47 - %195 = load i16, ptr %112, align 2, !tbaa !55 - %196 = zext i16 %195 to i32 - %197 = add nsw i32 %186, %196 - %198 = load i16, ptr %115, align 2, !tbaa !57 - %199 = sext i16 %198 to i32 - %200 = sub nsw i32 %199, %186 - %201 = ashr i32 %200, 2 - %202 = add nsw i32 %197, %201 - %203 = and i32 %202, 65280 - %204 = lshr i32 %202, 8 - %205 = and i32 %204, 255 - %206 = or disjoint i32 %205, %203 - %207 = trunc nuw i32 %206 to i16 - %208 = getelementptr inbounds nuw i8, ptr %.283.us, i64 2 - store i16 %207, ptr %208, align 2, !tbaa !47 - %209 = load i16, ptr %112, align 2, !tbaa !55 - store i16 %209, ptr %115, align 2, !tbaa !57 - store i16 %181, ptr %112, align 2, !tbaa !55 - %210 = getelementptr inbounds nuw i16, ptr %.283.us, i64 %42 + %170 = sext i16 %.0.i.i78.us to i32 + %171 = load i16, ptr %114, align 2, !tbaa !49 + %172 = sext i16 %171 to i32 + %173 = add nsw i32 %172, %170 + %174 = icmp sgt i32 %173, 32767 + %175 = icmp slt i32 %173, -32768 + %176 = trunc nsw i32 %173 to i16 + %spec.select.i39.i.us = select i1 %175, i16 -32767, i16 %176 + %.0.i40.i.us = select i1 %174, i16 32767, i16 %spec.select.i39.i.us + %177 = sext i16 %.0.i40.i.us to i32 + %178 = sext i16 %.sink.i.us to i32 + %179 = mul nsw i32 %177, %178 + %180 = lshr i32 %179, 15 + %181 = trunc i32 %180 to i16 + store i16 %181, ptr %114, align 2, !tbaa !49 + %182 = ashr i16 %.0.i40.i.us, 1 + %183 = zext i16 %161 to i32 + %184 = load i16, ptr %115, align 2, !tbaa !57 + %185 = sext i16 %184 to i32 + %186 = add nsw i32 %185, %183 + %187 = sext i16 %182 to i32 + %188 = sub nsw i32 %185, %187 + %189 = ashr i32 %188, 2 + %190 = sub nsw i32 %186, %189 + %191 = and i32 %190, 65280 + %192 = lshr i32 %190, 8 + %193 = and i32 %192, 255 + %194 = or disjoint i32 %193, %191 + %195 = trunc nuw i32 %194 to i16 + store i16 %195, ptr %.283.us, align 2, !tbaa !47 + %196 = load i16, ptr %112, align 2, !tbaa !55 + %197 = zext i16 %196 to i32 + %198 = add nsw i32 %187, %197 + %199 = load i16, ptr %115, align 2, !tbaa !57 + %200 = sext i16 %199 to i32 + %201 = sub nsw i32 %200, %187 + %202 = ashr i32 %201, 2 + %203 = add nsw i32 %198, %202 + %204 = and i32 %203, 65280 + %205 = lshr i32 %203, 8 + %206 = and i32 %205, 255 + %207 = or disjoint i32 %206, %204 + %208 = trunc nuw i32 %207 to i16 + %209 = getelementptr inbounds nuw i8, ptr %.283.us, i64 2 + store i16 %208, ptr %209, align 2, !tbaa !47 + %210 = load i16, ptr %112, align 2, !tbaa !55 + store i16 %210, ptr %115, align 2, !tbaa !57 + store i16 %182, ptr %112, align 2, !tbaa !55 + %211 = getelementptr inbounds nuw i16, ptr %.283.us, i64 %42 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 3 br i1 %exitcond.not, label %.split85.us, label %125, !llvm.loop !50 .preheader.us97: ; preds = %.preheader.lr.ph.us, %.split89.us - %.06692.us98 = phi ptr [ %110, %.preheader.lr.ph.us ], [ %210, %.split89.us ] + %.06692.us98 = phi ptr [ %110, %.preheader.lr.ph.us ], [ %211, %.split89.us ] %.07191.us99 = phi i32 [ 0, %.preheader.lr.ph.us ], [ %117, %.split89.us ] - %211 = mul nuw nsw i32 %.07191.us99, %11 - %212 = add nuw i32 %211, %116 - %213 = shl i32 %212, %17 - %214 = sext i32 %213 to i64 - %invariant.gep = getelementptr i8, ptr %7, i64 %214 + %212 = mul nuw nsw i32 %.07191.us99, %11 + %213 = add nuw i32 %212, %116 + %214 = shl i32 %213, %17 + %215 = sext i32 %214 to i64 + %invariant.gep = getelementptr i8, ptr %7, i64 %215 br label %.split.us ._crit_edge.split.us100: ; preds = %.split89.us @@ -404,9 +404,9 @@ chomp6.exit.us: ; preds = %168, %165 ._crit_edge96: ; preds = %._crit_edge.split.us100, %._crit_edge.split.us.us.us, %.lr.ph, %30 store i32 1, ptr %2, align 4, !tbaa !58 - br label %215 + br label %216 -215: ; preds = %22, %20, %._crit_edge96 +216: ; preds = %22, %20, %._crit_edge96 %.0 = phi i32 [ %.067, %._crit_edge96 ], [ -1094995529, %20 ], [ %28, %22 ] ret i32 %.0 } diff --git a/bench/ffmpeg/optimized/mov.ll b/bench/ffmpeg/optimized/mov.ll index fd134eaa2c1..5aaf75c9211 100644 --- a/bench/ffmpeg/optimized/mov.ll +++ b/bench/ffmpeg/optimized/mov.ll @@ -11130,13 +11130,13 @@ define internal range(i32 -1094995529, 1) i32 @mov_read_stsc(ptr noundef readonl 10: ; preds = %4 tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %9, i32 noundef 24, ptr noundef nonnull @.str.124) #17 - br label %146 + br label %148 11: ; preds = %4 %12 = getelementptr inbounds nuw i8, ptr %9, i64 44 %13 = load i32, ptr %12, align 4, !tbaa !25 %14 = icmp eq i32 %13, 0 - br i1 %14, label %146, label %15 + br i1 %14, label %148, label %15 15: ; preds = %11 %16 = getelementptr inbounds nuw i8, ptr %9, i64 48 @@ -11154,7 +11154,7 @@ define internal range(i32 -1094995529, 1) i32 @mov_read_stsc(ptr noundef readonl %28 = mul nuw nsw i64 %27, 12 %29 = add nuw nsw i64 %28, 4 %30 = icmp ugt i64 %29, %3 - br i1 %30, label %146, label %31 + br i1 %30, label %148, label %31 31: ; preds = %15 %32 = load ptr, ptr %8, align 8, !tbaa !4 @@ -11163,7 +11163,7 @@ define internal range(i32 -1094995529, 1) i32 @mov_read_stsc(ptr noundef readonl %35 = add i32 %34, -1 tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %32, i32 noundef 56, ptr noundef nonnull @.str.125, i32 noundef %35, i32 noundef %26) #17 %.not = icmp eq i32 %26, 0 - br i1 %.not, label %146, label %36 + br i1 %.not, label %148, label %36 36: ; preds = %31 %37 = getelementptr inbounds nuw i8, ptr %23, i64 112 @@ -11174,7 +11174,7 @@ define internal range(i32 -1094995529, 1) i32 @mov_read_stsc(ptr noundef readonl 39: ; preds = %36 %40 = load ptr, ptr %8, align 8, !tbaa !4 tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %40, i32 noundef 24, ptr noundef nonnull @.str.126) #17 - br label %146 + br label %148 41: ; preds = %36 tail call void @av_free(ptr noundef null) #17 @@ -11183,7 +11183,7 @@ define internal range(i32 -1094995529, 1) i32 @mov_read_stsc(ptr noundef readonl %43 = tail call ptr @av_malloc_array(i64 noundef %27, i64 noundef 12) #17 store ptr %43, ptr %37, align 8, !tbaa !169 %.not133 = icmp eq ptr %43, null - br i1 %.not133, label %146, label %.preheader + br i1 %.not133, label %148, label %.preheader .preheader: ; preds = %41 %44 = getelementptr inbounds nuw i8, ptr %1, i64 80 @@ -11231,9 +11231,9 @@ define internal range(i32 -1094995529, 1) i32 @mov_read_stsc(ptr noundef readonl %61 = zext i32 %.0120.lcssa to i64 br label %.lr.ph -.lr.ph: ; preds = %.lr.ph.preheader, %140 - %62 = phi ptr [ %60, %.lr.ph.preheader ], [ %141, %140 ] - %63 = phi i32 [ %.0120.lcssa, %.lr.ph.preheader ], [ %142, %140 ] +.lr.ph: ; preds = %.lr.ph.preheader, %142 + %62 = phi ptr [ %60, %.lr.ph.preheader ], [ %143, %140 ] + %63 = phi i32 [ %.0120.lcssa, %.lr.ph.preheader ], [ %144, %140 ] %indvars.iv149 = phi i64 [ %61, %.lr.ph.preheader ], [ %indvars.iv.next150, %140 ] %indvars.iv.next150 = add nsw i64 %indvars.iv149, -1 %indvars = trunc i64 %indvars.iv.next150 to i32 @@ -11287,7 +11287,7 @@ define internal range(i32 -1094995529, 1) i32 @mov_read_stsc(ptr noundef readonl %91 = getelementptr inbounds nuw i8, ptr %83, i64 8 %92 = load i32, ptr %91, align 4, !tbaa !470 %93 = icmp slt i32 %92, 1 - br i1 %93, label %94, label %140 + br i1 %93, label %94, label %142 94: ; preds = %90, %86, %81, %73, %66 %95 = phi i32 [ %82, %90 ], [ %82, %86 ], [ %82, %81 ], [ %76, %73 ], [ %69, %66 ] @@ -11317,7 +11317,7 @@ define internal range(i32 -1094995529, 1) i32 @mov_read_stsc(ptr noundef readonl 111: ; preds = %105 %112 = add i32 %102, -1 store i32 %112, ptr %42, align 8, !tbaa !167 - br label %140 + br label %142 113: ; preds = %105 %114 = load i32, ptr %106, align 4, !tbaa !170 @@ -11325,7 +11325,7 @@ define internal range(i32 -1094995529, 1) i32 @mov_read_stsc(ptr noundef readonl %..1.in163 = tail call i64 @llvm.smax.i64(i64 %indvars.iv149, i64 %115) %..1.in = trunc i64 %..1.in163 to i32 store i32 %..1.in, ptr %106, align 4, !tbaa !170 - br i1 %110, label %116, label %122 + br i1 %110, label %116, label %124 116: ; preds = %113 %117 = add i64 %indvars.iv149, 4294967294 @@ -11333,21 +11333,21 @@ define internal range(i32 -1094995529, 1) i32 @mov_read_stsc(ptr noundef readonl %119 = getelementptr inbounds nuw %struct.MOVStsc, ptr %104, i64 %118 %120 = load i32, ptr %119, align 4, !tbaa !170 %.not141 = icmp slt i32 %120, %..1.in - br i1 %.not141, label %122, label %121 + br i1 %.not141, label %124, label %121 121: ; preds = %116 %spec.select = tail call i32 @llvm.sadd.sat.i32(i32 %120, i32 1) store i32 %spec.select, ptr %106, align 4, !tbaa !170 - br label %122 + br label %124 -122: ; preds = %121, %116, %113 +124: ; preds = %121, %116, %113 %spec.select142 = tail call i32 @llvm.smax.i32(i32 %108, i32 1) store i32 %spec.select142, ptr %107, align 4, !tbaa !469 - %123 = getelementptr inbounds nuw i8, ptr %106, i64 8 - %124 = load i32, ptr %123, align 4, !tbaa !470 - %125 = tail call i32 @llvm.smax.i32(i32 %124, i32 1) - store i32 %125, ptr %123, align 4, !tbaa !470 - br label %140 + %125 = getelementptr inbounds nuw i8, ptr %106, i64 8 + %126 = load i32, ptr %125, align 4, !tbaa !470 + %127 = tail call i32 @llvm.smax.i32(i32 %126, i32 1) + store i32 %127, ptr %125, align 4, !tbaa !470 + br label %142 126: ; preds = %94 %127 = getelementptr inbounds nuw %struct.MOVStsc, ptr %104, i64 %indvars.iv149 @@ -11355,42 +11355,42 @@ define internal range(i32 -1094995529, 1) i32 @mov_read_stsc(ptr noundef readonl %129 = icmp sgt i32 %128, 1 br i1 %129, label %131, label %130 -130: ; preds = %126 +128: ; preds = %126 tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef null, i32 noundef 0, ptr noundef nonnull @.str, ptr noundef nonnull @.str.128, ptr noundef nonnull @.str.2, i32 noundef 3249) #17 tail call void @abort() #18 unreachable -131: ; preds = %126 - %132 = add nsw i32 %128, -1 - %133 = getelementptr inbounds nuw %struct.MOVStsc, ptr %104, i64 %.pre-phi - store i32 %132, ptr %133, align 4, !tbaa !170 - %134 = getelementptr inbounds nuw i8, ptr %127, i64 4 - %135 = load i32, ptr %134, align 4, !tbaa !469 - %136 = getelementptr inbounds nuw i8, ptr %133, i64 4 - store i32 %135, ptr %136, align 4, !tbaa !469 - %137 = getelementptr inbounds nuw i8, ptr %127, i64 8 - %138 = load i32, ptr %137, align 4, !tbaa !470 - %139 = getelementptr inbounds nuw i8, ptr %133, i64 8 - store i32 %138, ptr %139, align 4, !tbaa !470 - br label %140 - -140: ; preds = %90, %131, %122, %111 - %141 = phi ptr [ %62, %90 ], [ %104, %131 ], [ %104, %122 ], [ %104, %111 ] - %142 = phi i32 [ %63, %90 ], [ %102, %131 ], [ %102, %122 ], [ %112, %111 ] +133: ; preds = %126 + %134 = add nsw i32 %128, -1 + %135 = getelementptr inbounds nuw %struct.MOVStsc, ptr %104, i64 %.pre-phi + store i32 %134, ptr %135, align 4, !tbaa !170 + %136 = getelementptr inbounds nuw i8, ptr %127, i64 4 + %137 = load i32, ptr %136, align 4, !tbaa !469 + %138 = getelementptr inbounds nuw i8, ptr %135, i64 4 + store i32 %137, ptr %138, align 4, !tbaa !469 + %139 = getelementptr inbounds nuw i8, ptr %127, i64 8 + %140 = load i32, ptr %139, align 4, !tbaa !470 + %141 = getelementptr inbounds nuw i8, ptr %135, i64 8 + store i32 %140, ptr %141, align 4, !tbaa !470 + br label %142 + +142: ; preds = %90, %133, %124, %111 + %143 = phi ptr [ %62, %90 ], [ %104, %131 ], [ %104, %122 ], [ %104, %111 ] + %144 = phi i32 [ %63, %90 ], [ %102, %131 ], [ %102, %122 ], [ %112, %111 ] %.not135 = icmp eq i32 %indvars, 0 br i1 %.not135, label %._crit_edge, label %.lr.ph, !llvm.loop !471 -._crit_edge: ; preds = %140, %.critedge - %143 = load i32, ptr %44, align 8, !tbaa !47 - %.not136 = icmp eq i32 %143, 0 - br i1 %.not136, label %146, label %144 +._crit_edge: ; preds = %142, %.critedge + %145 = load i32, ptr %44, align 8, !tbaa !47 + %.not136 = icmp eq i32 %145, 0 + br i1 %.not136, label %148, label %146 -144: ; preds = %._crit_edge - %145 = load ptr, ptr %8, align 8, !tbaa !4 - tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %145, i32 noundef 24, ptr noundef nonnull @.str.129) #17 - br label %146 +146: ; preds = %._crit_edge + %147 = load ptr, ptr %8, align 8, !tbaa !4 + tail call void (ptr, i32, ptr, ...) @av_log(ptr noundef %147, i32 noundef 24, ptr noundef nonnull @.str.129) #17 + br label %148 -146: ; preds = %._crit_edge, %41, %31, %15, %11, %144, %39, %10 +148: ; preds = %._crit_edge, %41, %31, %15, %11, %146, %39, %10 %.0 = phi i32 [ 0, %10 ], [ 0, %39 ], [ -541478725, %144 ], [ 0, %11 ], [ -1094995529, %15 ], [ 0, %31 ], [ -12, %41 ], [ 0, %._crit_edge ] ret i32 %.0 } diff --git a/bench/grpc/optimized/grpc_ares_wrapper.ll b/bench/grpc/optimized/grpc_ares_wrapper.ll index 23a28f59744..63888de6b5e 100644 --- a/bench/grpc/optimized/grpc_ares_wrapper.ll +++ b/bench/grpc/optimized/grpc_ares_wrapper.ll @@ -1867,7 +1867,7 @@ _ZN9grpc_core9Timestamp3NowEv.exit: ; preds = %.critedge8, %23 %28 = call i64 %27(ptr noundef nonnull align 8 dereferenceable(8) %25) %.off = add i64 %28, -9223372036854775807 %switch = icmp ult i64 %.off, 2 - %spec.select = call i64 @llvm.sadd.sat.i64(i64 %28, i64 1000) + %29 = call i64 @llvm.sadd.sat.i64(i64 %28, i64 1000) %.0.i.i = select i1 %switch, i64 %28, i64 %spec.select ret i64 %.0.i.i } diff --git a/bench/grpc/optimized/ping_rate_policy.ll b/bench/grpc/optimized/ping_rate_policy.ll index ac84fc396e1..d998701cf18 100644 --- a/bench/grpc/optimized/ping_rate_policy.ll +++ b/bench/grpc/optimized/ping_rate_policy.ll @@ -250,44 +250,44 @@ _ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread: ; preds = %54, %_Z ] 59: ; preds = %_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread - %spec.select = tail call i64 @llvm.sadd.sat.i64(i64 %.sroa.04.0.copyload, i64 60000) + %60 = tail call i64 @llvm.sadd.sat.i64(i64 %.sroa.04.0.copyload, i64 60000) br label %_ZN9grpc_coreplENS_9TimestampENS_8DurationE.exit26 _ZN9grpc_coreplENS_9TimestampENS_8DurationE.exit26: ; preds = %59, %_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread %.0.i.i25 = phi i64 [ %.sroa.04.0.copyload, %_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread ], [ %spec.select, %59 ] - %60 = icmp sgt i64 %.0.i.i25, %32 - br i1 %60, label %61, label %_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread46 + %61 = icmp sgt i64 %.0.i.i25, %32 + br i1 %61, label %62, label %_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread46 -61: ; preds = %_ZN9grpc_coreplENS_9TimestampENS_8DurationE.exit26 +62: ; preds = %_ZN9grpc_coreplENS_9TimestampENS_8DurationE.exit26 %cond49 = icmp eq i64 %32, -9223372036854775808 br i1 %cond49, label %_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread46.sink.split, label %.thread.i31 -.thread.i31: ; preds = %61 - %62 = sub nsw i64 0, %32 - %63 = icmp eq i64 %.0.i.i25, 9223372036854775807 - %64 = icmp eq i64 %32, -9223372036854775807 - %or.cond.i.i32 = or i1 %64, %63 - br i1 %or.cond.i.i32, label %_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread46.sink.split, label %65 - -65: ; preds = %.thread.i31 - %66 = icmp sgt i64 %.0.i.i25, 0 - br i1 %66, label %67, label %70 - -67: ; preds = %65 - %68 = sub nuw nsw i64 9223372036854775807, %.0.i.i25 - %69 = icmp slt i64 %68, %62 - br i1 %69, label %_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread46.sink.split, label %73 - -70: ; preds = %65 - %71 = sub nsw i64 -9223372036854775808, %.0.i.i25 - %72 = icmp sgt i64 %71, %62 - br i1 %72, label %_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread46.sink.split, label %73 - -73: ; preds = %70, %67 - %74 = sub i64 %.0.i.i25, %32 +.thread.i31: ; preds = %62 + %63 = sub nsw i64 0, %32 + %64 = icmp eq i64 %.0.i.i25, 9223372036854775807 + %65 = icmp eq i64 %32, -9223372036854775807 + %or.cond.i.i32 = or i1 %65, %64 + br i1 %or.cond.i.i32, label %_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread46.sink.split, label %66 + +66: ; preds = %.thread.i31 + %67 = icmp sgt i64 %.0.i.i25, 0 + br i1 %67, label %68, label %71 + +68: ; preds = %66 + %69 = sub nuw nsw i64 9223372036854775807, %.0.i.i25 + %70 = icmp slt i64 %69, %63 + br i1 %70, label %_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread46.sink.split, label %74 + +71: ; preds = %66 + %72 = sub nsw i64 -9223372036854775808, %.0.i.i25 + %73 = icmp sgt i64 %72, %63 + br i1 %73, label %_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread46.sink.split, label %74 + +74: ; preds = %71, %68 + %75 = sub i64 %.0.i.i25, %32 br label %_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread46.sink.split -_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread46.sink.split: ; preds = %73, %70, %67, %.thread.i31, %61, %47, %44, %41, %.thread.i, %34 +_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread46.sink.split: ; preds = %74, %71, %68, %.thread.i31, %62, %47, %44, %41, %.thread.i, %34 %.sink55 = phi i64 [ %2, %34 ], [ %2, %.thread.i ], [ %2, %41 ], [ %2, %44 ], [ %2, %47 ], [ 60000, %61 ], [ 60000, %.thread.i31 ], [ 60000, %67 ], [ 60000, %70 ], [ 60000, %73 ] %.sink54 = phi i64 [ %35, %34 ], [ %35, %.thread.i ], [ %35, %41 ], [ %35, %44 ], [ %35, %47 ], [ %.sroa.04.0.copyload, %61 ], [ %.sroa.04.0.copyload, %.thread.i31 ], [ %.sroa.04.0.copyload, %67 ], [ %.sroa.04.0.copyload, %70 ], [ %.sroa.04.0.copyload, %73 ] %.sroa.04.0.i.sink = phi i64 [ 9223372036854775807, %34 ], [ 9223372036854775807, %.thread.i ], [ 9223372036854775807, %41 ], [ -9223372036854775808, %44 ], [ %48, %47 ], [ 9223372036854775807, %61 ], [ 9223372036854775807, %.thread.i31 ], [ 9223372036854775807, %67 ], [ -9223372036854775808, %70 ], [ %74, %73 ] @@ -300,8 +300,8 @@ _ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread46.sink.split: ; pre _ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread46: ; preds = %_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread46.sink.split, %49, %_ZN9grpc_coreplENS_9TimestampENS_8DurationE.exit26, %_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread, %_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit, %57, %4 %.sink = phi i8 [ 1, %4 ], [ 1, %57 ], [ 1, %_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit ], [ 0, %_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread ], [ 0, %_ZN9grpc_coreplENS_9TimestampENS_8DurationE.exit26 ], [ 0, %49 ], [ 2, %_ZN9grpc_core31IsMaxPingsWoDataThrottleEnabledEv.exit.thread46.sink.split ] - %75 = getelementptr inbounds nuw i8, ptr %0, i64 24 - store i8 %.sink, ptr %75, align 8, !tbaa !24 + %76 = getelementptr inbounds nuw i8, ptr %0, i64 24 + store i8 %.sink, ptr %76, align 8, !tbaa !24 ret void } diff --git a/bench/grpc/optimized/tcp_posix.ll b/bench/grpc/optimized/tcp_posix.ll index 9756fc30ab1..bb0b52168aa 100644 --- a/bench/grpc/optimized/tcp_posix.ll +++ b/bench/grpc/optimized/tcp_posix.ll @@ -9576,15 +9576,15 @@ define internal void @_ZL10run_pollerPvN4absl12lts_202407226StatusE(ptr noundef call void @llvm.lifetime.start.p0(ptr nonnull %4) call void @_ZN4absl12lts_2024072212log_internal10LogMessageC1EPKciNS2_7InfoTagE(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull @.str, i32 noundef 626) #37 invoke void @_ZN4absl12lts_2024072212log_internal10LogMessage19CopyToEncodedBufferILNS2_10StringTypeE0EEEvSt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 14, ptr nonnull @.str.43) - to label %_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit unwind label %55 + to label %_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit unwind label %56 _ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit: ; preds = %12 %13 = invoke fastcc noundef nonnull align 8 dereferenceable(16) ptr @_ZN4absl12lts_2024072212log_internal10LogMessagelsIPN12_GLOBAL__N_113backup_pollerETnNSt9enable_ifIXntsr4absl16HasAbslStringifyIT_EE5valueEiE4typeELi0EEERS2_RKS8_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr %0) - to label %14 unwind label %55 + to label %14 unwind label %56 14: ; preds = %_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit invoke void @_ZN4absl12lts_2024072212log_internal10LogMessage19CopyToEncodedBufferILNS2_10StringTypeE0EEEvSt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 4, ptr nonnull @.str.48) - to label %.critedge unwind label %55 + to label %.critedge unwind label %56 .critedge: ; preds = %14 call void @_ZN4absl12lts_2024072212log_internal10LogMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #39 @@ -9609,75 +9609,75 @@ _ZN9grpc_core9Timestamp3NowEv.exit: ; preds = %.critedge31, %16 %21 = call i64 %20(ptr noundef nonnull align 8 dereferenceable(8) %18) %.off = add i64 %21, -9223372036854775807 %switch = icmp ult i64 %.off, 2 - %spec.select = call i64 @llvm.sadd.sat.i64(i64 %21, i64 10000) + %22 = call i64 @llvm.sadd.sat.i64(i64 %21, i64 10000) %.0.i.i = select i1 %switch, i64 %21, i64 %spec.select - %22 = getelementptr inbounds nuw i8, ptr %0, i64 40 - call void @_Z17grpc_pollset_workP12grpc_pollsetPP19grpc_pollset_workerN9grpc_core9TimestampE(ptr dead_on_unwind nonnull writable sret(%"class.absl::lts_20240722::Status") align 8 %5, ptr noundef nonnull %22, ptr noundef null, i64 %.0.i.i) + %23 = getelementptr inbounds nuw i8, ptr %0, i64 40 + call void @_Z17grpc_pollset_workP12grpc_pollsetPP19grpc_pollset_workerN9grpc_core9TimestampE(ptr dead_on_unwind nonnull writable sret(%"class.absl::lts_20240722::Status") align 8 %5, ptr noundef nonnull %23, ptr noundef null, i64 %.0.i.i) call void @llvm.lifetime.start.p0(ptr nonnull %3) - %23 = load i64, ptr %5, align 8, !tbaa !110 - %24 = icmp eq i64 %23, 1 - br i1 %24, label %40, label %25 - -25: ; preds = %_ZN9grpc_core9Timestamp3NowEv.exit - store i64 %23, ptr %3, align 8, !tbaa !110 - %26 = and i64 %23, 1 - %.not.i.i.i = icmp eq i64 %26, 0 - br i1 %.not.i.i.i, label %27, label %_ZN4absl12lts_202407226StatusC2ERKS1_.exit.i - -27: ; preds = %25 - %28 = inttoptr i64 %23 to ptr - %29 = atomicrmw add ptr %28, i32 1 monotonic, align 4 + %24 = load i64, ptr %5, align 8, !tbaa !110 + %25 = icmp eq i64 %24, 1 + br i1 %25, label %41, label %26 + +26: ; preds = %_ZN9grpc_core9Timestamp3NowEv.exit + store i64 %24, ptr %3, align 8, !tbaa !110 + %27 = and i64 %24, 1 + %.not.i.i.i = icmp eq i64 %27, 0 + br i1 %.not.i.i.i, label %28, label %_ZN4absl12lts_202407226StatusC2ERKS1_.exit.i + +28: ; preds = %26 + %29 = inttoptr i64 %24 to ptr + %30 = atomicrmw add ptr %29, i32 1 monotonic, align 4 br label %_ZN4absl12lts_202407226StatusC2ERKS1_.exit.i -_ZN4absl12lts_202407226StatusC2ERKS1_.exit.i: ; preds = %27, %25 - %30 = invoke noundef zeroext i1 @_Z14grpc_log_errorPKcN4absl12lts_202407226StatusES0_i(ptr noundef nonnull @.str.49, ptr noundef nonnull %3, ptr noundef nonnull @.str, i32 noundef 632) +_ZN4absl12lts_202407226StatusC2ERKS1_.exit.i: ; preds = %28, %26 + %31 = invoke noundef zeroext i1 @_Z14grpc_log_errorPKcN4absl12lts_202407226StatusES0_i(ptr noundef nonnull @.str.49, ptr noundef nonnull %3, ptr noundef nonnull @.str, i32 noundef 632) to label %31 unwind label %.body -31: ; preds = %_ZN4absl12lts_202407226StatusC2ERKS1_.exit.i - %32 = load i64, ptr %3, align 8, !tbaa !110 - %33 = and i64 %32, 1 - %.not.i.i7.i = icmp eq i64 %33, 0 - br i1 %.not.i.i7.i, label %34, label %40 +32: ; preds = %_ZN4absl12lts_202407226StatusC2ERKS1_.exit.i + %33 = load i64, ptr %3, align 8, !tbaa !110 + %34 = and i64 %33, 1 + %.not.i.i7.i = icmp eq i64 %34, 0 + br i1 %.not.i.i7.i, label %35, label %41 -34: ; preds = %31 - %35 = inttoptr i64 %32 to ptr - invoke void @_ZNK4absl12lts_2024072215status_internal9StatusRep5UnrefEv(ptr noundef nonnull align 8 dereferenceable(48) %35) - to label %40 unwind label %36 +35: ; preds = %32 + %36 = inttoptr i64 %33 to ptr + invoke void @_ZNK4absl12lts_2024072215status_internal9StatusRep5UnrefEv(ptr noundef nonnull align 8 dereferenceable(48) %36) + to label %40 unwind label %37 -36: ; preds = %34 - %37 = landingpad { ptr, i32 } +37: ; preds = %35 + %38 = landingpad { ptr, i32 } catch ptr null - %38 = extractvalue { ptr, i32 } %37, 0 - call void @__clang_call_terminate(ptr %38) #38 + %39 = extractvalue { ptr, i32 } %38, 0 + call void @__clang_call_terminate(ptr %39) #38 unreachable .body: ; preds = %_ZN4absl12lts_202407226StatusC2ERKS1_.exit.i - %39 = landingpad { ptr, i32 } + %40 = landingpad { ptr, i32 } cleanup call void @_ZN4absl12lts_202407226StatusD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #34 call void @_ZN4absl12lts_202407226StatusD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %5) #34 - br label %89 + br label %90 -40: ; preds = %34, %31, %_ZN9grpc_core9Timestamp3NowEv.exit +41: ; preds = %35, %32, %_ZN9grpc_core9Timestamp3NowEv.exit call void @llvm.lifetime.end.p0(ptr nonnull %3) - %41 = load i64, ptr %5, align 8, !tbaa !110 - %42 = and i64 %41, 1 - %.not.i.i42 = icmp eq i64 %42, 0 + %42 = load i64, ptr %5, align 8, !tbaa !110 + %43 = and i64 %42, 1 + %.not.i.i42 = icmp eq i64 %43, 0 br i1 %.not.i.i42, label %43, label %_ZN4absl12lts_202407226StatusD2Ev.exit -43: ; preds = %40 +_ZN4absl12lts_202407226StatusD2Ev.exit: ; preds = %41 %44 = inttoptr i64 %41 to ptr invoke void @_ZNK4absl12lts_2024072215status_internal9StatusRep5UnrefEv(ptr noundef nonnull align 8 dereferenceable(48) %44) to label %_ZN4absl12lts_202407226StatusD2Ev.exit unwind label %45 -45: ; preds = %43 +53: ; preds = %_ZN4absl12lts_202407226StatusD2Ev.exit %46 = landingpad { ptr, i32 } catch ptr null %47 = extractvalue { ptr, i32 } %46, 0 call void @__clang_call_terminate(ptr %47) #38 unreachable -_ZN4absl12lts_202407226StatusD2Ev.exit: ; preds = %40, %43 +55: ; preds = %40, %43 %48 = load ptr, ptr %0, align 8, !tbaa !304 call void @gpr_mu_unlock(ptr noundef %48) %49 = load ptr, ptr @_ZL18g_backup_poller_mu, align 8, !tbaa !227 @@ -9697,127 +9697,127 @@ _ZN4absl12lts_202407226StatusD2Ev.exit: ; preds = %40, %43 call void @_ZN4absl12lts_2024072212log_internal15LogMessageFatalD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %6) #38 unreachable -55: ; preds = %14, %12, %_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit - %56 = landingpad { ptr, i32 } +56: ; preds = %14, %12, %_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit + %57 = landingpad { ptr, i32 } cleanup call void @_ZN4absl12lts_2024072212log_internal10LogMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #39 call void @llvm.lifetime.end.p0(ptr nonnull %4) - br label %89 + br label %90 .critedge33: ; preds = %52 store ptr null, ptr @_ZL15g_backup_poller, align 8, !tbaa !229 store i32 0, ptr @_ZL33g_uncovered_notifications_pending, align 4, !tbaa !3 - %57 = load ptr, ptr @_ZL18g_backup_poller_mu, align 8, !tbaa !227 - call void @_ZN4absl12lts_202407225Mutex6UnlockEv(ptr noundef nonnull align 8 dereferenceable(8) %57) - %58 = load atomic i8, ptr getelementptr inbounds nuw (i8, ptr @_ZN9grpc_core9tcp_traceE, i64 16) monotonic, align 8 - %59 = trunc i8 %58 to i1 - br i1 %59, label %60, label %.critedge36, !prof !89 + %58 = load ptr, ptr @_ZL18g_backup_poller_mu, align 8, !tbaa !227 + call void @_ZN4absl12lts_202407225Mutex6UnlockEv(ptr noundef nonnull align 8 dereferenceable(8) %58) + %59 = load atomic i8, ptr getelementptr inbounds nuw (i8, ptr @_ZN9grpc_core9tcp_traceE, i64 16) monotonic, align 8 + %60 = trunc i8 %59 to i1 + br i1 %60, label %61, label %.critedge36, !prof !89 -60: ; preds = %.critedge33 +61: ; preds = %.critedge33 call void @llvm.lifetime.start.p0(ptr nonnull %7) call void @_ZN4absl12lts_2024072212log_internal10LogMessageC1EPKciNS2_7InfoTagE(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull @.str, i32 noundef 641) #37 invoke void @_ZN4absl12lts_2024072212log_internal10LogMessage19CopyToEncodedBufferILNS2_10StringTypeE0EEEvSt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 14, ptr nonnull @.str.43) - to label %_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit43 unwind label %67 + to label %_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit43 unwind label %68 -_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit43: ; preds = %60 - %61 = invoke fastcc noundef nonnull align 8 dereferenceable(16) ptr @_ZN4absl12lts_2024072212log_internal10LogMessagelsIPN12_GLOBAL__N_113backup_pollerETnNSt9enable_ifIXntsr4absl16HasAbslStringifyIT_EE5valueEiE4typeELi0EEERS2_RKS8_(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr nonnull %0) - to label %62 unwind label %67 +_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit43: ; preds = %61 + %62 = invoke fastcc noundef nonnull align 8 dereferenceable(16) ptr @_ZN4absl12lts_2024072212log_internal10LogMessagelsIPN12_GLOBAL__N_113backup_pollerETnNSt9enable_ifIXntsr4absl16HasAbslStringifyIT_EE5valueEiE4typeELi0EEERS2_RKS8_(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr nonnull %0) + to label %62 unwind label %68 -62: ; preds = %_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit43 +63: ; preds = %_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit43 invoke void @_ZN4absl12lts_2024072212log_internal10LogMessage19CopyToEncodedBufferILNS2_10StringTypeE0EEEvSt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 9, ptr nonnull @.str.51) - to label %.critedge35 unwind label %67 + to label %.critedge35 unwind label %68 -.critedge35: ; preds = %62 +.critedge35: ; preds = %63 call void @_ZN4absl12lts_2024072212log_internal10LogMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #39 call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %.critedge36 .critedge36: ; preds = %.critedge33, %.critedge35 - %63 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %64 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store ptr @_ZL11done_pollerPvN4absl12lts_202407226StatusE, ptr %64, align 8, !tbaa !127 - %65 = getelementptr inbounds nuw i8, ptr %0, i64 24 - store ptr %0, ptr %65, align 8, !tbaa !128 - %66 = getelementptr inbounds nuw i8, ptr %0, i64 32 - store i64 0, ptr %66, align 8, !tbaa !25 - call void @_Z21grpc_pollset_shutdownP12grpc_pollsetP12grpc_closure(ptr noundef nonnull %22, ptr noundef nonnull %63) + %64 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %65 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store ptr @_ZL11done_pollerPvN4absl12lts_202407226StatusE, ptr %65, align 8, !tbaa !127 + %66 = getelementptr inbounds nuw i8, ptr %0, i64 24 + store ptr %0, ptr %66, align 8, !tbaa !128 + %67 = getelementptr inbounds nuw i8, ptr %0, i64 32 + store i64 0, ptr %67, align 8, !tbaa !25 + call void @_Z21grpc_pollset_shutdownP12grpc_pollsetP12grpc_closure(ptr noundef nonnull %23, ptr noundef nonnull %64) br label %_ZN4absl12lts_202407226StatusD2Ev.exit46 -67: ; preds = %62, %60, %_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit43 - %68 = landingpad { ptr, i32 } +68: ; preds = %63, %61, %_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit43 + %69 = landingpad { ptr, i32 } cleanup call void @_ZN4absl12lts_2024072212log_internal10LogMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #39 call void @llvm.lifetime.end.p0(ptr nonnull %7) - br label %89 + br label %90 -69: ; preds = %_ZN4absl12lts_202407226StatusD2Ev.exit - %70 = load ptr, ptr @_ZL18g_backup_poller_mu, align 8, !tbaa !227 - call void @_ZN4absl12lts_202407225Mutex6UnlockEv(ptr noundef nonnull align 8 dereferenceable(8) %70) - %71 = load atomic i8, ptr getelementptr inbounds nuw (i8, ptr @_ZN9grpc_core9tcp_traceE, i64 16) monotonic, align 8 - %72 = trunc i8 %71 to i1 - br i1 %72, label %73, label %.critedge39, !prof !89 +70: ; preds = %_ZN4absl12lts_202407226StatusD2Ev.exit + %71 = load ptr, ptr @_ZL18g_backup_poller_mu, align 8, !tbaa !227 + call void @_ZN4absl12lts_202407225Mutex6UnlockEv(ptr noundef nonnull align 8 dereferenceable(8) %71) + %72 = load atomic i8, ptr getelementptr inbounds nuw (i8, ptr @_ZN9grpc_core9tcp_traceE, i64 16) monotonic, align 8 + %73 = trunc i8 %72 to i1 + br i1 %73, label %74, label %.critedge39, !prof !89 -73: ; preds = %69 +74: ; preds = %70 call void @llvm.lifetime.start.p0(ptr nonnull %8) call void @_ZN4absl12lts_2024072212log_internal10LogMessageC1EPKciNS2_7InfoTagE(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull @.str, i32 noundef 647) #37 invoke void @_ZN4absl12lts_2024072212log_internal10LogMessage19CopyToEncodedBufferILNS2_10StringTypeE0EEEvSt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(16) %8, i64 14, ptr nonnull @.str.43) - to label %_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit44 unwind label %85 + to label %_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit44 unwind label %86 -_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit44: ; preds = %73 - %74 = invoke fastcc noundef nonnull align 8 dereferenceable(16) ptr @_ZN4absl12lts_2024072212log_internal10LogMessagelsIPN12_GLOBAL__N_113backup_pollerETnNSt9enable_ifIXntsr4absl16HasAbslStringifyIT_EE5valueEiE4typeELi0EEERS2_RKS8_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr nonnull %0) - to label %75 unwind label %85 +_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit44: ; preds = %74 + %75 = invoke fastcc noundef nonnull align 8 dereferenceable(16) ptr @_ZN4absl12lts_2024072212log_internal10LogMessagelsIPN12_GLOBAL__N_113backup_pollerETnNSt9enable_ifIXntsr4absl16HasAbslStringifyIT_EE5valueEiE4typeELi0EEERS2_RKS8_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr nonnull %0) + to label %75 unwind label %86 -75: ; preds = %_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit44 +76: ; preds = %_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit44 invoke void @_ZN4absl12lts_2024072212log_internal10LogMessage19CopyToEncodedBufferILNS2_10StringTypeE0EEEvSt17basic_string_viewIcSt11char_traitsIcEE(ptr noundef nonnull align 8 dereferenceable(16) %8, i64 11, ptr nonnull @.str.52) - to label %.critedge38 unwind label %85 + to label %.critedge38 unwind label %86 -.critedge38: ; preds = %75 +.critedge38: ; preds = %76 call void @_ZN4absl12lts_2024072212log_internal10LogMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #39 call void @llvm.lifetime.end.p0(ptr nonnull %8) br label %.critedge39 -.critedge39: ; preds = %69, %.critedge38 - %76 = getelementptr inbounds nuw i8, ptr %0, i64 8 +.critedge39: ; preds = %70, %.critedge38 + %77 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 1, ptr %9, align 8, !tbaa !110, !alias.scope !309 - invoke void @_ZN9grpc_core8Executor3RunEP12grpc_closureN4absl12lts_202407226StatusENS_12ExecutorTypeENS_15ExecutorJobTypeE(ptr noundef nonnull %76, ptr noundef nonnull %9, i32 noundef 0, i32 noundef 1) - to label %77 unwind label %87 - -77: ; preds = %.critedge39 - %78 = load i64, ptr %9, align 8, !tbaa !110 - %79 = and i64 %78, 1 - %.not.i.i45 = icmp eq i64 %79, 0 - br i1 %.not.i.i45, label %80, label %_ZN4absl12lts_202407226StatusD2Ev.exit46 - -80: ; preds = %77 - %81 = inttoptr i64 %78 to ptr - invoke void @_ZNK4absl12lts_2024072215status_internal9StatusRep5UnrefEv(ptr noundef nonnull align 8 dereferenceable(48) %81) - to label %_ZN4absl12lts_202407226StatusD2Ev.exit46 unwind label %82 - -82: ; preds = %80 - %83 = landingpad { ptr, i32 } + invoke void @_ZN9grpc_core8Executor3RunEP12grpc_closureN4absl12lts_202407226StatusENS_12ExecutorTypeENS_15ExecutorJobTypeE(ptr noundef nonnull %77, ptr noundef nonnull %9, i32 noundef 0, i32 noundef 1) + to label %77 unwind label %88 + +78: ; preds = %.critedge39 + %79 = load i64, ptr %9, align 8, !tbaa !110 + %80 = and i64 %79, 1 + %.not.i.i45 = icmp eq i64 %80, 0 + br i1 %.not.i.i45, label %81, label %_ZN4absl12lts_202407226StatusD2Ev.exit46 + +81: ; preds = %78 + %82 = inttoptr i64 %79 to ptr + invoke void @_ZNK4absl12lts_2024072215status_internal9StatusRep5UnrefEv(ptr noundef nonnull align 8 dereferenceable(48) %82) + to label %_ZN4absl12lts_202407226StatusD2Ev.exit46 unwind label %83 + +83: ; preds = %81 + %84 = landingpad { ptr, i32 } catch ptr null - %84 = extractvalue { ptr, i32 } %83, 0 - call void @__clang_call_terminate(ptr %84) #38 + %85 = extractvalue { ptr, i32 } %84, 0 + call void @__clang_call_terminate(ptr %85) #38 unreachable -85: ; preds = %75, %73, %_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit44 - %86 = landingpad { ptr, i32 } +86: ; preds = %76, %74, %_ZN4absl12lts_2024072212log_internal10LogMessagelsILi15EEERS2_RAT__Kc.exit44 + %87 = landingpad { ptr, i32 } cleanup call void @_ZN4absl12lts_2024072212log_internal10LogMessageD1Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #39 call void @llvm.lifetime.end.p0(ptr nonnull %8) - br label %89 + br label %90 -87: ; preds = %.critedge39 - %88 = landingpad { ptr, i32 } +88: ; preds = %.critedge39 + %89 = landingpad { ptr, i32 } cleanup call void @_ZN4absl12lts_202407226StatusD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #34 - br label %89 + br label %90 -_ZN4absl12lts_202407226StatusD2Ev.exit46: ; preds = %80, %77, %.critedge36 +_ZN4absl12lts_202407226StatusD2Ev.exit46: ; preds = %81, %78, %.critedge36 ret void -89: ; preds = %.body, %67, %85, %87, %55 - %.pn.pn = phi { ptr, i32 } [ %56, %55 ], [ %68, %67 ], [ %88, %87 ], [ %86, %85 ], [ %39, %.body ] +90: ; preds = %.body, %68, %86, %88, %56 + %.pn.pn = phi { ptr, i32 } [ %57, %55 ], [ %69, %67 ], [ %89, %87 ], [ %87, %85 ], [ %40, %.body ] resume { ptr, i32 } %.pn.pn } diff --git a/bench/libzmq/optimized/stream_connecter_base.ll b/bench/libzmq/optimized/stream_connecter_base.ll index a3808f41ee3..d3ef28018ab 100644 --- a/bench/libzmq/optimized/stream_connecter_base.ll +++ b/bench/libzmq/optimized/stream_connecter_base.ll @@ -279,7 +279,7 @@ define void @_ZN3zmq23stream_connecter_base_t19add_reconnect_timerEv(ptr noundef %3 = getelementptr inbounds nuw i8, ptr %0, i64 352 %4 = load i32, ptr %3, align 8, !tbaa !84 %5 = icmp sgt i32 %4, 0 - br i1 %5, label %6, label %38 + br i1 %5, label %6, label %41 6: ; preds = %1 %7 = getelementptr inbounds nuw i8, ptr %0, i64 356 @@ -316,17 +316,17 @@ define void @_ZN3zmq23stream_connecter_base_t19add_reconnect_timerEv(ptr noundef _ZN3zmq23stream_connecter_base_t21get_new_reconnect_ivlEv.exit: ; preds = %13, %18 %.0.i = phi i32 [ %..06.i, %13 ], [ %spec.select9.i, %18 ] - %23 = getelementptr inbounds nuw i8, ptr %0, i64 1448 - tail call void @_ZN3zmq11io_object_t9add_timerEii(ptr noundef nonnull align 8 dereferenceable(16) %23, i32 noundef %.0.i, i32 noundef 1) - %24 = getelementptr inbounds nuw i8, ptr %0, i64 1520 - %25 = load ptr, ptr %24, align 8, !tbaa !72 + %26 = getelementptr inbounds nuw i8, ptr %0, i64 1448 + tail call void @_ZN3zmq11io_object_t9add_timerEii(ptr noundef nonnull align 8 dereferenceable(16) %26, i32 noundef %.0.i, i32 noundef 1) + %27 = getelementptr inbounds nuw i8, ptr %0, i64 1520 + %28 = load ptr, ptr %27, align 8, !tbaa !72 call void @llvm.lifetime.start.p0(ptr nonnull %2) - %26 = getelementptr inbounds nuw i8, ptr %0, i64 1488 - call void @_ZN3zmq38make_unconnected_connect_endpoint_pairERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"struct.zmq::endpoint_uri_pair_t") align 8 %2, ptr noundef nonnull align 8 dereferenceable(32) %26) - invoke void @_ZN3zmq13socket_base_t21event_connect_retriedERKNS_19endpoint_uri_pair_tEi(ptr noundef nonnull align 8 dereferenceable(1825) %25, ptr noundef nonnull align 8 dereferenceable(68) %2, i32 noundef %.0.i) - to label %27 unwind label %36 + %29 = getelementptr inbounds nuw i8, ptr %0, i64 1488 + call void @_ZN3zmq38make_unconnected_connect_endpoint_pairERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"struct.zmq::endpoint_uri_pair_t") align 8 %2, ptr noundef nonnull align 8 dereferenceable(32) %29) + invoke void @_ZN3zmq13socket_base_t21event_connect_retriedERKNS_19endpoint_uri_pair_tEi(ptr noundef nonnull align 8 dereferenceable(1825) %28, ptr noundef nonnull align 8 dereferenceable(68) %2, i32 noundef %.0.i) + to label %27 unwind label %39 -27: ; preds = %_ZN3zmq23stream_connecter_base_t21get_new_reconnect_ivlEv.exit +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i: ; preds = %_ZN3zmq23stream_connecter_base_t21get_new_reconnect_ivlEv.exit %28 = getelementptr inbounds nuw i8, ptr %2, i64 32 %29 = load ptr, ptr %28, align 8, !tbaa !80 %30 = getelementptr inbounds nuw i8, ptr %2, i64 48 @@ -338,29 +338,29 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i: ; preds = %27, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i - %32 = load ptr, ptr %2, align 8, !tbaa !80 - %33 = getelementptr inbounds nuw i8, ptr %2, i64 16 - %34 = icmp eq ptr %32, %33 - br i1 %34, label %_ZN3zmq19endpoint_uri_pair_tD2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1.i + %35 = load ptr, ptr %2, align 8, !tbaa !80 + %36 = getelementptr inbounds nuw i8, ptr %2, i64 16 + %37 = icmp eq ptr %35, %36 + br i1 %37, label %_ZN3zmq19endpoint_uri_pair_tD2Ev.exit, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1.i: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i - call void @_ZdlPv(ptr noundef %32) #20 + call void @_ZdlPv(ptr noundef %35) #20 br label %_ZN3zmq19endpoint_uri_pair_tD2Ev.exit _ZN3zmq19endpoint_uri_pair_tD2Ev.exit: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i1.i call void @llvm.lifetime.end.p0(ptr nonnull %2) - %35 = getelementptr inbounds nuw i8, ptr %0, i64 1529 - store i8 1, ptr %35, align 1, !tbaa !74 - br label %38 + %38 = getelementptr inbounds nuw i8, ptr %0, i64 1529 + store i8 1, ptr %38, align 1, !tbaa !74 + br label %41 -36: ; preds = %_ZN3zmq23stream_connecter_base_t21get_new_reconnect_ivlEv.exit - %37 = landingpad { ptr, i32 } +39: ; preds = %_ZN3zmq23stream_connecter_base_t21get_new_reconnect_ivlEv.exit + %40 = landingpad { ptr, i32 } cleanup call void @_ZN3zmq19endpoint_uri_pair_tD2Ev(ptr noundef nonnull align 8 dereferenceable(68) %2) #21 call void @llvm.lifetime.end.p0(ptr nonnull %2) - resume { ptr, i32 } %37 + resume { ptr, i32 } %40 -38: ; preds = %_ZN3zmq19endpoint_uri_pair_tD2Ev.exit, %1 +41: ; preds = %_ZN3zmq19endpoint_uri_pair_tD2Ev.exit, %1 ret void } @@ -508,7 +508,7 @@ define noundef i32 @_ZN3zmq23stream_connecter_base_t21get_new_reconnect_ivlEv(pt %.06 = select i1 %7, i32 %10, i32 %spec.select %..06 = tail call i32 @llvm.smin.i32(i32 %.06, i32 %3) store i32 %..06, ptr %5, align 4, !tbaa !75 - br label %23 + br label %26 13: ; preds = %1 br i1 %7, label %14, label %17 @@ -528,7 +528,7 @@ define noundef i32 @_ZN3zmq23stream_connecter_base_t21get_new_reconnect_ivlEv(pt %spec.select9 = tail call i32 @llvm.sadd.sat.i32(i32 %21, i32 %22) br label %23 -23: ; preds = %17, %8 +26: ; preds = %17, %8 %.0 = phi i32 [ %..06, %8 ], [ %spec.select9, %17 ] ret i32 %.0 } diff --git a/bench/openjdk/optimized/ifnode.ll b/bench/openjdk/optimized/ifnode.ll index f925eff17ba..4fc51d7509d 100644 --- a/bench/openjdk/optimized/ifnode.ll +++ b/bench/openjdk/optimized/ifnode.ll @@ -1125,16 +1125,16 @@ define hidden noundef ptr @_ZN6IfNode17filtered_int_typeEP8PhaseGVNP4NodeS3_(ptr %spec.select62 = tail call i32 @llvm.sadd.sat.i32(i32 %55, i32 1) %119 = load ptr, ptr @_ZN7TypeInt3INTE, align 8 %120 = getelementptr inbounds nuw i8, ptr %119, i64 28 - %121 = load i32, ptr %120, align 4 + %120 = load i32, ptr %120, align 4 br label %126 -122: ; preds = %53 +122:; preds = %53 %123 = load ptr, ptr @_ZN7TypeInt3INTE, align 8 %124 = getelementptr inbounds nuw i8, ptr %123, i64 28 - %125 = load i32, ptr %124, align 4 + %124 = load i32, ptr %124, align 4 br label %126 -126: ; preds = %109, %53, %122, %118, %114 +126:; preds = %109, %53, %122, %118, %114 %.045 = phi i32 [ %57, %53 ], [ %57, %114 ], [ %121, %118 ], [ %125, %122 ], [ %spec.select, %109 ] %.044 = phi i32 [ %55, %53 ], [ %117, %114 ], [ %spec.select62, %118 ], [ %55, %122 ], [ %112, %109 ] %127 = getelementptr inbounds nuw i8, ptr %49, i64 20 @@ -1143,7 +1143,7 @@ define hidden noundef ptr @_ZN6IfNode17filtered_int_typeEP8PhaseGVNP4NodeS3_(ptr %130 = tail call noundef ptr @_ZN7TypeInt4makeEiii(i32 noundef %.044, i32 noundef %.045, i32 noundef %129) #9 br label %131 -131: ; preds = %3, %7, %22, %27, %38, %32, %17, %12, %53, %66, %78, %83, %99, %126, %103, %91 +131:; preds = %3, %7, %22, %27, %38, %32, %17, %12, %53, %66, %78, %83, %99, %126, %103, %91 %.0 = phi ptr [ %130, %126 ], [ %98, %91 ], [ %108, %103 ], [ null, %99 ], [ null, %83 ], [ null, %78 ], [ null, %66 ], [ %49, %53 ], [ null, %12 ], [ null, %17 ], [ null, %32 ], [ null, %38 ], [ null, %27 ], [ null, %22 ], [ null, %7 ], [ null, %3 ] ret ptr %.0 } diff --git a/bench/openjdk/optimized/imageioJPEG.ll b/bench/openjdk/optimized/imageioJPEG.ll index fcfd1c73c8c..92ea2d8dd13 100644 --- a/bench/openjdk/optimized/imageioJPEG.ll +++ b/bench/openjdk/optimized/imageioJPEG.ll @@ -2998,7 +2998,7 @@ define zeroext i8 @Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_readImage(p 26: ; preds = %20 call void @JNU_ThrowByName(ptr noundef %0, ptr noundef nonnull @.str.25, ptr noundef nonnull @.str.26) #13 - br label %369 + br label %370 27: ; preds = %20 %28 = icmp eq ptr %4, null @@ -3008,7 +3008,7 @@ define zeroext i8 @Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_readImage(p 30: ; preds = %27 call void @JNU_ThrowNullPointerException(ptr noundef %0, ptr noundef null) #13 - br label %369 + br label %370 31: ; preds = %27 %32 = load ptr, ptr %24, align 8 @@ -3054,7 +3054,7 @@ define zeroext i8 @Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_readImage(p 54: ; preds = %48, %45, %40, %35, %31 call void @JNU_ThrowByName(ptr noundef %0, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.28) #13 - br label %369 + br label %370 55: ; preds = %48 %spec.select = call i32 @llvm.umin.i32(i32 %12, i32 %37) @@ -3078,7 +3078,7 @@ define zeroext i8 @Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_readImage(p %66 = load ptr, ptr %65, align 8 call void %66(ptr noundef nonnull %0) #13 call void @JNU_ThrowByName(ptr noundef nonnull %0, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.29) #13 - br label %369 + br label %370 .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ] @@ -3109,7 +3109,7 @@ define zeroext i8 @Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_readImage(p 80: ; preds = %._crit_edge %81 = getelementptr inbounds nuw i8, ptr %74, i64 96 %82 = load i8, ptr %81, align 8 - br label %369 + br label %370 83: ; preds = %._crit_edge %84 = load ptr, ptr %32, align 8 @@ -3148,7 +3148,7 @@ define zeroext i8 @Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_readImage(p 100: ; preds = %99, %97 %101 = getelementptr inbounds nuw i8, ptr %74, i64 96 %102 = load i8, ptr %101, align 8 - br label %369 + br label %370 103: ; preds = %83 %104 = call fastcc i32 @GET_ARRAYS(ptr noundef nonnull %0, ptr noundef nonnull %74, ptr noundef %76) @@ -3163,7 +3163,7 @@ define zeroext i8 @Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_readImage(p call void @JNU_ThrowByName(ptr noundef nonnull %0, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.27) #13 %110 = getelementptr inbounds nuw i8, ptr %74, i64 96 %111 = load i8, ptr %110, align 8 - br label %369 + br label %370 112: ; preds = %103 %.not331 = icmp eq ptr %14, null @@ -3196,7 +3196,7 @@ define zeroext i8 @Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_readImage(p 124: ; preds = %123, %119, %118 %125 = call i32 @jHasMultScn(ptr noundef nonnull %32) #13 %126 = icmp ne i32 %125, 0 - br i1 %126, label %127, label %131 + br i1 %126, label %127, label %132 127: ; preds = %124 %128 = getelementptr inbounds nuw i8, ptr %32, i64 88 @@ -3205,365 +3205,365 @@ define zeroext i8 @Java_com_sun_imageio_plugins_jpeg_JPEGImageReader_readImage(p %130 = getelementptr inbounds nuw i8, ptr %32, i64 172 store i32 %129, ptr %130, align 4 %spec.select357 = call i32 @llvm.sadd.sat.i32(i32 %18, i32 1) - br label %131 + br label %132 -131: ; preds = %127, %124 +132: ; preds = %127, %124 %.0295 = phi i32 [ %18, %124 ], [ %spec.select357, %127 ] - %132 = getelementptr inbounds nuw i8, ptr %74, i64 56 - store i32 0, ptr %132, align 8 - %133 = call i32 @jStrtDecompress(ptr noundef nonnull %32) #13 - %134 = getelementptr inbounds nuw i8, ptr %32, i64 148 - %135 = load i32, ptr %134, align 4 - %.not334 = icmp eq i32 %5, %135 - br i1 %.not334, label %140, label %136 - -136: ; preds = %131 - %137 = load ptr, ptr %76, align 8 - call fastcc void @RELEASE_ARRAYS(ptr noundef nonnull %0, ptr noundef nonnull %74, ptr noundef %137) + %133 = getelementptr inbounds nuw i8, ptr %74, i64 56 + store i32 0, ptr %133, align 8 + %134 = call i32 @jStrtDecompress(ptr noundef nonnull %32) #13 + %135 = getelementptr inbounds nuw i8, ptr %32, i64 148 + %136 = load i32, ptr %135, align 4 + %.not334 = icmp eq i32 %5, %136 + br i1 %.not334, label %141, label %137 + +137: ; preds = %132 + %138 = load ptr, ptr %76, align 8 + call fastcc void @RELEASE_ARRAYS(ptr noundef nonnull %0, ptr noundef nonnull %74, ptr noundef %138) call void @JNU_ThrowByName(ptr noundef nonnull %0, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.28) #13 - %138 = getelementptr inbounds nuw i8, ptr %74, i64 96 - %139 = load i8, ptr %138, align 8 - br label %369 + %139 = getelementptr inbounds nuw i8, ptr %74, i64 96 + %140 = load i8, ptr %139, align 8 + br label %370 -140: ; preds = %131 - %141 = load i32, ptr %36, align 8 - %mul = call { i32, i1 } @llvm.umul.with.overflow.i32(i32 %5, i32 %141) +141: ; preds = %132 + %142 = load i32, ptr %36, align 8 + %mul = call { i32, i1 } @llvm.umul.with.overflow.i32(i32 %5, i32 %142) %mul.ov = extractvalue { i32, i1 } %mul, 1 - br i1 %mul.ov, label %142, label %146 + br i1 %mul.ov, label %143, label %147 -142: ; preds = %140 - %143 = load ptr, ptr %76, align 8 - call fastcc void @RELEASE_ARRAYS(ptr noundef nonnull %0, ptr noundef nonnull %74, ptr noundef %143) +143: ; preds = %141 + %144 = load ptr, ptr %76, align 8 + call fastcc void @RELEASE_ARRAYS(ptr noundef nonnull %0, ptr noundef nonnull %74, ptr noundef %144) call void @JNU_ThrowByName(ptr noundef nonnull %0, ptr noundef nonnull @.str.24, ptr noundef nonnull @.str.30) #13 - %144 = getelementptr inbounds nuw i8, ptr %74, i64 96 - %145 = load i8, ptr %144, align 8 - br label %369 - -146: ; preds = %140 - %147 = mul i32 %141, %5 - %148 = zext i32 %147 to i64 - %149 = call noalias ptr @malloc(i64 noundef %148) #14 - store ptr %149, ptr %21, align 8 - %150 = icmp eq ptr %149, null - %151 = getelementptr inbounds nuw i8, ptr %74, i64 96 - br i1 %150, label %163, label %.preheader364 - -.preheader364: ; preds = %146 + %145 = getelementptr inbounds nuw i8, ptr %74, i64 96 + %146 = load i8, ptr %145, align 8 + br label %370 + +147: ; preds = %141 + %148 = mul i32 %142, %5 + %149 = zext i32 %148 to i64 + %150 = call noalias ptr @malloc(i64 noundef %149) #14 + store ptr %150, ptr %21, align 8 + %151 = icmp eq ptr %150, null + %152 = getelementptr inbounds nuw i8, ptr %74, i64 96 + br i1 %151, label %164, label %.preheader364 + +.preheader364: ; preds = %147 %.not337 = icmp eq i8 %19, 0 - %152 = getelementptr inbounds nuw i8, ptr %32, i64 172 - %153 = getelementptr inbounds nuw i8, ptr %32, i64 168 - %154 = add nuw nsw i32 %11, %9 - %155 = add nuw nsw i32 %10, %8 - %156 = getelementptr inbounds nuw i8, ptr %74, i64 88 - %157 = zext nneg i32 %5 to i64 - %158 = getelementptr inbounds nuw i8, ptr %74, i64 80 - %159 = getelementptr inbounds nuw i8, ptr %74, i64 32 - %160 = getelementptr inbounds nuw i8, ptr %74, i64 40 - %161 = getelementptr inbounds nuw i8, ptr %74, i64 24 - %162 = add nsw i32 %.0294, -1 - br label %166 - -163: ; preds = %146 - %164 = load ptr, ptr %76, align 8 - call fastcc void @RELEASE_ARRAYS(ptr noundef nonnull %0, ptr noundef nonnull %74, ptr noundef %164) + %153 = getelementptr inbounds nuw i8, ptr %32, i64 172 + %154 = getelementptr inbounds nuw i8, ptr %32, i64 168 + %155 = add nuw nsw i32 %11, %9 + %156 = add nuw nsw i32 %10, %8 + %157 = getelementptr inbounds nuw i8, ptr %74, i64 88 + %158 = zext nneg i32 %5 to i64 + %159 = getelementptr inbounds nuw i8, ptr %74, i64 80 + %160 = getelementptr inbounds nuw i8, ptr %74, i64 32 + %161 = getelementptr inbounds nuw i8, ptr %74, i64 40 + %162 = getelementptr inbounds nuw i8, ptr %74, i64 24 + %163 = add nsw i32 %.0294, -1 + br label %167 + +164: ; preds = %147 + %165 = load ptr, ptr %76, align 8 + call fastcc void @RELEASE_ARRAYS(ptr noundef nonnull %0, ptr noundef nonnull %74, ptr noundef %165) call void @JNU_ThrowByName(ptr noundef nonnull %0, ptr noundef nonnull @.str.22, ptr noundef nonnull @.str.31) #13 - %165 = load i8, ptr %151, align 8 - br label %369 - -166: ; preds = %.preheader364, %340 - br i1 %126, label %167, label %184 - -167: ; preds = %166 - %168 = load i32, ptr %152, align 4 - %169 = call i32 @jStrtOutput(ptr noundef nonnull %32, i32 noundef %168) #13 - br i1 %.not337, label %199, label %170 - -170: ; preds = %167 - %171 = load ptr, ptr %76, align 8 - call fastcc void @RELEASE_ARRAYS(ptr noundef nonnull %0, ptr noundef nonnull %74, ptr noundef %171) - %172 = load ptr, ptr %0, align 8 - %173 = getelementptr inbounds nuw i8, ptr %172, i64 488 - %174 = load ptr, ptr %173, align 8 - %175 = load ptr, ptr @JPEGImageReader_passStartedID, align 8 - %176 = load i32, ptr %152, align 4 - %177 = add nsw i32 %176, -1 - call void (ptr, ptr, ptr, ...) %174(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %175, i32 noundef %177) #13 - %178 = load ptr, ptr %0, align 8 - %179 = getelementptr inbounds nuw i8, ptr %178, i64 120 - %180 = load ptr, ptr %179, align 8 - %181 = call ptr %180(ptr noundef nonnull %0) #13 - %.not341 = icmp eq ptr %181, null - br i1 %.not341, label %182, label %.sink.split - -182: ; preds = %170 - %183 = call fastcc i32 @GET_ARRAYS(ptr noundef nonnull %0, ptr noundef nonnull %74, ptr noundef nonnull %76) - %.not342 = icmp eq i32 %183, 0 - br i1 %.not342, label %.sink.split, label %199 - -184: ; preds = %166 - br i1 %.not337, label %199, label %185 - -185: ; preds = %184 - %186 = load ptr, ptr %76, align 8 - call fastcc void @RELEASE_ARRAYS(ptr noundef nonnull %0, ptr noundef nonnull %74, ptr noundef %186) - %187 = load ptr, ptr %0, align 8 - %188 = getelementptr inbounds nuw i8, ptr %187, i64 488 - %189 = load ptr, ptr %188, align 8 - %190 = load ptr, ptr @JPEGImageReader_passStartedID, align 8 - call void (ptr, ptr, ptr, ...) %189(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %190, i32 noundef 0) #13 - %191 = load ptr, ptr %0, align 8 - %192 = getelementptr inbounds nuw i8, ptr %191, i64 120 - %193 = load ptr, ptr %192, align 8 - %194 = call ptr %193(ptr noundef nonnull %0) #13 - %.not338 = icmp eq ptr %194, null - br i1 %.not338, label %195, label %.sink.split - -195: ; preds = %185 - %196 = call fastcc i32 @GET_ARRAYS(ptr noundef nonnull %0, ptr noundef nonnull %74, ptr noundef nonnull %76) - %.not339 = icmp eq i32 %196, 0 - br i1 %.not339, label %.sink.split, label %199 - -.sink.split: ; preds = %185, %195, %170, %182 - %197 = load ptr, ptr %32, align 8 - %198 = load ptr, ptr %197, align 8 + %166 = load i8, ptr %152, align 8 + br label %370 + +167: ; preds = %.preheader364, %340 + br i1 %126, label %168, label %185 + +168: ; preds = %167 + %169 = load i32, ptr %153, align 4 + %170 = call i32 @jStrtOutput(ptr noundef nonnull %32, i32 noundef %169) #13 + br i1 %.not337, label %200, label %171 + +171: ; preds = %168 + %172 = load ptr, ptr %76, align 8 + call fastcc void @RELEASE_ARRAYS(ptr noundef nonnull %0, ptr noundef nonnull %74, ptr noundef %172) + %173 = load ptr, ptr %0, align 8 + %174 = getelementptr inbounds nuw i8, ptr %173, i64 488 + %175 = load ptr, ptr %174, align 8 + %176 = load ptr, ptr @JPEGImageReader_passStartedID, align 8 + %177 = load i32, ptr %153, align 4 + %178 = add nsw i32 %177, -1 + call void (ptr, ptr, ptr, ...) %174(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %176, i32 noundef %178) #13 + %179 = load ptr, ptr %0, align 8 + %180 = getelementptr inbounds nuw i8, ptr %179, i64 120 + %181 = load ptr, ptr %180, align 8 + %182 = call ptr %180(ptr noundef nonnull %0) #13 + %.not341 = icmp eq ptr %182, null + br i1 %.not341, label %183, label %.sink.split + +183: ; preds = %171 + %184 = call fastcc i32 @GET_ARRAYS(ptr noundef nonnull %0, ptr noundef nonnull %74, ptr noundef nonnull %76) + %.not342 = icmp eq i32 %184, 0 + br i1 %.not342, label %.sink.split, label %200 + +185: ; preds = %167 + br i1 %.not337, label %200, label %186 + +186: ; preds = %185 + %187 = load ptr, ptr %76, align 8 + call fastcc void @RELEASE_ARRAYS(ptr noundef nonnull %0, ptr noundef nonnull %74, ptr noundef %187) + %188 = load ptr, ptr %0, align 8 + %189 = getelementptr inbounds nuw i8, ptr %188, i64 488 + %190 = load ptr, ptr %189, align 8 + %191 = load ptr, ptr @JPEGImageReader_passStartedID, align 8 + call void (ptr, ptr, ptr, ...) %189(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %191, i32 noundef 0) #13 + %192 = load ptr, ptr %0, align 8 + %193 = getelementptr inbounds nuw i8, ptr %192, i64 120 + %194 = load ptr, ptr %193, align 8 + %195 = call ptr %193(ptr noundef nonnull %0) #13 + %.not338 = icmp eq ptr %195, null + br i1 %.not338, label %196, label %.sink.split + +196: ; preds = %186 + %197 = call fastcc i32 @GET_ARRAYS(ptr noundef nonnull %0, ptr noundef nonnull %74, ptr noundef nonnull %76) + %.not339 = icmp eq i32 %197, 0 + br i1 %.not339, label %.sink.split, label %200 + +.sink.split: ; preds = %186, %196, %171, %183 + %198 = load ptr, ptr %32, align 8 + %199 = load ptr, ptr %198, align 8 call void %198(ptr noundef nonnull %32) #13 - br label %199 + br label %200 -199: ; preds = %.sink.split, %184, %195, %167, %182 - %200 = load i8, ptr %151, align 8 - %201 = icmp eq i8 %200, 0 - br i1 %201, label %.lr.ph369, label %.critedge19 +200: ; preds = %.sink.split, %185, %196, %168, %183 + %201 = load i8, ptr %152, align 8 + %202 = icmp eq i8 %201, 0 + br i1 %202, label %.lr.ph369, label %.critedge19 -.lr.ph369: ; preds = %199, %203 - %202 = load i32, ptr %153, align 8 - %.not431 = icmp slt i32 %202, %9 - br i1 %.not431, label %203, label %.lr.ph385 +.lr.ph369: ; preds = %200, %204 + %203 = load i32, ptr %154, align 8 + %.not431 = icmp slt i32 %203, %9 + br i1 %.not431, label %204, label %.lr.ph385 -203: ; preds = %.lr.ph369 - %204 = call i32 @jReadScanlines(ptr noundef nonnull %32, ptr noundef nonnull %21, i32 noundef 1) #13 - %205 = load i8, ptr %151, align 8 - %206 = icmp eq i8 %205, 0 - br i1 %206, label %.lr.ph369, label %.critedge19, !llvm.loop !11 +204: ; preds = %.lr.ph369 + %205 = call i32 @jReadScanlines(ptr noundef nonnull %32, ptr noundef nonnull %21, i32 noundef 1) #13 + %206 = load i8, ptr %152, align 8 + %207 = icmp eq i8 %206, 0 + br i1 %207, label %.lr.ph369, label %.critedge19, !llvm.loop !11 .lr.ph385: ; preds = %.lr.ph369 - %207 = load ptr, ptr %21, align 8 - %208 = load i32, ptr %134, align 4 - %209 = mul nsw i32 %208, %155 - %210 = sext i32 %209 to i64 - %211 = getelementptr inbounds i8, ptr %207, i64 %210 - %212 = mul nsw i32 %208, %spec.select - %213 = icmp eq i32 %212, %5 - %or.cond358 = select i1 %narrow, i1 %213, i1 false - %214 = sext i32 %212 to i64 - %215 = ptrtoint ptr %211 to i64 - br label %218 + %208 = load ptr, ptr %21, align 8 + %209 = load i32, ptr %135, align 4 + %210 = mul nsw i32 %209, %156 + %211 = sext i32 %210 to i64 + %212 = getelementptr inbounds i8, ptr %208, i64 %211 + %213 = mul nsw i32 %209, %spec.select + %214 = icmp eq i32 %213, %5 + %or.cond358 = select i1 %narrow, i1 %214, i1 false + %215 = sext i32 %213 to i64 + %216 = ptrtoint ptr %212 to i64 + br label %219 .loopexit: ; preds = %.lr.ph383, %GET_ARRAYS.exit - %216 = load i8, ptr %151, align 8 - %217 = icmp eq i8 %216, 0 - br i1 %217, label %218, label %.critedge19, !llvm.loop !12 - -218: ; preds = %.lr.ph385, %.loopexit - %.0297384 = phi i32 [ 0, %.lr.ph385 ], [ %269, %.loopexit ] - %219 = load i32, ptr %153, align 8 - %220 = icmp slt i32 %219, %154 - br i1 %220, label %221, label %.critedge19 - -221: ; preds = %218 - %222 = call i32 @jReadScanlines(ptr noundef nonnull %32, ptr noundef nonnull %21, i32 noundef 1) #13 - %223 = load ptr, ptr %156, align 8 - %224 = load ptr, ptr %21, align 8 - %225 = load i32, ptr %134, align 4 - %226 = mul nsw i32 %225, %8 - %227 = sext i32 %226 to i64 - %228 = getelementptr inbounds i8, ptr %224, i64 %227 - %229 = icmp ugt ptr %211, %228 - br i1 %or.cond358, label %230, label %236 - -230: ; preds = %221 - br i1 %229, label %231, label %.critedge21 - -231: ; preds = %230 - %232 = ptrtoint ptr %228 to i64 - %233 = sub i64 %215, %232 - %234 = load i32, ptr %158, align 8 - %235 = zext i32 %234 to i64 - %spec.select359 = call i64 @llvm.umin.i64(i64 %233, i64 %235) - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %223, ptr align 1 %228, i64 %spec.select359, i1 false) + %217 = load i8, ptr %152, align 8 + %218 = icmp eq i8 %217, 0 + br i1 %218, label %219, label %.critedge19, !llvm.loop !12 + +219: ; preds = %.lr.ph385, %.loopexit + %.0297384 = phi i32 [ 0, %.lr.ph385 ], [ %270, %.loopexit ] + %220 = load i32, ptr %154, align 8 + %221 = icmp slt i32 %220, %155 + br i1 %221, label %222, label %.critedge19 + +222: ; preds = %219 + %223 = call i32 @jReadScanlines(ptr noundef nonnull %32, ptr noundef nonnull %21, i32 noundef 1) #13 + %224 = load ptr, ptr %157, align 8 + %225 = load ptr, ptr %21, align 8 + %226 = load i32, ptr %135, align 4 + %227 = mul nsw i32 %226, %8 + %228 = sext i32 %227 to i64 + %229 = getelementptr inbounds i8, ptr %225, i64 %228 + %230 = icmp ugt ptr %212, %229 + br i1 %or.cond358, label %231, label %237 + +231: ; preds = %222 + br i1 %230, label %232, label %.critedge21 + +232: ; preds = %231 + %233 = ptrtoint ptr %229 to i64 + %234 = sub i64 %216, %233 + %235 = load i32, ptr %159, align 8 + %236 = zext i32 %235 to i64 + %spec.select359 = call i64 @llvm.umin.i64(i64 %234, i64 %236) + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %224, ptr align 1 %229, i64 %spec.select359, i1 false) br label %.critedge21 -236: ; preds = %221 - br i1 %229, label %.lr.ph380.split.us, label %.critedge21 +237: ; preds = %222 + br i1 %230, label %.lr.ph380.split.us, label %.critedge21 -.lr.ph380.split.us: ; preds = %236, %._crit_edge374.us - %.1378.us = phi i64 [ %245, %._crit_edge374.us ], [ %157, %236 ] - %.0300377.us = phi ptr [ %244, %._crit_edge374.us ], [ %223, %236 ] - %.0302376.us = phi ptr [ %246, %._crit_edge374.us ], [ %228, %236 ] - %237 = load i32, ptr %158, align 8 - %238 = zext i32 %237 to i64 - %.not348.us = icmp samesign ugt i64 %.1378.us, %238 +.lr.ph380.split.us: ; preds = %237, %._crit_edge374.us + %.1378.us = phi i64 [ %246, %._crit_edge374.us ], [ %158, %236 ] + %.0300377.us = phi ptr [ %245, %._crit_edge374.us ], [ %224, %236 ] + %.0302376.us = phi ptr [ %247, %._crit_edge374.us ], [ %229, %236 ] + %238 = load i32, ptr %159, align 8 + %239 = zext i32 %238 to i64 + %.not348.us = icmp samesign ugt i64 %.1378.us, %239 br i1 %.not348.us, label %.critedge21, label %.preheader.us .preheader.us: ; preds = %.lr.ph380.split.us, %.preheader.us %indvars.iv392 = phi i64 [ %indvars.iv.next393, %.preheader.us ], [ 0, %.lr.ph380.split.us ] - %.1301371.us = phi ptr [ %244, %.preheader.us ], [ %.0300377.us, %.lr.ph380.split.us ] - %239 = getelementptr inbounds nuw i32, ptr %22, i64 %indvars.iv392 - %240 = load i32, ptr %239, align 4 - %241 = sext i32 %240 to i64 - %242 = getelementptr inbounds i8, ptr %.0302376.us, i64 %241 - %243 = load i8, ptr %242, align 1 - %244 = getelementptr inbounds nuw i8, ptr %.1301371.us, i64 1 - store i8 %243, ptr %.1301371.us, align 1 + %.1301371.us = phi ptr [ %245, %.preheader.us ], [ %.0300377.us, %.lr.ph380.split.us ] + %240 = getelementptr inbounds nuw i32, ptr %22, i64 %indvars.iv392 + %241 = load i32, ptr %240, align 4 + %242 = sext i32 %241 to i64 + %243 = getelementptr inbounds i8, ptr %.0302376.us, i64 %242 + %244 = load i8, ptr %243, align 1 + %245 = getelementptr inbounds nuw i8, ptr %.1301371.us, i64 1 + store i8 %244, ptr %.1301371.us, align 1 %indvars.iv.next393 = add nuw nsw i64 %indvars.iv392, 1 - %exitcond396.not = icmp eq i64 %indvars.iv.next393, %157 + %exitcond396.not = icmp eq i64 %indvars.iv.next393, %158 br i1 %exitcond396.not, label %._crit_edge374.us, label %.preheader.us, !llvm.loop !13 ._crit_edge374.us: ; preds = %.preheader.us - %245 = add nuw nsw i64 %.1378.us, %157 - %246 = getelementptr inbounds i8, ptr %.0302376.us, i64 %214 - %247 = icmp ult ptr %246, %211 - br i1 %247, label %.lr.ph380.split.us, label %.critedge21, !llvm.loop !14 - -.critedge21: ; preds = %._crit_edge374.us, %.lr.ph380.split.us, %236, %230, %231 - %248 = load ptr, ptr %159, align 8 - %.not.i.i = icmp eq ptr %248, null - br i1 %.not.i.i, label %unpinStreamBuffer.exit.i, label %249 - -249: ; preds = %.critedge21 - %250 = load ptr, ptr %76, align 8 - %251 = icmp eq ptr %250, null - %252 = ptrtoint ptr %250 to i64 - %253 = ptrtoint ptr %248 to i64 - %254 = sub i64 %252, %253 - %.sink.i.i = select i1 %251, i64 -1, i64 %254 - store i64 %.sink.i.i, ptr %160, align 8 - %255 = load ptr, ptr %0, align 8 - %256 = getelementptr inbounds nuw i8, ptr %255, i64 1784 - %257 = load ptr, ptr %256, align 8 - %258 = load ptr, ptr %161, align 8 - call void %257(ptr noundef nonnull %0, ptr noundef %258, ptr noundef nonnull %248, i32 noundef 0) #13 - store ptr null, ptr %159, align 8 + %246 = add nuw nsw i64 %.1378.us, %158 + %247 = getelementptr inbounds i8, ptr %.0302376.us, i64 %215 + %248 = icmp ult ptr %247, %212 + br i1 %248, label %.lr.ph380.split.us, label %.critedge21, !llvm.loop !14 + +.critedge21: ; preds = %._crit_edge374.us, %.lr.ph380.split.us, %237, %231, %232 + %249 = load ptr, ptr %160, align 8 + %.not.i.i = icmp eq ptr %249, null + br i1 %.not.i.i, label %unpinStreamBuffer.exit.i, label %250 + +250: ; preds = %.critedge21 + %251 = load ptr, ptr %76, align 8 + %252 = icmp eq ptr %251, null + %253 = ptrtoint ptr %251 to i64 + %254 = ptrtoint ptr %249 to i64 + %255 = sub i64 %253, %254 + %.sink.i.i = select i1 %252, i64 -1, i64 %255 + store i64 %.sink.i.i, ptr %161, align 8 + %256 = load ptr, ptr %0, align 8 + %257 = getelementptr inbounds nuw i8, ptr %256, i64 1784 + %258 = load ptr, ptr %257, align 8 + %259 = load ptr, ptr %162, align 8 + call void %257(ptr noundef nonnull %0, ptr noundef %259, ptr noundef nonnull %249, i32 noundef 0) #13 + store ptr null, ptr %160, align 8 br label %unpinStreamBuffer.exit.i -unpinStreamBuffer.exit.i: ; preds = %249, %.critedge21 - %259 = load ptr, ptr %156, align 8 - %.not.i5.i = icmp eq ptr %259, null - br i1 %.not.i5.i, label %RELEASE_ARRAYS.exit, label %260 - -260: ; preds = %unpinStreamBuffer.exit.i - %261 = load ptr, ptr %0, align 8 - %262 = getelementptr inbounds nuw i8, ptr %261, i64 1784 - %263 = load ptr, ptr %262, align 8 - %264 = load ptr, ptr %77, align 8 - call void %263(ptr noundef nonnull %0, ptr noundef %264, ptr noundef nonnull %259, i32 noundef 0) #13 - store ptr null, ptr %156, align 8 +unpinStreamBuffer.exit.i: ; preds = %250, %.critedge21 + %260 = load ptr, ptr %157, align 8 + %.not.i5.i = icmp eq ptr %260, null + br i1 %.not.i5.i, label %RELEASE_ARRAYS.exit, label %261 + +261: ; preds = %unpinStreamBuffer.exit.i + %262 = load ptr, ptr %0, align 8 + %263 = getelementptr inbounds nuw i8, ptr %262, i64 1784 + %264 = load ptr, ptr %263, align 8 + %265 = load ptr, ptr %77, align 8 + call void %263(ptr noundef nonnull %0, ptr noundef %265, ptr noundef nonnull %260, i32 noundef 0) #13 + store ptr null, ptr %157, align 8 br label %RELEASE_ARRAYS.exit -RELEASE_ARRAYS.exit: ; preds = %unpinStreamBuffer.exit.i, %260 - %265 = load ptr, ptr %0, align 8 - %266 = getelementptr inbounds nuw i8, ptr %265, i64 488 - %267 = load ptr, ptr %266, align 8 - %268 = load ptr, ptr @JPEGImageReader_acceptPixelsID, align 8 - %269 = add nuw nsw i32 %.0297384, 1 - call void (ptr, ptr, ptr, ...) %267(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %268, i32 noundef %.0297384, i32 noundef %125) #13 - %270 = load ptr, ptr %0, align 8 - %271 = getelementptr inbounds nuw i8, ptr %270, i64 120 - %272 = load ptr, ptr %271, align 8 - %273 = call ptr %272(ptr noundef nonnull %0) #13 - %.not349 = icmp eq ptr %273, null - br i1 %.not349, label %274, label %GET_ARRAYS.exit.thread - -274: ; preds = %RELEASE_ARRAYS.exit - %275 = load ptr, ptr %161, align 8 - %.not.i.i361 = icmp eq ptr %275, null - br i1 %.not.i.i361, label %286, label %276 - -276: ; preds = %274 - %277 = load ptr, ptr %0, align 8 - %278 = getelementptr inbounds nuw i8, ptr %277, i64 1776 - %279 = load ptr, ptr %278, align 8 - %280 = call ptr %279(ptr noundef nonnull %0, ptr noundef nonnull %275, ptr noundef null) #13 - store ptr %280, ptr %159, align 8 - %281 = icmp eq ptr %280, null - br i1 %281, label %GET_ARRAYS.exit.thread, label %282 - -282: ; preds = %276 - %283 = load i64, ptr %160, align 8 - %.not13.i.i = icmp eq i64 %283, -1 - br i1 %.not13.i.i, label %286, label %284 - -284: ; preds = %282 - %285 = getelementptr inbounds i8, ptr %280, i64 %283 - store ptr %285, ptr %76, align 8 - br label %286 - -286: ; preds = %284, %282, %274 - %287 = load ptr, ptr %77, align 8 - %.not.i8.i = icmp eq ptr %287, null - br i1 %.not.i8.i, label %GET_ARRAYS.exit, label %288 - -288: ; preds = %286 - %289 = load ptr, ptr %0, align 8 - %290 = getelementptr inbounds nuw i8, ptr %289, i64 1776 - %291 = load ptr, ptr %290, align 8 - %292 = call ptr %291(ptr noundef nonnull %0, ptr noundef nonnull %287, ptr noundef null) #13 - store ptr %292, ptr %156, align 8 - %293 = icmp eq ptr %292, null - br i1 %293, label %294, label %GET_ARRAYS.exit - -294: ; preds = %288 - %295 = load ptr, ptr %159, align 8 - %.not.i.i.i = icmp eq ptr %295, null +RELEASE_ARRAYS.exit: ; preds = %unpinStreamBuffer.exit.i, %261 + %266 = load ptr, ptr %0, align 8 + %267 = getelementptr inbounds nuw i8, ptr %266, i64 488 + %268 = load ptr, ptr %267, align 8 + %269 = load ptr, ptr @JPEGImageReader_acceptPixelsID, align 8 + %270 = add nuw nsw i32 %.0297384, 1 + call void (ptr, ptr, ptr, ...) %267(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %269, i32 noundef %.0297384, i32 noundef %125) #13 + %271 = load ptr, ptr %0, align 8 + %272 = getelementptr inbounds nuw i8, ptr %271, i64 120 + %273 = load ptr, ptr %272, align 8 + %274 = call ptr %272(ptr noundef nonnull %0) #13 + %.not349 = icmp eq ptr %274, null + br i1 %.not349, label %275, label %GET_ARRAYS.exit.thread + +275: ; preds = %RELEASE_ARRAYS.exit + %276 = load ptr, ptr %162, align 8 + %.not.i.i361 = icmp eq ptr %276, null + br i1 %.not.i.i361, label %287, label %277 + +277: ; preds = %275 + %278 = load ptr, ptr %0, align 8 + %279 = getelementptr inbounds nuw i8, ptr %278, i64 1776 + %280 = load ptr, ptr %279, align 8 + %281 = call ptr %279(ptr noundef nonnull %0, ptr noundef nonnull %276, ptr noundef null) #13 + store ptr %281, ptr %160, align 8 + %282 = icmp eq ptr %281, null + br i1 %282, label %GET_ARRAYS.exit.thread, label %283 + +283: ; preds = %277 + %284 = load i64, ptr %161, align 8 + %.not13.i.i = icmp eq i64 %284, -1 + br i1 %.not13.i.i, label %287, label %285 + +285: ; preds = %283 + %286 = getelementptr inbounds i8, ptr %281, i64 %284 + store ptr %286, ptr %76, align 8 + br label %287 + +287: ; preds = %285, %283, %275 + %288 = load ptr, ptr %77, align 8 + %.not.i8.i = icmp eq ptr %288, null + br i1 %.not.i8.i, label %GET_ARRAYS.exit, label %289 + +289: ; preds = %287 + %290 = load ptr, ptr %0, align 8 + %291 = getelementptr inbounds nuw i8, ptr %290, i64 1776 + %292 = load ptr, ptr %291, align 8 + %293 = call ptr %291(ptr noundef nonnull %0, ptr noundef nonnull %288, ptr noundef null) #13 + store ptr %293, ptr %157, align 8 + %294 = icmp eq ptr %293, null + br i1 %294, label %295, label %GET_ARRAYS.exit + +295: ; preds = %289 + %296 = load ptr, ptr %160, align 8 + %.not.i.i.i = icmp eq ptr %296, null br i1 %.not.i.i.i, label %GET_ARRAYS.exit.thread, label %unpinStreamBuffer.exit.i.i -unpinStreamBuffer.exit.i.i: ; preds = %294 - %296 = load ptr, ptr %76, align 8 - %297 = icmp eq ptr %296, null - %298 = ptrtoint ptr %296 to i64 - %299 = ptrtoint ptr %295 to i64 - %300 = sub i64 %298, %299 - %.sink.i.i.i = select i1 %297, i64 -1, i64 %300 - store i64 %.sink.i.i.i, ptr %160, align 8 - %301 = load ptr, ptr %0, align 8 - %302 = getelementptr inbounds nuw i8, ptr %301, i64 1784 - %303 = load ptr, ptr %302, align 8 - %304 = load ptr, ptr %161, align 8 - call void %303(ptr noundef nonnull %0, ptr noundef %304, ptr noundef nonnull %295, i32 noundef 0) #13 - store ptr null, ptr %159, align 8 - %.pre.i = load ptr, ptr %156, align 8 +unpinStreamBuffer.exit.i.i: ; preds = %295 + %297 = load ptr, ptr %76, align 8 + %298 = icmp eq ptr %297, null + %299 = ptrtoint ptr %297 to i64 + %300 = ptrtoint ptr %296 to i64 + %301 = sub i64 %299, %300 + %.sink.i.i.i = select i1 %298, i64 -1, i64 %301 + store i64 %.sink.i.i.i, ptr %161, align 8 + %302 = load ptr, ptr %0, align 8 + %303 = getelementptr inbounds nuw i8, ptr %302, i64 1784 + %304 = load ptr, ptr %303, align 8 + %305 = load ptr, ptr %162, align 8 + call void %303(ptr noundef nonnull %0, ptr noundef %305, ptr noundef nonnull %296, i32 noundef 0) #13 + store ptr null, ptr %160, align 8 + %.pre.i = load ptr, ptr %157, align 8 %.not.i5.i.i = icmp eq ptr %.pre.i, null - br i1 %.not.i5.i.i, label %GET_ARRAYS.exit.thread, label %305 - -305: ; preds = %unpinStreamBuffer.exit.i.i - %306 = load ptr, ptr %0, align 8 - %307 = getelementptr inbounds nuw i8, ptr %306, i64 1784 - %308 = load ptr, ptr %307, align 8 - %309 = load ptr, ptr %77, align 8 - call void %308(ptr noundef nonnull %0, ptr noundef %309, ptr noundef nonnull %.pre.i, i32 noundef 0) #13 - store ptr null, ptr %156, align 8 + br i1 %.not.i5.i.i, label %GET_ARRAYS.exit.thread, label %306 + +306: ; preds = %unpinStreamBuffer.exit.i.i + %307 = load ptr, ptr %0, align 8 + %308 = getelementptr inbounds nuw i8, ptr %307, i64 1784 + %309 = load ptr, ptr %308, align 8 + %310 = load ptr, ptr %77, align 8 + call void %308(ptr noundef nonnull %0, ptr noundef %310, ptr noundef nonnull %.pre.i, i32 noundef 0) #13 + store ptr null, ptr %157, align 8 br label %GET_ARRAYS.exit.thread -GET_ARRAYS.exit.thread: ; preds = %294, %305, %unpinStreamBuffer.exit.i.i, %276, %RELEASE_ARRAYS.exit - %310 = load ptr, ptr %32, align 8 - %311 = load ptr, ptr %310, align 8 +GET_ARRAYS.exit.thread: ; preds = %295, %306, %unpinStreamBuffer.exit.i.i, %277, %RELEASE_ARRAYS.exit + %311 = load ptr, ptr %32, align 8 + %312 = load ptr, ptr %311, align 8 call void %311(ptr noundef nonnull %32) #13 br label %GET_ARRAYS.exit -GET_ARRAYS.exit: ; preds = %288, %286, %GET_ARRAYS.exit.thread - %312 = load i32, ptr %153, align 8 - %313 = sub i32 %154, %312 - %spec.select360 = call i32 @llvm.smin.i32(i32 %162, i32 %313) - %314 = icmp sgt i32 %spec.select360, 0 - br i1 %314, label %.lr.ph383, label %.loopexit +GET_ARRAYS.exit: ; preds = %289, %287, %GET_ARRAYS.exit.thread + %313 = load i32, ptr %154, align 8 + %314 = sub i32 %155, %313 + %spec.select360 = call i32 @llvm.smin.i32(i32 %163, i32 %314) + %315 = icmp sgt i32 %spec.select360, 0 + br i1 %315, label %.lr.ph383, label %.loopexit .lr.ph383: ; preds = %GET_ARRAYS.exit, %.lr.ph383 - %.2382 = phi i32 [ %316, %.lr.ph383 ], [ 0, %GET_ARRAYS.exit ] - %315 = call i32 @jReadScanlines(ptr noundef nonnull %32, ptr noundef nonnull %21, i32 noundef 1) #13 - %316 = add nuw nsw i32 %.2382, 1 - %exitcond397.not = icmp eq i32 %316, %spec.select360 + %.2382 = phi i32 [ %317, %.lr.ph383 ], [ 0, %GET_ARRAYS.exit ] + %316 = call i32 @jReadScanlines(ptr noundef nonnull %32, ptr noundef nonnull %21, i32 noundef 1) #13 + %317 = add nuw nsw i32 %.2382, 1 + %exitcond397.not = icmp eq i32 %317, %spec.select360 br i1 %exitcond397.not, label %.loopexit, label %.lr.ph383, !llvm.loop !15 -.critedge19: ; preds = %203, %218, %.loopexit, %199 +.critedge19: ; preds = %204, %219, %.loopexit, %200 br i1 %126, label %317, label %324 317: ; preds = %.critedge19 @@ -3610,63 +3610,63 @@ GET_ARRAYS.exit: ; preds = %288, %286, %GET_ARR call void %339(ptr noundef nonnull %32) #13 br label %340 -340: ; preds = %335, %337, %324 - br i1 %.not335, label %166, label %341, !llvm.loop !16 +318: ; preds = %335, %337, %324 + br i1 %.not335, label %166, label %321, !llvm.loop !16 -341: ; preds = %340 - %342 = load i32, ptr %153, align 8 +321: ; preds = %318 + %322 = load i32, ptr %153, align 8 %343 = getelementptr inbounds nuw i8, ptr %32, i64 140 %344 = load i32, ptr %343, align 4 %.not336 = icmp eq i32 %342, %344 br i1 %.not336, label %345, label %348 -345: ; preds = %341 +324: ; preds = %321 %346 = load i8, ptr %151, align 8 %347 = icmp eq i8 %346, 1 br i1 %347, label %348, label %349 -348: ; preds = %345, %341 +325: ; preds = %345, %321 call void @jAbrtDecompress(ptr noundef nonnull %32) #13 - br label %365 - -349: ; preds = %345 - %350 = call i32 @jInComplete(ptr noundef nonnull %32) #13 - %351 = icmp eq i32 %350, 0 - %or.cond23 = and i1 %126, %351 - br i1 %or.cond23, label %352, label %363 - -352: ; preds = %349 - %353 = load i32, ptr %152, align 4 - %354 = icmp sgt i32 %353, %.0295 - br i1 %354, label %355, label %363 - -355: ; preds = %352 - %356 = load ptr, ptr %75, align 8 - %357 = getelementptr inbounds nuw i8, ptr %356, i64 48 - %358 = load ptr, ptr %357, align 8 + br label %366 + +350: ; preds = %345 + %351 = call i32 @jInComplete(ptr noundef nonnull %32) #13 + %352 = icmp eq i32 %351, 0 + %or.cond23 = and i1 %126, %352 + br i1 %or.cond23, label %353, label %364 + +353: ; preds = %350 + %354 = load i32, ptr %153, align 4 + %355 = icmp sgt i32 %354, %.0295 + br i1 %355, label %356, label %364 + +356: ; preds = %353 + %357 = load ptr, ptr %75, align 8 + %358 = getelementptr inbounds nuw i8, ptr %357, i64 48 + %359 = load ptr, ptr %358, align 8 call void %358(ptr noundef nonnull %32) #13 call void @jAbort(ptr noundef nonnull %32) #13 - %359 = load ptr, ptr %0, align 8 - %360 = getelementptr inbounds nuw i8, ptr %359, i64 488 - %361 = load ptr, ptr %360, align 8 - %362 = load ptr, ptr @JPEGImageReader_skipPastImageID, align 8 - call void (ptr, ptr, ptr, ...) %361(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %362, i32 noundef %2) #13 - br label %365 - -363: ; preds = %352, %349 - %364 = call i32 @jFinDecompress(ptr noundef nonnull %32) #13 - br label %365 - -365: ; preds = %355, %363, %348 - %366 = load ptr, ptr %21, align 8 - call void @free(ptr noundef %366) #13 - %367 = load ptr, ptr %76, align 8 - call fastcc void @RELEASE_ARRAYS(ptr noundef nonnull %0, ptr noundef nonnull %74, ptr noundef %367) - %368 = load i8, ptr %151, align 8 - br label %369 - -369: ; preds = %365, %163, %142, %136, %106, %100, %80, %63, %54, %30, %26 - %.0288 = phi i8 [ 0, %26 ], [ 0, %30 ], [ 0, %54 ], [ 0, %63 ], [ %82, %80 ], [ %102, %100 ], [ %111, %106 ], [ %139, %136 ], [ %145, %142 ], [ %165, %163 ], [ %368, %365 ] + %360 = load ptr, ptr %0, align 8 + %361 = getelementptr inbounds nuw i8, ptr %360, i64 488 + %362 = load ptr, ptr %361, align 8 + %363 = load ptr, ptr @JPEGImageReader_skipPastImageID, align 8 + call void (ptr, ptr, ptr, ...) %361(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %363, i32 noundef %2) #13 + br label %366 + +364: ; preds = %353, %350 + %365 = call i32 @jFinDecompress(ptr noundef nonnull %32) #13 + br label %366 + +366: ; preds = %356, %364, %348 + %367 = load ptr, ptr %21, align 8 + call void @free(ptr noundef %367) #13 + %368 = load ptr, ptr %76, align 8 + call fastcc void @RELEASE_ARRAYS(ptr noundef nonnull %0, ptr noundef nonnull %74, ptr noundef %368) + %369 = load i8, ptr %152, align 8 + br label %370 + +370: ; preds = %366, %164, %143, %137, %106, %100, %80, %63, %54, %30, %26 + %.0288 = phi i8 [ 0, %26 ], [ 0, %30 ], [ 0, %54 ], [ 0, %63 ], [ %82, %80 ], [ %102, %100 ], [ %111, %106 ], [ %140, %136 ], [ %146, %142 ], [ %166, %163 ], [ %369, %365 ] ret i8 %.0288 } diff --git a/bench/php/optimized/zend_hash.ll b/bench/php/optimized/zend_hash.ll index bb3fd840b7e..5f27177b5df 100644 --- a/bench/php/optimized/zend_hash.ll +++ b/bench/php/optimized/zend_hash.ll @@ -7042,10 +7042,10 @@ zend_hash_real_init_mixed.exit: ; preds = %120, %103, %145, %. store i64 %166, ptr %163, align 8, !tbaa !30 br label %167 -167: ; preds = %165, %zend_hash_real_init_mixed.exit +167:; preds = %165, %zend_hash_real_init_mixed.exit %168 = getelementptr inbounds nuw i8, ptr %0, i64 28 - %169 = load i32, ptr %168, align 4, !tbaa !28 - %170 = add i32 %169, 1 + %170 = load i32, ptr %168, align 4, !tbaa !28 + %170 = add i32 %170, 1 store i32 %170, ptr %168, align 4, !tbaa !28 %171 = getelementptr inbounds nuw i8, ptr %156, i64 16 store i64 %1, ptr %171, align 8, !tbaa !23 @@ -7053,15 +7053,15 @@ zend_hash_real_init_mixed.exit: ; preds = %120, %103, %145, %. store ptr null, ptr %172, align 8, !tbaa !18 %173 = load ptr, ptr %2, align 8, !tbaa !5 %174 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %175 = load i32, ptr %174, align 8, !tbaa !5 + %174 = load i32, ptr %174, align 8, !tbaa !5 store ptr %173, ptr %156, align 8, !tbaa !5 br label %_zend_hash_index_add_or_update_i.exit.sink.split _zend_hash_index_add_or_update_i.exit.sink.split: ; preds = %167, %.loopexit %.sink21 = phi ptr [ %26, %.loopexit ], [ %156, %167 ] %.sink = phi i32 [ %42, %.loopexit ], [ %175, %167 ] - %176 = getelementptr inbounds nuw i8, ptr %.sink21, i64 8 - store i32 %.sink, ptr %176, align 8, !tbaa !5 + %177 = getelementptr inbounds nuw i8, ptr %.sink21, i64 8 + store i32 %.sink, ptr %177, align 8, !tbaa !5 br label %_zend_hash_index_add_or_update_i.exit _zend_hash_index_add_or_update_i.exit: ; preds = %138, %_zend_hash_index_add_or_update_i.exit.sink.split, %12 @@ -7399,7 +7399,7 @@ zend_hash_real_init_mixed.exit: ; preds = %120, %103, %128, %1 store i64 %149, ptr %146, align 8, !tbaa !30 br label %150 -150: ; preds = %148, %zend_hash_real_init_mixed.exit +150:; preds = %148, %zend_hash_real_init_mixed.exit %151 = getelementptr inbounds nuw i8, ptr %0, i64 28 %152 = load i32, ptr %151, align 4, !tbaa !28 %153 = add i32 %152, 1 @@ -7410,15 +7410,15 @@ zend_hash_real_init_mixed.exit: ; preds = %120, %103, %128, %1 store ptr null, ptr %155, align 8, !tbaa !18 %156 = load ptr, ptr %2, align 8, !tbaa !5 %157 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %158 = load i32, ptr %157, align 8, !tbaa !5 + %157 = load i32, ptr %157, align 8, !tbaa !5 store ptr %156, ptr %139, align 8, !tbaa !5 br label %_zend_hash_index_add_or_update_i.exit.sink.split _zend_hash_index_add_or_update_i.exit.sink.split: ; preds = %150, %.loopexit %.sink13 = phi ptr [ %26, %.loopexit ], [ %139, %150 ] %.sink = phi i32 [ %42, %.loopexit ], [ %158, %150 ] - %159 = getelementptr inbounds nuw i8, ptr %.sink13, i64 8 - store i32 %.sink, ptr %159, align 8, !tbaa !5 + %160 = getelementptr inbounds nuw i8, ptr %.sink13, i64 8 + store i32 %.sink, ptr %160, align 8, !tbaa !5 br label %_zend_hash_index_add_or_update_i.exit _zend_hash_index_add_or_update_i.exit: ; preds = %_zend_hash_index_add_or_update_i.exit.sink.split, %12 @@ -7726,10 +7726,10 @@ zend_hash_real_init_mixed.exit: ; preds = %121, %104, %146, %. store i64 %166, ptr %3, align 8, !tbaa !30 br label %167 -167: ; preds = %165, %zend_hash_real_init_mixed.exit +167:; preds = %165, %zend_hash_real_init_mixed.exit %168 = getelementptr inbounds nuw i8, ptr %0, i64 28 - %169 = load i32, ptr %168, align 4, !tbaa !28 - %170 = add i32 %169, 1 + %170 = load i32, ptr %168, align 4, !tbaa !28 + %170 = add i32 %170, 1 store i32 %170, ptr %168, align 4, !tbaa !28 %171 = getelementptr inbounds nuw i8, ptr %157, i64 16 store i64 %spec.store.select.i, ptr %171, align 8, !tbaa !23 @@ -7737,15 +7737,15 @@ zend_hash_real_init_mixed.exit: ; preds = %121, %104, %146, %. store ptr null, ptr %172, align 8, !tbaa !18 %173 = load ptr, ptr %1, align 8, !tbaa !5 %174 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %175 = load i32, ptr %174, align 8, !tbaa !5 + %174 = load i32, ptr %174, align 8, !tbaa !5 store ptr %173, ptr %157, align 8, !tbaa !5 br label %_zend_hash_index_add_or_update_i.exit.sink.split _zend_hash_index_add_or_update_i.exit.sink.split: ; preds = %167, %.loopexit %.sink20 = phi ptr [ %28, %.loopexit ], [ %157, %167 ] %.sink = phi i32 [ %43, %.loopexit ], [ %175, %167 ] - %176 = getelementptr inbounds nuw i8, ptr %.sink20, i64 8 - store i32 %.sink, ptr %176, align 8, !tbaa !5 + %177 = getelementptr inbounds nuw i8, ptr %.sink20, i64 8 + store i32 %.sink, ptr %177, align 8, !tbaa !5 br label %_zend_hash_index_add_or_update_i.exit _zend_hash_index_add_or_update_i.exit: ; preds = %139, %_zend_hash_index_add_or_update_i.exit.sink.split, %14 @@ -7978,33 +7978,33 @@ zend_hash_real_init_mixed.exit: ; preds = %107, %90, %115, %11 store i32 %117, ptr %132, align 4, !tbaa !17 %133 = load i64, ptr %3, align 8, !tbaa !30 %.not127.i = icmp slt i64 %spec.store.select.i, %133 - br i1 %.not127.i, label %136, label %134 + br i1 %.not127.i, label %137, label %134 134: ; preds = %zend_hash_real_init_mixed.exit %135 = tail call i64 @llvm.sadd.sat.i64(i64 %spec.store.select.i, i64 1) store i64 %135, ptr %3, align 8, !tbaa !30 br label %136 -136: ; preds = %134, %zend_hash_real_init_mixed.exit - %137 = getelementptr inbounds nuw i8, ptr %0, i64 28 - %138 = load i32, ptr %137, align 4, !tbaa !28 - %139 = add i32 %138, 1 - store i32 %139, ptr %137, align 4, !tbaa !28 - %140 = getelementptr inbounds nuw i8, ptr %126, i64 16 - store i64 %spec.store.select.i, ptr %140, align 8, !tbaa !23 - %141 = getelementptr inbounds nuw i8, ptr %126, i64 24 - store ptr null, ptr %141, align 8, !tbaa !18 - %142 = load ptr, ptr %1, align 8, !tbaa !5 - %143 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %144 = load i32, ptr %143, align 8, !tbaa !5 - store ptr %142, ptr %126, align 8, !tbaa !5 +137: ; preds = %134, %zend_hash_real_init_mixed.exit + %138 = getelementptr inbounds nuw i8, ptr %0, i64 28 + %139 = load i32, ptr %138, align 4, !tbaa !28 + %140 = add i32 %139, 1 + store i32 %140, ptr %138, align 4, !tbaa !28 + %141 = getelementptr inbounds nuw i8, ptr %126, i64 16 + store i64 %spec.store.select.i, ptr %141, align 8, !tbaa !23 + %142 = getelementptr inbounds nuw i8, ptr %126, i64 24 + store ptr null, ptr %142, align 8, !tbaa !18 + %143 = load ptr, ptr %1, align 8, !tbaa !5 + %144 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %145 = load i32, ptr %144, align 8, !tbaa !5 + store ptr %143, ptr %126, align 8, !tbaa !5 br label %_zend_hash_index_add_or_update_i.exit -_zend_hash_index_add_or_update_i.exit: ; preds = %14, %136 +_zend_hash_index_add_or_update_i.exit: ; preds = %14, %137 %.sink10 = phi ptr [ %17, %14 ], [ %126, %136 ] - %.sink = phi i32 [ %27, %14 ], [ %144, %136 ] - %145 = getelementptr inbounds nuw i8, ptr %.sink10, i64 8 - store i32 %.sink, ptr %145, align 8, !tbaa !5 + %.sink = phi i32 [ %27, %14 ], [ %145, %136 ] + %146 = getelementptr inbounds nuw i8, ptr %.sink10, i64 8 + store i32 %.sink, ptr %146, align 8, !tbaa !5 ret ptr %.sink10 } @@ -8324,10 +8324,10 @@ zend_hash_real_init_mixed.exit: ; preds = %127, %110, %152, %. store i64 %173, ptr %170, align 8, !tbaa !30 br label %174 -174: ; preds = %172, %zend_hash_real_init_mixed.exit +174:; preds = %172, %zend_hash_real_init_mixed.exit %175 = getelementptr inbounds nuw i8, ptr %0, i64 28 %176 = load i32, ptr %175, align 4, !tbaa !28 - %177 = add i32 %176, 1 + %177 = add i32 %177, 1 store i32 %177, ptr %175, align 4, !tbaa !28 %178 = getelementptr inbounds nuw i8, ptr %163, i64 16 store i64 %1, ptr %178, align 8, !tbaa !23 @@ -8335,15 +8335,15 @@ zend_hash_real_init_mixed.exit: ; preds = %127, %110, %152, %. store ptr null, ptr %179, align 8, !tbaa !18 %180 = load ptr, ptr %2, align 8, !tbaa !5 %181 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %182 = load i32, ptr %181, align 8, !tbaa !5 + %181 = load i32, ptr %181, align 8, !tbaa !5 store ptr %180, ptr %163, align 8, !tbaa !5 br label %_zend_hash_index_add_or_update_i.exit _zend_hash_index_add_or_update_i.exit: ; preds = %21, %.loopexit, %174 %.0110.i.sink = phi ptr [ %.0110.i, %21 ], [ %33, %.loopexit ], [ %163, %174 ] %.sink = phi i32 [ %24, %21 ], [ %49, %.loopexit ], [ %182, %174 ] - %183 = getelementptr inbounds nuw i8, ptr %.0110.i.sink, i64 8 - store i32 %.sink, ptr %183, align 8, !tbaa !5 + %184 = getelementptr inbounds nuw i8, ptr %.0110.i.sink, i64 8 + store i32 %.sink, ptr %184, align 8, !tbaa !5 ret ptr %.0110.i.sink } @@ -8641,7 +8641,7 @@ zend_hash_real_init_mixed.exit: ; preds = %116, %99, %141, %._ store i64 %162, ptr %159, align 8, !tbaa !30 br label %163 -163: ; preds = %161, %zend_hash_real_init_mixed.exit +163:; preds = %161, %zend_hash_real_init_mixed.exit %164 = getelementptr inbounds nuw i8, ptr %0, i64 28 %165 = load i32, ptr %164, align 4, !tbaa !28 %166 = add i32 %165, 1 @@ -8654,8 +8654,8 @@ zend_hash_real_init_mixed.exit: ; preds = %116, %99, %141, %._ _zend_hash_index_add_or_update_i.exit.sink.split: ; preds = %163, %.loopexit %.sink21 = phi ptr [ %25, %.loopexit ], [ %152, %163 ] - %169 = getelementptr inbounds nuw i8, ptr %.sink21, i64 8 - store i32 1, ptr %169, align 8, !tbaa !5 + %170 = getelementptr inbounds nuw i8, ptr %.sink21, i64 8 + store i32 1, ptr %170, align 8, !tbaa !5 br label %_zend_hash_index_add_or_update_i.exit _zend_hash_index_add_or_update_i.exit: ; preds = %134, %_zend_hash_index_add_or_update_i.exit.sink.split, %11 diff --git a/bench/sqlite/optimized/sqlite3.ll b/bench/sqlite/optimized/sqlite3.ll index 2270d192d6b..c6600c0af50 100644 --- a/bench/sqlite/optimized/sqlite3.ll +++ b/bench/sqlite/optimized/sqlite3.ll @@ -253420,8 +253420,8 @@ define internal fastcc void @wherePathSolver(ptr noundef %0, i16 noundef signext br i1 %.not89.i, label %._crit_edge124.i, label %.lr.ph123.i, !llvm.loop !2980 ._crit_edge124.i: ; preds = %96, %91 - %.067.lcssa.ph.i = phi i16 [ %.168.i, %96 ], [ %.067120.i, %91 ] - %99 = tail call i16 @llvm.sadd.sat.i16(i16 %.067.lcssa.ph.i, i16 1) + %.067.lcssa.i = phi i16 [ %.168.i, %96 ], [ %.067120.i, %91 ] + %99 = tail call i16 @llvm.sadd.sat.i16(i16 %.067.lcssa.i, i16 1) br label %.lr.ph131.i .lr.ph131.i: ; preds = %112, %._crit_edge124.i @@ -253632,8 +253632,8 @@ computeMxChoice.exit: ; preds = %42, %.loopexit.i, % %.not351 = icmp ne i32 %193, 0 %.pre = load i16, ptr %176, align 8, !tbaa !2988 %194 = icmp slt i16 %.pre, 3 - %or.cond573 = select i1 %.not351, i1 %194, i1 false - br i1 %or.cond573, label %.loopexit, label %195 + %or.cond572 = select i1 %.not351, i1 %194, i1 false + br i1 %or.cond572, label %.loopexit, label %195 195: ; preds = %190 %196 = getelementptr inbounds nuw i8, ptr %.0307429, i64 20 @@ -254297,7 +254297,7 @@ sqlite3LogEstAdd.exit375: ; preds = %372, %378, %380, %3 br i1 %exitcond505.not, label %._crit_edge468, label %497, !llvm.loop !3001 ._crit_edge468: ; preds = %497, %159 - %.2313.lcssa551 = phi ptr [ %141, %159 ], [ %.2313.lcssa, %497 ] + %.2313.lcssa550 = phi ptr [ %141, %159 ], [ %.2313.lcssa, %497 ] %510 = getelementptr inbounds nuw i8, ptr %0, i64 60 %511 = load i16, ptr %510, align 4, !tbaa !2795 %512 = and i16 %511, 384 @@ -254318,12 +254318,12 @@ sqlite3LogEstAdd.exit375: ; preds = %372, %378, %380, %3 %520 = load ptr, ptr %519, align 8, !tbaa !2794 %521 = add nsw i32 %10, -1 %522 = trunc nsw i32 %521 to i16 - %523 = getelementptr inbounds nuw i8, ptr %.2313.lcssa551, i64 24 + %523 = getelementptr inbounds nuw i8, ptr %.2313.lcssa550, i64 24 %524 = load ptr, ptr %523, align 8, !tbaa !2983 %525 = sext i32 %521 to i64 %526 = getelementptr inbounds ptr, ptr %524, i64 %525 %527 = load ptr, ptr %526, align 8, !tbaa !2989 - %528 = call fastcc signext i8 @wherePathSatisfiesOrderBy(ptr noundef nonnull %0, ptr noundef %520, ptr noundef %.2313.lcssa551, i16 noundef zeroext 128, i16 noundef zeroext %522, ptr noundef %527, ptr noundef %4) + %528 = call fastcc signext i8 @wherePathSatisfiesOrderBy(ptr noundef nonnull %0, ptr noundef %520, ptr noundef %.2313.lcssa550, i16 noundef zeroext 128, i16 noundef zeroext %522, ptr noundef %527, ptr noundef %4) %529 = sext i8 %528 to i32 %530 = load ptr, ptr %519, align 8, !tbaa !2794 %531 = load i32, ptr %530, align 8, !tbaa !2119 @@ -254348,7 +254348,7 @@ sqlite3LogEstAdd.exit375: ; preds = %372, %378, %380, %3 br i1 %.not341, label %617, label %540 540: ; preds = %535 - %541 = getelementptr inbounds nuw i8, ptr %.2313.lcssa551, i64 22 + %541 = getelementptr inbounds nuw i8, ptr %.2313.lcssa550, i64 22 %542 = load i8, ptr %541, align 2, !tbaa !2987 %543 = getelementptr inbounds nuw i8, ptr %0, i64 65 store i8 %542, ptr %543, align 1, !tbaa !2354 @@ -254369,7 +254369,7 @@ sqlite3LogEstAdd.exit375: ; preds = %372, %378, %380, %3 br label %588 552: ; preds = %540 - %553 = getelementptr inbounds nuw i8, ptr %.2313.lcssa551, i64 8 + %553 = getelementptr inbounds nuw i8, ptr %.2313.lcssa550, i64 8 %554 = load i64, ptr %553, align 8, !tbaa !2993 %555 = getelementptr inbounds nuw i8, ptr %0, i64 96 store i64 %554, ptr %555, align 8, !tbaa !3002 @@ -254381,7 +254381,7 @@ sqlite3LogEstAdd.exit375: ; preds = %372, %378, %380, %3 br i1 %.not469, label %588, label %558 558: ; preds = %557 - %559 = getelementptr inbounds nuw i8, ptr %.2313.lcssa551, i64 24 + %559 = getelementptr inbounds nuw i8, ptr %.2313.lcssa550, i64 24 %560 = load ptr, ptr %559, align 8, !tbaa !2983 %561 = add nsw i32 %10, -1 %562 = zext nneg i32 %561 to i64 @@ -254400,7 +254400,7 @@ sqlite3LogEstAdd.exit375: ; preds = %372, %378, %380, %3 call void @llvm.lifetime.start.p0(ptr nonnull %5) store i64 0, ptr %5, align 8, !tbaa !14 %571 = trunc nuw nsw i32 %561 to i16 - %572 = call fastcc signext i8 @wherePathSatisfiesOrderBy(ptr noundef nonnull %0, ptr noundef nonnull %539, ptr noundef %.2313.lcssa551, i16 noundef zeroext 2048, i16 noundef zeroext %571, ptr noundef nonnull %564, ptr noundef %5) + %572 = call fastcc signext i8 @wherePathSatisfiesOrderBy(ptr noundef nonnull %0, ptr noundef nonnull %539, ptr noundef %.2313.lcssa550, i16 noundef zeroext 2048, i16 noundef zeroext %571, ptr noundef nonnull %564, ptr noundef %5) %573 = sext i8 %572 to i32 %574 = load ptr, ptr %121, align 8, !tbaa !2793 %575 = load i32, ptr %574, align 8, !tbaa !2119 @@ -254454,12 +254454,12 @@ sqlite3LogEstAdd.exit375: ; preds = %372, %378, %380, %3 store i64 0, ptr %6, align 8, !tbaa !14 %599 = add nsw i32 %10, -1 %600 = trunc nuw nsw i32 %599 to i16 - %601 = getelementptr inbounds nuw i8, ptr %.2313.lcssa551, i64 24 + %601 = getelementptr inbounds nuw i8, ptr %.2313.lcssa550, i64 24 %602 = load ptr, ptr %601, align 8, !tbaa !2983 %603 = zext nneg i32 %599 to i64 %604 = getelementptr inbounds nuw ptr, ptr %602, i64 %603 %605 = load ptr, ptr %604, align 8, !tbaa !2989 - %606 = call fastcc signext i8 @wherePathSatisfiesOrderBy(ptr noundef nonnull %0, ptr noundef nonnull %589, ptr noundef %.2313.lcssa551, i16 noundef zeroext 0, i16 noundef zeroext %600, ptr noundef %605, ptr noundef %6) + %606 = call fastcc signext i8 @wherePathSatisfiesOrderBy(ptr noundef nonnull %0, ptr noundef nonnull %589, ptr noundef %.2313.lcssa550, i16 noundef zeroext 0, i16 noundef zeroext %600, ptr noundef %605, ptr noundef %6) %607 = sext i8 %606 to i32 %608 = load ptr, ptr %121, align 8, !tbaa !2793 %609 = load i32, ptr %608, align 8, !tbaa !2119 @@ -254480,7 +254480,7 @@ sqlite3LogEstAdd.exit375: ; preds = %372, %378, %380, %3 br label %617 617: ; preds = %588, %592, %616, %535 - %618 = getelementptr inbounds nuw i8, ptr %.2313.lcssa551, i64 16 + %618 = getelementptr inbounds nuw i8, ptr %.2313.lcssa550, i64 16 %619 = load i16, ptr %618, align 8, !tbaa !2988 %620 = getelementptr inbounds nuw i8, ptr %0, i64 70 store i16 %619, ptr %620, align 2, !tbaa !2348 diff --git a/bench/yalantinglibs/optimized/client.ll b/bench/yalantinglibs/optimized/client.ll index 1091983acd6..2b26c02a8d4 100644 --- a/bench/yalantinglibs/optimized/client.ll +++ b/bench/yalantinglibs/optimized/client.ll @@ -34533,21 +34533,21 @@ call2.i.i.i.i.i.i.i.i.i.i.i.noexc: ; preds = %if.end.i.i.i.i.i.i. br label %_ZN4asio6detail19asio_handler_invokeINS0_7binder0IZ4taskI16async_rpc_clientEvSt17basic_string_viewIcSt11char_traitsIcEES8_EUlvE0_EES9_EEvRT_PNS2_IT0_EE.exit.i _ZN4asio6detail19asio_handler_invokeINS0_7binder0IZ4taskI16async_rpc_clientEvSt17basic_string_viewIcSt11char_traitsIcEES8_EUlvE0_EES9_EEvRT_PNS2_IT0_EE.exit.i: ; preds = %call2.i.i.i.i.i.i.i.i.i.i.i.noexc, %if.then - %retval.sroa.0.0.i.i.i.i.i.i.i.i.i.i = tail call i64 @llvm.sadd.sat.i64(i64 %call.i.i.i.i.i.i.i.i.i.i, i64 1000000000) + %9 = tail call i64 @llvm.sadd.sat.i64(i64 %call.i.i.i.i.i.i.i.i.i.i, i64 1000000000) %implementation_.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %tmp.sroa.0.0.copyload, i64 8 store i64 %retval.sroa.0.0.i.i.i.i.i.i.i.i.i.i, ptr %implementation_.i.i.i.i.i.i.i.i.i, align 8 store i64 %call.i.i.i.i.i.i, ptr %ref.tmp4.i.i.i.i.i.i.i, align 8 - %9 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i.i.i.i.i.i.i, i64 8 - %10 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i.i.i.i.i.i.i, i64 32 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %9, i8 0, i64 20, i1 false) - store ptr @tot_client, ptr %10, align 8 - %11 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i.i.i.i.i.i.i, i64 40 - store ptr %tmp.sroa.2.0.copyload, ptr %11, align 8 - %12 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i.i.i.i.i.i.i, i64 48 - store ptr %tmp.sroa.0.0.copyload, ptr %12, align 8 - %13 = load ptr, ptr %tmp.sroa.0.0.copyload, align 8 + %10 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i.i.i.i.i.i.i, i64 8 + %11 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i.i.i.i.i.i.i, i64 32 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %10, i8 0, i64 20, i1 false) + store ptr @tot_client, ptr %11, align 8 + %12 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i.i.i.i.i.i.i, i64 40 + store ptr %tmp.sroa.2.0.copyload, ptr %12, align 8 + %13 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i.i.i.i.i.i.i, i64 48 + store ptr %tmp.sroa.0.0.copyload, ptr %13, align 8 + %14 = load ptr, ptr %tmp.sroa.0.0.copyload, align 8 %executor_.i.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %tmp.sroa.0.0.copyload, i64 64 - invoke void @_ZN4asio6detail22deadline_timer_serviceINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS5_EEEEE10async_waitIZ5watchI16async_rpc_clientEvRNS_20basic_waitable_timerIS5_S7_NS_15any_io_executorEEERjRSt5dequeIT_SaISJ_EENS3_10time_pointIS5_NS3_8durationIlSt5ratioILl1ELl1000000000EEEEEEddiEUlRKSt10error_codeE_SE_EEvRNS9_19implementation_typeERSJ_RKT0_(ptr noundef nonnull align 8 dereferenceable(96) %13, ptr noundef nonnull align 8 dereferenceable(56) %implementation_.i.i.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(56) %ref.tmp4.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(56) %executor_.i.i.i.i.i.i.i.i.i.i.i.i) + invoke void @_ZN4asio6detail22deadline_timer_serviceINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS5_EEEEE10async_waitIZ5watchI16async_rpc_clientEvRNS_20basic_waitable_timerIS5_S7_NS_15any_io_executorEEERjRSt5dequeIT_SaISJ_EENS3_10time_pointIS5_NS3_8durationIlSt5ratioILl1ELl1000000000EEEEEEddiEUlRKSt10error_codeE_SE_EEvRNS9_19implementation_typeERSJ_RKT0_(ptr noundef nonnull align 8 dereferenceable(96) %14, ptr noundef nonnull align 8 dereferenceable(56) %implementation_.i.i.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(56) %ref.tmp4.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(56) %executor_.i.i.i.i.i.i.i.i.i.i.i.i) to label %invoke.cont5 unwind label %lpad4 invoke.cont5: ; preds = %_ZN4asio6detail19asio_handler_invokeINS0_7binder0IZ4taskI16async_rpc_clientEvSt17basic_string_viewIcSt11char_traitsIcEES8_EUlvE0_EES9_EEvRT_PNS2_IT0_EE.exit.i @@ -34556,17 +34556,17 @@ invoke.cont5: ; preds = %_ZN4asio6detail19as br label %return lpad4: ; preds = %_ZN4asio6detail19asio_handler_invokeINS0_7binder0IZ4taskI16async_rpc_clientEvSt17basic_string_viewIcSt11char_traitsIcEES8_EUlvE0_EES9_EEvRT_PNS2_IT0_EE.exit.i, %if.end.i.i.i.i.i.i.i.i.i.i.i - %14 = landingpad { ptr, i32 } + %15 = landingpad { ptr, i32 } catch ptr null - %15 = extractvalue { ptr, i32 } %14, 0 + %16 = extractvalue { ptr, i32 } %15, 0 fence release - %16 = call ptr @__cxa_begin_catch(ptr %15) #32 - %17 = load i64, ptr %this, align 8 - %and.i5 = and i64 %17, -4 - %18 = inttoptr i64 %and.i5 to ptr - %impl_7 = getelementptr inbounds nuw i8, ptr %18, i64 8 - %19 = load ptr, ptr %impl_7, align 8 - invoke void @_ZN4asio6detail9scheduler25capture_current_exceptionEv(ptr noundef nonnull align 8 dereferenceable(256) %19) + %17 = call ptr @__cxa_begin_catch(ptr %16) #32 + %18 = load i64, ptr %this, align 8 + %and.i5 = and i64 %18, -4 + %19 = inttoptr i64 %and.i5 to ptr + %impl_7 = getelementptr inbounds nuw i8, ptr %19, i64 8 + %20 = load ptr, ptr %impl_7, align 8 + invoke void @_ZN4asio6detail9scheduler25capture_current_exceptionEv(ptr noundef nonnull align 8 dereferenceable(256) %20) to label %invoke.cont9 unwind label %lpad8 invoke.cont9: ; preds = %lpad4 @@ -34574,7 +34574,7 @@ invoke.cont9: ; preds = %lpad4 br label %return lpad8: ; preds = %lpad4 - %20 = landingpad { ptr, i32 } + %21 = landingpad { ptr, i32 } cleanup invoke void @__cxa_end_catch() to label %eh.resume unwind label %terminate.lpad @@ -34589,12 +34589,12 @@ if.end: ; preds = %if.end.i.i, %entry. cond.true.i.i.i.i: ; preds = %if.end %value_.i.i.i.i = getelementptr inbounds nuw i8, ptr %.pr, i64 8 - %21 = load ptr, ptr %value_.i.i.i.i, align 8 + %22 = load ptr, ptr %value_.i.i.i.i, align 8 br label %invoke.cont15 invoke.cont15: ; preds = %if.end.thread, %cond.true.i.i.i.i, %if.end %v17 = phi ptr [ %v, %cond.true.i.i.i.i ], [ %v, %if.end ], [ %v15, %if.end.thread ] - %cond.i.i.i.i = phi ptr [ %21, %cond.true.i.i.i.i ], [ null, %if.end ], [ null, %if.end.thread ] + %cond.i.i.i.i = phi ptr [ %22, %cond.true.i.i.i.i ], [ null, %if.end ], [ null, %if.end.thread ] %call2.i.i = tail call noundef ptr @_ZN4asio6detail16thread_info_base8allocateINS1_11default_tagEEEPvT_PS1_mm(ptr noundef %cond.i.i.i.i, i64 noundef 48, i64 noundef 8) store ptr %call2.i.i, ptr %v17, align 8 %p12 = getelementptr inbounds nuw i8, ptr %p, i64 16 @@ -34606,14 +34606,14 @@ invoke.cont15: ; preds = %if.end.thread, %con %handler_.i = getelementptr inbounds nuw i8, ptr %call2.i.i, i64 24 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %handler_.i, ptr noundef nonnull align 8 dereferenceable(16) %f, i64 16, i1 false) store ptr %call2.i.i, ptr %p12, align 8 - %22 = load i64, ptr %this, align 8 - %and.i6 = and i64 %22, -4 - %23 = inttoptr i64 %and.i6 to ptr - %impl_18 = getelementptr inbounds nuw i8, ptr %23, i64 8 - %24 = load ptr, ptr %impl_18, align 8 - %and21 = and i64 %22, 2 + %23 = load i64, ptr %this, align 8 + %and.i6 = and i64 %23, -4 + %24 = inttoptr i64 %and.i6 to ptr + %impl_18 = getelementptr inbounds nuw i8, ptr %24, i64 8 + %25 = load ptr, ptr %impl_18, align 8 + %and21 = and i64 %23, 2 %cmp22 = icmp ne i64 %and21, 0 - invoke void @_ZN4asio6detail9scheduler25post_immediate_completionEPNS0_19scheduler_operationEb(ptr noundef nonnull align 8 dereferenceable(256) %24, ptr noundef nonnull %call2.i.i, i1 noundef zeroext %cmp22) + invoke void @_ZN4asio6detail9scheduler25post_immediate_completionEPNS0_19scheduler_operationEb(ptr noundef nonnull align 8 dereferenceable(256) %25, ptr noundef nonnull %call2.i.i, i1 noundef zeroext %cmp22) to label %_ZN4asio6detail11executor_opINS0_7binder0IZ4taskI16async_rpc_clientEvSt17basic_string_viewIcSt11char_traitsIcEES8_EUlvE0_EESaIvENS0_19scheduler_operationEE3ptrD2Ev.exit unwind label %lpad14 _ZN4asio6detail11executor_opINS0_7binder0IZ4taskI16async_rpc_clientEvSt17basic_string_viewIcSt11char_traitsIcEES8_EUlvE0_EESaIvENS0_19scheduler_operationEE3ptrD2Ev.exit: ; preds = %invoke.cont15 @@ -34624,20 +34624,20 @@ return: ; preds = %_ZN4asio6detail11ex ret void lpad14: ; preds = %invoke.cont15 - %25 = landingpad { ptr, i32 } + %26 = landingpad { ptr, i32 } cleanup call void @_ZN4asio6detail11executor_opINS0_7binder0IZ4taskI16async_rpc_clientEvSt17basic_string_viewIcSt11char_traitsIcEES8_EUlvE0_EESaIvENS0_19scheduler_operationEE3ptrD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %p) #32 br label %eh.resume eh.resume: ; preds = %lpad8, %lpad14 - %.pn = phi { ptr, i32 } [ %20, %lpad8 ], [ %25, %lpad14 ] + %.pn = phi { ptr, i32 } [ %21, %lpad8 ], [ %26, %lpad14 ] resume { ptr, i32 } %.pn terminate.lpad: ; preds = %lpad8 - %26 = landingpad { ptr, i32 } + %27 = landingpad { ptr, i32 } catch ptr null - %27 = extractvalue { ptr, i32 } %26, 0 - call void @__clang_call_terminate(ptr %27) #37 + %28 = extractvalue { ptr, i32 } %27, 0 + call void @__clang_call_terminate(ptr %28) #37 unreachable } @@ -35268,25 +35268,25 @@ if.end.i.i.i.i.i: ; preds = %if.end42 br label %_Z5watchI16async_rpc_clientEvRN4asio20basic_waitable_timerINSt6chrono3_V212steady_clockENS1_11wait_traitsIS5_EENS1_15any_io_executorEEERjRSt5dequeIT_SaISD_EENS3_10time_pointIS5_NS3_8durationIlSt5ratioILl1ELl1000000000EEEEEEddi.exit _Z5watchI16async_rpc_clientEvRN4asio20basic_waitable_timerINSt6chrono3_V212steady_clockENS1_11wait_traitsIS5_EENS1_15any_io_executorEEERjRSt5dequeIT_SaISD_EENS3_10time_pointIS5_NS3_8durationIlSt5ratioILl1ELl1000000000EEEEEEddi.exit: ; preds = %if.end42, %if.end.i.i.i.i.i - %retval.sroa.0.0.i.i.i.i = tail call i64 @llvm.sadd.sat.i64(i64 %call.i.i.i.i, i64 1000000000) + %48 = tail call i64 @llvm.sadd.sat.i64(i64 %call.i.i.i.i, i64 1000000000) %implementation_.i.i.i = getelementptr inbounds nuw i8, ptr %37, i64 8 store i64 %retval.sroa.0.0.i.i.i.i, ptr %implementation_.i.i.i, align 8 store i64 %call21, ptr %ref.tmp4.i, align 8 - %48 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i, i64 8 - store double %41, ptr %48, align 8 - %49 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i, i64 16 - store double %43, ptr %49, align 8 - %50 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i, i64 24 - store i32 %44, ptr %50, align 8 - %51 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i, i64 32 - store ptr %38, ptr %51, align 8 - %52 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i, i64 40 - store ptr %40, ptr %52, align 8 - %53 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i, i64 48 - store ptr %37, ptr %53, align 8 - %54 = load ptr, ptr %37, align 8 + %49 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i, i64 8 + store double %41, ptr %49, align 8 + %50 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i, i64 16 + store double %43, ptr %50, align 8 + %51 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i, i64 24 + store i32 %44, ptr %51, align 8 + %52 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i, i64 32 + store ptr %38, ptr %52, align 8 + %53 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i, i64 40 + store ptr %40, ptr %53, align 8 + %54 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i, i64 48 + store ptr %37, ptr %54, align 8 + %55 = load ptr, ptr %37, align 8 %executor_.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %37, i64 64 - call void @_ZN4asio6detail22deadline_timer_serviceINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS5_EEEEE10async_waitIZ5watchI16async_rpc_clientEvRNS_20basic_waitable_timerIS5_S7_NS_15any_io_executorEEERjRSt5dequeIT_SaISJ_EENS3_10time_pointIS5_NS3_8durationIlSt5ratioILl1ELl1000000000EEEEEEddiEUlRKSt10error_codeE_SE_EEvRNS9_19implementation_typeERSJ_RKT0_(ptr noundef nonnull align 8 dereferenceable(96) %54, ptr noundef nonnull align 8 dereferenceable(56) %implementation_.i.i.i, ptr noundef nonnull align 8 dereferenceable(56) %ref.tmp4.i, ptr noundef nonnull align 8 dereferenceable(56) %executor_.i.i.i.i.i.i) + call void @_ZN4asio6detail22deadline_timer_serviceINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS5_EEEEE10async_waitIZ5watchI16async_rpc_clientEvRNS_20basic_waitable_timerIS5_S7_NS_15any_io_executorEEERjRSt5dequeIT_SaISJ_EENS3_10time_pointIS5_NS3_8durationIlSt5ratioILl1ELl1000000000EEEEEEddiEUlRKSt10error_codeE_SE_EEvRNS9_19implementation_typeERSJ_RKT0_(ptr noundef nonnull align 8 dereferenceable(96) %55, ptr noundef nonnull align 8 dereferenceable(56) %implementation_.i.i.i, ptr noundef nonnull align 8 dereferenceable(56) %ref.tmp4.i, ptr noundef nonnull align 8 dereferenceable(56) %executor_.i.i.i.i.i.i) call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp4.i) br label %if.end52 @@ -36152,21 +36152,21 @@ call2.i.i.i.i.i.i.i.i.i.i.i.noexc: ; preds = %if.end.i.i.i.i.i.i. br label %_ZN4asio6detail19asio_handler_invokeINS0_7binder0IZ4taskI16async_rpc_clientEvSt17basic_string_viewIcSt11char_traitsIcEES8_EUlvE0_EES9_EEvRT_PNS2_IT0_EE.exit.i _ZN4asio6detail19asio_handler_invokeINS0_7binder0IZ4taskI16async_rpc_clientEvSt17basic_string_viewIcSt11char_traitsIcEES8_EUlvE0_EES9_EEvRT_PNS2_IT0_EE.exit.i: ; preds = %call2.i.i.i.i.i.i.i.i.i.i.i.noexc, %if.then - %retval.sroa.0.0.i.i.i.i.i.i.i.i.i.i = call i64 @llvm.sadd.sat.i64(i64 %call.i.i.i.i.i.i.i.i.i.i, i64 1000000000) + %10 = call i64 @llvm.sadd.sat.i64(i64 %call.i.i.i.i.i.i.i.i.i.i, i64 1000000000) %implementation_.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %handler.sroa.0.0.copyload, i64 8 store i64 %retval.sroa.0.0.i.i.i.i.i.i.i.i.i.i, ptr %implementation_.i.i.i.i.i.i.i.i.i, align 8 store i64 %call.i.i.i.i.i.i, ptr %ref.tmp4.i.i.i.i.i.i.i, align 8 - %10 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i.i.i.i.i.i.i, i64 8 - %11 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i.i.i.i.i.i.i, i64 32 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %10, i8 0, i64 20, i1 false) - store ptr @tot_client, ptr %11, align 8 - %12 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i.i.i.i.i.i.i, i64 40 - store ptr %handler.sroa.2.0.copyload, ptr %12, align 8 - %13 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i.i.i.i.i.i.i, i64 48 - store ptr %handler.sroa.0.0.copyload, ptr %13, align 8 - %14 = load ptr, ptr %handler.sroa.0.0.copyload, align 8 + %11 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i.i.i.i.i.i.i, i64 8 + %12 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i.i.i.i.i.i.i, i64 32 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(20) %11, i8 0, i64 20, i1 false) + store ptr @tot_client, ptr %12, align 8 + %13 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i.i.i.i.i.i.i, i64 40 + store ptr %handler.sroa.2.0.copyload, ptr %13, align 8 + %14 = getelementptr inbounds nuw i8, ptr %ref.tmp4.i.i.i.i.i.i.i, i64 48 + store ptr %handler.sroa.0.0.copyload, ptr %14, align 8 + %15 = load ptr, ptr %handler.sroa.0.0.copyload, align 8 %executor_.i.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %handler.sroa.0.0.copyload, i64 64 - invoke void @_ZN4asio6detail22deadline_timer_serviceINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS5_EEEEE10async_waitIZ5watchI16async_rpc_clientEvRNS_20basic_waitable_timerIS5_S7_NS_15any_io_executorEEERjRSt5dequeIT_SaISJ_EENS3_10time_pointIS5_NS3_8durationIlSt5ratioILl1ELl1000000000EEEEEEddiEUlRKSt10error_codeE_SE_EEvRNS9_19implementation_typeERSJ_RKT0_(ptr noundef nonnull align 8 dereferenceable(96) %14, ptr noundef nonnull align 8 dereferenceable(56) %implementation_.i.i.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(56) %ref.tmp4.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(56) %executor_.i.i.i.i.i.i.i.i.i.i.i.i) + invoke void @_ZN4asio6detail22deadline_timer_serviceINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS5_EEEEE10async_waitIZ5watchI16async_rpc_clientEvRNS_20basic_waitable_timerIS5_S7_NS_15any_io_executorEEERjRSt5dequeIT_SaISJ_EENS3_10time_pointIS5_NS3_8durationIlSt5ratioILl1ELl1000000000EEEEEEddiEUlRKSt10error_codeE_SE_EEvRNS9_19implementation_typeERSJ_RKT0_(ptr noundef nonnull align 8 dereferenceable(96) %15, ptr noundef nonnull align 8 dereferenceable(56) %implementation_.i.i.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(56) %ref.tmp4.i.i.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(56) %executor_.i.i.i.i.i.i.i.i.i.i.i.i) to label %invoke.cont6 unwind label %lpad5 invoke.cont6: ; preds = %_ZN4asio6detail19asio_handler_invokeINS0_7binder0IZ4taskI16async_rpc_clientEvSt17basic_string_viewIcSt11char_traitsIcEES8_EUlvE0_EES9_EEvRT_PNS2_IT0_EE.exit.i @@ -36175,11 +36175,11 @@ invoke.cont6: ; preds = %_ZN4asio6detail19as br label %_ZN4asio6detail11executor_opINS0_7binder0IZ4taskI16async_rpc_clientEvSt17basic_string_viewIcSt11char_traitsIcEES8_EUlvE0_EESaIvENS0_19scheduler_operationEE3ptrD2Ev.exit lpad5: ; preds = %_ZN4asio6detail19asio_handler_invokeINS0_7binder0IZ4taskI16async_rpc_clientEvSt17basic_string_viewIcSt11char_traitsIcEES8_EUlvE0_EES9_EEvRT_PNS2_IT0_EE.exit.i, %if.end.i.i.i.i.i.i.i.i.i.i.i - %15 = landingpad { ptr, i32 } + %16 = landingpad { ptr, i32 } cleanup fence release call void @_ZN4asio6detail11executor_opINS0_7binder0IZ4taskI16async_rpc_clientEvSt17basic_string_viewIcSt11char_traitsIcEES8_EUlvE0_EESaIvENS0_19scheduler_operationEE3ptrD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %p) #32 - resume { ptr, i32 } %15 + resume { ptr, i32 } %16 _ZN4asio6detail11executor_opINS0_7binder0IZ4taskI16async_rpc_clientEvSt17basic_string_viewIcSt11char_traitsIcEES8_EUlvE0_EESaIvENS0_19scheduler_operationEE3ptrD2Ev.exit: ; preds = %invoke.cont6, %invoke.cont3 ret void diff --git a/bench/yalantinglibs/optimized/server.ll b/bench/yalantinglibs/optimized/server.ll index ebd0e8494df..1a259e4041f 100644 --- a/bench/yalantinglibs/optimized/server.ll +++ b/bench/yalantinglibs/optimized/server.ll @@ -76226,18 +76226,18 @@ init.ready: ; preds = %entry.resume invoke.cont18: ; preds = %init.ready %3 = load ptr, ptr %timer.reload.addr, align 8 %call.i.i.i = tail call i64 @_ZNSt6chrono3_V212steady_clock3nowEv() #35 - %retval.sroa.0.0.i.i.i = tail call i64 @llvm.sadd.sat.i64(i64 %call.i.i.i, i64 10000000) + %4 = tail call i64 @llvm.sadd.sat.i64(i64 %call.i.i.i, i64 10000000) %might_have_pending_waits.i.i.i.i = getelementptr inbounds nuw i8, ptr %0, i64 56 - %4 = load i8, ptr %might_have_pending_waits.i.i.i.i, align 8 - %tobool.i.i.i.i = trunc i8 %4 to i1 + %5 = load i8, ptr %might_have_pending_waits.i.i.i.i, align 8 + %tobool.i.i.i.i = trunc i8 %5 to i1 br i1 %tobool.i.i.i.i, label %if.end.i.i.i.i, label %invoke.cont19 if.end.i.i.i.i: ; preds = %invoke.cont18 %scheduler_.i.i.i.i = getelementptr inbounds nuw i8, ptr %3, i64 88 - %5 = load ptr, ptr %scheduler_.i.i.i.i, align 8 + %6 = load ptr, ptr %scheduler_.i.i.i.i, align 8 %timer_queue_.i.i.i.i = getelementptr inbounds nuw i8, ptr %3, i64 40 %timer_data.i.i.i.i = getelementptr inbounds nuw i8, ptr %0, i64 64 - %call2.i.i.i.i2 = invoke noundef i64 @_ZN4asio6detail13epoll_reactor12cancel_timerINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS6_EEEEEEmRNS0_11timer_queueIT_EERNSC_14per_timer_dataEm(ptr noundef nonnull align 8 dereferenceable(216) %5, ptr noundef nonnull align 8 dereferenceable(48) %timer_queue_.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(40) %timer_data.i.i.i.i, i64 noundef -1) + %call2.i.i.i.i2 = invoke noundef i64 @_ZN4asio6detail13epoll_reactor12cancel_timerINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS6_EEEEEEmRNS0_11timer_queueIT_EERNSC_14per_timer_dataEm(ptr noundef nonnull align 8 dereferenceable(216) %6, ptr noundef nonnull align 8 dereferenceable(48) %timer_queue_.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(40) %timer_data.i.i.i.i, i64 noundef -1) to label %call2.i.i.i.i.noexc unwind label %lpad14 call2.i.i.i.i.noexc: ; preds = %if.end.i.i.i.i @@ -76251,10 +76251,10 @@ invoke.cont19: ; preds = %call2.i.i.i.i.noexc to label %CoroSave103 unwind label %terminate.lpad.i terminate.lpad.i: ; preds = %invoke.cont19 - %6 = landingpad { ptr, i32 } + %7 = landingpad { ptr, i32 } catch ptr null - %7 = extractvalue { ptr, i32 } %6, 0 - tail call void @__clang_call_terminate(ptr %7) #39 + %8 = extractvalue { ptr, i32 } %7, 0 + tail call void @__clang_call_terminate(ptr %8) #39 unreachable CoroSave103: ; preds = %invoke.cont19 @@ -76270,11 +76270,11 @@ CoroSave103: ; preds = %invoke.cont19 store i2 0, ptr %index.addr65.i, align 8 tail call void @llvm.experimental.noalias.scope.decl(metadata !1239) %_executor.i = getelementptr inbounds nuw i8, ptr %0, i64 24 - %8 = load ptr, ptr %_executor.i, align 8, !noalias !1239 + %9 = load ptr, ptr %_executor.i, align 8, !noalias !1239 tail call void @llvm.experimental.noalias.scope.decl(metadata !1242) tail call void @llvm.experimental.noalias.scope.decl(metadata !1245) %_executor.i.i.i = getelementptr inbounds nuw i8, ptr %call.i3, i64 24 - store ptr %8, ptr %_executor.i.i.i, align 8, !noalias !1248 + store ptr %9, ptr %_executor.i.i.i, align 8, !noalias !1248 store ptr null, ptr %ref.tmp22.reload.addr, align 8, !noalias !1248 store ptr %call.i3, ptr %ref.tmp21.reload.addr, align 8, !alias.scope !1248 store i2 1, ptr %index.addr, align 4 @@ -76283,38 +76283,38 @@ CoroSave103: ; preds = %invoke.cont19 ret void lpad10: ; preds = %init.ready - %9 = landingpad { ptr, i32 } + %10 = landingpad { ptr, i32 } catch ptr null br label %catch lpad14: ; preds = %if.end.i.i.i.i - %10 = landingpad { ptr, i32 } + %11 = landingpad { ptr, i32 } catch ptr null br label %ehcleanup51 await.ready: ; preds = %entry.resume - %11 = load ptr, ptr %ref.tmp21.reload.addr, align 8 - %12 = getelementptr inbounds nuw i8, ptr %11, i64 16 - %call2.i4 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNO12async_simple4coro6detail11LazyPromiseIbE6resultEv(ptr noundef nonnull align 8 dereferenceable(32) %12) + %12 = load ptr, ptr %ref.tmp21.reload.addr, align 8 + %13 = getelementptr inbounds nuw i8, ptr %12, i64 16 + %call2.i4 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNO12async_simple4coro6detail11LazyPromiseIbE6resultEv(ptr noundef nonnull align 8 dereferenceable(32) %13) to label %call2.i.noexc unwind label %lpad37 call2.i.noexc: ; preds = %await.ready - %13 = load ptr, ptr %ref.tmp21.reload.addr, align 8 - %14 = getelementptr inbounds nuw i8, ptr %13, i64 8 - %15 = load ptr, ptr %14, align 8 - invoke fastcc void %15(ptr nonnull %13) + %14 = load ptr, ptr %ref.tmp21.reload.addr, align 8 + %15 = getelementptr inbounds nuw i8, ptr %14, i64 8 + %16 = load ptr, ptr %15, align 8 + invoke fastcc void %15(ptr nonnull %14) to label %_ZN12async_simple4coro6detail8LazyBaseIbLb0EE12ValueAwaiterD2Ev.exit unwind label %lpad37 _ZN12async_simple4coro6detail8LazyBaseIbLb0EE12ValueAwaiterD2Ev.exit: ; preds = %call2.i.noexc store ptr null, ptr %ref.tmp21.reload.addr, align 8 - %16 = load ptr, ptr %ref.tmp22.reload.addr, align 8 - %cmp.i.not.i.i = icmp eq ptr %16, null + %17 = load ptr, ptr %ref.tmp22.reload.addr, align 8 + %cmp.i.not.i.i = icmp eq ptr %17, null br i1 %cmp.i.not.i.i, label %_ZN12async_simple4coro4LazyIbED2Ev.exit, label %if.then.i.i if.then.i.i: ; preds = %_ZN12async_simple4coro6detail8LazyBaseIbLb0EE12ValueAwaiterD2Ev.exit - %17 = getelementptr inbounds nuw i8, ptr %16, i64 8 - %18 = load ptr, ptr %17, align 8 - invoke fastcc void %18(ptr nonnull %16) + %18 = getelementptr inbounds nuw i8, ptr %17, i64 8 + %19 = load ptr, ptr %18, align 8 + invoke fastcc void %18(ptr nonnull %17) to label %invoke.cont.i.i unwind label %terminate.lpad.i.i invoke.cont.i.i: ; preds = %if.then.i.i @@ -76322,10 +76322,10 @@ invoke.cont.i.i: ; preds = %if.then.i.i br label %_ZN12async_simple4coro4LazyIbED2Ev.exit terminate.lpad.i.i: ; preds = %if.then.i.i - %19 = landingpad { ptr, i32 } + %20 = landingpad { ptr, i32 } catch ptr null - %20 = extractvalue { ptr, i32 } %19, 0 - tail call void @__clang_call_terminate(ptr %20) #39 + %21 = extractvalue { ptr, i32 } %20, 0 + tail call void @__clang_call_terminate(ptr %21) #39 unreachable _ZN12async_simple4coro4LazyIbED2Ev.exit: ; preds = %_ZN12async_simple4coro6detail8LazyBaseIbLb0EE12ValueAwaiterD2Ev.exit, %invoke.cont.i.i @@ -76337,16 +76337,16 @@ cleanup50: ; preds = %_ZN12async_simple4c br label %CoroSave107 lpad37: ; preds = %call2.i.noexc, %await.ready - %21 = landingpad { ptr, i32 } + %22 = landingpad { ptr, i32 } catch ptr null - %22 = load ptr, ptr %ref.tmp21.reload.addr, align 8 - %cmp.i.not.i.i.i6 = icmp eq ptr %22, null + %23 = load ptr, ptr %ref.tmp21.reload.addr, align 8 + %cmp.i.not.i.i.i6 = icmp eq ptr %23, null br i1 %cmp.i.not.i.i.i6, label %ehcleanup, label %if.then.i.i.i7 if.then.i.i.i7: ; preds = %lpad37 - %23 = getelementptr inbounds nuw i8, ptr %22, i64 8 - %24 = load ptr, ptr %23, align 8 - invoke fastcc void %24(ptr nonnull %22) + %24 = getelementptr inbounds nuw i8, ptr %23, i64 8 + %25 = load ptr, ptr %24, align 8 + invoke fastcc void %24(ptr nonnull %23) to label %invoke.cont.i.i.i9 unwind label %terminate.lpad.i.i.i8 invoke.cont.i.i.i9: ; preds = %if.then.i.i.i7 @@ -76354,21 +76354,21 @@ invoke.cont.i.i.i9: ; preds = %if.then.i.i.i7 br label %ehcleanup terminate.lpad.i.i.i8: ; preds = %if.then.i.i.i7 - %25 = landingpad { ptr, i32 } + %26 = landingpad { ptr, i32 } catch ptr null - %26 = extractvalue { ptr, i32 } %25, 0 - tail call void @__clang_call_terminate(ptr %26) #39 + %27 = extractvalue { ptr, i32 } %26, 0 + tail call void @__clang_call_terminate(ptr %27) #39 unreachable ehcleanup: ; preds = %invoke.cont.i.i.i9, %lpad37 - %27 = load ptr, ptr %ref.tmp22.reload.addr, align 8 - %cmp.i.not.i.i11 = icmp eq ptr %27, null + %28 = load ptr, ptr %ref.tmp22.reload.addr, align 8 + %cmp.i.not.i.i11 = icmp eq ptr %28, null br i1 %cmp.i.not.i.i11, label %ehcleanup51, label %if.then.i.i12 if.then.i.i12: ; preds = %ehcleanup - %28 = getelementptr inbounds nuw i8, ptr %27, i64 8 - %29 = load ptr, ptr %28, align 8 - invoke fastcc void %29(ptr nonnull %27) + %29 = getelementptr inbounds nuw i8, ptr %28, i64 8 + %30 = load ptr, ptr %29, align 8 + invoke fastcc void %29(ptr nonnull %28) to label %invoke.cont.i.i14 unwind label %terminate.lpad.i.i13 invoke.cont.i.i14: ; preds = %if.then.i.i12 @@ -76376,26 +76376,26 @@ invoke.cont.i.i14: ; preds = %if.then.i.i12 br label %ehcleanup51 terminate.lpad.i.i13: ; preds = %if.then.i.i12 - %30 = landingpad { ptr, i32 } + %31 = landingpad { ptr, i32 } catch ptr null - %31 = extractvalue { ptr, i32 } %30, 0 - tail call void @__clang_call_terminate(ptr %31) #39 + %32 = extractvalue { ptr, i32 } %31, 0 + tail call void @__clang_call_terminate(ptr %32) #39 unreachable lpad48: ; preds = %_ZN12async_simple4coro4LazyIbED2Ev.exit - %32 = landingpad { ptr, i32 } + %33 = landingpad { ptr, i32 } catch ptr null br label %ehcleanup51 ehcleanup51: ; preds = %invoke.cont.i.i14, %ehcleanup, %lpad48, %lpad14 - %.pn1 = phi { ptr, i32 } [ %32, %lpad48 ], [ %10, %lpad14 ], [ %21, %ehcleanup ], [ %21, %invoke.cont.i.i14 ] + %.pn1 = phi { ptr, i32 } [ %33, %lpad48 ], [ %11, %lpad14 ], [ %22, %ehcleanup ], [ %22, %invoke.cont.i.i14 ] tail call void @_ZN4asio6detail14io_object_implINS0_22deadline_timer_serviceINS0_18chrono_time_traitsINSt6chrono3_V212steady_clockENS_11wait_traitsIS6_EEEEEENS_15any_io_executorEED2Ev(ptr noundef nonnull align 8 dereferenceable(120) %timer.reload.addr) #35 br label %catch catch: ; preds = %lpad10, %ehcleanup51 - %.pn1.pn = phi { ptr, i32 } [ %.pn1, %ehcleanup51 ], [ %9, %lpad10 ] + %.pn1.pn = phi { ptr, i32 } [ %.pn1, %ehcleanup51 ], [ %10, %lpad10 ] %exn.slot.2 = extractvalue { ptr, i32 } %.pn1.pn, 0 - %33 = tail call ptr @__cxa_begin_catch(ptr %exn.slot.2) #35 + %34 = tail call ptr @__cxa_begin_catch(ptr %exn.slot.2) #35 tail call void @_ZN12async_simple4coro6detail11LazyPromiseIvE19unhandled_exceptionEv(ptr noundef nonnull align 8 dereferenceable(24) %__promise.reload.addr) #35 invoke void @__cxa_end_catch() to label %CoroSave107 unwind label %lpad56 @@ -76404,16 +76404,16 @@ CoroSave107: ; preds = %cleanup50, %catch store ptr null, ptr %0, align 8 store i2 -2, ptr %index.addr, align 4 %retval.sroa.0.0.copyload.i16 = load ptr, ptr %__promise.reload.addr, align 8 - %34 = load ptr, ptr %retval.sroa.0.0.copyload.i16, align 8 + %35 = load ptr, ptr %retval.sroa.0.0.copyload.i16, align 8 musttail call fastcc void %34(ptr nonnull %retval.sroa.0.0.copyload.i16) ret void lpad56: ; preds = %catch - %35 = landingpad { ptr, i32 } + %36 = landingpad { ptr, i32 } cleanup store ptr null, ptr %0, align 8 store i2 -2, ptr %index.addr, align 4 - resume { ptr, i32 } %35 + resume { ptr, i32 } %36 } ; Function Attrs: mustprogress nounwind uwtable