From e718d1e3a76f47b0094e585178e4067a0e421d61 Mon Sep 17 00:00:00 2001 From: fhahn <450489+fhahn@users.noreply.github.com> Date: Wed, 22 Oct 2025 21:12:46 +0800 Subject: [PATCH 1/3] pre-commit: PRllvm/llvm-project/compare/main...fhahn:llvm-project:ce-reorder-add --- scripts/setup_pre_commit_patch.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c8d0fce0bf7..96df403fb04 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/compare/main...fhahn:llvm-project:ce-reorder-add export COMPTIME_MODE=0 export STAT_MODE=0 export STAT_NAME="" From 554f104a39743db93e7900497015e6f5f7d090d2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 22 Oct 2025 13:28:19 +0000 Subject: [PATCH 2/3] pre-commit: Update --- bench/abc/optimized/giaMf.ll | 397 +++++++------- bench/abc/optimized/giaSatEdge.ll | 235 ++++----- bench/abc/optimized/ifDec16.ll | 352 ++++++------- bench/actix-rs/optimized/q4aavw6wh20so0r.ll | 4 +- bench/assimp/optimized/FBXBinaryTokenizer.ll | 16 +- bench/cmake/optimized/cmTarget.ll | 2 +- bench/cmake/optimized/cmakemain.ll | 52 +- .../optimized/2g9ijtjos2xwh9zs.ll | 82 +-- bench/duckdb/optimized/format.ll | 66 +-- bench/duckdb/optimized/ub_duckdb_common.ll | 56 +- .../ub_duckdb_core_functions_string.ll | 58 +- .../optimized/efmso49nxcvtljggmhiyzv2jj.ll | 487 +++++++++-------- .../optimized/2jegnuo3b7uy1oojff5kt8alk.ll | 145 ++--- bench/gromacs/optimized/splineutil.ll | 186 +++---- bench/hermes/optimized/APInt.ll | 25 +- bench/image-rs/optimized/5ez7udly19o3uj1p.ll | 217 ++++---- .../libigl/optimized/min_quad_with_fixed.2.ll | 414 +++++++-------- bench/llvm/optimized/APInt.ll | 125 +++-- bench/llvm/optimized/Attributes.ll | 129 +++-- bench/llvm/optimized/IfConversion.ll | 12 +- bench/llvm/optimized/OptionRSTEmitter.ll | 20 +- .../llvm/optimized/X86TargetTransformInfo.ll | 174 +++--- bench/llvm/optimized/YAMLParser.ll | 196 +++---- bench/meshlab/optimized/arap.ll | 417 +++++++-------- .../optimized/cube_style_precomputation.ll | 408 +++++++------- .../optimized/TriangleMeshDeformation.ll | 411 +++++++-------- bench/opencv/optimized/eltwise_layer.ll | 48 +- bench/opencv/optimized/freak.ll | 68 +-- bench/opencv/optimized/model.ll | 230 ++++---- bench/openssl/optimized/v3_ncons.ll | 44 +- .../optimized/9kt0ps7am1ervf5eo1u53zq54.ll | 164 +++--- .../optimized/axiz6cr4x03l4ii2cmor4g5gv.ll | 22 +- .../capletcoterminalmaxhomogeneity.ll | 29 +- bench/quantlib/optimized/garch.ll | 23 +- .../optimized/multiproductmultistep.ll | 169 +++--- .../optimized/em94uyxz0wp9gccfab963606p.ll | 113 ++-- bench/rocksdb/optimized/experimental.ll | 144 +++-- .../optimized/272al911l1jdbqblbb9whzfue.ll | 405 +++++++------- .../optimized/4a0sesc153a050u04do7llz00.ll | 46 +- .../optimized/5k764i8zv3uxwobi5mx2hjj5g.ll | 97 ++-- .../optimized/6gcc2sei0t3mzzmp63ppi5tol.ll | 189 +++---- .../optimized/4hdqg9y9agw1ekve.ll | 32 +- .../optimized/4mz36mxu8r0g7zqk.ll | 445 ++++++++-------- .../optimized/55e7aotywrgrb7st.ll | 12 +- .../optimized/6909c4r4kqhl58g4t63amtvkr.ll | 479 +++++++++-------- .../optimized/cd91bxdrbjyy0s7hgoreg00sd.ll | 473 ++++++++--------- .../optimized/apu427tbl3luqie4ryqrtwt7n.ll | 497 +++++++++--------- .../wasmtime-rs/optimized/3wy7qx4e8fg0rwt0.ll | 465 ++++++++-------- .../wasmtime-rs/optimized/5079e95b7v1wxko.ll | 439 ++++++++-------- bench/wireshark/optimized/packet-hartip.ll | 247 +++++---- bench/wireshark/optimized/packet-isis-lsp.ll | 262 +++++---- bench/wireshark/optimized/sharkd_session.ll | 12 +- 52 files changed, 4739 insertions(+), 5101 deletions(-) diff --git a/bench/abc/optimized/giaMf.ll b/bench/abc/optimized/giaMf.ll index bbf6de90bcf..beb38301605 100644 --- a/bench/abc/optimized/giaMf.ll +++ b/bench/abc/optimized/giaMf.ll @@ -1207,274 +1207,273 @@ declare void @free(ptr allocptr noundef captures(none)) local_unnamed_addr #4 ; Function Attrs: inlinehint nounwind uwtable define internal fastcc noalias noundef ptr @Vec_WrdUniqifyHash(ptr noundef captures(none) %0) unnamed_addr #1 { -Abc_Base2Log.exit.i.i: - %1 = getelementptr inbounds nuw i8, ptr %0, i64 4 - %2 = load i32, ptr %1, align 4, !tbaa !27 - %3 = shl nsw i32 %2, 1 - store i32 %3, ptr %1, align 4, !tbaa !27 - %4 = load i32, ptr %0, align 8, !tbaa !23 - %5 = shl nsw i32 %4, 1 - store i32 %5, ptr %0, align 8, !tbaa !23 - %6 = icmp ult i32 %2, 2 - %7 = add nsw i32 %2, -1 - %8 = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %7, i1 true) - %9 = sub nuw nsw i32 32, %8 - %.09.i.i.i = select i1 %6, i32 %2, i32 %9 - %10 = shl nuw i32 1, %.09.i.i.i - %11 = add nsw i32 %10, -1 - %12 = sext i32 %10 to i64 - %13 = shl nsw i64 %12, 2 - %14 = tail call noalias ptr @malloc(i64 noundef %13) #27 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %14, i8 -1, i64 %13, i1 false) - %15 = tail call noalias ptr @malloc(i64 noundef %13) #27 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %15, i8 -1, i64 %13, i1 false) - %16 = sext i32 %2 to i64 - %17 = shl nsw i64 %16, 2 - %18 = tail call noalias ptr @malloc(i64 noundef %17) #27 - %19 = icmp sgt i32 %2, 0 - br i1 %19, label %.lr.ph57.i.i, label %Vec_IntUniqueCount.exit.i + %2 = getelementptr inbounds nuw i8, ptr %0, i64 4 + %3 = load i32, ptr %2, align 4, !tbaa !27 + %4 = shl nsw i32 %3, 1 + store i32 %4, ptr %2, align 4, !tbaa !27 + %5 = load i32, ptr %0, align 8, !tbaa !23 + %6 = shl nsw i32 %5, 1 + store i32 %6, ptr %0, align 8, !tbaa !23 + %7 = icmp ult i32 %3, 2 + %8 = add nsw i32 %3, -1 + %9 = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %8, i1 true) + %10 = sub nuw nsw i32 32, %9 + %.09.i.i.i = select i1 %7, i32 %3, i32 %10 + %11 = shl nuw i32 1, %.09.i.i.i + %12 = add nsw i32 %11, -1 + %13 = sext i32 %11 to i64 + %14 = shl nsw i64 %13, 2 + %15 = tail call noalias ptr @malloc(i64 noundef %14) #27 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %15, i8 -1, i64 %14, i1 false) + %16 = tail call noalias ptr @malloc(i64 noundef %14) #27 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %16, i8 -1, i64 %14, i1 false) + %17 = sext i32 %3 to i64 + %18 = shl nsw i64 %17, 2 + %19 = tail call noalias ptr @malloc(i64 noundef %18) #27 + %20 = icmp sgt i32 %3, 0 + br i1 %20, label %.lr.ph57.i.i, label %Vec_IntUniqueCount.exit.i -.lr.ph57.i.i: ; preds = %Abc_Base2Log.exit.i.i - %20 = getelementptr i8, ptr %0, i64 8 - %.val46.i.i = load ptr, ptr %20, align 8, !tbaa !26 - %wide.trip.count.i.i = zext nneg i32 %2 to i64 - br label %21 +.lr.ph57.i.i: ; preds = %1 + %21 = getelementptr i8, ptr %0, i64 8 + %.val46.i.i = load ptr, ptr %21, align 8, !tbaa !26 + %wide.trip.count.i.i = zext nneg i32 %3 to i64 + br label %22 -21: ; preds = %Vec_IntUniqueLookup.exit.i.i, %.lr.ph57.i.i +22: ; preds = %Vec_IntUniqueLookup.exit.i.i, %.lr.ph57.i.i %indvars.iv.i.i = phi i64 [ 0, %.lr.ph57.i.i ], [ %indvars.iv.next.i.i, %Vec_IntUniqueLookup.exit.i.i ] %.056.i.i = phi i32 [ 0, %.lr.ph57.i.i ], [ %.1.i.i, %Vec_IntUniqueLookup.exit.i.i ] %.idx.i.i = shl nuw nsw i64 %indvars.iv.i.i, 3 - %22 = getelementptr inbounds nuw i8, ptr %.val46.i.i, i64 %.idx.i.i - br label %23 + %23 = getelementptr inbounds nuw i8, ptr %.val46.i.i, i64 %.idx.i.i + br label %24 -23: ; preds = %23, %21 - %indvars.iv.i.i.i = phi i64 [ 0, %21 ], [ %indvars.iv.next.i.i.i, %23 ] - %.01011.i.i.i = phi i32 [ 0, %21 ], [ %42, %23 ] +24: ; preds = %24, %22 + %indvars.iv.i.i.i = phi i64 [ 0, %22 ], [ %indvars.iv.next.i.i.i, %24 ] + %.01011.i.i.i = phi i32 [ 0, %22 ], [ %43, %24 ] %.idx.i.i.i = shl nuw nsw i64 %indvars.iv.i.i.i, 3 - %24 = getelementptr inbounds nuw i8, ptr @Vec_IntUniqueHashKey.s_BigPrimes2, i64 %.idx.i.i.i - %25 = load i32, ptr %24, align 8, !tbaa !12 - %26 = getelementptr inbounds nuw i8, ptr %22, i64 %indvars.iv.i.i.i - %27 = load i8, ptr %26, align 1, !tbaa !50 - %28 = zext i8 %27 to i32 - %29 = and i32 %28, 15 - %30 = zext nneg i32 %29 to i64 - %31 = getelementptr inbounds nuw i32, ptr @Vec_IntUniqueHashKey.s_BigPrimes, i64 %30 - %32 = load i32, ptr %31, align 4, !tbaa !12 - %33 = mul i32 %32, %25 - %34 = getelementptr inbounds nuw i8, ptr %24, i64 4 - %35 = load i32, ptr %34, align 4, !tbaa !12 - %36 = lshr i32 %28, 4 - %37 = zext nneg i32 %36 to i64 - %38 = getelementptr inbounds nuw i32, ptr @Vec_IntUniqueHashKey.s_BigPrimes, i64 %37 - %39 = load i32, ptr %38, align 4, !tbaa !12 - %40 = mul i32 %39, %35 - %41 = add i32 %33, %.01011.i.i.i - %42 = add i32 %41, %40 + %25 = getelementptr inbounds nuw i8, ptr @Vec_IntUniqueHashKey.s_BigPrimes2, i64 %.idx.i.i.i + %26 = load i32, ptr %25, align 8, !tbaa !12 + %27 = getelementptr inbounds nuw i8, ptr %23, i64 %indvars.iv.i.i.i + %28 = load i8, ptr %27, align 1, !tbaa !50 + %29 = zext i8 %28 to i32 + %30 = and i32 %29, 15 + %31 = zext nneg i32 %30 to i64 + %32 = getelementptr inbounds nuw i32, ptr @Vec_IntUniqueHashKey.s_BigPrimes, i64 %31 + %33 = load i32, ptr %32, align 4, !tbaa !12 + %34 = mul i32 %33, %26 + %35 = getelementptr inbounds nuw i8, ptr %25, i64 4 + %36 = load i32, ptr %35, align 4, !tbaa !12 + %37 = lshr i32 %29, 4 + %38 = zext nneg i32 %37 to i64 + %39 = getelementptr inbounds nuw i32, ptr @Vec_IntUniqueHashKey.s_BigPrimes, i64 %38 + %40 = load i32, ptr %39, align 4, !tbaa !12 + %41 = mul i32 %40, %36 + %42 = add i32 %34, %.01011.i.i.i + %43 = add i32 %42, %41 %indvars.iv.next.i.i.i = add nuw nsw i64 %indvars.iv.i.i.i, 1 %exitcond.not.i.i.i = icmp eq i64 %indvars.iv.next.i.i.i, 8 - br i1 %exitcond.not.i.i.i, label %Vec_IntUniqueHashKey.exit.i.i, label %23, !llvm.loop !51 + br i1 %exitcond.not.i.i.i, label %Vec_IntUniqueHashKey.exit.i.i, label %24, !llvm.loop !51 -Vec_IntUniqueHashKey.exit.i.i: ; preds = %23 - %43 = and i32 %42, %11 - %44 = zext nneg i32 %43 to i64 - %45 = getelementptr inbounds nuw i32, ptr %14, i64 %44 - %46 = load i32, ptr %45, align 4, !tbaa !12 - %.not1.i.i.i = icmp eq i32 %46, -1 +Vec_IntUniqueHashKey.exit.i.i: ; preds = %24 + %44 = and i32 %43, %12 + %45 = zext nneg i32 %44 to i64 + %46 = getelementptr inbounds nuw i32, ptr %15, i64 %45 + %47 = load i32, ptr %46, align 4, !tbaa !12 + %.not1.i.i.i = icmp eq i32 %47, -1 br i1 %.not1.i.i.i, label %Vec_IntUniqueLookup.exit.thread.i.i, label %.lr.ph.i.preheader.i.i .lr.ph.i.preheader.i.i: ; preds = %Vec_IntUniqueHashKey.exit.i.i - %47 = shl nsw i32 %46, 1 - %48 = sext i32 %47 to i64 - %49 = getelementptr inbounds i32, ptr %.val46.i.i, i64 %48 - %bcmp.i53.i.i = tail call i32 @bcmp(ptr noundef nonnull readonly dereferenceable(8) %22, ptr noundef nonnull readonly dereferenceable(8) %49, i64 8) + %48 = shl nsw i32 %47, 1 + %49 = sext i32 %48 to i64 + %50 = getelementptr inbounds i32, ptr %.val46.i.i, i64 %49 + %bcmp.i53.i.i = tail call i32 @bcmp(ptr noundef nonnull readonly dereferenceable(8) %23, ptr noundef nonnull readonly dereferenceable(8) %50, i64 8) %.not14.i54.i.i = icmp eq i32 %bcmp.i53.i.i, 0 br i1 %.not14.i54.i.i, label %Vec_IntUniqueLookup.exit.i.i, label %.lr.ph.i.i .lr.ph.i.i.i: ; preds = %.lr.ph.i.i - %50 = shl nsw i32 %56, 1 - %51 = sext i32 %50 to i64 - %52 = getelementptr inbounds i32, ptr %.val46.i.i, i64 %51 - %bcmp.i.i.i = tail call i32 @bcmp(ptr noundef nonnull readonly dereferenceable(8) %22, ptr noundef nonnull readonly dereferenceable(8) %52, i64 8) + %51 = shl nsw i32 %57, 1 + %52 = sext i32 %51 to i64 + %53 = getelementptr inbounds i32, ptr %.val46.i.i, i64 %52 + %bcmp.i.i.i = tail call i32 @bcmp(ptr noundef nonnull readonly dereferenceable(8) %23, ptr noundef nonnull readonly dereferenceable(8) %53, i64 8) %.not14.i.i.i = icmp eq i32 %bcmp.i.i.i, 0 br i1 %.not14.i.i.i, label %Vec_IntUniqueLookup.exit.i.i, label %.lr.ph.i.i, !llvm.loop !52 .lr.ph.i.i: ; preds = %.lr.ph.i.preheader.i.i, %.lr.ph.i.i.i - %53 = phi i32 [ %56, %.lr.ph.i.i.i ], [ %46, %.lr.ph.i.preheader.i.i ] - %54 = sext i32 %53 to i64 - %55 = getelementptr inbounds i32, ptr %15, i64 %54 - %56 = load i32, ptr %55, align 4, !tbaa !12 - %.not.i.i.i = icmp eq i32 %56, -1 + %54 = phi i32 [ %57, %.lr.ph.i.i.i ], [ %47, %.lr.ph.i.preheader.i.i ] + %55 = sext i32 %54 to i64 + %56 = getelementptr inbounds i32, ptr %16, i64 %55 + %57 = load i32, ptr %56, align 4, !tbaa !12 + %.not.i.i.i = icmp eq i32 %57, -1 br i1 %.not.i.i.i, label %Vec_IntUniqueLookup.exit.thread.i.i.loopexit, label %.lr.ph.i.i.i, !llvm.loop !52 Vec_IntUniqueLookup.exit.thread.i.i.loopexit: ; preds = %.lr.ph.i.i - %57 = getelementptr inbounds i32, ptr %15, i64 %54 + %58 = getelementptr inbounds i32, ptr %16, i64 %55 br label %Vec_IntUniqueLookup.exit.thread.i.i Vec_IntUniqueLookup.exit.thread.i.i: ; preds = %Vec_IntUniqueLookup.exit.thread.i.i.loopexit, %Vec_IntUniqueHashKey.exit.i.i - %.013.lcssa.i49.i.i = phi ptr [ %45, %Vec_IntUniqueHashKey.exit.i.i ], [ %57, %Vec_IntUniqueLookup.exit.thread.i.i.loopexit ] - %58 = trunc nuw nsw i64 %indvars.iv.i.i to i32 - store i32 %58, ptr %.013.lcssa.i49.i.i, align 4, !tbaa !12 - %59 = add nsw i32 %.056.i.i, 1 + %.013.lcssa.i49.i.i = phi ptr [ %46, %Vec_IntUniqueHashKey.exit.i.i ], [ %58, %Vec_IntUniqueLookup.exit.thread.i.i.loopexit ] + %59 = trunc nuw nsw i64 %indvars.iv.i.i to i32 + store i32 %59, ptr %.013.lcssa.i49.i.i, align 4, !tbaa !12 + %60 = add nsw i32 %.056.i.i, 1 br label %Vec_IntUniqueLookup.exit.i.i Vec_IntUniqueLookup.exit.i.i: ; preds = %.lr.ph.i.i.i, %Vec_IntUniqueLookup.exit.thread.i.i, %.lr.ph.i.preheader.i.i - %60 = phi i32 [ %58, %Vec_IntUniqueLookup.exit.thread.i.i ], [ %46, %.lr.ph.i.preheader.i.i ], [ %56, %.lr.ph.i.i.i ] - %.1.i.i = phi i32 [ %59, %Vec_IntUniqueLookup.exit.thread.i.i ], [ %.056.i.i, %.lr.ph.i.preheader.i.i ], [ %.056.i.i, %.lr.ph.i.i.i ] - %61 = getelementptr inbounds nuw i32, ptr %18, i64 %indvars.iv.i.i - store i32 %60, ptr %61, align 4, !tbaa !12 + %61 = phi i32 [ %59, %Vec_IntUniqueLookup.exit.thread.i.i ], [ %47, %.lr.ph.i.preheader.i.i ], [ %57, %.lr.ph.i.i.i ] + %.1.i.i = phi i32 [ %60, %Vec_IntUniqueLookup.exit.thread.i.i ], [ %.056.i.i, %.lr.ph.i.preheader.i.i ], [ %.056.i.i, %.lr.ph.i.i.i ] + %62 = getelementptr inbounds nuw i32, ptr %19, i64 %indvars.iv.i.i + store i32 %61, ptr %62, align 4, !tbaa !12 %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 %Vec_IntUniqueCount.exit.loopexit.i, label %21, !llvm.loop !53 + br i1 %exitcond.not.i.i, label %Vec_IntUniqueCount.exit.loopexit.i, label %22, !llvm.loop !53 Vec_IntUniqueCount.exit.loopexit.i: ; preds = %Vec_IntUniqueLookup.exit.i.i - %62 = shl nsw i32 %.1.i.i, 1 + %63 = shl nsw i32 %.1.i.i, 1 br label %Vec_IntUniqueCount.exit.i -Vec_IntUniqueCount.exit.i: ; preds = %Vec_IntUniqueCount.exit.loopexit.i, %Abc_Base2Log.exit.i.i - %.0.lcssa.i.i = phi i32 [ 0, %Abc_Base2Log.exit.i.i ], [ %62, %Vec_IntUniqueCount.exit.loopexit.i ] - tail call void @free(ptr noundef %14) #29 +Vec_IntUniqueCount.exit.i: ; preds = %Vec_IntUniqueCount.exit.loopexit.i, %1 + %.0.lcssa.i.i = phi i32 [ 0, %1 ], [ %63, %Vec_IntUniqueCount.exit.loopexit.i ] tail call void @free(ptr noundef %15) #29 - %63 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #27 - %64 = getelementptr inbounds nuw i8, ptr %63, i64 4 - store i32 %2, ptr %64, align 4, !tbaa !27 - store i32 %2, ptr %63, align 8, !tbaa !23 - %65 = getelementptr inbounds nuw i8, ptr %63, i64 8 - store ptr %18, ptr %65, align 8, !tbaa !26 - %66 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #27 - %67 = add i32 %.0.lcssa.i.i, -1 - %or.cond.i.i = icmp ult i32 %67, 15 + tail call void @free(ptr noundef %16) #29 + %64 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #27 + %65 = getelementptr inbounds nuw i8, ptr %64, i64 4 + store i32 %3, ptr %65, align 4, !tbaa !27 + store i32 %3, ptr %64, align 8, !tbaa !23 + %66 = getelementptr inbounds nuw i8, ptr %64, i64 8 + store ptr %19, ptr %66, align 8, !tbaa !26 + %67 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #27 + %68 = add i32 %.0.lcssa.i.i, -1 + %or.cond.i.i = icmp ult i32 %68, 15 %spec.store.select.i.i = select i1 %or.cond.i.i, i32 16, i32 %.0.lcssa.i.i - %68 = getelementptr inbounds nuw i8, ptr %66, i64 4 - store i32 0, ptr %68, align 4, !tbaa !27 - store i32 %spec.store.select.i.i, ptr %66, align 8, !tbaa !23 + %69 = getelementptr inbounds nuw i8, ptr %67, i64 4 + store i32 0, ptr %69, align 4, !tbaa !27 + store i32 %spec.store.select.i.i, ptr %67, align 8, !tbaa !23 %.not.i.i = icmp eq i32 %spec.store.select.i.i, 0 - br i1 %.not.i.i, label %Vec_IntAlloc.exit.i, label %69 + br i1 %.not.i.i, label %Vec_IntAlloc.exit.i, label %70 -69: ; preds = %Vec_IntUniqueCount.exit.i - %70 = sext i32 %spec.store.select.i.i to i64 - %71 = shl nsw i64 %70, 2 - %72 = tail call noalias ptr @malloc(i64 noundef %71) #27 +70: ; preds = %Vec_IntUniqueCount.exit.i + %71 = sext i32 %spec.store.select.i.i to i64 + %72 = shl nsw i64 %71, 2 + %73 = tail call noalias ptr @malloc(i64 noundef %72) #27 br label %Vec_IntAlloc.exit.i -Vec_IntAlloc.exit.i: ; preds = %69, %Vec_IntUniqueCount.exit.i - %73 = phi ptr [ %72, %69 ], [ null, %Vec_IntUniqueCount.exit.i ] - %74 = getelementptr inbounds nuw i8, ptr %66, i64 8 - store ptr %73, ptr %74, align 8, !tbaa !26 - br i1 %19, label %.lr.ph.i, label %.critedge.i +Vec_IntAlloc.exit.i: ; preds = %70, %Vec_IntUniqueCount.exit.i + %74 = phi ptr [ %73, %70 ], [ null, %Vec_IntUniqueCount.exit.i ] + %75 = getelementptr inbounds nuw i8, ptr %67, i64 8 + store ptr %74, ptr %75, align 8, !tbaa !26 + br i1 %20, label %.lr.ph.i, label %.critedge.i .lr.ph.i: ; preds = %Vec_IntAlloc.exit.i - %75 = getelementptr i8, ptr %0, i64 8 - br label %76 + %76 = getelementptr i8, ptr %0, i64 8 + br label %77 -76: ; preds = %Vec_IntPushArray.exit.i, %.lr.ph.i - %.val36.i = phi i32 [ %2, %.lr.ph.i ], [ %.val.i, %Vec_IntPushArray.exit.i ] - %.pre.i.i32.i = phi ptr [ %73, %.lr.ph.i ], [ %.pre.i.i33.i, %Vec_IntPushArray.exit.i ] +77: ; preds = %Vec_IntPushArray.exit.i, %.lr.ph.i + %.val36.i = phi i32 [ %3, %.lr.ph.i ], [ %.val.i, %Vec_IntPushArray.exit.i ] + %.pre.i.i32.i = phi ptr [ %74, %.lr.ph.i ], [ %.pre.i.i33.i, %Vec_IntPushArray.exit.i ] %indvars.iv.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next.i, %Vec_IntPushArray.exit.i ] - %77 = getelementptr inbounds nuw i32, ptr %18, i64 %indvars.iv.i - %78 = load i32, ptr %77, align 4, !tbaa !12 - %79 = sext i32 %78 to i64 - %80 = icmp sgt i64 %indvars.iv.i, %79 - br i1 %80, label %Vec_IntPushArray.exit.i, label %81 + %78 = getelementptr inbounds nuw i32, ptr %19, i64 %indvars.iv.i + %79 = load i32, ptr %78, align 4, !tbaa !12 + %80 = sext i32 %79 to i64 + %81 = icmp sgt i64 %indvars.iv.i, %80 + br i1 %81, label %Vec_IntPushArray.exit.i, label %82 -81: ; preds = %76 - %.val14.i = load ptr, ptr %75, align 8, !tbaa !26 +82: ; preds = %77 + %.val14.i = load ptr, ptr %76, align 8, !tbaa !26 %.idx.i = shl nuw nsw i64 %indvars.iv.i, 3 - %82 = getelementptr inbounds nuw i8, ptr %.val14.i, i64 %.idx.i - br label %83 + %83 = getelementptr inbounds nuw i8, ptr %.val14.i, i64 %.idx.i + br label %84 -83: ; preds = %Vec_IntPush.exit.i.i, %81 - %84 = phi ptr [ %.pre.i.i32.i, %81 ], [ %.pre.i.i35.i, %Vec_IntPush.exit.i.i ] - %85 = phi i1 [ true, %81 ], [ false, %Vec_IntPush.exit.i.i ] - %indvars.iv.i16.i = phi i64 [ 0, %81 ], [ 1, %Vec_IntPush.exit.i.i ] - %86 = getelementptr inbounds nuw i32, ptr %82, i64 %indvars.iv.i16.i - %87 = load i32, ptr %86, align 4, !tbaa !12 - %88 = load i32, ptr %68, align 4, !tbaa !27 - %89 = load i32, ptr %66, align 8, !tbaa !23 - %90 = icmp eq i32 %88, %89 - br i1 %90, label %91, label %Vec_IntPush.exit.i.i - -91: ; preds = %83 - %92 = icmp slt i32 %88, 16 - br i1 %92, label %93, label %98 - -93: ; preds = %91 - %.not9.i.i.i.i = icmp eq ptr %84, null - br i1 %.not9.i.i.i.i, label %96, label %94 - -94: ; preds = %93 - %95 = tail call dereferenceable_or_null(64) ptr @realloc(ptr noundef nonnull %84, i64 noundef 64) #30 +84: ; preds = %Vec_IntPush.exit.i.i, %82 + %85 = phi ptr [ %.pre.i.i32.i, %82 ], [ %.pre.i.i35.i, %Vec_IntPush.exit.i.i ] + %86 = phi i1 [ true, %82 ], [ false, %Vec_IntPush.exit.i.i ] + %indvars.iv.i16.i = phi i64 [ 0, %82 ], [ 1, %Vec_IntPush.exit.i.i ] + %87 = getelementptr inbounds nuw i32, ptr %83, i64 %indvars.iv.i16.i + %88 = load i32, ptr %87, align 4, !tbaa !12 + %89 = load i32, ptr %69, align 4, !tbaa !27 + %90 = load i32, ptr %67, align 8, !tbaa !23 + %91 = icmp eq i32 %89, %90 + br i1 %91, label %92, label %Vec_IntPush.exit.i.i + +92: ; preds = %84 + %93 = icmp slt i32 %89, 16 + br i1 %93, label %94, label %99 + +94: ; preds = %92 + %.not9.i.i.i.i = icmp eq ptr %85, null + br i1 %.not9.i.i.i.i, label %97, label %95 + +95: ; preds = %94 + %96 = tail call dereferenceable_or_null(64) ptr @realloc(ptr noundef nonnull %85, i64 noundef 64) #30 br label %Vec_IntPush.exit.i.sink.split.i -96: ; preds = %93 - %97 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #27 +97: ; preds = %94 + %98 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #27 br label %Vec_IntPush.exit.i.sink.split.i -98: ; preds = %91 - %99 = shl nuw nsw i32 %88, 1 - %.not9.i9.i.i.i = icmp eq ptr %84, null - %100 = zext nneg i32 %99 to i64 - %101 = shl nuw nsw i64 %100, 2 - br i1 %.not9.i9.i.i.i, label %104, label %102 - -102: ; preds = %98 - %103 = tail call ptr @realloc(ptr noundef nonnull %84, i64 noundef %101) #30 +99: ; preds = %92 + %100 = shl nuw nsw i32 %89, 1 + %.not9.i9.i.i.i = icmp eq ptr %85, null + %101 = zext nneg i32 %100 to i64 + %102 = shl nuw nsw i64 %101, 2 + br i1 %.not9.i9.i.i.i, label %105, label %103 + +103: ; preds = %99 + %104 = tail call ptr @realloc(ptr noundef nonnull %85, i64 noundef %102) #30 br label %Vec_IntPush.exit.i.sink.split.i -104: ; preds = %98 - %105 = tail call noalias ptr @malloc(i64 noundef %101) #27 +105: ; preds = %99 + %106 = tail call noalias ptr @malloc(i64 noundef %102) #27 br label %Vec_IntPush.exit.i.sink.split.i -Vec_IntPush.exit.i.sink.split.i: ; preds = %104, %102, %96, %94 - %.sink50.i = phi ptr [ %95, %94 ], [ %97, %96 ], [ %103, %102 ], [ %105, %104 ] - %.sink.i = phi i32 [ 16, %94 ], [ 16, %96 ], [ %99, %102 ], [ %99, %104 ] - store ptr %.sink50.i, ptr %74, align 8, !tbaa !26 - store i32 %.sink.i, ptr %66, align 8, !tbaa !23 +Vec_IntPush.exit.i.sink.split.i: ; preds = %105, %103, %97, %95 + %.sink48.i = phi ptr [ %96, %95 ], [ %98, %97 ], [ %104, %103 ], [ %106, %105 ] + %.sink.i = phi i32 [ 16, %95 ], [ 16, %97 ], [ %100, %103 ], [ %100, %105 ] + store ptr %.sink48.i, ptr %75, align 8, !tbaa !26 + store i32 %.sink.i, ptr %67, align 8, !tbaa !23 br label %Vec_IntPush.exit.i.i -Vec_IntPush.exit.i.i: ; preds = %Vec_IntPush.exit.i.sink.split.i, %83 - %.pre.i.i35.i = phi ptr [ %84, %83 ], [ %.sink50.i, %Vec_IntPush.exit.i.sink.split.i ] - %106 = add nsw i32 %88, 1 - store i32 %106, ptr %68, align 4, !tbaa !27 - %107 = sext i32 %88 to i64 - %108 = getelementptr inbounds i32, ptr %.pre.i.i35.i, i64 %107 - store i32 %87, ptr %108, align 4, !tbaa !12 - br i1 %85, label %83, label %Vec_IntPushArray.exit.loopexit.i, !llvm.loop !54 +Vec_IntPush.exit.i.i: ; preds = %Vec_IntPush.exit.i.sink.split.i, %84 + %.pre.i.i35.i = phi ptr [ %85, %84 ], [ %.sink48.i, %Vec_IntPush.exit.i.sink.split.i ] + %107 = add nsw i32 %89, 1 + store i32 %107, ptr %69, align 4, !tbaa !27 + %108 = sext i32 %89 to i64 + %109 = getelementptr inbounds i32, ptr %.pre.i.i35.i, i64 %108 + store i32 %88, ptr %109, align 4, !tbaa !12 + br i1 %86, label %84, label %Vec_IntPushArray.exit.loopexit.i, !llvm.loop !54 Vec_IntPushArray.exit.loopexit.i: ; preds = %Vec_IntPush.exit.i.i - %.val.pre.i = load i32, ptr %64, align 4, !tbaa !27 + %.val.pre.i = load i32, ptr %65, align 4, !tbaa !27 br label %Vec_IntPushArray.exit.i -Vec_IntPushArray.exit.i: ; preds = %Vec_IntPushArray.exit.loopexit.i, %76 - %.val.i = phi i32 [ %.val.pre.i, %Vec_IntPushArray.exit.loopexit.i ], [ %.val36.i, %76 ] - %.pre.i.i33.i = phi ptr [ %.pre.i.i35.i, %Vec_IntPushArray.exit.loopexit.i ], [ %.pre.i.i32.i, %76 ] +Vec_IntPushArray.exit.i: ; preds = %Vec_IntPushArray.exit.loopexit.i, %77 + %.val.i = phi i32 [ %.val.pre.i, %Vec_IntPushArray.exit.loopexit.i ], [ %.val36.i, %77 ] + %.pre.i.i33.i = phi ptr [ %.pre.i.i35.i, %Vec_IntPushArray.exit.loopexit.i ], [ %.pre.i.i32.i, %77 ] %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 - %109 = sext i32 %.val.i to i64 - %110 = icmp slt i64 %indvars.iv.next.i, %109 - br i1 %110, label %76, label %.critedge.i, !llvm.loop !55 + %110 = sext i32 %.val.i to i64 + %111 = icmp slt i64 %indvars.iv.next.i, %110 + br i1 %111, label %77, label %.critedge.i, !llvm.loop !55 .critedge.i: ; preds = %Vec_IntPushArray.exit.i, %Vec_IntAlloc.exit.i - %.not.i17.i = icmp eq ptr %18, null - br i1 %.not.i17.i, label %Vec_IntUniqifyHash.exit, label %111 + %.not.i17.i = icmp eq ptr %19, null + br i1 %.not.i17.i, label %Vec_IntUniqifyHash.exit, label %112 -111: ; preds = %.critedge.i - tail call void @free(ptr noundef nonnull %18) #29 +112: ; preds = %.critedge.i + tail call void @free(ptr noundef nonnull %19) #29 br label %Vec_IntUniqifyHash.exit -Vec_IntUniqifyHash.exit: ; preds = %.critedge.i, %111 - tail call void @free(ptr noundef nonnull %63) #29 - %112 = load i32, ptr %1, align 4, !tbaa !27 - %113 = sdiv i32 %112, 2 - store i32 %113, ptr %1, align 4, !tbaa !27 - %114 = load i32, ptr %0, align 8, !tbaa !23 - %115 = sdiv i32 %114, 2 - store i32 %115, ptr %0, align 8, !tbaa !23 - %116 = load i32, ptr %68, align 4, !tbaa !27 - %117 = sdiv i32 %116, 2 - store i32 %117, ptr %68, align 4, !tbaa !27 - %118 = load i32, ptr %66, align 8, !tbaa !23 - %119 = sdiv i32 %118, 2 - store i32 %119, ptr %66, align 8, !tbaa !23 - ret ptr %66 +Vec_IntUniqifyHash.exit: ; preds = %.critedge.i, %112 + tail call void @free(ptr noundef nonnull %64) #29 + %113 = load i32, ptr %2, align 4, !tbaa !27 + %114 = sdiv i32 %113, 2 + store i32 %114, ptr %2, align 4, !tbaa !27 + %115 = load i32, ptr %0, align 8, !tbaa !23 + %116 = sdiv i32 %115, 2 + store i32 %116, ptr %0, align 8, !tbaa !23 + %117 = load i32, ptr %69, align 4, !tbaa !27 + %118 = sdiv i32 %117, 2 + store i32 %118, ptr %69, align 4, !tbaa !27 + %119 = load i32, ptr %67, align 8, !tbaa !23 + %120 = sdiv i32 %119, 2 + store i32 %120, ptr %67, align 8, !tbaa !23 + ret ptr %67 } ; Function Attrs: nounwind uwtable diff --git a/bench/abc/optimized/giaSatEdge.ll b/bench/abc/optimized/giaSatEdge.ll index 374bb4227d5..a6f994c8e99 100644 --- a/bench/abc/optimized/giaSatEdge.ll +++ b/bench/abc/optimized/giaSatEdge.ll @@ -801,132 +801,123 @@ declare i32 @Gia_ManLutLevel(ptr noundef, ptr noundef) local_unnamed_addr #1 ; Function Attrs: nounwind uwtable define noundef ptr @Seg_ManAlloc(ptr noundef %0, i32 noundef %1) local_unnamed_addr #0 { - %3 = tail call noalias dereferenceable_or_null(120) ptr @calloc(i64 noundef 1, i64 noundef 120) #19 - %4 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #16 - %5 = getelementptr inbounds nuw i8, ptr %4, i64 4 - store i32 0, ptr %5, align 4, !tbaa !3 - store i32 1000, ptr %4, align 8, !tbaa !10 - %6 = tail call noalias dereferenceable_or_null(4000) ptr @malloc(i64 noundef 4000) #16 - %7 = getelementptr inbounds nuw i8, ptr %4, i64 8 - store ptr %6, ptr %7, align 8, !tbaa !11 - %8 = getelementptr inbounds nuw i8, ptr %3, i64 56 - store ptr %4, ptr %8, align 8, !tbaa !55 - %9 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #16 - %10 = getelementptr inbounds nuw i8, ptr %9, i64 4 - store i32 0, ptr %10, align 4, !tbaa !3 - store i32 1000, ptr %9, align 8, !tbaa !10 - %11 = tail call noalias dereferenceable_or_null(4000) ptr @malloc(i64 noundef 4000) #16 - %12 = getelementptr inbounds nuw i8, ptr %9, i64 8 - store ptr %11, ptr %12, align 8, !tbaa !11 - %13 = getelementptr inbounds nuw i8, ptr %3, i64 64 - store ptr %9, ptr %13, align 8, !tbaa !56 - %14 = tail call ptr @Seg_ManCountIntEdges(ptr noundef %0, ptr noundef nonnull %4, ptr noundef nonnull %9, i32 noundef %1) - %15 = getelementptr inbounds nuw i8, ptr %3, i64 72 - store ptr %14, ptr %15, align 8, !tbaa !57 - %16 = getelementptr i8, ptr %14, i64 4 - %.val = load i32, ptr %16, align 4, !tbaa !3 - %17 = sdiv i32 %.val, 2 - %18 = getelementptr inbounds nuw i8, ptr %3, i64 8 - store i32 %17, ptr %18, align 8, !tbaa !58 - %19 = icmp ult i32 %17, 2 - br i1 %19, label %Abc_Base2Log.exit, label %20 - -20: ; preds = %2 - %21 = add nsw i32 %17, -1 - %.not11.i = icmp eq i32 %21, 0 - br i1 %.not11.i, label %Abc_Base2Log.exit, label %.lr.ph.preheader.i - -.lr.ph.preheader.i: ; preds = %20 - %22 = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %21, i1 true) - %23 = sub nuw nsw i32 32, %22 - br label %Abc_Base2Log.exit - -Abc_Base2Log.exit: ; preds = %2, %20, %.lr.ph.preheader.i - %.09.i = phi i32 [ %17, %2 ], [ 0, %20 ], [ %23, %.lr.ph.preheader.i ] - %24 = getelementptr inbounds nuw i8, ptr %3, i64 12 - store i32 %.09.i, ptr %24, align 4, !tbaa !59 - %25 = shl nuw i32 1, %.09.i - %26 = getelementptr inbounds nuw i8, ptr %3, i64 16 - store i32 %25, ptr %26, align 8, !tbaa !60 - %27 = tail call ptr @sat_solver_new() #17 - store ptr %27, ptr %3, align 8, !tbaa !61 - tail call void @sat_solver_setnvars(ptr noundef %27, i32 noundef %17) #17 - %28 = tail call i32 @sat_solver_nvars(ptr noundef %27) #17 - %29 = getelementptr inbounds nuw i8, ptr %3, i64 20 - store i32 %28, ptr %29, align 4, !tbaa !62 - %30 = load i32, ptr %27, align 8, !tbaa !63 - %31 = getelementptr inbounds nuw i8, ptr %27, i64 96 - store i32 %30, ptr %31, align 8, !tbaa !75 - %32 = getelementptr inbounds nuw i8, ptr %27, i64 8 - %33 = load i32, ptr %32, align 8, !tbaa !76 - %34 = getelementptr inbounds nuw i8, ptr %27, i64 100 - store i32 %33, ptr %34, align 4, !tbaa !77 - %35 = getelementptr inbounds nuw i8, ptr %27, i64 16 - %36 = load i32, ptr %35, align 8, !tbaa !32 - %37 = getelementptr inbounds nuw i8, ptr %27, i64 32 - store i32 %36, ptr %37, align 8, !tbaa !32 - %38 = getelementptr inbounds nuw i8, ptr %27, i64 20 - %39 = load i32, ptr %38, align 4, !tbaa !32 - %40 = getelementptr inbounds nuw i8, ptr %27, i64 36 - store i32 %39, ptr %40, align 4, !tbaa !32 - %41 = getelementptr inbounds nuw i8, ptr %27, i64 40 - %42 = load i32, ptr %41, align 8, !tbaa !32 - %43 = getelementptr inbounds nuw i8, ptr %27, i64 48 - %44 = load i32, ptr %43, align 8, !tbaa !78 - %45 = shl i32 %42, %44 - %46 = getelementptr inbounds nuw i8, ptr %27, i64 64 - %47 = load ptr, ptr %46, align 8, !tbaa !79 - %48 = sext i32 %42 to i64 - %49 = getelementptr inbounds ptr, ptr %47, i64 %48 - %50 = load ptr, ptr %49, align 8, !tbaa !80 - %.val.i.i.i = load i32, ptr %50, align 4, !tbaa !32 - %51 = or i32 %.val.i.i.i, %45 - %52 = getelementptr inbounds nuw i8, ptr %27, i64 24 - store i32 %51, ptr %52, align 8, !tbaa !32 - %53 = getelementptr inbounds nuw i8, ptr %27, i64 44 - %54 = load i32, ptr %53, align 4, !tbaa !32 - %55 = shl i32 %54, %44 - %56 = sext i32 %54 to i64 - %57 = getelementptr inbounds ptr, ptr %47, i64 %56 - %58 = load ptr, ptr %57, align 8, !tbaa !80 - %.val.i8.i.i = load i32, ptr %58, align 4, !tbaa !32 - %59 = or i32 %.val.i8.i.i, %55 - %60 = getelementptr inbounds nuw i8, ptr %27, i64 28 - store i32 %59, ptr %60, align 4, !tbaa !32 - %61 = getelementptr inbounds nuw i8, ptr %27, i64 152 - %62 = load ptr, ptr %61, align 8, !tbaa !81 - %.not.i = icmp eq ptr %62, null - br i1 %.not.i, label %sat_solver_bookmark.exit, label %63 - -63: ; preds = %Abc_Base2Log.exit - %64 = getelementptr inbounds nuw i8, ptr %27, i64 120 - %65 = load i64, ptr %64, align 8, !tbaa !82 - %66 = getelementptr inbounds nuw i8, ptr %27, i64 128 - store i64 %65, ptr %66, align 8, !tbaa !83 - %67 = getelementptr inbounds nuw i8, ptr %27, i64 144 - %68 = load ptr, ptr %67, align 8, !tbaa !84 - %69 = sext i32 %30 to i64 - %70 = shl nsw i64 %69, 3 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %62, ptr align 8 %68, i64 %70, i1 false) +Abc_Base2Log.exit: + %2 = tail call noalias dereferenceable_or_null(120) ptr @calloc(i64 noundef 1, i64 noundef 120) #19 + %3 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #16 + %4 = getelementptr inbounds nuw i8, ptr %3, i64 4 + store i32 0, ptr %4, align 4, !tbaa !3 + store i32 1000, ptr %3, align 8, !tbaa !10 + %5 = tail call noalias dereferenceable_or_null(4000) ptr @malloc(i64 noundef 4000) #16 + %6 = getelementptr inbounds nuw i8, ptr %3, i64 8 + store ptr %5, ptr %6, align 8, !tbaa !11 + %7 = getelementptr inbounds nuw i8, ptr %2, i64 56 + store ptr %3, ptr %7, align 8, !tbaa !55 + %8 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #16 + %9 = getelementptr inbounds nuw i8, ptr %8, i64 4 + store i32 0, ptr %9, align 4, !tbaa !3 + store i32 1000, ptr %8, align 8, !tbaa !10 + %10 = tail call noalias dereferenceable_or_null(4000) ptr @malloc(i64 noundef 4000) #16 + %11 = getelementptr inbounds nuw i8, ptr %8, i64 8 + store ptr %10, ptr %11, align 8, !tbaa !11 + %12 = getelementptr inbounds nuw i8, ptr %2, i64 64 + store ptr %8, ptr %12, align 8, !tbaa !56 + %13 = tail call ptr @Seg_ManCountIntEdges(ptr noundef %0, ptr noundef nonnull %3, ptr noundef nonnull %8, i32 noundef %1) + %14 = getelementptr inbounds nuw i8, ptr %2, i64 72 + store ptr %13, ptr %14, align 8, !tbaa !57 + %15 = getelementptr i8, ptr %13, i64 4 + %.val = load i32, ptr %15, align 4, !tbaa !3 + %16 = sdiv i32 %.val, 2 + %17 = getelementptr inbounds nuw i8, ptr %2, i64 8 + store i32 %16, ptr %17, align 8, !tbaa !58 + %18 = icmp ult i32 %16, 2 + %19 = add nsw i32 %16, -1 + %20 = tail call range(i32 0, 33) i32 @llvm.ctlz.i32(i32 %19, i1 true) + %21 = sub nuw nsw i32 32, %20 + %.09.i = select i1 %18, i32 %16, i32 %21 + %22 = getelementptr inbounds nuw i8, ptr %2, i64 12 + store i32 %.09.i, ptr %22, align 4, !tbaa !59 + %23 = shl nuw i32 1, %.09.i + %24 = getelementptr inbounds nuw i8, ptr %2, i64 16 + store i32 %23, ptr %24, align 8, !tbaa !60 + %25 = tail call ptr @sat_solver_new() #17 + store ptr %25, ptr %2, align 8, !tbaa !61 + tail call void @sat_solver_setnvars(ptr noundef %25, i32 noundef %16) #17 + %26 = tail call i32 @sat_solver_nvars(ptr noundef %25) #17 + %27 = getelementptr inbounds nuw i8, ptr %2, i64 20 + store i32 %26, ptr %27, align 4, !tbaa !62 + %28 = load i32, ptr %25, align 8, !tbaa !63 + %29 = getelementptr inbounds nuw i8, ptr %25, i64 96 + store i32 %28, ptr %29, align 8, !tbaa !75 + %30 = getelementptr inbounds nuw i8, ptr %25, i64 8 + %31 = load i32, ptr %30, align 8, !tbaa !76 + %32 = getelementptr inbounds nuw i8, ptr %25, i64 100 + store i32 %31, ptr %32, align 4, !tbaa !77 + %33 = getelementptr inbounds nuw i8, ptr %25, i64 16 + %34 = load i32, ptr %33, align 8, !tbaa !32 + %35 = getelementptr inbounds nuw i8, ptr %25, i64 32 + store i32 %34, ptr %35, align 8, !tbaa !32 + %36 = getelementptr inbounds nuw i8, ptr %25, i64 20 + %37 = load i32, ptr %36, align 4, !tbaa !32 + %38 = getelementptr inbounds nuw i8, ptr %25, i64 36 + store i32 %37, ptr %38, align 4, !tbaa !32 + %39 = getelementptr inbounds nuw i8, ptr %25, i64 40 + %40 = load i32, ptr %39, align 8, !tbaa !32 + %41 = getelementptr inbounds nuw i8, ptr %25, i64 48 + %42 = load i32, ptr %41, align 8, !tbaa !78 + %43 = shl i32 %40, %42 + %44 = getelementptr inbounds nuw i8, ptr %25, i64 64 + %45 = load ptr, ptr %44, align 8, !tbaa !79 + %46 = sext i32 %40 to i64 + %47 = getelementptr inbounds ptr, ptr %45, i64 %46 + %48 = load ptr, ptr %47, align 8, !tbaa !80 + %.val.i.i.i = load i32, ptr %48, align 4, !tbaa !32 + %49 = or i32 %.val.i.i.i, %43 + %50 = getelementptr inbounds nuw i8, ptr %25, i64 24 + store i32 %49, ptr %50, align 8, !tbaa !32 + %51 = getelementptr inbounds nuw i8, ptr %25, i64 44 + %52 = load i32, ptr %51, align 4, !tbaa !32 + %53 = shl i32 %52, %42 + %54 = sext i32 %52 to i64 + %55 = getelementptr inbounds ptr, ptr %45, i64 %54 + %56 = load ptr, ptr %55, align 8, !tbaa !80 + %.val.i8.i.i = load i32, ptr %56, align 4, !tbaa !32 + %57 = or i32 %.val.i8.i.i, %53 + %58 = getelementptr inbounds nuw i8, ptr %25, i64 28 + store i32 %57, ptr %58, align 4, !tbaa !32 + %59 = getelementptr inbounds nuw i8, ptr %25, i64 152 + %60 = load ptr, ptr %59, align 8, !tbaa !81 + %.not.i = icmp eq ptr %60, null + br i1 %.not.i, label %sat_solver_bookmark.exit, label %61 + +61: ; preds = %Abc_Base2Log.exit + %62 = getelementptr inbounds nuw i8, ptr %25, i64 120 + %63 = load i64, ptr %62, align 8, !tbaa !82 + %64 = getelementptr inbounds nuw i8, ptr %25, i64 128 + store i64 %63, ptr %64, align 8, !tbaa !83 + %65 = getelementptr inbounds nuw i8, ptr %25, i64 144 + %66 = load ptr, ptr %65, align 8, !tbaa !84 + %67 = sext i32 %28 to i64 + %68 = shl nsw i64 %67, 3 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %60, ptr align 8 %66, i64 %68, i1 false) br label %sat_solver_bookmark.exit -sat_solver_bookmark.exit: ; preds = %Abc_Base2Log.exit, %63 - %71 = getelementptr inbounds nuw i8, ptr %3, i64 48 - store ptr %0, ptr %71, align 8, !tbaa !47 +sat_solver_bookmark.exit: ; preds = %Abc_Base2Log.exit, %61 + %69 = getelementptr inbounds nuw i8, ptr %2, i64 48 + store ptr %0, ptr %69, align 8, !tbaa !47 %calloc = tail call dereferenceable_or_null(16) ptr @calloc(i64 1, i64 16) - %72 = getelementptr inbounds nuw i8, ptr %3, i64 80 - store ptr %calloc, ptr %72, align 8, !tbaa !44 - %calloc31 = tail call dereferenceable_or_null(16) ptr @calloc(i64 1, i64 16) - %73 = getelementptr inbounds nuw i8, ptr %3, i64 88 - store ptr %calloc31, ptr %73, align 8, !tbaa !48 - %calloc32 = tail call dereferenceable_or_null(16) ptr @calloc(i64 1, i64 16) - %74 = getelementptr inbounds nuw i8, ptr %3, i64 96 - store ptr %calloc32, ptr %74, align 8, !tbaa !85 - %75 = tail call i32 @Seg_ManCountIntLevels(ptr noundef nonnull %3, i32 noundef %28) - %76 = load ptr, ptr %3, align 8, !tbaa !61 - tail call void @sat_solver_setnvars(ptr noundef %76, i32 noundef %75) #17 + %70 = getelementptr inbounds nuw i8, ptr %2, i64 80 + store ptr %calloc, ptr %70, align 8, !tbaa !44 + %calloc29 = tail call dereferenceable_or_null(16) ptr @calloc(i64 1, i64 16) + %71 = getelementptr inbounds nuw i8, ptr %2, i64 88 + store ptr %calloc29, ptr %71, align 8, !tbaa !48 + %calloc30 = tail call dereferenceable_or_null(16) ptr @calloc(i64 1, i64 16) + %72 = getelementptr inbounds nuw i8, ptr %2, i64 96 + store ptr %calloc30, ptr %72, align 8, !tbaa !85 + %73 = tail call i32 @Seg_ManCountIntLevels(ptr noundef nonnull %2, i32 noundef %26) + %74 = load ptr, ptr %2, align 8, !tbaa !61 + tail call void @sat_solver_setnvars(ptr noundef %74, i32 noundef %73) #17 tail call void @Gia_ManFillValue(ptr noundef %0) #17 - ret ptr %3 + ret ptr %2 } ; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite) diff --git a/bench/abc/optimized/ifDec16.ll b/bench/abc/optimized/ifDec16.ll index 7232dc19792..2bb37649bef 100644 --- a/bench/abc/optimized/ifDec16.ll +++ b/bench/abc/optimized/ifDec16.ll @@ -2087,67 +2087,63 @@ define i32 @If_CluSemiCanonicize(ptr noundef captures(none) %0, i32 noundef %1, br i1 %exitcond54.not.i, label %If_CluChangePhase.exit, label %27, !llvm.loop !87 35: ; preds = %17 - %36 = add nsw i64 %indvars.iv, -6 - %37 = trunc nsw i64 %36 to i32 - %38 = shl nuw i32 1, %37 br i1 %11, label %.preheader.lr.ph.i, label %If_CluChangePhase.exit .preheader.lr.ph.i: ; preds = %35 - %39 = icmp eq i64 %36, 31 - %40 = shl i32 2, %37 - %41 = sext i32 %40 to i64 - br i1 %39, label %If_CluChangePhase.exit, label %.preheader.us.preheader.i - -.preheader.us.preheader.i: ; preds = %.preheader.lr.ph.i - %42 = sext i32 %38 to i64 + %36 = trunc i64 %indvars.iv to i32 + %37 = add i32 %36, -6 + %38 = shl nuw i32 1, %37 + %39 = shl i32 2, %37 + %40 = sext i32 %39 to i64 + %41 = sext i32 %38 to i64 %smax.i = tail call i32 @llvm.smax.i32(i32 %38, i32 1) %wide.trip.count.i = zext nneg i32 %smax.i to i64 br label %.preheader.us.i -.preheader.us.i: ; preds = %._crit_edge.us.i, %.preheader.us.preheader.i - %.045.us.i = phi ptr [ %47, %._crit_edge.us.i ], [ %0, %.preheader.us.preheader.i ] - %.03644.us.i = phi i32 [ %48, %._crit_edge.us.i ], [ 0, %.preheader.us.preheader.i ] - %invariant.gep.i = getelementptr i64, ptr %.045.us.i, i64 %42 - br label %43 - -43: ; preds = %43, %.preheader.us.i - %indvars.iv.i = phi i64 [ 0, %.preheader.us.i ], [ %indvars.iv.next.i, %43 ] - %44 = getelementptr inbounds nuw i64, ptr %.045.us.i, i64 %indvars.iv.i - %45 = load i64, ptr %44, align 8, !tbaa !16 +.preheader.us.i: ; preds = %._crit_edge.us.i, %.preheader.lr.ph.i + %.045.us.i = phi ptr [ %46, %._crit_edge.us.i ], [ %0, %.preheader.lr.ph.i ] + %.03644.us.i = phi i32 [ %47, %._crit_edge.us.i ], [ 0, %.preheader.lr.ph.i ] + %invariant.gep.i = getelementptr i64, ptr %.045.us.i, i64 %41 + br label %42 + +42: ; preds = %42, %.preheader.us.i + %indvars.iv.i = phi i64 [ 0, %.preheader.us.i ], [ %indvars.iv.next.i, %42 ] + %43 = getelementptr inbounds nuw i64, ptr %.045.us.i, i64 %indvars.iv.i + %44 = load i64, ptr %43, align 8, !tbaa !16 %gep.i = getelementptr i64, ptr %invariant.gep.i, i64 %indvars.iv.i - %46 = load i64, ptr %gep.i, align 8, !tbaa !16 - store i64 %46, ptr %44, align 8, !tbaa !16 - store i64 %45, ptr %gep.i, align 8, !tbaa !16 + %45 = load i64, ptr %gep.i, align 8, !tbaa !16 + store i64 %45, ptr %43, align 8, !tbaa !16 + store i64 %44, ptr %gep.i, align 8, !tbaa !16 %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.us.i, label %43, !llvm.loop !88 + br i1 %exitcond.not.i, label %._crit_edge.us.i, label %42, !llvm.loop !88 -._crit_edge.us.i: ; preds = %43 - %47 = getelementptr inbounds i64, ptr %.045.us.i, i64 %41 - %48 = add nsw i32 %.03644.us.i, %40 - %49 = icmp slt i32 %48, %10 - br i1 %49, label %.preheader.us.i, label %If_CluChangePhase.exit, !llvm.loop !89 +._crit_edge.us.i: ; preds = %42 + %46 = getelementptr inbounds i64, ptr %.045.us.i, i64 %40 + %47 = add nsw i32 %.03644.us.i, %39 + %48 = icmp slt i32 %47, %10 + br i1 %48, label %.preheader.us.i, label %If_CluChangePhase.exit, !llvm.loop !89 -If_CluChangePhase.exit: ; preds = %._crit_edge.us.i, %27, %.preheader.lr.ph.i, %35, %22, %12 - %.167 = phi i32 [ %.066101, %12 ], [ %20, %22 ], [ %20, %35 ], [ %20, %.preheader.lr.ph.i ], [ %20, %27 ], [ %20, %._crit_edge.us.i ] +If_CluChangePhase.exit: ; preds = %._crit_edge.us.i, %27, %35, %22, %12 + %.167 = phi i32 [ %.066101, %12 ], [ %20, %22 ], [ %20, %35 ], [ %20, %27 ], [ %20, %._crit_edge.us.i ] %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 %.lr.ph104.preheader, label %12, !llvm.loop !96 .preheader: ; preds = %.lr.ph104, %3 %.066.lcssa145 = phi i32 [ 0, %3 ], [ %.167, %.lr.ph104 ] - %50 = icmp sgt i32 %1, 1 - %51 = icmp slt i32 %1, 7 - %52 = add nsw i32 %1, -6 - %53 = shl nuw i32 1, %52 - %54 = select i1 %51, i32 1, i32 %53 - %55 = icmp slt i32 %54, 1 - %56 = zext nneg i32 %54 to i64 - br i1 %50, label %.lr.ph110.us.preheader, label %If_CluCopy.exit + %49 = icmp sgt i32 %1, 1 + %50 = icmp slt i32 %1, 7 + %51 = add nsw i32 %1, -6 + %52 = shl nuw i32 1, %51 + %53 = select i1 %50, i32 1, i32 %52 + %54 = icmp slt i32 %53, 1 + %55 = zext nneg i32 %53 to i64 + br i1 %49, label %.lr.ph110.us.preheader, label %If_CluCopy.exit .lr.ph110.us.preheader: ; preds = %.preheader - %57 = add nsw i32 %1, -1 - %wide.trip.count132 = zext i32 %57 to i64 + %56 = add nsw i32 %1, -1 + %wide.trip.count132 = zext i32 %56 to i64 br label %.lr.ph110.us .lr.ph110.us: ; preds = %.lr.ph110.us.backedge, %.lr.ph110.us.preheader @@ -2157,174 +2153,174 @@ If_CluChangePhase.exit: ; preds = %._crit_edge.us.i, % %.169106.us = phi ptr [ %0, %.lr.ph110.us.preheader ], [ %.270.us, %.lr.ph110.us.backedge ] %.172105.us = phi ptr [ %4, %.lr.ph110.us.preheader ], [ %.273.us, %.lr.ph110.us.backedge ] %.idx142 = shl nuw nsw i64 %indvars.iv129, 3 - %58 = getelementptr inbounds nuw i8, ptr %5, i64 %.idx142 - %59 = load i32, ptr %58, align 8, !tbaa !6 + %57 = getelementptr inbounds nuw i8, ptr %5, i64 %.idx142 + %58 = load i32, ptr %57, align 8, !tbaa !6 %indvars.iv.next130 = add nuw nsw i64 %indvars.iv129, 1 %.idx143 = shl nuw nsw i64 %indvars.iv.next130, 3 - %60 = getelementptr inbounds nuw i8, ptr %5, i64 %.idx143 - %61 = load i32, ptr %60, align 8, !tbaa !6 - %.not79.us = icmp sgt i32 %59, %61 - br i1 %.not79.us, label %62, label %If_CluSwapAdjacent.exit.us - -62: ; preds = %.lr.ph110.us - %63 = add nsw i32 %.1109.us, 1 - %64 = getelementptr inbounds nuw i32, ptr %2, i64 %indvars.iv129 - %65 = load i32, ptr %64, align 4, !tbaa !6 - %66 = getelementptr inbounds nuw i32, ptr %2, i64 %indvars.iv.next130 - %67 = load i32, ptr %66, align 4, !tbaa !6 - store i32 %67, ptr %64, align 4, !tbaa !6 - store i32 %65, ptr %66, align 4, !tbaa !6 - store i32 %61, ptr %58, align 8, !tbaa !6 - store i32 %59, ptr %60, align 8, !tbaa !6 - %68 = getelementptr inbounds nuw i8, ptr %58, i64 4 - %69 = load i32, ptr %68, align 4, !tbaa !6 - %70 = getelementptr inbounds nuw i8, ptr %60, i64 4 - %71 = load i32, ptr %70, align 4, !tbaa !6 - store i32 %71, ptr %68, align 4, !tbaa !6 - store i32 %69, ptr %70, align 4, !tbaa !6 - %72 = icmp samesign ult i64 %indvars.iv129, 5 - br i1 %72, label %112, label %73 - -73: ; preds = %62 + %59 = getelementptr inbounds nuw i8, ptr %5, i64 %.idx143 + %60 = load i32, ptr %59, align 8, !tbaa !6 + %.not79.us = icmp sgt i32 %58, %60 + br i1 %.not79.us, label %61, label %If_CluSwapAdjacent.exit.us + +61: ; preds = %.lr.ph110.us + %62 = add nsw i32 %.1109.us, 1 + %63 = getelementptr inbounds nuw i32, ptr %2, i64 %indvars.iv129 + %64 = load i32, ptr %63, align 4, !tbaa !6 + %65 = getelementptr inbounds nuw i32, ptr %2, i64 %indvars.iv.next130 + %66 = load i32, ptr %65, align 4, !tbaa !6 + store i32 %66, ptr %63, align 4, !tbaa !6 + store i32 %64, ptr %65, align 4, !tbaa !6 + store i32 %60, ptr %57, align 8, !tbaa !6 + store i32 %58, ptr %59, align 8, !tbaa !6 + %67 = getelementptr inbounds nuw i8, ptr %57, i64 4 + %68 = load i32, ptr %67, align 4, !tbaa !6 + %69 = getelementptr inbounds nuw i8, ptr %59, i64 4 + %70 = load i32, ptr %69, align 4, !tbaa !6 + store i32 %70, ptr %67, align 4, !tbaa !6 + store i32 %68, ptr %69, align 4, !tbaa !6 + %71 = icmp samesign ult i64 %indvars.iv129, 5 + br i1 %71, label %111, label %72 + +72: ; preds = %61 %.not.i81.us = icmp eq i64 %indvars.iv129, 5 - br i1 %.not.i81.us, label %.preheader.i.us, label %74 + br i1 %.not.i81.us, label %.preheader.i.us, label %73 -74: ; preds = %73 - %75 = add nsw i64 %indvars.iv129, -6 - %76 = trunc nsw i64 %75 to i32 - %77 = shl nuw i32 1, %76 - br i1 %55, label %If_CluSwapAdjacent.exit.us, label %.preheader87.lr.ph.i.us +73: ; preds = %72 + %74 = add nsw i64 %indvars.iv129, -6 + %75 = trunc nsw i64 %74 to i32 + %76 = shl nuw i32 1, %75 + br i1 %54, label %If_CluSwapAdjacent.exit.us, label %.preheader87.lr.ph.i.us -.preheader87.lr.ph.i.us: ; preds = %74 - %78 = icmp eq i64 %75, 31 - %79 = shl i32 4, %76 - %80 = sext i32 %79 to i64 - br i1 %78, label %If_CluSwapAdjacent.exit.us, label %.preheader87.us.preheader.i.us +.preheader87.lr.ph.i.us: ; preds = %73 + %77 = icmp eq i64 %74, 31 + %78 = shl i32 4, %75 + %79 = sext i32 %78 to i64 + br i1 %77, label %If_CluSwapAdjacent.exit.us, label %.preheader87.us.preheader.i.us .preheader87.us.preheader.i.us: ; preds = %.preheader87.lr.ph.i.us - %81 = shl i32 3, %76 - %82 = shl i32 2, %76 - %smax.i82.us = tail call i32 @llvm.smax.i32(i32 %77, i32 1) - %83 = sext i32 %82 to i64 - %84 = sext i32 %77 to i64 - %85 = sext i32 %81 to i64 + %80 = shl i32 3, %75 + %81 = shl i32 2, %75 + %smax.i82.us = tail call i32 @llvm.smax.i32(i32 %76, i32 1) + %82 = sext i32 %81 to i64 + %83 = sext i32 %76 to i64 + %84 = sext i32 %80 to i64 %wide.trip.count.i83.us = zext nneg i32 %smax.i82.us to i64 - %86 = shl nuw nsw i64 %wide.trip.count.i83.us, 3 + %85 = shl nuw nsw i64 %wide.trip.count.i83.us, 3 br label %.lr.ph.us.preheader.i.us .lr.ph.us.preheader.i.us: ; preds = %._crit_edge.us.i89.us, %.preheader87.us.preheader.i.us - %.098.us.i.us = phi ptr [ %95, %._crit_edge.us.i89.us ], [ %.172105.us, %.preheader87.us.preheader.i.us ] - %.07797.us.i.us = phi ptr [ %94, %._crit_edge.us.i89.us ], [ %.169106.us, %.preheader87.us.preheader.i.us ] - %.07996.us.i.us = phi i32 [ %96, %._crit_edge.us.i89.us ], [ 0, %.preheader87.us.preheader.i.us ] - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %.098.us.i.us, ptr noundef nonnull align 8 dereferenceable(1) %.07797.us.i.us, i64 %86, i1 false), !tbaa !16 - %invariant.gep.i87.us = getelementptr i64, ptr %.07797.us.i.us, i64 %83 - %invariant.gep177.i.us = getelementptr i64, ptr %.098.us.i.us, i64 %84 + %.098.us.i.us = phi ptr [ %94, %._crit_edge.us.i89.us ], [ %.172105.us, %.preheader87.us.preheader.i.us ] + %.07797.us.i.us = phi ptr [ %93, %._crit_edge.us.i89.us ], [ %.169106.us, %.preheader87.us.preheader.i.us ] + %.07996.us.i.us = phi i32 [ %95, %._crit_edge.us.i89.us ], [ 0, %.preheader87.us.preheader.i.us ] + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %.098.us.i.us, ptr noundef nonnull align 8 dereferenceable(1) %.07797.us.i.us, i64 %85, i1 false), !tbaa !16 + %invariant.gep.i87.us = getelementptr i64, ptr %.07797.us.i.us, i64 %82 + %invariant.gep177.i.us = getelementptr i64, ptr %.098.us.i.us, i64 %83 br label %.lr.ph91.us.i.us .lr.ph91.us.i.us: ; preds = %.lr.ph91.us.i.us, %.lr.ph.us.preheader.i.us %indvars.iv145.i.us = phi i64 [ 0, %.lr.ph.us.preheader.i.us ], [ %indvars.iv.next146.i.us, %.lr.ph91.us.i.us ] %gep.i88.us = getelementptr i64, ptr %invariant.gep.i87.us, i64 %indvars.iv145.i.us - %87 = load i64, ptr %gep.i88.us, align 8, !tbaa !16 + %86 = load i64, ptr %gep.i88.us, align 8, !tbaa !16 %gep178.i.us = getelementptr i64, ptr %invariant.gep177.i.us, i64 %indvars.iv145.i.us - store i64 %87, ptr %gep178.i.us, align 8, !tbaa !16 + store i64 %86, ptr %gep178.i.us, align 8, !tbaa !16 %indvars.iv.next146.i.us = add nuw nsw i64 %indvars.iv145.i.us, 1 %exitcond150.not.i.us = icmp eq i64 %indvars.iv.next146.i.us, %wide.trip.count.i83.us br i1 %exitcond150.not.i.us, label %.preheader85.us.i.us, label %.lr.ph91.us.i.us, !llvm.loop !97 .preheader85.us.i.us: ; preds = %.lr.ph91.us.i.us - %invariant.gep179.i.us = getelementptr i64, ptr %.07797.us.i.us, i64 %84 - %invariant.gep181.i.us = getelementptr i64, ptr %.098.us.i.us, i64 %83 - br label %88 + %invariant.gep179.i.us = getelementptr i64, ptr %.07797.us.i.us, i64 %83 + %invariant.gep181.i.us = getelementptr i64, ptr %.098.us.i.us, i64 %82 + br label %87 -88: ; preds = %88, %.preheader85.us.i.us - %indvars.iv152.i.us = phi i64 [ 0, %.preheader85.us.i.us ], [ %indvars.iv.next153.i.us, %88 ] +87: ; preds = %87, %.preheader85.us.i.us + %indvars.iv152.i.us = phi i64 [ 0, %.preheader85.us.i.us ], [ %indvars.iv.next153.i.us, %87 ] %gep180.i.us = getelementptr i64, ptr %invariant.gep179.i.us, i64 %indvars.iv152.i.us - %89 = load i64, ptr %gep180.i.us, align 8, !tbaa !16 + %88 = load i64, ptr %gep180.i.us, align 8, !tbaa !16 %gep182.i.us = getelementptr i64, ptr %invariant.gep181.i.us, i64 %indvars.iv152.i.us - store i64 %89, ptr %gep182.i.us, align 8, !tbaa !16 + store i64 %88, ptr %gep182.i.us, align 8, !tbaa !16 %indvars.iv.next153.i.us = add nuw nsw i64 %indvars.iv152.i.us, 1 %exitcond157.not.i.us = icmp eq i64 %indvars.iv.next153.i.us, %wide.trip.count.i83.us - br i1 %exitcond157.not.i.us, label %.lr.ph95.us.i.us, label %88, !llvm.loop !98 - -.lr.ph95.us.i.us: ; preds = %88, %.lr.ph95.us.i.us - %indvars.iv159.i.us = phi i64 [ %indvars.iv.next160.i.us, %.lr.ph95.us.i.us ], [ 0, %88 ] - %90 = add nsw i64 %indvars.iv159.i.us, %85 - %91 = getelementptr inbounds i64, ptr %.07797.us.i.us, i64 %90 - %92 = load i64, ptr %91, align 8, !tbaa !16 - %93 = getelementptr inbounds i64, ptr %.098.us.i.us, i64 %90 - store i64 %92, ptr %93, align 8, !tbaa !16 + br i1 %exitcond157.not.i.us, label %.lr.ph95.us.i.us, label %87, !llvm.loop !98 + +.lr.ph95.us.i.us: ; preds = %87, %.lr.ph95.us.i.us + %indvars.iv159.i.us = phi i64 [ %indvars.iv.next160.i.us, %.lr.ph95.us.i.us ], [ 0, %87 ] + %89 = add nsw i64 %indvars.iv159.i.us, %84 + %90 = getelementptr inbounds i64, ptr %.07797.us.i.us, i64 %89 + %91 = load i64, ptr %90, align 8, !tbaa !16 + %92 = getelementptr inbounds i64, ptr %.098.us.i.us, i64 %89 + store i64 %91, ptr %92, align 8, !tbaa !16 %indvars.iv.next160.i.us = add nuw nsw i64 %indvars.iv159.i.us, 1 %exitcond163.not.i.us = icmp eq i64 %indvars.iv.next160.i.us, %wide.trip.count.i83.us br i1 %exitcond163.not.i.us, label %._crit_edge.us.i89.us, label %.lr.ph95.us.i.us, !llvm.loop !99 ._crit_edge.us.i89.us: ; preds = %.lr.ph95.us.i.us - %94 = getelementptr inbounds i64, ptr %.07797.us.i.us, i64 %80 - %95 = getelementptr inbounds i64, ptr %.098.us.i.us, i64 %80 - %96 = add nsw i32 %.07996.us.i.us, %79 - %97 = icmp slt i32 %96, %54 - br i1 %97, label %.lr.ph.us.preheader.i.us, label %If_CluSwapAdjacent.exit.us, !llvm.loop !100 + %93 = getelementptr inbounds i64, ptr %.07797.us.i.us, i64 %79 + %94 = getelementptr inbounds i64, ptr %.098.us.i.us, i64 %79 + %95 = add nsw i32 %.07996.us.i.us, %78 + %96 = icmp slt i32 %95, %53 + br i1 %96, label %.lr.ph.us.preheader.i.us, label %If_CluSwapAdjacent.exit.us, !llvm.loop !100 -.preheader.i.us: ; preds = %73 - br i1 %55, label %If_CluSwapAdjacent.exit.us, label %.lr.ph.i90.us +.preheader.i.us: ; preds = %72 + br i1 %54, label %If_CluSwapAdjacent.exit.us, label %.lr.ph.i90.us .lr.ph.i90.us: ; preds = %.preheader.i.us, %.lr.ph.i90.us %indvars.iv164.i.us = phi i64 [ %indvars.iv.next165.i.us, %.lr.ph.i90.us ], [ 0, %.preheader.i.us ] - %98 = getelementptr inbounds nuw i64, ptr %.169106.us, i64 %indvars.iv164.i.us - %99 = load i64, ptr %98, align 8, !tbaa !16 - %100 = and i64 %99, 4294967295 - %101 = or disjoint i64 %indvars.iv164.i.us, 1 - %102 = getelementptr inbounds nuw i64, ptr %.169106.us, i64 %101 - %103 = load i64, ptr %102, align 8, !tbaa !16 - %104 = shl i64 %103, 32 - %105 = or disjoint i64 %104, %100 - %106 = getelementptr inbounds nuw i64, ptr %.172105.us, i64 %indvars.iv164.i.us - store i64 %105, ptr %106, align 8, !tbaa !16 - %107 = and i64 %103, -4294967296 - %108 = lshr i64 %99, 32 - %109 = or disjoint i64 %107, %108 - %110 = getelementptr inbounds nuw i64, ptr %.172105.us, i64 %101 - store i64 %109, ptr %110, align 8, !tbaa !16 + %97 = getelementptr inbounds nuw i64, ptr %.169106.us, i64 %indvars.iv164.i.us + %98 = load i64, ptr %97, align 8, !tbaa !16 + %99 = and i64 %98, 4294967295 + %100 = or disjoint i64 %indvars.iv164.i.us, 1 + %101 = getelementptr inbounds nuw i64, ptr %.169106.us, i64 %100 + %102 = load i64, ptr %101, align 8, !tbaa !16 + %103 = shl i64 %102, 32 + %104 = or disjoint i64 %103, %99 + %105 = getelementptr inbounds nuw i64, ptr %.172105.us, i64 %indvars.iv164.i.us + store i64 %104, ptr %105, align 8, !tbaa !16 + %106 = and i64 %102, -4294967296 + %107 = lshr i64 %98, 32 + %108 = or disjoint i64 %106, %107 + %109 = getelementptr inbounds nuw i64, ptr %.172105.us, i64 %100 + store i64 %108, ptr %109, align 8, !tbaa !16 %indvars.iv.next165.i.us = add nuw nsw i64 %indvars.iv164.i.us, 2 - %111 = icmp samesign ult i64 %indvars.iv.next165.i.us, %56 - br i1 %111, label %.lr.ph.i90.us, label %If_CluSwapAdjacent.exit.us, !llvm.loop !101 - -112: ; preds = %62 - br i1 %55, label %If_CluSwapAdjacent.exit.us, label %.lr.ph135.i.us + %110 = icmp samesign ult i64 %indvars.iv.next165.i.us, %55 + br i1 %110, label %.lr.ph.i90.us, label %If_CluSwapAdjacent.exit.us, !llvm.loop !101 + +111: ; preds = %61 + br i1 %54, label %If_CluSwapAdjacent.exit.us, label %.lr.ph135.i.us + +.lr.ph135.i.us: ; preds = %111 + %112 = trunc nuw nsw i64 %indvars.iv129 to i32 + %113 = shl nuw nsw i32 1, %112 + %114 = getelementptr inbounds nuw [3 x i64], ptr @PMasks, i64 %indvars.iv129 + %115 = load i64, ptr %114, align 8, !tbaa !16 + %116 = getelementptr inbounds nuw i8, ptr %114, i64 8 + %117 = load i64, ptr %116, align 8, !tbaa !16 + %118 = zext nneg i32 %113 to i64 + %119 = getelementptr inbounds nuw i8, ptr %114, i64 16 + %120 = load i64, ptr %119, align 8, !tbaa !16 + br label %121 -.lr.ph135.i.us: ; preds = %112 - %113 = trunc nuw nsw i64 %indvars.iv129 to i32 - %114 = shl nuw nsw i32 1, %113 - %115 = getelementptr inbounds nuw [3 x i64], ptr @PMasks, i64 %indvars.iv129 - %116 = load i64, ptr %115, align 8, !tbaa !16 - %117 = getelementptr inbounds nuw i8, ptr %115, i64 8 - %118 = load i64, ptr %117, align 8, !tbaa !16 - %119 = zext nneg i32 %114 to i64 - %120 = getelementptr inbounds nuw i8, ptr %115, i64 16 - %121 = load i64, ptr %120, align 8, !tbaa !16 - br label %122 - -122: ; preds = %122, %.lr.ph135.i.us - %indvars.iv167.i.us = phi i64 [ 0, %.lr.ph135.i.us ], [ %indvars.iv.next168.i.us, %122 ] - %123 = getelementptr inbounds nuw i64, ptr %.169106.us, i64 %indvars.iv167.i.us - %124 = load i64, ptr %123, align 8, !tbaa !16 - %125 = and i64 %124, %116 - %126 = and i64 %124, %118 - %127 = shl i64 %126, %119 - %128 = or i64 %127, %125 - %129 = and i64 %124, %121 - %130 = lshr i64 %129, %119 - %131 = or i64 %128, %130 - %132 = getelementptr inbounds nuw i64, ptr %.172105.us, i64 %indvars.iv167.i.us - store i64 %131, ptr %132, align 8, !tbaa !16 +121: ; preds = %121, %.lr.ph135.i.us + %indvars.iv167.i.us = phi i64 [ 0, %.lr.ph135.i.us ], [ %indvars.iv.next168.i.us, %121 ] + %122 = getelementptr inbounds nuw i64, ptr %.169106.us, i64 %indvars.iv167.i.us + %123 = load i64, ptr %122, align 8, !tbaa !16 + %124 = and i64 %123, %115 + %125 = and i64 %123, %117 + %126 = shl i64 %125, %118 + %127 = or i64 %126, %124 + %128 = and i64 %123, %120 + %129 = lshr i64 %128, %118 + %130 = or i64 %127, %129 + %131 = getelementptr inbounds nuw i64, ptr %.172105.us, i64 %indvars.iv167.i.us + store i64 %130, ptr %131, align 8, !tbaa !16 %indvars.iv.next168.i.us = add nuw nsw i64 %indvars.iv167.i.us, 1 - %exitcond171.not.i.us = icmp eq i64 %indvars.iv.next168.i.us, %56 - br i1 %exitcond171.not.i.us, label %If_CluSwapAdjacent.exit.us, label %122, !llvm.loop !102 - -If_CluSwapAdjacent.exit.us: ; preds = %._crit_edge.us.i89.us, %.lr.ph.i90.us, %122, %112, %.preheader.i.us, %.preheader87.lr.ph.i.us, %74, %.lr.ph110.us - %.273.us = phi ptr [ %.172105.us, %.lr.ph110.us ], [ %.169106.us, %112 ], [ %.169106.us, %.preheader.i.us ], [ %.169106.us, %74 ], [ %.169106.us, %.preheader87.lr.ph.i.us ], [ %.169106.us, %122 ], [ %.169106.us, %.lr.ph.i90.us ], [ %.169106.us, %._crit_edge.us.i89.us ] - %.270.us = phi ptr [ %.169106.us, %.lr.ph110.us ], [ %.172105.us, %112 ], [ %.172105.us, %.preheader.i.us ], [ %.172105.us, %74 ], [ %.172105.us, %.preheader87.lr.ph.i.us ], [ %.172105.us, %122 ], [ %.172105.us, %.lr.ph.i90.us ], [ %.172105.us, %._crit_edge.us.i89.us ] - %.162.us = phi i32 [ %.061108.us, %.lr.ph110.us ], [ 1, %112 ], [ 1, %.preheader.i.us ], [ 1, %74 ], [ 1, %.preheader87.lr.ph.i.us ], [ 1, %122 ], [ 1, %.lr.ph.i90.us ], [ 1, %._crit_edge.us.i89.us ] - %.2.us = phi i32 [ %.1109.us, %.lr.ph110.us ], [ %63, %112 ], [ %63, %.preheader.i.us ], [ %63, %74 ], [ %63, %.preheader87.lr.ph.i.us ], [ %63, %122 ], [ %63, %.lr.ph.i90.us ], [ %63, %._crit_edge.us.i89.us ] + %exitcond171.not.i.us = icmp eq i64 %indvars.iv.next168.i.us, %55 + br i1 %exitcond171.not.i.us, label %If_CluSwapAdjacent.exit.us, label %121, !llvm.loop !102 + +If_CluSwapAdjacent.exit.us: ; preds = %._crit_edge.us.i89.us, %.lr.ph.i90.us, %121, %111, %.preheader.i.us, %.preheader87.lr.ph.i.us, %73, %.lr.ph110.us + %.273.us = phi ptr [ %.172105.us, %.lr.ph110.us ], [ %.169106.us, %111 ], [ %.169106.us, %.preheader.i.us ], [ %.169106.us, %73 ], [ %.169106.us, %.preheader87.lr.ph.i.us ], [ %.169106.us, %121 ], [ %.169106.us, %.lr.ph.i90.us ], [ %.169106.us, %._crit_edge.us.i89.us ] + %.270.us = phi ptr [ %.169106.us, %.lr.ph110.us ], [ %.172105.us, %111 ], [ %.172105.us, %.preheader.i.us ], [ %.172105.us, %73 ], [ %.172105.us, %.preheader87.lr.ph.i.us ], [ %.172105.us, %121 ], [ %.172105.us, %.lr.ph.i90.us ], [ %.172105.us, %._crit_edge.us.i89.us ] + %.162.us = phi i32 [ %.061108.us, %.lr.ph110.us ], [ 1, %111 ], [ 1, %.preheader.i.us ], [ 1, %73 ], [ 1, %.preheader87.lr.ph.i.us ], [ 1, %121 ], [ 1, %.lr.ph.i90.us ], [ 1, %._crit_edge.us.i89.us ] + %.2.us = phi i32 [ %.1109.us, %.lr.ph110.us ], [ %62, %111 ], [ %62, %.preheader.i.us ], [ %62, %73 ], [ %62, %.preheader87.lr.ph.i.us ], [ %62, %121 ], [ %62, %.lr.ph.i90.us ], [ %62, %._crit_edge.us.i89.us ] %exitcond133.not = icmp eq i64 %indvars.iv.next130, %wide.trip.count132 br i1 %exitcond133.not, label %._crit_edge.us, label %.lr.ph110.us.backedge @@ -2339,22 +2335,22 @@ If_CluSwapAdjacent.exit.us: ; preds = %._crit_edge.us.i89. .lr.ph104: ; preds = %.lr.ph104.preheader, %.lr.ph104 %indvars.iv121 = phi i64 [ 0, %.lr.ph104.preheader ], [ %indvars.iv.next122, %.lr.ph104 ] - %133 = getelementptr inbounds nuw i32, ptr %2, i64 %indvars.iv121 - %134 = trunc nuw nsw i64 %indvars.iv121 to i32 - store i32 %134, ptr %133, align 4, !tbaa !6 + %132 = getelementptr inbounds nuw i32, ptr %2, i64 %indvars.iv121 + %133 = trunc nuw nsw i64 %indvars.iv121 to i32 + store i32 %133, ptr %132, align 4, !tbaa !6 %indvars.iv.next122 = add nuw nsw i64 %indvars.iv121, 1 %exitcond125.not = icmp eq i64 %indvars.iv.next122, %wide.trip.count124 br i1 %exitcond125.not, label %.preheader, label %.lr.ph104, !llvm.loop !104 .split.us: ; preds = %._crit_edge.us - %135 = and i32 %.2.us, 1 - %136 = icmp eq i32 %135, 0 - %brmerge = select i1 %136, i1 true, i1 %55 + %134 = and i32 %.2.us, 1 + %135 = icmp eq i32 %134, 0 + %brmerge = select i1 %135, i1 true, i1 %54 br i1 %brmerge, label %If_CluCopy.exit, label %.lr.ph.preheader.i91 .lr.ph.preheader.i91: ; preds = %.split.us - %137 = shl nuw nsw i64 %56, 3 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %.273.us, ptr noundef nonnull align 8 dereferenceable(1) %.270.us, i64 %137, i1 false), !tbaa !16 + %136 = shl nuw nsw i64 %55, 3 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %.273.us, ptr noundef nonnull align 8 dereferenceable(1) %.270.us, i64 %136, i1 false), !tbaa !16 br label %If_CluCopy.exit If_CluCopy.exit: ; preds = %.split.us, %.preheader, %.lr.ph.preheader.i91 diff --git a/bench/actix-rs/optimized/q4aavw6wh20so0r.ll b/bench/actix-rs/optimized/q4aavw6wh20so0r.ll index 2d670875664..4a8d09ee2d1 100644 --- a/bench/actix-rs/optimized/q4aavw6wh20so0r.ll +++ b/bench/actix-rs/optimized/q4aavw6wh20so0r.ll @@ -380,8 +380,8 @@ define void @_ZN16actix_web_actors2ws24handshake_with_protocols17hff1425362f08a8 81: ; preds = %82, %.preheader41.i.i %.3.i.i = phi i8 [ %.245.i.i, %.preheader41.i.i ], [ %88, %82 ] - %exitcond59.not.i.i = icmp eq i64 %77, 4 - br i1 %exitcond59.not.i.i, label %72, label %.preheader41.i.i + %exitcond57.not.i.i = icmp eq i64 %77, 4 + br i1 %exitcond57.not.i.i, label %72, label %.preheader41.i.i 82: ; preds = %.preheader41.i.i %83 = shl nuw nsw i64 %.sroa.028.046.i.i, 4 diff --git a/bench/assimp/optimized/FBXBinaryTokenizer.ll b/bench/assimp/optimized/FBXBinaryTokenizer.ll index b7399398967..3ceff6f01d5 100644 --- a/bench/assimp/optimized/FBXBinaryTokenizer.ll +++ b/bench/assimp/optimized/FBXBinaryTokenizer.ll @@ -178,7 +178,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %20, % 27: ; preds = %4 %28 = tail call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %1, ptr noundef nonnull dereferenceable(19) @.str.2, i64 noundef 18) #23 %.not = icmp eq i32 %28, 0 - br i1 %.not, label %_ZN6Assimp3FBX12_GLOBAL__N_18ReadWordEPKcRS3_S3_.exit, label %29 + br i1 %.not, label %_ZN6Assimp3FBX12_GLOBAL__N_18ReadByteEPKcRS3_S3_.exit, label %29 29: ; preds = %27 call void @llvm.lifetime.start.p0(ptr nonnull %7) @@ -218,11 +218,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit59: ; preds = %34, call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %common.resume -common.resume: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit59, %82 - %common.resume.op = phi { ptr, i32 } [ %.pn53, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %.pn51, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit59 ], [ %.merged55, %82 ] - resume { ptr, i32 } %common.resume.op - -_ZN6Assimp3FBX12_GLOBAL__N_18ReadWordEPKcRS3_S3_.exit: ; preds = %27 +_ZN6Assimp3FBX12_GLOBAL__N_18ReadByteEPKcRS3_S3_.exit: ; preds = %27 call void @llvm.lifetime.start.p0(ptr nonnull %9) %41 = getelementptr inbounds nuw i8, ptr %1, i64 %2 %42 = getelementptr inbounds nuw i8, ptr %1, i64 23 @@ -238,7 +234,11 @@ _ZN6Assimp3FBX12_GLOBAL__N_18ReadWordEPKcRS3_S3_.exit: ; preds = %27 %.old56.not = icmp eq i64 %2, 27 br i1 %.old56.not, label %.loopexit, label %.preheader -.preheader: ; preds = %_ZN6Assimp3FBX12_GLOBAL__N_18ReadWordEPKcRS3_S3_.exit, %48 +common.resume: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit59, %82 + %common.resume.op = phi { ptr, i32 } [ %.pn53, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %.pn51, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit59 ], [ %.merged55, %82 ] + resume { ptr, i32 } %common.resume.op + +.preheader: ; preds = %_ZN6Assimp3FBX12_GLOBAL__N_18ReadByteEPKcRS3_S3_.exit, %48 %47 = invoke fastcc noundef zeroext i1 @_ZN6Assimp3FBX12_GLOBAL__N_19ReadScopeERSt6vectorIPKNS0_5TokenESaIS5_EERNS_14StackAllocatorEPKcRSC_SC_b(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(40) %3, ptr noundef nonnull %1, ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull %41, i1 noundef zeroext %46) to label %48 unwind label %51 @@ -331,7 +331,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit86: ; preds = %70 invoke void @__cxa_end_catch() to label %82 unwind label %83 -.loopexit: ; preds = %48, %_ZN6Assimp3FBX12_GLOBAL__N_18ReadWordEPKcRS3_S3_.exit +.loopexit: ; preds = %48, %_ZN6Assimp3FBX12_GLOBAL__N_18ReadByteEPKcRS3_S3_.exit call void @llvm.lifetime.end.p0(ptr nonnull %10) call void @llvm.lifetime.end.p0(ptr nonnull %9) ret void diff --git a/bench/cmake/optimized/cmTarget.ll b/bench/cmake/optimized/cmTarget.ll index 1fcd80d67a1..ecd8d603843 100644 --- a/bench/cmake/optimized/cmTarget.ll +++ b/bench/cmake/optimized/cmTarget.ll @@ -7962,7 +7962,7 @@ _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i51: ; preds = %_ZSteqIcSt11char_tr _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7replaceEN9__gnu_cxx17__normal_iteratorIPKcS4_EES9_RKS4_.exit57: ; preds = %.critedge %109 = load i64, ptr %13, align 8, !tbaa !11 %110 = load ptr, ptr %1, align 8, !tbaa !15 - %gepdiff85 = add i64 %106, -6 + %gepdiff85 = add nsw i64 %106, -6 %111 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm(ptr noundef nonnull align 8 dereferenceable(32) %104, i64 noundef 6, i64 noundef %gepdiff85, ptr noundef %110, i64 noundef %109) %112 = getelementptr inbounds nuw i8, ptr %0, i64 8 %113 = load ptr, ptr %112, align 8, !tbaa !236 diff --git a/bench/cmake/optimized/cmakemain.ll b/bench/cmake/optimized/cmakemain.ll index 01035bccb98..2150a7e367e 100644 --- a/bench/cmake/optimized/cmakemain.ll +++ b/bench/cmake/optimized/cmakemain.ll @@ -1900,26 +1900,26 @@ _ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE %484 = add nsw i32 %106, -2 %485 = zext nneg i32 %484 to i64 %486 = getelementptr inbounds nuw i8, ptr %80, i64 16 - %487 = shl nuw nsw i64 %485, 5 - %488 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %487) #30 - to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE7reserveEm.exit.i unwind label %642 - -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE7reserveEm.exit.i: ; preds = %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_M_allocateEm.exit.i.i - %489 = getelementptr inbounds nuw i8, ptr %80, i64 8 - store ptr %488, ptr %80, align 8, !tbaa !148 - store ptr %488, ptr %489, align 8, !tbaa !150 - %490 = getelementptr inbounds nuw %"class.std::__cxx11::basic_string", ptr %488, i64 %485 + %487 = getelementptr inbounds nuw i8, ptr %80, i64 8 + %488 = shl nuw nsw i64 %485, 5 + %489 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %488) #30 + to label %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit.i.i unwind label %642 + +_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit.i.i: ; preds = %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_M_allocateEm.exit.i.i + store ptr %489, ptr %80, align 8, !tbaa !148 + store ptr %489, ptr %487, align 8, !tbaa !150 + %490 = getelementptr inbounds nuw %"class.std::__cxx11::basic_string", ptr %489, i64 %485 store ptr %490, ptr %486, align 8, !tbaa !151 %491 = getelementptr inbounds nuw i8, ptr %108, i64 16 %492 = zext nneg i32 %106 to i64 %493 = getelementptr inbounds nuw ptr, ptr %108, i64 %492 - invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE15_M_range_insertIPKPKcEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EET_SH_St20forward_iterator_tag(ptr noundef nonnull align 8 dereferenceable(24) %80, ptr nonnull %488, ptr noundef nonnull %491, ptr noundef nonnull %493) + invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE15_M_range_insertIPKPKcEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EET_SH_St20forward_iterator_tag(ptr noundef nonnull align 8 dereferenceable(24) %80, ptr nonnull %489, ptr noundef nonnull %491, ptr noundef nonnull %493) to label %_ZN2cm6appendISt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEPKPKcTnNSt9enable_ifIXaaaasr2cm21is_sequence_containerIT_EE5valuesr2cm17is_input_iteratorIT0_EE5valuesr3std14is_convertibleINSt15iterator_traitsISG_E10value_typeENSF_10value_typeEEE5valueEiE4typeELi0EEEvRSF_SG_SG_.exit.i unwind label %642 -_ZN2cm6appendISt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEPKPKcTnNSt9enable_ifIXaaaasr2cm21is_sequence_containerIT_EE5valuesr2cm17is_input_iteratorIT0_EE5valuesr3std14is_convertibleINSt15iterator_traitsISG_E10value_typeENSF_10value_typeEEE5valueEiE4typeELi0EEEvRSF_SG_SG_.exit.i: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE7reserveEm.exit.i +_ZN2cm6appendISt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEPKPKcTnNSt9enable_ifIXaaaasr2cm21is_sequence_containerIT_EE5valuesr2cm17is_input_iteratorIT0_EE5valuesr3std14is_convertibleINSt15iterator_traitsISG_E10value_typeENSF_10value_typeEEE5valueEiE4typeELi0EEEvRSF_SG_SG_.exit.i: ; preds = %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit.i.i call void @llvm.lifetime.start.p0(ptr nonnull %81) store i64 0, ptr %81, align 8, !tbaa !55 - %494 = load ptr, ptr %489, align 8, !tbaa !150 + %494 = load ptr, ptr %487, align 8, !tbaa !150 %495 = load ptr, ptr %80, align 8, !tbaa !148 %496 = icmp eq ptr %494, %495 %497 = load i8, ptr %47, align 1, !range !152 @@ -2056,7 +2056,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit390.i: ; preds = % br label %.loopexit651.i .body331.i: ; preds = %369, %.body577.thread.i - %eh.lpad-body578869.i = phi { ptr, i32 } [ %368, %.body577.thread.i ], [ %363, %369 ] + %eh.lpad-body578865.i = phi { ptr, i32 } [ %368, %.body577.thread.i ], [ %363, %369 ] br label %551 551: ; preds = %551, %.body331.i @@ -2068,7 +2068,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit390.i: ; preds = % .loopexit651.i: ; preds = %551, %549 %555 = phi i1 [ false, %549 ], [ true, %551 ] - %.pn168.i = phi { ptr, i32 } [ %550, %549 ], [ %eh.lpad-body578869.i, %551 ] + %.pn168.i = phi { ptr, i32 } [ %550, %549 ], [ %eh.lpad-body578865.i, %551 ] %556 = load ptr, ptr %348, align 8, !tbaa !39 %.not.i391.i = icmp eq ptr %556, null br i1 %.not.i391.i, label %_ZNSt14_Function_baseD2Ev.exit392.i, label %557 @@ -2348,7 +2348,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit439.i: ; preds = % call void @llvm.lifetime.end.p0(ptr nonnull %61) br label %1113 -642: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE7reserveEm.exit.i, %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_M_allocateEm.exit.i.i +642: ; preds = %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit.i.i, %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_M_allocateEm.exit.i.i %643 = landingpad { ptr, i32 } cleanup br label %813 @@ -2705,7 +2705,7 @@ _ZNSolsEPFRSoS_E.exit.i: ; preds = %.thread638.i, %_ZNS %773 = load i64, ptr %81, align 8, !tbaa !55 %774 = add i64 %773, 1 store i64 %774, ptr %81, align 8, !tbaa !55 - %775 = load ptr, ptr %489, align 8, !tbaa !150 + %775 = load ptr, ptr %487, align 8, !tbaa !150 %776 = load ptr, ptr %80, align 8, !tbaa !148 %777 = ptrtoint ptr %775 to i64 %778 = ptrtoint ptr %776 to i64 @@ -2721,7 +2721,7 @@ _ZNSolsEPFRSoS_E.exit.thread.i: ; preds = %_ZNSolsEPFRSoS_E.ex %784 = load i8, ptr %47, align 1, !tbaa !21, !range !152, !noundef !179 %785 = trunc nuw i8 %784 to i1 %.pre677.i = load ptr, ptr %80, align 8, !tbaa !148 - %.pre679.i = load ptr, ptr %489, align 8, !tbaa !150 + %.pre679.i = load ptr, ptr %487, align 8, !tbaa !150 br i1 %785, label %786, label %_ZN2cm6appendISt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEN9__gnu_cxx17__normal_iteratorIPS7_S9_EETnNSt9enable_ifIXaaaasr2cm21is_sequence_containerIT_EE5valuesr2cm17is_input_iteratorIT0_EE5valuesr3std14is_convertibleINSt15iterator_traitsISG_E10value_typeENSF_10value_typeEEE5valueEiE4typeELi0EEEvRSF_SG_SG_.exit.i 786: ; preds = %_ZNSolsEPFRSoS_E.exit.thread.i @@ -2739,7 +2739,7 @@ _ZNSolsEPFRSoS_E.exit.thread.i: ; preds = %_ZNSolsEPFRSoS_E.ex ._ZN2cm6appendISt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEN9__gnu_cxx17__normal_iteratorIPS7_S9_EETnNSt9enable_ifIXaaaasr2cm21is_sequence_containerIT_EE5valuesr2cm17is_input_iteratorIT0_EE5valuesr3std14is_convertibleINSt15iterator_traitsISG_E10value_typeENSF_10value_typeEEE5valueEiE4typeELi0EEEvRSF_SG_SG_.exit_crit_edge.i: ; preds = %786 %.pre676.i = load ptr, ptr %80, align 8, !tbaa !148 - %.pre678.i = load ptr, ptr %489, align 8, !tbaa !150 + %.pre678.i = load ptr, ptr %487, align 8, !tbaa !150 br label %_ZN2cm6appendISt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEN9__gnu_cxx17__normal_iteratorIPS7_S9_EETnNSt9enable_ifIXaaaasr2cm21is_sequence_containerIT_EE5valuesr2cm17is_input_iteratorIT0_EE5valuesr3std14is_convertibleINSt15iterator_traitsISG_E10value_typeENSF_10value_typeEEE5valueEiE4typeELi0EEEvRSF_SG_SG_.exit.i 796: ; preds = %786 @@ -4686,23 +4686,23 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit123.i: ; preds = % %1467 = zext nneg i32 %1466 to i64 %1468 = getelementptr inbounds nuw i8, ptr %18, i64 16 %.not.i = icmp eq i32 %1466, 0 - br i1 %.not.i, label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE7reserveEm.exit.i100, label %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_M_allocateEm.exit.i.i99 + br i1 %.not.i, label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE7reserveEm.exit.i, label %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_M_allocateEm.exit.i.i99 _ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_M_allocateEm.exit.i.i99: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit123.i %1469 = shl nuw nsw i64 %1467, 5 %1470 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %1469) #30 - to label %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit.i.i unwind label %1526 + to label %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit.i.i100 unwind label %1526 -_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit.i.i: ; preds = %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_M_allocateEm.exit.i.i99 +_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit.i.i100: ; preds = %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_M_allocateEm.exit.i.i99 %1471 = getelementptr inbounds nuw i8, ptr %18, i64 8 store ptr %1470, ptr %18, align 8, !tbaa !148 store ptr %1470, ptr %1471, align 8, !tbaa !150 %1472 = getelementptr inbounds nuw %"class.std::__cxx11::basic_string", ptr %1470, i64 %1467 store ptr %1472, ptr %1468, align 8, !tbaa !151 - br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE7reserveEm.exit.i100 + br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE7reserveEm.exit.i -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE7reserveEm.exit.i100: ; preds = %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit.i.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit123.i - %1473 = phi ptr [ %1470, %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit.i.i ], [ null, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit123.i ] +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE7reserveEm.exit.i: ; preds = %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit.i.i100, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit123.i + %1473 = phi ptr [ %1470, %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit.i.i100 ], [ null, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit123.i ] %1474 = getelementptr inbounds nuw i8, ptr %108, i64 16 %1475 = zext nneg i32 %106 to i64 %1476 = getelementptr inbounds nuw ptr, ptr %108, i64 %1475 @@ -4710,7 +4710,7 @@ _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE7reserv invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE15_M_range_insertIPKPKcEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EET_SH_St20forward_iterator_tag(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr %1473, ptr noundef nonnull %1474, ptr noundef nonnull %1476) to label %_ZN2cm6appendISt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEPKPKcTnNSt9enable_ifIXaaaasr2cm21is_sequence_containerIT_EE5valuesr2cm17is_input_iteratorIT0_EE5valuesr3std14is_convertibleINSt15iterator_traitsISG_E10value_typeENSF_10value_typeEEE5valueEiE4typeELi0EEEvRSF_SG_SG_.exit.i101 unwind label %1526 -_ZN2cm6appendISt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEPKPKcTnNSt9enable_ifIXaaaasr2cm21is_sequence_containerIT_EE5valuesr2cm17is_input_iteratorIT0_EE5valuesr3std14is_convertibleINSt15iterator_traitsISG_E10value_typeENSF_10value_typeEEE5valueEiE4typeELi0EEEvRSF_SG_SG_.exit.i101: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE7reserveEm.exit.i100 +_ZN2cm6appendISt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEPKPKcTnNSt9enable_ifIXaaaasr2cm21is_sequence_containerIT_EE5valuesr2cm17is_input_iteratorIT0_EE5valuesr3std14is_convertibleINSt15iterator_traitsISG_E10value_typeENSF_10value_typeEEE5valueEiE4typeELi0EEEvRSF_SG_SG_.exit.i101: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE7reserveEm.exit.i call void @llvm.lifetime.start.p0(ptr nonnull %19) store i64 0, ptr %19, align 8, !tbaa !55 %1478 = load ptr, ptr %1477, align 8, !tbaa !150 @@ -4840,7 +4840,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit136.i: ; preds = % call void @llvm.lifetime.end.p0(ptr nonnull %13) br label %1733 -1526: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE7reserveEm.exit.i100, %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_M_allocateEm.exit.i.i99 +1526: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE7reserveEm.exit.i, %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_M_allocateEm.exit.i.i99 %1527 = landingpad { ptr, i32 } cleanup br label %1732 diff --git a/bench/coreutils-rs/optimized/2g9ijtjos2xwh9zs.ll b/bench/coreutils-rs/optimized/2g9ijtjos2xwh9zs.ll index f4a55420b33..a46831ac57a 100644 --- a/bench/coreutils-rs/optimized/2g9ijtjos2xwh9zs.ll +++ b/bench/coreutils-rs/optimized/2g9ijtjos2xwh9zs.ll @@ -4870,10 +4870,10 @@ define hidden void @_ZN5rayon5slice9mergesort13par_mergesort17h9ae9ed164361c133E .lr.ph.preheader: ; preds = %26 %27 = add nsw i64 %1, -1 - br label %192 + br label %.lr.ph -common.resume: ; preds = %208, %28 - %common.resume.op = phi { ptr, i32 } [ %.pn72, %28 ], [ %lpad.loopexit.i, %208 ] +common.resume: ; preds = %207, %28 + %common.resume.op = phi { ptr, i32 } [ %.pn72, %28 ], [ %lpad.loopexit.i, %207 ] resume { ptr, i32 } %common.resume.op 28: ; preds = %37, %33, %.noexc @@ -5391,63 +5391,63 @@ _ZN4core3ptr19swap_nonoverlapping17h45446940a5c53ec3E.exit.i.i97: ; preds = %177 call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !1426 br label %.loopexit.sink.split -192: ; preds = %.lr.ph.preheader, %_ZN5rayon5slice9mergesort11insert_head17h9c722bca3f6f4e2bE.exit - %.sroa.4.0153 = phi i64 [ %193, %_ZN5rayon5slice9mergesort11insert_head17h9c722bca3f6f4e2bE.exit ], [ %27, %.lr.ph.preheader ] - %193 = add i64 %.sroa.4.0153, -1 - %194 = sub nuw nsw i64 %1, %193 - %195 = getelementptr inbounds nuw { { ptr, i64 }, i64 }, ptr %0, i64 %193 +.lr.ph: ; preds = %.lr.ph.preheader, %_ZN5rayon5slice9mergesort11insert_head17h9c722bca3f6f4e2bE.exit + %.sroa.4.0153 = phi i64 [ %192, %_ZN5rayon5slice9mergesort11insert_head17h9c722bca3f6f4e2bE.exit ], [ %27, %.lr.ph.preheader ] + %192 = add i64 %.sroa.4.0153, -1 + %193 = sub nuw nsw i64 %1, %192 + %194 = getelementptr inbounds nuw { { ptr, i64 }, i64 }, ptr %0, i64 %192 %.val76 = load ptr, ptr %17, align 8, !nonnull !18, !noundef !18 call void @llvm.experimental.noalias.scope.decl(metadata !1433) - %196 = getelementptr inbounds nuw i8, ptr %195, i64 24 + %195 = getelementptr inbounds nuw i8, ptr %194, i64 24 %.val.i.i = load ptr, ptr %.val76, align 8, !noalias !1436, !nonnull !18, !align !223, !noundef !18 - %197 = getelementptr i8, ptr %.val76, i64 8 - %.val1.i.i = load ptr, ptr %197, align 8, !noalias !1436, !nonnull !18, !align !223, !noundef !18 - %198 = call noundef range(i8 -1, 2) i8 @_ZN7uu_sort10compare_by17hf350e8ed154bc332E(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %196, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %195, ptr noalias noundef nonnull readonly align 8 dereferenceable(160) %.val.i.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(72) %.val1.i.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(72) %.val1.i.i), !range !1440 - %199 = icmp eq i8 %198, -1 - br i1 %199, label %200, label %_ZN5rayon5slice9mergesort11insert_head17h9c722bca3f6f4e2bE.exit + %196 = getelementptr i8, ptr %.val76, i64 8 + %.val1.i.i = load ptr, ptr %196, align 8, !noalias !1436, !nonnull !18, !align !223, !noundef !18 + %197 = call noundef range(i8 -1, 2) i8 @_ZN7uu_sort10compare_by17hf350e8ed154bc332E(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %195, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %194, ptr noalias noundef nonnull readonly align 8 dereferenceable(160) %.val.i.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(72) %.val1.i.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(72) %.val1.i.i), !range !1440 + %198 = icmp eq i8 %197, -1 + br i1 %198, label %199, label %_ZN5rayon5slice9mergesort11insert_head17h9c722bca3f6f4e2bE.exit -200: ; preds = %192 +199: ; preds = %.lr.ph call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !1433 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(24) %195, i64 24, i1 false) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %195, ptr noundef nonnull align 8 dereferenceable(24) %196, i64 24, i1 false), !alias.scope !1433 - %.not.i = icmp eq i64 %194, 2 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(24) %194, i64 24, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %194, ptr noundef nonnull align 8 dereferenceable(24) %195, i64 24, i1 false), !alias.scope !1433 + %.not.i = icmp eq i64 %193, 2 br i1 %.not.i, label %.thread.i, label %.lr.ph.i -.thread.i: ; preds = %206, %204, %200 - %.sroa.5.0.lcssa.i = phi ptr [ %196, %200 ], [ %.sroa.5.05.i, %204 ], [ %202, %206 ] +.thread.i: ; preds = %205, %203, %199 + %.sroa.5.0.lcssa.i = phi ptr [ %195, %199 ], [ %.sroa.5.05.i, %203 ], [ %201, %205 ] 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(ptr nonnull %4), !noalias !1433 br label %_ZN5rayon5slice9mergesort11insert_head17h9c722bca3f6f4e2bE.exit -.lr.ph.i: ; preds = %200, %206 - %.sroa.02.06.i = phi i64 [ %201, %206 ], [ 2, %200 ] - %.sroa.5.05.i = phi ptr [ %202, %206 ], [ %196, %200 ] - %201 = add nuw nsw i64 %.sroa.02.06.i, 1 - %202 = getelementptr inbounds nuw { { ptr, i64 }, i64 }, ptr %195, i64 %.sroa.02.06.i +.lr.ph.i: ; preds = %199, %205 + %.sroa.02.06.i = phi i64 [ %200, %205 ], [ 2, %199 ] + %.sroa.5.05.i = phi ptr [ %201, %205 ], [ %195, %199 ] + %200 = add nuw nsw i64 %.sroa.02.06.i, 1 + %201 = getelementptr inbounds nuw { { ptr, i64 }, i64 }, ptr %194, i64 %.sroa.02.06.i %.val.i16.i = load ptr, ptr %.val76, align 8, !noalias !1441, !nonnull !18, !align !223, !noundef !18 - %.val1.i17.i = load ptr, ptr %197, align 8, !noalias !1441, !nonnull !18, !align !223, !noundef !18 - %203 = invoke noundef range(i8 -1, 2) i8 @_ZN7uu_sort10compare_by17hf350e8ed154bc332E(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %202, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(160) %.val.i16.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(72) %.val1.i17.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(72) %.val1.i17.i) - to label %204 unwind label %208 - -204: ; preds = %.lr.ph.i - %205 = icmp eq i8 %203, -1 - br i1 %205, label %206, label %.thread.i - -206: ; preds = %204 - %207 = getelementptr i8, ptr %202, i64 -24 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %207, ptr noundef nonnull align 8 dereferenceable(24) %202, i64 24, i1 false), !alias.scope !1433 - %exitcond.not.i = icmp eq i64 %201, %194 + %.val1.i17.i = load ptr, ptr %196, align 8, !noalias !1441, !nonnull !18, !align !223, !noundef !18 + %202 = invoke noundef range(i8 -1, 2) i8 @_ZN7uu_sort10compare_by17hf350e8ed154bc332E(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %201, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(160) %.val.i16.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(72) %.val1.i17.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(72) %.val1.i17.i) + to label %203 unwind label %207 + +203: ; preds = %.lr.ph.i + %204 = icmp eq i8 %202, -1 + br i1 %204, label %205, label %.thread.i + +205: ; preds = %203 + %206 = getelementptr i8, ptr %201, i64 -24 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %206, ptr noundef nonnull align 8 dereferenceable(24) %201, i64 24, i1 false), !alias.scope !1433 + %exitcond.not.i = icmp eq i64 %200, %193 br i1 %exitcond.not.i, label %.thread.i, label %.lr.ph.i -208: ; preds = %.lr.ph.i +207: ; preds = %.lr.ph.i %lpad.loopexit.i = landingpad { ptr, i32 } cleanup call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.5.05.i, ptr noundef nonnull readonly align 8 dereferenceable(24) %4, i64 24, i1 false) br label %common.resume -_ZN5rayon5slice9mergesort11insert_head17h9c722bca3f6f4e2bE.exit: ; preds = %192, %.thread.i - %.not = icmp eq i64 %193, 0 - br i1 %.not, label %.loopexit, label %192 +_ZN5rayon5slice9mergesort11insert_head17h9c722bca3f6f4e2bE.exit: ; preds = %.lr.ph, %.thread.i + %.not = icmp eq i64 %192, 0 + br i1 %.not, label %.loopexit, label %.lr.ph } ; Function Attrs: inlinehint nonlazybind uwtable diff --git a/bench/duckdb/optimized/format.ll b/bench/duckdb/optimized/format.ll index d6245855770..bf2765013eb 100644 --- a/bench/duckdb/optimized/format.ll +++ b/bench/duckdb/optimized/format.ll @@ -26239,7 +26239,7 @@ define linkonce_odr void @_ZN10duckdb_fmt2v68internal18arg_formatter_baseINS0_12 %3 = getelementptr inbounds nuw i8, ptr %0, i64 16 %4 = load ptr, ptr %3, align 8, !tbaa !127 %.not = icmp eq ptr %4, null - br i1 %.not, label %46, label %5 + br i1 %.not, label %45, label %5 5: ; preds = %2 %6 = load i32, ptr %4, align 4, !tbaa !145 @@ -26307,52 +26307,52 @@ _ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit.i: ; preds = %_ZN10duckdb_fmt2v68 37: ; preds = %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE7reserveEm.exit41.i %38 = lshr i64 %32, 1 %39 = icmp eq i32 %6, 2 - br i1 %39, label %42, label %40 + br i1 %39, label %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit43.i, label %40 40: ; preds = %37 %41 = getelementptr inbounds nuw i8, ptr %29, i64 %38 tail call void @llvm.memset.p0.i64(ptr align 1 %29, i8 %31, i64 %38, i1 false) - br label %42 + br label %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit43.i -42: ; preds = %40, %37 +_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit43.i: ; preds = %40, %37 %.0.i.i42.i = phi ptr [ %29, %37 ], [ %41, %40 ] store i8 %1, ptr %.0.i.i42.i, align 1, !tbaa !17 - %43 = sub nsw i64 %32, %38 - %44 = getelementptr inbounds nuw i8, ptr %.0.i.i42.i, i64 1 - tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %44, i8 %31, i64 %43, i1 false) + %42 = sub nsw i64 %32, %38 + %43 = getelementptr inbounds nuw i8, ptr %.0.i.i42.i, i64 1 + tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %43, i8 %31, i64 %42, i1 false) br label %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE12write_paddedINS1_18arg_formatter_baseIS4_NS1_13error_handlerEE11char_writerEEEvRKNS0_18basic_format_specsIcEEOT_.exit _ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit47.i: ; preds = %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE7reserveEm.exit41.i - %45 = getelementptr inbounds nuw i8, ptr %29, i64 1 + %44 = getelementptr inbounds nuw i8, ptr %29, i64 1 store i8 %1, ptr %29, align 1, !tbaa !17 - tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %45, i8 %31, i64 %32, i1 false) + tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %44, i8 %31, i64 %32, i1 false) br label %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE12write_paddedINS1_18arg_formatter_baseIS4_NS1_13error_handlerEE11char_writerEEEvRKNS0_18basic_format_specsIcEEOT_.exit -46: ; preds = %2 +45: ; preds = %2 %.sroa.0.0.copyload.i.i.i = load ptr, ptr %0, align 8 - %47 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.i.i, i64 16 - %48 = load i64, ptr %47, align 8, !tbaa !8 - %49 = add i64 %48, 1 - %50 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.i.i, i64 24 - %51 = load i64, ptr %50, align 8, !tbaa !13 - %52 = icmp ugt i64 %49, %51 - br i1 %52, label %53, label %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit + %46 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.i.i, i64 16 + %47 = load i64, ptr %46, align 8, !tbaa !8 + %48 = add i64 %47, 1 + %49 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.i.i, i64 24 + %50 = load i64, ptr %49, align 8, !tbaa !13 + %51 = icmp ugt i64 %48, %50 + br i1 %51, label %52, label %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit -53: ; preds = %46 - %54 = load ptr, ptr %.sroa.0.0.copyload.i.i.i, align 8, !tbaa !14 - %55 = load ptr, ptr %54, align 8 - tail call void %55(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.0.0.copyload.i.i.i, i64 noundef %49) +52: ; preds = %45 + %53 = load ptr, ptr %.sroa.0.0.copyload.i.i.i, align 8, !tbaa !14 + %54 = load ptr, ptr %53, align 8 + tail call void %54(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.0.0.copyload.i.i.i, i64 noundef %48) br label %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit -_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit: ; preds = %46, %53 - store i64 %49, ptr %47, align 8, !tbaa !8 - %56 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.i.i, i64 8 - %57 = load ptr, ptr %56, align 8, !tbaa !16 - %58 = getelementptr inbounds nuw i8, ptr %57, i64 %48 - store i8 %1, ptr %58, align 1, !tbaa !17 +_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit: ; preds = %45, %52 + store i64 %48, ptr %46, align 8, !tbaa !8 + %55 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.i.i, i64 8 + %56 = load ptr, ptr %55, align 8, !tbaa !16 + %57 = getelementptr inbounds nuw i8, ptr %56, i64 %47 + store i8 %1, ptr %57, align 1, !tbaa !17 br label %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE12write_paddedINS1_18arg_formatter_baseIS4_NS1_13error_handlerEE11char_writerEEEvRKNS0_18basic_format_specsIcEEOT_.exit -_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE12write_paddedINS1_18arg_formatter_baseIS4_NS1_13error_handlerEE11char_writerEEEvRKNS0_18basic_format_specsIcEEOT_.exit: ; preds = %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit47.i, %42, %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit.i, %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE7reserveEm.exit.i, %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit +_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE12write_paddedINS1_18arg_formatter_baseIS4_NS1_13error_handlerEE11char_writerEEEvRKNS0_18basic_format_specsIcEEOT_.exit: ; preds = %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit47.i, %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit43.i, %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit.i, %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE7reserveEm.exit.i, %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit ret void } @@ -60430,7 +60430,7 @@ _ZSt6fill_nIPwmwET_S1_T0_RKT1_.exit: ; preds = %.lr.ph.i.i.i.i 39: ; preds = %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIwEEE7reserveEm.exit41 %40 = lshr i64 %31, 1 %41 = icmp eq i32 %4, 2 - br i1 %41, label %.loopexit, label %42 + br i1 %41, label %_ZSt6fill_nIPwmwET_S1_T0_RKT1_.exit47, label %42 42: ; preds = %39 %.idx.i.i42 = shl nuw nsw i64 %40, 2 @@ -60442,9 +60442,9 @@ _ZSt6fill_nIPwmwET_S1_T0_RKT1_.exit: ; preds = %.lr.ph.i.i.i.i store i32 %30, ptr %.06.i.i.i.i44, align 4, !tbaa !118 %44 = getelementptr inbounds nuw i8, ptr %.06.i.i.i.i44, i64 4 %.not.i.i.i.i45 = icmp eq ptr %44, %43 - br i1 %.not.i.i.i.i45, label %.loopexit, label %.lr.ph.i.i.i.i43, !llvm.loop !842 + br i1 %.not.i.i.i.i45, label %_ZSt6fill_nIPwmwET_S1_T0_RKT1_.exit47, label %.lr.ph.i.i.i.i43, !llvm.loop !842 -.loopexit: ; preds = %.lr.ph.i.i.i.i43, %39 +_ZSt6fill_nIPwmwET_S1_T0_RKT1_.exit47: ; preds = %.lr.ph.i.i.i.i43, %39 %.0.i.i46 = phi ptr [ %28, %39 ], [ %43, %.lr.ph.i.i.i.i43 ] %45 = load i32, ptr %2, align 4, !tbaa !1124 store i32 %45, ptr %.0.i.i46, align 4, !tbaa !118 @@ -60454,8 +60454,8 @@ _ZSt6fill_nIPwmwET_S1_T0_RKT1_.exit: ; preds = %.lr.ph.i.i.i.i %48 = getelementptr inbounds nuw i8, ptr %47, i64 %.idx.i.i48 br label %.lr.ph.i.i.i.i49 -.lr.ph.i.i.i.i49: ; preds = %.lr.ph.i.i.i.i49, %.loopexit - %.06.i.i.i.i50 = phi ptr [ %49, %.lr.ph.i.i.i.i49 ], [ %47, %.loopexit ] +.lr.ph.i.i.i.i49: ; preds = %.lr.ph.i.i.i.i49, %_ZSt6fill_nIPwmwET_S1_T0_RKT1_.exit47 + %.06.i.i.i.i50 = phi ptr [ %49, %.lr.ph.i.i.i.i49 ], [ %47, %_ZSt6fill_nIPwmwET_S1_T0_RKT1_.exit47 ] store i32 %30, ptr %.06.i.i.i.i50, align 4, !tbaa !118 %49 = getelementptr inbounds nuw i8, ptr %.06.i.i.i.i50, i64 4 %.not.i.i.i.i51 = icmp eq ptr %49, %48 diff --git a/bench/duckdb/optimized/ub_duckdb_common.ll b/bench/duckdb/optimized/ub_duckdb_common.ll index 30095ea17dd..9d596554461 100644 --- a/bench/duckdb/optimized/ub_duckdb_common.ll +++ b/bench/duckdb/optimized/ub_duckdb_common.ll @@ -190011,7 +190011,7 @@ define linkonce_odr void @_ZN10duckdb_fmt2v68internal18arg_formatter_baseINS0_12 %3 = getelementptr inbounds nuw i8, ptr %0, i64 16 %4 = load ptr, ptr %3, align 8, !tbaa !2964 %.not = icmp eq ptr %4, null - br i1 %.not, label %46, label %5 + br i1 %.not, label %45, label %5 5: ; preds = %2 %6 = load i32, ptr %4, align 4, !tbaa !2946 @@ -190079,52 +190079,52 @@ _ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit.i: ; preds = %_ZN10duckdb_fmt2v68 37: ; preds = %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE7reserveEm.exit41.i %38 = lshr i64 %32, 1 %39 = icmp eq i32 %6, 2 - br i1 %39, label %42, label %40 + br i1 %39, label %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit43.i, label %40 40: ; preds = %37 %41 = getelementptr inbounds nuw i8, ptr %29, i64 %38 tail call void @llvm.memset.p0.i64(ptr align 1 %29, i8 %31, i64 %38, i1 false) - br label %42 + br label %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit43.i -42: ; preds = %40, %37 +_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit43.i: ; preds = %40, %37 %.0.i.i42.i = phi ptr [ %29, %37 ], [ %41, %40 ] store i8 %1, ptr %.0.i.i42.i, align 1, !tbaa !73 - %43 = sub nsw i64 %32, %38 - %44 = getelementptr inbounds nuw i8, ptr %.0.i.i42.i, i64 1 - tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %44, i8 %31, i64 %43, i1 false) + %42 = sub nsw i64 %32, %38 + %43 = getelementptr inbounds nuw i8, ptr %.0.i.i42.i, i64 1 + tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %43, i8 %31, i64 %42, i1 false) br label %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE12write_paddedINS1_18arg_formatter_baseIS4_NS1_13error_handlerEE11char_writerEEEvRKNS0_18basic_format_specsIcEEOT_.exit _ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit47.i: ; preds = %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE7reserveEm.exit41.i - %45 = getelementptr inbounds nuw i8, ptr %29, i64 1 + %44 = getelementptr inbounds nuw i8, ptr %29, i64 1 store i8 %1, ptr %29, align 1, !tbaa !73 - tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %45, i8 %31, i64 %32, i1 false) + tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %44, i8 %31, i64 %32, i1 false) br label %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE12write_paddedINS1_18arg_formatter_baseIS4_NS1_13error_handlerEE11char_writerEEEvRKNS0_18basic_format_specsIcEEOT_.exit -46: ; preds = %2 +45: ; preds = %2 %.sroa.0.0.copyload.i.i.i = load ptr, ptr %0, align 8 - %47 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.i.i, i64 16 - %48 = load i64, ptr %47, align 8, !tbaa !802 - %49 = add i64 %48, 1 - %50 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.i.i, i64 24 - %51 = load i64, ptr %50, align 8, !tbaa !793 - %52 = icmp ugt i64 %49, %51 - br i1 %52, label %53, label %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit + %46 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.i.i, i64 16 + %47 = load i64, ptr %46, align 8, !tbaa !802 + %48 = add i64 %47, 1 + %49 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.i.i, i64 24 + %50 = load i64, ptr %49, align 8, !tbaa !793 + %51 = icmp ugt i64 %48, %50 + br i1 %51, label %52, label %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit -53: ; preds = %46 - %54 = load ptr, ptr %.sroa.0.0.copyload.i.i.i, align 8, !tbaa !31 - %55 = load ptr, ptr %54, align 8 - tail call void %55(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.0.0.copyload.i.i.i, i64 noundef %49) +52: ; preds = %45 + %53 = load ptr, ptr %.sroa.0.0.copyload.i.i.i, align 8, !tbaa !31 + %54 = load ptr, ptr %53, align 8 + tail call void %54(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.0.0.copyload.i.i.i, i64 noundef %48) br label %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit -_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit: ; preds = %46, %53 - store i64 %49, ptr %47, align 8, !tbaa !802 - %56 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.i.i, i64 8 - %57 = load ptr, ptr %56, align 8, !tbaa !791 - %58 = getelementptr inbounds nuw i8, ptr %57, i64 %48 - store i8 %1, ptr %58, align 1, !tbaa !73 +_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit: ; preds = %45, %52 + store i64 %48, ptr %46, align 8, !tbaa !802 + %55 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.i.i, i64 8 + %56 = load ptr, ptr %55, align 8, !tbaa !791 + %57 = getelementptr inbounds nuw i8, ptr %56, i64 %47 + store i8 %1, ptr %57, align 1, !tbaa !73 br label %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE12write_paddedINS1_18arg_formatter_baseIS4_NS1_13error_handlerEE11char_writerEEEvRKNS0_18basic_format_specsIcEEOT_.exit -_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE12write_paddedINS1_18arg_formatter_baseIS4_NS1_13error_handlerEE11char_writerEEEvRKNS0_18basic_format_specsIcEEOT_.exit: ; preds = %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit47.i, %42, %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit.i, %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE7reserveEm.exit.i, %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit +_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE12write_paddedINS1_18arg_formatter_baseIS4_NS1_13error_handlerEE11char_writerEEEvRKNS0_18basic_format_specsIcEEOT_.exit: ; preds = %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit47.i, %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit43.i, %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit.i, %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE7reserveEm.exit.i, %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit ret void } diff --git a/bench/duckdb/optimized/ub_duckdb_core_functions_string.ll b/bench/duckdb/optimized/ub_duckdb_core_functions_string.ll index 60fe1e1e6b5..4d8db6ca512 100644 --- a/bench/duckdb/optimized/ub_duckdb_core_functions_string.ll +++ b/bench/duckdb/optimized/ub_duckdb_core_functions_string.ll @@ -114384,7 +114384,7 @@ define linkonce_odr void @_ZN10duckdb_fmt2v68internal18arg_formatter_baseINS0_12 %3 = getelementptr inbounds nuw i8, ptr %0, i64 16 %4 = load ptr, ptr %3, align 8, !tbaa !2038 %.not = icmp eq ptr %4, null - br i1 %.not, label %46, label %5 + br i1 %.not, label %45, label %5 5: ; preds = %2 %6 = load i32, ptr %4, align 4, !tbaa !2020 @@ -114452,52 +114452,52 @@ _ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit.i: ; preds = %_ZN10duckdb_fmt2v68 37: ; preds = %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE7reserveEm.exit41.i %38 = lshr i64 %32, 1 %39 = icmp eq i32 %6, 2 - br i1 %39, label %42, label %40 + br i1 %39, label %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit43.i, label %40 40: ; preds = %37 %41 = getelementptr inbounds nuw i8, ptr %29, i64 %38 tail call void @llvm.memset.p0.i64(ptr align 1 %29, i8 %31, i64 %38, i1 false) - br label %42 + br label %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit43.i -42: ; preds = %40, %37 +_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit43.i: ; preds = %40, %37 %.0.i.i42.i = phi ptr [ %29, %37 ], [ %41, %40 ] store i8 %1, ptr %.0.i.i42.i, align 1, !tbaa !65 - %43 = sub nsw i64 %32, %38 - %44 = getelementptr inbounds nuw i8, ptr %.0.i.i42.i, i64 1 - tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %44, i8 %31, i64 %43, i1 false) + %42 = sub nsw i64 %32, %38 + %43 = getelementptr inbounds nuw i8, ptr %.0.i.i42.i, i64 1 + tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %43, i8 %31, i64 %42, i1 false) br label %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE12write_paddedINS1_18arg_formatter_baseIS4_NS1_13error_handlerEE11char_writerEEEvRKNS0_18basic_format_specsIcEEOT_.exit _ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit47.i: ; preds = %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE7reserveEm.exit41.i - %45 = getelementptr inbounds nuw i8, ptr %29, i64 1 + %44 = getelementptr inbounds nuw i8, ptr %29, i64 1 store i8 %1, ptr %29, align 1, !tbaa !65 - tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %45, i8 %31, i64 %32, i1 false) + tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %44, i8 %31, i64 %32, i1 false) br label %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE12write_paddedINS1_18arg_formatter_baseIS4_NS1_13error_handlerEE11char_writerEEEvRKNS0_18basic_format_specsIcEEOT_.exit -46: ; preds = %2 +45: ; preds = %2 %.sroa.0.0.copyload.i.i.i = load ptr, ptr %0, align 8 - %47 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.i.i, i64 16 - %48 = load i64, ptr %47, align 8, !tbaa !2015 - %49 = add i64 %48, 1 - %50 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.i.i, i64 24 - %51 = load i64, ptr %50, align 8, !tbaa !2006 - %52 = icmp ugt i64 %49, %51 - br i1 %52, label %53, label %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit - -53: ; preds = %46 - %54 = load ptr, ptr %.sroa.0.0.copyload.i.i.i, align 8, !tbaa !58 - %55 = load ptr, ptr %54, align 8 - tail call void %55(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.0.0.copyload.i.i.i, i64 noundef %49) + %46 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.i.i, i64 16 + %47 = load i64, ptr %46, align 8, !tbaa !2015 + %48 = add i64 %47, 1 + %49 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.i.i, i64 24 + %50 = load i64, ptr %49, align 8, !tbaa !2006 + %51 = icmp ugt i64 %48, %50 + br i1 %51, label %52, label %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit + +52: ; preds = %45 + %53 = load ptr, ptr %.sroa.0.0.copyload.i.i.i, align 8, !tbaa !58 + %54 = load ptr, ptr %53, align 8 + tail call void %54(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.0.0.copyload.i.i.i, i64 noundef %48) br label %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit -_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit: ; preds = %46, %53 - store i64 %49, ptr %47, align 8, !tbaa !2015 - %56 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.i.i, i64 8 - %57 = load ptr, ptr %56, align 8, !tbaa !2004 - %58 = getelementptr inbounds nuw i8, ptr %57, i64 %48 - store i8 %1, ptr %58, align 1, !tbaa !65 +_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit: ; preds = %45, %52 + store i64 %48, ptr %46, align 8, !tbaa !2015 + %55 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.i.i, i64 8 + %56 = load ptr, ptr %55, align 8, !tbaa !2004 + %57 = getelementptr inbounds nuw i8, ptr %56, i64 %47 + store i8 %1, ptr %57, align 1, !tbaa !65 br label %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE12write_paddedINS1_18arg_formatter_baseIS4_NS1_13error_handlerEE11char_writerEEEvRKNS0_18basic_format_specsIcEEOT_.exit -_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE12write_paddedINS1_18arg_formatter_baseIS4_NS1_13error_handlerEE11char_writerEEEvRKNS0_18basic_format_specsIcEEOT_.exit: ; preds = %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit47.i, %42, %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit.i, %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE7reserveEm.exit.i, %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit +_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE12write_paddedINS1_18arg_formatter_baseIS4_NS1_13error_handlerEE11char_writerEEEvRKNS0_18basic_format_specsIcEEOT_.exit: ; preds = %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit47.i, %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit43.i, %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit.i, %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE7reserveEm.exit.i, %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit ret void } diff --git a/bench/elfshaker-rs/optimized/efmso49nxcvtljggmhiyzv2jj.ll b/bench/elfshaker-rs/optimized/efmso49nxcvtljggmhiyzv2jj.ll index ec4893e28f8..574a19a2486 100644 --- a/bench/elfshaker-rs/optimized/efmso49nxcvtljggmhiyzv2jj.ll +++ b/bench/elfshaker-rs/optimized/efmso49nxcvtljggmhiyzv2jj.ll @@ -3308,7 +3308,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %8 = load i64, ptr %7, align 8, !noundef !6 %9 = load ptr, ptr %0, align 8, !nonnull !6, !noundef !6 %10 = icmp eq i64 %8, 0 - br i1 %10, label %.loopexit55, label %.lr.ph.i + br i1 %10, label %.loopexit54, label %.lr.ph.i .lr.ph.i: ; preds = %3, %.lr.ph.i %.sroa.03.06.i = phi i64 [ %18, %.lr.ph.i ], [ %8, %3 ] @@ -3323,9 +3323,9 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %17 = load ptr, ptr %16, align 8, !noalias !436, !nonnull !6, !noundef !6 %18 = add i64 %.sroa.03.06.i, -1 %19 = icmp eq i64 %18, 0 - br i1 %19, label %.loopexit55, label %.lr.ph.i + br i1 %19, label %.loopexit54, label %.lr.ph.i -.loopexit55: ; preds = %.lr.ph.i, %3 +.loopexit54: ; preds = %.lr.ph.i, %3 %.sroa.04.0.lcssa.i = phi ptr [ %9, %3 ], [ %17, %.lr.ph.i ] call void @llvm.lifetime.start.p0(ptr nonnull %6) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %6, ptr noundef nonnull align 8 dereferenceable(64) %1, i64 64, i1 false) @@ -3334,16 +3334,16 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %22 = getelementptr inbounds nuw i8, ptr %5, i64 24 br label %23 -23: ; preds = %.loopexit, %.loopexit55 - %.sroa.0.052 = phi ptr [ %.sroa.04.0.lcssa.i, %.loopexit55 ], [ %.sroa.0.1, %.loopexit ] +23: ; preds = %.loopexit, %.loopexit54 + %.sroa.0.051 = phi ptr [ %.sroa.04.0.lcssa.i, %.loopexit54 ], [ %.sroa.0.1, %.loopexit ] call void @llvm.lifetime.start.p0(ptr nonnull %5) invoke void @"_ZN137_$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$K$C$V$C$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h490a30119a296c6bE"(ptr noalias noundef nonnull sret([32 x i8]) align 8 captures(none) dereferenceable(32) %5, ptr noalias noundef nonnull align 8 dereferenceable(64) %6) to label %26 unwind label %24 -.body: ; preds = %176, %124, %110, %24 - %.pn = phi { ptr, i32 } [ %25, %24 ], [ %111, %110 ], [ %125, %124 ], [ %177, %176 ] +.body: ; preds = %173, %121, %107, %24 + %.pn = phi { ptr, i32 } [ %25, %24 ], [ %108, %107 ], [ %122, %121 ], [ %174, %173 ] invoke void @"_ZN4core3ptr220drop_in_place$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$u32$C$elfshaker..packidx..ObjectMetadata$C$alloc..vec..into_iter..IntoIter$LT$$LP$u32$C$elfshaker..packidx..ObjectMetadata$RP$$GT$$GT$$GT$17h788b0b15302a2384E"(ptr noalias noundef nonnull align 8 dereferenceable(64) %6) #27 - to label %195 unwind label %193 + to label %192 unwind label %190 24: ; preds = %23 %25 = landingpad { ptr, i32 } @@ -3359,10 +3359,10 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %30 = load i32, ptr %20, align 8, !noundef !6 %31 = load i64, ptr %21, align 8, !noundef !6 %32 = load i64, ptr %22, align 8, !noundef !6 - %33 = getelementptr inbounds nuw i8, ptr %.sroa.0.052, i64 230 + %33 = getelementptr inbounds nuw i8, ptr %.sroa.0.051, i64 230 %34 = load i16, ptr %33, align 2, !noundef !6 %35 = icmp ult i16 %34, 11 - br i1 %35, label %186, label %.preheader + br i1 %35, label %183, label %.preheader 36: ; preds = %26 call void @llvm.lifetime.end.p0(ptr nonnull %5) @@ -3404,7 +3404,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %52 = icmp ult i16 %51, 5 br i1 %52, label %54, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h65961c720cdf3cfeE.exit.i" -"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h65961c720cdf3cfeE.exit.i": ; preds = %101, %40 +"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h65961c720cdf3cfeE.exit.i": ; preds = %98, %40 %53 = icmp eq i64 %46, 0 br i1 %53, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17h495e8ecb811dc167E.exit", label %.lr.ph.i15 @@ -3415,306 +3415,297 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %57 = load i16, ptr %56, align 2, !noalias !448, !noundef !6 %58 = zext nneg i16 %51 to i64 %.not.i.i = icmp ugt i16 %narrow.i, %57 - br i1 %.not.i.i, label %.noexc16, label %59, !prof !27 + br i1 %.not.i.i, label %.noexc16, label %_ZN5alloc11collections5btree4node13move_to_slice17ha03598a9e61be67cE.exit.i.i, !prof !27 .noexc16: ; preds = %54 call void @_ZN4core9panicking5panic17h13ee8adf815f0d87E(ptr noalias noundef nonnull readonly align 1 @anon.467722f710d552998dd01561bebdcdae.62, i64 noundef 39, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.467722f710d552998dd01561bebdcdae.63) #28 unreachable -59: ; preds = %54 - %60 = zext i16 %57 to i64 - %61 = sub nuw nsw i64 %60, %55 - %62 = trunc nuw i64 %61 to i16 - store i16 %62, ptr %56, align 2, !noalias !448 +_ZN5alloc11collections5btree4node13move_to_slice17ha03598a9e61be67cE.exit.i.i: ; preds = %54 + %59 = zext i16 %57 to i64 + %60 = sub nuw nsw i64 %59, %55 + %61 = trunc nuw i64 %60 to i16 + store i16 %61, ptr %56, align 2, !noalias !448 store i16 5, ptr %50, align 2, !noalias !448 - %63 = getelementptr inbounds nuw i8, ptr %49, i64 184 - %64 = getelementptr inbounds nuw i32, ptr %63, i64 %55 - %65 = shl nuw nsw i64 %58, 2 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %64, ptr nonnull align 4 %63, i64 %65, i1 false), !alias.scope !451, !noalias !448 - %66 = getelementptr inbounds nuw { [2 x i64] }, ptr %49, i64 %55 - %67 = shl nuw nsw i64 %58, 4 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %66, ptr nonnull align 8 %49, i64 %67, i1 false), !alias.scope !454, !noalias !448 - %68 = add nuw nsw i64 %61, 1 - %69 = sub nuw nsw i64 %60, %68 - %70 = add nsw i64 %55, -1 - %71 = icmp eq i64 %69, %70 - br i1 %71, label %_ZN5alloc11collections5btree4node13move_to_slice17ha03598a9e61be67cE.exit.i.i, label %.noexc17, !prof !26 - -.noexc17: ; preds = %59 - call void @_ZN4core9panicking5panic17h13ee8adf815f0d87E(ptr noalias noundef nonnull readonly align 1 @anon.467722f710d552998dd01561bebdcdae.51, i64 noundef 40, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.467722f710d552998dd01561bebdcdae.52) #28 - unreachable - -_ZN5alloc11collections5btree4node13move_to_slice17ha03598a9e61be67cE.exit.i.i: ; preds = %59 - %72 = getelementptr inbounds nuw i8, ptr %45, i64 184 - %73 = getelementptr inbounds nuw i32, ptr %72, i64 %68 - %74 = shl nuw nsw i64 %69, 2 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %63, ptr nonnull readonly align 4 %73, i64 %74, i1 false), !alias.scope !457, !noalias !448 - %75 = getelementptr inbounds nuw { [2 x i64] }, ptr %45, i64 %68 - %76 = shl nuw nsw i64 %69, 4 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %49, ptr nonnull readonly align 8 %75, i64 %76, i1 false), !alias.scope !461, !noalias !448 - %77 = getelementptr inbounds nuw i32, ptr %72, i64 %61 - %78 = load i32, ptr %77, align 4, !noalias !448, !noundef !6 - %79 = getelementptr inbounds nuw { [2 x i64] }, ptr %45, i64 %61 - %80 = load i64, ptr %79, align 8, !noalias !448, !noundef !6 - %81 = getelementptr inbounds nuw i8, ptr %79, i64 8 - %82 = load i64, ptr %81, align 8, !noalias !448, !noundef !6 - %83 = getelementptr inbounds nuw i8, ptr %.sroa.03.010.i, i64 184 - %84 = getelementptr inbounds nuw i32, ptr %83, i64 %42 - %85 = getelementptr inbounds nuw { [2 x i64] }, ptr %.sroa.03.010.i, i64 %42 - %86 = load i32, ptr %84, align 4, !noalias !465, !noundef !6 - store i32 %78, ptr %84, align 4, !noalias !465 - %87 = load i64, ptr %85, align 8, !noalias !465, !noundef !6 - %88 = getelementptr inbounds nuw i8, ptr %85, i64 8 - %89 = load i64, ptr %88, align 8, !noalias !465, !noundef !6 - store i64 %80, ptr %85, align 8, !noalias !465 - store i64 %82, ptr %88, align 8, !noalias !465 - %90 = getelementptr inbounds nuw i32, ptr %63, i64 %69 - store i32 %86, ptr %90, align 4, !noalias !448 - %91 = getelementptr inbounds nuw { [2 x i64] }, ptr %49, i64 %69 - store i64 %87, ptr %91, align 8, !noalias !448 - %92 = getelementptr inbounds nuw i8, ptr %91, i64 8 - store i64 %89, ptr %92, align 8, !noalias !448 + %62 = getelementptr inbounds nuw i8, ptr %49, i64 184 + %63 = getelementptr inbounds nuw i32, ptr %62, i64 %55 + %64 = shl nuw nsw i64 %58, 2 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %63, ptr nonnull align 4 %62, i64 %64, i1 false), !alias.scope !451, !noalias !448 + %65 = getelementptr inbounds nuw { [2 x i64] }, ptr %49, i64 %55 + %66 = shl nuw nsw i64 %58, 4 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %65, ptr nonnull align 8 %49, i64 %66, i1 false), !alias.scope !454, !noalias !448 + %67 = add nuw nsw i64 %60, 1 + %68 = sub nuw nsw i64 %59, %67 + %69 = getelementptr inbounds nuw i8, ptr %45, i64 184 + %70 = getelementptr inbounds nuw i32, ptr %69, i64 %67 + %71 = shl nuw nsw i64 %68, 2 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %62, ptr nonnull readonly align 4 %70, i64 %71, i1 false), !alias.scope !457, !noalias !448 + %72 = getelementptr inbounds nuw { [2 x i64] }, ptr %45, i64 %67 + %73 = shl nuw nsw i64 %68, 4 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %49, ptr nonnull readonly align 8 %72, i64 %73, i1 false), !alias.scope !461, !noalias !448 + %74 = getelementptr inbounds nuw i32, ptr %69, i64 %60 + %75 = load i32, ptr %74, align 4, !noalias !448, !noundef !6 + %76 = getelementptr inbounds nuw { [2 x i64] }, ptr %45, i64 %60 + %77 = load i64, ptr %76, align 8, !noalias !448, !noundef !6 + %78 = getelementptr inbounds nuw i8, ptr %76, i64 8 + %79 = load i64, ptr %78, align 8, !noalias !448, !noundef !6 + %80 = getelementptr inbounds nuw i8, ptr %.sroa.03.010.i, i64 184 + %81 = getelementptr inbounds nuw i32, ptr %80, i64 %42 + %82 = getelementptr inbounds nuw { [2 x i64] }, ptr %.sroa.03.010.i, i64 %42 + %83 = load i32, ptr %81, align 4, !noalias !465, !noundef !6 + store i32 %75, ptr %81, align 4, !noalias !465 + %84 = load i64, ptr %82, align 8, !noalias !465, !noundef !6 + %85 = getelementptr inbounds nuw i8, ptr %82, i64 8 + %86 = load i64, ptr %85, align 8, !noalias !465, !noundef !6 + store i64 %77, ptr %82, align 8, !noalias !465 + store i64 %79, ptr %85, align 8, !noalias !465 + %87 = getelementptr inbounds nuw i32, ptr %62, i64 %68 + store i32 %83, ptr %87, align 4, !noalias !448 + %88 = getelementptr inbounds nuw { [2 x i64] }, ptr %49, i64 %68 + store i64 %84, ptr %88, align 8, !noalias !448 + %89 = getelementptr inbounds nuw i8, ptr %88, i64 8 + store i64 %86, ptr %89, align 8, !noalias !448 %cond.i = icmp eq i64 %46, 0 - br i1 %cond.i, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17h495e8ecb811dc167E.exit", label %93 - -93: ; preds = %_ZN5alloc11collections5btree4node13move_to_slice17ha03598a9e61be67cE.exit.i.i - %94 = getelementptr inbounds nuw i8, ptr %49, i64 232 - %95 = getelementptr inbounds nuw ptr, ptr %94, i64 %55 - %96 = shl nuw nsw i64 %58, 3 - %97 = add nuw nsw i64 %96, 8 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %95, ptr noundef nonnull align 8 dereferenceable(1) %94, i64 %97, i1 false), !alias.scope !468, !noalias !448 - %98 = getelementptr inbounds nuw i8, ptr %45, i64 232 - %99 = getelementptr inbounds nuw ptr, ptr %98, i64 %68 - %100 = shl nuw nsw i64 %55, 3 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %94, ptr noundef nonnull readonly align 8 dereferenceable(1) %99, i64 %100, i1 false), !alias.scope !471, !noalias !448 - br label %101 - -101: ; preds = %101, %93 - %.sroa.0.06.i.i.i = phi i64 [ 0, %93 ], [ %102, %101 ] - %102 = add nuw nsw i64 %.sroa.0.06.i.i.i, 1 - %103 = getelementptr inbounds nuw ptr, ptr %94, i64 %.sroa.0.06.i.i.i - %104 = load ptr, ptr %103, align 8, !noalias !475, !nonnull !6, !noundef !6 - %105 = getelementptr inbounds nuw i8, ptr %104, i64 176 - store ptr %49, ptr %105, align 8, !noalias !480 - %106 = trunc nuw nsw i64 %.sroa.0.06.i.i.i to i16 - %107 = getelementptr inbounds nuw i8, ptr %104, i64 228 - store i16 %106, ptr %107, align 4, !noalias !480 + br i1 %cond.i, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17h495e8ecb811dc167E.exit", label %90 + +90: ; preds = %_ZN5alloc11collections5btree4node13move_to_slice17ha03598a9e61be67cE.exit.i.i + %91 = getelementptr inbounds nuw i8, ptr %49, i64 232 + %92 = getelementptr inbounds nuw ptr, ptr %91, i64 %55 + %93 = shl nuw nsw i64 %58, 3 + %94 = add nuw nsw i64 %93, 8 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %92, ptr noundef nonnull align 8 dereferenceable(1) %91, i64 %94, i1 false), !alias.scope !468, !noalias !448 + %95 = getelementptr inbounds nuw i8, ptr %45, i64 232 + %96 = getelementptr inbounds nuw ptr, ptr %95, i64 %67 + %97 = shl nuw nsw i64 %55, 3 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %91, ptr noundef nonnull readonly align 8 dereferenceable(1) %96, i64 %97, i1 false), !alias.scope !471, !noalias !448 + br label %98 + +98: ; preds = %98, %90 + %.sroa.0.06.i.i.i = phi i64 [ 0, %90 ], [ %99, %98 ] + %99 = add nuw nsw i64 %.sroa.0.06.i.i.i, 1 + %100 = getelementptr inbounds nuw ptr, ptr %91, i64 %.sroa.0.06.i.i.i + %101 = load ptr, ptr %100, align 8, !noalias !475, !nonnull !6, !noundef !6 + %102 = getelementptr inbounds nuw i8, ptr %101, i64 176 + store ptr %49, ptr %102, align 8, !noalias !480 + %103 = trunc nuw nsw i64 %.sroa.0.06.i.i.i to i16 + %104 = getelementptr inbounds nuw i8, ptr %101, i64 228 + store i16 %103, ptr %104, align 4, !noalias !480 %exitcond.not.i.i.i = icmp eq i64 %.sroa.0.06.i.i.i, 5 - br i1 %exitcond.not.i.i.i, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h65961c720cdf3cfeE.exit.i", label %101 + br i1 %exitcond.not.i.i.i, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h65961c720cdf3cfeE.exit.i", label %98 "_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17h495e8ecb811dc167E.exit": ; preds = %_ZN5alloc11collections5btree4node13move_to_slice17ha03598a9e61be67cE.exit.i.i, %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h65961c720cdf3cfeE.exit.i", %36 ret void -.preheader: ; preds = %29, %112 - %.sroa.5.0 = phi i64 [ %113, %112 ], [ 0, %29 ] - %.sroa.0.0 = phi ptr [ %109, %112 ], [ %.sroa.0.052, %29 ] - %108 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 176 - %109 = load ptr, ptr %108, align 8, !noalias !481, !noundef !6 - %.not.i19 = icmp eq ptr %109, null - br i1 %.not.i19, label %117, label %112 +.preheader: ; preds = %29, %109 + %.sroa.5.0 = phi i64 [ %110, %109 ], [ 0, %29 ] + %.sroa.0.0 = phi ptr [ %106, %109 ], [ %.sroa.0.051, %29 ] + %105 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 176 + %106 = load ptr, ptr %105, align 8, !noalias !481, !noundef !6 + %.not.i18 = icmp eq ptr %106, null + br i1 %.not.i18, label %114, label %109 -110: ; preds = %146, %139 - %111 = landingpad { ptr, i32 } +107: ; preds = %143, %136 + %108 = landingpad { ptr, i32 } cleanup br label %.body -112: ; preds = %.preheader - %113 = add i64 %.sroa.5.0, 1 - %114 = getelementptr inbounds nuw i8, ptr %109, i64 230 - %115 = load i16, ptr %114, align 2, !noundef !6 - %116 = icmp ult i16 %115, 11 - br i1 %116, label %.loopexit54, label %.preheader +109: ; preds = %.preheader + %110 = add i64 %.sroa.5.0, 1 + %111 = getelementptr inbounds nuw i8, ptr %106, i64 230 + %112 = load i16, ptr %111, align 2, !noundef !6 + %113 = icmp ult i16 %112, 11 + br i1 %113, label %.loopexit53, label %.preheader -117: ; preds = %.preheader +114: ; preds = %.preheader call void @llvm.experimental.noalias.scope.decl(metadata !484) - %118 = load ptr, ptr %0, align 8, !alias.scope !484, !nonnull !6, !noundef !6 - %119 = load i64, ptr %7, align 8, !alias.scope !484, !noundef !6 - %120 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !484 - %121 = call noalias noundef align 8 dereferenceable_or_null(328) ptr @_RNvCshjvJWTf7CV5_7___rustc12___rust_alloc(i64 noundef range(i64 4, 329) 328, i64 noundef range(i64 4, 9) 8) #30, !noalias !484 - %122 = icmp eq ptr %121, null - br i1 %122, label %123, label %128, !prof !27 - -123: ; preds = %117 + %115 = load ptr, ptr %0, align 8, !alias.scope !484, !nonnull !6, !noundef !6 + %116 = load i64, ptr %7, align 8, !alias.scope !484, !noundef !6 + %117 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !484 + %118 = call noalias noundef align 8 dereferenceable_or_null(328) ptr @_RNvCshjvJWTf7CV5_7___rustc12___rust_alloc(i64 noundef range(i64 4, 329) 328, i64 noundef range(i64 4, 9) 8) #30, !noalias !484 + %119 = icmp eq ptr %118, null + br i1 %119, label %120, label %125, !prof !27 + +120: ; preds = %114 invoke void @_ZN5alloc5alloc18handle_alloc_error17haa66aaa8cfcf3614E(i64 noundef 8, i64 noundef 328) #28 - to label %.noexc.i unwind label %124, !noalias !484 + to label %.noexc.i unwind label %121, !noalias !484 -.noexc.i: ; preds = %123 +.noexc.i: ; preds = %120 unreachable -124: ; preds = %123 - %125 = landingpad { ptr, i32 } +121: ; preds = %120 + %122 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17h85819774d71bbb8dE"(ptr noalias noundef nonnull align 1 %4) #27 - to label %.body unwind label %126, !noalias !484 + to label %.body unwind label %123, !noalias !484 -126: ; preds = %124 - %127 = landingpad { ptr, i32 } +123: ; preds = %121 + %124 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hccd47ddd364deb23E() #29, !noalias !484 unreachable -128: ; preds = %117 - %129 = getelementptr inbounds nuw i8, ptr %121, i64 176 - store ptr null, ptr %129, align 8, !noalias !484 - %130 = getelementptr inbounds nuw i8, ptr %121, i64 230 - store i16 0, ptr %130, align 2, !noalias !484 - %131 = getelementptr inbounds nuw i8, ptr %121, i64 232 - store ptr %118, ptr %131, align 8, !noalias !484 - %132 = add i64 %119, 1 - %133 = getelementptr inbounds nuw i8, ptr %118, i64 176 - store ptr %121, ptr %133, align 8, !noalias !487 - %134 = getelementptr inbounds nuw i8, ptr %118, i64 228 - store i16 0, ptr %134, align 4, !noalias !494 - store ptr %121, ptr %0, align 8, !alias.scope !484 - store i64 %132, ptr %7, align 8, !alias.scope !484 - br label %.loopexit54 - -.loopexit54: ; preds = %112, %128 - %.sroa.036.0 = phi ptr [ %121, %128 ], [ %109, %112 ] - %.sroa.637.0 = phi i64 [ %132, %128 ], [ %113, %112 ] - %135 = add i64 %.sroa.637.0, -1 - %136 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %137 = call noalias noundef align 8 dereferenceable_or_null(232) ptr @_RNvCshjvJWTf7CV5_7___rustc12___rust_alloc(i64 noundef range(i64 4, 329) 232, i64 noundef range(i64 4, 9) 8) #30 - %138 = icmp eq ptr %137, null - br i1 %138, label %139, label %140, !prof !27 - -139: ; preds = %.loopexit54 +125: ; preds = %114 + %126 = getelementptr inbounds nuw i8, ptr %118, i64 176 + store ptr null, ptr %126, align 8, !noalias !484 + %127 = getelementptr inbounds nuw i8, ptr %118, i64 230 + store i16 0, ptr %127, align 2, !noalias !484 + %128 = getelementptr inbounds nuw i8, ptr %118, i64 232 + store ptr %115, ptr %128, align 8, !noalias !484 + %129 = add i64 %116, 1 + %130 = getelementptr inbounds nuw i8, ptr %115, i64 176 + store ptr %118, ptr %130, align 8, !noalias !487 + %131 = getelementptr inbounds nuw i8, ptr %115, i64 228 + store i16 0, ptr %131, align 4, !noalias !494 + store ptr %118, ptr %0, align 8, !alias.scope !484 + store i64 %129, ptr %7, align 8, !alias.scope !484 + br label %.loopexit53 + +.loopexit53: ; preds = %109, %125 + %.sroa.035.0 = phi ptr [ %118, %125 ], [ %106, %109 ] + %.sroa.636.0 = phi i64 [ %129, %125 ], [ %110, %109 ] + %132 = add i64 %.sroa.636.0, -1 + %133 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %134 = call noalias noundef align 8 dereferenceable_or_null(232) ptr @_RNvCshjvJWTf7CV5_7___rustc12___rust_alloc(i64 noundef range(i64 4, 329) 232, i64 noundef range(i64 4, 9) 8) #30 + %135 = icmp eq ptr %134, null + br i1 %135, label %136, label %137, !prof !27 + +136: ; preds = %.loopexit53 invoke void @_ZN5alloc5alloc18handle_alloc_error17haa66aaa8cfcf3614E(i64 noundef 8, i64 noundef 232) #28 - to label %.noexc20 unwind label %110 + to label %.noexc19 unwind label %107 -.noexc20: ; preds = %139 +.noexc19: ; preds = %136 unreachable -140: ; preds = %.loopexit54 - %141 = getelementptr inbounds nuw i8, ptr %137, i64 176 - store ptr null, ptr %141, align 8 - %142 = getelementptr inbounds nuw i8, ptr %137, i64 230 - store i16 0, ptr %142, align 2 - %.not = icmp eq i64 %135, 0 +137: ; preds = %.loopexit53 + %138 = getelementptr inbounds nuw i8, ptr %134, i64 176 + store ptr null, ptr %138, align 8 + %139 = getelementptr inbounds nuw i8, ptr %134, i64 230 + store i16 0, ptr %139, align 2 + %.not = icmp eq i64 %132, 0 br i1 %.not, label %._crit_edge, label %.lr.ph -._crit_edge: ; preds = %_ZN5alloc11collections5btree3mem7replace17hd0886a438924d0afE.exit31, %140 - %.sroa.042.0.lcssa = phi ptr [ %137, %140 ], [ %173, %_ZN5alloc11collections5btree3mem7replace17hd0886a438924d0afE.exit31 ] - %143 = getelementptr inbounds nuw i8, ptr %.sroa.036.0, i64 230 - %144 = load i16, ptr %143, align 2, !noundef !6 - %145 = icmp ult i16 %144, 11 - br i1 %145, label %147, label %146, !prof !26 +._crit_edge: ; preds = %_ZN5alloc11collections5btree3mem7replace17hd0886a438924d0afE.exit30, %137 + %.sroa.041.0.lcssa = phi ptr [ %134, %137 ], [ %170, %_ZN5alloc11collections5btree3mem7replace17hd0886a438924d0afE.exit30 ] + %140 = getelementptr inbounds nuw i8, ptr %.sroa.035.0, i64 230 + %141 = load i16, ptr %140, align 2, !noundef !6 + %142 = icmp ult i16 %141, 11 + br i1 %142, label %144, label %143, !prof !26 -146: ; preds = %._crit_edge +143: ; preds = %._crit_edge invoke void @_ZN4core9panicking5panic17h13ee8adf815f0d87E(ptr noalias noundef nonnull readonly align 1 @anon.467722f710d552998dd01561bebdcdae.46, i64 noundef 32, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.467722f710d552998dd01561bebdcdae.50) #28 - to label %.noexc22 unwind label %110 + to label %.noexc21 unwind label %107 -.noexc22: ; preds = %146 +.noexc21: ; preds = %143 unreachable -147: ; preds = %._crit_edge - %148 = zext nneg i16 %144 to i64 - %149 = add nuw nsw i16 %144, 1 - store i16 %149, ptr %143, align 2 - %150 = getelementptr inbounds nuw i8, ptr %.sroa.036.0, i64 184 - %151 = getelementptr inbounds nuw i32, ptr %150, i64 %148 - store i32 %30, ptr %151, align 4 - %152 = getelementptr inbounds nuw { [2 x i64] }, ptr %.sroa.036.0, i64 %148 - store i64 %31, ptr %152, align 8 - %153 = getelementptr inbounds nuw i8, ptr %152, i64 8 - store i64 %32, ptr %153, align 8 - %154 = add nuw nsw i64 %148, 1 - %155 = getelementptr inbounds nuw i8, ptr %.sroa.036.0, i64 232 - %156 = getelementptr inbounds nuw ptr, ptr %155, i64 %154 - store ptr %.sroa.042.0.lcssa, ptr %156, align 8 - %157 = getelementptr inbounds nuw i8, ptr %.sroa.042.0.lcssa, i64 176 - store ptr %.sroa.036.0, ptr %157, align 8, !noalias !495 - %158 = trunc nuw nsw i64 %154 to i16 - %159 = getelementptr inbounds nuw i8, ptr %.sroa.042.0.lcssa, i64 228 - store i16 %158, ptr %159, align 4, !noalias !495 - %160 = icmp eq i64 %.sroa.637.0, 0 - br i1 %160, label %.loopexit, label %.lr.ph.i23 - -.lr.ph.i23: ; preds = %147, %.lr.ph.i23 - %.sroa.03.06.i24 = phi i64 [ %168, %.lr.ph.i23 ], [ %.sroa.637.0, %147 ] - %.sroa.04.05.i25 = phi ptr [ %167, %.lr.ph.i23 ], [ %.sroa.036.0, %147 ] - %161 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i25, i64 230 - %162 = load i16, ptr %161, align 2, !noalias !498, !noundef !6 - %163 = zext nneg i16 %162 to i64 - %164 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i25, i64 232 - %165 = icmp ult i16 %162, 12 - call void @llvm.assume(i1 %165) - %166 = getelementptr inbounds nuw ptr, ptr %164, i64 %163 - %167 = load ptr, ptr %166, align 8, !noalias !501, !nonnull !6, !noundef !6 - %168 = add i64 %.sroa.03.06.i24, -1 - %169 = icmp eq i64 %168, 0 - br i1 %169, label %.loopexit, label %.lr.ph.i23 - -.loopexit: ; preds = %.lr.ph.i23, %147, %186 - %.sroa.0.1 = phi ptr [ %.sroa.0.052, %186 ], [ %.sroa.036.0, %147 ], [ %167, %.lr.ph.i23 ] - %170 = load i64, ptr %2, align 8, !noundef !6 - %171 = add i64 %170, 1 - store i64 %171, ptr %2, align 8 +144: ; preds = %._crit_edge + %145 = zext nneg i16 %141 to i64 + %146 = add nuw nsw i16 %141, 1 + store i16 %146, ptr %140, align 2 + %147 = getelementptr inbounds nuw i8, ptr %.sroa.035.0, i64 184 + %148 = getelementptr inbounds nuw i32, ptr %147, i64 %145 + store i32 %30, ptr %148, align 4 + %149 = getelementptr inbounds nuw { [2 x i64] }, ptr %.sroa.035.0, i64 %145 + store i64 %31, ptr %149, align 8 + %150 = getelementptr inbounds nuw i8, ptr %149, i64 8 + store i64 %32, ptr %150, align 8 + %151 = add nuw nsw i64 %145, 1 + %152 = getelementptr inbounds nuw i8, ptr %.sroa.035.0, i64 232 + %153 = getelementptr inbounds nuw ptr, ptr %152, i64 %151 + store ptr %.sroa.041.0.lcssa, ptr %153, align 8 + %154 = getelementptr inbounds nuw i8, ptr %.sroa.041.0.lcssa, i64 176 + store ptr %.sroa.035.0, ptr %154, align 8, !noalias !495 + %155 = trunc nuw nsw i64 %151 to i16 + %156 = getelementptr inbounds nuw i8, ptr %.sroa.041.0.lcssa, i64 228 + store i16 %155, ptr %156, align 4, !noalias !495 + %157 = icmp eq i64 %.sroa.636.0, 0 + br i1 %157, label %.loopexit, label %.lr.ph.i22 + +.lr.ph.i22: ; preds = %144, %.lr.ph.i22 + %.sroa.03.06.i23 = phi i64 [ %165, %.lr.ph.i22 ], [ %.sroa.636.0, %144 ] + %.sroa.04.05.i24 = phi ptr [ %164, %.lr.ph.i22 ], [ %.sroa.035.0, %144 ] + %158 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i24, i64 230 + %159 = load i16, ptr %158, align 2, !noalias !498, !noundef !6 + %160 = zext nneg i16 %159 to i64 + %161 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i24, i64 232 + %162 = icmp ult i16 %159, 12 + call void @llvm.assume(i1 %162) + %163 = getelementptr inbounds nuw ptr, ptr %161, i64 %160 + %164 = load ptr, ptr %163, align 8, !noalias !501, !nonnull !6, !noundef !6 + %165 = add i64 %.sroa.03.06.i23, -1 + %166 = icmp eq i64 %165, 0 + br i1 %166, label %.loopexit, label %.lr.ph.i22 + +.loopexit: ; preds = %.lr.ph.i22, %144, %183 + %.sroa.0.1 = phi ptr [ %.sroa.0.051, %183 ], [ %.sroa.035.0, %144 ], [ %164, %.lr.ph.i22 ] + %167 = load i64, ptr %2, align 8, !noundef !6 + %168 = add i64 %167, 1 + store i64 %168, ptr %2, align 8 call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %23 -.lr.ph: ; preds = %140, %_ZN5alloc11collections5btree3mem7replace17hd0886a438924d0afE.exit31 - %.sroa.02.063 = phi i64 [ %180, %_ZN5alloc11collections5btree3mem7replace17hd0886a438924d0afE.exit31 ], [ 0, %140 ] - %.sroa.042.061 = phi ptr [ %173, %_ZN5alloc11collections5btree3mem7replace17hd0886a438924d0afE.exit31 ], [ %137, %140 ] - %172 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !504 - %173 = call noalias noundef align 8 dereferenceable_or_null(328) ptr @_RNvCshjvJWTf7CV5_7___rustc12___rust_alloc(i64 noundef range(i64 4, 329) 328, i64 noundef range(i64 4, 9) 8) #30, !noalias !504 - %174 = icmp eq ptr %173, null - br i1 %174, label %175, label %_ZN5alloc11collections5btree3mem7replace17hd0886a438924d0afE.exit31, !prof !27 +.lr.ph: ; preds = %137, %_ZN5alloc11collections5btree3mem7replace17hd0886a438924d0afE.exit30 + %.sroa.02.062 = phi i64 [ %177, %_ZN5alloc11collections5btree3mem7replace17hd0886a438924d0afE.exit30 ], [ 0, %137 ] + %.sroa.041.060 = phi ptr [ %170, %_ZN5alloc11collections5btree3mem7replace17hd0886a438924d0afE.exit30 ], [ %134, %137 ] + %169 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !504 + %170 = call noalias noundef align 8 dereferenceable_or_null(328) ptr @_RNvCshjvJWTf7CV5_7___rustc12___rust_alloc(i64 noundef range(i64 4, 329) 328, i64 noundef range(i64 4, 9) 8) #30, !noalias !504 + %171 = icmp eq ptr %170, null + br i1 %171, label %172, label %_ZN5alloc11collections5btree3mem7replace17hd0886a438924d0afE.exit30, !prof !27 -175: ; preds = %.lr.ph +172: ; preds = %.lr.ph invoke void @_ZN5alloc5alloc18handle_alloc_error17haa66aaa8cfcf3614E(i64 noundef 8, i64 noundef 328) #28 - to label %.noexc.i28 unwind label %176, !noalias !504 + to label %.noexc.i27 unwind label %173, !noalias !504 -.noexc.i28: ; preds = %175 +.noexc.i27: ; preds = %172 unreachable -176: ; preds = %175 - %177 = landingpad { ptr, i32 } +173: ; preds = %172 + %174 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17h85819774d71bbb8dE"(ptr noalias noundef nonnull align 1 %4) #27 - to label %.body unwind label %178, !noalias !504 + to label %.body unwind label %175, !noalias !504 -178: ; preds = %176 - %179 = landingpad { ptr, i32 } +175: ; preds = %173 + %176 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hccd47ddd364deb23E() #29, !noalias !504 unreachable -_ZN5alloc11collections5btree3mem7replace17hd0886a438924d0afE.exit31: ; preds = %.lr.ph - %180 = add nuw i64 %.sroa.02.063, 1 - %181 = getelementptr inbounds nuw i8, ptr %173, i64 176 - store ptr null, ptr %181, align 8, !noalias !504 - %182 = getelementptr inbounds nuw i8, ptr %173, i64 230 - store i16 0, ptr %182, align 2, !noalias !504 - %183 = getelementptr inbounds nuw i8, ptr %173, i64 232 - store ptr %.sroa.042.061, ptr %183, align 8, !noalias !504 - %184 = getelementptr inbounds nuw i8, ptr %.sroa.042.061, i64 176 - store ptr %173, ptr %184, align 8, !noalias !507 - %185 = getelementptr inbounds nuw i8, ptr %.sroa.042.061, i64 228 - store i16 0, ptr %185, align 4, !noalias !514 - %exitcond.not = icmp eq i64 %180, %135 +_ZN5alloc11collections5btree3mem7replace17hd0886a438924d0afE.exit30: ; preds = %.lr.ph + %177 = add nuw i64 %.sroa.02.062, 1 + %178 = getelementptr inbounds nuw i8, ptr %170, i64 176 + store ptr null, ptr %178, align 8, !noalias !504 + %179 = getelementptr inbounds nuw i8, ptr %170, i64 230 + store i16 0, ptr %179, align 2, !noalias !504 + %180 = getelementptr inbounds nuw i8, ptr %170, i64 232 + store ptr %.sroa.041.060, ptr %180, align 8, !noalias !504 + %181 = getelementptr inbounds nuw i8, ptr %.sroa.041.060, i64 176 + store ptr %170, ptr %181, align 8, !noalias !507 + %182 = getelementptr inbounds nuw i8, ptr %.sroa.041.060, i64 228 + store i16 0, ptr %182, align 4, !noalias !514 + %exitcond.not = icmp eq i64 %177, %132 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph -186: ; preds = %29 - %187 = zext nneg i16 %34 to i64 - %188 = add nuw nsw i16 %34, 1 - store i16 %188, ptr %33, align 2, !noalias !515 - %189 = getelementptr inbounds nuw i8, ptr %.sroa.0.052, i64 184 - %190 = getelementptr inbounds nuw i32, ptr %189, i64 %187 - store i32 %30, ptr %190, align 4, !noalias !515 - %191 = getelementptr inbounds nuw { [2 x i64] }, ptr %.sroa.0.052, i64 %187 - store i64 %31, ptr %191, align 8, !noalias !515 - %192 = getelementptr inbounds nuw i8, ptr %191, i64 8 - store i64 %32, ptr %192, align 8, !noalias !515 +183: ; preds = %29 + %184 = zext nneg i16 %34 to i64 + %185 = add nuw nsw i16 %34, 1 + store i16 %185, ptr %33, align 2, !noalias !515 + %186 = getelementptr inbounds nuw i8, ptr %.sroa.0.051, i64 184 + %187 = getelementptr inbounds nuw i32, ptr %186, i64 %184 + store i32 %30, ptr %187, align 4, !noalias !515 + %188 = getelementptr inbounds nuw { [2 x i64] }, ptr %.sroa.0.051, i64 %184 + store i64 %31, ptr %188, align 8, !noalias !515 + %189 = getelementptr inbounds nuw i8, ptr %188, i64 8 + store i64 %32, ptr %189, align 8, !noalias !515 br label %.loopexit -193: ; preds = %.body - %194 = landingpad { ptr, i32 } +190: ; preds = %.body + %191 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hccd47ddd364deb23E() #29 unreachable -195: ; preds = %.body +192: ; preds = %.body resume { ptr, i32 } %.pn } diff --git a/bench/fish-rs/optimized/2jegnuo3b7uy1oojff5kt8alk.ll b/bench/fish-rs/optimized/2jegnuo3b7uy1oojff5kt8alk.ll index 4581893333c..910c20e3b7e 100644 --- a/bench/fish-rs/optimized/2jegnuo3b7uy1oojff5kt8alk.ll +++ b/bench/fish-rs/optimized/2jegnuo3b7uy1oojff5kt8alk.ll @@ -8163,90 +8163,91 @@ _ZN4fish3ast12is_same_node17h809b23b2f10f76bbE.exit.thread: ; preds = %32, %34 ; Function Attrs: nonlazybind uwtable define void @_ZN4fish3ast9Traversal13skip_children17hf84b006e48b1b98fE(ptr noalias noundef align 8 captures(none) dereferenceable(24) %0, ptr noundef nonnull align 1 %1, ptr noalias noundef readonly align 8 captures(address) dereferenceable(136) %2) unnamed_addr #1 { +.split: + %3 = alloca [24 x i8], align 8 %4 = alloca [24 x i8], align 8 - %5 = alloca [24 x i8], align 8 + %5 = alloca [48 x i8], align 8 %6 = alloca [48 x i8], align 8 - %7 = alloca [48 x i8], align 8 - %8 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %9 = load i64, ptr %8, align 8, !noundef !4 - %10 = icmp ult i64 %9, 384307168202282326 - tail call void @llvm.assume(i1 %10) - %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %12 = load ptr, ptr %11, align 8, !nonnull !4 - br label %13 + %7 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %8 = load i64, ptr %7, align 8, !noundef !4 + %9 = icmp ult i64 %8, 384307168202282326 + tail call void @llvm.assume(i1 %9) + %10 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %11 = load ptr, ptr %10, align 8, !nonnull !4 + br label %12 -13: ; preds = %19, %3 - %.sroa.01.0 = phi i64 [ %9, %3 ], [ %20, %19 ] +12: ; preds = %18, %.split + %.sroa.01.0 = phi i64 [ %8, %.split ], [ %19, %18 ] %.not = icmp eq i64 %.sroa.01.0, 0 - br i1 %.not, label %14, label %19, !prof !126 + br i1 %.not, label %13, label %18, !prof !126 -14: ; preds = %13 - call void @llvm.lifetime.start.p0(ptr nonnull %6) - store ptr @anon.c3855246c02a9407b3365b2c3e5c0e37.447, ptr %6, align 8 - %15 = getelementptr inbounds nuw i8, ptr %6, i64 8 - store i64 1, ptr %15, align 8 - %16 = getelementptr inbounds nuw i8, ptr %6, i64 32 - store ptr null, ptr %16, align 8 - %17 = getelementptr inbounds nuw i8, ptr %6, i64 16 - store ptr inttoptr (i64 8 to ptr), ptr %17, align 8 - %18 = getelementptr inbounds nuw i8, ptr %6, i64 24 - store i64 0, ptr %18, align 8 - call void @_ZN4core9panicking9panic_fmt17h8d16370d7cdeaf7bE(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %6, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.c3855246c02a9407b3365b2c3e5c0e37.448) #26 - unreachable - -19: ; preds = %13 - %20 = add nsw i64 %.sroa.01.0, -1 - %21 = getelementptr inbounds nuw { i64, [2 x i64] }, ptr %12, i64 %20 - %22 = load i64, ptr %21, align 8, !range !49, !noundef !4 - %23 = trunc nuw i64 %22 to i1 - br i1 %23, label %24, label %13 +13: ; preds = %12 + call void @llvm.lifetime.start.p0(ptr nonnull %5) + store ptr @anon.c3855246c02a9407b3365b2c3e5c0e37.447, ptr %5, align 8 + %14 = getelementptr inbounds nuw i8, ptr %5, i64 8 + store i64 1, ptr %14, align 8 + %15 = getelementptr inbounds nuw i8, ptr %5, i64 32 + store ptr null, ptr %15, align 8 + %16 = getelementptr inbounds nuw i8, ptr %5, i64 16 + store ptr inttoptr (i64 8 to ptr), ptr %16, align 8 + %17 = getelementptr inbounds nuw i8, ptr %5, i64 24 + store i64 0, ptr %17, align 8 + call void @_ZN4core9panicking9panic_fmt17h8d16370d7cdeaf7bE(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %5, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.c3855246c02a9407b3365b2c3e5c0e37.448) #26 + unreachable -24: ; preds = %19 - %25 = getelementptr inbounds nuw i8, ptr %21, i64 8 - %26 = load ptr, ptr %25, align 8, !nonnull !4, !align !304, !noundef !4 - %27 = getelementptr inbounds nuw i8, ptr %21, i64 16 - %28 = load ptr, ptr %27, align 8, !nonnull !4, !align !45, !noundef !4 +18: ; preds = %12 + %19 = add nsw i64 %.sroa.01.0, -1 + %20 = getelementptr inbounds nuw { i64, [2 x i64] }, ptr %11, i64 %19 + %21 = load i64, ptr %20, align 8, !range !49, !noundef !4 + %22 = trunc nuw i64 %21 to i1 + br i1 %22, label %23, label %12 + +23: ; preds = %18 + %24 = getelementptr inbounds nuw i8, ptr %20, i64 8 + %25 = load ptr, ptr %24, align 8, !nonnull !4, !align !304, !noundef !4 + %26 = getelementptr inbounds nuw i8, ptr %20, i64 16 + %27 = load ptr, ptr %26, align 8, !nonnull !4, !align !45, !noundef !4 tail call void @llvm.experimental.noalias.scope.decl(metadata !525) tail call void @llvm.experimental.noalias.scope.decl(metadata !528) - %29 = icmp eq ptr %1, %26 - br i1 %29, label %30, label %_ZN4fish3ast12is_same_node17h809b23b2f10f76bbE.exit.thread7, !prof !530 + %28 = icmp eq ptr %1, %25 + br i1 %28, label %29, label %_ZN4fish3ast12is_same_node17h809b23b2f10f76bbE.exit.thread7, !prof !530 -30: ; preds = %24 - %31 = icmp eq ptr %2, %28 - br i1 %31, label %_ZN4fish3ast12is_same_node17h809b23b2f10f76bbE.exit.thread, label %_ZN4fish3ast12is_same_node17h809b23b2f10f76bbE.exit - -_ZN4fish3ast12is_same_node17h809b23b2f10f76bbE.exit: ; preds = %30 - call void @llvm.lifetime.start.p0(ptr nonnull %5), !noalias !531 - %32 = getelementptr inbounds nuw i8, ptr %2, i64 64 - %33 = load ptr, ptr %32, align 8, !invariant.load !4, !alias.scope !525, !noalias !528, !nonnull !4 - call void %33(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %5, ptr noundef nonnull align 1 %1), !noalias !531 - %34 = load i64, ptr %5, align 8, !range !497, !noalias !531, !noundef !4 +29: ; preds = %23 + %30 = icmp eq ptr %2, %27 + br i1 %30, label %_ZN4fish3ast12is_same_node17h809b23b2f10f76bbE.exit.thread, label %_ZN4fish3ast12is_same_node17h809b23b2f10f76bbE.exit + +_ZN4fish3ast12is_same_node17h809b23b2f10f76bbE.exit: ; preds = %29 call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !531 - %35 = getelementptr inbounds nuw i8, ptr %28, i64 64 - %36 = load ptr, ptr %35, align 8, !invariant.load !4, !alias.scope !528, !noalias !525, !nonnull !4 - call void %36(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %4, ptr noundef nonnull align 1 %26), !noalias !531 - %37 = load i64, ptr %4, align 8, !range !497, !noalias !531, !noundef !4 - %38 = icmp eq i64 %34, %37 + %31 = getelementptr inbounds nuw i8, ptr %2, i64 64 + %32 = load ptr, ptr %31, align 8, !invariant.load !4, !alias.scope !525, !noalias !528, !nonnull !4 + call void %32(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %4, ptr noundef nonnull align 1 %1), !noalias !531 + %33 = load i64, ptr %4, align 8, !range !497, !noalias !531, !noundef !4 + call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !531 + %34 = getelementptr inbounds nuw i8, ptr %27, i64 64 + %35 = load ptr, ptr %34, align 8, !invariant.load !4, !alias.scope !528, !noalias !525, !nonnull !4 + call void %35(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %3, ptr noundef nonnull align 1 %25), !noalias !531 + %36 = load i64, ptr %3, align 8, !range !497, !noalias !531, !noundef !4 + %37 = icmp eq i64 %33, %36 + call void @llvm.lifetime.end.p0(ptr nonnull %3), !noalias !531 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !531 - call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !531 - br i1 %38, label %_ZN4fish3ast12is_same_node17h809b23b2f10f76bbE.exit.thread, label %_ZN4fish3ast12is_same_node17h809b23b2f10f76bbE.exit.thread7, !prof !532 + br i1 %37, label %_ZN4fish3ast12is_same_node17h809b23b2f10f76bbE.exit.thread, label %_ZN4fish3ast12is_same_node17h809b23b2f10f76bbE.exit.thread7, !prof !532 -_ZN4fish3ast12is_same_node17h809b23b2f10f76bbE.exit.thread7: ; preds = %24, %_ZN4fish3ast12is_same_node17h809b23b2f10f76bbE.exit - call void @llvm.lifetime.start.p0(ptr nonnull %7) - store ptr @anon.c3855246c02a9407b3365b2c3e5c0e37.451, ptr %7, align 8 - %39 = getelementptr inbounds nuw i8, ptr %7, i64 8 - store i64 1, ptr %39, align 8 - %40 = getelementptr inbounds nuw i8, ptr %7, i64 32 - store ptr null, ptr %40, align 8 - %41 = getelementptr inbounds nuw i8, ptr %7, i64 16 - store ptr inttoptr (i64 8 to ptr), ptr %41, align 8 - %42 = getelementptr inbounds nuw i8, ptr %7, i64 24 - store i64 0, ptr %42, align 8 - call void @_ZN4core9panicking9panic_fmt17h8d16370d7cdeaf7bE(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %7, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.c3855246c02a9407b3365b2c3e5c0e37.452) #26 - unreachable - -_ZN4fish3ast12is_same_node17h809b23b2f10f76bbE.exit.thread: ; preds = %_ZN4fish3ast12is_same_node17h809b23b2f10f76bbE.exit, %30 - store i64 %20, ptr %8, align 8 +_ZN4fish3ast12is_same_node17h809b23b2f10f76bbE.exit.thread7: ; preds = %23, %_ZN4fish3ast12is_same_node17h809b23b2f10f76bbE.exit + call void @llvm.lifetime.start.p0(ptr nonnull %6) + store ptr @anon.c3855246c02a9407b3365b2c3e5c0e37.451, ptr %6, align 8 + %38 = getelementptr inbounds nuw i8, ptr %6, i64 8 + store i64 1, ptr %38, align 8 + %39 = getelementptr inbounds nuw i8, ptr %6, i64 32 + store ptr null, ptr %39, align 8 + %40 = getelementptr inbounds nuw i8, ptr %6, i64 16 + store ptr inttoptr (i64 8 to ptr), ptr %40, align 8 + %41 = getelementptr inbounds nuw i8, ptr %6, i64 24 + store i64 0, ptr %41, align 8 + call void @_ZN4core9panicking9panic_fmt17h8d16370d7cdeaf7bE(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %6, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.c3855246c02a9407b3365b2c3e5c0e37.452) #26 + unreachable + +_ZN4fish3ast12is_same_node17h809b23b2f10f76bbE.exit.thread: ; preds = %_ZN4fish3ast12is_same_node17h809b23b2f10f76bbE.exit, %29 + store i64 %19, ptr %7, align 8 ret void } diff --git a/bench/gromacs/optimized/splineutil.ll b/bench/gromacs/optimized/splineutil.ll index 24c96d5583a..76d1fcb5087 100644 --- a/bench/gromacs/optimized/splineutil.ll +++ b/bench/gromacs/optimized/splineutil.ll @@ -1207,7 +1207,7 @@ define void @_ZN3gmx8internal22vectorSecondDerivativeENS_8ArrayRefIKdEEd(ptr dea 18: ; preds = %16 invoke void @__cxa_throw(ptr %14, ptr nonnull @_ZTIN3gmx8APIErrorE, ptr nonnull @_ZN3gmx16GromacsExceptionD2Ev) #21 - to label %109 unwind label %21 + to label %102 unwind label %21 .thread: ; preds = %13 %19 = landingpad { ptr, i32 } @@ -1229,7 +1229,7 @@ define void @_ZN3gmx8internal22vectorSecondDerivativeENS_8ArrayRefIKdEEd(ptr dea call void @_ZN3gmx16GromacsExceptionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #22 call void @_ZN3gmx20ExceptionInitializerD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %6) #22 call void @llvm.lifetime.end.p0(ptr nonnull %6) - br i1 %.045, label %23, label %108 + br i1 %.045, label %23, label %101 .sink.split: ; preds = %.thread, %.thread87 %.pn.pn86.ph = phi { ptr, i32 } [ %20, %.thread87 ], [ %19, %.thread ] @@ -1239,7 +1239,7 @@ define void @_ZN3gmx8internal22vectorSecondDerivativeENS_8ArrayRefIKdEEd(ptr dea 23: ; preds = %.sink.split, %21 %.pn.pn86 = phi { ptr, i32 } [ %22, %21 ], [ %.pn.pn86.ph, %.sink.split ] call void @__cxa_free_exception(ptr %14) #22 - br label %108 + br label %101 24: ; preds = %4 %25 = icmp ugt i64 %11, 1152921504606846975 @@ -1252,118 +1252,104 @@ define void @_ZN3gmx8internal22vectorSecondDerivativeENS_8ArrayRefIKdEEd(ptr dea .noexc56: ; preds = %24 %26 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %10) #24 store ptr %26, ptr %0, align 8, !tbaa !58 - %27 = getelementptr inbounds nuw i8, ptr %26, i64 %10 + %27 = getelementptr i8, ptr %26, i64 %10 %28 = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr %27, ptr %28, align 8, !tbaa !61 - store double 0.000000e+00, ptr %26, align 8, !tbaa !10 %29 = getelementptr i8, ptr %26, i64 8 - %30 = add nsw i64 %11, -1 - %31 = icmp eq i64 %30, 0 - br i1 %31, label %33, label %_ZSt6fill_nIPdmdET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i - -_ZSt6fill_nIPdmdET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i: ; preds = %.noexc56 - %.idx.i.i.i.i.i.i.i = shl nuw nsw i64 %30, 3 + %.idx.i.i.i.i.i.i.i = add i64 %10, -8 tail call void @llvm.memset.p0.i64(ptr align 8 %29, i8 0, i64 %.idx.i.i.i.i.i.i.i, i1 false), !tbaa !10 - %32 = getelementptr inbounds nuw i8, ptr %29, i64 %.idx.i.i.i.i.i.i.i - br label %33 - -33: ; preds = %_ZSt6fill_nIPdmdET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i, %.noexc56 - %.0.i.i.i.i.i = phi ptr [ %29, %.noexc56 ], [ %32, %_ZSt6fill_nIPdmdET_S1_T0_RKT1_.exit.loopexit.i.i.i.i.i ] - %34 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store ptr %.0.i.i.i.i.i, ptr %34, align 8, !tbaa !62 - %35 = getelementptr inbounds nuw i8, ptr %1, i64 32 - %36 = load double, ptr %35, align 8, !tbaa !10 - %37 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %30 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store ptr %27, ptr %30, align 8, !tbaa !62 + %31 = getelementptr inbounds nuw i8, ptr %1, i64 32 + %32 = load double, ptr %31, align 8, !tbaa !10 + %33 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %34 = load double, ptr %33, align 8, !tbaa !10 + %35 = fmul double %34, -5.600000e+01 + %36 = tail call double @llvm.fmuladd.f64(double %32, double 1.100000e+01, double %35) + %37 = getelementptr i8, ptr %1, i64 16 %38 = load double, ptr %37, align 8, !tbaa !10 - %39 = fmul double %38, -5.600000e+01 - %40 = tail call double @llvm.fmuladd.f64(double %36, double 1.100000e+01, double %39) - %41 = getelementptr i8, ptr %1, i64 16 - %42 = load double, ptr %41, align 8, !tbaa !10 - %43 = tail call double @llvm.fmuladd.f64(double %42, double 1.140000e+02, double %40) - %44 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %45 = load double, ptr %44, align 8, !tbaa !10 - %46 = tail call double @llvm.fmuladd.f64(double %45, double -1.040000e+02, double %43) - %47 = load double, ptr %1, align 8, !tbaa !10 - %48 = tail call double @llvm.fmuladd.f64(double %47, double 3.500000e+01, double %46) - %49 = fmul double %3, 1.200000e+01 - %50 = fmul double %3, %49 - %51 = fdiv double %48, %50 - store double %51, ptr %26, align 8, !tbaa !10 - %52 = fneg double %36 - %53 = tail call double @llvm.fmuladd.f64(double %38, double 4.000000e+00, double %52) - %54 = tail call double @llvm.fmuladd.f64(double %42, double 6.000000e+00, double %53) - %55 = tail call double @llvm.fmuladd.f64(double %45, double -2.000000e+01, double %54) - %56 = tail call double @llvm.fmuladd.f64(double %47, double 1.100000e+01, double %55) - %57 = fdiv double %56, %50 - store double %57, ptr %29, align 8, !tbaa !10 - %58 = ptrtoint ptr %.0.i.i.i.i.i to i64 - %59 = ptrtoint ptr %26 to i64 - %60 = sub i64 %58, %59 - %61 = ashr exact i64 %60, 3 - %62 = add nsw i64 %61, -2 - %63 = icmp ugt i64 %62, 2 - br i1 %63, label %.lr.ph, label %._crit_edge - -._crit_edge: ; preds = %.lr.ph, %33 - %64 = add nsw i64 %61, -1 - %65 = getelementptr inbounds double, ptr %1, i64 %64 + %39 = tail call double @llvm.fmuladd.f64(double %38, double 1.140000e+02, double %36) + %40 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %41 = load double, ptr %40, align 8, !tbaa !10 + %42 = tail call double @llvm.fmuladd.f64(double %41, double -1.040000e+02, double %39) + %43 = load double, ptr %1, align 8, !tbaa !10 + %44 = tail call double @llvm.fmuladd.f64(double %43, double 3.500000e+01, double %42) + %45 = fmul double %3, 1.200000e+01 + %46 = fmul double %3, %45 + %47 = fdiv double %44, %46 + store double %47, ptr %26, align 8, !tbaa !10 + %48 = fneg double %32 + %49 = tail call double @llvm.fmuladd.f64(double %34, double 4.000000e+00, double %48) + %50 = tail call double @llvm.fmuladd.f64(double %38, double 6.000000e+00, double %49) + %51 = tail call double @llvm.fmuladd.f64(double %41, double -2.000000e+01, double %50) + %52 = tail call double @llvm.fmuladd.f64(double %43, double 1.100000e+01, double %51) + %53 = fdiv double %52, %46 + store double %53, ptr %29, align 8, !tbaa !10 + %54 = ashr exact i64 %10, 3 + %55 = add nsw i64 %54, -2 + %56 = icmp ugt i64 %55, 2 + br i1 %56, label %.lr.ph, label %._crit_edge + +._crit_edge: ; preds = %.lr.ph, %.noexc56 + %57 = add nsw i64 %54, -1 + %58 = getelementptr inbounds double, ptr %1, i64 %57 + %59 = load double, ptr %58, align 8, !tbaa !10 + %60 = getelementptr inbounds double, ptr %1, i64 %55 + %61 = load double, ptr %60, align 8, !tbaa !10 + %62 = fmul double %61, -2.000000e+01 + %63 = tail call double @llvm.fmuladd.f64(double %59, double 1.100000e+01, double %62) + %64 = getelementptr i8, ptr %1, i64 %10 + %65 = getelementptr i8, ptr %64, i64 -24 %66 = load double, ptr %65, align 8, !tbaa !10 - %67 = getelementptr inbounds double, ptr %1, i64 %62 - %68 = load double, ptr %67, align 8, !tbaa !10 - %69 = fmul double %68, -2.000000e+01 - %70 = tail call double @llvm.fmuladd.f64(double %66, double 1.100000e+01, double %69) - %71 = getelementptr i8, ptr %1, i64 %60 - %72 = getelementptr i8, ptr %71, i64 -24 - %73 = load double, ptr %72, align 8, !tbaa !10 - %74 = tail call double @llvm.fmuladd.f64(double %73, double 6.000000e+00, double %70) - %75 = getelementptr i8, ptr %71, i64 -32 - %76 = load double, ptr %75, align 8, !tbaa !10 - %77 = tail call double @llvm.fmuladd.f64(double %76, double 4.000000e+00, double %74) - %78 = getelementptr i8, ptr %71, i64 -40 - %79 = load double, ptr %78, align 8, !tbaa !10 - %80 = fsub double %77, %79 - %81 = fdiv double %80, %50 - %82 = getelementptr inbounds nuw double, ptr %26, i64 %62 + %67 = tail call double @llvm.fmuladd.f64(double %66, double 6.000000e+00, double %63) + %68 = getelementptr i8, ptr %64, i64 -32 + %69 = load double, ptr %68, align 8, !tbaa !10 + %70 = tail call double @llvm.fmuladd.f64(double %69, double 4.000000e+00, double %67) + %71 = getelementptr i8, ptr %64, i64 -40 + %72 = load double, ptr %71, align 8, !tbaa !10 + %73 = fsub double %70, %72 + %74 = fdiv double %73, %46 + %75 = getelementptr inbounds nuw double, ptr %26, i64 %55 + store double %74, ptr %75, align 8, !tbaa !10 + %76 = fmul double %61, -1.040000e+02 + %77 = tail call double @llvm.fmuladd.f64(double %59, double 3.500000e+01, double %76) + %78 = tail call double @llvm.fmuladd.f64(double %66, double 1.140000e+02, double %77) + %79 = tail call double @llvm.fmuladd.f64(double %69, double -5.600000e+01, double %78) + %80 = tail call double @llvm.fmuladd.f64(double %72, double 1.100000e+01, double %79) + %81 = fdiv double %80, %46 + %82 = getelementptr inbounds nuw double, ptr %26, i64 %57 store double %81, ptr %82, align 8, !tbaa !10 - %83 = fmul double %68, -1.040000e+02 - %84 = tail call double @llvm.fmuladd.f64(double %66, double 3.500000e+01, double %83) - %85 = tail call double @llvm.fmuladd.f64(double %73, double 1.140000e+02, double %84) - %86 = tail call double @llvm.fmuladd.f64(double %76, double -5.600000e+01, double %85) - %87 = tail call double @llvm.fmuladd.f64(double %79, double 1.100000e+01, double %86) - %88 = fdiv double %87, %50 - %89 = getelementptr inbounds nuw double, ptr %26, i64 %64 - store double %88, ptr %89, align 8, !tbaa !10 ret void -.lr.ph: ; preds = %33, %.lr.ph - %90 = phi double [ %97, %.lr.ph ], [ %42, %33 ] - %.092 = phi i64 [ %95, %.lr.ph ], [ 2, %33 ] - %91 = getelementptr double, ptr %1, i64 %.092 - %92 = getelementptr i8, ptr %91, i64 16 - %93 = load double, ptr %92, align 8, !tbaa !10 - %94 = fneg double %93 - %95 = add nuw i64 %.092, 1 - %96 = getelementptr inbounds double, ptr %1, i64 %95 +.lr.ph: ; preds = %.noexc56, %.lr.ph + %83 = phi double [ %90, %.lr.ph ], [ %38, %.noexc56 ] + %.092 = phi i64 [ %88, %.lr.ph ], [ 2, %.noexc56 ] + %84 = getelementptr double, ptr %1, i64 %.092 + %85 = getelementptr i8, ptr %84, i64 16 + %86 = load double, ptr %85, align 8, !tbaa !10 + %87 = fneg double %86 + %88 = add nuw i64 %.092, 1 + %89 = getelementptr inbounds double, ptr %1, i64 %88 + %90 = load double, ptr %89, align 8, !tbaa !10 + %91 = tail call double @llvm.fmuladd.f64(double %90, double 1.600000e+01, double %87) + %92 = tail call double @llvm.fmuladd.f64(double %83, double -3.000000e+01, double %91) + %93 = getelementptr i8, ptr %84, i64 -8 + %94 = load double, ptr %93, align 8, !tbaa !10 + %95 = tail call double @llvm.fmuladd.f64(double %94, double 1.600000e+01, double %92) + %96 = getelementptr i8, ptr %84, i64 -16 %97 = load double, ptr %96, align 8, !tbaa !10 - %98 = tail call double @llvm.fmuladd.f64(double %97, double 1.600000e+01, double %94) - %99 = tail call double @llvm.fmuladd.f64(double %90, double -3.000000e+01, double %98) - %100 = getelementptr i8, ptr %91, i64 -8 - %101 = load double, ptr %100, align 8, !tbaa !10 - %102 = tail call double @llvm.fmuladd.f64(double %101, double 1.600000e+01, double %99) - %103 = getelementptr i8, ptr %91, i64 -16 - %104 = load double, ptr %103, align 8, !tbaa !10 - %105 = fsub double %102, %104 - %106 = fdiv double %105, %50 - %107 = getelementptr inbounds nuw double, ptr %26, i64 %.092 - store double %106, ptr %107, align 8, !tbaa !10 - %exitcond.not = icmp eq i64 %95, %62 + %98 = fsub double %95, %97 + %99 = fdiv double %98, %46 + %100 = getelementptr inbounds nuw double, ptr %26, i64 %.092 + store double %99, ptr %100, align 8, !tbaa !10 + %exitcond.not = icmp eq i64 %88, %55 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !63 -108: ; preds = %21, %23 +101: ; preds = %21, %23 %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn86, %23 ], [ %22, %21 ] resume { ptr, i32 } %.pn.pn.pn -109: ; preds = %18 +102: ; preds = %18 unreachable } diff --git a/bench/hermes/optimized/APInt.ll b/bench/hermes/optimized/APInt.ll index f8866b9cf9a..2a0f84f4877 100644 --- a/bench/hermes/optimized/APInt.ll +++ b/bench/hermes/optimized/APInt.ll @@ -6170,18 +6170,15 @@ _ZN4llvh5APIntlSEj.exit: ; preds = %if.end14 %sh_prom.i.i107 = zext nneg i32 %sub2.i.i106 to i64 %shr.i.i108 = lshr i64 -1, %sh_prom.i.i107 %and.i.i109 = and i64 %shr.i.i108, %or - %26 = trunc nuw nsw i64 %and to i32 - %sub16173 = add nsw i32 %26, -1075 - %cmp.i = icmp eq i32 %sub16173, %width - %sh_prom.i = zext nneg i32 %sub16173 to i64 + %sub16173 = add nuw nsw i64 %and, 4294966221 + %sh_prom.i = and i64 %sub16173, 4294967295 %shl.i = shl i64 %and.i.i109, %sh_prom.i - %storemerge.i = select i1 %cmp.i, i64 0, i64 %shl.i - %and.i.i119 = and i64 %storemerge.i, %shr.i.i108 + %and.i.i119 = and i64 %shl.i, %shr.i.i108 br i1 %tobool.not, label %if.then.i124, label %cleanup.done26.thread195 _ZN4llvh5APIntlSEj.exit.thread: ; preds = %if.end5.i, %if.end17.i.i - %27 = phi i64 [ %and6.i.i.i102, %if.end5.i ], [ %.pre, %if.end17.i.i ] - %and6.i.i = and i64 %27, %shr.i.i10.i97 + %26 = phi i64 [ %and6.i.i.i102, %if.end5.i ], [ %.pre, %if.end17.i.i ] + %and6.i.i = and i64 %26, %shr.i.i10.i97 store i64 %and6.i.i, ptr %arrayidx.i.i.i101, align 8 br i1 %tobool.not, label %if.else.i122, label %if.then.i144.thread @@ -6219,10 +6216,10 @@ cleanup.done26: ; preds = %if.else.i122, %if.t tail call void @llvm.experimental.noalias.scope.decl(metadata !73) call void @_ZN4llvh5APInt6negateEv(ptr noundef nonnull align 8 dereferenceable(12) %agg.tmp20), !noalias !73 %BitWidth.i.i125 = getelementptr inbounds nuw i8, ptr %agg.result, i64 8 - %28 = load i32, ptr %BitWidth.i120184, align 8, !noalias !73 - store i32 %28, ptr %BitWidth.i.i125, align 8, !alias.scope !73 - %29 = load i64, ptr %agg.tmp20, align 8, !noalias !73 - store i64 %29, ptr %agg.result, align 8, !alias.scope !73 + %27 = load i32, ptr %BitWidth.i120184, align 8, !noalias !73 + store i32 %27, ptr %BitWidth.i.i125, align 8, !alias.scope !73 + %28 = load i64, ptr %agg.tmp20, align 8, !noalias !73 + store i64 %28, ptr %agg.result, align 8, !alias.scope !73 store i32 0, ptr %BitWidth.i120184, align 8, !noalias !73 %cmp.i.i.i143 = icmp ult i32 %width, 65 %isnull.i145 = icmp eq i64 %Tmp.sroa.0.1177182, 0 @@ -6231,8 +6228,8 @@ cleanup.done26: ; preds = %if.else.i122, %if.t delete.notnull.i146: ; preds = %cleanup.done26, %if.then.i144.thread %Tmp.sroa.0.1178191194200 = phi i64 [ %18, %if.then.i144.thread ], [ %Tmp.sroa.0.1177182, %cleanup.done26 ] - %30 = inttoptr i64 %Tmp.sroa.0.1178191194200 to ptr - call void @_ZdaPv(ptr noundef nonnull %30) #25 + %29 = inttoptr i64 %Tmp.sroa.0.1178191194200 to ptr + call void @_ZdaPv(ptr noundef nonnull %29) #25 br label %return return: ; preds = %cleanup.action, %cleanup.done26.thread195, %_ZN4llvh5APInt15clearUnusedBitsEv.exit.i55, %if.else.i41, %delete.notnull.i146, %cleanup.done26, %if.else.i65, %_ZN4llvh5APInt15clearUnusedBitsEv.exit.i79, %if.else.i, %_ZN4llvh5APInt15clearUnusedBitsEv.exit.i diff --git a/bench/image-rs/optimized/5ez7udly19o3uj1p.ll b/bench/image-rs/optimized/5ez7udly19o3uj1p.ll index 10635a9ad04..97127f7141c 100644 --- a/bench/image-rs/optimized/5ez7udly19o3uj1p.ll +++ b/bench/image-rs/optimized/5ez7udly19o3uj1p.ll @@ -274,7 +274,6 @@ target triple = "x86_64-unknown-linux-gnu" @anon.dbc83011fcb707429349569d3c6bc524.351 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.dbc83011fcb707429349569d3c6bc524.323, [16 x i8] c"\1B\00\00\00\00\00\00\00\FB\01\00\00#\00\00\00" }>, align 8 @anon.dbc83011fcb707429349569d3c6bc524.352 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.dbc83011fcb707429349569d3c6bc524.323, [16 x i8] c"\1B\00\00\00\00\00\00\00\00\02\00\00$\00\00\00" }>, align 8 @anon.dbc83011fcb707429349569d3c6bc524.353 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.dbc83011fcb707429349569d3c6bc524.323, [16 x i8] c"\1B\00\00\00\00\00\00\00\02\02\00\00#\00\00\00" }>, align 8 -@anon.dbc83011fcb707429349569d3c6bc524.354 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.dbc83011fcb707429349569d3c6bc524.323, [16 x i8] c"\1B\00\00\00\00\00\00\00\04\02\00\00(\00\00\00" }>, align 8 @anon.dbc83011fcb707429349569d3c6bc524.356 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.dbc83011fcb707429349569d3c6bc524.323, [16 x i8] c"\1B\00\00\00\00\00\00\00\1F\02\00\00\15\00\00\00" }>, align 8 @anon.dbc83011fcb707429349569d3c6bc524.357 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.dbc83011fcb707429349569d3c6bc524.323, [16 x i8] c"\1B\00\00\00\00\00\00\00\22\02\00\00\15\00\00\00" }>, align 8 @anon.dbc83011fcb707429349569d3c6bc524.358 = private unnamed_addr constant <{ [12 x i8] }> <{ [12 x i8] c"Image index " }>, align 1 @@ -33784,7 +33783,7 @@ define void @_ZN5image6codecs4webp8extended10WebPStatic16from_alpha_lossy17hf358 %.sroa.53.0..sroa_idx.i = getelementptr inbounds nuw i8, ptr %7, i64 1 store i8 3, ptr %.sroa.53.0..sroa_idx.i, align 1, !noalias !4397 %24 = invoke noundef nonnull align 8 ptr @_ZN5alloc5alloc15exchange_malloc17hbe31f2048284b3faE.llvm.9742654456972663382(i64 noundef 24, i64 noundef 8) - to label %190 unwind label %25, !noalias !4389 + to label %188 unwind label %25, !noalias !4389 25: ; preds = %23 %26 = landingpad { ptr, i32 } @@ -33798,10 +33797,10 @@ define void @_ZN5image6codecs4webp8extended10WebPStatic16from_alpha_lossy17hf358 call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #23, !noalias !4389 unreachable -.body: ; preds = %47, %.body36, %29, %25, %187 - %.pn = phi { ptr, i32 } [ %lpad.thr_comm, %187 ], [ %lpad.thr_comm.split-lp, %.body36 ], [ %30, %29 ], [ %26, %25 ], [ %48, %47 ] +.body: ; preds = %47, %.body36, %29, %25, %185 + %.pn = phi { ptr, i32 } [ %lpad.thr_comm, %185 ], [ %lpad.thr_comm.split-lp, %.body36 ], [ %30, %29 ], [ %26, %25 ], [ %48, %47 ] invoke void @"_ZN4core3ptr52drop_in_place$LT$image..codecs..webp..vp8..Frame$GT$17h69ec787f0a78d900E"(ptr noalias noundef nonnull align 8 dereferenceable(88) %2) #22 - to label %72 unwind label %188 + to label %72 unwind label %186 29: ; preds = %19 %30 = landingpad { ptr, i32 } @@ -33817,7 +33816,7 @@ define void @_ZN5image6codecs4webp8extended10WebPStatic16from_alpha_lossy17hf358 %35 = getelementptr inbounds nuw i8, ptr %9, i64 16 store i64 %21, ptr %35, align 8, !alias.scope !4398 invoke void @_ZN5image6codecs4webp3vp85Frame9fill_rgba17hb2787f2e6e1f08ccE(ptr noalias noundef nonnull readonly align 8 dereferenceable(88) %2, ptr noalias noundef nonnull align 1 %33, i64 noundef %21) - to label %36 unwind label %187 + to label %36 unwind label %185 .body36: ; preds = %67, %52, %55 %lpad.thr_comm.split-lp = landingpad { ptr, i32 } @@ -33826,32 +33825,32 @@ define void @_ZN5image6codecs4webp8extended10WebPStatic16from_alpha_lossy17hf358 36: ; preds = %31 %37 = load i16, ptr %15, align 2, !noundef !19 - %.not111 = icmp eq i16 %37, 0 - %.pre152 = load i16, ptr %12, align 8 - br i1 %.not111, label %._crit_edge, label %.lr.ph110 + %.not106 = icmp eq i16 %37, 0 + %.pre143 = load i16, ptr %12, align 8 + br i1 %.not106, label %._crit_edge, label %.lr.ph105 -.lr.ph110: ; preds = %36 +.lr.ph105: ; preds = %36 %38 = getelementptr inbounds nuw i8, ptr %1, i64 25 %39 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %.not112 = icmp eq i16 %.pre152, 0 - br i1 %.not112, label %._crit_edge, label %.lr.ph110.split.preheader + %.not107 = icmp eq i16 %.pre143, 0 + br i1 %.not107, label %._crit_edge, label %.lr.ph105.split.preheader -.lr.ph110.split.preheader: ; preds = %.lr.ph110 - %wide.trip.count150 = zext i16 %37 to i64 - br label %.lr.ph110.split +.lr.ph105.split.preheader: ; preds = %.lr.ph105 + %wide.trip.count141 = zext i16 %37 to i64 + br label %.lr.ph105.split -.loopexit: ; preds = %183, %.lr.ph110.split - %exitcond151.not = icmp eq i64 %indvars.iv.next148, %wide.trip.count150 - br i1 %exitcond151.not, label %._crit_edge.loopexit114, label %.lr.ph110.split, !llvm.loop !4401 +.loopexit: ; preds = %181, %.lr.ph105.split + %exitcond142.not = icmp eq i64 %indvars.iv.next139, %wide.trip.count141 + br i1 %exitcond142.not, label %._crit_edge.loopexit109, label %.lr.ph105.split, !llvm.loop !4401 -._crit_edge.loopexit114: ; preds = %.loopexit +._crit_edge.loopexit109: ; preds = %.loopexit %.pre = load i16, ptr %12, align 8 - %.pre153 = load i16, ptr %15, align 2 + %.pre144 = load i16, ptr %15, align 2 br label %._crit_edge -._crit_edge: ; preds = %.lr.ph110, %._crit_edge.loopexit114, %36 - %40 = phi i16 [ %.pre153, %._crit_edge.loopexit114 ], [ 0, %36 ], [ %37, %.lr.ph110 ] - %41 = phi i16 [ %.pre, %._crit_edge.loopexit114 ], [ %.pre152, %36 ], [ 0, %.lr.ph110 ] +._crit_edge: ; preds = %.lr.ph105, %._crit_edge.loopexit109, %36 + %40 = phi i16 [ %.pre144, %._crit_edge.loopexit109 ], [ 0, %36 ], [ %37, %.lr.ph105 ] + %41 = phi i16 [ %.pre, %._crit_edge.loopexit109 ], [ %.pre143, %36 ], [ 0, %.lr.ph105 ] %42 = zext i16 %41 to i32 %43 = zext i16 %40 to i32 call void @llvm.lifetime.start.p0(ptr nonnull %8) @@ -33906,25 +33905,25 @@ define void @_ZN5image6codecs4webp8extended10WebPStatic16from_alpha_lossy17hf358 call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #23, !noalias !4403 unreachable -.lr.ph110.split: ; preds = %.lr.ph110.split.preheader, %.loopexit - %indvars.iv147 = phi i64 [ 0, %.lr.ph110.split.preheader ], [ %indvars.iv.next148, %.loopexit ] - %indvars.iv.next148 = add nuw nsw i64 %indvars.iv147, 1 +.lr.ph105.split: ; preds = %.lr.ph105.split.preheader, %.loopexit + %indvars.iv138 = phi i64 [ 0, %.lr.ph105.split.preheader ], [ %indvars.iv.next139, %.loopexit ] + %indvars.iv.next139 = add nuw nsw i64 %indvars.iv138, 1 %61 = load i16, ptr %12, align 8, !noundef !19 - %.not113 = icmp eq i16 %61, 0 - br i1 %.not113, label %.loopexit, label %.lr.ph + %.not108 = icmp eq i16 %61, 0 + br i1 %.not108, label %.loopexit, label %.lr.ph -.lr.ph: ; preds = %.lr.ph110.split - %62 = icmp eq i64 %indvars.iv147, 0 - %63 = add nsw i64 %indvars.iv147, -1 - %64 = shl nuw nsw i64 %indvars.iv147, 2 +.lr.ph: ; preds = %.lr.ph105.split + %62 = icmp eq i64 %indvars.iv138, 0 + %63 = add nsw i64 %indvars.iv138, -1 + %64 = shl nuw nsw i64 %indvars.iv138, 2 %65 = add nsw i64 %64, -4 %wide.trip.count = zext i16 %61 to i64 br label %83 "_ZN5image7buffer_32ImageBuffer$LT$P$C$Container$GT$8from_raw17h7941bb38d78acc84E.exit": ; preds = %49 - %.sroa.059.0.copyload60 = load i64, ptr %8, align 8, !alias.scope !4411 + %.sroa.058.0.copyload59 = load i64, ptr %8, align 8, !alias.scope !4411 call void @llvm.lifetime.end.p0(ptr nonnull %8) - %66 = icmp eq i64 %.sroa.059.0.copyload60, -9223372036854775808 + %66 = icmp eq i64 %.sroa.058.0.copyload59, -9223372036854775808 br i1 %66, label %67, label %68 67: ; preds = %"_ZN5image7buffer_32ImageBuffer$LT$P$C$Container$GT$8from_raw17h7941bb38d78acc84E.exit.thread", %"_ZN5image7buffer_32ImageBuffer$LT$P$C$Container$GT$8from_raw17h7941bb38d78acc84E.exit" @@ -33936,7 +33935,7 @@ define void @_ZN5image6codecs4webp8extended10WebPStatic16from_alpha_lossy17hf358 %70 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 0, ptr %70, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %.sroa.059.0.copyload60, ptr %.sroa.4.0..sroa_idx, align 8 + store i64 %.sroa.058.0.copyload59, ptr %.sroa.4.0..sroa_idx, align 8 %.sroa.4.sroa.4.0..sroa.4.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.4.sroa.4.0..sroa.4.0..sroa_idx.sroa_idx, ptr noundef nonnull align 8 dereferenceable(16) %69, i64 16, i1 false) %.sroa.4.sroa.5.0..sroa.4.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 40 @@ -33954,9 +33953,9 @@ define void @_ZN5image6codecs4webp8extended10WebPStatic16from_alpha_lossy17hf358 72: ; preds = %73, %.body %.pn27 = phi { ptr, i32 } [ %74, %73 ], [ %.pn, %.body ] invoke void @"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..extended..AlphaChunk$GT$17he6cc29becc3dfeebE"(ptr noalias noundef nonnull align 8 dereferenceable(32) %1) #22 - to label %198 unwind label %188 + to label %196 unwind label %186 -73: ; preds = %68, %190 +73: ; preds = %68, %188 %74 = landingpad { ptr, i32 } cleanup br label %72 @@ -33980,11 +33979,11 @@ define void @_ZN5image6codecs4webp8extended10WebPStatic16from_alpha_lossy17hf358 call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !4419 br label %82 -82: ; preds = %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..extended..AlphaChunk$GT$17he6cc29becc3dfeebE.exit53", %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..extended..AlphaChunk$GT$17he6cc29becc3dfeebE.exit" +82: ; preds = %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..extended..AlphaChunk$GT$17he6cc29becc3dfeebE.exit52", %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..extended..AlphaChunk$GT$17he6cc29becc3dfeebE.exit" ret void -83: ; preds = %.lr.ph, %183 - %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %183 ] +83: ; preds = %.lr.ph, %181 + %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %181 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %84 = load i16, ptr %12, align 8, !noundef !19 %85 = zext i16 %84 to i64 @@ -34000,12 +33999,12 @@ default.unreachable: ; preds = %83 unreachable 87: ; preds = %83 - %88 = or i64 %indvars.iv, %indvars.iv147 + %88 = or i64 %indvars.iv, %indvars.iv138 %or.cond.i = icmp eq i64 %88, 0 br i1 %or.cond.i, label %_ZN5image6codecs4webp8extended10WebPStatic13get_predictor17heffafe2d87fabaa7E.exit, label %93 89: ; preds = %83 - %90 = or i64 %indvars.iv, %indvars.iv147 + %90 = or i64 %indvars.iv, %indvars.iv138 %or.cond1.i = icmp eq i64 %90, 0 br i1 %or.cond1.i, label %_ZN5image6codecs4webp8extended10WebPStatic13get_predictor17heffafe2d87fabaa7E.exit, label %114 @@ -34024,7 +34023,7 @@ default.unreachable: ; preds = %83 br i1 %98, label %105, label %.invoke, !prof !480 99: ; preds = %93 - %100 = mul nuw nsw i64 %indvars.iv147, %85 + %100 = mul nuw nsw i64 %indvars.iv138, %85 %101 = add nuw nsw i64 %100, %indvars.iv %102 = shl nuw nsw i64 %101, 2 %103 = add nsw i64 %102, -1 @@ -34036,12 +34035,12 @@ default.unreachable: ; preds = %83 %107 = load i8, ptr %106, align 1, !alias.scope !4428, !noundef !19 br label %_ZN5image6codecs4webp8extended10WebPStatic13get_predictor17heffafe2d87fabaa7E.exit -.invoke: ; preds = %179, %_ZN5image6codecs4webp8extended10WebPStatic13get_predictor17heffafe2d87fabaa7E.exit, %168, %160, %151, %147, %133, %119, %115, %99, %95 - %108 = phi i64 [ %97, %95 ], [ %103, %99 ], [ %117, %115 ], [ %123, %119 ], [ %135, %133 ], [ %149, %147 ], [ %155, %151 ], [ %166, %160 ], [ %169, %168 ], [ %177, %_ZN5image6codecs4webp8extended10WebPStatic13get_predictor17heffafe2d87fabaa7E.exit ], [ %181, %179 ] - %109 = phi i64 [ %21, %95 ], [ %21, %99 ], [ %21, %115 ], [ %21, %119 ], [ %21, %133 ], [ %21, %147 ], [ %21, %151 ], [ %21, %160 ], [ %21, %168 ], [ %.val30, %_ZN5image6codecs4webp8extended10WebPStatic13get_predictor17heffafe2d87fabaa7E.exit ], [ %21, %179 ] - %110 = phi ptr [ @anon.dbc83011fcb707429349569d3c6bc524.346, %95 ], [ @anon.dbc83011fcb707429349569d3c6bc524.347, %99 ], [ @anon.dbc83011fcb707429349569d3c6bc524.348, %115 ], [ @anon.dbc83011fcb707429349569d3c6bc524.349, %119 ], [ @anon.dbc83011fcb707429349569d3c6bc524.350, %133 ], [ @anon.dbc83011fcb707429349569d3c6bc524.351, %147 ], [ @anon.dbc83011fcb707429349569d3c6bc524.352, %151 ], [ @anon.dbc83011fcb707429349569d3c6bc524.353, %160 ], [ @anon.dbc83011fcb707429349569d3c6bc524.354, %168 ], [ @anon.dbc83011fcb707429349569d3c6bc524.343, %_ZN5image6codecs4webp8extended10WebPStatic13get_predictor17heffafe2d87fabaa7E.exit ], [ @anon.dbc83011fcb707429349569d3c6bc524.345, %179 ] +.invoke: ; preds = %177, %_ZN5image6codecs4webp8extended10WebPStatic13get_predictor17heffafe2d87fabaa7E.exit, %160, %151, %147, %133, %119, %115, %99, %95 + %108 = phi i64 [ %97, %95 ], [ %103, %99 ], [ %117, %115 ], [ %123, %119 ], [ %135, %133 ], [ %149, %147 ], [ %155, %151 ], [ %164, %160 ], [ %175, %_ZN5image6codecs4webp8extended10WebPStatic13get_predictor17heffafe2d87fabaa7E.exit ], [ %179, %177 ] + %109 = phi i64 [ %21, %95 ], [ %21, %99 ], [ %21, %115 ], [ %21, %119 ], [ %21, %133 ], [ %21, %147 ], [ %21, %151 ], [ %21, %160 ], [ %.val30, %_ZN5image6codecs4webp8extended10WebPStatic13get_predictor17heffafe2d87fabaa7E.exit ], [ %21, %177 ] + %110 = phi ptr [ @anon.dbc83011fcb707429349569d3c6bc524.346, %95 ], [ @anon.dbc83011fcb707429349569d3c6bc524.347, %99 ], [ @anon.dbc83011fcb707429349569d3c6bc524.348, %115 ], [ @anon.dbc83011fcb707429349569d3c6bc524.349, %119 ], [ @anon.dbc83011fcb707429349569d3c6bc524.350, %133 ], [ @anon.dbc83011fcb707429349569d3c6bc524.351, %147 ], [ @anon.dbc83011fcb707429349569d3c6bc524.352, %151 ], [ @anon.dbc83011fcb707429349569d3c6bc524.353, %160 ], [ @anon.dbc83011fcb707429349569d3c6bc524.343, %_ZN5image6codecs4webp8extended10WebPStatic13get_predictor17heffafe2d87fabaa7E.exit ], [ @anon.dbc83011fcb707429349569d3c6bc524.345, %177 ] invoke void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %108, i64 noundef %109, ptr noalias noundef readonly align 8 dereferenceable(24) %110) #21 - to label %.cont unwind label %187 + to label %.cont unwind label %185 .cont: ; preds = %.invoke unreachable @@ -34090,10 +34089,10 @@ default.unreachable: ; preds = %83 %136 = icmp ult i64 %135, %21 br i1 %136, label %144, label %.invoke, !prof !480 -"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17he2ec3fd6191bb3d2E.exit.i": ; preds = %171, %157, %144, %131 - %.013.i = phi i8 [ %146, %144 ], [ %159, %157 ], [ %173, %171 ], [ 0, %131 ] - %.012.i = phi i8 [ %146, %144 ], [ %159, %157 ], [ %162, %171 ], [ 0, %131 ] - %.0.i = phi i8 [ %146, %144 ], [ %159, %157 ], [ %175, %171 ], [ 0, %131 ] +"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17he2ec3fd6191bb3d2E.exit.i": ; preds = %166, %157, %144, %131 + %.013.i = phi i8 [ %146, %144 ], [ %159, %157 ], [ %170, %166 ], [ 0, %131 ] + %.012.i = phi i8 [ %146, %144 ], [ %159, %157 ], [ %168, %166 ], [ 0, %131 ] + %.0.i = phi i8 [ %146, %144 ], [ %159, %157 ], [ %173, %166 ], [ 0, %131 ] %137 = zext i8 %.012.i to i16 %138 = zext i8 %.013.i to i16 %139 = add nuw nsw i16 %137, %138 @@ -34116,7 +34115,7 @@ default.unreachable: ; preds = %83 br i1 %150, label %157, label %.invoke, !prof !480 151: ; preds = %132 - %152 = mul nuw nsw i64 %indvars.iv147, %85 + %152 = mul nuw nsw i64 %indvars.iv138, %85 %153 = add nuw nsw i64 %152, %indvars.iv %154 = shl nuw nsw i64 %153, 2 %155 = add nsw i64 %154, -1 @@ -34129,98 +34128,94 @@ default.unreachable: ; preds = %83 br label %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17he2ec3fd6191bb3d2E.exit.i" 160: ; preds = %151 - %161 = getelementptr inbounds nuw i8, ptr %33, i64 %155 - %162 = load i8, ptr %161, align 1, !alias.scope !4428, !noundef !19 - %163 = mul nuw nsw i64 %63, %85 - %164 = add nuw nsw i64 %163, %indvars.iv - %165 = shl nuw nsw i64 %164, 2 - %166 = or disjoint i64 %165, 3 - %167 = icmp samesign ult i64 %166, %21 - br i1 %167, label %168, label %.invoke, !prof !480 - -168: ; preds = %160 - %169 = add nsw i64 %165, -1 - %170 = icmp ult i64 %169, %21 - br i1 %170, label %171, label %.invoke, !prof !480 - -171: ; preds = %168 - %172 = getelementptr inbounds nuw i8, ptr %33, i64 %166 + %161 = mul nuw nsw i64 %63, %85 + %162 = add nuw nsw i64 %161, %indvars.iv + %163 = shl nuw nsw i64 %162, 2 + %164 = or disjoint i64 %163, 3 + %165 = icmp samesign ult i64 %164, %21 + br i1 %165, label %166, label %.invoke, !prof !480 + +166: ; preds = %160 + %167 = getelementptr inbounds nuw i8, ptr %33, i64 %155 + %168 = load i8, ptr %167, align 1, !alias.scope !4428, !noundef !19 + %169 = getelementptr inbounds nuw i8, ptr %33, i64 %164 + %170 = load i8, ptr %169, align 1, !alias.scope !4428, !noundef !19 + %171 = getelementptr i8, ptr %33, i64 %163 + %172 = getelementptr i8, ptr %171, i64 -1 %173 = load i8, ptr %172, align 1, !alias.scope !4428, !noundef !19 - %174 = getelementptr inbounds nuw i8, ptr %33, i64 %169 - %175 = load i8, ptr %174, align 1, !alias.scope !4428, !noundef !19 br label %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17he2ec3fd6191bb3d2E.exit.i" _ZN5image6codecs4webp8extended10WebPStatic13get_predictor17heffafe2d87fabaa7E.exit: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17he2ec3fd6191bb3d2E.exit.i", %128, %125, %111, %105, %89, %87, %83 %.011.i = phi i8 [ %107, %105 ], [ %113, %111 ], [ %127, %125 ], [ %130, %128 ], [ %143, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17he2ec3fd6191bb3d2E.exit.i" ], [ %86, %83 ], [ 0, %87 ], [ 0, %89 ] - %176 = mul nuw nsw i64 %indvars.iv147, %85 - %177 = add nuw nsw i64 %176, %indvars.iv + %174 = mul nuw nsw i64 %indvars.iv138, %85 + %175 = add nuw nsw i64 %174, %indvars.iv %.val30 = load i64, ptr %10, align 8, !noundef !19 - %178 = icmp ult i64 %177, %.val30 - br i1 %178, label %179, label %.invoke, !prof !480 + %176 = icmp ult i64 %175, %.val30 + br i1 %176, label %177, label %.invoke, !prof !480 -179: ; preds = %_ZN5image6codecs4webp8extended10WebPStatic13get_predictor17heffafe2d87fabaa7E.exit - %180 = shl nuw nsw i64 %177, 2 - %181 = or disjoint i64 %180, 3 - %182 = icmp samesign ult i64 %181, %21 - br i1 %182, label %183, label %.invoke, !prof !480 +177: ; preds = %_ZN5image6codecs4webp8extended10WebPStatic13get_predictor17heffafe2d87fabaa7E.exit + %178 = shl nuw nsw i64 %175, 2 + %179 = or disjoint i64 %178, 3 + %180 = icmp samesign ult i64 %179, %21 + br i1 %180, label %181, label %.invoke, !prof !480 -183: ; preds = %179 +181: ; preds = %177 %.val = load ptr, ptr %39, align 8, !nonnull !19, !noundef !19 - %184 = getelementptr inbounds nuw i8, ptr %.val, i64 %177 - %185 = load i8, ptr %184, align 1, !noundef !19 - %.narrow = add i8 %185, %.011.i - %186 = getelementptr inbounds nuw i8, ptr %33, i64 %181 - store i8 %.narrow, ptr %186, align 1 + %182 = getelementptr inbounds nuw i8, ptr %.val, i64 %175 + %183 = load i8, ptr %182, align 1, !noundef !19 + %.narrow = add i8 %183, %.011.i + %184 = getelementptr inbounds nuw i8, ptr %33, i64 %179 + store i8 %.narrow, ptr %184, align 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %.loopexit, label %83 -187: ; preds = %.invoke, %31 +185: ; preds = %.invoke, %31 %lpad.thr_comm = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %9) #22 - to label %.body unwind label %188 + to label %.body unwind label %186 -188: ; preds = %187, %72, %.body - %189 = landingpad { ptr, i32 } +186: ; preds = %185, %72, %.body + %187 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #23 unreachable -190: ; preds = %23 +188: ; preds = %23 store i32 1, ptr %24, align 8, !noalias !4431 call void @llvm.lifetime.end.p0(ptr nonnull %7), !noalias !4389 store i8 4, ptr %0, align 8 - %.sroa.455.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i8 0, ptr %.sroa.455.0..sroa_idx, align 8 + %.sroa.454.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i8 0, ptr %.sroa.454.0..sroa_idx, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 9 store i8 3, ptr %.sroa.5.0..sroa_idx, align 1 - %.sroa.656.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 40 - store ptr %24, ptr %.sroa.656.0..sroa_idx, align 8 + %.sroa.655.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 40 + store ptr %24, ptr %.sroa.655.0..sroa_idx, align 8 %.sroa.7.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 48 store ptr @anon.1f4c41b43b6b1ec3b0d7299236cb1468.22.llvm.9742654456972663382, ptr %.sroa.7.0..sroa_idx, align 8 invoke void @"_ZN4core3ptr52drop_in_place$LT$image..codecs..webp..vp8..Frame$GT$17h69ec787f0a78d900E"(ptr noalias noundef nonnull align 8 dereferenceable(88) %2) - to label %191 unwind label %73 + to label %189 unwind label %73 -191: ; preds = %190 +189: ; preds = %188 call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !4432 call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf92e389c95c4703bE.llvm.9832446184049035033"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %1) - %192 = getelementptr inbounds nuw i8, ptr %4, i64 8 - %193 = load i64, ptr %192, align 8, !range !101, !noalias !4432, !noundef !19 - %.not.i.i.i.i51 = icmp eq i64 %193, 0 - br i1 %.not.i.i.i.i51, label %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..extended..AlphaChunk$GT$17he6cc29becc3dfeebE.exit53", label %194 - -194: ; preds = %191 - %195 = load ptr, ptr %4, align 8, !noalias !4432, !nonnull !19, !noundef !19 - %196 = getelementptr inbounds nuw i8, ptr %4, i64 16 - %197 = load i64, ptr %196, align 8, !noalias !4432, !noundef !19 - tail call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %10, ptr noundef nonnull %195, i64 noundef %193, i64 noundef %197) - br label %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..extended..AlphaChunk$GT$17he6cc29becc3dfeebE.exit53" - -"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..extended..AlphaChunk$GT$17he6cc29becc3dfeebE.exit53": ; preds = %191, %194 + %190 = getelementptr inbounds nuw i8, ptr %4, i64 8 + %191 = load i64, ptr %190, align 8, !range !101, !noalias !4432, !noundef !19 + %.not.i.i.i.i50 = icmp eq i64 %191, 0 + br i1 %.not.i.i.i.i50, label %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..extended..AlphaChunk$GT$17he6cc29becc3dfeebE.exit52", label %192 + +192: ; preds = %189 + %193 = load ptr, ptr %4, align 8, !noalias !4432, !nonnull !19, !noundef !19 + %194 = getelementptr inbounds nuw i8, ptr %4, i64 16 + %195 = load i64, ptr %194, align 8, !noalias !4432, !noundef !19 + tail call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %10, ptr noundef nonnull %193, i64 noundef %191, i64 noundef %195) + br label %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..extended..AlphaChunk$GT$17he6cc29becc3dfeebE.exit52" + +"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..extended..AlphaChunk$GT$17he6cc29becc3dfeebE.exit52": ; preds = %189, %192 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !4432 br label %82 -198: ; preds = %72 +196: ; preds = %72 resume { ptr, i32 } %.pn27 } diff --git a/bench/libigl/optimized/min_quad_with_fixed.2.ll b/bench/libigl/optimized/min_quad_with_fixed.2.ll index fc5727439a3..d0339e50a27 100644 --- a/bench/libigl/optimized/min_quad_with_fixed.2.ll +++ b/bench/libigl/optimized/min_quad_with_fixed.2.ll @@ -10076,11 +10076,11 @@ _ZN5Eigen8internal23check_size_for_overflowIiEEvm.exit.i.i.i: ; preds = %28 %35 = getelementptr inbounds nuw i8, ptr %2, i64 8 %36 = load i64, ptr %35, align 8, !tbaa !96 %.not.i.i100 = icmp eq i64 %34, %36 - %.pre219.pre = load ptr, ptr %2, align 8, !tbaa !75, !noalias !290 + %.pre218.pre = load ptr, ptr %2, align 8, !tbaa !75, !noalias !290 br i1 %.not.i.i100, label %43, label %37 37: ; preds = %33 - tail call void @free(ptr noundef %.pre219.pre) #33 + tail call void @free(ptr noundef %.pre218.pre) #33 %38 = icmp sgt i64 %34, 0 br i1 %38, label %_ZN5Eigen8internal23check_size_for_overflowIiEEvm.exit.i.i.i103, label %.sink.split.i.i101 @@ -10094,7 +10094,7 @@ _ZN5Eigen8internal23check_size_for_overflowIiEEvm.exit.i.i.i103: ; preds = %37 %42 = tail call ptr @__cxa_allocate_exception(i64 8) #33 store ptr getelementptr inbounds nuw inrange(-16, 24) (i8, ptr @_ZTVSt9bad_alloc, i64 16), ptr %42, align 8, !tbaa !101 invoke void @__cxa_throw(ptr nonnull %42, ptr nonnull @_ZTISt9bad_alloc, ptr nonnull @_ZNSt9bad_allocD1Ev) #36 - to label %.cont unwind label %105 + to label %.cont unwind label %92 .cont: ; preds = %.invoke unreachable @@ -10105,7 +10105,7 @@ _ZN5Eigen8internal23check_size_for_overflowIiEEvm.exit.i.i.i103: ; preds = %37 br label %43 43: ; preds = %.sink.split.i.i101, %33 - %.pre = phi ptr [ %.sink.i.i102, %.sink.split.i.i101 ], [ %.pre219.pre, %33 ] + %.pre = phi ptr [ %.sink.i.i102, %.sink.split.i.i101 ], [ %.pre218.pre, %33 ] store i64 %34, ptr %35, align 8, !tbaa !96 %44 = icmp slt i64 %34, 1 br i1 %44, label %.loopexit192, label %45 @@ -10129,245 +10129,218 @@ _ZN5Eigen8internal23check_size_for_overflowIiEEvm.exit.i.i.i103: ; preds = %37 %51 = trunc nuw nsw i64 %50 to i32 %52 = add nsw i32 %51, -1 %53 = sdiv i32 %49, %52 - %54 = tail call i64 @llvm.abs.i64(i64 %48, i1 true) - %55 = trunc nuw i64 %54 to i32 - %56 = add i32 %49, %55 - %57 = tail call noundef i32 @llvm.abs.i32(i32 %49, i1 true) - %58 = add nuw nsw i32 %57, 1 - %59 = sdiv i32 %56, %58 - %60 = icmp sgt i32 %.sroa.speculated151, 1 - br i1 %60, label %.lr.ph.i.i.i.i.i.i.i.i.i.i.i, label %_ZN5Eigen8internal12linspaced_opIiEC2ERKiS4_l.exit.thread.i - -_ZN5Eigen8internal12linspaced_opIiEC2ERKiS4_l.exit.thread.i: ; preds = %.loopexit192 - %61 = icmp eq i32 %.sroa.speculated151, 1 - br i1 %61, label %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i.preheader, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit - -_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i.preheader: ; preds = %.lr.ph.i.i.i.i.i.i.i.i.i.i.i, %_ZN5Eigen8internal12linspaced_opIiEC2ERKiS4_l.exit.thread.i - br label %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i - -.lr.ph.i.i.i.i.i.i.i.i.i.i.i: ; preds = %.loopexit192 - %62 = icmp samesign ugt i32 %.sroa.speculated151, %58 - br i1 %62, label %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.us.i.i.i.i.i.i.i.i.i.i.i, label %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i.preheader - -_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.us.i.i.i.i.i.i.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i.i.i.i.i.i.i, %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.us.i.i.i.i.i.i.i.i.i.i.i - %.05.us.i.i.i.i.i.i.i.i.i.i.i = phi i64 [ %66, %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.us.i.i.i.i.i.i.i.i.i.i.i ], [ 0, %.lr.ph.i.i.i.i.i.i.i.i.i.i.i ] - %63 = trunc i64 %.05.us.i.i.i.i.i.i.i.i.i.i.i to i32 - %64 = sdiv i32 %63, %59 - %65 = getelementptr inbounds nuw i32, ptr %.pre, i64 %.05.us.i.i.i.i.i.i.i.i.i.i.i - store i32 %64, ptr %65, align 4, !tbaa !97 - %66 = add nuw nsw i64 %.05.us.i.i.i.i.i.i.i.i.i.i.i, 1 - %exitcond7.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %66, %48 - br i1 %exitcond7.not.i.i.i.i.i.i.i.i.i.i.i, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit, label %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.us.i.i.i.i.i.i.i.i.i.i.i, !llvm.loop !294 - -_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i: ; preds = %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i.preheader, %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i - %.05.i.i.i.i.i.i.i.i.i.i.i = phi i64 [ %70, %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i ], [ 0, %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i.preheader ] - %67 = trunc i64 %.05.i.i.i.i.i.i.i.i.i.i.i to i32 - %68 = mul nsw i32 %53, %67 - %69 = getelementptr inbounds nuw i32, ptr %.pre, i64 %.05.i.i.i.i.i.i.i.i.i.i.i - store i32 %68, ptr %69, align 4, !tbaa !97 - %70 = add nuw nsw i64 %.05.i.i.i.i.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %70, %48 + %or.cond = icmp sgt i32 %.sroa.speculated151, 0 + br i1 %or.cond, label %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit + +_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i: ; preds = %.loopexit192, %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i + %.05.i.i.i.i.i.i.i.i.i.i.i = phi i64 [ %57, %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i ], [ 0, %.loopexit192 ] + %54 = trunc i64 %.05.i.i.i.i.i.i.i.i.i.i.i to i32 + %55 = mul nsw i32 %53, %54 + %56 = getelementptr inbounds nuw i32, ptr %.pre, i64 %.05.i.i.i.i.i.i.i.i.i.i.i + store i32 %55, ptr %56, align 4, !tbaa !97 + %57 = add nuw nsw i64 %.05.i.i.i.i.i.i.i.i.i.i.i, 1 + %exitcond.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %57, %48 br i1 %exitcond.not.i.i.i.i.i.i.i.i.i.i.i, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit, label %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i, !llvm.loop !294 -_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit: ; preds = %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i, %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.us.i.i.i.i.i.i.i.i.i.i.i, %_ZN5Eigen8internal12linspaced_opIiEC2ERKiS4_l.exit.thread.i +_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit: ; preds = %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i, %.loopexit192 br i1 %11, label %.lr.ph195, label %._crit_edge204 .lr.ph195: ; preds = %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit %.not83 = icmp eq ptr %3, null - %71 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %72 = load ptr, ptr %71, align 8, !tbaa !138 - %73 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %74 = load ptr, ptr %73, align 8, !tbaa !122 - %75 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %76 = load ptr, ptr %75, align 8, !tbaa !136 - %77 = icmp eq ptr %76, null - %wide.trip.count212 = and i64 %6, 2147483647 - br i1 %77, label %.lr.ph195.split.us, label %.lr.ph195.split + %58 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %59 = load ptr, ptr %58, align 8, !tbaa !138 + %60 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %61 = load ptr, ptr %60, align 8, !tbaa !122 + %62 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %63 = load ptr, ptr %62, align 8, !tbaa !136 + %64 = icmp eq ptr %63, null + %wide.trip.count211 = and i64 %6, 2147483647 + br i1 %64, label %.lr.ph195.split.us, label %.lr.ph195.split .lr.ph195.split.us: ; preds = %.lr.ph195, %._crit_edge.us - %indvars.iv209 = phi i64 [ %indvars.iv.next210, %._crit_edge.us ], [ 0, %.lr.ph195 ] - %78 = trunc nuw nsw i64 %indvars.iv209 to i32 - br i1 %.not83, label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit.us, label %79 + %indvars.iv208 = phi i64 [ %indvars.iv.next209, %._crit_edge.us ], [ 0, %.lr.ph195 ] + %65 = trunc nuw nsw i64 %indvars.iv208 to i32 + br i1 %.not83, label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit.us, label %66 -79: ; preds = %.lr.ph195.split.us - %80 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv209 - %81 = load i32, ptr %80, align 4, !tbaa !97 +66: ; preds = %.lr.ph195.split.us + %67 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv208 + %68 = load i32, ptr %67, align 4, !tbaa !97 br label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit.us -_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit.us: ; preds = %79, %.lr.ph195.split.us - %.071.us = phi i32 [ %81, %79 ], [ %78, %.lr.ph195.split.us ] - %82 = sext i32 %.071.us to i64 - %83 = getelementptr inbounds i32, ptr %74, i64 %82 - %84 = load i32, ptr %83, align 4, !tbaa !97 - %85 = getelementptr i8, ptr %83, i64 4 - %86 = load i32, ptr %85, align 4, !tbaa !97 - %87 = sext i32 %86 to i64 - %88 = icmp slt i32 %84, %86 - br i1 %88, label %.lr.ph.us.preheader, label %._crit_edge.us +_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit.us: ; preds = %66, %.lr.ph195.split.us + %.071.us = phi i32 [ %68, %66 ], [ %65, %.lr.ph195.split.us ] + %69 = sext i32 %.071.us to i64 + %70 = getelementptr inbounds i32, ptr %61, i64 %69 + %71 = load i32, ptr %70, align 4, !tbaa !97 + %72 = getelementptr i8, ptr %70, i64 4 + %73 = load i32, ptr %72, align 4, !tbaa !97 + %74 = sext i32 %73 to i64 + %75 = icmp slt i32 %71, %73 + br i1 %75, label %.lr.ph.us.preheader, label %._crit_edge.us .lr.ph.us.preheader: ; preds = %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit.us - %89 = sext i32 %84 to i64 + %76 = sext i32 %71 to i64 br label %.lr.ph.us ._crit_edge.us: ; preds = %.lr.ph.us, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit.us - %indvars.iv.next210 = add nuw nsw i64 %indvars.iv209, 1 - %exitcond213.not = icmp eq i64 %indvars.iv.next210, %wide.trip.count212 - br i1 %exitcond213.not, label %.lr.ph203, label %.lr.ph195.split.us, !llvm.loop !295 + %indvars.iv.next209 = add nuw nsw i64 %indvars.iv208, 1 + %exitcond212.not = icmp eq i64 %indvars.iv.next209, %wide.trip.count211 + br i1 %exitcond212.not, label %.lr.ph203, label %.lr.ph195.split.us, !llvm.loop !295 .lr.ph.us: ; preds = %.lr.ph.us.preheader, %.lr.ph.us - %.sroa.7117.0193.us = phi i64 [ %95, %.lr.ph.us ], [ %89, %.lr.ph.us.preheader ] - %90 = getelementptr inbounds i32, ptr %72, i64 %.sroa.7117.0193.us - %91 = load i32, ptr %90, align 4, !tbaa !97 - %92 = sext i32 %91 to i64 - %93 = getelementptr inbounds i32, ptr %.pre, i64 %92 - %94 = load i32, ptr %93, align 4, !tbaa !97 - %.sroa.speculated.us = tail call i32 @llvm.smin.i32(i32 %78, i32 %94) - store i32 %.sroa.speculated.us, ptr %93, align 4, !tbaa !97 - %95 = add nsw i64 %.sroa.7117.0193.us, 1 - %exitcond208.not = icmp eq i64 %95, %87 - br i1 %exitcond208.not, label %._crit_edge.us, label %.lr.ph.us, !llvm.loop !296 + %.sroa.7117.0193.us = phi i64 [ %82, %.lr.ph.us ], [ %76, %.lr.ph.us.preheader ] + %77 = getelementptr inbounds i32, ptr %59, i64 %.sroa.7117.0193.us + %78 = load i32, ptr %77, align 4, !tbaa !97 + %79 = sext i32 %78 to i64 + %80 = getelementptr inbounds i32, ptr %.pre, i64 %79 + %81 = load i32, ptr %80, align 4, !tbaa !97 + %.sroa.speculated.us = tail call i32 @llvm.smin.i32(i32 %65, i32 %81) + store i32 %.sroa.speculated.us, ptr %80, align 4, !tbaa !97 + %82 = add nsw i64 %.sroa.7117.0193.us, 1 + %exitcond207.not = icmp eq i64 %82, %74 + br i1 %exitcond207.not, label %._crit_edge.us, label %.lr.ph.us, !llvm.loop !296 .lr.ph203: ; preds = %._crit_edge, %._crit_edge.us - %96 = load ptr, ptr %1, align 8, !tbaa !75 + %83 = load ptr, ptr %1, align 8, !tbaa !75 %.not = icmp eq ptr %3, null - %97 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %98 = load ptr, ptr %97, align 8, !tbaa !138 - %99 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %100 = load ptr, ptr %99, align 8, !tbaa !122 - %101 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %102 = load ptr, ptr %101, align 8, !tbaa !136 - %103 = icmp eq ptr %102, null + %84 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %85 = load ptr, ptr %84, align 8, !tbaa !138 + %86 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %87 = load ptr, ptr %86, align 8, !tbaa !122 + %88 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %89 = load ptr, ptr %88, align 8, !tbaa !136 + %90 = icmp eq ptr %89, null %sext = shl i64 %9, 32 - %104 = ashr exact i64 %sext, 32 - %wide.trip.count217 = and i64 %6, 2147483647 - br label %127 + %91 = ashr exact i64 %sext, 32 + %wide.trip.count216 = and i64 %6, 2147483647 + br label %114 -105: ; preds = %.invoke - %106 = landingpad { ptr, i32 } +92: ; preds = %.invoke + %93 = landingpad { ptr, i32 } cleanup tail call void @free(ptr noundef %.sroa.0131.0181) #33 br label %.body .lr.ph195.split: ; preds = %.lr.ph195, %._crit_edge %indvars.iv = phi i64 [ %indvars.iv.next, %._crit_edge ], [ 0, %.lr.ph195 ] - %107 = trunc nuw nsw i64 %indvars.iv to i32 - br i1 %.not83, label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit, label %108 + %94 = trunc nuw nsw i64 %indvars.iv to i32 + br i1 %.not83, label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit, label %95 -108: ; preds = %.lr.ph195.split - %109 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv - %110 = load i32, ptr %109, align 4, !tbaa !97 +95: ; preds = %.lr.ph195.split + %96 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv + %97 = load i32, ptr %96, align 4, !tbaa !97 br label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit -_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit: ; preds = %108, %.lr.ph195.split - %.071 = phi i32 [ %110, %108 ], [ %107, %.lr.ph195.split ] - %111 = sext i32 %.071 to i64 - %112 = getelementptr inbounds i32, ptr %74, i64 %111 - %113 = load i32, ptr %112, align 4, !tbaa !97 - %114 = sext i32 %113 to i64 - %115 = getelementptr inbounds i32, ptr %76, i64 %111 - %116 = load i32, ptr %115, align 4, !tbaa !97 - %117 = sext i32 %116 to i64 - %118 = add nsw i64 %117, %114 - %119 = icmp sgt i32 %116, 0 - br i1 %119, label %.lr.ph, label %._crit_edge +_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit: ; preds = %95, %.lr.ph195.split + %.071 = phi i32 [ %97, %95 ], [ %94, %.lr.ph195.split ] + %98 = sext i32 %.071 to i64 + %99 = getelementptr inbounds i32, ptr %61, i64 %98 + %100 = load i32, ptr %99, align 4, !tbaa !97 + %101 = sext i32 %100 to i64 + %102 = getelementptr inbounds i32, ptr %63, i64 %98 + %103 = load i32, ptr %102, align 4, !tbaa !97 + %104 = sext i32 %103 to i64 + %105 = add nsw i64 %104, %101 + %106 = icmp sgt i32 %103, 0 + br i1 %106, label %.lr.ph, label %._crit_edge ._crit_edge: ; preds = %.lr.ph, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count212 + %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count211 br i1 %exitcond.not, label %.lr.ph203, label %.lr.ph195.split, !llvm.loop !295 .lr.ph: ; preds = %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit, %.lr.ph - %.sroa.7117.0193 = phi i64 [ %125, %.lr.ph ], [ %114, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit ] - %120 = getelementptr inbounds i32, ptr %72, i64 %.sroa.7117.0193 - %121 = load i32, ptr %120, align 4, !tbaa !97 - %122 = sext i32 %121 to i64 - %123 = getelementptr inbounds i32, ptr %.pre, i64 %122 - %124 = load i32, ptr %123, align 4, !tbaa !97 - %.sroa.speculated = tail call i32 @llvm.smin.i32(i32 %107, i32 %124) - store i32 %.sroa.speculated, ptr %123, align 4, !tbaa !97 - %125 = add nsw i64 %.sroa.7117.0193, 1 - %126 = icmp slt i64 %125, %118 - br i1 %126, label %.lr.ph, label %._crit_edge, !llvm.loop !296 + %.sroa.7117.0193 = phi i64 [ %112, %.lr.ph ], [ %101, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit ] + %107 = getelementptr inbounds i32, ptr %59, i64 %.sroa.7117.0193 + %108 = load i32, ptr %107, align 4, !tbaa !97 + %109 = sext i32 %108 to i64 + %110 = getelementptr inbounds i32, ptr %.pre, i64 %109 + %111 = load i32, ptr %110, align 4, !tbaa !97 + %.sroa.speculated = tail call i32 @llvm.smin.i32(i32 %94, i32 %111) + store i32 %.sroa.speculated, ptr %110, align 4, !tbaa !97 + %112 = add nsw i64 %.sroa.7117.0193, 1 + %113 = icmp slt i64 %112, %105 + br i1 %113, label %.lr.ph, label %._crit_edge, !llvm.loop !296 ._crit_edge204: ; preds = %._crit_edge201, %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit tail call void @free(ptr noundef %.sroa.0131.0181) #33 tail call void @free(ptr noundef %.sroa.0139.0166173180) #33 ret i32 0 -127: ; preds = %.lr.ph203, %._crit_edge201 - %indvars.iv214 = phi i64 [ 0, %.lr.ph203 ], [ %indvars.iv.next215, %._crit_edge201 ] - %128 = icmp sge i64 %indvars.iv214, %104 - %129 = getelementptr inbounds nuw i32, ptr %.sroa.0131.0181, i64 %indvars.iv214 - %130 = trunc nuw nsw i64 %indvars.iv214 to i32 - store i32 %130, ptr %129, align 4, !tbaa !97 - %131 = getelementptr inbounds nuw i32, ptr %.sroa.0139.0166173180, i64 %indvars.iv214 - store i32 %130, ptr %131, align 4, !tbaa !97 - %132 = getelementptr inbounds nuw i32, ptr %96, i64 %indvars.iv214 - store i32 %7, ptr %132, align 4, !tbaa !97 - br i1 %.not, label %136, label %133 - -133: ; preds = %127 - %134 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv214 - %135 = load i32, ptr %134, align 4, !tbaa !97 - br label %136 +114: ; preds = %.lr.ph203, %._crit_edge201 + %indvars.iv213 = phi i64 [ 0, %.lr.ph203 ], [ %indvars.iv.next214, %._crit_edge201 ] + %115 = icmp sge i64 %indvars.iv213, %91 + %116 = getelementptr inbounds nuw i32, ptr %.sroa.0131.0181, i64 %indvars.iv213 + %117 = trunc nuw nsw i64 %indvars.iv213 to i32 + store i32 %117, ptr %116, align 4, !tbaa !97 + %118 = getelementptr inbounds nuw i32, ptr %.sroa.0139.0166173180, i64 %indvars.iv213 + store i32 %117, ptr %118, align 4, !tbaa !97 + %119 = getelementptr inbounds nuw i32, ptr %83, i64 %indvars.iv213 + store i32 %7, ptr %119, align 4, !tbaa !97 + br i1 %.not, label %123, label %120 + +120: ; preds = %114 + %121 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv213 + %122 = load i32, ptr %121, align 4, !tbaa !97 + br label %123 -136: ; preds = %133, %127 - %.056 = phi i32 [ %135, %133 ], [ %130, %127 ] - %137 = sext i32 %.056 to i64 - %138 = getelementptr inbounds i32, ptr %100, i64 %137 - %139 = load i32, ptr %138, align 4, !tbaa !97 - %140 = sext i32 %139 to i64 - br i1 %103, label %141, label %145 +123: ; preds = %120, %114 + %.056 = phi i32 [ %122, %120 ], [ %117, %114 ] + %124 = sext i32 %.056 to i64 + %125 = getelementptr inbounds i32, ptr %87, i64 %124 + %126 = load i32, ptr %125, align 4, !tbaa !97 + %127 = sext i32 %126 to i64 + br i1 %90, label %128, label %132 -141: ; preds = %136 - %142 = getelementptr i8, ptr %138, i64 4 - %143 = load i32, ptr %142, align 4, !tbaa !97 - %144 = sext i32 %143 to i64 +128: ; preds = %123 + %129 = getelementptr i8, ptr %125, i64 4 + %130 = load i32, ptr %129, align 4, !tbaa !97 + %131 = sext i32 %130 to i64 br label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 -145: ; preds = %136 - %146 = getelementptr inbounds i32, ptr %102, i64 %137 - %147 = load i32, ptr %146, align 4, !tbaa !97 - %148 = sext i32 %147 to i64 - %149 = add nsw i64 %148, %140 +132: ; preds = %123 + %133 = getelementptr inbounds i32, ptr %89, i64 %124 + %134 = load i32, ptr %133, align 4, !tbaa !97 + %135 = sext i32 %134 to i64 + %136 = add nsw i64 %135, %127 br label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 -_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109: ; preds = %141, %145 - %.sink.i108 = phi i64 [ %144, %141 ], [ %149, %145 ] - %150 = icmp sle i64 %.sink.i108, %140 - %.not190196 = select i1 %150, i1 %128, i1 false +_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109: ; preds = %128, %132 + %.sink.i108 = phi i64 [ %131, %128 ], [ %136, %132 ] + %137 = icmp sle i64 %.sink.i108, %127 + %.not190196 = select i1 %137, i1 %115, i1 false br i1 %.not190196, label %._crit_edge201, label %.lr.ph200 -._crit_edge201: ; preds = %172, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 - %indvars.iv.next215 = add nuw nsw i64 %indvars.iv214, 1 - %exitcond218.not = icmp eq i64 %indvars.iv.next215, %wide.trip.count217 - br i1 %exitcond218.not, label %._crit_edge204, label %127, !llvm.loop !297 +._crit_edge201: ; preds = %159, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 + %indvars.iv.next214 = add nuw nsw i64 %indvars.iv213, 1 + %exitcond217.not = icmp eq i64 %indvars.iv.next214, %wide.trip.count216 + br i1 %exitcond217.not, label %._crit_edge204, label %114, !llvm.loop !297 -.lr.ph200: ; preds = %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109, %172 - %151 = phi i1 [ %174, %172 ], [ %150, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 ] - %.066199 = phi i32 [ %.167, %172 ], [ %130, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 ] - %.069198 = phi i1 [ %spec.select, %172 ], [ %128, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 ] - %.sroa.7.0197 = phi i64 [ %173, %172 ], [ %140, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 ] - br i1 %151, label %156, label %152 +.lr.ph200: ; preds = %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109, %159 + %138 = phi i1 [ %161, %159 ], [ %137, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 ] + %.066199 = phi i32 [ %.167, %159 ], [ %117, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 ] + %.069198 = phi i1 [ %spec.select, %159 ], [ %115, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 ] + %.sroa.7.0197 = phi i64 [ %160, %159 ], [ %127, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 ] + br i1 %138, label %143, label %139 -152: ; preds = %.lr.ph200 - %153 = getelementptr inbounds i32, ptr %98, i64 %.sroa.7.0197 - %154 = load i32, ptr %153, align 4, !tbaa !97 - %155 = sext i32 %154 to i64 - br label %156 +139: ; preds = %.lr.ph200 + %140 = getelementptr inbounds i32, ptr %85, i64 %.sroa.7.0197 + %141 = load i32, ptr %140, align 4, !tbaa !97 + %142 = sext i32 %141 to i64 + br label %143 -156: ; preds = %.lr.ph200, %152 - %.055 = phi i64 [ %155, %152 ], [ %indvars.iv214, %.lr.ph200 ] - %157 = icmp eq i64 %.055, %indvars.iv214 - %spec.select = select i1 %157, i1 true, i1 %.069198 - %158 = getelementptr inbounds i32, ptr %.pre, i64 %.055 - %159 = load i32, ptr %158, align 4, !tbaa !97 - %160 = sext i32 %159 to i64 - %.not78 = icmp sgt i64 %indvars.iv214, %160 - br i1 %.not78, label %161, label %172 +143: ; preds = %.lr.ph200, %139 + %.055 = phi i64 [ %142, %139 ], [ %indvars.iv213, %.lr.ph200 ] + %144 = icmp eq i64 %.055, %indvars.iv213 + %spec.select = select i1 %144, i1 true, i1 %.069198 + %145 = getelementptr inbounds i32, ptr %.pre, i64 %.055 + %146 = load i32, ptr %145, align 4, !tbaa !97 + %147 = sext i32 %146 to i64 + %.not78 = icmp sgt i64 %indvars.iv213, %147 + br i1 %.not78, label %148, label %159 -161: ; preds = %156 - %.014.in18.i = getelementptr inbounds i32, ptr %.sroa.0131.0181, i64 %160 +148: ; preds = %143 + %.014.in18.i = getelementptr inbounds i32, ptr %.sroa.0131.0181, i64 %147 %.01419.i = load i32, ptr %.014.in18.i, align 4, !tbaa !97 %.pn20.i = sext i32 %.01419.i to i64 %.0.in21.i = getelementptr inbounds i32, ptr %.sroa.0131.0181, i64 %.pn20.i @@ -10375,12 +10348,12 @@ _ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS %.not23.i = icmp eq i32 %.022.i, %.01419.i br i1 %.not23.i, label %.loopexit, label %.lr.ph.i -.lr.ph.i: ; preds = %161, %.lr.ph.i - %.025.i = phi i32 [ %.0.i, %.lr.ph.i ], [ %.022.i, %161 ] - %.01524.i = phi i32 [ %.025.i, %.lr.ph.i ], [ %159, %161 ] - %162 = sext i32 %.01524.i to i64 - %163 = getelementptr inbounds i32, ptr %.sroa.0131.0181, i64 %162 - store i32 %.025.i, ptr %163, align 4, !tbaa !97 +.lr.ph.i: ; preds = %148, %.lr.ph.i + %.025.i = phi i32 [ %.0.i, %.lr.ph.i ], [ %.022.i, %148 ] + %.01524.i = phi i32 [ %.025.i, %.lr.ph.i ], [ %146, %148 ] + %149 = sext i32 %.01524.i to i64 + %150 = getelementptr inbounds i32, ptr %.sroa.0131.0181, i64 %149 + store i32 %.025.i, ptr %150, align 4, !tbaa !97 %.pn16.i = sext i32 %.025.i to i64 %.014.in.i = getelementptr inbounds i32, ptr %.sroa.0131.0181, i64 %.pn16.i %.014.i = load i32, ptr %.014.in.i, align 4, !tbaa !97 @@ -10390,35 +10363,35 @@ _ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS %.not.i = icmp eq i32 %.0.i, %.014.i br i1 %.not.i, label %.loopexit, label %.lr.ph.i, !llvm.loop !298 -.loopexit: ; preds = %.lr.ph.i, %161 - %.pre-phi = phi i64 [ %.pn20.i, %161 ], [ %.pn.i, %.lr.ph.i ] - %.014.lcssa.i = phi i32 [ %.01419.i, %161 ], [ %.014.i, %.lr.ph.i ] - %164 = getelementptr inbounds i32, ptr %.sroa.0139.0166173180, i64 %.pre-phi - %165 = load i32, ptr %164, align 4, !tbaa !97 - %166 = zext i32 %165 to i64 - %.not79 = icmp eq i64 %indvars.iv214, %166 - br i1 %.not79, label %172, label %167 - -167: ; preds = %.loopexit - %168 = sext i32 %165 to i64 - %169 = getelementptr inbounds i32, ptr %96, i64 %168 - store i32 %130, ptr %169, align 4, !tbaa !97 - %170 = sext i32 %.066199 to i64 - %171 = getelementptr inbounds i32, ptr %.sroa.0131.0181, i64 %170 - store i32 %.014.lcssa.i, ptr %171, align 4, !tbaa !97 - store i32 %130, ptr %164, align 4, !tbaa !97 - br label %172 +.loopexit: ; preds = %.lr.ph.i, %148 + %.pre-phi = phi i64 [ %.pn20.i, %148 ], [ %.pn.i, %.lr.ph.i ] + %.014.lcssa.i = phi i32 [ %.01419.i, %148 ], [ %.014.i, %.lr.ph.i ] + %151 = getelementptr inbounds i32, ptr %.sroa.0139.0166173180, i64 %.pre-phi + %152 = load i32, ptr %151, align 4, !tbaa !97 + %153 = zext i32 %152 to i64 + %.not79 = icmp eq i64 %indvars.iv213, %153 + br i1 %.not79, label %159, label %154 -172: ; preds = %.loopexit, %167, %156 - %.167 = phi i32 [ %.066199, %156 ], [ %.014.lcssa.i, %167 ], [ %.066199, %.loopexit ] - %173 = add nsw i64 %.sroa.7.0197, 1 - %174 = icmp sge i64 %173, %.sink.i108 - %.not190 = select i1 %174, i1 %spec.select, i1 false +154: ; preds = %.loopexit + %155 = sext i32 %152 to i64 + %156 = getelementptr inbounds i32, ptr %83, i64 %155 + store i32 %117, ptr %156, align 4, !tbaa !97 + %157 = sext i32 %.066199 to i64 + %158 = getelementptr inbounds i32, ptr %.sroa.0131.0181, i64 %157 + store i32 %.014.lcssa.i, ptr %158, align 4, !tbaa !97 + store i32 %117, ptr %151, align 4, !tbaa !97 + br label %159 + +159: ; preds = %.loopexit, %154, %143 + %.167 = phi i32 [ %.066199, %143 ], [ %.014.lcssa.i, %154 ], [ %.066199, %.loopexit ] + %160 = add nsw i64 %.sroa.7.0197, 1 + %161 = icmp sge i64 %160, %.sink.i108 + %.not190 = select i1 %161, i1 %spec.select, i1 false br i1 %.not190, label %._crit_edge201, label %.lr.ph200, !llvm.loop !299 -.body: ; preds = %105, %20 - %.sroa.0139.0167 = phi ptr [ %.sroa.0139.0166173180, %105 ], [ %calloc, %20 ] - %.pn84.pn.pn.pn.pn = phi { ptr, i32 } [ %106, %105 ], [ %21, %20 ] +.body: ; preds = %92, %20 + %.sroa.0139.0167 = phi ptr [ %.sroa.0139.0166173180, %92 ], [ %calloc, %20 ] + %.pn84.pn.pn.pn.pn = phi { ptr, i32 } [ %93, %92 ], [ %21, %20 ] tail call void @free(ptr noundef %.sroa.0139.0167) #33 resume { ptr, i32 } %.pn84.pn.pn.pn.pn } @@ -55542,9 +55515,6 @@ declare i32 @llvm.smin.i32(i32, i32) #30 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smax.i32(i32, i32) #30 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.abs.i64(i64, i1 immarg) #30 - attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { mustprogress uwtable "min-legal-vector-width"="128" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } diff --git a/bench/llvm/optimized/APInt.ll b/bench/llvm/optimized/APInt.ll index 35bf6ca3e8d..ff289dc26a2 100644 --- a/bench/llvm/optimized/APInt.ll +++ b/bench/llvm/optimized/APInt.ll @@ -6028,109 +6028,104 @@ _ZN4llvm5APIntD2Ev.exit: ; preds = %_ZN4llvm5APInt11tcI br label %_ZN4llvm5APIntlSEj.exit.thread _ZN4llvm5APIntlSEj.exit: ; preds = %86 - %135 = trunc nuw nsw i64 %6 to i32 - %136 = add nsw i32 %135, -1075 - %137 = icmp eq i32 %136, %2 - %138 = zext nneg i32 %136 to i64 - %139 = shl i64 %20, %138 - %storemerge.i = select i1 %137, i64 0, i64 %139 - %140 = add nuw nsw i32 %2, 63 - %141 = and i32 %140, 63 - %142 = xor i32 %141, 63 - %143 = zext nneg i32 %142 to i64 - %144 = lshr i64 -1, %143 - %145 = icmp eq i32 %2, 0 - %spec.select.i = select i1 %145, i64 0, i64 %144, !prof !11 - %146 = and i64 %storemerge.i, %spec.select.i + %135 = add nuw nsw i64 %6, 4294966221 + %136 = and i64 %135, 4294967295 + %137 = shl i64 %20, %136 + %138 = add nuw nsw i32 %2, 63 + %139 = and i32 %138, 63 + %140 = xor i32 %139, 63 + %141 = zext nneg i32 %140 to i64 + %142 = lshr i64 -1, %141 + %143 = and i64 %137, %142 br i1 %.not, label %_ZN4llvm5APIntC2ERKS0_.exit44.thread, label %_ZN4llvm5APIntC2ERKS0_.exit44.thread.thread102 _ZN4llvm5APIntlSEj.exit.thread: ; preds = %.loopexit.i.i, %88 - %147 = add i32 %2, 63 - %148 = and i32 %147, 63 - %149 = xor i32 %148, 63 - %150 = zext nneg i32 %149 to i64 - %151 = lshr i64 -1, %150 - %152 = add nuw nsw i64 %95, 4294967295 - %153 = and i64 %152, 4294967295 - %154 = getelementptr inbounds nuw i64, ptr %92, i64 %153 - %155 = load i64, ptr %154, align 8, !tbaa !9 - %156 = and i64 %155, %151 - store i64 %156, ptr %154, align 8, !tbaa !9 + %144 = add i32 %2, 63 + %145 = and i32 %144, 63 + %146 = xor i32 %145, 63 + %147 = zext nneg i32 %146 to i64 + %148 = lshr i64 -1, %147 + %149 = add nuw nsw i64 %95, 4294967295 + %150 = and i64 %149, 4294967295 + %151 = getelementptr inbounds nuw i64, ptr %92, i64 %150 + %152 = load i64, ptr %151, align 8, !tbaa !9 + %153 = and i64 %152, %148 + store i64 %153, ptr %151, align 8, !tbaa !9 br i1 %.not, label %.thread, label %_ZN4llvm5APIntC2ERKS0_.exit44.thread.thread .thread: ; preds = %_ZN4llvm5APIntlSEj.exit.thread - %157 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %91) #22 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %157, ptr nonnull align 8 %92, i64 %91, i1 false) + %154 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %91) #22 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %154, ptr nonnull align 8 %92, i64 %91, i1 false) tail call void @llvm.experimental.noalias.scope.decl(metadata !87) br label %.lr.ph.i.i.i.i.i28 .lr.ph.i.i.i.i.i28: ; preds = %.lr.ph.i.i.i.i.i28, %.thread %indvars.iv.i.i.i.i.i29 = phi i64 [ %indvars.iv.next.i.i.i.i.i30, %.lr.ph.i.i.i.i.i28 ], [ 0, %.thread ] - %158 = getelementptr inbounds nuw i64, ptr %157, i64 %indvars.iv.i.i.i.i.i29 - %159 = load i64, ptr %158, align 8, !tbaa !9, !noalias !87 - %160 = xor i64 %159, -1 - store i64 %160, ptr %158, align 8, !tbaa !9, !noalias !87 + %155 = getelementptr inbounds nuw i64, ptr %154, i64 %indvars.iv.i.i.i.i.i29 + %156 = load i64, ptr %155, align 8, !tbaa !9, !noalias !87 + %157 = xor i64 %156, -1 + store i64 %157, ptr %155, align 8, !tbaa !9, !noalias !87 %indvars.iv.next.i.i.i.i.i30 = add nuw nsw i64 %indvars.iv.i.i.i.i.i29, 1 %exitcond.not.i.i.i.i.i31 = icmp eq i64 %indvars.iv.next.i.i.i.i.i30, %95 br i1 %exitcond.not.i.i.i.i.i31, label %.lr.ph.preheader.i.i.i.i.i32, label %.lr.ph.i.i.i.i.i28, !llvm.loop !17 .lr.ph.preheader.i.i.i.i.i32: ; preds = %.lr.ph.i.i.i.i.i28 - %161 = getelementptr inbounds nuw i64, ptr %157, i64 %153 - %162 = load i64, ptr %161, align 8, !tbaa !9, !noalias !87 - %163 = and i64 %162, %151 - store i64 %163, ptr %161, align 8, !tbaa !9, !noalias !87 + %158 = getelementptr inbounds nuw i64, ptr %154, i64 %150 + %159 = load i64, ptr %158, align 8, !tbaa !9, !noalias !87 + %160 = and i64 %159, %148 + store i64 %160, ptr %158, align 8, !tbaa !9, !noalias !87 br label %.lr.ph.i.i.i1.i.i33 .lr.ph.i.i.i1.i.i33: ; preds = %.lr.ph.i.i.i1.i.i33, %.lr.ph.preheader.i.i.i.i.i32 %indvars.iv.i.i.i2.i.i34 = phi i64 [ 0, %.lr.ph.preheader.i.i.i.i.i32 ], [ %indvars.iv.next.i.i.i3.i.i36, %.lr.ph.i.i.i1.i.i33 ] - %164 = getelementptr inbounds nuw i64, ptr %157, i64 %indvars.iv.i.i.i2.i.i34 - %165 = load i64, ptr %164, align 8, !tbaa !9, !noalias !87 - %166 = add i64 %165, 1 - store i64 %166, ptr %164, align 8, !tbaa !9, !noalias !87 - %.not.i.i.i.i.i35 = icmp ne i64 %166, 0 + %161 = getelementptr inbounds nuw i64, ptr %154, i64 %indvars.iv.i.i.i2.i.i34 + %162 = load i64, ptr %161, align 8, !tbaa !9, !noalias !87 + %163 = add i64 %162, 1 + store i64 %163, ptr %161, align 8, !tbaa !9, !noalias !87 + %.not.i.i.i.i.i35 = icmp ne i64 %163, 0 %indvars.iv.next.i.i.i3.i.i36 = add nuw nsw i64 %indvars.iv.i.i.i2.i.i34, 1 %exitcond.not.i.i.i4.i.i37 = icmp eq i64 %indvars.iv.next.i.i.i3.i.i36, %95 %or.cond.i.i.i38 = select i1 %.not.i.i.i.i.i35, i1 true, i1 %exitcond.not.i.i.i4.i.i37 br i1 %or.cond.i.i.i38, label %_ZN4llvm5APIntC2ERKS0_.exit44.thread.thread104, label %.lr.ph.i.i.i1.i.i33, !llvm.loop !13 _ZN4llvm5APIntC2ERKS0_.exit44.thread.thread104: ; preds = %.lr.ph.i.i.i1.i.i33 - %167 = ptrtoint ptr %157 to i64 - %168 = load i64, ptr %161, align 8, !tbaa !9, !noalias !87 - %169 = and i64 %168, %151 - store i64 %169, ptr %161, align 8, !tbaa !9, !noalias !87 - %170 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i32 %2, ptr %170, align 8, !tbaa !3, !alias.scope !87 - store i64 %167, ptr %0, align 8, !alias.scope !87 - br label %178 + %164 = ptrtoint ptr %154 to i64 + %165 = load i64, ptr %158, align 8, !tbaa !9, !noalias !87 + %166 = and i64 %165, %148 + store i64 %166, ptr %158, align 8, !tbaa !9, !noalias !87 + %167 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i32 %2, ptr %167, align 8, !tbaa !3, !alias.scope !87 + store i64 %164, ptr %0, align 8, !alias.scope !87 + br label %175 _ZN4llvm5APIntC2ERKS0_.exit44.thread.thread102: ; preds = %_ZN4llvm5APIntlSEj.exit - %171 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i32 %2, ptr %171, align 8, !tbaa !3 - store i64 %146, ptr %0, align 8, !tbaa !8 + %168 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i32 %2, ptr %168, align 8, !tbaa !3 + store i64 %143, ptr %0, align 8, !tbaa !8 br label %_ZN4llvm5APIntC2Ejmbb.exit _ZN4llvm5APIntC2ERKS0_.exit44.thread.thread: ; preds = %_ZN4llvm5APIntlSEj.exit.thread - %172 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i32 %2, ptr %172, align 8, !tbaa !3 - %173 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %91) #22 - store ptr %173, ptr %0, align 8, !tbaa !8 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %173, ptr nonnull align 8 %92, i64 %91, i1 false) - br label %178 + %169 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i32 %2, ptr %169, align 8, !tbaa !3 + %170 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %91) #22 + store ptr %170, ptr %0, align 8, !tbaa !8 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %170, ptr nonnull align 8 %92, i64 %91, i1 false) + br label %175 _ZN4llvm5APIntC2ERKS0_.exit44.thread: ; preds = %_ZN4llvm5APIntlSEj.exit - %174 = xor i64 %146, %spec.select.i - %175 = add i64 %174, 1 - %176 = and i64 %175, %spec.select.i - %177 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i32 %2, ptr %177, align 8, !tbaa !3, !alias.scope !87 - store i64 %176, ptr %0, align 8, !alias.scope !87 + %171 = xor i64 %143, %142 + %172 = add i64 %171, 1 + %173 = and i64 %172, %142 + %174 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i32 %2, ptr %174, align 8, !tbaa !3, !alias.scope !87 + store i64 %173, ptr %0, align 8, !alias.scope !87 br label %_ZN4llvm5APIntC2Ejmbb.exit -178: ; preds = %_ZN4llvm5APIntC2ERKS0_.exit44.thread.thread, %_ZN4llvm5APIntC2ERKS0_.exit44.thread.thread104 +175: ; preds = %_ZN4llvm5APIntC2ERKS0_.exit44.thread.thread, %_ZN4llvm5APIntC2ERKS0_.exit44.thread.thread104 tail call void @_ZdaPv(ptr noundef nonnull %92) #23 br label %_ZN4llvm5APIntC2Ejmbb.exit -_ZN4llvm5APIntC2Ejmbb.exit: ; preds = %_ZN4llvm5APIntC2ERKS0_.exit44.thread, %_ZN4llvm5APIntC2ERKS0_.exit44.thread.thread102, %66, %67, %178, %81, %80, %12, %11, %_ZN4llvm5APIntD2Ev.exit +_ZN4llvm5APIntC2Ejmbb.exit: ; preds = %_ZN4llvm5APIntC2ERKS0_.exit44.thread, %_ZN4llvm5APIntC2ERKS0_.exit44.thread.thread102, %66, %67, %175, %81, %80, %12, %11, %_ZN4llvm5APIntD2Ev.exit ret void } diff --git a/bench/llvm/optimized/Attributes.ll b/bench/llvm/optimized/Attributes.ll index 7ab4b164ea1..8abd3b7e499 100644 --- a/bench/llvm/optimized/Attributes.ll +++ b/bench/llvm/optimized/Attributes.ll @@ -1086,56 +1086,54 @@ _ZNK4llvm9StringRef9ends_withES0_.exit: ; preds = %_ZNK4llvm9StringRef _ZNK4llvm9StringRef9ends_withES0_.exit.thread: ; preds = %_ZNK4llvm9StringRef9ends_withES0_.exit %19 = add nsw i64 %13, -4 %20 = getelementptr inbounds nuw i8, ptr %10, i64 18 - %21 = add nsw i64 %13, -2 - %.sroa.speculated.i = tail call i64 @llvm.umin.i64(i64 %21, i64 %19) br label %_ZNK4llvm9StringRef11starts_withES0_.exit.thread96 _ZNK4llvm9StringRef11starts_withES0_.exit.thread96: ; preds = %_ZNK4llvm9StringRef9ends_withES0_.exit.thread, %_ZNK4llvm9StringRef9ends_withES0_.exit, %_ZNK4llvm9StringRef11starts_withES0_.exit, %6 %.sroa.085.0 = phi ptr [ %20, %_ZNK4llvm9StringRef9ends_withES0_.exit.thread ], [ %11, %_ZNK4llvm9StringRef9ends_withES0_.exit ], [ %11, %_ZNK4llvm9StringRef11starts_withES0_.exit ], [ %11, %6 ] - %.sroa.11.0 = phi i64 [ %.sroa.speculated.i, %_ZNK4llvm9StringRef9ends_withES0_.exit.thread ], [ %13, %_ZNK4llvm9StringRef9ends_withES0_.exit ], [ %13, %_ZNK4llvm9StringRef11starts_withES0_.exit ], [ %13, %6 ] + %.sroa.11.0 = phi i64 [ %19, %_ZNK4llvm9StringRef9ends_withES0_.exit.thread ], [ %13, %_ZNK4llvm9StringRef9ends_withES0_.exit ], [ %13, %_ZNK4llvm9StringRef11starts_withES0_.exit ], [ %13, %6 ] %.not = icmp eq ptr %1, null - br i1 %.not, label %_ZN4llvmeqENS_9StringRefES0_.exit53.thread104, label %22 - -22: ; preds = %_ZNK4llvm9StringRef11starts_withES0_.exit.thread96 - %23 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %24 = load ptr, ptr %23, align 8, !tbaa !3 - %25 = getelementptr inbounds nuw i8, ptr %24, i64 16 - %26 = load i64, ptr %24, align 8, !tbaa !10 - %27 = and i64 %26, 4294967295 - %trunc = trunc i64 %26 to i32 + br i1 %.not, label %_ZN4llvmeqENS_9StringRefES0_.exit53.thread104, label %21 + +21: ; preds = %_ZNK4llvm9StringRef11starts_withES0_.exit.thread96 + %22 = getelementptr inbounds nuw i8, ptr %1, i64 16 + %23 = load ptr, ptr %22, align 8, !tbaa !3 + %24 = getelementptr inbounds nuw i8, ptr %23, i64 16 + %25 = load i64, ptr %23, align 8, !tbaa !10 + %26 = and i64 %25, 4294967295 + %trunc = trunc i64 %25 to i32 switch i32 %trunc, label %_ZN4llvmeqENS_9StringRefES0_.exit49.thread101 [ i32 7, label %_ZN4llvmeqENS_9StringRefES0_.exit49.thread101.sink.split i32 6, label %_ZN4llvmeqENS_9StringRefES0_.exit49 ] -_ZN4llvmeqENS_9StringRefES0_.exit49: ; preds = %22 +_ZN4llvmeqENS_9StringRefES0_.exit49: ; preds = %21 br label %_ZN4llvmeqENS_9StringRefES0_.exit49.thread101.sink.split -_ZN4llvmeqENS_9StringRefES0_.exit49.thread101.sink.split: ; preds = %22, %_ZN4llvmeqENS_9StringRefES0_.exit49 - %.str.2.sink = phi ptr [ @.str.4, %_ZN4llvmeqENS_9StringRefES0_.exit49 ], [ @.str.2, %22 ] - %.str.3.sink = phi ptr [ @.str.5, %_ZN4llvmeqENS_9StringRefES0_.exit49 ], [ @.str.3, %22 ] - %.sink130 = phi i64 [ 5, %_ZN4llvmeqENS_9StringRefES0_.exit49 ], [ 3, %22 ] - %bcmp.i45 = tail call i32 @bcmp(ptr nonnull %25, ptr nonnull %.str.2.sink, i64 %27) - %28 = icmp eq i32 %bcmp.i45, 0 - %spec.select116 = select i1 %28, ptr %.str.3.sink, ptr %25 - %spec.select117 = select i1 %28, i64 %.sink130, i64 %27 +_ZN4llvmeqENS_9StringRefES0_.exit49.thread101.sink.split: ; preds = %21, %_ZN4llvmeqENS_9StringRefES0_.exit49 + %.str.2.sink = phi ptr [ @.str.4, %_ZN4llvmeqENS_9StringRefES0_.exit49 ], [ @.str.2, %21 ] + %.str.3.sink = phi ptr [ @.str.5, %_ZN4llvmeqENS_9StringRefES0_.exit49 ], [ @.str.3, %21 ] + %.sink130 = phi i64 [ 5, %_ZN4llvmeqENS_9StringRefES0_.exit49 ], [ 3, %21 ] + %bcmp.i45 = tail call i32 @bcmp(ptr nonnull %24, ptr nonnull %.str.2.sink, i64 %26) + %27 = icmp eq i32 %bcmp.i45, 0 + %spec.select116 = select i1 %27, ptr %.str.3.sink, ptr %24 + %spec.select117 = select i1 %27, i64 %.sink130, i64 %26 br label %_ZN4llvmeqENS_9StringRefES0_.exit49.thread101 -_ZN4llvmeqENS_9StringRefES0_.exit49.thread101: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit49.thread101.sink.split, %22 - %.sroa.077.1 = phi ptr [ %25, %22 ], [ %spec.select116, %_ZN4llvmeqENS_9StringRefES0_.exit49.thread101.sink.split ] - %.sroa.10.1 = phi i64 [ %27, %22 ], [ %spec.select117, %_ZN4llvmeqENS_9StringRefES0_.exit49.thread101.sink.split ] - %29 = getelementptr inbounds nuw i8, ptr %4, i64 64 - %30 = load i64, ptr %29, align 8 - %31 = and i64 %30, 4294967295 - %.not36 = icmp ne i64 %31, 0 +_ZN4llvmeqENS_9StringRefES0_.exit49.thread101: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit49.thread101.sink.split, %21 + %.sroa.077.1 = phi ptr [ %24, %21 ], [ %spec.select116, %_ZN4llvmeqENS_9StringRefES0_.exit49.thread101.sink.split ] + %.sroa.10.1 = phi i64 [ %26, %21 ], [ %spec.select117, %_ZN4llvmeqENS_9StringRefES0_.exit49.thread101.sink.split ] + %28 = getelementptr inbounds nuw i8, ptr %4, i64 64 + %29 = load i64, ptr %28, align 8 + %30 = and i64 %29, 4294967295 + %.not36 = icmp ne i64 %30, 0 %.not.i50 = icmp eq i64 %.sroa.10.1, 3 %or.cond = and i1 %.not.i50, %.not36 br i1 %or.cond, label %_ZN4llvmeqENS_9StringRefES0_.exit53, label %_ZN4llvmeqENS_9StringRefES0_.exit53.thread104 _ZN4llvmeqENS_9StringRefES0_.exit53: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit49.thread101 %bcmp.i52 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(3) %.sroa.077.1, ptr noundef nonnull dereferenceable(3) @.str.6, i64 3) - %32 = icmp eq i32 %bcmp.i52, 0 - br i1 %32, label %_ZN4llvmeqENS_9StringRefES0_.exit53.thread, label %_ZN4llvmeqENS_9StringRefES0_.exit53.thread104 + %31 = icmp eq i32 %bcmp.i52, 0 + br i1 %31, label %_ZN4llvmeqENS_9StringRefES0_.exit53.thread, label %_ZN4llvmeqENS_9StringRefES0_.exit53.thread104 _ZN4llvmeqENS_9StringRefES0_.exit53.thread: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit53 switch i64 %.sroa.11.0, label %_ZN4llvmeqENS_9StringRefES0_.exit53.thread104 [ @@ -1145,54 +1143,54 @@ _ZN4llvmeqENS_9StringRefES0_.exit53.thread: ; preds = %_ZN4llvmeqENS_9Stri _ZN4llvmeqENS_9StringRefES0_.exit57: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit53.thread %bcmp.i56 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(9) %.sroa.085.0, ptr noundef nonnull dereferenceable(9) @.str.7, i64 9) - %33 = icmp eq i32 %bcmp.i56, 0 - br i1 %33, label %.critedge, label %_ZN4llvmeqENS_9StringRefES0_.exit53.thread104 + %32 = icmp eq i32 %bcmp.i56, 0 + br i1 %32, label %.critedge, label %_ZN4llvmeqENS_9StringRefES0_.exit53.thread104 _ZN4llvmeqENS_9StringRefES0_.exit61: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit53.thread %bcmp.i60 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(8) %.sroa.085.0, ptr noundef nonnull dereferenceable(8) @.str.8, i64 8) - %34 = icmp eq i32 %bcmp.i60, 0 - br i1 %34, label %.critedge, label %_ZN4llvmeqENS_9StringRefES0_.exit53.thread104 + %33 = icmp eq i32 %bcmp.i60, 0 + br i1 %33, label %.critedge, label %_ZN4llvmeqENS_9StringRefES0_.exit53.thread104 _ZN4llvmeqENS_9StringRefES0_.exit53.thread104: ; preds = %_ZNK4llvm9StringRef11starts_withES0_.exit.thread96, %_ZN4llvmeqENS_9StringRefES0_.exit57, %_ZN4llvmeqENS_9StringRefES0_.exit53.thread, %_ZN4llvmeqENS_9StringRefES0_.exit61, %_ZN4llvmeqENS_9StringRefES0_.exit53, %_ZN4llvmeqENS_9StringRefES0_.exit49.thread101 %.sroa.10.1129 = phi i64 [ 3, %_ZN4llvmeqENS_9StringRefES0_.exit57 ], [ 3, %_ZN4llvmeqENS_9StringRefES0_.exit53.thread ], [ 3, %_ZN4llvmeqENS_9StringRefES0_.exit61 ], [ 3, %_ZN4llvmeqENS_9StringRefES0_.exit53 ], [ %.sroa.10.1, %_ZN4llvmeqENS_9StringRefES0_.exit49.thread101 ], [ 0, %_ZNK4llvm9StringRef11starts_withES0_.exit.thread96 ] %.sroa.077.1128 = phi ptr [ %.sroa.077.1, %_ZN4llvmeqENS_9StringRefES0_.exit57 ], [ %.sroa.077.1, %_ZN4llvmeqENS_9StringRefES0_.exit53.thread ], [ %.sroa.077.1, %_ZN4llvmeqENS_9StringRefES0_.exit61 ], [ %.sroa.077.1, %_ZN4llvmeqENS_9StringRefES0_.exit53 ], [ %.sroa.077.1, %_ZN4llvmeqENS_9StringRefES0_.exit49.thread101 ], [ @.str.1, %_ZNK4llvm9StringRef11starts_withES0_.exit.thread96 ] - %35 = tail call fastcc noundef i32 @_ZL16hasAttributeImplN5clang19AttributeCommonInfo6SyntaxEN4llvm9StringRefES3_RKNS_10TargetInfoERKNS_11LangOptionsE(i32 noundef %0, ptr nonnull %.sroa.085.0, i64 %.sroa.11.0, ptr %.sroa.077.1128, i64 %.sroa.10.1129, ptr noundef nonnull align 8 dereferenceable(489) %3) - %.not37 = icmp eq i32 %35, 0 + %34 = tail call fastcc noundef i32 @_ZL16hasAttributeImplN5clang19AttributeCommonInfo6SyntaxEN4llvm9StringRefES3_RKNS_10TargetInfoERKNS_11LangOptionsE(i32 noundef %0, ptr nonnull %.sroa.085.0, i64 %.sroa.11.0, ptr %.sroa.077.1128, i64 %.sroa.10.1129, ptr noundef nonnull align 8 dereferenceable(489) %3) + %.not37 = icmp eq i32 %34, 0 %brmerge.not = and i1 %5, %.not37 - br i1 %brmerge.not, label %36, label %.critedge + br i1 %brmerge.not, label %35, label %.critedge -36: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit53.thread104 - %37 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZN5clang27getAttributePluginInstancesB5cxx11Ev() #13 - %38 = getelementptr inbounds nuw i8, ptr %7, i64 8 - br label %39 +35: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit53.thread104 + %36 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZN5clang27getAttributePluginInstancesB5cxx11Ev() #13 + %37 = getelementptr inbounds nuw i8, ptr %7, i64 8 + br label %38 -39: ; preds = %40, %36 - %.sroa.062.0.in = phi ptr [ %37, %36 ], [ %.sroa.062.0, %40 ] +38: ; preds = %39, %35 + %.sroa.062.0.in = phi ptr [ %36, %35 ], [ %.sroa.062.0, %39 ] %.sroa.062.0 = load ptr, ptr %.sroa.062.0.in, align 8, !tbaa !13 - %.not113 = icmp eq ptr %.sroa.062.0, %37 - br i1 %.not113, label %.critedge, label %40 + %.not113 = icmp eq ptr %.sroa.062.0, %36 + br i1 %.not113, label %.critedge, label %39 -40: ; preds = %39 - %41 = getelementptr inbounds nuw i8, ptr %.sroa.062.0, i64 16 - %42 = load ptr, ptr %41, align 8, !tbaa !16 +39: ; preds = %38 + %40 = getelementptr inbounds nuw i8, ptr %.sroa.062.0, i64 16 + %41 = load ptr, ptr %40, align 8, !tbaa !16 call void @llvm.lifetime.start.p0(ptr nonnull %7) call void @llvm.lifetime.start.p0(ptr nonnull %8) store ptr %.sroa.085.0, ptr %7, align 8 - store i64 %.sroa.11.0, ptr %38, align 8 + store i64 %.sroa.11.0, ptr %37, align 8 store i32 %0, ptr %8, align 4, !tbaa !18 - %43 = getelementptr inbounds nuw i8, ptr %42, i64 16 - %44 = load ptr, ptr %43, align 8, !tbaa !20 - %45 = getelementptr inbounds nuw i8, ptr %42, i64 24 - %46 = load i64, ptr %45, align 8, !tbaa !23 - %47 = getelementptr inbounds nuw %"struct.clang::ParsedAttrInfo::Spelling", ptr %44, i64 %46 - %48 = call noundef ptr @_ZSt9__find_ifIPKN5clang14ParsedAttrInfo8SpellingEN9__gnu_cxx5__ops10_Iter_predIZNKS1_11hasSpellingENS0_19AttributeCommonInfo6SyntaxEN4llvm9StringRefEEUlRS3_E_EEET_SF_SF_T0_St26random_access_iterator_tag(ptr noundef %44, ptr noundef %47, ptr nonnull %8, ptr nonnull %7) - %.not114 = icmp eq ptr %47, %48 + %42 = getelementptr inbounds nuw i8, ptr %41, i64 16 + %43 = load ptr, ptr %42, align 8, !tbaa !20 + %44 = getelementptr inbounds nuw i8, ptr %41, i64 24 + %45 = load i64, ptr %44, align 8, !tbaa !23 + %46 = getelementptr inbounds nuw %"struct.clang::ParsedAttrInfo::Spelling", ptr %43, i64 %45 + %47 = call noundef ptr @_ZSt9__find_ifIPKN5clang14ParsedAttrInfo8SpellingEN9__gnu_cxx5__ops10_Iter_predIZNKS1_11hasSpellingENS0_19AttributeCommonInfo6SyntaxEN4llvm9StringRefEEUlRS3_E_EEET_SF_SF_T0_St26random_access_iterator_tag(ptr noundef %43, ptr noundef %46, ptr nonnull %8, ptr nonnull %7) + %.not114 = icmp eq ptr %46, %47 call void @llvm.lifetime.end.p0(ptr nonnull %7) call void @llvm.lifetime.end.p0(ptr nonnull %8) - br i1 %.not114, label %39, label %.critedge + br i1 %.not114, label %38, label %.critedge -.critedge: ; preds = %39, %40, %_ZN4llvmeqENS_9StringRefES0_.exit53.thread104, %_ZN4llvmeqENS_9StringRefES0_.exit57, %_ZN4llvmeqENS_9StringRefES0_.exit61 - %.0 = phi i32 [ 1, %_ZN4llvmeqENS_9StringRefES0_.exit61 ], [ 1, %_ZN4llvmeqENS_9StringRefES0_.exit57 ], [ %35, %_ZN4llvmeqENS_9StringRefES0_.exit53.thread104 ], [ 0, %39 ], [ 1, %40 ] +.critedge: ; preds = %38, %39, %_ZN4llvmeqENS_9StringRefES0_.exit53.thread104, %_ZN4llvmeqENS_9StringRefES0_.exit57, %_ZN4llvmeqENS_9StringRefES0_.exit61 + %.0 = phi i32 [ 1, %_ZN4llvmeqENS_9StringRefES0_.exit61 ], [ 1, %_ZN4llvmeqENS_9StringRefES0_.exit57 ], [ %34, %_ZN4llvmeqENS_9StringRefES0_.exit53.thread104 ], [ 0, %38 ], [ 1, %39 ] ret i32 %.0 } @@ -25906,15 +25904,13 @@ _ZNK4llvm9StringRef9ends_withES0_.exit: ; preds = %_ZNK4llvm9StringRef br i1 %33, label %_ZNK4llvm9StringRef9ends_withES0_.exit.thread, label %_ZNK4llvm9StringRef11starts_withES0_.exit.thread42 _ZNK4llvm9StringRef9ends_withES0_.exit.thread: ; preds = %_ZNK4llvm9StringRef9ends_withES0_.exit - %34 = add nsw i64 %27, -2 - %.sroa.speculated.i = tail call i64 @llvm.umin.i64(i64 %34, i64 %27) - %35 = getelementptr inbounds nuw i8, ptr %28, i64 2 - %36 = add nsw i64 %.sroa.speculated.i, -2 + %34 = getelementptr inbounds nuw i8, ptr %28, i64 2 + %35 = add nsw i64 %27, -4 br label %_ZNK4llvm9StringRef11starts_withES0_.exit.thread42 _ZNK4llvm9StringRef11starts_withES0_.exit.thread42: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit11.thread39, %_ZNK4llvm9StringRef9ends_withES0_.exit.thread, %_ZNK4llvm9StringRef9ends_withES0_.exit, %_ZNK4llvm9StringRef11starts_withES0_.exit, %26, %_ZN4llvmeqENS_9StringRefES0_.exit11 - %.sroa.027.0 = phi ptr [ %35, %_ZNK4llvm9StringRef9ends_withES0_.exit.thread ], [ %28, %_ZNK4llvm9StringRef9ends_withES0_.exit ], [ %28, %_ZNK4llvm9StringRef11starts_withES0_.exit ], [ %28, %26 ], [ %23, %_ZN4llvmeqENS_9StringRefES0_.exit11 ], [ %17, %_ZN4llvmeqENS_9StringRefES0_.exit11.thread39 ] - %.sroa.6.0 = phi i64 [ %36, %_ZNK4llvm9StringRef9ends_withES0_.exit.thread ], [ %27, %_ZNK4llvm9StringRef9ends_withES0_.exit ], [ %27, %_ZNK4llvm9StringRef11starts_withES0_.exit ], [ %27, %26 ], [ %25, %_ZN4llvmeqENS_9StringRefES0_.exit11 ], [ %19, %_ZN4llvmeqENS_9StringRefES0_.exit11.thread39 ] + %.sroa.027.0 = phi ptr [ %34, %_ZNK4llvm9StringRef9ends_withES0_.exit.thread ], [ %28, %_ZNK4llvm9StringRef9ends_withES0_.exit ], [ %28, %_ZNK4llvm9StringRef11starts_withES0_.exit ], [ %28, %26 ], [ %23, %_ZN4llvmeqENS_9StringRefES0_.exit11 ], [ %17, %_ZN4llvmeqENS_9StringRefES0_.exit11.thread39 ] + %.sroa.6.0 = phi i64 [ %35, %_ZNK4llvm9StringRef9ends_withES0_.exit.thread ], [ %27, %_ZNK4llvm9StringRef9ends_withES0_.exit ], [ %27, %_ZNK4llvm9StringRef11starts_withES0_.exit ], [ %27, %26 ], [ %25, %_ZN4llvmeqENS_9StringRefES0_.exit11 ], [ %19, %_ZN4llvmeqENS_9StringRefES0_.exit11.thread39 ] %.fca.0.insert = insertvalue { ptr, i64 } poison, ptr %.sroa.027.0, 0 %.fca.1.insert = insertvalue { ptr, i64 } %.fca.0.insert, i64 %.sroa.6.0, 1 ret { ptr, i64 } %.fca.1.insert @@ -33281,9 +33277,6 @@ declare i64 @llvm.fshl.i64(i64, i64, i64) #10 ; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: read) declare i32 @bcmp(ptr captures(none), ptr captures(none), i64) local_unnamed_addr #11 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.umin.i64(i64, i64) #10 - ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) declare void @llvm.experimental.noalias.scope.decl(metadata) #12 diff --git a/bench/llvm/optimized/IfConversion.ll b/bench/llvm/optimized/IfConversion.ll index dd9bd0d1303..d36a3fd0531 100644 --- a/bench/llvm/optimized/IfConversion.ll +++ b/bench/llvm/optimized/IfConversion.ll @@ -4700,13 +4700,11 @@ _ZNSt6vectorISt10unique_ptrIN12_GLOBAL__N_111IfConverter10IfcvtTokenESt14default br i1 %or.cond230, label %.thread215, label %1489 1489: ; preds = %1480 - %1490 = icmp ne i32 %1457, 5 + %1490 = icmp eq i32 %1457, 5 %1491 = load i8, ptr getelementptr inbounds nuw (i8, ptr @_ZL16DisableTriangleF, i64 120), align 8, !tbaa !54, !range !52, !noundef !53 %1492 = trunc nuw i8 %1491 to i1 - %not. = xor i1 %1492, true - %or.cond10 = select i1 %not., i1 true, i1 %1490 - %or.cond12 = select i1 %or.cond10, i1 true, i1 %1482 - br i1 %or.cond12, label %1493, label %.thread215 + %or.cond10.not = select i1 %1492, i1 %1490, i1 false + br i1 %or.cond10.not, label %.thread215, label %1493 1493: ; preds = %1489 %1494 = getelementptr inbounds nuw i8, ptr %1455, i64 24 @@ -5498,8 +5496,8 @@ _ZN12_GLOBAL__N_111IfConverter17IfConvertTriangleERNS0_6BBInfoENS0_9IfcvtKindE.e %1909 = getelementptr inbounds nuw i8, ptr %1908, i64 848 %1910 = load ptr, ptr %1909, align 8 %1911 = call noundef zeroext i1 %1910(ptr noundef nonnull align 8 dereferenceable(80) %1907, ptr noundef nonnull align 8 dereferenceable(70) %1903) #24 - %not.281 = xor i1 %1911, true - %spec.select.i = select i1 %not.281, i1 %1901, i1 false + %not. = xor i1 %1911, true + %spec.select.i = select i1 %not., i1 %1901, i1 false br label %.critedge.i .critedge.i: ; preds = %1906, %1900 diff --git a/bench/llvm/optimized/OptionRSTEmitter.ll b/bench/llvm/optimized/OptionRSTEmitter.ll index 8402a484405..6b2c9e30a06 100644 --- a/bench/llvm/optimized/OptionRSTEmitter.ll +++ b/bench/llvm/optimized/OptionRSTEmitter.ll @@ -767,40 +767,40 @@ _ZN4llvm11raw_ostreamlsENS_9StringRefE.exit81: ; preds = %308, %310, %311 %320 = getelementptr inbounds nuw i8, ptr %319, i64 8 %321 = load i8, ptr %320, align 8, !tbaa !24 %322 = icmp eq i8 %321, 24 - br i1 %322, label %.thread, label %.thread277 + br i1 %322, label %.thread, label %.thread276 323: ; preds = %_ZN4llvm11raw_ostreamlsENS_9StringRefE.exit81 %324 = call { ptr, i64 } @_ZNK4llvm6Record16getValueAsStringENS_9StringRefE(ptr noundef nonnull align 8 dereferenceable(192) %271, ptr nonnull @.str.9, i64 11) #14 %325 = extractvalue { ptr, i64 } %324, 0 %326 = extractvalue { ptr, i64 } %324, 1 %327 = icmp eq i64 %326, 0 - br i1 %327, label %.thread, label %.thread277 + br i1 %327, label %.thread, label %.thread276 -.thread277: ; preds = %318, %323 - %.sroa.0147.2281 = phi ptr [ %325, %323 ], [ @.str.11, %318 ] - %.sroa.7.2280 = phi i64 [ %326, %323 ], [ 7, %318 ] +.thread276: ; preds = %318, %323 + %.sroa.0147.2280 = phi ptr [ %325, %323 ], [ @.str.11, %318 ] + %.sroa.7.2279 = phi i64 [ %326, %323 ], [ 7, %318 ] %328 = load ptr, ptr %95, align 8, !tbaa !46 %329 = load ptr, ptr %96, align 8, !tbaa !51 %.not.i82 = icmp ult ptr %328, %329 br i1 %.not.i82, label %332, label %330 -330: ; preds = %.thread277 +330: ; preds = %.thread276 %331 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEh(ptr noundef nonnull align 8 dereferenceable(48) %1, i8 noundef zeroext 61) #14 br label %_ZN4llvm11raw_ostreamlsEc.exit84 -332: ; preds = %.thread277 +332: ; preds = %.thread276 %333 = getelementptr inbounds nuw i8, ptr %328, i64 1 store ptr %333, ptr %95, align 8, !tbaa !46 store i8 61, ptr %328, align 1, !tbaa !52 br label %_ZN4llvm11raw_ostreamlsEc.exit84 _ZN4llvm11raw_ostreamlsEc.exit84: ; preds = %330, %332 - %334 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream13write_escapedENS_9StringRefEb(ptr noundef nonnull align 8 dereferenceable(48) %1, ptr %.sroa.0147.2281, i64 %.sroa.7.2280, i1 noundef zeroext false) #14 + %334 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream13write_escapedENS_9StringRefEb(ptr noundef nonnull align 8 dereferenceable(48) %1, ptr %.sroa.0147.2280, i64 %.sroa.7.2279, i1 noundef zeroext false) #14 br label %.thread .thread: ; preds = %318, %_ZN4llvm11raw_ostreamlsEc.exit84, %323 - %.sroa.0147.2195 = phi ptr [ %.sroa.0147.2281, %_ZN4llvm11raw_ostreamlsEc.exit84 ], [ %325, %323 ], [ null, %318 ] - %.sroa.7.2194 = phi i64 [ %.sroa.7.2280, %_ZN4llvm11raw_ostreamlsEc.exit84 ], [ 0, %323 ], [ 0, %318 ] + %.sroa.0147.2195 = phi ptr [ %.sroa.0147.2280, %_ZN4llvm11raw_ostreamlsEc.exit84 ], [ %325, %323 ], [ null, %318 ] + %.sroa.7.2194 = phi i64 [ %.sroa.7.2279, %_ZN4llvm11raw_ostreamlsEc.exit84 ], [ 0, %323 ], [ 0, %318 ] %335 = load ptr, ptr %96, align 8, !tbaa !51 %336 = load ptr, ptr %95, align 8, !tbaa !46 %337 = ptrtoint ptr %335 to i64 diff --git a/bench/llvm/optimized/X86TargetTransformInfo.ll b/bench/llvm/optimized/X86TargetTransformInfo.ll index 25d216cd510..3c8011b8ae7 100644 --- a/bench/llvm/optimized/X86TargetTransformInfo.ll +++ b/bench/llvm/optimized/X86TargetTransformInfo.ll @@ -516,56 +516,50 @@ define dso_local noundef zeroext i1 @_ZNK4llvm10X86TTIImpl30hasConditionalLoadSt %5 = getelementptr inbounds nuw i8, ptr %4, i64 360 %6 = load i8, ptr %5, align 8, !tbaa !154, !range !149, !noundef !150 %7 = trunc nuw i8 %6 to i1 - br i1 %7, label %8, label %25 + br i1 %7, label %8, label %22 8: ; preds = %2 %.not = icmp eq ptr %1, null - br i1 %.not, label %25, label %9 + br i1 %.not, label %22, label %9 9: ; preds = %8 %10 = getelementptr inbounds nuw i8, ptr %1, i64 8 %11 = load i32, ptr %10, align 8 - %12 = and i32 %11, 255 %trunc = trunc i32 %11 to i8 - switch i8 %trunc, label %25 [ + switch i8 %trunc, label %22 [ i8 12, label %_ZNK4llvm4Type13getScalarTypeEv.exit - i8 17, label %13 + i8 17, label %12 ] -13: ; preds = %9 - %14 = getelementptr inbounds nuw i8, ptr %1, i64 32 - %15 = load i32, ptr %14, align 8, !tbaa !155 - %.not12 = icmp eq i32 %15, 1 - br i1 %.not12, label %16, label %25 - -16: ; preds = %13 - %17 = add nsw i32 %12, -17 - %spec.select.i.i13 = icmp ult i32 %17, 2 - br i1 %spec.select.i.i13, label %18, label %_ZNK4llvm4Type13getScalarTypeEv.exit +12: ; preds = %9 + %13 = getelementptr inbounds nuw i8, ptr %1, i64 32 + %14 = load i32, ptr %13, align 8, !tbaa !155 + %.not12 = icmp eq i32 %14, 1 + br i1 %.not12, label %15, label %22 -18: ; preds = %16 - %19 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %20 = load ptr, ptr %19, align 8, !tbaa !162 - %21 = load ptr, ptr %20, align 8, !tbaa !163 - %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %21, i64 8 +15: ; preds = %12 + %16 = getelementptr inbounds nuw i8, ptr %1, i64 16 + %17 = load ptr, ptr %16, align 8, !tbaa !162 + %18 = load ptr, ptr %17, align 8, !tbaa !163 + %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %18, i64 8 %.pre = load i32, ptr %.phi.trans.insert, align 8 br label %_ZNK4llvm4Type13getScalarTypeEv.exit -_ZNK4llvm4Type13getScalarTypeEv.exit: ; preds = %9, %16, %18 - %22 = phi i32 [ %.pre, %18 ], [ %11, %16 ], [ %11, %9 ] - %23 = lshr i32 %22, 8 - %switch.tableidx = add nsw i32 %23, -16 - %24 = icmp ult i32 %switch.tableidx, 49 - br i1 %24, label %switch.lookup, label %25 +_ZNK4llvm4Type13getScalarTypeEv.exit: ; preds = %9, %15 + %19 = phi i32 [ %.pre, %15 ], [ %11, %9 ] + %20 = lshr i32 %19, 8 + %switch.tableidx = add nsw i32 %20, -16 + %21 = icmp ult i32 %switch.tableidx, 49 + br i1 %21, label %switch.lookup, label %22 switch.lookup: ; preds = %_ZNK4llvm4Type13getScalarTypeEv.exit %switch.cast = zext nneg i32 %switch.tableidx to i49 %switch.downshift = lshr i49 -281474976645119, %switch.cast %switch.masked = trunc i49 %switch.downshift to i1 - br label %25 + br label %22 -25: ; preds = %switch.lookup, %_ZNK4llvm4Type13getScalarTypeEv.exit, %9, %13, %8, %2 - %.0 = phi i1 [ false, %2 ], [ true, %8 ], [ false, %13 ], [ false, %_ZNK4llvm4Type13getScalarTypeEv.exit ], [ false, %9 ], [ %switch.masked, %switch.lookup ] +22: ; preds = %switch.lookup, %_ZNK4llvm4Type13getScalarTypeEv.exit, %9, %12, %8, %2 + %.0 = phi i1 [ false, %2 ], [ true, %8 ], [ false, %12 ], [ false, %_ZNK4llvm4Type13getScalarTypeEv.exit ], [ false, %9 ], [ %switch.masked, %switch.lookup ] ret i1 %.0 } @@ -21741,97 +21735,91 @@ define dso_local noundef zeroext i1 @_ZN4llvm10X86TTIImpl17isLegalMaskedLoadEPNS 22: ; preds = %21 %23 = getelementptr inbounds nuw i8, ptr %11, i64 8 %24 = load i32, ptr %23, align 8 - %25 = and i32 %24, 255 %trunc.i = trunc i32 %24 to i8 switch i8 %trunc.i, label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit [ i8 12, label %_ZNK4llvm4Type13getScalarTypeEv.exit.i - i8 17, label %26 + i8 17, label %25 ] -26: ; preds = %22 - %27 = getelementptr inbounds nuw i8, ptr %11, i64 32 - %28 = load i32, ptr %27, align 8, !tbaa !155 - %.not12.i = icmp eq i32 %28, 1 - br i1 %.not12.i, label %29, label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit - -29: ; preds = %26 - %30 = add nsw i32 %25, -17 - %spec.select.i.i13.i = icmp ult i32 %30, 2 - br i1 %spec.select.i.i13.i, label %31, label %_ZNK4llvm4Type13getScalarTypeEv.exit.i +25: ; preds = %22 + %26 = getelementptr inbounds nuw i8, ptr %11, i64 32 + %27 = load i32, ptr %26, align 8, !tbaa !155 + %.not12.i = icmp eq i32 %27, 1 + br i1 %.not12.i, label %28, label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit -31: ; preds = %29 - %32 = getelementptr inbounds nuw i8, ptr %11, i64 16 - %33 = load ptr, ptr %32, align 8, !tbaa !162 - %34 = load ptr, ptr %33, align 8, !tbaa !163 - %.phi.trans.insert.i = getelementptr inbounds nuw i8, ptr %34, i64 8 +28: ; preds = %25 + %29 = getelementptr inbounds nuw i8, ptr %11, i64 16 + %30 = load ptr, ptr %29, align 8, !tbaa !162 + %31 = load ptr, ptr %30, align 8, !tbaa !163 + %.phi.trans.insert.i = getelementptr inbounds nuw i8, ptr %31, i64 8 %.pre.i = load i32, ptr %.phi.trans.insert.i, align 8 br label %_ZNK4llvm4Type13getScalarTypeEv.exit.i -_ZNK4llvm4Type13getScalarTypeEv.exit.i: ; preds = %31, %29, %22 - %35 = phi i32 [ %.pre.i, %31 ], [ %24, %29 ], [ %24, %22 ] - %36 = lshr i32 %35, 8 - %switch.tableidx = add nsw i32 %36, -16 - %37 = icmp ult i32 %switch.tableidx, 49 - br i1 %37, label %switch.lookup, label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit +_ZNK4llvm4Type13getScalarTypeEv.exit.i: ; preds = %28, %22 + %32 = phi i32 [ %.pre.i, %28 ], [ %24, %22 ] + %33 = lshr i32 %32, 8 + %switch.tableidx = add nsw i32 %33, -16 + %34 = icmp ult i32 %switch.tableidx, 49 + br i1 %34, label %switch.lookup, label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit _ZNK4llvm4Type13getScalarTypeEv.exit: ; preds = %3, %8 %.0.i21 = phi ptr [ %11, %8 ], [ %1, %3 ] - %38 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %39 = load ptr, ptr %38, align 8, !tbaa !3 - %40 = getelementptr inbounds nuw i8, ptr %39, i64 320 - %41 = load i32, ptr %40, align 8, !tbaa !151 - %42 = icmp sgt i32 %41, 6 - br i1 %42, label %43, label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit - -43: ; preds = %_ZNK4llvm4Type13getScalarTypeEv.exit - %44 = getelementptr inbounds nuw i8, ptr %.0.i21, i64 8 - %45 = load i32, ptr %44, align 8 - %trunc = trunc i32 %45 to i8 + %35 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %36 = load ptr, ptr %35, align 8, !tbaa !3 + %37 = getelementptr inbounds nuw i8, ptr %36, i64 320 + %38 = load i32, ptr %37, align 8, !tbaa !151 + %39 = icmp sgt i32 %38, 6 + br i1 %39, label %40, label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit + +40: ; preds = %_ZNK4llvm4Type13getScalarTypeEv.exit + %41 = getelementptr inbounds nuw i8, ptr %.0.i21, i64 8 + %42 = load i32, ptr %41, align 8 + %trunc = trunc i32 %42 to i8 switch i8 %trunc, label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit.fold.split [ i8 14, label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit i8 2, label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit i8 3, label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit - i8 0, label %46 - i8 1, label %50 - i8 12, label %54 + i8 0, label %43 + i8 1, label %47 + i8 12, label %51 ] -46: ; preds = %43 - %47 = getelementptr inbounds nuw i8, ptr %39, i64 355 - %48 = load i8, ptr %47, align 1, !tbaa !203, !range !149, !noundef !150 - %49 = trunc nuw i8 %48 to i1 - br i1 %49, label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit, label %.thread22 - -50: ; preds = %43 - %51 = getelementptr inbounds nuw i8, ptr %39, i64 351 - %52 = load i8, ptr %51, align 1, !tbaa !464, !range !149, !noundef !150 - %53 = trunc nuw i8 %52 to i1 - br i1 %53, label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit, label %.thread22 +43: ; preds = %40 + %44 = getelementptr inbounds nuw i8, ptr %36, i64 355 + %45 = load i8, ptr %44, align 1, !tbaa !203, !range !149, !noundef !150 + %46 = trunc nuw i8 %45 to i1 + br i1 %46, label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit, label %.thread22 + +47: ; preds = %40 + %48 = getelementptr inbounds nuw i8, ptr %36, i64 351 + %49 = load i8, ptr %48, align 1, !tbaa !464, !range !149, !noundef !150 + %50 = trunc nuw i8 %49 to i1 + br i1 %50, label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit, label %.thread22 -.thread22: ; preds = %50, %46 +.thread22: ; preds = %47, %43 br label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit -54: ; preds = %43 - %55 = lshr i32 %45, 8 - %56 = add nsw i32 %55, -8 - %57 = tail call i32 @llvm.fshl.i32(i32 %56, i32 %56, i32 29) - switch i32 %57, label %.fold.split [ +51: ; preds = %40 + %52 = lshr i32 %42, 8 + %53 = add nsw i32 %52, -8 + %54 = tail call i32 @llvm.fshl.i32(i32 %53, i32 %53, i32 29) + switch i32 %54, label %.fold.split [ i32 7, label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit i32 3, label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit - i32 1, label %58 - i32 0, label %58 + i32 1, label %55 + i32 0, label %55 ] -58: ; preds = %54, %54 - %59 = getelementptr inbounds nuw i8, ptr %39, i64 355 - %60 = load i8, ptr %59, align 1, !tbaa !203, !range !149, !noundef !150 - %61 = trunc nuw i8 %60 to i1 +55: ; preds = %51, %51 + %56 = getelementptr inbounds nuw i8, ptr %36, i64 355 + %57 = load i8, ptr %56, align 1, !tbaa !203, !range !149, !noundef !150 + %58 = trunc nuw i8 %57 to i1 br label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit -.fold.split: ; preds = %54 +.fold.split: ; preds = %51 br label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit -_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit.fold.split: ; preds = %43 +_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit.fold.split: ; preds = %40 br label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit switch.lookup: ; preds = %_ZNK4llvm4Type13getScalarTypeEv.exit.i @@ -21840,8 +21828,8 @@ switch.lookup: ; preds = %_ZNK4llvm4Type13get %switch.masked = trunc i49 %switch.downshift to i1 br label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit -_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit: ; preds = %switch.lookup, %_ZNK4llvm4Type13getScalarTypeEv.exit.i, %43, %43, %43, %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit.fold.split, %.thread22, %26, %22, %21, %54, %54, %.fold.split, %58, %50, %46, %_ZNK4llvm4Type13getScalarTypeEv.exit, %15 - %.0 = phi i1 [ false, %15 ], [ false, %_ZNK4llvm4Type13getScalarTypeEv.exit ], [ true, %43 ], [ true, %46 ], [ true, %50 ], [ true, %54 ], [ %61, %58 ], [ true, %54 ], [ false, %.fold.split ], [ true, %21 ], [ false, %26 ], [ false, %_ZNK4llvm4Type13getScalarTypeEv.exit.i ], [ false, %22 ], [ false, %.thread22 ], [ true, %43 ], [ true, %43 ], [ false, %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit.fold.split ], [ %switch.masked, %switch.lookup ] +_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit: ; preds = %switch.lookup, %_ZNK4llvm4Type13getScalarTypeEv.exit.i, %40, %40, %40, %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit.fold.split, %.thread22, %25, %22, %21, %51, %51, %.fold.split, %55, %47, %43, %_ZNK4llvm4Type13getScalarTypeEv.exit, %15 + %.0 = phi i1 [ false, %15 ], [ false, %_ZNK4llvm4Type13getScalarTypeEv.exit ], [ true, %40 ], [ true, %43 ], [ true, %47 ], [ true, %51 ], [ %58, %55 ], [ true, %51 ], [ false, %.fold.split ], [ true, %21 ], [ false, %25 ], [ false, %_ZNK4llvm4Type13getScalarTypeEv.exit.i ], [ false, %22 ], [ false, %.thread22 ], [ true, %40 ], [ true, %40 ], [ false, %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit.fold.split ], [ %switch.masked, %switch.lookup ] ret i1 %.0 } diff --git a/bench/llvm/optimized/YAMLParser.ll b/bench/llvm/optimized/YAMLParser.ll index 5d466838cd0..80573eb3ac5 100644 --- a/bench/llvm/optimized/YAMLParser.ll +++ b/bench/llvm/optimized/YAMLParser.ll @@ -2840,148 +2840,154 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendEPKcm.exit: ; preds ; Function Attrs: mustprogress nofree norecurse nounwind willreturn memory(argmem: read) uwtable define dso_local range(i16 0, 258) i16 @_ZN4llvm4yaml9parseBoolENS_9StringRefE(ptr readonly captures(none) %0, i64 %1) local_unnamed_addr #6 { - switch i64 %1, label %.thread138 [ + switch i64 %1, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread144 [ i64 1, label %3 i64 2, label %6 - i64 3, label %19 - i64 4, label %29 - i64 5, label %35 + i64 3, label %22 + i64 4, label %32 + i64 5, label %38 ] 3: ; preds = %2 %4 = load i8, ptr %0, align 1, !tbaa !23 - switch i8 %4, label %.thread138 [ - i8 121, label %.thread - i8 89, label %.thread + switch i8 %4, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread144 [ + i8 121, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread + i8 89, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread i8 110, label %5 i8 78, label %5 ] 5: ; preds = %3, %3 - br label %.thread + br label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread 6: ; preds = %2 %7 = load i8, ptr %0, align 1, !tbaa !23 - switch i8 %7, label %.thread138 [ + switch i8 %7, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread144 [ i8 79, label %8 - i8 111, label %._crit_edge128 + i8 111, label %._crit_edge133 i8 78, label %15 i8 110, label %._crit_edge ] -._crit_edge128: ; preds = %6 - %.phi.trans.insert129 = getelementptr inbounds nuw i8, ptr %0, i64 1 - %.pre130 = load i8, ptr %.phi.trans.insert129, align 1, !tbaa !23 +._crit_edge133: ; preds = %6 + %.phi.trans.insert134 = getelementptr inbounds nuw i8, ptr %0, i64 1 + %.pre135 = load i8, ptr %.phi.trans.insert134, align 1, !tbaa !23 br label %12 ._crit_edge: ; preds = %6 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %0, i64 1 %.pre = load i8, ptr %.phi.trans.insert, align 1, !tbaa !23 - br label %41 + br label %19 8: ; preds = %6 %9 = getelementptr inbounds nuw i8, ptr %0, i64 1 %10 = load i8, ptr %9, align 1, !tbaa !23 %11 = icmp eq i8 %10, 78 - br i1 %11, label %.thread, label %12 + br i1 %11, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread, label %12 -12: ; preds = %._crit_edge128, %8 - %13 = phi i8 [ %.pre130, %._crit_edge128 ], [ %10, %8 ] - %.fr143 = freeze i8 %13 - %14 = icmp eq i8 %.fr143, 110 - br i1 %14, label %.thread, label %.thread138 +12: ; preds = %._crit_edge133, %8 + %13 = phi i8 [ %.pre135, %._crit_edge133 ], [ %10, %8 ] + %.fr156 = freeze i8 %13 + %14 = icmp eq i8 %.fr156, 110 + br i1 %14, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread144 15: ; preds = %6 %16 = getelementptr inbounds nuw i8, ptr %0, i64 1 %17 = load i8, ptr %16, align 1, !tbaa !23 %18 = icmp eq i8 %17, 79 - br i1 %18, label %.thread, label %41 + br i1 %18, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread, label %19 + +19: ; preds = %._crit_edge, %15 + %20 = phi i8 [ %.pre, %._crit_edge ], [ %17, %15 ] + %.fr = freeze i8 %20 + %21 = icmp eq i8 %.fr, 111 + br i1 %21, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread144 -19: ; preds = %2 - %20 = load i8, ptr %0, align 1, !tbaa !23 - switch i8 %20, label %.thread138 [ +22: ; preds = %2 + %23 = load i8, ptr %0, align 1, !tbaa !23 + switch i8 %23, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread144 [ i8 79, label %_ZN4llvmeqENS_9StringRefES0_.exit - i8 111, label %_ZN4llvmeqENS_9StringRefES0_.exit21 + i8 111, label %_ZN4llvmeqENS_9StringRefES0_.exit.thread i8 89, label %_ZN4llvmeqENS_9StringRefES0_.exit28 - i8 121, label %_ZN4llvmeqENS_9StringRefES0_.exit35 + i8 121, label %_ZN4llvmeqENS_9StringRefES0_.exit28.thread ] -_ZN4llvmeqENS_9StringRefES0_.exit: ; preds = %19 - %21 = getelementptr inbounds nuw i8, ptr %0, i64 1 - %bcmp.i = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(2) %21, ptr noundef nonnull dereferenceable(2) @.str.41, i64 2) - %22 = icmp eq i32 %bcmp.i, 0 - br i1 %22, label %.thread, label %_ZN4llvmeqENS_9StringRefES0_.exit21 - -_ZN4llvmeqENS_9StringRefES0_.exit21: ; preds = %19, %_ZN4llvmeqENS_9StringRefES0_.exit - %23 = getelementptr inbounds nuw i8, ptr %0, i64 1 - %bcmp.i20 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(2) %23, ptr noundef nonnull dereferenceable(2) @.str.42, i64 2) - %24 = icmp eq i32 %bcmp.i20, 0 - br i1 %24, label %.thread, label %.thread138 - -_ZN4llvmeqENS_9StringRefES0_.exit28: ; preds = %19 - %25 = getelementptr inbounds nuw i8, ptr %0, i64 1 - %bcmp.i27 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(2) %25, ptr noundef nonnull dereferenceable(2) @.str.43, i64 2) - %26 = icmp eq i32 %bcmp.i27, 0 - br i1 %26, label %.thread, label %_ZN4llvmeqENS_9StringRefES0_.exit35 - -_ZN4llvmeqENS_9StringRefES0_.exit35: ; preds = %19, %_ZN4llvmeqENS_9StringRefES0_.exit28 - %27 = getelementptr inbounds nuw i8, ptr %0, i64 1 - %bcmp.i34 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(2) %27, ptr noundef nonnull dereferenceable(2) @.str.44, i64 2) - %28 = icmp eq i32 %bcmp.i34, 0 - br i1 %28, label %.thread, label %.thread138 +_ZN4llvmeqENS_9StringRefES0_.exit: ; preds = %22 + %24 = getelementptr inbounds nuw i8, ptr %0, i64 1 + %bcmp.i = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(2) %24, ptr noundef nonnull dereferenceable(2) @.str.41, i64 2) + %25 = icmp eq i32 %bcmp.i, 0 + br i1 %25, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread, label %_ZN4llvmeqENS_9StringRefES0_.exit.thread + +_ZN4llvmeqENS_9StringRefES0_.exit.thread: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit, %22 + %26 = getelementptr inbounds nuw i8, ptr %0, i64 1 + %bcmp.i20 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(2) %26, ptr noundef nonnull dereferenceable(2) @.str.42, i64 2) + %bcmp.i20.fr = freeze i32 %bcmp.i20 + %27 = icmp eq i32 %bcmp.i20.fr, 0 + br i1 %27, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread144 + +_ZN4llvmeqENS_9StringRefES0_.exit28: ; preds = %22 + %28 = getelementptr inbounds nuw i8, ptr %0, i64 1 + %bcmp.i27 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(2) %28, ptr noundef nonnull dereferenceable(2) @.str.43, i64 2) + %29 = icmp eq i32 %bcmp.i27, 0 + br i1 %29, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread, label %_ZN4llvmeqENS_9StringRefES0_.exit28.thread + +_ZN4llvmeqENS_9StringRefES0_.exit28.thread: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit28, %22 + %30 = getelementptr inbounds nuw i8, ptr %0, i64 1 + %bcmp.i34 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(2) %30, ptr noundef nonnull dereferenceable(2) @.str.44, i64 2) + %bcmp.i34.fr = freeze i32 %bcmp.i34 + %31 = icmp eq i32 %bcmp.i34.fr, 0 + %.sroa.0116.0152 = zext i1 %31 to i16 + br i1 %31, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread144 -29: ; preds = %2 - %30 = load i8, ptr %0, align 1, !tbaa !23 - switch i8 %30, label %.thread138 [ +32: ; preds = %2 + %33 = load i8, ptr %0, align 1, !tbaa !23 + switch i8 %33, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread144 [ i8 84, label %_ZN4llvmeqENS_9StringRefES0_.exit42 - i8 116, label %_ZN4llvmeqENS_9StringRefES0_.exit49 + i8 116, label %_ZN4llvmeqENS_9StringRefES0_.exit42.thread ] -_ZN4llvmeqENS_9StringRefES0_.exit42: ; preds = %29 - %31 = getelementptr inbounds nuw i8, ptr %0, i64 1 - %bcmp.i41 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(3) %31, ptr noundef nonnull dereferenceable(3) @.str.45, i64 3) - %32 = icmp eq i32 %bcmp.i41, 0 - br i1 %32, label %.thread, label %_ZN4llvmeqENS_9StringRefES0_.exit49 - -_ZN4llvmeqENS_9StringRefES0_.exit49: ; preds = %29, %_ZN4llvmeqENS_9StringRefES0_.exit42 - %33 = getelementptr inbounds nuw i8, ptr %0, i64 1 - %bcmp.i48 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(3) %33, ptr noundef nonnull dereferenceable(3) @.str.46, i64 3) - %34 = icmp eq i32 %bcmp.i48, 0 - br i1 %34, label %.thread, label %.thread138 - -35: ; preds = %2 - %36 = load i8, ptr %0, align 1, !tbaa !23 - switch i8 %36, label %.thread138 [ +_ZN4llvmeqENS_9StringRefES0_.exit42: ; preds = %32 + %34 = getelementptr inbounds nuw i8, ptr %0, i64 1 + %bcmp.i41 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(3) %34, ptr noundef nonnull dereferenceable(3) @.str.45, i64 3) + %35 = icmp eq i32 %bcmp.i41, 0 + br i1 %35, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread, label %_ZN4llvmeqENS_9StringRefES0_.exit42.thread + +_ZN4llvmeqENS_9StringRefES0_.exit42.thread: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit42, %32 + %36 = getelementptr inbounds nuw i8, ptr %0, i64 1 + %bcmp.i48 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(3) %36, ptr noundef nonnull dereferenceable(3) @.str.46, i64 3) + %bcmp.i48.fr = freeze i32 %bcmp.i48 + %37 = icmp eq i32 %bcmp.i48.fr, 0 + %.sroa.0116.0154 = zext i1 %37 to i16 + br i1 %37, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread144 + +38: ; preds = %2 + %39 = load i8, ptr %0, align 1, !tbaa !23 + switch i8 %39, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread144 [ i8 70, label %_ZN4llvmeqENS_9StringRefES0_.exit56 - i8 102, label %_ZN4llvmeqENS_9StringRefES0_.exit63 + i8 102, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread ] -_ZN4llvmeqENS_9StringRefES0_.exit56: ; preds = %35 - %37 = getelementptr inbounds nuw i8, ptr %0, i64 1 - %bcmp.i55 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %37, ptr noundef nonnull dereferenceable(4) @.str.47, i64 4) - %38 = icmp eq i32 %bcmp.i55, 0 - br i1 %38, label %.thread, label %_ZN4llvmeqENS_9StringRefES0_.exit63 - -_ZN4llvmeqENS_9StringRefES0_.exit63: ; preds = %35, %_ZN4llvmeqENS_9StringRefES0_.exit56 - %39 = getelementptr inbounds nuw i8, ptr %0, i64 1 - %bcmp.i62 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %39, ptr noundef nonnull dereferenceable(4) @.str.48, i64 4) - %40 = icmp eq i32 %bcmp.i62, 0 - br i1 %40, label %.thread, label %.thread138 - -41: ; preds = %15, %._crit_edge - %42 = phi i8 [ %.pre, %._crit_edge ], [ %17, %15 ] - %.fr = freeze i8 %42 - %43 = icmp eq i8 %.fr, 111 - br i1 %43, label %.thread, label %.thread138 - -.thread: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit63, %_ZN4llvmeqENS_9StringRefES0_.exit56, %_ZN4llvmeqENS_9StringRefES0_.exit49, %_ZN4llvmeqENS_9StringRefES0_.exit42, %_ZN4llvmeqENS_9StringRefES0_.exit35, %_ZN4llvmeqENS_9StringRefES0_.exit28, %_ZN4llvmeqENS_9StringRefES0_.exit21, %_ZN4llvmeqENS_9StringRefES0_.exit, %15, %8, %3, %3, %5, %12, %41 - %.sroa.0116.0136 = phi i16 [ 0, %41 ], [ 1, %12 ], [ 0, %_ZN4llvmeqENS_9StringRefES0_.exit63 ], [ 0, %_ZN4llvmeqENS_9StringRefES0_.exit56 ], [ 1, %_ZN4llvmeqENS_9StringRefES0_.exit49 ], [ 1, %_ZN4llvmeqENS_9StringRefES0_.exit42 ], [ 1, %_ZN4llvmeqENS_9StringRefES0_.exit35 ], [ 1, %_ZN4llvmeqENS_9StringRefES0_.exit28 ], [ 0, %_ZN4llvmeqENS_9StringRefES0_.exit21 ], [ 0, %_ZN4llvmeqENS_9StringRefES0_.exit ], [ 0, %15 ], [ 1, %8 ], [ 1, %3 ], [ 1, %3 ], [ 0, %5 ] - br label %.thread138 - -.thread138: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit63, %_ZN4llvmeqENS_9StringRefES0_.exit49, %_ZN4llvmeqENS_9StringRefES0_.exit35, %_ZN4llvmeqENS_9StringRefES0_.exit21, %3, %2, %35, %29, %19, %6, %12, %41, %.thread - %.sroa.0116.0135 = phi i16 [ %.sroa.0116.0136, %.thread ], [ 0, %41 ], [ 1, %12 ], [ 0, %6 ], [ 0, %19 ], [ 0, %29 ], [ 0, %35 ], [ 0, %2 ], [ 0, %3 ], [ 0, %_ZN4llvmeqENS_9StringRefES0_.exit21 ], [ 0, %_ZN4llvmeqENS_9StringRefES0_.exit35 ], [ 0, %_ZN4llvmeqENS_9StringRefES0_.exit49 ], [ 0, %_ZN4llvmeqENS_9StringRefES0_.exit63 ] - %44 = phi i16 [ 256, %.thread ], [ 0, %41 ], [ 0, %12 ], [ 0, %6 ], [ 0, %19 ], [ 0, %29 ], [ 0, %35 ], [ 0, %2 ], [ 0, %3 ], [ 0, %_ZN4llvmeqENS_9StringRefES0_.exit21 ], [ 0, %_ZN4llvmeqENS_9StringRefES0_.exit35 ], [ 0, %_ZN4llvmeqENS_9StringRefES0_.exit49 ], [ 0, %_ZN4llvmeqENS_9StringRefES0_.exit63 ] - %.sroa.0116.0.insert.insert = or disjoint i16 %44, %.sroa.0116.0135 +_ZN4llvmeqENS_9StringRefES0_.exit56: ; preds = %38 + %40 = getelementptr inbounds nuw i8, ptr %0, i64 1 + %bcmp.i55 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %40, ptr noundef nonnull dereferenceable(4) @.str.47, i64 4) + %41 = icmp eq i32 %bcmp.i55, 0 + br i1 %41, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread + +_ZN4llvmeqENS_9StringRefES0_.exit21.thread: ; preds = %38, %_ZN4llvmeqENS_9StringRefES0_.exit56 + %42 = getelementptr inbounds nuw i8, ptr %0, i64 1 + %bcmp.i62 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %42, ptr noundef nonnull dereferenceable(4) @.str.48, i64 4) + %bcmp.i62.fr = freeze i32 %bcmp.i62 + %43 = icmp eq i32 %bcmp.i62.fr, 0 + br i1 %43, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread144 + +_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit56, %_ZN4llvmeqENS_9StringRefES0_.exit42, %_ZN4llvmeqENS_9StringRefES0_.exit28, %_ZN4llvmeqENS_9StringRefES0_.exit, %15, %8, %3, %3, %5, %_ZN4llvmeqENS_9StringRefES0_.exit42.thread, %_ZN4llvmeqENS_9StringRefES0_.exit28.thread, %_ZN4llvmeqENS_9StringRefES0_.exit.thread, %19, %12, %_ZN4llvmeqENS_9StringRefES0_.exit21.thread + %.sroa.0116.0142 = phi i16 [ 0, %_ZN4llvmeqENS_9StringRefES0_.exit21.thread ], [ 1, %12 ], [ 0, %19 ], [ 0, %_ZN4llvmeqENS_9StringRefES0_.exit.thread ], [ %.sroa.0116.0152, %_ZN4llvmeqENS_9StringRefES0_.exit28.thread ], [ %.sroa.0116.0154, %_ZN4llvmeqENS_9StringRefES0_.exit42.thread ], [ 0, %_ZN4llvmeqENS_9StringRefES0_.exit56 ], [ 1, %_ZN4llvmeqENS_9StringRefES0_.exit42 ], [ 1, %_ZN4llvmeqENS_9StringRefES0_.exit28 ], [ 0, %_ZN4llvmeqENS_9StringRefES0_.exit ], [ 0, %15 ], [ 1, %8 ], [ 1, %3 ], [ 1, %3 ], [ 0, %5 ] + br label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread144 + +_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread144: ; preds = %3, %2, %38, %32, %22, %6, %_ZN4llvmeqENS_9StringRefES0_.exit42.thread, %_ZN4llvmeqENS_9StringRefES0_.exit28.thread, %_ZN4llvmeqENS_9StringRefES0_.exit.thread, %19, %12, %_ZN4llvmeqENS_9StringRefES0_.exit21.thread, %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread + %.sroa.0116.0141 = phi i16 [ %.sroa.0116.0142, %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread ], [ 0, %_ZN4llvmeqENS_9StringRefES0_.exit21.thread ], [ 1, %12 ], [ 0, %19 ], [ 0, %_ZN4llvmeqENS_9StringRefES0_.exit.thread ], [ %.sroa.0116.0152, %_ZN4llvmeqENS_9StringRefES0_.exit28.thread ], [ %.sroa.0116.0154, %_ZN4llvmeqENS_9StringRefES0_.exit42.thread ], [ 0, %6 ], [ 0, %22 ], [ 0, %32 ], [ 0, %38 ], [ 0, %2 ], [ 0, %3 ] + %44 = phi i16 [ 256, %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread ], [ 0, %_ZN4llvmeqENS_9StringRefES0_.exit21.thread ], [ 0, %12 ], [ 0, %19 ], [ 0, %_ZN4llvmeqENS_9StringRefES0_.exit.thread ], [ 0, %_ZN4llvmeqENS_9StringRefES0_.exit28.thread ], [ 0, %_ZN4llvmeqENS_9StringRefES0_.exit42.thread ], [ 0, %6 ], [ 0, %22 ], [ 0, %32 ], [ 0, %38 ], [ 0, %2 ], [ 0, %3 ] + %.sroa.0116.0.insert.insert = or disjoint i16 %44, %.sroa.0116.0141 ret i16 %.sroa.0116.0.insert.insert } diff --git a/bench/meshlab/optimized/arap.ll b/bench/meshlab/optimized/arap.ll index d3bd4800bdf..d924eb0d534 100644 --- a/bench/meshlab/optimized/arap.ll +++ b/bench/meshlab/optimized/arap.ll @@ -12179,8 +12179,8 @@ define linkonce_odr noundef i32 @_ZN5Eigen8internal8coletreeINS_12SparseMatrixId 12: ; preds = %4 %13 = lshr exact i64 %sext, 30 - %calloc204 = tail call ptr @calloc(i64 1, i64 %13) - %14 = icmp eq ptr %calloc204, null + %calloc203 = tail call ptr @calloc(i64 1, i64 %13) + %14 = icmp eq ptr %calloc203, null br i1 %14, label %.noexc82, label %16 .noexc82: ; preds = %12 @@ -12210,15 +12210,15 @@ define linkonce_odr noundef i32 @_ZN5Eigen8internal8coletreeINS_12SparseMatrixId _ZN5Eigen9DenseBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit75: ; preds = %16, %4 %.sroa.0108.0160 = phi ptr [ null, %4 ], [ %calloc, %16 ] - %.sroa.0118.0147152159 = phi ptr [ null, %4 ], [ %calloc204, %16 ] + %.sroa.0118.0147152159 = phi ptr [ null, %4 ], [ %calloc203, %16 ] invoke void @_ZN5Eigen12DenseStorageIiLin1ELin1ELi1ELi0EE6resizeElll(ptr noundef nonnull align 8 dereferenceable(16) %1, i64 noundef %6, i64 noundef %6, i64 noundef 1) - to label %_ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit unwind label %67 + to label %_ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit unwind label %54 _ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit: ; preds = %_ZN5Eigen9DenseBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit75 %sext166 = shl i64 %9, 32 %22 = ashr exact i64 %sext166, 32 invoke void @_ZN5Eigen12DenseStorageIiLin1ELin1ELi1ELi0EE6resizeElll(ptr noundef nonnull align 8 dereferenceable(16) %2, i64 noundef %22, i64 noundef %22, i64 noundef 1) - to label %_ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit76 unwind label %67 + to label %_ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit76 unwind label %54 _ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit76: ; preds = %_ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit %23 = getelementptr inbounds nuw i8, ptr %2, i64 8 @@ -12247,270 +12247,243 @@ _ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit76 %34 = trunc nuw nsw i64 %33 to i32 %35 = add nsw i32 %34, -1 %36 = sdiv i32 %32, %35 - %37 = tail call i64 @llvm.abs.i64(i64 %30, i1 true) - %38 = trunc nuw i64 %37 to i32 - %39 = add i32 %32, %38 - %40 = tail call noundef i32 @llvm.abs.i32(i32 %32, i1 true) - %41 = add nuw nsw i32 %40, 1 - %42 = sdiv i32 %39, %41 - %43 = icmp sgt i32 %.sroa.speculated132, 1 - br i1 %43, label %.lr.ph.i.preheader.i.i.i.i.i.i.i.i.i.i, label %_ZN5Eigen8internal12linspaced_opIiEC2ERKiS4_l.exit.thread.i - -_ZN5Eigen8internal12linspaced_opIiEC2ERKiS4_l.exit.thread.i: ; preds = %.loopexit170 - %44 = icmp eq i32 %.sroa.speculated132, 1 - br i1 %44, label %.lr.ph.i.i.i.i.i.i.i.i.i.i.i.preheader, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit - -.lr.ph.i.i.i.i.i.i.i.i.i.i.i.preheader: ; preds = %.lr.ph.i.preheader.i.i.i.i.i.i.i.i.i.i, %_ZN5Eigen8internal12linspaced_opIiEC2ERKiS4_l.exit.thread.i - br label %.lr.ph.i.i.i.i.i.i.i.i.i.i.i - -.lr.ph.i.preheader.i.i.i.i.i.i.i.i.i.i: ; preds = %.loopexit170 - %45 = icmp samesign ugt i32 %.sroa.speculated132, %41 - br i1 %45, label %.lr.ph.i.us.i.i.i.i.i.i.i.i.i.i, label %.lr.ph.i.i.i.i.i.i.i.i.i.i.i.preheader - -.lr.ph.i.us.i.i.i.i.i.i.i.i.i.i: ; preds = %.lr.ph.i.preheader.i.i.i.i.i.i.i.i.i.i, %.lr.ph.i.us.i.i.i.i.i.i.i.i.i.i - %.05.i.us.i.i.i.i.i.i.i.i.i.i = phi i64 [ %49, %.lr.ph.i.us.i.i.i.i.i.i.i.i.i.i ], [ 0, %.lr.ph.i.preheader.i.i.i.i.i.i.i.i.i.i ] - %46 = trunc i64 %.05.i.us.i.i.i.i.i.i.i.i.i.i to i32 - %47 = sdiv i32 %46, %42 - %48 = getelementptr inbounds nuw i32, ptr %31, i64 %.05.i.us.i.i.i.i.i.i.i.i.i.i - store i32 %47, ptr %48, align 4 - %49 = add nuw nsw i64 %.05.i.us.i.i.i.i.i.i.i.i.i.i, 1 - %exitcond.not.i.us.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %49, %30 - br i1 %exitcond.not.i.us.i.i.i.i.i.i.i.i.i.i, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit, label %.lr.ph.i.us.i.i.i.i.i.i.i.i.i.i, !llvm.loop !199 - -.lr.ph.i.i.i.i.i.i.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i.i.i.i.i.i.i.preheader, %.lr.ph.i.i.i.i.i.i.i.i.i.i.i - %.05.i.i.i.i.i.i.i.i.i.i.i = phi i64 [ %53, %.lr.ph.i.i.i.i.i.i.i.i.i.i.i ], [ 0, %.lr.ph.i.i.i.i.i.i.i.i.i.i.i.preheader ] - %50 = trunc i64 %.05.i.i.i.i.i.i.i.i.i.i.i to i32 - %51 = mul nsw i32 %36, %50 - %52 = getelementptr inbounds nuw i32, ptr %31, i64 %.05.i.i.i.i.i.i.i.i.i.i.i - store i32 %51, ptr %52, align 4 - %53 = add nuw nsw i64 %.05.i.i.i.i.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %53, %30 + %or.cond = icmp sgt i32 %.sroa.speculated132, 0 + br i1 %or.cond, label %.lr.ph.i.i.i.i.i.i.i.i.i.i.i, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit + +.lr.ph.i.i.i.i.i.i.i.i.i.i.i: ; preds = %.loopexit170, %.lr.ph.i.i.i.i.i.i.i.i.i.i.i + %.05.i.i.i.i.i.i.i.i.i.i.i = phi i64 [ %40, %.lr.ph.i.i.i.i.i.i.i.i.i.i.i ], [ 0, %.loopexit170 ] + %37 = trunc i64 %.05.i.i.i.i.i.i.i.i.i.i.i to i32 + %38 = mul nsw i32 %36, %37 + %39 = getelementptr inbounds nuw i32, ptr %31, i64 %.05.i.i.i.i.i.i.i.i.i.i.i + store i32 %38, ptr %39, align 4 + %40 = add nuw nsw i64 %.05.i.i.i.i.i.i.i.i.i.i.i, 1 + %exitcond.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %40, %30 br i1 %exitcond.not.i.i.i.i.i.i.i.i.i.i.i, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit, label %.lr.ph.i.i.i.i.i.i.i.i.i.i.i, !llvm.loop !199 -_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit: ; preds = %.lr.ph.i.i.i.i.i.i.i.i.i.i.i, %.lr.ph.i.us.i.i.i.i.i.i.i.i.i.i, %_ZN5Eigen8internal12linspaced_opIiEC2ERKiS4_l.exit.thread.i - %54 = icmp sgt i32 %7, 0 - br i1 %54, label %.lr.ph173, label %._crit_edge182 +_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit: ; preds = %.lr.ph.i.i.i.i.i.i.i.i.i.i.i, %.loopexit170 + %41 = icmp sgt i32 %7, 0 + br i1 %41, label %.lr.ph173, label %._crit_edge182 .lr.ph173: ; preds = %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit %.not70 = icmp eq ptr %3, null - %55 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %56 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %57 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %42 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %43 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %44 = getelementptr inbounds nuw i8, ptr %0, i64 32 %wide.trip.count = and i64 %6, 2147483647 - br label %62 + br label %49 .lr.ph181: ; preds = %._crit_edge %.not = icmp eq ptr %3, null - %58 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %59 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %60 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %sext203 = shl i64 %9, 32 - %61 = ashr exact i64 %sext203, 32 - %wide.trip.count189 = and i64 %6, 2147483647 - br label %95 + %45 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %46 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %47 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %sext202 = shl i64 %9, 32 + %48 = ashr exact i64 %sext202, 32 + %wide.trip.count188 = and i64 %6, 2147483647 + br label %82 -62: ; preds = %.lr.ph173, %._crit_edge +49: ; preds = %.lr.ph173, %._crit_edge %indvars.iv = phi i64 [ 0, %.lr.ph173 ], [ %indvars.iv.next, %._crit_edge ] - %63 = trunc nuw nsw i64 %indvars.iv to i32 - br i1 %.not70, label %69, label %64 + %50 = trunc nuw nsw i64 %indvars.iv to i32 + br i1 %.not70, label %56, label %51 -64: ; preds = %62 - %65 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv - %66 = load i32, ptr %65, align 4 - br label %69 +51: ; preds = %49 + %52 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv + %53 = load i32, ptr %52, align 4 + br label %56 -67: ; preds = %_ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit, %_ZN5Eigen9DenseBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit75 - %68 = landingpad { ptr, i32 } +54: ; preds = %_ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit, %_ZN5Eigen9DenseBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit75 + %55 = landingpad { ptr, i32 } cleanup tail call void @free(ptr noundef %.sroa.0108.0160) #26 br label %.body -69: ; preds = %64, %62 - %.062 = phi i32 [ %66, %64 ], [ %63, %62 ] - %70 = sext i32 %.062 to i64 - %71 = load ptr, ptr %55, align 8 - %72 = load ptr, ptr %56, align 8 - %73 = getelementptr inbounds i32, ptr %72, i64 %70 - %74 = load i32, ptr %73, align 4 - %75 = sext i32 %74 to i64 - %76 = load ptr, ptr %57, align 8 - %77 = icmp eq ptr %76, null - br i1 %77, label %78, label %82 +56: ; preds = %51, %49 + %.062 = phi i32 [ %53, %51 ], [ %50, %49 ] + %57 = sext i32 %.062 to i64 + %58 = load ptr, ptr %42, align 8 + %59 = load ptr, ptr %43, align 8 + %60 = getelementptr inbounds i32, ptr %59, i64 %57 + %61 = load i32, ptr %60, align 4 + %62 = sext i32 %61 to i64 + %63 = load ptr, ptr %44, align 8 + %64 = icmp eq ptr %63, null + br i1 %64, label %65, label %69 -78: ; preds = %69 - %79 = getelementptr i8, ptr %73, i64 4 - %80 = load i32, ptr %79, align 4 - %81 = sext i32 %80 to i64 +65: ; preds = %56 + %66 = getelementptr i8, ptr %60, i64 4 + %67 = load i32, ptr %66, align 4 + %68 = sext i32 %67 to i64 br label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit -82: ; preds = %69 - %83 = getelementptr inbounds i32, ptr %76, i64 %70 - %84 = load i32, ptr %83, align 4 - %85 = sext i32 %84 to i64 - %86 = add nsw i64 %85, %75 +69: ; preds = %56 + %70 = getelementptr inbounds i32, ptr %63, i64 %57 + %71 = load i32, ptr %70, align 4 + %72 = sext i32 %71 to i64 + %73 = add nsw i64 %72, %62 br label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit -_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit: ; preds = %78, %82 - %.sink.i = phi i64 [ %81, %78 ], [ %86, %82 ] - %87 = icmp sgt i64 %.sink.i, %75 - br i1 %87, label %.lr.ph, label %._crit_edge +_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit: ; preds = %65, %69 + %.sink.i = phi i64 [ %68, %65 ], [ %73, %69 ] + %74 = icmp sgt i64 %.sink.i, %62 + br i1 %74, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit, %.lr.ph - %.sroa.496.0171 = phi i64 [ %94, %.lr.ph ], [ %75, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit ] - %88 = getelementptr inbounds i32, ptr %71, i64 %.sroa.496.0171 - %89 = load i32, ptr %88, align 4 - %90 = sext i32 %89 to i64 - %91 = load ptr, ptr %2, align 8 - %92 = getelementptr inbounds i32, ptr %91, i64 %90 - %93 = load i32, ptr %92, align 4 - %.sroa.speculated = tail call i32 @llvm.smin.i32(i32 %63, i32 %93) - store i32 %.sroa.speculated, ptr %92, align 4 - %94 = add nsw i64 %.sroa.496.0171, 1 - %exitcond.not = icmp eq i64 %94, %.sink.i + %.sroa.496.0171 = phi i64 [ %81, %.lr.ph ], [ %62, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit ] + %75 = getelementptr inbounds i32, ptr %58, i64 %.sroa.496.0171 + %76 = load i32, ptr %75, align 4 + %77 = sext i32 %76 to i64 + %78 = load ptr, ptr %2, align 8 + %79 = getelementptr inbounds i32, ptr %78, i64 %77 + %80 = load i32, ptr %79, align 4 + %.sroa.speculated = tail call i32 @llvm.smin.i32(i32 %50, i32 %80) + store i32 %.sroa.speculated, ptr %79, align 4 + %81 = add nsw i64 %.sroa.496.0171, 1 + %exitcond.not = icmp eq i64 %81, %.sink.i br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !200 ._crit_edge: ; preds = %.lr.ph, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond185.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond185.not, label %.lr.ph181, label %62, !llvm.loop !201 - -95: ; preds = %.lr.ph181, %._crit_edge179 - %indvars.iv186 = phi i64 [ 0, %.lr.ph181 ], [ %indvars.iv.next187, %._crit_edge179 ] - %96 = icmp sge i64 %indvars.iv186, %61 - %97 = getelementptr inbounds nuw i32, ptr %.sroa.0108.0160, i64 %indvars.iv186 - %98 = trunc nuw nsw i64 %indvars.iv186 to i32 - store i32 %98, ptr %97, align 4 - %99 = getelementptr inbounds nuw i32, ptr %.sroa.0118.0147152159, i64 %indvars.iv186 - store i32 %98, ptr %99, align 4 - %100 = load ptr, ptr %1, align 8 - %101 = getelementptr inbounds nuw i32, ptr %100, i64 %indvars.iv186 - store i32 %7, ptr %101, align 4 - br i1 %.not, label %105, label %102 - -102: ; preds = %95 - %103 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv186 - %104 = load i32, ptr %103, align 4 - br label %105 - -105: ; preds = %102, %95 - %.056 = phi i32 [ %104, %102 ], [ %98, %95 ] - %106 = sext i32 %.056 to i64 - %107 = load ptr, ptr %58, align 8 - %108 = load ptr, ptr %59, align 8 - %109 = getelementptr inbounds i32, ptr %108, i64 %106 - %110 = load i32, ptr %109, align 4 - %111 = sext i32 %110 to i64 - %112 = load ptr, ptr %60, align 8 - %113 = icmp eq ptr %112, null - br i1 %113, label %114, label %118 + %exitcond184.not = icmp eq i64 %indvars.iv.next, %wide.trip.count + br i1 %exitcond184.not, label %.lr.ph181, label %49, !llvm.loop !201 + +82: ; preds = %.lr.ph181, %._crit_edge179 + %indvars.iv185 = phi i64 [ 0, %.lr.ph181 ], [ %indvars.iv.next186, %._crit_edge179 ] + %83 = icmp sge i64 %indvars.iv185, %48 + %84 = getelementptr inbounds nuw i32, ptr %.sroa.0108.0160, i64 %indvars.iv185 + %85 = trunc nuw nsw i64 %indvars.iv185 to i32 + store i32 %85, ptr %84, align 4 + %86 = getelementptr inbounds nuw i32, ptr %.sroa.0118.0147152159, i64 %indvars.iv185 + store i32 %85, ptr %86, align 4 + %87 = load ptr, ptr %1, align 8 + %88 = getelementptr inbounds nuw i32, ptr %87, i64 %indvars.iv185 + store i32 %7, ptr %88, align 4 + br i1 %.not, label %92, label %89 + +89: ; preds = %82 + %90 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv185 + %91 = load i32, ptr %90, align 4 + br label %92 + +92: ; preds = %89, %82 + %.056 = phi i32 [ %91, %89 ], [ %85, %82 ] + %93 = sext i32 %.056 to i64 + %94 = load ptr, ptr %45, align 8 + %95 = load ptr, ptr %46, align 8 + %96 = getelementptr inbounds i32, ptr %95, i64 %93 + %97 = load i32, ptr %96, align 4 + %98 = sext i32 %97 to i64 + %99 = load ptr, ptr %47, align 8 + %100 = icmp eq ptr %99, null + br i1 %100, label %101, label %105 -114: ; preds = %105 - %115 = getelementptr i8, ptr %109, i64 4 - %116 = load i32, ptr %115, align 4 - %117 = sext i32 %116 to i64 +101: ; preds = %92 + %102 = getelementptr i8, ptr %96, i64 4 + %103 = load i32, ptr %102, align 4 + %104 = sext i32 %103 to i64 br label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 -118: ; preds = %105 - %119 = getelementptr inbounds i32, ptr %112, i64 %106 - %120 = load i32, ptr %119, align 4 - %121 = sext i32 %120 to i64 - %122 = add nsw i64 %121, %111 +105: ; preds = %92 + %106 = getelementptr inbounds i32, ptr %99, i64 %93 + %107 = load i32, ptr %106, align 4 + %108 = sext i32 %107 to i64 + %109 = add nsw i64 %108, %98 br label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 -_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79: ; preds = %114, %118 - %.sink.i78 = phi i64 [ %117, %114 ], [ %122, %118 ] - %123 = icmp sle i64 %.sink.i78, %111 - %.not168174 = select i1 %123, i1 %96, i1 false +_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79: ; preds = %101, %105 + %.sink.i78 = phi i64 [ %104, %101 ], [ %109, %105 ] + %110 = icmp sle i64 %.sink.i78, %98 + %.not168174 = select i1 %110, i1 %83, i1 false br i1 %.not168174, label %._crit_edge179, label %.lr.ph178 -.lr.ph178: ; preds = %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79, %156 - %124 = phi i1 [ %158, %156 ], [ %123, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 ] - %.059177 = phi i32 [ %.1, %156 ], [ %98, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 ] - %.060176 = phi i1 [ %spec.select, %156 ], [ %96, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 ] - %.sroa.4.0175 = phi i64 [ %157, %156 ], [ %111, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 ] - br i1 %124, label %129, label %125 +.lr.ph178: ; preds = %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79, %143 + %111 = phi i1 [ %145, %143 ], [ %110, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 ] + %.059177 = phi i32 [ %.1, %143 ], [ %85, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 ] + %.060176 = phi i1 [ %spec.select, %143 ], [ %83, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 ] + %.sroa.4.0175 = phi i64 [ %144, %143 ], [ %98, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 ] + br i1 %111, label %116, label %112 + +112: ; preds = %.lr.ph178 + %113 = getelementptr inbounds i32, ptr %94, i64 %.sroa.4.0175 + %114 = load i32, ptr %113, align 4 + %115 = sext i32 %114 to i64 + br label %116 -125: ; preds = %.lr.ph178 - %126 = getelementptr inbounds i32, ptr %107, i64 %.sroa.4.0175 - %127 = load i32, ptr %126, align 4 - %128 = sext i32 %127 to i64 - br label %129 - -129: ; preds = %.lr.ph178, %125 - %.055 = phi i64 [ %128, %125 ], [ %indvars.iv186, %.lr.ph178 ] - %130 = icmp eq i64 %.055, %indvars.iv186 - %spec.select = select i1 %130, i1 true, i1 %.060176 - %131 = load ptr, ptr %2, align 8 - %132 = getelementptr inbounds i32, ptr %131, i64 %.055 - %133 = load i32, ptr %132, align 4 - %134 = sext i32 %133 to i64 - %.not68 = icmp sgt i64 %indvars.iv186, %134 - br i1 %.not68, label %135, label %156 +116: ; preds = %.lr.ph178, %112 + %.055 = phi i64 [ %115, %112 ], [ %indvars.iv185, %.lr.ph178 ] + %117 = icmp eq i64 %.055, %indvars.iv185 + %spec.select = select i1 %117, i1 true, i1 %.060176 + %118 = load ptr, ptr %2, align 8 + %119 = getelementptr inbounds i32, ptr %118, i64 %.055 + %120 = load i32, ptr %119, align 4 + %121 = sext i32 %120 to i64 + %.not68 = icmp sgt i64 %indvars.iv185, %121 + br i1 %.not68, label %122, label %143 -135: ; preds = %129 - %136 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %134 - %137 = load i32, ptr %136, align 4 - %138 = sext i32 %137 to i64 - %139 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %138 - %.016.i = load i32, ptr %139, align 4 - %.not17.i = icmp eq i32 %.016.i, %137 +122: ; preds = %116 + %123 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %121 + %124 = load i32, ptr %123, align 4 + %125 = sext i32 %124 to i64 + %126 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %125 + %.016.i = load i32, ptr %126, align 4 + %.not17.i = icmp eq i32 %.016.i, %124 br i1 %.not17.i, label %.loopexit, label %.lr.ph.i -.lr.ph.i: ; preds = %135, %.lr.ph.i - %.019.i = phi i32 [ %.0.i, %.lr.ph.i ], [ %.016.i, %135 ] - %.01518.i = phi i32 [ %.019.i, %.lr.ph.i ], [ %133, %135 ] - %140 = sext i32 %.01518.i to i64 - %141 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %140 - store i32 %.019.i, ptr %141, align 4 - %142 = sext i32 %.019.i to i64 - %143 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %142 - %144 = load i32, ptr %143, align 4 - %145 = sext i32 %144 to i64 - %146 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %145 - %.0.i = load i32, ptr %146, align 4 - %.not.i = icmp eq i32 %.0.i, %144 +.lr.ph.i: ; preds = %122, %.lr.ph.i + %.019.i = phi i32 [ %.0.i, %.lr.ph.i ], [ %.016.i, %122 ] + %.01518.i = phi i32 [ %.019.i, %.lr.ph.i ], [ %120, %122 ] + %127 = sext i32 %.01518.i to i64 + %128 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %127 + store i32 %.019.i, ptr %128, align 4 + %129 = sext i32 %.019.i to i64 + %130 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %129 + %131 = load i32, ptr %130, align 4 + %132 = sext i32 %131 to i64 + %133 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %132 + %.0.i = load i32, ptr %133, align 4 + %.not.i = icmp eq i32 %.0.i, %131 br i1 %.not.i, label %.loopexit, label %.lr.ph.i, !llvm.loop !202 -.loopexit: ; preds = %.lr.ph.i, %135 - %.pre-phi = phi i64 [ %138, %135 ], [ %145, %.lr.ph.i ] - %.014.lcssa.i = phi i32 [ %137, %135 ], [ %144, %.lr.ph.i ] - %147 = getelementptr inbounds i32, ptr %.sroa.0118.0147152159, i64 %.pre-phi - %148 = load i32, ptr %147, align 4 - %149 = zext i32 %148 to i64 - %.not69 = icmp eq i64 %indvars.iv186, %149 - br i1 %.not69, label %156, label %150 +.loopexit: ; preds = %.lr.ph.i, %122 + %.pre-phi = phi i64 [ %125, %122 ], [ %132, %.lr.ph.i ] + %.014.lcssa.i = phi i32 [ %124, %122 ], [ %131, %.lr.ph.i ] + %134 = getelementptr inbounds i32, ptr %.sroa.0118.0147152159, i64 %.pre-phi + %135 = load i32, ptr %134, align 4 + %136 = zext i32 %135 to i64 + %.not69 = icmp eq i64 %indvars.iv185, %136 + br i1 %.not69, label %143, label %137 + +137: ; preds = %.loopexit + %138 = sext i32 %135 to i64 + %139 = load ptr, ptr %1, align 8 + %140 = getelementptr inbounds i32, ptr %139, i64 %138 + store i32 %85, ptr %140, align 4 + %141 = sext i32 %.059177 to i64 + %142 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %141 + store i32 %.014.lcssa.i, ptr %142, align 4 + store i32 %85, ptr %134, align 4 + br label %143 -150: ; preds = %.loopexit - %151 = sext i32 %148 to i64 - %152 = load ptr, ptr %1, align 8 - %153 = getelementptr inbounds i32, ptr %152, i64 %151 - store i32 %98, ptr %153, align 4 - %154 = sext i32 %.059177 to i64 - %155 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %154 - store i32 %.014.lcssa.i, ptr %155, align 4 - store i32 %98, ptr %147, align 4 - br label %156 - -156: ; preds = %.loopexit, %150, %129 - %.1 = phi i32 [ %.059177, %129 ], [ %.014.lcssa.i, %150 ], [ %.059177, %.loopexit ] - %157 = add nsw i64 %.sroa.4.0175, 1 - %158 = icmp sge i64 %157, %.sink.i78 - %.not168 = select i1 %158, i1 %spec.select, i1 false +143: ; preds = %.loopexit, %137, %116 + %.1 = phi i32 [ %.059177, %116 ], [ %.014.lcssa.i, %137 ], [ %.059177, %.loopexit ] + %144 = add nsw i64 %.sroa.4.0175, 1 + %145 = icmp sge i64 %144, %.sink.i78 + %.not168 = select i1 %145, i1 %spec.select, i1 false br i1 %.not168, label %._crit_edge179, label %.lr.ph178, !llvm.loop !203 -._crit_edge179: ; preds = %156, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 - %indvars.iv.next187 = add nuw nsw i64 %indvars.iv186, 1 - %exitcond190.not = icmp eq i64 %indvars.iv.next187, %wide.trip.count189 - br i1 %exitcond190.not, label %._crit_edge182, label %95, !llvm.loop !204 +._crit_edge179: ; preds = %143, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 + %indvars.iv.next186 = add nuw nsw i64 %indvars.iv185, 1 + %exitcond189.not = icmp eq i64 %indvars.iv.next186, %wide.trip.count188 + br i1 %exitcond189.not, label %._crit_edge182, label %82, !llvm.loop !204 ._crit_edge182: ; preds = %._crit_edge179, %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit tail call void @free(ptr noundef %.sroa.0108.0160) #26 tail call void @free(ptr noundef %.sroa.0118.0147152159) #26 ret i32 0 -.body: ; preds = %20, %67 - %.sroa.0118.0148 = phi ptr [ %.sroa.0118.0147152159, %67 ], [ %calloc204, %20 ] - %.pn = phi { ptr, i32 } [ %68, %67 ], [ %21, %20 ] +.body: ; preds = %20, %54 + %.sroa.0118.0148 = phi ptr [ %.sroa.0118.0147152159, %54 ], [ %calloc203, %20 ] + %.pn = phi { ptr, i32 } [ %55, %54 ], [ %21, %20 ] tail call void @free(ptr noundef %.sroa.0118.0148) #26 resume { ptr, i32 } %.pn } @@ -14998,9 +14971,6 @@ define internal fastcc void @_ZN5Eigen8internal6ColamdL14order_childrenIiEEvT_PN ret void } -; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.abs.i32(i32, i1 immarg) #14 - ; Function Attrs: mustprogress uwtable define linkonce_odr noundef i64 @_ZN5Eigen8internal12SparseLUImplIdiE7memInitEllllllRNS0_13LU_GlobalLU_tINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEENS4_IdLin1ELi1ELi0ELin1ELi1EEEEE(ptr noundef nonnull align 1 dereferenceable(1) %0, i64 noundef %1, i64 noundef %2, i64 noundef %3, i64 noundef %4, i64 noundef %5, i64 noundef %6, ptr noundef nonnull align 8 dereferenceable(184) %7) local_unnamed_addr #20 comdat align 2 personality ptr @__gxx_personality_v0 { %9 = getelementptr inbounds nuw i8, ptr %7, i64 176 @@ -30448,9 +30418,6 @@ declare noalias noundef ptr @calloc(i64 noundef, i64 noundef) local_unnamed_addr ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smin.i32(i32, i32) #30 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.abs.i64(i64, i1 immarg) #30 - attributes #0 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { nofree nounwind } diff --git a/bench/meshlab/optimized/cube_style_precomputation.ll b/bench/meshlab/optimized/cube_style_precomputation.ll index d3953820b7b..07ef4054957 100644 --- a/bench/meshlab/optimized/cube_style_precomputation.ll +++ b/bench/meshlab/optimized/cube_style_precomputation.ll @@ -43570,8 +43570,8 @@ define linkonce_odr noundef i32 @_ZN5Eigen8internal8coletreeINS_12SparseMatrixId 12: ; preds = %4 %13 = lshr exact i64 %sext, 30 - %calloc204 = tail call ptr @calloc(i64 1, i64 %13) - %14 = icmp eq ptr %calloc204, null + %calloc203 = tail call ptr @calloc(i64 1, i64 %13) + %14 = icmp eq ptr %calloc203, null br i1 %14, label %.noexc82, label %16 .noexc82: ; preds = %12 @@ -43601,15 +43601,15 @@ define linkonce_odr noundef i32 @_ZN5Eigen8internal8coletreeINS_12SparseMatrixId _ZN5Eigen9DenseBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit75: ; preds = %16, %4 %.sroa.0108.0160 = phi ptr [ null, %4 ], [ %calloc, %16 ] - %.sroa.0118.0147152159 = phi ptr [ null, %4 ], [ %calloc204, %16 ] + %.sroa.0118.0147152159 = phi ptr [ null, %4 ], [ %calloc203, %16 ] invoke void @_ZN5Eigen12DenseStorageIiLin1ELin1ELi1ELi0EE6resizeElll(ptr noundef nonnull align 8 dereferenceable(16) %1, i64 noundef %6, i64 noundef %6, i64 noundef 1) - to label %_ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit unwind label %67 + to label %_ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit unwind label %54 _ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit: ; preds = %_ZN5Eigen9DenseBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit75 %sext166 = shl i64 %9, 32 %22 = ashr exact i64 %sext166, 32 invoke void @_ZN5Eigen12DenseStorageIiLin1ELin1ELi1ELi0EE6resizeElll(ptr noundef nonnull align 8 dereferenceable(16) %2, i64 noundef %22, i64 noundef %22, i64 noundef 1) - to label %_ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit76 unwind label %67 + to label %_ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit76 unwind label %54 _ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit76: ; preds = %_ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit %23 = getelementptr inbounds nuw i8, ptr %2, i64 8 @@ -43638,270 +43638,243 @@ _ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit76 %34 = trunc nuw nsw i64 %33 to i32 %35 = add nsw i32 %34, -1 %36 = sdiv i32 %32, %35 - %37 = tail call i64 @llvm.abs.i64(i64 %30, i1 true) - %38 = trunc nuw i64 %37 to i32 - %39 = add i32 %32, %38 - %40 = tail call noundef i32 @llvm.abs.i32(i32 %32, i1 true) - %41 = add nuw nsw i32 %40, 1 - %42 = sdiv i32 %39, %41 - %43 = icmp sgt i32 %.sroa.speculated132, 1 - br i1 %43, label %.lr.ph.i.preheader.i.i.i.i.i.i.i.i.i.i, label %_ZN5Eigen8internal12linspaced_opIiEC2ERKiS4_l.exit.thread.i - -_ZN5Eigen8internal12linspaced_opIiEC2ERKiS4_l.exit.thread.i: ; preds = %.loopexit170 - %44 = icmp eq i32 %.sroa.speculated132, 1 - br i1 %44, label %.lr.ph.i.i.i.i.i.i.i.i.i.i.i.preheader, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit - -.lr.ph.i.i.i.i.i.i.i.i.i.i.i.preheader: ; preds = %.lr.ph.i.preheader.i.i.i.i.i.i.i.i.i.i, %_ZN5Eigen8internal12linspaced_opIiEC2ERKiS4_l.exit.thread.i - br label %.lr.ph.i.i.i.i.i.i.i.i.i.i.i - -.lr.ph.i.preheader.i.i.i.i.i.i.i.i.i.i: ; preds = %.loopexit170 - %45 = icmp samesign ugt i32 %.sroa.speculated132, %41 - br i1 %45, label %.lr.ph.i.us.i.i.i.i.i.i.i.i.i.i, label %.lr.ph.i.i.i.i.i.i.i.i.i.i.i.preheader - -.lr.ph.i.us.i.i.i.i.i.i.i.i.i.i: ; preds = %.lr.ph.i.preheader.i.i.i.i.i.i.i.i.i.i, %.lr.ph.i.us.i.i.i.i.i.i.i.i.i.i - %.05.i.us.i.i.i.i.i.i.i.i.i.i = phi i64 [ %49, %.lr.ph.i.us.i.i.i.i.i.i.i.i.i.i ], [ 0, %.lr.ph.i.preheader.i.i.i.i.i.i.i.i.i.i ] - %46 = trunc i64 %.05.i.us.i.i.i.i.i.i.i.i.i.i to i32 - %47 = sdiv i32 %46, %42 - %48 = getelementptr inbounds nuw i32, ptr %31, i64 %.05.i.us.i.i.i.i.i.i.i.i.i.i - store i32 %47, ptr %48, align 4 - %49 = add nuw nsw i64 %.05.i.us.i.i.i.i.i.i.i.i.i.i, 1 - %exitcond.not.i.us.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %49, %30 - br i1 %exitcond.not.i.us.i.i.i.i.i.i.i.i.i.i, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit, label %.lr.ph.i.us.i.i.i.i.i.i.i.i.i.i, !llvm.loop !1399 - -.lr.ph.i.i.i.i.i.i.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i.i.i.i.i.i.i.preheader, %.lr.ph.i.i.i.i.i.i.i.i.i.i.i - %.05.i.i.i.i.i.i.i.i.i.i.i = phi i64 [ %53, %.lr.ph.i.i.i.i.i.i.i.i.i.i.i ], [ 0, %.lr.ph.i.i.i.i.i.i.i.i.i.i.i.preheader ] - %50 = trunc i64 %.05.i.i.i.i.i.i.i.i.i.i.i to i32 - %51 = mul nsw i32 %36, %50 - %52 = getelementptr inbounds nuw i32, ptr %31, i64 %.05.i.i.i.i.i.i.i.i.i.i.i - store i32 %51, ptr %52, align 4 - %53 = add nuw nsw i64 %.05.i.i.i.i.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %53, %30 + %or.cond = icmp sgt i32 %.sroa.speculated132, 0 + br i1 %or.cond, label %.lr.ph.i.i.i.i.i.i.i.i.i.i.i, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit + +.lr.ph.i.i.i.i.i.i.i.i.i.i.i: ; preds = %.loopexit170, %.lr.ph.i.i.i.i.i.i.i.i.i.i.i + %.05.i.i.i.i.i.i.i.i.i.i.i = phi i64 [ %40, %.lr.ph.i.i.i.i.i.i.i.i.i.i.i ], [ 0, %.loopexit170 ] + %37 = trunc i64 %.05.i.i.i.i.i.i.i.i.i.i.i to i32 + %38 = mul nsw i32 %36, %37 + %39 = getelementptr inbounds nuw i32, ptr %31, i64 %.05.i.i.i.i.i.i.i.i.i.i.i + store i32 %38, ptr %39, align 4 + %40 = add nuw nsw i64 %.05.i.i.i.i.i.i.i.i.i.i.i, 1 + %exitcond.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %40, %30 br i1 %exitcond.not.i.i.i.i.i.i.i.i.i.i.i, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit, label %.lr.ph.i.i.i.i.i.i.i.i.i.i.i, !llvm.loop !1399 -_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit: ; preds = %.lr.ph.i.i.i.i.i.i.i.i.i.i.i, %.lr.ph.i.us.i.i.i.i.i.i.i.i.i.i, %_ZN5Eigen8internal12linspaced_opIiEC2ERKiS4_l.exit.thread.i - %54 = icmp sgt i32 %7, 0 - br i1 %54, label %.lr.ph173, label %._crit_edge182 +_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit: ; preds = %.lr.ph.i.i.i.i.i.i.i.i.i.i.i, %.loopexit170 + %41 = icmp sgt i32 %7, 0 + br i1 %41, label %.lr.ph173, label %._crit_edge182 .lr.ph173: ; preds = %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit %.not70 = icmp eq ptr %3, null - %55 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %56 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %57 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %42 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %43 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %44 = getelementptr inbounds nuw i8, ptr %0, i64 32 %wide.trip.count = and i64 %6, 2147483647 - br label %62 + br label %49 .lr.ph181: ; preds = %._crit_edge %.not = icmp eq ptr %3, null - %58 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %59 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %60 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %sext203 = shl i64 %9, 32 - %61 = ashr exact i64 %sext203, 32 - %wide.trip.count189 = and i64 %6, 2147483647 - br label %95 + %45 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %46 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %47 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %sext202 = shl i64 %9, 32 + %48 = ashr exact i64 %sext202, 32 + %wide.trip.count188 = and i64 %6, 2147483647 + br label %82 -62: ; preds = %.lr.ph173, %._crit_edge +49: ; preds = %.lr.ph173, %._crit_edge %indvars.iv = phi i64 [ 0, %.lr.ph173 ], [ %indvars.iv.next, %._crit_edge ] - %63 = trunc nuw nsw i64 %indvars.iv to i32 - br i1 %.not70, label %69, label %64 + %50 = trunc nuw nsw i64 %indvars.iv to i32 + br i1 %.not70, label %56, label %51 -64: ; preds = %62 - %65 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv - %66 = load i32, ptr %65, align 4 - br label %69 +51: ; preds = %49 + %52 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv + %53 = load i32, ptr %52, align 4 + br label %56 -67: ; preds = %_ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit, %_ZN5Eigen9DenseBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit75 - %68 = landingpad { ptr, i32 } +54: ; preds = %_ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit, %_ZN5Eigen9DenseBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit75 + %55 = landingpad { ptr, i32 } cleanup tail call void @free(ptr noundef %.sroa.0108.0160) #16 br label %.body -69: ; preds = %64, %62 - %.062 = phi i32 [ %66, %64 ], [ %63, %62 ] - %70 = sext i32 %.062 to i64 - %71 = load ptr, ptr %55, align 8 - %72 = load ptr, ptr %56, align 8 - %73 = getelementptr inbounds i32, ptr %72, i64 %70 - %74 = load i32, ptr %73, align 4 - %75 = sext i32 %74 to i64 - %76 = load ptr, ptr %57, align 8 - %77 = icmp eq ptr %76, null - br i1 %77, label %78, label %82 +56: ; preds = %51, %49 + %.062 = phi i32 [ %53, %51 ], [ %50, %49 ] + %57 = sext i32 %.062 to i64 + %58 = load ptr, ptr %42, align 8 + %59 = load ptr, ptr %43, align 8 + %60 = getelementptr inbounds i32, ptr %59, i64 %57 + %61 = load i32, ptr %60, align 4 + %62 = sext i32 %61 to i64 + %63 = load ptr, ptr %44, align 8 + %64 = icmp eq ptr %63, null + br i1 %64, label %65, label %69 -78: ; preds = %69 - %79 = getelementptr i8, ptr %73, i64 4 - %80 = load i32, ptr %79, align 4 - %81 = sext i32 %80 to i64 +65: ; preds = %56 + %66 = getelementptr i8, ptr %60, i64 4 + %67 = load i32, ptr %66, align 4 + %68 = sext i32 %67 to i64 br label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit -82: ; preds = %69 - %83 = getelementptr inbounds i32, ptr %76, i64 %70 - %84 = load i32, ptr %83, align 4 - %85 = sext i32 %84 to i64 - %86 = add nsw i64 %85, %75 +69: ; preds = %56 + %70 = getelementptr inbounds i32, ptr %63, i64 %57 + %71 = load i32, ptr %70, align 4 + %72 = sext i32 %71 to i64 + %73 = add nsw i64 %72, %62 br label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit -_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit: ; preds = %78, %82 - %.sink.i = phi i64 [ %81, %78 ], [ %86, %82 ] - %87 = icmp sgt i64 %.sink.i, %75 - br i1 %87, label %.lr.ph, label %._crit_edge +_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit: ; preds = %65, %69 + %.sink.i = phi i64 [ %68, %65 ], [ %73, %69 ] + %74 = icmp sgt i64 %.sink.i, %62 + br i1 %74, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit, %.lr.ph - %.sroa.496.0171 = phi i64 [ %94, %.lr.ph ], [ %75, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit ] - %88 = getelementptr inbounds i32, ptr %71, i64 %.sroa.496.0171 - %89 = load i32, ptr %88, align 4 - %90 = sext i32 %89 to i64 - %91 = load ptr, ptr %2, align 8 - %92 = getelementptr inbounds i32, ptr %91, i64 %90 - %93 = load i32, ptr %92, align 4 - %.sroa.speculated = tail call i32 @llvm.smin.i32(i32 %63, i32 %93) - store i32 %.sroa.speculated, ptr %92, align 4 - %94 = add nsw i64 %.sroa.496.0171, 1 - %exitcond.not = icmp eq i64 %94, %.sink.i + %.sroa.496.0171 = phi i64 [ %81, %.lr.ph ], [ %62, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit ] + %75 = getelementptr inbounds i32, ptr %58, i64 %.sroa.496.0171 + %76 = load i32, ptr %75, align 4 + %77 = sext i32 %76 to i64 + %78 = load ptr, ptr %2, align 8 + %79 = getelementptr inbounds i32, ptr %78, i64 %77 + %80 = load i32, ptr %79, align 4 + %.sroa.speculated = tail call i32 @llvm.smin.i32(i32 %50, i32 %80) + store i32 %.sroa.speculated, ptr %79, align 4 + %81 = add nsw i64 %.sroa.496.0171, 1 + %exitcond.not = icmp eq i64 %81, %.sink.i br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !1400 ._crit_edge: ; preds = %.lr.ph, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond185.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond185.not, label %.lr.ph181, label %62, !llvm.loop !1401 - -95: ; preds = %.lr.ph181, %._crit_edge179 - %indvars.iv186 = phi i64 [ 0, %.lr.ph181 ], [ %indvars.iv.next187, %._crit_edge179 ] - %96 = icmp sge i64 %indvars.iv186, %61 - %97 = getelementptr inbounds nuw i32, ptr %.sroa.0108.0160, i64 %indvars.iv186 - %98 = trunc nuw nsw i64 %indvars.iv186 to i32 - store i32 %98, ptr %97, align 4 - %99 = getelementptr inbounds nuw i32, ptr %.sroa.0118.0147152159, i64 %indvars.iv186 - store i32 %98, ptr %99, align 4 - %100 = load ptr, ptr %1, align 8 - %101 = getelementptr inbounds nuw i32, ptr %100, i64 %indvars.iv186 - store i32 %7, ptr %101, align 4 - br i1 %.not, label %105, label %102 + %exitcond184.not = icmp eq i64 %indvars.iv.next, %wide.trip.count + br i1 %exitcond184.not, label %.lr.ph181, label %49, !llvm.loop !1401 + +82: ; preds = %.lr.ph181, %._crit_edge179 + %indvars.iv185 = phi i64 [ 0, %.lr.ph181 ], [ %indvars.iv.next186, %._crit_edge179 ] + %83 = icmp sge i64 %indvars.iv185, %48 + %84 = getelementptr inbounds nuw i32, ptr %.sroa.0108.0160, i64 %indvars.iv185 + %85 = trunc nuw nsw i64 %indvars.iv185 to i32 + store i32 %85, ptr %84, align 4 + %86 = getelementptr inbounds nuw i32, ptr %.sroa.0118.0147152159, i64 %indvars.iv185 + store i32 %85, ptr %86, align 4 + %87 = load ptr, ptr %1, align 8 + %88 = getelementptr inbounds nuw i32, ptr %87, i64 %indvars.iv185 + store i32 %7, ptr %88, align 4 + br i1 %.not, label %92, label %89 -102: ; preds = %95 - %103 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv186 - %104 = load i32, ptr %103, align 4 - br label %105 +89: ; preds = %82 + %90 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv185 + %91 = load i32, ptr %90, align 4 + br label %92 -105: ; preds = %102, %95 - %.056 = phi i32 [ %104, %102 ], [ %98, %95 ] - %106 = sext i32 %.056 to i64 - %107 = load ptr, ptr %58, align 8 - %108 = load ptr, ptr %59, align 8 - %109 = getelementptr inbounds i32, ptr %108, i64 %106 - %110 = load i32, ptr %109, align 4 - %111 = sext i32 %110 to i64 - %112 = load ptr, ptr %60, align 8 - %113 = icmp eq ptr %112, null - br i1 %113, label %114, label %118 +92: ; preds = %89, %82 + %.056 = phi i32 [ %91, %89 ], [ %85, %82 ] + %93 = sext i32 %.056 to i64 + %94 = load ptr, ptr %45, align 8 + %95 = load ptr, ptr %46, align 8 + %96 = getelementptr inbounds i32, ptr %95, i64 %93 + %97 = load i32, ptr %96, align 4 + %98 = sext i32 %97 to i64 + %99 = load ptr, ptr %47, align 8 + %100 = icmp eq ptr %99, null + br i1 %100, label %101, label %105 -114: ; preds = %105 - %115 = getelementptr i8, ptr %109, i64 4 - %116 = load i32, ptr %115, align 4 - %117 = sext i32 %116 to i64 +101: ; preds = %92 + %102 = getelementptr i8, ptr %96, i64 4 + %103 = load i32, ptr %102, align 4 + %104 = sext i32 %103 to i64 br label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 -118: ; preds = %105 - %119 = getelementptr inbounds i32, ptr %112, i64 %106 - %120 = load i32, ptr %119, align 4 - %121 = sext i32 %120 to i64 - %122 = add nsw i64 %121, %111 +105: ; preds = %92 + %106 = getelementptr inbounds i32, ptr %99, i64 %93 + %107 = load i32, ptr %106, align 4 + %108 = sext i32 %107 to i64 + %109 = add nsw i64 %108, %98 br label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 -_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79: ; preds = %114, %118 - %.sink.i78 = phi i64 [ %117, %114 ], [ %122, %118 ] - %123 = icmp sle i64 %.sink.i78, %111 - %.not168174 = select i1 %123, i1 %96, i1 false +_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79: ; preds = %101, %105 + %.sink.i78 = phi i64 [ %104, %101 ], [ %109, %105 ] + %110 = icmp sle i64 %.sink.i78, %98 + %.not168174 = select i1 %110, i1 %83, i1 false br i1 %.not168174, label %._crit_edge179, label %.lr.ph178 -.lr.ph178: ; preds = %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79, %156 - %124 = phi i1 [ %158, %156 ], [ %123, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 ] - %.059177 = phi i32 [ %.1, %156 ], [ %98, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 ] - %.060176 = phi i1 [ %spec.select, %156 ], [ %96, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 ] - %.sroa.4.0175 = phi i64 [ %157, %156 ], [ %111, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 ] - br i1 %124, label %129, label %125 +.lr.ph178: ; preds = %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79, %143 + %111 = phi i1 [ %145, %143 ], [ %110, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 ] + %.059177 = phi i32 [ %.1, %143 ], [ %85, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 ] + %.060176 = phi i1 [ %spec.select, %143 ], [ %83, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 ] + %.sroa.4.0175 = phi i64 [ %144, %143 ], [ %98, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 ] + br i1 %111, label %116, label %112 -125: ; preds = %.lr.ph178 - %126 = getelementptr inbounds i32, ptr %107, i64 %.sroa.4.0175 - %127 = load i32, ptr %126, align 4 - %128 = sext i32 %127 to i64 - br label %129 +112: ; preds = %.lr.ph178 + %113 = getelementptr inbounds i32, ptr %94, i64 %.sroa.4.0175 + %114 = load i32, ptr %113, align 4 + %115 = sext i32 %114 to i64 + br label %116 -129: ; preds = %.lr.ph178, %125 - %.055 = phi i64 [ %128, %125 ], [ %indvars.iv186, %.lr.ph178 ] - %130 = icmp eq i64 %.055, %indvars.iv186 - %spec.select = select i1 %130, i1 true, i1 %.060176 - %131 = load ptr, ptr %2, align 8 - %132 = getelementptr inbounds i32, ptr %131, i64 %.055 - %133 = load i32, ptr %132, align 4 - %134 = sext i32 %133 to i64 - %.not68 = icmp sgt i64 %indvars.iv186, %134 - br i1 %.not68, label %135, label %156 +116: ; preds = %.lr.ph178, %112 + %.055 = phi i64 [ %115, %112 ], [ %indvars.iv185, %.lr.ph178 ] + %117 = icmp eq i64 %.055, %indvars.iv185 + %spec.select = select i1 %117, i1 true, i1 %.060176 + %118 = load ptr, ptr %2, align 8 + %119 = getelementptr inbounds i32, ptr %118, i64 %.055 + %120 = load i32, ptr %119, align 4 + %121 = sext i32 %120 to i64 + %.not68 = icmp sgt i64 %indvars.iv185, %121 + br i1 %.not68, label %122, label %143 -135: ; preds = %129 - %136 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %134 - %137 = load i32, ptr %136, align 4 - %138 = sext i32 %137 to i64 - %139 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %138 - %.016.i = load i32, ptr %139, align 4 - %.not17.i = icmp eq i32 %.016.i, %137 +122: ; preds = %116 + %123 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %121 + %124 = load i32, ptr %123, align 4 + %125 = sext i32 %124 to i64 + %126 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %125 + %.016.i = load i32, ptr %126, align 4 + %.not17.i = icmp eq i32 %.016.i, %124 br i1 %.not17.i, label %.loopexit, label %.lr.ph.i -.lr.ph.i: ; preds = %135, %.lr.ph.i - %.019.i = phi i32 [ %.0.i, %.lr.ph.i ], [ %.016.i, %135 ] - %.01518.i = phi i32 [ %.019.i, %.lr.ph.i ], [ %133, %135 ] - %140 = sext i32 %.01518.i to i64 - %141 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %140 - store i32 %.019.i, ptr %141, align 4 - %142 = sext i32 %.019.i to i64 - %143 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %142 - %144 = load i32, ptr %143, align 4 - %145 = sext i32 %144 to i64 - %146 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %145 - %.0.i = load i32, ptr %146, align 4 - %.not.i = icmp eq i32 %.0.i, %144 +.lr.ph.i: ; preds = %122, %.lr.ph.i + %.019.i = phi i32 [ %.0.i, %.lr.ph.i ], [ %.016.i, %122 ] + %.01518.i = phi i32 [ %.019.i, %.lr.ph.i ], [ %120, %122 ] + %127 = sext i32 %.01518.i to i64 + %128 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %127 + store i32 %.019.i, ptr %128, align 4 + %129 = sext i32 %.019.i to i64 + %130 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %129 + %131 = load i32, ptr %130, align 4 + %132 = sext i32 %131 to i64 + %133 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %132 + %.0.i = load i32, ptr %133, align 4 + %.not.i = icmp eq i32 %.0.i, %131 br i1 %.not.i, label %.loopexit, label %.lr.ph.i, !llvm.loop !1402 -.loopexit: ; preds = %.lr.ph.i, %135 - %.pre-phi = phi i64 [ %138, %135 ], [ %145, %.lr.ph.i ] - %.014.lcssa.i = phi i32 [ %137, %135 ], [ %144, %.lr.ph.i ] - %147 = getelementptr inbounds i32, ptr %.sroa.0118.0147152159, i64 %.pre-phi - %148 = load i32, ptr %147, align 4 - %149 = zext i32 %148 to i64 - %.not69 = icmp eq i64 %indvars.iv186, %149 - br i1 %.not69, label %156, label %150 +.loopexit: ; preds = %.lr.ph.i, %122 + %.pre-phi = phi i64 [ %125, %122 ], [ %132, %.lr.ph.i ] + %.014.lcssa.i = phi i32 [ %124, %122 ], [ %131, %.lr.ph.i ] + %134 = getelementptr inbounds i32, ptr %.sroa.0118.0147152159, i64 %.pre-phi + %135 = load i32, ptr %134, align 4 + %136 = zext i32 %135 to i64 + %.not69 = icmp eq i64 %indvars.iv185, %136 + br i1 %.not69, label %143, label %137 -150: ; preds = %.loopexit - %151 = sext i32 %148 to i64 - %152 = load ptr, ptr %1, align 8 - %153 = getelementptr inbounds i32, ptr %152, i64 %151 - store i32 %98, ptr %153, align 4 - %154 = sext i32 %.059177 to i64 - %155 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %154 - store i32 %.014.lcssa.i, ptr %155, align 4 - store i32 %98, ptr %147, align 4 - br label %156 - -156: ; preds = %.loopexit, %150, %129 - %.1 = phi i32 [ %.059177, %129 ], [ %.014.lcssa.i, %150 ], [ %.059177, %.loopexit ] - %157 = add nsw i64 %.sroa.4.0175, 1 - %158 = icmp sge i64 %157, %.sink.i78 - %.not168 = select i1 %158, i1 %spec.select, i1 false +137: ; preds = %.loopexit + %138 = sext i32 %135 to i64 + %139 = load ptr, ptr %1, align 8 + %140 = getelementptr inbounds i32, ptr %139, i64 %138 + store i32 %85, ptr %140, align 4 + %141 = sext i32 %.059177 to i64 + %142 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %141 + store i32 %.014.lcssa.i, ptr %142, align 4 + store i32 %85, ptr %134, align 4 + br label %143 + +143: ; preds = %.loopexit, %137, %116 + %.1 = phi i32 [ %.059177, %116 ], [ %.014.lcssa.i, %137 ], [ %.059177, %.loopexit ] + %144 = add nsw i64 %.sroa.4.0175, 1 + %145 = icmp sge i64 %144, %.sink.i78 + %.not168 = select i1 %145, i1 %spec.select, i1 false br i1 %.not168, label %._crit_edge179, label %.lr.ph178, !llvm.loop !1403 -._crit_edge179: ; preds = %156, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 - %indvars.iv.next187 = add nuw nsw i64 %indvars.iv186, 1 - %exitcond190.not = icmp eq i64 %indvars.iv.next187, %wide.trip.count189 - br i1 %exitcond190.not, label %._crit_edge182, label %95, !llvm.loop !1404 +._crit_edge179: ; preds = %143, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 + %indvars.iv.next186 = add nuw nsw i64 %indvars.iv185, 1 + %exitcond189.not = icmp eq i64 %indvars.iv.next186, %wide.trip.count188 + br i1 %exitcond189.not, label %._crit_edge182, label %82, !llvm.loop !1404 ._crit_edge182: ; preds = %._crit_edge179, %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit tail call void @free(ptr noundef %.sroa.0108.0160) #16 tail call void @free(ptr noundef %.sroa.0118.0147152159) #16 ret i32 0 -.body: ; preds = %20, %67 - %.sroa.0118.0148 = phi ptr [ %.sroa.0118.0147152159, %67 ], [ %calloc204, %20 ] - %.pn = phi { ptr, i32 } [ %68, %67 ], [ %21, %20 ] +.body: ; preds = %20, %54 + %.sroa.0118.0148 = phi ptr [ %.sroa.0118.0147152159, %54 ], [ %calloc203, %20 ] + %.pn = phi { ptr, i32 } [ %55, %54 ], [ %21, %20 ] tail call void @free(ptr noundef %.sroa.0118.0148) #16 resume { ptr, i32 } %.pn } @@ -75095,9 +75068,6 @@ declare double @llvm.sqrt.f64(double) #30 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.smax.i32(i32, i32) #30 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i64 @llvm.abs.i64(i64, i1 immarg) #30 - attributes #0 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { nofree nounwind } diff --git a/bench/open3d/optimized/TriangleMeshDeformation.ll b/bench/open3d/optimized/TriangleMeshDeformation.ll index 35ea02ee048..cace03d4968 100644 --- a/bench/open3d/optimized/TriangleMeshDeformation.ll +++ b/bench/open3d/optimized/TriangleMeshDeformation.ll @@ -9926,11 +9926,11 @@ _ZN5Eigen8internal23check_size_for_overflowIiEEvm.exit.i.i.i: ; preds = %28 %35 = getelementptr inbounds nuw i8, ptr %2, i64 8 %36 = load i64, ptr %35, align 8, !tbaa !195 %.not.i.i100 = icmp eq i64 %34, %36 - %.pre219.pre = load ptr, ptr %2, align 8, !tbaa !199, !noalias !343 + %.pre218.pre = load ptr, ptr %2, align 8, !tbaa !199, !noalias !343 br i1 %.not.i.i100, label %43, label %37 37: ; preds = %33 - tail call void @free(ptr noundef %.pre219.pre) #5 + tail call void @free(ptr noundef %.pre218.pre) #5 %38 = icmp sgt i64 %34, 0 br i1 %38, label %_ZN5Eigen8internal23check_size_for_overflowIiEEvm.exit.i.i.i103, label %.sink.split.i.i101 @@ -9944,7 +9944,7 @@ _ZN5Eigen8internal23check_size_for_overflowIiEEvm.exit.i.i.i103: ; preds = %37 %42 = tail call ptr @__cxa_allocate_exception(i64 8) #5 store ptr getelementptr inbounds nuw inrange(-16, 24) (i8, ptr @_ZTVSt9bad_alloc, i64 16), ptr %42, align 8, !tbaa !17 invoke void @__cxa_throw(ptr nonnull %42, ptr nonnull @_ZTISt9bad_alloc, ptr nonnull @_ZNSt9bad_allocD1Ev) #45 - to label %.cont unwind label %105 + to label %.cont unwind label %92 .cont: ; preds = %.invoke unreachable @@ -9955,7 +9955,7 @@ _ZN5Eigen8internal23check_size_for_overflowIiEEvm.exit.i.i.i103: ; preds = %37 br label %43 43: ; preds = %.sink.split.i.i101, %33 - %.pre = phi ptr [ %.sink.i.i102, %.sink.split.i.i101 ], [ %.pre219.pre, %33 ] + %.pre = phi ptr [ %.sink.i.i102, %.sink.split.i.i101 ], [ %.pre218.pre, %33 ] store i64 %34, ptr %35, align 8, !tbaa !195 %44 = icmp slt i64 %34, 1 br i1 %44, label %.loopexit192, label %45 @@ -9979,245 +9979,218 @@ _ZN5Eigen8internal23check_size_for_overflowIiEEvm.exit.i.i.i103: ; preds = %37 %51 = trunc nuw nsw i64 %50 to i32 %52 = add nsw i32 %51, -1 %53 = sdiv i32 %49, %52 - %54 = tail call i64 @llvm.abs.i64(i64 %48, i1 true) - %55 = trunc nuw i64 %54 to i32 - %56 = add i32 %49, %55 - %57 = tail call noundef i32 @llvm.abs.i32(i32 %49, i1 true) - %58 = add nuw nsw i32 %57, 1 - %59 = sdiv i32 %56, %58 - %60 = icmp sgt i32 %.sroa.speculated151, 1 - br i1 %60, label %.lr.ph.i.i.i.i.i.i.i.i.i.i.i, label %_ZN5Eigen8internal12linspaced_opIiEC2ERKiS4_l.exit.thread.i - -_ZN5Eigen8internal12linspaced_opIiEC2ERKiS4_l.exit.thread.i: ; preds = %.loopexit192 - %61 = icmp eq i32 %.sroa.speculated151, 1 - br i1 %61, label %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i.preheader, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit - -_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i.preheader: ; preds = %.lr.ph.i.i.i.i.i.i.i.i.i.i.i, %_ZN5Eigen8internal12linspaced_opIiEC2ERKiS4_l.exit.thread.i - br label %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i - -.lr.ph.i.i.i.i.i.i.i.i.i.i.i: ; preds = %.loopexit192 - %62 = icmp samesign ugt i32 %.sroa.speculated151, %58 - br i1 %62, label %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.us.i.i.i.i.i.i.i.i.i.i.i, label %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i.preheader - -_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.us.i.i.i.i.i.i.i.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.i.i.i.i.i.i.i, %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.us.i.i.i.i.i.i.i.i.i.i.i - %.05.us.i.i.i.i.i.i.i.i.i.i.i = phi i64 [ %66, %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.us.i.i.i.i.i.i.i.i.i.i.i ], [ 0, %.lr.ph.i.i.i.i.i.i.i.i.i.i.i ] - %63 = trunc i64 %.05.us.i.i.i.i.i.i.i.i.i.i.i to i32 - %64 = sdiv i32 %63, %59 - %65 = getelementptr inbounds nuw i32, ptr %.pre, i64 %.05.us.i.i.i.i.i.i.i.i.i.i.i - store i32 %64, ptr %65, align 4, !tbaa !56 - %66 = add nuw nsw i64 %.05.us.i.i.i.i.i.i.i.i.i.i.i, 1 - %exitcond7.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %66, %48 - br i1 %exitcond7.not.i.i.i.i.i.i.i.i.i.i.i, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit, label %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.us.i.i.i.i.i.i.i.i.i.i.i, !llvm.loop !347 - -_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i: ; preds = %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i.preheader, %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i - %.05.i.i.i.i.i.i.i.i.i.i.i = phi i64 [ %70, %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i ], [ 0, %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i.preheader ] - %67 = trunc i64 %.05.i.i.i.i.i.i.i.i.i.i.i to i32 - %68 = mul nsw i32 %53, %67 - %69 = getelementptr inbounds nuw i32, ptr %.pre, i64 %.05.i.i.i.i.i.i.i.i.i.i.i - store i32 %68, ptr %69, align 4, !tbaa !56 - %70 = add nuw nsw i64 %.05.i.i.i.i.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %70, %48 + %or.cond = icmp sgt i32 %.sroa.speculated151, 0 + br i1 %or.cond, label %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit + +_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i: ; preds = %.loopexit192, %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i + %.05.i.i.i.i.i.i.i.i.i.i.i = phi i64 [ %57, %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i ], [ 0, %.loopexit192 ] + %54 = trunc i64 %.05.i.i.i.i.i.i.i.i.i.i.i to i32 + %55 = mul nsw i32 %53, %54 + %56 = getelementptr inbounds nuw i32, ptr %.pre, i64 %.05.i.i.i.i.i.i.i.i.i.i.i + store i32 %55, ptr %56, align 4, !tbaa !56 + %57 = add nuw nsw i64 %.05.i.i.i.i.i.i.i.i.i.i.i, 1 + %exitcond.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %57, %48 br i1 %exitcond.not.i.i.i.i.i.i.i.i.i.i.i, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit, label %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i, !llvm.loop !347 -_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit: ; preds = %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i, %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.us.i.i.i.i.i.i.i.i.i.i.i, %_ZN5Eigen8internal12linspaced_opIiEC2ERKiS4_l.exit.thread.i +_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit: ; preds = %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i, %.loopexit192 br i1 %11, label %.lr.ph195, label %._crit_edge204 .lr.ph195: ; preds = %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit %.not83 = icmp eq ptr %3, null - %71 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %72 = load ptr, ptr %71, align 8, !tbaa !167 - %73 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %74 = load ptr, ptr %73, align 8, !tbaa !87 - %75 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %76 = load ptr, ptr %75, align 8, !tbaa !165 - %77 = icmp eq ptr %76, null - %wide.trip.count212 = and i64 %6, 2147483647 - br i1 %77, label %.lr.ph195.split.us, label %.lr.ph195.split + %58 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %59 = load ptr, ptr %58, align 8, !tbaa !167 + %60 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %61 = load ptr, ptr %60, align 8, !tbaa !87 + %62 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %63 = load ptr, ptr %62, align 8, !tbaa !165 + %64 = icmp eq ptr %63, null + %wide.trip.count211 = and i64 %6, 2147483647 + br i1 %64, label %.lr.ph195.split.us, label %.lr.ph195.split .lr.ph195.split.us: ; preds = %.lr.ph195, %._crit_edge.us - %indvars.iv209 = phi i64 [ %indvars.iv.next210, %._crit_edge.us ], [ 0, %.lr.ph195 ] - %78 = trunc nuw nsw i64 %indvars.iv209 to i32 - br i1 %.not83, label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit.us, label %79 + %indvars.iv208 = phi i64 [ %indvars.iv.next209, %._crit_edge.us ], [ 0, %.lr.ph195 ] + %65 = trunc nuw nsw i64 %indvars.iv208 to i32 + br i1 %.not83, label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit.us, label %66 -79: ; preds = %.lr.ph195.split.us - %80 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv209 - %81 = load i32, ptr %80, align 4, !tbaa !56 +66: ; preds = %.lr.ph195.split.us + %67 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv208 + %68 = load i32, ptr %67, align 4, !tbaa !56 br label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit.us -_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit.us: ; preds = %79, %.lr.ph195.split.us - %.071.us = phi i32 [ %81, %79 ], [ %78, %.lr.ph195.split.us ] - %82 = sext i32 %.071.us to i64 - %83 = getelementptr inbounds i32, ptr %74, i64 %82 - %84 = load i32, ptr %83, align 4, !tbaa !56 - %85 = getelementptr i8, ptr %83, i64 4 - %86 = load i32, ptr %85, align 4, !tbaa !56 - %87 = sext i32 %86 to i64 - %88 = icmp slt i32 %84, %86 - br i1 %88, label %.lr.ph.us.preheader, label %._crit_edge.us +_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit.us: ; preds = %66, %.lr.ph195.split.us + %.071.us = phi i32 [ %68, %66 ], [ %65, %.lr.ph195.split.us ] + %69 = sext i32 %.071.us to i64 + %70 = getelementptr inbounds i32, ptr %61, i64 %69 + %71 = load i32, ptr %70, align 4, !tbaa !56 + %72 = getelementptr i8, ptr %70, i64 4 + %73 = load i32, ptr %72, align 4, !tbaa !56 + %74 = sext i32 %73 to i64 + %75 = icmp slt i32 %71, %73 + br i1 %75, label %.lr.ph.us.preheader, label %._crit_edge.us .lr.ph.us.preheader: ; preds = %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit.us - %89 = sext i32 %84 to i64 + %76 = sext i32 %71 to i64 br label %.lr.ph.us ._crit_edge.us: ; preds = %.lr.ph.us, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit.us - %indvars.iv.next210 = add nuw nsw i64 %indvars.iv209, 1 - %exitcond213.not = icmp eq i64 %indvars.iv.next210, %wide.trip.count212 - br i1 %exitcond213.not, label %.lr.ph203, label %.lr.ph195.split.us, !llvm.loop !348 + %indvars.iv.next209 = add nuw nsw i64 %indvars.iv208, 1 + %exitcond212.not = icmp eq i64 %indvars.iv.next209, %wide.trip.count211 + br i1 %exitcond212.not, label %.lr.ph203, label %.lr.ph195.split.us, !llvm.loop !348 .lr.ph.us: ; preds = %.lr.ph.us.preheader, %.lr.ph.us - %.sroa.7117.0193.us = phi i64 [ %95, %.lr.ph.us ], [ %89, %.lr.ph.us.preheader ] - %90 = getelementptr inbounds i32, ptr %72, i64 %.sroa.7117.0193.us - %91 = load i32, ptr %90, align 4, !tbaa !56 - %92 = sext i32 %91 to i64 - %93 = getelementptr inbounds i32, ptr %.pre, i64 %92 - %94 = load i32, ptr %93, align 4, !tbaa !56 - %.sroa.speculated.us = tail call i32 @llvm.smin.i32(i32 %78, i32 %94) - store i32 %.sroa.speculated.us, ptr %93, align 4, !tbaa !56 - %95 = add nsw i64 %.sroa.7117.0193.us, 1 - %exitcond208.not = icmp eq i64 %95, %87 - br i1 %exitcond208.not, label %._crit_edge.us, label %.lr.ph.us, !llvm.loop !349 + %.sroa.7117.0193.us = phi i64 [ %82, %.lr.ph.us ], [ %76, %.lr.ph.us.preheader ] + %77 = getelementptr inbounds i32, ptr %59, i64 %.sroa.7117.0193.us + %78 = load i32, ptr %77, align 4, !tbaa !56 + %79 = sext i32 %78 to i64 + %80 = getelementptr inbounds i32, ptr %.pre, i64 %79 + %81 = load i32, ptr %80, align 4, !tbaa !56 + %.sroa.speculated.us = tail call i32 @llvm.smin.i32(i32 %65, i32 %81) + store i32 %.sroa.speculated.us, ptr %80, align 4, !tbaa !56 + %82 = add nsw i64 %.sroa.7117.0193.us, 1 + %exitcond207.not = icmp eq i64 %82, %74 + br i1 %exitcond207.not, label %._crit_edge.us, label %.lr.ph.us, !llvm.loop !349 .lr.ph203: ; preds = %._crit_edge, %._crit_edge.us - %96 = load ptr, ptr %1, align 8, !tbaa !199 + %83 = load ptr, ptr %1, align 8, !tbaa !199 %.not = icmp eq ptr %3, null - %97 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %98 = load ptr, ptr %97, align 8, !tbaa !167 - %99 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %100 = load ptr, ptr %99, align 8, !tbaa !87 - %101 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %102 = load ptr, ptr %101, align 8, !tbaa !165 - %103 = icmp eq ptr %102, null + %84 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %85 = load ptr, ptr %84, align 8, !tbaa !167 + %86 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %87 = load ptr, ptr %86, align 8, !tbaa !87 + %88 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %89 = load ptr, ptr %88, align 8, !tbaa !165 + %90 = icmp eq ptr %89, null %sext = shl i64 %9, 32 - %104 = ashr exact i64 %sext, 32 - %wide.trip.count217 = and i64 %6, 2147483647 - br label %127 + %91 = ashr exact i64 %sext, 32 + %wide.trip.count216 = and i64 %6, 2147483647 + br label %114 -105: ; preds = %.invoke - %106 = landingpad { ptr, i32 } +92: ; preds = %.invoke + %93 = landingpad { ptr, i32 } cleanup tail call void @free(ptr noundef %.sroa.0131.0181) #5 br label %.body .lr.ph195.split: ; preds = %.lr.ph195, %._crit_edge %indvars.iv = phi i64 [ %indvars.iv.next, %._crit_edge ], [ 0, %.lr.ph195 ] - %107 = trunc nuw nsw i64 %indvars.iv to i32 - br i1 %.not83, label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit, label %108 + %94 = trunc nuw nsw i64 %indvars.iv to i32 + br i1 %.not83, label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit, label %95 -108: ; preds = %.lr.ph195.split - %109 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv - %110 = load i32, ptr %109, align 4, !tbaa !56 +95: ; preds = %.lr.ph195.split + %96 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv + %97 = load i32, ptr %96, align 4, !tbaa !56 br label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit -_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit: ; preds = %108, %.lr.ph195.split - %.071 = phi i32 [ %110, %108 ], [ %107, %.lr.ph195.split ] - %111 = sext i32 %.071 to i64 - %112 = getelementptr inbounds i32, ptr %74, i64 %111 - %113 = load i32, ptr %112, align 4, !tbaa !56 - %114 = sext i32 %113 to i64 - %115 = getelementptr inbounds i32, ptr %76, i64 %111 - %116 = load i32, ptr %115, align 4, !tbaa !56 - %117 = sext i32 %116 to i64 - %118 = add nsw i64 %117, %114 - %119 = icmp sgt i32 %116, 0 - br i1 %119, label %.lr.ph, label %._crit_edge +_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit: ; preds = %95, %.lr.ph195.split + %.071 = phi i32 [ %97, %95 ], [ %94, %.lr.ph195.split ] + %98 = sext i32 %.071 to i64 + %99 = getelementptr inbounds i32, ptr %61, i64 %98 + %100 = load i32, ptr %99, align 4, !tbaa !56 + %101 = sext i32 %100 to i64 + %102 = getelementptr inbounds i32, ptr %63, i64 %98 + %103 = load i32, ptr %102, align 4, !tbaa !56 + %104 = sext i32 %103 to i64 + %105 = add nsw i64 %104, %101 + %106 = icmp sgt i32 %103, 0 + br i1 %106, label %.lr.ph, label %._crit_edge ._crit_edge: ; preds = %.lr.ph, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count212 + %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count211 br i1 %exitcond.not, label %.lr.ph203, label %.lr.ph195.split, !llvm.loop !348 .lr.ph: ; preds = %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit, %.lr.ph - %.sroa.7117.0193 = phi i64 [ %125, %.lr.ph ], [ %114, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit ] - %120 = getelementptr inbounds i32, ptr %72, i64 %.sroa.7117.0193 - %121 = load i32, ptr %120, align 4, !tbaa !56 - %122 = sext i32 %121 to i64 - %123 = getelementptr inbounds i32, ptr %.pre, i64 %122 - %124 = load i32, ptr %123, align 4, !tbaa !56 - %.sroa.speculated = tail call i32 @llvm.smin.i32(i32 %107, i32 %124) - store i32 %.sroa.speculated, ptr %123, align 4, !tbaa !56 - %125 = add nsw i64 %.sroa.7117.0193, 1 - %126 = icmp slt i64 %125, %118 - br i1 %126, label %.lr.ph, label %._crit_edge, !llvm.loop !349 + %.sroa.7117.0193 = phi i64 [ %112, %.lr.ph ], [ %101, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit ] + %107 = getelementptr inbounds i32, ptr %59, i64 %.sroa.7117.0193 + %108 = load i32, ptr %107, align 4, !tbaa !56 + %109 = sext i32 %108 to i64 + %110 = getelementptr inbounds i32, ptr %.pre, i64 %109 + %111 = load i32, ptr %110, align 4, !tbaa !56 + %.sroa.speculated = tail call i32 @llvm.smin.i32(i32 %94, i32 %111) + store i32 %.sroa.speculated, ptr %110, align 4, !tbaa !56 + %112 = add nsw i64 %.sroa.7117.0193, 1 + %113 = icmp slt i64 %112, %105 + br i1 %113, label %.lr.ph, label %._crit_edge, !llvm.loop !349 ._crit_edge204: ; preds = %._crit_edge201, %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit tail call void @free(ptr noundef %.sroa.0131.0181) #5 tail call void @free(ptr noundef %.sroa.0139.0166173180) #5 ret i32 0 -127: ; preds = %.lr.ph203, %._crit_edge201 - %indvars.iv214 = phi i64 [ 0, %.lr.ph203 ], [ %indvars.iv.next215, %._crit_edge201 ] - %128 = icmp sge i64 %indvars.iv214, %104 - %129 = getelementptr inbounds nuw i32, ptr %.sroa.0131.0181, i64 %indvars.iv214 - %130 = trunc nuw nsw i64 %indvars.iv214 to i32 - store i32 %130, ptr %129, align 4, !tbaa !56 - %131 = getelementptr inbounds nuw i32, ptr %.sroa.0139.0166173180, i64 %indvars.iv214 - store i32 %130, ptr %131, align 4, !tbaa !56 - %132 = getelementptr inbounds nuw i32, ptr %96, i64 %indvars.iv214 - store i32 %7, ptr %132, align 4, !tbaa !56 - br i1 %.not, label %136, label %133 - -133: ; preds = %127 - %134 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv214 - %135 = load i32, ptr %134, align 4, !tbaa !56 - br label %136 +114: ; preds = %.lr.ph203, %._crit_edge201 + %indvars.iv213 = phi i64 [ 0, %.lr.ph203 ], [ %indvars.iv.next214, %._crit_edge201 ] + %115 = icmp sge i64 %indvars.iv213, %91 + %116 = getelementptr inbounds nuw i32, ptr %.sroa.0131.0181, i64 %indvars.iv213 + %117 = trunc nuw nsw i64 %indvars.iv213 to i32 + store i32 %117, ptr %116, align 4, !tbaa !56 + %118 = getelementptr inbounds nuw i32, ptr %.sroa.0139.0166173180, i64 %indvars.iv213 + store i32 %117, ptr %118, align 4, !tbaa !56 + %119 = getelementptr inbounds nuw i32, ptr %83, i64 %indvars.iv213 + store i32 %7, ptr %119, align 4, !tbaa !56 + br i1 %.not, label %123, label %120 + +120: ; preds = %114 + %121 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv213 + %122 = load i32, ptr %121, align 4, !tbaa !56 + br label %123 -136: ; preds = %133, %127 - %.056 = phi i32 [ %135, %133 ], [ %130, %127 ] - %137 = sext i32 %.056 to i64 - %138 = getelementptr inbounds i32, ptr %100, i64 %137 - %139 = load i32, ptr %138, align 4, !tbaa !56 - %140 = sext i32 %139 to i64 - br i1 %103, label %141, label %145 +123: ; preds = %120, %114 + %.056 = phi i32 [ %122, %120 ], [ %117, %114 ] + %124 = sext i32 %.056 to i64 + %125 = getelementptr inbounds i32, ptr %87, i64 %124 + %126 = load i32, ptr %125, align 4, !tbaa !56 + %127 = sext i32 %126 to i64 + br i1 %90, label %128, label %132 -141: ; preds = %136 - %142 = getelementptr i8, ptr %138, i64 4 - %143 = load i32, ptr %142, align 4, !tbaa !56 - %144 = sext i32 %143 to i64 +128: ; preds = %123 + %129 = getelementptr i8, ptr %125, i64 4 + %130 = load i32, ptr %129, align 4, !tbaa !56 + %131 = sext i32 %130 to i64 br label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 -145: ; preds = %136 - %146 = getelementptr inbounds i32, ptr %102, i64 %137 - %147 = load i32, ptr %146, align 4, !tbaa !56 - %148 = sext i32 %147 to i64 - %149 = add nsw i64 %148, %140 +132: ; preds = %123 + %133 = getelementptr inbounds i32, ptr %89, i64 %124 + %134 = load i32, ptr %133, align 4, !tbaa !56 + %135 = sext i32 %134 to i64 + %136 = add nsw i64 %135, %127 br label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 -_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109: ; preds = %141, %145 - %.sink.i108 = phi i64 [ %144, %141 ], [ %149, %145 ] - %150 = icmp sle i64 %.sink.i108, %140 - %.not190196 = select i1 %150, i1 %128, i1 false +_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109: ; preds = %128, %132 + %.sink.i108 = phi i64 [ %131, %128 ], [ %136, %132 ] + %137 = icmp sle i64 %.sink.i108, %127 + %.not190196 = select i1 %137, i1 %115, i1 false br i1 %.not190196, label %._crit_edge201, label %.lr.ph200 -._crit_edge201: ; preds = %172, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 - %indvars.iv.next215 = add nuw nsw i64 %indvars.iv214, 1 - %exitcond218.not = icmp eq i64 %indvars.iv.next215, %wide.trip.count217 - br i1 %exitcond218.not, label %._crit_edge204, label %127, !llvm.loop !350 +._crit_edge201: ; preds = %159, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 + %indvars.iv.next214 = add nuw nsw i64 %indvars.iv213, 1 + %exitcond217.not = icmp eq i64 %indvars.iv.next214, %wide.trip.count216 + br i1 %exitcond217.not, label %._crit_edge204, label %114, !llvm.loop !350 -.lr.ph200: ; preds = %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109, %172 - %151 = phi i1 [ %174, %172 ], [ %150, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 ] - %.066199 = phi i32 [ %.167, %172 ], [ %130, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 ] - %.069198 = phi i1 [ %spec.select, %172 ], [ %128, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 ] - %.sroa.7.0197 = phi i64 [ %173, %172 ], [ %140, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 ] - br i1 %151, label %156, label %152 +.lr.ph200: ; preds = %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109, %159 + %138 = phi i1 [ %161, %159 ], [ %137, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 ] + %.066199 = phi i32 [ %.167, %159 ], [ %117, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 ] + %.069198 = phi i1 [ %spec.select, %159 ], [ %115, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 ] + %.sroa.7.0197 = phi i64 [ %160, %159 ], [ %127, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 ] + br i1 %138, label %143, label %139 -152: ; preds = %.lr.ph200 - %153 = getelementptr inbounds i32, ptr %98, i64 %.sroa.7.0197 - %154 = load i32, ptr %153, align 4, !tbaa !56 - %155 = sext i32 %154 to i64 - br label %156 +139: ; preds = %.lr.ph200 + %140 = getelementptr inbounds i32, ptr %85, i64 %.sroa.7.0197 + %141 = load i32, ptr %140, align 4, !tbaa !56 + %142 = sext i32 %141 to i64 + br label %143 -156: ; preds = %.lr.ph200, %152 - %.055 = phi i64 [ %155, %152 ], [ %indvars.iv214, %.lr.ph200 ] - %157 = icmp eq i64 %.055, %indvars.iv214 - %spec.select = select i1 %157, i1 true, i1 %.069198 - %158 = getelementptr inbounds i32, ptr %.pre, i64 %.055 - %159 = load i32, ptr %158, align 4, !tbaa !56 - %160 = sext i32 %159 to i64 - %.not78 = icmp sgt i64 %indvars.iv214, %160 - br i1 %.not78, label %161, label %172 +143: ; preds = %.lr.ph200, %139 + %.055 = phi i64 [ %142, %139 ], [ %indvars.iv213, %.lr.ph200 ] + %144 = icmp eq i64 %.055, %indvars.iv213 + %spec.select = select i1 %144, i1 true, i1 %.069198 + %145 = getelementptr inbounds i32, ptr %.pre, i64 %.055 + %146 = load i32, ptr %145, align 4, !tbaa !56 + %147 = sext i32 %146 to i64 + %.not78 = icmp sgt i64 %indvars.iv213, %147 + br i1 %.not78, label %148, label %159 -161: ; preds = %156 - %.014.in18.i = getelementptr inbounds i32, ptr %.sroa.0131.0181, i64 %160 +148: ; preds = %143 + %.014.in18.i = getelementptr inbounds i32, ptr %.sroa.0131.0181, i64 %147 %.01419.i = load i32, ptr %.014.in18.i, align 4, !tbaa !56 %.pn20.i = sext i32 %.01419.i to i64 %.0.in21.i = getelementptr inbounds i32, ptr %.sroa.0131.0181, i64 %.pn20.i @@ -10225,12 +10198,12 @@ _ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS %.not23.i = icmp eq i32 %.022.i, %.01419.i br i1 %.not23.i, label %.loopexit, label %.lr.ph.i -.lr.ph.i: ; preds = %161, %.lr.ph.i - %.025.i = phi i32 [ %.0.i, %.lr.ph.i ], [ %.022.i, %161 ] - %.01524.i = phi i32 [ %.025.i, %.lr.ph.i ], [ %159, %161 ] - %162 = sext i32 %.01524.i to i64 - %163 = getelementptr inbounds i32, ptr %.sroa.0131.0181, i64 %162 - store i32 %.025.i, ptr %163, align 4, !tbaa !56 +.lr.ph.i: ; preds = %148, %.lr.ph.i + %.025.i = phi i32 [ %.0.i, %.lr.ph.i ], [ %.022.i, %148 ] + %.01524.i = phi i32 [ %.025.i, %.lr.ph.i ], [ %146, %148 ] + %149 = sext i32 %.01524.i to i64 + %150 = getelementptr inbounds i32, ptr %.sroa.0131.0181, i64 %149 + store i32 %.025.i, ptr %150, align 4, !tbaa !56 %.pn16.i = sext i32 %.025.i to i64 %.014.in.i = getelementptr inbounds i32, ptr %.sroa.0131.0181, i64 %.pn16.i %.014.i = load i32, ptr %.014.in.i, align 4, !tbaa !56 @@ -10240,35 +10213,35 @@ _ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS %.not.i = icmp eq i32 %.0.i, %.014.i br i1 %.not.i, label %.loopexit, label %.lr.ph.i, !llvm.loop !351 -.loopexit: ; preds = %.lr.ph.i, %161 - %.pre-phi = phi i64 [ %.pn20.i, %161 ], [ %.pn.i, %.lr.ph.i ] - %.014.lcssa.i = phi i32 [ %.01419.i, %161 ], [ %.014.i, %.lr.ph.i ] - %164 = getelementptr inbounds i32, ptr %.sroa.0139.0166173180, i64 %.pre-phi - %165 = load i32, ptr %164, align 4, !tbaa !56 - %166 = zext i32 %165 to i64 - %.not79 = icmp eq i64 %indvars.iv214, %166 - br i1 %.not79, label %172, label %167 - -167: ; preds = %.loopexit - %168 = sext i32 %165 to i64 - %169 = getelementptr inbounds i32, ptr %96, i64 %168 - store i32 %130, ptr %169, align 4, !tbaa !56 - %170 = sext i32 %.066199 to i64 - %171 = getelementptr inbounds i32, ptr %.sroa.0131.0181, i64 %170 - store i32 %.014.lcssa.i, ptr %171, align 4, !tbaa !56 - store i32 %130, ptr %164, align 4, !tbaa !56 - br label %172 +.loopexit: ; preds = %.lr.ph.i, %148 + %.pre-phi = phi i64 [ %.pn20.i, %148 ], [ %.pn.i, %.lr.ph.i ] + %.014.lcssa.i = phi i32 [ %.01419.i, %148 ], [ %.014.i, %.lr.ph.i ] + %151 = getelementptr inbounds i32, ptr %.sroa.0139.0166173180, i64 %.pre-phi + %152 = load i32, ptr %151, align 4, !tbaa !56 + %153 = zext i32 %152 to i64 + %.not79 = icmp eq i64 %indvars.iv213, %153 + br i1 %.not79, label %159, label %154 -172: ; preds = %.loopexit, %167, %156 - %.167 = phi i32 [ %.066199, %156 ], [ %.014.lcssa.i, %167 ], [ %.066199, %.loopexit ] - %173 = add nsw i64 %.sroa.7.0197, 1 - %174 = icmp sge i64 %173, %.sink.i108 - %.not190 = select i1 %174, i1 %spec.select, i1 false +154: ; preds = %.loopexit + %155 = sext i32 %152 to i64 + %156 = getelementptr inbounds i32, ptr %83, i64 %155 + store i32 %117, ptr %156, align 4, !tbaa !56 + %157 = sext i32 %.066199 to i64 + %158 = getelementptr inbounds i32, ptr %.sroa.0131.0181, i64 %157 + store i32 %.014.lcssa.i, ptr %158, align 4, !tbaa !56 + store i32 %117, ptr %151, align 4, !tbaa !56 + br label %159 + +159: ; preds = %.loopexit, %154, %143 + %.167 = phi i32 [ %.066199, %143 ], [ %.014.lcssa.i, %154 ], [ %.066199, %.loopexit ] + %160 = add nsw i64 %.sroa.7.0197, 1 + %161 = icmp sge i64 %160, %.sink.i108 + %.not190 = select i1 %161, i1 %spec.select, i1 false br i1 %.not190, label %._crit_edge201, label %.lr.ph200, !llvm.loop !352 -.body: ; preds = %105, %20 - %.sroa.0139.0167 = phi ptr [ %.sroa.0139.0166173180, %105 ], [ %calloc, %20 ] - %.pn84.pn.pn.pn.pn = phi { ptr, i32 } [ %106, %105 ], [ %21, %20 ] +.body: ; preds = %92, %20 + %.sroa.0139.0167 = phi ptr [ %.sroa.0139.0166173180, %92 ], [ %calloc, %20 ] + %.pn84.pn.pn.pn.pn = phi { ptr, i32 } [ %93, %92 ], [ %21, %20 ] tail call void @free(ptr noundef %.sroa.0139.0167) #5 resume { ptr, i32 } %.pn84.pn.pn.pn.pn } diff --git a/bench/opencv/optimized/eltwise_layer.ll b/bench/opencv/optimized/eltwise_layer.ll index 519a4b6c5b4..91918eaf0c4 100644 --- a/bench/opencv/optimized/eltwise_layer.ll +++ b/bench/opencv/optimized/eltwise_layer.ll @@ -6169,30 +6169,30 @@ _ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i: ; preds = %_ZNKSt6vectorIPKN2c %108 = getelementptr inbounds nuw i8, ptr %12, i64 32 %109 = getelementptr inbounds nuw i8, ptr %12, i64 24 store ptr null, ptr %107, align 8, !tbaa !187 - %110 = add nsw i64 %105, -1 - %111 = getelementptr i8, ptr %107, i64 8 - %.idx.i.i.i.i.i31.i = shl nuw nsw i64 %110, 3 - tail call void @llvm.memset.p0.i64(ptr align 8 %111, i8 0, i64 %.idx.i.i.i.i.i31.i, i1 false), !tbaa !187 + %110 = getelementptr i8, ptr %107, i64 8 + %.idx.i.i.i.i.i31.i = add nsw i64 %106, -8 + tail call void @llvm.memset.p0.i64(ptr align 8 %110, i8 0, i64 %.idx.i.i.i.i.i31.i, i1 false), !tbaa !187 store ptr %107, ptr %100, align 8, !tbaa !188 - %112 = getelementptr inbounds nuw ptr, ptr %107, i64 %105 - store ptr %112, ptr %109, align 8, !tbaa !189 - store ptr %112, ptr %108, align 8, !tbaa !190 - %113 = getelementptr inbounds nuw i8, ptr %12, i64 40 - %114 = shl nuw nsw i64 %105, 2 - %115 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %114) #24 + %111 = getelementptr inbounds nuw ptr, ptr %107, i64 %105 + store ptr %111, ptr %109, align 8, !tbaa !189 + store ptr %111, ptr %108, align 8, !tbaa !190 + %112 = getelementptr inbounds nuw i8, ptr %12, i64 40 + %113 = shl nuw nsw i64 %105, 2 + %114 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %113) #24 to label %_ZNSt6vectorIiSaIiEE6resizeEm.exit unwind label %142 _ZNSt6vectorIiSaIiEE6resizeEm.exit: ; preds = %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i - %116 = getelementptr inbounds nuw i8, ptr %12, i64 56 - %117 = getelementptr inbounds nuw i8, ptr %12, i64 48 - store i32 0, ptr %115, align 4, !tbaa !96 - %118 = getelementptr i8, ptr %115, i64 4 - %.idx.i.i.i.i.i31.i205 = shl nuw nsw i64 %110, 2 - tail call void @llvm.memset.p0.i64(ptr align 4 %118, i8 0, i64 %.idx.i.i.i.i.i31.i205, i1 false), !tbaa !96 - store ptr %115, ptr %113, align 8, !tbaa !125 - %119 = getelementptr inbounds nuw i32, ptr %115, i64 %105 - store ptr %119, ptr %117, align 8, !tbaa !127 - store ptr %119, ptr %116, align 8, !tbaa !128 + %115 = getelementptr inbounds nuw i8, ptr %12, i64 56 + %116 = getelementptr inbounds nuw i8, ptr %12, i64 48 + store i32 0, ptr %114, align 4, !tbaa !96 + %117 = getelementptr i8, ptr %114, i64 4 + %118 = shl nuw nsw i64 %105, 2 + %.idx.i.i.i.i.i31.i205 = add nsw i64 %118, -4 + tail call void @llvm.memset.p0.i64(ptr align 4 %117, i8 0, i64 %.idx.i.i.i.i.i31.i205, i1 false), !tbaa !96 + store ptr %114, ptr %112, align 8, !tbaa !125 + %119 = getelementptr inbounds nuw i32, ptr %114, i64 %105 + store ptr %119, ptr %116, align 8, !tbaa !127 + store ptr %119, ptr %115, align 8, !tbaa !128 %120 = getelementptr inbounds nuw i8, ptr %12, i64 80 %.not.i = icmp eq ptr %56, %120 br i1 %.not.i, label %.lr.ph240, label %121 @@ -6386,7 +6386,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit173: ; preds = %17 191: ; preds = %184, %186 %192 = phi i32 [ %190, %186 ], [ 1, %184 ] - %193 = load ptr, ptr %113, align 8, !tbaa !125 + %193 = load ptr, ptr %112, align 8, !tbaa !125 %194 = getelementptr inbounds nuw i32, ptr %193, i64 %indvars.iv store i32 %192, ptr %194, align 4, !tbaa !96 %195 = load i32, ptr %135, align 4, !tbaa !78 @@ -6447,7 +6447,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit176: ; preds = %20 br i1 %212, label %._crit_edge277, label %213 ._crit_edge277: ; preds = %211 - %.pre = load ptr, ptr %113, align 8, !tbaa !125 + %.pre = load ptr, ptr %112, align 8, !tbaa !125 %.pre278 = load i32, ptr %.pre, align 4, !tbaa !96 br label %223 @@ -6697,7 +6697,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit194: ; preds = %27 .lr.ph: ; preds = %283 %285 = load ptr, ptr %100, align 8, !tbaa !188 - %286 = load ptr, ptr %113, align 8 + %286 = load ptr, ptr %112, align 8 %287 = load ptr, ptr %120, align 8 %.fr245 = freeze ptr %287 %288 = load ptr, ptr %138, align 8 @@ -6905,7 +6905,7 @@ _ZNSt6vectorIfSaIfEE5clearEv.exit: ; preds = %.lr.ph243, %366, %. br label %_ZNSt6vectorIfSaIfEED2Ev.exit.i _ZNSt6vectorIfSaIfEED2Ev.exit.i: ; preds = %389, %387 - %390 = load ptr, ptr %113, align 8, !tbaa !125 + %390 = load ptr, ptr %112, align 8, !tbaa !125 %.not.i.i.i1.i = icmp eq ptr %390, null br i1 %.not.i.i.i1.i, label %_ZNSt6vectorIiSaIiEED2Ev.exit.i, label %391 diff --git a/bench/opencv/optimized/freak.ll b/bench/opencv/optimized/freak.ll index 608a0789fdb..703d00d030a 100644 --- a/bench/opencv/optimized/freak.ll +++ b/bench/opencv/optimized/freak.ll @@ -7714,9 +7714,9 @@ _ZNK2cv7MatExprcvNS_3MatEEv.exit: ; preds = %113 br label %.preheader258 .preheader258: ; preds = %.preheader258.lr.ph, %144 - %indvars.iv383 = phi i64 [ %134, %.preheader258.lr.ph ], [ %indvars.iv.next384, %144 ] + %indvars.iv381 = phi i64 [ %134, %.preheader258.lr.ph ], [ %indvars.iv.next382, %144 ] %.079309 = phi ptr [ %131, %.preheader258.lr.ph ], [ %145, %144 ] - %indvars.iv.next384 = add nsw i64 %indvars.iv383, -1 + %indvars.iv.next382 = add nsw i64 %indvars.iv381, -1 %135 = load ptr, ptr %132, align 8 %136 = load ptr, ptr %133, align 8 br label %146 @@ -7740,10 +7740,10 @@ _ZNK2cv7MatExprcvNS_3MatEEv.exit: ; preds = %113 144: ; preds = %158 %145 = getelementptr inbounds i8, ptr %.079309, i64 -128 - %.not = icmp eq i64 %indvars.iv.next384, 0 + %.not = icmp eq i64 %indvars.iv.next382, 0 br i1 %.not, label %.preheader252, label %.preheader258, !llvm.loop !271 -146: ; preds = %158, %.preheader258 +146: ; preds = %.preheader258, %158 %indvars.iv = phi i64 [ 902, %.preheader258 ], [ %indvars.iv.next, %158 ] %147 = lshr i64 %indvars.iv, 6 %148 = getelementptr inbounds nuw i64, ptr %.079309, i64 %147 @@ -7756,7 +7756,7 @@ _ZNK2cv7MatExprcvNS_3MatEEv.exit: ; preds = %113 153: ; preds = %146 %154 = load i64, ptr %136, align 8, !tbaa !99 - %155 = mul i64 %154, %indvars.iv.next384 + %155 = mul i64 %154, %indvars.iv.next382 %156 = getelementptr inbounds nuw i8, ptr %135, i64 %155 %157 = getelementptr inbounds nuw float, ptr %156, i64 %indvars.iv store float 1.000000e+00, ptr %157, align 4, !tbaa !272 @@ -7939,21 +7939,21 @@ _ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN2cv11xfeatures2d8PairStatESt6vectorIS br label %_ZNSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EED2Ev.exit163 212: ; preds = %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN2cv11xfeatures2d8PairStatESt6vectorIS4_SaIS4_EEEENS3_8sortMeanEEvT_SB_T0_.exit, %.critedge - %indvars.iv386 = phi i64 [ 0, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN2cv11xfeatures2d8PairStatESt6vectorIS4_SaIS4_EEEENS3_8sortMeanEEvT_SB_T0_.exit ], [ %indvars.iv.next387, %.critedge ] + %indvars.iv384 = phi i64 [ 0, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN2cv11xfeatures2d8PairStatESt6vectorIS4_SaIS4_EEEENS3_8sortMeanEEvT_SB_T0_.exit ], [ %indvars.iv.next385, %.critedge ] %.sroa.22.0326 = phi ptr [ null, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN2cv11xfeatures2d8PairStatESt6vectorIS4_SaIS4_EEEENS3_8sortMeanEEvT_SB_T0_.exit ], [ %.sroa.22.1, %.critedge ] %.sroa.14.0325 = phi ptr [ null, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN2cv11xfeatures2d8PairStatESt6vectorIS4_SaIS4_EEEENS3_8sortMeanEEvT_SB_T0_.exit ], [ %.sroa.14.2, %.critedge ] %.sroa.0.0324 = phi ptr [ null, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN2cv11xfeatures2d8PairStatESt6vectorIS4_SaIS4_EEEENS3_8sortMeanEEvT_SB_T0_.exit ], [ %.sroa.0.2, %.critedge ] br i1 %5, label %213, label %._ZNSolsEPFRSoS_E.exit131_crit_edge ._ZNSolsEPFRSoS_E.exit131_crit_edge: ; preds = %212 - %.pre394 = ptrtoint ptr %.sroa.14.0325 to i64 - %.pre396 = ptrtoint ptr %.sroa.0.0324 to i64 - %.pre398 = sub i64 %.pre394, %.pre396 - %.pre400 = ashr exact i64 %.pre398, 4 + %.pre392 = ptrtoint ptr %.sroa.14.0325 to i64 + %.pre394 = ptrtoint ptr %.sroa.0.0324 to i64 + %.pre396 = sub i64 %.pre392, %.pre394 + %.pre398 = ashr exact i64 %.pre396, 4 br label %_ZNSolsEPFRSoS_E.exit131 213: ; preds = %212 - %214 = trunc nuw nsw i64 %indvars.iv386 to i32 + %214 = trunc nuw nsw i64 %indvars.iv384 to i32 %215 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, i32 noundef %214) to label %216 unwind label %225 @@ -7983,16 +7983,16 @@ _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit129: ; preds = %_ZNS br label %_ZNSt6vectorIiSaIiEED2Ev.exit _ZNSolsEPFRSoS_E.exit131: ; preds = %._ZNSolsEPFRSoS_E.exit131_crit_edge, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit129 - %.pre-phi401 = phi i64 [ %.pre400, %._ZNSolsEPFRSoS_E.exit131_crit_edge ], [ %221, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit129 ] - %.pre-phi399 = phi i64 [ %.pre398, %._ZNSolsEPFRSoS_E.exit131_crit_edge ], [ %220, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit129 ] - %.pre-phi397 = phi i64 [ %.pre396, %._ZNSolsEPFRSoS_E.exit131_crit_edge ], [ %219, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit129 ] + %.pre-phi399 = phi i64 [ %.pre398, %._ZNSolsEPFRSoS_E.exit131_crit_edge ], [ %221, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit129 ] + %.pre-phi397 = phi i64 [ %.pre396, %._ZNSolsEPFRSoS_E.exit131_crit_edge ], [ %220, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit129 ] + %.pre-phi395 = phi i64 [ %.pre394, %._ZNSolsEPFRSoS_E.exit131_crit_edge ], [ %219, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit129 ] %.not340 = icmp eq ptr %.sroa.14.0325, %.sroa.0.0324 br i1 %.not340, label %._crit_edge317, label %.lr.ph316 .lr.ph316: ; preds = %_ZNSolsEPFRSoS_E.exit131 - %227 = getelementptr inbounds nuw %"struct.cv::xfeatures2d::PairStat", ptr %.sroa.0214.1, i64 %indvars.iv386 + %227 = getelementptr inbounds nuw %"struct.cv::xfeatures2d::PairStat", ptr %.sroa.0214.1, i64 %indvars.iv384 %228 = getelementptr inbounds nuw i8, ptr %227, i64 8 - %umax = call i64 @llvm.umax.i64(i64 %.pre-phi401, i64 1) + %umax = call i64 @llvm.umax.i64(i64 %.pre-phi399, i64 1) br label %229 229: ; preds = %.lr.ph316, %251 @@ -8097,7 +8097,7 @@ _ZNSt6vectorIiSaIiEED2Ev.exit.thread: ; preds = %244, %250 br i1 %253, label %254, label %_ZNSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EE9push_backERKS2_.exit145 254: ; preds = %._crit_edge317 - %255 = getelementptr inbounds nuw %"struct.cv::xfeatures2d::PairStat", ptr %.sroa.0214.1, i64 %indvars.iv386 + %255 = getelementptr inbounds nuw %"struct.cv::xfeatures2d::PairStat", ptr %.sroa.0214.1, i64 %indvars.iv384 %.not.i136 = icmp eq ptr %.sroa.14.0325, %.sroa.22.0326 br i1 %.not.i136, label %258, label %256 @@ -8107,7 +8107,7 @@ _ZNSt6vectorIiSaIiEED2Ev.exit.thread: ; preds = %244, %250 br label %_ZNSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EE9push_backERKS2_.exit145 258: ; preds = %254 - %259 = icmp eq i64 %.pre-phi399, 9223372036854775792 + %259 = icmp eq i64 %.pre-phi397, 9223372036854775792 br i1 %259, label %260, label %_ZNKSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EE12_M_check_lenEmPKc.exit.i.i137 260: ; preds = %258 @@ -8118,9 +8118,9 @@ _ZNSt6vectorIiSaIiEED2Ev.exit.thread: ; preds = %244, %250 unreachable _ZNKSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EE12_M_check_lenEmPKc.exit.i.i137: ; preds = %258 - %.sroa.speculated.i.i.i138 = call i64 @llvm.umax.i64(i64 %.pre-phi401, i64 1) - %261 = add nsw i64 %.sroa.speculated.i.i.i138, %.pre-phi401 - %262 = icmp ult i64 %261, %.pre-phi401 + %.sroa.speculated.i.i.i138 = call i64 @llvm.umax.i64(i64 %.pre-phi399, i64 1) + %261 = add nsw i64 %.sroa.speculated.i.i.i138, %.pre-phi399 + %262 = icmp ult i64 %261, %.pre-phi399 %263 = call i64 @llvm.umin.i64(i64 %261, i64 576460752303423487) %264 = select i1 %262, i64 576460752303423487, i64 %263 %.not.i.i.i139 = icmp ne i64 %264, 0 @@ -8130,13 +8130,13 @@ _ZNKSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EE12_M_check_lenEmPKc.exit.i.i137 to label %.noexc144 unwind label %.loopexit247 .noexc144: ; preds = %_ZNKSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EE12_M_check_lenEmPKc.exit.i.i137 - %267 = getelementptr inbounds i8, ptr %266, i64 %.pre-phi399 + %267 = getelementptr inbounds i8, ptr %266, i64 %.pre-phi397 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %267, ptr noundef nonnull align 8 dereferenceable(16) %255, i64 16, i1 false), !tbaa.struct !290 - %268 = icmp sgt i64 %.pre-phi399, 0 + %268 = icmp sgt i64 %.pre-phi397, 0 br i1 %268, label %269, label %_ZNSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i140 269: ; preds = %.noexc144 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %266, ptr align 8 %.sroa.0.0324, i64 %.pre-phi399, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %266, ptr align 8 %.sroa.0.0324, i64 %.pre-phi397, i1 false) br label %_ZNSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i140 _ZNSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i140: ; preds = %269, %.noexc144 @@ -8165,7 +8165,7 @@ _ZNSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9 br label %_ZNSt6vectorIiSaIiEED2Ev.exit _ZNSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EE9push_backERKS2_.exit145: ; preds = %_ZNSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i142, %256, %._crit_edge317 - %.pre-phi = phi i64 [ %.pre, %_ZNSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i142 ], [ %.pre-phi397, %256 ], [ %.pre-phi397, %._crit_edge317 ] + %.pre-phi = phi i64 [ %.pre, %_ZNSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i142 ], [ %.pre-phi395, %256 ], [ %.pre-phi395, %._crit_edge317 ] %.sroa.0.2 = phi ptr [ %266, %_ZNSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i142 ], [ %.sroa.0.0324, %256 ], [ %.sroa.0.0324, %._crit_edge317 ] %.sroa.14.2 = phi ptr [ %270, %_ZNSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i142 ], [ %257, %256 ], [ %.sroa.14.0325, %._crit_edge317 ] %.sroa.22.1 = phi ptr [ %272, %_ZNSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i142 ], [ %.sroa.22.0326, %256 ], [ %.sroa.22.0326, %._crit_edge317 ] @@ -8178,7 +8178,7 @@ _ZNSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EE9push_backERKS2_.exit145: ; pred br i1 %5, label %277, label %_ZNSolsEPFRSoS_E.exit147.thread 277: ; preds = %276 - %278 = trunc nuw nsw i64 %indvars.iv386 to i32 + %278 = trunc nuw nsw i64 %indvars.iv384 to i32 %279 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, i32 noundef %278) to label %280 unwind label %.loopexit.split-lp248 @@ -8231,9 +8231,9 @@ _ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i187: ; preds = %.noexc190, % to label %_ZNSolsEPFRSoS_E.exit147.thread233 unwind label %.loopexit.split-lp248 .critedge: ; preds = %_ZNSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EE9push_backERKS2_.exit145 - %indvars.iv.next387 = add nuw nsw i64 %indvars.iv386, 1 - %exitcond389.not = icmp eq i64 %indvars.iv.next387, 903 - br i1 %exitcond389.not, label %339, label %212, !llvm.loop !291 + %indvars.iv.next385 = add nuw nsw i64 %indvars.iv384, 1 + %exitcond387.not = icmp eq i64 %indvars.iv.next385, 903 + br i1 %exitcond387.not, label %339, label %212, !llvm.loop !291 _ZNSolsEPFRSoS_E.exit147.thread233: ; preds = %.noexc192 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, i8 0, i64 24, i1 false) @@ -8275,11 +8275,11 @@ _ZNSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EED2Ev.exit150: ; preds = %_ZNSt6v ret void 309: ; preds = %.preheader, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit - %indvars.iv390 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next391, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit ] + %indvars.iv388 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next389, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit ] %310 = phi ptr [ null, %.preheader ], [ %338, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit ] %311 = phi ptr [ null, %.preheader ], [ %337, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit ] %312 = phi ptr [ null, %.preheader ], [ %336, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit ] - %313 = getelementptr inbounds nuw %"struct.cv::xfeatures2d::PairStat", ptr %.sroa.0.2, i64 %indvars.iv390 + %313 = getelementptr inbounds nuw %"struct.cv::xfeatures2d::PairStat", ptr %.sroa.0.2, i64 %indvars.iv388 %314 = getelementptr inbounds nuw i8, ptr %313, i64 8 %.not.i151 = icmp eq ptr %310, %311 br i1 %.not.i151, label %317, label %315 @@ -8347,9 +8347,9 @@ _ZNSt6vectorIiSaIiEE9push_backERKi.exit: ; preds = %_ZNSt6vectorIiSaIiE %337 = phi ptr [ %335, %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i ], [ %311, %315 ] %.pn341 = phi ptr [ %330, %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i ], [ %310, %315 ] %338 = getelementptr inbounds nuw i8, ptr %.pn341, i64 4 - %indvars.iv.next391 = add nuw nsw i64 %indvars.iv390, 1 - %exitcond393.not = icmp eq i64 %indvars.iv.next391, 512 - br i1 %exitcond393.not, label %_ZNSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EED2Ev.exit, label %309, !llvm.loop !292 + %indvars.iv.next389 = add nuw nsw i64 %indvars.iv388, 1 + %exitcond391.not = icmp eq i64 %indvars.iv.next389, 512 + br i1 %exitcond391.not, label %_ZNSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EED2Ev.exit, label %309, !llvm.loop !292 .loopexit: ; preds = %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i %lpad.loopexit = landingpad { ptr, i32 } diff --git a/bench/opencv/optimized/model.ll b/bench/opencv/optimized/model.ll index 2feefeee825..54e12d50a4b 100644 --- a/bench/opencv/optimized/model.ll +++ b/bench/opencv/optimized/model.ll @@ -14157,7 +14157,7 @@ _ZNSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEED2 %.sroa.0544.0.lcssa = phi ptr [ %42, %_ZNSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEED2Ev.exit ], [ %1132, %_ZNSt13unordered_mapISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreENS5_10PrefixHashESt8equal_toIS2_ESaISt4pairIKS2_S6_EEED2Ev.exit ] %.sroa.15.0.lcssa = phi ptr [ %45, %_ZNSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEED2Ev.exit ], [ %1133, %_ZNSt13unordered_mapISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreENS5_10PrefixHashESt8equal_toIS2_ESaISt4pairIKS2_S6_EEED2Ev.exit ] %66 = icmp eq ptr %.sroa.0544.0.lcssa, %.sroa.15.0.lcssa - br i1 %66, label %1179, label %1189 + br i1 %66, label %1179, label %.split873 .body: ; preds = %_ZNSt12_Vector_baseISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS8_EE11_M_allocateEm.exit.i.i %67 = landingpad { ptr, i32 } @@ -14172,7 +14172,7 @@ _ZNSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEED2 br label %_ZNSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEED2Ev.exit102 _ZNSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEED2Ev.exit102: ; preds = %.body.thread, %.body, %68 - %eh.lpad-body1101 = phi { ptr, i32 } [ %43, %.body.thread ], [ %67, %.body ], [ %67, %68 ] + %eh.lpad-body1090 = phi { ptr, i32 } [ %43, %.body.thread ], [ %67, %.body ], [ %67, %68 ] call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %_ZNSt6vectorISt4pairIS_IiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS7_EED2Ev.exit202 @@ -14595,25 +14595,25 @@ _ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i: ; preds = %228 to label %.noexc116 unwind label %.loopexit626 .noexc116: ; preds = %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i - %.pre987 = load ptr, ptr %.sroa.0521.0826, align 8, !tbaa !348 - %.pre988 = load ptr, ptr %213, align 8, !tbaa !348 - %231 = icmp eq ptr %.pre988, %.pre987 + %.pre978 = load ptr, ptr %.sroa.0521.0826, align 8, !tbaa !348 + %.pre979 = load ptr, ptr %213, align 8, !tbaa !348 + %231 = icmp eq ptr %.pre979, %.pre978 br i1 %231, label %233, label %232 232: ; preds = %.noexc116 - %.pre993 = ptrtoint ptr %.pre988 to i64 - %.pre994 = ptrtoint ptr %.pre987 to i64 - %.pre996 = sub i64 %.pre993, %.pre994 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %230, ptr align 4 %.pre987, i64 %.pre996, i1 false) + %.pre984 = ptrtoint ptr %.pre979 to i64 + %.pre985 = ptrtoint ptr %.pre978 to i64 + %.pre987 = sub i64 %.pre984, %.pre985 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %230, ptr align 4 %.pre978, i64 %.pre987, i1 false) br label %233 233: ; preds = %232, %.noexc116 - %.pre-phi9971104 = phi i64 [ %.pre996, %232 ], [ 0, %.noexc116 ] - %.not.i = icmp eq i64 %.pre-phi9971104, %218 + %.pre-phi9881093 = phi i64 [ %.pre987, %232 ], [ 0, %.noexc116 ] + %.not.i = icmp eq i64 %.pre-phi9881093, %218 br i1 %.not.i, label %236, label %234 234: ; preds = %233 - %235 = getelementptr inbounds i8, ptr %230, i64 %.pre-phi9971104 + %235 = getelementptr inbounds i8, ptr %230, i64 %.pre-phi9881093 store i32 %105, ptr %235, align 4, !tbaa !98 br label %_ZNSt6vectorIiSaIiEE9push_backERKi.exit @@ -14641,8 +14641,8 @@ _ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i: ; preds = %.lr.ph.split, %236 .noexc119: ; preds = %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i %245 = getelementptr inbounds i8, ptr %244, i64 %218 store i32 %105, ptr %245, align 4, !tbaa !98 - %.not1238 = icmp eq ptr %214, %215 - br i1 %.not1238, label %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i, label %246 + %.not1218 = icmp eq ptr %214, %215 + br i1 %.not1218, label %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i, label %246 246: ; preds = %.noexc119 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %244, ptr align 4 %239, i64 %218, i1 false) @@ -14878,14 +14878,14 @@ _ZNSt10_HashtableISt6vectorIiSaIiEESt4pairIKS2_N2cv3dnn25TextRecognitionModel_Im br i1 %.not90, label %.loopexit623._crit_edge, label %333 .loopexit623._crit_edge: ; preds = %.loopexit623 - %.pre990 = load float, ptr @_ZN2cv3dnnL16kMinLogDiffFloatE, align 4, !tbaa !102 + %.pre981 = load float, ptr @_ZN2cv3dnnL16kMinLogDiffFloatE, align 4, !tbaa !102 br label %436 333: ; preds = %.loopexit623 %334 = getelementptr inbounds i8, ptr %.fr.i.i.i244, i64 -4 %335 = load i32, ptr %334, align 4, !tbaa !98 %336 = icmp eq i32 %105, %335 - %.pre991 = load float, ptr @_ZN2cv3dnnL16kMinLogDiffFloatE, align 4, !tbaa !102 + %.pre982 = load float, ptr @_ZN2cv3dnnL16kMinLogDiffFloatE, align 4, !tbaa !102 br i1 %336, label %337, label %436 337: ; preds = %333 @@ -14898,7 +14898,7 @@ _ZNSt10_HashtableISt6vectorIiSaIiEESt4pairIKS2_N2cv3dnn25TextRecognitionModel_Im %344 = fsub float %341, %339 %.014.i122 = select i1 %342, float %341, float %339 %.013.i123 = select i1 %342, float %343, float %344 - %345 = fcmp ult float %.013.i123, %.pre991 + %345 = fcmp ult float %.013.i123, %.pre982 br i1 %345, label %.lr.ph.preheader.i.i.i247, label %346 346: ; preds = %337 @@ -15079,7 +15079,7 @@ _ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i.i.i.i.i331: ; preds _ZNSt10_HashtableISt6vectorIiSaIiEESt4pairIKS2_N2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS9_ENSt8__detail10_Select1stESt8equal_toIS2_ENS7_10PrefixHashENSB_18_Mod_range_hashingENSB_20_Default_ranged_hashENSB_20_Prime_rehash_policyENSB_17_Hashtable_traitsILb1ELb0ELb1EEEE12_Scoped_nodeD2Ev.exit.i263: ; preds = %.noexc274 call void @llvm.lifetime.end.p0(ptr nonnull %4) - %.pre989 = load float, ptr @_ZN2cv3dnnL16kMinLogDiffFloatE, align 4, !tbaa !102 + %.pre980 = load float, ptr @_ZN2cv3dnnL16kMinLogDiffFloatE, align 4, !tbaa !102 br label %.loopexit620 416: ; preds = %.noexc274 @@ -15090,7 +15090,7 @@ _ZNSt10_HashtableISt6vectorIiSaIiEESt4pairIKS2_N2cv3dnn25TextRecognitionModel_Im br label %.body241.thread .loopexit620: ; preds = %_ZNKSt8__detail15_Hashtable_baseISt6vectorIiSaIiEESt4pairIKS3_N2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEENS_10_Select1stESt8equal_toIS3_ENS8_10PrefixHashENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS5_mRKNS_16_Hash_node_valueISA_Lb1EEE.exit.i.i.i266, %_ZNSt10_HashtableISt6vectorIiSaIiEESt4pairIKS2_N2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS9_ENSt8__detail10_Select1stESt8equal_toIS2_ENS7_10PrefixHashENSB_18_Mod_range_hashingENSB_20_Default_ranged_hashENSB_20_Prime_rehash_policyENSB_17_Hashtable_traitsILb1ELb0ELb1EEEE12_Scoped_nodeD2Ev.exit.i263 - %418 = phi float [ %.pre989, %_ZNSt10_HashtableISt6vectorIiSaIiEESt4pairIKS2_N2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS9_ENSt8__detail10_Select1stESt8equal_toIS2_ENS7_10PrefixHashENSB_18_Mod_range_hashingENSB_20_Default_ranged_hashENSB_20_Prime_rehash_policyENSB_17_Hashtable_traitsILb1ELb0ELb1EEEE12_Scoped_nodeD2Ev.exit.i263 ], [ %.pre991, %_ZNKSt8__detail15_Hashtable_baseISt6vectorIiSaIiEESt4pairIKS3_N2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEENS_10_Select1stESt8equal_toIS3_ENS8_10PrefixHashENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS5_mRKNS_16_Hash_node_valueISA_Lb1EEE.exit.i.i.i266 ] + %418 = phi float [ %.pre980, %_ZNSt10_HashtableISt6vectorIiSaIiEESt4pairIKS2_N2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS9_ENSt8__detail10_Select1stESt8equal_toIS2_ENS7_10PrefixHashENSB_18_Mod_range_hashingENSB_20_Default_ranged_hashENSB_20_Prime_rehash_policyENSB_17_Hashtable_traitsILb1ELb0ELb1EEEE12_Scoped_nodeD2Ev.exit.i263 ], [ %.pre982, %_ZNKSt8__detail15_Hashtable_baseISt6vectorIiSaIiEESt4pairIKS3_N2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEENS_10_Select1stESt8equal_toIS3_ENS8_10PrefixHashENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS5_mRKNS_16_Hash_node_valueISA_Lb1EEE.exit.i.i.i266 ] %.pn.i264 = phi ptr [ %415, %_ZNSt10_HashtableISt6vectorIiSaIiEESt4pairIKS2_N2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS9_ENSt8__detail10_Select1stESt8equal_toIS2_ENS7_10PrefixHashENSB_18_Mod_range_hashingENSB_20_Default_ranged_hashENSB_20_Prime_rehash_policyENSB_17_Hashtable_traitsILb1ELb0ELb1EEEE12_Scoped_nodeD2Ev.exit.i263 ], [ %.0.i.i.i258, %_ZNKSt8__detail15_Hashtable_baseISt6vectorIiSaIiEESt4pairIKS3_N2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEENS_10_Select1stESt8equal_toIS3_ENS8_10PrefixHashENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS5_mRKNS_16_Hash_node_valueISA_Lb1EEE.exit.i.i.i266 ] %419 = getelementptr inbounds nuw i8, ptr %.pn.i264, i64 36 %420 = load float, ptr %419, align 4, !tbaa !631 @@ -15142,7 +15142,7 @@ _ZN2cv3dnn6LogAddEff.exit131: ; preds = %428, %.loopexit620 br label %.body241.thread 436: ; preds = %.loopexit623._crit_edge, %333 - %437 = phi float [ %.pre990, %.loopexit623._crit_edge ], [ %.pre991, %333 ] + %437 = phi float [ %.pre981, %.loopexit623._crit_edge ], [ %.pre982, %333 ] %438 = getelementptr inbounds nuw i8, ptr %.pn.i230, i64 36 %439 = load float, ptr %438, align 4, !tbaa !631 %440 = load float, ptr %212, align 4, !tbaa !629 @@ -15198,9 +15198,9 @@ _ZNSt6vectorIiSaIiEED2Ev.exit141: ; preds = %_ZN2cv3dnn6LogAddEf br i1 %.not.i.i.i142, label %.body208, label %.body241.thread .body241.thread: ; preds = %432, %318, %329, %434, %405, %416, %.loopexit.split-lp632, %.body241 - %.pn91.pn1113 = phi { ptr, i32 } [ %lpad.loopexit633, %.body241 ], [ %433, %432 ], [ %319, %318 ], [ %330, %329 ], [ %435, %434 ], [ %406, %405 ], [ %417, %416 ], [ %lpad.loopexit.split-lp634, %.loopexit.split-lp632 ] - %.sroa.0.61112 = phi ptr [ %239, %.body241 ], [ %.sroa.0.5, %432 ], [ %.sroa.0.5, %318 ], [ %.sroa.0.5, %329 ], [ %.sroa.0.5, %434 ], [ %.sroa.0.5, %405 ], [ %.sroa.0.5, %416 ], [ %230, %.loopexit.split-lp632 ] - call void @_ZdlPv(ptr noundef nonnull %.sroa.0.61112) #31 + %.pn91.pn1102 = phi { ptr, i32 } [ %lpad.loopexit633, %.body241 ], [ %433, %432 ], [ %319, %318 ], [ %330, %329 ], [ %435, %434 ], [ %406, %405 ], [ %417, %416 ], [ %lpad.loopexit.split-lp634, %.loopexit.split-lp632 ] + %.sroa.0.61101 = phi ptr [ %239, %.body241 ], [ %.sroa.0.5, %432 ], [ %.sroa.0.5, %318 ], [ %.sroa.0.5, %329 ], [ %.sroa.0.5, %434 ], [ %.sroa.0.5, %405 ], [ %.sroa.0.5, %416 ], [ %230, %.loopexit.split-lp632 ] + call void @_ZdlPv(ptr noundef nonnull %.sroa.0.61101) #31 br label %.body208 462: ; preds = %_ZNSt12_Vector_baseISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS8_EE11_M_allocateEm.exit.i.i108 @@ -15974,7 +15974,7 @@ _ZSt11nth_elementIN9__gnu_cxx17__normal_iteratorIPSt4pairISt6vectorIiSaIiEEN2cv3 to label %._ZNSt6vectorISt4pairIS_IiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS7_EE6resizeEm.exit_crit_edge unwind label %1164 ._ZNSt6vectorISt4pairIS_IiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS7_EE6resizeEm.exit_crit_edge: ; preds = %851 - %.pre992 = load ptr, ptr %64, align 8, !tbaa !647 + %.pre983 = load ptr, ptr %64, align 8, !tbaa !647 br label %_ZNSt6vectorISt4pairIS_IiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS7_EE6resizeEm.exit 853: ; preds = %_ZSt11nth_elementIN9__gnu_cxx17__normal_iteratorIPSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEES3_ISA_SaISA_EEEEPFbRKSA_SG_EEvT_SJ_SJ_T0_.exit @@ -16006,7 +16006,7 @@ _ZSt8_DestroyIPSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11Pre br label %_ZNSt6vectorISt4pairIS_IiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS7_EE6resizeEm.exit _ZNSt6vectorISt4pairIS_IiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS7_EE6resizeEm.exit: ; preds = %._ZNSt6vectorISt4pairIS_IiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS7_EE6resizeEm.exit_crit_edge, %_ZSt8_DestroyIPSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEES8_EvT_SA_RSaIT0_E.exit.i.i, %855, %853 - %860 = phi ptr [ %.pre992, %._ZNSt6vectorISt4pairIS_IiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS7_EE6resizeEm.exit_crit_edge ], [ %856, %_ZSt8_DestroyIPSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEES8_EvT_SA_RSaIT0_E.exit.i.i ], [ %844, %855 ], [ %844, %853 ] + %860 = phi ptr [ %.pre983, %._ZNSt6vectorISt4pairIS_IiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS7_EE6resizeEm.exit_crit_edge ], [ %856, %_ZSt8_DestroyIPSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEES8_EvT_SA_RSaIT0_E.exit.i.i ], [ %844, %855 ], [ %844, %853 ] %861 = load ptr, ptr %10, align 8, !tbaa !647 %.not.i.i146 = icmp eq ptr %861, %860 br i1 %.not.i.i146, label %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEES3_ISA_SaISA_EEEEPFbRKSA_SG_EEvT_SJ_T0_.exit, label %862 @@ -16735,7 +16735,7 @@ _ZNSt13unordered_mapISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11Prefi br label %.body208 .body208: ; preds = %.body241, %.body241.thread, %.loopexit.split-lp627, %.loopexit626, %.split.us, %222, %.split848.us, %.body109 - %.pn95.pn = phi { ptr, i32 } [ %.pn87.pn, %.body109 ], [ %210, %.split848.us ], [ %209, %.split.us ], [ %223, %222 ], [ %lpad.loopexit633, %.body241 ], [ %.pn91.pn1113, %.body241.thread ], [ %lpad.loopexit628, %.loopexit626 ], [ %lpad.loopexit.split-lp629, %.loopexit.split-lp627 ] + %.pn95.pn = phi { ptr, i32 } [ %.pn87.pn, %.body109 ], [ %210, %.split848.us ], [ %209, %.split.us ], [ %223, %222 ], [ %lpad.loopexit633, %.body241 ], [ %.pn91.pn1102, %.body241.thread ], [ %lpad.loopexit628, %.loopexit626 ], [ %lpad.loopexit.split-lp629, %.loopexit.split-lp627 ] %1166 = load ptr, ptr %9, align 8, !tbaa !650 %.not.i.i.i165 = icmp eq ptr %1166, null br i1 %.not.i.i.i165, label %_ZNSt6vectorISt4pairIfiESaIS1_EED2Ev.exit166, label %1167 @@ -16784,7 +16784,7 @@ _ZNSt10_HashtableISt6vectorIiSaIiEESt4pairIKS2_N2cv3dnn25TextRecognitionModel_Im _ZNSt13unordered_mapISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreENS5_10PrefixHashESt8equal_toIS2_ESaISt4pairIKS2_S6_EEED2Ev.exit174: ; preds = %_ZNSt10_HashtableISt6vectorIiSaIiEESt4pairIKS2_N2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS9_ENSt8__detail10_Select1stESt8equal_toIS2_ENS7_10PrefixHashENSB_18_Mod_range_hashingENSB_20_Default_ranged_hashENSB_20_Prime_rehash_policyENSB_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i173, %1178 call void @llvm.lifetime.end.p0(ptr nonnull %8) - br label %1223 + br label %1219 1179: ; preds = %._crit_edge871 call void @llvm.lifetime.start.p0(ptr nonnull %11) @@ -16802,7 +16802,7 @@ _ZNSt13unordered_mapISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11Prefi 1182: ; preds = %1179 %1183 = landingpad { ptr, i32 } cleanup - br label %.thread1114 + br label %.thread1103 1184: ; preds = %1180 %1185 = landingpad { ptr, i32 } @@ -16810,160 +16810,148 @@ _ZNSt13unordered_mapISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11Prefi %1186 = load ptr, ptr %11, align 8, !tbaa !70 %1187 = getelementptr inbounds nuw i8, ptr %11, i64 16 %1188 = icmp eq ptr %1186, %1187 - br i1 %1188, label %.thread1114, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i + br i1 %1188, label %.thread1103, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i: ; preds = %1184 call void @_ZdlPv(ptr noundef %1186) #31 - br label %.thread1114 + br label %.thread1103 -.thread1114: ; preds = %1184, %1182, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i +.thread1103: ; preds = %1184, %1182, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i %.pn85 = phi { ptr, i32 } [ %1183, %1182 ], [ %1185, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i ], [ %1185, %1184 ] call void @llvm.lifetime.end.p0(ptr nonnull %12) call void @llvm.lifetime.end.p0(ptr nonnull %11) br label %_ZSt8_DestroyIPSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEES8_EvT_SA_RSaIT0_E.exit.i199 -1189: ; preds = %._crit_edge871 - %1190 = load ptr, ptr %.sroa.0544.0.lcssa, align 8, !tbaa !348 - %1191 = getelementptr inbounds nuw i8, ptr %.sroa.0544.0.lcssa, i64 8 - %1192 = load ptr, ptr %1191, align 8, !tbaa !348 - %.not614873 = icmp eq ptr %1190, %1192 - br i1 %.not614873, label %.lr.ph.i.i.i.i176.preheader, label %.lr.ph876 +.split873: ; preds = %._crit_edge871 + %1189 = load ptr, ptr %.sroa.0544.0.lcssa, align 8, !tbaa !348 + %1190 = getelementptr inbounds nuw i8, ptr %.sroa.0544.0.lcssa, i64 8 + %1191 = load ptr, ptr %1190, align 8, !tbaa !348 + %.not614874 = icmp eq ptr %1189, %1191 + br i1 %.not614874, label %.lr.ph.i.i.i.i176.preheader, label %.lr.ph876 -.lr.ph.i.i.i.i176.preheader: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_.exit, %1189 +.lr.ph.i.i.i.i176.preheader: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_.exit, %.split873 br label %.lr.ph.i.i.i.i176 .lr.ph.i.i.i.i176: ; preds = %.lr.ph.i.i.i.i176.preheader, %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i179 - %.05.i.i.i.i177 = phi ptr [ %1195, %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i179 ], [ %.sroa.0544.0.lcssa, %.lr.ph.i.i.i.i176.preheader ] - %1193 = load ptr, ptr %.05.i.i.i.i177, align 8, !tbaa !314 - %.not.i.i.i.i.i.i.i.i.i178 = icmp eq ptr %1193, null - br i1 %.not.i.i.i.i.i.i.i.i.i178, label %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i179, label %1194 + %.05.i.i.i.i177 = phi ptr [ %1194, %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i179 ], [ %.sroa.0544.0.lcssa, %.lr.ph.i.i.i.i176.preheader ] + %1192 = load ptr, ptr %.05.i.i.i.i177, align 8, !tbaa !314 + %.not.i.i.i.i.i.i.i.i.i178 = icmp eq ptr %1192, null + br i1 %.not.i.i.i.i.i.i.i.i.i178, label %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i179, label %1193 -1194: ; preds = %.lr.ph.i.i.i.i176 - call void @_ZdlPv(ptr noundef nonnull %1193) #31 +1193: ; preds = %.lr.ph.i.i.i.i176 + call void @_ZdlPv(ptr noundef nonnull %1192) #31 br label %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i179 -_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i179: ; preds = %1194, %.lr.ph.i.i.i.i176 - %1195 = getelementptr inbounds nuw i8, ptr %.05.i.i.i.i177, i64 32 - %.not.i.i.i.i180 = icmp eq ptr %1195, %.sroa.15.0.lcssa +_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i179: ; preds = %1193, %.lr.ph.i.i.i.i176 + %1194 = getelementptr inbounds nuw i8, ptr %.05.i.i.i.i177, i64 32 + %.not.i.i.i.i180 = icmp eq ptr %1194, %.sroa.15.0.lcssa br i1 %.not.i.i.i.i180, label %_ZNSt6vectorISt4pairIS_IiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS7_EED2Ev.exit186, label %.lr.ph.i.i.i.i176, !llvm.loop !648 _ZNSt6vectorISt4pairIS_IiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS7_EED2Ev.exit186: ; preds = %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i179 call void @_ZdlPv(ptr noundef nonnull %.sroa.0544.0.lcssa) #31 ret void -.lr.ph876: ; preds = %1189, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_.exit - %.sroa.0514.0874 = phi ptr [ %1222, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_.exit ], [ %1190, %1189 ] - %1196 = load i32, ptr %.sroa.0514.0874, align 4, !tbaa !98 - %1197 = icmp sgt i32 %1196, 0 - br i1 %1197, label %1198, label %1206 - -1198: ; preds = %.lr.ph876 - %1199 = zext nneg i32 %1196 to i64 - %1200 = load ptr, ptr %28, align 8, !tbaa !258 - %1201 = load ptr, ptr %27, align 8, !tbaa !257 +.lr.ph876: ; preds = %.split873, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_.exit + %.sroa.0514.0875 = phi ptr [ %1218, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_.exit ], [ %1189, %.split873 ] + %1195 = load i32, ptr %.sroa.0514.0875, align 4, !tbaa !98 + %1196 = icmp sgt i32 %1195, 0 + br i1 %1196, label %1197, label %1205 + +1197: ; preds = %.lr.ph876 + %1198 = zext nneg i32 %1195 to i64 + %1199 = load ptr, ptr %28, align 8, !tbaa !258 + %1200 = load ptr, ptr %27, align 8, !tbaa !257 + %1201 = ptrtoint ptr %1199 to i64 %1202 = ptrtoint ptr %1200 to i64 - %1203 = ptrtoint ptr %1201 to i64 - %1204 = sub i64 %1202, %1203 - %1205 = ashr exact i64 %1204, 5 - %.not = icmp ult i64 %1205, %1199 - br i1 %.not, label %1206, label %1208 + %1203 = sub i64 %1201, %1202 + %1204 = ashr exact i64 %1203, 5 + %.not = icmp ult i64 %1204, %1198 + br i1 %.not, label %1205, label %1207 -1206: ; preds = %1198, %.lr.ph876 - invoke void @_ZN2cv6detail17check_failed_autoEiRKNS0_12CheckContextE(i32 noundef %1196, ptr noundef nonnull align 8 dereferenceable(48) @_ZZN2cv3dnn25TextRecognitionModel_Impl25ctcPrefixBeamSearchDecodeB5cxx11ERKNS_3MatEE15__cv_check__904) #33 - to label %1207 unwind label %.loopexit.split-lp +1205: ; preds = %1197, %.lr.ph876 + invoke void @_ZN2cv6detail17check_failed_autoEiRKNS0_12CheckContextE(i32 noundef %1195, ptr noundef nonnull align 8 dereferenceable(48) @_ZZN2cv3dnn25TextRecognitionModel_Impl25ctcPrefixBeamSearchDecodeB5cxx11ERKNS_3MatEE15__cv_check__904) #33 + to label %1206 unwind label %.loopexit.split-lp -1207: ; preds = %1206 +1206: ; preds = %1205 unreachable .loopexit: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_.exit.i %lpad.loopexit = landingpad { ptr, i32 } cleanup - br label %1223 + br label %1219 -.loopexit.split-lp: ; preds = %1206, %1211, %1219 +.loopexit.split-lp: ; preds = %1205, %1214 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup - br label %1223 - -1208: ; preds = %1198 - %1209 = add nsw i32 %1196, -1 - %1210 = zext nneg i32 %1209 to i64 - %.not.i.i187 = icmp ugt i64 %1205, %1210 - br i1 %.not.i.i187, label %1212, label %1211 - -1211: ; preds = %1208 - invoke void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.39, i64 noundef %1210, i64 noundef %1205) #33 - to label %.noexc188 unwind label %.loopexit.split-lp - -.noexc188: ; preds = %1211 - unreachable + br label %1219 -1212: ; preds = %1208 - %1213 = getelementptr inbounds nuw %"class.std::__cxx11::basic_string", ptr %1201, i64 %1210 - %1214 = getelementptr inbounds nuw i8, ptr %1213, i64 8 - %1215 = load i64, ptr %1214, align 8, !tbaa !66 - %1216 = load i64, ptr %41, align 8, !tbaa !66 - %1217 = sub i64 4611686018427387903, %1216 - %1218 = icmp ult i64 %1217, %1215 - br i1 %1218, label %1219, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_.exit.i +1207: ; preds = %1197 + %1208 = getelementptr %"class.std::__cxx11::basic_string", ptr %1200, i64 %1198 + %1209 = getelementptr i8, ptr %1208, i64 -24 + %1210 = load i64, ptr %1209, align 8, !tbaa !66 + %1211 = load i64, ptr %41, align 8, !tbaa !66 + %1212 = sub i64 4611686018427387903, %1211 + %1213 = icmp ult i64 %1212, %1210 + br i1 %1213, label %1214, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_.exit.i -1219: ; preds = %1212 +1214: ; preds = %1207 invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.21) #33 to label %.noexc189 unwind label %.loopexit.split-lp -.noexc189: ; preds = %1219 +.noexc189: ; preds = %1214 unreachable -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_.exit.i: ; preds = %1212 - %1220 = load ptr, ptr %1213, align 8, !tbaa !70 - %1221 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_appendEPKcm(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %1220, i64 noundef %1215) +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_.exit.i: ; preds = %1207 + %1215 = getelementptr i8, ptr %1208, i64 -32 + %1216 = load ptr, ptr %1215, align 8, !tbaa !70 + %1217 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_appendEPKcm(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %1216, i64 noundef %1210) to label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_.exit unwind label %.loopexit _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_.exit: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_.exit.i - %1222 = getelementptr inbounds nuw i8, ptr %.sroa.0514.0874, i64 4 - %.not614 = icmp eq ptr %1222, %1192 + %1218 = getelementptr inbounds nuw i8, ptr %.sroa.0514.0875, i64 4 + %.not614 = icmp eq ptr %1218, %1191 br i1 %.not614, label %.lr.ph.i.i.i.i176.preheader, label %.lr.ph876 -1223: ; preds = %.loopexit, %.loopexit.split-lp, %_ZNSt13unordered_mapISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreENS5_10PrefixHashESt8equal_toIS2_ESaISt4pairIKS2_S6_EEED2Ev.exit174 +1219: ; preds = %.loopexit, %.loopexit.split-lp, %_ZNSt13unordered_mapISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreENS5_10PrefixHashESt8equal_toIS2_ESaISt4pairIKS2_S6_EEED2Ev.exit174 %.sroa.0544.0747 = phi ptr [ %.sroa.0544.0867, %_ZNSt13unordered_mapISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreENS5_10PrefixHashESt8equal_toIS2_ESaISt4pairIKS2_S6_EEED2Ev.exit174 ], [ %.sroa.0544.0.lcssa, %.loopexit ], [ %.sroa.0544.0.lcssa, %.loopexit.split-lp ] %.sroa.15.0711 = phi ptr [ %.sroa.15.0868, %_ZNSt13unordered_mapISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreENS5_10PrefixHashESt8equal_toIS2_ESaISt4pairIKS2_S6_EEED2Ev.exit174 ], [ %.sroa.15.0.lcssa, %.loopexit ], [ %.sroa.15.0.lcssa, %.loopexit.split-lp ] %.pn95.pn.pn.pn = phi { ptr, i32 } [ %.pn95.pn.pn, %_ZNSt13unordered_mapISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreENS5_10PrefixHashESt8equal_toIS2_ESaISt4pairIKS2_S6_EEED2Ev.exit174 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] %.not4.i.i.i.i191 = icmp eq ptr %.sroa.0544.0747, %.sroa.15.0711 br i1 %.not4.i.i.i.i191, label %_ZSt8_DestroyIPSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEES8_EvT_SA_RSaIT0_E.exit.i199, label %.lr.ph.i.i.i.i192 -.lr.ph.i.i.i.i192: ; preds = %1223, %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i195 - %.05.i.i.i.i193 = phi ptr [ %1226, %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i195 ], [ %.sroa.0544.0747, %1223 ] - %1224 = load ptr, ptr %.05.i.i.i.i193, align 8, !tbaa !314 - %.not.i.i.i.i.i.i.i.i.i194 = icmp eq ptr %1224, null - br i1 %.not.i.i.i.i.i.i.i.i.i194, label %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i195, label %1225 +.lr.ph.i.i.i.i192: ; preds = %1219, %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i195 + %.05.i.i.i.i193 = phi ptr [ %1222, %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i195 ], [ %.sroa.0544.0747, %1219 ] + %1220 = load ptr, ptr %.05.i.i.i.i193, align 8, !tbaa !314 + %.not.i.i.i.i.i.i.i.i.i194 = icmp eq ptr %1220, null + br i1 %.not.i.i.i.i.i.i.i.i.i194, label %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i195, label %1221 -1225: ; preds = %.lr.ph.i.i.i.i192 - call void @_ZdlPv(ptr noundef nonnull %1224) #31 +1221: ; preds = %.lr.ph.i.i.i.i192 + call void @_ZdlPv(ptr noundef nonnull %1220) #31 br label %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i195 -_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i195: ; preds = %1225, %.lr.ph.i.i.i.i192 - %1226 = getelementptr inbounds nuw i8, ptr %.05.i.i.i.i193, i64 32 - %.not.i.i.i.i196 = icmp eq ptr %1226, %.sroa.15.0711 +_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i195: ; preds = %1221, %.lr.ph.i.i.i.i192 + %1222 = getelementptr inbounds nuw i8, ptr %.05.i.i.i.i193, i64 32 + %.not.i.i.i.i196 = icmp eq ptr %1222, %.sroa.15.0711 br i1 %.not.i.i.i.i196, label %_ZSt8_DestroyIPSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEES8_EvT_SA_RSaIT0_E.exit.i199, label %.lr.ph.i.i.i.i192, !llvm.loop !648 -_ZSt8_DestroyIPSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEES8_EvT_SA_RSaIT0_E.exit.i199: ; preds = %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i195, %.thread1114, %1223 - %.pn95.pn.pn.pn1120 = phi { ptr, i32 } [ %.pn85, %.thread1114 ], [ %.pn95.pn.pn.pn, %1223 ], [ %.pn95.pn.pn.pn, %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i195 ] - %.sroa.0544.07471119 = phi ptr [ %.sroa.0544.0.lcssa, %.thread1114 ], [ %.sroa.0544.0747, %1223 ], [ %.sroa.0544.0747, %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i195 ] - %.not.i.i.i200 = icmp eq ptr %.sroa.0544.07471119, null - br i1 %.not.i.i.i200, label %_ZNSt6vectorISt4pairIS_IiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS7_EED2Ev.exit202, label %1227 +_ZSt8_DestroyIPSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEES8_EvT_SA_RSaIT0_E.exit.i199: ; preds = %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i195, %.thread1103, %1219 + %.pn95.pn.pn.pn1109 = phi { ptr, i32 } [ %.pn85, %.thread1103 ], [ %.pn95.pn.pn.pn, %1219 ], [ %.pn95.pn.pn.pn, %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i195 ] + %.sroa.0544.07471108 = phi ptr [ %.sroa.0544.0.lcssa, %.thread1103 ], [ %.sroa.0544.0747, %1219 ], [ %.sroa.0544.0747, %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i195 ] + %.not.i.i.i200 = icmp eq ptr %.sroa.0544.07471108, null + br i1 %.not.i.i.i200, label %_ZNSt6vectorISt4pairIS_IiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS7_EED2Ev.exit202, label %1223 -1227: ; preds = %_ZSt8_DestroyIPSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEES8_EvT_SA_RSaIT0_E.exit.i199 - call void @_ZdlPv(ptr noundef nonnull %.sroa.0544.07471119) #31 +1223: ; preds = %_ZSt8_DestroyIPSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEES8_EvT_SA_RSaIT0_E.exit.i199 + call void @_ZdlPv(ptr noundef nonnull %.sroa.0544.07471108) #31 br label %_ZNSt6vectorISt4pairIS_IiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS7_EED2Ev.exit202 -_ZNSt6vectorISt4pairIS_IiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS7_EED2Ev.exit202: ; preds = %1227, %_ZSt8_DestroyIPSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEES8_EvT_SA_RSaIT0_E.exit.i199, %_ZNSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEED2Ev.exit102 - %.pn95.pn.pn.pn.pn = phi { ptr, i32 } [ %eh.lpad-body1101, %_ZNSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEED2Ev.exit102 ], [ %.pn95.pn.pn.pn1120, %_ZSt8_DestroyIPSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEES8_EvT_SA_RSaIT0_E.exit.i199 ], [ %.pn95.pn.pn.pn1120, %1227 ] - %1228 = load ptr, ptr %0, align 8, !tbaa !70 - %1229 = icmp eq ptr %1228, %40 - br i1 %1229, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit205, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i203 +_ZNSt6vectorISt4pairIS_IiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS7_EED2Ev.exit202: ; preds = %1223, %_ZSt8_DestroyIPSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEES8_EvT_SA_RSaIT0_E.exit.i199, %_ZNSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEED2Ev.exit102 + %.pn95.pn.pn.pn.pn = phi { ptr, i32 } [ %eh.lpad-body1090, %_ZNSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEED2Ev.exit102 ], [ %.pn95.pn.pn.pn1109, %_ZSt8_DestroyIPSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEES8_EvT_SA_RSaIT0_E.exit.i199 ], [ %.pn95.pn.pn.pn1109, %1223 ] + %1224 = load ptr, ptr %0, align 8, !tbaa !70 + %1225 = icmp eq ptr %1224, %40 + br i1 %1225, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit205, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i203 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i203: ; preds = %_ZNSt6vectorISt4pairIS_IiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS7_EED2Ev.exit202 - call void @_ZdlPv(ptr noundef %1228) #31 + call void @_ZdlPv(ptr noundef %1224) #31 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit205 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit205: ; preds = %_ZNSt6vectorISt4pairIS_IiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS7_EED2Ev.exit202, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i203 diff --git a/bench/openssl/optimized/v3_ncons.ll b/bench/openssl/optimized/v3_ncons.ll index fa22bec6f79..c53c437db48 100644 --- a/bench/openssl/optimized/v3_ncons.ll +++ b/bench/openssl/optimized/v3_ncons.ll @@ -685,21 +685,21 @@ define range(i32 0, 54) i32 @NAME_CONSTRAINTS_check_CN(ptr noundef %0, ptr nound call void @CRYPTO_free(ptr noundef %.pre.i, ptr noundef nonnull @.str.2, i32 noundef 383) #9 br label %cn2dnsid.exit -33: ; preds = %51, %.outer.i - %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %51 ], [ %indvars.iv.ph.i, %.outer.i ] +33: ; preds = %50, %.outer.i + %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %50 ], [ %indvars.iv.ph.i, %.outer.i ] %34 = getelementptr inbounds nuw i8, ptr %.pre.i, i64 %indvars.iv.i %35 = load i8, ptr %34, align 1, !tbaa !11 %36 = and i8 %35, -33 %37 = add i8 %36, -65 %or.cond54.i = icmp ult i8 %37, 26 - br i1 %or.cond54.i, label %51, label %38 + br i1 %or.cond54.i, label %50, label %38 38: ; preds = %33 %39 = add i8 %35, -48 %or.cond8.i = icmp ult i8 %39, 10 %40 = icmp eq i8 %35, 95 %or.cond11.i = or i1 %40, %or.cond8.i - br i1 %or.cond11.i, label %51, label %41 + br i1 %or.cond11.i, label %50, label %41 41: ; preds = %38 %.not49.i = icmp ne i64 %indvars.iv.i, 0 @@ -709,7 +709,7 @@ define range(i32 0, 54) i32 @NAME_CONSTRAINTS_check_CN(ptr noundef %0, ptr nound 43: ; preds = %41 switch i8 %35, label %.loopexit [ - i8 45, label %51 + i8 45, label %50 i8 46, label %44 ] @@ -718,40 +718,36 @@ define range(i32 0, 54) i32 @NAME_CONSTRAINTS_check_CN(ptr noundef %0, ptr nound %46 = getelementptr inbounds nuw i8, ptr %45, i64 1 %47 = load i8, ptr %46, align 1, !tbaa !11 %.not50.i = icmp eq i8 %47, 46 - br i1 %.not50.i, label %.loopexit, label %48 + br i1 %.not50.i, label %.loopexit, label %.thread.i -48: ; preds = %44 - %49 = getelementptr i8, ptr %45, i64 -1 - %50 = load i8, ptr %49, align 1, !tbaa !11 - %.not51.i = icmp eq i8 %50, 45 +.thread.i: ; preds = %44 + %48 = getelementptr i8, ptr %45, i64 -1 + %49 = load i8, ptr %48, align 1, !tbaa !11 + %.not51.i = icmp eq i8 %49, 45 %.not52.i = icmp eq i8 %47, 45 %or.cond57.i = or i1 %.not52.i, %.not51.i - br i1 %or.cond57.i, label %.loopexit, label %.thread.i + %indvars.iv.next83.i = add nuw nsw i64 %indvars.iv.i, 1 + br i1 %or.cond57.i, label %.loopexit, label %.outer.i, !llvm.loop !62 -51: ; preds = %43, %38, %33 +50: ; preds = %43, %38, %33 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %26 br i1 %exitcond.not.i, label %._crit_edge.i, label %33, !llvm.loop !62 -.thread.i: ; preds = %48 - %indvars.iv.next83.i = add nuw nsw i64 %indvars.iv.i, 1 - %exitcond.not84.i = icmp eq i64 %indvars.iv.next83.i, %26 - br i1 %exitcond.not84.i, label %.loopexit41, label %.outer.i, !llvm.loop !62 - -._crit_edge.i: ; preds = %51 - br i1 %31, label %.loopexit, label %.loopexit41 +._crit_edge.i: ; preds = %50 + br i1 %31, label %.loopexit, label %51 cn2dnsid.exit: ; preds = %13, %32 %.0.i = phi i32 [ 53, %32 ], [ 17, %13 ] call void @llvm.lifetime.end.p0(ptr nonnull %3) br label %.thread34 -.loopexit: ; preds = %44, %48, %41, %43, %.preheader.i, %._crit_edge.i +.loopexit: ; preds = %44, %.thread.i, %41, %43, %.preheader.i, %._crit_edge.i call void @CRYPTO_free(ptr noundef %.pre.i, ptr noundef nonnull @.str.2, i32 noundef 431) #9 call void @llvm.lifetime.end.p0(ptr nonnull %3) br label %select.unfold -.loopexit41: ; preds = %.thread.i, %._crit_edge.i +51: ; preds = %._crit_edge.i call void @llvm.lifetime.end.p0(ptr nonnull %3) store i32 %.045.lcssa.i, ptr %4, align 8, !tbaa !63 store ptr %.pre.i, ptr %12, align 8, !tbaa !64 @@ -760,13 +756,13 @@ cn2dnsid.exit: ; preds = %13, %32 %.not19 = icmp eq i32 %52, 0 br i1 %.not19, label %select.unfold, label %.thread34 -select.unfold: ; preds = %.loopexit41, %.loopexit +select.unfold: ; preds = %51, %.loopexit %53 = call i32 @X509_NAME_get_index_by_NID(ptr noundef %6, i32 noundef 13, i32 noundef %14) #9 %54 = icmp eq i32 %53, -1 br i1 %54, label %.thread34, label %13 -.thread34: ; preds = %select.unfold, %.loopexit41, %2, %cn2dnsid.exit - %.2 = phi i32 [ %.0.i, %cn2dnsid.exit ], [ 0, %2 ], [ 0, %select.unfold ], [ %52, %.loopexit41 ] +.thread34: ; preds = %select.unfold, %51, %2, %cn2dnsid.exit + %.2 = phi i32 [ %.0.i, %cn2dnsid.exit ], [ 0, %2 ], [ 0, %select.unfold ], [ %52, %51 ] call void @llvm.lifetime.end.p0(ptr nonnull %5) call void @llvm.lifetime.end.p0(ptr nonnull %4) ret i32 %.2 diff --git a/bench/pola-rs/optimized/9kt0ps7am1ervf5eo1u53zq54.ll b/bench/pola-rs/optimized/9kt0ps7am1ervf5eo1u53zq54.ll index 9895a17331f..0956cee79d3 100644 --- a/bench/pola-rs/optimized/9kt0ps7am1ervf5eo1u53zq54.ll +++ b/bench/pola-rs/optimized/9kt0ps7am1ervf5eo1u53zq54.ll @@ -26922,7 +26922,7 @@ define hidden void @_ZN5rayon5slice9mergesort13par_mergesort17h339a646c7afabb7aE .lr.ph90.preheader: ; preds = %27 %28 = add nsw i64 %1, -1 - br label %146 + br label %.lr.ph90 29: ; preds = %33 resume { ptr, i32 } %.pn41 @@ -27292,61 +27292,61 @@ define hidden void @_ZN5rayon5slice9mergesort13par_mergesort17h339a646c7afabb7aE %exitcond.not.i.i56 = icmp eq i64 %145, %135 br i1 %exitcond.not.i.i56, label %.loopexit.sink.split, label %137 -146: ; preds = %_ZN5rayon5slice9mergesort11insert_head17h7ad417bf3cc01170E.exit, %.lr.ph90.preheader - %.sroa.026.089 = phi i64 [ %147, %_ZN5rayon5slice9mergesort11insert_head17h7ad417bf3cc01170E.exit ], [ %28, %.lr.ph90.preheader ] - %147 = add nsw i64 %.sroa.026.089, -1 - %148 = sub nuw nsw i64 %1, %147 - %149 = getelementptr inbounds nuw { i32, [1 x i32], i64 }, ptr %0, i64 %147 - %150 = getelementptr i8, ptr %149, i64 24 - %.val11.i = load i64, ptr %150, align 8, !alias.scope !4167, !noalias !4172, !noundef !12 - %151 = getelementptr i8, ptr %149, i64 8 - %.val12.i = load i64, ptr %151, align 8, !alias.scope !4174, !noalias !4175, !noundef !12 - %152 = icmp slt i64 %.val12.i, %.val11.i - br i1 %152, label %153, label %_ZN5rayon5slice9mergesort11insert_head17h7ad417bf3cc01170E.exit - -153: ; preds = %146 - %154 = getelementptr inbounds nuw i8, ptr %149, i64 16 - %155 = load i32, ptr %149, align 8, !alias.scope !4176, !noundef !12 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %149, ptr noundef nonnull align 8 dereferenceable(16) %154, i64 16, i1 false), !alias.scope !4176 - %.not.i58 = icmp eq i64 %148, 2 +.lr.ph90: ; preds = %.lr.ph90.preheader, %_ZN5rayon5slice9mergesort11insert_head17h7ad417bf3cc01170E.exit + %.sroa.026.089 = phi i64 [ %146, %_ZN5rayon5slice9mergesort11insert_head17h7ad417bf3cc01170E.exit ], [ %28, %.lr.ph90.preheader ] + %146 = add nsw i64 %.sroa.026.089, -1 + %147 = sub nuw nsw i64 %1, %146 + %148 = getelementptr inbounds nuw { i32, [1 x i32], i64 }, ptr %0, i64 %146 + %149 = getelementptr i8, ptr %148, i64 24 + %.val11.i = load i64, ptr %149, align 8, !alias.scope !4167, !noalias !4172, !noundef !12 + %150 = getelementptr i8, ptr %148, i64 8 + %.val12.i = load i64, ptr %150, align 8, !alias.scope !4174, !noalias !4175, !noundef !12 + %151 = icmp slt i64 %.val12.i, %.val11.i + br i1 %151, label %152, label %_ZN5rayon5slice9mergesort11insert_head17h7ad417bf3cc01170E.exit + +152: ; preds = %.lr.ph90 + %153 = getelementptr inbounds nuw i8, ptr %148, i64 16 + %154 = load i32, ptr %148, align 8, !alias.scope !4176, !noundef !12 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %148, ptr noundef nonnull align 8 dereferenceable(16) %153, i64 16, i1 false), !alias.scope !4176 + %.not.i58 = icmp eq i64 %147, 2 br i1 %.not.i58, label %._crit_edge.i, label %.lr.ph.i.preheader -.lr.ph.i.preheader: ; preds = %153 - %156 = getelementptr i8, ptr %149, i64 40 - %.val9.i85 = load i64, ptr %156, align 8, !alias.scope !4167, !noalias !4172, !noundef !12 - %157 = icmp slt i64 %.val12.i, %.val9.i85 - br i1 %157, label %.lr.ph.preheader, label %._crit_edge.i +.lr.ph.i.preheader: ; preds = %152 + %155 = getelementptr i8, ptr %148, i64 40 + %.val9.i85 = load i64, ptr %155, align 8, !alias.scope !4167, !noalias !4172, !noundef !12 + %156 = icmp slt i64 %.val12.i, %.val9.i85 + br i1 %156, label %.lr.ph.preheader, label %._crit_edge.i .lr.ph.preheader: ; preds = %.lr.ph.i.preheader - %158 = getelementptr inbounds nuw i8, ptr %149, i64 32 + %157 = getelementptr inbounds nuw i8, ptr %148, i64 32 br label %.lr.ph -._crit_edge.i: ; preds = %.lr.ph.i, %.lr.ph, %.lr.ph.i.preheader, %153 - %.sroa.5.0.lcssa.i = phi ptr [ %154, %153 ], [ %154, %.lr.ph.i.preheader ], [ %162, %.lr.ph ], [ %162, %.lr.ph.i ] - store i32 %155, ptr %.sroa.5.0.lcssa.i, align 8, !alias.scope !4176 +._crit_edge.i: ; preds = %.lr.ph.i, %.lr.ph, %.lr.ph.i.preheader, %152 + %.sroa.5.0.lcssa.i = phi ptr [ %153, %152 ], [ %153, %.lr.ph.i.preheader ], [ %161, %.lr.ph ], [ %161, %.lr.ph.i ] + store i32 %154, ptr %.sroa.5.0.lcssa.i, align 8, !alias.scope !4176 %.sroa.54.0..sroa.5.0.sroa_idx5.i = getelementptr inbounds nuw i8, ptr %.sroa.5.0.lcssa.i, i64 8 store i64 %.val12.i, ptr %.sroa.54.0..sroa.5.0.sroa_idx5.i, align 8, !alias.scope !4176 br label %_ZN5rayon5slice9mergesort11insert_head17h7ad417bf3cc01170E.exit .lr.ph.i: ; preds = %.lr.ph - %159 = getelementptr inbounds nuw { i32, [1 x i32], i64 }, ptr %149, i64 %163 - %160 = getelementptr i8, ptr %159, i64 8 - %.val9.i = load i64, ptr %160, align 8, !alias.scope !4167, !noalias !4172, !noundef !12 - %161 = icmp slt i64 %.val12.i, %.val9.i - br i1 %161, label %.lr.ph, label %._crit_edge.i + %158 = getelementptr inbounds nuw { i32, [1 x i32], i64 }, ptr %148, i64 %162 + %159 = getelementptr i8, ptr %158, i64 8 + %.val9.i = load i64, ptr %159, align 8, !alias.scope !4167, !noalias !4172, !noundef !12 + %160 = icmp slt i64 %.val12.i, %.val9.i + br i1 %160, label %.lr.ph, label %._crit_edge.i .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph.i - %162 = phi ptr [ %159, %.lr.ph.i ], [ %158, %.lr.ph.preheader ] - %.sroa.01.09.i86 = phi i64 [ %163, %.lr.ph.i ], [ 2, %.lr.ph.preheader ] - %163 = add nuw nsw i64 %.sroa.01.09.i86, 1 - %164 = getelementptr i8, ptr %162, i64 -16 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %164, ptr noundef nonnull align 8 dereferenceable(16) %162, i64 16, i1 false), !alias.scope !4176 - %exitcond.not.i = icmp eq i64 %163, %148 + %161 = phi ptr [ %158, %.lr.ph.i ], [ %157, %.lr.ph.preheader ] + %.sroa.01.09.i86 = phi i64 [ %162, %.lr.ph.i ], [ 2, %.lr.ph.preheader ] + %162 = add nuw nsw i64 %.sroa.01.09.i86, 1 + %163 = getelementptr i8, ptr %161, i64 -16 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %163, ptr noundef nonnull align 8 dereferenceable(16) %161, i64 16, i1 false), !alias.scope !4176 + %exitcond.not.i = icmp eq i64 %162, %147 br i1 %exitcond.not.i, label %._crit_edge.i, label %.lr.ph.i -_ZN5rayon5slice9mergesort11insert_head17h7ad417bf3cc01170E.exit: ; preds = %146, %._crit_edge.i - %.not43 = icmp eq i64 %147, 0 - br i1 %.not43, label %.loopexit, label %146 +_ZN5rayon5slice9mergesort11insert_head17h7ad417bf3cc01170E.exit: ; preds = %.lr.ph90, %._crit_edge.i + %.not43 = icmp eq i64 %146, 0 + br i1 %.not43, label %.loopexit, label %.lr.ph90 } ; Function Attrs: nonlazybind uwtable @@ -27401,7 +27401,7 @@ define hidden void @_ZN5rayon5slice9mergesort13par_mergesort17h719818d9b3daaf5eE .lr.ph90.preheader: ; preds = %27 %28 = add nsw i64 %1, -1 - br label %146 + br label %.lr.ph90 29: ; preds = %33 resume { ptr, i32 } %.pn41 @@ -27771,61 +27771,61 @@ define hidden void @_ZN5rayon5slice9mergesort13par_mergesort17h719818d9b3daaf5eE %exitcond.not.i.i56 = icmp eq i64 %145, %135 br i1 %exitcond.not.i.i56, label %.loopexit.sink.split, label %137 -146: ; preds = %_ZN5rayon5slice9mergesort11insert_head17h95147180a0eb705aE.exit, %.lr.ph90.preheader - %.sroa.026.089 = phi i64 [ %147, %_ZN5rayon5slice9mergesort11insert_head17h95147180a0eb705aE.exit ], [ %28, %.lr.ph90.preheader ] - %147 = add nsw i64 %.sroa.026.089, -1 - %148 = sub nuw nsw i64 %1, %147 - %149 = getelementptr inbounds nuw { i32, [1 x i32], i64 }, ptr %0, i64 %147 - %150 = getelementptr i8, ptr %149, i64 24 - %.val7.i = load i64, ptr %150, align 8, !alias.scope !4227, !noalias !4232, !noundef !12 - %151 = getelementptr i8, ptr %149, i64 8 - %.val8.i = load i64, ptr %151, align 8, !alias.scope !4234, !noalias !4235, !noundef !12 - %152 = icmp slt i64 %.val7.i, %.val8.i - br i1 %152, label %153, label %_ZN5rayon5slice9mergesort11insert_head17h95147180a0eb705aE.exit - -153: ; preds = %146 - %154 = getelementptr inbounds nuw i8, ptr %149, i64 16 - %155 = load i32, ptr %149, align 8, !alias.scope !4236, !noundef !12 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %149, ptr noundef nonnull align 8 dereferenceable(16) %154, i64 16, i1 false), !alias.scope !4236 - %.not.i58 = icmp eq i64 %148, 2 +.lr.ph90: ; preds = %.lr.ph90.preheader, %_ZN5rayon5slice9mergesort11insert_head17h95147180a0eb705aE.exit + %.sroa.026.089 = phi i64 [ %146, %_ZN5rayon5slice9mergesort11insert_head17h95147180a0eb705aE.exit ], [ %28, %.lr.ph90.preheader ] + %146 = add nsw i64 %.sroa.026.089, -1 + %147 = sub nuw nsw i64 %1, %146 + %148 = getelementptr inbounds nuw { i32, [1 x i32], i64 }, ptr %0, i64 %146 + %149 = getelementptr i8, ptr %148, i64 24 + %.val7.i = load i64, ptr %149, align 8, !alias.scope !4227, !noalias !4232, !noundef !12 + %150 = getelementptr i8, ptr %148, i64 8 + %.val8.i = load i64, ptr %150, align 8, !alias.scope !4234, !noalias !4235, !noundef !12 + %151 = icmp slt i64 %.val7.i, %.val8.i + br i1 %151, label %152, label %_ZN5rayon5slice9mergesort11insert_head17h95147180a0eb705aE.exit + +152: ; preds = %.lr.ph90 + %153 = getelementptr inbounds nuw i8, ptr %148, i64 16 + %154 = load i32, ptr %148, align 8, !alias.scope !4236, !noundef !12 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %148, ptr noundef nonnull align 8 dereferenceable(16) %153, i64 16, i1 false), !alias.scope !4236 + %.not.i58 = icmp eq i64 %147, 2 br i1 %.not.i58, label %._crit_edge.i, label %.lr.ph.i.preheader -.lr.ph.i.preheader: ; preds = %153 - %156 = getelementptr i8, ptr %149, i64 40 - %.val.i85 = load i64, ptr %156, align 8, !alias.scope !4227, !noalias !4232, !noundef !12 - %157 = icmp slt i64 %.val.i85, %.val8.i - br i1 %157, label %.lr.ph.preheader, label %._crit_edge.i +.lr.ph.i.preheader: ; preds = %152 + %155 = getelementptr i8, ptr %148, i64 40 + %.val.i85 = load i64, ptr %155, align 8, !alias.scope !4227, !noalias !4232, !noundef !12 + %156 = icmp slt i64 %.val.i85, %.val8.i + br i1 %156, label %.lr.ph.preheader, label %._crit_edge.i .lr.ph.preheader: ; preds = %.lr.ph.i.preheader - %158 = getelementptr inbounds nuw i8, ptr %149, i64 32 + %157 = getelementptr inbounds nuw i8, ptr %148, i64 32 br label %.lr.ph -._crit_edge.i: ; preds = %.lr.ph.i, %.lr.ph, %.lr.ph.i.preheader, %153 - %.sroa.5.0.lcssa.i = phi ptr [ %154, %153 ], [ %154, %.lr.ph.i.preheader ], [ %162, %.lr.ph ], [ %162, %.lr.ph.i ] - store i32 %155, ptr %.sroa.5.0.lcssa.i, align 8, !alias.scope !4236 +._crit_edge.i: ; preds = %.lr.ph.i, %.lr.ph, %.lr.ph.i.preheader, %152 + %.sroa.5.0.lcssa.i = phi ptr [ %153, %152 ], [ %153, %.lr.ph.i.preheader ], [ %161, %.lr.ph ], [ %161, %.lr.ph.i ] + store i32 %154, ptr %.sroa.5.0.lcssa.i, align 8, !alias.scope !4236 %.sroa.54.0..sroa.5.0.sroa_idx5.i = getelementptr inbounds nuw i8, ptr %.sroa.5.0.lcssa.i, i64 8 store i64 %.val8.i, ptr %.sroa.54.0..sroa.5.0.sroa_idx5.i, align 8, !alias.scope !4236 br label %_ZN5rayon5slice9mergesort11insert_head17h95147180a0eb705aE.exit .lr.ph.i: ; preds = %.lr.ph - %159 = getelementptr inbounds nuw { i32, [1 x i32], i64 }, ptr %149, i64 %163 - %160 = getelementptr i8, ptr %159, i64 8 - %.val.i = load i64, ptr %160, align 8, !alias.scope !4227, !noalias !4232, !noundef !12 - %161 = icmp slt i64 %.val.i, %.val8.i - br i1 %161, label %.lr.ph, label %._crit_edge.i + %158 = getelementptr inbounds nuw { i32, [1 x i32], i64 }, ptr %148, i64 %162 + %159 = getelementptr i8, ptr %158, i64 8 + %.val.i = load i64, ptr %159, align 8, !alias.scope !4227, !noalias !4232, !noundef !12 + %160 = icmp slt i64 %.val.i, %.val8.i + br i1 %160, label %.lr.ph, label %._crit_edge.i .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph.i - %162 = phi ptr [ %159, %.lr.ph.i ], [ %158, %.lr.ph.preheader ] - %.sroa.01.09.i86 = phi i64 [ %163, %.lr.ph.i ], [ 2, %.lr.ph.preheader ] - %163 = add nuw nsw i64 %.sroa.01.09.i86, 1 - %164 = getelementptr i8, ptr %162, i64 -16 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %164, ptr noundef nonnull align 8 dereferenceable(16) %162, i64 16, i1 false), !alias.scope !4236 - %exitcond.not.i = icmp eq i64 %163, %148 + %161 = phi ptr [ %158, %.lr.ph.i ], [ %157, %.lr.ph.preheader ] + %.sroa.01.09.i86 = phi i64 [ %162, %.lr.ph.i ], [ 2, %.lr.ph.preheader ] + %162 = add nuw nsw i64 %.sroa.01.09.i86, 1 + %163 = getelementptr i8, ptr %161, i64 -16 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %163, ptr noundef nonnull align 8 dereferenceable(16) %161, i64 16, i1 false), !alias.scope !4236 + %exitcond.not.i = icmp eq i64 %162, %147 br i1 %exitcond.not.i, label %._crit_edge.i, label %.lr.ph.i -_ZN5rayon5slice9mergesort11insert_head17h95147180a0eb705aE.exit: ; preds = %146, %._crit_edge.i - %.not43 = icmp eq i64 %147, 0 - br i1 %.not43, label %.loopexit, label %146 +_ZN5rayon5slice9mergesort11insert_head17h95147180a0eb705aE.exit: ; preds = %.lr.ph90, %._crit_edge.i + %.not43 = icmp eq i64 %146, 0 + br i1 %.not43, label %.loopexit, label %.lr.ph90 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/pola-rs/optimized/axiz6cr4x03l4ii2cmor4g5gv.ll b/bench/pola-rs/optimized/axiz6cr4x03l4ii2cmor4g5gv.ll index 1470fbe95bb..3165eb39612 100644 --- a/bench/pola-rs/optimized/axiz6cr4x03l4ii2cmor4g5gv.ll +++ b/bench/pola-rs/optimized/axiz6cr4x03l4ii2cmor4g5gv.ll @@ -20764,7 +20764,7 @@ _ZN4core4iter6traits8iterator8Iterator7collect17h630aa74a7515678bE.exit: ; preds br label %80 80: ; preds = %89, %75 - %81 = phi i64 [ %.pre167, %89 ], [ %56, %75 ] + %81 = phi i64 [ %.pre166, %89 ], [ %56, %75 ] %82 = phi ptr [ %.pre, %89 ], [ %58, %75 ] %.idx = mul nuw nsw i64 %81, 40 %83 = getelementptr inbounds nuw i8, ptr %82, i64 %.idx @@ -20812,7 +20812,7 @@ _ZN4core4iter6traits8iterator8Iterator7collect17h630aa74a7515678bE.exit: ; preds 89: ; preds = %._crit_edge call void @llvm.lifetime.end.p0(ptr nonnull %11) %.pre = load ptr, ptr %54, align 8 - %.pre167 = load i64, ptr %55, align 8 + %.pre166 = load i64, ptr %55, align 8 br label %80 90: ; preds = %.lr.ph @@ -20881,11 +20881,11 @@ _ZN4core4iter6traits8iterator8Iterator7collect17h630aa74a7515678bE.exit: ; preds call void @llvm.experimental.noalias.scope.decl(metadata !1266) %119 = getelementptr inbounds nuw i8, ptr %.sroa.476.0.copyload, i64 40 store ptr %119, ptr %.sroa.2.0..sroa_idx, align 8, !alias.scope !1266, !noalias !1269 - %.sroa.078.0.copyload79173 = load ptr, ptr %.sroa.476.0.copyload, align 8, !noalias !1266 - %.not53174 = icmp eq ptr %.sroa.078.0.copyload79173, null - br i1 %.not53174, label %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h390bf5f38b941292E.exit.thread", label %.lr.ph176 + %.sroa.078.0.copyload79172 = load ptr, ptr %.sroa.476.0.copyload, align 8, !noalias !1266 + %.not53173 = icmp eq ptr %.sroa.078.0.copyload79172, null + br i1 %.not53173, label %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h390bf5f38b941292E.exit.thread", label %.lr.ph175 -120: ; preds = %._crit_edge160, %.lr.ph176 +120: ; preds = %._crit_edge160, %.lr.ph175 %121 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr109drop_in_place$LT$alloc..vec..into_iter..IntoIter$LT$polars_arrow..bitmap..iterator..FastU64BitmapIter$GT$$GT$17h55380547a94325efE"(ptr noalias noundef nonnull align 8 dereferenceable(32) %18) #32 @@ -20897,13 +20897,13 @@ _ZN4core4iter6traits8iterator8Iterator7collect17h630aa74a7515678bE.exit: ; preds store ptr %122, ptr %.sroa.2.0..sroa_idx, align 8, !alias.scope !1271, !noalias !1269 %.sroa.078.0.copyload79 = load ptr, ptr %189, align 8, !noalias !1271 %.not53 = icmp eq ptr %.sroa.078.0.copyload79, null - br i1 %.not53, label %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h390bf5f38b941292E.exit.thread.loopexit.loopexit", label %.lr.ph176 + br i1 %.not53, label %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h390bf5f38b941292E.exit.thread.loopexit.loopexit", label %.lr.ph175 -.lr.ph176: ; preds = %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h390bf5f38b941292E.exit.lr.ph", %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h390bf5f38b941292E.exit" - %.sroa.078.0.copyload79175 = phi ptr [ %.sroa.078.0.copyload79, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h390bf5f38b941292E.exit" ], [ %.sroa.078.0.copyload79173, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h390bf5f38b941292E.exit.lr.ph" ] +.lr.ph175: ; preds = %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h390bf5f38b941292E.exit.lr.ph", %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h390bf5f38b941292E.exit" + %.sroa.078.0.copyload79174 = phi ptr [ %.sroa.078.0.copyload79, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h390bf5f38b941292E.exit" ], [ %.sroa.078.0.copyload79172, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h390bf5f38b941292E.exit.lr.ph" ] %123 = phi ptr [ %189, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h390bf5f38b941292E.exit" ], [ %.sroa.476.0.copyload, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h390bf5f38b941292E.exit.lr.ph" ] %.sroa.7.0..sroa_idx80 = getelementptr inbounds nuw i8, ptr %123, i64 8 - store ptr %.sroa.078.0.copyload79175, ptr %17, align 8 + store ptr %.sroa.078.0.copyload79174, ptr %17, align 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.7.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.7.0..sroa_idx80, i64 32, i1 false) call void @llvm.lifetime.start.p0(ptr nonnull %16) invoke void @_ZN12polars_arrow6bitmap8iterator17FastU64BitmapIter9remainder17hfaed614d83fefdf8E(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %16, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(40) %17) @@ -21108,7 +21108,7 @@ _ZN4core4iter6traits8iterator8Iterator7collect17h630aa74a7515678bE.exit: ; preds invoke void @"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17ha0a5a3fda5bf2160E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %13) #32 to label %.thread145 unwind label %169 -.lr.ph159.preheader: ; preds = %.lr.ph176 +.lr.ph159.preheader: ; preds = %.lr.ph175 call void @llvm.lifetime.start.p0(ptr nonnull %15) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.585.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(16) %16, i64 16, i1 false) %172 = load i64, ptr %117, align 8, !noundef !3 diff --git a/bench/quantlib/optimized/capletcoterminalmaxhomogeneity.ll b/bench/quantlib/optimized/capletcoterminalmaxhomogeneity.ll index 1703f0a9d57..825d97e9152 100644 --- a/bench/quantlib/optimized/capletcoterminalmaxhomogeneity.ll +++ b/bench/quantlib/optimized/capletcoterminalmaxhomogeneity.ll @@ -2065,16 +2065,16 @@ _ZNSt16allocator_traitsISaISt6vectorIdSaIdEEEE9constructIS2_JRKS2_EEEvRS3_PT_DpO %58 = load ptr, ptr %_M_finish.i272, align 8, !tbaa !77 %incdec.ptr.i = getelementptr inbounds nuw i8, ptr %58, i64 24 store ptr %incdec.ptr.i, ptr %_M_finish.i272, align 8, !tbaa !77 - br label %_ZNSt6vectorIS_IdSaIdEESaIS1_EE9push_backERKS1_.exit + br label %_ZNSt6vectorIS_IdSaIdEESaIS1_EE9push_backERKS1_.exit.split if.else.i: ; preds = %invoke.cont132 invoke void @_ZNSt6vectorIS_IdSaIdEESaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %newVols, ptr %53, ptr noundef nonnull align 8 dereferenceable(24) %firstRateVols) - to label %_ZNSt6vectorIS_IdSaIdEESaIS1_EE9push_backERKS1_.exit unwind label %lpad135 + to label %_ZNSt6vectorIS_IdSaIdEESaIS1_EE9push_backERKS1_.exit.split unwind label %lpad135 -_ZNSt6vectorIS_IdSaIdEESaIS1_EE9push_backERKS1_.exit: ; preds = %if.else.i, %_ZNSt16allocator_traitsISaISt6vectorIdSaIdEEEE9constructIS2_JRKS2_EEEvRS3_PT_DpOT0_.exit.i +_ZNSt6vectorIS_IdSaIdEESaIS1_EE9push_backERKS1_.exit.split: ; preds = %_ZNSt16allocator_traitsISaISt6vectorIdSaIdEEEE9constructIS2_JRKS2_EEEvRS3_PT_DpOT0_.exit.i, %if.else.i br i1 %cmp.i.i.i.i.i.i.i, label %for.cond.cleanup140, label %for.body141.lr.ph -for.body141.lr.ph: ; preds = %_ZNSt6vectorIS_IdSaIdEESaIS1_EE9push_backERKS1_.exit +for.body141.lr.ph: ; preds = %_ZNSt6vectorIS_IdSaIdEESaIS1_EE9push_backERKS1_.exit.split %columns_.i.i290 = getelementptr inbounds nuw i8, ptr %invertedZedMatrix, i64 16 %n_.i.i = getelementptr inbounds nuw i8, ptr %cylinderCentre.i, i64 8 %n_.i198.i = getelementptr inbounds nuw i8, ptr %targetArray.i, i64 8 @@ -2097,8 +2097,8 @@ for.body141.lr.ph: ; preds = %_ZNSt6vectorIS_IdSa %cmp30.i = fcmp olt double %caplet0Swaption1Priority, 5.000000e-01 br label %for.body141 -for.cond.cleanup140: ; preds = %invoke.cont248, %_ZNSt6vectorIS_IdSaIdEESaIS1_EE9push_backERKS1_.exit - %failures.0.lcssa = phi i32 [ 0, %_ZNSt6vectorIS_IdSaIdEESaIS1_EE9push_backERKS1_.exit ], [ %spec.select, %invoke.cont248 ] +for.cond.cleanup140: ; preds = %invoke.cont248, %_ZNSt6vectorIS_IdSaIdEESaIS1_EE9push_backERKS1_.exit.split + %failures.0.lcssa = phi i32 [ 0, %_ZNSt6vectorIS_IdSaIdEESaIS1_EE9push_backERKS1_.exit.split ], [ %spec.select, %invoke.cont248 ] %_M_finish.i.i = getelementptr inbounds nuw i8, ptr %swapCovariancePseudoRoots, i64 8 %59 = load ptr, ptr %_M_finish.i.i, align 8, !tbaa !79 %60 = load ptr, ptr %swapCovariancePseudoRoots, align 8, !tbaa !80 @@ -2482,17 +2482,6 @@ for.body.i: ; preds = %for.cond.cleanup210 br i1 %exitcond.not.i, label %for.end.i, label %for.body.i, !llvm.loop !94 for.end.i: ; preds = %for.body.i - %cmp.i.i.i307 = icmp ugt i64 %i137.0913, 1152921504606846974 - br i1 %cmp.i.i.i307, label %if.then.i.i.i, label %if.then.i.i.i.i.i.i - -if.then.i.i.i: ; preds = %for.end.i - invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.22) #22 - to label %.noexc328 unwind label %lpad224.loopexit.split-lp - -.noexc328: ; preds = %if.then.i.i.i - unreachable - -if.then.i.i.i.i.i.i: ; preds = %for.end.i %add.ptr.i191.i = getelementptr inbounds nuw double, ptr %call5.i.i.i.i2.i.i249, i64 %add %116 = load double, ptr %add.ptr.i191.i, align 8, !tbaa !74 %mul.i.i.i.i.i.i.i = shl nuw nsw i64 %add, 3 @@ -2501,7 +2490,7 @@ if.then.i.i.i.i.i.i: ; preds = %for.end.i %call.i194.i = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %mul.i.i.i.i.i.i.i) #25 to label %cond.true.i196.i unwind label %ehcleanup376.thread.i -cond.true.i196.i: ; preds = %if.then.i.i.i.i.i.i +cond.true.i196.i: ; preds = %for.end.i %mul111110113.i = fmul double %84, %84 store ptr %call.i194.i, ptr %cylinderCentre.i, align 8, !tbaa !70 store i64 %add, ptr %n_.i.i, align 8, !tbaa !95 @@ -2540,7 +2529,7 @@ for.cond.cleanup.i: ; preds = %for.body126.i %cmp165.i = fcmp ogt double %sub164.i, 0.000000e+00 br i1 %cmp165.i, label %cond.true.i, label %cond.end.i -ehcleanup376.thread.i: ; preds = %if.then.i.i.i.i.i.i +ehcleanup376.thread.i: ; preds = %for.end.i %122 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(ptr nonnull %cylinderCentre.i) @@ -3241,7 +3230,7 @@ lpad224.loopexit: ; preds = %if.then.i319, %.noe cleanup br label %ehcleanup423 -lpad224.loopexit.split-lp: ; preds = %if.then3.i.i.i.i.i.i.i.i.i359.invoke, %if.then.i.i.i +lpad224.loopexit.split-lp: ; preds = %if.then3.i.i.i.i.i.i.i.i.i359.invoke %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup br label %ehcleanup423 diff --git a/bench/quantlib/optimized/garch.ll b/bench/quantlib/optimized/garch.ll index 1e51ff4db7d..3c7c58f646a 100644 --- a/bench/quantlib/optimized/garch.ll +++ b/bench/quantlib/optimized/garch.ll @@ -883,24 +883,15 @@ if.then.i.i.i.i.i: ; preds = %_ZN8QuantLib5ArrayC call5.i.i.i.i2.i.i.noexc: ; preds = %if.then.i.i.i.i.i store double 0.000000e+00, ptr %call5.i.i.i.i2.i.i125, align 8, !tbaa !21 %incdec.ptr.i.i.i.i.i = getelementptr i8, ptr %call5.i.i.i.i2.i.i125, i64 8 - %sub.i.i.i.i.i = add nsw i64 %sub.ptr.div.i, -1 - %cmp.i.i.i.i.i.i.i = icmp eq i64 %sub.i.i.i.i.i, 0 - br i1 %cmp.i.i.i.i.i.i.i, label %invoke.cont71, 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.idx.i.i.i.i.i.i.i = shl nuw nsw i64 %sub.i.i.i.i.i, 3 + %add.ptr.idx.i.i.i.i.i.i.i = add 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 %add.ptr.idx.i.i.i.i.i.i.i, i1 false), !tbaa !21 - %add.ptr.i.i.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %incdec.ptr.i.i.i.i.i, i64 %add.ptr.idx.i.i.i.i.i.i.i - br label %invoke.cont71 - -invoke.cont71: ; preds = %if.end.i.i.i.i.i.i.i, %call5.i.i.i.i2.i.i.noexc - %__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.i.i.i.i, %if.end.i.i.i.i.i.i.i ] + %add.ptr.i.i.i.i.i.i.i = getelementptr i8, ptr %call5.i.i.i.i2.i.i125, i64 %sub.ptr.sub.i %cmp.i.not5.i = icmp eq ptr %1, %0 br i1 %cmp.i.not5.i, label %invoke.cont87, label %for.body.i -for.body.i: ; preds = %invoke.cont71, %for.body.i - %__first.sroa.0.07.i = phi ptr [ %incdec.ptr.i.i, %for.body.i ], [ %1, %invoke.cont71 ] - %__result.sroa.0.06.i = phi ptr [ %incdec.ptr.i1.i, %for.body.i ], [ %call5.i.i.i.i2.i.i125, %invoke.cont71 ] +for.body.i: ; preds = %call5.i.i.i.i2.i.i.noexc, %for.body.i + %__first.sroa.0.07.i = phi ptr [ %incdec.ptr.i.i, %for.body.i ], [ %1, %call5.i.i.i.i2.i.i.noexc ] + %__result.sroa.0.06.i = phi ptr [ %incdec.ptr.i1.i, %for.body.i ], [ %call5.i.i.i.i2.i.i125, %call5.i.i.i.i2.i.i.noexc ] %39 = load double, ptr %__first.sroa.0.07.i, align 8, !tbaa !21 %sub.i.i = fsub double %39, %mean_r2 store double %sub.i.i, ptr %__result.sroa.0.06.i, align 8, !tbaa !21 @@ -909,8 +900,8 @@ for.body.i: ; preds = %invoke.cont71, %for %cmp.i.not.i = icmp eq ptr %incdec.ptr.i.i, %0 br i1 %cmp.i.not.i, label %invoke.cont87, label %for.body.i, !llvm.loop !55 -invoke.cont87: ; preds = %for.body.i, %invoke.cont71 - invoke void @_ZN8QuantLib15autocovariancesIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEES3_EEvT_S8_T0_m(ptr nonnull %call5.i.i.i.i2.i.i125, ptr %__first.addr.0.i.i.i.i.i, ptr noundef %cond.i, i64 noundef %conv67) +invoke.cont87: ; preds = %for.body.i, %call5.i.i.i.i2.i.i.noexc + invoke void @_ZN8QuantLib15autocovariancesIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEES3_EEvT_S8_T0_m(ptr nonnull %call5.i.i.i.i2.i.i125, ptr %add.ptr.i.i.i.i.i.i.i, ptr noundef %cond.i, i64 noundef %conv67) to label %do.body101 unwind label %lpad86 do.body101: ; preds = %invoke.cont87 diff --git a/bench/quantlib/optimized/multiproductmultistep.ll b/bench/quantlib/optimized/multiproductmultistep.ll index d1754b10fa9..c69e4cb6c08 100644 --- a/bench/quantlib/optimized/multiproductmultistep.ll +++ b/bench/quantlib/optimized/multiproductmultistep.ll @@ -259,15 +259,11 @@ if.then.i.i33: ; preds = %do.end _ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i: ; preds = %do.end %23 = getelementptr inbounds nuw i8, ptr %evolutionTimes, i64 8 store i64 0, ptr %23, align 8 - %cmp.not.i.i.i.i = icmp eq i64 %sub, 0 - br i1 %cmp.not.i.i.i.i, label %invoke.cont38.thread, label %if.then.i.i.i.i.i - -if.then.i.i.i.i.i: ; preds = %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i %mul.i.i.i.i.i.i = shl nuw nsw i64 %sub, 3 %call5.i.i.i.i2.i.i34 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %mul.i.i.i.i.i.i) #20 to label %call5.i.i.i.i2.i.i.noexc unwind label %lpad32 -call5.i.i.i.i2.i.i.noexc: ; preds = %if.then.i.i.i.i.i +call5.i.i.i.i2.i.i.noexc: ; preds = %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i store ptr %call5.i.i.i.i2.i.i34, ptr %evolutionTimes, align 8, !tbaa !6 %add.ptr.i.i.i = getelementptr inbounds nuw double, ptr %call5.i.i.i.i2.i.i34, i64 %sub %_M_end_of_storage.i.i.i = getelementptr inbounds nuw i8, ptr %evolutionTimes, i64 16 @@ -301,51 +297,44 @@ _ZNSt6vectorISt4pairImmESaIS1_EE17_S_check_init_lenEmRKS2_.exit.i: ; preds = %ca call void @llvm.lifetime.start.p0(ptr nonnull %relevanceRates) br label %for.inc.preheader.i.i.i.i.i -invoke.cont38.thread: ; preds = %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %evolutionTimes, i8 0, i64 24, i1 false) - call void @llvm.lifetime.start.p0(ptr nonnull %relevanceRates) - %24 = getelementptr inbounds nuw i8, ptr %relevanceRates, i64 16 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %relevanceRates, i8 0, i64 24, i1 false) - br label %for.cond.cleanup - for.inc.preheader.i.i.i.i.i: ; preds = %invoke.cont33, %_ZNSt6vectorISt4pairImmESaIS1_EE17_S_check_init_lenEmRKS2_.exit.i %mul.i.i.i.i.i.i37 = shl nuw nsw i64 %sub, 4 %call5.i.i.i.i2.i.i43 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %mul.i.i.i.i.i.i37) #20 - to label %invoke.cont48.lr.ph unwind label %lpad37 + to label %call5.i.i.i.i2.i.i.noexc42 unwind label %lpad37 -invoke.cont48.lr.ph: ; preds = %for.inc.preheader.i.i.i.i.i +call5.i.i.i.i2.i.i.noexc42: ; preds = %for.inc.preheader.i.i.i.i.i store ptr %call5.i.i.i.i2.i.i43, ptr %relevanceRates, align 8, !tbaa !19 %add.ptr.i.i.i38 = getelementptr inbounds nuw %"struct.std::pair", ptr %call5.i.i.i.i2.i.i43, i64 %sub tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %call5.i.i.i.i2.i.i43, i8 0, i64 %mul.i.i.i.i.i.i37, i1 false) %scevgep.i.i.i.i.i = getelementptr i8, ptr %call5.i.i.i.i2.i.i43, i64 %mul.i.i.i.i.i.i37 %_M_finish.i.i7.i39 = getelementptr inbounds nuw i8, ptr %relevanceRates, i64 8 - %25 = getelementptr inbounds nuw i8, ptr %relevanceRates, i64 16 - store ptr %add.ptr.i.i.i38, ptr %25, align 8, !tbaa !21 + %24 = getelementptr inbounds nuw i8, ptr %relevanceRates, i64 16 + store ptr %add.ptr.i.i.i38, ptr %24, align 8, !tbaa !21 store ptr %scevgep.i.i.i.i.i, ptr %_M_finish.i.i7.i39, align 8, !tbaa !22 - br label %invoke.cont48 + %cmp41103.not = icmp eq i64 %sub, 0 + br i1 %cmp41103.not, label %for.cond.cleanup, label %invoke.cont48 -for.cond.cleanup: ; preds = %invoke.cont48, %invoke.cont38.thread - %26 = phi ptr [ %24, %invoke.cont38.thread ], [ %25, %invoke.cont48 ] +for.cond.cleanup: ; preds = %invoke.cont48, %call5.i.i.i.i2.i.i.noexc42 call void @llvm.lifetime.start.p0(ptr nonnull %ref.tmp55) invoke void @_ZN8QuantLib20EvolutionDescriptionC1ERKSt6vectorIdSaIdEES5_RKS1_ISt4pairImmESaIS7_EE(ptr noundef nonnull align 8 dereferenceable(128) %ref.tmp55, ptr noundef nonnull align 8 dereferenceable(24) %rateTimes_, ptr noundef nonnull align 8 dereferenceable(24) %evolutionTimes, ptr noundef nonnull align 8 dereferenceable(24) %relevanceRates) to label %invoke.cont58 unwind label %lpad57 -lpad32: ; preds = %if.then.i.i.i.i.i, %if.then.i.i33 - %27 = landingpad { ptr, i32 } +lpad32: ; preds = %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i, %if.then.i.i33 + %25 = landingpad { ptr, i32 } cleanup br label %ehcleanup65 lpad37: ; preds = %for.inc.preheader.i.i.i.i.i, %if.then.i.i40 - %28 = landingpad { ptr, i32 } + %26 = landingpad { ptr, i32 } cleanup br label %ehcleanup63 -invoke.cont48: ; preds = %invoke.cont48.lr.ph, %invoke.cont48 - %storemerge104 = phi i64 [ 0, %invoke.cont48.lr.ph ], [ %add, %invoke.cont48 ] +invoke.cont48: ; preds = %call5.i.i.i.i2.i.i.noexc42, %invoke.cont48 + %storemerge104 = phi i64 [ %add, %invoke.cont48 ], [ 0, %call5.i.i.i.i2.i.i.noexc42 ] %add.ptr.i = getelementptr inbounds nuw double, ptr %4, i64 %storemerge104 - %29 = load double, ptr %add.ptr.i, align 8, !tbaa !17 + %27 = load double, ptr %add.ptr.i, align 8, !tbaa !17 %add.ptr.i44 = getelementptr inbounds nuw double, ptr %call5.i.i.i.i2.i.i34, i64 %storemerge104 - store double %29, ptr %add.ptr.i44, align 8, !tbaa !17 + store double %27, ptr %add.ptr.i44, align 8, !tbaa !17 %add = add nuw i64 %storemerge104, 1 %add.ptr.i45 = getelementptr inbounds nuw %"struct.std::pair", ptr %call5.i.i.i.i2.i.i43, i64 %storemerge104 store i64 %storemerge104, ptr %add.ptr.i45, align 8, !tbaa !23 @@ -357,106 +346,105 @@ invoke.cont48: ; preds = %invoke.cont48.lr.ph invoke.cont58: ; preds = %for.cond.cleanup %call60 = call noundef nonnull align 8 dereferenceable(128) ptr @_ZN8QuantLib20EvolutionDescriptionaSEOS0_(ptr noundef nonnull align 8 dereferenceable(128) %evolution_, ptr noundef nonnull align 8 dereferenceable(128) %ref.tmp55) #17 %firstAliveRate_.i = getelementptr inbounds nuw i8, ptr %ref.tmp55, i64 104 - %30 = load ptr, ptr %firstAliveRate_.i, align 8, !tbaa !28 - %tobool.not.i.i.i.i = icmp eq ptr %30, null + %28 = load ptr, ptr %firstAliveRate_.i, align 8, !tbaa !28 + %tobool.not.i.i.i.i = icmp eq ptr %28, null br i1 %tobool.not.i.i.i.i, label %_ZNSt6vectorImSaImEED2Ev.exit.i, label %if.then.i.i.i.i if.then.i.i.i.i: ; preds = %invoke.cont58 %_M_end_of_storage.i.i.i46 = getelementptr inbounds nuw i8, ptr %ref.tmp55, i64 120 - %31 = load ptr, ptr %_M_end_of_storage.i.i.i46, align 8, !tbaa !30 - %sub.ptr.lhs.cast.i.i.i = ptrtoint ptr %31 to i64 - %sub.ptr.rhs.cast.i.i.i = ptrtoint ptr %30 to i64 + %29 = load ptr, ptr %_M_end_of_storage.i.i.i46, align 8, !tbaa !30 + %sub.ptr.lhs.cast.i.i.i = ptrtoint ptr %29 to i64 + %sub.ptr.rhs.cast.i.i.i = ptrtoint ptr %28 to i64 %sub.ptr.sub.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i, %sub.ptr.rhs.cast.i.i.i - call void @_ZdlPvm(ptr noundef nonnull %30, i64 noundef %sub.ptr.sub.i.i.i) #19 + call void @_ZdlPvm(ptr noundef nonnull %28, i64 noundef %sub.ptr.sub.i.i.i) #19 br label %_ZNSt6vectorImSaImEED2Ev.exit.i _ZNSt6vectorImSaImEED2Ev.exit.i: ; preds = %if.then.i.i.i.i, %invoke.cont58 %rateTaus_.i = getelementptr inbounds nuw i8, ptr %ref.tmp55, i64 80 - %32 = load ptr, ptr %rateTaus_.i, align 8, !tbaa !6 - %tobool.not.i.i.i1.i = icmp eq ptr %32, null + %30 = load ptr, ptr %rateTaus_.i, align 8, !tbaa !6 + %tobool.not.i.i.i1.i = icmp eq ptr %30, null br i1 %tobool.not.i.i.i1.i, label %_ZNSt6vectorIdSaIdEED2Ev.exit.i, label %if.then.i.i.i2.i if.then.i.i.i2.i: ; preds = %_ZNSt6vectorImSaImEED2Ev.exit.i %_M_end_of_storage.i.i3.i = getelementptr inbounds nuw i8, ptr %ref.tmp55, i64 96 - %33 = load ptr, ptr %_M_end_of_storage.i.i3.i, align 8, !tbaa !11 - %sub.ptr.lhs.cast.i.i4.i = ptrtoint ptr %33 to i64 - %sub.ptr.rhs.cast.i.i5.i = ptrtoint ptr %32 to i64 + %31 = load ptr, ptr %_M_end_of_storage.i.i3.i, align 8, !tbaa !11 + %sub.ptr.lhs.cast.i.i4.i = ptrtoint ptr %31 to i64 + %sub.ptr.rhs.cast.i.i5.i = ptrtoint ptr %30 to i64 %sub.ptr.sub.i.i6.i = sub i64 %sub.ptr.lhs.cast.i.i4.i, %sub.ptr.rhs.cast.i.i5.i - call void @_ZdlPvm(ptr noundef nonnull %32, i64 noundef %sub.ptr.sub.i.i6.i) #19 + call void @_ZdlPvm(ptr noundef nonnull %30, i64 noundef %sub.ptr.sub.i.i6.i) #19 br label %_ZNSt6vectorIdSaIdEED2Ev.exit.i _ZNSt6vectorIdSaIdEED2Ev.exit.i: ; preds = %if.then.i.i.i2.i, %_ZNSt6vectorImSaImEED2Ev.exit.i %relevanceRates_.i = getelementptr inbounds nuw i8, ptr %ref.tmp55, i64 56 - %34 = load ptr, ptr %relevanceRates_.i, align 8, !tbaa !19 - %tobool.not.i.i.i7.i = icmp eq ptr %34, null + %32 = load ptr, ptr %relevanceRates_.i, align 8, !tbaa !19 + %tobool.not.i.i.i7.i = icmp eq ptr %32, null br i1 %tobool.not.i.i.i7.i, label %_ZNSt6vectorISt4pairImmESaIS1_EED2Ev.exit.i, label %if.then.i.i.i8.i if.then.i.i.i8.i: ; preds = %_ZNSt6vectorIdSaIdEED2Ev.exit.i %_M_end_of_storage.i.i9.i = getelementptr inbounds nuw i8, ptr %ref.tmp55, i64 72 - %35 = load ptr, ptr %_M_end_of_storage.i.i9.i, align 8, !tbaa !21 - %sub.ptr.lhs.cast.i.i10.i = ptrtoint ptr %35 to i64 - %sub.ptr.rhs.cast.i.i11.i = ptrtoint ptr %34 to i64 + %33 = load ptr, ptr %_M_end_of_storage.i.i9.i, align 8, !tbaa !21 + %sub.ptr.lhs.cast.i.i10.i = ptrtoint ptr %33 to i64 + %sub.ptr.rhs.cast.i.i11.i = ptrtoint ptr %32 to i64 %sub.ptr.sub.i.i12.i = sub i64 %sub.ptr.lhs.cast.i.i10.i, %sub.ptr.rhs.cast.i.i11.i - call void @_ZdlPvm(ptr noundef nonnull %34, i64 noundef %sub.ptr.sub.i.i12.i) #19 + call void @_ZdlPvm(ptr noundef nonnull %32, i64 noundef %sub.ptr.sub.i.i12.i) #19 br label %_ZNSt6vectorISt4pairImmESaIS1_EED2Ev.exit.i _ZNSt6vectorISt4pairImmESaIS1_EED2Ev.exit.i: ; preds = %if.then.i.i.i8.i, %_ZNSt6vectorIdSaIdEED2Ev.exit.i %evolutionTimes_.i = getelementptr inbounds nuw i8, ptr %ref.tmp55, i64 32 - %36 = load ptr, ptr %evolutionTimes_.i, align 8, !tbaa !6 - %tobool.not.i.i.i13.i = icmp eq ptr %36, null + %34 = load ptr, ptr %evolutionTimes_.i, align 8, !tbaa !6 + %tobool.not.i.i.i13.i = icmp eq ptr %34, null br i1 %tobool.not.i.i.i13.i, label %_ZNSt6vectorIdSaIdEED2Ev.exit19.i, label %if.then.i.i.i14.i if.then.i.i.i14.i: ; preds = %_ZNSt6vectorISt4pairImmESaIS1_EED2Ev.exit.i %_M_end_of_storage.i.i15.i = getelementptr inbounds nuw i8, ptr %ref.tmp55, i64 48 - %37 = load ptr, ptr %_M_end_of_storage.i.i15.i, align 8, !tbaa !11 - %sub.ptr.lhs.cast.i.i16.i = ptrtoint ptr %37 to i64 - %sub.ptr.rhs.cast.i.i17.i = ptrtoint ptr %36 to i64 + %35 = load ptr, ptr %_M_end_of_storage.i.i15.i, align 8, !tbaa !11 + %sub.ptr.lhs.cast.i.i16.i = ptrtoint ptr %35 to i64 + %sub.ptr.rhs.cast.i.i17.i = ptrtoint ptr %34 to i64 %sub.ptr.sub.i.i18.i = sub i64 %sub.ptr.lhs.cast.i.i16.i, %sub.ptr.rhs.cast.i.i17.i - call void @_ZdlPvm(ptr noundef nonnull %36, i64 noundef %sub.ptr.sub.i.i18.i) #19 + call void @_ZdlPvm(ptr noundef nonnull %34, i64 noundef %sub.ptr.sub.i.i18.i) #19 br label %_ZNSt6vectorIdSaIdEED2Ev.exit19.i _ZNSt6vectorIdSaIdEED2Ev.exit19.i: ; preds = %if.then.i.i.i14.i, %_ZNSt6vectorISt4pairImmESaIS1_EED2Ev.exit.i %rateTimes_.i47 = getelementptr inbounds nuw i8, ptr %ref.tmp55, i64 8 - %38 = load ptr, ptr %rateTimes_.i47, align 8, !tbaa !6 - %tobool.not.i.i.i20.i = icmp eq ptr %38, null + %36 = load ptr, ptr %rateTimes_.i47, align 8, !tbaa !6 + %tobool.not.i.i.i20.i = icmp eq ptr %36, null br i1 %tobool.not.i.i.i20.i, label %_ZN8QuantLib20EvolutionDescriptionD2Ev.exit, label %if.then.i.i.i21.i if.then.i.i.i21.i: ; preds = %_ZNSt6vectorIdSaIdEED2Ev.exit19.i %_M_end_of_storage.i.i22.i = getelementptr inbounds nuw i8, ptr %ref.tmp55, i64 24 - %39 = load ptr, ptr %_M_end_of_storage.i.i22.i, align 8, !tbaa !11 - %sub.ptr.lhs.cast.i.i23.i = ptrtoint ptr %39 to i64 - %sub.ptr.rhs.cast.i.i24.i = ptrtoint ptr %38 to i64 + %37 = load ptr, ptr %_M_end_of_storage.i.i22.i, align 8, !tbaa !11 + %sub.ptr.lhs.cast.i.i23.i = ptrtoint ptr %37 to i64 + %sub.ptr.rhs.cast.i.i24.i = ptrtoint ptr %36 to i64 %sub.ptr.sub.i.i25.i = sub i64 %sub.ptr.lhs.cast.i.i23.i, %sub.ptr.rhs.cast.i.i24.i - call void @_ZdlPvm(ptr noundef nonnull %38, i64 noundef %sub.ptr.sub.i.i25.i) #19 + call void @_ZdlPvm(ptr noundef nonnull %36, i64 noundef %sub.ptr.sub.i.i25.i) #19 br label %_ZN8QuantLib20EvolutionDescriptionD2Ev.exit _ZN8QuantLib20EvolutionDescriptionD2Ev.exit: ; preds = %_ZNSt6vectorIdSaIdEED2Ev.exit19.i, %if.then.i.i.i21.i call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp55) - %40 = load ptr, ptr %relevanceRates, align 8, !tbaa !19 - %tobool.not.i.i.i = icmp eq ptr %40, null + %38 = load ptr, ptr %relevanceRates, align 8, !tbaa !19 + %tobool.not.i.i.i = icmp eq ptr %38, null br i1 %tobool.not.i.i.i, label %_ZNSt6vectorISt4pairImmESaIS1_EED2Ev.exit, label %if.then.i.i.i if.then.i.i.i: ; preds = %_ZN8QuantLib20EvolutionDescriptionD2Ev.exit - %41 = load ptr, ptr %26, align 8, !tbaa !21 - %sub.ptr.lhs.cast.i.i = ptrtoint ptr %41 to i64 - %sub.ptr.rhs.cast.i.i = ptrtoint ptr %40 to i64 + %39 = load ptr, ptr %24, align 8, !tbaa !21 + %sub.ptr.lhs.cast.i.i = ptrtoint ptr %39 to i64 + %sub.ptr.rhs.cast.i.i = ptrtoint ptr %38 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 %40, i64 noundef %sub.ptr.sub.i.i) #19 + call void @_ZdlPvm(ptr noundef nonnull %38, i64 noundef %sub.ptr.sub.i.i) #19 br label %_ZNSt6vectorISt4pairImmESaIS1_EED2Ev.exit _ZNSt6vectorISt4pairImmESaIS1_EED2Ev.exit: ; preds = %_ZN8QuantLib20EvolutionDescriptionD2Ev.exit, %if.then.i.i.i call void @llvm.lifetime.end.p0(ptr nonnull %relevanceRates) - %42 = load ptr, ptr %evolutionTimes, align 8, !tbaa !6 - %tobool.not.i.i.i48 = icmp eq ptr %42, null + %40 = load ptr, ptr %evolutionTimes, align 8, !tbaa !6 + %tobool.not.i.i.i48 = icmp eq ptr %40, null br i1 %tobool.not.i.i.i48, label %_ZNSt6vectorIdSaIdEED2Ev.exit, label %if.then.i.i.i49 if.then.i.i.i49: ; preds = %_ZNSt6vectorISt4pairImmESaIS1_EED2Ev.exit - %_M_end_of_storage.i.i50 = getelementptr inbounds nuw i8, ptr %evolutionTimes, i64 16 - %43 = load ptr, ptr %_M_end_of_storage.i.i50, align 8, !tbaa !11 - %sub.ptr.lhs.cast.i.i51 = ptrtoint ptr %43 to i64 - %sub.ptr.rhs.cast.i.i52 = ptrtoint ptr %42 to i64 + %41 = load ptr, ptr %_M_end_of_storage.i.i.i, align 8, !tbaa !11 + %sub.ptr.lhs.cast.i.i51 = ptrtoint ptr %41 to i64 + %sub.ptr.rhs.cast.i.i52 = ptrtoint ptr %40 to i64 %sub.ptr.sub.i.i53 = sub i64 %sub.ptr.lhs.cast.i.i51, %sub.ptr.rhs.cast.i.i52 - call void @_ZdlPvm(ptr noundef nonnull %42, i64 noundef %sub.ptr.sub.i.i53) #19 + call void @_ZdlPvm(ptr noundef nonnull %40, i64 noundef %sub.ptr.sub.i.i53) #19 br label %_ZNSt6vectorIdSaIdEED2Ev.exit _ZNSt6vectorIdSaIdEED2Ev.exit: ; preds = %_ZNSt6vectorISt4pairImmESaIS1_EED2Ev.exit, %if.then.i.i.i49 @@ -464,55 +452,54 @@ _ZNSt6vectorIdSaIdEED2Ev.exit: ; preds = %_ZNSt6vectorISt4pai ret void lpad57: ; preds = %for.cond.cleanup - %44 = landingpad { ptr, i32 } + %42 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp55) - %45 = load ptr, ptr %relevanceRates, align 8, !tbaa !19 - %tobool.not.i.i.i54 = icmp eq ptr %45, null + %43 = load ptr, ptr %relevanceRates, align 8, !tbaa !19 + %tobool.not.i.i.i54 = icmp eq ptr %43, null br i1 %tobool.not.i.i.i54, label %ehcleanup63, label %if.then.i.i.i55 if.then.i.i.i55: ; preds = %lpad57 - %46 = load ptr, ptr %26, align 8, !tbaa !21 - %sub.ptr.lhs.cast.i.i57 = ptrtoint ptr %46 to i64 - %sub.ptr.rhs.cast.i.i58 = ptrtoint ptr %45 to i64 + %44 = load ptr, ptr %24, align 8, !tbaa !21 + %sub.ptr.lhs.cast.i.i57 = ptrtoint ptr %44 to i64 + %sub.ptr.rhs.cast.i.i58 = ptrtoint ptr %43 to i64 %sub.ptr.sub.i.i59 = sub i64 %sub.ptr.lhs.cast.i.i57, %sub.ptr.rhs.cast.i.i58 - call void @_ZdlPvm(ptr noundef nonnull %45, i64 noundef %sub.ptr.sub.i.i59) #19 + call void @_ZdlPvm(ptr noundef nonnull %43, i64 noundef %sub.ptr.sub.i.i59) #19 br label %ehcleanup63 ehcleanup63: ; preds = %if.then.i.i.i55, %lpad57, %lpad37 - %.pn8.pn = phi { ptr, i32 } [ %28, %lpad37 ], [ %44, %lpad57 ], [ %44, %if.then.i.i.i55 ] + %.pn8.pn = phi { ptr, i32 } [ %26, %lpad37 ], [ %42, %lpad57 ], [ %42, %if.then.i.i.i55 ] call void @llvm.lifetime.end.p0(ptr nonnull %relevanceRates) - %47 = load ptr, ptr %evolutionTimes, align 8, !tbaa !6 - %tobool.not.i.i.i61 = icmp eq ptr %47, null + %45 = load ptr, ptr %evolutionTimes, align 8, !tbaa !6 + %tobool.not.i.i.i61 = icmp eq ptr %45, null br i1 %tobool.not.i.i.i61, label %ehcleanup65, label %if.then.i.i.i62 if.then.i.i.i62: ; preds = %ehcleanup63 - %_M_end_of_storage.i.i63 = getelementptr inbounds nuw i8, ptr %evolutionTimes, i64 16 - %48 = load ptr, ptr %_M_end_of_storage.i.i63, align 8, !tbaa !11 - %sub.ptr.lhs.cast.i.i64 = ptrtoint ptr %48 to i64 - %sub.ptr.rhs.cast.i.i65 = ptrtoint ptr %47 to i64 + %46 = load ptr, ptr %_M_end_of_storage.i.i.i, align 8, !tbaa !11 + %sub.ptr.lhs.cast.i.i64 = ptrtoint ptr %46 to i64 + %sub.ptr.rhs.cast.i.i65 = ptrtoint ptr %45 to i64 %sub.ptr.sub.i.i66 = sub i64 %sub.ptr.lhs.cast.i.i64, %sub.ptr.rhs.cast.i.i65 - call void @_ZdlPvm(ptr noundef nonnull %47, i64 noundef %sub.ptr.sub.i.i66) #19 + call void @_ZdlPvm(ptr noundef nonnull %45, i64 noundef %sub.ptr.sub.i.i66) #19 br label %ehcleanup65 ehcleanup65: ; preds = %if.then.i.i.i62, %ehcleanup63, %lpad32 - %.pn8.pn.pn = phi { ptr, i32 } [ %27, %lpad32 ], [ %.pn8.pn, %ehcleanup63 ], [ %.pn8.pn, %if.then.i.i.i62 ] + %.pn8.pn.pn = phi { ptr, i32 } [ %25, %lpad32 ], [ %.pn8.pn, %ehcleanup63 ], [ %.pn8.pn, %if.then.i.i.i62 ] call void @llvm.lifetime.end.p0(ptr nonnull %evolutionTimes) br label %ehcleanup67 ehcleanup67: ; preds = %ehcleanup65, %ehcleanup28 %.pn8.pn.pn.pn = phi { ptr, i32 } [ %.pn8.pn.pn, %ehcleanup65 ], [ %.pn.pn.pn.pn.pn, %ehcleanup28 ] call void @_ZN8QuantLib20EvolutionDescriptionD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %evolution_) #17 - %49 = load ptr, ptr %rateTimes_, align 8, !tbaa !6 - %tobool.not.i.i.i68 = icmp eq ptr %49, null + %47 = load ptr, ptr %rateTimes_, align 8, !tbaa !6 + %tobool.not.i.i.i68 = icmp eq ptr %47, null br i1 %tobool.not.i.i.i68, label %_ZNSt6vectorIdSaIdEED2Ev.exit74, label %if.then.i.i.i69 if.then.i.i.i69: ; preds = %ehcleanup67 - %50 = load ptr, ptr %_M_end_of_storage.i.i.i.i, align 8, !tbaa !11 - %sub.ptr.lhs.cast.i.i71 = ptrtoint ptr %50 to i64 - %sub.ptr.rhs.cast.i.i72 = ptrtoint ptr %49 to i64 + %48 = load ptr, ptr %_M_end_of_storage.i.i.i.i, align 8, !tbaa !11 + %sub.ptr.lhs.cast.i.i71 = ptrtoint ptr %48 to i64 + %sub.ptr.rhs.cast.i.i72 = ptrtoint ptr %47 to i64 %sub.ptr.sub.i.i73 = sub i64 %sub.ptr.lhs.cast.i.i71, %sub.ptr.rhs.cast.i.i72 - call void @_ZdlPvm(ptr noundef nonnull %49, i64 noundef %sub.ptr.sub.i.i73) #19 + call void @_ZdlPvm(ptr noundef nonnull %47, i64 noundef %sub.ptr.sub.i.i73) #19 br label %_ZNSt6vectorIdSaIdEED2Ev.exit74 _ZNSt6vectorIdSaIdEED2Ev.exit74: ; preds = %ehcleanup67, %if.then.i.i.i69 diff --git a/bench/quinn-rs/optimized/em94uyxz0wp9gccfab963606p.ll b/bench/quinn-rs/optimized/em94uyxz0wp9gccfab963606p.ll index 56664d1a1e0..2f87150bbc7 100644 --- a/bench/quinn-rs/optimized/em94uyxz0wp9gccfab963606p.ll +++ b/bench/quinn-rs/optimized/em94uyxz0wp9gccfab963606p.ll @@ -4631,84 +4631,75 @@ define noundef zeroext i1 @_ZN11quinn_proto9range_set15array_range_set13ArrayRan ; Function Attrs: nonlazybind uwtable define void @_ZN11quinn_proto9range_set15array_range_set13ArrayRangeSet7pop_min17ha01941baa046b015E(ptr dead_on_unwind noalias noundef writable writeonly sret([24 x i8]) align 8 captures(none) dereferenceable(24) %0, ptr noalias noundef align 8 dereferenceable(48) %1) unnamed_addr #1 personality ptr @rust_eh_personality { - %3 = alloca [16 x i8], align 8 - %4 = load i64, ptr %1, align 8, !range !13, !noundef !3 - %5 = trunc nuw i64 %4 to i1 - br i1 %5, label %6, label %.thread + %3 = load i64, ptr %1, align 8, !range !13, !noundef !3 + %4 = trunc nuw i64 %3 to i1 + br i1 %4, label %5, label %.thread -6: ; preds = %2 - %7 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %8 = load i64, ptr %7, align 8, !noundef !3 - %9 = icmp ult i64 %8, 576460752303423488 - tail call void @llvm.assume(i1 %9) - %10 = icmp eq i64 %8, 0 - br i1 %10, label %14, label %15 +5: ; preds = %2 + %6 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %7 = load i64, ptr %6, align 8, !noundef !3 + %8 = icmp ult i64 %7, 576460752303423488 + tail call void @llvm.assume(i1 %8) + %9 = icmp eq i64 %7, 0 + br i1 %9, label %13, label %14 .thread: ; preds = %2 - %11 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %12 = load i16, ptr %11, align 8, !noundef !3 - %13 = icmp eq i16 %12, 0 - br i1 %13, label %14, label %.thread5 + %10 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %11 = load i16, ptr %10, align 8, !noundef !3 + %12 = icmp eq i16 %11, 0 + br i1 %12, label %13, label %.thread5 -14: ; preds = %.thread, %6, %32 - %storemerge = phi i64 [ 1, %32 ], [ 0, %6 ], [ 0, %.thread ] +13: ; preds = %.thread, %5, %28 + %storemerge = phi i64 [ 1, %28 ], [ 0, %5 ], [ 0, %.thread ] store i64 %storemerge, ptr %0, align 8 ret void -15: ; preds = %6 - %16 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %17 = tail call { i64, i64 } @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6remove17h03ac08bd636d4babE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %16, i64 noundef 0, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.dc71d0a5682d3db708e0e7797e95149f.163) - br label %32 +14: ; preds = %5 + %15 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %16 = tail call { i64, i64 } @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6remove17h03ac08bd636d4babE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %15, i64 noundef 0, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.dc71d0a5682d3db708e0e7797e95149f.163) + br label %28 .thread5: ; preds = %.thread tail call void @llvm.experimental.noalias.scope.decl(metadata !627) - %18 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %19 = zext i16 %12 to i64 - %20 = icmp ugt i16 %12, 2 - br i1 %20, label %21, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h8ecf2f929a490e68E.exit.i", !prof !17 + %17 = getelementptr inbounds nuw i8, ptr %1, i64 16 + %18 = icmp ugt i16 %11, 2 + br i1 %18, label %19, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h8ecf2f929a490e68E.exit.i", !prof !17 -21: ; preds = %.thread5 - tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h295f890f9c88ef86E(i64 noundef %19, i64 noundef 2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.dc71d0a5682d3db708e0e7797e95149f.101) #22, !noalias !630 +19: ; preds = %.thread5 + %20 = zext i16 %11 to i64 + tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h295f890f9c88ef86E(i64 noundef %20, i64 noundef 2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.dc71d0a5682d3db708e0e7797e95149f.101) #22, !noalias !630 unreachable "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h8ecf2f929a490e68E.exit.i": ; preds = %.thread5 - %22 = load i64, ptr %18, align 8, !alias.scope !627, !noundef !3 - %23 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %24 = load i64, ptr %23, align 8, !alias.scope !627, !noundef !3 - %25 = add nsw i64 %19, -1 - %.not11.i = icmp eq i64 %25, 0 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %18, i8 0, i64 16, i1 false), !alias.scope !627 - br i1 %.not11.i, label %"_ZN7tinyvec8arrayvec17ArrayVec$LT$A$GT$6remove17h42c06d89c20f132cE.exit", label %.lr.ph.i.preheader - -.lr.ph.i.preheader: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h8ecf2f929a490e68E.exit.i", %.lr.ph.i.preheader - %.sroa.01.010.i = phi i64 [ %26, %.lr.ph.i.preheader ], [ 0, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h8ecf2f929a490e68E.exit.i" ] - %26 = add nuw nsw i64 %.sroa.01.010.i, 1 - %27 = getelementptr inbounds nuw { i64, i64 }, ptr %18, i64 %.sroa.01.010.i - %28 = getelementptr inbounds nuw { i64, i64 }, ptr %18, i64 %26 - call void @llvm.lifetime.start.p0(ptr nonnull %3) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %27, i64 16, i1 false) - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %27, ptr noundef nonnull align 8 dereferenceable(16) %28, i64 16, i1 false), !alias.scope !627 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %28, ptr noundef nonnull align 8 dereferenceable(16) %3, i64 16, i1 false) - call void @llvm.lifetime.end.p0(ptr nonnull %3) - %exitcond13.not.i = icmp eq i64 %26, %25 - br i1 %exitcond13.not.i, label %"_ZN7tinyvec8arrayvec17ArrayVec$LT$A$GT$6remove17h42c06d89c20f132cE.exit", label %.lr.ph.i.preheader - -"_ZN7tinyvec8arrayvec17ArrayVec$LT$A$GT$6remove17h42c06d89c20f132cE.exit": ; preds = %.lr.ph.i.preheader, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h8ecf2f929a490e68E.exit.i" - %29 = add nsw i16 %12, -1 - store i16 %29, ptr %11, align 8, !alias.scope !627 - %30 = insertvalue { i64, i64 } poison, i64 %22, 0 - %31 = insertvalue { i64, i64 } %30, i64 %24, 1 - br label %32 + %21 = load i64, ptr %17, align 8, !alias.scope !627, !noundef !3 + %22 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %23 = load i64, ptr %22, align 8, !alias.scope !627, !noundef !3 + %.not11.i = icmp eq i16 %11, 1 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %17, i8 0, i64 16, i1 false), !alias.scope !627 + br i1 %.not11.i, label %"_ZN7tinyvec8arrayvec17ArrayVec$LT$A$GT$6remove17h42c06d89c20f132cE.exit", label %.lr.ph.i + +.lr.ph.i: ; preds = %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h8ecf2f929a490e68E.exit.i" + %24 = getelementptr inbounds nuw i8, ptr %1, i64 32 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull align 8 dereferenceable(16) %24, i64 16, i1 false), !alias.scope !627 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %24, i8 0, i64 16, i1 false) + br label %"_ZN7tinyvec8arrayvec17ArrayVec$LT$A$GT$6remove17h42c06d89c20f132cE.exit" + +"_ZN7tinyvec8arrayvec17ArrayVec$LT$A$GT$6remove17h42c06d89c20f132cE.exit": ; preds = %.lr.ph.i, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h8ecf2f929a490e68E.exit.i" + %25 = add nsw i16 %11, -1 + store i16 %25, ptr %10, align 8, !alias.scope !627 + %26 = insertvalue { i64, i64 } poison, i64 %21, 0 + %27 = insertvalue { i64, i64 } %26, i64 %23, 1 + br label %28 -32: ; preds = %"_ZN7tinyvec8arrayvec17ArrayVec$LT$A$GT$6remove17h42c06d89c20f132cE.exit", %15 - %.pn = phi { i64, i64 } [ %17, %15 ], [ %31, %"_ZN7tinyvec8arrayvec17ArrayVec$LT$A$GT$6remove17h42c06d89c20f132cE.exit" ] +28: ; preds = %"_ZN7tinyvec8arrayvec17ArrayVec$LT$A$GT$6remove17h42c06d89c20f132cE.exit", %14 + %.pn = phi { i64, i64 } [ %16, %14 ], [ %27, %"_ZN7tinyvec8arrayvec17ArrayVec$LT$A$GT$6remove17h42c06d89c20f132cE.exit" ] %.sroa.0.0 = extractvalue { i64, i64 } %.pn, 0 %.sroa.5.0 = extractvalue { i64, i64 } %.pn, 1 - %33 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %.sroa.0.0, ptr %33, align 8 - %34 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %.sroa.5.0, ptr %34, align 8 - br label %14 + %29 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 %.sroa.0.0, ptr %29, align 8 + %30 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store i64 %.sroa.5.0, ptr %30, align 8 + br label %13 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/rocksdb/optimized/experimental.ll b/bench/rocksdb/optimized/experimental.ll index 81434b08fbe..d429d778e0d 100644 --- a/bench/rocksdb/optimized/experimental.ll +++ b/bench/rocksdb/optimized/experimental.ll @@ -20320,10 +20320,10 @@ define internal fastcc void @_ZN7rocksdb12experimental12_GLOBAL__N_114GetFilterI %.sroa.019.0.extract.trunc = trunc i32 %0 to i16 %.sroa.2.0.extract.shift = lshr i32 %0, 16 %.sroa.2.0.extract.trunc = trunc i32 %.sroa.2.0.extract.shift to i8 - switch i8 %.sroa.2.0.extract.trunc, label %54 [ + switch i8 %.sroa.2.0.extract.trunc, label %53 [ i8 0, label %6 i8 1, label %8 - i8 2, label %31 + i8 2, label %30 i8 3, label %_ZSt5visitIZN7rocksdb12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS1_14SelectWholeKeyENS1_16SelectKeySegmentENS1_21SelectKeySegmentRangeENS1_21SelectLegacyKeyPrefixENS1_19SelectUserTimestampENS1_16SelectColumnNameEEERKNS0_5SliceERKNS1_20KeySegmentsExtractor6ResultEPSB_SI_E17FilterInputGetterJRSA_EENSt13invoke_resultIT_JDpNSt13__conditionalIX21is_lvalue_reference_vIT0_EEE4typeIRNSt19variant_alternativeILm0ENSt16remove_referenceIDTclsr9__variantE4__asclsr3stdE7declvalISO_EEEEE4typeEE4typeEOSX_EEEE4typeEOSM_DpOSO_.exit i8 4, label %_ZSt5visitIZN7rocksdb12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS1_14SelectWholeKeyENS1_16SelectKeySegmentENS1_21SelectKeySegmentRangeENS1_21SelectLegacyKeyPrefixENS1_19SelectUserTimestampENS1_16SelectColumnNameEEERKNS0_5SliceERKNS1_20KeySegmentsExtractor6ResultEPSB_SI_E17FilterInputGetterJRSA_EENSt13invoke_resultIT_JDpNSt13__conditionalIX21is_lvalue_reference_vIT0_EEE4typeIRNSt19variant_alternativeILm0ENSt16remove_referenceIDTclsr9__variantE4__asclsr3stdE7declvalISO_EEEEE4typeEE4typeEOSX_EEEE4typeEOSM_DpOSO_.exit i8 5, label %_ZSt5visitIZN7rocksdb12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS1_14SelectWholeKeyENS1_16SelectKeySegmentENS1_21SelectKeySegmentRangeENS1_21SelectLegacyKeyPrefixENS1_19SelectUserTimestampENS1_16SelectColumnNameEEERKNS0_5SliceERKNS1_20KeySegmentsExtractor6ResultEPSB_SI_E17FilterInputGetterJRSA_EENSt13invoke_resultIT_JDpNSt13__conditionalIX21is_lvalue_reference_vIT0_EEE4typeIRNSt19variant_alternativeILm0ENSt16remove_referenceIDTclsr9__variantE4__asclsr3stdE7declvalISO_EEEEE4typeEE4typeEOSX_EEEE4typeEOSM_DpOSO_.exit @@ -20364,106 +20364,104 @@ define internal fastcc void @_ZN7rocksdb12experimental12_GLOBAL__N_114GetFilterI 22: ; preds = %16, %15 %23 = phi i64 [ %21, %16 ], [ 0, %15 ] - %24 = add nsw i64 %13, -1 - %.sroa.speculated.i.i.i.i.i.i = tail call i64 @llvm.umin.i64(i64 %24, i64 %14) - %25 = getelementptr inbounds nuw i32, ptr %.val17.val.i.i, i64 %.sroa.speculated.i.i.i.i.i.i - %26 = load i32, ptr %25, align 4, !tbaa !102 - %27 = zext i32 %26 to i64 - %28 = load ptr, ptr %1, align 8, !tbaa !17 - %29 = getelementptr inbounds nuw i8, ptr %28, i64 %23 - %30 = sub nsw i64 %27, %23 + %24 = getelementptr inbounds nuw i32, ptr %.val17.val.i.i, i64 %14 + %25 = load i32, ptr %24, align 4, !tbaa !102 + %26 = zext i32 %25 to i64 + %27 = load ptr, ptr %1, align 8, !tbaa !17 + %28 = getelementptr inbounds nuw i8, ptr %27, i64 %23 + %29 = sub nsw i64 %26, %23 br label %_ZNSt8__detail9__variant17__gen_vtable_implINS0_12_Multi_arrayIPFNS0_21__deduce_visit_resultIN7rocksdb5SliceEEEOZNS4_12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS7_14SelectWholeKeyENS7_16SelectKeySegmentENS7_21SelectKeySegmentRangeENS7_21SelectLegacyKeyPrefixENS7_19SelectUserTimestampENS7_16SelectColumnNameEEERKS5_RKNS7_20KeySegmentsExtractor6ResultEPS5_SN_E17FilterInputGetterRSG_EJEEESt16integer_sequenceImJLm1EEEE14__visit_invokeESP_SQ_.exit.i.i _ZNSt8__detail9__variant17__gen_vtable_implINS0_12_Multi_arrayIPFNS0_21__deduce_visit_resultIN7rocksdb5SliceEEEOZNS4_12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS7_14SelectWholeKeyENS7_16SelectKeySegmentENS7_21SelectKeySegmentRangeENS7_21SelectLegacyKeyPrefixENS7_19SelectUserTimestampENS7_16SelectColumnNameEEERKS5_RKNS7_20KeySegmentsExtractor6ResultEPS5_SN_E17FilterInputGetterRSG_EJEEESt16integer_sequenceImJLm1EEEE14__visit_invokeESP_SQ_.exit.i.i: ; preds = %22, %8 - %.sroa.0.0.i.i.i.i.i.i = phi ptr [ %29, %22 ], [ @.str, %8 ] - %.sroa.3.0.i.i.i.i.i.i = phi i64 [ %30, %22 ], [ 0, %8 ] + %.sroa.0.0.i.i.i.i.i.i = phi ptr [ %28, %22 ], [ @.str, %8 ] + %.sroa.3.0.i.i.i.i.i.i = phi i64 [ %29, %22 ], [ 0, %8 ] %.fca.0.insert.i.i.i.i24.i.i = insertvalue { ptr, i64 } poison, ptr %.sroa.0.0.i.i.i.i.i.i, 0 %.fca.1.insert.i.i.i.i25.i.i = insertvalue { ptr, i64 } %.fca.0.insert.i.i.i.i24.i.i, i64 %.sroa.3.0.i.i.i.i.i.i, 1 br label %_ZSt5visitIZN7rocksdb12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS1_14SelectWholeKeyENS1_16SelectKeySegmentENS1_21SelectKeySegmentRangeENS1_21SelectLegacyKeyPrefixENS1_19SelectUserTimestampENS1_16SelectColumnNameEEERKNS0_5SliceERKNS1_20KeySegmentsExtractor6ResultEPSB_SI_E17FilterInputGetterJRSA_EENSt13invoke_resultIT_JDpNSt13__conditionalIX21is_lvalue_reference_vIT0_EEE4typeIRNSt19variant_alternativeILm0ENSt16remove_referenceIDTclsr9__variantE4__asclsr3stdE7declvalISO_EEEEE4typeEE4typeEOSX_EEEE4typeEOSM_DpOSO_.exit -31: ; preds = %5 +30: ; preds = %5 %.val21.val.i.i = load ptr, ptr %2, align 8, !tbaa !668 - %32 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %.val21.val23.i.i = load ptr, ptr %32, align 8, !tbaa !976 + %31 = getelementptr inbounds nuw i8, ptr %2, i64 8 + %.val21.val23.i.i = load ptr, ptr %31, align 8, !tbaa !976 %.sroa.4.0.extract.shift.i.i.i.i.i.i = lshr i16 %.sroa.019.0.extract.trunc, 8 %.sroa.4.0.extract.trunc.i.i.i.i.i.i = zext nneg i16 %.sroa.4.0.extract.shift.i.i.i.i.i.i to i64 - %33 = ptrtoint ptr %.val21.val23.i.i to i64 - %34 = ptrtoint ptr %.val21.val.i.i to i64 - %35 = sub i64 %33, %34 - %36 = ashr exact i64 %35, 2 + %32 = ptrtoint ptr %.val21.val23.i.i to i64 + %33 = ptrtoint ptr %.val21.val.i.i to i64 + %34 = sub i64 %32, %33 + %35 = ashr exact i64 %34, 2 %.sroa.0.0.extract.trunc.mask.i.i.i.i.i.i = and i16 %.sroa.019.0.extract.trunc, 255 - %37 = zext nneg i16 %.sroa.0.0.extract.trunc.mask.i.i.i.i.i.i to i64 - %.not.i.i.i.i26.i.i = icmp ugt i64 %36, %37 - br i1 %.not.i.i.i.i26.i.i, label %38, label %_ZNSt8__detail9__variant17__gen_vtable_implINS0_12_Multi_arrayIPFNS0_21__deduce_visit_resultIN7rocksdb5SliceEEEOZNS4_12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS7_14SelectWholeKeyENS7_16SelectKeySegmentENS7_21SelectKeySegmentRangeENS7_21SelectLegacyKeyPrefixENS7_19SelectUserTimestampENS7_16SelectColumnNameEEERKS5_RKNS7_20KeySegmentsExtractor6ResultEPS5_SN_E17FilterInputGetterRSG_EJEEESt16integer_sequenceImJLm2EEEE14__visit_invokeESP_SQ_.exit.i.i + %36 = zext nneg i16 %.sroa.0.0.extract.trunc.mask.i.i.i.i.i.i to i64 + %.not.i.i.i.i26.i.i = icmp ugt i64 %35, %36 + br i1 %.not.i.i.i.i26.i.i, label %37, label %_ZNSt8__detail9__variant17__gen_vtable_implINS0_12_Multi_arrayIPFNS0_21__deduce_visit_resultIN7rocksdb5SliceEEEOZNS4_12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS7_14SelectWholeKeyENS7_16SelectKeySegmentENS7_21SelectKeySegmentRangeENS7_21SelectLegacyKeyPrefixENS7_19SelectUserTimestampENS7_16SelectColumnNameEEERKS5_RKNS7_20KeySegmentsExtractor6ResultEPS5_SN_E17FilterInputGetterRSG_EJEEESt16integer_sequenceImJLm2EEEE14__visit_invokeESP_SQ_.exit.i.i -38: ; preds = %31 +37: ; preds = %30 %.not8.i.i.i.i.i.i = icmp eq i16 %.sroa.0.0.extract.trunc.mask.i.i.i.i.i.i, 0 - br i1 %.not8.i.i.i.i.i.i, label %45, label %39 - -39: ; preds = %38 - %40 = add nuw nsw i64 %37, 4294967295 - %41 = and i64 %40, 4294967295 - %42 = getelementptr inbounds nuw i32, ptr %.val21.val.i.i, i64 %41 - %43 = load i32, ptr %42, align 4, !tbaa !102 - %44 = zext i32 %43 to i64 - br label %45 + br i1 %.not8.i.i.i.i.i.i, label %44, label %38 -45: ; preds = %39, %38 - %46 = phi i64 [ %44, %39 ], [ 0, %38 ] - %47 = add nsw i64 %36, -1 - %.sroa.speculated.i.i.i.i31.i.i = tail call i64 @llvm.umin.i64(i64 %47, i64 %.sroa.4.0.extract.trunc.i.i.i.i.i.i) - %48 = getelementptr inbounds nuw i32, ptr %.val21.val.i.i, i64 %.sroa.speculated.i.i.i.i31.i.i - %49 = load i32, ptr %48, align 4, !tbaa !102 - %50 = zext i32 %49 to i64 - %51 = load ptr, ptr %1, align 8, !tbaa !17 - %52 = getelementptr inbounds nuw i8, ptr %51, i64 %46 - %53 = sub nsw i64 %50, %46 +38: ; preds = %37 + %39 = add nuw nsw i64 %36, 4294967295 + %40 = and i64 %39, 4294967295 + %41 = getelementptr inbounds nuw i32, ptr %.val21.val.i.i, i64 %40 + %42 = load i32, ptr %41, align 4, !tbaa !102 + %43 = zext i32 %42 to i64 + br label %44 + +44: ; preds = %38, %37 + %45 = phi i64 [ %43, %38 ], [ 0, %37 ] + %46 = add nsw i64 %35, -1 + %.sroa.speculated.i.i.i.i.i.i = tail call i64 @llvm.umin.i64(i64 %46, i64 %.sroa.4.0.extract.trunc.i.i.i.i.i.i) + %47 = getelementptr inbounds nuw i32, ptr %.val21.val.i.i, i64 %.sroa.speculated.i.i.i.i.i.i + %48 = load i32, ptr %47, align 4, !tbaa !102 + %49 = zext i32 %48 to i64 + %50 = load ptr, ptr %1, align 8, !tbaa !17 + %51 = getelementptr inbounds nuw i8, ptr %50, i64 %45 + %52 = sub nsw i64 %49, %45 br label %_ZNSt8__detail9__variant17__gen_vtable_implINS0_12_Multi_arrayIPFNS0_21__deduce_visit_resultIN7rocksdb5SliceEEEOZNS4_12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS7_14SelectWholeKeyENS7_16SelectKeySegmentENS7_21SelectKeySegmentRangeENS7_21SelectLegacyKeyPrefixENS7_19SelectUserTimestampENS7_16SelectColumnNameEEERKS5_RKNS7_20KeySegmentsExtractor6ResultEPS5_SN_E17FilterInputGetterRSG_EJEEESt16integer_sequenceImJLm2EEEE14__visit_invokeESP_SQ_.exit.i.i -_ZNSt8__detail9__variant17__gen_vtable_implINS0_12_Multi_arrayIPFNS0_21__deduce_visit_resultIN7rocksdb5SliceEEEOZNS4_12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS7_14SelectWholeKeyENS7_16SelectKeySegmentENS7_21SelectKeySegmentRangeENS7_21SelectLegacyKeyPrefixENS7_19SelectUserTimestampENS7_16SelectColumnNameEEERKS5_RKNS7_20KeySegmentsExtractor6ResultEPS5_SN_E17FilterInputGetterRSG_EJEEESt16integer_sequenceImJLm2EEEE14__visit_invokeESP_SQ_.exit.i.i: ; preds = %45, %31 - %.sroa.0.0.i.i.i.i27.i.i = phi ptr [ %52, %45 ], [ @.str, %31 ] - %.sroa.3.0.i.i.i.i28.i.i = phi i64 [ %53, %45 ], [ 0, %31 ] +_ZNSt8__detail9__variant17__gen_vtable_implINS0_12_Multi_arrayIPFNS0_21__deduce_visit_resultIN7rocksdb5SliceEEEOZNS4_12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS7_14SelectWholeKeyENS7_16SelectKeySegmentENS7_21SelectKeySegmentRangeENS7_21SelectLegacyKeyPrefixENS7_19SelectUserTimestampENS7_16SelectColumnNameEEERKS5_RKNS7_20KeySegmentsExtractor6ResultEPS5_SN_E17FilterInputGetterRSG_EJEEESt16integer_sequenceImJLm2EEEE14__visit_invokeESP_SQ_.exit.i.i: ; preds = %44, %30 + %.sroa.0.0.i.i.i.i27.i.i = phi ptr [ %51, %44 ], [ @.str, %30 ] + %.sroa.3.0.i.i.i.i28.i.i = phi i64 [ %52, %44 ], [ 0, %30 ] %.fca.0.insert.i.i.i.i29.i.i = insertvalue { ptr, i64 } poison, ptr %.sroa.0.0.i.i.i.i27.i.i, 0 %.fca.1.insert.i.i.i.i30.i.i = insertvalue { ptr, i64 } %.fca.0.insert.i.i.i.i29.i.i, i64 %.sroa.3.0.i.i.i.i28.i.i, 1 br label %_ZSt5visitIZN7rocksdb12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS1_14SelectWholeKeyENS1_16SelectKeySegmentENS1_21SelectKeySegmentRangeENS1_21SelectLegacyKeyPrefixENS1_19SelectUserTimestampENS1_16SelectColumnNameEEERKNS0_5SliceERKNS1_20KeySegmentsExtractor6ResultEPSB_SI_E17FilterInputGetterJRSA_EENSt13invoke_resultIT_JDpNSt13__conditionalIX21is_lvalue_reference_vIT0_EEE4typeIRNSt19variant_alternativeILm0ENSt16remove_referenceIDTclsr9__variantE4__asclsr3stdE7declvalISO_EEEEE4typeEE4typeEOSX_EEEE4typeEOSM_DpOSO_.exit -54: ; preds = %5 +53: ; preds = %5 unreachable _ZSt5visitIZN7rocksdb12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS1_14SelectWholeKeyENS1_16SelectKeySegmentENS1_21SelectKeySegmentRangeENS1_21SelectLegacyKeyPrefixENS1_19SelectUserTimestampENS1_16SelectColumnNameEEERKNS0_5SliceERKNS1_20KeySegmentsExtractor6ResultEPSB_SI_E17FilterInputGetterJRSA_EENSt13invoke_resultIT_JDpNSt13__conditionalIX21is_lvalue_reference_vIT0_EEE4typeIRNSt19variant_alternativeILm0ENSt16remove_referenceIDTclsr9__variantE4__asclsr3stdE7declvalISO_EEEEE4typeEE4typeEOSX_EEEE4typeEOSM_DpOSO_.exit: ; preds = %5, %5, %5, %6, %_ZNSt8__detail9__variant17__gen_vtable_implINS0_12_Multi_arrayIPFNS0_21__deduce_visit_resultIN7rocksdb5SliceEEEOZNS4_12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS7_14SelectWholeKeyENS7_16SelectKeySegmentENS7_21SelectKeySegmentRangeENS7_21SelectLegacyKeyPrefixENS7_19SelectUserTimestampENS7_16SelectColumnNameEEERKS5_RKNS7_20KeySegmentsExtractor6ResultEPS5_SN_E17FilterInputGetterRSG_EJEEESt16integer_sequenceImJLm1EEEE14__visit_invokeESP_SQ_.exit.i.i, %_ZNSt8__detail9__variant17__gen_vtable_implINS0_12_Multi_arrayIPFNS0_21__deduce_visit_resultIN7rocksdb5SliceEEEOZNS4_12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS7_14SelectWholeKeyENS7_16SelectKeySegmentENS7_21SelectKeySegmentRangeENS7_21SelectLegacyKeyPrefixENS7_19SelectUserTimestampENS7_16SelectColumnNameEEERKS5_RKNS7_20KeySegmentsExtractor6ResultEPS5_SN_E17FilterInputGetterRSG_EJEEESt16integer_sequenceImJLm2EEEE14__visit_invokeESP_SQ_.exit.i.i %.pn.i.i = phi { ptr, i64 } [ %.fca.1.insert.i.i.i.i.i.i, %6 ], [ %.fca.1.insert.i.i.i.i25.i.i, %_ZNSt8__detail9__variant17__gen_vtable_implINS0_12_Multi_arrayIPFNS0_21__deduce_visit_resultIN7rocksdb5SliceEEEOZNS4_12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS7_14SelectWholeKeyENS7_16SelectKeySegmentENS7_21SelectKeySegmentRangeENS7_21SelectLegacyKeyPrefixENS7_19SelectUserTimestampENS7_16SelectColumnNameEEERKS5_RKNS7_20KeySegmentsExtractor6ResultEPS5_SN_E17FilterInputGetterRSG_EJEEESt16integer_sequenceImJLm1EEEE14__visit_invokeESP_SQ_.exit.i.i ], [ %.fca.1.insert.i.i.i.i30.i.i, %_ZNSt8__detail9__variant17__gen_vtable_implINS0_12_Multi_arrayIPFNS0_21__deduce_visit_resultIN7rocksdb5SliceEEEOZNS4_12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS7_14SelectWholeKeyENS7_16SelectKeySegmentENS7_21SelectKeySegmentRangeENS7_21SelectLegacyKeyPrefixENS7_19SelectUserTimestampENS7_16SelectColumnNameEEERKS5_RKNS7_20KeySegmentsExtractor6ResultEPS5_SN_E17FilterInputGetterRSG_EJEEESt16integer_sequenceImJLm2EEEE14__visit_invokeESP_SQ_.exit.i.i ], [ { ptr @.str, i64 0 }, %5 ], [ { ptr @.str, i64 0 }, %5 ], [ { ptr @.str, i64 0 }, %5 ] - %55 = extractvalue { ptr, i64 } %.pn.i.i, 0 - %56 = extractvalue { ptr, i64 } %.pn.i.i, 1 - store ptr %55, ptr %3, align 8, !tbaa !50 + %54 = extractvalue { ptr, i64 } %.pn.i.i, 0 + %55 = extractvalue { ptr, i64 } %.pn.i.i, 1 + store ptr %54, ptr %3, align 8, !tbaa !50 %.sroa.7.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 8 - store i64 %56, ptr %.sroa.7.0..sroa_idx, align 8, !tbaa !129 - %57 = icmp eq i64 %56, 0 - br i1 %57, label %65, label %58 - -58: ; preds = %_ZSt5visitIZN7rocksdb12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS1_14SelectWholeKeyENS1_16SelectKeySegmentENS1_21SelectKeySegmentRangeENS1_21SelectLegacyKeyPrefixENS1_19SelectUserTimestampENS1_16SelectColumnNameEEERKNS0_5SliceERKNS1_20KeySegmentsExtractor6ResultEPSB_SI_E17FilterInputGetterJRSA_EENSt13invoke_resultIT_JDpNSt13__conditionalIX21is_lvalue_reference_vIT0_EEE4typeIRNSt19variant_alternativeILm0ENSt16remove_referenceIDTclsr9__variantE4__asclsr3stdE7declvalISO_EEEEE4typeEE4typeEOSX_EEEE4typeEOSM_DpOSO_.exit - %59 = load ptr, ptr %1, align 8, !tbaa !17 - %60 = icmp ult ptr %55, %59 - %61 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %62 = load i64, ptr %61, align 8 - %63 = getelementptr inbounds nuw i8, ptr %59, i64 %62 - %64 = icmp ugt ptr %55, %63 - %or.cond = select i1 %60, i1 true, i1 %64 - br i1 %or.cond, label %65, label %66 - -65: ; preds = %58, %_ZSt5visitIZN7rocksdb12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS1_14SelectWholeKeyENS1_16SelectKeySegmentENS1_21SelectKeySegmentRangeENS1_21SelectLegacyKeyPrefixENS1_19SelectUserTimestampENS1_16SelectColumnNameEEERKNS0_5SliceERKNS1_20KeySegmentsExtractor6ResultEPSB_SI_E17FilterInputGetterJRSA_EENSt13invoke_resultIT_JDpNSt13__conditionalIX21is_lvalue_reference_vIT0_EEE4typeIRNSt19variant_alternativeILm0ENSt16remove_referenceIDTclsr9__variantE4__asclsr3stdE7declvalISO_EEEEE4typeEE4typeEOSX_EEEE4typeEOSM_DpOSO_.exit + store i64 %55, ptr %.sroa.7.0..sroa_idx, align 8, !tbaa !129 + %56 = icmp eq i64 %55, 0 + br i1 %56, label %64, label %57 + +57: ; preds = %_ZSt5visitIZN7rocksdb12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS1_14SelectWholeKeyENS1_16SelectKeySegmentENS1_21SelectKeySegmentRangeENS1_21SelectLegacyKeyPrefixENS1_19SelectUserTimestampENS1_16SelectColumnNameEEERKNS0_5SliceERKNS1_20KeySegmentsExtractor6ResultEPSB_SI_E17FilterInputGetterJRSA_EENSt13invoke_resultIT_JDpNSt13__conditionalIX21is_lvalue_reference_vIT0_EEE4typeIRNSt19variant_alternativeILm0ENSt16remove_referenceIDTclsr9__variantE4__asclsr3stdE7declvalISO_EEEEE4typeEE4typeEOSX_EEEE4typeEOSM_DpOSO_.exit + %58 = load ptr, ptr %1, align 8, !tbaa !17 + %59 = icmp ult ptr %54, %58 + %60 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %61 = load i64, ptr %60, align 8 + %62 = getelementptr inbounds nuw i8, ptr %58, i64 %61 + %63 = icmp ugt ptr %54, %62 + %or.cond = select i1 %59, i1 true, i1 %63 + br i1 %or.cond, label %64, label %65 + +64: ; preds = %57, %_ZSt5visitIZN7rocksdb12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS1_14SelectWholeKeyENS1_16SelectKeySegmentENS1_21SelectKeySegmentRangeENS1_21SelectLegacyKeyPrefixENS1_19SelectUserTimestampENS1_16SelectColumnNameEEERKNS0_5SliceERKNS1_20KeySegmentsExtractor6ResultEPSB_SI_E17FilterInputGetterJRSA_EENSt13invoke_resultIT_JDpNSt13__conditionalIX21is_lvalue_reference_vIT0_EEE4typeIRNSt19variant_alternativeILm0ENSt16remove_referenceIDTclsr9__variantE4__asclsr3stdE7declvalISO_EEEEE4typeEE4typeEOSX_EEEE4typeEOSM_DpOSO_.exit tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(16) %1, i64 16, i1 false), !tbaa.struct !1022 - br label %70 + br label %69 -66: ; preds = %58 - %67 = ptrtoint ptr %55 to i64 - %68 = ptrtoint ptr %59 to i64 - %69 = sub i64 %67, %68 - store ptr %59, ptr %4, align 8, !tbaa !50 +65: ; preds = %57 + %66 = ptrtoint ptr %54 to i64 + %67 = ptrtoint ptr %58 to i64 + %68 = sub i64 %66, %67 + store ptr %58, ptr %4, align 8, !tbaa !50 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 8 - store i64 %69, ptr %.sroa.4.0..sroa_idx, align 8, !tbaa !129 - br label %70 + store i64 %68, ptr %.sroa.4.0..sroa_idx, align 8, !tbaa !129 + br label %69 -70: ; preds = %66, %65 +69: ; preds = %65, %64 ret void } diff --git a/bench/ruff-rs/optimized/272al911l1jdbqblbb9whzfue.ll b/bench/ruff-rs/optimized/272al911l1jdbqblbb9whzfue.ll index ba22e25b0d7..c3b787e8d69 100644 --- a/bench/ruff-rs/optimized/272al911l1jdbqblbb9whzfue.ll +++ b/bench/ruff-rs/optimized/272al911l1jdbqblbb9whzfue.ll @@ -1193,7 +1193,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %11 = load i64, ptr %10, align 8, !noundef !3 %12 = load ptr, ptr %0, align 8, !nonnull !3, !noundef !3 %13 = icmp eq i64 %11, 0 - br i1 %13, label %.loopexit60, label %.lr.ph.i + br i1 %13, label %.loopexit59, label %.lr.ph.i .lr.ph.i: ; preds = %3, %.lr.ph.i %.sroa.03.06.i = phi i64 [ %21, %.lr.ph.i ], [ %11, %3 ] @@ -1208,23 +1208,23 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %20 = load ptr, ptr %19, align 8, !noalias !205, !nonnull !3, !noundef !3 %21 = add i64 %.sroa.03.06.i, -1 %22 = icmp eq i64 %21, 0 - br i1 %22, label %.loopexit60, label %.lr.ph.i + br i1 %22, label %.loopexit59, label %.lr.ph.i -.loopexit60: ; preds = %.lr.ph.i, %3 +.loopexit59: ; preds = %.lr.ph.i, %3 %.sroa.04.0.lcssa.i = phi ptr [ %12, %3 ], [ %20, %.lr.ph.i ] call void @llvm.lifetime.start.p0(ptr nonnull %9) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %9, ptr noundef nonnull align 8 dereferenceable(56) %1, i64 56, i1 false) br label %23 -23: ; preds = %.loopexit, %.loopexit60 - %.sroa.0.054 = phi ptr [ %.sroa.04.0.lcssa.i, %.loopexit60 ], [ %.sroa.0.1, %.loopexit ] +23: ; preds = %.loopexit, %.loopexit59 + %.sroa.0.053 = phi ptr [ %.sroa.04.0.lcssa.i, %.loopexit59 ], [ %.sroa.0.1, %.loopexit ] invoke void @"_ZN137_$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$K$C$V$C$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hc110be6fc5591b5dE"(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %8, ptr noalias noundef nonnull align 8 dereferenceable(56) %9) to label %26 unwind label %24 -.body: ; preds = %115, %155, %24 - %.pn = phi { ptr, i32 } [ %eh.lpad-body20.ph, %155 ], [ %25, %24 ], [ %116, %115 ] +.body: ; preds = %112, %152, %24 + %.pn = phi { ptr, i32 } [ %eh.lpad-body19.ph, %152 ], [ %25, %24 ], [ %113, %112 ] invoke void @"_ZN4core3ptr507drop_in_place$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$ruff_db..system..path..SystemPathBuf$C$alloc..collections..btree..set_val..SetValZST$C$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$ruff_db..system..path..SystemPathBuf$GT$$C$alloc..collections..btree..set..BTreeSet$LT$ruff_db..system..path..SystemPathBuf$GT$..from_sorted_iter$LT$alloc..vec..into_iter..IntoIter$LT$ruff_db..system..path..SystemPathBuf$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17hbd6ef4bdee85703cE"(ptr noalias noundef nonnull align 8 dereferenceable(56) %9) #16 - to label %158 unwind label %156 + to label %155 unwind label %153 24: ; preds = %23 %25 = landingpad { ptr, i32 } @@ -1239,10 +1239,10 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. 28: ; preds = %26 call void @llvm.lifetime.start.p0(ptr nonnull %7) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %8, i64 24, i1 false) - %29 = getelementptr inbounds nuw i8, ptr %.sroa.0.054, i64 274 + %29 = getelementptr inbounds nuw i8, ptr %.sroa.0.053, i64 274 %30 = load i16, ptr %29, align 2, !noundef !3 %31 = icmp ult i16 %30, 11 - br i1 %31, label %150, label %.preheader + br i1 %31, label %147, label %.preheader 32: ; preds = %26 call void @"_ZN4core3ptr507drop_in_place$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$ruff_db..system..path..SystemPathBuf$C$alloc..collections..btree..set_val..SetValZST$C$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$ruff_db..system..path..SystemPathBuf$GT$$C$alloc..collections..btree..set..BTreeSet$LT$ruff_db..system..path..SystemPathBuf$GT$..from_sorted_iter$LT$alloc..vec..into_iter..IntoIter$LT$ruff_db..system..path..SystemPathBuf$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17hbd6ef4bdee85703cE"(ptr noalias noundef nonnull align 8 dereferenceable(56) %9) @@ -1283,7 +1283,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %48 = icmp ult i16 %47, 5 br i1 %48, label %50, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h79726ad5abc2016aE.exit.i" -"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h79726ad5abc2016aE.exit.i": ; preds = %81, %36 +"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h79726ad5abc2016aE.exit.i": ; preds = %78, %36 %49 = icmp eq i64 %42, 0 br i1 %49, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17h45500165ef2c6417E.exit", label %.lr.ph.i14 @@ -1294,264 +1294,255 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %53 = load i16, ptr %52, align 2, !noalias !218, !noundef !3 %54 = zext nneg i16 %47 to i64 %.not.i.i = icmp ugt i16 %narrow.i, %53 - br i1 %.not.i.i, label %.noexc15, label %55, !prof !31 + br i1 %.not.i.i, label %.noexc15, label %_ZN5alloc11collections5btree4node13move_to_slice17h6ae8f93f482c2816E.exit.i.i, !prof !31 .noexc15: ; preds = %50 call void @_ZN4core9panicking5panic17h48a7e1f3665210c6E(ptr noalias noundef nonnull readonly align 1 @anon.84ebae23b1e24beb2c6053fa0be4ab9a.22, i64 noundef 39, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.84ebae23b1e24beb2c6053fa0be4ab9a.23) #15 unreachable -55: ; preds = %50 - %56 = zext i16 %53 to i64 - %57 = sub nuw nsw i64 %56, %51 - %58 = trunc nuw i64 %57 to i16 - store i16 %58, ptr %52, align 2, !noalias !218 +_ZN5alloc11collections5btree4node13move_to_slice17h6ae8f93f482c2816E.exit.i.i: ; preds = %50 + %55 = zext i16 %53 to i64 + %56 = sub nuw nsw i64 %55, %51 + %57 = trunc nuw i64 %56 to i16 + store i16 %57, ptr %52, align 2, !noalias !218 store i16 5, ptr %46, align 2, !noalias !218 - %59 = getelementptr inbounds nuw i8, ptr %45, i64 8 - %60 = getelementptr inbounds nuw { [3 x i64] }, ptr %59, i64 %51 - %61 = mul nuw nsw i64 %54, 24 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %60, ptr nonnull align 8 %59, i64 %61, i1 false), !alias.scope !221, !noalias !218 - %62 = add nuw nsw i64 %57, 1 - %63 = sub nuw nsw i64 %56, %62 - %64 = add nsw i64 %51, -1 - %65 = icmp eq i64 %63, %64 - br i1 %65, label %_ZN5alloc11collections5btree4node13move_to_slice17h6ae8f93f482c2816E.exit.i.i, label %.noexc16, !prof !4 - -.noexc16: ; preds = %55 - call void @_ZN4core9panicking5panic17h48a7e1f3665210c6E(ptr noalias noundef nonnull readonly align 1 @anon.84ebae23b1e24beb2c6053fa0be4ab9a.11, i64 noundef 40, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.84ebae23b1e24beb2c6053fa0be4ab9a.12) #15 - unreachable - -_ZN5alloc11collections5btree4node13move_to_slice17h6ae8f93f482c2816E.exit.i.i: ; preds = %55 - %66 = getelementptr inbounds nuw i8, ptr %41, i64 8 - %67 = getelementptr inbounds nuw { [3 x i64] }, ptr %66, i64 %62 - %68 = mul nuw nsw i64 %63, 24 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %59, ptr nonnull readonly align 8 %67, i64 %68, i1 false), !alias.scope !224, !noalias !218 - %69 = getelementptr inbounds nuw { [3 x i64] }, ptr %66, i64 %57 - %70 = getelementptr inbounds nuw i8, ptr %.sroa.03.010.i, i64 8 - %71 = getelementptr inbounds nuw { [3 x i64] }, ptr %70, i64 %38 + %58 = getelementptr inbounds nuw i8, ptr %45, i64 8 + %59 = getelementptr inbounds nuw { [3 x i64] }, ptr %58, i64 %51 + %60 = mul nuw nsw i64 %54, 24 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %59, ptr nonnull align 8 %58, i64 %60, i1 false), !alias.scope !221, !noalias !218 + %61 = add nuw nsw i64 %56, 1 + %62 = sub nuw nsw i64 %55, %61 + %63 = getelementptr inbounds nuw i8, ptr %41, i64 8 + %64 = getelementptr inbounds nuw { [3 x i64] }, ptr %63, i64 %61 + %65 = mul nuw nsw i64 %62, 24 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %58, ptr nonnull readonly align 8 %64, i64 %65, i1 false), !alias.scope !224, !noalias !218 + %66 = getelementptr inbounds nuw { [3 x i64] }, ptr %63, i64 %56 + %67 = getelementptr inbounds nuw i8, ptr %.sroa.03.010.i, i64 8 + %68 = getelementptr inbounds nuw { [3 x i64] }, ptr %67, i64 %38 call void @llvm.lifetime.start.p0(ptr nonnull %5) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(24) %71, i64 24, i1 false), !noalias !218 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %71, ptr noundef nonnull align 8 dereferenceable(24) %69, i64 24, i1 false), !noalias !218 - %72 = getelementptr inbounds nuw { [3 x i64] }, ptr %59, i64 %63 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %72, ptr noundef nonnull align 8 dereferenceable(24) %5, i64 24, i1 false), !noalias !218 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(24) %68, i64 24, i1 false), !noalias !218 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %68, ptr noundef nonnull align 8 dereferenceable(24) %66, i64 24, i1 false), !noalias !218 + %69 = getelementptr inbounds nuw { [3 x i64] }, ptr %58, i64 %62 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %69, ptr noundef nonnull align 8 dereferenceable(24) %5, i64 24, i1 false), !noalias !218 call void @llvm.lifetime.end.p0(ptr nonnull %5) %cond.i = icmp eq i64 %42, 0 - br i1 %cond.i, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17h45500165ef2c6417E.exit", label %73 - -73: ; preds = %_ZN5alloc11collections5btree4node13move_to_slice17h6ae8f93f482c2816E.exit.i.i - %74 = getelementptr inbounds nuw i8, ptr %45, i64 280 - %75 = getelementptr inbounds nuw ptr, ptr %74, i64 %51 - %76 = shl nuw nsw i64 %54, 3 - %77 = add nuw nsw i64 %76, 8 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %75, ptr noundef nonnull align 8 dereferenceable(1) %74, i64 %77, i1 false), !alias.scope !228, !noalias !218 - %78 = getelementptr inbounds nuw i8, ptr %41, i64 280 - %79 = getelementptr inbounds nuw ptr, ptr %78, i64 %62 - %80 = shl nuw nsw i64 %51, 3 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %74, ptr noundef nonnull readonly align 8 dereferenceable(1) %79, i64 %80, i1 false), !alias.scope !231, !noalias !218 - br label %81 - -81: ; preds = %81, %73 - %.sroa.0.06.i.i.i = phi i64 [ 0, %73 ], [ %82, %81 ] - %82 = add nuw nsw i64 %.sroa.0.06.i.i.i, 1 - %83 = getelementptr inbounds nuw ptr, ptr %74, i64 %.sroa.0.06.i.i.i - %84 = load ptr, ptr %83, align 8, !noalias !235, !nonnull !3, !noundef !3 - store ptr %45, ptr %84, align 8, !noalias !240 - %85 = trunc nuw nsw i64 %.sroa.0.06.i.i.i to i16 - %86 = getelementptr inbounds nuw i8, ptr %84, i64 272 - store i16 %85, ptr %86, align 8, !noalias !240 + br i1 %cond.i, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17h45500165ef2c6417E.exit", label %70 + +70: ; preds = %_ZN5alloc11collections5btree4node13move_to_slice17h6ae8f93f482c2816E.exit.i.i + %71 = getelementptr inbounds nuw i8, ptr %45, i64 280 + %72 = getelementptr inbounds nuw ptr, ptr %71, i64 %51 + %73 = shl nuw nsw i64 %54, 3 + %74 = add nuw nsw i64 %73, 8 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %72, ptr noundef nonnull align 8 dereferenceable(1) %71, i64 %74, i1 false), !alias.scope !228, !noalias !218 + %75 = getelementptr inbounds nuw i8, ptr %41, i64 280 + %76 = getelementptr inbounds nuw ptr, ptr %75, i64 %61 + %77 = shl nuw nsw i64 %51, 3 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %71, ptr noundef nonnull readonly align 8 dereferenceable(1) %76, i64 %77, i1 false), !alias.scope !231, !noalias !218 + br label %78 + +78: ; preds = %78, %70 + %.sroa.0.06.i.i.i = phi i64 [ 0, %70 ], [ %79, %78 ] + %79 = add nuw nsw i64 %.sroa.0.06.i.i.i, 1 + %80 = getelementptr inbounds nuw ptr, ptr %71, i64 %.sroa.0.06.i.i.i + %81 = load ptr, ptr %80, align 8, !noalias !235, !nonnull !3, !noundef !3 + store ptr %45, ptr %81, align 8, !noalias !240 + %82 = trunc nuw nsw i64 %.sroa.0.06.i.i.i to i16 + %83 = getelementptr inbounds nuw i8, ptr %81, i64 272 + store i16 %82, ptr %83, align 8, !noalias !240 %exitcond.not.i.i.i = icmp eq i64 %.sroa.0.06.i.i.i, 5 - br i1 %exitcond.not.i.i.i, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h79726ad5abc2016aE.exit.i", label %81 + br i1 %exitcond.not.i.i.i, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h79726ad5abc2016aE.exit.i", label %78 "_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17h45500165ef2c6417E.exit": ; preds = %_ZN5alloc11collections5btree4node13move_to_slice17h6ae8f93f482c2816E.exit.i.i, %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h79726ad5abc2016aE.exit.i", %32 ret void -.preheader: ; preds = %28, %90 - %.sroa.5.0 = phi i64 [ %91, %90 ], [ 0, %28 ] - %.sroa.0.0 = phi ptr [ %87, %90 ], [ %.sroa.0.054, %28 ] - %87 = load ptr, ptr %.sroa.0.0, align 8, !noalias !241, !noundef !3 - %.not.i17 = icmp eq ptr %87, null - br i1 %.not.i17, label %95, label %90 +.preheader: ; preds = %28, %87 + %.sroa.5.0 = phi i64 [ %88, %87 ], [ 0, %28 ] + %.sroa.0.0 = phi ptr [ %84, %87 ], [ %.sroa.0.053, %28 ] + %84 = load ptr, ptr %.sroa.0.0, align 8, !noalias !241, !noundef !3 + %.not.i16 = icmp eq ptr %84, null + br i1 %.not.i16, label %92, label %87 -88: ; preds = %.loopexit59 - %89 = landingpad { ptr, i32 } +85: ; preds = %.loopexit58 + %86 = landingpad { ptr, i32 } cleanup - br label %155 + br label %152 -90: ; preds = %.preheader - %91 = add i64 %.sroa.5.0, 1 - %92 = getelementptr inbounds nuw i8, ptr %87, i64 274 - %93 = load i16, ptr %92, align 2, !noundef !3 - %94 = icmp ult i16 %93, 11 - br i1 %94, label %.loopexit59, label %.preheader +87: ; preds = %.preheader + %88 = add i64 %.sroa.5.0, 1 + %89 = getelementptr inbounds nuw i8, ptr %84, i64 274 + %90 = load i16, ptr %89, align 2, !noundef !3 + %91 = icmp ult i16 %90, 11 + br i1 %91, label %.loopexit58, label %.preheader -95: ; preds = %.preheader +92: ; preds = %.preheader call void @llvm.experimental.noalias.scope.decl(metadata !244) - %96 = load ptr, ptr %0, align 8, !alias.scope !244, !nonnull !3, !noundef !3 - %97 = load i64, ptr %10, align 8, !alias.scope !244, !noundef !3 - %98 = invoke noundef nonnull align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$13new_uninit_in17hf3b18689352489abE"() - to label %103 unwind label %99, !noalias !244 + %93 = load ptr, ptr %0, align 8, !alias.scope !244, !nonnull !3, !noundef !3 + %94 = load i64, ptr %10, align 8, !alias.scope !244, !noundef !3 + %95 = invoke noundef nonnull align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$13new_uninit_in17hf3b18689352489abE"() + to label %100 unwind label %96, !noalias !244 -99: ; preds = %95 - %100 = landingpad { ptr, i32 } +96: ; preds = %92 + %97 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17h12e693559be0c4e2E"(ptr noalias noundef nonnull align 1 %4) #16 - to label %155 unwind label %101, !noalias !244 + to label %152 unwind label %98, !noalias !244 -101: ; preds = %99 - %102 = landingpad { ptr, i32 } +98: ; preds = %96 + %99 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbadeae7294749c32E() #17, !noalias !244 unreachable -103: ; preds = %95 - store ptr null, ptr %98, align 8, !noalias !244 - %104 = getelementptr inbounds nuw i8, ptr %98, i64 274 - store i16 0, ptr %104, align 2, !noalias !244 - %105 = getelementptr inbounds nuw i8, ptr %98, i64 280 - store ptr %96, ptr %105, align 8, !noalias !244 - %106 = add i64 %97, 1 - store ptr %98, ptr %96, align 8, !noalias !247 - %107 = getelementptr inbounds nuw i8, ptr %96, i64 272 - store i16 0, ptr %107, align 8, !noalias !254 - store ptr %98, ptr %0, align 8, !alias.scope !244 - store i64 %106, ptr %10, align 8, !alias.scope !244 - br label %.loopexit59 - -.loopexit59: ; preds = %90, %103 - %.sroa.038.0 = phi ptr [ %98, %103 ], [ %87, %90 ] - %.sroa.639.0 = phi i64 [ %106, %103 ], [ %91, %90 ] - %108 = add i64 %.sroa.639.0, -1 - %109 = invoke noundef nonnull align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$13new_uninit_in17h7a7abaf50dd999a9E"() - to label %110 unwind label %88 - -110: ; preds = %.loopexit59 - store ptr null, ptr %109, align 8 - %111 = getelementptr inbounds nuw i8, ptr %109, i64 274 - store i16 0, ptr %111, align 2 - %.not70 = icmp eq i64 %108, 0 - br i1 %.not70, label %.loopexit86, label %.lr.ph - -.invoke.i: ; preds = %.loopexit86 +100: ; preds = %92 + store ptr null, ptr %95, align 8, !noalias !244 + %101 = getelementptr inbounds nuw i8, ptr %95, i64 274 + store i16 0, ptr %101, align 2, !noalias !244 + %102 = getelementptr inbounds nuw i8, ptr %95, i64 280 + store ptr %93, ptr %102, align 8, !noalias !244 + %103 = add i64 %94, 1 + store ptr %95, ptr %93, align 8, !noalias !247 + %104 = getelementptr inbounds nuw i8, ptr %93, i64 272 + store i16 0, ptr %104, align 8, !noalias !254 + store ptr %95, ptr %0, align 8, !alias.scope !244 + store i64 %103, ptr %10, align 8, !alias.scope !244 + br label %.loopexit58 + +.loopexit58: ; preds = %87, %100 + %.sroa.037.0 = phi ptr [ %95, %100 ], [ %84, %87 ] + %.sroa.638.0 = phi i64 [ %103, %100 ], [ %88, %87 ] + %105 = add i64 %.sroa.638.0, -1 + %106 = invoke noundef nonnull align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$13new_uninit_in17h7a7abaf50dd999a9E"() + to label %107 unwind label %85 + +107: ; preds = %.loopexit58 + store ptr null, ptr %106, align 8 + %108 = getelementptr inbounds nuw i8, ptr %106, i64 274 + store i16 0, ptr %108, align 2 + %.not69 = icmp eq i64 %105, 0 + br i1 %.not69, label %.loopexit84, label %.lr.ph + +.invoke.i: ; preds = %.loopexit84 invoke void @_ZN4core9panicking5panic17h48a7e1f3665210c6E(ptr noalias noundef nonnull readonly align 1 @anon.84ebae23b1e24beb2c6053fa0be4ab9a.6, i64 noundef 32, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.84ebae23b1e24beb2c6053fa0be4ab9a.10) #15 - to label %.cont.i unwind label %115, !noalias !255 + to label %.cont.i unwind label %112, !noalias !255 .cont.i: ; preds = %.invoke.i unreachable -.loopexit86: ; preds = %_ZN5alloc11collections5btree3mem7replace17h1284baf35d371addE.exit33, %110 - %.sroa.044.0.lcssa = phi ptr [ %109, %110 ], [ %141, %_ZN5alloc11collections5btree3mem7replace17h1284baf35d371addE.exit33 ] +.loopexit84: ; preds = %_ZN5alloc11collections5btree3mem7replace17h1284baf35d371addE.exit32, %107 + %.sroa.043.0.lcssa = phi ptr [ %106, %107 ], [ %138, %_ZN5alloc11collections5btree3mem7replace17h1284baf35d371addE.exit32 ] call void @llvm.lifetime.start.p0(ptr nonnull %6) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(24) %8, i64 24, i1 false) - %112 = getelementptr inbounds nuw i8, ptr %.sroa.038.0, i64 274 - %113 = load i16, ptr %112, align 2, !noalias !255, !noundef !3 - %114 = icmp ult i16 %113, 11 - br i1 %114, label %119, label %.invoke.i, !prof !4 + %109 = getelementptr inbounds nuw i8, ptr %.sroa.037.0, i64 274 + %110 = load i16, ptr %109, align 2, !noalias !255, !noundef !3 + %111 = icmp ult i16 %110, 11 + br i1 %111, label %116, label %.invoke.i, !prof !4 -115: ; preds = %.invoke.i - %116 = landingpad { ptr, i32 } +112: ; preds = %.invoke.i + %113 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr57drop_in_place$LT$ruff_db..system..path..SystemPathBuf$GT$17h9ca0984b95b1da15E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6) #16 - to label %.body unwind label %117 + to label %.body unwind label %114 -117: ; preds = %115 - %118 = landingpad { ptr, i32 } +114: ; preds = %112 + %115 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbadeae7294749c32E() #17 unreachable -119: ; preds = %.loopexit86 - %120 = zext nneg i16 %113 to i64 - %121 = add nuw nsw i16 %113, 1 - store i16 %121, ptr %112, align 2, !noalias !255 - %122 = getelementptr inbounds nuw i8, ptr %.sroa.038.0, i64 8 - %123 = getelementptr inbounds nuw { [3 x i64] }, ptr %122, i64 %120 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %123, ptr noundef nonnull align 8 dereferenceable(24) %8, i64 24, i1 false) - %124 = add nuw nsw i64 %120, 1 - %125 = getelementptr inbounds nuw i8, ptr %.sroa.038.0, i64 280 - %126 = getelementptr inbounds nuw ptr, ptr %125, i64 %124 - store ptr %.sroa.044.0.lcssa, ptr %126, align 8, !noalias !255 - store ptr %.sroa.038.0, ptr %.sroa.044.0.lcssa, align 8, !noalias !258 - %127 = trunc nuw nsw i64 %124 to i16 - %128 = getelementptr inbounds nuw i8, ptr %.sroa.044.0.lcssa, i64 272 - store i16 %127, ptr %128, align 8, !noalias !258 +116: ; preds = %.loopexit84 + %117 = zext nneg i16 %110 to i64 + %118 = add nuw nsw i16 %110, 1 + store i16 %118, ptr %109, align 2, !noalias !255 + %119 = getelementptr inbounds nuw i8, ptr %.sroa.037.0, i64 8 + %120 = getelementptr inbounds nuw { [3 x i64] }, ptr %119, i64 %117 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %120, ptr noundef nonnull align 8 dereferenceable(24) %8, i64 24, i1 false) + %121 = add nuw nsw i64 %117, 1 + %122 = getelementptr inbounds nuw i8, ptr %.sroa.037.0, i64 280 + %123 = getelementptr inbounds nuw ptr, ptr %122, i64 %121 + store ptr %.sroa.043.0.lcssa, ptr %123, align 8, !noalias !255 + store ptr %.sroa.037.0, ptr %.sroa.043.0.lcssa, align 8, !noalias !258 + %124 = trunc nuw nsw i64 %121 to i16 + %125 = getelementptr inbounds nuw i8, ptr %.sroa.043.0.lcssa, i64 272 + store i16 %124, ptr %125, align 8, !noalias !258 call void @llvm.lifetime.end.p0(ptr nonnull %6) - %129 = icmp eq i64 %.sroa.639.0, 0 - br i1 %129, label %.loopexit, label %.lr.ph.i25 - -.lr.ph.i25: ; preds = %119, %.lr.ph.i25 - %.sroa.03.06.i26 = phi i64 [ %137, %.lr.ph.i25 ], [ %.sroa.639.0, %119 ] - %.sroa.04.05.i27 = phi ptr [ %136, %.lr.ph.i25 ], [ %.sroa.038.0, %119 ] - %130 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i27, i64 274 - %131 = load i16, ptr %130, align 2, !noalias !261, !noundef !3 - %132 = zext nneg i16 %131 to i64 - %133 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i27, i64 280 - %134 = icmp ult i16 %131, 12 - call void @llvm.assume(i1 %134) - %135 = getelementptr inbounds nuw ptr, ptr %133, i64 %132 - %136 = load ptr, ptr %135, align 8, !noalias !264, !nonnull !3, !noundef !3 - %137 = add i64 %.sroa.03.06.i26, -1 - %138 = icmp eq i64 %137, 0 - br i1 %138, label %.loopexit, label %.lr.ph.i25 - -.loopexit: ; preds = %.lr.ph.i25, %119, %150 - %.sroa.0.1 = phi ptr [ %.sroa.0.054, %150 ], [ %.sroa.038.0, %119 ], [ %136, %.lr.ph.i25 ] - %139 = load i64, ptr %2, align 8, !noundef !3 - %140 = add i64 %139, 1 - store i64 %140, ptr %2, align 8 + %126 = icmp eq i64 %.sroa.638.0, 0 + br i1 %126, label %.loopexit, label %.lr.ph.i24 + +.lr.ph.i24: ; preds = %116, %.lr.ph.i24 + %.sroa.03.06.i25 = phi i64 [ %134, %.lr.ph.i24 ], [ %.sroa.638.0, %116 ] + %.sroa.04.05.i26 = phi ptr [ %133, %.lr.ph.i24 ], [ %.sroa.037.0, %116 ] + %127 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i26, i64 274 + %128 = load i16, ptr %127, align 2, !noalias !261, !noundef !3 + %129 = zext nneg i16 %128 to i64 + %130 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i26, i64 280 + %131 = icmp ult i16 %128, 12 + call void @llvm.assume(i1 %131) + %132 = getelementptr inbounds nuw ptr, ptr %130, i64 %129 + %133 = load ptr, ptr %132, align 8, !noalias !264, !nonnull !3, !noundef !3 + %134 = add i64 %.sroa.03.06.i25, -1 + %135 = icmp eq i64 %134, 0 + br i1 %135, label %.loopexit, label %.lr.ph.i24 + +.loopexit: ; preds = %.lr.ph.i24, %116, %147 + %.sroa.0.1 = phi ptr [ %.sroa.0.053, %147 ], [ %.sroa.037.0, %116 ], [ %133, %.lr.ph.i24 ] + %136 = load i64, ptr %2, align 8, !noundef !3 + %137 = add i64 %136, 1 + store i64 %137, ptr %2, align 8 call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %23 -.lr.ph: ; preds = %110, %_ZN5alloc11collections5btree3mem7replace17h1284baf35d371addE.exit33 - %.sroa.02.068 = phi i64 [ %146, %_ZN5alloc11collections5btree3mem7replace17h1284baf35d371addE.exit33 ], [ 0, %110 ] - %.sroa.044.066 = phi ptr [ %141, %_ZN5alloc11collections5btree3mem7replace17h1284baf35d371addE.exit33 ], [ %109, %110 ] - %141 = invoke noundef nonnull align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$13new_uninit_in17hf3b18689352489abE"() - to label %_ZN5alloc11collections5btree3mem7replace17h1284baf35d371addE.exit33 unwind label %142, !noalias !267 +.lr.ph: ; preds = %107, %_ZN5alloc11collections5btree3mem7replace17h1284baf35d371addE.exit32 + %.sroa.02.067 = phi i64 [ %143, %_ZN5alloc11collections5btree3mem7replace17h1284baf35d371addE.exit32 ], [ 0, %107 ] + %.sroa.043.065 = phi ptr [ %138, %_ZN5alloc11collections5btree3mem7replace17h1284baf35d371addE.exit32 ], [ %106, %107 ] + %138 = invoke noundef nonnull align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$13new_uninit_in17hf3b18689352489abE"() + to label %_ZN5alloc11collections5btree3mem7replace17h1284baf35d371addE.exit32 unwind label %139, !noalias !267 -142: ; preds = %.lr.ph - %143 = landingpad { ptr, i32 } +139: ; preds = %.lr.ph + %140 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17h12e693559be0c4e2E"(ptr noalias noundef nonnull align 1 %4) #16 - to label %155 unwind label %144, !noalias !267 + to label %152 unwind label %141, !noalias !267 -144: ; preds = %142 - %145 = landingpad { ptr, i32 } +141: ; preds = %139 + %142 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbadeae7294749c32E() #17, !noalias !267 unreachable -_ZN5alloc11collections5btree3mem7replace17h1284baf35d371addE.exit33: ; preds = %.lr.ph - %146 = add nuw i64 %.sroa.02.068, 1 - store ptr null, ptr %141, align 8, !noalias !267 - %147 = getelementptr inbounds nuw i8, ptr %141, i64 274 - store i16 0, ptr %147, align 2, !noalias !267 - %148 = getelementptr inbounds nuw i8, ptr %141, i64 280 - store ptr %.sroa.044.066, ptr %148, align 8, !noalias !267 - store ptr %141, ptr %.sroa.044.066, align 8, !noalias !270 - %149 = getelementptr inbounds nuw i8, ptr %.sroa.044.066, i64 272 - store i16 0, ptr %149, align 8, !noalias !277 - %exitcond.not = icmp eq i64 %146, %108 - br i1 %exitcond.not, label %.loopexit86, label %.lr.ph - -150: ; preds = %28 - %151 = zext nneg i16 %30 to i64 - %152 = add nuw nsw i16 %30, 1 - store i16 %152, ptr %29, align 2, !noalias !278 - %153 = getelementptr inbounds nuw i8, ptr %.sroa.0.054, i64 8 - %154 = getelementptr inbounds nuw { [3 x i64] }, ptr %153, i64 %151 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %154, ptr noundef nonnull align 8 dereferenceable(24) %8, i64 24, i1 false) +_ZN5alloc11collections5btree3mem7replace17h1284baf35d371addE.exit32: ; preds = %.lr.ph + %143 = add nuw i64 %.sroa.02.067, 1 + store ptr null, ptr %138, align 8, !noalias !267 + %144 = getelementptr inbounds nuw i8, ptr %138, i64 274 + store i16 0, ptr %144, align 2, !noalias !267 + %145 = getelementptr inbounds nuw i8, ptr %138, i64 280 + store ptr %.sroa.043.065, ptr %145, align 8, !noalias !267 + store ptr %138, ptr %.sroa.043.065, align 8, !noalias !270 + %146 = getelementptr inbounds nuw i8, ptr %.sroa.043.065, i64 272 + store i16 0, ptr %146, align 8, !noalias !277 + %exitcond.not = icmp eq i64 %143, %105 + br i1 %exitcond.not, label %.loopexit84, label %.lr.ph + +147: ; preds = %28 + %148 = zext nneg i16 %30 to i64 + %149 = add nuw nsw i16 %30, 1 + store i16 %149, ptr %29, align 2, !noalias !278 + %150 = getelementptr inbounds nuw i8, ptr %.sroa.0.053, i64 8 + %151 = getelementptr inbounds nuw { [3 x i64] }, ptr %150, i64 %148 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %151, ptr noundef nonnull align 8 dereferenceable(24) %8, i64 24, i1 false) br label %.loopexit -155: ; preds = %88, %99, %142 - %eh.lpad-body20.ph = phi { ptr, i32 } [ %89, %88 ], [ %100, %99 ], [ %143, %142 ] +152: ; preds = %85, %96, %139 + %eh.lpad-body19.ph = phi { ptr, i32 } [ %86, %85 ], [ %97, %96 ], [ %140, %139 ] invoke void @"_ZN4core3ptr57drop_in_place$LT$ruff_db..system..path..SystemPathBuf$GT$17h9ca0984b95b1da15E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %7) #16 - to label %.body unwind label %156 + to label %.body unwind label %153 -156: ; preds = %155, %.body - %157 = landingpad { ptr, i32 } +153: ; preds = %152, %.body + %154 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbadeae7294749c32E() #17 unreachable -158: ; preds = %.body +155: ; preds = %.body resume { ptr, i32 } %.pn } diff --git a/bench/ruff-rs/optimized/4a0sesc153a050u04do7llz00.ll b/bench/ruff-rs/optimized/4a0sesc153a050u04do7llz00.ll index 382b38b265c..4f727b34352 100644 --- a/bench/ruff-rs/optimized/4a0sesc153a050u04do7llz00.ll +++ b/bench/ruff-rs/optimized/4a0sesc153a050u04do7llz00.ll @@ -55074,32 +55074,32 @@ define internal fastcc void @_ZN11ruff_linter5rules26flake8_implicit_str_concat5 store ptr %17, ptr %22, align 8 %23 = call noundef zeroext i1 @_ZN11ruff_linter5rules26flake8_implicit_str_concat5rules8implicit31has_odd_consecutive_backslashes17h36561b1299747590E(ptr noalias noundef nonnull align 8 dereferenceable(16) %14) call void @llvm.lifetime.end.p0(ptr nonnull %14) - br i1 %23, label %24, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit77" + br i1 %23, label %28, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit77" -24: ; preds = %21 - call void @llvm.lifetime.start.p0(ptr nonnull %13) - %25 = add i64 %.sroa.2.0, -2 - %26 = icmp eq i64 %25, 0 - br i1 %26, label %59, label %27 +"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit77": ; preds = %21 + %24 = getelementptr i8, ptr %16, i64 -2 + %25 = load i8, ptr %24, align 1, !noundef !3 + %26 = and i8 %25, -8 + %27 = icmp eq i8 %26, 48 + br i1 %27, label %35, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit.thread106" -27: ; preds = %24 - %28 = getelementptr inbounds nuw i8, ptr %.sroa.019.0, i64 %25 - %29 = load i8, ptr %28, align 1, !alias.scope !6623, !noundef !3 - %30 = icmp sgt i8 %29, -65 - br i1 %30, label %59, label %66 +28: ; preds = %21 + call void @llvm.lifetime.start.p0(ptr nonnull %13) + %29 = add i64 %.sroa.2.0, -2 + %30 = icmp eq i64 %29, 0 + br i1 %30, label %59, label %31 -"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit77": ; preds = %21 - %31 = getelementptr i8, ptr %16, i64 -2 - %32 = load i8, ptr %31, align 1, !noundef !3 - %33 = and i8 %32, -8 - %34 = icmp eq i8 %33, 48 - br i1 %34, label %35, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit.thread106" +31: ; preds = %28 + %32 = getelementptr inbounds nuw i8, ptr %.sroa.019.0, i64 %29 + %33 = load i8, ptr %32, align 1, !alias.scope !6623, !noundef !3 + %34 = icmp sgt i8 %33, -65 + br i1 %34, label %59, label %66 35: ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit77" call void @llvm.lifetime.start.p0(ptr nonnull %9) store ptr %.sroa.019.0, ptr %9, align 8 %36 = getelementptr inbounds nuw i8, ptr %9, i64 8 - store ptr %31, ptr %36, align 8 + store ptr %24, ptr %36, align 8 %37 = call noundef zeroext i1 @_ZN11ruff_linter5rules26flake8_implicit_str_concat5rules8implicit31has_odd_consecutive_backslashes17h36561b1299747590E(ptr noalias noundef nonnull align 8 dereferenceable(16) %9) call void @llvm.lifetime.end.p0(ptr nonnull %9) br i1 %37, label %38, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit.thread106" @@ -55129,7 +55129,7 @@ define internal fastcc void @_ZN11ruff_linter5rules26flake8_implicit_str_concat5 call void @llvm.lifetime.start.p0(ptr nonnull %7) call void @llvm.lifetime.start.p0(ptr nonnull %6) call void @llvm.lifetime.start.p0(ptr nonnull %5) - %48 = zext nneg i8 %32 to i32 + %48 = zext nneg i8 %25 to i32 store i32 %48, ptr %5, align 4 call void @llvm.lifetime.start.p0(ptr nonnull %4) %49 = zext nneg i8 %18 to i32 @@ -55189,10 +55189,10 @@ define internal fastcc void @_ZN11ruff_linter5rules26flake8_implicit_str_concat5 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %.sink, i64 24, i1 false) resume { ptr, i32 } %.pn -59: ; preds = %27, %24 +59: ; preds = %31, %28 store ptr %.sroa.019.0, ptr %13, align 8 %60 = getelementptr inbounds nuw i8, ptr %13, i64 8 - store i64 %25, ptr %60, align 8 + store i64 %29, ptr %60, align 8 call void @llvm.lifetime.start.p0(ptr nonnull %12) call void @llvm.lifetime.start.p0(ptr nonnull %11) call void @llvm.lifetime.start.p0(ptr nonnull %10) @@ -55227,8 +55227,8 @@ define internal fastcc void @_ZN11ruff_linter5rules26flake8_implicit_str_concat5 invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17hba79b7f9900aea78E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %0) to label %"_ZN4core3ptr50drop_in_place$LT$alloc..borrow..Cow$LT$str$GT$$GT$17h2aa5d16e69a31c39E.exit83" unwind label %67 -66: ; preds = %27 - call void @_ZN4core3str16slice_error_fail17h9782f1ca63c1749dE(ptr noalias noundef nonnull readonly align 1 %.sroa.019.0, i64 noundef %.sroa.2.0, i64 noundef 0, i64 noundef %25, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.0de5ee8f4a9046f07397637c35d34c13.549) #30 +66: ; preds = %31 + call void @_ZN4core3str16slice_error_fail17h9782f1ca63c1749dE(ptr noalias noundef nonnull readonly align 1 %.sroa.019.0, i64 noundef %.sroa.2.0, i64 noundef 0, i64 noundef %29, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.0de5ee8f4a9046f07397637c35d34c13.549) #30 unreachable 67: ; preds = %65 diff --git a/bench/ruff-rs/optimized/5k764i8zv3uxwobi5mx2hjj5g.ll b/bench/ruff-rs/optimized/5k764i8zv3uxwobi5mx2hjj5g.ll index 22e05acd16d..03488e70079 100644 --- a/bench/ruff-rs/optimized/5k764i8zv3uxwobi5mx2hjj5g.ll +++ b/bench/ruff-rs/optimized/5k764i8zv3uxwobi5mx2hjj5g.ll @@ -346,7 +346,6 @@ target triple = "x86_64-unknown-linux-gnu" @anon.ab07cbd181e9ffbfcaa9350913085d13.393 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.ab07cbd181e9ffbfcaa9350913085d13.384, [16 x i8] c"\\\00\00\00\00\00\00\00\7F\01\00\00*\00\00\00" }>, align 8 @anon.ab07cbd181e9ffbfcaa9350913085d13.394 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.ab07cbd181e9ffbfcaa9350913085d13.384, [16 x i8] c"\\\00\00\00\00\00\00\00\96\01\00\00\17\00\00\00" }>, align 8 @anon.ab07cbd181e9ffbfcaa9350913085d13.395 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.ab07cbd181e9ffbfcaa9350913085d13.384, [16 x i8] c"\\\00\00\00\00\00\00\00\9E\01\00\00\16\00\00\00" }>, align 8 -@anon.ab07cbd181e9ffbfcaa9350913085d13.397 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.ab07cbd181e9ffbfcaa9350913085d13.384, [16 x i8] c"\\\00\00\00\00\00\00\00\A3\01\00\00+\00\00\00" }>, align 8 @anon.ab07cbd181e9ffbfcaa9350913085d13.398 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.ab07cbd181e9ffbfcaa9350913085d13.384, [16 x i8] c"\\\00\00\00\00\00\00\00\AA\01\00\00\19\00\00\00" }>, align 8 @anon.ab07cbd181e9ffbfcaa9350913085d13.400 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.ab07cbd181e9ffbfcaa9350913085d13.384, [16 x i8] c"\\\00\00\00\00\00\00\00\8F\00\00\00\18\00\00\00" }>, align 8 @anon.ab07cbd181e9ffbfcaa9350913085d13.401 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.ab07cbd181e9ffbfcaa9350913085d13.384, [16 x i8] c"\\\00\00\00\00\00\00\00\B2\00\00\00*\00\00\00" }>, align 8 @@ -7980,72 +7979,60 @@ define internal fastcc noundef range(i64 0, 9223372036854775807) i64 @"_ZN7match %13 = add i32 %12, 1 store i32 %13, ptr %11, align 8 %.not18 = icmp eq i64 %1, 0 - br i1 %.not18, label %._crit_edge, label %.lr.ph.preheader + br i1 %.not18, label %._crit_edge, label %.lr.ph -.lr.ph.preheader: ; preds = %.split - %14 = add nsw i64 %1, -1 - %.first_iter = icmp ult i64 %14, %5 - br label %.lr.ph - -.lr.ph: ; preds = %.lr.ph.preheader, %35 - %.sroa.0.019 = phi i64 [ %15, %35 ], [ %1, %.lr.ph.preheader ] - %15 = add nsw i64 %.sroa.0.019, -1 - br i1 %.first_iter, label %16, label %21 +.lr.ph: ; preds = %.split, %32 + %.sroa.0.019 = phi i64 [ %14, %32 ], [ %1, %.split ] + %14 = add nsw i64 %.sroa.0.019, -1 + %15 = getelementptr inbounds nuw { { { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 } }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, { i32, [1 x i32] }, i32, i8, i8, [2 x i8] }, ptr %9, i64 %14 + %16 = getelementptr inbounds nuw i8, ptr %15, i64 128 + %17 = load i32, ptr %16, align 8, !noundef !3 + %18 = icmp ult i32 %17, %13 + br i1 %18, label %32, label %._crit_edge -._crit_edge: ; preds = %35, %16, %.split - %.sroa.0.0.lcssa = phi i64 [ 0, %.split ], [ %.sroa.0.019, %16 ], [ 0, %35 ] +._crit_edge: ; preds = %32, %.lr.ph, %.split + %.sroa.0.0.lcssa = phi i64 [ 0, %.split ], [ %.sroa.0.019, %.lr.ph ], [ 0, %32 ] %.not14 = icmp eq i64 %.sroa.0.0.lcssa, %1 - br i1 %.not14, label %34, label %22 - -16: ; preds = %.lr.ph - %17 = getelementptr inbounds nuw { { { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 } }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, { i32, [1 x i32] }, i32, i8, i8, [2 x i8] }, ptr %9, i64 %15 - %18 = getelementptr inbounds nuw i8, ptr %17, i64 128 - %19 = load i32, ptr %18, align 8, !noundef !3 - %20 = icmp ult i32 %19, %13 - br i1 %20, label %35, label %._crit_edge - -21: ; preds = %.lr.ph - tail call void @_ZN4core9panicking18panic_bounds_check17h1a9bf3d94de0fc80E(i64 noundef %15, i64 noundef %5, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.ab07cbd181e9ffbfcaa9350913085d13.397) #25 + br i1 %.not14, label %31, label %19 + +19: ; preds = %._crit_edge + %20 = getelementptr inbounds nuw i8, ptr %0, i64 56 + %21 = load ptr, ptr %20, align 8, !nonnull !3, !noundef !3 + %22 = getelementptr inbounds nuw i8, ptr %0, i64 64 + %23 = load i64, ptr %22, align 8, !noundef !3 + %24 = add nuw nsw i64 %1, 1 + %25 = icmp ult i64 %24, %.sroa.0.0.lcssa + br i1 %25, label %27, label %26, !prof !441 + +26: ; preds = %19 + %.not.i = icmp ult i64 %1, %23 + br i1 %.not.i, label %"_ZN115_$LT$core..ops..range..RangeInclusive$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hbd52a60228849c3cE.exit", label %28, !prof !567 + +27: ; preds = %19 + tail call void @_ZN4core5slice5index22slice_index_order_fail17h753dc2b23292d7ecE(i64 noundef %.sroa.0.0.lcssa, i64 noundef range(i64 1, 0) %24, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.ab07cbd181e9ffbfcaa9350913085d13.398) #25, !noalias !568 unreachable -22: ; preds = %._crit_edge - %23 = getelementptr inbounds nuw i8, ptr %0, i64 56 - %24 = load ptr, ptr %23, align 8, !nonnull !3, !noundef !3 - %25 = getelementptr inbounds nuw i8, ptr %0, i64 64 - %26 = load i64, ptr %25, align 8, !noundef !3 - %27 = add nuw nsw i64 %1, 1 - %28 = icmp ult i64 %27, %.sroa.0.0.lcssa - br i1 %28, label %30, label %29, !prof !441 - -29: ; preds = %22 - %.not.i = icmp ult i64 %1, %26 - br i1 %.not.i, label %"_ZN115_$LT$core..ops..range..RangeInclusive$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hbd52a60228849c3cE.exit", label %31, !prof !567 - -30: ; preds = %22 - tail call void @_ZN4core5slice5index22slice_index_order_fail17h753dc2b23292d7ecE(i64 noundef %.sroa.0.0.lcssa, i64 noundef range(i64 1, 0) %27, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.ab07cbd181e9ffbfcaa9350913085d13.398) #25, !noalias !568 - unreachable - -31: ; preds = %29 - tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h5b7964a60aa84510E(i64 noundef range(i64 1, 0) %27, i64 noundef %26, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.ab07cbd181e9ffbfcaa9350913085d13.398) #25, !noalias !568 +28: ; preds = %26 + tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h5b7964a60aa84510E(i64 noundef range(i64 1, 0) %24, i64 noundef %23, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.ab07cbd181e9ffbfcaa9350913085d13.398) #25, !noalias !568 unreachable -"_ZN115_$LT$core..ops..range..RangeInclusive$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hbd52a60228849c3cE.exit": ; preds = %29 - %32 = sub nuw nsw i64 %27, %.sroa.0.0.lcssa - %33 = getelementptr inbounds nuw i8, ptr %24, i64 %.sroa.0.0.lcssa - tail call void @"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$12rotate_right17h3e2b81fb651284edE"(ptr noalias noundef nonnull align 1 %33, i64 noundef %32, i64 noundef 1) - br label %34 +"_ZN115_$LT$core..ops..range..RangeInclusive$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hbd52a60228849c3cE.exit": ; preds = %26 + %29 = sub nuw nsw i64 %24, %.sroa.0.0.lcssa + %30 = getelementptr inbounds nuw i8, ptr %21, i64 %.sroa.0.0.lcssa + tail call void @"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$12rotate_right17h3e2b81fb651284edE"(ptr noalias noundef nonnull align 1 %30, i64 noundef %29, i64 noundef 1) + br label %31 -34: ; preds = %._crit_edge, %"_ZN115_$LT$core..ops..range..RangeInclusive$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hbd52a60228849c3cE.exit" +31: ; preds = %._crit_edge, %"_ZN115_$LT$core..ops..range..RangeInclusive$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hbd52a60228849c3cE.exit" ret i64 %.sroa.0.0.lcssa -35: ; preds = %16 - %36 = getelementptr inbounds nuw { { { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 } }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, { i32, [1 x i32] }, i32, i8, i8, [2 x i8] }, ptr %9, i64 %.sroa.0.019 +32: ; preds = %.lr.ph + %33 = getelementptr inbounds nuw { { { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 } }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, { i32, [1 x i32] }, i32, i8, i8, [2 x i8] }, ptr %9, i64 %.sroa.0.019 call void @llvm.lifetime.start.p0(ptr nonnull %3) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(136) %3, ptr noundef nonnull align 8 dereferenceable(136) %17, i64 136, i1 false) - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(136) %17, ptr noundef nonnull align 8 dereferenceable(136) %36, i64 136, i1 false) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(136) %36, ptr noundef nonnull align 8 dereferenceable(136) %3, i64 136, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(136) %3, ptr noundef nonnull align 8 dereferenceable(136) %15, i64 136, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(136) %15, ptr noundef nonnull align 8 dereferenceable(136) %33, i64 136, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(136) %33, ptr noundef nonnull align 8 dereferenceable(136) %3, i64 136, i1 false) call void @llvm.lifetime.end.p0(ptr nonnull %3) - %.not = icmp eq i64 %15, 0 + %.not = icmp eq i64 %14, 0 br i1 %.not, label %._crit_edge, label %.lr.ph } diff --git a/bench/ruff-rs/optimized/6gcc2sei0t3mzzmp63ppi5tol.ll b/bench/ruff-rs/optimized/6gcc2sei0t3mzzmp63ppi5tol.ll index 87fa54af282..afb9cbd074c 100644 --- a/bench/ruff-rs/optimized/6gcc2sei0t3mzzmp63ppi5tol.ll +++ b/bench/ruff-rs/optimized/6gcc2sei0t3mzzmp63ppi5tol.ll @@ -68,7 +68,6 @@ target triple = "x86_64-unknown-linux-gnu" @anon.1ef2000cb91be5a0adc7361c6504f42e.106 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.1ef2000cb91be5a0adc7361c6504f42e.97, [16 x i8] c"\\\00\00\00\00\00\00\00\7F\01\00\00*\00\00\00" }>, align 8 @anon.1ef2000cb91be5a0adc7361c6504f42e.107 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.1ef2000cb91be5a0adc7361c6504f42e.97, [16 x i8] c"\\\00\00\00\00\00\00\00\96\01\00\00\17\00\00\00" }>, align 8 @anon.1ef2000cb91be5a0adc7361c6504f42e.108 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.1ef2000cb91be5a0adc7361c6504f42e.97, [16 x i8] c"\\\00\00\00\00\00\00\00\9E\01\00\00\16\00\00\00" }>, align 8 -@anon.1ef2000cb91be5a0adc7361c6504f42e.110 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.1ef2000cb91be5a0adc7361c6504f42e.97, [16 x i8] c"\\\00\00\00\00\00\00\00\A3\01\00\00+\00\00\00" }>, align 8 @anon.1ef2000cb91be5a0adc7361c6504f42e.111 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.1ef2000cb91be5a0adc7361c6504f42e.97, [16 x i8] c"\\\00\00\00\00\00\00\00\AA\01\00\00\19\00\00\00" }>, align 8 @anon.1ef2000cb91be5a0adc7361c6504f42e.113 = private unnamed_addr constant <{ ptr, [8 x i8], ptr, [8 x i8] }> <{ ptr inttoptr (i64 1 to ptr), [8 x i8] zeroinitializer, ptr inttoptr (i64 1 to ptr), [8 x i8] zeroinitializer }>, align 8 @anon.1ef2000cb91be5a0adc7361c6504f42e.118 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.1ef2000cb91be5a0adc7361c6504f42e.97, [16 x i8] c"\\\00\00\00\00\00\00\00\8C\02\00\00%\00\00\00" }>, align 8 @@ -7175,72 +7174,60 @@ define internal fastcc noundef range(i64 0, 9223372036854775807) i64 @"_ZN7match %13 = add i32 %12, 1 store i32 %13, ptr %11, align 8 %.not18 = icmp eq i64 %1, 0 - br i1 %.not18, label %._crit_edge, label %.lr.ph.preheader - -.lr.ph.preheader: ; preds = %.split - %14 = add nsw i64 %1, -1 - %.first_iter = icmp ult i64 %14, %5 - br label %.lr.ph - -.lr.ph: ; preds = %.lr.ph.preheader, %35 - %.sroa.0.019 = phi i64 [ %15, %35 ], [ %1, %.lr.ph.preheader ] - %15 = add nsw i64 %.sroa.0.019, -1 - br i1 %.first_iter, label %16, label %21 - -._crit_edge: ; preds = %35, %16, %.split - %.sroa.0.0.lcssa = phi i64 [ 0, %.split ], [ %.sroa.0.019, %16 ], [ 0, %35 ] + br i1 %.not18, label %._crit_edge, label %.lr.ph + +.lr.ph: ; preds = %.split, %32 + %.sroa.0.019 = phi i64 [ %14, %32 ], [ %1, %.split ] + %14 = add nsw i64 %.sroa.0.019, -1 + %15 = getelementptr inbounds nuw { { i64, [1 x i64] }, { { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 } }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, i32, i8, i8, [2 x i8] }, ptr %9, i64 %14 + %16 = getelementptr inbounds nuw i8, ptr %15, i64 136 + %17 = load i32, ptr %16, align 8, !noundef !3 + %18 = icmp ult i32 %17, %13 + br i1 %18, label %32, label %._crit_edge + +._crit_edge: ; preds = %32, %.lr.ph, %.split + %.sroa.0.0.lcssa = phi i64 [ 0, %.split ], [ %.sroa.0.019, %.lr.ph ], [ 0, %32 ] %.not14 = icmp eq i64 %.sroa.0.0.lcssa, %1 - br i1 %.not14, label %34, label %22 - -16: ; preds = %.lr.ph - %17 = getelementptr inbounds nuw { { i64, [1 x i64] }, { { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 } }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, i32, i8, i8, [2 x i8] }, ptr %9, i64 %15 - %18 = getelementptr inbounds nuw i8, ptr %17, i64 136 - %19 = load i32, ptr %18, align 8, !noundef !3 - %20 = icmp ult i32 %19, %13 - br i1 %20, label %35, label %._crit_edge + br i1 %.not14, label %31, label %19 -21: ; preds = %.lr.ph - tail call void @_ZN4core9panicking18panic_bounds_check17h1a9bf3d94de0fc80E(i64 noundef %15, i64 noundef %5, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.1ef2000cb91be5a0adc7361c6504f42e.110) #20 - unreachable - -22: ; preds = %._crit_edge - %23 = getelementptr inbounds nuw i8, ptr %0, i64 72 - %24 = load ptr, ptr %23, align 8, !nonnull !3, !noundef !3 - %25 = getelementptr inbounds nuw i8, ptr %0, i64 80 - %26 = load i64, ptr %25, align 8, !noundef !3 - %27 = add nuw nsw i64 %1, 1 - %28 = icmp ult i64 %27, %.sroa.0.0.lcssa - br i1 %28, label %30, label %29, !prof !4 +19: ; preds = %._crit_edge + %20 = getelementptr inbounds nuw i8, ptr %0, i64 72 + %21 = load ptr, ptr %20, align 8, !nonnull !3, !noundef !3 + %22 = getelementptr inbounds nuw i8, ptr %0, i64 80 + %23 = load i64, ptr %22, align 8, !noundef !3 + %24 = add nuw nsw i64 %1, 1 + %25 = icmp ult i64 %24, %.sroa.0.0.lcssa + br i1 %25, label %27, label %26, !prof !4 -29: ; preds = %22 - %.not.i = icmp ult i64 %1, %26 - br i1 %.not.i, label %"_ZN115_$LT$core..ops..range..RangeInclusive$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h3771934e11456b61E.exit", label %31, !prof !32 +26: ; preds = %19 + %.not.i = icmp ult i64 %1, %23 + br i1 %.not.i, label %"_ZN115_$LT$core..ops..range..RangeInclusive$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h3771934e11456b61E.exit", label %28, !prof !32 -30: ; preds = %22 - tail call void @_ZN4core5slice5index22slice_index_order_fail17h753dc2b23292d7ecE(i64 noundef %.sroa.0.0.lcssa, i64 noundef range(i64 1, 0) %27, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.1ef2000cb91be5a0adc7361c6504f42e.111) #20, !noalias !393 +27: ; preds = %19 + tail call void @_ZN4core5slice5index22slice_index_order_fail17h753dc2b23292d7ecE(i64 noundef %.sroa.0.0.lcssa, i64 noundef range(i64 1, 0) %24, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.1ef2000cb91be5a0adc7361c6504f42e.111) #20, !noalias !393 unreachable -31: ; preds = %29 - tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h5b7964a60aa84510E(i64 noundef range(i64 1, 0) %27, i64 noundef %26, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.1ef2000cb91be5a0adc7361c6504f42e.111) #20, !noalias !393 +28: ; preds = %26 + tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h5b7964a60aa84510E(i64 noundef range(i64 1, 0) %24, i64 noundef %23, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.1ef2000cb91be5a0adc7361c6504f42e.111) #20, !noalias !393 unreachable -"_ZN115_$LT$core..ops..range..RangeInclusive$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h3771934e11456b61E.exit": ; preds = %29 - %32 = sub nuw nsw i64 %27, %.sroa.0.0.lcssa - %33 = getelementptr inbounds nuw i8, ptr %24, i64 %.sroa.0.0.lcssa - tail call void @"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$12rotate_right17h938f13c02e9e2c96E"(ptr noalias noundef nonnull align 1 %33, i64 noundef %32, i64 noundef 1) - br label %34 +"_ZN115_$LT$core..ops..range..RangeInclusive$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h3771934e11456b61E.exit": ; preds = %26 + %29 = sub nuw nsw i64 %24, %.sroa.0.0.lcssa + %30 = getelementptr inbounds nuw i8, ptr %21, i64 %.sroa.0.0.lcssa + tail call void @"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$12rotate_right17h938f13c02e9e2c96E"(ptr noalias noundef nonnull align 1 %30, i64 noundef %29, i64 noundef 1) + br label %31 -34: ; preds = %._crit_edge, %"_ZN115_$LT$core..ops..range..RangeInclusive$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h3771934e11456b61E.exit" +31: ; preds = %._crit_edge, %"_ZN115_$LT$core..ops..range..RangeInclusive$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h3771934e11456b61E.exit" ret i64 %.sroa.0.0.lcssa -35: ; preds = %16 - %36 = getelementptr inbounds nuw { { i64, [1 x i64] }, { { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 } }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, i32, i8, i8, [2 x i8] }, ptr %9, i64 %.sroa.0.019 +32: ; preds = %.lr.ph + %33 = getelementptr inbounds nuw { { i64, [1 x i64] }, { { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 } }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, i32, i8, i8, [2 x i8] }, ptr %9, i64 %.sroa.0.019 call void @llvm.lifetime.start.p0(ptr nonnull %3) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(144) %3, ptr noundef nonnull align 8 dereferenceable(144) %17, i64 144, i1 false) - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(144) %17, ptr noundef nonnull align 8 dereferenceable(144) %36, i64 144, i1 false) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(144) %36, ptr noundef nonnull align 8 dereferenceable(144) %3, i64 144, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(144) %3, ptr noundef nonnull align 8 dereferenceable(144) %15, i64 144, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(144) %15, ptr noundef nonnull align 8 dereferenceable(144) %33, i64 144, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(144) %33, ptr noundef nonnull align 8 dereferenceable(144) %3, i64 144, i1 false) call void @llvm.lifetime.end.p0(ptr nonnull %3) - %.not = icmp eq i64 %15, 0 + %.not = icmp eq i64 %14, 0 br i1 %.not, label %._crit_edge, label %.lr.ph } @@ -7265,72 +7252,60 @@ define internal fastcc noundef range(i64 0, 9223372036854775807) i64 @"_ZN7match %13 = add i32 %12, 1 store i32 %13, ptr %11, align 8 %.not18 = icmp eq i64 %1, 0 - br i1 %.not18, label %._crit_edge, label %.lr.ph.preheader - -.lr.ph.preheader: ; preds = %.split - %14 = add nsw i64 %1, -1 - %.first_iter = icmp ult i64 %14, %5 - br label %.lr.ph - -.lr.ph: ; preds = %.lr.ph.preheader, %35 - %.sroa.0.019 = phi i64 [ %15, %35 ], [ %1, %.lr.ph.preheader ] - %15 = add nsw i64 %.sroa.0.019, -1 - br i1 %.first_iter, label %16, label %21 - -._crit_edge: ; preds = %35, %16, %.split - %.sroa.0.0.lcssa = phi i64 [ 0, %.split ], [ %.sroa.0.019, %16 ], [ 0, %35 ] + br i1 %.not18, label %._crit_edge, label %.lr.ph + +.lr.ph: ; preds = %.split, %32 + %.sroa.0.019 = phi i64 [ %14, %32 ], [ %1, %.split ] + %14 = add nsw i64 %.sroa.0.019, -1 + %15 = getelementptr inbounds nuw { { i64, [2 x i64] }, { { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 } }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, i32, i8, i8, [2 x i8] }, ptr %9, i64 %14 + %16 = getelementptr inbounds nuw i8, ptr %15, i64 144 + %17 = load i32, ptr %16, align 8, !noundef !3 + %18 = icmp ult i32 %17, %13 + br i1 %18, label %32, label %._crit_edge + +._crit_edge: ; preds = %32, %.lr.ph, %.split + %.sroa.0.0.lcssa = phi i64 [ 0, %.split ], [ %.sroa.0.019, %.lr.ph ], [ 0, %32 ] %.not14 = icmp eq i64 %.sroa.0.0.lcssa, %1 - br i1 %.not14, label %34, label %22 - -16: ; preds = %.lr.ph - %17 = getelementptr inbounds nuw { { i64, [2 x i64] }, { { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 } }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, i32, i8, i8, [2 x i8] }, ptr %9, i64 %15 - %18 = getelementptr inbounds nuw i8, ptr %17, i64 144 - %19 = load i32, ptr %18, align 8, !noundef !3 - %20 = icmp ult i32 %19, %13 - br i1 %20, label %35, label %._crit_edge + br i1 %.not14, label %31, label %19 -21: ; preds = %.lr.ph - tail call void @_ZN4core9panicking18panic_bounds_check17h1a9bf3d94de0fc80E(i64 noundef %15, i64 noundef %5, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.1ef2000cb91be5a0adc7361c6504f42e.110) #20 - unreachable - -22: ; preds = %._crit_edge - %23 = getelementptr inbounds nuw i8, ptr %0, i64 80 - %24 = load ptr, ptr %23, align 8, !nonnull !3, !noundef !3 - %25 = getelementptr inbounds nuw i8, ptr %0, i64 88 - %26 = load i64, ptr %25, align 8, !noundef !3 - %27 = add nuw nsw i64 %1, 1 - %28 = icmp ult i64 %27, %.sroa.0.0.lcssa - br i1 %28, label %30, label %29, !prof !4 +19: ; preds = %._crit_edge + %20 = getelementptr inbounds nuw i8, ptr %0, i64 80 + %21 = load ptr, ptr %20, align 8, !nonnull !3, !noundef !3 + %22 = getelementptr inbounds nuw i8, ptr %0, i64 88 + %23 = load i64, ptr %22, align 8, !noundef !3 + %24 = add nuw nsw i64 %1, 1 + %25 = icmp ult i64 %24, %.sroa.0.0.lcssa + br i1 %25, label %27, label %26, !prof !4 -29: ; preds = %22 - %.not.i = icmp ult i64 %1, %26 - br i1 %.not.i, label %"_ZN115_$LT$core..ops..range..RangeInclusive$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h3771934e11456b61E.exit", label %31, !prof !32 +26: ; preds = %19 + %.not.i = icmp ult i64 %1, %23 + br i1 %.not.i, label %"_ZN115_$LT$core..ops..range..RangeInclusive$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h3771934e11456b61E.exit", label %28, !prof !32 -30: ; preds = %22 - tail call void @_ZN4core5slice5index22slice_index_order_fail17h753dc2b23292d7ecE(i64 noundef %.sroa.0.0.lcssa, i64 noundef range(i64 1, 0) %27, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.1ef2000cb91be5a0adc7361c6504f42e.111) #20, !noalias !399 +27: ; preds = %19 + tail call void @_ZN4core5slice5index22slice_index_order_fail17h753dc2b23292d7ecE(i64 noundef %.sroa.0.0.lcssa, i64 noundef range(i64 1, 0) %24, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.1ef2000cb91be5a0adc7361c6504f42e.111) #20, !noalias !399 unreachable -31: ; preds = %29 - tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h5b7964a60aa84510E(i64 noundef range(i64 1, 0) %27, i64 noundef %26, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.1ef2000cb91be5a0adc7361c6504f42e.111) #20, !noalias !399 +28: ; preds = %26 + tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h5b7964a60aa84510E(i64 noundef range(i64 1, 0) %24, i64 noundef %23, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.1ef2000cb91be5a0adc7361c6504f42e.111) #20, !noalias !399 unreachable -"_ZN115_$LT$core..ops..range..RangeInclusive$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h3771934e11456b61E.exit": ; preds = %29 - %32 = sub nuw nsw i64 %27, %.sroa.0.0.lcssa - %33 = getelementptr inbounds nuw i8, ptr %24, i64 %.sroa.0.0.lcssa - tail call void @"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$12rotate_right17h938f13c02e9e2c96E"(ptr noalias noundef nonnull align 1 %33, i64 noundef %32, i64 noundef 1) - br label %34 +"_ZN115_$LT$core..ops..range..RangeInclusive$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h3771934e11456b61E.exit": ; preds = %26 + %29 = sub nuw nsw i64 %24, %.sroa.0.0.lcssa + %30 = getelementptr inbounds nuw i8, ptr %21, i64 %.sroa.0.0.lcssa + tail call void @"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$12rotate_right17h938f13c02e9e2c96E"(ptr noalias noundef nonnull align 1 %30, i64 noundef %29, i64 noundef 1) + br label %31 -34: ; preds = %._crit_edge, %"_ZN115_$LT$core..ops..range..RangeInclusive$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h3771934e11456b61E.exit" +31: ; preds = %._crit_edge, %"_ZN115_$LT$core..ops..range..RangeInclusive$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h3771934e11456b61E.exit" ret i64 %.sroa.0.0.lcssa -35: ; preds = %16 - %36 = getelementptr inbounds nuw { { i64, [2 x i64] }, { { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 } }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, i32, i8, i8, [2 x i8] }, ptr %9, i64 %.sroa.0.019 +32: ; preds = %.lr.ph + %33 = getelementptr inbounds nuw { { i64, [2 x i64] }, { { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 } }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, i32, i8, i8, [2 x i8] }, ptr %9, i64 %.sroa.0.019 call void @llvm.lifetime.start.p0(ptr nonnull %3) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(152) %3, ptr noundef nonnull align 8 dereferenceable(152) %17, i64 152, i1 false) - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(152) %17, ptr noundef nonnull align 8 dereferenceable(152) %36, i64 152, i1 false) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(152) %36, ptr noundef nonnull align 8 dereferenceable(152) %3, i64 152, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(152) %3, ptr noundef nonnull align 8 dereferenceable(152) %15, i64 152, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(152) %15, ptr noundef nonnull align 8 dereferenceable(152) %33, i64 152, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(152) %33, ptr noundef nonnull align 8 dereferenceable(152) %3, i64 152, i1 false) call void @llvm.lifetime.end.p0(ptr nonnull %3) - %.not = icmp eq i64 %15, 0 + %.not = icmp eq i64 %14, 0 br i1 %.not, label %._crit_edge, label %.lr.ph } diff --git a/bench/rust-analyzer-rs/optimized/4hdqg9y9agw1ekve.ll b/bench/rust-analyzer-rs/optimized/4hdqg9y9agw1ekve.ll index b4ccf5fd9c9..0d7f7aa9fb2 100644 --- a/bench/rust-analyzer-rs/optimized/4hdqg9y9agw1ekve.ll +++ b/bench/rust-analyzer-rs/optimized/4hdqg9y9agw1ekve.ll @@ -50976,26 +50976,26 @@ _ZN11ide_assists8handlers16extract_function8Function11type_params17h1ea059bfa2ec br label %.body.thread5.i.i .thread.i.i35: ; preds = %.noexc36.i.i, %.noexc.i.i + %.pre-phi.i.ph.i.i = phi i64 [ %893, %.noexc.i.i ], [ %917, %.noexc36.i.i ] %.pn.i.ph.i.i = phi { i64, ptr } [ %892, %.noexc.i.i ], [ %916, %.noexc36.i.i ] - %.ph.i.i = phi i64 [ %893, %.noexc.i.i ], [ %917, %.noexc36.i.i ] %918 = extractvalue { i64, ptr } %.pn.i.ph.i.i, 1 %919 = getelementptr inbounds nuw i8, ptr %30, i64 8 - store i64 %.ph.i.i, ptr %30, align 8, !alias.scope !13284, !noalias !13334 + store i64 %.pre-phi.i.ph.i.i, ptr %30, align 8, !alias.scope !13284, !noalias !13334 store ptr %918, ptr %919, align 8, !alias.scope !13284, !noalias !13334 - %920 = icmp ne i64 %.ph.i.i, 4 + %920 = icmp ne i64 %.pre-phi.i.ph.i.i, 4 call void @llvm.assume(i1 %920) br label %925 921: ; preds = %899 - %.pre.i.i.i = extractvalue { i64, ptr } %900, 0 + %.pre28.i.i.i = extractvalue { i64, ptr } %900, 0 %922 = extractvalue { i64, ptr } %900, 1 %923 = getelementptr inbounds nuw i8, ptr %30, i64 8 - store i64 %.pre.i.i.i, ptr %30, align 8, !alias.scope !13284, !noalias !13334 + store i64 %.pre28.i.i.i, ptr %30, align 8, !alias.scope !13284, !noalias !13334 store ptr %922, ptr %923, align 8, !alias.scope !13284, !noalias !13334 - %924 = icmp ne i64 %.pre.i.i.i, 4 + %924 = icmp ne i64 %.pre28.i.i.i, 4 call void @llvm.assume(i1 %924) - %.not.i.i37 = icmp eq i64 %.pre.i.i.i, 3 - br i1 %.not.i.i37, label %.thread12.i.i, label %925 + %.not.i.i37 = icmp eq i64 %.pre28.i.i.i, 3 + br i1 %.not.i.i37, label %.thread13.i.i, label %925 925: ; preds = %921, %.thread.i.i35 call void @llvm.lifetime.start.p0(ptr nonnull %29), !noalias !13281 @@ -51007,7 +51007,7 @@ _ZN11ide_assists8handlers16extract_function8Function11type_params17h1ea059bfa2ec call void @llvm.lifetime.end.p0(ptr nonnull %29), !noalias !13281 br label %931 -.thread12.i.i: ; preds = %921 +.thread13.i.i: ; preds = %921 invoke void @"_ZN4core3ptr536drop_in_place$LT$core..iter..adapters..peekable..Peekable$LT$core..iter..adapters..flatten..FlatMap$LT$core..slice..iter..Iter$LT$syntax..ast..generated..nodes..GenericParamList$GT$$C$core..iter..adapters..filter..Filter$LT$syntax..ast..AstChildren$LT$syntax..ast..generated..nodes..GenericParam$GT$$C$ide_assists..handlers..extract_function..make_generic_param_list..$u7b$$u7b$closure$u7d$$u7d$..$u7b$$u7b$closure$u7d$$u7d$$GT$$C$ide_assists..handlers..extract_function..make_generic_param_list..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17hff74da53cbd430acE"(ptr noalias noundef nonnull align 8 dereferenceable(120) %30) to label %931 unwind label %929 @@ -51027,13 +51027,13 @@ _ZN11ide_assists8handlers16extract_function8Function11type_params17h1ea059bfa2ec invoke void @"_ZN4core3ptr58drop_in_place$LT$alloc..vec..Vec$LT$hir..TypeParam$GT$$GT$17h85a822237cf56c91E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %32) #46 to label %.body45.thread unwind label %987 -929: ; preds = %.thread12.i.i, %925 +929: ; preds = %.thread13.i.i, %925 %930 = landingpad { ptr, i32 } cleanup br label %.body.i33 -931: ; preds = %.thread12.i.i, %.noexc.i36 - %.015.i.i = phi ptr [ %926, %.noexc.i36 ], [ null, %.thread12.i.i ] +931: ; preds = %.thread13.i.i, %.noexc.i36 + %.016.i.i = phi ptr [ %926, %.noexc.i36 ], [ null, %.thread13.i.i ] call void @llvm.lifetime.end.p0(ptr nonnull %30), !noalias !13281 %932 = load ptr, ptr %884, align 8, !noalias !13249, !nonnull !23, !noundef !23 %933 = load i64, ptr %886, align 8, !noalias !13249, !noundef !23 @@ -51191,11 +51191,11 @@ _ZN11ide_assists8handlers16extract_function8Function11type_params17h1ea059bfa2ec .body37.i: ; preds = %969, %.body.thread5.i23.i %eh.lpad-body38.i = phi { ptr, i32 } [ %970, %969 ], [ %eh.lpad-body4.i24.i, %.body.thread5.i23.i ] - %971 = icmp eq ptr %.015.i.i, null + %971 = icmp eq ptr %.016.i.i, null br i1 %971, label %.body.i33, label %972 972: ; preds = %.body37.i - %973 = getelementptr inbounds nuw i8, ptr %.015.i.i, i64 48 + %973 = getelementptr inbounds nuw i8, ptr %.016.i.i, i64 48 %974 = load i32, ptr %973, align 4, !noalias !13389, !noundef !23 %975 = add i32 %974, -1 store i32 %975, ptr %973, align 4, !noalias !13389 @@ -51203,7 +51203,7 @@ _ZN11ide_assists8handlers16extract_function8Function11type_params17h1ea059bfa2ec br i1 %976, label %977, label %.body.i33 977: ; preds = %972 - invoke void @_ZN5rowan6cursor4free17ha2e1b2c8c83f79d6E(ptr noundef nonnull %.015.i.i) + invoke void @_ZN5rowan6cursor4free17ha2e1b2c8c83f79d6E(ptr noundef nonnull %.016.i.i) to label %.body.i33 unwind label %987 978: ; preds = %966, %.noexc35.i @@ -51253,7 +51253,7 @@ _ZN11ide_assists8handlers16extract_function8Function11type_params17h1ea059bfa2ec %996 = getelementptr inbounds nuw i8, ptr %2, i64 81 %997 = load i8, ptr %996, align 1, !range !665, !noundef !23 %998 = trunc nuw i8 %997 to i1 - %999 = call noundef nonnull ptr @_ZN6syntax3ast4make3fn_17haa67e8388b0fcbffE(ptr noundef null, ptr noundef nonnull %85, ptr noundef %.015.i.i, ptr noundef %.09.i.i, ptr noundef nonnull %111, ptr noundef nonnull %.0217.i, ptr noundef %.0.i, i1 noundef zeroext %992, i1 noundef zeroext %995, i1 noundef zeroext %998) + %999 = call noundef nonnull ptr @_ZN6syntax3ast4make3fn_17haa67e8388b0fcbffE(ptr noundef null, ptr noundef nonnull %85, ptr noundef %.016.i.i, ptr noundef %.09.i.i, ptr noundef nonnull %111, ptr noundef nonnull %.0217.i, ptr noundef %.0.i, i1 noundef zeroext %992, i1 noundef zeroext %995, i1 noundef zeroext %998) ret ptr %999 .body45.thread: ; preds = %.body.i33, %.body45.thread89 diff --git a/bench/rust-analyzer-rs/optimized/4mz36mxu8r0g7zqk.ll b/bench/rust-analyzer-rs/optimized/4mz36mxu8r0g7zqk.ll index dccef364793..e6aaae2c139 100644 --- a/bench/rust-analyzer-rs/optimized/4mz36mxu8r0g7zqk.ll +++ b/bench/rust-analyzer-rs/optimized/4mz36mxu8r0g7zqk.ll @@ -7,8 +7,6 @@ target triple = "x86_64-unknown-linux-gnu" @anon.551f5282231713dc5a82db078fc3c216.6 = private unnamed_addr constant <{ [32 x i8] }> <{ [32 x i8] c"assertion failed: idx < CAPACITY" }>, align 1 @anon.551f5282231713dc5a82db078fc3c216.7 = private unnamed_addr constant <{ [91 x i8] }> <{ [91 x i8] c"/rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/alloc/src/collections/btree/node.rs" }>, align 1 @anon.551f5282231713dc5a82db078fc3c216.11 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.551f5282231713dc5a82db078fc3c216.7, [16 x i8] c"[\00\00\00\00\00\00\00\B3\02\00\00\09\00\00\00" }>, align 8 -@anon.551f5282231713dc5a82db078fc3c216.12 = private unnamed_addr constant <{ [40 x i8] }> <{ [40 x i8] c"assertion failed: src.len() == dst.len()" }>, align 1 -@anon.551f5282231713dc5a82db078fc3c216.13 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.551f5282231713dc5a82db078fc3c216.7, [16 x i8] c"[\00\00\00\00\00\00\00/\07\00\00\05\00\00\00" }>, align 8 @anon.551f5282231713dc5a82db078fc3c216.18 = private unnamed_addr constant <{ [39 x i8] }> <{ [39 x i8] c"assertion failed: old_left_len >= count" }>, align 1 @anon.551f5282231713dc5a82db078fc3c216.19 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.551f5282231713dc5a82db078fc3c216.7, [16 x i8] c"[\00\00\00\00\00\00\00\DD\05\00\00\0D\00\00\00" }>, align 8 @anon.551f5282231713dc5a82db078fc3c216.22 = private unnamed_addr constant <{ [25 x i8] }> <{ [25 x i8] c"assertion failed: len > 0" }>, align 1 @@ -3830,7 +3828,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %11 = load i64, ptr %10, align 8, !noundef !21 %12 = load ptr, ptr %0, align 8, !nonnull !21, !noundef !21 %.not16.i = icmp eq i64 %11, 0 - br i1 %.not16.i, label %.loopexit95, label %.lr.ph.i + br i1 %.not16.i, label %.loopexit94, label %.lr.ph.i .lr.ph.i: ; preds = %3, %.lr.ph.i %.018.i = phi ptr [ %19, %.lr.ph.i ], [ %12, %3 ] @@ -3845,28 +3843,28 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %19 = load ptr, ptr %18, align 8, !noalias !1283, !nonnull !21, !noundef !21 %20 = add i64 %.01517.i, -1 %.not.i = icmp eq i64 %20, 0 - br i1 %.not.i, label %.loopexit95, label %.lr.ph.i + br i1 %.not.i, label %.loopexit94, label %.lr.ph.i -.loopexit95: ; preds = %.lr.ph.i, %3 +.loopexit94: ; preds = %.lr.ph.i, %3 %.0.lcssa.i = phi ptr [ %12, %3 ], [ %19, %.lr.ph.i ] call void @llvm.lifetime.start.p0(ptr nonnull %9) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %9, ptr noundef nonnull align 8 dereferenceable(56) %1, i64 56, i1 false) br label %21 -21: ; preds = %.loopexit, %.loopexit95 - %.sroa.0.0 = phi ptr [ %.0.lcssa.i, %.loopexit95 ], [ %.sroa.0.1, %.loopexit ] +21: ; preds = %.loopexit, %.loopexit94 + %.sroa.0.0 = phi ptr [ %.0.lcssa.i, %.loopexit94 ], [ %.sroa.0.1, %.loopexit ] invoke void @"_ZN137_$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$K$C$V$C$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf77e4b51dcd35b24E"(ptr noalias noundef nonnull sret({ i64, [2 x i64] }) align 8 captures(none) dereferenceable(24) %8, ptr noalias noundef nonnull align 8 dereferenceable(56) %9) to label %24 unwind label %22 -.body35: ; preds = %127, %166, %22 - %.pn = phi { ptr, i32 } [ %eh.lpad-body39.ph, %166 ], [ %23, %22 ], [ %128, %127 ] +.body34: ; preds = %124, %163, %22 + %.pn = phi { ptr, i32 } [ %eh.lpad-body38.ph, %163 ], [ %23, %22 ], [ %125, %124 ] invoke void @"_ZN4core3ptr447drop_in_place$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$alloc..string..String$C$alloc..collections..btree..set_val..SetValZST$C$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$alloc..string..String$GT$$C$alloc..collections..btree..set..BTreeSet$LT$alloc..string..String$GT$..from_sorted_iter$LT$alloc..vec..into_iter..IntoIter$LT$alloc..string..String$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17he2f737b4e6bf956aE"(ptr noalias noundef nonnull align 8 dereferenceable(56) %9) #50 - to label %.body unwind label %167 + to label %.body unwind label %164 22: ; preds = %21 %23 = landingpad { ptr, i32 } cleanup - br label %.body35 + br label %.body34 24: ; preds = %21 %25 = load i64, ptr %8, align 8, !range !127, !noundef !21 @@ -3927,7 +3925,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %43 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 274 %44 = load i16, ptr %43, align 2, !noundef !21 %45 = icmp ult i16 %44, 11 - br i1 %45, label %161, label %.preheader + br i1 %45, label %158, label %.preheader "_ZN4core3ptr447drop_in_place$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$alloc..string..String$C$alloc..collections..btree..set_val..SetValZST$C$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$alloc..string..String$GT$$C$alloc..collections..btree..set..BTreeSet$LT$alloc..string..String$GT$..from_sorted_iter$LT$alloc..vec..into_iter..IntoIter$LT$alloc..string..String$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17he2f737b4e6bf956aE.exit": ; preds = %"_ZN4core3ptr98drop_in_place$LT$$LP$alloc..string..String$C$alloc..collections..btree..set_val..SetValZST$RP$$GT$17h7a5fab4ebcb44e09E.llvm.273501356006530532.exit.i.i.i.i", %"_ZN4core3ptr306drop_in_place$LT$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$alloc..string..String$GT$$C$alloc..collections..btree..set..BTreeSet$LT$alloc..string..String$GT$..from_sorted_iter$LT$alloc..vec..into_iter..IntoIter$LT$alloc..string..String$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h7dcc32cf8e649ee1E.exit.i.i" call void @llvm.lifetime.end.p0(ptr nonnull %9) @@ -3967,7 +3965,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %59 = icmp ult i16 %58, 5 br i1 %59, label %60, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h84e0ce90d91ff590E.exit.i" -"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h84e0ce90d91ff590E.exit.i": ; preds = %91, %"_ZN5alloc11collections5btree4node40NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$7last_kv17ha622e161725458d6E.exit.i" +"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h84e0ce90d91ff590E.exit.i": ; preds = %88, %"_ZN5alloc11collections5btree4node40NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$7last_kv17ha622e161725458d6E.exit.i" %.not.i31 = icmp eq i64 %53, 0 br i1 %.not.i31, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17hd47b80ca75df3838E.exit", label %.lr.ph.i30 @@ -3996,303 +3994,294 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %70, ptr nonnull align 8 %69, i64 %71, i1 false), !noalias !1317 %72 = add nuw nsw i64 %67, 1 %73 = sub nuw nsw i64 %66, %72 - %74 = add nsw i64 %61, -1 - %75 = icmp eq i64 %73, %74 - br i1 %75, label %76, label %.noexc34 - -.noexc34: ; preds = %65 - call void @_ZN4core9panicking5panic17h44790a89027c670fE(ptr noalias noundef nonnull readonly align 1 @anon.551f5282231713dc5a82db078fc3c216.12, i64 noundef 40, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.551f5282231713dc5a82db078fc3c216.13) #51 - unreachable - -76: ; preds = %65 - %77 = getelementptr inbounds nuw i8, ptr %52, i64 8 - %78 = getelementptr inbounds nuw { [3 x i64] }, ptr %77, i64 %72 - %79 = mul nuw nsw i64 %73, 24 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %69, ptr nonnull readonly align 8 %78, i64 %79, i1 false), !alias.scope !1320, !noalias !1317 - %80 = getelementptr inbounds nuw { [3 x i64] }, ptr %77, i64 %67 - %81 = getelementptr inbounds nuw i8, ptr %.011.i, i64 8 - %82 = getelementptr inbounds nuw { [3 x i64] }, ptr %81, i64 %49 + %74 = getelementptr inbounds nuw i8, ptr %52, i64 8 + %75 = getelementptr inbounds nuw { [3 x i64] }, ptr %74, i64 %72 + %76 = mul nuw nsw i64 %73, 24 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %69, ptr nonnull readonly align 8 %75, i64 %76, i1 false), !alias.scope !1320, !noalias !1317 + %77 = getelementptr inbounds nuw { [3 x i64] }, ptr %74, i64 %67 + %78 = getelementptr inbounds nuw i8, ptr %.011.i, i64 8 + %79 = getelementptr inbounds nuw { [3 x i64] }, ptr %78, i64 %49 call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.018.i.i) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.018.i.i, ptr noundef nonnull align 8 dereferenceable(24) %82, i64 24, i1 false), !noalias !1317 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %82, ptr noundef nonnull align 8 dereferenceable(24) %80, i64 24, i1 false), !noalias !1317 - %83 = getelementptr inbounds nuw { [3 x i64] }, ptr %69, i64 %73 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %83, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.018.i.i, i64 24, i1 false), !noalias !1317 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.018.i.i, ptr noundef nonnull align 8 dereferenceable(24) %79, i64 24, i1 false), !noalias !1317 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %79, ptr noundef nonnull align 8 dereferenceable(24) %77, i64 24, i1 false), !noalias !1317 + %80 = getelementptr inbounds nuw { [3 x i64] }, ptr %69, i64 %73 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %80, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.018.i.i, i64 24, i1 false), !noalias !1317 call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.018.i.i) %cond.i = icmp eq i64 %53, 0 br i1 %cond.i, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17hd47b80ca75df3838E.exit", label %_ZN5alloc11collections5btree4node13move_to_slice17heb9dcb63b14c984bE.exit.i.i -_ZN5alloc11collections5btree4node13move_to_slice17heb9dcb63b14c984bE.exit.i.i: ; preds = %76 - %84 = getelementptr inbounds nuw i8, ptr %56, i64 280 - %85 = getelementptr inbounds nuw ptr, ptr %84, i64 %61 - %86 = shl nuw nsw i64 %64, 3 - %87 = add nuw nsw i64 %86, 8 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %85, ptr noundef nonnull align 8 dereferenceable(1) %84, i64 %87, i1 false), !noalias !1317 - %88 = getelementptr inbounds nuw i8, ptr %52, i64 280 - %89 = getelementptr inbounds nuw ptr, ptr %88, i64 %72 - %90 = shl nuw nsw i64 %61, 3 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %84, ptr noundef nonnull readonly align 8 dereferenceable(1) %89, i64 %90, i1 false), !alias.scope !1324, !noalias !1317 - br label %91 - -91: ; preds = %91, %_ZN5alloc11collections5btree4node13move_to_slice17heb9dcb63b14c984bE.exit.i.i - %.sroa.0.05.i.i.i = phi i64 [ 0, %_ZN5alloc11collections5btree4node13move_to_slice17heb9dcb63b14c984bE.exit.i.i ], [ %92, %91 ] - %92 = add nuw nsw i64 %.sroa.0.05.i.i.i, 1 - %93 = getelementptr inbounds nuw ptr, ptr %84, i64 %.sroa.0.05.i.i.i - %94 = load ptr, ptr %93, align 8, !noalias !1317, !nonnull !21, !noundef !21 - store ptr %56, ptr %94, align 8, !noalias !1317 - %95 = trunc nuw nsw i64 %.sroa.0.05.i.i.i to i16 - %96 = getelementptr inbounds nuw i8, ptr %94, i64 272 - store i16 %95, ptr %96, align 8, !noalias !1317 +_ZN5alloc11collections5btree4node13move_to_slice17heb9dcb63b14c984bE.exit.i.i: ; preds = %65 + %81 = getelementptr inbounds nuw i8, ptr %56, i64 280 + %82 = getelementptr inbounds nuw ptr, ptr %81, i64 %61 + %83 = shl nuw nsw i64 %64, 3 + %84 = add nuw nsw i64 %83, 8 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %82, ptr noundef nonnull align 8 dereferenceable(1) %81, i64 %84, i1 false), !noalias !1317 + %85 = getelementptr inbounds nuw i8, ptr %52, i64 280 + %86 = getelementptr inbounds nuw ptr, ptr %85, i64 %72 + %87 = shl nuw nsw i64 %61, 3 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %81, ptr noundef nonnull readonly align 8 dereferenceable(1) %86, i64 %87, i1 false), !alias.scope !1324, !noalias !1317 + br label %88 + +88: ; preds = %88, %_ZN5alloc11collections5btree4node13move_to_slice17heb9dcb63b14c984bE.exit.i.i + %.sroa.0.05.i.i.i = phi i64 [ 0, %_ZN5alloc11collections5btree4node13move_to_slice17heb9dcb63b14c984bE.exit.i.i ], [ %89, %88 ] + %89 = add nuw nsw i64 %.sroa.0.05.i.i.i, 1 + %90 = getelementptr inbounds nuw ptr, ptr %81, i64 %.sroa.0.05.i.i.i + %91 = load ptr, ptr %90, align 8, !noalias !1317, !nonnull !21, !noundef !21 + store ptr %56, ptr %91, align 8, !noalias !1317 + %92 = trunc nuw nsw i64 %.sroa.0.05.i.i.i to i16 + %93 = getelementptr inbounds nuw i8, ptr %91, i64 272 + store i16 %92, ptr %93, align 8, !noalias !1317 %exitcond.not.i.i.i = icmp eq i64 %.sroa.0.05.i.i.i, 5 - br i1 %exitcond.not.i.i.i, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h84e0ce90d91ff590E.exit.i", label %91 + br i1 %exitcond.not.i.i.i, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h84e0ce90d91ff590E.exit.i", label %88 -"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17hd47b80ca75df3838E.exit": ; preds = %76, %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h84e0ce90d91ff590E.exit.i", %"_ZN4core3ptr447drop_in_place$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$alloc..string..String$C$alloc..collections..btree..set_val..SetValZST$C$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$alloc..string..String$GT$$C$alloc..collections..btree..set..BTreeSet$LT$alloc..string..String$GT$..from_sorted_iter$LT$alloc..vec..into_iter..IntoIter$LT$alloc..string..String$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17he2f737b4e6bf956aE.exit" +"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17hd47b80ca75df3838E.exit": ; preds = %65, %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h84e0ce90d91ff590E.exit.i", %"_ZN4core3ptr447drop_in_place$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$alloc..string..String$C$alloc..collections..btree..set_val..SetValZST$C$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$alloc..string..String$GT$$C$alloc..collections..btree..set..BTreeSet$LT$alloc..string..String$GT$..from_sorted_iter$LT$alloc..vec..into_iter..IntoIter$LT$alloc..string..String$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17he2f737b4e6bf956aE.exit" ret void -.preheader: ; preds = %42, %99 - %.sroa.5.0 = phi i64 [ %100, %99 ], [ 0, %42 ] - %.sroa.02.0 = phi ptr [ %97, %99 ], [ %.sroa.0.0, %42 ] - %97 = load ptr, ptr %.sroa.02.0, align 8, !noalias !1328, !noundef !21 - %98 = icmp eq ptr %97, null - br i1 %98, label %104, label %99 +.preheader: ; preds = %42, %96 + %.sroa.5.0 = phi i64 [ %97, %96 ], [ 0, %42 ] + %.sroa.02.0 = phi ptr [ %94, %96 ], [ %.sroa.0.0, %42 ] + %94 = load ptr, ptr %.sroa.02.0, align 8, !noalias !1328, !noundef !21 + %95 = icmp eq ptr %94, null + br i1 %95, label %101, label %96 -.loopexit90: ; preds = %.loopexit84 - %lpad.loopexit92 = landingpad { ptr, i32 } +.loopexit89: ; preds = %.loopexit83 + %lpad.loopexit91 = landingpad { ptr, i32 } cleanup - br label %166 + br label %163 -.loopexit.split-lp91: ; preds = %121 - %lpad.loopexit.split-lp93 = landingpad { ptr, i32 } +.loopexit.split-lp90: ; preds = %118 + %lpad.loopexit.split-lp92 = landingpad { ptr, i32 } cleanup - br label %166 + br label %163 -99: ; preds = %.preheader - %100 = add i64 %.sroa.5.0, 1 - %101 = getelementptr inbounds nuw i8, ptr %97, i64 274 - %102 = load i16, ptr %101, align 2, !noundef !21 - %103 = icmp ult i16 %102, 11 - br i1 %103, label %.loopexit84, label %.preheader +96: ; preds = %.preheader + %97 = add i64 %.sroa.5.0, 1 + %98 = getelementptr inbounds nuw i8, ptr %94, i64 274 + %99 = load i16, ptr %98, align 2, !noundef !21 + %100 = icmp ult i16 %99, 11 + br i1 %100, label %.loopexit83, label %.preheader -104: ; preds = %.preheader +101: ; preds = %.preheader call void @llvm.experimental.noalias.scope.decl(metadata !1331) - %105 = load ptr, ptr %0, align 8, !alias.scope !1331, !nonnull !21, !noundef !21 - %106 = load i64, ptr %10, align 8, !alias.scope !1331, !noundef !21 - %107 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17hdcae3c5a5b57ca29E.llvm.2875332049115192089"() - to label %.noexc.i unwind label %.loopexit85, !noalias !1331 + %102 = load ptr, ptr %0, align 8, !alias.scope !1331, !nonnull !21, !noundef !21 + %103 = load i64, ptr %10, align 8, !alias.scope !1331, !noundef !21 + %104 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17hdcae3c5a5b57ca29E.llvm.2875332049115192089"() + to label %.noexc.i unwind label %.loopexit84, !noalias !1331 -.noexc.i: ; preds = %104 - %108 = icmp eq ptr %107, null - br i1 %108, label %109, label %113 +.noexc.i: ; preds = %101 + %105 = icmp eq ptr %104, null + br i1 %105, label %106, label %110 -109: ; preds = %.noexc.i +106: ; preds = %.noexc.i invoke void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef 8, i64 noundef 376) #51 - to label %.noexc3.i unwind label %.loopexit.split-lp86, !noalias !1331 + to label %.noexc3.i unwind label %.loopexit.split-lp85, !noalias !1331 -.noexc3.i: ; preds = %109 +.noexc3.i: ; preds = %106 unreachable -.loopexit85: ; preds = %104 - %lpad.loopexit87 = landingpad { ptr, i32 } +.loopexit84: ; preds = %101 + %lpad.loopexit86 = landingpad { ptr, i32 } cleanup - br label %110 + br label %107 -.loopexit.split-lp86: ; preds = %109 - %lpad.loopexit.split-lp88 = landingpad { ptr, i32 } +.loopexit.split-lp85: ; preds = %106 + %lpad.loopexit.split-lp87 = landingpad { ptr, i32 } cleanup - br label %110 + br label %107 -110: ; preds = %.loopexit.split-lp86, %.loopexit85 - %lpad.phi89 = phi { ptr, i32 } [ %lpad.loopexit87, %.loopexit85 ], [ %lpad.loopexit.split-lp88, %.loopexit.split-lp86 ] +107: ; preds = %.loopexit.split-lp85, %.loopexit84 + %lpad.phi88 = phi { ptr, i32 } [ %lpad.loopexit86, %.loopexit84 ], [ %lpad.loopexit.split-lp87, %.loopexit.split-lp85 ] invoke void @"_ZN93_$LT$alloc..collections..btree..mem..replace..PanicGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17he7f40e69e6f26b83E"(ptr noalias noundef nonnull align 1 %4) - to label %166 unwind label %111, !noalias !1331 + to label %163 unwind label %108, !noalias !1331 -111: ; preds = %110 - %112 = landingpad { ptr, i32 } +108: ; preds = %107 + %109 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #48, !noalias !1331 unreachable -113: ; preds = %.noexc.i - store ptr null, ptr %107, align 8, !noalias !1331 - %114 = getelementptr inbounds nuw i8, ptr %107, i64 274 - store i16 0, ptr %114, align 2, !noalias !1331 - %115 = getelementptr inbounds nuw i8, ptr %107, i64 280 - store ptr %105, ptr %115, align 8, !noalias !1331 - %116 = add i64 %106, 1 - store ptr %107, ptr %105, align 8, !noalias !1334 - %117 = getelementptr inbounds nuw i8, ptr %105, i64 272 - store i16 0, ptr %117, align 8, !noalias !1339 - store ptr %107, ptr %0, align 8, !alias.scope !1331 - store i64 %116, ptr %10, align 8, !alias.scope !1331 - br label %.loopexit84 - -.loopexit84: ; preds = %99, %113 - %.sroa.062.0 = phi ptr [ %107, %113 ], [ %97, %99 ] - %.sroa.663.0 = phi i64 [ %116, %113 ], [ %100, %99 ] - %118 = add i64 %.sroa.663.0, -1 - %119 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h3db4fe9f58fcf8caE.llvm.2875332049115192089"() - to label %.noexc40 unwind label %.loopexit90 - -.noexc40: ; preds = %.loopexit84 - %120 = icmp eq ptr %119, null - br i1 %120, label %121, label %122 - -121: ; preds = %.noexc40 +110: ; preds = %.noexc.i + store ptr null, ptr %104, align 8, !noalias !1331 + %111 = getelementptr inbounds nuw i8, ptr %104, i64 274 + store i16 0, ptr %111, align 2, !noalias !1331 + %112 = getelementptr inbounds nuw i8, ptr %104, i64 280 + store ptr %102, ptr %112, align 8, !noalias !1331 + %113 = add i64 %103, 1 + store ptr %104, ptr %102, align 8, !noalias !1334 + %114 = getelementptr inbounds nuw i8, ptr %102, i64 272 + store i16 0, ptr %114, align 8, !noalias !1339 + store ptr %104, ptr %0, align 8, !alias.scope !1331 + store i64 %113, ptr %10, align 8, !alias.scope !1331 + br label %.loopexit83 + +.loopexit83: ; preds = %96, %110 + %.sroa.061.0 = phi ptr [ %104, %110 ], [ %94, %96 ] + %.sroa.662.0 = phi i64 [ %113, %110 ], [ %97, %96 ] + %115 = add i64 %.sroa.662.0, -1 + %116 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h3db4fe9f58fcf8caE.llvm.2875332049115192089"() + to label %.noexc39 unwind label %.loopexit89 + +.noexc39: ; preds = %.loopexit83 + %117 = icmp eq ptr %116, null + br i1 %117, label %118, label %119 + +118: ; preds = %.noexc39 invoke void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef 8, i64 noundef 280) #51 - to label %.noexc41 unwind label %.loopexit.split-lp91 + to label %.noexc40 unwind label %.loopexit.split-lp90 -.noexc41: ; preds = %121 +.noexc40: ; preds = %118 unreachable -122: ; preds = %.noexc40 - store ptr null, ptr %119, align 8 - %123 = getelementptr inbounds nuw i8, ptr %119, i64 274 - store i16 0, ptr %123, align 2 - %.not = icmp eq i64 %118, 0 - br i1 %.not, label %.loopexit127, label %.lr.ph +119: ; preds = %.noexc39 + store ptr null, ptr %116, align 8 + %120 = getelementptr inbounds nuw i8, ptr %116, i64 274 + store i16 0, ptr %120, align 2 + %.not = icmp eq i64 %115, 0 + br i1 %.not, label %.loopexit125, label %.lr.ph -.invoke.i: ; preds = %.loopexit127 +.invoke.i: ; preds = %.loopexit125 invoke void @_ZN4core9panicking5panic17h44790a89027c670fE(ptr noalias noundef nonnull readonly align 1 @anon.551f5282231713dc5a82db078fc3c216.6, i64 noundef 32, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.551f5282231713dc5a82db078fc3c216.11) #51 - to label %.cont.i unwind label %127, !noalias !1340 + to label %.cont.i unwind label %124, !noalias !1340 .cont.i: ; preds = %.invoke.i unreachable -.loopexit127: ; preds = %_ZN5alloc11collections5btree3mem7replace17h87e978e052ec58a4E.exit58, %122 - %.sroa.068.0.lcssa = phi ptr [ %119, %122 ], [ %152, %_ZN5alloc11collections5btree3mem7replace17h87e978e052ec58a4E.exit58 ] +.loopexit125: ; preds = %_ZN5alloc11collections5btree3mem7replace17h87e978e052ec58a4E.exit57, %119 + %.sroa.067.0.lcssa = phi ptr [ %116, %119 ], [ %149, %_ZN5alloc11collections5btree3mem7replace17h87e978e052ec58a4E.exit57 ] call void @llvm.lifetime.start.p0(ptr nonnull %6) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(24) %8, i64 24, i1 false) - %124 = getelementptr inbounds nuw i8, ptr %.sroa.062.0, i64 274 - %125 = load i16, ptr %124, align 2, !noalias !1340, !noundef !21 - %126 = icmp ult i16 %125, 11 - br i1 %126, label %131, label %.invoke.i + %121 = getelementptr inbounds nuw i8, ptr %.sroa.061.0, i64 274 + %122 = load i16, ptr %121, align 2, !noalias !1340, !noundef !21 + %123 = icmp ult i16 %122, 11 + br i1 %123, label %128, label %.invoke.i -127: ; preds = %.invoke.i - %128 = landingpad { ptr, i32 } +124: ; preds = %.invoke.i + %125 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17hdcf7b889bac065f1E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6) #50 - to label %.body35 unwind label %129 + to label %.body34 unwind label %126 -129: ; preds = %127 - %130 = landingpad { ptr, i32 } +126: ; preds = %124 + %127 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #48 unreachable -131: ; preds = %.loopexit127 - %132 = zext nneg i16 %125 to i64 - %133 = add nuw nsw i16 %125, 1 - store i16 %133, ptr %124, align 2, !noalias !1340 - %134 = getelementptr inbounds nuw i8, ptr %.sroa.062.0, i64 8 - %135 = getelementptr inbounds nuw { [3 x i64] }, ptr %134, i64 %132 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %135, ptr noundef nonnull align 8 dereferenceable(24) %8, i64 24, i1 false) - %136 = add nuw nsw i64 %132, 1 - %137 = getelementptr inbounds nuw i8, ptr %.sroa.062.0, i64 280 - %138 = getelementptr inbounds nuw ptr, ptr %137, i64 %136 - store ptr %.sroa.068.0.lcssa, ptr %138, align 8, !noalias !1340 - store ptr %.sroa.062.0, ptr %.sroa.068.0.lcssa, align 8, !noalias !1340 - %139 = trunc nuw nsw i64 %136 to i16 - %140 = getelementptr inbounds nuw i8, ptr %.sroa.068.0.lcssa, i64 272 - store i16 %139, ptr %140, align 8, !noalias !1340 +128: ; preds = %.loopexit125 + %129 = zext nneg i16 %122 to i64 + %130 = add nuw nsw i16 %122, 1 + store i16 %130, ptr %121, align 2, !noalias !1340 + %131 = getelementptr inbounds nuw i8, ptr %.sroa.061.0, i64 8 + %132 = getelementptr inbounds nuw { [3 x i64] }, ptr %131, i64 %129 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %132, ptr noundef nonnull align 8 dereferenceable(24) %8, i64 24, i1 false) + %133 = add nuw nsw i64 %129, 1 + %134 = getelementptr inbounds nuw i8, ptr %.sroa.061.0, i64 280 + %135 = getelementptr inbounds nuw ptr, ptr %134, i64 %133 + store ptr %.sroa.067.0.lcssa, ptr %135, align 8, !noalias !1340 + store ptr %.sroa.061.0, ptr %.sroa.067.0.lcssa, align 8, !noalias !1340 + %136 = trunc nuw nsw i64 %133 to i16 + %137 = getelementptr inbounds nuw i8, ptr %.sroa.067.0.lcssa, i64 272 + store i16 %136, ptr %137, align 8, !noalias !1340 call void @llvm.lifetime.end.p0(ptr nonnull %6) - %.not16.i45 = icmp eq i64 %.sroa.663.0, 0 - br i1 %.not16.i45, label %.loopexit, label %.lr.ph.i46 - -.lr.ph.i46: ; preds = %131, %.lr.ph.i46 - %.018.i47 = phi ptr [ %147, %.lr.ph.i46 ], [ %.sroa.062.0, %131 ] - %.01517.i48 = phi i64 [ %148, %.lr.ph.i46 ], [ %.sroa.663.0, %131 ] - %141 = getelementptr inbounds nuw i8, ptr %.018.i47, i64 274 - %142 = load i16, ptr %141, align 2, !noalias !1343, !noundef !21 - %143 = zext nneg i16 %142 to i64 - %144 = getelementptr inbounds nuw i8, ptr %.018.i47, i64 280 - %145 = icmp ult i16 %142, 12 - call void @llvm.assume(i1 %145) - %146 = getelementptr inbounds nuw ptr, ptr %144, i64 %143 - %147 = load ptr, ptr %146, align 8, !noalias !1343, !nonnull !21, !noundef !21 - %148 = add i64 %.01517.i48, -1 - %.not.i49 = icmp eq i64 %148, 0 - br i1 %.not.i49, label %.loopexit, label %.lr.ph.i46 - -.loopexit: ; preds = %.lr.ph.i46, %131, %161 - %.sroa.0.1 = phi ptr [ %.sroa.0.0, %161 ], [ %.sroa.062.0, %131 ], [ %147, %.lr.ph.i46 ] - %149 = load i64, ptr %2, align 8, !noundef !21 - %150 = add i64 %149, 1 - store i64 %150, ptr %2, align 8 + %.not16.i44 = icmp eq i64 %.sroa.662.0, 0 + br i1 %.not16.i44, label %.loopexit, label %.lr.ph.i45 + +.lr.ph.i45: ; preds = %128, %.lr.ph.i45 + %.018.i46 = phi ptr [ %144, %.lr.ph.i45 ], [ %.sroa.061.0, %128 ] + %.01517.i47 = phi i64 [ %145, %.lr.ph.i45 ], [ %.sroa.662.0, %128 ] + %138 = getelementptr inbounds nuw i8, ptr %.018.i46, i64 274 + %139 = load i16, ptr %138, align 2, !noalias !1343, !noundef !21 + %140 = zext nneg i16 %139 to i64 + %141 = getelementptr inbounds nuw i8, ptr %.018.i46, i64 280 + %142 = icmp ult i16 %139, 12 + call void @llvm.assume(i1 %142) + %143 = getelementptr inbounds nuw ptr, ptr %141, i64 %140 + %144 = load ptr, ptr %143, align 8, !noalias !1343, !nonnull !21, !noundef !21 + %145 = add i64 %.01517.i47, -1 + %.not.i48 = icmp eq i64 %145, 0 + br i1 %.not.i48, label %.loopexit, label %.lr.ph.i45 + +.loopexit: ; preds = %.lr.ph.i45, %128, %158 + %.sroa.0.1 = phi ptr [ %.sroa.0.0, %158 ], [ %.sroa.061.0, %128 ], [ %144, %.lr.ph.i45 ] + %146 = load i64, ptr %2, align 8, !noundef !21 + %147 = add i64 %146, 1 + store i64 %147, ptr %2, align 8 call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %21 -.lr.ph: ; preds = %122, %_ZN5alloc11collections5btree3mem7replace17h87e978e052ec58a4E.exit58 - %.sroa.012.0105 = phi i64 [ %151, %_ZN5alloc11collections5btree3mem7replace17h87e978e052ec58a4E.exit58 ], [ 0, %122 ] - %.sroa.068.0103 = phi ptr [ %152, %_ZN5alloc11collections5btree3mem7replace17h87e978e052ec58a4E.exit58 ], [ %119, %122 ] - %151 = add nuw i64 %.sroa.012.0105, 1 - %152 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17hdcae3c5a5b57ca29E.llvm.2875332049115192089"() - to label %.noexc.i53 unwind label %.loopexit83, !noalias !1346 +.lr.ph: ; preds = %119, %_ZN5alloc11collections5btree3mem7replace17h87e978e052ec58a4E.exit57 + %.sroa.012.0104 = phi i64 [ %148, %_ZN5alloc11collections5btree3mem7replace17h87e978e052ec58a4E.exit57 ], [ 0, %119 ] + %.sroa.067.0102 = phi ptr [ %149, %_ZN5alloc11collections5btree3mem7replace17h87e978e052ec58a4E.exit57 ], [ %116, %119 ] + %148 = add nuw i64 %.sroa.012.0104, 1 + %149 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17hdcae3c5a5b57ca29E.llvm.2875332049115192089"() + to label %.noexc.i52 unwind label %.loopexit82, !noalias !1346 -.noexc.i53: ; preds = %.lr.ph - %153 = icmp eq ptr %152, null - br i1 %153, label %154, label %_ZN5alloc11collections5btree3mem7replace17h87e978e052ec58a4E.exit58 +.noexc.i52: ; preds = %.lr.ph + %150 = icmp eq ptr %149, null + br i1 %150, label %151, label %_ZN5alloc11collections5btree3mem7replace17h87e978e052ec58a4E.exit57 -154: ; preds = %.noexc.i53 +151: ; preds = %.noexc.i52 invoke void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef 8, i64 noundef 376) #51 - to label %.noexc3.i54 unwind label %.loopexit.split-lp, !noalias !1346 + to label %.noexc3.i53 unwind label %.loopexit.split-lp, !noalias !1346 -.noexc3.i54: ; preds = %154 +.noexc3.i53: ; preds = %151 unreachable -.loopexit83: ; preds = %.lr.ph +.loopexit82: ; preds = %.lr.ph %lpad.loopexit = landingpad { ptr, i32 } cleanup - br label %155 + br label %152 -.loopexit.split-lp: ; preds = %154 +.loopexit.split-lp: ; preds = %151 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup - br label %155 + br label %152 -155: ; preds = %.loopexit.split-lp, %.loopexit83 - %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit83 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] +152: ; preds = %.loopexit.split-lp, %.loopexit82 + %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit82 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] invoke void @"_ZN93_$LT$alloc..collections..btree..mem..replace..PanicGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17he7f40e69e6f26b83E"(ptr noalias noundef nonnull align 1 %4) - to label %166 unwind label %156, !noalias !1346 + to label %163 unwind label %153, !noalias !1346 -156: ; preds = %155 - %157 = landingpad { ptr, i32 } +153: ; preds = %152 + %154 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #48, !noalias !1346 unreachable -_ZN5alloc11collections5btree3mem7replace17h87e978e052ec58a4E.exit58: ; preds = %.noexc.i53 - store ptr null, ptr %152, align 8, !noalias !1346 - %158 = getelementptr inbounds nuw i8, ptr %152, i64 274 - store i16 0, ptr %158, align 2, !noalias !1346 - %159 = getelementptr inbounds nuw i8, ptr %152, i64 280 - store ptr %.sroa.068.0103, ptr %159, align 8, !noalias !1346 - store ptr %152, ptr %.sroa.068.0103, align 8, !noalias !1349 - %160 = getelementptr inbounds nuw i8, ptr %.sroa.068.0103, i64 272 - store i16 0, ptr %160, align 8, !noalias !1354 - %exitcond.not = icmp eq i64 %151, %118 - br i1 %exitcond.not, label %.loopexit127, label %.lr.ph - -161: ; preds = %42 - %162 = zext nneg i16 %44 to i64 - %163 = add nuw nsw i16 %44, 1 - store i16 %163, ptr %43, align 2, !noalias !1355 - %164 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 8 - %165 = getelementptr inbounds nuw { [3 x i64] }, ptr %164, i64 %162 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %165, ptr noundef nonnull align 8 dereferenceable(24) %8, i64 24, i1 false) +_ZN5alloc11collections5btree3mem7replace17h87e978e052ec58a4E.exit57: ; preds = %.noexc.i52 + store ptr null, ptr %149, align 8, !noalias !1346 + %155 = getelementptr inbounds nuw i8, ptr %149, i64 274 + store i16 0, ptr %155, align 2, !noalias !1346 + %156 = getelementptr inbounds nuw i8, ptr %149, i64 280 + store ptr %.sroa.067.0102, ptr %156, align 8, !noalias !1346 + store ptr %149, ptr %.sroa.067.0102, align 8, !noalias !1349 + %157 = getelementptr inbounds nuw i8, ptr %.sroa.067.0102, i64 272 + store i16 0, ptr %157, align 8, !noalias !1354 + %exitcond.not = icmp eq i64 %148, %115 + br i1 %exitcond.not, label %.loopexit125, label %.lr.ph + +158: ; preds = %42 + %159 = zext nneg i16 %44 to i64 + %160 = add nuw nsw i16 %44, 1 + store i16 %160, ptr %43, align 2, !noalias !1355 + %161 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 8 + %162 = getelementptr inbounds nuw { [3 x i64] }, ptr %161, i64 %159 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %162, ptr noundef nonnull align 8 dereferenceable(24) %8, i64 24, i1 false) br label %.loopexit -166: ; preds = %.loopexit90, %.loopexit.split-lp91, %110, %155 - %eh.lpad-body39.ph = phi { ptr, i32 } [ %lpad.phi89, %110 ], [ %lpad.phi, %155 ], [ %lpad.loopexit92, %.loopexit90 ], [ %lpad.loopexit.split-lp93, %.loopexit.split-lp91 ] +163: ; preds = %.loopexit89, %.loopexit.split-lp90, %107, %152 + %eh.lpad-body38.ph = phi { ptr, i32 } [ %lpad.phi88, %107 ], [ %lpad.phi, %152 ], [ %lpad.loopexit91, %.loopexit89 ], [ %lpad.loopexit.split-lp92, %.loopexit.split-lp90 ] invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17hdcf7b889bac065f1E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %7) #50 - to label %.body35 unwind label %167 + to label %.body34 unwind label %164 -167: ; preds = %166, %.body35 - %168 = landingpad { ptr, i32 } +164: ; preds = %163, %.body34 + %165 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #48 unreachable -.body: ; preds = %.body35, %29 - %.pn22 = phi { ptr, i32 } [ %.pn, %.body35 ], [ %30, %29 ] +.body: ; preds = %.body34, %29 + %.pn22 = phi { ptr, i32 } [ %.pn, %.body34 ], [ %30, %29 ] resume { ptr, i32 } %.pn22 } diff --git a/bench/tree-sitter-rs/optimized/55e7aotywrgrb7st.ll b/bench/tree-sitter-rs/optimized/55e7aotywrgrb7st.ll index a277ca3d2cb..4029c8bef37 100644 --- a/bench/tree-sitter-rs/optimized/55e7aotywrgrb7st.ll +++ b/bench/tree-sitter-rs/optimized/55e7aotywrgrb7st.ll @@ -18328,13 +18328,13 @@ _ZN15tree_sitter_cli8generate12build_tables4item9ParseItem10precedence17h815d037 %68 = add nsw i64 %67, -1 tail call void @llvm.experimental.noalias.scope.decl(metadata !3324) %69 = icmp ult i64 %68, %21 - br i1 %69, label %_ZN15tree_sitter_cli8generate12build_tables4item9ParseItem13associativity17h162631bf723aa0c7E.exit49, label %70, !prof !205 + br i1 %69, label %_ZN15tree_sitter_cli8generate12build_tables4item9ParseItem13associativity17h162631bf723aa0c7E.exit, label %70, !prof !205 70: ; preds = %66 tail call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %68, i64 noundef %21, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.f4ab2160caa6653ef344418ff3b39bb7.172.llvm.18097807149992804452) #45, !noalias !3327 unreachable -_ZN15tree_sitter_cli8generate12build_tables4item9ParseItem13associativity17h162631bf723aa0c7E.exit49: ; preds = %66 +_ZN15tree_sitter_cli8generate12build_tables4item9ParseItem13associativity17h162631bf723aa0c7E.exit: ; preds = %66 %71 = getelementptr inbounds nuw i8, ptr %13, i64 8 %72 = load ptr, ptr %71, align 8, !alias.scope !3324, !noalias !3334, !nonnull !14, !noundef !14 %73 = getelementptr inbounds nuw { { i64, [3 x i64] }, { i64, [2 x i64] }, { i64, [2 x i64] }, { i64, i8 }, i8, [7 x i8] }, ptr %72, i64 %68 @@ -18342,17 +18342,17 @@ _ZN15tree_sitter_cli8generate12build_tables4item9ParseItem13associativity17h1626 %75 = load i8, ptr %74, align 8, !range !1084, !noalias !3336, !noundef !14 %76 = getelementptr inbounds nuw i8, ptr %16, i64 8 %77 = load ptr, ptr %76, align 8, !alias.scope !3337, !noalias !3340, !nonnull !14, !noundef !14 - %78 = getelementptr inbounds nuw { { i64, [3 x i64] }, { i64, [2 x i64] }, { i64, [2 x i64] }, { i64, i8 }, i8, [7 x i8] }, ptr %77, i64 %68 - %79 = getelementptr inbounds nuw i8, ptr %78, i64 96 + %78 = getelementptr { { i64, [3 x i64] }, { i64, [2 x i64] }, { i64, [2 x i64] }, { i64, i8 }, i8, [7 x i8] }, ptr %77, i64 %67 + %79 = getelementptr i8, ptr %78, i64 -8 %80 = load i8, ptr %79, align 8, !range !1084, !noalias !3346, !noundef !14 %81 = icmp eq i8 %75, 2 br i1 %81, label %82, label %83 -82: ; preds = %_ZN15tree_sitter_cli8generate12build_tables4item9ParseItem13associativity17h162631bf723aa0c7E.exit49 +82: ; preds = %_ZN15tree_sitter_cli8generate12build_tables4item9ParseItem13associativity17h162631bf723aa0c7E.exit %.not82 = icmp eq i8 %80, 2 br i1 %.not82, label %.thread73, label %.critedge -83: ; preds = %_ZN15tree_sitter_cli8generate12build_tables4item9ParseItem13associativity17h162631bf723aa0c7E.exit49 +83: ; preds = %_ZN15tree_sitter_cli8generate12build_tables4item9ParseItem13associativity17h162631bf723aa0c7E.exit %.not81 = icmp eq i8 %75, %80 br i1 %.not81, label %.thread73, label %.critedge diff --git a/bench/uv-rs/optimized/6909c4r4kqhl58g4t63amtvkr.ll b/bench/uv-rs/optimized/6909c4r4kqhl58g4t63amtvkr.ll index 9be1d831a74..bebf6067670 100644 --- a/bench/uv-rs/optimized/6909c4r4kqhl58g4t63amtvkr.ll +++ b/bench/uv-rs/optimized/6909c4r4kqhl58g4t63amtvkr.ll @@ -11867,7 +11867,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %7 = load i64, ptr %6, align 8, !noundef !12 %8 = load ptr, ptr %0, align 8, !nonnull !12, !noundef !12 %9 = icmp eq i64 %7, 0 - br i1 %9, label %.loopexit75, label %.lr.ph.i + br i1 %9, label %.loopexit74, label %.lr.ph.i .lr.ph.i: ; preds = %3, %.lr.ph.i %.sroa.03.06.i = phi i64 [ %17, %.lr.ph.i ], [ %7, %3 ] @@ -11882,24 +11882,24 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %16 = load ptr, ptr %15, align 8, !noalias !1806, !nonnull !12, !noundef !12 %17 = add i64 %.sroa.03.06.i, -1 %18 = icmp eq i64 %17, 0 - br i1 %18, label %.loopexit75, label %.lr.ph.i + br i1 %18, label %.loopexit74, label %.lr.ph.i -.loopexit75: ; preds = %.lr.ph.i, %3 +.loopexit74: ; preds = %.lr.ph.i, %3 %.sroa.04.0.lcssa.i = phi ptr [ %8, %3 ], [ %16, %.lr.ph.i ] call void @llvm.lifetime.start.p0(ptr nonnull %5) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %5, ptr noundef nonnull align 8 dereferenceable(56) %1, i64 56, i1 false) br label %19 -19: ; preds = %.loopexit, %.loopexit75 - %.sroa.0.0 = phi ptr [ %.sroa.04.0.lcssa.i, %.loopexit75 ], [ %.sroa.0.1, %.loopexit ] +19: ; preds = %.loopexit, %.loopexit74 + %.sroa.0.0 = phi ptr [ %.sroa.04.0.lcssa.i, %.loopexit74 ], [ %.sroa.0.1, %.loopexit ] %20 = invoke { ptr, ptr } @"_ZN137_$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$K$C$V$C$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he8d2fb518b93cee1E"(ptr noalias noundef nonnull align 8 dereferenceable(56) %5) to label %24 unwind label %22 -.body: ; preds = %.loopexit70, %.loopexit.split-lp71, %157, %111, %22 - %.pn = phi { ptr, i32 } [ %23, %22 ], [ %lpad.phi69, %111 ], [ %lpad.phi, %157 ], [ %lpad.loopexit72, %.loopexit70 ], [ %lpad.loopexit.split-lp73, %.loopexit.split-lp71 ] +.body: ; preds = %.loopexit69, %.loopexit.split-lp70, %154, %108, %22 + %.pn = phi { ptr, i32 } [ %23, %22 ], [ %lpad.phi68, %108 ], [ %lpad.phi, %154 ], [ %lpad.loopexit71, %.loopexit69 ], [ %lpad.loopexit.split-lp72, %.loopexit.split-lp70 ] %21 = getelementptr inbounds nuw i8, ptr %5, i64 24 invoke void @"_ZN86_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h23ea7b304b3ae16cE.llvm.8717112297715684712"(ptr noalias noundef nonnull align 8 dereferenceable(32) %21) - to label %"_ZN4core3ptr394drop_in_place$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$$RF$uv_normalize..group_name..GroupName$C$$RF$alloc..vec..Vec$LT$uv_pypi_types..dependency_groups..DependencyGroupSpecifier$GT$$C$alloc..vec..into_iter..IntoIter$LT$$LP$$RF$uv_normalize..group_name..GroupName$C$$RF$alloc..vec..Vec$LT$uv_pypi_types..dependency_groups..DependencyGroupSpecifier$GT$$RP$$GT$$GT$$GT$17hbc6dc456d0a58d0fE.exit" unwind label %170 + to label %"_ZN4core3ptr394drop_in_place$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$$RF$uv_normalize..group_name..GroupName$C$$RF$alloc..vec..Vec$LT$uv_pypi_types..dependency_groups..DependencyGroupSpecifier$GT$$C$alloc..vec..into_iter..IntoIter$LT$$LP$$RF$uv_normalize..group_name..GroupName$C$$RF$alloc..vec..Vec$LT$uv_pypi_types..dependency_groups..DependencyGroupSpecifier$GT$$RP$$GT$$GT$$GT$17hbc6dc456d0a58d0fE.exit" unwind label %167 22: ; preds = %19 %23 = landingpad { ptr, i32 } @@ -11930,7 +11930,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %32 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 186 %33 = load i16, ptr %32, align 2, !noundef !12 %34 = icmp ult i16 %33, 11 - br i1 %34, label %163, label %.preheader + br i1 %34, label %160, label %.preheader .lr.ph.i22: ; preds = %.lr.ph.i22.preheader, %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17ha70b7c16fd1f09c3E.exit.i" %.sroa.03.010.i = phi ptr [ %46, %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17ha70b7c16fd1f09c3E.exit.i" ], [ %.val, %.lr.ph.i22.preheader ] @@ -11960,7 +11960,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %49 = icmp ult i16 %48, 5 br i1 %49, label %51, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17ha70b7c16fd1f09c3E.exit.i" -"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17ha70b7c16fd1f09c3E.exit.i": ; preds = %92, %37 +"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17ha70b7c16fd1f09c3E.exit.i": ; preds = %89, %37 %50 = icmp eq i64 %43, 0 br i1 %50, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17h6559e50415a2b255E.exit", label %.lr.ph.i22 @@ -11970,312 +11970,303 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %53 = getelementptr inbounds nuw i8, ptr %42, i64 186 %54 = load i16, ptr %53, align 2, !noalias !1818, !noundef !12 %.not.i.i = icmp ugt i16 %narrow.i, %54 - br i1 %.not.i.i, label %.noexc23, label %55, !prof !296 + br i1 %.not.i.i, label %.noexc23, label %_ZN5alloc11collections5btree4node13move_to_slice17heb546469a5e741cdE.exit.i.i, !prof !296 .noexc23: ; preds = %51 call void @_ZN4core9panicking5panic17had768957450a0f86E(ptr noalias noundef nonnull readonly align 1 @anon.da1773f9f01d35596722567e5203ba96.31, i64 noundef 39, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.da1773f9f01d35596722567e5203ba96.32) #28 unreachable -55: ; preds = %51 - %56 = zext i16 %54 to i64 - %57 = sub nuw nsw i64 %56, %52 - %58 = trunc nuw i64 %57 to i16 - store i16 %58, ptr %53, align 2, !noalias !1818 +_ZN5alloc11collections5btree4node13move_to_slice17heb546469a5e741cdE.exit.i.i: ; preds = %51 + %55 = zext i16 %54 to i64 + %56 = sub nuw nsw i64 %55, %52 + %57 = trunc nuw i64 %56 to i16 + store i16 %57, ptr %53, align 2, !noalias !1818 store i16 5, ptr %47, align 2, !noalias !1818 - %59 = getelementptr inbounds nuw i8, ptr %46, i64 8 - %60 = getelementptr inbounds nuw ptr, ptr %59, i64 %52 - %61 = shl nuw nsw i16 %48, 3 - %62 = zext nneg i16 %61 to i64 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %60, ptr nonnull align 8 %59, i64 %62, i1 false), !alias.scope !1821, !noalias !1818 - %63 = getelementptr inbounds nuw i8, ptr %46, i64 96 - %64 = getelementptr inbounds nuw ptr, ptr %63, i64 %52 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %64, ptr nonnull align 8 %63, i64 %62, i1 false), !alias.scope !1824, !noalias !1818 - %65 = add nuw nsw i64 %57, 1 - %66 = sub nuw nsw i64 %56, %65 - %67 = add nsw i64 %52, -1 - %68 = icmp eq i64 %66, %67 - br i1 %68, label %_ZN5alloc11collections5btree4node13move_to_slice17heb546469a5e741cdE.exit.i.i, label %.noexc24, !prof !118 - -.noexc24: ; preds = %55 - call void @_ZN4core9panicking5panic17had768957450a0f86E(ptr noalias noundef nonnull readonly align 1 @anon.da1773f9f01d35596722567e5203ba96.20, i64 noundef 40, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.da1773f9f01d35596722567e5203ba96.21) #28 - unreachable - -_ZN5alloc11collections5btree4node13move_to_slice17heb546469a5e741cdE.exit.i.i: ; preds = %55 - %69 = getelementptr inbounds nuw i8, ptr %42, i64 8 - %70 = getelementptr inbounds nuw ptr, ptr %69, i64 %65 - %71 = shl nuw nsw i64 %66, 3 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %59, ptr nonnull readonly align 8 %70, i64 %71, i1 false), !alias.scope !1827, !noalias !1818 - %72 = getelementptr inbounds nuw i8, ptr %42, i64 96 - %73 = getelementptr inbounds nuw ptr, ptr %72, i64 %65 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %63, ptr nonnull readonly align 8 %73, i64 %71, i1 false), !alias.scope !1831, !noalias !1818 - %74 = getelementptr inbounds nuw ptr, ptr %69, i64 %57 - %75 = load ptr, ptr %74, align 8, !noalias !1818, !nonnull !12, !align !1835, !noundef !12 - %76 = getelementptr inbounds nuw ptr, ptr %72, i64 %57 - %77 = load ptr, ptr %76, align 8, !noalias !1818, !nonnull !12, !align !1835, !noundef !12 - %78 = getelementptr ptr, ptr %.sroa.03.010.i, i64 %38 - %79 = getelementptr inbounds nuw i8, ptr %.sroa.03.010.i, i64 96 - %80 = getelementptr inbounds nuw ptr, ptr %79, i64 %39 - %81 = load ptr, ptr %78, align 8, !noalias !1836, !nonnull !12, !align !1835, !noundef !12 - store ptr %75, ptr %78, align 8, !noalias !1836 - %82 = load ptr, ptr %80, align 8, !noalias !1836, !nonnull !12, !align !1835, !noundef !12 - store ptr %77, ptr %80, align 8, !noalias !1836 - %83 = getelementptr ptr, ptr %46, i64 %52 - store ptr %81, ptr %83, align 8, !noalias !1818 - %84 = getelementptr inbounds nuw ptr, ptr %63, i64 %66 - store ptr %82, ptr %84, align 8, !noalias !1818 + %58 = getelementptr inbounds nuw i8, ptr %46, i64 8 + %59 = getelementptr inbounds nuw ptr, ptr %58, i64 %52 + %60 = shl nuw nsw i16 %48, 3 + %61 = zext nneg i16 %60 to i64 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %59, ptr nonnull align 8 %58, i64 %61, i1 false), !alias.scope !1821, !noalias !1818 + %62 = getelementptr inbounds nuw i8, ptr %46, i64 96 + %63 = getelementptr inbounds nuw ptr, ptr %62, i64 %52 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %63, ptr nonnull align 8 %62, i64 %61, i1 false), !alias.scope !1824, !noalias !1818 + %64 = add nuw nsw i64 %56, 1 + %65 = sub nuw nsw i64 %55, %64 + %66 = getelementptr inbounds nuw i8, ptr %42, i64 8 + %67 = getelementptr inbounds nuw ptr, ptr %66, i64 %64 + %68 = shl nuw nsw i64 %65, 3 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %58, ptr nonnull readonly align 8 %67, i64 %68, i1 false), !alias.scope !1827, !noalias !1818 + %69 = getelementptr inbounds nuw i8, ptr %42, i64 96 + %70 = getelementptr inbounds nuw ptr, ptr %69, i64 %64 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %62, ptr nonnull readonly align 8 %70, i64 %68, i1 false), !alias.scope !1831, !noalias !1818 + %71 = getelementptr inbounds nuw ptr, ptr %66, i64 %56 + %72 = load ptr, ptr %71, align 8, !noalias !1818, !nonnull !12, !align !1835, !noundef !12 + %73 = getelementptr inbounds nuw ptr, ptr %69, i64 %56 + %74 = load ptr, ptr %73, align 8, !noalias !1818, !nonnull !12, !align !1835, !noundef !12 + %75 = getelementptr ptr, ptr %.sroa.03.010.i, i64 %38 + %76 = getelementptr inbounds nuw i8, ptr %.sroa.03.010.i, i64 96 + %77 = getelementptr inbounds nuw ptr, ptr %76, i64 %39 + %78 = load ptr, ptr %75, align 8, !noalias !1836, !nonnull !12, !align !1835, !noundef !12 + store ptr %72, ptr %75, align 8, !noalias !1836 + %79 = load ptr, ptr %77, align 8, !noalias !1836, !nonnull !12, !align !1835, !noundef !12 + store ptr %74, ptr %77, align 8, !noalias !1836 + %80 = getelementptr ptr, ptr %46, i64 %52 + store ptr %78, ptr %80, align 8, !noalias !1818 + %81 = getelementptr inbounds nuw ptr, ptr %62, i64 %65 + store ptr %79, ptr %81, align 8, !noalias !1818 %cond.i = icmp eq i64 %43, 0 - br i1 %cond.i, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17h6559e50415a2b255E.exit", label %85 - -85: ; preds = %_ZN5alloc11collections5btree4node13move_to_slice17heb546469a5e741cdE.exit.i.i - %86 = getelementptr inbounds nuw i8, ptr %46, i64 192 - %87 = getelementptr inbounds nuw ptr, ptr %86, i64 %52 - %88 = add nuw nsw i64 %62, 8 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %87, ptr noundef nonnull align 8 dereferenceable(1) %86, i64 %88, i1 false), !alias.scope !1840, !noalias !1818 - %89 = getelementptr inbounds nuw i8, ptr %42, i64 192 - %90 = getelementptr inbounds nuw ptr, ptr %89, i64 %65 - %91 = shl nuw nsw i64 %52, 3 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %86, ptr noundef nonnull readonly align 8 dereferenceable(1) %90, i64 %91, i1 false), !alias.scope !1843, !noalias !1818 - br label %92 - -92: ; preds = %92, %85 - %.sroa.0.05.i.i.i = phi i64 [ 0, %85 ], [ %93, %92 ] - %93 = add nuw nsw i64 %.sroa.0.05.i.i.i, 1 - %94 = getelementptr inbounds nuw ptr, ptr %86, i64 %.sroa.0.05.i.i.i - %95 = load ptr, ptr %94, align 8, !noalias !1847, !nonnull !12, !noundef !12 - store ptr %46, ptr %95, align 8, !noalias !1852 - %96 = trunc nuw nsw i64 %.sroa.0.05.i.i.i to i16 - %97 = getelementptr inbounds nuw i8, ptr %95, i64 184 - store i16 %96, ptr %97, align 8, !noalias !1852 + br i1 %cond.i, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17h6559e50415a2b255E.exit", label %82 + +82: ; preds = %_ZN5alloc11collections5btree4node13move_to_slice17heb546469a5e741cdE.exit.i.i + %83 = getelementptr inbounds nuw i8, ptr %46, i64 192 + %84 = getelementptr inbounds nuw ptr, ptr %83, i64 %52 + %85 = add nuw nsw i64 %61, 8 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %84, ptr noundef nonnull align 8 dereferenceable(1) %83, i64 %85, i1 false), !alias.scope !1840, !noalias !1818 + %86 = getelementptr inbounds nuw i8, ptr %42, i64 192 + %87 = getelementptr inbounds nuw ptr, ptr %86, i64 %64 + %88 = shl nuw nsw i64 %52, 3 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %83, ptr noundef nonnull readonly align 8 dereferenceable(1) %87, i64 %88, i1 false), !alias.scope !1843, !noalias !1818 + br label %89 + +89: ; preds = %89, %82 + %.sroa.0.05.i.i.i = phi i64 [ 0, %82 ], [ %90, %89 ] + %90 = add nuw nsw i64 %.sroa.0.05.i.i.i, 1 + %91 = getelementptr inbounds nuw ptr, ptr %83, i64 %.sroa.0.05.i.i.i + %92 = load ptr, ptr %91, align 8, !noalias !1847, !nonnull !12, !noundef !12 + store ptr %46, ptr %92, align 8, !noalias !1852 + %93 = trunc nuw nsw i64 %.sroa.0.05.i.i.i to i16 + %94 = getelementptr inbounds nuw i8, ptr %92, i64 184 + store i16 %93, ptr %94, align 8, !noalias !1852 %exitcond.not.i.i.i = icmp eq i64 %.sroa.0.05.i.i.i, 5 - br i1 %exitcond.not.i.i.i, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17ha70b7c16fd1f09c3E.exit.i", label %92 + br i1 %exitcond.not.i.i.i, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17ha70b7c16fd1f09c3E.exit.i", label %89 "_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17h6559e50415a2b255E.exit": ; preds = %_ZN5alloc11collections5btree4node13move_to_slice17heb546469a5e741cdE.exit.i.i, %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17ha70b7c16fd1f09c3E.exit.i", %"_ZN4core3ptr394drop_in_place$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$$RF$uv_normalize..group_name..GroupName$C$$RF$alloc..vec..Vec$LT$uv_pypi_types..dependency_groups..DependencyGroupSpecifier$GT$$C$alloc..vec..into_iter..IntoIter$LT$$LP$$RF$uv_normalize..group_name..GroupName$C$$RF$alloc..vec..Vec$LT$uv_pypi_types..dependency_groups..DependencyGroupSpecifier$GT$$RP$$GT$$GT$$GT$17hbc6dc456d0a58d0fE.exit21" ret void -.preheader: ; preds = %30, %100 - %.sroa.5.0 = phi i64 [ %101, %100 ], [ 0, %30 ] - %.sroa.02.0 = phi ptr [ %98, %100 ], [ %.sroa.0.0, %30 ] - %98 = load ptr, ptr %.sroa.02.0, align 8, !noalias !1853, !noundef !12 - %99 = icmp eq ptr %98, null - br i1 %99, label %105, label %100 +.preheader: ; preds = %30, %97 + %.sroa.5.0 = phi i64 [ %98, %97 ], [ 0, %30 ] + %.sroa.02.0 = phi ptr [ %95, %97 ], [ %.sroa.0.0, %30 ] + %95 = load ptr, ptr %.sroa.02.0, align 8, !noalias !1853, !noundef !12 + %96 = icmp eq ptr %95, null + br i1 %96, label %102, label %97 -.loopexit70: ; preds = %.loopexit64 - %lpad.loopexit72 = landingpad { ptr, i32 } +.loopexit69: ; preds = %.loopexit63 + %lpad.loopexit71 = landingpad { ptr, i32 } cleanup br label %.body -.loopexit.split-lp71: ; preds = %122, %128 - %lpad.loopexit.split-lp73 = landingpad { ptr, i32 } +.loopexit.split-lp70: ; preds = %119, %125 + %lpad.loopexit.split-lp72 = landingpad { ptr, i32 } cleanup br label %.body -100: ; preds = %.preheader - %101 = add i64 %.sroa.5.0, 1 - %102 = getelementptr inbounds nuw i8, ptr %98, i64 186 - %103 = load i16, ptr %102, align 2, !noundef !12 - %104 = icmp ult i16 %103, 11 - br i1 %104, label %.loopexit64, label %.preheader +97: ; preds = %.preheader + %98 = add i64 %.sroa.5.0, 1 + %99 = getelementptr inbounds nuw i8, ptr %95, i64 186 + %100 = load i16, ptr %99, align 2, !noundef !12 + %101 = icmp ult i16 %100, 11 + br i1 %101, label %.loopexit63, label %.preheader -105: ; preds = %.preheader +102: ; preds = %.preheader call void @llvm.experimental.noalias.scope.decl(metadata !1856) - %106 = load ptr, ptr %0, align 8, !alias.scope !1856, !nonnull !12, !noundef !12 - %107 = load i64, ptr %6, align 8, !alias.scope !1856, !noundef !12 - %108 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h391f63560645abe9E.llvm.25249479008257743"() - to label %.noexc.i unwind label %.loopexit65, !noalias !1856 + %103 = load ptr, ptr %0, align 8, !alias.scope !1856, !nonnull !12, !noundef !12 + %104 = load i64, ptr %6, align 8, !alias.scope !1856, !noundef !12 + %105 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h391f63560645abe9E.llvm.25249479008257743"() + to label %.noexc.i unwind label %.loopexit64, !noalias !1856 -.noexc.i: ; preds = %105 - %109 = icmp eq ptr %108, null - br i1 %109, label %110, label %114 +.noexc.i: ; preds = %102 + %106 = icmp eq ptr %105, null + br i1 %106, label %107, label %111 -110: ; preds = %.noexc.i +107: ; preds = %.noexc.i invoke void @_ZN5alloc5alloc18handle_alloc_error17he572ac0a571405f2E(i64 noundef 8, i64 noundef 288) #28 - to label %.noexc1.i unwind label %.loopexit.split-lp66, !noalias !1856 + to label %.noexc1.i unwind label %.loopexit.split-lp65, !noalias !1856 -.noexc1.i: ; preds = %110 +.noexc1.i: ; preds = %107 unreachable -.loopexit65: ; preds = %105 - %lpad.loopexit67 = landingpad { ptr, i32 } +.loopexit64: ; preds = %102 + %lpad.loopexit66 = landingpad { ptr, i32 } cleanup - br label %111 + br label %108 -.loopexit.split-lp66: ; preds = %110 - %lpad.loopexit.split-lp68 = landingpad { ptr, i32 } +.loopexit.split-lp65: ; preds = %107 + %lpad.loopexit.split-lp67 = landingpad { ptr, i32 } cleanup - br label %111 + br label %108 -111: ; preds = %.loopexit.split-lp66, %.loopexit65 - %lpad.phi69 = phi { ptr, i32 } [ %lpad.loopexit67, %.loopexit65 ], [ %lpad.loopexit.split-lp68, %.loopexit.split-lp66 ] +108: ; preds = %.loopexit.split-lp65, %.loopexit64 + %lpad.phi68 = phi { ptr, i32 } [ %lpad.loopexit66, %.loopexit64 ], [ %lpad.loopexit.split-lp67, %.loopexit.split-lp65 ] invoke void @"_ZN93_$LT$alloc..collections..btree..mem..replace..PanicGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17h10aeed2765f7de5aE"(ptr noalias noundef nonnull align 1 %4) - to label %.body unwind label %112, !noalias !1856 + to label %.body unwind label %109, !noalias !1856 -112: ; preds = %111 - %113 = landingpad { ptr, i32 } +109: ; preds = %108 + %110 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h7e5529b9cf989fd4E() #26, !noalias !1856 unreachable -114: ; preds = %.noexc.i - store ptr null, ptr %108, align 8, !noalias !1856 - %115 = getelementptr inbounds nuw i8, ptr %108, i64 186 - store i16 0, ptr %115, align 2, !noalias !1856 - %116 = getelementptr inbounds nuw i8, ptr %108, i64 192 - store ptr %106, ptr %116, align 8, !noalias !1856 - %117 = add i64 %107, 1 - store ptr %108, ptr %106, align 8, !noalias !1859 - %118 = getelementptr inbounds nuw i8, ptr %106, i64 184 - store i16 0, ptr %118, align 8, !noalias !1866 - store ptr %108, ptr %0, align 8, !alias.scope !1856 - store i64 %117, ptr %6, align 8, !alias.scope !1856 - br label %.loopexit64 - -.loopexit64: ; preds = %100, %114 - %.sroa.046.0 = phi ptr [ %108, %114 ], [ %98, %100 ] - %.sroa.647.0 = phi i64 [ %117, %114 ], [ %101, %100 ] - %119 = add i64 %.sroa.647.0, -1 - %120 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17hae02ac83cccb13b8E.llvm.25249479008257743"() - to label %.noexc26 unwind label %.loopexit70 - -.noexc26: ; preds = %.loopexit64 - %121 = icmp eq ptr %120, null - br i1 %121, label %122, label %123 - -122: ; preds = %.noexc26 +111: ; preds = %.noexc.i + store ptr null, ptr %105, align 8, !noalias !1856 + %112 = getelementptr inbounds nuw i8, ptr %105, i64 186 + store i16 0, ptr %112, align 2, !noalias !1856 + %113 = getelementptr inbounds nuw i8, ptr %105, i64 192 + store ptr %103, ptr %113, align 8, !noalias !1856 + %114 = add i64 %104, 1 + store ptr %105, ptr %103, align 8, !noalias !1859 + %115 = getelementptr inbounds nuw i8, ptr %103, i64 184 + store i16 0, ptr %115, align 8, !noalias !1866 + store ptr %105, ptr %0, align 8, !alias.scope !1856 + store i64 %114, ptr %6, align 8, !alias.scope !1856 + br label %.loopexit63 + +.loopexit63: ; preds = %97, %111 + %.sroa.045.0 = phi ptr [ %105, %111 ], [ %95, %97 ] + %.sroa.646.0 = phi i64 [ %114, %111 ], [ %98, %97 ] + %116 = add i64 %.sroa.646.0, -1 + %117 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17hae02ac83cccb13b8E.llvm.25249479008257743"() + to label %.noexc25 unwind label %.loopexit69 + +.noexc25: ; preds = %.loopexit63 + %118 = icmp eq ptr %117, null + br i1 %118, label %119, label %120 + +119: ; preds = %.noexc25 invoke void @_ZN5alloc5alloc18handle_alloc_error17he572ac0a571405f2E(i64 noundef 8, i64 noundef 192) #28 - to label %.noexc27 unwind label %.loopexit.split-lp71 + to label %.noexc26 unwind label %.loopexit.split-lp70 -.noexc27: ; preds = %122 +.noexc26: ; preds = %119 unreachable -123: ; preds = %.noexc26 - store ptr null, ptr %120, align 8 - %124 = getelementptr inbounds nuw i8, ptr %120, i64 186 - store i16 0, ptr %124, align 2 - %.not = icmp eq i64 %119, 0 +120: ; preds = %.noexc25 + store ptr null, ptr %117, align 8 + %121 = getelementptr inbounds nuw i8, ptr %117, i64 186 + store i16 0, ptr %121, align 2 + %.not = icmp eq i64 %116, 0 br i1 %.not, label %._crit_edge, label %.lr.ph -._crit_edge: ; preds = %_ZN5alloc11collections5btree3mem7replace17h6dda342b2a939153E.exit40, %123 - %.sroa.052.0.lcssa = phi ptr [ %120, %123 ], [ %154, %_ZN5alloc11collections5btree3mem7replace17h6dda342b2a939153E.exit40 ] - %125 = getelementptr inbounds nuw i8, ptr %.sroa.046.0, i64 186 - %126 = load i16, ptr %125, align 2, !noalias !1867, !noundef !12 - %127 = icmp ult i16 %126, 11 - br i1 %127, label %129, label %128, !prof !118 +._crit_edge: ; preds = %_ZN5alloc11collections5btree3mem7replace17h6dda342b2a939153E.exit39, %120 + %.sroa.051.0.lcssa = phi ptr [ %117, %120 ], [ %151, %_ZN5alloc11collections5btree3mem7replace17h6dda342b2a939153E.exit39 ] + %122 = getelementptr inbounds nuw i8, ptr %.sroa.045.0, i64 186 + %123 = load i16, ptr %122, align 2, !noalias !1867, !noundef !12 + %124 = icmp ult i16 %123, 11 + br i1 %124, label %126, label %125, !prof !118 -128: ; preds = %._crit_edge +125: ; preds = %._crit_edge invoke void @_ZN4core9panicking5panic17had768957450a0f86E(ptr noalias noundef nonnull readonly align 1 @anon.da1773f9f01d35596722567e5203ba96.15.llvm.8974332646872837442, i64 noundef 32, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.da1773f9f01d35596722567e5203ba96.19) #28 - to label %.noexc29 unwind label %.loopexit.split-lp71 + to label %.noexc28 unwind label %.loopexit.split-lp70 -.noexc29: ; preds = %128 +.noexc28: ; preds = %125 unreachable -129: ; preds = %._crit_edge - %130 = zext nneg i16 %126 to i64 - %131 = add nuw nsw i16 %126, 1 - store i16 %131, ptr %125, align 2, !noalias !1867 - %132 = getelementptr inbounds nuw i8, ptr %.sroa.046.0, i64 8 - %133 = getelementptr inbounds nuw ptr, ptr %132, i64 %130 - store ptr %25, ptr %133, align 8, !noalias !1867 - %134 = getelementptr inbounds nuw i8, ptr %.sroa.046.0, i64 96 - %135 = getelementptr inbounds nuw ptr, ptr %134, i64 %130 - store ptr %26, ptr %135, align 8, !noalias !1867 - %136 = add nuw nsw i64 %130, 1 - %137 = getelementptr inbounds nuw i8, ptr %.sroa.046.0, i64 192 - %138 = getelementptr inbounds nuw ptr, ptr %137, i64 %136 - store ptr %.sroa.052.0.lcssa, ptr %138, align 8, !noalias !1867 - store ptr %.sroa.046.0, ptr %.sroa.052.0.lcssa, align 8, !noalias !1871 - %139 = trunc nuw nsw i64 %136 to i16 - %140 = getelementptr inbounds nuw i8, ptr %.sroa.052.0.lcssa, i64 184 - store i16 %139, ptr %140, align 8, !noalias !1871 - %141 = icmp eq i64 %.sroa.647.0, 0 - br i1 %141, label %.loopexit, label %.lr.ph.i30 - -.lr.ph.i30: ; preds = %129, %.lr.ph.i30 - %.sroa.03.06.i31 = phi i64 [ %149, %.lr.ph.i30 ], [ %.sroa.647.0, %129 ] - %.sroa.04.05.i32 = phi ptr [ %148, %.lr.ph.i30 ], [ %.sroa.046.0, %129 ] - %142 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i32, i64 186 - %143 = load i16, ptr %142, align 2, !noalias !1874, !noundef !12 - %144 = zext nneg i16 %143 to i64 - %145 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i32, i64 192 - %146 = icmp ult i16 %143, 12 - call void @llvm.assume(i1 %146) - %147 = getelementptr inbounds nuw ptr, ptr %145, i64 %144 - %148 = load ptr, ptr %147, align 8, !noalias !1877, !nonnull !12, !noundef !12 - %149 = add i64 %.sroa.03.06.i31, -1 - %150 = icmp eq i64 %149, 0 - br i1 %150, label %.loopexit, label %.lr.ph.i30 - -.loopexit: ; preds = %.lr.ph.i30, %129, %163 - %.sroa.0.1 = phi ptr [ %.sroa.0.0, %163 ], [ %.sroa.046.0, %129 ], [ %148, %.lr.ph.i30 ] - %151 = load i64, ptr %2, align 8, !noundef !12 - %152 = add i64 %151, 1 - store i64 %152, ptr %2, align 8 +126: ; preds = %._crit_edge + %127 = zext nneg i16 %123 to i64 + %128 = add nuw nsw i16 %123, 1 + store i16 %128, ptr %122, align 2, !noalias !1867 + %129 = getelementptr inbounds nuw i8, ptr %.sroa.045.0, i64 8 + %130 = getelementptr inbounds nuw ptr, ptr %129, i64 %127 + store ptr %25, ptr %130, align 8, !noalias !1867 + %131 = getelementptr inbounds nuw i8, ptr %.sroa.045.0, i64 96 + %132 = getelementptr inbounds nuw ptr, ptr %131, i64 %127 + store ptr %26, ptr %132, align 8, !noalias !1867 + %133 = add nuw nsw i64 %127, 1 + %134 = getelementptr inbounds nuw i8, ptr %.sroa.045.0, i64 192 + %135 = getelementptr inbounds nuw ptr, ptr %134, i64 %133 + store ptr %.sroa.051.0.lcssa, ptr %135, align 8, !noalias !1867 + store ptr %.sroa.045.0, ptr %.sroa.051.0.lcssa, align 8, !noalias !1871 + %136 = trunc nuw nsw i64 %133 to i16 + %137 = getelementptr inbounds nuw i8, ptr %.sroa.051.0.lcssa, i64 184 + store i16 %136, ptr %137, align 8, !noalias !1871 + %138 = icmp eq i64 %.sroa.646.0, 0 + br i1 %138, label %.loopexit, label %.lr.ph.i29 + +.lr.ph.i29: ; preds = %126, %.lr.ph.i29 + %.sroa.03.06.i30 = phi i64 [ %146, %.lr.ph.i29 ], [ %.sroa.646.0, %126 ] + %.sroa.04.05.i31 = phi ptr [ %145, %.lr.ph.i29 ], [ %.sroa.045.0, %126 ] + %139 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i31, i64 186 + %140 = load i16, ptr %139, align 2, !noalias !1874, !noundef !12 + %141 = zext nneg i16 %140 to i64 + %142 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i31, i64 192 + %143 = icmp ult i16 %140, 12 + call void @llvm.assume(i1 %143) + %144 = getelementptr inbounds nuw ptr, ptr %142, i64 %141 + %145 = load ptr, ptr %144, align 8, !noalias !1877, !nonnull !12, !noundef !12 + %146 = add i64 %.sroa.03.06.i30, -1 + %147 = icmp eq i64 %146, 0 + br i1 %147, label %.loopexit, label %.lr.ph.i29 + +.loopexit: ; preds = %.lr.ph.i29, %126, %160 + %.sroa.0.1 = phi ptr [ %.sroa.0.0, %160 ], [ %.sroa.045.0, %126 ], [ %145, %.lr.ph.i29 ] + %148 = load i64, ptr %2, align 8, !noundef !12 + %149 = add i64 %148, 1 + store i64 %149, ptr %2, align 8 br label %19 -.lr.ph: ; preds = %123, %_ZN5alloc11collections5btree3mem7replace17h6dda342b2a939153E.exit40 - %.sroa.04.085 = phi i64 [ %153, %_ZN5alloc11collections5btree3mem7replace17h6dda342b2a939153E.exit40 ], [ 0, %123 ] - %.sroa.052.083 = phi ptr [ %154, %_ZN5alloc11collections5btree3mem7replace17h6dda342b2a939153E.exit40 ], [ %120, %123 ] - %153 = add nuw i64 %.sroa.04.085, 1 - %154 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h391f63560645abe9E.llvm.25249479008257743"() - to label %.noexc.i36 unwind label %.loopexit63, !noalias !1880 +.lr.ph: ; preds = %120, %_ZN5alloc11collections5btree3mem7replace17h6dda342b2a939153E.exit39 + %.sroa.04.084 = phi i64 [ %150, %_ZN5alloc11collections5btree3mem7replace17h6dda342b2a939153E.exit39 ], [ 0, %120 ] + %.sroa.051.082 = phi ptr [ %151, %_ZN5alloc11collections5btree3mem7replace17h6dda342b2a939153E.exit39 ], [ %117, %120 ] + %150 = add nuw i64 %.sroa.04.084, 1 + %151 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h391f63560645abe9E.llvm.25249479008257743"() + to label %.noexc.i35 unwind label %.loopexit62, !noalias !1880 -.noexc.i36: ; preds = %.lr.ph - %155 = icmp eq ptr %154, null - br i1 %155, label %156, label %_ZN5alloc11collections5btree3mem7replace17h6dda342b2a939153E.exit40 +.noexc.i35: ; preds = %.lr.ph + %152 = icmp eq ptr %151, null + br i1 %152, label %153, label %_ZN5alloc11collections5btree3mem7replace17h6dda342b2a939153E.exit39 -156: ; preds = %.noexc.i36 +153: ; preds = %.noexc.i35 invoke void @_ZN5alloc5alloc18handle_alloc_error17he572ac0a571405f2E(i64 noundef 8, i64 noundef 288) #28 - to label %.noexc1.i37 unwind label %.loopexit.split-lp, !noalias !1880 + to label %.noexc1.i36 unwind label %.loopexit.split-lp, !noalias !1880 -.noexc1.i37: ; preds = %156 +.noexc1.i36: ; preds = %153 unreachable -.loopexit63: ; preds = %.lr.ph +.loopexit62: ; preds = %.lr.ph %lpad.loopexit = landingpad { ptr, i32 } cleanup - br label %157 + br label %154 -.loopexit.split-lp: ; preds = %156 +.loopexit.split-lp: ; preds = %153 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup - br label %157 + br label %154 -157: ; preds = %.loopexit.split-lp, %.loopexit63 - %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit63 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] +154: ; preds = %.loopexit.split-lp, %.loopexit62 + %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit62 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] invoke void @"_ZN93_$LT$alloc..collections..btree..mem..replace..PanicGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17h10aeed2765f7de5aE"(ptr noalias noundef nonnull align 1 %4) - to label %.body unwind label %158, !noalias !1880 + to label %.body unwind label %155, !noalias !1880 -158: ; preds = %157 - %159 = landingpad { ptr, i32 } +155: ; preds = %154 + %156 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h7e5529b9cf989fd4E() #26, !noalias !1880 unreachable -_ZN5alloc11collections5btree3mem7replace17h6dda342b2a939153E.exit40: ; preds = %.noexc.i36 - store ptr null, ptr %154, align 8, !noalias !1880 - %160 = getelementptr inbounds nuw i8, ptr %154, i64 186 - store i16 0, ptr %160, align 2, !noalias !1880 - %161 = getelementptr inbounds nuw i8, ptr %154, i64 192 - store ptr %.sroa.052.083, ptr %161, align 8, !noalias !1880 - store ptr %154, ptr %.sroa.052.083, align 8, !noalias !1883 - %162 = getelementptr inbounds nuw i8, ptr %.sroa.052.083, i64 184 - store i16 0, ptr %162, align 8, !noalias !1890 - %exitcond.not = icmp eq i64 %153, %119 +_ZN5alloc11collections5btree3mem7replace17h6dda342b2a939153E.exit39: ; preds = %.noexc.i35 + store ptr null, ptr %151, align 8, !noalias !1880 + %157 = getelementptr inbounds nuw i8, ptr %151, i64 186 + store i16 0, ptr %157, align 2, !noalias !1880 + %158 = getelementptr inbounds nuw i8, ptr %151, i64 192 + store ptr %.sroa.051.082, ptr %158, align 8, !noalias !1880 + store ptr %151, ptr %.sroa.051.082, align 8, !noalias !1883 + %159 = getelementptr inbounds nuw i8, ptr %.sroa.051.082, i64 184 + store i16 0, ptr %159, align 8, !noalias !1890 + %exitcond.not = icmp eq i64 %150, %116 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph -163: ; preds = %30 - %164 = zext nneg i16 %33 to i64 - %165 = add nuw nsw i16 %33, 1 - store i16 %165, ptr %32, align 2, !noalias !1891 - %166 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 8 - %167 = getelementptr inbounds nuw ptr, ptr %166, i64 %164 - store ptr %25, ptr %167, align 8, !noalias !1891 - %168 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 96 - %169 = getelementptr inbounds nuw ptr, ptr %168, i64 %164 - store ptr %26, ptr %169, align 8, !noalias !1891 +160: ; preds = %30 + %161 = zext nneg i16 %33 to i64 + %162 = add nuw nsw i16 %33, 1 + store i16 %162, ptr %32, align 2, !noalias !1891 + %163 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 8 + %164 = getelementptr inbounds nuw ptr, ptr %163, i64 %161 + store ptr %25, ptr %164, align 8, !noalias !1891 + %165 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 96 + %166 = getelementptr inbounds nuw ptr, ptr %165, i64 %161 + store ptr %26, ptr %166, align 8, !noalias !1891 br label %.loopexit -170: ; preds = %.body - %171 = landingpad { ptr, i32 } +167: ; preds = %.body + %168 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h7e5529b9cf989fd4E() #26 unreachable diff --git a/bench/uv-rs/optimized/cd91bxdrbjyy0s7hgoreg00sd.ll b/bench/uv-rs/optimized/cd91bxdrbjyy0s7hgoreg00sd.ll index 64059d81340..6871a4fd467 100644 --- a/bench/uv-rs/optimized/cd91bxdrbjyy0s7hgoreg00sd.ll +++ b/bench/uv-rs/optimized/cd91bxdrbjyy0s7hgoreg00sd.ll @@ -13,8 +13,6 @@ target triple = "x86_64-unknown-linux-gnu" @anon.87d71366d4923eef96f1594b0a0401ec.38 = private unnamed_addr constant <{ [48 x i8] }> <{ [48 x i8] c"assertion failed: edge.height == self.height - 1" }>, align 1 @anon.87d71366d4923eef96f1594b0a0401ec.39 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.87d71366d4923eef96f1594b0a0401ec.34.llvm.13776314953183602680, [16 x i8] c"[\00\00\00\00\00\00\00\AD\02\00\00\09\00\00\00" }>, align 8 @anon.87d71366d4923eef96f1594b0a0401ec.40 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.87d71366d4923eef96f1594b0a0401ec.34.llvm.13776314953183602680, [16 x i8] c"[\00\00\00\00\00\00\00\B1\02\00\00\09\00\00\00" }>, align 8 -@anon.87d71366d4923eef96f1594b0a0401ec.41 = private unnamed_addr constant <{ [40 x i8] }> <{ [40 x i8] c"assertion failed: src.len() == dst.len()" }>, align 1 -@anon.87d71366d4923eef96f1594b0a0401ec.42 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.87d71366d4923eef96f1594b0a0401ec.34.llvm.13776314953183602680, [16 x i8] c"[\00\00\00\00\00\00\00J\07\00\00\05\00\00\00" }>, align 8 @anon.87d71366d4923eef96f1594b0a0401ec.47 = private unnamed_addr constant <{ [39 x i8] }> <{ [39 x i8] c"assertion failed: old_left_len >= count" }>, align 1 @anon.87d71366d4923eef96f1594b0a0401ec.48 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.87d71366d4923eef96f1594b0a0401ec.34.llvm.13776314953183602680, [16 x i8] c"[\00\00\00\00\00\00\00\F8\05\00\00\0D\00\00\00" }>, align 8 @anon.87d71366d4923eef96f1594b0a0401ec.53 = private unnamed_addr constant <{ [5 x i8] }> <{ [5 x i8] c"Empty" }>, align 1 @@ -2249,7 +2247,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %12 = load i64, ptr %11, align 8, !noundef !3 %13 = load ptr, ptr %0, align 8, !nonnull !3, !noundef !3 %14 = icmp eq i64 %12, 0 - br i1 %14, label %.loopexit80, label %.lr.ph.i + br i1 %14, label %.loopexit79, label %.lr.ph.i .lr.ph.i: ; preds = %3, %.lr.ph.i %.sroa.03.06.i = phi i64 [ %22, %.lr.ph.i ], [ %12, %3 ] @@ -2264,28 +2262,28 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %21 = load ptr, ptr %20, align 8, !noalias !217, !nonnull !3, !noundef !3 %22 = add i64 %.sroa.03.06.i, -1 %23 = icmp eq i64 %22, 0 - br i1 %23, label %.loopexit80, label %.lr.ph.i + br i1 %23, label %.loopexit79, label %.lr.ph.i -.loopexit80: ; preds = %.lr.ph.i, %3 +.loopexit79: ; preds = %.lr.ph.i, %3 %.sroa.04.0.lcssa.i = phi ptr [ %13, %3 ], [ %21, %.lr.ph.i ] call void @llvm.lifetime.start.p0(ptr nonnull %10) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %10, ptr noundef nonnull align 8 dereferenceable(56) %1, i64 56, i1 false) br label %24 -24: ; preds = %.loopexit, %.loopexit80 - %.sroa.0.063 = phi ptr [ %.sroa.04.0.lcssa.i, %.loopexit80 ], [ %.sroa.0.1, %.loopexit ] +24: ; preds = %.loopexit, %.loopexit79 + %.sroa.0.062 = phi ptr [ %.sroa.04.0.lcssa.i, %.loopexit79 ], [ %.sroa.0.1, %.loopexit ] invoke void @"_ZN137_$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$K$C$V$C$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h661601749f192570E"(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %9, ptr noalias noundef nonnull align 8 dereferenceable(56) %10) to label %27 unwind label %25 -.body22: ; preds = %133, %174, %25 - %.pn = phi { ptr, i32 } [ %eh.lpad-body26.ph, %174 ], [ %26, %25 ], [ %134, %133 ] +.body21: ; preds = %130, %171, %25 + %.pn = phi { ptr, i32 } [ %eh.lpad-body25.ph, %171 ], [ %26, %25 ], [ %131, %130 ] invoke void @"_ZN4core3ptr435drop_in_place$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$std..path..PathBuf$C$alloc..collections..btree..set_val..SetValZST$C$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$std..path..PathBuf$GT$$C$alloc..collections..btree..set..BTreeSet$LT$std..path..PathBuf$GT$..from_sorted_iter$LT$alloc..vec..into_iter..IntoIter$LT$std..path..PathBuf$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17h67baa16c56356c1cE"(ptr noalias noundef nonnull align 8 dereferenceable(56) %10) #31 - to label %.body unwind label %175 + to label %.body unwind label %172 25: ; preds = %24 %26 = landingpad { ptr, i32 } cleanup - br label %.body22 + br label %.body21 27: ; preds = %24 %28 = load i64, ptr %9, align 8, !range !37, !noundef !3 @@ -2340,10 +2338,10 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. 45: ; preds = %27 call void @llvm.lifetime.start.p0(ptr nonnull %8) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(24) %9, i64 24, i1 false) - %46 = getelementptr inbounds nuw i8, ptr %.sroa.0.063, i64 274 + %46 = getelementptr inbounds nuw i8, ptr %.sroa.0.062, i64 274 %47 = load i16, ptr %46, align 2, !noundef !3 %48 = icmp ult i16 %47, 11 - br i1 %48, label %169, label %.preheader + br i1 %48, label %166, label %.preheader "_ZN4core3ptr435drop_in_place$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$std..path..PathBuf$C$alloc..collections..btree..set_val..SetValZST$C$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$std..path..PathBuf$GT$$C$alloc..collections..btree..set..BTreeSet$LT$std..path..PathBuf$GT$..from_sorted_iter$LT$alloc..vec..into_iter..IntoIter$LT$std..path..PathBuf$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17h67baa16c56356c1cE.exit": ; preds = %"_ZN4core3ptr95drop_in_place$LT$$LP$std..path..PathBuf$C$alloc..collections..btree..set_val..SetValZST$RP$$GT$17h49d3224b2b3f7040E.llvm.17527439469218822883.exit.i.i.i.i", %"_ZN4core3ptr297drop_in_place$LT$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$std..path..PathBuf$GT$$C$alloc..collections..btree..set..BTreeSet$LT$std..path..PathBuf$GT$..from_sorted_iter$LT$alloc..vec..into_iter..IntoIter$LT$std..path..PathBuf$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17had9800545f70b31dE.exit.i.i" call void @llvm.lifetime.end.p0(ptr nonnull %10) @@ -2383,7 +2381,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %64 = icmp ult i16 %63, 5 br i1 %64, label %66, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h5e4c9fff80ecc7f0E.exit.i" -"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h5e4c9fff80ecc7f0E.exit.i": ; preds = %97, %52 +"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h5e4c9fff80ecc7f0E.exit.i": ; preds = %94, %52 %65 = icmp eq i64 %58, 0 br i1 %65, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17h979c1b5994ffefd6E.exit", label %.lr.ph.i18 @@ -2394,321 +2392,312 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %69 = load i16, ptr %68, align 2, !noalias !260, !noundef !3 %70 = zext nneg i16 %63 to i64 %.not.i.i = icmp ugt i16 %narrow.i, %69 - br i1 %.not.i.i, label %.noexc20, label %71, !prof !250 + br i1 %.not.i.i, label %.noexc20, label %_ZN5alloc11collections5btree4node13move_to_slice17h8a5e49b51272f2b7E.exit.i.i, !prof !250 .noexc20: ; preds = %66 call void @_ZN4core9panicking5panic17had768957450a0f86E(ptr noalias noundef nonnull readonly align 1 @anon.87d71366d4923eef96f1594b0a0401ec.47, i64 noundef 39, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.87d71366d4923eef96f1594b0a0401ec.48) #34 unreachable -71: ; preds = %66 - %72 = zext i16 %69 to i64 - %73 = sub nuw nsw i64 %72, %67 - %74 = trunc nuw i64 %73 to i16 - store i16 %74, ptr %68, align 2, !noalias !260 +_ZN5alloc11collections5btree4node13move_to_slice17h8a5e49b51272f2b7E.exit.i.i: ; preds = %66 + %71 = zext i16 %69 to i64 + %72 = sub nuw nsw i64 %71, %67 + %73 = trunc nuw i64 %72 to i16 + store i16 %73, ptr %68, align 2, !noalias !260 store i16 5, ptr %62, align 2, !noalias !260 - %75 = getelementptr inbounds nuw i8, ptr %61, i64 8 - %76 = getelementptr inbounds nuw { [3 x i64] }, ptr %75, i64 %67 - %77 = mul nuw nsw i64 %70, 24 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %76, ptr nonnull align 8 %75, i64 %77, i1 false), !alias.scope !263, !noalias !260 - %78 = add nuw nsw i64 %73, 1 - %79 = sub nuw nsw i64 %72, %78 - %80 = add nsw i64 %67, -1 - %81 = icmp eq i64 %79, %80 - br i1 %81, label %_ZN5alloc11collections5btree4node13move_to_slice17h8a5e49b51272f2b7E.exit.i.i, label %.noexc21, !prof !120 - -.noexc21: ; preds = %71 - call void @_ZN4core9panicking5panic17had768957450a0f86E(ptr noalias noundef nonnull readonly align 1 @anon.87d71366d4923eef96f1594b0a0401ec.41, i64 noundef 40, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.87d71366d4923eef96f1594b0a0401ec.42) #34 - unreachable - -_ZN5alloc11collections5btree4node13move_to_slice17h8a5e49b51272f2b7E.exit.i.i: ; preds = %71 - %82 = getelementptr inbounds nuw i8, ptr %57, i64 8 - %83 = getelementptr inbounds nuw { [3 x i64] }, ptr %82, i64 %78 - %84 = mul nuw nsw i64 %79, 24 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %75, ptr nonnull readonly align 8 %83, i64 %84, i1 false), !alias.scope !266, !noalias !260 - %85 = getelementptr inbounds nuw { [3 x i64] }, ptr %82, i64 %73 - %86 = getelementptr inbounds nuw i8, ptr %.sroa.03.010.i, i64 8 - %87 = getelementptr inbounds nuw { [3 x i64] }, ptr %86, i64 %54 + %74 = getelementptr inbounds nuw i8, ptr %61, i64 8 + %75 = getelementptr inbounds nuw { [3 x i64] }, ptr %74, i64 %67 + %76 = mul nuw nsw i64 %70, 24 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %75, ptr nonnull align 8 %74, i64 %76, i1 false), !alias.scope !263, !noalias !260 + %77 = add nuw nsw i64 %72, 1 + %78 = sub nuw nsw i64 %71, %77 + %79 = getelementptr inbounds nuw i8, ptr %57, i64 8 + %80 = getelementptr inbounds nuw { [3 x i64] }, ptr %79, i64 %77 + %81 = mul nuw nsw i64 %78, 24 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %74, ptr nonnull readonly align 8 %80, i64 %81, i1 false), !alias.scope !266, !noalias !260 + %82 = getelementptr inbounds nuw { [3 x i64] }, ptr %79, i64 %72 + %83 = getelementptr inbounds nuw i8, ptr %.sroa.03.010.i, i64 8 + %84 = getelementptr inbounds nuw { [3 x i64] }, ptr %83, i64 %54 call void @llvm.lifetime.start.p0(ptr nonnull %5) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(24) %87, i64 24, i1 false), !noalias !260 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %87, ptr noundef nonnull align 8 dereferenceable(24) %85, i64 24, i1 false), !noalias !260 - %88 = getelementptr inbounds nuw { [3 x i64] }, ptr %75, i64 %79 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %88, ptr noundef nonnull align 8 dereferenceable(24) %5, i64 24, i1 false), !noalias !260 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(24) %84, i64 24, i1 false), !noalias !260 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %84, ptr noundef nonnull align 8 dereferenceable(24) %82, i64 24, i1 false), !noalias !260 + %85 = getelementptr inbounds nuw { [3 x i64] }, ptr %74, i64 %78 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %85, ptr noundef nonnull align 8 dereferenceable(24) %5, i64 24, i1 false), !noalias !260 call void @llvm.lifetime.end.p0(ptr nonnull %5) %cond.i = icmp eq i64 %58, 0 - br i1 %cond.i, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17h979c1b5994ffefd6E.exit", label %89 - -89: ; preds = %_ZN5alloc11collections5btree4node13move_to_slice17h8a5e49b51272f2b7E.exit.i.i - %90 = getelementptr inbounds nuw i8, ptr %61, i64 280 - %91 = getelementptr inbounds nuw ptr, ptr %90, i64 %67 - %92 = shl nuw nsw i64 %70, 3 - %93 = add nuw nsw i64 %92, 8 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %91, ptr noundef nonnull align 8 dereferenceable(1) %90, i64 %93, i1 false), !alias.scope !270, !noalias !260 - %94 = getelementptr inbounds nuw i8, ptr %57, i64 280 - %95 = getelementptr inbounds nuw ptr, ptr %94, i64 %78 - %96 = shl nuw nsw i64 %67, 3 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %90, ptr noundef nonnull readonly align 8 dereferenceable(1) %95, i64 %96, i1 false), !alias.scope !273, !noalias !260 - br label %97 - -97: ; preds = %97, %89 - %.sroa.0.05.i.i.i = phi i64 [ 0, %89 ], [ %98, %97 ] - %98 = add nuw nsw i64 %.sroa.0.05.i.i.i, 1 - %99 = getelementptr inbounds nuw ptr, ptr %90, i64 %.sroa.0.05.i.i.i - %100 = load ptr, ptr %99, align 8, !noalias !277, !nonnull !3, !noundef !3 - store ptr %61, ptr %100, align 8, !noalias !282 - %101 = trunc nuw nsw i64 %.sroa.0.05.i.i.i to i16 - %102 = getelementptr inbounds nuw i8, ptr %100, i64 272 - store i16 %101, ptr %102, align 8, !noalias !282 + br i1 %cond.i, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17h979c1b5994ffefd6E.exit", label %86 + +86: ; preds = %_ZN5alloc11collections5btree4node13move_to_slice17h8a5e49b51272f2b7E.exit.i.i + %87 = getelementptr inbounds nuw i8, ptr %61, i64 280 + %88 = getelementptr inbounds nuw ptr, ptr %87, i64 %67 + %89 = shl nuw nsw i64 %70, 3 + %90 = add nuw nsw i64 %89, 8 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %88, ptr noundef nonnull align 8 dereferenceable(1) %87, i64 %90, i1 false), !alias.scope !270, !noalias !260 + %91 = getelementptr inbounds nuw i8, ptr %57, i64 280 + %92 = getelementptr inbounds nuw ptr, ptr %91, i64 %77 + %93 = shl nuw nsw i64 %67, 3 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %87, ptr noundef nonnull readonly align 8 dereferenceable(1) %92, i64 %93, i1 false), !alias.scope !273, !noalias !260 + br label %94 + +94: ; preds = %94, %86 + %.sroa.0.05.i.i.i = phi i64 [ 0, %86 ], [ %95, %94 ] + %95 = add nuw nsw i64 %.sroa.0.05.i.i.i, 1 + %96 = getelementptr inbounds nuw ptr, ptr %87, i64 %.sroa.0.05.i.i.i + %97 = load ptr, ptr %96, align 8, !noalias !277, !nonnull !3, !noundef !3 + store ptr %61, ptr %97, align 8, !noalias !282 + %98 = trunc nuw nsw i64 %.sroa.0.05.i.i.i to i16 + %99 = getelementptr inbounds nuw i8, ptr %97, i64 272 + store i16 %98, ptr %99, align 8, !noalias !282 %exitcond.not.i.i.i = icmp eq i64 %.sroa.0.05.i.i.i, 5 - br i1 %exitcond.not.i.i.i, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h5e4c9fff80ecc7f0E.exit.i", label %97 + br i1 %exitcond.not.i.i.i, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h5e4c9fff80ecc7f0E.exit.i", label %94 "_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17h979c1b5994ffefd6E.exit": ; preds = %_ZN5alloc11collections5btree4node13move_to_slice17h8a5e49b51272f2b7E.exit.i.i, %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h5e4c9fff80ecc7f0E.exit.i", %"_ZN4core3ptr435drop_in_place$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$std..path..PathBuf$C$alloc..collections..btree..set_val..SetValZST$C$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$std..path..PathBuf$GT$$C$alloc..collections..btree..set..BTreeSet$LT$std..path..PathBuf$GT$..from_sorted_iter$LT$alloc..vec..into_iter..IntoIter$LT$std..path..PathBuf$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17h67baa16c56356c1cE.exit" ret void -.preheader: ; preds = %45, %105 - %.sroa.5.0 = phi i64 [ %106, %105 ], [ 0, %45 ] - %.sroa.0.0 = phi ptr [ %103, %105 ], [ %.sroa.0.063, %45 ] - %103 = load ptr, ptr %.sroa.0.0, align 8, !noalias !283, !noundef !3 - %104 = icmp eq ptr %103, null - br i1 %104, label %110, label %105 +.preheader: ; preds = %45, %102 + %.sroa.5.0 = phi i64 [ %103, %102 ], [ 0, %45 ] + %.sroa.0.0 = phi ptr [ %100, %102 ], [ %.sroa.0.062, %45 ] + %100 = load ptr, ptr %.sroa.0.0, align 8, !noalias !283, !noundef !3 + %101 = icmp eq ptr %100, null + br i1 %101, label %107, label %102 -.loopexit75: ; preds = %.loopexit69 - %lpad.loopexit77 = landingpad { ptr, i32 } +.loopexit74: ; preds = %.loopexit68 + %lpad.loopexit76 = landingpad { ptr, i32 } cleanup - br label %174 + br label %171 -.loopexit.split-lp76: ; preds = %127 - %lpad.loopexit.split-lp78 = landingpad { ptr, i32 } +.loopexit.split-lp75: ; preds = %124 + %lpad.loopexit.split-lp77 = landingpad { ptr, i32 } cleanup - br label %174 + br label %171 -105: ; preds = %.preheader - %106 = add i64 %.sroa.5.0, 1 - %107 = getelementptr inbounds nuw i8, ptr %103, i64 274 - %108 = load i16, ptr %107, align 2, !noundef !3 - %109 = icmp ult i16 %108, 11 - br i1 %109, label %.loopexit69, label %.preheader +102: ; preds = %.preheader + %103 = add i64 %.sroa.5.0, 1 + %104 = getelementptr inbounds nuw i8, ptr %100, i64 274 + %105 = load i16, ptr %104, align 2, !noundef !3 + %106 = icmp ult i16 %105, 11 + br i1 %106, label %.loopexit68, label %.preheader -110: ; preds = %.preheader +107: ; preds = %.preheader call void @llvm.experimental.noalias.scope.decl(metadata !286) - %111 = load ptr, ptr %0, align 8, !alias.scope !286, !nonnull !3, !noundef !3 - %112 = load i64, ptr %11, align 8, !alias.scope !286, !noundef !3 - %113 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h8c84883ef03924a3E.llvm.14237793921444769281"() - to label %.noexc.i unwind label %.loopexit70, !noalias !286 + %108 = load ptr, ptr %0, align 8, !alias.scope !286, !nonnull !3, !noundef !3 + %109 = load i64, ptr %11, align 8, !alias.scope !286, !noundef !3 + %110 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h8c84883ef03924a3E.llvm.14237793921444769281"() + to label %.noexc.i unwind label %.loopexit69, !noalias !286 -.noexc.i: ; preds = %110 - %114 = icmp eq ptr %113, null - br i1 %114, label %115, label %119 +.noexc.i: ; preds = %107 + %111 = icmp eq ptr %110, null + br i1 %111, label %112, label %116 -115: ; preds = %.noexc.i +112: ; preds = %.noexc.i invoke void @_ZN5alloc5alloc18handle_alloc_error17he572ac0a571405f2E(i64 noundef 8, i64 noundef 376) #34 - to label %.noexc1.i unwind label %.loopexit.split-lp71, !noalias !286 + to label %.noexc1.i unwind label %.loopexit.split-lp70, !noalias !286 -.noexc1.i: ; preds = %115 +.noexc1.i: ; preds = %112 unreachable -.loopexit70: ; preds = %110 - %lpad.loopexit72 = landingpad { ptr, i32 } +.loopexit69: ; preds = %107 + %lpad.loopexit71 = landingpad { ptr, i32 } cleanup - br label %116 + br label %113 -.loopexit.split-lp71: ; preds = %115 - %lpad.loopexit.split-lp73 = landingpad { ptr, i32 } +.loopexit.split-lp70: ; preds = %112 + %lpad.loopexit.split-lp72 = landingpad { ptr, i32 } cleanup - br label %116 + br label %113 -116: ; preds = %.loopexit.split-lp71, %.loopexit70 - %lpad.phi74 = phi { ptr, i32 } [ %lpad.loopexit72, %.loopexit70 ], [ %lpad.loopexit.split-lp73, %.loopexit.split-lp71 ] +113: ; preds = %.loopexit.split-lp70, %.loopexit69 + %lpad.phi73 = phi { ptr, i32 } [ %lpad.loopexit71, %.loopexit69 ], [ %lpad.loopexit.split-lp72, %.loopexit.split-lp70 ] invoke void @"_ZN93_$LT$alloc..collections..btree..mem..replace..PanicGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17h10aeed2765f7de5aE"(ptr noalias noundef nonnull align 1 %4) - to label %174 unwind label %117, !noalias !286 + to label %171 unwind label %114, !noalias !286 -117: ; preds = %116 - %118 = landingpad { ptr, i32 } +114: ; preds = %113 + %115 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h7e5529b9cf989fd4E() #32, !noalias !286 unreachable -119: ; preds = %.noexc.i - store ptr null, ptr %113, align 8, !noalias !286 - %120 = getelementptr inbounds nuw i8, ptr %113, i64 274 - store i16 0, ptr %120, align 2, !noalias !286 - %121 = getelementptr inbounds nuw i8, ptr %113, i64 280 - store ptr %111, ptr %121, align 8, !noalias !286 - %122 = add i64 %112, 1 - store ptr %113, ptr %111, align 8, !noalias !289 - %123 = getelementptr inbounds nuw i8, ptr %111, i64 272 - store i16 0, ptr %123, align 8, !noalias !296 - store ptr %113, ptr %0, align 8, !alias.scope !286 - store i64 %122, ptr %11, align 8, !alias.scope !286 - br label %.loopexit69 - -.loopexit69: ; preds = %105, %119 - %.sroa.047.0 = phi ptr [ %113, %119 ], [ %103, %105 ] - %.sroa.648.0 = phi i64 [ %122, %119 ], [ %106, %105 ] - %124 = add i64 %.sroa.648.0, -1 - %125 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h5e870dbda49dc12eE.llvm.14237793921444769281"() - to label %.noexc27 unwind label %.loopexit75 - -.noexc27: ; preds = %.loopexit69 - %126 = icmp eq ptr %125, null - br i1 %126, label %127, label %128 - -127: ; preds = %.noexc27 +116: ; preds = %.noexc.i + store ptr null, ptr %110, align 8, !noalias !286 + %117 = getelementptr inbounds nuw i8, ptr %110, i64 274 + store i16 0, ptr %117, align 2, !noalias !286 + %118 = getelementptr inbounds nuw i8, ptr %110, i64 280 + store ptr %108, ptr %118, align 8, !noalias !286 + %119 = add i64 %109, 1 + store ptr %110, ptr %108, align 8, !noalias !289 + %120 = getelementptr inbounds nuw i8, ptr %108, i64 272 + store i16 0, ptr %120, align 8, !noalias !296 + store ptr %110, ptr %0, align 8, !alias.scope !286 + store i64 %119, ptr %11, align 8, !alias.scope !286 + br label %.loopexit68 + +.loopexit68: ; preds = %102, %116 + %.sroa.046.0 = phi ptr [ %110, %116 ], [ %100, %102 ] + %.sroa.647.0 = phi i64 [ %119, %116 ], [ %103, %102 ] + %121 = add i64 %.sroa.647.0, -1 + %122 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h5e870dbda49dc12eE.llvm.14237793921444769281"() + to label %.noexc26 unwind label %.loopexit74 + +.noexc26: ; preds = %.loopexit68 + %123 = icmp eq ptr %122, null + br i1 %123, label %124, label %125 + +124: ; preds = %.noexc26 invoke void @_ZN5alloc5alloc18handle_alloc_error17he572ac0a571405f2E(i64 noundef 8, i64 noundef 280) #34 - to label %.noexc28 unwind label %.loopexit.split-lp76 + to label %.noexc27 unwind label %.loopexit.split-lp75 -.noexc28: ; preds = %127 +.noexc27: ; preds = %124 unreachable -128: ; preds = %.noexc27 - store ptr null, ptr %125, align 8 - %129 = getelementptr inbounds nuw i8, ptr %125, i64 274 - store i16 0, ptr %129, align 2 - %.not = icmp eq i64 %124, 0 - br i1 %.not, label %.loopexit111, label %.lr.ph +125: ; preds = %.noexc26 + store ptr null, ptr %122, align 8 + %126 = getelementptr inbounds nuw i8, ptr %122, i64 274 + store i16 0, ptr %126, align 2 + %.not = icmp eq i64 %121, 0 + br i1 %.not, label %.loopexit109, label %.lr.ph -.invoke.i: ; preds = %.loopexit111 +.invoke.i: ; preds = %.loopexit109 invoke void @_ZN4core9panicking5panic17had768957450a0f86E(ptr noalias noundef nonnull readonly align 1 @anon.87d71366d4923eef96f1594b0a0401ec.36.llvm.13776314953183602680, i64 noundef 32, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.87d71366d4923eef96f1594b0a0401ec.40) #34 - to label %.cont.i unwind label %133, !noalias !297 + to label %.cont.i unwind label %130, !noalias !297 .cont.i: ; preds = %.invoke.i unreachable -.loopexit111: ; preds = %_ZN5alloc11collections5btree3mem7replace17heb2315a8c7a47dcdE.exit43, %128 - %.sroa.053.0.lcssa = phi ptr [ %125, %128 ], [ %160, %_ZN5alloc11collections5btree3mem7replace17heb2315a8c7a47dcdE.exit43 ] +.loopexit109: ; preds = %_ZN5alloc11collections5btree3mem7replace17heb2315a8c7a47dcdE.exit42, %125 + %.sroa.052.0.lcssa = phi ptr [ %122, %125 ], [ %157, %_ZN5alloc11collections5btree3mem7replace17heb2315a8c7a47dcdE.exit42 ] call void @llvm.lifetime.start.p0(ptr nonnull %7) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %9, i64 24, i1 false) - %130 = getelementptr inbounds nuw i8, ptr %.sroa.047.0, i64 274 - %131 = load i16, ptr %130, align 2, !noalias !297, !noundef !3 - %132 = icmp ult i16 %131, 11 - br i1 %132, label %137, label %.invoke.i, !prof !120 + %127 = getelementptr inbounds nuw i8, ptr %.sroa.046.0, i64 274 + %128 = load i16, ptr %127, align 2, !noalias !297, !noundef !3 + %129 = icmp ult i16 %128, 11 + br i1 %129, label %134, label %.invoke.i, !prof !120 -133: ; preds = %.invoke.i - %134 = landingpad { ptr, i32 } +130: ; preds = %.invoke.i + %131 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h1d12f4ff3d9ce15bE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %7) #31 - to label %.body22 unwind label %135 + to label %.body21 unwind label %132 -135: ; preds = %133 - %136 = landingpad { ptr, i32 } +132: ; preds = %130 + %133 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h7e5529b9cf989fd4E() #32 unreachable -137: ; preds = %.loopexit111 - %138 = zext nneg i16 %131 to i64 - %139 = add nuw nsw i16 %131, 1 - store i16 %139, ptr %130, align 2, !noalias !297 - %140 = getelementptr inbounds nuw i8, ptr %.sroa.047.0, i64 8 - %141 = getelementptr inbounds nuw { [3 x i64] }, ptr %140, i64 %138 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %141, ptr noundef nonnull align 8 dereferenceable(24) %9, i64 24, i1 false) - %142 = add nuw nsw i64 %138, 1 - %143 = getelementptr inbounds nuw i8, ptr %.sroa.047.0, i64 280 - %144 = getelementptr inbounds nuw ptr, ptr %143, i64 %142 - store ptr %.sroa.053.0.lcssa, ptr %144, align 8, !noalias !297 - store ptr %.sroa.047.0, ptr %.sroa.053.0.lcssa, align 8, !noalias !300 - %145 = trunc nuw nsw i64 %142 to i16 - %146 = getelementptr inbounds nuw i8, ptr %.sroa.053.0.lcssa, i64 272 - store i16 %145, ptr %146, align 8, !noalias !300 +134: ; preds = %.loopexit109 + %135 = zext nneg i16 %128 to i64 + %136 = add nuw nsw i16 %128, 1 + store i16 %136, ptr %127, align 2, !noalias !297 + %137 = getelementptr inbounds nuw i8, ptr %.sroa.046.0, i64 8 + %138 = getelementptr inbounds nuw { [3 x i64] }, ptr %137, i64 %135 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %138, ptr noundef nonnull align 8 dereferenceable(24) %9, i64 24, i1 false) + %139 = add nuw nsw i64 %135, 1 + %140 = getelementptr inbounds nuw i8, ptr %.sroa.046.0, i64 280 + %141 = getelementptr inbounds nuw ptr, ptr %140, i64 %139 + store ptr %.sroa.052.0.lcssa, ptr %141, align 8, !noalias !297 + store ptr %.sroa.046.0, ptr %.sroa.052.0.lcssa, align 8, !noalias !300 + %142 = trunc nuw nsw i64 %139 to i16 + %143 = getelementptr inbounds nuw i8, ptr %.sroa.052.0.lcssa, i64 272 + store i16 %142, ptr %143, align 8, !noalias !300 call void @llvm.lifetime.end.p0(ptr nonnull %7) - %147 = icmp eq i64 %.sroa.648.0, 0 - br i1 %147, label %.loopexit, label %.lr.ph.i32 - -.lr.ph.i32: ; preds = %137, %.lr.ph.i32 - %.sroa.03.06.i33 = phi i64 [ %155, %.lr.ph.i32 ], [ %.sroa.648.0, %137 ] - %.sroa.04.05.i34 = phi ptr [ %154, %.lr.ph.i32 ], [ %.sroa.047.0, %137 ] - %148 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i34, i64 274 - %149 = load i16, ptr %148, align 2, !noalias !303, !noundef !3 - %150 = zext nneg i16 %149 to i64 - %151 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i34, i64 280 - %152 = icmp ult i16 %149, 12 - call void @llvm.assume(i1 %152) - %153 = getelementptr inbounds nuw ptr, ptr %151, i64 %150 - %154 = load ptr, ptr %153, align 8, !noalias !306, !nonnull !3, !noundef !3 - %155 = add i64 %.sroa.03.06.i33, -1 - %156 = icmp eq i64 %155, 0 - br i1 %156, label %.loopexit, label %.lr.ph.i32 - -.loopexit: ; preds = %.lr.ph.i32, %137, %169 - %.sroa.0.1 = phi ptr [ %.sroa.0.063, %169 ], [ %.sroa.047.0, %137 ], [ %154, %.lr.ph.i32 ] - %157 = load i64, ptr %2, align 8, !noundef !3 - %158 = add i64 %157, 1 - store i64 %158, ptr %2, align 8 + %144 = icmp eq i64 %.sroa.647.0, 0 + br i1 %144, label %.loopexit, label %.lr.ph.i31 + +.lr.ph.i31: ; preds = %134, %.lr.ph.i31 + %.sroa.03.06.i32 = phi i64 [ %152, %.lr.ph.i31 ], [ %.sroa.647.0, %134 ] + %.sroa.04.05.i33 = phi ptr [ %151, %.lr.ph.i31 ], [ %.sroa.046.0, %134 ] + %145 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i33, i64 274 + %146 = load i16, ptr %145, align 2, !noalias !303, !noundef !3 + %147 = zext nneg i16 %146 to i64 + %148 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i33, i64 280 + %149 = icmp ult i16 %146, 12 + call void @llvm.assume(i1 %149) + %150 = getelementptr inbounds nuw ptr, ptr %148, i64 %147 + %151 = load ptr, ptr %150, align 8, !noalias !306, !nonnull !3, !noundef !3 + %152 = add i64 %.sroa.03.06.i32, -1 + %153 = icmp eq i64 %152, 0 + br i1 %153, label %.loopexit, label %.lr.ph.i31 + +.loopexit: ; preds = %.lr.ph.i31, %134, %166 + %.sroa.0.1 = phi ptr [ %.sroa.0.062, %166 ], [ %.sroa.046.0, %134 ], [ %151, %.lr.ph.i31 ] + %154 = load i64, ptr %2, align 8, !noundef !3 + %155 = add i64 %154, 1 + store i64 %155, ptr %2, align 8 call void @llvm.lifetime.end.p0(ptr nonnull %8) br label %24 -.lr.ph: ; preds = %128, %_ZN5alloc11collections5btree3mem7replace17heb2315a8c7a47dcdE.exit43 - %.sroa.02.090 = phi i64 [ %159, %_ZN5alloc11collections5btree3mem7replace17heb2315a8c7a47dcdE.exit43 ], [ 0, %128 ] - %.sroa.053.088 = phi ptr [ %160, %_ZN5alloc11collections5btree3mem7replace17heb2315a8c7a47dcdE.exit43 ], [ %125, %128 ] - %159 = add nuw i64 %.sroa.02.090, 1 - %160 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h8c84883ef03924a3E.llvm.14237793921444769281"() - to label %.noexc.i38 unwind label %.loopexit68, !noalias !309 +.lr.ph: ; preds = %125, %_ZN5alloc11collections5btree3mem7replace17heb2315a8c7a47dcdE.exit42 + %.sroa.02.089 = phi i64 [ %156, %_ZN5alloc11collections5btree3mem7replace17heb2315a8c7a47dcdE.exit42 ], [ 0, %125 ] + %.sroa.052.087 = phi ptr [ %157, %_ZN5alloc11collections5btree3mem7replace17heb2315a8c7a47dcdE.exit42 ], [ %122, %125 ] + %156 = add nuw i64 %.sroa.02.089, 1 + %157 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h8c84883ef03924a3E.llvm.14237793921444769281"() + to label %.noexc.i37 unwind label %.loopexit67, !noalias !309 -.noexc.i38: ; preds = %.lr.ph - %161 = icmp eq ptr %160, null - br i1 %161, label %162, label %_ZN5alloc11collections5btree3mem7replace17heb2315a8c7a47dcdE.exit43 +.noexc.i37: ; preds = %.lr.ph + %158 = icmp eq ptr %157, null + br i1 %158, label %159, label %_ZN5alloc11collections5btree3mem7replace17heb2315a8c7a47dcdE.exit42 -162: ; preds = %.noexc.i38 +159: ; preds = %.noexc.i37 invoke void @_ZN5alloc5alloc18handle_alloc_error17he572ac0a571405f2E(i64 noundef 8, i64 noundef 376) #34 - to label %.noexc1.i39 unwind label %.loopexit.split-lp, !noalias !309 + to label %.noexc1.i38 unwind label %.loopexit.split-lp, !noalias !309 -.noexc1.i39: ; preds = %162 +.noexc1.i38: ; preds = %159 unreachable -.loopexit68: ; preds = %.lr.ph +.loopexit67: ; preds = %.lr.ph %lpad.loopexit = landingpad { ptr, i32 } cleanup - br label %163 + br label %160 -.loopexit.split-lp: ; preds = %162 +.loopexit.split-lp: ; preds = %159 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup - br label %163 + br label %160 -163: ; preds = %.loopexit.split-lp, %.loopexit68 - %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit68 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] +160: ; preds = %.loopexit.split-lp, %.loopexit67 + %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit67 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] invoke void @"_ZN93_$LT$alloc..collections..btree..mem..replace..PanicGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17h10aeed2765f7de5aE"(ptr noalias noundef nonnull align 1 %4) - to label %174 unwind label %164, !noalias !309 + to label %171 unwind label %161, !noalias !309 -164: ; preds = %163 - %165 = landingpad { ptr, i32 } +161: ; preds = %160 + %162 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h7e5529b9cf989fd4E() #32, !noalias !309 unreachable -_ZN5alloc11collections5btree3mem7replace17heb2315a8c7a47dcdE.exit43: ; preds = %.noexc.i38 - store ptr null, ptr %160, align 8, !noalias !309 - %166 = getelementptr inbounds nuw i8, ptr %160, i64 274 - store i16 0, ptr %166, align 2, !noalias !309 - %167 = getelementptr inbounds nuw i8, ptr %160, i64 280 - store ptr %.sroa.053.088, ptr %167, align 8, !noalias !309 - store ptr %160, ptr %.sroa.053.088, align 8, !noalias !312 - %168 = getelementptr inbounds nuw i8, ptr %.sroa.053.088, i64 272 - store i16 0, ptr %168, align 8, !noalias !319 - %exitcond.not = icmp eq i64 %159, %124 - br i1 %exitcond.not, label %.loopexit111, label %.lr.ph - -169: ; preds = %45 - %170 = zext nneg i16 %47 to i64 - %171 = add nuw nsw i16 %47, 1 - store i16 %171, ptr %46, align 2, !noalias !320 - %172 = getelementptr inbounds nuw i8, ptr %.sroa.0.063, i64 8 - %173 = getelementptr inbounds nuw { [3 x i64] }, ptr %172, i64 %170 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %173, ptr noundef nonnull align 8 dereferenceable(24) %9, i64 24, i1 false) +_ZN5alloc11collections5btree3mem7replace17heb2315a8c7a47dcdE.exit42: ; preds = %.noexc.i37 + store ptr null, ptr %157, align 8, !noalias !309 + %163 = getelementptr inbounds nuw i8, ptr %157, i64 274 + store i16 0, ptr %163, align 2, !noalias !309 + %164 = getelementptr inbounds nuw i8, ptr %157, i64 280 + store ptr %.sroa.052.087, ptr %164, align 8, !noalias !309 + store ptr %157, ptr %.sroa.052.087, align 8, !noalias !312 + %165 = getelementptr inbounds nuw i8, ptr %.sroa.052.087, i64 272 + store i16 0, ptr %165, align 8, !noalias !319 + %exitcond.not = icmp eq i64 %156, %121 + br i1 %exitcond.not, label %.loopexit109, label %.lr.ph + +166: ; preds = %45 + %167 = zext nneg i16 %47 to i64 + %168 = add nuw nsw i16 %47, 1 + store i16 %168, ptr %46, align 2, !noalias !320 + %169 = getelementptr inbounds nuw i8, ptr %.sroa.0.062, i64 8 + %170 = getelementptr inbounds nuw { [3 x i64] }, ptr %169, i64 %167 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %170, ptr noundef nonnull align 8 dereferenceable(24) %9, i64 24, i1 false) br label %.loopexit -174: ; preds = %.loopexit75, %.loopexit.split-lp76, %116, %163 - %eh.lpad-body26.ph = phi { ptr, i32 } [ %lpad.phi74, %116 ], [ %lpad.phi, %163 ], [ %lpad.loopexit77, %.loopexit75 ], [ %lpad.loopexit.split-lp78, %.loopexit.split-lp76 ] +171: ; preds = %.loopexit74, %.loopexit.split-lp75, %113, %160 + %eh.lpad-body25.ph = phi { ptr, i32 } [ %lpad.phi73, %113 ], [ %lpad.phi, %160 ], [ %lpad.loopexit76, %.loopexit74 ], [ %lpad.loopexit.split-lp77, %.loopexit.split-lp75 ] invoke void @"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h1d12f4ff3d9ce15bE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %8) #31 - to label %.body22 unwind label %175 + to label %.body21 unwind label %172 -175: ; preds = %174, %.body22 - %176 = landingpad { ptr, i32 } +172: ; preds = %171, %.body21 + %173 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h7e5529b9cf989fd4E() #32 unreachable -.body: ; preds = %.body22, %32 - %.pn9 = phi { ptr, i32 } [ %.pn, %.body22 ], [ %33, %32 ] +.body: ; preds = %.body21, %32 + %.pn9 = phi { ptr, i32 } [ %.pn, %.body21 ], [ %33, %32 ] resume { ptr, i32 } %.pn9 } diff --git a/bench/wasmi-rs/optimized/apu427tbl3luqie4ryqrtwt7n.ll b/bench/wasmi-rs/optimized/apu427tbl3luqie4ryqrtwt7n.ll index 76ab2083a93..7384f44315f 100644 --- a/bench/wasmi-rs/optimized/apu427tbl3luqie4ryqrtwt7n.ll +++ b/bench/wasmi-rs/optimized/apu427tbl3luqie4ryqrtwt7n.ll @@ -5387,7 +5387,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %8 = load i64, ptr %7, align 8, !noundef !3 %9 = load ptr, ptr %0, align 8, !nonnull !3, !noundef !3 %10 = icmp eq i64 %8, 0 - br i1 %10, label %.loopexit68, label %.lr.ph.i + br i1 %10, label %.loopexit67, label %.lr.ph.i .lr.ph.i: ; preds = %3, %.lr.ph.i %.sroa.03.06.i = phi i64 [ %18, %.lr.ph.i ], [ %8, %3 ] @@ -5402,9 +5402,9 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %17 = load ptr, ptr %16, align 8, !noalias !1056, !nonnull !3, !noundef !3 %18 = add i64 %.sroa.03.06.i, -1 %19 = icmp eq i64 %18, 0 - br i1 %19, label %.loopexit68, label %.lr.ph.i + br i1 %19, label %.loopexit67, label %.lr.ph.i -.loopexit68: ; preds = %.lr.ph.i, %3 +.loopexit67: ; preds = %.lr.ph.i, %3 %.sroa.04.0.lcssa.i = phi ptr [ %9, %3 ], [ %17, %.lr.ph.i ] call void @llvm.lifetime.start.p0(ptr nonnull %6) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %6, ptr noundef nonnull align 8 dereferenceable(56) %1, i64 56, i1 false) @@ -5413,16 +5413,16 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %22 = getelementptr inbounds nuw i8, ptr %5, i64 20 br label %23 -23: ; preds = %.loopexit, %.loopexit68 - %.sroa.0.062 = phi ptr [ %.sroa.04.0.lcssa.i, %.loopexit68 ], [ %.sroa.0.1, %.loopexit ] +23: ; preds = %.loopexit, %.loopexit67 + %.sroa.0.061 = phi ptr [ %.sroa.04.0.lcssa.i, %.loopexit67 ], [ %.sroa.0.1, %.loopexit ] call void @llvm.lifetime.start.p0(ptr nonnull %5) invoke void @"_ZN137_$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$K$C$V$C$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h9976c62c67a5f3aeE"(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %5, ptr noalias noundef nonnull align 8 dereferenceable(56) %6) to label %26 unwind label %24 -.body: ; preds = %194, %192, %146, %143, %24 - %.pn = phi { ptr, i32 } [ %25, %24 ], [ %144, %143 ], [ %144, %146 ], [ %eh.lpad-body25.ph, %192 ], [ %eh.lpad-body25.ph, %194 ] +.body: ; preds = %191, %189, %143, %140, %24 + %.pn = phi { ptr, i32 } [ %25, %24 ], [ %141, %140 ], [ %141, %143 ], [ %eh.lpad-body24.ph, %189 ], [ %eh.lpad-body24.ph, %191 ] invoke void @"_ZN4core3ptr266drop_in_place$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$alloc..boxed..Box$LT$str$GT$$C$wasmi..module..export..ExternIdx$C$alloc..vec..into_iter..IntoIter$LT$$LP$alloc..boxed..Box$LT$str$GT$$C$wasmi..module..export..ExternIdx$RP$$GT$$GT$$GT$17h1335b101281c380bE"(ptr noalias noundef nonnull align 8 dereferenceable(56) %6) #21 - to label %197 unwind label %195 + to label %194 unwind label %192 24: ; preds = %23 %25 = landingpad { ptr, i32 } @@ -5438,10 +5438,10 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %29 = load ptr, ptr %5, align 8, !nonnull !3, !align !12, !noundef !3 %30 = load i64, ptr %21, align 8, !noundef !3 %31 = load i32, ptr %22, align 4, !noundef !3 - %32 = getelementptr inbounds nuw i8, ptr %.sroa.0.062, i64 274 + %32 = getelementptr inbounds nuw i8, ptr %.sroa.0.061, i64 274 %33 = load i16, ptr %32, align 2, !noundef !3 %34 = icmp ult i16 %33, 11 - br i1 %34, label %184, label %.preheader + br i1 %34, label %181, label %.preheader 35: ; preds = %26 call void @llvm.lifetime.end.p0(ptr nonnull %5) @@ -5483,7 +5483,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %51 = icmp ult i16 %50, 5 br i1 %51, label %53, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17hec8709796a5de8fdE.exit.i" -"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17hec8709796a5de8fdE.exit.i": ; preds = %104, %39 +"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17hec8709796a5de8fdE.exit.i": ; preds = %101, %39 %52 = icmp eq i64 %45, 0 br i1 %52, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17hadee3f7b929347ffE.exit", label %.lr.ph.i19 @@ -5493,309 +5493,300 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %55 = getelementptr inbounds nuw i8, ptr %44, i64 274 %56 = load i16, ptr %55, align 2, !noalias !1069, !noundef !3 %.not.i.i = icmp ugt i16 %narrow.i, %56 - br i1 %.not.i.i, label %.noexc20, label %57, !prof !5 + br i1 %.not.i.i, label %.noexc20, label %_ZN5alloc11collections5btree4node13move_to_slice17h599b7004fce3b67bE.exit.i.i, !prof !5 .noexc20: ; preds = %53 call void @_ZN4core9panicking5panic17h13ee8adf815f0d87E(ptr noalias noundef nonnull readonly align 1 @anon.6067d76e8933c42764495b1ece5cceb0.35, i64 noundef 39, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6067d76e8933c42764495b1ece5cceb0.36) #20 unreachable -57: ; preds = %53 - %58 = zext i16 %56 to i64 - %59 = zext nneg i16 %50 to i64 - %60 = sub nuw nsw i64 %58, %54 - %61 = trunc nuw i64 %60 to i16 - store i16 %61, ptr %55, align 2, !noalias !1069 +_ZN5alloc11collections5btree4node13move_to_slice17h599b7004fce3b67bE.exit.i.i: ; preds = %53 + %57 = zext i16 %56 to i64 + %58 = zext nneg i16 %50 to i64 + %59 = sub nuw nsw i64 %57, %54 + %60 = trunc nuw i64 %59 to i16 + store i16 %60, ptr %55, align 2, !noalias !1069 store i16 5, ptr %49, align 2, !noalias !1069 - %62 = getelementptr inbounds nuw { [2 x i64] }, ptr %48, i64 %54 - %63 = shl nuw nsw i64 %59, 4 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %62, ptr nonnull align 8 %48, i64 %63, i1 false), !alias.scope !1072, !noalias !1069 - %64 = getelementptr inbounds nuw i8, ptr %48, i64 184 - %65 = getelementptr inbounds nuw { [2 x i32] }, ptr %64, i64 %54 - %66 = shl nuw nsw i64 %59, 3 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %65, ptr nonnull align 4 %64, i64 %66, i1 false), !alias.scope !1075, !noalias !1069 - %67 = add nuw nsw i64 %60, 1 - %68 = sub nuw nsw i64 %58, %67 - %69 = add nsw i64 %54, -1 - %70 = icmp eq i64 %68, %69 - br i1 %70, label %_ZN5alloc11collections5btree4node13move_to_slice17h599b7004fce3b67bE.exit.i.i, label %.noexc21, !prof !4 - -.noexc21: ; preds = %57 - call void @_ZN4core9panicking5panic17h13ee8adf815f0d87E(ptr noalias noundef nonnull readonly align 1 @anon.6067d76e8933c42764495b1ece5cceb0.24, i64 noundef 40, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6067d76e8933c42764495b1ece5cceb0.25) #20 - unreachable - -_ZN5alloc11collections5btree4node13move_to_slice17h599b7004fce3b67bE.exit.i.i: ; preds = %57 - %71 = getelementptr inbounds nuw { [2 x i64] }, ptr %44, i64 %67 - %72 = shl nuw nsw i64 %68, 4 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %48, ptr nonnull readonly align 8 %71, i64 %72, i1 false), !alias.scope !1078, !noalias !1069 - %73 = getelementptr inbounds nuw i8, ptr %44, i64 184 - %74 = getelementptr inbounds nuw { [2 x i32] }, ptr %73, i64 %67 - %75 = shl nuw nsw i64 %68, 3 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %64, ptr nonnull readonly align 4 %74, i64 %75, i1 false), !alias.scope !1082, !noalias !1069 - %76 = getelementptr inbounds nuw { [2 x i64] }, ptr %44, i64 %60 - %77 = load ptr, ptr %76, align 8, !noalias !1069, !nonnull !3, !align !12, !noundef !3 - %78 = getelementptr inbounds nuw i8, ptr %76, i64 8 - %79 = load i64, ptr %78, align 8, !noalias !1069, !noundef !3 - %80 = getelementptr inbounds nuw { [2 x i32] }, ptr %73, i64 %60 - %81 = load i32, ptr %80, align 4, !range !1086, !noalias !1069, !noundef !3 - %82 = getelementptr inbounds nuw i8, ptr %80, i64 4 - %83 = load i32, ptr %82, align 4, !noalias !1069, !noundef !3 - %84 = getelementptr inbounds nuw { [2 x i64] }, ptr %.sroa.03.010.i, i64 %41 - %85 = getelementptr inbounds nuw i8, ptr %.sroa.03.010.i, i64 184 - %86 = getelementptr inbounds nuw { [2 x i32] }, ptr %85, i64 %41 - %87 = load ptr, ptr %84, align 8, !noalias !1087, !nonnull !3, !align !12, !noundef !3 - %88 = getelementptr inbounds nuw i8, ptr %84, i64 8 - %89 = load i64, ptr %88, align 8, !noalias !1087, !noundef !3 - store ptr %77, ptr %84, align 8, !noalias !1087 - store i64 %79, ptr %88, align 8, !noalias !1087 - %90 = load i32, ptr %86, align 4, !range !1086, !noalias !1087, !noundef !3 - %91 = getelementptr inbounds nuw i8, ptr %86, i64 4 - %92 = load i32, ptr %91, align 4, !noalias !1087, !noundef !3 - store i32 %81, ptr %86, align 4, !noalias !1087 - store i32 %83, ptr %91, align 4, !noalias !1087 - %93 = getelementptr inbounds nuw { [2 x i64] }, ptr %48, i64 %68 - store ptr %87, ptr %93, align 8, !noalias !1069 - %94 = getelementptr inbounds nuw i8, ptr %93, i64 8 - store i64 %89, ptr %94, align 8, !noalias !1069 - %95 = getelementptr inbounds nuw { [2 x i32] }, ptr %64, i64 %68 - store i32 %90, ptr %95, align 4, !noalias !1069 - %96 = getelementptr inbounds nuw i8, ptr %95, i64 4 - store i32 %92, ptr %96, align 4, !noalias !1069 + %61 = getelementptr inbounds nuw { [2 x i64] }, ptr %48, i64 %54 + %62 = shl nuw nsw i64 %58, 4 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %61, ptr nonnull align 8 %48, i64 %62, i1 false), !alias.scope !1072, !noalias !1069 + %63 = getelementptr inbounds nuw i8, ptr %48, i64 184 + %64 = getelementptr inbounds nuw { [2 x i32] }, ptr %63, i64 %54 + %65 = shl nuw nsw i64 %58, 3 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %64, ptr nonnull align 4 %63, i64 %65, i1 false), !alias.scope !1075, !noalias !1069 + %66 = add nuw nsw i64 %59, 1 + %67 = sub nuw nsw i64 %57, %66 + %68 = getelementptr inbounds nuw { [2 x i64] }, ptr %44, i64 %66 + %69 = shl nuw nsw i64 %67, 4 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %48, ptr nonnull readonly align 8 %68, i64 %69, i1 false), !alias.scope !1078, !noalias !1069 + %70 = getelementptr inbounds nuw i8, ptr %44, i64 184 + %71 = getelementptr inbounds nuw { [2 x i32] }, ptr %70, i64 %66 + %72 = shl nuw nsw i64 %67, 3 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %63, ptr nonnull readonly align 4 %71, i64 %72, i1 false), !alias.scope !1082, !noalias !1069 + %73 = getelementptr inbounds nuw { [2 x i64] }, ptr %44, i64 %59 + %74 = load ptr, ptr %73, align 8, !noalias !1069, !nonnull !3, !align !12, !noundef !3 + %75 = getelementptr inbounds nuw i8, ptr %73, i64 8 + %76 = load i64, ptr %75, align 8, !noalias !1069, !noundef !3 + %77 = getelementptr inbounds nuw { [2 x i32] }, ptr %70, i64 %59 + %78 = load i32, ptr %77, align 4, !range !1086, !noalias !1069, !noundef !3 + %79 = getelementptr inbounds nuw i8, ptr %77, i64 4 + %80 = load i32, ptr %79, align 4, !noalias !1069, !noundef !3 + %81 = getelementptr inbounds nuw { [2 x i64] }, ptr %.sroa.03.010.i, i64 %41 + %82 = getelementptr inbounds nuw i8, ptr %.sroa.03.010.i, i64 184 + %83 = getelementptr inbounds nuw { [2 x i32] }, ptr %82, i64 %41 + %84 = load ptr, ptr %81, align 8, !noalias !1087, !nonnull !3, !align !12, !noundef !3 + %85 = getelementptr inbounds nuw i8, ptr %81, i64 8 + %86 = load i64, ptr %85, align 8, !noalias !1087, !noundef !3 + store ptr %74, ptr %81, align 8, !noalias !1087 + store i64 %76, ptr %85, align 8, !noalias !1087 + %87 = load i32, ptr %83, align 4, !range !1086, !noalias !1087, !noundef !3 + %88 = getelementptr inbounds nuw i8, ptr %83, i64 4 + %89 = load i32, ptr %88, align 4, !noalias !1087, !noundef !3 + store i32 %78, ptr %83, align 4, !noalias !1087 + store i32 %80, ptr %88, align 4, !noalias !1087 + %90 = getelementptr inbounds nuw { [2 x i64] }, ptr %48, i64 %67 + store ptr %84, ptr %90, align 8, !noalias !1069 + %91 = getelementptr inbounds nuw i8, ptr %90, i64 8 + store i64 %86, ptr %91, align 8, !noalias !1069 + %92 = getelementptr inbounds nuw { [2 x i32] }, ptr %63, i64 %67 + store i32 %87, ptr %92, align 4, !noalias !1069 + %93 = getelementptr inbounds nuw i8, ptr %92, i64 4 + store i32 %89, ptr %93, align 4, !noalias !1069 %cond.i = icmp eq i64 %45, 0 - br i1 %cond.i, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17hadee3f7b929347ffE.exit", label %97 - -97: ; preds = %_ZN5alloc11collections5btree4node13move_to_slice17h599b7004fce3b67bE.exit.i.i - %98 = getelementptr inbounds nuw i8, ptr %48, i64 280 - %99 = getelementptr inbounds nuw ptr, ptr %98, i64 %54 - %100 = add nuw nsw i64 %66, 8 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %99, ptr noundef nonnull align 8 dereferenceable(1) %98, i64 %100, i1 false), !alias.scope !1091, !noalias !1069 - %101 = getelementptr inbounds nuw i8, ptr %44, i64 280 - %102 = getelementptr inbounds nuw ptr, ptr %101, i64 %67 - %103 = shl nuw nsw i64 %54, 3 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %98, ptr noundef nonnull readonly align 8 dereferenceable(1) %102, i64 %103, i1 false), !alias.scope !1094, !noalias !1069 - br label %104 - -104: ; preds = %104, %97 - %.sroa.0.06.i.i.i = phi i64 [ 0, %97 ], [ %105, %104 ] - %105 = add nuw nsw i64 %.sroa.0.06.i.i.i, 1 - %106 = getelementptr inbounds nuw ptr, ptr %98, i64 %.sroa.0.06.i.i.i - %107 = load ptr, ptr %106, align 8, !noalias !1098, !nonnull !3, !noundef !3 - %108 = getelementptr inbounds nuw i8, ptr %107, i64 176 - store ptr %48, ptr %108, align 8, !noalias !1103 - %109 = trunc nuw nsw i64 %.sroa.0.06.i.i.i to i16 - %110 = getelementptr inbounds nuw i8, ptr %107, i64 272 - store i16 %109, ptr %110, align 8, !noalias !1103 + br i1 %cond.i, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17hadee3f7b929347ffE.exit", label %94 + +94: ; preds = %_ZN5alloc11collections5btree4node13move_to_slice17h599b7004fce3b67bE.exit.i.i + %95 = getelementptr inbounds nuw i8, ptr %48, i64 280 + %96 = getelementptr inbounds nuw ptr, ptr %95, i64 %54 + %97 = add nuw nsw i64 %65, 8 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %96, ptr noundef nonnull align 8 dereferenceable(1) %95, i64 %97, i1 false), !alias.scope !1091, !noalias !1069 + %98 = getelementptr inbounds nuw i8, ptr %44, i64 280 + %99 = getelementptr inbounds nuw ptr, ptr %98, i64 %66 + %100 = shl nuw nsw i64 %54, 3 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %95, ptr noundef nonnull readonly align 8 dereferenceable(1) %99, i64 %100, i1 false), !alias.scope !1094, !noalias !1069 + br label %101 + +101: ; preds = %101, %94 + %.sroa.0.06.i.i.i = phi i64 [ 0, %94 ], [ %102, %101 ] + %102 = add nuw nsw i64 %.sroa.0.06.i.i.i, 1 + %103 = getelementptr inbounds nuw ptr, ptr %95, i64 %.sroa.0.06.i.i.i + %104 = load ptr, ptr %103, align 8, !noalias !1098, !nonnull !3, !noundef !3 + %105 = getelementptr inbounds nuw i8, ptr %104, i64 176 + store ptr %48, ptr %105, align 8, !noalias !1103 + %106 = trunc nuw nsw i64 %.sroa.0.06.i.i.i to i16 + %107 = getelementptr inbounds nuw i8, ptr %104, i64 272 + store i16 %106, ptr %107, align 8, !noalias !1103 %exitcond.not.i.i.i = icmp eq i64 %.sroa.0.06.i.i.i, 5 - br i1 %exitcond.not.i.i.i, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17hec8709796a5de8fdE.exit.i", label %104 + br i1 %exitcond.not.i.i.i, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17hec8709796a5de8fdE.exit.i", label %101 "_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17hadee3f7b929347ffE.exit": ; preds = %_ZN5alloc11collections5btree4node13move_to_slice17h599b7004fce3b67bE.exit.i.i, %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17hec8709796a5de8fdE.exit.i", %35 ret void -.preheader: ; preds = %28, %115 - %.sroa.5.0 = phi i64 [ %116, %115 ], [ 0, %28 ] - %.sroa.0.0 = phi ptr [ %112, %115 ], [ %.sroa.0.062, %28 ] - %111 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 176 - %112 = load ptr, ptr %111, align 8, !noalias !1104, !noundef !3 - %.not.i22 = icmp eq ptr %112, null - br i1 %.not.i22, label %120, label %115 +.preheader: ; preds = %28, %112 + %.sroa.5.0 = phi i64 [ %113, %112 ], [ 0, %28 ] + %.sroa.0.0 = phi ptr [ %109, %112 ], [ %.sroa.0.061, %28 ] + %108 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 176 + %109 = load ptr, ptr %108, align 8, !noalias !1104, !noundef !3 + %.not.i21 = icmp eq ptr %109, null + br i1 %.not.i21, label %117, label %112 -113: ; preds = %.loopexit67 - %114 = landingpad { ptr, i32 } +110: ; preds = %.loopexit66 + %111 = landingpad { ptr, i32 } cleanup - br label %192 + br label %189 -115: ; preds = %.preheader - %116 = add i64 %.sroa.5.0, 1 - %117 = getelementptr inbounds nuw i8, ptr %112, i64 274 - %118 = load i16, ptr %117, align 2, !noundef !3 - %119 = icmp ult i16 %118, 11 - br i1 %119, label %.loopexit67, label %.preheader +112: ; preds = %.preheader + %113 = add i64 %.sroa.5.0, 1 + %114 = getelementptr inbounds nuw i8, ptr %109, i64 274 + %115 = load i16, ptr %114, align 2, !noundef !3 + %116 = icmp ult i16 %115, 11 + br i1 %116, label %.loopexit66, label %.preheader -120: ; preds = %.preheader +117: ; preds = %.preheader call void @llvm.experimental.noalias.scope.decl(metadata !1107) - %121 = load ptr, ptr %0, align 8, !alias.scope !1107, !nonnull !3, !noundef !3 - %122 = load i64, ptr %7, align 8, !alias.scope !1107, !noundef !3 - %123 = invoke noundef nonnull align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$13new_uninit_in17h1fac1c440793f403E"() - to label %128 unwind label %124, !noalias !1107 + %118 = load ptr, ptr %0, align 8, !alias.scope !1107, !nonnull !3, !noundef !3 + %119 = load i64, ptr %7, align 8, !alias.scope !1107, !noundef !3 + %120 = invoke noundef nonnull align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$13new_uninit_in17h1fac1c440793f403E"() + to label %125 unwind label %121, !noalias !1107 -124: ; preds = %120 - %125 = landingpad { ptr, i32 } +121: ; preds = %117 + %122 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17h0ab9888a99b91661E"(ptr noalias noundef nonnull align 1 %4) #21 - to label %192 unwind label %126, !noalias !1107 + to label %189 unwind label %123, !noalias !1107 -126: ; preds = %124 - %127 = landingpad { ptr, i32 } +123: ; preds = %121 + %124 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hccd47ddd364deb23E() #22, !noalias !1107 unreachable -128: ; preds = %120 - %129 = getelementptr inbounds nuw i8, ptr %123, i64 176 - store ptr null, ptr %129, align 8, !noalias !1107 - %130 = getelementptr inbounds nuw i8, ptr %123, i64 274 - store i16 0, ptr %130, align 2, !noalias !1107 - %131 = getelementptr inbounds nuw i8, ptr %123, i64 280 - store ptr %121, ptr %131, align 8, !noalias !1107 - %132 = add i64 %122, 1 - %133 = getelementptr inbounds nuw i8, ptr %121, i64 176 - store ptr %123, ptr %133, align 8, !noalias !1110 - %134 = getelementptr inbounds nuw i8, ptr %121, i64 272 - store i16 0, ptr %134, align 8, !noalias !1117 - store ptr %123, ptr %0, align 8, !alias.scope !1107 - store i64 %132, ptr %7, align 8, !alias.scope !1107 - br label %.loopexit67 - -.loopexit67: ; preds = %115, %128 - %.sroa.046.0 = phi ptr [ %123, %128 ], [ %112, %115 ] - %.sroa.647.0 = phi i64 [ %132, %128 ], [ %116, %115 ] - %135 = add i64 %.sroa.647.0, -1 - %136 = invoke noundef nonnull align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$13new_uninit_in17hfc8a0faa91227dfaE"() - to label %137 unwind label %113 - -137: ; preds = %.loopexit67 - %138 = getelementptr inbounds nuw i8, ptr %136, i64 176 - store ptr null, ptr %138, align 8 - %139 = getelementptr inbounds nuw i8, ptr %136, i64 274 - store i16 0, ptr %139, align 2 - %.not86 = icmp eq i64 %135, 0 - br i1 %.not86, label %._crit_edge, label %.lr.ph +125: ; preds = %117 + %126 = getelementptr inbounds nuw i8, ptr %120, i64 176 + store ptr null, ptr %126, align 8, !noalias !1107 + %127 = getelementptr inbounds nuw i8, ptr %120, i64 274 + store i16 0, ptr %127, align 2, !noalias !1107 + %128 = getelementptr inbounds nuw i8, ptr %120, i64 280 + store ptr %118, ptr %128, align 8, !noalias !1107 + %129 = add i64 %119, 1 + %130 = getelementptr inbounds nuw i8, ptr %118, i64 176 + store ptr %120, ptr %130, align 8, !noalias !1110 + %131 = getelementptr inbounds nuw i8, ptr %118, i64 272 + store i16 0, ptr %131, align 8, !noalias !1117 + store ptr %120, ptr %0, align 8, !alias.scope !1107 + store i64 %129, ptr %7, align 8, !alias.scope !1107 + br label %.loopexit66 + +.loopexit66: ; preds = %112, %125 + %.sroa.045.0 = phi ptr [ %120, %125 ], [ %109, %112 ] + %.sroa.646.0 = phi i64 [ %129, %125 ], [ %113, %112 ] + %132 = add i64 %.sroa.646.0, -1 + %133 = invoke noundef nonnull align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$13new_uninit_in17hfc8a0faa91227dfaE"() + to label %134 unwind label %110 + +134: ; preds = %.loopexit66 + %135 = getelementptr inbounds nuw i8, ptr %133, i64 176 + store ptr null, ptr %135, align 8 + %136 = getelementptr inbounds nuw i8, ptr %133, i64 274 + store i16 0, ptr %136, align 2 + %.not85 = icmp eq i64 %132, 0 + br i1 %.not85, label %._crit_edge, label %.lr.ph .invoke.i: ; preds = %._crit_edge invoke void @_ZN4core9panicking5panic17h13ee8adf815f0d87E(ptr noalias noundef nonnull readonly align 1 @anon.6067d76e8933c42764495b1ece5cceb0.14, i64 noundef 32, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.6067d76e8933c42764495b1ece5cceb0.18) #20 - to label %.cont.i unwind label %143, !noalias !1118 + to label %.cont.i unwind label %140, !noalias !1118 .cont.i: ; preds = %.invoke.i unreachable -._crit_edge: ; preds = %_ZN5alloc11collections5btree3mem7replace17h141bca5fc4eee815E.exit38, %137 - %.sroa.052.0.lcssa = phi ptr [ %136, %137 ], [ %173, %_ZN5alloc11collections5btree3mem7replace17h141bca5fc4eee815E.exit38 ] - %140 = getelementptr inbounds nuw i8, ptr %.sroa.046.0, i64 274 - %141 = load i16, ptr %140, align 2, !noalias !1118, !noundef !3 - %142 = icmp ult i16 %141, 11 - br i1 %142, label %147, label %.invoke.i, !prof !4 +._crit_edge: ; preds = %_ZN5alloc11collections5btree3mem7replace17h141bca5fc4eee815E.exit37, %134 + %.sroa.051.0.lcssa = phi ptr [ %133, %134 ], [ %170, %_ZN5alloc11collections5btree3mem7replace17h141bca5fc4eee815E.exit37 ] + %137 = getelementptr inbounds nuw i8, ptr %.sroa.045.0, i64 274 + %138 = load i16, ptr %137, align 2, !noalias !1118, !noundef !3 + %139 = icmp ult i16 %138, 11 + br i1 %139, label %144, label %.invoke.i, !prof !4 -143: ; preds = %.invoke.i - %144 = landingpad { ptr, i32 } +140: ; preds = %.invoke.i + %141 = landingpad { ptr, i32 } cleanup - %145 = icmp eq i64 %30, 0 - br i1 %145, label %.body, label %146 + %142 = icmp eq i64 %30, 0 + br i1 %142, label %.body, label %143 -146: ; preds = %143 +143: ; preds = %140 call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull align 1 %29, i64 noundef range(i64 1, 0) %30, i64 noundef 1) #23 br label %.body -147: ; preds = %._crit_edge - %148 = zext nneg i16 %141 to i64 - %149 = add nuw nsw i16 %141, 1 - store i16 %149, ptr %140, align 2, !noalias !1118 - %150 = getelementptr inbounds nuw { [2 x i64] }, ptr %.sroa.046.0, i64 %148 - store ptr %29, ptr %150, align 8, !noalias !1118 - %151 = getelementptr inbounds nuw i8, ptr %150, i64 8 - store i64 %30, ptr %151, align 8, !noalias !1118 - %152 = getelementptr inbounds nuw i8, ptr %.sroa.046.0, i64 184 - %153 = getelementptr inbounds nuw { [2 x i32] }, ptr %152, i64 %148 - store i32 %27, ptr %153, align 4, !noalias !1118 - %154 = getelementptr inbounds nuw i8, ptr %153, i64 4 - store i32 %31, ptr %154, align 4, !noalias !1118 - %155 = add nuw nsw i64 %148, 1 - %156 = getelementptr inbounds nuw i8, ptr %.sroa.046.0, i64 280 - %157 = getelementptr inbounds nuw ptr, ptr %156, i64 %155 - store ptr %.sroa.052.0.lcssa, ptr %157, align 8, !noalias !1118 - %158 = getelementptr inbounds nuw i8, ptr %.sroa.052.0.lcssa, i64 176 - store ptr %.sroa.046.0, ptr %158, align 8, !noalias !1121 - %159 = trunc nuw nsw i64 %155 to i16 - %160 = getelementptr inbounds nuw i8, ptr %.sroa.052.0.lcssa, i64 272 - store i16 %159, ptr %160, align 8, !noalias !1121 - %161 = icmp eq i64 %.sroa.647.0, 0 - br i1 %161, label %.loopexit, label %.lr.ph.i30 - -.lr.ph.i30: ; preds = %147, %.lr.ph.i30 - %.sroa.03.06.i31 = phi i64 [ %169, %.lr.ph.i30 ], [ %.sroa.647.0, %147 ] - %.sroa.04.05.i32 = phi ptr [ %168, %.lr.ph.i30 ], [ %.sroa.046.0, %147 ] - %162 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i32, i64 274 - %163 = load i16, ptr %162, align 2, !noalias !1124, !noundef !3 - %164 = zext nneg i16 %163 to i64 - %165 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i32, i64 280 - %166 = icmp ult i16 %163, 12 - call void @llvm.assume(i1 %166) - %167 = getelementptr inbounds nuw ptr, ptr %165, i64 %164 - %168 = load ptr, ptr %167, align 8, !noalias !1127, !nonnull !3, !noundef !3 - %169 = add i64 %.sroa.03.06.i31, -1 - %170 = icmp eq i64 %169, 0 - br i1 %170, label %.loopexit, label %.lr.ph.i30 - -.loopexit: ; preds = %.lr.ph.i30, %147, %184 - %.sroa.0.1 = phi ptr [ %.sroa.0.062, %184 ], [ %.sroa.046.0, %147 ], [ %168, %.lr.ph.i30 ] - %171 = load i64, ptr %2, align 8, !noundef !3 - %172 = add i64 %171, 1 - store i64 %172, ptr %2, align 8 +144: ; preds = %._crit_edge + %145 = zext nneg i16 %138 to i64 + %146 = add nuw nsw i16 %138, 1 + store i16 %146, ptr %137, align 2, !noalias !1118 + %147 = getelementptr inbounds nuw { [2 x i64] }, ptr %.sroa.045.0, i64 %145 + store ptr %29, ptr %147, align 8, !noalias !1118 + %148 = getelementptr inbounds nuw i8, ptr %147, i64 8 + store i64 %30, ptr %148, align 8, !noalias !1118 + %149 = getelementptr inbounds nuw i8, ptr %.sroa.045.0, i64 184 + %150 = getelementptr inbounds nuw { [2 x i32] }, ptr %149, i64 %145 + store i32 %27, ptr %150, align 4, !noalias !1118 + %151 = getelementptr inbounds nuw i8, ptr %150, i64 4 + store i32 %31, ptr %151, align 4, !noalias !1118 + %152 = add nuw nsw i64 %145, 1 + %153 = getelementptr inbounds nuw i8, ptr %.sroa.045.0, i64 280 + %154 = getelementptr inbounds nuw ptr, ptr %153, i64 %152 + store ptr %.sroa.051.0.lcssa, ptr %154, align 8, !noalias !1118 + %155 = getelementptr inbounds nuw i8, ptr %.sroa.051.0.lcssa, i64 176 + store ptr %.sroa.045.0, ptr %155, align 8, !noalias !1121 + %156 = trunc nuw nsw i64 %152 to i16 + %157 = getelementptr inbounds nuw i8, ptr %.sroa.051.0.lcssa, i64 272 + store i16 %156, ptr %157, align 8, !noalias !1121 + %158 = icmp eq i64 %.sroa.646.0, 0 + br i1 %158, label %.loopexit, label %.lr.ph.i29 + +.lr.ph.i29: ; preds = %144, %.lr.ph.i29 + %.sroa.03.06.i30 = phi i64 [ %166, %.lr.ph.i29 ], [ %.sroa.646.0, %144 ] + %.sroa.04.05.i31 = phi ptr [ %165, %.lr.ph.i29 ], [ %.sroa.045.0, %144 ] + %159 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i31, i64 274 + %160 = load i16, ptr %159, align 2, !noalias !1124, !noundef !3 + %161 = zext nneg i16 %160 to i64 + %162 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i31, i64 280 + %163 = icmp ult i16 %160, 12 + call void @llvm.assume(i1 %163) + %164 = getelementptr inbounds nuw ptr, ptr %162, i64 %161 + %165 = load ptr, ptr %164, align 8, !noalias !1127, !nonnull !3, !noundef !3 + %166 = add i64 %.sroa.03.06.i30, -1 + %167 = icmp eq i64 %166, 0 + br i1 %167, label %.loopexit, label %.lr.ph.i29 + +.loopexit: ; preds = %.lr.ph.i29, %144, %181 + %.sroa.0.1 = phi ptr [ %.sroa.0.061, %181 ], [ %.sroa.045.0, %144 ], [ %165, %.lr.ph.i29 ] + %168 = load i64, ptr %2, align 8, !noundef !3 + %169 = add i64 %168, 1 + store i64 %169, ptr %2, align 8 call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %23 -.lr.ph: ; preds = %137, %_ZN5alloc11collections5btree3mem7replace17h141bca5fc4eee815E.exit38 - %.sroa.02.084 = phi i64 [ %178, %_ZN5alloc11collections5btree3mem7replace17h141bca5fc4eee815E.exit38 ], [ 0, %137 ] - %.sroa.052.082 = phi ptr [ %173, %_ZN5alloc11collections5btree3mem7replace17h141bca5fc4eee815E.exit38 ], [ %136, %137 ] - %173 = invoke noundef nonnull align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$13new_uninit_in17h1fac1c440793f403E"() - to label %_ZN5alloc11collections5btree3mem7replace17h141bca5fc4eee815E.exit38 unwind label %174, !noalias !1130 +.lr.ph: ; preds = %134, %_ZN5alloc11collections5btree3mem7replace17h141bca5fc4eee815E.exit37 + %.sroa.02.083 = phi i64 [ %175, %_ZN5alloc11collections5btree3mem7replace17h141bca5fc4eee815E.exit37 ], [ 0, %134 ] + %.sroa.051.081 = phi ptr [ %170, %_ZN5alloc11collections5btree3mem7replace17h141bca5fc4eee815E.exit37 ], [ %133, %134 ] + %170 = invoke noundef nonnull align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$13new_uninit_in17h1fac1c440793f403E"() + to label %_ZN5alloc11collections5btree3mem7replace17h141bca5fc4eee815E.exit37 unwind label %171, !noalias !1130 -174: ; preds = %.lr.ph - %175 = landingpad { ptr, i32 } +171: ; preds = %.lr.ph + %172 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17h0ab9888a99b91661E"(ptr noalias noundef nonnull align 1 %4) #21 - to label %192 unwind label %176, !noalias !1130 + to label %189 unwind label %173, !noalias !1130 -176: ; preds = %174 - %177 = landingpad { ptr, i32 } +173: ; preds = %171 + %174 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hccd47ddd364deb23E() #22, !noalias !1130 unreachable -_ZN5alloc11collections5btree3mem7replace17h141bca5fc4eee815E.exit38: ; preds = %.lr.ph - %178 = add nuw i64 %.sroa.02.084, 1 - %179 = getelementptr inbounds nuw i8, ptr %173, i64 176 - store ptr null, ptr %179, align 8, !noalias !1130 - %180 = getelementptr inbounds nuw i8, ptr %173, i64 274 - store i16 0, ptr %180, align 2, !noalias !1130 - %181 = getelementptr inbounds nuw i8, ptr %173, i64 280 - store ptr %.sroa.052.082, ptr %181, align 8, !noalias !1130 - %182 = getelementptr inbounds nuw i8, ptr %.sroa.052.082, i64 176 - store ptr %173, ptr %182, align 8, !noalias !1133 - %183 = getelementptr inbounds nuw i8, ptr %.sroa.052.082, i64 272 - store i16 0, ptr %183, align 8, !noalias !1140 - %exitcond.not = icmp eq i64 %178, %135 +_ZN5alloc11collections5btree3mem7replace17h141bca5fc4eee815E.exit37: ; preds = %.lr.ph + %175 = add nuw i64 %.sroa.02.083, 1 + %176 = getelementptr inbounds nuw i8, ptr %170, i64 176 + store ptr null, ptr %176, align 8, !noalias !1130 + %177 = getelementptr inbounds nuw i8, ptr %170, i64 274 + store i16 0, ptr %177, align 2, !noalias !1130 + %178 = getelementptr inbounds nuw i8, ptr %170, i64 280 + store ptr %.sroa.051.081, ptr %178, align 8, !noalias !1130 + %179 = getelementptr inbounds nuw i8, ptr %.sroa.051.081, i64 176 + store ptr %170, ptr %179, align 8, !noalias !1133 + %180 = getelementptr inbounds nuw i8, ptr %.sroa.051.081, i64 272 + store i16 0, ptr %180, align 8, !noalias !1140 + %exitcond.not = icmp eq i64 %175, %132 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph -184: ; preds = %28 - %185 = zext nneg i16 %33 to i64 - %186 = add nuw nsw i16 %33, 1 - store i16 %186, ptr %32, align 2, !noalias !1141 - %187 = getelementptr inbounds nuw { [2 x i64] }, ptr %.sroa.0.062, i64 %185 - store ptr %29, ptr %187, align 8, !noalias !1141 - %188 = getelementptr inbounds nuw i8, ptr %187, i64 8 - store i64 %30, ptr %188, align 8, !noalias !1141 - %189 = getelementptr inbounds nuw i8, ptr %.sroa.0.062, i64 184 - %190 = getelementptr inbounds nuw { [2 x i32] }, ptr %189, i64 %185 - store i32 %27, ptr %190, align 4, !noalias !1141 - %191 = getelementptr inbounds nuw i8, ptr %190, i64 4 - store i32 %31, ptr %191, align 4, !noalias !1141 +181: ; preds = %28 + %182 = zext nneg i16 %33 to i64 + %183 = add nuw nsw i16 %33, 1 + store i16 %183, ptr %32, align 2, !noalias !1141 + %184 = getelementptr inbounds nuw { [2 x i64] }, ptr %.sroa.0.061, i64 %182 + store ptr %29, ptr %184, align 8, !noalias !1141 + %185 = getelementptr inbounds nuw i8, ptr %184, i64 8 + store i64 %30, ptr %185, align 8, !noalias !1141 + %186 = getelementptr inbounds nuw i8, ptr %.sroa.0.061, i64 184 + %187 = getelementptr inbounds nuw { [2 x i32] }, ptr %186, i64 %182 + store i32 %27, ptr %187, align 4, !noalias !1141 + %188 = getelementptr inbounds nuw i8, ptr %187, i64 4 + store i32 %31, ptr %188, align 4, !noalias !1141 br label %.loopexit -192: ; preds = %113, %124, %174 - %eh.lpad-body25.ph = phi { ptr, i32 } [ %114, %113 ], [ %125, %124 ], [ %175, %174 ] - %193 = icmp eq i64 %30, 0 - br i1 %193, label %.body, label %194 +189: ; preds = %110, %121, %171 + %eh.lpad-body24.ph = phi { ptr, i32 } [ %111, %110 ], [ %122, %121 ], [ %172, %171 ] + %190 = icmp eq i64 %30, 0 + br i1 %190, label %.body, label %191 -194: ; preds = %192 +191: ; preds = %189 call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %29, i64 noundef range(i64 1, 0) %30, i64 noundef 1) #23 br label %.body -195: ; preds = %.body - %196 = landingpad { ptr, i32 } +192: ; preds = %.body + %193 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hccd47ddd364deb23E() #22 unreachable -197: ; preds = %.body +194: ; preds = %.body resume { ptr, i32 } %.pn } diff --git a/bench/wasmtime-rs/optimized/3wy7qx4e8fg0rwt0.ll b/bench/wasmtime-rs/optimized/3wy7qx4e8fg0rwt0.ll index 591445d520c..bdb27a3b3cb 100644 --- a/bench/wasmtime-rs/optimized/3wy7qx4e8fg0rwt0.ll +++ b/bench/wasmtime-rs/optimized/3wy7qx4e8fg0rwt0.ll @@ -6,8 +6,6 @@ target triple = "x86_64-unknown-linux-gnu" @anon.e2192d190c206e613b03b2b794f0dab7.0 = private unnamed_addr constant <{ [32 x i8] }> <{ [32 x i8] c"assertion failed: idx < CAPACITY" }>, align 1 @anon.e2192d190c206e613b03b2b794f0dab7.1 = private unnamed_addr constant <{ [91 x i8] }> <{ [91 x i8] c"/rustc/25ef9e3d85d934b27d9dada2f9dd52b1dc63bb04/library/alloc/src/collections/btree/node.rs" }>, align 1 @anon.e2192d190c206e613b03b2b794f0dab7.5 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.e2192d190c206e613b03b2b794f0dab7.1, [16 x i8] c"[\00\00\00\00\00\00\00\B3\02\00\00\09\00\00\00" }>, align 8 -@anon.e2192d190c206e613b03b2b794f0dab7.6 = private unnamed_addr constant <{ [40 x i8] }> <{ [40 x i8] c"assertion failed: src.len() == dst.len()" }>, align 1 -@anon.e2192d190c206e613b03b2b794f0dab7.7 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.e2192d190c206e613b03b2b794f0dab7.1, [16 x i8] c"[\00\00\00\00\00\00\00/\07\00\00\05\00\00\00" }>, align 8 @anon.e2192d190c206e613b03b2b794f0dab7.12 = private unnamed_addr constant <{ [39 x i8] }> <{ [39 x i8] c"assertion failed: old_left_len >= count" }>, align 1 @anon.e2192d190c206e613b03b2b794f0dab7.13 = private unnamed_addr constant <{ ptr, [16 x i8] }> <{ ptr @anon.e2192d190c206e613b03b2b794f0dab7.1, [16 x i8] c"[\00\00\00\00\00\00\00\DD\05\00\00\0D\00\00\00" }>, align 8 @anon.e2192d190c206e613b03b2b794f0dab7.16 = private unnamed_addr constant <{ [25 x i8] }> <{ [25 x i8] c"assertion failed: len > 0" }>, align 1 @@ -158,7 +156,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %7 = load i64, ptr %6, align 8, !noundef !7 %8 = load ptr, ptr %0, align 8, !nonnull !7, !noundef !7 %.not16.i = icmp eq i64 %7, 0 - br i1 %.not16.i, label %.loopexit89, label %.lr.ph.i + br i1 %.not16.i, label %.loopexit88, label %.lr.ph.i .lr.ph.i: ; preds = %3, %.lr.ph.i %.018.i = phi ptr [ %15, %.lr.ph.i ], [ %8, %3 ] @@ -173,24 +171,24 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %15 = load ptr, ptr %14, align 8, !noalias !8, !nonnull !7, !noundef !7 %16 = add i64 %.01517.i, -1 %.not.i = icmp eq i64 %16, 0 - br i1 %.not.i, label %.loopexit89, label %.lr.ph.i + br i1 %.not.i, label %.loopexit88, label %.lr.ph.i -.loopexit89: ; preds = %.lr.ph.i, %3 +.loopexit88: ; preds = %.lr.ph.i, %3 %.0.lcssa.i = phi ptr [ %8, %3 ], [ %15, %.lr.ph.i ] call void @llvm.lifetime.start.p0(ptr nonnull %5) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %5, ptr noundef nonnull align 8 dereferenceable(56) %1, i64 56, i1 false) br label %17 -17: ; preds = %.loopexit, %.loopexit89 - %.sroa.0.0 = phi ptr [ %.0.lcssa.i, %.loopexit89 ], [ %.sroa.0.1, %.loopexit ] +17: ; preds = %.loopexit, %.loopexit88 + %.sroa.0.0 = phi ptr [ %.0.lcssa.i, %.loopexit88 ], [ %.sroa.0.1, %.loopexit ] %18 = invoke { ptr, i64 } @"_ZN137_$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$K$C$V$C$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h7b6c917bf726b3a5E"(ptr noalias noundef nonnull align 8 dereferenceable(56) %5) to label %22 unwind label %20 -.body: ; preds = %.loopexit84, %.loopexit.split-lp85, %146, %100, %20 - %.pn = phi { ptr, i32 } [ %21, %20 ], [ %lpad.phi83, %100 ], [ %lpad.phi, %146 ], [ %lpad.loopexit86, %.loopexit84 ], [ %lpad.loopexit.split-lp87, %.loopexit.split-lp85 ] +.body: ; preds = %.loopexit83, %.loopexit.split-lp84, %143, %97, %20 + %.pn = phi { ptr, i32 } [ %21, %20 ], [ %lpad.phi82, %97 ], [ %lpad.phi, %143 ], [ %lpad.loopexit85, %.loopexit83 ], [ %lpad.loopexit.split-lp86, %.loopexit.split-lp84 ] %19 = getelementptr inbounds nuw i8, ptr %5, i64 24 invoke void @"_ZN86_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h1474be6e09f51d6cE.llvm.11266952349742701183"(ptr noalias noundef nonnull align 8 dereferenceable(32) %19) - to label %"_ZN4core3ptr391drop_in_place$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$$RF$str$C$alloc..collections..btree..set_val..SetValZST$C$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$$RF$str$GT$$C$alloc..collections..btree..set..BTreeSet$LT$$RF$str$GT$..from_sorted_iter$LT$alloc..vec..into_iter..IntoIter$LT$$RF$str$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17hddfd137dfc274046E.exit" unwind label %159 + to label %"_ZN4core3ptr391drop_in_place$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$$RF$str$C$alloc..collections..btree..set_val..SetValZST$C$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$$RF$str$GT$$C$alloc..collections..btree..set..BTreeSet$LT$$RF$str$GT$..from_sorted_iter$LT$alloc..vec..into_iter..IntoIter$LT$$RF$str$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17hddfd137dfc274046E.exit" unwind label %156 20: ; preds = %17 %21 = landingpad { ptr, i32 } @@ -219,7 +217,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %28 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 186 %29 = load i16, ptr %28, align 2, !noundef !7 %30 = icmp ult i16 %29, 11 - br i1 %30, label %154, label %.preheader + br i1 %30, label %151, label %.preheader .lr.ph.i32: ; preds = %.lr.ph.i32.preheader, %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17hff0e5ff5fced2250E.exit.i" %.011.i = phi ptr [ %41, %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17hff0e5ff5fced2250E.exit.i" ], [ %.val, %.lr.ph.i32.preheader ] @@ -249,7 +247,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %44 = icmp ult i16 %43, 5 br i1 %44, label %45, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17hff0e5ff5fced2250E.exit.i" -"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17hff0e5ff5fced2250E.exit.i": ; preds = %79, %"_ZN5alloc11collections5btree4node40NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$7last_kv17h215c660bdd49f611E.exit.i" +"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17hff0e5ff5fced2250E.exit.i": ; preds = %76, %"_ZN5alloc11collections5btree4node40NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$7last_kv17h215c660bdd49f611E.exit.i" %.not.i33 = icmp eq i64 %38, 0 br i1 %.not.i33, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17ha554b74d20ac87b1E.exit", label %.lr.ph.i32 @@ -260,307 +258,298 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %48 = load i16, ptr %47, align 2, !noalias !18, !noundef !7 %49 = zext nneg i16 %43 to i64 %.not.i6.i = icmp ugt i16 %narrow.i, %48 - br i1 %.not.i6.i, label %.noexc34, label %50 + br i1 %.not.i6.i, label %.noexc34, label %_ZN5alloc11collections5btree4node13move_to_slice17h6ca3caf12adad6f8E.exit.i.i .noexc34: ; preds = %45 call void @_ZN4core9panicking5panic17h44790a89027c670fE(ptr noalias noundef nonnull readonly align 1 @anon.e2192d190c206e613b03b2b794f0dab7.12, i64 noundef 39, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.e2192d190c206e613b03b2b794f0dab7.13) #17 unreachable -50: ; preds = %45 - %51 = zext i16 %48 to i64 - %52 = sub nuw nsw i64 %51, %46 - %53 = trunc nuw i64 %52 to i16 - store i16 %53, ptr %47, align 2, !noalias !18 +_ZN5alloc11collections5btree4node13move_to_slice17h6ca3caf12adad6f8E.exit.i.i: ; preds = %45 + %50 = zext i16 %48 to i64 + %51 = sub nuw nsw i64 %50, %46 + %52 = trunc nuw i64 %51 to i16 + store i16 %52, ptr %47, align 2, !noalias !18 store i16 5, ptr %42, align 2, !noalias !18 - %54 = getelementptr inbounds nuw { [2 x i64] }, ptr %41, i64 %46 - %55 = shl nuw nsw i64 %49, 4 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %54, ptr nonnull align 8 %41, i64 %55, i1 false), !noalias !18 - %56 = add nuw nsw i64 %52, 1 - %57 = sub nuw nsw i64 %51, %56 - %58 = add nsw i64 %46, -1 - %59 = icmp eq i64 %57, %58 - br i1 %59, label %_ZN5alloc11collections5btree4node13move_to_slice17h6ca3caf12adad6f8E.exit.i.i, label %.noexc35 - -.noexc35: ; preds = %50 - call void @_ZN4core9panicking5panic17h44790a89027c670fE(ptr noalias noundef nonnull readonly align 1 @anon.e2192d190c206e613b03b2b794f0dab7.6, i64 noundef 40, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.e2192d190c206e613b03b2b794f0dab7.7) #17 - unreachable - -_ZN5alloc11collections5btree4node13move_to_slice17h6ca3caf12adad6f8E.exit.i.i: ; preds = %50 - %60 = getelementptr inbounds nuw { [2 x i64] }, ptr %37, i64 %56 - %61 = shl nuw nsw i64 %57, 4 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %41, ptr nonnull readonly align 8 %60, i64 %61, i1 false), !alias.scope !21, !noalias !18 - %62 = getelementptr inbounds nuw { [2 x i64] }, ptr %37, i64 %52 - %63 = load ptr, ptr %62, align 8, !noalias !18, !nonnull !7, !align !25, !noundef !7 - %64 = getelementptr inbounds nuw i8, ptr %62, i64 8 - %65 = load i64, ptr %64, align 8, !noalias !18, !noundef !7 - %66 = getelementptr inbounds nuw { [2 x i64] }, ptr %.011.i, i64 %34 - %67 = load ptr, ptr %66, align 8, !noalias !26, !nonnull !7, !align !25, !noundef !7 - %68 = getelementptr inbounds nuw i8, ptr %66, i64 8 - %69 = load i64, ptr %68, align 8, !noalias !26, !noundef !7 - store ptr %63, ptr %66, align 8, !noalias !26 - store i64 %65, ptr %68, align 8, !noalias !26 - %70 = getelementptr inbounds nuw { [2 x i64] }, ptr %41, i64 %57 - store ptr %67, ptr %70, align 8, !noalias !18 - %71 = getelementptr inbounds nuw i8, ptr %70, i64 8 - store i64 %69, ptr %71, align 8, !noalias !18 + %53 = getelementptr inbounds nuw { [2 x i64] }, ptr %41, i64 %46 + %54 = shl nuw nsw i64 %49, 4 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %53, ptr nonnull align 8 %41, i64 %54, i1 false), !noalias !18 + %55 = add nuw nsw i64 %51, 1 + %56 = sub nuw nsw i64 %50, %55 + %57 = getelementptr inbounds nuw { [2 x i64] }, ptr %37, i64 %55 + %58 = shl nuw nsw i64 %56, 4 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %41, ptr nonnull readonly align 8 %57, i64 %58, i1 false), !alias.scope !21, !noalias !18 + %59 = getelementptr inbounds nuw { [2 x i64] }, ptr %37, i64 %51 + %60 = load ptr, ptr %59, align 8, !noalias !18, !nonnull !7, !align !25, !noundef !7 + %61 = getelementptr inbounds nuw i8, ptr %59, i64 8 + %62 = load i64, ptr %61, align 8, !noalias !18, !noundef !7 + %63 = getelementptr inbounds nuw { [2 x i64] }, ptr %.011.i, i64 %34 + %64 = load ptr, ptr %63, align 8, !noalias !26, !nonnull !7, !align !25, !noundef !7 + %65 = getelementptr inbounds nuw i8, ptr %63, i64 8 + %66 = load i64, ptr %65, align 8, !noalias !26, !noundef !7 + store ptr %60, ptr %63, align 8, !noalias !26 + store i64 %62, ptr %65, align 8, !noalias !26 + %67 = getelementptr inbounds nuw { [2 x i64] }, ptr %41, i64 %56 + store ptr %64, ptr %67, align 8, !noalias !18 + %68 = getelementptr inbounds nuw i8, ptr %67, i64 8 + store i64 %66, ptr %68, align 8, !noalias !18 %cond.i = icmp eq i64 %38, 0 br i1 %cond.i, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17ha554b74d20ac87b1E.exit", label %_ZN5alloc11collections5btree4node13move_to_slice17h28999f98cd601590E.exit.i.i _ZN5alloc11collections5btree4node13move_to_slice17h28999f98cd601590E.exit.i.i: ; preds = %_ZN5alloc11collections5btree4node13move_to_slice17h6ca3caf12adad6f8E.exit.i.i - %72 = getelementptr inbounds nuw i8, ptr %41, i64 192 - %73 = getelementptr inbounds nuw ptr, ptr %72, i64 %46 - %74 = shl nuw nsw i64 %49, 3 - %75 = add nuw nsw i64 %74, 8 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %73, ptr noundef nonnull align 8 dereferenceable(1) %72, i64 %75, i1 false), !noalias !18 - %76 = getelementptr inbounds nuw i8, ptr %37, i64 192 - %77 = getelementptr inbounds nuw ptr, ptr %76, i64 %56 - %78 = shl nuw nsw i64 %46, 3 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %72, ptr noundef nonnull readonly align 8 dereferenceable(1) %77, i64 %78, i1 false), !alias.scope !29, !noalias !18 - br label %79 - -79: ; preds = %79, %_ZN5alloc11collections5btree4node13move_to_slice17h28999f98cd601590E.exit.i.i - %.sroa.0.05.i.i.i = phi i64 [ 0, %_ZN5alloc11collections5btree4node13move_to_slice17h28999f98cd601590E.exit.i.i ], [ %80, %79 ] - %80 = add nuw nsw i64 %.sroa.0.05.i.i.i, 1 - %81 = getelementptr inbounds nuw ptr, ptr %72, i64 %.sroa.0.05.i.i.i - %82 = load ptr, ptr %81, align 8, !noalias !18, !nonnull !7, !noundef !7 - %83 = getelementptr inbounds nuw i8, ptr %82, i64 176 - store ptr %41, ptr %83, align 8, !noalias !18 - %84 = trunc nuw nsw i64 %.sroa.0.05.i.i.i to i16 - %85 = getelementptr inbounds nuw i8, ptr %82, i64 184 - store i16 %84, ptr %85, align 8, !noalias !18 + %69 = getelementptr inbounds nuw i8, ptr %41, i64 192 + %70 = getelementptr inbounds nuw ptr, ptr %69, i64 %46 + %71 = shl nuw nsw i64 %49, 3 + %72 = add nuw nsw i64 %71, 8 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %70, ptr noundef nonnull align 8 dereferenceable(1) %69, i64 %72, i1 false), !noalias !18 + %73 = getelementptr inbounds nuw i8, ptr %37, i64 192 + %74 = getelementptr inbounds nuw ptr, ptr %73, i64 %55 + %75 = shl nuw nsw i64 %46, 3 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %69, ptr noundef nonnull readonly align 8 dereferenceable(1) %74, i64 %75, i1 false), !alias.scope !29, !noalias !18 + br label %76 + +76: ; preds = %76, %_ZN5alloc11collections5btree4node13move_to_slice17h28999f98cd601590E.exit.i.i + %.sroa.0.05.i.i.i = phi i64 [ 0, %_ZN5alloc11collections5btree4node13move_to_slice17h28999f98cd601590E.exit.i.i ], [ %77, %76 ] + %77 = add nuw nsw i64 %.sroa.0.05.i.i.i, 1 + %78 = getelementptr inbounds nuw ptr, ptr %69, i64 %.sroa.0.05.i.i.i + %79 = load ptr, ptr %78, align 8, !noalias !18, !nonnull !7, !noundef !7 + %80 = getelementptr inbounds nuw i8, ptr %79, i64 176 + store ptr %41, ptr %80, align 8, !noalias !18 + %81 = trunc nuw nsw i64 %.sroa.0.05.i.i.i to i16 + %82 = getelementptr inbounds nuw i8, ptr %79, i64 184 + store i16 %81, ptr %82, align 8, !noalias !18 %exitcond.not.i.i.i = icmp eq i64 %.sroa.0.05.i.i.i, 5 - br i1 %exitcond.not.i.i.i, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17hff0e5ff5fced2250E.exit.i", label %79 + br i1 %exitcond.not.i.i.i, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17hff0e5ff5fced2250E.exit.i", label %76 "_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17ha554b74d20ac87b1E.exit": ; preds = %_ZN5alloc11collections5btree4node13move_to_slice17h6ca3caf12adad6f8E.exit.i.i, %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17hff0e5ff5fced2250E.exit.i", %"_ZN4core3ptr391drop_in_place$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$$RF$str$C$alloc..collections..btree..set_val..SetValZST$C$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$$RF$str$GT$$C$alloc..collections..btree..set..BTreeSet$LT$$RF$str$GT$..from_sorted_iter$LT$alloc..vec..into_iter..IntoIter$LT$$RF$str$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17hddfd137dfc274046E.exit31" ret void -.preheader: ; preds = %27, %89 - %.sroa.5.0 = phi i64 [ %90, %89 ], [ 0, %27 ] - %.sroa.04.0 = phi ptr [ %87, %89 ], [ %.sroa.0.0, %27 ] - %86 = getelementptr inbounds nuw i8, ptr %.sroa.04.0, i64 176 - %87 = load ptr, ptr %86, align 8, !noalias !33, !noundef !7 - %88 = icmp eq ptr %87, null - br i1 %88, label %94, label %89 +.preheader: ; preds = %27, %86 + %.sroa.5.0 = phi i64 [ %87, %86 ], [ 0, %27 ] + %.sroa.04.0 = phi ptr [ %84, %86 ], [ %.sroa.0.0, %27 ] + %83 = getelementptr inbounds nuw i8, ptr %.sroa.04.0, i64 176 + %84 = load ptr, ptr %83, align 8, !noalias !33, !noundef !7 + %85 = icmp eq ptr %84, null + br i1 %85, label %91, label %86 -.loopexit84: ; preds = %.loopexit78 - %lpad.loopexit86 = landingpad { ptr, i32 } +.loopexit83: ; preds = %.loopexit77 + %lpad.loopexit85 = landingpad { ptr, i32 } cleanup br label %.body -.loopexit.split-lp85: ; preds = %113, %120 - %lpad.loopexit.split-lp87 = landingpad { ptr, i32 } +.loopexit.split-lp84: ; preds = %110, %117 + %lpad.loopexit.split-lp86 = landingpad { ptr, i32 } cleanup br label %.body -89: ; preds = %.preheader - %90 = add i64 %.sroa.5.0, 1 - %91 = getelementptr inbounds nuw i8, ptr %87, i64 186 - %92 = load i16, ptr %91, align 2, !noundef !7 - %93 = icmp ult i16 %92, 11 - br i1 %93, label %.loopexit78, label %.preheader +86: ; preds = %.preheader + %87 = add i64 %.sroa.5.0, 1 + %88 = getelementptr inbounds nuw i8, ptr %84, i64 186 + %89 = load i16, ptr %88, align 2, !noundef !7 + %90 = icmp ult i16 %89, 11 + br i1 %90, label %.loopexit77, label %.preheader -94: ; preds = %.preheader +91: ; preds = %.preheader call void @llvm.experimental.noalias.scope.decl(metadata !36) - %95 = load ptr, ptr %0, align 8, !alias.scope !36, !nonnull !7, !noundef !7 - %96 = load i64, ptr %6, align 8, !alias.scope !36, !noundef !7 - %97 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h832ae5eb9b368d30E.llvm.17124746118322557833"() - to label %.noexc.i unwind label %.loopexit79, !noalias !36 + %92 = load ptr, ptr %0, align 8, !alias.scope !36, !nonnull !7, !noundef !7 + %93 = load i64, ptr %6, align 8, !alias.scope !36, !noundef !7 + %94 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h832ae5eb9b368d30E.llvm.17124746118322557833"() + to label %.noexc.i unwind label %.loopexit78, !noalias !36 -.noexc.i: ; preds = %94 - %98 = icmp eq ptr %97, null - br i1 %98, label %99, label %103 +.noexc.i: ; preds = %91 + %95 = icmp eq ptr %94, null + br i1 %95, label %96, label %100 -99: ; preds = %.noexc.i +96: ; preds = %.noexc.i invoke void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef 8, i64 noundef 288) #17 - to label %.noexc3.i unwind label %.loopexit.split-lp80, !noalias !36 + to label %.noexc3.i unwind label %.loopexit.split-lp79, !noalias !36 -.noexc3.i: ; preds = %99 +.noexc3.i: ; preds = %96 unreachable -.loopexit79: ; preds = %94 - %lpad.loopexit81 = landingpad { ptr, i32 } +.loopexit78: ; preds = %91 + %lpad.loopexit80 = landingpad { ptr, i32 } cleanup - br label %100 + br label %97 -.loopexit.split-lp80: ; preds = %99 - %lpad.loopexit.split-lp82 = landingpad { ptr, i32 } +.loopexit.split-lp79: ; preds = %96 + %lpad.loopexit.split-lp81 = landingpad { ptr, i32 } cleanup - br label %100 + br label %97 -100: ; preds = %.loopexit.split-lp80, %.loopexit79 - %lpad.phi83 = phi { ptr, i32 } [ %lpad.loopexit81, %.loopexit79 ], [ %lpad.loopexit.split-lp82, %.loopexit.split-lp80 ] +97: ; preds = %.loopexit.split-lp79, %.loopexit78 + %lpad.phi82 = phi { ptr, i32 } [ %lpad.loopexit80, %.loopexit78 ], [ %lpad.loopexit.split-lp81, %.loopexit.split-lp79 ] invoke void @"_ZN93_$LT$alloc..collections..btree..mem..replace..PanicGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17he7f40e69e6f26b83E"(ptr noalias noundef nonnull align 1 %4) - to label %.body unwind label %101, !noalias !36 + to label %.body unwind label %98, !noalias !36 -101: ; preds = %100 - %102 = landingpad { ptr, i32 } +98: ; preds = %97 + %99 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #19, !noalias !36 unreachable -103: ; preds = %.noexc.i - %104 = getelementptr inbounds nuw i8, ptr %97, i64 176 - store ptr null, ptr %104, align 8, !noalias !36 - %105 = getelementptr inbounds nuw i8, ptr %97, i64 186 - store i16 0, ptr %105, align 2, !noalias !36 - %106 = getelementptr inbounds nuw i8, ptr %97, i64 192 - store ptr %95, ptr %106, align 8, !noalias !36 - %107 = add i64 %96, 1 - %108 = getelementptr inbounds nuw i8, ptr %95, i64 176 - store ptr %97, ptr %108, align 8, !noalias !39 - %109 = getelementptr inbounds nuw i8, ptr %95, i64 184 - store i16 0, ptr %109, align 8, !noalias !44 - store ptr %97, ptr %0, align 8, !alias.scope !36 - store i64 %107, ptr %6, align 8, !alias.scope !36 - br label %.loopexit78 - -.loopexit78: ; preds = %89, %103 - %.sroa.059.0 = phi ptr [ %97, %103 ], [ %87, %89 ] - %.sroa.660.0 = phi i64 [ %107, %103 ], [ %90, %89 ] - %110 = add i64 %.sroa.660.0, -1 - %111 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h5a2a0cf99cd774feE.llvm.17124746118322557833"() - to label %.noexc37 unwind label %.loopexit84 - -.noexc37: ; preds = %.loopexit78 - %112 = icmp eq ptr %111, null - br i1 %112, label %113, label %114 - -113: ; preds = %.noexc37 +100: ; preds = %.noexc.i + %101 = getelementptr inbounds nuw i8, ptr %94, i64 176 + store ptr null, ptr %101, align 8, !noalias !36 + %102 = getelementptr inbounds nuw i8, ptr %94, i64 186 + store i16 0, ptr %102, align 2, !noalias !36 + %103 = getelementptr inbounds nuw i8, ptr %94, i64 192 + store ptr %92, ptr %103, align 8, !noalias !36 + %104 = add i64 %93, 1 + %105 = getelementptr inbounds nuw i8, ptr %92, i64 176 + store ptr %94, ptr %105, align 8, !noalias !39 + %106 = getelementptr inbounds nuw i8, ptr %92, i64 184 + store i16 0, ptr %106, align 8, !noalias !44 + store ptr %94, ptr %0, align 8, !alias.scope !36 + store i64 %104, ptr %6, align 8, !alias.scope !36 + br label %.loopexit77 + +.loopexit77: ; preds = %86, %100 + %.sroa.058.0 = phi ptr [ %94, %100 ], [ %84, %86 ] + %.sroa.659.0 = phi i64 [ %104, %100 ], [ %87, %86 ] + %107 = add i64 %.sroa.659.0, -1 + %108 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h5a2a0cf99cd774feE.llvm.17124746118322557833"() + to label %.noexc36 unwind label %.loopexit83 + +.noexc36: ; preds = %.loopexit77 + %109 = icmp eq ptr %108, null + br i1 %109, label %110, label %111 + +110: ; preds = %.noexc36 invoke void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef 8, i64 noundef 192) #17 - to label %.noexc38 unwind label %.loopexit.split-lp85 + to label %.noexc37 unwind label %.loopexit.split-lp84 -.noexc38: ; preds = %113 +.noexc37: ; preds = %110 unreachable -114: ; preds = %.noexc37 - %115 = getelementptr inbounds nuw i8, ptr %111, i64 176 - store ptr null, ptr %115, align 8 - %116 = getelementptr inbounds nuw i8, ptr %111, i64 186 - store i16 0, ptr %116, align 2 - %.not = icmp eq i64 %110, 0 +111: ; preds = %.noexc36 + %112 = getelementptr inbounds nuw i8, ptr %108, i64 176 + store ptr null, ptr %112, align 8 + %113 = getelementptr inbounds nuw i8, ptr %108, i64 186 + store i16 0, ptr %113, align 2 + %.not = icmp eq i64 %107, 0 br i1 %.not, label %._crit_edge, label %.lr.ph -._crit_edge: ; preds = %_ZN5alloc11collections5btree3mem7replace17h66a910f1d87a8d44E.exit53, %114 - %.sroa.065.0.lcssa = phi ptr [ %111, %114 ], [ %143, %_ZN5alloc11collections5btree3mem7replace17h66a910f1d87a8d44E.exit53 ] - %117 = getelementptr inbounds nuw i8, ptr %.sroa.059.0, i64 186 - %118 = load i16, ptr %117, align 2, !noalias !45, !noundef !7 - %119 = icmp ult i16 %118, 11 - br i1 %119, label %121, label %120 +._crit_edge: ; preds = %_ZN5alloc11collections5btree3mem7replace17h66a910f1d87a8d44E.exit52, %111 + %.sroa.064.0.lcssa = phi ptr [ %108, %111 ], [ %140, %_ZN5alloc11collections5btree3mem7replace17h66a910f1d87a8d44E.exit52 ] + %114 = getelementptr inbounds nuw i8, ptr %.sroa.058.0, i64 186 + %115 = load i16, ptr %114, align 2, !noalias !45, !noundef !7 + %116 = icmp ult i16 %115, 11 + br i1 %116, label %118, label %117 -120: ; preds = %._crit_edge +117: ; preds = %._crit_edge invoke void @_ZN4core9panicking5panic17h44790a89027c670fE(ptr noalias noundef nonnull readonly align 1 @anon.e2192d190c206e613b03b2b794f0dab7.0, i64 noundef 32, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.e2192d190c206e613b03b2b794f0dab7.5) #17 - to label %.noexc40 unwind label %.loopexit.split-lp85 + to label %.noexc39 unwind label %.loopexit.split-lp84 -.noexc40: ; preds = %120 +.noexc39: ; preds = %117 unreachable -121: ; preds = %._crit_edge - %122 = zext nneg i16 %118 to i64 - %123 = add nuw nsw i16 %118, 1 - store i16 %123, ptr %117, align 2, !noalias !45 - %124 = getelementptr inbounds nuw { [2 x i64] }, ptr %.sroa.059.0, i64 %122 - store ptr %23, ptr %124, align 8, !noalias !45 - %125 = getelementptr inbounds nuw i8, ptr %124, i64 8 - store i64 %24, ptr %125, align 8, !noalias !45 - %126 = add nuw nsw i64 %122, 1 - %127 = getelementptr inbounds nuw i8, ptr %.sroa.059.0, i64 192 - %128 = getelementptr inbounds nuw ptr, ptr %127, i64 %126 - store ptr %.sroa.065.0.lcssa, ptr %128, align 8, !noalias !45 - %129 = getelementptr inbounds nuw i8, ptr %.sroa.065.0.lcssa, i64 176 - store ptr %.sroa.059.0, ptr %129, align 8, !noalias !45 - %130 = trunc nuw nsw i64 %126 to i16 - %131 = getelementptr inbounds nuw i8, ptr %.sroa.065.0.lcssa, i64 184 - store i16 %130, ptr %131, align 8, !noalias !45 - %.not16.i41 = icmp eq i64 %.sroa.660.0, 0 - br i1 %.not16.i41, label %.loopexit, label %.lr.ph.i42 - -.lr.ph.i42: ; preds = %121, %.lr.ph.i42 - %.018.i43 = phi ptr [ %138, %.lr.ph.i42 ], [ %.sroa.059.0, %121 ] - %.01517.i44 = phi i64 [ %139, %.lr.ph.i42 ], [ %.sroa.660.0, %121 ] - %132 = getelementptr inbounds nuw i8, ptr %.018.i43, i64 186 - %133 = load i16, ptr %132, align 2, !noalias !48, !noundef !7 - %134 = zext nneg i16 %133 to i64 - %135 = getelementptr inbounds nuw i8, ptr %.018.i43, i64 192 - %136 = icmp ult i16 %133, 12 - call void @llvm.assume(i1 %136) - %137 = getelementptr inbounds nuw ptr, ptr %135, i64 %134 - %138 = load ptr, ptr %137, align 8, !noalias !48, !nonnull !7, !noundef !7 - %139 = add i64 %.01517.i44, -1 - %.not.i45 = icmp eq i64 %139, 0 - br i1 %.not.i45, label %.loopexit, label %.lr.ph.i42 - -.loopexit: ; preds = %.lr.ph.i42, %121, %154 - %.sroa.0.1 = phi ptr [ %.sroa.0.0, %154 ], [ %.sroa.059.0, %121 ], [ %138, %.lr.ph.i42 ] - %140 = load i64, ptr %2, align 8, !noundef !7 - %141 = add i64 %140, 1 - store i64 %141, ptr %2, align 8 +118: ; preds = %._crit_edge + %119 = zext nneg i16 %115 to i64 + %120 = add nuw nsw i16 %115, 1 + store i16 %120, ptr %114, align 2, !noalias !45 + %121 = getelementptr inbounds nuw { [2 x i64] }, ptr %.sroa.058.0, i64 %119 + store ptr %23, ptr %121, align 8, !noalias !45 + %122 = getelementptr inbounds nuw i8, ptr %121, i64 8 + store i64 %24, ptr %122, align 8, !noalias !45 + %123 = add nuw nsw i64 %119, 1 + %124 = getelementptr inbounds nuw i8, ptr %.sroa.058.0, i64 192 + %125 = getelementptr inbounds nuw ptr, ptr %124, i64 %123 + store ptr %.sroa.064.0.lcssa, ptr %125, align 8, !noalias !45 + %126 = getelementptr inbounds nuw i8, ptr %.sroa.064.0.lcssa, i64 176 + store ptr %.sroa.058.0, ptr %126, align 8, !noalias !45 + %127 = trunc nuw nsw i64 %123 to i16 + %128 = getelementptr inbounds nuw i8, ptr %.sroa.064.0.lcssa, i64 184 + store i16 %127, ptr %128, align 8, !noalias !45 + %.not16.i40 = icmp eq i64 %.sroa.659.0, 0 + br i1 %.not16.i40, label %.loopexit, label %.lr.ph.i41 + +.lr.ph.i41: ; preds = %118, %.lr.ph.i41 + %.018.i42 = phi ptr [ %135, %.lr.ph.i41 ], [ %.sroa.058.0, %118 ] + %.01517.i43 = phi i64 [ %136, %.lr.ph.i41 ], [ %.sroa.659.0, %118 ] + %129 = getelementptr inbounds nuw i8, ptr %.018.i42, i64 186 + %130 = load i16, ptr %129, align 2, !noalias !48, !noundef !7 + %131 = zext nneg i16 %130 to i64 + %132 = getelementptr inbounds nuw i8, ptr %.018.i42, i64 192 + %133 = icmp ult i16 %130, 12 + call void @llvm.assume(i1 %133) + %134 = getelementptr inbounds nuw ptr, ptr %132, i64 %131 + %135 = load ptr, ptr %134, align 8, !noalias !48, !nonnull !7, !noundef !7 + %136 = add i64 %.01517.i43, -1 + %.not.i44 = icmp eq i64 %136, 0 + br i1 %.not.i44, label %.loopexit, label %.lr.ph.i41 + +.loopexit: ; preds = %.lr.ph.i41, %118, %151 + %.sroa.0.1 = phi ptr [ %.sroa.0.0, %151 ], [ %.sroa.058.0, %118 ], [ %135, %.lr.ph.i41 ] + %137 = load i64, ptr %2, align 8, !noundef !7 + %138 = add i64 %137, 1 + store i64 %138, ptr %2, align 8 br label %17 -.lr.ph: ; preds = %114, %_ZN5alloc11collections5btree3mem7replace17h66a910f1d87a8d44E.exit53 - %.sroa.014.099 = phi i64 [ %142, %_ZN5alloc11collections5btree3mem7replace17h66a910f1d87a8d44E.exit53 ], [ 0, %114 ] - %.sroa.065.097 = phi ptr [ %143, %_ZN5alloc11collections5btree3mem7replace17h66a910f1d87a8d44E.exit53 ], [ %111, %114 ] - %142 = add nuw i64 %.sroa.014.099, 1 - %143 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h832ae5eb9b368d30E.llvm.17124746118322557833"() - to label %.noexc.i49 unwind label %.loopexit77, !noalias !51 +.lr.ph: ; preds = %111, %_ZN5alloc11collections5btree3mem7replace17h66a910f1d87a8d44E.exit52 + %.sroa.014.098 = phi i64 [ %139, %_ZN5alloc11collections5btree3mem7replace17h66a910f1d87a8d44E.exit52 ], [ 0, %111 ] + %.sroa.064.096 = phi ptr [ %140, %_ZN5alloc11collections5btree3mem7replace17h66a910f1d87a8d44E.exit52 ], [ %108, %111 ] + %139 = add nuw i64 %.sroa.014.098, 1 + %140 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h832ae5eb9b368d30E.llvm.17124746118322557833"() + to label %.noexc.i48 unwind label %.loopexit76, !noalias !51 -.noexc.i49: ; preds = %.lr.ph - %144 = icmp eq ptr %143, null - br i1 %144, label %145, label %_ZN5alloc11collections5btree3mem7replace17h66a910f1d87a8d44E.exit53 +.noexc.i48: ; preds = %.lr.ph + %141 = icmp eq ptr %140, null + br i1 %141, label %142, label %_ZN5alloc11collections5btree3mem7replace17h66a910f1d87a8d44E.exit52 -145: ; preds = %.noexc.i49 +142: ; preds = %.noexc.i48 invoke void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef 8, i64 noundef 288) #17 - to label %.noexc3.i50 unwind label %.loopexit.split-lp, !noalias !51 + to label %.noexc3.i49 unwind label %.loopexit.split-lp, !noalias !51 -.noexc3.i50: ; preds = %145 +.noexc3.i49: ; preds = %142 unreachable -.loopexit77: ; preds = %.lr.ph +.loopexit76: ; preds = %.lr.ph %lpad.loopexit = landingpad { ptr, i32 } cleanup - br label %146 + br label %143 -.loopexit.split-lp: ; preds = %145 +.loopexit.split-lp: ; preds = %142 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup - br label %146 + br label %143 -146: ; preds = %.loopexit.split-lp, %.loopexit77 - %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit77 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] +143: ; preds = %.loopexit.split-lp, %.loopexit76 + %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit76 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] invoke void @"_ZN93_$LT$alloc..collections..btree..mem..replace..PanicGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17he7f40e69e6f26b83E"(ptr noalias noundef nonnull align 1 %4) - to label %.body unwind label %147, !noalias !51 + to label %.body unwind label %144, !noalias !51 -147: ; preds = %146 - %148 = landingpad { ptr, i32 } +144: ; preds = %143 + %145 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #19, !noalias !51 unreachable -_ZN5alloc11collections5btree3mem7replace17h66a910f1d87a8d44E.exit53: ; preds = %.noexc.i49 - %149 = getelementptr inbounds nuw i8, ptr %143, i64 176 - store ptr null, ptr %149, align 8, !noalias !51 - %150 = getelementptr inbounds nuw i8, ptr %143, i64 186 - store i16 0, ptr %150, align 2, !noalias !51 - %151 = getelementptr inbounds nuw i8, ptr %143, i64 192 - store ptr %.sroa.065.097, ptr %151, align 8, !noalias !51 - %152 = getelementptr inbounds nuw i8, ptr %.sroa.065.097, i64 176 - store ptr %143, ptr %152, align 8, !noalias !54 - %153 = getelementptr inbounds nuw i8, ptr %.sroa.065.097, i64 184 - store i16 0, ptr %153, align 8, !noalias !59 - %exitcond.not = icmp eq i64 %142, %110 +_ZN5alloc11collections5btree3mem7replace17h66a910f1d87a8d44E.exit52: ; preds = %.noexc.i48 + %146 = getelementptr inbounds nuw i8, ptr %140, i64 176 + store ptr null, ptr %146, align 8, !noalias !51 + %147 = getelementptr inbounds nuw i8, ptr %140, i64 186 + store i16 0, ptr %147, align 2, !noalias !51 + %148 = getelementptr inbounds nuw i8, ptr %140, i64 192 + store ptr %.sroa.064.096, ptr %148, align 8, !noalias !51 + %149 = getelementptr inbounds nuw i8, ptr %.sroa.064.096, i64 176 + store ptr %140, ptr %149, align 8, !noalias !54 + %150 = getelementptr inbounds nuw i8, ptr %.sroa.064.096, i64 184 + store i16 0, ptr %150, align 8, !noalias !59 + %exitcond.not = icmp eq i64 %139, %107 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph -154: ; preds = %27 - %155 = zext nneg i16 %29 to i64 - %156 = add nuw nsw i16 %29, 1 - store i16 %156, ptr %28, align 2, !noalias !60 - %157 = getelementptr inbounds nuw { [2 x i64] }, ptr %.sroa.0.0, i64 %155 - store ptr %23, ptr %157, align 8, !noalias !60 - %158 = getelementptr inbounds nuw i8, ptr %157, i64 8 - store i64 %24, ptr %158, align 8, !noalias !60 +151: ; preds = %27 + %152 = zext nneg i16 %29 to i64 + %153 = add nuw nsw i16 %29, 1 + store i16 %153, ptr %28, align 2, !noalias !60 + %154 = getelementptr inbounds nuw { [2 x i64] }, ptr %.sroa.0.0, i64 %152 + store ptr %23, ptr %154, align 8, !noalias !60 + %155 = getelementptr inbounds nuw i8, ptr %154, i64 8 + store i64 %24, ptr %155, align 8, !noalias !60 br label %.loopexit -159: ; preds = %.body - %160 = landingpad { ptr, i32 } +156: ; preds = %.body + %157 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #19 unreachable diff --git a/bench/wasmtime-rs/optimized/5079e95b7v1wxko.ll b/bench/wasmtime-rs/optimized/5079e95b7v1wxko.ll index af2ff7cd098..efe6df6901b 100644 --- a/bench/wasmtime-rs/optimized/5079e95b7v1wxko.ll +++ b/bench/wasmtime-rs/optimized/5079e95b7v1wxko.ll @@ -11234,7 +11234,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %7 = load i64, ptr %6, align 8, !noundef !17 %8 = load ptr, ptr %0, align 8, !nonnull !17, !noundef !17 %.not16.i = icmp eq i64 %7, 0 - br i1 %.not16.i, label %.loopexit86, label %.lr.ph.i + br i1 %.not16.i, label %.loopexit85, label %.lr.ph.i .lr.ph.i: ; preds = %3, %.lr.ph.i %.018.i = phi ptr [ %15, %.lr.ph.i ], [ %8, %3 ] @@ -11249,24 +11249,24 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %15 = load ptr, ptr %14, align 8, !noalias !1606, !nonnull !17, !noundef !17 %16 = add i64 %.01517.i, -1 %.not.i = icmp eq i64 %16, 0 - br i1 %.not.i, label %.loopexit86, label %.lr.ph.i + br i1 %.not.i, label %.loopexit85, label %.lr.ph.i -.loopexit86: ; preds = %.lr.ph.i, %3 +.loopexit85: ; preds = %.lr.ph.i, %3 %.0.lcssa.i = phi ptr [ %8, %3 ], [ %15, %.lr.ph.i ] call void @llvm.lifetime.start.p0(ptr nonnull %5) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %5, ptr noundef nonnull align 8 dereferenceable(40) %1, i64 40, i1 false) br label %17 -17: ; preds = %.loopexit, %.loopexit86 - %.sroa.0.0 = phi ptr [ %.0.lcssa.i, %.loopexit86 ], [ %.sroa.0.1, %.loopexit ] +17: ; preds = %.loopexit, %.loopexit85 + %.sroa.0.0 = phi ptr [ %.0.lcssa.i, %.loopexit85 ], [ %.sroa.0.1, %.loopexit ] %18 = invoke { i32, i32 } @"_ZN137_$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$K$C$V$C$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h67afcb0b020e589fE"(ptr noalias noundef nonnull align 8 dereferenceable(40) %5) to label %22 unwind label %20 -.body: ; preds = %.loopexit81, %.loopexit.split-lp82, %138, %96, %20 - %.pn = phi { ptr, i32 } [ %21, %20 ], [ %lpad.phi80, %96 ], [ %lpad.phi, %138 ], [ %lpad.loopexit83, %.loopexit81 ], [ %lpad.loopexit.split-lp84, %.loopexit.split-lp82 ] +.body: ; preds = %.loopexit80, %.loopexit.split-lp81, %135, %93, %20 + %.pn = phi { ptr, i32 } [ %21, %20 ], [ %lpad.phi79, %93 ], [ %lpad.phi, %135 ], [ %lpad.loopexit82, %.loopexit80 ], [ %lpad.loopexit.split-lp83, %.loopexit.split-lp81 ] %19 = getelementptr inbounds nuw i8, ptr %5, i64 8 invoke void @"_ZN86_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd4139e6ae1a0e2b8E.llvm.5456684732158232753"(ptr noalias noundef nonnull align 8 dereferenceable(32) %19) - to label %"_ZN4core3ptr519drop_in_place$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$wasmtime_types..ModuleInternedTypeIndex$C$alloc..collections..btree..set_val..SetValZST$C$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$wasmtime_types..ModuleInternedTypeIndex$GT$$C$alloc..collections..btree..set..BTreeSet$LT$wasmtime_types..ModuleInternedTypeIndex$GT$..from_sorted_iter$LT$alloc..vec..into_iter..IntoIter$LT$wasmtime_types..ModuleInternedTypeIndex$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17h6988bd2885362933E.exit" unwind label %149 + to label %"_ZN4core3ptr519drop_in_place$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$wasmtime_types..ModuleInternedTypeIndex$C$alloc..collections..btree..set_val..SetValZST$C$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$wasmtime_types..ModuleInternedTypeIndex$GT$$C$alloc..collections..btree..set..BTreeSet$LT$wasmtime_types..ModuleInternedTypeIndex$GT$..from_sorted_iter$LT$alloc..vec..into_iter..IntoIter$LT$wasmtime_types..ModuleInternedTypeIndex$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17h6988bd2885362933E.exit" unwind label %146 20: ; preds = %17 %21 = landingpad { ptr, i32 } @@ -11295,7 +11295,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %28 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 54 %29 = load i16, ptr %28, align 2, !noundef !17 %30 = icmp ult i16 %29, 11 - br i1 %30, label %144, label %.preheader + br i1 %30, label %141, label %.preheader .lr.ph.i28: ; preds = %.lr.ph.i28.preheader, %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h0d48bbc0b8cd5d2fE.exit.i" %.011.i = phi ptr [ %41, %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h0d48bbc0b8cd5d2fE.exit.i" ], [ %.val25, %.lr.ph.i28.preheader ] @@ -11325,7 +11325,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %44 = icmp ult i16 %43, 5 br i1 %44, label %45, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h0d48bbc0b8cd5d2fE.exit.i" -"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h0d48bbc0b8cd5d2fE.exit.i": ; preds = %77, %"_ZN5alloc11collections5btree4node40NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$7last_kv17h449060b3b06e811dE.exit.i" +"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h0d48bbc0b8cd5d2fE.exit.i": ; preds = %74, %"_ZN5alloc11collections5btree4node40NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$7last_kv17h449060b3b06e811dE.exit.i" %.not.i29 = icmp eq i64 %38, 0 br i1 %.not.i29, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17hfa697b450b994299E.exit", label %.lr.ph.i28 @@ -11336,293 +11336,284 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %48 = load i16, ptr %47, align 2, !noalias !1616, !noundef !17 %49 = zext nneg i16 %43 to i64 %.not.i6.i = icmp ugt i16 %narrow.i, %48 - br i1 %.not.i6.i, label %.noexc30, label %50 + br i1 %.not.i6.i, label %.noexc30, label %_ZN5alloc11collections5btree4node13move_to_slice17hae5d1a55ddef0b91E.exit.i.i .noexc30: ; preds = %45 call void @_ZN4core9panicking5panic17h44790a89027c670fE(ptr noalias noundef nonnull readonly align 1 @anon.f7ec036493567efedaa7daa7831baa68.36, i64 noundef 39, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.f7ec036493567efedaa7daa7831baa68.37) #28 unreachable -50: ; preds = %45 - %51 = zext i16 %48 to i64 - %52 = sub nuw nsw i64 %51, %46 - %53 = trunc nuw i64 %52 to i16 - store i16 %53, ptr %47, align 2, !noalias !1616 +_ZN5alloc11collections5btree4node13move_to_slice17hae5d1a55ddef0b91E.exit.i.i: ; preds = %45 + %50 = zext i16 %48 to i64 + %51 = sub nuw nsw i64 %50, %46 + %52 = trunc nuw i64 %51 to i16 + store i16 %52, ptr %47, align 2, !noalias !1616 store i16 5, ptr %42, align 2, !noalias !1616 - %54 = getelementptr inbounds nuw i8, ptr %41, i64 8 - %55 = getelementptr inbounds nuw i32, ptr %54, i64 %46 - %56 = shl nuw nsw i64 %49, 2 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %55, ptr nonnull align 4 %54, i64 %56, i1 false), !noalias !1616 - %57 = getelementptr inbounds nuw i8, ptr %41, i64 56 - %58 = add nuw nsw i64 %52, 1 - %59 = sub nuw nsw i64 %51, %58 - %60 = add nsw i64 %46, -1 - %61 = icmp eq i64 %59, %60 - br i1 %61, label %_ZN5alloc11collections5btree4node13move_to_slice17hae5d1a55ddef0b91E.exit.i.i, label %.noexc31 - -.noexc31: ; preds = %50 - call void @_ZN4core9panicking5panic17h44790a89027c670fE(ptr noalias noundef nonnull readonly align 1 @anon.f7ec036493567efedaa7daa7831baa68.25, i64 noundef 40, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.f7ec036493567efedaa7daa7831baa68.26) #28 - unreachable - -_ZN5alloc11collections5btree4node13move_to_slice17hae5d1a55ddef0b91E.exit.i.i: ; preds = %50 - %62 = getelementptr inbounds nuw i8, ptr %37, i64 8 - %63 = getelementptr inbounds nuw i32, ptr %62, i64 %58 - %64 = shl nuw nsw i64 %59, 2 - call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %54, ptr nonnull readonly align 4 %63, i64 %64, i1 false), !alias.scope !1619, !noalias !1616 - %65 = getelementptr inbounds nuw i32, ptr %62, i64 %52 + %53 = getelementptr inbounds nuw i8, ptr %41, i64 8 + %54 = getelementptr inbounds nuw i32, ptr %53, i64 %46 + %55 = shl nuw nsw i64 %49, 2 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %54, ptr nonnull align 4 %53, i64 %55, i1 false), !noalias !1616 + %56 = getelementptr inbounds nuw i8, ptr %41, i64 56 + %57 = add nuw nsw i64 %51, 1 + %58 = sub nuw nsw i64 %50, %57 + %59 = getelementptr inbounds nuw i8, ptr %37, i64 8 + %60 = getelementptr inbounds nuw i32, ptr %59, i64 %57 + %61 = shl nuw nsw i64 %58, 2 + call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %53, ptr nonnull readonly align 4 %60, i64 %61, i1 false), !alias.scope !1619, !noalias !1616 + %62 = getelementptr inbounds nuw i32, ptr %59, i64 %51 + %63 = load i32, ptr %62, align 4, !noalias !1616, !noundef !17 + %64 = getelementptr inbounds nuw i8, ptr %.011.i, i64 8 + %65 = getelementptr inbounds nuw i32, ptr %64, i64 %34 %66 = load i32, ptr %65, align 4, !noalias !1616, !noundef !17 - %67 = getelementptr inbounds nuw i8, ptr %.011.i, i64 8 - %68 = getelementptr inbounds nuw i32, ptr %67, i64 %34 - %69 = load i32, ptr %68, align 4, !noalias !1616, !noundef !17 - store i32 %66, ptr %68, align 4, !noalias !1616 - %70 = getelementptr inbounds nuw i32, ptr %54, i64 %59 - store i32 %69, ptr %70, align 4, !noalias !1616 + store i32 %63, ptr %65, align 4, !noalias !1616 + %67 = getelementptr inbounds nuw i32, ptr %53, i64 %58 + store i32 %66, ptr %67, align 4, !noalias !1616 %cond.i = icmp eq i64 %38, 0 br i1 %cond.i, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17hfa697b450b994299E.exit", label %_ZN5alloc11collections5btree4node13move_to_slice17h5829d77f99dd0856E.exit.i.i _ZN5alloc11collections5btree4node13move_to_slice17h5829d77f99dd0856E.exit.i.i: ; preds = %_ZN5alloc11collections5btree4node13move_to_slice17hae5d1a55ddef0b91E.exit.i.i - %71 = getelementptr inbounds nuw i8, ptr %37, i64 56 - %72 = getelementptr inbounds nuw ptr, ptr %57, i64 %46 - %73 = shl nuw nsw i64 %49, 3 - %74 = add nuw nsw i64 %73, 8 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %72, ptr noundef nonnull align 8 dereferenceable(1) %57, i64 %74, i1 false), !noalias !1616 - %75 = getelementptr inbounds nuw ptr, ptr %71, i64 %58 - %76 = shl nuw nsw i64 %46, 3 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %57, ptr noundef nonnull readonly align 8 dereferenceable(1) %75, i64 %76, i1 false), !alias.scope !1623, !noalias !1616 - br label %77 - -77: ; preds = %77, %_ZN5alloc11collections5btree4node13move_to_slice17h5829d77f99dd0856E.exit.i.i - %.sroa.0.05.i.i.i = phi i64 [ 0, %_ZN5alloc11collections5btree4node13move_to_slice17h5829d77f99dd0856E.exit.i.i ], [ %78, %77 ] - %78 = add nuw nsw i64 %.sroa.0.05.i.i.i, 1 - %79 = getelementptr inbounds nuw ptr, ptr %57, i64 %.sroa.0.05.i.i.i - %80 = load ptr, ptr %79, align 8, !noalias !1616, !nonnull !17, !noundef !17 - store ptr %41, ptr %80, align 8, !noalias !1616 - %81 = trunc nuw nsw i64 %.sroa.0.05.i.i.i to i16 - %82 = getelementptr inbounds nuw i8, ptr %80, i64 52 - store i16 %81, ptr %82, align 4, !noalias !1616 + %68 = getelementptr inbounds nuw i8, ptr %37, i64 56 + %69 = getelementptr inbounds nuw ptr, ptr %56, i64 %46 + %70 = shl nuw nsw i64 %49, 3 + %71 = add nuw nsw i64 %70, 8 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %69, ptr noundef nonnull align 8 dereferenceable(1) %56, i64 %71, i1 false), !noalias !1616 + %72 = getelementptr inbounds nuw ptr, ptr %68, i64 %57 + %73 = shl nuw nsw i64 %46, 3 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %56, ptr noundef nonnull readonly align 8 dereferenceable(1) %72, i64 %73, i1 false), !alias.scope !1623, !noalias !1616 + br label %74 + +74: ; preds = %74, %_ZN5alloc11collections5btree4node13move_to_slice17h5829d77f99dd0856E.exit.i.i + %.sroa.0.05.i.i.i = phi i64 [ 0, %_ZN5alloc11collections5btree4node13move_to_slice17h5829d77f99dd0856E.exit.i.i ], [ %75, %74 ] + %75 = add nuw nsw i64 %.sroa.0.05.i.i.i, 1 + %76 = getelementptr inbounds nuw ptr, ptr %56, i64 %.sroa.0.05.i.i.i + %77 = load ptr, ptr %76, align 8, !noalias !1616, !nonnull !17, !noundef !17 + store ptr %41, ptr %77, align 8, !noalias !1616 + %78 = trunc nuw nsw i64 %.sroa.0.05.i.i.i to i16 + %79 = getelementptr inbounds nuw i8, ptr %77, i64 52 + store i16 %78, ptr %79, align 4, !noalias !1616 %exitcond.not.i.i.i = icmp eq i64 %.sroa.0.05.i.i.i, 5 - br i1 %exitcond.not.i.i.i, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h0d48bbc0b8cd5d2fE.exit.i", label %77 + br i1 %exitcond.not.i.i.i, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h0d48bbc0b8cd5d2fE.exit.i", label %74 "_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17hfa697b450b994299E.exit": ; preds = %_ZN5alloc11collections5btree4node13move_to_slice17hae5d1a55ddef0b91E.exit.i.i, %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h0d48bbc0b8cd5d2fE.exit.i", %"_ZN4core3ptr519drop_in_place$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$wasmtime_types..ModuleInternedTypeIndex$C$alloc..collections..btree..set_val..SetValZST$C$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$wasmtime_types..ModuleInternedTypeIndex$GT$$C$alloc..collections..btree..set..BTreeSet$LT$wasmtime_types..ModuleInternedTypeIndex$GT$..from_sorted_iter$LT$alloc..vec..into_iter..IntoIter$LT$wasmtime_types..ModuleInternedTypeIndex$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17h6988bd2885362933E.exit27" ret void -.preheader: ; preds = %27, %85 - %.sroa.54.0 = phi i64 [ %86, %85 ], [ 0, %27 ] - %.sroa.03.0 = phi ptr [ %83, %85 ], [ %.sroa.0.0, %27 ] - %83 = load ptr, ptr %.sroa.03.0, align 8, !noalias !1627, !noundef !17 - %84 = icmp eq ptr %83, null - br i1 %84, label %90, label %85 +.preheader: ; preds = %27, %82 + %.sroa.54.0 = phi i64 [ %83, %82 ], [ 0, %27 ] + %.sroa.03.0 = phi ptr [ %80, %82 ], [ %.sroa.0.0, %27 ] + %80 = load ptr, ptr %.sroa.03.0, align 8, !noalias !1627, !noundef !17 + %81 = icmp eq ptr %80, null + br i1 %81, label %87, label %82 -.loopexit81: ; preds = %.loopexit75 - %lpad.loopexit83 = landingpad { ptr, i32 } +.loopexit80: ; preds = %.loopexit74 + %lpad.loopexit82 = landingpad { ptr, i32 } cleanup br label %.body -.loopexit.split-lp82: ; preds = %107, %113 - %lpad.loopexit.split-lp84 = landingpad { ptr, i32 } +.loopexit.split-lp81: ; preds = %104, %110 + %lpad.loopexit.split-lp83 = landingpad { ptr, i32 } cleanup br label %.body -85: ; preds = %.preheader - %86 = add i64 %.sroa.54.0, 1 - %87 = getelementptr inbounds nuw i8, ptr %83, i64 54 - %88 = load i16, ptr %87, align 2, !noundef !17 - %89 = icmp ult i16 %88, 11 - br i1 %89, label %.loopexit75, label %.preheader +82: ; preds = %.preheader + %83 = add i64 %.sroa.54.0, 1 + %84 = getelementptr inbounds nuw i8, ptr %80, i64 54 + %85 = load i16, ptr %84, align 2, !noundef !17 + %86 = icmp ult i16 %85, 11 + br i1 %86, label %.loopexit74, label %.preheader -90: ; preds = %.preheader +87: ; preds = %.preheader call void @llvm.experimental.noalias.scope.decl(metadata !1630) - %91 = load ptr, ptr %0, align 8, !alias.scope !1630, !nonnull !17, !noundef !17 - %92 = load i64, ptr %6, align 8, !alias.scope !1630, !noundef !17 - %93 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17hdf605e22fe771092E.llvm.3458943816331328394"() - to label %.noexc.i unwind label %.loopexit76, !noalias !1630 + %88 = load ptr, ptr %0, align 8, !alias.scope !1630, !nonnull !17, !noundef !17 + %89 = load i64, ptr %6, align 8, !alias.scope !1630, !noundef !17 + %90 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17hdf605e22fe771092E.llvm.3458943816331328394"() + to label %.noexc.i unwind label %.loopexit75, !noalias !1630 -.noexc.i: ; preds = %90 - %94 = icmp eq ptr %93, null - br i1 %94, label %95, label %99 +.noexc.i: ; preds = %87 + %91 = icmp eq ptr %90, null + br i1 %91, label %92, label %96 -95: ; preds = %.noexc.i +92: ; preds = %.noexc.i invoke void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef 8, i64 noundef 152) #28 - to label %.noexc3.i unwind label %.loopexit.split-lp77, !noalias !1630 + to label %.noexc3.i unwind label %.loopexit.split-lp76, !noalias !1630 -.noexc3.i: ; preds = %95 +.noexc3.i: ; preds = %92 unreachable -.loopexit76: ; preds = %90 - %lpad.loopexit78 = landingpad { ptr, i32 } +.loopexit75: ; preds = %87 + %lpad.loopexit77 = landingpad { ptr, i32 } cleanup - br label %96 + br label %93 -.loopexit.split-lp77: ; preds = %95 - %lpad.loopexit.split-lp79 = landingpad { ptr, i32 } +.loopexit.split-lp76: ; preds = %92 + %lpad.loopexit.split-lp78 = landingpad { ptr, i32 } cleanup - br label %96 + br label %93 -96: ; preds = %.loopexit.split-lp77, %.loopexit76 - %lpad.phi80 = phi { ptr, i32 } [ %lpad.loopexit78, %.loopexit76 ], [ %lpad.loopexit.split-lp79, %.loopexit.split-lp77 ] +93: ; preds = %.loopexit.split-lp76, %.loopexit75 + %lpad.phi79 = phi { ptr, i32 } [ %lpad.loopexit77, %.loopexit75 ], [ %lpad.loopexit.split-lp78, %.loopexit.split-lp76 ] invoke void @"_ZN93_$LT$alloc..collections..btree..mem..replace..PanicGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17he7f40e69e6f26b83E"(ptr noalias noundef nonnull align 1 %4) - to label %.body unwind label %97, !noalias !1630 + to label %.body unwind label %94, !noalias !1630 -97: ; preds = %96 - %98 = landingpad { ptr, i32 } +94: ; preds = %93 + %95 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #27, !noalias !1630 unreachable -99: ; preds = %.noexc.i - store ptr null, ptr %93, align 8, !noalias !1630 - %100 = getelementptr inbounds nuw i8, ptr %93, i64 54 - store i16 0, ptr %100, align 2, !noalias !1630 - %101 = getelementptr inbounds nuw i8, ptr %93, i64 56 - store ptr %91, ptr %101, align 8, !noalias !1630 - %102 = add i64 %92, 1 - store ptr %93, ptr %91, align 8, !noalias !1633 - %103 = getelementptr inbounds nuw i8, ptr %91, i64 52 - store i16 0, ptr %103, align 4, !noalias !1638 - store ptr %93, ptr %0, align 8, !alias.scope !1630 - store i64 %102, ptr %6, align 8, !alias.scope !1630 - br label %.loopexit75 - -.loopexit75: ; preds = %85, %99 - %.sroa.056.0 = phi ptr [ %93, %99 ], [ %83, %85 ] - %.sroa.657.0 = phi i64 [ %102, %99 ], [ %86, %85 ] - %104 = add i64 %.sroa.657.0, -1 - %105 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h7caa7a0d8d6883c3E.llvm.3458943816331328394"() - to label %.noexc33 unwind label %.loopexit81 - -.noexc33: ; preds = %.loopexit75 - %106 = icmp eq ptr %105, null - br i1 %106, label %107, label %108 - -107: ; preds = %.noexc33 +96: ; preds = %.noexc.i + store ptr null, ptr %90, align 8, !noalias !1630 + %97 = getelementptr inbounds nuw i8, ptr %90, i64 54 + store i16 0, ptr %97, align 2, !noalias !1630 + %98 = getelementptr inbounds nuw i8, ptr %90, i64 56 + store ptr %88, ptr %98, align 8, !noalias !1630 + %99 = add i64 %89, 1 + store ptr %90, ptr %88, align 8, !noalias !1633 + %100 = getelementptr inbounds nuw i8, ptr %88, i64 52 + store i16 0, ptr %100, align 4, !noalias !1638 + store ptr %90, ptr %0, align 8, !alias.scope !1630 + store i64 %99, ptr %6, align 8, !alias.scope !1630 + br label %.loopexit74 + +.loopexit74: ; preds = %82, %96 + %.sroa.055.0 = phi ptr [ %90, %96 ], [ %80, %82 ] + %.sroa.656.0 = phi i64 [ %99, %96 ], [ %83, %82 ] + %101 = add i64 %.sroa.656.0, -1 + %102 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h7caa7a0d8d6883c3E.llvm.3458943816331328394"() + to label %.noexc32 unwind label %.loopexit80 + +.noexc32: ; preds = %.loopexit74 + %103 = icmp eq ptr %102, null + br i1 %103, label %104, label %105 + +104: ; preds = %.noexc32 invoke void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef 8, i64 noundef 56) #28 - to label %.noexc34 unwind label %.loopexit.split-lp82 + to label %.noexc33 unwind label %.loopexit.split-lp81 -.noexc34: ; preds = %107 +.noexc33: ; preds = %104 unreachable -108: ; preds = %.noexc33 - store ptr null, ptr %105, align 8 - %109 = getelementptr inbounds nuw i8, ptr %105, i64 54 - store i16 0, ptr %109, align 2 - %.not = icmp eq i64 %104, 0 +105: ; preds = %.noexc32 + store ptr null, ptr %102, align 8 + %106 = getelementptr inbounds nuw i8, ptr %102, i64 54 + store i16 0, ptr %106, align 2 + %.not = icmp eq i64 %101, 0 br i1 %.not, label %._crit_edge, label %.lr.ph -._crit_edge: ; preds = %_ZN5alloc11collections5btree3mem7replace17ha140e4c1fd16a31cE.exit49, %108 - %.sroa.062.0.lcssa = phi ptr [ %105, %108 ], [ %135, %_ZN5alloc11collections5btree3mem7replace17ha140e4c1fd16a31cE.exit49 ] - %110 = getelementptr inbounds nuw i8, ptr %.sroa.056.0, i64 54 - %111 = load i16, ptr %110, align 2, !noundef !17 - %112 = icmp ult i16 %111, 11 - br i1 %112, label %114, label %113 +._crit_edge: ; preds = %_ZN5alloc11collections5btree3mem7replace17ha140e4c1fd16a31cE.exit48, %105 + %.sroa.061.0.lcssa = phi ptr [ %102, %105 ], [ %132, %_ZN5alloc11collections5btree3mem7replace17ha140e4c1fd16a31cE.exit48 ] + %107 = getelementptr inbounds nuw i8, ptr %.sroa.055.0, i64 54 + %108 = load i16, ptr %107, align 2, !noundef !17 + %109 = icmp ult i16 %108, 11 + br i1 %109, label %111, label %110 -113: ; preds = %._crit_edge +110: ; preds = %._crit_edge invoke void @_ZN4core9panicking5panic17h44790a89027c670fE(ptr noalias noundef nonnull readonly align 1 @anon.f7ec036493567efedaa7daa7831baa68.14.llvm.6890662303782480722, i64 noundef 32, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.f7ec036493567efedaa7daa7831baa68.19) #28 - to label %.noexc36 unwind label %.loopexit.split-lp82 - -.noexc36: ; preds = %113 - unreachable - -114: ; preds = %._crit_edge - %115 = zext nneg i16 %111 to i64 - %116 = add nuw nsw i16 %111, 1 - store i16 %116, ptr %110, align 2 - %117 = getelementptr inbounds nuw i8, ptr %.sroa.056.0, i64 8 - %118 = getelementptr inbounds nuw i32, ptr %117, i64 %115 - store i32 %24, ptr %118, align 4 - %119 = add nuw nsw i64 %115, 1 - %120 = getelementptr inbounds nuw i8, ptr %.sroa.056.0, i64 56 - %121 = getelementptr inbounds nuw ptr, ptr %120, i64 %119 - store ptr %.sroa.062.0.lcssa, ptr %121, align 8 - store ptr %.sroa.056.0, ptr %.sroa.062.0.lcssa, align 8 - %122 = trunc nuw nsw i64 %119 to i16 - %123 = getelementptr inbounds nuw i8, ptr %.sroa.062.0.lcssa, i64 52 - store i16 %122, ptr %123, align 4 - %.not16.i37 = icmp eq i64 %.sroa.657.0, 0 - br i1 %.not16.i37, label %.loopexit, label %.lr.ph.i38 - -.lr.ph.i38: ; preds = %114, %.lr.ph.i38 - %.018.i39 = phi ptr [ %130, %.lr.ph.i38 ], [ %.sroa.056.0, %114 ] - %.01517.i40 = phi i64 [ %131, %.lr.ph.i38 ], [ %.sroa.657.0, %114 ] - %124 = getelementptr inbounds nuw i8, ptr %.018.i39, i64 54 - %125 = load i16, ptr %124, align 2, !noalias !1639, !noundef !17 - %126 = zext nneg i16 %125 to i64 - %127 = getelementptr inbounds nuw i8, ptr %.018.i39, i64 56 - %128 = icmp ult i16 %125, 12 - call void @llvm.assume(i1 %128) - %129 = getelementptr inbounds nuw ptr, ptr %127, i64 %126 - %130 = load ptr, ptr %129, align 8, !noalias !1639, !nonnull !17, !noundef !17 - %131 = add i64 %.01517.i40, -1 - %.not.i41 = icmp eq i64 %131, 0 - br i1 %.not.i41, label %.loopexit, label %.lr.ph.i38 - -.loopexit: ; preds = %.lr.ph.i38, %114, %144 - %.sroa.0.1 = phi ptr [ %.sroa.0.0, %144 ], [ %.sroa.056.0, %114 ], [ %130, %.lr.ph.i38 ] - %132 = load i64, ptr %2, align 8, !noundef !17 - %133 = add i64 %132, 1 - store i64 %133, ptr %2, align 8 + to label %.noexc35 unwind label %.loopexit.split-lp81 + +.noexc35: ; preds = %110 + unreachable + +111: ; preds = %._crit_edge + %112 = zext nneg i16 %108 to i64 + %113 = add nuw nsw i16 %108, 1 + store i16 %113, ptr %107, align 2 + %114 = getelementptr inbounds nuw i8, ptr %.sroa.055.0, i64 8 + %115 = getelementptr inbounds nuw i32, ptr %114, i64 %112 + store i32 %24, ptr %115, align 4 + %116 = add nuw nsw i64 %112, 1 + %117 = getelementptr inbounds nuw i8, ptr %.sroa.055.0, i64 56 + %118 = getelementptr inbounds nuw ptr, ptr %117, i64 %116 + store ptr %.sroa.061.0.lcssa, ptr %118, align 8 + store ptr %.sroa.055.0, ptr %.sroa.061.0.lcssa, align 8 + %119 = trunc nuw nsw i64 %116 to i16 + %120 = getelementptr inbounds nuw i8, ptr %.sroa.061.0.lcssa, i64 52 + store i16 %119, ptr %120, align 4 + %.not16.i36 = icmp eq i64 %.sroa.656.0, 0 + br i1 %.not16.i36, label %.loopexit, label %.lr.ph.i37 + +.lr.ph.i37: ; preds = %111, %.lr.ph.i37 + %.018.i38 = phi ptr [ %127, %.lr.ph.i37 ], [ %.sroa.055.0, %111 ] + %.01517.i39 = phi i64 [ %128, %.lr.ph.i37 ], [ %.sroa.656.0, %111 ] + %121 = getelementptr inbounds nuw i8, ptr %.018.i38, i64 54 + %122 = load i16, ptr %121, align 2, !noalias !1639, !noundef !17 + %123 = zext nneg i16 %122 to i64 + %124 = getelementptr inbounds nuw i8, ptr %.018.i38, i64 56 + %125 = icmp ult i16 %122, 12 + call void @llvm.assume(i1 %125) + %126 = getelementptr inbounds nuw ptr, ptr %124, i64 %123 + %127 = load ptr, ptr %126, align 8, !noalias !1639, !nonnull !17, !noundef !17 + %128 = add i64 %.01517.i39, -1 + %.not.i40 = icmp eq i64 %128, 0 + br i1 %.not.i40, label %.loopexit, label %.lr.ph.i37 + +.loopexit: ; preds = %.lr.ph.i37, %111, %141 + %.sroa.0.1 = phi ptr [ %.sroa.0.0, %141 ], [ %.sroa.055.0, %111 ], [ %127, %.lr.ph.i37 ] + %129 = load i64, ptr %2, align 8, !noundef !17 + %130 = add i64 %129, 1 + store i64 %130, ptr %2, align 8 br label %17 -.lr.ph: ; preds = %108, %_ZN5alloc11collections5btree3mem7replace17ha140e4c1fd16a31cE.exit49 - %.sroa.014.096 = phi i64 [ %134, %_ZN5alloc11collections5btree3mem7replace17ha140e4c1fd16a31cE.exit49 ], [ 0, %108 ] - %.sroa.062.094 = phi ptr [ %135, %_ZN5alloc11collections5btree3mem7replace17ha140e4c1fd16a31cE.exit49 ], [ %105, %108 ] - %134 = add nuw i64 %.sroa.014.096, 1 - %135 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17hdf605e22fe771092E.llvm.3458943816331328394"() - to label %.noexc.i45 unwind label %.loopexit74, !noalias !1642 +.lr.ph: ; preds = %105, %_ZN5alloc11collections5btree3mem7replace17ha140e4c1fd16a31cE.exit48 + %.sroa.014.095 = phi i64 [ %131, %_ZN5alloc11collections5btree3mem7replace17ha140e4c1fd16a31cE.exit48 ], [ 0, %105 ] + %.sroa.061.093 = phi ptr [ %132, %_ZN5alloc11collections5btree3mem7replace17ha140e4c1fd16a31cE.exit48 ], [ %102, %105 ] + %131 = add nuw i64 %.sroa.014.095, 1 + %132 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17hdf605e22fe771092E.llvm.3458943816331328394"() + to label %.noexc.i44 unwind label %.loopexit73, !noalias !1642 -.noexc.i45: ; preds = %.lr.ph - %136 = icmp eq ptr %135, null - br i1 %136, label %137, label %_ZN5alloc11collections5btree3mem7replace17ha140e4c1fd16a31cE.exit49 +.noexc.i44: ; preds = %.lr.ph + %133 = icmp eq ptr %132, null + br i1 %133, label %134, label %_ZN5alloc11collections5btree3mem7replace17ha140e4c1fd16a31cE.exit48 -137: ; preds = %.noexc.i45 +134: ; preds = %.noexc.i44 invoke void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef 8, i64 noundef 152) #28 - to label %.noexc3.i46 unwind label %.loopexit.split-lp, !noalias !1642 + to label %.noexc3.i45 unwind label %.loopexit.split-lp, !noalias !1642 -.noexc3.i46: ; preds = %137 +.noexc3.i45: ; preds = %134 unreachable -.loopexit74: ; preds = %.lr.ph +.loopexit73: ; preds = %.lr.ph %lpad.loopexit = landingpad { ptr, i32 } cleanup - br label %138 + br label %135 -.loopexit.split-lp: ; preds = %137 +.loopexit.split-lp: ; preds = %134 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup - br label %138 + br label %135 -138: ; preds = %.loopexit.split-lp, %.loopexit74 - %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit74 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] +135: ; preds = %.loopexit.split-lp, %.loopexit73 + %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit73 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] invoke void @"_ZN93_$LT$alloc..collections..btree..mem..replace..PanicGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17he7f40e69e6f26b83E"(ptr noalias noundef nonnull align 1 %4) - to label %.body unwind label %139, !noalias !1642 + to label %.body unwind label %136, !noalias !1642 -139: ; preds = %138 - %140 = landingpad { ptr, i32 } +136: ; preds = %135 + %137 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #27, !noalias !1642 unreachable -_ZN5alloc11collections5btree3mem7replace17ha140e4c1fd16a31cE.exit49: ; preds = %.noexc.i45 - store ptr null, ptr %135, align 8, !noalias !1642 - %141 = getelementptr inbounds nuw i8, ptr %135, i64 54 - store i16 0, ptr %141, align 2, !noalias !1642 - %142 = getelementptr inbounds nuw i8, ptr %135, i64 56 - store ptr %.sroa.062.094, ptr %142, align 8, !noalias !1642 - store ptr %135, ptr %.sroa.062.094, align 8, !noalias !1645 - %143 = getelementptr inbounds nuw i8, ptr %.sroa.062.094, i64 52 - store i16 0, ptr %143, align 4, !noalias !1650 - %exitcond.not = icmp eq i64 %134, %104 +_ZN5alloc11collections5btree3mem7replace17ha140e4c1fd16a31cE.exit48: ; preds = %.noexc.i44 + store ptr null, ptr %132, align 8, !noalias !1642 + %138 = getelementptr inbounds nuw i8, ptr %132, i64 54 + store i16 0, ptr %138, align 2, !noalias !1642 + %139 = getelementptr inbounds nuw i8, ptr %132, i64 56 + store ptr %.sroa.061.093, ptr %139, align 8, !noalias !1642 + store ptr %132, ptr %.sroa.061.093, align 8, !noalias !1645 + %140 = getelementptr inbounds nuw i8, ptr %.sroa.061.093, i64 52 + store i16 0, ptr %140, align 4, !noalias !1650 + %exitcond.not = icmp eq i64 %131, %101 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph -144: ; preds = %27 - %145 = zext nneg i16 %29 to i64 - %146 = add nuw nsw i16 %29, 1 - store i16 %146, ptr %28, align 2, !noalias !1651 - %147 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 8 - %148 = getelementptr inbounds nuw i32, ptr %147, i64 %145 - store i32 %24, ptr %148, align 4, !noalias !1651 +141: ; preds = %27 + %142 = zext nneg i16 %29 to i64 + %143 = add nuw nsw i16 %29, 1 + store i16 %143, ptr %28, align 2, !noalias !1651 + %144 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 8 + %145 = getelementptr inbounds nuw i32, ptr %144, i64 %142 + store i32 %24, ptr %145, align 4, !noalias !1651 br label %.loopexit -149: ; preds = %.body - %150 = landingpad { ptr, i32 } +146: ; preds = %.body + %147 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #27 unreachable diff --git a/bench/wireshark/optimized/packet-hartip.ll b/bench/wireshark/optimized/packet-hartip.ll index 94e2dabb074..825be7ccb64 100644 --- a/bench/wireshark/optimized/packet-hartip.ll +++ b/bench/wireshark/optimized/packet-hartip.ll @@ -862,7 +862,7 @@ hartip_set_conversation.exit: ; preds = %61, %57, %43, %37, 81: ; preds = %hartip_set_conversation.exit %82 = tail call i32 @tvb_reported_length(ptr noundef %0) - br label %550 + br label %548 83: ; preds = %hartip_set_conversation.exit %84 = add nsw i32 %11, -8 @@ -880,10 +880,10 @@ hartip_set_conversation.exit: ; preds = %61, %57, %43, %37, %89 = select i1 %88, i32 %hf_hartip_error_code.val.i, i32 %hf_hartip_data.val.i %90 = tail call ptr @proto_tree_add_item(ptr noundef %86, i32 noundef %89, ptr noundef %0, i32 noundef %79, i32 noundef range(i32 0, 65528) %84, i32 noundef 0) %91 = add i32 %3, %11 - br label %550 + br label %548 92: ; preds = %83 - switch i8 %26, label %546 [ + switch i8 %26, label %544 [ i8 0, label %93 i8 1, label %105 i8 2, label %111 @@ -909,7 +909,7 @@ hartip_set_conversation.exit: ; preds = %61, %57, %43, %37, dissect_session_init.exit: ; preds = %95, %101 %104 = add i32 %3, %11 - br label %550 + br label %548 105: ; preds = %92 %106 = load i32, ptr @hf_hartip_data, align 4 @@ -918,7 +918,7 @@ dissect_session_init.exit: ; preds = %95, %101 %ei_hartip_data_none.ei_hartip_data_unexpected.i.i = select i1 %108, ptr @ei_hartip_data_none, ptr @ei_hartip_data_unexpected %109 = tail call ptr @expert_add_info(ptr noundef %1, ptr noundef %107, ptr noundef nonnull %ei_hartip_data_none.ei_hartip_data_unexpected.i.i) %110 = add i32 %3, %11 - br label %550 + br label %548 111: ; preds = %92 %112 = load i32, ptr @hf_hartip_data, align 4 @@ -927,7 +927,7 @@ dissect_session_init.exit: ; preds = %95, %101 %ei_hartip_data_none.ei_hartip_data_unexpected.i.i110 = select i1 %114, ptr @ei_hartip_data_none, ptr @ei_hartip_data_unexpected %115 = tail call ptr @expert_add_info(ptr noundef %1, ptr noundef %113, ptr noundef nonnull %ei_hartip_data_none.ei_hartip_data_unexpected.i.i110) %116 = add i32 %3, %11 - br label %550 + br label %548 117: ; preds = %92 %.not213.i = icmp eq i32 %84, 0 @@ -1080,7 +1080,7 @@ dissect_session_init.exit: ; preds = %95, %101 %.6120.i = phi i32 [ %187, %182 ], [ %.5119.i, %.thread166.i ] %.6.i = phi i32 [ %186, %182 ], [ %.5.i, %.thread166.i ] %189 = icmp sgt i32 %.6120.i, 1 - br i1 %189, label %190, label %540 + br i1 %189, label %190, label %538 190: ; preds = %188 %191 = add nsw i32 %.6120.i, -1 @@ -1110,8 +1110,8 @@ dissect_session_init.exit: ; preds = %95, %101 i8 38, label %426 i8 48, label %431 i8 77, label %433 - i8 -78, label %490 - i8 -53, label %534 + i8 -78, label %488 + i8 -53, label %532 ] 192: ; preds = %190, %190, %190 @@ -1510,147 +1510,142 @@ dissect_session_init.exit: ; preds = %95, %101 %479 = load i32, ptr @hf_hartip_pt_device_status, align 4 %480 = tail call ptr @proto_tree_add_item(ptr noundef %86, i32 noundef %479, ptr noundef %0, i32 noundef %478, i32 noundef 1, i32 noundef 0) %481 = add i8 %466, -2 - %482 = zext i8 %481 to i32 - %483 = icmp eq i8 %481, 0 - %484 = icmp samesign ult i32 %.6120.i, 10 - %or.cond3.not82.i.i.i = or i1 %484, %483 - %485 = add nsw i32 %.6120.i, -9 - %.not78.i.i.i = icmp samesign ult i32 %485, %482 - %or.cond79.i.i.i = select i1 %or.cond3.not82.i.i.i, i1 true, i1 %.not78.i.i.i - br i1 %or.cond79.i.i.i, label %.thread184.i, label %486 - -486: ; preds = %475 - %487 = add i32 %462, 4 - %488 = load i32, ptr @hf_hartip_pt_rsp_data, align 4 - %489 = tail call ptr @proto_tree_add_item(ptr noundef %86, i32 noundef %488, ptr noundef %0, i32 noundef %487, i32 noundef %482, i32 noundef 0) + %482 = icmp eq i8 %481, 0 + br i1 %482, label %.thread184.i, label %483 + +483: ; preds = %475 + %484 = zext i8 %481 to i32 + %485 = add i32 %462, 4 + %486 = load i32, ptr @hf_hartip_pt_rsp_data, align 4 + %487 = tail call ptr @proto_tree_add_item(ptr noundef %86, i32 noundef %486, ptr noundef %0, i32 noundef %485, i32 noundef %484, i32 noundef 0) br label %.thread184.i -490: ; preds = %190 - %491 = icmp samesign ugt i32 %191, 4 - br i1 %491, label %492, label %dissect_parse_hart_cmds.exit.thread182.i +488: ; preds = %190 + %489 = icmp samesign ugt i32 %191, 4 + br i1 %489, label %490, label %dissect_parse_hart_cmds.exit.thread182.i -492: ; preds = %490 - %493 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %.6.i) - %494 = load i32, ptr @hf_hartip_pt_rsp_number_of_commands, align 4 - %495 = zext i8 %493 to i32 - %496 = tail call ptr @proto_tree_add_uint(ptr noundef %86, i32 noundef %494, ptr noundef %0, i32 noundef %.6.i, i32 noundef 1, i32 noundef %495) - %.not81.i.i.i = icmp eq i8 %493, 0 +490: ; preds = %488 + %491 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %.6.i) + %492 = load i32, ptr @hf_hartip_pt_rsp_number_of_commands, align 4 + %493 = zext i8 %491 to i32 + %494 = tail call ptr @proto_tree_add_uint(ptr noundef %86, i32 noundef %492, ptr noundef %0, i32 noundef %.6.i, i32 noundef 1, i32 noundef %493) + %.not81.i.i.i = icmp eq i8 %491, 0 br i1 %.not81.i.i.i, label %.thread184.i, label %.lr.ph.preheader.i.i.i -.lr.ph.preheader.i.i.i: ; preds = %492 - %497 = add nsw i32 %.6120.i, -2 - %498 = add i32 %.6.i, 1 +.lr.ph.preheader.i.i.i: ; preds = %490 + %495 = add nsw i32 %.6120.i, -2 + %496 = add i32 %.6.i, 1 br label %.lr.ph.i.i.i -.lr.ph.i.i.i: ; preds = %529, %.lr.ph.preheader.i.i.i - %.06380.i.i.i = phi i8 [ %530, %529 ], [ 0, %.lr.ph.preheader.i.i.i ] - %.06479.i.i.i = phi i32 [ %.1.i.i.i, %529 ], [ %497, %.lr.ph.preheader.i.i.i ] - %.06678.i.i.i = phi i32 [ %.167.i.i.i, %529 ], [ %498, %.lr.ph.preheader.i.i.i ] - %499 = tail call zeroext i16 @tvb_get_ntohs(ptr noundef %0, i32 noundef %.06678.i.i.i) - %500 = load i32, ptr @hf_hartip_pt_rsp_command_number, align 4 - %501 = tail call ptr @proto_tree_add_item(ptr noundef %86, i32 noundef %500, ptr noundef %0, i32 noundef %.06678.i.i.i, i32 noundef 2, i32 noundef 0) - %502 = add i32 %.06678.i.i.i, 2 - %503 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %502) - %504 = load i32, ptr @hf_hartip_pt_rsp_command_byte_count, align 4 - %505 = tail call ptr @proto_tree_add_item(ptr noundef %86, i32 noundef %504, ptr noundef %0, i32 noundef %502, i32 noundef 1, i32 noundef 0) - %506 = add i32 %.06678.i.i.i, 3 - %507 = load i32, ptr @hf_hartip_pt_response_code, align 4 - %508 = tail call ptr @proto_tree_add_item(ptr noundef %86, i32 noundef %507, ptr noundef %0, i32 noundef %506, i32 noundef 1, i32 noundef 0) - %509 = add i32 %.06678.i.i.i, 4 - %510 = add nsw i32 %.06479.i.i.i, -4 - %511 = add i8 %503, -1 - %512 = zext i8 %511 to i32 - %513 = icmp eq i8 %511, 0 - %514 = icmp eq i32 %.06479.i.i.i, 4 - %or.cond.not76.i.i.i = select i1 %513, i1 true, i1 %514 - %.not.i95.i.i = icmp samesign ult i32 %510, %512 +.lr.ph.i.i.i: ; preds = %527, %.lr.ph.preheader.i.i.i + %.06380.i.i.i = phi i8 [ %528, %527 ], [ 0, %.lr.ph.preheader.i.i.i ] + %.06479.i.i.i = phi i32 [ %.1.i.i.i, %527 ], [ %495, %.lr.ph.preheader.i.i.i ] + %.06678.i.i.i = phi i32 [ %.167.i.i.i, %527 ], [ %496, %.lr.ph.preheader.i.i.i ] + %497 = tail call zeroext i16 @tvb_get_ntohs(ptr noundef %0, i32 noundef %.06678.i.i.i) + %498 = load i32, ptr @hf_hartip_pt_rsp_command_number, align 4 + %499 = tail call ptr @proto_tree_add_item(ptr noundef %86, i32 noundef %498, ptr noundef %0, i32 noundef %.06678.i.i.i, i32 noundef 2, i32 noundef 0) + %500 = add i32 %.06678.i.i.i, 2 + %501 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %500) + %502 = load i32, ptr @hf_hartip_pt_rsp_command_byte_count, align 4 + %503 = tail call ptr @proto_tree_add_item(ptr noundef %86, i32 noundef %502, ptr noundef %0, i32 noundef %500, i32 noundef 1, i32 noundef 0) + %504 = add i32 %.06678.i.i.i, 3 + %505 = load i32, ptr @hf_hartip_pt_response_code, align 4 + %506 = tail call ptr @proto_tree_add_item(ptr noundef %86, i32 noundef %505, ptr noundef %0, i32 noundef %504, i32 noundef 1, i32 noundef 0) + %507 = add i32 %.06678.i.i.i, 4 + %508 = add nsw i32 %.06479.i.i.i, -4 + %509 = add i8 %501, -1 + %510 = zext i8 %509 to i32 + %511 = icmp eq i8 %509, 0 + %512 = icmp eq i32 %.06479.i.i.i, 4 + %or.cond.not76.i.i.i = select i1 %511, i1 true, i1 %512 + %.not.i95.i.i = icmp samesign ult i32 %508, %510 %or.cond71.i.i.i = select i1 %or.cond.not76.i.i.i, i1 true, i1 %.not.i95.i.i - br i1 %or.cond71.i.i.i, label %529, label %515 + br i1 %or.cond71.i.i.i, label %527, label %513 -515: ; preds = %.lr.ph.i.i.i - switch i16 %499, label %.thread.i.i.i [ - i16 3, label %516 - i16 9, label %518 - i16 48, label %520 +513: ; preds = %.lr.ph.i.i.i + switch i16 %497, label %.thread.i.i.i [ + i16 3, label %514 + i16 9, label %516 + i16 48, label %518 ] -516: ; preds = %515 - %517 = tail call fastcc i32 @dissect_cmd3(ptr noundef %86, ptr noundef %0, i32 noundef %509, i32 noundef %512) - br label %522 - -518: ; preds = %515 - %519 = tail call fastcc i32 @dissect_cmd9(ptr noundef %86, ptr noundef %0, i32 noundef %509, i32 noundef %512) - br label %522 - -520: ; preds = %515 - %521 = tail call fastcc i32 @dissect_cmd48(ptr noundef %86, ptr noundef %0, i32 noundef %509, i32 noundef %512) - br label %522 - -522: ; preds = %520, %518, %516 - %.0.i96.i.i = phi i32 [ %517, %516 ], [ %519, %518 ], [ %521, %520 ] - %523 = icmp eq i32 %.0.i96.i.i, 0 - br i1 %523, label %.thread.i.i.i, label %526 - -.thread.i.i.i: ; preds = %522, %515 - %524 = load i32, ptr @hf_hartip_pt_rsp_data, align 4 - %525 = tail call ptr @proto_tree_add_item(ptr noundef %86, i32 noundef %524, ptr noundef %0, i32 noundef %509, i32 noundef %512, i32 noundef 0) - br label %526 - -526: ; preds = %.thread.i.i.i, %522 - %527 = add i32 %509, %512 - %528 = sub nsw i32 %510, %512 - br label %529 - -529: ; preds = %526, %.lr.ph.i.i.i - %.167.i.i.i = phi i32 [ %527, %526 ], [ %509, %.lr.ph.i.i.i ] - %.1.i.i.i = phi i32 [ %528, %526 ], [ %510, %.lr.ph.i.i.i ] - %530 = add i8 %.06380.i.i.i, 1 - %531 = sext i8 %530 to i32 - %532 = icmp slt i32 %531, %495 - %533 = icmp sgt i32 %.1.i.i.i, 3 - %or.cond72.i.i.i = select i1 %532, i1 %533, i1 false +514: ; preds = %513 + %515 = tail call fastcc i32 @dissect_cmd3(ptr noundef %86, ptr noundef %0, i32 noundef %507, i32 noundef %510) + br label %520 + +516: ; preds = %513 + %517 = tail call fastcc i32 @dissect_cmd9(ptr noundef %86, ptr noundef %0, i32 noundef %507, i32 noundef %510) + br label %520 + +518: ; preds = %513 + %519 = tail call fastcc i32 @dissect_cmd48(ptr noundef %86, ptr noundef %0, i32 noundef %507, i32 noundef %510) + br label %520 + +520: ; preds = %518, %516, %514 + %.0.i96.i.i = phi i32 [ %515, %514 ], [ %517, %516 ], [ %519, %518 ] + %521 = icmp eq i32 %.0.i96.i.i, 0 + br i1 %521, label %.thread.i.i.i, label %524 + +.thread.i.i.i: ; preds = %520, %513 + %522 = load i32, ptr @hf_hartip_pt_rsp_data, align 4 + %523 = tail call ptr @proto_tree_add_item(ptr noundef %86, i32 noundef %522, ptr noundef %0, i32 noundef %507, i32 noundef %510, i32 noundef 0) + br label %524 + +524: ; preds = %.thread.i.i.i, %520 + %525 = add i32 %507, %510 + %526 = sub nsw i32 %508, %510 + br label %527 + +527: ; preds = %524, %.lr.ph.i.i.i + %.167.i.i.i = phi i32 [ %525, %524 ], [ %507, %.lr.ph.i.i.i ] + %.1.i.i.i = phi i32 [ %526, %524 ], [ %508, %.lr.ph.i.i.i ] + %528 = add i8 %.06380.i.i.i, 1 + %529 = sext i8 %528 to i32 + %530 = icmp slt i32 %529, %493 + %531 = icmp sgt i32 %.1.i.i.i, 3 + %or.cond72.i.i.i = select i1 %530, i1 %531, i1 false br i1 %or.cond72.i.i.i, label %.lr.ph.i.i.i, label %dissect_parse_hart_cmds.exit.i, !llvm.loop !11 -534: ; preds = %190 - %535 = tail call fastcc i32 @dissect_cmd203(ptr noundef %86, ptr noundef %0, i32 noundef %.6.i, i32 noundef range(i32 1, 2147483647) %191) +532: ; preds = %190 + %533 = tail call fastcc i32 @dissect_cmd203(ptr noundef %86, ptr noundef %0, i32 noundef %.6.i, i32 noundef range(i32 1, 2147483647) %191) br label %dissect_parse_hart_cmds.exit.i -dissect_parse_hart_cmds.exit.i: ; preds = %529, %534, %431, %288, %264 - %.0.i.i = phi i32 [ %265, %264 ], [ %289, %288 ], [ %432, %431 ], [ %535, %534 ], [ %191, %529 ] - %536 = icmp eq i32 %.0.i.i, 0 - br i1 %536, label %dissect_parse_hart_cmds.exit.thread182.i, label %.thread184.i +dissect_parse_hart_cmds.exit.i: ; preds = %527, %532, %431, %288, %264 + %.0.i.i = phi i32 [ %265, %264 ], [ %289, %288 ], [ %432, %431 ], [ %533, %532 ], [ %191, %527 ] + %534 = icmp eq i32 %.0.i.i, 0 + br i1 %534, label %dissect_parse_hart_cmds.exit.thread182.i, label %.thread184.i -dissect_parse_hart_cmds.exit.thread182.i: ; preds = %dissect_parse_hart_cmds.exit.i, %490, %433, %426, %382, %368, %363, %358, %329, %312, %295, %290, %274, %266, %256, %248, %192, %190 - %537 = load i32, ptr @hf_hartip_pt_payload, align 4 - %538 = tail call ptr @proto_tree_add_item(ptr noundef %86, i32 noundef %537, ptr noundef %0, i32 noundef %.6.i, i32 noundef %191, i32 noundef 0) +dissect_parse_hart_cmds.exit.thread182.i: ; preds = %dissect_parse_hart_cmds.exit.i, %488, %433, %426, %382, %368, %363, %358, %329, %312, %295, %290, %274, %266, %256, %248, %192, %190 + %535 = load i32, ptr @hf_hartip_pt_payload, align 4 + %536 = tail call ptr @proto_tree_add_item(ptr noundef %86, i32 noundef %535, ptr noundef %0, i32 noundef %.6.i, i32 noundef %191, i32 noundef 0) br label %.thread184.i -.thread184.i: ; preds = %dissect_parse_hart_cmds.exit.thread182.i, %dissect_parse_hart_cmds.exit.i, %492, %486, %475, %472, %461, %428, %416, %405, %394, %384, %.critedge.i.i.i, %377, %370, %365, %360, %331, %314, %297, %292, %276, %268, %258, %250, %241, %236, %222, %194 - %539 = add i32 %.6.i, %191 - br label %542 +.thread184.i: ; preds = %dissect_parse_hart_cmds.exit.thread182.i, %dissect_parse_hart_cmds.exit.i, %490, %483, %475, %472, %461, %428, %416, %405, %394, %384, %.critedge.i.i.i, %377, %370, %365, %360, %331, %314, %297, %292, %276, %268, %258, %250, %241, %236, %222, %194 + %537 = add i32 %.6.i, %191 + br label %540 -540: ; preds = %188 - %541 = icmp eq i32 %.6120.i, 1 - br i1 %541, label %542, label %dissect_pass_through.exit +538: ; preds = %188 + %539 = icmp eq i32 %.6120.i, 1 + br i1 %539, label %540, label %dissect_pass_through.exit -542: ; preds = %540, %.thread184.i - %.8187.i = phi i32 [ %539, %.thread184.i ], [ %.6.i, %540 ] - %543 = load i32, ptr @hf_hartip_pt_checksum, align 4 - %544 = tail call ptr @proto_tree_add_checksum(ptr noundef %86, ptr noundef %0, i32 noundef %.8187.i, i32 noundef %543, i32 noundef -1, ptr noundef null, ptr noundef null, i32 noundef 0, i32 noundef 0, i32 noundef 0) +540: ; preds = %538, %.thread184.i + %.8187.i = phi i32 [ %537, %.thread184.i ], [ %.6.i, %538 ] + %541 = load i32, ptr @hf_hartip_pt_checksum, align 4 + %542 = tail call ptr @proto_tree_add_checksum(ptr noundef %86, ptr noundef %0, i32 noundef %.8187.i, i32 noundef %541, i32 noundef -1, ptr noundef null, ptr noundef null, i32 noundef 0, i32 noundef 0, i32 noundef 0) br label %dissect_pass_through.exit -dissect_pass_through.exit: ; preds = %117, %125, %177, %179, %540, %542 - %545 = add i32 %3, %11 - br label %550 +dissect_pass_through.exit: ; preds = %117, %125, %177, %179, %538, %540 + %543 = add i32 %3, %11 + br label %548 -546: ; preds = %92 - %547 = load i32, ptr @hf_hartip_data, align 4 - %548 = tail call ptr @proto_tree_add_item(ptr noundef %86, i32 noundef %547, ptr noundef %0, i32 noundef %79, i32 noundef %84, i32 noundef 0) - %549 = add i32 %3, %11 - br label %550 +544: ; preds = %92 + %545 = load i32, ptr @hf_hartip_data, align 4 + %546 = tail call ptr @proto_tree_add_item(ptr noundef %86, i32 noundef %545, ptr noundef %0, i32 noundef %79, i32 noundef %84, i32 noundef 0) + %547 = add i32 %3, %11 + br label %548 -550: ; preds = %87, %546, %dissect_pass_through.exit, %111, %105, %dissect_session_init.exit, %81 - %.0 = phi i32 [ %82, %81 ], [ %91, %87 ], [ %549, %546 ], [ %104, %dissect_session_init.exit ], [ %110, %105 ], [ %116, %111 ], [ %545, %dissect_pass_through.exit ] +548: ; preds = %87, %544, %dissect_pass_through.exit, %111, %105, %dissect_session_init.exit, %81 + %.0 = phi i32 [ %82, %81 ], [ %91, %87 ], [ %547, %544 ], [ %104, %dissect_session_init.exit ], [ %110, %105 ], [ %116, %111 ], [ %543, %dissect_pass_through.exit ] ret i32 %.0 } diff --git a/bench/wireshark/optimized/packet-isis-lsp.ll b/bench/wireshark/optimized/packet-isis-lsp.ll index 371da2d3ae5..9f5a62512f5 100644 --- a/bench/wireshark/optimized/packet-isis-lsp.ll +++ b/bench/wireshark/optimized/packet-isis-lsp.ll @@ -2622,8 +2622,8 @@ define internal void @dissect_isis_lsp_clv_mt_cap(ptr noundef %0, ptr noundef %1 br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %.loopexit - %.06996 = phi i32 [ %148, %.loopexit ], [ %14, %.lr.ph.preheader ] - %.07095 = phi i32 [ %147, %.loopexit ], [ %15, %.lr.ph.preheader ] + %.06996 = phi i32 [ %145, %.loopexit ], [ %14, %.lr.ph.preheader ] + %.07095 = phi i32 [ %144, %.loopexit ], [ %15, %.lr.ph.preheader ] %16 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %.06996) %17 = add i32 %.06996, 1 %18 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %17) @@ -2639,11 +2639,11 @@ define internal void @dissect_isis_lsp_clv_mt_cap(ptr noundef %0, ptr noundef %1 br label %.loopexit87 25: ; preds = %.lr.ph - switch i8 %16, label %141 [ + switch i8 %16, label %138 [ i8 1, label %26 - i8 2, label %85 - i8 3, label %91 - i8 4, label %116 + i8 2, label %82 + i8 3, label %88 + i8 4, label %113 ] 26: ; preds = %25 @@ -2688,174 +2688,172 @@ define internal void @dissect_isis_lsp_clv_mt_cap(ptr noundef %0, ptr noundef %1 %56 = add nsw i32 %21, -19 %57 = shl nuw nsw i32 %51, 3 %.not.i = icmp eq i32 %56, %57 - br i1 %.not.i, label %.preheader.i, label %61 + br i1 %.not.i, label %.preheader.i, label %58 .preheader.i: ; preds = %54 - %58 = icmp ne i32 %56, 0 - %59 = icmp ne i8 %32, 0 - %60 = select i1 %58, i1 %59, i1 false - br i1 %60, label %.lr.ph.i, label %._crit_edge.i + %.not = icmp eq i32 %56, 0 + br i1 %.not, label %._crit_edge.i, label %.lr.ph.i -61: ; preds = %54 - %62 = tail call ptr (ptr, ptr, ptr, ptr, i32, i32, ptr, ...) @proto_tree_add_expert_format(ptr noundef %35, ptr noundef %1, ptr noundef nonnull @ei_isis_lsp_short_clv, ptr noundef %0, i32 noundef %55, i32 noundef 0, ptr noundef nonnull @.str.889) +58: ; preds = %54 + %59 = tail call ptr (ptr, ptr, ptr, ptr, i32, i32, ptr, ...) @proto_tree_add_expert_format(ptr noundef %35, ptr noundef %1, ptr noundef nonnull @ei_isis_lsp_short_clv, ptr noundef %0, i32 noundef %55, i32 noundef 0, ptr noundef nonnull @.str.889) br label %.loopexit -.lr.ph.i: ; preds = %.preheader.i, %66 - %.087.i = phi i8 [ %77, %66 ], [ %32, %.preheader.i ] - %.07586.i = phi i32 [ %75, %66 ], [ %55, %.preheader.i ] - %.07685.i = phi i32 [ %76, %66 ], [ %56, %.preheader.i ] - %63 = icmp samesign ult i32 %.07685.i, 8 - br i1 %63, label %64, label %66 +.lr.ph.i: ; preds = %.preheader.i, %63 + %.087.i = phi i8 [ %74, %63 ], [ %32, %.preheader.i ] + %.07586.i = phi i32 [ %72, %63 ], [ %55, %.preheader.i ] + %.07685.i = phi i32 [ %73, %63 ], [ %56, %.preheader.i ] + %60 = icmp samesign ult i32 %.07685.i, 8 + br i1 %60, label %61, label %63 -64: ; preds = %.lr.ph.i - %65 = tail call ptr (ptr, ptr, ptr, ptr, i32, i32, ptr, ...) @proto_tree_add_expert_format(ptr noundef %35, ptr noundef %1, ptr noundef nonnull @ei_isis_lsp_short_clv, ptr noundef %0, i32 noundef %20, i32 noundef -1, ptr noundef nonnull @.str.890, i32 noundef %.07685.i, i32 noundef 8) +61: ; preds = %.lr.ph.i + %62 = tail call ptr (ptr, ptr, ptr, ptr, i32, i32, ptr, ...) @proto_tree_add_expert_format(ptr noundef %35, ptr noundef %1, ptr noundef nonnull @ei_isis_lsp_short_clv, ptr noundef %0, i32 noundef %20, i32 noundef -1, ptr noundef nonnull @.str.890, i32 noundef %.07685.i, i32 noundef 8) br label %.loopexit -66: ; preds = %.lr.ph.i +63: ; preds = %.lr.ph.i tail call void @proto_tree_add_bitmask_list(ptr noundef %35, ptr noundef %0, i32 noundef %.07586.i, i32 noundef 1, ptr noundef nonnull @dissect_isis_lsp_clv_mt_cap_spb_instance.lsp_cap_spb_instance_vlanid_tuple, i32 noundef 0) - %67 = add i32 %.07586.i, 1 - %68 = load i32, ptr @hf_isis_lsp_mt_cap_spb_instance_vlanid_tuple_ect, align 4 - %69 = tail call ptr @proto_tree_add_item(ptr noundef %35, i32 noundef %68, ptr noundef %0, i32 noundef %67, i32 noundef 4, i32 noundef 0) - %70 = add i32 %.07586.i, 5 - %71 = load i32, ptr @hf_isis_lsp_mt_cap_spb_instance_vlanid_tuple_base_vid, align 4 - %72 = tail call ptr @proto_tree_add_item(ptr noundef %35, i32 noundef %71, ptr noundef %0, i32 noundef %70, i32 noundef 3, i32 noundef 0) - %73 = load i32, ptr @hf_isis_lsp_mt_cap_spb_instance_vlanid_tuple_spvid, align 4 - %74 = tail call ptr @proto_tree_add_item(ptr noundef %35, i32 noundef %73, ptr noundef %0, i32 noundef %70, i32 noundef 3, i32 noundef 0) - %75 = add i32 %.07586.i, 8 - %76 = add nsw i32 %.07685.i, -8 - %77 = add i8 %.087.i, -1 - %78 = icmp ne i32 %76, 0 - %79 = icmp ne i8 %77, 0 - %80 = select i1 %78, i1 %79, i1 false - br i1 %80, label %.lr.ph.i, label %._crit_edge.i, !llvm.loop !17 - -._crit_edge.i: ; preds = %66, %.preheader.i - %.0.lcssa84.i = phi i8 [ %32, %.preheader.i ], [ %77, %66 ] - %.076.lcssa.i = phi i32 [ %56, %.preheader.i ], [ %76, %66 ] + %64 = add i32 %.07586.i, 1 + %65 = load i32, ptr @hf_isis_lsp_mt_cap_spb_instance_vlanid_tuple_ect, align 4 + %66 = tail call ptr @proto_tree_add_item(ptr noundef %35, i32 noundef %65, ptr noundef %0, i32 noundef %64, i32 noundef 4, i32 noundef 0) + %67 = add i32 %.07586.i, 5 + %68 = load i32, ptr @hf_isis_lsp_mt_cap_spb_instance_vlanid_tuple_base_vid, align 4 + %69 = tail call ptr @proto_tree_add_item(ptr noundef %35, i32 noundef %68, ptr noundef %0, i32 noundef %67, i32 noundef 3, i32 noundef 0) + %70 = load i32, ptr @hf_isis_lsp_mt_cap_spb_instance_vlanid_tuple_spvid, align 4 + %71 = tail call ptr @proto_tree_add_item(ptr noundef %35, i32 noundef %70, ptr noundef %0, i32 noundef %67, i32 noundef 3, i32 noundef 0) + %72 = add i32 %.07586.i, 8 + %73 = add nsw i32 %.07685.i, -8 + %74 = add i8 %.087.i, -1 + %75 = icmp ne i32 %73, 0 + %76 = icmp ne i8 %74, 0 + %77 = select i1 %75, i1 %76, i1 false + br i1 %77, label %.lr.ph.i, label %._crit_edge.i, !llvm.loop !17 + +._crit_edge.i: ; preds = %63, %.preheader.i + %.0.lcssa84.i = phi i8 [ %32, %.preheader.i ], [ %74, %63 ] + %.076.lcssa.i = phi i32 [ 0, %.preheader.i ], [ %73, %63 ] %.not80.i = icmp eq i8 %.0.lcssa84.i, 0 - br i1 %.not80.i, label %.loopexit, label %81 + br i1 %.not80.i, label %.loopexit, label %78 -81: ; preds = %._crit_edge.i - %82 = zext i8 %.0.lcssa84.i to i32 - %83 = shl nuw nsw i32 %82, 3 - %84 = tail call ptr (ptr, ptr, ptr, ptr, i32, i32, ptr, ...) @proto_tree_add_expert_format(ptr noundef %35, ptr noundef %1, ptr noundef nonnull @ei_isis_lsp_short_clv, ptr noundef %0, i32 noundef %20, i32 noundef -1, ptr noundef nonnull @.str.891, i32 noundef %.076.lcssa.i, i32 noundef %83) +78: ; preds = %._crit_edge.i + %79 = zext i8 %.0.lcssa84.i to i32 + %80 = shl nuw nsw i32 %79, 3 + %81 = tail call ptr (ptr, ptr, ptr, ptr, i32, i32, ptr, ...) @proto_tree_add_expert_format(ptr noundef %35, ptr noundef %1, ptr noundef nonnull @ei_isis_lsp_short_clv, ptr noundef %0, i32 noundef %20, i32 noundef -1, ptr noundef nonnull @.str.891, i32 noundef %.076.lcssa.i, i32 noundef %80) br label %.loopexit -85: ; preds = %25 - %86 = load i32, ptr @hf_isis_lsp_mt_cap_spb_opaque_algorithm, align 4 - %87 = tail call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %86, ptr noundef %0, i32 noundef %20, i32 noundef 4, i32 noundef 0) - %88 = add i32 %.06996, 6 - %89 = load i32, ptr @hf_isis_lsp_mt_cap_spb_opaque_information, align 4 - %90 = tail call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %89, ptr noundef %0, i32 noundef %88, i32 noundef -1, i32 noundef 0) +82: ; preds = %25 + %83 = load i32, ptr @hf_isis_lsp_mt_cap_spb_opaque_algorithm, align 4 + %84 = tail call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %83, ptr noundef %0, i32 noundef %20, i32 noundef 4, i32 noundef 0) + %85 = add i32 %.06996, 6 + %86 = load i32, ptr @hf_isis_lsp_mt_cap_spb_opaque_information, align 4 + %87 = tail call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %86, ptr noundef %0, i32 noundef %85, i32 noundef -1, i32 noundef 0) br label %.loopexit -91: ; preds = %25 - %92 = icmp ult i8 %18, 8 - br i1 %92, label %93, label %95 +88: ; preds = %25 + %89 = icmp ult i8 %18, 8 + br i1 %89, label %90, label %92 -93: ; preds = %91 - %94 = tail call ptr (ptr, ptr, ptr, ptr, i32, i32, ptr, ...) @proto_tree_add_expert_format(ptr noundef %2, ptr noundef %1, ptr noundef nonnull @ei_isis_lsp_short_clv, ptr noundef %0, i32 noundef %20, i32 noundef -1, ptr noundef nonnull @.str.892, i32 noundef range(i32 0, 256) %21, i32 noundef 8) +90: ; preds = %88 + %91 = tail call ptr (ptr, ptr, ptr, ptr, i32, i32, ptr, ...) @proto_tree_add_expert_format(ptr noundef %2, ptr noundef %1, ptr noundef nonnull @ei_isis_lsp_short_clv, ptr noundef %0, i32 noundef %20, i32 noundef -1, ptr noundef nonnull @.str.892, i32 noundef range(i32 0, 256) %21, i32 noundef 8) br label %.loopexit -95: ; preds = %91 - %96 = add nuw nsw i32 %21, 2 - %97 = load i32, ptr @ett_isis_lsp_clv_mt_cap_spbm_service_identifier, align 4 - %98 = tail call ptr (ptr, ptr, i32, i32, i32, ptr, ptr, ...) @proto_tree_add_subtree_format(ptr noundef %2, ptr noundef %0, i32 noundef %.06996, i32 noundef %96, i32 noundef %97, ptr noundef null, ptr noundef nonnull @.str.893, i32 noundef 3, i32 noundef range(i32 0, 256) %21) - %99 = load i32, ptr @hf_isis_lsp_mt_cap_spbm_service_identifier_b_mac, align 4 - %100 = tail call ptr @proto_tree_add_item(ptr noundef %98, i32 noundef %99, ptr noundef %0, i32 noundef %20, i32 noundef 6, i32 noundef 0) - %101 = load i32, ptr @hf_isis_lsp_mt_cap_spbm_service_identifier_base_vid, align 4 - %102 = add i32 %.06996, 8 - %103 = tail call ptr @proto_tree_add_item(ptr noundef %98, i32 noundef %101, ptr noundef %0, i32 noundef %102, i32 noundef 2, i32 noundef 0) - %104 = add nsw i32 %21, -8 - %.not42.i = icmp eq i32 %104, 0 +92: ; preds = %88 + %93 = add nuw nsw i32 %21, 2 + %94 = load i32, ptr @ett_isis_lsp_clv_mt_cap_spbm_service_identifier, align 4 + %95 = tail call ptr (ptr, ptr, i32, i32, i32, ptr, ptr, ...) @proto_tree_add_subtree_format(ptr noundef %2, ptr noundef %0, i32 noundef %.06996, i32 noundef %93, i32 noundef %94, ptr noundef null, ptr noundef nonnull @.str.893, i32 noundef 3, i32 noundef range(i32 0, 256) %21) + %96 = load i32, ptr @hf_isis_lsp_mt_cap_spbm_service_identifier_b_mac, align 4 + %97 = tail call ptr @proto_tree_add_item(ptr noundef %95, i32 noundef %96, ptr noundef %0, i32 noundef %20, i32 noundef 6, i32 noundef 0) + %98 = load i32, ptr @hf_isis_lsp_mt_cap_spbm_service_identifier_base_vid, align 4 + %99 = add i32 %.06996, 8 + %100 = tail call ptr @proto_tree_add_item(ptr noundef %95, i32 noundef %98, ptr noundef %0, i32 noundef %99, i32 noundef 2, i32 noundef 0) + %101 = add nsw i32 %21, -8 + %.not42.i = icmp eq i32 %101, 0 br i1 %.not42.i, label %.loopexit, label %.lr.ph.preheader.i -.lr.ph.preheader.i: ; preds = %95 - %105 = add i32 %.06996, 10 - %106 = and i32 %21, 3 +.lr.ph.preheader.i: ; preds = %92 + %102 = add i32 %.06996, 10 + %103 = and i32 %21, 3 br label %.lr.ph.i79 -.lr.ph.i79: ; preds = %110, %.lr.ph.preheader.i - %.044.i = phi i32 [ %114, %110 ], [ %105, %.lr.ph.preheader.i ] - %.03843.i = phi i32 [ %115, %110 ], [ %104, %.lr.ph.preheader.i ] - %107 = icmp samesign ult i32 %.03843.i, 4 - br i1 %107, label %108, label %110 +.lr.ph.i79: ; preds = %107, %.lr.ph.preheader.i + %.044.i = phi i32 [ %111, %107 ], [ %102, %.lr.ph.preheader.i ] + %.03843.i = phi i32 [ %112, %107 ], [ %101, %.lr.ph.preheader.i ] + %104 = icmp samesign ult i32 %.03843.i, 4 + br i1 %104, label %105, label %107 -108: ; preds = %.lr.ph.i79 - %109 = tail call ptr (ptr, ptr, ptr, ptr, i32, i32, ptr, ...) @proto_tree_add_expert_format(ptr noundef %98, ptr noundef %1, ptr noundef nonnull @ei_isis_lsp_short_clv, ptr noundef %0, i32 noundef %20, i32 noundef -1, ptr noundef nonnull @.str.894, i32 noundef %106, i32 noundef 4) +105: ; preds = %.lr.ph.i79 + %106 = tail call ptr (ptr, ptr, ptr, ptr, i32, i32, ptr, ...) @proto_tree_add_expert_format(ptr noundef %95, ptr noundef %1, ptr noundef nonnull @ei_isis_lsp_short_clv, ptr noundef %0, i32 noundef %20, i32 noundef -1, ptr noundef nonnull @.str.894, i32 noundef %103, i32 noundef 4) br label %.loopexit -110: ; preds = %.lr.ph.i79 - tail call void @proto_tree_add_bitmask_list(ptr noundef %98, ptr noundef %0, i32 noundef %.044.i, i32 noundef 1, ptr noundef nonnull @dissect_isis_lsp_clv_mt_cap_spbm_service_identifier.lsp_cap_spbm_service_identifier, i32 noundef 0) - %111 = add i32 %.044.i, 1 - %112 = load i32, ptr @hf_isis_lsp_mt_cap_spbm_service_identifier_i_sid, align 4 - %113 = tail call ptr @proto_tree_add_item(ptr noundef %98, i32 noundef %112, ptr noundef %0, i32 noundef %111, i32 noundef 3, i32 noundef 0) - %114 = add i32 %.044.i, 4 - %115 = add nsw i32 %.03843.i, -4 - %.not.i80 = icmp eq i32 %115, 0 +107: ; preds = %.lr.ph.i79 + tail call void @proto_tree_add_bitmask_list(ptr noundef %95, ptr noundef %0, i32 noundef %.044.i, i32 noundef 1, ptr noundef nonnull @dissect_isis_lsp_clv_mt_cap_spbm_service_identifier.lsp_cap_spbm_service_identifier, i32 noundef 0) + %108 = add i32 %.044.i, 1 + %109 = load i32, ptr @hf_isis_lsp_mt_cap_spbm_service_identifier_i_sid, align 4 + %110 = tail call ptr @proto_tree_add_item(ptr noundef %95, i32 noundef %109, ptr noundef %0, i32 noundef %108, i32 noundef 3, i32 noundef 0) + %111 = add i32 %.044.i, 4 + %112 = add nsw i32 %.03843.i, -4 + %.not.i80 = icmp eq i32 %112, 0 br i1 %.not.i80, label %.loopexit, label %.lr.ph.i79, !llvm.loop !18 -116: ; preds = %25 - %117 = icmp ult i8 %18, 2 - br i1 %117, label %118, label %120 +113: ; preds = %25 + %114 = icmp ult i8 %18, 2 + br i1 %114, label %115, label %117 -118: ; preds = %116 - %119 = tail call ptr (ptr, ptr, ptr, ptr, i32, i32, ptr, ...) @proto_tree_add_expert_format(ptr noundef %2, ptr noundef %1, ptr noundef nonnull @ei_isis_lsp_short_clv, ptr noundef %0, i32 noundef %20, i32 noundef -1, ptr noundef nonnull @.str.895, i32 noundef range(i32 0, 256) %21, i32 noundef 2) +115: ; preds = %113 + %116 = tail call ptr (ptr, ptr, ptr, ptr, i32, i32, ptr, ...) @proto_tree_add_expert_format(ptr noundef %2, ptr noundef %1, ptr noundef nonnull @ei_isis_lsp_short_clv, ptr noundef %0, i32 noundef %20, i32 noundef -1, ptr noundef nonnull @.str.895, i32 noundef range(i32 0, 256) %21, i32 noundef 2) br label %.loopexit -120: ; preds = %116 - %121 = add nuw nsw i32 %21, 2 - %122 = load i32, ptr @ett_isis_lsp_clv_mt_cap_spbv_mac_address, align 4 - %123 = tail call ptr (ptr, ptr, i32, i32, i32, ptr, ptr, ...) @proto_tree_add_subtree_format(ptr noundef %2, ptr noundef %0, i32 noundef %.06996, i32 noundef %121, i32 noundef %122, ptr noundef null, ptr noundef nonnull @.str.896, i32 noundef 4, i32 noundef range(i32 0, 256) %21) - %124 = load i32, ptr @hf_isis_lsp_spb_reserved, align 4 - %125 = tail call ptr @proto_tree_add_item(ptr noundef %123, i32 noundef %124, ptr noundef %0, i32 noundef %20, i32 noundef 2, i32 noundef 0) - %126 = load i32, ptr @hf_isis_lsp_spb_sr_bit, align 4 - %127 = tail call ptr @proto_tree_add_item(ptr noundef %123, i32 noundef %126, ptr noundef %0, i32 noundef %20, i32 noundef 2, i32 noundef 0) - %128 = load i32, ptr @hf_isis_lsp_spb_spvid, align 4 - %129 = tail call ptr @proto_tree_add_item(ptr noundef %123, i32 noundef %128, ptr noundef %0, i32 noundef %20, i32 noundef 2, i32 noundef 0) - %130 = add nsw i32 %21, -2 - %.not43.i = icmp eq i32 %130, 0 +117: ; preds = %113 + %118 = add nuw nsw i32 %21, 2 + %119 = load i32, ptr @ett_isis_lsp_clv_mt_cap_spbv_mac_address, align 4 + %120 = tail call ptr (ptr, ptr, i32, i32, i32, ptr, ptr, ...) @proto_tree_add_subtree_format(ptr noundef %2, ptr noundef %0, i32 noundef %.06996, i32 noundef %118, i32 noundef %119, ptr noundef null, ptr noundef nonnull @.str.896, i32 noundef 4, i32 noundef range(i32 0, 256) %21) + %121 = load i32, ptr @hf_isis_lsp_spb_reserved, align 4 + %122 = tail call ptr @proto_tree_add_item(ptr noundef %120, i32 noundef %121, ptr noundef %0, i32 noundef %20, i32 noundef 2, i32 noundef 0) + %123 = load i32, ptr @hf_isis_lsp_spb_sr_bit, align 4 + %124 = tail call ptr @proto_tree_add_item(ptr noundef %120, i32 noundef %123, ptr noundef %0, i32 noundef %20, i32 noundef 2, i32 noundef 0) + %125 = load i32, ptr @hf_isis_lsp_spb_spvid, align 4 + %126 = tail call ptr @proto_tree_add_item(ptr noundef %120, i32 noundef %125, ptr noundef %0, i32 noundef %20, i32 noundef 2, i32 noundef 0) + %127 = add nsw i32 %21, -2 + %.not43.i = icmp eq i32 %127, 0 br i1 %.not43.i, label %.loopexit, label %.lr.ph.preheader.i81 -.lr.ph.preheader.i81: ; preds = %120 - %131 = add i32 %.06996, 4 +.lr.ph.preheader.i81: ; preds = %117 + %128 = add i32 %.06996, 4 br label %.lr.ph.i82 -.lr.ph.i82: ; preds = %135, %.lr.ph.preheader.i81 - %.045.i = phi i32 [ %139, %135 ], [ %131, %.lr.ph.preheader.i81 ] - %.04044.i = phi i32 [ %140, %135 ], [ %130, %.lr.ph.preheader.i81 ] - %132 = icmp samesign ult i32 %.04044.i, 7 - br i1 %132, label %133, label %135 +.lr.ph.i82: ; preds = %132, %.lr.ph.preheader.i81 + %.045.i = phi i32 [ %136, %132 ], [ %128, %.lr.ph.preheader.i81 ] + %.04044.i = phi i32 [ %137, %132 ], [ %127, %.lr.ph.preheader.i81 ] + %129 = icmp samesign ult i32 %.04044.i, 7 + br i1 %129, label %130, label %132 -133: ; preds = %.lr.ph.i82 - %134 = tail call ptr (ptr, ptr, ptr, ptr, i32, i32, ptr, ...) @proto_tree_add_expert_format(ptr noundef %123, ptr noundef %1, ptr noundef nonnull @ei_isis_lsp_short_clv, ptr noundef %0, i32 noundef %20, i32 noundef -1, ptr noundef nonnull @.str.897, i32 noundef %.04044.i, i32 noundef 7) +130: ; preds = %.lr.ph.i82 + %131 = tail call ptr (ptr, ptr, ptr, ptr, i32, i32, ptr, ...) @proto_tree_add_expert_format(ptr noundef %120, ptr noundef %1, ptr noundef nonnull @ei_isis_lsp_short_clv, ptr noundef %0, i32 noundef %20, i32 noundef -1, ptr noundef nonnull @.str.897, i32 noundef %.04044.i, i32 noundef 7) br label %.loopexit -135: ; preds = %.lr.ph.i82 - tail call void @proto_tree_add_bitmask_list(ptr noundef %123, ptr noundef %0, i32 noundef %.045.i, i32 noundef 1, ptr noundef nonnull @dissect_isis_lsp_clv_mt_cap_spbv_mac_address.lsp_spb_short_mac_address, i32 noundef 0) - %136 = add i32 %.045.i, 1 - %137 = load i32, ptr @hf_isis_lsp_spb_short_mac_address, align 4 - %138 = tail call ptr @proto_tree_add_item(ptr noundef %123, i32 noundef %137, ptr noundef %0, i32 noundef %136, i32 noundef 6, i32 noundef 0) - %139 = add i32 %.045.i, 7 - %140 = add nsw i32 %.04044.i, -7 - %.not.i83 = icmp eq i32 %140, 0 +132: ; preds = %.lr.ph.i82 + tail call void @proto_tree_add_bitmask_list(ptr noundef %120, ptr noundef %0, i32 noundef %.045.i, i32 noundef 1, ptr noundef nonnull @dissect_isis_lsp_clv_mt_cap_spbv_mac_address.lsp_spb_short_mac_address, i32 noundef 0) + %133 = add i32 %.045.i, 1 + %134 = load i32, ptr @hf_isis_lsp_spb_short_mac_address, align 4 + %135 = tail call ptr @proto_tree_add_item(ptr noundef %120, i32 noundef %134, ptr noundef %0, i32 noundef %133, i32 noundef 6, i32 noundef 0) + %136 = add i32 %.045.i, 7 + %137 = add nsw i32 %.04044.i, -7 + %.not.i83 = icmp eq i32 %137, 0 br i1 %.not.i83, label %.loopexit, label %.lr.ph.i82, !llvm.loop !19 -141: ; preds = %25 - %142 = tail call fastcc i32 @dissect_isis_trill_clv(ptr noundef %0, ptr noundef %1, ptr noundef %2, i32 noundef %20, i32 noundef %23, i32 noundef %21) - %143 = icmp eq i32 %142, -1 - br i1 %143, label %144, label %.loopexit +138: ; preds = %25 + %139 = tail call fastcc i32 @dissect_isis_trill_clv(ptr noundef %0, ptr noundef %1, ptr noundef %2, i32 noundef %20, i32 noundef %23, i32 noundef %21) + %140 = icmp eq i32 %139, -1 + br i1 %140, label %141, label %.loopexit -144: ; preds = %141 - %145 = add nuw nsw i32 %21, 2 - %146 = tail call ptr (ptr, ptr, ptr, ptr, i32, i32, ptr, ...) @proto_tree_add_expert_format(ptr noundef %2, ptr noundef %1, ptr noundef nonnull @ei_isis_lsp_subtlv, ptr noundef %0, i32 noundef %.06996, i32 noundef %145, ptr noundef nonnull @.str.885, i32 noundef %23, i32 noundef %21) +141: ; preds = %138 + %142 = add nuw nsw i32 %21, 2 + %143 = tail call ptr (ptr, ptr, ptr, ptr, i32, i32, ptr, ...) @proto_tree_add_expert_format(ptr noundef %2, ptr noundef %1, ptr noundef nonnull @ei_isis_lsp_subtlv, ptr noundef %0, i32 noundef %.06996, i32 noundef %142, ptr noundef nonnull @.str.885, i32 noundef %23, i32 noundef %21) br label %.loopexit -.loopexit: ; preds = %135, %110, %141, %144, %85, %28, %61, %64, %._crit_edge.i, %81, %93, %95, %108, %118, %120, %133 - %147 = sub nsw i32 %19, %21 - %148 = add i32 %20, %21 - %149 = icmp sgt i32 %147, 1 - br i1 %149, label %.lr.ph, label %.loopexit87 +.loopexit: ; preds = %132, %107, %138, %141, %82, %28, %58, %61, %._crit_edge.i, %78, %90, %92, %105, %115, %117, %130 + %144 = sub nsw i32 %19, %21 + %145 = add i32 %20, %21 + %146 = icmp sgt i32 %144, 1 + br i1 %146, label %.lr.ph, label %.loopexit87 .loopexit87: ; preds = %.loopexit, %8, %.thread, %6 ret void diff --git a/bench/wireshark/optimized/sharkd_session.ll b/bench/wireshark/optimized/sharkd_session.ll index c2e4fdfa386..5893d48d6a0 100644 --- a/bench/wireshark/optimized/sharkd_session.ll +++ b/bench/wireshark/optimized/sharkd_session.ll @@ -1125,19 +1125,15 @@ json_find_attr.exit203.thread.i.i: ; preds = %json_find_attr.exit %252 = add i64 %.1291.i.i, 1 %253 = and i64 %252, 576460752303423487 %.not153.i.i = icmp eq i64 %253, 101 - br i1 %.not153.i.i, label %json_prep.exit.i, label %.preheader.i.i, !llvm.loop !18 - -json_prep.exit.i: ; preds = %251 - %.not.i82.i = icmp eq i32 %40, 0 - br i1 %.not.i82.i, label %json_find_attr.exit.thread.i, label %.lr.ph.i84.i + br i1 %.not153.i.i, label %.lr.ph.i84.i, label %.preheader.i.i, !llvm.loop !18 254: ; preds = %.lr.ph.i84.i %indvars.iv.next.i86.i = add nuw nsw i64 %indvars.iv.i85.i, 2 %255 = icmp samesign ult i64 %indvars.iv.next.i86.i, %42 br i1 %255, label %.lr.ph.i84.i, label %json_find_attr.exit.thread.i, !llvm.loop !10 -.lr.ph.i84.i: ; preds = %json_prep.exit.i, %254 - %indvars.iv.i85.i = phi i64 [ %indvars.iv.next.i86.i, %254 ], [ 0, %json_prep.exit.i ] +.lr.ph.i84.i: ; preds = %251, %254 + %indvars.iv.i85.i = phi i64 [ %indvars.iv.next.i86.i, %254 ], [ 0, %251 ] %256 = getelementptr %struct.jsmntok_t, ptr %39, i64 %indvars.iv.i85.i %257 = getelementptr inbounds nuw i8, ptr %256, i64 4 %258 = load i32, ptr %257, align 4 @@ -1155,7 +1151,7 @@ json_find_attr.exit.i: ; preds = %.lr.ph.i84.i %.not.i = icmp eq ptr %265, null br i1 %.not.i, label %json_find_attr.exit.thread.i, label %267 -json_find_attr.exit.thread.i: ; preds = %254, %json_find_attr.exit.i, %json_prep.exit.i +json_find_attr.exit.thread.i: ; preds = %254, %json_find_attr.exit.i %266 = load i32, ptr @rpcid, align 4 call void (i32, i32, ptr, ptr, ...) @sharkd_json_error(i32 noundef %266, i32 noundef -32601, ptr poison, ptr noundef nonnull @.str.12) br label %sharkd_session_process.exit From 5994f8c3c5170bc5144b47c95886b63ac8117110 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 22 Oct 2025 13:28:31 +0000 Subject: [PATCH 3/3] pre-commit: Remap --- bench/abc/optimized/giaMf.ll | 296 ++++++------ bench/abc/optimized/giaSatEdge.ll | 62 +-- bench/abc/optimized/ifDec16.ll | 258 +++++----- bench/actix-rs/optimized/q4aavw6wh20so0r.ll | 4 +- bench/assimp/optimized/FBXBinaryTokenizer.ll | 4 +- bench/cmake/optimized/cmakemain.ll | 18 +- .../optimized/2g9ijtjos2xwh9zs.ll | 80 ++-- bench/duckdb/optimized/format.ll | 64 +-- bench/duckdb/optimized/ub_duckdb_common.ll | 56 +-- .../ub_duckdb_core_functions_string.ll | 58 +-- .../optimized/efmso49nxcvtljggmhiyzv2jj.ll | 428 ++++++++--------- .../optimized/2jegnuo3b7uy1oojff5kt8alk.ll | 60 +-- bench/gromacs/optimized/splineutil.ll | 30 +- bench/hermes/optimized/APInt.ll | 16 +- bench/image-rs/optimized/5ez7udly19o3uj1p.ll | 166 +++---- .../libigl/optimized/min_quad_with_fixed.2.ll | 326 ++++++------- bench/llvm/optimized/APInt.ll | 100 ++-- bench/llvm/optimized/Attributes.ll | 110 ++--- bench/llvm/optimized/IfConversion.ll | 4 +- bench/llvm/optimized/OptionRSTEmitter.ll | 20 +- .../llvm/optimized/X86TargetTransformInfo.ll | 156 +++---- bench/llvm/optimized/YAMLParser.ll | 98 ++-- bench/meshlab/optimized/arap.ll | 304 ++++++------ .../optimized/cube_style_precomputation.ll | 354 +++++++------- .../optimized/TriangleMeshDeformation.ll | 326 ++++++------- bench/opencv/optimized/eltwise_layer.ll | 32 +- bench/opencv/optimized/freak.ll | 66 +-- bench/opencv/optimized/model.ll | 202 ++++---- bench/openssl/optimized/v3_ncons.ll | 30 +- .../optimized/9kt0ps7am1ervf5eo1u53zq54.ll | 164 +++---- .../optimized/axiz6cr4x03l4ii2cmor4g5gv.ll | 22 +- .../capletcoterminalmaxhomogeneity.ll | 8 +- bench/quantlib/optimized/garch.ll | 2 +- .../optimized/multiproductmultistep.ll | 136 +++--- .../optimized/em94uyxz0wp9gccfab963606p.ll | 60 +-- bench/rocksdb/optimized/experimental.ll | 90 ++-- .../optimized/272al911l1jdbqblbb9whzfue.ll | 378 +++++++-------- .../optimized/4a0sesc153a050u04do7llz00.ll | 12 +- .../optimized/5k764i8zv3uxwobi5mx2hjj5g.ll | 34 +- .../optimized/6gcc2sei0t3mzzmp63ppi5tol.ll | 76 +-- .../optimized/4hdqg9y9agw1ekve.ll | 26 +- .../optimized/4mz36mxu8r0g7zqk.ll | 404 ++++++++-------- .../optimized/55e7aotywrgrb7st.ll | 8 +- .../optimized/6909c4r4kqhl58g4t63amtvkr.ll | 432 ++++++++--------- .../optimized/cd91bxdrbjyy0s7hgoreg00sd.ll | 440 +++++++++--------- .../optimized/apu427tbl3luqie4ryqrtwt7n.ll | 438 ++++++++--------- .../wasmtime-rs/optimized/3wy7qx4e8fg0rwt0.ll | 422 ++++++++--------- .../wasmtime-rs/optimized/5079e95b7v1wxko.ll | 406 ++++++++-------- bench/wireshark/optimized/packet-hartip.ll | 218 ++++----- bench/wireshark/optimized/packet-isis-lsp.ll | 258 +++++----- 50 files changed, 3881 insertions(+), 3881 deletions(-) diff --git a/bench/abc/optimized/giaMf.ll b/bench/abc/optimized/giaMf.ll index beb38301605..4568025e3e3 100644 --- a/bench/abc/optimized/giaMf.ll +++ b/bench/abc/optimized/giaMf.ll @@ -1234,105 +1234,105 @@ define internal fastcc noalias noundef ptr @Vec_WrdUniqifyHash(ptr noundef captu br i1 %20, label %.lr.ph57.i.i, label %Vec_IntUniqueCount.exit.i .lr.ph57.i.i: ; preds = %1 - %21 = getelementptr i8, ptr %0, i64 8 - %.val46.i.i = load ptr, ptr %21, align 8, !tbaa !26 + %20 = getelementptr i8, ptr %0, i64 8 + %.val46.i.i = load ptr, ptr %20, align 8, !tbaa !26 %wide.trip.count.i.i = zext nneg i32 %3 to i64 - br label %22 + br label %21 -22: ; preds = %Vec_IntUniqueLookup.exit.i.i, %.lr.ph57.i.i +21: ; preds = %Vec_IntUniqueLookup.exit.i.i, %.lr.ph57.i.i %indvars.iv.i.i = phi i64 [ 0, %.lr.ph57.i.i ], [ %indvars.iv.next.i.i, %Vec_IntUniqueLookup.exit.i.i ] %.056.i.i = phi i32 [ 0, %.lr.ph57.i.i ], [ %.1.i.i, %Vec_IntUniqueLookup.exit.i.i ] %.idx.i.i = shl nuw nsw i64 %indvars.iv.i.i, 3 - %23 = getelementptr inbounds nuw i8, ptr %.val46.i.i, i64 %.idx.i.i - br label %24 + %22 = getelementptr inbounds nuw i8, ptr %.val46.i.i, i64 %.idx.i.i + br label %23 -24: ; preds = %24, %22 +23: ; preds = %23, %21 %indvars.iv.i.i.i = phi i64 [ 0, %22 ], [ %indvars.iv.next.i.i.i, %24 ] - %.01011.i.i.i = phi i32 [ 0, %22 ], [ %43, %24 ] + %.01011.i.i.i = phi i32 [ 0, %22 ], [ %42, %24 ] %.idx.i.i.i = shl nuw nsw i64 %indvars.iv.i.i.i, 3 - %25 = getelementptr inbounds nuw i8, ptr @Vec_IntUniqueHashKey.s_BigPrimes2, i64 %.idx.i.i.i - %26 = load i32, ptr %25, align 8, !tbaa !12 - %27 = getelementptr inbounds nuw i8, ptr %23, i64 %indvars.iv.i.i.i - %28 = load i8, ptr %27, align 1, !tbaa !50 - %29 = zext i8 %28 to i32 - %30 = and i32 %29, 15 - %31 = zext nneg i32 %30 to i64 - %32 = getelementptr inbounds nuw i32, ptr @Vec_IntUniqueHashKey.s_BigPrimes, i64 %31 - %33 = load i32, ptr %32, align 4, !tbaa !12 - %34 = mul i32 %33, %26 - %35 = getelementptr inbounds nuw i8, ptr %25, i64 4 - %36 = load i32, ptr %35, align 4, !tbaa !12 - %37 = lshr i32 %29, 4 - %38 = zext nneg i32 %37 to i64 - %39 = getelementptr inbounds nuw i32, ptr @Vec_IntUniqueHashKey.s_BigPrimes, i64 %38 - %40 = load i32, ptr %39, align 4, !tbaa !12 - %41 = mul i32 %40, %36 - %42 = add i32 %34, %.01011.i.i.i - %43 = add i32 %42, %41 + %24 = getelementptr inbounds nuw i8, ptr @Vec_IntUniqueHashKey.s_BigPrimes2, i64 %.idx.i.i.i + %25 = load i32, ptr %24, align 8, !tbaa !12 + %26 = getelementptr inbounds nuw i8, ptr %22, i64 %indvars.iv.i.i.i + %27 = load i8, ptr %26, align 1, !tbaa !50 + %28 = zext i8 %27 to i32 + %29 = and i32 %28, 15 + %30 = zext nneg i32 %29 to i64 + %31 = getelementptr inbounds nuw i32, ptr @Vec_IntUniqueHashKey.s_BigPrimes, i64 %30 + %32 = load i32, ptr %31, align 4, !tbaa !12 + %33 = mul i32 %32, %25 + %34 = getelementptr inbounds nuw i8, ptr %24, i64 4 + %35 = load i32, ptr %34, align 4, !tbaa !12 + %36 = lshr i32 %28, 4 + %37 = zext nneg i32 %36 to i64 + %38 = getelementptr inbounds nuw i32, ptr @Vec_IntUniqueHashKey.s_BigPrimes, i64 %37 + %39 = load i32, ptr %38, align 4, !tbaa !12 + %40 = mul i32 %39, %35 + %41 = add i32 %33, %.01011.i.i.i + %42 = add i32 %41, %40 %indvars.iv.next.i.i.i = add nuw nsw i64 %indvars.iv.i.i.i, 1 %exitcond.not.i.i.i = icmp eq i64 %indvars.iv.next.i.i.i, 8 - br i1 %exitcond.not.i.i.i, label %Vec_IntUniqueHashKey.exit.i.i, label %24, !llvm.loop !51 + br i1 %exitcond.not.i.i.i, label %Vec_IntUniqueHashKey.exit.i.i, label %23, !llvm.loop !51 -Vec_IntUniqueHashKey.exit.i.i: ; preds = %24 - %44 = and i32 %43, %12 - %45 = zext nneg i32 %44 to i64 - %46 = getelementptr inbounds nuw i32, ptr %15, i64 %45 - %47 = load i32, ptr %46, align 4, !tbaa !12 - %.not1.i.i.i = icmp eq i32 %47, -1 +Vec_IntUniqueHashKey.exit.i.i: ; preds = %23 + %43 = and i32 %42, %12 + %44 = zext nneg i32 %43 to i64 + %45 = getelementptr inbounds nuw i32, ptr %15, i64 %44 + %46 = load i32, ptr %45, align 4, !tbaa !12 + %.not1.i.i.i = icmp eq i32 %46, -1 br i1 %.not1.i.i.i, label %Vec_IntUniqueLookup.exit.thread.i.i, label %.lr.ph.i.preheader.i.i .lr.ph.i.preheader.i.i: ; preds = %Vec_IntUniqueHashKey.exit.i.i - %48 = shl nsw i32 %47, 1 - %49 = sext i32 %48 to i64 - %50 = getelementptr inbounds i32, ptr %.val46.i.i, i64 %49 - %bcmp.i53.i.i = tail call i32 @bcmp(ptr noundef nonnull readonly dereferenceable(8) %23, ptr noundef nonnull readonly dereferenceable(8) %50, i64 8) + %47 = shl nsw i32 %46, 1 + %48 = sext i32 %47 to i64 + %49 = getelementptr inbounds i32, ptr %.val46.i.i, i64 %48 + %bcmp.i53.i.i = tail call i32 @bcmp(ptr noundef nonnull readonly dereferenceable(8) %22, ptr noundef nonnull readonly dereferenceable(8) %49, i64 8) %.not14.i54.i.i = icmp eq i32 %bcmp.i53.i.i, 0 br i1 %.not14.i54.i.i, label %Vec_IntUniqueLookup.exit.i.i, label %.lr.ph.i.i .lr.ph.i.i.i: ; preds = %.lr.ph.i.i - %51 = shl nsw i32 %57, 1 - %52 = sext i32 %51 to i64 - %53 = getelementptr inbounds i32, ptr %.val46.i.i, i64 %52 - %bcmp.i.i.i = tail call i32 @bcmp(ptr noundef nonnull readonly dereferenceable(8) %23, ptr noundef nonnull readonly dereferenceable(8) %53, i64 8) + %50 = shl nsw i32 %56, 1 + %51 = sext i32 %50 to i64 + %52 = getelementptr inbounds i32, ptr %.val46.i.i, i64 %51 + %bcmp.i.i.i = tail call i32 @bcmp(ptr noundef nonnull readonly dereferenceable(8) %22, ptr noundef nonnull readonly dereferenceable(8) %52, i64 8) %.not14.i.i.i = icmp eq i32 %bcmp.i.i.i, 0 br i1 %.not14.i.i.i, label %Vec_IntUniqueLookup.exit.i.i, label %.lr.ph.i.i, !llvm.loop !52 .lr.ph.i.i: ; preds = %.lr.ph.i.preheader.i.i, %.lr.ph.i.i.i - %54 = phi i32 [ %57, %.lr.ph.i.i.i ], [ %47, %.lr.ph.i.preheader.i.i ] - %55 = sext i32 %54 to i64 - %56 = getelementptr inbounds i32, ptr %16, i64 %55 - %57 = load i32, ptr %56, align 4, !tbaa !12 - %.not.i.i.i = icmp eq i32 %57, -1 + %53 = phi i32 [ %56, %.lr.ph.i.i.i ], [ %46, %.lr.ph.i.preheader.i.i ] + %54 = sext i32 %53 to i64 + %55 = getelementptr inbounds i32, ptr %16, i64 %54 + %56 = load i32, ptr %55, align 4, !tbaa !12 + %.not.i.i.i = icmp eq i32 %56, -1 br i1 %.not.i.i.i, label %Vec_IntUniqueLookup.exit.thread.i.i.loopexit, label %.lr.ph.i.i.i, !llvm.loop !52 Vec_IntUniqueLookup.exit.thread.i.i.loopexit: ; preds = %.lr.ph.i.i - %58 = getelementptr inbounds i32, ptr %16, i64 %55 + %57 = getelementptr inbounds i32, ptr %16, i64 %54 br label %Vec_IntUniqueLookup.exit.thread.i.i Vec_IntUniqueLookup.exit.thread.i.i: ; preds = %Vec_IntUniqueLookup.exit.thread.i.i.loopexit, %Vec_IntUniqueHashKey.exit.i.i - %.013.lcssa.i49.i.i = phi ptr [ %46, %Vec_IntUniqueHashKey.exit.i.i ], [ %58, %Vec_IntUniqueLookup.exit.thread.i.i.loopexit ] - %59 = trunc nuw nsw i64 %indvars.iv.i.i to i32 - store i32 %59, ptr %.013.lcssa.i49.i.i, align 4, !tbaa !12 - %60 = add nsw i32 %.056.i.i, 1 + %.013.lcssa.i49.i.i = phi ptr [ %45, %Vec_IntUniqueHashKey.exit.i.i ], [ %57, %Vec_IntUniqueLookup.exit.thread.i.i.loopexit ] + %58 = trunc nuw nsw i64 %indvars.iv.i.i to i32 + store i32 %58, ptr %.013.lcssa.i49.i.i, align 4, !tbaa !12 + %59 = add nsw i32 %.056.i.i, 1 br label %Vec_IntUniqueLookup.exit.i.i Vec_IntUniqueLookup.exit.i.i: ; preds = %.lr.ph.i.i.i, %Vec_IntUniqueLookup.exit.thread.i.i, %.lr.ph.i.preheader.i.i - %61 = phi i32 [ %59, %Vec_IntUniqueLookup.exit.thread.i.i ], [ %47, %.lr.ph.i.preheader.i.i ], [ %57, %.lr.ph.i.i.i ] - %.1.i.i = phi i32 [ %60, %Vec_IntUniqueLookup.exit.thread.i.i ], [ %.056.i.i, %.lr.ph.i.preheader.i.i ], [ %.056.i.i, %.lr.ph.i.i.i ] - %62 = getelementptr inbounds nuw i32, ptr %19, i64 %indvars.iv.i.i - store i32 %61, ptr %62, align 4, !tbaa !12 + %60 = phi i32 [ %58, %Vec_IntUniqueLookup.exit.thread.i.i ], [ %46, %.lr.ph.i.preheader.i.i ], [ %56, %.lr.ph.i.i.i ] + %.1.i.i = phi i32 [ %59, %Vec_IntUniqueLookup.exit.thread.i.i ], [ %.056.i.i, %.lr.ph.i.preheader.i.i ], [ %.056.i.i, %.lr.ph.i.i.i ] + %61 = getelementptr inbounds nuw i32, ptr %19, i64 %indvars.iv.i.i + store i32 %60, ptr %61, align 4, !tbaa !12 %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 %Vec_IntUniqueCount.exit.loopexit.i, label %22, !llvm.loop !53 + br i1 %exitcond.not.i.i, label %Vec_IntUniqueCount.exit.loopexit.i, label %21, !llvm.loop !53 Vec_IntUniqueCount.exit.loopexit.i: ; preds = %Vec_IntUniqueLookup.exit.i.i - %63 = shl nsw i32 %.1.i.i, 1 + %62 = shl nsw i32 %.1.i.i, 1 br label %Vec_IntUniqueCount.exit.i Vec_IntUniqueCount.exit.i: ; preds = %Vec_IntUniqueCount.exit.loopexit.i, %1 - %.0.lcssa.i.i = phi i32 [ 0, %1 ], [ %63, %Vec_IntUniqueCount.exit.loopexit.i ] + %.0.lcssa.i.i = phi i32 [ 0, %1 ], [ %62, %Vec_IntUniqueCount.exit.loopexit.i ] tail call void @free(ptr noundef %15) #29 - tail call void @free(ptr noundef %16) #29 + tail call void @free(ptr noundef %16) #27 %64 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #27 %65 = getelementptr inbounds nuw i8, ptr %64, i64 4 store i32 %3, ptr %65, align 4, !tbaa !27 @@ -1343,136 +1343,136 @@ Vec_IntUniqueCount.exit.i: ; preds = %Vec_IntUniqueCount. %68 = add i32 %.0.lcssa.i.i, -1 %or.cond.i.i = icmp ult i32 %68, 15 %spec.store.select.i.i = select i1 %or.cond.i.i, i32 16, i32 %.0.lcssa.i.i - %69 = getelementptr inbounds nuw i8, ptr %67, i64 4 - store i32 0, ptr %69, align 4, !tbaa !27 + %68 = getelementptr inbounds nuw i8, ptr %67, i64 4 + store i32 0, ptr %68, align 4, !tbaa !27 store i32 %spec.store.select.i.i, ptr %67, align 8, !tbaa !23 %.not.i.i = icmp eq i32 %spec.store.select.i.i, 0 - br i1 %.not.i.i, label %Vec_IntAlloc.exit.i, label %70 + br i1 %.not.i.i, label %Vec_IntAlloc.exit.i, label %69 -70: ; preds = %Vec_IntUniqueCount.exit.i - %71 = sext i32 %spec.store.select.i.i to i64 - %72 = shl nsw i64 %71, 2 - %73 = tail call noalias ptr @malloc(i64 noundef %72) #27 +69: ; preds = %Vec_IntUniqueCount.exit.i + %70 = sext i32 %spec.store.select.i.i to i64 + %71 = shl nsw i64 %70, 2 + %72 = tail call noalias ptr @malloc(i64 noundef %71) #27 br label %Vec_IntAlloc.exit.i -Vec_IntAlloc.exit.i: ; preds = %70, %Vec_IntUniqueCount.exit.i - %74 = phi ptr [ %73, %70 ], [ null, %Vec_IntUniqueCount.exit.i ] - %75 = getelementptr inbounds nuw i8, ptr %67, i64 8 - store ptr %74, ptr %75, align 8, !tbaa !26 +Vec_IntAlloc.exit.i: ; preds = %69, %Vec_IntUniqueCount.exit.i + %73 = phi ptr [ %72, %70 ], [ null, %Vec_IntUniqueCount.exit.i ] + %74 = getelementptr inbounds nuw i8, ptr %67, i64 8 + store ptr %73, ptr %74, align 8, !tbaa !26 br i1 %20, label %.lr.ph.i, label %.critedge.i .lr.ph.i: ; preds = %Vec_IntAlloc.exit.i - %76 = getelementptr i8, ptr %0, i64 8 - br label %77 + %75 = getelementptr i8, ptr %0, i64 8 + br label %76 -77: ; preds = %Vec_IntPushArray.exit.i, %.lr.ph.i +76: ; preds = %Vec_IntPushArray.exit.i, %.lr.ph.i %.val36.i = phi i32 [ %3, %.lr.ph.i ], [ %.val.i, %Vec_IntPushArray.exit.i ] - %.pre.i.i32.i = phi ptr [ %74, %.lr.ph.i ], [ %.pre.i.i33.i, %Vec_IntPushArray.exit.i ] + %.pre.i.i32.i = phi ptr [ %73, %.lr.ph.i ], [ %.pre.i.i33.i, %Vec_IntPushArray.exit.i ] %indvars.iv.i = phi i64 [ 0, %.lr.ph.i ], [ %indvars.iv.next.i, %Vec_IntPushArray.exit.i ] - %78 = getelementptr inbounds nuw i32, ptr %19, i64 %indvars.iv.i - %79 = load i32, ptr %78, align 4, !tbaa !12 - %80 = sext i32 %79 to i64 - %81 = icmp sgt i64 %indvars.iv.i, %80 - br i1 %81, label %Vec_IntPushArray.exit.i, label %82 + %77 = getelementptr inbounds nuw i32, ptr %19, i64 %indvars.iv.i + %78 = load i32, ptr %77, align 4, !tbaa !12 + %79 = sext i32 %78 to i64 + %80 = icmp sgt i64 %indvars.iv.i, %79 + br i1 %80, label %Vec_IntPushArray.exit.i, label %81 -82: ; preds = %77 - %.val14.i = load ptr, ptr %76, align 8, !tbaa !26 +81: ; preds = %76 + %.val14.i = load ptr, ptr %75, align 8, !tbaa !26 %.idx.i = shl nuw nsw i64 %indvars.iv.i, 3 - %83 = getelementptr inbounds nuw i8, ptr %.val14.i, i64 %.idx.i - br label %84 + %82 = getelementptr inbounds nuw i8, ptr %.val14.i, i64 %.idx.i + br label %83 -84: ; preds = %Vec_IntPush.exit.i.i, %82 - %85 = phi ptr [ %.pre.i.i32.i, %82 ], [ %.pre.i.i35.i, %Vec_IntPush.exit.i.i ] - %86 = phi i1 [ true, %82 ], [ false, %Vec_IntPush.exit.i.i ] +83: ; preds = %Vec_IntPush.exit.i.i, %81 + %84 = phi ptr [ %.pre.i.i32.i, %82 ], [ %.pre.i.i35.i, %Vec_IntPush.exit.i.i ] + %85 = phi i1 [ true, %82 ], [ false, %Vec_IntPush.exit.i.i ] %indvars.iv.i16.i = phi i64 [ 0, %82 ], [ 1, %Vec_IntPush.exit.i.i ] - %87 = getelementptr inbounds nuw i32, ptr %83, i64 %indvars.iv.i16.i - %88 = load i32, ptr %87, align 4, !tbaa !12 - %89 = load i32, ptr %69, align 4, !tbaa !27 - %90 = load i32, ptr %67, align 8, !tbaa !23 - %91 = icmp eq i32 %89, %90 - br i1 %91, label %92, label %Vec_IntPush.exit.i.i - -92: ; preds = %84 - %93 = icmp slt i32 %89, 16 - br i1 %93, label %94, label %99 - -94: ; preds = %92 - %.not9.i.i.i.i = icmp eq ptr %85, null - br i1 %.not9.i.i.i.i, label %97, label %95 - -95: ; preds = %94 - %96 = tail call dereferenceable_or_null(64) ptr @realloc(ptr noundef nonnull %85, i64 noundef 64) #30 + %86 = getelementptr inbounds nuw i32, ptr %82, i64 %indvars.iv.i16.i + %87 = load i32, ptr %86, align 4, !tbaa !12 + %88 = load i32, ptr %68, align 4, !tbaa !27 + %89 = load i32, ptr %67, align 8, !tbaa !23 + %90 = icmp eq i32 %88, %89 + br i1 %90, label %91, label %Vec_IntPush.exit.i.i + +91: ; preds = %83 + %92 = icmp slt i32 %88, 16 + br i1 %92, label %93, label %98 + +93: ; preds = %91 + %.not9.i.i.i.i = icmp eq ptr %84, null + br i1 %.not9.i.i.i.i, label %96, label %94 + +94: ; preds = %93 + %95 = tail call dereferenceable_or_null(64) ptr @realloc(ptr noundef nonnull %84, i64 noundef 64) #30 br label %Vec_IntPush.exit.i.sink.split.i -97: ; preds = %94 - %98 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #27 +96: ; preds = %93 + %97 = tail call noalias dereferenceable_or_null(64) ptr @malloc(i64 noundef 64) #27 br label %Vec_IntPush.exit.i.sink.split.i -99: ; preds = %92 - %100 = shl nuw nsw i32 %89, 1 - %.not9.i9.i.i.i = icmp eq ptr %85, null - %101 = zext nneg i32 %100 to i64 - %102 = shl nuw nsw i64 %101, 2 - br i1 %.not9.i9.i.i.i, label %105, label %103 - -103: ; preds = %99 - %104 = tail call ptr @realloc(ptr noundef nonnull %85, i64 noundef %102) #30 +98: ; preds = %91 + %99 = shl nuw nsw i32 %88, 1 + %.not9.i9.i.i.i = icmp eq ptr %84, null + %100 = zext nneg i32 %99 to i64 + %101 = shl nuw nsw i64 %100, 2 + br i1 %.not9.i9.i.i.i, label %104, label %102 + +102: ; preds = %98 + %103 = tail call ptr @realloc(ptr noundef nonnull %84, i64 noundef %101) #30 br label %Vec_IntPush.exit.i.sink.split.i -105: ; preds = %99 - %106 = tail call noalias ptr @malloc(i64 noundef %102) #27 +104: ; preds = %98 + %105 = tail call noalias ptr @malloc(i64 noundef %101) #27 br label %Vec_IntPush.exit.i.sink.split.i -Vec_IntPush.exit.i.sink.split.i: ; preds = %105, %103, %97, %95 - %.sink48.i = phi ptr [ %96, %95 ], [ %98, %97 ], [ %104, %103 ], [ %106, %105 ] - %.sink.i = phi i32 [ 16, %95 ], [ 16, %97 ], [ %100, %103 ], [ %100, %105 ] - store ptr %.sink48.i, ptr %75, align 8, !tbaa !26 +Vec_IntPush.exit.i.sink.split.i: ; preds = %104, %102, %96, %94 + %.sink50.i = phi ptr [ %95, %95 ], [ %97, %97 ], [ %103, %103 ], [ %105, %105 ] + %.sink.i = phi i32 [ 16, %95 ], [ 16, %97 ], [ %99, %103 ], [ %99, %105 ] + store ptr %.sink50.i, ptr %74, align 8, !tbaa !26 store i32 %.sink.i, ptr %67, align 8, !tbaa !23 br label %Vec_IntPush.exit.i.i -Vec_IntPush.exit.i.i: ; preds = %Vec_IntPush.exit.i.sink.split.i, %84 - %.pre.i.i35.i = phi ptr [ %85, %84 ], [ %.sink48.i, %Vec_IntPush.exit.i.sink.split.i ] - %107 = add nsw i32 %89, 1 - store i32 %107, ptr %69, align 4, !tbaa !27 - %108 = sext i32 %89 to i64 - %109 = getelementptr inbounds i32, ptr %.pre.i.i35.i, i64 %108 - store i32 %88, ptr %109, align 4, !tbaa !12 - br i1 %86, label %84, label %Vec_IntPushArray.exit.loopexit.i, !llvm.loop !54 +Vec_IntPush.exit.i.i: ; preds = %Vec_IntPush.exit.i.sink.split.i, %83 + %.pre.i.i35.i = phi ptr [ %84, %84 ], [ %.sink50.i, %Vec_IntPush.exit.i.sink.split.i ] + %106 = add nsw i32 %88, 1 + store i32 %106, ptr %68, align 4, !tbaa !27 + %107 = sext i32 %88 to i64 + %108 = getelementptr inbounds i32, ptr %.pre.i.i35.i, i64 %107 + store i32 %87, ptr %108, align 4, !tbaa !12 + br i1 %85, label %83, label %Vec_IntPushArray.exit.loopexit.i, !llvm.loop !54 Vec_IntPushArray.exit.loopexit.i: ; preds = %Vec_IntPush.exit.i.i %.val.pre.i = load i32, ptr %65, align 4, !tbaa !27 br label %Vec_IntPushArray.exit.i -Vec_IntPushArray.exit.i: ; preds = %Vec_IntPushArray.exit.loopexit.i, %77 +Vec_IntPushArray.exit.i: ; preds = %Vec_IntPushArray.exit.loopexit.i, %76 %.val.i = phi i32 [ %.val.pre.i, %Vec_IntPushArray.exit.loopexit.i ], [ %.val36.i, %77 ] %.pre.i.i33.i = phi ptr [ %.pre.i.i35.i, %Vec_IntPushArray.exit.loopexit.i ], [ %.pre.i.i32.i, %77 ] %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 - %110 = sext i32 %.val.i to i64 - %111 = icmp slt i64 %indvars.iv.next.i, %110 - br i1 %111, label %77, label %.critedge.i, !llvm.loop !55 + %109 = sext i32 %.val.i to i64 + %110 = icmp slt i64 %indvars.iv.next.i, %109 + br i1 %110, label %76, label %.critedge.i, !llvm.loop !55 .critedge.i: ; preds = %Vec_IntPushArray.exit.i, %Vec_IntAlloc.exit.i %.not.i17.i = icmp eq ptr %19, null - br i1 %.not.i17.i, label %Vec_IntUniqifyHash.exit, label %112 + br i1 %.not.i17.i, label %Vec_IntUniqifyHash.exit, label %111 -112: ; preds = %.critedge.i +111: ; preds = %.critedge.i tail call void @free(ptr noundef nonnull %19) #29 br label %Vec_IntUniqifyHash.exit -Vec_IntUniqifyHash.exit: ; preds = %.critedge.i, %112 +Vec_IntUniqifyHash.exit: ; preds = %.critedge.i, %111 tail call void @free(ptr noundef nonnull %64) #29 - %113 = load i32, ptr %2, align 4, !tbaa !27 - %114 = sdiv i32 %113, 2 - store i32 %114, ptr %2, align 4, !tbaa !27 - %115 = load i32, ptr %0, align 8, !tbaa !23 - %116 = sdiv i32 %115, 2 - store i32 %116, ptr %0, align 8, !tbaa !23 - %117 = load i32, ptr %69, align 4, !tbaa !27 - %118 = sdiv i32 %117, 2 - store i32 %118, ptr %69, align 4, !tbaa !27 - %119 = load i32, ptr %67, align 8, !tbaa !23 - %120 = sdiv i32 %119, 2 - store i32 %120, ptr %67, align 8, !tbaa !23 + %112 = load i32, ptr %2, align 4, !tbaa !27 + %113 = sdiv i32 %112, 2 + store i32 %113, ptr %2, align 4, !tbaa !27 + %114 = load i32, ptr %0, align 8, !tbaa !23 + %115 = sdiv i32 %114, 2 + store i32 %115, ptr %0, align 8, !tbaa !23 + %116 = load i32, ptr %68, align 4, !tbaa !27 + %117 = sdiv i32 %116, 2 + store i32 %117, ptr %68, align 4, !tbaa !27 + %118 = load i32, ptr %67, align 8, !tbaa !23 + %119 = sdiv i32 %118, 2 + store i32 %119, ptr %67, align 8, !tbaa !23 ret ptr %67 } diff --git a/bench/abc/optimized/giaSatEdge.ll b/bench/abc/optimized/giaSatEdge.ll index a6f994c8e99..dbe60741db9 100644 --- a/bench/abc/optimized/giaSatEdge.ll +++ b/bench/abc/optimized/giaSatEdge.ll @@ -802,7 +802,7 @@ declare i32 @Gia_ManLutLevel(ptr noundef, ptr noundef) local_unnamed_addr #1 ; Function Attrs: nounwind uwtable define noundef ptr @Seg_ManAlloc(ptr noundef %0, i32 noundef %1) local_unnamed_addr #0 { Abc_Base2Log.exit: - %2 = tail call noalias dereferenceable_or_null(120) ptr @calloc(i64 noundef 1, i64 noundef 120) #19 + %4 = tail call noalias dereferenceable_or_null(120) ptr @calloc(i64 noundef 1, i64 noundef 120) #16 %3 = tail call noalias dereferenceable_or_null(16) ptr @malloc(i64 noundef 16) #16 %4 = getelementptr inbounds nuw i8, ptr %3, i64 4 store i32 0, ptr %4, align 4, !tbaa !3 @@ -843,17 +843,17 @@ Abc_Base2Log.exit: store ptr %25, ptr %2, align 8, !tbaa !61 tail call void @sat_solver_setnvars(ptr noundef %25, i32 noundef %16) #17 %26 = tail call i32 @sat_solver_nvars(ptr noundef %25) #17 - %27 = getelementptr inbounds nuw i8, ptr %2, i64 20 - store i32 %26, ptr %27, align 4, !tbaa !62 + %24 = getelementptr inbounds nuw i8, ptr %2, i64 20 + store i32 %26, ptr %24, align 4, !tbaa !62 %28 = load i32, ptr %25, align 8, !tbaa !63 - %29 = getelementptr inbounds nuw i8, ptr %25, i64 96 - store i32 %28, ptr %29, align 8, !tbaa !75 + %26 = getelementptr inbounds nuw i8, ptr %25, i64 96 + store i32 %28, ptr %26, align 8, !tbaa !75 %30 = getelementptr inbounds nuw i8, ptr %25, i64 8 %31 = load i32, ptr %30, align 8, !tbaa !76 %32 = getelementptr inbounds nuw i8, ptr %25, i64 100 store i32 %31, ptr %32, align 4, !tbaa !77 - %33 = getelementptr inbounds nuw i8, ptr %25, i64 16 - %34 = load i32, ptr %33, align 8, !tbaa !32 + %29 = getelementptr inbounds nuw i8, ptr %25, i64 16 + %34 = load i32, ptr %29, align 8, !tbaa !32 %35 = getelementptr inbounds nuw i8, ptr %25, i64 32 store i32 %34, ptr %35, align 8, !tbaa !32 %36 = getelementptr inbounds nuw i8, ptr %25, i64 20 @@ -865,22 +865,22 @@ Abc_Base2Log.exit: %41 = getelementptr inbounds nuw i8, ptr %25, i64 48 %42 = load i32, ptr %41, align 8, !tbaa !78 %43 = shl i32 %40, %42 - %44 = getelementptr inbounds nuw i8, ptr %25, i64 64 - %45 = load ptr, ptr %44, align 8, !tbaa !79 + %38 = getelementptr inbounds nuw i8, ptr %25, i64 64 + %39 = load ptr, ptr %38, align 8, !tbaa !79 %46 = sext i32 %40 to i64 %47 = getelementptr inbounds ptr, ptr %45, i64 %46 %48 = load ptr, ptr %47, align 8, !tbaa !80 - %.val.i.i.i = load i32, ptr %48, align 4, !tbaa !32 - %49 = or i32 %.val.i.i.i, %43 + %42 = load i32, ptr %48, align 4, !tbaa !32 + %49 = or i32 %42, %43 %50 = getelementptr inbounds nuw i8, ptr %25, i64 24 store i32 %49, ptr %50, align 8, !tbaa !32 - %51 = getelementptr inbounds nuw i8, ptr %25, i64 44 - %52 = load i32, ptr %51, align 4, !tbaa !32 - %53 = shl i32 %52, %42 - %54 = sext i32 %52 to i64 + %46 = getelementptr inbounds nuw i8, ptr %25, i64 44 + %47 = load i32, ptr %46, align 4, !tbaa !32 + %53 = shl i32 %47, %42 + %54 = sext i32 %47 to i64 %55 = getelementptr inbounds ptr, ptr %45, i64 %54 - %56 = load ptr, ptr %55, align 8, !tbaa !80 - %.val.i8.i.i = load i32, ptr %56, align 4, !tbaa !32 + %.val.i.i.i = load ptr, ptr %55, align 8, !tbaa !80 + %.val.i8.i.i = load i32, ptr %.val.i.i.i, align 4, !tbaa !32 %57 = or i32 %.val.i8.i.i, %53 %58 = getelementptr inbounds nuw i8, ptr %25, i64 28 store i32 %57, ptr %58, align 4, !tbaa !32 @@ -889,7 +889,7 @@ Abc_Base2Log.exit: %.not.i = icmp eq ptr %60, null br i1 %.not.i, label %sat_solver_bookmark.exit, label %61 -61: ; preds = %Abc_Base2Log.exit +61:; preds = %Abc_Base2Log.exit %62 = getelementptr inbounds nuw i8, ptr %25, i64 120 %63 = load i64, ptr %62, align 8, !tbaa !82 %64 = getelementptr inbounds nuw i8, ptr %25, i64 128 @@ -902,20 +902,20 @@ Abc_Base2Log.exit: br label %sat_solver_bookmark.exit sat_solver_bookmark.exit: ; preds = %Abc_Base2Log.exit, %61 - %69 = getelementptr inbounds nuw i8, ptr %2, i64 48 - store ptr %0, ptr %69, align 8, !tbaa !47 + %71 = getelementptr inbounds nuw i8, ptr %2, i64 48 + store ptr %0, ptr %71, align 8, !tbaa !47 %calloc = tail call dereferenceable_or_null(16) ptr @calloc(i64 1, i64 16) - %70 = getelementptr inbounds nuw i8, ptr %2, i64 80 - store ptr %calloc, ptr %70, align 8, !tbaa !44 - %calloc29 = tail call dereferenceable_or_null(16) ptr @calloc(i64 1, i64 16) - %71 = getelementptr inbounds nuw i8, ptr %2, i64 88 - store ptr %calloc29, ptr %71, align 8, !tbaa !48 - %calloc30 = tail call dereferenceable_or_null(16) ptr @calloc(i64 1, i64 16) - %72 = getelementptr inbounds nuw i8, ptr %2, i64 96 - store ptr %calloc30, ptr %72, align 8, !tbaa !85 - %73 = tail call i32 @Seg_ManCountIntLevels(ptr noundef nonnull %2, i32 noundef %26) - %74 = load ptr, ptr %2, align 8, !tbaa !61 - tail call void @sat_solver_setnvars(ptr noundef %74, i32 noundef %73) #17 + %72 = getelementptr inbounds nuw i8, ptr %2, i64 80 + store ptr %calloc, ptr %72, align 8, !tbaa !44 + %calloc31 = tail call dereferenceable_or_null(16) ptr @calloc(i64 1, i64 16) + %73 = getelementptr inbounds nuw i8, ptr %2, i64 88 + store ptr %calloc31, ptr %73, align 8, !tbaa !48 + %calloc32 = tail call dereferenceable_or_null(16) ptr @calloc(i64 1, i64 16) + %74 = getelementptr inbounds nuw i8, ptr %2, i64 96 + store ptr %calloc32, ptr %74, align 8, !tbaa !85 + %75 = tail call i32 @Seg_ManCountIntLevels(ptr noundef nonnull %2, i32 noundef %26) + %76 = load ptr, ptr %2, align 8, !tbaa !61 + tail call void @sat_solver_setnvars(ptr noundef %76, i32 noundef %75) #17 tail call void @Gia_ManFillValue(ptr noundef %0) #17 ret ptr %2 } diff --git a/bench/abc/optimized/ifDec16.ll b/bench/abc/optimized/ifDec16.ll index 2bb37649bef..55eeb6b502c 100644 --- a/bench/abc/optimized/ifDec16.ll +++ b/bench/abc/optimized/ifDec16.ll @@ -2101,28 +2101,28 @@ define i32 @If_CluSemiCanonicize(ptr noundef captures(none) %0, i32 noundef %1, br label %.preheader.us.i .preheader.us.i: ; preds = %._crit_edge.us.i, %.preheader.lr.ph.i - %.045.us.i = phi ptr [ %46, %._crit_edge.us.i ], [ %0, %.preheader.lr.ph.i ] - %.03644.us.i = phi i32 [ %47, %._crit_edge.us.i ], [ 0, %.preheader.lr.ph.i ] + %.045.us.i = phi ptr [ %47, %._crit_edge.us.i ], [ %0, %.preheader.lr.ph.i ] + %.03644.us.i = phi i32 [ %48, %._crit_edge.us.i ], [ 0, %.preheader.lr.ph.i ] %invariant.gep.i = getelementptr i64, ptr %.045.us.i, i64 %41 - br label %42 + br label %43 -42: ; preds = %42, %.preheader.us.i +43: ; preds = %43, %.preheader.us.i %indvars.iv.i = phi i64 [ 0, %.preheader.us.i ], [ %indvars.iv.next.i, %42 ] - %43 = getelementptr inbounds nuw i64, ptr %.045.us.i, i64 %indvars.iv.i - %44 = load i64, ptr %43, align 8, !tbaa !16 + %44 = getelementptr inbounds nuw i64, ptr %.045.us.i, i64 %indvars.iv.i + %45 = load i64, ptr %44, align 8, !tbaa !16 %gep.i = getelementptr i64, ptr %invariant.gep.i, i64 %indvars.iv.i - %45 = load i64, ptr %gep.i, align 8, !tbaa !16 - store i64 %45, ptr %43, align 8, !tbaa !16 - store i64 %44, ptr %gep.i, align 8, !tbaa !16 + %46 = load i64, ptr %gep.i, align 8, !tbaa !16 + store i64 %46, ptr %44, align 8, !tbaa !16 + store i64 %45, ptr %gep.i, align 8, !tbaa !16 %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.us.i, label %42, !llvm.loop !88 + br i1 %exitcond.not.i, label %._crit_edge.us.i, label %43, !llvm.loop !88 -._crit_edge.us.i: ; preds = %42 - %46 = getelementptr inbounds i64, ptr %.045.us.i, i64 %40 - %47 = add nsw i32 %.03644.us.i, %39 - %48 = icmp slt i32 %47, %10 - br i1 %48, label %.preheader.us.i, label %If_CluChangePhase.exit, !llvm.loop !89 +._crit_edge.us.i: ; preds = %43 + %47 = getelementptr inbounds i64, ptr %.045.us.i, i64 %40 + %48 = add nsw i32 %.03644.us.i, %39 + %49 = icmp slt i32 %48, %10 + br i1 %49, label %.preheader.us.i, label %If_CluChangePhase.exit, !llvm.loop !89 If_CluChangePhase.exit: ; preds = %._crit_edge.us.i, %27, %35, %22, %12 %.167 = phi i32 [ %.066101, %12 ], [ %20, %22 ], [ %20, %35 ], [ %20, %27 ], [ %20, %._crit_edge.us.i ] @@ -2132,18 +2132,18 @@ If_CluChangePhase.exit: ; preds = %._crit_edge.us.i, % .preheader: ; preds = %.lr.ph104, %3 %.066.lcssa145 = phi i32 [ 0, %3 ], [ %.167, %.lr.ph104 ] - %49 = icmp sgt i32 %1, 1 - %50 = icmp slt i32 %1, 7 - %51 = add nsw i32 %1, -6 - %52 = shl nuw i32 1, %51 - %53 = select i1 %50, i32 1, i32 %52 - %54 = icmp slt i32 %53, 1 - %55 = zext nneg i32 %53 to i64 - br i1 %49, label %.lr.ph110.us.preheader, label %If_CluCopy.exit + %50 = icmp sgt i32 %1, 1 + %51 = icmp slt i32 %1, 7 + %52 = add nsw i32 %1, -6 + %53 = shl nuw i32 1, %52 + %54 = select i1 %51, i32 1, i32 %53 + %55 = icmp slt i32 %54, 1 + %56 = zext nneg i32 %54 to i64 + br i1 %50, label %.lr.ph110.us.preheader, label %If_CluCopy.exit .lr.ph110.us.preheader: ; preds = %.preheader - %56 = add nsw i32 %1, -1 - %wide.trip.count132 = zext i32 %56 to i64 + %57 = add nsw i32 %1, -1 + %wide.trip.count132 = zext i32 %57 to i64 br label %.lr.ph110.us .lr.ph110.us: ; preds = %.lr.ph110.us.backedge, %.lr.ph110.us.preheader @@ -2153,139 +2153,139 @@ If_CluChangePhase.exit: ; preds = %._crit_edge.us.i, % %.169106.us = phi ptr [ %0, %.lr.ph110.us.preheader ], [ %.270.us, %.lr.ph110.us.backedge ] %.172105.us = phi ptr [ %4, %.lr.ph110.us.preheader ], [ %.273.us, %.lr.ph110.us.backedge ] %.idx142 = shl nuw nsw i64 %indvars.iv129, 3 - %57 = getelementptr inbounds nuw i8, ptr %5, i64 %.idx142 - %58 = load i32, ptr %57, align 8, !tbaa !6 + %58 = getelementptr inbounds nuw i8, ptr %5, i64 %.idx142 + %59 = load i32, ptr %58, align 8, !tbaa !6 %indvars.iv.next130 = add nuw nsw i64 %indvars.iv129, 1 %.idx143 = shl nuw nsw i64 %indvars.iv.next130, 3 - %59 = getelementptr inbounds nuw i8, ptr %5, i64 %.idx143 - %60 = load i32, ptr %59, align 8, !tbaa !6 - %.not79.us = icmp sgt i32 %58, %60 - br i1 %.not79.us, label %61, label %If_CluSwapAdjacent.exit.us - -61: ; preds = %.lr.ph110.us - %62 = add nsw i32 %.1109.us, 1 - %63 = getelementptr inbounds nuw i32, ptr %2, i64 %indvars.iv129 - %64 = load i32, ptr %63, align 4, !tbaa !6 - %65 = getelementptr inbounds nuw i32, ptr %2, i64 %indvars.iv.next130 - %66 = load i32, ptr %65, align 4, !tbaa !6 - store i32 %66, ptr %63, align 4, !tbaa !6 - store i32 %64, ptr %65, align 4, !tbaa !6 - store i32 %60, ptr %57, align 8, !tbaa !6 - store i32 %58, ptr %59, align 8, !tbaa !6 - %67 = getelementptr inbounds nuw i8, ptr %57, i64 4 - %68 = load i32, ptr %67, align 4, !tbaa !6 - %69 = getelementptr inbounds nuw i8, ptr %59, i64 4 - %70 = load i32, ptr %69, align 4, !tbaa !6 - store i32 %70, ptr %67, align 4, !tbaa !6 - store i32 %68, ptr %69, align 4, !tbaa !6 - %71 = icmp samesign ult i64 %indvars.iv129, 5 - br i1 %71, label %111, label %72 - -72: ; preds = %61 + %60 = getelementptr inbounds nuw i8, ptr %5, i64 %.idx143 + %61 = load i32, ptr %60, align 8, !tbaa !6 + %.not79.us = icmp sgt i32 %59, %61 + br i1 %.not79.us, label %62, label %If_CluSwapAdjacent.exit.us + +62: ; preds = %.lr.ph110.us + %63 = add nsw i32 %.1109.us, 1 + %64 = getelementptr inbounds nuw i32, ptr %2, i64 %indvars.iv129 + %65 = load i32, ptr %64, align 4, !tbaa !6 + %66 = getelementptr inbounds nuw i32, ptr %2, i64 %indvars.iv.next130 + %67 = load i32, ptr %66, align 4, !tbaa !6 + store i32 %67, ptr %64, align 4, !tbaa !6 + store i32 %65, ptr %66, align 4, !tbaa !6 + store i32 %61, ptr %58, align 8, !tbaa !6 + store i32 %59, ptr %60, align 8, !tbaa !6 + %68 = getelementptr inbounds nuw i8, ptr %58, i64 4 + %69 = load i32, ptr %68, align 4, !tbaa !6 + %70 = getelementptr inbounds nuw i8, ptr %60, i64 4 + %71 = load i32, ptr %70, align 4, !tbaa !6 + store i32 %71, ptr %68, align 4, !tbaa !6 + store i32 %69, ptr %70, align 4, !tbaa !6 + %72 = icmp samesign ult i64 %indvars.iv129, 5 + br i1 %72, label %112, label %73 + +73: ; preds = %62 %.not.i81.us = icmp eq i64 %indvars.iv129, 5 - br i1 %.not.i81.us, label %.preheader.i.us, label %73 + br i1 %.not.i81.us, label %.preheader.i.us, label %74 -73: ; preds = %72 - %74 = add nsw i64 %indvars.iv129, -6 - %75 = trunc nsw i64 %74 to i32 - %76 = shl nuw i32 1, %75 - br i1 %54, label %If_CluSwapAdjacent.exit.us, label %.preheader87.lr.ph.i.us +74: ; preds = %73 + %75 = add nsw i64 %indvars.iv129, -6 + %76 = trunc nsw i64 %75 to i32 + %77 = shl nuw i32 1, %76 + br i1 %55, label %If_CluSwapAdjacent.exit.us, label %.preheader87.lr.ph.i.us -.preheader87.lr.ph.i.us: ; preds = %73 - %77 = icmp eq i64 %74, 31 - %78 = shl i32 4, %75 - %79 = sext i32 %78 to i64 - br i1 %77, label %If_CluSwapAdjacent.exit.us, label %.preheader87.us.preheader.i.us +.preheader87.lr.ph.i.us: ; preds = %74 + %78 = icmp eq i64 %75, 31 + %79 = shl i32 4, %76 + %80 = sext i32 %79 to i64 + br i1 %78, label %If_CluSwapAdjacent.exit.us, label %.preheader87.us.preheader.i.us .preheader87.us.preheader.i.us: ; preds = %.preheader87.lr.ph.i.us - %80 = shl i32 3, %75 - %81 = shl i32 2, %75 - %smax.i82.us = tail call i32 @llvm.smax.i32(i32 %76, i32 1) - %82 = sext i32 %81 to i64 - %83 = sext i32 %76 to i64 - %84 = sext i32 %80 to i64 + %81 = shl i32 3, %76 + %82 = shl i32 2, %76 + %smax.i82.us = tail call i32 @llvm.smax.i32(i32 %77, i32 1) + %83 = sext i32 %82 to i64 + %84 = sext i32 %77 to i64 + %85 = sext i32 %81 to i64 %wide.trip.count.i83.us = zext nneg i32 %smax.i82.us to i64 - %85 = shl nuw nsw i64 %wide.trip.count.i83.us, 3 + %86 = shl nuw nsw i64 %wide.trip.count.i83.us, 3 br label %.lr.ph.us.preheader.i.us .lr.ph.us.preheader.i.us: ; preds = %._crit_edge.us.i89.us, %.preheader87.us.preheader.i.us - %.098.us.i.us = phi ptr [ %94, %._crit_edge.us.i89.us ], [ %.172105.us, %.preheader87.us.preheader.i.us ] - %.07797.us.i.us = phi ptr [ %93, %._crit_edge.us.i89.us ], [ %.169106.us, %.preheader87.us.preheader.i.us ] - %.07996.us.i.us = phi i32 [ %95, %._crit_edge.us.i89.us ], [ 0, %.preheader87.us.preheader.i.us ] - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %.098.us.i.us, ptr noundef nonnull align 8 dereferenceable(1) %.07797.us.i.us, i64 %85, i1 false), !tbaa !16 - %invariant.gep.i87.us = getelementptr i64, ptr %.07797.us.i.us, i64 %82 - %invariant.gep177.i.us = getelementptr i64, ptr %.098.us.i.us, i64 %83 + %.098.us.i.us = phi ptr [ %95, %._crit_edge.us.i89.us ], [ %.172105.us, %.preheader87.us.preheader.i.us ] + %.07797.us.i.us = phi ptr [ %94, %._crit_edge.us.i89.us ], [ %.169106.us, %.preheader87.us.preheader.i.us ] + %.07996.us.i.us = phi i32 [ %96, %._crit_edge.us.i89.us ], [ 0, %.preheader87.us.preheader.i.us ] + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %.098.us.i.us, ptr noundef nonnull align 8 dereferenceable(1) %.07797.us.i.us, i64 %86, i1 false), !tbaa !16 + %invariant.gep.i87.us = getelementptr i64, ptr %.07797.us.i.us, i64 %83 + %invariant.gep177.i.us = getelementptr i64, ptr %.098.us.i.us, i64 %84 br label %.lr.ph91.us.i.us .lr.ph91.us.i.us: ; preds = %.lr.ph91.us.i.us, %.lr.ph.us.preheader.i.us %indvars.iv145.i.us = phi i64 [ 0, %.lr.ph.us.preheader.i.us ], [ %indvars.iv.next146.i.us, %.lr.ph91.us.i.us ] %gep.i88.us = getelementptr i64, ptr %invariant.gep.i87.us, i64 %indvars.iv145.i.us - %86 = load i64, ptr %gep.i88.us, align 8, !tbaa !16 + %87 = load i64, ptr %gep.i88.us, align 8, !tbaa !16 %gep178.i.us = getelementptr i64, ptr %invariant.gep177.i.us, i64 %indvars.iv145.i.us - store i64 %86, ptr %gep178.i.us, align 8, !tbaa !16 + store i64 %87, ptr %gep178.i.us, align 8, !tbaa !16 %indvars.iv.next146.i.us = add nuw nsw i64 %indvars.iv145.i.us, 1 %exitcond150.not.i.us = icmp eq i64 %indvars.iv.next146.i.us, %wide.trip.count.i83.us br i1 %exitcond150.not.i.us, label %.preheader85.us.i.us, label %.lr.ph91.us.i.us, !llvm.loop !97 .preheader85.us.i.us: ; preds = %.lr.ph91.us.i.us - %invariant.gep179.i.us = getelementptr i64, ptr %.07797.us.i.us, i64 %83 - %invariant.gep181.i.us = getelementptr i64, ptr %.098.us.i.us, i64 %82 - br label %87 + %invariant.gep179.i.us = getelementptr i64, ptr %.07797.us.i.us, i64 %84 + %invariant.gep181.i.us = getelementptr i64, ptr %.098.us.i.us, i64 %83 + br label %88 -87: ; preds = %87, %.preheader85.us.i.us +88: ; preds = %88, %.preheader85.us.i.us %indvars.iv152.i.us = phi i64 [ 0, %.preheader85.us.i.us ], [ %indvars.iv.next153.i.us, %87 ] %gep180.i.us = getelementptr i64, ptr %invariant.gep179.i.us, i64 %indvars.iv152.i.us - %88 = load i64, ptr %gep180.i.us, align 8, !tbaa !16 + %89 = load i64, ptr %gep180.i.us, align 8, !tbaa !16 %gep182.i.us = getelementptr i64, ptr %invariant.gep181.i.us, i64 %indvars.iv152.i.us - store i64 %88, ptr %gep182.i.us, align 8, !tbaa !16 + store i64 %89, ptr %gep182.i.us, align 8, !tbaa !16 %indvars.iv.next153.i.us = add nuw nsw i64 %indvars.iv152.i.us, 1 %exitcond157.not.i.us = icmp eq i64 %indvars.iv.next153.i.us, %wide.trip.count.i83.us - br i1 %exitcond157.not.i.us, label %.lr.ph95.us.i.us, label %87, !llvm.loop !98 + br i1 %exitcond157.not.i.us, label %.lr.ph95.us.i.us, label %88, !llvm.loop !98 -.lr.ph95.us.i.us: ; preds = %87, %.lr.ph95.us.i.us +.lr.ph95.us.i.us: ; preds = %88, %.lr.ph95.us.i.us %indvars.iv159.i.us = phi i64 [ %indvars.iv.next160.i.us, %.lr.ph95.us.i.us ], [ 0, %87 ] - %89 = add nsw i64 %indvars.iv159.i.us, %84 - %90 = getelementptr inbounds i64, ptr %.07797.us.i.us, i64 %89 - %91 = load i64, ptr %90, align 8, !tbaa !16 - %92 = getelementptr inbounds i64, ptr %.098.us.i.us, i64 %89 - store i64 %91, ptr %92, align 8, !tbaa !16 + %90 = add nsw i64 %indvars.iv159.i.us, %85 + %91 = getelementptr inbounds i64, ptr %.07797.us.i.us, i64 %90 + %92 = load i64, ptr %91, align 8, !tbaa !16 + %93 = getelementptr inbounds i64, ptr %.098.us.i.us, i64 %90 + store i64 %92, ptr %93, align 8, !tbaa !16 %indvars.iv.next160.i.us = add nuw nsw i64 %indvars.iv159.i.us, 1 %exitcond163.not.i.us = icmp eq i64 %indvars.iv.next160.i.us, %wide.trip.count.i83.us br i1 %exitcond163.not.i.us, label %._crit_edge.us.i89.us, label %.lr.ph95.us.i.us, !llvm.loop !99 ._crit_edge.us.i89.us: ; preds = %.lr.ph95.us.i.us - %93 = getelementptr inbounds i64, ptr %.07797.us.i.us, i64 %79 - %94 = getelementptr inbounds i64, ptr %.098.us.i.us, i64 %79 - %95 = add nsw i32 %.07996.us.i.us, %78 - %96 = icmp slt i32 %95, %53 - br i1 %96, label %.lr.ph.us.preheader.i.us, label %If_CluSwapAdjacent.exit.us, !llvm.loop !100 + %94 = getelementptr inbounds i64, ptr %.07797.us.i.us, i64 %80 + %95 = getelementptr inbounds i64, ptr %.098.us.i.us, i64 %80 + %96 = add nsw i32 %.07996.us.i.us, %79 + %97 = icmp slt i32 %96, %54 + br i1 %97, label %.lr.ph.us.preheader.i.us, label %If_CluSwapAdjacent.exit.us, !llvm.loop !100 -.preheader.i.us: ; preds = %72 - br i1 %54, label %If_CluSwapAdjacent.exit.us, label %.lr.ph.i90.us +.preheader.i.us: ; preds = %73 + br i1 %55, label %If_CluSwapAdjacent.exit.us, label %.lr.ph.i90.us .lr.ph.i90.us: ; preds = %.preheader.i.us, %.lr.ph.i90.us %indvars.iv164.i.us = phi i64 [ %indvars.iv.next165.i.us, %.lr.ph.i90.us ], [ 0, %.preheader.i.us ] - %97 = getelementptr inbounds nuw i64, ptr %.169106.us, i64 %indvars.iv164.i.us - %98 = load i64, ptr %97, align 8, !tbaa !16 - %99 = and i64 %98, 4294967295 - %100 = or disjoint i64 %indvars.iv164.i.us, 1 - %101 = getelementptr inbounds nuw i64, ptr %.169106.us, i64 %100 - %102 = load i64, ptr %101, align 8, !tbaa !16 - %103 = shl i64 %102, 32 - %104 = or disjoint i64 %103, %99 - %105 = getelementptr inbounds nuw i64, ptr %.172105.us, i64 %indvars.iv164.i.us - store i64 %104, ptr %105, align 8, !tbaa !16 - %106 = and i64 %102, -4294967296 - %107 = lshr i64 %98, 32 - %108 = or disjoint i64 %106, %107 - %109 = getelementptr inbounds nuw i64, ptr %.172105.us, i64 %100 - store i64 %108, ptr %109, align 8, !tbaa !16 + %98 = getelementptr inbounds nuw i64, ptr %.169106.us, i64 %indvars.iv164.i.us + %99 = load i64, ptr %98, align 8, !tbaa !16 + %100 = and i64 %99, 4294967295 + %101 = or disjoint i64 %indvars.iv164.i.us, 1 + %102 = getelementptr inbounds nuw i64, ptr %.169106.us, i64 %101 + %103 = load i64, ptr %102, align 8, !tbaa !16 + %104 = shl i64 %103, 32 + %105 = or disjoint i64 %104, %100 + %106 = getelementptr inbounds nuw i64, ptr %.172105.us, i64 %indvars.iv164.i.us + store i64 %105, ptr %106, align 8, !tbaa !16 + %107 = and i64 %103, -4294967296 + %108 = lshr i64 %99, 32 + %109 = or disjoint i64 %107, %108 + %110 = getelementptr inbounds nuw i64, ptr %.172105.us, i64 %101 + store i64 %109, ptr %110, align 8, !tbaa !16 %indvars.iv.next165.i.us = add nuw nsw i64 %indvars.iv164.i.us, 2 - %110 = icmp samesign ult i64 %indvars.iv.next165.i.us, %55 - br i1 %110, label %.lr.ph.i90.us, label %If_CluSwapAdjacent.exit.us, !llvm.loop !101 + %111 = icmp samesign ult i64 %indvars.iv.next165.i.us, %56 + br i1 %111, label %.lr.ph.i90.us, label %If_CluSwapAdjacent.exit.us, !llvm.loop !101 -111: ; preds = %61 - br i1 %54, label %If_CluSwapAdjacent.exit.us, label %.lr.ph135.i.us +112: ; preds = %62 + br i1 %55, label %If_CluSwapAdjacent.exit.us, label %.lr.ph135.i.us .lr.ph135.i.us: ; preds = %111 %112 = trunc nuw nsw i64 %indvars.iv129 to i32 @@ -2299,7 +2299,7 @@ If_CluChangePhase.exit: ; preds = %._crit_edge.us.i, % %120 = load i64, ptr %119, align 8, !tbaa !16 br label %121 -121: ; preds = %121, %.lr.ph135.i.us +.lr.ph135.i.us: ; preds = %121, %.lr.ph135.i.us %indvars.iv167.i.us = phi i64 [ 0, %.lr.ph135.i.us ], [ %indvars.iv.next168.i.us, %121 ] %122 = getelementptr inbounds nuw i64, ptr %.169106.us, i64 %indvars.iv167.i.us %123 = load i64, ptr %122, align 8, !tbaa !16 @@ -2313,14 +2313,14 @@ If_CluChangePhase.exit: ; preds = %._crit_edge.us.i, % %131 = getelementptr inbounds nuw i64, ptr %.172105.us, i64 %indvars.iv167.i.us store i64 %130, ptr %131, align 8, !tbaa !16 %indvars.iv.next168.i.us = add nuw nsw i64 %indvars.iv167.i.us, 1 - %exitcond171.not.i.us = icmp eq i64 %indvars.iv.next168.i.us, %55 + %exitcond171.not.i.us = icmp eq i64 %indvars.iv.next168.i.us, %56 br i1 %exitcond171.not.i.us, label %If_CluSwapAdjacent.exit.us, label %121, !llvm.loop !102 -If_CluSwapAdjacent.exit.us: ; preds = %._crit_edge.us.i89.us, %.lr.ph.i90.us, %121, %111, %.preheader.i.us, %.preheader87.lr.ph.i.us, %73, %.lr.ph110.us +If_CluSwapAdjacent.exit.us: ; preds = %._crit_edge.us.i89.us, %.lr.ph.i90.us, %121, %112, %.preheader.i.us, %.preheader87.lr.ph.i.us, %74, %.lr.ph110.us %.273.us = phi ptr [ %.172105.us, %.lr.ph110.us ], [ %.169106.us, %111 ], [ %.169106.us, %.preheader.i.us ], [ %.169106.us, %73 ], [ %.169106.us, %.preheader87.lr.ph.i.us ], [ %.169106.us, %121 ], [ %.169106.us, %.lr.ph.i90.us ], [ %.169106.us, %._crit_edge.us.i89.us ] %.270.us = phi ptr [ %.169106.us, %.lr.ph110.us ], [ %.172105.us, %111 ], [ %.172105.us, %.preheader.i.us ], [ %.172105.us, %73 ], [ %.172105.us, %.preheader87.lr.ph.i.us ], [ %.172105.us, %121 ], [ %.172105.us, %.lr.ph.i90.us ], [ %.172105.us, %._crit_edge.us.i89.us ] %.162.us = phi i32 [ %.061108.us, %.lr.ph110.us ], [ 1, %111 ], [ 1, %.preheader.i.us ], [ 1, %73 ], [ 1, %.preheader87.lr.ph.i.us ], [ 1, %121 ], [ 1, %.lr.ph.i90.us ], [ 1, %._crit_edge.us.i89.us ] - %.2.us = phi i32 [ %.1109.us, %.lr.ph110.us ], [ %62, %111 ], [ %62, %.preheader.i.us ], [ %62, %73 ], [ %62, %.preheader87.lr.ph.i.us ], [ %62, %121 ], [ %62, %.lr.ph.i90.us ], [ %62, %._crit_edge.us.i89.us ] + %.2.us = phi i32 [ %.1109.us, %.lr.ph110.us ], [ %63, %111 ], [ %63, %.preheader.i.us ], [ %63, %73 ], [ %63, %.preheader87.lr.ph.i.us ], [ %63, %121 ], [ %63, %.lr.ph.i90.us ], [ %63, %._crit_edge.us.i89.us ] %exitcond133.not = icmp eq i64 %indvars.iv.next130, %wide.trip.count132 br i1 %exitcond133.not, label %._crit_edge.us, label %.lr.ph110.us.backedge @@ -2335,22 +2335,22 @@ If_CluSwapAdjacent.exit.us: ; preds = %._crit_edge.us.i89. .lr.ph104: ; preds = %.lr.ph104.preheader, %.lr.ph104 %indvars.iv121 = phi i64 [ 0, %.lr.ph104.preheader ], [ %indvars.iv.next122, %.lr.ph104 ] - %132 = getelementptr inbounds nuw i32, ptr %2, i64 %indvars.iv121 - %133 = trunc nuw nsw i64 %indvars.iv121 to i32 - store i32 %133, ptr %132, align 4, !tbaa !6 + %133 = getelementptr inbounds nuw i32, ptr %2, i64 %indvars.iv121 + %134 = trunc nuw nsw i64 %indvars.iv121 to i32 + store i32 %134, ptr %133, align 4, !tbaa !6 %indvars.iv.next122 = add nuw nsw i64 %indvars.iv121, 1 %exitcond125.not = icmp eq i64 %indvars.iv.next122, %wide.trip.count124 br i1 %exitcond125.not, label %.preheader, label %.lr.ph104, !llvm.loop !104 .split.us: ; preds = %._crit_edge.us - %134 = and i32 %.2.us, 1 - %135 = icmp eq i32 %134, 0 - %brmerge = select i1 %135, i1 true, i1 %54 + %135 = and i32 %.2.us, 1 + %136 = icmp eq i32 %135, 0 + %brmerge = select i1 %136, i1 true, i1 %55 br i1 %brmerge, label %If_CluCopy.exit, label %.lr.ph.preheader.i91 .lr.ph.preheader.i91: ; preds = %.split.us - %136 = shl nuw nsw i64 %55, 3 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %.273.us, ptr noundef nonnull align 8 dereferenceable(1) %.270.us, i64 %136, i1 false), !tbaa !16 + %137 = shl nuw nsw i64 %56, 3 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %.273.us, ptr noundef nonnull align 8 dereferenceable(1) %.270.us, i64 %137, i1 false), !tbaa !16 br label %If_CluCopy.exit If_CluCopy.exit: ; preds = %.split.us, %.preheader, %.lr.ph.preheader.i91 diff --git a/bench/actix-rs/optimized/q4aavw6wh20so0r.ll b/bench/actix-rs/optimized/q4aavw6wh20so0r.ll index 4a8d09ee2d1..2d670875664 100644 --- a/bench/actix-rs/optimized/q4aavw6wh20so0r.ll +++ b/bench/actix-rs/optimized/q4aavw6wh20so0r.ll @@ -380,8 +380,8 @@ define void @_ZN16actix_web_actors2ws24handshake_with_protocols17hff1425362f08a8 81: ; preds = %82, %.preheader41.i.i %.3.i.i = phi i8 [ %.245.i.i, %.preheader41.i.i ], [ %88, %82 ] - %exitcond57.not.i.i = icmp eq i64 %77, 4 - br i1 %exitcond57.not.i.i, label %72, label %.preheader41.i.i + %exitcond59.not.i.i = icmp eq i64 %77, 4 + br i1 %exitcond59.not.i.i, label %72, label %.preheader41.i.i 82: ; preds = %.preheader41.i.i %83 = shl nuw nsw i64 %.sroa.028.046.i.i, 4 diff --git a/bench/assimp/optimized/FBXBinaryTokenizer.ll b/bench/assimp/optimized/FBXBinaryTokenizer.ll index 3ceff6f01d5..49ea8fc520b 100644 --- a/bench/assimp/optimized/FBXBinaryTokenizer.ll +++ b/bench/assimp/optimized/FBXBinaryTokenizer.ll @@ -218,7 +218,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit59: ; preds = %34, call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %common.resume -_ZN6Assimp3FBX12_GLOBAL__N_18ReadByteEPKcRS3_S3_.exit: ; preds = %27 +common.resume: ; preds = %27 call void @llvm.lifetime.start.p0(ptr nonnull %9) %41 = getelementptr inbounds nuw i8, ptr %1, i64 %2 %42 = getelementptr inbounds nuw i8, ptr %1, i64 23 @@ -234,7 +234,7 @@ _ZN6Assimp3FBX12_GLOBAL__N_18ReadByteEPKcRS3_S3_.exit: ; preds = %27 %.old56.not = icmp eq i64 %2, 27 br i1 %.old56.not, label %.loopexit, label %.preheader -common.resume: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit59, %82 +.preheader: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit59, %82 %common.resume.op = phi { ptr, i32 } [ %.pn53, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %.pn51, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit59 ], [ %.merged55, %82 ] resume { ptr, i32 } %common.resume.op diff --git a/bench/cmake/optimized/cmakemain.ll b/bench/cmake/optimized/cmakemain.ll index 2150a7e367e..7f7b5d34a8b 100644 --- a/bench/cmake/optimized/cmakemain.ll +++ b/bench/cmake/optimized/cmakemain.ll @@ -1905,7 +1905,7 @@ _ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE %489 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %488) #30 to label %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit.i.i unwind label %642 -_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit.i.i: ; preds = %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_M_allocateEm.exit.i.i +_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit.i.i:; preds = %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_M_allocateEm.exit.i.i store ptr %489, ptr %80, align 8, !tbaa !148 store ptr %489, ptr %487, align 8, !tbaa !150 %490 = getelementptr inbounds nuw %"class.std::__cxx11::basic_string", ptr %489, i64 %485 @@ -2056,7 +2056,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit390.i: ; preds = % br label %.loopexit651.i .body331.i: ; preds = %369, %.body577.thread.i - %eh.lpad-body578865.i = phi { ptr, i32 } [ %368, %.body577.thread.i ], [ %363, %369 ] + %eh.lpad-body578869.i = phi { ptr, i32 } [ %368, %.body577.thread.i ], [ %363, %369 ] br label %551 551: ; preds = %551, %.body331.i @@ -2068,7 +2068,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit390.i: ; preds = % .loopexit651.i: ; preds = %551, %549 %555 = phi i1 [ false, %549 ], [ true, %551 ] - %.pn168.i = phi { ptr, i32 } [ %550, %549 ], [ %eh.lpad-body578865.i, %551 ] + %.pn168.i = phi { ptr, i32 } [ %550, %549 ], [ %eh.lpad-body578869.i, %551 ] %556 = load ptr, ptr %348, align 8, !tbaa !39 %.not.i391.i = icmp eq ptr %556, null br i1 %.not.i391.i, label %_ZNSt14_Function_baseD2Ev.exit392.i, label %557 @@ -4686,22 +4686,22 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit123.i: ; preds = % %1467 = zext nneg i32 %1466 to i64 %1468 = getelementptr inbounds nuw i8, ptr %18, i64 16 %.not.i = icmp eq i32 %1466, 0 - br i1 %.not.i, label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE7reserveEm.exit.i, label %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_M_allocateEm.exit.i.i99 + br i1 %.not.i, label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE7reserveEm.exit.i100, label %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_M_allocateEm.exit.i.i99 _ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_M_allocateEm.exit.i.i99: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit123.i %1469 = shl nuw nsw i64 %1467, 5 %1470 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %1469) #30 to label %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit.i.i100 unwind label %1526 -_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit.i.i100: ; preds = %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_M_allocateEm.exit.i.i99 +_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit.i.i: ; preds = %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_M_allocateEm.exit.i.i99 %1471 = getelementptr inbounds nuw i8, ptr %18, i64 8 store ptr %1470, ptr %18, align 8, !tbaa !148 store ptr %1470, ptr %1471, align 8, !tbaa !150 %1472 = getelementptr inbounds nuw %"class.std::__cxx11::basic_string", ptr %1470, i64 %1467 store ptr %1472, ptr %1468, align 8, !tbaa !151 - br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE7reserveEm.exit.i + br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE7reserveEm.exit.i100 -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE7reserveEm.exit.i: ; preds = %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit.i.i100, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit123.i +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE7reserveEm.exit.i100: ; preds = %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit.i.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit123.i %1473 = phi ptr [ %1470, %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_deallocateEPS5_m.exit.i.i100 ], [ null, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit123.i ] %1474 = getelementptr inbounds nuw i8, ptr %108, i64 16 %1475 = zext nneg i32 %106 to i64 @@ -4710,7 +4710,7 @@ _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE7reserv invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE15_M_range_insertIPKPKcEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EET_SH_St20forward_iterator_tag(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr %1473, ptr noundef nonnull %1474, ptr noundef nonnull %1476) to label %_ZN2cm6appendISt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEPKPKcTnNSt9enable_ifIXaaaasr2cm21is_sequence_containerIT_EE5valuesr2cm17is_input_iteratorIT0_EE5valuesr3std14is_convertibleINSt15iterator_traitsISG_E10value_typeENSF_10value_typeEEE5valueEiE4typeELi0EEEvRSF_SG_SG_.exit.i101 unwind label %1526 -_ZN2cm6appendISt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEPKPKcTnNSt9enable_ifIXaaaasr2cm21is_sequence_containerIT_EE5valuesr2cm17is_input_iteratorIT0_EE5valuesr3std14is_convertibleINSt15iterator_traitsISG_E10value_typeENSF_10value_typeEEE5valueEiE4typeELi0EEEvRSF_SG_SG_.exit.i101: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE7reserveEm.exit.i +_ZN2cm6appendISt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS7_EEPKPKcTnNSt9enable_ifIXaaaasr2cm21is_sequence_containerIT_EE5valuesr2cm17is_input_iteratorIT0_EE5valuesr3std14is_convertibleINSt15iterator_traitsISG_E10value_typeENSF_10value_typeEEE5valueEiE4typeELi0EEEvRSF_SG_SG_.exit.i101: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE7reserveEm.exit.i100 call void @llvm.lifetime.start.p0(ptr nonnull %19) store i64 0, ptr %19, align 8, !tbaa !55 %1478 = load ptr, ptr %1477, align 8, !tbaa !150 @@ -4840,7 +4840,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit136.i: ; preds = % call void @llvm.lifetime.end.p0(ptr nonnull %13) br label %1733 -1526: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE7reserveEm.exit.i, %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_M_allocateEm.exit.i.i99 +1526: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE7reserveEm.exit.i100, %_ZNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE11_M_allocateEm.exit.i.i99 %1527 = landingpad { ptr, i32 } cleanup br label %1732 diff --git a/bench/coreutils-rs/optimized/2g9ijtjos2xwh9zs.ll b/bench/coreutils-rs/optimized/2g9ijtjos2xwh9zs.ll index a46831ac57a..8ef7b9b6178 100644 --- a/bench/coreutils-rs/optimized/2g9ijtjos2xwh9zs.ll +++ b/bench/coreutils-rs/optimized/2g9ijtjos2xwh9zs.ll @@ -4870,9 +4870,9 @@ define hidden void @_ZN5rayon5slice9mergesort13par_mergesort17h9ae9ed164361c133E .lr.ph.preheader: ; preds = %26 %27 = add nsw i64 %1, -1 - br label %.lr.ph + br label %192 -common.resume: ; preds = %207, %28 +common.resume: ; preds = %208, %28 %common.resume.op = phi { ptr, i32 } [ %.pn72, %28 ], [ %lpad.loopexit.i, %207 ] resume { ptr, i32 } %common.resume.op @@ -5391,63 +5391,63 @@ _ZN4core3ptr19swap_nonoverlapping17h45446940a5c53ec3E.exit.i.i97: ; preds = %177 call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !1426 br label %.loopexit.sink.split -.lr.ph: ; preds = %.lr.ph.preheader, %_ZN5rayon5slice9mergesort11insert_head17h9c722bca3f6f4e2bE.exit - %.sroa.4.0153 = phi i64 [ %192, %_ZN5rayon5slice9mergesort11insert_head17h9c722bca3f6f4e2bE.exit ], [ %27, %.lr.ph.preheader ] - %192 = add i64 %.sroa.4.0153, -1 - %193 = sub nuw nsw i64 %1, %192 - %194 = getelementptr inbounds nuw { { ptr, i64 }, i64 }, ptr %0, i64 %192 +192: ; preds = %.lr.ph.preheader, %_ZN5rayon5slice9mergesort11insert_head17h9c722bca3f6f4e2bE.exit + %.sroa.4.0153 = phi i64 [ %193, %_ZN5rayon5slice9mergesort11insert_head17h9c722bca3f6f4e2bE.exit ], [ %27, %.lr.ph.preheader ] + %193 = add i64 %.sroa.4.0153, -1 + %194 = sub nuw nsw i64 %1, %193 + %195 = getelementptr inbounds nuw { { ptr, i64 }, i64 }, ptr %0, i64 %193 %.val76 = load ptr, ptr %17, align 8, !nonnull !18, !noundef !18 call void @llvm.experimental.noalias.scope.decl(metadata !1433) - %195 = getelementptr inbounds nuw i8, ptr %194, i64 24 + %196 = getelementptr inbounds nuw i8, ptr %195, i64 24 %.val.i.i = load ptr, ptr %.val76, align 8, !noalias !1436, !nonnull !18, !align !223, !noundef !18 - %196 = getelementptr i8, ptr %.val76, i64 8 - %.val1.i.i = load ptr, ptr %196, align 8, !noalias !1436, !nonnull !18, !align !223, !noundef !18 - %197 = call noundef range(i8 -1, 2) i8 @_ZN7uu_sort10compare_by17hf350e8ed154bc332E(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %195, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %194, ptr noalias noundef nonnull readonly align 8 dereferenceable(160) %.val.i.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(72) %.val1.i.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(72) %.val1.i.i), !range !1440 - %198 = icmp eq i8 %197, -1 - br i1 %198, label %199, label %_ZN5rayon5slice9mergesort11insert_head17h9c722bca3f6f4e2bE.exit + %197 = getelementptr i8, ptr %.val76, i64 8 + %.val1.i.i = load ptr, ptr %197, align 8, !noalias !1436, !nonnull !18, !align !223, !noundef !18 + %198 = call noundef range(i8 -1, 2) i8 @_ZN7uu_sort10compare_by17hf350e8ed154bc332E(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %196, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %195, ptr noalias noundef nonnull readonly align 8 dereferenceable(160) %.val.i.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(72) %.val1.i.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(72) %.val1.i.i), !range !1440 + %199 = icmp eq i8 %198, -1 + br i1 %199, label %200, label %_ZN5rayon5slice9mergesort11insert_head17h9c722bca3f6f4e2bE.exit -199: ; preds = %.lr.ph +200: ; preds = %192 call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !1433 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(24) %194, i64 24, i1 false) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %194, ptr noundef nonnull align 8 dereferenceable(24) %195, i64 24, i1 false), !alias.scope !1433 - %.not.i = icmp eq i64 %193, 2 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(24) %195, i64 24, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %195, ptr noundef nonnull align 8 dereferenceable(24) %196, i64 24, i1 false), !alias.scope !1433 + %.not.i = icmp eq i64 %194, 2 br i1 %.not.i, label %.thread.i, label %.lr.ph.i -.thread.i: ; preds = %205, %203, %199 - %.sroa.5.0.lcssa.i = phi ptr [ %195, %199 ], [ %.sroa.5.05.i, %203 ], [ %201, %205 ] +.thread.i: ; preds = %206, %204, %200 + %.sroa.5.0.lcssa.i = phi ptr [ %196, %199 ], [ %.sroa.5.05.i, %203 ], [ %202, %205 ] 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(ptr nonnull %4), !noalias !1433 br label %_ZN5rayon5slice9mergesort11insert_head17h9c722bca3f6f4e2bE.exit -.lr.ph.i: ; preds = %199, %205 - %.sroa.02.06.i = phi i64 [ %200, %205 ], [ 2, %199 ] - %.sroa.5.05.i = phi ptr [ %201, %205 ], [ %195, %199 ] - %200 = add nuw nsw i64 %.sroa.02.06.i, 1 - %201 = getelementptr inbounds nuw { { ptr, i64 }, i64 }, ptr %194, i64 %.sroa.02.06.i +.lr.ph.i: ; preds = %200, %206 + %.sroa.02.06.i = phi i64 [ %201, %205 ], [ 2, %199 ] + %.sroa.5.05.i = phi ptr [ %202, %205 ], [ %196, %199 ] + %201 = add nuw nsw i64 %.sroa.02.06.i, 1 + %202 = getelementptr inbounds nuw { { ptr, i64 }, i64 }, ptr %195, i64 %.sroa.02.06.i %.val.i16.i = load ptr, ptr %.val76, align 8, !noalias !1441, !nonnull !18, !align !223, !noundef !18 - %.val1.i17.i = load ptr, ptr %196, align 8, !noalias !1441, !nonnull !18, !align !223, !noundef !18 - %202 = invoke noundef range(i8 -1, 2) i8 @_ZN7uu_sort10compare_by17hf350e8ed154bc332E(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %201, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(160) %.val.i16.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(72) %.val1.i17.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(72) %.val1.i17.i) - to label %203 unwind label %207 - -203: ; preds = %.lr.ph.i - %204 = icmp eq i8 %202, -1 - br i1 %204, label %205, label %.thread.i - -205: ; preds = %203 - %206 = getelementptr i8, ptr %201, i64 -24 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %206, ptr noundef nonnull align 8 dereferenceable(24) %201, i64 24, i1 false), !alias.scope !1433 - %exitcond.not.i = icmp eq i64 %200, %193 + %.val1.i17.i = load ptr, ptr %197, align 8, !noalias !1441, !nonnull !18, !align !223, !noundef !18 + %203 = invoke noundef range(i8 -1, 2) i8 @_ZN7uu_sort10compare_by17hf350e8ed154bc332E(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %202, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(160) %.val.i16.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(72) %.val1.i17.i, ptr noalias noundef nonnull readonly align 8 dereferenceable(72) %.val1.i17.i) + to label %203 unwind label %208 + +204: ; preds = %.lr.ph.i + %205 = icmp eq i8 %203, -1 + br i1 %205, label %206, label %.thread.i + +206: ; preds = %204 + %207 = getelementptr i8, ptr %202, i64 -24 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %207, ptr noundef nonnull align 8 dereferenceable(24) %202, i64 24, i1 false), !alias.scope !1433 + %exitcond.not.i = icmp eq i64 %201, %194 br i1 %exitcond.not.i, label %.thread.i, label %.lr.ph.i -207: ; preds = %.lr.ph.i +208: ; preds = %.lr.ph.i %lpad.loopexit.i = landingpad { ptr, i32 } cleanup call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.5.05.i, ptr noundef nonnull readonly align 8 dereferenceable(24) %4, i64 24, i1 false) br label %common.resume -_ZN5rayon5slice9mergesort11insert_head17h9c722bca3f6f4e2bE.exit: ; preds = %.lr.ph, %.thread.i - %.not = icmp eq i64 %192, 0 - br i1 %.not, label %.loopexit, label %.lr.ph +_ZN5rayon5slice9mergesort11insert_head17h9c722bca3f6f4e2bE.exit: ; preds = %192, %.thread.i + %.not = icmp eq i64 %193, 0 + br i1 %.not, label %.loopexit, label %192 } ; Function Attrs: inlinehint nonlazybind uwtable diff --git a/bench/duckdb/optimized/format.ll b/bench/duckdb/optimized/format.ll index bf2765013eb..e5b7a131f41 100644 --- a/bench/duckdb/optimized/format.ll +++ b/bench/duckdb/optimized/format.ll @@ -26239,7 +26239,7 @@ define linkonce_odr void @_ZN10duckdb_fmt2v68internal18arg_formatter_baseINS0_12 %3 = getelementptr inbounds nuw i8, ptr %0, i64 16 %4 = load ptr, ptr %3, align 8, !tbaa !127 %.not = icmp eq ptr %4, null - br i1 %.not, label %45, label %5 + br i1 %.not, label %46, label %5 5: ; preds = %2 %6 = load i32, ptr %4, align 4, !tbaa !145 @@ -26307,52 +26307,52 @@ _ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit.i: ; preds = %_ZN10duckdb_fmt2v68 37: ; preds = %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE7reserveEm.exit41.i %38 = lshr i64 %32, 1 %39 = icmp eq i32 %6, 2 - br i1 %39, label %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit43.i, label %40 + br i1 %39, label %42, label %40 40: ; preds = %37 %41 = getelementptr inbounds nuw i8, ptr %29, i64 %38 tail call void @llvm.memset.p0.i64(ptr align 1 %29, i8 %31, i64 %38, i1 false) - br label %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit43.i + br label %42 -_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit43.i: ; preds = %40, %37 +42: ; preds = %40, %37 %.0.i.i42.i = phi ptr [ %29, %37 ], [ %41, %40 ] store i8 %1, ptr %.0.i.i42.i, align 1, !tbaa !17 - %42 = sub nsw i64 %32, %38 - %43 = getelementptr inbounds nuw i8, ptr %.0.i.i42.i, i64 1 - tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %43, i8 %31, i64 %42, i1 false) + %43 = sub nsw i64 %32, %38 + %44 = getelementptr inbounds nuw i8, ptr %.0.i.i42.i, i64 1 + tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %44, i8 %31, i64 %43, i1 false) br label %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE12write_paddedINS1_18arg_formatter_baseIS4_NS1_13error_handlerEE11char_writerEEEvRKNS0_18basic_format_specsIcEEOT_.exit _ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit47.i: ; preds = %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE7reserveEm.exit41.i - %44 = getelementptr inbounds nuw i8, ptr %29, i64 1 + %45 = getelementptr inbounds nuw i8, ptr %29, i64 1 store i8 %1, ptr %29, align 1, !tbaa !17 - tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %44, i8 %31, i64 %32, i1 false) + tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %45, i8 %31, i64 %32, i1 false) br label %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE12write_paddedINS1_18arg_formatter_baseIS4_NS1_13error_handlerEE11char_writerEEEvRKNS0_18basic_format_specsIcEEOT_.exit -45: ; preds = %2 +46: ; preds = %2 %.sroa.0.0.copyload.i.i.i = load ptr, ptr %0, align 8 - %46 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.i.i, i64 16 - %47 = load i64, ptr %46, align 8, !tbaa !8 - %48 = add i64 %47, 1 - %49 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.i.i, i64 24 - %50 = load i64, ptr %49, align 8, !tbaa !13 - %51 = icmp ugt i64 %48, %50 - br i1 %51, label %52, label %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit + %47 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.i.i, i64 16 + %48 = load i64, ptr %47, align 8, !tbaa !8 + %49 = add i64 %48, 1 + %50 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.i.i, i64 24 + %51 = load i64, ptr %50, align 8, !tbaa !13 + %52 = icmp ugt i64 %49, %51 + br i1 %52, label %53, label %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit -52: ; preds = %45 - %53 = load ptr, ptr %.sroa.0.0.copyload.i.i.i, align 8, !tbaa !14 - %54 = load ptr, ptr %53, align 8 - tail call void %54(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.0.0.copyload.i.i.i, i64 noundef %48) +53: ; preds = %46 + %54 = load ptr, ptr %.sroa.0.0.copyload.i.i.i, align 8, !tbaa !14 + %55 = load ptr, ptr %54, align 8 + tail call void %54(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.0.0.copyload.i.i.i, i64 noundef %49) br label %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit -_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit: ; preds = %45, %52 - store i64 %48, ptr %46, align 8, !tbaa !8 - %55 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.i.i, i64 8 - %56 = load ptr, ptr %55, align 8, !tbaa !16 - %57 = getelementptr inbounds nuw i8, ptr %56, i64 %47 - store i8 %1, ptr %57, align 1, !tbaa !17 +_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit: ; preds = %46, %53 + store i64 %49, ptr %47, align 8, !tbaa !8 + %56 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.i.i, i64 8 + %57 = load ptr, ptr %56, align 8, !tbaa !16 + %58 = getelementptr inbounds nuw i8, ptr %57, i64 %48 + store i8 %1, ptr %58, align 1, !tbaa !17 br label %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE12write_paddedINS1_18arg_formatter_baseIS4_NS1_13error_handlerEE11char_writerEEEvRKNS0_18basic_format_specsIcEEOT_.exit -_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE12write_paddedINS1_18arg_formatter_baseIS4_NS1_13error_handlerEE11char_writerEEEvRKNS0_18basic_format_specsIcEEOT_.exit: ; preds = %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit47.i, %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit43.i, %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit.i, %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE7reserveEm.exit.i, %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit +_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE12write_paddedINS1_18arg_formatter_baseIS4_NS1_13error_handlerEE11char_writerEEEvRKNS0_18basic_format_specsIcEEOT_.exit: ; preds = %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit47.i, %42, %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit.i, %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE7reserveEm.exit.i, %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit ret void } @@ -60430,7 +60430,7 @@ _ZSt6fill_nIPwmwET_S1_T0_RKT1_.exit: ; preds = %.lr.ph.i.i.i.i 39: ; preds = %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIwEEE7reserveEm.exit41 %40 = lshr i64 %31, 1 %41 = icmp eq i32 %4, 2 - br i1 %41, label %_ZSt6fill_nIPwmwET_S1_T0_RKT1_.exit47, label %42 + br i1 %41, label %.loopexit, label %42 42: ; preds = %39 %.idx.i.i42 = shl nuw nsw i64 %40, 2 @@ -60442,9 +60442,9 @@ _ZSt6fill_nIPwmwET_S1_T0_RKT1_.exit: ; preds = %.lr.ph.i.i.i.i store i32 %30, ptr %.06.i.i.i.i44, align 4, !tbaa !118 %44 = getelementptr inbounds nuw i8, ptr %.06.i.i.i.i44, i64 4 %.not.i.i.i.i45 = icmp eq ptr %44, %43 - br i1 %.not.i.i.i.i45, label %_ZSt6fill_nIPwmwET_S1_T0_RKT1_.exit47, label %.lr.ph.i.i.i.i43, !llvm.loop !842 + br i1 %.not.i.i.i.i45, label %.loopexit, label %.lr.ph.i.i.i.i43, !llvm.loop !842 -_ZSt6fill_nIPwmwET_S1_T0_RKT1_.exit47: ; preds = %.lr.ph.i.i.i.i43, %39 +.loopexit: ; preds = %.lr.ph.i.i.i.i43, %39 %.0.i.i46 = phi ptr [ %28, %39 ], [ %43, %.lr.ph.i.i.i.i43 ] %45 = load i32, ptr %2, align 4, !tbaa !1124 store i32 %45, ptr %.0.i.i46, align 4, !tbaa !118 @@ -60454,7 +60454,7 @@ _ZSt6fill_nIPwmwET_S1_T0_RKT1_.exit47: ; preds = %.lr.ph.i.i.i.i43, % %48 = getelementptr inbounds nuw i8, ptr %47, i64 %.idx.i.i48 br label %.lr.ph.i.i.i.i49 -.lr.ph.i.i.i.i49: ; preds = %.lr.ph.i.i.i.i49, %_ZSt6fill_nIPwmwET_S1_T0_RKT1_.exit47 +.lr.ph.i.i.i.i49: ; preds = %.lr.ph.i.i.i.i49, %.loopexit %.06.i.i.i.i50 = phi ptr [ %49, %.lr.ph.i.i.i.i49 ], [ %47, %_ZSt6fill_nIPwmwET_S1_T0_RKT1_.exit47 ] store i32 %30, ptr %.06.i.i.i.i50, align 4, !tbaa !118 %49 = getelementptr inbounds nuw i8, ptr %.06.i.i.i.i50, i64 4 diff --git a/bench/duckdb/optimized/ub_duckdb_common.ll b/bench/duckdb/optimized/ub_duckdb_common.ll index 9d596554461..a34e169e69b 100644 --- a/bench/duckdb/optimized/ub_duckdb_common.ll +++ b/bench/duckdb/optimized/ub_duckdb_common.ll @@ -190011,7 +190011,7 @@ define linkonce_odr void @_ZN10duckdb_fmt2v68internal18arg_formatter_baseINS0_12 %3 = getelementptr inbounds nuw i8, ptr %0, i64 16 %4 = load ptr, ptr %3, align 8, !tbaa !2964 %.not = icmp eq ptr %4, null - br i1 %.not, label %45, label %5 + br i1 %.not, label %46, label %5 5: ; preds = %2 %6 = load i32, ptr %4, align 4, !tbaa !2946 @@ -190079,52 +190079,52 @@ _ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit.i: ; preds = %_ZN10duckdb_fmt2v68 37: ; preds = %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE7reserveEm.exit41.i %38 = lshr i64 %32, 1 %39 = icmp eq i32 %6, 2 - br i1 %39, label %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit43.i, label %40 + br i1 %39, label %42, label %40 40: ; preds = %37 %41 = getelementptr inbounds nuw i8, ptr %29, i64 %38 tail call void @llvm.memset.p0.i64(ptr align 1 %29, i8 %31, i64 %38, i1 false) - br label %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit43.i + br label %42 -_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit43.i: ; preds = %40, %37 +42: ; preds = %40, %37 %.0.i.i42.i = phi ptr [ %29, %37 ], [ %41, %40 ] store i8 %1, ptr %.0.i.i42.i, align 1, !tbaa !73 - %42 = sub nsw i64 %32, %38 - %43 = getelementptr inbounds nuw i8, ptr %.0.i.i42.i, i64 1 - tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %43, i8 %31, i64 %42, i1 false) + %43 = sub nsw i64 %32, %38 + %44 = getelementptr inbounds nuw i8, ptr %.0.i.i42.i, i64 1 + tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %44, i8 %31, i64 %43, i1 false) br label %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE12write_paddedINS1_18arg_formatter_baseIS4_NS1_13error_handlerEE11char_writerEEEvRKNS0_18basic_format_specsIcEEOT_.exit _ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit47.i: ; preds = %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE7reserveEm.exit41.i - %44 = getelementptr inbounds nuw i8, ptr %29, i64 1 + %45 = getelementptr inbounds nuw i8, ptr %29, i64 1 store i8 %1, ptr %29, align 1, !tbaa !73 - tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %44, i8 %31, i64 %32, i1 false) + tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %45, i8 %31, i64 %32, i1 false) br label %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE12write_paddedINS1_18arg_formatter_baseIS4_NS1_13error_handlerEE11char_writerEEEvRKNS0_18basic_format_specsIcEEOT_.exit -45: ; preds = %2 +46: ; preds = %2 %.sroa.0.0.copyload.i.i.i = load ptr, ptr %0, align 8 - %46 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.i.i, i64 16 - %47 = load i64, ptr %46, align 8, !tbaa !802 - %48 = add i64 %47, 1 - %49 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.i.i, i64 24 - %50 = load i64, ptr %49, align 8, !tbaa !793 - %51 = icmp ugt i64 %48, %50 - br i1 %51, label %52, label %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit + %47 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.i.i, i64 16 + %48 = load i64, ptr %47, align 8, !tbaa !802 + %49 = add i64 %48, 1 + %50 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.i.i, i64 24 + %51 = load i64, ptr %50, align 8, !tbaa !793 + %52 = icmp ugt i64 %49, %51 + br i1 %52, label %53, label %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit -52: ; preds = %45 - %53 = load ptr, ptr %.sroa.0.0.copyload.i.i.i, align 8, !tbaa !31 - %54 = load ptr, ptr %53, align 8 - tail call void %54(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.0.0.copyload.i.i.i, i64 noundef %48) +53: ; preds = %46 + %54 = load ptr, ptr %.sroa.0.0.copyload.i.i.i, align 8, !tbaa !31 + %55 = load ptr, ptr %54, align 8 + tail call void %54(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.0.0.copyload.i.i.i, i64 noundef %49) br label %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit -_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit: ; preds = %45, %52 - store i64 %48, ptr %46, align 8, !tbaa !802 - %55 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.i.i, i64 8 - %56 = load ptr, ptr %55, align 8, !tbaa !791 - %57 = getelementptr inbounds nuw i8, ptr %56, i64 %47 - store i8 %1, ptr %57, align 1, !tbaa !73 +_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit: ; preds = %46, %53 + store i64 %49, ptr %47, align 8, !tbaa !802 + %56 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.i.i, i64 8 + %57 = load ptr, ptr %56, align 8, !tbaa !791 + %58 = getelementptr inbounds nuw i8, ptr %57, i64 %48 + store i8 %1, ptr %58, align 1, !tbaa !73 br label %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE12write_paddedINS1_18arg_formatter_baseIS4_NS1_13error_handlerEE11char_writerEEEvRKNS0_18basic_format_specsIcEEOT_.exit -_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE12write_paddedINS1_18arg_formatter_baseIS4_NS1_13error_handlerEE11char_writerEEEvRKNS0_18basic_format_specsIcEEOT_.exit: ; preds = %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit47.i, %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit43.i, %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit.i, %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE7reserveEm.exit.i, %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit +_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE12write_paddedINS1_18arg_formatter_baseIS4_NS1_13error_handlerEE11char_writerEEEvRKNS0_18basic_format_specsIcEEOT_.exit: ; preds = %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit47.i, %42, %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit.i, %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE7reserveEm.exit.i, %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit ret void } diff --git a/bench/duckdb/optimized/ub_duckdb_core_functions_string.ll b/bench/duckdb/optimized/ub_duckdb_core_functions_string.ll index 4d8db6ca512..52e188857f3 100644 --- a/bench/duckdb/optimized/ub_duckdb_core_functions_string.ll +++ b/bench/duckdb/optimized/ub_duckdb_core_functions_string.ll @@ -114384,7 +114384,7 @@ define linkonce_odr void @_ZN10duckdb_fmt2v68internal18arg_formatter_baseINS0_12 %3 = getelementptr inbounds nuw i8, ptr %0, i64 16 %4 = load ptr, ptr %3, align 8, !tbaa !2038 %.not = icmp eq ptr %4, null - br i1 %.not, label %45, label %5 + br i1 %.not, label %46, label %5 5: ; preds = %2 %6 = load i32, ptr %4, align 4, !tbaa !2020 @@ -114452,52 +114452,52 @@ _ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit.i: ; preds = %_ZN10duckdb_fmt2v68 37: ; preds = %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE7reserveEm.exit41.i %38 = lshr i64 %32, 1 %39 = icmp eq i32 %6, 2 - br i1 %39, label %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit43.i, label %40 + br i1 %39, label %42, label %40 40: ; preds = %37 %41 = getelementptr inbounds nuw i8, ptr %29, i64 %38 tail call void @llvm.memset.p0.i64(ptr align 1 %29, i8 %31, i64 %38, i1 false) - br label %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit43.i + br label %42 -_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit43.i: ; preds = %40, %37 +42: ; preds = %40, %37 %.0.i.i42.i = phi ptr [ %29, %37 ], [ %41, %40 ] store i8 %1, ptr %.0.i.i42.i, align 1, !tbaa !65 - %42 = sub nsw i64 %32, %38 - %43 = getelementptr inbounds nuw i8, ptr %.0.i.i42.i, i64 1 - tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %43, i8 %31, i64 %42, i1 false) + %43 = sub nsw i64 %32, %38 + %44 = getelementptr inbounds nuw i8, ptr %.0.i.i42.i, i64 1 + tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %44, i8 %31, i64 %43, i1 false) br label %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE12write_paddedINS1_18arg_formatter_baseIS4_NS1_13error_handlerEE11char_writerEEEvRKNS0_18basic_format_specsIcEEOT_.exit _ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit47.i: ; preds = %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE7reserveEm.exit41.i - %44 = getelementptr inbounds nuw i8, ptr %29, i64 1 + %45 = getelementptr inbounds nuw i8, ptr %29, i64 1 store i8 %1, ptr %29, align 1, !tbaa !65 - tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %44, i8 %31, i64 %32, i1 false) + tail call void @llvm.memset.p0.i64(ptr nonnull align 1 %45, i8 %31, i64 %32, i1 false) br label %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE12write_paddedINS1_18arg_formatter_baseIS4_NS1_13error_handlerEE11char_writerEEEvRKNS0_18basic_format_specsIcEEOT_.exit -45: ; preds = %2 +46: ; preds = %2 %.sroa.0.0.copyload.i.i.i = load ptr, ptr %0, align 8 - %46 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.i.i, i64 16 - %47 = load i64, ptr %46, align 8, !tbaa !2015 - %48 = add i64 %47, 1 - %49 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.i.i, i64 24 - %50 = load i64, ptr %49, align 8, !tbaa !2006 - %51 = icmp ugt i64 %48, %50 - br i1 %51, label %52, label %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit - -52: ; preds = %45 - %53 = load ptr, ptr %.sroa.0.0.copyload.i.i.i, align 8, !tbaa !58 - %54 = load ptr, ptr %53, align 8 - tail call void %54(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.0.0.copyload.i.i.i, i64 noundef %48) + %47 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.i.i, i64 16 + %48 = load i64, ptr %47, align 8, !tbaa !2015 + %49 = add i64 %48, 1 + %50 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.i.i, i64 24 + %51 = load i64, ptr %50, align 8, !tbaa !2006 + %52 = icmp ugt i64 %49, %51 + br i1 %52, label %53, label %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit + +53: ; preds = %46 + %54 = load ptr, ptr %.sroa.0.0.copyload.i.i.i, align 8, !tbaa !58 + %55 = load ptr, ptr %54, align 8 + tail call void %54(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.0.0.copyload.i.i.i, i64 noundef %49) br label %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit -_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit: ; preds = %45, %52 - store i64 %48, ptr %46, align 8, !tbaa !2015 - %55 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.i.i, i64 8 - %56 = load ptr, ptr %55, align 8, !tbaa !2004 - %57 = getelementptr inbounds nuw i8, ptr %56, i64 %47 - store i8 %1, ptr %57, align 1, !tbaa !65 +_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit: ; preds = %46, %53 + store i64 %49, ptr %47, align 8, !tbaa !2015 + %56 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.copyload.i.i.i, i64 8 + %57 = load ptr, ptr %56, align 8, !tbaa !2004 + %58 = getelementptr inbounds nuw i8, ptr %57, i64 %48 + store i8 %1, ptr %58, align 1, !tbaa !65 br label %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE12write_paddedINS1_18arg_formatter_baseIS4_NS1_13error_handlerEE11char_writerEEEvRKNS0_18basic_format_specsIcEEOT_.exit -_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE12write_paddedINS1_18arg_formatter_baseIS4_NS1_13error_handlerEE11char_writerEEEvRKNS0_18basic_format_specsIcEEOT_.exit: ; preds = %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit47.i, %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit43.i, %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit.i, %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE7reserveEm.exit.i, %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit +_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE12write_paddedINS1_18arg_formatter_baseIS4_NS1_13error_handlerEE11char_writerEEEvRKNS0_18basic_format_specsIcEEOT_.exit: ; preds = %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit47.i, %42, %_ZSt6fill_nIPcmcET_S1_T0_RKT1_.exit.i, %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE7reserveEm.exit.i, %_ZN10duckdb_fmt2v68internal12basic_writerINS0_12buffer_rangeIcEEE5writeEc.exit ret void } diff --git a/bench/elfshaker-rs/optimized/efmso49nxcvtljggmhiyzv2jj.ll b/bench/elfshaker-rs/optimized/efmso49nxcvtljggmhiyzv2jj.ll index 574a19a2486..86a284638f0 100644 --- a/bench/elfshaker-rs/optimized/efmso49nxcvtljggmhiyzv2jj.ll +++ b/bench/elfshaker-rs/optimized/efmso49nxcvtljggmhiyzv2jj.ll @@ -3308,7 +3308,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %8 = load i64, ptr %7, align 8, !noundef !6 %9 = load ptr, ptr %0, align 8, !nonnull !6, !noundef !6 %10 = icmp eq i64 %8, 0 - br i1 %10, label %.loopexit54, label %.lr.ph.i + br i1 %10, label %.loopexit55, label %.lr.ph.i .lr.ph.i: ; preds = %3, %.lr.ph.i %.sroa.03.06.i = phi i64 [ %18, %.lr.ph.i ], [ %8, %3 ] @@ -3323,9 +3323,9 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %17 = load ptr, ptr %16, align 8, !noalias !436, !nonnull !6, !noundef !6 %18 = add i64 %.sroa.03.06.i, -1 %19 = icmp eq i64 %18, 0 - br i1 %19, label %.loopexit54, label %.lr.ph.i + br i1 %19, label %.loopexit55, label %.lr.ph.i -.loopexit54: ; preds = %.lr.ph.i, %3 +.loopexit55: ; preds = %.lr.ph.i, %3 %.sroa.04.0.lcssa.i = phi ptr [ %9, %3 ], [ %17, %.lr.ph.i ] call void @llvm.lifetime.start.p0(ptr nonnull %6) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %6, ptr noundef nonnull align 8 dereferenceable(64) %1, i64 64, i1 false) @@ -3334,16 +3334,16 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %22 = getelementptr inbounds nuw i8, ptr %5, i64 24 br label %23 -23: ; preds = %.loopexit, %.loopexit54 - %.sroa.0.051 = phi ptr [ %.sroa.04.0.lcssa.i, %.loopexit54 ], [ %.sroa.0.1, %.loopexit ] +23: ; preds = %.loopexit, %.loopexit55 + %.sroa.0.052 = phi ptr [ %.sroa.04.0.lcssa.i, %.loopexit54 ], [ %.sroa.0.1, %.loopexit ] call void @llvm.lifetime.start.p0(ptr nonnull %5) invoke void @"_ZN137_$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$K$C$V$C$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h490a30119a296c6bE"(ptr noalias noundef nonnull sret([32 x i8]) align 8 captures(none) dereferenceable(32) %5, ptr noalias noundef nonnull align 8 dereferenceable(64) %6) to label %26 unwind label %24 -.body: ; preds = %173, %121, %107, %24 - %.pn = phi { ptr, i32 } [ %25, %24 ], [ %108, %107 ], [ %122, %121 ], [ %174, %173 ] +.body: ; preds = %176, %124, %110, %24 + %.pn = phi { ptr, i32 } [ %25, %24 ], [ %111, %107 ], [ %125, %121 ], [ %177, %173 ] invoke void @"_ZN4core3ptr220drop_in_place$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$u32$C$elfshaker..packidx..ObjectMetadata$C$alloc..vec..into_iter..IntoIter$LT$$LP$u32$C$elfshaker..packidx..ObjectMetadata$RP$$GT$$GT$$GT$17h788b0b15302a2384E"(ptr noalias noundef nonnull align 8 dereferenceable(64) %6) #27 - to label %192 unwind label %190 + to label %192 unwind label %193 24: ; preds = %23 %25 = landingpad { ptr, i32 } @@ -3359,10 +3359,10 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %30 = load i32, ptr %20, align 8, !noundef !6 %31 = load i64, ptr %21, align 8, !noundef !6 %32 = load i64, ptr %22, align 8, !noundef !6 - %33 = getelementptr inbounds nuw i8, ptr %.sroa.0.051, i64 230 + %33 = getelementptr inbounds nuw i8, ptr %.sroa.0.052, i64 230 %34 = load i16, ptr %33, align 2, !noundef !6 %35 = icmp ult i16 %34, 11 - br i1 %35, label %183, label %.preheader + br i1 %35, label %186, label %.preheader 36: ; preds = %26 call void @llvm.lifetime.end.p0(ptr nonnull %5) @@ -3404,7 +3404,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %52 = icmp ult i16 %51, 5 br i1 %52, label %54, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h65961c720cdf3cfeE.exit.i" -"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h65961c720cdf3cfeE.exit.i": ; preds = %98, %40 +"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h65961c720cdf3cfeE.exit.i": ; preds = %101, %40 %53 = icmp eq i64 %46, 0 br i1 %53, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17h495e8ecb811dc167E.exit", label %.lr.ph.i15 @@ -3415,27 +3415,27 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %57 = load i16, ptr %56, align 2, !noalias !448, !noundef !6 %58 = zext nneg i16 %51 to i64 %.not.i.i = icmp ugt i16 %narrow.i, %57 - br i1 %.not.i.i, label %.noexc16, label %_ZN5alloc11collections5btree4node13move_to_slice17ha03598a9e61be67cE.exit.i.i, !prof !27 + br i1 %.not.i.i, label %.noexc16, label %59, !prof !27 .noexc16: ; preds = %54 call void @_ZN4core9panicking5panic17h13ee8adf815f0d87E(ptr noalias noundef nonnull readonly align 1 @anon.467722f710d552998dd01561bebdcdae.62, i64 noundef 39, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.467722f710d552998dd01561bebdcdae.63) #28 unreachable -_ZN5alloc11collections5btree4node13move_to_slice17ha03598a9e61be67cE.exit.i.i: ; preds = %54 - %59 = zext i16 %57 to i64 - %60 = sub nuw nsw i64 %59, %55 - %61 = trunc nuw i64 %60 to i16 - store i16 %61, ptr %56, align 2, !noalias !448 +59: ; preds = %54 + %60 = zext i16 %57 to i64 + %61 = sub nuw nsw i64 %60, %55 + %62 = trunc nuw i64 %61 to i16 + store i16 %62, ptr %56, align 2, !noalias !448 store i16 5, ptr %50, align 2, !noalias !448 - %62 = getelementptr inbounds nuw i8, ptr %49, i64 184 - %63 = getelementptr inbounds nuw i32, ptr %62, i64 %55 - %64 = shl nuw nsw i64 %58, 2 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %63, ptr nonnull align 4 %62, i64 %64, i1 false), !alias.scope !451, !noalias !448 - %65 = getelementptr inbounds nuw { [2 x i64] }, ptr %49, i64 %55 - %66 = shl nuw nsw i64 %58, 4 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %65, ptr nonnull align 8 %49, i64 %66, i1 false), !alias.scope !454, !noalias !448 - %67 = add nuw nsw i64 %60, 1 - %68 = sub nuw nsw i64 %59, %67 + %63 = getelementptr inbounds nuw i8, ptr %49, i64 184 + %64 = getelementptr inbounds nuw i32, ptr %63, i64 %55 + %65 = shl nuw nsw i64 %58, 2 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %64, ptr nonnull align 4 %63, i64 %65, i1 false), !alias.scope !451, !noalias !448 + %66 = getelementptr inbounds nuw { [2 x i64] }, ptr %49, i64 %55 + %67 = shl nuw nsw i64 %58, 4 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %66, ptr nonnull align 8 %49, i64 %67, i1 false), !alias.scope !454, !noalias !448 + %68 = add nuw nsw i64 %61, 1 + %69 = sub nuw nsw i64 %60, %68 %69 = getelementptr inbounds nuw i8, ptr %45, i64 184 %70 = getelementptr inbounds nuw i32, ptr %69, i64 %67 %71 = shl nuw nsw i64 %68, 2 @@ -3445,11 +3445,11 @@ _ZN5alloc11collections5btree4node13move_to_slice17ha03598a9e61be67cE.exit.i.i: ; call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %49, ptr nonnull readonly align 8 %72, i64 %73, i1 false), !alias.scope !461, !noalias !448 %74 = getelementptr inbounds nuw i32, ptr %69, i64 %60 %75 = load i32, ptr %74, align 4, !noalias !448, !noundef !6 - %76 = getelementptr inbounds nuw { [2 x i64] }, ptr %45, i64 %60 - %77 = load i64, ptr %76, align 8, !noalias !448, !noundef !6 + %72 = getelementptr inbounds nuw { [2 x i64] }, ptr %45, i64 %61 + %77 = load i64, ptr %72, align 8, !noalias !448, !noundef !6 %78 = getelementptr inbounds nuw i8, ptr %76, i64 8 %79 = load i64, ptr %78, align 8, !noalias !448, !noundef !6 - %80 = getelementptr inbounds nuw i8, ptr %.sroa.03.010.i, i64 184 + %75 = getelementptr inbounds nuw i8, ptr %.sroa.03.010.i, i64 184 %81 = getelementptr inbounds nuw i32, ptr %80, i64 %42 %82 = getelementptr inbounds nuw { [2 x i64] }, ptr %.sroa.03.010.i, i64 %42 %83 = load i32, ptr %81, align 4, !noalias !465, !noundef !6 @@ -3459,253 +3459,253 @@ _ZN5alloc11collections5btree4node13move_to_slice17ha03598a9e61be67cE.exit.i.i: ; %86 = load i64, ptr %85, align 8, !noalias !465, !noundef !6 store i64 %77, ptr %82, align 8, !noalias !465 store i64 %79, ptr %85, align 8, !noalias !465 - %87 = getelementptr inbounds nuw i32, ptr %62, i64 %68 + %84 = getelementptr inbounds nuw i32, ptr %63, i64 %68 store i32 %83, ptr %87, align 4, !noalias !448 %88 = getelementptr inbounds nuw { [2 x i64] }, ptr %49, i64 %68 store i64 %84, ptr %88, align 8, !noalias !448 %89 = getelementptr inbounds nuw i8, ptr %88, i64 8 store i64 %86, ptr %89, align 8, !noalias !448 %cond.i = icmp eq i64 %46, 0 - br i1 %cond.i, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17h495e8ecb811dc167E.exit", label %90 - -90: ; preds = %_ZN5alloc11collections5btree4node13move_to_slice17ha03598a9e61be67cE.exit.i.i - %91 = getelementptr inbounds nuw i8, ptr %49, i64 232 - %92 = getelementptr inbounds nuw ptr, ptr %91, i64 %55 - %93 = shl nuw nsw i64 %58, 3 - %94 = add nuw nsw i64 %93, 8 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %92, ptr noundef nonnull align 8 dereferenceable(1) %91, i64 %94, i1 false), !alias.scope !468, !noalias !448 - %95 = getelementptr inbounds nuw i8, ptr %45, i64 232 - %96 = getelementptr inbounds nuw ptr, ptr %95, i64 %67 - %97 = shl nuw nsw i64 %55, 3 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %91, ptr noundef nonnull readonly align 8 dereferenceable(1) %96, i64 %97, i1 false), !alias.scope !471, !noalias !448 - br label %98 - -98: ; preds = %98, %90 - %.sroa.0.06.i.i.i = phi i64 [ 0, %90 ], [ %99, %98 ] - %99 = add nuw nsw i64 %.sroa.0.06.i.i.i, 1 - %100 = getelementptr inbounds nuw ptr, ptr %91, i64 %.sroa.0.06.i.i.i - %101 = load ptr, ptr %100, align 8, !noalias !475, !nonnull !6, !noundef !6 - %102 = getelementptr inbounds nuw i8, ptr %101, i64 176 - store ptr %49, ptr %102, align 8, !noalias !480 - %103 = trunc nuw nsw i64 %.sroa.0.06.i.i.i to i16 - %104 = getelementptr inbounds nuw i8, ptr %101, i64 228 - store i16 %103, ptr %104, align 4, !noalias !480 + br i1 %cond.i, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17h495e8ecb811dc167E.exit", label %93 + +93: ; preds = %_ZN5alloc11collections5btree4node13move_to_slice17ha03598a9e61be67cE.exit.i.i + %94 = getelementptr inbounds nuw i8, ptr %49, i64 232 + %95 = getelementptr inbounds nuw ptr, ptr %94, i64 %55 + %96 = shl nuw nsw i64 %58, 3 + %97 = add nuw nsw i64 %96, 8 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %95, ptr noundef nonnull align 8 dereferenceable(1) %94, i64 %97, i1 false), !alias.scope !468, !noalias !448 + %98 = getelementptr inbounds nuw i8, ptr %45, i64 232 + %99 = getelementptr inbounds nuw ptr, ptr %98, i64 %68 + %100 = shl nuw nsw i64 %55, 3 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %94, ptr noundef nonnull readonly align 8 dereferenceable(1) %99, i64 %100, i1 false), !alias.scope !471, !noalias !448 + br label %101 + +101: ; preds = %101, %93 + %.sroa.0.06.i.i.i = phi i64 [ 0, %90 ], [ %102, %98 ] + %102 = add nuw nsw i64 %.sroa.0.06.i.i.i, 1 + %103 = getelementptr inbounds nuw ptr, ptr %94, i64 %.sroa.0.06.i.i.i + %104 = load ptr, ptr %103, align 8, !noalias !475, !nonnull !6, !noundef !6 + %105 = getelementptr inbounds nuw i8, ptr %104, i64 176 + store ptr %49, ptr %105, align 8, !noalias !480 + %106 = trunc nuw nsw i64 %.sroa.0.06.i.i.i to i16 + %107 = getelementptr inbounds nuw i8, ptr %104, i64 228 + store i16 %106, ptr %107, align 4, !noalias !480 %exitcond.not.i.i.i = icmp eq i64 %.sroa.0.06.i.i.i, 5 - br i1 %exitcond.not.i.i.i, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h65961c720cdf3cfeE.exit.i", label %98 + br i1 %exitcond.not.i.i.i, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h65961c720cdf3cfeE.exit.i", label %101 "_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17h495e8ecb811dc167E.exit": ; preds = %_ZN5alloc11collections5btree4node13move_to_slice17ha03598a9e61be67cE.exit.i.i, %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h65961c720cdf3cfeE.exit.i", %36 ret void -.preheader: ; preds = %29, %109 - %.sroa.5.0 = phi i64 [ %110, %109 ], [ 0, %29 ] - %.sroa.0.0 = phi ptr [ %106, %109 ], [ %.sroa.0.051, %29 ] - %105 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 176 - %106 = load ptr, ptr %105, align 8, !noalias !481, !noundef !6 - %.not.i18 = icmp eq ptr %106, null - br i1 %.not.i18, label %114, label %109 +.preheader: ; preds = %29, %112 + %.sroa.5.0 = phi i64 [ %113, %109 ], [ 0, %29 ] + %.sroa.0.0 = phi ptr [ %109, %109 ], [ %.sroa.0.052, %29 ] + %108 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 176 + %109 = load ptr, ptr %108, align 8, !noalias !481, !noundef !6 + %.not.i19 = icmp eq ptr %109, null + br i1 %.not.i19, label %117, label %112 -107: ; preds = %143, %136 - %108 = landingpad { ptr, i32 } +110: ; preds = %146, %139 + %111 = landingpad { ptr, i32 } cleanup br label %.body -109: ; preds = %.preheader - %110 = add i64 %.sroa.5.0, 1 - %111 = getelementptr inbounds nuw i8, ptr %106, i64 230 - %112 = load i16, ptr %111, align 2, !noundef !6 - %113 = icmp ult i16 %112, 11 - br i1 %113, label %.loopexit53, label %.preheader +112: ; preds = %.preheader + %113 = add i64 %.sroa.5.0, 1 + %114 = getelementptr inbounds nuw i8, ptr %109, i64 230 + %115 = load i16, ptr %114, align 2, !noundef !6 + %116 = icmp ult i16 %115, 11 + br i1 %116, label %.loopexit54, label %.preheader -114: ; preds = %.preheader +117: ; preds = %.preheader call void @llvm.experimental.noalias.scope.decl(metadata !484) - %115 = load ptr, ptr %0, align 8, !alias.scope !484, !nonnull !6, !noundef !6 - %116 = load i64, ptr %7, align 8, !alias.scope !484, !noundef !6 - %117 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !484 - %118 = call noalias noundef align 8 dereferenceable_or_null(328) ptr @_RNvCshjvJWTf7CV5_7___rustc12___rust_alloc(i64 noundef range(i64 4, 329) 328, i64 noundef range(i64 4, 9) 8) #30, !noalias !484 - %119 = icmp eq ptr %118, null - br i1 %119, label %120, label %125, !prof !27 - -120: ; preds = %114 + %118 = load ptr, ptr %0, align 8, !alias.scope !484, !nonnull !6, !noundef !6 + %119 = load i64, ptr %7, align 8, !alias.scope !484, !noundef !6 + %120 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !484 + %121 = call noalias noundef align 8 dereferenceable_or_null(328) ptr @_RNvCshjvJWTf7CV5_7___rustc12___rust_alloc(i64 noundef range(i64 4, 329) 328, i64 noundef range(i64 4, 9) 8) #30, !noalias !484 + %122 = icmp eq ptr %121, null + br i1 %122, label %123, label %128, !prof !27 + +123: ; preds = %117 invoke void @_ZN5alloc5alloc18handle_alloc_error17haa66aaa8cfcf3614E(i64 noundef 8, i64 noundef 328) #28 - to label %.noexc.i unwind label %121, !noalias !484 + to label %.noexc.i unwind label %124, !noalias !484 -.noexc.i: ; preds = %120 +.noexc.i: ; preds = %123 unreachable -121: ; preds = %120 - %122 = landingpad { ptr, i32 } +124: ; preds = %123 + %125 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17h85819774d71bbb8dE"(ptr noalias noundef nonnull align 1 %4) #27 - to label %.body unwind label %123, !noalias !484 + to label %.body unwind label %126, !noalias !484 -123: ; preds = %121 - %124 = landingpad { ptr, i32 } +126: ; preds = %124 + %127 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hccd47ddd364deb23E() #29, !noalias !484 unreachable -125: ; preds = %114 - %126 = getelementptr inbounds nuw i8, ptr %118, i64 176 - store ptr null, ptr %126, align 8, !noalias !484 - %127 = getelementptr inbounds nuw i8, ptr %118, i64 230 - store i16 0, ptr %127, align 2, !noalias !484 - %128 = getelementptr inbounds nuw i8, ptr %118, i64 232 - store ptr %115, ptr %128, align 8, !noalias !484 - %129 = add i64 %116, 1 - %130 = getelementptr inbounds nuw i8, ptr %115, i64 176 - store ptr %118, ptr %130, align 8, !noalias !487 - %131 = getelementptr inbounds nuw i8, ptr %115, i64 228 - store i16 0, ptr %131, align 4, !noalias !494 - store ptr %118, ptr %0, align 8, !alias.scope !484 - store i64 %129, ptr %7, align 8, !alias.scope !484 - br label %.loopexit53 - -.loopexit53: ; preds = %109, %125 - %.sroa.035.0 = phi ptr [ %118, %125 ], [ %106, %109 ] - %.sroa.636.0 = phi i64 [ %129, %125 ], [ %110, %109 ] - %132 = add i64 %.sroa.636.0, -1 - %133 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 - %134 = call noalias noundef align 8 dereferenceable_or_null(232) ptr @_RNvCshjvJWTf7CV5_7___rustc12___rust_alloc(i64 noundef range(i64 4, 329) 232, i64 noundef range(i64 4, 9) 8) #30 - %135 = icmp eq ptr %134, null - br i1 %135, label %136, label %137, !prof !27 - -136: ; preds = %.loopexit53 +128: ; preds = %117 + %129 = getelementptr inbounds nuw i8, ptr %121, i64 176 + store ptr null, ptr %129, align 8, !noalias !484 + %130 = getelementptr inbounds nuw i8, ptr %121, i64 230 + store i16 0, ptr %130, align 2, !noalias !484 + %131 = getelementptr inbounds nuw i8, ptr %121, i64 232 + store ptr %118, ptr %131, align 8, !noalias !484 + %132 = add i64 %119, 1 + %133 = getelementptr inbounds nuw i8, ptr %118, i64 176 + store ptr %121, ptr %133, align 8, !noalias !487 + %134 = getelementptr inbounds nuw i8, ptr %118, i64 228 + store i16 0, ptr %134, align 4, !noalias !494 + store ptr %121, ptr %0, align 8, !alias.scope !484 + store i64 %132, ptr %7, align 8, !alias.scope !484 + br label %.loopexit54 + +.loopexit54: ; preds = %112, %128 + %.sroa.036.0 = phi ptr [ %121, %125 ], [ %109, %109 ] + %.sroa.637.0 = phi i64 [ %132, %125 ], [ %113, %109 ] + %135 = add i64 %.sroa.637.0, -1 + %136 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1 + %137 = call noalias noundef align 8 dereferenceable_or_null(232) ptr @_RNvCshjvJWTf7CV5_7___rustc12___rust_alloc(i64 noundef range(i64 4, 329) 232, i64 noundef range(i64 4, 9) 8) #30 + %138 = icmp eq ptr %137, null + br i1 %138, label %139, label %140, !prof !27 + +139: ; preds = %.loopexit54 invoke void @_ZN5alloc5alloc18handle_alloc_error17haa66aaa8cfcf3614E(i64 noundef 8, i64 noundef 232) #28 - to label %.noexc19 unwind label %107 + to label %.noexc19 unwind label %110 -.noexc19: ; preds = %136 +.noexc20: ; preds = %139 unreachable -137: ; preds = %.loopexit53 - %138 = getelementptr inbounds nuw i8, ptr %134, i64 176 - store ptr null, ptr %138, align 8 - %139 = getelementptr inbounds nuw i8, ptr %134, i64 230 - store i16 0, ptr %139, align 2 - %.not = icmp eq i64 %132, 0 +140: ; preds = %.loopexit54 + %141 = getelementptr inbounds nuw i8, ptr %137, i64 176 + store ptr null, ptr %141, align 8 + %142 = getelementptr inbounds nuw i8, ptr %137, i64 230 + store i16 0, ptr %142, align 2 + %.not = icmp eq i64 %135, 0 br i1 %.not, label %._crit_edge, label %.lr.ph -._crit_edge: ; preds = %_ZN5alloc11collections5btree3mem7replace17hd0886a438924d0afE.exit30, %137 - %.sroa.041.0.lcssa = phi ptr [ %134, %137 ], [ %170, %_ZN5alloc11collections5btree3mem7replace17hd0886a438924d0afE.exit30 ] - %140 = getelementptr inbounds nuw i8, ptr %.sroa.035.0, i64 230 - %141 = load i16, ptr %140, align 2, !noundef !6 - %142 = icmp ult i16 %141, 11 - br i1 %142, label %144, label %143, !prof !26 +._crit_edge: ; preds = %_ZN5alloc11collections5btree3mem7replace17hd0886a438924d0afE.exit31, %140 + %.sroa.042.0.lcssa = phi ptr [ %137, %137 ], [ %173, %_ZN5alloc11collections5btree3mem7replace17hd0886a438924d0afE.exit30 ] + %143 = getelementptr inbounds nuw i8, ptr %.sroa.036.0, i64 230 + %144 = load i16, ptr %143, align 2, !noundef !6 + %145 = icmp ult i16 %144, 11 + br i1 %145, label %147, label %146, !prof !26 -143: ; preds = %._crit_edge +146: ; preds = %._crit_edge invoke void @_ZN4core9panicking5panic17h13ee8adf815f0d87E(ptr noalias noundef nonnull readonly align 1 @anon.467722f710d552998dd01561bebdcdae.46, i64 noundef 32, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.467722f710d552998dd01561bebdcdae.50) #28 - to label %.noexc21 unwind label %107 + to label %.noexc21 unwind label %110 -.noexc21: ; preds = %143 +.noexc22: ; preds = %146 unreachable -144: ; preds = %._crit_edge - %145 = zext nneg i16 %141 to i64 - %146 = add nuw nsw i16 %141, 1 - store i16 %146, ptr %140, align 2 - %147 = getelementptr inbounds nuw i8, ptr %.sroa.035.0, i64 184 - %148 = getelementptr inbounds nuw i32, ptr %147, i64 %145 - store i32 %30, ptr %148, align 4 - %149 = getelementptr inbounds nuw { [2 x i64] }, ptr %.sroa.035.0, i64 %145 - store i64 %31, ptr %149, align 8 - %150 = getelementptr inbounds nuw i8, ptr %149, i64 8 - store i64 %32, ptr %150, align 8 - %151 = add nuw nsw i64 %145, 1 - %152 = getelementptr inbounds nuw i8, ptr %.sroa.035.0, i64 232 - %153 = getelementptr inbounds nuw ptr, ptr %152, i64 %151 - store ptr %.sroa.041.0.lcssa, ptr %153, align 8 - %154 = getelementptr inbounds nuw i8, ptr %.sroa.041.0.lcssa, i64 176 - store ptr %.sroa.035.0, ptr %154, align 8, !noalias !495 - %155 = trunc nuw nsw i64 %151 to i16 - %156 = getelementptr inbounds nuw i8, ptr %.sroa.041.0.lcssa, i64 228 - store i16 %155, ptr %156, align 4, !noalias !495 - %157 = icmp eq i64 %.sroa.636.0, 0 - br i1 %157, label %.loopexit, label %.lr.ph.i22 - -.lr.ph.i22: ; preds = %144, %.lr.ph.i22 - %.sroa.03.06.i23 = phi i64 [ %165, %.lr.ph.i22 ], [ %.sroa.636.0, %144 ] - %.sroa.04.05.i24 = phi ptr [ %164, %.lr.ph.i22 ], [ %.sroa.035.0, %144 ] - %158 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i24, i64 230 - %159 = load i16, ptr %158, align 2, !noalias !498, !noundef !6 - %160 = zext nneg i16 %159 to i64 - %161 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i24, i64 232 - %162 = icmp ult i16 %159, 12 - call void @llvm.assume(i1 %162) - %163 = getelementptr inbounds nuw ptr, ptr %161, i64 %160 - %164 = load ptr, ptr %163, align 8, !noalias !501, !nonnull !6, !noundef !6 - %165 = add i64 %.sroa.03.06.i23, -1 - %166 = icmp eq i64 %165, 0 - br i1 %166, label %.loopexit, label %.lr.ph.i22 - -.loopexit: ; preds = %.lr.ph.i22, %144, %183 - %.sroa.0.1 = phi ptr [ %.sroa.0.051, %183 ], [ %.sroa.035.0, %144 ], [ %164, %.lr.ph.i22 ] - %167 = load i64, ptr %2, align 8, !noundef !6 - %168 = add i64 %167, 1 - store i64 %168, ptr %2, align 8 +147: ; preds = %._crit_edge + %148 = zext nneg i16 %144 to i64 + %149 = add nuw nsw i16 %144, 1 + store i16 %149, ptr %143, align 2 + %150 = getelementptr inbounds nuw i8, ptr %.sroa.036.0, i64 184 + %151 = getelementptr inbounds nuw i32, ptr %150, i64 %148 + store i32 %30, ptr %151, align 4 + %152 = getelementptr inbounds nuw { [2 x i64] }, ptr %.sroa.036.0, i64 %148 + store i64 %31, ptr %152, align 8 + %153 = getelementptr inbounds nuw i8, ptr %152, i64 8 + store i64 %32, ptr %153, align 8 + %154 = add nuw nsw i64 %148, 1 + %155 = getelementptr inbounds nuw i8, ptr %.sroa.036.0, i64 232 + %156 = getelementptr inbounds nuw ptr, ptr %155, i64 %154 + store ptr %.sroa.042.0.lcssa, ptr %156, align 8 + %157 = getelementptr inbounds nuw i8, ptr %.sroa.042.0.lcssa, i64 176 + store ptr %.sroa.036.0, ptr %157, align 8, !noalias !495 + %158 = trunc nuw nsw i64 %154 to i16 + %159 = getelementptr inbounds nuw i8, ptr %.sroa.042.0.lcssa, i64 228 + store i16 %158, ptr %159, align 4, !noalias !495 + %160 = icmp eq i64 %.sroa.637.0, 0 + br i1 %160, label %.loopexit, label %.lr.ph.i23 + +.lr.ph.i23: ; preds = %147, %.lr.ph.i23 + %.sroa.03.06.i24 = phi i64 [ %168, %.lr.ph.i22 ], [ %.sroa.637.0, %144 ] + %.sroa.04.05.i25 = phi ptr [ %167, %.lr.ph.i22 ], [ %.sroa.036.0, %144 ] + %161 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i25, i64 230 + %162 = load i16, ptr %161, align 2, !noalias !498, !noundef !6 + %163 = zext nneg i16 %162 to i64 + %164 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i25, i64 232 + %165 = icmp ult i16 %162, 12 + call void @llvm.assume(i1 %165) + %166 = getelementptr inbounds nuw ptr, ptr %164, i64 %163 + %167 = load ptr, ptr %166, align 8, !noalias !501, !nonnull !6, !noundef !6 + %168 = add i64 %.sroa.03.06.i24, -1 + %169 = icmp eq i64 %168, 0 + br i1 %169, label %.loopexit, label %.lr.ph.i23 + +.loopexit: ; preds = %.lr.ph.i23, %147, %186 + %.sroa.0.1 = phi ptr [ %.sroa.0.052, %183 ], [ %.sroa.036.0, %144 ], [ %167, %.lr.ph.i22 ] + %170 = load i64, ptr %2, align 8, !noundef !6 + %171 = add i64 %170, 1 + store i64 %171, ptr %2, align 8 call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %23 -.lr.ph: ; preds = %137, %_ZN5alloc11collections5btree3mem7replace17hd0886a438924d0afE.exit30 - %.sroa.02.062 = phi i64 [ %177, %_ZN5alloc11collections5btree3mem7replace17hd0886a438924d0afE.exit30 ], [ 0, %137 ] - %.sroa.041.060 = phi ptr [ %170, %_ZN5alloc11collections5btree3mem7replace17hd0886a438924d0afE.exit30 ], [ %134, %137 ] - %169 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !504 - %170 = call noalias noundef align 8 dereferenceable_or_null(328) ptr @_RNvCshjvJWTf7CV5_7___rustc12___rust_alloc(i64 noundef range(i64 4, 329) 328, i64 noundef range(i64 4, 9) 8) #30, !noalias !504 - %171 = icmp eq ptr %170, null - br i1 %171, label %172, label %_ZN5alloc11collections5btree3mem7replace17hd0886a438924d0afE.exit30, !prof !27 +.lr.ph: ; preds = %140, %_ZN5alloc11collections5btree3mem7replace17hd0886a438924d0afE.exit31 + %.sroa.02.063 = phi i64 [ %180, %_ZN5alloc11collections5btree3mem7replace17hd0886a438924d0afE.exit30 ], [ 0, %137 ] + %.sroa.042.061 = phi ptr [ %173, %_ZN5alloc11collections5btree3mem7replace17hd0886a438924d0afE.exit30 ], [ %137, %137 ] + %172 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !504 + %173 = call noalias noundef align 8 dereferenceable_or_null(328) ptr @_RNvCshjvJWTf7CV5_7___rustc12___rust_alloc(i64 noundef range(i64 4, 329) 328, i64 noundef range(i64 4, 9) 8) #30, !noalias !504 + %174 = icmp eq ptr %173, null + br i1 %174, label %175, label %_ZN5alloc11collections5btree3mem7replace17hd0886a438924d0afE.exit31, !prof !27 -172: ; preds = %.lr.ph +175: ; preds = %.lr.ph invoke void @_ZN5alloc5alloc18handle_alloc_error17haa66aaa8cfcf3614E(i64 noundef 8, i64 noundef 328) #28 - to label %.noexc.i27 unwind label %173, !noalias !504 + to label %.noexc.i27 unwind label %176, !noalias !504 -.noexc.i27: ; preds = %172 +.noexc.i28: ; preds = %175 unreachable -173: ; preds = %172 - %174 = landingpad { ptr, i32 } +176: ; preds = %175 + %177 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17h85819774d71bbb8dE"(ptr noalias noundef nonnull align 1 %4) #27 - to label %.body unwind label %175, !noalias !504 + to label %.body unwind label %178, !noalias !504 -175: ; preds = %173 - %176 = landingpad { ptr, i32 } +178: ; preds = %176 + %179 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hccd47ddd364deb23E() #29, !noalias !504 unreachable -_ZN5alloc11collections5btree3mem7replace17hd0886a438924d0afE.exit30: ; preds = %.lr.ph - %177 = add nuw i64 %.sroa.02.062, 1 - %178 = getelementptr inbounds nuw i8, ptr %170, i64 176 - store ptr null, ptr %178, align 8, !noalias !504 - %179 = getelementptr inbounds nuw i8, ptr %170, i64 230 - store i16 0, ptr %179, align 2, !noalias !504 - %180 = getelementptr inbounds nuw i8, ptr %170, i64 232 - store ptr %.sroa.041.060, ptr %180, align 8, !noalias !504 - %181 = getelementptr inbounds nuw i8, ptr %.sroa.041.060, i64 176 - store ptr %170, ptr %181, align 8, !noalias !507 - %182 = getelementptr inbounds nuw i8, ptr %.sroa.041.060, i64 228 - store i16 0, ptr %182, align 4, !noalias !514 - %exitcond.not = icmp eq i64 %177, %132 +_ZN5alloc11collections5btree3mem7replace17hd0886a438924d0afE.exit31: ; preds = %.lr.ph + %180 = add nuw i64 %.sroa.02.063, 1 + %181 = getelementptr inbounds nuw i8, ptr %173, i64 176 + store ptr null, ptr %181, align 8, !noalias !504 + %182 = getelementptr inbounds nuw i8, ptr %173, i64 230 + store i16 0, ptr %182, align 2, !noalias !504 + %183 = getelementptr inbounds nuw i8, ptr %173, i64 232 + store ptr %.sroa.042.061, ptr %183, align 8, !noalias !504 + %184 = getelementptr inbounds nuw i8, ptr %.sroa.042.061, i64 176 + store ptr %173, ptr %184, align 8, !noalias !507 + %185 = getelementptr inbounds nuw i8, ptr %.sroa.042.061, i64 228 + store i16 0, ptr %185, align 4, !noalias !514 + %exitcond.not = icmp eq i64 %180, %135 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph -183: ; preds = %29 - %184 = zext nneg i16 %34 to i64 - %185 = add nuw nsw i16 %34, 1 - store i16 %185, ptr %33, align 2, !noalias !515 - %186 = getelementptr inbounds nuw i8, ptr %.sroa.0.051, i64 184 - %187 = getelementptr inbounds nuw i32, ptr %186, i64 %184 - store i32 %30, ptr %187, align 4, !noalias !515 - %188 = getelementptr inbounds nuw { [2 x i64] }, ptr %.sroa.0.051, i64 %184 - store i64 %31, ptr %188, align 8, !noalias !515 - %189 = getelementptr inbounds nuw i8, ptr %188, i64 8 - store i64 %32, ptr %189, align 8, !noalias !515 +186: ; preds = %29 + %187 = zext nneg i16 %34 to i64 + %188 = add nuw nsw i16 %34, 1 + store i16 %188, ptr %33, align 2, !noalias !515 + %189 = getelementptr inbounds nuw i8, ptr %.sroa.0.052, i64 184 + %190 = getelementptr inbounds nuw i32, ptr %189, i64 %187 + store i32 %30, ptr %190, align 4, !noalias !515 + %191 = getelementptr inbounds nuw { [2 x i64] }, ptr %.sroa.0.052, i64 %187 + store i64 %31, ptr %191, align 8, !noalias !515 + %192 = getelementptr inbounds nuw i8, ptr %191, i64 8 + store i64 %32, ptr %192, align 8, !noalias !515 br label %.loopexit -190: ; preds = %.body - %191 = landingpad { ptr, i32 } +193: ; preds = %.body + %194 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hccd47ddd364deb23E() #29 unreachable -192: ; preds = %.body +195: ; preds = %.body resume { ptr, i32 } %.pn } diff --git a/bench/fish-rs/optimized/2jegnuo3b7uy1oojff5kt8alk.ll b/bench/fish-rs/optimized/2jegnuo3b7uy1oojff5kt8alk.ll index 910c20e3b7e..8c85a9b45de 100644 --- a/bench/fish-rs/optimized/2jegnuo3b7uy1oojff5kt8alk.ll +++ b/bench/fish-rs/optimized/2jegnuo3b7uy1oojff5kt8alk.ll @@ -8176,26 +8176,26 @@ define void @_ZN4fish3ast9Traversal13skip_children17hf84b006e48b1b98fE(ptr noali %11 = load ptr, ptr %10, align 8, !nonnull !4 br label %12 -12: ; preds = %18, %.split +13: ; preds = %18, %.split %.sroa.01.0 = phi i64 [ %8, %.split ], [ %19, %18 ] %.not = icmp eq i64 %.sroa.01.0, 0 - br i1 %.not, label %13, label %18, !prof !126 + br i1 %.not, label %14, label %18, !prof !126 -13: ; preds = %12 +14: ; preds = %13 call void @llvm.lifetime.start.p0(ptr nonnull %5) store ptr @anon.c3855246c02a9407b3365b2c3e5c0e37.447, ptr %5, align 8 - %14 = getelementptr inbounds nuw i8, ptr %5, i64 8 - store i64 1, ptr %14, align 8 - %15 = getelementptr inbounds nuw i8, ptr %5, i64 32 - store ptr null, ptr %15, align 8 - %16 = getelementptr inbounds nuw i8, ptr %5, i64 16 - store ptr inttoptr (i64 8 to ptr), ptr %16, align 8 - %17 = getelementptr inbounds nuw i8, ptr %5, i64 24 - store i64 0, ptr %17, align 8 + %15 = getelementptr inbounds nuw i8, ptr %5, i64 8 + store i64 1, ptr %15, align 8 + %16 = getelementptr inbounds nuw i8, ptr %5, i64 32 + store ptr null, ptr %16, align 8 + %17 = getelementptr inbounds nuw i8, ptr %5, i64 16 + store ptr inttoptr (i64 8 to ptr), ptr %17, align 8 + %18 = getelementptr inbounds nuw i8, ptr %5, i64 24 + store i64 0, ptr %18, align 8 call void @_ZN4core9panicking9panic_fmt17h8d16370d7cdeaf7bE(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %5, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.c3855246c02a9407b3365b2c3e5c0e37.448) #26 unreachable -18: ; preds = %12 +24: ; preds = %12 %19 = add nsw i64 %.sroa.01.0, -1 %20 = getelementptr inbounds nuw { i64, [2 x i64] }, ptr %11, i64 %19 %21 = load i64, ptr %20, align 8, !range !49, !noundef !4 @@ -8209,19 +8209,19 @@ define void @_ZN4fish3ast9Traversal13skip_children17hf84b006e48b1b98fE(ptr noali %27 = load ptr, ptr %26, align 8, !nonnull !4, !align !45, !noundef !4 tail call void @llvm.experimental.noalias.scope.decl(metadata !525) tail call void @llvm.experimental.noalias.scope.decl(metadata !528) - %28 = icmp eq ptr %1, %25 - br i1 %28, label %29, label %_ZN4fish3ast12is_same_node17h809b23b2f10f76bbE.exit.thread7, !prof !530 + %29 = icmp eq ptr %1, %25 + br i1 %29, label %30, label %_ZN4fish3ast12is_same_node17h809b23b2f10f76bbE.exit.thread7, !prof !530 -29: ; preds = %23 - %30 = icmp eq ptr %2, %27 - br i1 %30, label %_ZN4fish3ast12is_same_node17h809b23b2f10f76bbE.exit.thread, label %_ZN4fish3ast12is_same_node17h809b23b2f10f76bbE.exit +30: ; preds = %23 + %31 = icmp eq ptr %2, %27 + br i1 %31, label %_ZN4fish3ast12is_same_node17h809b23b2f10f76bbE.exit.thread, label %_ZN4fish3ast12is_same_node17h809b23b2f10f76bbE.exit -_ZN4fish3ast12is_same_node17h809b23b2f10f76bbE.exit: ; preds = %29 +_ZN4fish3ast12is_same_node17h809b23b2f10f76bbE.exit: ; preds = %30 call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !531 - %31 = getelementptr inbounds nuw i8, ptr %2, i64 64 - %32 = load ptr, ptr %31, align 8, !invariant.load !4, !alias.scope !525, !noalias !528, !nonnull !4 + %35 = getelementptr inbounds nuw i8, ptr %2, i64 64 + %36 = load ptr, ptr %35, align 8, !invariant.load !4, !alias.scope !525, !noalias !528, !nonnull !4 call void %32(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %4, ptr noundef nonnull align 1 %1), !noalias !531 - %33 = load i64, ptr %4, align 8, !range !497, !noalias !531, !noundef !4 + %37 = load i64, ptr %4, align 8, !range !497, !noalias !531, !noundef !4 call void @llvm.lifetime.start.p0(ptr nonnull %3), !noalias !531 %34 = getelementptr inbounds nuw i8, ptr %27, i64 64 %35 = load ptr, ptr %34, align 8, !invariant.load !4, !alias.scope !528, !noalias !525, !nonnull !4 @@ -8235,18 +8235,18 @@ _ZN4fish3ast12is_same_node17h809b23b2f10f76bbE.exit: ; preds = %29 _ZN4fish3ast12is_same_node17h809b23b2f10f76bbE.exit.thread7: ; preds = %23, %_ZN4fish3ast12is_same_node17h809b23b2f10f76bbE.exit call void @llvm.lifetime.start.p0(ptr nonnull %6) store ptr @anon.c3855246c02a9407b3365b2c3e5c0e37.451, ptr %6, align 8 - %38 = getelementptr inbounds nuw i8, ptr %6, i64 8 - store i64 1, ptr %38, align 8 - %39 = getelementptr inbounds nuw i8, ptr %6, i64 32 - store ptr null, ptr %39, align 8 - %40 = getelementptr inbounds nuw i8, ptr %6, i64 16 - store ptr inttoptr (i64 8 to ptr), ptr %40, align 8 - %41 = getelementptr inbounds nuw i8, ptr %6, i64 24 - store i64 0, ptr %41, align 8 + %39 = getelementptr inbounds nuw i8, ptr %6, i64 8 + store i64 1, ptr %39, align 8 + %40 = getelementptr inbounds nuw i8, ptr %6, i64 32 + store ptr null, ptr %40, align 8 + %41 = getelementptr inbounds nuw i8, ptr %6, i64 16 + store ptr inttoptr (i64 8 to ptr), ptr %41, align 8 + %42 = getelementptr inbounds nuw i8, ptr %6, i64 24 + store i64 0, ptr %42, align 8 call void @_ZN4core9panicking9panic_fmt17h8d16370d7cdeaf7bE(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %6, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.c3855246c02a9407b3365b2c3e5c0e37.452) #26 unreachable -_ZN4fish3ast12is_same_node17h809b23b2f10f76bbE.exit.thread: ; preds = %_ZN4fish3ast12is_same_node17h809b23b2f10f76bbE.exit, %29 +_ZN4fish3ast12is_same_node17h809b23b2f10f76bbE.exit.thread: ; preds = %_ZN4fish3ast12is_same_node17h809b23b2f10f76bbE.exit, %30 store i64 %19, ptr %7, align 8 ret void } diff --git a/bench/gromacs/optimized/splineutil.ll b/bench/gromacs/optimized/splineutil.ll index 76d1fcb5087..f4c8e00d9ce 100644 --- a/bench/gromacs/optimized/splineutil.ll +++ b/bench/gromacs/optimized/splineutil.ll @@ -1229,7 +1229,7 @@ define void @_ZN3gmx8internal22vectorSecondDerivativeENS_8ArrayRefIKdEEd(ptr dea call void @_ZN3gmx16GromacsExceptionD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #22 call void @_ZN3gmx20ExceptionInitializerD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %6) #22 call void @llvm.lifetime.end.p0(ptr nonnull %6) - br i1 %.045, label %23, label %101 + br i1 %.045, label %23, label %108 .sink.split: ; preds = %.thread, %.thread87 %.pn.pn86.ph = phi { ptr, i32 } [ %20, %.thread87 ], [ %19, %.thread ] @@ -1239,7 +1239,7 @@ define void @_ZN3gmx8internal22vectorSecondDerivativeENS_8ArrayRefIKdEEd(ptr dea 23: ; preds = %.sink.split, %21 %.pn.pn86 = phi { ptr, i32 } [ %22, %21 ], [ %.pn.pn86.ph, %.sink.split ] call void @__cxa_free_exception(ptr %14) #22 - br label %101 + br label %108 24: ; preds = %4 %25 = icmp ugt i64 %11, 1152921504606846975 @@ -1256,9 +1256,9 @@ define void @_ZN3gmx8internal22vectorSecondDerivativeENS_8ArrayRefIKdEEd(ptr dea %28 = getelementptr inbounds nuw i8, ptr %0, i64 16 store ptr %27, ptr %28, align 8, !tbaa !61 %29 = getelementptr i8, ptr %26, i64 8 - %.idx.i.i.i.i.i.i.i = add i64 %10, -8 + %30 = add i64 %10, -8 tail call void @llvm.memset.p0.i64(ptr align 8 %29, i8 0, i64 %.idx.i.i.i.i.i.i.i, i1 false), !tbaa !10 - %30 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %32 = getelementptr inbounds nuw i8, ptr %0, i64 8 store ptr %27, ptr %30, align 8, !tbaa !62 %31 = getelementptr inbounds nuw i8, ptr %1, i64 32 %32 = load double, ptr %31, align 8, !tbaa !10 @@ -1290,7 +1290,7 @@ define void @_ZN3gmx8internal22vectorSecondDerivativeENS_8ArrayRefIKdEEd(ptr dea %56 = icmp ugt i64 %55, 2 br i1 %56, label %.lr.ph, label %._crit_edge -._crit_edge: ; preds = %.lr.ph, %.noexc56 +._crit_edge:; preds = %.lr.ph, %.noexc56 %57 = add nsw i64 %54, -1 %58 = getelementptr inbounds double, ptr %1, i64 %57 %59 = load double, ptr %58, align 8, !tbaa !10 @@ -1322,14 +1322,14 @@ define void @_ZN3gmx8internal22vectorSecondDerivativeENS_8ArrayRefIKdEEd(ptr dea ret void .lr.ph: ; preds = %.noexc56, %.lr.ph - %83 = phi double [ %90, %.lr.ph ], [ %38, %.noexc56 ] - %.092 = phi i64 [ %88, %.lr.ph ], [ 2, %.noexc56 ] - %84 = getelementptr double, ptr %1, i64 %.092 - %85 = getelementptr i8, ptr %84, i64 16 - %86 = load double, ptr %85, align 8, !tbaa !10 - %87 = fneg double %86 - %88 = add nuw i64 %.092, 1 - %89 = getelementptr inbounds double, ptr %1, i64 %88 + %90 = phi double [ %90, %.lr.ph ], [ %38, %.noexc56 ] + %.092 = phi i64 [ %95, %.lr.ph ], [ 2, %.noexc56 ] + %91 = getelementptr double, ptr %1, i64 %.092 + %92 = getelementptr i8, ptr %91, i64 16 + %93 = load double, ptr %92, align 8, !tbaa !10 + %94 = fneg double %93 + %95 = add nuw i64 %.092, 1 + %96 = getelementptr inbounds double, ptr %1, i64 %95 %90 = load double, ptr %89, align 8, !tbaa !10 %91 = tail call double @llvm.fmuladd.f64(double %90, double 1.600000e+01, double %87) %92 = tail call double @llvm.fmuladd.f64(double %83, double -3.000000e+01, double %91) @@ -1345,11 +1345,11 @@ define void @_ZN3gmx8internal22vectorSecondDerivativeENS_8ArrayRefIKdEEd(ptr dea %exitcond.not = icmp eq i64 %88, %55 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !63 -101: ; preds = %21, %23 +108: ; preds = %21, %23 %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn86, %23 ], [ %22, %21 ] resume { ptr, i32 } %.pn.pn.pn -102: ; preds = %18 +109: ; preds = %18 unreachable } diff --git a/bench/hermes/optimized/APInt.ll b/bench/hermes/optimized/APInt.ll index 2a0f84f4877..d4bc6ae0ee2 100644 --- a/bench/hermes/optimized/APInt.ll +++ b/bench/hermes/optimized/APInt.ll @@ -6177,8 +6177,8 @@ _ZN4llvh5APIntlSEj.exit: ; preds = %if.end14 br i1 %tobool.not, label %if.then.i124, label %cleanup.done26.thread195 _ZN4llvh5APIntlSEj.exit.thread: ; preds = %if.end5.i, %if.end17.i.i - %26 = phi i64 [ %and6.i.i.i102, %if.end5.i ], [ %.pre, %if.end17.i.i ] - %and6.i.i = and i64 %26, %shr.i.i10.i97 + %27 = phi i64 [ %and6.i.i.i102, %if.end5.i ], [ %.pre, %if.end17.i.i ] + %and6.i.i = and i64 %27, %shr.i.i10.i97 store i64 %and6.i.i, ptr %arrayidx.i.i.i101, align 8 br i1 %tobool.not, label %if.else.i122, label %if.then.i144.thread @@ -6216,10 +6216,10 @@ cleanup.done26: ; preds = %if.else.i122, %if.t tail call void @llvm.experimental.noalias.scope.decl(metadata !73) call void @_ZN4llvh5APInt6negateEv(ptr noundef nonnull align 8 dereferenceable(12) %agg.tmp20), !noalias !73 %BitWidth.i.i125 = getelementptr inbounds nuw i8, ptr %agg.result, i64 8 - %27 = load i32, ptr %BitWidth.i120184, align 8, !noalias !73 - store i32 %27, ptr %BitWidth.i.i125, align 8, !alias.scope !73 - %28 = load i64, ptr %agg.tmp20, align 8, !noalias !73 - store i64 %28, ptr %agg.result, align 8, !alias.scope !73 + %28 = load i32, ptr %BitWidth.i120184, align 8, !noalias !73 + store i32 %28, ptr %BitWidth.i.i125, align 8, !alias.scope !73 + %29 = load i64, ptr %agg.tmp20, align 8, !noalias !73 + store i64 %29, ptr %agg.result, align 8, !alias.scope !73 store i32 0, ptr %BitWidth.i120184, align 8, !noalias !73 %cmp.i.i.i143 = icmp ult i32 %width, 65 %isnull.i145 = icmp eq i64 %Tmp.sroa.0.1177182, 0 @@ -6228,8 +6228,8 @@ cleanup.done26: ; preds = %if.else.i122, %if.t delete.notnull.i146: ; preds = %cleanup.done26, %if.then.i144.thread %Tmp.sroa.0.1178191194200 = phi i64 [ %18, %if.then.i144.thread ], [ %Tmp.sroa.0.1177182, %cleanup.done26 ] - %29 = inttoptr i64 %Tmp.sroa.0.1178191194200 to ptr - call void @_ZdaPv(ptr noundef nonnull %29) #25 + %30 = inttoptr i64 %Tmp.sroa.0.1178191194200 to ptr + call void @_ZdaPv(ptr noundef nonnull %30) #25 br label %return return: ; preds = %cleanup.action, %cleanup.done26.thread195, %_ZN4llvh5APInt15clearUnusedBitsEv.exit.i55, %if.else.i41, %delete.notnull.i146, %cleanup.done26, %if.else.i65, %_ZN4llvh5APInt15clearUnusedBitsEv.exit.i79, %if.else.i, %_ZN4llvh5APInt15clearUnusedBitsEv.exit.i diff --git a/bench/image-rs/optimized/5ez7udly19o3uj1p.ll b/bench/image-rs/optimized/5ez7udly19o3uj1p.ll index 97127f7141c..863e000f079 100644 --- a/bench/image-rs/optimized/5ez7udly19o3uj1p.ll +++ b/bench/image-rs/optimized/5ez7udly19o3uj1p.ll @@ -33797,10 +33797,10 @@ define void @_ZN5image6codecs4webp8extended10WebPStatic16from_alpha_lossy17hf358 call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #23, !noalias !4389 unreachable -.body: ; preds = %47, %.body36, %29, %25, %185 +.body: ; preds = %47, %.body36, %29, %25, %187 %.pn = phi { ptr, i32 } [ %lpad.thr_comm, %185 ], [ %lpad.thr_comm.split-lp, %.body36 ], [ %30, %29 ], [ %26, %25 ], [ %48, %47 ] invoke void @"_ZN4core3ptr52drop_in_place$LT$image..codecs..webp..vp8..Frame$GT$17h69ec787f0a78d900E"(ptr noalias noundef nonnull align 8 dereferenceable(88) %2) #22 - to label %72 unwind label %186 + to label %72 unwind label %188 29: ; preds = %19 %30 = landingpad { ptr, i32 } @@ -33816,7 +33816,7 @@ define void @_ZN5image6codecs4webp8extended10WebPStatic16from_alpha_lossy17hf358 %35 = getelementptr inbounds nuw i8, ptr %9, i64 16 store i64 %21, ptr %35, align 8, !alias.scope !4398 invoke void @_ZN5image6codecs4webp3vp85Frame9fill_rgba17hb2787f2e6e1f08ccE(ptr noalias noundef nonnull readonly align 8 dereferenceable(88) %2, ptr noalias noundef nonnull align 1 %33, i64 noundef %21) - to label %36 unwind label %185 + to label %36 unwind label %187 .body36: ; preds = %67, %52, %55 %lpad.thr_comm.split-lp = landingpad { ptr, i32 } @@ -33825,32 +33825,32 @@ define void @_ZN5image6codecs4webp8extended10WebPStatic16from_alpha_lossy17hf358 36: ; preds = %31 %37 = load i16, ptr %15, align 2, !noundef !19 - %.not106 = icmp eq i16 %37, 0 - %.pre143 = load i16, ptr %12, align 8 - br i1 %.not106, label %._crit_edge, label %.lr.ph105 + %.not111 = icmp eq i16 %37, 0 + %.pre152 = load i16, ptr %12, align 8 + br i1 %.not111, label %._crit_edge, label %.lr.ph110 -.lr.ph105: ; preds = %36 +.lr.ph110: ; preds = %36 %38 = getelementptr inbounds nuw i8, ptr %1, i64 25 %39 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %.not107 = icmp eq i16 %.pre143, 0 - br i1 %.not107, label %._crit_edge, label %.lr.ph105.split.preheader + %.not112 = icmp eq i16 %.pre152, 0 + br i1 %.not112, label %._crit_edge, label %.lr.ph110.split.preheader -.lr.ph105.split.preheader: ; preds = %.lr.ph105 - %wide.trip.count141 = zext i16 %37 to i64 - br label %.lr.ph105.split +.lr.ph110.split.preheader: ; preds = %.lr.ph110 + %wide.trip.count150 = zext i16 %37 to i64 + br label %.lr.ph110.split -.loopexit: ; preds = %181, %.lr.ph105.split - %exitcond142.not = icmp eq i64 %indvars.iv.next139, %wide.trip.count141 - br i1 %exitcond142.not, label %._crit_edge.loopexit109, label %.lr.ph105.split, !llvm.loop !4401 +.loopexit: ; preds = %183, %.lr.ph110.split + %exitcond151.not = icmp eq i64 %indvars.iv.next148, %wide.trip.count150 + br i1 %exitcond151.not, label %._crit_edge.loopexit114, label %.lr.ph110.split, !llvm.loop !4401 -._crit_edge.loopexit109: ; preds = %.loopexit +._crit_edge.loopexit114: ; preds = %.loopexit %.pre = load i16, ptr %12, align 8 - %.pre144 = load i16, ptr %15, align 2 + %.pre153 = load i16, ptr %15, align 2 br label %._crit_edge -._crit_edge: ; preds = %.lr.ph105, %._crit_edge.loopexit109, %36 - %40 = phi i16 [ %.pre144, %._crit_edge.loopexit109 ], [ 0, %36 ], [ %37, %.lr.ph105 ] - %41 = phi i16 [ %.pre, %._crit_edge.loopexit109 ], [ %.pre143, %36 ], [ 0, %.lr.ph105 ] +._crit_edge: ; preds = %.lr.ph110, %._crit_edge.loopexit114, %36 + %40 = phi i16 [ %.pre153, %._crit_edge.loopexit109 ], [ 0, %36 ], [ %37, %.lr.ph105 ] + %41 = phi i16 [ %.pre, %._crit_edge.loopexit109 ], [ %.pre152, %36 ], [ 0, %.lr.ph105 ] %42 = zext i16 %41 to i32 %43 = zext i16 %40 to i32 call void @llvm.lifetime.start.p0(ptr nonnull %8) @@ -33905,25 +33905,25 @@ define void @_ZN5image6codecs4webp8extended10WebPStatic16from_alpha_lossy17hf358 call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #23, !noalias !4403 unreachable -.lr.ph105.split: ; preds = %.lr.ph105.split.preheader, %.loopexit - %indvars.iv138 = phi i64 [ 0, %.lr.ph105.split.preheader ], [ %indvars.iv.next139, %.loopexit ] - %indvars.iv.next139 = add nuw nsw i64 %indvars.iv138, 1 +.lr.ph110.split: ; preds = %.lr.ph110.split.preheader, %.loopexit + %indvars.iv147 = phi i64 [ 0, %.lr.ph105.split.preheader ], [ %indvars.iv.next148, %.loopexit ] + %indvars.iv.next148 = add nuw nsw i64 %indvars.iv147, 1 %61 = load i16, ptr %12, align 8, !noundef !19 - %.not108 = icmp eq i16 %61, 0 - br i1 %.not108, label %.loopexit, label %.lr.ph + %.not113 = icmp eq i16 %61, 0 + br i1 %.not113, label %.loopexit, label %.lr.ph -.lr.ph: ; preds = %.lr.ph105.split - %62 = icmp eq i64 %indvars.iv138, 0 - %63 = add nsw i64 %indvars.iv138, -1 - %64 = shl nuw nsw i64 %indvars.iv138, 2 +.lr.ph: ; preds = %.lr.ph110.split + %62 = icmp eq i64 %indvars.iv147, 0 + %63 = add nsw i64 %indvars.iv147, -1 + %64 = shl nuw nsw i64 %indvars.iv147, 2 %65 = add nsw i64 %64, -4 %wide.trip.count = zext i16 %61 to i64 br label %83 "_ZN5image7buffer_32ImageBuffer$LT$P$C$Container$GT$8from_raw17h7941bb38d78acc84E.exit": ; preds = %49 - %.sroa.058.0.copyload59 = load i64, ptr %8, align 8, !alias.scope !4411 + %.sroa.059.0.copyload60 = load i64, ptr %8, align 8, !alias.scope !4411 call void @llvm.lifetime.end.p0(ptr nonnull %8) - %66 = icmp eq i64 %.sroa.058.0.copyload59, -9223372036854775808 + %66 = icmp eq i64 %.sroa.059.0.copyload60, -9223372036854775808 br i1 %66, label %67, label %68 67: ; preds = %"_ZN5image7buffer_32ImageBuffer$LT$P$C$Container$GT$8from_raw17h7941bb38d78acc84E.exit.thread", %"_ZN5image7buffer_32ImageBuffer$LT$P$C$Container$GT$8from_raw17h7941bb38d78acc84E.exit" @@ -33935,7 +33935,7 @@ define void @_ZN5image6codecs4webp8extended10WebPStatic16from_alpha_lossy17hf358 %70 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i64 0, ptr %70, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %.sroa.058.0.copyload59, ptr %.sroa.4.0..sroa_idx, align 8 + store i64 %.sroa.059.0.copyload60, ptr %.sroa.4.0..sroa_idx, align 8 %.sroa.4.sroa.4.0..sroa.4.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 24 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.4.sroa.4.0..sroa.4.0..sroa_idx.sroa_idx, ptr noundef nonnull align 8 dereferenceable(16) %69, i64 16, i1 false) %.sroa.4.sroa.5.0..sroa.4.0..sroa_idx.sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 40 @@ -33953,9 +33953,9 @@ define void @_ZN5image6codecs4webp8extended10WebPStatic16from_alpha_lossy17hf358 72: ; preds = %73, %.body %.pn27 = phi { ptr, i32 } [ %74, %73 ], [ %.pn, %.body ] invoke void @"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..extended..AlphaChunk$GT$17he6cc29becc3dfeebE"(ptr noalias noundef nonnull align 8 dereferenceable(32) %1) #22 - to label %196 unwind label %186 + to label %196 unwind label %188 -73: ; preds = %68, %188 +73: ; preds = %68, %190 %74 = landingpad { ptr, i32 } cleanup br label %72 @@ -33979,10 +33979,10 @@ define void @_ZN5image6codecs4webp8extended10WebPStatic16from_alpha_lossy17hf358 call void @llvm.lifetime.end.p0(ptr nonnull %5), !noalias !4419 br label %82 -82: ; preds = %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..extended..AlphaChunk$GT$17he6cc29becc3dfeebE.exit52", %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..extended..AlphaChunk$GT$17he6cc29becc3dfeebE.exit" +82: ; preds = %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..extended..AlphaChunk$GT$17he6cc29becc3dfeebE.exit53", %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..extended..AlphaChunk$GT$17he6cc29becc3dfeebE.exit" ret void -83: ; preds = %.lr.ph, %181 +83: ; preds = %.lr.ph, %183 %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %181 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %84 = load i16, ptr %12, align 8, !noundef !19 @@ -33999,12 +33999,12 @@ default.unreachable: ; preds = %83 unreachable 87: ; preds = %83 - %88 = or i64 %indvars.iv, %indvars.iv138 + %88 = or i64 %indvars.iv, %indvars.iv147 %or.cond.i = icmp eq i64 %88, 0 br i1 %or.cond.i, label %_ZN5image6codecs4webp8extended10WebPStatic13get_predictor17heffafe2d87fabaa7E.exit, label %93 89: ; preds = %83 - %90 = or i64 %indvars.iv, %indvars.iv138 + %90 = or i64 %indvars.iv, %indvars.iv147 %or.cond1.i = icmp eq i64 %90, 0 br i1 %or.cond1.i, label %_ZN5image6codecs4webp8extended10WebPStatic13get_predictor17heffafe2d87fabaa7E.exit, label %114 @@ -34023,7 +34023,7 @@ default.unreachable: ; preds = %83 br i1 %98, label %105, label %.invoke, !prof !480 99: ; preds = %93 - %100 = mul nuw nsw i64 %indvars.iv138, %85 + %100 = mul nuw nsw i64 %indvars.iv147, %85 %101 = add nuw nsw i64 %100, %indvars.iv %102 = shl nuw nsw i64 %101, 2 %103 = add nsw i64 %102, -1 @@ -34035,12 +34035,12 @@ default.unreachable: ; preds = %83 %107 = load i8, ptr %106, align 1, !alias.scope !4428, !noundef !19 br label %_ZN5image6codecs4webp8extended10WebPStatic13get_predictor17heffafe2d87fabaa7E.exit -.invoke: ; preds = %177, %_ZN5image6codecs4webp8extended10WebPStatic13get_predictor17heffafe2d87fabaa7E.exit, %160, %151, %147, %133, %119, %115, %99, %95 - %108 = phi i64 [ %97, %95 ], [ %103, %99 ], [ %117, %115 ], [ %123, %119 ], [ %135, %133 ], [ %149, %147 ], [ %155, %151 ], [ %164, %160 ], [ %175, %_ZN5image6codecs4webp8extended10WebPStatic13get_predictor17heffafe2d87fabaa7E.exit ], [ %179, %177 ] +.invoke: ; preds = %179, %_ZN5image6codecs4webp8extended10WebPStatic13get_predictor17heffafe2d87fabaa7E.exit, %160, %151, %147, %133, %119, %115, %99, %95 + %108 = phi i64 [ %97, %95 ], [ %103, %99 ], [ %117, %115 ], [ %123, %119 ], [ %135, %133 ], [ %149, %147 ], [ %155, %151 ], [ %164, %160 ], [ %177, %_ZN5image6codecs4webp8extended10WebPStatic13get_predictor17heffafe2d87fabaa7E.exit ], [ %181, %177 ] %109 = phi i64 [ %21, %95 ], [ %21, %99 ], [ %21, %115 ], [ %21, %119 ], [ %21, %133 ], [ %21, %147 ], [ %21, %151 ], [ %21, %160 ], [ %.val30, %_ZN5image6codecs4webp8extended10WebPStatic13get_predictor17heffafe2d87fabaa7E.exit ], [ %21, %177 ] %110 = phi ptr [ @anon.dbc83011fcb707429349569d3c6bc524.346, %95 ], [ @anon.dbc83011fcb707429349569d3c6bc524.347, %99 ], [ @anon.dbc83011fcb707429349569d3c6bc524.348, %115 ], [ @anon.dbc83011fcb707429349569d3c6bc524.349, %119 ], [ @anon.dbc83011fcb707429349569d3c6bc524.350, %133 ], [ @anon.dbc83011fcb707429349569d3c6bc524.351, %147 ], [ @anon.dbc83011fcb707429349569d3c6bc524.352, %151 ], [ @anon.dbc83011fcb707429349569d3c6bc524.353, %160 ], [ @anon.dbc83011fcb707429349569d3c6bc524.343, %_ZN5image6codecs4webp8extended10WebPStatic13get_predictor17heffafe2d87fabaa7E.exit ], [ @anon.dbc83011fcb707429349569d3c6bc524.345, %177 ] invoke void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %108, i64 noundef %109, ptr noalias noundef readonly align 8 dereferenceable(24) %110) #21 - to label %.cont unwind label %185 + to label %.cont unwind label %187 .cont: ; preds = %.invoke unreachable @@ -34115,7 +34115,7 @@ default.unreachable: ; preds = %83 br i1 %150, label %157, label %.invoke, !prof !480 151: ; preds = %132 - %152 = mul nuw nsw i64 %indvars.iv138, %85 + %152 = mul nuw nsw i64 %indvars.iv147, %85 %153 = add nuw nsw i64 %152, %indvars.iv %154 = shl nuw nsw i64 %153, 2 %155 = add nsw i64 %154, -1 @@ -34135,7 +34135,7 @@ default.unreachable: ; preds = %83 %165 = icmp samesign ult i64 %164, %21 br i1 %165, label %166, label %.invoke, !prof !480 -166: ; preds = %160 +166:; preds = %160 %167 = getelementptr inbounds nuw i8, ptr %33, i64 %155 %168 = load i8, ptr %167, align 1, !alias.scope !4428, !noundef !19 %169 = getelementptr inbounds nuw i8, ptr %33, i64 %164 @@ -34147,75 +34147,75 @@ default.unreachable: ; preds = %83 _ZN5image6codecs4webp8extended10WebPStatic13get_predictor17heffafe2d87fabaa7E.exit: ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17he2ec3fd6191bb3d2E.exit.i", %128, %125, %111, %105, %89, %87, %83 %.011.i = phi i8 [ %107, %105 ], [ %113, %111 ], [ %127, %125 ], [ %130, %128 ], [ %143, %"_ZN4core6result19Result$LT$T$C$E$GT$6unwrap17he2ec3fd6191bb3d2E.exit.i" ], [ %86, %83 ], [ 0, %87 ], [ 0, %89 ] - %174 = mul nuw nsw i64 %indvars.iv138, %85 - %175 = add nuw nsw i64 %174, %indvars.iv + %176 = mul nuw nsw i64 %indvars.iv147, %85 + %177 = add nuw nsw i64 %176, %indvars.iv %.val30 = load i64, ptr %10, align 8, !noundef !19 - %176 = icmp ult i64 %175, %.val30 - br i1 %176, label %177, label %.invoke, !prof !480 + %178 = icmp ult i64 %177, %.val30 + br i1 %178, label %179, label %.invoke, !prof !480 -177: ; preds = %_ZN5image6codecs4webp8extended10WebPStatic13get_predictor17heffafe2d87fabaa7E.exit - %178 = shl nuw nsw i64 %175, 2 - %179 = or disjoint i64 %178, 3 - %180 = icmp samesign ult i64 %179, %21 - br i1 %180, label %181, label %.invoke, !prof !480 +179: ; preds = %_ZN5image6codecs4webp8extended10WebPStatic13get_predictor17heffafe2d87fabaa7E.exit + %180 = shl nuw nsw i64 %177, 2 + %181 = or disjoint i64 %180, 3 + %182 = icmp samesign ult i64 %181, %21 + br i1 %182, label %183, label %.invoke, !prof !480 -181: ; preds = %177 +183: ; preds = %179 %.val = load ptr, ptr %39, align 8, !nonnull !19, !noundef !19 - %182 = getelementptr inbounds nuw i8, ptr %.val, i64 %175 - %183 = load i8, ptr %182, align 1, !noundef !19 - %.narrow = add i8 %183, %.011.i - %184 = getelementptr inbounds nuw i8, ptr %33, i64 %179 - store i8 %.narrow, ptr %184, align 1 + %184 = getelementptr inbounds nuw i8, ptr %.val, i64 %177 + %185 = load i8, ptr %184, align 1, !noundef !19 + %.narrow = add i8 %185, %.011.i + %186 = getelementptr inbounds nuw i8, ptr %33, i64 %181 + store i8 %.narrow, ptr %186, align 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %.loopexit, label %83 -185: ; preds = %.invoke, %31 +187: ; preds = %.invoke, %31 %lpad.thr_comm = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17h232faed5db661fa9E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %9) #22 - to label %.body unwind label %186 + to label %.body unwind label %188 -186: ; preds = %185, %72, %.body - %187 = landingpad { ptr, i32 } +188: ; preds = %187, %72, %.body + %189 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #23 unreachable -188: ; preds = %23 +190: ; preds = %23 store i32 1, ptr %24, align 8, !noalias !4431 call void @llvm.lifetime.end.p0(ptr nonnull %7), !noalias !4389 store i8 4, ptr %0, align 8 - %.sroa.454.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i8 0, ptr %.sroa.454.0..sroa_idx, align 8 + %.sroa.455.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i8 0, ptr %.sroa.455.0..sroa_idx, align 8 %.sroa.5.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 9 store i8 3, ptr %.sroa.5.0..sroa_idx, align 1 - %.sroa.655.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 40 - store ptr %24, ptr %.sroa.655.0..sroa_idx, align 8 + %.sroa.656.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 40 + store ptr %24, ptr %.sroa.656.0..sroa_idx, align 8 %.sroa.7.0..sroa_idx = getelementptr inbounds nuw i8, ptr %0, i64 48 store ptr @anon.1f4c41b43b6b1ec3b0d7299236cb1468.22.llvm.9742654456972663382, ptr %.sroa.7.0..sroa_idx, align 8 invoke void @"_ZN4core3ptr52drop_in_place$LT$image..codecs..webp..vp8..Frame$GT$17h69ec787f0a78d900E"(ptr noalias noundef nonnull align 8 dereferenceable(88) %2) to label %189 unwind label %73 -189: ; preds = %188 +191: ; preds = %190 call void @llvm.lifetime.start.p0(ptr nonnull %4), !noalias !4432 call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17hf92e389c95c4703bE.llvm.9832446184049035033"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %4, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %1) - %190 = getelementptr inbounds nuw i8, ptr %4, i64 8 - %191 = load i64, ptr %190, align 8, !range !101, !noalias !4432, !noundef !19 - %.not.i.i.i.i50 = icmp eq i64 %191, 0 - br i1 %.not.i.i.i.i50, label %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..extended..AlphaChunk$GT$17he6cc29becc3dfeebE.exit52", label %192 - -192: ; preds = %189 - %193 = load ptr, ptr %4, align 8, !noalias !4432, !nonnull !19, !noundef !19 - %194 = getelementptr inbounds nuw i8, ptr %4, i64 16 - %195 = load i64, ptr %194, align 8, !noalias !4432, !noundef !19 - tail call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %10, ptr noundef nonnull %193, i64 noundef %191, i64 noundef %195) - br label %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..extended..AlphaChunk$GT$17he6cc29becc3dfeebE.exit52" - -"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..extended..AlphaChunk$GT$17he6cc29becc3dfeebE.exit52": ; preds = %189, %192 + %192 = getelementptr inbounds nuw i8, ptr %4, i64 8 + %193 = load i64, ptr %192, align 8, !range !101, !noalias !4432, !noundef !19 + %.not.i.i.i.i51 = icmp eq i64 %193, 0 + br i1 %.not.i.i.i.i51, label %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..extended..AlphaChunk$GT$17he6cc29becc3dfeebE.exit53", label %194 + +194: ; preds = %191 + %195 = load ptr, ptr %4, align 8, !noalias !4432, !nonnull !19, !noundef !19 + %196 = getelementptr inbounds nuw i8, ptr %4, i64 16 + %197 = load i64, ptr %196, align 8, !noalias !4432, !noundef !19 + tail call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.9832446184049035033"(ptr noalias noundef nonnull readonly align 1 %10, ptr noundef nonnull %195, i64 noundef %193, i64 noundef %197) + br label %"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..extended..AlphaChunk$GT$17he6cc29becc3dfeebE.exit53" + +"_ZN4core3ptr62drop_in_place$LT$image..codecs..webp..extended..AlphaChunk$GT$17he6cc29becc3dfeebE.exit53": ; preds = %191, %194 call void @llvm.lifetime.end.p0(ptr nonnull %4), !noalias !4432 br label %82 -196: ; preds = %72 +198: ; preds = %72 resume { ptr, i32 } %.pn27 } diff --git a/bench/libigl/optimized/min_quad_with_fixed.2.ll b/bench/libigl/optimized/min_quad_with_fixed.2.ll index d0339e50a27..5d53c8d89c8 100644 --- a/bench/libigl/optimized/min_quad_with_fixed.2.ll +++ b/bench/libigl/optimized/min_quad_with_fixed.2.ll @@ -10076,11 +10076,11 @@ _ZN5Eigen8internal23check_size_for_overflowIiEEvm.exit.i.i.i: ; preds = %28 %35 = getelementptr inbounds nuw i8, ptr %2, i64 8 %36 = load i64, ptr %35, align 8, !tbaa !96 %.not.i.i100 = icmp eq i64 %34, %36 - %.pre218.pre = load ptr, ptr %2, align 8, !tbaa !75, !noalias !290 + %.pre219.pre = load ptr, ptr %2, align 8, !tbaa !75, !noalias !290 br i1 %.not.i.i100, label %43, label %37 37: ; preds = %33 - tail call void @free(ptr noundef %.pre218.pre) #33 + tail call void @free(ptr noundef %.pre219.pre) #33 %38 = icmp sgt i64 %34, 0 br i1 %38, label %_ZN5Eigen8internal23check_size_for_overflowIiEEvm.exit.i.i.i103, label %.sink.split.i.i101 @@ -10094,7 +10094,7 @@ _ZN5Eigen8internal23check_size_for_overflowIiEEvm.exit.i.i.i103: ; preds = %37 %42 = tail call ptr @__cxa_allocate_exception(i64 8) #33 store ptr getelementptr inbounds nuw inrange(-16, 24) (i8, ptr @_ZTVSt9bad_alloc, i64 16), ptr %42, align 8, !tbaa !101 invoke void @__cxa_throw(ptr nonnull %42, ptr nonnull @_ZTISt9bad_alloc, ptr nonnull @_ZNSt9bad_allocD1Ev) #36 - to label %.cont unwind label %92 + to label %.cont unwind label %105 .cont: ; preds = %.invoke unreachable @@ -10105,7 +10105,7 @@ _ZN5Eigen8internal23check_size_for_overflowIiEEvm.exit.i.i.i103: ; preds = %37 br label %43 43: ; preds = %.sink.split.i.i101, %33 - %.pre = phi ptr [ %.sink.i.i102, %.sink.split.i.i101 ], [ %.pre218.pre, %33 ] + %.pre = phi ptr [ %.sink.i.i102, %.sink.split.i.i101 ], [ %.pre219.pre, %33 ] store i64 %34, ptr %35, align 8, !tbaa !96 %44 = icmp slt i64 %34, 1 br i1 %44, label %.loopexit192, label %45 @@ -10132,14 +10132,14 @@ _ZN5Eigen8internal23check_size_for_overflowIiEEvm.exit.i.i.i103: ; preds = %37 %or.cond = icmp sgt i32 %.sroa.speculated151, 0 br i1 %or.cond, label %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit -_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i: ; preds = %.loopexit192, %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i +_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i:; preds = %.loopexit192, %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i %.05.i.i.i.i.i.i.i.i.i.i.i = phi i64 [ %57, %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i ], [ 0, %.loopexit192 ] %54 = trunc i64 %.05.i.i.i.i.i.i.i.i.i.i.i to i32 %55 = mul nsw i32 %53, %54 %56 = getelementptr inbounds nuw i32, ptr %.pre, i64 %.05.i.i.i.i.i.i.i.i.i.i.i store i32 %55, ptr %56, align 4, !tbaa !97 %57 = add nuw nsw i64 %.05.i.i.i.i.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %57, %48 + %61 = icmp eq i64 %57, %48 br i1 %exitcond.not.i.i.i.i.i.i.i.i.i.i.i, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit, label %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i, !llvm.loop !294 _ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit: ; preds = %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i, %.loopexit192 @@ -10147,200 +10147,200 @@ _ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EE .lr.ph195: ; preds = %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit %.not83 = icmp eq ptr %3, null - %58 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %59 = load ptr, ptr %58, align 8, !tbaa !138 - %60 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %61 = load ptr, ptr %60, align 8, !tbaa !122 - %62 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %63 = load ptr, ptr %62, align 8, !tbaa !136 - %64 = icmp eq ptr %63, null - %wide.trip.count211 = and i64 %6, 2147483647 - br i1 %64, label %.lr.ph195.split.us, label %.lr.ph195.split + %71 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %72 = load ptr, ptr %71, align 8, !tbaa !138 + %73 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %74 = load ptr, ptr %73, align 8, !tbaa !122 + %75 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %76 = load ptr, ptr %75, align 8, !tbaa !136 + %77 = icmp eq ptr %76, null + %wide.trip.count212 = and i64 %6, 2147483647 + br i1 %77, label %.lr.ph195.split.us, label %.lr.ph195.split .lr.ph195.split.us: ; preds = %.lr.ph195, %._crit_edge.us - %indvars.iv208 = phi i64 [ %indvars.iv.next209, %._crit_edge.us ], [ 0, %.lr.ph195 ] - %65 = trunc nuw nsw i64 %indvars.iv208 to i32 - br i1 %.not83, label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit.us, label %66 + %indvars.iv209 = phi i64 [ %indvars.iv.next210, %._crit_edge.us ], [ 0, %.lr.ph195 ] + %78 = trunc nuw nsw i64 %indvars.iv209 to i32 + br i1 %.not83, label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit.us, label %79 -66: ; preds = %.lr.ph195.split.us - %67 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv208 - %68 = load i32, ptr %67, align 4, !tbaa !97 +79: ; preds = %.lr.ph195.split.us + %80 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv209 + %81 = load i32, ptr %80, align 4, !tbaa !97 br label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit.us -_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit.us: ; preds = %66, %.lr.ph195.split.us - %.071.us = phi i32 [ %68, %66 ], [ %65, %.lr.ph195.split.us ] - %69 = sext i32 %.071.us to i64 - %70 = getelementptr inbounds i32, ptr %61, i64 %69 - %71 = load i32, ptr %70, align 4, !tbaa !97 - %72 = getelementptr i8, ptr %70, i64 4 - %73 = load i32, ptr %72, align 4, !tbaa !97 - %74 = sext i32 %73 to i64 - %75 = icmp slt i32 %71, %73 - br i1 %75, label %.lr.ph.us.preheader, label %._crit_edge.us +_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit.us: ; preds = %79, %.lr.ph195.split.us + %.071.us = phi i32 [ %81, %66 ], [ %78, %.lr.ph195.split.us ] + %82 = sext i32 %.071.us to i64 + %83 = getelementptr inbounds i32, ptr %74, i64 %82 + %84 = load i32, ptr %83, align 4, !tbaa !97 + %85 = getelementptr i8, ptr %83, i64 4 + %86 = load i32, ptr %85, align 4, !tbaa !97 + %87 = sext i32 %86 to i64 + %88 = icmp slt i32 %84, %86 + br i1 %88, label %.lr.ph.us.preheader, label %._crit_edge.us .lr.ph.us.preheader: ; preds = %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit.us - %76 = sext i32 %71 to i64 + %89 = sext i32 %84 to i64 br label %.lr.ph.us ._crit_edge.us: ; preds = %.lr.ph.us, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit.us - %indvars.iv.next209 = add nuw nsw i64 %indvars.iv208, 1 - %exitcond212.not = icmp eq i64 %indvars.iv.next209, %wide.trip.count211 - br i1 %exitcond212.not, label %.lr.ph203, label %.lr.ph195.split.us, !llvm.loop !295 + %indvars.iv.next210 = add nuw nsw i64 %indvars.iv209, 1 + %exitcond213.not = icmp eq i64 %indvars.iv.next210, %wide.trip.count212 + br i1 %exitcond213.not, label %.lr.ph203, label %.lr.ph195.split.us, !llvm.loop !295 .lr.ph.us: ; preds = %.lr.ph.us.preheader, %.lr.ph.us - %.sroa.7117.0193.us = phi i64 [ %82, %.lr.ph.us ], [ %76, %.lr.ph.us.preheader ] - %77 = getelementptr inbounds i32, ptr %59, i64 %.sroa.7117.0193.us - %78 = load i32, ptr %77, align 4, !tbaa !97 - %79 = sext i32 %78 to i64 - %80 = getelementptr inbounds i32, ptr %.pre, i64 %79 - %81 = load i32, ptr %80, align 4, !tbaa !97 - %.sroa.speculated.us = tail call i32 @llvm.smin.i32(i32 %65, i32 %81) - store i32 %.sroa.speculated.us, ptr %80, align 4, !tbaa !97 - %82 = add nsw i64 %.sroa.7117.0193.us, 1 - %exitcond207.not = icmp eq i64 %82, %74 - br i1 %exitcond207.not, label %._crit_edge.us, label %.lr.ph.us, !llvm.loop !296 + %.sroa.7117.0193.us = phi i64 [ %95, %.lr.ph.us ], [ %89, %.lr.ph.us.preheader ] + %90 = getelementptr inbounds i32, ptr %72, i64 %.sroa.7117.0193.us + %91 = load i32, ptr %90, align 4, !tbaa !97 + %92 = sext i32 %91 to i64 + %93 = getelementptr inbounds i32, ptr %.pre, i64 %92 + %94 = load i32, ptr %93, align 4, !tbaa !97 + %.sroa.speculated.us = tail call i32 @llvm.smin.i32(i32 %78, i32 %94) + store i32 %.sroa.speculated.us, ptr %93, align 4, !tbaa !97 + %95 = add nsw i64 %.sroa.7117.0193.us, 1 + %exitcond208.not = icmp eq i64 %95, %87 + br i1 %exitcond208.not, label %._crit_edge.us, label %.lr.ph.us, !llvm.loop !296 .lr.ph203: ; preds = %._crit_edge, %._crit_edge.us - %83 = load ptr, ptr %1, align 8, !tbaa !75 + %96 = load ptr, ptr %1, align 8, !tbaa !75 %.not = icmp eq ptr %3, null - %84 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %85 = load ptr, ptr %84, align 8, !tbaa !138 - %86 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %87 = load ptr, ptr %86, align 8, !tbaa !122 - %88 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %89 = load ptr, ptr %88, align 8, !tbaa !136 - %90 = icmp eq ptr %89, null + %97 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %98 = load ptr, ptr %97, align 8, !tbaa !138 + %99 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %100 = load ptr, ptr %99, align 8, !tbaa !122 + %101 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %102 = load ptr, ptr %101, align 8, !tbaa !136 + %103 = icmp eq ptr %102, null %sext = shl i64 %9, 32 - %91 = ashr exact i64 %sext, 32 - %wide.trip.count216 = and i64 %6, 2147483647 - br label %114 + %104 = ashr exact i64 %sext, 32 + %wide.trip.count217 = and i64 %6, 2147483647 + br label %127 -92: ; preds = %.invoke - %93 = landingpad { ptr, i32 } +105: ; preds = %.invoke + %106 = landingpad { ptr, i32 } cleanup tail call void @free(ptr noundef %.sroa.0131.0181) #33 br label %.body .lr.ph195.split: ; preds = %.lr.ph195, %._crit_edge %indvars.iv = phi i64 [ %indvars.iv.next, %._crit_edge ], [ 0, %.lr.ph195 ] - %94 = trunc nuw nsw i64 %indvars.iv to i32 - br i1 %.not83, label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit, label %95 + %107 = trunc nuw nsw i64 %indvars.iv to i32 + br i1 %.not83, label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit, label %108 -95: ; preds = %.lr.ph195.split - %96 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv - %97 = load i32, ptr %96, align 4, !tbaa !97 +108: ; preds = %.lr.ph195.split + %109 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv + %110 = load i32, ptr %109, align 4, !tbaa !97 br label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit -_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit: ; preds = %95, %.lr.ph195.split - %.071 = phi i32 [ %97, %95 ], [ %94, %.lr.ph195.split ] - %98 = sext i32 %.071 to i64 - %99 = getelementptr inbounds i32, ptr %61, i64 %98 - %100 = load i32, ptr %99, align 4, !tbaa !97 - %101 = sext i32 %100 to i64 - %102 = getelementptr inbounds i32, ptr %63, i64 %98 - %103 = load i32, ptr %102, align 4, !tbaa !97 - %104 = sext i32 %103 to i64 - %105 = add nsw i64 %104, %101 - %106 = icmp sgt i32 %103, 0 - br i1 %106, label %.lr.ph, label %._crit_edge +_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit: ; preds = %108, %.lr.ph195.split + %.071 = phi i32 [ %110, %95 ], [ %107, %.lr.ph195.split ] + %111 = sext i32 %.071 to i64 + %112 = getelementptr inbounds i32, ptr %74, i64 %111 + %113 = load i32, ptr %112, align 4, !tbaa !97 + %114 = sext i32 %113 to i64 + %115 = getelementptr inbounds i32, ptr %76, i64 %111 + %116 = load i32, ptr %115, align 4, !tbaa !97 + %117 = sext i32 %116 to i64 + %118 = add nsw i64 %117, %114 + %119 = icmp sgt i32 %116, 0 + br i1 %119, label %.lr.ph, label %._crit_edge ._crit_edge: ; preds = %.lr.ph, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count211 + %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count212 br i1 %exitcond.not, label %.lr.ph203, label %.lr.ph195.split, !llvm.loop !295 .lr.ph: ; preds = %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit, %.lr.ph - %.sroa.7117.0193 = phi i64 [ %112, %.lr.ph ], [ %101, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit ] - %107 = getelementptr inbounds i32, ptr %59, i64 %.sroa.7117.0193 - %108 = load i32, ptr %107, align 4, !tbaa !97 - %109 = sext i32 %108 to i64 - %110 = getelementptr inbounds i32, ptr %.pre, i64 %109 - %111 = load i32, ptr %110, align 4, !tbaa !97 - %.sroa.speculated = tail call i32 @llvm.smin.i32(i32 %94, i32 %111) - store i32 %.sroa.speculated, ptr %110, align 4, !tbaa !97 - %112 = add nsw i64 %.sroa.7117.0193, 1 - %113 = icmp slt i64 %112, %105 - br i1 %113, label %.lr.ph, label %._crit_edge, !llvm.loop !296 + %.sroa.7117.0193 = phi i64 [ %125, %.lr.ph ], [ %114, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit ] + %120 = getelementptr inbounds i32, ptr %72, i64 %.sroa.7117.0193 + %121 = load i32, ptr %120, align 4, !tbaa !97 + %122 = sext i32 %121 to i64 + %123 = getelementptr inbounds i32, ptr %.pre, i64 %122 + %124 = load i32, ptr %123, align 4, !tbaa !97 + %.sroa.speculated = tail call i32 @llvm.smin.i32(i32 %107, i32 %124) + store i32 %.sroa.speculated, ptr %123, align 4, !tbaa !97 + %125 = add nsw i64 %.sroa.7117.0193, 1 + %126 = icmp slt i64 %125, %118 + br i1 %126, label %.lr.ph, label %._crit_edge, !llvm.loop !296 ._crit_edge204: ; preds = %._crit_edge201, %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit tail call void @free(ptr noundef %.sroa.0131.0181) #33 tail call void @free(ptr noundef %.sroa.0139.0166173180) #33 ret i32 0 -114: ; preds = %.lr.ph203, %._crit_edge201 - %indvars.iv213 = phi i64 [ 0, %.lr.ph203 ], [ %indvars.iv.next214, %._crit_edge201 ] - %115 = icmp sge i64 %indvars.iv213, %91 - %116 = getelementptr inbounds nuw i32, ptr %.sroa.0131.0181, i64 %indvars.iv213 - %117 = trunc nuw nsw i64 %indvars.iv213 to i32 - store i32 %117, ptr %116, align 4, !tbaa !97 - %118 = getelementptr inbounds nuw i32, ptr %.sroa.0139.0166173180, i64 %indvars.iv213 - store i32 %117, ptr %118, align 4, !tbaa !97 - %119 = getelementptr inbounds nuw i32, ptr %83, i64 %indvars.iv213 - store i32 %7, ptr %119, align 4, !tbaa !97 - br i1 %.not, label %123, label %120 - -120: ; preds = %114 - %121 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv213 - %122 = load i32, ptr %121, align 4, !tbaa !97 - br label %123 +127: ; preds = %.lr.ph203, %._crit_edge201 + %indvars.iv214 = phi i64 [ 0, %.lr.ph203 ], [ %indvars.iv.next215, %._crit_edge201 ] + %128 = icmp sge i64 %indvars.iv214, %104 + %129 = getelementptr inbounds nuw i32, ptr %.sroa.0131.0181, i64 %indvars.iv214 + %130 = trunc nuw nsw i64 %indvars.iv214 to i32 + store i32 %130, ptr %129, align 4, !tbaa !97 + %131 = getelementptr inbounds nuw i32, ptr %.sroa.0139.0166173180, i64 %indvars.iv214 + store i32 %130, ptr %131, align 4, !tbaa !97 + %132 = getelementptr inbounds nuw i32, ptr %96, i64 %indvars.iv214 + store i32 %7, ptr %132, align 4, !tbaa !97 + br i1 %.not, label %136, label %133 + +133: ; preds = %127 + %134 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv214 + %135 = load i32, ptr %134, align 4, !tbaa !97 + br label %136 -123: ; preds = %120, %114 - %.056 = phi i32 [ %122, %120 ], [ %117, %114 ] - %124 = sext i32 %.056 to i64 - %125 = getelementptr inbounds i32, ptr %87, i64 %124 - %126 = load i32, ptr %125, align 4, !tbaa !97 - %127 = sext i32 %126 to i64 - br i1 %90, label %128, label %132 +136: ; preds = %133, %127 + %.056 = phi i32 [ %135, %120 ], [ %130, %114 ] + %137 = sext i32 %.056 to i64 + %138 = getelementptr inbounds i32, ptr %100, i64 %137 + %139 = load i32, ptr %138, align 4, !tbaa !97 + %140 = sext i32 %139 to i64 + br i1 %103, label %141, label %145 -128: ; preds = %123 - %129 = getelementptr i8, ptr %125, i64 4 - %130 = load i32, ptr %129, align 4, !tbaa !97 - %131 = sext i32 %130 to i64 +141: ; preds = %136 + %142 = getelementptr i8, ptr %138, i64 4 + %143 = load i32, ptr %142, align 4, !tbaa !97 + %144 = sext i32 %143 to i64 br label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 -132: ; preds = %123 - %133 = getelementptr inbounds i32, ptr %89, i64 %124 - %134 = load i32, ptr %133, align 4, !tbaa !97 - %135 = sext i32 %134 to i64 - %136 = add nsw i64 %135, %127 +145: ; preds = %136 + %146 = getelementptr inbounds i32, ptr %102, i64 %137 + %147 = load i32, ptr %146, align 4, !tbaa !97 + %148 = sext i32 %147 to i64 + %149 = add nsw i64 %148, %140 br label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 -_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109: ; preds = %128, %132 - %.sink.i108 = phi i64 [ %131, %128 ], [ %136, %132 ] - %137 = icmp sle i64 %.sink.i108, %127 - %.not190196 = select i1 %137, i1 %115, i1 false +_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109: ; preds = %141, %145 + %.sink.i108 = phi i64 [ %144, %128 ], [ %149, %132 ] + %150 = icmp sle i64 %.sink.i108, %140 + %.not190196 = select i1 %150, i1 %128, i1 false br i1 %.not190196, label %._crit_edge201, label %.lr.ph200 ._crit_edge201: ; preds = %159, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 - %indvars.iv.next214 = add nuw nsw i64 %indvars.iv213, 1 - %exitcond217.not = icmp eq i64 %indvars.iv.next214, %wide.trip.count216 - br i1 %exitcond217.not, label %._crit_edge204, label %114, !llvm.loop !297 + %indvars.iv.next215 = add nuw nsw i64 %indvars.iv214, 1 + %exitcond218.not = icmp eq i64 %indvars.iv.next215, %wide.trip.count217 + br i1 %exitcond218.not, label %._crit_edge204, label %127, !llvm.loop !297 .lr.ph200: ; preds = %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109, %159 - %138 = phi i1 [ %161, %159 ], [ %137, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 ] - %.066199 = phi i32 [ %.167, %159 ], [ %117, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 ] - %.069198 = phi i1 [ %spec.select, %159 ], [ %115, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 ] - %.sroa.7.0197 = phi i64 [ %160, %159 ], [ %127, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 ] - br i1 %138, label %143, label %139 - -139: ; preds = %.lr.ph200 - %140 = getelementptr inbounds i32, ptr %85, i64 %.sroa.7.0197 - %141 = load i32, ptr %140, align 4, !tbaa !97 - %142 = sext i32 %141 to i64 - br label %143 + %151 = phi i1 [ %161, %159 ], [ %150, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 ] + %.066199 = phi i32 [ %.167, %159 ], [ %130, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 ] + %.069198 = phi i1 [ %spec.select, %159 ], [ %128, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 ] + %.sroa.7.0197 = phi i64 [ %160, %159 ], [ %140, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 ] + br i1 %151, label %156, label %152 + +152: ; preds = %.lr.ph200 + %153 = getelementptr inbounds i32, ptr %98, i64 %.sroa.7.0197 + %154 = load i32, ptr %153, align 4, !tbaa !97 + %155 = sext i32 %154 to i64 + br label %156 -143: ; preds = %.lr.ph200, %139 - %.055 = phi i64 [ %142, %139 ], [ %indvars.iv213, %.lr.ph200 ] - %144 = icmp eq i64 %.055, %indvars.iv213 - %spec.select = select i1 %144, i1 true, i1 %.069198 - %145 = getelementptr inbounds i32, ptr %.pre, i64 %.055 - %146 = load i32, ptr %145, align 4, !tbaa !97 - %147 = sext i32 %146 to i64 - %.not78 = icmp sgt i64 %indvars.iv213, %147 - br i1 %.not78, label %148, label %159 +156: ; preds = %.lr.ph200, %152 + %.055 = phi i64 [ %155, %139 ], [ %indvars.iv214, %.lr.ph200 ] + %157 = icmp eq i64 %.055, %indvars.iv214 + %spec.select = select i1 %157, i1 true, i1 %.069198 + %158 = getelementptr inbounds i32, ptr %.pre, i64 %.055 + %159 = load i32, ptr %158, align 4, !tbaa !97 + %160 = sext i32 %159 to i64 + %.not78 = icmp sgt i64 %indvars.iv214, %160 + br i1 %.not78, label %161, label %159 -148: ; preds = %143 - %.014.in18.i = getelementptr inbounds i32, ptr %.sroa.0131.0181, i64 %147 +161: ; preds = %156 + %.014.in18.i = getelementptr inbounds i32, ptr %.sroa.0131.0181, i64 %160 %.01419.i = load i32, ptr %.014.in18.i, align 4, !tbaa !97 %.pn20.i = sext i32 %.01419.i to i64 %.0.in21.i = getelementptr inbounds i32, ptr %.sroa.0131.0181, i64 %.pn20.i @@ -10348,12 +10348,12 @@ _ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS %.not23.i = icmp eq i32 %.022.i, %.01419.i br i1 %.not23.i, label %.loopexit, label %.lr.ph.i -.lr.ph.i: ; preds = %148, %.lr.ph.i +.lr.ph.i: ; preds = %161, %.lr.ph.i %.025.i = phi i32 [ %.0.i, %.lr.ph.i ], [ %.022.i, %148 ] - %.01524.i = phi i32 [ %.025.i, %.lr.ph.i ], [ %146, %148 ] - %149 = sext i32 %.01524.i to i64 - %150 = getelementptr inbounds i32, ptr %.sroa.0131.0181, i64 %149 - store i32 %.025.i, ptr %150, align 4, !tbaa !97 + %.01524.i = phi i32 [ %.025.i, %.lr.ph.i ], [ %159, %148 ] + %162 = sext i32 %.01524.i to i64 + %163 = getelementptr inbounds i32, ptr %.sroa.0131.0181, i64 %162 + store i32 %.025.i, ptr %163, align 4, !tbaa !97 %.pn16.i = sext i32 %.025.i to i64 %.014.in.i = getelementptr inbounds i32, ptr %.sroa.0131.0181, i64 %.pn16.i %.014.i = load i32, ptr %.014.in.i, align 4, !tbaa !97 @@ -10363,16 +10363,16 @@ _ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS %.not.i = icmp eq i32 %.0.i, %.014.i br i1 %.not.i, label %.loopexit, label %.lr.ph.i, !llvm.loop !298 -.loopexit: ; preds = %.lr.ph.i, %148 +.loopexit: ; preds = %.lr.ph.i, %161 %.pre-phi = phi i64 [ %.pn20.i, %148 ], [ %.pn.i, %.lr.ph.i ] %.014.lcssa.i = phi i32 [ %.01419.i, %148 ], [ %.014.i, %.lr.ph.i ] - %151 = getelementptr inbounds i32, ptr %.sroa.0139.0166173180, i64 %.pre-phi - %152 = load i32, ptr %151, align 4, !tbaa !97 - %153 = zext i32 %152 to i64 - %.not79 = icmp eq i64 %indvars.iv213, %153 - br i1 %.not79, label %159, label %154 + %164 = getelementptr inbounds i32, ptr %.sroa.0139.0166173180, i64 %.pre-phi + %165 = load i32, ptr %164, align 4, !tbaa !97 + %166 = zext i32 %165 to i64 + %.not79 = icmp eq i64 %indvars.iv214, %166 + br i1 %.not79, label %159, label %172 -154: ; preds = %.loopexit +172: ; preds = %.loopexit %155 = sext i32 %152 to i64 %156 = getelementptr inbounds i32, ptr %83, i64 %155 store i32 %117, ptr %156, align 4, !tbaa !97 @@ -10389,9 +10389,9 @@ _ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS %.not190 = select i1 %161, i1 %spec.select, i1 false br i1 %.not190, label %._crit_edge201, label %.lr.ph200, !llvm.loop !299 -.body: ; preds = %92, %20 +.body: ; preds = %105, %20 %.sroa.0139.0167 = phi ptr [ %.sroa.0139.0166173180, %92 ], [ %calloc, %20 ] - %.pn84.pn.pn.pn.pn = phi { ptr, i32 } [ %93, %92 ], [ %21, %20 ] + %.pn84.pn.pn.pn.pn = phi { ptr, i32 } [ %106, %92 ], [ %21, %20 ] tail call void @free(ptr noundef %.sroa.0139.0167) #33 resume { ptr, i32 } %.pn84.pn.pn.pn.pn } diff --git a/bench/llvm/optimized/APInt.ll b/bench/llvm/optimized/APInt.ll index ff289dc26a2..cb5172e4702 100644 --- a/bench/llvm/optimized/APInt.ll +++ b/bench/llvm/optimized/APInt.ll @@ -6040,92 +6040,92 @@ _ZN4llvm5APIntlSEj.exit: ; preds = %86 br i1 %.not, label %_ZN4llvm5APIntC2ERKS0_.exit44.thread, label %_ZN4llvm5APIntC2ERKS0_.exit44.thread.thread102 _ZN4llvm5APIntlSEj.exit.thread: ; preds = %.loopexit.i.i, %88 - %144 = add i32 %2, 63 - %145 = and i32 %144, 63 - %146 = xor i32 %145, 63 - %147 = zext nneg i32 %146 to i64 - %148 = lshr i64 -1, %147 - %149 = add nuw nsw i64 %95, 4294967295 - %150 = and i64 %149, 4294967295 - %151 = getelementptr inbounds nuw i64, ptr %92, i64 %150 - %152 = load i64, ptr %151, align 8, !tbaa !9 - %153 = and i64 %152, %148 - store i64 %153, ptr %151, align 8, !tbaa !9 + %147 = add i32 %2, 63 + %148 = and i32 %147, 63 + %149 = xor i32 %148, 63 + %150 = zext nneg i32 %149 to i64 + %151 = lshr i64 -1, %150 + %152 = add nuw nsw i64 %95, 4294967295 + %153 = and i64 %152, 4294967295 + %154 = getelementptr inbounds nuw i64, ptr %92, i64 %153 + %155 = load i64, ptr %154, align 8, !tbaa !9 + %156 = and i64 %155, %151 + store i64 %156, ptr %154, align 8, !tbaa !9 br i1 %.not, label %.thread, label %_ZN4llvm5APIntC2ERKS0_.exit44.thread.thread .thread: ; preds = %_ZN4llvm5APIntlSEj.exit.thread - %154 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %91) #22 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %154, ptr nonnull align 8 %92, i64 %91, i1 false) + %157 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %91) #22 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %157, ptr nonnull align 8 %92, i64 %91, i1 false) tail call void @llvm.experimental.noalias.scope.decl(metadata !87) br label %.lr.ph.i.i.i.i.i28 .lr.ph.i.i.i.i.i28: ; preds = %.lr.ph.i.i.i.i.i28, %.thread %indvars.iv.i.i.i.i.i29 = phi i64 [ %indvars.iv.next.i.i.i.i.i30, %.lr.ph.i.i.i.i.i28 ], [ 0, %.thread ] - %155 = getelementptr inbounds nuw i64, ptr %154, i64 %indvars.iv.i.i.i.i.i29 - %156 = load i64, ptr %155, align 8, !tbaa !9, !noalias !87 - %157 = xor i64 %156, -1 - store i64 %157, ptr %155, align 8, !tbaa !9, !noalias !87 + %158 = getelementptr inbounds nuw i64, ptr %157, i64 %indvars.iv.i.i.i.i.i29 + %159 = load i64, ptr %158, align 8, !tbaa !9, !noalias !87 + %160 = xor i64 %159, -1 + store i64 %160, ptr %158, align 8, !tbaa !9, !noalias !87 %indvars.iv.next.i.i.i.i.i30 = add nuw nsw i64 %indvars.iv.i.i.i.i.i29, 1 %exitcond.not.i.i.i.i.i31 = icmp eq i64 %indvars.iv.next.i.i.i.i.i30, %95 br i1 %exitcond.not.i.i.i.i.i31, label %.lr.ph.preheader.i.i.i.i.i32, label %.lr.ph.i.i.i.i.i28, !llvm.loop !17 .lr.ph.preheader.i.i.i.i.i32: ; preds = %.lr.ph.i.i.i.i.i28 - %158 = getelementptr inbounds nuw i64, ptr %154, i64 %150 - %159 = load i64, ptr %158, align 8, !tbaa !9, !noalias !87 - %160 = and i64 %159, %148 - store i64 %160, ptr %158, align 8, !tbaa !9, !noalias !87 + %161 = getelementptr inbounds nuw i64, ptr %157, i64 %153 + %162 = load i64, ptr %161, align 8, !tbaa !9, !noalias !87 + %163 = and i64 %162, %151 + store i64 %163, ptr %161, align 8, !tbaa !9, !noalias !87 br label %.lr.ph.i.i.i1.i.i33 .lr.ph.i.i.i1.i.i33: ; preds = %.lr.ph.i.i.i1.i.i33, %.lr.ph.preheader.i.i.i.i.i32 %indvars.iv.i.i.i2.i.i34 = phi i64 [ 0, %.lr.ph.preheader.i.i.i.i.i32 ], [ %indvars.iv.next.i.i.i3.i.i36, %.lr.ph.i.i.i1.i.i33 ] - %161 = getelementptr inbounds nuw i64, ptr %154, i64 %indvars.iv.i.i.i2.i.i34 - %162 = load i64, ptr %161, align 8, !tbaa !9, !noalias !87 - %163 = add i64 %162, 1 - store i64 %163, ptr %161, align 8, !tbaa !9, !noalias !87 - %.not.i.i.i.i.i35 = icmp ne i64 %163, 0 + %164 = getelementptr inbounds nuw i64, ptr %157, i64 %indvars.iv.i.i.i2.i.i34 + %165 = load i64, ptr %164, align 8, !tbaa !9, !noalias !87 + %166 = add i64 %165, 1 + store i64 %166, ptr %164, align 8, !tbaa !9, !noalias !87 + %.not.i.i.i.i.i35 = icmp ne i64 %166, 0 %indvars.iv.next.i.i.i3.i.i36 = add nuw nsw i64 %indvars.iv.i.i.i2.i.i34, 1 %exitcond.not.i.i.i4.i.i37 = icmp eq i64 %indvars.iv.next.i.i.i3.i.i36, %95 %or.cond.i.i.i38 = select i1 %.not.i.i.i.i.i35, i1 true, i1 %exitcond.not.i.i.i4.i.i37 br i1 %or.cond.i.i.i38, label %_ZN4llvm5APIntC2ERKS0_.exit44.thread.thread104, label %.lr.ph.i.i.i1.i.i33, !llvm.loop !13 _ZN4llvm5APIntC2ERKS0_.exit44.thread.thread104: ; preds = %.lr.ph.i.i.i1.i.i33 - %164 = ptrtoint ptr %154 to i64 - %165 = load i64, ptr %158, align 8, !tbaa !9, !noalias !87 - %166 = and i64 %165, %148 - store i64 %166, ptr %158, align 8, !tbaa !9, !noalias !87 - %167 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i32 %2, ptr %167, align 8, !tbaa !3, !alias.scope !87 - store i64 %164, ptr %0, align 8, !alias.scope !87 - br label %175 + %167 = ptrtoint ptr %157 to i64 + %168 = load i64, ptr %161, align 8, !tbaa !9, !noalias !87 + %169 = and i64 %168, %151 + store i64 %169, ptr %161, align 8, !tbaa !9, !noalias !87 + %170 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i32 %2, ptr %170, align 8, !tbaa !3, !alias.scope !87 + store i64 %167, ptr %0, align 8, !alias.scope !87 + br label %178 _ZN4llvm5APIntC2ERKS0_.exit44.thread.thread102: ; preds = %_ZN4llvm5APIntlSEj.exit - %168 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i32 %2, ptr %168, align 8, !tbaa !3 + %171 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i32 %2, ptr %171, align 8, !tbaa !3 store i64 %143, ptr %0, align 8, !tbaa !8 br label %_ZN4llvm5APIntC2Ejmbb.exit _ZN4llvm5APIntC2ERKS0_.exit44.thread.thread: ; preds = %_ZN4llvm5APIntlSEj.exit.thread - %169 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i32 %2, ptr %169, align 8, !tbaa !3 - %170 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %91) #22 - store ptr %170, ptr %0, align 8, !tbaa !8 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %170, ptr nonnull align 8 %92, i64 %91, i1 false) - br label %175 + %172 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i32 %2, ptr %172, align 8, !tbaa !3 + %173 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %91) #22 + store ptr %173, ptr %0, align 8, !tbaa !8 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %173, ptr nonnull align 8 %92, i64 %91, i1 false) + br label %178 _ZN4llvm5APIntC2ERKS0_.exit44.thread: ; preds = %_ZN4llvm5APIntlSEj.exit - %171 = xor i64 %143, %142 - %172 = add i64 %171, 1 - %173 = and i64 %172, %142 - %174 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i32 %2, ptr %174, align 8, !tbaa !3, !alias.scope !87 - store i64 %173, ptr %0, align 8, !alias.scope !87 + %174 = xor i64 %143, %142 + %175 = add i64 %174, 1 + %176 = and i64 %175, %142 + %177 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i32 %2, ptr %177, align 8, !tbaa !3, !alias.scope !87 + store i64 %176, ptr %0, align 8, !alias.scope !87 br label %_ZN4llvm5APIntC2Ejmbb.exit -175: ; preds = %_ZN4llvm5APIntC2ERKS0_.exit44.thread.thread, %_ZN4llvm5APIntC2ERKS0_.exit44.thread.thread104 +178: ; preds = %_ZN4llvm5APIntC2ERKS0_.exit44.thread.thread, %_ZN4llvm5APIntC2ERKS0_.exit44.thread.thread104 tail call void @_ZdaPv(ptr noundef nonnull %92) #23 br label %_ZN4llvm5APIntC2Ejmbb.exit -_ZN4llvm5APIntC2Ejmbb.exit: ; preds = %_ZN4llvm5APIntC2ERKS0_.exit44.thread, %_ZN4llvm5APIntC2ERKS0_.exit44.thread.thread102, %66, %67, %175, %81, %80, %12, %11, %_ZN4llvm5APIntD2Ev.exit +_ZN4llvm5APIntC2Ejmbb.exit: ; preds = %_ZN4llvm5APIntC2ERKS0_.exit44.thread, %_ZN4llvm5APIntC2ERKS0_.exit44.thread.thread102, %66, %67, %178, %81, %80, %12, %11, %_ZN4llvm5APIntD2Ev.exit ret void } diff --git a/bench/llvm/optimized/Attributes.ll b/bench/llvm/optimized/Attributes.ll index 8abd3b7e499..c8ac067b472 100644 --- a/bench/llvm/optimized/Attributes.ll +++ b/bench/llvm/optimized/Attributes.ll @@ -1092,48 +1092,48 @@ _ZNK4llvm9StringRef11starts_withES0_.exit.thread96: ; preds = %_ZNK4llvm9StringR %.sroa.085.0 = phi ptr [ %20, %_ZNK4llvm9StringRef9ends_withES0_.exit.thread ], [ %11, %_ZNK4llvm9StringRef9ends_withES0_.exit ], [ %11, %_ZNK4llvm9StringRef11starts_withES0_.exit ], [ %11, %6 ] %.sroa.11.0 = phi i64 [ %19, %_ZNK4llvm9StringRef9ends_withES0_.exit.thread ], [ %13, %_ZNK4llvm9StringRef9ends_withES0_.exit ], [ %13, %_ZNK4llvm9StringRef11starts_withES0_.exit ], [ %13, %6 ] %.not = icmp eq ptr %1, null - br i1 %.not, label %_ZN4llvmeqENS_9StringRefES0_.exit53.thread104, label %21 - -21: ; preds = %_ZNK4llvm9StringRef11starts_withES0_.exit.thread96 - %22 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %23 = load ptr, ptr %22, align 8, !tbaa !3 - %24 = getelementptr inbounds nuw i8, ptr %23, i64 16 - %25 = load i64, ptr %23, align 8, !tbaa !10 - %26 = and i64 %25, 4294967295 - %trunc = trunc i64 %25 to i32 + br i1 %.not, label %_ZN4llvmeqENS_9StringRefES0_.exit53.thread104, label %22 + +22: ; preds = %_ZNK4llvm9StringRef11starts_withES0_.exit.thread96 + %23 = getelementptr inbounds nuw i8, ptr %1, i64 16 + %24 = load ptr, ptr %23, align 8, !tbaa !3 + %25 = getelementptr inbounds nuw i8, ptr %24, i64 16 + %26 = load i64, ptr %24, align 8, !tbaa !10 + %27 = and i64 %26, 4294967295 + %trunc = trunc i64 %26 to i32 switch i32 %trunc, label %_ZN4llvmeqENS_9StringRefES0_.exit49.thread101 [ i32 7, label %_ZN4llvmeqENS_9StringRefES0_.exit49.thread101.sink.split i32 6, label %_ZN4llvmeqENS_9StringRefES0_.exit49 ] -_ZN4llvmeqENS_9StringRefES0_.exit49: ; preds = %21 +_ZN4llvmeqENS_9StringRefES0_.exit49: ; preds = %22 br label %_ZN4llvmeqENS_9StringRefES0_.exit49.thread101.sink.split -_ZN4llvmeqENS_9StringRefES0_.exit49.thread101.sink.split: ; preds = %21, %_ZN4llvmeqENS_9StringRefES0_.exit49 +_ZN4llvmeqENS_9StringRefES0_.exit49.thread101.sink.split: ; preds = %22, %_ZN4llvmeqENS_9StringRefES0_.exit49 %.str.2.sink = phi ptr [ @.str.4, %_ZN4llvmeqENS_9StringRefES0_.exit49 ], [ @.str.2, %21 ] %.str.3.sink = phi ptr [ @.str.5, %_ZN4llvmeqENS_9StringRefES0_.exit49 ], [ @.str.3, %21 ] %.sink130 = phi i64 [ 5, %_ZN4llvmeqENS_9StringRefES0_.exit49 ], [ 3, %21 ] - %bcmp.i45 = tail call i32 @bcmp(ptr nonnull %24, ptr nonnull %.str.2.sink, i64 %26) - %27 = icmp eq i32 %bcmp.i45, 0 - %spec.select116 = select i1 %27, ptr %.str.3.sink, ptr %24 - %spec.select117 = select i1 %27, i64 %.sink130, i64 %26 + %bcmp.i45 = tail call i32 @bcmp(ptr nonnull %25, ptr nonnull %.str.2.sink, i64 %27) + %28 = icmp eq i32 %bcmp.i45, 0 + %spec.select116 = select i1 %28, ptr %.str.3.sink, ptr %25 + %spec.select117 = select i1 %28, i64 %.sink130, i64 %27 br label %_ZN4llvmeqENS_9StringRefES0_.exit49.thread101 -_ZN4llvmeqENS_9StringRefES0_.exit49.thread101: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit49.thread101.sink.split, %21 - %.sroa.077.1 = phi ptr [ %24, %21 ], [ %spec.select116, %_ZN4llvmeqENS_9StringRefES0_.exit49.thread101.sink.split ] - %.sroa.10.1 = phi i64 [ %26, %21 ], [ %spec.select117, %_ZN4llvmeqENS_9StringRefES0_.exit49.thread101.sink.split ] - %28 = getelementptr inbounds nuw i8, ptr %4, i64 64 - %29 = load i64, ptr %28, align 8 - %30 = and i64 %29, 4294967295 - %.not36 = icmp ne i64 %30, 0 +_ZN4llvmeqENS_9StringRefES0_.exit49.thread101: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit49.thread101.sink.split, %22 + %.sroa.077.1 = phi ptr [ %25, %21 ], [ %spec.select116, %_ZN4llvmeqENS_9StringRefES0_.exit49.thread101.sink.split ] + %.sroa.10.1 = phi i64 [ %27, %21 ], [ %spec.select117, %_ZN4llvmeqENS_9StringRefES0_.exit49.thread101.sink.split ] + %29 = getelementptr inbounds nuw i8, ptr %4, i64 64 + %30 = load i64, ptr %29, align 8 + %31 = and i64 %30, 4294967295 + %.not36 = icmp ne i64 %31, 0 %.not.i50 = icmp eq i64 %.sroa.10.1, 3 %or.cond = and i1 %.not.i50, %.not36 br i1 %or.cond, label %_ZN4llvmeqENS_9StringRefES0_.exit53, label %_ZN4llvmeqENS_9StringRefES0_.exit53.thread104 _ZN4llvmeqENS_9StringRefES0_.exit53: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit49.thread101 %bcmp.i52 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(3) %.sroa.077.1, ptr noundef nonnull dereferenceable(3) @.str.6, i64 3) - %31 = icmp eq i32 %bcmp.i52, 0 - br i1 %31, label %_ZN4llvmeqENS_9StringRefES0_.exit53.thread, label %_ZN4llvmeqENS_9StringRefES0_.exit53.thread104 + %32 = icmp eq i32 %bcmp.i52, 0 + br i1 %32, label %_ZN4llvmeqENS_9StringRefES0_.exit53.thread, label %_ZN4llvmeqENS_9StringRefES0_.exit53.thread104 _ZN4llvmeqENS_9StringRefES0_.exit53.thread: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit53 switch i64 %.sroa.11.0, label %_ZN4llvmeqENS_9StringRefES0_.exit53.thread104 [ @@ -1143,54 +1143,54 @@ _ZN4llvmeqENS_9StringRefES0_.exit53.thread: ; preds = %_ZN4llvmeqENS_9Stri _ZN4llvmeqENS_9StringRefES0_.exit57: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit53.thread %bcmp.i56 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(9) %.sroa.085.0, ptr noundef nonnull dereferenceable(9) @.str.7, i64 9) - %32 = icmp eq i32 %bcmp.i56, 0 - br i1 %32, label %.critedge, label %_ZN4llvmeqENS_9StringRefES0_.exit53.thread104 + %33 = icmp eq i32 %bcmp.i56, 0 + br i1 %33, label %.critedge, label %_ZN4llvmeqENS_9StringRefES0_.exit53.thread104 _ZN4llvmeqENS_9StringRefES0_.exit61: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit53.thread %bcmp.i60 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(8) %.sroa.085.0, ptr noundef nonnull dereferenceable(8) @.str.8, i64 8) - %33 = icmp eq i32 %bcmp.i60, 0 - br i1 %33, label %.critedge, label %_ZN4llvmeqENS_9StringRefES0_.exit53.thread104 + %34 = icmp eq i32 %bcmp.i60, 0 + br i1 %34, label %.critedge, label %_ZN4llvmeqENS_9StringRefES0_.exit53.thread104 _ZN4llvmeqENS_9StringRefES0_.exit53.thread104: ; preds = %_ZNK4llvm9StringRef11starts_withES0_.exit.thread96, %_ZN4llvmeqENS_9StringRefES0_.exit57, %_ZN4llvmeqENS_9StringRefES0_.exit53.thread, %_ZN4llvmeqENS_9StringRefES0_.exit61, %_ZN4llvmeqENS_9StringRefES0_.exit53, %_ZN4llvmeqENS_9StringRefES0_.exit49.thread101 %.sroa.10.1129 = phi i64 [ 3, %_ZN4llvmeqENS_9StringRefES0_.exit57 ], [ 3, %_ZN4llvmeqENS_9StringRefES0_.exit53.thread ], [ 3, %_ZN4llvmeqENS_9StringRefES0_.exit61 ], [ 3, %_ZN4llvmeqENS_9StringRefES0_.exit53 ], [ %.sroa.10.1, %_ZN4llvmeqENS_9StringRefES0_.exit49.thread101 ], [ 0, %_ZNK4llvm9StringRef11starts_withES0_.exit.thread96 ] %.sroa.077.1128 = phi ptr [ %.sroa.077.1, %_ZN4llvmeqENS_9StringRefES0_.exit57 ], [ %.sroa.077.1, %_ZN4llvmeqENS_9StringRefES0_.exit53.thread ], [ %.sroa.077.1, %_ZN4llvmeqENS_9StringRefES0_.exit61 ], [ %.sroa.077.1, %_ZN4llvmeqENS_9StringRefES0_.exit53 ], [ %.sroa.077.1, %_ZN4llvmeqENS_9StringRefES0_.exit49.thread101 ], [ @.str.1, %_ZNK4llvm9StringRef11starts_withES0_.exit.thread96 ] - %34 = tail call fastcc noundef i32 @_ZL16hasAttributeImplN5clang19AttributeCommonInfo6SyntaxEN4llvm9StringRefES3_RKNS_10TargetInfoERKNS_11LangOptionsE(i32 noundef %0, ptr nonnull %.sroa.085.0, i64 %.sroa.11.0, ptr %.sroa.077.1128, i64 %.sroa.10.1129, ptr noundef nonnull align 8 dereferenceable(489) %3) - %.not37 = icmp eq i32 %34, 0 + %35 = tail call fastcc noundef i32 @_ZL16hasAttributeImplN5clang19AttributeCommonInfo6SyntaxEN4llvm9StringRefES3_RKNS_10TargetInfoERKNS_11LangOptionsE(i32 noundef %0, ptr nonnull %.sroa.085.0, i64 %.sroa.11.0, ptr %.sroa.077.1128, i64 %.sroa.10.1129, ptr noundef nonnull align 8 dereferenceable(489) %3) + %.not37 = icmp eq i32 %35, 0 %brmerge.not = and i1 %5, %.not37 - br i1 %brmerge.not, label %35, label %.critedge + br i1 %brmerge.not, label %36, label %.critedge -35: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit53.thread104 - %36 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZN5clang27getAttributePluginInstancesB5cxx11Ev() #13 - %37 = getelementptr inbounds nuw i8, ptr %7, i64 8 - br label %38 +36: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit53.thread104 + %37 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZN5clang27getAttributePluginInstancesB5cxx11Ev() #13 + %38 = getelementptr inbounds nuw i8, ptr %7, i64 8 + br label %39 -38: ; preds = %39, %35 - %.sroa.062.0.in = phi ptr [ %36, %35 ], [ %.sroa.062.0, %39 ] +39: ; preds = %40, %36 + %.sroa.062.0.in = phi ptr [ %37, %35 ], [ %.sroa.062.0, %39 ] %.sroa.062.0 = load ptr, ptr %.sroa.062.0.in, align 8, !tbaa !13 - %.not113 = icmp eq ptr %.sroa.062.0, %36 - br i1 %.not113, label %.critedge, label %39 + %.not113 = icmp eq ptr %.sroa.062.0, %37 + br i1 %.not113, label %.critedge, label %40 -39: ; preds = %38 - %40 = getelementptr inbounds nuw i8, ptr %.sroa.062.0, i64 16 - %41 = load ptr, ptr %40, align 8, !tbaa !16 +40: ; preds = %39 + %41 = getelementptr inbounds nuw i8, ptr %.sroa.062.0, i64 16 + %42 = load ptr, ptr %41, align 8, !tbaa !16 call void @llvm.lifetime.start.p0(ptr nonnull %7) call void @llvm.lifetime.start.p0(ptr nonnull %8) store ptr %.sroa.085.0, ptr %7, align 8 - store i64 %.sroa.11.0, ptr %37, align 8 + store i64 %.sroa.11.0, ptr %38, align 8 store i32 %0, ptr %8, align 4, !tbaa !18 - %42 = getelementptr inbounds nuw i8, ptr %41, i64 16 - %43 = load ptr, ptr %42, align 8, !tbaa !20 - %44 = getelementptr inbounds nuw i8, ptr %41, i64 24 - %45 = load i64, ptr %44, align 8, !tbaa !23 - %46 = getelementptr inbounds nuw %"struct.clang::ParsedAttrInfo::Spelling", ptr %43, i64 %45 - %47 = call noundef ptr @_ZSt9__find_ifIPKN5clang14ParsedAttrInfo8SpellingEN9__gnu_cxx5__ops10_Iter_predIZNKS1_11hasSpellingENS0_19AttributeCommonInfo6SyntaxEN4llvm9StringRefEEUlRS3_E_EEET_SF_SF_T0_St26random_access_iterator_tag(ptr noundef %43, ptr noundef %46, ptr nonnull %8, ptr nonnull %7) - %.not114 = icmp eq ptr %46, %47 + %43 = getelementptr inbounds nuw i8, ptr %42, i64 16 + %44 = load ptr, ptr %43, align 8, !tbaa !20 + %45 = getelementptr inbounds nuw i8, ptr %42, i64 24 + %46 = load i64, ptr %45, align 8, !tbaa !23 + %47 = getelementptr inbounds nuw %"struct.clang::ParsedAttrInfo::Spelling", ptr %44, i64 %46 + %48 = call noundef ptr @_ZSt9__find_ifIPKN5clang14ParsedAttrInfo8SpellingEN9__gnu_cxx5__ops10_Iter_predIZNKS1_11hasSpellingENS0_19AttributeCommonInfo6SyntaxEN4llvm9StringRefEEUlRS3_E_EEET_SF_SF_T0_St26random_access_iterator_tag(ptr noundef %44, ptr noundef %47, ptr nonnull %8, ptr nonnull %7) + %.not114 = icmp eq ptr %47, %48 call void @llvm.lifetime.end.p0(ptr nonnull %7) call void @llvm.lifetime.end.p0(ptr nonnull %8) - br i1 %.not114, label %38, label %.critedge + br i1 %.not114, label %39, label %.critedge -.critedge: ; preds = %38, %39, %_ZN4llvmeqENS_9StringRefES0_.exit53.thread104, %_ZN4llvmeqENS_9StringRefES0_.exit57, %_ZN4llvmeqENS_9StringRefES0_.exit61 - %.0 = phi i32 [ 1, %_ZN4llvmeqENS_9StringRefES0_.exit61 ], [ 1, %_ZN4llvmeqENS_9StringRefES0_.exit57 ], [ %34, %_ZN4llvmeqENS_9StringRefES0_.exit53.thread104 ], [ 0, %38 ], [ 1, %39 ] +.critedge: ; preds = %39, %40, %_ZN4llvmeqENS_9StringRefES0_.exit53.thread104, %_ZN4llvmeqENS_9StringRefES0_.exit57, %_ZN4llvmeqENS_9StringRefES0_.exit61 + %.0 = phi i32 [ 1, %_ZN4llvmeqENS_9StringRefES0_.exit61 ], [ 1, %_ZN4llvmeqENS_9StringRefES0_.exit57 ], [ %35, %_ZN4llvmeqENS_9StringRefES0_.exit53.thread104 ], [ 0, %38 ], [ 1, %39 ] ret i32 %.0 } @@ -25909,8 +25909,8 @@ _ZNK4llvm9StringRef9ends_withES0_.exit.thread: ; preds = %_ZNK4llvm9StringRef br label %_ZNK4llvm9StringRef11starts_withES0_.exit.thread42 _ZNK4llvm9StringRef11starts_withES0_.exit.thread42: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit11.thread39, %_ZNK4llvm9StringRef9ends_withES0_.exit.thread, %_ZNK4llvm9StringRef9ends_withES0_.exit, %_ZNK4llvm9StringRef11starts_withES0_.exit, %26, %_ZN4llvmeqENS_9StringRefES0_.exit11 - %.sroa.027.0 = phi ptr [ %34, %_ZNK4llvm9StringRef9ends_withES0_.exit.thread ], [ %28, %_ZNK4llvm9StringRef9ends_withES0_.exit ], [ %28, %_ZNK4llvm9StringRef11starts_withES0_.exit ], [ %28, %26 ], [ %23, %_ZN4llvmeqENS_9StringRefES0_.exit11 ], [ %17, %_ZN4llvmeqENS_9StringRefES0_.exit11.thread39 ] - %.sroa.6.0 = phi i64 [ %35, %_ZNK4llvm9StringRef9ends_withES0_.exit.thread ], [ %27, %_ZNK4llvm9StringRef9ends_withES0_.exit ], [ %27, %_ZNK4llvm9StringRef11starts_withES0_.exit ], [ %27, %26 ], [ %25, %_ZN4llvmeqENS_9StringRefES0_.exit11 ], [ %19, %_ZN4llvmeqENS_9StringRefES0_.exit11.thread39 ] + %.sroa.027.0 = phi ptr [ %35, %_ZNK4llvm9StringRef9ends_withES0_.exit.thread ], [ %28, %_ZNK4llvm9StringRef9ends_withES0_.exit ], [ %28, %_ZNK4llvm9StringRef11starts_withES0_.exit ], [ %28, %26 ], [ %23, %_ZN4llvmeqENS_9StringRefES0_.exit11 ], [ %17, %_ZN4llvmeqENS_9StringRefES0_.exit11.thread39 ] + %.sroa.6.0 = phi i64 [ %36, %_ZNK4llvm9StringRef9ends_withES0_.exit.thread ], [ %27, %_ZNK4llvm9StringRef9ends_withES0_.exit ], [ %27, %_ZNK4llvm9StringRef11starts_withES0_.exit ], [ %27, %26 ], [ %25, %_ZN4llvmeqENS_9StringRefES0_.exit11 ], [ %19, %_ZN4llvmeqENS_9StringRefES0_.exit11.thread39 ] %.fca.0.insert = insertvalue { ptr, i64 } poison, ptr %.sroa.027.0, 0 %.fca.1.insert = insertvalue { ptr, i64 } %.fca.0.insert, i64 %.sroa.6.0, 1 ret { ptr, i64 } %.fca.1.insert diff --git a/bench/llvm/optimized/IfConversion.ll b/bench/llvm/optimized/IfConversion.ll index d36a3fd0531..ec8b180f194 100644 --- a/bench/llvm/optimized/IfConversion.ll +++ b/bench/llvm/optimized/IfConversion.ll @@ -5496,8 +5496,8 @@ _ZN12_GLOBAL__N_111IfConverter17IfConvertTriangleERNS0_6BBInfoENS0_9IfcvtKindE.e %1909 = getelementptr inbounds nuw i8, ptr %1908, i64 848 %1910 = load ptr, ptr %1909, align 8 %1911 = call noundef zeroext i1 %1910(ptr noundef nonnull align 8 dereferenceable(80) %1907, ptr noundef nonnull align 8 dereferenceable(70) %1903) #24 - %not. = xor i1 %1911, true - %spec.select.i = select i1 %not., i1 %1901, i1 false + %not.281 = xor i1 %1911, true + %spec.select.i = select i1 %not.281, i1 %1901, i1 false br label %.critedge.i .critedge.i: ; preds = %1906, %1900 diff --git a/bench/llvm/optimized/OptionRSTEmitter.ll b/bench/llvm/optimized/OptionRSTEmitter.ll index 6b2c9e30a06..8402a484405 100644 --- a/bench/llvm/optimized/OptionRSTEmitter.ll +++ b/bench/llvm/optimized/OptionRSTEmitter.ll @@ -767,40 +767,40 @@ _ZN4llvm11raw_ostreamlsENS_9StringRefE.exit81: ; preds = %308, %310, %311 %320 = getelementptr inbounds nuw i8, ptr %319, i64 8 %321 = load i8, ptr %320, align 8, !tbaa !24 %322 = icmp eq i8 %321, 24 - br i1 %322, label %.thread, label %.thread276 + br i1 %322, label %.thread, label %.thread277 323: ; preds = %_ZN4llvm11raw_ostreamlsENS_9StringRefE.exit81 %324 = call { ptr, i64 } @_ZNK4llvm6Record16getValueAsStringENS_9StringRefE(ptr noundef nonnull align 8 dereferenceable(192) %271, ptr nonnull @.str.9, i64 11) #14 %325 = extractvalue { ptr, i64 } %324, 0 %326 = extractvalue { ptr, i64 } %324, 1 %327 = icmp eq i64 %326, 0 - br i1 %327, label %.thread, label %.thread276 + br i1 %327, label %.thread, label %.thread277 -.thread276: ; preds = %318, %323 - %.sroa.0147.2280 = phi ptr [ %325, %323 ], [ @.str.11, %318 ] - %.sroa.7.2279 = phi i64 [ %326, %323 ], [ 7, %318 ] +.thread277: ; preds = %318, %323 + %.sroa.0147.2281 = phi ptr [ %325, %323 ], [ @.str.11, %318 ] + %.sroa.7.2280 = phi i64 [ %326, %323 ], [ 7, %318 ] %328 = load ptr, ptr %95, align 8, !tbaa !46 %329 = load ptr, ptr %96, align 8, !tbaa !51 %.not.i82 = icmp ult ptr %328, %329 br i1 %.not.i82, label %332, label %330 -330: ; preds = %.thread276 +330: ; preds = %.thread277 %331 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream5writeEh(ptr noundef nonnull align 8 dereferenceable(48) %1, i8 noundef zeroext 61) #14 br label %_ZN4llvm11raw_ostreamlsEc.exit84 -332: ; preds = %.thread276 +332: ; preds = %.thread277 %333 = getelementptr inbounds nuw i8, ptr %328, i64 1 store ptr %333, ptr %95, align 8, !tbaa !46 store i8 61, ptr %328, align 1, !tbaa !52 br label %_ZN4llvm11raw_ostreamlsEc.exit84 _ZN4llvm11raw_ostreamlsEc.exit84: ; preds = %330, %332 - %334 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream13write_escapedENS_9StringRefEb(ptr noundef nonnull align 8 dereferenceable(48) %1, ptr %.sroa.0147.2280, i64 %.sroa.7.2279, i1 noundef zeroext false) #14 + %334 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZN4llvm11raw_ostream13write_escapedENS_9StringRefEb(ptr noundef nonnull align 8 dereferenceable(48) %1, ptr %.sroa.0147.2281, i64 %.sroa.7.2280, i1 noundef zeroext false) #14 br label %.thread .thread: ; preds = %318, %_ZN4llvm11raw_ostreamlsEc.exit84, %323 - %.sroa.0147.2195 = phi ptr [ %.sroa.0147.2280, %_ZN4llvm11raw_ostreamlsEc.exit84 ], [ %325, %323 ], [ null, %318 ] - %.sroa.7.2194 = phi i64 [ %.sroa.7.2279, %_ZN4llvm11raw_ostreamlsEc.exit84 ], [ 0, %323 ], [ 0, %318 ] + %.sroa.0147.2195 = phi ptr [ %.sroa.0147.2281, %_ZN4llvm11raw_ostreamlsEc.exit84 ], [ %325, %323 ], [ null, %318 ] + %.sroa.7.2194 = phi i64 [ %.sroa.7.2280, %_ZN4llvm11raw_ostreamlsEc.exit84 ], [ 0, %323 ], [ 0, %318 ] %335 = load ptr, ptr %96, align 8, !tbaa !51 %336 = load ptr, ptr %95, align 8, !tbaa !46 %337 = ptrtoint ptr %335 to i64 diff --git a/bench/llvm/optimized/X86TargetTransformInfo.ll b/bench/llvm/optimized/X86TargetTransformInfo.ll index 3c8011b8ae7..0b241d0d387 100644 --- a/bench/llvm/optimized/X86TargetTransformInfo.ll +++ b/bench/llvm/optimized/X86TargetTransformInfo.ll @@ -516,11 +516,11 @@ define dso_local noundef zeroext i1 @_ZNK4llvm10X86TTIImpl30hasConditionalLoadSt %5 = getelementptr inbounds nuw i8, ptr %4, i64 360 %6 = load i8, ptr %5, align 8, !tbaa !154, !range !149, !noundef !150 %7 = trunc nuw i8 %6 to i1 - br i1 %7, label %8, label %22 + br i1 %7, label %8, label %25 8: ; preds = %2 %.not = icmp eq ptr %1, null - br i1 %.not, label %22, label %9 + br i1 %.not, label %25, label %9 9: ; preds = %8 %10 = getelementptr inbounds nuw i8, ptr %1, i64 8 @@ -528,37 +528,37 @@ define dso_local noundef zeroext i1 @_ZNK4llvm10X86TTIImpl30hasConditionalLoadSt %trunc = trunc i32 %11 to i8 switch i8 %trunc, label %22 [ i8 12, label %_ZNK4llvm4Type13getScalarTypeEv.exit - i8 17, label %12 + i8 17, label %13 ] -12: ; preds = %9 - %13 = getelementptr inbounds nuw i8, ptr %1, i64 32 - %14 = load i32, ptr %13, align 8, !tbaa !155 - %.not12 = icmp eq i32 %14, 1 - br i1 %.not12, label %15, label %22 +13: ; preds = %9 + %14 = getelementptr inbounds nuw i8, ptr %1, i64 32 + %15 = load i32, ptr %14, align 8, !tbaa !155 + %.not12 = icmp eq i32 %15, 1 + br i1 %.not12, label %15, label %25 -15: ; preds = %12 - %16 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %17 = load ptr, ptr %16, align 8, !tbaa !162 - %18 = load ptr, ptr %17, align 8, !tbaa !163 - %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %18, i64 8 +18: ; preds = %12 + %19 = getelementptr inbounds nuw i8, ptr %1, i64 16 + %20 = load ptr, ptr %19, align 8, !tbaa !162 + %21 = load ptr, ptr %20, align 8, !tbaa !163 + %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %21, i64 8 %.pre = load i32, ptr %.phi.trans.insert, align 8 br label %_ZNK4llvm4Type13getScalarTypeEv.exit -_ZNK4llvm4Type13getScalarTypeEv.exit: ; preds = %9, %15 - %19 = phi i32 [ %.pre, %15 ], [ %11, %9 ] - %20 = lshr i32 %19, 8 - %switch.tableidx = add nsw i32 %20, -16 - %21 = icmp ult i32 %switch.tableidx, 49 - br i1 %21, label %switch.lookup, label %22 +_ZNK4llvm4Type13getScalarTypeEv.exit: ; preds = %9, %18 + %22 = phi i32 [ %.pre, %15 ], [ %11, %9 ] + %23 = lshr i32 %22, 8 + %switch.tableidx = add nsw i32 %23, -16 + %24 = icmp ult i32 %switch.tableidx, 49 + br i1 %24, label %switch.lookup, label %25 switch.lookup: ; preds = %_ZNK4llvm4Type13getScalarTypeEv.exit %switch.cast = zext nneg i32 %switch.tableidx to i49 %switch.downshift = lshr i49 -281474976645119, %switch.cast %switch.masked = trunc i49 %switch.downshift to i1 - br label %22 + br label %25 -22: ; preds = %switch.lookup, %_ZNK4llvm4Type13getScalarTypeEv.exit, %9, %12, %8, %2 +25: ; preds = %switch.lookup, %_ZNK4llvm4Type13getScalarTypeEv.exit, %9, %13, %8, %2 %.0 = phi i1 [ false, %2 ], [ true, %8 ], [ false, %12 ], [ false, %_ZNK4llvm4Type13getScalarTypeEv.exit ], [ false, %9 ], [ %switch.masked, %switch.lookup ] ret i1 %.0 } @@ -21738,88 +21738,88 @@ define dso_local noundef zeroext i1 @_ZN4llvm10X86TTIImpl17isLegalMaskedLoadEPNS %trunc.i = trunc i32 %24 to i8 switch i8 %trunc.i, label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit [ i8 12, label %_ZNK4llvm4Type13getScalarTypeEv.exit.i - i8 17, label %25 + i8 17, label %26 ] -25: ; preds = %22 - %26 = getelementptr inbounds nuw i8, ptr %11, i64 32 - %27 = load i32, ptr %26, align 8, !tbaa !155 - %.not12.i = icmp eq i32 %27, 1 +26: ; preds = %22 + %27 = getelementptr inbounds nuw i8, ptr %11, i64 32 + %28 = load i32, ptr %27, align 8, !tbaa !155 + %.not12.i = icmp eq i32 %28, 1 br i1 %.not12.i, label %28, label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit -28: ; preds = %25 - %29 = getelementptr inbounds nuw i8, ptr %11, i64 16 - %30 = load ptr, ptr %29, align 8, !tbaa !162 - %31 = load ptr, ptr %30, align 8, !tbaa !163 - %.phi.trans.insert.i = getelementptr inbounds nuw i8, ptr %31, i64 8 +31: ; preds = %25 + %32 = getelementptr inbounds nuw i8, ptr %11, i64 16 + %33 = load ptr, ptr %32, align 8, !tbaa !162 + %34 = load ptr, ptr %33, align 8, !tbaa !163 + %.phi.trans.insert.i = getelementptr inbounds nuw i8, ptr %34, i64 8 %.pre.i = load i32, ptr %.phi.trans.insert.i, align 8 br label %_ZNK4llvm4Type13getScalarTypeEv.exit.i -_ZNK4llvm4Type13getScalarTypeEv.exit.i: ; preds = %28, %22 - %32 = phi i32 [ %.pre.i, %28 ], [ %24, %22 ] - %33 = lshr i32 %32, 8 - %switch.tableidx = add nsw i32 %33, -16 - %34 = icmp ult i32 %switch.tableidx, 49 - br i1 %34, label %switch.lookup, label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit +_ZNK4llvm4Type13getScalarTypeEv.exit.i: ; preds = %31, %22 + %35 = phi i32 [ %.pre.i, %28 ], [ %24, %22 ] + %36 = lshr i32 %35, 8 + %switch.tableidx = add nsw i32 %36, -16 + %37 = icmp ult i32 %switch.tableidx, 49 + br i1 %37, label %switch.lookup, label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit _ZNK4llvm4Type13getScalarTypeEv.exit: ; preds = %3, %8 %.0.i21 = phi ptr [ %11, %8 ], [ %1, %3 ] - %35 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %36 = load ptr, ptr %35, align 8, !tbaa !3 - %37 = getelementptr inbounds nuw i8, ptr %36, i64 320 - %38 = load i32, ptr %37, align 8, !tbaa !151 - %39 = icmp sgt i32 %38, 6 - br i1 %39, label %40, label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit - -40: ; preds = %_ZNK4llvm4Type13getScalarTypeEv.exit - %41 = getelementptr inbounds nuw i8, ptr %.0.i21, i64 8 - %42 = load i32, ptr %41, align 8 - %trunc = trunc i32 %42 to i8 + %38 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %39 = load ptr, ptr %38, align 8, !tbaa !3 + %40 = getelementptr inbounds nuw i8, ptr %39, i64 320 + %41 = load i32, ptr %40, align 8, !tbaa !151 + %42 = icmp sgt i32 %41, 6 + br i1 %42, label %43, label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit + +43: ; preds = %_ZNK4llvm4Type13getScalarTypeEv.exit + %44 = getelementptr inbounds nuw i8, ptr %.0.i21, i64 8 + %45 = load i32, ptr %44, align 8 + %trunc = trunc i32 %45 to i8 switch i8 %trunc, label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit.fold.split [ i8 14, label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit i8 2, label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit i8 3, label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit - i8 0, label %43 - i8 1, label %47 - i8 12, label %51 + i8 0, label %46 + i8 1, label %50 + i8 12, label %54 ] -43: ; preds = %40 - %44 = getelementptr inbounds nuw i8, ptr %36, i64 355 - %45 = load i8, ptr %44, align 1, !tbaa !203, !range !149, !noundef !150 - %46 = trunc nuw i8 %45 to i1 - br i1 %46, label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit, label %.thread22 - -47: ; preds = %40 - %48 = getelementptr inbounds nuw i8, ptr %36, i64 351 - %49 = load i8, ptr %48, align 1, !tbaa !464, !range !149, !noundef !150 - %50 = trunc nuw i8 %49 to i1 - br i1 %50, label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit, label %.thread22 +46: ; preds = %43 + %47 = getelementptr inbounds nuw i8, ptr %39, i64 355 + %48 = load i8, ptr %47, align 1, !tbaa !203, !range !149, !noundef !150 + %49 = trunc nuw i8 %48 to i1 + br i1 %49, label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit, label %.thread22 -.thread22: ; preds = %47, %43 +50: ; preds = %43 + %51 = getelementptr inbounds nuw i8, ptr %39, i64 351 + %52 = load i8, ptr %51, align 1, !tbaa !464, !range !149, !noundef !150 + %53 = trunc nuw i8 %52 to i1 + br i1 %53, label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit, label %.thread22 + +.thread22: ; preds = %50, %46 br label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit -51: ; preds = %40 - %52 = lshr i32 %42, 8 - %53 = add nsw i32 %52, -8 - %54 = tail call i32 @llvm.fshl.i32(i32 %53, i32 %53, i32 29) - switch i32 %54, label %.fold.split [ +54: ; preds = %43 + %55 = lshr i32 %45, 8 + %56 = add nsw i32 %55, -8 + %57 = tail call i32 @llvm.fshl.i32(i32 %56, i32 %56, i32 29) + switch i32 %57, label %.fold.split [ i32 7, label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit i32 3, label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit - i32 1, label %55 - i32 0, label %55 + i32 1, label %58 + i32 0, label %58 ] -55: ; preds = %51, %51 - %56 = getelementptr inbounds nuw i8, ptr %36, i64 355 - %57 = load i8, ptr %56, align 1, !tbaa !203, !range !149, !noundef !150 - %58 = trunc nuw i8 %57 to i1 +58: ; preds = %54, %54 + %59 = getelementptr inbounds nuw i8, ptr %39, i64 355 + %60 = load i8, ptr %59, align 1, !tbaa !203, !range !149, !noundef !150 + %61 = trunc nuw i8 %60 to i1 br label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit -.fold.split: ; preds = %51 +.fold.split: ; preds = %54 br label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit -_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit.fold.split: ; preds = %40 +_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit.fold.split: ; preds = %43 br label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit switch.lookup: ; preds = %_ZNK4llvm4Type13getScalarTypeEv.exit.i @@ -21828,8 +21828,8 @@ switch.lookup: ; preds = %_ZNK4llvm4Type13get %switch.masked = trunc i49 %switch.downshift to i1 br label %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit -_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit: ; preds = %switch.lookup, %_ZNK4llvm4Type13getScalarTypeEv.exit.i, %40, %40, %40, %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit.fold.split, %.thread22, %25, %22, %21, %51, %51, %.fold.split, %55, %47, %43, %_ZNK4llvm4Type13getScalarTypeEv.exit, %15 - %.0 = phi i1 [ false, %15 ], [ false, %_ZNK4llvm4Type13getScalarTypeEv.exit ], [ true, %40 ], [ true, %43 ], [ true, %47 ], [ true, %51 ], [ %58, %55 ], [ true, %51 ], [ false, %.fold.split ], [ true, %21 ], [ false, %25 ], [ false, %_ZNK4llvm4Type13getScalarTypeEv.exit.i ], [ false, %22 ], [ false, %.thread22 ], [ true, %40 ], [ true, %40 ], [ false, %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit.fold.split ], [ %switch.masked, %switch.lookup ] +_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit: ; preds = %switch.lookup, %_ZNK4llvm4Type13getScalarTypeEv.exit.i, %43, %43, %43, %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit.fold.split, %.thread22, %26, %22, %21, %54, %54, %.fold.split, %58, %50, %46, %_ZNK4llvm4Type13getScalarTypeEv.exit, %15 + %.0 = phi i1 [ false, %15 ], [ false, %_ZNK4llvm4Type13getScalarTypeEv.exit ], [ true, %40 ], [ true, %43 ], [ true, %47 ], [ true, %51 ], [ %61, %55 ], [ true, %51 ], [ false, %.fold.split ], [ true, %21 ], [ false, %25 ], [ false, %_ZNK4llvm4Type13getScalarTypeEv.exit.i ], [ false, %22 ], [ false, %.thread22 ], [ true, %40 ], [ true, %40 ], [ false, %_ZNK4llvm10X86TTIImpl30hasConditionalLoadStoreForTypeEPNS_4TypeE.exit.fold.split ], [ %switch.masked, %switch.lookup ] ret i1 %.0 } diff --git a/bench/llvm/optimized/YAMLParser.ll b/bench/llvm/optimized/YAMLParser.ll index 80573eb3ac5..016c17f4c0a 100644 --- a/bench/llvm/optimized/YAMLParser.ll +++ b/bench/llvm/optimized/YAMLParser.ll @@ -2843,8 +2843,8 @@ define dso_local range(i16 0, 258) i16 @_ZN4llvm4yaml9parseBoolENS_9StringRefE(p switch i64 %1, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread144 [ i64 1, label %3 i64 2, label %6 - i64 3, label %22 - i64 4, label %32 + i64 3, label %19 + i64 4, label %29 i64 5, label %38 ] @@ -2864,14 +2864,14 @@ define dso_local range(i16 0, 258) i16 @_ZN4llvm4yaml9parseBoolENS_9StringRefE(p %7 = load i8, ptr %0, align 1, !tbaa !23 switch i8 %7, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread144 [ i8 79, label %8 - i8 111, label %._crit_edge133 + i8 111, label %._crit_edge128 i8 78, label %15 i8 110, label %._crit_edge ] -._crit_edge133: ; preds = %6 - %.phi.trans.insert134 = getelementptr inbounds nuw i8, ptr %0, i64 1 - %.pre135 = load i8, ptr %.phi.trans.insert134, align 1, !tbaa !23 +._crit_edge128: ; preds = %6 + %.phi.trans.insert129 = getelementptr inbounds nuw i8, ptr %0, i64 1 + %.pre130 = load i8, ptr %.phi.trans.insert129, align 1, !tbaa !23 br label %12 ._crit_edge: ; preds = %6 @@ -2885,10 +2885,10 @@ define dso_local range(i16 0, 258) i16 @_ZN4llvm4yaml9parseBoolENS_9StringRefE(p %11 = icmp eq i8 %10, 78 br i1 %11, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread, label %12 -12: ; preds = %._crit_edge133, %8 - %13 = phi i8 [ %.pre135, %._crit_edge133 ], [ %10, %8 ] - %.fr156 = freeze i8 %13 - %14 = icmp eq i8 %.fr156, 110 +12: ; preds = %._crit_edge128, %8 + %13 = phi i8 [ %.pre130, %._crit_edge133 ], [ %10, %8 ] + %.fr143 = freeze i8 %13 + %14 = icmp eq i8 %.fr143, 110 br i1 %14, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread144 15: ; preds = %6 @@ -2903,35 +2903,35 @@ define dso_local range(i16 0, 258) i16 @_ZN4llvm4yaml9parseBoolENS_9StringRefE(p %21 = icmp eq i8 %.fr, 111 br i1 %21, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread144 -22: ; preds = %2 - %23 = load i8, ptr %0, align 1, !tbaa !23 - switch i8 %23, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread144 [ +19: ; preds = %2 + %20 = load i8, ptr %0, align 1, !tbaa !23 + switch i8 %20, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread144 [ i8 79, label %_ZN4llvmeqENS_9StringRefES0_.exit - i8 111, label %_ZN4llvmeqENS_9StringRefES0_.exit.thread + i8 111, label %_ZN4llvmeqENS_9StringRefES0_.exit21 i8 89, label %_ZN4llvmeqENS_9StringRefES0_.exit28 i8 121, label %_ZN4llvmeqENS_9StringRefES0_.exit28.thread ] -_ZN4llvmeqENS_9StringRefES0_.exit: ; preds = %22 - %24 = getelementptr inbounds nuw i8, ptr %0, i64 1 - %bcmp.i = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(2) %24, ptr noundef nonnull dereferenceable(2) @.str.41, i64 2) - %25 = icmp eq i32 %bcmp.i, 0 - br i1 %25, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread, label %_ZN4llvmeqENS_9StringRefES0_.exit.thread +_ZN4llvmeqENS_9StringRefES0_.exit: ; preds = %19 + %21 = getelementptr inbounds nuw i8, ptr %0, i64 1 + %bcmp.i = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(2) %21, ptr noundef nonnull dereferenceable(2) @.str.41, i64 2) + %22 = icmp eq i32 %bcmp.i, 0 + br i1 %22, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread, label %_ZN4llvmeqENS_9StringRefES0_.exit21 -_ZN4llvmeqENS_9StringRefES0_.exit.thread: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit, %22 - %26 = getelementptr inbounds nuw i8, ptr %0, i64 1 - %bcmp.i20 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(2) %26, ptr noundef nonnull dereferenceable(2) @.str.42, i64 2) +_ZN4llvmeqENS_9StringRefES0_.exit21: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit, %22 + %23 = getelementptr inbounds nuw i8, ptr %0, i64 1 + %bcmp.i20 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(2) %23, ptr noundef nonnull dereferenceable(2) @.str.42, i64 2) %bcmp.i20.fr = freeze i32 %bcmp.i20 %27 = icmp eq i32 %bcmp.i20.fr, 0 br i1 %27, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread144 -_ZN4llvmeqENS_9StringRefES0_.exit28: ; preds = %22 +_ZN4llvmeqENS_9StringRefES0_.exit28:; preds = %19 %28 = getelementptr inbounds nuw i8, ptr %0, i64 1 %bcmp.i27 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(2) %28, ptr noundef nonnull dereferenceable(2) @.str.43, i64 2) %29 = icmp eq i32 %bcmp.i27, 0 br i1 %29, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread, label %_ZN4llvmeqENS_9StringRefES0_.exit28.thread -_ZN4llvmeqENS_9StringRefES0_.exit28.thread: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit28, %22 +_ZN4llvmeqENS_9StringRefES0_.exit28.thread:; preds = %_ZN4llvmeqENS_9StringRefES0_.exit28, %19 %30 = getelementptr inbounds nuw i8, ptr %0, i64 1 %bcmp.i34 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(2) %30, ptr noundef nonnull dereferenceable(2) @.str.44, i64 2) %bcmp.i34.fr = freeze i32 %bcmp.i34 @@ -2939,55 +2939,55 @@ _ZN4llvmeqENS_9StringRefES0_.exit28.thread: ; preds = %_ZN4llvmeqENS_9Stri %.sroa.0116.0152 = zext i1 %31 to i16 br i1 %31, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread144 -32: ; preds = %2 - %33 = load i8, ptr %0, align 1, !tbaa !23 - switch i8 %33, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread144 [ +29: ; preds = %2 + %30 = load i8, ptr %0, align 1, !tbaa !23 + switch i8 %30, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread144 [ i8 84, label %_ZN4llvmeqENS_9StringRefES0_.exit42 - i8 116, label %_ZN4llvmeqENS_9StringRefES0_.exit42.thread + i8 116, label %_ZN4llvmeqENS_9StringRefES0_.exit49 ] -_ZN4llvmeqENS_9StringRefES0_.exit42: ; preds = %32 - %34 = getelementptr inbounds nuw i8, ptr %0, i64 1 - %bcmp.i41 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(3) %34, ptr noundef nonnull dereferenceable(3) @.str.45, i64 3) - %35 = icmp eq i32 %bcmp.i41, 0 - br i1 %35, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread, label %_ZN4llvmeqENS_9StringRefES0_.exit42.thread +_ZN4llvmeqENS_9StringRefES0_.exit42: ; preds = %29 + %31 = getelementptr inbounds nuw i8, ptr %0, i64 1 + %bcmp.i41 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(3) %31, ptr noundef nonnull dereferenceable(3) @.str.45, i64 3) + %32 = icmp eq i32 %bcmp.i41, 0 + br i1 %32, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread, label %_ZN4llvmeqENS_9StringRefES0_.exit49 -_ZN4llvmeqENS_9StringRefES0_.exit42.thread: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit42, %32 - %36 = getelementptr inbounds nuw i8, ptr %0, i64 1 - %bcmp.i48 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(3) %36, ptr noundef nonnull dereferenceable(3) @.str.46, i64 3) +_ZN4llvmeqENS_9StringRefES0_.exit49: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit42, %32 + %33 = getelementptr inbounds nuw i8, ptr %0, i64 1 + %bcmp.i48 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(3) %33, ptr noundef nonnull dereferenceable(3) @.str.46, i64 3) %bcmp.i48.fr = freeze i32 %bcmp.i48 %37 = icmp eq i32 %bcmp.i48.fr, 0 %.sroa.0116.0154 = zext i1 %37 to i16 br i1 %37, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread144 -38: ; preds = %2 +38:; preds = %2 %39 = load i8, ptr %0, align 1, !tbaa !23 switch i8 %39, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread144 [ i8 70, label %_ZN4llvmeqENS_9StringRefES0_.exit56 - i8 102, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread + i8 102, label %_ZN4llvmeqENS_9StringRefES0_.exit63 ] _ZN4llvmeqENS_9StringRefES0_.exit56: ; preds = %38 - %40 = getelementptr inbounds nuw i8, ptr %0, i64 1 - %bcmp.i55 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %40, ptr noundef nonnull dereferenceable(4) @.str.47, i64 4) - %41 = icmp eq i32 %bcmp.i55, 0 - br i1 %41, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread - -_ZN4llvmeqENS_9StringRefES0_.exit21.thread: ; preds = %38, %_ZN4llvmeqENS_9StringRefES0_.exit56 - %42 = getelementptr inbounds nuw i8, ptr %0, i64 1 - %bcmp.i62 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %42, ptr noundef nonnull dereferenceable(4) @.str.48, i64 4) + %37 = getelementptr inbounds nuw i8, ptr %0, i64 1 + %bcmp.i55 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %37, ptr noundef nonnull dereferenceable(4) @.str.47, i64 4) + %38 = icmp eq i32 %bcmp.i55, 0 + br i1 %38, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread, label %_ZN4llvmeqENS_9StringRefES0_.exit63 + +_ZN4llvmeqENS_9StringRefES0_.exit63: ; preds = %38, %_ZN4llvmeqENS_9StringRefES0_.exit56 + %39 = getelementptr inbounds nuw i8, ptr %0, i64 1 + %bcmp.i62 = tail call i32 @bcmp(ptr noundef nonnull dereferenceable(4) %39, ptr noundef nonnull dereferenceable(4) @.str.48, i64 4) %bcmp.i62.fr = freeze i32 %bcmp.i62 %43 = icmp eq i32 %bcmp.i62.fr, 0 br i1 %43, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread, label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread144 -_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread: ; preds = %_ZN4llvmeqENS_9StringRefES0_.exit56, %_ZN4llvmeqENS_9StringRefES0_.exit42, %_ZN4llvmeqENS_9StringRefES0_.exit28, %_ZN4llvmeqENS_9StringRefES0_.exit, %15, %8, %3, %3, %5, %_ZN4llvmeqENS_9StringRefES0_.exit42.thread, %_ZN4llvmeqENS_9StringRefES0_.exit28.thread, %_ZN4llvmeqENS_9StringRefES0_.exit.thread, %19, %12, %_ZN4llvmeqENS_9StringRefES0_.exit21.thread +_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread:; preds = %_ZN4llvmeqENS_9StringRefES0_.exit56, %_ZN4llvmeqENS_9StringRefES0_.exit42, %_ZN4llvmeqENS_9StringRefES0_.exit28, %_ZN4llvmeqENS_9StringRefES0_.exit, %15, %8, %3, %3, %5, %_ZN4llvmeqENS_9StringRefES0_.exit49, %_ZN4llvmeqENS_9StringRefES0_.exit28.thread, %_ZN4llvmeqENS_9StringRefES0_.exit21, %19, %12, %_ZN4llvmeqENS_9StringRefES0_.exit63 %.sroa.0116.0142 = phi i16 [ 0, %_ZN4llvmeqENS_9StringRefES0_.exit21.thread ], [ 1, %12 ], [ 0, %19 ], [ 0, %_ZN4llvmeqENS_9StringRefES0_.exit.thread ], [ %.sroa.0116.0152, %_ZN4llvmeqENS_9StringRefES0_.exit28.thread ], [ %.sroa.0116.0154, %_ZN4llvmeqENS_9StringRefES0_.exit42.thread ], [ 0, %_ZN4llvmeqENS_9StringRefES0_.exit56 ], [ 1, %_ZN4llvmeqENS_9StringRefES0_.exit42 ], [ 1, %_ZN4llvmeqENS_9StringRefES0_.exit28 ], [ 0, %_ZN4llvmeqENS_9StringRefES0_.exit ], [ 0, %15 ], [ 1, %8 ], [ 1, %3 ], [ 1, %3 ], [ 0, %5 ] br label %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread144 _ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread144: ; preds = %3, %2, %38, %32, %22, %6, %_ZN4llvmeqENS_9StringRefES0_.exit42.thread, %_ZN4llvmeqENS_9StringRefES0_.exit28.thread, %_ZN4llvmeqENS_9StringRefES0_.exit.thread, %19, %12, %_ZN4llvmeqENS_9StringRefES0_.exit21.thread, %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread %.sroa.0116.0141 = phi i16 [ %.sroa.0116.0142, %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread ], [ 0, %_ZN4llvmeqENS_9StringRefES0_.exit21.thread ], [ 1, %12 ], [ 0, %19 ], [ 0, %_ZN4llvmeqENS_9StringRefES0_.exit.thread ], [ %.sroa.0116.0152, %_ZN4llvmeqENS_9StringRefES0_.exit28.thread ], [ %.sroa.0116.0154, %_ZN4llvmeqENS_9StringRefES0_.exit42.thread ], [ 0, %6 ], [ 0, %22 ], [ 0, %32 ], [ 0, %38 ], [ 0, %2 ], [ 0, %3 ] - %44 = phi i16 [ 256, %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread ], [ 0, %_ZN4llvmeqENS_9StringRefES0_.exit21.thread ], [ 0, %12 ], [ 0, %19 ], [ 0, %_ZN4llvmeqENS_9StringRefES0_.exit.thread ], [ 0, %_ZN4llvmeqENS_9StringRefES0_.exit28.thread ], [ 0, %_ZN4llvmeqENS_9StringRefES0_.exit42.thread ], [ 0, %6 ], [ 0, %22 ], [ 0, %32 ], [ 0, %38 ], [ 0, %2 ], [ 0, %3 ] - %.sroa.0116.0.insert.insert = or disjoint i16 %44, %.sroa.0116.0141 + %.sroa.0116.0136 = phi i16 [ 256, %_ZN4llvmeqENS_9StringRefES0_.exit21.thread.thread ], [ 0, %_ZN4llvmeqENS_9StringRefES0_.exit21.thread ], [ 0, %12 ], [ 0, %19 ], [ 0, %_ZN4llvmeqENS_9StringRefES0_.exit.thread ], [ 0, %_ZN4llvmeqENS_9StringRefES0_.exit28.thread ], [ 0, %_ZN4llvmeqENS_9StringRefES0_.exit42.thread ], [ 0, %6 ], [ 0, %22 ], [ 0, %32 ], [ 0, %38 ], [ 0, %2 ], [ 0, %3 ] + %.sroa.0116.0.insert.insert = or disjoint i16 %.sroa.0116.0136, %.sroa.0116.0141 ret i16 %.sroa.0116.0.insert.insert } diff --git a/bench/meshlab/optimized/arap.ll b/bench/meshlab/optimized/arap.ll index d924eb0d534..a1153d9e3dd 100644 --- a/bench/meshlab/optimized/arap.ll +++ b/bench/meshlab/optimized/arap.ll @@ -12179,8 +12179,8 @@ define linkonce_odr noundef i32 @_ZN5Eigen8internal8coletreeINS_12SparseMatrixId 12: ; preds = %4 %13 = lshr exact i64 %sext, 30 - %calloc203 = tail call ptr @calloc(i64 1, i64 %13) - %14 = icmp eq ptr %calloc203, null + %calloc204 = tail call ptr @calloc(i64 1, i64 %13) + %14 = icmp eq ptr %calloc204, null br i1 %14, label %.noexc82, label %16 .noexc82: ; preds = %12 @@ -12210,15 +12210,15 @@ define linkonce_odr noundef i32 @_ZN5Eigen8internal8coletreeINS_12SparseMatrixId _ZN5Eigen9DenseBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit75: ; preds = %16, %4 %.sroa.0108.0160 = phi ptr [ null, %4 ], [ %calloc, %16 ] - %.sroa.0118.0147152159 = phi ptr [ null, %4 ], [ %calloc203, %16 ] + %.sroa.0118.0147152159 = phi ptr [ null, %4 ], [ %calloc204, %16 ] invoke void @_ZN5Eigen12DenseStorageIiLin1ELin1ELi1ELi0EE6resizeElll(ptr noundef nonnull align 8 dereferenceable(16) %1, i64 noundef %6, i64 noundef %6, i64 noundef 1) - to label %_ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit unwind label %54 + to label %_ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit unwind label %67 _ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit: ; preds = %_ZN5Eigen9DenseBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit75 %sext166 = shl i64 %9, 32 %22 = ashr exact i64 %sext166, 32 invoke void @_ZN5Eigen12DenseStorageIiLin1ELin1ELi1ELi0EE6resizeElll(ptr noundef nonnull align 8 dereferenceable(16) %2, i64 noundef %22, i64 noundef %22, i64 noundef 1) - to label %_ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit76 unwind label %54 + to label %_ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit76 unwind label %67 _ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit76: ; preds = %_ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit %23 = getelementptr inbounds nuw i8, ptr %2, i64 8 @@ -12250,158 +12250,158 @@ _ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit76 %or.cond = icmp sgt i32 %.sroa.speculated132, 0 br i1 %or.cond, label %.lr.ph.i.i.i.i.i.i.i.i.i.i.i, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit -.lr.ph.i.i.i.i.i.i.i.i.i.i.i: ; preds = %.loopexit170, %.lr.ph.i.i.i.i.i.i.i.i.i.i.i +.lr.ph.i.i.i.i.i.i.i.i.i.i.i:; preds = %.loopexit170, %.lr.ph.i.i.i.i.i.i.i.i.i.i.i %.05.i.i.i.i.i.i.i.i.i.i.i = phi i64 [ %40, %.lr.ph.i.i.i.i.i.i.i.i.i.i.i ], [ 0, %.loopexit170 ] %37 = trunc i64 %.05.i.i.i.i.i.i.i.i.i.i.i to i32 %38 = mul nsw i32 %36, %37 %39 = getelementptr inbounds nuw i32, ptr %31, i64 %.05.i.i.i.i.i.i.i.i.i.i.i store i32 %38, ptr %39, align 4 %40 = add nuw nsw i64 %.05.i.i.i.i.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %40, %30 + %44 = icmp eq i64 %40, %30 br i1 %exitcond.not.i.i.i.i.i.i.i.i.i.i.i, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit, label %.lr.ph.i.i.i.i.i.i.i.i.i.i.i, !llvm.loop !199 _ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit: ; preds = %.lr.ph.i.i.i.i.i.i.i.i.i.i.i, %.loopexit170 - %41 = icmp sgt i32 %7, 0 - br i1 %41, label %.lr.ph173, label %._crit_edge182 + %54 = icmp sgt i32 %7, 0 + br i1 %54, label %.lr.ph173, label %._crit_edge182 .lr.ph173: ; preds = %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit %.not70 = icmp eq ptr %3, null - %42 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %43 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %44 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %55 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %56 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %57 = getelementptr inbounds nuw i8, ptr %0, i64 32 %wide.trip.count = and i64 %6, 2147483647 - br label %49 + br label %62 .lr.ph181: ; preds = %._crit_edge %.not = icmp eq ptr %3, null - %45 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %46 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %47 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %sext202 = shl i64 %9, 32 - %48 = ashr exact i64 %sext202, 32 - %wide.trip.count188 = and i64 %6, 2147483647 - br label %82 + %58 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %59 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %60 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %sext203 = shl i64 %9, 32 + %61 = ashr exact i64 %sext203, 32 + %wide.trip.count189 = and i64 %6, 2147483647 + br label %95 -49: ; preds = %.lr.ph173, %._crit_edge +62: ; preds = %.lr.ph173, %._crit_edge %indvars.iv = phi i64 [ 0, %.lr.ph173 ], [ %indvars.iv.next, %._crit_edge ] - %50 = trunc nuw nsw i64 %indvars.iv to i32 - br i1 %.not70, label %56, label %51 + %63 = trunc nuw nsw i64 %indvars.iv to i32 + br i1 %.not70, label %69, label %64 -51: ; preds = %49 - %52 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv - %53 = load i32, ptr %52, align 4 - br label %56 +64: ; preds = %62 + %65 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv + %66 = load i32, ptr %65, align 4 + br label %69 -54: ; preds = %_ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit, %_ZN5Eigen9DenseBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit75 - %55 = landingpad { ptr, i32 } +67: ; preds = %_ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit, %_ZN5Eigen9DenseBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit75 + %68 = landingpad { ptr, i32 } cleanup tail call void @free(ptr noundef %.sroa.0108.0160) #26 br label %.body -56: ; preds = %51, %49 - %.062 = phi i32 [ %53, %51 ], [ %50, %49 ] - %57 = sext i32 %.062 to i64 - %58 = load ptr, ptr %42, align 8 - %59 = load ptr, ptr %43, align 8 - %60 = getelementptr inbounds i32, ptr %59, i64 %57 - %61 = load i32, ptr %60, align 4 - %62 = sext i32 %61 to i64 - %63 = load ptr, ptr %44, align 8 - %64 = icmp eq ptr %63, null - br i1 %64, label %65, label %69 +69: ; preds = %64, %62 + %.062 = phi i32 [ %66, %51 ], [ %63, %49 ] + %70 = sext i32 %.062 to i64 + %71 = load ptr, ptr %55, align 8 + %72 = load ptr, ptr %56, align 8 + %73 = getelementptr inbounds i32, ptr %72, i64 %70 + %74 = load i32, ptr %73, align 4 + %75 = sext i32 %74 to i64 + %76 = load ptr, ptr %57, align 8 + %77 = icmp eq ptr %76, null + br i1 %77, label %78, label %82 -65: ; preds = %56 - %66 = getelementptr i8, ptr %60, i64 4 - %67 = load i32, ptr %66, align 4 - %68 = sext i32 %67 to i64 +78: ; preds = %69 + %79 = getelementptr i8, ptr %73, i64 4 + %80 = load i32, ptr %79, align 4 + %81 = sext i32 %80 to i64 br label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit -69: ; preds = %56 - %70 = getelementptr inbounds i32, ptr %63, i64 %57 - %71 = load i32, ptr %70, align 4 - %72 = sext i32 %71 to i64 - %73 = add nsw i64 %72, %62 +82: ; preds = %69 + %83 = getelementptr inbounds i32, ptr %76, i64 %70 + %84 = load i32, ptr %83, align 4 + %85 = sext i32 %84 to i64 + %86 = add nsw i64 %85, %75 br label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit -_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit: ; preds = %65, %69 - %.sink.i = phi i64 [ %68, %65 ], [ %73, %69 ] - %74 = icmp sgt i64 %.sink.i, %62 - br i1 %74, label %.lr.ph, label %._crit_edge +_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit: ; preds = %78, %82 + %.sink.i = phi i64 [ %81, %65 ], [ %86, %69 ] + %87 = icmp sgt i64 %.sink.i, %75 + br i1 %87, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit, %.lr.ph - %.sroa.496.0171 = phi i64 [ %81, %.lr.ph ], [ %62, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit ] - %75 = getelementptr inbounds i32, ptr %58, i64 %.sroa.496.0171 - %76 = load i32, ptr %75, align 4 - %77 = sext i32 %76 to i64 - %78 = load ptr, ptr %2, align 8 - %79 = getelementptr inbounds i32, ptr %78, i64 %77 - %80 = load i32, ptr %79, align 4 - %.sroa.speculated = tail call i32 @llvm.smin.i32(i32 %50, i32 %80) - store i32 %.sroa.speculated, ptr %79, align 4 - %81 = add nsw i64 %.sroa.496.0171, 1 - %exitcond.not = icmp eq i64 %81, %.sink.i + %.sroa.496.0171 = phi i64 [ %94, %.lr.ph ], [ %75, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit ] + %88 = getelementptr inbounds i32, ptr %71, i64 %.sroa.496.0171 + %89 = load i32, ptr %88, align 4 + %90 = sext i32 %89 to i64 + %91 = load ptr, ptr %2, align 8 + %92 = getelementptr inbounds i32, ptr %91, i64 %90 + %93 = load i32, ptr %92, align 4 + %.sroa.speculated = tail call i32 @llvm.smin.i32(i32 %63, i32 %93) + store i32 %.sroa.speculated, ptr %92, align 4 + %94 = add nsw i64 %.sroa.496.0171, 1 + %exitcond.not = icmp eq i64 %94, %.sink.i br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !200 ._crit_edge: ; preds = %.lr.ph, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond184.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond184.not, label %.lr.ph181, label %49, !llvm.loop !201 - -82: ; preds = %.lr.ph181, %._crit_edge179 - %indvars.iv185 = phi i64 [ 0, %.lr.ph181 ], [ %indvars.iv.next186, %._crit_edge179 ] - %83 = icmp sge i64 %indvars.iv185, %48 - %84 = getelementptr inbounds nuw i32, ptr %.sroa.0108.0160, i64 %indvars.iv185 - %85 = trunc nuw nsw i64 %indvars.iv185 to i32 - store i32 %85, ptr %84, align 4 - %86 = getelementptr inbounds nuw i32, ptr %.sroa.0118.0147152159, i64 %indvars.iv185 - store i32 %85, ptr %86, align 4 - %87 = load ptr, ptr %1, align 8 - %88 = getelementptr inbounds nuw i32, ptr %87, i64 %indvars.iv185 - store i32 %7, ptr %88, align 4 - br i1 %.not, label %92, label %89 - -89: ; preds = %82 - %90 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv185 - %91 = load i32, ptr %90, align 4 - br label %92 - -92: ; preds = %89, %82 - %.056 = phi i32 [ %91, %89 ], [ %85, %82 ] - %93 = sext i32 %.056 to i64 - %94 = load ptr, ptr %45, align 8 - %95 = load ptr, ptr %46, align 8 - %96 = getelementptr inbounds i32, ptr %95, i64 %93 - %97 = load i32, ptr %96, align 4 - %98 = sext i32 %97 to i64 - %99 = load ptr, ptr %47, align 8 - %100 = icmp eq ptr %99, null - br i1 %100, label %101, label %105 + %exitcond185.not = icmp eq i64 %indvars.iv.next, %wide.trip.count + br i1 %exitcond185.not, label %.lr.ph181, label %62, !llvm.loop !201 + +95: ; preds = %.lr.ph181, %._crit_edge179 + %indvars.iv186 = phi i64 [ 0, %.lr.ph181 ], [ %indvars.iv.next187, %._crit_edge179 ] + %96 = icmp sge i64 %indvars.iv186, %61 + %97 = getelementptr inbounds nuw i32, ptr %.sroa.0108.0160, i64 %indvars.iv186 + %98 = trunc nuw nsw i64 %indvars.iv186 to i32 + store i32 %98, ptr %97, align 4 + %99 = getelementptr inbounds nuw i32, ptr %.sroa.0118.0147152159, i64 %indvars.iv186 + store i32 %98, ptr %99, align 4 + %100 = load ptr, ptr %1, align 8 + %101 = getelementptr inbounds nuw i32, ptr %100, i64 %indvars.iv186 + store i32 %7, ptr %101, align 4 + br i1 %.not, label %105, label %102 -101: ; preds = %92 - %102 = getelementptr i8, ptr %96, i64 4 - %103 = load i32, ptr %102, align 4 - %104 = sext i32 %103 to i64 +102: ; preds = %95 + %103 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv186 + %104 = load i32, ptr %103, align 4 + br label %105 + +105: ; preds = %102, %95 + %.056 = phi i32 [ %104, %89 ], [ %98, %82 ] + %106 = sext i32 %.056 to i64 + %107 = load ptr, ptr %58, align 8 + %108 = load ptr, ptr %59, align 8 + %109 = getelementptr inbounds i32, ptr %108, i64 %106 + %110 = load i32, ptr %109, align 4 + %111 = sext i32 %110 to i64 + %112 = load ptr, ptr %60, align 8 + %113 = icmp eq ptr %112, null + br i1 %113, label %114, label %118 + +114: ; preds = %105 + %115 = getelementptr i8, ptr %109, i64 4 + %116 = load i32, ptr %115, align 4 + %117 = sext i32 %116 to i64 br label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 -105: ; preds = %92 - %106 = getelementptr inbounds i32, ptr %99, i64 %93 - %107 = load i32, ptr %106, align 4 - %108 = sext i32 %107 to i64 - %109 = add nsw i64 %108, %98 +118: ; preds = %105 + %119 = getelementptr inbounds i32, ptr %112, i64 %106 + %120 = load i32, ptr %119, align 4 + %121 = sext i32 %120 to i64 + %122 = add nsw i64 %121, %111 br label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 -_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79: ; preds = %101, %105 - %.sink.i78 = phi i64 [ %104, %101 ], [ %109, %105 ] - %110 = icmp sle i64 %.sink.i78, %98 - %.not168174 = select i1 %110, i1 %83, i1 false +_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79: ; preds = %114, %118 + %.sink.i78 = phi i64 [ %117, %101 ], [ %122, %105 ] + %123 = icmp sle i64 %.sink.i78, %111 + %.not168174 = select i1 %123, i1 %96, i1 false br i1 %.not168174, label %._crit_edge179, label %.lr.ph178 -.lr.ph178: ; preds = %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79, %143 - %111 = phi i1 [ %145, %143 ], [ %110, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 ] - %.059177 = phi i32 [ %.1, %143 ], [ %85, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 ] - %.060176 = phi i1 [ %spec.select, %143 ], [ %83, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 ] - %.sroa.4.0175 = phi i64 [ %144, %143 ], [ %98, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 ] - br i1 %111, label %116, label %112 +.lr.ph178: ; preds = %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79, %150 + %124 = phi i1 [ %145, %143 ], [ %123, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 ] + %.059177 = phi i32 [ %.1, %143 ], [ %98, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 ] + %.060176 = phi i1 [ %spec.select, %143 ], [ %96, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 ] + %.sroa.4.0175 = phi i64 [ %144, %143 ], [ %111, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 ] + br i1 %124, label %125, label %112 112: ; preds = %.lr.ph178 %113 = getelementptr inbounds i32, ptr %94, i64 %.sroa.4.0175 @@ -12409,7 +12409,7 @@ _ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS %115 = sext i32 %114 to i64 br label %116 -116: ; preds = %.lr.ph178, %112 +125: ; preds = %.lr.ph178, %112 %.055 = phi i64 [ %115, %112 ], [ %indvars.iv185, %.lr.ph178 ] %117 = icmp eq i64 %.055, %indvars.iv185 %spec.select = select i1 %117, i1 true, i1 %.060176 @@ -12417,41 +12417,41 @@ _ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS %119 = getelementptr inbounds i32, ptr %118, i64 %.055 %120 = load i32, ptr %119, align 4 %121 = sext i32 %120 to i64 - %.not68 = icmp sgt i64 %indvars.iv185, %121 - br i1 %.not68, label %122, label %143 + %130 = icmp sgt i64 %indvars.iv186, %121 + br i1 %130, label %122, label %143 -122: ; preds = %116 - %123 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %121 - %124 = load i32, ptr %123, align 4 - %125 = sext i32 %124 to i64 - %126 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %125 - %.016.i = load i32, ptr %126, align 4 - %.not17.i = icmp eq i32 %.016.i, %124 +135: ; preds = %125 + %136 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %121 + %137 = load i32, ptr %136, align 4 + %138 = sext i32 %137 to i64 + %139 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %138 + %.016.i = load i32, ptr %139, align 4 + %.not17.i = icmp eq i32 %.016.i, %137 br i1 %.not17.i, label %.loopexit, label %.lr.ph.i -.lr.ph.i: ; preds = %122, %.lr.ph.i +.lr.ph.i: ; preds = %135, %.lr.ph.i %.019.i = phi i32 [ %.0.i, %.lr.ph.i ], [ %.016.i, %122 ] %.01518.i = phi i32 [ %.019.i, %.lr.ph.i ], [ %120, %122 ] - %127 = sext i32 %.01518.i to i64 - %128 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %127 - store i32 %.019.i, ptr %128, align 4 - %129 = sext i32 %.019.i to i64 - %130 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %129 - %131 = load i32, ptr %130, align 4 - %132 = sext i32 %131 to i64 - %133 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %132 - %.0.i = load i32, ptr %133, align 4 - %.not.i = icmp eq i32 %.0.i, %131 + %140 = sext i32 %.01518.i to i64 + %141 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %140 + store i32 %.019.i, ptr %141, align 4 + %142 = sext i32 %.019.i to i64 + %143 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %142 + %144 = load i32, ptr %143, align 4 + %145 = sext i32 %144 to i64 + %146 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %145 + %.0.i = load i32, ptr %146, align 4 + %.not.i = icmp eq i32 %.0.i, %144 br i1 %.not.i, label %.loopexit, label %.lr.ph.i, !llvm.loop !202 -.loopexit: ; preds = %.lr.ph.i, %122 - %.pre-phi = phi i64 [ %125, %122 ], [ %132, %.lr.ph.i ] - %.014.lcssa.i = phi i32 [ %124, %122 ], [ %131, %.lr.ph.i ] - %134 = getelementptr inbounds i32, ptr %.sroa.0118.0147152159, i64 %.pre-phi - %135 = load i32, ptr %134, align 4 - %136 = zext i32 %135 to i64 - %.not69 = icmp eq i64 %indvars.iv185, %136 - br i1 %.not69, label %143, label %137 +.loopexit: ; preds = %.lr.ph.i, %135 + %.pre-phi = phi i64 [ %138, %122 ], [ %145, %.lr.ph.i ] + %.014.lcssa.i = phi i32 [ %137, %122 ], [ %144, %.lr.ph.i ] + %147 = getelementptr inbounds i32, ptr %.sroa.0118.0147152159, i64 %.pre-phi + %148 = load i32, ptr %147, align 4 + %149 = zext i32 %148 to i64 + %.not69 = icmp eq i64 %indvars.iv186, %149 + br i1 %.not69, label %150, label %137 137: ; preds = %.loopexit %138 = sext i32 %135 to i64 @@ -12464,26 +12464,26 @@ _ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS store i32 %85, ptr %134, align 4 br label %143 -143: ; preds = %.loopexit, %137, %116 +150: ; preds = %.loopexit, %137, %116 %.1 = phi i32 [ %.059177, %116 ], [ %.014.lcssa.i, %137 ], [ %.059177, %.loopexit ] %144 = add nsw i64 %.sroa.4.0175, 1 %145 = icmp sge i64 %144, %.sink.i78 %.not168 = select i1 %145, i1 %spec.select, i1 false br i1 %.not168, label %._crit_edge179, label %.lr.ph178, !llvm.loop !203 -._crit_edge179: ; preds = %143, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 - %indvars.iv.next186 = add nuw nsw i64 %indvars.iv185, 1 - %exitcond189.not = icmp eq i64 %indvars.iv.next186, %wide.trip.count188 - br i1 %exitcond189.not, label %._crit_edge182, label %82, !llvm.loop !204 +._crit_edge179: ; preds = %150, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 + %indvars.iv.next187 = add nuw nsw i64 %indvars.iv186, 1 + %exitcond190.not = icmp eq i64 %indvars.iv.next187, %wide.trip.count189 + br i1 %exitcond190.not, label %._crit_edge182, label %95, !llvm.loop !204 ._crit_edge182: ; preds = %._crit_edge179, %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit tail call void @free(ptr noundef %.sroa.0108.0160) #26 tail call void @free(ptr noundef %.sroa.0118.0147152159) #26 ret i32 0 -.body: ; preds = %20, %54 - %.sroa.0118.0148 = phi ptr [ %.sroa.0118.0147152159, %54 ], [ %calloc203, %20 ] - %.pn = phi { ptr, i32 } [ %55, %54 ], [ %21, %20 ] +.body: ; preds = %20, %67 + %.sroa.0118.0148 = phi ptr [ %.sroa.0118.0147152159, %54 ], [ %calloc204, %20 ] + %.pn = phi { ptr, i32 } [ %68, %54 ], [ %21, %20 ] tail call void @free(ptr noundef %.sroa.0118.0148) #26 resume { ptr, i32 } %.pn } diff --git a/bench/meshlab/optimized/cube_style_precomputation.ll b/bench/meshlab/optimized/cube_style_precomputation.ll index 07ef4054957..b8751dbc162 100644 --- a/bench/meshlab/optimized/cube_style_precomputation.ll +++ b/bench/meshlab/optimized/cube_style_precomputation.ll @@ -43570,8 +43570,8 @@ define linkonce_odr noundef i32 @_ZN5Eigen8internal8coletreeINS_12SparseMatrixId 12: ; preds = %4 %13 = lshr exact i64 %sext, 30 - %calloc203 = tail call ptr @calloc(i64 1, i64 %13) - %14 = icmp eq ptr %calloc203, null + %calloc204 = tail call ptr @calloc(i64 1, i64 %13) + %14 = icmp eq ptr %calloc204, null br i1 %14, label %.noexc82, label %16 .noexc82: ; preds = %12 @@ -43601,15 +43601,15 @@ define linkonce_odr noundef i32 @_ZN5Eigen8internal8coletreeINS_12SparseMatrixId _ZN5Eigen9DenseBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit75: ; preds = %16, %4 %.sroa.0108.0160 = phi ptr [ null, %4 ], [ %calloc, %16 ] - %.sroa.0118.0147152159 = phi ptr [ null, %4 ], [ %calloc203, %16 ] + %.sroa.0118.0147152159 = phi ptr [ null, %4 ], [ %calloc204, %16 ] invoke void @_ZN5Eigen12DenseStorageIiLin1ELin1ELi1ELi0EE6resizeElll(ptr noundef nonnull align 8 dereferenceable(16) %1, i64 noundef %6, i64 noundef %6, i64 noundef 1) - to label %_ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit unwind label %54 + to label %_ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit unwind label %67 _ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit: ; preds = %_ZN5Eigen9DenseBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit75 %sext166 = shl i64 %9, 32 %22 = ashr exact i64 %sext166, 32 invoke void @_ZN5Eigen12DenseStorageIiLin1ELin1ELi1ELi0EE6resizeElll(ptr noundef nonnull align 8 dereferenceable(16) %2, i64 noundef %22, i64 noundef %22, i64 noundef 1) - to label %_ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit76 unwind label %54 + to label %_ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit76 unwind label %67 _ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit76: ; preds = %_ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit %23 = getelementptr inbounds nuw i8, ptr %2, i64 8 @@ -43641,240 +43641,240 @@ _ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit76 %or.cond = icmp sgt i32 %.sroa.speculated132, 0 br i1 %or.cond, label %.lr.ph.i.i.i.i.i.i.i.i.i.i.i, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit -.lr.ph.i.i.i.i.i.i.i.i.i.i.i: ; preds = %.loopexit170, %.lr.ph.i.i.i.i.i.i.i.i.i.i.i +.lr.ph.i.i.i.i.i.i.i.i.i.i.i:; preds = %.loopexit170, %.lr.ph.i.i.i.i.i.i.i.i.i.i.i %.05.i.i.i.i.i.i.i.i.i.i.i = phi i64 [ %40, %.lr.ph.i.i.i.i.i.i.i.i.i.i.i ], [ 0, %.loopexit170 ] %37 = trunc i64 %.05.i.i.i.i.i.i.i.i.i.i.i to i32 %38 = mul nsw i32 %36, %37 %39 = getelementptr inbounds nuw i32, ptr %31, i64 %.05.i.i.i.i.i.i.i.i.i.i.i store i32 %38, ptr %39, align 4 %40 = add nuw nsw i64 %.05.i.i.i.i.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %40, %30 + %44 = icmp eq i64 %40, %30 br i1 %exitcond.not.i.i.i.i.i.i.i.i.i.i.i, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit, label %.lr.ph.i.i.i.i.i.i.i.i.i.i.i, !llvm.loop !1399 _ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit: ; preds = %.lr.ph.i.i.i.i.i.i.i.i.i.i.i, %.loopexit170 - %41 = icmp sgt i32 %7, 0 - br i1 %41, label %.lr.ph173, label %._crit_edge182 + %54 = icmp sgt i32 %7, 0 + br i1 %54, label %.lr.ph173, label %._crit_edge182 .lr.ph173: ; preds = %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit %.not70 = icmp eq ptr %3, null - %42 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %43 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %44 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %55 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %56 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %57 = getelementptr inbounds nuw i8, ptr %0, i64 32 %wide.trip.count = and i64 %6, 2147483647 - br label %49 + br label %62 .lr.ph181: ; preds = %._crit_edge %.not = icmp eq ptr %3, null - %45 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %46 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %47 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %sext202 = shl i64 %9, 32 - %48 = ashr exact i64 %sext202, 32 - %wide.trip.count188 = and i64 %6, 2147483647 - br label %82 + %58 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %59 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %60 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %sext203 = shl i64 %9, 32 + %61 = ashr exact i64 %sext203, 32 + %wide.trip.count189 = and i64 %6, 2147483647 + br label %95 -49: ; preds = %.lr.ph173, %._crit_edge +62: ; preds = %.lr.ph173, %._crit_edge %indvars.iv = phi i64 [ 0, %.lr.ph173 ], [ %indvars.iv.next, %._crit_edge ] - %50 = trunc nuw nsw i64 %indvars.iv to i32 - br i1 %.not70, label %56, label %51 + %63 = trunc nuw nsw i64 %indvars.iv to i32 + br i1 %.not70, label %69, label %64 -51: ; preds = %49 - %52 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv - %53 = load i32, ptr %52, align 4 - br label %56 +64: ; preds = %62 + %65 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv + %66 = load i32, ptr %65, align 4 + br label %69 -54: ; preds = %_ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit, %_ZN5Eigen9DenseBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit75 - %55 = landingpad { ptr, i32 } +67: ; preds = %_ZN5Eigen15PlainObjectBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE6resizeEl.exit, %_ZN5Eigen9DenseBaseINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEEE7setZeroEv.exit75 + %68 = landingpad { ptr, i32 } cleanup tail call void @free(ptr noundef %.sroa.0108.0160) #16 br label %.body -56: ; preds = %51, %49 - %.062 = phi i32 [ %53, %51 ], [ %50, %49 ] - %57 = sext i32 %.062 to i64 - %58 = load ptr, ptr %42, align 8 - %59 = load ptr, ptr %43, align 8 - %60 = getelementptr inbounds i32, ptr %59, i64 %57 - %61 = load i32, ptr %60, align 4 - %62 = sext i32 %61 to i64 - %63 = load ptr, ptr %44, align 8 - %64 = icmp eq ptr %63, null - br i1 %64, label %65, label %69 +69: ; preds = %64, %62 + %.062 = phi i32 [ %66, %51 ], [ %63, %49 ] + %70 = sext i32 %.062 to i64 + %71 = load ptr, ptr %55, align 8 + %72 = load ptr, ptr %56, align 8 + %73 = getelementptr inbounds i32, ptr %72, i64 %70 + %74 = load i32, ptr %73, align 4 + %75 = sext i32 %74 to i64 + %76 = load ptr, ptr %57, align 8 + %77 = icmp eq ptr %76, null + br i1 %77, label %78, label %82 -65: ; preds = %56 - %66 = getelementptr i8, ptr %60, i64 4 - %67 = load i32, ptr %66, align 4 - %68 = sext i32 %67 to i64 +78: ; preds = %69 + %79 = getelementptr i8, ptr %73, i64 4 + %80 = load i32, ptr %79, align 4 + %81 = sext i32 %80 to i64 br label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit -69: ; preds = %56 - %70 = getelementptr inbounds i32, ptr %63, i64 %57 - %71 = load i32, ptr %70, align 4 - %72 = sext i32 %71 to i64 - %73 = add nsw i64 %72, %62 +82: ; preds = %69 + %83 = getelementptr inbounds i32, ptr %76, i64 %70 + %84 = load i32, ptr %83, align 4 + %85 = sext i32 %84 to i64 + %86 = add nsw i64 %85, %75 br label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit -_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit: ; preds = %65, %69 - %.sink.i = phi i64 [ %68, %65 ], [ %73, %69 ] - %74 = icmp sgt i64 %.sink.i, %62 - br i1 %74, label %.lr.ph, label %._crit_edge +_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit: ; preds = %78, %82 + %.sink.i = phi i64 [ %81, %65 ], [ %86, %69 ] + %87 = icmp sgt i64 %.sink.i, %75 + br i1 %87, label %.lr.ph, label %._crit_edge .lr.ph: ; preds = %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit, %.lr.ph - %.sroa.496.0171 = phi i64 [ %81, %.lr.ph ], [ %62, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit ] - %75 = getelementptr inbounds i32, ptr %58, i64 %.sroa.496.0171 - %76 = load i32, ptr %75, align 4 - %77 = sext i32 %76 to i64 - %78 = load ptr, ptr %2, align 8 - %79 = getelementptr inbounds i32, ptr %78, i64 %77 - %80 = load i32, ptr %79, align 4 - %.sroa.speculated = tail call i32 @llvm.smin.i32(i32 %50, i32 %80) - store i32 %.sroa.speculated, ptr %79, align 4 - %81 = add nsw i64 %.sroa.496.0171, 1 - %exitcond.not = icmp eq i64 %81, %.sink.i + %.sroa.496.0171 = phi i64 [ %94, %.lr.ph ], [ %75, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit ] + %88 = getelementptr inbounds i32, ptr %71, i64 %.sroa.496.0171 + %89 = load i32, ptr %88, align 4 + %90 = sext i32 %89 to i64 + %91 = load ptr, ptr %2, align 8 + %92 = getelementptr inbounds i32, ptr %91, i64 %90 + %93 = load i32, ptr %92, align 4 + %.sroa.speculated = tail call i32 @llvm.smin.i32(i32 %63, i32 %93) + store i32 %.sroa.speculated, ptr %92, align 4 + %94 = add nsw i64 %.sroa.496.0171, 1 + %exitcond.not = icmp eq i64 %94, %.sink.i br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !1400 ._crit_edge: ; preds = %.lr.ph, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond184.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond184.not, label %.lr.ph181, label %49, !llvm.loop !1401 - -82: ; preds = %.lr.ph181, %._crit_edge179 - %indvars.iv185 = phi i64 [ 0, %.lr.ph181 ], [ %indvars.iv.next186, %._crit_edge179 ] - %83 = icmp sge i64 %indvars.iv185, %48 - %84 = getelementptr inbounds nuw i32, ptr %.sroa.0108.0160, i64 %indvars.iv185 - %85 = trunc nuw nsw i64 %indvars.iv185 to i32 - store i32 %85, ptr %84, align 4 - %86 = getelementptr inbounds nuw i32, ptr %.sroa.0118.0147152159, i64 %indvars.iv185 - store i32 %85, ptr %86, align 4 - %87 = load ptr, ptr %1, align 8 - %88 = getelementptr inbounds nuw i32, ptr %87, i64 %indvars.iv185 - store i32 %7, ptr %88, align 4 - br i1 %.not, label %92, label %89 + %exitcond185.not = icmp eq i64 %indvars.iv.next, %wide.trip.count + br i1 %exitcond185.not, label %.lr.ph181, label %62, !llvm.loop !1401 + +95: ; preds = %.lr.ph181, %._crit_edge179 + %indvars.iv186 = phi i64 [ 0, %.lr.ph181 ], [ %indvars.iv.next187, %._crit_edge179 ] + %96 = icmp sge i64 %indvars.iv186, %61 + %97 = getelementptr inbounds nuw i32, ptr %.sroa.0108.0160, i64 %indvars.iv186 + %98 = trunc nuw nsw i64 %indvars.iv186 to i32 + store i32 %98, ptr %97, align 4 + %99 = getelementptr inbounds nuw i32, ptr %.sroa.0118.0147152159, i64 %indvars.iv186 + store i32 %98, ptr %99, align 4 + %100 = load ptr, ptr %1, align 8 + %101 = getelementptr inbounds nuw i32, ptr %100, i64 %indvars.iv186 + store i32 %7, ptr %101, align 4 + br i1 %.not, label %105, label %102 -89: ; preds = %82 - %90 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv185 - %91 = load i32, ptr %90, align 4 - br label %92 +102: ; preds = %95 + %103 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv186 + %104 = load i32, ptr %103, align 4 + br label %105 -92: ; preds = %89, %82 - %.056 = phi i32 [ %91, %89 ], [ %85, %82 ] - %93 = sext i32 %.056 to i64 - %94 = load ptr, ptr %45, align 8 - %95 = load ptr, ptr %46, align 8 - %96 = getelementptr inbounds i32, ptr %95, i64 %93 - %97 = load i32, ptr %96, align 4 - %98 = sext i32 %97 to i64 - %99 = load ptr, ptr %47, align 8 - %100 = icmp eq ptr %99, null - br i1 %100, label %101, label %105 +105: ; preds = %102, %95 + %.056 = phi i32 [ %104, %89 ], [ %98, %82 ] + %106 = sext i32 %.056 to i64 + %107 = load ptr, ptr %58, align 8 + %108 = load ptr, ptr %59, align 8 + %109 = getelementptr inbounds i32, ptr %108, i64 %106 + %110 = load i32, ptr %109, align 4 + %111 = sext i32 %110 to i64 + %112 = load ptr, ptr %60, align 8 + %113 = icmp eq ptr %112, null + br i1 %113, label %114, label %118 -101: ; preds = %92 - %102 = getelementptr i8, ptr %96, i64 4 - %103 = load i32, ptr %102, align 4 - %104 = sext i32 %103 to i64 +114: ; preds = %105 + %115 = getelementptr i8, ptr %109, i64 4 + %116 = load i32, ptr %115, align 4 + %117 = sext i32 %116 to i64 br label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 -105: ; preds = %92 - %106 = getelementptr inbounds i32, ptr %99, i64 %93 - %107 = load i32, ptr %106, align 4 - %108 = sext i32 %107 to i64 - %109 = add nsw i64 %108, %98 +118: ; preds = %105 + %119 = getelementptr inbounds i32, ptr %112, i64 %106 + %120 = load i32, ptr %119, align 4 + %121 = sext i32 %120 to i64 + %122 = add nsw i64 %121, %111 br label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 -_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79: ; preds = %101, %105 - %.sink.i78 = phi i64 [ %104, %101 ], [ %109, %105 ] - %110 = icmp sle i64 %.sink.i78, %98 - %.not168174 = select i1 %110, i1 %83, i1 false +_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79: ; preds = %114, %118 + %.sink.i78 = phi i64 [ %117, %101 ], [ %122, %105 ] + %123 = icmp sle i64 %.sink.i78, %111 + %.not168174 = select i1 %123, i1 %96, i1 false br i1 %.not168174, label %._crit_edge179, label %.lr.ph178 -.lr.ph178: ; preds = %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79, %143 - %111 = phi i1 [ %145, %143 ], [ %110, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 ] - %.059177 = phi i32 [ %.1, %143 ], [ %85, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 ] - %.060176 = phi i1 [ %spec.select, %143 ], [ %83, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 ] - %.sroa.4.0175 = phi i64 [ %144, %143 ], [ %98, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 ] - br i1 %111, label %116, label %112 +.lr.ph178: ; preds = %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79, %156 + %124 = phi i1 [ %158, %143 ], [ %123, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 ] + %.059177 = phi i32 [ %.1, %143 ], [ %98, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 ] + %.060176 = phi i1 [ %spec.select, %143 ], [ %96, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 ] + %.sroa.4.0175 = phi i64 [ %157, %143 ], [ %111, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 ] + br i1 %124, label %129, label %125 -112: ; preds = %.lr.ph178 - %113 = getelementptr inbounds i32, ptr %94, i64 %.sroa.4.0175 - %114 = load i32, ptr %113, align 4 - %115 = sext i32 %114 to i64 - br label %116 +125: ; preds = %.lr.ph178 + %126 = getelementptr inbounds i32, ptr %107, i64 %.sroa.4.0175 + %127 = load i32, ptr %126, align 4 + %128 = sext i32 %127 to i64 + br label %129 -116: ; preds = %.lr.ph178, %112 - %.055 = phi i64 [ %115, %112 ], [ %indvars.iv185, %.lr.ph178 ] - %117 = icmp eq i64 %.055, %indvars.iv185 - %spec.select = select i1 %117, i1 true, i1 %.060176 - %118 = load ptr, ptr %2, align 8 - %119 = getelementptr inbounds i32, ptr %118, i64 %.055 - %120 = load i32, ptr %119, align 4 - %121 = sext i32 %120 to i64 - %.not68 = icmp sgt i64 %indvars.iv185, %121 - br i1 %.not68, label %122, label %143 +129: ; preds = %.lr.ph178, %125 + %.055 = phi i64 [ %128, %112 ], [ %indvars.iv186, %.lr.ph178 ] + %130 = icmp eq i64 %.055, %indvars.iv186 + %spec.select = select i1 %130, i1 true, i1 %.060176 + %131 = load ptr, ptr %2, align 8 + %132 = getelementptr inbounds i32, ptr %131, i64 %.055 + %133 = load i32, ptr %132, align 4 + %134 = sext i32 %133 to i64 + %.not68 = icmp sgt i64 %indvars.iv186, %134 + br i1 %.not68, label %135, label %156 -122: ; preds = %116 - %123 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %121 - %124 = load i32, ptr %123, align 4 - %125 = sext i32 %124 to i64 - %126 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %125 - %.016.i = load i32, ptr %126, align 4 - %.not17.i = icmp eq i32 %.016.i, %124 +135: ; preds = %129 + %136 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %134 + %137 = load i32, ptr %136, align 4 + %138 = sext i32 %137 to i64 + %139 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %138 + %.016.i = load i32, ptr %139, align 4 + %.not17.i = icmp eq i32 %.016.i, %137 br i1 %.not17.i, label %.loopexit, label %.lr.ph.i -.lr.ph.i: ; preds = %122, %.lr.ph.i +.lr.ph.i: ; preds = %135, %.lr.ph.i %.019.i = phi i32 [ %.0.i, %.lr.ph.i ], [ %.016.i, %122 ] - %.01518.i = phi i32 [ %.019.i, %.lr.ph.i ], [ %120, %122 ] - %127 = sext i32 %.01518.i to i64 - %128 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %127 - store i32 %.019.i, ptr %128, align 4 - %129 = sext i32 %.019.i to i64 - %130 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %129 - %131 = load i32, ptr %130, align 4 - %132 = sext i32 %131 to i64 - %133 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %132 - %.0.i = load i32, ptr %133, align 4 - %.not.i = icmp eq i32 %.0.i, %131 + %.01518.i = phi i32 [ %.019.i, %.lr.ph.i ], [ %133, %122 ] + %140 = sext i32 %.01518.i to i64 + %141 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %140 + store i32 %.019.i, ptr %141, align 4 + %142 = sext i32 %.019.i to i64 + %143 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %142 + %144 = load i32, ptr %143, align 4 + %145 = sext i32 %144 to i64 + %146 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %145 + %.0.i = load i32, ptr %146, align 4 + %.not.i = icmp eq i32 %.0.i, %144 br i1 %.not.i, label %.loopexit, label %.lr.ph.i, !llvm.loop !1402 -.loopexit: ; preds = %.lr.ph.i, %122 - %.pre-phi = phi i64 [ %125, %122 ], [ %132, %.lr.ph.i ] - %.014.lcssa.i = phi i32 [ %124, %122 ], [ %131, %.lr.ph.i ] - %134 = getelementptr inbounds i32, ptr %.sroa.0118.0147152159, i64 %.pre-phi - %135 = load i32, ptr %134, align 4 - %136 = zext i32 %135 to i64 - %.not69 = icmp eq i64 %indvars.iv185, %136 - br i1 %.not69, label %143, label %137 - -137: ; preds = %.loopexit - %138 = sext i32 %135 to i64 - %139 = load ptr, ptr %1, align 8 - %140 = getelementptr inbounds i32, ptr %139, i64 %138 - store i32 %85, ptr %140, align 4 - %141 = sext i32 %.059177 to i64 - %142 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %141 - store i32 %.014.lcssa.i, ptr %142, align 4 - store i32 %85, ptr %134, align 4 - br label %143 +.loopexit: ; preds = %.lr.ph.i, %135 + %.pre-phi = phi i64 [ %138, %122 ], [ %145, %.lr.ph.i ] + %.014.lcssa.i = phi i32 [ %137, %122 ], [ %144, %.lr.ph.i ] + %147 = getelementptr inbounds i32, ptr %.sroa.0118.0147152159, i64 %.pre-phi + %148 = load i32, ptr %147, align 4 + %149 = zext i32 %148 to i64 + %.not69 = icmp eq i64 %indvars.iv186, %149 + br i1 %.not69, label %156, label %150 -143: ; preds = %.loopexit, %137, %116 +150: ; preds = %.loopexit + %151 = sext i32 %148 to i64 + %152 = load ptr, ptr %1, align 8 + %153 = getelementptr inbounds i32, ptr %152, i64 %151 + store i32 %98, ptr %153, align 4 + %154 = sext i32 %.059177 to i64 + %155 = getelementptr inbounds i32, ptr %.sroa.0108.0160, i64 %154 + store i32 %.014.lcssa.i, ptr %155, align 4 + store i32 %98, ptr %147, align 4 + br label %156 + +156: ; preds = %.loopexit, %150, %129 %.1 = phi i32 [ %.059177, %116 ], [ %.014.lcssa.i, %137 ], [ %.059177, %.loopexit ] - %144 = add nsw i64 %.sroa.4.0175, 1 - %145 = icmp sge i64 %144, %.sink.i78 - %.not168 = select i1 %145, i1 %spec.select, i1 false + %157 = add nsw i64 %.sroa.4.0175, 1 + %158 = icmp sge i64 %157, %.sink.i78 + %.not168 = select i1 %158, i1 %spec.select, i1 false br i1 %.not168, label %._crit_edge179, label %.lr.ph178, !llvm.loop !1403 -._crit_edge179: ; preds = %143, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 - %indvars.iv.next186 = add nuw nsw i64 %indvars.iv185, 1 - %exitcond189.not = icmp eq i64 %indvars.iv.next186, %wide.trip.count188 - br i1 %exitcond189.not, label %._crit_edge182, label %82, !llvm.loop !1404 +._crit_edge179: ; preds = %156, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit79 + %indvars.iv.next187 = add nuw nsw i64 %indvars.iv186, 1 + %exitcond190.not = icmp eq i64 %indvars.iv.next187, %wide.trip.count189 + br i1 %exitcond190.not, label %._crit_edge182, label %95, !llvm.loop !1404 ._crit_edge182: ; preds = %._crit_edge179, %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit tail call void @free(ptr noundef %.sroa.0108.0160) #16 tail call void @free(ptr noundef %.sroa.0118.0147152159) #16 ret i32 0 -.body: ; preds = %20, %54 - %.sroa.0118.0148 = phi ptr [ %.sroa.0118.0147152159, %54 ], [ %calloc203, %20 ] - %.pn = phi { ptr, i32 } [ %55, %54 ], [ %21, %20 ] +.body: ; preds = %20, %67 + %.sroa.0118.0148 = phi ptr [ %.sroa.0118.0147152159, %54 ], [ %calloc204, %20 ] + %.pn = phi { ptr, i32 } [ %68, %54 ], [ %21, %20 ] tail call void @free(ptr noundef %.sroa.0118.0148) #16 resume { ptr, i32 } %.pn } diff --git a/bench/open3d/optimized/TriangleMeshDeformation.ll b/bench/open3d/optimized/TriangleMeshDeformation.ll index cace03d4968..5450cd2c54c 100644 --- a/bench/open3d/optimized/TriangleMeshDeformation.ll +++ b/bench/open3d/optimized/TriangleMeshDeformation.ll @@ -9926,11 +9926,11 @@ _ZN5Eigen8internal23check_size_for_overflowIiEEvm.exit.i.i.i: ; preds = %28 %35 = getelementptr inbounds nuw i8, ptr %2, i64 8 %36 = load i64, ptr %35, align 8, !tbaa !195 %.not.i.i100 = icmp eq i64 %34, %36 - %.pre218.pre = load ptr, ptr %2, align 8, !tbaa !199, !noalias !343 + %.pre219.pre = load ptr, ptr %2, align 8, !tbaa !199, !noalias !343 br i1 %.not.i.i100, label %43, label %37 37: ; preds = %33 - tail call void @free(ptr noundef %.pre218.pre) #5 + tail call void @free(ptr noundef %.pre219.pre) #5 %38 = icmp sgt i64 %34, 0 br i1 %38, label %_ZN5Eigen8internal23check_size_for_overflowIiEEvm.exit.i.i.i103, label %.sink.split.i.i101 @@ -9944,7 +9944,7 @@ _ZN5Eigen8internal23check_size_for_overflowIiEEvm.exit.i.i.i103: ; preds = %37 %42 = tail call ptr @__cxa_allocate_exception(i64 8) #5 store ptr getelementptr inbounds nuw inrange(-16, 24) (i8, ptr @_ZTVSt9bad_alloc, i64 16), ptr %42, align 8, !tbaa !17 invoke void @__cxa_throw(ptr nonnull %42, ptr nonnull @_ZTISt9bad_alloc, ptr nonnull @_ZNSt9bad_allocD1Ev) #45 - to label %.cont unwind label %92 + to label %.cont unwind label %105 .cont: ; preds = %.invoke unreachable @@ -9955,7 +9955,7 @@ _ZN5Eigen8internal23check_size_for_overflowIiEEvm.exit.i.i.i103: ; preds = %37 br label %43 43: ; preds = %.sink.split.i.i101, %33 - %.pre = phi ptr [ %.sink.i.i102, %.sink.split.i.i101 ], [ %.pre218.pre, %33 ] + %.pre = phi ptr [ %.sink.i.i102, %.sink.split.i.i101 ], [ %.pre219.pre, %33 ] store i64 %34, ptr %35, align 8, !tbaa !195 %44 = icmp slt i64 %34, 1 br i1 %44, label %.loopexit192, label %45 @@ -9982,14 +9982,14 @@ _ZN5Eigen8internal23check_size_for_overflowIiEEvm.exit.i.i.i103: ; preds = %37 %or.cond = icmp sgt i32 %.sroa.speculated151, 0 br i1 %or.cond, label %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit -_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i: ; preds = %.loopexit192, %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i +_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i:; preds = %.loopexit192, %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i %.05.i.i.i.i.i.i.i.i.i.i.i = phi i64 [ %57, %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i ], [ 0, %.loopexit192 ] %54 = trunc i64 %.05.i.i.i.i.i.i.i.i.i.i.i to i32 %55 = mul nsw i32 %53, %54 %56 = getelementptr inbounds nuw i32, ptr %.pre, i64 %.05.i.i.i.i.i.i.i.i.i.i.i store i32 %55, ptr %56, align 4, !tbaa !56 %57 = add nuw nsw i64 %.05.i.i.i.i.i.i.i.i.i.i.i, 1 - %exitcond.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %57, %48 + %61 = icmp eq i64 %57, %48 br i1 %exitcond.not.i.i.i.i.i.i.i.i.i.i.i, label %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit, label %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i, !llvm.loop !347 _ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit: ; preds = %_ZN5Eigen8internal31generic_dense_assignment_kernelINS0_9evaluatorINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEEENS2_INS_14CwiseNullaryOpINS0_12linspaced_opIiEES5_EEEENS0_9assign_opIiiEELi0EE11assignCoeffEl.exit.i.i.i.i.i.i.i.i.i.i.i, %.loopexit192 @@ -9997,200 +9997,200 @@ _ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EE .lr.ph195: ; preds = %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit %.not83 = icmp eq ptr %3, null - %58 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %59 = load ptr, ptr %58, align 8, !tbaa !167 - %60 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %61 = load ptr, ptr %60, align 8, !tbaa !87 - %62 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %63 = load ptr, ptr %62, align 8, !tbaa !165 - %64 = icmp eq ptr %63, null - %wide.trip.count211 = and i64 %6, 2147483647 - br i1 %64, label %.lr.ph195.split.us, label %.lr.ph195.split + %71 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %72 = load ptr, ptr %71, align 8, !tbaa !167 + %73 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %74 = load ptr, ptr %73, align 8, !tbaa !87 + %75 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %76 = load ptr, ptr %75, align 8, !tbaa !165 + %77 = icmp eq ptr %76, null + %wide.trip.count212 = and i64 %6, 2147483647 + br i1 %77, label %.lr.ph195.split.us, label %.lr.ph195.split .lr.ph195.split.us: ; preds = %.lr.ph195, %._crit_edge.us - %indvars.iv208 = phi i64 [ %indvars.iv.next209, %._crit_edge.us ], [ 0, %.lr.ph195 ] - %65 = trunc nuw nsw i64 %indvars.iv208 to i32 - br i1 %.not83, label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit.us, label %66 + %indvars.iv209 = phi i64 [ %indvars.iv.next210, %._crit_edge.us ], [ 0, %.lr.ph195 ] + %78 = trunc nuw nsw i64 %indvars.iv209 to i32 + br i1 %.not83, label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit.us, label %79 -66: ; preds = %.lr.ph195.split.us - %67 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv208 - %68 = load i32, ptr %67, align 4, !tbaa !56 +79: ; preds = %.lr.ph195.split.us + %80 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv209 + %81 = load i32, ptr %80, align 4, !tbaa !56 br label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit.us -_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit.us: ; preds = %66, %.lr.ph195.split.us - %.071.us = phi i32 [ %68, %66 ], [ %65, %.lr.ph195.split.us ] - %69 = sext i32 %.071.us to i64 - %70 = getelementptr inbounds i32, ptr %61, i64 %69 - %71 = load i32, ptr %70, align 4, !tbaa !56 - %72 = getelementptr i8, ptr %70, i64 4 - %73 = load i32, ptr %72, align 4, !tbaa !56 - %74 = sext i32 %73 to i64 - %75 = icmp slt i32 %71, %73 - br i1 %75, label %.lr.ph.us.preheader, label %._crit_edge.us +_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit.us: ; preds = %79, %.lr.ph195.split.us + %.071.us = phi i32 [ %81, %66 ], [ %78, %.lr.ph195.split.us ] + %82 = sext i32 %.071.us to i64 + %83 = getelementptr inbounds i32, ptr %74, i64 %82 + %84 = load i32, ptr %83, align 4, !tbaa !56 + %85 = getelementptr i8, ptr %83, i64 4 + %86 = load i32, ptr %85, align 4, !tbaa !56 + %87 = sext i32 %86 to i64 + %88 = icmp slt i32 %84, %86 + br i1 %88, label %.lr.ph.us.preheader, label %._crit_edge.us .lr.ph.us.preheader: ; preds = %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit.us - %76 = sext i32 %71 to i64 + %89 = sext i32 %84 to i64 br label %.lr.ph.us ._crit_edge.us: ; preds = %.lr.ph.us, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit.us - %indvars.iv.next209 = add nuw nsw i64 %indvars.iv208, 1 - %exitcond212.not = icmp eq i64 %indvars.iv.next209, %wide.trip.count211 - br i1 %exitcond212.not, label %.lr.ph203, label %.lr.ph195.split.us, !llvm.loop !348 + %indvars.iv.next210 = add nuw nsw i64 %indvars.iv209, 1 + %exitcond213.not = icmp eq i64 %indvars.iv.next210, %wide.trip.count212 + br i1 %exitcond213.not, label %.lr.ph203, label %.lr.ph195.split.us, !llvm.loop !348 .lr.ph.us: ; preds = %.lr.ph.us.preheader, %.lr.ph.us - %.sroa.7117.0193.us = phi i64 [ %82, %.lr.ph.us ], [ %76, %.lr.ph.us.preheader ] - %77 = getelementptr inbounds i32, ptr %59, i64 %.sroa.7117.0193.us - %78 = load i32, ptr %77, align 4, !tbaa !56 - %79 = sext i32 %78 to i64 - %80 = getelementptr inbounds i32, ptr %.pre, i64 %79 - %81 = load i32, ptr %80, align 4, !tbaa !56 - %.sroa.speculated.us = tail call i32 @llvm.smin.i32(i32 %65, i32 %81) - store i32 %.sroa.speculated.us, ptr %80, align 4, !tbaa !56 - %82 = add nsw i64 %.sroa.7117.0193.us, 1 - %exitcond207.not = icmp eq i64 %82, %74 - br i1 %exitcond207.not, label %._crit_edge.us, label %.lr.ph.us, !llvm.loop !349 + %.sroa.7117.0193.us = phi i64 [ %95, %.lr.ph.us ], [ %89, %.lr.ph.us.preheader ] + %90 = getelementptr inbounds i32, ptr %72, i64 %.sroa.7117.0193.us + %91 = load i32, ptr %90, align 4, !tbaa !56 + %92 = sext i32 %91 to i64 + %93 = getelementptr inbounds i32, ptr %.pre, i64 %92 + %94 = load i32, ptr %93, align 4, !tbaa !56 + %.sroa.speculated.us = tail call i32 @llvm.smin.i32(i32 %78, i32 %94) + store i32 %.sroa.speculated.us, ptr %93, align 4, !tbaa !56 + %95 = add nsw i64 %.sroa.7117.0193.us, 1 + %exitcond208.not = icmp eq i64 %95, %87 + br i1 %exitcond208.not, label %._crit_edge.us, label %.lr.ph.us, !llvm.loop !349 .lr.ph203: ; preds = %._crit_edge, %._crit_edge.us - %83 = load ptr, ptr %1, align 8, !tbaa !199 + %96 = load ptr, ptr %1, align 8, !tbaa !199 %.not = icmp eq ptr %3, null - %84 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %85 = load ptr, ptr %84, align 8, !tbaa !167 - %86 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %87 = load ptr, ptr %86, align 8, !tbaa !87 - %88 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %89 = load ptr, ptr %88, align 8, !tbaa !165 - %90 = icmp eq ptr %89, null + %97 = getelementptr inbounds nuw i8, ptr %0, i64 48 + %98 = load ptr, ptr %97, align 8, !tbaa !167 + %99 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %100 = load ptr, ptr %99, align 8, !tbaa !87 + %101 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %102 = load ptr, ptr %101, align 8, !tbaa !165 + %103 = icmp eq ptr %102, null %sext = shl i64 %9, 32 - %91 = ashr exact i64 %sext, 32 - %wide.trip.count216 = and i64 %6, 2147483647 - br label %114 + %104 = ashr exact i64 %sext, 32 + %wide.trip.count217 = and i64 %6, 2147483647 + br label %127 -92: ; preds = %.invoke - %93 = landingpad { ptr, i32 } +105: ; preds = %.invoke + %106 = landingpad { ptr, i32 } cleanup tail call void @free(ptr noundef %.sroa.0131.0181) #5 br label %.body .lr.ph195.split: ; preds = %.lr.ph195, %._crit_edge %indvars.iv = phi i64 [ %indvars.iv.next, %._crit_edge ], [ 0, %.lr.ph195 ] - %94 = trunc nuw nsw i64 %indvars.iv to i32 - br i1 %.not83, label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit, label %95 + %107 = trunc nuw nsw i64 %indvars.iv to i32 + br i1 %.not83, label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit, label %108 -95: ; preds = %.lr.ph195.split - %96 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv - %97 = load i32, ptr %96, align 4, !tbaa !56 +108: ; preds = %.lr.ph195.split + %109 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv + %110 = load i32, ptr %109, align 4, !tbaa !56 br label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit -_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit: ; preds = %95, %.lr.ph195.split - %.071 = phi i32 [ %97, %95 ], [ %94, %.lr.ph195.split ] - %98 = sext i32 %.071 to i64 - %99 = getelementptr inbounds i32, ptr %61, i64 %98 - %100 = load i32, ptr %99, align 4, !tbaa !56 - %101 = sext i32 %100 to i64 - %102 = getelementptr inbounds i32, ptr %63, i64 %98 - %103 = load i32, ptr %102, align 4, !tbaa !56 - %104 = sext i32 %103 to i64 - %105 = add nsw i64 %104, %101 - %106 = icmp sgt i32 %103, 0 - br i1 %106, label %.lr.ph, label %._crit_edge +_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit: ; preds = %108, %.lr.ph195.split + %.071 = phi i32 [ %110, %95 ], [ %107, %.lr.ph195.split ] + %111 = sext i32 %.071 to i64 + %112 = getelementptr inbounds i32, ptr %74, i64 %111 + %113 = load i32, ptr %112, align 4, !tbaa !56 + %114 = sext i32 %113 to i64 + %115 = getelementptr inbounds i32, ptr %76, i64 %111 + %116 = load i32, ptr %115, align 4, !tbaa !56 + %117 = sext i32 %116 to i64 + %118 = add nsw i64 %117, %114 + %119 = icmp sgt i32 %116, 0 + br i1 %119, label %.lr.ph, label %._crit_edge ._crit_edge: ; preds = %.lr.ph, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count211 + %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count212 br i1 %exitcond.not, label %.lr.ph203, label %.lr.ph195.split, !llvm.loop !348 .lr.ph: ; preds = %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit, %.lr.ph - %.sroa.7117.0193 = phi i64 [ %112, %.lr.ph ], [ %101, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit ] - %107 = getelementptr inbounds i32, ptr %59, i64 %.sroa.7117.0193 - %108 = load i32, ptr %107, align 4, !tbaa !56 - %109 = sext i32 %108 to i64 - %110 = getelementptr inbounds i32, ptr %.pre, i64 %109 - %111 = load i32, ptr %110, align 4, !tbaa !56 - %.sroa.speculated = tail call i32 @llvm.smin.i32(i32 %94, i32 %111) - store i32 %.sroa.speculated, ptr %110, align 4, !tbaa !56 - %112 = add nsw i64 %.sroa.7117.0193, 1 - %113 = icmp slt i64 %112, %105 - br i1 %113, label %.lr.ph, label %._crit_edge, !llvm.loop !349 + %.sroa.7117.0193 = phi i64 [ %125, %.lr.ph ], [ %114, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit ] + %120 = getelementptr inbounds i32, ptr %72, i64 %.sroa.7117.0193 + %121 = load i32, ptr %120, align 4, !tbaa !56 + %122 = sext i32 %121 to i64 + %123 = getelementptr inbounds i32, ptr %.pre, i64 %122 + %124 = load i32, ptr %123, align 4, !tbaa !56 + %.sroa.speculated = tail call i32 @llvm.smin.i32(i32 %107, i32 %124) + store i32 %.sroa.speculated, ptr %123, align 4, !tbaa !56 + %125 = add nsw i64 %.sroa.7117.0193, 1 + %126 = icmp slt i64 %125, %118 + br i1 %126, label %.lr.ph, label %._crit_edge, !llvm.loop !349 ._crit_edge204: ; preds = %._crit_edge201, %_ZN5Eigen9DenseBaseINS_5BlockINS_6MatrixIiLin1ELi1ELi0ELin1ELi1EEELin1ELi1ELb0EEEE12setLinSpacedElRKiS7_.exit tail call void @free(ptr noundef %.sroa.0131.0181) #5 tail call void @free(ptr noundef %.sroa.0139.0166173180) #5 ret i32 0 -114: ; preds = %.lr.ph203, %._crit_edge201 - %indvars.iv213 = phi i64 [ 0, %.lr.ph203 ], [ %indvars.iv.next214, %._crit_edge201 ] - %115 = icmp sge i64 %indvars.iv213, %91 - %116 = getelementptr inbounds nuw i32, ptr %.sroa.0131.0181, i64 %indvars.iv213 - %117 = trunc nuw nsw i64 %indvars.iv213 to i32 - store i32 %117, ptr %116, align 4, !tbaa !56 - %118 = getelementptr inbounds nuw i32, ptr %.sroa.0139.0166173180, i64 %indvars.iv213 - store i32 %117, ptr %118, align 4, !tbaa !56 - %119 = getelementptr inbounds nuw i32, ptr %83, i64 %indvars.iv213 - store i32 %7, ptr %119, align 4, !tbaa !56 - br i1 %.not, label %123, label %120 - -120: ; preds = %114 - %121 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv213 - %122 = load i32, ptr %121, align 4, !tbaa !56 - br label %123 +127: ; preds = %.lr.ph203, %._crit_edge201 + %indvars.iv214 = phi i64 [ 0, %.lr.ph203 ], [ %indvars.iv.next215, %._crit_edge201 ] + %128 = icmp sge i64 %indvars.iv214, %104 + %129 = getelementptr inbounds nuw i32, ptr %.sroa.0131.0181, i64 %indvars.iv214 + %130 = trunc nuw nsw i64 %indvars.iv214 to i32 + store i32 %130, ptr %129, align 4, !tbaa !56 + %131 = getelementptr inbounds nuw i32, ptr %.sroa.0139.0166173180, i64 %indvars.iv214 + store i32 %130, ptr %131, align 4, !tbaa !56 + %132 = getelementptr inbounds nuw i32, ptr %96, i64 %indvars.iv214 + store i32 %7, ptr %132, align 4, !tbaa !56 + br i1 %.not, label %136, label %133 + +133: ; preds = %127 + %134 = getelementptr inbounds nuw i32, ptr %3, i64 %indvars.iv214 + %135 = load i32, ptr %134, align 4, !tbaa !56 + br label %136 -123: ; preds = %120, %114 - %.056 = phi i32 [ %122, %120 ], [ %117, %114 ] - %124 = sext i32 %.056 to i64 - %125 = getelementptr inbounds i32, ptr %87, i64 %124 - %126 = load i32, ptr %125, align 4, !tbaa !56 - %127 = sext i32 %126 to i64 - br i1 %90, label %128, label %132 +136: ; preds = %133, %127 + %.056 = phi i32 [ %135, %120 ], [ %130, %114 ] + %137 = sext i32 %.056 to i64 + %138 = getelementptr inbounds i32, ptr %100, i64 %137 + %139 = load i32, ptr %138, align 4, !tbaa !56 + %140 = sext i32 %139 to i64 + br i1 %103, label %141, label %145 -128: ; preds = %123 - %129 = getelementptr i8, ptr %125, i64 4 - %130 = load i32, ptr %129, align 4, !tbaa !56 - %131 = sext i32 %130 to i64 +141: ; preds = %136 + %142 = getelementptr i8, ptr %138, i64 4 + %143 = load i32, ptr %142, align 4, !tbaa !56 + %144 = sext i32 %143 to i64 br label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 -132: ; preds = %123 - %133 = getelementptr inbounds i32, ptr %89, i64 %124 - %134 = load i32, ptr %133, align 4, !tbaa !56 - %135 = sext i32 %134 to i64 - %136 = add nsw i64 %135, %127 +145: ; preds = %136 + %146 = getelementptr inbounds i32, ptr %102, i64 %137 + %147 = load i32, ptr %146, align 4, !tbaa !56 + %148 = sext i32 %147 to i64 + %149 = add nsw i64 %148, %140 br label %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 -_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109: ; preds = %128, %132 - %.sink.i108 = phi i64 [ %131, %128 ], [ %136, %132 ] - %137 = icmp sle i64 %.sink.i108, %127 - %.not190196 = select i1 %137, i1 %115, i1 false +_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109: ; preds = %141, %145 + %.sink.i108 = phi i64 [ %144, %128 ], [ %149, %132 ] + %150 = icmp sle i64 %.sink.i108, %140 + %.not190196 = select i1 %150, i1 %128, i1 false br i1 %.not190196, label %._crit_edge201, label %.lr.ph200 ._crit_edge201: ; preds = %159, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 - %indvars.iv.next214 = add nuw nsw i64 %indvars.iv213, 1 - %exitcond217.not = icmp eq i64 %indvars.iv.next214, %wide.trip.count216 - br i1 %exitcond217.not, label %._crit_edge204, label %114, !llvm.loop !350 + %indvars.iv.next215 = add nuw nsw i64 %indvars.iv214, 1 + %exitcond218.not = icmp eq i64 %indvars.iv.next215, %wide.trip.count217 + br i1 %exitcond218.not, label %._crit_edge204, label %127, !llvm.loop !350 .lr.ph200: ; preds = %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109, %159 - %138 = phi i1 [ %161, %159 ], [ %137, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 ] - %.066199 = phi i32 [ %.167, %159 ], [ %117, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 ] - %.069198 = phi i1 [ %spec.select, %159 ], [ %115, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 ] - %.sroa.7.0197 = phi i64 [ %160, %159 ], [ %127, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 ] - br i1 %138, label %143, label %139 - -139: ; preds = %.lr.ph200 - %140 = getelementptr inbounds i32, ptr %85, i64 %.sroa.7.0197 - %141 = load i32, ptr %140, align 4, !tbaa !56 - %142 = sext i32 %141 to i64 - br label %143 + %151 = phi i1 [ %161, %159 ], [ %150, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 ] + %.066199 = phi i32 [ %.167, %159 ], [ %130, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 ] + %.069198 = phi i1 [ %spec.select, %159 ], [ %128, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 ] + %.sroa.7.0197 = phi i64 [ %160, %159 ], [ %140, %_ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS3_l.exit109 ] + br i1 %151, label %156, label %152 + +152: ; preds = %.lr.ph200 + %153 = getelementptr inbounds i32, ptr %98, i64 %.sroa.7.0197 + %154 = load i32, ptr %153, align 4, !tbaa !56 + %155 = sext i32 %154 to i64 + br label %156 -143: ; preds = %.lr.ph200, %139 - %.055 = phi i64 [ %142, %139 ], [ %indvars.iv213, %.lr.ph200 ] - %144 = icmp eq i64 %.055, %indvars.iv213 - %spec.select = select i1 %144, i1 true, i1 %.069198 - %145 = getelementptr inbounds i32, ptr %.pre, i64 %.055 - %146 = load i32, ptr %145, align 4, !tbaa !56 - %147 = sext i32 %146 to i64 - %.not78 = icmp sgt i64 %indvars.iv213, %147 - br i1 %.not78, label %148, label %159 +156: ; preds = %.lr.ph200, %152 + %.055 = phi i64 [ %155, %139 ], [ %indvars.iv214, %.lr.ph200 ] + %157 = icmp eq i64 %.055, %indvars.iv214 + %spec.select = select i1 %157, i1 true, i1 %.069198 + %158 = getelementptr inbounds i32, ptr %.pre, i64 %.055 + %159 = load i32, ptr %158, align 4, !tbaa !56 + %160 = sext i32 %159 to i64 + %.not78 = icmp sgt i64 %indvars.iv214, %160 + br i1 %.not78, label %161, label %159 -148: ; preds = %143 - %.014.in18.i = getelementptr inbounds i32, ptr %.sroa.0131.0181, i64 %147 +161: ; preds = %156 + %.014.in18.i = getelementptr inbounds i32, ptr %.sroa.0131.0181, i64 %160 %.01419.i = load i32, ptr %.014.in18.i, align 4, !tbaa !56 %.pn20.i = sext i32 %.01419.i to i64 %.0.in21.i = getelementptr inbounds i32, ptr %.sroa.0131.0181, i64 %.pn20.i @@ -10198,12 +10198,12 @@ _ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS %.not23.i = icmp eq i32 %.022.i, %.01419.i br i1 %.not23.i, label %.loopexit, label %.lr.ph.i -.lr.ph.i: ; preds = %148, %.lr.ph.i +.lr.ph.i: ; preds = %161, %.lr.ph.i %.025.i = phi i32 [ %.0.i, %.lr.ph.i ], [ %.022.i, %148 ] - %.01524.i = phi i32 [ %.025.i, %.lr.ph.i ], [ %146, %148 ] - %149 = sext i32 %.01524.i to i64 - %150 = getelementptr inbounds i32, ptr %.sroa.0131.0181, i64 %149 - store i32 %.025.i, ptr %150, align 4, !tbaa !56 + %.01524.i = phi i32 [ %.025.i, %.lr.ph.i ], [ %159, %148 ] + %162 = sext i32 %.01524.i to i64 + %163 = getelementptr inbounds i32, ptr %.sroa.0131.0181, i64 %162 + store i32 %.025.i, ptr %163, align 4, !tbaa !56 %.pn16.i = sext i32 %.025.i to i64 %.014.in.i = getelementptr inbounds i32, ptr %.sroa.0131.0181, i64 %.pn16.i %.014.i = load i32, ptr %.014.in.i, align 4, !tbaa !56 @@ -10213,16 +10213,16 @@ _ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS %.not.i = icmp eq i32 %.0.i, %.014.i br i1 %.not.i, label %.loopexit, label %.lr.ph.i, !llvm.loop !351 -.loopexit: ; preds = %.lr.ph.i, %148 +.loopexit: ; preds = %.lr.ph.i, %161 %.pre-phi = phi i64 [ %.pn20.i, %148 ], [ %.pn.i, %.lr.ph.i ] %.014.lcssa.i = phi i32 [ %.01419.i, %148 ], [ %.014.i, %.lr.ph.i ] - %151 = getelementptr inbounds i32, ptr %.sroa.0139.0166173180, i64 %.pre-phi - %152 = load i32, ptr %151, align 4, !tbaa !56 - %153 = zext i32 %152 to i64 - %.not79 = icmp eq i64 %indvars.iv213, %153 - br i1 %.not79, label %159, label %154 + %164 = getelementptr inbounds i32, ptr %.sroa.0139.0166173180, i64 %.pre-phi + %165 = load i32, ptr %164, align 4, !tbaa !56 + %166 = zext i32 %165 to i64 + %.not79 = icmp eq i64 %indvars.iv214, %166 + br i1 %.not79, label %159, label %172 -154: ; preds = %.loopexit +172: ; preds = %.loopexit %155 = sext i32 %152 to i64 %156 = getelementptr inbounds i32, ptr %83, i64 %155 store i32 %117, ptr %156, align 4, !tbaa !56 @@ -10239,9 +10239,9 @@ _ZN5Eigen20SparseCompressedBaseINS_12SparseMatrixIdLi0EiEEE13InnerIteratorC2ERKS %.not190 = select i1 %161, i1 %spec.select, i1 false br i1 %.not190, label %._crit_edge201, label %.lr.ph200, !llvm.loop !352 -.body: ; preds = %92, %20 +.body: ; preds = %105, %20 %.sroa.0139.0167 = phi ptr [ %.sroa.0139.0166173180, %92 ], [ %calloc, %20 ] - %.pn84.pn.pn.pn.pn = phi { ptr, i32 } [ %93, %92 ], [ %21, %20 ] + %.pn84.pn.pn.pn.pn = phi { ptr, i32 } [ %106, %92 ], [ %21, %20 ] tail call void @free(ptr noundef %.sroa.0139.0167) #5 resume { ptr, i32 } %.pn84.pn.pn.pn.pn } diff --git a/bench/opencv/optimized/eltwise_layer.ll b/bench/opencv/optimized/eltwise_layer.ll index 91918eaf0c4..5bbdb97f7c2 100644 --- a/bench/opencv/optimized/eltwise_layer.ll +++ b/bench/opencv/optimized/eltwise_layer.ll @@ -6173,21 +6173,21 @@ _ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i: ; preds = %_ZNKSt6vectorIPKN2c %.idx.i.i.i.i.i31.i = add nsw i64 %106, -8 tail call void @llvm.memset.p0.i64(ptr align 8 %110, i8 0, i64 %.idx.i.i.i.i.i31.i, i1 false), !tbaa !187 store ptr %107, ptr %100, align 8, !tbaa !188 - %111 = getelementptr inbounds nuw ptr, ptr %107, i64 %105 - store ptr %111, ptr %109, align 8, !tbaa !189 - store ptr %111, ptr %108, align 8, !tbaa !190 - %112 = getelementptr inbounds nuw i8, ptr %12, i64 40 - %113 = shl nuw nsw i64 %105, 2 - %114 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %113) #24 + %112 = getelementptr inbounds nuw ptr, ptr %107, i64 %105 + store ptr %112, ptr %109, align 8, !tbaa !189 + store ptr %112, ptr %108, align 8, !tbaa !190 + %113 = getelementptr inbounds nuw i8, ptr %12, i64 40 + %114 = shl nuw nsw i64 %105, 2 + %115 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %114) #24 to label %_ZNSt6vectorIiSaIiEE6resizeEm.exit unwind label %142 _ZNSt6vectorIiSaIiEE6resizeEm.exit: ; preds = %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i - %115 = getelementptr inbounds nuw i8, ptr %12, i64 56 - %116 = getelementptr inbounds nuw i8, ptr %12, i64 48 - store i32 0, ptr %114, align 4, !tbaa !96 - %117 = getelementptr i8, ptr %114, i64 4 - %118 = shl nuw nsw i64 %105, 2 - %.idx.i.i.i.i.i31.i205 = add nsw i64 %118, -4 + %116 = getelementptr inbounds nuw i8, ptr %12, i64 56 + %117 = getelementptr inbounds nuw i8, ptr %12, i64 48 + store i32 0, ptr %115, align 4, !tbaa !96 + %118 = getelementptr i8, ptr %115, i64 4 + %.idx.i.i.i.i.i31.i205 = shl nuw nsw i64 %105, 2 + %.idx.i.i.i.i.i31.i205 = add nsw i64 %.idx.i.i.i.i.i31.i205, -4 tail call void @llvm.memset.p0.i64(ptr align 4 %117, i8 0, i64 %.idx.i.i.i.i.i31.i205, i1 false), !tbaa !96 store ptr %114, ptr %112, align 8, !tbaa !125 %119 = getelementptr inbounds nuw i32, ptr %114, i64 %105 @@ -6386,7 +6386,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit173: ; preds = %17 191: ; preds = %184, %186 %192 = phi i32 [ %190, %186 ], [ 1, %184 ] - %193 = load ptr, ptr %112, align 8, !tbaa !125 + %193 = load ptr, ptr %113, align 8, !tbaa !125 %194 = getelementptr inbounds nuw i32, ptr %193, i64 %indvars.iv store i32 %192, ptr %194, align 4, !tbaa !96 %195 = load i32, ptr %135, align 4, !tbaa !78 @@ -6447,7 +6447,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit176: ; preds = %20 br i1 %212, label %._crit_edge277, label %213 ._crit_edge277: ; preds = %211 - %.pre = load ptr, ptr %112, align 8, !tbaa !125 + %.pre = load ptr, ptr %113, align 8, !tbaa !125 %.pre278 = load i32, ptr %.pre, align 4, !tbaa !96 br label %223 @@ -6697,7 +6697,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit194: ; preds = %27 .lr.ph: ; preds = %283 %285 = load ptr, ptr %100, align 8, !tbaa !188 - %286 = load ptr, ptr %112, align 8 + %286 = load ptr, ptr %113, align 8 %287 = load ptr, ptr %120, align 8 %.fr245 = freeze ptr %287 %288 = load ptr, ptr %138, align 8 @@ -6905,7 +6905,7 @@ _ZNSt6vectorIfSaIfEE5clearEv.exit: ; preds = %.lr.ph243, %366, %. br label %_ZNSt6vectorIfSaIfEED2Ev.exit.i _ZNSt6vectorIfSaIfEED2Ev.exit.i: ; preds = %389, %387 - %390 = load ptr, ptr %112, align 8, !tbaa !125 + %390 = load ptr, ptr %113, align 8, !tbaa !125 %.not.i.i.i1.i = icmp eq ptr %390, null br i1 %.not.i.i.i1.i, label %_ZNSt6vectorIiSaIiEED2Ev.exit.i, label %391 diff --git a/bench/opencv/optimized/freak.ll b/bench/opencv/optimized/freak.ll index 703d00d030a..9b4a966c8a1 100644 --- a/bench/opencv/optimized/freak.ll +++ b/bench/opencv/optimized/freak.ll @@ -7714,9 +7714,9 @@ _ZNK2cv7MatExprcvNS_3MatEEv.exit: ; preds = %113 br label %.preheader258 .preheader258: ; preds = %.preheader258.lr.ph, %144 - %indvars.iv381 = phi i64 [ %134, %.preheader258.lr.ph ], [ %indvars.iv.next382, %144 ] + %indvars.iv383 = phi i64 [ %134, %.preheader258.lr.ph ], [ %indvars.iv.next384, %144 ] %.079309 = phi ptr [ %131, %.preheader258.lr.ph ], [ %145, %144 ] - %indvars.iv.next382 = add nsw i64 %indvars.iv381, -1 + %indvars.iv.next384 = add nsw i64 %indvars.iv383, -1 %135 = load ptr, ptr %132, align 8 %136 = load ptr, ptr %133, align 8 br label %146 @@ -7740,7 +7740,7 @@ _ZNK2cv7MatExprcvNS_3MatEEv.exit: ; preds = %113 144: ; preds = %158 %145 = getelementptr inbounds i8, ptr %.079309, i64 -128 - %.not = icmp eq i64 %indvars.iv.next382, 0 + %.not = icmp eq i64 %indvars.iv.next384, 0 br i1 %.not, label %.preheader252, label %.preheader258, !llvm.loop !271 146: ; preds = %.preheader258, %158 @@ -7756,7 +7756,7 @@ _ZNK2cv7MatExprcvNS_3MatEEv.exit: ; preds = %113 153: ; preds = %146 %154 = load i64, ptr %136, align 8, !tbaa !99 - %155 = mul i64 %154, %indvars.iv.next382 + %155 = mul i64 %154, %indvars.iv.next384 %156 = getelementptr inbounds nuw i8, ptr %135, i64 %155 %157 = getelementptr inbounds nuw float, ptr %156, i64 %indvars.iv store float 1.000000e+00, ptr %157, align 4, !tbaa !272 @@ -7939,21 +7939,21 @@ _ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN2cv11xfeatures2d8PairStatESt6vectorIS br label %_ZNSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EED2Ev.exit163 212: ; preds = %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN2cv11xfeatures2d8PairStatESt6vectorIS4_SaIS4_EEEENS3_8sortMeanEEvT_SB_T0_.exit, %.critedge - %indvars.iv384 = phi i64 [ 0, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN2cv11xfeatures2d8PairStatESt6vectorIS4_SaIS4_EEEENS3_8sortMeanEEvT_SB_T0_.exit ], [ %indvars.iv.next385, %.critedge ] + %indvars.iv386 = phi i64 [ 0, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN2cv11xfeatures2d8PairStatESt6vectorIS4_SaIS4_EEEENS3_8sortMeanEEvT_SB_T0_.exit ], [ %indvars.iv.next387, %.critedge ] %.sroa.22.0326 = phi ptr [ null, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN2cv11xfeatures2d8PairStatESt6vectorIS4_SaIS4_EEEENS3_8sortMeanEEvT_SB_T0_.exit ], [ %.sroa.22.1, %.critedge ] %.sroa.14.0325 = phi ptr [ null, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN2cv11xfeatures2d8PairStatESt6vectorIS4_SaIS4_EEEENS3_8sortMeanEEvT_SB_T0_.exit ], [ %.sroa.14.2, %.critedge ] %.sroa.0.0324 = phi ptr [ null, %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPN2cv11xfeatures2d8PairStatESt6vectorIS4_SaIS4_EEEENS3_8sortMeanEEvT_SB_T0_.exit ], [ %.sroa.0.2, %.critedge ] br i1 %5, label %213, label %._ZNSolsEPFRSoS_E.exit131_crit_edge ._ZNSolsEPFRSoS_E.exit131_crit_edge: ; preds = %212 - %.pre392 = ptrtoint ptr %.sroa.14.0325 to i64 - %.pre394 = ptrtoint ptr %.sroa.0.0324 to i64 - %.pre396 = sub i64 %.pre392, %.pre394 - %.pre398 = ashr exact i64 %.pre396, 4 + %.pre394 = ptrtoint ptr %.sroa.14.0325 to i64 + %.pre396 = ptrtoint ptr %.sroa.0.0324 to i64 + %.pre398 = sub i64 %.pre394, %.pre396 + %.pre400 = ashr exact i64 %.pre398, 4 br label %_ZNSolsEPFRSoS_E.exit131 213: ; preds = %212 - %214 = trunc nuw nsw i64 %indvars.iv384 to i32 + %214 = trunc nuw nsw i64 %indvars.iv386 to i32 %215 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, i32 noundef %214) to label %216 unwind label %225 @@ -7983,16 +7983,16 @@ _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit129: ; preds = %_ZNS br label %_ZNSt6vectorIiSaIiEED2Ev.exit _ZNSolsEPFRSoS_E.exit131: ; preds = %._ZNSolsEPFRSoS_E.exit131_crit_edge, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit129 - %.pre-phi399 = phi i64 [ %.pre398, %._ZNSolsEPFRSoS_E.exit131_crit_edge ], [ %221, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit129 ] - %.pre-phi397 = phi i64 [ %.pre396, %._ZNSolsEPFRSoS_E.exit131_crit_edge ], [ %220, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit129 ] - %.pre-phi395 = phi i64 [ %.pre394, %._ZNSolsEPFRSoS_E.exit131_crit_edge ], [ %219, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit129 ] + %.pre-phi401 = phi i64 [ %.pre400, %._ZNSolsEPFRSoS_E.exit131_crit_edge ], [ %221, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit129 ] + %.pre-phi399 = phi i64 [ %.pre398, %._ZNSolsEPFRSoS_E.exit131_crit_edge ], [ %220, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit129 ] + %.pre-phi397 = phi i64 [ %.pre396, %._ZNSolsEPFRSoS_E.exit131_crit_edge ], [ %219, %_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc.exit129 ] %.not340 = icmp eq ptr %.sroa.14.0325, %.sroa.0.0324 br i1 %.not340, label %._crit_edge317, label %.lr.ph316 .lr.ph316: ; preds = %_ZNSolsEPFRSoS_E.exit131 - %227 = getelementptr inbounds nuw %"struct.cv::xfeatures2d::PairStat", ptr %.sroa.0214.1, i64 %indvars.iv384 + %227 = getelementptr inbounds nuw %"struct.cv::xfeatures2d::PairStat", ptr %.sroa.0214.1, i64 %indvars.iv386 %228 = getelementptr inbounds nuw i8, ptr %227, i64 8 - %umax = call i64 @llvm.umax.i64(i64 %.pre-phi399, i64 1) + %umax = call i64 @llvm.umax.i64(i64 %.pre-phi401, i64 1) br label %229 229: ; preds = %.lr.ph316, %251 @@ -8097,7 +8097,7 @@ _ZNSt6vectorIiSaIiEED2Ev.exit.thread: ; preds = %244, %250 br i1 %253, label %254, label %_ZNSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EE9push_backERKS2_.exit145 254: ; preds = %._crit_edge317 - %255 = getelementptr inbounds nuw %"struct.cv::xfeatures2d::PairStat", ptr %.sroa.0214.1, i64 %indvars.iv384 + %255 = getelementptr inbounds nuw %"struct.cv::xfeatures2d::PairStat", ptr %.sroa.0214.1, i64 %indvars.iv386 %.not.i136 = icmp eq ptr %.sroa.14.0325, %.sroa.22.0326 br i1 %.not.i136, label %258, label %256 @@ -8107,7 +8107,7 @@ _ZNSt6vectorIiSaIiEED2Ev.exit.thread: ; preds = %244, %250 br label %_ZNSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EE9push_backERKS2_.exit145 258: ; preds = %254 - %259 = icmp eq i64 %.pre-phi397, 9223372036854775792 + %259 = icmp eq i64 %.pre-phi399, 9223372036854775792 br i1 %259, label %260, label %_ZNKSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EE12_M_check_lenEmPKc.exit.i.i137 260: ; preds = %258 @@ -8118,9 +8118,9 @@ _ZNSt6vectorIiSaIiEED2Ev.exit.thread: ; preds = %244, %250 unreachable _ZNKSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EE12_M_check_lenEmPKc.exit.i.i137: ; preds = %258 - %.sroa.speculated.i.i.i138 = call i64 @llvm.umax.i64(i64 %.pre-phi399, i64 1) - %261 = add nsw i64 %.sroa.speculated.i.i.i138, %.pre-phi399 - %262 = icmp ult i64 %261, %.pre-phi399 + %.sroa.speculated.i.i.i138 = call i64 @llvm.umax.i64(i64 %.pre-phi401, i64 1) + %261 = add nsw i64 %.sroa.speculated.i.i.i138, %.pre-phi401 + %262 = icmp ult i64 %261, %.pre-phi401 %263 = call i64 @llvm.umin.i64(i64 %261, i64 576460752303423487) %264 = select i1 %262, i64 576460752303423487, i64 %263 %.not.i.i.i139 = icmp ne i64 %264, 0 @@ -8130,13 +8130,13 @@ _ZNKSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EE12_M_check_lenEmPKc.exit.i.i137 to label %.noexc144 unwind label %.loopexit247 .noexc144: ; preds = %_ZNKSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EE12_M_check_lenEmPKc.exit.i.i137 - %267 = getelementptr inbounds i8, ptr %266, i64 %.pre-phi397 + %267 = getelementptr inbounds i8, ptr %266, i64 %.pre-phi399 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %267, ptr noundef nonnull align 8 dereferenceable(16) %255, i64 16, i1 false), !tbaa.struct !290 - %268 = icmp sgt i64 %.pre-phi397, 0 + %268 = icmp sgt i64 %.pre-phi399, 0 br i1 %268, label %269, label %_ZNSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i140 269: ; preds = %.noexc144 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %266, ptr align 8 %.sroa.0.0324, i64 %.pre-phi397, i1 false) + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %266, ptr align 8 %.sroa.0.0324, i64 %.pre-phi399, i1 false) br label %_ZNSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i140 _ZNSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit16.i.i140: ; preds = %269, %.noexc144 @@ -8165,7 +8165,7 @@ _ZNSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9 br label %_ZNSt6vectorIiSaIiEED2Ev.exit _ZNSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EE9push_backERKS2_.exit145: ; preds = %_ZNSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i142, %256, %._crit_edge317 - %.pre-phi = phi i64 [ %.pre, %_ZNSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i142 ], [ %.pre-phi395, %256 ], [ %.pre-phi395, %._crit_edge317 ] + %.pre-phi = phi i64 [ %.pre, %_ZNSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i142 ], [ %.pre-phi397, %256 ], [ %.pre-phi397, %._crit_edge317 ] %.sroa.0.2 = phi ptr [ %266, %_ZNSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i142 ], [ %.sroa.0.0324, %256 ], [ %.sroa.0.0324, %._crit_edge317 ] %.sroa.14.2 = phi ptr [ %270, %_ZNSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i142 ], [ %257, %256 ], [ %.sroa.14.0325, %._crit_edge317 ] %.sroa.22.1 = phi ptr [ %272, %_ZNSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EE17_M_realloc_insertIJRKS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_.exit.i142 ], [ %.sroa.22.0326, %256 ], [ %.sroa.22.0326, %._crit_edge317 ] @@ -8178,7 +8178,7 @@ _ZNSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EE9push_backERKS2_.exit145: ; pred br i1 %5, label %277, label %_ZNSolsEPFRSoS_E.exit147.thread 277: ; preds = %276 - %278 = trunc nuw nsw i64 %indvars.iv384 to i32 + %278 = trunc nuw nsw i64 %indvars.iv386 to i32 %279 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, i32 noundef %278) to label %280 unwind label %.loopexit.split-lp248 @@ -8231,9 +8231,9 @@ _ZNKSt9basic_iosIcSt11char_traitsIcEE5widenEc.exit.i187: ; preds = %.noexc190, % to label %_ZNSolsEPFRSoS_E.exit147.thread233 unwind label %.loopexit.split-lp248 .critedge: ; preds = %_ZNSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EE9push_backERKS2_.exit145 - %indvars.iv.next385 = add nuw nsw i64 %indvars.iv384, 1 - %exitcond387.not = icmp eq i64 %indvars.iv.next385, 903 - br i1 %exitcond387.not, label %339, label %212, !llvm.loop !291 + %indvars.iv.next387 = add nuw nsw i64 %indvars.iv386, 1 + %exitcond389.not = icmp eq i64 %indvars.iv.next387, 903 + br i1 %exitcond389.not, label %339, label %212, !llvm.loop !291 _ZNSolsEPFRSoS_E.exit147.thread233: ; preds = %.noexc192 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, i8 0, i64 24, i1 false) @@ -8275,11 +8275,11 @@ _ZNSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EED2Ev.exit150: ; preds = %_ZNSt6v ret void 309: ; preds = %.preheader, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit - %indvars.iv388 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next389, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit ] + %indvars.iv390 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next391, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit ] %310 = phi ptr [ null, %.preheader ], [ %338, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit ] %311 = phi ptr [ null, %.preheader ], [ %337, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit ] %312 = phi ptr [ null, %.preheader ], [ %336, %_ZNSt6vectorIiSaIiEE9push_backERKi.exit ] - %313 = getelementptr inbounds nuw %"struct.cv::xfeatures2d::PairStat", ptr %.sroa.0.2, i64 %indvars.iv388 + %313 = getelementptr inbounds nuw %"struct.cv::xfeatures2d::PairStat", ptr %.sroa.0.2, i64 %indvars.iv390 %314 = getelementptr inbounds nuw i8, ptr %313, i64 8 %.not.i151 = icmp eq ptr %310, %311 br i1 %.not.i151, label %317, label %315 @@ -8347,9 +8347,9 @@ _ZNSt6vectorIiSaIiEE9push_backERKi.exit: ; preds = %_ZNSt6vectorIiSaIiE %337 = phi ptr [ %335, %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i ], [ %311, %315 ] %.pn341 = phi ptr [ %330, %_ZNSt6vectorIiSaIiEE17_M_realloc_insertIJRKiEEEvN9__gnu_cxx17__normal_iteratorIPiS1_EEDpOT_.exit.i ], [ %310, %315 ] %338 = getelementptr inbounds nuw i8, ptr %.pn341, i64 4 - %indvars.iv.next389 = add nuw nsw i64 %indvars.iv388, 1 - %exitcond391.not = icmp eq i64 %indvars.iv.next389, 512 - br i1 %exitcond391.not, label %_ZNSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EED2Ev.exit, label %309, !llvm.loop !292 + %indvars.iv.next391 = add nuw nsw i64 %indvars.iv390, 1 + %exitcond393.not = icmp eq i64 %indvars.iv.next391, 512 + br i1 %exitcond393.not, label %_ZNSt6vectorIN2cv11xfeatures2d8PairStatESaIS2_EED2Ev.exit, label %309, !llvm.loop !292 .loopexit: ; preds = %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i %lpad.loopexit = landingpad { ptr, i32 } diff --git a/bench/opencv/optimized/model.ll b/bench/opencv/optimized/model.ll index 54e12d50a4b..2114b6c9e86 100644 --- a/bench/opencv/optimized/model.ll +++ b/bench/opencv/optimized/model.ll @@ -14157,7 +14157,7 @@ _ZNSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEED2 %.sroa.0544.0.lcssa = phi ptr [ %42, %_ZNSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEED2Ev.exit ], [ %1132, %_ZNSt13unordered_mapISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreENS5_10PrefixHashESt8equal_toIS2_ESaISt4pairIKS2_S6_EEED2Ev.exit ] %.sroa.15.0.lcssa = phi ptr [ %45, %_ZNSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEED2Ev.exit ], [ %1133, %_ZNSt13unordered_mapISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreENS5_10PrefixHashESt8equal_toIS2_ESaISt4pairIKS2_S6_EEED2Ev.exit ] %66 = icmp eq ptr %.sroa.0544.0.lcssa, %.sroa.15.0.lcssa - br i1 %66, label %1179, label %.split873 + br i1 %66, label %1179, label %1189 .body: ; preds = %_ZNSt12_Vector_baseISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS8_EE11_M_allocateEm.exit.i.i %67 = landingpad { ptr, i32 } @@ -14172,7 +14172,7 @@ _ZNSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEED2 br label %_ZNSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEED2Ev.exit102 _ZNSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEED2Ev.exit102: ; preds = %.body.thread, %.body, %68 - %eh.lpad-body1090 = phi { ptr, i32 } [ %43, %.body.thread ], [ %67, %.body ], [ %67, %68 ] + %eh.lpad-body1101 = phi { ptr, i32 } [ %43, %.body.thread ], [ %67, %.body ], [ %67, %68 ] call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %_ZNSt6vectorISt4pairIS_IiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS7_EED2Ev.exit202 @@ -14595,25 +14595,25 @@ _ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i: ; preds = %228 to label %.noexc116 unwind label %.loopexit626 .noexc116: ; preds = %_ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i - %.pre978 = load ptr, ptr %.sroa.0521.0826, align 8, !tbaa !348 - %.pre979 = load ptr, ptr %213, align 8, !tbaa !348 - %231 = icmp eq ptr %.pre979, %.pre978 + %.pre987 = load ptr, ptr %.sroa.0521.0826, align 8, !tbaa !348 + %.pre988 = load ptr, ptr %213, align 8, !tbaa !348 + %231 = icmp eq ptr %.pre988, %.pre987 br i1 %231, label %233, label %232 232: ; preds = %.noexc116 - %.pre984 = ptrtoint ptr %.pre979 to i64 - %.pre985 = ptrtoint ptr %.pre978 to i64 - %.pre987 = sub i64 %.pre984, %.pre985 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %230, ptr align 4 %.pre978, i64 %.pre987, i1 false) + %.pre993 = ptrtoint ptr %.pre988 to i64 + %.pre994 = ptrtoint ptr %.pre987 to i64 + %.pre996 = sub i64 %.pre993, %.pre994 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %230, ptr align 4 %.pre987, i64 %.pre996, i1 false) br label %233 233: ; preds = %232, %.noexc116 - %.pre-phi9881093 = phi i64 [ %.pre987, %232 ], [ 0, %.noexc116 ] - %.not.i = icmp eq i64 %.pre-phi9881093, %218 + %.pre-phi9971104 = phi i64 [ %.pre996, %232 ], [ 0, %.noexc116 ] + %.not.i = icmp eq i64 %.pre-phi9971104, %218 br i1 %.not.i, label %236, label %234 234: ; preds = %233 - %235 = getelementptr inbounds i8, ptr %230, i64 %.pre-phi9881093 + %235 = getelementptr inbounds i8, ptr %230, i64 %.pre-phi9971104 store i32 %105, ptr %235, align 4, !tbaa !98 br label %_ZNSt6vectorIiSaIiEE9push_backERKi.exit @@ -14641,8 +14641,8 @@ _ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i: ; preds = %.lr.ph.split, %236 .noexc119: ; preds = %_ZNKSt6vectorIiSaIiEE12_M_check_lenEmPKc.exit.i.i %245 = getelementptr inbounds i8, ptr %244, i64 %218 store i32 %105, ptr %245, align 4, !tbaa !98 - %.not1218 = icmp eq ptr %214, %215 - br i1 %.not1218, label %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i, label %246 + %.not1238 = icmp eq ptr %214, %215 + br i1 %.not1238, label %_ZNSt6vectorIiSaIiEE11_S_relocateEPiS2_S2_RS0_.exit16.i.i, label %246 246: ; preds = %.noexc119 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %244, ptr align 4 %239, i64 %218, i1 false) @@ -14878,14 +14878,14 @@ _ZNSt10_HashtableISt6vectorIiSaIiEESt4pairIKS2_N2cv3dnn25TextRecognitionModel_Im br i1 %.not90, label %.loopexit623._crit_edge, label %333 .loopexit623._crit_edge: ; preds = %.loopexit623 - %.pre981 = load float, ptr @_ZN2cv3dnnL16kMinLogDiffFloatE, align 4, !tbaa !102 + %.pre990 = load float, ptr @_ZN2cv3dnnL16kMinLogDiffFloatE, align 4, !tbaa !102 br label %436 333: ; preds = %.loopexit623 %334 = getelementptr inbounds i8, ptr %.fr.i.i.i244, i64 -4 %335 = load i32, ptr %334, align 4, !tbaa !98 %336 = icmp eq i32 %105, %335 - %.pre982 = load float, ptr @_ZN2cv3dnnL16kMinLogDiffFloatE, align 4, !tbaa !102 + %.pre991 = load float, ptr @_ZN2cv3dnnL16kMinLogDiffFloatE, align 4, !tbaa !102 br i1 %336, label %337, label %436 337: ; preds = %333 @@ -14898,7 +14898,7 @@ _ZNSt10_HashtableISt6vectorIiSaIiEESt4pairIKS2_N2cv3dnn25TextRecognitionModel_Im %344 = fsub float %341, %339 %.014.i122 = select i1 %342, float %341, float %339 %.013.i123 = select i1 %342, float %343, float %344 - %345 = fcmp ult float %.013.i123, %.pre982 + %345 = fcmp ult float %.013.i123, %.pre991 br i1 %345, label %.lr.ph.preheader.i.i.i247, label %346 346: ; preds = %337 @@ -15079,7 +15079,7 @@ _ZNSt16allocator_traitsISaIiEE8allocateERS0_m.exit.i.i.i.i.i.i.i.i.i331: ; preds _ZNSt10_HashtableISt6vectorIiSaIiEESt4pairIKS2_N2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS9_ENSt8__detail10_Select1stESt8equal_toIS2_ENS7_10PrefixHashENSB_18_Mod_range_hashingENSB_20_Default_ranged_hashENSB_20_Prime_rehash_policyENSB_17_Hashtable_traitsILb1ELb0ELb1EEEE12_Scoped_nodeD2Ev.exit.i263: ; preds = %.noexc274 call void @llvm.lifetime.end.p0(ptr nonnull %4) - %.pre980 = load float, ptr @_ZN2cv3dnnL16kMinLogDiffFloatE, align 4, !tbaa !102 + %.pre989 = load float, ptr @_ZN2cv3dnnL16kMinLogDiffFloatE, align 4, !tbaa !102 br label %.loopexit620 416: ; preds = %.noexc274 @@ -15090,7 +15090,7 @@ _ZNSt10_HashtableISt6vectorIiSaIiEESt4pairIKS2_N2cv3dnn25TextRecognitionModel_Im br label %.body241.thread .loopexit620: ; preds = %_ZNKSt8__detail15_Hashtable_baseISt6vectorIiSaIiEESt4pairIKS3_N2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEENS_10_Select1stESt8equal_toIS3_ENS8_10PrefixHashENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS5_mRKNS_16_Hash_node_valueISA_Lb1EEE.exit.i.i.i266, %_ZNSt10_HashtableISt6vectorIiSaIiEESt4pairIKS2_N2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS9_ENSt8__detail10_Select1stESt8equal_toIS2_ENS7_10PrefixHashENSB_18_Mod_range_hashingENSB_20_Default_ranged_hashENSB_20_Prime_rehash_policyENSB_17_Hashtable_traitsILb1ELb0ELb1EEEE12_Scoped_nodeD2Ev.exit.i263 - %418 = phi float [ %.pre980, %_ZNSt10_HashtableISt6vectorIiSaIiEESt4pairIKS2_N2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS9_ENSt8__detail10_Select1stESt8equal_toIS2_ENS7_10PrefixHashENSB_18_Mod_range_hashingENSB_20_Default_ranged_hashENSB_20_Prime_rehash_policyENSB_17_Hashtable_traitsILb1ELb0ELb1EEEE12_Scoped_nodeD2Ev.exit.i263 ], [ %.pre982, %_ZNKSt8__detail15_Hashtable_baseISt6vectorIiSaIiEESt4pairIKS3_N2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEENS_10_Select1stESt8equal_toIS3_ENS8_10PrefixHashENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS5_mRKNS_16_Hash_node_valueISA_Lb1EEE.exit.i.i.i266 ] + %418 = phi float [ %.pre989, %_ZNSt10_HashtableISt6vectorIiSaIiEESt4pairIKS2_N2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS9_ENSt8__detail10_Select1stESt8equal_toIS2_ENS7_10PrefixHashENSB_18_Mod_range_hashingENSB_20_Default_ranged_hashENSB_20_Prime_rehash_policyENSB_17_Hashtable_traitsILb1ELb0ELb1EEEE12_Scoped_nodeD2Ev.exit.i263 ], [ %.pre991, %_ZNKSt8__detail15_Hashtable_baseISt6vectorIiSaIiEESt4pairIKS3_N2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEENS_10_Select1stESt8equal_toIS3_ENS8_10PrefixHashENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS5_mRKNS_16_Hash_node_valueISA_Lb1EEE.exit.i.i.i266 ] %.pn.i264 = phi ptr [ %415, %_ZNSt10_HashtableISt6vectorIiSaIiEESt4pairIKS2_N2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS9_ENSt8__detail10_Select1stESt8equal_toIS2_ENS7_10PrefixHashENSB_18_Mod_range_hashingENSB_20_Default_ranged_hashENSB_20_Prime_rehash_policyENSB_17_Hashtable_traitsILb1ELb0ELb1EEEE12_Scoped_nodeD2Ev.exit.i263 ], [ %.0.i.i.i258, %_ZNKSt8__detail15_Hashtable_baseISt6vectorIiSaIiEESt4pairIKS3_N2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEENS_10_Select1stESt8equal_toIS3_ENS8_10PrefixHashENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_17_Hashtable_traitsILb1ELb0ELb1EEEE9_M_equalsERS5_mRKNS_16_Hash_node_valueISA_Lb1EEE.exit.i.i.i266 ] %419 = getelementptr inbounds nuw i8, ptr %.pn.i264, i64 36 %420 = load float, ptr %419, align 4, !tbaa !631 @@ -15142,7 +15142,7 @@ _ZN2cv3dnn6LogAddEff.exit131: ; preds = %428, %.loopexit620 br label %.body241.thread 436: ; preds = %.loopexit623._crit_edge, %333 - %437 = phi float [ %.pre981, %.loopexit623._crit_edge ], [ %.pre982, %333 ] + %437 = phi float [ %.pre990, %.loopexit623._crit_edge ], [ %.pre991, %333 ] %438 = getelementptr inbounds nuw i8, ptr %.pn.i230, i64 36 %439 = load float, ptr %438, align 4, !tbaa !631 %440 = load float, ptr %212, align 4, !tbaa !629 @@ -15198,9 +15198,9 @@ _ZNSt6vectorIiSaIiEED2Ev.exit141: ; preds = %_ZN2cv3dnn6LogAddEf br i1 %.not.i.i.i142, label %.body208, label %.body241.thread .body241.thread: ; preds = %432, %318, %329, %434, %405, %416, %.loopexit.split-lp632, %.body241 - %.pn91.pn1102 = phi { ptr, i32 } [ %lpad.loopexit633, %.body241 ], [ %433, %432 ], [ %319, %318 ], [ %330, %329 ], [ %435, %434 ], [ %406, %405 ], [ %417, %416 ], [ %lpad.loopexit.split-lp634, %.loopexit.split-lp632 ] - %.sroa.0.61101 = phi ptr [ %239, %.body241 ], [ %.sroa.0.5, %432 ], [ %.sroa.0.5, %318 ], [ %.sroa.0.5, %329 ], [ %.sroa.0.5, %434 ], [ %.sroa.0.5, %405 ], [ %.sroa.0.5, %416 ], [ %230, %.loopexit.split-lp632 ] - call void @_ZdlPv(ptr noundef nonnull %.sroa.0.61101) #31 + %.pn91.pn1113 = phi { ptr, i32 } [ %lpad.loopexit633, %.body241 ], [ %433, %432 ], [ %319, %318 ], [ %330, %329 ], [ %435, %434 ], [ %406, %405 ], [ %417, %416 ], [ %lpad.loopexit.split-lp634, %.loopexit.split-lp632 ] + %.sroa.0.61112 = phi ptr [ %239, %.body241 ], [ %.sroa.0.5, %432 ], [ %.sroa.0.5, %318 ], [ %.sroa.0.5, %329 ], [ %.sroa.0.5, %434 ], [ %.sroa.0.5, %405 ], [ %.sroa.0.5, %416 ], [ %230, %.loopexit.split-lp632 ] + call void @_ZdlPv(ptr noundef nonnull %.sroa.0.61112) #31 br label %.body208 462: ; preds = %_ZNSt12_Vector_baseISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS8_EE11_M_allocateEm.exit.i.i108 @@ -15974,7 +15974,7 @@ _ZSt11nth_elementIN9__gnu_cxx17__normal_iteratorIPSt4pairISt6vectorIiSaIiEEN2cv3 to label %._ZNSt6vectorISt4pairIS_IiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS7_EE6resizeEm.exit_crit_edge unwind label %1164 ._ZNSt6vectorISt4pairIS_IiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS7_EE6resizeEm.exit_crit_edge: ; preds = %851 - %.pre983 = load ptr, ptr %64, align 8, !tbaa !647 + %.pre992 = load ptr, ptr %64, align 8, !tbaa !647 br label %_ZNSt6vectorISt4pairIS_IiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS7_EE6resizeEm.exit 853: ; preds = %_ZSt11nth_elementIN9__gnu_cxx17__normal_iteratorIPSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEES3_ISA_SaISA_EEEEPFbRKSA_SG_EEvT_SJ_SJ_T0_.exit @@ -16006,7 +16006,7 @@ _ZSt8_DestroyIPSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11Pre br label %_ZNSt6vectorISt4pairIS_IiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS7_EE6resizeEm.exit _ZNSt6vectorISt4pairIS_IiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS7_EE6resizeEm.exit: ; preds = %._ZNSt6vectorISt4pairIS_IiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS7_EE6resizeEm.exit_crit_edge, %_ZSt8_DestroyIPSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEES8_EvT_SA_RSaIT0_E.exit.i.i, %855, %853 - %860 = phi ptr [ %.pre983, %._ZNSt6vectorISt4pairIS_IiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS7_EE6resizeEm.exit_crit_edge ], [ %856, %_ZSt8_DestroyIPSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEES8_EvT_SA_RSaIT0_E.exit.i.i ], [ %844, %855 ], [ %844, %853 ] + %860 = phi ptr [ %.pre992, %._ZNSt6vectorISt4pairIS_IiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS7_EE6resizeEm.exit_crit_edge ], [ %856, %_ZSt8_DestroyIPSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEES8_EvT_SA_RSaIT0_E.exit.i.i ], [ %844, %855 ], [ %844, %853 ] %861 = load ptr, ptr %10, align 8, !tbaa !647 %.not.i.i146 = icmp eq ptr %861, %860 br i1 %.not.i.i146, label %_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEES3_ISA_SaISA_EEEEPFbRKSA_SG_EEvT_SJ_T0_.exit, label %862 @@ -16735,7 +16735,7 @@ _ZNSt13unordered_mapISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11Prefi br label %.body208 .body208: ; preds = %.body241, %.body241.thread, %.loopexit.split-lp627, %.loopexit626, %.split.us, %222, %.split848.us, %.body109 - %.pn95.pn = phi { ptr, i32 } [ %.pn87.pn, %.body109 ], [ %210, %.split848.us ], [ %209, %.split.us ], [ %223, %222 ], [ %lpad.loopexit633, %.body241 ], [ %.pn91.pn1102, %.body241.thread ], [ %lpad.loopexit628, %.loopexit626 ], [ %lpad.loopexit.split-lp629, %.loopexit.split-lp627 ] + %.pn95.pn = phi { ptr, i32 } [ %.pn87.pn, %.body109 ], [ %210, %.split848.us ], [ %209, %.split.us ], [ %223, %222 ], [ %lpad.loopexit633, %.body241 ], [ %.pn91.pn1113, %.body241.thread ], [ %lpad.loopexit628, %.loopexit626 ], [ %lpad.loopexit.split-lp629, %.loopexit.split-lp627 ] %1166 = load ptr, ptr %9, align 8, !tbaa !650 %.not.i.i.i165 = icmp eq ptr %1166, null br i1 %.not.i.i.i165, label %_ZNSt6vectorISt4pairIfiESaIS1_EED2Ev.exit166, label %1167 @@ -16784,7 +16784,7 @@ _ZNSt10_HashtableISt6vectorIiSaIiEESt4pairIKS2_N2cv3dnn25TextRecognitionModel_Im _ZNSt13unordered_mapISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreENS5_10PrefixHashESt8equal_toIS2_ESaISt4pairIKS2_S6_EEED2Ev.exit174: ; preds = %_ZNSt10_HashtableISt6vectorIiSaIiEESt4pairIKS2_N2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS9_ENSt8__detail10_Select1stESt8equal_toIS2_ENS7_10PrefixHashENSB_18_Mod_range_hashingENSB_20_Default_ranged_hashENSB_20_Prime_rehash_policyENSB_17_Hashtable_traitsILb1ELb0ELb1EEEE5clearEv.exit.i.i173, %1178 call void @llvm.lifetime.end.p0(ptr nonnull %8) - br label %1219 + br label %1223 1179: ; preds = %._crit_edge871 call void @llvm.lifetime.start.p0(ptr nonnull %11) @@ -16802,7 +16802,7 @@ _ZNSt13unordered_mapISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11Prefi 1182: ; preds = %1179 %1183 = landingpad { ptr, i32 } cleanup - br label %.thread1103 + br label %.thread1114 1184: ; preds = %1180 %1185 = landingpad { ptr, i32 } @@ -16810,148 +16810,148 @@ _ZNSt13unordered_mapISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11Prefi %1186 = load ptr, ptr %11, align 8, !tbaa !70 %1187 = getelementptr inbounds nuw i8, ptr %11, i64 16 %1188 = icmp eq ptr %1186, %1187 - br i1 %1188, label %.thread1103, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i + br i1 %1188, label %.thread1114, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i: ; preds = %1184 call void @_ZdlPv(ptr noundef %1186) #31 - br label %.thread1103 + br label %.thread1114 -.thread1103: ; preds = %1184, %1182, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i +.thread1114: ; preds = %1184, %1182, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i %.pn85 = phi { ptr, i32 } [ %1183, %1182 ], [ %1185, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i ], [ %1185, %1184 ] call void @llvm.lifetime.end.p0(ptr nonnull %12) call void @llvm.lifetime.end.p0(ptr nonnull %11) br label %_ZSt8_DestroyIPSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEES8_EvT_SA_RSaIT0_E.exit.i199 -.split873: ; preds = %._crit_edge871 - %1189 = load ptr, ptr %.sroa.0544.0.lcssa, align 8, !tbaa !348 - %1190 = getelementptr inbounds nuw i8, ptr %.sroa.0544.0.lcssa, i64 8 - %1191 = load ptr, ptr %1190, align 8, !tbaa !348 - %.not614874 = icmp eq ptr %1189, %1191 - br i1 %.not614874, label %.lr.ph.i.i.i.i176.preheader, label %.lr.ph876 +1189: ; preds = %._crit_edge871 + %1190 = load ptr, ptr %.sroa.0544.0.lcssa, align 8, !tbaa !348 + %1191 = getelementptr inbounds nuw i8, ptr %.sroa.0544.0.lcssa, i64 8 + %1192 = load ptr, ptr %1191, align 8, !tbaa !348 + %.not614873 = icmp eq ptr %1190, %1192 + br i1 %.not614873, label %.lr.ph.i.i.i.i176.preheader, label %.lr.ph876 -.lr.ph.i.i.i.i176.preheader: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_.exit, %.split873 +.lr.ph.i.i.i.i176.preheader: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_.exit, %1189 br label %.lr.ph.i.i.i.i176 .lr.ph.i.i.i.i176: ; preds = %.lr.ph.i.i.i.i176.preheader, %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i179 - %.05.i.i.i.i177 = phi ptr [ %1194, %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i179 ], [ %.sroa.0544.0.lcssa, %.lr.ph.i.i.i.i176.preheader ] - %1192 = load ptr, ptr %.05.i.i.i.i177, align 8, !tbaa !314 - %.not.i.i.i.i.i.i.i.i.i178 = icmp eq ptr %1192, null - br i1 %.not.i.i.i.i.i.i.i.i.i178, label %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i179, label %1193 + %.05.i.i.i.i177 = phi ptr [ %1195, %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i179 ], [ %.sroa.0544.0.lcssa, %.lr.ph.i.i.i.i176.preheader ] + %1193 = load ptr, ptr %.05.i.i.i.i177, align 8, !tbaa !314 + %.not.i.i.i.i.i.i.i.i.i178 = icmp eq ptr %1193, null + br i1 %.not.i.i.i.i.i.i.i.i.i178, label %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i179, label %1194 -1193: ; preds = %.lr.ph.i.i.i.i176 - call void @_ZdlPv(ptr noundef nonnull %1192) #31 +1194: ; preds = %.lr.ph.i.i.i.i176 + call void @_ZdlPv(ptr noundef nonnull %1193) #31 br label %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i179 -_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i179: ; preds = %1193, %.lr.ph.i.i.i.i176 - %1194 = getelementptr inbounds nuw i8, ptr %.05.i.i.i.i177, i64 32 - %.not.i.i.i.i180 = icmp eq ptr %1194, %.sroa.15.0.lcssa +_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i179: ; preds = %1194, %.lr.ph.i.i.i.i176 + %1195 = getelementptr inbounds nuw i8, ptr %.05.i.i.i.i177, i64 32 + %.not.i.i.i.i180 = icmp eq ptr %1195, %.sroa.15.0.lcssa br i1 %.not.i.i.i.i180, label %_ZNSt6vectorISt4pairIS_IiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS7_EED2Ev.exit186, label %.lr.ph.i.i.i.i176, !llvm.loop !648 _ZNSt6vectorISt4pairIS_IiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS7_EED2Ev.exit186: ; preds = %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i179 call void @_ZdlPv(ptr noundef nonnull %.sroa.0544.0.lcssa) #31 ret void -.lr.ph876: ; preds = %.split873, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_.exit - %.sroa.0514.0875 = phi ptr [ %1218, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_.exit ], [ %1189, %.split873 ] - %1195 = load i32, ptr %.sroa.0514.0875, align 4, !tbaa !98 - %1196 = icmp sgt i32 %1195, 0 - br i1 %1196, label %1197, label %1205 +.lr.ph876: ; preds = %1189, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_.exit + %.sroa.0514.0874 = phi ptr [ %1222, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_.exit ], [ %1190, %.split873 ] + %1196 = load i32, ptr %.sroa.0514.0874, align 4, !tbaa !98 + %1197 = icmp sgt i32 %1196, 0 + br i1 %1197, label %1198, label %1206 -1197: ; preds = %.lr.ph876 - %1198 = zext nneg i32 %1195 to i64 - %1199 = load ptr, ptr %28, align 8, !tbaa !258 - %1200 = load ptr, ptr %27, align 8, !tbaa !257 +1198: ; preds = %.lr.ph876 + %1199 = zext nneg i32 %1196 to i64 + %1200 = load ptr, ptr %28, align 8, !tbaa !258 + %1201 = load ptr, ptr %27, align 8, !tbaa !257 %1201 = ptrtoint ptr %1199 to i64 %1202 = ptrtoint ptr %1200 to i64 %1203 = sub i64 %1201, %1202 %1204 = ashr exact i64 %1203, 5 %.not = icmp ult i64 %1204, %1198 - br i1 %.not, label %1205, label %1207 + br i1 %.not, label %1205, label %1212 -1205: ; preds = %1197, %.lr.ph876 - invoke void @_ZN2cv6detail17check_failed_autoEiRKNS0_12CheckContextE(i32 noundef %1195, ptr noundef nonnull align 8 dereferenceable(48) @_ZZN2cv3dnn25TextRecognitionModel_Impl25ctcPrefixBeamSearchDecodeB5cxx11ERKNS_3MatEE15__cv_check__904) #33 +1206: ; preds = %1198, %.lr.ph876 + invoke void @_ZN2cv6detail17check_failed_autoEiRKNS0_12CheckContextE(i32 noundef %1196, ptr noundef nonnull align 8 dereferenceable(48) @_ZZN2cv3dnn25TextRecognitionModel_Impl25ctcPrefixBeamSearchDecodeB5cxx11ERKNS_3MatEE15__cv_check__904) #33 to label %1206 unwind label %.loopexit.split-lp -1206: ; preds = %1205 +1207: ; preds = %1206 unreachable .loopexit: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_.exit.i %lpad.loopexit = landingpad { ptr, i32 } cleanup - br label %1219 + br label %1223 -.loopexit.split-lp: ; preds = %1205, %1214 +.loopexit.split-lp: ; preds = %1206, %1219 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup - br label %1219 + br label %1223 -1207: ; preds = %1197 - %1208 = getelementptr %"class.std::__cxx11::basic_string", ptr %1200, i64 %1198 - %1209 = getelementptr i8, ptr %1208, i64 -24 - %1210 = load i64, ptr %1209, align 8, !tbaa !66 - %1211 = load i64, ptr %41, align 8, !tbaa !66 - %1212 = sub i64 4611686018427387903, %1211 - %1213 = icmp ult i64 %1212, %1210 - br i1 %1213, label %1214, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_.exit.i +1212: ; preds = %1198 + %1213 = getelementptr %"class.std::__cxx11::basic_string", ptr %1201, i64 %1198 + %1214 = getelementptr i8, ptr %1213, i64 -24 + %1215 = load i64, ptr %1214, align 8, !tbaa !66 + %1216 = load i64, ptr %41, align 8, !tbaa !66 + %1217 = sub i64 4611686018427387903, %1216 + %1218 = icmp ult i64 %1217, %1215 + br i1 %1218, label %1219, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_.exit.i -1214: ; preds = %1207 +1219: ; preds = %1212 invoke void @_ZSt20__throw_length_errorPKc(ptr noundef nonnull @.str.21) #33 to label %.noexc189 unwind label %.loopexit.split-lp -.noexc189: ; preds = %1214 +.noexc189: ; preds = %1219 unreachable -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_.exit.i: ; preds = %1207 - %1215 = getelementptr i8, ptr %1208, i64 -32 +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_.exit.i: ; preds = %1212 + %1215 = getelementptr i8, ptr %1213, i64 -32 %1216 = load ptr, ptr %1215, align 8, !tbaa !70 %1217 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_appendEPKcm(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef %1216, i64 noundef %1210) to label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_.exit unwind label %.loopexit _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_.exit: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6appendERKS4_.exit.i - %1218 = getelementptr inbounds nuw i8, ptr %.sroa.0514.0875, i64 4 - %.not614 = icmp eq ptr %1218, %1191 + %1222 = getelementptr inbounds nuw i8, ptr %.sroa.0514.0874, i64 4 + %.not614 = icmp eq ptr %1222, %1192 br i1 %.not614, label %.lr.ph.i.i.i.i176.preheader, label %.lr.ph876 -1219: ; preds = %.loopexit, %.loopexit.split-lp, %_ZNSt13unordered_mapISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreENS5_10PrefixHashESt8equal_toIS2_ESaISt4pairIKS2_S6_EEED2Ev.exit174 +1223: ; preds = %.loopexit, %.loopexit.split-lp, %_ZNSt13unordered_mapISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreENS5_10PrefixHashESt8equal_toIS2_ESaISt4pairIKS2_S6_EEED2Ev.exit174 %.sroa.0544.0747 = phi ptr [ %.sroa.0544.0867, %_ZNSt13unordered_mapISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreENS5_10PrefixHashESt8equal_toIS2_ESaISt4pairIKS2_S6_EEED2Ev.exit174 ], [ %.sroa.0544.0.lcssa, %.loopexit ], [ %.sroa.0544.0.lcssa, %.loopexit.split-lp ] %.sroa.15.0711 = phi ptr [ %.sroa.15.0868, %_ZNSt13unordered_mapISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreENS5_10PrefixHashESt8equal_toIS2_ESaISt4pairIKS2_S6_EEED2Ev.exit174 ], [ %.sroa.15.0.lcssa, %.loopexit ], [ %.sroa.15.0.lcssa, %.loopexit.split-lp ] %.pn95.pn.pn.pn = phi { ptr, i32 } [ %.pn95.pn.pn, %_ZNSt13unordered_mapISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreENS5_10PrefixHashESt8equal_toIS2_ESaISt4pairIKS2_S6_EEED2Ev.exit174 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] %.not4.i.i.i.i191 = icmp eq ptr %.sroa.0544.0747, %.sroa.15.0711 br i1 %.not4.i.i.i.i191, label %_ZSt8_DestroyIPSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEES8_EvT_SA_RSaIT0_E.exit.i199, label %.lr.ph.i.i.i.i192 -.lr.ph.i.i.i.i192: ; preds = %1219, %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i195 - %.05.i.i.i.i193 = phi ptr [ %1222, %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i195 ], [ %.sroa.0544.0747, %1219 ] - %1220 = load ptr, ptr %.05.i.i.i.i193, align 8, !tbaa !314 - %.not.i.i.i.i.i.i.i.i.i194 = icmp eq ptr %1220, null - br i1 %.not.i.i.i.i.i.i.i.i.i194, label %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i195, label %1221 +.lr.ph.i.i.i.i192: ; preds = %1223, %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i195 + %.05.i.i.i.i193 = phi ptr [ %1226, %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i195 ], [ %.sroa.0544.0747, %1219 ] + %1224 = load ptr, ptr %.05.i.i.i.i193, align 8, !tbaa !314 + %.not.i.i.i.i.i.i.i.i.i194 = icmp eq ptr %1224, null + br i1 %.not.i.i.i.i.i.i.i.i.i194, label %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i195, label %1225 -1221: ; preds = %.lr.ph.i.i.i.i192 - call void @_ZdlPv(ptr noundef nonnull %1220) #31 +1225: ; preds = %.lr.ph.i.i.i.i192 + call void @_ZdlPv(ptr noundef nonnull %1224) #31 br label %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i195 -_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i195: ; preds = %1221, %.lr.ph.i.i.i.i192 - %1222 = getelementptr inbounds nuw i8, ptr %.05.i.i.i.i193, i64 32 - %.not.i.i.i.i196 = icmp eq ptr %1222, %.sroa.15.0711 +_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i195: ; preds = %1225, %.lr.ph.i.i.i.i192 + %1226 = getelementptr inbounds nuw i8, ptr %.05.i.i.i.i193, i64 32 + %.not.i.i.i.i196 = icmp eq ptr %1226, %.sroa.15.0711 br i1 %.not.i.i.i.i196, label %_ZSt8_DestroyIPSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEES8_EvT_SA_RSaIT0_E.exit.i199, label %.lr.ph.i.i.i.i192, !llvm.loop !648 -_ZSt8_DestroyIPSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEES8_EvT_SA_RSaIT0_E.exit.i199: ; preds = %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i195, %.thread1103, %1219 - %.pn95.pn.pn.pn1109 = phi { ptr, i32 } [ %.pn85, %.thread1103 ], [ %.pn95.pn.pn.pn, %1219 ], [ %.pn95.pn.pn.pn, %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i195 ] - %.sroa.0544.07471108 = phi ptr [ %.sroa.0544.0.lcssa, %.thread1103 ], [ %.sroa.0544.0747, %1219 ], [ %.sroa.0544.0747, %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i195 ] - %.not.i.i.i200 = icmp eq ptr %.sroa.0544.07471108, null - br i1 %.not.i.i.i200, label %_ZNSt6vectorISt4pairIS_IiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS7_EED2Ev.exit202, label %1223 +_ZSt8_DestroyIPSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEES8_EvT_SA_RSaIT0_E.exit.i199: ; preds = %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i195, %.thread1114, %1223 + %.pn95.pn.pn.pn1120 = phi { ptr, i32 } [ %.pn85, %.thread1103 ], [ %.pn95.pn.pn.pn, %1219 ], [ %.pn95.pn.pn.pn, %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i195 ] + %.sroa.0544.07471119 = phi ptr [ %.sroa.0544.0.lcssa, %.thread1103 ], [ %.sroa.0544.0747, %1219 ], [ %.sroa.0544.0747, %_ZSt8_DestroyISt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEEEvPT_.exit.i.i.i.i195 ] + %.not.i.i.i200 = icmp eq ptr %.sroa.0544.07471119, null + br i1 %.not.i.i.i200, label %_ZNSt6vectorISt4pairIS_IiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS7_EED2Ev.exit202, label %1227 -1223: ; preds = %_ZSt8_DestroyIPSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEES8_EvT_SA_RSaIT0_E.exit.i199 - call void @_ZdlPv(ptr noundef nonnull %.sroa.0544.07471108) #31 +1227: ; preds = %_ZSt8_DestroyIPSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEES8_EvT_SA_RSaIT0_E.exit.i199 + call void @_ZdlPv(ptr noundef nonnull %.sroa.0544.07471119) #31 br label %_ZNSt6vectorISt4pairIS_IiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS7_EED2Ev.exit202 -_ZNSt6vectorISt4pairIS_IiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS7_EED2Ev.exit202: ; preds = %1223, %_ZSt8_DestroyIPSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEES8_EvT_SA_RSaIT0_E.exit.i199, %_ZNSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEED2Ev.exit102 - %.pn95.pn.pn.pn.pn = phi { ptr, i32 } [ %eh.lpad-body1090, %_ZNSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEED2Ev.exit102 ], [ %.pn95.pn.pn.pn1109, %_ZSt8_DestroyIPSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEES8_EvT_SA_RSaIT0_E.exit.i199 ], [ %.pn95.pn.pn.pn1109, %1223 ] - %1224 = load ptr, ptr %0, align 8, !tbaa !70 - %1225 = icmp eq ptr %1224, %40 - br i1 %1225, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit205, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i203 +_ZNSt6vectorISt4pairIS_IiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS7_EED2Ev.exit202: ; preds = %1227, %_ZSt8_DestroyIPSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEES8_EvT_SA_RSaIT0_E.exit.i199, %_ZNSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEED2Ev.exit102 + %.pn95.pn.pn.pn.pn = phi { ptr, i32 } [ %eh.lpad-body1101, %_ZNSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEED2Ev.exit102 ], [ %.pn95.pn.pn.pn1120, %_ZSt8_DestroyIPSt4pairISt6vectorIiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEES8_EvT_SA_RSaIT0_E.exit.i199 ], [ %.pn95.pn.pn.pn1120, %1223 ] + %1228 = load ptr, ptr %0, align 8, !tbaa !70 + %1229 = icmp eq ptr %1228, %40 + br i1 %1229, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit205, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i203 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i203: ; preds = %_ZNSt6vectorISt4pairIS_IiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS7_EED2Ev.exit202 - call void @_ZdlPv(ptr noundef %1224) #31 + call void @_ZdlPv(ptr noundef %1228) #31 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit205 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit205: ; preds = %_ZNSt6vectorISt4pairIS_IiSaIiEEN2cv3dnn25TextRecognitionModel_Impl11PrefixScoreEESaIS7_EED2Ev.exit202, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i203 diff --git a/bench/openssl/optimized/v3_ncons.ll b/bench/openssl/optimized/v3_ncons.ll index c53c437db48..dac07063254 100644 --- a/bench/openssl/optimized/v3_ncons.ll +++ b/bench/openssl/optimized/v3_ncons.ll @@ -685,21 +685,21 @@ define range(i32 0, 54) i32 @NAME_CONSTRAINTS_check_CN(ptr noundef %0, ptr nound call void @CRYPTO_free(ptr noundef %.pre.i, ptr noundef nonnull @.str.2, i32 noundef 383) #9 br label %cn2dnsid.exit -33: ; preds = %50, %.outer.i +33: ; preds = %51, %.outer.i %indvars.iv.i = phi i64 [ %indvars.iv.next.i, %50 ], [ %indvars.iv.ph.i, %.outer.i ] %34 = getelementptr inbounds nuw i8, ptr %.pre.i, i64 %indvars.iv.i %35 = load i8, ptr %34, align 1, !tbaa !11 %36 = and i8 %35, -33 %37 = add i8 %36, -65 %or.cond54.i = icmp ult i8 %37, 26 - br i1 %or.cond54.i, label %50, label %38 + br i1 %or.cond54.i, label %51, label %38 38: ; preds = %33 %39 = add i8 %35, -48 %or.cond8.i = icmp ult i8 %39, 10 %40 = icmp eq i8 %35, 95 %or.cond11.i = or i1 %40, %or.cond8.i - br i1 %or.cond11.i, label %50, label %41 + br i1 %or.cond11.i, label %51, label %41 41: ; preds = %38 %.not49.i = icmp ne i64 %indvars.iv.i, 0 @@ -709,7 +709,7 @@ define range(i32 0, 54) i32 @NAME_CONSTRAINTS_check_CN(ptr noundef %0, ptr nound 43: ; preds = %41 switch i8 %35, label %.loopexit [ - i8 45, label %50 + i8 45, label %51 i8 46, label %44 ] @@ -718,23 +718,23 @@ define range(i32 0, 54) i32 @NAME_CONSTRAINTS_check_CN(ptr noundef %0, ptr nound %46 = getelementptr inbounds nuw i8, ptr %45, i64 1 %47 = load i8, ptr %46, align 1, !tbaa !11 %.not50.i = icmp eq i8 %47, 46 - br i1 %.not50.i, label %.loopexit, label %.thread.i + br i1 %.not50.i, label %.loopexit, label %48 -.thread.i: ; preds = %44 - %48 = getelementptr i8, ptr %45, i64 -1 - %49 = load i8, ptr %48, align 1, !tbaa !11 - %.not51.i = icmp eq i8 %49, 45 +48: ; preds = %44 + %49 = getelementptr i8, ptr %45, i64 -1 + %50 = load i8, ptr %49, align 1, !tbaa !11 + %.not51.i = icmp eq i8 %50, 45 %.not52.i = icmp eq i8 %47, 45 %or.cond57.i = or i1 %.not52.i, %.not51.i %indvars.iv.next83.i = add nuw nsw i64 %indvars.iv.i, 1 br i1 %or.cond57.i, label %.loopexit, label %.outer.i, !llvm.loop !62 -50: ; preds = %43, %38, %33 +51: ; preds = %43, %38, %33 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %26 br i1 %exitcond.not.i, label %._crit_edge.i, label %33, !llvm.loop !62 -._crit_edge.i: ; preds = %50 +.thread.i: ; preds = %50 br i1 %31, label %.loopexit, label %51 cn2dnsid.exit: ; preds = %13, %32 @@ -742,12 +742,12 @@ cn2dnsid.exit: ; preds = %13, %32 call void @llvm.lifetime.end.p0(ptr nonnull %3) br label %.thread34 -.loopexit: ; preds = %44, %.thread.i, %41, %43, %.preheader.i, %._crit_edge.i +.loopexit: ; preds = %44, %48, %41, %43, %.preheader.i, %._crit_edge.i call void @CRYPTO_free(ptr noundef %.pre.i, ptr noundef nonnull @.str.2, i32 noundef 431) #9 call void @llvm.lifetime.end.p0(ptr nonnull %3) br label %select.unfold -51: ; preds = %._crit_edge.i +.loopexit41: ; preds = %._crit_edge.i call void @llvm.lifetime.end.p0(ptr nonnull %3) store i32 %.045.lcssa.i, ptr %4, align 8, !tbaa !63 store ptr %.pre.i, ptr %12, align 8, !tbaa !64 @@ -756,12 +756,12 @@ cn2dnsid.exit: ; preds = %13, %32 %.not19 = icmp eq i32 %52, 0 br i1 %.not19, label %select.unfold, label %.thread34 -select.unfold: ; preds = %51, %.loopexit +select.unfold: ; preds = %.loopexit41, %.loopexit %53 = call i32 @X509_NAME_get_index_by_NID(ptr noundef %6, i32 noundef 13, i32 noundef %14) #9 %54 = icmp eq i32 %53, -1 br i1 %54, label %.thread34, label %13 -.thread34: ; preds = %select.unfold, %51, %2, %cn2dnsid.exit +.thread34: ; preds = %select.unfold, %.loopexit41, %2, %cn2dnsid.exit %.2 = phi i32 [ %.0.i, %cn2dnsid.exit ], [ 0, %2 ], [ 0, %select.unfold ], [ %52, %51 ] call void @llvm.lifetime.end.p0(ptr nonnull %5) call void @llvm.lifetime.end.p0(ptr nonnull %4) diff --git a/bench/pola-rs/optimized/9kt0ps7am1ervf5eo1u53zq54.ll b/bench/pola-rs/optimized/9kt0ps7am1ervf5eo1u53zq54.ll index 0956cee79d3..5a70cce086c 100644 --- a/bench/pola-rs/optimized/9kt0ps7am1ervf5eo1u53zq54.ll +++ b/bench/pola-rs/optimized/9kt0ps7am1ervf5eo1u53zq54.ll @@ -26922,7 +26922,7 @@ define hidden void @_ZN5rayon5slice9mergesort13par_mergesort17h339a646c7afabb7aE .lr.ph90.preheader: ; preds = %27 %28 = add nsw i64 %1, -1 - br label %.lr.ph90 + br label %146 29: ; preds = %33 resume { ptr, i32 } %.pn41 @@ -27292,61 +27292,61 @@ define hidden void @_ZN5rayon5slice9mergesort13par_mergesort17h339a646c7afabb7aE %exitcond.not.i.i56 = icmp eq i64 %145, %135 br i1 %exitcond.not.i.i56, label %.loopexit.sink.split, label %137 -.lr.ph90: ; preds = %.lr.ph90.preheader, %_ZN5rayon5slice9mergesort11insert_head17h7ad417bf3cc01170E.exit - %.sroa.026.089 = phi i64 [ %146, %_ZN5rayon5slice9mergesort11insert_head17h7ad417bf3cc01170E.exit ], [ %28, %.lr.ph90.preheader ] - %146 = add nsw i64 %.sroa.026.089, -1 - %147 = sub nuw nsw i64 %1, %146 - %148 = getelementptr inbounds nuw { i32, [1 x i32], i64 }, ptr %0, i64 %146 - %149 = getelementptr i8, ptr %148, i64 24 - %.val11.i = load i64, ptr %149, align 8, !alias.scope !4167, !noalias !4172, !noundef !12 - %150 = getelementptr i8, ptr %148, i64 8 - %.val12.i = load i64, ptr %150, align 8, !alias.scope !4174, !noalias !4175, !noundef !12 - %151 = icmp slt i64 %.val12.i, %.val11.i - br i1 %151, label %152, label %_ZN5rayon5slice9mergesort11insert_head17h7ad417bf3cc01170E.exit - -152: ; preds = %.lr.ph90 - %153 = getelementptr inbounds nuw i8, ptr %148, i64 16 - %154 = load i32, ptr %148, align 8, !alias.scope !4176, !noundef !12 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %148, ptr noundef nonnull align 8 dereferenceable(16) %153, i64 16, i1 false), !alias.scope !4176 - %.not.i58 = icmp eq i64 %147, 2 +146: ; preds = %.lr.ph90.preheader, %_ZN5rayon5slice9mergesort11insert_head17h7ad417bf3cc01170E.exit + %.sroa.026.089 = phi i64 [ %147, %_ZN5rayon5slice9mergesort11insert_head17h7ad417bf3cc01170E.exit ], [ %28, %.lr.ph90.preheader ] + %147 = add nsw i64 %.sroa.026.089, -1 + %148 = sub nuw nsw i64 %1, %147 + %149 = getelementptr inbounds nuw { i32, [1 x i32], i64 }, ptr %0, i64 %147 + %150 = getelementptr i8, ptr %149, i64 24 + %.val11.i = load i64, ptr %150, align 8, !alias.scope !4167, !noalias !4172, !noundef !12 + %151 = getelementptr i8, ptr %149, i64 8 + %.val12.i = load i64, ptr %151, align 8, !alias.scope !4174, !noalias !4175, !noundef !12 + %152 = icmp slt i64 %.val12.i, %.val11.i + br i1 %152, label %153, label %_ZN5rayon5slice9mergesort11insert_head17h7ad417bf3cc01170E.exit + +153: ; preds = %146 + %154 = getelementptr inbounds nuw i8, ptr %149, i64 16 + %155 = load i32, ptr %149, align 8, !alias.scope !4176, !noundef !12 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %149, ptr noundef nonnull align 8 dereferenceable(16) %154, i64 16, i1 false), !alias.scope !4176 + %.not.i58 = icmp eq i64 %148, 2 br i1 %.not.i58, label %._crit_edge.i, label %.lr.ph.i.preheader -.lr.ph.i.preheader: ; preds = %152 - %155 = getelementptr i8, ptr %148, i64 40 - %.val9.i85 = load i64, ptr %155, align 8, !alias.scope !4167, !noalias !4172, !noundef !12 - %156 = icmp slt i64 %.val12.i, %.val9.i85 - br i1 %156, label %.lr.ph.preheader, label %._crit_edge.i +.lr.ph.i.preheader: ; preds = %153 + %156 = getelementptr i8, ptr %149, i64 40 + %.val9.i85 = load i64, ptr %156, align 8, !alias.scope !4167, !noalias !4172, !noundef !12 + %157 = icmp slt i64 %.val12.i, %.val9.i85 + br i1 %157, label %.lr.ph.preheader, label %._crit_edge.i .lr.ph.preheader: ; preds = %.lr.ph.i.preheader - %157 = getelementptr inbounds nuw i8, ptr %148, i64 32 + %158 = getelementptr inbounds nuw i8, ptr %149, i64 32 br label %.lr.ph -._crit_edge.i: ; preds = %.lr.ph.i, %.lr.ph, %.lr.ph.i.preheader, %152 - %.sroa.5.0.lcssa.i = phi ptr [ %153, %152 ], [ %153, %.lr.ph.i.preheader ], [ %161, %.lr.ph ], [ %161, %.lr.ph.i ] - store i32 %154, ptr %.sroa.5.0.lcssa.i, align 8, !alias.scope !4176 +._crit_edge.i: ; preds = %.lr.ph.i, %.lr.ph, %.lr.ph.i.preheader, %153 + %.sroa.5.0.lcssa.i = phi ptr [ %154, %152 ], [ %154, %.lr.ph.i.preheader ], [ %162, %.lr.ph ], [ %162, %.lr.ph.i ] + store i32 %155, ptr %.sroa.5.0.lcssa.i, align 8, !alias.scope !4176 %.sroa.54.0..sroa.5.0.sroa_idx5.i = getelementptr inbounds nuw i8, ptr %.sroa.5.0.lcssa.i, i64 8 store i64 %.val12.i, ptr %.sroa.54.0..sroa.5.0.sroa_idx5.i, align 8, !alias.scope !4176 br label %_ZN5rayon5slice9mergesort11insert_head17h7ad417bf3cc01170E.exit .lr.ph.i: ; preds = %.lr.ph - %158 = getelementptr inbounds nuw { i32, [1 x i32], i64 }, ptr %148, i64 %162 - %159 = getelementptr i8, ptr %158, i64 8 - %.val9.i = load i64, ptr %159, align 8, !alias.scope !4167, !noalias !4172, !noundef !12 - %160 = icmp slt i64 %.val12.i, %.val9.i - br i1 %160, label %.lr.ph, label %._crit_edge.i + %159 = getelementptr inbounds nuw { i32, [1 x i32], i64 }, ptr %149, i64 %163 + %160 = getelementptr i8, ptr %159, i64 8 + %.val9.i = load i64, ptr %160, align 8, !alias.scope !4167, !noalias !4172, !noundef !12 + %161 = icmp slt i64 %.val12.i, %.val9.i + br i1 %161, label %.lr.ph, label %._crit_edge.i .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph.i - %161 = phi ptr [ %158, %.lr.ph.i ], [ %157, %.lr.ph.preheader ] - %.sroa.01.09.i86 = phi i64 [ %162, %.lr.ph.i ], [ 2, %.lr.ph.preheader ] - %162 = add nuw nsw i64 %.sroa.01.09.i86, 1 - %163 = getelementptr i8, ptr %161, i64 -16 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %163, ptr noundef nonnull align 8 dereferenceable(16) %161, i64 16, i1 false), !alias.scope !4176 - %exitcond.not.i = icmp eq i64 %162, %147 + %162 = phi ptr [ %159, %.lr.ph.i ], [ %158, %.lr.ph.preheader ] + %.sroa.01.09.i86 = phi i64 [ %163, %.lr.ph.i ], [ 2, %.lr.ph.preheader ] + %163 = add nuw nsw i64 %.sroa.01.09.i86, 1 + %164 = getelementptr i8, ptr %162, i64 -16 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %164, ptr noundef nonnull align 8 dereferenceable(16) %162, i64 16, i1 false), !alias.scope !4176 + %exitcond.not.i = icmp eq i64 %163, %148 br i1 %exitcond.not.i, label %._crit_edge.i, label %.lr.ph.i -_ZN5rayon5slice9mergesort11insert_head17h7ad417bf3cc01170E.exit: ; preds = %.lr.ph90, %._crit_edge.i - %.not43 = icmp eq i64 %146, 0 - br i1 %.not43, label %.loopexit, label %.lr.ph90 +_ZN5rayon5slice9mergesort11insert_head17h7ad417bf3cc01170E.exit: ; preds = %146, %._crit_edge.i + %.not43 = icmp eq i64 %147, 0 + br i1 %.not43, label %.loopexit, label %146 } ; Function Attrs: nonlazybind uwtable @@ -27401,7 +27401,7 @@ define hidden void @_ZN5rayon5slice9mergesort13par_mergesort17h719818d9b3daaf5eE .lr.ph90.preheader: ; preds = %27 %28 = add nsw i64 %1, -1 - br label %.lr.ph90 + br label %146 29: ; preds = %33 resume { ptr, i32 } %.pn41 @@ -27771,61 +27771,61 @@ define hidden void @_ZN5rayon5slice9mergesort13par_mergesort17h719818d9b3daaf5eE %exitcond.not.i.i56 = icmp eq i64 %145, %135 br i1 %exitcond.not.i.i56, label %.loopexit.sink.split, label %137 -.lr.ph90: ; preds = %.lr.ph90.preheader, %_ZN5rayon5slice9mergesort11insert_head17h95147180a0eb705aE.exit - %.sroa.026.089 = phi i64 [ %146, %_ZN5rayon5slice9mergesort11insert_head17h95147180a0eb705aE.exit ], [ %28, %.lr.ph90.preheader ] - %146 = add nsw i64 %.sroa.026.089, -1 - %147 = sub nuw nsw i64 %1, %146 - %148 = getelementptr inbounds nuw { i32, [1 x i32], i64 }, ptr %0, i64 %146 - %149 = getelementptr i8, ptr %148, i64 24 - %.val7.i = load i64, ptr %149, align 8, !alias.scope !4227, !noalias !4232, !noundef !12 - %150 = getelementptr i8, ptr %148, i64 8 - %.val8.i = load i64, ptr %150, align 8, !alias.scope !4234, !noalias !4235, !noundef !12 - %151 = icmp slt i64 %.val7.i, %.val8.i - br i1 %151, label %152, label %_ZN5rayon5slice9mergesort11insert_head17h95147180a0eb705aE.exit - -152: ; preds = %.lr.ph90 - %153 = getelementptr inbounds nuw i8, ptr %148, i64 16 - %154 = load i32, ptr %148, align 8, !alias.scope !4236, !noundef !12 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %148, ptr noundef nonnull align 8 dereferenceable(16) %153, i64 16, i1 false), !alias.scope !4236 - %.not.i58 = icmp eq i64 %147, 2 +146: ; preds = %.lr.ph90.preheader, %_ZN5rayon5slice9mergesort11insert_head17h95147180a0eb705aE.exit + %.sroa.026.089 = phi i64 [ %147, %_ZN5rayon5slice9mergesort11insert_head17h95147180a0eb705aE.exit ], [ %28, %.lr.ph90.preheader ] + %147 = add nsw i64 %.sroa.026.089, -1 + %148 = sub nuw nsw i64 %1, %147 + %149 = getelementptr inbounds nuw { i32, [1 x i32], i64 }, ptr %0, i64 %147 + %150 = getelementptr i8, ptr %149, i64 24 + %.val7.i = load i64, ptr %150, align 8, !alias.scope !4227, !noalias !4232, !noundef !12 + %151 = getelementptr i8, ptr %149, i64 8 + %.val8.i = load i64, ptr %151, align 8, !alias.scope !4234, !noalias !4235, !noundef !12 + %152 = icmp slt i64 %.val7.i, %.val8.i + br i1 %152, label %153, label %_ZN5rayon5slice9mergesort11insert_head17h95147180a0eb705aE.exit + +153: ; preds = %146 + %154 = getelementptr inbounds nuw i8, ptr %149, i64 16 + %155 = load i32, ptr %149, align 8, !alias.scope !4236, !noundef !12 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %149, ptr noundef nonnull align 8 dereferenceable(16) %154, i64 16, i1 false), !alias.scope !4236 + %.not.i58 = icmp eq i64 %148, 2 br i1 %.not.i58, label %._crit_edge.i, label %.lr.ph.i.preheader -.lr.ph.i.preheader: ; preds = %152 - %155 = getelementptr i8, ptr %148, i64 40 - %.val.i85 = load i64, ptr %155, align 8, !alias.scope !4227, !noalias !4232, !noundef !12 - %156 = icmp slt i64 %.val.i85, %.val8.i - br i1 %156, label %.lr.ph.preheader, label %._crit_edge.i +.lr.ph.i.preheader: ; preds = %153 + %156 = getelementptr i8, ptr %149, i64 40 + %.val.i85 = load i64, ptr %156, align 8, !alias.scope !4227, !noalias !4232, !noundef !12 + %157 = icmp slt i64 %.val.i85, %.val8.i + br i1 %157, label %.lr.ph.preheader, label %._crit_edge.i .lr.ph.preheader: ; preds = %.lr.ph.i.preheader - %157 = getelementptr inbounds nuw i8, ptr %148, i64 32 + %158 = getelementptr inbounds nuw i8, ptr %149, i64 32 br label %.lr.ph -._crit_edge.i: ; preds = %.lr.ph.i, %.lr.ph, %.lr.ph.i.preheader, %152 - %.sroa.5.0.lcssa.i = phi ptr [ %153, %152 ], [ %153, %.lr.ph.i.preheader ], [ %161, %.lr.ph ], [ %161, %.lr.ph.i ] - store i32 %154, ptr %.sroa.5.0.lcssa.i, align 8, !alias.scope !4236 +._crit_edge.i: ; preds = %.lr.ph.i, %.lr.ph, %.lr.ph.i.preheader, %153 + %.sroa.5.0.lcssa.i = phi ptr [ %154, %152 ], [ %154, %.lr.ph.i.preheader ], [ %162, %.lr.ph ], [ %162, %.lr.ph.i ] + store i32 %155, ptr %.sroa.5.0.lcssa.i, align 8, !alias.scope !4236 %.sroa.54.0..sroa.5.0.sroa_idx5.i = getelementptr inbounds nuw i8, ptr %.sroa.5.0.lcssa.i, i64 8 store i64 %.val8.i, ptr %.sroa.54.0..sroa.5.0.sroa_idx5.i, align 8, !alias.scope !4236 br label %_ZN5rayon5slice9mergesort11insert_head17h95147180a0eb705aE.exit .lr.ph.i: ; preds = %.lr.ph - %158 = getelementptr inbounds nuw { i32, [1 x i32], i64 }, ptr %148, i64 %162 - %159 = getelementptr i8, ptr %158, i64 8 - %.val.i = load i64, ptr %159, align 8, !alias.scope !4227, !noalias !4232, !noundef !12 - %160 = icmp slt i64 %.val.i, %.val8.i - br i1 %160, label %.lr.ph, label %._crit_edge.i + %159 = getelementptr inbounds nuw { i32, [1 x i32], i64 }, ptr %149, i64 %163 + %160 = getelementptr i8, ptr %159, i64 8 + %.val.i = load i64, ptr %160, align 8, !alias.scope !4227, !noalias !4232, !noundef !12 + %161 = icmp slt i64 %.val.i, %.val8.i + br i1 %161, label %.lr.ph, label %._crit_edge.i .lr.ph: ; preds = %.lr.ph.preheader, %.lr.ph.i - %161 = phi ptr [ %158, %.lr.ph.i ], [ %157, %.lr.ph.preheader ] - %.sroa.01.09.i86 = phi i64 [ %162, %.lr.ph.i ], [ 2, %.lr.ph.preheader ] - %162 = add nuw nsw i64 %.sroa.01.09.i86, 1 - %163 = getelementptr i8, ptr %161, i64 -16 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %163, ptr noundef nonnull align 8 dereferenceable(16) %161, i64 16, i1 false), !alias.scope !4236 - %exitcond.not.i = icmp eq i64 %162, %147 + %162 = phi ptr [ %159, %.lr.ph.i ], [ %158, %.lr.ph.preheader ] + %.sroa.01.09.i86 = phi i64 [ %163, %.lr.ph.i ], [ 2, %.lr.ph.preheader ] + %163 = add nuw nsw i64 %.sroa.01.09.i86, 1 + %164 = getelementptr i8, ptr %162, i64 -16 + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %164, ptr noundef nonnull align 8 dereferenceable(16) %162, i64 16, i1 false), !alias.scope !4236 + %exitcond.not.i = icmp eq i64 %163, %148 br i1 %exitcond.not.i, label %._crit_edge.i, label %.lr.ph.i -_ZN5rayon5slice9mergesort11insert_head17h95147180a0eb705aE.exit: ; preds = %.lr.ph90, %._crit_edge.i - %.not43 = icmp eq i64 %146, 0 - br i1 %.not43, label %.loopexit, label %.lr.ph90 +_ZN5rayon5slice9mergesort11insert_head17h95147180a0eb705aE.exit: ; preds = %146, %._crit_edge.i + %.not43 = icmp eq i64 %147, 0 + br i1 %.not43, label %.loopexit, label %146 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/pola-rs/optimized/axiz6cr4x03l4ii2cmor4g5gv.ll b/bench/pola-rs/optimized/axiz6cr4x03l4ii2cmor4g5gv.ll index 3165eb39612..1470fbe95bb 100644 --- a/bench/pola-rs/optimized/axiz6cr4x03l4ii2cmor4g5gv.ll +++ b/bench/pola-rs/optimized/axiz6cr4x03l4ii2cmor4g5gv.ll @@ -20764,7 +20764,7 @@ _ZN4core4iter6traits8iterator8Iterator7collect17h630aa74a7515678bE.exit: ; preds br label %80 80: ; preds = %89, %75 - %81 = phi i64 [ %.pre166, %89 ], [ %56, %75 ] + %81 = phi i64 [ %.pre167, %89 ], [ %56, %75 ] %82 = phi ptr [ %.pre, %89 ], [ %58, %75 ] %.idx = mul nuw nsw i64 %81, 40 %83 = getelementptr inbounds nuw i8, ptr %82, i64 %.idx @@ -20812,7 +20812,7 @@ _ZN4core4iter6traits8iterator8Iterator7collect17h630aa74a7515678bE.exit: ; preds 89: ; preds = %._crit_edge call void @llvm.lifetime.end.p0(ptr nonnull %11) %.pre = load ptr, ptr %54, align 8 - %.pre166 = load i64, ptr %55, align 8 + %.pre167 = load i64, ptr %55, align 8 br label %80 90: ; preds = %.lr.ph @@ -20881,11 +20881,11 @@ _ZN4core4iter6traits8iterator8Iterator7collect17h630aa74a7515678bE.exit: ; preds call void @llvm.experimental.noalias.scope.decl(metadata !1266) %119 = getelementptr inbounds nuw i8, ptr %.sroa.476.0.copyload, i64 40 store ptr %119, ptr %.sroa.2.0..sroa_idx, align 8, !alias.scope !1266, !noalias !1269 - %.sroa.078.0.copyload79172 = load ptr, ptr %.sroa.476.0.copyload, align 8, !noalias !1266 - %.not53173 = icmp eq ptr %.sroa.078.0.copyload79172, null - br i1 %.not53173, label %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h390bf5f38b941292E.exit.thread", label %.lr.ph175 + %.sroa.078.0.copyload79173 = load ptr, ptr %.sroa.476.0.copyload, align 8, !noalias !1266 + %.not53174 = icmp eq ptr %.sroa.078.0.copyload79173, null + br i1 %.not53174, label %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h390bf5f38b941292E.exit.thread", label %.lr.ph176 -120: ; preds = %._crit_edge160, %.lr.ph175 +120: ; preds = %._crit_edge160, %.lr.ph176 %121 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr109drop_in_place$LT$alloc..vec..into_iter..IntoIter$LT$polars_arrow..bitmap..iterator..FastU64BitmapIter$GT$$GT$17h55380547a94325efE"(ptr noalias noundef nonnull align 8 dereferenceable(32) %18) #32 @@ -20897,13 +20897,13 @@ _ZN4core4iter6traits8iterator8Iterator7collect17h630aa74a7515678bE.exit: ; preds store ptr %122, ptr %.sroa.2.0..sroa_idx, align 8, !alias.scope !1271, !noalias !1269 %.sroa.078.0.copyload79 = load ptr, ptr %189, align 8, !noalias !1271 %.not53 = icmp eq ptr %.sroa.078.0.copyload79, null - br i1 %.not53, label %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h390bf5f38b941292E.exit.thread.loopexit.loopexit", label %.lr.ph175 + br i1 %.not53, label %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h390bf5f38b941292E.exit.thread.loopexit.loopexit", label %.lr.ph176 -.lr.ph175: ; preds = %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h390bf5f38b941292E.exit.lr.ph", %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h390bf5f38b941292E.exit" - %.sroa.078.0.copyload79174 = phi ptr [ %.sroa.078.0.copyload79, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h390bf5f38b941292E.exit" ], [ %.sroa.078.0.copyload79172, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h390bf5f38b941292E.exit.lr.ph" ] +.lr.ph176: ; preds = %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h390bf5f38b941292E.exit.lr.ph", %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h390bf5f38b941292E.exit" + %.sroa.078.0.copyload79175 = phi ptr [ %.sroa.078.0.copyload79, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h390bf5f38b941292E.exit" ], [ %.sroa.078.0.copyload79173, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h390bf5f38b941292E.exit.lr.ph" ] %123 = phi ptr [ %189, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h390bf5f38b941292E.exit" ], [ %.sroa.476.0.copyload, %"_ZN103_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h390bf5f38b941292E.exit.lr.ph" ] %.sroa.7.0..sroa_idx80 = getelementptr inbounds nuw i8, ptr %123, i64 8 - store ptr %.sroa.078.0.copyload79174, ptr %17, align 8 + store ptr %.sroa.078.0.copyload79175, ptr %17, align 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %.sroa.7.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(32) %.sroa.7.0..sroa_idx80, i64 32, i1 false) call void @llvm.lifetime.start.p0(ptr nonnull %16) invoke void @_ZN12polars_arrow6bitmap8iterator17FastU64BitmapIter9remainder17hfaed614d83fefdf8E(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %16, ptr noalias noundef nonnull align 8 captures(none) dereferenceable(40) %17) @@ -21108,7 +21108,7 @@ _ZN4core4iter6traits8iterator8Iterator7collect17h630aa74a7515678bE.exit: ; preds invoke void @"_ZN4core3ptr46drop_in_place$LT$alloc..vec..Vec$LT$u8$GT$$GT$17ha0a5a3fda5bf2160E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %13) #32 to label %.thread145 unwind label %169 -.lr.ph159.preheader: ; preds = %.lr.ph175 +.lr.ph159.preheader: ; preds = %.lr.ph176 call void @llvm.lifetime.start.p0(ptr nonnull %15) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.585.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(16) %16, i64 16, i1 false) %172 = load i64, ptr %117, align 8, !noundef !3 diff --git a/bench/quantlib/optimized/capletcoterminalmaxhomogeneity.ll b/bench/quantlib/optimized/capletcoterminalmaxhomogeneity.ll index 825d97e9152..4e9e3526e77 100644 --- a/bench/quantlib/optimized/capletcoterminalmaxhomogeneity.ll +++ b/bench/quantlib/optimized/capletcoterminalmaxhomogeneity.ll @@ -2065,16 +2065,16 @@ _ZNSt16allocator_traitsISaISt6vectorIdSaIdEEEE9constructIS2_JRKS2_EEEvRS3_PT_DpO %58 = load ptr, ptr %_M_finish.i272, align 8, !tbaa !77 %incdec.ptr.i = getelementptr inbounds nuw i8, ptr %58, i64 24 store ptr %incdec.ptr.i, ptr %_M_finish.i272, align 8, !tbaa !77 - br label %_ZNSt6vectorIS_IdSaIdEESaIS1_EE9push_backERKS1_.exit.split + br label %_ZNSt6vectorIS_IdSaIdEESaIS1_EE9push_backERKS1_.exit if.else.i: ; preds = %invoke.cont132 invoke void @_ZNSt6vectorIS_IdSaIdEESaIS1_EE17_M_realloc_insertIJRKS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %newVols, ptr %53, ptr noundef nonnull align 8 dereferenceable(24) %firstRateVols) to label %_ZNSt6vectorIS_IdSaIdEESaIS1_EE9push_backERKS1_.exit.split unwind label %lpad135 -_ZNSt6vectorIS_IdSaIdEESaIS1_EE9push_backERKS1_.exit.split: ; preds = %_ZNSt16allocator_traitsISaISt6vectorIdSaIdEEEE9constructIS2_JRKS2_EEEvRS3_PT_DpOT0_.exit.i, %if.else.i +_ZNSt6vectorIS_IdSaIdEESaIS1_EE9push_backERKS1_.exit: ; preds = %_ZNSt16allocator_traitsISaISt6vectorIdSaIdEEEE9constructIS2_JRKS2_EEEvRS3_PT_DpOT0_.exit.i, %if.else.i br i1 %cmp.i.i.i.i.i.i.i, label %for.cond.cleanup140, label %for.body141.lr.ph -for.body141.lr.ph: ; preds = %_ZNSt6vectorIS_IdSaIdEESaIS1_EE9push_backERKS1_.exit.split +for.body141.lr.ph: ; preds = %_ZNSt6vectorIS_IdSaIdEESaIS1_EE9push_backERKS1_.exit %columns_.i.i290 = getelementptr inbounds nuw i8, ptr %invertedZedMatrix, i64 16 %n_.i.i = getelementptr inbounds nuw i8, ptr %cylinderCentre.i, i64 8 %n_.i198.i = getelementptr inbounds nuw i8, ptr %targetArray.i, i64 8 @@ -2097,7 +2097,7 @@ for.body141.lr.ph: ; preds = %_ZNSt6vectorIS_IdSa %cmp30.i = fcmp olt double %caplet0Swaption1Priority, 5.000000e-01 br label %for.body141 -for.cond.cleanup140: ; preds = %invoke.cont248, %_ZNSt6vectorIS_IdSaIdEESaIS1_EE9push_backERKS1_.exit.split +for.cond.cleanup140: ; preds = %invoke.cont248, %_ZNSt6vectorIS_IdSaIdEESaIS1_EE9push_backERKS1_.exit %failures.0.lcssa = phi i32 [ 0, %_ZNSt6vectorIS_IdSaIdEESaIS1_EE9push_backERKS1_.exit.split ], [ %spec.select, %invoke.cont248 ] %_M_finish.i.i = getelementptr inbounds nuw i8, ptr %swapCovariancePseudoRoots, i64 8 %59 = load ptr, ptr %_M_finish.i.i, align 8, !tbaa !79 diff --git a/bench/quantlib/optimized/garch.ll b/bench/quantlib/optimized/garch.ll index 3c7c58f646a..12c7e518c45 100644 --- a/bench/quantlib/optimized/garch.ll +++ b/bench/quantlib/optimized/garch.ll @@ -883,7 +883,7 @@ if.then.i.i.i.i.i: ; preds = %_ZN8QuantLib5ArrayC call5.i.i.i.i2.i.i.noexc: ; preds = %if.then.i.i.i.i.i store double 0.000000e+00, ptr %call5.i.i.i.i2.i.i125, align 8, !tbaa !21 %incdec.ptr.i.i.i.i.i = getelementptr i8, ptr %call5.i.i.i.i2.i.i125, i64 8 - %add.ptr.idx.i.i.i.i.i.i.i = add i64 %sub.ptr.sub.i, -8 + %sub.i.i.i.i.i = add 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 %add.ptr.idx.i.i.i.i.i.i.i, i1 false), !tbaa !21 %add.ptr.i.i.i.i.i.i.i = getelementptr i8, ptr %call5.i.i.i.i2.i.i125, i64 %sub.ptr.sub.i %cmp.i.not5.i = icmp eq ptr %1, %0 diff --git a/bench/quantlib/optimized/multiproductmultistep.ll b/bench/quantlib/optimized/multiproductmultistep.ll index c69e4cb6c08..81169fac08b 100644 --- a/bench/quantlib/optimized/multiproductmultistep.ll +++ b/bench/quantlib/optimized/multiproductmultistep.ll @@ -302,39 +302,39 @@ for.inc.preheader.i.i.i.i.i: ; preds = %invoke.cont33, %_ZN %call5.i.i.i.i2.i.i43 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef %mul.i.i.i.i.i.i37) #20 to label %call5.i.i.i.i2.i.i.noexc42 unwind label %lpad37 -call5.i.i.i.i2.i.i.noexc42: ; preds = %for.inc.preheader.i.i.i.i.i +invoke.cont48.lr.ph: ; preds = %for.inc.preheader.i.i.i.i.i store ptr %call5.i.i.i.i2.i.i43, ptr %relevanceRates, align 8, !tbaa !19 %add.ptr.i.i.i38 = getelementptr inbounds nuw %"struct.std::pair", ptr %call5.i.i.i.i2.i.i43, i64 %sub tail call void @llvm.memset.p0.i64(ptr nonnull align 8 %call5.i.i.i.i2.i.i43, i8 0, i64 %mul.i.i.i.i.i.i37, i1 false) %scevgep.i.i.i.i.i = getelementptr i8, ptr %call5.i.i.i.i2.i.i43, i64 %mul.i.i.i.i.i.i37 %_M_finish.i.i7.i39 = getelementptr inbounds nuw i8, ptr %relevanceRates, i64 8 - %24 = getelementptr inbounds nuw i8, ptr %relevanceRates, i64 16 - store ptr %add.ptr.i.i.i38, ptr %24, align 8, !tbaa !21 + %25 = getelementptr inbounds nuw i8, ptr %relevanceRates, i64 16 + store ptr %add.ptr.i.i.i38, ptr %25, align 8, !tbaa !21 store ptr %scevgep.i.i.i.i.i, ptr %_M_finish.i.i7.i39, align 8, !tbaa !22 %cmp41103.not = icmp eq i64 %sub, 0 br i1 %cmp41103.not, label %for.cond.cleanup, label %invoke.cont48 -for.cond.cleanup: ; preds = %invoke.cont48, %call5.i.i.i.i2.i.i.noexc42 +for.cond.cleanup: ; preds = %invoke.cont48, %invoke.cont48.lr.ph call void @llvm.lifetime.start.p0(ptr nonnull %ref.tmp55) invoke void @_ZN8QuantLib20EvolutionDescriptionC1ERKSt6vectorIdSaIdEES5_RKS1_ISt4pairImmESaIS7_EE(ptr noundef nonnull align 8 dereferenceable(128) %ref.tmp55, ptr noundef nonnull align 8 dereferenceable(24) %rateTimes_, ptr noundef nonnull align 8 dereferenceable(24) %evolutionTimes, ptr noundef nonnull align 8 dereferenceable(24) %relevanceRates) to label %invoke.cont58 unwind label %lpad57 lpad32: ; preds = %_ZNSt6vectorIdSaIdEE17_S_check_init_lenEmRKS0_.exit.i, %if.then.i.i33 - %25 = landingpad { ptr, i32 } + %27 = landingpad { ptr, i32 } cleanup br label %ehcleanup65 lpad37: ; preds = %for.inc.preheader.i.i.i.i.i, %if.then.i.i40 - %26 = landingpad { ptr, i32 } + %28 = landingpad { ptr, i32 } cleanup br label %ehcleanup63 -invoke.cont48: ; preds = %call5.i.i.i.i2.i.i.noexc42, %invoke.cont48 +invoke.cont48: ; preds = %invoke.cont48.lr.ph, %invoke.cont48 %storemerge104 = phi i64 [ %add, %invoke.cont48 ], [ 0, %call5.i.i.i.i2.i.i.noexc42 ] %add.ptr.i = getelementptr inbounds nuw double, ptr %4, i64 %storemerge104 - %27 = load double, ptr %add.ptr.i, align 8, !tbaa !17 + %29 = load double, ptr %add.ptr.i, align 8, !tbaa !17 %add.ptr.i44 = getelementptr inbounds nuw double, ptr %call5.i.i.i.i2.i.i34, i64 %storemerge104 - store double %27, ptr %add.ptr.i44, align 8, !tbaa !17 + store double %29, ptr %add.ptr.i44, align 8, !tbaa !17 %add = add nuw i64 %storemerge104, 1 %add.ptr.i45 = getelementptr inbounds nuw %"struct.std::pair", ptr %call5.i.i.i.i2.i.i43, i64 %storemerge104 store i64 %storemerge104, ptr %add.ptr.i45, align 8, !tbaa !23 @@ -346,105 +346,105 @@ invoke.cont48: ; preds = %call5.i.i.i.i2.i.i. invoke.cont58: ; preds = %for.cond.cleanup %call60 = call noundef nonnull align 8 dereferenceable(128) ptr @_ZN8QuantLib20EvolutionDescriptionaSEOS0_(ptr noundef nonnull align 8 dereferenceable(128) %evolution_, ptr noundef nonnull align 8 dereferenceable(128) %ref.tmp55) #17 %firstAliveRate_.i = getelementptr inbounds nuw i8, ptr %ref.tmp55, i64 104 - %28 = load ptr, ptr %firstAliveRate_.i, align 8, !tbaa !28 - %tobool.not.i.i.i.i = icmp eq ptr %28, null + %30 = load ptr, ptr %firstAliveRate_.i, align 8, !tbaa !28 + %tobool.not.i.i.i.i = icmp eq ptr %30, null br i1 %tobool.not.i.i.i.i, label %_ZNSt6vectorImSaImEED2Ev.exit.i, label %if.then.i.i.i.i if.then.i.i.i.i: ; preds = %invoke.cont58 %_M_end_of_storage.i.i.i46 = getelementptr inbounds nuw i8, ptr %ref.tmp55, i64 120 - %29 = load ptr, ptr %_M_end_of_storage.i.i.i46, align 8, !tbaa !30 - %sub.ptr.lhs.cast.i.i.i = ptrtoint ptr %29 to i64 - %sub.ptr.rhs.cast.i.i.i = ptrtoint ptr %28 to i64 + %31 = load ptr, ptr %_M_end_of_storage.i.i.i46, align 8, !tbaa !30 + %sub.ptr.lhs.cast.i.i.i = ptrtoint ptr %31 to i64 + %sub.ptr.rhs.cast.i.i.i = ptrtoint ptr %30 to i64 %sub.ptr.sub.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i, %sub.ptr.rhs.cast.i.i.i - call void @_ZdlPvm(ptr noundef nonnull %28, i64 noundef %sub.ptr.sub.i.i.i) #19 + call void @_ZdlPvm(ptr noundef nonnull %30, i64 noundef %sub.ptr.sub.i.i.i) #19 br label %_ZNSt6vectorImSaImEED2Ev.exit.i _ZNSt6vectorImSaImEED2Ev.exit.i: ; preds = %if.then.i.i.i.i, %invoke.cont58 %rateTaus_.i = getelementptr inbounds nuw i8, ptr %ref.tmp55, i64 80 - %30 = load ptr, ptr %rateTaus_.i, align 8, !tbaa !6 - %tobool.not.i.i.i1.i = icmp eq ptr %30, null + %32 = load ptr, ptr %rateTaus_.i, align 8, !tbaa !6 + %tobool.not.i.i.i1.i = icmp eq ptr %32, null br i1 %tobool.not.i.i.i1.i, label %_ZNSt6vectorIdSaIdEED2Ev.exit.i, label %if.then.i.i.i2.i if.then.i.i.i2.i: ; preds = %_ZNSt6vectorImSaImEED2Ev.exit.i %_M_end_of_storage.i.i3.i = getelementptr inbounds nuw i8, ptr %ref.tmp55, i64 96 - %31 = load ptr, ptr %_M_end_of_storage.i.i3.i, align 8, !tbaa !11 - %sub.ptr.lhs.cast.i.i4.i = ptrtoint ptr %31 to i64 - %sub.ptr.rhs.cast.i.i5.i = ptrtoint ptr %30 to i64 + %33 = load ptr, ptr %_M_end_of_storage.i.i3.i, align 8, !tbaa !11 + %sub.ptr.lhs.cast.i.i4.i = ptrtoint ptr %33 to i64 + %sub.ptr.rhs.cast.i.i5.i = ptrtoint ptr %32 to i64 %sub.ptr.sub.i.i6.i = sub i64 %sub.ptr.lhs.cast.i.i4.i, %sub.ptr.rhs.cast.i.i5.i - call void @_ZdlPvm(ptr noundef nonnull %30, i64 noundef %sub.ptr.sub.i.i6.i) #19 + call void @_ZdlPvm(ptr noundef nonnull %32, i64 noundef %sub.ptr.sub.i.i6.i) #19 br label %_ZNSt6vectorIdSaIdEED2Ev.exit.i _ZNSt6vectorIdSaIdEED2Ev.exit.i: ; preds = %if.then.i.i.i2.i, %_ZNSt6vectorImSaImEED2Ev.exit.i %relevanceRates_.i = getelementptr inbounds nuw i8, ptr %ref.tmp55, i64 56 - %32 = load ptr, ptr %relevanceRates_.i, align 8, !tbaa !19 - %tobool.not.i.i.i7.i = icmp eq ptr %32, null + %34 = load ptr, ptr %relevanceRates_.i, align 8, !tbaa !19 + %tobool.not.i.i.i7.i = icmp eq ptr %34, null br i1 %tobool.not.i.i.i7.i, label %_ZNSt6vectorISt4pairImmESaIS1_EED2Ev.exit.i, label %if.then.i.i.i8.i if.then.i.i.i8.i: ; preds = %_ZNSt6vectorIdSaIdEED2Ev.exit.i %_M_end_of_storage.i.i9.i = getelementptr inbounds nuw i8, ptr %ref.tmp55, i64 72 - %33 = load ptr, ptr %_M_end_of_storage.i.i9.i, align 8, !tbaa !21 - %sub.ptr.lhs.cast.i.i10.i = ptrtoint ptr %33 to i64 - %sub.ptr.rhs.cast.i.i11.i = ptrtoint ptr %32 to i64 + %35 = load ptr, ptr %_M_end_of_storage.i.i9.i, align 8, !tbaa !21 + %sub.ptr.lhs.cast.i.i10.i = ptrtoint ptr %35 to i64 + %sub.ptr.rhs.cast.i.i11.i = ptrtoint ptr %34 to i64 %sub.ptr.sub.i.i12.i = sub i64 %sub.ptr.lhs.cast.i.i10.i, %sub.ptr.rhs.cast.i.i11.i - call void @_ZdlPvm(ptr noundef nonnull %32, i64 noundef %sub.ptr.sub.i.i12.i) #19 + call void @_ZdlPvm(ptr noundef nonnull %34, i64 noundef %sub.ptr.sub.i.i12.i) #19 br label %_ZNSt6vectorISt4pairImmESaIS1_EED2Ev.exit.i _ZNSt6vectorISt4pairImmESaIS1_EED2Ev.exit.i: ; preds = %if.then.i.i.i8.i, %_ZNSt6vectorIdSaIdEED2Ev.exit.i %evolutionTimes_.i = getelementptr inbounds nuw i8, ptr %ref.tmp55, i64 32 - %34 = load ptr, ptr %evolutionTimes_.i, align 8, !tbaa !6 - %tobool.not.i.i.i13.i = icmp eq ptr %34, null + %36 = load ptr, ptr %evolutionTimes_.i, align 8, !tbaa !6 + %tobool.not.i.i.i13.i = icmp eq ptr %36, null br i1 %tobool.not.i.i.i13.i, label %_ZNSt6vectorIdSaIdEED2Ev.exit19.i, label %if.then.i.i.i14.i if.then.i.i.i14.i: ; preds = %_ZNSt6vectorISt4pairImmESaIS1_EED2Ev.exit.i %_M_end_of_storage.i.i15.i = getelementptr inbounds nuw i8, ptr %ref.tmp55, i64 48 - %35 = load ptr, ptr %_M_end_of_storage.i.i15.i, align 8, !tbaa !11 - %sub.ptr.lhs.cast.i.i16.i = ptrtoint ptr %35 to i64 - %sub.ptr.rhs.cast.i.i17.i = ptrtoint ptr %34 to i64 + %37 = load ptr, ptr %_M_end_of_storage.i.i15.i, align 8, !tbaa !11 + %sub.ptr.lhs.cast.i.i16.i = ptrtoint ptr %37 to i64 + %sub.ptr.rhs.cast.i.i17.i = ptrtoint ptr %36 to i64 %sub.ptr.sub.i.i18.i = sub i64 %sub.ptr.lhs.cast.i.i16.i, %sub.ptr.rhs.cast.i.i17.i - call void @_ZdlPvm(ptr noundef nonnull %34, i64 noundef %sub.ptr.sub.i.i18.i) #19 + call void @_ZdlPvm(ptr noundef nonnull %36, i64 noundef %sub.ptr.sub.i.i18.i) #19 br label %_ZNSt6vectorIdSaIdEED2Ev.exit19.i _ZNSt6vectorIdSaIdEED2Ev.exit19.i: ; preds = %if.then.i.i.i14.i, %_ZNSt6vectorISt4pairImmESaIS1_EED2Ev.exit.i %rateTimes_.i47 = getelementptr inbounds nuw i8, ptr %ref.tmp55, i64 8 - %36 = load ptr, ptr %rateTimes_.i47, align 8, !tbaa !6 - %tobool.not.i.i.i20.i = icmp eq ptr %36, null + %38 = load ptr, ptr %rateTimes_.i47, align 8, !tbaa !6 + %tobool.not.i.i.i20.i = icmp eq ptr %38, null br i1 %tobool.not.i.i.i20.i, label %_ZN8QuantLib20EvolutionDescriptionD2Ev.exit, label %if.then.i.i.i21.i if.then.i.i.i21.i: ; preds = %_ZNSt6vectorIdSaIdEED2Ev.exit19.i %_M_end_of_storage.i.i22.i = getelementptr inbounds nuw i8, ptr %ref.tmp55, i64 24 - %37 = load ptr, ptr %_M_end_of_storage.i.i22.i, align 8, !tbaa !11 - %sub.ptr.lhs.cast.i.i23.i = ptrtoint ptr %37 to i64 - %sub.ptr.rhs.cast.i.i24.i = ptrtoint ptr %36 to i64 + %39 = load ptr, ptr %_M_end_of_storage.i.i22.i, align 8, !tbaa !11 + %sub.ptr.lhs.cast.i.i23.i = ptrtoint ptr %39 to i64 + %sub.ptr.rhs.cast.i.i24.i = ptrtoint ptr %38 to i64 %sub.ptr.sub.i.i25.i = sub i64 %sub.ptr.lhs.cast.i.i23.i, %sub.ptr.rhs.cast.i.i24.i - call void @_ZdlPvm(ptr noundef nonnull %36, i64 noundef %sub.ptr.sub.i.i25.i) #19 + call void @_ZdlPvm(ptr noundef nonnull %38, i64 noundef %sub.ptr.sub.i.i25.i) #19 br label %_ZN8QuantLib20EvolutionDescriptionD2Ev.exit _ZN8QuantLib20EvolutionDescriptionD2Ev.exit: ; preds = %_ZNSt6vectorIdSaIdEED2Ev.exit19.i, %if.then.i.i.i21.i call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp55) - %38 = load ptr, ptr %relevanceRates, align 8, !tbaa !19 - %tobool.not.i.i.i = icmp eq ptr %38, null + %40 = load ptr, ptr %relevanceRates, align 8, !tbaa !19 + %tobool.not.i.i.i = icmp eq ptr %40, null br i1 %tobool.not.i.i.i, label %_ZNSt6vectorISt4pairImmESaIS1_EED2Ev.exit, label %if.then.i.i.i if.then.i.i.i: ; preds = %_ZN8QuantLib20EvolutionDescriptionD2Ev.exit - %39 = load ptr, ptr %24, align 8, !tbaa !21 - %sub.ptr.lhs.cast.i.i = ptrtoint ptr %39 to i64 - %sub.ptr.rhs.cast.i.i = ptrtoint ptr %38 to i64 + %41 = load ptr, ptr %24, align 8, !tbaa !21 + %sub.ptr.lhs.cast.i.i = ptrtoint ptr %41 to i64 + %sub.ptr.rhs.cast.i.i = ptrtoint ptr %40 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 %38, i64 noundef %sub.ptr.sub.i.i) #19 + call void @_ZdlPvm(ptr noundef nonnull %40, i64 noundef %sub.ptr.sub.i.i) #19 br label %_ZNSt6vectorISt4pairImmESaIS1_EED2Ev.exit _ZNSt6vectorISt4pairImmESaIS1_EED2Ev.exit: ; preds = %_ZN8QuantLib20EvolutionDescriptionD2Ev.exit, %if.then.i.i.i call void @llvm.lifetime.end.p0(ptr nonnull %relevanceRates) - %40 = load ptr, ptr %evolutionTimes, align 8, !tbaa !6 - %tobool.not.i.i.i48 = icmp eq ptr %40, null + %42 = load ptr, ptr %evolutionTimes, align 8, !tbaa !6 + %tobool.not.i.i.i48 = icmp eq ptr %42, null br i1 %tobool.not.i.i.i48, label %_ZNSt6vectorIdSaIdEED2Ev.exit, label %if.then.i.i.i49 if.then.i.i.i49: ; preds = %_ZNSt6vectorISt4pairImmESaIS1_EED2Ev.exit %41 = load ptr, ptr %_M_end_of_storage.i.i.i, align 8, !tbaa !11 %sub.ptr.lhs.cast.i.i51 = ptrtoint ptr %41 to i64 - %sub.ptr.rhs.cast.i.i52 = ptrtoint ptr %40 to i64 + %sub.ptr.lhs.cast.i.i51 = ptrtoint ptr %40 to i64 %sub.ptr.sub.i.i53 = sub i64 %sub.ptr.lhs.cast.i.i51, %sub.ptr.rhs.cast.i.i52 - call void @_ZdlPvm(ptr noundef nonnull %40, i64 noundef %sub.ptr.sub.i.i53) #19 + call void @_ZdlPvm(ptr noundef nonnull %42, i64 noundef %sub.ptr.sub.i.i53) #19 br label %_ZNSt6vectorIdSaIdEED2Ev.exit _ZNSt6vectorIdSaIdEED2Ev.exit: ; preds = %_ZNSt6vectorISt4pairImmESaIS1_EED2Ev.exit, %if.then.i.i.i49 @@ -452,54 +452,54 @@ _ZNSt6vectorIdSaIdEED2Ev.exit: ; preds = %_ZNSt6vectorISt4pai ret void lpad57: ; preds = %for.cond.cleanup - %42 = landingpad { ptr, i32 } + %44 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp55) - %43 = load ptr, ptr %relevanceRates, align 8, !tbaa !19 - %tobool.not.i.i.i54 = icmp eq ptr %43, null + %45 = load ptr, ptr %relevanceRates, align 8, !tbaa !19 + %tobool.not.i.i.i54 = icmp eq ptr %45, null br i1 %tobool.not.i.i.i54, label %ehcleanup63, label %if.then.i.i.i55 if.then.i.i.i55: ; preds = %lpad57 - %44 = load ptr, ptr %24, align 8, !tbaa !21 - %sub.ptr.lhs.cast.i.i57 = ptrtoint ptr %44 to i64 - %sub.ptr.rhs.cast.i.i58 = ptrtoint ptr %43 to i64 + %46 = load ptr, ptr %24, align 8, !tbaa !21 + %sub.ptr.lhs.cast.i.i57 = ptrtoint ptr %46 to i64 + %sub.ptr.rhs.cast.i.i58 = ptrtoint ptr %45 to i64 %sub.ptr.sub.i.i59 = sub i64 %sub.ptr.lhs.cast.i.i57, %sub.ptr.rhs.cast.i.i58 - call void @_ZdlPvm(ptr noundef nonnull %43, i64 noundef %sub.ptr.sub.i.i59) #19 + call void @_ZdlPvm(ptr noundef nonnull %45, i64 noundef %sub.ptr.sub.i.i59) #19 br label %ehcleanup63 ehcleanup63: ; preds = %if.then.i.i.i55, %lpad57, %lpad37 - %.pn8.pn = phi { ptr, i32 } [ %26, %lpad37 ], [ %42, %lpad57 ], [ %42, %if.then.i.i.i55 ] + %.pn8.pn = phi { ptr, i32 } [ %28, %lpad37 ], [ %44, %lpad57 ], [ %44, %if.then.i.i.i55 ] call void @llvm.lifetime.end.p0(ptr nonnull %relevanceRates) - %45 = load ptr, ptr %evolutionTimes, align 8, !tbaa !6 - %tobool.not.i.i.i61 = icmp eq ptr %45, null + %47 = load ptr, ptr %evolutionTimes, align 8, !tbaa !6 + %tobool.not.i.i.i61 = icmp eq ptr %47, null br i1 %tobool.not.i.i.i61, label %ehcleanup65, label %if.then.i.i.i62 if.then.i.i.i62: ; preds = %ehcleanup63 %46 = load ptr, ptr %_M_end_of_storage.i.i.i, align 8, !tbaa !11 %sub.ptr.lhs.cast.i.i64 = ptrtoint ptr %46 to i64 - %sub.ptr.rhs.cast.i.i65 = ptrtoint ptr %45 to i64 + %sub.ptr.lhs.cast.i.i64 = ptrtoint ptr %45 to i64 %sub.ptr.sub.i.i66 = sub i64 %sub.ptr.lhs.cast.i.i64, %sub.ptr.rhs.cast.i.i65 - call void @_ZdlPvm(ptr noundef nonnull %45, i64 noundef %sub.ptr.sub.i.i66) #19 + call void @_ZdlPvm(ptr noundef nonnull %47, i64 noundef %sub.ptr.sub.i.i66) #19 br label %ehcleanup65 ehcleanup65: ; preds = %if.then.i.i.i62, %ehcleanup63, %lpad32 - %.pn8.pn.pn = phi { ptr, i32 } [ %25, %lpad32 ], [ %.pn8.pn, %ehcleanup63 ], [ %.pn8.pn, %if.then.i.i.i62 ] + %.pn8.pn.pn = phi { ptr, i32 } [ %27, %lpad32 ], [ %.pn8.pn, %ehcleanup63 ], [ %.pn8.pn, %if.then.i.i.i62 ] call void @llvm.lifetime.end.p0(ptr nonnull %evolutionTimes) br label %ehcleanup67 ehcleanup67: ; preds = %ehcleanup65, %ehcleanup28 %.pn8.pn.pn.pn = phi { ptr, i32 } [ %.pn8.pn.pn, %ehcleanup65 ], [ %.pn.pn.pn.pn.pn, %ehcleanup28 ] call void @_ZN8QuantLib20EvolutionDescriptionD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %evolution_) #17 - %47 = load ptr, ptr %rateTimes_, align 8, !tbaa !6 - %tobool.not.i.i.i68 = icmp eq ptr %47, null + %49 = load ptr, ptr %rateTimes_, align 8, !tbaa !6 + %tobool.not.i.i.i68 = icmp eq ptr %49, null br i1 %tobool.not.i.i.i68, label %_ZNSt6vectorIdSaIdEED2Ev.exit74, label %if.then.i.i.i69 if.then.i.i.i69: ; preds = %ehcleanup67 - %48 = load ptr, ptr %_M_end_of_storage.i.i.i.i, align 8, !tbaa !11 - %sub.ptr.lhs.cast.i.i71 = ptrtoint ptr %48 to i64 - %sub.ptr.rhs.cast.i.i72 = ptrtoint ptr %47 to i64 + %50 = load ptr, ptr %_M_end_of_storage.i.i.i.i, align 8, !tbaa !11 + %sub.ptr.lhs.cast.i.i71 = ptrtoint ptr %50 to i64 + %sub.ptr.rhs.cast.i.i72 = ptrtoint ptr %49 to i64 %sub.ptr.sub.i.i73 = sub i64 %sub.ptr.lhs.cast.i.i71, %sub.ptr.rhs.cast.i.i72 - call void @_ZdlPvm(ptr noundef nonnull %47, i64 noundef %sub.ptr.sub.i.i73) #19 + call void @_ZdlPvm(ptr noundef nonnull %49, i64 noundef %sub.ptr.sub.i.i73) #19 br label %_ZNSt6vectorIdSaIdEED2Ev.exit74 _ZNSt6vectorIdSaIdEED2Ev.exit74: ; preds = %ehcleanup67, %if.then.i.i.i69 diff --git a/bench/quinn-rs/optimized/em94uyxz0wp9gccfab963606p.ll b/bench/quinn-rs/optimized/em94uyxz0wp9gccfab963606p.ll index 2f87150bbc7..345ba9b78df 100644 --- a/bench/quinn-rs/optimized/em94uyxz0wp9gccfab963606p.ll +++ b/bench/quinn-rs/optimized/em94uyxz0wp9gccfab963606p.ll @@ -4635,45 +4635,45 @@ define void @_ZN11quinn_proto9range_set15array_range_set13ArrayRangeSet7pop_min1 %4 = trunc nuw i64 %3 to i1 br i1 %4, label %5, label %.thread -5: ; preds = %2 - %6 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %7 = load i64, ptr %6, align 8, !noundef !3 - %8 = icmp ult i64 %7, 576460752303423488 - tail call void @llvm.assume(i1 %8) - %9 = icmp eq i64 %7, 0 - br i1 %9, label %13, label %14 +6: ; preds = %2 + %7 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %8 = load i64, ptr %7, align 8, !noundef !3 + %9 = icmp ult i64 %8, 576460752303423488 + tail call void @llvm.assume(i1 %9) + %10 = icmp eq i64 %8, 0 + br i1 %10, label %14, label %15 .thread: ; preds = %2 - %10 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %11 = load i16, ptr %10, align 8, !noundef !3 - %12 = icmp eq i16 %11, 0 - br i1 %12, label %13, label %.thread5 + %11 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %12 = load i16, ptr %11, align 8, !noundef !3 + %13 = icmp eq i16 %12, 0 + br i1 %13, label %14, label %.thread5 -13: ; preds = %.thread, %5, %28 +14: ; preds = %.thread, %6, %32 %storemerge = phi i64 [ 1, %28 ], [ 0, %5 ], [ 0, %.thread ] store i64 %storemerge, ptr %0, align 8 ret void -14: ; preds = %5 - %15 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %16 = tail call { i64, i64 } @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6remove17h03ac08bd636d4babE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %15, i64 noundef 0, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.dc71d0a5682d3db708e0e7797e95149f.163) - br label %28 +15: ; preds = %6 + %16 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %17 = tail call { i64, i64 } @"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6remove17h03ac08bd636d4babE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %16, i64 noundef 0, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.dc71d0a5682d3db708e0e7797e95149f.163) + br label %32 .thread5: ; preds = %.thread tail call void @llvm.experimental.noalias.scope.decl(metadata !627) - %17 = getelementptr inbounds nuw i8, ptr %1, i64 16 - %18 = icmp ugt i16 %11, 2 + %18 = getelementptr inbounds nuw i8, ptr %1, i64 16 + %18 = icmp ugt i16 %12, 2 br i1 %18, label %19, label %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h8ecf2f929a490e68E.exit.i", !prof !17 -19: ; preds = %.thread5 +21: ; preds = %.thread5 %20 = zext i16 %11 to i64 tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h295f890f9c88ef86E(i64 noundef %20, i64 noundef 2, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.dc71d0a5682d3db708e0e7797e95149f.101) #22, !noalias !630 unreachable "_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h8ecf2f929a490e68E.exit.i": ; preds = %.thread5 - %21 = load i64, ptr %17, align 8, !alias.scope !627, !noundef !3 - %22 = getelementptr inbounds nuw i8, ptr %1, i64 24 - %23 = load i64, ptr %22, align 8, !alias.scope !627, !noundef !3 + %22 = load i64, ptr %18, align 8, !alias.scope !627, !noundef !3 + %23 = getelementptr inbounds nuw i8, ptr %1, i64 24 + %24 = load i64, ptr %23, align 8, !alias.scope !627, !noundef !3 %.not11.i = icmp eq i16 %11, 1 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %17, i8 0, i64 16, i1 false), !alias.scope !627 br i1 %.not11.i, label %"_ZN7tinyvec8arrayvec17ArrayVec$LT$A$GT$6remove17h42c06d89c20f132cE.exit", label %.lr.ph.i @@ -4684,22 +4684,22 @@ define void @_ZN11quinn_proto9range_set15array_range_set13ArrayRangeSet7pop_min1 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %24, i8 0, i64 16, i1 false) br label %"_ZN7tinyvec8arrayvec17ArrayVec$LT$A$GT$6remove17h42c06d89c20f132cE.exit" -"_ZN7tinyvec8arrayvec17ArrayVec$LT$A$GT$6remove17h42c06d89c20f132cE.exit": ; preds = %.lr.ph.i, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h8ecf2f929a490e68E.exit.i" +"_ZN7tinyvec8arrayvec17ArrayVec$LT$A$GT$6remove17h42c06d89c20f132cE.exit":; preds = %.lr.ph.i, %"_ZN106_$LT$core..ops..range..Range$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h8ecf2f929a490e68E.exit.i" %25 = add nsw i16 %11, -1 store i16 %25, ptr %10, align 8, !alias.scope !627 %26 = insertvalue { i64, i64 } poison, i64 %21, 0 %27 = insertvalue { i64, i64 } %26, i64 %23, 1 br label %28 -28: ; preds = %"_ZN7tinyvec8arrayvec17ArrayVec$LT$A$GT$6remove17h42c06d89c20f132cE.exit", %14 - %.pn = phi { i64, i64 } [ %16, %14 ], [ %27, %"_ZN7tinyvec8arrayvec17ArrayVec$LT$A$GT$6remove17h42c06d89c20f132cE.exit" ] +32: ; preds = %"_ZN7tinyvec8arrayvec17ArrayVec$LT$A$GT$6remove17h42c06d89c20f132cE.exit", %15 + %.pn = phi { i64, i64 } [ %17, %14 ], [ %27, %"_ZN7tinyvec8arrayvec17ArrayVec$LT$A$GT$6remove17h42c06d89c20f132cE.exit" ] %.sroa.0.0 = extractvalue { i64, i64 } %.pn, 0 %.sroa.5.0 = extractvalue { i64, i64 } %.pn, 1 - %29 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 %.sroa.0.0, ptr %29, align 8 - %30 = getelementptr inbounds nuw i8, ptr %0, i64 16 - store i64 %.sroa.5.0, ptr %30, align 8 - br label %13 + %33 = getelementptr inbounds nuw i8, ptr %0, i64 8 + store i64 %.sroa.0.0, ptr %33, align 8 + %34 = getelementptr inbounds nuw i8, ptr %0, i64 16 + store i64 %.sroa.5.0, ptr %34, align 8 + br label %14 } ; Function Attrs: nonlazybind uwtable diff --git a/bench/rocksdb/optimized/experimental.ll b/bench/rocksdb/optimized/experimental.ll index d429d778e0d..5f3a0032d10 100644 --- a/bench/rocksdb/optimized/experimental.ll +++ b/bench/rocksdb/optimized/experimental.ll @@ -20323,7 +20323,7 @@ define internal fastcc void @_ZN7rocksdb12experimental12_GLOBAL__N_114GetFilterI switch i8 %.sroa.2.0.extract.trunc, label %53 [ i8 0, label %6 i8 1, label %8 - i8 2, label %30 + i8 2, label %31 i8 3, label %_ZSt5visitIZN7rocksdb12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS1_14SelectWholeKeyENS1_16SelectKeySegmentENS1_21SelectKeySegmentRangeENS1_21SelectLegacyKeyPrefixENS1_19SelectUserTimestampENS1_16SelectColumnNameEEERKNS0_5SliceERKNS1_20KeySegmentsExtractor6ResultEPSB_SI_E17FilterInputGetterJRSA_EENSt13invoke_resultIT_JDpNSt13__conditionalIX21is_lvalue_reference_vIT0_EEE4typeIRNSt19variant_alternativeILm0ENSt16remove_referenceIDTclsr9__variantE4__asclsr3stdE7declvalISO_EEEEE4typeEE4typeEOSX_EEEE4typeEOSM_DpOSO_.exit i8 4, label %_ZSt5visitIZN7rocksdb12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS1_14SelectWholeKeyENS1_16SelectKeySegmentENS1_21SelectKeySegmentRangeENS1_21SelectLegacyKeyPrefixENS1_19SelectUserTimestampENS1_16SelectColumnNameEEERKNS0_5SliceERKNS1_20KeySegmentsExtractor6ResultEPSB_SI_E17FilterInputGetterJRSA_EENSt13invoke_resultIT_JDpNSt13__conditionalIX21is_lvalue_reference_vIT0_EEE4typeIRNSt19variant_alternativeILm0ENSt16remove_referenceIDTclsr9__variantE4__asclsr3stdE7declvalISO_EEEEE4typeEE4typeEOSX_EEEE4typeEOSM_DpOSO_.exit i8 5, label %_ZSt5visitIZN7rocksdb12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS1_14SelectWholeKeyENS1_16SelectKeySegmentENS1_21SelectKeySegmentRangeENS1_21SelectLegacyKeyPrefixENS1_19SelectUserTimestampENS1_16SelectColumnNameEEERKNS0_5SliceERKNS1_20KeySegmentsExtractor6ResultEPSB_SI_E17FilterInputGetterJRSA_EENSt13invoke_resultIT_JDpNSt13__conditionalIX21is_lvalue_reference_vIT0_EEE4typeIRNSt19variant_alternativeILm0ENSt16remove_referenceIDTclsr9__variantE4__asclsr3stdE7declvalISO_EEEEE4typeEE4typeEOSX_EEEE4typeEOSM_DpOSO_.exit @@ -20367,8 +20367,8 @@ define internal fastcc void @_ZN7rocksdb12experimental12_GLOBAL__N_114GetFilterI %24 = getelementptr inbounds nuw i32, ptr %.val17.val.i.i, i64 %14 %25 = load i32, ptr %24, align 4, !tbaa !102 %26 = zext i32 %25 to i64 - %27 = load ptr, ptr %1, align 8, !tbaa !17 - %28 = getelementptr inbounds nuw i8, ptr %27, i64 %23 + %26 = load ptr, ptr %1, align 8, !tbaa !17 + %28 = getelementptr inbounds nuw i8, ptr %26, i64 %23 %29 = sub nsw i64 %26, %23 br label %_ZNSt8__detail9__variant17__gen_vtable_implINS0_12_Multi_arrayIPFNS0_21__deduce_visit_resultIN7rocksdb5SliceEEEOZNS4_12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS7_14SelectWholeKeyENS7_16SelectKeySegmentENS7_21SelectKeySegmentRangeENS7_21SelectLegacyKeyPrefixENS7_19SelectUserTimestampENS7_16SelectColumnNameEEERKS5_RKNS7_20KeySegmentsExtractor6ResultEPS5_SN_E17FilterInputGetterRSG_EJEEESt16integer_sequenceImJLm1EEEE14__visit_invokeESP_SQ_.exit.i.i @@ -20379,26 +20379,26 @@ _ZNSt8__detail9__variant17__gen_vtable_implINS0_12_Multi_arrayIPFNS0_21__deduce_ %.fca.1.insert.i.i.i.i25.i.i = insertvalue { ptr, i64 } %.fca.0.insert.i.i.i.i24.i.i, i64 %.sroa.3.0.i.i.i.i.i.i, 1 br label %_ZSt5visitIZN7rocksdb12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS1_14SelectWholeKeyENS1_16SelectKeySegmentENS1_21SelectKeySegmentRangeENS1_21SelectLegacyKeyPrefixENS1_19SelectUserTimestampENS1_16SelectColumnNameEEERKNS0_5SliceERKNS1_20KeySegmentsExtractor6ResultEPSB_SI_E17FilterInputGetterJRSA_EENSt13invoke_resultIT_JDpNSt13__conditionalIX21is_lvalue_reference_vIT0_EEE4typeIRNSt19variant_alternativeILm0ENSt16remove_referenceIDTclsr9__variantE4__asclsr3stdE7declvalISO_EEEEE4typeEE4typeEOSX_EEEE4typeEOSM_DpOSO_.exit -30: ; preds = %5 +31: ; preds = %5 %.val21.val.i.i = load ptr, ptr %2, align 8, !tbaa !668 - %31 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %.val21.val23.i.i = load ptr, ptr %31, align 8, !tbaa !976 + %32 = getelementptr inbounds nuw i8, ptr %2, i64 8 + %.val21.val23.i.i = load ptr, ptr %32, align 8, !tbaa !976 %.sroa.4.0.extract.shift.i.i.i.i.i.i = lshr i16 %.sroa.019.0.extract.trunc, 8 %.sroa.4.0.extract.trunc.i.i.i.i.i.i = zext nneg i16 %.sroa.4.0.extract.shift.i.i.i.i.i.i to i64 - %32 = ptrtoint ptr %.val21.val23.i.i to i64 - %33 = ptrtoint ptr %.val21.val.i.i to i64 - %34 = sub i64 %32, %33 - %35 = ashr exact i64 %34, 2 + %33 = ptrtoint ptr %.val21.val23.i.i to i64 + %34 = ptrtoint ptr %.val21.val.i.i to i64 + %35 = sub i64 %33, %34 + %36 = ashr exact i64 %35, 2 %.sroa.0.0.extract.trunc.mask.i.i.i.i.i.i = and i16 %.sroa.019.0.extract.trunc, 255 - %36 = zext nneg i16 %.sroa.0.0.extract.trunc.mask.i.i.i.i.i.i to i64 - %.not.i.i.i.i26.i.i = icmp ugt i64 %35, %36 - br i1 %.not.i.i.i.i26.i.i, label %37, label %_ZNSt8__detail9__variant17__gen_vtable_implINS0_12_Multi_arrayIPFNS0_21__deduce_visit_resultIN7rocksdb5SliceEEEOZNS4_12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS7_14SelectWholeKeyENS7_16SelectKeySegmentENS7_21SelectKeySegmentRangeENS7_21SelectLegacyKeyPrefixENS7_19SelectUserTimestampENS7_16SelectColumnNameEEERKS5_RKNS7_20KeySegmentsExtractor6ResultEPS5_SN_E17FilterInputGetterRSG_EJEEESt16integer_sequenceImJLm2EEEE14__visit_invokeESP_SQ_.exit.i.i + %37 = zext nneg i16 %.sroa.0.0.extract.trunc.mask.i.i.i.i.i.i to i64 + %.not.i.i.i.i26.i.i = icmp ugt i64 %36, %37 + br i1 %.not.i.i.i.i26.i.i, label %38, label %_ZNSt8__detail9__variant17__gen_vtable_implINS0_12_Multi_arrayIPFNS0_21__deduce_visit_resultIN7rocksdb5SliceEEEOZNS4_12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS7_14SelectWholeKeyENS7_16SelectKeySegmentENS7_21SelectKeySegmentRangeENS7_21SelectLegacyKeyPrefixENS7_19SelectUserTimestampENS7_16SelectColumnNameEEERKS5_RKNS7_20KeySegmentsExtractor6ResultEPS5_SN_E17FilterInputGetterRSG_EJEEESt16integer_sequenceImJLm2EEEE14__visit_invokeESP_SQ_.exit.i.i -37: ; preds = %30 +38: ; preds = %31 %.not8.i.i.i.i.i.i = icmp eq i16 %.sroa.0.0.extract.trunc.mask.i.i.i.i.i.i, 0 br i1 %.not8.i.i.i.i.i.i, label %44, label %38 -38: ; preds = %37 +45: ; preds = %38 %39 = add nuw nsw i64 %36, 4294967295 %40 = and i64 %39, 4294967295 %41 = getelementptr inbounds nuw i32, ptr %.val21.val.i.i, i64 %40 @@ -20406,7 +20406,7 @@ _ZNSt8__detail9__variant17__gen_vtable_implINS0_12_Multi_arrayIPFNS0_21__deduce_ %43 = zext i32 %42 to i64 br label %44 -44: ; preds = %38, %37 +44: ; preds = %38, %37 %45 = phi i64 [ %43, %38 ], [ 0, %37 ] %46 = add nsw i64 %35, -1 %.sroa.speculated.i.i.i.i.i.i = tail call i64 @llvm.umin.i64(i64 %46, i64 %.sroa.4.0.extract.trunc.i.i.i.i.i.i) @@ -20418,50 +20418,50 @@ _ZNSt8__detail9__variant17__gen_vtable_implINS0_12_Multi_arrayIPFNS0_21__deduce_ %52 = sub nsw i64 %49, %45 br label %_ZNSt8__detail9__variant17__gen_vtable_implINS0_12_Multi_arrayIPFNS0_21__deduce_visit_resultIN7rocksdb5SliceEEEOZNS4_12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS7_14SelectWholeKeyENS7_16SelectKeySegmentENS7_21SelectKeySegmentRangeENS7_21SelectLegacyKeyPrefixENS7_19SelectUserTimestampENS7_16SelectColumnNameEEERKS5_RKNS7_20KeySegmentsExtractor6ResultEPS5_SN_E17FilterInputGetterRSG_EJEEESt16integer_sequenceImJLm2EEEE14__visit_invokeESP_SQ_.exit.i.i -_ZNSt8__detail9__variant17__gen_vtable_implINS0_12_Multi_arrayIPFNS0_21__deduce_visit_resultIN7rocksdb5SliceEEEOZNS4_12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS7_14SelectWholeKeyENS7_16SelectKeySegmentENS7_21SelectKeySegmentRangeENS7_21SelectLegacyKeyPrefixENS7_19SelectUserTimestampENS7_16SelectColumnNameEEERKS5_RKNS7_20KeySegmentsExtractor6ResultEPS5_SN_E17FilterInputGetterRSG_EJEEESt16integer_sequenceImJLm2EEEE14__visit_invokeESP_SQ_.exit.i.i: ; preds = %44, %30 +_ZNSt8__detail9__variant17__gen_vtable_implINS0_12_Multi_arrayIPFNS0_21__deduce_visit_resultIN7rocksdb5SliceEEEOZNS4_12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS7_14SelectWholeKeyENS7_16SelectKeySegmentENS7_21SelectKeySegmentRangeENS7_21SelectLegacyKeyPrefixENS7_19SelectUserTimestampENS7_16SelectColumnNameEEERKS5_RKNS7_20KeySegmentsExtractor6ResultEPS5_SN_E17FilterInputGetterRSG_EJEEESt16integer_sequenceImJLm2EEEE14__visit_invokeESP_SQ_.exit.i.i: ; preds = %44, %31 %.sroa.0.0.i.i.i.i27.i.i = phi ptr [ %51, %44 ], [ @.str, %30 ] %.sroa.3.0.i.i.i.i28.i.i = phi i64 [ %52, %44 ], [ 0, %30 ] %.fca.0.insert.i.i.i.i29.i.i = insertvalue { ptr, i64 } poison, ptr %.sroa.0.0.i.i.i.i27.i.i, 0 %.fca.1.insert.i.i.i.i30.i.i = insertvalue { ptr, i64 } %.fca.0.insert.i.i.i.i29.i.i, i64 %.sroa.3.0.i.i.i.i28.i.i, 1 br label %_ZSt5visitIZN7rocksdb12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS1_14SelectWholeKeyENS1_16SelectKeySegmentENS1_21SelectKeySegmentRangeENS1_21SelectLegacyKeyPrefixENS1_19SelectUserTimestampENS1_16SelectColumnNameEEERKNS0_5SliceERKNS1_20KeySegmentsExtractor6ResultEPSB_SI_E17FilterInputGetterJRSA_EENSt13invoke_resultIT_JDpNSt13__conditionalIX21is_lvalue_reference_vIT0_EEE4typeIRNSt19variant_alternativeILm0ENSt16remove_referenceIDTclsr9__variantE4__asclsr3stdE7declvalISO_EEEEE4typeEE4typeEOSX_EEEE4typeEOSM_DpOSO_.exit -53: ; preds = %5 +54: ; preds = %5 unreachable _ZSt5visitIZN7rocksdb12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS1_14SelectWholeKeyENS1_16SelectKeySegmentENS1_21SelectKeySegmentRangeENS1_21SelectLegacyKeyPrefixENS1_19SelectUserTimestampENS1_16SelectColumnNameEEERKNS0_5SliceERKNS1_20KeySegmentsExtractor6ResultEPSB_SI_E17FilterInputGetterJRSA_EENSt13invoke_resultIT_JDpNSt13__conditionalIX21is_lvalue_reference_vIT0_EEE4typeIRNSt19variant_alternativeILm0ENSt16remove_referenceIDTclsr9__variantE4__asclsr3stdE7declvalISO_EEEEE4typeEE4typeEOSX_EEEE4typeEOSM_DpOSO_.exit: ; preds = %5, %5, %5, %6, %_ZNSt8__detail9__variant17__gen_vtable_implINS0_12_Multi_arrayIPFNS0_21__deduce_visit_resultIN7rocksdb5SliceEEEOZNS4_12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS7_14SelectWholeKeyENS7_16SelectKeySegmentENS7_21SelectKeySegmentRangeENS7_21SelectLegacyKeyPrefixENS7_19SelectUserTimestampENS7_16SelectColumnNameEEERKS5_RKNS7_20KeySegmentsExtractor6ResultEPS5_SN_E17FilterInputGetterRSG_EJEEESt16integer_sequenceImJLm1EEEE14__visit_invokeESP_SQ_.exit.i.i, %_ZNSt8__detail9__variant17__gen_vtable_implINS0_12_Multi_arrayIPFNS0_21__deduce_visit_resultIN7rocksdb5SliceEEEOZNS4_12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS7_14SelectWholeKeyENS7_16SelectKeySegmentENS7_21SelectKeySegmentRangeENS7_21SelectLegacyKeyPrefixENS7_19SelectUserTimestampENS7_16SelectColumnNameEEERKS5_RKNS7_20KeySegmentsExtractor6ResultEPS5_SN_E17FilterInputGetterRSG_EJEEESt16integer_sequenceImJLm2EEEE14__visit_invokeESP_SQ_.exit.i.i %.pn.i.i = phi { ptr, i64 } [ %.fca.1.insert.i.i.i.i.i.i, %6 ], [ %.fca.1.insert.i.i.i.i25.i.i, %_ZNSt8__detail9__variant17__gen_vtable_implINS0_12_Multi_arrayIPFNS0_21__deduce_visit_resultIN7rocksdb5SliceEEEOZNS4_12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS7_14SelectWholeKeyENS7_16SelectKeySegmentENS7_21SelectKeySegmentRangeENS7_21SelectLegacyKeyPrefixENS7_19SelectUserTimestampENS7_16SelectColumnNameEEERKS5_RKNS7_20KeySegmentsExtractor6ResultEPS5_SN_E17FilterInputGetterRSG_EJEEESt16integer_sequenceImJLm1EEEE14__visit_invokeESP_SQ_.exit.i.i ], [ %.fca.1.insert.i.i.i.i30.i.i, %_ZNSt8__detail9__variant17__gen_vtable_implINS0_12_Multi_arrayIPFNS0_21__deduce_visit_resultIN7rocksdb5SliceEEEOZNS4_12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS7_14SelectWholeKeyENS7_16SelectKeySegmentENS7_21SelectKeySegmentRangeENS7_21SelectLegacyKeyPrefixENS7_19SelectUserTimestampENS7_16SelectColumnNameEEERKS5_RKNS7_20KeySegmentsExtractor6ResultEPS5_SN_E17FilterInputGetterRSG_EJEEESt16integer_sequenceImJLm2EEEE14__visit_invokeESP_SQ_.exit.i.i ], [ { ptr @.str, i64 0 }, %5 ], [ { ptr @.str, i64 0 }, %5 ], [ { ptr @.str, i64 0 }, %5 ] - %54 = extractvalue { ptr, i64 } %.pn.i.i, 0 - %55 = extractvalue { ptr, i64 } %.pn.i.i, 1 - store ptr %54, ptr %3, align 8, !tbaa !50 + %55 = extractvalue { ptr, i64 } %.pn.i.i, 0 + %56 = extractvalue { ptr, i64 } %.pn.i.i, 1 + store ptr %55, ptr %3, align 8, !tbaa !50 %.sroa.7.0..sroa_idx = getelementptr inbounds nuw i8, ptr %3, i64 8 - store i64 %55, ptr %.sroa.7.0..sroa_idx, align 8, !tbaa !129 - %56 = icmp eq i64 %55, 0 - br i1 %56, label %64, label %57 - -57: ; preds = %_ZSt5visitIZN7rocksdb12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS1_14SelectWholeKeyENS1_16SelectKeySegmentENS1_21SelectKeySegmentRangeENS1_21SelectLegacyKeyPrefixENS1_19SelectUserTimestampENS1_16SelectColumnNameEEERKNS0_5SliceERKNS1_20KeySegmentsExtractor6ResultEPSB_SI_E17FilterInputGetterJRSA_EENSt13invoke_resultIT_JDpNSt13__conditionalIX21is_lvalue_reference_vIT0_EEE4typeIRNSt19variant_alternativeILm0ENSt16remove_referenceIDTclsr9__variantE4__asclsr3stdE7declvalISO_EEEEE4typeEE4typeEOSX_EEEE4typeEOSM_DpOSO_.exit - %58 = load ptr, ptr %1, align 8, !tbaa !17 - %59 = icmp ult ptr %54, %58 - %60 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %61 = load i64, ptr %60, align 8 - %62 = getelementptr inbounds nuw i8, ptr %58, i64 %61 - %63 = icmp ugt ptr %54, %62 - %or.cond = select i1 %59, i1 true, i1 %63 - br i1 %or.cond, label %64, label %65 - -64: ; preds = %57, %_ZSt5visitIZN7rocksdb12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS1_14SelectWholeKeyENS1_16SelectKeySegmentENS1_21SelectKeySegmentRangeENS1_21SelectLegacyKeyPrefixENS1_19SelectUserTimestampENS1_16SelectColumnNameEEERKNS0_5SliceERKNS1_20KeySegmentsExtractor6ResultEPSB_SI_E17FilterInputGetterJRSA_EENSt13invoke_resultIT_JDpNSt13__conditionalIX21is_lvalue_reference_vIT0_EEE4typeIRNSt19variant_alternativeILm0ENSt16remove_referenceIDTclsr9__variantE4__asclsr3stdE7declvalISO_EEEEE4typeEE4typeEOSX_EEEE4typeEOSM_DpOSO_.exit + store i64 %56, ptr %.sroa.7.0..sroa_idx, align 8, !tbaa !129 + %57 = icmp eq i64 %56, 0 + br i1 %57, label %65, label %58 + +58: ; preds = %_ZSt5visitIZN7rocksdb12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS1_14SelectWholeKeyENS1_16SelectKeySegmentENS1_21SelectKeySegmentRangeENS1_21SelectLegacyKeyPrefixENS1_19SelectUserTimestampENS1_16SelectColumnNameEEERKNS0_5SliceERKNS1_20KeySegmentsExtractor6ResultEPSB_SI_E17FilterInputGetterJRSA_EENSt13invoke_resultIT_JDpNSt13__conditionalIX21is_lvalue_reference_vIT0_EEE4typeIRNSt19variant_alternativeILm0ENSt16remove_referenceIDTclsr9__variantE4__asclsr3stdE7declvalISO_EEEEE4typeEE4typeEOSX_EEEE4typeEOSM_DpOSO_.exit + %59 = load ptr, ptr %1, align 8, !tbaa !17 + %60 = icmp ult ptr %55, %59 + %61 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %62 = load i64, ptr %61, align 8 + %63 = getelementptr inbounds nuw i8, ptr %59, i64 %62 + %64 = icmp ugt ptr %55, %63 + %or.cond = select i1 %60, i1 true, i1 %64 + br i1 %or.cond, label %65, label %66 + +65: ; preds = %58, %_ZSt5visitIZN7rocksdb12experimental12_GLOBAL__N_114GetFilterInputESt7variantIJNS1_14SelectWholeKeyENS1_16SelectKeySegmentENS1_21SelectKeySegmentRangeENS1_21SelectLegacyKeyPrefixENS1_19SelectUserTimestampENS1_16SelectColumnNameEEERKNS0_5SliceERKNS1_20KeySegmentsExtractor6ResultEPSB_SI_E17FilterInputGetterJRSA_EENSt13invoke_resultIT_JDpNSt13__conditionalIX21is_lvalue_reference_vIT0_EEE4typeIRNSt19variant_alternativeILm0ENSt16remove_referenceIDTclsr9__variantE4__asclsr3stdE7declvalISO_EEEEE4typeEE4typeEOSX_EEEE4typeEOSM_DpOSO_.exit tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(16) %1, i64 16, i1 false), !tbaa.struct !1022 - br label %69 + br label %70 -65: ; preds = %57 - %66 = ptrtoint ptr %54 to i64 - %67 = ptrtoint ptr %58 to i64 - %68 = sub i64 %66, %67 - store ptr %58, ptr %4, align 8, !tbaa !50 +66: ; preds = %58 + %67 = ptrtoint ptr %55 to i64 + %68 = ptrtoint ptr %59 to i64 + %69 = sub i64 %67, %68 + store ptr %59, ptr %4, align 8, !tbaa !50 %.sroa.4.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 8 - store i64 %68, ptr %.sroa.4.0..sroa_idx, align 8, !tbaa !129 - br label %69 + store i64 %69, ptr %.sroa.4.0..sroa_idx, align 8, !tbaa !129 + br label %70 -69: ; preds = %65, %64 +70: ; preds = %66, %65 ret void } diff --git a/bench/ruff-rs/optimized/272al911l1jdbqblbb9whzfue.ll b/bench/ruff-rs/optimized/272al911l1jdbqblbb9whzfue.ll index c3b787e8d69..47e849e3fd0 100644 --- a/bench/ruff-rs/optimized/272al911l1jdbqblbb9whzfue.ll +++ b/bench/ruff-rs/optimized/272al911l1jdbqblbb9whzfue.ll @@ -1193,7 +1193,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %11 = load i64, ptr %10, align 8, !noundef !3 %12 = load ptr, ptr %0, align 8, !nonnull !3, !noundef !3 %13 = icmp eq i64 %11, 0 - br i1 %13, label %.loopexit59, label %.lr.ph.i + br i1 %13, label %.loopexit60, label %.lr.ph.i .lr.ph.i: ; preds = %3, %.lr.ph.i %.sroa.03.06.i = phi i64 [ %21, %.lr.ph.i ], [ %11, %3 ] @@ -1208,23 +1208,23 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %20 = load ptr, ptr %19, align 8, !noalias !205, !nonnull !3, !noundef !3 %21 = add i64 %.sroa.03.06.i, -1 %22 = icmp eq i64 %21, 0 - br i1 %22, label %.loopexit59, label %.lr.ph.i + br i1 %22, label %.loopexit60, label %.lr.ph.i -.loopexit59: ; preds = %.lr.ph.i, %3 +.loopexit60: ; preds = %.lr.ph.i, %3 %.sroa.04.0.lcssa.i = phi ptr [ %12, %3 ], [ %20, %.lr.ph.i ] call void @llvm.lifetime.start.p0(ptr nonnull %9) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %9, ptr noundef nonnull align 8 dereferenceable(56) %1, i64 56, i1 false) br label %23 -23: ; preds = %.loopexit, %.loopexit59 - %.sroa.0.053 = phi ptr [ %.sroa.04.0.lcssa.i, %.loopexit59 ], [ %.sroa.0.1, %.loopexit ] +23: ; preds = %.loopexit, %.loopexit60 + %.sroa.0.054 = phi ptr [ %.sroa.04.0.lcssa.i, %.loopexit59 ], [ %.sroa.0.1, %.loopexit ] invoke void @"_ZN137_$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$K$C$V$C$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hc110be6fc5591b5dE"(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %8, ptr noalias noundef nonnull align 8 dereferenceable(56) %9) to label %26 unwind label %24 -.body: ; preds = %112, %152, %24 - %.pn = phi { ptr, i32 } [ %eh.lpad-body19.ph, %152 ], [ %25, %24 ], [ %113, %112 ] +.body: ; preds = %115, %155, %24 + %.pn = phi { ptr, i32 } [ %eh.lpad-body20.ph, %152 ], [ %25, %24 ], [ %116, %112 ] invoke void @"_ZN4core3ptr507drop_in_place$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$ruff_db..system..path..SystemPathBuf$C$alloc..collections..btree..set_val..SetValZST$C$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$ruff_db..system..path..SystemPathBuf$GT$$C$alloc..collections..btree..set..BTreeSet$LT$ruff_db..system..path..SystemPathBuf$GT$..from_sorted_iter$LT$alloc..vec..into_iter..IntoIter$LT$ruff_db..system..path..SystemPathBuf$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17hbd6ef4bdee85703cE"(ptr noalias noundef nonnull align 8 dereferenceable(56) %9) #16 - to label %155 unwind label %153 + to label %155 unwind label %156 24: ; preds = %23 %25 = landingpad { ptr, i32 } @@ -1239,10 +1239,10 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. 28: ; preds = %26 call void @llvm.lifetime.start.p0(ptr nonnull %7) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %8, i64 24, i1 false) - %29 = getelementptr inbounds nuw i8, ptr %.sroa.0.053, i64 274 + %29 = getelementptr inbounds nuw i8, ptr %.sroa.0.054, i64 274 %30 = load i16, ptr %29, align 2, !noundef !3 %31 = icmp ult i16 %30, 11 - br i1 %31, label %147, label %.preheader + br i1 %31, label %150, label %.preheader 32: ; preds = %26 call void @"_ZN4core3ptr507drop_in_place$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$ruff_db..system..path..SystemPathBuf$C$alloc..collections..btree..set_val..SetValZST$C$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$ruff_db..system..path..SystemPathBuf$GT$$C$alloc..collections..btree..set..BTreeSet$LT$ruff_db..system..path..SystemPathBuf$GT$..from_sorted_iter$LT$alloc..vec..into_iter..IntoIter$LT$ruff_db..system..path..SystemPathBuf$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17hbd6ef4bdee85703cE"(ptr noalias noundef nonnull align 8 dereferenceable(56) %9) @@ -1283,7 +1283,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %48 = icmp ult i16 %47, 5 br i1 %48, label %50, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h79726ad5abc2016aE.exit.i" -"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h79726ad5abc2016aE.exit.i": ; preds = %78, %36 +"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h79726ad5abc2016aE.exit.i": ; preds = %81, %36 %49 = icmp eq i64 %42, 0 br i1 %49, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17h45500165ef2c6417E.exit", label %.lr.ph.i14 @@ -1294,24 +1294,24 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %53 = load i16, ptr %52, align 2, !noalias !218, !noundef !3 %54 = zext nneg i16 %47 to i64 %.not.i.i = icmp ugt i16 %narrow.i, %53 - br i1 %.not.i.i, label %.noexc15, label %_ZN5alloc11collections5btree4node13move_to_slice17h6ae8f93f482c2816E.exit.i.i, !prof !31 + br i1 %.not.i.i, label %.noexc15, label %55, !prof !31 .noexc15: ; preds = %50 call void @_ZN4core9panicking5panic17h48a7e1f3665210c6E(ptr noalias noundef nonnull readonly align 1 @anon.84ebae23b1e24beb2c6053fa0be4ab9a.22, i64 noundef 39, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.84ebae23b1e24beb2c6053fa0be4ab9a.23) #15 unreachable -_ZN5alloc11collections5btree4node13move_to_slice17h6ae8f93f482c2816E.exit.i.i: ; preds = %50 - %55 = zext i16 %53 to i64 - %56 = sub nuw nsw i64 %55, %51 - %57 = trunc nuw i64 %56 to i16 - store i16 %57, ptr %52, align 2, !noalias !218 +55: ; preds = %50 + %56 = zext i16 %53 to i64 + %57 = sub nuw nsw i64 %56, %51 + %58 = trunc nuw i64 %57 to i16 + store i16 %58, ptr %52, align 2, !noalias !218 store i16 5, ptr %46, align 2, !noalias !218 - %58 = getelementptr inbounds nuw i8, ptr %45, i64 8 - %59 = getelementptr inbounds nuw { [3 x i64] }, ptr %58, i64 %51 - %60 = mul nuw nsw i64 %54, 24 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %59, ptr nonnull align 8 %58, i64 %60, i1 false), !alias.scope !221, !noalias !218 - %61 = add nuw nsw i64 %56, 1 - %62 = sub nuw nsw i64 %55, %61 + %59 = getelementptr inbounds nuw i8, ptr %45, i64 8 + %60 = getelementptr inbounds nuw { [3 x i64] }, ptr %59, i64 %51 + %61 = mul nuw nsw i64 %54, 24 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %60, ptr nonnull align 8 %59, i64 %61, i1 false), !alias.scope !221, !noalias !218 + %62 = add nuw nsw i64 %57, 1 + %63 = sub nuw nsw i64 %56, %62 %63 = getelementptr inbounds nuw i8, ptr %41, i64 8 %64 = getelementptr inbounds nuw { [3 x i64] }, ptr %63, i64 %61 %65 = mul nuw nsw i64 %62, 24 @@ -1322,227 +1322,227 @@ _ZN5alloc11collections5btree4node13move_to_slice17h6ae8f93f482c2816E.exit.i.i: ; call void @llvm.lifetime.start.p0(ptr nonnull %5) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(24) %68, i64 24, i1 false), !noalias !218 call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %68, ptr noundef nonnull align 8 dereferenceable(24) %66, i64 24, i1 false), !noalias !218 - %69 = getelementptr inbounds nuw { [3 x i64] }, ptr %58, i64 %62 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %69, ptr noundef nonnull align 8 dereferenceable(24) %5, i64 24, i1 false), !noalias !218 + %72 = getelementptr inbounds nuw { [3 x i64] }, ptr %59, i64 %63 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %72, ptr noundef nonnull align 8 dereferenceable(24) %5, i64 24, i1 false), !noalias !218 call void @llvm.lifetime.end.p0(ptr nonnull %5) %cond.i = icmp eq i64 %42, 0 - br i1 %cond.i, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17h45500165ef2c6417E.exit", label %70 - -70: ; preds = %_ZN5alloc11collections5btree4node13move_to_slice17h6ae8f93f482c2816E.exit.i.i - %71 = getelementptr inbounds nuw i8, ptr %45, i64 280 - %72 = getelementptr inbounds nuw ptr, ptr %71, i64 %51 - %73 = shl nuw nsw i64 %54, 3 - %74 = add nuw nsw i64 %73, 8 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %72, ptr noundef nonnull align 8 dereferenceable(1) %71, i64 %74, i1 false), !alias.scope !228, !noalias !218 - %75 = getelementptr inbounds nuw i8, ptr %41, i64 280 - %76 = getelementptr inbounds nuw ptr, ptr %75, i64 %61 - %77 = shl nuw nsw i64 %51, 3 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %71, ptr noundef nonnull readonly align 8 dereferenceable(1) %76, i64 %77, i1 false), !alias.scope !231, !noalias !218 - br label %78 - -78: ; preds = %78, %70 - %.sroa.0.06.i.i.i = phi i64 [ 0, %70 ], [ %79, %78 ] - %79 = add nuw nsw i64 %.sroa.0.06.i.i.i, 1 - %80 = getelementptr inbounds nuw ptr, ptr %71, i64 %.sroa.0.06.i.i.i - %81 = load ptr, ptr %80, align 8, !noalias !235, !nonnull !3, !noundef !3 - store ptr %45, ptr %81, align 8, !noalias !240 - %82 = trunc nuw nsw i64 %.sroa.0.06.i.i.i to i16 - %83 = getelementptr inbounds nuw i8, ptr %81, i64 272 - store i16 %82, ptr %83, align 8, !noalias !240 + br i1 %cond.i, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17h45500165ef2c6417E.exit", label %73 + +73: ; preds = %_ZN5alloc11collections5btree4node13move_to_slice17h6ae8f93f482c2816E.exit.i.i + %74 = getelementptr inbounds nuw i8, ptr %45, i64 280 + %75 = getelementptr inbounds nuw ptr, ptr %74, i64 %51 + %76 = shl nuw nsw i64 %54, 3 + %77 = add nuw nsw i64 %76, 8 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %75, ptr noundef nonnull align 8 dereferenceable(1) %74, i64 %77, i1 false), !alias.scope !228, !noalias !218 + %78 = getelementptr inbounds nuw i8, ptr %41, i64 280 + %79 = getelementptr inbounds nuw ptr, ptr %78, i64 %62 + %80 = shl nuw nsw i64 %51, 3 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %74, ptr noundef nonnull readonly align 8 dereferenceable(1) %79, i64 %80, i1 false), !alias.scope !231, !noalias !218 + br label %81 + +81: ; preds = %81, %73 + %.sroa.0.06.i.i.i = phi i64 [ 0, %70 ], [ %82, %78 ] + %82 = add nuw nsw i64 %.sroa.0.06.i.i.i, 1 + %83 = getelementptr inbounds nuw ptr, ptr %74, i64 %.sroa.0.06.i.i.i + %84 = load ptr, ptr %83, align 8, !noalias !235, !nonnull !3, !noundef !3 + store ptr %45, ptr %84, align 8, !noalias !240 + %85 = trunc nuw nsw i64 %.sroa.0.06.i.i.i to i16 + %86 = getelementptr inbounds nuw i8, ptr %84, i64 272 + store i16 %85, ptr %86, align 8, !noalias !240 %exitcond.not.i.i.i = icmp eq i64 %.sroa.0.06.i.i.i, 5 - br i1 %exitcond.not.i.i.i, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h79726ad5abc2016aE.exit.i", label %78 + br i1 %exitcond.not.i.i.i, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h79726ad5abc2016aE.exit.i", label %81 "_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17h45500165ef2c6417E.exit": ; preds = %_ZN5alloc11collections5btree4node13move_to_slice17h6ae8f93f482c2816E.exit.i.i, %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h79726ad5abc2016aE.exit.i", %32 ret void -.preheader: ; preds = %28, %87 - %.sroa.5.0 = phi i64 [ %88, %87 ], [ 0, %28 ] - %.sroa.0.0 = phi ptr [ %84, %87 ], [ %.sroa.0.053, %28 ] - %84 = load ptr, ptr %.sroa.0.0, align 8, !noalias !241, !noundef !3 - %.not.i16 = icmp eq ptr %84, null - br i1 %.not.i16, label %92, label %87 +.preheader: ; preds = %28, %90 + %.sroa.5.0 = phi i64 [ %91, %87 ], [ 0, %28 ] + %.sroa.0.0 = phi ptr [ %87, %87 ], [ %.sroa.0.054, %28 ] + %87 = load ptr, ptr %.sroa.0.0, align 8, !noalias !241, !noundef !3 + %.not.i17 = icmp eq ptr %87, null + br i1 %.not.i17, label %95, label %90 -85: ; preds = %.loopexit58 - %86 = landingpad { ptr, i32 } +88: ; preds = %.loopexit59 + %89 = landingpad { ptr, i32 } cleanup - br label %152 + br label %155 -87: ; preds = %.preheader - %88 = add i64 %.sroa.5.0, 1 - %89 = getelementptr inbounds nuw i8, ptr %84, i64 274 - %90 = load i16, ptr %89, align 2, !noundef !3 - %91 = icmp ult i16 %90, 11 - br i1 %91, label %.loopexit58, label %.preheader +90: ; preds = %.preheader + %91 = add i64 %.sroa.5.0, 1 + %92 = getelementptr inbounds nuw i8, ptr %87, i64 274 + %93 = load i16, ptr %92, align 2, !noundef !3 + %94 = icmp ult i16 %93, 11 + br i1 %94, label %.loopexit59, label %.preheader -92: ; preds = %.preheader +95: ; preds = %.preheader call void @llvm.experimental.noalias.scope.decl(metadata !244) - %93 = load ptr, ptr %0, align 8, !alias.scope !244, !nonnull !3, !noundef !3 - %94 = load i64, ptr %10, align 8, !alias.scope !244, !noundef !3 - %95 = invoke noundef nonnull align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$13new_uninit_in17hf3b18689352489abE"() - to label %100 unwind label %96, !noalias !244 + %96 = load ptr, ptr %0, align 8, !alias.scope !244, !nonnull !3, !noundef !3 + %97 = load i64, ptr %10, align 8, !alias.scope !244, !noundef !3 + %98 = invoke noundef nonnull align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$13new_uninit_in17hf3b18689352489abE"() + to label %100 unwind label %99, !noalias !244 -96: ; preds = %92 - %97 = landingpad { ptr, i32 } +99: ; preds = %95 + %100 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17h12e693559be0c4e2E"(ptr noalias noundef nonnull align 1 %4) #16 - to label %152 unwind label %98, !noalias !244 + to label %152 unwind label %101, !noalias !244 -98: ; preds = %96 - %99 = landingpad { ptr, i32 } +101: ; preds = %99 + %102 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbadeae7294749c32E() #17, !noalias !244 unreachable -100: ; preds = %92 - store ptr null, ptr %95, align 8, !noalias !244 - %101 = getelementptr inbounds nuw i8, ptr %95, i64 274 - store i16 0, ptr %101, align 2, !noalias !244 - %102 = getelementptr inbounds nuw i8, ptr %95, i64 280 - store ptr %93, ptr %102, align 8, !noalias !244 - %103 = add i64 %94, 1 - store ptr %95, ptr %93, align 8, !noalias !247 - %104 = getelementptr inbounds nuw i8, ptr %93, i64 272 - store i16 0, ptr %104, align 8, !noalias !254 - store ptr %95, ptr %0, align 8, !alias.scope !244 - store i64 %103, ptr %10, align 8, !alias.scope !244 - br label %.loopexit58 - -.loopexit58: ; preds = %87, %100 - %.sroa.037.0 = phi ptr [ %95, %100 ], [ %84, %87 ] - %.sroa.638.0 = phi i64 [ %103, %100 ], [ %88, %87 ] - %105 = add i64 %.sroa.638.0, -1 - %106 = invoke noundef nonnull align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$13new_uninit_in17h7a7abaf50dd999a9E"() - to label %107 unwind label %85 - -107: ; preds = %.loopexit58 - store ptr null, ptr %106, align 8 - %108 = getelementptr inbounds nuw i8, ptr %106, i64 274 - store i16 0, ptr %108, align 2 - %.not69 = icmp eq i64 %105, 0 - br i1 %.not69, label %.loopexit84, label %.lr.ph - -.invoke.i: ; preds = %.loopexit84 +103: ; preds = %95 + store ptr null, ptr %98, align 8, !noalias !244 + %104 = getelementptr inbounds nuw i8, ptr %98, i64 274 + store i16 0, ptr %104, align 2, !noalias !244 + %105 = getelementptr inbounds nuw i8, ptr %98, i64 280 + store ptr %96, ptr %105, align 8, !noalias !244 + %106 = add i64 %97, 1 + store ptr %98, ptr %96, align 8, !noalias !247 + %107 = getelementptr inbounds nuw i8, ptr %96, i64 272 + store i16 0, ptr %107, align 8, !noalias !254 + store ptr %98, ptr %0, align 8, !alias.scope !244 + store i64 %106, ptr %10, align 8, !alias.scope !244 + br label %.loopexit59 + +.loopexit59: ; preds = %90, %103 + %.sroa.038.0 = phi ptr [ %98, %100 ], [ %87, %87 ] + %.sroa.639.0 = phi i64 [ %106, %100 ], [ %91, %87 ] + %108 = add i64 %.sroa.639.0, -1 + %109 = invoke noundef nonnull align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$13new_uninit_in17h7a7abaf50dd999a9E"() + to label %107 unwind label %88 + +110: ; preds = %.loopexit59 + store ptr null, ptr %109, align 8 + %111 = getelementptr inbounds nuw i8, ptr %109, i64 274 + store i16 0, ptr %111, align 2 + %.not70 = icmp eq i64 %108, 0 + br i1 %.not70, label %.loopexit86, label %.lr.ph + +.invoke.i: ; preds = %.loopexit86 invoke void @_ZN4core9panicking5panic17h48a7e1f3665210c6E(ptr noalias noundef nonnull readonly align 1 @anon.84ebae23b1e24beb2c6053fa0be4ab9a.6, i64 noundef 32, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.84ebae23b1e24beb2c6053fa0be4ab9a.10) #15 - to label %.cont.i unwind label %112, !noalias !255 + to label %.cont.i unwind label %115, !noalias !255 .cont.i: ; preds = %.invoke.i unreachable -.loopexit84: ; preds = %_ZN5alloc11collections5btree3mem7replace17h1284baf35d371addE.exit32, %107 - %.sroa.043.0.lcssa = phi ptr [ %106, %107 ], [ %138, %_ZN5alloc11collections5btree3mem7replace17h1284baf35d371addE.exit32 ] +.loopexit86: ; preds = %_ZN5alloc11collections5btree3mem7replace17h1284baf35d371addE.exit33, %110 + %.sroa.044.0.lcssa = phi ptr [ %109, %107 ], [ %141, %_ZN5alloc11collections5btree3mem7replace17h1284baf35d371addE.exit32 ] call void @llvm.lifetime.start.p0(ptr nonnull %6) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(24) %8, i64 24, i1 false) - %109 = getelementptr inbounds nuw i8, ptr %.sroa.037.0, i64 274 - %110 = load i16, ptr %109, align 2, !noalias !255, !noundef !3 - %111 = icmp ult i16 %110, 11 - br i1 %111, label %116, label %.invoke.i, !prof !4 + %112 = getelementptr inbounds nuw i8, ptr %.sroa.038.0, i64 274 + %113 = load i16, ptr %112, align 2, !noalias !255, !noundef !3 + %114 = icmp ult i16 %113, 11 + br i1 %114, label %119, label %.invoke.i, !prof !4 -112: ; preds = %.invoke.i - %113 = landingpad { ptr, i32 } +115: ; preds = %.invoke.i + %116 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr57drop_in_place$LT$ruff_db..system..path..SystemPathBuf$GT$17h9ca0984b95b1da15E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6) #16 - to label %.body unwind label %114 + to label %.body unwind label %117 -114: ; preds = %112 - %115 = landingpad { ptr, i32 } +117: ; preds = %115 + %118 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbadeae7294749c32E() #17 unreachable -116: ; preds = %.loopexit84 - %117 = zext nneg i16 %110 to i64 - %118 = add nuw nsw i16 %110, 1 - store i16 %118, ptr %109, align 2, !noalias !255 - %119 = getelementptr inbounds nuw i8, ptr %.sroa.037.0, i64 8 - %120 = getelementptr inbounds nuw { [3 x i64] }, ptr %119, i64 %117 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %120, ptr noundef nonnull align 8 dereferenceable(24) %8, i64 24, i1 false) - %121 = add nuw nsw i64 %117, 1 - %122 = getelementptr inbounds nuw i8, ptr %.sroa.037.0, i64 280 - %123 = getelementptr inbounds nuw ptr, ptr %122, i64 %121 - store ptr %.sroa.043.0.lcssa, ptr %123, align 8, !noalias !255 - store ptr %.sroa.037.0, ptr %.sroa.043.0.lcssa, align 8, !noalias !258 - %124 = trunc nuw nsw i64 %121 to i16 - %125 = getelementptr inbounds nuw i8, ptr %.sroa.043.0.lcssa, i64 272 - store i16 %124, ptr %125, align 8, !noalias !258 +119: ; preds = %.loopexit86 + %120 = zext nneg i16 %113 to i64 + %121 = add nuw nsw i16 %113, 1 + store i16 %121, ptr %112, align 2, !noalias !255 + %122 = getelementptr inbounds nuw i8, ptr %.sroa.038.0, i64 8 + %123 = getelementptr inbounds nuw { [3 x i64] }, ptr %122, i64 %120 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %123, ptr noundef nonnull align 8 dereferenceable(24) %8, i64 24, i1 false) + %124 = add nuw nsw i64 %120, 1 + %125 = getelementptr inbounds nuw i8, ptr %.sroa.038.0, i64 280 + %126 = getelementptr inbounds nuw ptr, ptr %125, i64 %124 + store ptr %.sroa.044.0.lcssa, ptr %126, align 8, !noalias !255 + store ptr %.sroa.038.0, ptr %.sroa.044.0.lcssa, align 8, !noalias !258 + %127 = trunc nuw nsw i64 %124 to i16 + %128 = getelementptr inbounds nuw i8, ptr %.sroa.044.0.lcssa, i64 272 + store i16 %127, ptr %128, align 8, !noalias !258 call void @llvm.lifetime.end.p0(ptr nonnull %6) - %126 = icmp eq i64 %.sroa.638.0, 0 - br i1 %126, label %.loopexit, label %.lr.ph.i24 - -.lr.ph.i24: ; preds = %116, %.lr.ph.i24 - %.sroa.03.06.i25 = phi i64 [ %134, %.lr.ph.i24 ], [ %.sroa.638.0, %116 ] - %.sroa.04.05.i26 = phi ptr [ %133, %.lr.ph.i24 ], [ %.sroa.037.0, %116 ] - %127 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i26, i64 274 - %128 = load i16, ptr %127, align 2, !noalias !261, !noundef !3 - %129 = zext nneg i16 %128 to i64 - %130 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i26, i64 280 - %131 = icmp ult i16 %128, 12 - call void @llvm.assume(i1 %131) - %132 = getelementptr inbounds nuw ptr, ptr %130, i64 %129 - %133 = load ptr, ptr %132, align 8, !noalias !264, !nonnull !3, !noundef !3 - %134 = add i64 %.sroa.03.06.i25, -1 - %135 = icmp eq i64 %134, 0 - br i1 %135, label %.loopexit, label %.lr.ph.i24 - -.loopexit: ; preds = %.lr.ph.i24, %116, %147 - %.sroa.0.1 = phi ptr [ %.sroa.0.053, %147 ], [ %.sroa.037.0, %116 ], [ %133, %.lr.ph.i24 ] - %136 = load i64, ptr %2, align 8, !noundef !3 - %137 = add i64 %136, 1 - store i64 %137, ptr %2, align 8 + %129 = icmp eq i64 %.sroa.639.0, 0 + br i1 %129, label %.loopexit, label %.lr.ph.i25 + +.lr.ph.i25: ; preds = %119, %.lr.ph.i25 + %.sroa.03.06.i26 = phi i64 [ %137, %.lr.ph.i24 ], [ %.sroa.639.0, %116 ] + %.sroa.04.05.i27 = phi ptr [ %136, %.lr.ph.i24 ], [ %.sroa.038.0, %116 ] + %130 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i27, i64 274 + %131 = load i16, ptr %130, align 2, !noalias !261, !noundef !3 + %132 = zext nneg i16 %131 to i64 + %133 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i27, i64 280 + %134 = icmp ult i16 %131, 12 + call void @llvm.assume(i1 %134) + %135 = getelementptr inbounds nuw ptr, ptr %133, i64 %132 + %136 = load ptr, ptr %135, align 8, !noalias !264, !nonnull !3, !noundef !3 + %137 = add i64 %.sroa.03.06.i26, -1 + %138 = icmp eq i64 %137, 0 + br i1 %138, label %.loopexit, label %.lr.ph.i25 + +.loopexit: ; preds = %.lr.ph.i25, %119, %150 + %.sroa.0.1 = phi ptr [ %.sroa.0.054, %147 ], [ %.sroa.038.0, %116 ], [ %136, %.lr.ph.i24 ] + %139 = load i64, ptr %2, align 8, !noundef !3 + %140 = add i64 %139, 1 + store i64 %140, ptr %2, align 8 call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %23 -.lr.ph: ; preds = %107, %_ZN5alloc11collections5btree3mem7replace17h1284baf35d371addE.exit32 - %.sroa.02.067 = phi i64 [ %143, %_ZN5alloc11collections5btree3mem7replace17h1284baf35d371addE.exit32 ], [ 0, %107 ] - %.sroa.043.065 = phi ptr [ %138, %_ZN5alloc11collections5btree3mem7replace17h1284baf35d371addE.exit32 ], [ %106, %107 ] - %138 = invoke noundef nonnull align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$13new_uninit_in17hf3b18689352489abE"() - to label %_ZN5alloc11collections5btree3mem7replace17h1284baf35d371addE.exit32 unwind label %139, !noalias !267 +.lr.ph: ; preds = %110, %_ZN5alloc11collections5btree3mem7replace17h1284baf35d371addE.exit33 + %.sroa.02.068 = phi i64 [ %146, %_ZN5alloc11collections5btree3mem7replace17h1284baf35d371addE.exit32 ], [ 0, %107 ] + %.sroa.044.066 = phi ptr [ %141, %_ZN5alloc11collections5btree3mem7replace17h1284baf35d371addE.exit32 ], [ %109, %107 ] + %141 = invoke noundef nonnull align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$13new_uninit_in17hf3b18689352489abE"() + to label %_ZN5alloc11collections5btree3mem7replace17h1284baf35d371addE.exit32 unwind label %142, !noalias !267 -139: ; preds = %.lr.ph - %140 = landingpad { ptr, i32 } +142: ; preds = %.lr.ph + %143 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17h12e693559be0c4e2E"(ptr noalias noundef nonnull align 1 %4) #16 - to label %152 unwind label %141, !noalias !267 + to label %152 unwind label %144, !noalias !267 -141: ; preds = %139 - %142 = landingpad { ptr, i32 } +144: ; preds = %142 + %145 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbadeae7294749c32E() #17, !noalias !267 unreachable -_ZN5alloc11collections5btree3mem7replace17h1284baf35d371addE.exit32: ; preds = %.lr.ph - %143 = add nuw i64 %.sroa.02.067, 1 - store ptr null, ptr %138, align 8, !noalias !267 - %144 = getelementptr inbounds nuw i8, ptr %138, i64 274 - store i16 0, ptr %144, align 2, !noalias !267 - %145 = getelementptr inbounds nuw i8, ptr %138, i64 280 - store ptr %.sroa.043.065, ptr %145, align 8, !noalias !267 - store ptr %138, ptr %.sroa.043.065, align 8, !noalias !270 - %146 = getelementptr inbounds nuw i8, ptr %.sroa.043.065, i64 272 - store i16 0, ptr %146, align 8, !noalias !277 - %exitcond.not = icmp eq i64 %143, %105 - br i1 %exitcond.not, label %.loopexit84, label %.lr.ph - -147: ; preds = %28 - %148 = zext nneg i16 %30 to i64 - %149 = add nuw nsw i16 %30, 1 - store i16 %149, ptr %29, align 2, !noalias !278 - %150 = getelementptr inbounds nuw i8, ptr %.sroa.0.053, i64 8 - %151 = getelementptr inbounds nuw { [3 x i64] }, ptr %150, i64 %148 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %151, ptr noundef nonnull align 8 dereferenceable(24) %8, i64 24, i1 false) +_ZN5alloc11collections5btree3mem7replace17h1284baf35d371addE.exit33: ; preds = %.lr.ph + %146 = add nuw i64 %.sroa.02.068, 1 + store ptr null, ptr %141, align 8, !noalias !267 + %147 = getelementptr inbounds nuw i8, ptr %141, i64 274 + store i16 0, ptr %147, align 2, !noalias !267 + %148 = getelementptr inbounds nuw i8, ptr %141, i64 280 + store ptr %.sroa.044.066, ptr %148, align 8, !noalias !267 + store ptr %141, ptr %.sroa.044.066, align 8, !noalias !270 + %149 = getelementptr inbounds nuw i8, ptr %.sroa.044.066, i64 272 + store i16 0, ptr %149, align 8, !noalias !277 + %exitcond.not = icmp eq i64 %146, %108 + br i1 %exitcond.not, label %.loopexit86, label %.lr.ph + +150: ; preds = %28 + %151 = zext nneg i16 %30 to i64 + %152 = add nuw nsw i16 %30, 1 + store i16 %152, ptr %29, align 2, !noalias !278 + %153 = getelementptr inbounds nuw i8, ptr %.sroa.0.054, i64 8 + %154 = getelementptr inbounds nuw { [3 x i64] }, ptr %153, i64 %151 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %154, ptr noundef nonnull align 8 dereferenceable(24) %8, i64 24, i1 false) br label %.loopexit -152: ; preds = %85, %96, %139 - %eh.lpad-body19.ph = phi { ptr, i32 } [ %86, %85 ], [ %97, %96 ], [ %140, %139 ] +155: ; preds = %88, %99, %142 + %eh.lpad-body20.ph = phi { ptr, i32 } [ %89, %85 ], [ %100, %96 ], [ %143, %139 ] invoke void @"_ZN4core3ptr57drop_in_place$LT$ruff_db..system..path..SystemPathBuf$GT$17h9ca0984b95b1da15E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %7) #16 - to label %.body unwind label %153 + to label %.body unwind label %156 -153: ; preds = %152, %.body - %154 = landingpad { ptr, i32 } +156: ; preds = %155, %.body + %157 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbadeae7294749c32E() #17 unreachable -155: ; preds = %.body +158: ; preds = %.body resume { ptr, i32 } %.pn } diff --git a/bench/ruff-rs/optimized/4a0sesc153a050u04do7llz00.ll b/bench/ruff-rs/optimized/4a0sesc153a050u04do7llz00.ll index 4f727b34352..aae5f1770ff 100644 --- a/bench/ruff-rs/optimized/4a0sesc153a050u04do7llz00.ll +++ b/bench/ruff-rs/optimized/4a0sesc153a050u04do7llz00.ll @@ -55076,23 +55076,23 @@ define internal fastcc void @_ZN11ruff_linter5rules26flake8_implicit_str_concat5 call void @llvm.lifetime.end.p0(ptr nonnull %14) br i1 %23, label %28, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit77" -"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit77": ; preds = %21 +24: ; preds = %21 %24 = getelementptr i8, ptr %16, i64 -2 %25 = load i8, ptr %24, align 1, !noundef !3 %26 = and i8 %25, -8 %27 = icmp eq i8 %26, 48 br i1 %27, label %35, label %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit.thread106" -28: ; preds = %21 +27: ; preds = %21 call void @llvm.lifetime.start.p0(ptr nonnull %13) %29 = add i64 %.sroa.2.0, -2 %30 = icmp eq i64 %29, 0 br i1 %30, label %59, label %31 -31: ; preds = %28 - %32 = getelementptr inbounds nuw i8, ptr %.sroa.019.0, i64 %29 - %33 = load i8, ptr %32, align 1, !alias.scope !6623, !noundef !3 - %34 = icmp sgt i8 %33, -65 +"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit77": ; preds = %28 + %31 = getelementptr inbounds nuw i8, ptr %.sroa.019.0, i64 %29 + %32 = load i8, ptr %31, align 1, !alias.scope !6623, !noundef !3 + %34 = icmp sgt i8 %32, -65 br i1 %34, label %59, label %66 35: ; preds = %"_ZN106_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..double_ended..DoubleEndedIterator$GT$9next_back17hb6395a744f824a91E.exit77" diff --git a/bench/ruff-rs/optimized/5k764i8zv3uxwobi5mx2hjj5g.ll b/bench/ruff-rs/optimized/5k764i8zv3uxwobi5mx2hjj5g.ll index 03488e70079..18a53d3917e 100644 --- a/bench/ruff-rs/optimized/5k764i8zv3uxwobi5mx2hjj5g.ll +++ b/bench/ruff-rs/optimized/5k764i8zv3uxwobi5mx2hjj5g.ll @@ -7979,9 +7979,9 @@ define internal fastcc noundef range(i64 0, 9223372036854775807) i64 @"_ZN7match %13 = add i32 %12, 1 store i32 %13, ptr %11, align 8 %.not18 = icmp eq i64 %1, 0 - br i1 %.not18, label %._crit_edge, label %.lr.ph + br i1 %.not18, label %._crit_edge, label %.lr.ph.preheader -.lr.ph: ; preds = %.split, %32 +.lr.ph.preheader: ; preds = %.split, %32 %.sroa.0.019 = phi i64 [ %14, %32 ], [ %1, %.split ] %14 = add nsw i64 %.sroa.0.019, -1 %15 = getelementptr inbounds nuw { { { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 } }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, { i32, [1 x i32] }, i32, i8, i8, [2 x i8] }, ptr %9, i64 %14 @@ -7990,14 +7990,14 @@ define internal fastcc noundef range(i64 0, 9223372036854775807) i64 @"_ZN7match %18 = icmp ult i32 %17, %13 br i1 %18, label %32, label %._crit_edge -._crit_edge: ; preds = %32, %.lr.ph, %.split +._crit_edge: ; preds = %35, %.lr.ph, %.split %.sroa.0.0.lcssa = phi i64 [ 0, %.split ], [ %.sroa.0.019, %.lr.ph ], [ 0, %32 ] %.not14 = icmp eq i64 %.sroa.0.0.lcssa, %1 - br i1 %.not14, label %31, label %19 + br i1 %.not14, label %34, label %19 -19: ; preds = %._crit_edge - %20 = getelementptr inbounds nuw i8, ptr %0, i64 56 - %21 = load ptr, ptr %20, align 8, !nonnull !3, !noundef !3 +16: ; preds = %._crit_edge + %17 = getelementptr inbounds nuw i8, ptr %0, i64 56 + %21 = load ptr, ptr %17, align 8, !nonnull !3, !noundef !3 %22 = getelementptr inbounds nuw i8, ptr %0, i64 64 %23 = load i64, ptr %22, align 8, !noundef !3 %24 = add nuw nsw i64 %1, 1 @@ -8012,25 +8012,25 @@ define internal fastcc noundef range(i64 0, 9223372036854775807) i64 @"_ZN7match tail call void @_ZN4core5slice5index22slice_index_order_fail17h753dc2b23292d7ecE(i64 noundef %.sroa.0.0.lcssa, i64 noundef range(i64 1, 0) %24, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.ab07cbd181e9ffbfcaa9350913085d13.398) #25, !noalias !568 unreachable -28: ; preds = %26 +22: ; preds = %26 tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h5b7964a60aa84510E(i64 noundef range(i64 1, 0) %24, i64 noundef %23, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.ab07cbd181e9ffbfcaa9350913085d13.398) #25, !noalias !568 unreachable "_ZN115_$LT$core..ops..range..RangeInclusive$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hbd52a60228849c3cE.exit": ; preds = %26 - %29 = sub nuw nsw i64 %24, %.sroa.0.0.lcssa - %30 = getelementptr inbounds nuw i8, ptr %21, i64 %.sroa.0.0.lcssa - tail call void @"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$12rotate_right17h3e2b81fb651284edE"(ptr noalias noundef nonnull align 1 %30, i64 noundef %29, i64 noundef 1) - br label %31 + %32 = sub nuw nsw i64 %24, %.sroa.0.0.lcssa + %33 = getelementptr inbounds nuw i8, ptr %21, i64 %.sroa.0.0.lcssa + tail call void @"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$12rotate_right17h3e2b81fb651284edE"(ptr noalias noundef nonnull align 1 %33, i64 noundef %32, i64 noundef 1) + br label %34 -31: ; preds = %._crit_edge, %"_ZN115_$LT$core..ops..range..RangeInclusive$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hbd52a60228849c3cE.exit" +34: ; preds = %._crit_edge, %"_ZN115_$LT$core..ops..range..RangeInclusive$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hbd52a60228849c3cE.exit" ret i64 %.sroa.0.0.lcssa -32: ; preds = %.lr.ph - %33 = getelementptr inbounds nuw { { { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 } }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, { i32, [1 x i32] }, i32, i8, i8, [2 x i8] }, ptr %9, i64 %.sroa.0.019 +35: ; preds = %.lr.ph + %36 = getelementptr inbounds nuw { { { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 } }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, { i32, [1 x i32] }, i32, i8, i8, [2 x i8] }, ptr %9, i64 %.sroa.0.019 call void @llvm.lifetime.start.p0(ptr nonnull %3) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(136) %3, ptr noundef nonnull align 8 dereferenceable(136) %15, i64 136, i1 false) - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(136) %15, ptr noundef nonnull align 8 dereferenceable(136) %33, i64 136, i1 false) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(136) %33, ptr noundef nonnull align 8 dereferenceable(136) %3, i64 136, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(136) %15, ptr noundef nonnull align 8 dereferenceable(136) %36, i64 136, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(136) %36, ptr noundef nonnull align 8 dereferenceable(136) %3, i64 136, i1 false) call void @llvm.lifetime.end.p0(ptr nonnull %3) %.not = icmp eq i64 %14, 0 br i1 %.not, label %._crit_edge, label %.lr.ph diff --git a/bench/ruff-rs/optimized/6gcc2sei0t3mzzmp63ppi5tol.ll b/bench/ruff-rs/optimized/6gcc2sei0t3mzzmp63ppi5tol.ll index afb9cbd074c..e881a4b519c 100644 --- a/bench/ruff-rs/optimized/6gcc2sei0t3mzzmp63ppi5tol.ll +++ b/bench/ruff-rs/optimized/6gcc2sei0t3mzzmp63ppi5tol.ll @@ -7174,9 +7174,9 @@ define internal fastcc noundef range(i64 0, 9223372036854775807) i64 @"_ZN7match %13 = add i32 %12, 1 store i32 %13, ptr %11, align 8 %.not18 = icmp eq i64 %1, 0 - br i1 %.not18, label %._crit_edge, label %.lr.ph + br i1 %.not18, label %._crit_edge, label %.lr.ph.preheader -.lr.ph: ; preds = %.split, %32 +.lr.ph.preheader: ; preds = %.split, %32 %.sroa.0.019 = phi i64 [ %14, %32 ], [ %1, %.split ] %14 = add nsw i64 %.sroa.0.019, -1 %15 = getelementptr inbounds nuw { { i64, [1 x i64] }, { { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 } }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, i32, i8, i8, [2 x i8] }, ptr %9, i64 %14 @@ -7188,44 +7188,44 @@ define internal fastcc noundef range(i64 0, 9223372036854775807) i64 @"_ZN7match ._crit_edge: ; preds = %32, %.lr.ph, %.split %.sroa.0.0.lcssa = phi i64 [ 0, %.split ], [ %.sroa.0.019, %.lr.ph ], [ 0, %32 ] %.not14 = icmp eq i64 %.sroa.0.0.lcssa, %1 - br i1 %.not14, label %31, label %19 + br i1 %.not14, label %34, label %21 -19: ; preds = %._crit_edge +21: ; preds = %._crit_edge %20 = getelementptr inbounds nuw i8, ptr %0, i64 72 %21 = load ptr, ptr %20, align 8, !nonnull !3, !noundef !3 %22 = getelementptr inbounds nuw i8, ptr %0, i64 80 %23 = load i64, ptr %22, align 8, !noundef !3 %24 = add nuw nsw i64 %1, 1 %25 = icmp ult i64 %24, %.sroa.0.0.lcssa - br i1 %25, label %27, label %26, !prof !4 + br i1 %25, label %30, label %26, !prof !4 -26: ; preds = %19 +29: ; preds = %21 %.not.i = icmp ult i64 %1, %23 - br i1 %.not.i, label %"_ZN115_$LT$core..ops..range..RangeInclusive$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h3771934e11456b61E.exit", label %28, !prof !32 + br i1 %.not.i, label %"_ZN115_$LT$core..ops..range..RangeInclusive$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h3771934e11456b61E.exit", label %31, !prof !32 -27: ; preds = %19 +30: ; preds = %21 tail call void @_ZN4core5slice5index22slice_index_order_fail17h753dc2b23292d7ecE(i64 noundef %.sroa.0.0.lcssa, i64 noundef range(i64 1, 0) %24, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.1ef2000cb91be5a0adc7361c6504f42e.111) #20, !noalias !393 unreachable -28: ; preds = %26 +31: ; preds = %29 tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h5b7964a60aa84510E(i64 noundef range(i64 1, 0) %24, i64 noundef %23, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.1ef2000cb91be5a0adc7361c6504f42e.111) #20, !noalias !393 unreachable -"_ZN115_$LT$core..ops..range..RangeInclusive$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h3771934e11456b61E.exit": ; preds = %26 - %29 = sub nuw nsw i64 %24, %.sroa.0.0.lcssa - %30 = getelementptr inbounds nuw i8, ptr %21, i64 %.sroa.0.0.lcssa - tail call void @"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$12rotate_right17h938f13c02e9e2c96E"(ptr noalias noundef nonnull align 1 %30, i64 noundef %29, i64 noundef 1) - br label %31 +"_ZN115_$LT$core..ops..range..RangeInclusive$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h3771934e11456b61E.exit": ; preds = %29 + %32 = sub nuw nsw i64 %24, %.sroa.0.0.lcssa + %33 = getelementptr inbounds nuw i8, ptr %21, i64 %.sroa.0.0.lcssa + tail call void @"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$12rotate_right17h938f13c02e9e2c96E"(ptr noalias noundef nonnull align 1 %33, i64 noundef %32, i64 noundef 1) + br label %34 -31: ; preds = %._crit_edge, %"_ZN115_$LT$core..ops..range..RangeInclusive$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h3771934e11456b61E.exit" +34: ; preds = %._crit_edge, %"_ZN115_$LT$core..ops..range..RangeInclusive$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h3771934e11456b61E.exit" ret i64 %.sroa.0.0.lcssa -32: ; preds = %.lr.ph - %33 = getelementptr inbounds nuw { { i64, [1 x i64] }, { { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 } }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, i32, i8, i8, [2 x i8] }, ptr %9, i64 %.sroa.0.019 +35: ; preds = %.lr.ph + %36 = getelementptr inbounds nuw { { i64, [1 x i64] }, { { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 } }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, i32, i8, i8, [2 x i8] }, ptr %9, i64 %.sroa.0.019 call void @llvm.lifetime.start.p0(ptr nonnull %3) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(144) %3, ptr noundef nonnull align 8 dereferenceable(144) %15, i64 144, i1 false) - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(144) %15, ptr noundef nonnull align 8 dereferenceable(144) %33, i64 144, i1 false) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(144) %33, ptr noundef nonnull align 8 dereferenceable(144) %3, i64 144, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(144) %15, ptr noundef nonnull align 8 dereferenceable(144) %36, i64 144, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(144) %36, ptr noundef nonnull align 8 dereferenceable(144) %3, i64 144, i1 false) call void @llvm.lifetime.end.p0(ptr nonnull %3) %.not = icmp eq i64 %14, 0 br i1 %.not, label %._crit_edge, label %.lr.ph @@ -7252,9 +7252,9 @@ define internal fastcc noundef range(i64 0, 9223372036854775807) i64 @"_ZN7match %13 = add i32 %12, 1 store i32 %13, ptr %11, align 8 %.not18 = icmp eq i64 %1, 0 - br i1 %.not18, label %._crit_edge, label %.lr.ph + br i1 %.not18, label %._crit_edge, label %.lr.ph.preheader -.lr.ph: ; preds = %.split, %32 +.lr.ph.preheader: ; preds = %.split, %32 %.sroa.0.019 = phi i64 [ %14, %32 ], [ %1, %.split ] %14 = add nsw i64 %.sroa.0.019, -1 %15 = getelementptr inbounds nuw { { i64, [2 x i64] }, { { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 } }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, i32, i8, i8, [2 x i8] }, ptr %9, i64 %14 @@ -7266,44 +7266,44 @@ define internal fastcc noundef range(i64 0, 9223372036854775807) i64 @"_ZN7match ._crit_edge: ; preds = %32, %.lr.ph, %.split %.sroa.0.0.lcssa = phi i64 [ 0, %.split ], [ %.sroa.0.019, %.lr.ph ], [ 0, %32 ] %.not14 = icmp eq i64 %.sroa.0.0.lcssa, %1 - br i1 %.not14, label %31, label %19 + br i1 %.not14, label %34, label %21 -19: ; preds = %._crit_edge +21: ; preds = %._crit_edge %20 = getelementptr inbounds nuw i8, ptr %0, i64 80 %21 = load ptr, ptr %20, align 8, !nonnull !3, !noundef !3 %22 = getelementptr inbounds nuw i8, ptr %0, i64 88 %23 = load i64, ptr %22, align 8, !noundef !3 %24 = add nuw nsw i64 %1, 1 %25 = icmp ult i64 %24, %.sroa.0.0.lcssa - br i1 %25, label %27, label %26, !prof !4 + br i1 %25, label %30, label %26, !prof !4 -26: ; preds = %19 +29: ; preds = %21 %.not.i = icmp ult i64 %1, %23 - br i1 %.not.i, label %"_ZN115_$LT$core..ops..range..RangeInclusive$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h3771934e11456b61E.exit", label %28, !prof !32 + br i1 %.not.i, label %"_ZN115_$LT$core..ops..range..RangeInclusive$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h3771934e11456b61E.exit", label %31, !prof !32 -27: ; preds = %19 +30: ; preds = %21 tail call void @_ZN4core5slice5index22slice_index_order_fail17h753dc2b23292d7ecE(i64 noundef %.sroa.0.0.lcssa, i64 noundef range(i64 1, 0) %24, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.1ef2000cb91be5a0adc7361c6504f42e.111) #20, !noalias !399 unreachable -28: ; preds = %26 +31: ; preds = %29 tail call void @_ZN4core5slice5index24slice_end_index_len_fail17h5b7964a60aa84510E(i64 noundef range(i64 1, 0) %24, i64 noundef %23, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.1ef2000cb91be5a0adc7361c6504f42e.111) #20, !noalias !399 unreachable -"_ZN115_$LT$core..ops..range..RangeInclusive$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h3771934e11456b61E.exit": ; preds = %26 - %29 = sub nuw nsw i64 %24, %.sroa.0.0.lcssa - %30 = getelementptr inbounds nuw i8, ptr %21, i64 %.sroa.0.0.lcssa - tail call void @"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$12rotate_right17h938f13c02e9e2c96E"(ptr noalias noundef nonnull align 1 %30, i64 noundef %29, i64 noundef 1) - br label %31 +"_ZN115_$LT$core..ops..range..RangeInclusive$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h3771934e11456b61E.exit": ; preds = %29 + %32 = sub nuw nsw i64 %24, %.sroa.0.0.lcssa + %33 = getelementptr inbounds nuw i8, ptr %21, i64 %.sroa.0.0.lcssa + tail call void @"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$12rotate_right17h938f13c02e9e2c96E"(ptr noalias noundef nonnull align 1 %33, i64 noundef %32, i64 noundef 1) + br label %34 -31: ; preds = %._crit_edge, %"_ZN115_$LT$core..ops..range..RangeInclusive$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h3771934e11456b61E.exit" +34: ; preds = %._crit_edge, %"_ZN115_$LT$core..ops..range..RangeInclusive$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17h3771934e11456b61E.exit" ret i64 %.sroa.0.0.lcssa -32: ; preds = %.lr.ph - %33 = getelementptr inbounds nuw { { i64, [2 x i64] }, { { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 } }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, i32, i8, i8, [2 x i8] }, ptr %9, i64 %.sroa.0.019 +35: ; preds = %.lr.ph + %36 = getelementptr inbounds nuw { { i64, [2 x i64] }, { { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 } }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, { { { i64, ptr, {} }, {} }, i64 }, i32, i8, i8, [2 x i8] }, ptr %9, i64 %.sroa.0.019 call void @llvm.lifetime.start.p0(ptr nonnull %3) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(152) %3, ptr noundef nonnull align 8 dereferenceable(152) %15, i64 152, i1 false) - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(152) %15, ptr noundef nonnull align 8 dereferenceable(152) %33, i64 152, i1 false) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(152) %33, ptr noundef nonnull align 8 dereferenceable(152) %3, i64 152, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(152) %15, ptr noundef nonnull align 8 dereferenceable(152) %36, i64 152, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(152) %36, ptr noundef nonnull align 8 dereferenceable(152) %3, i64 152, i1 false) call void @llvm.lifetime.end.p0(ptr nonnull %3) %.not = icmp eq i64 %14, 0 br i1 %.not, label %._crit_edge, label %.lr.ph diff --git a/bench/rust-analyzer-rs/optimized/4hdqg9y9agw1ekve.ll b/bench/rust-analyzer-rs/optimized/4hdqg9y9agw1ekve.ll index 0d7f7aa9fb2..822c70b0626 100644 --- a/bench/rust-analyzer-rs/optimized/4hdqg9y9agw1ekve.ll +++ b/bench/rust-analyzer-rs/optimized/4hdqg9y9agw1ekve.ll @@ -50987,15 +50987,15 @@ _ZN11ide_assists8handlers16extract_function8Function11type_params17h1ea059bfa2ec br label %925 921: ; preds = %899 - %.pre28.i.i.i = extractvalue { i64, ptr } %900, 0 + %.pre.i.i.i = extractvalue { i64, ptr } %900, 0 %922 = extractvalue { i64, ptr } %900, 1 %923 = getelementptr inbounds nuw i8, ptr %30, i64 8 - store i64 %.pre28.i.i.i, ptr %30, align 8, !alias.scope !13284, !noalias !13334 + store i64 %.pre.i.i.i, ptr %30, align 8, !alias.scope !13284, !noalias !13334 store ptr %922, ptr %923, align 8, !alias.scope !13284, !noalias !13334 - %924 = icmp ne i64 %.pre28.i.i.i, 4 + %924 = icmp ne i64 %.pre.i.i.i, 4 call void @llvm.assume(i1 %924) - %.not.i.i37 = icmp eq i64 %.pre28.i.i.i, 3 - br i1 %.not.i.i37, label %.thread13.i.i, label %925 + %.not.i.i37 = icmp eq i64 %.pre.i.i.i, 3 + br i1 %.not.i.i37, label %.thread12.i.i, label %925 925: ; preds = %921, %.thread.i.i35 call void @llvm.lifetime.start.p0(ptr nonnull %29), !noalias !13281 @@ -51007,7 +51007,7 @@ _ZN11ide_assists8handlers16extract_function8Function11type_params17h1ea059bfa2ec call void @llvm.lifetime.end.p0(ptr nonnull %29), !noalias !13281 br label %931 -.thread13.i.i: ; preds = %921 +.thread12.i.i: ; preds = %921 invoke void @"_ZN4core3ptr536drop_in_place$LT$core..iter..adapters..peekable..Peekable$LT$core..iter..adapters..flatten..FlatMap$LT$core..slice..iter..Iter$LT$syntax..ast..generated..nodes..GenericParamList$GT$$C$core..iter..adapters..filter..Filter$LT$syntax..ast..AstChildren$LT$syntax..ast..generated..nodes..GenericParam$GT$$C$ide_assists..handlers..extract_function..make_generic_param_list..$u7b$$u7b$closure$u7d$$u7d$..$u7b$$u7b$closure$u7d$$u7d$$GT$$C$ide_assists..handlers..extract_function..make_generic_param_list..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17hff74da53cbd430acE"(ptr noalias noundef nonnull align 8 dereferenceable(120) %30) to label %931 unwind label %929 @@ -51027,13 +51027,13 @@ _ZN11ide_assists8handlers16extract_function8Function11type_params17h1ea059bfa2ec invoke void @"_ZN4core3ptr58drop_in_place$LT$alloc..vec..Vec$LT$hir..TypeParam$GT$$GT$17h85a822237cf56c91E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %32) #46 to label %.body45.thread unwind label %987 -929: ; preds = %.thread13.i.i, %925 +929: ; preds = %.thread12.i.i, %925 %930 = landingpad { ptr, i32 } cleanup br label %.body.i33 -931: ; preds = %.thread13.i.i, %.noexc.i36 - %.016.i.i = phi ptr [ %926, %.noexc.i36 ], [ null, %.thread13.i.i ] +931: ; preds = %.thread12.i.i, %.noexc.i36 + %.015.i.i = phi ptr [ %926, %.noexc.i36 ], [ null, %.thread13.i.i ] call void @llvm.lifetime.end.p0(ptr nonnull %30), !noalias !13281 %932 = load ptr, ptr %884, align 8, !noalias !13249, !nonnull !23, !noundef !23 %933 = load i64, ptr %886, align 8, !noalias !13249, !noundef !23 @@ -51191,11 +51191,11 @@ _ZN11ide_assists8handlers16extract_function8Function11type_params17h1ea059bfa2ec .body37.i: ; preds = %969, %.body.thread5.i23.i %eh.lpad-body38.i = phi { ptr, i32 } [ %970, %969 ], [ %eh.lpad-body4.i24.i, %.body.thread5.i23.i ] - %971 = icmp eq ptr %.016.i.i, null + %971 = icmp eq ptr %.015.i.i, null br i1 %971, label %.body.i33, label %972 972: ; preds = %.body37.i - %973 = getelementptr inbounds nuw i8, ptr %.016.i.i, i64 48 + %973 = getelementptr inbounds nuw i8, ptr %.015.i.i, i64 48 %974 = load i32, ptr %973, align 4, !noalias !13389, !noundef !23 %975 = add i32 %974, -1 store i32 %975, ptr %973, align 4, !noalias !13389 @@ -51203,7 +51203,7 @@ _ZN11ide_assists8handlers16extract_function8Function11type_params17h1ea059bfa2ec br i1 %976, label %977, label %.body.i33 977: ; preds = %972 - invoke void @_ZN5rowan6cursor4free17ha2e1b2c8c83f79d6E(ptr noundef nonnull %.016.i.i) + invoke void @_ZN5rowan6cursor4free17ha2e1b2c8c83f79d6E(ptr noundef nonnull %.015.i.i) to label %.body.i33 unwind label %987 978: ; preds = %966, %.noexc35.i @@ -51253,7 +51253,7 @@ _ZN11ide_assists8handlers16extract_function8Function11type_params17h1ea059bfa2ec %996 = getelementptr inbounds nuw i8, ptr %2, i64 81 %997 = load i8, ptr %996, align 1, !range !665, !noundef !23 %998 = trunc nuw i8 %997 to i1 - %999 = call noundef nonnull ptr @_ZN6syntax3ast4make3fn_17haa67e8388b0fcbffE(ptr noundef null, ptr noundef nonnull %85, ptr noundef %.016.i.i, ptr noundef %.09.i.i, ptr noundef nonnull %111, ptr noundef nonnull %.0217.i, ptr noundef %.0.i, i1 noundef zeroext %992, i1 noundef zeroext %995, i1 noundef zeroext %998) + %999 = call noundef nonnull ptr @_ZN6syntax3ast4make3fn_17haa67e8388b0fcbffE(ptr noundef null, ptr noundef nonnull %85, ptr noundef %.015.i.i, ptr noundef %.09.i.i, ptr noundef nonnull %111, ptr noundef nonnull %.0217.i, ptr noundef %.0.i, i1 noundef zeroext %992, i1 noundef zeroext %995, i1 noundef zeroext %998) ret ptr %999 .body45.thread: ; preds = %.body.i33, %.body45.thread89 diff --git a/bench/rust-analyzer-rs/optimized/4mz36mxu8r0g7zqk.ll b/bench/rust-analyzer-rs/optimized/4mz36mxu8r0g7zqk.ll index e6aaae2c139..49e27fc1509 100644 --- a/bench/rust-analyzer-rs/optimized/4mz36mxu8r0g7zqk.ll +++ b/bench/rust-analyzer-rs/optimized/4mz36mxu8r0g7zqk.ll @@ -3828,7 +3828,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %11 = load i64, ptr %10, align 8, !noundef !21 %12 = load ptr, ptr %0, align 8, !nonnull !21, !noundef !21 %.not16.i = icmp eq i64 %11, 0 - br i1 %.not16.i, label %.loopexit94, label %.lr.ph.i + br i1 %.not16.i, label %.loopexit95, label %.lr.ph.i .lr.ph.i: ; preds = %3, %.lr.ph.i %.018.i = phi ptr [ %19, %.lr.ph.i ], [ %12, %3 ] @@ -3843,28 +3843,28 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %19 = load ptr, ptr %18, align 8, !noalias !1283, !nonnull !21, !noundef !21 %20 = add i64 %.01517.i, -1 %.not.i = icmp eq i64 %20, 0 - br i1 %.not.i, label %.loopexit94, label %.lr.ph.i + br i1 %.not.i, label %.loopexit95, label %.lr.ph.i -.loopexit94: ; preds = %.lr.ph.i, %3 +.loopexit95: ; preds = %.lr.ph.i, %3 %.0.lcssa.i = phi ptr [ %12, %3 ], [ %19, %.lr.ph.i ] call void @llvm.lifetime.start.p0(ptr nonnull %9) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %9, ptr noundef nonnull align 8 dereferenceable(56) %1, i64 56, i1 false) br label %21 -21: ; preds = %.loopexit, %.loopexit94 +21: ; preds = %.loopexit, %.loopexit95 %.sroa.0.0 = phi ptr [ %.0.lcssa.i, %.loopexit94 ], [ %.sroa.0.1, %.loopexit ] invoke void @"_ZN137_$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$K$C$V$C$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hf77e4b51dcd35b24E"(ptr noalias noundef nonnull sret({ i64, [2 x i64] }) align 8 captures(none) dereferenceable(24) %8, ptr noalias noundef nonnull align 8 dereferenceable(56) %9) to label %24 unwind label %22 -.body34: ; preds = %124, %163, %22 - %.pn = phi { ptr, i32 } [ %eh.lpad-body38.ph, %163 ], [ %23, %22 ], [ %125, %124 ] +.body35: ; preds = %127, %166, %22 + %.pn = phi { ptr, i32 } [ %eh.lpad-body39.ph, %163 ], [ %23, %22 ], [ %128, %124 ] invoke void @"_ZN4core3ptr447drop_in_place$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$alloc..string..String$C$alloc..collections..btree..set_val..SetValZST$C$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$alloc..string..String$GT$$C$alloc..collections..btree..set..BTreeSet$LT$alloc..string..String$GT$..from_sorted_iter$LT$alloc..vec..into_iter..IntoIter$LT$alloc..string..String$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17he2f737b4e6bf956aE"(ptr noalias noundef nonnull align 8 dereferenceable(56) %9) #50 - to label %.body unwind label %164 + to label %.body unwind label %167 22: ; preds = %21 %23 = landingpad { ptr, i32 } cleanup - br label %.body34 + br label %.body35 24: ; preds = %21 %25 = load i64, ptr %8, align 8, !range !127, !noundef !21 @@ -3925,7 +3925,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %43 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 274 %44 = load i16, ptr %43, align 2, !noundef !21 %45 = icmp ult i16 %44, 11 - br i1 %45, label %158, label %.preheader + br i1 %45, label %161, label %.preheader "_ZN4core3ptr447drop_in_place$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$alloc..string..String$C$alloc..collections..btree..set_val..SetValZST$C$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$alloc..string..String$GT$$C$alloc..collections..btree..set..BTreeSet$LT$alloc..string..String$GT$..from_sorted_iter$LT$alloc..vec..into_iter..IntoIter$LT$alloc..string..String$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17he2f737b4e6bf956aE.exit": ; preds = %"_ZN4core3ptr98drop_in_place$LT$$LP$alloc..string..String$C$alloc..collections..btree..set_val..SetValZST$RP$$GT$17h7a5fab4ebcb44e09E.llvm.273501356006530532.exit.i.i.i.i", %"_ZN4core3ptr306drop_in_place$LT$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$alloc..string..String$GT$$C$alloc..collections..btree..set..BTreeSet$LT$alloc..string..String$GT$..from_sorted_iter$LT$alloc..vec..into_iter..IntoIter$LT$alloc..string..String$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17h7dcc32cf8e649ee1E.exit.i.i" call void @llvm.lifetime.end.p0(ptr nonnull %9) @@ -3965,7 +3965,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %59 = icmp ult i16 %58, 5 br i1 %59, label %60, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h84e0ce90d91ff590E.exit.i" -"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h84e0ce90d91ff590E.exit.i": ; preds = %88, %"_ZN5alloc11collections5btree4node40NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$7last_kv17ha622e161725458d6E.exit.i" +"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h84e0ce90d91ff590E.exit.i": ; preds = %91, %"_ZN5alloc11collections5btree4node40NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$7last_kv17ha622e161725458d6E.exit.i" %.not.i31 = icmp eq i64 %53, 0 br i1 %.not.i31, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17hd47b80ca75df3838E.exit", label %.lr.ph.i30 @@ -4004,283 +4004,283 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. call void @llvm.lifetime.start.p0(ptr nonnull %.sroa.018.i.i) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.018.i.i, ptr noundef nonnull align 8 dereferenceable(24) %79, i64 24, i1 false), !noalias !1317 call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %79, ptr noundef nonnull align 8 dereferenceable(24) %77, i64 24, i1 false), !noalias !1317 - %80 = getelementptr inbounds nuw { [3 x i64] }, ptr %69, i64 %73 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %80, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.018.i.i, i64 24, i1 false), !noalias !1317 + %83 = getelementptr inbounds nuw { [3 x i64] }, ptr %69, i64 %73 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %83, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.018.i.i, i64 24, i1 false), !noalias !1317 call void @llvm.lifetime.end.p0(ptr nonnull %.sroa.018.i.i) %cond.i = icmp eq i64 %53, 0 br i1 %cond.i, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17hd47b80ca75df3838E.exit", label %_ZN5alloc11collections5btree4node13move_to_slice17heb9dcb63b14c984bE.exit.i.i _ZN5alloc11collections5btree4node13move_to_slice17heb9dcb63b14c984bE.exit.i.i: ; preds = %65 - %81 = getelementptr inbounds nuw i8, ptr %56, i64 280 - %82 = getelementptr inbounds nuw ptr, ptr %81, i64 %61 - %83 = shl nuw nsw i64 %64, 3 - %84 = add nuw nsw i64 %83, 8 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %82, ptr noundef nonnull align 8 dereferenceable(1) %81, i64 %84, i1 false), !noalias !1317 - %85 = getelementptr inbounds nuw i8, ptr %52, i64 280 - %86 = getelementptr inbounds nuw ptr, ptr %85, i64 %72 - %87 = shl nuw nsw i64 %61, 3 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %81, ptr noundef nonnull readonly align 8 dereferenceable(1) %86, i64 %87, i1 false), !alias.scope !1324, !noalias !1317 - br label %88 - -88: ; preds = %88, %_ZN5alloc11collections5btree4node13move_to_slice17heb9dcb63b14c984bE.exit.i.i - %.sroa.0.05.i.i.i = phi i64 [ 0, %_ZN5alloc11collections5btree4node13move_to_slice17heb9dcb63b14c984bE.exit.i.i ], [ %89, %88 ] - %89 = add nuw nsw i64 %.sroa.0.05.i.i.i, 1 - %90 = getelementptr inbounds nuw ptr, ptr %81, i64 %.sroa.0.05.i.i.i - %91 = load ptr, ptr %90, align 8, !noalias !1317, !nonnull !21, !noundef !21 - store ptr %56, ptr %91, align 8, !noalias !1317 - %92 = trunc nuw nsw i64 %.sroa.0.05.i.i.i to i16 - %93 = getelementptr inbounds nuw i8, ptr %91, i64 272 - store i16 %92, ptr %93, align 8, !noalias !1317 + %84 = getelementptr inbounds nuw i8, ptr %56, i64 280 + %85 = getelementptr inbounds nuw ptr, ptr %84, i64 %61 + %86 = shl nuw nsw i64 %64, 3 + %87 = add nuw nsw i64 %86, 8 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %85, ptr noundef nonnull align 8 dereferenceable(1) %84, i64 %87, i1 false), !noalias !1317 + %88 = getelementptr inbounds nuw i8, ptr %52, i64 280 + %89 = getelementptr inbounds nuw ptr, ptr %88, i64 %72 + %90 = shl nuw nsw i64 %61, 3 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %84, ptr noundef nonnull readonly align 8 dereferenceable(1) %89, i64 %90, i1 false), !alias.scope !1324, !noalias !1317 + br label %91 + +91: ; preds = %91, %_ZN5alloc11collections5btree4node13move_to_slice17heb9dcb63b14c984bE.exit.i.i + %.sroa.0.05.i.i.i = phi i64 [ 0, %_ZN5alloc11collections5btree4node13move_to_slice17heb9dcb63b14c984bE.exit.i.i ], [ %92, %88 ] + %92 = add nuw nsw i64 %.sroa.0.05.i.i.i, 1 + %93 = getelementptr inbounds nuw ptr, ptr %84, i64 %.sroa.0.05.i.i.i + %94 = load ptr, ptr %93, align 8, !noalias !1317, !nonnull !21, !noundef !21 + store ptr %56, ptr %94, align 8, !noalias !1317 + %95 = trunc nuw nsw i64 %.sroa.0.05.i.i.i to i16 + %96 = getelementptr inbounds nuw i8, ptr %94, i64 272 + store i16 %95, ptr %96, align 8, !noalias !1317 %exitcond.not.i.i.i = icmp eq i64 %.sroa.0.05.i.i.i, 5 - br i1 %exitcond.not.i.i.i, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h84e0ce90d91ff590E.exit.i", label %88 + br i1 %exitcond.not.i.i.i, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h84e0ce90d91ff590E.exit.i", label %91 "_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17hd47b80ca75df3838E.exit": ; preds = %65, %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h84e0ce90d91ff590E.exit.i", %"_ZN4core3ptr447drop_in_place$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$alloc..string..String$C$alloc..collections..btree..set_val..SetValZST$C$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$alloc..string..String$GT$$C$alloc..collections..btree..set..BTreeSet$LT$alloc..string..String$GT$..from_sorted_iter$LT$alloc..vec..into_iter..IntoIter$LT$alloc..string..String$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17he2f737b4e6bf956aE.exit" ret void -.preheader: ; preds = %42, %96 - %.sroa.5.0 = phi i64 [ %97, %96 ], [ 0, %42 ] - %.sroa.02.0 = phi ptr [ %94, %96 ], [ %.sroa.0.0, %42 ] - %94 = load ptr, ptr %.sroa.02.0, align 8, !noalias !1328, !noundef !21 - %95 = icmp eq ptr %94, null - br i1 %95, label %101, label %96 +.preheader: ; preds = %42, %99 + %.sroa.5.0 = phi i64 [ %100, %96 ], [ 0, %42 ] + %.sroa.02.0 = phi ptr [ %97, %96 ], [ %.sroa.0.0, %42 ] + %97 = load ptr, ptr %.sroa.02.0, align 8, !noalias !1328, !noundef !21 + %98 = icmp eq ptr %97, null + br i1 %98, label %104, label %99 -.loopexit89: ; preds = %.loopexit83 - %lpad.loopexit91 = landingpad { ptr, i32 } +.loopexit90: ; preds = %.loopexit84 + %lpad.loopexit92 = landingpad { ptr, i32 } cleanup - br label %163 + br label %166 -.loopexit.split-lp90: ; preds = %118 - %lpad.loopexit.split-lp92 = landingpad { ptr, i32 } +.loopexit.split-lp91: ; preds = %121 + %lpad.loopexit.split-lp93 = landingpad { ptr, i32 } cleanup - br label %163 + br label %166 -96: ; preds = %.preheader - %97 = add i64 %.sroa.5.0, 1 - %98 = getelementptr inbounds nuw i8, ptr %94, i64 274 - %99 = load i16, ptr %98, align 2, !noundef !21 - %100 = icmp ult i16 %99, 11 - br i1 %100, label %.loopexit83, label %.preheader +99: ; preds = %.preheader + %100 = add i64 %.sroa.5.0, 1 + %101 = getelementptr inbounds nuw i8, ptr %97, i64 274 + %102 = load i16, ptr %101, align 2, !noundef !21 + %103 = icmp ult i16 %102, 11 + br i1 %103, label %.loopexit84, label %.preheader -101: ; preds = %.preheader +104: ; preds = %.preheader call void @llvm.experimental.noalias.scope.decl(metadata !1331) - %102 = load ptr, ptr %0, align 8, !alias.scope !1331, !nonnull !21, !noundef !21 - %103 = load i64, ptr %10, align 8, !alias.scope !1331, !noundef !21 - %104 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17hdcae3c5a5b57ca29E.llvm.2875332049115192089"() - to label %.noexc.i unwind label %.loopexit84, !noalias !1331 + %105 = load ptr, ptr %0, align 8, !alias.scope !1331, !nonnull !21, !noundef !21 + %106 = load i64, ptr %10, align 8, !alias.scope !1331, !noundef !21 + %107 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17hdcae3c5a5b57ca29E.llvm.2875332049115192089"() + to label %.noexc.i unwind label %.loopexit85, !noalias !1331 -.noexc.i: ; preds = %101 - %105 = icmp eq ptr %104, null - br i1 %105, label %106, label %110 +.noexc.i: ; preds = %104 + %108 = icmp eq ptr %107, null + br i1 %108, label %109, label %113 -106: ; preds = %.noexc.i +109: ; preds = %.noexc.i invoke void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef 8, i64 noundef 376) #51 - to label %.noexc3.i unwind label %.loopexit.split-lp85, !noalias !1331 + to label %.noexc3.i unwind label %.loopexit.split-lp86, !noalias !1331 -.noexc3.i: ; preds = %106 +.noexc3.i: ; preds = %109 unreachable -.loopexit84: ; preds = %101 - %lpad.loopexit86 = landingpad { ptr, i32 } +.loopexit85: ; preds = %104 + %lpad.loopexit87 = landingpad { ptr, i32 } cleanup - br label %107 + br label %110 -.loopexit.split-lp85: ; preds = %106 - %lpad.loopexit.split-lp87 = landingpad { ptr, i32 } +.loopexit.split-lp86: ; preds = %109 + %lpad.loopexit.split-lp88 = landingpad { ptr, i32 } cleanup - br label %107 + br label %110 -107: ; preds = %.loopexit.split-lp85, %.loopexit84 - %lpad.phi88 = phi { ptr, i32 } [ %lpad.loopexit86, %.loopexit84 ], [ %lpad.loopexit.split-lp87, %.loopexit.split-lp85 ] +110: ; preds = %.loopexit.split-lp86, %.loopexit85 + %lpad.phi89 = phi { ptr, i32 } [ %lpad.loopexit87, %.loopexit84 ], [ %lpad.loopexit.split-lp88, %.loopexit.split-lp85 ] invoke void @"_ZN93_$LT$alloc..collections..btree..mem..replace..PanicGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17he7f40e69e6f26b83E"(ptr noalias noundef nonnull align 1 %4) - to label %163 unwind label %108, !noalias !1331 + to label %163 unwind label %111, !noalias !1331 -108: ; preds = %107 - %109 = landingpad { ptr, i32 } +111: ; preds = %110 + %112 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #48, !noalias !1331 unreachable -110: ; preds = %.noexc.i - store ptr null, ptr %104, align 8, !noalias !1331 - %111 = getelementptr inbounds nuw i8, ptr %104, i64 274 - store i16 0, ptr %111, align 2, !noalias !1331 - %112 = getelementptr inbounds nuw i8, ptr %104, i64 280 - store ptr %102, ptr %112, align 8, !noalias !1331 - %113 = add i64 %103, 1 - store ptr %104, ptr %102, align 8, !noalias !1334 - %114 = getelementptr inbounds nuw i8, ptr %102, i64 272 - store i16 0, ptr %114, align 8, !noalias !1339 - store ptr %104, ptr %0, align 8, !alias.scope !1331 - store i64 %113, ptr %10, align 8, !alias.scope !1331 - br label %.loopexit83 - -.loopexit83: ; preds = %96, %110 - %.sroa.061.0 = phi ptr [ %104, %110 ], [ %94, %96 ] - %.sroa.662.0 = phi i64 [ %113, %110 ], [ %97, %96 ] - %115 = add i64 %.sroa.662.0, -1 - %116 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h3db4fe9f58fcf8caE.llvm.2875332049115192089"() - to label %.noexc39 unwind label %.loopexit89 - -.noexc39: ; preds = %.loopexit83 - %117 = icmp eq ptr %116, null - br i1 %117, label %118, label %119 - -118: ; preds = %.noexc39 +113: ; preds = %.noexc.i + store ptr null, ptr %107, align 8, !noalias !1331 + %114 = getelementptr inbounds nuw i8, ptr %107, i64 274 + store i16 0, ptr %114, align 2, !noalias !1331 + %115 = getelementptr inbounds nuw i8, ptr %107, i64 280 + store ptr %105, ptr %115, align 8, !noalias !1331 + %116 = add i64 %106, 1 + store ptr %107, ptr %105, align 8, !noalias !1334 + %117 = getelementptr inbounds nuw i8, ptr %105, i64 272 + store i16 0, ptr %117, align 8, !noalias !1339 + store ptr %107, ptr %0, align 8, !alias.scope !1331 + store i64 %116, ptr %10, align 8, !alias.scope !1331 + br label %.loopexit84 + +.loopexit84: ; preds = %99, %113 + %.sroa.062.0 = phi ptr [ %107, %110 ], [ %97, %96 ] + %.sroa.663.0 = phi i64 [ %116, %110 ], [ %100, %96 ] + %118 = add i64 %.sroa.663.0, -1 + %119 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h3db4fe9f58fcf8caE.llvm.2875332049115192089"() + to label %.noexc39 unwind label %.loopexit90 + +.noexc40: ; preds = %.loopexit84 + %120 = icmp eq ptr %119, null + br i1 %120, label %121, label %122 + +121: ; preds = %.noexc40 invoke void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef 8, i64 noundef 280) #51 - to label %.noexc40 unwind label %.loopexit.split-lp90 + to label %.noexc40 unwind label %.loopexit.split-lp91 -.noexc40: ; preds = %118 +.noexc41: ; preds = %121 unreachable -119: ; preds = %.noexc39 - store ptr null, ptr %116, align 8 - %120 = getelementptr inbounds nuw i8, ptr %116, i64 274 - store i16 0, ptr %120, align 2 - %.not = icmp eq i64 %115, 0 - br i1 %.not, label %.loopexit125, label %.lr.ph +122: ; preds = %.noexc40 + store ptr null, ptr %119, align 8 + %123 = getelementptr inbounds nuw i8, ptr %119, i64 274 + store i16 0, ptr %123, align 2 + %.not = icmp eq i64 %118, 0 + br i1 %.not, label %.loopexit127, label %.lr.ph -.invoke.i: ; preds = %.loopexit125 +.invoke.i: ; preds = %.loopexit127 invoke void @_ZN4core9panicking5panic17h44790a89027c670fE(ptr noalias noundef nonnull readonly align 1 @anon.551f5282231713dc5a82db078fc3c216.6, i64 noundef 32, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.551f5282231713dc5a82db078fc3c216.11) #51 - to label %.cont.i unwind label %124, !noalias !1340 + to label %.cont.i unwind label %127, !noalias !1340 .cont.i: ; preds = %.invoke.i unreachable -.loopexit125: ; preds = %_ZN5alloc11collections5btree3mem7replace17h87e978e052ec58a4E.exit57, %119 - %.sroa.067.0.lcssa = phi ptr [ %116, %119 ], [ %149, %_ZN5alloc11collections5btree3mem7replace17h87e978e052ec58a4E.exit57 ] +.loopexit127: ; preds = %_ZN5alloc11collections5btree3mem7replace17h87e978e052ec58a4E.exit58, %122 + %.sroa.068.0.lcssa = phi ptr [ %119, %119 ], [ %152, %_ZN5alloc11collections5btree3mem7replace17h87e978e052ec58a4E.exit57 ] call void @llvm.lifetime.start.p0(ptr nonnull %6) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(24) %8, i64 24, i1 false) - %121 = getelementptr inbounds nuw i8, ptr %.sroa.061.0, i64 274 - %122 = load i16, ptr %121, align 2, !noalias !1340, !noundef !21 - %123 = icmp ult i16 %122, 11 - br i1 %123, label %128, label %.invoke.i + %124 = getelementptr inbounds nuw i8, ptr %.sroa.062.0, i64 274 + %125 = load i16, ptr %124, align 2, !noalias !1340, !noundef !21 + %126 = icmp ult i16 %125, 11 + br i1 %126, label %131, label %.invoke.i -124: ; preds = %.invoke.i - %125 = landingpad { ptr, i32 } +127: ; preds = %.invoke.i + %128 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17hdcf7b889bac065f1E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %6) #50 - to label %.body34 unwind label %126 + to label %.body34 unwind label %129 -126: ; preds = %124 - %127 = landingpad { ptr, i32 } +129: ; preds = %127 + %130 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #48 unreachable -128: ; preds = %.loopexit125 - %129 = zext nneg i16 %122 to i64 - %130 = add nuw nsw i16 %122, 1 - store i16 %130, ptr %121, align 2, !noalias !1340 - %131 = getelementptr inbounds nuw i8, ptr %.sroa.061.0, i64 8 - %132 = getelementptr inbounds nuw { [3 x i64] }, ptr %131, i64 %129 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %132, ptr noundef nonnull align 8 dereferenceable(24) %8, i64 24, i1 false) - %133 = add nuw nsw i64 %129, 1 - %134 = getelementptr inbounds nuw i8, ptr %.sroa.061.0, i64 280 - %135 = getelementptr inbounds nuw ptr, ptr %134, i64 %133 - store ptr %.sroa.067.0.lcssa, ptr %135, align 8, !noalias !1340 - store ptr %.sroa.061.0, ptr %.sroa.067.0.lcssa, align 8, !noalias !1340 - %136 = trunc nuw nsw i64 %133 to i16 - %137 = getelementptr inbounds nuw i8, ptr %.sroa.067.0.lcssa, i64 272 - store i16 %136, ptr %137, align 8, !noalias !1340 +131: ; preds = %.loopexit127 + %132 = zext nneg i16 %125 to i64 + %133 = add nuw nsw i16 %125, 1 + store i16 %133, ptr %124, align 2, !noalias !1340 + %134 = getelementptr inbounds nuw i8, ptr %.sroa.062.0, i64 8 + %135 = getelementptr inbounds nuw { [3 x i64] }, ptr %134, i64 %132 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %135, ptr noundef nonnull align 8 dereferenceable(24) %8, i64 24, i1 false) + %136 = add nuw nsw i64 %132, 1 + %137 = getelementptr inbounds nuw i8, ptr %.sroa.062.0, i64 280 + %138 = getelementptr inbounds nuw ptr, ptr %137, i64 %136 + store ptr %.sroa.068.0.lcssa, ptr %138, align 8, !noalias !1340 + store ptr %.sroa.062.0, ptr %.sroa.068.0.lcssa, align 8, !noalias !1340 + %139 = trunc nuw nsw i64 %136 to i16 + %140 = getelementptr inbounds nuw i8, ptr %.sroa.068.0.lcssa, i64 272 + store i16 %139, ptr %140, align 8, !noalias !1340 call void @llvm.lifetime.end.p0(ptr nonnull %6) - %.not16.i44 = icmp eq i64 %.sroa.662.0, 0 - br i1 %.not16.i44, label %.loopexit, label %.lr.ph.i45 - -.lr.ph.i45: ; preds = %128, %.lr.ph.i45 - %.018.i46 = phi ptr [ %144, %.lr.ph.i45 ], [ %.sroa.061.0, %128 ] - %.01517.i47 = phi i64 [ %145, %.lr.ph.i45 ], [ %.sroa.662.0, %128 ] - %138 = getelementptr inbounds nuw i8, ptr %.018.i46, i64 274 - %139 = load i16, ptr %138, align 2, !noalias !1343, !noundef !21 - %140 = zext nneg i16 %139 to i64 - %141 = getelementptr inbounds nuw i8, ptr %.018.i46, i64 280 - %142 = icmp ult i16 %139, 12 - call void @llvm.assume(i1 %142) - %143 = getelementptr inbounds nuw ptr, ptr %141, i64 %140 - %144 = load ptr, ptr %143, align 8, !noalias !1343, !nonnull !21, !noundef !21 - %145 = add i64 %.01517.i47, -1 - %.not.i48 = icmp eq i64 %145, 0 - br i1 %.not.i48, label %.loopexit, label %.lr.ph.i45 - -.loopexit: ; preds = %.lr.ph.i45, %128, %158 - %.sroa.0.1 = phi ptr [ %.sroa.0.0, %158 ], [ %.sroa.061.0, %128 ], [ %144, %.lr.ph.i45 ] - %146 = load i64, ptr %2, align 8, !noundef !21 - %147 = add i64 %146, 1 - store i64 %147, ptr %2, align 8 + %.not16.i45 = icmp eq i64 %.sroa.663.0, 0 + br i1 %.not16.i45, label %.loopexit, label %.lr.ph.i46 + +.lr.ph.i46: ; preds = %131, %.lr.ph.i46 + %.018.i47 = phi ptr [ %147, %.lr.ph.i45 ], [ %.sroa.062.0, %128 ] + %.01517.i48 = phi i64 [ %148, %.lr.ph.i45 ], [ %.sroa.663.0, %128 ] + %141 = getelementptr inbounds nuw i8, ptr %.018.i47, i64 274 + %142 = load i16, ptr %141, align 2, !noalias !1343, !noundef !21 + %143 = zext nneg i16 %142 to i64 + %144 = getelementptr inbounds nuw i8, ptr %.018.i47, i64 280 + %145 = icmp ult i16 %142, 12 + call void @llvm.assume(i1 %145) + %146 = getelementptr inbounds nuw ptr, ptr %144, i64 %143 + %147 = load ptr, ptr %146, align 8, !noalias !1343, !nonnull !21, !noundef !21 + %148 = add i64 %.01517.i48, -1 + %.not.i49 = icmp eq i64 %148, 0 + br i1 %.not.i49, label %.loopexit, label %.lr.ph.i46 + +.loopexit: ; preds = %.lr.ph.i46, %131, %161 + %.sroa.0.1 = phi ptr [ %.sroa.0.0, %158 ], [ %.sroa.062.0, %128 ], [ %147, %.lr.ph.i45 ] + %149 = load i64, ptr %2, align 8, !noundef !21 + %150 = add i64 %149, 1 + store i64 %150, ptr %2, align 8 call void @llvm.lifetime.end.p0(ptr nonnull %7) br label %21 -.lr.ph: ; preds = %119, %_ZN5alloc11collections5btree3mem7replace17h87e978e052ec58a4E.exit57 - %.sroa.012.0104 = phi i64 [ %148, %_ZN5alloc11collections5btree3mem7replace17h87e978e052ec58a4E.exit57 ], [ 0, %119 ] - %.sroa.067.0102 = phi ptr [ %149, %_ZN5alloc11collections5btree3mem7replace17h87e978e052ec58a4E.exit57 ], [ %116, %119 ] - %148 = add nuw i64 %.sroa.012.0104, 1 - %149 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17hdcae3c5a5b57ca29E.llvm.2875332049115192089"() - to label %.noexc.i52 unwind label %.loopexit82, !noalias !1346 +.lr.ph: ; preds = %122, %_ZN5alloc11collections5btree3mem7replace17h87e978e052ec58a4E.exit58 + %.sroa.012.0105 = phi i64 [ %151, %_ZN5alloc11collections5btree3mem7replace17h87e978e052ec58a4E.exit57 ], [ 0, %119 ] + %.sroa.068.0103 = phi ptr [ %152, %_ZN5alloc11collections5btree3mem7replace17h87e978e052ec58a4E.exit57 ], [ %119, %119 ] + %151 = add nuw i64 %.sroa.012.0105, 1 + %152 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17hdcae3c5a5b57ca29E.llvm.2875332049115192089"() + to label %.noexc.i52 unwind label %.loopexit83, !noalias !1346 -.noexc.i52: ; preds = %.lr.ph - %150 = icmp eq ptr %149, null - br i1 %150, label %151, label %_ZN5alloc11collections5btree3mem7replace17h87e978e052ec58a4E.exit57 +.noexc.i53: ; preds = %.lr.ph + %153 = icmp eq ptr %152, null + br i1 %153, label %154, label %_ZN5alloc11collections5btree3mem7replace17h87e978e052ec58a4E.exit58 -151: ; preds = %.noexc.i52 +154: ; preds = %.noexc.i53 invoke void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef 8, i64 noundef 376) #51 to label %.noexc3.i53 unwind label %.loopexit.split-lp, !noalias !1346 -.noexc3.i53: ; preds = %151 +.noexc3.i54: ; preds = %154 unreachable -.loopexit82: ; preds = %.lr.ph +.loopexit83: ; preds = %.lr.ph %lpad.loopexit = landingpad { ptr, i32 } cleanup - br label %152 + br label %155 -.loopexit.split-lp: ; preds = %151 +.loopexit.split-lp: ; preds = %154 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup - br label %152 + br label %155 -152: ; preds = %.loopexit.split-lp, %.loopexit82 +155: ; preds = %.loopexit.split-lp, %.loopexit83 %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit82 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] invoke void @"_ZN93_$LT$alloc..collections..btree..mem..replace..PanicGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17he7f40e69e6f26b83E"(ptr noalias noundef nonnull align 1 %4) - to label %163 unwind label %153, !noalias !1346 + to label %163 unwind label %156, !noalias !1346 -153: ; preds = %152 - %154 = landingpad { ptr, i32 } +156: ; preds = %155 + %157 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #48, !noalias !1346 unreachable -_ZN5alloc11collections5btree3mem7replace17h87e978e052ec58a4E.exit57: ; preds = %.noexc.i52 - store ptr null, ptr %149, align 8, !noalias !1346 - %155 = getelementptr inbounds nuw i8, ptr %149, i64 274 - store i16 0, ptr %155, align 2, !noalias !1346 - %156 = getelementptr inbounds nuw i8, ptr %149, i64 280 - store ptr %.sroa.067.0102, ptr %156, align 8, !noalias !1346 - store ptr %149, ptr %.sroa.067.0102, align 8, !noalias !1349 - %157 = getelementptr inbounds nuw i8, ptr %.sroa.067.0102, i64 272 - store i16 0, ptr %157, align 8, !noalias !1354 - %exitcond.not = icmp eq i64 %148, %115 - br i1 %exitcond.not, label %.loopexit125, label %.lr.ph - -158: ; preds = %42 - %159 = zext nneg i16 %44 to i64 - %160 = add nuw nsw i16 %44, 1 - store i16 %160, ptr %43, align 2, !noalias !1355 - %161 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 8 - %162 = getelementptr inbounds nuw { [3 x i64] }, ptr %161, i64 %159 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %162, ptr noundef nonnull align 8 dereferenceable(24) %8, i64 24, i1 false) +_ZN5alloc11collections5btree3mem7replace17h87e978e052ec58a4E.exit58: ; preds = %.noexc.i53 + store ptr null, ptr %152, align 8, !noalias !1346 + %158 = getelementptr inbounds nuw i8, ptr %152, i64 274 + store i16 0, ptr %158, align 2, !noalias !1346 + %159 = getelementptr inbounds nuw i8, ptr %152, i64 280 + store ptr %.sroa.068.0103, ptr %159, align 8, !noalias !1346 + store ptr %152, ptr %.sroa.068.0103, align 8, !noalias !1349 + %160 = getelementptr inbounds nuw i8, ptr %.sroa.068.0103, i64 272 + store i16 0, ptr %160, align 8, !noalias !1354 + %exitcond.not = icmp eq i64 %151, %118 + br i1 %exitcond.not, label %.loopexit127, label %.lr.ph + +161: ; preds = %42 + %162 = zext nneg i16 %44 to i64 + %163 = add nuw nsw i16 %44, 1 + store i16 %163, ptr %43, align 2, !noalias !1355 + %164 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 8 + %165 = getelementptr inbounds nuw { [3 x i64] }, ptr %164, i64 %162 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %165, ptr noundef nonnull align 8 dereferenceable(24) %8, i64 24, i1 false) br label %.loopexit -163: ; preds = %.loopexit89, %.loopexit.split-lp90, %107, %152 - %eh.lpad-body38.ph = phi { ptr, i32 } [ %lpad.phi88, %107 ], [ %lpad.phi, %152 ], [ %lpad.loopexit91, %.loopexit89 ], [ %lpad.loopexit.split-lp92, %.loopexit.split-lp90 ] +166: ; preds = %.loopexit90, %.loopexit.split-lp91, %110, %155 + %eh.lpad-body39.ph = phi { ptr, i32 } [ %lpad.phi89, %107 ], [ %lpad.phi, %152 ], [ %lpad.loopexit92, %.loopexit89 ], [ %lpad.loopexit.split-lp93, %.loopexit.split-lp90 ] invoke void @"_ZN4core3ptr42drop_in_place$LT$alloc..string..String$GT$17hdcf7b889bac065f1E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %7) #50 - to label %.body34 unwind label %164 + to label %.body34 unwind label %167 -164: ; preds = %163, %.body34 - %165 = landingpad { ptr, i32 } +167: ; preds = %166, %.body35 + %168 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #48 unreachable -.body: ; preds = %.body34, %29 +.body: ; preds = %.body35, %29 %.pn22 = phi { ptr, i32 } [ %.pn, %.body34 ], [ %30, %29 ] resume { ptr, i32 } %.pn22 } diff --git a/bench/tree-sitter-rs/optimized/55e7aotywrgrb7st.ll b/bench/tree-sitter-rs/optimized/55e7aotywrgrb7st.ll index 4029c8bef37..af05ba7043b 100644 --- a/bench/tree-sitter-rs/optimized/55e7aotywrgrb7st.ll +++ b/bench/tree-sitter-rs/optimized/55e7aotywrgrb7st.ll @@ -18328,13 +18328,13 @@ _ZN15tree_sitter_cli8generate12build_tables4item9ParseItem10precedence17h815d037 %68 = add nsw i64 %67, -1 tail call void @llvm.experimental.noalias.scope.decl(metadata !3324) %69 = icmp ult i64 %68, %21 - br i1 %69, label %_ZN15tree_sitter_cli8generate12build_tables4item9ParseItem13associativity17h162631bf723aa0c7E.exit, label %70, !prof !205 + br i1 %69, label %_ZN15tree_sitter_cli8generate12build_tables4item9ParseItem13associativity17h162631bf723aa0c7E.exit49, label %70, !prof !205 70: ; preds = %66 tail call void @_ZN4core9panicking18panic_bounds_check17h8331054858f0bf20E(i64 noundef %68, i64 noundef %21, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.f4ab2160caa6653ef344418ff3b39bb7.172.llvm.18097807149992804452) #45, !noalias !3327 unreachable -_ZN15tree_sitter_cli8generate12build_tables4item9ParseItem13associativity17h162631bf723aa0c7E.exit: ; preds = %66 +_ZN15tree_sitter_cli8generate12build_tables4item9ParseItem13associativity17h162631bf723aa0c7E.exit49: ; preds = %66 %71 = getelementptr inbounds nuw i8, ptr %13, i64 8 %72 = load ptr, ptr %71, align 8, !alias.scope !3324, !noalias !3334, !nonnull !14, !noundef !14 %73 = getelementptr inbounds nuw { { i64, [3 x i64] }, { i64, [2 x i64] }, { i64, [2 x i64] }, { i64, i8 }, i8, [7 x i8] }, ptr %72, i64 %68 @@ -18348,11 +18348,11 @@ _ZN15tree_sitter_cli8generate12build_tables4item9ParseItem13associativity17h1626 %81 = icmp eq i8 %75, 2 br i1 %81, label %82, label %83 -82: ; preds = %_ZN15tree_sitter_cli8generate12build_tables4item9ParseItem13associativity17h162631bf723aa0c7E.exit +82: ; preds = %_ZN15tree_sitter_cli8generate12build_tables4item9ParseItem13associativity17h162631bf723aa0c7E.exit49 %.not82 = icmp eq i8 %80, 2 br i1 %.not82, label %.thread73, label %.critedge -83: ; preds = %_ZN15tree_sitter_cli8generate12build_tables4item9ParseItem13associativity17h162631bf723aa0c7E.exit +83: ; preds = %_ZN15tree_sitter_cli8generate12build_tables4item9ParseItem13associativity17h162631bf723aa0c7E.exit49 %.not81 = icmp eq i8 %75, %80 br i1 %.not81, label %.thread73, label %.critedge diff --git a/bench/uv-rs/optimized/6909c4r4kqhl58g4t63amtvkr.ll b/bench/uv-rs/optimized/6909c4r4kqhl58g4t63amtvkr.ll index bebf6067670..2437e54fefc 100644 --- a/bench/uv-rs/optimized/6909c4r4kqhl58g4t63amtvkr.ll +++ b/bench/uv-rs/optimized/6909c4r4kqhl58g4t63amtvkr.ll @@ -11867,7 +11867,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %7 = load i64, ptr %6, align 8, !noundef !12 %8 = load ptr, ptr %0, align 8, !nonnull !12, !noundef !12 %9 = icmp eq i64 %7, 0 - br i1 %9, label %.loopexit74, label %.lr.ph.i + br i1 %9, label %.loopexit75, label %.lr.ph.i .lr.ph.i: ; preds = %3, %.lr.ph.i %.sroa.03.06.i = phi i64 [ %17, %.lr.ph.i ], [ %7, %3 ] @@ -11882,24 +11882,24 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %16 = load ptr, ptr %15, align 8, !noalias !1806, !nonnull !12, !noundef !12 %17 = add i64 %.sroa.03.06.i, -1 %18 = icmp eq i64 %17, 0 - br i1 %18, label %.loopexit74, label %.lr.ph.i + br i1 %18, label %.loopexit75, label %.lr.ph.i -.loopexit74: ; preds = %.lr.ph.i, %3 +.loopexit75: ; preds = %.lr.ph.i, %3 %.sroa.04.0.lcssa.i = phi ptr [ %8, %3 ], [ %16, %.lr.ph.i ] call void @llvm.lifetime.start.p0(ptr nonnull %5) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %5, ptr noundef nonnull align 8 dereferenceable(56) %1, i64 56, i1 false) br label %19 -19: ; preds = %.loopexit, %.loopexit74 +19: ; preds = %.loopexit, %.loopexit75 %.sroa.0.0 = phi ptr [ %.sroa.04.0.lcssa.i, %.loopexit74 ], [ %.sroa.0.1, %.loopexit ] %20 = invoke { ptr, ptr } @"_ZN137_$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$K$C$V$C$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17he8d2fb518b93cee1E"(ptr noalias noundef nonnull align 8 dereferenceable(56) %5) to label %24 unwind label %22 -.body: ; preds = %.loopexit69, %.loopexit.split-lp70, %154, %108, %22 - %.pn = phi { ptr, i32 } [ %23, %22 ], [ %lpad.phi68, %108 ], [ %lpad.phi, %154 ], [ %lpad.loopexit71, %.loopexit69 ], [ %lpad.loopexit.split-lp72, %.loopexit.split-lp70 ] +.body: ; preds = %.loopexit70, %.loopexit.split-lp71, %157, %111, %22 + %.pn = phi { ptr, i32 } [ %23, %22 ], [ %lpad.phi69, %108 ], [ %lpad.phi, %154 ], [ %lpad.loopexit72, %.loopexit69 ], [ %lpad.loopexit.split-lp73, %.loopexit.split-lp70 ] %21 = getelementptr inbounds nuw i8, ptr %5, i64 24 invoke void @"_ZN86_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h23ea7b304b3ae16cE.llvm.8717112297715684712"(ptr noalias noundef nonnull align 8 dereferenceable(32) %21) - to label %"_ZN4core3ptr394drop_in_place$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$$RF$uv_normalize..group_name..GroupName$C$$RF$alloc..vec..Vec$LT$uv_pypi_types..dependency_groups..DependencyGroupSpecifier$GT$$C$alloc..vec..into_iter..IntoIter$LT$$LP$$RF$uv_normalize..group_name..GroupName$C$$RF$alloc..vec..Vec$LT$uv_pypi_types..dependency_groups..DependencyGroupSpecifier$GT$$RP$$GT$$GT$$GT$17hbc6dc456d0a58d0fE.exit" unwind label %167 + to label %"_ZN4core3ptr394drop_in_place$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$$RF$uv_normalize..group_name..GroupName$C$$RF$alloc..vec..Vec$LT$uv_pypi_types..dependency_groups..DependencyGroupSpecifier$GT$$C$alloc..vec..into_iter..IntoIter$LT$$LP$$RF$uv_normalize..group_name..GroupName$C$$RF$alloc..vec..Vec$LT$uv_pypi_types..dependency_groups..DependencyGroupSpecifier$GT$$RP$$GT$$GT$$GT$17hbc6dc456d0a58d0fE.exit" unwind label %170 22: ; preds = %19 %23 = landingpad { ptr, i32 } @@ -11930,7 +11930,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %32 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 186 %33 = load i16, ptr %32, align 2, !noundef !12 %34 = icmp ult i16 %33, 11 - br i1 %34, label %160, label %.preheader + br i1 %34, label %163, label %.preheader .lr.ph.i22: ; preds = %.lr.ph.i22.preheader, %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17ha70b7c16fd1f09c3E.exit.i" %.sroa.03.010.i = phi ptr [ %46, %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17ha70b7c16fd1f09c3E.exit.i" ], [ %.val, %.lr.ph.i22.preheader ] @@ -11960,7 +11960,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %49 = icmp ult i16 %48, 5 br i1 %49, label %51, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17ha70b7c16fd1f09c3E.exit.i" -"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17ha70b7c16fd1f09c3E.exit.i": ; preds = %89, %37 +"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17ha70b7c16fd1f09c3E.exit.i": ; preds = %92, %37 %50 = icmp eq i64 %43, 0 br i1 %50, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17h6559e50415a2b255E.exit", label %.lr.ph.i22 @@ -11970,28 +11970,28 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %53 = getelementptr inbounds nuw i8, ptr %42, i64 186 %54 = load i16, ptr %53, align 2, !noalias !1818, !noundef !12 %.not.i.i = icmp ugt i16 %narrow.i, %54 - br i1 %.not.i.i, label %.noexc23, label %_ZN5alloc11collections5btree4node13move_to_slice17heb546469a5e741cdE.exit.i.i, !prof !296 + br i1 %.not.i.i, label %.noexc23, label %55, !prof !296 .noexc23: ; preds = %51 call void @_ZN4core9panicking5panic17had768957450a0f86E(ptr noalias noundef nonnull readonly align 1 @anon.da1773f9f01d35596722567e5203ba96.31, i64 noundef 39, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.da1773f9f01d35596722567e5203ba96.32) #28 unreachable -_ZN5alloc11collections5btree4node13move_to_slice17heb546469a5e741cdE.exit.i.i: ; preds = %51 - %55 = zext i16 %54 to i64 - %56 = sub nuw nsw i64 %55, %52 - %57 = trunc nuw i64 %56 to i16 - store i16 %57, ptr %53, align 2, !noalias !1818 +55: ; preds = %51 + %56 = zext i16 %54 to i64 + %57 = sub nuw nsw i64 %56, %52 + %58 = trunc nuw i64 %57 to i16 + store i16 %58, ptr %53, align 2, !noalias !1818 store i16 5, ptr %47, align 2, !noalias !1818 - %58 = getelementptr inbounds nuw i8, ptr %46, i64 8 - %59 = getelementptr inbounds nuw ptr, ptr %58, i64 %52 - %60 = shl nuw nsw i16 %48, 3 - %61 = zext nneg i16 %60 to i64 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %59, ptr nonnull align 8 %58, i64 %61, i1 false), !alias.scope !1821, !noalias !1818 - %62 = getelementptr inbounds nuw i8, ptr %46, i64 96 - %63 = getelementptr inbounds nuw ptr, ptr %62, i64 %52 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %63, ptr nonnull align 8 %62, i64 %61, i1 false), !alias.scope !1824, !noalias !1818 - %64 = add nuw nsw i64 %56, 1 - %65 = sub nuw nsw i64 %55, %64 + %59 = getelementptr inbounds nuw i8, ptr %46, i64 8 + %60 = getelementptr inbounds nuw ptr, ptr %59, i64 %52 + %61 = shl nuw nsw i16 %48, 3 + %62 = zext nneg i16 %61 to i64 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %60, ptr nonnull align 8 %59, i64 %62, i1 false), !alias.scope !1821, !noalias !1818 + %63 = getelementptr inbounds nuw i8, ptr %46, i64 96 + %64 = getelementptr inbounds nuw ptr, ptr %63, i64 %52 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %64, ptr nonnull align 8 %63, i64 %62, i1 false), !alias.scope !1824, !noalias !1818 + %65 = add nuw nsw i64 %57, 1 + %66 = sub nuw nsw i64 %56, %65 %66 = getelementptr inbounds nuw i8, ptr %42, i64 8 %67 = getelementptr inbounds nuw ptr, ptr %66, i64 %64 %68 = shl nuw nsw i64 %65, 3 @@ -12001,272 +12001,272 @@ _ZN5alloc11collections5btree4node13move_to_slice17heb546469a5e741cdE.exit.i.i: ; call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %62, ptr nonnull readonly align 8 %70, i64 %68, i1 false), !alias.scope !1831, !noalias !1818 %71 = getelementptr inbounds nuw ptr, ptr %66, i64 %56 %72 = load ptr, ptr %71, align 8, !noalias !1818, !nonnull !12, !align !1835, !noundef !12 - %73 = getelementptr inbounds nuw ptr, ptr %69, i64 %56 - %74 = load ptr, ptr %73, align 8, !noalias !1818, !nonnull !12, !align !1835, !noundef !12 + %69 = getelementptr inbounds nuw ptr, ptr %69, i64 %56 + %74 = load ptr, ptr %69, align 8, !noalias !1818, !nonnull !12, !align !1835, !noundef !12 %75 = getelementptr ptr, ptr %.sroa.03.010.i, i64 %38 %76 = getelementptr inbounds nuw i8, ptr %.sroa.03.010.i, i64 96 - %77 = getelementptr inbounds nuw ptr, ptr %76, i64 %39 + %72 = getelementptr inbounds nuw ptr, ptr %76, i64 %39 %78 = load ptr, ptr %75, align 8, !noalias !1836, !nonnull !12, !align !1835, !noundef !12 store ptr %72, ptr %75, align 8, !noalias !1836 %79 = load ptr, ptr %77, align 8, !noalias !1836, !nonnull !12, !align !1835, !noundef !12 store ptr %74, ptr %77, align 8, !noalias !1836 - %80 = getelementptr ptr, ptr %46, i64 %52 - store ptr %78, ptr %80, align 8, !noalias !1818 - %81 = getelementptr inbounds nuw ptr, ptr %62, i64 %65 + %76 = getelementptr ptr, ptr %46, i64 %52 + store ptr %78, ptr %76, align 8, !noalias !1818 + %78 = getelementptr inbounds nuw ptr, ptr %63, i64 %65 store ptr %79, ptr %81, align 8, !noalias !1818 %cond.i = icmp eq i64 %43, 0 - br i1 %cond.i, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17h6559e50415a2b255E.exit", label %82 - -82: ; preds = %_ZN5alloc11collections5btree4node13move_to_slice17heb546469a5e741cdE.exit.i.i - %83 = getelementptr inbounds nuw i8, ptr %46, i64 192 - %84 = getelementptr inbounds nuw ptr, ptr %83, i64 %52 - %85 = add nuw nsw i64 %61, 8 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %84, ptr noundef nonnull align 8 dereferenceable(1) %83, i64 %85, i1 false), !alias.scope !1840, !noalias !1818 - %86 = getelementptr inbounds nuw i8, ptr %42, i64 192 - %87 = getelementptr inbounds nuw ptr, ptr %86, i64 %64 - %88 = shl nuw nsw i64 %52, 3 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %83, ptr noundef nonnull readonly align 8 dereferenceable(1) %87, i64 %88, i1 false), !alias.scope !1843, !noalias !1818 - br label %89 - -89: ; preds = %89, %82 - %.sroa.0.05.i.i.i = phi i64 [ 0, %82 ], [ %90, %89 ] - %90 = add nuw nsw i64 %.sroa.0.05.i.i.i, 1 - %91 = getelementptr inbounds nuw ptr, ptr %83, i64 %.sroa.0.05.i.i.i - %92 = load ptr, ptr %91, align 8, !noalias !1847, !nonnull !12, !noundef !12 - store ptr %46, ptr %92, align 8, !noalias !1852 - %93 = trunc nuw nsw i64 %.sroa.0.05.i.i.i to i16 - %94 = getelementptr inbounds nuw i8, ptr %92, i64 184 - store i16 %93, ptr %94, align 8, !noalias !1852 + br i1 %cond.i, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17h6559e50415a2b255E.exit", label %85 + +85: ; preds = %_ZN5alloc11collections5btree4node13move_to_slice17heb546469a5e741cdE.exit.i.i + %86 = getelementptr inbounds nuw i8, ptr %46, i64 192 + %87 = getelementptr inbounds nuw ptr, ptr %86, i64 %52 + %88 = add nuw nsw i64 %62, 8 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %87, ptr noundef nonnull align 8 dereferenceable(1) %86, i64 %88, i1 false), !alias.scope !1840, !noalias !1818 + %89 = getelementptr inbounds nuw i8, ptr %42, i64 192 + %90 = getelementptr inbounds nuw ptr, ptr %89, i64 %65 + %91 = shl nuw nsw i64 %52, 3 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %86, ptr noundef nonnull readonly align 8 dereferenceable(1) %90, i64 %91, i1 false), !alias.scope !1843, !noalias !1818 + br label %92 + +92: ; preds = %92, %85 + %.sroa.0.05.i.i.i = phi i64 [ 0, %82 ], [ %93, %89 ] + %93 = add nuw nsw i64 %.sroa.0.05.i.i.i, 1 + %94 = getelementptr inbounds nuw ptr, ptr %86, i64 %.sroa.0.05.i.i.i + %95 = load ptr, ptr %94, align 8, !noalias !1847, !nonnull !12, !noundef !12 + store ptr %46, ptr %95, align 8, !noalias !1852 + %96 = trunc nuw nsw i64 %.sroa.0.05.i.i.i to i16 + %97 = getelementptr inbounds nuw i8, ptr %95, i64 184 + store i16 %96, ptr %97, align 8, !noalias !1852 %exitcond.not.i.i.i = icmp eq i64 %.sroa.0.05.i.i.i, 5 - br i1 %exitcond.not.i.i.i, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17ha70b7c16fd1f09c3E.exit.i", label %89 + br i1 %exitcond.not.i.i.i, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17ha70b7c16fd1f09c3E.exit.i", label %92 "_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17h6559e50415a2b255E.exit": ; preds = %_ZN5alloc11collections5btree4node13move_to_slice17heb546469a5e741cdE.exit.i.i, %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17ha70b7c16fd1f09c3E.exit.i", %"_ZN4core3ptr394drop_in_place$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$$RF$uv_normalize..group_name..GroupName$C$$RF$alloc..vec..Vec$LT$uv_pypi_types..dependency_groups..DependencyGroupSpecifier$GT$$C$alloc..vec..into_iter..IntoIter$LT$$LP$$RF$uv_normalize..group_name..GroupName$C$$RF$alloc..vec..Vec$LT$uv_pypi_types..dependency_groups..DependencyGroupSpecifier$GT$$RP$$GT$$GT$$GT$17hbc6dc456d0a58d0fE.exit21" ret void -.preheader: ; preds = %30, %97 - %.sroa.5.0 = phi i64 [ %98, %97 ], [ 0, %30 ] - %.sroa.02.0 = phi ptr [ %95, %97 ], [ %.sroa.0.0, %30 ] - %95 = load ptr, ptr %.sroa.02.0, align 8, !noalias !1853, !noundef !12 - %96 = icmp eq ptr %95, null - br i1 %96, label %102, label %97 +.preheader: ; preds = %30, %100 + %.sroa.5.0 = phi i64 [ %101, %97 ], [ 0, %30 ] + %.sroa.02.0 = phi ptr [ %98, %97 ], [ %.sroa.0.0, %30 ] + %98 = load ptr, ptr %.sroa.02.0, align 8, !noalias !1853, !noundef !12 + %99 = icmp eq ptr %98, null + br i1 %99, label %105, label %100 -.loopexit69: ; preds = %.loopexit63 - %lpad.loopexit71 = landingpad { ptr, i32 } +.loopexit70: ; preds = %.loopexit64 + %lpad.loopexit72 = landingpad { ptr, i32 } cleanup br label %.body -.loopexit.split-lp70: ; preds = %119, %125 - %lpad.loopexit.split-lp72 = landingpad { ptr, i32 } +.loopexit.split-lp71: ; preds = %122, %128 + %lpad.loopexit.split-lp73 = landingpad { ptr, i32 } cleanup br label %.body -97: ; preds = %.preheader - %98 = add i64 %.sroa.5.0, 1 - %99 = getelementptr inbounds nuw i8, ptr %95, i64 186 - %100 = load i16, ptr %99, align 2, !noundef !12 - %101 = icmp ult i16 %100, 11 - br i1 %101, label %.loopexit63, label %.preheader +100: ; preds = %.preheader + %101 = add i64 %.sroa.5.0, 1 + %102 = getelementptr inbounds nuw i8, ptr %98, i64 186 + %103 = load i16, ptr %102, align 2, !noundef !12 + %104 = icmp ult i16 %103, 11 + br i1 %104, label %.loopexit64, label %.preheader -102: ; preds = %.preheader +105: ; preds = %.preheader call void @llvm.experimental.noalias.scope.decl(metadata !1856) - %103 = load ptr, ptr %0, align 8, !alias.scope !1856, !nonnull !12, !noundef !12 - %104 = load i64, ptr %6, align 8, !alias.scope !1856, !noundef !12 - %105 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h391f63560645abe9E.llvm.25249479008257743"() - to label %.noexc.i unwind label %.loopexit64, !noalias !1856 + %106 = load ptr, ptr %0, align 8, !alias.scope !1856, !nonnull !12, !noundef !12 + %107 = load i64, ptr %6, align 8, !alias.scope !1856, !noundef !12 + %108 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h391f63560645abe9E.llvm.25249479008257743"() + to label %.noexc.i unwind label %.loopexit65, !noalias !1856 -.noexc.i: ; preds = %102 - %106 = icmp eq ptr %105, null - br i1 %106, label %107, label %111 +.noexc.i: ; preds = %105 + %109 = icmp eq ptr %108, null + br i1 %109, label %110, label %114 -107: ; preds = %.noexc.i +110: ; preds = %.noexc.i invoke void @_ZN5alloc5alloc18handle_alloc_error17he572ac0a571405f2E(i64 noundef 8, i64 noundef 288) #28 - to label %.noexc1.i unwind label %.loopexit.split-lp65, !noalias !1856 + to label %.noexc1.i unwind label %.loopexit.split-lp66, !noalias !1856 -.noexc1.i: ; preds = %107 +.noexc1.i: ; preds = %110 unreachable -.loopexit64: ; preds = %102 - %lpad.loopexit66 = landingpad { ptr, i32 } +.loopexit65: ; preds = %105 + %lpad.loopexit67 = landingpad { ptr, i32 } cleanup - br label %108 + br label %111 -.loopexit.split-lp65: ; preds = %107 - %lpad.loopexit.split-lp67 = landingpad { ptr, i32 } +.loopexit.split-lp66: ; preds = %110 + %lpad.loopexit.split-lp68 = landingpad { ptr, i32 } cleanup - br label %108 + br label %111 -108: ; preds = %.loopexit.split-lp65, %.loopexit64 - %lpad.phi68 = phi { ptr, i32 } [ %lpad.loopexit66, %.loopexit64 ], [ %lpad.loopexit.split-lp67, %.loopexit.split-lp65 ] +111: ; preds = %.loopexit.split-lp66, %.loopexit65 + %lpad.phi69 = phi { ptr, i32 } [ %lpad.loopexit67, %.loopexit64 ], [ %lpad.loopexit.split-lp68, %.loopexit.split-lp65 ] invoke void @"_ZN93_$LT$alloc..collections..btree..mem..replace..PanicGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17h10aeed2765f7de5aE"(ptr noalias noundef nonnull align 1 %4) - to label %.body unwind label %109, !noalias !1856 + to label %.body unwind label %112, !noalias !1856 -109: ; preds = %108 - %110 = landingpad { ptr, i32 } +112: ; preds = %111 + %113 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h7e5529b9cf989fd4E() #26, !noalias !1856 unreachable -111: ; preds = %.noexc.i - store ptr null, ptr %105, align 8, !noalias !1856 - %112 = getelementptr inbounds nuw i8, ptr %105, i64 186 - store i16 0, ptr %112, align 2, !noalias !1856 - %113 = getelementptr inbounds nuw i8, ptr %105, i64 192 - store ptr %103, ptr %113, align 8, !noalias !1856 - %114 = add i64 %104, 1 - store ptr %105, ptr %103, align 8, !noalias !1859 - %115 = getelementptr inbounds nuw i8, ptr %103, i64 184 - store i16 0, ptr %115, align 8, !noalias !1866 - store ptr %105, ptr %0, align 8, !alias.scope !1856 - store i64 %114, ptr %6, align 8, !alias.scope !1856 - br label %.loopexit63 - -.loopexit63: ; preds = %97, %111 - %.sroa.045.0 = phi ptr [ %105, %111 ], [ %95, %97 ] - %.sroa.646.0 = phi i64 [ %114, %111 ], [ %98, %97 ] - %116 = add i64 %.sroa.646.0, -1 - %117 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17hae02ac83cccb13b8E.llvm.25249479008257743"() - to label %.noexc25 unwind label %.loopexit69 - -.noexc25: ; preds = %.loopexit63 - %118 = icmp eq ptr %117, null - br i1 %118, label %119, label %120 - -119: ; preds = %.noexc25 +114: ; preds = %.noexc.i + store ptr null, ptr %108, align 8, !noalias !1856 + %115 = getelementptr inbounds nuw i8, ptr %108, i64 186 + store i16 0, ptr %115, align 2, !noalias !1856 + %116 = getelementptr inbounds nuw i8, ptr %108, i64 192 + store ptr %106, ptr %116, align 8, !noalias !1856 + %117 = add i64 %107, 1 + store ptr %108, ptr %106, align 8, !noalias !1859 + %118 = getelementptr inbounds nuw i8, ptr %106, i64 184 + store i16 0, ptr %118, align 8, !noalias !1866 + store ptr %108, ptr %0, align 8, !alias.scope !1856 + store i64 %117, ptr %6, align 8, !alias.scope !1856 + br label %.loopexit64 + +.loopexit64: ; preds = %100, %114 + %.sroa.046.0 = phi ptr [ %108, %111 ], [ %98, %97 ] + %.sroa.647.0 = phi i64 [ %117, %111 ], [ %101, %97 ] + %119 = add i64 %.sroa.647.0, -1 + %120 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17hae02ac83cccb13b8E.llvm.25249479008257743"() + to label %.noexc25 unwind label %.loopexit70 + +.noexc26: ; preds = %.loopexit64 + %121 = icmp eq ptr %120, null + br i1 %121, label %122, label %123 + +122: ; preds = %.noexc26 invoke void @_ZN5alloc5alloc18handle_alloc_error17he572ac0a571405f2E(i64 noundef 8, i64 noundef 192) #28 - to label %.noexc26 unwind label %.loopexit.split-lp70 + to label %.noexc26 unwind label %.loopexit.split-lp71 -.noexc26: ; preds = %119 +.noexc27: ; preds = %122 unreachable -120: ; preds = %.noexc25 - store ptr null, ptr %117, align 8 - %121 = getelementptr inbounds nuw i8, ptr %117, i64 186 - store i16 0, ptr %121, align 2 - %.not = icmp eq i64 %116, 0 +123: ; preds = %.noexc26 + store ptr null, ptr %120, align 8 + %124 = getelementptr inbounds nuw i8, ptr %120, i64 186 + store i16 0, ptr %124, align 2 + %.not = icmp eq i64 %119, 0 br i1 %.not, label %._crit_edge, label %.lr.ph -._crit_edge: ; preds = %_ZN5alloc11collections5btree3mem7replace17h6dda342b2a939153E.exit39, %120 - %.sroa.051.0.lcssa = phi ptr [ %117, %120 ], [ %151, %_ZN5alloc11collections5btree3mem7replace17h6dda342b2a939153E.exit39 ] - %122 = getelementptr inbounds nuw i8, ptr %.sroa.045.0, i64 186 - %123 = load i16, ptr %122, align 2, !noalias !1867, !noundef !12 - %124 = icmp ult i16 %123, 11 - br i1 %124, label %126, label %125, !prof !118 +._crit_edge: ; preds = %_ZN5alloc11collections5btree3mem7replace17h6dda342b2a939153E.exit40, %123 + %.sroa.052.0.lcssa = phi ptr [ %120, %120 ], [ %154, %_ZN5alloc11collections5btree3mem7replace17h6dda342b2a939153E.exit39 ] + %125 = getelementptr inbounds nuw i8, ptr %.sroa.046.0, i64 186 + %126 = load i16, ptr %125, align 2, !noalias !1867, !noundef !12 + %127 = icmp ult i16 %126, 11 + br i1 %127, label %129, label %128, !prof !118 -125: ; preds = %._crit_edge +128: ; preds = %._crit_edge invoke void @_ZN4core9panicking5panic17had768957450a0f86E(ptr noalias noundef nonnull readonly align 1 @anon.da1773f9f01d35596722567e5203ba96.15.llvm.8974332646872837442, i64 noundef 32, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.da1773f9f01d35596722567e5203ba96.19) #28 - to label %.noexc28 unwind label %.loopexit.split-lp70 + to label %.noexc28 unwind label %.loopexit.split-lp71 -.noexc28: ; preds = %125 +.noexc29: ; preds = %128 unreachable -126: ; preds = %._crit_edge - %127 = zext nneg i16 %123 to i64 - %128 = add nuw nsw i16 %123, 1 - store i16 %128, ptr %122, align 2, !noalias !1867 - %129 = getelementptr inbounds nuw i8, ptr %.sroa.045.0, i64 8 - %130 = getelementptr inbounds nuw ptr, ptr %129, i64 %127 - store ptr %25, ptr %130, align 8, !noalias !1867 - %131 = getelementptr inbounds nuw i8, ptr %.sroa.045.0, i64 96 - %132 = getelementptr inbounds nuw ptr, ptr %131, i64 %127 - store ptr %26, ptr %132, align 8, !noalias !1867 - %133 = add nuw nsw i64 %127, 1 - %134 = getelementptr inbounds nuw i8, ptr %.sroa.045.0, i64 192 - %135 = getelementptr inbounds nuw ptr, ptr %134, i64 %133 - store ptr %.sroa.051.0.lcssa, ptr %135, align 8, !noalias !1867 - store ptr %.sroa.045.0, ptr %.sroa.051.0.lcssa, align 8, !noalias !1871 - %136 = trunc nuw nsw i64 %133 to i16 - %137 = getelementptr inbounds nuw i8, ptr %.sroa.051.0.lcssa, i64 184 - store i16 %136, ptr %137, align 8, !noalias !1871 - %138 = icmp eq i64 %.sroa.646.0, 0 - br i1 %138, label %.loopexit, label %.lr.ph.i29 - -.lr.ph.i29: ; preds = %126, %.lr.ph.i29 - %.sroa.03.06.i30 = phi i64 [ %146, %.lr.ph.i29 ], [ %.sroa.646.0, %126 ] - %.sroa.04.05.i31 = phi ptr [ %145, %.lr.ph.i29 ], [ %.sroa.045.0, %126 ] - %139 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i31, i64 186 - %140 = load i16, ptr %139, align 2, !noalias !1874, !noundef !12 - %141 = zext nneg i16 %140 to i64 - %142 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i31, i64 192 - %143 = icmp ult i16 %140, 12 - call void @llvm.assume(i1 %143) - %144 = getelementptr inbounds nuw ptr, ptr %142, i64 %141 - %145 = load ptr, ptr %144, align 8, !noalias !1877, !nonnull !12, !noundef !12 - %146 = add i64 %.sroa.03.06.i30, -1 - %147 = icmp eq i64 %146, 0 - br i1 %147, label %.loopexit, label %.lr.ph.i29 - -.loopexit: ; preds = %.lr.ph.i29, %126, %160 - %.sroa.0.1 = phi ptr [ %.sroa.0.0, %160 ], [ %.sroa.045.0, %126 ], [ %145, %.lr.ph.i29 ] - %148 = load i64, ptr %2, align 8, !noundef !12 - %149 = add i64 %148, 1 - store i64 %149, ptr %2, align 8 +129: ; preds = %._crit_edge + %130 = zext nneg i16 %126 to i64 + %131 = add nuw nsw i16 %126, 1 + store i16 %131, ptr %125, align 2, !noalias !1867 + %132 = getelementptr inbounds nuw i8, ptr %.sroa.046.0, i64 8 + %133 = getelementptr inbounds nuw ptr, ptr %132, i64 %130 + store ptr %25, ptr %133, align 8, !noalias !1867 + %134 = getelementptr inbounds nuw i8, ptr %.sroa.046.0, i64 96 + %135 = getelementptr inbounds nuw ptr, ptr %134, i64 %130 + store ptr %26, ptr %135, align 8, !noalias !1867 + %136 = add nuw nsw i64 %130, 1 + %137 = getelementptr inbounds nuw i8, ptr %.sroa.046.0, i64 192 + %138 = getelementptr inbounds nuw ptr, ptr %137, i64 %136 + store ptr %.sroa.052.0.lcssa, ptr %138, align 8, !noalias !1867 + store ptr %.sroa.046.0, ptr %.sroa.052.0.lcssa, align 8, !noalias !1871 + %139 = trunc nuw nsw i64 %136 to i16 + %140 = getelementptr inbounds nuw i8, ptr %.sroa.052.0.lcssa, i64 184 + store i16 %139, ptr %140, align 8, !noalias !1871 + %141 = icmp eq i64 %.sroa.647.0, 0 + br i1 %141, label %.loopexit, label %.lr.ph.i30 + +.lr.ph.i30: ; preds = %129, %.lr.ph.i30 + %.sroa.03.06.i31 = phi i64 [ %149, %.lr.ph.i29 ], [ %.sroa.647.0, %126 ] + %.sroa.04.05.i32 = phi ptr [ %148, %.lr.ph.i29 ], [ %.sroa.046.0, %126 ] + %142 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i32, i64 186 + %143 = load i16, ptr %142, align 2, !noalias !1874, !noundef !12 + %144 = zext nneg i16 %143 to i64 + %145 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i32, i64 192 + %146 = icmp ult i16 %143, 12 + call void @llvm.assume(i1 %146) + %147 = getelementptr inbounds nuw ptr, ptr %145, i64 %144 + %148 = load ptr, ptr %147, align 8, !noalias !1877, !nonnull !12, !noundef !12 + %149 = add i64 %.sroa.03.06.i31, -1 + %150 = icmp eq i64 %149, 0 + br i1 %150, label %.loopexit, label %.lr.ph.i30 + +.loopexit: ; preds = %.lr.ph.i30, %129, %163 + %.sroa.0.1 = phi ptr [ %.sroa.0.0, %160 ], [ %.sroa.046.0, %126 ], [ %148, %.lr.ph.i29 ] + %151 = load i64, ptr %2, align 8, !noundef !12 + %152 = add i64 %151, 1 + store i64 %152, ptr %2, align 8 br label %19 -.lr.ph: ; preds = %120, %_ZN5alloc11collections5btree3mem7replace17h6dda342b2a939153E.exit39 - %.sroa.04.084 = phi i64 [ %150, %_ZN5alloc11collections5btree3mem7replace17h6dda342b2a939153E.exit39 ], [ 0, %120 ] - %.sroa.051.082 = phi ptr [ %151, %_ZN5alloc11collections5btree3mem7replace17h6dda342b2a939153E.exit39 ], [ %117, %120 ] - %150 = add nuw i64 %.sroa.04.084, 1 - %151 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h391f63560645abe9E.llvm.25249479008257743"() - to label %.noexc.i35 unwind label %.loopexit62, !noalias !1880 +.lr.ph: ; preds = %123, %_ZN5alloc11collections5btree3mem7replace17h6dda342b2a939153E.exit40 + %.sroa.04.085 = phi i64 [ %153, %_ZN5alloc11collections5btree3mem7replace17h6dda342b2a939153E.exit39 ], [ 0, %120 ] + %.sroa.052.083 = phi ptr [ %154, %_ZN5alloc11collections5btree3mem7replace17h6dda342b2a939153E.exit39 ], [ %120, %120 ] + %153 = add nuw i64 %.sroa.04.085, 1 + %154 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h391f63560645abe9E.llvm.25249479008257743"() + to label %.noexc.i35 unwind label %.loopexit63, !noalias !1880 -.noexc.i35: ; preds = %.lr.ph - %152 = icmp eq ptr %151, null - br i1 %152, label %153, label %_ZN5alloc11collections5btree3mem7replace17h6dda342b2a939153E.exit39 +.noexc.i36: ; preds = %.lr.ph + %155 = icmp eq ptr %154, null + br i1 %155, label %156, label %_ZN5alloc11collections5btree3mem7replace17h6dda342b2a939153E.exit40 -153: ; preds = %.noexc.i35 +156: ; preds = %.noexc.i36 invoke void @_ZN5alloc5alloc18handle_alloc_error17he572ac0a571405f2E(i64 noundef 8, i64 noundef 288) #28 to label %.noexc1.i36 unwind label %.loopexit.split-lp, !noalias !1880 -.noexc1.i36: ; preds = %153 +.noexc1.i37: ; preds = %156 unreachable -.loopexit62: ; preds = %.lr.ph +.loopexit63: ; preds = %.lr.ph %lpad.loopexit = landingpad { ptr, i32 } cleanup - br label %154 + br label %157 -.loopexit.split-lp: ; preds = %153 +.loopexit.split-lp: ; preds = %156 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup - br label %154 + br label %157 -154: ; preds = %.loopexit.split-lp, %.loopexit62 +157: ; preds = %.loopexit.split-lp, %.loopexit63 %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit62 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] invoke void @"_ZN93_$LT$alloc..collections..btree..mem..replace..PanicGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17h10aeed2765f7de5aE"(ptr noalias noundef nonnull align 1 %4) - to label %.body unwind label %155, !noalias !1880 + to label %.body unwind label %158, !noalias !1880 -155: ; preds = %154 - %156 = landingpad { ptr, i32 } +158: ; preds = %157 + %159 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h7e5529b9cf989fd4E() #26, !noalias !1880 unreachable -_ZN5alloc11collections5btree3mem7replace17h6dda342b2a939153E.exit39: ; preds = %.noexc.i35 - store ptr null, ptr %151, align 8, !noalias !1880 - %157 = getelementptr inbounds nuw i8, ptr %151, i64 186 - store i16 0, ptr %157, align 2, !noalias !1880 - %158 = getelementptr inbounds nuw i8, ptr %151, i64 192 - store ptr %.sroa.051.082, ptr %158, align 8, !noalias !1880 - store ptr %151, ptr %.sroa.051.082, align 8, !noalias !1883 - %159 = getelementptr inbounds nuw i8, ptr %.sroa.051.082, i64 184 - store i16 0, ptr %159, align 8, !noalias !1890 - %exitcond.not = icmp eq i64 %150, %116 +_ZN5alloc11collections5btree3mem7replace17h6dda342b2a939153E.exit40: ; preds = %.noexc.i36 + store ptr null, ptr %154, align 8, !noalias !1880 + %160 = getelementptr inbounds nuw i8, ptr %154, i64 186 + store i16 0, ptr %160, align 2, !noalias !1880 + %161 = getelementptr inbounds nuw i8, ptr %154, i64 192 + store ptr %.sroa.052.083, ptr %161, align 8, !noalias !1880 + store ptr %154, ptr %.sroa.052.083, align 8, !noalias !1883 + %162 = getelementptr inbounds nuw i8, ptr %.sroa.052.083, i64 184 + store i16 0, ptr %162, align 8, !noalias !1890 + %exitcond.not = icmp eq i64 %153, %119 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph -160: ; preds = %30 - %161 = zext nneg i16 %33 to i64 - %162 = add nuw nsw i16 %33, 1 - store i16 %162, ptr %32, align 2, !noalias !1891 - %163 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 8 - %164 = getelementptr inbounds nuw ptr, ptr %163, i64 %161 - store ptr %25, ptr %164, align 8, !noalias !1891 - %165 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 96 - %166 = getelementptr inbounds nuw ptr, ptr %165, i64 %161 - store ptr %26, ptr %166, align 8, !noalias !1891 +163: ; preds = %30 + %164 = zext nneg i16 %33 to i64 + %165 = add nuw nsw i16 %33, 1 + store i16 %165, ptr %32, align 2, !noalias !1891 + %166 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 8 + %167 = getelementptr inbounds nuw ptr, ptr %166, i64 %164 + store ptr %25, ptr %167, align 8, !noalias !1891 + %168 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 96 + %169 = getelementptr inbounds nuw ptr, ptr %168, i64 %164 + store ptr %26, ptr %169, align 8, !noalias !1891 br label %.loopexit -167: ; preds = %.body - %168 = landingpad { ptr, i32 } +170: ; preds = %.body + %171 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h7e5529b9cf989fd4E() #26 unreachable diff --git a/bench/uv-rs/optimized/cd91bxdrbjyy0s7hgoreg00sd.ll b/bench/uv-rs/optimized/cd91bxdrbjyy0s7hgoreg00sd.ll index 6871a4fd467..8814353c6e0 100644 --- a/bench/uv-rs/optimized/cd91bxdrbjyy0s7hgoreg00sd.ll +++ b/bench/uv-rs/optimized/cd91bxdrbjyy0s7hgoreg00sd.ll @@ -2247,7 +2247,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %12 = load i64, ptr %11, align 8, !noundef !3 %13 = load ptr, ptr %0, align 8, !nonnull !3, !noundef !3 %14 = icmp eq i64 %12, 0 - br i1 %14, label %.loopexit79, label %.lr.ph.i + br i1 %14, label %.loopexit80, label %.lr.ph.i .lr.ph.i: ; preds = %3, %.lr.ph.i %.sroa.03.06.i = phi i64 [ %22, %.lr.ph.i ], [ %12, %3 ] @@ -2262,28 +2262,28 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %21 = load ptr, ptr %20, align 8, !noalias !217, !nonnull !3, !noundef !3 %22 = add i64 %.sroa.03.06.i, -1 %23 = icmp eq i64 %22, 0 - br i1 %23, label %.loopexit79, label %.lr.ph.i + br i1 %23, label %.loopexit80, label %.lr.ph.i -.loopexit79: ; preds = %.lr.ph.i, %3 +.loopexit80: ; preds = %.lr.ph.i, %3 %.sroa.04.0.lcssa.i = phi ptr [ %13, %3 ], [ %21, %.lr.ph.i ] call void @llvm.lifetime.start.p0(ptr nonnull %10) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %10, ptr noundef nonnull align 8 dereferenceable(56) %1, i64 56, i1 false) br label %24 -24: ; preds = %.loopexit, %.loopexit79 - %.sroa.0.062 = phi ptr [ %.sroa.04.0.lcssa.i, %.loopexit79 ], [ %.sroa.0.1, %.loopexit ] +24: ; preds = %.loopexit, %.loopexit80 + %.sroa.0.063 = phi ptr [ %.sroa.04.0.lcssa.i, %.loopexit79 ], [ %.sroa.0.1, %.loopexit ] invoke void @"_ZN137_$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$K$C$V$C$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h661601749f192570E"(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %9, ptr noalias noundef nonnull align 8 dereferenceable(56) %10) to label %27 unwind label %25 -.body21: ; preds = %130, %171, %25 - %.pn = phi { ptr, i32 } [ %eh.lpad-body25.ph, %171 ], [ %26, %25 ], [ %131, %130 ] +.body22: ; preds = %133, %174, %25 + %.pn = phi { ptr, i32 } [ %eh.lpad-body26.ph, %171 ], [ %26, %25 ], [ %134, %130 ] invoke void @"_ZN4core3ptr435drop_in_place$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$std..path..PathBuf$C$alloc..collections..btree..set_val..SetValZST$C$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$std..path..PathBuf$GT$$C$alloc..collections..btree..set..BTreeSet$LT$std..path..PathBuf$GT$..from_sorted_iter$LT$alloc..vec..into_iter..IntoIter$LT$std..path..PathBuf$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17h67baa16c56356c1cE"(ptr noalias noundef nonnull align 8 dereferenceable(56) %10) #31 - to label %.body unwind label %172 + to label %.body unwind label %175 25: ; preds = %24 %26 = landingpad { ptr, i32 } cleanup - br label %.body21 + br label %.body22 27: ; preds = %24 %28 = load i64, ptr %9, align 8, !range !37, !noundef !3 @@ -2338,10 +2338,10 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. 45: ; preds = %27 call void @llvm.lifetime.start.p0(ptr nonnull %8) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(24) %9, i64 24, i1 false) - %46 = getelementptr inbounds nuw i8, ptr %.sroa.0.062, i64 274 + %46 = getelementptr inbounds nuw i8, ptr %.sroa.0.063, i64 274 %47 = load i16, ptr %46, align 2, !noundef !3 %48 = icmp ult i16 %47, 11 - br i1 %48, label %166, label %.preheader + br i1 %48, label %169, label %.preheader "_ZN4core3ptr435drop_in_place$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$std..path..PathBuf$C$alloc..collections..btree..set_val..SetValZST$C$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$std..path..PathBuf$GT$$C$alloc..collections..btree..set..BTreeSet$LT$std..path..PathBuf$GT$..from_sorted_iter$LT$alloc..vec..into_iter..IntoIter$LT$std..path..PathBuf$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17h67baa16c56356c1cE.exit": ; preds = %"_ZN4core3ptr95drop_in_place$LT$$LP$std..path..PathBuf$C$alloc..collections..btree..set_val..SetValZST$RP$$GT$17h49d3224b2b3f7040E.llvm.17527439469218822883.exit.i.i.i.i", %"_ZN4core3ptr297drop_in_place$LT$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$std..path..PathBuf$GT$$C$alloc..collections..btree..set..BTreeSet$LT$std..path..PathBuf$GT$..from_sorted_iter$LT$alloc..vec..into_iter..IntoIter$LT$std..path..PathBuf$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$17had9800545f70b31dE.exit.i.i" call void @llvm.lifetime.end.p0(ptr nonnull %10) @@ -2381,7 +2381,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %64 = icmp ult i16 %63, 5 br i1 %64, label %66, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h5e4c9fff80ecc7f0E.exit.i" -"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h5e4c9fff80ecc7f0E.exit.i": ; preds = %94, %52 +"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h5e4c9fff80ecc7f0E.exit.i": ; preds = %97, %52 %65 = icmp eq i64 %58, 0 br i1 %65, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17h979c1b5994ffefd6E.exit", label %.lr.ph.i18 @@ -2392,26 +2392,26 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %69 = load i16, ptr %68, align 2, !noalias !260, !noundef !3 %70 = zext nneg i16 %63 to i64 %.not.i.i = icmp ugt i16 %narrow.i, %69 - br i1 %.not.i.i, label %.noexc20, label %_ZN5alloc11collections5btree4node13move_to_slice17h8a5e49b51272f2b7E.exit.i.i, !prof !250 + br i1 %.not.i.i, label %.noexc20, label %71, !prof !250 .noexc20: ; preds = %66 call void @_ZN4core9panicking5panic17had768957450a0f86E(ptr noalias noundef nonnull readonly align 1 @anon.87d71366d4923eef96f1594b0a0401ec.47, i64 noundef 39, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.87d71366d4923eef96f1594b0a0401ec.48) #34 unreachable -_ZN5alloc11collections5btree4node13move_to_slice17h8a5e49b51272f2b7E.exit.i.i: ; preds = %66 - %71 = zext i16 %69 to i64 - %72 = sub nuw nsw i64 %71, %67 - %73 = trunc nuw i64 %72 to i16 - store i16 %73, ptr %68, align 2, !noalias !260 +71: ; preds = %66 + %72 = zext i16 %69 to i64 + %73 = sub nuw nsw i64 %72, %67 + %74 = trunc nuw i64 %73 to i16 + store i16 %74, ptr %68, align 2, !noalias !260 store i16 5, ptr %62, align 2, !noalias !260 - %74 = getelementptr inbounds nuw i8, ptr %61, i64 8 - %75 = getelementptr inbounds nuw { [3 x i64] }, ptr %74, i64 %67 - %76 = mul nuw nsw i64 %70, 24 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %75, ptr nonnull align 8 %74, i64 %76, i1 false), !alias.scope !263, !noalias !260 - %77 = add nuw nsw i64 %72, 1 - %78 = sub nuw nsw i64 %71, %77 + %75 = getelementptr inbounds nuw i8, ptr %61, i64 8 + %76 = getelementptr inbounds nuw { [3 x i64] }, ptr %75, i64 %67 + %77 = mul nuw nsw i64 %70, 24 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %76, ptr nonnull align 8 %75, i64 %77, i1 false), !alias.scope !263, !noalias !260 + %78 = add nuw nsw i64 %73, 1 + %79 = sub nuw nsw i64 %72, %78 %79 = getelementptr inbounds nuw i8, ptr %57, i64 8 - %80 = getelementptr inbounds nuw { [3 x i64] }, ptr %79, i64 %77 + %80 = getelementptr inbounds nuw { [3 x i64] }, ptr %79, i64 %78 %81 = mul nuw nsw i64 %78, 24 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %74, ptr nonnull readonly align 8 %80, i64 %81, i1 false), !alias.scope !266, !noalias !260 %82 = getelementptr inbounds nuw { [3 x i64] }, ptr %79, i64 %72 @@ -2420,283 +2420,283 @@ _ZN5alloc11collections5btree4node13move_to_slice17h8a5e49b51272f2b7E.exit.i.i: ; call void @llvm.lifetime.start.p0(ptr nonnull %5) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(24) %84, i64 24, i1 false), !noalias !260 call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %84, ptr noundef nonnull align 8 dereferenceable(24) %82, i64 24, i1 false), !noalias !260 - %85 = getelementptr inbounds nuw { [3 x i64] }, ptr %74, i64 %78 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %85, ptr noundef nonnull align 8 dereferenceable(24) %5, i64 24, i1 false), !noalias !260 + %88 = getelementptr inbounds nuw { [3 x i64] }, ptr %75, i64 %79 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %88, ptr noundef nonnull align 8 dereferenceable(24) %5, i64 24, i1 false), !noalias !260 call void @llvm.lifetime.end.p0(ptr nonnull %5) %cond.i = icmp eq i64 %58, 0 - br i1 %cond.i, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17h979c1b5994ffefd6E.exit", label %86 - -86: ; preds = %_ZN5alloc11collections5btree4node13move_to_slice17h8a5e49b51272f2b7E.exit.i.i - %87 = getelementptr inbounds nuw i8, ptr %61, i64 280 - %88 = getelementptr inbounds nuw ptr, ptr %87, i64 %67 - %89 = shl nuw nsw i64 %70, 3 - %90 = add nuw nsw i64 %89, 8 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %88, ptr noundef nonnull align 8 dereferenceable(1) %87, i64 %90, i1 false), !alias.scope !270, !noalias !260 - %91 = getelementptr inbounds nuw i8, ptr %57, i64 280 - %92 = getelementptr inbounds nuw ptr, ptr %91, i64 %77 - %93 = shl nuw nsw i64 %67, 3 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %87, ptr noundef nonnull readonly align 8 dereferenceable(1) %92, i64 %93, i1 false), !alias.scope !273, !noalias !260 - br label %94 - -94: ; preds = %94, %86 - %.sroa.0.05.i.i.i = phi i64 [ 0, %86 ], [ %95, %94 ] - %95 = add nuw nsw i64 %.sroa.0.05.i.i.i, 1 - %96 = getelementptr inbounds nuw ptr, ptr %87, i64 %.sroa.0.05.i.i.i - %97 = load ptr, ptr %96, align 8, !noalias !277, !nonnull !3, !noundef !3 - store ptr %61, ptr %97, align 8, !noalias !282 - %98 = trunc nuw nsw i64 %.sroa.0.05.i.i.i to i16 - %99 = getelementptr inbounds nuw i8, ptr %97, i64 272 - store i16 %98, ptr %99, align 8, !noalias !282 + br i1 %cond.i, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17h979c1b5994ffefd6E.exit", label %89 + +89: ; preds = %_ZN5alloc11collections5btree4node13move_to_slice17h8a5e49b51272f2b7E.exit.i.i + %90 = getelementptr inbounds nuw i8, ptr %61, i64 280 + %91 = getelementptr inbounds nuw ptr, ptr %90, i64 %67 + %92 = shl nuw nsw i64 %70, 3 + %93 = add nuw nsw i64 %92, 8 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %91, ptr noundef nonnull align 8 dereferenceable(1) %90, i64 %93, i1 false), !alias.scope !270, !noalias !260 + %94 = getelementptr inbounds nuw i8, ptr %57, i64 280 + %95 = getelementptr inbounds nuw ptr, ptr %94, i64 %78 + %96 = shl nuw nsw i64 %67, 3 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %90, ptr noundef nonnull readonly align 8 dereferenceable(1) %95, i64 %96, i1 false), !alias.scope !273, !noalias !260 + br label %97 + +97: ; preds = %97, %89 + %.sroa.0.05.i.i.i = phi i64 [ 0, %86 ], [ %98, %94 ] + %98 = add nuw nsw i64 %.sroa.0.05.i.i.i, 1 + %99 = getelementptr inbounds nuw ptr, ptr %90, i64 %.sroa.0.05.i.i.i + %100 = load ptr, ptr %99, align 8, !noalias !277, !nonnull !3, !noundef !3 + store ptr %61, ptr %100, align 8, !noalias !282 + %101 = trunc nuw nsw i64 %.sroa.0.05.i.i.i to i16 + %102 = getelementptr inbounds nuw i8, ptr %100, i64 272 + store i16 %101, ptr %102, align 8, !noalias !282 %exitcond.not.i.i.i = icmp eq i64 %.sroa.0.05.i.i.i, 5 - br i1 %exitcond.not.i.i.i, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h5e4c9fff80ecc7f0E.exit.i", label %94 + br i1 %exitcond.not.i.i.i, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h5e4c9fff80ecc7f0E.exit.i", label %97 "_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17h979c1b5994ffefd6E.exit": ; preds = %_ZN5alloc11collections5btree4node13move_to_slice17h8a5e49b51272f2b7E.exit.i.i, %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h5e4c9fff80ecc7f0E.exit.i", %"_ZN4core3ptr435drop_in_place$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$std..path..PathBuf$C$alloc..collections..btree..set_val..SetValZST$C$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$std..path..PathBuf$GT$$C$alloc..collections..btree..set..BTreeSet$LT$std..path..PathBuf$GT$..from_sorted_iter$LT$alloc..vec..into_iter..IntoIter$LT$std..path..PathBuf$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17h67baa16c56356c1cE.exit" ret void -.preheader: ; preds = %45, %102 - %.sroa.5.0 = phi i64 [ %103, %102 ], [ 0, %45 ] - %.sroa.0.0 = phi ptr [ %100, %102 ], [ %.sroa.0.062, %45 ] - %100 = load ptr, ptr %.sroa.0.0, align 8, !noalias !283, !noundef !3 - %101 = icmp eq ptr %100, null - br i1 %101, label %107, label %102 +.preheader: ; preds = %45, %105 + %.sroa.5.0 = phi i64 [ %106, %102 ], [ 0, %45 ] + %.sroa.0.0 = phi ptr [ %103, %102 ], [ %.sroa.0.063, %45 ] + %103 = load ptr, ptr %.sroa.0.0, align 8, !noalias !283, !noundef !3 + %104 = icmp eq ptr %103, null + br i1 %104, label %110, label %105 -.loopexit74: ; preds = %.loopexit68 - %lpad.loopexit76 = landingpad { ptr, i32 } +.loopexit75: ; preds = %.loopexit69 + %lpad.loopexit77 = landingpad { ptr, i32 } cleanup - br label %171 + br label %174 -.loopexit.split-lp75: ; preds = %124 - %lpad.loopexit.split-lp77 = landingpad { ptr, i32 } +.loopexit.split-lp76: ; preds = %127 + %lpad.loopexit.split-lp78 = landingpad { ptr, i32 } cleanup - br label %171 + br label %174 -102: ; preds = %.preheader - %103 = add i64 %.sroa.5.0, 1 - %104 = getelementptr inbounds nuw i8, ptr %100, i64 274 - %105 = load i16, ptr %104, align 2, !noundef !3 - %106 = icmp ult i16 %105, 11 - br i1 %106, label %.loopexit68, label %.preheader +105: ; preds = %.preheader + %106 = add i64 %.sroa.5.0, 1 + %107 = getelementptr inbounds nuw i8, ptr %103, i64 274 + %108 = load i16, ptr %107, align 2, !noundef !3 + %109 = icmp ult i16 %108, 11 + br i1 %109, label %.loopexit69, label %.preheader -107: ; preds = %.preheader +110: ; preds = %.preheader call void @llvm.experimental.noalias.scope.decl(metadata !286) - %108 = load ptr, ptr %0, align 8, !alias.scope !286, !nonnull !3, !noundef !3 - %109 = load i64, ptr %11, align 8, !alias.scope !286, !noundef !3 - %110 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h8c84883ef03924a3E.llvm.14237793921444769281"() - to label %.noexc.i unwind label %.loopexit69, !noalias !286 + %111 = load ptr, ptr %0, align 8, !alias.scope !286, !nonnull !3, !noundef !3 + %112 = load i64, ptr %11, align 8, !alias.scope !286, !noundef !3 + %113 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h8c84883ef03924a3E.llvm.14237793921444769281"() + to label %.noexc.i unwind label %.loopexit70, !noalias !286 -.noexc.i: ; preds = %107 - %111 = icmp eq ptr %110, null - br i1 %111, label %112, label %116 +.noexc.i: ; preds = %110 + %114 = icmp eq ptr %113, null + br i1 %114, label %115, label %119 -112: ; preds = %.noexc.i +115: ; preds = %.noexc.i invoke void @_ZN5alloc5alloc18handle_alloc_error17he572ac0a571405f2E(i64 noundef 8, i64 noundef 376) #34 - to label %.noexc1.i unwind label %.loopexit.split-lp70, !noalias !286 + to label %.noexc1.i unwind label %.loopexit.split-lp71, !noalias !286 -.noexc1.i: ; preds = %112 +.noexc1.i: ; preds = %115 unreachable -.loopexit69: ; preds = %107 - %lpad.loopexit71 = landingpad { ptr, i32 } +.loopexit70: ; preds = %110 + %lpad.loopexit72 = landingpad { ptr, i32 } cleanup - br label %113 + br label %116 -.loopexit.split-lp70: ; preds = %112 - %lpad.loopexit.split-lp72 = landingpad { ptr, i32 } +.loopexit.split-lp71: ; preds = %115 + %lpad.loopexit.split-lp73 = landingpad { ptr, i32 } cleanup - br label %113 + br label %116 -113: ; preds = %.loopexit.split-lp70, %.loopexit69 - %lpad.phi73 = phi { ptr, i32 } [ %lpad.loopexit71, %.loopexit69 ], [ %lpad.loopexit.split-lp72, %.loopexit.split-lp70 ] +116: ; preds = %.loopexit.split-lp71, %.loopexit70 + %lpad.phi74 = phi { ptr, i32 } [ %lpad.loopexit72, %.loopexit69 ], [ %lpad.loopexit.split-lp73, %.loopexit.split-lp70 ] invoke void @"_ZN93_$LT$alloc..collections..btree..mem..replace..PanicGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17h10aeed2765f7de5aE"(ptr noalias noundef nonnull align 1 %4) - to label %171 unwind label %114, !noalias !286 + to label %171 unwind label %117, !noalias !286 -114: ; preds = %113 - %115 = landingpad { ptr, i32 } +117: ; preds = %116 + %118 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h7e5529b9cf989fd4E() #32, !noalias !286 unreachable -116: ; preds = %.noexc.i - store ptr null, ptr %110, align 8, !noalias !286 - %117 = getelementptr inbounds nuw i8, ptr %110, i64 274 - store i16 0, ptr %117, align 2, !noalias !286 - %118 = getelementptr inbounds nuw i8, ptr %110, i64 280 - store ptr %108, ptr %118, align 8, !noalias !286 - %119 = add i64 %109, 1 - store ptr %110, ptr %108, align 8, !noalias !289 - %120 = getelementptr inbounds nuw i8, ptr %108, i64 272 - store i16 0, ptr %120, align 8, !noalias !296 - store ptr %110, ptr %0, align 8, !alias.scope !286 - store i64 %119, ptr %11, align 8, !alias.scope !286 - br label %.loopexit68 - -.loopexit68: ; preds = %102, %116 - %.sroa.046.0 = phi ptr [ %110, %116 ], [ %100, %102 ] - %.sroa.647.0 = phi i64 [ %119, %116 ], [ %103, %102 ] - %121 = add i64 %.sroa.647.0, -1 - %122 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h5e870dbda49dc12eE.llvm.14237793921444769281"() - to label %.noexc26 unwind label %.loopexit74 - -.noexc26: ; preds = %.loopexit68 - %123 = icmp eq ptr %122, null - br i1 %123, label %124, label %125 - -124: ; preds = %.noexc26 +119: ; preds = %.noexc.i + store ptr null, ptr %113, align 8, !noalias !286 + %120 = getelementptr inbounds nuw i8, ptr %113, i64 274 + store i16 0, ptr %120, align 2, !noalias !286 + %121 = getelementptr inbounds nuw i8, ptr %113, i64 280 + store ptr %111, ptr %121, align 8, !noalias !286 + %122 = add i64 %112, 1 + store ptr %113, ptr %111, align 8, !noalias !289 + %123 = getelementptr inbounds nuw i8, ptr %111, i64 272 + store i16 0, ptr %123, align 8, !noalias !296 + store ptr %113, ptr %0, align 8, !alias.scope !286 + store i64 %122, ptr %11, align 8, !alias.scope !286 + br label %.loopexit69 + +.loopexit69: ; preds = %105, %119 + %.sroa.047.0 = phi ptr [ %113, %116 ], [ %103, %102 ] + %.sroa.648.0 = phi i64 [ %122, %116 ], [ %106, %102 ] + %124 = add i64 %.sroa.648.0, -1 + %125 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h5e870dbda49dc12eE.llvm.14237793921444769281"() + to label %.noexc26 unwind label %.loopexit75 + +.noexc27: ; preds = %.loopexit69 + %126 = icmp eq ptr %125, null + br i1 %126, label %127, label %128 + +127: ; preds = %.noexc27 invoke void @_ZN5alloc5alloc18handle_alloc_error17he572ac0a571405f2E(i64 noundef 8, i64 noundef 280) #34 - to label %.noexc27 unwind label %.loopexit.split-lp75 + to label %.noexc27 unwind label %.loopexit.split-lp76 -.noexc27: ; preds = %124 +.noexc28: ; preds = %127 unreachable -125: ; preds = %.noexc26 - store ptr null, ptr %122, align 8 - %126 = getelementptr inbounds nuw i8, ptr %122, i64 274 - store i16 0, ptr %126, align 2 - %.not = icmp eq i64 %121, 0 - br i1 %.not, label %.loopexit109, label %.lr.ph +128: ; preds = %.noexc27 + store ptr null, ptr %125, align 8 + %129 = getelementptr inbounds nuw i8, ptr %125, i64 274 + store i16 0, ptr %129, align 2 + %.not = icmp eq i64 %124, 0 + br i1 %.not, label %.loopexit111, label %.lr.ph -.invoke.i: ; preds = %.loopexit109 +.invoke.i: ; preds = %.loopexit111 invoke void @_ZN4core9panicking5panic17had768957450a0f86E(ptr noalias noundef nonnull readonly align 1 @anon.87d71366d4923eef96f1594b0a0401ec.36.llvm.13776314953183602680, i64 noundef 32, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.87d71366d4923eef96f1594b0a0401ec.40) #34 - to label %.cont.i unwind label %130, !noalias !297 + to label %.cont.i unwind label %133, !noalias !297 .cont.i: ; preds = %.invoke.i unreachable -.loopexit109: ; preds = %_ZN5alloc11collections5btree3mem7replace17heb2315a8c7a47dcdE.exit42, %125 - %.sroa.052.0.lcssa = phi ptr [ %122, %125 ], [ %157, %_ZN5alloc11collections5btree3mem7replace17heb2315a8c7a47dcdE.exit42 ] +.loopexit111: ; preds = %_ZN5alloc11collections5btree3mem7replace17heb2315a8c7a47dcdE.exit43, %128 + %.sroa.053.0.lcssa = phi ptr [ %125, %125 ], [ %160, %_ZN5alloc11collections5btree3mem7replace17heb2315a8c7a47dcdE.exit42 ] call void @llvm.lifetime.start.p0(ptr nonnull %7) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(24) %9, i64 24, i1 false) - %127 = getelementptr inbounds nuw i8, ptr %.sroa.046.0, i64 274 - %128 = load i16, ptr %127, align 2, !noalias !297, !noundef !3 - %129 = icmp ult i16 %128, 11 - br i1 %129, label %134, label %.invoke.i, !prof !120 + %130 = getelementptr inbounds nuw i8, ptr %.sroa.047.0, i64 274 + %131 = load i16, ptr %130, align 2, !noalias !297, !noundef !3 + %132 = icmp ult i16 %131, 11 + br i1 %132, label %137, label %.invoke.i, !prof !120 -130: ; preds = %.invoke.i - %131 = landingpad { ptr, i32 } +133: ; preds = %.invoke.i + %134 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h1d12f4ff3d9ce15bE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %7) #31 - to label %.body21 unwind label %132 + to label %.body21 unwind label %135 -132: ; preds = %130 - %133 = landingpad { ptr, i32 } +135: ; preds = %133 + %136 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h7e5529b9cf989fd4E() #32 unreachable -134: ; preds = %.loopexit109 - %135 = zext nneg i16 %128 to i64 - %136 = add nuw nsw i16 %128, 1 - store i16 %136, ptr %127, align 2, !noalias !297 - %137 = getelementptr inbounds nuw i8, ptr %.sroa.046.0, i64 8 - %138 = getelementptr inbounds nuw { [3 x i64] }, ptr %137, i64 %135 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %138, ptr noundef nonnull align 8 dereferenceable(24) %9, i64 24, i1 false) - %139 = add nuw nsw i64 %135, 1 - %140 = getelementptr inbounds nuw i8, ptr %.sroa.046.0, i64 280 - %141 = getelementptr inbounds nuw ptr, ptr %140, i64 %139 - store ptr %.sroa.052.0.lcssa, ptr %141, align 8, !noalias !297 - store ptr %.sroa.046.0, ptr %.sroa.052.0.lcssa, align 8, !noalias !300 - %142 = trunc nuw nsw i64 %139 to i16 - %143 = getelementptr inbounds nuw i8, ptr %.sroa.052.0.lcssa, i64 272 - store i16 %142, ptr %143, align 8, !noalias !300 +137: ; preds = %.loopexit111 + %138 = zext nneg i16 %131 to i64 + %139 = add nuw nsw i16 %131, 1 + store i16 %139, ptr %130, align 2, !noalias !297 + %140 = getelementptr inbounds nuw i8, ptr %.sroa.047.0, i64 8 + %141 = getelementptr inbounds nuw { [3 x i64] }, ptr %140, i64 %138 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %141, ptr noundef nonnull align 8 dereferenceable(24) %9, i64 24, i1 false) + %142 = add nuw nsw i64 %138, 1 + %143 = getelementptr inbounds nuw i8, ptr %.sroa.047.0, i64 280 + %144 = getelementptr inbounds nuw ptr, ptr %143, i64 %142 + store ptr %.sroa.053.0.lcssa, ptr %144, align 8, !noalias !297 + store ptr %.sroa.047.0, ptr %.sroa.053.0.lcssa, align 8, !noalias !300 + %145 = trunc nuw nsw i64 %142 to i16 + %146 = getelementptr inbounds nuw i8, ptr %.sroa.053.0.lcssa, i64 272 + store i16 %145, ptr %146, align 8, !noalias !300 call void @llvm.lifetime.end.p0(ptr nonnull %7) - %144 = icmp eq i64 %.sroa.647.0, 0 - br i1 %144, label %.loopexit, label %.lr.ph.i31 - -.lr.ph.i31: ; preds = %134, %.lr.ph.i31 - %.sroa.03.06.i32 = phi i64 [ %152, %.lr.ph.i31 ], [ %.sroa.647.0, %134 ] - %.sroa.04.05.i33 = phi ptr [ %151, %.lr.ph.i31 ], [ %.sroa.046.0, %134 ] - %145 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i33, i64 274 - %146 = load i16, ptr %145, align 2, !noalias !303, !noundef !3 - %147 = zext nneg i16 %146 to i64 - %148 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i33, i64 280 - %149 = icmp ult i16 %146, 12 - call void @llvm.assume(i1 %149) - %150 = getelementptr inbounds nuw ptr, ptr %148, i64 %147 - %151 = load ptr, ptr %150, align 8, !noalias !306, !nonnull !3, !noundef !3 - %152 = add i64 %.sroa.03.06.i32, -1 - %153 = icmp eq i64 %152, 0 - br i1 %153, label %.loopexit, label %.lr.ph.i31 - -.loopexit: ; preds = %.lr.ph.i31, %134, %166 - %.sroa.0.1 = phi ptr [ %.sroa.0.062, %166 ], [ %.sroa.046.0, %134 ], [ %151, %.lr.ph.i31 ] - %154 = load i64, ptr %2, align 8, !noundef !3 - %155 = add i64 %154, 1 - store i64 %155, ptr %2, align 8 + %147 = icmp eq i64 %.sroa.648.0, 0 + br i1 %147, label %.loopexit, label %.lr.ph.i32 + +.lr.ph.i32: ; preds = %137, %.lr.ph.i32 + %.sroa.03.06.i33 = phi i64 [ %155, %.lr.ph.i31 ], [ %.sroa.648.0, %134 ] + %.sroa.04.05.i34 = phi ptr [ %154, %.lr.ph.i31 ], [ %.sroa.047.0, %134 ] + %148 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i34, i64 274 + %149 = load i16, ptr %148, align 2, !noalias !303, !noundef !3 + %150 = zext nneg i16 %149 to i64 + %151 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i34, i64 280 + %152 = icmp ult i16 %149, 12 + call void @llvm.assume(i1 %152) + %153 = getelementptr inbounds nuw ptr, ptr %151, i64 %150 + %154 = load ptr, ptr %153, align 8, !noalias !306, !nonnull !3, !noundef !3 + %155 = add i64 %.sroa.03.06.i33, -1 + %156 = icmp eq i64 %155, 0 + br i1 %156, label %.loopexit, label %.lr.ph.i32 + +.loopexit: ; preds = %.lr.ph.i32, %137, %169 + %.sroa.0.1 = phi ptr [ %.sroa.0.063, %166 ], [ %.sroa.047.0, %134 ], [ %154, %.lr.ph.i31 ] + %157 = load i64, ptr %2, align 8, !noundef !3 + %158 = add i64 %157, 1 + store i64 %158, ptr %2, align 8 call void @llvm.lifetime.end.p0(ptr nonnull %8) br label %24 -.lr.ph: ; preds = %125, %_ZN5alloc11collections5btree3mem7replace17heb2315a8c7a47dcdE.exit42 - %.sroa.02.089 = phi i64 [ %156, %_ZN5alloc11collections5btree3mem7replace17heb2315a8c7a47dcdE.exit42 ], [ 0, %125 ] - %.sroa.052.087 = phi ptr [ %157, %_ZN5alloc11collections5btree3mem7replace17heb2315a8c7a47dcdE.exit42 ], [ %122, %125 ] - %156 = add nuw i64 %.sroa.02.089, 1 - %157 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h8c84883ef03924a3E.llvm.14237793921444769281"() - to label %.noexc.i37 unwind label %.loopexit67, !noalias !309 +.lr.ph: ; preds = %128, %_ZN5alloc11collections5btree3mem7replace17heb2315a8c7a47dcdE.exit43 + %.sroa.02.090 = phi i64 [ %159, %_ZN5alloc11collections5btree3mem7replace17heb2315a8c7a47dcdE.exit42 ], [ 0, %125 ] + %.sroa.053.088 = phi ptr [ %160, %_ZN5alloc11collections5btree3mem7replace17heb2315a8c7a47dcdE.exit42 ], [ %125, %125 ] + %159 = add nuw i64 %.sroa.02.090, 1 + %160 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h8c84883ef03924a3E.llvm.14237793921444769281"() + to label %.noexc.i37 unwind label %.loopexit68, !noalias !309 -.noexc.i37: ; preds = %.lr.ph - %158 = icmp eq ptr %157, null - br i1 %158, label %159, label %_ZN5alloc11collections5btree3mem7replace17heb2315a8c7a47dcdE.exit42 +.noexc.i38: ; preds = %.lr.ph + %161 = icmp eq ptr %160, null + br i1 %161, label %162, label %_ZN5alloc11collections5btree3mem7replace17heb2315a8c7a47dcdE.exit43 -159: ; preds = %.noexc.i37 +162: ; preds = %.noexc.i38 invoke void @_ZN5alloc5alloc18handle_alloc_error17he572ac0a571405f2E(i64 noundef 8, i64 noundef 376) #34 to label %.noexc1.i38 unwind label %.loopexit.split-lp, !noalias !309 -.noexc1.i38: ; preds = %159 +.noexc1.i39: ; preds = %162 unreachable -.loopexit67: ; preds = %.lr.ph +.loopexit68: ; preds = %.lr.ph %lpad.loopexit = landingpad { ptr, i32 } cleanup - br label %160 + br label %163 -.loopexit.split-lp: ; preds = %159 +.loopexit.split-lp: ; preds = %162 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup - br label %160 + br label %163 -160: ; preds = %.loopexit.split-lp, %.loopexit67 +163: ; preds = %.loopexit.split-lp, %.loopexit68 %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit67 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] invoke void @"_ZN93_$LT$alloc..collections..btree..mem..replace..PanicGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17h10aeed2765f7de5aE"(ptr noalias noundef nonnull align 1 %4) - to label %171 unwind label %161, !noalias !309 + to label %171 unwind label %164, !noalias !309 -161: ; preds = %160 - %162 = landingpad { ptr, i32 } +164: ; preds = %163 + %165 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h7e5529b9cf989fd4E() #32, !noalias !309 unreachable -_ZN5alloc11collections5btree3mem7replace17heb2315a8c7a47dcdE.exit42: ; preds = %.noexc.i37 - store ptr null, ptr %157, align 8, !noalias !309 - %163 = getelementptr inbounds nuw i8, ptr %157, i64 274 - store i16 0, ptr %163, align 2, !noalias !309 - %164 = getelementptr inbounds nuw i8, ptr %157, i64 280 - store ptr %.sroa.052.087, ptr %164, align 8, !noalias !309 - store ptr %157, ptr %.sroa.052.087, align 8, !noalias !312 - %165 = getelementptr inbounds nuw i8, ptr %.sroa.052.087, i64 272 - store i16 0, ptr %165, align 8, !noalias !319 - %exitcond.not = icmp eq i64 %156, %121 - br i1 %exitcond.not, label %.loopexit109, label %.lr.ph - -166: ; preds = %45 - %167 = zext nneg i16 %47 to i64 - %168 = add nuw nsw i16 %47, 1 - store i16 %168, ptr %46, align 2, !noalias !320 - %169 = getelementptr inbounds nuw i8, ptr %.sroa.0.062, i64 8 - %170 = getelementptr inbounds nuw { [3 x i64] }, ptr %169, i64 %167 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %170, ptr noundef nonnull align 8 dereferenceable(24) %9, i64 24, i1 false) +_ZN5alloc11collections5btree3mem7replace17heb2315a8c7a47dcdE.exit43: ; preds = %.noexc.i38 + store ptr null, ptr %160, align 8, !noalias !309 + %166 = getelementptr inbounds nuw i8, ptr %160, i64 274 + store i16 0, ptr %166, align 2, !noalias !309 + %167 = getelementptr inbounds nuw i8, ptr %160, i64 280 + store ptr %.sroa.053.088, ptr %167, align 8, !noalias !309 + store ptr %160, ptr %.sroa.053.088, align 8, !noalias !312 + %168 = getelementptr inbounds nuw i8, ptr %.sroa.053.088, i64 272 + store i16 0, ptr %168, align 8, !noalias !319 + %exitcond.not = icmp eq i64 %159, %124 + br i1 %exitcond.not, label %.loopexit111, label %.lr.ph + +169: ; preds = %45 + %170 = zext nneg i16 %47 to i64 + %171 = add nuw nsw i16 %47, 1 + store i16 %171, ptr %46, align 2, !noalias !320 + %172 = getelementptr inbounds nuw i8, ptr %.sroa.0.063, i64 8 + %173 = getelementptr inbounds nuw { [3 x i64] }, ptr %172, i64 %170 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %173, ptr noundef nonnull align 8 dereferenceable(24) %9, i64 24, i1 false) br label %.loopexit -171: ; preds = %.loopexit74, %.loopexit.split-lp75, %113, %160 - %eh.lpad-body25.ph = phi { ptr, i32 } [ %lpad.phi73, %113 ], [ %lpad.phi, %160 ], [ %lpad.loopexit76, %.loopexit74 ], [ %lpad.loopexit.split-lp77, %.loopexit.split-lp75 ] +174: ; preds = %.loopexit75, %.loopexit.split-lp76, %116, %163 + %eh.lpad-body26.ph = phi { ptr, i32 } [ %lpad.phi74, %113 ], [ %lpad.phi, %160 ], [ %lpad.loopexit77, %.loopexit74 ], [ %lpad.loopexit.split-lp78, %.loopexit.split-lp75 ] invoke void @"_ZN4core3ptr39drop_in_place$LT$std..path..PathBuf$GT$17h1d12f4ff3d9ce15bE"(ptr noalias noundef nonnull align 8 dereferenceable(24) %8) #31 - to label %.body21 unwind label %172 + to label %.body21 unwind label %175 -172: ; preds = %171, %.body21 - %173 = landingpad { ptr, i32 } +175: ; preds = %174, %.body22 + %176 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h7e5529b9cf989fd4E() #32 unreachable -.body: ; preds = %.body21, %32 +.body: ; preds = %.body22, %32 %.pn9 = phi { ptr, i32 } [ %.pn, %.body21 ], [ %33, %32 ] resume { ptr, i32 } %.pn9 } diff --git a/bench/wasmi-rs/optimized/apu427tbl3luqie4ryqrtwt7n.ll b/bench/wasmi-rs/optimized/apu427tbl3luqie4ryqrtwt7n.ll index 7384f44315f..bc1b62260b0 100644 --- a/bench/wasmi-rs/optimized/apu427tbl3luqie4ryqrtwt7n.ll +++ b/bench/wasmi-rs/optimized/apu427tbl3luqie4ryqrtwt7n.ll @@ -5387,7 +5387,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %8 = load i64, ptr %7, align 8, !noundef !3 %9 = load ptr, ptr %0, align 8, !nonnull !3, !noundef !3 %10 = icmp eq i64 %8, 0 - br i1 %10, label %.loopexit67, label %.lr.ph.i + br i1 %10, label %.loopexit68, label %.lr.ph.i .lr.ph.i: ; preds = %3, %.lr.ph.i %.sroa.03.06.i = phi i64 [ %18, %.lr.ph.i ], [ %8, %3 ] @@ -5402,9 +5402,9 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %17 = load ptr, ptr %16, align 8, !noalias !1056, !nonnull !3, !noundef !3 %18 = add i64 %.sroa.03.06.i, -1 %19 = icmp eq i64 %18, 0 - br i1 %19, label %.loopexit67, label %.lr.ph.i + br i1 %19, label %.loopexit68, label %.lr.ph.i -.loopexit67: ; preds = %.lr.ph.i, %3 +.loopexit68: ; preds = %.lr.ph.i, %3 %.sroa.04.0.lcssa.i = phi ptr [ %9, %3 ], [ %17, %.lr.ph.i ] call void @llvm.lifetime.start.p0(ptr nonnull %6) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %6, ptr noundef nonnull align 8 dereferenceable(56) %1, i64 56, i1 false) @@ -5413,16 +5413,16 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %22 = getelementptr inbounds nuw i8, ptr %5, i64 20 br label %23 -23: ; preds = %.loopexit, %.loopexit67 - %.sroa.0.061 = phi ptr [ %.sroa.04.0.lcssa.i, %.loopexit67 ], [ %.sroa.0.1, %.loopexit ] +23: ; preds = %.loopexit, %.loopexit68 + %.sroa.0.062 = phi ptr [ %.sroa.04.0.lcssa.i, %.loopexit67 ], [ %.sroa.0.1, %.loopexit ] call void @llvm.lifetime.start.p0(ptr nonnull %5) invoke void @"_ZN137_$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$K$C$V$C$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h9976c62c67a5f3aeE"(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %5, ptr noalias noundef nonnull align 8 dereferenceable(56) %6) to label %26 unwind label %24 -.body: ; preds = %191, %189, %143, %140, %24 - %.pn = phi { ptr, i32 } [ %25, %24 ], [ %141, %140 ], [ %141, %143 ], [ %eh.lpad-body24.ph, %189 ], [ %eh.lpad-body24.ph, %191 ] +.body: ; preds = %194, %192, %146, %143, %24 + %.pn = phi { ptr, i32 } [ %25, %24 ], [ %144, %140 ], [ %144, %143 ], [ %eh.lpad-body25.ph, %189 ], [ %eh.lpad-body24.ph, %191 ] invoke void @"_ZN4core3ptr266drop_in_place$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$alloc..boxed..Box$LT$str$GT$$C$wasmi..module..export..ExternIdx$C$alloc..vec..into_iter..IntoIter$LT$$LP$alloc..boxed..Box$LT$str$GT$$C$wasmi..module..export..ExternIdx$RP$$GT$$GT$$GT$17h1335b101281c380bE"(ptr noalias noundef nonnull align 8 dereferenceable(56) %6) #21 - to label %194 unwind label %192 + to label %194 unwind label %195 24: ; preds = %23 %25 = landingpad { ptr, i32 } @@ -5438,10 +5438,10 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %29 = load ptr, ptr %5, align 8, !nonnull !3, !align !12, !noundef !3 %30 = load i64, ptr %21, align 8, !noundef !3 %31 = load i32, ptr %22, align 4, !noundef !3 - %32 = getelementptr inbounds nuw i8, ptr %.sroa.0.061, i64 274 + %32 = getelementptr inbounds nuw i8, ptr %.sroa.0.062, i64 274 %33 = load i16, ptr %32, align 2, !noundef !3 %34 = icmp ult i16 %33, 11 - br i1 %34, label %181, label %.preheader + br i1 %34, label %184, label %.preheader 35: ; preds = %26 call void @llvm.lifetime.end.p0(ptr nonnull %5) @@ -5483,7 +5483,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %51 = icmp ult i16 %50, 5 br i1 %51, label %53, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17hec8709796a5de8fdE.exit.i" -"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17hec8709796a5de8fdE.exit.i": ; preds = %101, %39 +"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17hec8709796a5de8fdE.exit.i": ; preds = %104, %39 %52 = icmp eq i64 %45, 0 br i1 %52, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17hadee3f7b929347ffE.exit", label %.lr.ph.i19 @@ -5493,30 +5493,30 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %55 = getelementptr inbounds nuw i8, ptr %44, i64 274 %56 = load i16, ptr %55, align 2, !noalias !1069, !noundef !3 %.not.i.i = icmp ugt i16 %narrow.i, %56 - br i1 %.not.i.i, label %.noexc20, label %_ZN5alloc11collections5btree4node13move_to_slice17h599b7004fce3b67bE.exit.i.i, !prof !5 + br i1 %.not.i.i, label %.noexc20, label %57, !prof !5 .noexc20: ; preds = %53 call void @_ZN4core9panicking5panic17h13ee8adf815f0d87E(ptr noalias noundef nonnull readonly align 1 @anon.6067d76e8933c42764495b1ece5cceb0.35, i64 noundef 39, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.6067d76e8933c42764495b1ece5cceb0.36) #20 unreachable -_ZN5alloc11collections5btree4node13move_to_slice17h599b7004fce3b67bE.exit.i.i: ; preds = %53 - %57 = zext i16 %56 to i64 - %58 = zext nneg i16 %50 to i64 - %59 = sub nuw nsw i64 %57, %54 - %60 = trunc nuw i64 %59 to i16 - store i16 %60, ptr %55, align 2, !noalias !1069 +57: ; preds = %53 + %58 = zext i16 %56 to i64 + %59 = zext nneg i16 %50 to i64 + %60 = sub nuw nsw i64 %58, %54 + %61 = trunc nuw i64 %60 to i16 + store i16 %61, ptr %55, align 2, !noalias !1069 store i16 5, ptr %49, align 2, !noalias !1069 - %61 = getelementptr inbounds nuw { [2 x i64] }, ptr %48, i64 %54 - %62 = shl nuw nsw i64 %58, 4 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %61, ptr nonnull align 8 %48, i64 %62, i1 false), !alias.scope !1072, !noalias !1069 - %63 = getelementptr inbounds nuw i8, ptr %48, i64 184 - %64 = getelementptr inbounds nuw { [2 x i32] }, ptr %63, i64 %54 - %65 = shl nuw nsw i64 %58, 3 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %64, ptr nonnull align 4 %63, i64 %65, i1 false), !alias.scope !1075, !noalias !1069 - %66 = add nuw nsw i64 %59, 1 - %67 = sub nuw nsw i64 %57, %66 + %62 = getelementptr inbounds nuw { [2 x i64] }, ptr %48, i64 %54 + %63 = shl nuw nsw i64 %59, 4 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %62, ptr nonnull align 8 %48, i64 %63, i1 false), !alias.scope !1072, !noalias !1069 + %64 = getelementptr inbounds nuw i8, ptr %48, i64 184 + %65 = getelementptr inbounds nuw { [2 x i32] }, ptr %64, i64 %54 + %66 = shl nuw nsw i64 %59, 3 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %65, ptr nonnull align 4 %64, i64 %66, i1 false), !alias.scope !1075, !noalias !1069 + %67 = add nuw nsw i64 %60, 1 + %68 = sub nuw nsw i64 %58, %67 %68 = getelementptr inbounds nuw { [2 x i64] }, ptr %44, i64 %66 - %69 = shl nuw nsw i64 %67, 4 + %69 = shl nuw nsw i64 %68, 4 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %48, ptr nonnull readonly align 8 %68, i64 %69, i1 false), !alias.scope !1078, !noalias !1069 %70 = getelementptr inbounds nuw i8, ptr %44, i64 184 %71 = getelementptr inbounds nuw { [2 x i32] }, ptr %70, i64 %66 @@ -5524,269 +5524,269 @@ _ZN5alloc11collections5btree4node13move_to_slice17h599b7004fce3b67bE.exit.i.i: ; call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %63, ptr nonnull readonly align 4 %71, i64 %72, i1 false), !alias.scope !1082, !noalias !1069 %73 = getelementptr inbounds nuw { [2 x i64] }, ptr %44, i64 %59 %74 = load ptr, ptr %73, align 8, !noalias !1069, !nonnull !3, !align !12, !noundef !3 - %75 = getelementptr inbounds nuw i8, ptr %73, i64 8 + %71 = getelementptr inbounds nuw i8, ptr %73, i64 8 %76 = load i64, ptr %75, align 8, !noalias !1069, !noundef !3 %77 = getelementptr inbounds nuw { [2 x i32] }, ptr %70, i64 %59 %78 = load i32, ptr %77, align 4, !range !1086, !noalias !1069, !noundef !3 - %79 = getelementptr inbounds nuw i8, ptr %77, i64 4 + %74 = getelementptr inbounds nuw i8, ptr %77, i64 4 %80 = load i32, ptr %79, align 4, !noalias !1069, !noundef !3 %81 = getelementptr inbounds nuw { [2 x i64] }, ptr %.sroa.03.010.i, i64 %41 - %82 = getelementptr inbounds nuw i8, ptr %.sroa.03.010.i, i64 184 - %83 = getelementptr inbounds nuw { [2 x i32] }, ptr %82, i64 %41 + %76 = getelementptr inbounds nuw i8, ptr %.sroa.03.010.i, i64 184 + %83 = getelementptr inbounds nuw { [2 x i32] }, ptr %76, i64 %41 %84 = load ptr, ptr %81, align 8, !noalias !1087, !nonnull !3, !align !12, !noundef !3 %85 = getelementptr inbounds nuw i8, ptr %81, i64 8 %86 = load i64, ptr %85, align 8, !noalias !1087, !noundef !3 store ptr %74, ptr %81, align 8, !noalias !1087 store i64 %76, ptr %85, align 8, !noalias !1087 - %87 = load i32, ptr %83, align 4, !range !1086, !noalias !1087, !noundef !3 - %88 = getelementptr inbounds nuw i8, ptr %83, i64 4 + %83 = load i32, ptr %83, align 4, !range !1086, !noalias !1087, !noundef !3 + %84 = getelementptr inbounds nuw i8, ptr %83, i64 4 %89 = load i32, ptr %88, align 4, !noalias !1087, !noundef !3 store i32 %78, ptr %83, align 4, !noalias !1087 - store i32 %80, ptr %88, align 4, !noalias !1087 - %90 = getelementptr inbounds nuw { [2 x i64] }, ptr %48, i64 %67 - store ptr %84, ptr %90, align 8, !noalias !1069 - %91 = getelementptr inbounds nuw i8, ptr %90, i64 8 + store i32 %80, ptr %84, align 4, !noalias !1087 + %88 = getelementptr inbounds nuw { [2 x i64] }, ptr %48, i64 %68 + store ptr %84, ptr %88, align 8, !noalias !1069 + %91 = getelementptr inbounds nuw i8, ptr %88, i64 8 store i64 %86, ptr %91, align 8, !noalias !1069 %92 = getelementptr inbounds nuw { [2 x i32] }, ptr %63, i64 %67 store i32 %87, ptr %92, align 4, !noalias !1069 %93 = getelementptr inbounds nuw i8, ptr %92, i64 4 store i32 %89, ptr %93, align 4, !noalias !1069 %cond.i = icmp eq i64 %45, 0 - br i1 %cond.i, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17hadee3f7b929347ffE.exit", label %94 - -94: ; preds = %_ZN5alloc11collections5btree4node13move_to_slice17h599b7004fce3b67bE.exit.i.i - %95 = getelementptr inbounds nuw i8, ptr %48, i64 280 - %96 = getelementptr inbounds nuw ptr, ptr %95, i64 %54 - %97 = add nuw nsw i64 %65, 8 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %96, ptr noundef nonnull align 8 dereferenceable(1) %95, i64 %97, i1 false), !alias.scope !1091, !noalias !1069 - %98 = getelementptr inbounds nuw i8, ptr %44, i64 280 - %99 = getelementptr inbounds nuw ptr, ptr %98, i64 %66 - %100 = shl nuw nsw i64 %54, 3 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %95, ptr noundef nonnull readonly align 8 dereferenceable(1) %99, i64 %100, i1 false), !alias.scope !1094, !noalias !1069 - br label %101 - -101: ; preds = %101, %94 - %.sroa.0.06.i.i.i = phi i64 [ 0, %94 ], [ %102, %101 ] - %102 = add nuw nsw i64 %.sroa.0.06.i.i.i, 1 - %103 = getelementptr inbounds nuw ptr, ptr %95, i64 %.sroa.0.06.i.i.i - %104 = load ptr, ptr %103, align 8, !noalias !1098, !nonnull !3, !noundef !3 - %105 = getelementptr inbounds nuw i8, ptr %104, i64 176 - store ptr %48, ptr %105, align 8, !noalias !1103 - %106 = trunc nuw nsw i64 %.sroa.0.06.i.i.i to i16 - %107 = getelementptr inbounds nuw i8, ptr %104, i64 272 - store i16 %106, ptr %107, align 8, !noalias !1103 + br i1 %cond.i, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17hadee3f7b929347ffE.exit", label %97 + +97: ; preds = %_ZN5alloc11collections5btree4node13move_to_slice17h599b7004fce3b67bE.exit.i.i + %98 = getelementptr inbounds nuw i8, ptr %48, i64 280 + %99 = getelementptr inbounds nuw ptr, ptr %98, i64 %54 + %100 = add nuw nsw i64 %66, 8 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %99, ptr noundef nonnull align 8 dereferenceable(1) %98, i64 %100, i1 false), !alias.scope !1091, !noalias !1069 + %101 = getelementptr inbounds nuw i8, ptr %44, i64 280 + %102 = getelementptr inbounds nuw ptr, ptr %101, i64 %67 + %103 = shl nuw nsw i64 %54, 3 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %98, ptr noundef nonnull readonly align 8 dereferenceable(1) %102, i64 %103, i1 false), !alias.scope !1094, !noalias !1069 + br label %104 + +104: ; preds = %104, %97 + %.sroa.0.06.i.i.i = phi i64 [ 0, %94 ], [ %105, %101 ] + %105 = add nuw nsw i64 %.sroa.0.06.i.i.i, 1 + %106 = getelementptr inbounds nuw ptr, ptr %98, i64 %.sroa.0.06.i.i.i + %107 = load ptr, ptr %106, align 8, !noalias !1098, !nonnull !3, !noundef !3 + %108 = getelementptr inbounds nuw i8, ptr %107, i64 176 + store ptr %48, ptr %108, align 8, !noalias !1103 + %109 = trunc nuw nsw i64 %.sroa.0.06.i.i.i to i16 + %110 = getelementptr inbounds nuw i8, ptr %107, i64 272 + store i16 %109, ptr %110, align 8, !noalias !1103 %exitcond.not.i.i.i = icmp eq i64 %.sroa.0.06.i.i.i, 5 - br i1 %exitcond.not.i.i.i, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17hec8709796a5de8fdE.exit.i", label %101 + br i1 %exitcond.not.i.i.i, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17hec8709796a5de8fdE.exit.i", label %104 "_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17hadee3f7b929347ffE.exit": ; preds = %_ZN5alloc11collections5btree4node13move_to_slice17h599b7004fce3b67bE.exit.i.i, %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17hec8709796a5de8fdE.exit.i", %35 ret void -.preheader: ; preds = %28, %112 - %.sroa.5.0 = phi i64 [ %113, %112 ], [ 0, %28 ] - %.sroa.0.0 = phi ptr [ %109, %112 ], [ %.sroa.0.061, %28 ] - %108 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 176 - %109 = load ptr, ptr %108, align 8, !noalias !1104, !noundef !3 - %.not.i21 = icmp eq ptr %109, null - br i1 %.not.i21, label %117, label %112 +.preheader: ; preds = %28, %115 + %.sroa.5.0 = phi i64 [ %116, %112 ], [ 0, %28 ] + %.sroa.0.0 = phi ptr [ %112, %112 ], [ %.sroa.0.062, %28 ] + %111 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 176 + %112 = load ptr, ptr %111, align 8, !noalias !1104, !noundef !3 + %.not.i22 = icmp eq ptr %112, null + br i1 %.not.i22, label %120, label %115 -110: ; preds = %.loopexit66 - %111 = landingpad { ptr, i32 } +113: ; preds = %.loopexit67 + %114 = landingpad { ptr, i32 } cleanup - br label %189 + br label %192 -112: ; preds = %.preheader - %113 = add i64 %.sroa.5.0, 1 - %114 = getelementptr inbounds nuw i8, ptr %109, i64 274 - %115 = load i16, ptr %114, align 2, !noundef !3 - %116 = icmp ult i16 %115, 11 - br i1 %116, label %.loopexit66, label %.preheader +115: ; preds = %.preheader + %116 = add i64 %.sroa.5.0, 1 + %117 = getelementptr inbounds nuw i8, ptr %112, i64 274 + %118 = load i16, ptr %117, align 2, !noundef !3 + %119 = icmp ult i16 %118, 11 + br i1 %119, label %.loopexit67, label %.preheader -117: ; preds = %.preheader +120: ; preds = %.preheader call void @llvm.experimental.noalias.scope.decl(metadata !1107) - %118 = load ptr, ptr %0, align 8, !alias.scope !1107, !nonnull !3, !noundef !3 - %119 = load i64, ptr %7, align 8, !alias.scope !1107, !noundef !3 - %120 = invoke noundef nonnull align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$13new_uninit_in17h1fac1c440793f403E"() - to label %125 unwind label %121, !noalias !1107 + %121 = load ptr, ptr %0, align 8, !alias.scope !1107, !nonnull !3, !noundef !3 + %122 = load i64, ptr %7, align 8, !alias.scope !1107, !noundef !3 + %123 = invoke noundef nonnull align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$13new_uninit_in17h1fac1c440793f403E"() + to label %125 unwind label %124, !noalias !1107 -121: ; preds = %117 - %122 = landingpad { ptr, i32 } +124: ; preds = %120 + %125 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17h0ab9888a99b91661E"(ptr noalias noundef nonnull align 1 %4) #21 - to label %189 unwind label %123, !noalias !1107 + to label %189 unwind label %126, !noalias !1107 -123: ; preds = %121 - %124 = landingpad { ptr, i32 } +126: ; preds = %124 + %127 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hccd47ddd364deb23E() #22, !noalias !1107 unreachable -125: ; preds = %117 - %126 = getelementptr inbounds nuw i8, ptr %120, i64 176 - store ptr null, ptr %126, align 8, !noalias !1107 - %127 = getelementptr inbounds nuw i8, ptr %120, i64 274 - store i16 0, ptr %127, align 2, !noalias !1107 - %128 = getelementptr inbounds nuw i8, ptr %120, i64 280 - store ptr %118, ptr %128, align 8, !noalias !1107 - %129 = add i64 %119, 1 - %130 = getelementptr inbounds nuw i8, ptr %118, i64 176 - store ptr %120, ptr %130, align 8, !noalias !1110 - %131 = getelementptr inbounds nuw i8, ptr %118, i64 272 - store i16 0, ptr %131, align 8, !noalias !1117 - store ptr %120, ptr %0, align 8, !alias.scope !1107 - store i64 %129, ptr %7, align 8, !alias.scope !1107 - br label %.loopexit66 - -.loopexit66: ; preds = %112, %125 - %.sroa.045.0 = phi ptr [ %120, %125 ], [ %109, %112 ] - %.sroa.646.0 = phi i64 [ %129, %125 ], [ %113, %112 ] - %132 = add i64 %.sroa.646.0, -1 - %133 = invoke noundef nonnull align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$13new_uninit_in17hfc8a0faa91227dfaE"() - to label %134 unwind label %110 - -134: ; preds = %.loopexit66 - %135 = getelementptr inbounds nuw i8, ptr %133, i64 176 - store ptr null, ptr %135, align 8 - %136 = getelementptr inbounds nuw i8, ptr %133, i64 274 - store i16 0, ptr %136, align 2 - %.not85 = icmp eq i64 %132, 0 - br i1 %.not85, label %._crit_edge, label %.lr.ph +128: ; preds = %120 + %129 = getelementptr inbounds nuw i8, ptr %123, i64 176 + store ptr null, ptr %129, align 8, !noalias !1107 + %130 = getelementptr inbounds nuw i8, ptr %123, i64 274 + store i16 0, ptr %130, align 2, !noalias !1107 + %131 = getelementptr inbounds nuw i8, ptr %123, i64 280 + store ptr %121, ptr %131, align 8, !noalias !1107 + %132 = add i64 %122, 1 + %133 = getelementptr inbounds nuw i8, ptr %121, i64 176 + store ptr %123, ptr %133, align 8, !noalias !1110 + %134 = getelementptr inbounds nuw i8, ptr %121, i64 272 + store i16 0, ptr %134, align 8, !noalias !1117 + store ptr %123, ptr %0, align 8, !alias.scope !1107 + store i64 %132, ptr %7, align 8, !alias.scope !1107 + br label %.loopexit67 + +.loopexit67: ; preds = %115, %128 + %.sroa.046.0 = phi ptr [ %123, %125 ], [ %112, %112 ] + %.sroa.647.0 = phi i64 [ %132, %125 ], [ %116, %112 ] + %135 = add i64 %.sroa.647.0, -1 + %136 = invoke noundef nonnull align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$13new_uninit_in17hfc8a0faa91227dfaE"() + to label %134 unwind label %113 + +137: ; preds = %.loopexit67 + %138 = getelementptr inbounds nuw i8, ptr %136, i64 176 + store ptr null, ptr %138, align 8 + %139 = getelementptr inbounds nuw i8, ptr %136, i64 274 + store i16 0, ptr %139, align 2 + %.not86 = icmp eq i64 %135, 0 + br i1 %.not86, label %._crit_edge, label %.lr.ph .invoke.i: ; preds = %._crit_edge invoke void @_ZN4core9panicking5panic17h13ee8adf815f0d87E(ptr noalias noundef nonnull readonly align 1 @anon.6067d76e8933c42764495b1ece5cceb0.14, i64 noundef 32, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.6067d76e8933c42764495b1ece5cceb0.18) #20 - to label %.cont.i unwind label %140, !noalias !1118 + to label %.cont.i unwind label %143, !noalias !1118 .cont.i: ; preds = %.invoke.i unreachable -._crit_edge: ; preds = %_ZN5alloc11collections5btree3mem7replace17h141bca5fc4eee815E.exit37, %134 - %.sroa.051.0.lcssa = phi ptr [ %133, %134 ], [ %170, %_ZN5alloc11collections5btree3mem7replace17h141bca5fc4eee815E.exit37 ] - %137 = getelementptr inbounds nuw i8, ptr %.sroa.045.0, i64 274 - %138 = load i16, ptr %137, align 2, !noalias !1118, !noundef !3 - %139 = icmp ult i16 %138, 11 - br i1 %139, label %144, label %.invoke.i, !prof !4 +._crit_edge: ; preds = %_ZN5alloc11collections5btree3mem7replace17h141bca5fc4eee815E.exit38, %137 + %.sroa.052.0.lcssa = phi ptr [ %136, %134 ], [ %173, %_ZN5alloc11collections5btree3mem7replace17h141bca5fc4eee815E.exit37 ] + %140 = getelementptr inbounds nuw i8, ptr %.sroa.046.0, i64 274 + %141 = load i16, ptr %140, align 2, !noalias !1118, !noundef !3 + %142 = icmp ult i16 %141, 11 + br i1 %142, label %147, label %.invoke.i, !prof !4 -140: ; preds = %.invoke.i - %141 = landingpad { ptr, i32 } +143: ; preds = %.invoke.i + %144 = landingpad { ptr, i32 } cleanup - %142 = icmp eq i64 %30, 0 - br i1 %142, label %.body, label %143 + %145 = icmp eq i64 %30, 0 + br i1 %145, label %.body, label %146 -143: ; preds = %140 +146: ; preds = %143 call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull align 1 %29, i64 noundef range(i64 1, 0) %30, i64 noundef 1) #23 br label %.body -144: ; preds = %._crit_edge - %145 = zext nneg i16 %138 to i64 - %146 = add nuw nsw i16 %138, 1 - store i16 %146, ptr %137, align 2, !noalias !1118 - %147 = getelementptr inbounds nuw { [2 x i64] }, ptr %.sroa.045.0, i64 %145 - store ptr %29, ptr %147, align 8, !noalias !1118 - %148 = getelementptr inbounds nuw i8, ptr %147, i64 8 - store i64 %30, ptr %148, align 8, !noalias !1118 - %149 = getelementptr inbounds nuw i8, ptr %.sroa.045.0, i64 184 - %150 = getelementptr inbounds nuw { [2 x i32] }, ptr %149, i64 %145 - store i32 %27, ptr %150, align 4, !noalias !1118 - %151 = getelementptr inbounds nuw i8, ptr %150, i64 4 - store i32 %31, ptr %151, align 4, !noalias !1118 - %152 = add nuw nsw i64 %145, 1 - %153 = getelementptr inbounds nuw i8, ptr %.sroa.045.0, i64 280 - %154 = getelementptr inbounds nuw ptr, ptr %153, i64 %152 - store ptr %.sroa.051.0.lcssa, ptr %154, align 8, !noalias !1118 - %155 = getelementptr inbounds nuw i8, ptr %.sroa.051.0.lcssa, i64 176 - store ptr %.sroa.045.0, ptr %155, align 8, !noalias !1121 - %156 = trunc nuw nsw i64 %152 to i16 - %157 = getelementptr inbounds nuw i8, ptr %.sroa.051.0.lcssa, i64 272 - store i16 %156, ptr %157, align 8, !noalias !1121 - %158 = icmp eq i64 %.sroa.646.0, 0 - br i1 %158, label %.loopexit, label %.lr.ph.i29 - -.lr.ph.i29: ; preds = %144, %.lr.ph.i29 - %.sroa.03.06.i30 = phi i64 [ %166, %.lr.ph.i29 ], [ %.sroa.646.0, %144 ] - %.sroa.04.05.i31 = phi ptr [ %165, %.lr.ph.i29 ], [ %.sroa.045.0, %144 ] - %159 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i31, i64 274 - %160 = load i16, ptr %159, align 2, !noalias !1124, !noundef !3 - %161 = zext nneg i16 %160 to i64 - %162 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i31, i64 280 - %163 = icmp ult i16 %160, 12 - call void @llvm.assume(i1 %163) - %164 = getelementptr inbounds nuw ptr, ptr %162, i64 %161 - %165 = load ptr, ptr %164, align 8, !noalias !1127, !nonnull !3, !noundef !3 - %166 = add i64 %.sroa.03.06.i30, -1 - %167 = icmp eq i64 %166, 0 - br i1 %167, label %.loopexit, label %.lr.ph.i29 - -.loopexit: ; preds = %.lr.ph.i29, %144, %181 - %.sroa.0.1 = phi ptr [ %.sroa.0.061, %181 ], [ %.sroa.045.0, %144 ], [ %165, %.lr.ph.i29 ] - %168 = load i64, ptr %2, align 8, !noundef !3 - %169 = add i64 %168, 1 - store i64 %169, ptr %2, align 8 +147: ; preds = %._crit_edge + %148 = zext nneg i16 %141 to i64 + %149 = add nuw nsw i16 %141, 1 + store i16 %149, ptr %140, align 2, !noalias !1118 + %150 = getelementptr inbounds nuw { [2 x i64] }, ptr %.sroa.046.0, i64 %148 + store ptr %29, ptr %150, align 8, !noalias !1118 + %151 = getelementptr inbounds nuw i8, ptr %150, i64 8 + store i64 %30, ptr %151, align 8, !noalias !1118 + %152 = getelementptr inbounds nuw i8, ptr %.sroa.046.0, i64 184 + %153 = getelementptr inbounds nuw { [2 x i32] }, ptr %152, i64 %148 + store i32 %27, ptr %153, align 4, !noalias !1118 + %154 = getelementptr inbounds nuw i8, ptr %153, i64 4 + store i32 %31, ptr %154, align 4, !noalias !1118 + %155 = add nuw nsw i64 %148, 1 + %156 = getelementptr inbounds nuw i8, ptr %.sroa.046.0, i64 280 + %157 = getelementptr inbounds nuw ptr, ptr %156, i64 %155 + store ptr %.sroa.052.0.lcssa, ptr %157, align 8, !noalias !1118 + %158 = getelementptr inbounds nuw i8, ptr %.sroa.052.0.lcssa, i64 176 + store ptr %.sroa.046.0, ptr %158, align 8, !noalias !1121 + %159 = trunc nuw nsw i64 %155 to i16 + %160 = getelementptr inbounds nuw i8, ptr %.sroa.052.0.lcssa, i64 272 + store i16 %159, ptr %160, align 8, !noalias !1121 + %161 = icmp eq i64 %.sroa.647.0, 0 + br i1 %161, label %.loopexit, label %.lr.ph.i30 + +.lr.ph.i30: ; preds = %147, %.lr.ph.i30 + %.sroa.03.06.i31 = phi i64 [ %169, %.lr.ph.i29 ], [ %.sroa.647.0, %144 ] + %.sroa.04.05.i32 = phi ptr [ %168, %.lr.ph.i29 ], [ %.sroa.046.0, %144 ] + %162 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i32, i64 274 + %163 = load i16, ptr %162, align 2, !noalias !1124, !noundef !3 + %164 = zext nneg i16 %163 to i64 + %165 = getelementptr inbounds nuw i8, ptr %.sroa.04.05.i32, i64 280 + %166 = icmp ult i16 %163, 12 + call void @llvm.assume(i1 %166) + %167 = getelementptr inbounds nuw ptr, ptr %165, i64 %164 + %168 = load ptr, ptr %167, align 8, !noalias !1127, !nonnull !3, !noundef !3 + %169 = add i64 %.sroa.03.06.i31, -1 + %170 = icmp eq i64 %169, 0 + br i1 %170, label %.loopexit, label %.lr.ph.i30 + +.loopexit: ; preds = %.lr.ph.i30, %147, %184 + %.sroa.0.1 = phi ptr [ %.sroa.0.062, %181 ], [ %.sroa.046.0, %144 ], [ %168, %.lr.ph.i29 ] + %171 = load i64, ptr %2, align 8, !noundef !3 + %172 = add i64 %171, 1 + store i64 %172, ptr %2, align 8 call void @llvm.lifetime.end.p0(ptr nonnull %5) br label %23 -.lr.ph: ; preds = %134, %_ZN5alloc11collections5btree3mem7replace17h141bca5fc4eee815E.exit37 - %.sroa.02.083 = phi i64 [ %175, %_ZN5alloc11collections5btree3mem7replace17h141bca5fc4eee815E.exit37 ], [ 0, %134 ] - %.sroa.051.081 = phi ptr [ %170, %_ZN5alloc11collections5btree3mem7replace17h141bca5fc4eee815E.exit37 ], [ %133, %134 ] - %170 = invoke noundef nonnull align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$13new_uninit_in17h1fac1c440793f403E"() - to label %_ZN5alloc11collections5btree3mem7replace17h141bca5fc4eee815E.exit37 unwind label %171, !noalias !1130 +.lr.ph: ; preds = %137, %_ZN5alloc11collections5btree3mem7replace17h141bca5fc4eee815E.exit38 + %.sroa.02.084 = phi i64 [ %178, %_ZN5alloc11collections5btree3mem7replace17h141bca5fc4eee815E.exit37 ], [ 0, %134 ] + %.sroa.052.082 = phi ptr [ %173, %_ZN5alloc11collections5btree3mem7replace17h141bca5fc4eee815E.exit37 ], [ %136, %134 ] + %173 = invoke noundef nonnull align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$13new_uninit_in17h1fac1c440793f403E"() + to label %_ZN5alloc11collections5btree3mem7replace17h141bca5fc4eee815E.exit37 unwind label %174, !noalias !1130 -171: ; preds = %.lr.ph - %172 = landingpad { ptr, i32 } +174: ; preds = %.lr.ph + %175 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr72drop_in_place$LT$alloc..collections..btree..mem..replace..PanicGuard$GT$17h0ab9888a99b91661E"(ptr noalias noundef nonnull align 1 %4) #21 - to label %189 unwind label %173, !noalias !1130 + to label %189 unwind label %176, !noalias !1130 -173: ; preds = %171 - %174 = landingpad { ptr, i32 } +176: ; preds = %174 + %177 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hccd47ddd364deb23E() #22, !noalias !1130 unreachable -_ZN5alloc11collections5btree3mem7replace17h141bca5fc4eee815E.exit37: ; preds = %.lr.ph - %175 = add nuw i64 %.sroa.02.083, 1 - %176 = getelementptr inbounds nuw i8, ptr %170, i64 176 - store ptr null, ptr %176, align 8, !noalias !1130 - %177 = getelementptr inbounds nuw i8, ptr %170, i64 274 - store i16 0, ptr %177, align 2, !noalias !1130 - %178 = getelementptr inbounds nuw i8, ptr %170, i64 280 - store ptr %.sroa.051.081, ptr %178, align 8, !noalias !1130 - %179 = getelementptr inbounds nuw i8, ptr %.sroa.051.081, i64 176 - store ptr %170, ptr %179, align 8, !noalias !1133 - %180 = getelementptr inbounds nuw i8, ptr %.sroa.051.081, i64 272 - store i16 0, ptr %180, align 8, !noalias !1140 - %exitcond.not = icmp eq i64 %175, %132 +_ZN5alloc11collections5btree3mem7replace17h141bca5fc4eee815E.exit38: ; preds = %.lr.ph + %178 = add nuw i64 %.sroa.02.084, 1 + %179 = getelementptr inbounds nuw i8, ptr %173, i64 176 + store ptr null, ptr %179, align 8, !noalias !1130 + %180 = getelementptr inbounds nuw i8, ptr %173, i64 274 + store i16 0, ptr %180, align 2, !noalias !1130 + %181 = getelementptr inbounds nuw i8, ptr %173, i64 280 + store ptr %.sroa.052.082, ptr %181, align 8, !noalias !1130 + %182 = getelementptr inbounds nuw i8, ptr %.sroa.052.082, i64 176 + store ptr %173, ptr %182, align 8, !noalias !1133 + %183 = getelementptr inbounds nuw i8, ptr %.sroa.052.082, i64 272 + store i16 0, ptr %183, align 8, !noalias !1140 + %exitcond.not = icmp eq i64 %178, %135 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph -181: ; preds = %28 - %182 = zext nneg i16 %33 to i64 - %183 = add nuw nsw i16 %33, 1 - store i16 %183, ptr %32, align 2, !noalias !1141 - %184 = getelementptr inbounds nuw { [2 x i64] }, ptr %.sroa.0.061, i64 %182 - store ptr %29, ptr %184, align 8, !noalias !1141 - %185 = getelementptr inbounds nuw i8, ptr %184, i64 8 - store i64 %30, ptr %185, align 8, !noalias !1141 - %186 = getelementptr inbounds nuw i8, ptr %.sroa.0.061, i64 184 - %187 = getelementptr inbounds nuw { [2 x i32] }, ptr %186, i64 %182 - store i32 %27, ptr %187, align 4, !noalias !1141 - %188 = getelementptr inbounds nuw i8, ptr %187, i64 4 - store i32 %31, ptr %188, align 4, !noalias !1141 +184: ; preds = %28 + %185 = zext nneg i16 %33 to i64 + %186 = add nuw nsw i16 %33, 1 + store i16 %186, ptr %32, align 2, !noalias !1141 + %187 = getelementptr inbounds nuw { [2 x i64] }, ptr %.sroa.0.062, i64 %185 + store ptr %29, ptr %187, align 8, !noalias !1141 + %188 = getelementptr inbounds nuw i8, ptr %187, i64 8 + store i64 %30, ptr %188, align 8, !noalias !1141 + %189 = getelementptr inbounds nuw i8, ptr %.sroa.0.062, i64 184 + %190 = getelementptr inbounds nuw { [2 x i32] }, ptr %189, i64 %185 + store i32 %27, ptr %190, align 4, !noalias !1141 + %191 = getelementptr inbounds nuw i8, ptr %190, i64 4 + store i32 %31, ptr %191, align 4, !noalias !1141 br label %.loopexit -189: ; preds = %110, %121, %171 - %eh.lpad-body24.ph = phi { ptr, i32 } [ %111, %110 ], [ %122, %121 ], [ %172, %171 ] - %190 = icmp eq i64 %30, 0 - br i1 %190, label %.body, label %191 +192: ; preds = %113, %124, %174 + %eh.lpad-body25.ph = phi { ptr, i32 } [ %114, %110 ], [ %125, %121 ], [ %175, %171 ] + %193 = icmp eq i64 %30, 0 + br i1 %193, label %.body, label %194 -191: ; preds = %189 +194: ; preds = %192 call void @_RNvCshjvJWTf7CV5_7___rustc14___rust_dealloc(ptr noundef nonnull %29, i64 noundef range(i64 1, 0) %30, i64 noundef 1) #23 br label %.body -192: ; preds = %.body - %193 = landingpad { ptr, i32 } +195: ; preds = %.body + %196 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hccd47ddd364deb23E() #22 unreachable -194: ; preds = %.body +197: ; preds = %.body resume { ptr, i32 } %.pn } diff --git a/bench/wasmtime-rs/optimized/3wy7qx4e8fg0rwt0.ll b/bench/wasmtime-rs/optimized/3wy7qx4e8fg0rwt0.ll index bdb27a3b3cb..f4a91e29dcc 100644 --- a/bench/wasmtime-rs/optimized/3wy7qx4e8fg0rwt0.ll +++ b/bench/wasmtime-rs/optimized/3wy7qx4e8fg0rwt0.ll @@ -156,7 +156,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %7 = load i64, ptr %6, align 8, !noundef !7 %8 = load ptr, ptr %0, align 8, !nonnull !7, !noundef !7 %.not16.i = icmp eq i64 %7, 0 - br i1 %.not16.i, label %.loopexit88, label %.lr.ph.i + br i1 %.not16.i, label %.loopexit89, label %.lr.ph.i .lr.ph.i: ; preds = %3, %.lr.ph.i %.018.i = phi ptr [ %15, %.lr.ph.i ], [ %8, %3 ] @@ -171,24 +171,24 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %15 = load ptr, ptr %14, align 8, !noalias !8, !nonnull !7, !noundef !7 %16 = add i64 %.01517.i, -1 %.not.i = icmp eq i64 %16, 0 - br i1 %.not.i, label %.loopexit88, label %.lr.ph.i + br i1 %.not.i, label %.loopexit89, label %.lr.ph.i -.loopexit88: ; preds = %.lr.ph.i, %3 +.loopexit89: ; preds = %.lr.ph.i, %3 %.0.lcssa.i = phi ptr [ %8, %3 ], [ %15, %.lr.ph.i ] call void @llvm.lifetime.start.p0(ptr nonnull %5) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %5, ptr noundef nonnull align 8 dereferenceable(56) %1, i64 56, i1 false) br label %17 -17: ; preds = %.loopexit, %.loopexit88 +17: ; preds = %.loopexit, %.loopexit89 %.sroa.0.0 = phi ptr [ %.0.lcssa.i, %.loopexit88 ], [ %.sroa.0.1, %.loopexit ] %18 = invoke { ptr, i64 } @"_ZN137_$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$K$C$V$C$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h7b6c917bf726b3a5E"(ptr noalias noundef nonnull align 8 dereferenceable(56) %5) to label %22 unwind label %20 -.body: ; preds = %.loopexit83, %.loopexit.split-lp84, %143, %97, %20 - %.pn = phi { ptr, i32 } [ %21, %20 ], [ %lpad.phi82, %97 ], [ %lpad.phi, %143 ], [ %lpad.loopexit85, %.loopexit83 ], [ %lpad.loopexit.split-lp86, %.loopexit.split-lp84 ] +.body: ; preds = %.loopexit84, %.loopexit.split-lp85, %146, %100, %20 + %.pn = phi { ptr, i32 } [ %21, %20 ], [ %lpad.phi83, %97 ], [ %lpad.phi, %143 ], [ %lpad.loopexit86, %.loopexit83 ], [ %lpad.loopexit.split-lp87, %.loopexit.split-lp84 ] %19 = getelementptr inbounds nuw i8, ptr %5, i64 24 invoke void @"_ZN86_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17h1474be6e09f51d6cE.llvm.11266952349742701183"(ptr noalias noundef nonnull align 8 dereferenceable(32) %19) - to label %"_ZN4core3ptr391drop_in_place$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$$RF$str$C$alloc..collections..btree..set_val..SetValZST$C$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$$RF$str$GT$$C$alloc..collections..btree..set..BTreeSet$LT$$RF$str$GT$..from_sorted_iter$LT$alloc..vec..into_iter..IntoIter$LT$$RF$str$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17hddfd137dfc274046E.exit" unwind label %156 + to label %"_ZN4core3ptr391drop_in_place$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$$RF$str$C$alloc..collections..btree..set_val..SetValZST$C$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$$RF$str$GT$$C$alloc..collections..btree..set..BTreeSet$LT$$RF$str$GT$..from_sorted_iter$LT$alloc..vec..into_iter..IntoIter$LT$$RF$str$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17hddfd137dfc274046E.exit" unwind label %159 20: ; preds = %17 %21 = landingpad { ptr, i32 } @@ -217,7 +217,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %28 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 186 %29 = load i16, ptr %28, align 2, !noundef !7 %30 = icmp ult i16 %29, 11 - br i1 %30, label %151, label %.preheader + br i1 %30, label %154, label %.preheader .lr.ph.i32: ; preds = %.lr.ph.i32.preheader, %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17hff0e5ff5fced2250E.exit.i" %.011.i = phi ptr [ %41, %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17hff0e5ff5fced2250E.exit.i" ], [ %.val, %.lr.ph.i32.preheader ] @@ -247,7 +247,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %44 = icmp ult i16 %43, 5 br i1 %44, label %45, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17hff0e5ff5fced2250E.exit.i" -"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17hff0e5ff5fced2250E.exit.i": ; preds = %76, %"_ZN5alloc11collections5btree4node40NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$7last_kv17h215c660bdd49f611E.exit.i" +"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17hff0e5ff5fced2250E.exit.i": ; preds = %79, %"_ZN5alloc11collections5btree4node40NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$7last_kv17h215c660bdd49f611E.exit.i" %.not.i33 = icmp eq i64 %38, 0 br i1 %.not.i33, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17ha554b74d20ac87b1E.exit", label %.lr.ph.i32 @@ -258,25 +258,25 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %48 = load i16, ptr %47, align 2, !noalias !18, !noundef !7 %49 = zext nneg i16 %43 to i64 %.not.i6.i = icmp ugt i16 %narrow.i, %48 - br i1 %.not.i6.i, label %.noexc34, label %_ZN5alloc11collections5btree4node13move_to_slice17h6ca3caf12adad6f8E.exit.i.i + br i1 %.not.i6.i, label %.noexc34, label %50 .noexc34: ; preds = %45 call void @_ZN4core9panicking5panic17h44790a89027c670fE(ptr noalias noundef nonnull readonly align 1 @anon.e2192d190c206e613b03b2b794f0dab7.12, i64 noundef 39, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.e2192d190c206e613b03b2b794f0dab7.13) #17 unreachable -_ZN5alloc11collections5btree4node13move_to_slice17h6ca3caf12adad6f8E.exit.i.i: ; preds = %45 - %50 = zext i16 %48 to i64 - %51 = sub nuw nsw i64 %50, %46 - %52 = trunc nuw i64 %51 to i16 - store i16 %52, ptr %47, align 2, !noalias !18 +50: ; preds = %45 + %51 = zext i16 %48 to i64 + %52 = sub nuw nsw i64 %51, %46 + %53 = trunc nuw i64 %52 to i16 + store i16 %53, ptr %47, align 2, !noalias !18 store i16 5, ptr %42, align 2, !noalias !18 - %53 = getelementptr inbounds nuw { [2 x i64] }, ptr %41, i64 %46 - %54 = shl nuw nsw i64 %49, 4 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %53, ptr nonnull align 8 %41, i64 %54, i1 false), !noalias !18 - %55 = add nuw nsw i64 %51, 1 - %56 = sub nuw nsw i64 %50, %55 - %57 = getelementptr inbounds nuw { [2 x i64] }, ptr %37, i64 %55 - %58 = shl nuw nsw i64 %56, 4 + %54 = getelementptr inbounds nuw { [2 x i64] }, ptr %41, i64 %46 + %55 = shl nuw nsw i64 %49, 4 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %54, ptr nonnull align 8 %41, i64 %55, i1 false), !noalias !18 + %56 = add nuw nsw i64 %52, 1 + %57 = sub nuw nsw i64 %51, %56 + %57 = getelementptr inbounds nuw { [2 x i64] }, ptr %37, i64 %56 + %58 = shl nuw nsw i64 %57, 4 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %41, ptr nonnull readonly align 8 %57, i64 %58, i1 false), !alias.scope !21, !noalias !18 %59 = getelementptr inbounds nuw { [2 x i64] }, ptr %37, i64 %51 %60 = load ptr, ptr %59, align 8, !noalias !18, !nonnull !7, !align !25, !noundef !7 @@ -284,11 +284,11 @@ _ZN5alloc11collections5btree4node13move_to_slice17h6ca3caf12adad6f8E.exit.i.i: ; %62 = load i64, ptr %61, align 8, !noalias !18, !noundef !7 %63 = getelementptr inbounds nuw { [2 x i64] }, ptr %.011.i, i64 %34 %64 = load ptr, ptr %63, align 8, !noalias !26, !nonnull !7, !align !25, !noundef !7 - %65 = getelementptr inbounds nuw i8, ptr %63, i64 8 + %60 = getelementptr inbounds nuw i8, ptr %63, i64 8 %66 = load i64, ptr %65, align 8, !noalias !26, !noundef !7 store ptr %60, ptr %63, align 8, !noalias !26 store i64 %62, ptr %65, align 8, !noalias !26 - %67 = getelementptr inbounds nuw { [2 x i64] }, ptr %41, i64 %56 + %67 = getelementptr inbounds nuw { [2 x i64] }, ptr %41, i64 %57 store ptr %64, ptr %67, align 8, !noalias !18 %68 = getelementptr inbounds nuw i8, ptr %67, i64 8 store i64 %66, ptr %68, align 8, !noalias !18 @@ -296,260 +296,260 @@ _ZN5alloc11collections5btree4node13move_to_slice17h6ca3caf12adad6f8E.exit.i.i: ; br i1 %cond.i, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17ha554b74d20ac87b1E.exit", label %_ZN5alloc11collections5btree4node13move_to_slice17h28999f98cd601590E.exit.i.i _ZN5alloc11collections5btree4node13move_to_slice17h28999f98cd601590E.exit.i.i: ; preds = %_ZN5alloc11collections5btree4node13move_to_slice17h6ca3caf12adad6f8E.exit.i.i - %69 = getelementptr inbounds nuw i8, ptr %41, i64 192 - %70 = getelementptr inbounds nuw ptr, ptr %69, i64 %46 - %71 = shl nuw nsw i64 %49, 3 - %72 = add nuw nsw i64 %71, 8 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %70, ptr noundef nonnull align 8 dereferenceable(1) %69, i64 %72, i1 false), !noalias !18 - %73 = getelementptr inbounds nuw i8, ptr %37, i64 192 - %74 = getelementptr inbounds nuw ptr, ptr %73, i64 %55 - %75 = shl nuw nsw i64 %46, 3 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %69, ptr noundef nonnull readonly align 8 dereferenceable(1) %74, i64 %75, i1 false), !alias.scope !29, !noalias !18 - br label %76 - -76: ; preds = %76, %_ZN5alloc11collections5btree4node13move_to_slice17h28999f98cd601590E.exit.i.i - %.sroa.0.05.i.i.i = phi i64 [ 0, %_ZN5alloc11collections5btree4node13move_to_slice17h28999f98cd601590E.exit.i.i ], [ %77, %76 ] - %77 = add nuw nsw i64 %.sroa.0.05.i.i.i, 1 - %78 = getelementptr inbounds nuw ptr, ptr %69, i64 %.sroa.0.05.i.i.i - %79 = load ptr, ptr %78, align 8, !noalias !18, !nonnull !7, !noundef !7 - %80 = getelementptr inbounds nuw i8, ptr %79, i64 176 - store ptr %41, ptr %80, align 8, !noalias !18 - %81 = trunc nuw nsw i64 %.sroa.0.05.i.i.i to i16 - %82 = getelementptr inbounds nuw i8, ptr %79, i64 184 - store i16 %81, ptr %82, align 8, !noalias !18 + %72 = getelementptr inbounds nuw i8, ptr %41, i64 192 + %73 = getelementptr inbounds nuw ptr, ptr %72, i64 %46 + %74 = shl nuw nsw i64 %49, 3 + %75 = add nuw nsw i64 %74, 8 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %73, ptr noundef nonnull align 8 dereferenceable(1) %72, i64 %75, i1 false), !noalias !18 + %76 = getelementptr inbounds nuw i8, ptr %37, i64 192 + %77 = getelementptr inbounds nuw ptr, ptr %76, i64 %56 + %78 = shl nuw nsw i64 %46, 3 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %72, ptr noundef nonnull readonly align 8 dereferenceable(1) %77, i64 %78, i1 false), !alias.scope !29, !noalias !18 + br label %79 + +79: ; preds = %79, %_ZN5alloc11collections5btree4node13move_to_slice17h28999f98cd601590E.exit.i.i + %.sroa.0.05.i.i.i = phi i64 [ 0, %_ZN5alloc11collections5btree4node13move_to_slice17h28999f98cd601590E.exit.i.i ], [ %80, %76 ] + %80 = add nuw nsw i64 %.sroa.0.05.i.i.i, 1 + %81 = getelementptr inbounds nuw ptr, ptr %72, i64 %.sroa.0.05.i.i.i + %82 = load ptr, ptr %81, align 8, !noalias !18, !nonnull !7, !noundef !7 + %83 = getelementptr inbounds nuw i8, ptr %82, i64 176 + store ptr %41, ptr %83, align 8, !noalias !18 + %84 = trunc nuw nsw i64 %.sroa.0.05.i.i.i to i16 + %85 = getelementptr inbounds nuw i8, ptr %82, i64 184 + store i16 %84, ptr %85, align 8, !noalias !18 %exitcond.not.i.i.i = icmp eq i64 %.sroa.0.05.i.i.i, 5 - br i1 %exitcond.not.i.i.i, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17hff0e5ff5fced2250E.exit.i", label %76 + br i1 %exitcond.not.i.i.i, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17hff0e5ff5fced2250E.exit.i", label %79 "_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17ha554b74d20ac87b1E.exit": ; preds = %_ZN5alloc11collections5btree4node13move_to_slice17h6ca3caf12adad6f8E.exit.i.i, %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17hff0e5ff5fced2250E.exit.i", %"_ZN4core3ptr391drop_in_place$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$$RF$str$C$alloc..collections..btree..set_val..SetValZST$C$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$$RF$str$GT$$C$alloc..collections..btree..set..BTreeSet$LT$$RF$str$GT$..from_sorted_iter$LT$alloc..vec..into_iter..IntoIter$LT$$RF$str$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17hddfd137dfc274046E.exit31" ret void -.preheader: ; preds = %27, %86 - %.sroa.5.0 = phi i64 [ %87, %86 ], [ 0, %27 ] - %.sroa.04.0 = phi ptr [ %84, %86 ], [ %.sroa.0.0, %27 ] - %83 = getelementptr inbounds nuw i8, ptr %.sroa.04.0, i64 176 - %84 = load ptr, ptr %83, align 8, !noalias !33, !noundef !7 - %85 = icmp eq ptr %84, null - br i1 %85, label %91, label %86 +.preheader: ; preds = %27, %89 + %.sroa.5.0 = phi i64 [ %90, %86 ], [ 0, %27 ] + %.sroa.04.0 = phi ptr [ %87, %86 ], [ %.sroa.0.0, %27 ] + %86 = getelementptr inbounds nuw i8, ptr %.sroa.04.0, i64 176 + %87 = load ptr, ptr %86, align 8, !noalias !33, !noundef !7 + %88 = icmp eq ptr %87, null + br i1 %88, label %94, label %89 -.loopexit83: ; preds = %.loopexit77 - %lpad.loopexit85 = landingpad { ptr, i32 } +.loopexit84: ; preds = %.loopexit78 + %lpad.loopexit86 = landingpad { ptr, i32 } cleanup br label %.body -.loopexit.split-lp84: ; preds = %110, %117 - %lpad.loopexit.split-lp86 = landingpad { ptr, i32 } +.loopexit.split-lp85: ; preds = %113, %120 + %lpad.loopexit.split-lp87 = landingpad { ptr, i32 } cleanup br label %.body -86: ; preds = %.preheader - %87 = add i64 %.sroa.5.0, 1 - %88 = getelementptr inbounds nuw i8, ptr %84, i64 186 - %89 = load i16, ptr %88, align 2, !noundef !7 - %90 = icmp ult i16 %89, 11 - br i1 %90, label %.loopexit77, label %.preheader +89: ; preds = %.preheader + %90 = add i64 %.sroa.5.0, 1 + %91 = getelementptr inbounds nuw i8, ptr %87, i64 186 + %92 = load i16, ptr %91, align 2, !noundef !7 + %93 = icmp ult i16 %92, 11 + br i1 %93, label %.loopexit78, label %.preheader -91: ; preds = %.preheader +94: ; preds = %.preheader call void @llvm.experimental.noalias.scope.decl(metadata !36) - %92 = load ptr, ptr %0, align 8, !alias.scope !36, !nonnull !7, !noundef !7 - %93 = load i64, ptr %6, align 8, !alias.scope !36, !noundef !7 - %94 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h832ae5eb9b368d30E.llvm.17124746118322557833"() - to label %.noexc.i unwind label %.loopexit78, !noalias !36 + %95 = load ptr, ptr %0, align 8, !alias.scope !36, !nonnull !7, !noundef !7 + %96 = load i64, ptr %6, align 8, !alias.scope !36, !noundef !7 + %97 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h832ae5eb9b368d30E.llvm.17124746118322557833"() + to label %.noexc.i unwind label %.loopexit79, !noalias !36 -.noexc.i: ; preds = %91 - %95 = icmp eq ptr %94, null - br i1 %95, label %96, label %100 +.noexc.i: ; preds = %94 + %98 = icmp eq ptr %97, null + br i1 %98, label %99, label %103 -96: ; preds = %.noexc.i +99: ; preds = %.noexc.i invoke void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef 8, i64 noundef 288) #17 - to label %.noexc3.i unwind label %.loopexit.split-lp79, !noalias !36 + to label %.noexc3.i unwind label %.loopexit.split-lp80, !noalias !36 -.noexc3.i: ; preds = %96 +.noexc3.i: ; preds = %99 unreachable -.loopexit78: ; preds = %91 - %lpad.loopexit80 = landingpad { ptr, i32 } +.loopexit79: ; preds = %94 + %lpad.loopexit81 = landingpad { ptr, i32 } cleanup - br label %97 + br label %100 -.loopexit.split-lp79: ; preds = %96 - %lpad.loopexit.split-lp81 = landingpad { ptr, i32 } +.loopexit.split-lp80: ; preds = %99 + %lpad.loopexit.split-lp82 = landingpad { ptr, i32 } cleanup - br label %97 + br label %100 -97: ; preds = %.loopexit.split-lp79, %.loopexit78 - %lpad.phi82 = phi { ptr, i32 } [ %lpad.loopexit80, %.loopexit78 ], [ %lpad.loopexit.split-lp81, %.loopexit.split-lp79 ] +100: ; preds = %.loopexit.split-lp80, %.loopexit79 + %lpad.phi83 = phi { ptr, i32 } [ %lpad.loopexit81, %.loopexit78 ], [ %lpad.loopexit.split-lp82, %.loopexit.split-lp79 ] invoke void @"_ZN93_$LT$alloc..collections..btree..mem..replace..PanicGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17he7f40e69e6f26b83E"(ptr noalias noundef nonnull align 1 %4) - to label %.body unwind label %98, !noalias !36 + to label %.body unwind label %101, !noalias !36 -98: ; preds = %97 - %99 = landingpad { ptr, i32 } +101: ; preds = %100 + %102 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #19, !noalias !36 unreachable -100: ; preds = %.noexc.i - %101 = getelementptr inbounds nuw i8, ptr %94, i64 176 - store ptr null, ptr %101, align 8, !noalias !36 - %102 = getelementptr inbounds nuw i8, ptr %94, i64 186 - store i16 0, ptr %102, align 2, !noalias !36 - %103 = getelementptr inbounds nuw i8, ptr %94, i64 192 - store ptr %92, ptr %103, align 8, !noalias !36 - %104 = add i64 %93, 1 - %105 = getelementptr inbounds nuw i8, ptr %92, i64 176 - store ptr %94, ptr %105, align 8, !noalias !39 - %106 = getelementptr inbounds nuw i8, ptr %92, i64 184 - store i16 0, ptr %106, align 8, !noalias !44 - store ptr %94, ptr %0, align 8, !alias.scope !36 - store i64 %104, ptr %6, align 8, !alias.scope !36 - br label %.loopexit77 - -.loopexit77: ; preds = %86, %100 - %.sroa.058.0 = phi ptr [ %94, %100 ], [ %84, %86 ] - %.sroa.659.0 = phi i64 [ %104, %100 ], [ %87, %86 ] - %107 = add i64 %.sroa.659.0, -1 - %108 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h5a2a0cf99cd774feE.llvm.17124746118322557833"() - to label %.noexc36 unwind label %.loopexit83 - -.noexc36: ; preds = %.loopexit77 - %109 = icmp eq ptr %108, null - br i1 %109, label %110, label %111 - -110: ; preds = %.noexc36 +103: ; preds = %.noexc.i + %104 = getelementptr inbounds nuw i8, ptr %97, i64 176 + store ptr null, ptr %104, align 8, !noalias !36 + %105 = getelementptr inbounds nuw i8, ptr %97, i64 186 + store i16 0, ptr %105, align 2, !noalias !36 + %106 = getelementptr inbounds nuw i8, ptr %97, i64 192 + store ptr %95, ptr %106, align 8, !noalias !36 + %107 = add i64 %96, 1 + %108 = getelementptr inbounds nuw i8, ptr %95, i64 176 + store ptr %97, ptr %108, align 8, !noalias !39 + %109 = getelementptr inbounds nuw i8, ptr %95, i64 184 + store i16 0, ptr %109, align 8, !noalias !44 + store ptr %97, ptr %0, align 8, !alias.scope !36 + store i64 %107, ptr %6, align 8, !alias.scope !36 + br label %.loopexit78 + +.loopexit78: ; preds = %89, %103 + %.sroa.059.0 = phi ptr [ %97, %100 ], [ %87, %86 ] + %.sroa.660.0 = phi i64 [ %107, %100 ], [ %90, %86 ] + %110 = add i64 %.sroa.660.0, -1 + %111 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h5a2a0cf99cd774feE.llvm.17124746118322557833"() + to label %.noexc36 unwind label %.loopexit84 + +.noexc37: ; preds = %.loopexit78 + %112 = icmp eq ptr %111, null + br i1 %112, label %113, label %114 + +113: ; preds = %.noexc37 invoke void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef 8, i64 noundef 192) #17 - to label %.noexc37 unwind label %.loopexit.split-lp84 + to label %.noexc37 unwind label %.loopexit.split-lp85 -.noexc37: ; preds = %110 +.noexc38: ; preds = %113 unreachable -111: ; preds = %.noexc36 - %112 = getelementptr inbounds nuw i8, ptr %108, i64 176 - store ptr null, ptr %112, align 8 - %113 = getelementptr inbounds nuw i8, ptr %108, i64 186 - store i16 0, ptr %113, align 2 - %.not = icmp eq i64 %107, 0 +114: ; preds = %.noexc37 + %115 = getelementptr inbounds nuw i8, ptr %111, i64 176 + store ptr null, ptr %115, align 8 + %116 = getelementptr inbounds nuw i8, ptr %111, i64 186 + store i16 0, ptr %116, align 2 + %.not = icmp eq i64 %110, 0 br i1 %.not, label %._crit_edge, label %.lr.ph -._crit_edge: ; preds = %_ZN5alloc11collections5btree3mem7replace17h66a910f1d87a8d44E.exit52, %111 - %.sroa.064.0.lcssa = phi ptr [ %108, %111 ], [ %140, %_ZN5alloc11collections5btree3mem7replace17h66a910f1d87a8d44E.exit52 ] - %114 = getelementptr inbounds nuw i8, ptr %.sroa.058.0, i64 186 - %115 = load i16, ptr %114, align 2, !noalias !45, !noundef !7 - %116 = icmp ult i16 %115, 11 - br i1 %116, label %118, label %117 +._crit_edge: ; preds = %_ZN5alloc11collections5btree3mem7replace17h66a910f1d87a8d44E.exit53, %114 + %.sroa.065.0.lcssa = phi ptr [ %111, %111 ], [ %143, %_ZN5alloc11collections5btree3mem7replace17h66a910f1d87a8d44E.exit52 ] + %117 = getelementptr inbounds nuw i8, ptr %.sroa.059.0, i64 186 + %118 = load i16, ptr %117, align 2, !noalias !45, !noundef !7 + %119 = icmp ult i16 %118, 11 + br i1 %119, label %121, label %120 -117: ; preds = %._crit_edge +120: ; preds = %._crit_edge invoke void @_ZN4core9panicking5panic17h44790a89027c670fE(ptr noalias noundef nonnull readonly align 1 @anon.e2192d190c206e613b03b2b794f0dab7.0, i64 noundef 32, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.e2192d190c206e613b03b2b794f0dab7.5) #17 - to label %.noexc39 unwind label %.loopexit.split-lp84 + to label %.noexc39 unwind label %.loopexit.split-lp85 -.noexc39: ; preds = %117 +.noexc40: ; preds = %120 unreachable -118: ; preds = %._crit_edge - %119 = zext nneg i16 %115 to i64 - %120 = add nuw nsw i16 %115, 1 - store i16 %120, ptr %114, align 2, !noalias !45 - %121 = getelementptr inbounds nuw { [2 x i64] }, ptr %.sroa.058.0, i64 %119 - store ptr %23, ptr %121, align 8, !noalias !45 - %122 = getelementptr inbounds nuw i8, ptr %121, i64 8 - store i64 %24, ptr %122, align 8, !noalias !45 - %123 = add nuw nsw i64 %119, 1 - %124 = getelementptr inbounds nuw i8, ptr %.sroa.058.0, i64 192 - %125 = getelementptr inbounds nuw ptr, ptr %124, i64 %123 - store ptr %.sroa.064.0.lcssa, ptr %125, align 8, !noalias !45 - %126 = getelementptr inbounds nuw i8, ptr %.sroa.064.0.lcssa, i64 176 - store ptr %.sroa.058.0, ptr %126, align 8, !noalias !45 - %127 = trunc nuw nsw i64 %123 to i16 - %128 = getelementptr inbounds nuw i8, ptr %.sroa.064.0.lcssa, i64 184 - store i16 %127, ptr %128, align 8, !noalias !45 - %.not16.i40 = icmp eq i64 %.sroa.659.0, 0 - br i1 %.not16.i40, label %.loopexit, label %.lr.ph.i41 - -.lr.ph.i41: ; preds = %118, %.lr.ph.i41 - %.018.i42 = phi ptr [ %135, %.lr.ph.i41 ], [ %.sroa.058.0, %118 ] - %.01517.i43 = phi i64 [ %136, %.lr.ph.i41 ], [ %.sroa.659.0, %118 ] - %129 = getelementptr inbounds nuw i8, ptr %.018.i42, i64 186 - %130 = load i16, ptr %129, align 2, !noalias !48, !noundef !7 - %131 = zext nneg i16 %130 to i64 - %132 = getelementptr inbounds nuw i8, ptr %.018.i42, i64 192 - %133 = icmp ult i16 %130, 12 - call void @llvm.assume(i1 %133) - %134 = getelementptr inbounds nuw ptr, ptr %132, i64 %131 - %135 = load ptr, ptr %134, align 8, !noalias !48, !nonnull !7, !noundef !7 - %136 = add i64 %.01517.i43, -1 - %.not.i44 = icmp eq i64 %136, 0 - br i1 %.not.i44, label %.loopexit, label %.lr.ph.i41 - -.loopexit: ; preds = %.lr.ph.i41, %118, %151 - %.sroa.0.1 = phi ptr [ %.sroa.0.0, %151 ], [ %.sroa.058.0, %118 ], [ %135, %.lr.ph.i41 ] - %137 = load i64, ptr %2, align 8, !noundef !7 - %138 = add i64 %137, 1 - store i64 %138, ptr %2, align 8 +121: ; preds = %._crit_edge + %122 = zext nneg i16 %118 to i64 + %123 = add nuw nsw i16 %118, 1 + store i16 %123, ptr %117, align 2, !noalias !45 + %124 = getelementptr inbounds nuw { [2 x i64] }, ptr %.sroa.059.0, i64 %122 + store ptr %23, ptr %124, align 8, !noalias !45 + %125 = getelementptr inbounds nuw i8, ptr %124, i64 8 + store i64 %24, ptr %125, align 8, !noalias !45 + %126 = add nuw nsw i64 %122, 1 + %127 = getelementptr inbounds nuw i8, ptr %.sroa.059.0, i64 192 + %128 = getelementptr inbounds nuw ptr, ptr %127, i64 %126 + store ptr %.sroa.065.0.lcssa, ptr %128, align 8, !noalias !45 + %129 = getelementptr inbounds nuw i8, ptr %.sroa.065.0.lcssa, i64 176 + store ptr %.sroa.059.0, ptr %129, align 8, !noalias !45 + %130 = trunc nuw nsw i64 %126 to i16 + %131 = getelementptr inbounds nuw i8, ptr %.sroa.065.0.lcssa, i64 184 + store i16 %130, ptr %131, align 8, !noalias !45 + %.not16.i41 = icmp eq i64 %.sroa.660.0, 0 + br i1 %.not16.i41, label %.loopexit, label %.lr.ph.i42 + +.lr.ph.i42: ; preds = %121, %.lr.ph.i42 + %.018.i43 = phi ptr [ %138, %.lr.ph.i41 ], [ %.sroa.059.0, %118 ] + %.01517.i44 = phi i64 [ %139, %.lr.ph.i41 ], [ %.sroa.660.0, %118 ] + %132 = getelementptr inbounds nuw i8, ptr %.018.i43, i64 186 + %133 = load i16, ptr %132, align 2, !noalias !48, !noundef !7 + %134 = zext nneg i16 %133 to i64 + %135 = getelementptr inbounds nuw i8, ptr %.018.i43, i64 192 + %136 = icmp ult i16 %133, 12 + call void @llvm.assume(i1 %136) + %137 = getelementptr inbounds nuw ptr, ptr %135, i64 %134 + %138 = load ptr, ptr %137, align 8, !noalias !48, !nonnull !7, !noundef !7 + %139 = add i64 %.01517.i44, -1 + %.not.i45 = icmp eq i64 %139, 0 + br i1 %.not.i45, label %.loopexit, label %.lr.ph.i42 + +.loopexit: ; preds = %.lr.ph.i42, %121, %154 + %.sroa.0.1 = phi ptr [ %.sroa.0.0, %151 ], [ %.sroa.059.0, %118 ], [ %138, %.lr.ph.i41 ] + %140 = load i64, ptr %2, align 8, !noundef !7 + %141 = add i64 %140, 1 + store i64 %141, ptr %2, align 8 br label %17 -.lr.ph: ; preds = %111, %_ZN5alloc11collections5btree3mem7replace17h66a910f1d87a8d44E.exit52 - %.sroa.014.098 = phi i64 [ %139, %_ZN5alloc11collections5btree3mem7replace17h66a910f1d87a8d44E.exit52 ], [ 0, %111 ] - %.sroa.064.096 = phi ptr [ %140, %_ZN5alloc11collections5btree3mem7replace17h66a910f1d87a8d44E.exit52 ], [ %108, %111 ] - %139 = add nuw i64 %.sroa.014.098, 1 - %140 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h832ae5eb9b368d30E.llvm.17124746118322557833"() - to label %.noexc.i48 unwind label %.loopexit76, !noalias !51 +.lr.ph: ; preds = %114, %_ZN5alloc11collections5btree3mem7replace17h66a910f1d87a8d44E.exit53 + %.sroa.014.099 = phi i64 [ %142, %_ZN5alloc11collections5btree3mem7replace17h66a910f1d87a8d44E.exit52 ], [ 0, %111 ] + %.sroa.065.097 = phi ptr [ %143, %_ZN5alloc11collections5btree3mem7replace17h66a910f1d87a8d44E.exit52 ], [ %111, %111 ] + %142 = add nuw i64 %.sroa.014.099, 1 + %143 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h832ae5eb9b368d30E.llvm.17124746118322557833"() + to label %.noexc.i48 unwind label %.loopexit77, !noalias !51 -.noexc.i48: ; preds = %.lr.ph - %141 = icmp eq ptr %140, null - br i1 %141, label %142, label %_ZN5alloc11collections5btree3mem7replace17h66a910f1d87a8d44E.exit52 +.noexc.i49: ; preds = %.lr.ph + %144 = icmp eq ptr %143, null + br i1 %144, label %145, label %_ZN5alloc11collections5btree3mem7replace17h66a910f1d87a8d44E.exit53 -142: ; preds = %.noexc.i48 +145: ; preds = %.noexc.i49 invoke void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef 8, i64 noundef 288) #17 to label %.noexc3.i49 unwind label %.loopexit.split-lp, !noalias !51 -.noexc3.i49: ; preds = %142 +.noexc3.i50: ; preds = %145 unreachable -.loopexit76: ; preds = %.lr.ph +.loopexit77: ; preds = %.lr.ph %lpad.loopexit = landingpad { ptr, i32 } cleanup - br label %143 + br label %146 -.loopexit.split-lp: ; preds = %142 +.loopexit.split-lp: ; preds = %145 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup - br label %143 + br label %146 -143: ; preds = %.loopexit.split-lp, %.loopexit76 +146: ; preds = %.loopexit.split-lp, %.loopexit77 %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit76 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] invoke void @"_ZN93_$LT$alloc..collections..btree..mem..replace..PanicGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17he7f40e69e6f26b83E"(ptr noalias noundef nonnull align 1 %4) - to label %.body unwind label %144, !noalias !51 + to label %.body unwind label %147, !noalias !51 -144: ; preds = %143 - %145 = landingpad { ptr, i32 } +147: ; preds = %146 + %148 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #19, !noalias !51 unreachable -_ZN5alloc11collections5btree3mem7replace17h66a910f1d87a8d44E.exit52: ; preds = %.noexc.i48 - %146 = getelementptr inbounds nuw i8, ptr %140, i64 176 - store ptr null, ptr %146, align 8, !noalias !51 - %147 = getelementptr inbounds nuw i8, ptr %140, i64 186 - store i16 0, ptr %147, align 2, !noalias !51 - %148 = getelementptr inbounds nuw i8, ptr %140, i64 192 - store ptr %.sroa.064.096, ptr %148, align 8, !noalias !51 - %149 = getelementptr inbounds nuw i8, ptr %.sroa.064.096, i64 176 - store ptr %140, ptr %149, align 8, !noalias !54 - %150 = getelementptr inbounds nuw i8, ptr %.sroa.064.096, i64 184 - store i16 0, ptr %150, align 8, !noalias !59 - %exitcond.not = icmp eq i64 %139, %107 +_ZN5alloc11collections5btree3mem7replace17h66a910f1d87a8d44E.exit53: ; preds = %.noexc.i49 + %149 = getelementptr inbounds nuw i8, ptr %143, i64 176 + store ptr null, ptr %149, align 8, !noalias !51 + %150 = getelementptr inbounds nuw i8, ptr %143, i64 186 + store i16 0, ptr %150, align 2, !noalias !51 + %151 = getelementptr inbounds nuw i8, ptr %143, i64 192 + store ptr %.sroa.065.097, ptr %151, align 8, !noalias !51 + %152 = getelementptr inbounds nuw i8, ptr %.sroa.065.097, i64 176 + store ptr %143, ptr %152, align 8, !noalias !54 + %153 = getelementptr inbounds nuw i8, ptr %.sroa.065.097, i64 184 + store i16 0, ptr %153, align 8, !noalias !59 + %exitcond.not = icmp eq i64 %142, %110 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph -151: ; preds = %27 - %152 = zext nneg i16 %29 to i64 - %153 = add nuw nsw i16 %29, 1 - store i16 %153, ptr %28, align 2, !noalias !60 - %154 = getelementptr inbounds nuw { [2 x i64] }, ptr %.sroa.0.0, i64 %152 - store ptr %23, ptr %154, align 8, !noalias !60 - %155 = getelementptr inbounds nuw i8, ptr %154, i64 8 - store i64 %24, ptr %155, align 8, !noalias !60 +154: ; preds = %27 + %155 = zext nneg i16 %29 to i64 + %156 = add nuw nsw i16 %29, 1 + store i16 %156, ptr %28, align 2, !noalias !60 + %157 = getelementptr inbounds nuw { [2 x i64] }, ptr %.sroa.0.0, i64 %155 + store ptr %23, ptr %157, align 8, !noalias !60 + %158 = getelementptr inbounds nuw i8, ptr %157, i64 8 + store i64 %24, ptr %158, align 8, !noalias !60 br label %.loopexit -156: ; preds = %.body - %157 = landingpad { ptr, i32 } +159: ; preds = %.body + %160 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #19 unreachable diff --git a/bench/wasmtime-rs/optimized/5079e95b7v1wxko.ll b/bench/wasmtime-rs/optimized/5079e95b7v1wxko.ll index efe6df6901b..ae0215e9290 100644 --- a/bench/wasmtime-rs/optimized/5079e95b7v1wxko.ll +++ b/bench/wasmtime-rs/optimized/5079e95b7v1wxko.ll @@ -11234,7 +11234,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %7 = load i64, ptr %6, align 8, !noundef !17 %8 = load ptr, ptr %0, align 8, !nonnull !17, !noundef !17 %.not16.i = icmp eq i64 %7, 0 - br i1 %.not16.i, label %.loopexit85, label %.lr.ph.i + br i1 %.not16.i, label %.loopexit86, label %.lr.ph.i .lr.ph.i: ; preds = %3, %.lr.ph.i %.018.i = phi ptr [ %15, %.lr.ph.i ], [ %8, %3 ] @@ -11249,24 +11249,24 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %15 = load ptr, ptr %14, align 8, !noalias !1606, !nonnull !17, !noundef !17 %16 = add i64 %.01517.i, -1 %.not.i = icmp eq i64 %16, 0 - br i1 %.not.i, label %.loopexit85, label %.lr.ph.i + br i1 %.not.i, label %.loopexit86, label %.lr.ph.i -.loopexit85: ; preds = %.lr.ph.i, %3 +.loopexit86: ; preds = %.lr.ph.i, %3 %.0.lcssa.i = phi ptr [ %8, %3 ], [ %15, %.lr.ph.i ] call void @llvm.lifetime.start.p0(ptr nonnull %5) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %5, ptr noundef nonnull align 8 dereferenceable(40) %1, i64 40, i1 false) br label %17 -17: ; preds = %.loopexit, %.loopexit85 +17: ; preds = %.loopexit, %.loopexit86 %.sroa.0.0 = phi ptr [ %.0.lcssa.i, %.loopexit85 ], [ %.sroa.0.1, %.loopexit ] %18 = invoke { i32, i32 } @"_ZN137_$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$K$C$V$C$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h67afcb0b020e589fE"(ptr noalias noundef nonnull align 8 dereferenceable(40) %5) to label %22 unwind label %20 -.body: ; preds = %.loopexit80, %.loopexit.split-lp81, %135, %93, %20 - %.pn = phi { ptr, i32 } [ %21, %20 ], [ %lpad.phi79, %93 ], [ %lpad.phi, %135 ], [ %lpad.loopexit82, %.loopexit80 ], [ %lpad.loopexit.split-lp83, %.loopexit.split-lp81 ] +.body: ; preds = %.loopexit81, %.loopexit.split-lp82, %138, %96, %20 + %.pn = phi { ptr, i32 } [ %21, %20 ], [ %lpad.phi80, %93 ], [ %lpad.phi, %135 ], [ %lpad.loopexit83, %.loopexit80 ], [ %lpad.loopexit.split-lp84, %.loopexit.split-lp81 ] %19 = getelementptr inbounds nuw i8, ptr %5, i64 8 invoke void @"_ZN86_$LT$alloc..vec..into_iter..IntoIter$LT$T$C$A$GT$$u20$as$u20$core..ops..drop..Drop$GT$4drop17hd4139e6ae1a0e2b8E.llvm.5456684732158232753"(ptr noalias noundef nonnull align 8 dereferenceable(32) %19) - to label %"_ZN4core3ptr519drop_in_place$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$wasmtime_types..ModuleInternedTypeIndex$C$alloc..collections..btree..set_val..SetValZST$C$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$wasmtime_types..ModuleInternedTypeIndex$GT$$C$alloc..collections..btree..set..BTreeSet$LT$wasmtime_types..ModuleInternedTypeIndex$GT$..from_sorted_iter$LT$alloc..vec..into_iter..IntoIter$LT$wasmtime_types..ModuleInternedTypeIndex$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17h6988bd2885362933E.exit" unwind label %146 + to label %"_ZN4core3ptr519drop_in_place$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$wasmtime_types..ModuleInternedTypeIndex$C$alloc..collections..btree..set_val..SetValZST$C$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$wasmtime_types..ModuleInternedTypeIndex$GT$$C$alloc..collections..btree..set..BTreeSet$LT$wasmtime_types..ModuleInternedTypeIndex$GT$..from_sorted_iter$LT$alloc..vec..into_iter..IntoIter$LT$wasmtime_types..ModuleInternedTypeIndex$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17h6988bd2885362933E.exit" unwind label %149 20: ; preds = %17 %21 = landingpad { ptr, i32 } @@ -11295,7 +11295,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %28 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 54 %29 = load i16, ptr %28, align 2, !noundef !17 %30 = icmp ult i16 %29, 11 - br i1 %30, label %141, label %.preheader + br i1 %30, label %144, label %.preheader .lr.ph.i28: ; preds = %.lr.ph.i28.preheader, %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h0d48bbc0b8cd5d2fE.exit.i" %.011.i = phi ptr [ %41, %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h0d48bbc0b8cd5d2fE.exit.i" ], [ %.val25, %.lr.ph.i28.preheader ] @@ -11325,7 +11325,7 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %44 = icmp ult i16 %43, 5 br i1 %44, label %45, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h0d48bbc0b8cd5d2fE.exit.i" -"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h0d48bbc0b8cd5d2fE.exit.i": ; preds = %74, %"_ZN5alloc11collections5btree4node40NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$7last_kv17h449060b3b06e811dE.exit.i" +"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h0d48bbc0b8cd5d2fE.exit.i": ; preds = %77, %"_ZN5alloc11collections5btree4node40NodeRef$LT$BorrowType$C$K$C$V$C$Type$GT$7last_kv17h449060b3b06e811dE.exit.i" %.not.i29 = icmp eq i64 %38, 0 br i1 %.not.i29, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17hfa697b450b994299E.exit", label %.lr.ph.i28 @@ -11336,25 +11336,25 @@ define hidden void @"_ZN5alloc11collections5btree6append178_$LT$impl$u20$alloc.. %48 = load i16, ptr %47, align 2, !noalias !1616, !noundef !17 %49 = zext nneg i16 %43 to i64 %.not.i6.i = icmp ugt i16 %narrow.i, %48 - br i1 %.not.i6.i, label %.noexc30, label %_ZN5alloc11collections5btree4node13move_to_slice17hae5d1a55ddef0b91E.exit.i.i + br i1 %.not.i6.i, label %.noexc30, label %50 .noexc30: ; preds = %45 call void @_ZN4core9panicking5panic17h44790a89027c670fE(ptr noalias noundef nonnull readonly align 1 @anon.f7ec036493567efedaa7daa7831baa68.36, i64 noundef 39, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.f7ec036493567efedaa7daa7831baa68.37) #28 unreachable -_ZN5alloc11collections5btree4node13move_to_slice17hae5d1a55ddef0b91E.exit.i.i: ; preds = %45 - %50 = zext i16 %48 to i64 - %51 = sub nuw nsw i64 %50, %46 - %52 = trunc nuw i64 %51 to i16 - store i16 %52, ptr %47, align 2, !noalias !1616 +50: ; preds = %45 + %51 = zext i16 %48 to i64 + %52 = sub nuw nsw i64 %51, %46 + %53 = trunc nuw i64 %52 to i16 + store i16 %53, ptr %47, align 2, !noalias !1616 store i16 5, ptr %42, align 2, !noalias !1616 - %53 = getelementptr inbounds nuw i8, ptr %41, i64 8 - %54 = getelementptr inbounds nuw i32, ptr %53, i64 %46 - %55 = shl nuw nsw i64 %49, 2 - call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %54, ptr nonnull align 4 %53, i64 %55, i1 false), !noalias !1616 - %56 = getelementptr inbounds nuw i8, ptr %41, i64 56 - %57 = add nuw nsw i64 %51, 1 - %58 = sub nuw nsw i64 %50, %57 + %54 = getelementptr inbounds nuw i8, ptr %41, i64 8 + %55 = getelementptr inbounds nuw i32, ptr %54, i64 %46 + %56 = shl nuw nsw i64 %49, 2 + call void @llvm.memmove.p0.p0.i64(ptr nonnull align 4 %55, ptr nonnull align 4 %54, i64 %56, i1 false), !noalias !1616 + %57 = getelementptr inbounds nuw i8, ptr %41, i64 56 + %58 = add nuw nsw i64 %52, 1 + %59 = sub nuw nsw i64 %51, %58 %59 = getelementptr inbounds nuw i8, ptr %37, i64 8 %60 = getelementptr inbounds nuw i32, ptr %59, i64 %57 %61 = shl nuw nsw i64 %58, 2 @@ -11365,255 +11365,255 @@ _ZN5alloc11collections5btree4node13move_to_slice17hae5d1a55ddef0b91E.exit.i.i: ; %65 = getelementptr inbounds nuw i32, ptr %64, i64 %34 %66 = load i32, ptr %65, align 4, !noalias !1616, !noundef !17 store i32 %63, ptr %65, align 4, !noalias !1616 - %67 = getelementptr inbounds nuw i32, ptr %53, i64 %58 - store i32 %66, ptr %67, align 4, !noalias !1616 + %68 = getelementptr inbounds nuw i32, ptr %53, i64 %58 + store i32 %66, ptr %68, align 4, !noalias !1616 %cond.i = icmp eq i64 %38, 0 br i1 %cond.i, label %"_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17hfa697b450b994299E.exit", label %_ZN5alloc11collections5btree4node13move_to_slice17h5829d77f99dd0856E.exit.i.i _ZN5alloc11collections5btree4node13move_to_slice17h5829d77f99dd0856E.exit.i.i: ; preds = %_ZN5alloc11collections5btree4node13move_to_slice17hae5d1a55ddef0b91E.exit.i.i - %68 = getelementptr inbounds nuw i8, ptr %37, i64 56 - %69 = getelementptr inbounds nuw ptr, ptr %56, i64 %46 - %70 = shl nuw nsw i64 %49, 3 - %71 = add nuw nsw i64 %70, 8 - call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %69, ptr noundef nonnull align 8 dereferenceable(1) %56, i64 %71, i1 false), !noalias !1616 - %72 = getelementptr inbounds nuw ptr, ptr %68, i64 %57 - %73 = shl nuw nsw i64 %46, 3 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %56, ptr noundef nonnull readonly align 8 dereferenceable(1) %72, i64 %73, i1 false), !alias.scope !1623, !noalias !1616 - br label %74 - -74: ; preds = %74, %_ZN5alloc11collections5btree4node13move_to_slice17h5829d77f99dd0856E.exit.i.i - %.sroa.0.05.i.i.i = phi i64 [ 0, %_ZN5alloc11collections5btree4node13move_to_slice17h5829d77f99dd0856E.exit.i.i ], [ %75, %74 ] - %75 = add nuw nsw i64 %.sroa.0.05.i.i.i, 1 - %76 = getelementptr inbounds nuw ptr, ptr %56, i64 %.sroa.0.05.i.i.i - %77 = load ptr, ptr %76, align 8, !noalias !1616, !nonnull !17, !noundef !17 - store ptr %41, ptr %77, align 8, !noalias !1616 - %78 = trunc nuw nsw i64 %.sroa.0.05.i.i.i to i16 - %79 = getelementptr inbounds nuw i8, ptr %77, i64 52 - store i16 %78, ptr %79, align 4, !noalias !1616 + %71 = getelementptr inbounds nuw i8, ptr %37, i64 56 + %72 = getelementptr inbounds nuw ptr, ptr %57, i64 %46 + %73 = shl nuw nsw i64 %49, 3 + %74 = add nuw nsw i64 %73, 8 + call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %72, ptr noundef nonnull align 8 dereferenceable(1) %57, i64 %74, i1 false), !noalias !1616 + %75 = getelementptr inbounds nuw ptr, ptr %71, i64 %58 + %76 = shl nuw nsw i64 %46, 3 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %57, ptr noundef nonnull readonly align 8 dereferenceable(1) %75, i64 %76, i1 false), !alias.scope !1623, !noalias !1616 + br label %77 + +77: ; preds = %77, %_ZN5alloc11collections5btree4node13move_to_slice17h5829d77f99dd0856E.exit.i.i + %.sroa.0.05.i.i.i = phi i64 [ 0, %_ZN5alloc11collections5btree4node13move_to_slice17h5829d77f99dd0856E.exit.i.i ], [ %78, %74 ] + %78 = add nuw nsw i64 %.sroa.0.05.i.i.i, 1 + %79 = getelementptr inbounds nuw ptr, ptr %57, i64 %.sroa.0.05.i.i.i + %80 = load ptr, ptr %79, align 8, !noalias !1616, !nonnull !17, !noundef !17 + store ptr %41, ptr %80, align 8, !noalias !1616 + %81 = trunc nuw nsw i64 %.sroa.0.05.i.i.i to i16 + %82 = getelementptr inbounds nuw i8, ptr %80, i64 52 + store i16 %81, ptr %82, align 4, !noalias !1616 %exitcond.not.i.i.i = icmp eq i64 %.sroa.0.05.i.i.i, 5 - br i1 %exitcond.not.i.i.i, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h0d48bbc0b8cd5d2fE.exit.i", label %74 + br i1 %exitcond.not.i.i.i, label %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h0d48bbc0b8cd5d2fE.exit.i", label %77 "_ZN5alloc11collections5btree3fix178_$LT$impl$u20$alloc..collections..btree..node..NodeRef$LT$alloc..collections..btree..node..marker..Owned$C$K$C$V$C$alloc..collections..btree..node..marker..LeafOrInternal$GT$$GT$29fix_right_border_of_plentiful17hfa697b450b994299E.exit": ; preds = %_ZN5alloc11collections5btree4node13move_to_slice17hae5d1a55ddef0b91E.exit.i.i, %"_ZN5alloc11collections5btree4node29BalancingContext$LT$K$C$V$GT$15bulk_steal_left17h0d48bbc0b8cd5d2fE.exit.i", %"_ZN4core3ptr519drop_in_place$LT$alloc..collections..btree..dedup_sorted_iter..DedupSortedIter$LT$wasmtime_types..ModuleInternedTypeIndex$C$alloc..collections..btree..set_val..SetValZST$C$core..iter..adapters..map..Map$LT$alloc..vec..into_iter..IntoIter$LT$wasmtime_types..ModuleInternedTypeIndex$GT$$C$alloc..collections..btree..set..BTreeSet$LT$wasmtime_types..ModuleInternedTypeIndex$GT$..from_sorted_iter$LT$alloc..vec..into_iter..IntoIter$LT$wasmtime_types..ModuleInternedTypeIndex$GT$$GT$..$u7b$$u7b$closure$u7d$$u7d$$GT$$GT$$GT$17h6988bd2885362933E.exit27" ret void -.preheader: ; preds = %27, %82 - %.sroa.54.0 = phi i64 [ %83, %82 ], [ 0, %27 ] - %.sroa.03.0 = phi ptr [ %80, %82 ], [ %.sroa.0.0, %27 ] - %80 = load ptr, ptr %.sroa.03.0, align 8, !noalias !1627, !noundef !17 - %81 = icmp eq ptr %80, null - br i1 %81, label %87, label %82 +.preheader: ; preds = %27, %85 + %.sroa.54.0 = phi i64 [ %86, %82 ], [ 0, %27 ] + %.sroa.03.0 = phi ptr [ %83, %82 ], [ %.sroa.0.0, %27 ] + %83 = load ptr, ptr %.sroa.03.0, align 8, !noalias !1627, !noundef !17 + %84 = icmp eq ptr %83, null + br i1 %84, label %90, label %85 -.loopexit80: ; preds = %.loopexit74 - %lpad.loopexit82 = landingpad { ptr, i32 } +.loopexit81: ; preds = %.loopexit75 + %lpad.loopexit83 = landingpad { ptr, i32 } cleanup br label %.body -.loopexit.split-lp81: ; preds = %104, %110 - %lpad.loopexit.split-lp83 = landingpad { ptr, i32 } +.loopexit.split-lp82: ; preds = %107, %113 + %lpad.loopexit.split-lp84 = landingpad { ptr, i32 } cleanup br label %.body -82: ; preds = %.preheader - %83 = add i64 %.sroa.54.0, 1 - %84 = getelementptr inbounds nuw i8, ptr %80, i64 54 - %85 = load i16, ptr %84, align 2, !noundef !17 - %86 = icmp ult i16 %85, 11 - br i1 %86, label %.loopexit74, label %.preheader +85: ; preds = %.preheader + %86 = add i64 %.sroa.54.0, 1 + %87 = getelementptr inbounds nuw i8, ptr %83, i64 54 + %88 = load i16, ptr %87, align 2, !noundef !17 + %89 = icmp ult i16 %88, 11 + br i1 %89, label %.loopexit75, label %.preheader -87: ; preds = %.preheader +90: ; preds = %.preheader call void @llvm.experimental.noalias.scope.decl(metadata !1630) - %88 = load ptr, ptr %0, align 8, !alias.scope !1630, !nonnull !17, !noundef !17 - %89 = load i64, ptr %6, align 8, !alias.scope !1630, !noundef !17 - %90 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17hdf605e22fe771092E.llvm.3458943816331328394"() - to label %.noexc.i unwind label %.loopexit75, !noalias !1630 + %91 = load ptr, ptr %0, align 8, !alias.scope !1630, !nonnull !17, !noundef !17 + %92 = load i64, ptr %6, align 8, !alias.scope !1630, !noundef !17 + %93 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17hdf605e22fe771092E.llvm.3458943816331328394"() + to label %.noexc.i unwind label %.loopexit76, !noalias !1630 -.noexc.i: ; preds = %87 - %91 = icmp eq ptr %90, null - br i1 %91, label %92, label %96 +.noexc.i: ; preds = %90 + %94 = icmp eq ptr %93, null + br i1 %94, label %95, label %99 -92: ; preds = %.noexc.i +95: ; preds = %.noexc.i invoke void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef 8, i64 noundef 152) #28 - to label %.noexc3.i unwind label %.loopexit.split-lp76, !noalias !1630 + to label %.noexc3.i unwind label %.loopexit.split-lp77, !noalias !1630 -.noexc3.i: ; preds = %92 +.noexc3.i: ; preds = %95 unreachable -.loopexit75: ; preds = %87 - %lpad.loopexit77 = landingpad { ptr, i32 } +.loopexit76: ; preds = %90 + %lpad.loopexit78 = landingpad { ptr, i32 } cleanup - br label %93 + br label %96 -.loopexit.split-lp76: ; preds = %92 - %lpad.loopexit.split-lp78 = landingpad { ptr, i32 } +.loopexit.split-lp77: ; preds = %95 + %lpad.loopexit.split-lp79 = landingpad { ptr, i32 } cleanup - br label %93 + br label %96 -93: ; preds = %.loopexit.split-lp76, %.loopexit75 - %lpad.phi79 = phi { ptr, i32 } [ %lpad.loopexit77, %.loopexit75 ], [ %lpad.loopexit.split-lp78, %.loopexit.split-lp76 ] +96: ; preds = %.loopexit.split-lp77, %.loopexit76 + %lpad.phi80 = phi { ptr, i32 } [ %lpad.loopexit78, %.loopexit75 ], [ %lpad.loopexit.split-lp79, %.loopexit.split-lp76 ] invoke void @"_ZN93_$LT$alloc..collections..btree..mem..replace..PanicGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17he7f40e69e6f26b83E"(ptr noalias noundef nonnull align 1 %4) - to label %.body unwind label %94, !noalias !1630 + to label %.body unwind label %97, !noalias !1630 -94: ; preds = %93 - %95 = landingpad { ptr, i32 } +97: ; preds = %96 + %98 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #27, !noalias !1630 unreachable -96: ; preds = %.noexc.i - store ptr null, ptr %90, align 8, !noalias !1630 - %97 = getelementptr inbounds nuw i8, ptr %90, i64 54 - store i16 0, ptr %97, align 2, !noalias !1630 - %98 = getelementptr inbounds nuw i8, ptr %90, i64 56 - store ptr %88, ptr %98, align 8, !noalias !1630 - %99 = add i64 %89, 1 - store ptr %90, ptr %88, align 8, !noalias !1633 - %100 = getelementptr inbounds nuw i8, ptr %88, i64 52 - store i16 0, ptr %100, align 4, !noalias !1638 - store ptr %90, ptr %0, align 8, !alias.scope !1630 - store i64 %99, ptr %6, align 8, !alias.scope !1630 - br label %.loopexit74 - -.loopexit74: ; preds = %82, %96 - %.sroa.055.0 = phi ptr [ %90, %96 ], [ %80, %82 ] - %.sroa.656.0 = phi i64 [ %99, %96 ], [ %83, %82 ] - %101 = add i64 %.sroa.656.0, -1 - %102 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h7caa7a0d8d6883c3E.llvm.3458943816331328394"() - to label %.noexc32 unwind label %.loopexit80 - -.noexc32: ; preds = %.loopexit74 - %103 = icmp eq ptr %102, null - br i1 %103, label %104, label %105 - -104: ; preds = %.noexc32 +99: ; preds = %.noexc.i + store ptr null, ptr %93, align 8, !noalias !1630 + %100 = getelementptr inbounds nuw i8, ptr %93, i64 54 + store i16 0, ptr %100, align 2, !noalias !1630 + %101 = getelementptr inbounds nuw i8, ptr %93, i64 56 + store ptr %91, ptr %101, align 8, !noalias !1630 + %102 = add i64 %92, 1 + store ptr %93, ptr %91, align 8, !noalias !1633 + %103 = getelementptr inbounds nuw i8, ptr %91, i64 52 + store i16 0, ptr %103, align 4, !noalias !1638 + store ptr %93, ptr %0, align 8, !alias.scope !1630 + store i64 %102, ptr %6, align 8, !alias.scope !1630 + br label %.loopexit75 + +.loopexit75: ; preds = %85, %99 + %.sroa.056.0 = phi ptr [ %93, %96 ], [ %83, %82 ] + %.sroa.657.0 = phi i64 [ %102, %96 ], [ %86, %82 ] + %104 = add i64 %.sroa.657.0, -1 + %105 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17h7caa7a0d8d6883c3E.llvm.3458943816331328394"() + to label %.noexc32 unwind label %.loopexit81 + +.noexc33: ; preds = %.loopexit75 + %106 = icmp eq ptr %105, null + br i1 %106, label %107, label %108 + +107: ; preds = %.noexc33 invoke void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef 8, i64 noundef 56) #28 - to label %.noexc33 unwind label %.loopexit.split-lp81 + to label %.noexc33 unwind label %.loopexit.split-lp82 -.noexc33: ; preds = %104 +.noexc34: ; preds = %107 unreachable -105: ; preds = %.noexc32 - store ptr null, ptr %102, align 8 - %106 = getelementptr inbounds nuw i8, ptr %102, i64 54 - store i16 0, ptr %106, align 2 - %.not = icmp eq i64 %101, 0 +108: ; preds = %.noexc33 + store ptr null, ptr %105, align 8 + %109 = getelementptr inbounds nuw i8, ptr %105, i64 54 + store i16 0, ptr %109, align 2 + %.not = icmp eq i64 %104, 0 br i1 %.not, label %._crit_edge, label %.lr.ph -._crit_edge: ; preds = %_ZN5alloc11collections5btree3mem7replace17ha140e4c1fd16a31cE.exit48, %105 - %.sroa.061.0.lcssa = phi ptr [ %102, %105 ], [ %132, %_ZN5alloc11collections5btree3mem7replace17ha140e4c1fd16a31cE.exit48 ] - %107 = getelementptr inbounds nuw i8, ptr %.sroa.055.0, i64 54 - %108 = load i16, ptr %107, align 2, !noundef !17 - %109 = icmp ult i16 %108, 11 - br i1 %109, label %111, label %110 +._crit_edge: ; preds = %_ZN5alloc11collections5btree3mem7replace17ha140e4c1fd16a31cE.exit49, %108 + %.sroa.062.0.lcssa = phi ptr [ %105, %105 ], [ %135, %_ZN5alloc11collections5btree3mem7replace17ha140e4c1fd16a31cE.exit48 ] + %110 = getelementptr inbounds nuw i8, ptr %.sroa.056.0, i64 54 + %111 = load i16, ptr %110, align 2, !noundef !17 + %112 = icmp ult i16 %111, 11 + br i1 %112, label %114, label %113 -110: ; preds = %._crit_edge +113: ; preds = %._crit_edge invoke void @_ZN4core9panicking5panic17h44790a89027c670fE(ptr noalias noundef nonnull readonly align 1 @anon.f7ec036493567efedaa7daa7831baa68.14.llvm.6890662303782480722, i64 noundef 32, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.f7ec036493567efedaa7daa7831baa68.19) #28 - to label %.noexc35 unwind label %.loopexit.split-lp81 - -.noexc35: ; preds = %110 - unreachable - -111: ; preds = %._crit_edge - %112 = zext nneg i16 %108 to i64 - %113 = add nuw nsw i16 %108, 1 - store i16 %113, ptr %107, align 2 - %114 = getelementptr inbounds nuw i8, ptr %.sroa.055.0, i64 8 - %115 = getelementptr inbounds nuw i32, ptr %114, i64 %112 - store i32 %24, ptr %115, align 4 - %116 = add nuw nsw i64 %112, 1 - %117 = getelementptr inbounds nuw i8, ptr %.sroa.055.0, i64 56 - %118 = getelementptr inbounds nuw ptr, ptr %117, i64 %116 - store ptr %.sroa.061.0.lcssa, ptr %118, align 8 - store ptr %.sroa.055.0, ptr %.sroa.061.0.lcssa, align 8 - %119 = trunc nuw nsw i64 %116 to i16 - %120 = getelementptr inbounds nuw i8, ptr %.sroa.061.0.lcssa, i64 52 - store i16 %119, ptr %120, align 4 - %.not16.i36 = icmp eq i64 %.sroa.656.0, 0 - br i1 %.not16.i36, label %.loopexit, label %.lr.ph.i37 - -.lr.ph.i37: ; preds = %111, %.lr.ph.i37 - %.018.i38 = phi ptr [ %127, %.lr.ph.i37 ], [ %.sroa.055.0, %111 ] - %.01517.i39 = phi i64 [ %128, %.lr.ph.i37 ], [ %.sroa.656.0, %111 ] - %121 = getelementptr inbounds nuw i8, ptr %.018.i38, i64 54 - %122 = load i16, ptr %121, align 2, !noalias !1639, !noundef !17 - %123 = zext nneg i16 %122 to i64 - %124 = getelementptr inbounds nuw i8, ptr %.018.i38, i64 56 - %125 = icmp ult i16 %122, 12 - call void @llvm.assume(i1 %125) - %126 = getelementptr inbounds nuw ptr, ptr %124, i64 %123 - %127 = load ptr, ptr %126, align 8, !noalias !1639, !nonnull !17, !noundef !17 - %128 = add i64 %.01517.i39, -1 - %.not.i40 = icmp eq i64 %128, 0 - br i1 %.not.i40, label %.loopexit, label %.lr.ph.i37 - -.loopexit: ; preds = %.lr.ph.i37, %111, %141 - %.sroa.0.1 = phi ptr [ %.sroa.0.0, %141 ], [ %.sroa.055.0, %111 ], [ %127, %.lr.ph.i37 ] - %129 = load i64, ptr %2, align 8, !noundef !17 - %130 = add i64 %129, 1 - store i64 %130, ptr %2, align 8 + to label %.noexc35 unwind label %.loopexit.split-lp82 + +.noexc36: ; preds = %113 + unreachable + +114: ; preds = %._crit_edge + %115 = zext nneg i16 %111 to i64 + %116 = add nuw nsw i16 %111, 1 + store i16 %116, ptr %110, align 2 + %117 = getelementptr inbounds nuw i8, ptr %.sroa.056.0, i64 8 + %118 = getelementptr inbounds nuw i32, ptr %117, i64 %115 + store i32 %24, ptr %118, align 4 + %119 = add nuw nsw i64 %115, 1 + %120 = getelementptr inbounds nuw i8, ptr %.sroa.056.0, i64 56 + %121 = getelementptr inbounds nuw ptr, ptr %120, i64 %119 + store ptr %.sroa.062.0.lcssa, ptr %121, align 8 + store ptr %.sroa.056.0, ptr %.sroa.062.0.lcssa, align 8 + %122 = trunc nuw nsw i64 %119 to i16 + %123 = getelementptr inbounds nuw i8, ptr %.sroa.062.0.lcssa, i64 52 + store i16 %122, ptr %123, align 4 + %.not16.i37 = icmp eq i64 %.sroa.657.0, 0 + br i1 %.not16.i37, label %.loopexit, label %.lr.ph.i38 + +.lr.ph.i38: ; preds = %114, %.lr.ph.i38 + %.018.i39 = phi ptr [ %130, %.lr.ph.i37 ], [ %.sroa.056.0, %111 ] + %.01517.i40 = phi i64 [ %131, %.lr.ph.i37 ], [ %.sroa.657.0, %111 ] + %124 = getelementptr inbounds nuw i8, ptr %.018.i39, i64 54 + %125 = load i16, ptr %124, align 2, !noalias !1639, !noundef !17 + %126 = zext nneg i16 %125 to i64 + %127 = getelementptr inbounds nuw i8, ptr %.018.i39, i64 56 + %128 = icmp ult i16 %125, 12 + call void @llvm.assume(i1 %128) + %129 = getelementptr inbounds nuw ptr, ptr %127, i64 %126 + %130 = load ptr, ptr %129, align 8, !noalias !1639, !nonnull !17, !noundef !17 + %131 = add i64 %.01517.i40, -1 + %.not.i41 = icmp eq i64 %131, 0 + br i1 %.not.i41, label %.loopexit, label %.lr.ph.i38 + +.loopexit: ; preds = %.lr.ph.i38, %114, %144 + %.sroa.0.1 = phi ptr [ %.sroa.0.0, %141 ], [ %.sroa.056.0, %111 ], [ %130, %.lr.ph.i37 ] + %132 = load i64, ptr %2, align 8, !noundef !17 + %133 = add i64 %132, 1 + store i64 %133, ptr %2, align 8 br label %17 -.lr.ph: ; preds = %105, %_ZN5alloc11collections5btree3mem7replace17ha140e4c1fd16a31cE.exit48 - %.sroa.014.095 = phi i64 [ %131, %_ZN5alloc11collections5btree3mem7replace17ha140e4c1fd16a31cE.exit48 ], [ 0, %105 ] - %.sroa.061.093 = phi ptr [ %132, %_ZN5alloc11collections5btree3mem7replace17ha140e4c1fd16a31cE.exit48 ], [ %102, %105 ] - %131 = add nuw i64 %.sroa.014.095, 1 - %132 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17hdf605e22fe771092E.llvm.3458943816331328394"() - to label %.noexc.i44 unwind label %.loopexit73, !noalias !1642 +.lr.ph: ; preds = %108, %_ZN5alloc11collections5btree3mem7replace17ha140e4c1fd16a31cE.exit49 + %.sroa.014.096 = phi i64 [ %134, %_ZN5alloc11collections5btree3mem7replace17ha140e4c1fd16a31cE.exit48 ], [ 0, %105 ] + %.sroa.062.094 = phi ptr [ %135, %_ZN5alloc11collections5btree3mem7replace17ha140e4c1fd16a31cE.exit48 ], [ %105, %105 ] + %134 = add nuw i64 %.sroa.014.096, 1 + %135 = invoke noundef align 8 ptr @"_ZN5alloc5boxed16Box$LT$T$C$A$GT$17try_new_uninit_in17hdf605e22fe771092E.llvm.3458943816331328394"() + to label %.noexc.i44 unwind label %.loopexit74, !noalias !1642 -.noexc.i44: ; preds = %.lr.ph - %133 = icmp eq ptr %132, null - br i1 %133, label %134, label %_ZN5alloc11collections5btree3mem7replace17ha140e4c1fd16a31cE.exit48 +.noexc.i45: ; preds = %.lr.ph + %136 = icmp eq ptr %135, null + br i1 %136, label %137, label %_ZN5alloc11collections5btree3mem7replace17ha140e4c1fd16a31cE.exit49 -134: ; preds = %.noexc.i44 +137: ; preds = %.noexc.i45 invoke void @_ZN5alloc5alloc18handle_alloc_error17h426354a964e0805cE(i64 noundef 8, i64 noundef 152) #28 to label %.noexc3.i45 unwind label %.loopexit.split-lp, !noalias !1642 -.noexc3.i45: ; preds = %134 +.noexc3.i46: ; preds = %137 unreachable -.loopexit73: ; preds = %.lr.ph +.loopexit74: ; preds = %.lr.ph %lpad.loopexit = landingpad { ptr, i32 } cleanup - br label %135 + br label %138 -.loopexit.split-lp: ; preds = %134 +.loopexit.split-lp: ; preds = %137 %lpad.loopexit.split-lp = landingpad { ptr, i32 } cleanup - br label %135 + br label %138 -135: ; preds = %.loopexit.split-lp, %.loopexit73 +138: ; preds = %.loopexit.split-lp, %.loopexit74 %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit73 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] invoke void @"_ZN93_$LT$alloc..collections..btree..mem..replace..PanicGuard$u20$as$u20$core..ops..drop..Drop$GT$4drop17he7f40e69e6f26b83E"(ptr noalias noundef nonnull align 1 %4) - to label %.body unwind label %136, !noalias !1642 + to label %.body unwind label %139, !noalias !1642 -136: ; preds = %135 - %137 = landingpad { ptr, i32 } +139: ; preds = %138 + %140 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #27, !noalias !1642 unreachable -_ZN5alloc11collections5btree3mem7replace17ha140e4c1fd16a31cE.exit48: ; preds = %.noexc.i44 - store ptr null, ptr %132, align 8, !noalias !1642 - %138 = getelementptr inbounds nuw i8, ptr %132, i64 54 - store i16 0, ptr %138, align 2, !noalias !1642 - %139 = getelementptr inbounds nuw i8, ptr %132, i64 56 - store ptr %.sroa.061.093, ptr %139, align 8, !noalias !1642 - store ptr %132, ptr %.sroa.061.093, align 8, !noalias !1645 - %140 = getelementptr inbounds nuw i8, ptr %.sroa.061.093, i64 52 - store i16 0, ptr %140, align 4, !noalias !1650 - %exitcond.not = icmp eq i64 %131, %101 +_ZN5alloc11collections5btree3mem7replace17ha140e4c1fd16a31cE.exit49: ; preds = %.noexc.i45 + store ptr null, ptr %135, align 8, !noalias !1642 + %141 = getelementptr inbounds nuw i8, ptr %135, i64 54 + store i16 0, ptr %141, align 2, !noalias !1642 + %142 = getelementptr inbounds nuw i8, ptr %135, i64 56 + store ptr %.sroa.062.094, ptr %142, align 8, !noalias !1642 + store ptr %135, ptr %.sroa.062.094, align 8, !noalias !1645 + %143 = getelementptr inbounds nuw i8, ptr %.sroa.062.094, i64 52 + store i16 0, ptr %143, align 4, !noalias !1650 + %exitcond.not = icmp eq i64 %134, %104 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph -141: ; preds = %27 - %142 = zext nneg i16 %29 to i64 - %143 = add nuw nsw i16 %29, 1 - store i16 %143, ptr %28, align 2, !noalias !1651 - %144 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 8 - %145 = getelementptr inbounds nuw i32, ptr %144, i64 %142 - store i32 %24, ptr %145, align 4, !noalias !1651 +144: ; preds = %27 + %145 = zext nneg i16 %29 to i64 + %146 = add nuw nsw i16 %29, 1 + store i16 %146, ptr %28, align 2, !noalias !1651 + %147 = getelementptr inbounds nuw i8, ptr %.sroa.0.0, i64 8 + %148 = getelementptr inbounds nuw i32, ptr %147, i64 %145 + store i32 %24, ptr %148, align 4, !noalias !1651 br label %.loopexit -146: ; preds = %.body - %147 = landingpad { ptr, i32 } +149: ; preds = %.body + %150 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #27 unreachable diff --git a/bench/wireshark/optimized/packet-hartip.ll b/bench/wireshark/optimized/packet-hartip.ll index 825be7ccb64..1755ee9cc0b 100644 --- a/bench/wireshark/optimized/packet-hartip.ll +++ b/bench/wireshark/optimized/packet-hartip.ll @@ -862,7 +862,7 @@ hartip_set_conversation.exit: ; preds = %61, %57, %43, %37, 81: ; preds = %hartip_set_conversation.exit %82 = tail call i32 @tvb_reported_length(ptr noundef %0) - br label %548 + br label %550 83: ; preds = %hartip_set_conversation.exit %84 = add nsw i32 %11, -8 @@ -880,7 +880,7 @@ hartip_set_conversation.exit: ; preds = %61, %57, %43, %37, %89 = select i1 %88, i32 %hf_hartip_error_code.val.i, i32 %hf_hartip_data.val.i %90 = tail call ptr @proto_tree_add_item(ptr noundef %86, i32 noundef %89, ptr noundef %0, i32 noundef %79, i32 noundef range(i32 0, 65528) %84, i32 noundef 0) %91 = add i32 %3, %11 - br label %548 + br label %550 92: ; preds = %83 switch i8 %26, label %544 [ @@ -909,7 +909,7 @@ hartip_set_conversation.exit: ; preds = %61, %57, %43, %37, dissect_session_init.exit: ; preds = %95, %101 %104 = add i32 %3, %11 - br label %548 + br label %550 105: ; preds = %92 %106 = load i32, ptr @hf_hartip_data, align 4 @@ -918,7 +918,7 @@ dissect_session_init.exit: ; preds = %95, %101 %ei_hartip_data_none.ei_hartip_data_unexpected.i.i = select i1 %108, ptr @ei_hartip_data_none, ptr @ei_hartip_data_unexpected %109 = tail call ptr @expert_add_info(ptr noundef %1, ptr noundef %107, ptr noundef nonnull %ei_hartip_data_none.ei_hartip_data_unexpected.i.i) %110 = add i32 %3, %11 - br label %548 + br label %550 111: ; preds = %92 %112 = load i32, ptr @hf_hartip_data, align 4 @@ -927,7 +927,7 @@ dissect_session_init.exit: ; preds = %95, %101 %ei_hartip_data_none.ei_hartip_data_unexpected.i.i110 = select i1 %114, ptr @ei_hartip_data_none, ptr @ei_hartip_data_unexpected %115 = tail call ptr @expert_add_info(ptr noundef %1, ptr noundef %113, ptr noundef nonnull %ei_hartip_data_none.ei_hartip_data_unexpected.i.i110) %116 = add i32 %3, %11 - br label %548 + br label %550 117: ; preds = %92 %.not213.i = icmp eq i32 %84, 0 @@ -1080,7 +1080,7 @@ dissect_session_init.exit: ; preds = %95, %101 %.6120.i = phi i32 [ %187, %182 ], [ %.5119.i, %.thread166.i ] %.6.i = phi i32 [ %186, %182 ], [ %.5.i, %.thread166.i ] %189 = icmp sgt i32 %.6120.i, 1 - br i1 %189, label %190, label %538 + br i1 %189, label %190, label %540 190: ; preds = %188 %191 = add nsw i32 %.6120.i, -1 @@ -1110,8 +1110,8 @@ dissect_session_init.exit: ; preds = %95, %101 i8 38, label %426 i8 48, label %431 i8 77, label %433 - i8 -78, label %488 - i8 -53, label %532 + i8 -78, label %490 + i8 -53, label %534 ] 192: ; preds = %190, %190, %190 @@ -1513,139 +1513,139 @@ dissect_session_init.exit: ; preds = %95, %101 %482 = icmp eq i8 %481, 0 br i1 %482, label %.thread184.i, label %483 -483: ; preds = %475 +483:; preds = %475 %484 = zext i8 %481 to i32 %485 = add i32 %462, 4 %486 = load i32, ptr @hf_hartip_pt_rsp_data, align 4 %487 = tail call ptr @proto_tree_add_item(ptr noundef %86, i32 noundef %486, ptr noundef %0, i32 noundef %485, i32 noundef %484, i32 noundef 0) br label %.thread184.i -488: ; preds = %190 - %489 = icmp samesign ugt i32 %191, 4 - br i1 %489, label %490, label %dissect_parse_hart_cmds.exit.thread182.i +490: ; preds = %190 + %491 = icmp samesign ugt i32 %191, 4 + br i1 %491, label %492, label %dissect_parse_hart_cmds.exit.thread182.i -490: ; preds = %488 - %491 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %.6.i) - %492 = load i32, ptr @hf_hartip_pt_rsp_number_of_commands, align 4 - %493 = zext i8 %491 to i32 - %494 = tail call ptr @proto_tree_add_uint(ptr noundef %86, i32 noundef %492, ptr noundef %0, i32 noundef %.6.i, i32 noundef 1, i32 noundef %493) - %.not81.i.i.i = icmp eq i8 %491, 0 +492: ; preds = %490 + %493 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %.6.i) + %494 = load i32, ptr @hf_hartip_pt_rsp_number_of_commands, align 4 + %495 = zext i8 %493 to i32 + %496 = tail call ptr @proto_tree_add_uint(ptr noundef %86, i32 noundef %494, ptr noundef %0, i32 noundef %.6.i, i32 noundef 1, i32 noundef %495) + %.not81.i.i.i = icmp eq i8 %493, 0 br i1 %.not81.i.i.i, label %.thread184.i, label %.lr.ph.preheader.i.i.i -.lr.ph.preheader.i.i.i: ; preds = %490 - %495 = add nsw i32 %.6120.i, -2 - %496 = add i32 %.6.i, 1 +.lr.ph.preheader.i.i.i: ; preds = %492 + %497 = add nsw i32 %.6120.i, -2 + %498 = add i32 %.6.i, 1 br label %.lr.ph.i.i.i -.lr.ph.i.i.i: ; preds = %527, %.lr.ph.preheader.i.i.i - %.06380.i.i.i = phi i8 [ %528, %527 ], [ 0, %.lr.ph.preheader.i.i.i ] - %.06479.i.i.i = phi i32 [ %.1.i.i.i, %527 ], [ %495, %.lr.ph.preheader.i.i.i ] - %.06678.i.i.i = phi i32 [ %.167.i.i.i, %527 ], [ %496, %.lr.ph.preheader.i.i.i ] - %497 = tail call zeroext i16 @tvb_get_ntohs(ptr noundef %0, i32 noundef %.06678.i.i.i) - %498 = load i32, ptr @hf_hartip_pt_rsp_command_number, align 4 - %499 = tail call ptr @proto_tree_add_item(ptr noundef %86, i32 noundef %498, ptr noundef %0, i32 noundef %.06678.i.i.i, i32 noundef 2, i32 noundef 0) - %500 = add i32 %.06678.i.i.i, 2 - %501 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %500) - %502 = load i32, ptr @hf_hartip_pt_rsp_command_byte_count, align 4 - %503 = tail call ptr @proto_tree_add_item(ptr noundef %86, i32 noundef %502, ptr noundef %0, i32 noundef %500, i32 noundef 1, i32 noundef 0) - %504 = add i32 %.06678.i.i.i, 3 - %505 = load i32, ptr @hf_hartip_pt_response_code, align 4 - %506 = tail call ptr @proto_tree_add_item(ptr noundef %86, i32 noundef %505, ptr noundef %0, i32 noundef %504, i32 noundef 1, i32 noundef 0) - %507 = add i32 %.06678.i.i.i, 4 - %508 = add nsw i32 %.06479.i.i.i, -4 - %509 = add i8 %501, -1 - %510 = zext i8 %509 to i32 - %511 = icmp eq i8 %509, 0 - %512 = icmp eq i32 %.06479.i.i.i, 4 - %or.cond.not76.i.i.i = select i1 %511, i1 true, i1 %512 - %.not.i95.i.i = icmp samesign ult i32 %508, %510 +.lr.ph.i.i.i: ; preds = %529, %.lr.ph.preheader.i.i.i + %.06380.i.i.i = phi i8 [ %530, %527 ], [ 0, %.lr.ph.preheader.i.i.i ] + %.06479.i.i.i = phi i32 [ %.1.i.i.i, %527 ], [ %497, %.lr.ph.preheader.i.i.i ] + %.06678.i.i.i = phi i32 [ %.167.i.i.i, %527 ], [ %498, %.lr.ph.preheader.i.i.i ] + %499 = tail call zeroext i16 @tvb_get_ntohs(ptr noundef %0, i32 noundef %.06678.i.i.i) + %500 = load i32, ptr @hf_hartip_pt_rsp_command_number, align 4 + %501 = tail call ptr @proto_tree_add_item(ptr noundef %86, i32 noundef %500, ptr noundef %0, i32 noundef %.06678.i.i.i, i32 noundef 2, i32 noundef 0) + %502 = add i32 %.06678.i.i.i, 2 + %503 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %502) + %504 = load i32, ptr @hf_hartip_pt_rsp_command_byte_count, align 4 + %505 = tail call ptr @proto_tree_add_item(ptr noundef %86, i32 noundef %504, ptr noundef %0, i32 noundef %502, i32 noundef 1, i32 noundef 0) + %506 = add i32 %.06678.i.i.i, 3 + %507 = load i32, ptr @hf_hartip_pt_response_code, align 4 + %508 = tail call ptr @proto_tree_add_item(ptr noundef %86, i32 noundef %507, ptr noundef %0, i32 noundef %506, i32 noundef 1, i32 noundef 0) + %509 = add i32 %.06678.i.i.i, 4 + %510 = add nsw i32 %.06479.i.i.i, -4 + %511 = add i8 %503, -1 + %512 = zext i8 %511 to i32 + %513 = icmp eq i8 %511, 0 + %514 = icmp eq i32 %.06479.i.i.i, 4 + %or.cond.not76.i.i.i = select i1 %513, i1 true, i1 %514 + %.not.i95.i.i = icmp samesign ult i32 %510, %512 %or.cond71.i.i.i = select i1 %or.cond.not76.i.i.i, i1 true, i1 %.not.i95.i.i - br i1 %or.cond71.i.i.i, label %527, label %513 + br i1 %or.cond71.i.i.i, label %529, label %515 -513: ; preds = %.lr.ph.i.i.i - switch i16 %497, label %.thread.i.i.i [ - i16 3, label %514 - i16 9, label %516 - i16 48, label %518 +515: ; preds = %.lr.ph.i.i.i + switch i16 %499, label %.thread.i.i.i [ + i16 3, label %516 + i16 9, label %518 + i16 48, label %520 ] -514: ; preds = %513 - %515 = tail call fastcc i32 @dissect_cmd3(ptr noundef %86, ptr noundef %0, i32 noundef %507, i32 noundef %510) - br label %520 +516: ; preds = %515 + %517 = tail call fastcc i32 @dissect_cmd3(ptr noundef %86, ptr noundef %0, i32 noundef %509, i32 noundef %512) + br label %522 -516: ; preds = %513 - %517 = tail call fastcc i32 @dissect_cmd9(ptr noundef %86, ptr noundef %0, i32 noundef %507, i32 noundef %510) - br label %520 +518: ; preds = %515 + %519 = tail call fastcc i32 @dissect_cmd9(ptr noundef %86, ptr noundef %0, i32 noundef %509, i32 noundef %512) + br label %522 -518: ; preds = %513 - %519 = tail call fastcc i32 @dissect_cmd48(ptr noundef %86, ptr noundef %0, i32 noundef %507, i32 noundef %510) - br label %520 +520: ; preds = %515 + %521 = tail call fastcc i32 @dissect_cmd48(ptr noundef %86, ptr noundef %0, i32 noundef %509, i32 noundef %512) + br label %522 -520: ; preds = %518, %516, %514 +522: ; preds = %520, %518, %516 %.0.i96.i.i = phi i32 [ %515, %514 ], [ %517, %516 ], [ %519, %518 ] - %521 = icmp eq i32 %.0.i96.i.i, 0 - br i1 %521, label %.thread.i.i.i, label %524 - -.thread.i.i.i: ; preds = %520, %513 - %522 = load i32, ptr @hf_hartip_pt_rsp_data, align 4 - %523 = tail call ptr @proto_tree_add_item(ptr noundef %86, i32 noundef %522, ptr noundef %0, i32 noundef %507, i32 noundef %510, i32 noundef 0) - br label %524 - -524: ; preds = %.thread.i.i.i, %520 - %525 = add i32 %507, %510 - %526 = sub nsw i32 %508, %510 - br label %527 - -527: ; preds = %524, %.lr.ph.i.i.i - %.167.i.i.i = phi i32 [ %525, %524 ], [ %507, %.lr.ph.i.i.i ] - %.1.i.i.i = phi i32 [ %526, %524 ], [ %508, %.lr.ph.i.i.i ] - %528 = add i8 %.06380.i.i.i, 1 - %529 = sext i8 %528 to i32 - %530 = icmp slt i32 %529, %493 - %531 = icmp sgt i32 %.1.i.i.i, 3 - %or.cond72.i.i.i = select i1 %530, i1 %531, i1 false + %523 = icmp eq i32 %.0.i96.i.i, 0 + br i1 %523, label %.thread.i.i.i, label %526 + +.thread.i.i.i: ; preds = %522, %515 + %524 = load i32, ptr @hf_hartip_pt_rsp_data, align 4 + %525 = tail call ptr @proto_tree_add_item(ptr noundef %86, i32 noundef %524, ptr noundef %0, i32 noundef %509, i32 noundef %512, i32 noundef 0) + br label %526 + +526: ; preds = %.thread.i.i.i, %522 + %527 = add i32 %509, %512 + %528 = sub nsw i32 %510, %512 + br label %529 + +529: ; preds = %526, %.lr.ph.i.i.i + %.167.i.i.i = phi i32 [ %527, %524 ], [ %509, %.lr.ph.i.i.i ] + %.1.i.i.i = phi i32 [ %528, %524 ], [ %510, %.lr.ph.i.i.i ] + %530 = add i8 %.06380.i.i.i, 1 + %531 = sext i8 %530 to i32 + %532 = icmp slt i32 %531, %495 + %533 = icmp sgt i32 %.1.i.i.i, 3 + %or.cond72.i.i.i = select i1 %532, i1 %533, i1 false br i1 %or.cond72.i.i.i, label %.lr.ph.i.i.i, label %dissect_parse_hart_cmds.exit.i, !llvm.loop !11 -532: ; preds = %190 - %533 = tail call fastcc i32 @dissect_cmd203(ptr noundef %86, ptr noundef %0, i32 noundef %.6.i, i32 noundef range(i32 1, 2147483647) %191) +534: ; preds = %190 + %535 = tail call fastcc i32 @dissect_cmd203(ptr noundef %86, ptr noundef %0, i32 noundef %.6.i, i32 noundef range(i32 1, 2147483647) %191) br label %dissect_parse_hart_cmds.exit.i -dissect_parse_hart_cmds.exit.i: ; preds = %527, %532, %431, %288, %264 - %.0.i.i = phi i32 [ %265, %264 ], [ %289, %288 ], [ %432, %431 ], [ %533, %532 ], [ %191, %527 ] - %534 = icmp eq i32 %.0.i.i, 0 - br i1 %534, label %dissect_parse_hart_cmds.exit.thread182.i, label %.thread184.i +dissect_parse_hart_cmds.exit.i: ; preds = %529, %534, %431, %288, %264 + %.0.i.i = phi i32 [ %265, %264 ], [ %289, %288 ], [ %432, %431 ], [ %535, %532 ], [ %191, %527 ] + %536 = icmp eq i32 %.0.i.i, 0 + br i1 %536, label %dissect_parse_hart_cmds.exit.thread182.i, label %.thread184.i -dissect_parse_hart_cmds.exit.thread182.i: ; preds = %dissect_parse_hart_cmds.exit.i, %488, %433, %426, %382, %368, %363, %358, %329, %312, %295, %290, %274, %266, %256, %248, %192, %190 - %535 = load i32, ptr @hf_hartip_pt_payload, align 4 - %536 = tail call ptr @proto_tree_add_item(ptr noundef %86, i32 noundef %535, ptr noundef %0, i32 noundef %.6.i, i32 noundef %191, i32 noundef 0) +dissect_parse_hart_cmds.exit.thread182.i: ; preds = %dissect_parse_hart_cmds.exit.i, %490, %433, %426, %382, %368, %363, %358, %329, %312, %295, %290, %274, %266, %256, %248, %192, %190 + %537 = load i32, ptr @hf_hartip_pt_payload, align 4 + %538 = tail call ptr @proto_tree_add_item(ptr noundef %86, i32 noundef %537, ptr noundef %0, i32 noundef %.6.i, i32 noundef %191, i32 noundef 0) br label %.thread184.i -.thread184.i: ; preds = %dissect_parse_hart_cmds.exit.thread182.i, %dissect_parse_hart_cmds.exit.i, %490, %483, %475, %472, %461, %428, %416, %405, %394, %384, %.critedge.i.i.i, %377, %370, %365, %360, %331, %314, %297, %292, %276, %268, %258, %250, %241, %236, %222, %194 - %537 = add i32 %.6.i, %191 - br label %540 +.thread184.i: ; preds = %dissect_parse_hart_cmds.exit.thread182.i, %dissect_parse_hart_cmds.exit.i, %492, %483, %475, %472, %461, %428, %416, %405, %394, %384, %.critedge.i.i.i, %377, %370, %365, %360, %331, %314, %297, %292, %276, %268, %258, %250, %241, %236, %222, %194 + %539 = add i32 %.6.i, %191 + br label %542 -538: ; preds = %188 - %539 = icmp eq i32 %.6120.i, 1 - br i1 %539, label %540, label %dissect_pass_through.exit +540: ; preds = %188 + %541 = icmp eq i32 %.6120.i, 1 + br i1 %541, label %542, label %dissect_pass_through.exit -540: ; preds = %538, %.thread184.i - %.8187.i = phi i32 [ %537, %.thread184.i ], [ %.6.i, %538 ] - %541 = load i32, ptr @hf_hartip_pt_checksum, align 4 - %542 = tail call ptr @proto_tree_add_checksum(ptr noundef %86, ptr noundef %0, i32 noundef %.8187.i, i32 noundef %541, i32 noundef -1, ptr noundef null, ptr noundef null, i32 noundef 0, i32 noundef 0, i32 noundef 0) +542: ; preds = %540, %.thread184.i + %.8187.i = phi i32 [ %539, %.thread184.i ], [ %.6.i, %538 ] + %543 = load i32, ptr @hf_hartip_pt_checksum, align 4 + %544 = tail call ptr @proto_tree_add_checksum(ptr noundef %86, ptr noundef %0, i32 noundef %.8187.i, i32 noundef %543, i32 noundef -1, ptr noundef null, ptr noundef null, i32 noundef 0, i32 noundef 0, i32 noundef 0) br label %dissect_pass_through.exit -dissect_pass_through.exit: ; preds = %117, %125, %177, %179, %538, %540 - %543 = add i32 %3, %11 - br label %548 +dissect_pass_through.exit: ; preds = %117, %125, %177, %179, %540, %542 + %545 = add i32 %3, %11 + br label %550 -544: ; preds = %92 - %545 = load i32, ptr @hf_hartip_data, align 4 - %546 = tail call ptr @proto_tree_add_item(ptr noundef %86, i32 noundef %545, ptr noundef %0, i32 noundef %79, i32 noundef %84, i32 noundef 0) - %547 = add i32 %3, %11 - br label %548 +546: ; preds = %92 + %547 = load i32, ptr @hf_hartip_data, align 4 + %548 = tail call ptr @proto_tree_add_item(ptr noundef %86, i32 noundef %547, ptr noundef %0, i32 noundef %79, i32 noundef %84, i32 noundef 0) + %549 = add i32 %3, %11 + br label %550 -548: ; preds = %87, %544, %dissect_pass_through.exit, %111, %105, %dissect_session_init.exit, %81 - %.0 = phi i32 [ %82, %81 ], [ %91, %87 ], [ %547, %544 ], [ %104, %dissect_session_init.exit ], [ %110, %105 ], [ %116, %111 ], [ %543, %dissect_pass_through.exit ] +550: ; preds = %87, %546, %dissect_pass_through.exit, %111, %105, %dissect_session_init.exit, %81 + %.0 = phi i32 [ %82, %81 ], [ %91, %87 ], [ %549, %544 ], [ %104, %dissect_session_init.exit ], [ %110, %105 ], [ %116, %111 ], [ %545, %dissect_pass_through.exit ] ret i32 %.0 } diff --git a/bench/wireshark/optimized/packet-isis-lsp.ll b/bench/wireshark/optimized/packet-isis-lsp.ll index 9f5a62512f5..642d7d9a546 100644 --- a/bench/wireshark/optimized/packet-isis-lsp.ll +++ b/bench/wireshark/optimized/packet-isis-lsp.ll @@ -2622,8 +2622,8 @@ define internal void @dissect_isis_lsp_clv_mt_cap(ptr noundef %0, ptr noundef %1 br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %.loopexit - %.06996 = phi i32 [ %145, %.loopexit ], [ %14, %.lr.ph.preheader ] - %.07095 = phi i32 [ %144, %.loopexit ], [ %15, %.lr.ph.preheader ] + %.06996 = phi i32 [ %148, %.loopexit ], [ %14, %.lr.ph.preheader ] + %.07095 = phi i32 [ %147, %.loopexit ], [ %15, %.lr.ph.preheader ] %16 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %.06996) %17 = add i32 %.06996, 1 %18 = tail call zeroext i8 @tvb_get_uint8(ptr noundef %0, i32 noundef %17) @@ -2641,9 +2641,9 @@ define internal void @dissect_isis_lsp_clv_mt_cap(ptr noundef %0, ptr noundef %1 25: ; preds = %.lr.ph switch i8 %16, label %138 [ i8 1, label %26 - i8 2, label %82 - i8 3, label %88 - i8 4, label %113 + i8 2, label %85 + i8 3, label %91 + i8 4, label %116 ] 26: ; preds = %25 @@ -2688,172 +2688,172 @@ define internal void @dissect_isis_lsp_clv_mt_cap(ptr noundef %0, ptr noundef %1 %56 = add nsw i32 %21, -19 %57 = shl nuw nsw i32 %51, 3 %.not.i = icmp eq i32 %56, %57 - br i1 %.not.i, label %.preheader.i, label %58 + br i1 %.not.i, label %.preheader.i, label %61 .preheader.i: ; preds = %54 - %.not = icmp eq i32 %56, 0 - br i1 %.not, label %._crit_edge.i, label %.lr.ph.i + %58 = icmp eq i32 %56, 0 + br i1 %58, label %._crit_edge.i, label %.lr.ph.i -58: ; preds = %54 - %59 = tail call ptr (ptr, ptr, ptr, ptr, i32, i32, ptr, ...) @proto_tree_add_expert_format(ptr noundef %35, ptr noundef %1, ptr noundef nonnull @ei_isis_lsp_short_clv, ptr noundef %0, i32 noundef %55, i32 noundef 0, ptr noundef nonnull @.str.889) +61: ; preds = %54 + %62 = tail call ptr (ptr, ptr, ptr, ptr, i32, i32, ptr, ...) @proto_tree_add_expert_format(ptr noundef %35, ptr noundef %1, ptr noundef nonnull @ei_isis_lsp_short_clv, ptr noundef %0, i32 noundef %55, i32 noundef 0, ptr noundef nonnull @.str.889) br label %.loopexit -.lr.ph.i: ; preds = %.preheader.i, %63 - %.087.i = phi i8 [ %74, %63 ], [ %32, %.preheader.i ] - %.07586.i = phi i32 [ %72, %63 ], [ %55, %.preheader.i ] - %.07685.i = phi i32 [ %73, %63 ], [ %56, %.preheader.i ] - %60 = icmp samesign ult i32 %.07685.i, 8 - br i1 %60, label %61, label %63 +.lr.ph.i: ; preds = %.preheader.i, %66 + %.087.i = phi i8 [ %77, %63 ], [ %32, %.preheader.i ] + %.07586.i = phi i32 [ %75, %63 ], [ %55, %.preheader.i ] + %.07685.i = phi i32 [ %76, %63 ], [ %56, %.preheader.i ] + %63 = icmp samesign ult i32 %.07685.i, 8 + br i1 %63, label %64, label %66 -61: ; preds = %.lr.ph.i - %62 = tail call ptr (ptr, ptr, ptr, ptr, i32, i32, ptr, ...) @proto_tree_add_expert_format(ptr noundef %35, ptr noundef %1, ptr noundef nonnull @ei_isis_lsp_short_clv, ptr noundef %0, i32 noundef %20, i32 noundef -1, ptr noundef nonnull @.str.890, i32 noundef %.07685.i, i32 noundef 8) +64: ; preds = %.lr.ph.i + %65 = tail call ptr (ptr, ptr, ptr, ptr, i32, i32, ptr, ...) @proto_tree_add_expert_format(ptr noundef %35, ptr noundef %1, ptr noundef nonnull @ei_isis_lsp_short_clv, ptr noundef %0, i32 noundef %20, i32 noundef -1, ptr noundef nonnull @.str.890, i32 noundef %.07685.i, i32 noundef 8) br label %.loopexit -63: ; preds = %.lr.ph.i +66: ; preds = %.lr.ph.i tail call void @proto_tree_add_bitmask_list(ptr noundef %35, ptr noundef %0, i32 noundef %.07586.i, i32 noundef 1, ptr noundef nonnull @dissect_isis_lsp_clv_mt_cap_spb_instance.lsp_cap_spb_instance_vlanid_tuple, i32 noundef 0) - %64 = add i32 %.07586.i, 1 - %65 = load i32, ptr @hf_isis_lsp_mt_cap_spb_instance_vlanid_tuple_ect, align 4 - %66 = tail call ptr @proto_tree_add_item(ptr noundef %35, i32 noundef %65, ptr noundef %0, i32 noundef %64, i32 noundef 4, i32 noundef 0) - %67 = add i32 %.07586.i, 5 - %68 = load i32, ptr @hf_isis_lsp_mt_cap_spb_instance_vlanid_tuple_base_vid, align 4 - %69 = tail call ptr @proto_tree_add_item(ptr noundef %35, i32 noundef %68, ptr noundef %0, i32 noundef %67, i32 noundef 3, i32 noundef 0) - %70 = load i32, ptr @hf_isis_lsp_mt_cap_spb_instance_vlanid_tuple_spvid, align 4 - %71 = tail call ptr @proto_tree_add_item(ptr noundef %35, i32 noundef %70, ptr noundef %0, i32 noundef %67, i32 noundef 3, i32 noundef 0) - %72 = add i32 %.07586.i, 8 - %73 = add nsw i32 %.07685.i, -8 - %74 = add i8 %.087.i, -1 - %75 = icmp ne i32 %73, 0 - %76 = icmp ne i8 %74, 0 - %77 = select i1 %75, i1 %76, i1 false - br i1 %77, label %.lr.ph.i, label %._crit_edge.i, !llvm.loop !17 - -._crit_edge.i: ; preds = %63, %.preheader.i - %.0.lcssa84.i = phi i8 [ %32, %.preheader.i ], [ %74, %63 ] - %.076.lcssa.i = phi i32 [ 0, %.preheader.i ], [ %73, %63 ] + %67 = add i32 %.07586.i, 1 + %68 = load i32, ptr @hf_isis_lsp_mt_cap_spb_instance_vlanid_tuple_ect, align 4 + %69 = tail call ptr @proto_tree_add_item(ptr noundef %35, i32 noundef %68, ptr noundef %0, i32 noundef %67, i32 noundef 4, i32 noundef 0) + %70 = add i32 %.07586.i, 5 + %71 = load i32, ptr @hf_isis_lsp_mt_cap_spb_instance_vlanid_tuple_base_vid, align 4 + %72 = tail call ptr @proto_tree_add_item(ptr noundef %35, i32 noundef %71, ptr noundef %0, i32 noundef %70, i32 noundef 3, i32 noundef 0) + %73 = load i32, ptr @hf_isis_lsp_mt_cap_spb_instance_vlanid_tuple_spvid, align 4 + %74 = tail call ptr @proto_tree_add_item(ptr noundef %35, i32 noundef %73, ptr noundef %0, i32 noundef %70, i32 noundef 3, i32 noundef 0) + %75 = add i32 %.07586.i, 8 + %76 = add nsw i32 %.07685.i, -8 + %77 = add i8 %.087.i, -1 + %78 = icmp ne i32 %76, 0 + %79 = icmp ne i8 %77, 0 + %80 = select i1 %78, i1 %79, i1 false + br i1 %80, label %.lr.ph.i, label %._crit_edge.i, !llvm.loop !17 + +._crit_edge.i: ; preds = %66, %.preheader.i + %.0.lcssa84.i = phi i8 [ %32, %.preheader.i ], [ %77, %63 ] + %.076.lcssa.i = phi i32 [ 0, %.preheader.i ], [ %76, %63 ] %.not80.i = icmp eq i8 %.0.lcssa84.i, 0 - br i1 %.not80.i, label %.loopexit, label %78 + br i1 %.not80.i, label %.loopexit, label %81 -78: ; preds = %._crit_edge.i - %79 = zext i8 %.0.lcssa84.i to i32 - %80 = shl nuw nsw i32 %79, 3 - %81 = tail call ptr (ptr, ptr, ptr, ptr, i32, i32, ptr, ...) @proto_tree_add_expert_format(ptr noundef %35, ptr noundef %1, ptr noundef nonnull @ei_isis_lsp_short_clv, ptr noundef %0, i32 noundef %20, i32 noundef -1, ptr noundef nonnull @.str.891, i32 noundef %.076.lcssa.i, i32 noundef %80) +81: ; preds = %._crit_edge.i + %82 = zext i8 %.0.lcssa84.i to i32 + %83 = shl nuw nsw i32 %82, 3 + %84 = tail call ptr (ptr, ptr, ptr, ptr, i32, i32, ptr, ...) @proto_tree_add_expert_format(ptr noundef %35, ptr noundef %1, ptr noundef nonnull @ei_isis_lsp_short_clv, ptr noundef %0, i32 noundef %20, i32 noundef -1, ptr noundef nonnull @.str.891, i32 noundef %.076.lcssa.i, i32 noundef %83) br label %.loopexit -82: ; preds = %25 - %83 = load i32, ptr @hf_isis_lsp_mt_cap_spb_opaque_algorithm, align 4 - %84 = tail call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %83, ptr noundef %0, i32 noundef %20, i32 noundef 4, i32 noundef 0) - %85 = add i32 %.06996, 6 - %86 = load i32, ptr @hf_isis_lsp_mt_cap_spb_opaque_information, align 4 - %87 = tail call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %86, ptr noundef %0, i32 noundef %85, i32 noundef -1, i32 noundef 0) +85: ; preds = %25 + %86 = load i32, ptr @hf_isis_lsp_mt_cap_spb_opaque_algorithm, align 4 + %87 = tail call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %86, ptr noundef %0, i32 noundef %20, i32 noundef 4, i32 noundef 0) + %88 = add i32 %.06996, 6 + %89 = load i32, ptr @hf_isis_lsp_mt_cap_spb_opaque_information, align 4 + %90 = tail call ptr @proto_tree_add_item(ptr noundef %2, i32 noundef %89, ptr noundef %0, i32 noundef %88, i32 noundef -1, i32 noundef 0) br label %.loopexit -88: ; preds = %25 - %89 = icmp ult i8 %18, 8 - br i1 %89, label %90, label %92 +91: ; preds = %25 + %92 = icmp ult i8 %18, 8 + br i1 %92, label %93, label %95 -90: ; preds = %88 - %91 = tail call ptr (ptr, ptr, ptr, ptr, i32, i32, ptr, ...) @proto_tree_add_expert_format(ptr noundef %2, ptr noundef %1, ptr noundef nonnull @ei_isis_lsp_short_clv, ptr noundef %0, i32 noundef %20, i32 noundef -1, ptr noundef nonnull @.str.892, i32 noundef range(i32 0, 256) %21, i32 noundef 8) +93: ; preds = %91 + %94 = tail call ptr (ptr, ptr, ptr, ptr, i32, i32, ptr, ...) @proto_tree_add_expert_format(ptr noundef %2, ptr noundef %1, ptr noundef nonnull @ei_isis_lsp_short_clv, ptr noundef %0, i32 noundef %20, i32 noundef -1, ptr noundef nonnull @.str.892, i32 noundef range(i32 0, 256) %21, i32 noundef 8) br label %.loopexit -92: ; preds = %88 - %93 = add nuw nsw i32 %21, 2 - %94 = load i32, ptr @ett_isis_lsp_clv_mt_cap_spbm_service_identifier, align 4 - %95 = tail call ptr (ptr, ptr, i32, i32, i32, ptr, ptr, ...) @proto_tree_add_subtree_format(ptr noundef %2, ptr noundef %0, i32 noundef %.06996, i32 noundef %93, i32 noundef %94, ptr noundef null, ptr noundef nonnull @.str.893, i32 noundef 3, i32 noundef range(i32 0, 256) %21) - %96 = load i32, ptr @hf_isis_lsp_mt_cap_spbm_service_identifier_b_mac, align 4 - %97 = tail call ptr @proto_tree_add_item(ptr noundef %95, i32 noundef %96, ptr noundef %0, i32 noundef %20, i32 noundef 6, i32 noundef 0) - %98 = load i32, ptr @hf_isis_lsp_mt_cap_spbm_service_identifier_base_vid, align 4 - %99 = add i32 %.06996, 8 - %100 = tail call ptr @proto_tree_add_item(ptr noundef %95, i32 noundef %98, ptr noundef %0, i32 noundef %99, i32 noundef 2, i32 noundef 0) - %101 = add nsw i32 %21, -8 - %.not42.i = icmp eq i32 %101, 0 +95: ; preds = %91 + %96 = add nuw nsw i32 %21, 2 + %97 = load i32, ptr @ett_isis_lsp_clv_mt_cap_spbm_service_identifier, align 4 + %98 = tail call ptr (ptr, ptr, i32, i32, i32, ptr, ptr, ...) @proto_tree_add_subtree_format(ptr noundef %2, ptr noundef %0, i32 noundef %.06996, i32 noundef %96, i32 noundef %97, ptr noundef null, ptr noundef nonnull @.str.893, i32 noundef 3, i32 noundef range(i32 0, 256) %21) + %99 = load i32, ptr @hf_isis_lsp_mt_cap_spbm_service_identifier_b_mac, align 4 + %100 = tail call ptr @proto_tree_add_item(ptr noundef %98, i32 noundef %99, ptr noundef %0, i32 noundef %20, i32 noundef 6, i32 noundef 0) + %101 = load i32, ptr @hf_isis_lsp_mt_cap_spbm_service_identifier_base_vid, align 4 + %102 = add i32 %.06996, 8 + %103 = tail call ptr @proto_tree_add_item(ptr noundef %98, i32 noundef %101, ptr noundef %0, i32 noundef %102, i32 noundef 2, i32 noundef 0) + %104 = add nsw i32 %21, -8 + %.not42.i = icmp eq i32 %104, 0 br i1 %.not42.i, label %.loopexit, label %.lr.ph.preheader.i -.lr.ph.preheader.i: ; preds = %92 - %102 = add i32 %.06996, 10 - %103 = and i32 %21, 3 +.lr.ph.preheader.i: ; preds = %95 + %105 = add i32 %.06996, 10 + %106 = and i32 %21, 3 br label %.lr.ph.i79 -.lr.ph.i79: ; preds = %107, %.lr.ph.preheader.i - %.044.i = phi i32 [ %111, %107 ], [ %102, %.lr.ph.preheader.i ] - %.03843.i = phi i32 [ %112, %107 ], [ %101, %.lr.ph.preheader.i ] - %104 = icmp samesign ult i32 %.03843.i, 4 - br i1 %104, label %105, label %107 +.lr.ph.i79: ; preds = %110, %.lr.ph.preheader.i + %.044.i = phi i32 [ %114, %107 ], [ %105, %.lr.ph.preheader.i ] + %.03843.i = phi i32 [ %115, %107 ], [ %104, %.lr.ph.preheader.i ] + %107 = icmp samesign ult i32 %.03843.i, 4 + br i1 %107, label %108, label %110 -105: ; preds = %.lr.ph.i79 - %106 = tail call ptr (ptr, ptr, ptr, ptr, i32, i32, ptr, ...) @proto_tree_add_expert_format(ptr noundef %95, ptr noundef %1, ptr noundef nonnull @ei_isis_lsp_short_clv, ptr noundef %0, i32 noundef %20, i32 noundef -1, ptr noundef nonnull @.str.894, i32 noundef %103, i32 noundef 4) +108: ; preds = %.lr.ph.i79 + %109 = tail call ptr (ptr, ptr, ptr, ptr, i32, i32, ptr, ...) @proto_tree_add_expert_format(ptr noundef %98, ptr noundef %1, ptr noundef nonnull @ei_isis_lsp_short_clv, ptr noundef %0, i32 noundef %20, i32 noundef -1, ptr noundef nonnull @.str.894, i32 noundef %106, i32 noundef 4) br label %.loopexit -107: ; preds = %.lr.ph.i79 - tail call void @proto_tree_add_bitmask_list(ptr noundef %95, ptr noundef %0, i32 noundef %.044.i, i32 noundef 1, ptr noundef nonnull @dissect_isis_lsp_clv_mt_cap_spbm_service_identifier.lsp_cap_spbm_service_identifier, i32 noundef 0) - %108 = add i32 %.044.i, 1 - %109 = load i32, ptr @hf_isis_lsp_mt_cap_spbm_service_identifier_i_sid, align 4 - %110 = tail call ptr @proto_tree_add_item(ptr noundef %95, i32 noundef %109, ptr noundef %0, i32 noundef %108, i32 noundef 3, i32 noundef 0) - %111 = add i32 %.044.i, 4 - %112 = add nsw i32 %.03843.i, -4 - %.not.i80 = icmp eq i32 %112, 0 +110: ; preds = %.lr.ph.i79 + tail call void @proto_tree_add_bitmask_list(ptr noundef %98, ptr noundef %0, i32 noundef %.044.i, i32 noundef 1, ptr noundef nonnull @dissect_isis_lsp_clv_mt_cap_spbm_service_identifier.lsp_cap_spbm_service_identifier, i32 noundef 0) + %111 = add i32 %.044.i, 1 + %112 = load i32, ptr @hf_isis_lsp_mt_cap_spbm_service_identifier_i_sid, align 4 + %113 = tail call ptr @proto_tree_add_item(ptr noundef %98, i32 noundef %112, ptr noundef %0, i32 noundef %111, i32 noundef 3, i32 noundef 0) + %114 = add i32 %.044.i, 4 + %115 = add nsw i32 %.03843.i, -4 + %.not.i80 = icmp eq i32 %115, 0 br i1 %.not.i80, label %.loopexit, label %.lr.ph.i79, !llvm.loop !18 -113: ; preds = %25 - %114 = icmp ult i8 %18, 2 - br i1 %114, label %115, label %117 +116: ; preds = %25 + %117 = icmp ult i8 %18, 2 + br i1 %117, label %118, label %120 -115: ; preds = %113 - %116 = tail call ptr (ptr, ptr, ptr, ptr, i32, i32, ptr, ...) @proto_tree_add_expert_format(ptr noundef %2, ptr noundef %1, ptr noundef nonnull @ei_isis_lsp_short_clv, ptr noundef %0, i32 noundef %20, i32 noundef -1, ptr noundef nonnull @.str.895, i32 noundef range(i32 0, 256) %21, i32 noundef 2) +118: ; preds = %116 + %119 = tail call ptr (ptr, ptr, ptr, ptr, i32, i32, ptr, ...) @proto_tree_add_expert_format(ptr noundef %2, ptr noundef %1, ptr noundef nonnull @ei_isis_lsp_short_clv, ptr noundef %0, i32 noundef %20, i32 noundef -1, ptr noundef nonnull @.str.895, i32 noundef range(i32 0, 256) %21, i32 noundef 2) br label %.loopexit -117: ; preds = %113 - %118 = add nuw nsw i32 %21, 2 - %119 = load i32, ptr @ett_isis_lsp_clv_mt_cap_spbv_mac_address, align 4 - %120 = tail call ptr (ptr, ptr, i32, i32, i32, ptr, ptr, ...) @proto_tree_add_subtree_format(ptr noundef %2, ptr noundef %0, i32 noundef %.06996, i32 noundef %118, i32 noundef %119, ptr noundef null, ptr noundef nonnull @.str.896, i32 noundef 4, i32 noundef range(i32 0, 256) %21) - %121 = load i32, ptr @hf_isis_lsp_spb_reserved, align 4 - %122 = tail call ptr @proto_tree_add_item(ptr noundef %120, i32 noundef %121, ptr noundef %0, i32 noundef %20, i32 noundef 2, i32 noundef 0) - %123 = load i32, ptr @hf_isis_lsp_spb_sr_bit, align 4 - %124 = tail call ptr @proto_tree_add_item(ptr noundef %120, i32 noundef %123, ptr noundef %0, i32 noundef %20, i32 noundef 2, i32 noundef 0) - %125 = load i32, ptr @hf_isis_lsp_spb_spvid, align 4 - %126 = tail call ptr @proto_tree_add_item(ptr noundef %120, i32 noundef %125, ptr noundef %0, i32 noundef %20, i32 noundef 2, i32 noundef 0) - %127 = add nsw i32 %21, -2 - %.not43.i = icmp eq i32 %127, 0 +120: ; preds = %116 + %121 = add nuw nsw i32 %21, 2 + %122 = load i32, ptr @ett_isis_lsp_clv_mt_cap_spbv_mac_address, align 4 + %123 = tail call ptr (ptr, ptr, i32, i32, i32, ptr, ptr, ...) @proto_tree_add_subtree_format(ptr noundef %2, ptr noundef %0, i32 noundef %.06996, i32 noundef %121, i32 noundef %122, ptr noundef null, ptr noundef nonnull @.str.896, i32 noundef 4, i32 noundef range(i32 0, 256) %21) + %124 = load i32, ptr @hf_isis_lsp_spb_reserved, align 4 + %125 = tail call ptr @proto_tree_add_item(ptr noundef %123, i32 noundef %124, ptr noundef %0, i32 noundef %20, i32 noundef 2, i32 noundef 0) + %126 = load i32, ptr @hf_isis_lsp_spb_sr_bit, align 4 + %127 = tail call ptr @proto_tree_add_item(ptr noundef %123, i32 noundef %126, ptr noundef %0, i32 noundef %20, i32 noundef 2, i32 noundef 0) + %128 = load i32, ptr @hf_isis_lsp_spb_spvid, align 4 + %129 = tail call ptr @proto_tree_add_item(ptr noundef %123, i32 noundef %128, ptr noundef %0, i32 noundef %20, i32 noundef 2, i32 noundef 0) + %130 = add nsw i32 %21, -2 + %.not43.i = icmp eq i32 %130, 0 br i1 %.not43.i, label %.loopexit, label %.lr.ph.preheader.i81 -.lr.ph.preheader.i81: ; preds = %117 - %128 = add i32 %.06996, 4 +.lr.ph.preheader.i81: ; preds = %120 + %131 = add i32 %.06996, 4 br label %.lr.ph.i82 -.lr.ph.i82: ; preds = %132, %.lr.ph.preheader.i81 - %.045.i = phi i32 [ %136, %132 ], [ %128, %.lr.ph.preheader.i81 ] - %.04044.i = phi i32 [ %137, %132 ], [ %127, %.lr.ph.preheader.i81 ] - %129 = icmp samesign ult i32 %.04044.i, 7 - br i1 %129, label %130, label %132 +.lr.ph.i82: ; preds = %135, %.lr.ph.preheader.i81 + %.045.i = phi i32 [ %139, %132 ], [ %131, %.lr.ph.preheader.i81 ] + %.04044.i = phi i32 [ %140, %132 ], [ %130, %.lr.ph.preheader.i81 ] + %132 = icmp samesign ult i32 %.04044.i, 7 + br i1 %132, label %133, label %135 -130: ; preds = %.lr.ph.i82 - %131 = tail call ptr (ptr, ptr, ptr, ptr, i32, i32, ptr, ...) @proto_tree_add_expert_format(ptr noundef %120, ptr noundef %1, ptr noundef nonnull @ei_isis_lsp_short_clv, ptr noundef %0, i32 noundef %20, i32 noundef -1, ptr noundef nonnull @.str.897, i32 noundef %.04044.i, i32 noundef 7) +133: ; preds = %.lr.ph.i82 + %134 = tail call ptr (ptr, ptr, ptr, ptr, i32, i32, ptr, ...) @proto_tree_add_expert_format(ptr noundef %123, ptr noundef %1, ptr noundef nonnull @ei_isis_lsp_short_clv, ptr noundef %0, i32 noundef %20, i32 noundef -1, ptr noundef nonnull @.str.897, i32 noundef %.04044.i, i32 noundef 7) br label %.loopexit -132: ; preds = %.lr.ph.i82 - tail call void @proto_tree_add_bitmask_list(ptr noundef %120, ptr noundef %0, i32 noundef %.045.i, i32 noundef 1, ptr noundef nonnull @dissect_isis_lsp_clv_mt_cap_spbv_mac_address.lsp_spb_short_mac_address, i32 noundef 0) - %133 = add i32 %.045.i, 1 - %134 = load i32, ptr @hf_isis_lsp_spb_short_mac_address, align 4 - %135 = tail call ptr @proto_tree_add_item(ptr noundef %120, i32 noundef %134, ptr noundef %0, i32 noundef %133, i32 noundef 6, i32 noundef 0) - %136 = add i32 %.045.i, 7 - %137 = add nsw i32 %.04044.i, -7 - %.not.i83 = icmp eq i32 %137, 0 +135: ; preds = %.lr.ph.i82 + tail call void @proto_tree_add_bitmask_list(ptr noundef %123, ptr noundef %0, i32 noundef %.045.i, i32 noundef 1, ptr noundef nonnull @dissect_isis_lsp_clv_mt_cap_spbv_mac_address.lsp_spb_short_mac_address, i32 noundef 0) + %136 = add i32 %.045.i, 1 + %137 = load i32, ptr @hf_isis_lsp_spb_short_mac_address, align 4 + %138 = tail call ptr @proto_tree_add_item(ptr noundef %123, i32 noundef %137, ptr noundef %0, i32 noundef %136, i32 noundef 6, i32 noundef 0) + %139 = add i32 %.045.i, 7 + %140 = add nsw i32 %.04044.i, -7 + %.not.i83 = icmp eq i32 %140, 0 br i1 %.not.i83, label %.loopexit, label %.lr.ph.i82, !llvm.loop !19 -138: ; preds = %25 - %139 = tail call fastcc i32 @dissect_isis_trill_clv(ptr noundef %0, ptr noundef %1, ptr noundef %2, i32 noundef %20, i32 noundef %23, i32 noundef %21) - %140 = icmp eq i32 %139, -1 - br i1 %140, label %141, label %.loopexit +141: ; preds = %25 + %142 = tail call fastcc i32 @dissect_isis_trill_clv(ptr noundef %0, ptr noundef %1, ptr noundef %2, i32 noundef %20, i32 noundef %23, i32 noundef %21) + %143 = icmp eq i32 %142, -1 + br i1 %143, label %144, label %.loopexit -141: ; preds = %138 - %142 = add nuw nsw i32 %21, 2 - %143 = tail call ptr (ptr, ptr, ptr, ptr, i32, i32, ptr, ...) @proto_tree_add_expert_format(ptr noundef %2, ptr noundef %1, ptr noundef nonnull @ei_isis_lsp_subtlv, ptr noundef %0, i32 noundef %.06996, i32 noundef %142, ptr noundef nonnull @.str.885, i32 noundef %23, i32 noundef %21) +144: ; preds = %141 + %145 = add nuw nsw i32 %21, 2 + %146 = tail call ptr (ptr, ptr, ptr, ptr, i32, i32, ptr, ...) @proto_tree_add_expert_format(ptr noundef %2, ptr noundef %1, ptr noundef nonnull @ei_isis_lsp_subtlv, ptr noundef %0, i32 noundef %.06996, i32 noundef %145, ptr noundef nonnull @.str.885, i32 noundef %23, i32 noundef %21) br label %.loopexit -.loopexit: ; preds = %132, %107, %138, %141, %82, %28, %58, %61, %._crit_edge.i, %78, %90, %92, %105, %115, %117, %130 - %144 = sub nsw i32 %19, %21 - %145 = add i32 %20, %21 - %146 = icmp sgt i32 %144, 1 - br i1 %146, label %.lr.ph, label %.loopexit87 +.loopexit: ; preds = %135, %110, %141, %144, %85, %28, %61, %64, %._crit_edge.i, %81, %93, %95, %108, %118, %120, %133 + %147 = sub nsw i32 %19, %21 + %148 = add i32 %20, %21 + %149 = icmp sgt i32 %147, 1 + br i1 %149, label %.lr.ph, label %.loopexit87 .loopexit87: ; preds = %.loopexit, %8, %.thread, %6 ret void