From dc814d792be4232a0280c1a9ed525ca6996ba7d9 Mon Sep 17 00:00:00 2001 From: dtcxzyw <15650457+dtcxzyw@users.noreply.github.com> Date: Sun, 13 Oct 2024 14:12:52 +0800 Subject: [PATCH 1/2] pre-commit: PR112080 --- 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 820278fb20a..35071d65686 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/112080 # Please rebase manually # git fetch origin From feadb5a0389075b822eae04ebd80e4cdeb0afbe7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 13 Oct 2024 06:36:46 +0000 Subject: [PATCH 2/2] pre-commit: Update --- bench/abc/optimized/acecTree.c.ll | 155 ++++---- bench/abc/optimized/giaBalLut.c.ll | 43 +- bench/abc/optimized/giaStoch.c.ll | 65 ++- bench/abc/optimized/sclLiberty.c.ll | 209 +++++----- bench/abc/optimized/wlcCom.c.ll | 145 ++++--- .../abseil-cpp/optimized/container_test.cc.ll | 16 +- bench/arrow/optimized/decimal.cc.ll | 11 +- .../o3dgcDynamicVectorDecoder.cpp.ll | 15 +- .../brotli/optimized/compound_dictionary.c.ll | 4 +- bench/bullet3/optimized/b3DynamicBvh.ll | 27 +- bench/casadi/optimized/dm_instantiator.cpp.ll | 123 +++--- bench/casadi/optimized/fmu_function.cpp.ll | 64 ++- bench/casadi/optimized/sundials_dense.c.ll | 52 ++- .../archive_read_support_format_warc.c.ll | 30 +- .../optimized/cmCMakePresetsGraph.cxx.ll | 34 +- bench/cmake/optimized/cmState.cxx.ll | 4 +- .../optimized/2g9ijtjos2xwh9zs.ll | 66 +-- bench/cpython/optimized/sixstep.ll | 52 +-- .../double_conversion/optimized/bignum.cc.ll | 117 +++--- bench/eastl/optimized/BenchmarkSort.cpp.ll | 34 +- bench/eastl/optimized/BenchmarkString.cpp.ll | 2 +- .../faiss/optimized/PolysemousTraining.cpp.ll | 12 +- bench/fmt/optimized/format-impl-test.cc.ll | 91 ++--- bench/freetype/optimized/autofit.c.ll | 306 +++++++------- bench/git/optimized/commit-reach.ll | 17 +- .../optimized/country_graph_coloring.c.ll | 6 +- bench/graphviz/optimized/matrix_ops.c.ll | 332 +++++++--------- bench/gromacs/optimized/anadih.cpp.ll | 72 ++-- bench/grpc/optimized/parser.cc.ll | 14 +- bench/hyperscan/optimized/ng_prefilter.cpp.ll | 8 +- bench/icu/optimized/number_decimalquantity.ll | 75 ++-- bench/icu/optimized/utrie2_builder.ll | 126 +++--- .../optimized/phonenumberutil.cc.ll | 250 ++++++------ bench/libquic/optimized/x509_att.c.ll | 223 +++++------ bench/libquic/optimized/x509name.c.ll | 12 +- bench/llama.cpp/optimized/ggml.c.ll | 16 +- bench/llvm/optimized/DbiStreamBuilder.cpp.ll | 3 +- bench/llvm/optimized/Signals.cpp.ll | 91 +++-- bench/luau/optimized/isocline.c.ll | 80 ++-- bench/meshlab/optimized/filter_create.cpp.ll | 82 ++-- bench/nix/optimized/fromTOML.ll | 375 +++++++++--------- .../optimized/unit-unicode3.cpp.ll | 62 +-- .../optimized/unit-unicode4.cpp.ll | 86 ++-- bench/opencc/optimized/tail.cc.ll | 185 +++++---- bench/opencv/optimized/checkchessboard.cpp.ll | 55 ++- .../optimized/face_detection_mtcnn.cpp.ll | 30 +- .../optimized/stereo_binary_sgbm.cpp.ll | 151 ++++--- .../optimized/weighted_median_filter.cpp.ll | 98 +++-- bench/openjdk/optimized/classFileParser.ll | 56 +-- bench/openjdk/optimized/codeBuffer.ll | 70 ++-- bench/openjdk/optimized/g1Allocator.ll | 112 +++--- bench/openjdk/optimized/methodData.ll | 10 +- .../openmpi/optimized/coll_basic_alltoallv.ll | 149 ++++--- bench/openspiel/optimized/leduc_poker.cc.ll | 135 +++---- .../optimized/libcrypto-lib-x509_att.ll | 11 +- bench/openusd/optimized/resolver.cpp.ll | 122 +++--- bench/openvdb/optimized/FastSweeping.cc.ll | 64 +-- bench/php/optimized/string.ll | 262 ++++++------ bench/postgres/optimized/heapam.ll | 26 +- bench/pugixml/optimized/pugixml.cpp.ll | 19 +- .../optimized/fdsimpleextoustorageengine.ll | 40 +- bench/quantlib/optimized/zabr.ll | 96 ++--- bench/re2/optimized/compile.cc.ll | 59 ++- bench/re2/optimized/regexp.cc.ll | 61 ++- bench/redis/optimized/eval.ll | 154 ++++--- bench/rocksdb/optimized/backup_engine.cc.ll | 24 +- bench/rocksdb/optimized/column_family.cc.ll | 116 +++--- bench/ruby/optimized/string.ll | 297 +++++++------- .../optimized/4vbxd64hrlz3u0mk.ll | 355 ++++++++--------- .../optimized/unigram_model.cc.ll | 70 ++-- bench/sqlite/optimized/sqlite3.ll | 255 ++++++------ bench/stockfish/optimized/tbprobe.ll | 46 +-- bench/sundials/optimized/cvode.c.ll | 26 +- bench/sundials/optimized/sundials_dense.c.ll | 152 ++++--- bench/wireshark/optimized/packet-btatt.c.ll | 21 +- .../optimized/packet-netperfmeter.c.ll | 69 ++-- bench/wireshark/optimized/packet-rtcp.c.ll | 25 +- bench/wireshark/optimized/packet-tcap.c.ll | 106 ++--- bench/xgboost/optimized/lambdarank_obj.cc.ll | 136 +++---- .../optimized/20igqmfettcex48uahr8huyna.ll | 41 +- bench/zxing/optimized/ConcentricFinder.cpp.ll | 28 +- 81 files changed, 3510 insertions(+), 3829 deletions(-) diff --git a/bench/abc/optimized/acecTree.c.ll b/bench/abc/optimized/acecTree.c.ll index b38a47721a2..33f0348c4d6 100644 --- a/bench/abc/optimized/acecTree.c.ll +++ b/bench/abc/optimized/acecTree.c.ll @@ -1923,8 +1923,8 @@ Vec_IntCountLarger.exit88.thread: ; preds = %Vec_IntCountLarger. %87 = getelementptr i8, ptr %0, i64 160 br label %88 -88: ; preds = %.lr.ph117, %135 - %indvars.iv133 = phi i64 [ 0, %.lr.ph117 ], [ %indvars.iv.next134.pre-phi, %135 ] +88: ; preds = %.lr.ph117, %134 + %indvars.iv133 = phi i64 [ 0, %.lr.ph117 ], [ %indvars.iv.next134.pre-phi, %134 ] %89 = getelementptr inbounds i32, ptr %12, i64 %indvars.iv133 %90 = load i32, ptr %89, align 4 %91 = icmp sgt i32 %90, 1 @@ -1932,7 +1932,7 @@ Vec_IntCountLarger.exit88.thread: ; preds = %Vec_IntCountLarger. ._crit_edge: ; preds = %88 %.pre139 = add nuw nsw i64 %indvars.iv133, 1 - br label %135 + br label %134 92: ; preds = %88 %.val80 = load ptr, ptr %87, align 8 @@ -1948,110 +1948,107 @@ Vec_IntCountLarger.exit88.thread: ; preds = %Vec_IntCountLarger. %99 = shl nsw i32 %98, 1 %100 = sext i32 %99 to i64 %.not.i.i97 = icmp slt i64 %indvars.iv133, %100 - %101 = sext i32 %98 to i64 - %.not.i.i.not.i.i = icmp slt i64 %indvars.iv133, %101 - br i1 %.not.i.i97, label %114, label %102 - -102: ; preds = %97 - br i1 %.not.i.i.not.i.i, label %Vec_IntGrow.exit.i.i.i, label %103 - -103: ; preds = %102 - %104 = getelementptr inbounds i8, ptr %.val80, i64 8 - %105 = load ptr, ptr %104, align 8 - %.not9.i.i.i.i = icmp eq ptr %105, null - %106 = shl nuw nsw i64 %93, 2 - br i1 %.not9.i.i.i.i, label %109, label %107 - -107: ; preds = %103 - %108 = tail call ptr @realloc(ptr noundef nonnull %105, i64 noundef %106) #23 - br label %111 - -109: ; preds = %103 - %110 = tail call noalias ptr @malloc(i64 noundef %106) #22 - br label %111 - -111: ; preds = %109, %107 - %112 = phi ptr [ %108, %107 ], [ %110, %109 ] - store ptr %112, ptr %104, align 8 - %113 = trunc nuw nsw i64 %93 to i32 + br i1 %.not.i.i97, label %112, label %101 + +101: ; preds = %97 + %102 = getelementptr inbounds i8, ptr %.val80, i64 8 + %103 = load ptr, ptr %102, align 8 + %.not9.i.i.i.i = icmp eq ptr %103, null + %104 = shl nuw nsw i64 %93, 2 + br i1 %.not9.i.i.i.i, label %107, label %105 + +105: ; preds = %101 + %106 = tail call ptr @realloc(ptr noundef nonnull %103, i64 noundef %104) #23 + br label %109 + +107: ; preds = %101 + %108 = tail call noalias ptr @malloc(i64 noundef %104) #22 + br label %109 + +109: ; preds = %107, %105 + %110 = phi ptr [ %106, %105 ], [ %108, %107 ] + store ptr %110, ptr %102, align 8 + %111 = trunc nuw nsw i64 %93 to i32 br label %Vec_IntGrow.exit.sink.split.i.i.i -114: ; preds = %97 - br i1 %.not.i.i.not.i.i, label %Vec_IntGrow.exit.i.i.i, label %115 - -115: ; preds = %114 - %116 = getelementptr inbounds i8, ptr %.val80, i64 8 - %117 = load ptr, ptr %116, align 8 - %.not9.i21.i.i.i = icmp eq ptr %117, null - %118 = shl nsw i64 %100, 2 - br i1 %.not9.i21.i.i.i, label %121, label %119 - -119: ; preds = %115 - %120 = tail call ptr @realloc(ptr noundef nonnull %117, i64 noundef %118) #23 - br label %123 - -121: ; preds = %115 - %122 = tail call noalias ptr @malloc(i64 noundef %118) #22 - br label %123 - -123: ; preds = %121, %119 - %124 = phi ptr [ %120, %119 ], [ %122, %121 ] - store ptr %124, ptr %116, align 8 +112: ; preds = %97 + %113 = sext i32 %98 to i64 + %.not.i.i.not.i.i = icmp slt i64 %indvars.iv133, %113 + br i1 %.not.i.i.not.i.i, label %Vec_IntGrow.exit.i.i.i, label %114 + +114: ; preds = %112 + %115 = getelementptr inbounds i8, ptr %.val80, i64 8 + %116 = load ptr, ptr %115, align 8 + %.not9.i21.i.i.i = icmp eq ptr %116, null + %117 = shl nsw i64 %100, 2 + br i1 %.not9.i21.i.i.i, label %120, label %118 + +118: ; preds = %114 + %119 = tail call ptr @realloc(ptr noundef nonnull %116, i64 noundef %117) #23 + br label %122 + +120: ; preds = %114 + %121 = tail call noalias ptr @malloc(i64 noundef %117) #22 + br label %122 + +122: ; preds = %120, %118 + %123 = phi ptr [ %119, %118 ], [ %121, %120 ] + store ptr %123, ptr %115, align 8 br label %Vec_IntGrow.exit.sink.split.i.i.i -Vec_IntGrow.exit.sink.split.i.i.i: ; preds = %123, %111 - %.sink.i.i.i = phi i32 [ %99, %123 ], [ %113, %111 ] +Vec_IntGrow.exit.sink.split.i.i.i: ; preds = %122, %109 + %.sink.i.i.i = phi i32 [ %99, %122 ], [ %111, %109 ] store i32 %.sink.i.i.i, ptr %.val80, align 8 %.pre.i.i = load i32, ptr %94, align 4 %.pre = sext i32 %.pre.i.i to i64 br label %Vec_IntGrow.exit.i.i.i -Vec_IntGrow.exit.i.i.i: ; preds = %Vec_IntGrow.exit.sink.split.i.i.i, %114, %102 - %.pre-phi = phi i64 [ %.pre, %Vec_IntGrow.exit.sink.split.i.i.i ], [ %96, %114 ], [ %96, %102 ] +Vec_IntGrow.exit.i.i.i: ; preds = %Vec_IntGrow.exit.sink.split.i.i.i, %112 + %.pre-phi = phi i64 [ %.pre, %Vec_IntGrow.exit.sink.split.i.i.i ], [ %96, %112 ] %.not3.i.i = icmp sgt i64 %.pre-phi, %indvars.iv133 br i1 %.not3.i.i, label %._crit_edge.i.i.i, label %.lr.ph.i.i.i .lr.ph.i.i.i: ; preds = %Vec_IntGrow.exit.i.i.i - %125 = getelementptr inbounds i8, ptr %.val80, i64 8 - br label %126 - -126: ; preds = %126, %.lr.ph.i.i.i - %indvars.iv.i.i.i = phi i64 [ %.pre-phi, %.lr.ph.i.i.i ], [ %indvars.iv.next.i.i.i, %126 ] - %127 = load ptr, ptr %125, align 8 - %128 = getelementptr inbounds i32, ptr %127, i64 %indvars.iv.i.i.i - store i32 0, ptr %128, align 4 + %124 = getelementptr inbounds i8, ptr %.val80, i64 8 + br label %125 + +125: ; preds = %125, %.lr.ph.i.i.i + %indvars.iv.i.i.i = phi i64 [ %.pre-phi, %.lr.ph.i.i.i ], [ %indvars.iv.next.i.i.i, %125 ] + %126 = load ptr, ptr %124, align 8 + %127 = getelementptr inbounds i32, ptr %126, i64 %indvars.iv.i.i.i + store i32 0, ptr %127, align 4 %indvars.iv.next.i.i.i = add nsw i64 %indvars.iv.i.i.i, 1 %exitcond.not.i.i.i = icmp eq i64 %indvars.iv.i.i.i, %indvars.iv133 - br i1 %exitcond.not.i.i.i, label %._crit_edge.i.i.i, label %126, !llvm.loop !32 + br i1 %exitcond.not.i.i.i, label %._crit_edge.i.i.i, label %125, !llvm.loop !32 -._crit_edge.i.i.i: ; preds = %126, %Vec_IntGrow.exit.i.i.i - %129 = trunc nuw nsw i64 %93 to i32 - store i32 %129, ptr %94, align 4 +._crit_edge.i.i.i: ; preds = %125, %Vec_IntGrow.exit.i.i.i + %128 = trunc nuw nsw i64 %93 to i32 + store i32 %128, ptr %94, align 4 br label %Gia_ObjLevelId.exit Gia_ObjLevelId.exit: ; preds = %92, %._crit_edge.i.i.i - %130 = getelementptr i8, ptr %.val80, i64 8 - %.val.i.i = load ptr, ptr %130, align 8 - %131 = getelementptr inbounds i32, ptr %.val.i.i, i64 %indvars.iv133 - %132 = load i32, ptr %131, align 4 - %133 = trunc nuw nsw i64 %indvars.iv133 to i32 - %134 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.11, i32 noundef %133, i32 noundef %132, i32 noundef %90) - br label %135 - -135: ; preds = %._crit_edge, %Gia_ObjLevelId.exit + %129 = getelementptr i8, ptr %.val80, i64 8 + %.val.i.i = load ptr, ptr %129, align 8 + %130 = getelementptr inbounds i32, ptr %.val.i.i, i64 %indvars.iv133 + %131 = load i32, ptr %130, align 4 + %132 = trunc nuw nsw i64 %indvars.iv133 to i32 + %133 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.11, i32 noundef %132, i32 noundef %131, i32 noundef %90) + br label %134 + +134: ; preds = %._crit_edge, %Gia_ObjLevelId.exit %indvars.iv.next134.pre-phi = phi i64 [ %.pre139, %._crit_edge ], [ %93, %Gia_ObjLevelId.exit ] %exitcond136.not = icmp eq i64 %indvars.iv.next134.pre-phi, %wide.trip.count.i br i1 %exitcond136.not, label %.critedge8, label %88, !llvm.loop !33 -.critedge8: ; preds = %135, %Vec_IntCountLarger.exit88.thread +.critedge8: ; preds = %134, %Vec_IntCountLarger.exit88.thread %.not.i98 = icmp eq ptr %12, null - br i1 %.not.i98, label %Vec_IntFree.exit, label %136 + br i1 %.not.i98, label %Vec_IntFree.exit, label %135 -136: ; preds = %.critedge8 +135: ; preds = %.critedge8 tail call void @free(ptr noundef nonnull %12) #21 br label %Vec_IntFree.exit -Vec_IntFree.exit: ; preds = %.critedge8, %136 +Vec_IntFree.exit: ; preds = %.critedge8, %135 ret void } diff --git a/bench/abc/optimized/giaBalLut.c.ll b/bench/abc/optimized/giaBalLut.c.ll index 98c391490f9..174e537ee23 100644 --- a/bench/abc/optimized/giaBalLut.c.ll +++ b/bench/abc/optimized/giaBalLut.c.ll @@ -3446,7 +3446,7 @@ Vec_IntSelectSortCostLit.exit.i: ; preds = %._crit_edge.i.i 503: ; preds = %505, %.lr.ph.i85 %.012.in.i.i.i = phi i32 [ %.val52139.i, %.lr.ph.i85 ], [ %.012.i.i.i, %505 ] %504 = icmp sgt i32 %.012.in.i.i.i, 1 - br i1 %504, label %505, label %.lr.ph52.i.i.preheader + br i1 %504, label %505, label %.lr.ph52.preheader.i.i 505: ; preds = %503 %.012.i.i.i = add nsw i32 %.012.in.i.i.i, -1 @@ -3462,10 +3462,6 @@ Vec_IntSelectSortCostLit.exit.i: ; preds = %._crit_edge.i.i br i1 %513, label %.preheader.lr.ph.i.i, label %503, !llvm.loop !38 .preheader.lr.ph.i.i: ; preds = %505 - %.not9420.not.i.not.i = icmp slt i32 %.val52139.i, %.012.in.i.i.i - br i1 %.not9420.not.i.not.i, label %._crit_edge53.thread.i.i, label %.preheader.preheader.i.i - -.preheader.preheader.i.i: ; preds = %.preheader.lr.ph.i.i %.08227.i.i = add nsw i32 %.012.in.i.i.i, -2 %514 = zext nneg i32 %.012.i.i.i to i64 %515 = zext nneg i32 %.08227.i.i to i64 @@ -3476,11 +3472,11 @@ Vec_IntSelectSortCostLit.exit.i: ; preds = %._crit_edge.i.i %516 = icmp sgt i64 %indvars.iv63.i.i, 0 br i1 %516, label %.preheader.i.i, label %._crit_edge.i88.i, !llvm.loop !39 -.preheader.i.i: ; preds = %..loopexit3_crit_edge.i.i, %.preheader.preheader.i.i - %indvars.iv63.i.i = phi i64 [ %515, %.preheader.preheader.i.i ], [ %indvars.iv.next64.i.i, %..loopexit3_crit_edge.i.i ] - %.030.i.i = phi i32 [ 1000000000, %.preheader.preheader.i.i ], [ %.2.i.i, %..loopexit3_crit_edge.i.i ] - %.07029.i.i = phi i32 [ -1, %.preheader.preheader.i.i ], [ %.272.i.i, %..loopexit3_crit_edge.i.i ] - %.07628.i.i = phi i32 [ -1, %.preheader.preheader.i.i ], [ %.278.i.i, %..loopexit3_crit_edge.i.i ] +.preheader.i.i: ; preds = %..loopexit3_crit_edge.i.i, %.preheader.lr.ph.i.i + %indvars.iv63.i.i = phi i64 [ %515, %.preheader.lr.ph.i.i ], [ %indvars.iv.next64.i.i, %..loopexit3_crit_edge.i.i ] + %.030.i.i = phi i32 [ 1000000000, %.preheader.lr.ph.i.i ], [ %.2.i.i, %..loopexit3_crit_edge.i.i ] + %.07029.i.i = phi i32 [ -1, %.preheader.lr.ph.i.i ], [ %.272.i.i, %..loopexit3_crit_edge.i.i ] + %.07628.i.i = phi i32 [ -1, %.preheader.lr.ph.i.i ], [ %.278.i.i, %..loopexit3_crit_edge.i.i ] %517 = getelementptr inbounds i32, ptr %.val57.i, i64 %indvars.iv63.i.i %518 = trunc nuw nsw i64 %indvars.iv63.i.i to i32 br label %Gia_ObjIsXor.exit.i87.i @@ -3583,13 +3579,14 @@ Bal_ManEvalTwo.exit.thread.i.i: ; preds = %560, %558, %Bal_Man br label %Bal_ManFindBestPair.exit.i ._crit_edge.thread.i.i: ; preds = %562, %._crit_edge.i88.i - %575 = sext i32 %.012.i.i.i to i64 - br label %.lr.ph52.i.i.preheader - -.lr.ph52.i.i.preheader: ; preds = %503, %._crit_edge.thread.i.i - %indvars.iv71.i.i.ph = phi i64 [ %575, %._crit_edge.thread.i.i ], [ 0, %503 ] - %.37349.i.i.ph = phi i32 [ %.272.i.i, %._crit_edge.thread.i.i ], [ -1, %503 ] - %.37948.i.i.ph = phi i32 [ %.278.i.i, %._crit_edge.thread.i.i ], [ -1, %503 ] + %.not91.not46.i.i.not = icmp sgt i32 %.012.in.i.i.i, %.val52139.i + br i1 %.not91.not46.i.i.not, label %._crit_edge53.thread.i.i, label %.lr.ph52.preheader.i.i + +.lr.ph52.preheader.i.i: ; preds = %503, %._crit_edge.thread.i.i + %.012.lcssa.i7783.i.i100 = phi i32 [ %.012.i.i.i, %._crit_edge.thread.i.i ], [ 0, %503 ] + %.076.lcssa84.i.i99 = phi i32 [ %.278.i.i, %._crit_edge.thread.i.i ], [ -1, %503 ] + %.070.lcssa85.i.i98 = phi i32 [ %.272.i.i, %._crit_edge.thread.i.i ], [ -1, %503 ] + %575 = sext i32 %.012.lcssa.i7783.i.i100 to i64 br label %.lr.ph52.i.i .loopexit.i.i: ; preds = %Bal_ManEvalTwo.exit111.thread.i.i, %.lr.ph52.i.i @@ -3599,11 +3596,11 @@ Bal_ManEvalTwo.exit.thread.i.i: ; preds = %560, %558, %Bal_Man %exitcond74.not.i.i = icmp eq i64 %indvars.iv.next72.i.i, %494 br i1 %exitcond74.not.i.i, label %._crit_edge53.i.i, label %.lr.ph52.i.i, !llvm.loop !41 -.lr.ph52.i.i: ; preds = %.lr.ph52.i.i.preheader, %.loopexit.i.i - %indvars.iv71.i.i = phi i64 [ %indvars.iv.next72.i.i, %.loopexit.i.i ], [ %indvars.iv71.i.i.ph, %.lr.ph52.i.i.preheader ] - %.350.i.i = phi i32 [ %.4.lcssa.i.i, %.loopexit.i.i ], [ 1000000000, %.lr.ph52.i.i.preheader ] - %.37349.i.i = phi i32 [ %.474.lcssa.i.i, %.loopexit.i.i ], [ %.37349.i.i.ph, %.lr.ph52.i.i.preheader ] - %.37948.i.i = phi i32 [ %.480.lcssa.i.i, %.loopexit.i.i ], [ %.37948.i.i.ph, %.lr.ph52.i.i.preheader ] +.lr.ph52.i.i: ; preds = %.loopexit.i.i, %.lr.ph52.preheader.i.i + %indvars.iv71.i.i = phi i64 [ %575, %.lr.ph52.preheader.i.i ], [ %indvars.iv.next72.i.i, %.loopexit.i.i ] + %.350.i.i = phi i32 [ 1000000000, %.lr.ph52.preheader.i.i ], [ %.4.lcssa.i.i, %.loopexit.i.i ] + %.37349.i.i = phi i32 [ %.070.lcssa85.i.i98, %.lr.ph52.preheader.i.i ], [ %.474.lcssa.i.i, %.loopexit.i.i ] + %.37948.i.i = phi i32 [ %.076.lcssa84.i.i99, %.lr.ph52.preheader.i.i ], [ %.480.lcssa.i.i, %.loopexit.i.i ] %indvars.iv.next72.i.i = add nuw nsw i64 %indvars.iv71.i.i, 1 %.not93.not37.i.i = icmp ult i64 %indvars.iv.next72.i.i, %494 br i1 %.not93.not37.i.i, label %.lr.ph.i82.i, label %.loopexit.i.i @@ -3702,7 +3699,7 @@ Bal_ManEvalTwo.exit111.thread.i.i: ; preds = %625, %623, %Bal_Man %630 = or i32 %629, %.480.lcssa.i.i br label %Bal_ManFindBestPair.exit.i -._crit_edge53.thread.i.i: ; preds = %.preheader.lr.ph.i.i, %._crit_edge53.i.i +._crit_edge53.thread.i.i: ; preds = %._crit_edge53.i.i, %._crit_edge.thread.i.i %631 = shl i32 %.val52139.i, 16 %632 = add i32 %631, -65536 %633 = add nsw i32 %.val52139.i, -2 diff --git a/bench/abc/optimized/giaStoch.c.ll b/bench/abc/optimized/giaStoch.c.ll index a48161253ac..de65cd95b55 100644 --- a/bench/abc/optimized/giaStoch.c.ll +++ b/bench/abc/optimized/giaStoch.c.ll @@ -3157,29 +3157,19 @@ define noalias noundef ptr @Gia_ManStochNodes(ptr noundef %0, i32 noundef %1, i3 %40 = getelementptr i8, ptr %.0.lcssa, i64 4 %.0.val = load i32, ptr %40, align 4 %41 = icmp eq i32 %.0.val, 0 - br i1 %41, label %.lr.ph.i, label %48 + br i1 %41, label %.lr.ph.i, label %45 .lr.ph.i: ; preds = %._crit_edge %.val = load i32, ptr %5, align 4 %42 = add nsw i32 %.val, -1 %43 = sext i32 %42 to i64 %.val8.i = load ptr, ptr %7, align 8 - %44 = sext i32 %.val to i64 - br label %45 - -45: ; preds = %45, %.lr.ph.i - %indvars.iv.i = phi i64 [ %43, %.lr.ph.i ], [ %indvars.iv.next.i, %45 ] - %46 = getelementptr inbounds %struct.Vec_Int_t_, ptr %.val8.i, i64 %indvars.iv.i, i32 1 - store i32 0, ptr %46, align 4 - %indvars.iv.next.i = add nsw i64 %indvars.iv.i, 1 - %47 = icmp slt i64 %indvars.iv.next.i, %44 - br i1 %47, label %45, label %Vec_WecShrink.exit, !llvm.loop !35 - -Vec_WecShrink.exit: ; preds = %45 + %44 = getelementptr inbounds %struct.Vec_Int_t_, ptr %.val8.i, i64 %43, i32 1 + store i32 0, ptr %44, align 4 store i32 %42, ptr %5, align 4 - br label %48 + br label %45 -48: ; preds = %Vec_WecShrink.exit, %._crit_edge +45: ; preds = %.lr.ph.i, %._crit_edge ret ptr %4 } @@ -3321,7 +3311,7 @@ define noalias noundef ptr @Gia_ManStochInputs(ptr noundef %0, ptr nocapture nou %.val68 = load i32, ptr %17, align 4 %25 = sext i32 %.val68 to i64 %26 = icmp slt i64 %indvars.iv.next, %25 - br i1 %26, label %20, label %.critedge2, !llvm.loop !36 + br i1 %26, label %20, label %.critedge2, !llvm.loop !35 .critedge2: ; preds = %20, %14 %.val129 = phi i32 [ %.val68120, %14 ], [ %.val68, %20 ] @@ -3471,7 +3461,7 @@ Gia_ObjUpdateTravIdCurrentId.exit: ; preds = %.lr.ph125, %Vec_Int %88 = load i32, ptr %87, align 4 %89 = sext i32 %88 to i64 %90 = icmp slt i64 %indvars.iv.next139, %89 - br i1 %90, label %.lr.ph125, label %.critedge6.loopexit, !llvm.loop !37 + br i1 %90, label %.lr.ph125, label %.critedge6.loopexit, !llvm.loop !36 .critedge6.loopexit: ; preds = %Gia_ObjUpdateTravIdCurrentId.exit %.val67.pre = load i32, ptr %17, align 4 @@ -3485,7 +3475,7 @@ Gia_ObjUpdateTravIdCurrentId.exit: ; preds = %.lr.ph125, %Vec_Int %indvars.iv.next142 = add nuw nsw i64 %indvars.iv141, 1 %91 = sext i32 %.val67 to i64 %92 = icmp slt i64 %indvars.iv.next142, %91 - br i1 %92, label %33, label %.critedge4, !llvm.loop !38 + br i1 %92, label %33, label %.critedge4, !llvm.loop !37 93: ; preds = %.lr.ph131, %Gia_ObjUpdateTravIdCurrentId.exit102 %indvars.iv144 = phi i64 [ 0, %.lr.ph131 ], [ %indvars.iv.next145, %Gia_ObjUpdateTravIdCurrentId.exit102 ] @@ -3672,14 +3662,14 @@ Gia_ObjUpdateTravIdCurrentId.exit102: ; preds = %Gia_ObjUpdateTravId %.val = load i32, ptr %17, align 4 %175 = sext i32 %.val to i64 %176 = icmp slt i64 %indvars.iv.next145, %175 - br i1 %176, label %93, label %.critedge4, !llvm.loop !39 + br i1 %176, label %93, label %.critedge4, !llvm.loop !38 .critedge4: ; preds = %.critedge6, %93, %Gia_ObjUpdateTravIdCurrentId.exit102, %.preheader118, %.preheader117 %indvars.iv.next148 = add nuw nsw i64 %indvars.iv147, 1 %.val85 = load i32, ptr %7, align 4 %177 = sext i32 %.val85 to i64 %178 = icmp slt i64 %indvars.iv.next148, %177 - br i1 %178, label %14, label %.critedge, !llvm.loop !40 + br i1 %178, label %14, label %.critedge, !llvm.loop !39 .critedge: ; preds = %.critedge4, %2 ret ptr %3 @@ -3786,7 +3776,7 @@ define noalias noundef ptr @Gia_ManStochOutputs(ptr noundef %0, ptr nocapture no %49 = load i32, ptr %48, align 4 %50 = sext i32 %49 to i64 %51 = icmp slt i64 %indvars.iv.next, %50 - br i1 %51, label %.lr.ph, label %.critedge4.loopexit, !llvm.loop !41 + br i1 %51, label %.lr.ph, label %.critedge4.loopexit, !llvm.loop !40 .critedge4.loopexit: ; preds = %.lr.ph %.val130.pre = load i32, ptr %16, align 4 @@ -3799,7 +3789,7 @@ define noalias noundef ptr @Gia_ManStochOutputs(ptr noundef %0, ptr nocapture no %indvars.iv.next220 = add nuw nsw i64 %indvars.iv219, 1 %52 = sext i32 %.val130 to i64 %53 = icmp slt i64 %indvars.iv.next220, %52 - br i1 %53, label %22, label %.critedge2.preheader, !llvm.loop !42 + br i1 %53, label %22, label %.critedge2.preheader, !llvm.loop !41 .critedge6.preheader: ; preds = %.critedge2 %54 = icmp sgt i32 %.val129, 0 @@ -3903,7 +3893,7 @@ Vec_IntPush.exit: ; preds = %.Vec_IntGrow.exit10 %indvars.iv.next223 = add nuw nsw i64 %indvars.iv222, 1 %95 = sext i32 %.val129 to i64 %96 = icmp slt i64 %indvars.iv.next223, %95 - br i1 %96, label %56, label %.critedge6.preheader, !llvm.loop !43 + br i1 %96, label %56, label %.critedge6.preheader, !llvm.loop !42 97: ; preds = %.lr.ph198, %.critedge10 %.val128260 = phi i32 [ %.val129, %.lr.ph198 ], [ %.val128, %.critedge10 ] @@ -3955,7 +3945,7 @@ Vec_IntPush.exit: ; preds = %.Vec_IntGrow.exit10 %124 = load i32, ptr %123, align 4 %125 = sext i32 %124 to i64 %126 = icmp slt i64 %indvars.iv.next226, %125 - br i1 %126, label %.lr.ph195, label %.critedge10.loopexit, !llvm.loop !44 + br i1 %126, label %.lr.ph195, label %.critedge10.loopexit, !llvm.loop !43 .critedge10.loopexit: ; preds = %.lr.ph195 %.val128.pre = load i32, ptr %16, align 4 @@ -3968,14 +3958,14 @@ Vec_IntPush.exit: ; preds = %.Vec_IntGrow.exit10 %indvars.iv.next229 = add nuw nsw i64 %indvars.iv228, 1 %127 = sext i32 %.val128 to i64 %128 = icmp slt i64 %indvars.iv.next229, %127 - br i1 %128, label %97, label %.critedge8, !llvm.loop !45 + br i1 %128, label %97, label %.critedge8, !llvm.loop !44 .critedge8: ; preds = %.critedge10, %13, %.critedge2.preheader, %.critedge6.preheader %indvars.iv.next232 = add nuw nsw i64 %indvars.iv231, 1 %.val150 = load i32, ptr %8, align 4 %129 = sext i32 %.val150 to i64 %130 = icmp slt i64 %indvars.iv.next232, %129 - br i1 %130, label %13, label %.critedge, !llvm.loop !46 + br i1 %130, label %13, label %.critedge, !llvm.loop !45 131: ; preds = %2 tail call void @Gia_ManCreateRefs(ptr noundef nonnull %0) #20 @@ -4008,7 +3998,7 @@ Vec_IntPush.exit: ; preds = %.Vec_IntGrow.exit10 142: ; preds = %.lr.ph279 %.val142 = load ptr, ptr %134, align 8 %.not118 = icmp eq ptr %.val142, null - br i1 %.not118, label %.critedge14, label %.lr.ph279, !llvm.loop !47 + br i1 %.not118, label %.critedge14, label %.lr.ph279, !llvm.loop !46 .lr.ph279: ; preds = %.lr.ph204, %142 %.val142278 = phi ptr [ %.val142, %142 ], [ %.val142275, %.lr.ph204 ] @@ -4048,7 +4038,7 @@ Vec_IntPush.exit: ; preds = %.Vec_IntGrow.exit10 %.val127 = load i32, ptr %139, align 4 %165 = sext i32 %.val127 to i64 %166 = icmp slt i64 %indvars.iv.next235, %165 - br i1 %166, label %142, label %.critedge14, !llvm.loop !47 + br i1 %166, label %142, label %.critedge14, !llvm.loop !46 .critedge14: ; preds = %.lr.ph279, %142, %.lr.ph204 %.val126206 = phi i32 [ %.val127202, %.lr.ph204 ], [ %.val127, %142 ], [ %.val127, %.lr.ph279 ] @@ -4151,7 +4141,7 @@ Vec_IntPush.exit173: ; preds = %.Vec_IntGrow.exit10 %indvars.iv.next238 = add nuw nsw i64 %indvars.iv237, 1 %208 = sext i32 %.val126 to i64 %209 = icmp slt i64 %indvars.iv.next238, %208 - br i1 %209, label %170, label %.critedge16, !llvm.loop !48 + br i1 %209, label %170, label %.critedge16, !llvm.loop !47 .critedge16: ; preds = %170, %207 %.val210268 = phi i32 [ %.val126, %207 ], [ %.val126265, %170 ] @@ -4204,14 +4194,14 @@ Vec_IntPush.exit173: ; preds = %.Vec_IntGrow.exit10 %.val = load i32, ptr %139, align 4 %236 = sext i32 %.val to i64 %237 = icmp slt i64 %indvars.iv.next241, %236 - br i1 %237, label %212, label %.critedge18, !llvm.loop !49 + br i1 %237, label %212, label %.critedge18, !llvm.loop !48 .critedge18: ; preds = %213, %212, %136, %.critedge14, %.critedge16 %indvars.iv.next244 = add nuw nsw i64 %indvars.iv243, 1 %.val149 = load i32, ptr %8, align 4 %238 = sext i32 %.val149 to i64 %239 = icmp slt i64 %indvars.iv.next244, %238 - br i1 %239, label %136, label %.critedge, !llvm.loop !50 + br i1 %239, label %136, label %.critedge, !llvm.loop !49 .critedge: ; preds = %.critedge8, %.critedge18, %9, %131 ret ptr %3 @@ -4315,7 +4305,7 @@ Abc_Clock.exit79: ; preds = %27, %31 %58 = call i32 @Abc_Random(i32 noundef 0) #20 %59 = add nuw i32 %.0125, 1 %exitcond.not = icmp eq i32 %.0125, %smax - br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !51 + br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !50 ._crit_edge: ; preds = %.lr.ph, %43 %.not68 = icmp eq i32 %4, 0 @@ -4479,7 +4469,7 @@ Abc_Clock.exit87: ; preds = %118, %125 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %142 = sext i32 %.val.i88 to i64 %143 = icmp slt i64 %indvars.iv.next.i, %142 - br i1 %143, label %137, label %.critedge.i, !llvm.loop !52 + br i1 %143, label %137, label %.critedge.i, !llvm.loop !51 .critedge.i: ; preds = %141, %.critedge %144 = getelementptr inbounds i8, ptr %81, i64 8 @@ -4518,7 +4508,7 @@ Vec_PtrFreeFunc.exit: ; preds = %.critedge.i, %146 156: ; preds = %155, %152 %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 %exitcond130.not = icmp eq i64 %indvars.iv.next.i.i, %151 - br i1 %exitcond130.not, label %._crit_edge.i.i.thread, label %152, !llvm.loop !53 + br i1 %exitcond130.not, label %._crit_edge.i.i.thread, label %152, !llvm.loop !52 ._crit_edge.i.i: ; preds = %Vec_PtrFreeFunc.exit %.not.i.i89 = icmp eq ptr %150, null @@ -4555,7 +4545,7 @@ Vec_WecFree.exit: ; preds = %._crit_edge.i.i, %. 166: ; preds = %165, %162 %indvars.iv.next.i.i96 = add nuw nsw i64 %indvars.iv.i.i93, 1 %exitcond131.not = icmp eq i64 %indvars.iv.next.i.i96, %161 - br i1 %exitcond131.not, label %._crit_edge.i.i90.thread, label %162, !llvm.loop !53 + br i1 %exitcond131.not, label %._crit_edge.i.i90.thread, label %162, !llvm.loop !52 ._crit_edge.i.i90: ; preds = %Vec_WecFree.exit %.not.i.i91 = icmp eq ptr %160, null @@ -4592,7 +4582,7 @@ Vec_WecFree.exit97: ; preds = %._crit_edge.i.i90, 176: ; preds = %175, %172 %indvars.iv.next.i.i104 = add nuw nsw i64 %indvars.iv.i.i101, 1 %exitcond132.not = icmp eq i64 %indvars.iv.next.i.i104, %171 - br i1 %exitcond132.not, label %._crit_edge.i.i98.thread, label %172, !llvm.loop !53 + br i1 %exitcond132.not, label %._crit_edge.i.i98.thread, label %172, !llvm.loop !52 ._crit_edge.i.i98: ; preds = %Vec_WecFree.exit97 %.not.i.i99 = icmp eq ptr %170, null @@ -4633,7 +4623,7 @@ Abc_Clock.exit107: ; preds = %177, %180 189: ; preds = %Vec_WecFree.exit105, %Abc_Clock.exit107 %190 = add nuw nsw i32 %.1126, 1 %exitcond133.not = icmp eq i32 %190, %1 - br i1 %exitcond133.not, label %.loopexit, label %67, !llvm.loop !54 + br i1 %exitcond133.not, label %.loopexit, label %67, !llvm.loop !53 .loopexit: ; preds = %189, %62, %187 %191 = call ptr (...) @Abc_FrameGetGlobalFrame() #20 @@ -5022,4 +5012,3 @@ attributes #28 = { cold noreturn nounwind } !51 = distinct !{!51, !5} !52 = distinct !{!52, !5} !53 = distinct !{!53, !5} -!54 = distinct !{!54, !5} diff --git a/bench/abc/optimized/sclLiberty.c.ll b/bench/abc/optimized/sclLiberty.c.ll index 0bd92e69dfe..4063d998349 100644 --- a/bench/abc/optimized/sclLiberty.c.ll +++ b/bench/abc/optimized/sclLiberty.c.ll @@ -1896,7 +1896,7 @@ define noundef ptr @Scl_LibertyParse(ptr noundef %0, i32 noundef %1) local_unnam %5 = alloca ptr, align 8 %6 = tail call ptr @Scl_LibertyStart(ptr noundef %0) %7 = icmp eq ptr %6, null - br i1 %7, label %89, label %8 + br i1 %7, label %87, label %8 8: ; preds = %2 %9 = getelementptr inbounds i8, ptr %6, i64 8 @@ -1915,7 +1915,7 @@ define noundef ptr @Scl_LibertyParse(ptr noundef %0, i32 noundef %1) local_unnam br label %.lr.ph50.i .lr.ph50.i: ; preds = %.loopexit.i, %.lr.ph50.preheader.i - %.03049.i = phi ptr [ %50, %.loopexit.i ], [ %10, %.lr.ph50.preheader.i ] + %.03049.i = phi ptr [ %48, %.loopexit.i ], [ %10, %.lr.ph50.preheader.i ] %.0304958.i = ptrtoint ptr %.03049.i to i64 %18 = load i8, ptr %.03049.i, align 1 %19 = icmp eq i8 %18, 47 @@ -1925,7 +1925,7 @@ define noundef ptr @Scl_LibertyParse(ptr noundef %0, i32 noundef %1) local_unnam %21 = getelementptr inbounds i8, ptr %.03049.i, i64 1 %22 = load i8, ptr %21, align 1 %23 = icmp eq i8 %22, 42 - br i1 %23, label %.preheader33.i, label %40 + br i1 %23, label %.preheader33.i, label %38 .preheader33.i: ; preds = %20 %24 = icmp ult ptr %.03049.i, %15 @@ -1938,85 +1938,80 @@ define noundef ptr @Scl_LibertyParse(ptr noundef %0, i32 noundef %1) local_unnam %scevgep64.i = getelementptr i8, ptr %.03049.i, i64 2 br label %.lr.ph45.i -.lr.ph45.i: ; preds = %38, %.lr.ph45.preheader.i - %indvars.iv.i = phi ptr [ %scevgep64.i, %.lr.ph45.preheader.i ], [ %scevgep65.i, %38 ] - %.13144.i = phi ptr [ %.03049.i, %.lr.ph45.preheader.i ], [ %39, %38 ] +.lr.ph45.i: ; preds = %36, %.lr.ph45.preheader.i + %indvars.iv.i = phi ptr [ %scevgep64.i, %.lr.ph45.preheader.i ], [ %scevgep65.i, %36 ] + %.13144.i = phi ptr [ %.03049.i, %.lr.ph45.preheader.i ], [ %37, %36 ] %26 = load i8, ptr %.13144.i, align 1 %27 = icmp eq i8 %26, 42 - br i1 %27, label %28, label %38 + br i1 %27, label %28, label %36 28: ; preds = %.lr.ph45.i %29 = getelementptr inbounds i8, ptr %.13144.i, i64 1 %30 = load i8, ptr %29, align 1 %31 = icmp eq i8 %30, 47 - br i1 %31, label %.preheader.i, label %38 + br i1 %31, label %.lr.ph48.i, label %36 -.preheader.i: ; preds = %28 - %32 = getelementptr inbounds i8, ptr %.13144.i, i64 2 - %33 = icmp ult ptr %.03049.i, %32 - br i1 %33, label %.lr.ph48.i, label %.loopexit.i +.lr.ph48.i: ; preds = %28, %34 + %.047.i = phi ptr [ %35, %34 ], [ %.03049.i, %28 ] + %32 = load i8, ptr %.047.i, align 1 + %.not.i = icmp eq i8 %32, 10 + br i1 %.not.i, label %34, label %33 -.lr.ph48.i: ; preds = %.preheader.i, %36 - %.047.i = phi ptr [ %37, %36 ], [ %.03049.i, %.preheader.i ] - %34 = load i8, ptr %.047.i, align 1 - %.not.i = icmp eq i8 %34, 10 - br i1 %.not.i, label %36, label %35 - -35: ; preds = %.lr.ph48.i +33: ; preds = %.lr.ph48.i store i8 32, ptr %.047.i, align 1 - br label %36 + br label %34 -36: ; preds = %35, %.lr.ph48.i - %37 = getelementptr inbounds i8, ptr %.047.i, i64 1 - %exitcond67.not.i = icmp eq ptr %37, %indvars.iv.i +34: ; preds = %33, %.lr.ph48.i + %35 = getelementptr inbounds i8, ptr %.047.i, i64 1 + %exitcond67.not.i = icmp eq ptr %35, %indvars.iv.i br i1 %exitcond67.not.i, label %.loopexit.i, label %.lr.ph48.i, !llvm.loop !8 -38: ; preds = %28, %.lr.ph45.i - %39 = getelementptr inbounds i8, ptr %.13144.i, i64 1 - %exitcond63.not.i = icmp eq ptr %39, %scevgep62.i +36: ; preds = %28, %.lr.ph45.i + %37 = getelementptr inbounds i8, ptr %.13144.i, i64 1 + %exitcond63.not.i = icmp eq ptr %37, %scevgep62.i %scevgep65.i = getelementptr i8, ptr %indvars.iv.i, i64 1 br i1 %exitcond63.not.i, label %.loopexit.i, label %.lr.ph45.i, !llvm.loop !9 -40: ; preds = %20 - %41 = icmp eq i8 %22, 47 - %42 = icmp ult ptr %.03049.i, %13 - %or.cond51.i = and i1 %42, %41 +38: ; preds = %20 + %39 = icmp eq i8 %22, 47 + %40 = icmp ult ptr %.03049.i, %13 + %or.cond51.i = and i1 %40, %39 br i1 %or.cond51.i, label %.lr.ph.preheader.i, label %.loopexit.i -.lr.ph.preheader.i: ; preds = %40 +.lr.ph.preheader.i: ; preds = %38 %scevgep.i = getelementptr i8, ptr %.03049.i, i64 %14 - %43 = sub i64 0, %.0304958.i - %scevgep59.i = getelementptr i8, ptr %scevgep.i, i64 %43 + %41 = sub i64 0, %.0304958.i + %scevgep59.i = getelementptr i8, ptr %scevgep.i, i64 %41 br label %.lr.ph.i -.lr.ph.i: ; preds = %48, %.lr.ph.preheader.i - %indvar.i = phi i64 [ 0, %.lr.ph.preheader.i ], [ %indvar.next.i, %48 ] - %.241.i = phi ptr [ %.03049.i, %.lr.ph.preheader.i ], [ %49, %48 ] - %44 = load i8, ptr %.241.i, align 1 - %45 = icmp eq i8 %44, 10 - %46 = icmp eq ptr %.241.i, %15 - %or.cond.i = or i1 %46, %45 - br i1 %or.cond.i, label %.preheader35.i, label %48 +.lr.ph.i: ; preds = %46, %.lr.ph.preheader.i + %indvar.i = phi i64 [ 0, %.lr.ph.preheader.i ], [ %indvar.next.i, %46 ] + %.241.i = phi ptr [ %.03049.i, %.lr.ph.preheader.i ], [ %47, %46 ] + %42 = load i8, ptr %.241.i, align 1 + %43 = icmp eq i8 %42, 10 + %44 = icmp eq ptr %.241.i, %15 + %or.cond.i = or i1 %44, %43 + br i1 %or.cond.i, label %.preheader35.i, label %46 .preheader35.i: ; preds = %.lr.ph.i - %47 = icmp ult ptr %.03049.i, %.241.i - br i1 %47, label %.lr.ph43.preheader.i, label %.loopexit.i + %45 = icmp ult ptr %.03049.i, %.241.i + br i1 %45, label %.lr.ph43.preheader.i, label %.loopexit.i .lr.ph43.preheader.i: ; preds = %.preheader35.i tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %.03049.i, i8 32, i64 %indvar.i, i1 false) br label %.loopexit.i -48: ; preds = %.lr.ph.i - %49 = getelementptr inbounds i8, ptr %.241.i, i64 1 - %exitcond.not.i = icmp eq ptr %49, %scevgep59.i +46: ; preds = %.lr.ph.i + %47 = getelementptr inbounds i8, ptr %.241.i, i64 1 + %exitcond.not.i = icmp eq ptr %47, %scevgep59.i %indvar.next.i = add i64 %indvar.i, 1 br i1 %exitcond.not.i, label %.loopexit.i, label %.lr.ph.i, !llvm.loop !10 -.loopexit.i: ; preds = %48, %38, %36, %.lr.ph43.preheader.i, %.preheader35.i, %40, %.preheader.i, %.preheader33.i, %.lr.ph50.i - %.3.i = phi ptr [ %.03049.i, %40 ], [ %.03049.i, %.lr.ph50.i ], [ %.13144.i, %.preheader.i ], [ %.03049.i, %.preheader33.i ], [ %.241.i, %.preheader35.i ], [ %.241.i, %.lr.ph43.preheader.i ], [ %.13144.i, %36 ], [ %scevgep62.i, %38 ], [ %scevgep59.i, %48 ] - %50 = getelementptr inbounds i8, ptr %.3.i, i64 1 - %51 = icmp ult ptr %50, %15 - br i1 %51, label %.lr.ph50.i, label %Scl_LibertyWipeOutComments.exit.loopexit, !llvm.loop !11 +.loopexit.i: ; preds = %46, %36, %34, %.lr.ph43.preheader.i, %.preheader35.i, %38, %.preheader33.i, %.lr.ph50.i + %.3.i = phi ptr [ %.03049.i, %38 ], [ %.03049.i, %.lr.ph50.i ], [ %.03049.i, %.preheader33.i ], [ %.241.i, %.preheader35.i ], [ %.241.i, %.lr.ph43.preheader.i ], [ %.13144.i, %34 ], [ %scevgep62.i, %36 ], [ %scevgep59.i, %46 ] + %48 = getelementptr inbounds i8, ptr %.3.i, i64 1 + %49 = icmp ult ptr %48, %15 + br i1 %49, label %.lr.ph50.i, label %Scl_LibertyWipeOutComments.exit.loopexit, !llvm.loop !11 Scl_LibertyWipeOutComments.exit.loopexit: ; preds = %.loopexit.i %.pre = load ptr, ptr %9, align 8 @@ -2024,81 +2019,81 @@ Scl_LibertyWipeOutComments.exit.loopexit: ; preds = %.loopexit.i br label %Scl_LibertyWipeOutComments.exit Scl_LibertyWipeOutComments.exit: ; preds = %Scl_LibertyWipeOutComments.exit.loopexit, %8 - %52 = phi i64 [ %.pre32, %Scl_LibertyWipeOutComments.exit.loopexit ], [ %12, %8 ] - %53 = phi ptr [ %.pre, %Scl_LibertyWipeOutComments.exit.loopexit ], [ %10, %8 ] - %54 = getelementptr inbounds i8, ptr %53, i64 %52 - %55 = call i32 @Scl_LibertyBuildItem(ptr noundef nonnull %6, ptr noundef nonnull %5, ptr noundef %54) - %.not = icmp eq i32 %55, 0 - br i1 %.not, label %72, label %56 - -56: ; preds = %Scl_LibertyWipeOutComments.exit - %57 = getelementptr inbounds i8, ptr %6, i64 48 - %58 = load ptr, ptr %57, align 8 - %.not17 = icmp eq ptr %58, null - br i1 %.not17, label %61, label %59 - -59: ; preds = %56 - %60 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.17, ptr noundef nonnull %58) - br label %61 + %50 = phi i64 [ %.pre32, %Scl_LibertyWipeOutComments.exit.loopexit ], [ %12, %8 ] + %51 = phi ptr [ %.pre, %Scl_LibertyWipeOutComments.exit.loopexit ], [ %10, %8 ] + %52 = getelementptr inbounds i8, ptr %51, i64 %50 + %53 = call i32 @Scl_LibertyBuildItem(ptr noundef nonnull %6, ptr noundef nonnull %5, ptr noundef %52) + %.not = icmp eq i32 %53, 0 + br i1 %.not, label %70, label %54 + +54: ; preds = %Scl_LibertyWipeOutComments.exit + %55 = getelementptr inbounds i8, ptr %6, i64 48 + %56 = load ptr, ptr %55, align 8 + %.not17 = icmp eq ptr %56, null + br i1 %.not17, label %59, label %57 + +57: ; preds = %54 + %58 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.17, ptr noundef nonnull %56) + br label %59 -61: ; preds = %59, %56 - %62 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.18) +59: ; preds = %57, %54 + %60 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.18) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) - %63 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %4) #29 - %64 = icmp slt i32 %63, 0 - br i1 %64, label %Abc_Clock.exit, label %65 - -65: ; preds = %61 - %66 = load i64, ptr %4, align 8 - %67 = mul nsw i64 %66, 1000000 - %68 = getelementptr inbounds i8, ptr %4, i64 8 - %69 = load i64, ptr %68, align 8 - %70 = sdiv i64 %69, 1000 - %71 = add nsw i64 %70, %67 + %61 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %4) #29 + %62 = icmp slt i32 %61, 0 + br i1 %62, label %Abc_Clock.exit, label %63 + +63: ; preds = %59 + %64 = load i64, ptr %4, align 8 + %65 = mul nsw i64 %64, 1000000 + %66 = getelementptr inbounds i8, ptr %4, i64 8 + %67 = load i64, ptr %66, align 8 + %68 = sdiv i64 %67, 1000 + %69 = add nsw i64 %68, %65 br label %Abc_Clock.exit -Abc_Clock.exit: ; preds = %61, %65 - %.0.i = phi i64 [ %71, %65 ], [ -1, %61 ] +Abc_Clock.exit: ; preds = %59, %63 + %.0.i = phi i64 [ %69, %63 ], [ -1, %59 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) br label %.sink.split -72: ; preds = %Scl_LibertyWipeOutComments.exit +70: ; preds = %Scl_LibertyWipeOutComments.exit %.not16 = icmp eq i32 %1, 0 - br i1 %.not16, label %89, label %73 + br i1 %.not16, label %87, label %71 -73: ; preds = %72 - %74 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.20) +71: ; preds = %70 + %72 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.20) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) - %75 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %3) #29 - %76 = icmp slt i32 %75, 0 - br i1 %76, label %Abc_Clock.exit19, label %77 - -77: ; preds = %73 - %78 = load i64, ptr %3, align 8 - %79 = mul nsw i64 %78, 1000000 - %80 = getelementptr inbounds i8, ptr %3, i64 8 - %81 = load i64, ptr %80, align 8 - %82 = sdiv i64 %81, 1000 - %83 = add nsw i64 %82, %79 + %73 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %3) #29 + %74 = icmp slt i32 %73, 0 + br i1 %74, label %Abc_Clock.exit19, label %75 + +75: ; preds = %71 + %76 = load i64, ptr %3, align 8 + %77 = mul nsw i64 %76, 1000000 + %78 = getelementptr inbounds i8, ptr %3, i64 8 + %79 = load i64, ptr %78, align 8 + %80 = sdiv i64 %79, 1000 + %81 = add nsw i64 %80, %77 br label %Abc_Clock.exit19 -Abc_Clock.exit19: ; preds = %73, %77 - %.0.i18 = phi i64 [ %83, %77 ], [ -1, %73 ] +Abc_Clock.exit19: ; preds = %71, %75 + %.0.i18 = phi i64 [ %81, %75 ], [ -1, %71 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) br label %.sink.split .sink.split: ; preds = %Abc_Clock.exit19, %Abc_Clock.exit %.0.i.sink = phi i64 [ %.0.i, %Abc_Clock.exit ], [ %.0.i18, %Abc_Clock.exit19 ] - %84 = getelementptr inbounds i8, ptr %6, i64 56 - %85 = load i64, ptr %84, align 8 - %86 = sub nsw i64 %.0.i.sink, %85 + %82 = getelementptr inbounds i8, ptr %6, i64 56 + %83 = load i64, ptr %82, align 8 + %84 = sub nsw i64 %.0.i.sink, %83 call void (i32, ptr, ...) @Abc_Print(i32 noundef 1, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.19) - %87 = sitofp i64 %86 to double - %88 = fdiv double %87, 1.000000e+06 - call void (i32, ptr, ...) @Abc_Print(i32 noundef 1, ptr noundef nonnull @.str.16, double noundef %88) - br label %89 + %85 = sitofp i64 %84 to double + %86 = fdiv double %85, 1.000000e+06 + call void (i32, ptr, ...) @Abc_Print(i32 noundef 1, ptr noundef nonnull @.str.16, double noundef %86) + br label %87 -89: ; preds = %.sink.split, %72, %2 +87: ; preds = %.sink.split, %70, %2 ret ptr %6 } diff --git a/bench/abc/optimized/wlcCom.c.ll b/bench/abc/optimized/wlcCom.c.ll index 10ce90f2fb9..a735eacfe72 100644 --- a/bench/abc/optimized/wlcCom.c.ll +++ b/bench/abc/optimized/wlcCom.c.ll @@ -3122,7 +3122,7 @@ define internal range(i32 0, 2) i32 @Abc_CommandInvGet(ptr noundef %0, i32 nound 5: ; preds = %.outer, %7 %.028 = phi i32 [ %8, %7 ], [ %.028.ph, %.outer ] %6 = tail call i32 @Extra_UtilGetopt(i32 noundef %1, ptr noundef %2, ptr noundef nonnull @.str.202) #16 - switch i32 %6, label %87 [ + switch i32 %6, label %86 [ i32 -1, label %11 i32 102, label %7 i32 118, label %9 @@ -3144,7 +3144,7 @@ define internal range(i32 0, 2) i32 @Abc_CommandInvGet(ptr noundef %0, i32 nound 14: ; preds = %11 tail call void (i32, ptr, ...) @Abc_Print(i32 noundef 1, ptr noundef nonnull @.str.203) - br label %90 + br label %89 15: ; preds = %11 %.not36 = icmp eq i32 %.028, 0 @@ -3192,11 +3192,11 @@ Vec_PtrStart.exit: ; preds = %21, %25 .lr.ph: ; preds = %Vec_PtrStart.exit, %Vec_PtrSetEntry.exit %.val.i60 = phi ptr [ %.val.i, %Vec_PtrSetEntry.exit ], [ %29, %Vec_PtrStart.exit ] - %35 = phi i32 [ %73, %Vec_PtrSetEntry.exit ], [ %spec.store.select.i.i, %Vec_PtrStart.exit ] - %36 = phi i32 [ %74, %Vec_PtrSetEntry.exit ], [ %.val42, %Vec_PtrStart.exit ] + %35 = phi i32 [ %72, %Vec_PtrSetEntry.exit ], [ %spec.store.select.i.i, %Vec_PtrStart.exit ] + %36 = phi i32 [ %73, %Vec_PtrSetEntry.exit ], [ %.val42, %Vec_PtrStart.exit ] %indvars.iv = phi i64 [ %indvars.iv.next, %Vec_PtrSetEntry.exit ], [ 0, %Vec_PtrStart.exit ] %.val4356 = phi i32 [ %.val43, %Vec_PtrSetEntry.exit ], [ %.val42, %Vec_PtrStart.exit ] - %37 = phi ptr [ %76, %Vec_PtrSetEntry.exit ], [ %18, %Vec_PtrStart.exit ] + %37 = phi ptr [ %75, %Vec_PtrSetEntry.exit ], [ %18, %Vec_PtrStart.exit ] %38 = getelementptr inbounds i8, ptr %37, i64 632 %39 = load ptr, ptr %38, align 8 %40 = getelementptr i8, ptr %37, i64 64 @@ -3221,89 +3221,86 @@ Vec_PtrStart.exit: ; preds = %21, %25 %52 = shl nsw i32 %35, 1 %53 = sext i32 %52 to i64 %.not.i = icmp slt i64 %indvars.iv, %53 - %54 = sext i32 %35 to i64 - %.not.i.i.not.i = icmp slt i64 %indvars.iv, %54 - br i1 %.not.i, label %63, label %55 + br i1 %.not.i, label %61, label %54 -55: ; preds = %51 - br i1 %.not.i.i.not.i, label %Vec_PtrGrow.exit.i.i, label %56 - -56: ; preds = %55 +54: ; preds = %51 %.not9.i.i.i = icmp eq ptr %.val.i60, null - %57 = shl nuw nsw i64 %indvars.iv.next, 3 - %58 = trunc nuw nsw i64 %indvars.iv.next to i32 - br i1 %.not9.i.i.i, label %61, label %59 + %55 = shl nuw nsw i64 %indvars.iv.next, 3 + %56 = trunc nuw nsw i64 %indvars.iv.next to i32 + br i1 %.not9.i.i.i, label %59, label %57 -59: ; preds = %56 - %60 = tail call ptr @realloc(ptr noundef nonnull %.val.i60, i64 noundef %57) #19 +57: ; preds = %54 + %58 = tail call ptr @realloc(ptr noundef nonnull %.val.i60, i64 noundef %55) #19 br label %Vec_PtrGrow.exit.sink.split.i.i -61: ; preds = %56 - %62 = tail call noalias ptr @malloc(i64 noundef %57) #18 +59: ; preds = %54 + %60 = tail call noalias ptr @malloc(i64 noundef %55) #18 br label %Vec_PtrGrow.exit.sink.split.i.i -63: ; preds = %51 - br i1 %.not.i.i.not.i, label %Vec_PtrGrow.exit.i.i, label %64 +61: ; preds = %51 + %62 = sext i32 %35 to i64 + %.not.i.i.not.i = icmp slt i64 %indvars.iv, %62 + br i1 %.not.i.i.not.i, label %Vec_PtrGrow.exit.i.i, label %63 -64: ; preds = %63 +63: ; preds = %61 %.not9.i21.i.i = icmp eq ptr %.val.i60, null - %65 = shl nsw i64 %53, 3 - br i1 %.not9.i21.i.i, label %68, label %66 + %64 = shl nsw i64 %53, 3 + br i1 %.not9.i21.i.i, label %67, label %65 -66: ; preds = %64 - %67 = tail call ptr @realloc(ptr noundef nonnull %.val.i60, i64 noundef %65) #19 +65: ; preds = %63 + %66 = tail call ptr @realloc(ptr noundef nonnull %.val.i60, i64 noundef %64) #19 br label %Vec_PtrGrow.exit.sink.split.i.i -68: ; preds = %64 - %69 = tail call noalias ptr @malloc(i64 noundef %65) #18 +67: ; preds = %63 + %68 = tail call noalias ptr @malloc(i64 noundef %64) #18 br label %Vec_PtrGrow.exit.sink.split.i.i -Vec_PtrGrow.exit.sink.split.i.i: ; preds = %66, %68, %59, %61 - %storemerge = phi ptr [ %60, %59 ], [ %62, %61 ], [ %67, %66 ], [ %69, %68 ] - %.sink.i.i = phi i32 [ %58, %59 ], [ %58, %61 ], [ %52, %66 ], [ %52, %68 ] +Vec_PtrGrow.exit.sink.split.i.i: ; preds = %65, %67, %57, %59 + %storemerge = phi ptr [ %58, %57 ], [ %60, %59 ], [ %66, %65 ], [ %68, %67 ] + %.sink.i.i = phi i32 [ %56, %57 ], [ %56, %59 ], [ %52, %65 ], [ %52, %67 ] store ptr %storemerge, ptr %31, align 8 store i32 %.sink.i.i, ptr %23, align 8 %.pre.i = load i32, ptr %30, align 4 %.pre = sext i32 %.pre.i to i64 br label %Vec_PtrGrow.exit.i.i -Vec_PtrGrow.exit.i.i: ; preds = %Vec_PtrGrow.exit.sink.split.i.i, %63, %55 - %.pre-phi = phi i64 [ %.pre, %Vec_PtrGrow.exit.sink.split.i.i ], [ %50, %63 ], [ %50, %55 ] - %.val.i62 = phi ptr [ %storemerge, %Vec_PtrGrow.exit.sink.split.i.i ], [ %.val.i60, %63 ], [ %.val.i60, %55 ] - %70 = phi i32 [ %.sink.i.i, %Vec_PtrGrow.exit.sink.split.i.i ], [ %35, %63 ], [ %35, %55 ] +Vec_PtrGrow.exit.i.i: ; preds = %Vec_PtrGrow.exit.sink.split.i.i, %61 + %.pre-phi = phi i64 [ %.pre, %Vec_PtrGrow.exit.sink.split.i.i ], [ %50, %61 ] + %.val.i62 = phi ptr [ %storemerge, %Vec_PtrGrow.exit.sink.split.i.i ], [ %.val.i60, %61 ] + %69 = phi i32 [ %.sink.i.i, %Vec_PtrGrow.exit.sink.split.i.i ], [ %35, %61 ] %.not4.i = icmp sgt i64 %.pre-phi, %indvars.iv br i1 %.not4.i, label %._crit_edge.i.i, label %.lr.ph.i.i .lr.ph.i.i: ; preds = %Vec_PtrGrow.exit.i.i, %.lr.ph.i.i %indvars.iv.i.i = phi i64 [ %indvars.iv.next.i.i, %.lr.ph.i.i ], [ %.pre-phi, %Vec_PtrGrow.exit.i.i ] - %71 = getelementptr inbounds ptr, ptr %.val.i62, i64 %indvars.iv.i.i - store ptr null, ptr %71, align 8 + %70 = getelementptr inbounds ptr, ptr %.val.i62, i64 %indvars.iv.i.i + store ptr null, ptr %70, align 8 %indvars.iv.next.i.i = add nsw i64 %indvars.iv.i.i, 1 %exitcond.not.i.i = icmp eq i64 %indvars.iv.i.i, %indvars.iv br i1 %exitcond.not.i.i, label %._crit_edge.i.i, label %.lr.ph.i.i, !llvm.loop !27 ._crit_edge.i.i: ; preds = %.lr.ph.i.i, %Vec_PtrGrow.exit.i.i - %72 = trunc nuw nsw i64 %indvars.iv.next to i32 - store i32 %72, ptr %30, align 4 + %71 = trunc nuw nsw i64 %indvars.iv.next to i32 + store i32 %71, ptr %30, align 4 br label %Vec_PtrSetEntry.exit Vec_PtrSetEntry.exit: ; preds = %.lr.ph, %._crit_edge.i.i %.val.i = phi ptr [ %.val.i60, %.lr.ph ], [ %.val.i62, %._crit_edge.i.i ] - %73 = phi i32 [ %35, %.lr.ph ], [ %70, %._crit_edge.i.i ] - %74 = phi i32 [ %36, %.lr.ph ], [ %72, %._crit_edge.i.i ] - %75 = getelementptr inbounds ptr, ptr %.val.i, i64 %indvars.iv - store ptr %49, ptr %75, align 8 - %76 = load ptr, ptr %17, align 8 - %77 = getelementptr i8, ptr %76, i64 16 - %.val43 = load i32, ptr %77, align 8 - %78 = sext i32 %.val43 to i64 - %79 = icmp slt i64 %indvars.iv.next, %78 - br i1 %79, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !28 + %72 = phi i32 [ %35, %.lr.ph ], [ %69, %._crit_edge.i.i ] + %73 = phi i32 [ %36, %.lr.ph ], [ %71, %._crit_edge.i.i ] + %74 = getelementptr inbounds ptr, ptr %.val.i, i64 %indvars.iv + store ptr %49, ptr %74, align 8 + %75 = load ptr, ptr %17, align 8 + %76 = getelementptr i8, ptr %75, i64 16 + %.val43 = load i32, ptr %76, align 8 + %77 = sext i32 %.val43 to i64 + %78 = icmp slt i64 %indvars.iv.next, %77 + br i1 %78, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !28 .thread: ; preds = %20, %15 %.val4150 = phi ptr [ %.val4150.pre, %20 ], [ %.val, %15 ] - %80 = tail call ptr @Wlc_NtkGetInv(ptr noundef %.val44, ptr noundef %.val4150, ptr noundef null) #16 - br label %84 + %79 = tail call ptr @Wlc_NtkGetInv(ptr noundef %.val44, ptr noundef %.val4150, ptr noundef null) #16 + br label %83 ._crit_edge.loopexit: ; preds = %Vec_PtrSetEntry.exit %.val41.pre = load ptr, ptr %12, align 8 @@ -3311,43 +3308,43 @@ Vec_PtrSetEntry.exit: ; preds = %.lr.ph, %._crit_edg ._crit_edge: ; preds = %._crit_edge.loopexit, %Vec_PtrStart.exit %.val41 = phi ptr [ %.val41.pre, %._crit_edge.loopexit ], [ %.val, %Vec_PtrStart.exit ] - %81 = tail call ptr @Wlc_NtkGetInv(ptr noundef %.val44, ptr noundef %.val41, ptr noundef nonnull %23) #16 - %82 = load ptr, ptr %31, align 8 - %.not.i48 = icmp eq ptr %82, null - br i1 %.not.i48, label %Vec_PtrFree.exit, label %83 + %80 = tail call ptr @Wlc_NtkGetInv(ptr noundef %.val44, ptr noundef %.val41, ptr noundef nonnull %23) #16 + %81 = load ptr, ptr %31, align 8 + %.not.i48 = icmp eq ptr %81, null + br i1 %.not.i48, label %Vec_PtrFree.exit, label %82 -83: ; preds = %._crit_edge - tail call void @free(ptr noundef nonnull %82) #16 +82: ; preds = %._crit_edge + tail call void @free(ptr noundef nonnull %81) #16 br label %Vec_PtrFree.exit -Vec_PtrFree.exit: ; preds = %._crit_edge, %83 +Vec_PtrFree.exit: ; preds = %._crit_edge, %82 tail call void @free(ptr noundef nonnull %23) #16 - br label %84 + br label %83 -84: ; preds = %.thread, %Vec_PtrFree.exit - %85 = phi ptr [ %80, %.thread ], [ %81, %Vec_PtrFree.exit ] - %.not38 = icmp eq ptr %85, null - br i1 %.not38, label %90, label %86 +83: ; preds = %.thread, %Vec_PtrFree.exit + %84 = phi ptr [ %79, %.thread ], [ %80, %Vec_PtrFree.exit ] + %.not38 = icmp eq ptr %84, null + br i1 %.not38, label %89, label %85 -86: ; preds = %84 - tail call void @Abc_FrameReplaceCurrentNetwork(ptr noundef nonnull %0, ptr noundef nonnull %85) #16 - br label %90 +85: ; preds = %83 + tail call void @Abc_FrameReplaceCurrentNetwork(ptr noundef nonnull %0, ptr noundef nonnull %84) #16 + br label %89 -87: ; preds = %5 +86: ; preds = %5 tail call void (i32, ptr, ...) @Abc_Print(i32 noundef -2, ptr noundef nonnull @.str.205) tail call void (i32, ptr, ...) @Abc_Print(i32 noundef -2, ptr noundef nonnull @.str.206) tail call void (i32, ptr, ...) @Abc_Print(i32 noundef -2, ptr noundef nonnull @.str.207) %.not39 = icmp eq i32 %.028, 0 - %88 = select i1 %.not39, ptr @.str.42, ptr @.str.41 - tail call void (i32, ptr, ...) @Abc_Print(i32 noundef -2, ptr noundef nonnull @.str.208, ptr noundef nonnull %88) + %87 = select i1 %.not39, ptr @.str.42, ptr @.str.41 + tail call void (i32, ptr, ...) @Abc_Print(i32 noundef -2, ptr noundef nonnull @.str.208, ptr noundef nonnull %87) %.not40 = icmp eq i32 %.029.ph, 0 - %89 = select i1 %.not40, ptr @.str.42, ptr @.str.41 - tail call void (i32, ptr, ...) @Abc_Print(i32 noundef -2, ptr noundef nonnull @.str.45, ptr noundef nonnull %89) + %88 = select i1 %.not40, ptr @.str.42, ptr @.str.41 + tail call void (i32, ptr, ...) @Abc_Print(i32 noundef -2, ptr noundef nonnull @.str.45, ptr noundef nonnull %88) tail call void (i32, ptr, ...) @Abc_Print(i32 noundef -2, ptr noundef nonnull @.str.46) - br label %90 + br label %89 -90: ; preds = %84, %86, %87, %14 - %.032 = phi i32 [ 1, %87 ], [ 0, %14 ], [ 0, %86 ], [ 0, %84 ] +89: ; preds = %83, %85, %86, %14 + %.032 = phi i32 [ 1, %86 ], [ 0, %14 ], [ 0, %85 ], [ 0, %83 ] ret i32 %.032 } diff --git a/bench/abseil-cpp/optimized/container_test.cc.ll b/bench/abseil-cpp/optimized/container_test.cc.ll index 9bcf04623d7..3499c9e59f8 100644 --- a/bench/abseil-cpp/optimized/container_test.cc.ll +++ b/bench/abseil-cpp/optimized/container_test.cc.ll @@ -38145,13 +38145,13 @@ _ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEP call void @_ZdlPv(ptr noundef nonnull %31) #31 br label %for.body.i.i.i.i.i259 -for.body.i.i.i.i.i259: ; preds = %_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i70, %if.end62 +for.body.i.i.i.i.i259: ; preds = %if.end62, %_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i70 store ptr null, ptr %message_.i48, align 8 %call5.i.i.i.i2.i72 = call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #32 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(24) %call5.i.i.i.i2.i72, ptr noundef nonnull align 4 dereferenceable(24) @constinit.406, i64 24, i1 false) %add.ptr.i.i.i.i.i.i.i.i.i.i79 = getelementptr inbounds i8, ptr %call5.i.i.i.i2.i72, i64 24 %incdec.ptr.i.i233 = getelementptr inbounds i8, ptr %call5.i.i.i.i2.i72, i64 4 - %scevgep450 = getelementptr inbounds i8, ptr %call5.i.i.i.i2.i72, i64 20 + %scevgep435 = getelementptr inbounds i8, ptr %call5.i.i.i.i2.i72, i64 20 %32 = load i32, ptr %incdec.ptr.i.i233, align 4 %33 = and i32 %32, 1 %cmp.i354.not = icmp eq i32 %33, 0 @@ -38179,10 +38179,10 @@ if.end16.i.i.i.i.i269: ; preds = %if.end10.i.i.i.i.i2 br i1 %cmp.i351.not, label %sw.bb38.i.i.i.i.i242, label %_ZNSt6vectorIiSaIiEED2Ev.exit91 sw.bb38.i.i.i.i.i242: ; preds = %if.end16.i.i.i.i.i269 - %40 = load i32, ptr %scevgep450, align 4 + %40 = load i32, ptr %scevgep435, align 4 %41 = and i32 %40, 1 %cmp.i348.not = icmp eq i32 %41, 0 - %spec.select.i.i.i.i.i245 = select i1 %cmp.i348.not, ptr %add.ptr.i.i.i.i.i.i.i.i.i.i79, ptr %scevgep450 + %spec.select.i.i.i.i.i245 = select i1 %cmp.i348.not, ptr %add.ptr.i.i.i.i.i.i.i.i.i.i79, ptr %scevgep435 br label %_ZNSt6vectorIiSaIiEED2Ev.exit91 _ZNSt6vectorIiSaIiEED2Ev.exit91: ; preds = %sw.bb38.i.i.i.i.i242, %if.end.i.i.i.i.i263, %if.end10.i.i.i.i.i266, %if.end16.i.i.i.i.i269, %for.body.i.i.i.i.i259 @@ -38271,13 +38271,13 @@ _ZN7testing7MessageD2Ev.exit106: ; preds = %ehcleanup101, %_ZNK if.end102: ; preds = %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i98, %invoke.cont98 store ptr null, ptr %ref.tmp87, align 8 - %.pre451 = load ptr, ptr %message_.i87, align 8 - %cmp.not.i.i108 = icmp eq ptr %.pre451, null + %.pre436 = load ptr, ptr %message_.i87, align 8 + %cmp.not.i.i108 = icmp eq ptr %.pre436, null br i1 %cmp.not.i.i108, label %_ZN7testing15AssertionResultD2Ev.exit110, label %_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i109 _ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i109: ; preds = %if.end102 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %.pre451) #30 - call void @_ZdlPv(ptr noundef nonnull %.pre451) #31 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %.pre436) #30 + call void @_ZdlPv(ptr noundef nonnull %.pre436) #31 br label %_ZN7testing15AssertionResultD2Ev.exit110 _ZN7testing15AssertionResultD2Ev.exit110: ; preds = %_ZNSt6vectorIiSaIiEED2Ev.exit91, %if.end102, %_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i109 diff --git a/bench/arrow/optimized/decimal.cc.ll b/bench/arrow/optimized/decimal.cc.ll index 3c786948fdc..b3bd5d29940 100644 --- a/bench/arrow/optimized/decimal.cc.ll +++ b/bench/arrow/optimized/decimal.cc.ll @@ -2898,11 +2898,12 @@ for.body.i.preheader.i.i: %buffer.i = alloca %"struct.std::array.10", align 1 %copy = alloca %"struct.std::array.3", align 8 %segments = alloca %"struct.std::array.35", align 4 + %add.ptr.i.i = getelementptr inbounds i8, ptr %array, i64 32 %sub.ptr.rhs.cast.i.i.i.i = ptrtoint ptr %array to i64 %0 = getelementptr inbounds i8, ptr %array, i64 24 %agg.tmp.val.val.i.i.i = load i64, ptr %0, align 8, !noalias !74 %cmp.i.i.not.i.i.i = icmp eq i64 %agg.tmp.val.val.i.i.i, 0 - br i1 %cmp.i.i.not.i.i.i, label %if.end.i.i.i, label %_ZSt7find_ifISt16reverse_iteratorIPKmEZN5arrowL31AppendLittleEndianArrayToStringILm4EEEvRKSt5arrayImXT_EEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEUlmE_ET_SI_SI_T0_.exit.loopexit + br i1 %cmp.i.i.not.i.i.i, label %if.end.i.i.i, label %if.end if.end.i.i.i: ; preds = %for.body.i.preheader.i.i %1 = getelementptr inbounds i8, ptr %array, i64 16 @@ -2921,16 +2922,12 @@ if.end12.i.i.i: ; preds = %if.end7.i.i.i %cmp.i.i6.not.i.i.i = icmp eq i64 %agg.tmp14.val.val.i.i.i, 0 br i1 %cmp.i.i6.not.i.i.i, label %if.then, label %if.end -_ZSt7find_ifISt16reverse_iteratorIPKmEZN5arrowL31AppendLittleEndianArrayToStringILm4EEEvRKSt5arrayImXT_EEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEUlmE_ET_SI_SI_T0_.exit.loopexit: ; preds = %for.body.i.preheader.i.i - %add.ptr.i.i = getelementptr inbounds i8, ptr %array, i64 32 - br label %if.end - if.then: ; preds = %if.end12.i.i.i tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9push_backEc(ptr noundef nonnull align 8 dereferenceable(32) %result, i8 noundef signext 48) br label %return -if.end: ; preds = %_ZSt7find_ifISt16reverse_iteratorIPKmEZN5arrowL31AppendLittleEndianArrayToStringILm4EEEvRKSt5arrayImXT_EEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEUlmE_ET_SI_SI_T0_.exit.loopexit, %if.end.i.i.i, %if.end7.i.i.i, %if.end12.i.i.i - %.sink.i.i.i = phi ptr [ %add.ptr.i.i, %_ZSt7find_ifISt16reverse_iteratorIPKmEZN5arrowL31AppendLittleEndianArrayToStringILm4EEEvRKSt5arrayImXT_EEPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEUlmE_ET_SI_SI_T0_.exit.loopexit ], [ %0, %if.end.i.i.i ], [ %1, %if.end7.i.i.i ], [ %2, %if.end12.i.i.i ] +if.end: ; preds = %for.body.i.preheader.i.i, %if.end.i.i.i, %if.end7.i.i.i, %if.end12.i.i.i + %.sink.i.i.i = phi ptr [ %add.ptr.i.i, %for.body.i.preheader.i.i ], [ %0, %if.end.i.i.i ], [ %1, %if.end7.i.i.i ], [ %2, %if.end12.i.i.i ] %incdec.ptr.i = getelementptr inbounds i8, ptr %.sink.i.i.i, i64 -8 %sub.ptr.lhs.cast = ptrtoint ptr %incdec.ptr.i to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast.i.i.i.i diff --git a/bench/assimp/optimized/o3dgcDynamicVectorDecoder.cpp.ll b/bench/assimp/optimized/o3dgcDynamicVectorDecoder.cpp.ll index 19ca2d08a52..774a9c846a4 100644 --- a/bench/assimp/optimized/o3dgcDynamicVectorDecoder.cpp.ll +++ b/bench/assimp/optimized/o3dgcDynamicVectorDecoder.cpp.ll @@ -1186,12 +1186,11 @@ for.body: ; preds = %for.body.lr.ph, %_Z %cmp13.i = icmp sgt i64 %add.i, 1 br i1 %cmp13.i, label %for.cond.preheader.i, label %_ZN5o3dgc5MergeEPll.exit -for.cond.preheader.i: ; preds = %for.body, %for.end.i - %a.015.in.i = phi i64 [ %a.015.i, %for.end.i ], [ %add.i, %for.body ] - %b.014.i = phi i64 [ %inc.i, %for.end.i ], [ %add.i, %for.body ] +for.cond.preheader.i: ; preds = %for.body, %for.end.i.loopexit + %a.015.in.i = phi i64 [ %a.015.i, %for.end.i.loopexit ], [ %add.i, %for.body ] + %b.014.i = phi i64 [ %inc.i, %for.end.i.loopexit ], [ %add.i, %for.body ] %a.015.i = add nsw i64 %a.015.in.i, -1 - %cmp110.not.i = icmp sgt i64 %a.015.in.i, %b.014.i - br i1 %cmp110.not.i, label %for.end.i, label %for.body.i + br label %for.body.i for.body.i: ; preds = %for.cond.preheader.i, %for.body.i %i.011.i = phi i64 [ %add4.i, %for.body.i ], [ %a.015.i, %for.cond.preheader.i ] @@ -1203,14 +1202,14 @@ for.body.i: ; preds = %for.cond.preheader. store i64 %1, ptr %arrayidx3.i, align 8 %add4.i = add nsw i64 %i.011.i, 2 %cmp1.i = icmp slt i64 %add4.i, %b.014.i - br i1 %cmp1.i, label %for.body.i, label %for.end.i, !llvm.loop !7 + br i1 %cmp1.i, label %for.body.i, label %for.end.i.loopexit, !llvm.loop !7 -for.end.i: ; preds = %for.body.i, %for.cond.preheader.i +for.end.i.loopexit: ; preds = %for.body.i %inc.i = add nuw nsw i64 %b.014.i, 1 %cmp.i = icmp sgt i64 %a.015.in.i, 2 br i1 %cmp.i, label %for.cond.preheader.i, label %_ZN5o3dgc5MergeEPll.exit, !llvm.loop !8 -_ZN5o3dgc5MergeEPll.exit: ; preds = %for.end.i, %for.body +_ZN5o3dgc5MergeEPll.exit: ; preds = %for.end.i.loopexit, %for.body %sub.i = add nsw i64 %sub11, -1 %3 = load i64, ptr %arrayidx.i17, align 8 %shr.i18 = ashr i64 %3, 1 diff --git a/bench/brotli/optimized/compound_dictionary.c.ll b/bench/brotli/optimized/compound_dictionary.c.ll index f32037f42cb..22097ce8194 100644 --- a/bench/brotli/optimized/compound_dictionary.c.ll +++ b/bench/brotli/optimized/compound_dictionary.c.ll @@ -39,11 +39,9 @@ while.end: ; preds = %while.body, %entry %add13.i = add i64 %add10.i, %shl9.i %add14.i = add i64 %add13.i, %shl12.i %cmp.i = icmp ugt i32 %slot_bits.0.lcssa, 16 - %cmp15.i = icmp ugt i32 %slot_bits.0.lcssa, %bucket_bits.0.lcssa - %or.cond.i = or i1 %cmp.i, %cmp15.i %sub18.i = sub nuw i32 %bucket_bits.0.lcssa, %slot_bits.0.lcssa %cmp19.i = icmp ugt i32 %sub18.i, 15 - %or.cond126.i = select i1 %or.cond.i, i1 true, i1 %cmp19.i + %or.cond126.i = select i1 %cmp.i, i1 true, i1 %cmp19.i br i1 %or.cond126.i, label %CreatePreparedDictionaryWithParams.exit, label %if.end21.i if.end21.i: ; preds = %while.end diff --git a/bench/bullet3/optimized/b3DynamicBvh.ll b/bench/bullet3/optimized/b3DynamicBvh.ll index 526d783fefb..f9917154e2a 100644 --- a/bench/bullet3/optimized/b3DynamicBvh.ll +++ b/bench/bullet3/optimized/b3DynamicBvh.ll @@ -2449,15 +2449,11 @@ for.body: ; preds = %for.cond.preheader, br i1 %tobool.not, label %if.end, label %if.then if.then: ; preds = %for.body - %cmp5.i = icmp sgt i32 %11, 0 - br i1 %cmp5.i, label %for.body.lr.ph.i, label %if.end - -for.body.lr.ph.i: ; preds = %if.then %wide.trip.count.i = zext nneg i32 %11 to i64 br label %for.body.i -for.body.i: ; preds = %for.inc.i, %for.body.lr.ph.i - %indvars.iv.i = phi i64 [ 0, %for.body.lr.ph.i ], [ %indvars.iv.next.i, %for.inc.i ] +for.body.i: ; preds = %for.inc.i, %if.then + %indvars.iv.i = phi i64 [ 0, %if.then ], [ %indvars.iv.next.i, %for.inc.i ] %arrayidx.i21 = getelementptr inbounds ptr, ptr %12, i64 %indvars.iv.i %15 = load ptr, ptr %arrayidx.i21, align 8 %cmp3.i22 = icmp eq ptr %15, %14 @@ -2487,25 +2483,21 @@ lpad: ; preds = %lpad.loopexit.split call void @_ZN20b3DbvtNodeEnumeratorD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %nodes) #17 resume { ptr, i32 } %lpad.phi -if.end: ; preds = %for.inc.i, %for.end.loopexit.split.loop.exit.i, %if.then, %for.body - %p.0 = phi i32 [ -1, %for.body ], [ %11, %if.then ], [ %16, %for.end.loopexit.split.loop.exit.i ], [ %11, %for.inc.i ] +if.end: ; preds = %for.inc.i, %for.end.loopexit.split.loop.exit.i, %for.body + %p.0 = phi i32 [ -1, %for.body ], [ %16, %for.end.loopexit.split.loop.exit.i ], [ %11, %for.inc.i ] %arrayidx.i.i23 = getelementptr inbounds i8, ptr %13, i64 48 %17 = load ptr, ptr %arrayidx.i.i23, align 8 %cmp.i.i.not = icmp eq ptr %17, null br i1 %cmp.i.i.not, label %if.else, label %if.then20 if.then20: ; preds = %if.end - %cmp5.i25 = icmp sgt i32 %11, 0 - br i1 %cmp5.i25, label %for.body.lr.ph.i27, label %_ZNK20b3AlignedObjectArrayIPK10b3DbvtNodeE16findLinearSearchERKS2_.exit53 - -for.body.lr.ph.i27: ; preds = %if.then20 %18 = getelementptr inbounds i8, ptr %13, i64 40 %19 = load ptr, ptr %18, align 8 %wide.trip.count.i29 = zext nneg i32 %11 to i64 br label %for.body.i30 -for.body.i30: ; preds = %for.inc.i34, %for.body.lr.ph.i27 - %indvars.iv.i31 = phi i64 [ 0, %for.body.lr.ph.i27 ], [ %indvars.iv.next.i35, %for.inc.i34 ] +for.body.i30: ; preds = %for.inc.i34, %if.then20 + %indvars.iv.i31 = phi i64 [ 0, %if.then20 ], [ %indvars.iv.next.i35, %for.inc.i34 ] %arrayidx.i32 = getelementptr inbounds ptr, ptr %12, i64 %indvars.iv.i31 %20 = load ptr, ptr %arrayidx.i32, align 8 %cmp3.i33 = icmp eq ptr %20, %19 @@ -2540,14 +2532,13 @@ for.end.loopexit.split.loop.exit.i52: ; preds = %for.body.i45 %23 = trunc nuw nsw i64 %indvars.iv.i46 to i32 br label %_ZNK20b3AlignedObjectArrayIPK10b3DbvtNodeE16findLinearSearchERKS2_.exit53 -_ZNK20b3AlignedObjectArrayIPK10b3DbvtNodeE16findLinearSearchERKS2_.exit53: ; preds = %for.inc.i49, %if.then20, %for.end.loopexit.split.loop.exit.i52 - %index.0.i2655 = phi i32 [ %index.0.i26, %for.end.loopexit.split.loop.exit.i52 ], [ %11, %if.then20 ], [ %index.0.i26, %for.inc.i49 ] - %index.0.i41 = phi i32 [ %23, %for.end.loopexit.split.loop.exit.i52 ], [ %11, %if.then20 ], [ %11, %for.inc.i49 ] +_ZNK20b3AlignedObjectArrayIPK10b3DbvtNodeE16findLinearSearchERKS2_.exit53: ; preds = %for.inc.i49, %for.end.loopexit.split.loop.exit.i52 + %index.0.i41 = phi i32 [ %23, %for.end.loopexit.split.loop.exit.i52 ], [ %11, %for.inc.i49 ] %vtable28 = load ptr, ptr %iwriter, align 8 %vfn29 = getelementptr inbounds i8, ptr %vtable28, i64 24 %24 = load ptr, ptr %vfn29, align 8 %25 = trunc nuw nsw i64 %indvars.iv to i32 - invoke void %24(ptr noundef nonnull align 8 dereferenceable(8) %iwriter, ptr noundef nonnull %13, i32 noundef %25, i32 noundef %p.0, i32 noundef %index.0.i2655, i32 noundef %index.0.i41) + invoke void %24(ptr noundef nonnull align 8 dereferenceable(8) %iwriter, ptr noundef nonnull %13, i32 noundef %25, i32 noundef %p.0, i32 noundef %index.0.i26, i32 noundef %index.0.i41) to label %for.inc unwind label %lpad.loopexit if.else: ; preds = %if.end diff --git a/bench/casadi/optimized/dm_instantiator.cpp.ll b/bench/casadi/optimized/dm_instantiator.cpp.ll index ae197fcd8e8..4bcca5e2f4b 100644 --- a/bench/casadi/optimized/dm_instantiator.cpp.ll +++ b/bench/casadi/optimized/dm_instantiator.cpp.ll @@ -49652,8 +49652,8 @@ _ZNSt6vectorIxSaIxEEC2IPKxvEET_S5_RKS0_.exit: ; preds = %.noexc4.i, %_ZNSt6v %invariant.op = and i1 %46, %spec.select br label %64 -64: ; preds = %.lr.ph162, %149 - %.075160 = phi i64 [ 0, %.lr.ph162 ], [ %150, %149 ] +64: ; preds = %.lr.ph162, %148 + %.075160 = phi i64 [ 0, %.lr.ph162 ], [ %149, %148 ] %65 = icmp ugt i64 %.075160, 2 %or.cond.reass.reass.reass = and i1 %65, %invariant.op265 br i1 %or.cond.reass.reass.reass, label %70, label %66 @@ -49873,63 +49873,60 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_.exit: ; pr ._crit_edge: ; preds = %106, %.critedge, %.thread, %73 %135 = phi i1 [ false, %.thread ], [ true, %73 ], [ false, %.critedge ], [ true, %106 ] %136 = icmp slt i64 %.075160, %63 - br i1 %136, label %137, label %147 + br i1 %136, label %137, label %146 137: ; preds = %._crit_edge - br i1 %135, label %138, label %141 + br i1 %135, label %138, label %140 138: ; preds = %137 %139 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull @.str.257) - to label %140 unwind label %.loopexit - -140: ; preds = %138 - br i1 %57, label %149, label %.invoke + to label %.invoke unwind label %.loopexit -141: ; preds = %137 - %142 = icmp eq i64 %.075160, 3 - br i1 %142, label %143, label %149 +140: ; preds = %137 + %141 = icmp eq i64 %.075160, 3 + br i1 %141, label %142, label %148 -143: ; preds = %141 - %144 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull @.str.258) +142: ; preds = %140 + %143 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull @.str.258) to label %.invoke unwind label %.loopexit -.invoke: ; preds = %143, %140 - %145 = phi ptr [ %0, %140 ], [ %144, %143 ] - %146 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %145, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_) - to label %149 unwind label %.loopexit +.invoke: ; preds = %142, %138 + %144 = phi ptr [ %0, %138 ], [ %143, %142 ] + %145 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %144, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_) + to label %148 unwind label %.loopexit -147: ; preds = %._crit_edge - %148 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull @.str.259) - to label %149 unwind label %.loopexit +146: ; preds = %._crit_edge + %147 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull @.str.259) + to label %148 unwind label %.loopexit -149: ; preds = %.invoke, %141, %140, %147 - %150 = add nuw nsw i64 %.075160, 1 - %exitcond185.not = icmp eq i64 %150, %35 +148: ; preds = %.invoke, %140, %146 + %149 = add nuw nsw i64 %.075160, 1 + %exitcond185.not = icmp eq i64 %149, %35 br i1 %exitcond185.not, label %._crit_edge163, label %64, !llvm.loop !826 -._crit_edge163: ; preds = %149, %_ZNSt6vectorIxSaIxEEC2IPKxvEET_S5_RKS0_.exit - %151 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull @_ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_) - to label %152 unwind label %.loopexit.split-lp +._crit_edge163: ; preds = %148, %_ZNSt6vectorIxSaIxEEC2IPKxvEET_S5_RKS0_.exit + %150 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull @_ZSt5flushIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_) + to label %151 unwind label %.loopexit.split-lp -152: ; preds = %._crit_edge163 +151: ; preds = %._crit_edge163 %.not.i.i.i95 = icmp eq ptr %.sroa.0.0, null - br i1 %.not.i.i.i95, label %_ZNSt6vectorIxSaIxEED2Ev.exit, label %153 + br i1 %.not.i.i.i95, label %_ZNSt6vectorIxSaIxEED2Ev.exit, label %152 -153: ; preds = %152 +152: ; preds = %151 call void @_ZdlPv(ptr noundef nonnull %.sroa.0.0) #26 br label %_ZNSt6vectorIxSaIxEED2Ev.exit -_ZNSt6vectorIxSaIxEED2Ev.exit: ; preds = %152, %153 - %154 = load ptr, ptr %6, align 8 - %155 = load ptr, ptr %11, align 8 - %.not4.i.i.i.i = icmp eq ptr %154, %155 +_ZNSt6vectorIxSaIxEED2Ev.exit: ; preds = %151, %152 + %153 = load ptr, ptr %6, align 8 + %154 = load ptr, ptr %11, align 8 + %.not4.i.i.i.i = icmp eq ptr %153, %154 br i1 %.not4.i.i.i.i, label %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exit.i, label %.lr.ph.i.i.i.i .lr.ph.i.i.i.i: ; preds = %_ZNSt6vectorIxSaIxEED2Ev.exit, %.lr.ph.i.i.i.i - %.05.i.i.i.i = phi ptr [ %156, %.lr.ph.i.i.i.i ], [ %154, %_ZNSt6vectorIxSaIxEED2Ev.exit ] + %.05.i.i.i.i = phi ptr [ %155, %.lr.ph.i.i.i.i ], [ %153, %_ZNSt6vectorIxSaIxEED2Ev.exit ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %.05.i.i.i.i) #25 - %156 = getelementptr inbounds i8, ptr %.05.i.i.i.i, i64 32 - %.not.i.i.i.i = icmp eq ptr %156, %155 + %155 = getelementptr inbounds i8, ptr %.05.i.i.i.i, i64 32 + %.not.i.i.i.i = icmp eq ptr %155, %154 br i1 %.not.i.i.i.i, label %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exitthread-pre-split.i, label %.lr.ph.i.i.i.i, !llvm.loop !21 _ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exitthread-pre-split.i: ; preds = %.lr.ph.i.i.i.i @@ -49937,26 +49934,26 @@ _ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSa br label %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exit.i _ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exit.i: ; preds = %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exitthread-pre-split.i, %_ZNSt6vectorIxSaIxEED2Ev.exit - %157 = phi ptr [ %.pr.i, %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exitthread-pre-split.i ], [ %154, %_ZNSt6vectorIxSaIxEED2Ev.exit ] - %.not.i.i.i97 = icmp eq ptr %157, null - br i1 %.not.i.i.i97, label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.exit, label %158 + %156 = phi ptr [ %.pr.i, %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exitthread-pre-split.i ], [ %153, %_ZNSt6vectorIxSaIxEED2Ev.exit ] + %.not.i.i.i97 = icmp eq ptr %156, null + br i1 %.not.i.i.i97, label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.exit, label %157 -158: ; preds = %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exit.i - call void @_ZdlPv(ptr noundef nonnull %157) #26 +157: ; preds = %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exit.i + call void @_ZdlPv(ptr noundef nonnull %156) #26 br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.exit -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.exit: ; preds = %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exit.i, %158 - %159 = load ptr, ptr %5, align 8 - %160 = getelementptr inbounds i8, ptr %5, i64 8 - %161 = load ptr, ptr %160, align 8 - %.not4.i.i.i.i98 = icmp eq ptr %159, %161 +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.exit: ; preds = %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exit.i, %157 + %158 = load ptr, ptr %5, align 8 + %159 = getelementptr inbounds i8, ptr %5, i64 8 + %160 = load ptr, ptr %159, align 8 + %.not4.i.i.i.i98 = icmp eq ptr %158, %160 br i1 %.not4.i.i.i.i98, label %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exit.i104, label %.lr.ph.i.i.i.i99 .lr.ph.i.i.i.i99: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.exit, %.lr.ph.i.i.i.i99 - %.05.i.i.i.i100 = phi ptr [ %162, %.lr.ph.i.i.i.i99 ], [ %159, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.exit ] + %.05.i.i.i.i100 = phi ptr [ %161, %.lr.ph.i.i.i.i99 ], [ %158, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.exit ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %.05.i.i.i.i100) #25 - %162 = getelementptr inbounds i8, ptr %.05.i.i.i.i100, i64 32 - %.not.i.i.i.i101 = icmp eq ptr %162, %161 + %161 = getelementptr inbounds i8, ptr %.05.i.i.i.i100, i64 32 + %.not.i.i.i.i101 = icmp eq ptr %161, %160 br i1 %.not.i.i.i.i101, label %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exitthread-pre-split.i102, label %.lr.ph.i.i.i.i99, !llvm.loop !21 _ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exitthread-pre-split.i102: ; preds = %.lr.ph.i.i.i.i99 @@ -49964,15 +49961,15 @@ _ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSa br label %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exit.i104 _ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exit.i104: ; preds = %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exitthread-pre-split.i102, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.exit - %163 = phi ptr [ %.pr.i103, %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exitthread-pre-split.i102 ], [ %159, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.exit ] - %.not.i.i.i105 = icmp eq ptr %163, null - br i1 %.not.i.i.i105, label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.exit106, label %164 + %162 = phi ptr [ %.pr.i103, %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exitthread-pre-split.i102 ], [ %158, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.exit ] + %.not.i.i.i105 = icmp eq ptr %162, null + br i1 %.not.i.i.i105, label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.exit106, label %163 -164: ; preds = %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exit.i104 - call void @_ZdlPv(ptr noundef nonnull %163) #26 +163: ; preds = %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exit.i104 + call void @_ZdlPv(ptr noundef nonnull %162) #26 br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.exit106 -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.exit106: ; preds = %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exit.i104, %164 +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.exit106: ; preds = %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exit.i104, %163 ret void .thread122.loopexit.split: ; preds = %128 @@ -49985,28 +49982,28 @@ _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev.ex cleanup br label %.thread116 -.loopexit: ; preds = %.thread115.invoke, %.invoke, %147, %143, %138, %68 +.loopexit: ; preds = %.thread115.invoke, %.invoke, %146, %142, %138, %68 %lpad.loopexit127 = landingpad { ptr, i32 } cleanup - br label %165 + br label %164 .loopexit.split-lp: ; preds = %._crit_edge163 %lpad.loopexit.split-lp128 = landingpad { ptr, i32 } cleanup - br label %165 + br label %164 -165: ; preds = %.loopexit.split-lp, %.loopexit +164: ; preds = %.loopexit.split-lp, %.loopexit %lpad.phi129 = phi { ptr, i32 } [ %lpad.loopexit127, %.loopexit ], [ %lpad.loopexit.split-lp128, %.loopexit.split-lp ] %.not.i.i.i107 = icmp eq ptr %.sroa.0.0, null br i1 %.not.i.i.i107, label %.body, label %.thread116 -.thread116: ; preds = %.thread122.loopexit.split-lp, %.thread122.loopexit.split.us, %.thread122.loopexit.split, %.split157.us, %.body93, %165 - %.pn119 = phi { ptr, i32 } [ %lpad.phi129, %165 ], [ %eh.lpad-body94, %.body93 ], [ %109, %.split157.us ], [ %lpad.loopexit.split-lp, %.thread122.loopexit.split-lp ], [ %lpad.loopexit, %.thread122.loopexit.split ], [ %lpad.loopexit.us, %.thread122.loopexit.split.us ] +.thread116: ; preds = %.thread122.loopexit.split-lp, %.thread122.loopexit.split.us, %.thread122.loopexit.split, %.split157.us, %.body93, %164 + %.pn119 = phi { ptr, i32 } [ %lpad.phi129, %164 ], [ %eh.lpad-body94, %.body93 ], [ %109, %.split157.us ], [ %lpad.loopexit.split-lp, %.thread122.loopexit.split-lp ], [ %lpad.loopexit, %.thread122.loopexit.split ], [ %lpad.loopexit.us, %.thread122.loopexit.split.us ] call void @_ZdlPv(ptr noundef nonnull %.sroa.0.0) #26 br label %.body -.body: ; preds = %.loopexit130, %.loopexit.split-lp131, %.thread116, %165, %_ZNSt12_Vector_baseIxSaIxEED2Ev.exit.i - %.pn82 = phi { ptr, i32 } [ %56, %_ZNSt12_Vector_baseIxSaIxEED2Ev.exit.i ], [ %lpad.phi129, %165 ], [ %.pn119, %.thread116 ], [ %lpad.loopexit132, %.loopexit130 ], [ %lpad.loopexit.split-lp133, %.loopexit.split-lp131 ] +.body: ; preds = %.loopexit130, %.loopexit.split-lp131, %.thread116, %164, %_ZNSt12_Vector_baseIxSaIxEED2Ev.exit.i + %.pn82 = phi { ptr, i32 } [ %56, %_ZNSt12_Vector_baseIxSaIxEED2Ev.exit.i ], [ %lpad.phi129, %164 ], [ %.pn119, %.thread116 ], [ %lpad.loopexit132, %.loopexit130 ], [ %lpad.loopexit.split-lp133, %.loopexit.split-lp131 ] call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #25 call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #25 resume { ptr, i32 } %.pn82 diff --git a/bench/casadi/optimized/fmu_function.cpp.ll b/bench/casadi/optimized/fmu_function.cpp.ll index ba6d20af41f..c57a781fe38 100644 --- a/bench/casadi/optimized/fmu_function.cpp.ll +++ b/bench/casadi/optimized/fmu_function.cpp.ll @@ -29819,7 +29819,8 @@ _ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSa .preheader7.i.i: ; preds = %39 %.not9.i.i = icmp eq ptr %28, %10 - br i1 %.not9.i.i, label %_ZSt4copyISt23_Rb_tree_const_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEPS6_ET0_T_SA_S9_.exit27, label %.lr.ph.i.i19 + tail call void @llvm.assume(i1 %.not9.i.i) + br label %_ZSt4copyISt23_Rb_tree_const_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEPS6_ET0_T_SA_S9_.exit27 .preheader.i.i: ; preds = %39, %.preheader.i.i %.012.i.i = phi i64 [ %42, %.preheader.i.i ], [ %31, %39 ] @@ -29829,38 +29830,29 @@ _ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSa %.not6.i.i = icmp eq i64 %42, 0 br i1 %.not6.i.i, label %_ZSt7advanceISt23_Rb_tree_const_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEmEvRT_T0_.exit, label %.preheader.i.i, !llvm.loop !277 -.lr.ph.i.i19: ; preds = %.preheader7.i.i, %.lr.ph.i.i19 - %.110.i.i = phi i64 [ %45, %.lr.ph.i.i19 ], [ %31, %.preheader7.i.i ] - %44 = phi ptr [ %46, %.lr.ph.i.i19 ], [ %1, %.preheader7.i.i ] - %45 = add nsw i64 %.110.i.i, 1 - %46 = tail call noundef ptr @_ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base(ptr noundef %44) #29 - %.not.i.i20 = icmp eq i64 %45, 0 - br i1 %.not.i.i20, label %_ZSt7advanceISt23_Rb_tree_const_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEmEvRT_T0_.exit, label %.lr.ph.i.i19, !llvm.loop !278 - -_ZSt7advanceISt23_Rb_tree_const_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEmEvRT_T0_.exit: ; preds = %.lr.ph.i.i19, %.preheader.i.i - %.sroa.0.0 = phi ptr [ %43, %.preheader.i.i ], [ %46, %.lr.ph.i.i19 ] - %.not6.i.i.i.i.i21 = icmp eq ptr %1, %.sroa.0.0 +_ZSt7advanceISt23_Rb_tree_const_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEmEvRT_T0_.exit: ; preds = %.preheader.i.i + %.not6.i.i.i.i.i21 = icmp eq ptr %1, %43 br i1 %.not6.i.i.i.i.i21, label %_ZSt4copyISt23_Rb_tree_const_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEPS6_ET0_T_SA_S9_.exit27, label %.lr.ph.i.i.i.i.i22 .lr.ph.i.i.i.i.i22: ; preds = %_ZSt7advanceISt23_Rb_tree_const_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEmEvRT_T0_.exit, %.lr.ph.i.i.i.i.i22 - %.08.i.i.i.i.i23 = phi ptr [ %49, %.lr.ph.i.i.i.i.i22 ], [ %10, %_ZSt7advanceISt23_Rb_tree_const_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEmEvRT_T0_.exit ] - %.sroa.03.07.i.i.i.i.i24 = phi ptr [ %50, %.lr.ph.i.i.i.i.i22 ], [ %1, %_ZSt7advanceISt23_Rb_tree_const_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEmEvRT_T0_.exit ] - %47 = getelementptr inbounds i8, ptr %.sroa.03.07.i.i.i.i.i24, i64 32 - %48 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %.08.i.i.i.i.i23, ptr noundef nonnull align 8 dereferenceable(32) %47) - %49 = getelementptr inbounds i8, ptr %.08.i.i.i.i.i23, i64 32 - %50 = tail call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef %.sroa.03.07.i.i.i.i.i24) #29 - %.not.i.i.i.i.i25 = icmp eq ptr %50, %.sroa.0.0 + %.08.i.i.i.i.i23 = phi ptr [ %46, %.lr.ph.i.i.i.i.i22 ], [ %10, %_ZSt7advanceISt23_Rb_tree_const_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEmEvRT_T0_.exit ] + %.sroa.03.07.i.i.i.i.i24 = phi ptr [ %47, %.lr.ph.i.i.i.i.i22 ], [ %1, %_ZSt7advanceISt23_Rb_tree_const_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEmEvRT_T0_.exit ] + %44 = getelementptr inbounds i8, ptr %.sroa.03.07.i.i.i.i.i24, i64 32 + %45 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %.08.i.i.i.i.i23, ptr noundef nonnull align 8 dereferenceable(32) %44) + %46 = getelementptr inbounds i8, ptr %.08.i.i.i.i.i23, i64 32 + %47 = tail call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef %.sroa.03.07.i.i.i.i.i24) #29 + %.not.i.i.i.i.i25 = icmp eq ptr %47, %43 br i1 %.not.i.i.i.i.i25, label %_ZSt4copyISt23_Rb_tree_const_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEPS6_ET0_T_SA_S9_.exit27.loopexit, label %.lr.ph.i.i.i.i.i22, !llvm.loop !276 _ZSt4copyISt23_Rb_tree_const_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEPS6_ET0_T_SA_S9_.exit27.loopexit: ; preds = %.lr.ph.i.i.i.i.i22 %.pre = load ptr, ptr %27, align 8 br label %_ZSt4copyISt23_Rb_tree_const_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEPS6_ET0_T_SA_S9_.exit27 -_ZSt4copyISt23_Rb_tree_const_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEPS6_ET0_T_SA_S9_.exit27: ; preds = %_ZSt4copyISt23_Rb_tree_const_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEPS6_ET0_T_SA_S9_.exit27.loopexit, %.preheader7.i.i, %_ZSt7advanceISt23_Rb_tree_const_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEmEvRT_T0_.exit - %51 = phi ptr [ %28, %_ZSt7advanceISt23_Rb_tree_const_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEmEvRT_T0_.exit ], [ %28, %.preheader7.i.i ], [ %.pre, %_ZSt4copyISt23_Rb_tree_const_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEPS6_ET0_T_SA_S9_.exit27.loopexit ] - %.sroa.0.035 = phi ptr [ %.sroa.0.0, %_ZSt7advanceISt23_Rb_tree_const_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEmEvRT_T0_.exit ], [ %1, %.preheader7.i.i ], [ %.sroa.0.0, %_ZSt4copyISt23_Rb_tree_const_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEPS6_ET0_T_SA_S9_.exit27.loopexit ] - %52 = tail call noundef ptr @_ZSt16__do_uninit_copyISt23_Rb_tree_const_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEPS6_ET0_T_SA_S9_(ptr %.sroa.0.035, ptr %2, ptr noundef %51) - store ptr %52, ptr %27, align 8 +_ZSt4copyISt23_Rb_tree_const_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEPS6_ET0_T_SA_S9_.exit27: ; preds = %.preheader7.i.i, %_ZSt4copyISt23_Rb_tree_const_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEPS6_ET0_T_SA_S9_.exit27.loopexit, %_ZSt7advanceISt23_Rb_tree_const_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEmEvRT_T0_.exit + %48 = phi ptr [ %28, %_ZSt7advanceISt23_Rb_tree_const_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEmEvRT_T0_.exit ], [ %28, %.preheader7.i.i ], [ %.pre, %_ZSt4copyISt23_Rb_tree_const_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEPS6_ET0_T_SA_S9_.exit27.loopexit ] + %.sroa.0.035 = phi ptr [ %43, %_ZSt7advanceISt23_Rb_tree_const_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEmEvRT_T0_.exit ], [ %1, %.preheader7.i.i ], [ %43, %_ZSt4copyISt23_Rb_tree_const_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEPS6_ET0_T_SA_S9_.exit27.loopexit ] + %49 = tail call noundef ptr @_ZSt16__do_uninit_copyISt23_Rb_tree_const_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEPS6_ET0_T_SA_S9_(ptr %.sroa.0.035, ptr %2, ptr noundef %48) + store ptr %49, ptr %27, align 8 br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE15_M_erase_at_endEPS5_.exit _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE15_M_erase_at_endEPS5_.exit: ; preds = %_ZSt8_DestroyIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EvT_S7_RSaIT0_E.exit.i, %_ZSt4copyISt23_Rb_tree_const_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEPS6_ET0_T_SA_S9_.exit, %_ZSt4copyISt23_Rb_tree_const_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEPS6_ET0_T_SA_S9_.exit27, %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit @@ -29937,9 +29929,6 @@ _ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE unreachable } -; Function Attrs: mustprogress nofree nounwind willreturn memory(read) -declare noundef ptr @_ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base(ptr noundef) local_unnamed_addr #16 - ; Function Attrs: mustprogress uwtable define linkonce_odr noundef ptr @_ZSt16__do_uninit_copyISt23_Rb_tree_const_iteratorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEPS6_ET0_T_SA_S9_(ptr %0, ptr %1, ptr noundef %2) local_unnamed_addr #3 comdat personality ptr @__gxx_personality_v0 { %.not12 = icmp eq ptr %0, %1 @@ -29956,7 +29945,7 @@ _ZSt10_ConstructINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEJRKS5_EEvPT %5 = tail call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef %.sroa.08.013) #29 %6 = getelementptr inbounds i8, ptr %.014, i64 32 %.not = icmp eq ptr %5, %1 - br i1 %.not, label %._crit_edge, label %.lr.ph, !llvm.loop !279 + br i1 %.not, label %._crit_edge, label %.lr.ph, !llvm.loop !278 7: ; preds = %.lr.ph %8 = landingpad { ptr, i32 } @@ -30052,7 +30041,7 @@ _ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE %25 = getelementptr inbounds i8, ptr %.0911.i.i.i, i64 32 %26 = getelementptr inbounds i8, ptr %.012.i.i.i, i64 32 %.not.i.i.i = icmp eq ptr %25, %1 - br i1 %.not.i.i.i, label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit, label %.lr.ph.i.i.i, !llvm.loop !280 + br i1 %.not.i.i.i, label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit, label %.lr.ph.i.i.i, !llvm.loop !279 _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit: ; preds = %.lr.ph.i.i.i, %_ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE9constructIS5_JRKS5_EEEvRS6_PT_DpOT0_.exit %.0.lcssa.i.i.i = phi ptr [ %23, %_ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE9constructIS5_JRKS5_EEEvRS6_PT_DpOT0_.exit ], [ %26, %.lr.ph.i.i.i ] @@ -30068,7 +30057,7 @@ _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_re %28 = getelementptr inbounds i8, ptr %.0911.i.i.i29, i64 32 %29 = getelementptr inbounds i8, ptr %.012.i.i.i28, i64 32 %.not.i.i.i30 = icmp eq ptr %28, %5 - br i1 %.not.i.i.i30, label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit32, label %.lr.ph.i.i.i27, !llvm.loop !280 + br i1 %.not.i.i.i30, label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit32, label %.lr.ph.i.i.i27, !llvm.loop !279 _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit32: ; preds = %.lr.ph.i.i.i27, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit %.0.lcssa.i.i.i31 = phi ptr [ %27, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_S_relocateEPS5_S8_S8_RS6_.exit ], [ %29, %.lr.ph.i.i.i27 ] @@ -30355,7 +30344,7 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi %.in.i = getelementptr inbounds i8, ptr %.02127.i, i64 %.in.v.i %.021.i = load ptr, ptr %.in.i, align 8 %.not.i = icmp eq ptr %.021.i, null - br i1 %.not.i, label %._crit_edge.i, label %.lr.ph.i, !llvm.loop !281 + br i1 %.not.i, label %._crit_edge.i, label %.lr.ph.i, !llvm.loop !280 ._crit_edge.i: ; preds = %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i br i1 %27, label %._crit_edge.thread.i, label %33 @@ -30463,7 +30452,7 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi %.in.i18 = getelementptr inbounds i8, ptr %.02127.i15, i64 %.in.v.i17 %.021.i19 = load ptr, ptr %.in.i18, align 8 %.not.i20 = icmp eq ptr %.021.i19, null - br i1 %.not.i20, label %._crit_edge.i21, label %.lr.ph.i14, !llvm.loop !281 + br i1 %.not.i20, label %._crit_edge.i21, label %.lr.ph.i14, !llvm.loop !280 ._crit_edge.i21: ; preds = %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i16 br i1 %70, label %._crit_edge.thread.i31, label %75 @@ -30569,7 +30558,7 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi %.in.i42 = getelementptr inbounds i8, ptr %.02127.i39, i64 %.in.v.i41 %.021.i43 = load ptr, ptr %.in.i42, align 8 %.not.i44 = icmp eq ptr %.021.i43, null - br i1 %.not.i44, label %._crit_edge.i45, label %.lr.ph.i38, !llvm.loop !281 + br i1 %.not.i44, label %._crit_edge.i45, label %.lr.ph.i38, !llvm.loop !280 ._crit_edge.i45: ; preds = %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i40 br i1 %111, label %._crit_edge.thread.i55, label %117 @@ -30809,7 +30798,7 @@ _ZSt10_ConstructIN6casadi8SparsityEJEEvPT_DpOT0_.exit.i.i.i: ; preds = %.lr.ph.i %19 = add i64 %.01013.i.i.i, -1 %20 = getelementptr inbounds i8, ptr %.014.i.i.i, i64 8 %.not.i.i.i = icmp eq i64 %19, 0 - br i1 %.not.i.i.i, label %_ZSt27__uninitialized_default_n_aIPN6casadi8SparsityEmS1_ET_S3_T0_RSaIT1_E.exit, label %.lr.ph.i.i.i, !llvm.loop !282 + br i1 %.not.i.i.i, label %_ZSt27__uninitialized_default_n_aIPN6casadi8SparsityEmS1_ET_S3_T0_RSaIT1_E.exit, label %.lr.ph.i.i.i, !llvm.loop !281 21: ; preds = %.lr.ph.i.i.i %22 = landingpad { ptr, i32 } @@ -30881,7 +30870,7 @@ _ZSt10_ConstructIN6casadi8SparsityEJEEvPT_DpOT0_.exit.i.i.i48: ; preds = %.lr.ph %40 = add i64 %.01013.i.i.i42, -1 %41 = getelementptr inbounds i8, ptr %.014.i.i.i41, i64 8 %.not.i.i.i49 = icmp eq i64 %40, 0 - br i1 %.not.i.i.i49, label %_ZSt27__uninitialized_default_n_aIPN6casadi8SparsityEmS1_ET_S3_T0_RSaIT1_E.exit51, label %.lr.ph.i.i.i40, !llvm.loop !282 + br i1 %.not.i.i.i49, label %_ZSt27__uninitialized_default_n_aIPN6casadi8SparsityEmS1_ET_S3_T0_RSaIT1_E.exit51, label %.lr.ph.i.i.i40, !llvm.loop !281 42: ; preds = %.lr.ph.i.i.i40 %43 = landingpad { ptr, i32 } @@ -31195,7 +31184,7 @@ _ZN6casadi11GenericTypeaSERKS0_.exit: ; preds = %21 %23 = add nuw nsw i64 %.079, 1 %24 = load i64, ptr %3, align 8 %25 = icmp slt i64 %23, %24 - br i1 %25, label %.lr.ph, label %._crit_edge, !llvm.loop !283 + br i1 %25, label %.lr.ph, label %._crit_edge, !llvm.loop !282 26: ; preds = %.lr.ph %27 = landingpad { ptr, i32 } @@ -32908,7 +32897,7 @@ _ZNSt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN6casadi7Options .noexc.i.i: ; preds = %.lr.ph.i.i.i %.07.i.i.add.i = add nuw nsw i64 %.07.i.i.idx.i, 72 %.not.i.i.i = icmp eq i64 %.07.i.i.add.i, 1224 - br i1 %.not.i.i.i, label %402, label %.lr.ph.i.i.i, !llvm.loop !284 + br i1 %.not.i.i.i, label %402, label %.lr.ph.i.i.i, !llvm.loop !283 .body447.i: ; preds = %.lr.ph.i.i.i %401 = landingpad { ptr, i32 } @@ -34076,4 +34065,3 @@ attributes #29 = { nounwind willreturn memory(read) } !281 = distinct !{!281, !8} !282 = distinct !{!282, !8} !283 = distinct !{!283, !8} -!284 = distinct !{!284, !8} diff --git a/bench/casadi/optimized/sundials_dense.c.ll b/bench/casadi/optimized/sundials_dense.c.ll index 5bfadd11bdb..024089d5115 100644 --- a/bench/casadi/optimized/sundials_dense.c.ll +++ b/bench/casadi/optimized/sundials_dense.c.ll @@ -540,41 +540,39 @@ define void @DensePOTRS(ptr nocapture noundef readonly %0, ptr nocapture noundef %36 = add nsw i64 %6, -2 br label %.lr.ph62.i -.lr.ph62.i: ; preds = %._crit_edge59.i, %.lr.ph62.preheader.i - %.15060.i = phi i64 [ %52, %._crit_edge59.i ], [ %36, %.lr.ph62.preheader.i ] +.lr.ph62.i: ; preds = %._crit_edge59.i.loopexit, %.lr.ph62.preheader.i + %.15060.i = phi i64 [ %50, %._crit_edge59.i.loopexit ], [ %36, %.lr.ph62.preheader.i ] %37 = getelementptr inbounds ptr, ptr %4, i64 %.15060.i %38 = load ptr, ptr %37, align 8 %.155.i = add nuw nsw i64 %.15060.i, 1 - %39 = icmp slt i64 %.155.i, %6 - %40 = getelementptr inbounds double, ptr %1, i64 %.15060.i - %.promoted.i = load double, ptr %40, align 8 - br i1 %39, label %.lr.ph58.i, label %._crit_edge59.i + %39 = getelementptr inbounds double, ptr %1, i64 %.15060.i + %.promoted.i = load double, ptr %39, align 8 + br label %.lr.ph58.i .lr.ph58.i: ; preds = %.lr.ph62.i, %.lr.ph58.i - %41 = phi double [ %47, %.lr.ph58.i ], [ %.promoted.i, %.lr.ph62.i ] + %40 = phi double [ %46, %.lr.ph58.i ], [ %.promoted.i, %.lr.ph62.i ] %.156.i = phi i64 [ %.1.i, %.lr.ph58.i ], [ %.155.i, %.lr.ph62.i ] - %42 = getelementptr inbounds double, ptr %38, i64 %.156.i - %43 = load double, ptr %42, align 8 - %44 = getelementptr inbounds double, ptr %1, i64 %.156.i - %45 = load double, ptr %44, align 8 - %46 = fneg double %43 - %47 = tail call double @llvm.fmuladd.f64(double %46, double %45, double %41) - store double %47, ptr %40, align 8 + %41 = getelementptr inbounds double, ptr %38, i64 %.156.i + %42 = load double, ptr %41, align 8 + %43 = getelementptr inbounds double, ptr %1, i64 %.156.i + %44 = load double, ptr %43, align 8 + %45 = fneg double %42 + %46 = tail call double @llvm.fmuladd.f64(double %45, double %44, double %40) + store double %46, ptr %39, align 8 %.1.i = add nuw nsw i64 %.156.i, 1 %exitcond65.not.i = icmp eq i64 %.1.i, %6 - br i1 %exitcond65.not.i, label %._crit_edge59.i, label %.lr.ph58.i, !llvm.loop !22 - -._crit_edge59.i: ; preds = %.lr.ph58.i, %.lr.ph62.i - %48 = phi double [ %.promoted.i, %.lr.ph62.i ], [ %47, %.lr.ph58.i ] - %49 = getelementptr inbounds double, ptr %38, i64 %.15060.i - %50 = load double, ptr %49, align 8 - %51 = fdiv double %48, %50 - store double %51, ptr %40, align 8 - %52 = add nsw i64 %.15060.i, -1 - %53 = icmp sgt i64 %.15060.i, 0 - br i1 %53, label %.lr.ph62.i, label %densePOTRS.exit, !llvm.loop !23 - -densePOTRS.exit: ; preds = %._crit_edge59.i, %._crit_edge.i + br i1 %exitcond65.not.i, label %._crit_edge59.i.loopexit, label %.lr.ph58.i, !llvm.loop !22 + +._crit_edge59.i.loopexit: ; preds = %.lr.ph58.i + %47 = getelementptr inbounds double, ptr %38, i64 %.15060.i + %48 = load double, ptr %47, align 8 + %49 = fdiv double %46, %48 + store double %49, ptr %39, align 8 + %50 = add nsw i64 %.15060.i, -1 + %51 = icmp sgt i64 %.15060.i, 0 + br i1 %51, label %.lr.ph62.i, label %densePOTRS.exit, !llvm.loop !23 + +densePOTRS.exit: ; preds = %._crit_edge59.i.loopexit, %._crit_edge.i ret void } diff --git a/bench/cmake/optimized/archive_read_support_format_warc.c.ll b/bench/cmake/optimized/archive_read_support_format_warc.c.ll index fe8c82ac949..ee65e546d67 100644 --- a/bench/cmake/optimized/archive_read_support_format_warc.c.ll +++ b/bench/cmake/optimized/archive_read_support_format_warc.c.ll @@ -324,12 +324,12 @@ xmemmem.exit.thread25.i: ; preds = %98, %xmemmem.exit.i .lr.ph.preheader.i.i.i: ; preds = %108 %110 = load i8, ptr %106, align 1 - %scevgep.i.i = getelementptr i8, ptr %106, i64 2 %111 = load i8, ptr %.04855.i.i.i, align 1 %112 = xor i8 %110, 10 %113 = sext i8 %112 to i32 %114 = icmp eq i8 %111, 10 - %115 = icmp uge ptr %scevgep.i.i, %spec.select.i265 + %.048.i.i.i = getelementptr inbounds i8, ptr %106, i64 2 + %115 = icmp uge ptr %.048.i.i.i, %spec.select.i265 %brmerge.i23.i = or i1 %115, %114 br i1 %brmerge.i23.i, label %_warc_find_eol.exit.i, label %.lr.ph68.i.preheader.i.i @@ -341,7 +341,7 @@ xmemmem.exit.thread25.i: ; preds = %98, %xmemmem.exit.i .lr.ph68.i.i.i: ; preds = %128, %.lr.ph68.i.preheader.i.i %.167.i.i.i = phi i32 [ %124, %128 ], [ %117, %.lr.ph68.i.preheader.i.i ] %.04666.i.i.i = phi ptr [ %118, %128 ], [ %106, %.lr.ph68.i.preheader.i.i ] - %.14965.i.i.i = phi ptr [ %129, %128 ], [ %scevgep.i.i, %.lr.ph68.i.preheader.i.i ] + %.14965.i.i.i = phi ptr [ %129, %128 ], [ %.048.i.i.i, %.lr.ph68.i.preheader.i.i ] %118 = getelementptr inbounds i8, ptr %.04666.i.i.i, i64 1 %119 = load i8, ptr %.04666.i.i.i, align 1 %120 = sext i8 %119 to i32 @@ -514,12 +514,12 @@ xmemmem.exit.thread14.i: ; preds = %174, %xmemmem.exit. .lr.ph.preheader.i.i.i130: ; preds = %184 %186 = load i8, ptr %182, align 1 - %scevgep.i.i131 = getelementptr i8, ptr %182, i64 2 %187 = load i8, ptr %.04855.i.i.i129, align 1 %188 = xor i8 %186, 10 %189 = sext i8 %188 to i32 %190 = icmp eq i8 %187, 10 - %191 = icmp uge ptr %scevgep.i.i131, %spec.select.i265 + %.048.i.i.i131 = getelementptr inbounds i8, ptr %182, i64 2 + %191 = icmp uge ptr %.048.i.i.i131, %spec.select.i265 %brmerge.i12.i = or i1 %191, %190 br i1 %brmerge.i12.i, label %_warc_find_eol.exit.i139, label %.lr.ph68.i.preheader.i.i132 @@ -531,7 +531,7 @@ xmemmem.exit.thread14.i: ; preds = %174, %xmemmem.exit. .lr.ph68.i.i.i133: ; preds = %204, %.lr.ph68.i.preheader.i.i132 %.167.i.i.i134 = phi i32 [ %200, %204 ], [ %193, %.lr.ph68.i.preheader.i.i132 ] %.04666.i.i.i135 = phi ptr [ %194, %204 ], [ %182, %.lr.ph68.i.preheader.i.i132 ] - %.14965.i.i.i136 = phi ptr [ %205, %204 ], [ %scevgep.i.i131, %.lr.ph68.i.preheader.i.i132 ] + %.14965.i.i.i136 = phi ptr [ %205, %204 ], [ %.048.i.i.i131, %.lr.ph68.i.preheader.i.i132 ] %194 = getelementptr inbounds i8, ptr %.04666.i.i.i135, i64 1 %195 = load i8, ptr %.04666.i.i.i135, align 1 %196 = sext i8 %195 to i32 @@ -679,12 +679,12 @@ xmemmem.exit.thread24.i: ; preds = %242, %xmemmem.exit. .lr.ph.preheader.i.i.i161: ; preds = %252 %254 = load i8, ptr %250, align 1 - %scevgep.i.i162 = getelementptr i8, ptr %250, i64 2 %255 = load i8, ptr %.04855.i.i.i160, align 1 %256 = xor i8 %254, 10 %257 = sext i8 %256 to i32 %258 = icmp eq i8 %255, 10 - %259 = icmp uge ptr %scevgep.i.i162, %spec.select.i265 + %.048.i.i.i162 = getelementptr inbounds i8, ptr %250, i64 2 + %259 = icmp uge ptr %.048.i.i.i162, %spec.select.i265 %brmerge.i22.i = or i1 %259, %258 br i1 %brmerge.i22.i, label %_warc_find_eol.exit.i178, label %.lr.ph68.i.preheader.i.i163 @@ -696,7 +696,7 @@ xmemmem.exit.thread24.i: ; preds = %242, %xmemmem.exit. .lr.ph68.i.i.i164: ; preds = %272, %.lr.ph68.i.preheader.i.i163 %.167.i.i.i165 = phi i32 [ %268, %272 ], [ %261, %.lr.ph68.i.preheader.i.i163 ] %.04666.i.i.i166 = phi ptr [ %262, %272 ], [ %250, %.lr.ph68.i.preheader.i.i163 ] - %.14965.i.i.i167 = phi ptr [ %273, %272 ], [ %scevgep.i.i162, %.lr.ph68.i.preheader.i.i163 ] + %.14965.i.i.i167 = phi ptr [ %273, %272 ], [ %.048.i.i.i162, %.lr.ph68.i.preheader.i.i163 ] %262 = getelementptr inbounds i8, ptr %.04666.i.i.i166, i64 1 %263 = load i8, ptr %.04666.i.i.i166, align 1 %264 = sext i8 %263 to i32 @@ -857,12 +857,12 @@ xmemmem.exit.thread67.i: ; preds = %312, %xmemmem.exit. .lr.ph.preheader.i.i.i200: ; preds = %322 %324 = load i8, ptr %320, align 1 - %scevgep.i.i201 = getelementptr i8, ptr %320, i64 2 %325 = load i8, ptr %.04855.i.i.i199, align 1 %326 = xor i8 %324, 10 %327 = sext i8 %326 to i32 %328 = icmp eq i8 %325, 10 - %329 = icmp uge ptr %scevgep.i.i201, %spec.select.i265 + %.048.i.i.i201 = getelementptr inbounds i8, ptr %320, i64 2 + %329 = icmp uge ptr %.048.i.i.i201, %spec.select.i265 %brmerge.i44.i = or i1 %329, %328 br i1 %brmerge.i44.i, label %_warc_find_eol.exit.i218, label %.lr.ph68.i.preheader.i.i202 @@ -874,7 +874,7 @@ xmemmem.exit.thread67.i: ; preds = %312, %xmemmem.exit. .lr.ph68.i.i.i203: ; preds = %342, %.lr.ph68.i.preheader.i.i202 %.167.i.i.i204 = phi i32 [ %338, %342 ], [ %331, %.lr.ph68.i.preheader.i.i202 ] %.04666.i.i.i205 = phi ptr [ %332, %342 ], [ %320, %.lr.ph68.i.preheader.i.i202 ] - %.14965.i.i.i206 = phi ptr [ %343, %342 ], [ %scevgep.i.i201, %.lr.ph68.i.preheader.i.i202 ] + %.14965.i.i.i206 = phi ptr [ %343, %342 ], [ %.048.i.i.i201, %.lr.ph68.i.preheader.i.i202 ] %332 = getelementptr inbounds i8, ptr %.04666.i.i.i205, i64 1 %333 = load i8, ptr %.04666.i.i.i205, align 1 %334 = sext i8 %333 to i32 @@ -1185,12 +1185,12 @@ xmemmem.exit.thread14.i240: ; preds = %452, %xmemmem.exit. .lr.ph.preheader.i.i.i243: ; preds = %462 %464 = load i8, ptr %460, align 1 - %scevgep.i.i244 = getelementptr i8, ptr %460, i64 2 %465 = load i8, ptr %.04855.i.i.i242, align 1 %466 = xor i8 %464, 10 %467 = sext i8 %466 to i32 %468 = icmp eq i8 %465, 10 - %469 = icmp uge ptr %scevgep.i.i244, %spec.select.i265 + %.048.i.i.i244 = getelementptr inbounds i8, ptr %460, i64 2 + %469 = icmp uge ptr %.048.i.i.i244, %spec.select.i265 %brmerge.i12.i245 = or i1 %469, %468 br i1 %brmerge.i12.i245, label %_warc_find_eol.exit.i256, label %.lr.ph68.i.preheader.i.i246 @@ -1202,7 +1202,7 @@ xmemmem.exit.thread14.i240: ; preds = %452, %xmemmem.exit. .lr.ph68.i.i.i247: ; preds = %482, %.lr.ph68.i.preheader.i.i246 %.167.i.i.i248 = phi i32 [ %478, %482 ], [ %471, %.lr.ph68.i.preheader.i.i246 ] %.04666.i.i.i249 = phi ptr [ %472, %482 ], [ %460, %.lr.ph68.i.preheader.i.i246 ] - %.14965.i.i.i250 = phi ptr [ %483, %482 ], [ %scevgep.i.i244, %.lr.ph68.i.preheader.i.i246 ] + %.14965.i.i.i250 = phi ptr [ %483, %482 ], [ %.048.i.i.i244, %.lr.ph68.i.preheader.i.i246 ] %472 = getelementptr inbounds i8, ptr %.04666.i.i.i249, i64 1 %473 = load i8, ptr %.04666.i.i.i249, align 1 %474 = sext i8 %473 to i32 diff --git a/bench/cmake/optimized/cmCMakePresetsGraph.cxx.ll b/bench/cmake/optimized/cmCMakePresetsGraph.cxx.ll index 57a98d2a60b..865d955501e 100644 --- a/bench/cmake/optimized/cmCMakePresetsGraph.cxx.ll +++ b/bench/cmake/optimized/cmCMakePresetsGraph.cxx.ll @@ -424,18 +424,18 @@ define dso_local noundef i32 @_ZN27cmCMakePresetsGraphInternal12ExpandMacrosERNS call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #21 %7 = call ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5beginEv(ptr noundef nonnull align 8 dereferenceable(32) %0) #21 %8 = call ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE3endEv(ptr noundef nonnull align 8 dereferenceable(32) %0) #21 - %.not38 = icmp eq ptr %7, %8 - br i1 %.not38, label %._crit_edge.thread, label %.lr.ph + %.not37 = icmp eq ptr %7, %8 + br i1 %.not37, label %._crit_edge.thread, label %.lr.ph .lr.ph: ; preds = %3 %9 = getelementptr inbounds i8, ptr %1, i64 8 br label %10 10: ; preds = %.lr.ph, %_ZN12_GLOBAL__N_121IsValidMacroNamespaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.thread - %.01840 = phi i32 [ 0, %.lr.ph ], [ %.1, %_ZN12_GLOBAL__N_121IsValidMacroNamespaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.thread ] - %.sroa.020.039 = phi ptr [ %7, %.lr.ph ], [ %78, %_ZN12_GLOBAL__N_121IsValidMacroNamespaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.thread ] - %11 = load i8, ptr %.sroa.020.039, align 1 - switch i32 %.01840, label %default.unreachable [ + %.01839 = phi i32 [ 0, %.lr.ph ], [ %.1, %_ZN12_GLOBAL__N_121IsValidMacroNamespaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.thread ] + %.sroa.020.038 = phi ptr [ %7, %.lr.ph ], [ %78, %_ZN12_GLOBAL__N_121IsValidMacroNamespaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.thread ] + %11 = load i8, ptr %.sroa.020.038, align 1 + switch i32 %.01839, label %default.unreachable [ i32 0, label %12 i32 1, label %16 i32 2, label %62 @@ -455,17 +455,17 @@ define dso_local noundef i32 @_ZN27cmCMakePresetsGraphInternal12ExpandMacrosERNS br label %.loopexit.split-lp .loopexit.split-lp.loopexit: ; preds = %76, %60, %58, %35, %33, %31, %29, %14 - %lpad.loopexit27 = landingpad { ptr, i32 } + %lpad.loopexit26 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp .loopexit.split-lp.loopexit.split-lp: ; preds = %81, %79 - %lpad.loopexit.split-lp28 = landingpad { ptr, i32 } + %lpad.loopexit.split-lp27 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp .loopexit.split-lp: ; preds = %.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp, %.loopexit - %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit27, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp28, %.loopexit.split-lp.loopexit.split-lp ] + %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit26, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp27, %.loopexit.split-lp.loopexit.split-lp ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #21 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #21 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #21 @@ -594,7 +594,7 @@ _ZN12_GLOBAL__N_127PrefixesValidMacroNamespaceERKNSt7__cxx1112basic_stringIcSt11 to label %.noexc unwind label %.loopexit .noexc: ; preds = %.lr.ph.i - switch i32 %72, label %.loopexit26 [ + switch i32 %72, label %.loopexit25 [ i32 1, label %67 i32 0, label %75 ] @@ -603,7 +603,7 @@ _ZN27cmCMakePresetsGraphInternal11ExpandMacroERNSt7__cxx1112basic_stringIcSt11ch %73 = call noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str) #21 %74 = icmp eq i32 %73, 0 %..i = select i1 %74, i32 1, i32 2 - br label %.loopexit26 + br label %.loopexit25 75: ; preds = %.noexc call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5clearEv(ptr noundef nonnull align 8 dereferenceable(32) %5) #21 @@ -621,15 +621,15 @@ _ZN12_GLOBAL__N_121IsValidMacroNamespaceERKNSt7__cxx1112basic_stringIcSt11char_t call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5clearEv(ptr noundef nonnull align 8 dereferenceable(32) %.sink) #21 br label %_ZN12_GLOBAL__N_121IsValidMacroNamespaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.thread -_ZN12_GLOBAL__N_121IsValidMacroNamespaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.thread: ; preds = %_ZN12_GLOBAL__N_121IsValidMacroNamespaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.thread.sink.split, %37, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN12_GLOBAL__N_127PrefixesValidMacroNamespaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EclIPKPKcEEbT_.exit.thread.i.i.i.i.i.i", %"_ZN9__gnu_cxx5__ops10_Iter_predIZN12_GLOBAL__N_127PrefixesValidMacroNamespaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EclIPKPKcEEbT_.exit45.thread.i.i.i.i.i.i", %"_ZN9__gnu_cxx5__ops10_Iter_predIZN12_GLOBAL__N_127PrefixesValidMacroNamespaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EclIPKPKcEEbT_.exit51.thread.i.i.i.i.i.i", %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i41.i.i.i.i.i.i, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i47.i.i.i.i.i.i, %18, %24, %21, %_ZN12_GLOBAL__N_121IsValidMacroNamespaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, %12, %14, %_ZN12_GLOBAL__N_127PrefixesValidMacroNamespaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, %76 - %.1 = phi i32 [ 2, %76 ], [ 1, %_ZN12_GLOBAL__N_127PrefixesValidMacroNamespaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit ], [ 0, %14 ], [ 1, %12 ], [ 2, %_ZN12_GLOBAL__N_121IsValidMacroNamespaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit ], [ 2, %21 ], [ 2, %24 ], [ 2, %18 ], [ 1, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i47.i.i.i.i.i.i ], [ 1, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i41.i.i.i.i.i.i ], [ 1, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN12_GLOBAL__N_127PrefixesValidMacroNamespaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EclIPKPKcEEbT_.exit51.thread.i.i.i.i.i.i" ], [ 1, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN12_GLOBAL__N_127PrefixesValidMacroNamespaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EclIPKPKcEEbT_.exit45.thread.i.i.i.i.i.i" ], [ 1, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN12_GLOBAL__N_127PrefixesValidMacroNamespaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EclIPKPKcEEbT_.exit.thread.i.i.i.i.i.i" ], [ 1, %37 ], [ 0, %_ZN12_GLOBAL__N_121IsValidMacroNamespaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.thread.sink.split ] - %78 = getelementptr inbounds i8, ptr %.sroa.020.039, i64 1 +_ZN12_GLOBAL__N_121IsValidMacroNamespaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.thread: ; preds = %_ZN12_GLOBAL__N_121IsValidMacroNamespaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.thread.sink.split, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN12_GLOBAL__N_127PrefixesValidMacroNamespaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EclIPKPKcEEbT_.exit.thread.i.i.i.i.i.i", %"_ZN9__gnu_cxx5__ops10_Iter_predIZN12_GLOBAL__N_127PrefixesValidMacroNamespaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EclIPKPKcEEbT_.exit45.thread.i.i.i.i.i.i", %"_ZN9__gnu_cxx5__ops10_Iter_predIZN12_GLOBAL__N_127PrefixesValidMacroNamespaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EclIPKPKcEEbT_.exit51.thread.i.i.i.i.i.i", %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i41.i.i.i.i.i.i, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i47.i.i.i.i.i.i, %37, %24, %21, %18, %_ZN12_GLOBAL__N_121IsValidMacroNamespaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, %12, %14, %_ZN12_GLOBAL__N_127PrefixesValidMacroNamespaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit, %76 + %.1 = phi i32 [ 2, %76 ], [ 1, %_ZN12_GLOBAL__N_127PrefixesValidMacroNamespaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit ], [ 0, %14 ], [ 1, %12 ], [ 2, %_ZN12_GLOBAL__N_121IsValidMacroNamespaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit ], [ 2, %18 ], [ 2, %21 ], [ 2, %24 ], [ 1, %37 ], [ 1, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i47.i.i.i.i.i.i ], [ 1, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i41.i.i.i.i.i.i ], [ 1, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN12_GLOBAL__N_127PrefixesValidMacroNamespaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EclIPKPKcEEbT_.exit51.thread.i.i.i.i.i.i" ], [ 1, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN12_GLOBAL__N_127PrefixesValidMacroNamespaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EclIPKPKcEEbT_.exit45.thread.i.i.i.i.i.i" ], [ 1, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN12_GLOBAL__N_127PrefixesValidMacroNamespaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EclIPKPKcEEbT_.exit.thread.i.i.i.i.i.i" ], [ 0, %_ZN12_GLOBAL__N_121IsValidMacroNamespaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.thread.sink.split ] + %78 = getelementptr inbounds i8, ptr %.sroa.020.038, i64 1 %.not = icmp eq ptr %78, %8 br i1 %.not, label %._crit_edge, label %10 ._crit_edge: ; preds = %_ZN12_GLOBAL__N_121IsValidMacroNamespaceERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.thread switch i32 %.1, label %._crit_edge.thread [ - i32 2, label %.loopexit26 + i32 2, label %.loopexit25 i32 1, label %79 ] @@ -643,9 +643,9 @@ _ZN12_GLOBAL__N_121IsValidMacroNamespaceERKNSt7__cxx1112basic_stringIcSt11char_t ._crit_edge.thread: ; preds = %3, %81, %._crit_edge %83 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(32) %4) #21 - br label %.loopexit26 + br label %.loopexit25 -.loopexit26: ; preds = %.noexc, %_ZN27cmCMakePresetsGraphInternal11ExpandMacroERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS5_S8_RKSt6vectorISt10unique_ptrINS_13MacroExpanderESt14default_deleteISB_EESaISE_EEi.exit.thread, %._crit_edge, %._crit_edge.thread +.loopexit25: ; preds = %.noexc, %_ZN27cmCMakePresetsGraphInternal11ExpandMacroERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS5_S8_RKSt6vectorISt10unique_ptrINS_13MacroExpanderESt14default_deleteISB_EESaISE_EEi.exit.thread, %._crit_edge, %._crit_edge.thread %.0 = phi i32 [ 0, %._crit_edge.thread ], [ %.1, %._crit_edge ], [ %..i, %_ZN27cmCMakePresetsGraphInternal11ExpandMacroERNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS5_S8_RKSt6vectorISt10unique_ptrINS_13MacroExpanderESt14default_deleteISB_EESaISE_EEi.exit.thread ], [ %72, %.noexc ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #21 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #21 diff --git a/bench/cmake/optimized/cmState.cxx.ll b/bench/cmake/optimized/cmState.cxx.ll index afc58e2c7cc..797c5870386 100644 --- a/bench/cmake/optimized/cmState.cxx.ll +++ b/bench/cmake/optimized/cmState.cxx.ll @@ -1949,8 +1949,8 @@ define dso_local noundef zeroext i1 @_ZN7cmState16IsCacheEntryTypeERKNSt7__cxx11 br label %"_ZSt6any_ofIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEZN7cmState16IsCacheEntryTypeERS6_E3$_0EbT_SB_T0_.exit" "_ZSt6any_ofIPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEZN7cmState16IsCacheEntryTypeERS6_E3$_0EbT_SB_T0_.exit": ; preds = %4, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN7cmState16IsCacheEntryTypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EclIPS9_EEbT_.exit.i.i.i.i.i", %13, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN7cmState16IsCacheEntryTypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EclIPS9_EEbT_.exit37.i.i.i.i.i", %22, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN7cmState16IsCacheEntryTypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EclIPS9_EEbT_.exit39.i.i.i.i.i", %31, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN7cmState16IsCacheEntryTypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EclIPS9_EEbT_.exit41.i.i.i.i.i", %40, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN7cmState16IsCacheEntryTypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EclIPS9_EEbT_.exit43.i.i.i.i.i", %49, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN7cmState16IsCacheEntryTypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EclIPS9_EEbT_.exit45.i.i.i.i.i", %58, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN7cmState16IsCacheEntryTypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EclIPS9_EEbT_.exit47.i.i.i.i.i", %"_ZN9__gnu_cxx5__ops10_Iter_predIZN7cmState16IsCacheEntryTypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EclIPS9_EEbT_.exit47.thread54.i.i.i.i.i" - %.028.i.i.i.i.i = phi i1 [ false, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN7cmState16IsCacheEntryTypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EclIPS9_EEbT_.exit47.thread54.i.i.i.i.i" ], [ true, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN7cmState16IsCacheEntryTypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EclIPS9_EEbT_.exit43.i.i.i.i.i" ], [ true, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN7cmState16IsCacheEntryTypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EclIPS9_EEbT_.exit45.i.i.i.i.i" ], [ true, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN7cmState16IsCacheEntryTypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EclIPS9_EEbT_.exit47.i.i.i.i.i" ], [ true, %40 ], [ true, %49 ], [ true, %58 ], [ true, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN7cmState16IsCacheEntryTypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EclIPS9_EEbT_.exit41.i.i.i.i.i" ], [ true, %31 ], [ true, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN7cmState16IsCacheEntryTypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EclIPS9_EEbT_.exit39.i.i.i.i.i" ], [ true, %22 ], [ true, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN7cmState16IsCacheEntryTypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EclIPS9_EEbT_.exit37.i.i.i.i.i" ], [ true, %13 ], [ true, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN7cmState16IsCacheEntryTypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EclIPS9_EEbT_.exit.i.i.i.i.i" ], [ true, %4 ] - ret i1 %.028.i.i.i.i.i + %64 = phi i1 [ false, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN7cmState16IsCacheEntryTypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EclIPS9_EEbT_.exit47.thread54.i.i.i.i.i" ], [ true, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN7cmState16IsCacheEntryTypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EclIPS9_EEbT_.exit43.i.i.i.i.i" ], [ true, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN7cmState16IsCacheEntryTypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EclIPS9_EEbT_.exit45.i.i.i.i.i" ], [ true, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN7cmState16IsCacheEntryTypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EclIPS9_EEbT_.exit47.i.i.i.i.i" ], [ true, %40 ], [ true, %49 ], [ true, %58 ], [ true, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN7cmState16IsCacheEntryTypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EclIPS9_EEbT_.exit.i.i.i.i.i" ], [ true, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN7cmState16IsCacheEntryTypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EclIPS9_EEbT_.exit37.i.i.i.i.i" ], [ true, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN7cmState16IsCacheEntryTypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EclIPS9_EEbT_.exit39.i.i.i.i.i" ], [ true, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN7cmState16IsCacheEntryTypeERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE3$_0EclIPS9_EEbT_.exit41.i.i.i.i.i" ], [ true, %4 ], [ true, %13 ], [ true, %22 ], [ true, %31 ] + ret i1 %64 } ; Function Attrs: mustprogress uwtable diff --git a/bench/coreutils-rs/optimized/2g9ijtjos2xwh9zs.ll b/bench/coreutils-rs/optimized/2g9ijtjos2xwh9zs.ll index 0a3bed26048..51daaddadfc 100644 --- a/bench/coreutils-rs/optimized/2g9ijtjos2xwh9zs.ll +++ b/bench/coreutils-rs/optimized/2g9ijtjos2xwh9zs.ll @@ -5747,28 +5747,28 @@ define hidden noundef range(i8 0, 3) i8 @_ZN5rayon5slice9mergesort9mergesort17h9 cleanup br label %.body -.body: ; preds = %.loopexit144, %.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit, %231, %191 - %eh.lpad-body = phi { ptr, i32 } [ %lpad.phi.i, %191 ], [ %lpad.loopexit.i132, %231 ], [ %lpad.loopexit, %.loopexit144 ], [ %lpad.loopexit145, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit149, %.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit151, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp152, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ] +.body: ; preds = %.loopexit144, %.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit, %.loopexit.i, %191 + %eh.lpad-body = phi { ptr, i32 } [ %lpad.phi.i, %191 ], [ %lpad.loopexit.i132, %.loopexit.i ], [ %lpad.loopexit, %.loopexit144 ], [ %lpad.loopexit145, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit149, %.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit151, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp152, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ] call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6), !noalias !1463 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h54d912fb24964381E.llvm.3531809010164697281"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %8) - to label %.noexc unwind label %233 + to label %.noexc unwind label %231 .noexc: ; preds = %.body %35 = getelementptr inbounds i8, ptr %6, i64 8 %36 = load i64, ptr %35, align 8, !range !435, !noalias !1463, !noundef !18 %.not.i.i.i101 = icmp eq i64 %36, 0 - br i1 %.not.i.i.i101, label %235, label %37 + br i1 %.not.i.i.i101, label %233, label %37 37: ; preds = %.noexc %38 = getelementptr inbounds i8, ptr %6, i64 16 %39 = load i64, ptr %38, align 8, !noalias !1463, !noundef !18 %40 = icmp eq i64 %39, 0 - br i1 %40, label %235, label %41 + br i1 %40, label %233, label %41 41: ; preds = %37 %42 = load ptr, ptr %6, align 8, !noalias !1463, !nonnull !18, !noundef !18 call void @__rust_dealloc(ptr noundef nonnull %42, i64 noundef %39, i64 noundef %36) #39 - br label %235 + br label %233 43: ; preds = %23 %44 = icmp eq i8 %29, -1 @@ -6204,43 +6204,43 @@ _ZN4core3ptr19swap_nonoverlapping17h45446940a5c53ec3E.exit.i.i: ; preds = %86 .noexc133: ; preds = %218 %221 = icmp eq i8 %220, -1 - br i1 %221, label %222, label %_ZN5rayon5slice9mergesort11insert_head17hc3f026430ad36930E.exit + br i1 %221, label %.split.i, label %_ZN5rayon5slice9mergesort11insert_head17hc3f026430ad36930E.exit -222: ; preds = %.noexc133 +.split.i: ; preds = %.noexc133 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4), !noalias !1497 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(24) %108, i64 24, i1 false) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %108, ptr noundef nonnull align 8 dereferenceable(24) %219, i64 24, i1 false), !alias.scope !1497 %.not.i130 = icmp eq i64 %107, 2 br i1 %.not.i130, label %.thread.i, label %.lr.ph.i131 -.thread.i: ; preds = %228, %226, %222 - %.sroa.5.0.lcssa.i = phi ptr [ %219, %222 ], [ %.sroa.5.06.i, %226 ], [ %224, %228 ] +.thread.i: ; preds = %227, %225, %.split.i + %.sroa.5.0.lcssa.i = phi ptr [ %219, %.split.i ], [ %.sroa.5.06.i, %225 ], [ %223, %227 ] call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.5.0.lcssa.i, ptr noundef nonnull readonly align 8 dereferenceable(24) %4, i64 24, i1 false) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4), !noalias !1497 br label %_ZN5rayon5slice9mergesort11insert_head17hc3f026430ad36930E.exit -.lr.ph.i131: ; preds = %222, %228 - %.sroa.02.07.i = phi i64 [ %223, %228 ], [ 2, %222 ] - %.sroa.5.06.i = phi ptr [ %224, %228 ], [ %219, %222 ] - %223 = add nuw i64 %.sroa.02.07.i, 1 - %224 = getelementptr inbounds [0 x { { ptr, i64 }, i64 }], ptr %108, i64 0, i64 %.sroa.02.07.i +.lr.ph.i131: ; preds = %.split.i, %227 + %.sroa.02.07.i = phi i64 [ %222, %227 ], [ 2, %.split.i ] + %.sroa.5.06.i = phi ptr [ %223, %227 ], [ %219, %.split.i ] + %222 = add nuw i64 %.sroa.02.07.i, 1 + %223 = getelementptr inbounds [0 x { { ptr, i64 }, i64 }], ptr %108, i64 0, i64 %.sroa.02.07.i %.val.i.i17.i = load ptr, ptr %.val98, align 8, !noalias !1540, !nonnull !18, !align !223, !noundef !18 %.val1.i.i18.i = load ptr, ptr %11, align 8, !noalias !1540, !nonnull !18, !align !223, !noundef !18 - %225 = invoke noundef range(i8 -1, 2) i8 @_ZN7uu_sort10compare_by17hf350e8ed154bc332E(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %224, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(160) %.val.i.i17.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(72) %.val1.i.i18.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(72) %.val1.i.i18.i) - to label %226 unwind label %231 - -226: ; preds = %.lr.ph.i131 - %227 = icmp eq i8 %225, -1 - br i1 %227, label %228, label %.thread.i - -228: ; preds = %226 - %229 = add i64 %.sroa.02.07.i, -1 - %230 = getelementptr inbounds [0 x { { ptr, i64 }, i64 }], ptr %108, i64 0, i64 %229 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %230, ptr noundef nonnull align 8 dereferenceable(24) %224, i64 24, i1 false), !alias.scope !1497 - %exitcond.not.i = icmp eq i64 %223, %107 + %224 = invoke noundef range(i8 -1, 2) i8 @_ZN7uu_sort10compare_by17hf350e8ed154bc332E(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %223, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(160) %.val.i.i17.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(72) %.val1.i.i18.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(72) %.val1.i.i18.i) + to label %225 unwind label %.loopexit.i + +225: ; preds = %.lr.ph.i131 + %226 = icmp eq i8 %224, -1 + br i1 %226, label %227, label %.thread.i + +227: ; preds = %225 + %228 = add i64 %.sroa.02.07.i, -1 + %229 = getelementptr inbounds [0 x { { ptr, i64 }, i64 }], ptr %108, i64 0, i64 %228 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %229, ptr noundef nonnull align 8 dereferenceable(24) %223, i64 24, i1 false), !alias.scope !1497 + %exitcond.not.i = icmp eq i64 %222, %107 br i1 %exitcond.not.i, label %.thread.i, label %.lr.ph.i131 -231: ; preds = %.lr.ph.i131 +.loopexit.i: ; preds = %.lr.ph.i131 %lpad.loopexit.i132 = landingpad { ptr, i32 } cleanup call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.5.06.i, ptr noundef nonnull readonly align 8 dereferenceable(24) %4, i64 24, i1 false) @@ -6248,17 +6248,17 @@ _ZN4core3ptr19swap_nonoverlapping17h45446940a5c53ec3E.exit.i.i: ; preds = %86 _ZN5rayon5slice9mergesort11insert_head17hc3f026430ad36930E.exit: ; preds = %106, %.noexc133, %.thread.i %.not94 = icmp ne i64 %105, 0 - %232 = icmp ult i64 %107, 10 - %or.cond96 = and i1 %.not94, %232 + %230 = icmp ult i64 %107, 10 + %or.cond96 = and i1 %.not94, %230 br i1 %or.cond96, label %.lr.ph.split, label %._crit_edge -233: ; preds = %.body - %234 = landingpad { ptr, i32 } +231: ; preds = %.body + %232 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #42 unreachable -235: ; preds = %41, %37, %.noexc +233: ; preds = %41, %37, %.noexc call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6), !noalias !1463 resume { ptr, i32 } %eh.lpad-body } diff --git a/bench/cpython/optimized/sixstep.ll b/bench/cpython/optimized/sixstep.ll index c42758ddedc..c19f6d21c49 100644 --- a/bench/cpython/optimized/sixstep.ll +++ b/bench/cpython/optimized/sixstep.ll @@ -86,16 +86,16 @@ for.body19.lr.ph: ; preds = %if.end14 %and20.i107 = and i64 %0, 17179869184 %tobool21.not.i108 = icmp eq i64 %and20.i107, 0 %umax = tail call i64 @llvm.umax.i64(i64 %shl2, i64 2) - br label %while.body.i.preheader + br label %for.body19 -while.body.i.preheader: ; preds = %for.inc40, %for.body19.lr.ph +for.body19: ; preds = %for.body19.lr.ph, %for.inc40 %i.0466 = phi i64 [ 1, %for.body19.lr.ph ], [ %inc, %for.inc40 ] br label %while.body.i -while.body.i: ; preds = %while.body.i.preheader, %x64_mulmod.exit - %r.010.i = phi i64 [ %r.1.i, %x64_mulmod.exit ], [ 1, %while.body.i.preheader ] - %base.addr.09.i = phi i64 [ %spec.select93.i, %x64_mulmod.exit ], [ %call15, %while.body.i.preheader ] - %exp.addr.08.i = phi i64 [ %shr.i56, %x64_mulmod.exit ], [ %i.0466, %while.body.i.preheader ] +while.body.i: ; preds = %for.body19, %x64_mulmod.exit + %r.010.i = phi i64 [ %r.1.i, %x64_mulmod.exit ], [ 1, %for.body19 ] + %base.addr.09.i = phi i64 [ %spec.select93.i, %x64_mulmod.exit ], [ %call15, %for.body19 ] + %exp.addr.08.i = phi i64 [ %shr.i56, %x64_mulmod.exit ], [ %i.0466, %for.body19 ] %and.i = and i64 %exp.addr.08.i, 1 %tobool.not.i = icmp eq i64 %and.i, 0 br i1 %tobool.not.i, label %while.body.i.if.end.i_crit_edge, label %if.then.i @@ -276,19 +276,19 @@ x64_mulmod.exit: ; preds = %if.then.i64, %if.th %spec.select93.i = sub i64 %add99.i, %sub108.i %shr.i56 = lshr i64 %exp.addr.08.i, 1 %cmp.not.i57 = icmp ult i64 %exp.addr.08.i, 2 - br i1 %cmp.not.i57, label %x64_powmod.exit, label %while.body.i, !llvm.loop !6 + br i1 %cmp.not.i57, label %x64_powmod.exit.loopexit, label %while.body.i, !llvm.loop !6 -x64_powmod.exit: ; preds = %x64_mulmod.exit +x64_powmod.exit.loopexit: ; preds = %x64_mulmod.exit %call21 = tail call fastcc i64 @x64_mulmod(i64 noundef %r.1.i, i64 noundef %r.1.i, i64 noundef %0) %mul55 = shl i64 %i.0466, %div54 %1 = getelementptr i64, ptr %a, i64 %mul55 %conv1.i.i377 = zext i64 %call21 to i128 br label %for.body25 -for.body25: ; preds = %x64_powmod.exit, %x64_mulmod.exit375 - %k.0464 = phi i64 [ 0, %x64_powmod.exit ], [ %add38, %x64_mulmod.exit375 ] - %w1.0463 = phi i64 [ %r.1.i, %x64_powmod.exit ], [ %spec.select93.i336, %x64_mulmod.exit375 ] - %w0.0462 = phi i64 [ 1, %x64_powmod.exit ], [ %spec.select93.i413, %x64_mulmod.exit375 ] +for.body25: ; preds = %x64_powmod.exit.loopexit, %x64_mulmod.exit375 + %k.0464 = phi i64 [ 0, %x64_powmod.exit.loopexit ], [ %add38, %x64_mulmod.exit375 ] + %w1.0463 = phi i64 [ %r.1.i, %x64_powmod.exit.loopexit ], [ %spec.select93.i336, %x64_mulmod.exit375 ] + %w0.0462 = phi i64 [ 1, %x64_powmod.exit.loopexit ], [ %spec.select93.i413, %x64_mulmod.exit375 ] %arrayidx = getelementptr i64, ptr %1, i64 %k.0464 %2 = load i64, ptr %arrayidx, align 8 %arrayidx29 = getelementptr i8, ptr %arrayidx, i64 8 @@ -630,7 +630,7 @@ x64_mulmod.exit375: ; preds = %if.then.i307, %if.t for.inc40: ; preds = %x64_mulmod.exit375 %inc = add nuw i64 %i.0466, 1 %exitcond.not = icmp eq i64 %inc, %umax - br i1 %exitcond.not, label %for.end41, label %while.body.i.preheader, !llvm.loop !8 + br i1 %exitcond.not, label %for.end41, label %for.body19, !llvm.loop !8 for.end41: ; preds = %for.inc40, %if.end14 %cmp42.not = icmp eq i64 %shl, %shl2 @@ -837,16 +837,16 @@ for.body12.lr.ph: ; preds = %for.end %and20.i107 = and i64 %0, 17179869184 %tobool21.not.i108 = icmp eq i64 %and20.i107, 0 %umax = tail call i64 @llvm.umax.i64(i64 %shl2, i64 2) - br label %while.body.i.preheader + br label %for.body12 -while.body.i.preheader: ; preds = %for.inc33, %for.body12.lr.ph +for.body12: ; preds = %for.body12.lr.ph, %for.inc33 %i.0466 = phi i64 [ 1, %for.body12.lr.ph ], [ %inc, %for.inc33 ] br label %while.body.i -while.body.i: ; preds = %while.body.i.preheader, %x64_mulmod.exit - %r.010.i = phi i64 [ %r.1.i, %x64_mulmod.exit ], [ 1, %while.body.i.preheader ] - %base.addr.09.i = phi i64 [ %spec.select93.i, %x64_mulmod.exit ], [ %call8, %while.body.i.preheader ] - %exp.addr.08.i = phi i64 [ %shr.i56, %x64_mulmod.exit ], [ %i.0466, %while.body.i.preheader ] +while.body.i: ; preds = %for.body12, %x64_mulmod.exit + %r.010.i = phi i64 [ %r.1.i, %x64_mulmod.exit ], [ 1, %for.body12 ] + %base.addr.09.i = phi i64 [ %spec.select93.i, %x64_mulmod.exit ], [ %call8, %for.body12 ] + %exp.addr.08.i = phi i64 [ %shr.i56, %x64_mulmod.exit ], [ %i.0466, %for.body12 ] %and.i = and i64 %exp.addr.08.i, 1 %tobool.not.i = icmp eq i64 %and.i, 0 br i1 %tobool.not.i, label %while.body.i.if.end.i_crit_edge, label %if.then.i @@ -1027,19 +1027,19 @@ x64_mulmod.exit: ; preds = %if.then.i64, %if.th %spec.select93.i = sub i64 %add99.i, %sub108.i %shr.i56 = lshr i64 %exp.addr.08.i, 1 %cmp.not.i57 = icmp ult i64 %exp.addr.08.i, 2 - br i1 %cmp.not.i57, label %x64_powmod.exit, label %while.body.i, !llvm.loop !6 + br i1 %cmp.not.i57, label %x64_powmod.exit.loopexit, label %while.body.i, !llvm.loop !6 -x64_powmod.exit: ; preds = %x64_mulmod.exit +x64_powmod.exit.loopexit: ; preds = %x64_mulmod.exit %call14 = tail call fastcc i64 @x64_mulmod(i64 noundef %r.1.i, i64 noundef %r.1.i, i64 noundef %0) %mul55 = shl i64 %i.0466, %div54 %1 = getelementptr i64, ptr %a, i64 %mul55 %conv1.i.i377 = zext i64 %call14 to i128 br label %for.body18 -for.body18: ; preds = %x64_powmod.exit, %x64_mulmod.exit375 - %k.0464 = phi i64 [ 0, %x64_powmod.exit ], [ %add31, %x64_mulmod.exit375 ] - %w1.0463 = phi i64 [ %r.1.i, %x64_powmod.exit ], [ %spec.select93.i336, %x64_mulmod.exit375 ] - %w0.0462 = phi i64 [ 1, %x64_powmod.exit ], [ %spec.select93.i413, %x64_mulmod.exit375 ] +for.body18: ; preds = %x64_powmod.exit.loopexit, %x64_mulmod.exit375 + %k.0464 = phi i64 [ 0, %x64_powmod.exit.loopexit ], [ %add31, %x64_mulmod.exit375 ] + %w1.0463 = phi i64 [ %r.1.i, %x64_powmod.exit.loopexit ], [ %spec.select93.i336, %x64_mulmod.exit375 ] + %w0.0462 = phi i64 [ 1, %x64_powmod.exit.loopexit ], [ %spec.select93.i413, %x64_mulmod.exit375 ] %arrayidx = getelementptr i64, ptr %1, i64 %k.0464 %2 = load i64, ptr %arrayidx, align 8 %arrayidx22 = getelementptr i8, ptr %arrayidx, i64 8 @@ -1381,7 +1381,7 @@ x64_mulmod.exit375: ; preds = %if.then.i307, %if.t for.inc33: ; preds = %x64_mulmod.exit375 %inc = add nuw i64 %i.0466, 1 %exitcond.not = icmp eq i64 %inc, %umax - br i1 %exitcond.not, label %for.end34, label %while.body.i.preheader, !llvm.loop !12 + br i1 %exitcond.not, label %for.end34, label %for.body12, !llvm.loop !12 for.end34: ; preds = %for.inc33, %for.end %call35 = tail call i32 @transpose_pow2(ptr noundef %a, i64 noundef %shl2, i64 noundef %shl) #4 diff --git a/bench/double_conversion/optimized/bignum.cc.ll b/bench/double_conversion/optimized/bignum.cc.ll index 73c2e0ad55e..159562a460c 100644 --- a/bench/double_conversion/optimized/bignum.cc.ll +++ b/bench/double_conversion/optimized/bignum.cc.ll @@ -2225,8 +2225,6 @@ for.cond.preheader.i.i: ; preds = %if.end.i.i %33 = add nsw i64 %32, %31 %34 = sext i16 %29 to i64 %35 = sext i16 %30 to i64 - %36 = sext i32 %add.i.i.i to i64 - %37 = sext i32 %add.i16.i.i to i64 br label %for.cond.i.i for.cond.i.i: ; preds = %if.end12.i.i, %for.cond.preheader.i.i @@ -2236,32 +2234,28 @@ for.cond.i.i: ; preds = %if.end12.i.i, %for. br i1 %cmp7.not.not.i.i, label %for.body.i.i, label %while.body52 for.body.i.i: ; preds = %for.cond.i.i - %cmp.not.i.i.i = icmp sgt i64 %indvars.iv.i.i, %36 - %cmp2.i.i.i = icmp sle i64 %indvars.iv.i.i, %32 - %or.cond.i.i.i = or i1 %cmp2.i.i.i, %cmp.not.i.i.i - br i1 %or.cond.i.i.i, label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit.i.i, label %if.end4.i.i.i + %cmp2.i.not.i.i = icmp sgt i64 %indvars.iv.i.i, %32 + br i1 %cmp2.i.not.i.i, label %if.end4.i.i.i, label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit.i.i if.end4.i.i.i: ; preds = %for.body.i.i - %38 = sub nsw i64 %indvars.iv.next.i.i, %32 - %arrayidx.i.i.i.i = getelementptr inbounds [128 x i32], ptr %bigits_buffer_.i46, i64 0, i64 %38 - %39 = load i32, ptr %arrayidx.i.i.i.i, align 4 + %36 = sub nsw i64 %indvars.iv.next.i.i, %32 + %arrayidx.i.i.i.i = getelementptr inbounds [128 x i32], ptr %bigits_buffer_.i46, i64 0, i64 %36 + %37 = load i32, ptr %arrayidx.i.i.i.i, align 4 br label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit.i.i _ZNK17double_conversion6Bignum11BigitOrZeroEi.exit.i.i: ; preds = %if.end4.i.i.i, %for.body.i.i - %retval.0.i.i.i = phi i32 [ %39, %if.end4.i.i.i ], [ 0, %for.body.i.i ] - %cmp.not.i21.i.i = icmp sgt i64 %indvars.iv.i.i, %37 - %cmp2.i22.i.i = icmp sle i64 %indvars.iv.i.i, %34 - %or.cond.i23.i.i = or i1 %cmp2.i22.i.i, %cmp.not.i21.i.i - br i1 %or.cond.i23.i.i, label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit30.i.i, label %if.end4.i24.i.i + %retval.0.i.i.i = phi i32 [ %37, %if.end4.i.i.i ], [ 0, %for.body.i.i ] + %cmp2.i22.not.i.i = icmp sgt i64 %indvars.iv.i.i, %34 + br i1 %cmp2.i22.not.i.i, label %if.end4.i24.i.i, label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit30.i.i if.end4.i24.i.i: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit.i.i - %40 = sub nsw i64 %indvars.iv.next.i.i, %34 - %arrayidx.i.i28.i.i = getelementptr inbounds [128 x i32], ptr %bigits_buffer_.i43, i64 0, i64 %40 - %41 = load i32, ptr %arrayidx.i.i28.i.i, align 4 + %38 = sub nsw i64 %indvars.iv.next.i.i, %34 + %arrayidx.i.i28.i.i = getelementptr inbounds [128 x i32], ptr %bigits_buffer_.i43, i64 0, i64 %38 + %39 = load i32, ptr %arrayidx.i.i28.i.i, align 4 br label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit30.i.i _ZNK17double_conversion6Bignum11BigitOrZeroEi.exit30.i.i: ; preds = %if.end4.i24.i.i, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit.i.i - %retval.0.i29.i.i = phi i32 [ %41, %if.end4.i24.i.i ], [ 0, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit.i.i ] + %retval.0.i29.i.i = phi i32 [ %39, %if.end4.i24.i.i ], [ 0, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit.i.i ] %cmp10.i.i = icmp ult i32 %retval.0.i.i.i, %retval.0.i29.i.i br i1 %cmp10.i.i, label %while.body52, label %if.end12.i.i @@ -2628,8 +2622,6 @@ for.cond.preheader: ; preds = %if.end %8 = sext i16 %1 to i64 %9 = sext i16 %3 to i64 %10 = sext i16 %4 to i64 - %11 = sext i32 %add.i to i64 - %12 = sext i32 %add.i16 to i64 br label %for.cond for.cond: ; preds = %for.cond.preheader, %if.end12 @@ -2639,32 +2631,28 @@ for.cond: ; preds = %for.cond.preheader, br i1 %cmp7.not.not, label %for.body, label %return for.body: ; preds = %for.cond - %cmp.not.i = icmp sgt i64 %indvars.iv, %11 - %cmp2.i = icmp sle i64 %indvars.iv, %8 - %or.cond.i = or i1 %cmp2.i, %cmp.not.i - br i1 %or.cond.i, label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit, label %if.end4.i + %cmp2.i.not = icmp sgt i64 %indvars.iv, %8 + br i1 %cmp2.i.not, label %if.end4.i, label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit if.end4.i: ; preds = %for.body - %13 = sub nsw i64 %indvars.iv.next, %8 - %arrayidx.i.i = getelementptr inbounds [128 x i32], ptr %bigits_buffer_.i.i, i64 0, i64 %13 - %14 = load i32, ptr %arrayidx.i.i, align 4 + %11 = sub nsw i64 %indvars.iv.next, %8 + %arrayidx.i.i = getelementptr inbounds [128 x i32], ptr %bigits_buffer_.i.i, i64 0, i64 %11 + %12 = load i32, ptr %arrayidx.i.i, align 4 br label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit _ZNK17double_conversion6Bignum11BigitOrZeroEi.exit: ; preds = %for.body, %if.end4.i - %retval.0.i = phi i32 [ %14, %if.end4.i ], [ 0, %for.body ] - %cmp.not.i21 = icmp sgt i64 %indvars.iv, %12 - %cmp2.i22 = icmp sle i64 %indvars.iv, %9 - %or.cond.i23 = or i1 %cmp2.i22, %cmp.not.i21 - br i1 %or.cond.i23, label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit30, label %if.end4.i24 + %retval.0.i = phi i32 [ %12, %if.end4.i ], [ 0, %for.body ] + %cmp2.i22.not = icmp sgt i64 %indvars.iv, %9 + br i1 %cmp2.i22.not, label %if.end4.i24, label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit30 if.end4.i24: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit - %15 = sub nsw i64 %indvars.iv.next, %9 - %arrayidx.i.i28 = getelementptr inbounds [128 x i32], ptr %bigits_buffer_.i.i26, i64 0, i64 %15 - %16 = load i32, ptr %arrayidx.i.i28, align 4 + %13 = sub nsw i64 %indvars.iv.next, %9 + %arrayidx.i.i28 = getelementptr inbounds [128 x i32], ptr %bigits_buffer_.i.i26, i64 0, i64 %13 + %14 = load i32, ptr %arrayidx.i.i28, align 4 br label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit30 _ZNK17double_conversion6Bignum11BigitOrZeroEi.exit30: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit, %if.end4.i24 - %retval.0.i29 = phi i32 [ %16, %if.end4.i24 ], [ 0, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit ] + %retval.0.i29 = phi i32 [ %14, %if.end4.i24 ], [ 0, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit ] %cmp10 = icmp ult i32 %retval.0.i, %retval.0.i29 br i1 %cmp10, label %return, label %if.end12 @@ -2741,62 +2729,59 @@ for.body.lr.ph: ; preds = %if.end19 %9 = sext i16 %5 to i64 %10 = add nsw i64 %8, %9 %11 = sext i16 %5 to i64 - %12 = sext i32 %add.i39 to i64 - %13 = sext i16 %3 to i64 - %14 = sext i32 %add.i31 to i64 - %15 = sext i16 %0 to i64 - %16 = sext i32 %add.i to i64 - %17 = sext i16 %7 to i64 + %12 = sext i16 %3 to i64 + %13 = sext i32 %add.i31 to i64 + %14 = sext i16 %0 to i64 + %15 = sext i32 %add.i to i64 + %16 = sext i16 %7 to i64 br label %for.body for.cond: ; preds = %if.else %shl = shl nuw nsw i32 %sub36, 28 - %cmp27.not.not = icmp sgt i64 %indvars.iv.next, %17 + %cmp27.not.not = icmp sgt i64 %indvars.iv.next, %16 br i1 %cmp27.not.not, label %for.body, label %for.end.loopexit, !llvm.loop !44 for.body: ; preds = %for.body.lr.ph, %for.cond %indvars.iv = phi i64 [ %10, %for.body.lr.ph ], [ %indvars.iv.next, %for.cond ] %borrow.0101 = phi i32 [ 0, %for.body.lr.ph ], [ %shl, %for.cond ] %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %cmp.not.i = icmp sgt i64 %indvars.iv, %16 - %cmp2.i = icmp sle i64 %indvars.iv, %15 + %cmp.not.i = icmp sgt i64 %indvars.iv, %15 + %cmp2.i = icmp sle i64 %indvars.iv, %14 %or.cond.i = or i1 %cmp2.i, %cmp.not.i br i1 %or.cond.i, label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit, label %if.end4.i if.end4.i: ; preds = %for.body - %18 = sub nsw i64 %indvars.iv.next, %15 - %arrayidx.i.i = getelementptr inbounds [128 x i32], ptr %bigits_buffer_.i.i, i64 0, i64 %18 - %19 = load i32, ptr %arrayidx.i.i, align 4 + %17 = sub nsw i64 %indvars.iv.next, %14 + %arrayidx.i.i = getelementptr inbounds [128 x i32], ptr %bigits_buffer_.i.i, i64 0, i64 %17 + %18 = load i32, ptr %arrayidx.i.i, align 4 br label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit _ZNK17double_conversion6Bignum11BigitOrZeroEi.exit: ; preds = %for.body, %if.end4.i - %retval.0.i = phi i32 [ %19, %if.end4.i ], [ 0, %for.body ] - %cmp.not.i70 = icmp sgt i64 %indvars.iv, %14 - %cmp2.i71 = icmp sle i64 %indvars.iv, %13 + %retval.0.i = phi i32 [ %18, %if.end4.i ], [ 0, %for.body ] + %cmp.not.i70 = icmp sgt i64 %indvars.iv, %13 + %cmp2.i71 = icmp sle i64 %indvars.iv, %12 %or.cond.i72 = or i1 %cmp2.i71, %cmp.not.i70 br i1 %or.cond.i72, label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit79, label %if.end4.i73 if.end4.i73: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit - %20 = sub nsw i64 %indvars.iv.next, %13 - %arrayidx.i.i77 = getelementptr inbounds [128 x i32], ptr %bigits_buffer_.i.i75, i64 0, i64 %20 - %21 = load i32, ptr %arrayidx.i.i77, align 4 + %19 = sub nsw i64 %indvars.iv.next, %12 + %arrayidx.i.i77 = getelementptr inbounds [128 x i32], ptr %bigits_buffer_.i.i75, i64 0, i64 %19 + %20 = load i32, ptr %arrayidx.i.i77, align 4 br label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit79 _ZNK17double_conversion6Bignum11BigitOrZeroEi.exit79: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit, %if.end4.i73 - %retval.0.i78 = phi i32 [ %21, %if.end4.i73 ], [ 0, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit ] - %cmp.not.i84 = icmp sgt i64 %indvars.iv, %12 - %cmp2.i85 = icmp sle i64 %indvars.iv, %11 - %or.cond.i86 = or i1 %cmp2.i85, %cmp.not.i84 - br i1 %or.cond.i86, label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit93, label %if.end4.i87 + %retval.0.i78 = phi i32 [ %20, %if.end4.i73 ], [ 0, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit ] + %cmp2.i85.not = icmp sgt i64 %indvars.iv, %11 + br i1 %cmp2.i85.not, label %if.end4.i87, label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit93 if.end4.i87: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit79 - %22 = sub nsw i64 %indvars.iv.next, %11 - %arrayidx.i.i91 = getelementptr inbounds [128 x i32], ptr %bigits_buffer_.i.i89, i64 0, i64 %22 - %23 = load i32, ptr %arrayidx.i.i91, align 4 + %21 = sub nsw i64 %indvars.iv.next, %11 + %arrayidx.i.i91 = getelementptr inbounds [128 x i32], ptr %bigits_buffer_.i.i89, i64 0, i64 %21 + %22 = load i32, ptr %arrayidx.i.i91, align 4 br label %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit93 _ZNK17double_conversion6Bignum11BigitOrZeroEi.exit93: ; preds = %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit79, %if.end4.i87 - %retval.0.i92 = phi i32 [ %23, %if.end4.i87 ], [ 0, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit79 ] + %retval.0.i92 = phi i32 [ %22, %if.end4.i87 ], [ 0, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit79 ] %add31 = add i32 %retval.0.i78, %retval.0.i %add32 = add i32 %retval.0.i92, %borrow.0101 %cmp33 = icmp ugt i32 %add31, %add32 @@ -2808,12 +2793,12 @@ if.else: ; preds = %_ZNK17double_conver br i1 %cmp37, label %return, label %for.cond for.end.loopexit: ; preds = %for.cond - %24 = icmp ne i32 %add32, %add31 - %25 = sext i1 %24 to i32 + %23 = icmp ne i32 %add32, %add31 + %24 = sext i1 %23 to i32 br label %return return: ; preds = %if.else, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit93, %if.end19, %for.end.loopexit, %if.end12, %if.end7, %if.end - %retval.0 = phi i32 [ -1, %if.end ], [ 1, %if.end7 ], [ -1, %if.end12 ], [ 0, %if.end19 ], [ %25, %for.end.loopexit ], [ -1, %if.else ], [ 1, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit93 ] + %retval.0 = phi i32 [ -1, %if.end ], [ 1, %if.end7 ], [ -1, %if.end12 ], [ 0, %if.end19 ], [ %24, %for.end.loopexit ], [ -1, %if.else ], [ 1, %_ZNK17double_conversion6Bignum11BigitOrZeroEi.exit93 ] ret i32 %retval.0 } diff --git a/bench/eastl/optimized/BenchmarkSort.cpp.ll b/bench/eastl/optimized/BenchmarkSort.cpp.ll index 131ff281246..096fce49fd4 100644 --- a/bench/eastl/optimized/BenchmarkSort.cpp.ll +++ b/bench/eastl/optimized/BenchmarkSort.cpp.ll @@ -25012,10 +25012,9 @@ for.inc24.i: ; preds = %if.end17.i for.end26.i: ; preds = %for.inc24.i, %if.end17.i, %for.cond13.preheader.i %curr.2.lcssa.i = phi i64 [ %add.i, %for.cond13.preheader.i ], [ %sub14.i, %for.inc24.i ], [ %curr.231.i, %if.end17.i ] %sub27.i = add nsw i64 %curr.2.lcssa.i, -1 - %cmp6.i.i = icmp slt i64 %0, %sub27.i - br i1 %cmp6.i.i, label %while.body.i.i, label %if.end28.i + br label %while.body.i.i -while.body.i.i: ; preds = %for.end26.i, %while.body.i.i +while.body.i.i: ; preds = %while.body.i.i, %for.end26.i %end.addr.08.i.i = phi i64 [ %dec.i.i, %while.body.i.i ], [ %sub27.i, %for.end26.i ] %start.addr.07.i.i = phi i64 [ %inc.i.i, %while.body.i.i ], [ %0, %for.end26.i ] %add.ptr.i.i = getelementptr inbounds i32, ptr %first, i64 %start.addr.07.i.i @@ -25029,8 +25028,8 @@ while.body.i.i: ; preds = %for.end26.i, %while %cmp.i25.i = icmp slt i64 %inc.i.i, %dec.i.i br i1 %cmp.i25.i, label %while.body.i.i, label %if.end28.i, !llvm.loop !304 -if.end28.i: ; preds = %for.inc.i, %if.end.i, %while.body.i.i, %for.end26.i, %for.cond.preheader.i - %curr.1.i = phi i64 [ %curr.2.lcssa.i, %for.end26.i ], [ %add.i, %for.cond.preheader.i ], [ %curr.2.lcssa.i, %while.body.i.i ], [ %sub14.i, %for.inc.i ], [ %curr.028.i, %if.end.i ] +if.end28.i: ; preds = %for.inc.i, %if.end.i, %while.body.i.i, %for.cond.preheader.i + %curr.1.i = phi i64 [ %add.i, %for.cond.preheader.i ], [ %curr.2.lcssa.i, %while.body.i.i ], [ %sub14.i, %for.inc.i ], [ %curr.028.i, %if.end.i ] %sub29.i = sub nsw i64 %curr.1.i, %0 br label %_ZN5eastl8Internal18tim_sort_count_runIPjNS_4lessIjEEEElT_llT0_.exit @@ -28278,10 +28277,9 @@ for.end26.sink.split.i: ; preds = %for.inc24.i, %if.en for.end26.i: ; preds = %for.end26.sink.split.i, %for.cond13.preheader.i %curr.2.lcssa.i = phi i64 [ %add.i, %for.cond13.preheader.i ], [ %curr.2.lcssa.ph.i, %for.end26.sink.split.i ] %sub27.i = add nsw i64 %curr.2.lcssa.i, -1 - %cmp6.i.i = icmp slt i64 %0, %sub27.i - br i1 %cmp6.i.i, label %while.body.i.i, label %if.end28.i + br label %while.body.i.i -while.body.i.i: ; preds = %for.end26.i, %while.body.i.i +while.body.i.i: ; preds = %while.body.i.i, %for.end26.i %end.addr.08.i.i = phi i64 [ %dec.i.i, %while.body.i.i ], [ %sub27.i, %for.end26.i ] %start.addr.07.i.i = phi i64 [ %inc.i49.i, %while.body.i.i ], [ %0, %for.end26.i ] %add.ptr.i.i = getelementptr inbounds i32, ptr %first, i64 %start.addr.07.i.i @@ -28301,8 +28299,8 @@ if.end28.sink.split.i: ; preds = %for.inc.i, %if.end. store i32 %.us-phi.sink.i, ptr @_ZN12_GLOBAL__N_111SlowCompareIiE13nCompareCountE, align 4 br label %if.end28.i -if.end28.i: ; preds = %while.body.i.i, %if.end28.sink.split.i, %for.end26.i, %for.cond.preheader.i - %curr.1.i = phi i64 [ %curr.2.lcssa.i, %for.end26.i ], [ %add.i, %for.cond.preheader.i ], [ %curr.1.ph.i, %if.end28.sink.split.i ], [ %curr.2.lcssa.i, %while.body.i.i ] +if.end28.i: ; preds = %while.body.i.i, %if.end28.sink.split.i, %for.cond.preheader.i + %curr.1.i = phi i64 [ %add.i, %for.cond.preheader.i ], [ %curr.1.ph.i, %if.end28.sink.split.i ], [ %curr.2.lcssa.i, %while.body.i.i ] %sub29.i = sub nsw i64 %curr.1.i, %0 br label %_ZN5eastl8Internal18tim_sort_count_runIPiN12_GLOBAL__N_111SlowCompareIiEEEElT_llT0_.exit @@ -31723,17 +31721,13 @@ for.inc24.i: ; preds = %if.end17.i for.end26.i: ; preds = %for.inc24.i, %if.end17.i, %for.cond13.preheader.i %curr.2.lcssa.i = phi i64 [ %add.i, %for.cond13.preheader.i ], [ %sub14.i, %for.inc24.i ], [ %curr.229.i, %if.end17.i ] %sub27.i = add nsw i64 %curr.2.lcssa.i, -1 - %cmp7.i.i = icmp slt i64 %0, %sub27.i - br i1 %cmp7.i.i, label %while.body.preheader.i.i, label %if.end28.i - -while.body.preheader.i.i: ; preds = %for.end26.i %_ZN12_GLOBAL__N_110SlowAssignIjE12nAssignCountE.promoted.i.i = load i32, ptr @_ZN12_GLOBAL__N_110SlowAssignIjE12nAssignCountE, align 4 br label %while.body.i.i -while.body.i.i: ; preds = %while.body.i.i, %while.body.preheader.i.i - %end.addr.010.i.i = phi i64 [ %dec.i.i, %while.body.i.i ], [ %sub27.i, %while.body.preheader.i.i ] - %start.addr.09.i.i = phi i64 [ %inc.i.i, %while.body.i.i ], [ %0, %while.body.preheader.i.i ] - %inc.i4.i68.i.i = phi i32 [ %inc.i4.i.i.i, %while.body.i.i ], [ %_ZN12_GLOBAL__N_110SlowAssignIjE12nAssignCountE.promoted.i.i, %while.body.preheader.i.i ] +while.body.i.i: ; preds = %while.body.i.i, %for.end26.i + %end.addr.010.i.i = phi i64 [ %dec.i.i, %while.body.i.i ], [ %sub27.i, %for.end26.i ] + %start.addr.09.i.i = phi i64 [ %inc.i.i, %while.body.i.i ], [ %0, %for.end26.i ] + %inc.i4.i68.i.i = phi i32 [ %inc.i4.i.i.i, %while.body.i.i ], [ %_ZN12_GLOBAL__N_110SlowAssignIjE12nAssignCountE.promoted.i.i, %for.end26.i ] %add.ptr.i.i = getelementptr inbounds %"struct.(anonymous namespace)::SlowAssign", ptr %first, i64 %start.addr.09.i.i %add.ptr1.i.i = getelementptr inbounds %"struct.(anonymous namespace)::SlowAssign", ptr %first, i64 %end.addr.010.i.i %call.val.i.i.i = load i32, ptr %add.ptr.i.i, align 4 @@ -31751,8 +31745,8 @@ while.cond.while.end_crit_edge.i.i: ; preds = %while.body.i.i store i32 %inc.i4.i.i.i, ptr @_ZN12_GLOBAL__N_110SlowAssignIjE12nAssignCountE, align 4 br label %if.end28.i -if.end28.i: ; preds = %for.inc.i, %if.end.i, %while.cond.while.end_crit_edge.i.i, %for.end26.i, %for.cond.preheader.i - %curr.1.i = phi i64 [ %curr.2.lcssa.i, %for.end26.i ], [ %curr.2.lcssa.i, %while.cond.while.end_crit_edge.i.i ], [ %add.i, %for.cond.preheader.i ], [ %sub14.i, %for.inc.i ], [ %curr.026.i, %if.end.i ] +if.end28.i: ; preds = %for.inc.i, %if.end.i, %while.cond.while.end_crit_edge.i.i, %for.cond.preheader.i + %curr.1.i = phi i64 [ %curr.2.lcssa.i, %while.cond.while.end_crit_edge.i.i ], [ %add.i, %for.cond.preheader.i ], [ %sub14.i, %for.inc.i ], [ %curr.026.i, %if.end.i ] %sub29.i = sub nsw i64 %curr.1.i, %0 br label %_ZN5eastl8Internal18tim_sort_count_runIPN12_GLOBAL__N_110SlowAssignIjEENS_4lessIS4_EEEElT_llT0_.exit diff --git a/bench/eastl/optimized/BenchmarkString.cpp.ll b/bench/eastl/optimized/BenchmarkString.cpp.ll index 6996c6b01be..33c6df7748f 100644 --- a/bench/eastl/optimized/BenchmarkString.cpp.ll +++ b/bench/eastl/optimized/BenchmarkString.cpp.ll @@ -1203,9 +1203,9 @@ if.end.i.i.i: ; preds = %.noexc159, %for.bod %sub.i.i.i16.i.i.i139 = sub nsw i64 11, %conv.i.i.i15.i.i.i138 %add.ptr.i1.i.i.i.i140 = getelementptr inbounds i16, ptr %es16, i64 %sub.i.i.i16.i.i.i139 %cond.i17.i.i.i141 = select i1 %tobool.i.i13.i.i.i136, ptr %add.ptr.i.i.i.i.i137, ptr %add.ptr.i1.i.i.i.i140 - store i16 %conv.i127, ptr %cond.i17.i.i.i141, align 2 %cond.i17.i.i.i141.sroa.sel.v.sroa.sel.v.sroa.sel.v = select i1 %tobool.i.i13.i.i.i136, ptr %add.ptr.i.i.i.i.i137, ptr %add.ptr.i1.i.i.i.i140 %cond.i17.i.i.i141.sroa.sel.v.sroa.sel.v.sroa.sel = getelementptr inbounds i8, ptr %cond.i17.i.i.i141.sroa.sel.v.sroa.sel.v.sroa.sel.v, i64 2 + store i16 %conv.i127, ptr %cond.i17.i.i.i141, align 2 store i16 0, ptr %cond.i17.i.i.i141.sroa.sel.v.sroa.sel.v.sroa.sel, align 2 %78 = load i8, ptr %mnRemainingSize.i.i.i.i.i.i, align 1 %tobool.i.i20.i.i.i143 = icmp slt i8 %78, 0 diff --git a/bench/faiss/optimized/PolysemousTraining.cpp.ll b/bench/faiss/optimized/PolysemousTraining.cpp.ll index 839939691ec..9851ae4cecc 100644 --- a/bench/faiss/optimized/PolysemousTraining.cpp.ll +++ b/bench/faiss/optimized/PolysemousTraining.cpp.ll @@ -5205,7 +5205,7 @@ define linkonce_odr noundef double @_ZNK5faiss14Score3ComputerIfdE14update_i_cro 31: ; preds = %.lr.ph, %85 %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %85 ] - %.057 = phi double [ 0.000000e+00, %.lr.ph ], [ %.1, %85 ] + %.056 = phi double [ 0.000000e+00, %.lr.ph ], [ %.1, %85 ] %.04655 = phi ptr [ %6, %.lr.ph ], [ %86, %85 ] %32 = getelementptr inbounds i32, ptr %1, i64 %indvars.iv %33 = load i32, ptr %32, align 4 @@ -5232,7 +5232,7 @@ define linkonce_odr noundef double @_ZNK5faiss14Score3ComputerIfdE14update_i_cro %53 = icmp ult i64 %52, %22 %54 = fsub double %.0.i, %48 %.1.i = select i1 %53, double %54, double %.0.i - %55 = fadd double %.057, %.1.i + %55 = fadd double %.056, %.1.i %56 = getelementptr inbounds float, ptr %.04655, i64 %14 %57 = load float, ptr %56, align 4 %58 = icmp ult i64 %46, %25 @@ -5280,14 +5280,14 @@ define linkonce_odr noundef double @_ZNK5faiss14Score3ComputerIfdE14update_i_cro %.1.i53 = phi double [ %.025.i, %.lr.ph.i ], [ %82, %81 ], [ %.2.i, %66 ] %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i - br i1 %exitcond.not.i, label %_ZNK5faiss14Score3ComputerIfdE13update_j_lineEPKiiiiiiiPKf.exit, label %.lr.ph.i, !llvm.loop !64 + br i1 %exitcond.not.i, label %_ZNK5faiss14Score3ComputerIfdE13update_j_lineEPKiiiiiiiPKf.exit.loopexit, label %.lr.ph.i, !llvm.loop !64 -_ZNK5faiss14Score3ComputerIfdE13update_j_lineEPKiiiiiiiPKf.exit: ; preds = %83 +_ZNK5faiss14Score3ComputerIfdE13update_j_lineEPKiiiiiiiPKf.exit.loopexit: ; preds = %83 %84 = fadd double %63, %.1.i53 br label %85 -85: ; preds = %_ZNK5faiss14Score3ComputerIfdE13update_j_lineEPKiiiiiiiPKf.exit, %31 - %.1 = phi double [ %84, %_ZNK5faiss14Score3ComputerIfdE13update_j_lineEPKiiiiiiiPKf.exit ], [ %63, %31 ] +85: ; preds = %_ZNK5faiss14Score3ComputerIfdE13update_j_lineEPKiiiiiiiPKf.exit.loopexit, %31 + %.1 = phi double [ %84, %_ZNK5faiss14Score3ComputerIfdE13update_j_lineEPKiiiiiiiPKf.exit.loopexit ], [ %63, %31 ] %86 = getelementptr inbounds float, ptr %.04655, i64 %wide.trip.count.i %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count.i diff --git a/bench/fmt/optimized/format-impl-test.cc.ll b/bench/fmt/optimized/format-impl-test.cc.ll index 6d49c739d4d..77652a4d6f6 100644 --- a/bench/fmt/optimized/format-impl-test.cc.ll +++ b/bench/fmt/optimized/format-impl-test.cc.ll @@ -6731,9 +6731,7 @@ _ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit51: %cond.i39 = phi i64 [ %14, %_ZNK3fmt3v106detail6bigintixEi.exit.i47 ], [ 0, %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit ] %add15 = add nuw nsw i64 %cond.i39, %cond.i31 %cmp.not.i53 = icmp sgt i32 %i.0.in80, %5 - %cmp2.i58 = icmp sle i32 %i.0.in80, %add.i27 - %or.cond73 = and i1 %cmp.not.i53, %cmp2.i58 - br i1 %or.cond73, label %cond.true.i60, label %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit71 + br i1 %cmp.not.i53, label %cond.true.i60, label %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit71 cond.true.i60: ; preds = %_ZZN3fmt3v106detail11add_compareERKNS1_6bigintES4_S4_ENKUlS4_iE_clES4_i.exit51 %sub.i61 = sub nsw i32 %i.082, %5 @@ -16218,9 +16216,9 @@ entry: %message_.i.i = getelementptr inbounds i8, ptr %gtest_ar, i64 8 %sub.ptr.rhs.cast = ptrtoint ptr %buf to i64 %message_.i.i22 = getelementptr inbounds i8, ptr %gtest_ar15, i64 8 - br label %_Z11utf8_encodePcj.exit + br label %for.body -_Z11utf8_encodePcj.exit: ; preds = %entry, %_ZN7testing15AssertionResultD2Ev.exit41 +for.body: ; preds = %entry, %_ZN7testing15AssertionResultD2Ev.exit41 %i.046 = phi i32 [ 1114112, %entry ], [ %inc, %_ZN7testing15AssertionResultD2Ev.exit41 ] store i64 0, ptr %buf, align 8 %shr.i = lshr i32 %i.046, 18 @@ -16280,11 +16278,11 @@ _Z11utf8_encodePcj.exit: ; preds = %entry, %_ZN7testing %cmp.not.i = icmp eq i32 %shr55.i, 0 br i1 %cmp.not.i, label %if.else.i13, label %if.then.i12 -if.then.i12: ; preds = %_Z11utf8_encodePcj.exit +if.then.i12: ; preds = %for.body call void @_ZN7testing16AssertionSuccessEv(ptr nonnull sret(%"class.testing::AssertionResult") align 8 %gtest_ar) br label %_ZN7testing8internal11CmpHelperNEIiiEENS_15AssertionResultEPKcS4_RKT_RKT0_.exit -if.else.i13: ; preds = %_Z11utf8_encodePcj.exit +if.else.i13: ; preds = %for.body call void @_ZN7testing8internal18CmpHelperOpFailureIiiEENS_15AssertionResultEPKcS4_RKT_RKT0_S4_(ptr nonnull sret(%"class.testing::AssertionResult") align 8 %gtest_ar, ptr noundef nonnull @.str.159, ptr noundef nonnull @.str.16, ptr noundef nonnull align 4 dereferenceable(4) %e, ptr noundef nonnull align 4 dereferenceable(4) %ref.tmp, ptr noundef nonnull @.str.253) br label %_ZN7testing8internal11CmpHelperNEIiiEENS_15AssertionResultEPKcS4_RKT_RKT0_.exit @@ -16483,7 +16481,7 @@ _ZN7testing15AssertionResultD2Ev.exit41: ; preds = %if.end35, %_ZNKSt14 store ptr null, ptr %message_.i.i22, align 8 %inc = add nuw nsw i32 %i.046, 1 %exitcond.not = icmp eq i32 %inc, 2097151 - br i1 %exitcond.not, label %for.end, label %_Z11utf8_encodePcj.exit, !llvm.loop !201 + br i1 %exitcond.not, label %for.end, label %for.body, !llvm.loop !201 for.end: ; preds = %_ZN7testing15AssertionResultD2Ev.exit41 ret void @@ -16504,9 +16502,9 @@ entry: %ref.tmp5 = alloca %"class.testing::Message", align 8 %ref.tmp7 = alloca %"class.testing::internal::AssertHelper", align 8 %message_.i.i = getelementptr inbounds i8, ptr %gtest_ar, i64 8 - br label %_Z11utf8_encodePcj.exit + br label %if.else.i -_Z11utf8_encodePcj.exit: ; preds = %entry, %_ZN7testing15AssertionResultD2Ev.exit +if.else.i: ; preds = %entry, %_ZN7testing15AssertionResultD2Ev.exit %i.024 = phi i32 [ 55296, %entry ], [ %inc, %_ZN7testing15AssertionResultD2Ev.exit ] %shr19.i = lshr i32 %i.024, 12 %conv21.i = and i32 %shr19.i, 31 @@ -16521,17 +16519,14 @@ _Z11utf8_encodePcj.exit: ; preds = %entry, %_ZN7testing %and.i = and i32 %1, %conv.i %shl.i = shl nuw nsw i32 %and.i, 18 %2 = shl i32 %i.024, 6 - %shl12.i = and i32 %2, 258048 - %or.i = or disjoint i32 %shl.i, %shl12.i - %and15.i = shl i32 %i.024, 6 - %shl16.i = and i32 %and15.i, 4032 - %or17.i = or disjoint i32 %or.i, %shl16.i + %3 = and i32 %2, 262080 + %or17.i = or disjoint i32 %shl.i, %3 %arrayidx24.i = getelementptr inbounds [5 x i32], ptr @__const._ZN3fmt3v106detail11utf8_decodeEPKcPjPi.shiftc, i64 0, i64 %idx.ext.i - %3 = load i32, ptr %arrayidx24.i, align 4 - %shr25.i = lshr i32 %or17.i, %3 + %4 = load i32, ptr %arrayidx24.i, align 4 + %shr25.i = lshr i32 %or17.i, %4 %arrayidx27.i6 = getelementptr inbounds [5 x i32], ptr @__const._ZN3fmt3v106detail11utf8_decodeEPKcPjPi.mins, i64 0, i64 %idx.ext.i - %4 = load i32, ptr %arrayidx27.i6, align 4 - %cmp.i7 = icmp ult i32 %shr25.i, %4 + %5 = load i32, ptr %arrayidx27.i6, align 4 + %cmp.i7 = icmp ult i32 %shr25.i, %5 %shr30.mask.i = and i32 %shr25.i, 2147481600 %cmp31.i = icmp eq i32 %shr30.mask.i, 55296 %shl33.i = select i1 %cmp31.i, i32 128, i32 0 @@ -16542,28 +16537,28 @@ _Z11utf8_encodePcj.exit: ; preds = %entry, %_ZN7testing %or48.i = or disjoint i32 %or43.i, %shl33.i %xor.i = xor i32 %or48.i, 42 %arrayidx54.i = getelementptr inbounds [5 x i32], ptr @__const._ZN3fmt3v106detail11utf8_decodeEPKcPjPi.shifte, i64 0, i64 %idx.ext.i - %5 = load i32, ptr %arrayidx54.i, align 4 - %shr55.i = lshr i32 %xor.i, %5 + %6 = load i32, ptr %arrayidx54.i, align 4 + %shr55.i = lshr i32 %xor.i, %6 store i32 %shr55.i, ptr %e, align 4 store i32 0, ptr %ref.tmp, align 4 %cmp.not.i = icmp eq i32 %shr55.i, 0 br i1 %cmp.not.i, label %if.else.i9, label %if.then.i8 -if.then.i8: ; preds = %_Z11utf8_encodePcj.exit +if.then.i8: ; preds = %if.else.i call void @_ZN7testing16AssertionSuccessEv(ptr nonnull sret(%"class.testing::AssertionResult") align 8 %gtest_ar) br label %_ZN7testing8internal11CmpHelperNEIiiEENS_15AssertionResultEPKcS4_RKT_RKT0_.exit -if.else.i9: ; preds = %_Z11utf8_encodePcj.exit +if.else.i9: ; preds = %if.else.i call void @_ZN7testing8internal18CmpHelperOpFailureIiiEENS_15AssertionResultEPKcS4_RKT_RKT0_S4_(ptr nonnull sret(%"class.testing::AssertionResult") align 8 %gtest_ar, ptr noundef nonnull @.str.159, ptr noundef nonnull @.str.16, ptr noundef nonnull align 4 dereferenceable(4) %e, ptr noundef nonnull align 4 dereferenceable(4) %ref.tmp, ptr noundef nonnull @.str.253) br label %_ZN7testing8internal11CmpHelperNEIiiEENS_15AssertionResultEPKcS4_RKT_RKT0_.exit _ZN7testing8internal11CmpHelperNEIiiEENS_15AssertionResultEPKcS4_RKT_RKT0_.exit: ; preds = %if.then.i8, %if.else.i9 - %6 = load i8, ptr %gtest_ar, align 8 - %tobool.i = trunc i8 %6 to i1 + %7 = load i8, ptr %gtest_ar, align 8 + %tobool.i = trunc i8 %7 to i1 br i1 %tobool.i, label %if.end, label %if.else lpad: ; preds = %if.else - %7 = landingpad { ptr, i32 } + %8 = landingpad { ptr, i32 } cleanup br label %ehcleanup14 @@ -16572,12 +16567,12 @@ if.else: ; preds = %_ZN7testing8interna to label %invoke.cont6 unwind label %lpad invoke.cont6: ; preds = %if.else - %8 = load ptr, ptr %message_.i.i, align 8 - %cmp.not.i.i = icmp eq ptr %8, null + %9 = load ptr, ptr %message_.i.i, align 8 + %cmp.not.i.i = icmp eq ptr %9, null br i1 %cmp.not.i.i, label %invoke.cont9, label %cond.true.i.i cond.true.i.i: ; preds = %invoke.cont6 - %call4.i.i = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %8) #28 + %call4.i.i = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %9) #28 br label %invoke.cont9 invoke.cont9: ; preds = %cond.true.i.i, %invoke.cont6 @@ -16591,15 +16586,15 @@ invoke.cont11: ; preds = %invoke.cont9 invoke.cont13: ; preds = %invoke.cont11 call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp7) #28 - %9 = load ptr, ptr %ref.tmp5, align 8 - %cmp.not.i.i10 = icmp eq ptr %9, null + %10 = load ptr, ptr %ref.tmp5, align 8 + %cmp.not.i.i10 = icmp eq ptr %10, null br i1 %cmp.not.i.i10, label %_ZN7testing7MessageD2Ev.exit, label %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i _ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i: ; preds = %invoke.cont13 - %vtable.i.i.i = load ptr, ptr %9, align 8 + %vtable.i.i.i = load ptr, ptr %10, align 8 %vfn.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i, i64 8 - %10 = load ptr, ptr %vfn.i.i.i, align 8 - call void %10(ptr noundef nonnull align 8 dereferenceable(128) %9) #28 + %11 = load ptr, ptr %vfn.i.i.i, align 8 + call void %11(ptr noundef nonnull align 8 dereferenceable(128) %10) #28 br label %_ZN7testing7MessageD2Ev.exit _ZN7testing7MessageD2Ev.exit: ; preds = %invoke.cont13, %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i @@ -16607,27 +16602,27 @@ _ZN7testing7MessageD2Ev.exit: ; preds = %invoke.cont13, %_ZN br label %if.end lpad8: ; preds = %invoke.cont9 - %11 = landingpad { ptr, i32 } + %12 = landingpad { ptr, i32 } cleanup br label %ehcleanup lpad12: ; preds = %invoke.cont11 - %12 = landingpad { ptr, i32 } + %13 = landingpad { ptr, i32 } cleanup call void @_ZN7testing8internal12AssertHelperD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %ref.tmp7) #28 br label %ehcleanup ehcleanup: ; preds = %lpad12, %lpad8 - %.pn = phi { ptr, i32 } [ %12, %lpad12 ], [ %11, %lpad8 ] - %13 = load ptr, ptr %ref.tmp5, align 8 - %cmp.not.i.i11 = icmp eq ptr %13, null + %.pn = phi { ptr, i32 } [ %13, %lpad12 ], [ %12, %lpad8 ] + %14 = load ptr, ptr %ref.tmp5, align 8 + %cmp.not.i.i11 = icmp eq ptr %14, null br i1 %cmp.not.i.i11, label %_ZN7testing7MessageD2Ev.exit15, label %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i12 _ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i12: ; preds = %ehcleanup - %vtable.i.i.i13 = load ptr, ptr %13, align 8 + %vtable.i.i.i13 = load ptr, ptr %14, align 8 %vfn.i.i.i14 = getelementptr inbounds i8, ptr %vtable.i.i.i13, i64 8 - %14 = load ptr, ptr %vfn.i.i.i14, align 8 - call void %14(ptr noundef nonnull align 8 dereferenceable(128) %13) #28 + %15 = load ptr, ptr %vfn.i.i.i14, align 8 + call void %15(ptr noundef nonnull align 8 dereferenceable(128) %14) #28 br label %_ZN7testing7MessageD2Ev.exit15 _ZN7testing7MessageD2Ev.exit15: ; preds = %ehcleanup, %_ZNKSt14default_deleteINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i12 @@ -16635,23 +16630,23 @@ _ZN7testing7MessageD2Ev.exit15: ; preds = %ehcleanup, %_ZNKSt1 br label %ehcleanup14 if.end: ; preds = %_ZN7testing8internal11CmpHelperNEIiiEENS_15AssertionResultEPKcS4_RKT_RKT0_.exit, %_ZN7testing7MessageD2Ev.exit - %15 = load ptr, ptr %message_.i.i, align 8 - %cmp.not.i.i16 = icmp eq ptr %15, null + %16 = load ptr, ptr %message_.i.i, align 8 + %cmp.not.i.i16 = icmp eq ptr %16, null br i1 %cmp.not.i.i16, label %_ZN7testing15AssertionResultD2Ev.exit, label %_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i _ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i: ; preds = %if.end - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #28 - call void @_ZdlPv(ptr noundef nonnull %15) #29 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #28 + call void @_ZdlPv(ptr noundef nonnull %16) #29 br label %_ZN7testing15AssertionResultD2Ev.exit _ZN7testing15AssertionResultD2Ev.exit: ; preds = %if.end, %_ZNKSt14default_deleteINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclEPS5_.exit.i.i store ptr null, ptr %message_.i.i, align 8 %inc = add nuw nsw i32 %i.024, 1 %exitcond.not = icmp eq i32 %inc, 57344 - br i1 %exitcond.not, label %for.end, label %_Z11utf8_encodePcj.exit, !llvm.loop !202 + br i1 %exitcond.not, label %for.end, label %if.else.i, !llvm.loop !202 ehcleanup14: ; preds = %_ZN7testing7MessageD2Ev.exit15, %lpad - %.pn.pn = phi { ptr, i32 } [ %.pn, %_ZN7testing7MessageD2Ev.exit15 ], [ %7, %lpad ] + %.pn.pn = phi { ptr, i32 } [ %.pn, %_ZN7testing7MessageD2Ev.exit15 ], [ %8, %lpad ] call void @_ZN7testing15AssertionResultD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %gtest_ar) #28 resume { ptr, i32 } %.pn.pn diff --git a/bench/freetype/optimized/autofit.c.ll b/bench/freetype/optimized/autofit.c.ll index 2607ffa057b..4facc75ae4e 100644 --- a/bench/freetype/optimized/autofit.c.ll +++ b/bench/freetype/optimized/autofit.c.ll @@ -10545,9 +10545,9 @@ define internal fastcc void @af_latin_hint_edges(ptr nocapture noundef readonly br label %222 222: ; preds = %194, %207, %188 - %.sink522 = phi ptr [ %104, %194 ], [ %104, %207 ], [ %.1495, %188 ] + %.sink521 = phi ptr [ %104, %194 ], [ %104, %207 ], [ %.1495, %188 ] %.sink = phi i64 [ %206, %194 ], [ %221, %207 ], [ %191, %188 ] - %223 = getelementptr inbounds i8, ptr %.sink522, i64 16 + %223 = getelementptr inbounds i8, ptr %.sink521, i64 16 store i64 %.sink, ptr %223, align 8 %224 = load i8, ptr %98, align 8 %225 = or i8 %224, 4 @@ -10622,11 +10622,11 @@ define internal fastcc void @af_latin_hint_edges(ptr nocapture noundef readonly br label %259 259: ; preds = %252, %257 - %.sink524 = phi i64 [ 440, %257 ], [ 176, %252 ] - %.sink523 = phi i64 [ 792, %257 ], [ 352, %252 ] + %.sink523 = phi i64 [ 440, %257 ], [ 176, %252 ] + %.sink522 = phi i64 [ 792, %257 ], [ 352, %252 ] %.0339 = phi ptr [ %258, %257 ], [ %7, %252 ] - %260 = getelementptr inbounds i8, ptr %7, i64 %.sink524 - %261 = getelementptr inbounds i8, ptr %7, i64 %.sink523 + %260 = getelementptr inbounds i8, ptr %7, i64 %.sink523 + %261 = getelementptr inbounds i8, ptr %7, i64 %.sink522 %262 = getelementptr inbounds i8, ptr %260, i64 8 %263 = load i64, ptr %262, align 8 %264 = getelementptr inbounds i8, ptr %.0339, i64 8 @@ -10699,14 +10699,14 @@ define internal fastcc void @af_latin_hint_edges(ptr nocapture noundef readonly %or.cond503 = and i1 %or.cond5.not506, %94 br i1 %or.cond503, label %.lr.ph502, label %.loopexit -.lr.ph502: ; preds = %304, %427 - %.2500 = phi ptr [ %428, %427 ], [ %7, %304 ] - %.5499 = phi ptr [ %.6, %427 ], [ %.3.lcssa, %304 ] +.lr.ph502: ; preds = %304, %425 + %.2500 = phi ptr [ %426, %425 ], [ %7, %304 ] + %.5499 = phi ptr [ %.6, %425 ], [ %.3.lcssa, %304 ] %306 = getelementptr inbounds i8, ptr %.2500, i64 24 %307 = load i8, ptr %306, align 8 %308 = and i8 %307, 4 %.not402 = icmp eq i8 %308, 0 - br i1 %.not402, label %309, label %427 + br i1 %.not402, label %309, label %425 309: ; preds = %.lr.ph502 %310 = getelementptr inbounds i8, ptr %.2500, i64 56 @@ -10731,7 +10731,7 @@ define internal fastcc void @af_latin_hint_edges(ptr nocapture noundef readonly %322 = add i64 %321, %316 %323 = getelementptr inbounds i8, ptr %.2500, i64 16 store i64 %322, ptr %323, align 8 - br label %376 + br label %374 .thread480: ; preds = %309, %312 %.not404 = icmp eq ptr %.5499, null @@ -10744,26 +10744,26 @@ define internal fastcc void @af_latin_hint_edges(ptr nocapture noundef readonly %328 = and i64 %327, -64 %329 = getelementptr inbounds i8, ptr %.2500, i64 16 store i64 %328, ptr %329, align 8 - br label %376 + br label %374 .preheader: ; preds = %.thread480, %330 %.2.pn = phi ptr [ %.0328, %330 ], [ %.2500, %.thread480 ] %.0328 = getelementptr inbounds i8, ptr %.2.pn, i64 -88 %.not405 = icmp ult ptr %.0328, %7 - br i1 %.not405, label %.preheader527, label %330 + br i1 %.not405, label %.preheader525, label %330 330: ; preds = %.preheader %331 = getelementptr inbounds i8, ptr %.2.pn, i64 -64 %332 = load i8, ptr %331, align 8 %333 = and i8 %332, 4 %.not406 = icmp eq i8 %333, 0 - br i1 %.not406, label %.preheader, label %.preheader527, !llvm.loop !139 + br i1 %.not406, label %.preheader, label %.preheader525, !llvm.loop !139 -.preheader527: ; preds = %330, %.preheader +.preheader525: ; preds = %330, %.preheader br label %334 -334: ; preds = %.preheader527, %335 - %.2.pn408 = phi ptr [ %.0, %335 ], [ %.2500, %.preheader527 ] +334: ; preds = %.preheader525, %335 + %.2.pn408 = phi ptr [ %.0, %335 ], [ %.2500, %.preheader525 ] %.0 = getelementptr inbounds i8, ptr %.2.pn408, i64 88 %.not507.not.not = icmp ult ptr %.0, %14 br i1 %.not507.not.not, label %335, label %.thread516 @@ -10777,151 +10777,149 @@ define internal fastcc void @af_latin_hint_edges(ptr nocapture noundef readonly 339: ; preds = %335 %340 = icmp uge ptr %.0328, %.2500 - %341 = icmp ule ptr %.0, %.2500 - %342 = or i1 %340, %341 - %343 = or i1 %.not405, %342 - br i1 %343, label %.thread516, label %344 + %341 = or i1 %.not405, %340 + br i1 %341, label %.thread516, label %342 -344: ; preds = %339 - %345 = getelementptr inbounds i8, ptr %.2.pn408, i64 96 +342: ; preds = %339 + %343 = getelementptr inbounds i8, ptr %.2.pn408, i64 96 + %344 = load i64, ptr %343, align 8 + %345 = getelementptr inbounds i8, ptr %.2.pn, i64 -80 %346 = load i64, ptr %345, align 8 - %347 = getelementptr inbounds i8, ptr %.2.pn, i64 -80 - %348 = load i64, ptr %347, align 8 - %349 = icmp eq i64 %346, %348 - %350 = getelementptr inbounds i8, ptr %.2.pn, i64 -72 - %351 = load i64, ptr %350, align 8 - br i1 %349, label %352, label %354 - -352: ; preds = %344 - %353 = getelementptr inbounds i8, ptr %.2500, i64 16 - store i64 %351, ptr %353, align 8 - br label %376 - -354: ; preds = %344 - %355 = getelementptr inbounds i8, ptr %.2500, i64 8 - %356 = load i64, ptr %355, align 8 - %357 = sub nsw i64 %356, %348 - %358 = getelementptr inbounds i8, ptr %.2.pn408, i64 104 - %359 = load i64, ptr %358, align 8 - %360 = sub nsw i64 %359, %351 - %361 = sub nsw i64 %346, %348 - %362 = tail call i64 @FT_MulDiv(i64 noundef %357, i64 noundef %360, i64 noundef %361) #20 - %363 = add nsw i64 %362, %351 - %364 = getelementptr inbounds i8, ptr %.2500, i64 16 - store i64 %363, ptr %364, align 8 + %347 = icmp eq i64 %344, %346 + %348 = getelementptr inbounds i8, ptr %.2.pn, i64 -72 + %349 = load i64, ptr %348, align 8 + br i1 %347, label %350, label %352 + +350: ; preds = %342 + %351 = getelementptr inbounds i8, ptr %.2500, i64 16 + store i64 %349, ptr %351, align 8 + br label %374 + +352: ; preds = %342 + %353 = getelementptr inbounds i8, ptr %.2500, i64 8 + %354 = load i64, ptr %353, align 8 + %355 = sub nsw i64 %354, %346 + %356 = getelementptr inbounds i8, ptr %.2.pn408, i64 104 + %357 = load i64, ptr %356, align 8 + %358 = sub nsw i64 %357, %349 + %359 = sub nsw i64 %344, %346 + %360 = tail call i64 @FT_MulDiv(i64 noundef %355, i64 noundef %358, i64 noundef %359) #20 + %361 = add nsw i64 %360, %349 + %362 = getelementptr inbounds i8, ptr %.2500, i64 16 + store i64 %361, ptr %362, align 8 %.pre511 = load i8, ptr %306, align 8 - br label %376 + br label %374 .thread516: ; preds = %334, %339 - %365 = getelementptr inbounds i8, ptr %.5499, i64 16 + %363 = getelementptr inbounds i8, ptr %.5499, i64 16 + %364 = load i64, ptr %363, align 8 + %365 = getelementptr inbounds i8, ptr %.2500, i64 8 %366 = load i64, ptr %365, align 8 - %367 = getelementptr inbounds i8, ptr %.2500, i64 8 + %367 = getelementptr inbounds i8, ptr %.5499, i64 8 %368 = load i64, ptr %367, align 8 - %369 = getelementptr inbounds i8, ptr %.5499, i64 8 - %370 = load i64, ptr %369, align 8 - %371 = add i64 %368, 16 - %372 = sub i64 %371, %370 - %373 = and i64 %372, -32 - %374 = add nsw i64 %373, %366 - %375 = getelementptr inbounds i8, ptr %.2500, i64 16 - store i64 %374, ptr %375, align 8 - br label %376 - -376: ; preds = %324, %352, %354, %.thread516, %319 - %377 = phi i64 [ %322, %319 ], [ %351, %352 ], [ %363, %354 ], [ %374, %.thread516 ], [ %328, %324 ] - %378 = phi i8 [ %307, %319 ], [ %307, %352 ], [ %.pre511, %354 ], [ %307, %.thread516 ], [ %307, %324 ] - %.7 = phi ptr [ %.5499, %319 ], [ %.5499, %352 ], [ %.5499, %354 ], [ %.5499, %.thread516 ], [ %.2500, %324 ] - %379 = or i8 %378, 4 - store i8 %379, ptr %306, align 8 - %380 = icmp ugt ptr %.2500, %7 - br i1 %380, label %381, label %399 - -381: ; preds = %376 - %382 = getelementptr inbounds i8, ptr %.2500, i64 -72 - %383 = load i64, ptr %382, align 8 - br i1 %.0346459, label %386, label %384 - -384: ; preds = %381 - %385 = icmp sgt i64 %377, %383 - br i1 %385, label %388, label %399 - -386: ; preds = %381 - %387 = icmp slt i64 %377, %383 - br i1 %387, label %388, label %399 - -388: ; preds = %386, %384 - %389 = getelementptr inbounds i8, ptr %.2500, i64 48 - %390 = load ptr, ptr %389, align 8 - %.not410 = icmp eq ptr %390, null - br i1 %.not410, label %399, label %391 - -391: ; preds = %388 - %392 = getelementptr inbounds i8, ptr %390, i64 16 - %393 = load i64, ptr %392, align 8 - %394 = sub nsw i64 %393, %383 - %395 = tail call i64 @llvm.abs.i64(i64 %394, i1 true) - %396 = icmp ugt i64 %395, 16 - br i1 %396, label %397, label %399 - -397: ; preds = %391 - %398 = getelementptr inbounds i8, ptr %.2500, i64 16 - store i64 %383, ptr %398, align 8 - br label %399 - -399: ; preds = %388, %391, %397, %386, %384, %376 - %400 = phi i64 [ %377, %388 ], [ %377, %391 ], [ %383, %397 ], [ %377, %386 ], [ %377, %384 ], [ %377, %376 ] - %401 = getelementptr inbounds i8, ptr %.2500, i64 88 - %402 = icmp ult ptr %401, %14 - br i1 %402, label %403, label %427 - -403: ; preds = %399 - %404 = getelementptr inbounds i8, ptr %.2500, i64 112 - %405 = load i8, ptr %404, align 8 - %406 = and i8 %405, 4 - %.not411 = icmp eq i8 %406, 0 - br i1 %.not411, label %427, label %407 - -407: ; preds = %403 - %408 = getelementptr inbounds i8, ptr %.2500, i64 104 - %409 = load i64, ptr %408, align 8 - br i1 %.0346459, label %412, label %410 - -410: ; preds = %407 - %411 = icmp slt i64 %400, %409 - br i1 %411, label %414, label %427 - -412: ; preds = %407 - %413 = icmp sgt i64 %400, %409 - br i1 %413, label %414, label %427 - -414: ; preds = %412, %410 - %415 = getelementptr inbounds i8, ptr %.2500, i64 48 - %416 = load ptr, ptr %415, align 8 - %.not413 = icmp eq ptr %416, null - br i1 %.not413, label %427, label %417 - -417: ; preds = %414 - %418 = getelementptr inbounds i8, ptr %416, i64 16 + %369 = add i64 %366, 16 + %370 = sub i64 %369, %368 + %371 = and i64 %370, -32 + %372 = add nsw i64 %371, %364 + %373 = getelementptr inbounds i8, ptr %.2500, i64 16 + store i64 %372, ptr %373, align 8 + br label %374 + +374: ; preds = %324, %350, %352, %.thread516, %319 + %375 = phi i64 [ %322, %319 ], [ %349, %350 ], [ %361, %352 ], [ %372, %.thread516 ], [ %328, %324 ] + %376 = phi i8 [ %307, %319 ], [ %307, %350 ], [ %.pre511, %352 ], [ %307, %.thread516 ], [ %307, %324 ] + %.7 = phi ptr [ %.5499, %319 ], [ %.5499, %350 ], [ %.5499, %352 ], [ %.5499, %.thread516 ], [ %.2500, %324 ] + %377 = or i8 %376, 4 + store i8 %377, ptr %306, align 8 + %378 = icmp ugt ptr %.2500, %7 + br i1 %378, label %379, label %397 + +379: ; preds = %374 + %380 = getelementptr inbounds i8, ptr %.2500, i64 -72 + %381 = load i64, ptr %380, align 8 + br i1 %.0346459, label %384, label %382 + +382: ; preds = %379 + %383 = icmp sgt i64 %375, %381 + br i1 %383, label %386, label %397 + +384: ; preds = %379 + %385 = icmp slt i64 %375, %381 + br i1 %385, label %386, label %397 + +386: ; preds = %384, %382 + %387 = getelementptr inbounds i8, ptr %.2500, i64 48 + %388 = load ptr, ptr %387, align 8 + %.not410 = icmp eq ptr %388, null + br i1 %.not410, label %397, label %389 + +389: ; preds = %386 + %390 = getelementptr inbounds i8, ptr %388, i64 16 + %391 = load i64, ptr %390, align 8 + %392 = sub nsw i64 %391, %381 + %393 = tail call i64 @llvm.abs.i64(i64 %392, i1 true) + %394 = icmp ugt i64 %393, 16 + br i1 %394, label %395, label %397 + +395: ; preds = %389 + %396 = getelementptr inbounds i8, ptr %.2500, i64 16 + store i64 %381, ptr %396, align 8 + br label %397 + +397: ; preds = %386, %389, %395, %384, %382, %374 + %398 = phi i64 [ %375, %386 ], [ %375, %389 ], [ %381, %395 ], [ %375, %384 ], [ %375, %382 ], [ %375, %374 ] + %399 = getelementptr inbounds i8, ptr %.2500, i64 88 + %400 = icmp ult ptr %399, %14 + br i1 %400, label %401, label %425 + +401: ; preds = %397 + %402 = getelementptr inbounds i8, ptr %.2500, i64 112 + %403 = load i8, ptr %402, align 8 + %404 = and i8 %403, 4 + %.not411 = icmp eq i8 %404, 0 + br i1 %.not411, label %425, label %405 + +405: ; preds = %401 + %406 = getelementptr inbounds i8, ptr %.2500, i64 104 + %407 = load i64, ptr %406, align 8 + br i1 %.0346459, label %410, label %408 + +408: ; preds = %405 + %409 = icmp slt i64 %398, %407 + br i1 %409, label %412, label %425 + +410: ; preds = %405 + %411 = icmp sgt i64 %398, %407 + br i1 %411, label %412, label %425 + +412: ; preds = %410, %408 + %413 = getelementptr inbounds i8, ptr %.2500, i64 48 + %414 = load ptr, ptr %413, align 8 + %.not413 = icmp eq ptr %414, null + br i1 %.not413, label %425, label %415 + +415: ; preds = %412 + %416 = getelementptr inbounds i8, ptr %414, i64 16 + %417 = load i64, ptr %416, align 8 + %418 = getelementptr inbounds i8, ptr %.2500, i64 -72 %419 = load i64, ptr %418, align 8 - %420 = getelementptr inbounds i8, ptr %.2500, i64 -72 - %421 = load i64, ptr %420, align 8 - %422 = sub nsw i64 %419, %421 - %423 = tail call i64 @llvm.abs.i64(i64 %422, i1 true) - %424 = icmp ugt i64 %423, 16 - br i1 %424, label %425, label %427 - -425: ; preds = %417 - %426 = getelementptr inbounds i8, ptr %.2500, i64 16 - store i64 %409, ptr %426, align 8 - br label %427 - -427: ; preds = %399, %403, %410, %412, %425, %417, %414, %.lr.ph502 - %.6 = phi ptr [ %.5499, %.lr.ph502 ], [ %.7, %425 ], [ %.7, %417 ], [ %.7, %414 ], [ %.7, %410 ], [ %.7, %412 ], [ %.7, %403 ], [ %.7, %399 ] - %428 = getelementptr inbounds i8, ptr %.2500, i64 88 - %429 = icmp ult ptr %428, %14 - br i1 %429, label %.lr.ph502, label %.loopexit, !llvm.loop !141 - -.loopexit: ; preds = %427, %304 + %420 = sub nsw i64 %417, %419 + %421 = tail call i64 @llvm.abs.i64(i64 %420, i1 true) + %422 = icmp ugt i64 %421, 16 + br i1 %422, label %423, label %425 + +423: ; preds = %415 + %424 = getelementptr inbounds i8, ptr %.2500, i64 16 + store i64 %407, ptr %424, align 8 + br label %425 + +425: ; preds = %397, %401, %408, %410, %423, %415, %412, %.lr.ph502 + %.6 = phi ptr [ %.5499, %.lr.ph502 ], [ %.7, %423 ], [ %.7, %415 ], [ %.7, %412 ], [ %.7, %408 ], [ %.7, %410 ], [ %.7, %401 ], [ %.7, %397 ] + %426 = getelementptr inbounds i8, ptr %.2500, i64 88 + %427 = icmp ult ptr %426, %14 + br i1 %427, label %.lr.ph502, label %.loopexit, !llvm.loop !141 + +.loopexit: ; preds = %425, %304 ret void } diff --git a/bench/git/optimized/commit-reach.ll b/bench/git/optimized/commit-reach.ll index 40ad84c3a01..e059fc1e509 100644 --- a/bench/git/optimized/commit-reach.ll +++ b/bench/git/optimized/commit-reach.ll @@ -900,9 +900,9 @@ for.body: ; preds = %for.body.preheader, %0 = load ptr, ptr %arrayidx, align 8 %call1 = tail call i64 @commit_graph_generation(ptr noundef %0) #11 %cmp2 = icmp ult i64 %call1, 9223372036854775807 - br i1 %cmp2, label %st_mult.exit.i, label %for.cond + br i1 %cmp2, label %if.then3, label %for.cond -st_mult.exit.i: ; preds = %for.body +if.then3: ; preds = %for.body call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %stack.i) %mul.i.i = shl nuw nsw i64 %wide.trip.count, 3 %call2.i = tail call ptr @xmalloc(i64 noundef %mul.i.i) #11 @@ -910,11 +910,11 @@ st_mult.exit.i: ; preds = %for.body %cmp.i.not.i = icmp eq i32 %cnt, 1 br i1 %cmp.i.not.i, label %st_mult.exit87.i, label %if.then.i82.i -if.then.i82.i: ; preds = %st_mult.exit.i +if.then.i82.i: ; preds = %if.then3 tail call void @qsort(ptr noundef %call2.i, i64 noundef %wide.trip.count, i64 noundef 8, ptr noundef nonnull @compare_commits_by_gen) #11 br label %st_mult.exit87.i -st_mult.exit87.i: ; preds = %if.then.i82.i, %st_mult.exit.i +st_mult.exit87.i: ; preds = %if.then.i82.i, %if.then3 %1 = load ptr, ptr %call2.i, align 8 %call4.i = tail call i64 @commit_graph_generation(ptr noundef %1) #11 %call6.i = tail call ptr @xmalloc(i64 noundef %mul.i.i) #11 @@ -1212,8 +1212,6 @@ while.end183.i: ; preds = %while.cond93.backed for.end186.i: ; preds = %while.end183.i, %for.end71.i, %sane_qsort.exit96.i %36 = phi i32 [ %11, %for.end71.i ], [ 0, %sane_qsort.exit96.i ], [ %11, %while.end183.i ] call void @free(ptr noundef %call2.i) #11 - %smax173.i = call i32 @llvm.smax.i32(i32 %cnt, i32 1) - %wide.trip.count174.i = zext nneg i32 %smax173.i to i64 br label %for.body190.i for.body190.i: ; preds = %for.body190.i, %for.end186.i @@ -1224,7 +1222,7 @@ for.body190.i: ; preds = %for.body190.i, %for %bf.set201.i = and i32 %bf.load194.i, -8388609 store i32 %bf.set201.i, ptr %37, align 8 %indvars.iv.next171.i = add nuw nsw i64 %indvars.iv170.i, 1 - %exitcond175.not.i = icmp eq i64 %indvars.iv.next171.i, %wide.trip.count174.i + %exitcond175.not.i = icmp eq i64 %indvars.iv.next171.i, %wide.trip.count br i1 %exitcond175.not.i, label %for.body208.i, label %for.body190.i, !llvm.loop !37 for.body208.i: ; preds = %for.body190.i, %for.inc223.i @@ -1247,7 +1245,7 @@ if.then216.i: ; preds = %for.body208.i for.inc223.i: ; preds = %if.then216.i, %for.body208.i %count_non_stale.1.i = phi i32 [ %count_non_stale.0152.i, %for.body208.i ], [ %inc219.i, %if.then216.i ] %indvars.iv.next177.i = add nuw nsw i64 %indvars.iv176.i, 1 - %exitcond181.not.i = icmp eq i64 %indvars.iv.next177.i, %wide.trip.count174.i + %exitcond181.not.i = icmp eq i64 %indvars.iv.next177.i, %wide.trip.count br i1 %exitcond181.not.i, label %remove_redundant_with_gen.exit, label %for.body208.i, !llvm.loop !38 remove_redundant_with_gen.exit: ; preds = %for.inc223.i @@ -3140,9 +3138,6 @@ declare i32 @bcmp(ptr nocapture, ptr nocapture, i64) local_unnamed_addr #8 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umax.i64(i64, i64) #9 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #9 - ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umin.i64(i64, i64) #9 diff --git a/bench/graphviz/optimized/country_graph_coloring.c.ll b/bench/graphviz/optimized/country_graph_coloring.c.ll index 336153f4e2a..45f1b439f87 100644 --- a/bench/graphviz/optimized/country_graph_coloring.c.ll +++ b/bench/graphviz/optimized/country_graph_coloring.c.ll @@ -321,9 +321,9 @@ get_local_12_norm.exit100: ; preds = %115, %get_local_12_ %.0.lcssa.i = phi double [ %16, %.lr.ph71.i ], [ %.1.i106, %152 ] %155 = fadd double %storemerge67.i, %.0.lcssa.i %exitcond.not.i = icmp eq i64 %indvars.iv.next77.i, %wide.trip.count.i - br i1 %exitcond.not.i, label %get_12_norm.exit, label %.lr.ph71.i + br i1 %exitcond.not.i, label %get_12_norm.exit.loopexit, label %.lr.ph71.i -get_12_norm.exit: ; preds = %._crit_edge.i101 +get_12_norm.exit.loopexit: ; preds = %._crit_edge.i101 %156 = fdiv double %155, %16 %157 = tail call i64 @clock() #6 %158 = sub nsw i64 %157, %8 @@ -332,7 +332,7 @@ get_12_norm.exit: ; preds = %._crit_edge.i101 %161 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %.0, ptr noundef nonnull @.str.3, double noundef %160, double noundef %.sroa.0135.6, double noundef %156) #6 br label %162 -162: ; preds = %._crit_edge, %get_12_norm.exit +162: ; preds = %._crit_edge, %get_12_norm.exit.loopexit %indvars.iv.next169 = add nuw nsw i64 %indvars.iv168, 1 %exitcond171.not = icmp eq i64 %indvars.iv.next169, %wide.trip.count.i br i1 %exitcond171.not, label %._crit_edge155, label %.lr.ph154 diff --git a/bench/graphviz/optimized/matrix_ops.c.ll b/bench/graphviz/optimized/matrix_ops.c.ll index 16e1825d73b..29a4310e752 100644 --- a/bench/graphviz/optimized/matrix_ops.c.ll +++ b/bench/graphviz/optimized/matrix_ops.c.ll @@ -23,14 +23,14 @@ define zeroext i1 @power_iteration(ptr nocapture noundef readonly %0, i32 nounde %wide.trip.count.i = zext i32 %1 to i64 %.not7.i = icmp eq i32 %1, 0 %11 = shl nuw nsw i64 %wide.trip.count.i, 3 - %wide.trip.count370 = zext nneg i32 %spec.select to i64 + %wide.trip.count369 = zext nneg i32 %spec.select to i64 br label %12 12: ; preds = %.lr.ph315, %82 - %indvars.iv367 = phi i64 [ 0, %.lr.ph315 ], [ %indvars.iv.next368, %82 ] - %13 = getelementptr inbounds ptr, ptr %3, i64 %indvars.iv367 + %indvars.iv366 = phi i64 [ 0, %.lr.ph315 ], [ %indvars.iv.next367, %82 ] + %13 = getelementptr inbounds ptr, ptr %3, i64 %indvars.iv366 %14 = load ptr, ptr %13, align 8 - %.not = icmp eq i64 %indvars.iv367, 0 + %.not = icmp eq i64 %indvars.iv366, 0 %brmerge = or i1 %.not, %.not7.i br label %.lr.ph @@ -53,8 +53,8 @@ define zeroext i1 @power_iteration(ptr nocapture noundef readonly %0, i32 nounde br label %.lr.ph .lr.ph.preheader.i: ; preds = %.preheader292, %scadd.exit.loopexit - %indvars.iv357 = phi i64 [ %indvars.iv.next358, %scadd.exit.loopexit ], [ 0, %.preheader292 ] - %19 = getelementptr inbounds ptr, ptr %3, i64 %indvars.iv357 + %indvars.iv356 = phi i64 [ %indvars.iv.next357, %scadd.exit.loopexit ], [ 0, %.preheader292 ] + %19 = getelementptr inbounds ptr, ptr %3, i64 %indvars.iv356 %20 = load ptr, ptr %19, align 8 br label %.lr.ph.i @@ -89,9 +89,9 @@ vectors_inner_product.exit.loopexit: ; preds = %.lr.ph.i br i1 %.not.i, label %scadd.exit.loopexit, label %.lr.ph.i170 scadd.exit.loopexit: ; preds = %.lr.ph.i170 - %indvars.iv.next358 = add nuw nsw i64 %indvars.iv357, 1 - %exitcond361.not = icmp eq i64 %indvars.iv.next358, %indvars.iv367 - br i1 %exitcond361.not, label %.lr.ph.i.i.preheader, label %.lr.ph.preheader.i + %indvars.iv.next357 = add nuw nsw i64 %indvars.iv356, 1 + %exitcond360.not = icmp eq i64 %indvars.iv.next357, %indvars.iv366 + br i1 %exitcond360.not, label %.lr.ph.i.i.preheader, label %.lr.ph.preheader.i .lr.ph.i.i.preheader: ; preds = %scadd.exit.loopexit, %.preheader292 br label %.lr.ph.i.i @@ -161,8 +161,8 @@ norm.exit.loopexit: ; preds = %.lr.ph.i.i br i1 %.not, label %.lr.ph.i.i214.preheader, label %.lr.ph.preheader.i196 .lr.ph.preheader.i196: ; preds = %.lr.ph.i190.preheader, %scadd.exit210 - %indvars.iv362 = phi i64 [ %indvars.iv.next363, %scadd.exit210 ], [ 0, %.lr.ph.i190.preheader ] - %52 = getelementptr inbounds ptr, ptr %3, i64 %indvars.iv362 + %indvars.iv361 = phi i64 [ %indvars.iv.next362, %scadd.exit210 ], [ 0, %.lr.ph.i190.preheader ] + %52 = getelementptr inbounds ptr, ptr %3, i64 %indvars.iv361 %53 = load ptr, ptr %52, align 8 br label %.lr.ph.i198 @@ -197,9 +197,9 @@ vectors_inner_product.exit203.loopexit: ; preds = %.lr.ph.i198 br i1 %.not.i209, label %scadd.exit210, label %.lr.ph.i205 scadd.exit210: ; preds = %.lr.ph.i205, %vectors_inner_product.exit203.loopexit - %indvars.iv.next363 = add nuw nsw i64 %indvars.iv362, 1 - %exitcond366.not = icmp eq i64 %indvars.iv.next363, %indvars.iv367 - br i1 %exitcond366.not, label %.lr.ph.i.i214.preheader, label %.lr.ph.preheader.i196 + %indvars.iv.next362 = add nuw nsw i64 %indvars.iv361, 1 + %exitcond365.not = icmp eq i64 %indvars.iv.next362, %indvars.iv366 + br i1 %exitcond365.not, label %.lr.ph.i.i214.preheader, label %.lr.ph.preheader.i196 .lr.ph.i.i214.preheader: ; preds = %scadd.exit210, %.lr.ph.i190.preheader br label %.lr.ph.i.i214 @@ -254,14 +254,14 @@ vectors_inner_product.exit235.loopexit: ; preds = %.lr.ph.i230 82: ; preds = %vectors_inner_product.exit235.loopexit %83 = fmul double %69, %79 - %84 = getelementptr inbounds double, ptr %4, i64 %indvars.iv367 + %84 = getelementptr inbounds double, ptr %4, i64 %indvars.iv366 store double %83, ptr %84, align 8 - %indvars.iv.next368 = add nuw nsw i64 %indvars.iv367, 1 - %exitcond371.not = icmp eq i64 %indvars.iv.next368, %wide.trip.count370 - br i1 %exitcond371.not, label %.preheader, label %12 + %indvars.iv.next367 = add nuw nsw i64 %indvars.iv366, 1 + %exitcond370.not = icmp eq i64 %indvars.iv.next367, %wide.trip.count369 + br i1 %exitcond370.not, label %.preheader, label %12 .loopexit.loopexit: ; preds = %norm.exit219.loopexit - %85 = trunc nuw nsw i64 %indvars.iv367 to i32 + %85 = trunc nuw nsw i64 %indvars.iv366 to i32 br label %.loopexit .loopexit: ; preds = %.loopexit.loopexit, %5 @@ -275,220 +275,186 @@ vectors_inner_product.exit235.loopexit: ; preds = %.lr.ph.i230 %wide.trip.count.i238 = zext i32 %1 to i64 %.not7.i245 = icmp eq i32 %1, 0 %88 = zext nneg i32 %.0148307 to i64 - %wide.trip.count385 = zext i32 %spec.select to i64 - br label %114 + %wide.trip.count384 = zext i32 %spec.select to i64 + br label %92 .preheader: ; preds = %82, %vectors_scalar_mult.exit267.loopexit, %.loopexit - %.2155413 = phi i32 [ %.2155, %.loopexit ], [ %.2155, %vectors_scalar_mult.exit267.loopexit ], [ %51, %82 ] - %89 = add i32 %spec.select, -1 - %90 = icmp sgt i32 %spec.select, 1 - br i1 %90, label %.lr.ph335, label %._crit_edge336 + %.2155400 = phi i32 [ %.2155, %.loopexit ], [ %.2155, %vectors_scalar_mult.exit267.loopexit ], [ %51, %82 ] + %89 = icmp sgt i32 %spec.select, 1 + br i1 %89, label %.lr.ph335, label %._crit_edge336 .lr.ph335: ; preds = %.preheader - %91 = icmp sgt i32 %1, 0 + %90 = add nsw i32 %spec.select, -1 %wide.trip.count.i269 = zext i32 %1 to i64 - br i1 %91, label %.lr.ph335.split.us.preheader, label %.lr.ph335.split.preheader - -.lr.ph335.split.preheader: ; preds = %.lr.ph335 - %wide.trip.count392 = zext nneg i32 %spec.select to i64 - %92 = load double, ptr %4, align 8 - br label %.lr.ph330 - -.lr.ph335.split.us.preheader: ; preds = %.lr.ph335 - %93 = shl nuw nsw i64 %wide.trip.count.i269, 3 - %wide.trip.count409 = zext nneg i32 %89 to i64 - %wide.trip.count404 = zext nneg i32 %spec.select to i64 - br label %.lr.ph330.us.preheader - -.lr.ph330.us.preheader: ; preds = %109, %.lr.ph335.split.us.preheader - %indvars.iv406 = phi i64 [ 0, %.lr.ph335.split.us.preheader ], [ %indvars.iv.next407, %109 ] - %indvars.iv399 = phi i64 [ 1, %.lr.ph335.split.us.preheader ], [ %indvars.iv.next400, %109 ] - %94 = getelementptr inbounds double, ptr %4, i64 %indvars.iv406 - %indvars.iv.next407 = add nuw nsw i64 %indvars.iv406, 1 - %95 = trunc nuw nsw i64 %indvars.iv406 to i32 - %96 = load double, ptr %94, align 8 - br label %.lr.ph330.us - -._crit_edge331.us: ; preds = %.lr.ph330.us - %97 = zext i32 %.1152.us to i64 - %.not169.us = icmp eq i64 %indvars.iv406, %97 - br i1 %.not169.us, label %109, label %.lr.ph.preheader.i268.us - -.lr.ph.preheader.i268.us: ; preds = %._crit_edge331.us - %98 = getelementptr inbounds ptr, ptr %3, i64 %indvars.iv406 - %99 = load ptr, ptr %98, align 8 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %7, ptr align 8 %99, i64 %93, i1 false) - %100 = sext i32 %.1152.us to i64 - %101 = getelementptr inbounds ptr, ptr %3, i64 %100 - %102 = load ptr, ptr %101, align 8 - br label %.lr.ph.i277.us - -.lr.ph.i277.us: ; preds = %.lr.ph.i277.us, %.lr.ph.preheader.i268.us - %indvars.iv.i278.us = phi i64 [ 0, %.lr.ph.preheader.i268.us ], [ %indvars.iv.next.i279.us, %.lr.ph.i277.us ] - %103 = getelementptr inbounds double, ptr %102, i64 %indvars.iv.i278.us - %104 = load double, ptr %103, align 8 - %105 = getelementptr inbounds double, ptr %99, i64 %indvars.iv.i278.us - store double %104, ptr %105, align 8 - %indvars.iv.next.i279.us = add nuw nsw i64 %indvars.iv.i278.us, 1 - %exitcond.not.i280.us = icmp eq i64 %indvars.iv.next.i279.us, %wide.trip.count.i269 - br i1 %exitcond.not.i280.us, label %copy_vector.exit281.us, label %.lr.ph.i277.us - -copy_vector.exit281.us: ; preds = %.lr.ph.i277.us - %106 = load ptr, ptr %101, align 8 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %106, ptr align 8 %7, i64 %93, i1 false) - %107 = load double, ptr %94, align 8 - %108 = getelementptr inbounds double, ptr %4, i64 %100 - store double %107, ptr %108, align 8 - store double %.1150.us, ptr %94, align 8 - br label %109 - -109: ; preds = %copy_vector.exit281.us, %._crit_edge331.us - %indvars.iv.next400 = add nuw nsw i64 %indvars.iv399, 1 - %exitcond410.not = icmp eq i64 %indvars.iv.next407, %wide.trip.count409 - br i1 %exitcond410.not, label %._crit_edge336, label %.lr.ph330.us.preheader - -.lr.ph330.us: ; preds = %.lr.ph330.us.preheader, %.lr.ph330.us - %indvars.iv401 = phi i64 [ %indvars.iv399, %.lr.ph330.us.preheader ], [ %indvars.iv.next402, %.lr.ph330.us ] - %.0149328.us = phi double [ %96, %.lr.ph330.us.preheader ], [ %.1150.us, %.lr.ph330.us ] - %.0151327.us = phi i32 [ %95, %.lr.ph330.us.preheader ], [ %.1152.us, %.lr.ph330.us ] - %110 = getelementptr inbounds double, ptr %4, i64 %indvars.iv401 - %111 = load double, ptr %110, align 8 - %112 = fcmp olt double %.0149328.us, %111 - %113 = trunc nuw nsw i64 %indvars.iv401 to i32 - %.1152.us = select i1 %112, i32 %113, i32 %.0151327.us - %.1150.us = select i1 %112, double %111, double %.0149328.us - %indvars.iv.next402 = add nuw nsw i64 %indvars.iv401, 1 - %exitcond405.not = icmp eq i64 %indvars.iv.next402, %wide.trip.count404 - br i1 %exitcond405.not, label %._crit_edge331.us, label %.lr.ph330.us - -114: ; preds = %.lr.ph325, %vectors_scalar_mult.exit267.loopexit - %indvars.iv382 = phi i64 [ %88, %.lr.ph325 ], [ %indvars.iv.next383, %vectors_scalar_mult.exit267.loopexit ] - %115 = getelementptr inbounds ptr, ptr %3, i64 %indvars.iv382 - %116 = load ptr, ptr %115, align 8 + %91 = shl nuw nsw i64 %wide.trip.count.i269, 3 + %wide.trip.count396 = zext nneg i32 %90 to i64 + %wide.trip.count391 = zext nneg i32 %spec.select to i64 + br label %.lr.ph330.preheader + +92: ; preds = %.lr.ph325, %vectors_scalar_mult.exit267.loopexit + %indvars.iv381 = phi i64 [ %88, %.lr.ph325 ], [ %indvars.iv.next382, %vectors_scalar_mult.exit267.loopexit ] + %93 = getelementptr inbounds ptr, ptr %3, i64 %indvars.iv381 + %94 = load ptr, ptr %93, align 8 br i1 %87, label %.lr.ph319, label %.preheader291 -.preheader291: ; preds = %.lr.ph319, %114 - %.not338 = icmp eq i64 %indvars.iv382, 0 +.preheader291: ; preds = %.lr.ph319, %92 + %.not338 = icmp eq i64 %indvars.iv381, 0 br i1 %.not338, label %.lr.ph.i.i255.preheader, label %.lr.ph321 -.lr.ph319: ; preds = %114, %.lr.ph319 - %indvars.iv372 = phi i64 [ %indvars.iv.next373, %.lr.ph319 ], [ 0, %114 ] - %117 = tail call i32 @rand() #18 - %118 = srem i32 %117, 100 - %119 = sitofp i32 %118 to double - %120 = getelementptr inbounds double, ptr %116, i64 %indvars.iv372 - store double %119, ptr %120, align 8 - %indvars.iv.next373 = add nuw nsw i64 %indvars.iv372, 1 - %exitcond376.not = icmp eq i64 %indvars.iv.next373, %wide.trip.count.i238 - br i1 %exitcond376.not, label %.preheader291, label %.lr.ph319 +.lr.ph319: ; preds = %92, %.lr.ph319 + %indvars.iv371 = phi i64 [ %indvars.iv.next372, %.lr.ph319 ], [ 0, %92 ] + %95 = tail call i32 @rand() #18 + %96 = srem i32 %95, 100 + %97 = sitofp i32 %96 to double + %98 = getelementptr inbounds double, ptr %94, i64 %indvars.iv371 + store double %97, ptr %98, align 8 + %indvars.iv.next372 = add nuw nsw i64 %indvars.iv371, 1 + %exitcond375.not = icmp eq i64 %indvars.iv.next372, %wide.trip.count.i238 + br i1 %exitcond375.not, label %.preheader291, label %.lr.ph319 .lr.ph321: ; preds = %.preheader291, %scadd.exit251 - %indvars.iv377 = phi i64 [ %indvars.iv.next378, %scadd.exit251 ], [ 0, %.preheader291 ] - %121 = getelementptr inbounds ptr, ptr %3, i64 %indvars.iv377 - %122 = load ptr, ptr %121, align 8 + %indvars.iv376 = phi i64 [ %indvars.iv.next377, %scadd.exit251 ], [ 0, %.preheader291 ] + %99 = getelementptr inbounds ptr, ptr %3, i64 %indvars.iv376 + %100 = load ptr, ptr %99, align 8 br i1 %87, label %.lr.ph.i239, label %vectors_inner_product.exit244 .lr.ph.i239: ; preds = %.lr.ph321, %.lr.ph.i239 %indvars.iv.i240 = phi i64 [ %indvars.iv.next.i242, %.lr.ph.i239 ], [ 0, %.lr.ph321 ] - %.010.i241 = phi double [ %127, %.lr.ph.i239 ], [ 0.000000e+00, %.lr.ph321 ] - %123 = getelementptr inbounds double, ptr %122, i64 %indvars.iv.i240 - %124 = load double, ptr %123, align 8 - %125 = getelementptr inbounds double, ptr %116, i64 %indvars.iv.i240 - %126 = load double, ptr %125, align 8 - %127 = tail call double @llvm.fmuladd.f64(double %124, double %126, double %.010.i241) + %.010.i241 = phi double [ %105, %.lr.ph.i239 ], [ 0.000000e+00, %.lr.ph321 ] + %101 = getelementptr inbounds double, ptr %100, i64 %indvars.iv.i240 + %102 = load double, ptr %101, align 8 + %103 = getelementptr inbounds double, ptr %94, i64 %indvars.iv.i240 + %104 = load double, ptr %103, align 8 + %105 = tail call double @llvm.fmuladd.f64(double %102, double %104, double %.010.i241) %indvars.iv.next.i242 = add nuw nsw i64 %indvars.iv.i240, 1 %exitcond.not.i243 = icmp eq i64 %indvars.iv.next.i242, %wide.trip.count.i238 br i1 %exitcond.not.i243, label %vectors_inner_product.exit244, label %.lr.ph.i239 vectors_inner_product.exit244: ; preds = %.lr.ph.i239, %.lr.ph321 - %.0.lcssa.i236 = phi double [ 0.000000e+00, %.lr.ph321 ], [ %127, %.lr.ph.i239 ] - %128 = fneg double %.0.lcssa.i236 + %.0.lcssa.i236 = phi double [ 0.000000e+00, %.lr.ph321 ], [ %105, %.lr.ph.i239 ] + %106 = fneg double %.0.lcssa.i236 br i1 %.not7.i245, label %scadd.exit251, label %.lr.ph.i246 .lr.ph.i246: ; preds = %vectors_inner_product.exit244, %.lr.ph.i246 - %.010.i247 = phi i32 [ %134, %.lr.ph.i246 ], [ %1, %vectors_inner_product.exit244 ] - %.059.i248 = phi ptr [ %129, %.lr.ph.i246 ], [ %122, %vectors_inner_product.exit244 ] - %.068.i249 = phi ptr [ %131, %.lr.ph.i246 ], [ %116, %vectors_inner_product.exit244 ] - %129 = getelementptr inbounds i8, ptr %.059.i248, i64 8 - %130 = load double, ptr %.059.i248, align 8 - %131 = getelementptr inbounds i8, ptr %.068.i249, i64 8 - %132 = load double, ptr %.068.i249, align 8 - %133 = tail call double @llvm.fmuladd.f64(double %128, double %130, double %132) - store double %133, ptr %.068.i249, align 8 - %134 = add nsw i32 %.010.i247, -1 - %.not.i250 = icmp eq i32 %134, 0 + %.010.i247 = phi i32 [ %112, %.lr.ph.i246 ], [ %1, %vectors_inner_product.exit244 ] + %.059.i248 = phi ptr [ %107, %.lr.ph.i246 ], [ %100, %vectors_inner_product.exit244 ] + %.068.i249 = phi ptr [ %109, %.lr.ph.i246 ], [ %94, %vectors_inner_product.exit244 ] + %107 = getelementptr inbounds i8, ptr %.059.i248, i64 8 + %108 = load double, ptr %.059.i248, align 8 + %109 = getelementptr inbounds i8, ptr %.068.i249, i64 8 + %110 = load double, ptr %.068.i249, align 8 + %111 = tail call double @llvm.fmuladd.f64(double %106, double %108, double %110) + store double %111, ptr %.068.i249, align 8 + %112 = add nsw i32 %.010.i247, -1 + %.not.i250 = icmp eq i32 %112, 0 br i1 %.not.i250, label %scadd.exit251, label %.lr.ph.i246 scadd.exit251: ; preds = %.lr.ph.i246, %vectors_inner_product.exit244 - %indvars.iv.next378 = add nuw nsw i64 %indvars.iv377, 1 - %exitcond381.not = icmp eq i64 %indvars.iv.next378, %indvars.iv382 - br i1 %exitcond381.not, label %.lr.ph.i.i255.preheader, label %.lr.ph321 + %indvars.iv.next377 = add nuw nsw i64 %indvars.iv376, 1 + %exitcond380.not = icmp eq i64 %indvars.iv.next377, %indvars.iv381 + br i1 %exitcond380.not, label %.lr.ph.i.i255.preheader, label %.lr.ph321 .lr.ph.i.i255.preheader: ; preds = %scadd.exit251, %.preheader291 br label %.lr.ph.i.i255 .lr.ph.i.i255: ; preds = %.lr.ph.i.i255.preheader, %.lr.ph.i.i255 %indvars.iv.i.i256 = phi i64 [ %indvars.iv.next.i.i258, %.lr.ph.i.i255 ], [ 0, %.lr.ph.i.i255.preheader ] - %.010.i.i257 = phi double [ %137, %.lr.ph.i.i255 ], [ 0.000000e+00, %.lr.ph.i.i255.preheader ] - %135 = getelementptr inbounds double, ptr %116, i64 %indvars.iv.i.i256 - %136 = load double, ptr %135, align 8 - %137 = tail call double @llvm.fmuladd.f64(double %136, double %136, double %.010.i.i257) + %.010.i.i257 = phi double [ %115, %.lr.ph.i.i255 ], [ 0.000000e+00, %.lr.ph.i.i255.preheader ] + %113 = getelementptr inbounds double, ptr %94, i64 %indvars.iv.i.i256 + %114 = load double, ptr %113, align 8 + %115 = tail call double @llvm.fmuladd.f64(double %114, double %114, double %.010.i.i257) %indvars.iv.next.i.i258 = add nuw nsw i64 %indvars.iv.i.i256, 1 %exitcond.not.i.i259 = icmp eq i64 %indvars.iv.next.i.i258, %wide.trip.count.i238 br i1 %exitcond.not.i.i259, label %norm.exit260, label %.lr.ph.i.i255 norm.exit260: ; preds = %.lr.ph.i.i255 - %138 = tail call double @sqrt(double noundef %137) #18 - %139 = fdiv double 1.000000e+00, %138 + %116 = tail call double @sqrt(double noundef %115) #18 + %117 = fdiv double 1.000000e+00, %116 br label %.lr.ph.i263 .lr.ph.i263: ; preds = %.lr.ph.i263, %norm.exit260 %indvars.iv.i264 = phi i64 [ 0, %norm.exit260 ], [ %indvars.iv.next.i265, %.lr.ph.i263 ] - %140 = getelementptr inbounds double, ptr %116, i64 %indvars.iv.i264 - %141 = load double, ptr %140, align 8 - %142 = fmul double %139, %141 - store double %142, ptr %140, align 8 + %118 = getelementptr inbounds double, ptr %94, i64 %indvars.iv.i264 + %119 = load double, ptr %118, align 8 + %120 = fmul double %117, %119 + store double %120, ptr %118, align 8 %indvars.iv.next.i265 = add nuw nsw i64 %indvars.iv.i264, 1 %exitcond.not.i266 = icmp eq i64 %indvars.iv.next.i265, %wide.trip.count.i238 br i1 %exitcond.not.i266, label %vectors_scalar_mult.exit267.loopexit, label %.lr.ph.i263 vectors_scalar_mult.exit267.loopexit: ; preds = %.lr.ph.i263 - %143 = getelementptr inbounds double, ptr %4, i64 %indvars.iv382 - store double 0.000000e+00, ptr %143, align 8 - %indvars.iv.next383 = add nuw nsw i64 %indvars.iv382, 1 - %exitcond386.not = icmp eq i64 %indvars.iv.next383, %wide.trip.count385 - br i1 %exitcond386.not, label %.preheader, label %114 - -.lr.ph330: ; preds = %.lr.ph335.split.preheader, %.lr.ph330 - %indvars.iv389 = phi i64 [ 1, %.lr.ph335.split.preheader ], [ %indvars.iv.next390, %.lr.ph330 ] - %.0149328 = phi double [ %92, %.lr.ph335.split.preheader ], [ %.1150, %.lr.ph330 ] - %.0151327 = phi i32 [ 0, %.lr.ph335.split.preheader ], [ %.1152, %.lr.ph330 ] - %144 = getelementptr inbounds double, ptr %4, i64 %indvars.iv389 - %145 = load double, ptr %144, align 8 - %146 = fcmp olt double %.0149328, %145 - %147 = trunc nuw nsw i64 %indvars.iv389 to i32 - %.1152 = select i1 %146, i32 %147, i32 %.0151327 - %.1150 = select i1 %146, double %145, double %.0149328 - %indvars.iv.next390 = add nuw nsw i64 %indvars.iv389, 1 - %exitcond393.not = icmp eq i64 %indvars.iv.next390, %wide.trip.count392 - br i1 %exitcond393.not, label %._crit_edge331, label %.lr.ph330 - -._crit_edge331: ; preds = %.lr.ph330 - %.not169 = icmp eq i32 %.1152, 0 - br i1 %.not169, label %._crit_edge336, label %copy_vector.exit274.thread + %121 = getelementptr inbounds double, ptr %4, i64 %indvars.iv381 + store double 0.000000e+00, ptr %121, align 8 + %indvars.iv.next382 = add nuw nsw i64 %indvars.iv381, 1 + %exitcond385.not = icmp eq i64 %indvars.iv.next382, %wide.trip.count384 + br i1 %exitcond385.not, label %.preheader, label %92 + +.lr.ph330.preheader: ; preds = %141, %.lr.ph335 + %indvars.iv393 = phi i64 [ 0, %.lr.ph335 ], [ %indvars.iv.next394, %141 ] + %indvars.iv386 = phi i64 [ 1, %.lr.ph335 ], [ %indvars.iv.next387, %141 ] + %122 = getelementptr inbounds double, ptr %4, i64 %indvars.iv393 + %indvars.iv.next394 = add nuw nsw i64 %indvars.iv393, 1 + %123 = trunc nuw nsw i64 %indvars.iv393 to i32 + %124 = load double, ptr %122, align 8 + br label %.lr.ph330 -copy_vector.exit274.thread: ; preds = %._crit_edge331 - %148 = sext i32 %.1152 to i64 - %149 = getelementptr inbounds double, ptr %4, i64 %148 - store double %92, ptr %149, align 8 - store double %.1150, ptr %4, align 8 - br label %._crit_edge336 +.lr.ph330: ; preds = %.lr.ph330.preheader, %.lr.ph330 + %indvars.iv388 = phi i64 [ %indvars.iv386, %.lr.ph330.preheader ], [ %indvars.iv.next389, %.lr.ph330 ] + %.0149328 = phi double [ %124, %.lr.ph330.preheader ], [ %.1150, %.lr.ph330 ] + %.0151327 = phi i32 [ %123, %.lr.ph330.preheader ], [ %.1152, %.lr.ph330 ] + %125 = getelementptr inbounds double, ptr %4, i64 %indvars.iv388 + %126 = load double, ptr %125, align 8 + %127 = fcmp olt double %.0149328, %126 + %128 = trunc nuw nsw i64 %indvars.iv388 to i32 + %.1152 = select i1 %127, i32 %128, i32 %.0151327 + %.1150 = select i1 %127, double %126, double %.0149328 + %indvars.iv.next389 = add nuw nsw i64 %indvars.iv388, 1 + %exitcond392.not = icmp eq i64 %indvars.iv.next389, %wide.trip.count391 + br i1 %exitcond392.not, label %._crit_edge331, label %.lr.ph330 -._crit_edge336: ; preds = %109, %._crit_edge331, %copy_vector.exit274.thread, %.preheader +._crit_edge331: ; preds = %.lr.ph330 + %129 = zext i32 %.1152 to i64 + %.not169 = icmp eq i64 %indvars.iv393, %129 + br i1 %.not169, label %141, label %.lr.ph.preheader.i268 + +.lr.ph.preheader.i268: ; preds = %._crit_edge331 + %130 = getelementptr inbounds ptr, ptr %3, i64 %indvars.iv393 + %131 = load ptr, ptr %130, align 8 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %7, ptr align 8 %131, i64 %91, i1 false) + %132 = sext i32 %.1152 to i64 + %133 = getelementptr inbounds ptr, ptr %3, i64 %132 + %134 = load ptr, ptr %133, align 8 + br label %.lr.ph.i277 + +.lr.ph.i277: ; preds = %.lr.ph.i277, %.lr.ph.preheader.i268 + %indvars.iv.i278 = phi i64 [ 0, %.lr.ph.preheader.i268 ], [ %indvars.iv.next.i279, %.lr.ph.i277 ] + %135 = getelementptr inbounds double, ptr %134, i64 %indvars.iv.i278 + %136 = load double, ptr %135, align 8 + %137 = getelementptr inbounds double, ptr %131, i64 %indvars.iv.i278 + store double %136, ptr %137, align 8 + %indvars.iv.next.i279 = add nuw nsw i64 %indvars.iv.i278, 1 + %exitcond.not.i280 = icmp eq i64 %indvars.iv.next.i279, %wide.trip.count.i269 + br i1 %exitcond.not.i280, label %copy_vector.exit281, label %.lr.ph.i277 + +copy_vector.exit281: ; preds = %.lr.ph.i277 + %138 = load ptr, ptr %133, align 8 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %138, ptr align 8 %7, i64 %91, i1 false) + %139 = load double, ptr %122, align 8 + %140 = getelementptr inbounds double, ptr %4, i64 %132 + store double %139, ptr %140, align 8 + store double %.1150, ptr %122, align 8 + br label %141 + +141: ; preds = %._crit_edge331, %copy_vector.exit281 + %indvars.iv.next387 = add nuw nsw i64 %indvars.iv386, 1 + %exitcond397.not = icmp eq i64 %indvars.iv.next394, %wide.trip.count396 + br i1 %exitcond397.not, label %._crit_edge336, label %.lr.ph330.preheader + +._crit_edge336: ; preds = %141, %.preheader tail call void @free(ptr noundef %7) #18 tail call void @free(ptr noundef %8) #18 - %150 = icmp sle i32 %.2155413, %9 - ret i1 %150 + %142 = icmp sle i32 %.2155400, %9 + ret i1 %142 } ; Function Attrs: nofree nounwind uwtable diff --git a/bench/gromacs/optimized/anadih.cpp.ll b/bench/gromacs/optimized/anadih.cpp.ll index 1e901ad5e6d..fcc4197515d 100644 --- a/bench/gromacs/optimized/anadih.cpp.ll +++ b/bench/gromacs/optimized/anadih.cpp.ll @@ -1611,7 +1611,7 @@ define void @_Z13mk_chi_lookupPPiiN3gmx8ArrayRefIK7t_dlistEE(ptr nocapture nound %5 = icmp slt i32 %1, 1 %.not = icmp eq ptr %3, %2 %or.cond = select i1 %5, i1 true, i1 %.not - br i1 %or.cond, label %._crit_edge35, label %.preheader.us.preheader + br i1 %or.cond, label %._crit_edge28, label %.preheader.us.preheader .preheader.us.preheader: ; preds = %4 %6 = add nuw i32 %1, 3 @@ -1622,46 +1622,46 @@ define void @_Z13mk_chi_lookupPPiiN3gmx8ArrayRefIK7t_dlistEE(ptr nocapture nound %umax = tail call i64 @llvm.umax.i64(i64 %10, i64 1) %smax = tail call i32 @llvm.smax.i32(i32 %6, i32 4) %wide.trip.count = zext nneg i32 %smax to i64 - br label %.lr.ph.split.split.us42.preheader - -.lr.ph.split.split.us42: ; preds = %.lr.ph.split.split.us42.preheader, %19 - %.126.us36 = phi i32 [ %.2.us, %19 ], [ %.034.us, %.lr.ph.split.split.us42.preheader ] - %.02024.us37 = phi i64 [ %20, %19 ], [ 0, %.lr.ph.split.split.us42.preheader ] - %11 = getelementptr inbounds %struct.t_dlist, ptr %2, i64 %.02024.us37, i32 4, i32 7, i64 %indvars.iv - %12 = load i32, ptr %11, align 4 - %.not22.us = icmp eq i32 %12, -1 - %13 = getelementptr inbounds ptr, ptr %0, i64 %.02024.us37 - %14 = load ptr, ptr %13, align 8 - %15 = getelementptr i32, ptr %14, i64 %indvars.iv - %16 = getelementptr i8, ptr %15, i64 -12 - br i1 %.not22.us, label %18, label %.thread.us38 - -.thread.us38: ; preds = %.lr.ph.split.split.us42 - store i32 %.126.us36, ptr %16, align 4 - %17 = add nsw i32 %.126.us36, 1 - br label %19 - -18: ; preds = %.lr.ph.split.split.us42 - store i32 -1, ptr %16, align 4 - br label %19 + br label %.preheader.us -19: ; preds = %18, %.thread.us38 - %.2.us = phi i32 [ %17, %.thread.us38 ], [ %.126.us36, %18 ] - %20 = add nuw i64 %.02024.us37, 1 - %exitcond.not = icmp eq i64 %20, %umax - br i1 %exitcond.not, label %._crit_edge.us, label %.lr.ph.split.split.us42, !llvm.loop !25 - -.lr.ph.split.split.us42.preheader: ; preds = %.preheader.us.preheader, %._crit_edge.us +.preheader.us: ; preds = %.preheader.us.preheader, %._crit_edge.us %indvars.iv = phi i64 [ 3, %.preheader.us.preheader ], [ %indvars.iv.next, %._crit_edge.us ] - %.034.us = phi i32 [ 0, %.preheader.us.preheader ], [ %.2.us, %._crit_edge.us ] - br label %.lr.ph.split.split.us42 + %.027.us = phi i32 [ 0, %.preheader.us.preheader ], [ %.2.us, %._crit_edge.us ] + br label %11 -._crit_edge.us: ; preds = %19 +11: ; preds = %.preheader.us, %20 + %.125.us = phi i32 [ %.027.us, %.preheader.us ], [ %.2.us, %20 ] + %.02024.us = phi i64 [ 0, %.preheader.us ], [ %21, %20 ] + %12 = getelementptr inbounds %struct.t_dlist, ptr %2, i64 %.02024.us, i32 4, i32 7, i64 %indvars.iv + %13 = load i32, ptr %12, align 4 + %.not22.us = icmp eq i32 %13, -1 + %14 = getelementptr inbounds ptr, ptr %0, i64 %.02024.us + %15 = load ptr, ptr %14, align 8 + %16 = getelementptr i32, ptr %15, i64 %indvars.iv + %17 = getelementptr i8, ptr %16, i64 -12 + br i1 %.not22.us, label %19, label %.thread.us + +.thread.us: ; preds = %11 + store i32 %.125.us, ptr %17, align 4 + %18 = add nsw i32 %.125.us, 1 + br label %20 + +19: ; preds = %11 + store i32 -1, ptr %17, align 4 + br label %20 + +20: ; preds = %19, %.thread.us + %.2.us = phi i32 [ %18, %.thread.us ], [ %.125.us, %19 ] + %21 = add nuw i64 %.02024.us, 1 + %exitcond.not = icmp eq i64 %21, %umax + br i1 %exitcond.not, label %._crit_edge.us, label %11, !llvm.loop !25 + +._crit_edge.us: ; preds = %20 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond51.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond51.not, label %._crit_edge35, label %.lr.ph.split.split.us42.preheader, !llvm.loop !26 + %exitcond31.not = icmp eq i64 %indvars.iv.next, %wide.trip.count + br i1 %exitcond31.not, label %._crit_edge28, label %.preheader.us, !llvm.loop !26 -._crit_edge35: ; preds = %._crit_edge.us, %4 +._crit_edge28: ; preds = %._crit_edge.us, %4 ret void } diff --git a/bench/grpc/optimized/parser.cc.ll b/bench/grpc/optimized/parser.cc.ll index 326a0e9618b..b40d14bf4b1 100644 --- a/bench/grpc/optimized/parser.cc.ll +++ b/bench/grpc/optimized/parser.cc.ll @@ -1706,18 +1706,18 @@ do.end39.i.i.i.loopexit: ; preds = %land.rhsthread-pre- br label %do.end39.i.i.i do.end39.i.i.i: ; preds = %do.end39.i.i.i.loopexit, %land.rhs.preheader.i.i.i - %cur.0.idx102.i.lcssa56.i.i = phi i64 [ 32, %land.rhs.preheader.i.i.i ], [ %cur.0.add.i.i.i, %do.end39.i.i.i.loopexit ] - %cur.0.ptr103.i.lcssa55.i.i = phi ptr [ %invariant.gep, %land.rhs.preheader.i.i.i ], [ %cur.0.ptr.i.i.i.le, %do.end39.i.i.i.loopexit ] - %add.i.i.i.i = add nsw i64 %cur.0.idx102.i.lcssa56.i.i, -31 + %cur.0.ptr103.i.lcssa.i.i = phi ptr [ %invariant.gep, %land.rhs.preheader.i.i.i ], [ %cur.0.ptr.i.i.i.le, %do.end39.i.i.i.loopexit ] + %cur.0.idx102.i.lcssa.i.i = phi i64 [ 32, %land.rhs.preheader.i.i.i ], [ %cur.0.add.i.i.i, %do.end39.i.i.i.loopexit ] + %add.i.i.i.i = add nsw i64 %cur.0.idx102.i.lcssa.i.i, -31 %call.i90.i.i.i = invoke noundef ptr @gpr_malloc(i64 noundef %add.i.i.i.i) to label %_ZL7buf2strPvm.exit.i.i.i unwind label %lpad.i.i.i.loopexit, !noalias !38 _ZL7buf2strPvm.exit.i.i.i: ; preds = %do.end39.i.i.i - %gepdiff.i.i.i = add nsw i64 %cur.0.idx102.i.lcssa56.i.i, -32 + %gepdiff.i.i.i = add nsw i64 %cur.0.idx102.i.lcssa.i.i, -32 call void @llvm.memcpy.p0.p0.i64(ptr align 1 %call.i90.i.i.i, ptr nonnull readonly align 1 %invariant.gep, i64 %gepdiff.i.i.i, i1 false), !noalias !38 %arrayidx.i.i.i.i = getelementptr inbounds i8, ptr %call.i90.i.i.i, i64 %gepdiff.i.i.i store i8 0, ptr %arrayidx.i.i.i.i, align 1, !noalias !38 - %cur.1104.i.i.i = getelementptr inbounds i8, ptr %cur.0.ptr103.i.lcssa55.i.i, i64 1 + %cur.1104.i.i.i = getelementptr inbounds i8, ptr %cur.0.ptr103.i.lcssa.i.i, i64 1 %cmp44.not105.i.i.i = icmp eq ptr %cur.1104.i.i.i, %add.ptr.ptr.i.i.i br i1 %cmp44.not105.i.i.i, label %do.body54.i.i.i, label %land.rhs45.preheader.i.i.i @@ -1727,7 +1727,7 @@ land.rhs45.preheader.i.i.i: ; preds = %_ZL7buf2strPvm.exit land.rhs45.i.i.i: ; preds = %while.body51.i.i.i, %land.rhs45.preheader.i.i.i %cur.1107.i.i.i = phi ptr [ %cur.1.i.i.i, %while.body51.i.i.i ], [ %cur.1104.i.i.i, %land.rhs45.preheader.i.i.i ] - %cur.0.ptr.pn106.i.i.i = phi ptr [ %cur.1107.i.i.i, %while.body51.i.i.i ], [ %cur.0.ptr103.i.lcssa55.i.i, %land.rhs45.preheader.i.i.i ] + %cur.0.ptr.pn106.i.i.i = phi ptr [ %cur.1107.i.i.i, %while.body51.i.i.i ], [ %cur.0.ptr103.i.lcssa.i.i, %land.rhs45.preheader.i.i.i ] %151 = load i8, ptr %cur.1107.i.i.i, align 1, !noalias !38 switch i8 %151, label %do.body54.i.i.i [ i8 32, label %while.body51.i.i.i @@ -1740,7 +1740,7 @@ while.body51.i.i.i: ; preds = %land.rhs45.i.i.i, % br i1 %cmp44.not.i.i.i, label %do.body54.i.i.i, label %land.rhs45.i.i.i, !llvm.loop !40 do.body54.i.i.i: ; preds = %while.body51.i.i.i, %land.rhs45.i.i.i, %_ZL7buf2strPvm.exit.i.i.i - %cur.0.ptr.pn.lcssa.i.i.i = phi ptr [ %cur.0.ptr103.i.lcssa55.i.i, %_ZL7buf2strPvm.exit.i.i.i ], [ %scevgep.i.i.i, %while.body51.i.i.i ], [ %cur.0.ptr.pn106.i.i.i, %land.rhs45.i.i.i ] + %cur.0.ptr.pn.lcssa.i.i.i = phi ptr [ %cur.0.ptr103.i.lcssa.i.i, %_ZL7buf2strPvm.exit.i.i.i ], [ %scevgep.i.i.i, %while.body51.i.i.i ], [ %cur.0.ptr.pn106.i.i.i, %land.rhs45.i.i.i ] %cur.1.lcssa.i.i.i = phi ptr [ %add.ptr.ptr.i.i.i, %_ZL7buf2strPvm.exit.i.i.i ], [ %add.ptr.ptr.i.i.i, %while.body51.i.i.i ], [ %cur.1107.i.i.i, %land.rhs45.i.i.i ] %sub.ptr.lhs.cast55.i.i.i = ptrtoint ptr %add.ptr.ptr.i.i.i to i64 %sub.ptr.rhs.cast56.i.i.i = ptrtoint ptr %cur.1.lcssa.i.i.i to i64 diff --git a/bench/hyperscan/optimized/ng_prefilter.cpp.ll b/bench/hyperscan/optimized/ng_prefilter.cpp.ll index 307a15ffd65..99164bae32c 100644 --- a/bench/hyperscan/optimized/ng_prefilter.cpp.ll +++ b/bench/hyperscan/optimized/ng_prefilter.cpp.ll @@ -6103,11 +6103,11 @@ _ZNSt11_Deque_baseIN3ue212_GLOBAL__N_110RegionInfoESaIS2_EE15_M_allocate_mapEm.e to label %invoke.cont.i unwind label %_ZNSt11_Deque_baseIN3ue212_GLOBAL__N_110RegionInfoESaIS2_EE16_M_destroy_nodesEPPS2_S6_.exit.i invoke.cont.i: ; preds = %_ZNSt11_Deque_baseIN3ue212_GLOBAL__N_110RegionInfoESaIS2_EE15_M_allocate_mapEm.exit - %add.ptr.ptr = getelementptr inbounds i8, ptr %call5.i.i2.i, i64 24 - store ptr %call5.i.i.i5.i, ptr %add.ptr.ptr, align 8 + %__cur.03.i.ptr = getelementptr inbounds i8, ptr %call5.i.i2.i, i64 24 + store ptr %call5.i.i.i5.i, ptr %__cur.03.i.ptr, align 8 %_M_start = getelementptr inbounds i8, ptr %this, i64 16 %_M_node.i = getelementptr inbounds i8, ptr %this, i64 40 - store ptr %add.ptr.ptr, ptr %_M_node.i, align 8 + store ptr %__cur.03.i.ptr, ptr %_M_node.i, align 8 %_M_first.i = getelementptr inbounds i8, ptr %this, i64 24 store ptr %call5.i.i.i5.i, ptr %_M_first.i, align 8 %add.ptr.i = getelementptr inbounds i8, ptr %call5.i.i.i5.i, i64 408 @@ -6115,7 +6115,7 @@ invoke.cont.i: ; preds = %_ZNSt11_Deque_baseI store ptr %add.ptr.i, ptr %_M_last.i, align 8 %_M_finish = getelementptr inbounds i8, ptr %this, i64 48 %_M_node.i10 = getelementptr inbounds i8, ptr %this, i64 72 - store ptr %add.ptr.ptr, ptr %_M_node.i10, align 8 + store ptr %__cur.03.i.ptr, ptr %_M_node.i10, align 8 %_M_first.i11 = getelementptr inbounds i8, ptr %this, i64 56 store ptr %call5.i.i.i5.i, ptr %_M_first.i11, align 8 %_M_last.i13 = getelementptr inbounds i8, ptr %this, i64 64 diff --git a/bench/icu/optimized/number_decimalquantity.ll b/bench/icu/optimized/number_decimalquantity.ll index ab64dd0d66f..f8493637f25 100644 --- a/bench/icu/optimized/number_decimalquantity.ll +++ b/bench/icu/optimized/number_decimalquantity.ll @@ -82,7 +82,6 @@ $_ZTIN6icu_757UMemoryE = comdat any @.str.8 = private unnamed_addr constant [45 x i16] [i16 76, i16 101, i16 97, i16 115, i16 116, i16 32, i16 115, i16 105, i16 103, i16 110, i16 105, i16 102, i16 105, i16 99, i16 97, i16 110, i16 116, i16 32, i16 100, i16 105, i16 103, i16 105, i16 116, i16 32, i16 105, i16 115, i16 32, i16 122, i16 101, i16 114, i16 111, i16 32, i16 105, i16 110, i16 32, i16 108, i16 111, i16 110, i16 103, i16 32, i16 109, i16 111, i16 100, i16 101, i16 0], align 2 @.str.9 = private unnamed_addr constant [33 x i16] [i16 68, i16 105, i16 103, i16 105, i16 116, i16 32, i16 101, i16 120, i16 99, i16 101, i16 101, i16 100, i16 105, i16 110, i16 103, i16 32, i16 49, i16 48, i16 32, i16 105, i16 110, i16 32, i16 98, i16 121, i16 116, i16 101, i16 32, i16 97, i16 114, i16 114, i16 97, i16 121, i16 0], align 2 @.str.10 = private unnamed_addr constant [28 x i16] [i16 68, i16 105, i16 103, i16 105, i16 116, i16 32, i16 98, i16 101, i16 108, i16 111, i16 119, i16 32, i16 48, i16 32, i16 105, i16 110, i16 32, i16 98, i16 121, i16 116, i16 101, i16 32, i16 97, i16 114, i16 114, i16 97, i16 121, i16 0], align 2 -@.str.11 = private unnamed_addr constant [46 x i16] [i16 78, i16 111, i16 110, i16 122, i16 101, i16 114, i16 111, i16 32, i16 100, i16 105, i16 103, i16 105, i16 116, i16 115, i16 32, i16 111, i16 117, i16 116, i16 115, i16 105, i16 100, i16 101, i16 32, i16 111, i16 102, i16 32, i16 114, i16 97, i16 110, i16 103, i16 101, i16 32, i16 105, i16 110, i16 32, i16 98, i16 121, i16 116, i16 101, i16 32, i16 97, i16 114, i16 114, i16 97, i16 121, i16 0], align 2 @.str.12 = private unnamed_addr constant [47 x i16] [i16 86, i16 97, i16 108, i16 117, i16 101, i16 32, i16 105, i16 110, i16 32, i16 98, i16 99, i16 100, i16 76, i16 111, i16 110, i16 103, i16 32, i16 101, i16 118, i16 101, i16 110, i16 32, i16 116, i16 104, i16 111, i16 117, i16 103, i16 104, i16 32, i16 112, i16 114, i16 101, i16 99, i16 105, i16 115, i16 105, i16 111, i16 110, i16 32, i16 105, i16 115, i16 32, i16 122, i16 101, i16 114, i16 111, i16 0], align 2 @.str.13 = private unnamed_addr constant [33 x i16] [i16 80, i16 114, i16 101, i16 99, i16 105, i16 115, i16 105, i16 111, i16 110, i16 32, i16 101, i16 120, i16 99, i16 101, i16 101, i16 100, i16 115, i16 32, i16 108, i16 101, i16 110, i16 103, i16 116, i16 104, i16 32, i16 111, i16 102, i16 32, i16 108, i16 111, i16 110, i16 103, i16 0], align 2 @.str.14 = private unnamed_addr constant [44 x i16] [i16 77, i16 111, i16 115, i16 116, i16 32, i16 115, i16 105, i16 103, i16 110, i16 105, i16 102, i16 105, i16 99, i16 97, i16 110, i16 116, i16 32, i16 100, i16 105, i16 103, i16 105, i16 116, i16 32, i16 105, i16 115, i16 32, i16 122, i16 101, i16 114, i16 111, i16 32, i16 105, i16 110, i16 32, i16 108, i16 111, i16 110, i16 103, i16 32, i16 109, i16 111, i16 100, i16 101, i16 0], align 2 @@ -7307,17 +7306,13 @@ _ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit31: ; preds = %_ZNK6 br i1 %cmp13, label %return, label %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit52 for.cond: ; preds = %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit73 - %indvars.iv.next242 = add nuw nsw i64 %indvars.iv241, 1 - %exitcond245.not = icmp eq i64 %indvars.iv.next242, %4 - br i1 %exitcond245.not, label %for.cond30.preheader, label %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit52, !llvm.loop !40 - -for.cond30.preheader: ; preds = %for.cond - %cmp31229 = icmp slt i32 %1, %2 - br i1 %cmp31229, label %if.then.i85, label %return + %indvars.iv.next237 = add nuw nsw i64 %indvars.iv236, 1 + %exitcond240.not = icmp eq i64 %indvars.iv.next237, %4 + br i1 %exitcond240.not, label %return, label %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit52, !llvm.loop !40 _ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit52: ; preds = %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit31, %for.cond - %indvars.iv241 = phi i64 [ %indvars.iv.next242, %for.cond ], [ 0, %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit31 ] - %arrayidx.i51 = getelementptr inbounds i8, ptr %3, i64 %indvars.iv241 + %indvars.iv236 = phi i64 [ %indvars.iv.next237, %for.cond ], [ 0, %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit31 ] + %arrayidx.i51 = getelementptr inbounds i8, ptr %3, i64 %indvars.iv236 %8 = load i8, ptr %arrayidx.i51, align 1 %cmp20 = icmp sgt i8 %8, 9 br i1 %cmp20, label %return, label %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit73 @@ -7326,28 +7321,11 @@ _ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit73: ; preds = %_ZNK6 %cmp25 = icmp slt i8 %8, 0 br i1 %cmp25, label %return, label %for.cond -if.then.i85: ; preds = %for.cond30.preheader, %for.inc38 - %indvars.iv246 = phi i64 [ %indvars.iv.next247, %for.inc38 ], [ %4, %for.cond30.preheader ] - %or.cond6.i89 = icmp ult i64 %indvars.iv246, %4 - br i1 %or.cond6.i89, label %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit94, label %for.inc38 - -_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit94: ; preds = %if.then.i85 - %arrayidx.i93 = getelementptr inbounds i8, ptr %3, i64 %indvars.iv246 - %9 = load i8, ptr %arrayidx.i93, align 1 - %cmp35.not = icmp eq i8 %9, 0 - br i1 %cmp35.not, label %for.inc38, label %return - -for.inc38: ; preds = %if.then.i85, %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit94 - %indvars.iv.next247 = add nuw nsw i64 %indvars.iv246, 1 - %10 = trunc nuw i64 %indvars.iv.next247 to i32 - %cmp31 = icmp sgt i32 %2, %10 - br i1 %cmp31, label %if.then.i85, label %return, !llvm.loop !41 - if.else: ; preds = %entry %cmp42 = icmp ne i32 %1, 0 %fBCD43 = getelementptr inbounds i8, ptr %this, i64 48 - %11 = load i64, ptr %fBCD43, align 8 - %cmp44.not = icmp eq i64 %11, 0 + %9 = load i64, ptr %fBCD43, align 8 + %cmp44.not = icmp eq i64 %9, 0 %or.cond = select i1 %cmp42, i1 true, i1 %cmp44.not br i1 %or.cond, label %if.end46, label %return @@ -7367,13 +7345,13 @@ if.else.i97: ; preds = %if.end50 _ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit115: ; preds = %if.else.i97 %mul.i101 = shl nuw nsw i32 %sub55, 2 %sh_prom.i102 = zext nneg i32 %mul.i101 to i64 - %12 = shl nuw i64 15, %sh_prom.i102 - %13 = and i64 %12, %11 - %cmp58 = icmp eq i64 %13, 0 + %10 = shl nuw i64 15, %sh_prom.i102 + %11 = and i64 %10, %9 + %cmp58 = icmp eq i64 %11, 0 br i1 %cmp58, label %return, label %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit131 _ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit131: ; preds = %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit115 - %conv.i122214 = and i64 %11, 15 + %conv.i122214 = and i64 %9, 15 %cmp66 = icmp eq i64 %conv.i122214, 0 br i1 %cmp66, label %return, label %if.else.i134.preheader @@ -7395,8 +7373,8 @@ if.else.i134: ; preds = %if.else.i134.prehea br i1 %or.cond.i135, label %for.inc84, label %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit152 _ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit152: ; preds = %if.else.i134 - %14 = shl nuw nsw i64 %indvars.iv, 2 - %shr.i140 = lshr i64 %11, %14 + %12 = shl nuw nsw i64 %indvars.iv, 2 + %shr.i140 = lshr i64 %9, %12 %conv.i141216 = and i64 %shr.i140, 14 %cmp76 = icmp ugt i64 %conv.i141216, 9 br i1 %cmp76, label %return, label %for.inc84 @@ -7404,7 +7382,7 @@ _ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit152: ; preds = %if.e for.inc84: ; preds = %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit152, %if.else.i134 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond.not, label %for.cond89.preheader, label %if.else.i134, !llvm.loop !42 + br i1 %exitcond.not, label %for.cond89.preheader, label %if.else.i134, !llvm.loop !41 if.else.i176: ; preds = %if.else.i176.preheader, %for.inc97 %i87.0225 = phi i32 [ %inc98, %for.inc97 ], [ %1, %if.else.i176.preheader ] @@ -7414,18 +7392,18 @@ if.else.i176: ; preds = %if.else.i176.prehea _ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit194: ; preds = %if.else.i176 %mul.i180 = shl nuw nsw i32 %i87.0225, 2 %sh_prom.i181 = zext nneg i32 %mul.i180 to i64 - %15 = shl nuw i64 15, %sh_prom.i181 - %16 = and i64 %15, %11 - %cmp94.not = icmp eq i64 %16, 0 + %13 = shl nuw i64 15, %sh_prom.i181 + %14 = and i64 %13, %9 + %cmp94.not = icmp eq i64 %14, 0 br i1 %cmp94.not, label %for.inc97, label %return for.inc97: ; preds = %if.else.i176, %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit194 %inc98 = add i32 %i87.0225, 1 - %exitcond240.not = icmp eq i32 %i87.0225, %smax - br i1 %exitcond240.not, label %return, label %if.else.i176, !llvm.loop !43 + %exitcond235.not = icmp eq i32 %i87.0225, %smax + br i1 %exitcond235.not, label %return, label %if.else.i176, !llvm.loop !42 -return: ; preds = %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit152, %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit194, %for.inc97, %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit73, %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit52, %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit94, %for.inc38, %for.cond89.preheader, %for.cond30.preheader, %if.else.i97, %if.then.i, %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit131, %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit115, %if.end46, %if.else, %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit31, %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit, %if.end, %if.then - %retval.0 = phi ptr [ @.str.5, %if.then ], [ @.str.6, %if.end ], [ @.str.7, %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit ], [ @.str.8, %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit31 ], [ @.str.12, %if.else ], [ @.str.13, %if.end46 ], [ @.str.14, %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit115 ], [ @.str.8, %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit131 ], [ @.str.7, %if.then.i ], [ @.str.14, %if.else.i97 ], [ null, %for.cond30.preheader ], [ null, %for.cond89.preheader ], [ @.str.11, %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit94 ], [ null, %for.inc38 ], [ @.str.10, %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit73 ], [ @.str.9, %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit52 ], [ @.str.17, %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit194 ], [ null, %for.inc97 ], [ @.str.15, %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit152 ] +return: ; preds = %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit152, %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit194, %for.inc97, %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit73, %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit52, %for.cond, %for.cond89.preheader, %if.else.i97, %if.then.i, %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit131, %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit115, %if.end46, %if.else, %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit31, %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit, %if.end, %if.then + %retval.0 = phi ptr [ @.str.5, %if.then ], [ @.str.6, %if.end ], [ @.str.7, %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit ], [ @.str.8, %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit31 ], [ @.str.12, %if.else ], [ @.str.13, %if.end46 ], [ @.str.14, %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit115 ], [ @.str.8, %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit131 ], [ @.str.7, %if.then.i ], [ @.str.14, %if.else.i97 ], [ null, %for.cond89.preheader ], [ @.str.10, %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit73 ], [ @.str.9, %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit52 ], [ null, %for.cond ], [ @.str.17, %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit194 ], [ null, %for.inc97 ], [ @.str.15, %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit152 ] ret ptr %retval.0 } @@ -7550,7 +7528,7 @@ _ZNK6icu_756number4impl15DecimalQuantity8getDigitEi.exit37.us.us: ; preds = %for %retval.0.i.i.us.us71 = phi i8 [ %21, %if.end.i.i33.us.us ], [ 0, %for.body.us.us ] %retval.0.i.i27.us.us = phi i8 [ %22, %if.end.i.i33.us.us ], [ 0, %for.body.us.us ] %cmp38.not.us.us = icmp eq i8 %retval.0.i.i.us.us71, %retval.0.i.i27.us.us - br i1 %cmp38.not.us.us, label %for.cond.us.us, label %return, !llvm.loop !44 + br i1 %cmp38.not.us.us, label %for.cond.us.us, label %return, !llvm.loop !43 for.cond.us: ; preds = %if.else31.split.us, %_ZNK6icu_756number4impl15DecimalQuantity8getDigitEi.exit.us %m.0.in.us = phi i32 [ %m.0.us, %_ZNK6icu_756number4impl15DecimalQuantity8getDigitEi.exit.us ], [ %.add.i, %if.else31.split.us ] @@ -7581,7 +7559,7 @@ _ZNK6icu_756number4impl15DecimalQuantity8getDigitEi.exit.us: ; preds = %if.end.i %conv.i.i26.us = and i8 %24, 15 %retval.0.i.i27.us = select i1 %or.cond.i.i20.us, i8 0, i8 %conv.i.i26.us %cmp38.not.us = icmp eq i8 %retval.0.i.i.us, %retval.0.i.i27.us - br i1 %cmp38.not.us, label %for.cond.us, label %return, !llvm.loop !44 + br i1 %cmp38.not.us, label %for.cond.us, label %return, !llvm.loop !43 if.else31.split: ; preds = %if.else31 br i1 %tobool.i.i18, label %for.cond.us38, label %for.cond.preheader @@ -7619,7 +7597,7 @@ if.end.i.i33.us51: ; preds = %for.body.us42 _ZNK6icu_756number4impl15DecimalQuantity8getDigitEi.exit37.us54: ; preds = %if.end.i.i33.us51, %for.body.us42 %retval.0.i.i27.us55 = phi i8 [ %26, %if.end.i.i33.us51 ], [ 0, %for.body.us42 ] %cmp38.not.us56 = icmp eq i8 %retval.0.i.i.us45, %retval.0.i.i27.us55 - br i1 %cmp38.not.us56, label %for.cond.us38, label %return, !llvm.loop !44 + br i1 %cmp38.not.us56, label %for.cond.us38, label %return, !llvm.loop !43 for.cond: ; preds = %for.cond.preheader, %for.body %m.0.in = phi i32 [ %m.0, %for.body ], [ %.add.i, %for.cond.preheader ] @@ -7636,7 +7614,7 @@ for.body: ; preds = %for.cond %28 = and i64 %shr.i.i69, %27 %29 = icmp eq i64 %28, 0 %cmp38.not = select i1 %or.cond.i.i, i1 true, i1 %29 - br i1 %cmp38.not, label %for.cond, label %return, !llvm.loop !44 + br i1 %cmp38.not, label %for.cond, label %return, !llvm.loop !43 return: ; preds = %for.cond, %for.body, %for.cond.us38, %_ZNK6icu_756number4impl15DecimalQuantity8getDigitEi.exit37.us54, %for.cond.us, %_ZNK6icu_756number4impl15DecimalQuantity8getDigitEi.exit.us, %for.cond.us.us, %_ZNK6icu_756number4impl15DecimalQuantity8getDigitEi.exit37.us.us, %land.lhs.true12, %land.lhs.true9, %land.lhs.true5, %land.lhs.true, %entry, %if.end, %land.rhs, %if.then24 %retval.0 = phi i1 [ %16, %if.then24 ], [ false, %land.rhs ], [ true, %if.end ], [ false, %entry ], [ false, %land.lhs.true ], [ false, %land.lhs.true5 ], [ false, %land.lhs.true9 ], [ false, %land.lhs.true12 ], [ %cmp33.not.not.us.us.not.not, %_ZNK6icu_756number4impl15DecimalQuantity8getDigitEi.exit37.us.us ], [ %cmp33.not.not.us.us.not.not, %for.cond.us.us ], [ %cmp33.not.not.us.not.not, %_ZNK6icu_756number4impl15DecimalQuantity8getDigitEi.exit.us ], [ %cmp33.not.not.us.not.not, %for.cond.us ], [ %cmp33.not.not.us41.not.not, %_ZNK6icu_756number4impl15DecimalQuantity8getDigitEi.exit37.us54 ], [ %cmp33.not.not.us41.not.not, %for.cond.us38 ], [ %cmp33.not.not.not.not, %for.body ], [ %cmp33.not.not.not.not, %for.cond ] @@ -7760,7 +7738,7 @@ _ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit: ; preds = %if.then %15 = load i32, ptr %precision, align 8 %16 = sext i32 %15 to i64 %cmp = icmp slt i64 %indvars.iv.next, %16 - br i1 %cmp, label %for.body, label %for.end, !llvm.loop !45 + br i1 %cmp, label %for.body, label %for.end, !llvm.loop !44 for.end: ; preds = %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit, %_ZN6icu_7515MaybeStackArrayIcLi30EEC2Ei10UErrorCode.exit.for.end_crit_edge %conv13.pre-phi = phi i64 [ %.pre, %_ZN6icu_7515MaybeStackArrayIcLi30EEC2Ei10UErrorCode.exit.for.end_crit_edge ], [ %16, %_ZNK6icu_756number4impl15DecimalQuantity11getDigitPosEi.exit ] @@ -7951,4 +7929,3 @@ attributes #27 = { nounwind willreturn memory(none) } !42 = distinct !{!42, !5} !43 = distinct !{!43, !5} !44 = distinct !{!44, !5} -!45 = distinct !{!45, !5} diff --git a/bench/icu/optimized/utrie2_builder.ll b/bench/icu/optimized/utrie2_builder.ll index 202146cda59..20f2ca4c919 100644 --- a/bench/icu/optimized/utrie2_builder.ll +++ b/bench/icu/optimized/utrie2_builder.ll @@ -1277,11 +1277,11 @@ if.end12.i.i: ; preds = %for.body3.i.i %33 = load ptr, ptr %data.i.i, align 8 %sub.i.i.i = sub nsw i32 %newStart.0.ph128.i.i, %spec.select.i.i %cmp.not14.i.i.i = icmp slt i32 %sub.i.i.i, 0 - %.pre269.i = sext i32 %start.1103.i.i to i64 + %.pre268.i = sext i32 %start.1103.i.i to i64 br i1 %cmp.not14.i.i.i, label %land.rhs.lr.ph.i.i, label %for.body.lr.ph.i.i.i for.body.lr.ph.i.i.i: ; preds = %if.end12.i.i - %add.ptr2.i.i.i = getelementptr inbounds i32, ptr %33, i64 %.pre269.i + %add.ptr2.i.i.i = getelementptr inbounds i32, ptr %33, i64 %.pre268.i br label %for.body.i.i.i for.body.i.i.i: ; preds = %for.inc.i.i.i, %for.body.lr.ph.i.i.i @@ -1320,7 +1320,7 @@ _ZL17findSameDataBlockPKjiii.exit.i.i: ; preds = %_ZL12equal_uint32PK br label %for.body18.i.i land.rhs.lr.ph.i.i: ; preds = %if.end12.i.i, %for.inc.i.i.i - %add.ptr34.i.i = getelementptr inbounds i32, ptr %33, i64 %.pre269.i + %add.ptr34.i.i = getelementptr inbounds i32, ptr %33, i64 %.pre268.i %38 = zext nneg i32 %spec.select.i.i to i64 %39 = add nsw i64 %38, -4 %40 = sext i32 %newStart.0.ph128.i.i to i64 @@ -1635,17 +1635,13 @@ if.then27.i.i: ; preds = %while.body.i.i76.i %arrayidx32.i.i = getelementptr inbounds [34852 x i32], ptr %map.i.i, i64 0, i64 %idxprom31.i.i store i32 %sub28.i.i, ptr %arrayidx32.i.i, align 4 %add33.i.i = add i32 %.us-phi71.i.i, %74 - %cmp3674.i.i = icmp slt i64 %indvars.iv98.i.i, 64 - br i1 %cmp3674.i.i, label %if.then27.i.for.body37.preheader.i_crit_edge.i, label %if.end54.i.i - -if.then27.i.for.body37.preheader.i_crit_edge.i: ; preds = %if.then27.i.i - %.pre270.i = sext i32 %add33.i.i to i64 %77 = sub nsw i32 64, %74 + %.pre267.i = sext i32 %add33.i.i to i64 br label %for.body37.i.i.preheader -for.body37.i.i.preheader: ; preds = %if.then27.i.for.body37.preheader.i_crit_edge.i, %if.then27.thread.i.i - %indvars.iv107.i74.i.ph = phi i64 [ %idx.ext19.i.i, %if.then27.thread.i.i ], [ %.pre270.i, %if.then27.i.for.body37.preheader.i_crit_edge.i ] - %i.177.i.i.ph = phi i32 [ 64, %if.then27.thread.i.i ], [ %77, %if.then27.i.for.body37.preheader.i_crit_edge.i ] +for.body37.i.i.preheader: ; preds = %if.then27.i.i, %if.then27.thread.i.i + %indvars.iv107.i74.i.ph = phi i64 [ %idx.ext19.i.i, %if.then27.thread.i.i ], [ %.pre267.i, %if.then27.i.i ] + %i.177.i.i.ph = phi i32 [ 64, %if.then27.thread.i.i ], [ %77, %if.then27.i.i ] br label %for.body37.i.i for.body37.i.i: ; preds = %for.body37.i.i.preheader, %for.body37.i.i @@ -1672,9 +1668,9 @@ if.end54.loopexit.i.i: ; preds = %for.body37.i.i %80 = trunc nsw i64 %indvars.iv.next106.i.i to i32 br label %if.end54.i.i -if.end54.i.i: ; preds = %if.end54.loopexit.i.i, %if.else.i.i, %if.then27.i.i - %start.3.i72.i = phi i32 [ %add53.i.i, %if.else.i.i ], [ %add33.i.i, %if.then27.i.i ], [ %79, %if.end54.loopexit.i.i ] - %newStart.2.i73.i = phi i32 [ %add53.i.i, %if.else.i.i ], [ %newStart.0.ph82.i.i, %if.then27.i.i ], [ %80, %if.end54.loopexit.i.i ] +if.end54.i.i: ; preds = %if.end54.loopexit.i.i, %if.else.i.i + %start.3.i72.i = phi i32 [ %add53.i.i, %if.else.i.i ], [ %79, %if.end54.loopexit.i.i ] + %newStart.2.i73.i = phi i32 [ %add53.i.i, %if.else.i.i ], [ %80, %if.end54.loopexit.i.i ] %81 = load i32, ptr %index2Length.i.i, align 8 %cmp468.i.i = icmp slt i32 %start.3.i72.i, %81 br i1 %cmp468.i.i, label %for.body5.lr.ph.i.i, label %for.cond56.preheader.i.i, !llvm.loop !33 @@ -1732,9 +1728,9 @@ if.end14.i: ; preds = %_ZL13compactIndex2P %arrayidx.i = getelementptr inbounds i32, ptr %89, i64 %idxprom.i store i32 %highValue.099.i, ptr %arrayidx.i, align 4 %90 = load i32, ptr %dataLength.i.i, align 8 - %and16187.i = and i32 %90, 3 - %cmp17.not188.i = icmp eq i32 %and16187.i, 0 - br i1 %cmp17.not188.i, label %_ZL11compactTrieP6UTrie2P10UErrorCode.exit, label %while.body.lr.ph.i + %and16186.i = and i32 %90, 3 + %cmp17.not187.i = icmp eq i32 %and16186.i, 0 + br i1 %cmp17.not187.i, label %_ZL11compactTrieP6UTrie2P10UErrorCode.exit, label %while.body.lr.ph.i while.body.lr.ph.i: ; preds = %if.end14.i %initialValue18.i = getelementptr inbounds i8, ptr %trie, i64 36 @@ -1892,37 +1888,37 @@ for.cond93.preheader: ; preds = %for.body br label %for.body95 for.body: ; preds = %if.end68, %for.body - %p.0204 = phi ptr [ %index2, %if.end68 ], [ %incdec.ptr, %for.body ] - %dest16.0203 = phi ptr [ %add.ptr, %if.end68 ], [ %incdec.ptr92, %for.body ] - %i.0202 = phi i32 [ 2080, %if.end68 ], [ %dec, %for.body ] - %incdec.ptr = getelementptr inbounds i8, ptr %p.0204, i64 4 - %107 = load i32, ptr %p.0204, align 4 + %p.0203 = phi ptr [ %index2, %if.end68 ], [ %incdec.ptr, %for.body ] + %dest16.0202 = phi ptr [ %add.ptr, %if.end68 ], [ %incdec.ptr92, %for.body ] + %i.0201 = phi i32 [ 2080, %if.end68 ], [ %dec, %for.body ] + %incdec.ptr = getelementptr inbounds i8, ptr %p.0203, i64 4 + %107 = load i32, ptr %p.0203, align 4 %add89 = add i32 %107, %allIndexesLength.0.122 %shr90 = lshr i32 %add89, 2 %conv91 = trunc i32 %shr90 to i16 - %incdec.ptr92 = getelementptr inbounds i8, ptr %dest16.0203, i64 2 - store i16 %conv91, ptr %dest16.0203, align 2 - %dec = add nsw i32 %i.0202, -1 - %cmp88 = icmp ugt i32 %i.0202, 1 + %incdec.ptr92 = getelementptr inbounds i8, ptr %dest16.0202, i64 2 + store i16 %conv91, ptr %dest16.0202, align 2 + %dec = add nsw i32 %i.0201, -1 + %cmp88 = icmp ugt i32 %i.0201, 1 br i1 %cmp88, label %for.body, label %for.cond93.preheader, !llvm.loop !39 for.body95: ; preds = %for.cond93.preheader, %for.body95 - %dest16.1206 = phi ptr [ %incdec.ptr92, %for.cond93.preheader ], [ %incdec.ptr98, %for.body95 ] + %dest16.1205 = phi ptr [ %incdec.ptr92, %for.cond93.preheader ], [ %incdec.ptr98, %for.body95 ] %cmp94 = phi i1 [ true, %for.cond93.preheader ], [ false, %for.body95 ] - %incdec.ptr98 = getelementptr inbounds i8, ptr %dest16.1206, i64 2 - store i16 %conv97, ptr %dest16.1206, align 2 + %incdec.ptr98 = getelementptr inbounds i8, ptr %dest16.1205, i64 2 + store i16 %conv97, ptr %dest16.1205, align 2 br i1 %cmp94, label %for.body95, label %for.body103, !llvm.loop !40 for.body103: ; preds = %for.body95, %for.body103 %indvars.iv = phi i64 [ %indvars.iv.next, %for.body103 ], [ 2, %for.body95 ] - %dest16.2208 = phi ptr [ %incdec.ptr107, %for.body103 ], [ %incdec.ptr98, %for.body95 ] + %dest16.2207 = phi ptr [ %incdec.ptr107, %for.body103 ], [ %incdec.ptr98, %for.body95 ] %108 = shl nuw nsw i64 %indvars.iv, 1 %arrayidx = getelementptr inbounds [35488 x i32], ptr %index2, i64 0, i64 %108 %109 = load i32, ptr %arrayidx, align 4 %add105 = add nsw i32 %109, %allIndexesLength.0.122 %conv106 = trunc i32 %add105 to i16 - %incdec.ptr107 = getelementptr inbounds i8, ptr %dest16.2208, i64 2 - store i16 %conv106, ptr %dest16.2208, align 2 + %incdec.ptr107 = getelementptr inbounds i8, ptr %dest16.2207, i64 2 + store i16 %conv106, ptr %dest16.2207, align 2 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 32 br i1 %exitcond.not, label %for.end110, label %for.body103, !llvm.loop !41 @@ -1935,24 +1931,24 @@ if.then112: ; preds = %for.end110 %sub113 = add nsw i32 %96, -65536 %shr114 = lshr i32 %sub113, 11 %add115 = add nuw nsw i32 %shr114, 2112 - %cmp119209.not = icmp ult i32 %sub113, 2048 - br i1 %cmp119209.not, label %for.end127, label %for.body120.preheader + %cmp119208.not = icmp ult i32 %sub113, 2048 + br i1 %cmp119208.not, label %for.end127, label %for.body120.preheader for.body120.preheader: ; preds = %if.then112 %add.ptr117 = getelementptr inbounds i8, ptr %2, i64 128 br label %for.body120 for.body120: ; preds = %for.body120.preheader, %for.body120 - %p.1212 = phi ptr [ %incdec.ptr121, %for.body120 ], [ %add.ptr117, %for.body120.preheader ] - %dest16.4211 = phi ptr [ %incdec.ptr124, %for.body120 ], [ %incdec.ptr107, %for.body120.preheader ] - %i.3210 = phi i32 [ %dec126, %for.body120 ], [ %shr114, %for.body120.preheader ] - %incdec.ptr121 = getelementptr inbounds i8, ptr %p.1212, i64 4 - %110 = load i32, ptr %p.1212, align 4 + %p.1211 = phi ptr [ %incdec.ptr121, %for.body120 ], [ %add.ptr117, %for.body120.preheader ] + %dest16.4210 = phi ptr [ %incdec.ptr124, %for.body120 ], [ %incdec.ptr107, %for.body120.preheader ] + %i.3209 = phi i32 [ %dec126, %for.body120 ], [ %shr114, %for.body120.preheader ] + %incdec.ptr121 = getelementptr inbounds i8, ptr %p.1211, i64 4 + %110 = load i32, ptr %p.1211, align 4 %conv123 = trunc i32 %110 to i16 - %incdec.ptr124 = getelementptr inbounds i8, ptr %dest16.4211, i64 2 - store i16 %conv123, ptr %dest16.4211, align 2 - %dec126 = add nsw i32 %i.3210, -1 - %cmp119 = icmp ugt i32 %i.3210, 1 + %incdec.ptr124 = getelementptr inbounds i8, ptr %dest16.4210, i64 2 + store i16 %conv123, ptr %dest16.4210, align 2 + %dec126 = add nsw i32 %i.3209, -1 + %cmp119 = icmp ugt i32 %i.3209, 1 br i1 %cmp119, label %for.body120, label %for.end127, !llvm.loop !42 for.end127: ; preds = %for.body120, %if.then112 @@ -1960,8 +1956,8 @@ for.end127: ; preds = %for.body120, %if.th %index2Length131 = getelementptr inbounds i8, ptr %2, i64 144144 %111 = load i32, ptr %index2Length131, align 8 %sub132 = sub nsw i32 %111, %add115 - %cmp134213 = icmp sgt i32 %sub132, 0 - br i1 %cmp134213, label %for.body135.preheader, label %if.end144 + %cmp134212 = icmp sgt i32 %sub132, 0 + br i1 %cmp134212, label %for.body135.preheader, label %if.end144 for.body135.preheader: ; preds = %for.end127 %idx.ext = zext nneg i32 %add115 to i64 @@ -1969,18 +1965,18 @@ for.body135.preheader: ; preds = %for.end127 br label %for.body135 for.body135: ; preds = %for.body135.preheader, %for.body135 - %p.2216 = phi ptr [ %incdec.ptr136, %for.body135 ], [ %add.ptr130, %for.body135.preheader ] - %dest16.5215 = phi ptr [ %incdec.ptr140, %for.body135 ], [ %dest16.4.lcssa, %for.body135.preheader ] - %i.4214 = phi i32 [ %dec142, %for.body135 ], [ %sub132, %for.body135.preheader ] - %incdec.ptr136 = getelementptr inbounds i8, ptr %p.2216, i64 4 - %112 = load i32, ptr %p.2216, align 4 + %p.2215 = phi ptr [ %incdec.ptr136, %for.body135 ], [ %add.ptr130, %for.body135.preheader ] + %dest16.5214 = phi ptr [ %incdec.ptr140, %for.body135 ], [ %dest16.4.lcssa, %for.body135.preheader ] + %i.4213 = phi i32 [ %dec142, %for.body135 ], [ %sub132, %for.body135.preheader ] + %incdec.ptr136 = getelementptr inbounds i8, ptr %p.2215, i64 4 + %112 = load i32, ptr %p.2215, align 4 %add137 = add i32 %112, %allIndexesLength.0.122 %shr138 = lshr i32 %add137, 2 %conv139 = trunc i32 %shr138 to i16 - %incdec.ptr140 = getelementptr inbounds i8, ptr %dest16.5215, i64 2 - store i16 %conv139, ptr %dest16.5215, align 2 - %dec142 = add nsw i32 %i.4214, -1 - %cmp134 = icmp ugt i32 %i.4214, 1 + %incdec.ptr140 = getelementptr inbounds i8, ptr %dest16.5214, i64 2 + store i16 %conv139, ptr %dest16.5214, align 2 + %dec142 = add nsw i32 %i.4213, -1 + %cmp134 = icmp ugt i32 %i.4213, 1 br i1 %cmp134, label %for.body135, label %if.end144, !llvm.loop !43 if.end144: ; preds = %for.body135, %for.end127, %for.end110 @@ -1994,8 +1990,8 @@ sw.bb: ; preds = %if.end144 store ptr %dest16.3, ptr %data16157, align 8 store ptr null, ptr %data32158, align 8 %113 = load i32, ptr %dataLength, align 8 - %cmp148218 = icmp sgt i32 %113, 0 - br i1 %cmp148218, label %for.body149.preheader, label %sw.epilog + %cmp148217 = icmp sgt i32 %113, 0 + br i1 %cmp148217, label %for.body149.preheader, label %sw.epilog for.body149.preheader: ; preds = %sw.bb %data = getelementptr inbounds i8, ptr %2, i64 144128 @@ -2003,16 +1999,16 @@ for.body149.preheader: ; preds = %sw.bb br label %for.body149 for.body149: ; preds = %for.body149.preheader, %for.body149 - %p.3221 = phi ptr [ %incdec.ptr150, %for.body149 ], [ %114, %for.body149.preheader ] - %dest16.6220 = phi ptr [ %incdec.ptr152, %for.body149 ], [ %dest16.3, %for.body149.preheader ] - %i.5219 = phi i32 [ %dec154, %for.body149 ], [ %113, %for.body149.preheader ] - %incdec.ptr150 = getelementptr inbounds i8, ptr %p.3221, i64 4 - %115 = load i32, ptr %p.3221, align 4 + %p.3220 = phi ptr [ %incdec.ptr150, %for.body149 ], [ %114, %for.body149.preheader ] + %dest16.6219 = phi ptr [ %incdec.ptr152, %for.body149 ], [ %dest16.3, %for.body149.preheader ] + %i.5218 = phi i32 [ %dec154, %for.body149 ], [ %113, %for.body149.preheader ] + %incdec.ptr150 = getelementptr inbounds i8, ptr %p.3220, i64 4 + %115 = load i32, ptr %p.3220, align 4 %conv151 = trunc i32 %115 to i16 - %incdec.ptr152 = getelementptr inbounds i8, ptr %dest16.6220, i64 2 - store i16 %conv151, ptr %dest16.6220, align 2 - %dec154 = add nsw i32 %i.5219, -1 - %cmp148 = icmp ugt i32 %i.5219, 1 + %incdec.ptr152 = getelementptr inbounds i8, ptr %dest16.6219, i64 2 + store i16 %conv151, ptr %dest16.6219, align 2 + %dec154 = add nsw i32 %i.5218, -1 + %cmp148 = icmp ugt i32 %i.5218, 1 br i1 %cmp148, label %for.body149, label %sw.epilog, !llvm.loop !44 sw.bb156: ; preds = %if.end144 diff --git a/bench/libphonenumber/optimized/phonenumberutil.cc.ll b/bench/libphonenumber/optimized/phonenumberutil.cc.ll index 6b9101c0e53..d0a58e2c59d 100644 --- a/bench/libphonenumber/optimized/phonenumberutil.cc.ll +++ b/bench/libphonenumber/optimized/phonenumberutil.cc.ll @@ -25888,7 +25888,7 @@ _ZSt8distanceISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stri %13 = sub i64 %11, %12 %14 = ashr exact i64 %13, 4 %.not.not = icmp ugt i64 %14, %.06.i.i - br i1 %.not.not, label %15, label %75 + br i1 %.not.not, label %15, label %72 15: ; preds = %_ZSt8distanceISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEENSt15iterator_traitsIT_E15difference_typeESG_SG_.exit %16 = ptrtoint ptr %1 to i64 @@ -25961,7 +25961,8 @@ _ZSt22__uninitialized_move_aIPSt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt1 .preheader7.i.i: ; preds = %46 %.not9.i.i = icmp eq ptr %10, %1 - br i1 %.not9.i.i, label %_ZSt7advanceISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEmEvRT_T0_.exit, label %.lr.ph.i.i55 + tail call void @llvm.assume(i1 %.not9.i.i) + br label %_ZSt7advanceISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEmEvRT_T0_.exit .preheader.i.i: ; preds = %46, %.preheader.i.i %.012.i.i = phi i64 [ %49, %.preheader.i.i ], [ %18, %46 ] @@ -25971,168 +25972,160 @@ _ZSt22__uninitialized_move_aIPSt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt1 %.not6.i.i = icmp eq i64 %49, 0 br i1 %.not6.i.i, label %_ZSt7advanceISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEmEvRT_T0_.exit, label %.preheader.i.i, !llvm.loop !361 -.lr.ph.i.i55: ; preds = %.preheader7.i.i, %.lr.ph.i.i55 - %.110.i.i = phi i64 [ %52, %.lr.ph.i.i55 ], [ %18, %.preheader7.i.i ] - %51 = phi ptr [ %53, %.lr.ph.i.i55 ], [ %2, %.preheader7.i.i ] - %52 = add nsw i64 %.110.i.i, 1 - %53 = tail call noundef ptr @_ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base(ptr noundef %51) #31 - %.not.i.i56 = icmp eq i64 %52, 0 - br i1 %.not.i.i56, label %_ZSt7advanceISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEmEvRT_T0_.exit, label %.lr.ph.i.i55, !llvm.loop !362 - -_ZSt7advanceISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEmEvRT_T0_.exit: ; preds = %.lr.ph.i.i55, %.preheader.i.i, %.preheader7.i.i - %.sroa.0.0 = phi ptr [ %2, %.preheader7.i.i ], [ %50, %.preheader.i.i ], [ %53, %.lr.ph.i.i55 ] +_ZSt7advanceISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEmEvRT_T0_.exit: ; preds = %.preheader.i.i, %.preheader7.i.i + %.sroa.0.0 = phi ptr [ %2, %.preheader7.i.i ], [ %50, %.preheader.i.i ] %.not11.i.i.i.i = icmp eq ptr %.sroa.0.0, %3 br i1 %.not11.i.i.i.i, label %_ZSt22__uninitialized_copy_aISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEPS1_IiSC_ESF_ET0_T_SI_SH_RSaIT1_E.exit, label %.lr.ph.i.i.i.i .lr.ph.i.i.i.i: ; preds = %_ZSt7advanceISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEmEvRT_T0_.exit, %.lr.ph.i.i.i.i - %.013.i.i.i.i = phi ptr [ %60, %.lr.ph.i.i.i.i ], [ %10, %_ZSt7advanceISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEmEvRT_T0_.exit ] - %.sroa.08.012.i.i.i.i = phi ptr [ %59, %.lr.ph.i.i.i.i ], [ %.sroa.0.0, %_ZSt7advanceISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEmEvRT_T0_.exit ] - %54 = getelementptr inbounds i8, ptr %.sroa.08.012.i.i.i.i, i64 32 - %55 = load i32, ptr %54, align 8 - store i32 %55, ptr %.013.i.i.i.i, align 8 - %56 = getelementptr inbounds i8, ptr %.013.i.i.i.i, i64 8 - %57 = getelementptr inbounds i8, ptr %.sroa.08.012.i.i.i.i, i64 40 - %58 = load ptr, ptr %57, align 8 - store ptr %58, ptr %56, align 8 - %59 = tail call noundef ptr @_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base(ptr noundef %.sroa.08.012.i.i.i.i) #31 - %60 = getelementptr inbounds i8, ptr %.013.i.i.i.i, i64 16 - %.not.i.i.i.i = icmp eq ptr %59, %3 - br i1 %.not.i.i.i.i, label %_ZSt22__uninitialized_copy_aISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEPS1_IiSC_ESF_ET0_T_SI_SH_RSaIT1_E.exit.loopexit, label %.lr.ph.i.i.i.i, !llvm.loop !363 + %.013.i.i.i.i = phi ptr [ %57, %.lr.ph.i.i.i.i ], [ %10, %_ZSt7advanceISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEmEvRT_T0_.exit ] + %.sroa.08.012.i.i.i.i = phi ptr [ %56, %.lr.ph.i.i.i.i ], [ %.sroa.0.0, %_ZSt7advanceISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEmEvRT_T0_.exit ] + %51 = getelementptr inbounds i8, ptr %.sroa.08.012.i.i.i.i, i64 32 + %52 = load i32, ptr %51, align 8 + store i32 %52, ptr %.013.i.i.i.i, align 8 + %53 = getelementptr inbounds i8, ptr %.013.i.i.i.i, i64 8 + %54 = getelementptr inbounds i8, ptr %.sroa.08.012.i.i.i.i, i64 40 + %55 = load ptr, ptr %54, align 8 + store ptr %55, ptr %53, align 8 + %56 = tail call noundef ptr @_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base(ptr noundef %.sroa.08.012.i.i.i.i) #31 + %57 = getelementptr inbounds i8, ptr %.013.i.i.i.i, i64 16 + %.not.i.i.i.i = icmp eq ptr %56, %3 + br i1 %.not.i.i.i.i, label %_ZSt22__uninitialized_copy_aISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEPS1_IiSC_ESF_ET0_T_SI_SH_RSaIT1_E.exit.loopexit, label %.lr.ph.i.i.i.i, !llvm.loop !362 _ZSt22__uninitialized_copy_aISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEPS1_IiSC_ESF_ET0_T_SI_SH_RSaIT1_E.exit.loopexit: ; preds = %.lr.ph.i.i.i.i %.pre = load ptr, ptr %9, align 8 br label %_ZSt22__uninitialized_copy_aISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEPS1_IiSC_ESF_ET0_T_SI_SH_RSaIT1_E.exit _ZSt22__uninitialized_copy_aISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEPS1_IiSC_ESF_ET0_T_SI_SH_RSaIT1_E.exit: ; preds = %_ZSt22__uninitialized_copy_aISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEPS1_IiSC_ESF_ET0_T_SI_SH_RSaIT1_E.exit.loopexit, %_ZSt7advanceISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEmEvRT_T0_.exit - %61 = phi ptr [ %.pre, %_ZSt22__uninitialized_copy_aISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEPS1_IiSC_ESF_ET0_T_SI_SH_RSaIT1_E.exit.loopexit ], [ %10, %_ZSt7advanceISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEmEvRT_T0_.exit ] - %62 = sub nuw i64 %6, %18 - %63 = getelementptr inbounds %"struct.std::pair.72", ptr %61, i64 %62 - store ptr %63, ptr %9, align 8 + %58 = phi ptr [ %.pre, %_ZSt22__uninitialized_copy_aISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEPS1_IiSC_ESF_ET0_T_SI_SH_RSaIT1_E.exit.loopexit ], [ %10, %_ZSt7advanceISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEmEvRT_T0_.exit ] + %59 = sub nuw i64 %6, %18 + %60 = getelementptr inbounds %"struct.std::pair.72", ptr %58, i64 %59 + store ptr %60, ptr %9, align 8 %.not11.i.i.i.i.i57 = icmp eq ptr %1, %10 br i1 %.not11.i.i.i.i.i57, label %_ZSt22__uninitialized_move_aIPSt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESC_SaISB_EET0_T_SF_SE_RT1_.exit63, label %.lr.ph.i.i.i.i.i58 .lr.ph.i.i.i.i.i58: ; preds = %_ZSt22__uninitialized_copy_aISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEPS1_IiSC_ESF_ET0_T_SI_SH_RSaIT1_E.exit, %.lr.ph.i.i.i.i.i58 - %.013.i.i.i.i.i59 = phi ptr [ %65, %.lr.ph.i.i.i.i.i58 ], [ %63, %_ZSt22__uninitialized_copy_aISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEPS1_IiSC_ESF_ET0_T_SI_SH_RSaIT1_E.exit ] - %.sroa.08.012.i.i.i.i.i60 = phi ptr [ %64, %.lr.ph.i.i.i.i.i58 ], [ %1, %_ZSt22__uninitialized_copy_aISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEPS1_IiSC_ESF_ET0_T_SI_SH_RSaIT1_E.exit ] + %.013.i.i.i.i.i59 = phi ptr [ %62, %.lr.ph.i.i.i.i.i58 ], [ %60, %_ZSt22__uninitialized_copy_aISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEPS1_IiSC_ESF_ET0_T_SI_SH_RSaIT1_E.exit ] + %.sroa.08.012.i.i.i.i.i60 = phi ptr [ %61, %.lr.ph.i.i.i.i.i58 ], [ %1, %_ZSt22__uninitialized_copy_aISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEPS1_IiSC_ESF_ET0_T_SI_SH_RSaIT1_E.exit ] tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.013.i.i.i.i.i59, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.08.012.i.i.i.i.i60, i64 16, i1 false) - %64 = getelementptr inbounds i8, ptr %.sroa.08.012.i.i.i.i.i60, i64 16 - %65 = getelementptr inbounds i8, ptr %.013.i.i.i.i.i59, i64 16 - %.not.i.i.i.i.i61 = icmp eq ptr %64, %10 + %61 = getelementptr inbounds i8, ptr %.sroa.08.012.i.i.i.i.i60, i64 16 + %62 = getelementptr inbounds i8, ptr %.013.i.i.i.i.i59, i64 16 + %.not.i.i.i.i.i61 = icmp eq ptr %61, %10 br i1 %.not.i.i.i.i.i61, label %_ZSt22__uninitialized_move_aIPSt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESC_SaISB_EET0_T_SF_SE_RT1_.exit63.loopexit, label %.lr.ph.i.i.i.i.i58, !llvm.loop !358 _ZSt22__uninitialized_move_aIPSt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESC_SaISB_EET0_T_SF_SE_RT1_.exit63.loopexit: ; preds = %.lr.ph.i.i.i.i.i58 - %.pre117 = load ptr, ptr %9, align 8 + %.pre115 = load ptr, ptr %9, align 8 br label %_ZSt22__uninitialized_move_aIPSt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESC_SaISB_EET0_T_SF_SE_RT1_.exit63 _ZSt22__uninitialized_move_aIPSt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESC_SaISB_EET0_T_SF_SE_RT1_.exit63: ; preds = %_ZSt22__uninitialized_move_aIPSt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESC_SaISB_EET0_T_SF_SE_RT1_.exit63.loopexit, %_ZSt22__uninitialized_copy_aISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEPS1_IiSC_ESF_ET0_T_SI_SH_RSaIT1_E.exit - %66 = phi ptr [ %.pre117, %_ZSt22__uninitialized_move_aIPSt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESC_SaISB_EET0_T_SF_SE_RT1_.exit63.loopexit ], [ %63, %_ZSt22__uninitialized_copy_aISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEPS1_IiSC_ESF_ET0_T_SI_SH_RSaIT1_E.exit ] - %67 = getelementptr inbounds i8, ptr %66, i64 %17 - store ptr %67, ptr %9, align 8 + %63 = phi ptr [ %.pre115, %_ZSt22__uninitialized_move_aIPSt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESC_SaISB_EET0_T_SF_SE_RT1_.exit63.loopexit ], [ %60, %_ZSt22__uninitialized_copy_aISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEPS1_IiSC_ESF_ET0_T_SI_SH_RSaIT1_E.exit ] + %64 = getelementptr inbounds i8, ptr %63, i64 %17 + store ptr %64, ptr %9, align 8 %.not6.i.i.i.i.i64 = icmp eq ptr %2, %.sroa.0.0 br i1 %.not6.i.i.i.i.i64, label %_ZSt4copyISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEN9__gnu_cxx17__normal_iteratorIPS1_IiSC_ESt6vectorISH_SaISH_EEEEET0_T_SO_SN_.exit, label %.lr.ph.i.i.i.i.i65 .lr.ph.i.i.i.i.i65: ; preds = %_ZSt22__uninitialized_move_aIPSt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESC_SaISB_EET0_T_SF_SE_RT1_.exit63, %.lr.ph.i.i.i.i.i65 - %.08.i.i.i.i.i66 = phi ptr [ %73, %.lr.ph.i.i.i.i.i65 ], [ %1, %_ZSt22__uninitialized_move_aIPSt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESC_SaISB_EET0_T_SF_SE_RT1_.exit63 ] - %.sroa.03.07.i.i.i.i.i67 = phi ptr [ %74, %.lr.ph.i.i.i.i.i65 ], [ %2, %_ZSt22__uninitialized_move_aIPSt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESC_SaISB_EET0_T_SF_SE_RT1_.exit63 ] - %68 = getelementptr inbounds i8, ptr %.sroa.03.07.i.i.i.i.i67, i64 32 - %69 = load i32, ptr %68, align 8 - store i32 %69, ptr %.08.i.i.i.i.i66, align 8 - %70 = getelementptr inbounds i8, ptr %.sroa.03.07.i.i.i.i.i67, i64 40 - %71 = load ptr, ptr %70, align 8 - %72 = getelementptr inbounds i8, ptr %.08.i.i.i.i.i66, i64 8 - store ptr %71, ptr %72, align 8 - %73 = getelementptr inbounds i8, ptr %.08.i.i.i.i.i66, i64 16 - %74 = tail call noundef ptr @_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base(ptr noundef %.sroa.03.07.i.i.i.i.i67) #31 - %.not.i.i.i.i.i68 = icmp eq ptr %74, %.sroa.0.0 + %.08.i.i.i.i.i66 = phi ptr [ %70, %.lr.ph.i.i.i.i.i65 ], [ %1, %_ZSt22__uninitialized_move_aIPSt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESC_SaISB_EET0_T_SF_SE_RT1_.exit63 ] + %.sroa.03.07.i.i.i.i.i67 = phi ptr [ %71, %.lr.ph.i.i.i.i.i65 ], [ %2, %_ZSt22__uninitialized_move_aIPSt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESC_SaISB_EET0_T_SF_SE_RT1_.exit63 ] + %65 = getelementptr inbounds i8, ptr %.sroa.03.07.i.i.i.i.i67, i64 32 + %66 = load i32, ptr %65, align 8 + store i32 %66, ptr %.08.i.i.i.i.i66, align 8 + %67 = getelementptr inbounds i8, ptr %.sroa.03.07.i.i.i.i.i67, i64 40 + %68 = load ptr, ptr %67, align 8 + %69 = getelementptr inbounds i8, ptr %.08.i.i.i.i.i66, i64 8 + store ptr %68, ptr %69, align 8 + %70 = getelementptr inbounds i8, ptr %.08.i.i.i.i.i66, i64 16 + %71 = tail call noundef ptr @_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base(ptr noundef %.sroa.03.07.i.i.i.i.i67) #31 + %.not.i.i.i.i.i68 = icmp eq ptr %71, %.sroa.0.0 br i1 %.not.i.i.i.i.i68, label %_ZSt4copyISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEN9__gnu_cxx17__normal_iteratorIPS1_IiSC_ESt6vectorISH_SaISH_EEEEET0_T_SO_SN_.exit, label %.lr.ph.i.i.i.i.i65, !llvm.loop !360 -75: ; preds = %_ZSt8distanceISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEENSt15iterator_traitsIT_E15difference_typeESG_SG_.exit - %76 = load ptr, ptr %0, align 8 - %77 = ptrtoint ptr %76 to i64 - %78 = sub i64 %12, %77 - %79 = ashr exact i64 %78, 4 - %80 = sub nsw i64 576460752303423487, %79 - %.not = icmp ugt i64 %80, %.06.i.i - br i1 %.not, label %_ZNKSt6vectorISt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESaISB_EE12_M_check_lenEmPKc.exit, label %81 +72: ; preds = %_ZSt8distanceISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEENSt15iterator_traitsIT_E15difference_typeESG_SG_.exit + %73 = load ptr, ptr %0, align 8 + %74 = ptrtoint ptr %73 to i64 + %75 = sub i64 %12, %74 + %76 = ashr exact i64 %75, 4 + %77 = sub nsw i64 576460752303423487, %76 + %.not = icmp ugt i64 %77, %.06.i.i + br i1 %.not, label %_ZNKSt6vectorISt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESaISB_EE12_M_check_lenEmPKc.exit, label %78 -81: ; preds = %75 +78: ; preds = %72 tail call void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.155) #32 unreachable -_ZNKSt6vectorISt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESaISB_EE12_M_check_lenEmPKc.exit: ; preds = %75 - %.sroa.speculated.i = tail call i64 @llvm.umax.i64(i64 %79, i64 %6) - %82 = add nsw i64 %.sroa.speculated.i, %79 - %83 = icmp ult i64 %82, %79 - %84 = tail call i64 @llvm.umin.i64(i64 %82, i64 576460752303423487) - %85 = select i1 %83, i64 576460752303423487, i64 %84 - %.not.i = icmp eq i64 %85, 0 - br i1 %.not.i, label %_ZNSt12_Vector_baseISt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESaISB_EE11_M_allocateEm.exit, label %86 - -86: ; preds = %_ZNKSt6vectorISt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESaISB_EE12_M_check_lenEmPKc.exit - %87 = shl nuw nsw i64 %85, 4 - %88 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %87) #29 +_ZNKSt6vectorISt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESaISB_EE12_M_check_lenEmPKc.exit: ; preds = %72 + %.sroa.speculated.i = tail call i64 @llvm.umax.i64(i64 %76, i64 %6) + %79 = add nsw i64 %.sroa.speculated.i, %76 + %80 = icmp ult i64 %79, %76 + %81 = tail call i64 @llvm.umin.i64(i64 %79, i64 576460752303423487) + %82 = select i1 %80, i64 576460752303423487, i64 %81 + %.not.i = icmp eq i64 %82, 0 + br i1 %.not.i, label %_ZNSt12_Vector_baseISt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESaISB_EE11_M_allocateEm.exit, label %83 + +83: ; preds = %_ZNKSt6vectorISt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESaISB_EE12_M_check_lenEmPKc.exit + %84 = shl nuw nsw i64 %82, 4 + %85 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %84) #29 br label %_ZNSt12_Vector_baseISt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESaISB_EE11_M_allocateEm.exit -_ZNSt12_Vector_baseISt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESaISB_EE11_M_allocateEm.exit: ; preds = %_ZNKSt6vectorISt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESaISB_EE12_M_check_lenEmPKc.exit, %86 - %89 = phi ptr [ %88, %86 ], [ null, %_ZNKSt6vectorISt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESaISB_EE12_M_check_lenEmPKc.exit ] - %.not11.i.i.i.i.i71 = icmp eq ptr %76, %1 +_ZNSt12_Vector_baseISt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESaISB_EE11_M_allocateEm.exit: ; preds = %_ZNKSt6vectorISt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESaISB_EE12_M_check_lenEmPKc.exit, %83 + %86 = phi ptr [ %85, %83 ], [ null, %_ZNKSt6vectorISt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESaISB_EE12_M_check_lenEmPKc.exit ] + %.not11.i.i.i.i.i71 = icmp eq ptr %73, %1 br i1 %.not11.i.i.i.i.i71, label %.lr.ph.i.i.i.i78.preheader, label %.lr.ph.i.i.i.i.i72 .lr.ph.i.i.i.i.i72: ; preds = %_ZNSt12_Vector_baseISt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESaISB_EE11_M_allocateEm.exit, %.lr.ph.i.i.i.i.i72 - %.013.i.i.i.i.i73 = phi ptr [ %91, %.lr.ph.i.i.i.i.i72 ], [ %89, %_ZNSt12_Vector_baseISt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESaISB_EE11_M_allocateEm.exit ] - %.sroa.08.012.i.i.i.i.i74 = phi ptr [ %90, %.lr.ph.i.i.i.i.i72 ], [ %76, %_ZNSt12_Vector_baseISt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESaISB_EE11_M_allocateEm.exit ] + %.013.i.i.i.i.i73 = phi ptr [ %88, %.lr.ph.i.i.i.i.i72 ], [ %86, %_ZNSt12_Vector_baseISt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESaISB_EE11_M_allocateEm.exit ] + %.sroa.08.012.i.i.i.i.i74 = phi ptr [ %87, %.lr.ph.i.i.i.i.i72 ], [ %73, %_ZNSt12_Vector_baseISt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESaISB_EE11_M_allocateEm.exit ] tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.013.i.i.i.i.i73, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.08.012.i.i.i.i.i74, i64 16, i1 false) - %90 = getelementptr inbounds i8, ptr %.sroa.08.012.i.i.i.i.i74, i64 16 - %91 = getelementptr inbounds i8, ptr %.013.i.i.i.i.i73, i64 16 - %.not.i.i.i.i.i75 = icmp eq ptr %90, %1 + %87 = getelementptr inbounds i8, ptr %.sroa.08.012.i.i.i.i.i74, i64 16 + %88 = getelementptr inbounds i8, ptr %.013.i.i.i.i.i73, i64 16 + %.not.i.i.i.i.i75 = icmp eq ptr %87, %1 br i1 %.not.i.i.i.i.i75, label %.lr.ph.i.i.i.i78.preheader, label %.lr.ph.i.i.i.i.i72, !llvm.loop !358 .lr.ph.i.i.i.i78.preheader: ; preds = %.lr.ph.i.i.i.i.i72, %_ZNSt12_Vector_baseISt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESaISB_EE11_M_allocateEm.exit - %.013.i.i.i.i79.ph = phi ptr [ %89, %_ZNSt12_Vector_baseISt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESaISB_EE11_M_allocateEm.exit ], [ %91, %.lr.ph.i.i.i.i.i72 ] + %.013.i.i.i.i79.ph = phi ptr [ %86, %_ZNSt12_Vector_baseISt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESaISB_EE11_M_allocateEm.exit ], [ %88, %.lr.ph.i.i.i.i.i72 ] br label %.lr.ph.i.i.i.i78 .lr.ph.i.i.i.i78: ; preds = %.lr.ph.i.i.i.i78.preheader, %.lr.ph.i.i.i.i78 - %.013.i.i.i.i79 = phi ptr [ %98, %.lr.ph.i.i.i.i78 ], [ %.013.i.i.i.i79.ph, %.lr.ph.i.i.i.i78.preheader ] - %.sroa.08.012.i.i.i.i80 = phi ptr [ %97, %.lr.ph.i.i.i.i78 ], [ %2, %.lr.ph.i.i.i.i78.preheader ] - %92 = getelementptr inbounds i8, ptr %.sroa.08.012.i.i.i.i80, i64 32 - %93 = load i32, ptr %92, align 8 - store i32 %93, ptr %.013.i.i.i.i79, align 8 - %94 = getelementptr inbounds i8, ptr %.013.i.i.i.i79, i64 8 - %95 = getelementptr inbounds i8, ptr %.sroa.08.012.i.i.i.i80, i64 40 - %96 = load ptr, ptr %95, align 8 - store ptr %96, ptr %94, align 8 - %97 = tail call noundef ptr @_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base(ptr noundef %.sroa.08.012.i.i.i.i80) #31 - %98 = getelementptr inbounds i8, ptr %.013.i.i.i.i79, i64 16 - %.not.i.i.i.i81 = icmp eq ptr %97, %3 - br i1 %.not.i.i.i.i81, label %_ZSt22__uninitialized_copy_aISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEPS1_IiSC_ESF_ET0_T_SI_SH_RSaIT1_E.exit83, label %.lr.ph.i.i.i.i78, !llvm.loop !363 + %.013.i.i.i.i79 = phi ptr [ %95, %.lr.ph.i.i.i.i78 ], [ %.013.i.i.i.i79.ph, %.lr.ph.i.i.i.i78.preheader ] + %.sroa.08.012.i.i.i.i80 = phi ptr [ %94, %.lr.ph.i.i.i.i78 ], [ %2, %.lr.ph.i.i.i.i78.preheader ] + %89 = getelementptr inbounds i8, ptr %.sroa.08.012.i.i.i.i80, i64 32 + %90 = load i32, ptr %89, align 8 + store i32 %90, ptr %.013.i.i.i.i79, align 8 + %91 = getelementptr inbounds i8, ptr %.013.i.i.i.i79, i64 8 + %92 = getelementptr inbounds i8, ptr %.sroa.08.012.i.i.i.i80, i64 40 + %93 = load ptr, ptr %92, align 8 + store ptr %93, ptr %91, align 8 + %94 = tail call noundef ptr @_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base(ptr noundef %.sroa.08.012.i.i.i.i80) #31 + %95 = getelementptr inbounds i8, ptr %.013.i.i.i.i79, i64 16 + %.not.i.i.i.i81 = icmp eq ptr %94, %3 + br i1 %.not.i.i.i.i81, label %_ZSt22__uninitialized_copy_aISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEPS1_IiSC_ESF_ET0_T_SI_SH_RSaIT1_E.exit83, label %.lr.ph.i.i.i.i78, !llvm.loop !362 _ZSt22__uninitialized_copy_aISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEPS1_IiSC_ESF_ET0_T_SI_SH_RSaIT1_E.exit83: ; preds = %.lr.ph.i.i.i.i78 %.not11.i.i.i.i.i84 = icmp eq ptr %1, %10 br i1 %.not11.i.i.i.i.i84, label %_ZSt34__uninitialized_move_if_noexcept_aIPSt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESC_SaISB_EET0_T_SF_SE_RT1_.exit90, label %.lr.ph.i.i.i.i.i85 .lr.ph.i.i.i.i.i85: ; preds = %_ZSt22__uninitialized_copy_aISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEPS1_IiSC_ESF_ET0_T_SI_SH_RSaIT1_E.exit83, %.lr.ph.i.i.i.i.i85 - %.013.i.i.i.i.i86 = phi ptr [ %100, %.lr.ph.i.i.i.i.i85 ], [ %98, %_ZSt22__uninitialized_copy_aISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEPS1_IiSC_ESF_ET0_T_SI_SH_RSaIT1_E.exit83 ] - %.sroa.08.012.i.i.i.i.i87 = phi ptr [ %99, %.lr.ph.i.i.i.i.i85 ], [ %1, %_ZSt22__uninitialized_copy_aISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEPS1_IiSC_ESF_ET0_T_SI_SH_RSaIT1_E.exit83 ] + %.013.i.i.i.i.i86 = phi ptr [ %97, %.lr.ph.i.i.i.i.i85 ], [ %95, %_ZSt22__uninitialized_copy_aISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEPS1_IiSC_ESF_ET0_T_SI_SH_RSaIT1_E.exit83 ] + %.sroa.08.012.i.i.i.i.i87 = phi ptr [ %96, %.lr.ph.i.i.i.i.i85 ], [ %1, %_ZSt22__uninitialized_copy_aISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEPS1_IiSC_ESF_ET0_T_SI_SH_RSaIT1_E.exit83 ] tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.013.i.i.i.i.i86, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.08.012.i.i.i.i.i87, i64 16, i1 false) - %99 = getelementptr inbounds i8, ptr %.sroa.08.012.i.i.i.i.i87, i64 16 - %100 = getelementptr inbounds i8, ptr %.013.i.i.i.i.i86, i64 16 - %.not.i.i.i.i.i88 = icmp eq ptr %99, %10 + %96 = getelementptr inbounds i8, ptr %.sroa.08.012.i.i.i.i.i87, i64 16 + %97 = getelementptr inbounds i8, ptr %.013.i.i.i.i.i86, i64 16 + %.not.i.i.i.i.i88 = icmp eq ptr %96, %10 br i1 %.not.i.i.i.i.i88, label %_ZSt34__uninitialized_move_if_noexcept_aIPSt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESC_SaISB_EET0_T_SF_SE_RT1_.exit90, label %.lr.ph.i.i.i.i.i85, !llvm.loop !358 _ZSt34__uninitialized_move_if_noexcept_aIPSt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESC_SaISB_EET0_T_SF_SE_RT1_.exit90: ; preds = %.lr.ph.i.i.i.i.i85, %_ZSt22__uninitialized_copy_aISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEPS1_IiSC_ESF_ET0_T_SI_SH_RSaIT1_E.exit83 - %.0.lcssa.i.i.i.i.i89 = phi ptr [ %98, %_ZSt22__uninitialized_copy_aISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEPS1_IiSC_ESF_ET0_T_SI_SH_RSaIT1_E.exit83 ], [ %100, %.lr.ph.i.i.i.i.i85 ] - %.not.i91 = icmp eq ptr %76, null - br i1 %.not.i91, label %_ZNSt12_Vector_baseISt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESaISB_EE13_M_deallocateEPSB_m.exit, label %101 + %.0.lcssa.i.i.i.i.i89 = phi ptr [ %95, %_ZSt22__uninitialized_copy_aISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEPS1_IiSC_ESF_ET0_T_SI_SH_RSaIT1_E.exit83 ], [ %97, %.lr.ph.i.i.i.i.i85 ] + %.not.i91 = icmp eq ptr %73, null + br i1 %.not.i91, label %_ZNSt12_Vector_baseISt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESaISB_EE13_M_deallocateEPSB_m.exit, label %98 -101: ; preds = %_ZSt34__uninitialized_move_if_noexcept_aIPSt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESC_SaISB_EET0_T_SF_SE_RT1_.exit90 - tail call void @_ZdlPv(ptr noundef nonnull %76) #30 +98: ; preds = %_ZSt34__uninitialized_move_if_noexcept_aIPSt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESC_SaISB_EET0_T_SF_SE_RT1_.exit90 + tail call void @_ZdlPv(ptr noundef nonnull %73) #30 br label %_ZNSt12_Vector_baseISt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESaISB_EE13_M_deallocateEPSB_m.exit -_ZNSt12_Vector_baseISt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESaISB_EE13_M_deallocateEPSB_m.exit: ; preds = %_ZSt34__uninitialized_move_if_noexcept_aIPSt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESC_SaISB_EET0_T_SF_SE_RT1_.exit90, %101 - store ptr %89, ptr %0, align 8 +_ZNSt12_Vector_baseISt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESaISB_EE13_M_deallocateEPSB_m.exit: ; preds = %_ZSt34__uninitialized_move_if_noexcept_aIPSt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESC_SaISB_EET0_T_SF_SE_RT1_.exit90, %98 + store ptr %86, ptr %0, align 8 store ptr %.0.lcssa.i.i.i.i.i89, ptr %9, align 8 - %102 = getelementptr inbounds %"struct.std::pair.72", ptr %89, i64 %85 - store ptr %102, ptr %7, align 8 + %99 = getelementptr inbounds %"struct.std::pair.72", ptr %86, i64 %82 + store ptr %99, ptr %7, align 8 br label %_ZSt4copyISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEN9__gnu_cxx17__normal_iteratorIPS1_IiSC_ESt6vectorISH_SaISH_EEEEET0_T_SO_SN_.exit _ZSt4copyISt17_Rb_tree_iteratorISt4pairIKiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEEEN9__gnu_cxx17__normal_iteratorIPS1_IiSC_ESt6vectorISH_SaISH_EEEEET0_T_SO_SN_.exit: ; preds = %.lr.ph.i.i.i.i.i65, %.lr.ph.i.i.i.i.i52, %_ZSt22__uninitialized_move_aIPSt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESC_SaISB_EET0_T_SF_SE_RT1_.exit63, %_ZNSt12_Vector_baseISt4pairIiPNSt7__cxx114listINS1_12basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEEESaISB_EE13_M_deallocateEPSB_m.exit, %4 @@ -26172,7 +26165,7 @@ define linkonce_odr dso_local void @_ZSt16__introsort_loopIN9__gnu_cxx17__normal %13 = ptrtoint ptr %12 to i64 %14 = sub i64 %13, %6 %15 = icmp sgt i64 %14, 16 - br i1 %15, label %.lr.ph.i9.i, label %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEESt6vectorISD_SaISD_EEEENS0_5__ops15_Iter_comp_iterIN4i18n12phonenumbers3gtl12OrderByFirstEEEEvT_SQ_SQ_T0_.exit, !llvm.loop !364 + br i1 %15, label %.lr.ph.i9.i, label %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEESt6vectorISD_SaISD_EEEENS0_5__ops15_Iter_comp_iterIN4i18n12phonenumbers3gtl12OrderByFirstEEEEvT_SQ_SQ_T0_.exit, !llvm.loop !363 _ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEESt6vectorISD_SaISD_EEEENS0_5__ops15_Iter_comp_iterIN4i18n12phonenumbers3gtl12OrderByFirstEEEEvT_SQ_SQ_T0_.exit: ; preds = %.lr.ph.i9.i call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %5) @@ -26185,7 +26178,7 @@ _ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listI %19 = ptrtoint ptr %18 to i64 %20 = sub i64 %19, %6 %21 = icmp sgt i64 %20, 256 - br i1 %21, label %.lr.ph, label %.loopexit, !llvm.loop !365 + br i1 %21, label %.lr.ph, label %.loopexit, !llvm.loop !364 .loopexit: ; preds = %16, %3, %_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEESt6vectorISD_SaISD_EEEENS0_5__ops15_Iter_comp_iterIN4i18n12phonenumbers3gtl12OrderByFirstEEEEvT_SQ_SQ_T0_.exit ret void @@ -26257,7 +26250,7 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listIN %.sroa.0.0.i.i = getelementptr inbounds i8, ptr %.sroa.0.011.i.i, i64 -16 %29 = load i32, ptr %.sroa.0.0.i.i, align 8 %30 = icmp slt i32 %9, %29 - br i1 %30, label %.lr.ph.i.i, label %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEESt6vectorISD_SaISD_EEEENS0_5__ops14_Val_comp_iterIN4i18n12phonenumbers3gtl12OrderByFirstEEEEvT_T0_.exit.i, !llvm.loop !366 + br i1 %30, label %.lr.ph.i.i, label %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEESt6vectorISD_SaISD_EEEENS0_5__ops14_Val_comp_iterIN4i18n12phonenumbers3gtl12OrderByFirstEEEEvT_T0_.exit.i, !llvm.loop !365 _ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEESt6vectorISD_SaISD_EEEENS0_5__ops14_Val_comp_iterIN4i18n12phonenumbers3gtl12OrderByFirstEEEEvT_T0_.exit.i: ; preds = %.lr.ph.i.i, %22 %.sroa.06.0.lcssa.i.i = phi ptr [ %.sroa.09.021.i.ptr, %22 ], [ %.sroa.0.011.i.i, %.lr.ph.i.i ] @@ -26269,7 +26262,7 @@ _ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__ 32: ; preds = %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEESt6vectorISD_SaISD_EEEENS0_5__ops14_Val_comp_iterIN4i18n12phonenumbers3gtl12OrderByFirstEEEEvT_T0_.exit.i, %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEESt6vectorISD_SaISD_EEEESI_ET0_T_SK_SJ_.exit.i %.sroa.09.021.i.add = add nuw nsw i64 %.sroa.09.021.i.idx, 16 %.not.i = icmp eq i64 %.sroa.09.021.i.add, 256 - br i1 %.not.i, label %_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEESt6vectorISD_SaISD_EEEENS0_5__ops15_Iter_comp_iterIN4i18n12phonenumbers3gtl12OrderByFirstEEEEvT_SQ_T0_.exit, label %8, !llvm.loop !367 + br i1 %.not.i, label %_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEESt6vectorISD_SaISD_EEEENS0_5__ops15_Iter_comp_iterIN4i18n12phonenumbers3gtl12OrderByFirstEEEEvT_SQ_T0_.exit, label %8, !llvm.loop !366 _ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEESt6vectorISD_SaISD_EEEENS0_5__ops15_Iter_comp_iterIN4i18n12phonenumbers3gtl12OrderByFirstEEEEvT_SQ_T0_.exit: ; preds = %32 %33 = getelementptr inbounds i8, ptr %0, i64 256 @@ -26298,7 +26291,7 @@ _ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114lis %.sroa.0.0.i.i19 = getelementptr inbounds i8, ptr %.sroa.0.011.i.i17, i64 -16 %40 = load i32, ptr %.sroa.0.0.i.i19, align 8 %41 = icmp slt i32 %.sroa.03.0.copyload.i.i, %40 - br i1 %41, label %.lr.ph.i.i16, label %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEESt6vectorISD_SaISD_EEEENS0_5__ops14_Val_comp_iterIN4i18n12phonenumbers3gtl12OrderByFirstEEEEvT_T0_.exit.i13, !llvm.loop !366 + br i1 %41, label %.lr.ph.i.i16, label %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEESt6vectorISD_SaISD_EEEENS0_5__ops14_Val_comp_iterIN4i18n12phonenumbers3gtl12OrderByFirstEEEEvT_T0_.exit.i13, !llvm.loop !365 _ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEESt6vectorISD_SaISD_EEEENS0_5__ops14_Val_comp_iterIN4i18n12phonenumbers3gtl12OrderByFirstEEEEvT_T0_.exit.i13: ; preds = %.lr.ph.i.i16, %.lr.ph.i12 %.sroa.06.0.lcssa.i.i14 = phi ptr [ %.sroa.0.07.i, %.lr.ph.i12 ], [ %.sroa.0.011.i.i17, %.lr.ph.i.i16 ] @@ -26307,7 +26300,7 @@ _ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__ store ptr %.sroa.35.0.copyload.i.i, ptr %42, align 8 %43 = getelementptr inbounds i8, ptr %.sroa.0.07.i, i64 16 %.not.i15 = icmp eq ptr %43, %1 - br i1 %.not.i15, label %_ZSt26__unguarded_insertion_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEESt6vectorISD_SaISD_EEEENS0_5__ops15_Iter_comp_iterIN4i18n12phonenumbers3gtl12OrderByFirstEEEEvT_SQ_T0_.exit, label %.lr.ph.i12, !llvm.loop !368 + br i1 %.not.i15, label %_ZSt26__unguarded_insertion_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEESt6vectorISD_SaISD_EEEENS0_5__ops15_Iter_comp_iterIN4i18n12phonenumbers3gtl12OrderByFirstEEEEvT_SQ_T0_.exit, label %.lr.ph.i12, !llvm.loop !367 44: ; preds = %2 %45 = icmp eq ptr %0, %1 @@ -26381,7 +26374,7 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listIN %.sroa.0.0.i.i35 = getelementptr inbounds i8, ptr %.sroa.0.011.i.i33, i64 -16 %72 = load i32, ptr %.sroa.0.0.i.i35, align 8 %73 = icmp slt i32 %48, %72 - br i1 %73, label %.lr.ph.i.i32, label %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEESt6vectorISD_SaISD_EEEENS0_5__ops14_Val_comp_iterIN4i18n12phonenumbers3gtl12OrderByFirstEEEEvT_T0_.exit.i28, !llvm.loop !366 + br i1 %73, label %.lr.ph.i.i32, label %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEESt6vectorISD_SaISD_EEEENS0_5__ops14_Val_comp_iterIN4i18n12phonenumbers3gtl12OrderByFirstEEEEvT_T0_.exit.i28, !llvm.loop !365 _ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEESt6vectorISD_SaISD_EEEENS0_5__ops14_Val_comp_iterIN4i18n12phonenumbers3gtl12OrderByFirstEEEEvT_T0_.exit.i28: ; preds = %.lr.ph.i.i32, %65 %.sroa.06.0.lcssa.i.i29 = phi ptr [ %.sroa.09.021.i24, %65 ], [ %.sroa.0.011.i.i33, %.lr.ph.i.i32 ] @@ -26393,7 +26386,7 @@ _ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__ 75: ; preds = %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEESt6vectorISD_SaISD_EEEENS0_5__ops14_Val_comp_iterIN4i18n12phonenumbers3gtl12OrderByFirstEEEEvT_T0_.exit.i28, %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEESt6vectorISD_SaISD_EEEESI_ET0_T_SK_SJ_.exit.i36 %.sroa.09.0.i30 = getelementptr inbounds i8, ptr %.sroa.09.021.i24, i64 16 %.not.i31 = icmp eq ptr %.sroa.09.0.i30, %1 - br i1 %.not.i31, label %_ZSt26__unguarded_insertion_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEESt6vectorISD_SaISD_EEEENS0_5__ops15_Iter_comp_iterIN4i18n12phonenumbers3gtl12OrderByFirstEEEEvT_SQ_T0_.exit, label %47, !llvm.loop !367 + br i1 %.not.i31, label %_ZSt26__unguarded_insertion_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEESt6vectorISD_SaISD_EEEENS0_5__ops15_Iter_comp_iterIN4i18n12phonenumbers3gtl12OrderByFirstEEEEvT_SQ_T0_.exit, label %47, !llvm.loop !366 _ZSt26__unguarded_insertion_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEESt6vectorISD_SaISD_EEEENS0_5__ops15_Iter_comp_iterIN4i18n12phonenumbers3gtl12OrderByFirstEEEEvT_SQ_T0_.exit: ; preds = %75, %_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEESt6vectorISD_SaISD_EEEENS0_5__ops14_Val_comp_iterIN4i18n12phonenumbers3gtl12OrderByFirstEEEEvT_T0_.exit.i13, %.preheader.i20, %44, %_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEESt6vectorISD_SaISD_EEEENS0_5__ops15_Iter_comp_iterIN4i18n12phonenumbers3gtl12OrderByFirstEEEEvT_SQ_T0_.exit ret void @@ -26513,14 +26506,14 @@ _ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx %57 = load i32, ptr %.sroa.010.1.i, align 8 %58 = icmp slt i32 %57, %55 %59 = getelementptr inbounds i8, ptr %.sroa.010.1.i, i64 16 - br i1 %58, label %56, label %.preheader.i, !llvm.loop !369 + br i1 %58, label %56, label %.preheader.i, !llvm.loop !368 .preheader.i: ; preds = %56, %.preheader.i %.sroa.0.0.pn.i = phi ptr [ %.sroa.0.1.i, %.preheader.i ], [ %.sroa.0.0.i, %56 ] %.sroa.0.1.i = getelementptr inbounds i8, ptr %.sroa.0.0.pn.i, i64 -16 %60 = load i32, ptr %.sroa.0.1.i, align 8 %61 = icmp slt i32 %55, %60 - br i1 %61, label %.preheader.i, label %62, !llvm.loop !370 + br i1 %61, label %.preheader.i, label %62, !llvm.loop !369 62: ; preds = %.preheader.i %63 = icmp ult ptr %.sroa.010.1.i, %.sroa.0.1.i @@ -26535,7 +26528,7 @@ _ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx %68 = load ptr, ptr %66, align 8 store ptr %68, ptr %65, align 8 store ptr %67, ptr %66, align 8 - br label %_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEESt6vectorISD_SaISD_EEEENS0_5__ops15_Iter_comp_iterIN4i18n12phonenumbers3gtl12OrderByFirstEEEEvT_SQ_SQ_SQ_T0_.exit, !llvm.loop !371 + br label %_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEESt6vectorISD_SaISD_EEEENS0_5__ops15_Iter_comp_iterIN4i18n12phonenumbers3gtl12OrderByFirstEEEEvT_SQ_SQ_SQ_T0_.exit, !llvm.loop !370 _ZSt21__unguarded_partitionIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEESt6vectorISD_SaISD_EEEENS0_5__ops15_Iter_comp_iterIN4i18n12phonenumbers3gtl12OrderByFirstEEEET_SQ_SQ_SQ_T0_.exit: ; preds = %62 ret ptr %.sroa.010.1.i @@ -26594,7 +26587,7 @@ define linkonce_odr dso_local void @_ZSt11__make_heapIN9__gnu_cxx17__normal_iter %36 = getelementptr inbounds i8, ptr %32, i64 8 store ptr %35, ptr %36, align 8 %37 = icmp slt i64 %spec.select.i, %12 - br i1 %37, label %.lr.ph.i, label %._crit_edge.i, !llvm.loop !372 + br i1 %37, label %.lr.ph.i, label %._crit_edge.i, !llvm.loop !371 ._crit_edge.i: ; preds = %.lr.ph.i, %21 %.0.lcssa.i = phi i64 [ %.0, %21 ], [ %spec.select.i, %.lr.ph.i ] @@ -26631,7 +26624,7 @@ define linkonce_odr dso_local void @_ZSt11__make_heapIN9__gnu_cxx17__normal_iter %51 = getelementptr inbounds i8, ptr %48, i64 8 store ptr %50, ptr %51, align 8 %52 = icmp sgt i64 %.0921.i.i, %.0 - br i1 %52, label %.lr.ph.i.i, label %_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEESt6vectorISD_SaISD_EEEElSD_NS0_5__ops15_Iter_comp_iterIN4i18n12phonenumbers3gtl12OrderByFirstEEEEvT_T0_SR_T1_T2_.exit, !llvm.loop !373 + br i1 %52, label %.lr.ph.i.i, label %_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEESt6vectorISD_SaISD_EEEElSD_NS0_5__ops15_Iter_comp_iterIN4i18n12phonenumbers3gtl12OrderByFirstEEEEvT_T0_SR_T1_T2_.exit, !llvm.loop !372 _ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEESt6vectorISD_SaISD_EEEElSD_NS0_5__ops15_Iter_comp_iterIN4i18n12phonenumbers3gtl12OrderByFirstEEEEvT_T0_SR_T1_T2_.exit: ; preds = %.lr.ph.i.i, %47, %42 %.0.lcssa.i.i = phi i64 [ %.1.i, %42 ], [ %.0921.i.i, %47 ], [ %.020.i.i, %.lr.ph.i.i ] @@ -26641,7 +26634,7 @@ _ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listIN store ptr %.sroa.3.0.copyload, ptr %54, align 8 %55 = icmp eq i64 %.0, 0 %56 = add nsw i64 %.0, -1 - br i1 %55, label %.loopexit, label %21, !llvm.loop !374 + br i1 %55, label %.loopexit, label %21, !llvm.loop !373 .loopexit: ; preds = %_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEESt6vectorISD_SaISD_EEEElSD_NS0_5__ops15_Iter_comp_iterIN4i18n12phonenumbers3gtl12OrderByFirstEEEEvT_T0_SR_T1_T2_.exit, %3 ret void @@ -26686,7 +26679,7 @@ define linkonce_odr dso_local void @_ZSt10__pop_heapIN9__gnu_cxx17__normal_itera %28 = getelementptr inbounds i8, ptr %24, i64 8 store ptr %27, ptr %28, align 8 %29 = icmp slt i64 %spec.select.i, %13 - br i1 %29, label %.lr.ph.i, label %._crit_edge.i, !llvm.loop !372 + br i1 %29, label %.lr.ph.i, label %._crit_edge.i, !llvm.loop !371 ._crit_edge.i: ; preds = %.lr.ph.i, %4 %.0.lcssa.i = phi i64 [ 0, %4 ], [ %spec.select.i, %.lr.ph.i ] @@ -26735,7 +26728,7 @@ define linkonce_odr dso_local void @_ZSt10__pop_heapIN9__gnu_cxx17__normal_itera %54 = getelementptr inbounds i8, ptr %51, i64 8 store ptr %53, ptr %54, align 8 %.not = icmp ult i64 %.0921.in.i.i, 2 - br i1 %.not, label %_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEESt6vectorISD_SaISD_EEEElSD_NS0_5__ops15_Iter_comp_iterIN4i18n12phonenumbers3gtl12OrderByFirstEEEEvT_T0_SR_T1_T2_.exit, label %.lr.ph.i.i, !llvm.loop !373 + br i1 %.not, label %_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEESt6vectorISD_SaISD_EEEElSD_NS0_5__ops15_Iter_comp_iterIN4i18n12phonenumbers3gtl12OrderByFirstEEEEvT_T0_SR_T1_T2_.exit, label %.lr.ph.i.i, !llvm.loop !372 _ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPSt4pairIiPNSt7__cxx114listINS3_12basic_stringIcSt11char_traitsIcESaIcEEESaIS9_EEEESt6vectorISD_SaISD_EEEElSD_NS0_5__ops15_Iter_comp_iterIN4i18n12phonenumbers3gtl12OrderByFirstEEEEvT_T0_SR_T1_T2_.exit: ; preds = %.lr.ph.i.i, %50, %45 %.0.lcssa.i.i = phi i64 [ %.1.i, %45 ], [ 0, %50 ], [ %.020.i.i, %.lr.ph.i.i ] @@ -26774,7 +26767,7 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi %.in.i = getelementptr inbounds i8, ptr %.02127.i, i64 %.in.v.i %.021.i = load ptr, ptr %.in.i, align 8 %.not.i = icmp eq ptr %.021.i, null - br i1 %.not.i, label %._crit_edge.i, label %.lr.ph.i, !llvm.loop !375 + br i1 %.not.i, label %._crit_edge.i, label %.lr.ph.i, !llvm.loop !374 ._crit_edge.i: ; preds = %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i br i1 %11, label %._crit_edge.thread.i, label %17 @@ -27198,7 +27191,7 @@ _ZN4absl7debian218container_internal18hash_policy_traitsINS1_17NodeHashMapPolicy %51 = add i64 %.sroa.10.0, 16 %52 = add i64 %51, %.sroa.4.0 %.pre = load ptr, ptr %0, align 8 - br label %16, !llvm.loop !376 + br label %16, !llvm.loop !375 .loopexit: ; preds = %._crit_edge, %_ZN4absl7debian218container_internal18hash_policy_traitsINS1_17NodeHashMapPolicyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4i18n12phonenumbers13PhoneMetadataEEEvE5applyINS1_12raw_hash_setISD_NS1_10StringHashENS1_12StringHashEq2EqESaISt4pairIKS9_SC_EEE12EqualElementIS9_EEJRSM_ESD_EEDTclsrT1_5applyclsr3stdE7forwardIT_Efp_Espclsr3stdE7forwardIT0_Efp0_EEEOST_DpOSU_.exit.thread %.pn = phi { ptr, ptr } [ %.fca.1.insert.i, %_ZN4absl7debian218container_internal18hash_policy_traitsINS1_17NodeHashMapPolicyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4i18n12phonenumbers13PhoneMetadataEEEvE5applyINS1_12raw_hash_setISD_NS1_10StringHashENS1_12StringHashEq2EqESaISt4pairIKS9_SC_EEE12EqualElementIS9_EEJRSM_ESD_EEDTclsrT1_5applyclsr3stdE7forwardIT_Efp_Espclsr3stdE7forwardIT0_Efp0_EEEOST_DpOSU_.exit.thread ], [ { ptr null, ptr undef }, %._crit_edge ] @@ -27354,7 +27347,7 @@ define linkonce_odr dso_local void @_ZN6google8protobuf8internal20RepeatedPtrFie tail call void @_ZN4i18n12phonenumbers12NumberFormat9MergeFromERKS1_(ptr noundef nonnull align 8 dereferenceable(88) %21, ptr noundef nonnull align 8 dereferenceable(88) %19) %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i - br i1 %exitcond.not.i, label %._crit_edge.i, label %.lr.ph.i, !llvm.loop !377 + br i1 %exitcond.not.i, label %._crit_edge.i, label %.lr.ph.i, !llvm.loop !376 ._crit_edge.i: ; preds = %.lr.ph.i, %6 %22 = load ptr, ptr %0, align 8 @@ -27376,7 +27369,7 @@ define linkonce_odr dso_local void @_ZN6google8protobuf8internal20RepeatedPtrFie %indvars.iv.next32.i = add nsw i64 %indvars.iv31.i, 1 %lftr.wideiv.i = trunc i64 %indvars.iv.next32.i to i32 %exitcond34.not.i = icmp eq i32 %4, %lftr.wideiv.i - br i1 %exitcond34.not.i, label %_ZN6google8protobuf8internal20RepeatedPtrFieldBase18MergeFromInnerLoopINS0_16RepeatedPtrFieldIN4i18n12phonenumbers12NumberFormatEE11TypeHandlerEEEvPPvSB_ii.exit, label %.lr.ph28.i, !llvm.loop !378 + br i1 %exitcond34.not.i, label %_ZN6google8protobuf8internal20RepeatedPtrFieldBase18MergeFromInnerLoopINS0_16RepeatedPtrFieldIN4i18n12phonenumbers12NumberFormatEE11TypeHandlerEEEvPPvSB_ii.exit, label %.lr.ph28.i, !llvm.loop !377 _ZN6google8protobuf8internal20RepeatedPtrFieldBase18MergeFromInnerLoopINS0_16RepeatedPtrFieldIN4i18n12phonenumbers12NumberFormatEE11TypeHandlerEEEvPPvSB_ii.exit: ; preds = %.lr.ph28.i, %._crit_edge.i %29 = load i32, ptr %14, align 8 @@ -27495,7 +27488,7 @@ _ZN4absl7debian218container_internal18hash_policy_traitsINS1_17NodeHashSetPolicy %51 = add i64 %.sroa.10.0, 16 %52 = add i64 %51, %.sroa.4.0 %.pre = load ptr, ptr %0, align 8 - br label %16, !llvm.loop !379 + br label %16, !llvm.loop !378 .loopexit: ; preds = %._crit_edge, %_ZN4absl7debian218container_internal18hash_policy_traitsINS1_17NodeHashSetPolicyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEvE5applyINS1_12raw_hash_setISA_NS1_10StringHashENS1_12StringHashEq2EqESaIS9_EE12EqualElementIS9_EEJRS9_ESA_EEDTclsrT1_5applyclsr3stdE7forwardIT_Efp_Espclsr3stdE7forwardIT0_Efp0_EEEOSN_DpOSO_.exit.thread %.pn = phi { ptr, ptr } [ %.fca.1.insert.i, %_ZN4absl7debian218container_internal18hash_policy_traitsINS1_17NodeHashSetPolicyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEvE5applyINS1_12raw_hash_setISA_NS1_10StringHashENS1_12StringHashEq2EqESaIS9_EE12EqualElementIS9_EEJRS9_ESA_EEDTclsrT1_5applyclsr3stdE7forwardIT_Efp_Espclsr3stdE7forwardIT0_Efp0_EEEOSN_DpOSO_.exit.thread ], [ { ptr null, ptr undef }, %._crit_edge ] @@ -28714,4 +28707,3 @@ attributes #32 = { noreturn } !376 = distinct !{!376, !35} !377 = distinct !{!377, !35} !378 = distinct !{!378, !35} -!379 = distinct !{!379, !35} diff --git a/bench/libquic/optimized/x509_att.c.ll b/bench/libquic/optimized/x509_att.c.ll index a70b1bad9dc..a1b47f248cd 100644 --- a/bench/libquic/optimized/x509_att.c.ll +++ b/bench/libquic/optimized/x509_att.c.ll @@ -9,7 +9,7 @@ target triple = "x86_64-unknown-linux-gnu" ; Function Attrs: nounwind uwtable define hidden i32 @X509at_get_attr_count(ptr noundef %x) local_unnamed_addr #0 { entry: - %call = tail call i64 @sk_num(ptr noundef %x) #4 + %call = tail call i64 @sk_num(ptr noundef %x) #5 %conv = trunc i64 %call to i32 ret i32 %conv } @@ -19,7 +19,7 @@ declare i64 @sk_num(ptr noundef) local_unnamed_addr #1 ; Function Attrs: nounwind uwtable define hidden range(i32 -2147483647, -2147483648) i32 @X509at_get_attr_by_NID(ptr noundef %x, i32 noundef %nid, i32 noundef %lastpos) local_unnamed_addr #0 { entry: - %call = tail call ptr @OBJ_nid2obj(i32 noundef %nid) #4 + %call = tail call ptr @OBJ_nid2obj(i32 noundef %nid) #5 %cmp = icmp eq ptr %call, null br i1 %cmp, label %return, label %if.end @@ -28,7 +28,7 @@ if.end: ; preds = %entry br i1 %cmp.i, label %return, label %if.end.i if.end.i: ; preds = %if.end - %call.i = tail call i64 @sk_num(ptr noundef nonnull %x) #4 + %call.i = tail call i64 @sk_num(ptr noundef nonnull %x) #5 %0 = tail call i32 @llvm.smax.i32(i32 %lastpos, i32 -1) %smax.i = sext i32 %0 to i64 %sext.i = shl i64 %call.i, 32 @@ -42,9 +42,9 @@ for.cond.i: ; preds = %for.body.i, %if.end br i1 %cmp4.i, label %for.body.i, label %return for.body.i: ; preds = %for.cond.i - %call7.i = tail call ptr @sk_value(ptr noundef nonnull %x, i64 noundef %indvars.iv.next.i) #4 + %call7.i = tail call ptr @sk_value(ptr noundef nonnull %x, i64 noundef %indvars.iv.next.i) #5 %2 = load ptr, ptr %call7.i, align 8 - %call8.i = tail call i32 @OBJ_cmp(ptr noundef %2, ptr noundef nonnull %call) #4 + %call8.i = tail call i32 @OBJ_cmp(ptr noundef %2, ptr noundef nonnull %call) #5 %cmp9.i = icmp eq i32 %call8.i, 0 br i1 %cmp9.i, label %return.loopexit.split.loop.exit.i, label %for.cond.i, !llvm.loop !7 @@ -66,7 +66,7 @@ entry: br i1 %cmp, label %return, label %if.end if.end: ; preds = %entry - %call = tail call i64 @sk_num(ptr noundef nonnull %sk) #4 + %call = tail call i64 @sk_num(ptr noundef nonnull %sk) #5 %0 = tail call i32 @llvm.smax.i32(i32 %lastpos, i32 -1) %smax = sext i32 %0 to i64 %sext = shl i64 %call, 32 @@ -80,9 +80,9 @@ for.cond: ; preds = %for.body, %if.end br i1 %cmp4, label %for.body, label %return for.body: ; preds = %for.cond - %call7 = tail call ptr @sk_value(ptr noundef nonnull %sk, i64 noundef %indvars.iv.next) #4 + %call7 = tail call ptr @sk_value(ptr noundef nonnull %sk, i64 noundef %indvars.iv.next) #5 %2 = load ptr, ptr %call7, align 8 - %call8 = tail call i32 @OBJ_cmp(ptr noundef %2, ptr noundef %obj) #4 + %call8 = tail call i32 @OBJ_cmp(ptr noundef %2, ptr noundef %obj) #5 %cmp9 = icmp eq i32 %call8, 0 br i1 %cmp9, label %return.loopexit.split.loop.exit, label %for.cond, !llvm.loop !7 @@ -108,13 +108,13 @@ entry: br i1 %or.cond, label %return, label %lor.lhs.false2 lor.lhs.false2: ; preds = %entry - %call = tail call i64 @sk_num(ptr noundef nonnull %x) #4 + %call = tail call i64 @sk_num(ptr noundef nonnull %x) #5 %conv = zext nneg i32 %loc to i64 %cmp3.not = icmp ugt i64 %call, %conv br i1 %cmp3.not, label %if.else, label %return if.else: ; preds = %lor.lhs.false2 - %call6 = tail call ptr @sk_value(ptr noundef nonnull %x, i64 noundef %conv) #4 + %call6 = tail call ptr @sk_value(ptr noundef nonnull %x, i64 noundef %conv) #5 br label %return return: ; preds = %entry, %lor.lhs.false2, %if.else @@ -131,13 +131,13 @@ entry: br i1 %or.cond, label %return, label %lor.lhs.false2 lor.lhs.false2: ; preds = %entry - %call = tail call i64 @sk_num(ptr noundef nonnull %x) #4 + %call = tail call i64 @sk_num(ptr noundef nonnull %x) #5 %conv = zext nneg i32 %loc to i64 %cmp3.not = icmp ugt i64 %call, %conv br i1 %cmp3.not, label %if.end, label %return if.end: ; preds = %lor.lhs.false2 - %call6 = tail call ptr @sk_delete(ptr noundef nonnull %x, i64 noundef %conv) #4 + %call6 = tail call ptr @sk_delete(ptr noundef nonnull %x, i64 noundef %conv) #5 br label %return return: ; preds = %entry, %lor.lhs.false2, %if.end @@ -154,7 +154,7 @@ entry: br i1 %cmp, label %if.end19.thread25, label %if.end if.end19.thread25: ; preds = %entry - tail call void @ERR_put_error(i32 noundef 11, i32 noundef 0, i32 noundef 67, ptr noundef nonnull @.str, i32 noundef 126) #4 + tail call void @ERR_put_error(i32 noundef 11, i32 noundef 0, i32 noundef 67, ptr noundef nonnull @.str, i32 noundef 126) #5 br label %return if.end: ; preds = %entry @@ -163,22 +163,22 @@ if.end: ; preds = %entry br i1 %cmp1, label %if.then2, label %if.end6 if.then2: ; preds = %if.end - %call = tail call ptr @sk_new_null() #4 + %call = tail call ptr @sk_new_null() #5 %cmp3 = icmp eq ptr %call, null br i1 %cmp3, label %if.end19.thread, label %if.end6 if.end19.thread: ; preds = %if.then2 - tail call void @ERR_put_error(i32 noundef 11, i32 noundef 0, i32 noundef 65, ptr noundef nonnull @.str, i32 noundef 144) #4 + tail call void @ERR_put_error(i32 noundef 11, i32 noundef 0, i32 noundef 65, ptr noundef nonnull @.str, i32 noundef 144) #5 br label %return if.end6: ; preds = %if.end, %if.then2 %sk.2 = phi ptr [ %call, %if.then2 ], [ %0, %if.end ] - %call7 = tail call ptr @X509_ATTRIBUTE_dup(ptr noundef %attr) #4 + %call7 = tail call ptr @X509_ATTRIBUTE_dup(ptr noundef %attr) #5 %cmp8 = icmp eq ptr %call7, null br i1 %cmp8, label %if.then21, label %if.end10 if.end10: ; preds = %if.end6 - %call11 = tail call i64 @sk_push(ptr noundef nonnull %sk.2, ptr noundef nonnull %call7) #4 + %call11 = tail call i64 @sk_push(ptr noundef nonnull %sk.2, ptr noundef nonnull %call7) #5 %tobool.not = icmp eq i64 %call11, 0 br i1 %tobool.not, label %if.end19.thread21, label %if.end13 @@ -192,12 +192,12 @@ if.then15: ; preds = %if.end13 br label %return if.end19.thread21: ; preds = %if.end10 - tail call void @ERR_put_error(i32 noundef 11, i32 noundef 0, i32 noundef 65, ptr noundef nonnull @.str, i32 noundef 144) #4 - tail call void @X509_ATTRIBUTE_free(ptr noundef nonnull %call7) #4 + tail call void @ERR_put_error(i32 noundef 11, i32 noundef 0, i32 noundef 65, ptr noundef nonnull @.str, i32 noundef 144) #5 + tail call void @X509_ATTRIBUTE_free(ptr noundef nonnull %call7) #5 br label %if.then21 if.then21: ; preds = %if.end6, %if.end19.thread21 - tail call void @sk_free(ptr noundef nonnull %sk.2) #4 + tail call void @sk_free(ptr noundef nonnull %sk.2) #5 br label %return return: ; preds = %if.end19.thread25, %if.end19.thread, %if.then21, %if.end13, %if.then15 @@ -220,12 +220,12 @@ declare void @sk_free(ptr noundef) local_unnamed_addr #1 ; Function Attrs: nounwind uwtable define hidden ptr @X509at_add1_attr_by_OBJ(ptr noundef %x, ptr noundef %obj, i32 noundef %type, ptr noundef %bytes, i32 noundef %len) local_unnamed_addr #0 { entry: - %call.i = tail call ptr @X509_ATTRIBUTE_new() #4 + %call.i = tail call ptr @X509_ATTRIBUTE_new() #5 %cmp2.i = icmp eq ptr %call.i, null br i1 %cmp2.i, label %if.then3.i, label %if.end4.i if.then3.i: ; preds = %entry - tail call void @ERR_put_error(i32 noundef 11, i32 noundef 0, i32 noundef 65, ptr noundef nonnull @.str, i32 noundef 239) #4 + tail call void @ERR_put_error(i32 noundef 11, i32 noundef 0, i32 noundef 65, ptr noundef nonnull @.str, i32 noundef 239) #5 br label %return if.end4.i: ; preds = %entry @@ -234,8 +234,8 @@ if.end4.i: ; preds = %entry X509_ATTRIBUTE_set1_object.exit.i: ; preds = %if.end4.i %0 = load ptr, ptr %call.i, align 8 - tail call void @ASN1_OBJECT_free(ptr noundef %0) #4 - %call.i.i = tail call ptr @OBJ_dup(ptr noundef nonnull %obj) #4 + tail call void @ASN1_OBJECT_free(ptr noundef %0) #5 + %call.i.i = tail call ptr @OBJ_dup(ptr noundef nonnull %obj) #5 store ptr %call.i.i, ptr %call.i, align 8 %cmp4.i.not.i = icmp eq ptr %call.i.i, null br i1 %cmp4.i.not.i, label %err.i, label %if.end7.i @@ -246,12 +246,12 @@ if.end7.i: ; preds = %X509_ATTRIBUTE_set1 br i1 %tobool9.not.i, label %err.i, label %if.end err.i: ; preds = %if.end7.i, %X509_ATTRIBUTE_set1_object.exit.i, %if.end4.i - tail call void @X509_ATTRIBUTE_free(ptr noundef nonnull %call.i) #4 + tail call void @X509_ATTRIBUTE_free(ptr noundef nonnull %call.i) #5 br label %return if.end: ; preds = %if.end7.i %call1 = tail call ptr @X509at_add1_attr(ptr noundef %x, ptr noundef nonnull %call.i) - tail call void @X509_ATTRIBUTE_free(ptr noundef nonnull %call.i) #4 + tail call void @X509_ATTRIBUTE_free(ptr noundef nonnull %call.i) #5 br label %return return: ; preds = %err.i, %if.then3.i, %if.end @@ -271,12 +271,12 @@ lor.lhs.false: ; preds = %entry br i1 %cmp1, label %if.then, label %if.end4 if.then: ; preds = %lor.lhs.false, %entry - %call = tail call ptr @X509_ATTRIBUTE_new() #4 + %call = tail call ptr @X509_ATTRIBUTE_new() #5 %cmp2 = icmp eq ptr %call, null br i1 %cmp2, label %if.then3, label %if.end4 if.then3: ; preds = %if.then - tail call void @ERR_put_error(i32 noundef 11, i32 noundef 0, i32 noundef 65, ptr noundef nonnull @.str, i32 noundef 239) #4 + tail call void @ERR_put_error(i32 noundef 11, i32 noundef 0, i32 noundef 65, ptr noundef nonnull @.str, i32 noundef 239) #5 br label %return if.end4: ; preds = %lor.lhs.false, %if.then @@ -286,8 +286,8 @@ if.end4: ; preds = %lor.lhs.false, %if. X509_ATTRIBUTE_set1_object.exit: ; preds = %if.end4 %1 = load ptr, ptr %ret.0, align 8 - tail call void @ASN1_OBJECT_free(ptr noundef %1) #4 - %call.i = tail call ptr @OBJ_dup(ptr noundef nonnull %obj) #4 + tail call void @ASN1_OBJECT_free(ptr noundef %1) #5 + %call.i = tail call ptr @OBJ_dup(ptr noundef nonnull %obj) #5 store ptr %call.i, ptr %ret.0, align 8 %cmp4.i.not = icmp eq ptr %call.i, null br i1 %cmp4.i.not, label %err, label %if.end7 @@ -318,7 +318,7 @@ lor.lhs.false17: ; preds = %err br i1 %cmp18.not, label %return, label %if.then19 if.then19: ; preds = %lor.lhs.false17, %err - tail call void @X509_ATTRIBUTE_free(ptr noundef nonnull %ret.0) #4 + tail call void @X509_ATTRIBUTE_free(ptr noundef nonnull %ret.0) #5 br label %return return: ; preds = %lor.lhs.false17, %if.then19, %if.end11, %land.lhs.true, %if.then14, %if.then3 @@ -329,27 +329,27 @@ return: ; preds = %lor.lhs.false17, %i ; Function Attrs: nounwind uwtable define hidden ptr @X509at_add1_attr_by_NID(ptr noundef %x, i32 noundef %nid, i32 noundef %type, ptr noundef %bytes, i32 noundef %len) local_unnamed_addr #0 { entry: - %call.i = tail call ptr @OBJ_nid2obj(i32 noundef %nid) #4 + %call.i = tail call ptr @OBJ_nid2obj(i32 noundef %nid) #5 %cmp.i = icmp eq ptr %call.i, null br i1 %cmp.i, label %if.then.i, label %if.end.i if.then.i: ; preds = %entry - tail call void @ERR_put_error(i32 noundef 11, i32 noundef 0, i32 noundef 129, ptr noundef nonnull @.str, i32 noundef 224) #4 + tail call void @ERR_put_error(i32 noundef 11, i32 noundef 0, i32 noundef 129, ptr noundef nonnull @.str, i32 noundef 224) #5 br label %return if.end.i: ; preds = %entry - %call.i4 = tail call ptr @X509_ATTRIBUTE_new() #4 + %call.i4 = tail call ptr @X509_ATTRIBUTE_new() #5 %cmp2.i = icmp eq ptr %call.i4, null br i1 %cmp2.i, label %if.then3.i, label %X509_ATTRIBUTE_set1_object.exit.i if.then3.i: ; preds = %if.end.i - tail call void @ERR_put_error(i32 noundef 11, i32 noundef 0, i32 noundef 65, ptr noundef nonnull @.str, i32 noundef 239) #4 + tail call void @ERR_put_error(i32 noundef 11, i32 noundef 0, i32 noundef 65, ptr noundef nonnull @.str, i32 noundef 239) #5 br label %return X509_ATTRIBUTE_set1_object.exit.i: ; preds = %if.end.i %0 = load ptr, ptr %call.i4, align 8 - tail call void @ASN1_OBJECT_free(ptr noundef %0) #4 - %call.i.i = tail call ptr @OBJ_dup(ptr noundef nonnull %call.i) #4 + tail call void @ASN1_OBJECT_free(ptr noundef %0) #5 + %call.i.i = tail call ptr @OBJ_dup(ptr noundef nonnull %call.i) #5 store ptr %call.i.i, ptr %call.i4, align 8 %cmp4.i.not.i = icmp eq ptr %call.i.i, null br i1 %cmp4.i.not.i, label %err.i, label %if.end7.i @@ -360,12 +360,12 @@ if.end7.i: ; preds = %X509_ATTRIBUTE_set1 br i1 %tobool9.not.i, label %err.i, label %if.end err.i: ; preds = %if.end7.i, %X509_ATTRIBUTE_set1_object.exit.i - tail call void @X509_ATTRIBUTE_free(ptr noundef nonnull %call.i4) #4 + tail call void @X509_ATTRIBUTE_free(ptr noundef nonnull %call.i4) #5 br label %return if.end: ; preds = %if.end7.i %call1 = tail call ptr @X509at_add1_attr(ptr noundef %x, ptr noundef nonnull %call.i4) - tail call void @X509_ATTRIBUTE_free(ptr noundef nonnull %call.i4) #4 + tail call void @X509_ATTRIBUTE_free(ptr noundef nonnull %call.i4) #5 br label %return return: ; preds = %err.i, %if.then3.i, %if.then.i, %if.end @@ -376,12 +376,12 @@ return: ; preds = %err.i, %if.then3.i, ; Function Attrs: nounwind uwtable define hidden ptr @X509_ATTRIBUTE_create_by_NID(ptr noundef %attr, i32 noundef %nid, i32 noundef %atrtype, ptr noundef %data, i32 noundef %len) local_unnamed_addr #0 { entry: - %call = tail call ptr @OBJ_nid2obj(i32 noundef %nid) #4 + %call = tail call ptr @OBJ_nid2obj(i32 noundef %nid) #5 %cmp = icmp eq ptr %call, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry - tail call void @ERR_put_error(i32 noundef 11, i32 noundef 0, i32 noundef 129, ptr noundef nonnull @.str, i32 noundef 224) #4 + tail call void @ERR_put_error(i32 noundef 11, i32 noundef 0, i32 noundef 129, ptr noundef nonnull @.str, i32 noundef 224) #5 br label %return if.end: ; preds = %entry @@ -396,28 +396,28 @@ return: ; preds = %if.end, %if.then ; Function Attrs: nounwind uwtable define hidden ptr @X509at_add1_attr_by_txt(ptr noundef %x, ptr noundef %attrname, i32 noundef %type, ptr noundef %bytes, i32 noundef %len) local_unnamed_addr #0 { entry: - %call.i = tail call ptr @OBJ_txt2obj(ptr noundef %attrname, i32 noundef 0) #4 + %call.i = tail call ptr @OBJ_txt2obj(ptr noundef %attrname, i32 noundef 0) #5 %cmp.i = icmp eq ptr %call.i, null br i1 %cmp.i, label %X509_ATTRIBUTE_create_by_txt.exit.thread, label %if.end.i X509_ATTRIBUTE_create_by_txt.exit.thread: ; preds = %entry - tail call void @ERR_put_error(i32 noundef 11, i32 noundef 0, i32 noundef 111, ptr noundef nonnull @.str, i32 noundef 269) #4 - tail call void (i32, ...) @ERR_add_error_data(i32 noundef 2, ptr noundef nonnull @.str.1, ptr noundef %attrname) #4 + tail call void @ERR_put_error(i32 noundef 11, i32 noundef 0, i32 noundef 111, ptr noundef nonnull @.str, i32 noundef 269) #5 + tail call void (i32, ...) @ERR_add_error_data(i32 noundef 2, ptr noundef nonnull @.str.1, ptr noundef %attrname) #5 br label %return if.end.i: ; preds = %entry - %call.i4 = tail call ptr @X509_ATTRIBUTE_new() #4 + %call.i4 = tail call ptr @X509_ATTRIBUTE_new() #5 %cmp2.i = icmp eq ptr %call.i4, null br i1 %cmp2.i, label %if.then3.i, label %X509_ATTRIBUTE_set1_object.exit.i if.then3.i: ; preds = %if.end.i - tail call void @ERR_put_error(i32 noundef 11, i32 noundef 0, i32 noundef 65, ptr noundef nonnull @.str, i32 noundef 239) #4 + tail call void @ERR_put_error(i32 noundef 11, i32 noundef 0, i32 noundef 65, ptr noundef nonnull @.str, i32 noundef 239) #5 br label %X509_ATTRIBUTE_create_by_txt.exit.thread8 X509_ATTRIBUTE_set1_object.exit.i: ; preds = %if.end.i %0 = load ptr, ptr %call.i4, align 8 - tail call void @ASN1_OBJECT_free(ptr noundef %0) #4 - %call.i.i = tail call ptr @OBJ_dup(ptr noundef nonnull %call.i) #4 + tail call void @ASN1_OBJECT_free(ptr noundef %0) #5 + %call.i.i = tail call ptr @OBJ_dup(ptr noundef nonnull %call.i) #5 store ptr %call.i.i, ptr %call.i4, align 8 %cmp4.i.not.i = icmp eq ptr %call.i.i, null br i1 %cmp4.i.not.i, label %err.i, label %if.end7.i @@ -428,17 +428,17 @@ if.end7.i: ; preds = %X509_ATTRIBUTE_set1 br i1 %tobool9.not.i, label %err.i, label %if.end err.i: ; preds = %if.end7.i, %X509_ATTRIBUTE_set1_object.exit.i - tail call void @X509_ATTRIBUTE_free(ptr noundef nonnull %call.i4) #4 + tail call void @X509_ATTRIBUTE_free(ptr noundef nonnull %call.i4) #5 br label %X509_ATTRIBUTE_create_by_txt.exit.thread8 X509_ATTRIBUTE_create_by_txt.exit.thread8: ; preds = %if.then3.i, %err.i - tail call void @ASN1_OBJECT_free(ptr noundef nonnull %call.i) #4 + tail call void @ASN1_OBJECT_free(ptr noundef nonnull %call.i) #5 br label %return if.end: ; preds = %if.end7.i - tail call void @ASN1_OBJECT_free(ptr noundef nonnull %call.i) #4 + tail call void @ASN1_OBJECT_free(ptr noundef nonnull %call.i) #5 %call1 = tail call ptr @X509at_add1_attr(ptr noundef %x, ptr noundef nonnull %call.i4) - tail call void @X509_ATTRIBUTE_free(ptr noundef nonnull %call.i4) #4 + tail call void @X509_ATTRIBUTE_free(ptr noundef nonnull %call.i4) #5 br label %return return: ; preds = %X509_ATTRIBUTE_create_by_txt.exit.thread8, %X509_ATTRIBUTE_create_by_txt.exit.thread, %if.end @@ -449,18 +449,18 @@ return: ; preds = %X509_ATTRIBUTE_crea ; Function Attrs: nounwind uwtable define hidden ptr @X509_ATTRIBUTE_create_by_txt(ptr noundef %attr, ptr noundef %atrname, i32 noundef %type, ptr noundef %bytes, i32 noundef %len) local_unnamed_addr #0 { entry: - %call = tail call ptr @OBJ_txt2obj(ptr noundef %atrname, i32 noundef 0) #4 + %call = tail call ptr @OBJ_txt2obj(ptr noundef %atrname, i32 noundef 0) #5 %cmp = icmp eq ptr %call, null br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry - tail call void @ERR_put_error(i32 noundef 11, i32 noundef 0, i32 noundef 111, ptr noundef nonnull @.str, i32 noundef 269) #4 - tail call void (i32, ...) @ERR_add_error_data(i32 noundef 2, ptr noundef nonnull @.str.1, ptr noundef %atrname) #4 + tail call void @ERR_put_error(i32 noundef 11, i32 noundef 0, i32 noundef 111, ptr noundef nonnull @.str, i32 noundef 269) #5 + tail call void (i32, ...) @ERR_add_error_data(i32 noundef 2, ptr noundef nonnull @.str.1, ptr noundef %atrname) #5 br label %return if.end: ; preds = %entry %call1 = tail call ptr @X509_ATTRIBUTE_create_by_OBJ(ptr noundef %attr, ptr noundef nonnull %call, i32 noundef %type, ptr noundef %bytes, i32 noundef %len) - tail call void @ASN1_OBJECT_free(ptr noundef nonnull %call) #4 + tail call void @ASN1_OBJECT_free(ptr noundef nonnull %call) #5 br label %return return: ; preds = %if.end, %if.then @@ -475,7 +475,7 @@ entry: br i1 %cmp.i, label %return, label %if.end.i if.end.i: ; preds = %entry - %call.i = tail call i64 @sk_num(ptr noundef nonnull %x) #4 + %call.i = tail call i64 @sk_num(ptr noundef nonnull %x) #5 %0 = tail call i32 @llvm.smax.i32(i32 %lastpos, i32 -1) %smax.i = sext i32 %0 to i64 %sext.i = shl i64 %call.i, 32 @@ -489,9 +489,9 @@ for.cond.i: ; preds = %for.body.i, %if.end br i1 %cmp4.i, label %for.body.i, label %return for.body.i: ; preds = %for.cond.i - %call7.i = tail call ptr @sk_value(ptr noundef nonnull %x, i64 noundef %indvars.iv.next.i) #4 + %call7.i = tail call ptr @sk_value(ptr noundef nonnull %x, i64 noundef %indvars.iv.next.i) #5 %2 = load ptr, ptr %call7.i, align 8 - %call8.i = tail call i32 @OBJ_cmp(ptr noundef %2, ptr noundef %obj) #4 + %call8.i = tail call i32 @OBJ_cmp(ptr noundef %2, ptr noundef %obj) #5 %cmp9.i = icmp eq i32 %call8.i, 0 br i1 %cmp9.i, label %X509at_get_attr_by_OBJ.exit, label %for.cond.i, !llvm.loop !7 @@ -502,10 +502,10 @@ X509at_get_attr_by_OBJ.exit: ; preds = %for.body.i if.end: ; preds = %X509at_get_attr_by_OBJ.exit %cmp1 = icmp slt i32 %lastpos, -1 - br i1 %cmp1, label %if.end.i10, label %if.end5 + br i1 %cmp1, label %if.end.i10, label %lor.lhs.false2.i if.end.i10: ; preds = %if.end - %call.i11 = tail call i64 @sk_num(ptr noundef nonnull %x) #4 + %call.i11 = tail call i64 @sk_num(ptr noundef nonnull %x) #5 %4 = tail call i32 @llvm.smax.i32(i32 %3, i32 -1) %smax.i12 = sext i32 %4 to i64 %sext.i13 = shl i64 %call.i11, 32 @@ -516,48 +516,45 @@ for.cond.i14: ; preds = %for.body.i19, %if.e %indvars.iv.i15 = phi i64 [ %indvars.iv.next.i16, %for.body.i19 ], [ %smax.i12, %if.end.i10 ] %indvars.iv.next.i16 = add nsw i64 %indvars.iv.i15, 1 %cmp4.i17 = icmp slt i64 %indvars.iv.next.i16, %5 - br i1 %cmp4.i17, label %for.body.i19, label %if.end5 + br i1 %cmp4.i17, label %for.body.i19, label %lor.lhs.false2.i for.body.i19: ; preds = %for.cond.i14 - %call7.i20 = tail call ptr @sk_value(ptr noundef nonnull %x, i64 noundef %indvars.iv.next.i16) #4 + %call7.i20 = tail call ptr @sk_value(ptr noundef nonnull %x, i64 noundef %indvars.iv.next.i16) #5 %6 = load ptr, ptr %call7.i20, align 8 - %call8.i21 = tail call i32 @OBJ_cmp(ptr noundef %6, ptr noundef %obj) #4 + %call8.i21 = tail call i32 @OBJ_cmp(ptr noundef %6, ptr noundef %obj) #5 %cmp9.i22 = icmp eq i32 %call8.i21, 0 br i1 %cmp9.i22, label %X509at_get_attr_by_OBJ.exit24, label %for.cond.i14, !llvm.loop !7 X509at_get_attr_by_OBJ.exit24: ; preds = %for.body.i19 %cmp3.not = icmp eq i64 %indvars.iv.next.i16, -1 - br i1 %cmp3.not, label %if.end5, label %return + br i1 %cmp3.not, label %lor.lhs.false2.i, label %return -if.end5: ; preds = %for.cond.i14, %X509at_get_attr_by_OBJ.exit24, %if.end - %cmp1.i = icmp slt i64 %indvars.iv.i, -1 - br i1 %cmp1.i, label %X509at_get_attr.exit, label %lor.lhs.false2.i - -lor.lhs.false2.i: ; preds = %if.end5 - %call.i26 = tail call i64 @sk_num(ptr noundef nonnull %x) #4 +lor.lhs.false2.i: ; preds = %for.cond.i14, %if.end, %X509at_get_attr_by_OBJ.exit24 + %call.i26 = tail call i64 @sk_num(ptr noundef nonnull %x) #5 %conv.i = and i64 %indvars.iv.next.i, 4294967295 %cmp3.not.i = icmp ugt i64 %call.i26, %conv.i - br i1 %cmp3.not.i, label %if.else.i, label %X509at_get_attr.exit - -if.else.i: ; preds = %lor.lhs.false2.i - %call6.i = tail call ptr @sk_value(ptr noundef nonnull %x, i64 noundef %conv.i) #4 - br label %X509at_get_attr.exit + br i1 %cmp3.not.i, label %X509at_get_attr.exit, label %X509at_get_attr.exit.thread -X509at_get_attr.exit: ; preds = %if.end5, %lor.lhs.false2.i, %if.else.i - %retval.0.i27 = phi ptr [ %call6.i, %if.else.i ], [ null, %lor.lhs.false2.i ], [ null, %if.end5 ] +X509at_get_attr.exit: ; preds = %lor.lhs.false2.i + %call6.i = tail call ptr @sk_value(ptr noundef nonnull %x, i64 noundef %conv.i) #5 %cmp7 = icmp slt i32 %lastpos, -2 br i1 %cmp7, label %land.lhs.true8, label %if.end12 +X509at_get_attr.exit.thread: ; preds = %lor.lhs.false2.i + %cmp750 = icmp sgt i32 %lastpos, -3 + tail call void @llvm.assume(i1 %cmp750) + br label %return + land.lhs.true8: ; preds = %X509at_get_attr.exit - %single.i = getelementptr inbounds i8, ptr %retval.0.i27, i64 8 + %single.i = getelementptr inbounds i8, ptr %call6.i, i64 8 %7 = load i32, ptr %single.i, align 8 %tobool.not.i = icmp eq i32 %7, 0 - %value.i = getelementptr inbounds i8, ptr %retval.0.i27, i64 16 + %value.i = getelementptr inbounds i8, ptr %call6.i, i64 16 %8 = load ptr, ptr %value.i, align 8 br i1 %tobool.not.i, label %if.then.i, label %X509_ATTRIBUTE_count.exit if.then.i: ; preds = %land.lhs.true8 - %call.i30 = tail call i64 @sk_num(ptr noundef %8) #4 + %call.i30 = tail call i64 @sk_num(ptr noundef %8) #5 %9 = and i64 %call.i30, 4294967295 %10 = icmp eq i64 %9, 1 br i1 %10, label %if.end.i.i, label %return @@ -567,19 +564,19 @@ X509_ATTRIBUTE_count.exit: ; preds = %land.lhs.true8 br i1 %tobool2.not.i.not, label %return, label %if.end.i.i if.end12: ; preds = %X509at_get_attr.exit - %cmp.i.i = icmp eq ptr %retval.0.i27, null + %cmp.i.i = icmp eq ptr %call6.i, null br i1 %cmp.i.i, label %return, label %if.end.i.i if.end.i.i: ; preds = %if.then.i, %X509_ATTRIBUTE_count.exit, %if.end12 - %single.i.i.i = getelementptr inbounds i8, ptr %retval.0.i27, i64 8 + %single.i.i.i = getelementptr inbounds i8, ptr %call6.i, i64 8 %11 = load i32, ptr %single.i.i.i, align 8 %tobool.not.i.i.i = icmp eq i32 %11, 0 - %value.i.i.i = getelementptr inbounds i8, ptr %retval.0.i27, i64 16 + %value.i.i.i = getelementptr inbounds i8, ptr %call6.i, i64 16 %12 = load ptr, ptr %value.i.i.i, align 8 br i1 %tobool.not.i.i.i, label %if.then.i.i.i, label %X509_ATTRIBUTE_count.exit.i.i if.then.i.i.i: ; preds = %if.end.i.i - %call.i.i.i = tail call i64 @sk_num(ptr noundef %12) #4 + %call.i.i.i = tail call i64 @sk_num(ptr noundef %12) #5 %conv.i.i.i = trunc i64 %call.i.i.i to i32 %13 = icmp sgt i32 %conv.i.i.i, 0 br i1 %13, label %if.end3.i.i, label %return @@ -595,7 +592,7 @@ if.end3.i.i: ; preds = %if.then.i.i.i, %X50 br i1 %tobool.not.i.i, label %if.then4.i.i, label %X509_ATTRIBUTE_get0_type.exit.i if.then4.i.i: ; preds = %if.end3.i.i - %call5.i.i = tail call ptr @sk_value(ptr noundef %15, i64 noundef 0) #4 + %call5.i.i = tail call ptr @sk_value(ptr noundef %15, i64 noundef 0) #5 br label %X509_ATTRIBUTE_get0_type.exit.i X509_ATTRIBUTE_get0_type.exit.i: ; preds = %if.then4.i.i, %if.end3.i.i @@ -604,12 +601,12 @@ X509_ATTRIBUTE_get0_type.exit.i: ; preds = %if.then4.i.i, %if.e br i1 %tobool.not.i33, label %return, label %if.end.i34 if.end.i34: ; preds = %X509_ATTRIBUTE_get0_type.exit.i - %call1.i = tail call i32 @ASN1_TYPE_get(ptr noundef nonnull %retval.0.i.i) #4 + %call1.i = tail call i32 @ASN1_TYPE_get(ptr noundef nonnull %retval.0.i.i) #5 %cmp.not.i = icmp eq i32 %type, %call1.i br i1 %cmp.not.i, label %if.end3.i, label %if.then2.i if.then2.i: ; preds = %if.end.i34 - tail call void @ERR_put_error(i32 noundef 11, i32 noundef 0, i32 noundef 134, ptr noundef nonnull @.str, i32 noundef 359) #4 + tail call void @ERR_put_error(i32 noundef 11, i32 noundef 0, i32 noundef 134, ptr noundef nonnull @.str, i32 noundef 359) #5 br label %return if.end3.i: ; preds = %if.end.i34 @@ -617,8 +614,8 @@ if.end3.i: ; preds = %if.end.i34 %16 = load ptr, ptr %value.i35, align 8 br label %return -return: ; preds = %for.cond.i, %if.then.i.i.i, %if.then.i, %entry, %if.end3.i, %if.then2.i, %X509_ATTRIBUTE_get0_type.exit.i, %X509_ATTRIBUTE_count.exit.i.i, %if.end12, %X509_ATTRIBUTE_count.exit, %X509at_get_attr_by_OBJ.exit24, %X509at_get_attr_by_OBJ.exit - %retval.0 = phi ptr [ null, %X509at_get_attr_by_OBJ.exit ], [ null, %X509at_get_attr_by_OBJ.exit24 ], [ null, %X509_ATTRIBUTE_count.exit ], [ null, %if.then2.i ], [ %16, %if.end3.i ], [ null, %X509_ATTRIBUTE_get0_type.exit.i ], [ null, %if.end12 ], [ null, %X509_ATTRIBUTE_count.exit.i.i ], [ null, %entry ], [ null, %if.then.i ], [ null, %if.then.i.i.i ], [ null, %for.cond.i ] +return: ; preds = %for.cond.i, %X509at_get_attr.exit.thread, %if.then.i.i.i, %if.then.i, %entry, %if.end3.i, %if.then2.i, %X509_ATTRIBUTE_get0_type.exit.i, %X509_ATTRIBUTE_count.exit.i.i, %if.end12, %X509_ATTRIBUTE_count.exit, %X509at_get_attr_by_OBJ.exit24, %X509at_get_attr_by_OBJ.exit + %retval.0 = phi ptr [ null, %X509at_get_attr_by_OBJ.exit ], [ null, %X509at_get_attr_by_OBJ.exit24 ], [ null, %X509_ATTRIBUTE_count.exit ], [ null, %if.then2.i ], [ %16, %if.end3.i ], [ null, %X509_ATTRIBUTE_get0_type.exit.i ], [ null, %if.end12 ], [ null, %X509_ATTRIBUTE_count.exit.i.i ], [ null, %entry ], [ null, %if.then.i ], [ null, %if.then.i.i.i ], [ null, %X509at_get_attr.exit.thread ], [ null, %for.cond.i ] ret ptr %retval.0 } @@ -633,7 +630,7 @@ entry: br i1 %tobool.not, label %if.then, label %if.end if.then: ; preds = %entry - %call = tail call i64 @sk_num(ptr noundef %1) #4 + %call = tail call i64 @sk_num(ptr noundef %1) #5 %conv = trunc i64 %call to i32 br label %return @@ -662,7 +659,7 @@ if.end.i: ; preds = %entry br i1 %tobool.not.i.i, label %if.then.i.i, label %if.end.i.i if.then.i.i: ; preds = %if.end.i - %call.i.i = tail call i64 @sk_num(ptr noundef %1) #4 + %call.i.i = tail call i64 @sk_num(ptr noundef %1) #5 %conv.i.i = trunc i64 %call.i.i to i32 br label %X509_ATTRIBUTE_count.exit.i @@ -684,7 +681,7 @@ if.end3.i: ; preds = %X509_ATTRIBUTE_coun if.then4.i: ; preds = %if.end3.i %conv.i = sext i32 %idx to i64 - %call5.i = tail call ptr @sk_value(ptr noundef %3, i64 noundef %conv.i) #4 + %call5.i = tail call ptr @sk_value(ptr noundef %3, i64 noundef %conv.i) #5 br label %X509_ATTRIBUTE_get0_type.exit X509_ATTRIBUTE_get0_type.exit: ; preds = %if.end3.i, %if.then4.i @@ -693,12 +690,12 @@ X509_ATTRIBUTE_get0_type.exit: ; preds = %if.end3.i, %if.then br i1 %tobool.not, label %return, label %if.end if.end: ; preds = %X509_ATTRIBUTE_get0_type.exit - %call1 = tail call i32 @ASN1_TYPE_get(ptr noundef nonnull %retval.0.i) #4 + %call1 = tail call i32 @ASN1_TYPE_get(ptr noundef nonnull %retval.0.i) #5 %cmp.not = icmp eq i32 %atrtype, %call1 br i1 %cmp.not, label %if.end3, label %if.then2 if.then2: ; preds = %if.end - tail call void @ERR_put_error(i32 noundef 11, i32 noundef 0, i32 noundef 134, ptr noundef nonnull @.str, i32 noundef 359) #4 + tail call void @ERR_put_error(i32 noundef 11, i32 noundef 0, i32 noundef 134, ptr noundef nonnull @.str, i32 noundef 359) #5 br label %return if.end3: ; preds = %if.end @@ -723,8 +720,8 @@ entry: if.end: ; preds = %entry %0 = load ptr, ptr %attr, align 8 - tail call void @ASN1_OBJECT_free(ptr noundef %0) #4 - %call = tail call ptr @OBJ_dup(ptr noundef nonnull %obj) #4 + tail call void @ASN1_OBJECT_free(ptr noundef %0) #5 + %call = tail call ptr @OBJ_dup(ptr noundef nonnull %obj) #5 store ptr %call, ptr %attr, align 8 %cmp4 = icmp ne ptr %call, null %conv = zext i1 %cmp4 to i32 @@ -748,13 +745,13 @@ if.end: ; preds = %entry if.then2: ; preds = %if.end %0 = load ptr, ptr %attr, align 8 - %call = tail call i32 @OBJ_obj2nid(ptr noundef %0) #4 - %call3 = tail call ptr @ASN1_STRING_set_by_NID(ptr noundef null, ptr noundef %data, i32 noundef %len, i32 noundef %attrtype, i32 noundef %call) #4 + %call = tail call i32 @OBJ_obj2nid(ptr noundef %0) #5 + %call3 = tail call ptr @ASN1_STRING_set_by_NID(ptr noundef null, ptr noundef %data, i32 noundef %len, i32 noundef %attrtype, i32 noundef %call) #5 %tobool4.not = icmp eq ptr %call3, null br i1 %tobool4.not, label %if.then5, label %if.end6 if.then5: ; preds = %if.then2 - tail call void @ERR_put_error(i32 noundef 11, i32 noundef 0, i32 noundef 12, ptr noundef nonnull @.str, i32 noundef 299) #4 + tail call void @ERR_put_error(i32 noundef 11, i32 noundef 0, i32 noundef 12, ptr noundef nonnull @.str, i32 noundef 299) #5 br label %return if.end6: ; preds = %if.then2 @@ -767,19 +764,19 @@ if.else: ; preds = %if.end br i1 %cmp.not, label %if.end17, label %if.then7 if.then7: ; preds = %if.else - %call8 = tail call ptr @ASN1_STRING_type_new(i32 noundef %attrtype) #4 + %call8 = tail call ptr @ASN1_STRING_type_new(i32 noundef %attrtype) #5 %tobool9.not = icmp eq ptr %call8, null br i1 %tobool9.not, label %err, label %if.end11 if.end11: ; preds = %if.then7 - %call12 = tail call i32 @ASN1_STRING_set(ptr noundef nonnull %call8, ptr noundef %data, i32 noundef %len) #4 + %call12 = tail call i32 @ASN1_STRING_set(ptr noundef nonnull %call8, ptr noundef %data, i32 noundef %len) #5 %tobool13.not = icmp eq i32 %call12, 0 br i1 %tobool13.not, label %err, label %if.end17 if.end17: ; preds = %if.end11, %if.else, %if.end6 %stmp.0 = phi ptr [ %call3, %if.end6 ], [ null, %if.else ], [ %call8, %if.end11 ] %atype.0 = phi i32 [ %1, %if.end6 ], [ 0, %if.else ], [ %attrtype, %if.end11 ] - %call18 = tail call ptr @sk_new_null() #4 + %call18 = tail call ptr @sk_new_null() #5 %value = getelementptr inbounds i8, ptr %attr, i64 16 store ptr %call18, ptr %value, align 8 %tobool19.not = icmp eq ptr %call18, null @@ -792,7 +789,7 @@ if.end21: ; preds = %if.end17 br i1 %cmp22, label %return, label %if.end24 if.end24: ; preds = %if.end21 - %call25 = tail call ptr @ASN1_TYPE_new() #4 + %call25 = tail call ptr @ASN1_TYPE_new() #5 %tobool26.not = icmp eq ptr %call25, null br i1 %tobool26.not, label %err, label %if.end28 @@ -802,22 +799,22 @@ if.end28: ; preds = %if.end24 br i1 %brmerge, label %if.else37, label %if.then32 if.then32: ; preds = %if.end28 - %call33 = tail call i32 @ASN1_TYPE_set1(ptr noundef nonnull %call25, i32 noundef %attrtype, ptr noundef %data) #4 + %call33 = tail call i32 @ASN1_TYPE_set1(ptr noundef nonnull %call25, i32 noundef %attrtype, ptr noundef %data) #5 %tobool34.not = icmp eq i32 %call33, 0 br i1 %tobool34.not, label %err, label %if.end38 if.else37: ; preds = %if.end28 - tail call void @ASN1_TYPE_set(ptr noundef nonnull %call25, i32 noundef %atype.0, ptr noundef %stmp.0) #4 + tail call void @ASN1_TYPE_set(ptr noundef nonnull %call25, i32 noundef %atype.0, ptr noundef %stmp.0) #5 br label %if.end38 if.end38: ; preds = %if.then32, %if.else37 %2 = load ptr, ptr %value, align 8 - %call40 = tail call i64 @sk_push(ptr noundef %2, ptr noundef nonnull %call25) #4 + %call40 = tail call i64 @sk_push(ptr noundef %2, ptr noundef nonnull %call25) #5 %tobool41.not = icmp eq i64 %call40, 0 br i1 %tobool41.not, label %err, label %return err: ; preds = %if.end38, %if.then32, %if.end24, %if.end17, %if.end11, %if.then7 - tail call void @ERR_put_error(i32 noundef 11, i32 noundef 0, i32 noundef 65, ptr noundef nonnull @.str, i32 noundef 331) #4 + tail call void @ERR_put_error(i32 noundef 11, i32 noundef 0, i32 noundef 65, ptr noundef nonnull @.str, i32 noundef 331) #5 br label %return return: ; preds = %if.end38, %if.end21, %entry, %err, %if.then5 @@ -877,7 +874,7 @@ if.end: ; preds = %entry br i1 %tobool.not.i, label %if.then.i, label %if.end.i if.then.i: ; preds = %if.end - %call.i = tail call i64 @sk_num(ptr noundef %1) #4 + %call.i = tail call i64 @sk_num(ptr noundef %1) #5 %conv.i = trunc i64 %call.i to i32 br label %X509_ATTRIBUTE_count.exit @@ -899,7 +896,7 @@ if.end3: ; preds = %X509_ATTRIBUTE_coun if.then4: ; preds = %if.end3 %conv = sext i32 %idx to i64 - %call5 = tail call ptr @sk_value(ptr noundef %3, i64 noundef %conv) #4 + %call5 = tail call ptr @sk_value(ptr noundef %3, i64 noundef %conv) #5 br label %return return: ; preds = %if.end3, %X509_ATTRIBUTE_count.exit, %entry, %if.then4 @@ -912,11 +909,15 @@ declare i32 @ASN1_TYPE_get(ptr noundef) local_unnamed_addr #1 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smax.i32(i32, i32) #3 +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) +declare void @llvm.assume(i1 noundef) #4 + attributes #0 = { 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 = { "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 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) 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 #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #4 = { nounwind } +attributes #4 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } +attributes #5 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4, !5, !6} diff --git a/bench/libquic/optimized/x509name.c.ll b/bench/libquic/optimized/x509name.c.ll index 3a129899251..8998e21f0e3 100644 --- a/bench/libquic/optimized/x509name.c.ll +++ b/bench/libquic/optimized/x509name.c.ll @@ -50,13 +50,9 @@ for.body.i: ; preds = %for.cond.i %3 = load ptr, ptr %call7.i, align 8 %call8.i = tail call i32 @OBJ_cmp(ptr noundef %3, ptr noundef %obj) #7 %cmp9.i = icmp eq i32 %call8.i, 0 - br i1 %cmp9.i, label %X509_NAME_get_index_by_OBJ.exit, label %for.cond.i, !llvm.loop !7 + br i1 %cmp9.i, label %if.end, label %for.cond.i, !llvm.loop !7 -X509_NAME_get_index_by_OBJ.exit: ; preds = %for.body.i - %cmp = icmp slt i64 %indvars.iv.i, -1 - br i1 %cmp, label %return, label %if.end - -if.end: ; preds = %X509_NAME_get_index_by_OBJ.exit +if.end: ; preds = %for.body.i %4 = load ptr, ptr %name, align 8 %call.i13 = tail call i64 @sk_num(ptr noundef %4) #7 %conv.i = and i64 %indvars.iv.next.i, 4294967295 @@ -84,8 +80,8 @@ if.end9: ; preds = %if.end store i8 0, ptr %arrayidx, align 1 br label %return -return: ; preds = %for.cond.i, %entry, %if.end, %X509_NAME_get_index_by_OBJ.exit, %if.end9 - %retval.0 = phi i32 [ %cond, %if.end9 ], [ -1, %X509_NAME_get_index_by_OBJ.exit ], [ %7, %if.end ], [ -1, %entry ], [ -1, %for.cond.i ] +return: ; preds = %for.cond.i, %entry, %if.end, %if.end9 + %retval.0 = phi i32 [ %cond, %if.end9 ], [ %7, %if.end ], [ -1, %entry ], [ -1, %for.cond.i ] ret i32 %retval.0 } diff --git a/bench/llama.cpp/optimized/ggml.c.ll b/bench/llama.cpp/optimized/ggml.c.ll index 2163a692bd1..2c5b3bb614d 100644 --- a/bench/llama.cpp/optimized/ggml.c.ll +++ b/bench/llama.cpp/optimized/ggml.c.ll @@ -19801,20 +19801,16 @@ for.body: ; preds = %for.body.lr.ph, %fo %9 = load ptr, ptr %nodes, align 8 %arrayidx = getelementptr inbounds ptr, ptr %9, i64 %indvars.iv %10 = load ptr, ptr %arrayidx, align 8 - %cmp5.i = icmp sgt i32 %8, 0 - br i1 %cmp5.i, label %for.body.lr.ph.i, label %if.end9 - -for.body.lr.ph.i: ; preds = %for.body %wide.trip.count.i = zext nneg i32 %8 to i64 br label %for.body.i for.cond.i: ; preds = %for.body.i %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i - br i1 %exitcond.not.i, label %if.end9, label %for.body.i, !llvm.loop !91 + br i1 %exitcond.not.i, label %if.end9.loopexit, label %for.body.i, !llvm.loop !91 -for.body.i: ; preds = %for.cond.i, %for.body.lr.ph.i - %indvars.iv.i = phi i64 [ 0, %for.body.lr.ph.i ], [ %indvars.iv.next.i, %for.cond.i ] +for.body.i: ; preds = %for.cond.i, %for.body + %indvars.iv.i = phi i64 [ 0, %for.body ], [ %indvars.iv.next.i, %for.cond.i ] %arrayidx.i = getelementptr inbounds ptr, ptr %9, i64 %indvars.iv.i %11 = load ptr, ptr %arrayidx.i, align 8 %grad.i = getelementptr inbounds i8, ptr %11, i64 152 @@ -19822,17 +19818,17 @@ for.body.i: ; preds = %for.cond.i, %for.bo %cmp1.i = icmp eq ptr %12, %10 br i1 %cmp1.i, label %for.inc, label %for.cond.i -if.end9: ; preds = %for.cond.i, %for.body +if.end9.loopexit: ; preds = %for.cond.i %is_param = getelementptr inbounds i8, ptr %10, i64 148 %13 = load i8, ptr %is_param, align 4 %tobool10 = trunc i8 %13 to i1 br i1 %tobool10, label %if.then11, label %if.else -if.then11: ; preds = %if.end9 +if.then11: ; preds = %if.end9.loopexit call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(7) %color, ptr noundef nonnull align 1 dereferenceable(7) @.str.183, i64 7, i1 false) br label %if.end27 -if.else: ; preds = %if.end9 +if.else: ; preds = %if.end9.loopexit %grad = getelementptr inbounds i8, ptr %10, i64 152 %14 = load ptr, ptr %grad, align 8 %tobool13.not = icmp eq ptr %14, null diff --git a/bench/llvm/optimized/DbiStreamBuilder.cpp.ll b/bench/llvm/optimized/DbiStreamBuilder.cpp.ll index 9b774c24795..51776ed2529 100644 --- a/bench/llvm/optimized/DbiStreamBuilder.cpp.ll +++ b/bench/llvm/optimized/DbiStreamBuilder.cpp.ll @@ -3963,7 +3963,6 @@ _ZNSt6vectorIP15LLVMOpaqueErrorSaIS1_EEC2EmRKS1_RKS2_.exit.i.i.i: ; preds = %97 %109 = urem i64 %102, %.sroa.speculated.i.i.i %110 = getelementptr inbounds nuw i8, ptr %17, i64 16 %111 = getelementptr inbounds nuw i8, ptr %17, i64 24 - %umax.i.i.i = call i64 @llvm.umax.i64(i64 %.sroa.speculated.i.i.i, i64 1) %112 = getelementptr inbounds i8, ptr %17, i64 8 br label %113 @@ -4004,7 +4003,7 @@ _ZNSt6vectorIP15LLVMOpaqueErrorSaIS1_EEC2EmRKS1_RKS2_.exit.i.i.i: ; preds = %97 _ZNSt8functionIFvvEED2Ev.exit.i.i.i: ; preds = %121, %113 %123 = add nuw nsw i64 %.02439.i.i.i, 1 - %exitcond.not.i.i.i = icmp eq i64 %123, %umax.i.i.i + %exitcond.not.i.i.i = icmp eq i64 %123, %.sroa.speculated.i.i.i br i1 %exitcond.not.i.i.i, label %124, label %113, !llvm.loop !65 124: ; preds = %_ZNSt8functionIFvvEED2Ev.exit.i.i.i diff --git a/bench/llvm/optimized/Signals.cpp.ll b/bench/llvm/optimized/Signals.cpp.ll index c701a092608..0b9bfe4264d 100644 --- a/bench/llvm/optimized/Signals.cpp.ll +++ b/bench/llvm/optimized/Signals.cpp.ll @@ -1951,37 +1951,40 @@ _ZL17InfoSignalHandleri.exit: ; preds = %5, %9 _ZL19RemoveFilesToRemovev.exit: ; preds = %25, %11 %28 = atomicrmw xchg ptr @_ZN12_GLOBAL__N_113FilesToRemoveE, i64 %12 seq_cst, align 8 call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %2) - switch i32 %3, label %.preheader [ + switch i32 %3, label %_ZN4llvm12is_containedIRA4_KiiEEbOT_RKT0_.exit [ i32 15, label %_ZN4llvm3sys17RunSignalHandlersEv.exit - i32 13, label %_ZN4llvm3sys17RunSignalHandlersEv.exit - i32 12, label %_ZN4llvm3sys17RunSignalHandlersEv.exit i32 2, label %_ZN4llvm3sys17RunSignalHandlersEv.exit i32 1, label %_ZN4llvm3sys17RunSignalHandlersEv.exit ] -.preheader: ; preds = %_ZL19RemoveFilesToRemovev.exit, %_ZNSt6atomicIN17CallbackAndCookie6StatusEE23compare_exchange_strongERS1_S1_St12memory_orderS4_.exit.i - %.0.idx13.i = phi i64 [ %.0.add.i, %_ZNSt6atomicIN17CallbackAndCookie6StatusEE23compare_exchange_strongERS1_S1_St12memory_orderS4_.exit.i ], [ 0, %_ZL19RemoveFilesToRemovev.exit ] +_ZN4llvm12is_containedIRA4_KiiEEbOT_RKT0_.exit: ; preds = %_ZL19RemoveFilesToRemovev.exit + %29 = and i32 %3, -2 + %or.cond = icmp eq i32 %29, 12 + br i1 %or.cond, label %_ZN4llvm3sys17RunSignalHandlersEv.exit, label %.preheader + +.preheader: ; preds = %_ZN4llvm12is_containedIRA4_KiiEEbOT_RKT0_.exit, %_ZNSt6atomicIN17CallbackAndCookie6StatusEE23compare_exchange_strongERS1_S1_St12memory_orderS4_.exit.i + %.0.idx13.i = phi i64 [ %.0.add.i, %_ZNSt6atomicIN17CallbackAndCookie6StatusEE23compare_exchange_strongERS1_S1_St12memory_orderS4_.exit.i ], [ 0, %_ZN4llvm12is_containedIRA4_KiiEEbOT_RKT0_.exit ] %.0.ptr14.i = getelementptr inbounds i8, ptr @_ZZL14CallBacksToRunvE9callbacks, i64 %.0.idx13.i - %29 = getelementptr inbounds nuw i8, ptr %.0.ptr14.i, i64 16 - %30 = cmpxchg ptr %29, i32 2, i32 3 seq_cst seq_cst, align 4 - %31 = extractvalue { i32, i1 } %30, 1 - br i1 %31, label %32, label %_ZNSt6atomicIN17CallbackAndCookie6StatusEE23compare_exchange_strongERS1_S1_St12memory_orderS4_.exit.i - -32: ; preds = %.preheader - %33 = load ptr, ptr %.0.ptr14.i, align 8 - %34 = getelementptr inbounds nuw i8, ptr %.0.ptr14.i, i64 8 - %35 = load ptr, ptr %34, align 8 - tail call void %33(ptr noundef %35) #25 + %30 = getelementptr inbounds nuw i8, ptr %.0.ptr14.i, i64 16 + %31 = cmpxchg ptr %30, i32 2, i32 3 seq_cst seq_cst, align 4 + %32 = extractvalue { i32, i1 } %31, 1 + br i1 %32, label %33, label %_ZNSt6atomicIN17CallbackAndCookie6StatusEE23compare_exchange_strongERS1_S1_St12memory_orderS4_.exit.i + +33: ; preds = %.preheader + %34 = load ptr, ptr %.0.ptr14.i, align 8 + %35 = getelementptr inbounds nuw i8, ptr %.0.ptr14.i, i64 8 + %36 = load ptr, ptr %35, align 8 + tail call void %34(ptr noundef %36) #25 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.0.ptr14.i, i8 0, i64 16, i1 false) - store atomic i32 0, ptr %29 seq_cst, align 8 + store atomic i32 0, ptr %30 seq_cst, align 8 br label %_ZNSt6atomicIN17CallbackAndCookie6StatusEE23compare_exchange_strongERS1_S1_St12memory_orderS4_.exit.i -_ZNSt6atomicIN17CallbackAndCookie6StatusEE23compare_exchange_strongERS1_S1_St12memory_orderS4_.exit.i: ; preds = %32, %.preheader +_ZNSt6atomicIN17CallbackAndCookie6StatusEE23compare_exchange_strongERS1_S1_St12memory_orderS4_.exit.i: ; preds = %33, %.preheader %.0.add.i = add nuw nsw i64 %.0.idx13.i, 24 %.not.i2 = icmp eq i64 %.0.add.i, 192 br i1 %.not.i2, label %_ZN4llvm3sys17RunSignalHandlersEv.exit, label %.preheader -_ZN4llvm3sys17RunSignalHandlersEv.exit: ; preds = %_ZNSt6atomicIN17CallbackAndCookie6StatusEE23compare_exchange_strongERS1_S1_St12memory_orderS4_.exit.i, %_ZL19RemoveFilesToRemovev.exit, %_ZL19RemoveFilesToRemovev.exit, %_ZL19RemoveFilesToRemovev.exit, %_ZL19RemoveFilesToRemovev.exit, %_ZL19RemoveFilesToRemovev.exit, %_ZL17InfoSignalHandleri.exit +_ZN4llvm3sys17RunSignalHandlersEv.exit: ; preds = %_ZNSt6atomicIN17CallbackAndCookie6StatusEE23compare_exchange_strongERS1_S1_St12memory_orderS4_.exit.i, %_ZL19RemoveFilesToRemovev.exit, %_ZL19RemoveFilesToRemovev.exit, %_ZL19RemoveFilesToRemovev.exit, %_ZN4llvm12is_containedIRA4_KiiEEbOT_RKT0_.exit, %_ZL17InfoSignalHandleri.exit ret void } @@ -3200,59 +3203,59 @@ _ZL19RemoveFilesToRemovev.exit: ; preds = %26, %_ZN4llvm3sys18 call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %2) switch i32 %0, label %.preheader [ i32 13, label %30 - i32 15, label %33 - i32 12, label %33 - i32 2, label %33 - i32 1, label %33 + i32 15, label %_ZN4llvm12is_containedIRA4_KiiEEbOT_RKT0_.exit.thread + i32 12, label %_ZN4llvm12is_containedIRA4_KiiEEbOT_RKT0_.exit.thread + i32 2, label %_ZN4llvm12is_containedIRA4_KiiEEbOT_RKT0_.exit.thread + i32 1, label %_ZN4llvm12is_containedIRA4_KiiEEbOT_RKT0_.exit.thread ] 30: ; preds = %_ZL19RemoveFilesToRemovev.exit %31 = atomicrmw xchg ptr @_ZL25OneShotPipeSignalFunction, i64 0 seq_cst, align 8 %.not = icmp eq i64 %31, 0 - br i1 %.not, label %.thread, label %32 + br i1 %.not, label %.thread18, label %32 32: ; preds = %30 %.0.i = inttoptr i64 %31 to ptr call void %.0.i() #25 br label %_ZN4llvm3sys17RunSignalHandlersEv.exit -33: ; preds = %_ZL19RemoveFilesToRemovev.exit, %_ZL19RemoveFilesToRemovev.exit, %_ZL19RemoveFilesToRemovev.exit, %_ZL19RemoveFilesToRemovev.exit - %34 = atomicrmw xchg ptr @_ZL17InterruptFunction, i64 0 seq_cst, align 8 - %.not6 = icmp eq i64 %34, 0 - br i1 %.not6, label %.thread, label %35 +_ZN4llvm12is_containedIRA4_KiiEEbOT_RKT0_.exit.thread: ; preds = %_ZL19RemoveFilesToRemovev.exit, %_ZL19RemoveFilesToRemovev.exit, %_ZL19RemoveFilesToRemovev.exit, %_ZL19RemoveFilesToRemovev.exit + %33 = atomicrmw xchg ptr @_ZL17InterruptFunction, i64 0 seq_cst, align 8 + %.not6 = icmp eq i64 %33, 0 + br i1 %.not6, label %.thread18, label %34 -35: ; preds = %33 - %.0.i7 = inttoptr i64 %34 to ptr +34: ; preds = %_ZN4llvm12is_containedIRA4_KiiEEbOT_RKT0_.exit.thread + %.0.i7 = inttoptr i64 %33 to ptr call void %.0.i7() #25 br label %_ZN4llvm3sys17RunSignalHandlersEv.exit -.thread: ; preds = %30, %33 - %36 = call i32 @raise(i32 noundef %0) #25 +.thread18: ; preds = %30, %_ZN4llvm12is_containedIRA4_KiiEEbOT_RKT0_.exit.thread + %35 = call i32 @raise(i32 noundef %0) #25 br label %_ZN4llvm3sys17RunSignalHandlersEv.exit .preheader: ; preds = %_ZL19RemoveFilesToRemovev.exit, %_ZNSt6atomicIN17CallbackAndCookie6StatusEE23compare_exchange_strongERS1_S1_St12memory_orderS4_.exit.i %.0.idx13.i = phi i64 [ %.0.add.i, %_ZNSt6atomicIN17CallbackAndCookie6StatusEE23compare_exchange_strongERS1_S1_St12memory_orderS4_.exit.i ], [ 0, %_ZL19RemoveFilesToRemovev.exit ] %.0.ptr14.i = getelementptr inbounds i8, ptr @_ZZL14CallBacksToRunvE9callbacks, i64 %.0.idx13.i - %37 = getelementptr inbounds nuw i8, ptr %.0.ptr14.i, i64 16 - %38 = cmpxchg ptr %37, i32 2, i32 3 seq_cst seq_cst, align 4 - %39 = extractvalue { i32, i1 } %38, 1 - br i1 %39, label %40, label %_ZNSt6atomicIN17CallbackAndCookie6StatusEE23compare_exchange_strongERS1_S1_St12memory_orderS4_.exit.i - -40: ; preds = %.preheader - %41 = load ptr, ptr %.0.ptr14.i, align 8 - %42 = getelementptr inbounds nuw i8, ptr %.0.ptr14.i, i64 8 - %43 = load ptr, ptr %42, align 8 - call void %41(ptr noundef %43) #25 + %36 = getelementptr inbounds nuw i8, ptr %.0.ptr14.i, i64 16 + %37 = cmpxchg ptr %36, i32 2, i32 3 seq_cst seq_cst, align 4 + %38 = extractvalue { i32, i1 } %37, 1 + br i1 %38, label %39, label %_ZNSt6atomicIN17CallbackAndCookie6StatusEE23compare_exchange_strongERS1_S1_St12memory_orderS4_.exit.i + +39: ; preds = %.preheader + %40 = load ptr, ptr %.0.ptr14.i, align 8 + %41 = getelementptr inbounds nuw i8, ptr %.0.ptr14.i, i64 8 + %42 = load ptr, ptr %41, align 8 + call void %40(ptr noundef %42) #25 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.0.ptr14.i, i8 0, i64 16, i1 false) - store atomic i32 0, ptr %37 seq_cst, align 8 + store atomic i32 0, ptr %36 seq_cst, align 8 br label %_ZNSt6atomicIN17CallbackAndCookie6StatusEE23compare_exchange_strongERS1_S1_St12memory_orderS4_.exit.i -_ZNSt6atomicIN17CallbackAndCookie6StatusEE23compare_exchange_strongERS1_S1_St12memory_orderS4_.exit.i: ; preds = %40, %.preheader +_ZNSt6atomicIN17CallbackAndCookie6StatusEE23compare_exchange_strongERS1_S1_St12memory_orderS4_.exit.i: ; preds = %39, %.preheader %.0.add.i = add nuw nsw i64 %.0.idx13.i, 24 %.not.i8 = icmp eq i64 %.0.add.i, 192 br i1 %.not.i8, label %_ZN4llvm3sys17RunSignalHandlersEv.exit, label %.preheader -_ZN4llvm3sys17RunSignalHandlersEv.exit: ; preds = %_ZNSt6atomicIN17CallbackAndCookie6StatusEE23compare_exchange_strongERS1_S1_St12memory_orderS4_.exit.i, %.thread, %35, %32 +_ZN4llvm3sys17RunSignalHandlersEv.exit: ; preds = %_ZNSt6atomicIN17CallbackAndCookie6StatusEE23compare_exchange_strongERS1_S1_St12memory_orderS4_.exit.i, %.thread18, %34, %32 ret void } diff --git a/bench/luau/optimized/isocline.c.ll b/bench/luau/optimized/isocline.c.ll index 6ae571a7671..5ee93e80eaf 100644 --- a/bench/luau/optimized/isocline.c.ll +++ b/bench/luau/optimized/isocline.c.ll @@ -12875,8 +12875,8 @@ editor_pos_is_at_end.exit: ; preds = %313 325: ; preds = %324 %326 = load i64, ptr %42, align 8 %327 = icmp eq i64 %326, 0 - %.pre715 = load ptr, ptr %16, align 8 - %328 = icmp eq ptr %.pre715, null + %.pre713 = load ptr, ptr %16, align 8 + %328 = icmp eq ptr %.pre713, null br i1 %327, label %329, label %336 329: ; preds = %325 @@ -12893,7 +12893,7 @@ editor_pos_is_at_end.exit: ; preds = %313 br label %1706 editor_pos_is_at_end.exit174: ; preds = %329 - %333 = getelementptr inbounds i8, ptr %.pre715, i64 16 + %333 = getelementptr inbounds i8, ptr %.pre713, i64 16 %334 = load i64, ptr %333, align 8 %335 = icmp eq i64 %334, 0 br i1 %335, label %.loopexit, label %sbuf_len.exit.i175 @@ -12902,7 +12902,7 @@ editor_pos_is_at_end.exit174: ; preds = %329 br i1 %328, label %edit_multiline_eol.exit.backedge, label %sbuf_len.exit.i175 sbuf_len.exit.i175: ; preds = %editor_pos_is_at_end.exit174, %336 - %337 = getelementptr inbounds i8, ptr %.pre715, i64 16 + %337 = getelementptr inbounds i8, ptr %.pre713, i64 16 %338 = load i64, ptr %337, align 8 %339 = icmp slt i64 %338, 1 br i1 %339, label %edit_multiline_eol.exit.backedge, label %340 @@ -12914,7 +12914,7 @@ sbuf_len.exit.i175: ; preds = %editor_pos_is_at_en sbuf_string.exit.i.i.i402: ; preds = %340 %343 = load ptr, ptr %19, align 8 - %344 = load ptr, ptr %.pre715, align 8 + %344 = load ptr, ptr %.pre713, align 8 %.val.i.i.i.i404 = load ptr, ptr %343, align 8 %345 = call ptr %.val.i.i.i.i404(i64 noundef 24) #32 %.not.i.i.i.i.i405 = icmp eq ptr %345, null @@ -13305,16 +13305,16 @@ ic_enable_hint.exit.i.i: ; preds = %ic_get_env.exit.thr ic_strlen.exit.i.i: ; preds = %ic_enable_hint.exit.i.i %507 = call i64 @strlen(ptr noundef nonnull readonly dereferenceable(1) %.0.i181) #33 %508 = call noundef range(i64 0, -9223372036854775808) i64 @llvm.smax.i64(i64 %507, i64 0) - %.not496.i.i = icmp slt i64 %507, 1 - br i1 %.not496.i.i, label %._crit_edge.i.i, label %.lr.ph.i34.i + %.not495.i.i = icmp slt i64 %507, 1 + br i1 %.not495.i.i, label %._crit_edge.i.i, label %.lr.ph.i34.i .lr.ph.i34.i: ; preds = %ic_strlen.exit.i.i, %term_beep.exit163.i.i - %.0141484.i.i = phi i64 [ %520, %term_beep.exit163.i.i ], [ 0, %ic_strlen.exit.i.i ] - %.0483.i.i = phi ptr [ %.6.i.i, %term_beep.exit163.i.i ], [ null, %ic_strlen.exit.i.i ] - %.0338482.i.i = phi i64 [ %.3341368.i.i, %term_beep.exit163.i.i ], [ 1, %ic_strlen.exit.i.i ] - %.0348481.i.i = phi i64 [ %.1349.i.i, %term_beep.exit163.i.i ], [ 0, %ic_strlen.exit.i.i ] - %.0354480.i.i = phi i64 [ %.3357366.i.i, %term_beep.exit163.i.i ], [ 0, %ic_strlen.exit.i.i ] - %509 = call fastcc i64 @str_next_ofs(ptr noundef nonnull %.0.i181, i64 noundef %508, i64 noundef %.0141484.i.i, ptr noundef null) + %.0141483.i.i = phi i64 [ %520, %term_beep.exit163.i.i ], [ 0, %ic_strlen.exit.i.i ] + %.0482.i.i = phi ptr [ %.6.i.i, %term_beep.exit163.i.i ], [ null, %ic_strlen.exit.i.i ] + %.0338481.i.i = phi i64 [ %.3341368.i.i, %term_beep.exit163.i.i ], [ 1, %ic_strlen.exit.i.i ] + %.0348480.i.i = phi i64 [ %.1349.i.i, %term_beep.exit163.i.i ], [ 0, %ic_strlen.exit.i.i ] + %.0354479.i.i = phi i64 [ %.3357366.i.i, %term_beep.exit163.i.i ], [ 0, %ic_strlen.exit.i.i ] + %509 = call fastcc i64 @str_next_ofs(ptr noundef nonnull %.0.i181, i64 noundef %508, i64 noundef %.0141483.i.i, ptr noundef null) %510 = icmp slt i64 %509, 0 br i1 %510, label %._crit_edge.i.i, label %511 @@ -13329,37 +13329,37 @@ ic_strlen.exit.i.i: ; preds = %ic_enable_hint.exit %515 = getelementptr inbounds i8, ptr %513, i64 33 call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(40) %515, i8 0, i64 7, i1 false) %516 = getelementptr inbounds i8, ptr %513, i64 8 - store i64 %.0338482.i.i, ptr %516, align 8 + store i64 %.0338481.i.i, ptr %516, align 8 %517 = getelementptr inbounds i8, ptr %513, i64 16 - store i64 %.0354480.i.i, ptr %517, align 8 + store i64 %.0354479.i.i, ptr %517, align 8 %518 = getelementptr inbounds i8, ptr %513, i64 24 - store i64 %.0348481.i.i, ptr %518, align 8 + store i64 %.0348480.i.i, ptr %518, align 8 %519 = getelementptr inbounds i8, ptr %513, i64 32 store i8 1, ptr %519, align 8 - store ptr %.0483.i.i, ptr %513, align 8 + store ptr %.0482.i.i, ptr %513, align 8 br label %hsearch_push.exit.i.i hsearch_push.exit.i.i: ; preds = %514, %511 - %.6.i.i = phi ptr [ %.0483.i.i, %511 ], [ %513, %514 ] - %520 = add nuw nsw i64 %509, %.0141484.i.i + %.6.i.i = phi ptr [ %.0482.i.i, %511 ], [ %513, %514 ] + %520 = add nuw nsw i64 %509, %.0141483.i.i %521 = getelementptr inbounds i8, ptr %.0.i181, i64 %520 %522 = load i8, ptr %521, align 1 store i8 0, ptr %521, align 1 %523 = load ptr, ptr %95, align 8 %524 = load i64, ptr %523, align 8 - %525 = icmp slt i64 %.0338482.i.i, %524 + %525 = icmp slt i64 %.0338481.i.i, %524 br i1 %525, label %history_get.exit.lr.ph.i.i.i, label %.loopexit423.i.i history_get.exit.lr.ph.i.i.i: ; preds = %hsearch_push.exit.i.i %526 = getelementptr inbounds i8, ptr %523, i64 16 %527 = load ptr, ptr %526, align 8 %528 = getelementptr ptr, ptr %527, i64 %524 - %529 = icmp sgt i64 %.0338482.i.i, -1 + %529 = icmp sgt i64 %.0338481.i.i, -1 call void @llvm.assume(i1 %529) br label %history_get.exit.i.i.i history_get.exit.i.i.i: ; preds = %534, %history_get.exit.lr.ph.i.i.i - %.058.i.i.i = phi i64 [ %.0338482.i.i, %history_get.exit.lr.ph.i.i.i ], [ %535, %534 ] + %.058.i.i.i = phi i64 [ %.0338481.i.i, %history_get.exit.lr.ph.i.i.i ], [ %535, %534 ] %530 = xor i64 %.058.i.i.i, -1 %531 = getelementptr ptr, ptr %528, i64 %530 %532 = load ptr, ptr %531, align 8 @@ -13399,19 +13399,19 @@ history_get.exit.i.i.i: ; preds = %534, %history_get.e br label %term_beep.exit163.i.i term_beep.exit163.i.i: ; preds = %543, %539, %.loopexit423.i.i, %.thread46.i.i.i - %.3341368.i.i = phi i64 [ %.058.i.i.i, %.thread46.i.i.i ], [ %.0338482.i.i, %.loopexit423.i.i ], [ %.0338482.i.i, %539 ], [ %.0338482.i.i, %543 ] - %.3357366.i.i = phi i64 [ %538, %.thread46.i.i.i ], [ %.0354480.i.i, %.loopexit423.i.i ], [ %.0354480.i.i, %539 ], [ %.0354480.i.i, %543 ] - %.1349.i.i = phi i64 [ %520, %.thread46.i.i.i ], [ %.0348481.i.i, %.loopexit423.i.i ], [ %.0348481.i.i, %539 ], [ %.0348481.i.i, %543 ] + %.3341368.i.i = phi i64 [ %.058.i.i.i, %.thread46.i.i.i ], [ %.0338481.i.i, %.loopexit423.i.i ], [ %.0338481.i.i, %539 ], [ %.0338481.i.i, %543 ] + %.3357366.i.i = phi i64 [ %538, %.thread46.i.i.i ], [ %.0354479.i.i, %.loopexit423.i.i ], [ %.0354479.i.i, %539 ], [ %.0354479.i.i, %543 ] + %.1349.i.i = phi i64 [ %520, %.thread46.i.i.i ], [ %.0348480.i.i, %.loopexit423.i.i ], [ %.0348480.i.i, %539 ], [ %.0348480.i.i, %543 ] store i8 %522, ptr %521, align 1 %547 = icmp sgt i64 %507, %520 br i1 %547, label %.lr.ph.i34.i, label %._crit_edge.i.i, !llvm.loop !78 ._crit_edge.i.i: ; preds = %term_beep.exit163.i.i, %.lr.ph.i34.i, %ic_strlen.exit.i.i - %.0354.lcssa.i.i = phi i64 [ 0, %ic_strlen.exit.i.i ], [ %.0354480.i.i, %.lr.ph.i34.i ], [ %.3357366.i.i, %term_beep.exit163.i.i ] - %.0348.lcssa.i.i = phi i64 [ 0, %ic_strlen.exit.i.i ], [ %.0348481.i.i, %.lr.ph.i34.i ], [ %.1349.i.i, %term_beep.exit163.i.i ] - %.0338.lcssa.i.i = phi i64 [ 1, %ic_strlen.exit.i.i ], [ %.0338482.i.i, %.lr.ph.i34.i ], [ %.3341368.i.i, %term_beep.exit163.i.i ] - %.0.lcssa.i35.i = phi ptr [ null, %ic_strlen.exit.i.i ], [ %.0483.i.i, %.lr.ph.i34.i ], [ %.6.i.i, %term_beep.exit163.i.i ] - %.0141.lcssa.i.i = phi i64 [ 0, %ic_strlen.exit.i.i ], [ %.0141484.i.i, %.lr.ph.i34.i ], [ %520, %term_beep.exit163.i.i ] + %.0354.lcssa.i.i = phi i64 [ 0, %ic_strlen.exit.i.i ], [ %.0354479.i.i, %.lr.ph.i34.i ], [ %.3357366.i.i, %term_beep.exit163.i.i ] + %.0348.lcssa.i.i = phi i64 [ 0, %ic_strlen.exit.i.i ], [ %.0348480.i.i, %.lr.ph.i34.i ], [ %.1349.i.i, %term_beep.exit163.i.i ] + %.0338.lcssa.i.i = phi i64 [ 1, %ic_strlen.exit.i.i ], [ %.0338481.i.i, %.lr.ph.i34.i ], [ %.3341368.i.i, %term_beep.exit163.i.i ] + %.0.lcssa.i35.i = phi ptr [ null, %ic_strlen.exit.i.i ], [ %.0482.i.i, %.lr.ph.i34.i ], [ %.6.i.i, %term_beep.exit163.i.i ] + %.0141.lcssa.i.i = phi i64 [ 0, %ic_strlen.exit.i.i ], [ %.0141483.i.i, %.lr.ph.i34.i ], [ %520, %term_beep.exit163.i.i ] %548 = load ptr, ptr %16, align 8 %549 = icmp eq ptr %548, null br i1 %549, label %sbuf_len.exit.i.i.i.i, label %sbuf_len.exit.i.thread.i.i.i @@ -14218,11 +14218,9 @@ history_get.exit38.i.i.i: ; preds = %868, %history_get.e br i1 %869, label %history_get.exit38.i.i.i, label %.loopexit422.i.i, !llvm.loop !79 .thread46.i261.i.i: ; preds = %history_get.exit38.i.i.i - %.not.i39.i262.not.i.i = icmp sgt i64 %.257.i.in.i.i, %860 %870 = ptrtoint ptr %866 to i64 - %spec.select414.i.i = select i1 %.not.i39.i262.not.i.i, i64 0, i64 %870 %871 = ptrtoint ptr %867 to i64 - %872 = sub i64 %871, %spec.select414.i.i + %872 = sub i64 %871, %870 br label %.outer.i.i.outer.backedge .loopexit422.i.i: ; preds = %868, %sbuf_string.exit259.i.i @@ -16332,29 +16330,29 @@ sbuf_len.exit339: ; preds = %1700 br i1 %1708, label %.tty_is_utf8.exit.thread_crit_edge, label %tty_is_utf8.exit .tty_is_utf8.exit.thread_crit_edge: ; preds = %1706 - %.pre716 = load ptr, ptr %16, align 8 + %.pre714 = load ptr, ptr %16, align 8 br label %tty_is_utf8.exit.thread tty_is_utf8.exit: ; preds = %1706 %1709 = getelementptr inbounds i8, ptr %1707, i64 5 %1710 = load i8, ptr %1709, align 1 %1711 = trunc i8 %1710 to i1 - %.pre717 = load ptr, ptr %16, align 8 + %.pre715 = load ptr, ptr %16, align 8 br i1 %1711, label %tty_is_utf8.exit.thread, label %1712 1712: ; preds = %tty_is_utf8.exit call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) - %1713 = icmp eq ptr %.pre717, null + %1713 = icmp eq ptr %.pre715, null br i1 %1713, label %sbuf_strdup_from_utf8.exit, label %sbuf_len.exit.i341 sbuf_len.exit.i341: ; preds = %1712 - %1714 = getelementptr i8, ptr %.pre717, i64 16 + %1714 = getelementptr i8, ptr %.pre715, i64 16 %1715 = load i64, ptr %1714, align 8 %1716 = icmp slt i64 %1715, 1 br i1 %1716, label %sbuf_strdup_from_utf8.exit, label %1717 1717: ; preds = %sbuf_len.exit.i341 - %1718 = getelementptr inbounds i8, ptr %.pre717, i64 24 + %1718 = getelementptr inbounds i8, ptr %.pre715, i64 24 %1719 = load ptr, ptr %1718, align 8 %.val.i342 = load ptr, ptr %1719, align 8 %1720 = call ptr %.val.i342(i64 noundef %1715) #32 @@ -16368,7 +16366,7 @@ sbuf_len.exit.i341: ; preds = %1712 1721: ; preds = %1741, %.lr.ph.i %.03450.i = phi i64 [ 0, %.lr.ph.i ], [ %.1.i, %1741 ] %.03549.i = phi i64 [ 0, %.lr.ph.i ], [ %1742, %1741 ] - %.val41.i = load ptr, ptr %.pre717, align 8 + %.val41.i = load ptr, ptr %.pre715, align 8 %.val42.i = load i64, ptr %1714, align 8 %1722 = call fastcc i64 @str_next_ofs(ptr noundef %.val41.i, i64 noundef %.val42.i, i64 noundef %.03549.i, ptr noundef null) %1723 = icmp slt i64 %1722, 1 @@ -16376,7 +16374,7 @@ sbuf_len.exit.i341: ; preds = %1712 1724: ; preds = %1721 %1725 = icmp eq i64 %1722, 1 - %1726 = load ptr, ptr %.pre717, align 8 + %1726 = load ptr, ptr %.pre715, align 8 %1727 = getelementptr inbounds i8, ptr %1726, i64 %.03549.i %1728 = load i8, ptr %1727, align 1 br i1 %1725, label %.sink.split.i, label %1729 @@ -16428,7 +16426,7 @@ sbuf_strdup_from_utf8.exit: ; preds = %1712, %sbuf_len.exi br label %sbuf_strdup.exit tty_is_utf8.exit.thread: ; preds = %.tty_is_utf8.exit.thread_crit_edge, %tty_is_utf8.exit - %1745 = phi ptr [ %.pre716, %.tty_is_utf8.exit.thread_crit_edge ], [ %.pre717, %tty_is_utf8.exit ] + %1745 = phi ptr [ %.pre714, %.tty_is_utf8.exit.thread_crit_edge ], [ %.pre715, %tty_is_utf8.exit ] %1746 = getelementptr inbounds i8, ptr %1745, i64 16 %1747 = load i64, ptr %1746, align 8 %1748 = icmp slt i64 %1747, 0 diff --git a/bench/meshlab/optimized/filter_create.cpp.ll b/bench/meshlab/optimized/filter_create.cpp.ll index 48004b2398c..6cc788a29cf 100644 --- a/bench/meshlab/optimized/filter_create.cpp.ll +++ b/bench/meshlab/optimized/filter_create.cpp.ll @@ -28250,23 +28250,22 @@ define linkonce_odr void @_ZN3vcg3tri15SurfaceSamplingI6CMeshONS0_14TrivialSampl %73 = fdiv float %65, %72 %74 = fptosi float %73 to i32 %75 = sext i32 %68 to i64 - %76 = sext i32 %74 to i64 + %76 = mul nsw i64 %75, 73856093 %77 = sext i32 %71 to i64 - %78 = mul nsw i64 %75, 73856093 - %79 = mul nsw i64 %77, 19349663 - %80 = xor i64 %79, %78 - %81 = tail call noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #31 - store ptr null, ptr %81, align 8, !noalias !343 - %82 = getelementptr inbounds i8, ptr %81, i64 8 - store i32 %68, ptr %82, align 8, !noalias !343 - %.sroa.4.0..sroa_idx.i = getelementptr inbounds i8, ptr %81, i64 12 + %78 = mul nsw i64 %77, 19349663 + %79 = xor i64 %78, %76 + %80 = tail call noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #31 + store ptr null, ptr %80, align 8, !noalias !343 + %81 = getelementptr inbounds i8, ptr %80, i64 8 + store i32 %68, ptr %81, align 8, !noalias !343 + %.sroa.4.0..sroa_idx.i = getelementptr inbounds i8, ptr %80, i64 12 store i32 %71, ptr %.sroa.4.0..sroa_idx.i, align 4, !noalias !343 - %.sroa.524.0..sroa_idx.i = getelementptr inbounds i8, ptr %81, i64 16 + %.sroa.524.0..sroa_idx.i = getelementptr inbounds i8, ptr %80, i64 16 store i32 %74, ptr %.sroa.524.0..sroa_idx.i, align 8, !noalias !343 - %.sroa.625.0..sroa_idx.i = getelementptr inbounds i8, ptr %81, i64 24 + %.sroa.625.0..sroa_idx.i = getelementptr inbounds i8, ptr %80, i64 24 store ptr %.sroa.027.075, ptr %.sroa.625.0..sroa_idx.i, align 8, !noalias !343 - %83 = load i64, ptr %20, align 8, !noalias !343 - %.not.not.i.i.i = icmp ne i64 %83, 0 + %82 = load i64, ptr %20, align 8, !noalias !343 + %.not.not.i.i.i = icmp ne i64 %82, 0 %.sroa.0.026.i.i.i = load ptr, ptr %15, align 8, !noalias !343 %.not2127.i.i.i = icmp eq ptr %.sroa.0.026.i.i.i, null %or.cond.i = select i1 %.not.not.i.i.i, i1 true, i1 %.not2127.i.i.i @@ -28274,48 +28273,49 @@ define linkonce_odr void @_ZN3vcg3tri15SurfaceSamplingI6CMeshONS0_14TrivialSampl .lr.ph.i.i.i: ; preds = %.lr.ph37.split.i, %_ZNKSt8__detail15_Hashtable_baseIN3vcg6Point3IiEESt4pairIKS3_P8CVertexOENS_10_Select1stESt8equal_toIS3_ENS1_11HashFunctorENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb0EEEE13_M_key_equalsERS5_RKNS_16_Hash_node_valueIS8_Lb1EEE.exit4.thread.i.i.i %.sroa.0.028.i.i.i = phi ptr [ %.sroa.0.0.i.i.i, %_ZNKSt8__detail15_Hashtable_baseIN3vcg6Point3IiEESt4pairIKS3_P8CVertexOENS_10_Select1stESt8equal_toIS3_ENS1_11HashFunctorENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb0EEEE13_M_key_equalsERS5_RKNS_16_Hash_node_valueIS8_Lb1EEE.exit4.thread.i.i.i ], [ %.sroa.0.026.i.i.i, %.lr.ph37.split.i ] - %84 = getelementptr inbounds i8, ptr %.sroa.0.028.i.i.i, i64 8 - %85 = load i32, ptr %84, align 4, !noalias !343 - %86 = icmp eq i32 %85, %68 - br i1 %86, label %87, label %_ZNKSt8__detail15_Hashtable_baseIN3vcg6Point3IiEESt4pairIKS3_P8CVertexOENS_10_Select1stESt8equal_toIS3_ENS1_11HashFunctorENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb0EEEE13_M_key_equalsERS5_RKNS_16_Hash_node_valueIS8_Lb1EEE.exit4.thread.i.i.i - -87: ; preds = %.lr.ph.i.i.i - %88 = getelementptr inbounds i8, ptr %.sroa.0.028.i.i.i, i64 12 - %89 = load i32, ptr %88, align 4, !noalias !343 - %90 = icmp eq i32 %89, %71 - br i1 %90, label %_ZNKSt8__detail15_Hashtable_baseIN3vcg6Point3IiEESt4pairIKS3_P8CVertexOENS_10_Select1stESt8equal_toIS3_ENS1_11HashFunctorENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb0EEEE13_M_key_equalsERS5_RKNS_16_Hash_node_valueIS8_Lb1EEE.exit4.i.i.i, label %_ZNKSt8__detail15_Hashtable_baseIN3vcg6Point3IiEESt4pairIKS3_P8CVertexOENS_10_Select1stESt8equal_toIS3_ENS1_11HashFunctorENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb0EEEE13_M_key_equalsERS5_RKNS_16_Hash_node_valueIS8_Lb1EEE.exit4.thread.i.i.i - -_ZNKSt8__detail15_Hashtable_baseIN3vcg6Point3IiEESt4pairIKS3_P8CVertexOENS_10_Select1stESt8equal_toIS3_ENS1_11HashFunctorENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb0EEEE13_M_key_equalsERS5_RKNS_16_Hash_node_valueIS8_Lb1EEE.exit4.i.i.i: ; preds = %87 - %91 = getelementptr inbounds i8, ptr %.sroa.0.028.i.i.i, i64 16 - %92 = load i32, ptr %91, align 4, !noalias !343 - %93 = icmp eq i32 %92, %74 - br i1 %93, label %94, label %_ZNKSt8__detail15_Hashtable_baseIN3vcg6Point3IiEESt4pairIKS3_P8CVertexOENS_10_Select1stESt8equal_toIS3_ENS1_11HashFunctorENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb0EEEE13_M_key_equalsERS5_RKNS_16_Hash_node_valueIS8_Lb1EEE.exit4.thread.i.i.i - -94: ; preds = %_ZNKSt8__detail15_Hashtable_baseIN3vcg6Point3IiEESt4pairIKS3_P8CVertexOENS_10_Select1stESt8equal_toIS3_ENS1_11HashFunctorENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb0EEEE13_M_key_equalsERS5_RKNS_16_Hash_node_valueIS8_Lb1EEE.exit4.i.i.i - %95 = getelementptr inbounds i8, ptr %.sroa.0.028.i.i.i, i64 32 - %96 = load i64, ptr %95, align 8, !noalias !343 + %83 = getelementptr inbounds i8, ptr %.sroa.0.028.i.i.i, i64 8 + %84 = load i32, ptr %83, align 4, !noalias !343 + %85 = icmp eq i32 %84, %68 + br i1 %85, label %86, label %_ZNKSt8__detail15_Hashtable_baseIN3vcg6Point3IiEESt4pairIKS3_P8CVertexOENS_10_Select1stESt8equal_toIS3_ENS1_11HashFunctorENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb0EEEE13_M_key_equalsERS5_RKNS_16_Hash_node_valueIS8_Lb1EEE.exit4.thread.i.i.i + +86: ; preds = %.lr.ph.i.i.i + %87 = getelementptr inbounds i8, ptr %.sroa.0.028.i.i.i, i64 12 + %88 = load i32, ptr %87, align 4, !noalias !343 + %89 = icmp eq i32 %88, %71 + br i1 %89, label %_ZNKSt8__detail15_Hashtable_baseIN3vcg6Point3IiEESt4pairIKS3_P8CVertexOENS_10_Select1stESt8equal_toIS3_ENS1_11HashFunctorENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb0EEEE13_M_key_equalsERS5_RKNS_16_Hash_node_valueIS8_Lb1EEE.exit4.i.i.i, label %_ZNKSt8__detail15_Hashtable_baseIN3vcg6Point3IiEESt4pairIKS3_P8CVertexOENS_10_Select1stESt8equal_toIS3_ENS1_11HashFunctorENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb0EEEE13_M_key_equalsERS5_RKNS_16_Hash_node_valueIS8_Lb1EEE.exit4.thread.i.i.i + +_ZNKSt8__detail15_Hashtable_baseIN3vcg6Point3IiEESt4pairIKS3_P8CVertexOENS_10_Select1stESt8equal_toIS3_ENS1_11HashFunctorENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb0EEEE13_M_key_equalsERS5_RKNS_16_Hash_node_valueIS8_Lb1EEE.exit4.i.i.i: ; preds = %86 + %90 = getelementptr inbounds i8, ptr %.sroa.0.028.i.i.i, i64 16 + %91 = load i32, ptr %90, align 4, !noalias !343 + %92 = icmp eq i32 %91, %74 + br i1 %92, label %93, label %_ZNKSt8__detail15_Hashtable_baseIN3vcg6Point3IiEESt4pairIKS3_P8CVertexOENS_10_Select1stESt8equal_toIS3_ENS1_11HashFunctorENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb0EEEE13_M_key_equalsERS5_RKNS_16_Hash_node_valueIS8_Lb1EEE.exit4.thread.i.i.i + +93: ; preds = %_ZNKSt8__detail15_Hashtable_baseIN3vcg6Point3IiEESt4pairIKS3_P8CVertexOENS_10_Select1stESt8equal_toIS3_ENS1_11HashFunctorENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb0EEEE13_M_key_equalsERS5_RKNS_16_Hash_node_valueIS8_Lb1EEE.exit4.i.i.i + %94 = getelementptr inbounds i8, ptr %.sroa.0.028.i.i.i, i64 32 + %95 = load i64, ptr %94, align 8, !noalias !343 br label %99 -_ZNKSt8__detail15_Hashtable_baseIN3vcg6Point3IiEESt4pairIKS3_P8CVertexOENS_10_Select1stESt8equal_toIS3_ENS1_11HashFunctorENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb0EEEE13_M_key_equalsERS5_RKNS_16_Hash_node_valueIS8_Lb1EEE.exit4.thread.i.i.i: ; preds = %_ZNKSt8__detail15_Hashtable_baseIN3vcg6Point3IiEESt4pairIKS3_P8CVertexOENS_10_Select1stESt8equal_toIS3_ENS1_11HashFunctorENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb0EEEE13_M_key_equalsERS5_RKNS_16_Hash_node_valueIS8_Lb1EEE.exit4.i.i.i, %87, %.lr.ph.i.i.i +_ZNKSt8__detail15_Hashtable_baseIN3vcg6Point3IiEESt4pairIKS3_P8CVertexOENS_10_Select1stESt8equal_toIS3_ENS1_11HashFunctorENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb0EEEE13_M_key_equalsERS5_RKNS_16_Hash_node_valueIS8_Lb1EEE.exit4.thread.i.i.i: ; preds = %_ZNKSt8__detail15_Hashtable_baseIN3vcg6Point3IiEESt4pairIKS3_P8CVertexOENS_10_Select1stESt8equal_toIS3_ENS1_11HashFunctorENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb0EEEE13_M_key_equalsERS5_RKNS_16_Hash_node_valueIS8_Lb1EEE.exit4.i.i.i, %86, %.lr.ph.i.i.i %.sroa.0.0.i.i.i = load ptr, ptr %.sroa.0.028.i.i.i, align 8, !noalias !343 %.not21.i.i.i = icmp eq ptr %.sroa.0.0.i.i.i, null br i1 %.not21.i.i.i, label %.loopexit.i.i.i, label %.lr.ph.i.i.i, !llvm.loop !346 .loopexit.i.i.i: ; preds = %_ZNKSt8__detail15_Hashtable_baseIN3vcg6Point3IiEESt4pairIKS3_P8CVertexOENS_10_Select1stESt8equal_toIS3_ENS1_11HashFunctorENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb0EEEE13_M_key_equalsERS5_RKNS_16_Hash_node_valueIS8_Lb1EEE.exit4.thread.i.i.i, %.lr.ph37.split.i - %97 = mul nsw i64 %76, 83492791 - %98 = xor i64 %80, %97 + %96 = sext i32 %74 to i64 + %97 = mul nsw i64 %96, 83492791 + %98 = xor i64 %79, %97 br label %99 -99: ; preds = %.loopexit.i.i.i, %94 - %.sroa.019.0.i.i.i = phi ptr [ null, %.loopexit.i.i.i ], [ %.sroa.0.028.i.i.i, %94 ] - %.sroa.4.0.i.i.i = phi i64 [ %98, %.loopexit.i.i.i ], [ %96, %94 ] - %100 = invoke ptr @_ZNSt10_HashtableIN3vcg6Point3IiEESt4pairIKS2_P8CVertexOESaIS7_ENSt8__detail10_Select1stESt8equal_toIS2_ENS0_11HashFunctorENS9_18_Mod_range_hashingENS9_20_Default_ranged_hashENS9_20_Prime_rehash_policyENS9_17_Hashtable_traitsILb1ELb0ELb0EEEE20_M_insert_multi_nodeEPNS9_10_Hash_nodeIS7_Lb1EEEmSM_(ptr noundef nonnull align 8 dereferenceable(56) %16, ptr noundef %.sroa.019.0.i.i.i, i64 noundef %.sroa.4.0.i.i.i, ptr noundef nonnull %81) +99: ; preds = %.loopexit.i.i.i, %93 + %.sroa.019.0.i.i.i = phi ptr [ null, %.loopexit.i.i.i ], [ %.sroa.0.028.i.i.i, %93 ] + %.sroa.4.0.i.i.i = phi i64 [ %98, %.loopexit.i.i.i ], [ %95, %93 ] + %100 = invoke ptr @_ZNSt10_HashtableIN3vcg6Point3IiEESt4pairIKS2_P8CVertexOESaIS7_ENSt8__detail10_Select1stESt8equal_toIS2_ENS0_11HashFunctorENS9_18_Mod_range_hashingENS9_20_Default_ranged_hashENS9_20_Prime_rehash_policyENS9_17_Hashtable_traitsILb1ELb0ELb0EEEE20_M_insert_multi_nodeEPNS9_10_Hash_nodeIS7_Lb1EEEmSM_(ptr noundef nonnull align 8 dereferenceable(56) %16, ptr noundef %.sroa.019.0.i.i.i, i64 noundef %.sroa.4.0.i.i.i, ptr noundef nonnull %80) to label %_ZN3vcg16SpatialHashTableI8CVertexOfE12InsertObjectEPS1_RKNS_6Point3IiEE.exit.i unwind label %_ZNSt10_HashtableIN3vcg6Point3IiEESt4pairIKS2_P8CVertexOESaIS7_ENSt8__detail10_Select1stESt8equal_toIS2_ENS0_11HashFunctorENS9_18_Mod_range_hashingENS9_20_Default_ranged_hashENS9_20_Prime_rehash_policyENS9_17_Hashtable_traitsILb1ELb0ELb0EEEE12_Scoped_nodeD2Ev.exit9.i.i, !noalias !343 _ZNSt10_HashtableIN3vcg6Point3IiEESt4pairIKS2_P8CVertexOESaIS7_ENSt8__detail10_Select1stESt8equal_toIS2_ENS0_11HashFunctorENS9_18_Mod_range_hashingENS9_20_Default_ranged_hashENS9_20_Prime_rehash_policyENS9_17_Hashtable_traitsILb1ELb0ELb0EEEE12_Scoped_nodeD2Ev.exit9.i.i: ; preds = %99 %101 = landingpad { ptr, i32 } cleanup - tail call void @_ZdlPv(ptr noundef nonnull %81) #27, !noalias !343 + tail call void @_ZdlPv(ptr noundef nonnull %80) #27, !noalias !343 resume { ptr, i32 } %101 _ZN3vcg16SpatialHashTableI8CVertexOfE12InsertObjectEPS1_RKNS_6Point3IiEE.exit.i: ; preds = %99 diff --git a/bench/nix/optimized/fromTOML.ll b/bench/nix/optimized/fromTOML.ll index a18d1bfe28a..52d2d725cb0 100644 --- a/bench/nix/optimized/fromTOML.ll +++ b/bench/nix/optimized/fromTOML.ll @@ -2049,7 +2049,6 @@ $_ZTSN5boost2io22basic_oaltstringstreamIcSt11char_traitsIcESaIcEE5No_OpE = comda @.str.34 = private unnamed_addr constant [1 x i8] zeroinitializer, align 1 @.str.35 = private unnamed_addr constant [4 x i8] c" | \00", align 1 @.str.36 = private unnamed_addr constant [5 x i8] c"^---\00", align 1 -@.str.37 = private unnamed_addr constant [74 x i8] c"vector::_M_range_check: __n (which is %zu) >= this->size() (which is %zu)\00", align 1 @.str.38 = private unnamed_addr constant [8 x i8] c"boolean\00", align 1 @.str.39 = private unnamed_addr constant [8 x i8] c"integer\00", align 1 @.str.40 = private unnamed_addr constant [9 x i8] c"floating\00", align 1 @@ -5757,17 +5756,17 @@ define linkonce_odr void @_ZN4toml6detail16format_underlineERKNSt7__cxx1112basic %23 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull @_ZN4toml10color_ansi8colorizeERSo) to label %24 unwind label %.loopexit.split-lp.loopexit.split-lp -.loopexit84: ; preds = %.lr.ph108, %222, %224, %226 +.loopexit84: ; preds = %.lr.ph108, %219, %221, %223 %lpad.loopexit = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp -.loopexit.split-lp.loopexit: ; preds = %183, %165, %163, %161, %159, %157, %155, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread83, %150, %148, %146, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread, %129 +.loopexit.split-lp.loopexit: ; preds = %180, %162, %160, %158, %156, %154, %152, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread83, %147, %145, %143, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread, %124 %lpad.loopexit85 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp -.loopexit.split-lp.loopexit.split-lp: ; preds = %128, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i, %50, %28, %.loopexit, %215, %213, %211, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit58, %200, %198, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit46, %94, %92, %88, %86, %84, %82, %80, %78, %76, %74, %72, %70, %68, %66, %_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_.exit.thread82, %45, %43, %41, %39, %37, %22 +.loopexit.split-lp.loopexit.split-lp: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE8_M_checkEmPKc.exit.i, %50, %28, %.loopexit, %212, %210, %208, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit58, %197, %195, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit46, %94, %92, %88, %86, %84, %82, %80, %78, %76, %74, %72, %70, %68, %66, %_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_.exit.thread82, %45, %43, %41, %39, %37, %22 %lpad.loopexit.split-lp86 = landingpad { ptr, i32 } cleanup br label %.loopexit.split-lp @@ -5959,23 +5958,23 @@ _ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_.exi 96: ; preds = %94 %97 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(32) %10) - to label %98 unwind label %152 + to label %98 unwind label %149 98: ; preds = %96 %99 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %97, ptr noundef nonnull @_ZN4toml10color_ansi4boldERSo) - to label %100 unwind label %152 + to label %100 unwind label %149 100: ; preds = %98 %101 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %99, ptr noundef nonnull @_ZN4toml10color_ansi4blueERSo) - to label %102 unwind label %152 + to label %102 unwind label %149 102: ; preds = %100 %103 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %101, ptr noundef nonnull @.str.23) - to label %104 unwind label %152 + to label %104 unwind label %149 104: ; preds = %102 %105 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %103, ptr noundef nonnull @_ZN4toml10color_ansi5resetERSo) - to label %106 unwind label %152 + to label %106 unwind label %149 106: ; preds = %104 %107 = load ptr, ptr %10, align 8 @@ -5999,9 +5998,9 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit46: ; preds = %_ZN %113 = load ptr, ptr %2, align 8 %114 = getelementptr inbounds i8, ptr %113, i64 80 invoke void @_ZZN4toml6detail16format_underlineERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorISt4pairINS_15source_locationES6_ESaISC_EERKS9_IS6_SaIS6_EEbENKUlRNS1_19basic_ostringstreamIcS4_S5_EERKSB_S8_E_clESN_SP_S8_(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(112) %6, ptr noundef nonnull align 8 dereferenceable(80) %113, ptr noundef nonnull align 8 dereferenceable(32) %114) - to label %.preheader unwind label %.loopexit.split-lp.loopexit.split-lp + to label %.preheader.split unwind label %.loopexit.split-lp.loopexit.split-lp -.preheader: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit46 +.preheader.split: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit46 %115 = load ptr, ptr %14, align 8 %116 = load ptr, ptr %2, align 8 %117 = ptrtoint ptr %115 to i64 @@ -6011,260 +6010,248 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit46: ; preds = %_ZN %121 = icmp ugt i64 %120, 1 br i1 %121, label %.lr.ph104, label %._crit_edge105 -.lr.ph104: ; preds = %.preheader +.lr.ph104: ; preds = %.preheader.split %122 = getelementptr inbounds i8, ptr %11, i64 16 %123 = getelementptr inbounds i8, ptr %11, i64 8 br label %124 -124: ; preds = %.lr.ph104, %185 - %125 = phi i64 [ %120, %.lr.ph104 ], [ %192, %185 ] - %126 = phi ptr [ %116, %.lr.ph104 ], [ %188, %185 ] - %.036103 = phi i64 [ 1, %.lr.ph104 ], [ %186, %185 ] - %127 = add i64 %.036103, -1 - %.not.i.i47 = icmp ult i64 %127, %125 - br i1 %.not.i.i47, label %129, label %128 +124: ; preds = %.lr.ph104, %182 + %125 = phi ptr [ %116, %.lr.ph104 ], [ %185, %182 ] + %.036103 = phi i64 [ 1, %.lr.ph104 ], [ %183, %182 ] + %126 = getelementptr inbounds %"struct.std::pair.210", ptr %125, i64 %.036103 + %127 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %6, i8 noundef signext 10) + to label %128 unwind label %.loopexit.split-lp.loopexit 128: ; preds = %124 - invoke void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.37, i64 noundef %127, i64 noundef %125) #31 - to label %.noexc48 unwind label %.loopexit.split-lp.loopexit.split-lp - -.noexc48: ; preds = %128 - unreachable - -129: ; preds = %124 - %130 = getelementptr inbounds %"struct.std::pair.210", ptr %126, i64 %.036103 - %131 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %6, i8 noundef signext 10) - to label %132 unwind label %.loopexit.split-lp.loopexit - -132: ; preds = %129 - %133 = getelementptr inbounds %"struct.std::pair.210", ptr %126, i64 %127, i32 0, i32 3 - %134 = getelementptr inbounds i8, ptr %130, i64 16 - %135 = getelementptr inbounds i8, ptr %133, i64 8 - %136 = load i64, ptr %135, align 8 - %137 = getelementptr inbounds i8, ptr %130, i64 24 - %138 = load i64, ptr %137, align 8 - %139 = icmp eq i64 %136, %138 - br i1 %139, label %140, label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread83 + %129 = add i64 %.036103, -1 + %130 = getelementptr inbounds %"struct.std::pair.210", ptr %125, i64 %129, i32 0, i32 3 + %131 = getelementptr inbounds i8, ptr %126, i64 16 + %132 = getelementptr inbounds i8, ptr %130, i64 8 + %133 = load i64, ptr %132, align 8 + %134 = getelementptr inbounds i8, ptr %126, i64 24 + %135 = load i64, ptr %134, align 8 + %136 = icmp eq i64 %133, %135 + br i1 %136, label %137, label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread83 -140: ; preds = %132 - %141 = icmp eq i64 %136, 0 - br i1 %141, label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread, label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit +137: ; preds = %128 + %138 = icmp eq i64 %133, 0 + br i1 %138, label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread, label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit -_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit: ; preds = %140 - %142 = load ptr, ptr %134, align 8 - %143 = load ptr, ptr %133, align 8 - %bcmp.i52 = call i32 @bcmp(ptr %143, ptr %142, i64 %136) - %144 = icmp eq i32 %bcmp.i52, 0 - br i1 %144, label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread, label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread83 +_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit: ; preds = %137 + %139 = load ptr, ptr %131, align 8 + %140 = load ptr, ptr %130, align 8 + %bcmp.i52 = call i32 @bcmp(ptr %140, ptr %139, i64 %133) + %141 = icmp eq i32 %bcmp.i52, 0 + br i1 %141, label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread, label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread83 -_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread: ; preds = %140, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit - %145 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull @_ZN4toml10color_ansi4boldERSo) - to label %146 unwind label %.loopexit.split-lp.loopexit +_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread: ; preds = %137, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit + %142 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull @_ZN4toml10color_ansi4boldERSo) + to label %143 unwind label %.loopexit.split-lp.loopexit -146: ; preds = %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread - %147 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %145, ptr noundef nonnull @_ZN4toml10color_ansi4blueERSo) - to label %148 unwind label %.loopexit.split-lp.loopexit +143: ; preds = %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread + %144 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %142, ptr noundef nonnull @_ZN4toml10color_ansi4blueERSo) + to label %145 unwind label %.loopexit.split-lp.loopexit -148: ; preds = %146 - %149 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %147, ptr noundef nonnull @.str.24) - to label %150 unwind label %.loopexit.split-lp.loopexit +145: ; preds = %143 + %146 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %144, ptr noundef nonnull @.str.24) + to label %147 unwind label %.loopexit.split-lp.loopexit -150: ; preds = %148 - %151 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %149, ptr noundef nonnull @_ZN4toml10color_ansi5resetERSo) - to label %183 unwind label %.loopexit.split-lp.loopexit +147: ; preds = %145 + %148 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %146, ptr noundef nonnull @_ZN4toml10color_ansi5resetERSo) + to label %180 unwind label %.loopexit.split-lp.loopexit -152: ; preds = %104, %102, %100, %98, %96 - %153 = landingpad { ptr, i32 } +149: ; preds = %104, %102, %100, %98, %96 + %150 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #30 br label %.loopexit.split-lp -_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread83: ; preds = %132, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit - %154 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull @_ZN4toml10color_ansi4boldERSo) - to label %155 unwind label %.loopexit.split-lp.loopexit +_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread83: ; preds = %128, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit + %151 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull @_ZN4toml10color_ansi4boldERSo) + to label %152 unwind label %.loopexit.split-lp.loopexit -155: ; preds = %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread83 - %156 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %154, ptr noundef nonnull @_ZN4toml10color_ansi4blueERSo) - to label %157 unwind label %.loopexit.split-lp.loopexit +152: ; preds = %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread83 + %153 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %151, ptr noundef nonnull @_ZN4toml10color_ansi4blueERSo) + to label %154 unwind label %.loopexit.split-lp.loopexit -157: ; preds = %155 - %158 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %156, ptr noundef nonnull @.str.22) - to label %159 unwind label %.loopexit.split-lp.loopexit +154: ; preds = %152 + %155 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %153, ptr noundef nonnull @.str.22) + to label %156 unwind label %.loopexit.split-lp.loopexit -159: ; preds = %157 - %160 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %158, ptr noundef nonnull @_ZN4toml10color_ansi5resetERSo) - to label %161 unwind label %.loopexit.split-lp.loopexit +156: ; preds = %154 + %157 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %155, ptr noundef nonnull @_ZN4toml10color_ansi5resetERSo) + to label %158 unwind label %.loopexit.split-lp.loopexit -161: ; preds = %159 - %162 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %160, ptr noundef nonnull align 8 dereferenceable(32) %134) - to label %163 unwind label %.loopexit.split-lp.loopexit +158: ; preds = %156 + %159 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %157, ptr noundef nonnull align 8 dereferenceable(32) %131) + to label %160 unwind label %.loopexit.split-lp.loopexit -163: ; preds = %161 - %164 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %162, i8 noundef signext 10) - to label %165 unwind label %.loopexit.split-lp.loopexit +160: ; preds = %158 + %161 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %159, i8 noundef signext 10) + to label %162 unwind label %.loopexit.split-lp.loopexit -165: ; preds = %163 +162: ; preds = %160 invoke void @_ZN4toml6detail11make_stringB5cxx11Emc(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %11, i64 noundef %95, i8 noundef signext 32) - to label %166 unwind label %.loopexit.split-lp.loopexit + to label %163 unwind label %.loopexit.split-lp.loopexit -166: ; preds = %165 - %167 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(32) %11) - to label %168 unwind label %181 +163: ; preds = %162 + %164 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(32) %11) + to label %165 unwind label %178 -168: ; preds = %166 - %169 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %167, ptr noundef nonnull @_ZN4toml10color_ansi4boldERSo) - to label %170 unwind label %181 +165: ; preds = %163 + %166 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %164, ptr noundef nonnull @_ZN4toml10color_ansi4boldERSo) + to label %167 unwind label %178 -170: ; preds = %168 - %171 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %169, ptr noundef nonnull @_ZN4toml10color_ansi4blueERSo) - to label %172 unwind label %181 +167: ; preds = %165 + %168 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %166, ptr noundef nonnull @_ZN4toml10color_ansi4blueERSo) + to label %169 unwind label %178 -172: ; preds = %170 - %173 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %171, ptr noundef nonnull @.str.23) - to label %174 unwind label %181 +169: ; preds = %167 + %170 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %168, ptr noundef nonnull @.str.23) + to label %171 unwind label %178 -174: ; preds = %172 - %175 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %173, ptr noundef nonnull @_ZN4toml10color_ansi5resetERSo) - to label %176 unwind label %181 +171: ; preds = %169 + %172 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %170, ptr noundef nonnull @_ZN4toml10color_ansi5resetERSo) + to label %173 unwind label %178 -176: ; preds = %174 - %177 = load ptr, ptr %11, align 8 - %178 = icmp eq ptr %177, %122 - br i1 %178, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i54, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i53 - -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i54: ; preds = %176 - %179 = load i64, ptr %123, align 8 - %180 = icmp ult i64 %179, 16 - call void @llvm.assume(i1 %180) +173: ; preds = %171 + %174 = load ptr, ptr %11, align 8 + %175 = icmp eq ptr %174, %122 + br i1 %175, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i54, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i53 + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i54: ; preds = %173 + %176 = load i64, ptr %123, align 8 + %177 = icmp ult i64 %176, 16 + call void @llvm.assume(i1 %177) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit55 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i53: ; preds = %176 - call void @_ZdlPv(ptr noundef %177) #33 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i53: ; preds = %173 + call void @_ZdlPv(ptr noundef %174) #33 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit55 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit55: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i54, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i53 call void @_ZNSaIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #30 - br label %183 + br label %180 -181: ; preds = %174, %172, %170, %168, %166 - %182 = landingpad { ptr, i32 } +178: ; preds = %171, %169, %167, %165, %163 + %179 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #30 br label %.loopexit.split-lp -183: ; preds = %150, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit55 - %184 = getelementptr inbounds i8, ptr %130, i64 80 - invoke void @_ZZN4toml6detail16format_underlineERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorISt4pairINS_15source_locationES6_ESaISC_EERKS9_IS6_SaIS6_EEbENKUlRNS1_19basic_ostringstreamIcS4_S5_EERKSB_S8_E_clESN_SP_S8_(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(112) %6, ptr noundef nonnull align 8 dereferenceable(80) %130, ptr noundef nonnull align 8 dereferenceable(32) %184) - to label %185 unwind label %.loopexit.split-lp.loopexit +180: ; preds = %147, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit55 + %181 = getelementptr inbounds i8, ptr %126, i64 80 + invoke void @_ZZN4toml6detail16format_underlineERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorISt4pairINS_15source_locationES6_ESaISC_EERKS9_IS6_SaIS6_EEbENKUlRNS1_19basic_ostringstreamIcS4_S5_EERKSB_S8_E_clESN_SP_S8_(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(112) %6, ptr noundef nonnull align 8 dereferenceable(80) %126, ptr noundef nonnull align 8 dereferenceable(32) %181) + to label %182 unwind label %.loopexit.split-lp.loopexit -185: ; preds = %183 - %186 = add nuw i64 %.036103, 1 - %187 = load ptr, ptr %14, align 8 - %188 = load ptr, ptr %2, align 8 - %189 = ptrtoint ptr %187 to i64 - %190 = ptrtoint ptr %188 to i64 - %191 = sub i64 %189, %190 - %192 = sdiv exact i64 %191, 112 - %193 = icmp ult i64 %186, %192 - br i1 %193, label %124, label %._crit_edge105, !llvm.loop !32 - -._crit_edge105: ; preds = %185, %.preheader - %194 = load ptr, ptr %3, align 8 - %195 = getelementptr inbounds i8, ptr %3, i64 8 - %196 = load ptr, ptr %195, align 8 - %197 = icmp eq ptr %194, %196 - br i1 %197, label %.loopexit, label %198 - -198: ; preds = %._crit_edge105 - %199 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %6, i8 noundef signext 10) - to label %200 unwind label %.loopexit.split-lp.loopexit.split-lp +182: ; preds = %180 + %183 = add nuw i64 %.036103, 1 + %184 = load ptr, ptr %14, align 8 + %185 = load ptr, ptr %2, align 8 + %186 = ptrtoint ptr %184 to i64 + %187 = ptrtoint ptr %185 to i64 + %188 = sub i64 %186, %187 + %189 = sdiv exact i64 %188, 112 + %190 = icmp ult i64 %183, %189 + br i1 %190, label %124, label %._crit_edge105, !llvm.loop !32 + +._crit_edge105: ; preds = %182, %.preheader.split + %191 = load ptr, ptr %3, align 8 + %192 = getelementptr inbounds i8, ptr %3, i64 8 + %193 = load ptr, ptr %192, align 8 + %194 = icmp eq ptr %191, %193 + br i1 %194, label %.loopexit, label %195 -200: ; preds = %198 +195: ; preds = %._crit_edge105 + %196 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %6, i8 noundef signext 10) + to label %197 unwind label %.loopexit.split-lp.loopexit.split-lp + +197: ; preds = %195 invoke void @_ZN4toml6detail11make_stringB5cxx11Emc(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %12, i64 noundef %95, i8 noundef signext 32) - to label %201 unwind label %.loopexit.split-lp.loopexit.split-lp + to label %198 unwind label %.loopexit.split-lp.loopexit.split-lp -201: ; preds = %200 - %202 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(32) %12) - to label %203 unwind label %231 +198: ; preds = %197 + %199 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(32) %12) + to label %200 unwind label %228 -203: ; preds = %201 - %204 = load ptr, ptr %12, align 8 - %205 = getelementptr inbounds i8, ptr %12, i64 16 - %206 = icmp eq ptr %204, %205 - br i1 %206, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i57, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i56 - -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i57: ; preds = %203 - %207 = getelementptr inbounds i8, ptr %12, i64 8 - %208 = load i64, ptr %207, align 8 - %209 = icmp ult i64 %208, 16 - call void @llvm.assume(i1 %209) +200: ; preds = %198 + %201 = load ptr, ptr %12, align 8 + %202 = getelementptr inbounds i8, ptr %12, i64 16 + %203 = icmp eq ptr %201, %202 + br i1 %203, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i57, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i56 + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i57: ; preds = %200 + %204 = getelementptr inbounds i8, ptr %12, i64 8 + %205 = load i64, ptr %204, align 8 + %206 = icmp ult i64 %205, 16 + call void @llvm.assume(i1 %206) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit58 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i56: ; preds = %203 - call void @_ZdlPv(ptr noundef %204) #33 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i56: ; preds = %200 + call void @_ZdlPv(ptr noundef %201) #33 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit58 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit58: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i57, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i56 call void @_ZNSaIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #30 - %210 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull @_ZN4toml10color_ansi4boldERSo) - to label %211 unwind label %.loopexit.split-lp.loopexit.split-lp + %207 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull @_ZN4toml10color_ansi4boldERSo) + to label %208 unwind label %.loopexit.split-lp.loopexit.split-lp -211: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit58 - %212 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %210, ptr noundef nonnull @_ZN4toml10color_ansi4blueERSo) - to label %213 unwind label %.loopexit.split-lp.loopexit.split-lp +208: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit58 + %209 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %207, ptr noundef nonnull @_ZN4toml10color_ansi4blueERSo) + to label %210 unwind label %.loopexit.split-lp.loopexit.split-lp -213: ; preds = %211 - %214 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %212, ptr noundef nonnull @.str.25) - to label %215 unwind label %.loopexit.split-lp.loopexit.split-lp +210: ; preds = %208 + %211 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %209, ptr noundef nonnull @.str.25) + to label %212 unwind label %.loopexit.split-lp.loopexit.split-lp -215: ; preds = %213 - %216 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %214, ptr noundef nonnull @_ZN4toml10color_ansi5resetERSo) - to label %217 unwind label %.loopexit.split-lp.loopexit.split-lp +212: ; preds = %210 + %213 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %211, ptr noundef nonnull @_ZN4toml10color_ansi5resetERSo) + to label %214 unwind label %.loopexit.split-lp.loopexit.split-lp -217: ; preds = %215 - %218 = load ptr, ptr %3, align 8 - %219 = load ptr, ptr %195, align 8 - %220 = icmp eq ptr %218, %219 - br i1 %220, label %.loopexit, label %.lr.ph108 +214: ; preds = %212 + %215 = load ptr, ptr %3, align 8 + %216 = load ptr, ptr %192, align 8 + %217 = icmp eq ptr %215, %216 + br i1 %217, label %.loopexit, label %.lr.ph108 -.lr.ph108: ; preds = %217, %228 - %.sroa.059.0106 = phi ptr [ %229, %228 ], [ %218, %217 ] - %221 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull @_ZN4toml10color_ansi4boldERSo) - to label %222 unwind label %.loopexit84 +.lr.ph108: ; preds = %214, %225 + %.sroa.059.0106 = phi ptr [ %226, %225 ], [ %215, %214 ] + %218 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull @_ZN4toml10color_ansi4boldERSo) + to label %219 unwind label %.loopexit84 -222: ; preds = %.lr.ph108 - %223 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %221, ptr noundef nonnull @.str.26) - to label %224 unwind label %.loopexit84 +219: ; preds = %.lr.ph108 + %220 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %218, ptr noundef nonnull @.str.26) + to label %221 unwind label %.loopexit84 -224: ; preds = %222 - %225 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %223, ptr noundef nonnull @_ZN4toml10color_ansi5resetERSo) - to label %226 unwind label %.loopexit84 +221: ; preds = %219 + %222 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %220, ptr noundef nonnull @_ZN4toml10color_ansi5resetERSo) + to label %223 unwind label %.loopexit84 -226: ; preds = %224 - %227 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.059.0106) - to label %228 unwind label %.loopexit84 +223: ; preds = %221 + %224 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.059.0106) + to label %225 unwind label %.loopexit84 -228: ; preds = %226 - %229 = getelementptr inbounds i8, ptr %.sroa.059.0106, i64 32 - %230 = icmp eq ptr %229, %219 - br i1 %230, label %.loopexit, label %.lr.ph108 +225: ; preds = %223 + %226 = getelementptr inbounds i8, ptr %.sroa.059.0106, i64 32 + %227 = icmp eq ptr %226, %216 + br i1 %227, label %.loopexit, label %.lr.ph108 -231: ; preds = %201 - %232 = landingpad { ptr, i32 } +228: ; preds = %198 + %229 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #30 br label %.loopexit.split-lp -.loopexit: ; preds = %228, %217, %._crit_edge105 +.loopexit: ; preds = %225, %214, %._crit_edge105 invoke void @_ZNKRSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %0, ptr noundef nonnull align 8 dereferenceable(112) %6) - to label %233 unwind label %.loopexit.split-lp.loopexit.split-lp + to label %230 unwind label %.loopexit.split-lp.loopexit.split-lp -233: ; preds = %.loopexit +230: ; preds = %.loopexit call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %6) #30 ret void -.loopexit.split-lp: ; preds = %.loopexit84, %.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit, %231, %181, %152, %63 - %.pn = phi { ptr, i32 } [ %182, %181 ], [ %232, %231 ], [ %153, %152 ], [ %64, %63 ], [ %lpad.loopexit, %.loopexit84 ], [ %lpad.loopexit85, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp86, %.loopexit.split-lp.loopexit.split-lp ] +.loopexit.split-lp: ; preds = %.loopexit84, %.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit, %228, %178, %149, %63 + %.pn = phi { ptr, i32 } [ %179, %178 ], [ %229, %228 ], [ %150, %149 ], [ %64, %63 ], [ %lpad.loopexit, %.loopexit84 ], [ %lpad.loopexit85, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp86, %.loopexit.split-lp.loopexit.split-lp ] call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %6) #30 resume { ptr, i32 } %.pn } diff --git a/bench/nlohmann_json/optimized/unit-unicode3.cpp.ll b/bench/nlohmann_json/optimized/unit-unicode3.cpp.ll index 70878127c6b..9ddc6d0b8c2 100644 --- a/bench/nlohmann_json/optimized/unit-unicode3.cpp.ll +++ b/bench/nlohmann_json/optimized/unit-unicode3.cpp.ll @@ -1034,13 +1034,13 @@ lpad18: ; preds = %lpad18.loopexit.spl for.inc33: ; preds = %for.inc %inc34 = add nuw nsw i32 %byte3.094, 1 - %exitcond109.not = icmp eq i32 %inc34, 192 - br i1 %exitcond109.not, label %for.inc36, label %for.cond28.preheader, !llvm.loop !10 + %exitcond107.not = icmp eq i32 %inc34, 192 + br i1 %exitcond107.not, label %for.inc36, label %for.cond28.preheader, !llvm.loop !10 for.inc36: ; preds = %for.inc33 %inc37 = add nuw nsw i32 %byte2.095, 1 - %exitcond110.not = icmp eq i32 %inc37, 192 - br i1 %exitcond110.not, label %if.end, label %for.cond25.preheader, !llvm.loop !11 + %exitcond108.not = icmp eq i32 %inc37, 192 + br i1 %exitcond108.not, label %if.end, label %for.cond25.preheader, !llvm.loop !11 if.end: ; preds = %for.inc36, %invoke.cont19 call void @_ZN7doctest6detail7SubcaseD1Ev(ptr noundef nonnull align 8 dereferenceable(41) %ref.tmp13) #24 @@ -1107,8 +1107,8 @@ invoke.cont78: ; preds = %for.body77 for.inc80: ; preds = %invoke.cont78 %inc81 = add nuw nsw i32 %byte274.096, 1 - %exitcond111.not = icmp eq i32 %inc81, 192 - br i1 %exitcond111.not, label %if.end86, label %for.body77, !llvm.loop !12 + %exitcond109.not = icmp eq i32 %inc81, 192 + br i1 %exitcond109.not, label %if.end86, label %for.body77, !llvm.loop !12 lpad64: ; preds = %invoke.cont63 %7 = landingpad { ptr, i32 } @@ -1163,8 +1163,8 @@ invoke.cont108: ; preds = %for.body107 for.inc110: ; preds = %invoke.cont108 %inc111 = add nuw nsw i32 %byte3104.097, 1 - %exitcond112.not = icmp eq i32 %inc111, 192 - br i1 %exitcond112.not, label %for.inc113, label %for.body107, !llvm.loop !13 + %exitcond110.not = icmp eq i32 %inc111, 192 + br i1 %exitcond110.not, label %for.inc113, label %for.body107, !llvm.loop !13 lpad90: ; preds = %invoke.cont89 %8 = landingpad { ptr, i32 } @@ -1189,8 +1189,8 @@ lpad92: ; preds = %lpad92.loopexit.spl for.inc113: ; preds = %for.inc110 %inc114 = add nuw nsw i32 %byte2100.098, 1 - %exitcond113.not = icmp eq i32 %inc114, 192 - br i1 %exitcond113.not, label %if.end119, label %for.cond105.preheader, !llvm.loop !14 + %exitcond111.not = icmp eq i32 %inc114, 192 + br i1 %exitcond111.not, label %if.end119, label %for.cond105.preheader, !llvm.loop !14 if.end119: ; preds = %for.inc113, %invoke.cont93 call void @_ZN7doctest6detail7SubcaseD1Ev(ptr noundef nonnull align 8 dereferenceable(41) %ref.tmp87) #24 @@ -1251,18 +1251,18 @@ invoke.cont149: ; preds = %for.body148 for.inc151: ; preds = %invoke.cont149 %inc152 = add nuw nsw i32 %byte4145.099, 1 - %exitcond114.not = icmp eq i32 %inc152, 192 - br i1 %exitcond114.not, label %for.inc154, label %for.body148, !llvm.loop !15 + %exitcond112.not = icmp eq i32 %inc152, 192 + br i1 %exitcond112.not, label %for.inc154, label %for.body148, !llvm.loop !15 for.inc154: ; preds = %for.inc151 %inc155 = add nuw nsw i32 %byte3141.0100, 1 - %exitcond115.not = icmp eq i32 %inc155, 192 - br i1 %exitcond115.not, label %for.inc157, label %for.cond146.preheader, !llvm.loop !16 + %exitcond113.not = icmp eq i32 %inc155, 192 + br i1 %exitcond113.not, label %for.inc157, label %for.cond146.preheader, !llvm.loop !16 for.inc157: ; preds = %for.inc154, %for.body136 %inc158 = add nuw nsw i32 %byte2133.0101, 1 - %exitcond116.not = icmp eq i32 %inc158, 256 - br i1 %exitcond116.not, label %if.end163, label %for.body136, !llvm.loop !17 + %exitcond114.not = icmp eq i32 %inc158, 256 + br i1 %exitcond114.not, label %if.end163, label %for.body136, !llvm.loop !17 if.end163: ; preds = %for.inc157, %invoke.cont126 call void @_ZN7doctest6detail7SubcaseD1Ev(ptr noundef nonnull align 8 dereferenceable(41) %ref.tmp120) #24 @@ -1323,18 +1323,18 @@ invoke.cont194: ; preds = %for.body193 for.inc196: ; preds = %invoke.cont194 %inc197 = add nuw nsw i32 %byte4190.0102, 1 - %exitcond117.not = icmp eq i32 %inc197, 192 - br i1 %exitcond117.not, label %for.inc199, label %for.body193, !llvm.loop !18 + %exitcond115.not = icmp eq i32 %inc197, 192 + br i1 %exitcond115.not, label %for.inc199, label %for.body193, !llvm.loop !18 for.inc199: ; preds = %for.inc196, %for.body184 %inc200 = add nuw nsw i32 %byte3181.0103, 1 - %exitcond118.not = icmp eq i32 %inc200, 256 - br i1 %exitcond118.not, label %for.inc202, label %for.body184, !llvm.loop !19 + %exitcond116.not = icmp eq i32 %inc200, 256 + br i1 %exitcond116.not, label %for.inc202, label %for.body184, !llvm.loop !19 for.inc202: ; preds = %for.inc199 %inc203 = add nuw nsw i32 %byte2177.0104, 1 - %exitcond119.not = icmp eq i32 %inc203, 192 - br i1 %exitcond119.not, label %if.end208, label %for.cond182.preheader, !llvm.loop !20 + %exitcond117.not = icmp eq i32 %inc203, 192 + br i1 %exitcond117.not, label %if.end208, label %for.cond182.preheader, !llvm.loop !20 if.end208: ; preds = %for.inc202, %invoke.cont170 call void @_ZN7doctest6detail7SubcaseD1Ev(ptr noundef nonnull align 8 dereferenceable(41) %ref.tmp164) #24 @@ -1348,11 +1348,7 @@ invoke.cont211: ; preds = %if.end208 invoke.cont213: ; preds = %invoke.cont211 call void @_ZN7doctest6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp210) #24 %call216 = invoke noundef zeroext i1 @_ZNK7doctest6detail7SubcasecvbEv(ptr noundef nonnull align 8 dereferenceable(41) %ref.tmp209) - to label %invoke.cont215 unwind label %lpad214 - -invoke.cont215: ; preds = %invoke.cont213 - call void @_ZN7doctest6detail7SubcaseD1Ev(ptr noundef nonnull align 8 dereferenceable(41) %ref.tmp209) #24 - br label %if.end254 + to label %if.end253 unwind label %lpad214.loopexit.split-lp lpad212: ; preds = %invoke.cont211 %13 = landingpad { ptr, i32 } @@ -1360,18 +1356,22 @@ lpad212: ; preds = %invoke.cont211 call void @_ZN7doctest6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp210) #24 br label %ehcleanup -lpad214: ; preds = %invoke.cont213 +lpad214.loopexit.split-lp: ; preds = %invoke.cont213 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup call void @_ZN7doctest6detail7SubcaseD1Ev(ptr noundef nonnull align 8 dereferenceable(41) %ref.tmp209) #24 br label %ehcleanup -if.end254: ; preds = %invoke.cont215, %invoke.cont10 +if.end253: ; preds = %invoke.cont213 + call void @_ZN7doctest6detail7SubcaseD1Ev(ptr noundef nonnull align 8 dereferenceable(41) %ref.tmp209) #24 + br label %if.end254 + +if.end254: ; preds = %if.end253, %invoke.cont10 call void @_ZN7doctest6detail7SubcaseD1Ev(ptr noundef nonnull align 8 dereferenceable(41) %ref.tmp4) #24 br label %if.end255 -ehcleanup: ; preds = %lpad214, %lpad212, %lpad169, %lpad167, %lpad125, %lpad123, %lpad92, %lpad90, %lpad66, %lpad64, %lpad47, %lpad45, %lpad18, %lpad16, %lpad9 - %.pn = phi { ptr, i32 } [ %lpad.phi92, %lpad18 ], [ %6, %lpad47 ], [ %lpad.phi89, %lpad66 ], [ %lpad.phi86, %lpad92 ], [ %lpad.phi83, %lpad125 ], [ %lpad.phi80, %lpad169 ], [ %lpad.loopexit.split-lp, %lpad214 ], [ %13, %lpad212 ], [ %3, %lpad9 ], [ %12, %lpad167 ], [ %10, %lpad123 ], [ %8, %lpad90 ], [ %7, %lpad64 ], [ %5, %lpad45 ], [ %4, %lpad16 ] +ehcleanup: ; preds = %lpad214.loopexit.split-lp, %lpad212, %lpad169, %lpad167, %lpad125, %lpad123, %lpad92, %lpad90, %lpad66, %lpad64, %lpad47, %lpad45, %lpad18, %lpad16, %lpad9 + %.pn = phi { ptr, i32 } [ %lpad.phi92, %lpad18 ], [ %6, %lpad47 ], [ %lpad.phi89, %lpad66 ], [ %lpad.phi86, %lpad92 ], [ %lpad.phi83, %lpad125 ], [ %lpad.phi80, %lpad169 ], [ %lpad.loopexit.split-lp, %lpad214.loopexit.split-lp ], [ %13, %lpad212 ], [ %3, %lpad9 ], [ %12, %lpad167 ], [ %10, %lpad123 ], [ %8, %lpad90 ], [ %7, %lpad64 ], [ %5, %lpad45 ], [ %4, %lpad16 ] call void @_ZN7doctest6detail7SubcaseD1Ev(ptr noundef nonnull align 8 dereferenceable(41) %ref.tmp4) #24 br label %ehcleanup256 diff --git a/bench/nlohmann_json/optimized/unit-unicode4.cpp.ll b/bench/nlohmann_json/optimized/unit-unicode4.cpp.ll index 51ed577f270..dc5f1fe8213 100644 --- a/bench/nlohmann_json/optimized/unit-unicode4.cpp.ll +++ b/bench/nlohmann_json/optimized/unit-unicode4.cpp.ll @@ -1038,18 +1038,18 @@ lpad18: ; preds = %lpad18.loopexit.spl for.inc33: ; preds = %for.inc %inc34 = add nuw nsw i32 %byte3.097, 1 - %exitcond119.not = icmp eq i32 %inc34, 192 - br i1 %exitcond119.not, label %for.inc36, label %for.cond28.preheader, !llvm.loop !10 + %exitcond117.not = icmp eq i32 %inc34, 192 + br i1 %exitcond117.not, label %for.inc36, label %for.cond28.preheader, !llvm.loop !10 for.inc36: ; preds = %for.inc33 %inc37 = add nuw nsw i32 %byte2.098, 1 - %exitcond120.not = icmp eq i32 %inc37, 192 - br i1 %exitcond120.not, label %for.inc39, label %for.cond25.preheader, !llvm.loop !11 + %exitcond118.not = icmp eq i32 %inc37, 192 + br i1 %exitcond118.not, label %for.inc39, label %for.cond25.preheader, !llvm.loop !11 for.inc39: ; preds = %for.inc36 %inc40 = add nuw nsw i32 %byte1.099, 1 - %exitcond121.not = icmp eq i32 %inc40, 244 - br i1 %exitcond121.not, label %if.end, label %for.cond22.preheader, !llvm.loop !12 + %exitcond119.not = icmp eq i32 %inc40, 244 + br i1 %exitcond119.not, label %if.end, label %for.cond22.preheader, !llvm.loop !12 if.end: ; preds = %for.inc39, %invoke.cont19 call void @_ZN7doctest6detail7SubcaseD1Ev(ptr noundef nonnull align 8 dereferenceable(41) %ref.tmp13) #24 @@ -1079,8 +1079,8 @@ invoke.cont55: ; preds = %for.body54 for.inc57: ; preds = %invoke.cont55 %inc58 = add nuw nsw i32 %byte151.0100, 1 - %exitcond122.not = icmp eq i32 %inc58, 244 - br i1 %exitcond122.not, label %if.end60, label %for.body54, !llvm.loop !13 + %exitcond120.not = icmp eq i32 %inc58, 244 + br i1 %exitcond120.not, label %if.end60, label %for.body54, !llvm.loop !13 lpad45: ; preds = %invoke.cont44 %5 = landingpad { ptr, i32 } @@ -1135,8 +1135,8 @@ invoke.cont78: ; preds = %for.body77 for.inc80: ; preds = %invoke.cont78 %inc81 = add nuw nsw i32 %byte274.0101, 1 - %exitcond123.not = icmp eq i32 %inc81, 192 - br i1 %exitcond123.not, label %for.inc83, label %for.body77, !llvm.loop !14 + %exitcond121.not = icmp eq i32 %inc81, 192 + br i1 %exitcond121.not, label %for.inc83, label %for.body77, !llvm.loop !14 lpad64: ; preds = %invoke.cont63 %6 = landingpad { ptr, i32 } @@ -1161,8 +1161,8 @@ lpad66: ; preds = %lpad66.loopexit.spl for.inc83: ; preds = %for.inc80 %inc84 = add nuw nsw i32 %byte170.0102, 1 - %exitcond124.not = icmp eq i32 %inc84, 244 - br i1 %exitcond124.not, label %if.end86, label %for.cond75.preheader, !llvm.loop !15 + %exitcond122.not = icmp eq i32 %inc84, 244 + br i1 %exitcond122.not, label %if.end86, label %for.cond75.preheader, !llvm.loop !15 if.end86: ; preds = %for.inc83, %invoke.cont67 call void @_ZN7doctest6detail7SubcaseD1Ev(ptr noundef nonnull align 8 dereferenceable(41) %ref.tmp61) #24 @@ -1200,8 +1200,8 @@ invoke.cont108: ; preds = %for.body107 for.inc110: ; preds = %invoke.cont108 %inc111 = add nuw nsw i32 %byte3104.0103, 1 - %exitcond125.not = icmp eq i32 %inc111, 192 - br i1 %exitcond125.not, label %for.inc113, label %for.body107, !llvm.loop !16 + %exitcond123.not = icmp eq i32 %inc111, 192 + br i1 %exitcond123.not, label %for.inc113, label %for.body107, !llvm.loop !16 lpad90: ; preds = %invoke.cont89 %7 = landingpad { ptr, i32 } @@ -1226,13 +1226,13 @@ lpad92: ; preds = %lpad92.loopexit.spl for.inc113: ; preds = %for.inc110 %inc114 = add nuw nsw i32 %byte2100.0104, 1 - %exitcond126.not = icmp eq i32 %inc114, 192 - br i1 %exitcond126.not, label %for.inc116, label %for.cond105.preheader, !llvm.loop !17 + %exitcond124.not = icmp eq i32 %inc114, 192 + br i1 %exitcond124.not, label %for.inc116, label %for.cond105.preheader, !llvm.loop !17 for.inc116: ; preds = %for.inc113 %inc117 = add nuw nsw i32 %byte196.0105, 1 - %exitcond127.not = icmp eq i32 %inc117, 244 - br i1 %exitcond127.not, label %if.end119, label %for.cond101.preheader, !llvm.loop !18 + %exitcond125.not = icmp eq i32 %inc117, 244 + br i1 %exitcond125.not, label %if.end119, label %for.cond101.preheader, !llvm.loop !18 if.end119: ; preds = %for.inc116, %invoke.cont93 call void @_ZN7doctest6detail7SubcaseD1Ev(ptr noundef nonnull align 8 dereferenceable(41) %ref.tmp87) #24 @@ -1297,23 +1297,23 @@ invoke.cont149: ; preds = %for.body148 for.inc151: ; preds = %invoke.cont149 %inc152 = add nuw nsw i32 %byte4145.0106, 1 - %exitcond128.not = icmp eq i32 %inc152, 192 - br i1 %exitcond128.not, label %for.inc154, label %for.body148, !llvm.loop !19 + %exitcond126.not = icmp eq i32 %inc152, 192 + br i1 %exitcond126.not, label %for.inc154, label %for.body148, !llvm.loop !19 for.inc154: ; preds = %for.inc151 %inc155 = add nuw nsw i32 %byte3141.0107, 1 - %exitcond129.not = icmp eq i32 %inc155, 192 - br i1 %exitcond129.not, label %for.inc157, label %for.cond146.preheader, !llvm.loop !20 + %exitcond127.not = icmp eq i32 %inc155, 192 + br i1 %exitcond127.not, label %for.inc157, label %for.cond146.preheader, !llvm.loop !20 for.inc157: ; preds = %for.inc154, %for.body136 %inc158 = add nuw nsw i32 %byte2133.0108, 1 - %exitcond130.not = icmp eq i32 %inc158, 256 - br i1 %exitcond130.not, label %for.inc160, label %for.body136, !llvm.loop !21 + %exitcond128.not = icmp eq i32 %inc158, 256 + br i1 %exitcond128.not, label %for.inc160, label %for.body136, !llvm.loop !21 for.inc160: ; preds = %for.inc157 %inc161 = add nuw nsw i32 %byte1129.0109, 1 - %exitcond131.not = icmp eq i32 %inc161, 244 - br i1 %exitcond131.not, label %if.end163, label %for.cond134.preheader, !llvm.loop !22 + %exitcond129.not = icmp eq i32 %inc161, 244 + br i1 %exitcond129.not, label %if.end163, label %for.cond134.preheader, !llvm.loop !22 if.end163: ; preds = %for.inc160, %invoke.cont126 call void @_ZN7doctest6detail7SubcaseD1Ev(ptr noundef nonnull align 8 dereferenceable(41) %ref.tmp120) #24 @@ -1378,23 +1378,23 @@ invoke.cont194: ; preds = %for.body193 for.inc196: ; preds = %invoke.cont194 %inc197 = add nuw nsw i32 %byte4190.0110, 1 - %exitcond132.not = icmp eq i32 %inc197, 192 - br i1 %exitcond132.not, label %for.inc199, label %for.body193, !llvm.loop !23 + %exitcond130.not = icmp eq i32 %inc197, 192 + br i1 %exitcond130.not, label %for.inc199, label %for.body193, !llvm.loop !23 for.inc199: ; preds = %for.inc196, %for.body184 %inc200 = add nuw nsw i32 %byte3181.0111, 1 - %exitcond133.not = icmp eq i32 %inc200, 256 - br i1 %exitcond133.not, label %for.inc202, label %for.body184, !llvm.loop !24 + %exitcond131.not = icmp eq i32 %inc200, 256 + br i1 %exitcond131.not, label %for.inc202, label %for.body184, !llvm.loop !24 for.inc202: ; preds = %for.inc199 %inc203 = add nuw nsw i32 %byte2177.0112, 1 - %exitcond134.not = icmp eq i32 %inc203, 192 - br i1 %exitcond134.not, label %for.inc205, label %for.cond182.preheader, !llvm.loop !25 + %exitcond132.not = icmp eq i32 %inc203, 192 + br i1 %exitcond132.not, label %for.inc205, label %for.cond182.preheader, !llvm.loop !25 for.inc205: ; preds = %for.inc202 %inc206 = add nuw nsw i32 %byte1173.0113, 1 - %exitcond135.not = icmp eq i32 %inc206, 244 - br i1 %exitcond135.not, label %if.end208, label %for.cond178.preheader, !llvm.loop !26 + %exitcond133.not = icmp eq i32 %inc206, 244 + br i1 %exitcond133.not, label %if.end208, label %for.cond178.preheader, !llvm.loop !26 if.end208: ; preds = %for.inc205, %invoke.cont170 call void @_ZN7doctest6detail7SubcaseD1Ev(ptr noundef nonnull align 8 dereferenceable(41) %ref.tmp164) #24 @@ -1408,11 +1408,7 @@ invoke.cont211: ; preds = %if.end208 invoke.cont213: ; preds = %invoke.cont211 call void @_ZN7doctest6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp210) #24 %call216 = invoke noundef zeroext i1 @_ZNK7doctest6detail7SubcasecvbEv(ptr noundef nonnull align 8 dereferenceable(41) %ref.tmp209) - to label %invoke.cont215 unwind label %lpad214 - -invoke.cont215: ; preds = %invoke.cont213 - call void @_ZN7doctest6detail7SubcaseD1Ev(ptr noundef nonnull align 8 dereferenceable(41) %ref.tmp209) #24 - br label %if.end254 + to label %if.end253 unwind label %lpad214.loopexit.split-lp lpad212: ; preds = %invoke.cont211 %12 = landingpad { ptr, i32 } @@ -1420,18 +1416,22 @@ lpad212: ; preds = %invoke.cont211 call void @_ZN7doctest6StringD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp210) #24 br label %ehcleanup -lpad214: ; preds = %invoke.cont213 +lpad214.loopexit.split-lp: ; preds = %invoke.cont213 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup call void @_ZN7doctest6detail7SubcaseD1Ev(ptr noundef nonnull align 8 dereferenceable(41) %ref.tmp209) #24 br label %ehcleanup -if.end254: ; preds = %invoke.cont215, %invoke.cont10 +if.end253: ; preds = %invoke.cont213 + call void @_ZN7doctest6detail7SubcaseD1Ev(ptr noundef nonnull align 8 dereferenceable(41) %ref.tmp209) #24 + br label %if.end254 + +if.end254: ; preds = %if.end253, %invoke.cont10 call void @_ZN7doctest6detail7SubcaseD1Ev(ptr noundef nonnull align 8 dereferenceable(41) %ref.tmp4) #24 br label %if.end255 -ehcleanup: ; preds = %lpad214, %lpad212, %lpad169, %lpad167, %lpad125, %lpad123, %lpad92, %lpad90, %lpad66, %lpad64, %lpad47, %lpad45, %lpad18, %lpad16, %lpad9 - %.pn = phi { ptr, i32 } [ %lpad.phi95, %lpad18 ], [ %lpad.phi92, %lpad47 ], [ %lpad.phi89, %lpad66 ], [ %lpad.phi86, %lpad92 ], [ %lpad.phi83, %lpad125 ], [ %lpad.phi80, %lpad169 ], [ %lpad.loopexit.split-lp, %lpad214 ], [ %12, %lpad212 ], [ %3, %lpad9 ], [ %11, %lpad167 ], [ %9, %lpad123 ], [ %7, %lpad90 ], [ %6, %lpad64 ], [ %5, %lpad45 ], [ %4, %lpad16 ] +ehcleanup: ; preds = %lpad214.loopexit.split-lp, %lpad212, %lpad169, %lpad167, %lpad125, %lpad123, %lpad92, %lpad90, %lpad66, %lpad64, %lpad47, %lpad45, %lpad18, %lpad16, %lpad9 + %.pn = phi { ptr, i32 } [ %lpad.phi95, %lpad18 ], [ %lpad.phi92, %lpad47 ], [ %lpad.phi89, %lpad66 ], [ %lpad.phi86, %lpad92 ], [ %lpad.phi83, %lpad125 ], [ %lpad.phi80, %lpad169 ], [ %lpad.loopexit.split-lp, %lpad214.loopexit.split-lp ], [ %12, %lpad212 ], [ %3, %lpad9 ], [ %11, %lpad167 ], [ %9, %lpad123 ], [ %7, %lpad90 ], [ %6, %lpad64 ], [ %5, %lpad45 ], [ %4, %lpad16 ] call void @_ZN7doctest6detail7SubcaseD1Ev(ptr noundef nonnull align 8 dereferenceable(41) %ref.tmp4) #24 br label %ehcleanup256 diff --git a/bench/opencc/optimized/tail.cc.ll b/bench/opencc/optimized/tail.cc.ll index 04bad506487..84dad96739d 100644 --- a/bench/opencc/optimized/tail.cc.ll +++ b/bench/opencc/optimized/tail.cc.ll @@ -5177,119 +5177,118 @@ _ZN6marisa8grimoire9algorithm7details9get_labelINS0_4trie5EntryEEEiRKT_m.exit160 %.0.lcssa = phi ptr [ %0, %3 ], [ %.1, %228 ] %.lcssa166 = phi i64 [ %7, %3 ], [ %232, %228 ] %234 = icmp sgt i64 %.lcssa166, 1 - br i1 %234, label %235, label %280 + br i1 %234, label %235, label %279 235: ; preds = %._crit_edge196 %.01739.i = getelementptr inbounds i8, ptr %.0.lcssa, i64 16 %236 = icmp ult ptr %.01739.i, %.0127.lcssa br i1 %236, label %.preheader.i, label %_ZN6marisa8grimoire9algorithm7details14insertion_sortIPNS0_4trie5EntryEEEmT_S7_m.exit -.preheader.i: ; preds = %235, %276 - %.01741.i = phi ptr [ %.017.i, %276 ], [ %.01739.i, %235 ] - %.01840.i = phi i64 [ %277, %276 ], [ 1, %235 ] - %237 = icmp ugt ptr %.01741.i, %.0.lcssa - br i1 %237, label %.lr.ph.i, label %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread.i +.preheader.i: ; preds = %235, %275 + %.01741.i = phi ptr [ %.017.i, %275 ], [ %.01739.i, %235 ] + %.01840.i = phi i64 [ %276, %275 ], [ 1, %235 ] + br label %.lr.ph.i .lr.ph.i: ; preds = %.preheader.i, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24.i - %.037.i = phi ptr [ %238, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24.i ], [ %.01741.i, %.preheader.i ] - %238 = getelementptr inbounds i8, ptr %.037.i, i64 -16 - %239 = getelementptr inbounds i8, ptr %.037.i, i64 -8 - %240 = load i32, ptr %239, align 8 - %241 = zext i32 %240 to i64 - %242 = icmp ult i64 %.0129.lcssa, %241 - %243 = getelementptr inbounds i8, ptr %.037.i, i64 8 - %244 = load i32, ptr %243, align 8 - br i1 %242, label %.lr.ph.i.i, label %._crit_edge.i.i + %.037.i = phi ptr [ %237, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24.i ], [ %.01741.i, %.preheader.i ] + %237 = getelementptr inbounds i8, ptr %.037.i, i64 -16 + %238 = getelementptr inbounds i8, ptr %.037.i, i64 -8 + %239 = load i32, ptr %238, align 8 + %240 = zext i32 %239 to i64 + %241 = icmp ult i64 %.0129.lcssa, %240 + %242 = getelementptr inbounds i8, ptr %.037.i, i64 8 + %243 = load i32, ptr %242, align 8 + br i1 %241, label %.lr.ph.i.i, label %._crit_edge.i.i .lr.ph.i.i: ; preds = %.lr.ph.i - %245 = zext i32 %244 to i64 - %246 = load ptr, ptr %238, align 8 - %247 = load ptr, ptr %.037.i, align 8 - br label %250 - -248: ; preds = %252 - %249 = add i64 %.023.i.i, 1 - %exitcond.not.i.i = icmp eq i64 %249, %241 - br i1 %exitcond.not.i.i, label %._crit_edge.i.i, label %250, !llvm.loop !32 - -250: ; preds = %248, %.lr.ph.i.i - %.023.i.i = phi i64 [ %.0129.lcssa, %.lr.ph.i.i ], [ %249, %248 ] - %251 = icmp eq i64 %.023.i.i, %245 - br i1 %251, label %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24.i, label %252 - -252: ; preds = %250 - %253 = sub nsw i64 0, %.023.i.i - %254 = getelementptr inbounds i8, ptr %246, i64 %253 - %255 = load i8, ptr %254, align 1 - %256 = getelementptr inbounds i8, ptr %247, i64 %253 - %257 = load i8, ptr %256, align 1 - %.not.i.i = icmp eq i8 %255, %257 - br i1 %.not.i.i, label %248, label %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.i - -._crit_edge.i.i: ; preds = %248, %.lr.ph.i - %258 = icmp eq i32 %240, %244 - br i1 %258, label %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread.i, label %259 - -259: ; preds = %._crit_edge.i.i - %260 = icmp ult i32 %240, %244 - br i1 %260, label %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread30.i, label %._ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24_crit_edge.i - -._ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24_crit_edge.i: ; preds = %259 - %.pre.i = load ptr, ptr %238, align 8 + %244 = zext i32 %243 to i64 + %245 = load ptr, ptr %237, align 8 + %246 = load ptr, ptr %.037.i, align 8 + br label %249 + +247: ; preds = %251 + %248 = add i64 %.023.i.i, 1 + %exitcond.not.i.i = icmp eq i64 %248, %240 + br i1 %exitcond.not.i.i, label %._crit_edge.i.i, label %249, !llvm.loop !32 + +249: ; preds = %247, %.lr.ph.i.i + %.023.i.i = phi i64 [ %.0129.lcssa, %.lr.ph.i.i ], [ %248, %247 ] + %250 = icmp eq i64 %.023.i.i, %244 + br i1 %250, label %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24.i, label %251 + +251: ; preds = %249 + %252 = sub nsw i64 0, %.023.i.i + %253 = getelementptr inbounds i8, ptr %245, i64 %252 + %254 = load i8, ptr %253, align 1 + %255 = getelementptr inbounds i8, ptr %246, i64 %252 + %256 = load i8, ptr %255, align 1 + %.not.i.i = icmp eq i8 %254, %256 + br i1 %.not.i.i, label %247, label %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.i + +._crit_edge.i.i: ; preds = %247, %.lr.ph.i + %257 = icmp eq i32 %239, %243 + br i1 %257, label %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread.i, label %258 + +258: ; preds = %._crit_edge.i.i + %259 = icmp ult i32 %239, %243 + br i1 %259, label %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread30.i, label %._ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24_crit_edge.i + +._ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24_crit_edge.i: ; preds = %258 + %.pre.i = load ptr, ptr %237, align 8 %.pre47.i = load ptr, ptr %.037.i, align 8 br label %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24.i -_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread30.i: ; preds = %259 - %261 = add i64 %.01840.i, 1 - br label %276 - -_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.i: ; preds = %252 - %262 = zext i8 %255 to i32 - %263 = zext i8 %257 to i32 - %264 = sub nsw i32 %262, %263 - %265 = icmp slt i32 %264, 1 - br i1 %265, label %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.i, label %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24.i - -_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24.i: ; preds = %250, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.i, %._ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24_crit_edge.i - %266 = phi ptr [ %247, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.i ], [ %.pre47.i, %._ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24_crit_edge.i ], [ %247, %250 ] - %267 = phi ptr [ %246, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.i ], [ %.pre.i, %._ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24_crit_edge.i ], [ %246, %250 ] - %.018.i26.i = phi i32 [ %264, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.i ], [ 1, %._ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24_crit_edge.i ], [ 1, %250 ] - %268 = getelementptr inbounds i8, ptr %.037.i, i64 -4 - %269 = load i32, ptr %268, align 4 - store ptr %266, ptr %238, align 8 - store i32 %244, ptr %239, align 8 - %270 = getelementptr inbounds i8, ptr %.037.i, i64 12 - %271 = load i32, ptr %270, align 4 - store i32 %271, ptr %268, align 4 - store ptr %267, ptr %.037.i, align 8 - store i32 %240, ptr %243, align 8 - store i32 %269, ptr %270, align 4 - %272 = icmp ugt ptr %238, %.0.lcssa - br i1 %272, label %.lr.ph.i, label %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.i, !llvm.loop !33 +_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread30.i: ; preds = %258 + %260 = add i64 %.01840.i, 1 + br label %275 + +_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.i: ; preds = %251 + %261 = zext i8 %254 to i32 + %262 = zext i8 %256 to i32 + %263 = sub nsw i32 %261, %262 + %264 = icmp slt i32 %263, 1 + br i1 %264, label %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.i, label %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24.i + +_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24.i: ; preds = %249, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.i, %._ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24_crit_edge.i + %265 = phi ptr [ %246, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.i ], [ %.pre47.i, %._ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24_crit_edge.i ], [ %246, %249 ] + %266 = phi ptr [ %245, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.i ], [ %.pre.i, %._ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24_crit_edge.i ], [ %245, %249 ] + %.018.i26.i = phi i32 [ %263, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.i ], [ 1, %._ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24_crit_edge.i ], [ 1, %249 ] + %267 = getelementptr inbounds i8, ptr %.037.i, i64 -4 + %268 = load i32, ptr %267, align 4 + store ptr %265, ptr %237, align 8 + store i32 %243, ptr %238, align 8 + %269 = getelementptr inbounds i8, ptr %.037.i, i64 12 + %270 = load i32, ptr %269, align 4 + store i32 %270, ptr %267, align 4 + store ptr %266, ptr %.037.i, align 8 + store i32 %239, ptr %242, align 8 + store i32 %268, ptr %269, align 4 + %271 = icmp ugt ptr %237, %.0.lcssa + br i1 %271, label %.lr.ph.i, label %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.i, !llvm.loop !33 _ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.i: ; preds = %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24.i, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.i - %.1.ph.i = phi i32 [ %.018.i26.i, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24.i ], [ %264, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.i ] - %273 = freeze i32 %.1.ph.i - %274 = icmp eq i32 %273, 0 - %275 = add i64 %.01840.i, 1 - br i1 %274, label %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread.i, label %276 + %.1.ph.i = phi i32 [ %.018.i26.i, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread24.i ], [ %263, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.i ] + %272 = freeze i32 %.1.ph.i + %273 = icmp eq i32 %272, 0 + %274 = add i64 %.01840.i, 1 + br i1 %273, label %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread.i, label %275 -_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread.i: ; preds = %._crit_edge.i.i, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.i, %.preheader.i - br label %276 +_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread.i: ; preds = %._crit_edge.i.i, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.i + br label %275 -276: ; preds = %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread.i, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.i, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread30.i - %277 = phi i64 [ %.01840.i, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread.i ], [ %275, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.i ], [ %261, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread30.i ] +275: ; preds = %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread.i, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.i, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread30.i + %276 = phi i64 [ %.01840.i, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread.i ], [ %274, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.i ], [ %260, %_ZN6marisa8grimoire9algorithm7details7compareINS0_4trie5EntryEEEiRKT_S8_m.exit.thread.thread30.i ] %.017.i = getelementptr inbounds i8, ptr %.01741.i, i64 16 - %278 = icmp ult ptr %.017.i, %.0127.lcssa - br i1 %278, label %.preheader.i, label %_ZN6marisa8grimoire9algorithm7details14insertion_sortIPNS0_4trie5EntryEEEmT_S7_m.exit, !llvm.loop !34 + %277 = icmp ult ptr %.017.i, %.0127.lcssa + br i1 %277, label %.preheader.i, label %_ZN6marisa8grimoire9algorithm7details14insertion_sortIPNS0_4trie5EntryEEEmT_S7_m.exit, !llvm.loop !34 -_ZN6marisa8grimoire9algorithm7details14insertion_sortIPNS0_4trie5EntryEEEmT_S7_m.exit: ; preds = %276, %235 - %.018.lcssa.i = phi i64 [ 1, %235 ], [ %277, %276 ] - %279 = add i64 %.018.lcssa.i, %.0144.lcssa - br label %280 +_ZN6marisa8grimoire9algorithm7details14insertion_sortIPNS0_4trie5EntryEEEmT_S7_m.exit: ; preds = %275, %235 + %.018.lcssa.i = phi i64 [ 1, %235 ], [ %276, %275 ] + %278 = add i64 %.018.lcssa.i, %.0144.lcssa + br label %279 -280: ; preds = %_ZN6marisa8grimoire9algorithm7details14insertion_sortIPNS0_4trie5EntryEEEmT_S7_m.exit, %._crit_edge196 - %.7 = phi i64 [ %279, %_ZN6marisa8grimoire9algorithm7details14insertion_sortIPNS0_4trie5EntryEEEmT_S7_m.exit ], [ %.0144.lcssa, %._crit_edge196 ] +279: ; preds = %_ZN6marisa8grimoire9algorithm7details14insertion_sortIPNS0_4trie5EntryEEEmT_S7_m.exit, %._crit_edge196 + %.7 = phi i64 [ %278, %_ZN6marisa8grimoire9algorithm7details14insertion_sortIPNS0_4trie5EntryEEEmT_S7_m.exit ], [ %.0144.lcssa, %._crit_edge196 ] ret i64 %.7 } diff --git a/bench/opencv/optimized/checkchessboard.cpp.ll b/bench/opencv/optimized/checkchessboard.cpp.ll index 0e43f075ee8..d6004b6cc59 100644 --- a/bench/opencv/optimized/checkchessboard.cpp.ll +++ b/bench/opencv/optimized/checkchessboard.cpp.ll @@ -856,8 +856,7 @@ _ZSt4sortIN9__gnu_cxx17__normal_iteratorIPSt4pairIfiESt6vectorIS3_SaIS3_EEEEPFbR _ZNSt6vectorIiSaIiEEC2EmRKiRKS0_.exit.i.i: ; preds = %._crit_edge %117 = tail call noalias noundef nonnull dereferenceable(8) ptr @_Znwm(i64 noundef 8) #19 store i64 0, ptr %117, align 4 - %.not10.i = icmp eq i64 %.03264, %.033.lcssa - br i1 %.not10.i, label %.loopexit, label %.lr.ph.i + br label %.lr.ph.i .lr.ph.i: ; preds = %_ZNSt6vectorIiSaIiEEC2EmRKiRKS0_.exit.i.i, %.lr.ph.i %.011.i = phi i64 [ %124, %.lr.ph.i ], [ %.03264, %_ZNSt6vectorIiSaIiEEC2EmRKiRKS0_.exit.i.i ] @@ -870,34 +869,30 @@ _ZNSt6vectorIiSaIiEEC2EmRKiRKS0_.exit.i.i: ; preds = %._crit_edge store i32 %123, ptr %121, align 4 %124 = add i64 %.011.i, 1 %.not.i = icmp eq i64 %124, %.033.lcssa - br i1 %.not.i, label %.loopexit.loopexit, label %.lr.ph.i, !llvm.loop !25 - -.loopexit.loopexit: ; preds = %.lr.ph.i - %.pre = load i32, ptr %117, align 4 - %125 = sitofp i32 %.pre to double - br label %.loopexit - -.loopexit: ; preds = %.loopexit.loopexit, %_ZNSt6vectorIiSaIiEEC2EmRKiRKS0_.exit.i.i - %126 = phi double [ %125, %.loopexit.loopexit ], [ 0.000000e+00, %_ZNSt6vectorIiSaIiEEC2EmRKiRKS0_.exit.i.i ] - %127 = load i32, ptr %1, align 4 - %128 = sitofp i32 %127 to double - %129 = fmul double %128, 5.000000e-01 - %130 = tail call double @llvm.ceil.f64(double %129) - %131 = load i32, ptr %4, align 4 - %132 = sitofp i32 %131 to double - %133 = fmul double %132, 5.000000e-01 - %134 = tail call double @llvm.ceil.f64(double %133) - %135 = fmul double %130, %134 - %136 = insertelement <2 x double> poison, double %135, i64 0 - %137 = tail call noundef i32 @llvm.x86.sse2.cvtsd2si(<2 x double> %136) - %138 = sitofp i32 %137 to double + br i1 %.not.i, label %.loopexit, label %.lr.ph.i, !llvm.loop !25 + +.loopexit: ; preds = %.lr.ph.i + %125 = load i32, ptr %1, align 4 + %126 = sitofp i32 %125 to double + %127 = fmul double %126, 5.000000e-01 + %128 = tail call double @llvm.ceil.f64(double %127) + %129 = load i32, ptr %4, align 4 + %130 = sitofp i32 %129 to double + %131 = fmul double %130, 5.000000e-01 + %132 = tail call double @llvm.ceil.f64(double %131) + %133 = fmul double %128, %132 + %134 = insertelement <2 x double> poison, double %133, i64 0 + %135 = tail call noundef i32 @llvm.x86.sse2.cvtsd2si(<2 x double> %134) + %136 = load i32, ptr %117, align 4 + %137 = sitofp i32 %136 to double + %138 = sitofp i32 %135 to double %139 = fmul double %138, 7.500000e-01 - %140 = fcmp ogt double %139, %126 + %140 = fcmp ogt double %139, %137 br i1 %140, label %_ZNSt6vectorIiSaIiEED2Ev.exit36.thread, label %141 141: ; preds = %.loopexit - %142 = tail call double @llvm.floor.f64(double %129) - %143 = tail call double @llvm.floor.f64(double %133) + %142 = tail call double @llvm.floor.f64(double %127) + %143 = tail call double @llvm.floor.f64(double %131) %144 = fmul double %142, %143 %145 = insertelement <2 x double> poison, double %144, i64 0 %146 = tail call noundef i32 @llvm.x86.sse2.cvtsd2si(<2 x double> %145) @@ -911,8 +906,8 @@ _ZNSt6vectorIiSaIiEEC2EmRKiRKS0_.exit.i.i: ; preds = %._crit_edge _ZNSt6vectorIiSaIiEED2Ev.exit36.thread: ; preds = %141, %.loopexit tail call void @_ZdlPv(ptr noundef nonnull %117) #18 - %.pre68 = load ptr, ptr %10, align 8 - %.pre69 = load ptr, ptr %0, align 8 + %.pre = load ptr, ptr %10, align 8 + %.pre68 = load ptr, ptr %0, align 8 br label %153 _ZNSt6vectorIiSaIiEED2Ev.exit36: ; preds = %141 @@ -920,8 +915,8 @@ _ZNSt6vectorIiSaIiEED2Ev.exit36: ; preds = %141 br label %.loopexit57 153: ; preds = %_ZNSt6vectorIiSaIiEED2Ev.exit36.thread, %._crit_edge - %154 = phi ptr [ %.pre69, %_ZNSt6vectorIiSaIiEED2Ev.exit36.thread ], [ %100, %._crit_edge ] - %155 = phi ptr [ %.pre68, %_ZNSt6vectorIiSaIiEED2Ev.exit36.thread ], [ %101, %._crit_edge ] + %154 = phi ptr [ %.pre68, %_ZNSt6vectorIiSaIiEED2Ev.exit36.thread ], [ %100, %._crit_edge ] + %155 = phi ptr [ %.pre, %_ZNSt6vectorIiSaIiEED2Ev.exit36.thread ], [ %101, %._crit_edge ] %156 = ptrtoint ptr %155 to i64 %157 = ptrtoint ptr %154 to i64 %158 = sub i64 %156, %157 diff --git a/bench/opencv/optimized/face_detection_mtcnn.cpp.ll b/bench/opencv/optimized/face_detection_mtcnn.cpp.ll index 4a8fffce1c1..171b0946e8a 100644 --- a/bench/opencv/optimized/face_detection_mtcnn.cpp.ll +++ b/bench/opencv/optimized/face_detection_mtcnn.cpp.ll @@ -8252,8 +8252,8 @@ _ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE7reserveEm.exit.i799 _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE7reserveEm.exit.i799: ; preds = %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit.i.i812, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5clearEv.exit.i798 - %2620 = phi ptr [ %2608, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5clearEv.exit.i798 ], [ %2619, %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit.i.i812 ] - %2621 = phi ptr [ %2605, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5clearEv.exit.i798 ], [ %2618, %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit.i.i812 ] + %2620 = phi ptr [ %2619, %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit.i.i812 ], [ %2608, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5clearEv.exit.i798 ] + %2621 = phi ptr [ %2618, %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit.i.i812 ], [ %2605, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5clearEv.exit.i798 ] %.not.i.i.i.i.i.i.i.i800 = icmp eq ptr %2621, %2620 br i1 %.not.i.i.i.i.i.i.i.i800, label %2625, label %2622 @@ -8586,8 +8586,8 @@ _ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE7reserveEm.exit.i854 _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE7reserveEm.exit.i854: ; preds = %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit.i.i867, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5clearEv.exit.i853 - %2731 = phi ptr [ %2719, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5clearEv.exit.i853 ], [ %2730, %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit.i.i867 ] - %2732 = phi ptr [ %2716, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5clearEv.exit.i853 ], [ %2729, %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit.i.i867 ] + %2731 = phi ptr [ %2730, %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit.i.i867 ], [ %2719, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5clearEv.exit.i853 ] + %2732 = phi ptr [ %2729, %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit.i.i867 ], [ %2716, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5clearEv.exit.i853 ] %.not.i.i.i.i.i.i.i.i855 = icmp eq ptr %2732, %2731 br i1 %.not.i.i.i.i.i.i.i.i855, label %2736, label %2733 @@ -40699,13 +40699,9 @@ _ZNSt6vectorIiSaIiEEC2EmRKS0_.exit.i.i.i.i: ; preds = %.noexc83.i.i.i.i %89 = add nuw nsw i32 %.07.i.i.i.i.i, 1 %90 = getelementptr inbounds i8, ptr %.sroa.02.06.i.i.i.i.i, i64 4 %.not.i.i.i.i12.i = icmp eq ptr %90, %.0.i.i.i.i.i113.i.i.i.i - br i1 %.not.i.i.i.i12.i, label %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiEvT_S7_T0_.exit.i.i.i.i, label %.lr.ph.i.i.i.i.i, !llvm.loop !474 + br i1 %.not.i.i.i.i12.i, label %.lr.ph96.i.i.i.i, label %.lr.ph.i.i.i.i.i, !llvm.loop !474 -_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiEvT_S7_T0_.exit.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i - %.not92.i.i.i.i = icmp eq ptr %.0.i.i.i.i.i113.i.i.i.i, %84 - br i1 %.not92.i.i.i.i, label %._crit_edge97.thread.i.i.i.i, label %.lr.ph96.i.i.i.i - -.lr.ph96.i.i.i.i: ; preds = %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiEvT_S7_T0_.exit.i.i.i.i +.lr.ph96.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i %91 = ptrtoint ptr %.0.i.i.i.i.i113.i.i.i.i to i64 %92 = ptrtoint ptr %84 to i64 %93 = sub i64 %91, %92 @@ -41005,12 +41001,8 @@ _ZNSt6vectorIiSaIiEED2Ev.exit104.i.i.i.i: ; preds = %._crit_edge.thread. %.not.i.i.i105.i.i.i.i = icmp eq ptr %.sroa.024.2.lcssa125.i.i.i.i, null br i1 %.not.i.i.i105.i.i.i.i, label %_ZN6custom12_GLOBAL__N_14Face6runNMSERSt6vectorIS1_SaIS1_EEfb.exit.i.i.i, label %._crit_edge97.thread.i.i.i.i -._crit_edge97.thread.i.i.i.i: ; preds = %._crit_edge97.i.i.i.i, %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiEvT_S7_T0_.exit.i.i.i.i - %.sroa.0.4.i.i.i = phi ptr [ null, %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiEvT_S7_T0_.exit.i.i.i.i ], [ %.sroa.0.1.i.i.i, %._crit_edge97.i.i.i.i ] - %.sroa.7.2.i.i.i = phi ptr [ null, %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiEvT_S7_T0_.exit.i.i.i.i ], [ %.sroa.7.1.i.i.i, %._crit_edge97.i.i.i.i ] - %.sroa.11.2.i.i.i = phi ptr [ null, %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiEvT_S7_T0_.exit.i.i.i.i ], [ %.sroa.11.1.i.i.i, %._crit_edge97.i.i.i.i ] - %.sroa.024.1.lcssa128.i.i.i.i = phi ptr [ %84, %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEiEvT_S7_T0_.exit.i.i.i.i ], [ %.sroa.024.2.lcssa125.i.i.i.i, %._crit_edge97.i.i.i.i ] - tail call void @_ZdlPv(ptr noundef nonnull %.sroa.024.1.lcssa128.i.i.i.i) #33, !noalias !468 +._crit_edge97.thread.i.i.i.i: ; preds = %._crit_edge97.i.i.i.i + tail call void @_ZdlPv(ptr noundef nonnull %.sroa.024.2.lcssa125.i.i.i.i) #33, !noalias !468 br label %_ZN6custom12_GLOBAL__N_14Face6runNMSERSt6vectorIS1_SaIS1_EEfb.exit.i.i.i .loopexit.i.i.i.i: ; preds = %199 @@ -41048,9 +41040,9 @@ _ZNSt6vectorIiSaIiEED2Ev.exit108.i.i.i.i: ; preds = %.thread49.i.i.i.i, _ZN6custom12_GLOBAL__N_14Face6runNMSERSt6vectorIS1_SaIS1_EEfb.exit.i.i.i: ; preds = %._crit_edge97.thread.i.i.i.i, %._crit_edge97.i.i.i.i, %_ZN2cv6detail6get_inIbE3getERNS_11GCPUContextEi.exit.i %216 = phi ptr [ %44, %._crit_edge97.thread.i.i.i.i ], [ %44, %._crit_edge97.i.i.i.i ], [ null, %_ZN2cv6detail6get_inIbE3getERNS_11GCPUContextEi.exit.i ] - %.sroa.0.7.i.i.i = phi ptr [ %.sroa.0.4.i.i.i, %._crit_edge97.thread.i.i.i.i ], [ %.sroa.0.1.i.i.i, %._crit_edge97.i.i.i.i ], [ null, %_ZN2cv6detail6get_inIbE3getERNS_11GCPUContextEi.exit.i ] - %.sroa.7.3.i.i.i = phi ptr [ %.sroa.7.2.i.i.i, %._crit_edge97.thread.i.i.i.i ], [ %.sroa.7.1.i.i.i, %._crit_edge97.i.i.i.i ], [ null, %_ZN2cv6detail6get_inIbE3getERNS_11GCPUContextEi.exit.i ] - %.sroa.11.3.i.i.i = phi ptr [ %.sroa.11.2.i.i.i, %._crit_edge97.thread.i.i.i.i ], [ %.sroa.11.1.i.i.i, %._crit_edge97.i.i.i.i ], [ null, %_ZN2cv6detail6get_inIbE3getERNS_11GCPUContextEi.exit.i ] + %.sroa.0.7.i.i.i = phi ptr [ %.sroa.0.1.i.i.i, %._crit_edge97.thread.i.i.i.i ], [ %.sroa.0.1.i.i.i, %._crit_edge97.i.i.i.i ], [ null, %_ZN2cv6detail6get_inIbE3getERNS_11GCPUContextEi.exit.i ] + %.sroa.7.3.i.i.i = phi ptr [ %.sroa.7.1.i.i.i, %._crit_edge97.thread.i.i.i.i ], [ %.sroa.7.1.i.i.i, %._crit_edge97.i.i.i.i ], [ null, %_ZN2cv6detail6get_inIbE3getERNS_11GCPUContextEi.exit.i ] + %.sroa.11.3.i.i.i = phi ptr [ %.sroa.11.1.i.i.i, %._crit_edge97.thread.i.i.i.i ], [ %.sroa.11.1.i.i.i, %._crit_edge97.i.i.i.i ], [ null, %_ZN2cv6detail6get_inIbE3getERNS_11GCPUContextEi.exit.i ] %217 = load ptr, ptr %35, align 8 %218 = getelementptr inbounds i8, ptr %35, i64 8 %219 = getelementptr inbounds i8, ptr %35, i64 16 diff --git a/bench/opencv/optimized/stereo_binary_sgbm.cpp.ll b/bench/opencv/optimized/stereo_binary_sgbm.cpp.ll index e9ffae86e43..3b4589403d3 100644 --- a/bench/opencv/optimized/stereo_binary_sgbm.cpp.ll +++ b/bench/opencv/optimized/stereo_binary_sgbm.cpp.ll @@ -4847,10 +4847,9 @@ define linkonce_odr hidden void @_ZN2cv6stereo8Matching9Median9x1IsED0Ev(ptr nou define linkonce_odr hidden void @_ZNK2cv6stereo8Matching9Median9x1IsEclERKNS_5RangeE(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 4 dereferenceable(8) %1) unnamed_addr #7 comdat align 2 { %3 = alloca [9 x i16], align 16 %4 = load i32, ptr %1, align 4 - %.fr = freeze i32 %4 %5 = getelementptr inbounds i8, ptr %1, i64 4 %6 = load i32, ptr %5, align 4 - %7 = icmp slt i32 %.fr, %6 + %7 = icmp slt i32 %4, %6 br i1 %7, label %.preheader46.lr.ph, label %._crit_edge57 .preheader46.lr.ph: ; preds = %2 @@ -4864,18 +4863,18 @@ define linkonce_odr hidden void @_ZNK2cv6stereo8Matching9Median9x1IsEclERKNS_5Ra br i1 %14, label %.preheader46.preheader, label %._crit_edge57 .preheader46.preheader: ; preds = %.preheader46.lr.ph - %15 = sext i32 %.fr to i64 + %15 = sext i32 %4 to i64 br label %.preheader46 .preheader46: ; preds = %.preheader46.preheader, %._crit_edge54 - %16 = phi i32 [ %13, %.preheader46.preheader ], [ %74, %._crit_edge54 ] + %16 = phi i32 [ %13, %.preheader46.preheader ], [ %75, %._crit_edge54 ] %indvars.iv77 = phi i64 [ %15, %.preheader46.preheader ], [ %indvars.iv.next78, %._crit_edge54 ] %17 = icmp sgt i32 %16, 8 br i1 %17, label %.lr.ph53, label %._crit_edge54 .lr.ph53: ; preds = %.preheader46 %18 = icmp slt i64 %indvars.iv77, 1 - br i1 %18, label %.lr.ph53.split.us, label %.lr.ph53.split.preheader + br i1 %18, label %.lr.ph53.split.us, label %.lr.ph53.split .lr.ph53.split.us: ; preds = %.lr.ph53, %.lr.ph53.split.us %.04352.us = phi i32 [ %28, %.lr.ph53.split.us ], [ 4, %.lr.ph53 ] @@ -4895,104 +4894,104 @@ define linkonce_odr hidden void @_ZNK2cv6stereo8Matching9Median9x1IsEclERKNS_5Ra %31 = icmp slt i32 %28, %30 br i1 %31, label %.lr.ph53.split.us, label %._crit_edge54, !llvm.loop !54 -.lr.ph53.split.preheader: ; preds = %.lr.ph53, %69 - %indvars.iv = phi i64 [ %indvars.iv.next, %69 ], [ 0, %.lr.ph53 ] - %.04352 = phi i32 [ %70, %69 ], [ 4, %.lr.ph53 ] +.lr.ph53.split: ; preds = %.lr.ph53, %70 + %indvars.iv = phi i64 [ %indvars.iv.next, %70 ], [ 0, %.lr.ph53 ] + %.04352 = phi i32 [ %71, %70 ], [ 4, %.lr.ph53 ] %32 = load i32, ptr %9, align 4 %33 = add nsw i32 %32, -1 %34 = sext i32 %33 to i64 %.not = icmp slt i64 %indvars.iv77, %34 %35 = load ptr, ptr %10, align 8 - br i1 %.not, label %43, label %._crit_edge80 - -._crit_edge80: ; preds = %.lr.ph53.split.preheader - %36 = mul nsw i32 %32, %.04352 - %37 = sext i32 %36 to i64 - %38 = add nsw i64 %indvars.iv77, %37 - %39 = getelementptr inbounds i16, ptr %35, i64 %38 - %40 = load i16, ptr %39, align 2 - %41 = load ptr, ptr %12, align 8 - %42 = getelementptr inbounds i16, ptr %41, i64 %38 - store i16 %40, ptr %42, align 2 - br label %69 + br i1 %.not, label %44, label %36 + +36: ; preds = %.lr.ph53.split + %37 = mul nsw i32 %32, %.04352 + %38 = sext i32 %37 to i64 + %39 = add nsw i64 %indvars.iv77, %38 + %40 = getelementptr inbounds i16, ptr %35, i64 %39 + %41 = load i16, ptr %40, align 2 + %42 = load ptr, ptr %12, align 8 + %43 = getelementptr inbounds i16, ptr %42, i64 %39 + store i16 %41, ptr %43, align 2 + br label %70 -43: ; preds = %.lr.ph53.split.preheader - %44 = sext i32 %32 to i64 +44: ; preds = %.lr.ph53.split + %45 = sext i32 %32 to i64 %invariant.gep = getelementptr i16, ptr %35, i64 %indvars.iv77 - br label %45 - -45: ; preds = %43, %45 - %indvars.iv62 = phi i64 [ 0, %43 ], [ %indvars.iv.next63, %45 ] - %indvars.iv60 = phi i64 [ %indvars.iv, %43 ], [ %indvars.iv.next61, %45 ] - %46 = mul nsw i64 %indvars.iv60, %44 - %gep = getelementptr i16, ptr %invariant.gep, i64 %46 - %47 = load i16, ptr %gep, align 2 + br label %46 + +46: ; preds = %44, %46 + %indvars.iv62 = phi i64 [ 0, %44 ], [ %indvars.iv.next63, %46 ] + %indvars.iv60 = phi i64 [ %indvars.iv, %44 ], [ %indvars.iv.next61, %46 ] + %47 = mul nsw i64 %indvars.iv60, %45 + %gep = getelementptr i16, ptr %invariant.gep, i64 %47 + %48 = load i16, ptr %gep, align 2 %indvars.iv.next63 = add nuw nsw i64 %indvars.iv62, 1 - %48 = getelementptr inbounds [9 x i16], ptr %3, i64 0, i64 %indvars.iv62 - store i16 %47, ptr %48, align 2 + %49 = getelementptr inbounds [9 x i16], ptr %3, i64 0, i64 %indvars.iv62 + store i16 %48, ptr %49, align 2 %indvars.iv.next61 = add nuw nsw i64 %indvars.iv60, 1 %exitcond.not = icmp eq i64 %indvars.iv.next63, 9 - br i1 %exitcond.not, label %.lr.ph.preheader, label %45, !llvm.loop !55 + br i1 %exitcond.not, label %.lr.ph.preheader, label %46, !llvm.loop !55 -.lr.ph.preheader: ; preds = %45, %._crit_edge - %indvars.iv73 = phi i64 [ %indvars.iv.next74, %._crit_edge ], [ 0, %45 ] - %indvars.iv67 = phi i64 [ %indvars.iv.next68, %._crit_edge ], [ 1, %45 ] +.lr.ph.preheader: ; preds = %46, %._crit_edge + %indvars.iv73 = phi i64 [ %indvars.iv.next74, %._crit_edge ], [ 0, %46 ] + %indvars.iv67 = phi i64 [ %indvars.iv.next68, %._crit_edge ], [ 1, %46 ] %indvars.iv.next74 = add nuw nsw i64 %indvars.iv73, 1 - %49 = trunc nuw nsw i64 %indvars.iv73 to i32 + %50 = trunc nuw nsw i64 %indvars.iv73 to i32 br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph %indvars.iv69 = phi i64 [ %indvars.iv67, %.lr.ph.preheader ], [ %indvars.iv.next70, %.lr.ph ] - %.03949 = phi i32 [ %49, %.lr.ph.preheader ], [ %spec.select, %.lr.ph ] - %50 = getelementptr inbounds [9 x i16], ptr %3, i64 0, i64 %indvars.iv69 - %51 = load i16, ptr %50, align 2 - %52 = sext i32 %.03949 to i64 - %53 = getelementptr inbounds [9 x i16], ptr %3, i64 0, i64 %52 - %54 = load i16, ptr %53, align 2 - %55 = icmp slt i16 %51, %54 - %56 = trunc nuw nsw i64 %indvars.iv69 to i32 - %spec.select = select i1 %55, i32 %56, i32 %.03949 + %.03949 = phi i32 [ %50, %.lr.ph.preheader ], [ %spec.select, %.lr.ph ] + %51 = getelementptr inbounds [9 x i16], ptr %3, i64 0, i64 %indvars.iv69 + %52 = load i16, ptr %51, align 2 + %53 = sext i32 %.03949 to i64 + %54 = getelementptr inbounds [9 x i16], ptr %3, i64 0, i64 %53 + %55 = load i16, ptr %54, align 2 + %56 = icmp slt i16 %52, %55 + %57 = trunc nuw nsw i64 %indvars.iv69 to i32 + %spec.select = select i1 %56, i32 %57, i32 %.03949 %indvars.iv.next70 = add nuw nsw i64 %indvars.iv69, 1 %exitcond72.not = icmp eq i64 %indvars.iv.next70, 9 br i1 %exitcond72.not, label %._crit_edge, label %.lr.ph, !llvm.loop !56 ._crit_edge: ; preds = %.lr.ph - %57 = getelementptr inbounds [9 x i16], ptr %3, i64 0, i64 %indvars.iv73 - %58 = load i16, ptr %57, align 2 - %59 = sext i32 %spec.select to i64 - %60 = getelementptr inbounds [9 x i16], ptr %3, i64 0, i64 %59 - %61 = load i16, ptr %60, align 2 - store i16 %61, ptr %57, align 2 - store i16 %58, ptr %60, align 2 + %58 = getelementptr inbounds [9 x i16], ptr %3, i64 0, i64 %indvars.iv73 + %59 = load i16, ptr %58, align 2 + %60 = sext i32 %spec.select to i64 + %61 = getelementptr inbounds [9 x i16], ptr %3, i64 0, i64 %60 + %62 = load i16, ptr %61, align 2 + store i16 %62, ptr %58, align 2 + store i16 %59, ptr %61, align 2 %indvars.iv.next68 = add nuw nsw i64 %indvars.iv67, 1 %exitcond76.not = icmp eq i64 %indvars.iv.next74, 5 - br i1 %exitcond76.not, label %62, label %.lr.ph.preheader, !llvm.loop !57 - -62: ; preds = %._crit_edge - %63 = load i16, ptr %11, align 8 - %64 = load ptr, ptr %12, align 8 - %65 = mul nsw i32 %32, %.04352 - %66 = sext i32 %65 to i64 - %67 = getelementptr i16, ptr %64, i64 %indvars.iv77 - %68 = getelementptr i16, ptr %67, i64 %66 - store i16 %63, ptr %68, align 2 - br label %69 + br i1 %exitcond76.not, label %63, label %.lr.ph.preheader, !llvm.loop !57 + +63: ; preds = %._crit_edge + %64 = load i16, ptr %11, align 8 + %65 = load ptr, ptr %12, align 8 + %66 = mul nsw i32 %32, %.04352 + %67 = sext i32 %66 to i64 + %68 = getelementptr i16, ptr %65, i64 %indvars.iv77 + %69 = getelementptr i16, ptr %68, i64 %67 + store i16 %64, ptr %69, align 2 + br label %70 -69: ; preds = %62, %._crit_edge80 - %70 = add nuw nsw i32 %.04352, 1 - %71 = load i32, ptr %8, align 8 - %72 = add nsw i32 %71, -4 - %73 = icmp slt i32 %70, %72 +70: ; preds = %63, %36 + %71 = add nuw nsw i32 %.04352, 1 + %72 = load i32, ptr %8, align 8 + %73 = add nsw i32 %72, -4 + %74 = icmp slt i32 %71, %73 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - br i1 %73, label %.lr.ph53.split.preheader, label %._crit_edge54, !llvm.loop !54 + br i1 %74, label %.lr.ph53.split, label %._crit_edge54, !llvm.loop !54 -._crit_edge54: ; preds = %69, %.lr.ph53.split.us, %.preheader46 - %74 = phi i32 [ %16, %.preheader46 ], [ %29, %.lr.ph53.split.us ], [ %71, %69 ] +._crit_edge54: ; preds = %70, %.lr.ph53.split.us, %.preheader46 + %75 = phi i32 [ %16, %.preheader46 ], [ %29, %.lr.ph53.split.us ], [ %72, %70 ] %indvars.iv.next78 = add nsw i64 %indvars.iv77, 1 - %75 = load i32, ptr %5, align 4 - %76 = sext i32 %75 to i64 - %77 = icmp slt i64 %indvars.iv.next78, %76 - br i1 %77, label %.preheader46, label %._crit_edge57, !llvm.loop !58 + %76 = load i32, ptr %5, align 4 + %77 = sext i32 %76 to i64 + %78 = icmp slt i64 %indvars.iv.next78, %77 + br i1 %78, label %.preheader46, label %._crit_edge57, !llvm.loop !58 ._crit_edge57: ; preds = %._crit_edge54, %.preheader46.lr.ph, %2 ret void diff --git a/bench/opencv/optimized/weighted_median_filter.cpp.ll b/bench/opencv/optimized/weighted_median_filter.cpp.ll index d1380fd102e..4655733cc08 100644 --- a/bench/opencv/optimized/weighted_median_filter.cpp.ll +++ b/bench/opencv/optimized/weighted_median_filter.cpp.ll @@ -1070,15 +1070,15 @@ _ZN12_GLOBAL__N_112from32FTo32SERN2cv3MatES2_iPf.exit: ; preds = %._crit_edge164 store i32 33619968, ptr %16, align 8 store ptr %15, ptr %414, align 8 invoke void @_ZNK2cv3Mat9convertToERKNS_12_OutputArrayEidd(ptr noundef nonnull align 8 dereferenceable(96) %36, ptr noundef nonnull align 8 dereferenceable(24) %16, i32 noundef 4, double noundef 1.000000e+00, double noundef 0.000000e+00) - to label %416 unwind label %434 + to label %416 unwind label %435 416: ; preds = %413 %417 = invoke noalias noundef nonnull dereferenceable(2048) ptr @_Znam(i64 noundef 2048) #18 - to label %.noexc.i unwind label %432 + to label %.noexc.i unwind label %433 .noexc.i: ; preds = %416 %418 = invoke noalias noundef nonnull dereferenceable(262144) ptr @_Znam(i64 noundef 262144) #18 - to label %.noexc208.i unwind label %432 + to label %.noexc208.i unwind label %433 .noexc208.i: ; preds = %.noexc.i store ptr %418, ptr %417, align 8 @@ -1104,80 +1104,78 @@ _ZN12_GLOBAL__N_112from32FTo32SERN2cv3MatES2_iPf.exit: ; preds = %._crit_edge164 .lr.ph324.i: ; preds = %.preheader.lr.ph.i, %._crit_edge325.i %indvars.iv371.i = phi i64 [ 0, %.preheader.lr.ph.i ], [ %indvars.iv.next372.i, %._crit_edge325.i ] %425 = trunc nuw nsw i64 %indvars.iv371.i to i32 - %426 = getelementptr inbounds ptr, ptr %417, i64 %indvars.iv371.i - br label %427 + %426 = uitofp nneg i32 %425 to double + %427 = getelementptr inbounds ptr, ptr %417, i64 %indvars.iv371.i + br label %428 -427: ; preds = %458, %.lr.ph324.i +428: ; preds = %458, %.lr.ph324.i %indvars.iv373.i = phi i64 [ %indvars.iv371.i, %.lr.ph324.i ], [ %indvars.iv.next374.i, %458 ] - %428 = sub nsw i64 %indvars.iv371.i, %indvars.iv373.i - %429 = trunc nsw i64 %428 to i32 - %430 = sitofp i32 %429 to float - %431 = call noundef float @llvm.fabs.f32(float %430) + %429 = sub nsw i64 %indvars.iv371.i, %indvars.iv373.i + %430 = trunc nsw i64 %429 to i32 + %431 = sitofp i32 %430 to float + %432 = call noundef float @llvm.fabs.f32(float %431) switch i32 %5, label %453 [ - i32 1, label %436 - i32 2, label %441 - i32 4, label %444 + i32 1, label %437 + i32 2, label %442 + i32 4, label %445 i32 8, label %458 - i32 16, label %447 + i32 16, label %448 i32 32, label %458 ] -432: ; preds = %.loopexit.i, %._crit_edge.i89, %.noexc.i, %416 - %433 = landingpad { ptr, i32 } +433: ; preds = %.loopexit.i, %._crit_edge.i89, %.noexc.i, %416 + %434 = landingpad { ptr, i32 } cleanup br label %701 -434: ; preds = %413 - %435 = landingpad { ptr, i32 } +435: ; preds = %413 + %436 = landingpad { ptr, i32 } cleanup br label %701 -436: ; preds = %427 - %437 = fneg float %431 - %438 = fmul float %431, %437 - %439 = fmul float %423, %438 - %440 = call noundef float @expf(float noundef %439) #16 +437: ; preds = %428 + %438 = fneg float %432 + %439 = fmul float %432, %438 + %440 = fmul float %423, %439 + %441 = call noundef float @expf(float noundef %440) #16 br label %458 -441: ; preds = %427 - %442 = fadd float %431, %404 - %443 = fdiv float 1.000000e+00, %442 +442: ; preds = %428 + %443 = fadd float %432, %404 + %444 = fdiv float 1.000000e+00, %443 br label %458 -444: ; preds = %427 - %445 = call float @llvm.fmuladd.f32(float %430, float %430, float %424) - %446 = fdiv float 1.000000e+00, %445 +445: ; preds = %428 + %446 = call float @llvm.fmuladd.f32(float %431, float %431, float %424) + %447 = fdiv float 1.000000e+00, %446 br label %458 -447: ; preds = %427 - %448 = trunc nuw nsw i64 %indvars.iv373.i to i32 - %.sroa.speculated270.i = call i32 @llvm.umin.i32(i32 %448, i32 %425) - %449 = uitofp nneg i32 %.sroa.speculated270.i to double - %.sroa.speculated267.i = call i32 @llvm.umax.i32(i32 %425, i32 %448) - %450 = uitofp nneg i32 %.sroa.speculated267.i to double - %451 = fdiv double %449, %450 +448: ; preds = %428 + %449 = trunc nuw nsw i64 %indvars.iv373.i to i32 + %450 = uitofp nneg i32 %449 to double + %451 = fdiv double %426, %450 %452 = fptrunc double %451 to float br label %458 -453: ; preds = %427 - %454 = fneg float %431 - %455 = fmul float %431, %454 +453: ; preds = %428 + %454 = fneg float %432 + %455 = fmul float %432, %454 %456 = fmul float %423, %455 %457 = call noundef float @expf(float noundef %456) #16 br label %458 -458: ; preds = %453, %447, %444, %441, %436, %427, %427 - %.0179.i = phi float [ %457, %453 ], [ %452, %447 ], [ %446, %444 ], [ %443, %441 ], [ %440, %436 ], [ 1.000000e+00, %427 ], [ 1.000000e+00, %427 ] +458: ; preds = %453, %448, %445, %442, %437, %428, %428 + %.0179.i = phi float [ %457, %453 ], [ %452, %448 ], [ %447, %445 ], [ %444, %442 ], [ %441, %437 ], [ 1.000000e+00, %428 ], [ 1.000000e+00, %428 ] %459 = getelementptr inbounds ptr, ptr %417, i64 %indvars.iv373.i %460 = load ptr, ptr %459, align 8 %461 = getelementptr inbounds float, ptr %460, i64 %indvars.iv371.i store float %.0179.i, ptr %461, align 4 - %462 = load ptr, ptr %426, align 8 + %462 = load ptr, ptr %427, align 8 %463 = getelementptr inbounds float, ptr %462, i64 %indvars.iv373.i store float %.0179.i, ptr %463, align 4 %indvars.iv.next374.i = add nuw nsw i64 %indvars.iv373.i, 1 %exitcond.not = icmp eq i64 %indvars.iv.next374.i, 256 - br i1 %exitcond.not, label %._crit_edge325.i, label %427, !llvm.loop !24 + br i1 %exitcond.not, label %._crit_edge325.i, label %428, !llvm.loop !24 ._crit_edge325.i: ; preds = %458 %indvars.iv.next372.i = add nuw nsw i64 %indvars.iv371.i, 1 @@ -1227,7 +1225,7 @@ _ZN12_GLOBAL__N_112from32FTo32SERN2cv3MatES2_iPf.exit: ; preds = %._crit_edge164 %.0286.lcssa.i = phi i32 [ 0, %464 ], [ %.1.i95, %484 ] %.sroa.speculated257.i = call i32 @llvm.smin.i32(i32 %.0286.lcssa.i, i32 256) invoke void @_ZN2cv3MatC1Eiii(ptr noundef nonnull align 8 dereferenceable(96) %17, i32 noundef %.0286.lcssa.i, i32 noundef 3, i32 noundef 5) - to label %.preheader295.i unwind label %432 + to label %.preheader295.i unwind label %433 .preheader295.i: ; preds = %._crit_edge.i89 %486 = getelementptr inbounds i8, ptr %17, i64 16 @@ -1663,10 +1661,10 @@ _ZN12_GLOBAL__N_17float2DEii.exit217.i: ; preds = %.lr.ph.i211.i, %.no %.0167 = phi i32 [ 256, %._crit_edge ], [ %.sroa.speculated257.i, %._crit_edge322.i ], [ 256, %._crit_edge325.i ] %.0166 = phi ptr [ null, %._crit_edge ], [ %584, %._crit_edge322.i ], [ %417, %._crit_edge325.i ] %700 = invoke noundef nonnull align 8 dereferenceable(96) ptr @_ZN2cv3MataSERKS0_(ptr noundef nonnull align 8 dereferenceable(96) %36, ptr noundef nonnull align 8 dereferenceable(96) %15) - to label %_ZN12_GLOBAL__N_115featureIndexingERN2cv3MatERPPfRifi.exit unwind label %432 + to label %_ZN12_GLOBAL__N_115featureIndexingERN2cv3MatERPPfRifi.exit unwind label %433 -701: ; preds = %699, %434, %432 - %.pn205.i = phi { ptr, i32 } [ %433, %432 ], [ %435, %434 ], [ %.pn202.i, %699 ] +701: ; preds = %699, %435, %433 + %.pn205.i = phi { ptr, i32 } [ %434, %433 ], [ %436, %435 ], [ %.pn202.i, %699 ] call void @_ZN2cv3MatD1Ev(ptr noundef nonnull align 8 dereferenceable(96) %15) #16 br label %_ZNSt6vectorIPfSaIS0_EED2Ev.exit147 @@ -3516,12 +3514,6 @@ declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #13 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smin.i32(i32, i32) #14 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umin.i32(i32, i32) #14 - -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umax.i32(i32, i32) #14 - ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare float @llvm.sqrt.f32(float) #14 diff --git a/bench/openjdk/optimized/classFileParser.ll b/bench/openjdk/optimized/classFileParser.ll index 228c0c763d7..2cfb67bde0c 100644 --- a/bench/openjdk/optimized/classFileParser.ll +++ b/bench/openjdk/optimized/classFileParser.ll @@ -10051,11 +10051,11 @@ define hidden noundef zeroext i1 @_ZN15ClassFileParser31check_inner_classes_circ br label %9, !llvm.loop !47 9: ; preds = %.loopexit32, %.lr.ph43 - %indvars.iv61 = phi i64 [ 0, %.lr.ph43 ], [ %indvars.iv.next62, %.loopexit32 ] + %indvars.iv59 = phi i64 [ 0, %.lr.ph43 ], [ %indvars.iv.next60, %.loopexit32 ] %indvars.iv = phi i64 [ 4, %.lr.ph43 ], [ %indvars.iv.next, %.loopexit32 ] %10 = load ptr, ptr %6, align 8 %11 = getelementptr inbounds i8, ptr %10, i64 4 - %12 = getelementptr i16, ptr %11, i64 %indvars.iv61 + %12 = getelementptr i16, ptr %11, i64 %indvars.iv59 %13 = getelementptr i8, ptr %12, i64 2 %14 = load i16, ptr %13, align 2 %.not52.i = icmp eq i16 %14, 0 @@ -10169,42 +10169,42 @@ _ZL27inner_classes_jump_to_outerPK5ArrayItEiPK12ConstantPooli.exit43.us.i: ; pre br i1 %.not.us.i, label %.loopexit, label %.lr.ph.split.us.i, !llvm.loop !49 .loopexit: ; preds = %_ZL27inner_classes_jump_to_outerPK5ArrayItEiPK12ConstantPooli.exit43.us.i, %_ZL27inner_classes_jump_to_outerPK5ArrayItEiPK12ConstantPooli.exit.us.i, %27, %43, %9 - %indvars.iv.next62 = add nuw nsw i64 %indvars.iv61, 4 - %65 = trunc nuw i64 %indvars.iv.next62 to i32 + %indvars.iv.next60 = add nuw nsw i64 %indvars.iv59, 4 + %65 = trunc nuw i64 %indvars.iv.next60 to i32 %66 = icmp sgt i32 %2, %65 br i1 %66, label %.lr.ph, label %_ZL38inner_classes_check_loop_through_outerPK5ArrayItEiPK12ConstantPooli.exit .lr.ph: ; preds = %.loopexit - %67 = or disjoint i64 %indvars.iv61, 1 - %68 = or disjoint i64 %indvars.iv61, 2 - %69 = or disjoint i64 %indvars.iv61, 3 + %67 = or disjoint i64 %indvars.iv59, 1 + %68 = or disjoint i64 %indvars.iv59, 2 + %69 = or disjoint i64 %indvars.iv59, 3 %70 = load i16, ptr %7, align 4 %71 = icmp ugt i16 %70, 48 - %.pre64.pre = load ptr, ptr %6, align 8 + %.pre62.pre = load ptr, ptr %6, align 8 br i1 %71, label %.lr.ph.split, label %.lr.ph.split.us .lr.ph.split.us: ; preds = %.lr.ph - %72 = getelementptr inbounds i8, ptr %.pre64.pre, i64 4 - %73 = getelementptr inbounds i16, ptr %72, i64 %indvars.iv61 + %72 = getelementptr inbounds i8, ptr %.pre62.pre, i64 4 + %73 = getelementptr inbounds i16, ptr %72, i64 %indvars.iv59 %74 = load i16, ptr %73, align 2 br label %75 75: ; preds = %79, %.lr.ph.split.us - %indvars.iv55 = phi i64 [ %indvars.iv.next56, %79 ], [ %indvars.iv, %.lr.ph.split.us ] - %76 = getelementptr inbounds i16, ptr %72, i64 %indvars.iv55 + %indvars.iv53 = phi i64 [ %indvars.iv.next54, %79 ], [ %indvars.iv, %.lr.ph.split.us ] + %76 = getelementptr inbounds i16, ptr %72, i64 %indvars.iv53 %77 = load i16, ptr %76, align 2 %78 = icmp eq i16 %77, %74 br i1 %78, label %_ZL38inner_classes_check_loop_through_outerPK5ArrayItEiPK12ConstantPooli.exit, label %79 79: ; preds = %75 - %indvars.iv.next56 = add nuw nsw i64 %indvars.iv55, 4 - %80 = trunc nuw i64 %indvars.iv.next56 to i32 + %indvars.iv.next54 = add nuw nsw i64 %indvars.iv53, 4 + %80 = trunc nuw i64 %indvars.iv.next54 to i32 %81 = icmp sgt i32 %2, %80 br i1 %81, label %75, label %.loopexit32, !llvm.loop !50 82: ; preds = %113 - %indvars.iv.next59 = add nuw nsw i64 %indvars.iv58, 4 - %83 = trunc nuw i64 %indvars.iv.next59 to i32 + %indvars.iv.next57 = add nuw nsw i64 %indvars.iv56, 4 + %83 = trunc nuw i64 %indvars.iv.next57 to i32 %84 = icmp sgt i32 %2, %83 br i1 %84, label %.lr.ph.splitthread-pre-split, label %.loopexit32, !llvm.loop !51 @@ -10214,16 +10214,16 @@ _ZL27inner_classes_jump_to_outerPK5ArrayItEiPK12ConstantPooli.exit43.us.i: ; pre .lr.ph.split: ; preds = %.lr.ph, %.lr.ph.splitthread-pre-split %85 = phi i16 [ %.pr, %.lr.ph.splitthread-pre-split ], [ %70, %.lr.ph ] - %.pre64 = phi ptr [ %.pre6465, %.lr.ph.splitthread-pre-split ], [ %.pre64.pre, %.lr.ph ] - %indvars.iv58 = phi i64 [ %indvars.iv.next59, %.lr.ph.splitthread-pre-split ], [ %indvars.iv, %.lr.ph ] + %.pre62 = phi ptr [ %.pre6263, %.lr.ph.splitthread-pre-split ], [ %.pre62.pre, %.lr.ph ] + %indvars.iv56 = phi i64 [ %indvars.iv.next57, %.lr.ph.splitthread-pre-split ], [ %indvars.iv, %.lr.ph ] %86 = icmp ugt i16 %85, 48 br i1 %86, label %87, label %113 87: ; preds = %.lr.ph.split - %88 = getelementptr inbounds i8, ptr %.pre64, i64 4 - %89 = getelementptr inbounds i16, ptr %88, i64 %indvars.iv61 + %88 = getelementptr inbounds i8, ptr %.pre62, i64 4 + %89 = getelementptr inbounds i16, ptr %88, i64 %indvars.iv59 %90 = load i16, ptr %89, align 2 - %91 = getelementptr inbounds i16, ptr %88, i64 %indvars.iv58 + %91 = getelementptr inbounds i16, ptr %88, i64 %indvars.iv56 %92 = load i16, ptr %91, align 2 %.not = icmp eq i16 %90, %92 br i1 %.not, label %93, label %_ZNK15ClassFileParser18guarantee_propertyEbPKcP10JavaThread.exit @@ -10231,7 +10231,7 @@ _ZL27inner_classes_jump_to_outerPK5ArrayItEiPK12ConstantPooli.exit43.us.i: ; pre 93: ; preds = %87 %94 = getelementptr inbounds i16, ptr %88, i64 %67 %95 = load i16, ptr %94, align 2 - %96 = or disjoint i64 %indvars.iv58, 1 + %96 = or disjoint i64 %indvars.iv56, 1 %97 = getelementptr inbounds i16, ptr %88, i64 %96 %98 = load i16, ptr %97, align 2 %.not26 = icmp eq i16 %95, %98 @@ -10240,7 +10240,7 @@ _ZL27inner_classes_jump_to_outerPK5ArrayItEiPK12ConstantPooli.exit43.us.i: ; pre 99: ; preds = %93 %100 = getelementptr inbounds i16, ptr %88, i64 %68 %101 = load i16, ptr %100, align 2 - %102 = or disjoint i64 %indvars.iv58, 2 + %102 = or disjoint i64 %indvars.iv56, 2 %103 = getelementptr inbounds i16, ptr %88, i64 %102 %104 = load i16, ptr %103, align 2 %.not27 = icmp eq i16 %101, %104 @@ -10249,7 +10249,7 @@ _ZL27inner_classes_jump_to_outerPK5ArrayItEiPK12ConstantPooli.exit43.us.i: ; pre 105: ; preds = %99 %106 = getelementptr inbounds i16, ptr %88, i64 %69 %107 = load i16, ptr %106, align 2 - %108 = or disjoint i64 %indvars.iv58, 3 + %108 = or disjoint i64 %indvars.iv56, 3 %109 = getelementptr inbounds i16, ptr %88, i64 %108 %110 = load i16, ptr %109, align 2 %.not29 = icmp eq i16 %107, %110 @@ -10269,11 +10269,11 @@ _ZNK15ClassFileParser18guarantee_propertyEbPKcP10JavaThread.exit._crit_edge: ; p br label %113 113: ; preds = %_ZNK15ClassFileParser18guarantee_propertyEbPKcP10JavaThread.exit._crit_edge, %.lr.ph.split - %.pre6465 = phi ptr [ %.pre, %_ZNK15ClassFileParser18guarantee_propertyEbPKcP10JavaThread.exit._crit_edge ], [ %.pre64, %.lr.ph.split ] - %114 = getelementptr inbounds i8, ptr %.pre6465, i64 4 - %115 = getelementptr inbounds i16, ptr %114, i64 %indvars.iv58 + %.pre6263 = phi ptr [ %.pre, %_ZNK15ClassFileParser18guarantee_propertyEbPKcP10JavaThread.exit._crit_edge ], [ %.pre62, %.lr.ph.split ] + %114 = getelementptr inbounds i8, ptr %.pre6263, i64 4 + %115 = getelementptr inbounds i16, ptr %114, i64 %indvars.iv56 %116 = load i16, ptr %115, align 2 - %117 = getelementptr inbounds i16, ptr %114, i64 %indvars.iv61 + %117 = getelementptr inbounds i16, ptr %114, i64 %indvars.iv59 %118 = load i16, ptr %117, align 2 %119 = icmp eq i16 %116, %118 br i1 %119, label %_ZL38inner_classes_check_loop_through_outerPK5ArrayItEiPK12ConstantPooli.exit, label %82 diff --git a/bench/openjdk/optimized/codeBuffer.ll b/bench/openjdk/optimized/codeBuffer.ll index eea64b763ee..aaa9c5bc00b 100644 --- a/bench/openjdk/optimized/codeBuffer.ll +++ b/bench/openjdk/optimized/codeBuffer.ll @@ -649,8 +649,8 @@ define hidden void @_ZN10CodeBuffer25verify_section_allocationEv(ptr nocapture n br label %.split.us .split.us: ; preds = %.split.us.preheader, %50 - %indvars.iv55 = phi i64 [ 0, %.split.us.preheader ], [ %indvars.iv.next56, %50 ] - %30 = getelementptr inbounds %class.CodeSection, ptr %29, i64 %indvars.iv55 + %indvars.iv54 = phi i64 [ 0, %.split.us.preheader ], [ %indvars.iv.next55, %50 ] + %30 = getelementptr inbounds %class.CodeSection, ptr %29, i64 %indvars.iv54 %31 = load ptr, ptr %30, align 8 %.not34.us = icmp eq ptr %31, null br i1 %.not34.us, label %50, label %32 @@ -662,48 +662,46 @@ define hidden void @_ZN10CodeBuffer25verify_section_allocationEv(ptr nocapture n br i1 %35, label %50, label %36 36: ; preds = %32 - %37 = icmp ult i64 %indvars.iv55, 2 + %37 = icmp ult i64 %indvars.iv54, 2 br i1 %37, label %.lr.ph.us, label %._crit_edge.us ._crit_edge.us: ; preds = %_ZNK11CodeSection8disjointEPS_.exit.thread.us, %36 %.not31.us = icmp ugt ptr %34, %9 - br i1 %.not31.us, label %.split42.us, label %38 + br i1 %.not31.us, label %.split41.us, label %38 38: ; preds = %._crit_edge.us %39 = getelementptr inbounds i8, ptr %30, i64 24 %40 = load ptr, ptr %39, align 8 %.not32.us = icmp ugt ptr %34, %40 - br i1 %.not32.us, label %.split44.us, label %50 + br i1 %.not32.us, label %.split43.us, label %50 41: ; preds = %.lr.ph.us, %_ZNK11CodeSection8disjointEPS_.exit.thread.us - %indvars.iv57 = phi i64 [ %indvars.iv55, %.lr.ph.us ], [ 1, %_ZNK11CodeSection8disjointEPS_.exit.thread.us ] - %indvars.iv.next58 = add nuw nsw i64 %indvars.iv57, 1 - %42 = getelementptr inbounds %class.CodeSection, ptr %29, i64 %indvars.iv.next58 - %43 = load ptr, ptr %42, align 8 - %.not35.us = icmp eq ptr %43, null - %44 = icmp eq i64 %indvars.iv.next58, %indvars.iv55 - %or.cond.us = or i1 %44, %.not35.us - br i1 %or.cond.us, label %_ZNK11CodeSection8disjointEPS_.exit.thread.us, label %45 + %indvars.iv56 = phi i64 [ %indvars.iv54, %.lr.ph.us ], [ 1, %_ZNK11CodeSection8disjointEPS_.exit.thread.us ] + %42 = getelementptr inbounds %class.CodeSection, ptr %29, i64 %indvars.iv56 + %43 = getelementptr inbounds i8, ptr %42, i64 88 + %44 = load ptr, ptr %43, align 8 + %.not35.us = icmp eq ptr %44, null + br i1 %.not35.us, label %_ZNK11CodeSection8disjointEPS_.exit.thread.us, label %45 45: ; preds = %41 %46 = load ptr, ptr %51, align 8 - %.not.i.us = icmp ugt ptr %46, %43 + %.not.i.us = icmp ugt ptr %46, %44 br i1 %.not.i.us, label %_ZNK11CodeSection8disjointEPS_.exit.us, label %_ZNK11CodeSection8disjointEPS_.exit.thread.us _ZNK11CodeSection8disjointEPS_.exit.us: ; preds = %45 - %47 = getelementptr inbounds i8, ptr %42, i64 24 + %47 = getelementptr inbounds i8, ptr %42, i64 112 %48 = load ptr, ptr %47, align 8 %.not36.us = icmp ult ptr %31, %48 - br i1 %.not36.us, label %.split46.us, label %_ZNK11CodeSection8disjointEPS_.exit.thread.us + br i1 %.not36.us, label %.split45.us, label %_ZNK11CodeSection8disjointEPS_.exit.thread.us _ZNK11CodeSection8disjointEPS_.exit.thread.us: ; preds = %_ZNK11CodeSection8disjointEPS_.exit.us, %45, %41 - %49 = icmp eq i64 %indvars.iv57, 0 + %49 = icmp eq i64 %indvars.iv56, 0 br i1 %49, label %41, label %._crit_edge.us, !llvm.loop !11 50: ; preds = %38, %32, %.split.us - %indvars.iv.next56 = add nuw nsw i64 %indvars.iv55, 1 - %exitcond61.not = icmp eq i64 %indvars.iv.next56, 3 - br i1 %exitcond61.not, label %.loopexit, label %.split.us, !llvm.loop !12 + %indvars.iv.next55 = add nuw nsw i64 %indvars.iv54, 1 + %exitcond60.not = icmp eq i64 %indvars.iv.next55, 3 + br i1 %exitcond60.not, label %.loopexit, label %.split.us, !llvm.loop !12 .lr.ph.us: ; preds = %36 %51 = getelementptr inbounds i8, ptr %30, i64 24 @@ -771,41 +769,39 @@ _ZNK11CodeSection9alignmentEv.exit: ; preds = %58, %61, %66 br label %79 79: ; preds = %.lr.ph, %_ZNK11CodeSection8disjointEPS_.exit.thread - %indvars.iv51 = phi i64 [ %indvars.iv, %.lr.ph ], [ 1, %_ZNK11CodeSection8disjointEPS_.exit.thread ] - %indvars.iv.next52 = add nuw nsw i64 %indvars.iv51, 1 - %80 = getelementptr inbounds %class.CodeSection, ptr %26, i64 %indvars.iv.next52 - %81 = load ptr, ptr %80, align 8 - %.not35 = icmp eq ptr %81, null - %82 = icmp eq i64 %indvars.iv.next52, %indvars.iv - %or.cond = or i1 %82, %.not35 - br i1 %or.cond, label %_ZNK11CodeSection8disjointEPS_.exit.thread, label %83 + %indvars.iv50 = phi i64 [ %indvars.iv, %.lr.ph ], [ 1, %_ZNK11CodeSection8disjointEPS_.exit.thread ] + %80 = getelementptr inbounds %class.CodeSection, ptr %26, i64 %indvars.iv50 + %81 = getelementptr inbounds i8, ptr %80, i64 88 + %82 = load ptr, ptr %81, align 8 + %.not35 = icmp eq ptr %82, null + br i1 %.not35, label %_ZNK11CodeSection8disjointEPS_.exit.thread, label %83 83: ; preds = %79 %84 = load ptr, ptr %78, align 8 - %.not.i = icmp ugt ptr %84, %81 + %.not.i = icmp ugt ptr %84, %82 br i1 %.not.i, label %_ZNK11CodeSection8disjointEPS_.exit, label %_ZNK11CodeSection8disjointEPS_.exit.thread _ZNK11CodeSection8disjointEPS_.exit: ; preds = %83 - %85 = getelementptr inbounds i8, ptr %80, i64 24 + %85 = getelementptr inbounds i8, ptr %80, i64 112 %86 = load ptr, ptr %85, align 8 %.not36 = icmp ult ptr %53, %86 - br i1 %.not36, label %.split46.us, label %_ZNK11CodeSection8disjointEPS_.exit.thread + br i1 %.not36, label %.split45.us, label %_ZNK11CodeSection8disjointEPS_.exit.thread -.split46.us: ; preds = %_ZNK11CodeSection8disjointEPS_.exit, %_ZNK11CodeSection8disjointEPS_.exit.us +.split45.us: ; preds = %_ZNK11CodeSection8disjointEPS_.exit, %_ZNK11CodeSection8disjointEPS_.exit.us %87 = load ptr, ptr @g_assert_poison, align 8 store i8 88, ptr %87, align 1 tail call void (ptr, i32, ptr, ptr, ...) @_Z15report_vm_errorPKciS0_S0_z(ptr noundef nonnull @.str, i32 noundef 1003, ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.9) #17 unreachable _ZNK11CodeSection8disjointEPS_.exit.thread: ; preds = %83, %_ZNK11CodeSection8disjointEPS_.exit, %79 - %88 = icmp eq i64 %indvars.iv51, 0 + %88 = icmp eq i64 %indvars.iv50, 0 br i1 %88, label %79, label %._crit_edge, !llvm.loop !11 ._crit_edge: ; preds = %_ZNK11CodeSection8disjointEPS_.exit.thread, %76 %.not31 = icmp ugt ptr %56, %9 - br i1 %.not31, label %.split42.us, label %90 + br i1 %.not31, label %.split41.us, label %90 -.split42.us: ; preds = %._crit_edge, %._crit_edge.us +.split41.us: ; preds = %._crit_edge, %._crit_edge.us %89 = load ptr, ptr @g_assert_poison, align 8 store i8 88, ptr %89, align 1 tail call void (ptr, i32, ptr, ptr, ...) @_Z15report_vm_errorPKciS0_S0_z(ptr noundef nonnull @.str, i32 noundef 1005, ptr noundef nonnull @.str.14, ptr noundef nonnull @.str.9) #17 @@ -815,9 +811,9 @@ _ZNK11CodeSection8disjointEPS_.exit.thread: ; preds = %83, %_ZNK11CodeSect %91 = getelementptr inbounds i8, ptr %52, i64 24 %92 = load ptr, ptr %91, align 8 %.not32 = icmp ugt ptr %56, %92 - br i1 %.not32, label %.split44.us, label %94 + br i1 %.not32, label %.split43.us, label %94 -.split44.us: ; preds = %90, %38 +.split43.us: ; preds = %90, %38 %93 = load ptr, ptr @g_assert_poison, align 8 store i8 88, ptr %93, align 1 tail call void (ptr, i32, ptr, ptr, ...) @_Z15report_vm_errorPKciS0_S0_z(ptr noundef nonnull @.str, i32 noundef 1006, ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.9) #17 diff --git a/bench/openjdk/optimized/g1Allocator.ll b/bench/openjdk/optimized/g1Allocator.ll index 15668f43740..11638c48941 100644 --- a/bench/openjdk/optimized/g1Allocator.ll +++ b/bench/openjdk/optimized/g1Allocator.ll @@ -1264,7 +1264,7 @@ define hidden void @_ZN15G1PLABAllocatorC2EP11G1Allocator(ptr nocapture noundef %.ptr10 = getelementptr inbounds i8, ptr %0, i64 16 %8 = load i8, ptr @ResizePLAB, align 1 %9 = trunc i8 %8 to i1 - br i1 %9, label %10, label %20 + br i1 %9, label %10, label %.split 10: ; preds = %7 %11 = load double, ptr @G1LastPLABAverageOccupancy, align 8 @@ -1276,85 +1276,77 @@ define hidden void @_ZN15G1PLABAllocatorC2EP11G1Allocator(ptr nocapture noundef %17 = select i1 %16, double %15, double 1.000000e+00 %18 = fmul double %17, 1.500000e+00 %19 = fptoui double %18 to i64 - br label %20 + br label %.split -20: ; preds = %7, %10 +.split: ; preds = %7, %10 %.sink = phi i64 [ %19, %10 ], [ -1, %7 ] - %21 = getelementptr inbounds i8, ptr %0, i64 128 - store i64 %.sink, ptr %21, align 8 + %20 = getelementptr inbounds i8, ptr %0, i64 128 + store i64 %.sink, ptr %20, align 8 %.mask = and i8 %8, 1 - %22 = zext nneg i8 %.mask to i64 - %23 = add i64 %.sink, %22 - br label %24 - -24: ; preds = %20, %_ZN15G1PLABAllocator8PLABData10initializeEjmm.exit - %indvars.iv = phi i64 [ 0, %20 ], [ %indvars.iv.next, %_ZN15G1PLABAllocator8PLABData10initializeEjmm.exit ] - %25 = getelementptr inbounds [2 x %"struct.G1PLABAllocator::PLABData"], ptr %.ptr10, i64 0, i64 %indvars.iv - switch i64 %indvars.iv, label %30 [ - i64 0, label %_ZNK15G1PLABAllocator20alloc_buffers_lengthEa.exit.thread - i64 1, label %_ZN15G1CollectedHeap15desired_plab_szE16G1HeapRegionAttr.exit - ] + %21 = zext nneg i8 %.mask to i64 + %22 = add i64 %.sink, %21 + br label %23 -_ZNK15G1PLABAllocator20alloc_buffers_lengthEa.exit.thread: ; preds = %24 +23: ; preds = %.split, %_ZN15G1PLABAllocator8PLABData10initializeEjmm.exit + %indvars.iv = phi i64 [ 0, %.split ], [ %indvars.iv.next, %_ZN15G1PLABAllocator8PLABData10initializeEjmm.exit ] + %24 = getelementptr inbounds [2 x %"struct.G1PLABAllocator::PLABData"], ptr %.ptr10, i64 0, i64 %indvars.iv + %25 = icmp eq i64 %indvars.iv, 0 + br i1 %25, label %_ZNK15G1PLABAllocator20alloc_buffers_lengthEa.exit.thread, label %_ZN15G1CollectedHeap15desired_plab_szE16G1HeapRegionAttr.exit + +_ZNK15G1PLABAllocator20alloc_buffers_lengthEa.exit.thread: ; preds = %23 %26 = load ptr, ptr %4, align 8 %27 = getelementptr inbounds i8, ptr %26, i64 24 %28 = load i64, ptr %27, align 8 %29 = trunc i64 %28 to i32 br label %_ZN15G1CollectedHeap15desired_plab_szE16G1HeapRegionAttr.exit -30: ; preds = %24 - %31 = load ptr, ptr @g_assert_poison, align 8 - store i8 88, ptr %31, align 1 - tail call void @_Z28report_should_not_reach_herePKci(ptr noundef nonnull @.str.13, i32 noundef 89) #16 - unreachable - -_ZN15G1CollectedHeap15desired_plab_szE16G1HeapRegionAttr.exit: ; preds = %24, %_ZNK15G1PLABAllocator20alloc_buffers_lengthEa.exit.thread - %.0.i16 = phi i32 [ %29, %_ZNK15G1PLABAllocator20alloc_buffers_lengthEa.exit.thread ], [ 1, %24 ] - %.sink.i.i = phi i64 [ 664, %_ZNK15G1PLABAllocator20alloc_buffers_lengthEa.exit.thread ], [ 808, %24 ] - %32 = load ptr, ptr %0, align 8 - %33 = getelementptr inbounds i8, ptr %32, i64 %.sink.i.i - %34 = getelementptr inbounds i8, ptr %32, i64 128 - %35 = load ptr, ptr %34, align 8 - %36 = getelementptr inbounds i8, ptr %35, i64 32 - %37 = load i32, ptr %36, align 8 - %38 = tail call noundef i64 @_ZNK11G1EvacStats17desired_plab_sizeEj(ptr noundef nonnull align 8 dereferenceable(144) %33, i32 noundef %37) #15 - %39 = tail call noundef i64 @_ZN4PLAB8min_sizeEv() #15 - %40 = load i64, ptr @_ZN15G1CollectedHeap36_humongous_object_threshold_in_wordsE, align 8 - %41 = tail call noundef i64 @llvm.umax.i64(i64 %38, i64 %39) - %42 = tail call noundef i64 @llvm.umin.i64(i64 %41, i64 %40) - %43 = getelementptr inbounds i8, ptr %25, i64 48 - store i32 %.0.i16, ptr %43, align 8 - %44 = zext i32 %.0.i16 to i64 - %45 = shl nuw nsw i64 %44, 3 - %46 = tail call noundef ptr @_Z12AllocateHeapm8MEMFLAGSN17AllocFailStrategy13AllocFailEnumE(i64 noundef %45, i8 noundef zeroext 5, i32 noundef 0) #15 - store ptr %46, ptr %25, align 8 - %47 = load i32, ptr %43, align 8 - %.not.i = icmp eq i32 %47, 0 +_ZN15G1CollectedHeap15desired_plab_szE16G1HeapRegionAttr.exit: ; preds = %23, %_ZNK15G1PLABAllocator20alloc_buffers_lengthEa.exit.thread + %.0.i16 = phi i32 [ %29, %_ZNK15G1PLABAllocator20alloc_buffers_lengthEa.exit.thread ], [ 1, %23 ] + %.sink.i.i = phi i64 [ 664, %_ZNK15G1PLABAllocator20alloc_buffers_lengthEa.exit.thread ], [ 808, %23 ] + %30 = load ptr, ptr %0, align 8 + %31 = getelementptr inbounds i8, ptr %30, i64 %.sink.i.i + %32 = getelementptr inbounds i8, ptr %30, i64 128 + %33 = load ptr, ptr %32, align 8 + %34 = getelementptr inbounds i8, ptr %33, i64 32 + %35 = load i32, ptr %34, align 8 + %36 = tail call noundef i64 @_ZNK11G1EvacStats17desired_plab_sizeEj(ptr noundef nonnull align 8 dereferenceable(144) %31, i32 noundef %35) #15 + %37 = tail call noundef i64 @_ZN4PLAB8min_sizeEv() #15 + %38 = load i64, ptr @_ZN15G1CollectedHeap36_humongous_object_threshold_in_wordsE, align 8 + %39 = tail call noundef i64 @llvm.umax.i64(i64 %36, i64 %37) + %40 = tail call noundef i64 @llvm.umin.i64(i64 %39, i64 %38) + %41 = getelementptr inbounds i8, ptr %24, i64 48 + store i32 %.0.i16, ptr %41, align 8 + %42 = zext i32 %.0.i16 to i64 + %43 = shl nuw nsw i64 %42, 3 + %44 = tail call noundef ptr @_Z12AllocateHeapm8MEMFLAGSN17AllocFailStrategy13AllocFailEnumE(i64 noundef %43, i8 noundef zeroext 5, i32 noundef 0) #15 + store ptr %44, ptr %24, align 8 + %45 = load i32, ptr %41, align 8 + %.not.i = icmp eq i32 %45, 0 br i1 %.not.i, label %_ZN15G1PLABAllocator8PLABData10initializeEjmm.exit, label %.lr.ph.i .lr.ph.i: ; preds = %_ZN15G1CollectedHeap15desired_plab_szE16G1HeapRegionAttr.exit, %.lr.ph.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %.lr.ph.i ], [ 0, %_ZN15G1CollectedHeap15desired_plab_szE16G1HeapRegionAttr.exit ] - %48 = tail call noundef ptr @_Z12AllocateHeapm8MEMFLAGSN17AllocFailStrategy13AllocFailEnumE(i64 noundef 128, i8 noundef zeroext 5, i32 noundef 0) #15 - tail call void @_ZN4PLABC1Em(ptr noundef nonnull align 8 dereferenceable(128) %48, i64 noundef %42) #15 - %49 = load ptr, ptr %25, align 8 - %50 = getelementptr inbounds ptr, ptr %49, i64 %indvars.iv.i - store ptr %48, ptr %50, align 8 + %46 = tail call noundef ptr @_Z12AllocateHeapm8MEMFLAGSN17AllocFailStrategy13AllocFailEnumE(i64 noundef 128, i8 noundef zeroext 5, i32 noundef 0) #15 + tail call void @_ZN4PLABC1Em(ptr noundef nonnull align 8 dereferenceable(128) %46, i64 noundef %40) #15 + %47 = load ptr, ptr %24, align 8 + %48 = getelementptr inbounds ptr, ptr %47, i64 %indvars.iv.i + store ptr %46, ptr %48, align 8 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 - %51 = load i32, ptr %43, align 8 - %52 = zext i32 %51 to i64 - %53 = icmp ult i64 %indvars.iv.next.i, %52 - br i1 %53, label %.lr.ph.i, label %_ZN15G1PLABAllocator8PLABData10initializeEjmm.exit, !llvm.loop !16 + %49 = load i32, ptr %41, align 8 + %50 = zext i32 %49 to i64 + %51 = icmp ult i64 %indvars.iv.next.i, %50 + br i1 %51, label %.lr.ph.i, label %_ZN15G1PLABAllocator8PLABData10initializeEjmm.exit, !llvm.loop !16 _ZN15G1PLABAllocator8PLABData10initializeEjmm.exit: ; preds = %.lr.ph.i, %_ZN15G1CollectedHeap15desired_plab_szE16G1HeapRegionAttr.exit - %54 = getelementptr inbounds i8, ptr %25, i64 32 - store i64 %23, ptr %54, align 8 - %55 = getelementptr inbounds i8, ptr %25, i64 40 - store i64 %42, ptr %55, align 8 + %52 = getelementptr inbounds i8, ptr %24, i64 32 + store i64 %22, ptr %52, align 8 + %53 = getelementptr inbounds i8, ptr %24, i64 40 + store i64 %40, ptr %53, align 8 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 2 - br i1 %exitcond.not, label %56, label %24, !llvm.loop !17 + br i1 %exitcond.not, label %54, label %23, !llvm.loop !17 -56: ; preds = %_ZN15G1PLABAllocator8PLABData10initializeEjmm.exit +54: ; preds = %_ZN15G1PLABAllocator8PLABData10initializeEjmm.exit ret void } diff --git a/bench/openjdk/optimized/methodData.ll b/bench/openjdk/optimized/methodData.ll index 5fe3abe4298..224e602c6c6 100644 --- a/bench/openjdk/optimized/methodData.ll +++ b/bench/openjdk/optimized/methodData.ll @@ -6556,11 +6556,11 @@ _ZN10MethodData10next_extraEP10DataLayout.exit: ; preds = %24, %24, %26 32: ; preds = %15 %33 = icmp eq i32 %.01839, 0 - %.pr.pre52 = load i8, ptr %.040, align 8 + %.pr.pre51 = load i8, ptr %.040, align 8 br i1 %33, label %_ZN10MethodData23clean_extra_data_helperEP10DataLayoutib.exit, label %34 34: ; preds = %32 - switch i8 %.pr.pre52, label %36 [ + switch i8 %.pr.pre51, label %36 [ i8 1, label %.lr.ph.i i8 0, label %.lr.ph.i i8 13, label %35 @@ -6639,9 +6639,9 @@ _ZN10MethodData23clean_extra_data_helperEP10DataLayoutib.exit.loopexit: ; preds %.pr.pre = load i8, ptr %.040, align 8 br label %_ZN10MethodData23clean_extra_data_helperEP10DataLayoutib.exit -_ZN10MethodData23clean_extra_data_helperEP10DataLayoutib.exit: ; preds = %.lr.ph.i19, %_ZN10MethodData23clean_extra_data_helperEP10DataLayoutib.exit.loopexit, %32, %_ZN10MethodData10next_extraEP10DataLayout.exit - %.pr = phi i8 [ %.pr.pre52, %32 ], [ %25, %_ZN10MethodData10next_extraEP10DataLayout.exit ], [ %.pr.pre, %_ZN10MethodData23clean_extra_data_helperEP10DataLayoutib.exit.loopexit ], [ %54, %.lr.ph.i19 ] - %.1.ph = phi i32 [ 0, %32 ], [ %31, %_ZN10MethodData10next_extraEP10DataLayout.exit ], [ %.01839, %_ZN10MethodData23clean_extra_data_helperEP10DataLayoutib.exit.loopexit ], [ %.01839, %.lr.ph.i19 ] +_ZN10MethodData23clean_extra_data_helperEP10DataLayoutib.exit: ; preds = %_ZN10MethodData23clean_extra_data_helperEP10DataLayoutib.exit.loopexit, %.lr.ph.i19, %32, %_ZN10MethodData10next_extraEP10DataLayout.exit + %.pr = phi i8 [ %.pr.pre51, %32 ], [ %25, %_ZN10MethodData10next_extraEP10DataLayout.exit ], [ %54, %.lr.ph.i19 ], [ %.pr.pre, %_ZN10MethodData23clean_extra_data_helperEP10DataLayoutib.exit.loopexit ] + %.1.ph = phi i32 [ 0, %32 ], [ %31, %_ZN10MethodData10next_extraEP10DataLayout.exit ], [ %.01839, %.lr.ph.i19 ], [ %.01839, %_ZN10MethodData23clean_extra_data_helperEP10DataLayoutib.exit.loopexit ] switch i8 %.pr, label %74 [ i8 1, label %_ZN10MethodData10next_extraEP10DataLayout.exit25 i8 0, label %_ZN10MethodData10next_extraEP10DataLayout.exit25 diff --git a/bench/openmpi/optimized/coll_basic_alltoallv.ll b/bench/openmpi/optimized/coll_basic_alltoallv.ll index 0182b781b83..3b27f512e19 100644 --- a/bench/openmpi/optimized/coll_basic_alltoallv.ll +++ b/bench/openmpi/optimized/coll_basic_alltoallv.ll @@ -135,12 +135,12 @@ ompi_request_cancel.exit.i: ; preds = %58, %55 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %.lr.ph100.preheader, label %.lr.ph, !llvm.loop !6 -.lr.ph100: ; preds = %.lr.ph100.preheader, %104 - %indvars.iv107 = phi i64 [ 0, %.lr.ph100.preheader ], [ %indvars.iv.next108, %104 ] +.lr.ph100: ; preds = %.lr.ph100.preheader, %101 + %indvars.iv107 = phi i64 [ 0, %.lr.ph100.preheader ], [ %indvars.iv.next108, %101 ] %68 = getelementptr inbounds i32, ptr %1, i64 %indvars.iv107 %69 = load i32, ptr %68, align 4 %70 = icmp sgt i32 %69, 0 - br i1 %70, label %71, label %104 + br i1 %70, label %71, label %101 71: ; preds = %.lr.ph100 %72 = getelementptr inbounds i32, ptr %2, i64 %indvars.iv107 @@ -155,67 +155,62 @@ ompi_request_cancel.exit.i: ; preds = %58, %55 %81 = trunc nuw nsw i64 %indvars.iv107 to i32 %82 = tail call i32 %77(ptr noundef %76, i64 noundef %78, ptr noundef %3, i32 noundef %81, i32 noundef -14, i32 noundef 4, ptr noundef %8, ptr noundef nonnull %80) #2 %.not62 = icmp eq i32 %82, 0 - br i1 %.not62, label %104, label %83 + br i1 %.not62, label %101, label %.lr.ph.preheader.i -83: ; preds = %71 - %84 = and i64 %79, 2147483648 - %85 = icmp eq i64 %84, 0 - br i1 %85, label %.lr.ph.preheader.i, label %ompi_coll_base_free_reqs.exit - -.lr.ph.preheader.i: ; preds = %83 - %86 = add nuw nsw i64 %79, 1 - %wide.trip.count.i68 = and i64 %86, 4294967295 +.lr.ph.preheader.i: ; preds = %71 + %83 = add nuw i64 %79, 1 + %wide.trip.count.i68 = and i64 %83, 4294967295 br label %.lr.ph.i69 -.lr.ph.i69: ; preds = %103, %.lr.ph.preheader.i - %indvars.iv.i70 = phi i64 [ 0, %.lr.ph.preheader.i ], [ %indvars.iv.next.i74, %103 ] - %87 = getelementptr inbounds ptr, ptr %30, i64 %indvars.iv.i70 - %88 = load ptr, ptr %87, align 8 - %.not.i71 = icmp eq ptr %88, @ompi_request_null - br i1 %.not.i71, label %103, label %89 - -89: ; preds = %.lr.ph.i69 - %90 = getelementptr inbounds i8, ptr %88, i64 72 - %91 = load i32, ptr %90, align 8 - %.off.i72 = add i32 %91, -75 +.lr.ph.i69: ; preds = %100, %.lr.ph.preheader.i + %indvars.iv.i70 = phi i64 [ 0, %.lr.ph.preheader.i ], [ %indvars.iv.next.i74, %100 ] + %84 = getelementptr inbounds ptr, ptr %30, i64 %indvars.iv.i70 + %85 = load ptr, ptr %84, align 8 + %.not.i71 = icmp eq ptr %85, @ompi_request_null + br i1 %.not.i71, label %100, label %86 + +86: ; preds = %.lr.ph.i69 + %87 = getelementptr inbounds i8, ptr %85, i64 72 + %88 = load i32, ptr %87, align 8 + %.off.i72 = add i32 %88, -75 %switch.i73 = icmp ult i32 %.off.i72, 3 - br i1 %switch.i73, label %92, label %99 + br i1 %switch.i73, label %89, label %96 -92: ; preds = %89 - %93 = getelementptr inbounds i8, ptr %88, i64 128 - %94 = load ptr, ptr %93, align 8 - %.not.i.i76 = icmp eq ptr %94, null - br i1 %.not.i.i76, label %ompi_request_cancel.exit.i77, label %95 +89: ; preds = %86 + %90 = getelementptr inbounds i8, ptr %85, i64 128 + %91 = load ptr, ptr %90, align 8 + %.not.i.i76 = icmp eq ptr %91, null + br i1 %.not.i.i76, label %ompi_request_cancel.exit.i77, label %92 -95: ; preds = %92 - %96 = tail call i32 %94(ptr noundef nonnull %88, i32 noundef 1) #2 +92: ; preds = %89 + %93 = tail call i32 %91(ptr noundef nonnull %85, i32 noundef 1) #2 br label %ompi_request_cancel.exit.i77 -ompi_request_cancel.exit.i77: ; preds = %95, %92 - %97 = load ptr, ptr getelementptr inbounds (i8, ptr @ompi_request_functions, i64 32), align 8 - %98 = tail call i32 %97(ptr noundef nonnull %87, ptr noundef null) #2 - br label %103 +ompi_request_cancel.exit.i77: ; preds = %92, %89 + %94 = load ptr, ptr getelementptr inbounds (i8, ptr @ompi_request_functions, i64 32), align 8 + %95 = tail call i32 %94(ptr noundef nonnull %84, ptr noundef null) #2 + br label %100 -99: ; preds = %89 - %100 = getelementptr inbounds i8, ptr %88, i64 120 - %101 = load ptr, ptr %100, align 8 - %102 = tail call i32 %101(ptr noundef nonnull %87) #2 - br label %103 +96: ; preds = %86 + %97 = getelementptr inbounds i8, ptr %85, i64 120 + %98 = load ptr, ptr %97, align 8 + %99 = tail call i32 %98(ptr noundef nonnull %84) #2 + br label %100 -103: ; preds = %99, %ompi_request_cancel.exit.i77, %.lr.ph.i69 +100: ; preds = %96, %ompi_request_cancel.exit.i77, %.lr.ph.i69 %indvars.iv.next.i74 = add nuw nsw i64 %indvars.iv.i70, 1 %exitcond.not.i75 = icmp eq i64 %indvars.iv.next.i74, %wide.trip.count.i68 br i1 %exitcond.not.i75, label %ompi_coll_base_free_reqs.exit, label %.lr.ph.i69, !llvm.loop !4 -104: ; preds = %.lr.ph100, %71 +101: ; preds = %.lr.ph100, %71 %indvars.iv.next108 = add nuw nsw i64 %indvars.iv107, 1 %exitcond111.not = icmp eq i64 %indvars.iv.next108, %33 br i1 %exitcond111.not, label %._crit_edge, label %.lr.ph100, !llvm.loop !7 -._crit_edge: ; preds = %104, %.preheader94 - %105 = load ptr, ptr getelementptr inbounds (i8, ptr @ompi_request_functions, i64 48), align 8 - %106 = tail call i32 %105(i64 noundef %27, ptr noundef nonnull %30, ptr noundef null) #2 - %.not = icmp eq i32 %106, 0 +._crit_edge: ; preds = %101, %.preheader94 + %102 = load ptr, ptr getelementptr inbounds (i8, ptr @ompi_request_functions, i64 48), align 8 + %103 = tail call i32 %102(i64 noundef %27, ptr noundef nonnull %30, ptr noundef null) #2 + %.not = icmp eq i32 %103, 0 %brmerge = or i1 %.not, %32 br i1 %brmerge, label %ompi_coll_base_free_reqs.exit, label %.lr.ph.preheader.i79 @@ -223,48 +218,48 @@ ompi_request_cancel.exit.i77: ; preds = %95, %92 %wide.trip.count.i80 = zext nneg i32 %26 to i64 br label %.lr.ph.i81 -.lr.ph.i81: ; preds = %123, %.lr.ph.preheader.i79 - %indvars.iv.i82 = phi i64 [ 0, %.lr.ph.preheader.i79 ], [ %indvars.iv.next.i86, %123 ] - %107 = getelementptr inbounds ptr, ptr %30, i64 %indvars.iv.i82 - %108 = load ptr, ptr %107, align 8 - %.not.i83 = icmp eq ptr %108, @ompi_request_null - br i1 %.not.i83, label %123, label %109 - -109: ; preds = %.lr.ph.i81 - %110 = getelementptr inbounds i8, ptr %108, i64 72 - %111 = load i32, ptr %110, align 8 - %.off.i84 = add i32 %111, -75 +.lr.ph.i81: ; preds = %120, %.lr.ph.preheader.i79 + %indvars.iv.i82 = phi i64 [ 0, %.lr.ph.preheader.i79 ], [ %indvars.iv.next.i86, %120 ] + %104 = getelementptr inbounds ptr, ptr %30, i64 %indvars.iv.i82 + %105 = load ptr, ptr %104, align 8 + %.not.i83 = icmp eq ptr %105, @ompi_request_null + br i1 %.not.i83, label %120, label %106 + +106: ; preds = %.lr.ph.i81 + %107 = getelementptr inbounds i8, ptr %105, i64 72 + %108 = load i32, ptr %107, align 8 + %.off.i84 = add i32 %108, -75 %switch.i85 = icmp ult i32 %.off.i84, 3 - br i1 %switch.i85, label %112, label %119 + br i1 %switch.i85, label %109, label %116 -112: ; preds = %109 - %113 = getelementptr inbounds i8, ptr %108, i64 128 - %114 = load ptr, ptr %113, align 8 - %.not.i.i88 = icmp eq ptr %114, null - br i1 %.not.i.i88, label %ompi_request_cancel.exit.i89, label %115 +109: ; preds = %106 + %110 = getelementptr inbounds i8, ptr %105, i64 128 + %111 = load ptr, ptr %110, align 8 + %.not.i.i88 = icmp eq ptr %111, null + br i1 %.not.i.i88, label %ompi_request_cancel.exit.i89, label %112 -115: ; preds = %112 - %116 = tail call i32 %114(ptr noundef nonnull %108, i32 noundef 1) #2 +112: ; preds = %109 + %113 = tail call i32 %111(ptr noundef nonnull %105, i32 noundef 1) #2 br label %ompi_request_cancel.exit.i89 -ompi_request_cancel.exit.i89: ; preds = %115, %112 - %117 = load ptr, ptr getelementptr inbounds (i8, ptr @ompi_request_functions, i64 32), align 8 - %118 = tail call i32 %117(ptr noundef nonnull %107, ptr noundef null) #2 - br label %123 +ompi_request_cancel.exit.i89: ; preds = %112, %109 + %114 = load ptr, ptr getelementptr inbounds (i8, ptr @ompi_request_functions, i64 32), align 8 + %115 = tail call i32 %114(ptr noundef nonnull %104, ptr noundef null) #2 + br label %120 -119: ; preds = %109 - %120 = getelementptr inbounds i8, ptr %108, i64 120 - %121 = load ptr, ptr %120, align 8 - %122 = tail call i32 %121(ptr noundef nonnull %107) #2 - br label %123 +116: ; preds = %106 + %117 = getelementptr inbounds i8, ptr %105, i64 120 + %118 = load ptr, ptr %117, align 8 + %119 = tail call i32 %118(ptr noundef nonnull %104) #2 + br label %120 -123: ; preds = %119, %ompi_request_cancel.exit.i89, %.lr.ph.i81 +120: ; preds = %116, %ompi_request_cancel.exit.i89, %.lr.ph.i81 %indvars.iv.next.i86 = add nuw nsw i64 %indvars.iv.i82, 1 %exitcond.not.i87 = icmp eq i64 %indvars.iv.next.i86, %wide.trip.count.i80 br i1 %exitcond.not.i87, label %ompi_coll_base_free_reqs.exit, label %.lr.ph.i81, !llvm.loop !4 -ompi_coll_base_free_reqs.exit: ; preds = %66, %103, %123, %._crit_edge, %83, %ompi_comm_remote_size.exit - %.0 = phi i32 [ -2, %ompi_comm_remote_size.exit ], [ %106, %._crit_edge ], [ %82, %83 ], [ %106, %123 ], [ %82, %103 ], [ %47, %66 ] +ompi_coll_base_free_reqs.exit: ; preds = %66, %100, %120, %._crit_edge, %ompi_comm_remote_size.exit + %.0 = phi i32 [ -2, %ompi_comm_remote_size.exit ], [ %103, %._crit_edge ], [ %103, %120 ], [ %82, %100 ], [ %47, %66 ] ret i32 %.0 } diff --git a/bench/openspiel/optimized/leduc_poker.cc.ll b/bench/openspiel/optimized/leduc_poker.cc.ll index e55014999b9..a165829372a 100644 --- a/bench/openspiel/optimized/leduc_poker.cc.ll +++ b/bench/openspiel/optimized/leduc_poker.cc.ll @@ -3121,94 +3121,95 @@ define void @_ZN10open_spiel11leduc_poker10LeducState10SetPrivateEil(ptr nocaptu ; Function Attrs: mustprogress uwtable define noundef range(i32 0, 2147483647) i32 @_ZNK10open_spiel11leduc_poker10LeducState10NextPlayerEv(ptr nocapture noundef nonnull readonly align 8 dereferenceable(330) %0) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 { - %2 = alloca %"class.std::__cxx11::basic_string", align 8 - %3 = alloca i32, align 4 - %4 = alloca %"class.std::__cxx11::basic_string", align 8 - %5 = alloca %"class.std::allocator", align 1 - %6 = getelementptr inbounds nuw i8, ptr %0, i64 60 - %7 = load i32, ptr %6, align 4 - %8 = getelementptr inbounds nuw i8, ptr %0, i64 28 - %9 = load i32, ptr %8, align 4 - %10 = icmp sgt i32 %9, 1 - br i1 %10, label %.lr.ph.split.preheader, label %._crit_edge +.split: + %1 = alloca %"class.std::__cxx11::basic_string", align 8 + %2 = alloca i32, align 4 + %3 = alloca %"class.std::__cxx11::basic_string", align 8 + %4 = alloca %"class.std::allocator", align 1 + %5 = getelementptr inbounds nuw i8, ptr %0, i64 60 + %6 = load i32, ptr %5, align 4 + %7 = getelementptr inbounds nuw i8, ptr %0, i64 28 + %8 = load i32, ptr %7, align 4 + %9 = icmp sgt i32 %8, 1 + br i1 %9, label %.lr.ph, label %._crit_edge -.lr.ph.split.preheader: ; preds = %1 - %11 = getelementptr inbounds nuw i8, ptr %0, i64 240 - %12 = load ptr, ptr %11, align 8 - br label %.lr.ph.split +.lr.ph: ; preds = %.split + %10 = getelementptr inbounds nuw i8, ptr %0, i64 240 + %11 = load ptr, ptr %10, align 8 + br label %14 -13: ; preds = %21 - %14 = add nuw nsw i32 %.01321, 1 - %exitcond.not = icmp eq i32 %14, %9 - br i1 %exitcond.not, label %._crit_edge, label %.lr.ph.split, !llvm.loop !8 +12: ; preds = %22 + %13 = add nuw nsw i32 %.01321, 1 + %exitcond.not = icmp eq i32 %13, %8 + br i1 %exitcond.not, label %._crit_edge, label %14, !llvm.loop !8 -.lr.ph.split: ; preds = %.lr.ph.split.preheader, %13 - %.01321 = phi i32 [ %14, %13 ], [ 1, %.lr.ph.split.preheader ] - %15 = add nsw i32 %.01321, %7 - %16 = srem i32 %15, %9 +14: ; preds = %.lr.ph, %12 + %.01321 = phi i32 [ 1, %.lr.ph ], [ %13, %12 ] + %15 = add nsw i32 %.01321, %6 + %16 = srem i32 %15, %8 %17 = icmp slt i32 %16, 0 - br i1 %17, label %.split.us, label %21 + br i1 %17, label %18, label %22 -.split.us: ; preds = %.lr.ph.split - store i32 576, ptr %3, align 4 - call void @_ZN10open_spiel8internal11SpielStrCatIJRA142_KcRA2_S2_iRA13_S2_RA12_S2_S6_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %2, ptr noundef nonnull align 1 dereferenceable(142) @.str.8, ptr noundef nonnull align 1 dereferenceable(2) @.str.9, ptr noundef nonnull align 4 dereferenceable(4) %3, ptr noundef nonnull align 1 dereferenceable(13) @.str.17, ptr noundef nonnull align 1 dereferenceable(12) @.str.47, ptr noundef nonnull align 1 dereferenceable(2) @.str.19) - invoke void @_ZN10open_spiel15SpielFatalErrorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %2) #27 - to label %18 unwind label %19 +18: ; preds = %14 + store i32 576, ptr %2, align 4 + call void @_ZN10open_spiel8internal11SpielStrCatIJRA142_KcRA2_S2_iRA13_S2_RA12_S2_S6_EEENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEDpOT_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %1, ptr noundef nonnull align 1 dereferenceable(142) @.str.8, ptr noundef nonnull align 1 dereferenceable(2) @.str.9, ptr noundef nonnull align 4 dereferenceable(4) %2, ptr noundef nonnull align 1 dereferenceable(13) @.str.17, ptr noundef nonnull align 1 dereferenceable(12) @.str.47, ptr noundef nonnull align 1 dereferenceable(2) @.str.19) + invoke void @_ZN10open_spiel15SpielFatalErrorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %1) #27 + to label %19 unwind label %20 -18: ; preds = %.split.us +19: ; preds = %18 unreachable -19: ; preds = %.split.us - %20 = landingpad { ptr, i32 } +20: ; preds = %18 + %21 = landingpad { ptr, i32 } cleanup - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %2) #28 - br label %37 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %1) #28 + br label %38 -21: ; preds = %.lr.ph.split - %22 = lshr i32 %16, 6 - %.zext = zext nneg i32 %22 to i64 - %23 = getelementptr inbounds i64, ptr %12, i64 %.zext - %24 = and i32 %16, 63 - %25 = zext nneg i32 %24 to i64 - %26 = shl nuw i64 1, %25 - %27 = load i64, ptr %23, align 8 - %28 = and i64 %27, %26 - %.not = icmp eq i64 %28, 0 - br i1 %.not, label %29, label %13 - -29: ; preds = %21 +22: ; preds = %14 + %23 = lshr i32 %16, 6 + %.zext = zext nneg i32 %23 to i64 + %24 = getelementptr inbounds i64, ptr %11, i64 %.zext + %25 = and i32 %16, 63 + %26 = zext nneg i32 %25 to i64 + %27 = shl nuw i64 1, %26 + %28 = load i64, ptr %24, align 8 + %29 = and i64 %28, %27 + %.not = icmp eq i64 %29, 0 + br i1 %.not, label %30, label %12 + +30: ; preds = %22 ret i32 %16 -._crit_edge: ; preds = %13, %1 - call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #28 - invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull @.str.49, ptr noundef nonnull align 1 dereferenceable(1) %5) - to label %30 unwind label %32 +._crit_edge: ; preds = %12, %.split + call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #28 + invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull @.str.49, ptr noundef nonnull align 1 dereferenceable(1) %4) + to label %31 unwind label %33 -30: ; preds = %._crit_edge - invoke void @_ZN10open_spiel15SpielFatalErrorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %4) #27 - to label %31 unwind label %34 +31: ; preds = %._crit_edge + invoke void @_ZN10open_spiel15SpielFatalErrorERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %3) #27 + to label %32 unwind label %35 -31: ; preds = %30 +32: ; preds = %31 unreachable -32: ; preds = %._crit_edge - %33 = landingpad { ptr, i32 } +33: ; preds = %._crit_edge + %34 = landingpad { ptr, i32 } cleanup - br label %36 + br label %37 -34: ; preds = %30 - %35 = landingpad { ptr, i32 } +35: ; preds = %31 + %36 = landingpad { ptr, i32 } cleanup - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #28 - br label %36 - -36: ; preds = %34, %32 - %.pn = phi { ptr, i32 } [ %35, %34 ], [ %33, %32 ] - call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %5) #28 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #28 br label %37 -37: ; preds = %36, %19 - %.pn17 = phi { ptr, i32 } [ %20, %19 ], [ %.pn, %36 ] +37: ; preds = %35, %33 + %.pn = phi { ptr, i32 } [ %36, %35 ], [ %34, %33 ] + call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %4) #28 + br label %38 + +38: ; preds = %37, %20 + %.pn17 = phi { ptr, i32 } [ %21, %20 ], [ %.pn, %37 ] resume { ptr, i32 } %.pn17 } diff --git a/bench/openssl/optimized/libcrypto-lib-x509_att.ll b/bench/openssl/optimized/libcrypto-lib-x509_att.ll index 06140f5fb47..55dc9b11058 100644 --- a/bench/openssl/optimized/libcrypto-lib-x509_att.ll +++ b/bench/openssl/optimized/libcrypto-lib-x509_att.ll @@ -522,20 +522,19 @@ if.end5.thread: ; preds = %if.end br label %if.end12 if.end.i10: ; preds = %if.end - %2 = tail call i32 @llvm.smax.i32(i32 %lastpos.addr.0.i, i32 -1) %call4.i11 = tail call i32 @OPENSSL_sk_num(ptr noundef nonnull %x) #3 br label %for.cond.i12 for.cond.i12: ; preds = %for.body.i17, %if.end.i10 - %lastpos.addr.0.in.i13 = phi i32 [ %2, %if.end.i10 ], [ %lastpos.addr.0.i14, %for.body.i17 ] + %lastpos.addr.0.in.i13 = phi i32 [ %lastpos.addr.0.i, %if.end.i10 ], [ %lastpos.addr.0.i14, %for.body.i17 ] %lastpos.addr.0.i14 = add nuw nsw i32 %lastpos.addr.0.in.i13, 1 %cmp5.i15 = icmp slt i32 %lastpos.addr.0.i14, %call4.i11 br i1 %cmp5.i15, label %for.body.i17, label %if.end5 for.body.i17: ; preds = %for.cond.i12 %call7.i18 = tail call ptr @OPENSSL_sk_value(ptr noundef nonnull %x, i32 noundef %lastpos.addr.0.i14) #3 - %3 = load ptr, ptr %call7.i18, align 8 - %call8.i19 = tail call i32 @OBJ_cmp(ptr noundef %3, ptr noundef %obj) #3 + %2 = load ptr, ptr %call7.i18, align 8 + %call8.i19 = tail call i32 @OBJ_cmp(ptr noundef %2, ptr noundef %obj) #3 %cmp9.i20 = icmp eq i32 %call8.i19, 0 br i1 %cmp9.i20, label %return, label %for.cond.i12, !llvm.loop !4 @@ -550,8 +549,8 @@ land.lhs.true8: ; preds = %if.end5 X509_ATTRIBUTE_count.exit: ; preds = %land.lhs.true8 %set.i = getelementptr inbounds i8, ptr %call6, i64 8 - %4 = load ptr, ptr %set.i, align 8 - %call1.i = tail call i32 @OPENSSL_sk_num(ptr noundef %4) #3 + %3 = load ptr, ptr %set.i, align 8 + %call1.i = tail call i32 @OPENSSL_sk_num(ptr noundef %3) #3 %cmp10.not = icmp eq i32 %call1.i, 1 br i1 %cmp10.not, label %if.end12, label %return diff --git a/bench/openusd/optimized/resolver.cpp.ll b/bench/openusd/optimized/resolver.cpp.ll index afa63805a5b..1db9b875cc8 100644 --- a/bench/openusd/optimized/resolver.cpp.ll +++ b/bench/openusd/optimized/resolver.cpp.ll @@ -24593,7 +24593,8 @@ _ZSt4copyISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfType .preheader7.i.i: ; preds = %40 %.not9.i.i = icmp eq ptr %29, %10 - br i1 %.not9.i.i, label %_ZSt4copyISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEPS2_ET0_T_S6_S5_.exit30, label %.lr.ph.i.i22 + tail call void @llvm.assume(i1 %.not9.i.i) + br label %_ZSt4copyISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEPS2_ET0_T_S6_S5_.exit30 .preheader.i.i: ; preds = %40, %.preheader.i.i %.012.i.i = phi i64 [ %43, %.preheader.i.i ], [ %32, %40 ] @@ -24603,53 +24604,44 @@ _ZSt4copyISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfType %.not6.i.i = icmp eq i64 %43, 0 br i1 %.not6.i.i, label %_ZSt7advanceISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEmEvRT_T0_.exit, label %.preheader.i.i, !llvm.loop !342 -.lr.ph.i.i22: ; preds = %.preheader7.i.i, %.lr.ph.i.i22 - %.110.i.i = phi i64 [ %46, %.lr.ph.i.i22 ], [ %32, %.preheader7.i.i ] - %45 = phi ptr [ %47, %.lr.ph.i.i22 ], [ %1, %.preheader7.i.i ] - %46 = add nsw i64 %.110.i.i, 1 - %47 = tail call noundef ptr @_ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base(ptr noundef %45) #38 - %.not.i.i23 = icmp eq i64 %46, 0 - br i1 %.not.i.i23, label %_ZSt7advanceISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEmEvRT_T0_.exit, label %.lr.ph.i.i22, !llvm.loop !343 - -_ZSt7advanceISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEmEvRT_T0_.exit: ; preds = %.lr.ph.i.i22, %.preheader.i.i - %.sroa.0.0 = phi ptr [ %44, %.preheader.i.i ], [ %47, %.lr.ph.i.i22 ] - %.not6.i.i.i.i.i24 = icmp eq ptr %1, %.sroa.0.0 +_ZSt7advanceISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEmEvRT_T0_.exit: ; preds = %.preheader.i.i + %.not6.i.i.i.i.i24 = icmp eq ptr %1, %44 br i1 %.not6.i.i.i.i.i24, label %_ZSt4copyISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEPS2_ET0_T_S6_S5_.exit30, label %.lr.ph.i.i.i.i.i25 .lr.ph.i.i.i.i.i25: ; preds = %_ZSt7advanceISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEmEvRT_T0_.exit, %.lr.ph.i.i.i.i.i25 - %.08.i.i.i.i.i26 = phi ptr [ %50, %.lr.ph.i.i.i.i.i25 ], [ %10, %_ZSt7advanceISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEmEvRT_T0_.exit ] - %.sroa.03.07.i.i.i.i.i27 = phi ptr [ %51, %.lr.ph.i.i.i.i.i25 ], [ %1, %_ZSt7advanceISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEmEvRT_T0_.exit ] - %48 = getelementptr inbounds nuw i8, ptr %.sroa.03.07.i.i.i.i.i27, i64 32 - %49 = load i64, ptr %48, align 8 - store i64 %49, ptr %.08.i.i.i.i.i26, align 8 - %50 = getelementptr inbounds i8, ptr %.08.i.i.i.i.i26, i64 8 - %51 = tail call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef %.sroa.03.07.i.i.i.i.i27) #38 - %.not.i.i.i.i.i28 = icmp eq ptr %51, %.sroa.0.0 + %.08.i.i.i.i.i26 = phi ptr [ %47, %.lr.ph.i.i.i.i.i25 ], [ %10, %_ZSt7advanceISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEmEvRT_T0_.exit ] + %.sroa.03.07.i.i.i.i.i27 = phi ptr [ %48, %.lr.ph.i.i.i.i.i25 ], [ %1, %_ZSt7advanceISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEmEvRT_T0_.exit ] + %45 = getelementptr inbounds nuw i8, ptr %.sroa.03.07.i.i.i.i.i27, i64 32 + %46 = load i64, ptr %45, align 8 + store i64 %46, ptr %.08.i.i.i.i.i26, align 8 + %47 = getelementptr inbounds i8, ptr %.08.i.i.i.i.i26, i64 8 + %48 = tail call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef %.sroa.03.07.i.i.i.i.i27) #38 + %.not.i.i.i.i.i28 = icmp eq ptr %48, %44 br i1 %.not.i.i.i.i.i28, label %_ZSt4copyISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEPS2_ET0_T_S6_S5_.exit30.loopexit, label %.lr.ph.i.i.i.i.i25, !llvm.loop !341 _ZSt4copyISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEPS2_ET0_T_S6_S5_.exit30.loopexit: ; preds = %.lr.ph.i.i.i.i.i25 %.pre = load ptr, ptr %28, align 8 br label %_ZSt4copyISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEPS2_ET0_T_S6_S5_.exit30 -_ZSt4copyISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEPS2_ET0_T_S6_S5_.exit30: ; preds = %_ZSt4copyISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEPS2_ET0_T_S6_S5_.exit30.loopexit, %.preheader7.i.i, %_ZSt7advanceISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEmEvRT_T0_.exit - %52 = phi ptr [ %29, %_ZSt7advanceISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEmEvRT_T0_.exit ], [ %29, %.preheader7.i.i ], [ %.pre, %_ZSt4copyISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEPS2_ET0_T_S6_S5_.exit30.loopexit ] - %.sroa.0.038 = phi ptr [ %.sroa.0.0, %_ZSt7advanceISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEmEvRT_T0_.exit ], [ %1, %.preheader7.i.i ], [ %.sroa.0.0, %_ZSt4copyISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEPS2_ET0_T_S6_S5_.exit30.loopexit ] +_ZSt4copyISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEPS2_ET0_T_S6_S5_.exit30: ; preds = %.preheader7.i.i, %_ZSt4copyISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEPS2_ET0_T_S6_S5_.exit30.loopexit, %_ZSt7advanceISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEmEvRT_T0_.exit + %49 = phi ptr [ %29, %_ZSt7advanceISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEmEvRT_T0_.exit ], [ %29, %.preheader7.i.i ], [ %.pre, %_ZSt4copyISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEPS2_ET0_T_S6_S5_.exit30.loopexit ] + %.sroa.0.038 = phi ptr [ %44, %_ZSt7advanceISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEmEvRT_T0_.exit ], [ %1, %.preheader7.i.i ], [ %44, %_ZSt4copyISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEPS2_ET0_T_S6_S5_.exit30.loopexit ] %.not7.i.i.i.i = icmp eq ptr %.sroa.0.038, %2 br i1 %.not7.i.i.i.i, label %_ZSt22__uninitialized_copy_aISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEPS2_S2_ET0_T_S6_S5_RSaIT1_E.exit, label %.lr.ph.i.i.i.i .lr.ph.i.i.i.i: ; preds = %_ZSt4copyISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEPS2_ET0_T_S6_S5_.exit30, %.lr.ph.i.i.i.i - %.09.i.i.i.i = phi ptr [ %56, %.lr.ph.i.i.i.i ], [ %52, %_ZSt4copyISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEPS2_ET0_T_S6_S5_.exit30 ] - %.sroa.04.08.i.i.i.i = phi ptr [ %55, %.lr.ph.i.i.i.i ], [ %.sroa.0.038, %_ZSt4copyISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEPS2_ET0_T_S6_S5_.exit30 ] - %53 = getelementptr inbounds nuw i8, ptr %.sroa.04.08.i.i.i.i, i64 32 - %54 = load i64, ptr %53, align 8 - store i64 %54, ptr %.09.i.i.i.i, align 8 - %55 = tail call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef %.sroa.04.08.i.i.i.i) #38 - %56 = getelementptr inbounds i8, ptr %.09.i.i.i.i, i64 8 - %.not.i.i.i.i = icmp eq ptr %55, %2 + %.09.i.i.i.i = phi ptr [ %53, %.lr.ph.i.i.i.i ], [ %49, %_ZSt4copyISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEPS2_ET0_T_S6_S5_.exit30 ] + %.sroa.04.08.i.i.i.i = phi ptr [ %52, %.lr.ph.i.i.i.i ], [ %.sroa.0.038, %_ZSt4copyISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEPS2_ET0_T_S6_S5_.exit30 ] + %50 = getelementptr inbounds nuw i8, ptr %.sroa.04.08.i.i.i.i, i64 32 + %51 = load i64, ptr %50, align 8 + store i64 %51, ptr %.09.i.i.i.i, align 8 + %52 = tail call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef %.sroa.04.08.i.i.i.i) #38 + %53 = getelementptr inbounds i8, ptr %.09.i.i.i.i, i64 8 + %.not.i.i.i.i = icmp eq ptr %52, %2 br i1 %.not.i.i.i.i, label %_ZSt22__uninitialized_copy_aISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEPS2_S2_ET0_T_S6_S5_RSaIT1_E.exit, label %.lr.ph.i.i.i.i, !llvm.loop !340 _ZSt22__uninitialized_copy_aISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEPS2_S2_ET0_T_S6_S5_RSaIT1_E.exit: ; preds = %.lr.ph.i.i.i.i, %_ZSt4copyISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEPS2_ET0_T_S6_S5_.exit30 - %.0.lcssa.i.i.i.i = phi ptr [ %52, %_ZSt4copyISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEPS2_ET0_T_S6_S5_.exit30 ], [ %56, %.lr.ph.i.i.i.i ] + %.0.lcssa.i.i.i.i = phi ptr [ %49, %_ZSt4copyISt23_Rb_tree_const_iteratorIN32pxrInternal_v0_24__pxrReserved__6TfTypeEEPS2_ET0_T_S6_S5_.exit30 ], [ %53, %.lr.ph.i.i.i.i ] store ptr %.0.lcssa.i.i.i.i, ptr %28, align 8 br label %_ZNSt6vectorIN32pxrInternal_v0_24__pxrReserved__6TfTypeESaIS1_EE15_M_erase_at_endEPS1_.exit @@ -24657,9 +24649,6 @@ _ZNSt6vectorIN32pxrInternal_v0_24__pxrReserved__6TfTypeESaIS1_EE15_M_erase_at_en ret void } -; Function Attrs: mustprogress nofree nounwind willreturn memory(read) -declare noundef ptr @_ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base(ptr noundef) local_unnamed_addr #22 - ; Function Attrs: mustprogress uwtable define internal fastcc void @"_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPN32pxrInternal_v0_24__pxrReserved__6TfTypeESt6vectorIS3_SaIS3_EEEElNS0_5__ops15_Iter_comp_iterIZNS2_12_GLOBAL__N_122_GetAvailableResolversEvE3$_0EEEvT_SE_T0_T1_"(ptr %0, ptr %1, i64 noundef %2) unnamed_addr #0 personality ptr @__gxx_personality_v0 { %4 = ptrtoint ptr %0 to i64 @@ -24676,7 +24665,7 @@ define internal fastcc void @"_ZSt16__introsort_loopIN9__gnu_cxx17__normal_itera 11: ; preds = %"_ZSt27__unguarded_partition_pivotIN9__gnu_cxx17__normal_iteratorIPN32pxrInternal_v0_24__pxrReserved__6TfTypeESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZNS2_12_GLOBAL__N_122_GetAvailableResolversEvE3$_0EEET_SE_SE_T0_.exit" %12 = icmp eq i64 %25, 0 - br i1 %12, label %.split.i.i.i, label %.lr.ph146, !llvm.loop !344 + br i1 %12, label %.split.i.i.i, label %.lr.ph146, !llvm.loop !343 .split.i.i.i: ; preds = %11, %.lr.ph %.lcssa135 = phi i64 [ %7, %.lr.ph ], [ %104, %11 ] @@ -24693,7 +24682,7 @@ define internal fastcc void @"_ZSt16__introsort_loopIN9__gnu_cxx17__normal_itera tail call fastcc void @"_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPN32pxrInternal_v0_24__pxrReserved__6TfTypeESt6vectorIS3_SaIS3_EEEElS3_NS0_5__ops15_Iter_comp_iterIZNS2_12_GLOBAL__N_122_GetAvailableResolversEvE3$_0EEEvT_T0_SF_T1_T2_"(ptr %0, i64 noundef %.0.i.i.i, i64 noundef %.lcssa135, ptr %.sroa.03.0.copyload.i.i.i) %15 = icmp eq i64 %.0.i.i.i, 0 %16 = add nsw i64 %.0.i.i.i, -1 - br i1 %15, label %"_ZSt11__make_heapIN9__gnu_cxx17__normal_iteratorIPN32pxrInternal_v0_24__pxrReserved__6TfTypeESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZNS2_12_GLOBAL__N_122_GetAvailableResolversEvE3$_0EEEvT_SE_RT0_.exit.i.i", label %.split10.i.i.i, !llvm.loop !345 + br i1 %15, label %"_ZSt11__make_heapIN9__gnu_cxx17__normal_iteratorIPN32pxrInternal_v0_24__pxrReserved__6TfTypeESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZNS2_12_GLOBAL__N_122_GetAvailableResolversEvE3$_0EEEvT_SE_RT0_.exit.i.i", label %.split10.i.i.i, !llvm.loop !344 "_ZSt11__make_heapIN9__gnu_cxx17__normal_iteratorIPN32pxrInternal_v0_24__pxrReserved__6TfTypeESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZNS2_12_GLOBAL__N_122_GetAvailableResolversEvE3$_0EEEvT_SE_RT0_.exit.i.i": ; preds = %.split10.i.i.i %17 = icmp sgt i64 %.lcssa, 8 @@ -24710,7 +24699,7 @@ define internal fastcc void @"_ZSt16__introsort_loopIN9__gnu_cxx17__normal_itera %22 = ashr exact i64 %21, 3 tail call fastcc void @"_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPN32pxrInternal_v0_24__pxrReserved__6TfTypeESt6vectorIS3_SaIS3_EEEElS3_NS0_5__ops15_Iter_comp_iterIZNS2_12_GLOBAL__N_122_GetAvailableResolversEvE3$_0EEEvT_T0_SF_T1_T2_"(ptr nonnull %0, i64 noundef 0, i64 noundef %22, ptr %.sroa.03.0.copyload.i.i10.i) %23 = icmp sgt i64 %21, 8 - br i1 %23, label %.lr.ph.i9.i, label %"_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPN32pxrInternal_v0_24__pxrReserved__6TfTypeESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZNS2_12_GLOBAL__N_122_GetAvailableResolversEvE3$_0EEEvT_SE_SE_T0_.exit", !llvm.loop !346 + br i1 %23, label %.lr.ph.i9.i, label %"_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPN32pxrInternal_v0_24__pxrReserved__6TfTypeESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZNS2_12_GLOBAL__N_122_GetAvailableResolversEvE3$_0EEEvT_SE_SE_T0_.exit", !llvm.loop !345 .lr.ph146: ; preds = %.lr.ph, %11 %storemerge55145 = phi ptr [ %.sroa.011.1.i.i, %11 ], [ %1, %.lr.ph ] @@ -24872,7 +24861,7 @@ define internal fastcc void @"_ZSt16__introsort_loopIN9__gnu_cxx17__normal_itera 88: ; preds = %"_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN32pxrInternal_v0_24__pxrReserved__12_GLOBAL__N_122_GetAvailableResolversEvE3$_0EclINS_17__normal_iteratorIPNS2_6TfTypeESt6vectorIS8_SaIS8_EEEESD_EEbT_T0_.exit.i13.i" %89 = getelementptr inbounds i8, ptr %.sroa.011.1.i.i, i64 8 - br label %80, !llvm.loop !347 + br label %80, !llvm.loop !346 .preheader.i.i: ; preds = %"_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN32pxrInternal_v0_24__pxrReserved__12_GLOBAL__N_122_GetAvailableResolversEvE3$_0EclINS_17__normal_iteratorIPNS2_6TfTypeESt6vectorIS8_SaIS8_EEEESD_EEbT_T0_.exit.i13.i", %"_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN32pxrInternal_v0_24__pxrReserved__12_GLOBAL__N_122_GetAvailableResolversEvE3$_0EclINS_17__normal_iteratorIPNS2_6TfTypeESt6vectorIS8_SaIS8_EEEESD_EEbT_T0_.exit8.i.i" %.sroa.0.0.pn.i.i = phi ptr [ %.sroa.0.1.i.i, %"_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN32pxrInternal_v0_24__pxrReserved__12_GLOBAL__N_122_GetAvailableResolversEvE3$_0EclINS_17__normal_iteratorIPNS2_6TfTypeESt6vectorIS8_SaIS8_EEEESD_EEbT_T0_.exit8.i.i" ], [ %.sroa.0.0.i.i, %"_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN32pxrInternal_v0_24__pxrReserved__12_GLOBAL__N_122_GetAvailableResolversEvE3$_0EclINS_17__normal_iteratorIPNS2_6TfTypeESt6vectorIS8_SaIS8_EEEESD_EEbT_T0_.exit.i13.i" ] @@ -24891,7 +24880,7 @@ define internal fastcc void @"_ZSt16__introsort_loopIN9__gnu_cxx17__normal_itera "_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN32pxrInternal_v0_24__pxrReserved__12_GLOBAL__N_122_GetAvailableResolversEvE3$_0EclINS_17__normal_iteratorIPNS2_6TfTypeESt6vectorIS8_SaIS8_EEEESD_EEbT_T0_.exit8.i.i": ; preds = %.preheader.i.i %96 = icmp slt i32 %92, 0 - br i1 %96, label %.preheader.i.i, label %97, !llvm.loop !348 + br i1 %96, label %.preheader.i.i, label %97, !llvm.loop !347 97: ; preds = %"_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN32pxrInternal_v0_24__pxrReserved__12_GLOBAL__N_122_GetAvailableResolversEvE3$_0EclINS_17__normal_iteratorIPNS2_6TfTypeESt6vectorIS8_SaIS8_EEEESD_EEbT_T0_.exit8.i.i" %98 = icmp ult ptr %.sroa.011.1.i.i, %.sroa.0.1.i.i @@ -24903,7 +24892,7 @@ define internal fastcc void @"_ZSt16__introsort_loopIN9__gnu_cxx17__normal_itera store i64 %100, ptr %.sroa.011.1.i.i, align 8 store ptr %.sroa.0.0.copyload.i.i.i14.i, ptr %.sroa.0.1.i.i, align 8 %101 = getelementptr inbounds i8, ptr %.sroa.011.1.i.i, i64 8 - br label %"_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPN32pxrInternal_v0_24__pxrReserved__6TfTypeESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZNS2_12_GLOBAL__N_122_GetAvailableResolversEvE3$_0EEEvT_SE_SE_SE_T0_.exit.i", !llvm.loop !349 + br label %"_ZSt22__move_median_to_firstIN9__gnu_cxx17__normal_iteratorIPN32pxrInternal_v0_24__pxrReserved__6TfTypeESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZNS2_12_GLOBAL__N_122_GetAvailableResolversEvE3$_0EEEvT_SE_SE_SE_T0_.exit.i", !llvm.loop !348 "_ZSt27__unguarded_partition_pivotIN9__gnu_cxx17__normal_iteratorIPN32pxrInternal_v0_24__pxrReserved__6TfTypeESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZNS2_12_GLOBAL__N_122_GetAvailableResolversEvE3$_0EEET_SE_SE_T0_.exit": ; preds = %97 tail call fastcc void @"_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPN32pxrInternal_v0_24__pxrReserved__6TfTypeESt6vectorIS3_SaIS3_EEEElNS0_5__ops15_Iter_comp_iterIZNS2_12_GLOBAL__N_122_GetAvailableResolversEvE3$_0EEEvT_SE_T0_T1_"(ptr nonnull %.sroa.011.1.i.i, ptr %storemerge55145, i64 noundef %25) @@ -24911,7 +24900,7 @@ define internal fastcc void @"_ZSt16__introsort_loopIN9__gnu_cxx17__normal_itera %103 = sub i64 %102, %4 %104 = ashr exact i64 %103, 3 %105 = icmp sgt i64 %104, 16 - br i1 %105, label %11, label %"_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPN32pxrInternal_v0_24__pxrReserved__6TfTypeESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZNS2_12_GLOBAL__N_122_GetAvailableResolversEvE3$_0EEEvT_SE_SE_T0_.exit", !llvm.loop !344 + br i1 %105, label %11, label %"_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPN32pxrInternal_v0_24__pxrReserved__6TfTypeESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZNS2_12_GLOBAL__N_122_GetAvailableResolversEvE3$_0EEEvT_SE_SE_T0_.exit", !llvm.loop !343 "_ZSt14__partial_sortIN9__gnu_cxx17__normal_iteratorIPN32pxrInternal_v0_24__pxrReserved__6TfTypeESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZNS2_12_GLOBAL__N_122_GetAvailableResolversEvE3$_0EEEvT_SE_SE_T0_.exit": ; preds = %"_ZSt27__unguarded_partition_pivotIN9__gnu_cxx17__normal_iteratorIPN32pxrInternal_v0_24__pxrReserved__6TfTypeESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZNS2_12_GLOBAL__N_122_GetAvailableResolversEvE3$_0EEET_SE_SE_T0_.exit", %.lr.ph.i9.i, %3, %"_ZSt11__make_heapIN9__gnu_cxx17__normal_iteratorIPN32pxrInternal_v0_24__pxrReserved__6TfTypeESt6vectorIS3_SaIS3_EEEENS0_5__ops15_Iter_comp_iterIZNS2_12_GLOBAL__N_122_GetAvailableResolversEvE3$_0EEEvT_SE_RT0_.exit.i.i" ret void @@ -24952,7 +24941,7 @@ define internal fastcc void @"_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iterator %23 = load i64, ptr %21, align 8 store i64 %23, ptr %22, align 8 %24 = icmp slt i64 %spec.select, %7 - br i1 %24, label %.lr.ph, label %._crit_edge, !llvm.loop !350 + br i1 %24, label %.lr.ph, label %._crit_edge, !llvm.loop !349 ._crit_edge: ; preds = %"_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN32pxrInternal_v0_24__pxrReserved__12_GLOBAL__N_122_GetAvailableResolversEvE3$_0EclINS_17__normal_iteratorIPNS2_6TfTypeESt6vectorIS8_SaIS8_EEEESD_EEbT_T0_.exit", %4 %.0.lcssa = phi i64 [ %1, %4 ], [ %spec.select, %"_ZN9__gnu_cxx5__ops15_Iter_comp_iterIZN32pxrInternal_v0_24__pxrReserved__12_GLOBAL__N_122_GetAvailableResolversEvE3$_0EclINS_17__normal_iteratorIPNS2_6TfTypeESt6vectorIS8_SaIS8_EEEESD_EEbT_T0_.exit" ] @@ -25009,7 +24998,7 @@ define internal fastcc void @"_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iterator %50 = load i64, ptr %40, align 8 store i64 %50, ptr %49, align 8 %51 = icmp sgt i64 %.0911.i, %1 - br i1 %51, label %.lr.ph.i, label %.critedge.loopexit.i, !llvm.loop !351 + br i1 %51, label %.lr.ph.i, label %.critedge.loopexit.i, !llvm.loop !350 .critedge.loopexit.i: ; preds = %48, %"_ZN9__gnu_cxx5__ops14_Iter_comp_valIZN32pxrInternal_v0_24__pxrReserved__12_GLOBAL__N_122_GetAvailableResolversEvE3$_0EclINS_17__normal_iteratorIPNS2_6TfTypeESt6vectorIS8_SaIS8_EEEES8_EEbT_RT0_.exit.i" %.0.lcssa.ph.i = phi i64 [ %.010.i, %"_ZN9__gnu_cxx5__ops14_Iter_comp_valIZN32pxrInternal_v0_24__pxrReserved__12_GLOBAL__N_122_GetAvailableResolversEvE3$_0EclINS_17__normal_iteratorIPNS2_6TfTypeESt6vectorIS8_SaIS8_EEEES8_EEbT_RT0_.exit.i" ], [ %.0911.i, %48 ] @@ -25110,7 +25099,7 @@ _ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN32pxrInternal_v0_24__pxrRes 32: ; preds = %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN32pxrInternal_v0_24__pxrReserved__6TfTypeESt6vectorIS3_SaIS3_EEEES8_ET0_T_SA_S9_.exit, %"_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN32pxrInternal_v0_24__pxrReserved__6TfTypeESt6vectorIS3_SaIS3_EEEENS0_5__ops14_Val_comp_iterIZNS2_12_GLOBAL__N_122_GetAvailableResolversEvE3$_0EEEvT_T0_.exit" %.sroa.0.0 = getelementptr inbounds i8, ptr %.sroa.0.022, i64 8 %.not = icmp eq ptr %.sroa.0.0, %1 - br i1 %.not, label %.loopexit, label %6, !llvm.loop !352 + br i1 %.not, label %.loopexit, label %6, !llvm.loop !351 .loopexit: ; preds = %32, %.preheader, %2 ret void @@ -25575,14 +25564,14 @@ _ZNSt12_Vector_baseIN32pxrInternal_v0_24__pxrReserved__6TfTypeESaIS1_EE11_M_allo .lr.ph.i.i.i: ; preds = %_ZNSt12_Vector_baseIN32pxrInternal_v0_24__pxrReserved__6TfTypeESaIS1_EE11_M_allocateEm.exit, %.lr.ph.i.i.i %.012.i.i.i = phi ptr [ %28, %.lr.ph.i.i.i ], [ %23, %_ZNSt12_Vector_baseIN32pxrInternal_v0_24__pxrReserved__6TfTypeESaIS1_EE11_M_allocateEm.exit ] %.0911.i.i.i = phi ptr [ %27, %.lr.ph.i.i.i ], [ %6, %_ZNSt12_Vector_baseIN32pxrInternal_v0_24__pxrReserved__6TfTypeESaIS1_EE11_M_allocateEm.exit ] - tail call void @llvm.experimental.noalias.scope.decl(metadata !353) - tail call void @llvm.experimental.noalias.scope.decl(metadata !356) - %26 = load i64, ptr %.0911.i.i.i, align 8, !alias.scope !356, !noalias !353 - store i64 %26, ptr %.012.i.i.i, align 8, !alias.scope !353, !noalias !356 + tail call void @llvm.experimental.noalias.scope.decl(metadata !352) + tail call void @llvm.experimental.noalias.scope.decl(metadata !355) + %26 = load i64, ptr %.0911.i.i.i, align 8, !alias.scope !355, !noalias !352 + store i64 %26, ptr %.012.i.i.i, align 8, !alias.scope !352, !noalias !355 %27 = getelementptr inbounds i8, ptr %.0911.i.i.i, i64 8 %28 = getelementptr inbounds i8, ptr %.012.i.i.i, i64 8 %.not.i.i.i = icmp eq ptr %27, %1 - br i1 %.not.i.i.i, label %_ZNSt6vectorIN32pxrInternal_v0_24__pxrReserved__6TfTypeESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit, label %.lr.ph.i.i.i, !llvm.loop !358 + br i1 %.not.i.i.i, label %_ZNSt6vectorIN32pxrInternal_v0_24__pxrReserved__6TfTypeESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit, label %.lr.ph.i.i.i, !llvm.loop !357 _ZNSt6vectorIN32pxrInternal_v0_24__pxrReserved__6TfTypeESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit: ; preds = %.lr.ph.i.i.i, %_ZNSt12_Vector_baseIN32pxrInternal_v0_24__pxrReserved__6TfTypeESaIS1_EE11_M_allocateEm.exit %.0.lcssa.i.i.i = phi ptr [ %23, %_ZNSt12_Vector_baseIN32pxrInternal_v0_24__pxrReserved__6TfTypeESaIS1_EE11_M_allocateEm.exit ], [ %28, %.lr.ph.i.i.i ] @@ -25593,14 +25582,14 @@ _ZNSt6vectorIN32pxrInternal_v0_24__pxrReserved__6TfTypeESaIS1_EE11_S_relocateEPS .lr.ph.i.i.i17: ; preds = %_ZNSt6vectorIN32pxrInternal_v0_24__pxrReserved__6TfTypeESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit, %.lr.ph.i.i.i17 %.012.i.i.i18 = phi ptr [ %32, %.lr.ph.i.i.i17 ], [ %29, %_ZNSt6vectorIN32pxrInternal_v0_24__pxrReserved__6TfTypeESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit ] %.0911.i.i.i19 = phi ptr [ %31, %.lr.ph.i.i.i17 ], [ %1, %_ZNSt6vectorIN32pxrInternal_v0_24__pxrReserved__6TfTypeESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit ] - tail call void @llvm.experimental.noalias.scope.decl(metadata !359) - tail call void @llvm.experimental.noalias.scope.decl(metadata !362) - %30 = load i64, ptr %.0911.i.i.i19, align 8, !alias.scope !362, !noalias !359 - store i64 %30, ptr %.012.i.i.i18, align 8, !alias.scope !359, !noalias !362 + tail call void @llvm.experimental.noalias.scope.decl(metadata !358) + tail call void @llvm.experimental.noalias.scope.decl(metadata !361) + %30 = load i64, ptr %.0911.i.i.i19, align 8, !alias.scope !361, !noalias !358 + store i64 %30, ptr %.012.i.i.i18, align 8, !alias.scope !358, !noalias !361 %31 = getelementptr inbounds i8, ptr %.0911.i.i.i19, i64 8 %32 = getelementptr inbounds i8, ptr %.012.i.i.i18, i64 8 %.not.i.i.i20 = icmp eq ptr %31, %5 - br i1 %.not.i.i.i20, label %_ZNSt6vectorIN32pxrInternal_v0_24__pxrReserved__6TfTypeESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit22, label %.lr.ph.i.i.i17, !llvm.loop !358 + br i1 %.not.i.i.i20, label %_ZNSt6vectorIN32pxrInternal_v0_24__pxrReserved__6TfTypeESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit22, label %.lr.ph.i.i.i17, !llvm.loop !357 _ZNSt6vectorIN32pxrInternal_v0_24__pxrReserved__6TfTypeESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit22: ; preds = %.lr.ph.i.i.i17, %_ZNSt6vectorIN32pxrInternal_v0_24__pxrReserved__6TfTypeESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit %.0.lcssa.i.i.i21 = phi ptr [ %29, %_ZNSt6vectorIN32pxrInternal_v0_24__pxrReserved__6TfTypeESaIS1_EE11_S_relocateEPS1_S4_S4_RS2_.exit ], [ %32, %.lr.ph.i.i.i17 ] @@ -26047,15 +26036,14 @@ attributes #39 = { nounwind willreturn memory(none) } !349 = distinct !{!349, !22} !350 = distinct !{!350, !22} !351 = distinct !{!351, !22} -!352 = distinct !{!352, !22} -!353 = !{!354} -!354 = distinct !{!354, !355, !"_ZSt19__relocate_object_aIN32pxrInternal_v0_24__pxrReserved__6TfTypeES1_SaIS1_EEvPT_PT0_RT1_: argument 0"} -!355 = distinct !{!355, !"_ZSt19__relocate_object_aIN32pxrInternal_v0_24__pxrReserved__6TfTypeES1_SaIS1_EEvPT_PT0_RT1_"} -!356 = !{!357} -!357 = distinct !{!357, !355, !"_ZSt19__relocate_object_aIN32pxrInternal_v0_24__pxrReserved__6TfTypeES1_SaIS1_EEvPT_PT0_RT1_: argument 1"} -!358 = distinct !{!358, !22} -!359 = !{!360} -!360 = distinct !{!360, !361, !"_ZSt19__relocate_object_aIN32pxrInternal_v0_24__pxrReserved__6TfTypeES1_SaIS1_EEvPT_PT0_RT1_: argument 0"} -!361 = distinct !{!361, !"_ZSt19__relocate_object_aIN32pxrInternal_v0_24__pxrReserved__6TfTypeES1_SaIS1_EEvPT_PT0_RT1_"} -!362 = !{!363} -!363 = distinct !{!363, !361, !"_ZSt19__relocate_object_aIN32pxrInternal_v0_24__pxrReserved__6TfTypeES1_SaIS1_EEvPT_PT0_RT1_: argument 1"} +!352 = !{!353} +!353 = distinct !{!353, !354, !"_ZSt19__relocate_object_aIN32pxrInternal_v0_24__pxrReserved__6TfTypeES1_SaIS1_EEvPT_PT0_RT1_: argument 0"} +!354 = distinct !{!354, !"_ZSt19__relocate_object_aIN32pxrInternal_v0_24__pxrReserved__6TfTypeES1_SaIS1_EEvPT_PT0_RT1_"} +!355 = !{!356} +!356 = distinct !{!356, !354, !"_ZSt19__relocate_object_aIN32pxrInternal_v0_24__pxrReserved__6TfTypeES1_SaIS1_EEvPT_PT0_RT1_: argument 1"} +!357 = distinct !{!357, !22} +!358 = !{!359} +!359 = distinct !{!359, !360, !"_ZSt19__relocate_object_aIN32pxrInternal_v0_24__pxrReserved__6TfTypeES1_SaIS1_EEvPT_PT0_RT1_: argument 0"} +!360 = distinct !{!360, !"_ZSt19__relocate_object_aIN32pxrInternal_v0_24__pxrReserved__6TfTypeES1_SaIS1_EEvPT_PT0_RT1_"} +!361 = !{!362} +!362 = distinct !{!362, !360, !"_ZSt19__relocate_object_aIN32pxrInternal_v0_24__pxrReserved__6TfTypeES1_SaIS1_EEvPT_PT0_RT1_: argument 1"} diff --git a/bench/openvdb/optimized/FastSweeping.cc.ll b/bench/openvdb/optimized/FastSweeping.cc.ll index 982f3c91d7c..886f97815a4 100644 --- a/bench/openvdb/optimized/FastSweeping.cc.ll +++ b/bench/openvdb/optimized/FastSweeping.cc.ll @@ -184359,11 +184359,11 @@ call5.i.i2.i.i27.noexc: ; preds = %if.end.i9 to label %invoke.cont.i.i unwind label %_ZNSt11_Deque_baseImSaImEE16_M_destroy_nodesEPPmS3_.exit.i.i invoke.cont.i.i: ; preds = %call5.i.i2.i.i27.noexc - %add.ptr.i28.ptr = getelementptr inbounds i8, ptr %call5.i.i2.i.i2738, i64 24 - store ptr %call5.i.i.i5.i.i, ptr %add.ptr.i28.ptr, align 8 + %__cur.08.i.i.ptr = getelementptr inbounds i8, ptr %call5.i.i2.i.i2738, i64 24 + store ptr %call5.i.i.i5.i.i, ptr %__cur.08.i.i.ptr, align 8 %_M_start.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 32 %_M_node.i.i34 = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 56 - store ptr %add.ptr.i28.ptr, ptr %_M_node.i.i34, align 8 + store ptr %__cur.08.i.i.ptr, ptr %_M_node.i.i34, align 8 %_M_first.i.i35 = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 40 store ptr %call5.i.i.i5.i.i, ptr %_M_first.i.i35, align 8 %add.ptr.i.i36 = getelementptr inbounds i8, ptr %call5.i.i.i5.i.i, i64 512 @@ -184371,7 +184371,7 @@ invoke.cont.i.i: ; preds = %call5.i.i2.i.i27.no store ptr %add.ptr.i.i36, ptr %_M_last.i.i37, align 8 %_M_finish.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 64 %_M_node.i10.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 88 - store ptr %add.ptr.i28.ptr, ptr %_M_node.i10.i, align 8 + store ptr %__cur.08.i.i.ptr, ptr %_M_node.i10.i, align 8 %_M_first.i11.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 72 store ptr %call5.i.i.i5.i.i, ptr %_M_first.i11.i, align 8 %_M_last.i13.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 80 @@ -190432,11 +190432,11 @@ call5.i.i2.i.i28.noexc: ; preds = %if.end.i10 to label %invoke.cont.i.i unwind label %_ZNSt11_Deque_baseImSaImEE16_M_destroy_nodesEPPmS3_.exit.i.i invoke.cont.i.i: ; preds = %call5.i.i2.i.i28.noexc - %add.ptr.i29.ptr = getelementptr inbounds i8, ptr %call5.i.i2.i.i2839, i64 24 - store ptr %call5.i.i.i5.i.i, ptr %add.ptr.i29.ptr, align 8 + %__cur.08.i.i.ptr = getelementptr inbounds i8, ptr %call5.i.i2.i.i2839, i64 24 + store ptr %call5.i.i.i5.i.i, ptr %__cur.08.i.i.ptr, align 8 %_M_start.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 32 %_M_node.i.i35 = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 56 - store ptr %add.ptr.i29.ptr, ptr %_M_node.i.i35, align 8 + store ptr %__cur.08.i.i.ptr, ptr %_M_node.i.i35, align 8 %_M_first.i.i36 = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 40 store ptr %call5.i.i.i5.i.i, ptr %_M_first.i.i36, align 8 %add.ptr.i.i37 = getelementptr inbounds i8, ptr %call5.i.i.i5.i.i, i64 512 @@ -190444,7 +190444,7 @@ invoke.cont.i.i: ; preds = %call5.i.i2.i.i28.no store ptr %add.ptr.i.i37, ptr %_M_last.i.i38, align 8 %_M_finish.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 64 %_M_node.i10.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 88 - store ptr %add.ptr.i29.ptr, ptr %_M_node.i10.i, align 8 + store ptr %__cur.08.i.i.ptr, ptr %_M_node.i10.i, align 8 %_M_first.i11.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 72 store ptr %call5.i.i.i5.i.i, ptr %_M_first.i11.i, align 8 %_M_last.i13.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 80 @@ -195395,11 +195395,11 @@ call5.i.i2.i.i28.noexc: ; preds = %if.end.i10 to label %invoke.cont.i.i unwind label %_ZNSt11_Deque_baseImSaImEE16_M_destroy_nodesEPPmS3_.exit.i.i invoke.cont.i.i: ; preds = %call5.i.i2.i.i28.noexc - %add.ptr.i29.ptr = getelementptr inbounds i8, ptr %call5.i.i2.i.i2839, i64 24 - store ptr %call5.i.i.i5.i.i, ptr %add.ptr.i29.ptr, align 8 + %__cur.08.i.i.ptr = getelementptr inbounds i8, ptr %call5.i.i2.i.i2839, i64 24 + store ptr %call5.i.i.i5.i.i, ptr %__cur.08.i.i.ptr, align 8 %_M_start.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 32 %_M_node.i.i35 = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 56 - store ptr %add.ptr.i29.ptr, ptr %_M_node.i.i35, align 8 + store ptr %__cur.08.i.i.ptr, ptr %_M_node.i.i35, align 8 %_M_first.i.i36 = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 40 store ptr %call5.i.i.i5.i.i, ptr %_M_first.i.i36, align 8 %add.ptr.i.i37 = getelementptr inbounds i8, ptr %call5.i.i.i5.i.i, i64 512 @@ -195407,7 +195407,7 @@ invoke.cont.i.i: ; preds = %call5.i.i2.i.i28.no store ptr %add.ptr.i.i37, ptr %_M_last.i.i38, align 8 %_M_finish.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 64 %_M_node.i10.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 88 - store ptr %add.ptr.i29.ptr, ptr %_M_node.i10.i, align 8 + store ptr %__cur.08.i.i.ptr, ptr %_M_node.i10.i, align 8 %_M_first.i11.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 72 store ptr %call5.i.i.i5.i.i, ptr %_M_first.i11.i, align 8 %_M_last.i13.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 80 @@ -200358,11 +200358,11 @@ call5.i.i2.i.i27.noexc: ; preds = %if.end.i9 to label %invoke.cont.i.i unwind label %_ZNSt11_Deque_baseImSaImEE16_M_destroy_nodesEPPmS3_.exit.i.i invoke.cont.i.i: ; preds = %call5.i.i2.i.i27.noexc - %add.ptr.i28.ptr = getelementptr inbounds i8, ptr %call5.i.i2.i.i2738, i64 24 - store ptr %call5.i.i.i5.i.i, ptr %add.ptr.i28.ptr, align 8 + %__cur.08.i.i.ptr = getelementptr inbounds i8, ptr %call5.i.i2.i.i2738, i64 24 + store ptr %call5.i.i.i5.i.i, ptr %__cur.08.i.i.ptr, align 8 %_M_start.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 32 %_M_node.i.i34 = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 56 - store ptr %add.ptr.i28.ptr, ptr %_M_node.i.i34, align 8 + store ptr %__cur.08.i.i.ptr, ptr %_M_node.i.i34, align 8 %_M_first.i.i35 = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 40 store ptr %call5.i.i.i5.i.i, ptr %_M_first.i.i35, align 8 %add.ptr.i.i36 = getelementptr inbounds i8, ptr %call5.i.i.i5.i.i, i64 512 @@ -200370,7 +200370,7 @@ invoke.cont.i.i: ; preds = %call5.i.i2.i.i27.no store ptr %add.ptr.i.i36, ptr %_M_last.i.i37, align 8 %_M_finish.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 64 %_M_node.i10.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 88 - store ptr %add.ptr.i28.ptr, ptr %_M_node.i10.i, align 8 + store ptr %__cur.08.i.i.ptr, ptr %_M_node.i10.i, align 8 %_M_first.i11.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 72 store ptr %call5.i.i.i5.i.i, ptr %_M_first.i11.i, align 8 %_M_last.i13.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 80 @@ -309198,11 +309198,11 @@ call5.i.i2.i.i27.noexc: ; preds = %if.end.i9 to label %invoke.cont.i.i unwind label %_ZNSt11_Deque_baseImSaImEE16_M_destroy_nodesEPPmS3_.exit.i.i invoke.cont.i.i: ; preds = %call5.i.i2.i.i27.noexc - %add.ptr.i28.ptr = getelementptr inbounds i8, ptr %call5.i.i2.i.i2738, i64 24 - store ptr %call5.i.i.i5.i.i, ptr %add.ptr.i28.ptr, align 8 + %__cur.08.i.i.ptr = getelementptr inbounds i8, ptr %call5.i.i2.i.i2738, i64 24 + store ptr %call5.i.i.i5.i.i, ptr %__cur.08.i.i.ptr, align 8 %_M_start.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 32 %_M_node.i.i34 = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 56 - store ptr %add.ptr.i28.ptr, ptr %_M_node.i.i34, align 8 + store ptr %__cur.08.i.i.ptr, ptr %_M_node.i.i34, align 8 %_M_first.i.i35 = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 40 store ptr %call5.i.i.i5.i.i, ptr %_M_first.i.i35, align 8 %add.ptr.i.i36 = getelementptr inbounds i8, ptr %call5.i.i.i5.i.i, i64 512 @@ -309210,7 +309210,7 @@ invoke.cont.i.i: ; preds = %call5.i.i2.i.i27.no store ptr %add.ptr.i.i36, ptr %_M_last.i.i37, align 8 %_M_finish.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 64 %_M_node.i10.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 88 - store ptr %add.ptr.i28.ptr, ptr %_M_node.i10.i, align 8 + store ptr %__cur.08.i.i.ptr, ptr %_M_node.i10.i, align 8 %_M_first.i11.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 72 store ptr %call5.i.i.i5.i.i, ptr %_M_first.i11.i, align 8 %_M_last.i13.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 80 @@ -314161,11 +314161,11 @@ call5.i.i2.i.i28.noexc: ; preds = %if.end.i10 to label %invoke.cont.i.i unwind label %_ZNSt11_Deque_baseImSaImEE16_M_destroy_nodesEPPmS3_.exit.i.i invoke.cont.i.i: ; preds = %call5.i.i2.i.i28.noexc - %add.ptr.i29.ptr = getelementptr inbounds i8, ptr %call5.i.i2.i.i2839, i64 24 - store ptr %call5.i.i.i5.i.i, ptr %add.ptr.i29.ptr, align 8 + %__cur.08.i.i.ptr = getelementptr inbounds i8, ptr %call5.i.i2.i.i2839, i64 24 + store ptr %call5.i.i.i5.i.i, ptr %__cur.08.i.i.ptr, align 8 %_M_start.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 32 %_M_node.i.i35 = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 56 - store ptr %add.ptr.i29.ptr, ptr %_M_node.i.i35, align 8 + store ptr %__cur.08.i.i.ptr, ptr %_M_node.i.i35, align 8 %_M_first.i.i36 = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 40 store ptr %call5.i.i.i5.i.i, ptr %_M_first.i.i36, align 8 %add.ptr.i.i37 = getelementptr inbounds i8, ptr %call5.i.i.i5.i.i, i64 512 @@ -314173,7 +314173,7 @@ invoke.cont.i.i: ; preds = %call5.i.i2.i.i28.no store ptr %add.ptr.i.i37, ptr %_M_last.i.i38, align 8 %_M_finish.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 64 %_M_node.i10.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 88 - store ptr %add.ptr.i29.ptr, ptr %_M_node.i10.i, align 8 + store ptr %__cur.08.i.i.ptr, ptr %_M_node.i10.i, align 8 %_M_first.i11.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 72 store ptr %call5.i.i.i5.i.i, ptr %_M_first.i11.i, align 8 %_M_last.i13.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 80 @@ -319124,11 +319124,11 @@ call5.i.i2.i.i28.noexc: ; preds = %if.end.i10 to label %invoke.cont.i.i unwind label %_ZNSt11_Deque_baseImSaImEE16_M_destroy_nodesEPPmS3_.exit.i.i invoke.cont.i.i: ; preds = %call5.i.i2.i.i28.noexc - %add.ptr.i29.ptr = getelementptr inbounds i8, ptr %call5.i.i2.i.i2839, i64 24 - store ptr %call5.i.i.i5.i.i, ptr %add.ptr.i29.ptr, align 8 + %__cur.08.i.i.ptr = getelementptr inbounds i8, ptr %call5.i.i2.i.i2839, i64 24 + store ptr %call5.i.i.i5.i.i, ptr %__cur.08.i.i.ptr, align 8 %_M_start.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 32 %_M_node.i.i35 = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 56 - store ptr %add.ptr.i29.ptr, ptr %_M_node.i.i35, align 8 + store ptr %__cur.08.i.i.ptr, ptr %_M_node.i.i35, align 8 %_M_first.i.i36 = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 40 store ptr %call5.i.i.i5.i.i, ptr %_M_first.i.i36, align 8 %add.ptr.i.i37 = getelementptr inbounds i8, ptr %call5.i.i.i5.i.i, i64 512 @@ -319136,7 +319136,7 @@ invoke.cont.i.i: ; preds = %call5.i.i2.i.i28.no store ptr %add.ptr.i.i37, ptr %_M_last.i.i38, align 8 %_M_finish.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 64 %_M_node.i10.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 88 - store ptr %add.ptr.i29.ptr, ptr %_M_node.i10.i, align 8 + store ptr %__cur.08.i.i.ptr, ptr %_M_node.i10.i, align 8 %_M_first.i11.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 72 store ptr %call5.i.i.i5.i.i, ptr %_M_first.i11.i, align 8 %_M_last.i13.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 80 @@ -324087,11 +324087,11 @@ call5.i.i2.i.i27.noexc: ; preds = %if.end.i9 to label %invoke.cont.i.i unwind label %_ZNSt11_Deque_baseImSaImEE16_M_destroy_nodesEPPmS3_.exit.i.i invoke.cont.i.i: ; preds = %call5.i.i2.i.i27.noexc - %add.ptr.i28.ptr = getelementptr inbounds i8, ptr %call5.i.i2.i.i2738, i64 24 - store ptr %call5.i.i.i5.i.i, ptr %add.ptr.i28.ptr, align 8 + %__cur.08.i.i.ptr = getelementptr inbounds i8, ptr %call5.i.i2.i.i2738, i64 24 + store ptr %call5.i.i.i5.i.i, ptr %__cur.08.i.i.ptr, align 8 %_M_start.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 32 %_M_node.i.i34 = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 56 - store ptr %add.ptr.i28.ptr, ptr %_M_node.i.i34, align 8 + store ptr %__cur.08.i.i.ptr, ptr %_M_node.i.i34, align 8 %_M_first.i.i35 = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 40 store ptr %call5.i.i.i5.i.i, ptr %_M_first.i.i35, align 8 %add.ptr.i.i36 = getelementptr inbounds i8, ptr %call5.i.i.i5.i.i, i64 512 @@ -324099,7 +324099,7 @@ invoke.cont.i.i: ; preds = %call5.i.i2.i.i27.no store ptr %add.ptr.i.i36, ptr %_M_last.i.i37, align 8 %_M_finish.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 64 %_M_node.i10.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 88 - store ptr %add.ptr.i28.ptr, ptr %_M_node.i10.i, align 8 + store ptr %__cur.08.i.i.ptr, ptr %_M_node.i10.i, align 8 %_M_first.i11.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 72 store ptr %call5.i.i.i5.i.i, ptr %_M_first.i11.i, align 8 %_M_last.i13.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 80 diff --git a/bench/php/optimized/string.ll b/bench/php/optimized/string.ll index 4830613e185..e5220049e65 100644 --- a/bench/php/optimized/string.ll +++ b/bench/php/optimized/string.ll @@ -4513,8 +4513,8 @@ define hidden void @zif_strtok(ptr noundef %0, ptr nocapture noundef writeonly % 55: ; preds = %.thread239 %56 = load ptr, ptr %3, align 8 store ptr %56, ptr %4, align 8 - %.pre281 = load ptr, ptr getelementptr inbounds (i8, ptr @basic_globals, i64 64), align 8 - %.not214 = icmp eq ptr %.pre281, null + %.pre278 = load ptr, ptr getelementptr inbounds (i8, ptr @basic_globals, i64 64), align 8 + %.not214 = icmp eq ptr %.pre278, null br i1 %.not214, label %57, label %59 57: ; preds = %55 @@ -4524,7 +4524,7 @@ define hidden void @zif_strtok(ptr noundef %0, ptr nocapture noundef writeonly % br label %.loopexit 59: ; preds = %.thread, %55 - %60 = phi ptr [ %44, %.thread ], [ %.pre281, %55 ] + %60 = phi ptr [ %44, %.thread ], [ %.pre278, %55 ] %61 = load ptr, ptr getelementptr inbounds (i8, ptr @basic_globals, i64 88), align 8 %62 = getelementptr inbounds i8, ptr %60, i64 24 %63 = load i64, ptr getelementptr inbounds (i8, ptr @basic_globals, i64 352), align 8 @@ -4593,7 +4593,7 @@ define hidden void @zif_strtok(ptr noundef %0, ptr nocapture noundef writeonly % %.1193 = phi ptr [ %90, %92 ], [ %.0192.lcssa, %.preheader ] %90 = getelementptr inbounds i8, ptr %.1193, i64 1 %91 = icmp ult ptr %90, %64 - br i1 %91, label %92, label %97 + br i1 %91, label %92, label %.loopexit258 92: ; preds = %89 %93 = load i8, ptr %90, align 1 @@ -4603,93 +4603,89 @@ define hidden void @zif_strtok(ptr noundef %0, ptr nocapture noundef writeonly % %.not218 = icmp eq i8 %96, 0 br i1 %.not218, label %89, label %.loopexit258 -97: ; preds = %89 - %.not217 = icmp eq ptr %90, %61 - br i1 %.not217, label %.loopexit260, label %.loopexit258 - -.loopexit258: ; preds = %92, %97 - %98 = getelementptr inbounds i8, ptr %61, i64 %.0197.lcssa - %99 = ptrtoint ptr %90 to i64 - %100 = ptrtoint ptr %61 to i64 - %101 = add i64 %.0197.lcssa, %100 - %102 = sub i64 %99, %101 - %103 = and i64 %102, -8 - %104 = add i64 %103, 32 - %105 = call noalias ptr @_emalloc(i64 noundef %104) #29 - store i32 1, ptr %105, align 4 - %106 = getelementptr inbounds i8, ptr %105, i64 4 - store i32 22, ptr %106, align 4 - %107 = getelementptr inbounds i8, ptr %105, i64 8 - store i64 0, ptr %107, align 8 - %108 = getelementptr inbounds i8, ptr %105, i64 16 - store i64 %102, ptr %108, align 8 - %109 = getelementptr inbounds i8, ptr %105, i64 24 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %109, ptr nonnull align 1 %98, i64 %102, i1 false) - %110 = getelementptr inbounds [1 x i8], ptr %109, i64 0, i64 %102 - store i8 0, ptr %110, align 1 - store ptr %105, ptr %1, align 8 - %111 = getelementptr inbounds i8, ptr %1, i64 8 - store i32 262, ptr %111, align 8 - %112 = getelementptr inbounds i8, ptr %.1193, i64 2 - store ptr %112, ptr getelementptr inbounds (i8, ptr @basic_globals, i64 88), align 8 - br label %128 - -.loopexit260: ; preds = %.lr.ph270, %97 - %113 = getelementptr inbounds i8, ptr %1, i64 8 - store i32 2, ptr %113, align 8 - %114 = load ptr, ptr getelementptr inbounds (i8, ptr @basic_globals, i64 64), align 8 - %115 = getelementptr inbounds i8, ptr %114, i64 4 - %116 = load i32, ptr %115, align 4 - %117 = and i32 %116, 64 - %.not220 = icmp eq i32 %117, 0 - br i1 %.not220, label %118, label %127 - -118: ; preds = %.loopexit260 - %119 = load i32, ptr %114, align 4 - %120 = icmp ne i32 %119, 0 - call void @llvm.assume(i1 %120) - %121 = add i32 %119, -1 - store i32 %121, ptr %114, align 4 - %122 = icmp eq i32 %121, 0 - br i1 %122, label %123, label %127 - -123: ; preds = %118 - %124 = and i32 %116, 128 - %.not221 = icmp eq i32 %124, 0 - br i1 %.not221, label %126, label %125 - -125: ; preds = %123 - call void @free(ptr noundef nonnull %114) #28 +.loopexit258: ; preds = %92, %89 + %97 = getelementptr inbounds i8, ptr %61, i64 %.0197.lcssa + %98 = ptrtoint ptr %90 to i64 + %99 = ptrtoint ptr %61 to i64 + %100 = add i64 %.0197.lcssa, %99 + %101 = sub i64 %98, %100 + %102 = and i64 %101, -8 + %103 = add i64 %102, 32 + %104 = call noalias ptr @_emalloc(i64 noundef %103) #29 + store i32 1, ptr %104, align 4 + %105 = getelementptr inbounds i8, ptr %104, i64 4 + store i32 22, ptr %105, align 4 + %106 = getelementptr inbounds i8, ptr %104, i64 8 + store i64 0, ptr %106, align 8 + %107 = getelementptr inbounds i8, ptr %104, i64 16 + store i64 %101, ptr %107, align 8 + %108 = getelementptr inbounds i8, ptr %104, i64 24 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %108, ptr nonnull align 1 %97, i64 %101, i1 false) + %109 = getelementptr inbounds [1 x i8], ptr %108, i64 0, i64 %101 + store i8 0, ptr %109, align 1 + store ptr %104, ptr %1, align 8 + %110 = getelementptr inbounds i8, ptr %1, i64 8 + store i32 262, ptr %110, align 8 + %111 = getelementptr inbounds i8, ptr %.1193, i64 2 + store ptr %111, ptr getelementptr inbounds (i8, ptr @basic_globals, i64 88), align 8 br label %127 -126: ; preds = %123 - call void @_efree(ptr noundef nonnull %114) #28 - br label %127 +.loopexit260: ; preds = %.lr.ph270 + %112 = getelementptr inbounds i8, ptr %1, i64 8 + store i32 2, ptr %112, align 8 + %113 = load ptr, ptr getelementptr inbounds (i8, ptr @basic_globals, i64 64), align 8 + %114 = getelementptr inbounds i8, ptr %113, i64 4 + %115 = load i32, ptr %114, align 4 + %116 = and i32 %115, 64 + %.not220 = icmp eq i32 %116, 0 + br i1 %.not220, label %117, label %126 + +117: ; preds = %.loopexit260 + %118 = load i32, ptr %113, align 4 + %119 = icmp ne i32 %118, 0 + call void @llvm.assume(i1 %119) + %120 = add i32 %118, -1 + store i32 %120, ptr %113, align 4 + %121 = icmp eq i32 %120, 0 + br i1 %121, label %122, label %126 + +122: ; preds = %117 + %123 = and i32 %115, 128 + %.not221 = icmp eq i32 %123, 0 + br i1 %.not221, label %125, label %124 + +124: ; preds = %122 + call void @free(ptr noundef nonnull %113) #28 + br label %126 + +125: ; preds = %122 + call void @_efree(ptr noundef nonnull %113) #28 + br label %126 -127: ; preds = %118, %126, %125, %.loopexit260 +126: ; preds = %117, %125, %124, %.loopexit260 store ptr null, ptr getelementptr inbounds (i8, ptr @basic_globals, i64 64), align 8 - br label %128 + br label %127 -128: ; preds = %127, %.loopexit258 - %129 = load ptr, ptr %4, align 8 - %130 = icmp ult ptr %129, %71 - br i1 %130, label %.lr.ph273.preheader, label %.loopexit +127: ; preds = %126, %.loopexit258 + %128 = load ptr, ptr %4, align 8 + %129 = icmp ult ptr %128, %71 + br i1 %129, label %.lr.ph273.preheader, label %.loopexit -.lr.ph273.preheader: ; preds = %128 - %131 = getelementptr inbounds i8, ptr %129, i64 24 +.lr.ph273.preheader: ; preds = %127 + %130 = getelementptr inbounds i8, ptr %128, i64 24 br label %.lr.ph273 .lr.ph273: ; preds = %.lr.ph273.preheader, %.lr.ph273 - %.1272 = phi ptr [ %132, %.lr.ph273 ], [ %131, %.lr.ph273.preheader ] - %132 = getelementptr inbounds i8, ptr %.1272, i64 1 - %133 = load i8, ptr %.1272, align 1 - %134 = zext i8 %133 to i64 - %135 = getelementptr inbounds [256 x i8], ptr getelementptr inbounds (i8, ptr @basic_globals, i64 96), i64 0, i64 %134 - store i8 0, ptr %135, align 1 - %136 = icmp ult ptr %132, %.ptr274 - br i1 %136, label %.lr.ph273, label %.loopexit - -.loopexit: ; preds = %.lr.ph273, %128, %65, %57, %.thread246 + %.1272 = phi ptr [ %131, %.lr.ph273 ], [ %130, %.lr.ph273.preheader ] + %131 = getelementptr inbounds i8, ptr %.1272, i64 1 + %132 = load i8, ptr %.1272, align 1 + %133 = zext i8 %132 to i64 + %134 = getelementptr inbounds [256 x i8], ptr getelementptr inbounds (i8, ptr @basic_globals, i64 96), i64 0, i64 %133 + store i8 0, ptr %134, align 1 + %135 = icmp ult ptr %131, %.ptr274 + br i1 %135, label %.lr.ph273, label %.loopexit + +.loopexit: ; preds = %.lr.ph273, %127, %65, %57, %.thread246 ret void } @@ -17907,13 +17903,13 @@ define i64 @php_strip_tags_ex(ptr noundef %0, i64 noundef %1, ptr noundef %2, i6 %.3245.add299 = add nuw nsw i64 %.3245.idx.in538, 2 br label %.outer375.backedge -.outer375.backedge: ; preds = %128, %206, %158, %84 - %.1265.ph.be = phi ptr [ %.6270, %84 ], [ %.5252.ph567, %158 ], [ %.5252.ph567, %206 ], [ %.5252.ph567, %128 ] - %.0260.ph.be = phi ptr [ %.2262, %84 ], [ %.0260503, %158 ], [ %.0260503, %206 ], [ %.0260503, %128 ] - %.1248.ph.be = phi ptr [ %.7254, %84 ], [ %.5252.ph567, %158 ], [ %.5252.ph567, %206 ], [ %.5252.ph567, %128 ] - %.0242.idx.ph.be = phi i64 [ %.1243.add297, %84 ], [ %.2244.add298, %158 ], [ %.4246.add, %206 ], [ %.3245.add299, %128 ] - %.0231.ph.be = phi i32 [ 0, %84 ], [ 0, %158 ], [ %.4235513, %206 ], [ 0, %128 ] - %.0.ph.be = phi i8 [ 0, %84 ], [ %.1.ph372555, %158 ], [ %.1.ph372555, %206 ], [ %.1.ph372555, %128 ] +.outer375.backedge: ; preds = %128, %205, %158, %84 + %.1265.ph.be = phi ptr [ %.6270, %84 ], [ %.5252.ph567, %158 ], [ %.5252.ph567, %205 ], [ %.5252.ph567, %128 ] + %.0260.ph.be = phi ptr [ %.2262, %84 ], [ %.0260503, %158 ], [ %.0260503, %205 ], [ %.0260503, %128 ] + %.1248.ph.be = phi ptr [ %.7254, %84 ], [ %.5252.ph567, %158 ], [ %.5252.ph567, %205 ], [ %.5252.ph567, %128 ] + %.0242.idx.ph.be = phi i64 [ %.1243.add297, %84 ], [ %.2244.add298, %158 ], [ %.4246.add, %205 ], [ %.3245.add299, %128 ] + %.0231.ph.be = phi i32 [ 0, %84 ], [ 0, %158 ], [ %.4235513, %205 ], [ 0, %128 ] + %.0.ph.be = phi i8 [ 0, %84 ], [ %.1.ph372555, %158 ], [ %.1.ph372555, %205 ], [ %.1.ph372555, %128 ] %.not291502 = icmp slt i64 %.0242.idx.ph.be, %1 br i1 %.not291502, label %.lr.ph, label %.loopexit @@ -17988,8 +17984,8 @@ define i64 @php_strip_tags_ex(ptr noundef %0, i64 noundef %1, ptr noundef %2, i6 %.6237 = phi i32 [ %.5236540, %.lr.ph544 ], [ %.5236540, %149 ], [ %.5236540, %145 ], [ %.5236540, %137 ], [ %.5236540, %129 ], [ %119, %118 ], [ 0, %120 ], [ 0, %124 ], [ 0, %123 ], [ %.5236540, %115 ], [ %.5236540, %114 ], [ %.5236540, %112 ], [ %.5236540, %111 ], [ %.5236540, %111 ], [ %.5236540, %114 ], [ %.5236540, %139 ], [ %.5236540, %142 ], [ %.5236540, %135 ], [ %.5236540, %132 ] %.6 = phi i32 [ %.5541, %.lr.ph544 ], [ %.5541, %149 ], [ %.5541, %145 ], [ %.5541, %137 ], [ %.5541, %129 ], [ %.5541, %118 ], [ %.5541, %120 ], [ 0, %124 ], [ 0, %123 ], [ %.5541, %115 ], [ %.5541, %114 ], [ %.5541, %112 ], [ %.5541, %111 ], [ %.5541, %111 ], [ %.5541, %114 ], [ %.5541, %139 ], [ %.5541, %142 ], [ %spec.select358, %135 ], [ %134, %132 ] %.3245.idx = add i64 %.3245.idx542, 1 - %exitcond765.not = icmp eq i64 %.3245.idx, %1 - br i1 %exitcond765.not, label %.loopexit, label %.lr.ph544 + %exitcond766.not = icmp eq i64 %.3245.idx, %1 + br i1 %exitcond766.not, label %.loopexit, label %.lr.ph544 .lr.ph517: ; preds = %.preheader, %.critedge353 %.2244.idx515 = phi i64 [ %.2244.idx, %.critedge353 ], [ %.2244.idx509, %.preheader ] @@ -18055,8 +18051,8 @@ define i64 @php_strip_tags_ex(ptr noundef %0, i64 noundef %1, ptr noundef %2, i6 %.2244.add306 = add nuw nsw i64 %.2244.idx.in512, 2 %174 = icmp slt i64 %.2244.add306, %1 %.not614 = icmp eq i32 %.4514, 0 - %or.cond911 = select i1 %174, i1 %.not614, i1 false - br i1 %or.cond911, label %.lr.ph582.split, label %.loopexit + %or.cond = select i1 %174, i1 %.not614, i1 false + br i1 %or.cond, label %.lr.ph582.split, label %.loopexit 175: ; preds = %.lr.ph517, %.lr.ph517 %176 = icmp sgt i64 %.2244.idx.in512, 5 @@ -18122,69 +18118,67 @@ define i64 @php_strip_tags_ex(ptr noundef %0, i64 noundef %1, ptr noundef %2, i6 %exitcond.not = icmp eq i64 %.2244.idx, %1 br i1 %exitcond.not, label %.loopexit, label %.lr.ph517 -.lr.ph582.split: ; preds = %173, %207 - %.4246.idx580 = phi i64 [ %.4246.add305, %207 ], [ %.2244.add306, %173 ] +.lr.ph582.split: ; preds = %173, %206 + %.4246.idx580 = phi i64 [ %.4246.add305, %206 ], [ %.2244.add306, %173 ] %.4246.ptr581 = getelementptr inbounds i8, ptr %6, i64 %.4246.idx580 %196 = load i8, ptr %.4246.ptr581, align 1 - %197 = icmp ne i8 %196, 62 - %.not332 = icmp slt i64 %.4246.idx580, 2 - %or.cond = or i1 %.not332, %197 - br i1 %or.cond, label %207, label %198 + %.not615 = icmp eq i8 %196, 62 + br i1 %.not615, label %197, label %206 -198: ; preds = %.lr.ph582.split - %199 = getelementptr inbounds i8, ptr %.4246.ptr581, i64 -1 - %200 = load i8, ptr %199, align 1 - %201 = icmp eq i8 %200, 45 - br i1 %201, label %202, label %207 +197: ; preds = %.lr.ph582.split + %198 = getelementptr inbounds i8, ptr %.4246.ptr581, i64 -1 + %199 = load i8, ptr %198, align 1 + %200 = icmp eq i8 %199, 45 + br i1 %200, label %201, label %206 -202: ; preds = %198 - %203 = getelementptr inbounds i8, ptr %.4246.ptr581, i64 -2 - %204 = load i8, ptr %203, align 1 - %205 = icmp eq i8 %204, 45 - br i1 %205, label %206, label %207 +201: ; preds = %197 + %202 = getelementptr inbounds i8, ptr %.4246.ptr581, i64 -2 + %203 = load i8, ptr %202, align 1 + %204 = icmp eq i8 %203, 45 + br i1 %204, label %205, label %206 -206: ; preds = %202 +205: ; preds = %201 %.4246.add = add nuw nsw i64 %.4246.idx580, 1 br label %.outer375.backedge -207: ; preds = %198, %202, %.lr.ph582.split +206: ; preds = %197, %201, %.lr.ph582.split %.4246.add305 = add nuw nsw i64 %.4246.idx580, 1 - %208 = icmp slt i64 %.4246.add305, %1 - br i1 %208, label %.lr.ph582.split, label %.loopexit + %207 = icmp slt i64 %.4246.add305, %1 + br i1 %207, label %.lr.ph582.split, label %.loopexit -.loopexit: ; preds = %.outer375.backedge, %36, %173, %44, %.outer, %207, %.outer367, %.preheader361, %195, %.preheader, %.critedge351, %.critedge353, %11 - %.0260378 = phi ptr [ %0, %11 ], [ %.0260503, %.critedge353 ], [ %.0260503, %.critedge351 ], [ %.0260503, %.preheader ], [ %.0260503, %195 ], [ %.0260503, %.preheader361 ], [ %.0260503, %.outer367 ], [ %.0260503, %207 ], [ %.0260503, %.outer ], [ %.1261, %44 ], [ %.0260503, %173 ], [ %.0260503, %36 ], [ %.0260.ph.be, %.outer375.backedge ] - %.2249 = phi ptr [ %.0247, %11 ], [ %.5252.ph567, %.critedge353 ], [ %.5252.ph567, %.critedge351 ], [ %.5252.ph567, %.preheader ], [ %.5252.ph567, %195 ], [ %.5252.ph567, %.preheader361 ], [ %.5252.ph567, %.outer367 ], [ %.5252.ph567, %207 ], [ %.6253, %.outer ], [ %.1248.ph608, %44 ], [ %.5252.ph567, %173 ], [ %.3250, %36 ], [ %.1248.ph.be, %.outer375.backedge ] - %209 = getelementptr inbounds i8, ptr %0, i64 %1 - %210 = icmp ult ptr %.0260378, %209 - br i1 %210, label %211, label %212 +.loopexit: ; preds = %.outer375.backedge, %36, %173, %44, %.outer, %206, %.outer367, %.preheader361, %195, %.preheader, %.critedge351, %.critedge353, %11 + %.0260378 = phi ptr [ %0, %11 ], [ %.0260503, %.critedge353 ], [ %.0260503, %.critedge351 ], [ %.0260503, %.preheader ], [ %.0260503, %195 ], [ %.0260503, %.preheader361 ], [ %.0260503, %.outer367 ], [ %.0260503, %206 ], [ %.0260503, %.outer ], [ %.1261, %44 ], [ %.0260503, %173 ], [ %.0260503, %36 ], [ %.0260.ph.be, %.outer375.backedge ] + %.2249 = phi ptr [ %.0247, %11 ], [ %.5252.ph567, %.critedge353 ], [ %.5252.ph567, %.critedge351 ], [ %.5252.ph567, %.preheader ], [ %.5252.ph567, %195 ], [ %.5252.ph567, %.preheader361 ], [ %.5252.ph567, %.outer367 ], [ %.5252.ph567, %206 ], [ %.6253, %.outer ], [ %.1248.ph608, %44 ], [ %.5252.ph567, %173 ], [ %.3250, %36 ], [ %.1248.ph.be, %.outer375.backedge ] + %208 = getelementptr inbounds i8, ptr %0, i64 %1 + %209 = icmp ult ptr %.0260378, %208 + br i1 %209, label %210, label %211 -211: ; preds = %.loopexit +210: ; preds = %.loopexit store i8 0, ptr %.0260378, align 1 - br label %212 + br label %211 -212: ; preds = %211, %.loopexit +211: ; preds = %210, %.loopexit tail call void @_efree(ptr noundef %6) #28 %.not346 = icmp eq ptr %.2249, null - br i1 %.not346, label %214, label %213 + br i1 %.not346, label %213, label %212 -213: ; preds = %212 +212: ; preds = %211 tail call void @_efree(ptr noundef nonnull %.2249) #28 - br label %214 + br label %213 -214: ; preds = %213, %212 +213: ; preds = %212, %211 %.not347 = icmp eq ptr %.0228, null - br i1 %.not347, label %216, label %215 + br i1 %.not347, label %215, label %214 -215: ; preds = %214 +214: ; preds = %213 tail call void @_efree(ptr noundef nonnull %.0228) #28 - br label %216 + br label %215 -216: ; preds = %215, %214 - %217 = ptrtoint ptr %.0260378 to i64 - %218 = ptrtoint ptr %0 to i64 - %219 = sub i64 %217, %218 - ret i64 %219 +215: ; preds = %214, %213 + %216 = ptrtoint ptr %.0260378 to i64 + %217 = ptrtoint ptr %0 to i64 + %218 = sub i64 %216, %217 + ret i64 %218 } ; Function Attrs: nounwind uwtable diff --git a/bench/postgres/optimized/heapam.ll b/bench/postgres/optimized/heapam.ll index eb76d810de9..62744ce6d3a 100644 --- a/bench/postgres/optimized/heapam.ll +++ b/bench/postgres/optimized/heapam.ll @@ -11251,23 +11251,19 @@ define dso_local i32 @heap_index_delete_tuples(ptr noundef %0, ptr nocapture nou %18 = sext i32 %16 to i64 br label %.lr.ph10.i -.lr.ph10.i: ; preds = %.critedge.i, %.lr.ph10.preheader.i - %indvars.iv.i = phi i64 [ %18, %.lr.ph10.preheader.i ], [ %indvars.iv.next.i, %.critedge.i ] +.lr.ph10.i: ; preds = %.critedge.i.loopexit, %.lr.ph10.preheader.i + %indvars.iv.i = phi i64 [ %18, %.lr.ph10.preheader.i ], [ %indvars.iv.next.i, %.critedge.i.loopexit ] %19 = getelementptr %struct.TM_IndexDelete, ptr %.val141, i64 %indvars.iv.i %20 = load i64, ptr %19, align 2 %.sroa.4.0.extract.shift.i = lshr i64 %20, 32 %.sroa.4.0.extract.trunc.i = trunc i64 %.sroa.4.0.extract.shift.i to i16 - %.not3.i = icmp slt i64 %indvars.iv.i, %18 %21 = trunc nsw i64 %indvars.iv.i to i32 - br i1 %.not3.i, label %.critedge.i, label %.lr.ph.i - -.lr.ph.i: ; preds = %.lr.ph10.i %22 = trunc i64 %20 to i32 %23 = tail call i32 @llvm.fshl.i32(i32 %22, i32 %22, i32 16) br label %24 -24: ; preds = %38, %.lr.ph.i - %.04.i = phi i32 [ %21, %.lr.ph.i ], [ %25, %38 ] +24: ; preds = %38, %.lr.ph10.i + %.04.i = phi i32 [ %21, %.lr.ph10.i ], [ %25, %38 ] %25 = sub i32 %.04.i, %16 %26 = sext i32 %25 to i64 %27 = getelementptr %struct.TM_IndexDelete, ptr %.val141, i64 %26 @@ -11283,13 +11279,13 @@ define dso_local i32 @heap_index_delete_tuples(ptr noundef %0, ptr nocapture nou 33: ; preds = %24 %34 = icmp ult i32 %32, %23 - br i1 %34, label %.critedge.i, label %38 + br i1 %34, label %.critedge.i.loopexit, label %38 35: ; preds = %24 %36 = getelementptr i8, ptr %27, i64 4 %.val23.i.i = load i16, ptr %36, align 2 %37 = icmp ult i16 %.val23.i.i, %.sroa.4.0.extract.trunc.i - br i1 %37, label %.critedge.i, label %38 + br i1 %37, label %.critedge.i.loopexit, label %38 38: ; preds = %35, %33 %39 = sext i32 %.04.i to i64 @@ -11297,18 +11293,18 @@ define dso_local i32 @heap_index_delete_tuples(ptr noundef %0, ptr nocapture nou %41 = load i64, ptr %27, align 2 store i64 %41, ptr %40, align 2 %.not.i = icmp slt i32 %25, %16 - br i1 %.not.i, label %.critedge.i, label %24, !llvm.loop !34 + br i1 %.not.i, label %.critedge.i.loopexit, label %24, !llvm.loop !34 -.critedge.i: ; preds = %38, %35, %33, %.lr.ph10.i - %.0.lcssa.i = phi i32 [ %21, %.lr.ph10.i ], [ %25, %38 ], [ %.04.i, %33 ], [ %.04.i, %35 ] - %42 = sext i32 %.0.lcssa.i to i64 +.critedge.i.loopexit: ; preds = %33, %35, %38 + %.0.lcssa.i.ph = phi i32 [ %25, %38 ], [ %.04.i, %33 ], [ %.04.i, %35 ] + %42 = sext i32 %.0.lcssa.i.ph to i64 %43 = getelementptr %struct.TM_IndexDelete, ptr %.val141, i64 %42 store i64 %20, ptr %43, align 2 %indvars.iv.next.i = add nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i br i1 %exitcond.not.i, label %._crit_edge.i, label %.lr.ph10.i, !llvm.loop !35 -._crit_edge.i: ; preds = %.critedge.i, %14 +._crit_edge.i: ; preds = %.critedge.i.loopexit, %14 %indvars.iv.next14.i = add nuw nsw i64 %indvars.iv13.i, 1 %exitcond16.not.i = icmp eq i64 %indvars.iv.next14.i, 9 br i1 %exitcond16.not.i, label %index_delete_sort.exit, label %14, !llvm.loop !36 diff --git a/bench/pugixml/optimized/pugixml.cpp.ll b/bench/pugixml/optimized/pugixml.cpp.ll index 95f27c2a7f3..7ed020a97b2 100644 --- a/bench/pugixml/optimized/pugixml.cpp.ll +++ b/bench/pugixml/optimized/pugixml.cpp.ll @@ -34684,31 +34684,30 @@ while.end: ; preds = %if.end, %entry %or.cond.i = select i1 %cmp.i20, i1 true, i1 %cmp1.not5.i br i1 %or.cond.i, label %_ZN4pugi4impl12_GLOBAL__N_114insertion_sortINS_10xpath_nodeENS1_25document_order_comparatorEEEvPT_S6_RKT0_.exit, label %for.body.i21 -for.body.i21: ; preds = %while.end, %while.end.i - %it.06.i = phi ptr [ %it.0.i, %while.end.i ], [ %it.04.i, %while.end ] +for.body.i21: ; preds = %while.end, %while.end.i.loopexit + %it.06.i = phi ptr [ %it.0.i, %while.end.i.loopexit ], [ %it.04.i, %while.end ] call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %val.i, ptr noundef nonnull align 8 dereferenceable(16) %it.06.i, i64 16, i1 false) - %cmp21.i = icmp ugt ptr %it.06.i, %begin.addr.0.lcssa - br i1 %cmp21.i, label %land.rhs.i, label %while.end.i + br label %land.rhs.i land.rhs.i: ; preds = %for.body.i21, %while.body.i23 %hole.02.i = phi ptr [ %add.ptr3.i, %while.body.i23 ], [ %it.06.i, %for.body.i21 ] %add.ptr3.i = getelementptr inbounds i8, ptr %hole.02.i, i64 -16 %call.i22 = call fastcc noundef zeroext i1 @_ZNK4pugi4impl12_GLOBAL__N_125document_order_comparatorclERKNS_10xpath_nodeES5_(ptr noundef nonnull align 8 dereferenceable(16) %val.i, ptr noundef nonnull align 8 dereferenceable(16) %add.ptr3.i) - br i1 %call.i22, label %while.body.i23, label %while.end.i + br i1 %call.i22, label %while.body.i23, label %while.end.i.loopexit while.body.i23: ; preds = %land.rhs.i tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %hole.02.i, ptr noundef nonnull align 8 dereferenceable(16) %add.ptr3.i, i64 16, i1 false) %cmp2.i = icmp ugt ptr %add.ptr3.i, %begin.addr.0.lcssa - br i1 %cmp2.i, label %land.rhs.i, label %while.end.i, !llvm.loop !335 + br i1 %cmp2.i, label %land.rhs.i, label %while.end.i.loopexit, !llvm.loop !335 -while.end.i: ; preds = %while.body.i23, %land.rhs.i, %for.body.i21 - %hole.0.lcssa.i = phi ptr [ %it.06.i, %for.body.i21 ], [ %hole.02.i, %land.rhs.i ], [ %add.ptr3.i, %while.body.i23 ] - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %hole.0.lcssa.i, ptr noundef nonnull align 8 dereferenceable(16) %val.i, i64 16, i1 false) +while.end.i.loopexit: ; preds = %land.rhs.i, %while.body.i23 + %hole.0.lcssa.i.ph = phi ptr [ %hole.02.i, %land.rhs.i ], [ %add.ptr3.i, %while.body.i23 ] + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %hole.0.lcssa.i.ph, ptr noundef nonnull align 8 dereferenceable(16) %val.i, i64 16, i1 false) %it.0.i = getelementptr inbounds i8, ptr %it.06.i, i64 16 %cmp1.not.i = icmp eq ptr %it.0.i, %end.addr.0.lcssa br i1 %cmp1.not.i, label %_ZN4pugi4impl12_GLOBAL__N_114insertion_sortINS_10xpath_nodeENS1_25document_order_comparatorEEEvPT_S6_RKT0_.exit, label %for.body.i21, !llvm.loop !336 -_ZN4pugi4impl12_GLOBAL__N_114insertion_sortINS_10xpath_nodeENS1_25document_order_comparatorEEEvPT_S6_RKT0_.exit: ; preds = %while.end.i, %while.end +_ZN4pugi4impl12_GLOBAL__N_114insertion_sortINS_10xpath_nodeENS1_25document_order_comparatorEEEvPT_S6_RKT0_.exit: ; preds = %while.end.i.loopexit, %while.end call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %val.i) ret void } diff --git a/bench/quantlib/optimized/fdsimpleextoustorageengine.ll b/bench/quantlib/optimized/fdsimpleextoustorageengine.ll index dae806642c9..699d2b20f0f 100644 --- a/bench/quantlib/optimized/fdsimpleextoustorageengine.ll +++ b/bench/quantlib/optimized/fdsimpleextoustorageengine.ll @@ -11351,7 +11351,8 @@ if.else41: ; preds = %if.else while.cond1.preheader.i.i: ; preds = %if.else41 %tobool2.not7.i.i = icmp eq ptr %5, %3 - br i1 %tobool2.not7.i.i, label %_ZSt4copyISt23_Rb_tree_const_iteratorIdEPdET0_T_S4_S3_.exit30, label %while.body3.i.i + tail call void @llvm.assume(i1 %tobool2.not7.i.i) + br label %_ZSt4copyISt23_Rb_tree_const_iteratorIdEPdET0_T_S4_S3_.exit30 while.body.i.i19: ; preds = %if.else41, %while.body.i.i19 %__n.addr.013.i.i = phi i64 [ %dec.i.i, %while.body.i.i19 ], [ %sub.ptr.div.i10, %if.else41 ] @@ -11361,17 +11362,8 @@ while.body.i.i19: ; preds = %if.else41, %while.b %tobool.not.i.i = icmp eq i64 %dec.i.i, 0 br i1 %tobool.not.i.i, label %_ZSt7advanceISt23_Rb_tree_const_iteratorIdEmEvRT_T0_.exit, label %while.body.i.i19, !llvm.loop !245 -while.body3.i.i: ; preds = %while.cond1.preheader.i.i, %while.body3.i.i - %__n.addr.19.i.i = phi i64 [ %inc.i.i18, %while.body3.i.i ], [ %sub.ptr.div.i10, %while.cond1.preheader.i.i ] - %call.i468.i.i = phi ptr [ %call.i4.i.i, %while.body3.i.i ], [ %__first.coerce, %while.cond1.preheader.i.i ] - %inc.i.i18 = add nsw i64 %__n.addr.19.i.i, 1 - %call.i4.i.i = tail call noundef ptr @_ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base(ptr noundef %call.i468.i.i) #34 - %tobool2.not.i.i = icmp eq i64 %inc.i.i18, 0 - br i1 %tobool2.not.i.i, label %_ZSt7advanceISt23_Rb_tree_const_iteratorIdEmEvRT_T0_.exit, label %while.body3.i.i, !llvm.loop !246 - -_ZSt7advanceISt23_Rb_tree_const_iteratorIdEmEvRT_T0_.exit: ; preds = %while.body3.i.i, %while.body.i.i19 - %__mid.sroa.0.0 = phi ptr [ %call.i.i.i20, %while.body.i.i19 ], [ %call.i4.i.i, %while.body3.i.i ] - %cmp.i.not5.i.i.i.i.i21 = icmp eq ptr %__first.coerce, %__mid.sroa.0.0 +_ZSt7advanceISt23_Rb_tree_const_iteratorIdEmEvRT_T0_.exit: ; preds = %while.body.i.i19 + %cmp.i.not5.i.i.i.i.i21 = icmp eq ptr %__first.coerce, %call.i.i.i20 br i1 %cmp.i.not5.i.i.i.i.i21, label %_ZSt4copyISt23_Rb_tree_const_iteratorIdEPdET0_T_S4_S3_.exit30, label %for.body.i.i.i.i.i22 for.body.i.i.i.i.i22: ; preds = %_ZSt7advanceISt23_Rb_tree_const_iteratorIdEmEvRT_T0_.exit, %for.body.i.i.i.i.i22 @@ -11382,11 +11374,11 @@ for.body.i.i.i.i.i22: ; preds = %_ZSt7advanceISt23_R store double %8, ptr %__result.addr.07.i.i.i.i.i23, align 8, !tbaa !81 %incdec.ptr.i.i.i.i.i26 = getelementptr inbounds nuw i8, ptr %__result.addr.07.i.i.i.i.i23, i64 8 %call.i.i.i.i.i.i27 = tail call noundef ptr @_ZSt18_Rb_tree_incrementPKSt18_Rb_tree_node_base(ptr noundef %__first.sroa.0.06.i.i.i.i.i24) #34 - %cmp.i.not.i.i.i.i.i28 = icmp eq ptr %call.i.i.i.i.i.i27, %__mid.sroa.0.0 + %cmp.i.not.i.i.i.i.i28 = icmp eq ptr %call.i.i.i.i.i.i27, %call.i.i.i20 br i1 %cmp.i.not.i.i.i.i.i28, label %_ZSt4copyISt23_Rb_tree_const_iteratorIdEPdET0_T_S4_S3_.exit30, label %for.body.i.i.i.i.i22, !llvm.loop !244 _ZSt4copyISt23_Rb_tree_const_iteratorIdEPdET0_T_S4_S3_.exit30: ; preds = %for.body.i.i.i.i.i22, %while.cond1.preheader.i.i, %_ZSt7advanceISt23_Rb_tree_const_iteratorIdEmEvRT_T0_.exit - %__mid.sroa.0.057 = phi ptr [ %__mid.sroa.0.0, %_ZSt7advanceISt23_Rb_tree_const_iteratorIdEmEvRT_T0_.exit ], [ %__first.coerce, %while.cond1.preheader.i.i ], [ %__mid.sroa.0.0, %for.body.i.i.i.i.i22 ] + %__mid.sroa.0.057 = phi ptr [ %call.i.i.i20, %_ZSt7advanceISt23_Rb_tree_const_iteratorIdEmEvRT_T0_.exit ], [ %__first.coerce, %while.cond1.preheader.i.i ], [ %call.i.i.i20, %for.body.i.i.i.i.i22 ] %cmp.i.not5.i.i.i.i.i.i.i.i = icmp eq ptr %__mid.sroa.0.057, %__last.coerce br i1 %cmp.i.not5.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_copy_aISt23_Rb_tree_const_iteratorIdEPddET0_T_S4_S3_RSaIT1_E.exit, label %for.body.i.i.i.i.i.i.i.i @@ -11410,9 +11402,6 @@ if.end61: ; preds = %invoke.cont.i, %_ZS ret void } -; Function Attrs: mustprogress nofree nounwind willreturn memory(read) -declare noundef ptr @_ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base(ptr noundef) local_unnamed_addr #19 - ; Function Attrs: inlinehint mustprogress nounwind uwtable define linkonce_odr void @_ZN5boost6detail17sp_counted_impl_pIN8QuantLib18Predefined1dMesherEED0Ev(ptr noundef nonnull align 8 dereferenceable(24) %this) unnamed_addr #3 comdat align 2 { entry: @@ -11949,7 +11938,7 @@ while.body.i.i.i.i.i: ; preds = %if.else11.i.i.i.i, %__x.addr.1.in.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %__x.addr.07.i.i.i.i.i, i64 %__x.addr.1.in.v.i.i.i.i.i %__x.addr.1.i.i.i.i.i = load ptr, ptr %__x.addr.1.in.i.i.i.i.i, align 8, !tbaa !18 %cmp.not.i.i.i.i.i = icmp eq ptr %__x.addr.1.i.i.i.i.i, null - br i1 %cmp.not.i.i.i.i.i, label %_ZNSt8_Rb_treeIN5boost10shared_ptrIN8QuantLib10ObservableEEES4_St9_IdentityIS4_ESt4lessIS4_ESaIS4_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS4_EPSt18_Rb_tree_node_baseRKS4_.exit.i.i.i.i, label %while.body.i.i.i.i.i, !llvm.loop !247 + br i1 %cmp.not.i.i.i.i.i, label %_ZNSt8_Rb_treeIN5boost10shared_ptrIN8QuantLib10ObservableEEES4_St9_IdentityIS4_ESt4lessIS4_ESaIS4_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS4_EPSt18_Rb_tree_node_baseRKS4_.exit.i.i.i.i, label %while.body.i.i.i.i.i, !llvm.loop !246 _ZNSt8_Rb_treeIN5boost10shared_ptrIN8QuantLib10ObservableEEES4_St9_IdentityIS4_ESt4lessIS4_ESaIS4_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS4_EPSt18_Rb_tree_node_baseRKS4_.exit.i.i.i.i: ; preds = %while.body.i.i.i.i.i, %if.else11.i.i.i.i %__y.addr.0.lcssa.i.i.i.i.i = phi ptr [ %__x.044.i.i.i.i, %if.else11.i.i.i.i ], [ %__y.addr.1.i.i.i.i.i, %while.body.i.i.i.i.i ] @@ -11967,7 +11956,7 @@ while.body.i26.i.i.i.i: ; preds = %_ZNSt8_Rb_treeIN5bo %__x.addr.1.in.i33.i.i.i.i = getelementptr inbounds nuw i8, ptr %__x.addr.07.i27.i.i.i.i, i64 %__x.addr.1.in.v.i32.i.i.i.i %__x.addr.1.i34.i.i.i.i = load ptr, ptr %__x.addr.1.in.i33.i.i.i.i, align 8, !tbaa !18 %cmp.not.i35.i.i.i.i = icmp eq ptr %__x.addr.1.i34.i.i.i.i, null - br i1 %cmp.not.i35.i.i.i.i, label %_ZNSt3setIN5boost10shared_ptrIN8QuantLib10ObservableEEESt4lessIS4_ESaIS4_EE5eraseERKS4_.exit.i, label %while.body.i26.i.i.i.i, !llvm.loop !248 + br i1 %cmp.not.i35.i.i.i.i, label %_ZNSt3setIN5boost10shared_ptrIN8QuantLib10ObservableEEESt4lessIS4_ESaIS4_EE5eraseERKS4_.exit.i, label %while.body.i26.i.i.i.i, !llvm.loop !247 if.end18.i.i.i.i: ; preds = %if.else.i.i.i.i, %while.body.i.i.i.i %.sink.i.i.i.i = phi i64 [ 24, %while.body.i.i.i.i ], [ 16, %if.else.i.i.i.i ] @@ -11975,7 +11964,7 @@ if.end18.i.i.i.i: ; preds = %if.else.i.i.i.i, %w %_M_left.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %__x.044.i.i.i.i, i64 %.sink.i.i.i.i %__x.0.i.i.i.i = load ptr, ptr %_M_left.i.i.i.i.i, align 8, !tbaa !18 %cmp.not.i.i.i.i = icmp eq ptr %__x.0.i.i.i.i, null - br i1 %cmp.not.i.i.i.i, label %_ZNSt3setIN5boost10shared_ptrIN8QuantLib10ObservableEEESt4lessIS4_ESaIS4_EE5eraseERKS4_.exit.i, label %while.body.i.i.i.i, !llvm.loop !249 + br i1 %cmp.not.i.i.i.i, label %_ZNSt3setIN5boost10shared_ptrIN8QuantLib10ObservableEEESt4lessIS4_ESaIS4_EE5eraseERKS4_.exit.i, label %while.body.i.i.i.i, !llvm.loop !248 _ZNSt3setIN5boost10shared_ptrIN8QuantLib10ObservableEEESt4lessIS4_ESaIS4_EE5eraseERKS4_.exit.i: ; preds = %if.end18.i.i.i.i, %while.body.i26.i.i.i.i, %_ZNSt8_Rb_treeIN5boost10shared_ptrIN8QuantLib10ObservableEEES4_St9_IdentityIS4_ESt4lessIS4_ESaIS4_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS4_EPSt18_Rb_tree_node_baseRKS4_.exit.i.i.i.i, %if.end.i %retval.sroa.0.0.i.i.i.i = phi ptr [ %__y.addr.0.lcssa.i.i.i.i.i, %_ZNSt8_Rb_treeIN5boost10shared_ptrIN8QuantLib10ObservableEEES4_St9_IdentityIS4_ESt4lessIS4_ESaIS4_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS4_EPSt18_Rb_tree_node_baseRKS4_.exit.i.i.i.i ], [ %add.ptr.i.i.i.i.i, %if.end.i ], [ %__y.addr.0.lcssa.i.i.i.i.i, %while.body.i26.i.i.i.i ], [ %__y.1.i.i.i.i, %if.end18.i.i.i.i ] @@ -12085,7 +12074,7 @@ _ZN5boost10shared_ptrIN8QuantLib32ExtendedOrnsteinUhlenbeckProcessEEaSEOS3_.exit _ZN5boost10shared_ptrIN8QuantLib32ExtendedOrnsteinUhlenbeckProcessEEaSEOS3_.exit: ; preds = %_ZN5boost10shared_ptrIN8QuantLib32ExtendedOrnsteinUhlenbeckProcessEEaSEOS3_.exitthread-pre-split, %if.end %27 = phi ptr [ %.pr, %_ZN5boost10shared_ptrIN8QuantLib32ExtendedOrnsteinUhlenbeckProcessEEaSEOS3_.exitthread-pre-split ], [ %18, %if.end ] - store i8 %storedv, ptr %isObserver_, align 8, !tbaa !250 + store i8 %storedv, ptr %isObserver_, align 8, !tbaa !249 %cmp.i14.not55 = icmp ne ptr %27, null %brmerge.not = and i1 %registerAsObserver, %cmp.i14.not55 br i1 %brmerge.not, label %if.then21, label %if.end29 @@ -12556,7 +12545,7 @@ _ZNSt8_Rb_treeIN5boost10shared_ptrIN8QuantLib10ObservableEEES4_St9_IdentityIS4_E %dec.i = add i64 %11, -1 store i64 %dec.i, ptr %_M_node_count.i, align 8, !tbaa !27 %cmp.i3.not = icmp eq ptr %call.i, %__last.coerce - br i1 %cmp.i3.not, label %if.end, label %while.body, !llvm.loop !252 + br i1 %cmp.i3.not, label %if.end, label %while.body, !llvm.loop !251 if.end: ; preds = %_ZNSt8_Rb_treeIN5boost10shared_ptrIN8QuantLib10ObservableEEES4_St9_IdentityIS4_ESt4lessIS4_ESaIS4_EE12_M_erase_auxESt23_Rb_tree_const_iteratorIS4_E.exit, %if.else, %_ZNSt8_Rb_treeIN5boost10shared_ptrIN8QuantLib10ObservableEEES4_St9_IdentityIS4_ESt4lessIS4_ESaIS4_EE5clearEv.exit ret void @@ -12965,7 +12954,6 @@ attributes #34 = { nounwind willreturn memory(read) } !246 = distinct !{!246, !108} !247 = distinct !{!247, !108} !248 = distinct !{!248, !108} -!249 = distinct !{!249, !108} -!250 = !{!251, !35, i64 128} -!251 = !{!"_ZTSN8QuantLib6HandleINS_32ExtendedOrnsteinUhlenbeckProcessEE4LinkE", !52, i64 0, !53, i64 56, !45, i64 112, !35, i64 128} -!252 = distinct !{!252, !108} +!249 = !{!250, !35, i64 128} +!250 = !{!"_ZTSN8QuantLib6HandleINS_32ExtendedOrnsteinUhlenbeckProcessEE4LinkE", !52, i64 0, !53, i64 56, !45, i64 112, !35, i64 128} +!251 = distinct !{!251, !108} diff --git a/bench/quantlib/optimized/zabr.ll b/bench/quantlib/optimized/zabr.ll index 2b5a8d3916b..639b306c472 100644 --- a/bench/quantlib/optimized/zabr.ll +++ b/bench/quantlib/optimized/zabr.ll @@ -2111,7 +2111,7 @@ for.cond.cleanup: ; preds = %for.cond %sub.ptr.rhs.cast.i = ptrtoint ptr %0 to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i %cmp.i.i = icmp ugt i64 %sub.ptr.sub.i, 9223372036854775800 - br i1 %cmp.i.i, label %if.then.i.i65, label %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i + br i1 %cmp.i.i, label %if.then.i.i65, label %if.then.i.i.i.i.i if.then.i.i65: ; preds = %for.cond.cleanup invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.18) #30 @@ -2120,25 +2120,21 @@ if.then.i.i65: ; preds = %for.cond.cleanup .noexc: ; preds = %if.then.i.i65 unreachable -_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i: ; preds = %for.cond.cleanup - %cmp.not.i.i.i.i = icmp eq ptr %3, %0 - br i1 %cmp.not.i.i.i.i, label %invoke.cont111.invoke.cont122_crit_edge, label %if.then.i.i.i.i.i - -if.then.i.i.i.i.i: ; preds = %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i +if.then.i.i.i.i.i: ; preds = %for.cond.cleanup %call5.i.i.i.i2.i.i66 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %sub.ptr.sub.i) #32 to label %call5.i.i.i.i2.i.i.noexc unwind label %lpad104 call5.i.i.i.i2.i.i.noexc: ; preds = %if.then.i.i.i.i.i - %add.ptr.i.i.i = getelementptr i8, ptr %call5.i.i.i.i2.i.i66, i64 %sub.ptr.sub.i store double 0.000000e+00, ptr %call5.i.i.i.i2.i.i66, align 8, !tbaa !32 %incdec.ptr.i.i.i.i.i = getelementptr i8, ptr %call5.i.i.i.i2.i.i66, i64 8 %cmp.i.i.i.i.i.i.i = icmp eq i64 %sub.ptr.sub.i, 8 - br i1 %cmp.i.i.i.i.i.i.i, label %if.then.i.i.i.i.i111, label %if.end.i.i.i.i.i.i.i + br i1 %cmp.i.i.i.i.i.i.i, label %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i109, label %if.end.i.i.i.i.i.i.i if.end.i.i.i.i.i.i.i: ; preds = %call5.i.i.i.i2.i.i.noexc + %add.ptr.i.i.i = getelementptr i8, ptr %call5.i.i.i.i2.i.i66, i64 %sub.ptr.sub.i %28 = add nsw i64 %sub.ptr.sub.i, -8 tail call void @llvm.memset.p0.i64(ptr align 8 %incdec.ptr.i.i.i.i.i, i8 0, i64 %28, i1 false), !tbaa !32 - br label %if.then.i.i.i.i.i111 + br label %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i109 do.body40: ; preds = %for.cond %29 = load double, ptr %i.sroa.0.0, align 8, !tbaa !32 @@ -2324,11 +2320,15 @@ ehcleanup96: ; preds = %_ZNKSt7__cxx1112bas call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %_ql_msg_stream48) #28 br label %eh.resume -if.then.i.i.i.i.i111: ; preds = %call5.i.i.i.i2.i.i.noexc, %if.end.i.i.i.i.i.i.i - %__first.addr.0.i.i.i.i.i.ph = phi ptr [ %add.ptr.i.i.i, %if.end.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i.i.i, %call5.i.i.i.i2.i.i.noexc ] +_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i109: ; preds = %call5.i.i.i.i2.i.i.noexc, %if.end.i.i.i.i.i.i.i + %__first.addr.0.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %call5.i.i.i.i2.i.i.noexc ], [ %add.ptr.i.i.i, %if.end.i.i.i.i.i.i.i ] tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %agg.result, i8 0, i64 24, i1 false) + %cmp.not.i.i.i.i110 = icmp eq ptr %3, %0 + br i1 %cmp.not.i.i.i.i110, label %invoke.cont111.invoke.cont122_crit_edge, label %if.then.i.i.i.i.i111 + +if.then.i.i.i.i.i111: ; preds = %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i109 %call5.i.i.i.i2.i.i123 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %sub.ptr.sub.i) #32 - to label %call5.i.i.i.i2.i.i.noexc122 unwind label %ehcleanup245.if.then.i.i.i208_crit_edge + to label %call5.i.i.i.i2.i.i.noexc122 unwind label %ehcleanup245 call5.i.i.i.i2.i.i.noexc122: ; preds = %if.then.i.i.i.i.i111 store ptr %call5.i.i.i.i2.i.i123, ptr %agg.result, align 8, !tbaa !29 @@ -2337,15 +2337,14 @@ call5.i.i.i.i2.i.i.noexc122: ; preds = %if.then.i.i.i.i.i11 store ptr %add.ptr.i.i.i112, ptr %_M_end_of_storage.i.i.i113, align 8, !tbaa !31 store double 0.000000e+00, ptr %call5.i.i.i.i2.i.i123, align 8, !tbaa !32 %incdec.ptr.i.i.i.i.i114 = getelementptr i8, ptr %call5.i.i.i.i2.i.i123, i64 8 - %cmp.i.i.i.i.i.i.i115 = icmp eq i64 %sub.ptr.sub.i, 8 - br i1 %cmp.i.i.i.i.i.i.i115, label %for.body.lr.ph.i, label %if.end.i.i.i.i.i.i.i116 + br i1 %cmp.i.i.i.i.i.i.i, label %for.body.lr.ph.i, label %if.end.i.i.i.i.i.i.i116 if.end.i.i.i.i.i.i.i116: ; preds = %call5.i.i.i.i2.i.i.noexc122 %54 = add nsw i64 %sub.ptr.sub.i, -8 tail call void @llvm.memset.p0.i64(ptr align 8 %incdec.ptr.i.i.i.i.i114, i8 0, i64 %54, i1 false), !tbaa !32 br label %for.body.lr.ph.i -invoke.cont111.invoke.cont122_crit_edge: ; preds = %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i +invoke.cont111.invoke.cont122_crit_edge: ; preds = %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i109 %gamma_.phi.trans.insert = getelementptr inbounds nuw i8, ptr %this, i64 48 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %agg.result, i8 0, i64 24, i1 false) %.pre = load double, ptr %gamma_.phi.trans.insert, align 8, !tbaa !28 @@ -2353,8 +2352,8 @@ invoke.cont111.invoke.cont122_crit_edge: ; preds = %_ZNSt6vectorIdSaIdE for.body.lr.ph.i: ; preds = %if.end.i.i.i.i.i.i.i116, %call5.i.i.i.i2.i.i.noexc122 %__first.addr.0.i.i.i.i.i117.ph = phi ptr [ %add.ptr.i.i.i112, %if.end.i.i.i.i.i.i.i116 ], [ %incdec.ptr.i.i.i.i.i114, %call5.i.i.i.i2.i.i.noexc122 ] - %_M_finish.i.i7.i118343 = getelementptr inbounds nuw i8, ptr %agg.result, i64 8 - store ptr %__first.addr.0.i.i.i.i.i117.ph, ptr %_M_finish.i.i7.i118343, align 8, !tbaa !33 + %_M_finish.i.i7.i118327 = getelementptr inbounds nuw i8, ptr %agg.result, i64 8 + store ptr %__first.addr.0.i.i.i.i.i117.ph, ptr %_M_finish.i.i7.i118327, align 8, !tbaa !33 %forward_4.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 8 %alpha_19.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 16 %gamma_20.i.i.i = getelementptr inbounds nuw i8, ptr %this, i64 48 @@ -2442,9 +2441,6 @@ cond.end.i.i.i: ; preds = %cond.false.i.i.i, % invoke.cont122: ; preds = %"_ZZNK8QuantLib9ZabrModel1xERKSt6vectorIdSaIdEEENK3$_1clEd.exit.i", %for.body.i.us, %invoke.cont111.invoke.cont122_crit_edge %63 = phi ptr [ null, %invoke.cont111.invoke.cont122_crit_edge ], [ %call5.i.i.i.i2.i.i123, %for.body.i.us ], [ %call5.i.i.i.i2.i.i123, %"_ZZNK8QuantLib9ZabrModel1xERKSt6vectorIdSaIdEEENK3$_1clEd.exit.i" ] %64 = phi ptr [ null, %invoke.cont111.invoke.cont122_crit_edge ], [ %add.ptr.i.i.i112, %for.body.i.us ], [ %add.ptr.i.i.i112, %"_ZZNK8QuantLib9ZabrModel1xERKSt6vectorIdSaIdEEENK3$_1clEd.exit.i" ] - %y.sroa.30.0331348 = phi ptr [ null, %invoke.cont111.invoke.cont122_crit_edge ], [ %add.ptr.i.i.i, %for.body.i.us ], [ %add.ptr.i.i.i, %"_ZZNK8QuantLib9ZabrModel1xERKSt6vectorIdSaIdEEENK3$_1clEd.exit.i" ] - %y.sroa.0.0335346 = phi ptr [ null, %invoke.cont111.invoke.cont122_crit_edge ], [ %call5.i.i.i.i2.i.i66, %for.body.i.us ], [ %call5.i.i.i.i2.i.i66, %"_ZZNK8QuantLib9ZabrModel1xERKSt6vectorIdSaIdEEENK3$_1clEd.exit.i" ] - %__first.addr.0.i.i.i.i.i337344 = phi ptr [ null, %invoke.cont111.invoke.cont122_crit_edge ], [ %__first.addr.0.i.i.i.i.i.ph, %for.body.i.us ], [ %__first.addr.0.i.i.i.i.i.ph, %"_ZZNK8QuantLib9ZabrModel1xERKSt6vectorIdSaIdEEENK3$_1clEd.exit.i" ] %65 = phi double [ %.pre, %invoke.cont111.invoke.cont122_crit_edge ], [ %60, %for.body.i.us ], [ %60, %"_ZZNK8QuantLib9ZabrModel1xERKSt6vectorIdSaIdEEENK3$_1clEd.exit.i" ] %gamma_ = getelementptr inbounds nuw i8, ptr %this, i64 48 %cmp.i127 = fcmp oeq double %65, 1.000000e+00 @@ -2469,12 +2465,12 @@ if.end5.i: ; preds = %if.end.i br i1 %68, label %for.cond128.preheader, label %if.else for.cond128.preheader: ; preds = %if.then3.i, %if.end5.i, %invoke.cont122 - %cmp130313.not = icmp eq ptr %__first.addr.0.i.i.i.i.i337344, %y.sroa.0.0335346 - br i1 %cmp130313.not, label %nrvo.skipdtor, label %for.body132.lr.ph + %cmp130313.not = icmp eq ptr %__first.addr.0.i.i.i.i.i, %call5.i.i.i.i2.i.i66 + br i1 %cmp130313.not, label %_ZNSt6vectorIdSaIdEED2Ev.exit, label %for.body132.lr.ph for.body132.lr.ph: ; preds = %for.cond128.preheader - %sub.ptr.lhs.cast.i129 = ptrtoint ptr %__first.addr.0.i.i.i.i.i337344 to i64 - %sub.ptr.rhs.cast.i130 = ptrtoint ptr %y.sroa.0.0335346 to i64 + %sub.ptr.lhs.cast.i129 = ptrtoint ptr %__first.addr.0.i.i.i.i.i to i64 + %sub.ptr.rhs.cast.i130 = ptrtoint ptr %call5.i.i.i.i2.i.i66 to i64 %sub.ptr.sub.i131 = sub i64 %sub.ptr.lhs.cast.i129, %sub.ptr.rhs.cast.i130 %sub.ptr.div.i132 = ashr exact i64 %sub.ptr.sub.i131, 3 %nu_ = getelementptr inbounds nuw i8, ptr %this, i64 32 @@ -2497,7 +2493,7 @@ lpad104: ; preds = %if.then.i.i.i.i.i, for.body132: ; preds = %for.body132.lr.ph, %for.body132 %m.0314 = phi i64 [ 0, %for.body132.lr.ph ], [ %inc, %for.body132 ] - %add.ptr.i133 = getelementptr inbounds nuw double, ptr %y.sroa.0.0335346, i64 %m.0314 + %add.ptr.i133 = getelementptr inbounds nuw double, ptr %call5.i.i.i.i2.i.i66, i64 %m.0314 %72 = load double, ptr %add.ptr.i133, align 8, !tbaa !32 %mul135 = fmul double %mul, %72 %73 = tail call double @llvm.fmuladd.f64(double %mul135, double %72, double 1.000000e+00) @@ -2513,11 +2509,11 @@ for.body132: ; preds = %for.body132.lr.ph, store double %div152, ptr %add.ptr.i142, align 8, !tbaa !32 %inc = add nuw i64 %m.0314, 1 %exitcond.not = icmp eq i64 %inc, %umax - br i1 %exitcond.not, label %if.then.i.i.i194, label %for.body132, !llvm.loop !81 + br i1 %exitcond.not, label %_ZNSt6vectorIdSaIdEED2Ev.exit, label %for.body132, !llvm.loop !81 if.else: ; preds = %if.end5.i, %if.then3.i - %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %__first.addr.0.i.i.i.i.i337344 to i64 - %sub.ptr.rhs.cast.i.i.i.i.i = ptrtoint ptr %y.sroa.0.0335346 to i64 + %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %__first.addr.0.i.i.i.i.i to i64 + %sub.ptr.rhs.cast.i.i.i.i.i = ptrtoint ptr %call5.i.i.i.i2.i.i66 to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i.i.i.i.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %cmp6.i.i = icmp sgt i64 %sub.ptr.div.i.i.i.i.i, 0 @@ -2525,7 +2521,7 @@ if.else: ; preds = %if.end5.i, %if.then while.body.i.i: ; preds = %if.else, %while.body.i.i %__len.08.i.i = phi i64 [ %__len.1.i.i, %while.body.i.i ], [ %sub.ptr.div.i.i.i.i.i, %if.else ] - %__first.sroa.0.07.i.i = phi ptr [ %__first.sroa.0.1.i.i, %while.body.i.i ], [ %y.sroa.0.0335346, %if.else ] + %__first.sroa.0.07.i.i = phi ptr [ %__first.sroa.0.1.i.i, %while.body.i.i ], [ %call5.i.i.i.i2.i.i66, %if.else ] %shr.i.i = lshr i64 %__len.08.i.i, 1 %add.ptr.i.i.i.i.i = getelementptr inbounds double, ptr %__first.sroa.0.07.i.i, i64 %shr.i.i %77 = load double, ptr %add.ptr.i.i.i.i.i, align 8, !tbaa !32 @@ -2539,7 +2535,7 @@ while.body.i.i: ; preds = %if.else, %while.bod br i1 %cmp.i.i147, label %while.body.i.i, label %invoke.cont170, !llvm.loop !82 invoke.cont170: ; preds = %while.body.i.i - %cmp179.not = icmp eq ptr %__first.sroa.0.1.i.i, %y.sroa.0.0335346 + %cmp179.not = icmp eq ptr %__first.sroa.0.1.i.i, %call5.i.i.i.i2.i.i66 br i1 %cmp179.not, label %if.end188, label %if.then180 if.then180: ; preds = %invoke.cont170 @@ -2547,7 +2543,7 @@ if.then180: ; preds = %invoke.cont170 %sub.ptr.sub.i150 = sub i64 %sub.ptr.lhs.cast.i148, %sub.ptr.rhs.cast.i.i.i.i.i %sub.ptr.div.i151 = ashr exact i64 %sub.ptr.sub.i150, 3 %sub181 = add nsw i64 %sub.ptr.div.i151, -1 - %add.ptr.i152 = getelementptr inbounds nuw double, ptr %y.sroa.0.0335346, i64 %sub181 + %add.ptr.i152 = getelementptr inbounds nuw double, ptr %call5.i.i.i.i2.i.i66, i64 %sub181 %79 = load double, ptr %add.ptr.i152, align 8, !tbaa !32 %.fr295 = freeze double %79 %cmp.i153 = fcmp oeq double %.fr295, 0.000000e+00 @@ -2585,8 +2581,8 @@ for.body197: ; preds = %if.end188, %for.con %cmp199 = icmp eq i32 %indvars322, -1 %conv = sext i1 %cmp199 to i64 %add = add nsw i64 %spec.select44, %conv - %sext326 = shl i64 %add, 32 - %87 = ashr exact i64 %sext326, 32 + %sext325 = shl i64 %add, 32 + %87 = ashr exact i64 %sext325, 32 br label %for.cond201 for.cond201: ; preds = %_ZNSt14_Function_baseD2Ev.exit, %for.body197 @@ -2597,7 +2593,7 @@ for.cond201: ; preds = %_ZNSt14_Function_ba cond.true: ; preds = %for.cond201 %cmp203 = icmp sgt i64 %indvars.iv319, -1 - br i1 %cmp203, label %for.body209, label %nrvo.skipdtor + br i1 %cmp203, label %for.body209, label %_ZNSt6vectorIdSaIdEED2Ev.exit cond.end: ; preds = %for.cond201 %cmp206 = icmp slt i64 %indvars.iv319, %86 @@ -2606,7 +2602,7 @@ cond.end: ; preds = %for.cond201 for.cond.cleanup208: ; preds = %cond.end %indvars.iv.next = add nsw i64 %indvars.iv, -2 %cmp195 = icmp sgt i32 %indvars322, 0 - br i1 %cmp195, label %for.body197, label %nrvo.skipdtor, !llvm.loop !83 + br i1 %cmp195, label %for.body197, label %_ZNSt6vectorIdSaIdEED2Ev.exit, !llvm.loop !83 for.body209: ; preds = %cond.true, %cond.end call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp210) #28 @@ -2614,7 +2610,7 @@ for.body209: ; preds = %cond.true, %cond.en store i64 %81, ptr %ref.tmp210, align 8, !tbaa !34 store ptr @"_ZNSt17_Function_handlerIFdddEZNK8QuantLib9ZabrModel1xERKSt6vectorIdSaIdEEE3$_0E9_M_invokeERKSt9_Any_dataOdSD_", ptr %_M_invoker.i, align 8, !tbaa !84 store ptr @"_ZNSt17_Function_handlerIFdddEZNK8QuantLib9ZabrModel1xERKSt6vectorIdSaIdEEE3$_0E10_M_managerERSt9_Any_dataRKSA_St18_Manager_operation", ptr %_M_manager.i.i, align 8, !tbaa !87 - %add.ptr.i175 = getelementptr inbounds nuw double, ptr %y.sroa.0.0335346, i64 %indvars.iv319 + %add.ptr.i175 = getelementptr inbounds nuw double, ptr %call5.i.i.i.i2.i.i66, i64 %indvars.iv319 %88 = load double, ptr %add.ptr.i175, align 8, !tbaa !32 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %ref.tmp.i) #28 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp2.i) #28 @@ -2768,18 +2764,8 @@ _ZNSt14_Function_baseD2Ev.exit193: ; preds = %_ZNSt14_Function_ba %tobool.not.i.i.i200 = icmp eq ptr %63, null br i1 %tobool.not.i.i.i200, label %if.then.i.i.i208, label %if.then.i.i.i201 -nrvo.skipdtor: ; preds = %for.cond.cleanup208, %cond.true, %for.cond128.preheader - %tobool.not.i.i.i = icmp eq ptr %y.sroa.0.0335346, null - br i1 %tobool.not.i.i.i, label %_ZNSt6vectorIdSaIdEED2Ev.exit, label %if.then.i.i.i194 - -if.then.i.i.i194: ; preds = %for.body132, %nrvo.skipdtor - %sub.ptr.lhs.cast.i.i = ptrtoint ptr %y.sroa.30.0331348 to i64 - %sub.ptr.rhs.cast.i.i = ptrtoint ptr %y.sroa.0.0335346 to i64 - %sub.ptr.sub.i.i = sub i64 %sub.ptr.lhs.cast.i.i, %sub.ptr.rhs.cast.i.i - call void @_ZdlPvm(ptr noundef nonnull %y.sroa.0.0335346, i64 noundef %sub.ptr.sub.i.i) #31 - br label %_ZNSt6vectorIdSaIdEED2Ev.exit - -_ZNSt6vectorIdSaIdEED2Ev.exit: ; preds = %nrvo.skipdtor, %if.then.i.i.i194 +_ZNSt6vectorIdSaIdEED2Ev.exit: ; preds = %for.cond.cleanup208, %cond.true, %for.body132, %for.cond128.preheader + call void @_ZdlPvm(ptr noundef nonnull %call5.i.i.i.i2.i.i66, i64 noundef %sub.ptr.sub.i) #31 %114 = load ptr, ptr %rk, align 8, !tbaa !29 %tobool.not.i.i.i.i = icmp eq ptr %114, null br i1 %tobool.not.i.i.i.i, label %_ZN8QuantLib18AdaptiveRungeKuttaIdED2Ev.exit, label %if.then.i.i.i.i @@ -2804,20 +2790,14 @@ if.then.i.i.i201: ; preds = %_ZNSt14_Function_ba call void @_ZdlPvm(ptr noundef nonnull %63, i64 noundef %sub.ptr.sub.i.i205) #31 br label %if.then.i.i.i208 -ehcleanup245.if.then.i.i.i208_crit_edge: ; preds = %if.then.i.i.i.i.i111 +ehcleanup245: ; preds = %if.then.i.i.i.i.i111 %116 = landingpad { ptr, i32 } cleanup - %.pre325 = ptrtoint ptr %call5.i.i.i.i2.i.i66 to i64 br label %if.then.i.i.i208 -if.then.i.i.i208: ; preds = %ehcleanup245.if.then.i.i.i208_crit_edge, %_ZNSt14_Function_baseD2Ev.exit193, %if.then.i.i.i201 - %y.sroa.0.0334 = phi ptr [ %call5.i.i.i.i2.i.i66, %ehcleanup245.if.then.i.i.i208_crit_edge ], [ %y.sroa.0.0335346, %_ZNSt14_Function_baseD2Ev.exit193 ], [ %y.sroa.0.0335346, %if.then.i.i.i201 ] - %y.sroa.30.0330 = phi ptr [ %add.ptr.i.i.i, %ehcleanup245.if.then.i.i.i208_crit_edge ], [ %y.sroa.30.0331348, %_ZNSt14_Function_baseD2Ev.exit193 ], [ %y.sroa.30.0331348, %if.then.i.i.i201 ] - %sub.ptr.rhs.cast.i.i211.pre-phi = phi i64 [ %.pre325, %ehcleanup245.if.then.i.i.i208_crit_edge ], [ %sub.ptr.rhs.cast.i.i.i.i.i, %_ZNSt14_Function_baseD2Ev.exit193 ], [ %sub.ptr.rhs.cast.i.i.i.i.i, %if.then.i.i.i201 ] - %.pn33.pn.pn262 = phi { ptr, i32 } [ %116, %ehcleanup245.if.then.i.i.i208_crit_edge ], [ %.pn26.i, %_ZNSt14_Function_baseD2Ev.exit193 ], [ %.pn26.i, %if.then.i.i.i201 ] - %sub.ptr.lhs.cast.i.i210 = ptrtoint ptr %y.sroa.30.0330 to i64 - %sub.ptr.sub.i.i212 = sub i64 %sub.ptr.lhs.cast.i.i210, %sub.ptr.rhs.cast.i.i211.pre-phi - call void @_ZdlPvm(ptr noundef nonnull %y.sroa.0.0334, i64 noundef %sub.ptr.sub.i.i212) #31 +if.then.i.i.i208: ; preds = %ehcleanup245, %_ZNSt14_Function_baseD2Ev.exit193, %if.then.i.i.i201 + %.pn33.pn.pn262 = phi { ptr, i32 } [ %116, %ehcleanup245 ], [ %.pn26.i, %if.then.i.i.i201 ], [ %.pn26.i, %_ZNSt14_Function_baseD2Ev.exit193 ] + call void @_ZdlPvm(ptr noundef nonnull %call5.i.i.i.i2.i.i66, i64 noundef %sub.ptr.sub.i) #31 br label %ehcleanup246 ehcleanup246: ; preds = %if.then.i.i.i208, %lpad104 diff --git a/bench/re2/optimized/compile.cc.ll b/bench/re2/optimized/compile.cc.ll index 854b6a90743..588f7c974d5 100644 --- a/bench/re2/optimized/compile.cc.ll +++ b/bench/re2/optimized/compile.cc.ll @@ -5347,22 +5347,19 @@ invoke.cont: ; preds = %if.then4 for.body: ; preds = %invoke.cont, %invoke.cont19 %indvars.iv = phi i64 [ %indvars.iv.next, %invoke.cont19 ], [ 1, %invoke.cont ] - %8 = phi i16 [ %11, %invoke.cont19 ], [ %6, %invoke.cont ] - %cmp.i32 = icmp ult i16 %8, 2 - %9 = load ptr, ptr %3, align 8 - %retval.0.i33 = select i1 %cmp.i32, ptr %3, ptr %9 - %arrayidx16 = getelementptr inbounds ptr, ptr %retval.0.i33, i64 %indvars.iv - %10 = load ptr, ptr %arrayidx16, align 8 - %call18 = invoke noundef ptr @_ZN3re26Regexp6IncrefEv(ptr noundef nonnull align 8 dereferenceable(40) %10) + %8 = load ptr, ptr %3, align 8 + %arrayidx16 = getelementptr inbounds ptr, ptr %8, i64 %indvars.iv + %9 = load ptr, ptr %arrayidx16, align 8 + %call18 = invoke noundef ptr @_ZN3re26Regexp6IncrefEv(ptr noundef nonnull align 8 dereferenceable(40) %9) to label %invoke.cont19 unwind label %_ZN3re28PODArrayIPNS_6RegexpEED2Ev.exit.loopexit invoke.cont19: ; preds = %for.body %arrayidx.i.i = getelementptr inbounds ptr, ptr %call5.i3.i, i64 %indvars.iv store ptr %call18, ptr %arrayidx.i.i, align 8 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %11 = load i16, ptr %nsub_.i, align 2 - %12 = zext i16 %11 to i64 - %cmp13 = icmp ult i64 %indvars.iv.next, %12 + %10 = load i16, ptr %nsub_.i, align 2 + %11 = zext i16 %10 to i64 + %cmp13 = icmp ult i64 %indvars.iv.next, %11 br i1 %cmp13, label %for.body, label %for.end, !llvm.loop !25 _ZN3re28PODArrayIPNS_6RegexpEED2Ev.exit.loopexit: ; preds = %for.body @@ -5381,11 +5378,11 @@ _ZN3re28PODArrayIPNS_6RegexpEED2Ev.exit: ; preds = %_ZN3re28PODArrayIPN resume { ptr, i32 } %lpad.phi for.end: ; preds = %invoke.cont19, %invoke.cont - %conv.i30.lcssa.in = phi i16 [ %6, %invoke.cont ], [ %11, %invoke.cont19 ] + %conv.i30.lcssa.in = phi i16 [ %6, %invoke.cont ], [ %10, %invoke.cont19 ] %conv.i30.lcssa = zext i16 %conv.i30.lcssa.in to i32 %parse_flags_.i = getelementptr inbounds i8, ptr %0, i64 2 - %13 = load i16, ptr %parse_flags_.i, align 2 - %conv.i39 = zext i16 %13 to i32 + %12 = load i16, ptr %parse_flags_.i, align 2 + %conv.i39 = zext i16 %12 to i32 %call27 = invoke noundef ptr @_ZN3re26Regexp6ConcatEPPS0_iNS0_10ParseFlagsE(ptr noundef nonnull %call5.i3.i, i32 noundef %conv.i30.lcssa, i32 noundef %conv.i39) to label %invoke.cont26 unwind label %_ZN3re28PODArrayIPNS_6RegexpEED2Ev.exit.loopexit.split-lp @@ -5399,44 +5396,44 @@ _ZN3re28PODArrayIPNS_6RegexpEED2Ev.exit43: ; preds = %invoke.cont26 br label %return if.end29: ; preds = %if.then4 - %14 = load ptr, ptr %sub, align 8 - tail call void @_ZN3re26Regexp6DecrefEv(ptr noundef nonnull align 8 dereferenceable(40) %14) + %13 = load ptr, ptr %sub, align 8 + tail call void @_ZN3re26Regexp6DecrefEv(ptr noundef nonnull align 8 dereferenceable(40) %13) br label %return sw.bb31: ; preds = %if.end %nsub_.i44 = getelementptr inbounds i8, ptr %0, i64 6 - %15 = load i16, ptr %nsub_.i44, align 2 - %cmp.i45 = icmp ult i16 %15, 2 - %16 = getelementptr inbounds i8, ptr %0, i64 8 - %17 = load ptr, ptr %16, align 8 - %retval.0.i46 = select i1 %cmp.i45, ptr %16, ptr %17 - %18 = load ptr, ptr %retval.0.i46, align 8 - %call34 = tail call noundef ptr @_ZN3re26Regexp6IncrefEv(ptr noundef nonnull align 8 dereferenceable(40) %18) + %14 = load i16, ptr %nsub_.i44, align 2 + %cmp.i45 = icmp ult i16 %14, 2 + %15 = getelementptr inbounds i8, ptr %0, i64 8 + %16 = load ptr, ptr %15, align 8 + %retval.0.i46 = select i1 %cmp.i45, ptr %15, ptr %16 + %17 = load ptr, ptr %retval.0.i46, align 8 + %call34 = tail call noundef ptr @_ZN3re26Regexp6IncrefEv(ptr noundef nonnull align 8 dereferenceable(40) %17) store ptr %call34, ptr %sub, align 8 %add35 = add nuw nsw i32 %depth, 1 %call36 = call fastcc noundef zeroext i1 @_ZN3re2L13IsAnchorStartEPPNS_6RegexpEi(ptr noundef %sub, i32 noundef %add35) - %19 = load ptr, ptr %sub, align 8 + %18 = load ptr, ptr %sub, align 8 br i1 %call36, label %if.then37, label %if.end41 if.then37: ; preds = %sw.bb31 %parse_flags_.i47 = getelementptr inbounds i8, ptr %0, i64 2 - %20 = load i16, ptr %parse_flags_.i47, align 2 - %conv.i48 = zext i16 %20 to i32 - %21 = getelementptr inbounds i8, ptr %0, i64 24 - %22 = load i32, ptr %21, align 8 - %call40 = tail call noundef ptr @_ZN3re26Regexp7CaptureEPS0_NS0_10ParseFlagsEi(ptr noundef %19, i32 noundef %conv.i48, i32 noundef %22) + %19 = load i16, ptr %parse_flags_.i47, align 2 + %conv.i48 = zext i16 %19 to i32 + %20 = getelementptr inbounds i8, ptr %0, i64 24 + %21 = load i32, ptr %20, align 8 + %call40 = tail call noundef ptr @_ZN3re26Regexp7CaptureEPS0_NS0_10ParseFlagsEi(ptr noundef %18, i32 noundef %conv.i48, i32 noundef %21) store ptr %call40, ptr %pre, align 8 tail call void @_ZN3re26Regexp6DecrefEv(ptr noundef nonnull align 8 dereferenceable(40) %0) br label %return if.end41: ; preds = %sw.bb31 - tail call void @_ZN3re26Regexp6DecrefEv(ptr noundef nonnull align 8 dereferenceable(40) %19) + tail call void @_ZN3re26Regexp6DecrefEv(ptr noundef nonnull align 8 dereferenceable(40) %18) br label %return sw.bb42: ; preds = %if.end %parse_flags_.i49 = getelementptr inbounds i8, ptr %0, i64 2 - %23 = load i16, ptr %parse_flags_.i49, align 2 - %conv.i50 = zext i16 %23 to i32 + %22 = load i16, ptr %parse_flags_.i49, align 2 + %conv.i50 = zext i16 %22 to i32 %call44 = tail call noundef ptr @_ZN3re26Regexp13LiteralStringEPiiNS0_10ParseFlagsE(ptr noundef null, i32 noundef 0, i32 noundef %conv.i50) store ptr %call44, ptr %pre, align 8 tail call void @_ZN3re26Regexp6DecrefEv(ptr noundef nonnull align 8 dereferenceable(40) %0) diff --git a/bench/re2/optimized/regexp.cc.ll b/bench/re2/optimized/regexp.cc.ll index dbdc679046e..6374d4bb7b1 100644 --- a/bench/re2/optimized/regexp.cc.ll +++ b/bench/re2/optimized/regexp.cc.ll @@ -3153,76 +3153,73 @@ if.end23: ; preds = %if.end12 for.body: ; preds = %if.end23, %for.body %indvars.iv61 = phi i64 [ %indvars.iv.next62, %for.body ], [ %indvars.iv58, %if.end23 ] - %9 = phi i16 [ %12, %for.body ], [ %1, %if.end23 ] - %cmp.i29 = icmp ult i16 %9, 2 - %10 = load ptr, ptr %2, align 8 - %retval.0.i30 = select i1 %cmp.i29, ptr %2, ptr %10 - %arrayidx34 = getelementptr inbounds ptr, ptr %retval.0.i30, i64 %indvars.iv61 - %11 = load ptr, ptr %arrayidx34, align 8 - %call35 = tail call noundef ptr @_ZN3re26Regexp6IncrefEv(ptr noundef nonnull align 8 dereferenceable(40) %11) + %9 = load ptr, ptr %2, align 8 + %arrayidx34 = getelementptr inbounds ptr, ptr %9, i64 %indvars.iv61 + %10 = load ptr, ptr %arrayidx34, align 8 + %call35 = tail call noundef ptr @_ZN3re26Regexp6IncrefEv(ptr noundef nonnull align 8 dereferenceable(40) %10) %indvars.iv.next62 = add nuw nsw i64 %indvars.iv61, 1 - %12 = load i16, ptr %nsub_, align 2 - %13 = zext i16 %12 to i64 - %cmp31 = icmp ult i64 %indvars.iv.next62, %13 + %11 = load i16, ptr %nsub_, align 2 + %12 = zext i16 %11 to i64 + %cmp31 = icmp ult i64 %indvars.iv.next62, %12 br i1 %cmp31, label %for.body, label %for.end, !llvm.loop !25 for.end: ; preds = %for.body - %conv30.le = zext i16 %12 to i32 + %conv30.le = zext i16 %11 to i32 %.pre = load ptr, ptr %2, align 8 - %cmp.i32 = icmp ult i16 %12, 2 + %cmp.i32 = icmp ult i16 %11, 2 %retval.0.i33 = select i1 %cmp.i32, ptr %2, ptr %.pre %idx.ext = zext nneg i32 %inc24 to i64 %add.ptr = getelementptr inbounds ptr, ptr %retval.0.i33, i64 %idx.ext %sub = sub nsw i32 %conv30.le, %inc24 %parse_flags_.i = getelementptr inbounds i8, ptr %this, i64 2 - %14 = load i16, ptr %parse_flags_.i, align 2 - %conv.i = zext i16 %14 to i32 + %13 = load i16, ptr %parse_flags_.i, align 2 + %conv.i = zext i16 %13 to i32 %call.i = tail call noundef ptr @_ZN3re26Regexp17ConcatOrAlternateENS_8RegexpOpEPPS0_iNS0_10ParseFlagsEb(i32 noundef 5, ptr noundef nonnull readonly %add.ptr, i32 noundef %sub, i32 noundef %conv.i, i1 noundef zeroext false) br label %if.end45 if.else: ; preds = %if.end23 %call42 = tail call noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #30 %parse_flags_.i34 = getelementptr inbounds i8, ptr %this, i64 2 - %15 = load i16, ptr %parse_flags_.i34, align 2 - %conv.i35 = zext i16 %15 to i32 + %14 = load i16, ptr %parse_flags_.i34, align 2 + %conv.i35 = zext i16 %14 to i32 invoke void @_ZN3re26RegexpC1ENS_8RegexpOpENS0_10ParseFlagsE(ptr noundef nonnull align 8 dereferenceable(40) %call42, i32 noundef 2, i32 noundef %conv.i35) to label %if.end45 unwind label %lpad lpad: ; preds = %if.else - %16 = landingpad { ptr, i32 } + %15 = landingpad { ptr, i32 } cleanup tail call void @_ZdlPv(ptr noundef nonnull %call42) #27 - resume { ptr, i32 } %16 + resume { ptr, i32 } %15 if.end45: ; preds = %if.else, %for.end %storemerge = phi ptr [ %call.i, %for.end ], [ %call42, %if.else ] store ptr %storemerge, ptr %suffix, align 8 %parse_flags_.i36 = getelementptr inbounds i8, ptr %7, i64 2 - %17 = load i16, ptr %parse_flags_.i36, align 2 - %18 = and i16 %17, 32 - %cmp48 = icmp ne i16 %18, 0 - %19 = load i8, ptr %7, align 8 - %cmp51 = icmp eq i8 %19, 3 + %16 = load i16, ptr %parse_flags_.i36, align 2 + %17 = and i16 %16, 32 + %cmp48 = icmp ne i16 %17, 0 + %18 = load i8, ptr %7, align 8 + %cmp51 = icmp eq i8 %18, 3 br i1 %cmp51, label %cond.end.thread, label %cond.false56 cond.end.thread: ; preds = %if.end45 - %20 = getelementptr inbounds i8, ptr %7, i64 24 + %19 = getelementptr inbounds i8, ptr %7, i64 24 br label %cond.end57 cond.false56: ; preds = %if.end45 %runes_ = getelementptr inbounds i8, ptr %7, i64 32 - %21 = load ptr, ptr %runes_, align 8 - %22 = getelementptr inbounds i8, ptr %7, i64 24 - %23 = load i32, ptr %22, align 8 + %20 = load ptr, ptr %runes_, align 8 + %21 = getelementptr inbounds i8, ptr %7, i64 24 + %22 = load i32, ptr %21, align 8 br label %cond.end57 cond.end57: ; preds = %cond.end.thread, %cond.false56 - %cond44 = phi ptr [ %21, %cond.false56 ], [ %20, %cond.end.thread ] - %cond58 = phi i32 [ %23, %cond.false56 ], [ 1, %cond.end.thread ] + %cond44 = phi ptr [ %20, %cond.false56 ], [ %19, %cond.end.thread ] + %cond58 = phi i32 [ %22, %cond.false56 ], [ 1, %cond.end.thread ] tail call void @_ZN3re219ConvertRunesToBytesEbPiiPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(i1 noundef zeroext %cmp48, ptr noundef %cond44, i32 noundef %cond58, ptr noundef nonnull %prefix) - %24 = load i16, ptr %parse_flags_.i36, align 2 - %25 = trunc i16 %24 to i8 - %frombool62 = and i8 %25, 1 + %23 = load i16, ptr %parse_flags_.i36, align 2 + %24 = trunc i16 %23 to i8 + %frombool62 = and i8 %24, 1 store i8 %frombool62, ptr %foldcase, align 1 br label %return diff --git a/bench/redis/optimized/eval.ll b/bench/redis/optimized/eval.ll index a83d7e5dc74..327fbe931f2 100644 --- a/bench/redis/optimized/eval.ll +++ b/bench/redis/optimized/eval.ll @@ -4103,10 +4103,10 @@ if.else: ; preds = %if.then %cmp542 = icmp sgt i32 %4, 0 br i1 %cmp542, label %for.body, label %if.end56 -for.body: ; preds = %if.else, %ldbLogSourceLine.exit - %indvars.iv48 = phi i64 [ %indvars.iv.next49, %ldbLogSourceLine.exit ], [ 0, %if.else ] - %5 = phi i32 [ %17, %ldbLogSourceLine.exit ], [ %4, %if.else ] - %arrayidx = getelementptr inbounds [64 x i32], ptr getelementptr inbounds (i8, ptr @ldb, i64 40), i64 0, i64 %indvars.iv48 +for.body: ; preds = %if.else, %ldbLogSourceLine.exit.loopexit + %indvars.iv47 = phi i64 [ %indvars.iv.next48, %ldbLogSourceLine.exit.loopexit ], [ 0, %if.else ] + %5 = phi i32 [ %15, %ldbLogSourceLine.exit.loopexit ], [ %4, %if.else ] + %arrayidx = getelementptr inbounds [64 x i32], ptr getelementptr inbounds (i8, ptr @ldb, i64 40), i64 0, i64 %indvars.iv47 %6 = load i32, ptr %arrayidx, align 4 %cmp.i.i = icmp slt i32 %6, 1 %7 = load i32, ptr getelementptr inbounds (i8, ptr @ldb, i64 320), align 8 @@ -4124,48 +4124,44 @@ if.end.i.i: ; preds = %for.body ldbGetSourceLine.exit.i: ; preds = %if.end.i.i, %for.body %retval.0.i.i = phi ptr [ %11, %if.end.i.i ], [ @.str.68, %for.body ] - %cmp3.i.i = icmp sgt i32 %5, 0 - br i1 %cmp3.i.i, label %for.body.preheader.i.i, label %ldbLogSourceLine.exit - -for.body.preheader.i.i: ; preds = %ldbGetSourceLine.exit.i %wide.trip.count.i.i = zext nneg i32 %5 to i64 br label %for.body.i.i for.cond.i.i: ; preds = %for.body.i.i %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 %exitcond.not.i.i = icmp eq i64 %indvars.iv.next.i.i, %wide.trip.count.i.i - br i1 %exitcond.not.i.i, label %ldbLogSourceLine.exit, label %for.body.i.i, !llvm.loop !17 + br i1 %exitcond.not.i.i, label %ldbLogSourceLine.exit.loopexit, label %for.body.i.i, !llvm.loop !17 -for.body.i.i: ; preds = %for.cond.i.i, %for.body.preheader.i.i - %indvars.iv.i.i = phi i64 [ 0, %for.body.preheader.i.i ], [ %indvars.iv.next.i.i, %for.cond.i.i ] +for.body.i.i: ; preds = %for.cond.i.i, %ldbGetSourceLine.exit.i + %indvars.iv.i.i = phi i64 [ 0, %ldbGetSourceLine.exit.i ], [ %indvars.iv.next.i.i, %for.cond.i.i ] %arrayidx.i7.i = getelementptr inbounds [64 x i32], ptr getelementptr inbounds (i8, ptr @ldb, i64 40), i64 0, i64 %indvars.iv.i.i %12 = load i32, ptr %arrayidx.i7.i, align 4 %cmp1.i.i = icmp eq i32 %12, %6 - br i1 %cmp1.i.i, label %ldbLogSourceLine.exit, label %for.cond.i.i + br i1 %cmp1.i.i, label %ldbLogSourceLine.exit.loopexit, label %for.cond.i.i -ldbLogSourceLine.exit: ; preds = %for.cond.i.i, %for.body.i.i, %ldbGetSourceLine.exit.i - %13 = phi ptr [ @.str.73, %ldbGetSourceLine.exit.i ], [ @.str.72, %for.body.i.i ], [ @.str.73, %for.cond.i.i ] - %14 = phi ptr [ @.str.71, %ldbGetSourceLine.exit.i ], [ @.str.70, %for.body.i.i ], [ @.str.71, %for.cond.i.i ] - %15 = load i32, ptr getelementptr inbounds (i8, ptr @ldb, i64 324), align 4 - %cmp9.i = icmp eq i32 %15, %6 - %prefix.0.i = select i1 %cmp9.i, ptr %14, ptr %13 +ldbLogSourceLine.exit.loopexit: ; preds = %for.body.i.i, %for.cond.i.i + %.ph = phi ptr [ @.str.72, %for.body.i.i ], [ @.str.73, %for.cond.i.i ] + %.ph35 = phi ptr [ @.str.70, %for.body.i.i ], [ @.str.71, %for.cond.i.i ] + %13 = load i32, ptr getelementptr inbounds (i8, ptr @ldb, i64 324), align 4 + %cmp9.i = icmp eq i32 %13, %6 + %prefix.0.i = select i1 %cmp9.i, ptr %.ph35, ptr %.ph %call11.i = tail call ptr @sdsempty() #17 %call12.i = tail call ptr (ptr, ptr, ...) @sdscatprintf(ptr noundef %call11.i, ptr noundef nonnull @.str.74, ptr noundef nonnull %prefix.0.i, i32 noundef %6, ptr noundef %retval.0.i.i) #17 - %16 = load ptr, ptr getelementptr inbounds (i8, ptr @ldb, i64 16), align 8 - %call.i.i = tail call ptr @listAddNodeTail(ptr noundef %16, ptr noundef %call12.i) #17 - %indvars.iv.next49 = add nuw nsw i64 %indvars.iv48, 1 - %17 = load i32, ptr getelementptr inbounds (i8, ptr @ldb, i64 296), align 8 - %18 = sext i32 %17 to i64 - %cmp5 = icmp slt i64 %indvars.iv.next49, %18 + %14 = load ptr, ptr getelementptr inbounds (i8, ptr @ldb, i64 16), align 8 + %call.i.i = tail call ptr @listAddNodeTail(ptr noundef %14, ptr noundef %call12.i) #17 + %indvars.iv.next48 = add nuw nsw i64 %indvars.iv47, 1 + %15 = load i32, ptr getelementptr inbounds (i8, ptr @ldb, i64 296), align 8 + %16 = sext i32 %15 to i64 + %cmp5 = icmp slt i64 %indvars.iv.next48, %16 br i1 %cmp5, label %for.body, label %if.end56, !llvm.loop !28 for.body10: ; preds = %for.body10.preheader, %for.inc53 %indvars.iv = phi i64 [ 1, %for.body10.preheader ], [ %indvars.iv.next, %for.inc53 ] %arrayidx12 = getelementptr inbounds ptr, ptr %argv, i64 %indvars.iv - %19 = load ptr, ptr %arrayidx12, align 8 - %arrayidx.i = getelementptr inbounds i8, ptr %19, i64 -1 - %20 = load i8, ptr %arrayidx.i, align 1 - %conv.i = zext i8 %20 to i32 + %17 = load ptr, ptr %arrayidx12, align 8 + %arrayidx.i = getelementptr inbounds i8, ptr %17, i64 -1 + %18 = load i8, ptr %arrayidx.i, align 1 + %conv.i = zext i8 %18 to i32 %and.i = and i32 %conv.i, 7 switch i32 %and.i, label %sdslen.exit [ i32 0, label %sw.bb.i @@ -4181,82 +4177,82 @@ sw.bb.i: ; preds = %for.body10 br label %sdslen.exit sw.bb3.i: ; preds = %for.body10 - %add.ptr.i = getelementptr inbounds i8, ptr %19, i64 -3 - %21 = load i8, ptr %add.ptr.i, align 1 - %conv4.i = zext i8 %21 to i64 + %add.ptr.i = getelementptr inbounds i8, ptr %17, i64 -3 + %19 = load i8, ptr %add.ptr.i, align 1 + %conv4.i = zext i8 %19 to i64 br label %sdslen.exit sw.bb5.i: ; preds = %for.body10 - %add.ptr6.i = getelementptr inbounds i8, ptr %19, i64 -5 - %22 = load i16, ptr %add.ptr6.i, align 1 - %conv8.i = zext i16 %22 to i64 + %add.ptr6.i = getelementptr inbounds i8, ptr %17, i64 -5 + %20 = load i16, ptr %add.ptr6.i, align 1 + %conv8.i = zext i16 %20 to i64 br label %sdslen.exit sw.bb9.i: ; preds = %for.body10 - %add.ptr10.i = getelementptr inbounds i8, ptr %19, i64 -9 - %23 = load i32, ptr %add.ptr10.i, align 1 - %conv12.i = zext i32 %23 to i64 + %add.ptr10.i = getelementptr inbounds i8, ptr %17, i64 -9 + %21 = load i32, ptr %add.ptr10.i, align 1 + %conv12.i = zext i32 %21 to i64 br label %sdslen.exit sw.bb13.i: ; preds = %for.body10 - %add.ptr14.i = getelementptr inbounds i8, ptr %19, i64 -17 - %24 = load i64, ptr %add.ptr14.i, align 1 + %add.ptr14.i = getelementptr inbounds i8, ptr %17, i64 -17 + %22 = load i64, ptr %add.ptr14.i, align 1 br label %sdslen.exit sdslen.exit: ; preds = %for.body10, %sw.bb.i, %sw.bb3.i, %sw.bb5.i, %sw.bb9.i, %sw.bb13.i - %retval.0.i = phi i64 [ %24, %sw.bb13.i ], [ %conv12.i, %sw.bb9.i ], [ %conv8.i, %sw.bb5.i ], [ %conv4.i, %sw.bb3.i ], [ %conv2.i, %sw.bb.i ], [ 0, %for.body10 ] - %call14 = call i32 @string2l(ptr noundef nonnull %19, i64 noundef %retval.0.i, ptr noundef nonnull %line) #17 + %retval.0.i = phi i64 [ %22, %sw.bb13.i ], [ %conv12.i, %sw.bb9.i ], [ %conv8.i, %sw.bb5.i ], [ %conv4.i, %sw.bb3.i ], [ %conv2.i, %sw.bb.i ], [ 0, %for.body10 ] + %call14 = call i32 @string2l(ptr noundef nonnull %17, i64 noundef %retval.0.i, ptr noundef nonnull %line) #17 %tobool.not = icmp eq i32 %call14, 0 br i1 %tobool.not, label %if.then15, label %if.else18 if.then15: ; preds = %sdslen.exit %call16 = call ptr @sdsempty() #17 - %call17 = call ptr (ptr, ptr, ...) @sdscatfmt(ptr noundef %call16, ptr noundef nonnull @.str.111, ptr noundef nonnull %19) #17 - %25 = load ptr, ptr getelementptr inbounds (i8, ptr @ldb, i64 16), align 8 - %call.i9 = call ptr @listAddNodeTail(ptr noundef %25, ptr noundef %call17) #17 + %call17 = call ptr (ptr, ptr, ...) @sdscatfmt(ptr noundef %call16, ptr noundef nonnull @.str.111, ptr noundef nonnull %17) #17 + %23 = load ptr, ptr getelementptr inbounds (i8, ptr @ldb, i64 16), align 8 + %call.i9 = call ptr @listAddNodeTail(ptr noundef %23, ptr noundef %call17) #17 br label %for.inc53 if.else18: ; preds = %sdslen.exit - %26 = load i64, ptr %line, align 8 - %cmp19 = icmp eq i64 %26, 0 + %24 = load i64, ptr %line, align 8 + %cmp19 = icmp eq i64 %24, 0 br i1 %cmp19, label %if.then20, label %if.else22 if.then20: ; preds = %if.else18 store i32 0, ptr getelementptr inbounds (i8, ptr @ldb, i64 296), align 8 %call21 = call ptr @sdsnew(ptr noundef nonnull @.str.112) #17 - %27 = load ptr, ptr getelementptr inbounds (i8, ptr @ldb, i64 16), align 8 - %call.i10 = call ptr @listAddNodeTail(ptr noundef %27, ptr noundef %call21) #17 + %25 = load ptr, ptr getelementptr inbounds (i8, ptr @ldb, i64 16), align 8 + %call.i10 = call ptr @listAddNodeTail(ptr noundef %25, ptr noundef %call21) #17 br label %for.inc53 if.else22: ; preds = %if.else18 - %cmp23 = icmp sgt i64 %26, 0 + %cmp23 = icmp sgt i64 %24, 0 br i1 %cmp23, label %if.then24, label %if.then40 if.then24: ; preds = %if.else22 - %28 = load i32, ptr getelementptr inbounds (i8, ptr @ldb, i64 296), align 8 - %cmp25 = icmp eq i32 %28, 64 + %26 = load i32, ptr getelementptr inbounds (i8, ptr @ldb, i64 296), align 8 + %cmp25 = icmp eq i32 %26, 64 br i1 %cmp25, label %if.then26, label %if.else28 if.then26: ; preds = %if.then24 %call27 = call ptr @sdsnew(ptr noundef nonnull @.str.113) #17 - %29 = load ptr, ptr getelementptr inbounds (i8, ptr @ldb, i64 16), align 8 - %call.i11 = call ptr @listAddNodeTail(ptr noundef %29, ptr noundef %call27) #17 + %27 = load ptr, ptr getelementptr inbounds (i8, ptr @ldb, i64 16), align 8 + %call.i11 = call ptr @listAddNodeTail(ptr noundef %27, ptr noundef %call27) #17 br label %for.inc53 if.else28: ; preds = %if.then24 - %conv = trunc i64 %26 to i32 + %conv = trunc i64 %24 to i32 %cmp.i = icmp slt i32 %conv, 1 - %30 = load i32, ptr getelementptr inbounds (i8, ptr @ldb, i64 320), align 8 - %cmp1.i = icmp slt i32 %30, %conv + %28 = load i32, ptr getelementptr inbounds (i8, ptr @ldb, i64 320), align 8 + %cmp1.i = icmp slt i32 %28, %conv %or.cond5.i = select i1 %cmp.i, i1 true, i1 %cmp1.i br i1 %or.cond5.i, label %if.else33, label %if.end.i if.end.i: ; preds = %if.else28 - %cmp3.i.i12 = icmp sgt i32 %28, 0 + %cmp3.i.i12 = icmp sgt i32 %26, 0 br i1 %cmp3.i.i12, label %for.body.preheader.i.i15, label %if.then31 for.body.preheader.i.i15: ; preds = %if.end.i - %wide.trip.count.i.i16 = zext nneg i32 %28 to i64 + %wide.trip.count.i.i16 = zext nneg i32 %26 to i64 br label %for.body.i.i17 for.cond.i.i21: ; preds = %for.body.i.i17 @@ -4267,14 +4263,14 @@ for.cond.i.i21: ; preds = %for.body.i.i17 for.body.i.i17: ; preds = %for.cond.i.i21, %for.body.preheader.i.i15 %indvars.iv.i.i18 = phi i64 [ 0, %for.body.preheader.i.i15 ], [ %indvars.iv.next.i.i22, %for.cond.i.i21 ] %arrayidx.i.i19 = getelementptr inbounds [64 x i32], ptr getelementptr inbounds (i8, ptr @ldb, i64 40), i64 0, i64 %indvars.iv.i.i18 - %31 = load i32, ptr %arrayidx.i.i19, align 4 - %cmp1.i.i20 = icmp eq i32 %31, %conv + %29 = load i32, ptr %arrayidx.i.i19, align 4 + %cmp1.i.i20 = icmp eq i32 %29, %conv br i1 %cmp1.i.i20, label %if.else33, label %for.cond.i.i21 if.then31: ; preds = %for.cond.i.i21, %if.end.i - %inc.i = add nsw i32 %28, 1 + %inc.i = add nsw i32 %26, 1 store i32 %inc.i, ptr getelementptr inbounds (i8, ptr @ldb, i64 296), align 8 - %idxprom.i = sext i32 %28 to i64 + %idxprom.i = sext i32 %26 to i64 %arrayidx.i13 = getelementptr inbounds [64 x i32], ptr getelementptr inbounds (i8, ptr @ldb, i64 40), i64 0, i64 %idxprom.i store i32 %conv, ptr %arrayidx.i13, align 4 call void @ldbList(i32 noundef %conv, i32 noundef 1) @@ -4282,26 +4278,26 @@ if.then31: ; preds = %for.cond.i.i21, %if if.else33: ; preds = %for.body.i.i17, %if.else28 %call34 = call ptr @sdsnew(ptr noundef nonnull @.str.114) #17 - %32 = load ptr, ptr getelementptr inbounds (i8, ptr @ldb, i64 16), align 8 - %call.i24 = call ptr @listAddNodeTail(ptr noundef %32, ptr noundef %call34) #17 + %30 = load ptr, ptr getelementptr inbounds (i8, ptr @ldb, i64 16), align 8 + %call.i24 = call ptr @listAddNodeTail(ptr noundef %30, ptr noundef %call34) #17 br label %for.inc53 if.then40: ; preds = %if.else22 - %33 = trunc i64 %26 to i32 - %conv41 = sub i32 0, %33 - %34 = load i32, ptr getelementptr inbounds (i8, ptr @ldb, i64 296), align 8 - %cmp8.i = icmp sgt i32 %34, 0 + %31 = trunc i64 %24 to i32 + %conv41 = sub i32 0, %31 + %32 = load i32, ptr getelementptr inbounds (i8, ptr @ldb, i64 296), align 8 + %cmp8.i = icmp sgt i32 %32, 0 br i1 %cmp8.i, label %for.body.preheader.i, label %if.else46 for.body.preheader.i: ; preds = %if.then40 - %wide.trip.count.i = zext nneg i32 %34 to i64 + %wide.trip.count.i = zext nneg i32 %32 to i64 br label %for.body.i for.body.i: ; preds = %for.inc.i, %for.body.preheader.i %indvars.iv.i = phi i64 [ 0, %for.body.preheader.i ], [ %indvars.iv.next.i, %for.inc.i ] %arrayidx.i26 = getelementptr inbounds [64 x i32], ptr getelementptr inbounds (i8, ptr @ldb, i64 40), i64 0, i64 %indvars.iv.i - %35 = load i32, ptr %arrayidx.i26, align 4 - %cmp1.i27 = icmp eq i32 %35, %conv41 + %33 = load i32, ptr %arrayidx.i26, align 4 + %cmp1.i27 = icmp eq i32 %33, %conv41 br i1 %cmp1.i27, label %if.then44, label %for.inc.i for.inc.i: ; preds = %for.body.i @@ -4311,22 +4307,22 @@ for.inc.i: ; preds = %for.body.i if.then44: ; preds = %for.body.i %arrayidx.i26.le = getelementptr inbounds [64 x i32], ptr getelementptr inbounds (i8, ptr @ldb, i64 40), i64 0, i64 %indvars.iv.i - %36 = trunc nuw nsw i64 %indvars.iv.i to i32 - %dec.i = add nsw i32 %34, -1 + %34 = trunc nuw nsw i64 %indvars.iv.i to i32 + %dec.i = add nsw i32 %32, -1 store i32 %dec.i, ptr getelementptr inbounds (i8, ptr @ldb, i64 296), align 8 %add.ptr4.i = getelementptr inbounds i8, ptr %arrayidx.i26.le, i64 4 - %sub.i = sub nsw i32 %dec.i, %36 + %sub.i = sub nsw i32 %dec.i, %34 %conv.i28 = sext i32 %sub.i to i64 call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %arrayidx.i26.le, ptr nonnull align 4 %add.ptr4.i, i64 %conv.i28, i1 false) %call45 = call ptr @sdsnew(ptr noundef nonnull @.str.115) #17 - %37 = load ptr, ptr getelementptr inbounds (i8, ptr @ldb, i64 16), align 8 - %call.i29 = call ptr @listAddNodeTail(ptr noundef %37, ptr noundef %call45) #17 + %35 = load ptr, ptr getelementptr inbounds (i8, ptr @ldb, i64 16), align 8 + %call.i29 = call ptr @listAddNodeTail(ptr noundef %35, ptr noundef %call45) #17 br label %for.inc53 if.else46: ; preds = %for.inc.i, %if.then40 %call47 = call ptr @sdsnew(ptr noundef nonnull @.str.116) #17 - %38 = load ptr, ptr getelementptr inbounds (i8, ptr @ldb, i64 16), align 8 - %call.i30 = call ptr @listAddNodeTail(ptr noundef %38, ptr noundef %call47) #17 + %36 = load ptr, ptr getelementptr inbounds (i8, ptr @ldb, i64 16), align 8 + %call.i30 = call ptr @listAddNodeTail(ptr noundef %36, ptr noundef %call47) #17 br label %for.inc53 for.inc53: ; preds = %if.then15, %if.then31, %if.else33, %if.then26, %if.then44, %if.else46, %if.then20 @@ -4334,7 +4330,7 @@ for.inc53: ; preds = %if.then15, %if.then %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %if.end56, label %for.body10, !llvm.loop !29 -if.end56: ; preds = %for.inc53, %ldbLogSourceLine.exit, %for.cond8.preheader, %if.else, %if.then2 +if.end56: ; preds = %for.inc53, %ldbLogSourceLine.exit.loopexit, %for.cond8.preheader, %if.else, %if.then2 ret void } diff --git a/bench/rocksdb/optimized/backup_engine.cc.ll b/bench/rocksdb/optimized/backup_engine.cc.ll index 8b51dcbb544..df0fe027e8f 100644 --- a/bench/rocksdb/optimized/backup_engine.cc.ll +++ b/bench/rocksdb/optimized/backup_engine.cc.ll @@ -1510,11 +1510,11 @@ lpad.body.i.i: ; preds = %lpad.i.i, %lpad23.i br label %lpad3.body _ZN7rocksdb7channelINS_12_GLOBAL__N_116BackupEngineImpl20CopyOrCreateWorkItemEEC2Ev.exit.i: ; preds = %call5.i.i2.i.i1.i.i.i.noexc.i.i - %add.ptr.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %call5.i.i2.i.i1.i.i.i1.i.i, i64 24 - store ptr %call5.i.i.i5.i.i.i.i.i.i.i, ptr %add.ptr.ptr.i.i.i.i.i.i, align 8 + %__cur.03.i.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %call5.i.i2.i.i1.i.i.i1.i.i, i64 24 + store ptr %call5.i.i.i5.i.i.i.i.i.i.i, ptr %__cur.03.i.ptr.i.i.i.i.i.i, align 8 %_M_start.i.i.i.i.i.i = getelementptr inbounds i8, ptr %this, i64 232 %_M_node.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %this, i64 256 - store ptr %add.ptr.ptr.i.i.i.i.i.i, ptr %_M_node.i.i.i.i.i.i.i, align 8 + store ptr %__cur.03.i.ptr.i.i.i.i.i.i, ptr %_M_node.i.i.i.i.i.i.i, align 8 %_M_first.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %this, i64 240 store ptr %call5.i.i.i5.i.i.i.i.i.i.i, ptr %_M_first.i.i.i.i.i.i.i, align 8 %add.ptr.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %call5.i.i.i5.i.i.i.i.i.i.i, i64 392 @@ -1522,7 +1522,7 @@ _ZN7rocksdb7channelINS_12_GLOBAL__N_116BackupEngineImpl20CopyOrCreateWorkItemEEC store ptr %add.ptr.i.i.i.i.i.i.i, ptr %_M_last.i.i.i.i.i.i.i, align 8 %_M_finish.i.i.i.i.i.i = getelementptr inbounds i8, ptr %this, i64 264 %_M_node.i10.i.i.i.i.i.i = getelementptr inbounds i8, ptr %this, i64 288 - store ptr %add.ptr.ptr.i.i.i.i.i.i, ptr %_M_node.i10.i.i.i.i.i.i, align 8 + store ptr %__cur.03.i.ptr.i.i.i.i.i.i, ptr %_M_node.i10.i.i.i.i.i.i, align 8 %_M_first.i11.i.i.i.i.i.i = getelementptr inbounds i8, ptr %this, i64 272 store ptr %call5.i.i.i5.i.i.i.i.i.i.i, ptr %_M_first.i11.i.i.i.i.i.i, align 8 %_M_last.i13.i.i.i.i.i.i = getelementptr inbounds i8, ptr %this, i64 280 @@ -27007,11 +27007,11 @@ unreachable.i.i.i: ; preds = %lpad.body.i.i.i unreachable invoke.cont104: ; preds = %call5.i.i2.i.i1.i.i.noexc - %add.ptr.ptr.i.i.i = getelementptr inbounds i8, ptr %call5.i.i2.i.i1.i.i178, i64 24 - store ptr %call5.i.i.i5.i.i.i.i, ptr %add.ptr.ptr.i.i.i, align 8 + %__cur.03.i.ptr.i.i.i = getelementptr inbounds i8, ptr %call5.i.i2.i.i1.i.i178, i64 24 + store ptr %call5.i.i.i5.i.i.i.i, ptr %__cur.03.i.ptr.i.i.i, align 8 %_M_start.i.i.i = getelementptr inbounds i8, ptr %excludable_items, i64 16 %_M_node.i.i.i.i = getelementptr inbounds i8, ptr %excludable_items, i64 40 - store ptr %add.ptr.ptr.i.i.i, ptr %_M_node.i.i.i.i, align 8 + store ptr %__cur.03.i.ptr.i.i.i, ptr %_M_node.i.i.i.i, align 8 %_M_first.i.i.i.i = getelementptr inbounds i8, ptr %excludable_items, i64 24 store ptr %call5.i.i.i5.i.i.i.i, ptr %_M_first.i.i.i.i, align 8 %add.ptr.i.i.i.i = getelementptr inbounds i8, ptr %call5.i.i.i5.i.i.i.i, i64 520 @@ -27019,7 +27019,7 @@ invoke.cont104: ; preds = %call5.i.i2.i.i1.i.i store ptr %add.ptr.i.i.i.i, ptr %_M_last.i.i.i.i, align 8 %_M_finish.i.i.i = getelementptr inbounds i8, ptr %excludable_items, i64 48 %_M_node.i10.i.i.i = getelementptr inbounds i8, ptr %excludable_items, i64 72 - store ptr %add.ptr.ptr.i.i.i, ptr %_M_node.i10.i.i.i, align 8 + store ptr %__cur.03.i.ptr.i.i.i, ptr %_M_node.i10.i.i.i, align 8 %_M_first.i11.i.i.i = getelementptr inbounds i8, ptr %excludable_items, i64 56 store ptr %call5.i.i.i5.i.i.i.i, ptr %_M_first.i11.i.i.i, align 8 %_M_last.i13.i.i.i = getelementptr inbounds i8, ptr %excludable_items, i64 64 @@ -27087,11 +27087,11 @@ unreachable.i.i.i188: ; preds = %lpad.body.i.i.i184 unreachable invoke.cont106: ; preds = %call5.i.i2.i.i1.i.i.noexc200 - %add.ptr.ptr.i.i.i190 = getelementptr inbounds i8, ptr %call5.i.i2.i.i1.i.i201, i64 24 - store ptr %call5.i.i.i5.i.i.i.i181, ptr %add.ptr.ptr.i.i.i190, align 8 + %__cur.03.i.ptr.i.i.i190 = getelementptr inbounds i8, ptr %call5.i.i2.i.i1.i.i201, i64 24 + store ptr %call5.i.i.i5.i.i.i.i181, ptr %__cur.03.i.ptr.i.i.i190, align 8 %_M_start.i.i.i191 = getelementptr inbounds i8, ptr %backup_items_to_finish, i64 16 %_M_node.i.i.i.i192 = getelementptr inbounds i8, ptr %backup_items_to_finish, i64 40 - store ptr %add.ptr.ptr.i.i.i190, ptr %_M_node.i.i.i.i192, align 8 + store ptr %__cur.03.i.ptr.i.i.i190, ptr %_M_node.i.i.i.i192, align 8 %_M_first.i.i.i.i193 = getelementptr inbounds i8, ptr %backup_items_to_finish, i64 24 store ptr %call5.i.i.i5.i.i.i.i181, ptr %_M_first.i.i.i.i193, align 8 %add.ptr.i.i.i.i194 = getelementptr inbounds i8, ptr %call5.i.i.i5.i.i.i.i181, i64 512 @@ -27099,7 +27099,7 @@ invoke.cont106: ; preds = %call5.i.i2.i.i1.i.i store ptr %add.ptr.i.i.i.i194, ptr %_M_last.i.i.i.i195, align 8 %_M_finish.i.i.i196 = getelementptr inbounds i8, ptr %backup_items_to_finish, i64 48 %_M_node.i10.i.i.i197 = getelementptr inbounds i8, ptr %backup_items_to_finish, i64 72 - store ptr %add.ptr.ptr.i.i.i190, ptr %_M_node.i10.i.i.i197, align 8 + store ptr %__cur.03.i.ptr.i.i.i190, ptr %_M_node.i10.i.i.i197, align 8 %_M_first.i11.i.i.i198 = getelementptr inbounds i8, ptr %backup_items_to_finish, i64 56 store ptr %call5.i.i.i5.i.i.i.i181, ptr %_M_first.i11.i.i.i198, align 8 %_M_last.i13.i.i.i199 = getelementptr inbounds i8, ptr %backup_items_to_finish, i64 64 diff --git a/bench/rocksdb/optimized/column_family.cc.ll b/bench/rocksdb/optimized/column_family.cc.ll index adc8b8c7e52..5c0b581d006 100644 --- a/bench/rocksdb/optimized/column_family.cc.ll +++ b/bench/rocksdb/optimized/column_family.cc.ll @@ -11185,40 +11185,40 @@ entry: %state_.i = getelementptr inbounds i8, ptr %s, i64 8 store ptr null, ptr %state_.i, align 8 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(6) %s, i8 0, i64 6, i1 false) - %ref.tmp187.sink347.sroa.gep = getelementptr inbounds i8, ptr %ref.tmp187, i64 8 - %ref.tmp187.sink347.sroa.gep351 = getelementptr inbounds i8, ptr %ref.tmp210, i64 8 - %ref.tmp187.sink347.sroa.gep352 = getelementptr inbounds i8, ptr %ref.tmp222, i64 8 - %ref.tmp187.sink347.sroa.gep353 = getelementptr inbounds i8, ptr %ref.tmp229, i64 8 - %ref.tmp187.sink347.sroa.gep354 = getelementptr inbounds i8, ptr %ref.tmp244, i64 8 + %ref.tmp187.sink339.sroa.gep = getelementptr inbounds i8, ptr %ref.tmp187, i64 8 + %ref.tmp187.sink339.sroa.gep343 = getelementptr inbounds i8, ptr %ref.tmp210, i64 8 + %ref.tmp187.sink339.sroa.gep344 = getelementptr inbounds i8, ptr %ref.tmp222, i64 8 + %ref.tmp187.sink339.sroa.gep345 = getelementptr inbounds i8, ptr %ref.tmp229, i64 8 + %ref.tmp187.sink339.sroa.gep346 = getelementptr inbounds i8, ptr %ref.tmp244, i64 8 %ref.tmp185.sink.sroa.gep = getelementptr inbounds i8, ptr %ref.tmp185, i64 8 - %ref.tmp185.sink.sroa.gep355 = getelementptr inbounds i8, ptr %ref.tmp208, i64 8 - %ref.tmp185.sink.sroa.gep356 = getelementptr inbounds i8, ptr %ref.tmp220, i64 8 - %ref.tmp185.sink.sroa.gep357 = getelementptr inbounds i8, ptr %ref.tmp227, i64 8 - %ref.tmp185.sink.sroa.gep358 = getelementptr inbounds i8, ptr %ref.tmp242, i64 8 - %ref.tmp49.sink346.sroa.gep = getelementptr inbounds i8, ptr %ref.tmp49, i64 8 - %ref.tmp49.sink346.sroa.gep359 = getelementptr inbounds i8, ptr %ref.tmp78, i64 8 - %ref.tmp49.sink346.sroa.gep360 = getelementptr inbounds i8, ptr %ref.tmp93, i64 8 - %ref.tmp49.sink346.sroa.gep361 = getelementptr inbounds i8, ptr %ref.tmp102, i64 8 - %ref.tmp49.sink346.sroa.gep362 = getelementptr inbounds i8, ptr %ref.tmp120, i64 8 - %ref.tmp49.sink346.sroa.gep363 = getelementptr inbounds i8, ptr %ref.tmp134, i64 8 - %ref.tmp49.sink346.sroa.gep364 = getelementptr inbounds i8, ptr %ref.tmp145, i64 8 - %ref.tmp49.sink346.sroa.gep365 = getelementptr inbounds i8, ptr %ref.tmp159, i64 8 + %ref.tmp185.sink.sroa.gep347 = getelementptr inbounds i8, ptr %ref.tmp208, i64 8 + %ref.tmp185.sink.sroa.gep348 = getelementptr inbounds i8, ptr %ref.tmp220, i64 8 + %ref.tmp185.sink.sroa.gep349 = getelementptr inbounds i8, ptr %ref.tmp227, i64 8 + %ref.tmp185.sink.sroa.gep350 = getelementptr inbounds i8, ptr %ref.tmp242, i64 8 + %ref.tmp49.sink338.sroa.gep = getelementptr inbounds i8, ptr %ref.tmp49, i64 8 + %ref.tmp49.sink338.sroa.gep351 = getelementptr inbounds i8, ptr %ref.tmp78, i64 8 + %ref.tmp49.sink338.sroa.gep352 = getelementptr inbounds i8, ptr %ref.tmp93, i64 8 + %ref.tmp49.sink338.sroa.gep353 = getelementptr inbounds i8, ptr %ref.tmp102, i64 8 + %ref.tmp49.sink338.sroa.gep354 = getelementptr inbounds i8, ptr %ref.tmp120, i64 8 + %ref.tmp49.sink338.sroa.gep355 = getelementptr inbounds i8, ptr %ref.tmp134, i64 8 + %ref.tmp49.sink338.sroa.gep356 = getelementptr inbounds i8, ptr %ref.tmp145, i64 8 + %ref.tmp49.sink338.sroa.gep357 = getelementptr inbounds i8, ptr %ref.tmp159, i64 8 %ref.tmp47.sink.sroa.gep = getelementptr inbounds i8, ptr %ref.tmp47, i64 8 - %ref.tmp47.sink.sroa.gep366 = getelementptr inbounds i8, ptr %ref.tmp76, i64 8 - %ref.tmp47.sink.sroa.gep367 = getelementptr inbounds i8, ptr %ref.tmp91, i64 8 - %ref.tmp47.sink.sroa.gep368 = getelementptr inbounds i8, ptr %ref.tmp100, i64 8 - %ref.tmp47.sink.sroa.gep369 = getelementptr inbounds i8, ptr %ref.tmp118, i64 8 - %ref.tmp47.sink.sroa.gep370 = getelementptr inbounds i8, ptr %ref.tmp132, i64 8 - %ref.tmp47.sink.sroa.gep371 = getelementptr inbounds i8, ptr %ref.tmp143, i64 8 - %ref.tmp47.sink.sroa.gep372 = getelementptr inbounds i8, ptr %ref.tmp157, i64 8 - %ref.tmp1.i.sink349.sroa.gep = getelementptr inbounds i8, ptr %ref.tmp1.i, i64 8 - %ref.tmp1.i.sink349.sroa.gep373 = getelementptr inbounds i8, ptr %ref.tmp5.i, i64 8 + %ref.tmp47.sink.sroa.gep358 = getelementptr inbounds i8, ptr %ref.tmp76, i64 8 + %ref.tmp47.sink.sroa.gep359 = getelementptr inbounds i8, ptr %ref.tmp91, i64 8 + %ref.tmp47.sink.sroa.gep360 = getelementptr inbounds i8, ptr %ref.tmp100, i64 8 + %ref.tmp47.sink.sroa.gep361 = getelementptr inbounds i8, ptr %ref.tmp118, i64 8 + %ref.tmp47.sink.sroa.gep362 = getelementptr inbounds i8, ptr %ref.tmp132, i64 8 + %ref.tmp47.sink.sroa.gep363 = getelementptr inbounds i8, ptr %ref.tmp143, i64 8 + %ref.tmp47.sink.sroa.gep364 = getelementptr inbounds i8, ptr %ref.tmp157, i64 8 + %ref.tmp1.i.sink341.sroa.gep = getelementptr inbounds i8, ptr %ref.tmp1.i, i64 8 + %ref.tmp1.i.sink341.sroa.gep365 = getelementptr inbounds i8, ptr %ref.tmp5.i, i64 8 %ref.tmp.i.sink.sroa.gep = getelementptr inbounds i8, ptr %ref.tmp.i, i64 8 - %ref.tmp.i.sink.sroa.gep374 = getelementptr inbounds i8, ptr %ref.tmp4.i, i64 8 - %ref.tmp6.i.sink345.sroa.gep = getelementptr inbounds i8, ptr %ref.tmp6.i, i64 8 - %ref.tmp6.i.sink345.sroa.gep375 = getelementptr inbounds i8, ptr %ref.tmp14.i, i64 8 + %ref.tmp.i.sink.sroa.gep366 = getelementptr inbounds i8, ptr %ref.tmp4.i, i64 8 + %ref.tmp6.i.sink337.sroa.gep = getelementptr inbounds i8, ptr %ref.tmp6.i, i64 8 + %ref.tmp6.i.sink337.sroa.gep367 = getelementptr inbounds i8, ptr %ref.tmp14.i, i64 8 %ref.tmp.i106.sink.sroa.gep = getelementptr inbounds i8, ptr %ref.tmp.i106, i64 8 - %ref.tmp.i106.sink.sroa.gep376 = getelementptr inbounds i8, ptr %ref.tmp13.i, i64 8 + %ref.tmp.i106.sink.sroa.gep368 = getelementptr inbounds i8, ptr %ref.tmp13.i, i64 8 invoke void @_ZN7rocksdb25CheckCompressionSupportedERKNS_19ColumnFamilyOptionsE(ptr nonnull sret(%"class.rocksdb::Status") align 8 %ref.tmp, ptr noundef nonnull align 8 dereferenceable(820) %cf_options) to label %invoke.cont1 unwind label %lpad @@ -11298,15 +11298,15 @@ if.then3.i: ; preds = %call2.i.noexc br label %if.then3.i.invoke if.then3.i.invoke: ; preds = %if.then.i, %if.then3.i - %ref.tmp.i.sink.sroa.phi = phi ptr [ %ref.tmp.i.sink.sroa.gep, %if.then.i ], [ %ref.tmp.i.sink.sroa.gep374, %if.then3.i ] + %ref.tmp.i.sink.sroa.phi = phi ptr [ %ref.tmp.i.sink.sroa.gep, %if.then.i ], [ %ref.tmp.i.sink.sroa.gep366, %if.then3.i ] %ref.tmp.i.sink = phi ptr [ %ref.tmp.i, %if.then.i ], [ %ref.tmp4.i, %if.then3.i ] - %.sink350 = phi i64 [ 125, %if.then.i ], [ 68, %if.then3.i ] - %ref.tmp1.i.sink349.sroa.phi = phi ptr [ %ref.tmp1.i.sink349.sroa.gep, %if.then.i ], [ %ref.tmp1.i.sink349.sroa.gep373, %if.then3.i ] - %ref.tmp1.i.sink349 = phi ptr [ %ref.tmp1.i, %if.then.i ], [ %ref.tmp5.i, %if.then3.i ] - store i64 %.sink350, ptr %ref.tmp.i.sink.sroa.phi, align 8, !noalias !79 - store ptr @.str, ptr %ref.tmp1.i.sink349, align 8, !noalias !79 - store i64 0, ptr %ref.tmp1.i.sink349.sroa.phi, align 8, !noalias !79 - invoke void @_ZN7rocksdb6StatusC2ENS0_4CodeENS0_7SubCodeERKNS_5SliceES5_NS0_8SeverityE(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp3, i8 noundef zeroext 4, i8 noundef zeroext 0, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i.sink, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp1.i.sink349, i8 noundef zeroext 0) + %.sink342 = phi i64 [ 125, %if.then.i ], [ 68, %if.then3.i ] + %ref.tmp1.i.sink341.sroa.phi = phi ptr [ %ref.tmp1.i.sink341.sroa.gep, %if.then.i ], [ %ref.tmp1.i.sink341.sroa.gep365, %if.then3.i ] + %ref.tmp1.i.sink341 = phi ptr [ %ref.tmp1.i, %if.then.i ], [ %ref.tmp5.i, %if.then3.i ] + store i64 %.sink342, ptr %ref.tmp.i.sink.sroa.phi, align 8, !noalias !79 + store ptr @.str, ptr %ref.tmp1.i.sink341, align 8, !noalias !79 + store i64 0, ptr %ref.tmp1.i.sink341.sroa.phi, align 8, !noalias !79 + invoke void @_ZN7rocksdb6StatusC2ENS0_4CodeENS0_7SubCodeERKNS_5SliceES5_NS0_8SeverityE(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp3, i8 noundef zeroext 4, i8 noundef zeroext 0, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i.sink, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp1.i.sink341, i8 noundef zeroext 0) to label %invoke.cont4 unwind label %lpad if.end6.i: ; preds = %call2.i.noexc @@ -11492,14 +11492,14 @@ if.then12.i: ; preds = %land.lhs.true9.i br label %if.then12.i.invoke if.then12.i.invoke: ; preds = %if.then5.i, %if.then12.i - %ref.tmp.i106.sink.sroa.phi = phi ptr [ %ref.tmp.i106.sink.sroa.gep, %if.then5.i ], [ %ref.tmp.i106.sink.sroa.gep376, %if.then12.i ] + %ref.tmp.i106.sink.sroa.phi = phi ptr [ %ref.tmp.i106.sink.sroa.gep, %if.then5.i ], [ %ref.tmp.i106.sink.sroa.gep368, %if.then12.i ] %ref.tmp.i106.sink = phi ptr [ %ref.tmp.i106, %if.then5.i ], [ %ref.tmp13.i, %if.then12.i ] - %ref.tmp6.i.sink345.sroa.phi = phi ptr [ %ref.tmp6.i.sink345.sroa.gep, %if.then5.i ], [ %ref.tmp6.i.sink345.sroa.gep375, %if.then12.i ] - %ref.tmp6.i.sink345 = phi ptr [ %ref.tmp6.i, %if.then5.i ], [ %ref.tmp14.i, %if.then12.i ] + %ref.tmp6.i.sink337.sroa.phi = phi ptr [ %ref.tmp6.i.sink337.sroa.gep, %if.then5.i ], [ %ref.tmp6.i.sink337.sroa.gep367, %if.then12.i ] + %ref.tmp6.i.sink337 = phi ptr [ %ref.tmp6.i, %if.then5.i ], [ %ref.tmp14.i, %if.then12.i ] store i64 84, ptr %ref.tmp.i106.sink.sroa.phi, align 8, !noalias !85 - store ptr @.str, ptr %ref.tmp6.i.sink345, align 8, !noalias !85 - store i64 0, ptr %ref.tmp6.i.sink345.sroa.phi, align 8, !noalias !85 - invoke void @_ZN7rocksdb6StatusC2ENS0_4CodeENS0_7SubCodeERKNS_5SliceES5_NS0_8SeverityE(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp23, i8 noundef zeroext 3, i8 noundef zeroext 0, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i106.sink, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp6.i.sink345, i8 noundef zeroext 0) + store ptr @.str, ptr %ref.tmp6.i.sink337, align 8, !noalias !85 + store i64 0, ptr %ref.tmp6.i.sink337.sroa.phi, align 8, !noalias !85 + invoke void @_ZN7rocksdb6StatusC2ENS0_4CodeENS0_7SubCodeERKNS_5SliceES5_NS0_8SeverityE(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp23, i8 noundef zeroext 3, i8 noundef zeroext 0, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i106.sink, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp6.i.sink337, i8 noundef zeroext 0) to label %invoke.cont24 unwind label %lpad if.end16.i: ; preds = %land.lhs.true9.i, %if.else.i, %if.then22 @@ -11818,16 +11818,16 @@ if.then156: ; preds = %if.end149 br label %if.then156.invoke if.then156.invoke: ; preds = %if.then46, %if.then75, %if.then90, %if.then99, %if.then117, %if.then131, %if.then142, %if.then156 - %ref.tmp47.sink.sroa.phi = phi ptr [ %ref.tmp47.sink.sroa.gep, %if.then46 ], [ %ref.tmp47.sink.sroa.gep366, %if.then75 ], [ %ref.tmp47.sink.sroa.gep367, %if.then90 ], [ %ref.tmp47.sink.sroa.gep368, %if.then99 ], [ %ref.tmp47.sink.sroa.gep369, %if.then117 ], [ %ref.tmp47.sink.sroa.gep370, %if.then131 ], [ %ref.tmp47.sink.sroa.gep371, %if.then142 ], [ %ref.tmp47.sink.sroa.gep372, %if.then156 ] + %ref.tmp47.sink.sroa.phi = phi ptr [ %ref.tmp47.sink.sroa.gep, %if.then46 ], [ %ref.tmp47.sink.sroa.gep358, %if.then75 ], [ %ref.tmp47.sink.sroa.gep359, %if.then90 ], [ %ref.tmp47.sink.sroa.gep360, %if.then99 ], [ %ref.tmp47.sink.sroa.gep361, %if.then117 ], [ %ref.tmp47.sink.sroa.gep362, %if.then131 ], [ %ref.tmp47.sink.sroa.gep363, %if.then142 ], [ %ref.tmp47.sink.sroa.gep364, %if.then156 ] %ref.tmp47.sink = phi ptr [ %ref.tmp47, %if.then46 ], [ %ref.tmp76, %if.then75 ], [ %ref.tmp91, %if.then90 ], [ %ref.tmp100, %if.then99 ], [ %ref.tmp118, %if.then117 ], [ %ref.tmp132, %if.then131 ], [ %ref.tmp143, %if.then142 ], [ %ref.tmp157, %if.then156 ] %.sink = phi i64 [ 51, %if.then46 ], [ 67, %if.then75 ], [ 96, %if.then90 ], [ 110, %if.then99 ], [ 105, %if.then117 ], [ 77, %if.then131 ], [ 98, %if.then142 ], [ 56, %if.then156 ] - %ref.tmp49.sink346.sroa.phi = phi ptr [ %ref.tmp49.sink346.sroa.gep, %if.then46 ], [ %ref.tmp49.sink346.sroa.gep359, %if.then75 ], [ %ref.tmp49.sink346.sroa.gep360, %if.then90 ], [ %ref.tmp49.sink346.sroa.gep361, %if.then99 ], [ %ref.tmp49.sink346.sroa.gep362, %if.then117 ], [ %ref.tmp49.sink346.sroa.gep363, %if.then131 ], [ %ref.tmp49.sink346.sroa.gep364, %if.then142 ], [ %ref.tmp49.sink346.sroa.gep365, %if.then156 ] - %ref.tmp49.sink346 = phi ptr [ %ref.tmp49, %if.then46 ], [ %ref.tmp78, %if.then75 ], [ %ref.tmp93, %if.then90 ], [ %ref.tmp102, %if.then99 ], [ %ref.tmp120, %if.then117 ], [ %ref.tmp134, %if.then131 ], [ %ref.tmp145, %if.then142 ], [ %ref.tmp159, %if.then156 ] + %ref.tmp49.sink338.sroa.phi = phi ptr [ %ref.tmp49.sink338.sroa.gep, %if.then46 ], [ %ref.tmp49.sink338.sroa.gep351, %if.then75 ], [ %ref.tmp49.sink338.sroa.gep352, %if.then90 ], [ %ref.tmp49.sink338.sroa.gep353, %if.then99 ], [ %ref.tmp49.sink338.sroa.gep354, %if.then117 ], [ %ref.tmp49.sink338.sroa.gep355, %if.then131 ], [ %ref.tmp49.sink338.sroa.gep356, %if.then142 ], [ %ref.tmp49.sink338.sroa.gep357, %if.then156 ] + %ref.tmp49.sink338 = phi ptr [ %ref.tmp49, %if.then46 ], [ %ref.tmp78, %if.then75 ], [ %ref.tmp93, %if.then90 ], [ %ref.tmp102, %if.then99 ], [ %ref.tmp120, %if.then117 ], [ %ref.tmp134, %if.then131 ], [ %ref.tmp145, %if.then142 ], [ %ref.tmp159, %if.then156 ] %74 = phi i8 [ 3, %if.then46 ], [ 3, %if.then75 ], [ 3, %if.then90 ], [ 3, %if.then99 ], [ 3, %if.then117 ], [ 4, %if.then131 ], [ 4, %if.then142 ], [ 3, %if.then156 ] store i64 %.sink, ptr %ref.tmp47.sink.sroa.phi, align 8 - store ptr @.str, ptr %ref.tmp49.sink346, align 8 - store i64 0, ptr %ref.tmp49.sink346.sroa.phi, align 8 - invoke void @_ZN7rocksdb6StatusC2ENS0_4CodeENS0_7SubCodeERKNS_5SliceES5_NS0_8SeverityE(ptr noundef nonnull align 8 dereferenceable(16) %agg.result, i8 noundef zeroext %74, i8 noundef zeroext 0, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp47.sink, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp49.sink346, i8 noundef zeroext 0) + store ptr @.str, ptr %ref.tmp49.sink338, align 8 + store i64 0, ptr %ref.tmp49.sink338.sroa.phi, align 8 + invoke void @_ZN7rocksdb6StatusC2ENS0_4CodeENS0_7SubCodeERKNS_5SliceES5_NS0_8SeverityE(ptr noundef nonnull align 8 dereferenceable(16) %agg.result, i8 noundef zeroext %74, i8 noundef zeroext 0, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp47.sink, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp49.sink338, i8 noundef zeroext 0) to label %cleanup252 unwind label %lpad for.body.lr.ph.i.i.i: ; preds = %if.end149 @@ -11918,15 +11918,15 @@ if.then241: ; preds = %for.body br label %if.then241.invoke if.then241.invoke: ; preds = %if.then184, %if.then207, %if.then219, %if.then226, %if.then241 - %ref.tmp185.sink.sroa.phi = phi ptr [ %ref.tmp185.sink.sroa.gep, %if.then184 ], [ %ref.tmp185.sink.sroa.gep355, %if.then207 ], [ %ref.tmp185.sink.sroa.gep356, %if.then219 ], [ %ref.tmp185.sink.sroa.gep357, %if.then226 ], [ %ref.tmp185.sink.sroa.gep358, %if.then241 ] + %ref.tmp185.sink.sroa.phi = phi ptr [ %ref.tmp185.sink.sroa.gep, %if.then184 ], [ %ref.tmp185.sink.sroa.gep347, %if.then207 ], [ %ref.tmp185.sink.sroa.gep348, %if.then219 ], [ %ref.tmp185.sink.sroa.gep349, %if.then226 ], [ %ref.tmp185.sink.sroa.gep350, %if.then241 ] %ref.tmp185.sink = phi ptr [ %ref.tmp185, %if.then184 ], [ %ref.tmp208, %if.then207 ], [ %ref.tmp220, %if.then219 ], [ %ref.tmp227, %if.then226 ], [ %ref.tmp242, %if.then241 ] - %.sink348 = phi i64 [ 87, %if.then184 ], [ 84, %if.then207 ], [ 69, %if.then219 ], [ 77, %if.then226 ], [ 118, %if.then241 ] - %ref.tmp187.sink347.sroa.phi = phi ptr [ %ref.tmp187.sink347.sroa.gep, %if.then184 ], [ %ref.tmp187.sink347.sroa.gep351, %if.then207 ], [ %ref.tmp187.sink347.sroa.gep352, %if.then219 ], [ %ref.tmp187.sink347.sroa.gep353, %if.then226 ], [ %ref.tmp187.sink347.sroa.gep354, %if.then241 ] - %ref.tmp187.sink347 = phi ptr [ %ref.tmp187, %if.then184 ], [ %ref.tmp210, %if.then207 ], [ %ref.tmp222, %if.then219 ], [ %ref.tmp229, %if.then226 ], [ %ref.tmp244, %if.then241 ] - store i64 %.sink348, ptr %ref.tmp185.sink.sroa.phi, align 8 - store ptr @.str, ptr %ref.tmp187.sink347, align 8 - store i64 0, ptr %ref.tmp187.sink347.sroa.phi, align 8 - invoke void @_ZN7rocksdb6StatusC2ENS0_4CodeENS0_7SubCodeERKNS_5SliceES5_NS0_8SeverityE(ptr noundef nonnull align 8 dereferenceable(16) %agg.result, i8 noundef zeroext 3, i8 noundef zeroext 0, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp185.sink, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp187.sink347, i8 noundef zeroext 0) + %.sink340 = phi i64 [ 87, %if.then184 ], [ 84, %if.then207 ], [ 69, %if.then219 ], [ 77, %if.then226 ], [ 118, %if.then241 ] + %ref.tmp187.sink339.sroa.phi = phi ptr [ %ref.tmp187.sink339.sroa.gep, %if.then184 ], [ %ref.tmp187.sink339.sroa.gep343, %if.then207 ], [ %ref.tmp187.sink339.sroa.gep344, %if.then219 ], [ %ref.tmp187.sink339.sroa.gep345, %if.then226 ], [ %ref.tmp187.sink339.sroa.gep346, %if.then241 ] + %ref.tmp187.sink339 = phi ptr [ %ref.tmp187, %if.then184 ], [ %ref.tmp210, %if.then207 ], [ %ref.tmp222, %if.then219 ], [ %ref.tmp229, %if.then226 ], [ %ref.tmp244, %if.then241 ] + store i64 %.sink340, ptr %ref.tmp185.sink.sroa.phi, align 8 + store ptr @.str, ptr %ref.tmp187.sink339, align 8 + store i64 0, ptr %ref.tmp187.sink339.sroa.phi, align 8 + invoke void @_ZN7rocksdb6StatusC2ENS0_4CodeENS0_7SubCodeERKNS_5SliceES5_NS0_8SeverityE(ptr noundef nonnull align 8 dereferenceable(16) %agg.result, i8 noundef zeroext 3, i8 noundef zeroext 0, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp185.sink, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp187.sink339, i8 noundef zeroext 0) to label %cleanup252 unwind label %_ZNSt6vectorIjSaIjEED2Ev.exit if.end250: ; preds = %for.cond, %if.end213 diff --git a/bench/ruby/optimized/string.ll b/bench/ruby/optimized/string.ll index ceaa9623e84..7b1ae284251 100644 --- a/bench/ruby/optimized/string.ll +++ b/bench/ruby/optimized/string.ll @@ -10702,30 +10702,30 @@ RSTRING_PTR.exit: ; preds = %get_encoding.exit, %26 = getelementptr inbounds i8, ptr %17, i64 40 %27 = getelementptr inbounds i8, ptr %17, i64 48 %28 = ptrtoint ptr %.sroa.2.0.i to i64 - br label %.outer181 + br label %.outer180 -.outer181: ; preds = %143, %RSTRING_PTR.exit +.outer180: ; preds = %143, %RSTRING_PTR.exit %.0129.ph = phi i64 [ %145, %143 ], [ 0, %RSTRING_PTR.exit ] %.0127.ph = phi i64 [ %57, %143 ], [ 1, %RSTRING_PTR.exit ] %.not143 = phi i1 [ false, %143 ], [ true, %RSTRING_PTR.exit ] - %.0123.ph = phi ptr [ %.us-phi219, %143 ], [ null, %RSTRING_PTR.exit ] - %.0122.ph = phi ptr [ %.us-phi219, %143 ], [ %22, %RSTRING_PTR.exit ] + %.0123.ph = phi ptr [ %.us-phi214, %143 ], [ null, %RSTRING_PTR.exit ] + %.0122.ph = phi ptr [ %.us-phi214, %143 ], [ %22, %RSTRING_PTR.exit ] %29 = icmp ne ptr %.0123.ph, null - br label %.outer182 + br label %.outer181 -.outer182: ; preds = %.outer181, %enc_succ_alnum_char.exit - %30 = phi i1 [ false, %.outer181 ], [ true, %enc_succ_alnum_char.exit ] - %.0122.ph186 = phi ptr [ %.0122.ph, %.outer181 ], [ %.us-phi219, %enc_succ_alnum_char.exit ] +.outer181: ; preds = %.outer180, %enc_succ_alnum_char.exit + %30 = phi i1 [ false, %.outer180 ], [ true, %enc_succ_alnum_char.exit ] + %.0122.ph185 = phi ptr [ %.0122.ph, %.outer180 ], [ %.us-phi214, %enc_succ_alnum_char.exit ] %or.cond = and i1 %30, %29 - br i1 %or.cond, label %.outer182.split.us, label %.outer182.split + br i1 %or.cond, label %.outer181.split.us, label %.outer181.split -.outer182.split.us: ; preds = %.outer182, %50 - %.0122.us = phi ptr [ %31, %50 ], [ %.0122.ph186, %.outer182 ] +.outer181.split.us: ; preds = %.outer181, %50 + %.0122.us = phi ptr [ %31, %50 ], [ %.0122.ph185, %.outer181 ] %31 = call ptr @onigenc_get_prev_char_head(ptr noundef %17, ptr noundef %.sroa.2.0.i, ptr noundef %.0122.us, ptr noundef %22) #28 %.not.us = icmp eq ptr %31, null br i1 %.not.us, label %.split.us, label %32 -32: ; preds = %.outer182.split.us +32: ; preds = %.outer181.split.us %33 = load i8, ptr %.0123.ph, align 1 %34 = sext i8 %33 to i32 %35 = and i32 %34, -33 @@ -10756,52 +10756,52 @@ RSTRING_PTR.exit: ; preds = %get_encoding.exit, 50: ; preds = %45, %42, %37 %51 = call i32 @rb_enc_precise_mbclen(ptr noundef nonnull %31, ptr noundef %22, ptr noundef %17) #28 %52 = icmp sgt i32 %51, 0 - br i1 %52, label %.split216.us, label %.outer182.split.us, !llvm.loop !204 + br i1 %52, label %.split211.us, label %.outer181.split.us, !llvm.loop !204 -.outer182.split: ; preds = %.outer182, %54 - %.0122 = phi ptr [ %53, %54 ], [ %.0122.ph186, %.outer182 ] +.outer181.split: ; preds = %.outer181, %54 + %.0122 = phi ptr [ %53, %54 ], [ %.0122.ph185, %.outer181 ] %53 = call ptr @onigenc_get_prev_char_head(ptr noundef %17, ptr noundef %.sroa.2.0.i, ptr noundef %.0122, ptr noundef %22) #28 %.not = icmp eq ptr %53, null br i1 %.not, label %.split.us, label %54 -54: ; preds = %.outer182.split +54: ; preds = %.outer181.split %55 = call i32 @rb_enc_precise_mbclen(ptr noundef nonnull %53, ptr noundef %22, ptr noundef %17) #28 %56 = icmp sgt i32 %55, 0 - br i1 %56, label %.split216.us, label %.outer182.split, !llvm.loop !204 + br i1 %56, label %.split211.us, label %.outer181.split, !llvm.loop !204 -.split216.us: ; preds = %54, %50 - %.us-phi217 = phi i32 [ %51, %50 ], [ %55, %54 ] - %.us-phi219 = phi ptr [ %31, %50 ], [ %53, %54 ] - %57 = zext nneg i32 %.us-phi217 to i64 +.split211.us: ; preds = %54, %50 + %.us-phi212 = phi i32 [ %51, %50 ], [ %55, %54 ] + %.us-phi214 = phi ptr [ %31, %50 ], [ %53, %54 ] + %57 = zext nneg i32 %.us-phi212 to i64 call void @llvm.lifetime.start.p0(i64 7, ptr nonnull %2) - %58 = getelementptr i8, ptr %.us-phi219, i64 %57 + %58 = getelementptr i8, ptr %.us-phi214, i64 %57 %59 = load ptr, ptr %23, align 8 - %60 = call i32 %59(ptr noundef nonnull %.us-phi219, ptr noundef %58, ptr noundef %17) #28 + %60 = call i32 %59(ptr noundef nonnull %.us-phi214, ptr noundef %58, ptr noundef %17) #28 %61 = load ptr, ptr %24, align 8 %62 = call i32 %61(i32 noundef %60, i32 noundef 4, ptr noundef %17) #28 %.not.i = icmp eq i32 %62, 0 br i1 %.not.i, label %63, label %66 -63: ; preds = %.split216.us +63: ; preds = %.split211.us %64 = load ptr, ptr %24, align 8 %65 = call i32 %64(i32 noundef %60, i32 noundef 1, ptr noundef nonnull %17) #28 %.not65.i = icmp eq i32 %65, 0 br i1 %.not65.i, label %enc_succ_alnum_char.exit, label %66 -66: ; preds = %63, %.split216.us - %.056.i = phi i32 [ 4, %.split216.us ], [ 1, %63 ] - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %2, ptr noundef nonnull readonly align 1 dereferenceable(1) %.us-phi219, i64 %57, i1 false) +66: ; preds = %63, %.split211.us + %.056.i = phi i32 [ 4, %.split211.us ], [ 1, %63 ] + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %2, ptr noundef nonnull readonly align 1 dereferenceable(1) %.us-phi214, i64 %57, i1 false) br label %67 67: ; preds = %76, %66 %68 = phi i1 [ true, %66 ], [ false, %76 ] - %69 = call fastcc i32 @enc_succ_char(ptr noundef %.us-phi219, i64 noundef %57, ptr noundef %17) + %69 = call fastcc i32 @enc_succ_char(ptr noundef %.us-phi214, i64 noundef %57, ptr noundef %17) %70 = icmp eq i32 %69, 1 br i1 %70, label %71, label %76 71: ; preds = %67 %72 = load ptr, ptr %23, align 8 - %73 = call i32 %72(ptr noundef nonnull %.us-phi219, ptr noundef %58, ptr noundef %17) #28 + %73 = call i32 %72(ptr noundef nonnull %.us-phi214, ptr noundef %58, ptr noundef %17) #28 %74 = load ptr, ptr %24, align 8 %75 = call i32 %74(i32 noundef %73, i32 noundef %.056.i, ptr noundef %17) #28 %.not67.i = icmp eq i32 %75, 0 @@ -10815,146 +10815,145 @@ enc_succ_alnum_char.exit.thread174: ; preds = %71 br i1 %68, label %67, label %77, !llvm.loop !205 77: ; preds = %76 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.us-phi219, ptr noundef nonnull readonly align 1 dereferenceable(1) %2, i64 %57, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.us-phi214, ptr noundef nonnull readonly align 1 dereferenceable(1) %2, i64 %57, i1 false) %78 = add nsw i64 %57, -1 - %invariant.gep.i.i = getelementptr i8, ptr %.us-phi219, i64 1 - %.not177 = icmp eq i32 %.us-phi217, 1 - br label %79 + %invariant.gep.i.i = getelementptr i8, ptr %.us-phi214, i64 1 + %.not177 = icmp eq i32 %.us-phi212, 1 + %79 = getelementptr i8, ptr %.us-phi214, i64 %78 + br label %80 -79: ; preds = %137, %77 +80: ; preds = %137, %77 %.055.i = phi i32 [ 1, %77 ], [ %138, %137 ] - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %2, ptr noundef nonnull readonly align 1 dereferenceable(1) %.us-phi219, i64 %57, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %2, ptr noundef nonnull readonly align 1 dereferenceable(1) %.us-phi214, i64 %57, i1 false) %.val.i.i = load i32, ptr %25, align 4 - %80 = icmp sgt i32 %.val.i.i, 1 - br i1 %80, label %105, label %.preheader74.i.i + %81 = icmp sgt i32 %.val.i.i, 1 + br i1 %81, label %108, label %.preheader74.i.i -.preheader74.i.i: ; preds = %79 - br i1 %.not177, label %.preheader74.split.i.i, label %.preheader74.split.us.i.i +.preheader74.i.i: ; preds = %80 + br i1 %.not177, label %.preheader74.split.i.i.preheader, label %.preheader74.split.us.i.i + +.preheader74.split.i.i.preheader: ; preds = %.preheader74.i.i + %82 = load i8, ptr %79, align 1 + %83 = icmp eq i8 %82, 0 + br i1 %83, label %enc_pred_char.exit.thread.loopexit68.i, label %.critedge.i.i .preheader74.split.us.i.i: ; preds = %.preheader74.i.i, %.preheader74.split.us.i.i.backedge %.06477.us.i.i = phi i64 [ %.06477.us.i.i.be, %.preheader74.split.us.i.i.backedge ], [ %78, %.preheader74.i.i ] - %81 = getelementptr i8, ptr %.us-phi219, i64 %.06477.us.i.i - %82 = load i8, ptr %81, align 1 - %83 = icmp eq i8 %82, 0 - br i1 %83, label %102, label %.critedge.us.i.i + %84 = getelementptr i8, ptr %.us-phi214, i64 %.06477.us.i.i + %85 = load i8, ptr %84, align 1 + %86 = icmp eq i8 %85, 0 + br i1 %86, label %105, label %.critedge.us.i.i .critedge.us.i.i: ; preds = %.preheader74.split.us.i.i - %84 = add i8 %82, -1 - store i8 %84, ptr %81, align 1 - %85 = call i32 @rb_enc_precise_mbclen(ptr noundef nonnull %.us-phi219, ptr noundef %58, ptr noundef %17) #28 - %86 = icmp sgt i32 %85, 0 - br i1 %86, label %97, label %87 - -87: ; preds = %.critedge.us.i.i - %88 = icmp eq i32 %85, -1 - %89 = icmp slt i64 %.06477.us.i.i, %78 - %or.cond.us.i.i = select i1 %88, i1 %89, i1 false + %87 = add i8 %85, -1 + store i8 %87, ptr %84, align 1 + %88 = call i32 @rb_enc_precise_mbclen(ptr noundef nonnull %.us-phi214, ptr noundef %58, ptr noundef %17) #28 + %89 = icmp sgt i32 %88, 0 + br i1 %89, label %100, label %90 + +90: ; preds = %.critedge.us.i.i + %91 = icmp eq i32 %88, -1 + %92 = icmp slt i64 %.06477.us.i.i, %78 + %or.cond.us.i.i = select i1 %91, i1 %92, i1 false br i1 %or.cond.us.i.i, label %.preheader.us.i.i, label %.preheader74.split.us.i.i.backedge -.preheader.us.i.i: ; preds = %87, %94 - %.06278.us.i.i = phi i64 [ %95, %94 ], [ %78, %87 ] - %90 = getelementptr i8, ptr %.us-phi219, i64 %.06278.us.i.i - %91 = call i32 @rb_enc_precise_mbclen(ptr noundef nonnull %.us-phi219, ptr noundef %90, ptr noundef %17) #28 - %92 = icmp eq i32 %91, -1 - br i1 %92, label %94, label %._crit_edge.us.i.i +.preheader.us.i.i: ; preds = %90, %97 + %.06278.us.i.i = phi i64 [ %98, %97 ], [ %78, %90 ] + %93 = getelementptr i8, ptr %.us-phi214, i64 %.06278.us.i.i + %94 = call i32 @rb_enc_precise_mbclen(ptr noundef nonnull %.us-phi214, ptr noundef %93, ptr noundef %17) #28 + %95 = icmp eq i32 %94, -1 + br i1 %95, label %97, label %._crit_edge.us.i.i -._crit_edge.us.i.i: ; preds = %94, %.preheader.us.i.i - %.062.lcssa.us.i.i = phi i64 [ %.06278.us.i.i, %.preheader.us.i.i ], [ 0, %94 ] +._crit_edge.us.i.i: ; preds = %97, %.preheader.us.i.i + %.062.lcssa.us.i.i = phi i64 [ %.06278.us.i.i, %.preheader.us.i.i ], [ 0, %97 ] %gep.us.i.i = getelementptr i8, ptr %invariant.gep.i.i, i64 %.062.lcssa.us.i.i %.neg.us.i.i = xor i64 %.062.lcssa.us.i.i, -1 - %93 = add i64 %.neg.us.i.i, %57 - call void @llvm.memset.p0.i64(ptr align 1 %gep.us.i.i, i8 0, i64 %93, i1 false) + %96 = add i64 %.neg.us.i.i, %57 + call void @llvm.memset.p0.i64(ptr align 1 %gep.us.i.i, i8 0, i64 %96, i1 false) br label %.preheader74.split.us.i.i.backedge -94: ; preds = %.preheader.us.i.i - %95 = add nsw i64 %.06278.us.i.i, -1 - %96 = icmp sgt i64 %.06278.us.i.i, 1 - br i1 %96, label %.preheader.us.i.i, label %._crit_edge.us.i.i, !llvm.loop !206 +97: ; preds = %.preheader.us.i.i + %98 = add nsw i64 %.06278.us.i.i, -1 + %99 = icmp sgt i64 %.06278.us.i.i, 1 + br i1 %99, label %.preheader.us.i.i, label %._crit_edge.us.i.i, !llvm.loop !206 -97: ; preds = %.critedge.us.i.i - %98 = icmp eq i32 %.us-phi217, %85 - br i1 %98, label %enc_pred_char.exit.thread63.i, label %.thread.us.i.i +100: ; preds = %.critedge.us.i.i + %101 = icmp eq i32 %.us-phi212, %88 + br i1 %101, label %enc_pred_char.exit.thread63.i, label %.thread.us.i.i -.thread.us.i.i: ; preds = %97 - %99 = zext nneg i32 %85 to i64 - %100 = getelementptr i8, ptr %.us-phi219, i64 %99 - %101 = sub nsw i64 %57, %99 - call void @llvm.memset.p0.i64(ptr align 1 %100, i8 0, i64 %101, i1 false) +.thread.us.i.i: ; preds = %100 + %102 = zext nneg i32 %88 to i64 + %103 = getelementptr i8, ptr %.us-phi214, i64 %102 + %104 = sub nsw i64 %57, %102 + call void @llvm.memset.p0.i64(ptr align 1 %103, i8 0, i64 %104, i1 false) br label %.preheader74.split.us.i.i.backedge -102: ; preds = %.preheader74.split.us.i.i - store i8 -1, ptr %81, align 1 - %103 = add nsw i64 %.06477.us.i.i, -1 - %104 = icmp sgt i64 %.06477.us.i.i, 0 - br i1 %104, label %.preheader74.split.us.i.i.backedge, label %enc_pred_char.exit.thread.i +105: ; preds = %.preheader74.split.us.i.i + store i8 -1, ptr %84, align 1 + %106 = add nsw i64 %.06477.us.i.i, -1 + %107 = icmp sgt i64 %.06477.us.i.i, 0 + br i1 %107, label %.preheader74.split.us.i.i.backedge, label %enc_pred_char.exit.thread.i -.preheader74.split.us.i.i.backedge: ; preds = %102, %.thread.us.i.i, %._crit_edge.us.i.i, %87 - %.06477.us.i.i.be = phi i64 [ %103, %102 ], [ %78, %.thread.us.i.i ], [ %78, %._crit_edge.us.i.i ], [ %78, %87 ] +.preheader74.split.us.i.i.backedge: ; preds = %105, %.thread.us.i.i, %._crit_edge.us.i.i, %90 + %.06477.us.i.i.be = phi i64 [ %106, %105 ], [ %78, %.thread.us.i.i ], [ %78, %._crit_edge.us.i.i ], [ %78, %90 ] br label %.preheader74.split.us.i.i, !llvm.loop !207 -105: ; preds = %79 - %106 = call i32 @rb_enc_precise_mbclen(ptr noundef nonnull %.us-phi219, ptr noundef %58, ptr noundef nonnull %17) #28 - %107 = icmp sgt i32 %106, 0 - br i1 %107, label %108, label %enc_pred_char.exit.thread.i - -108: ; preds = %105 - %109 = load ptr, ptr %23, align 8 - %110 = call i32 %109(ptr noundef nonnull %.us-phi219, ptr noundef %58, ptr noundef nonnull %17) #28 - %.not.i.i148 = icmp eq i32 %110, 0 - br i1 %.not.i.i148, label %enc_pred_char.exit.thread.i, label %111 +108: ; preds = %80 + %109 = call i32 @rb_enc_precise_mbclen(ptr noundef nonnull %.us-phi214, ptr noundef %58, ptr noundef nonnull %17) #28 + %110 = icmp sgt i32 %109, 0 + br i1 %110, label %111, label %enc_pred_char.exit.thread.i 111: ; preds = %108 - %112 = add i32 %110, -1 - %113 = load ptr, ptr %26, align 8 - %114 = call i32 %113(i32 noundef %112, ptr noundef nonnull %17) #28 - %.not72.i.i = icmp eq i32 %.us-phi217, %114 + %112 = load ptr, ptr %23, align 8 + %113 = call i32 %112(ptr noundef nonnull %.us-phi214, ptr noundef %58, ptr noundef nonnull %17) #28 + %.not.i.i148 = icmp eq i32 %113, 0 + br i1 %.not.i.i148, label %enc_pred_char.exit.thread.i, label %114 + +114: ; preds = %111 + %115 = add i32 %113, -1 + %116 = load ptr, ptr %26, align 8 + %117 = call i32 %116(i32 noundef %115, ptr noundef nonnull %17) #28 + %.not72.i.i = icmp eq i32 %.us-phi212, %117 br i1 %.not72.i.i, label %enc_pred_char.exit.i, label %enc_pred_char.exit.thread.i -.preheader74.split.i.i: ; preds = %.preheader74.i.i, %.preheader74.split.i.i.backedge - %.06477.i.i = phi i64 [ %.06477.i.i.be, %.preheader74.split.i.i.backedge ], [ %78, %.preheader74.i.i ] - %115 = getelementptr i8, ptr %.us-phi219, i64 %.06477.i.i - %116 = load i8, ptr %115, align 1 - %117 = icmp eq i8 %116, 0 - br i1 %117, label %118, label %.critedge.i.i - -118: ; preds = %.preheader74.split.i.i - store i8 -1, ptr %115, align 1 - %119 = add nsw i64 %.06477.i.i, -1 - %120 = icmp sgt i64 %.06477.i.i, 0 - br i1 %120, label %.preheader74.split.i.i.backedge, label %enc_pred_char.exit.thread.i - -.preheader74.split.i.i.backedge: ; preds = %118, %.thread.i.i, %.critedge.i.i - %.06477.i.i.be = phi i64 [ %119, %118 ], [ %78, %.thread.i.i ], [ %78, %.critedge.i.i ] - br label %.preheader74.split.i.i, !llvm.loop !207 - -.critedge.i.i: ; preds = %.preheader74.split.i.i - %121 = add i8 %116, -1 - store i8 %121, ptr %115, align 1 - %122 = call i32 @rb_enc_precise_mbclen(ptr noundef nonnull %.us-phi219, ptr noundef %58, ptr noundef %17) #28 - %123 = icmp sgt i32 %122, 0 - br i1 %123, label %124, label %.preheader74.split.i.i.backedge - -124: ; preds = %.critedge.i.i - %125 = icmp eq i32 %122, 1 - br i1 %125, label %enc_pred_char.exit.thread63.i, label %.thread.i.i - -.thread.i.i: ; preds = %124 - %126 = zext nneg i32 %122 to i64 - %127 = getelementptr i8, ptr %.us-phi219, i64 %126 - %128 = sub nsw i64 %57, %126 - call void @llvm.memset.p0.i64(ptr align 1 %127, i8 0, i64 %128, i1 false) - br label %.preheader74.split.i.i.backedge - -enc_pred_char.exit.i: ; preds = %111 +enc_pred_char.exit.thread.loopexit68.i: ; preds = %.preheader74.split.i.i.preheader, %.preheader.i.i + store i8 -1, ptr %79, align 1 + br label %enc_pred_char.exit.thread.i + +.critedge.i.i: ; preds = %.preheader74.split.i.i.preheader, %.preheader.i.i + %118 = phi i8 [ %127, %.preheader.i.i ], [ %82, %.preheader74.split.i.i.preheader ] + %119 = add i8 %118, -1 + store i8 %119, ptr %79, align 1 + %120 = call i32 @rb_enc_precise_mbclen(ptr noundef nonnull %.us-phi214, ptr noundef %58, ptr noundef %17) #28 + %121 = icmp sgt i32 %120, 0 + br i1 %121, label %122, label %.preheader.i.i + +122: ; preds = %.critedge.i.i + %123 = icmp eq i32 %120, 1 + br i1 %123, label %enc_pred_char.exit.thread63.i, label %.thread.i.i + +.thread.i.i: ; preds = %122 + %124 = zext nneg i32 %120 to i64 + %125 = getelementptr i8, ptr %.us-phi214, i64 %124 + %126 = sub nsw i64 %57, %124 + call void @llvm.memset.p0.i64(ptr align 1 %125, i8 0, i64 %126, i1 false) + br label %.preheader.i.i + +.preheader.i.i: ; preds = %.thread.i.i, %.critedge.i.i + %127 = load i8, ptr %79, align 1 + %128 = icmp eq i8 %127, 0 + br i1 %128, label %enc_pred_char.exit.thread.loopexit68.i, label %.critedge.i.i + +enc_pred_char.exit.i: ; preds = %114 %129 = load ptr, ptr %27, align 8 - %130 = call i32 %129(i32 noundef %112, ptr noundef nonnull %.us-phi219, ptr noundef nonnull %17) #28 - %131 = call i32 @rb_enc_precise_mbclen(ptr noundef nonnull %.us-phi219, ptr noundef %58, ptr noundef nonnull %17) #28 + %130 = call i32 %129(i32 noundef %115, ptr noundef nonnull %.us-phi214, ptr noundef nonnull %17) #28 + %131 = call i32 @rb_enc_precise_mbclen(ptr noundef nonnull %.us-phi214, ptr noundef %58, ptr noundef nonnull %17) #28 %132 = icmp sgt i32 %131, 0 br i1 %132, label %enc_pred_char.exit.thread63.i, label %enc_pred_char.exit.thread.i -enc_pred_char.exit.thread63.i: ; preds = %97, %124, %enc_pred_char.exit.i +enc_pred_char.exit.thread63.i: ; preds = %100, %122, %enc_pred_char.exit.i %133 = load ptr, ptr %23, align 8 - %134 = call i32 %133(ptr noundef nonnull %.us-phi219, ptr noundef %58, ptr noundef %17) #28 + %134 = call i32 %133(ptr noundef nonnull %.us-phi214, ptr noundef %58, ptr noundef %17) #28 %135 = load ptr, ptr %24, align 8 %136 = call i32 %135(i32 noundef %134, i32 noundef %.056.i, ptr noundef %17) #28 %.not66.i = icmp eq i32 %136, 0 @@ -10962,10 +10961,10 @@ enc_pred_char.exit.thread63.i: ; preds = %97, %124, %enc_pred 137: ; preds = %enc_pred_char.exit.thread63.i %138 = add i32 %.055.i, 1 - br label %79 + br label %80 -enc_pred_char.exit.thread.i: ; preds = %enc_pred_char.exit.thread63.i, %enc_pred_char.exit.i, %111, %108, %105, %102, %118 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.us-phi219, ptr noundef nonnull readonly align 1 dereferenceable(1) %2, i64 %57, i1 false) +enc_pred_char.exit.thread.i: ; preds = %enc_pred_char.exit.thread63.i, %enc_pred_char.exit.i, %114, %111, %108, %105, %enc_pred_char.exit.thread.loopexit68.i + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.us-phi214, ptr noundef nonnull readonly align 1 dereferenceable(1) %2, i64 %57, i1 false) %139 = icmp eq i32 %.055.i, 1 br i1 %139, label %enc_succ_alnum_char.exit, label %140 @@ -10979,15 +10978,15 @@ enc_pred_char.exit.thread.i: ; preds = %enc_pred_char.exit. enc_succ_alnum_char.exit: ; preds = %63, %enc_pred_char.exit.thread.i call void @llvm.lifetime.end.p0(i64 7, ptr nonnull %2) - br label %.outer182 + br label %.outer181 143: ; preds = %141, %140 call void @llvm.lifetime.end.p0(i64 7, ptr nonnull %2) - %144 = ptrtoint ptr %.us-phi219 to i64 + %144 = ptrtoint ptr %.us-phi214 to i64 %145 = sub i64 %144, %28 - br label %.outer181, !llvm.loop !204 + br label %.outer180, !llvm.loop !204 -.split.us: ; preds = %.outer182.split, %.outer182.split.us, %37, %45 +.split.us: ; preds = %.outer181.split, %.outer181.split.us, %37, %45 br i1 %.not143, label %.outer, label %.split.us._crit_edge .split.us._crit_edge: ; preds = %.split.us @@ -11089,11 +11088,11 @@ RB_ENCODING_GET.exit: ; preds = %169, %174 %177 = getelementptr i8, ptr %176, i64 20 %.val146 = load i32, ptr %177, align 4 %178 = sext i32 %.val146 to i64 - %.pre267 = load i64, ptr %5, align 8 + %.pre261 = load i64, ptr %5, align 8 br label %179 179: ; preds = %166, %RB_ENCODING_GET.exit - %180 = phi i64 [ %.pre267, %RB_ENCODING_GET.exit ], [ %167, %166 ] + %180 = phi i64 [ %.pre261, %RB_ENCODING_GET.exit ], [ %167, %166 ] %181 = phi i64 [ %178, %RB_ENCODING_GET.exit ], [ 1, %166 ] %182 = and i64 %180, 8192 %.not.i159 = icmp eq i64 %182, 0 @@ -11136,14 +11135,14 @@ ruby_nonempty_memcpy.exit165: ; preds = %RSTRING_PTR.exit163 %199 = or i1 %198, %197 %200 = and i64 %192, 31 %201 = icmp eq i64 %200, 27 - %or.cond311 = or i1 %199, %201 - br i1 %or.cond311, label %.sink.split, label %202 + %or.cond303 = or i1 %199, %201 + br i1 %or.cond303, label %.sink.split, label %202 202: ; preds = %ruby_nonempty_memcpy.exit165 %203 = or i64 %192, 8192 store i64 %203, ptr %5, align 8 - %.pre268 = and i64 %192, 31 - %204 = icmp eq i64 %.pre268, 27 + %.pre262 = and i64 %192, 31 + %204 = icmp eq i64 %.pre262, 27 br i1 %204, label %.sink.split, label %.critedge.i166 .critedge.i166: ; preds = %202 diff --git a/bench/rust-analyzer-rs/optimized/4vbxd64hrlz3u0mk.ll b/bench/rust-analyzer-rs/optimized/4vbxd64hrlz3u0mk.ll index 41b5c5ce987..6daa94bc0d8 100644 --- a/bench/rust-analyzer-rs/optimized/4vbxd64hrlz3u0mk.ll +++ b/bench/rust-analyzer-rs/optimized/4vbxd64hrlz3u0mk.ll @@ -13001,7 +13001,7 @@ _ZN10rayon_core8registry9in_worker17ha928202e45c967a4E.exit: ; preds = %.noexc47 ; Function Attrs: nonlazybind uwtable define hidden noundef range(i8 0, 3) i8 @_ZN5rayon5slice9mergesort9mergesort17h6e12f8c2c15c7640E.llvm.3470423371997672202(ptr noalias noundef nonnull align 8 %0, i64 noundef %1, ptr noundef %2, ptr noalias nocapture readonly align 8 %3) unnamed_addr #4 personality ptr @rust_eh_personality { -.split363: +.split346: %4 = alloca { { { i8, [15 x i8] }, { { i8, [23 x i8] } }, { i8, [23 x i8] }, { i32, { { i32, i32 }, i16, [1 x i16] }, { { { i32, i32 }, i16, [1 x i16] }, {} } }, i8, i8, [2 x i8] } }, align 8 %5 = alloca { [1 x i64], i64, [1 x i64] }, align 8 %6 = alloca { [1 x i64], i64, [1 x i64] }, align 8 @@ -13013,17 +13013,17 @@ define hidden noundef range(i8 0, 3) i8 @_ZN5rayon5slice9mergesort9mergesort17h6 store ptr inttoptr (i64 8 to ptr), ptr %9, align 8 %10 = getelementptr inbounds i8, ptr %8, i64 16 store i64 0, ptr %10, align 8 - %.not364 = icmp eq i64 %1, 0 - br i1 %.not364, label %._crit_edge367, label %.lr.ph366 + %.not347 = icmp eq i64 %1, 0 + br i1 %.not347, label %._crit_edge350, label %.lr.ph349 -.lr.ph366: ; preds = %.split363 +.lr.ph349: ; preds = %.split346 %11 = getelementptr inbounds i8, ptr %4, i64 16 %12 = getelementptr inbounds i8, ptr %4, i64 17 %13 = getelementptr inbounds i8, ptr %4, i64 24 %14 = getelementptr inbounds i8, ptr %4, i64 32 br label %23 -._crit_edge367: ; preds = %._crit_edge359, %.split363 +._crit_edge350: ; preds = %._crit_edge342, %.split346 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7), !noalias !2919 call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hd1d34edeb35e9ca5E.llvm.17272167133303916261"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %7, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %8) %15 = getelementptr inbounds i8, ptr %7, i64 8 @@ -13031,7 +13031,7 @@ define hidden noundef range(i8 0, 3) i8 @_ZN5rayon5slice9mergesort9mergesort17h6 %.not.i.i.i = icmp eq i64 %16, 0 br i1 %.not.i.i.i, label %"_ZN4core3ptr72drop_in_place$LT$alloc..vec..Vec$LT$rayon..slice..mergesort..Run$GT$$GT$17hd7cd6dff0044545cE.exit", label %17 -17: ; preds = %._crit_edge367 +17: ; preds = %._crit_edge350 %18 = getelementptr inbounds i8, ptr %7, i64 16 %19 = load i64, ptr %18, align 8, !noalias !2919, !noundef !11 %20 = icmp eq i64 %19, 0 @@ -13042,13 +13042,13 @@ define hidden noundef range(i8 0, 3) i8 @_ZN5rayon5slice9mergesort9mergesort17h6 call void @__rust_dealloc(ptr noundef nonnull %22, i64 noundef %19, i64 noundef %16) #38 br label %"_ZN4core3ptr72drop_in_place$LT$alloc..vec..Vec$LT$rayon..slice..mergesort..Run$GT$$GT$17hd7cd6dff0044545cE.exit" -"_ZN4core3ptr72drop_in_place$LT$alloc..vec..Vec$LT$rayon..slice..mergesort..Run$GT$$GT$17hd7cd6dff0044545cE.exit": ; preds = %._crit_edge367, %17, %21 +"_ZN4core3ptr72drop_in_place$LT$alloc..vec..Vec$LT$rayon..slice..mergesort..Run$GT$$GT$17hd7cd6dff0044545cE.exit": ; preds = %._crit_edge350, %17, %21 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7), !noalias !2919 br label %25 -23: ; preds = %.lr.ph366, %._crit_edge359 - %.079365 = phi i64 [ %1, %.lr.ph366 ], [ %.181.lcssa, %._crit_edge359 ] - %24 = add i64 %.079365, -1 +23: ; preds = %.lr.ph349, %._crit_edge342 + %.079348 = phi i64 [ %1, %.lr.ph349 ], [ %.181.lcssa, %._crit_edge342 ] + %24 = add i64 %.079348, -1 %.not91 = icmp eq i64 %24, 0 br i1 %.not91, label %._crit_edge, label %26 @@ -13058,7 +13058,7 @@ define hidden noundef range(i8 0, 3) i8 @_ZN5rayon5slice9mergesort9mergesort17h6 ret i8 %.0 26: ; preds = %23 - %27 = add i64 %.079365, -2 + %27 = add i64 %.079348, -2 %28 = icmp ult i64 %24, %1 call void @llvm.assume(i1 %28) %29 = getelementptr inbounds { { i8, [15 x i8] }, { { i8, [23 x i8] } }, { i8, [23 x i8] }, { i32, { { i32, i32 }, i16, [1 x i16] }, { { { i32, i32 }, i16, [1 x i16] }, {} } }, i8, i8, [2 x i8] }, ptr %0, i64 %24 @@ -13084,7 +13084,7 @@ define hidden noundef range(i8 0, 3) i8 @_ZN5rayon5slice9mergesort9mergesort17h6 .unreachabledefault: ; preds = %26 unreachable -default.unreachable: ; preds = %_ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.17814153394679541470.exit.i.i.i, %_ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.17814153394679541470.exit.i.i.i101, %85, %_ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.17814153394679541470.exit.i.i.i116, %142, %_ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.17814153394679541470.exit.i.i.i.i.i144, %406, %_ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.17814153394679541470.exit.i.i.i.i16.i, %450, %_ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.17814153394679541470.exit.i.i.i.i31.i, %.lr.ph.i, %_ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.17814153394679541470.exit.i.i.i.i.i, %.lr.ph31.i +default.unreachable: ; preds = %_ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.17814153394679541470.exit.i.i.i, %_ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.17814153394679541470.exit.i.i.i101, %85, %_ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.17814153394679541470.exit.i.i.i116, %142, %_ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.17814153394679541470.exit.i.i.i.i.i144, %406, %_ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.17814153394679541470.exit.i.i.i.i16.i, %.lr.ph.i152, %_ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.17814153394679541470.exit.i.i.i.i31.i, %.lr.ph.i, %_ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.17814153394679541470.exit.i.i.i.i.i, %.lr.ph31.i unreachable 35: ; preds = %26 @@ -13153,81 +13153,81 @@ _ZN4core3ops8function2Fn4call17h6bb8e15ee9dfeb00E.exit.i: ; preds = %"_ZN106_$LT to label %82 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit "_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$7reverse17h5e12be1e9be4097eE.exit": ; preds = %_ZN4core3ptr19swap_nonoverlapping17hf1c5d2b0b672054aE.exit.i.i, %.thread.thread, %127 - %.080 = phi i64 [ %.2, %127 ], [ %.3376513, %.thread.thread ], [ %.3376513, %_ZN4core3ptr19swap_nonoverlapping17hf1c5d2b0b672054aE.exit.i.i ] - %.not94307 = icmp ne i64 %.080, 0 - %69 = sub i64 %.079365, %.080 + %.080 = phi i64 [ %.2, %127 ], [ %.3359484, %.thread.thread ], [ %.3359484, %_ZN4core3ptr19swap_nonoverlapping17hf1c5d2b0b672054aE.exit.i.i ] + %.not94292 = icmp ne i64 %.080, 0 + %69 = sub i64 %.079348, %.080 %70 = icmp ult i64 %69, 10 - %or.cond96308 = and i1 %.not94307, %70 - br i1 %or.cond96308, label %.lr.ph, label %._crit_edge + %or.cond96293 = and i1 %.not94292, %70 + br i1 %or.cond96293, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$7reverse17h5e12be1e9be4097eE.exit" - %71 = icmp ugt i64 %.079365, %1 + %71 = icmp ugt i64 %.079348, %1 %72 = add i64 %.080, -1 - %73 = icmp ugt i64 %72, %.079365 + %73 = icmp ugt i64 %72, %.079348 br i1 %71, label %.lr.ph.split.us, label %.lr.ph.split .lr.ph.split.us: ; preds = %.lr.ph - br i1 %73, label %.invoke635, label %.invoke + br i1 %73, label %.invoke595, label %.invoke -.loopexit170: ; preds = %"_ZN4core3ops8function5impls68_$LT$impl$u20$core..ops..function..Fn$LT$A$GT$$u20$for$u20$$RF$F$GT$4call17h59643d8451b8125aE.exit.i" +.loopexit167: ; preds = %"_ZN4core3ops8function5impls68_$LT$impl$u20$core..ops..function..Fn$LT$A$GT$$u20$for$u20$$RF$F$GT$4call17h59643d8451b8125aE.exit.i" %lpad.loopexit = landingpad { ptr, i32 } cleanup br label %.body .loopexit.split-lp.loopexit: ; preds = %_ZN4core3ops8function2Fn4call17h6bb8e15ee9dfeb00E.exit.i121 - %lpad.loopexit171 = landingpad { ptr, i32 } + %lpad.loopexit168 = landingpad { ptr, i32 } cleanup br label %.body .loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %_ZN4core3ops8function2Fn4call17h6bb8e15ee9dfeb00E.exit.i106 - %lpad.loopexit175 = landingpad { ptr, i32 } + %lpad.loopexit172 = landingpad { ptr, i32 } cleanup br label %.body .loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit: ; preds = %210, %_ZN4core3ops8function2Fn4call17h6bb8e15ee9dfeb00E.exit.i - %lpad.loopexit177 = landingpad { ptr, i32 } + %lpad.loopexit174 = landingpad { ptr, i32 } cleanup br label %.body -.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp: ; preds = %.invoke637, %.invoke635, %.invoke, %394 - %lpad.loopexit.split-lp178 = landingpad { ptr, i32 } +.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp: ; preds = %.invoke597, %.invoke595, %.invoke, %394 + %lpad.loopexit.split-lp175 = landingpad { ptr, i32 } cleanup br label %.body -.body: ; preds = %.loopexit170, %.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit, %493, %379 - %eh.lpad-body = phi { ptr, i32 } [ %lpad.phi.i, %379 ], [ %lpad.phi.i155, %493 ], [ %lpad.loopexit, %.loopexit170 ], [ %lpad.loopexit171, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit175, %.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit177, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp178, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ] +.body: ; preds = %.loopexit167, %.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit, %.loopexit.split-lp.loopexit, %.loopexit.i, %379 + %eh.lpad-body = phi { ptr, i32 } [ %lpad.phi.i, %379 ], [ %lpad.loopexit.i154, %.loopexit.i ], [ %lpad.loopexit, %.loopexit167 ], [ %lpad.loopexit168, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit172, %.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit174, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp175, %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp ] call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6), !noalias !2949 invoke void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hd1d34edeb35e9ca5E.llvm.17272167133303916261"(ptr noalias nocapture noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 dereferenceable(24) %6, ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %8) - to label %.noexc unwind label %495 + to label %.noexc unwind label %487 .noexc: ; preds = %.body %74 = getelementptr inbounds i8, ptr %6, i64 8 %75 = load i64, ptr %74, align 8, !range !331, !noalias !2949, !noundef !11 %.not.i.i.i97 = icmp eq i64 %75, 0 - br i1 %.not.i.i.i97, label %497, label %76 + br i1 %.not.i.i.i97, label %489, label %76 76: ; preds = %.noexc %77 = getelementptr inbounds i8, ptr %6, i64 16 %78 = load i64, ptr %77, align 8, !noalias !2949, !noundef !11 %79 = icmp eq i64 %78, 0 - br i1 %79, label %497, label %80 + br i1 %79, label %489, label %80 80: ; preds = %76 %81 = load ptr, ptr %6, align 8, !noalias !2949, !nonnull !11, !noundef !11 call void @__rust_dealloc(ptr noundef nonnull %81, i64 noundef %78, i64 noundef %75) #38 - br label %497 + br label %489 82: ; preds = %_ZN4core3ops8function2Fn4call17h6bb8e15ee9dfeb00E.exit.i %83 = extractvalue { i1, i8 } %68, 1 %84 = icmp eq i8 %83, -1 - br i1 %84, label %.preheader, label %.preheader174 + br i1 %84, label %.preheader, label %.preheader171 -.preheader174: ; preds = %82, %130 +.preheader171: ; preds = %82, %130 %.2 = phi i64 [ %87, %130 ], [ %27, %82 ] %.not92 = icmp eq i64 %.2, 0 br i1 %.not92, label %127, label %85 -85: ; preds = %.preheader174 +85: ; preds = %.preheader171 %86 = getelementptr inbounds { { i8, [15 x i8] }, { { i8, [23 x i8] } }, { i8, [23 x i8] }, { i32, { { i32, i32 }, i16, [1 x i16] }, { { { i32, i32 }, i16, [1 x i16] }, {} } }, i8, i8, [2 x i8] }, ptr %0, i64 %.2 %87 = add i64 %.2, -1 %88 = icmp ult i64 %87, %1 @@ -13314,15 +13314,15 @@ _ZN4core3ops8function2Fn4call17h6bb8e15ee9dfeb00E.exit.i106: ; preds = %"_ZN106_ %126 = invoke { i1, i8 } @_ZN4core4iter6traits8iterator12iter_compare17h1a6675c57c9e8d25E.llvm.4370348610037963988(ptr noundef nonnull %.sroa.0.0.i.i.i.i103, ptr noundef nonnull %124, ptr noundef nonnull %.sroa.0.0.i14.i.i.i108, ptr noundef nonnull %125) to label %130 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit -127: ; preds = %130, %.preheader174 - %128 = sub i64 %.079365, %.2 +127: ; preds = %130, %.preheader171 + %128 = sub i64 %.079348, %.2 %129 = icmp eq i64 %128, %1 br i1 %129, label %133, label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$7reverse17h5e12be1e9be4097eE.exit" 130: ; preds = %_ZN4core3ops8function2Fn4call17h6bb8e15ee9dfeb00E.exit.i106 %131 = extractvalue { i1, i8 } %126, 1 %132 = icmp eq i8 %131, -1 - br i1 %132, label %127, label %.preheader174 + br i1 %132, label %127, label %.preheader171 133: ; preds = %184, %127 %.1 = phi i8 [ 0, %127 ], [ 1, %184 ] @@ -13441,7 +13441,7 @@ _ZN4core3ops8function2Fn4call17h6bb8e15ee9dfeb00E.exit.i121: ; preds = %"_ZN106_ to label %186 unwind label %.loopexit.split-lp.loopexit 184: ; preds = %.preheader - %185 = icmp eq i64 %.079365, %1 + %185 = icmp eq i64 %.079348, %1 br i1 %185, label %133, label %.thread.thread 186: ; preds = %_ZN4core3ops8function2Fn4call17h6bb8e15ee9dfeb00E.exit.i121 @@ -13450,15 +13450,15 @@ _ZN4core3ops8function2Fn4call17h6bb8e15ee9dfeb00E.exit.i121: ; preds = %"_ZN106_ br i1 %188, label %.preheader, label %.thread .thread: ; preds = %186 - %189 = icmp ugt i64 %.3, %.079365 - br i1 %189, label %.invoke635, label %.thread.thread + %189 = icmp ugt i64 %.3, %.079348 + br i1 %189, label %.invoke595, label %.thread.thread .thread.thread: ; preds = %184, %.thread - %.3376513 = phi i64 [ %.3, %.thread ], [ 0, %184 ] - %190 = sub nuw i64 %.079365, %.3376513 - %191 = getelementptr inbounds { { i8, [15 x i8] }, { { i8, [23 x i8] } }, { i8, [23 x i8] }, { i32, { { i32, i32 }, i16, [1 x i16] }, { { { i32, i32 }, i16, [1 x i16] }, {} } }, i8, i8, [2 x i8] }, ptr %0, i64 %.3376513 + %.3359484 = phi i64 [ %.3, %.thread ], [ 0, %184 ] + %190 = sub nuw i64 %.079348, %.3359484 + %191 = getelementptr inbounds { { i8, [15 x i8] }, { { i8, [23 x i8] } }, { i8, [23 x i8] }, { i32, { { i32, i32 }, i16, [1 x i16] }, { { { i32, i32 }, i16, [1 x i16] }, {} } }, i8, i8, [2 x i8] }, ptr %0, i64 %.3359484 %192 = lshr i64 %190, 1 - %193 = getelementptr inbounds { { i8, [15 x i8] }, { { i8, [23 x i8] } }, { i8, [23 x i8] }, { i32, { { i32, i32 }, i16, [1 x i16] }, { { { i32, i32 }, i16, [1 x i16] }, {} } }, i8, i8, [2 x i8] }, ptr %0, i64 %.079365 + %193 = getelementptr inbounds { { i8, [15 x i8] }, { { i8, [23 x i8] } }, { i8, [23 x i8] }, { i32, { { i32, i32 }, i16, [1 x i16] }, { { { i32, i32 }, i16, [1 x i16] }, {} } }, i8, i8, [2 x i8] }, ptr %0, i64 %.079348 %194 = sub nsw i64 0, %192 %195 = getelementptr inbounds { { i8, [15 x i8] }, { { i8, [23 x i8] } }, { i8, [23 x i8] }, { i32, { { i32, i32 }, i16, [1 x i16] }, { { { i32, i32 }, i16, [1 x i16] }, {} } }, i8, i8, [2 x i8] }, ptr %193, i64 %194 call void @llvm.experimental.noalias.scope.decl(metadata !3009) @@ -13493,7 +13493,7 @@ _ZN4core3ptr19swap_nonoverlapping17hf1c5d2b0b672054aE.exit.i.i: ; preds = %200 ._crit_edge: ; preds = %_ZN5rayon5slice9mergesort11insert_head17h9dadc9904109eebbE.exit, %23, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$7reverse17h5e12be1e9be4097eE.exit" %.181.lcssa = phi i64 [ %.080, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$7reverse17h5e12be1e9be4097eE.exit" ], [ 0, %23 ], [ %219, %_ZN5rayon5slice9mergesort11insert_head17h9dadc9904109eebbE.exit ] - %.lcssa191 = phi i64 [ %69, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$7reverse17h5e12be1e9be4097eE.exit" ], [ 1, %23 ], [ %221, %_ZN5rayon5slice9mergesort11insert_head17h9dadc9904109eebbE.exit ] + %.lcssa = phi i64 [ %69, %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$7reverse17h5e12be1e9be4097eE.exit" ], [ 1, %23 ], [ %221, %_ZN5rayon5slice9mergesort11insert_head17h9dadc9904109eebbE.exit ] %207 = load i64, ptr %10, align 8, !alias.scope !3018, !noundef !11 %208 = load i64, ptr %8, align 8, !alias.scope !3018, !noundef !11 %209 = icmp eq i64 %207, %208 @@ -13513,40 +13513,40 @@ _ZN4core3ptr19swap_nonoverlapping17hf1c5d2b0b672054aE.exit.i.i: ; preds = %200 %213 = getelementptr inbounds { i64, i64 }, ptr %212, i64 %211 store i64 %.181.lcssa, ptr %213, align 8 %214 = getelementptr inbounds i8, ptr %213, i64 8 - store i64 %.lcssa191, ptr %214, align 8 + store i64 %.lcssa, ptr %214, align 8 %215 = load i64, ptr %10, align 8, !alias.scope !3018, !noundef !11 %216 = add i64 %215, 1 store i64 %216, ptr %10, align 8 %217 = icmp ugt i64 %216, 1 - br i1 %217, label %.lr.ph358.preheader, label %._crit_edge359 + br i1 %217, label %.lr.ph341.preheader, label %._crit_edge342 -.lr.ph358.preheader: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17ha03a368bb3455065E.exit" +.lr.ph341.preheader: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17ha03a368bb3455065E.exit" %218 = load ptr, ptr %9, align 8, !nonnull !11, !noundef !11 - br label %.lr.ph358 + br label %.lr.ph341 .lr.ph.split: ; preds = %.lr.ph, %_ZN5rayon5slice9mergesort11insert_head17h9dadc9904109eebbE.exit - %.181309 = phi i64 [ %219, %_ZN5rayon5slice9mergesort11insert_head17h9dadc9904109eebbE.exit ], [ %.080, %.lr.ph ] - %219 = add i64 %.181309, -1 - br i1 %73, label %.invoke635, label %220 + %.181294 = phi i64 [ %219, %_ZN5rayon5slice9mergesort11insert_head17h9dadc9904109eebbE.exit ], [ %.080, %.lr.ph ] + %219 = add i64 %.181294, -1 + br i1 %73, label %.invoke595, label %220 220: ; preds = %.lr.ph.split - %221 = sub i64 %.079365, %219 + %221 = sub i64 %.079348, %219 %222 = getelementptr inbounds { { i8, [15 x i8] }, { { i8, [23 x i8] } }, { i8, [23 x i8] }, { i32, { { i32, i32 }, i16, [1 x i16] }, { { { i32, i32 }, i16, [1 x i16] }, {} } }, i8, i8, [2 x i8] }, ptr %0, i64 %219 call void @llvm.experimental.noalias.scope.decl(metadata !3021) %223 = icmp ugt i64 %221, 1 br i1 %223, label %406, label %_ZN5rayon5slice9mergesort11insert_head17h9dadc9904109eebbE.exit -.lr.ph358: ; preds = %.lr.ph358.preheader, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6remove17h43691f739f55ec20E.exit" - %224 = phi ptr [ %401, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6remove17h43691f739f55ec20E.exit" ], [ %218, %.lr.ph358.preheader ] - %storemerge357 = phi i64 [ %400, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6remove17h43691f739f55ec20E.exit" ], [ %216, %.lr.ph358.preheader ] - %225 = add i64 %storemerge357, -1 +.lr.ph341: ; preds = %.lr.ph341.preheader, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6remove17h43691f739f55ec20E.exit" + %224 = phi ptr [ %401, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6remove17h43691f739f55ec20E.exit" ], [ %218, %.lr.ph341.preheader ] + %storemerge340 = phi i64 [ %400, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6remove17h43691f739f55ec20E.exit" ], [ %216, %.lr.ph341.preheader ] + %225 = add i64 %storemerge340, -1 %226 = getelementptr inbounds [0 x { i64, i64 }], ptr %224, i64 0, i64 %225 %227 = load i64, ptr %226, align 8, !alias.scope !3024, !noundef !11 %228 = icmp eq i64 %227, 0 br i1 %228, label %248, label %229 -229: ; preds = %.lr.ph358 - %230 = add i64 %storemerge357, -2 +229: ; preds = %.lr.ph341 + %230 = add i64 %storemerge340, -2 %231 = getelementptr inbounds [0 x { i64, i64 }], ptr %224, i64 0, i64 %230, i32 1 %232 = load i64, ptr %231, align 8, !alias.scope !3024, !noundef !11 %233 = getelementptr inbounds i8, ptr %226, i64 8 @@ -13555,15 +13555,15 @@ _ZN4core3ptr19swap_nonoverlapping17hf1c5d2b0b672054aE.exit.i.i: ; preds = %200 br i1 %.not.i, label %235, label %248 235: ; preds = %229 - %.not14.i = icmp eq i64 %storemerge357, 2 - br i1 %.not14.i, label %._crit_edge359, label %238 + %.not14.i = icmp eq i64 %storemerge340, 2 + br i1 %.not14.i, label %._crit_edge342, label %238 236: ; preds = %238 - %237 = icmp ugt i64 %storemerge357, 3 - br i1 %237, label %243, label %._crit_edge359 + %237 = icmp ugt i64 %storemerge340, 3 + br i1 %237, label %243, label %._crit_edge342 238: ; preds = %235 - %239 = add i64 %storemerge357, -3 + %239 = add i64 %storemerge340, -3 %240 = getelementptr inbounds [0 x { i64, i64 }], ptr %224, i64 0, i64 %239, i32 1 %241 = load i64, ptr %240, align 8, !alias.scope !3024, !noundef !11 %242 = add i64 %234, %232 @@ -13571,27 +13571,27 @@ _ZN4core3ptr19swap_nonoverlapping17hf1c5d2b0b672054aE.exit.i.i: ; preds = %200 br i1 %.not15.i, label %236, label %.thread19.i 243: ; preds = %236 - %244 = add i64 %storemerge357, -4 + %244 = add i64 %storemerge340, -4 %245 = getelementptr inbounds [0 x { i64, i64 }], ptr %224, i64 0, i64 %244, i32 1 %246 = load i64, ptr %245, align 8, !alias.scope !3024, !noundef !11 %247 = add i64 %241, %232 %.not17.i = icmp ugt i64 %246, %247 - br i1 %.not17.i, label %._crit_edge359, label %.thread19.i + br i1 %.not17.i, label %._crit_edge342, label %.thread19.i -248: ; preds = %229, %.lr.ph358 - %.not18.i = icmp eq i64 %storemerge357, 2 +248: ; preds = %229, %.lr.ph341 + %.not18.i = icmp eq i64 %storemerge340, 2 br i1 %.not18.i, label %249, label %..thread19_crit_edge.i ..thread19_crit_edge.i: ; preds = %248 %.phi.trans.insert.i = getelementptr inbounds i8, ptr %226, i64 8 %.pre.i133 = load i64, ptr %.phi.trans.insert.i, align 8, !alias.scope !3024 - %.pre21.i = add i64 %storemerge357, -3 + %.pre21.i = add i64 %storemerge340, -3 %.phi.trans.insert22.i = getelementptr inbounds [0 x { i64, i64 }], ptr %224, i64 0, i64 %.pre21.i, i32 1 %.pre23.i = load i64, ptr %.phi.trans.insert22.i, align 8, !alias.scope !3024 br label %.thread19.i 249: ; preds = %.thread19.i, %248 - %250 = add i64 %storemerge357, -2 + %250 = add i64 %storemerge340, -2 br label %254 .thread19.i: ; preds = %..thread19_crit_edge.i, %243, %238 @@ -13601,15 +13601,15 @@ _ZN4core3ptr19swap_nonoverlapping17hf1c5d2b0b672054aE.exit.i.i: ; preds = %200 %253 = icmp ult i64 %251, %252 br i1 %253, label %254, label %249 -._crit_edge359: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6remove17h43691f739f55ec20E.exit", %235, %236, %243, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17ha03a368bb3455065E.exit" +._crit_edge342: ; preds = %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6remove17h43691f739f55ec20E.exit", %235, %236, %243, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17ha03a368bb3455065E.exit" %.not = icmp eq i64 %.181.lcssa, 0 - br i1 %.not, label %._crit_edge367, label %23 + br i1 %.not, label %._crit_edge350, label %23 254: ; preds = %249, %.thread19.i %.sroa.4.0.i.ph = phi i64 [ %.pre-phi.i, %.thread19.i ], [ %250, %249 ] %255 = add nuw i64 %.sroa.4.0.i.ph, 1 - %256 = icmp ult i64 %255, %storemerge357 - br i1 %256, label %257, label %.invoke637, !prof !2795 + %256 = icmp ult i64 %255, %storemerge340 + br i1 %256, label %257, label %.invoke597, !prof !2795 257: ; preds = %254 %258 = getelementptr inbounds [0 x { i64, i64 }], ptr %224, i64 0, i64 %255 @@ -13622,24 +13622,24 @@ _ZN4core3ptr19swap_nonoverlapping17hf1c5d2b0b672054aE.exit.i.i: ; preds = %200 %265 = load i64, ptr %264, align 8, !noundef !11 %266 = add i64 %265, %263 %267 = icmp ugt i64 %259, %266 - br i1 %267, label %.invoke635, label %268 + br i1 %267, label %.invoke595, label %268 268: ; preds = %257 %269 = icmp ugt i64 %266, %1 br i1 %269, label %.invoke, label %275 -.invoke635: ; preds = %.thread, %.lr.ph.split, %257, %.lr.ph.split.us +.invoke595: ; preds = %.thread, %.lr.ph.split, %257, %.lr.ph.split.us %270 = phi i64 [ %72, %.lr.ph.split.us ], [ %259, %257 ], [ %219, %.lr.ph.split ], [ %.3, %.thread ] - %271 = phi i64 [ %.079365, %.lr.ph.split.us ], [ %266, %257 ], [ %.079365, %.lr.ph.split ], [ %.079365, %.thread ] + %271 = phi i64 [ %.079348, %.lr.ph.split.us ], [ %266, %257 ], [ %.079348, %.lr.ph.split ], [ %.079348, %.thread ] %272 = phi ptr [ @anon.a39d7e32b45b33e489c44911516ec98b.120, %.lr.ph.split.us ], [ @anon.a39d7e32b45b33e489c44911516ec98b.117, %257 ], [ @anon.a39d7e32b45b33e489c44911516ec98b.120, %.lr.ph.split ], [ @anon.a39d7e32b45b33e489c44911516ec98b.114, %.thread ] invoke void @_ZN4core5slice5index22slice_index_order_fail17h2e9882225a126cdcE(i64 noundef %270, i64 noundef %271, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %272) #36 - to label %.cont636 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp + to label %.cont596 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp -.cont636: ; preds = %.invoke635 +.cont596: ; preds = %.invoke595 unreachable .invoke: ; preds = %268, %.lr.ph.split.us - %273 = phi i64 [ %.079365, %.lr.ph.split.us ], [ %266, %268 ] + %273 = phi i64 [ %.079348, %.lr.ph.split.us ], [ %266, %268 ] %274 = phi ptr [ @anon.a39d7e32b45b33e489c44911516ec98b.120, %.lr.ph.split.us ], [ @anon.a39d7e32b45b33e489c44911516ec98b.117, %268 ] invoke void @_ZN4core5slice5index24slice_end_index_len_fail17h334e37603831ab29E(i64 noundef %273, i64 noundef %1, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %274) #36 to label %.cont unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp @@ -13911,7 +13911,7 @@ _ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.17814153394679541470.exit.i.i. call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %.sroa.17.1.i, ptr align 8 %.sroa.0.0.i138, i64 %385, i1 false), !noalias !3091 %386 = load i64, ptr %10, align 8, !noundef !11 %387 = icmp ult i64 %.sroa.4.0.i.ph, %386 - br i1 %387, label %388, label %.invoke637, !prof !2795 + br i1 %387, label %388, label %.invoke597, !prof !2795 388: ; preds = %.loopexit %389 = load ptr, ptr %9, align 8, !nonnull !11, !noundef !11 @@ -13944,16 +13944,16 @@ _ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.17814153394679541470.exit.i.i. store i64 %400, ptr %10, align 8 %401 = load ptr, ptr %9, align 8, !nonnull !11, !noundef !11 %402 = icmp ugt i64 %400, 1 - br i1 %402, label %.lr.ph358, label %._crit_edge359 + br i1 %402, label %.lr.ph341, label %._crit_edge342 -.invoke637: ; preds = %.loopexit, %254 +.invoke597: ; preds = %.loopexit, %254 %403 = phi i64 [ %255, %254 ], [ %.sroa.4.0.i.ph, %.loopexit ] - %404 = phi i64 [ %storemerge357, %254 ], [ %386, %.loopexit ] + %404 = phi i64 [ %storemerge340, %254 ], [ %386, %.loopexit ] %405 = phi ptr [ @anon.a39d7e32b45b33e489c44911516ec98b.115, %254 ], [ @anon.a39d7e32b45b33e489c44911516ec98b.118, %.loopexit ] invoke void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %403, i64 noundef %404, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %405) #36 - to label %.cont638 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp + to label %.cont598 unwind label %.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp -.cont638: ; preds = %.invoke637 +.cont598: ; preds = %.invoke597 unreachable 406: ; preds = %220 @@ -14039,38 +14039,31 @@ _ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.17814153394679541470.exit.i.i. %442 = getelementptr inbounds i8, ptr %.sroa.0.0.i.i.i.i.i.i146, i64 %.sroa.4.0.i.i.i.i.i.i145 %443 = getelementptr inbounds i8, ptr %.sroa.0.0.i14.i.i.i.i.i150, i64 %.sroa.4.0.i13.i.i.i.i.i149 %444 = invoke { i1, i8 } @_ZN4core4iter6traits8iterator12iter_compare17h1a6675c57c9e8d25E.llvm.4370348610037963988(ptr noundef nonnull %.sroa.0.0.i.i.i.i.i.i146, ptr noundef nonnull %442, ptr noundef nonnull %.sroa.0.0.i14.i.i.i.i.i150, ptr noundef nonnull %443) - to label %.noexc159 unwind label %.loopexit170 + to label %.noexc156 unwind label %.loopexit167 -.noexc159: ; preds = %"_ZN4core3ops8function5impls68_$LT$impl$u20$core..ops..function..Fn$LT$A$GT$$u20$for$u20$$RF$F$GT$4call17h59643d8451b8125aE.exit.i" +.noexc156: ; preds = %"_ZN4core3ops8function5impls68_$LT$impl$u20$core..ops..function..Fn$LT$A$GT$$u20$for$u20$$RF$F$GT$4call17h59643d8451b8125aE.exit.i" %445 = extractvalue { i1, i8 } %444, 1 %446 = icmp eq i8 %445, -1 - br i1 %446, label %447, label %_ZN5rayon5slice9mergesort11insert_head17h9dadc9904109eebbE.exit + br i1 %446, label %.split.i, label %_ZN5rayon5slice9mergesort11insert_head17h9dadc9904109eebbE.exit -447: ; preds = %.noexc159 +.split.i: ; preds = %.noexc156 call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %4), !noalias !3021 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(96) %4, ptr noundef nonnull align 8 dereferenceable(96) %222, i64 96, i1 false) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(96) %222, ptr noundef nonnull align 8 dereferenceable(96) %407, i64 96, i1 false), !alias.scope !3021 %.not.i151 = icmp eq i64 %221, 2 br i1 %.not.i151, label %.thread.i, label %.lr.ph.i152 -.lr.ph.i152: ; preds = %447 - %448 = add nuw nsw i64 %221, 1 - br label %450 - -449: ; preds = %491 - unreachable - -.thread.i: ; preds = %489, %484, %447 - %.sroa.5.0.lcssa.i = phi ptr [ %407, %447 ], [ %.sroa.5.07.i, %484 ], [ %452, %489 ] +.thread.i: ; preds = %483, %480, %.split.i + %.sroa.5.0.lcssa.i = phi ptr [ %407, %.split.i ], [ %.sroa.5.07.i, %480 ], [ %448, %483 ] call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(96) %.sroa.5.0.lcssa.i, ptr noundef nonnull readonly align 8 dereferenceable(96) %4, i64 96, i1 false) call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %4), !noalias !3021 br label %_ZN5rayon5slice9mergesort11insert_head17h9dadc9904109eebbE.exit -450: ; preds = %489, %.lr.ph.i152 - %.sroa.02.08.i = phi i64 [ 2, %.lr.ph.i152 ], [ %451, %489 ] - %.sroa.5.07.i = phi ptr [ %407, %.lr.ph.i152 ], [ %452, %489 ] - %451 = add nuw i64 %.sroa.02.08.i, 1 - %452 = getelementptr inbounds [0 x { { i8, [15 x i8] }, { { i8, [23 x i8] } }, { i8, [23 x i8] }, { i32, { { i32, i32 }, i16, [1 x i16] }, { { { i32, i32 }, i16, [1 x i16] }, {} } }, i8, i8, [2 x i8] }], ptr %222, i64 0, i64 %.sroa.02.08.i +.lr.ph.i152: ; preds = %.split.i, %483 + %.sroa.02.08.i = phi i64 [ %447, %483 ], [ 2, %.split.i ] + %.sroa.5.07.i = phi ptr [ %448, %483 ], [ %407, %.split.i ] + %447 = add nuw i64 %.sroa.02.08.i, 1 + %448 = getelementptr inbounds [0 x { { i8, [15 x i8] }, { { i8, [23 x i8] } }, { i8, [23 x i8] }, { i32, { { i32, i32 }, i16, [1 x i16] }, { { { i32, i32 }, i16, [1 x i16] }, {} } }, i8, i8, [2 x i8] }], ptr %222, i64 0, i64 %.sroa.02.08.i call void @llvm.experimental.noalias.scope.decl(metadata !3130) call void @llvm.experimental.noalias.scope.decl(metadata !3133) call void @llvm.experimental.noalias.scope.decl(metadata !3135) @@ -14079,126 +14072,106 @@ _ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.17814153394679541470.exit.i.i. call void @llvm.experimental.noalias.scope.decl(metadata !3143) call void @llvm.experimental.noalias.scope.decl(metadata !3145) call void @llvm.experimental.noalias.scope.decl(metadata !3148) - %453 = getelementptr inbounds i8, ptr %452, i64 16 - %454 = load i8, ptr %453, align 8, !range !2811, !alias.scope !3150, !noalias !3153, !noundef !11 - %455 = add nsw i8 %454, -24 - %narrow.i.i.i.i.i14.i = call i8 @llvm.umin.i8(i8 %455, i8 2) + %449 = getelementptr inbounds i8, ptr %448, i64 16 + %450 = load i8, ptr %449, align 8, !range !2811, !alias.scope !3150, !noalias !3153, !noundef !11 + %451 = add nsw i8 %450, -24 + %narrow.i.i.i.i.i14.i = call i8 @llvm.umin.i8(i8 %451, i8 2) switch i8 %narrow.i.i.i.i.i14.i, label %default.unreachable [ - i8 0, label %456 - i8 1, label %462 + i8 0, label %452 + i8 1, label %458 i8 2, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hf5ccb4a6fa474ac6E.llvm.17814153394679541470.exit.i.i.i.i.i15.i" ] -456: ; preds = %450 - %457 = getelementptr inbounds i8, ptr %452, i64 24 - %458 = load ptr, ptr %457, align 8, !alias.scope !3150, !noalias !3153, !nonnull !11, !noundef !11 - %459 = getelementptr inbounds i8, ptr %452, i64 32 - %460 = load i64, ptr %459, align 8, !alias.scope !3150, !noalias !3153, !noundef !11 - %461 = getelementptr inbounds i8, ptr %458, i64 16 +452: ; preds = %.lr.ph.i152 + %453 = getelementptr inbounds i8, ptr %448, i64 24 + %454 = load ptr, ptr %453, align 8, !alias.scope !3150, !noalias !3153, !nonnull !11, !noundef !11 + %455 = getelementptr inbounds i8, ptr %448, i64 32 + %456 = load i64, ptr %455, align 8, !alias.scope !3150, !noalias !3153, !noundef !11 + %457 = getelementptr inbounds i8, ptr %454, i64 16 br label %_ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.17814153394679541470.exit.i.i.i.i16.i -462: ; preds = %450 - %463 = getelementptr inbounds i8, ptr %452, i64 24 - %464 = load ptr, ptr %463, align 8, !alias.scope !3150, !noalias !3153, !nonnull !11, !align !598, !noundef !11 - %465 = getelementptr inbounds i8, ptr %452, i64 32 - %466 = load i64, ptr %465, align 8, !alias.scope !3150, !noalias !3153, !noundef !11 +458: ; preds = %.lr.ph.i152 + %459 = getelementptr inbounds i8, ptr %448, i64 24 + %460 = load ptr, ptr %459, align 8, !alias.scope !3150, !noalias !3153, !nonnull !11, !align !598, !noundef !11 + %461 = getelementptr inbounds i8, ptr %448, i64 32 + %462 = load i64, ptr %461, align 8, !alias.scope !3150, !noalias !3153, !noundef !11 br label %_ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.17814153394679541470.exit.i.i.i.i16.i -"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hf5ccb4a6fa474ac6E.llvm.17814153394679541470.exit.i.i.i.i.i15.i": ; preds = %450 - %467 = icmp ult i8 %454, 24 - call void @llvm.assume(i1 %467) - %468 = zext nneg i8 %454 to i64 - %469 = getelementptr inbounds i8, ptr %452, i64 17 +"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hf5ccb4a6fa474ac6E.llvm.17814153394679541470.exit.i.i.i.i.i15.i": ; preds = %.lr.ph.i152 + %463 = icmp ult i8 %450, 24 + call void @llvm.assume(i1 %463) + %464 = zext nneg i8 %450 to i64 + %465 = getelementptr inbounds i8, ptr %448, i64 17 br label %_ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.17814153394679541470.exit.i.i.i.i16.i -_ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.17814153394679541470.exit.i.i.i.i16.i: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hf5ccb4a6fa474ac6E.llvm.17814153394679541470.exit.i.i.i.i.i15.i", %462, %456 - %.sroa.4.0.i.i.i.i.i17.i = phi i64 [ %468, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hf5ccb4a6fa474ac6E.llvm.17814153394679541470.exit.i.i.i.i.i15.i" ], [ %466, %462 ], [ %460, %456 ] - %.sroa.0.0.i.i.i.i.i18.i = phi ptr [ %469, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hf5ccb4a6fa474ac6E.llvm.17814153394679541470.exit.i.i.i.i.i15.i" ], [ %464, %462 ], [ %461, %456 ] - %470 = load i8, ptr %11, align 8, !range !2811, !alias.scope !3154, !noalias !3157, !noundef !11 - %471 = add nsw i8 %470, -24 - %narrow.i11.i.i.i.i19.i = call i8 @llvm.umin.i8(i8 %471, i8 2) +_ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.17814153394679541470.exit.i.i.i.i16.i: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hf5ccb4a6fa474ac6E.llvm.17814153394679541470.exit.i.i.i.i.i15.i", %458, %452 + %.sroa.4.0.i.i.i.i.i17.i = phi i64 [ %464, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hf5ccb4a6fa474ac6E.llvm.17814153394679541470.exit.i.i.i.i.i15.i" ], [ %462, %458 ], [ %456, %452 ] + %.sroa.0.0.i.i.i.i.i18.i = phi ptr [ %465, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hf5ccb4a6fa474ac6E.llvm.17814153394679541470.exit.i.i.i.i.i15.i" ], [ %460, %458 ], [ %457, %452 ] + %466 = load i8, ptr %11, align 8, !range !2811, !alias.scope !3154, !noalias !3157, !noundef !11 + %467 = add nsw i8 %466, -24 + %narrow.i11.i.i.i.i19.i = call i8 @llvm.umin.i8(i8 %467, i8 2) switch i8 %narrow.i11.i.i.i.i19.i, label %default.unreachable [ - i8 0, label %472 - i8 1, label %476 + i8 0, label %468 + i8 1, label %472 i8 2, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hf5ccb4a6fa474ac6E.llvm.17814153394679541470.exit.i12.i.i.i.i20.i" ] -472: ; preds = %_ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.17814153394679541470.exit.i.i.i.i16.i - %473 = load ptr, ptr %13, align 8, !alias.scope !3154, !noalias !3157, !nonnull !11, !noundef !11 - %474 = load i64, ptr %14, align 8, !alias.scope !3154, !noalias !3157, !noundef !11 - %475 = getelementptr inbounds i8, ptr %473, i64 16 +468: ; preds = %_ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.17814153394679541470.exit.i.i.i.i16.i + %469 = load ptr, ptr %13, align 8, !alias.scope !3154, !noalias !3157, !nonnull !11, !noundef !11 + %470 = load i64, ptr %14, align 8, !alias.scope !3154, !noalias !3157, !noundef !11 + %471 = getelementptr inbounds i8, ptr %469, i64 16 br label %"_ZN5rayon5slice16ParallelSliceMut11par_sort_by28_$u7b$$u7b$closure$u7d$$u7d$17ha5556b5394d5e6e7E.exit.i.i153" -476: ; preds = %_ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.17814153394679541470.exit.i.i.i.i16.i - %477 = load ptr, ptr %13, align 8, !alias.scope !3154, !noalias !3157, !nonnull !11, !align !598, !noundef !11 - %478 = load i64, ptr %14, align 8, !alias.scope !3154, !noalias !3157, !noundef !11 +472: ; preds = %_ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.17814153394679541470.exit.i.i.i.i16.i + %473 = load ptr, ptr %13, align 8, !alias.scope !3154, !noalias !3157, !nonnull !11, !align !598, !noundef !11 + %474 = load i64, ptr %14, align 8, !alias.scope !3154, !noalias !3157, !noundef !11 br label %"_ZN5rayon5slice16ParallelSliceMut11par_sort_by28_$u7b$$u7b$closure$u7d$$u7d$17ha5556b5394d5e6e7E.exit.i.i153" "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hf5ccb4a6fa474ac6E.llvm.17814153394679541470.exit.i12.i.i.i.i20.i": ; preds = %_ZN8smol_str4Repr6as_str17h6612cd4653de1669E.llvm.17814153394679541470.exit.i.i.i.i16.i - %479 = icmp ult i8 %470, 24 - call void @llvm.assume(i1 %479) - %480 = zext nneg i8 %470 to i64 + %475 = icmp ult i8 %466, 24 + call void @llvm.assume(i1 %475) + %476 = zext nneg i8 %466 to i64 br label %"_ZN5rayon5slice16ParallelSliceMut11par_sort_by28_$u7b$$u7b$closure$u7d$$u7d$17ha5556b5394d5e6e7E.exit.i.i153" -"_ZN5rayon5slice16ParallelSliceMut11par_sort_by28_$u7b$$u7b$closure$u7d$$u7d$17ha5556b5394d5e6e7E.exit.i.i153": ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hf5ccb4a6fa474ac6E.llvm.17814153394679541470.exit.i12.i.i.i.i20.i", %476, %472 - %.sroa.4.0.i13.i.i.i.i21.i = phi i64 [ %480, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hf5ccb4a6fa474ac6E.llvm.17814153394679541470.exit.i12.i.i.i.i20.i" ], [ %478, %476 ], [ %474, %472 ] - %.sroa.0.0.i14.i.i.i.i22.i = phi ptr [ %12, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hf5ccb4a6fa474ac6E.llvm.17814153394679541470.exit.i12.i.i.i.i20.i" ], [ %477, %476 ], [ %475, %472 ] - %481 = getelementptr inbounds i8, ptr %.sroa.0.0.i.i.i.i.i18.i, i64 %.sroa.4.0.i.i.i.i.i17.i - %482 = getelementptr inbounds i8, ptr %.sroa.0.0.i14.i.i.i.i22.i, i64 %.sroa.4.0.i13.i.i.i.i21.i - %483 = invoke { i1, i8 } @_ZN4core4iter6traits8iterator12iter_compare17h1a6675c57c9e8d25E.llvm.4370348610037963988(ptr noundef nonnull %.sroa.0.0.i.i.i.i.i18.i, ptr noundef nonnull %481, ptr noundef nonnull %.sroa.0.0.i14.i.i.i.i22.i, ptr noundef nonnull %482) - to label %484 unwind label %.loopexit.i - -484: ; preds = %"_ZN5rayon5slice16ParallelSliceMut11par_sort_by28_$u7b$$u7b$closure$u7d$$u7d$17ha5556b5394d5e6e7E.exit.i.i153" - %485 = extractvalue { i1, i8 } %483, 1 - %486 = icmp eq i8 %485, -1 - br i1 %486, label %487, label %.thread.i - -487: ; preds = %484 - %488 = add i64 %.sroa.02.08.i, -1 - %exitcond.not.i = icmp eq i64 %.sroa.02.08.i, %448 - br i1 %exitcond.not.i, label %491, label %489, !prof !2909 - -489: ; preds = %487 - %490 = getelementptr inbounds [0 x { { i8, [15 x i8] }, { { i8, [23 x i8] } }, { i8, [23 x i8] }, { i32, { { i32, i32 }, i16, [1 x i16] }, { { { i32, i32 }, i16, [1 x i16] }, {} } }, i8, i8, [2 x i8] }], ptr %222, i64 0, i64 %488 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(96) %490, ptr noundef nonnull align 8 dereferenceable(96) %452, i64 96, i1 false), !alias.scope !3021 - %exitcond16.not.i = icmp eq i64 %451, %221 - br i1 %exitcond16.not.i, label %.thread.i, label %450 - -491: ; preds = %487 - invoke void @_ZN4core9panicking18panic_bounds_check17h5aa5e8a957e001f9E(i64 noundef %488, i64 noundef %221, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.a39d7e32b45b33e489c44911516ec98b.87) #36 - to label %449 unwind label %.loopexit.split-lp.i156 +"_ZN5rayon5slice16ParallelSliceMut11par_sort_by28_$u7b$$u7b$closure$u7d$$u7d$17ha5556b5394d5e6e7E.exit.i.i153": ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hf5ccb4a6fa474ac6E.llvm.17814153394679541470.exit.i12.i.i.i.i20.i", %472, %468 + %.sroa.4.0.i13.i.i.i.i21.i = phi i64 [ %476, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hf5ccb4a6fa474ac6E.llvm.17814153394679541470.exit.i12.i.i.i.i20.i" ], [ %474, %472 ], [ %470, %468 ] + %.sroa.0.0.i14.i.i.i.i22.i = phi ptr [ %12, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$5index17hf5ccb4a6fa474ac6E.llvm.17814153394679541470.exit.i12.i.i.i.i20.i" ], [ %473, %472 ], [ %471, %468 ] + %477 = getelementptr inbounds i8, ptr %.sroa.0.0.i.i.i.i.i18.i, i64 %.sroa.4.0.i.i.i.i.i17.i + %478 = getelementptr inbounds i8, ptr %.sroa.0.0.i14.i.i.i.i22.i, i64 %.sroa.4.0.i13.i.i.i.i21.i + %479 = invoke { i1, i8 } @_ZN4core4iter6traits8iterator12iter_compare17h1a6675c57c9e8d25E.llvm.4370348610037963988(ptr noundef nonnull %.sroa.0.0.i.i.i.i.i18.i, ptr noundef nonnull %477, ptr noundef nonnull %.sroa.0.0.i14.i.i.i.i22.i, ptr noundef nonnull %478) + to label %480 unwind label %.loopexit.i + +480: ; preds = %"_ZN5rayon5slice16ParallelSliceMut11par_sort_by28_$u7b$$u7b$closure$u7d$$u7d$17ha5556b5394d5e6e7E.exit.i.i153" + %481 = extractvalue { i1, i8 } %479, 1 + %482 = icmp eq i8 %481, -1 + br i1 %482, label %483, label %.thread.i + +483: ; preds = %480 + %484 = add i64 %.sroa.02.08.i, -1 + %485 = getelementptr inbounds [0 x { { i8, [15 x i8] }, { { i8, [23 x i8] } }, { i8, [23 x i8] }, { i32, { { i32, i32 }, i16, [1 x i16] }, { { { i32, i32 }, i16, [1 x i16] }, {} } }, i8, i8, [2 x i8] }], ptr %222, i64 0, i64 %484 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(96) %485, ptr noundef nonnull align 8 dereferenceable(96) %448, i64 96, i1 false), !alias.scope !3021 + %exitcond.not.i = icmp eq i64 %447, %221 + br i1 %exitcond.not.i, label %.thread.i, label %.lr.ph.i152 .loopexit.i: ; preds = %"_ZN5rayon5slice16ParallelSliceMut11par_sort_by28_$u7b$$u7b$closure$u7d$$u7d$17ha5556b5394d5e6e7E.exit.i.i153" %lpad.loopexit.i154 = landingpad { ptr, i32 } cleanup - br label %493 - -.loopexit.split-lp.i156: ; preds = %491 - %lpad.loopexit.split-lp.i157 = landingpad { ptr, i32 } - cleanup - %492 = mul i64 %.079365, 96 - %scevgep.le = getelementptr i8, ptr %0, i64 %492 - br label %493 - -493: ; preds = %.loopexit.split-lp.i156, %.loopexit.i - %.sroa.5.07.i380 = phi ptr [ %.sroa.5.07.i, %.loopexit.i ], [ %scevgep.le, %.loopexit.split-lp.i156 ] - %lpad.phi.i155 = phi { ptr, i32 } [ %lpad.loopexit.i154, %.loopexit.i ], [ %lpad.loopexit.split-lp.i157, %.loopexit.split-lp.i156 ] - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(96) %.sroa.5.07.i380, ptr noundef nonnull readonly align 8 dereferenceable(96) %4, i64 96, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(96) %.sroa.5.07.i, ptr noundef nonnull readonly align 8 dereferenceable(96) %4, i64 96, i1 false) br label %.body -_ZN5rayon5slice9mergesort11insert_head17h9dadc9904109eebbE.exit: ; preds = %220, %.noexc159, %.thread.i +_ZN5rayon5slice9mergesort11insert_head17h9dadc9904109eebbE.exit: ; preds = %220, %.noexc156, %.thread.i %.not94 = icmp ne i64 %219, 0 - %494 = icmp ult i64 %221, 10 - %or.cond96 = and i1 %.not94, %494 + %486 = icmp ult i64 %221, 10 + %or.cond96 = and i1 %.not94, %486 br i1 %or.cond96, label %.lr.ph.split, label %._crit_edge -495: ; preds = %.body - %496 = landingpad { ptr, i32 } +487: ; preds = %.body + %488 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #35 unreachable -497: ; preds = %80, %76, %.noexc +489: ; preds = %80, %76, %.noexc call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6), !noalias !2949 resume { ptr, i32 } %eh.lpad-body } diff --git a/bench/sentencepiece/optimized/unigram_model.cc.ll b/bench/sentencepiece/optimized/unigram_model.cc.ll index 5bf43293bfc..2706cfeab79 100644 --- a/bench/sentencepiece/optimized/unigram_model.cc.ll +++ b/bench/sentencepiece/optimized/unigram_model.cc.ll @@ -7864,7 +7864,7 @@ _ZNSt6vectorIZNK13sentencepiece7unigram5Model15EncodeOptimizedESt17basic_string_ br label %43 43: ; preds = %.lr.ph, %_ZNK5Darts15DoubleArrayImplIvvivE8traverseEPKcRmS4_m.exit._crit_edge - %.059140 = phi i32 [ 0, %.lr.ph ], [ %.pre165, %_ZNK5Darts15DoubleArrayImplIvvivE8traverseEPKcRmS4_m.exit._crit_edge ] + %.059140 = phi i32 [ 0, %.lr.ph ], [ %.pre155, %_ZNK5Darts15DoubleArrayImplIvvivE8traverseEPKcRmS4_m.exit._crit_edge ] %44 = sext i32 %.059140 to i64 %45 = getelementptr inbounds %struct.BestPathNode, ptr %.sroa.0.0, i64 %44, i32 1 %46 = load float, ptr %45, align 4 @@ -7882,19 +7882,19 @@ _ZNSt6vectorIZNK13sentencepiece7unigram5Model15EncodeOptimizedESt17basic_string_ br label %.outer.outer .outer.outer: ; preds = %123, %43 - %.0103.ph.ph = phi i64 [ %73, %123 ], [ 0, %43 ] - %.0.ph.ph = phi i64 [ %63, %123 ], [ %44, %43 ] + %.0103.ph.ph = phi i64 [ %72, %123 ], [ 0, %43 ] + %.0.ph.ph = phi i64 [ %76, %123 ], [ %44, %43 ] %.061.ph.ph = phi i8 [ %spec.select, %123 ], [ 0, %43 ] br label %.outer .outer: ; preds = %.loopexit.i, %.outer.outer - %.0103.ph = phi i64 [ %.0103.ph.ph, %.outer.outer ], [ %73, %.loopexit.i ] - %.0.ph = phi i64 [ %.0.ph.ph, %.outer.outer ], [ %63, %.loopexit.i ] + %.0103.ph = phi i64 [ %.0103.ph.ph, %.outer.outer ], [ %72, %.loopexit.i ] + %.0.ph = phi i64 [ %.0.ph.ph, %.outer.outer ], [ %76, %.loopexit.i ] br label %57 57: ; preds = %.outer, %78 - %.0103 = phi i64 [ %73, %78 ], [ %.0103.ph, %.outer ] - %.0 = phi i64 [ %63, %78 ], [ %.0.ph, %.outer ] + %.0103 = phi i64 [ %72, %78 ], [ %.0103.ph, %.outer ] + %.0 = phi i64 [ %76, %78 ], [ %.0.ph, %.outer ] %58 = icmp ult i64 %.0, %32 br i1 %58, label %.preheader39.i, label %_ZNK5Darts15DoubleArrayImplIvvivE8traverseEPKcRmS4_m.exit @@ -7903,34 +7903,34 @@ _ZNSt6vectorIZNK13sentencepiece7unigram5Model15EncodeOptimizedESt17basic_string_ %60 = load ptr, ptr %35, align 8 %61 = getelementptr inbounds %"class.Darts::Details::DoubleArrayUnit", ptr %60, i64 %.0103 %62 = load i32, ptr %61, align 4 - %63 = add nuw nsw i64 %.0, 1 - %64 = lshr i32 %62, 10 - %65 = lshr i32 %62, 6 - %66 = and i32 %65, 8 - %67 = shl nuw nsw i32 %64, %66 - %68 = getelementptr inbounds i8, ptr %3, i64 %.0 - %69 = load i8, ptr %68, align 1 - %70 = zext i8 %69 to i32 - %71 = xor i32 %67, %59 - %72 = xor i32 %71, %70 - %73 = zext nneg i32 %72 to i64 - %74 = getelementptr inbounds %"class.Darts::Details::DoubleArrayUnit", ptr %60, i64 %73 - %75 = load i32, ptr %74, align 4 - %76 = and i32 %75, -2147483393 - %.not30.i = icmp eq i32 %76, %70 + %63 = lshr i32 %62, 10 + %64 = lshr i32 %62, 6 + %65 = and i32 %64, 8 + %66 = shl nuw nsw i32 %63, %65 + %67 = getelementptr inbounds i8, ptr %3, i64 %.0 + %68 = load i8, ptr %67, align 1 + %69 = zext i8 %68 to i32 + %70 = xor i32 %66, %59 + %71 = xor i32 %70, %69 + %72 = zext nneg i32 %71 to i64 + %73 = getelementptr inbounds %"class.Darts::Details::DoubleArrayUnit", ptr %60, i64 %72 + %74 = load i32, ptr %73, align 4 + %75 = and i32 %74, -2147483393 + %.not30.i = icmp eq i32 %75, %69 br i1 %.not30.i, label %.loopexit.i, label %_ZNK5Darts15DoubleArrayImplIvvivE8traverseEPKcRmS4_m.exit .loopexit.i: ; preds = %.preheader39.i - %77 = and i32 %75, 256 + %76 = add nuw nsw i64 %.0, 1 + %77 = and i32 %74, 256 %.not37.i = icmp eq i32 %77, 0 br i1 %.not37.i, label %.outer, label %78, !llvm.loop !58 78: ; preds = %.loopexit.i - %79 = lshr i32 %75, 10 - %80 = lshr i32 %75, 6 + %79 = lshr i32 %74, 10 + %80 = lshr i32 %74, 6 %81 = and i32 %80, 8 %82 = shl nuw nsw i32 %79, %81 - %83 = xor i32 %82, %72 + %83 = xor i32 %82, %71 %84 = zext nneg i32 %83 to i64 %85 = getelementptr inbounds %"class.Darts::Details::DoubleArrayUnit", ptr %60, i64 %84 %86 = load i32, ptr %85, align 4 @@ -7946,8 +7946,8 @@ _ZNSt6vectorIZNK13sentencepiece7unigram5Model15EncodeOptimizedESt17basic_string_ br i1 %95, label %57, label %96, !llvm.loop !58 96: ; preds = %78 - %97 = getelementptr inbounds %struct.BestPathNode, ptr %.sroa.0.0, i64 %63 - %98 = sub i64 %63, %44 + %97 = getelementptr inbounds %struct.BestPathNode, ptr %.sroa.0.0, i64 %76 + %98 = sub i64 %76, %44 %99 = icmp eq i32 %94, 4 br i1 %99, label %100, label %105 @@ -7996,11 +7996,11 @@ _ZNSt6vectorIZNK13sentencepiece7unigram5Model15EncodeOptimizedESt17basic_string_ _ZNK5Darts15DoubleArrayImplIvvivE8traverseEPKcRmS4_m.exit: ; preds = %57, %.preheader39.i %126 = trunc nuw i8 %.061.ph.ph to i1 - %.pre165 = add nsw i32 %.sroa.speculated, %.059140 + %.pre155 = add nsw i32 %.sroa.speculated, %.059140 br i1 %126, label %_ZNK5Darts15DoubleArrayImplIvvivE8traverseEPKcRmS4_m.exit._crit_edge, label %127 127: ; preds = %_ZNK5Darts15DoubleArrayImplIvvivE8traverseEPKcRmS4_m.exit - %128 = sext i32 %.pre165 to i64 + %128 = sext i32 %.pre155 to i64 %129 = getelementptr inbounds %struct.BestPathNode, ptr %.sroa.0.0, i64 %128 %130 = fadd float %19, %46 %131 = getelementptr inbounds i8, ptr %129, i64 8 @@ -8022,7 +8022,7 @@ _ZNK5Darts15DoubleArrayImplIvvivE8traverseEPKcRmS4_m.exit: ; preds = %57, %.preh br label %_ZNK5Darts15DoubleArrayImplIvvivE8traverseEPKcRmS4_m.exit._crit_edge _ZNK5Darts15DoubleArrayImplIvvivE8traverseEPKcRmS4_m.exit._crit_edge: ; preds = %_ZNK5Darts15DoubleArrayImplIvvivE8traverseEPKcRmS4_m.exit, %134, %138 - %140 = icmp slt i32 %.pre165, %16 + %140 = icmp slt i32 %.pre155, %16 br i1 %140, label %43, label %._crit_edge, !llvm.loop !59 ._crit_edge: ; preds = %_ZNK5Darts15DoubleArrayImplIvvivE8traverseEPKcRmS4_m.exit._crit_edge @@ -8107,16 +8107,16 @@ _ZNSt6vectorISt4pairISt17basic_string_viewIcSt11char_traitsIcEEiESaIS5_EE12empla ._crit_edge144: ; preds = %_ZNSt6vectorISt4pairISt17basic_string_viewIcSt11char_traitsIcEEiESaIS5_EE12emplace_backIJS4_RKiEEERS5_DpOT_.exit %.pre = load ptr, ptr %0, align 8 - %.pre164 = load ptr, ptr %142, align 8 - %174 = icmp ne ptr %.pre, %.pre164 - %.sroa.0.08.i.i = getelementptr inbounds i8, ptr %.pre164, i64 -24 + %.pre154 = load ptr, ptr %142, align 8 + %174 = icmp ne ptr %.pre, %.pre154 + %.sroa.0.08.i.i = getelementptr inbounds i8, ptr %.pre154, i64 -24 %175 = icmp ult ptr %.pre, %.sroa.0.08.i.i %or.cond.i.i = select i1 %174, i1 %175, i1 false br i1 %or.cond.i.i, label %.lr.ph.i.i, label %_ZSt7reverseIN9__gnu_cxx17__normal_iteratorIPSt4pairISt17basic_string_viewIcSt11char_traitsIcEEiESt6vectorIS7_SaIS7_EEEEEvT_SD_.exit.thread .lr.ph.i.i: ; preds = %._crit_edge144, %.lr.ph.i.i %.sroa.0.011.i.i = phi ptr [ %.sroa.0.0.i.i, %.lr.ph.i.i ], [ %.sroa.0.08.i.i, %._crit_edge144 ] - %.pn10.i.i = phi ptr [ %.sroa.0.011.i.i, %.lr.ph.i.i ], [ %.pre164, %._crit_edge144 ] + %.pn10.i.i = phi ptr [ %.sroa.0.011.i.i, %.lr.ph.i.i ], [ %.pre154, %._crit_edge144 ] %.sroa.05.09.i.i = phi ptr [ %180, %.lr.ph.i.i ], [ %.pre, %._crit_edge144 ] call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(16) %.sroa.05.09.i.i, i64 16, i1 false) diff --git a/bench/sqlite/optimized/sqlite3.ll b/bench/sqlite/optimized/sqlite3.ll index f5a021f6303..ed73c95fe22 100644 --- a/bench/sqlite/optimized/sqlite3.ll +++ b/bench/sqlite/optimized/sqlite3.ll @@ -38324,15 +38324,15 @@ sqlite3KeywordCode.exit: ; preds = %.critedge.us.i.i, % } ; Function Attrs: nofree norecurse nosync nounwind memory(read, inaccessiblemem: none) uwtable -define dso_local range(i32 0, 2) i32 @sqlite3_complete(ptr noundef readonly %0) #14 { +define dso_local range(i32 0, 2) i32 @sqlite3_complete(ptr nocapture noundef readonly %0) #14 { br label %2 2: ; preds = %.loopexit, %1 - %.062 = phi ptr [ %0, %1 ], [ %157, %.loopexit ] - %.061 = phi i8 [ 0, %1 ], [ %156, %.loopexit ] + %.062 = phi ptr [ %0, %1 ], [ %154, %.loopexit ] + %.061 = phi i8 [ 0, %1 ], [ %153, %.loopexit ] %3 = load i8, ptr %.062, align 1 switch i8 %3, label %27 [ - i8 0, label %158 + i8 0, label %155 i8 59, label %.loopexit i8 32, label %4 i8 13, label %4 @@ -38452,8 +38452,8 @@ define dso_local range(i32 0, 2) i32 @sqlite3_complete(ptr noundef readonly %0) i8 67, label %40 i8 116, label %60 i8 84, label %60 - i8 101, label %115 - i8 69, label %115 + i8 101, label %112 + i8 69, label %112 ] 40: ; preds = %38, %38 @@ -38510,7 +38510,7 @@ sqlite3_strnicmp.exit: ; preds = %sqlite3_strnicmp.ex switch i32 %39, label %.thread133 [ i32 7, label %.lr.ph.i83 i32 4, label %.lr.ph.i92 - i32 9, label %.lr.ph.i101.preheader + i32 9, label %.lr.ph.i101 ] .lr.ph.i83: ; preds = %60, %71 @@ -38535,22 +38535,22 @@ sqlite3_strnicmp.exit: ; preds = %sqlite3_strnicmp.ex 71: ; preds = %62 %72 = getelementptr inbounds i8, ptr %.01422.i86, i64 1 %.023.i85.add = add nuw nsw i64 %.023.i85.idx, 1 - %exitcond238.not = icmp eq i64 %.023.i85.idx, 6 - br i1 %exitcond238.not, label %sqlite3_strnicmp.exit.thread, label %.lr.ph.i83, !llvm.loop !65 + %exitcond240.not = icmp eq i64 %.023.i85.idx, 6 + br i1 %exitcond240.not, label %sqlite3_strnicmp.exit.thread, label %.lr.ph.i83, !llvm.loop !65 split.i88: ; preds = %62 %73 = zext i8 %65 to i32 br label %sqlite3_strnicmp.exit91 sqlite3_strnicmp.exit91.loopexit: ; preds = %.lr.ph.i83 - %.pre248 = load i8, ptr %.023.i85.ptr, align 1 - %.phi.trans.insert249 = zext i8 %.pre248 to i64 - %.phi.trans.insert250 = getelementptr inbounds [274 x i8], ptr @sqlite3UpperToLower, i64 0, i64 %.phi.trans.insert249 - %.pre251 = load i8, ptr %.phi.trans.insert250, align 1 + %.pre256 = load i8, ptr %.023.i85.ptr, align 1 + %.phi.trans.insert257 = zext i8 %.pre256 to i64 + %.phi.trans.insert258 = getelementptr inbounds [274 x i8], ptr @sqlite3UpperToLower, i64 0, i64 %.phi.trans.insert257 + %.pre259 = load i8, ptr %.phi.trans.insert258, align 1 br label %sqlite3_strnicmp.exit91 sqlite3_strnicmp.exit91: ; preds = %sqlite3_strnicmp.exit91.loopexit, %split.i88 - %74 = phi i8 [ %69, %split.i88 ], [ %.pre251, %sqlite3_strnicmp.exit91.loopexit ] + %74 = phi i8 [ %69, %split.i88 ], [ %.pre259, %sqlite3_strnicmp.exit91.loopexit ] %75 = phi i32 [ %73, %split.i88 ], [ 0, %sqlite3_strnicmp.exit91.loopexit ] %76 = zext i8 %74 to i32 %77 = icmp eq i32 %75, %76 @@ -38578,115 +38578,106 @@ sqlite3_strnicmp.exit91: ; preds = %sqlite3_strnicmp.ex 88: ; preds = %79 %89 = getelementptr inbounds i8, ptr %.01422.i95, i64 1 %.023.i94.add = add nuw nsw i64 %.023.i94.idx, 1 - %exitcond239.not = icmp eq i64 %.023.i94.idx, 3 - br i1 %exitcond239.not, label %sqlite3_strnicmp.exit.thread, label %.lr.ph.i92, !llvm.loop !65 + %exitcond238.not = icmp eq i64 %.023.i94.idx, 3 + br i1 %exitcond238.not, label %sqlite3_strnicmp.exit.thread, label %.lr.ph.i92, !llvm.loop !65 split.i97: ; preds = %79 %90 = zext i8 %82 to i32 br label %sqlite3_strnicmp.exit100 sqlite3_strnicmp.exit100.loopexit: ; preds = %.lr.ph.i92 - %.pre252 = load i8, ptr %.023.i94.ptr, align 1 - %.phi.trans.insert253 = zext i8 %.pre252 to i64 - %.phi.trans.insert254 = getelementptr inbounds [274 x i8], ptr @sqlite3UpperToLower, i64 0, i64 %.phi.trans.insert253 - %.pre255 = load i8, ptr %.phi.trans.insert254, align 1 + %.pre248 = load i8, ptr %.023.i94.ptr, align 1 + %.phi.trans.insert249 = zext i8 %.pre248 to i64 + %.phi.trans.insert250 = getelementptr inbounds [274 x i8], ptr @sqlite3UpperToLower, i64 0, i64 %.phi.trans.insert249 + %.pre251 = load i8, ptr %.phi.trans.insert250, align 1 br label %sqlite3_strnicmp.exit100 sqlite3_strnicmp.exit100: ; preds = %sqlite3_strnicmp.exit100.loopexit, %split.i97 - %91 = phi i8 [ %86, %split.i97 ], [ %.pre255, %sqlite3_strnicmp.exit100.loopexit ] + %91 = phi i8 [ %86, %split.i97 ], [ %.pre251, %sqlite3_strnicmp.exit100.loopexit ] %92 = phi i32 [ %90, %split.i97 ], [ 0, %sqlite3_strnicmp.exit100.loopexit ] %93 = zext i8 %91 to i32 %94 = icmp eq i32 %92, %93 - br i1 %94, label %sqlite3_strnicmp.exit.thread, label %95 - -95: ; preds = %sqlite3_strnicmp.exit100 - %96 = icmp ne i64 %indvars.iv, 9 - %97 = icmp eq ptr %.062, null - %or.cond143 = or i1 %97, %96 - br i1 %or.cond143, label %.thread133, label %.lr.ph.i101.preheader - -.lr.ph.i101.preheader: ; preds = %95, %60 - br label %.lr.ph.i101 + br i1 %94, label %sqlite3_strnicmp.exit.thread, label %.thread133 -.lr.ph.i101: ; preds = %.lr.ph.i101.preheader, %108 - %.023.i103.idx = phi i64 [ %.023.i103.add, %108 ], [ 0, %.lr.ph.i101.preheader ] - %.01422.i104 = phi ptr [ %109, %108 ], [ %.062, %.lr.ph.i101.preheader ] +.lr.ph.i101: ; preds = %60, %105 + %.023.i103.idx = phi i64 [ %.023.i103.add, %105 ], [ 0, %60 ] + %.01422.i104 = phi ptr [ %106, %105 ], [ %.062, %60 ] %.023.i103.ptr = getelementptr inbounds i8, ptr @.str.30, i64 %.023.i103.idx - %98 = load i8, ptr %.01422.i104, align 1 - %.not.i105 = icmp eq i8 %98, 0 - br i1 %.not.i105, label %sqlite3_strnicmp.exit109.loopexit, label %99 + %95 = load i8, ptr %.01422.i104, align 1 + %.not.i105 = icmp eq i8 %95, 0 + br i1 %.not.i105, label %sqlite3_strnicmp.exit109.loopexit, label %96 -99: ; preds = %.lr.ph.i101 - %100 = zext i8 %98 to i64 - %101 = getelementptr inbounds [274 x i8], ptr @sqlite3UpperToLower, i64 0, i64 %100 - %102 = load i8, ptr %101, align 1 - %103 = load i8, ptr %.023.i103.ptr, align 1 - %104 = zext i8 %103 to i64 - %105 = getelementptr inbounds [274 x i8], ptr @sqlite3UpperToLower, i64 0, i64 %104 - %106 = load i8, ptr %105, align 1 - %107 = icmp eq i8 %102, %106 - br i1 %107, label %108, label %split.i106 +96: ; preds = %.lr.ph.i101 + %97 = zext i8 %95 to i64 + %98 = getelementptr inbounds [274 x i8], ptr @sqlite3UpperToLower, i64 0, i64 %97 + %99 = load i8, ptr %98, align 1 + %100 = load i8, ptr %.023.i103.ptr, align 1 + %101 = zext i8 %100 to i64 + %102 = getelementptr inbounds [274 x i8], ptr @sqlite3UpperToLower, i64 0, i64 %101 + %103 = load i8, ptr %102, align 1 + %104 = icmp eq i8 %99, %103 + br i1 %104, label %105, label %split.i106 -108: ; preds = %99 - %109 = getelementptr inbounds i8, ptr %.01422.i104, i64 1 +105: ; preds = %96 + %106 = getelementptr inbounds i8, ptr %.01422.i104, i64 1 %.023.i103.add = add nuw nsw i64 %.023.i103.idx, 1 - %exitcond240.not = icmp eq i64 %.023.i103.idx, 8 - br i1 %exitcond240.not, label %sqlite3_strnicmp.exit.thread, label %.lr.ph.i101, !llvm.loop !65 + %exitcond239.not = icmp eq i64 %.023.i103.idx, 8 + br i1 %exitcond239.not, label %sqlite3_strnicmp.exit.thread, label %.lr.ph.i101, !llvm.loop !65 -split.i106: ; preds = %99 - %110 = zext i8 %102 to i32 +split.i106: ; preds = %96 + %107 = zext i8 %99 to i32 br label %sqlite3_strnicmp.exit109 sqlite3_strnicmp.exit109.loopexit: ; preds = %.lr.ph.i101 - %.pre256 = load i8, ptr %.023.i103.ptr, align 1 - %.phi.trans.insert257 = zext i8 %.pre256 to i64 - %.phi.trans.insert258 = getelementptr inbounds [274 x i8], ptr @sqlite3UpperToLower, i64 0, i64 %.phi.trans.insert257 - %.pre259 = load i8, ptr %.phi.trans.insert258, align 1 + %.pre252 = load i8, ptr %.023.i103.ptr, align 1 + %.phi.trans.insert253 = zext i8 %.pre252 to i64 + %.phi.trans.insert254 = getelementptr inbounds [274 x i8], ptr @sqlite3UpperToLower, i64 0, i64 %.phi.trans.insert253 + %.pre255 = load i8, ptr %.phi.trans.insert254, align 1 br label %sqlite3_strnicmp.exit109 sqlite3_strnicmp.exit109: ; preds = %sqlite3_strnicmp.exit109.loopexit, %split.i106 - %111 = phi i8 [ %106, %split.i106 ], [ %.pre259, %sqlite3_strnicmp.exit109.loopexit ] - %112 = phi i32 [ %110, %split.i106 ], [ 0, %sqlite3_strnicmp.exit109.loopexit ] - %113 = zext i8 %111 to i32 - %114 = icmp eq i32 %112, %113 - br i1 %114, label %sqlite3_strnicmp.exit.thread, label %.thread133 + %108 = phi i8 [ %103, %split.i106 ], [ %.pre255, %sqlite3_strnicmp.exit109.loopexit ] + %109 = phi i32 [ %107, %split.i106 ], [ 0, %sqlite3_strnicmp.exit109.loopexit ] + %110 = zext i8 %108 to i32 + %111 = icmp eq i32 %109, %110 + br i1 %111, label %sqlite3_strnicmp.exit.thread, label %.thread133 -.thread133: ; preds = %sqlite3_strnicmp.exit91, %60, %sqlite3_strnicmp.exit109, %95 +.thread133: ; preds = %sqlite3_strnicmp.exit100, %sqlite3_strnicmp.exit91, %60, %sqlite3_strnicmp.exit109 br label %sqlite3_strnicmp.exit.thread -115: ; preds = %38, %38 +112: ; preds = %38, %38 switch i32 %39, label %sqlite3_strnicmp.exit127.thread141 [ i32 3, label %.lr.ph.i110 i32 7, label %.lr.ph.i119 ] -.lr.ph.i110: ; preds = %115, %126 - %.023.i112.idx = phi i64 [ %.023.i112.add, %126 ], [ 0, %115 ] - %.01422.i113 = phi ptr [ %127, %126 ], [ %.062, %115 ] +.lr.ph.i110: ; preds = %112, %123 + %.023.i112.idx = phi i64 [ %.023.i112.add, %123 ], [ 0, %112 ] + %.01422.i113 = phi ptr [ %124, %123 ], [ %.062, %112 ] %.023.i112.ptr = getelementptr inbounds i8, ptr @.str.31, i64 %.023.i112.idx - %116 = load i8, ptr %.01422.i113, align 1 - %.not.i114 = icmp eq i8 %116, 0 - br i1 %.not.i114, label %sqlite3_strnicmp.exit118.loopexit, label %117 + %113 = load i8, ptr %.01422.i113, align 1 + %.not.i114 = icmp eq i8 %113, 0 + br i1 %.not.i114, label %sqlite3_strnicmp.exit118.loopexit, label %114 -117: ; preds = %.lr.ph.i110 - %118 = zext i8 %116 to i64 - %119 = getelementptr inbounds [274 x i8], ptr @sqlite3UpperToLower, i64 0, i64 %118 - %120 = load i8, ptr %119, align 1 - %121 = load i8, ptr %.023.i112.ptr, align 1 - %122 = zext i8 %121 to i64 - %123 = getelementptr inbounds [274 x i8], ptr @sqlite3UpperToLower, i64 0, i64 %122 - %124 = load i8, ptr %123, align 1 - %125 = icmp eq i8 %120, %124 - br i1 %125, label %126, label %split.i115 +114: ; preds = %.lr.ph.i110 + %115 = zext i8 %113 to i64 + %116 = getelementptr inbounds [274 x i8], ptr @sqlite3UpperToLower, i64 0, i64 %115 + %117 = load i8, ptr %116, align 1 + %118 = load i8, ptr %.023.i112.ptr, align 1 + %119 = zext i8 %118 to i64 + %120 = getelementptr inbounds [274 x i8], ptr @sqlite3UpperToLower, i64 0, i64 %119 + %121 = load i8, ptr %120, align 1 + %122 = icmp eq i8 %117, %121 + br i1 %122, label %123, label %split.i115 -126: ; preds = %117 - %127 = getelementptr inbounds i8, ptr %.01422.i113, i64 1 +123: ; preds = %114 + %124 = getelementptr inbounds i8, ptr %.01422.i113, i64 1 %.023.i112.add = add nuw nsw i64 %.023.i112.idx, 1 %exitcond237.not = icmp eq i64 %.023.i112.idx, 2 br i1 %exitcond237.not, label %sqlite3_strnicmp.exit.thread, label %.lr.ph.i110, !llvm.loop !65 -split.i115: ; preds = %117 - %128 = zext i8 %120 to i32 +split.i115: ; preds = %114 + %125 = zext i8 %117 to i32 br label %sqlite3_strnicmp.exit118 sqlite3_strnicmp.exit118.loopexit: ; preds = %.lr.ph.i110 @@ -38697,39 +38688,39 @@ sqlite3_strnicmp.exit118.loopexit: ; preds = %.lr.ph.i110 br label %sqlite3_strnicmp.exit118 sqlite3_strnicmp.exit118: ; preds = %sqlite3_strnicmp.exit118.loopexit, %split.i115 - %129 = phi i8 [ %124, %split.i115 ], [ %.pre247, %sqlite3_strnicmp.exit118.loopexit ] - %130 = phi i32 [ %128, %split.i115 ], [ 0, %sqlite3_strnicmp.exit118.loopexit ] - %131 = zext i8 %129 to i32 - %132 = icmp eq i32 %130, %131 - br i1 %132, label %sqlite3_strnicmp.exit.thread, label %sqlite3_strnicmp.exit127.thread141 - -.lr.ph.i119: ; preds = %115, %143 - %.023.i121.idx = phi i64 [ %.023.i121.add, %143 ], [ 0, %115 ] - %.01422.i122 = phi ptr [ %144, %143 ], [ %.062, %115 ] + %126 = phi i8 [ %121, %split.i115 ], [ %.pre247, %sqlite3_strnicmp.exit118.loopexit ] + %127 = phi i32 [ %125, %split.i115 ], [ 0, %sqlite3_strnicmp.exit118.loopexit ] + %128 = zext i8 %126 to i32 + %129 = icmp eq i32 %127, %128 + br i1 %129, label %sqlite3_strnicmp.exit.thread, label %sqlite3_strnicmp.exit127.thread141 + +.lr.ph.i119: ; preds = %112, %140 + %.023.i121.idx = phi i64 [ %.023.i121.add, %140 ], [ 0, %112 ] + %.01422.i122 = phi ptr [ %141, %140 ], [ %.062, %112 ] %.023.i121.ptr = getelementptr inbounds i8, ptr @.str.32, i64 %.023.i121.idx - %133 = load i8, ptr %.01422.i122, align 1 - %.not.i123 = icmp eq i8 %133, 0 - br i1 %.not.i123, label %sqlite3_strnicmp.exit127.loopexit, label %134 + %130 = load i8, ptr %.01422.i122, align 1 + %.not.i123 = icmp eq i8 %130, 0 + br i1 %.not.i123, label %sqlite3_strnicmp.exit127.loopexit, label %131 -134: ; preds = %.lr.ph.i119 - %135 = zext i8 %133 to i64 - %136 = getelementptr inbounds [274 x i8], ptr @sqlite3UpperToLower, i64 0, i64 %135 - %137 = load i8, ptr %136, align 1 - %138 = load i8, ptr %.023.i121.ptr, align 1 - %139 = zext i8 %138 to i64 - %140 = getelementptr inbounds [274 x i8], ptr @sqlite3UpperToLower, i64 0, i64 %139 - %141 = load i8, ptr %140, align 1 - %142 = icmp eq i8 %137, %141 - br i1 %142, label %143, label %split.i124 +131: ; preds = %.lr.ph.i119 + %132 = zext i8 %130 to i64 + %133 = getelementptr inbounds [274 x i8], ptr @sqlite3UpperToLower, i64 0, i64 %132 + %134 = load i8, ptr %133, align 1 + %135 = load i8, ptr %.023.i121.ptr, align 1 + %136 = zext i8 %135 to i64 + %137 = getelementptr inbounds [274 x i8], ptr @sqlite3UpperToLower, i64 0, i64 %136 + %138 = load i8, ptr %137, align 1 + %139 = icmp eq i8 %134, %138 + br i1 %139, label %140, label %split.i124 -143: ; preds = %134 - %144 = getelementptr inbounds i8, ptr %.01422.i122, i64 1 +140: ; preds = %131 + %141 = getelementptr inbounds i8, ptr %.01422.i122, i64 1 %.023.i121.add = add nuw nsw i64 %.023.i121.idx, 1 %exitcond.not = icmp eq i64 %.023.i121.idx, 6 br i1 %exitcond.not, label %sqlite3_strnicmp.exit.thread, label %.lr.ph.i119, !llvm.loop !65 -split.i124: ; preds = %134 - %145 = zext i8 %137 to i32 +split.i124: ; preds = %131 + %142 = zext i8 %134 to i32 br label %sqlite3_strnicmp.exit127 sqlite3_strnicmp.exit127.loopexit: ; preds = %.lr.ph.i119 @@ -38740,42 +38731,42 @@ sqlite3_strnicmp.exit127.loopexit: ; preds = %.lr.ph.i119 br label %sqlite3_strnicmp.exit127 sqlite3_strnicmp.exit127: ; preds = %sqlite3_strnicmp.exit127.loopexit, %split.i124 - %146 = phi i8 [ %141, %split.i124 ], [ %.pre243, %sqlite3_strnicmp.exit127.loopexit ] - %147 = phi i32 [ %145, %split.i124 ], [ 0, %sqlite3_strnicmp.exit127.loopexit ] - %148 = zext i8 %146 to i32 - %149 = icmp eq i32 %147, %148 - br i1 %149, label %sqlite3_strnicmp.exit.thread, label %sqlite3_strnicmp.exit127.thread141 + %143 = phi i8 [ %138, %split.i124 ], [ %.pre243, %sqlite3_strnicmp.exit127.loopexit ] + %144 = phi i32 [ %142, %split.i124 ], [ 0, %sqlite3_strnicmp.exit127.loopexit ] + %145 = zext i8 %143 to i32 + %146 = icmp eq i32 %144, %145 + br i1 %146, label %sqlite3_strnicmp.exit.thread, label %sqlite3_strnicmp.exit127.thread141 -sqlite3_strnicmp.exit127.thread141: ; preds = %sqlite3_strnicmp.exit118, %115, %sqlite3_strnicmp.exit127 +sqlite3_strnicmp.exit127.thread141: ; preds = %sqlite3_strnicmp.exit118, %112, %sqlite3_strnicmp.exit127 br label %sqlite3_strnicmp.exit.thread -sqlite3_strnicmp.exit.thread: ; preds = %143, %126, %88, %108, %71, %52, %38, %sqlite3_strnicmp.exit127, %sqlite3_strnicmp.exit118, %sqlite3_strnicmp.exit109, %sqlite3_strnicmp.exit100, %sqlite3_strnicmp.exit91, %sqlite3_strnicmp.exit, %sqlite3_strnicmp.exit127.thread141, %.thread133, %59 - %.1 = phi i64 [ 2, %sqlite3_strnicmp.exit127.thread141 ], [ 2, %.thread133 ], [ 2, %59 ], [ 4, %sqlite3_strnicmp.exit ], [ 6, %sqlite3_strnicmp.exit91 ], [ 5, %sqlite3_strnicmp.exit100 ], [ 5, %sqlite3_strnicmp.exit109 ], [ 7, %sqlite3_strnicmp.exit118 ], [ 3, %sqlite3_strnicmp.exit127 ], [ 2, %38 ], [ 4, %52 ], [ 6, %71 ], [ 5, %108 ], [ 5, %88 ], [ 7, %126 ], [ 3, %143 ] - %150 = shl i64 %indvars.iv, 32 - %sext = add i64 %150, -4294967296 - %151 = ashr exact i64 %sext, 32 - %152 = getelementptr inbounds i8, ptr %.062, i64 %151 +sqlite3_strnicmp.exit.thread: ; preds = %140, %123, %105, %88, %71, %52, %38, %sqlite3_strnicmp.exit127, %sqlite3_strnicmp.exit118, %sqlite3_strnicmp.exit109, %sqlite3_strnicmp.exit100, %sqlite3_strnicmp.exit91, %sqlite3_strnicmp.exit, %sqlite3_strnicmp.exit127.thread141, %.thread133, %59 + %.1 = phi i64 [ 2, %sqlite3_strnicmp.exit127.thread141 ], [ 2, %.thread133 ], [ 2, %59 ], [ 4, %sqlite3_strnicmp.exit ], [ 6, %sqlite3_strnicmp.exit91 ], [ 5, %sqlite3_strnicmp.exit100 ], [ 5, %sqlite3_strnicmp.exit109 ], [ 7, %sqlite3_strnicmp.exit118 ], [ 3, %sqlite3_strnicmp.exit127 ], [ 2, %38 ], [ 4, %52 ], [ 6, %71 ], [ 5, %88 ], [ 5, %105 ], [ 7, %123 ], [ 3, %140 ] + %147 = shl i64 %indvars.iv, 32 + %sext = add i64 %147, -4294967296 + %148 = ashr exact i64 %sext, 32 + %149 = getelementptr inbounds i8, ptr %.062, i64 %148 br label %.loopexit .loopexit.loopexit: ; preds = %12 - %153 = getelementptr inbounds i8, ptr %.2, i64 1 + %150 = getelementptr inbounds i8, ptr %.2, i64 1 br label %.loopexit .loopexit: ; preds = %.preheader152, %.preheader151, %.loopexit.loopexit, %27, %.critedge8, %16, %5, %2, %sqlite3_strnicmp.exit.thread, %4 - %.163 = phi ptr [ %152, %sqlite3_strnicmp.exit.thread ], [ %.062, %4 ], [ %.062, %2 ], [ %.062, %5 ], [ %.062, %16 ], [ %.5, %.critedge8 ], [ %.062, %27 ], [ %153, %.loopexit.loopexit ], [ %.3, %.preheader151 ], [ %.4, %.preheader152 ] + %.163 = phi ptr [ %149, %sqlite3_strnicmp.exit.thread ], [ %.062, %4 ], [ %.062, %2 ], [ %.062, %5 ], [ %.062, %16 ], [ %.5, %.critedge8 ], [ %.062, %27 ], [ %150, %.loopexit.loopexit ], [ %.3, %.preheader151 ], [ %.4, %.preheader152 ] %.060 = phi i64 [ %.1, %sqlite3_strnicmp.exit.thread ], [ 1, %4 ], [ 0, %2 ], [ 2, %5 ], [ 2, %16 ], [ 2, %.critedge8 ], [ 2, %27 ], [ 1, %.loopexit.loopexit ], [ 1, %.preheader151 ], [ 2, %.preheader152 ] - %154 = zext i8 %.061 to i64 - %155 = getelementptr inbounds [8 x [8 x i8]], ptr @sqlite3_complete.trans, i64 0, i64 %154, i64 %.060 - %156 = load i8, ptr %155, align 1 - %157 = getelementptr inbounds i8, ptr %.163, i64 1 + %151 = zext i8 %.061 to i64 + %152 = getelementptr inbounds [8 x [8 x i8]], ptr @sqlite3_complete.trans, i64 0, i64 %151, i64 %.060 + %153 = load i8, ptr %152, align 1 + %154 = getelementptr inbounds i8, ptr %.163, i64 1 br label %2, !llvm.loop !185 -158: ; preds = %2 - %159 = icmp eq i8 %.061, 1 +155: ; preds = %2 + %156 = icmp eq i8 %.061, 1 br label %.critedge.thread -.critedge.thread: ; preds = %.critedge8, %.preheader152, %10, %158, %22 - %.059.shrunk = phi i1 [ %23, %22 ], [ %159, %158 ], [ false, %10 ], [ false, %.preheader152 ], [ false, %.critedge8 ] +.critedge.thread: ; preds = %.critedge8, %.preheader152, %10, %155, %22 + %.059.shrunk = phi i1 [ %23, %22 ], [ %156, %155 ], [ false, %10 ], [ false, %.preheader152 ], [ false, %.critedge8 ] %.059 = zext i1 %.059.shrunk to i32 ret i32 %.059 } diff --git a/bench/stockfish/optimized/tbprobe.ll b/bench/stockfish/optimized/tbprobe.ll index 5a518beb7fb..0d0c5d7da4e 100644 --- a/bench/stockfish/optimized/tbprobe.ll +++ b/bench/stockfish/optimized/tbprobe.ll @@ -6936,8 +6936,8 @@ define internal fastcc noundef nonnull ptr @_ZN9Stockfish12_GLOBAL__N_19set_size %spec.select = select i1 %39, ptr %37, ptr %17 br label %_ZSt4findIPiiET_S1_S1_RKT0_.exit -_ZSt4findIPiiET_S1_S1_RKT0_.exit: ; preds = %14, %28, %24, %20, %._crit_edge._crit_edge52.i.i.i, %._crit_edge.loopexit.i.i.i, %._crit_edge._crit_edge.i.i.i - %.028.i.i.i = phi ptr [ %scevgep.i.i.i, %._crit_edge.loopexit.i.i.i ], [ %34, %._crit_edge._crit_edge.i.i.i ], [ %spec.select, %._crit_edge._crit_edge52.i.i.i ], [ %21, %20 ], [ %25, %24 ], [ %29, %28 ], [ %16, %14 ] +_ZSt4findIPiiET_S1_S1_RKT0_.exit: ; preds = %28, %24, %20, %14, %._crit_edge._crit_edge52.i.i.i, %._crit_edge.loopexit.i.i.i, %._crit_edge._crit_edge.i.i.i + %.028.i.i.i = phi ptr [ %scevgep.i.i.i, %._crit_edge.loopexit.i.i.i ], [ %34, %._crit_edge._crit_edge.i.i.i ], [ %spec.select, %._crit_edge._crit_edge52.i.i.i ], [ %16, %14 ], [ %21, %20 ], [ %25, %24 ], [ %29, %28 ] %40 = ptrtoint ptr %.028.i.i.i to i64 %41 = ptrtoint ptr %16 to i64 %42 = sub i64 %40, %41 @@ -7024,8 +7024,8 @@ _ZN9Stockfish12_GLOBAL__N_16numberIjLi1EEET_Pv.exit: ; preds = %_ZSt4findIPiiET_ %88 = sub nuw nsw i64 %78, %85 tail call void @_ZNSt6vectorImSaImEE17_M_default_appendEm(ptr noundef nonnull align 8 dereferenceable(24) %74, i64 noundef %88) %.pre = load ptr, ptr %79, align 8 - %.pre134 = load ptr, ptr %74, align 8 - %.pre138 = ptrtoint ptr %.pre134 to i64 + %.pre130 = load ptr, ptr %74, align 8 + %.pre134 = ptrtoint ptr %.pre130 to i64 br label %_ZNSt6vectorImSaImEE6resizeEm.exit 89: ; preds = %_ZN9Stockfish12_GLOBAL__N_16numberIjLi1EEET_Pv.exit @@ -7042,7 +7042,7 @@ _ZN9Stockfish12_GLOBAL__N_16numberIjLi1EEET_Pv.exit: ; preds = %_ZSt4findIPiiET_ br label %_ZNSt6vectorImSaImEE6resizeEm.exit _ZNSt6vectorImSaImEE6resizeEm.exit: ; preds = %87, %89, %91, %93 - %.pre-phi = phi i64 [ %.pre138, %87 ], [ %83, %89 ], [ %83, %91 ], [ %83, %93 ] + %.pre-phi = phi i64 [ %.pre134, %87 ], [ %83, %89 ], [ %83, %91 ], [ %83, %93 ] %94 = phi ptr [ %.pre, %87 ], [ %80, %89 ], [ %80, %91 ], [ %92, %93 ] %95 = ptrtoint ptr %94 to i64 %96 = sub i64 %95, %.pre-phi @@ -7096,23 +7096,23 @@ _ZNSt6vectorImSaImEE6resizeEm.exit: ; preds = %87, %89, %91, %93 %116 = getelementptr inbounds i64, ptr %105, i64 %indvars.iv store i64 %115, ptr %116, align 8 %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %.not146 = icmp eq i64 %indvars.iv, 0 - br i1 %.not146, label %.preheader, label %103, !llvm.loop !156 + %.not142 = icmp eq i64 %indvars.iv, 0 + br i1 %.not142, label %.preheader, label %103, !llvm.loop !156 .lr.ph120: ; preds = %.lr.ph120.preheader, %.lr.ph120 - %indvars.iv131 = phi i64 [ 0, %.lr.ph120.preheader ], [ %indvars.iv.next132, %.lr.ph120 ] + %indvars.iv127 = phi i64 [ 0, %.lr.ph120.preheader ], [ %indvars.iv.next128, %.lr.ph120 ] %117 = load i8, ptr %72, align 2 %118 = zext i8 %117 to i64 - %119 = add nuw i64 %indvars.iv131, %118 + %119 = add nuw i64 %indvars.iv127, %118 %120 = sub i64 64, %119 %121 = load ptr, ptr %74, align 8 - %122 = getelementptr inbounds i64, ptr %121, i64 %indvars.iv131 + %122 = getelementptr inbounds i64, ptr %121, i64 %indvars.iv127 %123 = load i64, ptr %122, align 8 %124 = and i64 %120, 4294967295 %125 = shl i64 %123, %124 store i64 %125, ptr %122, align 8 - %indvars.iv.next132 = add nuw nsw i64 %indvars.iv131, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next132, %wide.trip.count + %indvars.iv.next128 = add nuw nsw i64 %indvars.iv127, 1 + %exitcond.not = icmp eq i64 %indvars.iv.next128, %wide.trip.count br i1 %exitcond.not, label %._crit_edge, label %.lr.ph120, !llvm.loop !157 ._crit_edge: ; preds = %.lr.ph120, %.preheader @@ -7149,9 +7149,9 @@ _ZNSt6vectorImSaImEE6resizeEm.exit: ; preds = %87, %89, %91, %93 br i1 %.not.i.i.i, label %._crit_edge._ZNSt6vectorIbSaIbEEC2EmRKS0_.exit_crit_edge, label %139 ._crit_edge._ZNSt6vectorIbSaIbEEC2EmRKS0_.exit_crit_edge: ; preds = %._crit_edge - %.pre139 = ptrtoint ptr %133 to i64 - %.pre141 = ptrtoint ptr %134 to i64 - %.pre143 = sub i64 %.pre139, %.pre141 + %.pre135 = ptrtoint ptr %133 to i64 + %.pre137 = ptrtoint ptr %134 to i64 + %.pre139 = sub i64 %.pre135, %.pre137 br label %_ZNSt6vectorIbSaIbEEC2EmRKS0_.exit 139: ; preds = %._crit_edge @@ -7182,9 +7182,9 @@ _ZNSt6vectorImSaImEE6resizeEm.exit: ; preds = %87, %89, %91, %93 br label %_ZNSt6vectorIbSaIbEEC2EmRKS0_.exit _ZNSt6vectorIbSaIbEEC2EmRKS0_.exit: ; preds = %._crit_edge._ZNSt6vectorIbSaIbEEC2EmRKS0_.exit_crit_edge, %139 - %.pre-phi144 = phi i64 [ %.pre143, %._crit_edge._ZNSt6vectorIbSaIbEEC2EmRKS0_.exit_crit_edge ], [ %142, %139 ] + %.pre-phi140 = phi i64 [ %.pre139, %._crit_edge._ZNSt6vectorIbSaIbEEC2EmRKS0_.exit_crit_edge ], [ %142, %139 ] %155 = phi ptr [ null, %._crit_edge._ZNSt6vectorIbSaIbEEC2EmRKS0_.exit_crit_edge ], [ %146, %139 ] - %.not124 = icmp eq i64 %.pre-phi144, 0 + %.not124 = icmp eq i64 %.pre-phi140, 0 br i1 %.not124, label %._crit_edge123, label %.lr.ph122 .lr.ph122: ; preds = %_ZNSt6vectorIbSaIbEEC2EmRKS0_.exit, %172 @@ -7211,13 +7211,13 @@ _ZNSt6vectorIbSaIbEEC2EmRKS0_.exit: ; preds = %._crit_edge._ZNSt6v %170 = load ptr, ptr %128, align 8 %171 = getelementptr inbounds i8, ptr %170, i64 %.0121 store i8 %169, ptr %171, align 1 - %.pre135 = load ptr, ptr %132, align 8 - %.pre136 = load ptr, ptr %128, align 8 + %.pre131 = load ptr, ptr %132, align 8 + %.pre132 = load ptr, ptr %128, align 8 br label %172 172: ; preds = %.lr.ph122, %167 - %173 = phi ptr [ %156, %.lr.ph122 ], [ %.pre136, %167 ] - %174 = phi ptr [ %157, %.lr.ph122 ], [ %.pre135, %167 ] + %173 = phi ptr [ %156, %.lr.ph122 ], [ %.pre132, %167 ] + %174 = phi ptr [ %157, %.lr.ph122 ], [ %.pre131, %167 ] %175 = add nuw i64 %.0121, 1 %176 = ptrtoint ptr %174 to i64 %177 = ptrtoint ptr %173 to i64 @@ -7226,11 +7226,11 @@ _ZNSt6vectorIbSaIbEEC2EmRKS0_.exit: ; preds = %._crit_edge._ZNSt6v br i1 %179, label %.lr.ph122, label %._crit_edge123.loopexit, !llvm.loop !158 ._crit_edge123.loopexit: ; preds = %172 - %.pre137 = load ptr, ptr %3, align 8 + %.pre133 = load ptr, ptr %3, align 8 br label %._crit_edge123 ._crit_edge123: ; preds = %._crit_edge123.loopexit, %_ZNSt6vectorIbSaIbEEC2EmRKS0_.exit - %180 = phi ptr [ %155, %_ZNSt6vectorIbSaIbEEC2EmRKS0_.exit ], [ %.pre137, %._crit_edge123.loopexit ] + %180 = phi ptr [ %155, %_ZNSt6vectorIbSaIbEEC2EmRKS0_.exit ], [ %.pre133, %._crit_edge123.loopexit ] %.lcssa = phi i64 [ 0, %_ZNSt6vectorIbSaIbEEC2EmRKS0_.exit ], [ %178, %._crit_edge123.loopexit ] %181 = mul i64 %.lcssa, 3 %182 = getelementptr inbounds i8, ptr %130, i64 %181 diff --git a/bench/sundials/optimized/cvode.c.ll b/bench/sundials/optimized/cvode.c.ll index c566073bf42..c5baafdf3b9 100644 --- a/bench/sundials/optimized/cvode.c.ll +++ b/bench/sundials/optimized/cvode.c.ll @@ -2460,16 +2460,16 @@ cvPredict.exit.i: ; preds = %592, %583 %622 = sub nsw i32 0, %.01217.i.i.i.i.i %indvars.iv.next.i.i.i.i.i = add nuw nsw i64 %indvars.iv.i.i.i.i.i, 1 %exitcond.not.i.i.i.i.i = icmp eq i64 %indvars.iv.next.i.i.i.i.i, %607 - br i1 %exitcond.not.i.i.i.i.i, label %cvAltSum.exit.i.i.i.i, label %.preheader.i.i.i.i.i + br i1 %exitcond.not.i.i.i.i.i, label %cvAltSum.exit.loopexit.i.i.i.i, label %.preheader.i.i.i.i.i -cvAltSum.exit.i.i.i.i: ; preds = %.preheader.i.i.i.i.i +cvAltSum.exit.loopexit.i.i.i.i: ; preds = %.preheader.i.i.i.i.i %623 = fmul double %621, %608 %624 = load double, ptr %gep.i.i.i.i, align 8 %625 = fdiv double %623, %624 store double %625, ptr %378, align 8 br label %626 -626: ; preds = %cvAltSum.exit.i.i.i.i, %611, %609 +626: ; preds = %cvAltSum.exit.loopexit.i.i.i.i, %611, %609 %627 = fdiv double %603, %.03440.i.i.i.i br label %628 @@ -2553,12 +2553,12 @@ cvAltSum.exit27.i.i.i: ; preds = %.preheader.i20.i.i. br i1 %exitcond.not.i34.i.i.i, label %._crit_edge.i.i.i.i, label %.lr.ph.i30.i.i.i ._crit_edge.i.i.i.i: ; preds = %.lr.ph.i30.i.i.i, %cvAltSum.exit27.thread.i.i.i - %.034.lcssa.i60.i.i.i = phi double [ %603, %cvAltSum.exit27.thread.i.i.i ], [ %638, %.lr.ph.i30.i.i.i ] + %.034.lcssa.i58.i.i.i = phi double [ %603, %cvAltSum.exit27.thread.i.i.i ], [ %638, %.lr.ph.i30.i.i.i ] %665 = phi double [ 0x7FF0000000000000, %cvAltSum.exit27.thread.i.i.i ], [ %657, %.lr.ph.i30.i.i.i ] - %.014.i2649.i.i.i = phi double [ 0.000000e+00, %cvAltSum.exit27.thread.i.i.i ], [ %655, %.lr.ph.i30.i.i.i ] - %666 = fdiv double %.034.lcssa.i60.i.i.i, %603 + %.014.i2647.i.i.i = phi double [ 0.000000e+00, %cvAltSum.exit27.thread.i.i.i ], [ %655, %.lr.ph.i30.i.i.i ] + %666 = fdiv double %.034.lcssa.i58.i.i.i, %603 %667 = fdiv double 1.000000e+00, %666 - %668 = fmul double %665, %.014.i2649.i.i.i + %668 = fmul double %665, %.014.i2647.i.i.i %669 = fdiv double %668, %666 store double %669, ptr %376, align 8 %670 = sext i32 %595 to i64 @@ -2592,7 +2592,7 @@ cvAltSum.exit27.i.i.i: ; preds = %.preheader.i20.i.i. ._crit_edge46.i.i.i.i: ; preds = %.lr.ph45.i.i.i.i, %.preheader.i35.i.i.i %684 = icmp slt i32 %595, 0 - br i1 %684, label %cvAltSum.exit.i42.i.i.i, label %.preheader.preheader.i.i.i.i.i + br i1 %684, label %cvAltSum.exit.i.i.i.i, label %.preheader.preheader.i.i.i.i.i .preheader.preheader.i.i.i.i.i: ; preds = %._crit_edge46.i.i.i.i %685 = add nuw i32 %595, 1 @@ -2614,18 +2614,18 @@ cvAltSum.exit27.i.i.i: ; preds = %.preheader.i20.i.i. %694 = sub nsw i32 0, %.01217.i.i39.i.i.i %indvars.iv.next.i.i40.i.i.i = add nuw nsw i64 %indvars.iv.i.i37.i.i.i, 1 %exitcond.not.i.i41.i.i.i = icmp eq i64 %indvars.iv.next.i.i40.i.i.i, %wide.trip.count.i.i.i.i.i - br i1 %exitcond.not.i.i41.i.i.i, label %cvAltSum.exit.i42.i.i.i, label %.preheader.i.i36.i.i.i + br i1 %exitcond.not.i.i41.i.i.i, label %cvAltSum.exit.i.i.i.i, label %.preheader.i.i36.i.i.i -cvAltSum.exit.i42.i.i.i: ; preds = %.preheader.i.i36.i.i.i, %._crit_edge46.i.i.i.i - %.014.i.i43.i.i.i = phi double [ 0.000000e+00, %._crit_edge46.i.i.i.i ], [ %693, %.preheader.i.i36.i.i.i ] - %695 = fmul double %665, %.014.i.i43.i.i.i +cvAltSum.exit.i.i.i.i: ; preds = %.preheader.i.i36.i.i.i, %._crit_edge46.i.i.i.i + %.014.i.i.i.i.i = phi double [ 0.000000e+00, %._crit_edge46.i.i.i.i ], [ %693, %.preheader.i.i36.i.i.i ] + %695 = fmul double %665, %.014.i.i.i.i.i %696 = load i32, ptr %360, align 8 %697 = sitofp i32 %696 to double %698 = fdiv double %695, %697 store double %698, ptr %379, align 8 br label %cvAdamsFinish.exit.i.i.i -cvAdamsFinish.exit.i.i.i: ; preds = %cvAltSum.exit.i42.i.i.i, %._crit_edge.i.i.i.i +cvAdamsFinish.exit.i.i.i: ; preds = %cvAltSum.exit.i.i.i.i, %._crit_edge.i.i.i.i %699 = load double, ptr %380, align 8 %700 = fdiv double %699, %669 br label %cvSetAdams.exit.i.i diff --git a/bench/sundials/optimized/sundials_dense.c.ll b/bench/sundials/optimized/sundials_dense.c.ll index b0bc12c96c5..3557e034920 100644 --- a/bench/sundials/optimized/sundials_dense.c.ll +++ b/bench/sundials/optimized/sundials_dense.c.ll @@ -950,41 +950,39 @@ define void @SUNDlsMat_DensePOTRS(ptr nocapture noundef readonly %0, ptr nocaptu %36 = add nsw i64 %6, -2 br label %.lr.ph62.i -.lr.ph62.i: ; preds = %._crit_edge59.i, %.lr.ph62.preheader.i - %.15060.i = phi i64 [ %52, %._crit_edge59.i ], [ %36, %.lr.ph62.preheader.i ] +.lr.ph62.i: ; preds = %._crit_edge59.i.loopexit, %.lr.ph62.preheader.i + %.15060.i = phi i64 [ %50, %._crit_edge59.i.loopexit ], [ %36, %.lr.ph62.preheader.i ] %37 = getelementptr inbounds ptr, ptr %4, i64 %.15060.i %38 = load ptr, ptr %37, align 8 %.155.i = add nuw nsw i64 %.15060.i, 1 - %39 = icmp slt i64 %.155.i, %6 - %40 = getelementptr inbounds double, ptr %1, i64 %.15060.i - %.promoted.i = load double, ptr %40, align 8 - br i1 %39, label %.lr.ph58.i, label %._crit_edge59.i + %39 = getelementptr inbounds double, ptr %1, i64 %.15060.i + %.promoted.i = load double, ptr %39, align 8 + br label %.lr.ph58.i .lr.ph58.i: ; preds = %.lr.ph62.i, %.lr.ph58.i - %41 = phi double [ %47, %.lr.ph58.i ], [ %.promoted.i, %.lr.ph62.i ] + %40 = phi double [ %46, %.lr.ph58.i ], [ %.promoted.i, %.lr.ph62.i ] %.156.i = phi i64 [ %.1.i, %.lr.ph58.i ], [ %.155.i, %.lr.ph62.i ] - %42 = getelementptr inbounds double, ptr %38, i64 %.156.i - %43 = load double, ptr %42, align 8 - %44 = getelementptr inbounds double, ptr %1, i64 %.156.i - %45 = load double, ptr %44, align 8 - %46 = fneg double %43 - %47 = tail call double @llvm.fmuladd.f64(double %46, double %45, double %41) - store double %47, ptr %40, align 8 + %41 = getelementptr inbounds double, ptr %38, i64 %.156.i + %42 = load double, ptr %41, align 8 + %43 = getelementptr inbounds double, ptr %1, i64 %.156.i + %44 = load double, ptr %43, align 8 + %45 = fneg double %42 + %46 = tail call double @llvm.fmuladd.f64(double %45, double %44, double %40) + store double %46, ptr %39, align 8 %.1.i = add nuw nsw i64 %.156.i, 1 %exitcond65.not.i = icmp eq i64 %.1.i, %6 - br i1 %exitcond65.not.i, label %._crit_edge59.i, label %.lr.ph58.i - -._crit_edge59.i: ; preds = %.lr.ph58.i, %.lr.ph62.i - %48 = phi double [ %.promoted.i, %.lr.ph62.i ], [ %47, %.lr.ph58.i ] - %49 = getelementptr inbounds double, ptr %38, i64 %.15060.i - %50 = load double, ptr %49, align 8 - %51 = fdiv double %48, %50 - store double %51, ptr %40, align 8 - %52 = add nsw i64 %.15060.i, -1 - %53 = icmp sgt i64 %.15060.i, 0 - br i1 %53, label %.lr.ph62.i, label %SUNDlsMat_densePOTRS.exit - -SUNDlsMat_densePOTRS.exit: ; preds = %._crit_edge59.i, %._crit_edge.i + br i1 %exitcond65.not.i, label %._crit_edge59.i.loopexit, label %.lr.ph58.i + +._crit_edge59.i.loopexit: ; preds = %.lr.ph58.i + %47 = getelementptr inbounds double, ptr %38, i64 %.15060.i + %48 = load double, ptr %47, align 8 + %49 = fdiv double %46, %48 + store double %49, ptr %39, align 8 + %50 = add nsw i64 %.15060.i, -1 + %51 = icmp sgt i64 %.15060.i, 0 + br i1 %51, label %.lr.ph62.i, label %SUNDlsMat_densePOTRS.exit + +SUNDlsMat_densePOTRS.exit: ; preds = %._crit_edge59.i.loopexit, %._crit_edge.i ret void } @@ -1145,41 +1143,39 @@ define void @DensePOTRS(ptr nocapture noundef readonly %0, ptr nocapture noundef %36 = add nsw i64 %6, -2 br label %.lr.ph62.i -.lr.ph62.i: ; preds = %._crit_edge59.i, %.lr.ph62.preheader.i - %.15060.i = phi i64 [ %52, %._crit_edge59.i ], [ %36, %.lr.ph62.preheader.i ] +.lr.ph62.i: ; preds = %._crit_edge59.i.loopexit, %.lr.ph62.preheader.i + %.15060.i = phi i64 [ %50, %._crit_edge59.i.loopexit ], [ %36, %.lr.ph62.preheader.i ] %37 = getelementptr inbounds ptr, ptr %4, i64 %.15060.i %38 = load ptr, ptr %37, align 8 %.155.i = add nuw nsw i64 %.15060.i, 1 - %39 = icmp slt i64 %.155.i, %6 - %40 = getelementptr inbounds double, ptr %1, i64 %.15060.i - %.promoted.i = load double, ptr %40, align 8 - br i1 %39, label %.lr.ph58.i, label %._crit_edge59.i + %39 = getelementptr inbounds double, ptr %1, i64 %.15060.i + %.promoted.i = load double, ptr %39, align 8 + br label %.lr.ph58.i .lr.ph58.i: ; preds = %.lr.ph62.i, %.lr.ph58.i - %41 = phi double [ %47, %.lr.ph58.i ], [ %.promoted.i, %.lr.ph62.i ] + %40 = phi double [ %46, %.lr.ph58.i ], [ %.promoted.i, %.lr.ph62.i ] %.156.i = phi i64 [ %.1.i, %.lr.ph58.i ], [ %.155.i, %.lr.ph62.i ] - %42 = getelementptr inbounds double, ptr %38, i64 %.156.i - %43 = load double, ptr %42, align 8 - %44 = getelementptr inbounds double, ptr %1, i64 %.156.i - %45 = load double, ptr %44, align 8 - %46 = fneg double %43 - %47 = tail call double @llvm.fmuladd.f64(double %46, double %45, double %41) - store double %47, ptr %40, align 8 + %41 = getelementptr inbounds double, ptr %38, i64 %.156.i + %42 = load double, ptr %41, align 8 + %43 = getelementptr inbounds double, ptr %1, i64 %.156.i + %44 = load double, ptr %43, align 8 + %45 = fneg double %42 + %46 = tail call double @llvm.fmuladd.f64(double %45, double %44, double %40) + store double %46, ptr %39, align 8 %.1.i = add nuw nsw i64 %.156.i, 1 %exitcond65.not.i = icmp eq i64 %.1.i, %6 - br i1 %exitcond65.not.i, label %._crit_edge59.i, label %.lr.ph58.i - -._crit_edge59.i: ; preds = %.lr.ph58.i, %.lr.ph62.i - %48 = phi double [ %.promoted.i, %.lr.ph62.i ], [ %47, %.lr.ph58.i ] - %49 = getelementptr inbounds double, ptr %38, i64 %.15060.i - %50 = load double, ptr %49, align 8 - %51 = fdiv double %48, %50 - store double %51, ptr %40, align 8 - %52 = add nsw i64 %.15060.i, -1 - %53 = icmp sgt i64 %.15060.i, 0 - br i1 %53, label %.lr.ph62.i, label %SUNDlsMat_densePOTRS.exit - -SUNDlsMat_densePOTRS.exit: ; preds = %._crit_edge59.i, %._crit_edge.i + br i1 %exitcond65.not.i, label %._crit_edge59.i.loopexit, label %.lr.ph58.i + +._crit_edge59.i.loopexit: ; preds = %.lr.ph58.i + %47 = getelementptr inbounds double, ptr %38, i64 %.15060.i + %48 = load double, ptr %47, align 8 + %49 = fdiv double %46, %48 + store double %49, ptr %39, align 8 + %50 = add nsw i64 %.15060.i, -1 + %51 = icmp sgt i64 %.15060.i, 0 + br i1 %51, label %.lr.ph62.i, label %SUNDlsMat_densePOTRS.exit + +SUNDlsMat_densePOTRS.exit: ; preds = %._crit_edge59.i.loopexit, %._crit_edge.i ret void } @@ -2366,41 +2362,39 @@ define void @densePOTRS(ptr nocapture noundef readonly %0, i64 noundef %1, ptr n %33 = add nsw i64 %1, -2 br label %.lr.ph62.i -.lr.ph62.i: ; preds = %._crit_edge59.i, %.lr.ph62.preheader.i - %.15060.i = phi i64 [ %49, %._crit_edge59.i ], [ %33, %.lr.ph62.preheader.i ] +.lr.ph62.i: ; preds = %._crit_edge59.i.loopexit, %.lr.ph62.preheader.i + %.15060.i = phi i64 [ %47, %._crit_edge59.i.loopexit ], [ %33, %.lr.ph62.preheader.i ] %34 = getelementptr inbounds ptr, ptr %0, i64 %.15060.i %35 = load ptr, ptr %34, align 8 %.155.i = add nuw nsw i64 %.15060.i, 1 - %36 = icmp slt i64 %.155.i, %1 - %37 = getelementptr inbounds double, ptr %2, i64 %.15060.i - %.promoted.i = load double, ptr %37, align 8 - br i1 %36, label %.lr.ph58.i, label %._crit_edge59.i + %36 = getelementptr inbounds double, ptr %2, i64 %.15060.i + %.promoted.i = load double, ptr %36, align 8 + br label %.lr.ph58.i .lr.ph58.i: ; preds = %.lr.ph62.i, %.lr.ph58.i - %38 = phi double [ %44, %.lr.ph58.i ], [ %.promoted.i, %.lr.ph62.i ] + %37 = phi double [ %43, %.lr.ph58.i ], [ %.promoted.i, %.lr.ph62.i ] %.156.i = phi i64 [ %.1.i, %.lr.ph58.i ], [ %.155.i, %.lr.ph62.i ] - %39 = getelementptr inbounds double, ptr %35, i64 %.156.i - %40 = load double, ptr %39, align 8 - %41 = getelementptr inbounds double, ptr %2, i64 %.156.i - %42 = load double, ptr %41, align 8 - %43 = fneg double %40 - %44 = tail call double @llvm.fmuladd.f64(double %43, double %42, double %38) - store double %44, ptr %37, align 8 + %38 = getelementptr inbounds double, ptr %35, i64 %.156.i + %39 = load double, ptr %38, align 8 + %40 = getelementptr inbounds double, ptr %2, i64 %.156.i + %41 = load double, ptr %40, align 8 + %42 = fneg double %39 + %43 = tail call double @llvm.fmuladd.f64(double %42, double %41, double %37) + store double %43, ptr %36, align 8 %.1.i = add nuw nsw i64 %.156.i, 1 %exitcond65.not.i = icmp eq i64 %.1.i, %1 - br i1 %exitcond65.not.i, label %._crit_edge59.i, label %.lr.ph58.i + br i1 %exitcond65.not.i, label %._crit_edge59.i.loopexit, label %.lr.ph58.i -._crit_edge59.i: ; preds = %.lr.ph58.i, %.lr.ph62.i - %45 = phi double [ %.promoted.i, %.lr.ph62.i ], [ %44, %.lr.ph58.i ] - %46 = getelementptr inbounds double, ptr %35, i64 %.15060.i - %47 = load double, ptr %46, align 8 - %48 = fdiv double %45, %47 - store double %48, ptr %37, align 8 - %49 = add nsw i64 %.15060.i, -1 - %50 = icmp sgt i64 %.15060.i, 0 - br i1 %50, label %.lr.ph62.i, label %SUNDlsMat_densePOTRS.exit +._crit_edge59.i.loopexit: ; preds = %.lr.ph58.i + %44 = getelementptr inbounds double, ptr %35, i64 %.15060.i + %45 = load double, ptr %44, align 8 + %46 = fdiv double %43, %45 + store double %46, ptr %36, align 8 + %47 = add nsw i64 %.15060.i, -1 + %48 = icmp sgt i64 %.15060.i, 0 + br i1 %48, label %.lr.ph62.i, label %SUNDlsMat_densePOTRS.exit -SUNDlsMat_densePOTRS.exit: ; preds = %._crit_edge59.i, %._crit_edge.i +SUNDlsMat_densePOTRS.exit: ; preds = %._crit_edge59.i.loopexit, %._crit_edge.i ret void } diff --git a/bench/wireshark/optimized/packet-btatt.c.ll b/bench/wireshark/optimized/packet-btatt.c.ll index 09ac506bea6..9f2cf05a0c3 100644 --- a/bench/wireshark/optimized/packet-btatt.c.ll +++ b/bench/wireshark/optimized/packet-btatt.c.ll @@ -6785,9 +6785,9 @@ define hidden void @proto_reg_handoff_btgatt() local_unnamed_addr #1 { br label %1 1: ; preds = %0, %12 - %indvars.iv = phi i64 [ 0, %0 ], [ %indvars.iv.next, %12 ] - %2 = phi ptr [ @.str.2287, %0 ], [ %14, %12 ] - %3 = phi ptr [ @__const.proto_reg_handoff_btgatt.uuid_dissectors, %0 ], [ %13, %12 ] + %2 = phi ptr [ @.str.2287, %0 ], [ %16, %12 ] + %3 = phi ptr [ @__const.proto_reg_handoff_btgatt.uuid_dissectors, %0 ], [ %15, %12 ] + %.010 = phi i32 [ 0, %0 ], [ %13, %12 ] %4 = load ptr, ptr @bluetooth_uuids, align 8 %5 = getelementptr inbounds i8, ptr %3, i64 8 %6 = load ptr, ptr %5, align 8 @@ -6804,13 +6804,14 @@ define hidden void @proto_reg_handoff_btgatt() local_unnamed_addr #1 { br label %12 12: ; preds = %1, %9 - %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %13 = getelementptr [36 x %struct.uuid_dissectors_t], ptr @__const.proto_reg_handoff_btgatt.uuid_dissectors, i64 0, i64 %indvars.iv.next - %14 = load ptr, ptr %13, align 8 - %exitcond = icmp eq i64 %indvars.iv.next, 35 - br i1 %exitcond, label %15, label %1, !llvm.loop !13 - -15: ; preds = %12 + %13 = add nuw nsw i32 %.010, 1 + %14 = zext nneg i32 %13 to i64 + %15 = getelementptr [36 x %struct.uuid_dissectors_t], ptr @__const.proto_reg_handoff_btgatt.uuid_dissectors, i64 0, i64 %14 + %16 = load ptr, ptr %15, align 8 + %exitcond = icmp eq i32 %13, 35 + br i1 %exitcond, label %17, label %1, !llvm.loop !13 + +17: ; preds = %12 ret void } diff --git a/bench/wireshark/optimized/packet-netperfmeter.c.ll b/bench/wireshark/optimized/packet-netperfmeter.c.ll index 9e15f2d9bfb..88302e80ab2 100644 --- a/bench/wireshark/optimized/packet-netperfmeter.c.ll +++ b/bench/wireshark/optimized/packet-netperfmeter.c.ll @@ -405,37 +405,36 @@ define internal range(i32 0, 2) i32 @npm_stat_packet(ptr nocapture noundef reado br label %33 33: ; preds = %10, %33 - %indvars.iv = phi i64 [ 0, %10 ], [ %indvars.iv.next, %33 ] - %34 = trunc nuw nsw i64 %indvars.iv to i32 - %35 = tail call ptr @stat_tap_get_field_data(ptr noundef %15, i32 noundef %34, i32 noundef 1) #4 - %36 = getelementptr inbounds i8, ptr %35, i64 8 - %37 = load i32, ptr %36, align 8 - %38 = tail call ptr @stat_tap_get_field_data(ptr noundef %15, i32 noundef %34, i32 noundef 3) #4 - %39 = getelementptr inbounds i8, ptr %38, i64 8 - %40 = load i32, ptr %39, align 8 - %41 = tail call ptr @stat_tap_get_field_data(ptr noundef %15, i32 noundef %34, i32 noundef 2) #4 - store i32 4, ptr %41, align 8 - %42 = uitofp i32 %37 to double - %43 = fmul double %42, 1.000000e+02 - %44 = load i64, ptr @npm_total_msgs, align 8 - %45 = uitofp i64 %44 to double - %46 = fdiv double %43, %45 - %47 = getelementptr inbounds i8, ptr %41, i64 8 - store double %46, ptr %47, align 8 - tail call void @stat_tap_set_field_data(ptr noundef %15, i32 noundef %34, i32 noundef 2, ptr noundef nonnull %41) #4 - %48 = tail call ptr @stat_tap_get_field_data(ptr noundef %15, i32 noundef %34, i32 noundef 4) #4 - store i32 4, ptr %48, align 8 - %49 = uitofp i32 %40 to double - %50 = fmul double %49, 1.000000e+02 - %51 = load i64, ptr @npm_total_bytes, align 8 - %52 = uitofp i64 %51 to double - %53 = fdiv double %50, %52 - %54 = getelementptr inbounds i8, ptr %48, i64 8 - store double %53, ptr %54, align 8 - tail call void @stat_tap_set_field_data(ptr noundef %15, i32 noundef %34, i32 noundef 4, ptr noundef nonnull %48) #4 - %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %.not = icmp eq i64 %indvars.iv.next, 8 - br i1 %.not, label %55, label %33, !llvm.loop !6 + %.0104109 = phi i32 [ 0, %10 ], [ %54, %33 ] + %34 = tail call ptr @stat_tap_get_field_data(ptr noundef %15, i32 noundef %.0104109, i32 noundef 1) #4 + %35 = getelementptr inbounds i8, ptr %34, i64 8 + %36 = load i32, ptr %35, align 8 + %37 = tail call ptr @stat_tap_get_field_data(ptr noundef %15, i32 noundef %.0104109, i32 noundef 3) #4 + %38 = getelementptr inbounds i8, ptr %37, i64 8 + %39 = load i32, ptr %38, align 8 + %40 = tail call ptr @stat_tap_get_field_data(ptr noundef %15, i32 noundef %.0104109, i32 noundef 2) #4 + store i32 4, ptr %40, align 8 + %41 = uitofp i32 %36 to double + %42 = fmul double %41, 1.000000e+02 + %43 = load i64, ptr @npm_total_msgs, align 8 + %44 = uitofp i64 %43 to double + %45 = fdiv double %42, %44 + %46 = getelementptr inbounds i8, ptr %40, i64 8 + store double %45, ptr %46, align 8 + tail call void @stat_tap_set_field_data(ptr noundef %15, i32 noundef %.0104109, i32 noundef 2, ptr noundef nonnull %40) #4 + %47 = tail call ptr @stat_tap_get_field_data(ptr noundef %15, i32 noundef %.0104109, i32 noundef 4) #4 + store i32 4, ptr %47, align 8 + %48 = uitofp i32 %39 to double + %49 = fmul double %48, 1.000000e+02 + %50 = load i64, ptr @npm_total_bytes, align 8 + %51 = uitofp i64 %50 to double + %52 = fdiv double %49, %51 + %53 = getelementptr inbounds i8, ptr %47, i64 8 + store double %52, ptr %53, align 8 + tail call void @stat_tap_set_field_data(ptr noundef %15, i32 noundef %.0104109, i32 noundef 4, ptr noundef nonnull %47) #4 + %54 = add nuw nsw i32 %.0104109, 1 + %exitcond = icmp eq i32 %54, 8 + br i1 %exitcond, label %55, label %33, !llvm.loop !6 55: ; preds = %33 %56 = getelementptr inbounds i8, ptr %1, i64 16 @@ -467,8 +466,8 @@ define internal range(i32 0, 2) i32 @npm_stat_packet(ptr nocapture noundef reado store double %71, ptr %61, align 8 tail call void @stat_tap_set_field_data(ptr noundef %15, i32 noundef %8, i32 noundef 5, ptr noundef nonnull %60) #4 %.pre = load i32, ptr %56, align 8 - %.pre111 = and i32 %.pre, 1 - %72 = icmp eq i32 %.pre111, 0 + %.pre110 = and i32 %.pre, 1 + %72 = icmp eq i32 %.pre110, 0 br i1 %72, label %.thread, label %73 73: ; preds = %70 @@ -496,9 +495,9 @@ define internal range(i32 0, 2) i32 @npm_stat_packet(ptr nocapture noundef reado br label %.thread .thread: ; preds = %55, %84, %70 - %.0103114 = phi double [ %71, %84 ], [ %71, %70 ], [ -1.000000e+00, %55 ] + %.0103113 = phi double [ %71, %84 ], [ %71, %70 ], [ -1.000000e+00, %55 ] %.0102 = phi double [ %85, %84 ], [ -1.000000e+00, %70 ], [ -1.000000e+00, %55 ] - %86 = fsub double %.0102, %.0103114 + %86 = fsub double %.0102, %.0103113 %87 = fcmp ogt double %86, 0.000000e+00 br i1 %87, label %88, label %99 diff --git a/bench/wireshark/optimized/packet-rtcp.c.ll b/bench/wireshark/optimized/packet-rtcp.c.ll index 7b8fa987f81..332594188f9 100644 --- a/bench/wireshark/optimized/packet-rtcp.c.ll +++ b/bench/wireshark/optimized/packet-rtcp.c.ll @@ -1741,21 +1741,22 @@ define hidden void @proto_reg_handoff_rtcp() local_unnamed_addr #0 { br label %4 4: ; preds = %0, %4 - %indvars.iv = phi i64 [ 0, %0 ], [ %indvars.iv.next, %4 ] - %5 = phi ptr [ @rtcp_ms_profile_extension_vals, %0 ], [ %8, %4 ] + %5 = phi ptr [ @rtcp_ms_profile_extension_vals, %0 ], [ %10, %4 ] + %.03 = phi i32 [ 0, %0 ], [ %8, %4 ] %6 = load i32, ptr %5, align 16 %7 = load ptr, ptr @ms_pse_handle, align 8 tail call void @dissector_add_uint(ptr noundef nonnull @.str.656, i32 noundef %6, ptr noundef %7) #7 - %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %8 = getelementptr [13 x %struct._value_string], ptr @rtcp_ms_profile_extension_vals, i64 0, i64 %indvars.iv.next - %exitcond = icmp eq i64 %indvars.iv.next, 12 - br i1 %exitcond, label %9, label %4, !llvm.loop !4 - -9: ; preds = %4 - %10 = load i32, ptr @proto_rtcp, align 4 - tail call void @heur_dissector_add(ptr noundef nonnull @.str.664, ptr noundef nonnull @dissect_rtcp_heur, ptr noundef nonnull @.str.665, ptr noundef nonnull @.str.666, i32 noundef %10, i32 noundef 1) #7 - %11 = load i32, ptr @proto_rtcp, align 4 - tail call void @heur_dissector_add(ptr noundef nonnull @.str.667, ptr noundef nonnull @dissect_rtcp_heur, ptr noundef nonnull @.str.668, ptr noundef nonnull @.str.669, i32 noundef %11, i32 noundef 1) #7 + %8 = add nuw nsw i32 %.03, 1 + %9 = zext nneg i32 %8 to i64 + %10 = getelementptr [13 x %struct._value_string], ptr @rtcp_ms_profile_extension_vals, i64 0, i64 %9 + %exitcond = icmp eq i32 %8, 12 + br i1 %exitcond, label %11, label %4, !llvm.loop !4 + +11: ; preds = %4 + %12 = load i32, ptr @proto_rtcp, align 4 + tail call void @heur_dissector_add(ptr noundef nonnull @.str.664, ptr noundef nonnull @dissect_rtcp_heur, ptr noundef nonnull @.str.665, ptr noundef nonnull @.str.666, i32 noundef %12, i32 noundef 1) #7 + %13 = load i32, ptr @proto_rtcp, align 4 + tail call void @heur_dissector_add(ptr noundef nonnull @.str.667, ptr noundef nonnull @dissect_rtcp_heur, ptr noundef nonnull @.str.668, ptr noundef nonnull @.str.669, i32 noundef %13, i32 noundef 1) #7 ret void } diff --git a/bench/wireshark/optimized/packet-tcap.c.ll b/bench/wireshark/optimized/packet-tcap.c.ll index ea2c069f64a..3d36e4c8186 100644 --- a/bench/wireshark/optimized/packet-tcap.c.ll +++ b/bench/wireshark/optimized/packet-tcap.c.ll @@ -4210,7 +4210,7 @@ proto_item_set_generated.exit: ; preds = %6, %14, %17 %24 = call i32 @dissect_ber_octet_string(i1 noundef zeroext %0, ptr noundef nonnull %3, ptr noundef %22, ptr noundef %1, i32 noundef %2, i32 noundef %23, ptr noundef nonnull %7) #11 %25 = load ptr, ptr %7, align 8 %.not = icmp eq ptr %25, null - br i1 %.not, label %65, label %26 + br i1 %.not, label %70, label %26 26: ; preds = %proto_item_set_generated.exit %27 = call i32 @tvb_reported_length_remaining(ptr noundef nonnull %25, i32 noundef 0) #11 @@ -4260,7 +4260,7 @@ proto_item_set_generated.exit: ; preds = %6, %14, %17 48: ; preds = %46, %43 %.not33 = icmp eq i32 %28, 0 - br i1 %.not33, label %65, label %49 + br i1 %.not33, label %70, label %49 49: ; preds = %48 %50 = getelementptr inbounds i8, ptr %3, i64 16 @@ -4268,29 +4268,32 @@ proto_item_set_generated.exit: ; preds = %6, %14, %17 %52 = getelementptr inbounds i8, ptr %51, i64 8 %53 = load ptr, ptr %52, align 8 call void @col_append_str(ptr noundef %53, i32 noundef 25, ptr noundef nonnull @.str.235) #11 - br label %54 - -54: ; preds = %49, %54 - %indvars.iv = phi i32 [ 0, %49 ], [ %indvars.iv.next, %54 ] - %55 = load ptr, ptr %50, align 8 - %56 = getelementptr inbounds i8, ptr %55, i64 8 - %57 = load ptr, ptr %56, align 8 - %58 = load ptr, ptr %7, align 8 - %59 = call zeroext i8 @tvb_get_guint8(ptr noundef %58, i32 noundef %indvars.iv) #11 - %60 = zext i8 %59 to i32 - call void (ptr, i32, ptr, ...) @col_append_fstr(ptr noundef %57, i32 noundef 25, ptr noundef nonnull @.str.236, i32 noundef %60) #11 - %indvars.iv.next = add nuw nsw i32 %indvars.iv, 1 - %exitcond.not = icmp eq i32 %indvars.iv.next, %28 - br i1 %exitcond.not, label %61, label %54, !llvm.loop !6 - -61: ; preds = %54 - %62 = load ptr, ptr %50, align 8 - %63 = getelementptr inbounds i8, ptr %62, i64 8 - %64 = load ptr, ptr %63, align 8 - call void @col_append_str(ptr noundef %64, i32 noundef 25, ptr noundef nonnull @.str.237) #11 - br label %65 - -65: ; preds = %48, %61, %proto_item_set_generated.exit + %54 = trunc i32 %27 to i8 + br label %55 + +55: ; preds = %49, %55 + %56 = phi i32 [ 0, %49 ], [ %64, %55 ] + %.034 = phi i8 [ 0, %49 ], [ %63, %55 ] + %57 = load ptr, ptr %50, align 8 + %58 = getelementptr inbounds i8, ptr %57, i64 8 + %59 = load ptr, ptr %58, align 8 + %60 = load ptr, ptr %7, align 8 + %61 = call zeroext i8 @tvb_get_guint8(ptr noundef %60, i32 noundef %56) #11 + %62 = zext i8 %61 to i32 + call void (ptr, i32, ptr, ...) @col_append_fstr(ptr noundef %59, i32 noundef 25, ptr noundef nonnull @.str.236, i32 noundef %62) #11 + %63 = add nuw i8 %.034, 1 + %64 = zext i8 %63 to i32 + %65 = icmp ult i8 %63, %54 + br i1 %65, label %55, label %66, !llvm.loop !6 + +66: ; preds = %55 + %67 = load ptr, ptr %50, align 8 + %68 = getelementptr inbounds i8, ptr %67, i64 8 + %69 = load ptr, ptr %68, align 8 + call void @col_append_str(ptr noundef %69, i32 noundef 25, ptr noundef nonnull @.str.237) #11 + br label %70 + +70: ; preds = %48, %66, %proto_item_set_generated.exit ret i32 %24 } @@ -4344,7 +4347,7 @@ proto_item_set_generated.exit: ; preds = %6, %14, %17 %24 = call i32 @dissect_ber_octet_string(i1 noundef zeroext %0, ptr noundef nonnull %3, ptr noundef %22, ptr noundef %1, i32 noundef %2, i32 noundef %23, ptr noundef nonnull %7) #11 %25 = load ptr, ptr %7, align 8 %.not = icmp eq ptr %25, null - br i1 %.not, label %65, label %26 + br i1 %.not, label %70, label %26 26: ; preds = %proto_item_set_generated.exit %27 = call i32 @tvb_reported_length_remaining(ptr noundef nonnull %25, i32 noundef 0) #11 @@ -4394,7 +4397,7 @@ proto_item_set_generated.exit: ; preds = %6, %14, %17 48: ; preds = %46, %43 %.not33 = icmp eq i32 %28, 0 - br i1 %.not33, label %65, label %49 + br i1 %.not33, label %70, label %49 49: ; preds = %48 %50 = getelementptr inbounds i8, ptr %3, i64 16 @@ -4402,29 +4405,32 @@ proto_item_set_generated.exit: ; preds = %6, %14, %17 %52 = getelementptr inbounds i8, ptr %51, i64 8 %53 = load ptr, ptr %52, align 8 call void @col_append_str(ptr noundef %53, i32 noundef 25, ptr noundef nonnull @.str.240) #11 - br label %54 - -54: ; preds = %49, %54 - %indvars.iv = phi i32 [ 0, %49 ], [ %indvars.iv.next, %54 ] - %55 = load ptr, ptr %50, align 8 - %56 = getelementptr inbounds i8, ptr %55, i64 8 - %57 = load ptr, ptr %56, align 8 - %58 = load ptr, ptr %7, align 8 - %59 = call zeroext i8 @tvb_get_guint8(ptr noundef %58, i32 noundef %indvars.iv) #11 - %60 = zext i8 %59 to i32 - call void (ptr, i32, ptr, ...) @col_append_fstr(ptr noundef %57, i32 noundef 25, ptr noundef nonnull @.str.236, i32 noundef %60) #11 - %indvars.iv.next = add nuw nsw i32 %indvars.iv, 1 - %exitcond.not = icmp eq i32 %indvars.iv.next, %28 - br i1 %exitcond.not, label %61, label %54, !llvm.loop !7 - -61: ; preds = %54 - %62 = load ptr, ptr %50, align 8 - %63 = getelementptr inbounds i8, ptr %62, i64 8 - %64 = load ptr, ptr %63, align 8 - call void @col_append_str(ptr noundef %64, i32 noundef 25, ptr noundef nonnull @.str.237) #11 - br label %65 - -65: ; preds = %48, %61, %proto_item_set_generated.exit + %54 = trunc i32 %27 to i8 + br label %55 + +55: ; preds = %49, %55 + %56 = phi i32 [ 0, %49 ], [ %64, %55 ] + %.034 = phi i8 [ 0, %49 ], [ %63, %55 ] + %57 = load ptr, ptr %50, align 8 + %58 = getelementptr inbounds i8, ptr %57, i64 8 + %59 = load ptr, ptr %58, align 8 + %60 = load ptr, ptr %7, align 8 + %61 = call zeroext i8 @tvb_get_guint8(ptr noundef %60, i32 noundef %56) #11 + %62 = zext i8 %61 to i32 + call void (ptr, i32, ptr, ...) @col_append_fstr(ptr noundef %59, i32 noundef 25, ptr noundef nonnull @.str.236, i32 noundef %62) #11 + %63 = add nuw i8 %.034, 1 + %64 = zext i8 %63 to i32 + %65 = icmp ult i8 %63, %54 + br i1 %65, label %55, label %66, !llvm.loop !7 + +66: ; preds = %55 + %67 = load ptr, ptr %50, align 8 + %68 = getelementptr inbounds i8, ptr %67, i64 8 + %69 = load ptr, ptr %68, align 8 + call void @col_append_str(ptr noundef %69, i32 noundef 25, ptr noundef nonnull @.str.237) #11 + br label %70 + +70: ; preds = %48, %66, %proto_item_set_generated.exit ret i32 %24 } diff --git a/bench/xgboost/optimized/lambdarank_obj.cc.ll b/bench/xgboost/optimized/lambdarank_obj.cc.ll index 00f7e760039..aae99c80309 100644 --- a/bench/xgboost/optimized/lambdarank_obj.cc.ll +++ b/bench/xgboost/optimized/lambdarank_obj.cc.ll @@ -1992,7 +1992,7 @@ _ZN4dmlc15LogMessageFatal6streamB5cxx11Ev.exit: ; preds = %.noexc30, %_ZN4dmlc %88 = landingpad { ptr, i32 } cleanup invoke void @_ZN4dmlc15LogMessageFatalD2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) - to label %.body unwind label %263 + to label %.body unwind label %265 89: ; preds = %84 %.pr60 = load ptr, ptr %11, align 8 @@ -2083,7 +2083,7 @@ _ZN4dmlc15LogMessageFatal6streamB5cxx11Ev.exit38: ; preds = %.noexc37, %_ZN4dmlc %117 = landingpad { ptr, i32 } cleanup invoke void @_ZN4dmlc15LogMessageFatalD2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) - to label %.body unwind label %263 + to label %.body unwind label %265 118: ; preds = %113 %.pr67 = load ptr, ptr %14, align 8 @@ -2221,7 +2221,7 @@ _ZN4dmlc15LogMessageFatal6streamB5cxx11Ev.exit.i.i: ; preds = %.noexc45.i.i, %_Z %165 = landingpad { ptr, i32 } cleanup invoke void @_ZN4dmlc15LogMessageFatalD2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) - to label %.body unwind label %260 + to label %.body unwind label %262 166: ; preds = %161 %.pr50.i.i = load ptr, ptr %7, align 8 @@ -2350,90 +2350,92 @@ _ZNK7xgboost6common4SpanIdLm18446744073709551615EEixEm.exit.i.i: ; preds = %210 br i1 %218, label %_ZNK7xgboost6common4SpanIdLm18446744073709551615EEixEm.exit38.i.i, label %._crit_edge.i.i _ZNK7xgboost6common4SpanIdLm18446744073709551615EEixEm.exit38.i.i: ; preds = %_ZNK7xgboost6common4SpanIdLm18446744073709551615EEixEm.exit.i.i, %_ZNK7xgboost6common4SpanIdLm18446744073709551615EEixEm.exit38.i.i - %219 = phi double [ %226, %_ZNK7xgboost6common4SpanIdLm18446744073709551615EEixEm.exit38.i.i ], [ %217, %_ZNK7xgboost6common4SpanIdLm18446744073709551615EEixEm.exit.i.i ] - %.02377.i.i = phi i64 [ %228, %_ZNK7xgboost6common4SpanIdLm18446744073709551615EEixEm.exit38.i.i ], [ 1, %_ZNK7xgboost6common4SpanIdLm18446744073709551615EEixEm.exit.i.i ] - %220 = getelementptr inbounds i64, ptr %194, i64 %.02377.i.i - %221 = load i64, ptr %220, align 8 - %222 = mul i64 %221, %198 - %223 = getelementptr inbounds float, ptr %211, i64 %222 - %224 = load float, ptr %223, align 4 - %225 = fpext float %224 to double - %226 = fadd double %219, %225 - %227 = getelementptr inbounds double, ptr %185, i64 %.02377.i.i - store double %226, ptr %227, align 8 - %228 = add nuw nsw i64 %.02377.i.i, 1 - %exitcond.not.i.i = icmp eq i64 %228, %179 + %.02377.i.i = phi i64 [ %229, %_ZNK7xgboost6common4SpanIdLm18446744073709551615EEixEm.exit38.i.i ], [ 1, %_ZNK7xgboost6common4SpanIdLm18446744073709551615EEixEm.exit.i.i ] + %219 = getelementptr double, ptr %185, i64 %.02377.i.i + %220 = getelementptr i8, ptr %219, i64 -8 + %221 = load double, ptr %220, align 8 + %222 = getelementptr inbounds i64, ptr %194, i64 %.02377.i.i + %223 = load i64, ptr %222, align 8 + %224 = mul i64 %223, %198 + %225 = getelementptr inbounds float, ptr %211, i64 %224 + %226 = load float, ptr %225, align 4 + %227 = fpext float %226 to double + %228 = fadd double %221, %227 + store double %228, ptr %219, align 8 + %229 = add nuw nsw i64 %.02377.i.i, 1 + %exitcond.not.i.i = icmp eq i64 %229, %179 br i1 %exitcond.not.i.i, label %._crit_edge.i.i, label %_ZNK7xgboost6common4SpanIdLm18446744073709551615EEixEm.exit38.i.i, !llvm.loop !102 ._crit_edge.i.i: ; preds = %_ZNK7xgboost6common4SpanIdLm18446744073709551615EEixEm.exit38.i.i, %_ZNK7xgboost6common4SpanIdLm18446744073709551615EEixEm.exit.i.i - %229 = load i64, ptr %10, align 8 - %230 = icmp ult i64 %.03368.i.i, %229 - br i1 %230, label %_ZNK7xgboost6common4SpanIKjLm18446744073709551615EEixEm.exit39.i.i, label %231 + %230 = load i64, ptr %10, align 8 + %231 = icmp ult i64 %.03368.i.i, %230 + br i1 %231, label %_ZNK7xgboost6common4SpanIKjLm18446744073709551615EEixEm.exit39.i.i, label %232 -231: ; preds = %._crit_edge.i.i +232: ; preds = %._crit_edge.i.i call void @_ZSt9terminatev() #34 unreachable _ZNK7xgboost6common4SpanIKjLm18446744073709551615EEixEm.exit39.i.i: ; preds = %._crit_edge.i.i - %232 = load ptr, ptr %58, align 8 - %233 = getelementptr inbounds i32, ptr %232, i64 %.03368.i.i - %234 = load i32, ptr %233, align 4 - %235 = zext i32 %234 to i64 - %236 = add nuw nsw i64 %235, %179 - %237 = load i64, ptr %18, align 8, !noalias !103 - %.not.i40.i.i = icmp ugt i64 %236, %237 - br i1 %.not.i40.i.i, label %238, label %239 - -238: ; preds = %_ZNK7xgboost6common4SpanIKjLm18446744073709551615EEixEm.exit39.i.i + %233 = load ptr, ptr %58, align 8 + %234 = getelementptr inbounds i32, ptr %233, i64 %.03368.i.i + %235 = load i32, ptr %234, align 4 + %236 = zext i32 %235 to i64 + %237 = add nuw nsw i64 %236, %179 + %238 = load i64, ptr %18, align 8, !noalias !103 + %.not.i40.i.i = icmp ugt i64 %237, %238 + br i1 %.not.i40.i.i, label %239, label %240 + +239: ; preds = %_ZNK7xgboost6common4SpanIKjLm18446744073709551615EEixEm.exit39.i.i call void @_ZSt9terminatev() #34, !noalias !103 unreachable -239: ; preds = %_ZNK7xgboost6common4SpanIKjLm18446744073709551615EEixEm.exit39.i.i - %240 = load ptr, ptr %.in.i41.i.i, align 8, !noalias !103 - %241 = getelementptr inbounds double, ptr %240, i64 %235 - %.not76.i.i = icmp eq ptr %240, null - br i1 %.not76.i.i, label %242, label %_ZNK7xgboost6common4SpanIdLm18446744073709551615EEixEm.exit44.i.i +240: ; preds = %_ZNK7xgboost6common4SpanIKjLm18446744073709551615EEixEm.exit39.i.i + %241 = load ptr, ptr %.in.i41.i.i, align 8, !noalias !103 + %242 = getelementptr inbounds double, ptr %241, i64 %236 + %.not76.i.i = icmp eq ptr %241, null + br i1 %.not76.i.i, label %243, label %_ZNK7xgboost6common4SpanIdLm18446744073709551615EEixEm.exit44.i.i -242: ; preds = %239 +243: ; preds = %240 call void @_ZSt9terminatev() #34, !noalias !103 unreachable -_ZNK7xgboost6common4SpanIdLm18446744073709551615EEixEm.exit44.i.i: ; preds = %239 - %243 = load i64, ptr %194, align 8 - %244 = mul i64 %243, %198 - %245 = getelementptr inbounds float, ptr %211, i64 %244 - %246 = load float, ptr %245, align 4 - %247 = fpext float %246 to double - store double %247, ptr %241, align 8 +_ZNK7xgboost6common4SpanIdLm18446744073709551615EEixEm.exit44.i.i: ; preds = %240 + %244 = load i64, ptr %194, align 8 + %245 = mul i64 %244, %198 + %246 = getelementptr inbounds float, ptr %211, i64 %245 + %247 = load float, ptr %246, align 4 + %248 = fpext float %247 to double + store double %248, ptr %242, align 8 br i1 %218, label %_ZNK7xgboost6common4SpanIdLm18446744073709551615EEixEm.exit47.i.i, label %"_ZN4dmlc12OMPException3RunIZN7xgboost3obj8cpu_impl7MAPStatEPKNS2_7ContextENS2_6linalg10TensorViewIKfLi1EEENS2_6common4SpanIKmLm18446744073709551615EEESt10shared_ptrINS2_3ltr8MAPCacheEEE3$_0JmEEEvT_DpT0_.exit" _ZNK7xgboost6common4SpanIdLm18446744073709551615EEixEm.exit47.i.i: ; preds = %_ZNK7xgboost6common4SpanIdLm18446744073709551615EEixEm.exit44.i.i, %_ZNK7xgboost6common4SpanIdLm18446744073709551615EEixEm.exit47.i.i - %248 = phi double [ %258, %_ZNK7xgboost6common4SpanIdLm18446744073709551615EEixEm.exit47.i.i ], [ %247, %_ZNK7xgboost6common4SpanIdLm18446744073709551615EEixEm.exit44.i.i ] - %.078.i.i = phi i64 [ %255, %_ZNK7xgboost6common4SpanIdLm18446744073709551615EEixEm.exit47.i.i ], [ 1, %_ZNK7xgboost6common4SpanIdLm18446744073709551615EEixEm.exit44.i.i ] - %249 = getelementptr inbounds i64, ptr %194, i64 %.078.i.i - %250 = load i64, ptr %249, align 8 - %251 = mul i64 %250, %198 - %252 = getelementptr inbounds float, ptr %211, i64 %251 - %253 = load float, ptr %252, align 4 - %254 = fpext float %253 to double - %255 = add nuw nsw i64 %.078.i.i, 1 - %256 = uitofp nneg i64 %255 to double - %257 = fdiv double %254, %256 - %258 = fadd double %248, %257 - %259 = getelementptr inbounds double, ptr %241, i64 %.078.i.i - store double %258, ptr %259, align 8 - %exitcond81.not.i.i = icmp eq i64 %255, %179 - br i1 %exitcond81.not.i.i, label %"_ZN4dmlc12OMPException3RunIZN7xgboost3obj8cpu_impl7MAPStatEPKNS2_7ContextENS2_6linalg10TensorViewIKfLi1EEENS2_6common4SpanIKmLm18446744073709551615EEESt10shared_ptrINS2_3ltr8MAPCacheEEE3$_0JmEEEvT_DpT0_.exit", label %_ZNK7xgboost6common4SpanIdLm18446744073709551615EEixEm.exit47.i.i, !llvm.loop !106 + %.078.i.i = phi i64 [ %258, %_ZNK7xgboost6common4SpanIdLm18446744073709551615EEixEm.exit47.i.i ], [ 1, %_ZNK7xgboost6common4SpanIdLm18446744073709551615EEixEm.exit44.i.i ] + %249 = getelementptr double, ptr %242, i64 %.078.i.i + %250 = getelementptr i8, ptr %249, i64 -8 + %251 = load double, ptr %250, align 8 + %252 = getelementptr inbounds i64, ptr %194, i64 %.078.i.i + %253 = load i64, ptr %252, align 8 + %254 = mul i64 %253, %198 + %255 = getelementptr inbounds float, ptr %211, i64 %254 + %256 = load float, ptr %255, align 4 + %257 = fpext float %256 to double + %258 = add nuw nsw i64 %.078.i.i, 1 + %259 = uitofp nneg i64 %258 to double + %260 = fdiv double %257, %259 + %261 = fadd double %251, %260 + store double %261, ptr %249, align 8 + %exitcond80.not.i.i = icmp eq i64 %258, %179 + br i1 %exitcond80.not.i.i, label %"_ZN4dmlc12OMPException3RunIZN7xgboost3obj8cpu_impl7MAPStatEPKNS2_7ContextENS2_6linalg10TensorViewIKfLi1EEENS2_6common4SpanIKmLm18446744073709551615EEESt10shared_ptrINS2_3ltr8MAPCacheEEE3$_0JmEEEvT_DpT0_.exit", label %_ZNK7xgboost6common4SpanIdLm18446744073709551615EEixEm.exit47.i.i, !llvm.loop !106 "_ZN4dmlc12OMPException3RunIZN7xgboost3obj8cpu_impl7MAPStatEPKNS2_7ContextENS2_6linalg10TensorViewIKfLi1EEENS2_6common4SpanIKmLm18446744073709551615EEESt10shared_ptrINS2_3ltr8MAPCacheEEE3$_0JmEEEvT_DpT0_.exit": ; preds = %_ZNK7xgboost6common4SpanIdLm18446744073709551615EEixEm.exit47.i.i, %_ZNK7xgboost6common4SpanIdLm18446744073709551615EEixEm.exit44.i.i %exitcond88.not.i.i = icmp eq i64 %168, %140 br i1 %exitcond88.not.i.i, label %.loopexit, label %.lr.ph69.i.i, !llvm.loop !107 -260: ; preds = %164 - %261 = landingpad { ptr, i32 } +262: ; preds = %164 + %263 = landingpad { ptr, i32 } catch ptr null - %262 = extractvalue { ptr, i32 } %261, 0 - call void @__clang_call_terminate(ptr %262) #34 + %264 = extractvalue { ptr, i32 } %263, 0 + call void @__clang_call_terminate(ptr %264) #34 unreachable .loopexit: ; preds = %"_ZN4dmlc12OMPException3RunIZN7xgboost3obj8cpu_impl7MAPStatEPKNS2_7ContextENS2_6linalg10TensorViewIKfLi1EEENS2_6common4SpanIKmLm18446744073709551615EEESt10shared_ptrINS2_3ltr8MAPCacheEEE3$_0JmEEEvT_DpT0_.exit", %.preheader59.i.i @@ -2449,11 +2451,11 @@ _ZNK7xgboost6common4SpanIdLm18446744073709551615EEixEm.exit47.i.i: ; preds = %_Z call void @_ZNSt10unique_ptrINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt14default_deleteIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %.sink) #10 resume { ptr, i32 } %.pn20.pn -263: ; preds = %116, %87 - %264 = landingpad { ptr, i32 } +265: ; preds = %116, %87 + %266 = landingpad { ptr, i32 } catch ptr null - %265 = extractvalue { ptr, i32 } %264, 0 - call void @__clang_call_terminate(ptr %265) #34 + %267 = extractvalue { ptr, i32 } %266, 0 + call void @__clang_call_terminate(ptr %267) #34 unreachable } diff --git a/bench/zed-rs/optimized/20igqmfettcex48uahr8huyna.ll b/bench/zed-rs/optimized/20igqmfettcex48uahr8huyna.ll index e92cdacfd2d..0657c45d995 100644 --- a/bench/zed-rs/optimized/20igqmfettcex48uahr8huyna.ll +++ b/bench/zed-rs/optimized/20igqmfettcex48uahr8huyna.ll @@ -16619,29 +16619,28 @@ define hidden void @_ZN4core4iter6traits8iterator8Iterator8for_each17h099491527f ; Function Attrs: inlinehint nonlazybind uwtable define hidden { i64, i64 } @_ZN4core4iter6traits8iterator8Iterator8try_fold17h207422a097b25489E.llvm.15419814201757598265(ptr noalias noundef align 8 dereferenceable(1120) %0, i64 noundef %1, ptr noalias nocapture noundef align 8 dereferenceable(8) %2) unnamed_addr #0 personality ptr @rust_eh_personality { %.promoted = load i64, ptr %2, align 8 - %4 = add i64 %.promoted, %1 - br label %5 + br label %4 -5: ; preds = %9, %3 - %6 = phi i64 [ %.promoted, %3 ], [ %10, %9 ] - %.sroa.01.0 = phi i64 [ %1, %3 ], [ %11, %9 ] - %7 = tail call noundef align 8 dereferenceable_or_null(88) ptr @"_ZN85_$LT$worktree..ChildEntriesIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfa50a1e425d8faeaE"(ptr noalias noundef nonnull align 8 dereferenceable(1120) %0) - %8 = icmp eq ptr %7, null - br i1 %8, label %13, label %9 +4: ; preds = %8, %3 + %5 = phi i64 [ %.promoted, %3 ], [ %9, %8 ] + %.sroa.01.0 = phi i64 [ %1, %3 ], [ %10, %8 ] + %6 = tail call noundef align 8 dereferenceable_or_null(88) ptr @"_ZN85_$LT$worktree..ChildEntriesIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hfa50a1e425d8faeaE"(ptr noalias noundef nonnull align 8 dereferenceable(1120) %0) + %7 = icmp eq ptr %6, null + br i1 %7, label %12, label %8 -9: ; preds = %5 - %10 = add i64 %6, -1 - store i64 %10, ptr %2, align 8 - %11 = add i64 %.sroa.01.0, 1 - %12 = icmp eq i64 %10, 0 - br i1 %12, label %13, label %5 - -13: ; preds = %5, %9 - %.sroa.01.0.pn = phi i64 [ %4, %9 ], [ %.sroa.01.0, %5 ] - %.sroa.0.0 = phi i64 [ 1, %9 ], [ 0, %5 ] - %14 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 - %15 = insertvalue { i64, i64 } %14, i64 %.sroa.01.0.pn, 1 - ret { i64, i64 } %15 +8: ; preds = %4 + %9 = add i64 %5, -1 + store i64 %9, ptr %2, align 8 + %10 = add i64 %.sroa.01.0, 1 + %11 = icmp eq i64 %9, 0 + br i1 %11, label %12, label %4 + +12: ; preds = %4, %8 + %.sroa.01.0.pn = phi i64 [ %10, %8 ], [ %.sroa.01.0, %4 ] + %.sroa.0.0 = phi i64 [ 1, %8 ], [ 0, %4 ] + %13 = insertvalue { i64, i64 } poison, i64 %.sroa.0.0, 0 + %14 = insertvalue { i64, i64 } %13, i64 %.sroa.01.0.pn, 1 + ret { i64, i64 } %14 } ; Function Attrs: inlinehint nonlazybind uwtable diff --git a/bench/zxing/optimized/ConcentricFinder.cpp.ll b/bench/zxing/optimized/ConcentricFinder.cpp.ll index 35ff9fc9300..5b6192b26af 100644 --- a/bench/zxing/optimized/ConcentricFinder.cpp.ll +++ b/bench/zxing/optimized/ConcentricFinder.cpp.ll @@ -1963,12 +1963,12 @@ _ZN5ZXing6ReduceIPKNS_6PointTIdEES2_St4plusIS2_EEET0_T_S8_S7_T1_.exit.i281.i: ; %463 = getelementptr inbounds i8, ptr %11, i64 256 %464 = fcmp uno double %.sroa.8.24.copyload3.i.i.i.i.i.i.i, 0.000000e+00 %465 = fcmp uno double %.sroa.8.24.copyload3.i41.i.i.i.i.i.i, 0.000000e+00 - %or.cond467.i = select i1 %464, i1 true, i1 %465 + %or.cond455.i = select i1 %464, i1 true, i1 %465 %466 = fcmp uno double %.sroa.8.24.copyload3.i54.i.i.i.i.i.i, 0.000000e+00 - %or.cond468.i = select i1 %or.cond467.i, i1 true, i1 %466 + %or.cond456.i = select i1 %or.cond455.i, i1 true, i1 %466 %467 = fcmp uno double %.sroa.8.24.copyload3.i67.i.i.i.i.i.i, 0.000000e+00 - %or.cond469.i = select i1 %or.cond468.i, i1 true, i1 %467 - br i1 %or.cond469.i, label %.loopexit353.i, label %.thread.i + %or.cond457.i = select i1 %or.cond456.i, i1 true, i1 %467 + br i1 %or.cond457.i, label %.loopexit353.i, label %.thread.i .thread.i: ; preds = %"_ZN9__gnu_cxx5__ops10_Iter_predIZN5ZXingL23FitQadrilateralToPointsENS2_6PointTIdEERSt6vectorIS4_SaIS4_EEE3$_2EclIPNS2_14RegressionLineEEEbT_.exit.i.i.i.i.i.i" store ptr %107, ptr %12, align 8, !noalias !29 @@ -2054,10 +2054,10 @@ _ZN5ZXing6ReduceIPKNS_6PointTIdEES2_St4plusIS2_EEET0_T_S8_S7_T1_.exit.i281.i: ; br label %506 506: ; preds = %506, %505 - %indvars.iv437.i = phi i64 [ 0, %505 ], [ %indvars.iv.next438.i, %506 ] - %507 = getelementptr inbounds [4 x %"class.ZXing::RegressionLine"], ptr %11, i64 0, i64 %indvars.iv437.i - %indvars.iv.next438.i = add nuw nsw i64 %indvars.iv437.i, 1 - %508 = and i64 %indvars.iv.next438.i, 3 + %indvars.iv425.i = phi i64 [ 0, %505 ], [ %indvars.iv.next426.i, %506 ] + %507 = getelementptr inbounds [4 x %"class.ZXing::RegressionLine"], ptr %11, i64 0, i64 %indvars.iv425.i + %indvars.iv.next426.i = add nuw nsw i64 %indvars.iv425.i, 1 + %508 = and i64 %indvars.iv.next426.i, 3 %509 = getelementptr inbounds [4 x %"class.ZXing::RegressionLine"], ptr %11, i64 0, i64 %508 %510 = getelementptr inbounds i8, ptr %507, i64 40 %511 = load double, ptr %510, align 8, !noalias !29 @@ -2081,12 +2081,12 @@ _ZN5ZXing6ReduceIPKNS_6PointTIdEES2_St4plusIS2_EEET0_T_S8_S7_T1_.exit.i281.i: ; %529 = fmul double %522, %518 %530 = call double @llvm.fmuladd.f64(double %511, double %524, double %529) %531 = fdiv double %530, %520 - %532 = getelementptr inbounds [4 x %"struct.ZXing::PointT"], ptr %14, i64 0, i64 %indvars.iv437.i + %532 = getelementptr inbounds [4 x %"struct.ZXing::PointT"], ptr %14, i64 0, i64 %indvars.iv425.i store double %528, ptr %532, align 8 %.sroa.2.0..sroa_idx.i = getelementptr inbounds i8, ptr %532, i64 8 store double %531, ptr %.sroa.2.0..sroa_idx.i, align 8 - %exitcond440.not.i = icmp eq i64 %indvars.iv.next438.i, 4 - br i1 %exitcond440.not.i, label %.loopexit353.i, label %506, !llvm.loop !43 + %exitcond428.not.i = icmp eq i64 %indvars.iv.next426.i, 4 + br i1 %exitcond428.not.i, label %.loopexit353.i, label %506, !llvm.loop !43 .loopexit353.i: ; preds = %498, %506, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN5ZXingL23FitQadrilateralToPointsENS2_6PointTIdEERSt6vectorIS4_SaIS4_EEE3$_2EclIPNS2_14RegressionLineEEEbT_.exit.i.i.i.i.i.i" %.sink.i = phi i8 [ 0, %"_ZN9__gnu_cxx5__ops10_Iter_predIZN5ZXingL23FitQadrilateralToPointsENS2_6PointTIdEERSt6vectorIS4_SaIS4_EEE3$_2EclIPNS2_14RegressionLineEEEbT_.exit.i.i.i.i.i.i" ], [ 1, %506 ], [ 0, %498 ] @@ -2175,14 +2175,14 @@ _ZNSt6vectorIN5ZXing6PointTIdEESaIS2_EED2Ev.exit: ; preds = %"_ZSt11max_elementI 565: ; preds = %539, %555, %_ZN5ZXingL17CollectRingPointsERKNS_9BitMatrixENS_6PointTIdEEiib.exit, %_ZN5ZXingL17CollectRingPointsERKNS_9BitMatrixENS_6PointTIdEEiib.exit.thread, %564 %.sink.i.sink = phi i8 [ %.sink.i, %564 ], [ 0, %_ZN5ZXingL17CollectRingPointsERKNS_9BitMatrixENS_6PointTIdEEiib.exit.thread ], [ 0, %_ZN5ZXingL17CollectRingPointsERKNS_9BitMatrixENS_6PointTIdEEiib.exit ], [ 0, %555 ], [ 0, %539 ] - %.sroa.021.037 = phi ptr [ %.sroa.040.4.i, %564 ], [ null, %_ZN5ZXingL17CollectRingPointsERKNS_9BitMatrixENS_6PointTIdEEiib.exit.thread ], [ %.sroa.040.4.i, %_ZN5ZXingL17CollectRingPointsERKNS_9BitMatrixENS_6PointTIdEEiib.exit ], [ %.sroa.040.4.i, %555 ], [ %.sroa.040.4.i, %539 ] + %.sroa.021.035 = phi ptr [ %.sroa.040.4.i, %564 ], [ null, %_ZN5ZXingL17CollectRingPointsERKNS_9BitMatrixENS_6PointTIdEEiib.exit.thread ], [ %.sroa.040.4.i, %_ZN5ZXingL17CollectRingPointsERKNS_9BitMatrixENS_6PointTIdEEiib.exit ], [ %.sroa.040.4.i, %555 ], [ %.sroa.040.4.i, %539 ] %.sroa.3.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 64 store i8 %.sink.i.sink, ptr %.sroa.3.0..sroa_idx, align 8 - %.not.i.i.i19 = icmp eq ptr %.sroa.021.037, null + %.not.i.i.i19 = icmp eq ptr %.sroa.021.035, null br i1 %.not.i.i.i19, label %_ZNSt6vectorIN5ZXing6PointTIdEESaIS2_EED2Ev.exit20, label %566 566: ; preds = %565 - call void @_ZdlPv(ptr noundef nonnull %.sroa.021.037) #16 + call void @_ZdlPv(ptr noundef nonnull %.sroa.021.035) #16 br label %_ZNSt6vectorIN5ZXing6PointTIdEESaIS2_EED2Ev.exit20 _ZNSt6vectorIN5ZXing6PointTIdEESaIS2_EED2Ev.exit20: ; preds = %565, %566