From 38b9d8c9050dcde21dfc59edb4dd97aaf79b37c9 Mon Sep 17 00:00:00 2001 From: dtcxzyw <15650457+dtcxzyw@users.noreply.github.com> Date: Thu, 7 Nov 2024 13:20:41 +0800 Subject: [PATCH 1/2] pre-commit: PR114996 --- scripts/setup_pre_commit_patch.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index 820278fb20a..7cfda97286e 100755 --- a/scripts/setup_pre_commit_patch.sh +++ b/scripts/setup_pre_commit_patch.sh @@ -2,7 +2,7 @@ set -euo pipefail shopt -s inherit_errexit -export GITHUB_PATCH_ID="/llvm-project/commit/" +export GITHUB_PATCH_ID=llvm/llvm-project/pull/114996 # Please rebase manually # git fetch origin From a1b379fb4d08a0ebc9951cdc314147a5c536d108 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 7 Nov 2024 05:43:17 +0000 Subject: [PATCH 2/2] pre-commit: Update --- bench/abc/optimized/bmcMaj.c.ll | 158 +++--- bench/abc/optimized/dauDsd.c.ll | 84 +-- bench/abc/optimized/extraUtilPerm.c.ll | 16 +- bench/abc/optimized/giaSpeedup.c.ll | 396 +++++++------- bench/abc/optimized/nwkTiming.c.ll | 498 +++++++++--------- bench/abc/optimized/pdrCore.c.ll | 36 +- bench/abc/optimized/pdrUtil.c.ll | 63 ++- bench/abc/optimized/utilSort.c.ll | 38 +- bench/arrow/optimized/codegen_internal.cc.ll | 4 +- bench/assimp/optimized/FBXTokenizer.cpp.ll | 58 +- bench/assimp/optimized/IFCBoolean.cpp.ll | 14 +- bench/boost/optimized/args_cmd.ll | 344 ++++++------ bench/boost/optimized/args_handling.ll | 342 ++++++------ bench/boost/optimized/async.ll | 340 ++++++------ bench/boost/optimized/run_exe.ll | 352 ++++++------- bench/boost/optimized/sub_launcher.ll | 354 +++++++------ bench/boost/optimized/throw_on_error.ll | 266 +++++----- bench/graphviz/optimized/matrix_ops.c.ll | 163 +++--- bench/gromacs/optimized/dlasdq.cpp.ll | 83 +-- bench/gromacs/optimized/gmx_mindist.cpp.ll | 104 ++-- bench/gromacs/optimized/libxdrf.cpp.ll | 7 +- bench/harfbuzz/optimized/harfbuzz.cc.ll | 18 +- bench/hdf5/optimized/H5T.c.ll | 6 +- bench/icu/optimized/package.ll | 9 +- bench/jq/optimized/regparse.ll | 2 +- bench/meshlab/optimized/gltf_loader.cpp.ll | 52 +- bench/minetest/optimized/treegen.cpp.ll | 176 ++++--- bench/mitsuba3/optimized/rgb2spec_opt.cpp.ll | 450 ++++++++-------- bench/ocio/optimized/Lut3DOpCPU.cpp.ll | 12 +- bench/opencc/optimized/CommandLine.cpp.ll | 85 +-- bench/opencv/optimized/matrix_decomp.cpp.ll | 490 ++++++++--------- bench/openusd/optimized/entropymode.c.ll | 20 +- bench/pbrt-v4/optimized/rgb2spec_opt.cpp.ll | 10 +- bench/postgres/optimized/prepare.ll | 324 ++++++------ bench/regex-rs/optimized/1pxsmct4oxs5dlep.ll | 46 +- .../ripgrep-rs/optimized/5ckxrdy9v0i8g3uf.ll | 10 +- bench/slurm/optimized/cbuf.ll | 192 +++---- bench/velox/optimized/WidthBucketArray.cpp.ll | 8 +- bench/z3/optimized/sat_aig_cuts.cpp.ll | 180 +++---- 39 files changed, 2917 insertions(+), 2893 deletions(-) diff --git a/bench/abc/optimized/bmcMaj.c.ll b/bench/abc/optimized/bmcMaj.c.ll index 2d381574657..6b01ae02dfa 100644 --- a/bench/abc/optimized/bmcMaj.c.ll +++ b/bench/abc/optimized/bmcMaj.c.ll @@ -17733,9 +17733,9 @@ define void @Exa6_SortSims(ptr nocapture noundef readonly %0, ptr nocapture noun %wide.trip.count = zext nneg i32 %.val to i64 br label %.lr.ph.preheader -.lr.ph.preheader: ; preds = %27, %.lr.ph43.preheader - %indvars.iv48 = phi i64 [ 0, %.lr.ph43.preheader ], [ %indvars.iv.next49, %27 ] - %indvars.iv = phi i64 [ 1, %.lr.ph43.preheader ], [ %indvars.iv.next, %27 ] +.lr.ph.preheader: ; preds = %28, %.lr.ph43.preheader + %indvars.iv48 = phi i64 [ 0, %.lr.ph43.preheader ], [ %indvars.iv.next49, %28 ] + %indvars.iv = phi i64 [ 1, %.lr.ph43.preheader ], [ %indvars.iv.next, %28 ] %indvars.iv.next49 = add nuw nsw i64 %indvars.iv48, 1 %8 = trunc nuw nsw i64 %indvars.iv48 to i32 br label %.lr.ph @@ -17745,7 +17745,7 @@ define void @Exa6_SortSims(ptr nocapture noundef readonly %0, ptr nocapture noun %.03540 = phi i32 [ %8, %.lr.ph.preheader ], [ %spec.select, %.lr.ph ] %9 = getelementptr inbounds i64, ptr %.val37, i64 %indvars.iv45 %10 = load i64, ptr %9, align 8 - %11 = zext nneg i32 %.03540 to i64 + %11 = sext i32 %.03540 to i64 %12 = getelementptr inbounds i64, ptr %.val37, i64 %11 %13 = load i64, ptr %12, align 8 %14 = icmp ult i64 %10, %13 @@ -17758,29 +17758,30 @@ define void @Exa6_SortSims(ptr nocapture noundef readonly %0, ptr nocapture noun ._crit_edge: ; preds = %.lr.ph %16 = zext i32 %spec.select to i64 %17 = icmp eq i64 %indvars.iv48, %16 - br i1 %17, label %27, label %18 + br i1 %17, label %28, label %18 18: ; preds = %._crit_edge %19 = getelementptr inbounds i64, ptr %.val37, i64 %indvars.iv48 %20 = load i64, ptr %19, align 8 - %21 = getelementptr inbounds i64, ptr %.val37, i64 %16 - %22 = load i64, ptr %21, align 8 - store i64 %22, ptr %19, align 8 - store i64 %20, ptr %21, align 8 - %23 = getelementptr inbounds i64, ptr %.val38, i64 %indvars.iv48 - %24 = load i64, ptr %23, align 8 - %25 = getelementptr inbounds i64, ptr %.val38, i64 %16 - %26 = load i64, ptr %25, align 8 - store i64 %26, ptr %23, align 8 - store i64 %24, ptr %25, align 8 - br label %27 + %21 = sext i32 %spec.select to i64 + %22 = getelementptr inbounds i64, ptr %.val37, i64 %21 + %23 = load i64, ptr %22, align 8 + store i64 %23, ptr %19, align 8 + store i64 %20, ptr %22, align 8 + %24 = getelementptr inbounds i64, ptr %.val38, i64 %indvars.iv48 + %25 = load i64, ptr %24, align 8 + %26 = getelementptr inbounds i64, ptr %.val38, i64 %21 + %27 = load i64, ptr %26, align 8 + store i64 %27, ptr %24, align 8 + store i64 %25, ptr %26, align 8 + br label %28 -27: ; preds = %._crit_edge, %18 +28: ; preds = %._crit_edge, %18 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond52.not = icmp eq i64 %indvars.iv.next49, %wide.trip.count51 br i1 %exitcond52.not, label %._crit_edge44, label %.lr.ph.preheader, !llvm.loop !268 -._crit_edge44: ; preds = %27, %2 +._crit_edge44: ; preds = %28, %2 ret void } @@ -24198,7 +24199,7 @@ define void @Exa_ManExactSynthesis6(ptr nocapture noundef readonly %0, ptr nound store ptr null, ptr %4, align 8 %7 = call i32 @Exa6_ReadFile(ptr noundef %1, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef nonnull %6) %8 = icmp eq i32 %7, 0 - br i1 %8, label %58, label %9 + br i1 %8, label %59, label %9 9: ; preds = %2 %10 = load ptr, ptr %3, align 8 @@ -24218,9 +24219,9 @@ define void @Exa_ManExactSynthesis6(ptr nocapture noundef readonly %0, ptr nound %wide.trip.count.i = zext nneg i32 %.val.i to i64 br label %.lr.ph.preheader.i -.lr.ph.preheader.i: ; preds = %36, %.lr.ph43.preheader.i - %indvars.iv48.i = phi i64 [ 0, %.lr.ph43.preheader.i ], [ %indvars.iv.next49.i, %36 ] - %indvars.iv.i = phi i64 [ 1, %.lr.ph43.preheader.i ], [ %indvars.iv.next.i, %36 ] +.lr.ph.preheader.i: ; preds = %37, %.lr.ph43.preheader.i + %indvars.iv48.i = phi i64 [ 0, %.lr.ph43.preheader.i ], [ %indvars.iv.next49.i, %37 ] + %indvars.iv.i = phi i64 [ 1, %.lr.ph43.preheader.i ], [ %indvars.iv.next.i, %37 ] %17 = trunc nuw nsw i64 %indvars.iv48.i to i32 br label %.lr.ph.i @@ -24229,7 +24230,7 @@ define void @Exa_ManExactSynthesis6(ptr nocapture noundef readonly %0, ptr nound %.03540.i = phi i32 [ %17, %.lr.ph.preheader.i ], [ %spec.select.i, %.lr.ph.i ] %18 = getelementptr inbounds i64, ptr %.val37.i, i64 %indvars.iv45.i %19 = load i64, ptr %18, align 8 - %20 = zext nneg i32 %.03540.i to i64 + %20 = sext i32 %.03540.i to i64 %21 = getelementptr inbounds i64, ptr %.val37.i, i64 %20 %22 = load i64, ptr %21, align 8 %23 = icmp ult i64 %19, %22 @@ -24243,90 +24244,91 @@ define void @Exa_ManExactSynthesis6(ptr nocapture noundef readonly %0, ptr nound %indvars.iv.next49.i = add nuw nsw i64 %indvars.iv48.i, 1 %25 = zext i32 %spec.select.i to i64 %26 = icmp eq i64 %indvars.iv48.i, %25 - br i1 %26, label %36, label %27 + br i1 %26, label %37, label %27 27: ; preds = %._crit_edge.i %28 = getelementptr inbounds i64, ptr %.val37.i, i64 %indvars.iv48.i %29 = load i64, ptr %28, align 8 - %30 = getelementptr inbounds i64, ptr %.val37.i, i64 %25 - %31 = load i64, ptr %30, align 8 - store i64 %31, ptr %28, align 8 - store i64 %29, ptr %30, align 8 - %32 = getelementptr inbounds i64, ptr %.val38.i, i64 %indvars.iv48.i - %33 = load i64, ptr %32, align 8 - %34 = getelementptr inbounds i64, ptr %.val38.i, i64 %25 - %35 = load i64, ptr %34, align 8 - store i64 %35, ptr %32, align 8 - store i64 %33, ptr %34, align 8 - br label %36 + %30 = sext i32 %spec.select.i to i64 + %31 = getelementptr inbounds i64, ptr %.val37.i, i64 %30 + %32 = load i64, ptr %31, align 8 + store i64 %32, ptr %28, align 8 + store i64 %29, ptr %31, align 8 + %33 = getelementptr inbounds i64, ptr %.val38.i, i64 %indvars.iv48.i + %34 = load i64, ptr %33, align 8 + %35 = getelementptr inbounds i64, ptr %.val38.i, i64 %30 + %36 = load i64, ptr %35, align 8 + store i64 %36, ptr %33, align 8 + store i64 %34, ptr %35, align 8 + br label %37 -36: ; preds = %27, %._crit_edge.i +37: ; preds = %27, %._crit_edge.i %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond52.not.i = icmp eq i64 %indvars.iv.next49.i, %wide.trip.count51.i br i1 %exitcond52.not.i, label %Exa6_SortSims.exit, label %.lr.ph.preheader.i, !llvm.loop !268 -Exa6_SortSims.exit: ; preds = %36, %9 - %37 = load i32, ptr %5, align 4 - %38 = load i32, ptr %6, align 4 - %39 = getelementptr inbounds i8, ptr %0, i64 4 - %40 = load i32, ptr %39, align 4 - %41 = getelementptr inbounds i8, ptr %0, i64 24 - %42 = load i32, ptr %41, align 8 - %43 = getelementptr inbounds i8, ptr %0, i64 64 - %44 = load i32, ptr %43, align 8 - %45 = call ptr @Exa_ManExactSynthesis6Int(ptr noundef %10, ptr noundef %11, i32 noundef %7, i32 noundef %37, i32 noundef %38, i32 noundef %40, i32 noundef %42, i32 noundef %44) - %46 = icmp eq ptr %10, null - br i1 %46, label %Vec_WrdFreeP.exit, label %47 - -47: ; preds = %Exa6_SortSims.exit - %48 = load ptr, ptr %12, align 8 - %.not.i = icmp eq ptr %48, null - br i1 %.not.i, label %.thread.i, label %49 +Exa6_SortSims.exit: ; preds = %37, %9 + %38 = load i32, ptr %5, align 4 + %39 = load i32, ptr %6, align 4 + %40 = getelementptr inbounds i8, ptr %0, i64 4 + %41 = load i32, ptr %40, align 4 + %42 = getelementptr inbounds i8, ptr %0, i64 24 + %43 = load i32, ptr %42, align 8 + %44 = getelementptr inbounds i8, ptr %0, i64 64 + %45 = load i32, ptr %44, align 8 + %46 = call ptr @Exa_ManExactSynthesis6Int(ptr noundef %10, ptr noundef %11, i32 noundef %7, i32 noundef %38, i32 noundef %39, i32 noundef %41, i32 noundef %43, i32 noundef %45) + %47 = icmp eq ptr %10, null + br i1 %47, label %Vec_WrdFreeP.exit, label %48 + +48: ; preds = %Exa6_SortSims.exit + %49 = load ptr, ptr %12, align 8 + %.not.i = icmp eq ptr %49, null + br i1 %.not.i, label %.thread.i, label %50 -49: ; preds = %47 - call void @free(ptr noundef nonnull %48) #33 +50: ; preds = %48 + call void @free(ptr noundef nonnull %49) #33 br label %.thread.i -.thread.i: ; preds = %49, %47 +.thread.i: ; preds = %50, %48 call void @free(ptr noundef nonnull %10) #33 br label %Vec_WrdFreeP.exit Vec_WrdFreeP.exit: ; preds = %Exa6_SortSims.exit, %.thread.i - %50 = icmp eq ptr %11, null - br i1 %50, label %Vec_WrdFreeP.exit12, label %51 + %51 = icmp eq ptr %11, null + br i1 %51, label %Vec_WrdFreeP.exit12, label %52 -51: ; preds = %Vec_WrdFreeP.exit - %52 = load ptr, ptr %13, align 8 - %.not.i8 = icmp eq ptr %52, null - br i1 %.not.i8, label %.thread.i11, label %53 +52: ; preds = %Vec_WrdFreeP.exit + %53 = load ptr, ptr %13, align 8 + %.not.i8 = icmp eq ptr %53, null + br i1 %.not.i8, label %.thread.i11, label %54 -53: ; preds = %51 - call void @free(ptr noundef nonnull %52) #33 +54: ; preds = %52 + call void @free(ptr noundef nonnull %53) #33 br label %.thread.i11 -.thread.i11: ; preds = %53, %51 +.thread.i11: ; preds = %54, %52 call void @free(ptr noundef nonnull %11) #33 br label %Vec_WrdFreeP.exit12 Vec_WrdFreeP.exit12: ; preds = %Vec_WrdFreeP.exit, %.thread.i11 - %.not = icmp eq ptr %45, null - br i1 %.not, label %58, label %54 + %.not = icmp eq ptr %46, null + br i1 %.not, label %59, label %55 -54: ; preds = %Vec_WrdFreeP.exit12 - %55 = getelementptr inbounds i8, ptr %45, i64 16 - %56 = load ptr, ptr %55, align 8 - %.not.i13 = icmp eq ptr %56, null - br i1 %.not.i13, label %Mini_AigStop.exit, label %57 +55: ; preds = %Vec_WrdFreeP.exit12 + %56 = getelementptr inbounds i8, ptr %46, i64 16 + %57 = load ptr, ptr %56, align 8 + %.not.i13 = icmp eq ptr %57, null + br i1 %.not.i13, label %Mini_AigStop.exit, label %58 -57: ; preds = %54 - call void @free(ptr noundef nonnull %56) #33 +58: ; preds = %55 + call void @free(ptr noundef nonnull %57) #33 br label %Mini_AigStop.exit -Mini_AigStop.exit: ; preds = %54, %57 - call void @free(ptr noundef nonnull %45) #33 - br label %58 +Mini_AigStop.exit: ; preds = %55, %58 + call void @free(ptr noundef nonnull %46) #33 + br label %59 -58: ; preds = %2, %Mini_AigStop.exit, %Vec_WrdFreeP.exit12 +59: ; preds = %2, %Mini_AigStop.exit, %Vec_WrdFreeP.exit12 ret void } diff --git a/bench/abc/optimized/dauDsd.c.ll b/bench/abc/optimized/dauDsd.c.ll index 15308183c7f..8b6e309f13a 100644 --- a/bench/abc/optimized/dauDsd.c.ll +++ b/bench/abc/optimized/dauDsd.c.ll @@ -184,7 +184,7 @@ define void @Dau_DsdPermute(ptr nocapture noundef %0) local_unnamed_addr #2 { %2 = alloca [16 x i32], align 16 %3 = load i8, ptr %0, align 1 %.not9.i = icmp eq i8 %3, 0 - br i1 %.not9.i, label %Dau_DsdFindVarNum.exit, label %.lr.ph.i + br i1 %.not9.i, label %.lr.ph.preheader.i, label %.lr.ph.i .lr.ph.i: ; preds = %1, %.lr.ph.i %4 = phi i8 [ %10, %.lr.ph.i ], [ %3, %1 ] @@ -198,19 +198,19 @@ define void @Dau_DsdPermute(ptr nocapture noundef %0) local_unnamed_addr #2 { %9 = getelementptr inbounds i8, ptr %5, i64 1 %10 = load i8, ptr %9, align 1 %.not.i = icmp eq i8 %10, 0 - br i1 %.not.i, label %._crit_edge.loopexit.i, label %.lr.ph.i, !llvm.loop !6 + br i1 %.not.i, label %Dau_DsdFindVarNum.exit, label %.lr.ph.i, !llvm.loop !6 -._crit_edge.loopexit.i: ; preds = %.lr.ph.i +Dau_DsdFindVarNum.exit: ; preds = %.lr.ph.i %11 = add nuw nsw i32 %.1.i, 1 - br label %Dau_DsdFindVarNum.exit + br label %.lr.ph.preheader.i -Dau_DsdFindVarNum.exit: ; preds = %1, %._crit_edge.loopexit.i - %.0.lcssa.i = phi i32 [ 1, %1 ], [ %11, %._crit_edge.loopexit.i ] - %wide.trip.count.i = zext nneg i32 %.0.lcssa.i to i64 +.lr.ph.preheader.i: ; preds = %Dau_DsdFindVarNum.exit, %1 + %.0.lcssa.i14 = phi i32 [ %11, %Dau_DsdFindVarNum.exit ], [ 1, %1 ] + %wide.trip.count.i = zext nneg i32 %.0.lcssa.i14 to i64 br label %.lr.ph.i11 -.lr.ph.i11: ; preds = %.lr.ph.i11, %Dau_DsdFindVarNum.exit - %indvars.iv.i = phi i64 [ 0, %Dau_DsdFindVarNum.exit ], [ %indvars.iv.next.i, %.lr.ph.i11 ] +.lr.ph.i11: ; preds = %.lr.ph.i11, %.lr.ph.preheader.i + %indvars.iv.i = phi i64 [ 0, %.lr.ph.preheader.i ], [ %indvars.iv.next.i, %.lr.ph.i11 ] %12 = getelementptr inbounds i32, ptr %2, i64 %indvars.iv.i %13 = trunc nuw nsw i64 %indvars.iv.i to i32 store i32 %13, ptr %12, align 4 @@ -221,7 +221,7 @@ Dau_DsdFindVarNum.exit: ; preds = %1, %._crit_edge.loo .lr.ph21.i: ; preds = %.lr.ph.i11, %.lr.ph21.i %indvars.iv23.i = phi i64 [ %indvars.iv.next24.i, %.lr.ph21.i ], [ 0, %.lr.ph.i11 ] %14 = tail call i32 @rand() #25 - %15 = srem i32 %14, %.0.lcssa.i + %15 = srem i32 %14, %.0.lcssa.i14 %16 = getelementptr inbounds i32, ptr %2, i64 %indvars.iv23.i %17 = load i32, ptr %16, align 4 %18 = sext i32 %15 to i64 @@ -234,40 +234,40 @@ Dau_DsdFindVarNum.exit: ; preds = %1, %._crit_edge.loo br i1 %exitcond27.not.i, label %Dau_DsdGenRandPerm.exit, label %.lr.ph21.i, !llvm.loop !8 Dau_DsdGenRandPerm.exit: ; preds = %.lr.ph21.i - %21 = load i8, ptr %0, align 1 - %.not12 = icmp eq i8 %21, 0 - br i1 %.not12, label %._crit_edge, label %.lr.ph + %.pre = load i8, ptr %0, align 1 + %.not15 = icmp eq i8 %.pre, 0 + br i1 %.not15, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %Dau_DsdGenRandPerm.exit - %22 = add nuw nsw i32 %.0.lcssa.i, 97 - br label %23 - -23: ; preds = %.lr.ph, %36 - %24 = phi i8 [ %21, %.lr.ph ], [ %38, %36 ] - %25 = phi ptr [ %0, %.lr.ph ], [ %37, %36 ] - %26 = sext i8 %24 to i32 - %27 = icmp sgt i8 %24, 96 - %28 = icmp sgt i32 %22, %26 - %or.cond = select i1 %27, i1 %28, i1 false - br i1 %or.cond, label %29, label %36 - -29: ; preds = %23 - %30 = add nsw i32 %26, -97 - %31 = zext nneg i32 %30 to i64 - %32 = getelementptr inbounds [16 x i32], ptr %2, i64 0, i64 %31 - %33 = load i32, ptr %32, align 4 - %34 = trunc i32 %33 to i8 - %35 = add i8 %34, 97 - store i8 %35, ptr %25, align 1 - br label %36 + %21 = add nuw nsw i32 %.0.lcssa.i14, 97 + br label %22 + +22: ; preds = %.lr.ph, %35 + %23 = phi i8 [ %.pre, %.lr.ph ], [ %37, %35 ] + %24 = phi ptr [ %0, %.lr.ph ], [ %36, %35 ] + %25 = sext i8 %23 to i32 + %26 = icmp sgt i8 %23, 96 + %27 = icmp sgt i32 %21, %25 + %or.cond = select i1 %26, i1 %27, i1 false + br i1 %or.cond, label %28, label %35 + +28: ; preds = %22 + %29 = add nsw i32 %25, -97 + %30 = zext nneg i32 %29 to i64 + %31 = getelementptr inbounds [16 x i32], ptr %2, i64 0, i64 %30 + %32 = load i32, ptr %31, align 4 + %33 = trunc i32 %32 to i8 + %34 = add i8 %33, 97 + store i8 %34, ptr %24, align 1 + br label %35 -36: ; preds = %29, %23 - %37 = getelementptr inbounds i8, ptr %25, i64 1 - %38 = load i8, ptr %37, align 1 - %.not = icmp eq i8 %38, 0 - br i1 %.not, label %._crit_edge, label %23, !llvm.loop !9 +35: ; preds = %28, %22 + %36 = getelementptr inbounds i8, ptr %24, i64 1 + %37 = load i8, ptr %36, align 1 + %.not = icmp eq i8 %37, 0 + br i1 %.not, label %._crit_edge, label %22, !llvm.loop !9 -._crit_edge: ; preds = %36, %Dau_DsdGenRandPerm.exit +._crit_edge: ; preds = %35, %Dau_DsdGenRandPerm.exit ret void } @@ -3259,7 +3259,7 @@ define i32 @Dau_DsdCheck1Step(ptr nocapture noundef readonly %0, ptr noundef %1, %.03132.i = phi i32 [ %22, %.lr.ph.preheader.i ], [ %spec.select.i, %.lr.ph.i ] %23 = getelementptr inbounds i32, ptr %7, i64 %indvars.iv38.i %24 = load i32, ptr %23, align 4 - %25 = zext nneg i32 %.03132.i to i64 + %25 = sext i32 %.03132.i to i64 %26 = getelementptr inbounds i32, ptr %7, i64 %25 %27 = load i32, ptr %26, align 4 %28 = icmp slt i32 %24, %27 @@ -3273,7 +3273,7 @@ define i32 @Dau_DsdCheck1Step(ptr nocapture noundef readonly %0, ptr noundef %1, %indvars.iv.next42.i = add nuw nsw i64 %indvars.iv41.i, 1 %30 = getelementptr inbounds i32, ptr %6, i64 %indvars.iv41.i %31 = load i32, ptr %30, align 4 - %32 = zext nneg i32 %spec.select.i to i64 + %32 = sext i32 %spec.select.i to i64 %33 = getelementptr inbounds i32, ptr %6, i64 %32 %34 = load i32, ptr %33, align 4 store i32 %34, ptr %30, align 4 diff --git a/bench/abc/optimized/extraUtilPerm.c.ll b/bench/abc/optimized/extraUtilPerm.c.ll index 55fe9fa4726..67063f07b54 100644 --- a/bench/abc/optimized/extraUtilPerm.c.ll +++ b/bench/abc/optimized/extraUtilPerm.c.ll @@ -55,7 +55,7 @@ define i32 @Abc_ZddBuildSet(ptr nocapture noundef %0, ptr nocapture noundef %1, %.024.i = phi i32 [ %6, %.lr.ph.preheader.i ], [ %spec.select.i, %.lr.ph.i ] %7 = getelementptr inbounds i32, ptr %1, i64 %indvars.iv29.i %8 = load i32, ptr %7, align 4 - %9 = zext nneg i32 %.024.i to i64 + %9 = sext i32 %.024.i to i64 %10 = getelementptr inbounds i32, ptr %1, i64 %9 %11 = load i32, ptr %10, align 4 %12 = icmp slt i32 %8, %11 @@ -69,7 +69,7 @@ define i32 @Abc_ZddBuildSet(ptr nocapture noundef %0, ptr nocapture noundef %1, %indvars.iv.next33.i = add nuw nsw i64 %indvars.iv32.i, 1 %14 = getelementptr inbounds i32, ptr %1, i64 %indvars.iv32.i %15 = load i32, ptr %14, align 4 - %16 = zext nneg i32 %spec.select.i to i64 + %16 = sext i32 %spec.select.i to i64 %17 = getelementptr inbounds i32, ptr %1, i64 %16 %18 = load i32, ptr %17, align 4 store i32 %18, ptr %14, align 4 @@ -2620,7 +2620,7 @@ Abc_ZddPermPrint.exit: ; preds = %.lr.ph.i %.024.i.i = phi i32 [ %14, %.lr.ph.preheader.i.i ], [ %spec.select.i.i, %.lr.ph.i.i ] %15 = getelementptr inbounds i32, ptr %10, i64 %indvars.iv29.i.i %16 = load i32, ptr %15, align 4 - %17 = zext nneg i32 %.024.i.i to i64 + %17 = sext i32 %.024.i.i to i64 %18 = getelementptr inbounds i32, ptr %10, i64 %17 %19 = load i32, ptr %18, align 4 %20 = icmp slt i32 %16, %19 @@ -2634,7 +2634,7 @@ Abc_ZddPermPrint.exit: ; preds = %.lr.ph.i %indvars.iv.next33.i.i = add nuw nsw i64 %indvars.iv32.i.i, 1 %22 = getelementptr inbounds i32, ptr %10, i64 %indvars.iv32.i.i %23 = load i32, ptr %22, align 4 - %24 = zext nneg i32 %spec.select.i.i to i64 + %24 = sext i32 %spec.select.i.i to i64 %25 = getelementptr inbounds i32, ptr %10, i64 %24 %26 = load i32, ptr %25, align 4 store i32 %26, ptr %22, align 4 @@ -3244,7 +3244,7 @@ Abc_ZddPermPrint.exit73: ; preds = %.lr.ph.i69 %.024.i.i = phi i32 [ %65, %.lr.ph.preheader.i.i ], [ %spec.select.i.i, %.lr.ph.i.i ] %66 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv29.i.i %67 = load i32, ptr %66, align 4 - %68 = zext nneg i32 %.024.i.i to i64 + %68 = sext i32 %.024.i.i to i64 %69 = getelementptr inbounds i32, ptr %3, i64 %68 %70 = load i32, ptr %69, align 4 %71 = icmp slt i32 %67, %70 @@ -3258,7 +3258,7 @@ Abc_ZddPermPrint.exit73: ; preds = %.lr.ph.i69 %indvars.iv.next33.i.i = add nuw nsw i64 %indvars.iv32.i.i, 1 %73 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv32.i.i %74 = load i32, ptr %73, align 4 - %75 = zext nneg i32 %spec.select.i.i to i64 + %75 = sext i32 %spec.select.i.i to i64 %76 = getelementptr inbounds i32, ptr %3, i64 %75 %77 = load i32, ptr %76, align 4 store i32 %77, ptr %73, align 4 @@ -3728,7 +3728,7 @@ Abc_ZddPerm2Comb.exit: ; preds = %Abc_ZddPerm2Comb.ex %.024.i.i = phi i32 [ %102, %.lr.ph.preheader.i.i ], [ %spec.select.i.i, %.lr.ph.i.i ] %103 = getelementptr inbounds i32, ptr %5, i64 %indvars.iv29.i.i %104 = load i32, ptr %103, align 4 - %105 = zext nneg i32 %.024.i.i to i64 + %105 = sext i32 %.024.i.i to i64 %106 = getelementptr inbounds i32, ptr %5, i64 %105 %107 = load i32, ptr %106, align 4 %108 = icmp slt i32 %104, %107 @@ -3742,7 +3742,7 @@ Abc_ZddPerm2Comb.exit: ; preds = %Abc_ZddPerm2Comb.ex %indvars.iv.next33.i.i = add nuw nsw i64 %indvars.iv32.i.i, 1 %110 = getelementptr inbounds i32, ptr %5, i64 %indvars.iv32.i.i %111 = load i32, ptr %110, align 4 - %112 = zext nneg i32 %spec.select.i.i to i64 + %112 = sext i32 %spec.select.i.i to i64 %113 = getelementptr inbounds i32, ptr %5, i64 %112 %114 = load i32, ptr %113, align 4 store i32 %114, ptr %110, align 4 diff --git a/bench/abc/optimized/giaSpeedup.c.ll b/bench/abc/optimized/giaSpeedup.c.ll index 7d98e86d3e6..730a344feb9 100644 --- a/bench/abc/optimized/giaSpeedup.c.ll +++ b/bench/abc/optimized/giaSpeedup.c.ll @@ -86,7 +86,7 @@ define void @Gia_LutDelayTraceSortPins(ptr nocapture noundef readonly %0, i32 no %.val4879 = phi ptr [ %.val48, %.critedge ], [ %.val, %.critedge.preheader ] %indvars.iv74 = phi i64 [ %indvars.iv.next75, %.critedge ], [ 0, %.critedge.preheader ] %indvars.iv69 = phi i64 [ %indvars.iv.next70, %.critedge ], [ 1, %.critedge.preheader ] - %37 = phi i32 [ %66, %.critedge ], [ %34, %.critedge.preheader ] + %37 = phi i32 [ %67, %.critedge ], [ %34, %.critedge.preheader ] %indvars.iv.next75 = add nuw nsw i64 %indvars.iv74, 1 %38 = sext i32 %37 to i64 %39 = icmp slt i64 %indvars.iv.next75, %38 @@ -105,7 +105,7 @@ define void @Gia_LutDelayTraceSortPins(ptr nocapture noundef readonly %0, i32 no %43 = sext i32 %42 to i64 %44 = getelementptr inbounds float, ptr %3, i64 %43 %45 = load float, ptr %44, align 4 - %46 = zext nneg i32 %.04559 to i64 + %46 = sext i32 %.04559 to i64 %47 = getelementptr inbounds i32, ptr %2, i64 %46 %48 = load i32, ptr %47, align 4 %49 = sext i32 %48 to i64 @@ -127,27 +127,28 @@ define void @Gia_LutDelayTraceSortPins(ptr nocapture noundef readonly %0, i32 no 56: ; preds = %._crit_edge %57 = getelementptr inbounds i32, ptr %2, i64 %indvars.iv74 %58 = load i32, ptr %57, align 4 - %59 = getelementptr inbounds i32, ptr %2, i64 %54 - %60 = load i32, ptr %59, align 4 - store i32 %60, ptr %57, align 4 - store i32 %58, ptr %59, align 4 + %59 = sext i32 %.045.lcssa to i64 + %60 = getelementptr inbounds i32, ptr %2, i64 %59 + %61 = load i32, ptr %60, align 4 + store i32 %61, ptr %57, align 4 + store i32 %58, ptr %60, align 4 %.val48.pre = load ptr, ptr %5, align 8 br label %.critedge .critedge: ; preds = %._crit_edge, %56 %.val48 = phi ptr [ %.val4879, %._crit_edge ], [ %.val48.pre, %56 ] - %61 = getelementptr i8, ptr %.val48, i64 8 - %.val48.val = load ptr, ptr %61, align 8 - %62 = getelementptr inbounds i32, ptr %.val48.val, i64 %6 - %63 = load i32, ptr %62, align 4 - %64 = sext i32 %63 to i64 - %65 = getelementptr inbounds i32, ptr %.val48.val, i64 %64 - %66 = load i32, ptr %65, align 4 - %67 = add nsw i32 %66, -1 - %68 = sext i32 %67 to i64 - %69 = icmp slt i64 %indvars.iv.next75, %68 + %62 = getelementptr i8, ptr %.val48, i64 8 + %.val48.val = load ptr, ptr %62, align 8 + %63 = getelementptr inbounds i32, ptr %.val48.val, i64 %6 + %64 = load i32, ptr %63, align 4 + %65 = sext i32 %64 to i64 + %66 = getelementptr inbounds i32, ptr %.val48.val, i64 %65 + %67 = load i32, ptr %66, align 4 + %68 = add nsw i32 %67, -1 + %69 = sext i32 %68 to i64 + %70 = icmp slt i64 %indvars.iv.next75, %69 %indvars.iv.next70 = add nuw nsw i64 %indvars.iv69, 1 - br i1 %69, label %.lr.ph65, label %.preheader, !llvm.loop !7 + br i1 %70, label %.lr.ph65, label %.preheader, !llvm.loop !7 } ; Function Attrs: nofree norecurse nosync nounwind memory(read, inaccessiblemem: none) uwtable @@ -362,7 +363,7 @@ define float @Gia_ObjComputeArrival(ptr nocapture noundef readonly %0, i32 nound %100 = getelementptr i8, ptr %.val112, i64 8 %.val112.val = load ptr, ptr %100, align 8 %wide.trip.count155 = zext nneg i32 %94 to i64 - br label %156 + br label %157 101: ; preds = %86 br i1 %97, label %.lr.ph.i, label %.critedge @@ -419,7 +420,7 @@ define float @Gia_ObjComputeArrival(ptr nocapture noundef readonly %0, i32 nound %121 = sext i32 %120 to i64 %122 = getelementptr inbounds float, ptr %5, i64 %121 %123 = load float, ptr %122, align 4 - %124 = zext nneg i32 %.04559.i to i64 + %124 = sext i32 %.04559.i to i64 %125 = getelementptr inbounds i32, ptr %4, i64 %124 %126 = load i32, ptr %125, align 4 %127 = sext i32 %126 to i64 @@ -441,10 +442,11 @@ define float @Gia_ObjComputeArrival(ptr nocapture noundef readonly %0, i32 nound 134: ; preds = %._crit_edge.i %135 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv74.i %136 = load i32, ptr %135, align 4 - %137 = getelementptr inbounds i32, ptr %4, i64 %132 - %138 = load i32, ptr %137, align 4 - store i32 %138, ptr %135, align 4 - store i32 %136, ptr %137, align 4 + %137 = sext i32 %.045.lcssa.i to i64 + %138 = getelementptr inbounds i32, ptr %4, i64 %137 + %139 = load i32, ptr %138, align 4 + store i32 %139, ptr %135, align 4 + store i32 %136, ptr %138, align 4 br label %.critedge.i .critedge.i: ; preds = %134, %._crit_edge.i @@ -453,64 +455,64 @@ define float @Gia_ObjComputeArrival(ptr nocapture noundef readonly %0, i32 nound br i1 %exitcond149.not, label %.lr.ph, label %.lr.ph65.i, !llvm.loop !7 .lr.ph: ; preds = %.critedge.i, %.critedge.preheader.i - %139 = getelementptr inbounds i8, ptr %93, i64 4 - %140 = getelementptr i8, ptr %0, i64 728 - %.val114 = load ptr, ptr %140, align 8 - %141 = getelementptr i8, ptr %.val114, i64 8 - %.val114.val = load ptr, ptr %141, align 8 + %140 = getelementptr inbounds i8, ptr %93, i64 4 + %141 = getelementptr i8, ptr %0, i64 728 + %.val114 = load ptr, ptr %141, align 8 + %142 = getelementptr i8, ptr %.val114, i64 8 + %.val114.val = load ptr, ptr %142, align 8 %wide.trip.count = zext nneg i32 %94 to i64 - br label %142 - -142: ; preds = %.lr.ph, %142 - %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %142 ] - %.5133 = phi float [ -1.000000e+09, %.lr.ph ], [ %.6, %142 ] - %143 = getelementptr inbounds [32 x i32], ptr %4, i64 0, i64 %indvars.iv - %144 = load i32, ptr %143, align 4 - %145 = sext i32 %144 to i64 - %146 = getelementptr inbounds i32, ptr %139, i64 %145 - %147 = load i32, ptr %146, align 4 - %148 = mul nsw i32 %147, 3 - %149 = sext i32 %148 to i64 - %150 = getelementptr inbounds float, ptr %.val114.val, i64 %149 - %151 = load float, ptr %150, align 4 - %152 = getelementptr inbounds float, ptr %96, i64 %indvars.iv - %153 = load float, ptr %152, align 4 - %154 = fadd float %151, %153 - %155 = fcmp olt float %.5133, %154 - %.6 = select i1 %155, float %154, float %.5133 + br label %143 + +143: ; preds = %.lr.ph, %143 + %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %143 ] + %.5133 = phi float [ -1.000000e+09, %.lr.ph ], [ %.6, %143 ] + %144 = getelementptr inbounds [32 x i32], ptr %4, i64 0, i64 %indvars.iv + %145 = load i32, ptr %144, align 4 + %146 = sext i32 %145 to i64 + %147 = getelementptr inbounds i32, ptr %140, i64 %146 + %148 = load i32, ptr %147, align 4 + %149 = mul nsw i32 %148, 3 + %150 = sext i32 %149 to i64 + %151 = getelementptr inbounds float, ptr %.val114.val, i64 %150 + %152 = load float, ptr %151, align 4 + %153 = getelementptr inbounds float, ptr %96, i64 %indvars.iv + %154 = load float, ptr %153, align 4 + %155 = fadd float %152, %154 + %156 = fcmp olt float %.5133, %155 + %.6 = select i1 %156, float %155, float %.5133 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond151.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond151.not, label %.critedge.thread, label %142, !llvm.loop !11 - -156: ; preds = %.lr.ph136, %156 - %indvars.iv152 = phi i64 [ 0, %.lr.ph136 ], [ %indvars.iv.next153, %156 ] - %.7135 = phi float [ -1.000000e+09, %.lr.ph136 ], [ %.8, %156 ] - %157 = getelementptr inbounds i32, ptr %98, i64 %indvars.iv152 - %158 = load i32, ptr %157, align 4 - %159 = mul nsw i32 %158, 3 - %160 = sext i32 %159 to i64 - %161 = getelementptr inbounds float, ptr %.val112.val, i64 %160 - %162 = load float, ptr %161, align 4 - %163 = getelementptr inbounds float, ptr %96, i64 %indvars.iv152 - %164 = load float, ptr %163, align 4 - %165 = fadd float %162, %164 - %166 = fcmp olt float %.7135, %165 - %.8 = select i1 %166, float %165, float %.7135 + br i1 %exitcond151.not, label %.critedge.thread, label %143, !llvm.loop !11 + +157: ; preds = %.lr.ph136, %157 + %indvars.iv152 = phi i64 [ 0, %.lr.ph136 ], [ %indvars.iv.next153, %157 ] + %.7135 = phi float [ -1.000000e+09, %.lr.ph136 ], [ %.8, %157 ] + %158 = getelementptr inbounds i32, ptr %98, i64 %indvars.iv152 + %159 = load i32, ptr %158, align 4 + %160 = mul nsw i32 %159, 3 + %161 = sext i32 %160 to i64 + %162 = getelementptr inbounds float, ptr %.val112.val, i64 %161 + %163 = load float, ptr %162, align 4 + %164 = getelementptr inbounds float, ptr %96, i64 %indvars.iv152 + %165 = load float, ptr %164, align 4 + %166 = fadd float %163, %165 + %167 = fcmp olt float %.7135, %166 + %.8 = select i1 %167, float %166, float %.7135 %indvars.iv.next153 = add nuw nsw i64 %indvars.iv152, 1 %exitcond156.not = icmp eq i64 %indvars.iv.next153, %wide.trip.count155 - br i1 %exitcond156.not, label %.critedge.thread, label %156, !llvm.loop !12 + br i1 %exitcond156.not, label %.critedge.thread, label %157, !llvm.loop !12 .critedge: ; preds = %101, %.preheader129, %61, %.preheader - %167 = phi i32 [ %94, %.preheader129 ], [ %68, %61 ], [ %41, %.preheader ], [ %94, %101 ] - %.fr = freeze i32 %167 - %168 = icmp eq i32 %.fr, 0 - br i1 %168, label %169, label %.critedge.thread + %168 = phi i32 [ %94, %.preheader129 ], [ %68, %61 ], [ %41, %.preheader ], [ %94, %101 ] + %.fr = freeze i32 %168 + %169 = icmp eq i32 %.fr, 0 + br i1 %169, label %170, label %.critedge.thread -169: ; preds = %.critedge +170: ; preds = %.critedge br label %.critedge.thread -.critedge.thread: ; preds = %142, %156, %77, %46, %169, %.critedge, %23, %12 - %.096 = phi float [ %18, %12 ], [ %32, %23 ], [ 0.000000e+00, %169 ], [ -1.000000e+09, %.critedge ], [ %.1, %46 ], [ %.4, %77 ], [ %.8, %156 ], [ %.6, %142 ] +.critedge.thread: ; preds = %143, %157, %77, %46, %170, %.critedge, %23, %12 + %.096 = phi float [ %18, %12 ], [ %32, %23 ], [ 0.000000e+00, %170 ], [ -1.000000e+09, %.critedge ], [ %.1, %46 ], [ %.4, %77 ], [ %.8, %157 ], [ %.6, %143 ] ret float %.096 } @@ -667,7 +669,7 @@ define float @Gia_ObjPropagateRequired(ptr nocapture noundef readonly %0, i32 no %96 = getelementptr i8, ptr %0, i64 728 %97 = mul nsw i32 %1, 3 %98 = sext i32 %97 to i64 - br label %171 + br label %172 99: ; preds = %94 br i1 %95, label %.lr.ph.i, label %.critedge @@ -724,7 +726,7 @@ define float @Gia_ObjPropagateRequired(ptr nocapture noundef readonly %0, i32 no %119 = sext i32 %118 to i64 %120 = getelementptr inbounds float, ptr %5, i64 %119 %121 = load float, ptr %120, align 4 - %122 = zext nneg i32 %.04559.i to i64 + %122 = sext i32 %.04559.i to i64 %123 = getelementptr inbounds i32, ptr %4, i64 %122 %124 = load i32, ptr %123, align 4 %125 = sext i32 %124 to i64 @@ -746,10 +748,11 @@ define float @Gia_ObjPropagateRequired(ptr nocapture noundef readonly %0, i32 no 132: ; preds = %._crit_edge.i %133 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv74.i %134 = load i32, ptr %133, align 4 - %135 = getelementptr inbounds i32, ptr %4, i64 %130 - %136 = load i32, ptr %135, align 4 - store i32 %136, ptr %133, align 4 - store i32 %134, ptr %135, align 4 + %135 = sext i32 %.045.lcssa.i to i64 + %136 = getelementptr inbounds i32, ptr %4, i64 %135 + %137 = load i32, ptr %136, align 4 + store i32 %137, ptr %133, align 4 + store i32 %134, ptr %136, align 4 br label %.critedge.i .critedge.i: ; preds = %132, %._crit_edge.i @@ -758,102 +761,102 @@ define float @Gia_ObjPropagateRequired(ptr nocapture noundef readonly %0, i32 no br i1 %exitcond143.not, label %.lr.ph, label %.lr.ph65.i, !llvm.loop !7 .lr.ph: ; preds = %.critedge.i, %.critedge.preheader.i - %137 = getelementptr i8, ptr %0, i64 728 - %138 = mul nsw i32 %1, 3 - %139 = sext i32 %138 to i64 - br label %140 - -140: ; preds = %.lr.ph, %162 - %.val96154 = phi ptr [ %.val99, %.lr.ph ], [ %.val96, %162 ] - %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %162 ] - %141 = phi ptr [ %58, %.lr.ph ], [ %167, %162 ] - %.val111 = load ptr, ptr %137, align 8 - %142 = getelementptr i8, ptr %.val111, i64 8 - %.val111.val = load ptr, ptr %142, align 8 - %143 = getelementptr float, ptr %.val111.val, i64 %139 - %144 = getelementptr i8, ptr %143, i64 4 - %145 = load float, ptr %144, align 4 - %146 = getelementptr inbounds float, ptr %61, i64 %indvars.iv - %147 = load float, ptr %146, align 4 - %148 = fsub float %145, %147 - %149 = getelementptr inbounds [32 x i32], ptr %4, i64 0, i64 %indvars.iv - %150 = load i32, ptr %149, align 4 - %151 = getelementptr inbounds i8, ptr %141, i64 4 - %152 = sext i32 %150 to i64 - %153 = getelementptr inbounds i32, ptr %151, i64 %152 - %154 = load i32, ptr %153, align 4 - %155 = mul nsw i32 %154, 3 - %156 = sext i32 %155 to i64 - %157 = getelementptr float, ptr %.val111.val, i64 %156 - %158 = getelementptr i8, ptr %157, i64 4 - %159 = load float, ptr %158, align 4 - %160 = fcmp ogt float %159, %148 - br i1 %160, label %161, label %162 - -161: ; preds = %140 - store float %148, ptr %158, align 4 + %138 = getelementptr i8, ptr %0, i64 728 + %139 = mul nsw i32 %1, 3 + %140 = sext i32 %139 to i64 + br label %141 + +141: ; preds = %.lr.ph, %163 + %.val96154 = phi ptr [ %.val99, %.lr.ph ], [ %.val96, %163 ] + %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %163 ] + %142 = phi ptr [ %58, %.lr.ph ], [ %168, %163 ] + %.val111 = load ptr, ptr %138, align 8 + %143 = getelementptr i8, ptr %.val111, i64 8 + %.val111.val = load ptr, ptr %143, align 8 + %144 = getelementptr float, ptr %.val111.val, i64 %140 + %145 = getelementptr i8, ptr %144, i64 4 + %146 = load float, ptr %145, align 4 + %147 = getelementptr inbounds float, ptr %61, i64 %indvars.iv + %148 = load float, ptr %147, align 4 + %149 = fsub float %146, %148 + %150 = getelementptr inbounds [32 x i32], ptr %4, i64 0, i64 %indvars.iv + %151 = load i32, ptr %150, align 4 + %152 = getelementptr inbounds i8, ptr %142, i64 4 + %153 = sext i32 %151 to i64 + %154 = getelementptr inbounds i32, ptr %152, i64 %153 + %155 = load i32, ptr %154, align 4 + %156 = mul nsw i32 %155, 3 + %157 = sext i32 %156 to i64 + %158 = getelementptr float, ptr %.val111.val, i64 %157 + %159 = getelementptr i8, ptr %158, i64 4 + %160 = load float, ptr %159, align 4 + %161 = fcmp ogt float %160, %149 + br i1 %161, label %162, label %163 + +162: ; preds = %141 + store float %149, ptr %159, align 4 %.val96.pre = load ptr, ptr %52, align 8 - br label %162 + br label %163 -162: ; preds = %140, %161 - %.val96 = phi ptr [ %.val96154, %140 ], [ %.val96.pre, %161 ] +163: ; preds = %141, %162 + %.val96 = phi ptr [ %.val96154, %141 ], [ %.val96.pre, %162 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %163 = getelementptr i8, ptr %.val96, i64 8 - %.val96.val = load ptr, ptr %163, align 8 - %164 = getelementptr inbounds i32, ptr %.val96.val, i64 %54 - %165 = load i32, ptr %164, align 4 - %166 = sext i32 %165 to i64 - %167 = getelementptr inbounds i32, ptr %.val96.val, i64 %166 - %168 = load i32, ptr %167, align 4 - %169 = sext i32 %168 to i64 - %170 = icmp slt i64 %indvars.iv.next, %169 - br i1 %170, label %140, label %.critedge, !llvm.loop !15 - -171: ; preds = %.lr.ph129, %190 - %.val156 = phi ptr [ %.val99, %.lr.ph129 ], [ %.val, %190 ] - %indvars.iv145 = phi i64 [ 0, %.lr.ph129 ], [ %indvars.iv.next146, %190 ] - %172 = phi ptr [ %58, %.lr.ph129 ], [ %195, %190 ] - %173 = getelementptr inbounds i8, ptr %172, i64 4 - %174 = getelementptr inbounds i32, ptr %173, i64 %indvars.iv145 - %175 = load i32, ptr %174, align 4 + %164 = getelementptr i8, ptr %.val96, i64 8 + %.val96.val = load ptr, ptr %164, align 8 + %165 = getelementptr inbounds i32, ptr %.val96.val, i64 %54 + %166 = load i32, ptr %165, align 4 + %167 = sext i32 %166 to i64 + %168 = getelementptr inbounds i32, ptr %.val96.val, i64 %167 + %169 = load i32, ptr %168, align 4 + %170 = sext i32 %169 to i64 + %171 = icmp slt i64 %indvars.iv.next, %170 + br i1 %171, label %141, label %.critedge, !llvm.loop !15 + +172: ; preds = %.lr.ph129, %191 + %.val156 = phi ptr [ %.val99, %.lr.ph129 ], [ %.val, %191 ] + %indvars.iv145 = phi i64 [ 0, %.lr.ph129 ], [ %indvars.iv.next146, %191 ] + %173 = phi ptr [ %58, %.lr.ph129 ], [ %196, %191 ] + %174 = getelementptr inbounds i8, ptr %173, i64 4 + %175 = getelementptr inbounds i32, ptr %174, i64 %indvars.iv145 + %176 = load i32, ptr %175, align 4 %.val113 = load ptr, ptr %96, align 8 - %176 = getelementptr i8, ptr %.val113, i64 8 - %.val113.val = load ptr, ptr %176, align 8 - %177 = getelementptr float, ptr %.val113.val, i64 %98 - %178 = getelementptr i8, ptr %177, i64 4 - %179 = load float, ptr %178, align 4 - %180 = getelementptr inbounds float, ptr %61, i64 %indvars.iv145 - %181 = load float, ptr %180, align 4 - %182 = fsub float %179, %181 - %183 = mul nsw i32 %175, 3 - %184 = sext i32 %183 to i64 - %185 = getelementptr float, ptr %.val113.val, i64 %184 - %186 = getelementptr i8, ptr %185, i64 4 - %187 = load float, ptr %186, align 4 - %188 = fcmp ogt float %187, %182 - br i1 %188, label %189, label %190 - -189: ; preds = %171 - store float %182, ptr %186, align 4 + %177 = getelementptr i8, ptr %.val113, i64 8 + %.val113.val = load ptr, ptr %177, align 8 + %178 = getelementptr float, ptr %.val113.val, i64 %98 + %179 = getelementptr i8, ptr %178, i64 4 + %180 = load float, ptr %179, align 4 + %181 = getelementptr inbounds float, ptr %61, i64 %indvars.iv145 + %182 = load float, ptr %181, align 4 + %183 = fsub float %180, %182 + %184 = mul nsw i32 %176, 3 + %185 = sext i32 %184 to i64 + %186 = getelementptr float, ptr %.val113.val, i64 %185 + %187 = getelementptr i8, ptr %186, i64 4 + %188 = load float, ptr %187, align 4 + %189 = fcmp ogt float %188, %183 + br i1 %189, label %190, label %191 + +190: ; preds = %172 + store float %183, ptr %187, align 4 %.val.pre = load ptr, ptr %52, align 8 - br label %190 + br label %191 -190: ; preds = %171, %189 - %.val = phi ptr [ %.val156, %171 ], [ %.val.pre, %189 ] +191: ; preds = %172, %190 + %.val = phi ptr [ %.val156, %172 ], [ %.val.pre, %190 ] %indvars.iv.next146 = add nuw nsw i64 %indvars.iv145, 1 - %191 = getelementptr i8, ptr %.val, i64 8 - %.val.val = load ptr, ptr %191, align 8 - %192 = getelementptr inbounds i32, ptr %.val.val, i64 %54 - %193 = load i32, ptr %192, align 4 - %194 = sext i32 %193 to i64 - %195 = getelementptr inbounds i32, ptr %.val.val, i64 %194 - %196 = load i32, ptr %195, align 4 - %197 = sext i32 %196 to i64 - %198 = icmp slt i64 %indvars.iv.next146, %197 - br i1 %198, label %171, label %.critedge, !llvm.loop !16 - -.critedge: ; preds = %162, %190, %85, %39, %99, %.preheader, %62, %9 - %.0 = phi float [ %17, %9 ], [ %71, %62 ], [ 0.000000e+00, %.preheader ], [ 0.000000e+00, %99 ], [ %17, %39 ], [ %71, %85 ], [ %182, %190 ], [ %148, %162 ] + %192 = getelementptr i8, ptr %.val, i64 8 + %.val.val = load ptr, ptr %192, align 8 + %193 = getelementptr inbounds i32, ptr %.val.val, i64 %54 + %194 = load i32, ptr %193, align 4 + %195 = sext i32 %194 to i64 + %196 = getelementptr inbounds i32, ptr %.val.val, i64 %195 + %197 = load i32, ptr %196, align 4 + %198 = sext i32 %197 to i64 + %199 = icmp slt i64 %indvars.iv.next146, %198 + br i1 %199, label %172, label %.critedge, !llvm.loop !16 + +.critedge: ; preds = %163, %191, %85, %39, %99, %.preheader, %62, %9 + %.0 = phi float [ %17, %9 ], [ %71, %62 ], [ 0.000000e+00, %.preheader ], [ 0.000000e+00, %99 ], [ %17, %39 ], [ %71, %85 ], [ %183, %191 ], [ %149, %163 ] ret float %.0 } @@ -1695,7 +1698,7 @@ define i32 @Gia_LutDelayTraceTCEdges(ptr nocapture noundef readonly %0, i32 noun %102 = sext i32 %101 to i64 %103 = getelementptr inbounds float, ptr %5, i64 %102 %104 = load float, ptr %103, align 4 - %105 = zext nneg i32 %.04559.i to i64 + %105 = sext i32 %.04559.i to i64 %106 = getelementptr inbounds i32, ptr %4, i64 %105 %107 = load i32, ptr %106, align 4 %108 = sext i32 %107 to i64 @@ -1717,10 +1720,11 @@ define i32 @Gia_LutDelayTraceTCEdges(ptr nocapture noundef readonly %0, i32 noun 115: ; preds = %._crit_edge.i %116 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv74.i %117 = load i32, ptr %116, align 4 - %118 = getelementptr inbounds i32, ptr %4, i64 %113 - %119 = load i32, ptr %118, align 4 - store i32 %119, ptr %116, align 4 - store i32 %117, ptr %118, align 4 + %118 = sext i32 %.045.lcssa.i to i64 + %119 = getelementptr inbounds i32, ptr %4, i64 %118 + %120 = load i32, ptr %119, align 4 + store i32 %120, ptr %116, align 4 + store i32 %117, ptr %119, align 4 br label %.critedge.i .critedge.i: ; preds = %115, %._crit_edge.i @@ -1729,36 +1733,36 @@ define i32 @Gia_LutDelayTraceTCEdges(ptr nocapture noundef readonly %0, i32 noun br i1 %exitcond92.not, label %.lr.ph, label %.lr.ph65.i, !llvm.loop !7 .lr.ph: ; preds = %.critedge.i, %.critedge.preheader.i - %120 = getelementptr inbounds i8, ptr %81, i64 4 + %121 = getelementptr inbounds i8, ptr %81, i64 4 %wide.trip.count = zext nneg i32 %82 to i64 - br label %121 + br label %122 -121: ; preds = %.lr.ph, %121 - %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %121 ] - %.580 = phi i32 [ 0, %.lr.ph ], [ %.6, %121 ] - %122 = getelementptr inbounds [32 x i32], ptr %4, i64 0, i64 %indvars.iv - %123 = load i32, ptr %122, align 4 - %124 = sext i32 %123 to i64 - %125 = getelementptr inbounds i32, ptr %120, i64 %124 - %126 = load i32, ptr %125, align 4 - %127 = mul nsw i32 %126, 3 - %128 = sext i32 %127 to i64 - %129 = getelementptr inbounds float, ptr %.val76.val, i64 %128 - %130 = load float, ptr %129, align 4 - %131 = getelementptr inbounds float, ptr %84, i64 %indvars.iv - %132 = load float, ptr %131, align 4 - %133 = fadd float %130, %132 - %134 = fadd float %2, %133 - %135 = fcmp olt float %14, %134 - %136 = shl nuw i32 1, %123 - %137 = select i1 %135, i32 %136, i32 0 - %.6 = or i32 %137, %.580 +122: ; preds = %.lr.ph, %122 + %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %122 ] + %.580 = phi i32 [ 0, %.lr.ph ], [ %.6, %122 ] + %123 = getelementptr inbounds [32 x i32], ptr %4, i64 0, i64 %indvars.iv + %124 = load i32, ptr %123, align 4 + %125 = sext i32 %124 to i64 + %126 = getelementptr inbounds i32, ptr %121, i64 %125 + %127 = load i32, ptr %126, align 4 + %128 = mul nsw i32 %127, 3 + %129 = sext i32 %128 to i64 + %130 = getelementptr inbounds float, ptr %.val76.val, i64 %129 + %131 = load float, ptr %130, align 4 + %132 = getelementptr inbounds float, ptr %84, i64 %indvars.iv + %133 = load float, ptr %132, align 4 + %134 = fadd float %131, %133 + %135 = fadd float %2, %134 + %136 = fcmp olt float %14, %135 + %137 = shl nuw i32 1, %124 + %138 = select i1 %136, i32 %137, i32 0 + %.6 = or i32 %138, %.580 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond94.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond94.not, label %.critedge, label %121, !llvm.loop !27 + br i1 %exitcond94.not, label %.critedge, label %122, !llvm.loop !27 -.critedge: ; preds = %121, %60, %28, %73, %45, %.preheader - %.263 = phi i32 [ 0, %.preheader ], [ 0, %45 ], [ 0, %73 ], [ %.162, %28 ], [ %.4, %60 ], [ %.6, %121 ] +.critedge: ; preds = %122, %60, %28, %73, %45, %.preheader + %.263 = phi i32 [ 0, %.preheader ], [ 0, %45 ], [ 0, %73 ], [ %.162, %28 ], [ %.4, %60 ], [ %.6, %122 ] ret i32 %.263 } diff --git a/bench/abc/optimized/nwkTiming.c.ll b/bench/abc/optimized/nwkTiming.c.ll index 5d6409e26e6..3f066894960 100644 --- a/bench/abc/optimized/nwkTiming.c.ll +++ b/bench/abc/optimized/nwkTiming.c.ll @@ -98,13 +98,13 @@ define void @Nwk_ManDelayTraceSortPins(ptr nocapture noundef readonly %0, ptr no %21 = icmp sgt i32 %.val4351, 1 br i1 %21, label %.lr.ph54, label %.preheader -.preheader: ; preds = %45, %3, %.critedge +.preheader: ; preds = %46, %3, %.critedge ret void -.lr.ph54: ; preds = %.critedge, %45 - %.val4369 = phi i32 [ %.val43, %45 ], [ %.val4351, %.critedge ] - %indvars.iv63 = phi i64 [ %indvars.iv.next64, %45 ], [ 0, %.critedge ] - %indvars.iv58 = phi i64 [ %indvars.iv.next59, %45 ], [ 1, %.critedge ] +.lr.ph54: ; preds = %.critedge, %46 + %.val4369 = phi i32 [ %.val43, %46 ], [ %.val4351, %.critedge ] + %indvars.iv63 = phi i64 [ %indvars.iv.next64, %46 ], [ 0, %.critedge ] + %indvars.iv58 = phi i64 [ %indvars.iv.next59, %46 ], [ 1, %.critedge ] %indvars.iv.next64 = add nuw nsw i64 %indvars.iv63, 1 %22 = sext i32 %.val4369 to i64 %23 = icmp slt i64 %indvars.iv.next64, %22 @@ -123,7 +123,7 @@ define void @Nwk_ManDelayTraceSortPins(ptr nocapture noundef readonly %0, ptr no %27 = sext i32 %26 to i64 %28 = getelementptr inbounds float, ptr %2, i64 %27 %29 = load float, ptr %28, align 4 - %30 = zext nneg i32 %.03949 to i64 + %30 = sext i32 %.03949 to i64 %31 = getelementptr inbounds i32, ptr %1, i64 %30 %32 = load i32, ptr %31, align 4 %33 = sext i32 %32 to i64 @@ -140,25 +140,26 @@ define void @Nwk_ManDelayTraceSortPins(ptr nocapture noundef readonly %0, ptr no %.039.lcssa = phi i32 [ %24, %.lr.ph54 ], [ %.140, %.lr.ph50 ] %38 = zext i32 %.039.lcssa to i64 %39 = icmp eq i64 %indvars.iv63, %38 - br i1 %39, label %45, label %40 + br i1 %39, label %46, label %40 40: ; preds = %._crit_edge %41 = getelementptr inbounds i32, ptr %1, i64 %indvars.iv63 %42 = load i32, ptr %41, align 4 - %43 = getelementptr inbounds i32, ptr %1, i64 %38 - %44 = load i32, ptr %43, align 4 - store i32 %44, ptr %41, align 4 - store i32 %42, ptr %43, align 4 + %43 = sext i32 %.039.lcssa to i64 + %44 = getelementptr inbounds i32, ptr %1, i64 %43 + %45 = load i32, ptr %44, align 4 + store i32 %45, ptr %41, align 4 + store i32 %42, ptr %44, align 4 %.val43.pre = load i32, ptr %5, align 4 - br label %45 + br label %46 -45: ; preds = %._crit_edge, %40 +46: ; preds = %._crit_edge, %40 %.val43 = phi i32 [ %.val4369, %._crit_edge ], [ %.val43.pre, %40 ] - %46 = add nsw i32 %.val43, -1 - %47 = sext i32 %46 to i64 - %48 = icmp slt i64 %indvars.iv.next64, %47 + %47 = add nsw i32 %.val43, -1 + %48 = sext i32 %47 to i64 + %49 = icmp slt i64 %indvars.iv.next64, %48 %indvars.iv.next59 = add nuw nsw i64 %indvars.iv58, 1 - br i1 %48, label %.lr.ph54, label %.preheader, !llvm.loop !8 + br i1 %49, label %.lr.ph54, label %.preheader, !llvm.loop !8 } ; Function Attrs: nofree norecurse nosync nounwind memory(read, inaccessiblemem: none) uwtable @@ -315,7 +316,7 @@ define float @Nwk_NodeComputeArrival(ptr nocapture noundef readonly %0, i32 noun %53 = getelementptr inbounds i8, ptr %0, i64 72 %54 = load ptr, ptr %53, align 8 %wide.trip.count138 = zext nneg i32 %.val92 to i64 - br label %107 + br label %108 55: ; preds = %51 %56 = getelementptr i8, ptr %0, i64 72 @@ -356,9 +357,9 @@ define float @Nwk_NodeComputeArrival(ptr nocapture noundef readonly %0, i32 noun %smax = zext nneg i32 %68 to i64 br label %.lr.ph54.i -.lr.ph54.i: ; preds = %.lr.ph54.i.preheader, %91 - %indvars.iv63.i = phi i64 [ %indvars.iv.next64.i, %91 ], [ 0, %.lr.ph54.i.preheader ] - %indvars.iv58.i = phi i64 [ %indvars.iv.next59.i, %91 ], [ 1, %.lr.ph54.i.preheader ] +.lr.ph54.i: ; preds = %.lr.ph54.i.preheader, %92 + %indvars.iv63.i = phi i64 [ %indvars.iv.next64.i, %92 ], [ 0, %.lr.ph54.i.preheader ] + %indvars.iv58.i = phi i64 [ %indvars.iv.next59.i, %92 ], [ 1, %.lr.ph54.i.preheader ] %indvars.iv.next64.i = add nuw nsw i64 %indvars.iv63.i, 1 %69 = icmp samesign ult i64 %indvars.iv.next64.i, %66 %70 = trunc nuw nsw i64 %indvars.iv63.i to i32 @@ -372,7 +373,7 @@ define float @Nwk_NodeComputeArrival(ptr nocapture noundef readonly %0, i32 noun %73 = sext i32 %72 to i64 %74 = getelementptr inbounds float, ptr %4, i64 %73 %75 = load float, ptr %74, align 4 - %76 = zext nneg i32 %.03949.i to i64 + %76 = sext i32 %.03949.i to i64 %77 = getelementptr inbounds i32, ptr %3, i64 %76 %78 = load i32, ptr %77, align 4 %79 = sext i32 %78 to i64 @@ -389,83 +390,84 @@ define float @Nwk_NodeComputeArrival(ptr nocapture noundef readonly %0, i32 noun %.039.lcssa.i = phi i32 [ %70, %.lr.ph54.i ], [ %.140.i, %.lr.ph50.i ] %84 = zext i32 %.039.lcssa.i to i64 %85 = icmp eq i64 %indvars.iv63.i, %84 - br i1 %85, label %91, label %86 + br i1 %85, label %92, label %86 86: ; preds = %._crit_edge.i %87 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv63.i %88 = load i32, ptr %87, align 4 - %89 = getelementptr inbounds i32, ptr %3, i64 %84 - %90 = load i32, ptr %89, align 4 - store i32 %90, ptr %87, align 4 - store i32 %88, ptr %89, align 4 - br label %91 + %89 = sext i32 %.039.lcssa.i to i64 + %90 = getelementptr inbounds i32, ptr %3, i64 %89 + %91 = load i32, ptr %90, align 4 + store i32 %91, ptr %87, align 4 + store i32 %88, ptr %90, align 4 + br label %92 -91: ; preds = %86, %._crit_edge.i +92: ; preds = %86, %._crit_edge.i %indvars.iv.next59.i = add nuw nsw i64 %indvars.iv58.i, 1 %exitcond132.not = icmp eq i64 %indvars.iv.next64.i, %smax br i1 %exitcond132.not, label %.lr.ph, label %.lr.ph54.i, !llvm.loop !8 -.lr.ph: ; preds = %91, %.critedge.i - %92 = load ptr, ptr %56, align 8 +.lr.ph: ; preds = %92, %.critedge.i + %93 = load ptr, ptr %56, align 8 %wide.trip.count = zext nneg i32 %.val92 to i64 - br label %93 + br label %94 -93: ; preds = %.lr.ph, %96 - %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %96 ] - %.5104 = phi float [ -1.000000e+09, %.lr.ph ], [ %.6, %96 ] - %94 = getelementptr inbounds ptr, ptr %92, i64 %indvars.iv - %95 = load ptr, ptr %94, align 8 - %.not79 = icmp eq ptr %95, null - br i1 %.not79, label %.critedge.thread, label %96 - -96: ; preds = %93 - %97 = getelementptr inbounds [32 x i32], ptr %3, i64 0, i64 %indvars.iv - %98 = load i32, ptr %97, align 4 - %99 = sext i32 %98 to i64 - %100 = getelementptr inbounds ptr, ptr %92, i64 %99 - %101 = load ptr, ptr %100, align 8 - %102 = getelementptr i8, ptr %101, i64 48 - %.val83 = load float, ptr %102, align 8 - %103 = getelementptr inbounds float, ptr %38, i64 %indvars.iv - %104 = load float, ptr %103, align 4 - %105 = fadd float %.val83, %104 - %106 = fcmp olt float %.5104, %105 - %.6 = select i1 %106, float %105, float %.5104 +94: ; preds = %.lr.ph, %97 + %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %97 ] + %.5104 = phi float [ -1.000000e+09, %.lr.ph ], [ %.6, %97 ] + %95 = getelementptr inbounds ptr, ptr %93, i64 %indvars.iv + %96 = load ptr, ptr %95, align 8 + %.not79 = icmp eq ptr %96, null + br i1 %.not79, label %.critedge.thread, label %97 + +97: ; preds = %94 + %98 = getelementptr inbounds [32 x i32], ptr %3, i64 0, i64 %indvars.iv + %99 = load i32, ptr %98, align 4 + %100 = sext i32 %99 to i64 + %101 = getelementptr inbounds ptr, ptr %93, i64 %100 + %102 = load ptr, ptr %101, align 8 + %103 = getelementptr i8, ptr %102, i64 48 + %.val83 = load float, ptr %103, align 8 + %104 = getelementptr inbounds float, ptr %38, i64 %indvars.iv + %105 = load float, ptr %104, align 4 + %106 = fadd float %.val83, %105 + %107 = fcmp olt float %.5104, %106 + %.6 = select i1 %107, float %106, float %.5104 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond134.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond134.not, label %.critedge.thread, label %93, !llvm.loop !12 - -107: ; preds = %.lr.ph110, %110 - %indvars.iv135 = phi i64 [ 0, %.lr.ph110 ], [ %indvars.iv.next136, %110 ] - %.7108 = phi float [ -1.000000e+09, %.lr.ph110 ], [ %.8, %110 ] - %108 = getelementptr inbounds ptr, ptr %54, i64 %indvars.iv135 - %109 = load ptr, ptr %108, align 8 - %.not78 = icmp eq ptr %109, null - br i1 %.not78, label %.critedge.thread, label %110 - -110: ; preds = %107 - %111 = getelementptr i8, ptr %109, i64 48 - %.val81 = load float, ptr %111, align 8 - %112 = getelementptr inbounds float, ptr %38, i64 %indvars.iv135 - %113 = load float, ptr %112, align 4 - %114 = fadd float %.val81, %113 - %115 = fcmp olt float %.7108, %114 - %.8 = select i1 %115, float %114, float %.7108 + br i1 %exitcond134.not, label %.critedge.thread, label %94, !llvm.loop !12 + +108: ; preds = %.lr.ph110, %111 + %indvars.iv135 = phi i64 [ 0, %.lr.ph110 ], [ %indvars.iv.next136, %111 ] + %.7108 = phi float [ -1.000000e+09, %.lr.ph110 ], [ %.8, %111 ] + %109 = getelementptr inbounds ptr, ptr %54, i64 %indvars.iv135 + %110 = load ptr, ptr %109, align 8 + %.not78 = icmp eq ptr %110, null + br i1 %.not78, label %.critedge.thread, label %111 + +111: ; preds = %108 + %112 = getelementptr i8, ptr %110, i64 48 + %.val81 = load float, ptr %112, align 8 + %113 = getelementptr inbounds float, ptr %38, i64 %indvars.iv135 + %114 = load float, ptr %113, align 4 + %115 = fadd float %.val81, %114 + %116 = fcmp olt float %.7108, %115 + %.8 = select i1 %116, float %115, float %.7108 %indvars.iv.next136 = add nuw nsw i64 %indvars.iv135, 1 %exitcond139.not = icmp eq i64 %indvars.iv.next136, %wide.trip.count138 - br i1 %exitcond139.not, label %.critedge.thread, label %107, !llvm.loop !13 + br i1 %exitcond139.not, label %.critedge.thread, label %108, !llvm.loop !13 .critedge: ; preds = %55, %.preheader101, %39, %.preheader %.val90 = phi i32 [ %18, %.preheader ], [ %.val92, %39 ], [ %.val92, %.preheader101 ], [ %.val92, %55 ] %.val90.fr = freeze i32 %.val90 - %116 = icmp eq i32 %.val90.fr, 0 - br i1 %116, label %117, label %.critedge.thread + %117 = icmp eq i32 %.val90.fr, 0 + br i1 %117, label %118, label %.critedge.thread -117: ; preds = %.critedge +118: ; preds = %.critedge br label %.critedge.thread -.critedge.thread: ; preds = %96, %93, %110, %107, %43, %46, %25, %22, %117, %.critedge, %12, %10 - %.069 = phi float [ %.val89, %10 ], [ %.val88, %12 ], [ 0.000000e+00, %117 ], [ -1.000000e+09, %.critedge ], [ %.065120, %22 ], [ %.166, %25 ], [ %.4, %46 ], [ %.368114, %43 ], [ %.7108, %107 ], [ %.8, %110 ], [ %.5104, %93 ], [ %.6, %96 ] +.critedge.thread: ; preds = %97, %94, %111, %108, %43, %46, %25, %22, %118, %.critedge, %12, %10 + %.069 = phi float [ %.val89, %10 ], [ %.val88, %12 ], [ 0.000000e+00, %118 ], [ -1.000000e+09, %.critedge ], [ %.065120, %22 ], [ %.166, %25 ], [ %.4, %46 ], [ %.368114, %43 ], [ %.7108, %108 ], [ %.8, %111 ], [ %.5104, %94 ], [ %.6, %97 ] ret float %.069 } @@ -618,11 +620,11 @@ define float @Nwk_NodeComputeRequired(ptr noundef %0, i32 noundef %1) local_unna .lr.ph138: ; preds = %.preheader127 %72 = getelementptr inbounds i8, ptr %0, i64 60 %73 = getelementptr inbounds i8, ptr %7, i64 148 - br label %134 + br label %135 -74: ; preds = %.lr.ph, %129 - %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %129 ] - %.5132 = phi float [ 1.000000e+09, %.lr.ph ], [ %.6, %129 ] +74: ; preds = %.lr.ph, %130 + %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %130 ] + %.5132 = phi float [ 1.000000e+09, %.lr.ph ], [ %.6, %130 ] %gep = getelementptr ptr, ptr %invariant.gep, i64 %indvars.iv %75 = load ptr, ptr %gep, align 8 %.not93 = icmp eq ptr %75, null @@ -669,9 +671,9 @@ define float @Nwk_NodeComputeRequired(ptr noundef %0, i32 noundef %1) local_unna %smax = zext nneg i32 %90 to i64 br label %.lr.ph54.i -.lr.ph54.i: ; preds = %.lr.ph54.i.preheader, %113 - %indvars.iv63.i = phi i64 [ %indvars.iv.next64.i, %113 ], [ 0, %.lr.ph54.i.preheader ] - %indvars.iv58.i = phi i64 [ %indvars.iv.next59.i, %113 ], [ 1, %.lr.ph54.i.preheader ] +.lr.ph54.i: ; preds = %.lr.ph54.i.preheader, %114 + %indvars.iv63.i = phi i64 [ %indvars.iv.next64.i, %114 ], [ 0, %.lr.ph54.i.preheader ] + %indvars.iv58.i = phi i64 [ %indvars.iv.next59.i, %114 ], [ 1, %.lr.ph54.i.preheader ] %indvars.iv.next64.i = add nuw nsw i64 %indvars.iv63.i, 1 %91 = icmp samesign ult i64 %indvars.iv.next64.i, %81 %92 = trunc nuw nsw i64 %indvars.iv63.i to i32 @@ -685,7 +687,7 @@ define float @Nwk_NodeComputeRequired(ptr noundef %0, i32 noundef %1) local_unna %95 = sext i32 %94 to i64 %96 = getelementptr inbounds float, ptr %4, i64 %95 %97 = load float, ptr %96, align 4 - %98 = zext nneg i32 %.03949.i to i64 + %98 = sext i32 %.03949.i to i64 %99 = getelementptr inbounds i32, ptr %3, i64 %98 %100 = load i32, ptr %99, align 4 %101 = sext i32 %100 to i64 @@ -702,115 +704,116 @@ define float @Nwk_NodeComputeRequired(ptr noundef %0, i32 noundef %1) local_unna %.039.lcssa.i = phi i32 [ %92, %.lr.ph54.i ], [ %.140.i, %.lr.ph50.i ] %106 = zext i32 %.039.lcssa.i to i64 %107 = icmp eq i64 %indvars.iv63.i, %106 - br i1 %107, label %113, label %108 + br i1 %107, label %114, label %108 108: ; preds = %._crit_edge.i %109 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv63.i %110 = load i32, ptr %109, align 4 - %111 = getelementptr inbounds i32, ptr %3, i64 %106 - %112 = load i32, ptr %111, align 4 - store i32 %112, ptr %109, align 4 - store i32 %110, ptr %111, align 4 - br label %113 - -113: ; preds = %108, %._crit_edge.i + %111 = sext i32 %.039.lcssa.i to i64 + %112 = getelementptr inbounds i32, ptr %3, i64 %111 + %113 = load i32, ptr %112, align 4 + store i32 %113, ptr %109, align 4 + store i32 %110, ptr %112, align 4 + br label %114 + +114: ; preds = %108, %._crit_edge.i %indvars.iv.next59.i = add nuw nsw i64 %indvars.iv58.i, 1 %exitcond161.not = icmp eq i64 %indvars.iv.next64.i, %smax br i1 %exitcond161.not, label %.lr.ph.i115.preheader, label %.lr.ph54.i, !llvm.loop !8 -.lr.ph.i115.preheader: ; preds = %113, %.critedge.i +.lr.ph.i115.preheader: ; preds = %114, %.critedge.i br label %.lr.ph.i115 -.lr.ph.i115: ; preds = %.lr.ph.i115.preheader, %120 - %indvars.iv.i117 = phi i64 [ %indvars.iv.next.i118, %120 ], [ 0, %.lr.ph.i115.preheader ] - %114 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i117 - %115 = load i32, ptr %114, align 4 - %116 = sext i32 %115 to i64 - %117 = getelementptr inbounds ptr, ptr %80, i64 %116 - %118 = load ptr, ptr %117, align 8 - %119 = icmp eq ptr %118, %0 - br i1 %119, label %._crit_edge.loopexit.split.loop.exit14.i, label %120 - -120: ; preds = %.lr.ph.i115 +.lr.ph.i115: ; preds = %.lr.ph.i115.preheader, %121 + %indvars.iv.i117 = phi i64 [ %indvars.iv.next.i118, %121 ], [ 0, %.lr.ph.i115.preheader ] + %115 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv.i117 + %116 = load i32, ptr %115, align 4 + %117 = sext i32 %116 to i64 + %118 = getelementptr inbounds ptr, ptr %80, i64 %117 + %119 = load ptr, ptr %118, align 8 + %120 = icmp eq ptr %119, %0 + br i1 %120, label %._crit_edge.loopexit.split.loop.exit14.i, label %121 + +121: ; preds = %.lr.ph.i115 %indvars.iv.next.i118 = add nuw nsw i64 %indvars.iv.i117, 1 %exitcond.not.i119 = icmp eq i64 %indvars.iv.next.i118, %81 br i1 %exitcond.not.i119, label %Nwk_ManWhereIsPin.exit, label %.lr.ph.i115, !llvm.loop !9 ._crit_edge.loopexit.split.loop.exit14.i: ; preds = %.lr.ph.i115 %sext = shl i64 %indvars.iv.i117, 32 - %121 = ashr exact i64 %sext, 32 + %122 = ashr exact i64 %sext, 32 br label %Nwk_ManWhereIsPin.exit -Nwk_ManWhereIsPin.exit: ; preds = %120, %76, %._crit_edge.loopexit.split.loop.exit14.i - %.08.i = phi i64 [ %121, %._crit_edge.loopexit.split.loop.exit14.i ], [ -1, %76 ], [ -1, %120 ] - %122 = getelementptr i8, ptr %75, i64 32 - %.val100 = load i32, ptr %122, align 8 - %123 = and i32 %.val100, 7 - %.not121 = icmp eq i32 %123, 2 - br i1 %.not121, label %129, label %124 - -124: ; preds = %Nwk_ManWhereIsPin.exit - %125 = sext i32 %.val97 to i64 - %126 = getelementptr inbounds [33 x [33 x float]], ptr %66, i64 0, i64 %125 - %127 = getelementptr inbounds float, ptr %126, i64 %.08.i - %128 = load float, ptr %127, align 4 - br label %129 - -129: ; preds = %Nwk_ManWhereIsPin.exit, %124 - %130 = phi float [ %128, %124 ], [ 0.000000e+00, %Nwk_ManWhereIsPin.exit ] - %131 = getelementptr i8, ptr %75, i64 52 - %.val109 = load float, ptr %131, align 4 - %132 = fsub float %.val109, %130 - %133 = fcmp ogt float %.5132, %132 - %.6 = select i1 %133, float %132, float %.5132 +Nwk_ManWhereIsPin.exit: ; preds = %121, %76, %._crit_edge.loopexit.split.loop.exit14.i + %.08.i = phi i64 [ %122, %._crit_edge.loopexit.split.loop.exit14.i ], [ -1, %76 ], [ -1, %121 ] + %123 = getelementptr i8, ptr %75, i64 32 + %.val100 = load i32, ptr %123, align 8 + %124 = and i32 %.val100, 7 + %.not121 = icmp eq i32 %124, 2 + br i1 %.not121, label %130, label %125 + +125: ; preds = %Nwk_ManWhereIsPin.exit + %126 = sext i32 %.val97 to i64 + %127 = getelementptr inbounds [33 x [33 x float]], ptr %66, i64 0, i64 %126 + %128 = getelementptr inbounds float, ptr %127, i64 %.08.i + %129 = load float, ptr %128, align 4 + br label %130 + +130: ; preds = %Nwk_ManWhereIsPin.exit, %125 + %131 = phi float [ %129, %125 ], [ 0.000000e+00, %Nwk_ManWhereIsPin.exit ] + %132 = getelementptr i8, ptr %75, i64 52 + %.val109 = load float, ptr %132, align 4 + %133 = fsub float %.val109, %131 + %134 = fcmp ogt float %.5132, %133 + %.6 = select i1 %134, float %133, float %.5132 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond163.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond163.not, label %.critedge, label %74, !llvm.loop !16 -134: ; preds = %.lr.ph138, %152 - %.3137 = phi i32 [ 0, %.lr.ph138 ], [ %157, %152 ] - %.7136 = phi float [ 1.000000e+09, %.lr.ph138 ], [ %.8, %152 ] - %135 = load ptr, ptr %68, align 8 - %136 = load i32, ptr %72, align 4 - %137 = add nsw i32 %136, %.3137 - %138 = sext i32 %137 to i64 - %139 = getelementptr inbounds ptr, ptr %135, i64 %138 - %140 = load ptr, ptr %139, align 8 - %.not91 = icmp eq ptr %140, null - br i1 %.not91, label %.critedge, label %141 - -141: ; preds = %134 - %142 = getelementptr i8, ptr %140, i64 60 - %.val = load i32, ptr %142, align 4 - %143 = tail call i32 @Nwk_ObjFindFanin(ptr noundef nonnull %140, ptr noundef nonnull %0) #11 - %144 = getelementptr i8, ptr %140, i64 32 - %.val99 = load i32, ptr %144, align 8 - %145 = and i32 %.val99, 7 - %.not122 = icmp eq i32 %145, 2 - br i1 %.not122, label %152, label %146 - -146: ; preds = %141 - %147 = sext i32 %.val to i64 - %148 = getelementptr inbounds [33 x [33 x float]], ptr %73, i64 0, i64 %147 - %149 = sext i32 %143 to i64 - %150 = getelementptr inbounds float, ptr %148, i64 %149 - %151 = load float, ptr %150, align 4 - br label %152 - -152: ; preds = %141, %146 - %153 = phi float [ %151, %146 ], [ 0.000000e+00, %141 ] - %154 = getelementptr i8, ptr %140, i64 52 - %.val111 = load float, ptr %154, align 4 - %155 = fsub float %.val111, %153 - %156 = fcmp ogt float %.7136, %155 - %.8 = select i1 %156, float %155, float %.7136 - %157 = add nuw nsw i32 %.3137, 1 - %158 = load i32, ptr %69, align 8 - %159 = icmp slt i32 %157, %158 - br i1 %159, label %134, label %.critedge, !llvm.loop !17 - -.critedge: ; preds = %74, %129, %134, %152, %53, %43, %22, %24, %.preheader129, %.preheader127, %.preheader125, %.preheader, %10 - %.081 = phi float [ %.val104, %10 ], [ 1.000000e+09, %.preheader ], [ 1.000000e+09, %.preheader125 ], [ 1.000000e+09, %.preheader127 ], [ 1.000000e+09, %.preheader129 ], [ %.077148, %22 ], [ %.178, %24 ], [ %.4, %53 ], [ %.380142, %43 ], [ %.7136, %134 ], [ %.8, %152 ], [ %.5132, %74 ], [ %.6, %129 ] +135: ; preds = %.lr.ph138, %153 + %.3137 = phi i32 [ 0, %.lr.ph138 ], [ %158, %153 ] + %.7136 = phi float [ 1.000000e+09, %.lr.ph138 ], [ %.8, %153 ] + %136 = load ptr, ptr %68, align 8 + %137 = load i32, ptr %72, align 4 + %138 = add nsw i32 %137, %.3137 + %139 = sext i32 %138 to i64 + %140 = getelementptr inbounds ptr, ptr %136, i64 %139 + %141 = load ptr, ptr %140, align 8 + %.not91 = icmp eq ptr %141, null + br i1 %.not91, label %.critedge, label %142 + +142: ; preds = %135 + %143 = getelementptr i8, ptr %141, i64 60 + %.val = load i32, ptr %143, align 4 + %144 = tail call i32 @Nwk_ObjFindFanin(ptr noundef nonnull %141, ptr noundef nonnull %0) #11 + %145 = getelementptr i8, ptr %141, i64 32 + %.val99 = load i32, ptr %145, align 8 + %146 = and i32 %.val99, 7 + %.not122 = icmp eq i32 %146, 2 + br i1 %.not122, label %153, label %147 + +147: ; preds = %142 + %148 = sext i32 %.val to i64 + %149 = getelementptr inbounds [33 x [33 x float]], ptr %73, i64 0, i64 %148 + %150 = sext i32 %144 to i64 + %151 = getelementptr inbounds float, ptr %149, i64 %150 + %152 = load float, ptr %151, align 4 + br label %153 + +153: ; preds = %142, %147 + %154 = phi float [ %152, %147 ], [ 0.000000e+00, %142 ] + %155 = getelementptr i8, ptr %141, i64 52 + %.val111 = load float, ptr %155, align 4 + %156 = fsub float %.val111, %154 + %157 = fcmp ogt float %.7136, %156 + %.8 = select i1 %157, float %156, float %.7136 + %158 = add nuw nsw i32 %.3137, 1 + %159 = load i32, ptr %69, align 8 + %160 = icmp slt i32 %158, %159 + br i1 %160, label %135, label %.critedge, !llvm.loop !17 + +.critedge: ; preds = %74, %130, %135, %153, %53, %43, %22, %24, %.preheader129, %.preheader127, %.preheader125, %.preheader, %10 + %.081 = phi float [ %.val104, %10 ], [ 1.000000e+09, %.preheader ], [ 1.000000e+09, %.preheader125 ], [ 1.000000e+09, %.preheader127 ], [ 1.000000e+09, %.preheader129 ], [ %.077148, %22 ], [ %.178, %24 ], [ %.4, %53 ], [ %.380142, %43 ], [ %.7136, %135 ], [ %.8, %153 ], [ %.5132, %74 ], [ %.6, %130 ] ret float %.081 } @@ -961,9 +964,9 @@ define float @Nwk_NodePropagateRequired(ptr nocapture noundef readonly %0, i32 n %smax = zext nneg i32 %69 to i64 br label %.lr.ph54.i -.lr.ph54.i: ; preds = %.lr.ph54.i.preheader, %92 - %indvars.iv63.i = phi i64 [ %indvars.iv.next64.i, %92 ], [ 0, %.lr.ph54.i.preheader ] - %indvars.iv58.i = phi i64 [ %indvars.iv.next59.i, %92 ], [ 1, %.lr.ph54.i.preheader ] +.lr.ph54.i: ; preds = %.lr.ph54.i.preheader, %93 + %indvars.iv63.i = phi i64 [ %indvars.iv.next64.i, %93 ], [ 0, %.lr.ph54.i.preheader ] + %indvars.iv58.i = phi i64 [ %indvars.iv.next59.i, %93 ], [ 1, %.lr.ph54.i.preheader ] %indvars.iv.next64.i = add nuw nsw i64 %indvars.iv63.i, 1 %70 = icmp samesign ult i64 %indvars.iv.next64.i, %67 %71 = trunc nuw nsw i64 %indvars.iv63.i to i32 @@ -977,7 +980,7 @@ define float @Nwk_NodePropagateRequired(ptr nocapture noundef readonly %0, i32 n %74 = sext i32 %73 to i64 %75 = getelementptr inbounds float, ptr %4, i64 %74 %76 = load float, ptr %75, align 4 - %77 = zext nneg i32 %.03949.i to i64 + %77 = sext i32 %.03949.i to i64 %78 = getelementptr inbounds i32, ptr %3, i64 %77 %79 = load i32, ptr %78, align 4 %80 = sext i32 %79 to i64 @@ -994,100 +997,101 @@ define float @Nwk_NodePropagateRequired(ptr nocapture noundef readonly %0, i32 n %.039.lcssa.i = phi i32 [ %71, %.lr.ph54.i ], [ %.140.i, %.lr.ph50.i ] %85 = zext i32 %.039.lcssa.i to i64 %86 = icmp eq i64 %indvars.iv63.i, %85 - br i1 %86, label %92, label %87 + br i1 %86, label %93, label %87 87: ; preds = %._crit_edge.i %88 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv63.i %89 = load i32, ptr %88, align 4 - %90 = getelementptr inbounds i32, ptr %3, i64 %85 - %91 = load i32, ptr %90, align 4 - store i32 %91, ptr %88, align 4 - store i32 %89, ptr %90, align 4 - br label %92 + %90 = sext i32 %.039.lcssa.i to i64 + %91 = getelementptr inbounds i32, ptr %3, i64 %90 + %92 = load i32, ptr %91, align 4 + store i32 %92, ptr %88, align 4 + store i32 %89, ptr %91, align 4 + br label %93 -92: ; preds = %87, %._crit_edge.i +93: ; preds = %87, %._crit_edge.i %indvars.iv.next59.i = add nuw nsw i64 %indvars.iv58.i, 1 %exitcond113.not = icmp eq i64 %indvars.iv.next64.i, %smax br i1 %exitcond113.not, label %.lr.ph, label %.lr.ph54.i, !llvm.loop !8 -.lr.ph: ; preds = %92, %.critedge.i - %93 = getelementptr i8, ptr %0, i64 52 - %94 = load ptr, ptr %53, align 8 - %95 = load ptr, ptr %94, align 8 - %.not76136 = icmp eq ptr %95, null +.lr.ph: ; preds = %93, %.critedge.i + %94 = getelementptr i8, ptr %0, i64 52 + %95 = load ptr, ptr %53, align 8 + %96 = load ptr, ptr %95, align 8 + %.not76136 = icmp eq ptr %96, null br i1 %.not76136, label %.critedge, label %.lr.ph138 -96: ; preds = %113 - %97 = load ptr, ptr %53, align 8 - %98 = getelementptr inbounds ptr, ptr %97, i64 %indvars.iv.next - %99 = load ptr, ptr %98, align 8 - %.not76 = icmp eq ptr %99, null +97: ; preds = %114 + %98 = load ptr, ptr %53, align 8 + %99 = getelementptr inbounds ptr, ptr %98, i64 %indvars.iv.next + %100 = load ptr, ptr %99, align 8 + %.not76 = icmp eq ptr %100, null br i1 %.not76, label %.critedge, label %.lr.ph138, !llvm.loop !20 -.lr.ph138: ; preds = %.lr.ph, %96 - %100 = phi ptr [ %97, %96 ], [ %94, %.lr.ph ] - %indvars.iv137 = phi i64 [ %indvars.iv.next, %96 ], [ 0, %.lr.ph ] - %101 = phi i32 [ %114, %96 ], [ %10, %.lr.ph ] - %.val84 = load float, ptr %93, align 4 - %102 = getelementptr inbounds float, ptr %33, i64 %indvars.iv137 - %103 = load float, ptr %102, align 4 - %104 = fsub float %.val84, %103 - %105 = getelementptr inbounds [32 x i32], ptr %3, i64 0, i64 %indvars.iv137 - %106 = load i32, ptr %105, align 4 - %107 = sext i32 %106 to i64 - %108 = getelementptr inbounds ptr, ptr %100, i64 %107 - %109 = load ptr, ptr %108, align 8 - %110 = getelementptr i8, ptr %109, i64 52 - %.val83 = load float, ptr %110, align 4 - %111 = fcmp ogt float %.val83, %104 - br i1 %111, label %112, label %113 - -112: ; preds = %.lr.ph138 - store float %104, ptr %110, align 4 +.lr.ph138: ; preds = %.lr.ph, %97 + %101 = phi ptr [ %98, %97 ], [ %95, %.lr.ph ] + %indvars.iv137 = phi i64 [ %indvars.iv.next, %97 ], [ 0, %.lr.ph ] + %102 = phi i32 [ %115, %97 ], [ %10, %.lr.ph ] + %.val84 = load float, ptr %94, align 4 + %103 = getelementptr inbounds float, ptr %33, i64 %indvars.iv137 + %104 = load float, ptr %103, align 4 + %105 = fsub float %.val84, %104 + %106 = getelementptr inbounds [32 x i32], ptr %3, i64 0, i64 %indvars.iv137 + %107 = load i32, ptr %106, align 4 + %108 = sext i32 %107 to i64 + %109 = getelementptr inbounds ptr, ptr %101, i64 %108 + %110 = load ptr, ptr %109, align 8 + %111 = getelementptr i8, ptr %110, i64 52 + %.val83 = load float, ptr %111, align 4 + %112 = fcmp ogt float %.val83, %105 + br i1 %112, label %113, label %114 + +113: ; preds = %.lr.ph138 + store float %105, ptr %111, align 4 %.pre = load i32, ptr %9, align 4 - br label %113 + br label %114 -113: ; preds = %.lr.ph138, %112 - %114 = phi i32 [ %101, %.lr.ph138 ], [ %.pre, %112 ] +114: ; preds = %.lr.ph138, %113 + %115 = phi i32 [ %102, %.lr.ph138 ], [ %.pre, %113 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv137, 1 - %115 = sext i32 %114 to i64 - %116 = icmp slt i64 %indvars.iv.next, %115 - br i1 %116, label %96, label %.critedge, !llvm.loop !20 - -117: ; preds = %129 - %118 = load ptr, ptr %53, align 8 - %119 = getelementptr inbounds ptr, ptr %118, i64 %indvars.iv.next116 - %120 = load ptr, ptr %119, align 8 - %.not75 = icmp eq ptr %120, null + %116 = sext i32 %115 to i64 + %117 = icmp slt i64 %indvars.iv.next, %116 + br i1 %117, label %97, label %.critedge, !llvm.loop !20 + +118: ; preds = %130 + %119 = load ptr, ptr %53, align 8 + %120 = getelementptr inbounds ptr, ptr %119, i64 %indvars.iv.next116 + %121 = load ptr, ptr %120, align 8 + %.not75 = icmp eq ptr %121, null br i1 %.not75, label %.critedge, label %.lr.ph143, !llvm.loop !21 -.lr.ph143: ; preds = %.lr.ph99, %117 - %121 = phi ptr [ %120, %117 ], [ %57, %.lr.ph99 ] - %indvars.iv115142 = phi i64 [ %indvars.iv.next116, %117 ], [ 0, %.lr.ph99 ] - %122 = phi i32 [ %130, %117 ], [ %10, %.lr.ph99 ] +.lr.ph143: ; preds = %.lr.ph99, %118 + %122 = phi ptr [ %121, %118 ], [ %57, %.lr.ph99 ] + %indvars.iv115142 = phi i64 [ %indvars.iv.next116, %118 ], [ 0, %.lr.ph99 ] + %123 = phi i32 [ %131, %118 ], [ %10, %.lr.ph99 ] %.val82 = load float, ptr %55, align 4 - %123 = getelementptr inbounds float, ptr %33, i64 %indvars.iv115142 - %124 = load float, ptr %123, align 4 - %125 = fsub float %.val82, %124 - %126 = getelementptr i8, ptr %121, i64 52 - %.val81 = load float, ptr %126, align 4 - %127 = fcmp ogt float %.val81, %125 - br i1 %127, label %128, label %129 - -128: ; preds = %.lr.ph143 - store float %125, ptr %126, align 4 + %124 = getelementptr inbounds float, ptr %33, i64 %indvars.iv115142 + %125 = load float, ptr %124, align 4 + %126 = fsub float %.val82, %125 + %127 = getelementptr i8, ptr %122, i64 52 + %.val81 = load float, ptr %127, align 4 + %128 = fcmp ogt float %.val81, %126 + br i1 %128, label %129, label %130 + +129: ; preds = %.lr.ph143 + store float %126, ptr %127, align 4 %.pre124 = load i32, ptr %9, align 4 - br label %129 + br label %130 -129: ; preds = %.lr.ph143, %128 - %130 = phi i32 [ %122, %.lr.ph143 ], [ %.pre124, %128 ] +130: ; preds = %.lr.ph143, %129 + %131 = phi i32 [ %123, %.lr.ph143 ], [ %.pre124, %129 ] %indvars.iv.next116 = add nuw nsw i64 %indvars.iv115142, 1 - %131 = sext i32 %130 to i64 - %132 = icmp slt i64 %indvars.iv.next116, %131 - br i1 %132, label %117, label %.critedge, !llvm.loop !21 + %132 = sext i32 %131 to i64 + %133 = icmp slt i64 %indvars.iv.next116, %132 + br i1 %133, label %118, label %.critedge, !llvm.loop !21 -.critedge: ; preds = %96, %113, %117, %129, %.lr.ph104, %48, %24, %.lr.ph107, %.lr.ph, %.lr.ph99, %58, %.preheader, %34, %11 - %.062 = phi float [ %13, %11 ], [ %37, %34 ], [ 0.000000e+00, %.preheader ], [ 0.000000e+00, %58 ], [ 0.000000e+00, %.lr.ph99 ], [ 0.000000e+00, %.lr.ph ], [ %13, %.lr.ph107 ], [ %13, %24 ], [ %37, %48 ], [ %37, %.lr.ph104 ], [ %125, %129 ], [ %125, %117 ], [ %104, %113 ], [ %104, %96 ] +.critedge: ; preds = %97, %114, %118, %130, %.lr.ph104, %48, %24, %.lr.ph107, %.lr.ph, %.lr.ph99, %58, %.preheader, %34, %11 + %.062 = phi float [ %13, %11 ], [ %37, %34 ], [ 0.000000e+00, %.preheader ], [ 0.000000e+00, %58 ], [ 0.000000e+00, %.lr.ph99 ], [ 0.000000e+00, %.lr.ph ], [ %13, %.lr.ph107 ], [ %13, %24 ], [ %37, %48 ], [ %37, %.lr.ph104 ], [ %126, %130 ], [ %126, %118 ], [ %105, %114 ], [ %105, %97 ] ret float %.062 } diff --git a/bench/abc/optimized/pdrCore.c.ll b/bench/abc/optimized/pdrCore.c.ll index e81506468e9..abc7f4e53ef 100644 --- a/bench/abc/optimized/pdrCore.c.ll +++ b/bench/abc/optimized/pdrCore.c.ll @@ -771,7 +771,7 @@ define ptr @Pdr_ManSortByPriority(ptr nocapture noundef readonly %0, ptr nocaptu %22 = sext i32 %21 to i64 %23 = getelementptr inbounds i32, ptr %.val, i64 %22 %24 = load i32, ptr %23, align 4 - %25 = zext nneg i32 %.03541 to i64 + %25 = sext i32 %.03541 to i64 %26 = getelementptr inbounds i32, ptr %7, i64 %25 %27 = load i32, ptr %26, align 4 %28 = sext i32 %27 to i64 @@ -791,7 +791,7 @@ define ptr @Pdr_ManSortByPriority(ptr nocapture noundef readonly %0, ptr nocaptu ._crit_edge: ; preds = %.lr.ph42 %37 = getelementptr inbounds i32, ptr %7, i64 %indvars.iv54 %38 = load i32, ptr %37, align 4 - %39 = zext nneg i32 %spec.select to i64 + %39 = sext i32 %spec.select to i64 %40 = getelementptr inbounds i32, ptr %7, i64 %39 %41 = load i32, ptr %40, align 4 store i32 %41, ptr %37, align 4 @@ -866,7 +866,7 @@ define range(i32 -1, 1) i32 @ZPdr_ManSimpleMic(ptr noundef %0, i32 noundef %1, p %28 = sext i32 %27 to i64 %29 = getelementptr inbounds i32, ptr %.val.i, i64 %28 %30 = load i32, ptr %29, align 4 - %31 = zext nneg i32 %.03541.i to i64 + %31 = sext i32 %.03541.i to i64 %32 = getelementptr inbounds i32, ptr %13, i64 %31 %33 = load i32, ptr %32, align 4 %34 = sext i32 %33 to i64 @@ -887,7 +887,7 @@ define range(i32 -1, 1) i32 @ZPdr_ManSimpleMic(ptr noundef %0, i32 noundef %1, p %indvars.iv.next55.i = add nuw nsw i64 %indvars.iv54.i, 1 %43 = getelementptr inbounds i32, ptr %13, i64 %indvars.iv54.i %44 = load i32, ptr %43, align 4 - %45 = zext nneg i32 %spec.select.i to i64 + %45 = sext i32 %spec.select.i to i64 %46 = getelementptr inbounds i32, ptr %13, i64 %45 %47 = load i32, ptr %46, align 4 store i32 %47, ptr %43, align 4 @@ -993,7 +993,7 @@ Pdr_ManSortByPriority.exit: ; preds = %._crit_edge.i, %7, %93 = sext i32 %92 to i64 %94 = getelementptr inbounds i32, ptr %.val.i35, i64 %93 %95 = load i32, ptr %94, align 4 - %96 = zext nneg i32 %.03541.i53 to i64 + %96 = sext i32 %.03541.i53 to i64 %97 = getelementptr inbounds i32, ptr %78, i64 %96 %98 = load i32, ptr %97, align 4 %99 = sext i32 %98 to i64 @@ -1014,7 +1014,7 @@ Pdr_ManSortByPriority.exit: ; preds = %._crit_edge.i, %7, %indvars.iv.next55.i50 = add nuw nsw i64 %indvars.iv54.i48, 1 %108 = getelementptr inbounds i32, ptr %78, i64 %indvars.iv54.i48 %109 = load i32, ptr %108, align 4 - %110 = zext nneg i32 %spec.select.i54 to i64 + %110 = sext i32 %spec.select.i54 to i64 %111 = getelementptr inbounds i32, ptr %78, i64 %110 %112 = load i32, ptr %111, align 4 store i32 %112, ptr %108, align 4 @@ -1604,7 +1604,7 @@ Abc_Clock.exit: ; preds = %5, %14 %35 = sext i32 %34 to i64 %36 = getelementptr inbounds i32, ptr %.val25.i, i64 %35 %37 = load i32, ptr %36, align 4 - %38 = zext nneg i32 %.02327.i to i64 + %38 = sext i32 %.02327.i to i64 %39 = getelementptr inbounds i32, ptr %22, i64 %38 %40 = load i32, ptr %39, align 4 %41 = ashr i32 %40, 1 @@ -1622,7 +1622,7 @@ Abc_Clock.exit: ; preds = %5, %14 %indvars.iv.next36.i = add nuw nsw i64 %indvars.iv35.i, 1 %47 = getelementptr inbounds i32, ptr %22, i64 %indvars.iv35.i %48 = load i32, ptr %47, align 4 - %49 = zext nneg i32 %spec.select.i to i64 + %49 = sext i32 %spec.select.i to i64 %50 = getelementptr inbounds i32, ptr %22, i64 %49 %51 = load i32, ptr %50, align 4 store i32 %51, ptr %47, align 4 @@ -1670,7 +1670,7 @@ Vec_IntSelectSortPrioReverseLit.exit: ; preds = %Vec_IntSelectSortPr %.024.i = phi i32 [ %65, %.lr.ph.preheader.i ], [ %spec.select.i217, %.lr.ph.i216 ] %66 = getelementptr inbounds i32, ptr %60, i64 %indvars.iv29.i %67 = load i32, ptr %66, align 4 - %68 = zext nneg i32 %.024.i to i64 + %68 = sext i32 %.024.i to i64 %69 = getelementptr inbounds i32, ptr %60, i64 %68 %70 = load i32, ptr %69, align 4 %71 = icmp slt i32 %67, %70 @@ -1684,7 +1684,7 @@ Vec_IntSelectSortPrioReverseLit.exit: ; preds = %Vec_IntSelectSortPr %indvars.iv.next33.i215 = add nuw nsw i64 %indvars.iv32.i213, 1 %73 = getelementptr inbounds i32, ptr %60, i64 %indvars.iv32.i213 %74 = load i32, ptr %73, align 4 - %75 = zext nneg i32 %spec.select.i217 to i64 + %75 = sext i32 %spec.select.i217 to i64 %76 = getelementptr inbounds i32, ptr %60, i64 %75 %77 = load i32, ptr %76, align 4 store i32 %77, ptr %73, align 4 @@ -1901,7 +1901,7 @@ sat_solver_compress.exit: ; preds = %156, %144, %142 %177 = sext i32 %176 to i64 %178 = getelementptr inbounds i32, ptr %.val.i, i64 %177 %179 = load i32, ptr %178, align 4 - %180 = zext nneg i32 %.03541.i to i64 + %180 = sext i32 %.03541.i to i64 %181 = getelementptr inbounds i32, ptr %162, i64 %180 %182 = load i32, ptr %181, align 4 %183 = sext i32 %182 to i64 @@ -1922,7 +1922,7 @@ sat_solver_compress.exit: ; preds = %156, %144, %142 %indvars.iv.next55.i = add nuw nsw i64 %indvars.iv54.i, 1 %192 = getelementptr inbounds i32, ptr %162, i64 %indvars.iv54.i %193 = load i32, ptr %192, align 4 - %194 = zext nneg i32 %spec.select.i230 to i64 + %194 = sext i32 %spec.select.i230 to i64 %195 = getelementptr inbounds i32, ptr %162, i64 %194 %196 = load i32, ptr %195, align 4 store i32 %196, ptr %192, align 4 @@ -2082,7 +2082,7 @@ Hash_IntExists.exit.thread: ; preds = %217, %206, %201 %267 = sext i32 %266 to i64 %268 = getelementptr inbounds i32, ptr %.val.i236, i64 %267 %269 = load i32, ptr %268, align 4 - %270 = zext nneg i32 %.03541.i254 to i64 + %270 = sext i32 %.03541.i254 to i64 %271 = getelementptr inbounds i32, ptr %254, i64 %270 %272 = load i32, ptr %271, align 4 %273 = sext i32 %272 to i64 @@ -2103,7 +2103,7 @@ Hash_IntExists.exit.thread: ; preds = %217, %206, %201 %indvars.iv.next55.i251 = add nuw nsw i64 %indvars.iv54.i249, 1 %282 = getelementptr inbounds i32, ptr %254, i64 %indvars.iv54.i249 %283 = load i32, ptr %282, align 4 - %284 = zext nneg i32 %spec.select.i255 to i64 + %284 = sext i32 %spec.select.i255 to i64 %285 = getelementptr inbounds i32, ptr %254, i64 %284 %286 = load i32, ptr %285, align 4 store i32 %286, ptr %282, align 4 @@ -2233,7 +2233,7 @@ sat_solver_compress.exit263: ; preds = %316, %304, %299 %335 = sext i32 %334 to i64 %336 = getelementptr inbounds i32, ptr %.val.i264, i64 %335 %337 = load i32, ptr %336, align 4 - %338 = zext nneg i32 %.03541.i282 to i64 + %338 = sext i32 %.03541.i282 to i64 %339 = getelementptr inbounds i32, ptr %320, i64 %338 %340 = load i32, ptr %339, align 4 %341 = sext i32 %340 to i64 @@ -2254,7 +2254,7 @@ sat_solver_compress.exit263: ; preds = %316, %304, %299 %indvars.iv.next55.i279 = add nuw nsw i64 %indvars.iv54.i277, 1 %350 = getelementptr inbounds i32, ptr %320, i64 %indvars.iv54.i277 %351 = load i32, ptr %350, align 4 - %352 = zext nneg i32 %spec.select.i283 to i64 + %352 = sext i32 %spec.select.i283 to i64 %353 = getelementptr inbounds i32, ptr %320, i64 %352 %354 = load i32, ptr %353, align 4 store i32 %354, ptr %350, align 4 @@ -2378,7 +2378,7 @@ Hash_IntExists.exit: ; preds = %.lr.ph.i232, %293, %400 = sext i32 %399 to i64 %401 = getelementptr inbounds i32, ptr %.val.i290, i64 %400 %402 = load i32, ptr %401, align 4 - %403 = zext nneg i32 %.03541.i308 to i64 + %403 = sext i32 %.03541.i308 to i64 %404 = getelementptr inbounds i32, ptr %385, i64 %403 %405 = load i32, ptr %404, align 4 %406 = sext i32 %405 to i64 @@ -2399,7 +2399,7 @@ Hash_IntExists.exit: ; preds = %.lr.ph.i232, %293, %indvars.iv.next55.i305 = add nuw nsw i64 %indvars.iv54.i303, 1 %415 = getelementptr inbounds i32, ptr %385, i64 %indvars.iv54.i303 %416 = load i32, ptr %415, align 4 - %417 = zext nneg i32 %spec.select.i309 to i64 + %417 = sext i32 %spec.select.i309 to i64 %418 = getelementptr inbounds i32, ptr %385, i64 %417 %419 = load i32, ptr %418, align 4 store i32 %419, ptr %415, align 4 diff --git a/bench/abc/optimized/pdrUtil.c.ll b/bench/abc/optimized/pdrUtil.c.ll index 286fbd6425c..9cd49142774 100644 --- a/bench/abc/optimized/pdrUtil.c.ll +++ b/bench/abc/optimized/pdrUtil.c.ll @@ -88,7 +88,7 @@ define noalias noundef ptr @Pdr_SetCreate(ptr nocapture noundef readonly %0, ptr %.024.i = phi i32 [ %29, %.lr.ph.preheader.i ], [ %spec.select.i, %.lr.ph.i ] %30 = getelementptr inbounds i32, ptr %27, i64 %indvars.iv29.i %31 = load i32, ptr %30, align 4 - %32 = zext nneg i32 %.024.i to i64 + %32 = sext i32 %.024.i to i64 %33 = getelementptr inbounds i32, ptr %27, i64 %32 %34 = load i32, ptr %33, align 4 %35 = icmp slt i32 %31, %34 @@ -102,42 +102,49 @@ define noalias noundef ptr @Pdr_SetCreate(ptr nocapture noundef readonly %0, ptr %indvars.iv.next33.i = add nuw nsw i64 %indvars.iv32.i, 1 %37 = getelementptr inbounds i32, ptr %27, i64 %indvars.iv32.i %38 = load i32, ptr %37, align 4 - %39 = zext nneg i32 %spec.select.i to i64 + %39 = sext i32 %spec.select.i to i64 %40 = getelementptr inbounds i32, ptr %27, i64 %39 %41 = load i32, ptr %40, align 4 store i32 %41, ptr %37, align 4 store i32 %38, ptr %40, align 4 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond36.not.i = icmp eq i64 %indvars.iv.next33.i, %wide.trip.count35.i - br i1 %exitcond36.not.i, label %Vec_IntSelectSort.exit, label %.lr.ph.preheader.i, !llvm.loop !7 + br i1 %exitcond36.not.i, label %Vec_IntSelectSort.exit.loopexit, label %.lr.ph.preheader.i, !llvm.loop !7 + +Vec_IntSelectSort.exit.loopexit: ; preds = %._crit_edge.i + %.pre = load i32, ptr %10, align 8 + %.pre45 = load i32, ptr %11, align 4 + br label %Vec_IntSelectSort.exit -Vec_IntSelectSort.exit: ; preds = %._crit_edge.i, %2, %26 - %42 = icmp sgt i32 %.val31, 0 - br i1 %42, label %.lr.ph39, label %._crit_edge40 +Vec_IntSelectSort.exit: ; preds = %2, %Vec_IntSelectSort.exit.loopexit, %26 + %42 = phi i32 [ %.pre45, %Vec_IntSelectSort.exit.loopexit ], [ %5, %26 ], [ %5, %2 ] + %43 = phi i32 [ %.pre, %Vec_IntSelectSort.exit.loopexit ], [ %.val, %26 ], [ %.val, %2 ] + %44 = icmp slt i32 %43, %42 + br i1 %44, label %.lr.ph39, label %._crit_edge40 .lr.ph39: ; preds = %Vec_IntSelectSort.exit - %43 = getelementptr i8, ptr %1, i64 8 - %.val36 = load ptr, ptr %43, align 8 - %44 = sext i32 %.val to i64 - %45 = getelementptr inbounds i8, ptr %9, i64 20 - br label %46 - -46: ; preds = %.lr.ph39, %46 - %indvars.iv42 = phi i64 [ %44, %.lr.ph39 ], [ %indvars.iv.next43, %46 ] - %47 = load i32, ptr %10, align 8 - %48 = sext i32 %47 to i64 - %49 = sub nsw i64 %indvars.iv42, %48 - %50 = getelementptr inbounds i32, ptr %.val36, i64 %49 - %51 = load i32, ptr %50, align 4 - %52 = getelementptr inbounds [0 x i32], ptr %45, i64 0, i64 %indvars.iv42 - store i32 %51, ptr %52, align 4 + %45 = getelementptr i8, ptr %1, i64 8 + %.val36 = load ptr, ptr %45, align 8 + %46 = sext i32 %43 to i64 + %47 = getelementptr inbounds i8, ptr %9, i64 20 + br label %48 + +48: ; preds = %.lr.ph39, %48 + %indvars.iv42 = phi i64 [ %46, %.lr.ph39 ], [ %indvars.iv.next43, %48 ] + %49 = load i32, ptr %10, align 8 + %50 = sext i32 %49 to i64 + %51 = sub nsw i64 %indvars.iv42, %50 + %52 = getelementptr inbounds i32, ptr %.val36, i64 %51 + %53 = load i32, ptr %52, align 4 + %54 = getelementptr inbounds [0 x i32], ptr %47, i64 0, i64 %indvars.iv42 + store i32 %53, ptr %54, align 4 %indvars.iv.next43 = add nsw i64 %indvars.iv42, 1 - %53 = load i32, ptr %11, align 4 - %54 = sext i32 %53 to i64 - %55 = icmp slt i64 %indvars.iv.next43, %54 - br i1 %55, label %46, label %._crit_edge40, !llvm.loop !8 + %55 = load i32, ptr %11, align 4 + %56 = sext i32 %55 to i64 + %57 = icmp slt i64 %indvars.iv.next43, %56 + br i1 %57, label %48, label %._crit_edge40, !llvm.loop !8 -._crit_edge40: ; preds = %46, %Vec_IntSelectSort.exit +._crit_edge40: ; preds = %48, %Vec_IntSelectSort.exit ret ptr %9 } @@ -277,7 +284,7 @@ define noalias noundef ptr @Pdr_SetCreateSubset(ptr nocapture noundef readonly % %.024.i = phi i32 [ %35, %.lr.ph.preheader.i ], [ %spec.select.i, %.lr.ph.i ] %36 = getelementptr inbounds i32, ptr %33, i64 %indvars.iv29.i %37 = load i32, ptr %36, align 4 - %38 = zext nneg i32 %.024.i to i64 + %38 = sext i32 %.024.i to i64 %39 = getelementptr inbounds i32, ptr %33, i64 %38 %40 = load i32, ptr %39, align 4 %41 = icmp slt i32 %37, %40 @@ -291,7 +298,7 @@ define noalias noundef ptr @Pdr_SetCreateSubset(ptr nocapture noundef readonly % %indvars.iv.next33.i = add nuw nsw i64 %indvars.iv32.i, 1 %43 = getelementptr inbounds i32, ptr %33, i64 %indvars.iv32.i %44 = load i32, ptr %43, align 4 - %45 = zext nneg i32 %spec.select.i to i64 + %45 = sext i32 %spec.select.i to i64 %46 = getelementptr inbounds i32, ptr %33, i64 %45 %47 = load i32, ptr %46, align 4 store i32 %47, ptr %43, align 4 diff --git a/bench/abc/optimized/utilSort.c.ll b/bench/abc/optimized/utilSort.c.ll index 036cc53a17c..0b2ef600ae6 100644 --- a/bench/abc/optimized/utilSort.c.ll +++ b/bench/abc/optimized/utilSort.c.ll @@ -152,7 +152,7 @@ define void @Abc_Sort_rec(ptr noundef %0, ptr noundef %1, ptr noundef %2) local_ %.059 = phi i32 [ %19, %.lr.ph.preheader ], [ %spec.select, %.lr.ph ] %20 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv62 %21 = load i32, ptr %20, align 4 - %22 = zext nneg i32 %.059 to i64 + %22 = sext i32 %.059 to i64 %23 = getelementptr inbounds i32, ptr %0, i64 %22 %24 = load i32, ptr %23, align 4 %25 = icmp slt i32 %21, %24 @@ -165,7 +165,7 @@ define void @Abc_Sort_rec(ptr noundef %0, ptr noundef %1, ptr noundef %2) local_ ._crit_edge: ; preds = %.lr.ph %27 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv65 %28 = load i32, ptr %27, align 4 - %29 = zext nneg i32 %spec.select to i64 + %29 = sext i32 %spec.select to i64 %30 = getelementptr inbounds i32, ptr %0, i64 %29 %31 = load i32, ptr %30, align 4 store i32 %31, ptr %27, align 4 @@ -446,7 +446,7 @@ define void @Abc_SortCost2_rec(ptr noundef %0, ptr noundef %1, ptr noundef %2, p %29 = sext i32 %28 to i64 %30 = getelementptr inbounds i32, ptr %3, i64 %29 %31 = load i32, ptr %30, align 4 - %32 = zext nneg i32 %.064 to i64 + %32 = sext i32 %.064 to i64 %33 = getelementptr inbounds i32, ptr %0, i64 %32 %34 = load i32, ptr %33, align 4 %35 = sext i32 %34 to i64 @@ -462,7 +462,7 @@ define void @Abc_SortCost2_rec(ptr noundef %0, ptr noundef %1, ptr noundef %2, p ._crit_edge: ; preds = %.lr.ph %40 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv70 %41 = load i32, ptr %40, align 4 - %42 = zext nneg i32 %spec.select to i64 + %42 = sext i32 %spec.select to i64 %43 = getelementptr inbounds i32, ptr %0, i64 %42 %44 = load i32, ptr %43, align 4 store i32 %44, ptr %40, align 4 @@ -740,7 +740,7 @@ define void @Abc_SortCost2Reverse_rec(ptr noundef %0, ptr noundef %1, ptr nounde %29 = sext i32 %28 to i64 %30 = getelementptr inbounds i32, ptr %3, i64 %29 %31 = load i32, ptr %30, align 4 - %32 = zext nneg i32 %.064 to i64 + %32 = sext i32 %.064 to i64 %33 = getelementptr inbounds i32, ptr %0, i64 %32 %34 = load i32, ptr %33, align 4 %35 = sext i32 %34 to i64 @@ -756,7 +756,7 @@ define void @Abc_SortCost2Reverse_rec(ptr noundef %0, ptr noundef %1, ptr nounde ._crit_edge: ; preds = %.lr.ph %40 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv70 %41 = load i32, ptr %40, align 4 - %42 = zext nneg i32 %spec.select to i64 + %42 = sext i32 %spec.select to i64 %43 = getelementptr inbounds i32, ptr %0, i64 %42 %44 = load i32, ptr %43, align 4 store i32 %44, ptr %40, align 4 @@ -1052,9 +1052,9 @@ define void @Abc_MergeSortCost_rec(ptr noundef %0, ptr noundef %1, ptr noundef % %26 = or disjoint i64 %25, 1 %27 = getelementptr inbounds i32, ptr %0, i64 %26 %28 = load i32, ptr %27, align 4 - %29 = shl nuw nsw i32 %.074, 1 + %29 = shl nsw i32 %.074, 1 %30 = or disjoint i32 %29, 1 - %31 = zext nneg i32 %30 to i64 + %31 = sext i32 %30 to i64 %32 = getelementptr inbounds i32, ptr %0, i64 %31 %33 = load i32, ptr %32, align 4 %34 = icmp slt i32 %28, %33 @@ -1068,8 +1068,8 @@ define void @Abc_MergeSortCost_rec(ptr noundef %0, ptr noundef %1, ptr noundef % %36 = shl nuw nsw i64 %indvars.iv80, 1 %37 = getelementptr inbounds i32, ptr %0, i64 %36 %38 = load i32, ptr %37, align 4 - %39 = shl nuw nsw i32 %spec.select, 1 - %40 = zext nneg i32 %39 to i64 + %39 = shl nsw i32 %spec.select, 1 + %40 = sext i32 %39 to i64 %41 = getelementptr inbounds i32, ptr %0, i64 %40 %42 = load i32, ptr %41, align 4 store i32 %42, ptr %37, align 4 @@ -1078,7 +1078,7 @@ define void @Abc_MergeSortCost_rec(ptr noundef %0, ptr noundef %1, ptr noundef % %44 = getelementptr inbounds i32, ptr %0, i64 %43 %45 = load i32, ptr %44, align 4 %46 = or disjoint i32 %39, 1 - %47 = zext nneg i32 %46 to i64 + %47 = sext i32 %46 to i64 %48 = getelementptr inbounds i32, ptr %0, i64 %47 %49 = load i32, ptr %48, align 4 store i32 %49, ptr %44, align 4 @@ -1416,7 +1416,7 @@ define void @Abc_QuickSort2Inc_rec(ptr nocapture noundef %0, i32 noundef %1, i32 %17 = getelementptr inbounds i64, ptr %13, i64 %indvars.iv29.i %18 = load i64, ptr %17, align 8 %19 = trunc i64 %18 to i32 - %20 = zext nneg i32 %.02124.i to i64 + %20 = sext i32 %.02124.i to i64 %21 = getelementptr inbounds i64, ptr %13, i64 %20 %22 = load i64, ptr %21, align 8 %23 = trunc i64 %22 to i32 @@ -1431,7 +1431,7 @@ define void @Abc_QuickSort2Inc_rec(ptr nocapture noundef %0, i32 noundef %1, i32 %indvars.iv.next33.i = add nuw nsw i64 %indvars.iv32.i, 1 %26 = getelementptr inbounds i64, ptr %13, i64 %indvars.iv32.i %27 = load i64, ptr %26, align 8 - %28 = zext nneg i32 %spec.select.i to i64 + %28 = sext i32 %spec.select.i to i64 %29 = getelementptr inbounds i64, ptr %13, i64 %28 %30 = load i64, ptr %29, align 8 store i64 %30, ptr %26, align 8 @@ -1540,7 +1540,7 @@ define void @Abc_QuickSort2Dec_rec(ptr nocapture noundef %0, i32 noundef %1, i32 %17 = getelementptr inbounds i64, ptr %13, i64 %indvars.iv29.i %18 = load i64, ptr %17, align 8 %19 = trunc i64 %18 to i32 - %20 = zext nneg i32 %.02124.i to i64 + %20 = sext i32 %.02124.i to i64 %21 = getelementptr inbounds i64, ptr %13, i64 %20 %22 = load i64, ptr %21, align 8 %23 = trunc i64 %22 to i32 @@ -1555,7 +1555,7 @@ define void @Abc_QuickSort2Dec_rec(ptr nocapture noundef %0, i32 noundef %1, i32 %indvars.iv.next33.i = add nuw nsw i64 %indvars.iv32.i, 1 %26 = getelementptr inbounds i64, ptr %13, i64 %indvars.iv32.i %27 = load i64, ptr %26, align 8 - %28 = zext nneg i32 %spec.select.i to i64 + %28 = sext i32 %spec.select.i to i64 %29 = getelementptr inbounds i64, ptr %13, i64 %28 %30 = load i64, ptr %29, align 8 store i64 %30, ptr %26, align 8 @@ -1676,7 +1676,7 @@ define void @Abc_QuickSort3Inc_rec(ptr nocapture noundef %0, i32 noundef %1, i32 %19 = getelementptr inbounds i64, ptr %15, i64 %indvars.iv29.i %20 = load i64, ptr %19, align 8 %21 = trunc i64 %20 to i32 - %22 = zext nneg i32 %.02124.i to i64 + %22 = sext i32 %.02124.i to i64 %23 = getelementptr inbounds i64, ptr %15, i64 %22 %24 = load i64, ptr %23, align 8 %25 = trunc i64 %24 to i32 @@ -1691,7 +1691,7 @@ define void @Abc_QuickSort3Inc_rec(ptr nocapture noundef %0, i32 noundef %1, i32 %indvars.iv.next33.i = add nuw nsw i64 %indvars.iv32.i, 1 %28 = getelementptr inbounds i64, ptr %15, i64 %indvars.iv32.i %29 = load i64, ptr %28, align 8 - %30 = zext nneg i32 %spec.select.i to i64 + %30 = sext i32 %spec.select.i to i64 %31 = getelementptr inbounds i64, ptr %15, i64 %30 %32 = load i64, ptr %31, align 8 store i64 %32, ptr %28, align 8 @@ -1902,7 +1902,7 @@ define void @Abc_QuickSort3Dec_rec(ptr nocapture noundef %0, i32 noundef %1, i32 %19 = getelementptr inbounds i64, ptr %15, i64 %indvars.iv29.i %20 = load i64, ptr %19, align 8 %21 = trunc i64 %20 to i32 - %22 = zext nneg i32 %.02124.i to i64 + %22 = sext i32 %.02124.i to i64 %23 = getelementptr inbounds i64, ptr %15, i64 %22 %24 = load i64, ptr %23, align 8 %25 = trunc i64 %24 to i32 @@ -1917,7 +1917,7 @@ define void @Abc_QuickSort3Dec_rec(ptr nocapture noundef %0, i32 noundef %1, i32 %indvars.iv.next33.i = add nuw nsw i64 %indvars.iv32.i, 1 %28 = getelementptr inbounds i64, ptr %15, i64 %indvars.iv32.i %29 = load i64, ptr %28, align 8 - %30 = zext nneg i32 %spec.select.i to i64 + %30 = sext i32 %spec.select.i to i64 %31 = getelementptr inbounds i64, ptr %15, i64 %30 %32 = load i64, ptr %31, align 8 store i64 %32, ptr %28, align 8 diff --git a/bench/arrow/optimized/codegen_internal.cc.ll b/bench/arrow/optimized/codegen_internal.cc.ll index 7faaddb232f..cdfb136f4f7 100644 --- a/bench/arrow/optimized/codegen_internal.cc.ll +++ b/bench/arrow/optimized/codegen_internal.cc.ll @@ -2937,7 +2937,7 @@ for.end58: ; preds = %_ZN5arrowL9bit_widt br i1 %cmp59, label %if.then60, label %if.end95 if.then60: ; preds = %for.end58 - %cmp61 = icmp samesign ugt i32 %spec.select229, 63 + %cmp61 = icmp sgt i32 %spec.select229, 63 br i1 %cmp61, label %if.then62, label %if.end67 if.then62: ; preds = %if.then60 @@ -3115,7 +3115,7 @@ _ZNSt10shared_ptrIN5arrow8DataTypeEEC2ERKS2_.exit128: ; preds = %while.end90, %i br label %return if.end95: ; preds = %for.end58 - %cmp96.not = icmp samesign ugt i32 %spec.select, %spec.select229 + %cmp96.not = icmp sgt i32 %spec.select, %spec.select229 br i1 %cmp96.not, label %if.end100, label %if.then97 if.then97: ; preds = %if.end95 diff --git a/bench/assimp/optimized/FBXTokenizer.cpp.ll b/bench/assimp/optimized/FBXTokenizer.cpp.ll index d744ce62113..16e6ca5e49a 100644 --- a/bench/assimp/optimized/FBXTokenizer.cpp.ll +++ b/bench/assimp/optimized/FBXTokenizer.cpp.ll @@ -540,8 +540,8 @@ for.body: ; preds = %for.cond.preheader, %cmp2 = icmp eq i8 %2, 34 %frombool5 = zext i1 %cmp2 to i8 %in_double_quotes.1 = xor i8 %in_double_quotes.027, %frombool5 - %tobool6.not = icmp eq i8 %in_double_quotes.027, %frombool5 - br i1 %tobool6.not, label %land.lhs.true7, label %for.inc + %tobool6 = trunc i8 %in_double_quotes.1 to i1 + br i1 %tobool6, label %for.inc, label %land.lhs.true7 land.lhs.true7: ; preds = %for.body switch i8 %2, label %for.inc [ @@ -582,8 +582,8 @@ for.inc: ; preds = %land.lhs.true7, %fo br i1 %cmp.not, label %for.end, label %for.body, !llvm.loop !6 for.end: ; preds = %for.inc - %.not = icmp eq i8 %in_double_quotes.027, %frombool5 - br i1 %.not, label %if.end23, label %if.then14 + %5 = trunc i8 %in_double_quotes.1 to i1 + br i1 %5, label %if.then14, label %if.end23 if.then14: ; preds = %for.end call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp16) #16 @@ -598,49 +598,49 @@ invoke.cont20: ; preds = %invoke.cont18 unreachable lpad17: ; preds = %if.then14 - %5 = landingpad { ptr, i32 } + %6 = landingpad { ptr, i32 } cleanup br label %eh.resume lpad19: ; preds = %invoke.cont18 - %6 = landingpad { ptr, i32 } + %7 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp15) #16 br label %eh.resume if.end23: ; preds = %for.cond.preheader, %for.end %call25 = tail call noundef ptr @_ZN6Assimp14StackAllocator8AllocateEm(ptr noundef nonnull align 8 dereferenceable(40) %token_allocator, i64 noundef 40) - %7 = load ptr, ptr %start, align 8 - %8 = load ptr, ptr %end, align 8 - %add.ptr26 = getelementptr inbounds i8, ptr %8, i64 1 - store ptr %7, ptr %call25, align 8 + %8 = load ptr, ptr %start, align 8 + %9 = load ptr, ptr %end, align 8 + %add.ptr26 = getelementptr inbounds i8, ptr %9, i64 1 + store ptr %8, ptr %call25, align 8 %send3.i = getelementptr inbounds i8, ptr %call25, i64 8 store ptr %add.ptr26, ptr %send3.i, align 8 %type4.i = getelementptr inbounds i8, ptr %call25, i64 16 store i32 %type, ptr %type4.i, align 8 - %9 = getelementptr inbounds i8, ptr %call25, i64 24 + %10 = getelementptr inbounds i8, ptr %call25, i64 24 %conv.i = zext i32 %line to i64 - store i64 %conv.i, ptr %9, align 8 + store i64 %conv.i, ptr %10, align 8 %column5.i = getelementptr inbounds i8, ptr %call25, i64 32 store i32 %column, ptr %column5.i, align 8 %_M_finish.i.i = getelementptr inbounds i8, ptr %output_tokens, i64 8 - %10 = load ptr, ptr %_M_finish.i.i, align 8 + %11 = load ptr, ptr %_M_finish.i.i, align 8 %_M_end_of_storage.i.i = getelementptr inbounds i8, ptr %output_tokens, i64 16 - %11 = load ptr, ptr %_M_end_of_storage.i.i, align 8 - %cmp.not.i.i = icmp eq ptr %10, %11 + %12 = load ptr, ptr %_M_end_of_storage.i.i, align 8 + %cmp.not.i.i = icmp eq ptr %11, %12 br i1 %cmp.not.i.i, label %if.else.i.i, label %if.then.i.i if.then.i.i: ; preds = %if.end23 - store ptr %call25, ptr %10, align 8 - %12 = load ptr, ptr %_M_finish.i.i, align 8 - %incdec.ptr.i.i = getelementptr inbounds i8, ptr %12, i64 8 + store ptr %call25, ptr %11, align 8 + %13 = load ptr, ptr %_M_finish.i.i, align 8 + %incdec.ptr.i.i = getelementptr inbounds i8, ptr %13, i64 8 store ptr %incdec.ptr.i.i, ptr %_M_finish.i.i, align 8 br label %if.end38 if.else.i.i: ; preds = %if.end23 - %13 = load ptr, ptr %output_tokens, align 8 - %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %10 to i64 - %sub.ptr.rhs.cast.i.i.i.i.i = ptrtoint ptr %13 to i64 + %14 = load ptr, ptr %output_tokens, align 8 + %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %11 to i64 + %sub.ptr.rhs.cast.i.i.i.i.i = ptrtoint ptr %14 to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i.i.i.i.i %cmp.i.i.i.i = icmp eq i64 %sub.ptr.sub.i.i.i.i.i, 9223372036854775800 br i1 %cmp.i.i.i.i, label %if.then.i.i.i.i, label %_ZNKSt6vectorIPKN6Assimp3FBX5TokenESaIS4_EE12_M_check_lenEmPKc.exit.i.i.i @@ -654,8 +654,8 @@ _ZNKSt6vectorIPKN6Assimp3FBX5TokenESaIS4_EE12_M_check_lenEmPKc.exit.i.i.i: ; pre %.sroa.speculated.i.i.i.i = tail call i64 @llvm.umax.i64(i64 %sub.ptr.div.i.i.i.i.i, i64 1) %add.i.i.i.i = add nsw i64 %.sroa.speculated.i.i.i.i, %sub.ptr.div.i.i.i.i.i %cmp7.i.i.i.i = icmp ult i64 %add.i.i.i.i, %sub.ptr.div.i.i.i.i.i - %14 = tail call i64 @llvm.umin.i64(i64 %add.i.i.i.i, i64 1152921504606846975) - %cond.i.i.i.i = select i1 %cmp7.i.i.i.i, i64 1152921504606846975, i64 %14 + %15 = tail call i64 @llvm.umin.i64(i64 %add.i.i.i.i, i64 1152921504606846975) + %cond.i.i.i.i = select i1 %cmp7.i.i.i.i, i64 1152921504606846975, i64 %15 %cmp.not.i.i.i.i = icmp eq i64 %cond.i.i.i.i, 0 br i1 %cmp.not.i.i.i.i, label %_ZNSt12_Vector_baseIPKN6Assimp3FBX5TokenESaIS4_EE11_M_allocateEm.exit.i.i.i, label %cond.true.i.i.i.i @@ -672,17 +672,17 @@ _ZNSt12_Vector_baseIPKN6Assimp3FBX5TokenESaIS4_EE11_M_allocateEm.exit.i.i.i: ; p br i1 %cmp.i.i.i.i.i.i, label %if.then.i.i.i.i.i.i, label %_ZNSt6vectorIPKN6Assimp3FBX5TokenESaIS4_EE11_S_relocateEPS4_S7_S7_RS5_.exit17.i.i.i if.then.i.i.i.i.i.i: ; preds = %_ZNSt12_Vector_baseIPKN6Assimp3FBX5TokenESaIS4_EE11_M_allocateEm.exit.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %cond.i10.i.i.i, ptr align 8 %13, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr nonnull align 8 %cond.i10.i.i.i, ptr align 8 %14, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) br label %_ZNSt6vectorIPKN6Assimp3FBX5TokenESaIS4_EE11_S_relocateEPS4_S7_S7_RS5_.exit17.i.i.i _ZNSt6vectorIPKN6Assimp3FBX5TokenESaIS4_EE11_S_relocateEPS4_S7_S7_RS5_.exit17.i.i.i: ; preds = %if.then.i.i.i.i.i.i, %_ZNSt12_Vector_baseIPKN6Assimp3FBX5TokenESaIS4_EE11_M_allocateEm.exit.i.i.i %add.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %cond.i10.i.i.i, i64 %sub.ptr.sub.i.i.i.i.i %incdec.ptr.i.i.i = getelementptr inbounds i8, ptr %add.ptr.i.i.i.i.i.i, i64 8 - %tobool.not.i.i.i.i = icmp eq ptr %13, null + %tobool.not.i.i.i.i = icmp eq ptr %14, null br i1 %tobool.not.i.i.i.i, label %_ZNSt6vectorIPKN6Assimp3FBX5TokenESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_.exit.i.i, label %if.then.i18.i.i.i if.then.i18.i.i.i: ; preds = %_ZNSt6vectorIPKN6Assimp3FBX5TokenESaIS4_EE11_S_relocateEPS4_S7_S7_RS5_.exit17.i.i.i - tail call void @_ZdlPv(ptr noundef nonnull %13) #19 + tail call void @_ZdlPv(ptr noundef nonnull %14) #19 br label %_ZNSt6vectorIPKN6Assimp3FBX5TokenESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_.exit.i.i _ZNSt6vectorIPKN6Assimp3FBX5TokenESaIS4_EE17_M_realloc_insertIJS4_EEEvN9__gnu_cxx17__normal_iteratorIPS4_S6_EEDpOT_.exit.i.i: ; preds = %if.then.i18.i.i.i, %_ZNSt6vectorIPKN6Assimp3FBX5TokenESaIS4_EE11_S_relocateEPS4_S7_S7_RS5_.exit17.i.i.i @@ -708,12 +708,12 @@ invoke.cont34: ; preds = %invoke.cont32 unreachable lpad31: ; preds = %if.then28 - %15 = landingpad { ptr, i32 } + %16 = landingpad { ptr, i32 } cleanup br label %eh.resume lpad33: ; preds = %invoke.cont32 - %16 = landingpad { ptr, i32 } + %17 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp29) #16 br label %eh.resume @@ -725,7 +725,7 @@ if.end38: ; preds = %_ZNSt6vectorIPKN6As eh.resume: ; preds = %lpad31, %lpad33, %lpad17, %lpad19, %lpad, %lpad10 %ref.tmp30.sink = phi ptr [ %ref.tmp9, %lpad10 ], [ %ref.tmp9, %lpad ], [ %ref.tmp16, %lpad19 ], [ %ref.tmp16, %lpad17 ], [ %ref.tmp30, %lpad33 ], [ %ref.tmp30, %lpad31 ] - %.pn21.pn = phi { ptr, i32 } [ %4, %lpad10 ], [ %3, %lpad ], [ %6, %lpad19 ], [ %5, %lpad17 ], [ %16, %lpad33 ], [ %15, %lpad31 ] + %.pn21.pn = phi { ptr, i32 } [ %4, %lpad10 ], [ %3, %lpad ], [ %7, %lpad19 ], [ %6, %lpad17 ], [ %17, %lpad33 ], [ %16, %lpad31 ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp30.sink) #16 resume { ptr, i32 } %.pn21.pn } diff --git a/bench/assimp/optimized/IFCBoolean.cpp.ll b/bench/assimp/optimized/IFCBoolean.cpp.ll index e62d2f6bbf5..b6903b60b36 100644 --- a/bench/assimp/optimized/IFCBoolean.cpp.ll +++ b/bench/assimp/optimized/IFCBoolean.cpp.ll @@ -3540,14 +3540,13 @@ for.body146.preheader: ; preds = %invoke.cont137 %sub.ptr.rhs.cast.i3421531 = ptrtoint ptr %140 to i64 %sub.ptr.sub.i3431532 = sub i64 %sub.ptr.lhs.cast.i3411530, %sub.ptr.rhs.cast.i3421531 %sub.ptr.div.i3441533 = sdiv exact i64 %sub.ptr.sub.i3431532, 24 - %frombool139 = zext i1 %call138 to i8 br label %for.body146 for.body146: ; preds = %for.body146.preheader, %for.end206 %141 = phi ptr [ %226, %for.end206 ], [ null, %for.body146.preheader ] %sub.ptr.div.i3441540 = phi i64 [ %sub.ptr.div.i344, %for.end206 ], [ %sub.ptr.div.i3441533, %for.body146.preheader ] %142 = phi ptr [ %228, %for.end206 ], [ %140, %for.body146.preheader ] - %isCurrentlyInside.01539 = phi i8 [ %isCurrentlyInside.1, %for.end206 ], [ %frombool139, %for.body146.preheader ] + %isCurrentlyInside.01539 = phi i1 [ %isCurrentlyInside.1, %for.end206 ], [ %call138, %for.body146.preheader ] %storemerge1538 = phi i64 [ %add152, %for.end206 ], [ 0, %for.body146.preheader ] %intersections.sroa.0.21537 = phi ptr [ %intersections.sroa.0.6.lcssa, %for.end206 ], [ null, %for.body146.preheader ] %intersections.sroa.36.21536 = phi ptr [ %intersections.sroa.36.3.lcssa, %for.end206 ], [ null, %for.body146.preheader ] @@ -3612,8 +3611,7 @@ for.body146: ; preds = %for.body146.prehead %add13.i392 = fadd double %163, %173 store double %add13.i392, ptr %z14.i393, align 8, !alias.scope !132 store ptr %141, ptr %_M_finish.i.i394, align 8 - %tobool159 = trunc i8 %isCurrentlyInside.01539 to i1 - %call161 = invoke noundef zeroext i1 @_ZN6Assimp3IFC25IntersectsBoundaryProfileERK10aiVector3tIdES4_RKSt6vectorIS2_SaIS2_EEbRS5_ISt4pairImS2_ESaISB_EEb(ptr noundef nonnull align 8 dereferenceable(24) %e0147, ptr noundef nonnull align 8 dereferenceable(24) %e1151, ptr noundef nonnull align 8 dereferenceable(24) %_M_impl.i.i.i.i.i.i, i1 noundef zeroext %tobool159, ptr noundef nonnull align 8 dereferenceable(24) %intersected_boundary, i1 noundef zeroext false) + %call161 = invoke noundef zeroext i1 @_ZN6Assimp3IFC25IntersectsBoundaryProfileERK10aiVector3tIdES4_RKSt6vectorIS2_SaIS2_EEbRS5_ISt4pairImS2_ESaISB_EEb(ptr noundef nonnull align 8 dereferenceable(24) %e0147, ptr noundef nonnull align 8 dereferenceable(24) %e1151, ptr noundef nonnull align 8 dereferenceable(24) %_M_impl.i.i.i.i.i.i, i1 noundef zeroext %isCurrentlyInside.01539, ptr noundef nonnull align 8 dereferenceable(24) %intersected_boundary, i1 noundef zeroext false) to label %invoke.cont160 unwind label %lpad149.loopexit.split-lp.loopexit invoke.cont160: ; preds = %for.body146 @@ -3868,8 +3866,8 @@ for.inc204: ; preds = %.noexc469, %if.then br i1 %cmp195, label %for.body196, label %for.end206.loopexit, !llvm.loop !153 for.end206.loopexit: ; preds = %for.inc204 - %224 = trunc i64 %sub.ptr.sub.i437 to i8 - %225 = lshr i8 %224, 5 + %224 = and i64 %sub.ptr.sub.i437, 32 + %225 = icmp ne i64 %224, 0 br label %for.end206 for.end206: ; preds = %for.end206.loopexit, %if.end191 @@ -3877,8 +3875,8 @@ for.end206: ; preds = %for.end206.loopexit %intersections.sroa.68.3.lcssa = phi ptr [ %intersections.sroa.68.21535, %if.end191 ], [ %intersections.sroa.68.4, %for.end206.loopexit ] %intersections.sroa.36.3.lcssa = phi ptr [ %intersections.sroa.36.21536, %if.end191 ], [ %intersections.sroa.36.10, %for.end206.loopexit ] %intersections.sroa.0.6.lcssa = phi ptr [ %intersections.sroa.0.21537, %if.end191 ], [ %intersections.sroa.0.7, %for.end206.loopexit ] - %sub.ptr.sub.i437.lcssa = phi i8 [ 0, %if.end191 ], [ %225, %for.end206.loopexit ] - %isCurrentlyInside.1 = xor i8 %sub.ptr.sub.i437.lcssa, %isCurrentlyInside.01539 + %sub.ptr.sub.i437.lcssa = phi i1 [ false, %if.end191 ], [ %225, %for.end206.loopexit ] + %isCurrentlyInside.1 = xor i1 %isCurrentlyInside.01539, %sub.ptr.sub.i437.lcssa %227 = load ptr, ptr %blackside.sroa.gep1401, align 8 %228 = load ptr, ptr %blackside, align 8 %sub.ptr.lhs.cast.i341 = ptrtoint ptr %227 to i64 diff --git a/bench/boost/optimized/args_cmd.ll b/bench/boost/optimized/args_cmd.ll index b97cc6971dc..de597314585 100644 --- a/bench/boost/optimized/args_cmd.ll +++ b/bench/boost/optimized/args_cmd.ll @@ -147515,96 +147515,94 @@ define linkonce_odr hidden void @_ZN5boost7process2v16detail5posix10build_argsER %14 = getelementptr inbounds nuw i8, ptr %6, i64 8 br label %15 -15: ; preds = %.lr.ph, %62 - %.pre4349 = phi i64 [ %10, %.lr.ph ], [ %.pre4350, %62 ] - %.pre4246 = phi ptr [ %8, %.lr.ph ], [ %.pre4247, %62 ] - %16 = phi ptr [ %8, %.lr.ph ], [ %63, %62 ] - %17 = phi i64 [ %10, %.lr.ph ], [ %64, %62 ] - %18 = phi ptr [ %8, %.lr.ph ], [ %65, %62 ] - %.039 = phi i8 [ 0, %.lr.ph ], [ %.1, %62 ] - %storemerge38 = phi ptr [ %8, %.lr.ph ], [ %67, %62 ] +15: ; preds = %.lr.ph, %61 + %.pre4349 = phi i64 [ %10, %.lr.ph ], [ %.pre4350, %61 ] + %.pre4246 = phi ptr [ %8, %.lr.ph ], [ %.pre4247, %61 ] + %16 = phi ptr [ %8, %.lr.ph ], [ %62, %61 ] + %17 = phi i64 [ %10, %.lr.ph ], [ %63, %61 ] + %18 = phi ptr [ %8, %.lr.ph ], [ %64, %61 ] + %.039 = phi i1 [ false, %.lr.ph ], [ %.1, %61 ] + %storemerge38 = phi ptr [ %8, %.lr.ph ], [ %66, %61 ] %19 = load i8, ptr %storemerge38, align 1, !tbaa !24 %20 = icmp eq i8 %19, 34 - %21 = zext i1 %20 to i8 - %.1 = xor i8 %.039, %21 - %.not33 = icmp eq i8 %.039, %21 - %22 = icmp eq i8 %19, 32 - %or.cond = and i1 %22, %.not33 - br i1 %or.cond, label %23, label %62 + %.1 = xor i1 %.039, %20 + %21 = icmp ne i8 %19, 32 + %or.cond.not = or i1 %21, %.1 + br i1 %or.cond.not, label %61, label %22 -23: ; preds = %15 +22: ; preds = %15 %.not34 = icmp eq ptr %storemerge38, %18 - br i1 %.not34, label %.critedge, label %24 + br i1 %.not34, label %.critedge, label %23 -24: ; preds = %23 - %25 = getelementptr inbounds i8, ptr %storemerge38, i64 -1 - %26 = load i8, ptr %25, align 1, !tbaa !24 - %.not = icmp eq i8 %26, 32 - br i1 %.not, label %.critedge, label %27 +23: ; preds = %22 + %24 = getelementptr inbounds i8, ptr %storemerge38, i64 -1 + %25 = load i8, ptr %24, align 1, !tbaa !24 + %.not = icmp eq i8 %25, 32 + br i1 %.not, label %.critedge, label %26 -27: ; preds = %24 +26: ; preds = %23 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #57 invoke void @_ZZN5boost7process2v16detail5posix10build_argsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEENKUlRKN9__gnu_cxx17__normal_iteratorIPKcS9_EESI_E_clB5cxx11ESI_SI_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) - to label %28 unwind label %50 + to label %27 unwind label %49 -28: ; preds = %27 - %29 = load ptr, ptr %11, align 8, !tbaa !173 - %30 = load ptr, ptr %12, align 8, !tbaa !331 - %.not.i.i = icmp eq ptr %29, %30 - br i1 %.not.i.i, label %44, label %31 +27: ; preds = %26 + %28 = load ptr, ptr %11, align 8, !tbaa !173 + %29 = load ptr, ptr %12, align 8, !tbaa !331 + %.not.i.i = icmp eq ptr %28, %29 + br i1 %.not.i.i, label %43, label %30 -31: ; preds = %28 - %32 = getelementptr inbounds nuw i8, ptr %29, i64 16 - store ptr %32, ptr %29, align 8, !tbaa !92 - %33 = load ptr, ptr %6, align 8, !tbaa !4 - %34 = icmp eq ptr %33, %13 - br i1 %34, label %35, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i - -35: ; preds = %31 - %36 = load i64, ptr %14, align 8, !tbaa !11 - %37 = icmp ult i64 %36, 16 - call void @llvm.assume(i1 %37) - %38 = add nuw nsw i64 %36, 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %32, ptr noundef nonnull align 8 dereferenceable(1) %13, i64 %38, i1 false) +30: ; preds = %27 + %31 = getelementptr inbounds nuw i8, ptr %28, i64 16 + store ptr %31, ptr %28, align 8, !tbaa !92 + %32 = load ptr, ptr %6, align 8, !tbaa !4 + %33 = icmp eq ptr %32, %13 + br i1 %33, label %34, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i + +34: ; preds = %30 + %35 = load i64, ptr %14, align 8, !tbaa !11 + %36 = icmp ult i64 %35, 16 + call void @llvm.assume(i1 %36) + %37 = add nuw nsw i64 %35, 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %31, ptr noundef nonnull align 8 dereferenceable(1) %13, i64 %37, i1 false) br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit.thread -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i: ; preds = %31 - store ptr %33, ptr %29, align 8, !tbaa !4 - %39 = load i64, ptr %13, align 8, !tbaa !24 - store i64 %39, ptr %32, align 8, !tbaa !24 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i: ; preds = %30 + store ptr %32, ptr %28, align 8, !tbaa !4 + %38 = load i64, ptr %13, align 8, !tbaa !24 + store i64 %38, ptr %31, align 8, !tbaa !24 %.pre = load i64, ptr %14, align 8, !tbaa !11 br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit.thread -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit.thread: ; preds = %35, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i - %40 = phi i64 [ %.pre, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i ], [ %36, %35 ] - %41 = getelementptr inbounds nuw i8, ptr %29, i64 8 - store i64 %40, ptr %41, align 8, !tbaa !11 +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit.thread: ; preds = %34, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i + %39 = phi i64 [ %.pre, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i ], [ %35, %34 ] + %40 = getelementptr inbounds nuw i8, ptr %28, i64 8 + store i64 %39, ptr %40, align 8, !tbaa !11 store ptr %13, ptr %6, align 8, !tbaa !4 store i64 0, ptr %14, align 8, !tbaa !11 - %42 = load ptr, ptr %11, align 8, !tbaa !332 - %43 = getelementptr inbounds nuw i8, ptr %42, i64 32 - store ptr %43, ptr %11, align 8, !tbaa !332 + %41 = load ptr, ptr %11, align 8, !tbaa !332 + %42 = getelementptr inbounds nuw i8, ptr %41, i64 32 + store ptr %42, ptr %11, align 8, !tbaa !332 br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i -44: ; preds = %28 - invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %29, ptr noundef nonnull align 8 dereferenceable(32) %6) - to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit unwind label %52 +43: ; preds = %27 + invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %28, ptr noundef nonnull align 8 dereferenceable(32) %6) + to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit unwind label %51 -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit: ; preds = %44 +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit: ; preds = %43 %.pre40 = load ptr, ptr %6, align 8, !tbaa !4 - %45 = icmp eq ptr %.pre40, %13 - br i1 %45, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i + %44 = icmp eq ptr %.pre40, %13 + br i1 %44, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit.thread, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit - %46 = load i64, ptr %14, align 8, !tbaa !11 - %47 = icmp ult i64 %46, 16 - call void @llvm.assume(i1 %47) + %45 = load i64, ptr %14, align 8, !tbaa !11 + %46 = icmp ult i64 %45, 16 + call void @llvm.assume(i1 %46) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit - %48 = load i64, ptr %13, align 8, !tbaa !24 - %49 = add i64 %48, 1 - call void @_ZdlPvm(ptr noundef %.pre40, i64 noundef %49) #59 + %47 = load i64, ptr %13, align 8, !tbaa !24 + %48 = add i64 %47, 1 + call void @_ZdlPvm(ptr noundef %.pre40, i64 noundef %48) #59 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i @@ -147614,166 +147612,166 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKS %.pre43.pre = load i64, ptr %9, align 8, !tbaa !11 br label %.critedge -50: ; preds = %27 - %51 = landingpad { ptr, i32 } +49: ; preds = %26 + %50 = landingpad { ptr, i32 } cleanup br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 -52: ; preds = %44 - %53 = landingpad { ptr, i32 } +51: ; preds = %43 + %52 = landingpad { ptr, i32 } cleanup - %54 = load ptr, ptr %6, align 8, !tbaa !4 - %55 = icmp eq ptr %54, %13 - br i1 %55, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18 + %53 = load ptr, ptr %6, align 8, !tbaa !4 + %54 = icmp eq ptr %53, %13 + br i1 %54, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19: ; preds = %52 - %56 = load i64, ptr %14, align 8, !tbaa !11 - %57 = icmp ult i64 %56, 16 - call void @llvm.assume(i1 %57) +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19: ; preds = %51 + %55 = load i64, ptr %14, align 8, !tbaa !11 + %56 = icmp ult i64 %55, 16 + call void @llvm.assume(i1 %56) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18: ; preds = %52 - %58 = load i64, ptr %13, align 8, !tbaa !24 - %59 = add i64 %58, 1 - call void @_ZdlPvm(ptr noundef %54, i64 noundef %59) #59 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18: ; preds = %51 + %57 = load i64, ptr %13, align 8, !tbaa !24 + %58 = add i64 %57, 1 + call void @_ZdlPvm(ptr noundef %53, i64 noundef %58) #59 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19, %50 - %.pn15 = phi { ptr, i32 } [ %51, %50 ], [ %53, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19 ], [ %53, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18 ] +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19, %49 + %.pn15 = phi { ptr, i32 } [ %50, %49 ], [ %52, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19 ], [ %52, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #57 - br label %111 + br label %110 -.critedge: ; preds = %23, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %24 - %.pre43 = phi i64 [ %.pre4349, %23 ], [ %.pre43.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %.pre4349, %24 ] - %.pre42 = phi ptr [ %.pre4246, %23 ], [ %.pre42.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %.pre4246, %24 ] - %60 = phi ptr [ %storemerge38, %23 ], [ %.pre41, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %storemerge38, %24 ] - %61 = getelementptr inbounds i8, ptr %60, i64 1 - store ptr %61, ptr %4, align 8, !tbaa !173 - br label %62 +.critedge: ; preds = %22, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %23 + %.pre43 = phi i64 [ %.pre4349, %22 ], [ %.pre43.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %.pre4349, %23 ] + %.pre42 = phi ptr [ %.pre4246, %22 ], [ %.pre42.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %.pre4246, %23 ] + %59 = phi ptr [ %storemerge38, %22 ], [ %.pre41, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %storemerge38, %23 ] + %60 = getelementptr inbounds i8, ptr %59, i64 1 + store ptr %60, ptr %4, align 8, !tbaa !173 + br label %61 -62: ; preds = %15, %.critedge +61: ; preds = %15, %.critedge %.pre4350 = phi i64 [ %.pre4349, %15 ], [ %.pre43, %.critedge ] %.pre4247 = phi ptr [ %.pre4246, %15 ], [ %.pre42, %.critedge ] - %63 = phi ptr [ %16, %15 ], [ %61, %.critedge ] - %64 = phi i64 [ %17, %15 ], [ %.pre43, %.critedge ] - %65 = phi ptr [ %18, %15 ], [ %.pre42, %.critedge ] - %66 = phi ptr [ %storemerge38, %15 ], [ %60, %.critedge ] - %67 = getelementptr inbounds nuw i8, ptr %66, i64 1 - store ptr %67, ptr %5, align 8 - %68 = getelementptr inbounds nuw i8, ptr %65, i64 %64 - %.not31 = icmp eq ptr %67, %68 + %62 = phi ptr [ %16, %15 ], [ %60, %.critedge ] + %63 = phi i64 [ %17, %15 ], [ %.pre43, %.critedge ] + %64 = phi ptr [ %18, %15 ], [ %.pre42, %.critedge ] + %65 = phi ptr [ %storemerge38, %15 ], [ %59, %.critedge ] + %66 = getelementptr inbounds nuw i8, ptr %65, i64 1 + store ptr %66, ptr %5, align 8 + %67 = getelementptr inbounds nuw i8, ptr %64, i64 %63 + %.not31 = icmp eq ptr %66, %67 br i1 %.not31, label %._crit_edge, label %15, !llvm.loop !2802 -._crit_edge: ; preds = %62 - %.not32 = icmp eq ptr %63, %67 - br i1 %.not32, label %._crit_edge.thread, label %69 +._crit_edge: ; preds = %61 + %.not32 = icmp eq ptr %62, %66 + br i1 %.not32, label %._crit_edge.thread, label %68 -69: ; preds = %._crit_edge +68: ; preds = %._crit_edge call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #57 invoke void @_ZZN5boost7process2v16detail5posix10build_argsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEENKUlRKN9__gnu_cxx17__normal_iteratorIPKcS9_EESI_E_clB5cxx11ESI_SI_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %7, ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) - to label %70 unwind label %99 + to label %69 unwind label %98 -70: ; preds = %69 - %71 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %72 = load ptr, ptr %71, align 8, !tbaa !173 - %73 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %74 = load ptr, ptr %73, align 8, !tbaa !331 - %.not.i = icmp eq ptr %72, %74 - br i1 %.not.i, label %91, label %75 +69: ; preds = %68 + %70 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %71 = load ptr, ptr %70, align 8, !tbaa !173 + %72 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %73 = load ptr, ptr %72, align 8, !tbaa !331 + %.not.i = icmp eq ptr %71, %73 + br i1 %.not.i, label %90, label %74 -75: ; preds = %70 - %76 = getelementptr inbounds nuw i8, ptr %72, i64 16 - store ptr %76, ptr %72, align 8, !tbaa !92 - %77 = load ptr, ptr %7, align 8, !tbaa !4 - %78 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %79 = icmp eq ptr %77, %78 - br i1 %79, label %80, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i - -80: ; preds = %75 - %81 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %82 = load i64, ptr %81, align 8, !tbaa !11 - %83 = icmp ult i64 %82, 16 - call void @llvm.assume(i1 %83) - %84 = add nuw nsw i64 %82, 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %76, ptr noundef nonnull align 8 dereferenceable(1) %78, i64 %84, i1 false) +74: ; preds = %69 + %75 = getelementptr inbounds nuw i8, ptr %71, i64 16 + store ptr %75, ptr %71, align 8, !tbaa !92 + %76 = load ptr, ptr %7, align 8, !tbaa !4 + %77 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %78 = icmp eq ptr %76, %77 + br i1 %78, label %79, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i + +79: ; preds = %74 + %80 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %81 = load i64, ptr %80, align 8, !tbaa !11 + %82 = icmp ult i64 %81, 16 + call void @llvm.assume(i1 %82) + %83 = add nuw nsw i64 %81, 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %75, ptr noundef nonnull align 8 dereferenceable(1) %77, i64 %83, i1 false) br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit.thread -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i: ; preds = %75 - store ptr %77, ptr %72, align 8, !tbaa !4 - %85 = load i64, ptr %78, align 8, !tbaa !24 - store i64 %85, ptr %76, align 8, !tbaa !24 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i: ; preds = %74 + store ptr %76, ptr %71, align 8, !tbaa !4 + %84 = load i64, ptr %77, align 8, !tbaa !24 + store i64 %84, ptr %75, align 8, !tbaa !24 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %7, i64 8 %.pre44 = load i64, ptr %.phi.trans.insert, align 8, !tbaa !11 br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit.thread -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit.thread: ; preds = %80, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i - %86 = phi i64 [ %.pre44, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i ], [ %82, %80 ] - %87 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %88 = getelementptr inbounds nuw i8, ptr %72, i64 8 - store i64 %86, ptr %88, align 8, !tbaa !11 - store i64 0, ptr %87, align 8, !tbaa !11 - %89 = load ptr, ptr %71, align 8, !tbaa !332 - %90 = getelementptr inbounds nuw i8, ptr %89, i64 32 - store ptr %90, ptr %71, align 8, !tbaa !332 +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit.thread: ; preds = %79, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i + %85 = phi i64 [ %.pre44, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i ], [ %81, %79 ] + %86 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %87 = getelementptr inbounds nuw i8, ptr %71, i64 8 + store i64 %85, ptr %87, align 8, !tbaa !11 + store i64 0, ptr %86, align 8, !tbaa !11 + %88 = load ptr, ptr %70, align 8, !tbaa !332 + %89 = getelementptr inbounds nuw i8, ptr %88, i64 32 + store ptr %89, ptr %70, align 8, !tbaa !332 br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i23 -91: ; preds = %70 - invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %72, ptr noundef nonnull align 8 dereferenceable(32) %7) - to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit unwind label %101 +90: ; preds = %69 + invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %71, ptr noundef nonnull align 8 dereferenceable(32) %7) + to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit unwind label %100 -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit: ; preds = %91 +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit: ; preds = %90 %.pre45 = load ptr, ptr %7, align 8, !tbaa !4 - %92 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %93 = icmp eq ptr %.pre45, %92 - br i1 %93, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i23, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i22 + %91 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %92 = icmp eq ptr %.pre45, %91 + br i1 %92, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i23, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i22 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i23: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit.thread, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit - %94 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %95 = load i64, ptr %94, align 8, !tbaa !11 - %96 = icmp ult i64 %95, 16 - call void @llvm.assume(i1 %96) + %93 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %94 = load i64, ptr %93, align 8, !tbaa !11 + %95 = icmp ult i64 %94, 16 + call void @llvm.assume(i1 %95) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit24 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i22: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit - %97 = load i64, ptr %92, align 8, !tbaa !24 - %98 = add i64 %97, 1 - call void @_ZdlPvm(ptr noundef %.pre45, i64 noundef %98) #59 + %96 = load i64, ptr %91, align 8, !tbaa !24 + %97 = add i64 %96, 1 + call void @_ZdlPvm(ptr noundef %.pre45, i64 noundef %97) #59 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit24 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit24: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i23, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i22 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #57 br label %._crit_edge.thread -99: ; preds = %69 - %100 = landingpad { ptr, i32 } +98: ; preds = %68 + %99 = landingpad { ptr, i32 } cleanup br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27 -101: ; preds = %91 - %102 = landingpad { ptr, i32 } +100: ; preds = %90 + %101 = landingpad { ptr, i32 } cleanup - %103 = load ptr, ptr %7, align 8, !tbaa !4 - %104 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %105 = icmp eq ptr %103, %104 - br i1 %105, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25 + %102 = load ptr, ptr %7, align 8, !tbaa !4 + %103 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %104 = icmp eq ptr %102, %103 + br i1 %104, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26: ; preds = %101 - %106 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %107 = load i64, ptr %106, align 8, !tbaa !11 - %108 = icmp ult i64 %107, 16 - call void @llvm.assume(i1 %108) +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26: ; preds = %100 + %105 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %106 = load i64, ptr %105, align 8, !tbaa !11 + %107 = icmp ult i64 %106, 16 + call void @llvm.assume(i1 %107) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25: ; preds = %101 - %109 = load i64, ptr %104, align 8, !tbaa !24 - %110 = add i64 %109, 1 - call void @_ZdlPvm(ptr noundef %103, i64 noundef %110) #59 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25: ; preds = %100 + %108 = load i64, ptr %103, align 8, !tbaa !24 + %109 = add i64 %108, 1 + call void @_ZdlPvm(ptr noundef %102, i64 noundef %109) #59 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26, %99 - %.pn = phi { ptr, i32 } [ %100, %99 ], [ %102, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26 ], [ %102, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25 ] +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26, %98 + %.pn = phi { ptr, i32 } [ %99, %98 ], [ %101, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26 ], [ %101, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #57 - br label %111 + br label %110 ._crit_edge.thread: ; preds = %2, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit24, %._crit_edge call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #57 @@ -147781,7 +147779,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27: ; preds = %_ZN call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %3) #57 ret void -111: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 +110: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 %.pn15.pn = phi { ptr, i32 } [ %.pn15, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 ], [ %.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #57 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #57 diff --git a/bench/boost/optimized/args_handling.ll b/bench/boost/optimized/args_handling.ll index 41c361afd4c..bfb627707c4 100644 --- a/bench/boost/optimized/args_handling.ll +++ b/bench/boost/optimized/args_handling.ll @@ -144722,96 +144722,94 @@ define linkonce_odr hidden void @_ZN5boost7process2v16detail5posix10build_argsER %14 = getelementptr inbounds nuw i8, ptr %6, i64 8 br label %15 -15: ; preds = %.lr.ph, %62 - %.pre4349 = phi i64 [ %10, %.lr.ph ], [ %.pre4350, %62 ] - %.pre4246 = phi ptr [ %8, %.lr.ph ], [ %.pre4247, %62 ] - %16 = phi ptr [ %8, %.lr.ph ], [ %63, %62 ] - %17 = phi i64 [ %10, %.lr.ph ], [ %64, %62 ] - %18 = phi ptr [ %8, %.lr.ph ], [ %65, %62 ] - %.039 = phi i8 [ 0, %.lr.ph ], [ %.1, %62 ] - %storemerge38 = phi ptr [ %8, %.lr.ph ], [ %67, %62 ] +15: ; preds = %.lr.ph, %61 + %.pre4349 = phi i64 [ %10, %.lr.ph ], [ %.pre4350, %61 ] + %.pre4246 = phi ptr [ %8, %.lr.ph ], [ %.pre4247, %61 ] + %16 = phi ptr [ %8, %.lr.ph ], [ %62, %61 ] + %17 = phi i64 [ %10, %.lr.ph ], [ %63, %61 ] + %18 = phi ptr [ %8, %.lr.ph ], [ %64, %61 ] + %.039 = phi i1 [ false, %.lr.ph ], [ %.1, %61 ] + %storemerge38 = phi ptr [ %8, %.lr.ph ], [ %66, %61 ] %19 = load i8, ptr %storemerge38, align 1, !tbaa !24 %20 = icmp eq i8 %19, 34 - %21 = zext i1 %20 to i8 - %.1 = xor i8 %.039, %21 - %.not33 = icmp eq i8 %.039, %21 - %22 = icmp eq i8 %19, 32 - %or.cond = and i1 %22, %.not33 - br i1 %or.cond, label %23, label %62 + %.1 = xor i1 %.039, %20 + %21 = icmp ne i8 %19, 32 + %or.cond.not = or i1 %21, %.1 + br i1 %or.cond.not, label %61, label %22 -23: ; preds = %15 +22: ; preds = %15 %.not34 = icmp eq ptr %storemerge38, %18 - br i1 %.not34, label %.critedge, label %24 + br i1 %.not34, label %.critedge, label %23 -24: ; preds = %23 - %25 = getelementptr inbounds i8, ptr %storemerge38, i64 -1 - %26 = load i8, ptr %25, align 1, !tbaa !24 - %.not = icmp eq i8 %26, 32 - br i1 %.not, label %.critedge, label %27 +23: ; preds = %22 + %24 = getelementptr inbounds i8, ptr %storemerge38, i64 -1 + %25 = load i8, ptr %24, align 1, !tbaa !24 + %.not = icmp eq i8 %25, 32 + br i1 %.not, label %.critedge, label %26 -27: ; preds = %24 +26: ; preds = %23 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #57 invoke void @_ZZN5boost7process2v16detail5posix10build_argsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEENKUlRKN9__gnu_cxx17__normal_iteratorIPKcS9_EESI_E_clB5cxx11ESI_SI_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) - to label %28 unwind label %50 + to label %27 unwind label %49 -28: ; preds = %27 - %29 = load ptr, ptr %11, align 8, !tbaa !173 - %30 = load ptr, ptr %12, align 8, !tbaa !331 - %.not.i.i = icmp eq ptr %29, %30 - br i1 %.not.i.i, label %44, label %31 +27: ; preds = %26 + %28 = load ptr, ptr %11, align 8, !tbaa !173 + %29 = load ptr, ptr %12, align 8, !tbaa !331 + %.not.i.i = icmp eq ptr %28, %29 + br i1 %.not.i.i, label %43, label %30 -31: ; preds = %28 - %32 = getelementptr inbounds nuw i8, ptr %29, i64 16 - store ptr %32, ptr %29, align 8, !tbaa !92 - %33 = load ptr, ptr %6, align 8, !tbaa !4 - %34 = icmp eq ptr %33, %13 - br i1 %34, label %35, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i - -35: ; preds = %31 - %36 = load i64, ptr %14, align 8, !tbaa !11 - %37 = icmp ult i64 %36, 16 - call void @llvm.assume(i1 %37) - %38 = add nuw nsw i64 %36, 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %32, ptr noundef nonnull align 8 dereferenceable(1) %13, i64 %38, i1 false) +30: ; preds = %27 + %31 = getelementptr inbounds nuw i8, ptr %28, i64 16 + store ptr %31, ptr %28, align 8, !tbaa !92 + %32 = load ptr, ptr %6, align 8, !tbaa !4 + %33 = icmp eq ptr %32, %13 + br i1 %33, label %34, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i + +34: ; preds = %30 + %35 = load i64, ptr %14, align 8, !tbaa !11 + %36 = icmp ult i64 %35, 16 + call void @llvm.assume(i1 %36) + %37 = add nuw nsw i64 %35, 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %31, ptr noundef nonnull align 8 dereferenceable(1) %13, i64 %37, i1 false) br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit.thread -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i: ; preds = %31 - store ptr %33, ptr %29, align 8, !tbaa !4 - %39 = load i64, ptr %13, align 8, !tbaa !24 - store i64 %39, ptr %32, align 8, !tbaa !24 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i: ; preds = %30 + store ptr %32, ptr %28, align 8, !tbaa !4 + %38 = load i64, ptr %13, align 8, !tbaa !24 + store i64 %38, ptr %31, align 8, !tbaa !24 %.pre = load i64, ptr %14, align 8, !tbaa !11 br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit.thread -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit.thread: ; preds = %35, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i - %40 = phi i64 [ %.pre, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i ], [ %36, %35 ] - %41 = getelementptr inbounds nuw i8, ptr %29, i64 8 - store i64 %40, ptr %41, align 8, !tbaa !11 +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit.thread: ; preds = %34, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i + %39 = phi i64 [ %.pre, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i ], [ %35, %34 ] + %40 = getelementptr inbounds nuw i8, ptr %28, i64 8 + store i64 %39, ptr %40, align 8, !tbaa !11 store ptr %13, ptr %6, align 8, !tbaa !4 store i64 0, ptr %14, align 8, !tbaa !11 - %42 = load ptr, ptr %11, align 8, !tbaa !332 - %43 = getelementptr inbounds nuw i8, ptr %42, i64 32 - store ptr %43, ptr %11, align 8, !tbaa !332 + %41 = load ptr, ptr %11, align 8, !tbaa !332 + %42 = getelementptr inbounds nuw i8, ptr %41, i64 32 + store ptr %42, ptr %11, align 8, !tbaa !332 br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i -44: ; preds = %28 - invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %29, ptr noundef nonnull align 8 dereferenceable(32) %6) - to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit unwind label %52 +43: ; preds = %27 + invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %28, ptr noundef nonnull align 8 dereferenceable(32) %6) + to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit unwind label %51 -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit: ; preds = %44 +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit: ; preds = %43 %.pre40 = load ptr, ptr %6, align 8, !tbaa !4 - %45 = icmp eq ptr %.pre40, %13 - br i1 %45, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i + %44 = icmp eq ptr %.pre40, %13 + br i1 %44, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit.thread, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit - %46 = load i64, ptr %14, align 8, !tbaa !11 - %47 = icmp ult i64 %46, 16 - call void @llvm.assume(i1 %47) + %45 = load i64, ptr %14, align 8, !tbaa !11 + %46 = icmp ult i64 %45, 16 + call void @llvm.assume(i1 %46) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit - %48 = load i64, ptr %13, align 8, !tbaa !24 - %49 = add i64 %48, 1 - call void @_ZdlPvm(ptr noundef %.pre40, i64 noundef %49) #59 + %47 = load i64, ptr %13, align 8, !tbaa !24 + %48 = add i64 %47, 1 + call void @_ZdlPvm(ptr noundef %.pre40, i64 noundef %48) #59 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i @@ -144821,166 +144819,166 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKS %.pre43.pre = load i64, ptr %9, align 8, !tbaa !11 br label %.critedge -50: ; preds = %27 - %51 = landingpad { ptr, i32 } +49: ; preds = %26 + %50 = landingpad { ptr, i32 } cleanup br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 -52: ; preds = %44 - %53 = landingpad { ptr, i32 } +51: ; preds = %43 + %52 = landingpad { ptr, i32 } cleanup - %54 = load ptr, ptr %6, align 8, !tbaa !4 - %55 = icmp eq ptr %54, %13 - br i1 %55, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18 + %53 = load ptr, ptr %6, align 8, !tbaa !4 + %54 = icmp eq ptr %53, %13 + br i1 %54, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19: ; preds = %52 - %56 = load i64, ptr %14, align 8, !tbaa !11 - %57 = icmp ult i64 %56, 16 - call void @llvm.assume(i1 %57) +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19: ; preds = %51 + %55 = load i64, ptr %14, align 8, !tbaa !11 + %56 = icmp ult i64 %55, 16 + call void @llvm.assume(i1 %56) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18: ; preds = %52 - %58 = load i64, ptr %13, align 8, !tbaa !24 - %59 = add i64 %58, 1 - call void @_ZdlPvm(ptr noundef %54, i64 noundef %59) #59 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18: ; preds = %51 + %57 = load i64, ptr %13, align 8, !tbaa !24 + %58 = add i64 %57, 1 + call void @_ZdlPvm(ptr noundef %53, i64 noundef %58) #59 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19, %50 - %.pn15 = phi { ptr, i32 } [ %51, %50 ], [ %53, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19 ], [ %53, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18 ] +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19, %49 + %.pn15 = phi { ptr, i32 } [ %50, %49 ], [ %52, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19 ], [ %52, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #57 - br label %111 + br label %110 -.critedge: ; preds = %23, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %24 - %.pre43 = phi i64 [ %.pre4349, %23 ], [ %.pre43.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %.pre4349, %24 ] - %.pre42 = phi ptr [ %.pre4246, %23 ], [ %.pre42.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %.pre4246, %24 ] - %60 = phi ptr [ %storemerge38, %23 ], [ %.pre41, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %storemerge38, %24 ] - %61 = getelementptr inbounds i8, ptr %60, i64 1 - store ptr %61, ptr %4, align 8, !tbaa !173 - br label %62 +.critedge: ; preds = %22, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %23 + %.pre43 = phi i64 [ %.pre4349, %22 ], [ %.pre43.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %.pre4349, %23 ] + %.pre42 = phi ptr [ %.pre4246, %22 ], [ %.pre42.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %.pre4246, %23 ] + %59 = phi ptr [ %storemerge38, %22 ], [ %.pre41, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %storemerge38, %23 ] + %60 = getelementptr inbounds i8, ptr %59, i64 1 + store ptr %60, ptr %4, align 8, !tbaa !173 + br label %61 -62: ; preds = %15, %.critedge +61: ; preds = %15, %.critedge %.pre4350 = phi i64 [ %.pre4349, %15 ], [ %.pre43, %.critedge ] %.pre4247 = phi ptr [ %.pre4246, %15 ], [ %.pre42, %.critedge ] - %63 = phi ptr [ %16, %15 ], [ %61, %.critedge ] - %64 = phi i64 [ %17, %15 ], [ %.pre43, %.critedge ] - %65 = phi ptr [ %18, %15 ], [ %.pre42, %.critedge ] - %66 = phi ptr [ %storemerge38, %15 ], [ %60, %.critedge ] - %67 = getelementptr inbounds nuw i8, ptr %66, i64 1 - store ptr %67, ptr %5, align 8 - %68 = getelementptr inbounds nuw i8, ptr %65, i64 %64 - %.not31 = icmp eq ptr %67, %68 + %62 = phi ptr [ %16, %15 ], [ %60, %.critedge ] + %63 = phi i64 [ %17, %15 ], [ %.pre43, %.critedge ] + %64 = phi ptr [ %18, %15 ], [ %.pre42, %.critedge ] + %65 = phi ptr [ %storemerge38, %15 ], [ %59, %.critedge ] + %66 = getelementptr inbounds nuw i8, ptr %65, i64 1 + store ptr %66, ptr %5, align 8 + %67 = getelementptr inbounds nuw i8, ptr %64, i64 %63 + %.not31 = icmp eq ptr %66, %67 br i1 %.not31, label %._crit_edge, label %15, !llvm.loop !2665 -._crit_edge: ; preds = %62 - %.not32 = icmp eq ptr %63, %67 - br i1 %.not32, label %._crit_edge.thread, label %69 +._crit_edge: ; preds = %61 + %.not32 = icmp eq ptr %62, %66 + br i1 %.not32, label %._crit_edge.thread, label %68 -69: ; preds = %._crit_edge +68: ; preds = %._crit_edge call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #57 invoke void @_ZZN5boost7process2v16detail5posix10build_argsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEENKUlRKN9__gnu_cxx17__normal_iteratorIPKcS9_EESI_E_clB5cxx11ESI_SI_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %7, ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) - to label %70 unwind label %99 + to label %69 unwind label %98 -70: ; preds = %69 - %71 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %72 = load ptr, ptr %71, align 8, !tbaa !173 - %73 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %74 = load ptr, ptr %73, align 8, !tbaa !331 - %.not.i = icmp eq ptr %72, %74 - br i1 %.not.i, label %91, label %75 +69: ; preds = %68 + %70 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %71 = load ptr, ptr %70, align 8, !tbaa !173 + %72 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %73 = load ptr, ptr %72, align 8, !tbaa !331 + %.not.i = icmp eq ptr %71, %73 + br i1 %.not.i, label %90, label %74 -75: ; preds = %70 - %76 = getelementptr inbounds nuw i8, ptr %72, i64 16 - store ptr %76, ptr %72, align 8, !tbaa !92 - %77 = load ptr, ptr %7, align 8, !tbaa !4 - %78 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %79 = icmp eq ptr %77, %78 - br i1 %79, label %80, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i +74: ; preds = %69 + %75 = getelementptr inbounds nuw i8, ptr %71, i64 16 + store ptr %75, ptr %71, align 8, !tbaa !92 + %76 = load ptr, ptr %7, align 8, !tbaa !4 + %77 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %78 = icmp eq ptr %76, %77 + br i1 %78, label %79, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i -80: ; preds = %75 - %81 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %82 = load i64, ptr %81, align 8, !tbaa !11 - %83 = icmp ult i64 %82, 16 - call void @llvm.assume(i1 %83) - %84 = add nuw nsw i64 %82, 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %76, ptr noundef nonnull align 8 dereferenceable(1) %78, i64 %84, i1 false) +79: ; preds = %74 + %80 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %81 = load i64, ptr %80, align 8, !tbaa !11 + %82 = icmp ult i64 %81, 16 + call void @llvm.assume(i1 %82) + %83 = add nuw nsw i64 %81, 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %75, ptr noundef nonnull align 8 dereferenceable(1) %77, i64 %83, i1 false) br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit.thread -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i: ; preds = %75 - store ptr %77, ptr %72, align 8, !tbaa !4 - %85 = load i64, ptr %78, align 8, !tbaa !24 - store i64 %85, ptr %76, align 8, !tbaa !24 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i: ; preds = %74 + store ptr %76, ptr %71, align 8, !tbaa !4 + %84 = load i64, ptr %77, align 8, !tbaa !24 + store i64 %84, ptr %75, align 8, !tbaa !24 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %7, i64 8 %.pre44 = load i64, ptr %.phi.trans.insert, align 8, !tbaa !11 br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit.thread -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit.thread: ; preds = %80, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i - %86 = phi i64 [ %.pre44, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i ], [ %82, %80 ] - %87 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %88 = getelementptr inbounds nuw i8, ptr %72, i64 8 - store i64 %86, ptr %88, align 8, !tbaa !11 - store i64 0, ptr %87, align 8, !tbaa !11 - %89 = load ptr, ptr %71, align 8, !tbaa !332 - %90 = getelementptr inbounds nuw i8, ptr %89, i64 32 - store ptr %90, ptr %71, align 8, !tbaa !332 +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit.thread: ; preds = %79, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i + %85 = phi i64 [ %.pre44, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i ], [ %81, %79 ] + %86 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %87 = getelementptr inbounds nuw i8, ptr %71, i64 8 + store i64 %85, ptr %87, align 8, !tbaa !11 + store i64 0, ptr %86, align 8, !tbaa !11 + %88 = load ptr, ptr %70, align 8, !tbaa !332 + %89 = getelementptr inbounds nuw i8, ptr %88, i64 32 + store ptr %89, ptr %70, align 8, !tbaa !332 br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i23 -91: ; preds = %70 - invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %72, ptr noundef nonnull align 8 dereferenceable(32) %7) - to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit unwind label %101 +90: ; preds = %69 + invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %71, ptr noundef nonnull align 8 dereferenceable(32) %7) + to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit unwind label %100 -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit: ; preds = %91 +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit: ; preds = %90 %.pre45 = load ptr, ptr %7, align 8, !tbaa !4 - %92 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %93 = icmp eq ptr %.pre45, %92 - br i1 %93, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i23, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i22 + %91 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %92 = icmp eq ptr %.pre45, %91 + br i1 %92, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i23, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i22 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i23: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit.thread, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit - %94 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %95 = load i64, ptr %94, align 8, !tbaa !11 - %96 = icmp ult i64 %95, 16 - call void @llvm.assume(i1 %96) + %93 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %94 = load i64, ptr %93, align 8, !tbaa !11 + %95 = icmp ult i64 %94, 16 + call void @llvm.assume(i1 %95) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit24 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i22: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit - %97 = load i64, ptr %92, align 8, !tbaa !24 - %98 = add i64 %97, 1 - call void @_ZdlPvm(ptr noundef %.pre45, i64 noundef %98) #59 + %96 = load i64, ptr %91, align 8, !tbaa !24 + %97 = add i64 %96, 1 + call void @_ZdlPvm(ptr noundef %.pre45, i64 noundef %97) #59 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit24 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit24: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i23, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i22 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #57 br label %._crit_edge.thread -99: ; preds = %69 - %100 = landingpad { ptr, i32 } +98: ; preds = %68 + %99 = landingpad { ptr, i32 } cleanup br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27 -101: ; preds = %91 - %102 = landingpad { ptr, i32 } +100: ; preds = %90 + %101 = landingpad { ptr, i32 } cleanup - %103 = load ptr, ptr %7, align 8, !tbaa !4 - %104 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %105 = icmp eq ptr %103, %104 - br i1 %105, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25 + %102 = load ptr, ptr %7, align 8, !tbaa !4 + %103 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %104 = icmp eq ptr %102, %103 + br i1 %104, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26: ; preds = %101 - %106 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %107 = load i64, ptr %106, align 8, !tbaa !11 - %108 = icmp ult i64 %107, 16 - call void @llvm.assume(i1 %108) +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26: ; preds = %100 + %105 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %106 = load i64, ptr %105, align 8, !tbaa !11 + %107 = icmp ult i64 %106, 16 + call void @llvm.assume(i1 %107) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25: ; preds = %101 - %109 = load i64, ptr %104, align 8, !tbaa !24 - %110 = add i64 %109, 1 - call void @_ZdlPvm(ptr noundef %103, i64 noundef %110) #59 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25: ; preds = %100 + %108 = load i64, ptr %103, align 8, !tbaa !24 + %109 = add i64 %108, 1 + call void @_ZdlPvm(ptr noundef %102, i64 noundef %109) #59 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26, %99 - %.pn = phi { ptr, i32 } [ %100, %99 ], [ %102, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26 ], [ %102, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25 ] +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26, %98 + %.pn = phi { ptr, i32 } [ %99, %98 ], [ %101, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26 ], [ %101, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #57 - br label %111 + br label %110 ._crit_edge.thread: ; preds = %2, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit24, %._crit_edge call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #57 @@ -144988,7 +144986,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27: ; preds = %_ZN call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %3) #57 ret void -111: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 +110: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 %.pn15.pn = phi { ptr, i32 } [ %.pn15, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 ], [ %.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #57 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #57 diff --git a/bench/boost/optimized/async.ll b/bench/boost/optimized/async.ll index 0442c79c67d..3a5bd1fdfe8 100644 --- a/bench/boost/optimized/async.ll +++ b/bench/boost/optimized/async.ll @@ -181293,96 +181293,94 @@ define linkonce_odr hidden void @_ZN5boost7process2v16detail5posix10build_argsER %14 = getelementptr inbounds nuw i8, ptr %6, i64 8 br label %15 -15: ; preds = %.lr.ph, %62 - %.pre4349 = phi i64 [ %10, %.lr.ph ], [ %.pre4350, %62 ] - %.pre4246 = phi ptr [ %8, %.lr.ph ], [ %.pre4247, %62 ] - %16 = phi ptr [ %8, %.lr.ph ], [ %63, %62 ] - %17 = phi i64 [ %10, %.lr.ph ], [ %64, %62 ] - %18 = phi ptr [ %8, %.lr.ph ], [ %65, %62 ] - %.039 = phi i8 [ 0, %.lr.ph ], [ %.1, %62 ] - %storemerge38 = phi ptr [ %8, %.lr.ph ], [ %67, %62 ] +15: ; preds = %.lr.ph, %61 + %.pre4349 = phi i64 [ %10, %.lr.ph ], [ %.pre4350, %61 ] + %.pre4246 = phi ptr [ %8, %.lr.ph ], [ %.pre4247, %61 ] + %16 = phi ptr [ %8, %.lr.ph ], [ %62, %61 ] + %17 = phi i64 [ %10, %.lr.ph ], [ %63, %61 ] + %18 = phi ptr [ %8, %.lr.ph ], [ %64, %61 ] + %.039 = phi i1 [ false, %.lr.ph ], [ %.1, %61 ] + %storemerge38 = phi ptr [ %8, %.lr.ph ], [ %66, %61 ] %19 = load i8, ptr %storemerge38, align 1, !tbaa !24 %20 = icmp eq i8 %19, 34 - %21 = zext i1 %20 to i8 - %.1 = xor i8 %.039, %21 - %.not33 = icmp eq i8 %.039, %21 - %22 = icmp eq i8 %19, 32 - %or.cond = and i1 %22, %.not33 - br i1 %or.cond, label %23, label %62 + %.1 = xor i1 %.039, %20 + %21 = icmp ne i8 %19, 32 + %or.cond.not = or i1 %21, %.1 + br i1 %or.cond.not, label %61, label %22 -23: ; preds = %15 +22: ; preds = %15 %.not34 = icmp eq ptr %storemerge38, %18 - br i1 %.not34, label %.critedge, label %24 + br i1 %.not34, label %.critedge, label %23 -24: ; preds = %23 - %25 = getelementptr inbounds i8, ptr %storemerge38, i64 -1 - %26 = load i8, ptr %25, align 1, !tbaa !24 - %.not = icmp eq i8 %26, 32 - br i1 %.not, label %.critedge, label %27 +23: ; preds = %22 + %24 = getelementptr inbounds i8, ptr %storemerge38, i64 -1 + %25 = load i8, ptr %24, align 1, !tbaa !24 + %.not = icmp eq i8 %25, 32 + br i1 %.not, label %.critedge, label %26 -27: ; preds = %24 +26: ; preds = %23 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #61 invoke void @_ZZN5boost7process2v16detail5posix10build_argsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEENKUlRKN9__gnu_cxx17__normal_iteratorIPKcS9_EESI_E_clB5cxx11ESI_SI_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) - to label %28 unwind label %50 + to label %27 unwind label %49 -28: ; preds = %27 - %29 = load ptr, ptr %11, align 8, !tbaa !173 - %30 = load ptr, ptr %12, align 8, !tbaa !331 - %.not.i.i = icmp eq ptr %29, %30 - br i1 %.not.i.i, label %44, label %31 +27: ; preds = %26 + %28 = load ptr, ptr %11, align 8, !tbaa !173 + %29 = load ptr, ptr %12, align 8, !tbaa !331 + %.not.i.i = icmp eq ptr %28, %29 + br i1 %.not.i.i, label %43, label %30 -31: ; preds = %28 - %32 = getelementptr inbounds nuw i8, ptr %29, i64 16 - store ptr %32, ptr %29, align 8, !tbaa !92 - %33 = load ptr, ptr %6, align 8, !tbaa !4 - %34 = icmp eq ptr %33, %13 - br i1 %34, label %35, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i +30: ; preds = %27 + %31 = getelementptr inbounds nuw i8, ptr %28, i64 16 + store ptr %31, ptr %28, align 8, !tbaa !92 + %32 = load ptr, ptr %6, align 8, !tbaa !4 + %33 = icmp eq ptr %32, %13 + br i1 %33, label %34, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i -35: ; preds = %31 - %36 = load i64, ptr %14, align 8, !tbaa !11 - %37 = icmp ult i64 %36, 16 - call void @llvm.assume(i1 %37) - %38 = add nuw nsw i64 %36, 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %32, ptr noundef nonnull align 8 dereferenceable(1) %13, i64 %38, i1 false) +34: ; preds = %30 + %35 = load i64, ptr %14, align 8, !tbaa !11 + %36 = icmp ult i64 %35, 16 + call void @llvm.assume(i1 %36) + %37 = add nuw nsw i64 %35, 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %31, ptr noundef nonnull align 8 dereferenceable(1) %13, i64 %37, i1 false) br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit.thread -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i: ; preds = %31 - store ptr %33, ptr %29, align 8, !tbaa !4 - %39 = load i64, ptr %13, align 8, !tbaa !24 - store i64 %39, ptr %32, align 8, !tbaa !24 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i: ; preds = %30 + store ptr %32, ptr %28, align 8, !tbaa !4 + %38 = load i64, ptr %13, align 8, !tbaa !24 + store i64 %38, ptr %31, align 8, !tbaa !24 %.pre = load i64, ptr %14, align 8, !tbaa !11 br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit.thread -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit.thread: ; preds = %35, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i - %40 = phi i64 [ %.pre, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i ], [ %36, %35 ] - %41 = getelementptr inbounds nuw i8, ptr %29, i64 8 - store i64 %40, ptr %41, align 8, !tbaa !11 +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit.thread: ; preds = %34, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i + %39 = phi i64 [ %.pre, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i ], [ %35, %34 ] + %40 = getelementptr inbounds nuw i8, ptr %28, i64 8 + store i64 %39, ptr %40, align 8, !tbaa !11 store ptr %13, ptr %6, align 8, !tbaa !4 store i64 0, ptr %14, align 8, !tbaa !11 - %42 = load ptr, ptr %11, align 8, !tbaa !332 - %43 = getelementptr inbounds nuw i8, ptr %42, i64 32 - store ptr %43, ptr %11, align 8, !tbaa !332 + %41 = load ptr, ptr %11, align 8, !tbaa !332 + %42 = getelementptr inbounds nuw i8, ptr %41, i64 32 + store ptr %42, ptr %11, align 8, !tbaa !332 br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i -44: ; preds = %28 - invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %29, ptr noundef nonnull align 8 dereferenceable(32) %6) - to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit unwind label %52 +43: ; preds = %27 + invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %28, ptr noundef nonnull align 8 dereferenceable(32) %6) + to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit unwind label %51 -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit: ; preds = %44 +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit: ; preds = %43 %.pre40 = load ptr, ptr %6, align 8, !tbaa !4 - %45 = icmp eq ptr %.pre40, %13 - br i1 %45, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i + %44 = icmp eq ptr %.pre40, %13 + br i1 %44, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit.thread, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit - %46 = load i64, ptr %14, align 8, !tbaa !11 - %47 = icmp ult i64 %46, 16 - call void @llvm.assume(i1 %47) + %45 = load i64, ptr %14, align 8, !tbaa !11 + %46 = icmp ult i64 %45, 16 + call void @llvm.assume(i1 %46) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit - %48 = load i64, ptr %13, align 8, !tbaa !24 - %49 = add i64 %48, 1 - call void @_ZdlPvm(ptr noundef %.pre40, i64 noundef %49) #63 + %47 = load i64, ptr %13, align 8, !tbaa !24 + %48 = add i64 %47, 1 + call void @_ZdlPvm(ptr noundef %.pre40, i64 noundef %48) #63 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i @@ -181392,166 +181390,166 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKS %.pre43.pre = load i64, ptr %9, align 8, !tbaa !11 br label %.critedge -50: ; preds = %27 - %51 = landingpad { ptr, i32 } +49: ; preds = %26 + %50 = landingpad { ptr, i32 } cleanup br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 -52: ; preds = %44 - %53 = landingpad { ptr, i32 } +51: ; preds = %43 + %52 = landingpad { ptr, i32 } cleanup - %54 = load ptr, ptr %6, align 8, !tbaa !4 - %55 = icmp eq ptr %54, %13 - br i1 %55, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18 + %53 = load ptr, ptr %6, align 8, !tbaa !4 + %54 = icmp eq ptr %53, %13 + br i1 %54, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19: ; preds = %52 - %56 = load i64, ptr %14, align 8, !tbaa !11 - %57 = icmp ult i64 %56, 16 - call void @llvm.assume(i1 %57) +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19: ; preds = %51 + %55 = load i64, ptr %14, align 8, !tbaa !11 + %56 = icmp ult i64 %55, 16 + call void @llvm.assume(i1 %56) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18: ; preds = %52 - %58 = load i64, ptr %13, align 8, !tbaa !24 - %59 = add i64 %58, 1 - call void @_ZdlPvm(ptr noundef %54, i64 noundef %59) #63 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18: ; preds = %51 + %57 = load i64, ptr %13, align 8, !tbaa !24 + %58 = add i64 %57, 1 + call void @_ZdlPvm(ptr noundef %53, i64 noundef %58) #63 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19, %50 - %.pn15 = phi { ptr, i32 } [ %51, %50 ], [ %53, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19 ], [ %53, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18 ] +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19, %49 + %.pn15 = phi { ptr, i32 } [ %50, %49 ], [ %52, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19 ], [ %52, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #61 - br label %111 + br label %110 -.critedge: ; preds = %23, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %24 - %.pre43 = phi i64 [ %.pre4349, %23 ], [ %.pre43.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %.pre4349, %24 ] - %.pre42 = phi ptr [ %.pre4246, %23 ], [ %.pre42.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %.pre4246, %24 ] - %60 = phi ptr [ %storemerge38, %23 ], [ %.pre41, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %storemerge38, %24 ] - %61 = getelementptr inbounds i8, ptr %60, i64 1 - store ptr %61, ptr %4, align 8, !tbaa !173 - br label %62 +.critedge: ; preds = %22, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %23 + %.pre43 = phi i64 [ %.pre4349, %22 ], [ %.pre43.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %.pre4349, %23 ] + %.pre42 = phi ptr [ %.pre4246, %22 ], [ %.pre42.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %.pre4246, %23 ] + %59 = phi ptr [ %storemerge38, %22 ], [ %.pre41, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %storemerge38, %23 ] + %60 = getelementptr inbounds i8, ptr %59, i64 1 + store ptr %60, ptr %4, align 8, !tbaa !173 + br label %61 -62: ; preds = %15, %.critedge +61: ; preds = %15, %.critedge %.pre4350 = phi i64 [ %.pre4349, %15 ], [ %.pre43, %.critedge ] %.pre4247 = phi ptr [ %.pre4246, %15 ], [ %.pre42, %.critedge ] - %63 = phi ptr [ %16, %15 ], [ %61, %.critedge ] - %64 = phi i64 [ %17, %15 ], [ %.pre43, %.critedge ] - %65 = phi ptr [ %18, %15 ], [ %.pre42, %.critedge ] - %66 = phi ptr [ %storemerge38, %15 ], [ %60, %.critedge ] - %67 = getelementptr inbounds nuw i8, ptr %66, i64 1 - store ptr %67, ptr %5, align 8 - %68 = getelementptr inbounds nuw i8, ptr %65, i64 %64 - %.not31 = icmp eq ptr %67, %68 + %62 = phi ptr [ %16, %15 ], [ %60, %.critedge ] + %63 = phi i64 [ %17, %15 ], [ %.pre43, %.critedge ] + %64 = phi ptr [ %18, %15 ], [ %.pre42, %.critedge ] + %65 = phi ptr [ %storemerge38, %15 ], [ %59, %.critedge ] + %66 = getelementptr inbounds nuw i8, ptr %65, i64 1 + store ptr %66, ptr %5, align 8 + %67 = getelementptr inbounds nuw i8, ptr %64, i64 %63 + %.not31 = icmp eq ptr %66, %67 br i1 %.not31, label %._crit_edge, label %15, !llvm.loop !3615 -._crit_edge: ; preds = %62 - %.not32 = icmp eq ptr %63, %67 - br i1 %.not32, label %._crit_edge.thread, label %69 +._crit_edge: ; preds = %61 + %.not32 = icmp eq ptr %62, %66 + br i1 %.not32, label %._crit_edge.thread, label %68 -69: ; preds = %._crit_edge +68: ; preds = %._crit_edge call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #61 invoke void @_ZZN5boost7process2v16detail5posix10build_argsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEENKUlRKN9__gnu_cxx17__normal_iteratorIPKcS9_EESI_E_clB5cxx11ESI_SI_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %7, ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) - to label %70 unwind label %99 + to label %69 unwind label %98 -70: ; preds = %69 - %71 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %72 = load ptr, ptr %71, align 8, !tbaa !173 - %73 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %74 = load ptr, ptr %73, align 8, !tbaa !331 - %.not.i = icmp eq ptr %72, %74 - br i1 %.not.i, label %91, label %75 +69: ; preds = %68 + %70 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %71 = load ptr, ptr %70, align 8, !tbaa !173 + %72 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %73 = load ptr, ptr %72, align 8, !tbaa !331 + %.not.i = icmp eq ptr %71, %73 + br i1 %.not.i, label %90, label %74 -75: ; preds = %70 - %76 = getelementptr inbounds nuw i8, ptr %72, i64 16 - store ptr %76, ptr %72, align 8, !tbaa !92 - %77 = load ptr, ptr %7, align 8, !tbaa !4 - %78 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %79 = icmp eq ptr %77, %78 - br i1 %79, label %80, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i +74: ; preds = %69 + %75 = getelementptr inbounds nuw i8, ptr %71, i64 16 + store ptr %75, ptr %71, align 8, !tbaa !92 + %76 = load ptr, ptr %7, align 8, !tbaa !4 + %77 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %78 = icmp eq ptr %76, %77 + br i1 %78, label %79, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i -80: ; preds = %75 - %81 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %82 = load i64, ptr %81, align 8, !tbaa !11 - %83 = icmp ult i64 %82, 16 - call void @llvm.assume(i1 %83) - %84 = add nuw nsw i64 %82, 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %76, ptr noundef nonnull align 8 dereferenceable(1) %78, i64 %84, i1 false) +79: ; preds = %74 + %80 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %81 = load i64, ptr %80, align 8, !tbaa !11 + %82 = icmp ult i64 %81, 16 + call void @llvm.assume(i1 %82) + %83 = add nuw nsw i64 %81, 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %75, ptr noundef nonnull align 8 dereferenceable(1) %77, i64 %83, i1 false) br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit.thread -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i: ; preds = %75 - store ptr %77, ptr %72, align 8, !tbaa !4 - %85 = load i64, ptr %78, align 8, !tbaa !24 - store i64 %85, ptr %76, align 8, !tbaa !24 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i: ; preds = %74 + store ptr %76, ptr %71, align 8, !tbaa !4 + %84 = load i64, ptr %77, align 8, !tbaa !24 + store i64 %84, ptr %75, align 8, !tbaa !24 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %7, i64 8 %.pre44 = load i64, ptr %.phi.trans.insert, align 8, !tbaa !11 br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit.thread -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit.thread: ; preds = %80, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i - %86 = phi i64 [ %.pre44, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i ], [ %82, %80 ] - %87 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %88 = getelementptr inbounds nuw i8, ptr %72, i64 8 - store i64 %86, ptr %88, align 8, !tbaa !11 - store i64 0, ptr %87, align 8, !tbaa !11 - %89 = load ptr, ptr %71, align 8, !tbaa !332 - %90 = getelementptr inbounds nuw i8, ptr %89, i64 32 - store ptr %90, ptr %71, align 8, !tbaa !332 +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit.thread: ; preds = %79, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i + %85 = phi i64 [ %.pre44, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i ], [ %81, %79 ] + %86 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %87 = getelementptr inbounds nuw i8, ptr %71, i64 8 + store i64 %85, ptr %87, align 8, !tbaa !11 + store i64 0, ptr %86, align 8, !tbaa !11 + %88 = load ptr, ptr %70, align 8, !tbaa !332 + %89 = getelementptr inbounds nuw i8, ptr %88, i64 32 + store ptr %89, ptr %70, align 8, !tbaa !332 br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i23 -91: ; preds = %70 - invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %72, ptr noundef nonnull align 8 dereferenceable(32) %7) - to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit unwind label %101 +90: ; preds = %69 + invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %71, ptr noundef nonnull align 8 dereferenceable(32) %7) + to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit unwind label %100 -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit: ; preds = %91 +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit: ; preds = %90 %.pre45 = load ptr, ptr %7, align 8, !tbaa !4 - %92 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %93 = icmp eq ptr %.pre45, %92 - br i1 %93, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i23, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i22 + %91 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %92 = icmp eq ptr %.pre45, %91 + br i1 %92, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i23, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i22 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i23: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit.thread, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit - %94 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %95 = load i64, ptr %94, align 8, !tbaa !11 - %96 = icmp ult i64 %95, 16 - call void @llvm.assume(i1 %96) + %93 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %94 = load i64, ptr %93, align 8, !tbaa !11 + %95 = icmp ult i64 %94, 16 + call void @llvm.assume(i1 %95) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit24 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i22: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit - %97 = load i64, ptr %92, align 8, !tbaa !24 - %98 = add i64 %97, 1 - call void @_ZdlPvm(ptr noundef %.pre45, i64 noundef %98) #63 + %96 = load i64, ptr %91, align 8, !tbaa !24 + %97 = add i64 %96, 1 + call void @_ZdlPvm(ptr noundef %.pre45, i64 noundef %97) #63 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit24 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit24: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i23, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i22 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #61 br label %._crit_edge.thread -99: ; preds = %69 - %100 = landingpad { ptr, i32 } +98: ; preds = %68 + %99 = landingpad { ptr, i32 } cleanup br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27 -101: ; preds = %91 - %102 = landingpad { ptr, i32 } +100: ; preds = %90 + %101 = landingpad { ptr, i32 } cleanup - %103 = load ptr, ptr %7, align 8, !tbaa !4 - %104 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %105 = icmp eq ptr %103, %104 - br i1 %105, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25 + %102 = load ptr, ptr %7, align 8, !tbaa !4 + %103 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %104 = icmp eq ptr %102, %103 + br i1 %104, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26: ; preds = %101 - %106 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %107 = load i64, ptr %106, align 8, !tbaa !11 - %108 = icmp ult i64 %107, 16 - call void @llvm.assume(i1 %108) +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26: ; preds = %100 + %105 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %106 = load i64, ptr %105, align 8, !tbaa !11 + %107 = icmp ult i64 %106, 16 + call void @llvm.assume(i1 %107) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25: ; preds = %101 - %109 = load i64, ptr %104, align 8, !tbaa !24 - %110 = add i64 %109, 1 - call void @_ZdlPvm(ptr noundef %103, i64 noundef %110) #63 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25: ; preds = %100 + %108 = load i64, ptr %103, align 8, !tbaa !24 + %109 = add i64 %108, 1 + call void @_ZdlPvm(ptr noundef %102, i64 noundef %109) #63 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26, %99 - %.pn = phi { ptr, i32 } [ %100, %99 ], [ %102, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26 ], [ %102, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25 ] +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26, %98 + %.pn = phi { ptr, i32 } [ %99, %98 ], [ %101, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26 ], [ %101, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #61 - br label %111 + br label %110 ._crit_edge.thread: ; preds = %2, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit24, %._crit_edge call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #61 @@ -181559,7 +181557,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27: ; preds = %_ZN call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %3) #61 ret void -111: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 +110: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 %.pn15.pn = phi { ptr, i32 } [ %.pn15, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 ], [ %.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #61 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #61 diff --git a/bench/boost/optimized/run_exe.ll b/bench/boost/optimized/run_exe.ll index d796248fb90..0921f0e8541 100644 --- a/bench/boost/optimized/run_exe.ll +++ b/bench/boost/optimized/run_exe.ll @@ -6875,96 +6875,94 @@ define linkonce_odr hidden void @_ZN5boost7process2v16detail5posix10build_argsER %14 = getelementptr inbounds nuw i8, ptr %6, i64 8 br label %15 -15: ; preds = %.lr.ph, %62 - %.pre4349 = phi i64 [ %10, %.lr.ph ], [ %.pre4350, %62 ] - %.pre4246 = phi ptr [ %8, %.lr.ph ], [ %.pre4247, %62 ] - %16 = phi ptr [ %8, %.lr.ph ], [ %63, %62 ] - %17 = phi i64 [ %10, %.lr.ph ], [ %64, %62 ] - %18 = phi ptr [ %8, %.lr.ph ], [ %65, %62 ] - %.039 = phi i8 [ 0, %.lr.ph ], [ %.1, %62 ] - %storemerge38 = phi ptr [ %8, %.lr.ph ], [ %67, %62 ] +15: ; preds = %.lr.ph, %61 + %.pre4349 = phi i64 [ %10, %.lr.ph ], [ %.pre4350, %61 ] + %.pre4246 = phi ptr [ %8, %.lr.ph ], [ %.pre4247, %61 ] + %16 = phi ptr [ %8, %.lr.ph ], [ %62, %61 ] + %17 = phi i64 [ %10, %.lr.ph ], [ %63, %61 ] + %18 = phi ptr [ %8, %.lr.ph ], [ %64, %61 ] + %.039 = phi i1 [ false, %.lr.ph ], [ %.1, %61 ] + %storemerge38 = phi ptr [ %8, %.lr.ph ], [ %66, %61 ] %19 = load i8, ptr %storemerge38, align 1, !tbaa !44 %20 = icmp eq i8 %19, 34 - %21 = zext i1 %20 to i8 - %.1 = xor i8 %.039, %21 - %.not33 = icmp eq i8 %.039, %21 - %22 = icmp eq i8 %19, 32 - %or.cond = and i1 %22, %.not33 - br i1 %or.cond, label %23, label %62 - -23: ; preds = %15 + %.1 = xor i1 %.039, %20 + %21 = icmp ne i8 %19, 32 + %or.cond.not = or i1 %21, %.1 + br i1 %or.cond.not, label %61, label %22 + +22: ; preds = %15 %.not34 = icmp eq ptr %storemerge38, %18 - br i1 %.not34, label %.critedge, label %24 + br i1 %.not34, label %.critedge, label %23 -24: ; preds = %23 - %25 = getelementptr inbounds i8, ptr %storemerge38, i64 -1 - %26 = load i8, ptr %25, align 1, !tbaa !44 - %.not = icmp eq i8 %26, 32 - br i1 %.not, label %.critedge, label %27 +23: ; preds = %22 + %24 = getelementptr inbounds i8, ptr %storemerge38, i64 -1 + %25 = load i8, ptr %24, align 1, !tbaa !44 + %.not = icmp eq i8 %25, 32 + br i1 %.not, label %.critedge, label %26 -27: ; preds = %24 +26: ; preds = %23 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #30 invoke void @_ZZN5boost7process2v16detail5posix10build_argsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEENKUlRKN9__gnu_cxx17__normal_iteratorIPKcS9_EESI_E_clB5cxx11ESI_SI_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) - to label %28 unwind label %50 + to label %27 unwind label %49 -28: ; preds = %27 - %29 = load ptr, ptr %11, align 8, !tbaa !55 - %30 = load ptr, ptr %12, align 8, !tbaa !69 - %.not.i.i = icmp eq ptr %29, %30 - br i1 %.not.i.i, label %44, label %31 +27: ; preds = %26 + %28 = load ptr, ptr %11, align 8, !tbaa !55 + %29 = load ptr, ptr %12, align 8, !tbaa !69 + %.not.i.i = icmp eq ptr %28, %29 + br i1 %.not.i.i, label %43, label %30 -31: ; preds = %28 - %32 = getelementptr inbounds nuw i8, ptr %29, i64 16 - store ptr %32, ptr %29, align 8, !tbaa !56 - %33 = load ptr, ptr %6, align 8, !tbaa !29 - %34 = icmp eq ptr %33, %13 - br i1 %34, label %35, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i - -35: ; preds = %31 - %36 = load i64, ptr %14, align 8, !tbaa !33 - %37 = icmp ult i64 %36, 16 - call void @llvm.assume(i1 %37) - %38 = add nuw nsw i64 %36, 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %32, ptr noundef nonnull align 8 dereferenceable(1) %13, i64 %38, i1 false) +30: ; preds = %27 + %31 = getelementptr inbounds nuw i8, ptr %28, i64 16 + store ptr %31, ptr %28, align 8, !tbaa !56 + %32 = load ptr, ptr %6, align 8, !tbaa !29 + %33 = icmp eq ptr %32, %13 + br i1 %33, label %34, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i + +34: ; preds = %30 + %35 = load i64, ptr %14, align 8, !tbaa !33 + %36 = icmp ult i64 %35, 16 + call void @llvm.assume(i1 %36) + %37 = add nuw nsw i64 %35, 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %31, ptr noundef nonnull align 8 dereferenceable(1) %13, i64 %37, i1 false) br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit.thread -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i: ; preds = %31 - store ptr %33, ptr %29, align 8, !tbaa !29 - %39 = load i64, ptr %13, align 8, !tbaa !44 - store i64 %39, ptr %32, align 8, !tbaa !44 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i: ; preds = %30 + store ptr %32, ptr %28, align 8, !tbaa !29 + %38 = load i64, ptr %13, align 8, !tbaa !44 + store i64 %38, ptr %31, align 8, !tbaa !44 %.pre = load i64, ptr %14, align 8, !tbaa !33 br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit.thread -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit.thread: ; preds = %35, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i - %40 = phi i64 [ %.pre, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i ], [ %36, %35 ] - %41 = getelementptr inbounds nuw i8, ptr %29, i64 8 - store i64 %40, ptr %41, align 8, !tbaa !33 +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit.thread: ; preds = %34, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i + %39 = phi i64 [ %.pre, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i ], [ %35, %34 ] + %40 = getelementptr inbounds nuw i8, ptr %28, i64 8 + store i64 %39, ptr %40, align 8, !tbaa !33 store ptr %13, ptr %6, align 8, !tbaa !29 store i64 0, ptr %14, align 8, !tbaa !33 - %42 = load ptr, ptr %11, align 8, !tbaa !68 - %43 = getelementptr inbounds nuw i8, ptr %42, i64 32 - store ptr %43, ptr %11, align 8, !tbaa !68 + %41 = load ptr, ptr %11, align 8, !tbaa !68 + %42 = getelementptr inbounds nuw i8, ptr %41, i64 32 + store ptr %42, ptr %11, align 8, !tbaa !68 br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i -44: ; preds = %28 - invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %29, ptr noundef nonnull align 8 dereferenceable(32) %6) - to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit unwind label %52 +43: ; preds = %27 + invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %28, ptr noundef nonnull align 8 dereferenceable(32) %6) + to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit unwind label %51 -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit: ; preds = %44 +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit: ; preds = %43 %.pre40 = load ptr, ptr %6, align 8, !tbaa !29 - %45 = icmp eq ptr %.pre40, %13 - br i1 %45, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i + %44 = icmp eq ptr %.pre40, %13 + br i1 %44, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit.thread, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit - %46 = load i64, ptr %14, align 8, !tbaa !33 - %47 = icmp ult i64 %46, 16 - call void @llvm.assume(i1 %47) + %45 = load i64, ptr %14, align 8, !tbaa !33 + %46 = icmp ult i64 %45, 16 + call void @llvm.assume(i1 %46) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit - %48 = load i64, ptr %13, align 8, !tbaa !44 - %49 = add i64 %48, 1 - call void @_ZdlPvm(ptr noundef %.pre40, i64 noundef %49) #34 + %47 = load i64, ptr %13, align 8, !tbaa !44 + %48 = add i64 %47, 1 + call void @_ZdlPvm(ptr noundef %.pre40, i64 noundef %48) #34 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i @@ -6974,166 +6972,166 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKS %.pre43.pre = load i64, ptr %9, align 8, !tbaa !33 br label %.critedge -50: ; preds = %27 - %51 = landingpad { ptr, i32 } +49: ; preds = %26 + %50 = landingpad { ptr, i32 } cleanup br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 -52: ; preds = %44 - %53 = landingpad { ptr, i32 } +51: ; preds = %43 + %52 = landingpad { ptr, i32 } cleanup - %54 = load ptr, ptr %6, align 8, !tbaa !29 - %55 = icmp eq ptr %54, %13 - br i1 %55, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18 - -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19: ; preds = %52 - %56 = load i64, ptr %14, align 8, !tbaa !33 - %57 = icmp ult i64 %56, 16 - call void @llvm.assume(i1 %57) + %53 = load ptr, ptr %6, align 8, !tbaa !29 + %54 = icmp eq ptr %53, %13 + br i1 %54, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18 + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19: ; preds = %51 + %55 = load i64, ptr %14, align 8, !tbaa !33 + %56 = icmp ult i64 %55, 16 + call void @llvm.assume(i1 %56) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18: ; preds = %52 - %58 = load i64, ptr %13, align 8, !tbaa !44 - %59 = add i64 %58, 1 - call void @_ZdlPvm(ptr noundef %54, i64 noundef %59) #34 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18: ; preds = %51 + %57 = load i64, ptr %13, align 8, !tbaa !44 + %58 = add i64 %57, 1 + call void @_ZdlPvm(ptr noundef %53, i64 noundef %58) #34 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19, %50 - %.pn15 = phi { ptr, i32 } [ %51, %50 ], [ %53, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19 ], [ %53, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18 ] +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19, %49 + %.pn15 = phi { ptr, i32 } [ %50, %49 ], [ %52, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19 ], [ %52, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #30 - br label %111 + br label %110 -.critedge: ; preds = %23, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %24 - %.pre43 = phi i64 [ %.pre4349, %23 ], [ %.pre43.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %.pre4349, %24 ] - %.pre42 = phi ptr [ %.pre4246, %23 ], [ %.pre42.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %.pre4246, %24 ] - %60 = phi ptr [ %storemerge38, %23 ], [ %.pre41, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %storemerge38, %24 ] - %61 = getelementptr inbounds i8, ptr %60, i64 1 - store ptr %61, ptr %4, align 8, !tbaa !55 - br label %62 +.critedge: ; preds = %22, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %23 + %.pre43 = phi i64 [ %.pre4349, %22 ], [ %.pre43.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %.pre4349, %23 ] + %.pre42 = phi ptr [ %.pre4246, %22 ], [ %.pre42.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %.pre4246, %23 ] + %59 = phi ptr [ %storemerge38, %22 ], [ %.pre41, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %storemerge38, %23 ] + %60 = getelementptr inbounds i8, ptr %59, i64 1 + store ptr %60, ptr %4, align 8, !tbaa !55 + br label %61 -62: ; preds = %15, %.critedge +61: ; preds = %15, %.critedge %.pre4350 = phi i64 [ %.pre4349, %15 ], [ %.pre43, %.critedge ] %.pre4247 = phi ptr [ %.pre4246, %15 ], [ %.pre42, %.critedge ] - %63 = phi ptr [ %16, %15 ], [ %61, %.critedge ] - %64 = phi i64 [ %17, %15 ], [ %.pre43, %.critedge ] - %65 = phi ptr [ %18, %15 ], [ %.pre42, %.critedge ] - %66 = phi ptr [ %storemerge38, %15 ], [ %60, %.critedge ] - %67 = getelementptr inbounds nuw i8, ptr %66, i64 1 - store ptr %67, ptr %5, align 8 - %68 = getelementptr inbounds nuw i8, ptr %65, i64 %64 - %.not31 = icmp eq ptr %67, %68 + %62 = phi ptr [ %16, %15 ], [ %60, %.critedge ] + %63 = phi i64 [ %17, %15 ], [ %.pre43, %.critedge ] + %64 = phi ptr [ %18, %15 ], [ %.pre42, %.critedge ] + %65 = phi ptr [ %storemerge38, %15 ], [ %59, %.critedge ] + %66 = getelementptr inbounds nuw i8, ptr %65, i64 1 + store ptr %66, ptr %5, align 8 + %67 = getelementptr inbounds nuw i8, ptr %64, i64 %63 + %.not31 = icmp eq ptr %66, %67 br i1 %.not31, label %._crit_edge, label %15, !llvm.loop !416 -._crit_edge: ; preds = %62 - %.not32 = icmp eq ptr %63, %67 - br i1 %.not32, label %._crit_edge.thread, label %69 +._crit_edge: ; preds = %61 + %.not32 = icmp eq ptr %62, %66 + br i1 %.not32, label %._crit_edge.thread, label %68 -69: ; preds = %._crit_edge +68: ; preds = %._crit_edge call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #30 invoke void @_ZZN5boost7process2v16detail5posix10build_argsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEENKUlRKN9__gnu_cxx17__normal_iteratorIPKcS9_EESI_E_clB5cxx11ESI_SI_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %7, ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) - to label %70 unwind label %99 - -70: ; preds = %69 - %71 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %72 = load ptr, ptr %71, align 8, !tbaa !55 - %73 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %74 = load ptr, ptr %73, align 8, !tbaa !69 - %.not.i = icmp eq ptr %72, %74 - br i1 %.not.i, label %91, label %75 - -75: ; preds = %70 - %76 = getelementptr inbounds nuw i8, ptr %72, i64 16 - store ptr %76, ptr %72, align 8, !tbaa !56 - %77 = load ptr, ptr %7, align 8, !tbaa !29 - %78 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %79 = icmp eq ptr %77, %78 - br i1 %79, label %80, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i + to label %69 unwind label %98 + +69: ; preds = %68 + %70 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %71 = load ptr, ptr %70, align 8, !tbaa !55 + %72 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %73 = load ptr, ptr %72, align 8, !tbaa !69 + %.not.i = icmp eq ptr %71, %73 + br i1 %.not.i, label %90, label %74 + +74: ; preds = %69 + %75 = getelementptr inbounds nuw i8, ptr %71, i64 16 + store ptr %75, ptr %71, align 8, !tbaa !56 + %76 = load ptr, ptr %7, align 8, !tbaa !29 + %77 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %78 = icmp eq ptr %76, %77 + br i1 %78, label %79, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i -80: ; preds = %75 - %81 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %82 = load i64, ptr %81, align 8, !tbaa !33 - %83 = icmp ult i64 %82, 16 - call void @llvm.assume(i1 %83) - %84 = add nuw nsw i64 %82, 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %76, ptr noundef nonnull align 8 dereferenceable(1) %78, i64 %84, i1 false) +79: ; preds = %74 + %80 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %81 = load i64, ptr %80, align 8, !tbaa !33 + %82 = icmp ult i64 %81, 16 + call void @llvm.assume(i1 %82) + %83 = add nuw nsw i64 %81, 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %75, ptr noundef nonnull align 8 dereferenceable(1) %77, i64 %83, i1 false) br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit.thread -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i: ; preds = %75 - store ptr %77, ptr %72, align 8, !tbaa !29 - %85 = load i64, ptr %78, align 8, !tbaa !44 - store i64 %85, ptr %76, align 8, !tbaa !44 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i: ; preds = %74 + store ptr %76, ptr %71, align 8, !tbaa !29 + %84 = load i64, ptr %77, align 8, !tbaa !44 + store i64 %84, ptr %75, align 8, !tbaa !44 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %7, i64 8 %.pre44 = load i64, ptr %.phi.trans.insert, align 8, !tbaa !33 br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit.thread -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit.thread: ; preds = %80, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i - %86 = phi i64 [ %.pre44, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i ], [ %82, %80 ] - %87 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %88 = getelementptr inbounds nuw i8, ptr %72, i64 8 - store i64 %86, ptr %88, align 8, !tbaa !33 - store i64 0, ptr %87, align 8, !tbaa !33 - %89 = load ptr, ptr %71, align 8, !tbaa !68 - %90 = getelementptr inbounds nuw i8, ptr %89, i64 32 - store ptr %90, ptr %71, align 8, !tbaa !68 +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit.thread: ; preds = %79, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i + %85 = phi i64 [ %.pre44, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i ], [ %81, %79 ] + %86 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %87 = getelementptr inbounds nuw i8, ptr %71, i64 8 + store i64 %85, ptr %87, align 8, !tbaa !33 + store i64 0, ptr %86, align 8, !tbaa !33 + %88 = load ptr, ptr %70, align 8, !tbaa !68 + %89 = getelementptr inbounds nuw i8, ptr %88, i64 32 + store ptr %89, ptr %70, align 8, !tbaa !68 br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i23 -91: ; preds = %70 - invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %72, ptr noundef nonnull align 8 dereferenceable(32) %7) - to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit unwind label %101 +90: ; preds = %69 + invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %71, ptr noundef nonnull align 8 dereferenceable(32) %7) + to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit unwind label %100 -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit: ; preds = %91 +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit: ; preds = %90 %.pre45 = load ptr, ptr %7, align 8, !tbaa !29 - %92 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %93 = icmp eq ptr %.pre45, %92 - br i1 %93, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i23, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i22 + %91 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %92 = icmp eq ptr %.pre45, %91 + br i1 %92, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i23, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i22 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i23: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit.thread, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit - %94 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %95 = load i64, ptr %94, align 8, !tbaa !33 - %96 = icmp ult i64 %95, 16 - call void @llvm.assume(i1 %96) + %93 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %94 = load i64, ptr %93, align 8, !tbaa !33 + %95 = icmp ult i64 %94, 16 + call void @llvm.assume(i1 %95) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit24 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i22: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit - %97 = load i64, ptr %92, align 8, !tbaa !44 - %98 = add i64 %97, 1 - call void @_ZdlPvm(ptr noundef %.pre45, i64 noundef %98) #34 + %96 = load i64, ptr %91, align 8, !tbaa !44 + %97 = add i64 %96, 1 + call void @_ZdlPvm(ptr noundef %.pre45, i64 noundef %97) #34 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit24 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit24: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i23, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i22 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #30 br label %._crit_edge.thread -99: ; preds = %69 - %100 = landingpad { ptr, i32 } +98: ; preds = %68 + %99 = landingpad { ptr, i32 } cleanup br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27 -101: ; preds = %91 - %102 = landingpad { ptr, i32 } +100: ; preds = %90 + %101 = landingpad { ptr, i32 } cleanup - %103 = load ptr, ptr %7, align 8, !tbaa !29 - %104 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %105 = icmp eq ptr %103, %104 - br i1 %105, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25 - -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26: ; preds = %101 - %106 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %107 = load i64, ptr %106, align 8, !tbaa !33 - %108 = icmp ult i64 %107, 16 - call void @llvm.assume(i1 %108) + %102 = load ptr, ptr %7, align 8, !tbaa !29 + %103 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %104 = icmp eq ptr %102, %103 + br i1 %104, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25 + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26: ; preds = %100 + %105 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %106 = load i64, ptr %105, align 8, !tbaa !33 + %107 = icmp ult i64 %106, 16 + call void @llvm.assume(i1 %107) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25: ; preds = %101 - %109 = load i64, ptr %104, align 8, !tbaa !44 - %110 = add i64 %109, 1 - call void @_ZdlPvm(ptr noundef %103, i64 noundef %110) #34 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25: ; preds = %100 + %108 = load i64, ptr %103, align 8, !tbaa !44 + %109 = add i64 %108, 1 + call void @_ZdlPvm(ptr noundef %102, i64 noundef %109) #34 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26, %99 - %.pn = phi { ptr, i32 } [ %100, %99 ], [ %102, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26 ], [ %102, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25 ] +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26, %98 + %.pn = phi { ptr, i32 } [ %99, %98 ], [ %101, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26 ], [ %101, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #30 - br label %111 + br label %110 ._crit_edge.thread: ; preds = %2, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit24, %._crit_edge call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #30 @@ -7141,7 +7139,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27: ; preds = %_ZN call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %3) #30 ret void -111: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 +110: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 %.pn15.pn = phi { ptr, i32 } [ %.pn15, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 ], [ %.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #30 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #30 diff --git a/bench/boost/optimized/sub_launcher.ll b/bench/boost/optimized/sub_launcher.ll index 5e7c8555a87..8ec16c842d9 100644 --- a/bench/boost/optimized/sub_launcher.ll +++ b/bench/boost/optimized/sub_launcher.ll @@ -9596,96 +9596,94 @@ define linkonce_odr hidden void @_ZN5boost7process2v16detail5posix10build_argsER %14 = getelementptr inbounds nuw i8, ptr %6, i64 8 br label %15 -15: ; preds = %.lr.ph, %62 - %.pre4349 = phi i64 [ %10, %.lr.ph ], [ %.pre4350, %62 ] - %.pre4246 = phi ptr [ %8, %.lr.ph ], [ %.pre4247, %62 ] - %16 = phi ptr [ %8, %.lr.ph ], [ %63, %62 ] - %17 = phi i64 [ %10, %.lr.ph ], [ %64, %62 ] - %18 = phi ptr [ %8, %.lr.ph ], [ %65, %62 ] - %.039 = phi i8 [ 0, %.lr.ph ], [ %.1, %62 ] - %storemerge38 = phi ptr [ %8, %.lr.ph ], [ %67, %62 ] +15: ; preds = %.lr.ph, %61 + %.pre4349 = phi i64 [ %10, %.lr.ph ], [ %.pre4350, %61 ] + %.pre4246 = phi ptr [ %8, %.lr.ph ], [ %.pre4247, %61 ] + %16 = phi ptr [ %8, %.lr.ph ], [ %62, %61 ] + %17 = phi i64 [ %10, %.lr.ph ], [ %63, %61 ] + %18 = phi ptr [ %8, %.lr.ph ], [ %64, %61 ] + %.039 = phi i1 [ false, %.lr.ph ], [ %.1, %61 ] + %storemerge38 = phi ptr [ %8, %.lr.ph ], [ %66, %61 ] %19 = load i8, ptr %storemerge38, align 1, !tbaa !71 %20 = icmp eq i8 %19, 34 - %21 = zext i1 %20 to i8 - %.1 = xor i8 %.039, %21 - %.not33 = icmp eq i8 %.039, %21 - %22 = icmp eq i8 %19, 32 - %or.cond = and i1 %22, %.not33 - br i1 %or.cond, label %23, label %62 - -23: ; preds = %15 + %.1 = xor i1 %.039, %20 + %21 = icmp ne i8 %19, 32 + %or.cond.not = or i1 %21, %.1 + br i1 %or.cond.not, label %61, label %22 + +22: ; preds = %15 %.not34 = icmp eq ptr %storemerge38, %18 - br i1 %.not34, label %.critedge, label %24 + br i1 %.not34, label %.critedge, label %23 -24: ; preds = %23 - %25 = getelementptr inbounds i8, ptr %storemerge38, i64 -1 - %26 = load i8, ptr %25, align 1, !tbaa !71 - %.not = icmp eq i8 %26, 32 - br i1 %.not, label %.critedge, label %27 +23: ; preds = %22 + %24 = getelementptr inbounds i8, ptr %storemerge38, i64 -1 + %25 = load i8, ptr %24, align 1, !tbaa !71 + %.not = icmp eq i8 %25, 32 + br i1 %.not, label %.critedge, label %26 -27: ; preds = %24 +26: ; preds = %23 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #28 invoke void @_ZZN5boost7process2v16detail5posix10build_argsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEENKUlRKN9__gnu_cxx17__normal_iteratorIPKcS9_EESI_E_clB5cxx11ESI_SI_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) - to label %28 unwind label %50 + to label %27 unwind label %49 -28: ; preds = %27 - %29 = load ptr, ptr %11, align 8, !tbaa !45 - %30 = load ptr, ptr %12, align 8, !tbaa !116 - %.not.i.i = icmp eq ptr %29, %30 - br i1 %.not.i.i, label %44, label %31 +27: ; preds = %26 + %28 = load ptr, ptr %11, align 8, !tbaa !45 + %29 = load ptr, ptr %12, align 8, !tbaa !116 + %.not.i.i = icmp eq ptr %28, %29 + br i1 %.not.i.i, label %43, label %30 -31: ; preds = %28 - %32 = getelementptr inbounds nuw i8, ptr %29, i64 16 - store ptr %32, ptr %29, align 8, !tbaa !157 - %33 = load ptr, ptr %6, align 8, !tbaa !87 - %34 = icmp eq ptr %33, %13 - br i1 %34, label %35, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i - -35: ; preds = %31 - %36 = load i64, ptr %14, align 8, !tbaa !90 - %37 = icmp ult i64 %36, 16 - call void @llvm.assume(i1 %37) - %38 = add nuw nsw i64 %36, 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %32, ptr noundef nonnull align 8 dereferenceable(1) %13, i64 %38, i1 false) +30: ; preds = %27 + %31 = getelementptr inbounds nuw i8, ptr %28, i64 16 + store ptr %31, ptr %28, align 8, !tbaa !157 + %32 = load ptr, ptr %6, align 8, !tbaa !87 + %33 = icmp eq ptr %32, %13 + br i1 %33, label %34, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i + +34: ; preds = %30 + %35 = load i64, ptr %14, align 8, !tbaa !90 + %36 = icmp ult i64 %35, 16 + call void @llvm.assume(i1 %36) + %37 = add nuw nsw i64 %35, 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %31, ptr noundef nonnull align 8 dereferenceable(1) %13, i64 %37, i1 false) br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit.thread -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i: ; preds = %31 - store ptr %33, ptr %29, align 8, !tbaa !87 - %39 = load i64, ptr %13, align 8, !tbaa !71 - store i64 %39, ptr %32, align 8, !tbaa !71 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i: ; preds = %30 + store ptr %32, ptr %28, align 8, !tbaa !87 + %38 = load i64, ptr %13, align 8, !tbaa !71 + store i64 %38, ptr %31, align 8, !tbaa !71 %.pre = load i64, ptr %14, align 8, !tbaa !90 br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit.thread -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit.thread: ; preds = %35, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i - %40 = phi i64 [ %.pre, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i ], [ %36, %35 ] - %41 = getelementptr inbounds nuw i8, ptr %29, i64 8 - store i64 %40, ptr %41, align 8, !tbaa !90 +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit.thread: ; preds = %34, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i + %39 = phi i64 [ %.pre, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i.i ], [ %35, %34 ] + %40 = getelementptr inbounds nuw i8, ptr %28, i64 8 + store i64 %39, ptr %40, align 8, !tbaa !90 store ptr %13, ptr %6, align 8, !tbaa !87 store i64 0, ptr %14, align 8, !tbaa !90 - %42 = load ptr, ptr %11, align 8, !tbaa !117 - %43 = getelementptr inbounds nuw i8, ptr %42, i64 32 - store ptr %43, ptr %11, align 8, !tbaa !117 + %41 = load ptr, ptr %11, align 8, !tbaa !117 + %42 = getelementptr inbounds nuw i8, ptr %41, i64 32 + store ptr %42, ptr %11, align 8, !tbaa !117 br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i -44: ; preds = %28 - invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %29, ptr noundef nonnull align 8 dereferenceable(32) %6) - to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit unwind label %52 +43: ; preds = %27 + invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %28, ptr noundef nonnull align 8 dereferenceable(32) %6) + to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit unwind label %51 -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit: ; preds = %44 +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit: ; preds = %43 %.pre40 = load ptr, ptr %6, align 8, !tbaa !87 - %45 = icmp eq ptr %.pre40, %13 - br i1 %45, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i + %44 = icmp eq ptr %.pre40, %13 + br i1 %44, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit.thread, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit - %46 = load i64, ptr %14, align 8, !tbaa !90 - %47 = icmp ult i64 %46, 16 - call void @llvm.assume(i1 %47) + %45 = load i64, ptr %14, align 8, !tbaa !90 + %46 = icmp ult i64 %45, 16 + call void @llvm.assume(i1 %46) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backEOS5_.exit - %48 = load i64, ptr %13, align 8, !tbaa !71 - %49 = add i64 %48, 1 - call void @_ZdlPvm(ptr noundef %.pre40, i64 noundef %49) #30 + %47 = load i64, ptr %13, align 8, !tbaa !71 + %48 = add i64 %47, 1 + call void @_ZdlPvm(ptr noundef %.pre40, i64 noundef %48) #30 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i @@ -9695,166 +9693,166 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit: ; preds = %_ZNKS %.pre43.pre = load i64, ptr %9, align 8, !tbaa !90 br label %.critedge -50: ; preds = %27 - %51 = landingpad { ptr, i32 } +49: ; preds = %26 + %50 = landingpad { ptr, i32 } cleanup br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 -52: ; preds = %44 - %53 = landingpad { ptr, i32 } +51: ; preds = %43 + %52 = landingpad { ptr, i32 } cleanup - %54 = load ptr, ptr %6, align 8, !tbaa !87 - %55 = icmp eq ptr %54, %13 - br i1 %55, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18 - -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19: ; preds = %52 - %56 = load i64, ptr %14, align 8, !tbaa !90 - %57 = icmp ult i64 %56, 16 - call void @llvm.assume(i1 %57) + %53 = load ptr, ptr %6, align 8, !tbaa !87 + %54 = icmp eq ptr %53, %13 + br i1 %54, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18 + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19: ; preds = %51 + %55 = load i64, ptr %14, align 8, !tbaa !90 + %56 = icmp ult i64 %55, 16 + call void @llvm.assume(i1 %56) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18: ; preds = %52 - %58 = load i64, ptr %13, align 8, !tbaa !71 - %59 = add i64 %58, 1 - call void @_ZdlPvm(ptr noundef %54, i64 noundef %59) #30 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18: ; preds = %51 + %57 = load i64, ptr %13, align 8, !tbaa !71 + %58 = add i64 %57, 1 + call void @_ZdlPvm(ptr noundef %53, i64 noundef %58) #30 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19, %50 - %.pn15 = phi { ptr, i32 } [ %51, %50 ], [ %53, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19 ], [ %53, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18 ] +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19, %49 + %.pn15 = phi { ptr, i32 } [ %50, %49 ], [ %52, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i19 ], [ %52, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i18 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #28 - br label %111 + br label %110 -.critedge: ; preds = %23, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %24 - %.pre43 = phi i64 [ %.pre4349, %23 ], [ %.pre43.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %.pre4349, %24 ] - %.pre42 = phi ptr [ %.pre4246, %23 ], [ %.pre42.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %.pre4246, %24 ] - %60 = phi ptr [ %storemerge38, %23 ], [ %.pre41, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %storemerge38, %24 ] - %61 = getelementptr inbounds i8, ptr %60, i64 1 - store ptr %61, ptr %4, align 8, !tbaa !45 - br label %62 +.critedge: ; preds = %22, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %23 + %.pre43 = phi i64 [ %.pre4349, %22 ], [ %.pre43.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %.pre4349, %23 ] + %.pre42 = phi ptr [ %.pre4246, %22 ], [ %.pre42.pre, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %.pre4246, %23 ] + %59 = phi ptr [ %storemerge38, %22 ], [ %.pre41, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ %storemerge38, %23 ] + %60 = getelementptr inbounds i8, ptr %59, i64 1 + store ptr %60, ptr %4, align 8, !tbaa !45 + br label %61 -62: ; preds = %15, %.critedge +61: ; preds = %15, %.critedge %.pre4350 = phi i64 [ %.pre4349, %15 ], [ %.pre43, %.critedge ] %.pre4247 = phi ptr [ %.pre4246, %15 ], [ %.pre42, %.critedge ] - %63 = phi ptr [ %16, %15 ], [ %61, %.critedge ] - %64 = phi i64 [ %17, %15 ], [ %.pre43, %.critedge ] - %65 = phi ptr [ %18, %15 ], [ %.pre42, %.critedge ] - %66 = phi ptr [ %storemerge38, %15 ], [ %60, %.critedge ] - %67 = getelementptr inbounds nuw i8, ptr %66, i64 1 - store ptr %67, ptr %5, align 8 - %68 = getelementptr inbounds nuw i8, ptr %65, i64 %64 - %.not31 = icmp eq ptr %67, %68 + %62 = phi ptr [ %16, %15 ], [ %60, %.critedge ] + %63 = phi i64 [ %17, %15 ], [ %.pre43, %.critedge ] + %64 = phi ptr [ %18, %15 ], [ %.pre42, %.critedge ] + %65 = phi ptr [ %storemerge38, %15 ], [ %59, %.critedge ] + %66 = getelementptr inbounds nuw i8, ptr %65, i64 1 + store ptr %66, ptr %5, align 8 + %67 = getelementptr inbounds nuw i8, ptr %64, i64 %63 + %.not31 = icmp eq ptr %66, %67 br i1 %.not31, label %._crit_edge, label %15, !llvm.loop !512 -._crit_edge: ; preds = %62 - %.not32 = icmp eq ptr %63, %67 - br i1 %.not32, label %._crit_edge.thread, label %69 +._crit_edge: ; preds = %61 + %.not32 = icmp eq ptr %62, %66 + br i1 %.not32, label %._crit_edge.thread, label %68 -69: ; preds = %._crit_edge +68: ; preds = %._crit_edge call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #28 invoke void @_ZZN5boost7process2v16detail5posix10build_argsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEENKUlRKN9__gnu_cxx17__normal_iteratorIPKcS9_EESI_E_clB5cxx11ESI_SI_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %7, ptr noundef nonnull align 1 dereferenceable(1) %3, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) - to label %70 unwind label %99 - -70: ; preds = %69 - %71 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %72 = load ptr, ptr %71, align 8, !tbaa !45 - %73 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %74 = load ptr, ptr %73, align 8, !tbaa !116 - %.not.i = icmp eq ptr %72, %74 - br i1 %.not.i, label %91, label %75 - -75: ; preds = %70 - %76 = getelementptr inbounds nuw i8, ptr %72, i64 16 - store ptr %76, ptr %72, align 8, !tbaa !157 - %77 = load ptr, ptr %7, align 8, !tbaa !87 - %78 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %79 = icmp eq ptr %77, %78 - br i1 %79, label %80, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i - -80: ; preds = %75 - %81 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %82 = load i64, ptr %81, align 8, !tbaa !90 - %83 = icmp ult i64 %82, 16 - call void @llvm.assume(i1 %83) - %84 = add nuw nsw i64 %82, 1 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %76, ptr noundef nonnull align 8 dereferenceable(1) %78, i64 %84, i1 false) + to label %69 unwind label %98 + +69: ; preds = %68 + %70 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %71 = load ptr, ptr %70, align 8, !tbaa !45 + %72 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %73 = load ptr, ptr %72, align 8, !tbaa !116 + %.not.i = icmp eq ptr %71, %73 + br i1 %.not.i, label %90, label %74 + +74: ; preds = %69 + %75 = getelementptr inbounds nuw i8, ptr %71, i64 16 + store ptr %75, ptr %71, align 8, !tbaa !157 + %76 = load ptr, ptr %7, align 8, !tbaa !87 + %77 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %78 = icmp eq ptr %76, %77 + br i1 %78, label %79, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i + +79: ; preds = %74 + %80 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %81 = load i64, ptr %80, align 8, !tbaa !90 + %82 = icmp ult i64 %81, 16 + call void @llvm.assume(i1 %82) + %83 = add nuw nsw i64 %81, 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %75, ptr noundef nonnull align 8 dereferenceable(1) %77, i64 %83, i1 false) br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit.thread -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i: ; preds = %75 - store ptr %77, ptr %72, align 8, !tbaa !87 - %85 = load i64, ptr %78, align 8, !tbaa !71 - store i64 %85, ptr %76, align 8, !tbaa !71 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i: ; preds = %74 + store ptr %76, ptr %71, align 8, !tbaa !87 + %84 = load i64, ptr %77, align 8, !tbaa !71 + store i64 %84, ptr %75, align 8, !tbaa !71 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %7, i64 8 %.pre44 = load i64, ptr %.phi.trans.insert, align 8, !tbaa !90 br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit.thread -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit.thread: ; preds = %80, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i - %86 = phi i64 [ %.pre44, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i ], [ %82, %80 ] - %87 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %88 = getelementptr inbounds nuw i8, ptr %72, i64 8 - store i64 %86, ptr %88, align 8, !tbaa !90 - store i64 0, ptr %87, align 8, !tbaa !90 - %89 = load ptr, ptr %71, align 8, !tbaa !117 - %90 = getelementptr inbounds nuw i8, ptr %89, i64 32 - store ptr %90, ptr %71, align 8, !tbaa !117 +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit.thread: ; preds = %79, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i + %85 = phi i64 [ %.pre44, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i.i ], [ %81, %79 ] + %86 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %87 = getelementptr inbounds nuw i8, ptr %71, i64 8 + store i64 %85, ptr %87, align 8, !tbaa !90 + store i64 0, ptr %86, align 8, !tbaa !90 + %88 = load ptr, ptr %70, align 8, !tbaa !117 + %89 = getelementptr inbounds nuw i8, ptr %88, i64 32 + store ptr %89, ptr %70, align 8, !tbaa !117 br label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i23 -91: ; preds = %70 - invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %72, ptr noundef nonnull align 8 dereferenceable(32) %7) - to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit unwind label %101 +90: ; preds = %69 + invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %71, ptr noundef nonnull align 8 dereferenceable(32) %7) + to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit unwind label %100 -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit: ; preds = %91 +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit: ; preds = %90 %.pre45 = load ptr, ptr %7, align 8, !tbaa !87 - %92 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %93 = icmp eq ptr %.pre45, %92 - br i1 %93, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i23, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i22 + %91 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %92 = icmp eq ptr %.pre45, %91 + br i1 %92, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i23, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i22 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i23: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit.thread, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit - %94 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %95 = load i64, ptr %94, align 8, !tbaa !90 - %96 = icmp ult i64 %95, 16 - call void @llvm.assume(i1 %96) + %93 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %94 = load i64, ptr %93, align 8, !tbaa !90 + %95 = icmp ult i64 %94, 16 + call void @llvm.assume(i1 %95) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit24 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i22: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJS5_EEERS5_DpOT_.exit - %97 = load i64, ptr %92, align 8, !tbaa !71 - %98 = add i64 %97, 1 - call void @_ZdlPvm(ptr noundef %.pre45, i64 noundef %98) #30 + %96 = load i64, ptr %91, align 8, !tbaa !71 + %97 = add i64 %96, 1 + call void @_ZdlPvm(ptr noundef %.pre45, i64 noundef %97) #30 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit24 _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit24: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i23, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i22 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #28 br label %._crit_edge.thread -99: ; preds = %69 - %100 = landingpad { ptr, i32 } +98: ; preds = %68 + %99 = landingpad { ptr, i32 } cleanup br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27 -101: ; preds = %91 - %102 = landingpad { ptr, i32 } +100: ; preds = %90 + %101 = landingpad { ptr, i32 } cleanup - %103 = load ptr, ptr %7, align 8, !tbaa !87 - %104 = getelementptr inbounds nuw i8, ptr %7, i64 16 - %105 = icmp eq ptr %103, %104 - br i1 %105, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25 - -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26: ; preds = %101 - %106 = getelementptr inbounds nuw i8, ptr %7, i64 8 - %107 = load i64, ptr %106, align 8, !tbaa !90 - %108 = icmp ult i64 %107, 16 - call void @llvm.assume(i1 %108) + %102 = load ptr, ptr %7, align 8, !tbaa !87 + %103 = getelementptr inbounds nuw i8, ptr %7, i64 16 + %104 = icmp eq ptr %102, %103 + br i1 %104, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25 + +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26: ; preds = %100 + %105 = getelementptr inbounds nuw i8, ptr %7, i64 8 + %106 = load i64, ptr %105, align 8, !tbaa !90 + %107 = icmp ult i64 %106, 16 + call void @llvm.assume(i1 %107) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27 -_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25: ; preds = %101 - %109 = load i64, ptr %104, align 8, !tbaa !71 - %110 = add i64 %109, 1 - call void @_ZdlPvm(ptr noundef %103, i64 noundef %110) #30 +_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25: ; preds = %100 + %108 = load i64, ptr %103, align 8, !tbaa !71 + %109 = add i64 %108, 1 + call void @_ZdlPvm(ptr noundef %102, i64 noundef %109) #30 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27 -_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26, %99 - %.pn = phi { ptr, i32 } [ %100, %99 ], [ %102, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26 ], [ %102, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25 ] +_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26, %98 + %.pn = phi { ptr, i32 } [ %99, %98 ], [ %101, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i26 ], [ %101, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i25 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #28 - br label %111 + br label %110 ._crit_edge.thread: ; preds = %2, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit24, %._crit_edge call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #28 @@ -9862,7 +9860,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27: ; preds = %_ZN call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %3) #28 ret void -111: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 +110: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 %.pn15.pn = phi { ptr, i32 } [ %.pn15, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit20 ], [ %.pn, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit27 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #28 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #28 diff --git a/bench/boost/optimized/throw_on_error.ll b/bench/boost/optimized/throw_on_error.ll index 5a19b0a93be..038036f9191 100644 --- a/bench/boost/optimized/throw_on_error.ll +++ b/bench/boost/optimized/throw_on_error.ll @@ -1593,197 +1593,195 @@ define linkonce_odr hidden void @_ZN5boost7process2v16detail5posix9build_cmdIcEE %13 = getelementptr inbounds nuw i8, ptr %0, i64 16 br label %15 -._crit_edge: ; preds = %49, %2 - %14 = phi ptr [ %8, %2 ], [ %53, %49 ] - %.lcssa = phi ptr [ %11, %2 ], [ %55, %49 ] +._crit_edge: ; preds = %48, %2 + %14 = phi ptr [ %8, %2 ], [ %52, %48 ] + %.lcssa = phi ptr [ %11, %2 ], [ %54, %48 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #31 %.not24 = icmp eq ptr %14, %.lcssa - br i1 %.not24, label %82, label %56 - -15: ; preds = %.lr.ph, %49 - %16 = phi i64 [ %10, %.lr.ph ], [ %50, %49 ] - %17 = phi ptr [ %8, %.lr.ph ], [ %51, %49 ] - %18 = phi ptr [ %8, %.lr.ph ], [ %53, %49 ] - %.029 = phi i8 [ 0, %.lr.ph ], [ %.1, %49 ] - %storemerge28 = phi ptr [ %8, %.lr.ph ], [ %54, %49 ] + br i1 %.not24, label %81, label %55 + +15: ; preds = %.lr.ph, %48 + %16 = phi i64 [ %10, %.lr.ph ], [ %49, %48 ] + %17 = phi ptr [ %8, %.lr.ph ], [ %50, %48 ] + %18 = phi ptr [ %8, %.lr.ph ], [ %52, %48 ] + %.029 = phi i1 [ false, %.lr.ph ], [ %.1, %48 ] + %storemerge28 = phi ptr [ %8, %.lr.ph ], [ %53, %48 ] %19 = load i8, ptr %storemerge28, align 1, !tbaa !35 %20 = icmp eq i8 %19, 34 - %21 = zext i1 %20 to i8 - %.1 = xor i8 %.029, %21 - %.not25 = icmp ne i8 %.029, %21 - %22 = icmp ne i8 %19, 32 - %or.cond.not36 = or i1 %22, %.not25 + %.1 = xor i1 %.029, %20 + %21 = icmp ne i8 %19, 32 + %or.cond.not = or i1 %21, %.1 %.not = icmp eq ptr %storemerge28, %18 - %or.cond34 = select i1 %or.cond.not36, i1 true, i1 %.not - br i1 %or.cond34, label %49, label %25 + %or.cond = select i1 %or.cond.not, i1 true, i1 %.not + br i1 %or.cond, label %48, label %24 -23: ; preds = %46, %.noexc.i.i.i.i - %24 = landingpad { ptr, i32 } +22: ; preds = %45, %.noexc.i.i.i.i + %23 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #31 - br label %83 + br label %82 + +24: ; preds = %15 + %25 = load ptr, ptr %12, align 8, !tbaa !66 + %26 = load ptr, ptr %13, align 8, !tbaa !38 + %.not.i = icmp eq ptr %25, %26 + br i1 %.not.i, label %45, label %27 -25: ; preds = %15 - %26 = load ptr, ptr %12, align 8, !tbaa !66 - %27 = load ptr, ptr %13, align 8, !tbaa !38 - %.not.i = icmp eq ptr %26, %27 - br i1 %.not.i, label %46, label %28 - -28: ; preds = %25 - %29 = getelementptr inbounds nuw i8, ptr %26, i64 16 - store ptr %29, ptr %26, align 8, !tbaa !39 - %30 = getelementptr inbounds nuw i8, ptr %26, i64 8 - store i64 0, ptr %30, align 8, !tbaa !34 +27: ; preds = %24 + %28 = getelementptr inbounds nuw i8, ptr %25, i64 16 + store ptr %28, ptr %25, align 8, !tbaa !39 + %29 = getelementptr inbounds nuw i8, ptr %25, i64 8 + store i64 0, ptr %29, align 8, !tbaa !34 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #31 - %31 = ptrtoint ptr %storemerge28 to i64 - %32 = ptrtoint ptr %18 to i64 - %33 = sub i64 %31, %32 - store i64 %33, ptr %4, align 8, !tbaa !40 - %34 = icmp ugt i64 %33, 15 - br i1 %34, label %.noexc.i.i.i.i, label %._crit_edge.i.i.i.i.i + %30 = ptrtoint ptr %storemerge28 to i64 + %31 = ptrtoint ptr %18 to i64 + %32 = sub i64 %30, %31 + store i64 %32, ptr %4, align 8, !tbaa !40 + %33 = icmp ugt i64 %32, 15 + br i1 %33, label %.noexc.i.i.i.i, label %._crit_edge.i.i.i.i.i -.noexc.i.i.i.i: ; preds = %28 - %35 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull align 8 dereferenceable(8) %4, i64 noundef 0) - to label %.noexc unwind label %23 +.noexc.i.i.i.i: ; preds = %27 + %34 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 8 dereferenceable(8) %4, i64 noundef 0) + to label %.noexc unwind label %22 .noexc: ; preds = %.noexc.i.i.i.i - store ptr %35, ptr %26, align 8, !tbaa !30 - %36 = load i64, ptr %4, align 8, !tbaa !40 - store i64 %36, ptr %29, align 8, !tbaa !35 + store ptr %34, ptr %25, align 8, !tbaa !30 + %35 = load i64, ptr %4, align 8, !tbaa !40 + store i64 %35, ptr %28, align 8, !tbaa !35 br label %._crit_edge.i.i.i.i.i -._crit_edge.i.i.i.i.i: ; preds = %.noexc, %28 - %37 = phi ptr [ %35, %.noexc ], [ %29, %28 ] - switch i64 %33, label %40 [ - i64 1, label %38 +._crit_edge.i.i.i.i.i: ; preds = %.noexc, %27 + %36 = phi ptr [ %34, %.noexc ], [ %28, %27 ] + switch i64 %32, label %39 [ + i64 1, label %37 i64 0, label %_ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE9constructIS5_JRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEEvRS6_PT_DpOT0_.exit.i ] -38: ; preds = %._crit_edge.i.i.i.i.i - %39 = load i8, ptr %18, align 1, !tbaa !35 - store i8 %39, ptr %37, align 1, !tbaa !35 +37: ; preds = %._crit_edge.i.i.i.i.i + %38 = load i8, ptr %18, align 1, !tbaa !35 + store i8 %38, ptr %36, align 1, !tbaa !35 br label %_ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE9constructIS5_JRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEEvRS6_PT_DpOT0_.exit.i -40: ; preds = %._crit_edge.i.i.i.i.i - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %37, ptr align 1 %18, i64 %33, i1 false) +39: ; preds = %._crit_edge.i.i.i.i.i + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %36, ptr align 1 %18, i64 %32, i1 false) br label %_ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE9constructIS5_JRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEEvRS6_PT_DpOT0_.exit.i -_ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE9constructIS5_JRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEEvRS6_PT_DpOT0_.exit.i: ; preds = %40, %38, %._crit_edge.i.i.i.i.i - %41 = load i64, ptr %4, align 8, !tbaa !40 - store i64 %41, ptr %30, align 8, !tbaa !34 - %42 = load ptr, ptr %26, align 8, !tbaa !30 - %43 = getelementptr inbounds nuw i8, ptr %42, i64 %41 - store i8 0, ptr %43, align 1, !tbaa !35 +_ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE9constructIS5_JRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEEvRS6_PT_DpOT0_.exit.i: ; preds = %39, %37, %._crit_edge.i.i.i.i.i + %40 = load i64, ptr %4, align 8, !tbaa !40 + store i64 %40, ptr %29, align 8, !tbaa !34 + %41 = load ptr, ptr %25, align 8, !tbaa !30 + %42 = getelementptr inbounds nuw i8, ptr %41, i64 %40 + store i8 0, ptr %42, align 1, !tbaa !35 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #31 - %44 = load ptr, ptr %12, align 8, !tbaa !29 - %45 = getelementptr inbounds nuw i8, ptr %44, i64 32 - store ptr %45, ptr %12, align 8, !tbaa !29 + %43 = load ptr, ptr %12, align 8, !tbaa !29 + %44 = getelementptr inbounds nuw i8, ptr %43, i64 32 + store ptr %44, ptr %12, align 8, !tbaa !29 br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEERS5_DpOT_.exit -46: ; preds = %25 - invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEEvNSA_IPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %26, ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %6) - to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEERS5_DpOT_.exit unwind label %23 +45: ; preds = %24 + invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEEvNSA_IPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %25, ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %6) + to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEERS5_DpOT_.exit unwind label %22 -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEERS5_DpOT_.exit: ; preds = %46, %_ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE9constructIS5_JRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEEvRS6_PT_DpOT0_.exit.i - %47 = load ptr, ptr %6, align 8, !tbaa !67 - %48 = getelementptr inbounds i8, ptr %47, i64 1 - store ptr %48, ptr %5, align 8, !tbaa !66 +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEERS5_DpOT_.exit: ; preds = %45, %_ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE9constructIS5_JRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEEvRS6_PT_DpOT0_.exit.i + %46 = load ptr, ptr %6, align 8, !tbaa !67 + %47 = getelementptr inbounds i8, ptr %46, i64 1 + store ptr %47, ptr %5, align 8, !tbaa !66 %.pre = load ptr, ptr %1, align 8, !tbaa !30 %.pre31 = load i64, ptr %9, align 8, !tbaa !34 - br label %49 - -49: ; preds = %15, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEERS5_DpOT_.exit - %50 = phi i64 [ %16, %15 ], [ %.pre31, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEERS5_DpOT_.exit ] - %51 = phi ptr [ %17, %15 ], [ %.pre, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEERS5_DpOT_.exit ] - %52 = phi ptr [ %storemerge28, %15 ], [ %47, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEERS5_DpOT_.exit ] - %53 = phi ptr [ %18, %15 ], [ %48, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEERS5_DpOT_.exit ] - %54 = getelementptr inbounds nuw i8, ptr %52, i64 1 - store ptr %54, ptr %6, align 8 - %55 = getelementptr inbounds nuw i8, ptr %51, i64 %50 - %.not23 = icmp eq ptr %54, %55 + br label %48 + +48: ; preds = %15, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEERS5_DpOT_.exit + %49 = phi i64 [ %16, %15 ], [ %.pre31, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEERS5_DpOT_.exit ] + %50 = phi ptr [ %17, %15 ], [ %.pre, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEERS5_DpOT_.exit ] + %51 = phi ptr [ %storemerge28, %15 ], [ %46, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEERS5_DpOT_.exit ] + %52 = phi ptr [ %18, %15 ], [ %47, %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESE_EEERS5_DpOT_.exit ] + %53 = getelementptr inbounds nuw i8, ptr %51, i64 1 + store ptr %53, ptr %6, align 8 + %54 = getelementptr inbounds nuw i8, ptr %50, i64 %49 + %.not23 = icmp eq ptr %53, %54 br i1 %.not23, label %._crit_edge, label %15, !llvm.loop !69 -56: ; preds = %._crit_edge +55: ; preds = %._crit_edge call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #31 store ptr %.lcssa, ptr %7, align 8 - %57 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %58 = load ptr, ptr %57, align 8, !tbaa !66 - %59 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %60 = load ptr, ptr %59, align 8, !tbaa !38 - %.not.i14 = icmp eq ptr %58, %60 - br i1 %.not.i14, label %79, label %61 - -61: ; preds = %56 - %62 = getelementptr inbounds nuw i8, ptr %58, i64 16 - store ptr %62, ptr %58, align 8, !tbaa !39 - %63 = getelementptr inbounds nuw i8, ptr %58, i64 8 - store i64 0, ptr %63, align 8, !tbaa !34 + %56 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %57 = load ptr, ptr %56, align 8, !tbaa !66 + %58 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %59 = load ptr, ptr %58, align 8, !tbaa !38 + %.not.i14 = icmp eq ptr %57, %59 + br i1 %.not.i14, label %78, label %60 + +60: ; preds = %55 + %61 = getelementptr inbounds nuw i8, ptr %57, i64 16 + store ptr %61, ptr %57, align 8, !tbaa !39 + %62 = getelementptr inbounds nuw i8, ptr %57, i64 8 + store i64 0, ptr %62, align 8, !tbaa !34 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #31 - %64 = ptrtoint ptr %.lcssa to i64 - %65 = ptrtoint ptr %14 to i64 - %66 = sub i64 %64, %65 - store i64 %66, ptr %3, align 8, !tbaa !40 - %67 = icmp ugt i64 %66, 15 - br i1 %67, label %.noexc.i.i.i.i18, label %._crit_edge.i.i.i.i.i17 + %63 = ptrtoint ptr %.lcssa to i64 + %64 = ptrtoint ptr %14 to i64 + %65 = sub i64 %63, %64 + store i64 %65, ptr %3, align 8, !tbaa !40 + %66 = icmp ugt i64 %65, 15 + br i1 %66, label %.noexc.i.i.i.i18, label %._crit_edge.i.i.i.i.i17 -.noexc.i.i.i.i18: ; preds = %61 - %68 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %58, ptr noundef nonnull align 8 dereferenceable(8) %3, i64 noundef 0) - to label %.noexc20 unwind label %80 +.noexc.i.i.i.i18: ; preds = %60 + %67 = invoke noundef ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm(ptr noundef nonnull align 8 dereferenceable(32) %57, ptr noundef nonnull align 8 dereferenceable(8) %3, i64 noundef 0) + to label %.noexc20 unwind label %79 .noexc20: ; preds = %.noexc.i.i.i.i18 - store ptr %68, ptr %58, align 8, !tbaa !30 - %69 = load i64, ptr %3, align 8, !tbaa !40 - store i64 %69, ptr %62, align 8, !tbaa !35 + store ptr %67, ptr %57, align 8, !tbaa !30 + %68 = load i64, ptr %3, align 8, !tbaa !40 + store i64 %68, ptr %61, align 8, !tbaa !35 br label %._crit_edge.i.i.i.i.i17 -._crit_edge.i.i.i.i.i17: ; preds = %.noexc20, %61 - %70 = phi ptr [ %68, %.noexc20 ], [ %62, %61 ] - switch i64 %66, label %73 [ - i64 1, label %71 +._crit_edge.i.i.i.i.i17: ; preds = %.noexc20, %60 + %69 = phi ptr [ %67, %.noexc20 ], [ %61, %60 ] + switch i64 %65, label %72 [ + i64 1, label %70 i64 0, label %_ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE9constructIS5_JRN9__gnu_cxx17__normal_iteratorIPKcS5_EESD_EEEvRS6_PT_DpOT0_.exit.i ] -71: ; preds = %._crit_edge.i.i.i.i.i17 - %72 = load i8, ptr %14, align 1, !tbaa !35 - store i8 %72, ptr %70, align 1, !tbaa !35 +70: ; preds = %._crit_edge.i.i.i.i.i17 + %71 = load i8, ptr %14, align 1, !tbaa !35 + store i8 %71, ptr %69, align 1, !tbaa !35 br label %_ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE9constructIS5_JRN9__gnu_cxx17__normal_iteratorIPKcS5_EESD_EEEvRS6_PT_DpOT0_.exit.i -73: ; preds = %._crit_edge.i.i.i.i.i17 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %70, ptr align 1 %14, i64 %66, i1 false) +72: ; preds = %._crit_edge.i.i.i.i.i17 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %69, ptr align 1 %14, i64 %65, i1 false) br label %_ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE9constructIS5_JRN9__gnu_cxx17__normal_iteratorIPKcS5_EESD_EEEvRS6_PT_DpOT0_.exit.i -_ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE9constructIS5_JRN9__gnu_cxx17__normal_iteratorIPKcS5_EESD_EEEvRS6_PT_DpOT0_.exit.i: ; preds = %73, %71, %._crit_edge.i.i.i.i.i17 - %74 = load i64, ptr %3, align 8, !tbaa !40 - store i64 %74, ptr %63, align 8, !tbaa !34 - %75 = load ptr, ptr %58, align 8, !tbaa !30 - %76 = getelementptr inbounds nuw i8, ptr %75, i64 %74 - store i8 0, ptr %76, align 1, !tbaa !35 +_ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE9constructIS5_JRN9__gnu_cxx17__normal_iteratorIPKcS5_EESD_EEEvRS6_PT_DpOT0_.exit.i: ; preds = %72, %70, %._crit_edge.i.i.i.i.i17 + %73 = load i64, ptr %3, align 8, !tbaa !40 + store i64 %73, ptr %62, align 8, !tbaa !34 + %74 = load ptr, ptr %57, align 8, !tbaa !30 + %75 = getelementptr inbounds nuw i8, ptr %74, i64 %73 + store i8 0, ptr %75, align 1, !tbaa !35 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #31 - %77 = load ptr, ptr %57, align 8, !tbaa !29 - %78 = getelementptr inbounds nuw i8, ptr %77, i64 32 - store ptr %78, ptr %57, align 8, !tbaa !29 + %76 = load ptr, ptr %56, align 8, !tbaa !29 + %77 = getelementptr inbounds nuw i8, ptr %76, i64 32 + store ptr %77, ptr %56, align 8, !tbaa !29 br label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESD_EEERS5_DpOT_.exit -79: ; preds = %56 - invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESD_EEEvNSA_IPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %58, ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %7) - to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESD_EEERS5_DpOT_.exit unwind label %80 +78: ; preds = %55 + invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_insertIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESD_EEEvNSA_IPS5_S7_EEDpOT_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %57, ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %7) + to label %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESD_EEERS5_DpOT_.exit unwind label %79 -_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESD_EEERS5_DpOT_.exit: ; preds = %79, %_ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE9constructIS5_JRN9__gnu_cxx17__normal_iteratorIPKcS5_EESD_EEEvRS6_PT_DpOT0_.exit.i +_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESD_EEERS5_DpOT_.exit: ; preds = %78, %_ZNSt16allocator_traitsISaINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE9constructIS5_JRN9__gnu_cxx17__normal_iteratorIPKcS5_EESD_EEEvRS6_PT_DpOT0_.exit.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #31 - br label %82 + br label %81 -80: ; preds = %79, %.noexc.i.i.i.i18 - %81 = landingpad { ptr, i32 } +79: ; preds = %78, %.noexc.i.i.i.i18 + %80 = landingpad { ptr, i32 } cleanup call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #31 - br label %83 + br label %82 -82: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESD_EEERS5_DpOT_.exit, %._crit_edge +81: ; preds = %_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12emplace_backIJRN9__gnu_cxx17__normal_iteratorIPKcS5_EESD_EEERS5_DpOT_.exit, %._crit_edge call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #31 ret void -83: ; preds = %80, %23 - %.pn = phi { ptr, i32 } [ %24, %23 ], [ %81, %80 ] +82: ; preds = %79, %22 + %.pn = phi { ptr, i32 } [ %23, %22 ], [ %80, %79 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #31 call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #31 resume { ptr, i32 } %.pn diff --git a/bench/graphviz/optimized/matrix_ops.c.ll b/bench/graphviz/optimized/matrix_ops.c.ll index f0c027d2c20..1b94545a309 100644 --- a/bench/graphviz/optimized/matrix_ops.c.ll +++ b/bench/graphviz/optimized/matrix_ops.c.ll @@ -276,7 +276,7 @@ vectors_inner_product.exit235.loopexit: ; preds = %.lr.ph.i230 %.not7.i245 = icmp eq i32 %1, 0 %88 = zext nneg i32 %.0148307 to i64 %wide.trip.count385 = zext i32 %spec.select to i64 - br label %113 + br label %114 .preheader: ; preds = %82, %vectors_scalar_mult.exit267.loopexit, %.loopexit %.2155413 = phi i32 [ %.2155, %.loopexit ], [ %.2155, %vectors_scalar_mult.exit267.loopexit ], [ %51, %82 ] @@ -300,9 +300,9 @@ vectors_inner_product.exit235.loopexit: ; preds = %.lr.ph.i230 %wide.trip.count404 = zext nneg i32 %spec.select to i64 br label %.lr.ph330.us.preheader -.lr.ph330.us.preheader: ; preds = %108, %.lr.ph335.split.us.preheader - %indvars.iv406 = phi i64 [ 0, %.lr.ph335.split.us.preheader ], [ %indvars.iv.next407, %108 ] - %indvars.iv399 = phi i64 [ 1, %.lr.ph335.split.us.preheader ], [ %indvars.iv.next400, %108 ] +.lr.ph330.us.preheader: ; preds = %109, %.lr.ph335.split.us.preheader + %indvars.iv406 = phi i64 [ 0, %.lr.ph335.split.us.preheader ], [ %indvars.iv.next407, %109 ] + %indvars.iv399 = phi i64 [ 1, %.lr.ph335.split.us.preheader ], [ %indvars.iv.next400, %109 ] %94 = getelementptr inbounds double, ptr %4, i64 %indvars.iv406 %indvars.iv.next407 = add nuw nsw i64 %indvars.iv406, 1 %95 = trunc nuw nsw i64 %indvars.iv406 to i32 @@ -312,36 +312,37 @@ vectors_inner_product.exit235.loopexit: ; preds = %.lr.ph.i230 ._crit_edge331.us: ; preds = %.lr.ph330.us %97 = zext i32 %.1152.us to i64 %.not169.us = icmp eq i64 %indvars.iv406, %97 - br i1 %.not169.us, label %108, label %.lr.ph.preheader.i268.us + br i1 %.not169.us, label %109, label %.lr.ph.preheader.i268.us .lr.ph.preheader.i268.us: ; preds = %._crit_edge331.us %98 = getelementptr inbounds ptr, ptr %3, i64 %indvars.iv406 %99 = load ptr, ptr %98, align 8 tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %7, ptr align 8 %99, i64 %93, i1 false) - %100 = getelementptr inbounds ptr, ptr %3, i64 %97 - %101 = load ptr, ptr %100, align 8 + %100 = sext i32 %.1152.us to i64 + %101 = getelementptr inbounds ptr, ptr %3, i64 %100 + %102 = load ptr, ptr %101, align 8 br label %.lr.ph.i277.us .lr.ph.i277.us: ; preds = %.lr.ph.i277.us, %.lr.ph.preheader.i268.us %indvars.iv.i278.us = phi i64 [ 0, %.lr.ph.preheader.i268.us ], [ %indvars.iv.next.i279.us, %.lr.ph.i277.us ] - %102 = getelementptr inbounds double, ptr %101, i64 %indvars.iv.i278.us - %103 = load double, ptr %102, align 8 - %104 = getelementptr inbounds double, ptr %99, i64 %indvars.iv.i278.us - store double %103, ptr %104, align 8 + %103 = getelementptr inbounds double, ptr %102, i64 %indvars.iv.i278.us + %104 = load double, ptr %103, align 8 + %105 = getelementptr inbounds double, ptr %99, i64 %indvars.iv.i278.us + store double %104, ptr %105, align 8 %indvars.iv.next.i279.us = add nuw nsw i64 %indvars.iv.i278.us, 1 %exitcond.not.i280.us = icmp eq i64 %indvars.iv.next.i279.us, %wide.trip.count.i269 br i1 %exitcond.not.i280.us, label %copy_vector.exit281.us, label %.lr.ph.i277.us copy_vector.exit281.us: ; preds = %.lr.ph.i277.us - %105 = load ptr, ptr %100, align 8 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %105, ptr align 8 %7, i64 %93, i1 false) - %106 = load double, ptr %94, align 8 - %107 = getelementptr inbounds double, ptr %4, i64 %97 - store double %106, ptr %107, align 8 + %106 = load ptr, ptr %101, align 8 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %106, ptr align 8 %7, i64 %93, i1 false) + %107 = load double, ptr %94, align 8 + %108 = getelementptr inbounds double, ptr %4, i64 %100 + store double %107, ptr %108, align 8 store double %.1150.us, ptr %94, align 8 - br label %108 + br label %109 -108: ; preds = %copy_vector.exit281.us, %._crit_edge331.us +109: ; preds = %copy_vector.exit281.us, %._crit_edge331.us %indvars.iv.next400 = add nuw nsw i64 %indvars.iv399, 1 %exitcond410.not = icmp eq i64 %indvars.iv.next407, %wide.trip.count409 br i1 %exitcond410.not, label %._crit_edge336, label %.lr.ph330.us.preheader @@ -350,72 +351,72 @@ copy_vector.exit281.us: ; preds = %.lr.ph.i277.us %indvars.iv401 = phi i64 [ %indvars.iv399, %.lr.ph330.us.preheader ], [ %indvars.iv.next402, %.lr.ph330.us ] %.0149328.us = phi double [ %96, %.lr.ph330.us.preheader ], [ %.1150.us, %.lr.ph330.us ] %.0151327.us = phi i32 [ %95, %.lr.ph330.us.preheader ], [ %.1152.us, %.lr.ph330.us ] - %109 = getelementptr inbounds double, ptr %4, i64 %indvars.iv401 - %110 = load double, ptr %109, align 8 - %111 = fcmp olt double %.0149328.us, %110 - %112 = trunc nuw nsw i64 %indvars.iv401 to i32 - %.1152.us = select i1 %111, i32 %112, i32 %.0151327.us - %.1150.us = select i1 %111, double %110, double %.0149328.us + %110 = getelementptr inbounds double, ptr %4, i64 %indvars.iv401 + %111 = load double, ptr %110, align 8 + %112 = fcmp olt double %.0149328.us, %111 + %113 = trunc nuw nsw i64 %indvars.iv401 to i32 + %.1152.us = select i1 %112, i32 %113, i32 %.0151327.us + %.1150.us = select i1 %112, double %111, double %.0149328.us %indvars.iv.next402 = add nuw nsw i64 %indvars.iv401, 1 %exitcond405.not = icmp eq i64 %indvars.iv.next402, %wide.trip.count404 br i1 %exitcond405.not, label %._crit_edge331.us, label %.lr.ph330.us -113: ; preds = %.lr.ph325, %vectors_scalar_mult.exit267.loopexit +114: ; preds = %.lr.ph325, %vectors_scalar_mult.exit267.loopexit %indvars.iv382 = phi i64 [ %88, %.lr.ph325 ], [ %indvars.iv.next383, %vectors_scalar_mult.exit267.loopexit ] - %114 = getelementptr inbounds ptr, ptr %3, i64 %indvars.iv382 - %115 = load ptr, ptr %114, align 8 + %115 = getelementptr inbounds ptr, ptr %3, i64 %indvars.iv382 + %116 = load ptr, ptr %115, align 8 br i1 %87, label %.lr.ph319, label %.preheader291 -.preheader291: ; preds = %.lr.ph319, %113 +.preheader291: ; preds = %.lr.ph319, %114 %.not338 = icmp eq i64 %indvars.iv382, 0 br i1 %.not338, label %.lr.ph.i.i255.preheader, label %.lr.ph321 -.lr.ph319: ; preds = %113, %.lr.ph319 - %indvars.iv372 = phi i64 [ %indvars.iv.next373, %.lr.ph319 ], [ 0, %113 ] - %116 = tail call i32 @rand() #18 - %117 = srem i32 %116, 100 - %118 = sitofp i32 %117 to double - %119 = getelementptr inbounds double, ptr %115, i64 %indvars.iv372 - store double %118, ptr %119, align 8 +.lr.ph319: ; preds = %114, %.lr.ph319 + %indvars.iv372 = phi i64 [ %indvars.iv.next373, %.lr.ph319 ], [ 0, %114 ] + %117 = tail call i32 @rand() #18 + %118 = srem i32 %117, 100 + %119 = sitofp i32 %118 to double + %120 = getelementptr inbounds double, ptr %116, i64 %indvars.iv372 + store double %119, ptr %120, align 8 %indvars.iv.next373 = add nuw nsw i64 %indvars.iv372, 1 %exitcond376.not = icmp eq i64 %indvars.iv.next373, %wide.trip.count.i238 br i1 %exitcond376.not, label %.preheader291, label %.lr.ph319 .lr.ph321: ; preds = %.preheader291, %scadd.exit251 %indvars.iv377 = phi i64 [ %indvars.iv.next378, %scadd.exit251 ], [ 0, %.preheader291 ] - %120 = getelementptr inbounds ptr, ptr %3, i64 %indvars.iv377 - %121 = load ptr, ptr %120, align 8 + %121 = getelementptr inbounds ptr, ptr %3, i64 %indvars.iv377 + %122 = load ptr, ptr %121, align 8 br i1 %87, label %.lr.ph.i239, label %vectors_inner_product.exit244 .lr.ph.i239: ; preds = %.lr.ph321, %.lr.ph.i239 %indvars.iv.i240 = phi i64 [ %indvars.iv.next.i242, %.lr.ph.i239 ], [ 0, %.lr.ph321 ] - %.010.i241 = phi double [ %126, %.lr.ph.i239 ], [ 0.000000e+00, %.lr.ph321 ] - %122 = getelementptr inbounds double, ptr %121, i64 %indvars.iv.i240 - %123 = load double, ptr %122, align 8 - %124 = getelementptr inbounds double, ptr %115, i64 %indvars.iv.i240 - %125 = load double, ptr %124, align 8 - %126 = tail call double @llvm.fmuladd.f64(double %123, double %125, double %.010.i241) + %.010.i241 = phi double [ %127, %.lr.ph.i239 ], [ 0.000000e+00, %.lr.ph321 ] + %123 = getelementptr inbounds double, ptr %122, i64 %indvars.iv.i240 + %124 = load double, ptr %123, align 8 + %125 = getelementptr inbounds double, ptr %116, i64 %indvars.iv.i240 + %126 = load double, ptr %125, align 8 + %127 = tail call double @llvm.fmuladd.f64(double %124, double %126, double %.010.i241) %indvars.iv.next.i242 = add nuw nsw i64 %indvars.iv.i240, 1 %exitcond.not.i243 = icmp eq i64 %indvars.iv.next.i242, %wide.trip.count.i238 br i1 %exitcond.not.i243, label %vectors_inner_product.exit244, label %.lr.ph.i239 vectors_inner_product.exit244: ; preds = %.lr.ph.i239, %.lr.ph321 - %.0.lcssa.i236 = phi double [ 0.000000e+00, %.lr.ph321 ], [ %126, %.lr.ph.i239 ] - %127 = fneg double %.0.lcssa.i236 + %.0.lcssa.i236 = phi double [ 0.000000e+00, %.lr.ph321 ], [ %127, %.lr.ph.i239 ] + %128 = fneg double %.0.lcssa.i236 br i1 %.not7.i245, label %scadd.exit251, label %.lr.ph.i246 .lr.ph.i246: ; preds = %vectors_inner_product.exit244, %.lr.ph.i246 - %.010.i247 = phi i32 [ %133, %.lr.ph.i246 ], [ %1, %vectors_inner_product.exit244 ] - %.059.i248 = phi ptr [ %128, %.lr.ph.i246 ], [ %121, %vectors_inner_product.exit244 ] - %.068.i249 = phi ptr [ %130, %.lr.ph.i246 ], [ %115, %vectors_inner_product.exit244 ] - %128 = getelementptr inbounds i8, ptr %.059.i248, i64 8 - %129 = load double, ptr %.059.i248, align 8 - %130 = getelementptr inbounds i8, ptr %.068.i249, i64 8 - %131 = load double, ptr %.068.i249, align 8 - %132 = tail call double @llvm.fmuladd.f64(double %127, double %129, double %131) - store double %132, ptr %.068.i249, align 8 - %133 = add nsw i32 %.010.i247, -1 - %.not.i250 = icmp eq i32 %133, 0 + %.010.i247 = phi i32 [ %134, %.lr.ph.i246 ], [ %1, %vectors_inner_product.exit244 ] + %.059.i248 = phi ptr [ %129, %.lr.ph.i246 ], [ %122, %vectors_inner_product.exit244 ] + %.068.i249 = phi ptr [ %131, %.lr.ph.i246 ], [ %116, %vectors_inner_product.exit244 ] + %129 = getelementptr inbounds i8, ptr %.059.i248, i64 8 + %130 = load double, ptr %.059.i248, align 8 + %131 = getelementptr inbounds i8, ptr %.068.i249, i64 8 + %132 = load double, ptr %.068.i249, align 8 + %133 = tail call double @llvm.fmuladd.f64(double %128, double %130, double %132) + store double %133, ptr %.068.i249, align 8 + %134 = add nsw i32 %.010.i247, -1 + %.not.i250 = icmp eq i32 %134, 0 br i1 %.not.i250, label %scadd.exit251, label %.lr.ph.i246 scadd.exit251: ; preds = %.lr.ph.i246, %vectors_inner_product.exit244 @@ -428,46 +429,46 @@ scadd.exit251: ; preds = %.lr.ph.i246, %vecto .lr.ph.i.i255: ; preds = %.lr.ph.i.i255.preheader, %.lr.ph.i.i255 %indvars.iv.i.i256 = phi i64 [ %indvars.iv.next.i.i258, %.lr.ph.i.i255 ], [ 0, %.lr.ph.i.i255.preheader ] - %.010.i.i257 = phi double [ %136, %.lr.ph.i.i255 ], [ 0.000000e+00, %.lr.ph.i.i255.preheader ] - %134 = getelementptr inbounds double, ptr %115, i64 %indvars.iv.i.i256 - %135 = load double, ptr %134, align 8 - %136 = tail call double @llvm.fmuladd.f64(double %135, double %135, double %.010.i.i257) + %.010.i.i257 = phi double [ %137, %.lr.ph.i.i255 ], [ 0.000000e+00, %.lr.ph.i.i255.preheader ] + %135 = getelementptr inbounds double, ptr %116, i64 %indvars.iv.i.i256 + %136 = load double, ptr %135, align 8 + %137 = tail call double @llvm.fmuladd.f64(double %136, double %136, double %.010.i.i257) %indvars.iv.next.i.i258 = add nuw nsw i64 %indvars.iv.i.i256, 1 %exitcond.not.i.i259 = icmp eq i64 %indvars.iv.next.i.i258, %wide.trip.count.i238 br i1 %exitcond.not.i.i259, label %norm.exit260, label %.lr.ph.i.i255 norm.exit260: ; preds = %.lr.ph.i.i255 - %137 = tail call double @sqrt(double noundef %136) #18 - %138 = fdiv double 1.000000e+00, %137 + %138 = tail call double @sqrt(double noundef %137) #18 + %139 = fdiv double 1.000000e+00, %138 br label %.lr.ph.i263 .lr.ph.i263: ; preds = %.lr.ph.i263, %norm.exit260 %indvars.iv.i264 = phi i64 [ 0, %norm.exit260 ], [ %indvars.iv.next.i265, %.lr.ph.i263 ] - %139 = getelementptr inbounds double, ptr %115, i64 %indvars.iv.i264 - %140 = load double, ptr %139, align 8 - %141 = fmul double %138, %140 - store double %141, ptr %139, align 8 + %140 = getelementptr inbounds double, ptr %116, i64 %indvars.iv.i264 + %141 = load double, ptr %140, align 8 + %142 = fmul double %139, %141 + store double %142, ptr %140, align 8 %indvars.iv.next.i265 = add nuw nsw i64 %indvars.iv.i264, 1 %exitcond.not.i266 = icmp eq i64 %indvars.iv.next.i265, %wide.trip.count.i238 br i1 %exitcond.not.i266, label %vectors_scalar_mult.exit267.loopexit, label %.lr.ph.i263 vectors_scalar_mult.exit267.loopexit: ; preds = %.lr.ph.i263 - %142 = getelementptr inbounds double, ptr %4, i64 %indvars.iv382 - store double 0.000000e+00, ptr %142, align 8 + %143 = getelementptr inbounds double, ptr %4, i64 %indvars.iv382 + store double 0.000000e+00, ptr %143, align 8 %indvars.iv.next383 = add nuw nsw i64 %indvars.iv382, 1 %exitcond386.not = icmp eq i64 %indvars.iv.next383, %wide.trip.count385 - br i1 %exitcond386.not, label %.preheader, label %113 + br i1 %exitcond386.not, label %.preheader, label %114 .lr.ph330: ; preds = %.lr.ph335.split.preheader, %.lr.ph330 %indvars.iv389 = phi i64 [ 1, %.lr.ph335.split.preheader ], [ %indvars.iv.next390, %.lr.ph330 ] %.0149328 = phi double [ %92, %.lr.ph335.split.preheader ], [ %.1150, %.lr.ph330 ] %.0151327 = phi i32 [ 0, %.lr.ph335.split.preheader ], [ %.1152, %.lr.ph330 ] - %143 = getelementptr inbounds double, ptr %4, i64 %indvars.iv389 - %144 = load double, ptr %143, align 8 - %145 = fcmp olt double %.0149328, %144 - %146 = trunc nuw nsw i64 %indvars.iv389 to i32 - %.1152 = select i1 %145, i32 %146, i32 %.0151327 - %.1150 = select i1 %145, double %144, double %.0149328 + %144 = getelementptr inbounds double, ptr %4, i64 %indvars.iv389 + %145 = load double, ptr %144, align 8 + %146 = fcmp olt double %.0149328, %145 + %147 = trunc nuw nsw i64 %indvars.iv389 to i32 + %.1152 = select i1 %146, i32 %147, i32 %.0151327 + %.1150 = select i1 %146, double %145, double %.0149328 %indvars.iv.next390 = add nuw nsw i64 %indvars.iv389, 1 %exitcond393.not = icmp eq i64 %indvars.iv.next390, %wide.trip.count392 br i1 %exitcond393.not, label %._crit_edge331, label %.lr.ph330 @@ -477,17 +478,17 @@ vectors_scalar_mult.exit267.loopexit: ; preds = %.lr.ph.i263 br i1 %.not169, label %._crit_edge336, label %copy_vector.exit274.thread copy_vector.exit274.thread: ; preds = %._crit_edge331 - %147 = zext i32 %.1152 to i64 - %148 = getelementptr inbounds double, ptr %4, i64 %147 - store double %92, ptr %148, align 8 + %148 = sext i32 %.1152 to i64 + %149 = getelementptr inbounds double, ptr %4, i64 %148 + store double %92, ptr %149, align 8 store double %.1150, ptr %4, align 8 br label %._crit_edge336 -._crit_edge336: ; preds = %108, %._crit_edge331, %copy_vector.exit274.thread, %.preheader +._crit_edge336: ; preds = %109, %._crit_edge331, %copy_vector.exit274.thread, %.preheader tail call void @free(ptr noundef %7) #18 tail call void @free(ptr noundef %8) #18 - %149 = icmp sle i32 %.2155413, %9 - ret i1 %149 + %150 = icmp sle i32 %.2155413, %9 + ret i1 %150 } ; Function Attrs: nofree nounwind uwtable diff --git a/bench/gromacs/optimized/dlasdq.cpp.ll b/bench/gromacs/optimized/dlasdq.cpp.ll index 73bebd3aedd..f531bf7c8b8 100644 --- a/bench/gromacs/optimized/dlasdq.cpp.ll +++ b/bench/gromacs/optimized/dlasdq.cpp.ll @@ -364,9 +364,9 @@ define void @dlasdq_(ptr nocapture noundef readonly %0, ptr nocapture noundef re %invariant.gep333 = getelementptr double, ptr %35, i64 %203 br label %.lr.ph296 -.lr.ph296: ; preds = %.lr.ph296.preheader, %238 - %indvars.iv322 = phi i64 [ 1, %.lr.ph296.preheader ], [ %indvars.iv.next323, %238 ] - %indvars.iv316 = phi i64 [ 2, %.lr.ph296.preheader ], [ %indvars.iv.next317, %238 ] +.lr.ph296: ; preds = %.lr.ph296.preheader, %239 + %indvars.iv322 = phi i64 [ 1, %.lr.ph296.preheader ], [ %indvars.iv.next323, %239 ] + %indvars.iv316 = phi i64 [ 2, %.lr.ph296.preheader ], [ %indvars.iv.next317, %239 ] %205 = getelementptr inbounds double, ptr %25, i64 %indvars.iv322 %206 = load double, ptr %205, align 8 %207 = load i32, ptr %2, align 4 @@ -400,52 +400,53 @@ define void @dlasdq_(ptr nocapture noundef readonly %0, ptr nocapture noundef re %.0247.lcssa = phi double [ %206, %.lr.ph296 ], [ %.1, %.lr.ph288 ] %215 = zext i32 %.0248.lcssa to i64 %.not264 = icmp eq i64 %indvars.iv322, %215 - br i1 %.not264, label %238, label %216 + br i1 %.not264, label %239, label %216 216: ; preds = %._crit_edge289 - %217 = getelementptr inbounds double, ptr %25, i64 %215 - store double %206, ptr %217, align 8 + %217 = sext i32 %.0248.lcssa to i64 + %218 = getelementptr inbounds double, ptr %25, i64 %217 + store double %206, ptr %218, align 8 store double %.0247.lcssa, ptr %205, align 8 - %218 = load i32, ptr %3, align 4 - %219 = icmp sgt i32 %218, 0 - br i1 %219, label %220, label %224 - -220: ; preds = %216 - %221 = add nsw i32 %.0248.lcssa, %27 - %222 = sext i32 %221 to i64 - %223 = getelementptr inbounds double, ptr %29, i64 %222 + %219 = load i32, ptr %3, align 4 + %220 = icmp sgt i32 %219, 0 + br i1 %220, label %221, label %225 + +221: ; preds = %216 + %222 = add nsw i32 %.0248.lcssa, %27 + %223 = sext i32 %222 to i64 + %224 = getelementptr inbounds double, ptr %29, i64 %223 %gep332 = getelementptr double, ptr %invariant.gep331, i64 %indvars.iv322 - call void @dswap_(ptr noundef nonnull %3, ptr noundef %223, ptr noundef nonnull %9, ptr noundef %gep332, ptr noundef nonnull %9) - br label %224 - -224: ; preds = %220, %216 - %225 = load i32, ptr %4, align 4 - %226 = icmp sgt i32 %225, 0 - br i1 %226, label %227, label %231 - -227: ; preds = %224 - %228 = mul nsw i32 %.0248.lcssa, %30 - %229 = sext i32 %228 to i64 - %gep = getelementptr double, ptr %invariant.gep, i64 %229 - %230 = mul nsw i64 %indvars.iv322, %202 - %gep292 = getelementptr double, ptr %invariant.gep, i64 %230 + call void @dswap_(ptr noundef nonnull %3, ptr noundef %224, ptr noundef nonnull %9, ptr noundef %gep332, ptr noundef nonnull %9) + br label %225 + +225: ; preds = %221, %216 + %226 = load i32, ptr %4, align 4 + %227 = icmp sgt i32 %226, 0 + br i1 %227, label %228, label %232 + +228: ; preds = %225 + %229 = mul nsw i32 %.0248.lcssa, %30 + %230 = sext i32 %229 to i64 + %gep = getelementptr double, ptr %invariant.gep, i64 %230 + %231 = mul nsw i64 %indvars.iv322, %202 + %gep292 = getelementptr double, ptr %invariant.gep, i64 %231 call void @dswap_(ptr noundef nonnull %4, ptr noundef %gep, ptr noundef nonnull %17, ptr noundef %gep292, ptr noundef nonnull %17) - br label %231 + br label %232 -231: ; preds = %227, %224 - %232 = load i32, ptr %5, align 4 - %233 = icmp sgt i32 %232, 0 - br i1 %233, label %234, label %238 +232: ; preds = %228, %225 + %233 = load i32, ptr %5, align 4 + %234 = icmp sgt i32 %233, 0 + br i1 %234, label %235, label %239 -234: ; preds = %231 - %235 = add nsw i32 %.0248.lcssa, %33 - %236 = sext i32 %235 to i64 - %237 = getelementptr inbounds double, ptr %35, i64 %236 +235: ; preds = %232 + %236 = add nsw i32 %.0248.lcssa, %33 + %237 = sext i32 %236 to i64 + %238 = getelementptr inbounds double, ptr %35, i64 %237 %gep334 = getelementptr double, ptr %invariant.gep333, i64 %indvars.iv322 - call void @dswap_(ptr noundef nonnull %5, ptr noundef %237, ptr noundef nonnull %13, ptr noundef %gep334, ptr noundef nonnull %13) - br label %238 + call void @dswap_(ptr noundef nonnull %5, ptr noundef %238, ptr noundef nonnull %13, ptr noundef %gep334, ptr noundef nonnull %13) + br label %239 -238: ; preds = %._crit_edge289, %234, %231 +239: ; preds = %._crit_edge289, %235, %232 %indvars.iv.next317 = add nuw nsw i64 %indvars.iv316, 1 %exitcond326.not = icmp eq i64 %indvars.iv.next323, %wide.trip.count325 br i1 %exitcond326.not, label %.thread267, label %.lr.ph296, !llvm.loop !8 @@ -455,7 +456,7 @@ define void @dlasdq_(ptr nocapture noundef readonly %0, ptr nocapture noundef re store i32 %.sink338, ptr %15, align 4 br label %.thread267 -.thread267: ; preds = %238, %.thread267.sink.split, %199, %72 +.thread267: ; preds = %239, %.thread267.sink.split, %199, %72 ret void } diff --git a/bench/gromacs/optimized/gmx_mindist.cpp.ll b/bench/gromacs/optimized/gmx_mindist.cpp.ll index 1a36b6e55bb..57ff7e560a9 100644 --- a/bench/gromacs/optimized/gmx_mindist.cpp.ll +++ b/bench/gromacs/optimized/gmx_mindist.cpp.ll @@ -4114,22 +4114,21 @@ define internal fastcc void @_ZL9calc_distfb7PbcTypePA3_fS1_iiPiS2_bPfS3_S2_S2_S .lr.ph108: ; preds = %.preheader %25 = getelementptr inbounds i8, ptr %19, i64 4 %26 = getelementptr inbounds i8, ptr %19, i64 8 - %wide.trip.count186 = zext nneg i32 %. to i64 - %wide.trip.count181 = zext i32 %5 to i64 + %wide.trip.count185 = zext nneg i32 %. to i64 br i1 %1, label %.lr.ph108.split.us, label %.lr.ph108.split .lr.ph108.split.us: ; preds = %.lr.ph108 br i1 %9, label %.lr.ph108.split.us.split.us, label %.lr.ph108.split.us.split .lr.ph108.split.us.split.us: ; preds = %.lr.ph108.split.us, %.thread - %indvars.iv183 = phi i64 [ %indvars.iv.next184, %.thread ], [ 0, %.lr.ph108.split.us ] - %.073107.us.us = phi float [ %.174.lcssa.us.us193198, %.thread ], [ 0xC26D1A94A0000000, %.lr.ph108.split.us ] - %.075106.us.us = phi float [ %.176.lcssa.us.us192199, %.thread ], [ 0x426D1A94A0000000, %.lr.ph108.split.us ] + %indvars.iv182 = phi i64 [ %indvars.iv.next183, %.thread ], [ 0, %.lr.ph108.split.us ] + %.073107.us.us = phi float [ %.174.lcssa.us.us192197, %.thread ], [ 0xC26D1A94A0000000, %.lr.ph108.split.us ] + %.075106.us.us = phi float [ %.176.lcssa.us.us191198, %.thread ], [ 0x426D1A94A0000000, %.lr.ph108.split.us ] %.182104.us.us = phi i32 [ %spec.select.us.us, %.thread ], [ 0, %.lr.ph108.split.us ] - %27 = getelementptr inbounds i32, ptr %.92, i64 %indvars.iv183 + %27 = getelementptr inbounds i32, ptr %.92, i64 %indvars.iv182 %28 = load i32, ptr %27, align 4 - %indvars.iv.next184 = add nuw nsw i64 %indvars.iv183, 1 - %29 = trunc nuw nsw i64 %indvars.iv.next184 to i32 + %indvars.iv.next183 = add nuw nsw i64 %indvars.iv182, 1 + %29 = trunc nuw nsw i64 %indvars.iv.next183 to i32 %spec.select.us.us = select i1 %.not, i32 %29, i32 %.182104.us.us %30 = icmp slt i32 %spec.select.us.us, %5 br i1 %30, label %.lr.ph.us.us, label %.thread @@ -4155,24 +4154,24 @@ define internal fastcc void @_ZL9calc_distfb7PbcTypePA3_fS1_iiPiS2_bPfS3_S2_S2_S br label %.thread .thread: ; preds = %.lr.ph108.split.us.split.us, %33, %37, %36 - %.176.lcssa.us.us192199 = phi float [ %.378.us.us.us, %37 ], [ %.378.us.us.us, %36 ], [ %.378.us.us.us, %33 ], [ %.075106.us.us, %.lr.ph108.split.us.split.us ] - %.174.lcssa.us.us193198 = phi float [ %.3.us.us.us, %37 ], [ %.3.us.us.us, %36 ], [ %.3.us.us.us, %33 ], [ %.073107.us.us, %.lr.ph108.split.us.split.us ] - %exitcond187.not = icmp eq i64 %indvars.iv.next184, %wide.trip.count186 - br i1 %exitcond187.not, label %._crit_edge109, label %.lr.ph108.split.us.split.us, !llvm.loop !36 + %.176.lcssa.us.us191198 = phi float [ %.378.us.us.us, %37 ], [ %.378.us.us.us, %36 ], [ %.378.us.us.us, %33 ], [ %.075106.us.us, %.lr.ph108.split.us.split.us ] + %.174.lcssa.us.us192197 = phi float [ %.3.us.us.us, %37 ], [ %.3.us.us.us, %36 ], [ %.3.us.us.us, %33 ], [ %.073107.us.us, %.lr.ph108.split.us.split.us ] + %exitcond186.not = icmp eq i64 %indvars.iv.next183, %wide.trip.count185 + br i1 %exitcond186.not, label %._crit_edge109, label %.lr.ph108.split.us.split.us, !llvm.loop !36 .lr.ph.us.us: ; preds = %.lr.ph108.split.us.split.us %40 = sext i32 %28 to i64 %41 = getelementptr inbounds [3 x float], ptr %4, i64 %40 - %42 = zext nneg i32 %spec.select.us.us to i64 + %42 = sext i32 %spec.select.us.us to i64 br label %43 43: ; preds = %66, %.lr.ph.us.us - %indvars.iv178 = phi i64 [ %indvars.iv.next179, %66 ], [ %42, %.lr.ph.us.us ] + %indvars.iv177 = phi i64 [ %indvars.iv.next178, %66 ], [ %42, %.lr.ph.us.us ] %.097.us.us.us = phi i32 [ %.1.us.us.us, %66 ], [ 0, %.lr.ph.us.us ] %.07096.us.us.us = phi i32 [ %.171.us.us.us, %66 ], [ 0, %.lr.ph.us.us ] %.17494.us.us.us = phi float [ %.3.us.us.us, %66 ], [ %.073107.us.us, %.lr.ph.us.us ] %.17693.us.us.us = phi float [ %.378.us.us.us, %66 ], [ %.075106.us.us, %.lr.ph.us.us ] - %44 = getelementptr inbounds i32, ptr %7, i64 %indvars.iv178 + %44 = getelementptr inbounds i32, ptr %7, i64 %indvars.iv177 %45 = load i32, ptr %44, align 4 %.not91.us.us.us = icmp eq i32 %45, %28 br i1 %.not91.us.us.us, label %66, label %46 @@ -4223,19 +4222,20 @@ define internal fastcc void @_ZL9calc_distfb7PbcTypePA3_fS1_iiPiS2_bPfS3_S2_S2_S %.3.us.us.us = phi float [ %.2.us.us.us, %62 ], [ %.2.us.us.us, %64 ], [ %.17494.us.us.us, %43 ] %.171.us.us.us = phi i32 [ %63, %62 ], [ %.07096.us.us.us, %64 ], [ %.07096.us.us.us, %43 ] %.1.us.us.us = phi i32 [ %.097.us.us.us, %62 ], [ %65, %64 ], [ %.097.us.us.us, %43 ] - %indvars.iv.next179 = add nuw nsw i64 %indvars.iv178, 1 - %exitcond182.not = icmp eq i64 %indvars.iv.next179, %wide.trip.count181 - br i1 %exitcond182.not, label %._crit_edge.split.us.us.us, label %43, !llvm.loop !37 + %indvars.iv.next178 = add nsw i64 %indvars.iv177, 1 + %lftr.wideiv180 = trunc i64 %indvars.iv.next178 to i32 + %exitcond181.not = icmp eq i32 %5, %lftr.wideiv180 + br i1 %exitcond181.not, label %._crit_edge.split.us.us.us, label %43, !llvm.loop !37 .lr.ph108.split.us.split: ; preds = %.lr.ph108.split.us, %._crit_edge.split.us.us - %indvars.iv173 = phi i64 [ %indvars.iv.next174, %._crit_edge.split.us.us ], [ 0, %.lr.ph108.split.us ] + %indvars.iv172 = phi i64 [ %indvars.iv.next173, %._crit_edge.split.us.us ], [ 0, %.lr.ph108.split.us ] %.073107.us = phi float [ %.174.lcssa.us, %._crit_edge.split.us.us ], [ 0xC26D1A94A0000000, %.lr.ph108.split.us ] %.075106.us = phi float [ %.176.lcssa.us, %._crit_edge.split.us.us ], [ 0x426D1A94A0000000, %.lr.ph108.split.us ] %.182104.us = phi i32 [ %spec.select.us, %._crit_edge.split.us.us ], [ 0, %.lr.ph108.split.us ] - %67 = getelementptr inbounds i32, ptr %.92, i64 %indvars.iv173 + %67 = getelementptr inbounds i32, ptr %.92, i64 %indvars.iv172 %68 = load i32, ptr %67, align 4 - %indvars.iv.next174 = add nuw nsw i64 %indvars.iv173, 1 - %69 = trunc nuw nsw i64 %indvars.iv.next174 to i32 + %indvars.iv.next173 = add nuw nsw i64 %indvars.iv172, 1 + %69 = trunc nuw nsw i64 %indvars.iv.next173 to i32 %spec.select.us = select i1 %.not, i32 %69, i32 %.182104.us %70 = icmp slt i32 %spec.select.us, %5 br i1 %70, label %.lr.ph.us, label %._crit_edge.split.us.us @@ -4251,13 +4251,13 @@ define internal fastcc void @_ZL9calc_distfb7PbcTypePA3_fS1_iiPiS2_bPfS3_S2_S2_S %73 = load i32, ptr %13, align 4 %74 = add nsw i32 %73, %.0.lcssa.us store i32 %74, ptr %13, align 4 - %exitcond177.not = icmp eq i64 %indvars.iv.next174, %wide.trip.count186 - br i1 %exitcond177.not, label %._crit_edge109, label %.lr.ph108.split.us.split, !llvm.loop !36 + %exitcond176.not = icmp eq i64 %indvars.iv.next173, %wide.trip.count185 + br i1 %exitcond176.not, label %._crit_edge109, label %.lr.ph108.split.us.split, !llvm.loop !36 .lr.ph.us: ; preds = %.lr.ph108.split.us.split %75 = sext i32 %68 to i64 %76 = getelementptr inbounds [3 x float], ptr %4, i64 %75 - %77 = zext nneg i32 %spec.select.us to i64 + %77 = sext i32 %spec.select.us to i64 br label %78 78: ; preds = %101, %.lr.ph.us @@ -4317,25 +4317,27 @@ define internal fastcc void @_ZL9calc_distfb7PbcTypePA3_fS1_iiPiS2_bPfS3_S2_S2_S %.3.us.us = phi float [ %.2.us.us, %97 ], [ %.2.us.us, %99 ], [ %.17494.us.us, %78 ] %.171.us.us = phi i32 [ %98, %97 ], [ %.07096.us.us, %99 ], [ %.07096.us.us, %78 ] %.1.us.us = phi i32 [ %.097.us.us, %97 ], [ %100, %99 ], [ %.097.us.us, %78 ] - %indvars.iv.next169 = add nuw nsw i64 %indvars.iv168, 1 - %exitcond172.not = icmp eq i64 %indvars.iv.next169, %wide.trip.count181 - br i1 %exitcond172.not, label %._crit_edge.split.us.us, label %78, !llvm.loop !37 + %indvars.iv.next169 = add nsw i64 %indvars.iv168, 1 + %lftr.wideiv = trunc i64 %indvars.iv.next169 to i32 + %exitcond171.not = icmp eq i32 %5, %lftr.wideiv + br i1 %exitcond171.not, label %._crit_edge.split.us.us, label %78, !llvm.loop !37 .lr.ph108.split: ; preds = %.lr.ph108 + %wide.trip.count161 = sext i32 %5 to i64 br i1 %9, label %.lr.ph108.split.split.us, label %.lr.ph108.split.split -.lr.ph108.split.split.us: ; preds = %.lr.ph108.split, %.thread209 - %indvars.iv163 = phi i64 [ %indvars.iv.next164, %.thread209 ], [ 0, %.lr.ph108.split ] - %.073107.us121 = phi float [ %.174.lcssa.us127207213, %.thread209 ], [ 0xC26D1A94A0000000, %.lr.ph108.split ] - %.075106.us122 = phi float [ %.176.lcssa.us126206214, %.thread209 ], [ 0x426D1A94A0000000, %.lr.ph108.split ] - %.182104.us124 = phi i32 [ %spec.select.us125, %.thread209 ], [ 0, %.lr.ph108.split ] +.lr.ph108.split.split.us: ; preds = %.lr.ph108.split, %.thread208 + %indvars.iv163 = phi i64 [ %indvars.iv.next164, %.thread208 ], [ 0, %.lr.ph108.split ] + %.073107.us121 = phi float [ %.174.lcssa.us127206212, %.thread208 ], [ 0xC26D1A94A0000000, %.lr.ph108.split ] + %.075106.us122 = phi float [ %.176.lcssa.us126205213, %.thread208 ], [ 0x426D1A94A0000000, %.lr.ph108.split ] + %.182104.us124 = phi i32 [ %spec.select.us125, %.thread208 ], [ 0, %.lr.ph108.split ] %102 = getelementptr inbounds i32, ptr %.92, i64 %indvars.iv163 %103 = load i32, ptr %102, align 4 %indvars.iv.next164 = add nuw nsw i64 %indvars.iv163, 1 %104 = trunc nuw nsw i64 %indvars.iv.next164 to i32 %spec.select.us125 = select i1 %.not, i32 %104, i32 %.182104.us124 %105 = icmp slt i32 %spec.select.us125, %5 - br i1 %105, label %.lr.ph.us130, label %.thread209 + br i1 %105, label %.lr.ph.us130, label %.thread208 ._crit_edge.split.us: ; preds = %146 %106 = icmp sgt i32 %.171.us, 0 @@ -4346,21 +4348,21 @@ define internal fastcc void @_ZL9calc_distfb7PbcTypePA3_fS1_iiPiS2_bPfS3_S2_S2_S %109 = load i32, ptr %12, align 4 %110 = add nsw i32 %109, 1 store i32 %110, ptr %12, align 4 - br i1 %107, label %112, label %.thread209 + br i1 %107, label %112, label %.thread208 111: ; preds = %._crit_edge.split.us - br i1 %107, label %112, label %.thread209 + br i1 %107, label %112, label %.thread208 112: ; preds = %108, %111 %113 = load i32, ptr %13, align 4 %114 = add nsw i32 %113, 1 store i32 %114, ptr %13, align 4 - br label %.thread209 + br label %.thread208 -.thread209: ; preds = %.lr.ph108.split.split.us, %108, %112, %111 - %.176.lcssa.us126206214 = phi float [ %.378.us, %112 ], [ %.378.us, %111 ], [ %.378.us, %108 ], [ %.075106.us122, %.lr.ph108.split.split.us ] - %.174.lcssa.us127207213 = phi float [ %.3.us, %112 ], [ %.3.us, %111 ], [ %.3.us, %108 ], [ %.073107.us121, %.lr.ph108.split.split.us ] - %exitcond167.not = icmp eq i64 %indvars.iv.next164, %wide.trip.count186 +.thread208: ; preds = %.lr.ph108.split.split.us, %108, %112, %111 + %.176.lcssa.us126205213 = phi float [ %.378.us, %112 ], [ %.378.us, %111 ], [ %.378.us, %108 ], [ %.075106.us122, %.lr.ph108.split.split.us ] + %.174.lcssa.us127206212 = phi float [ %.3.us, %112 ], [ %.3.us, %111 ], [ %.3.us, %108 ], [ %.073107.us121, %.lr.ph108.split.split.us ] + %exitcond167.not = icmp eq i64 %indvars.iv.next164, %wide.trip.count185 br i1 %exitcond167.not, label %._crit_edge109, label %.lr.ph108.split.split.us, !llvm.loop !36 115: ; preds = %.lr.ph.us130, %146 @@ -4427,8 +4429,8 @@ define internal fastcc void @_ZL9calc_distfb7PbcTypePA3_fS1_iiPiS2_bPfS3_S2_S2_S %.3.us = phi float [ %.2.us, %142 ], [ %.2.us, %144 ], [ %.17494.us, %115 ] %.171.us = phi i32 [ %143, %142 ], [ %.07096.us, %144 ], [ %.07096.us, %115 ] %.1.us = phi i32 [ %.097.us, %142 ], [ %145, %144 ], [ %.097.us, %115 ] - %indvars.iv.next159 = add nuw nsw i64 %indvars.iv158, 1 - %exitcond162.not = icmp eq i64 %indvars.iv.next159, %wide.trip.count181 + %indvars.iv.next159 = add nsw i64 %indvars.iv158, 1 + %exitcond162.not = icmp eq i64 %indvars.iv.next159, %wide.trip.count161 br i1 %exitcond162.not, label %._crit_edge.split.us, label %115, !llvm.loop !37 .lr.ph.us130: ; preds = %.lr.ph108.split.split.us @@ -4436,7 +4438,7 @@ define internal fastcc void @_ZL9calc_distfb7PbcTypePA3_fS1_iiPiS2_bPfS3_S2_S2_S %148 = getelementptr inbounds [3 x float], ptr %4, i64 %147 %149 = getelementptr inbounds i8, ptr %148, i64 4 %150 = getelementptr inbounds i8, ptr %148, i64 8 - %151 = zext nneg i32 %spec.select.us125 to i64 + %151 = sext i32 %spec.select.us125 to i64 br label %115 152: ; preds = %23 @@ -4461,7 +4463,7 @@ define internal fastcc void @_ZL9calc_distfb7PbcTypePA3_fS1_iiPiS2_bPfS3_S2_S2_S %158 = getelementptr inbounds [3 x float], ptr %4, i64 %157 %159 = getelementptr inbounds i8, ptr %158, i64 4 %160 = getelementptr inbounds i8, ptr %158, i64 8 - %161 = zext nneg i32 %spec.select to i64 + %161 = sext i32 %spec.select to i64 br label %162 162: ; preds = %.lr.ph, %193 @@ -4528,8 +4530,8 @@ define internal fastcc void @_ZL9calc_distfb7PbcTypePA3_fS1_iiPiS2_bPfS3_S2_S2_S %.3 = phi float [ %.2, %189 ], [ %.2, %191 ], [ %.17494, %162 ] %.171 = phi i32 [ %190, %189 ], [ %.07096, %191 ], [ %.07096, %162 ] %.1 = phi i32 [ %.097, %189 ], [ %192, %191 ], [ %.097, %162 ] - %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count181 + %indvars.iv.next = add nsw i64 %indvars.iv, 1 + %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count161 br i1 %exitcond.not, label %._crit_edge.split, label %162, !llvm.loop !37 ._crit_edge.split: ; preds = %193, %.lr.ph108.split.split @@ -4543,12 +4545,12 @@ define internal fastcc void @_ZL9calc_distfb7PbcTypePA3_fS1_iiPiS2_bPfS3_S2_S2_S %196 = load i32, ptr %13, align 4 %197 = add nsw i32 %196, %.0.lcssa store i32 %197, ptr %13, align 4 - %exitcond157.not = icmp eq i64 %indvars.iv.next154, %wide.trip.count186 + %exitcond157.not = icmp eq i64 %indvars.iv.next154, %wide.trip.count185 br i1 %exitcond157.not, label %._crit_edge109, label %.lr.ph108.split.split, !llvm.loop !36 -._crit_edge109: ; preds = %._crit_edge.split, %.thread209, %._crit_edge.split.us.us, %.thread, %.preheader - %.075.lcssa = phi float [ 0x426D1A94A0000000, %.preheader ], [ %.176.lcssa.us.us192199, %.thread ], [ %.176.lcssa.us, %._crit_edge.split.us.us ], [ %.176.lcssa.us126206214, %.thread209 ], [ %.176.lcssa, %._crit_edge.split ] - %.073.lcssa = phi float [ 0xC26D1A94A0000000, %.preheader ], [ %.174.lcssa.us.us193198, %.thread ], [ %.174.lcssa.us, %._crit_edge.split.us.us ], [ %.174.lcssa.us127207213, %.thread209 ], [ %.174.lcssa, %._crit_edge.split ] +._crit_edge109: ; preds = %._crit_edge.split, %.thread208, %._crit_edge.split.us.us, %.thread, %.preheader + %.075.lcssa = phi float [ 0x426D1A94A0000000, %.preheader ], [ %.176.lcssa.us.us191198, %.thread ], [ %.176.lcssa.us, %._crit_edge.split.us.us ], [ %.176.lcssa.us126205213, %.thread208 ], [ %.176.lcssa, %._crit_edge.split ] + %.073.lcssa = phi float [ 0xC26D1A94A0000000, %.preheader ], [ %.174.lcssa.us.us192197, %.thread ], [ %.174.lcssa.us, %._crit_edge.split.us.us ], [ %.174.lcssa.us127206212, %.thread208 ], [ %.174.lcssa, %._crit_edge.split ] %198 = call noundef float @sqrtf(float noundef %.075.lcssa) #19 store float %198, ptr %10, align 4 %199 = call noundef float @sqrtf(float noundef %.073.lcssa) #19 diff --git a/bench/gromacs/optimized/libxdrf.cpp.ll b/bench/gromacs/optimized/libxdrf.cpp.ll index 4cf20dec738..ca1fe603bb4 100644 --- a/bench/gromacs/optimized/libxdrf.cpp.ll +++ b/bench/gromacs/optimized/libxdrf.cpp.ll @@ -264,7 +264,7 @@ define noundef i32 @_Z11xdr3dfcoordP3XDRPfPiS1_i(ptr noundef %0, ptr noundef %1, %136 = call i32 @llvm.abs.i32(i32 %135, i1 true) %137 = add nuw nsw i32 %134, %136 %138 = icmp ugt ptr %.0386602, %1 - %139 = call i32 @llvm.umin.i32(i32 %137, i32 %.0419601) + %139 = call i32 @llvm.smin.i32(i32 %137, i32 %.0419601) %.1420 = select i1 %138, i32 %139, i32 %.0419601 %140 = icmp ult ptr %129, %67 br i1 %140, label %70, label %._crit_edge, !llvm.loop !5 @@ -2532,7 +2532,7 @@ _ZL25xtc_get_next_frame_numberP8_IO_FILEP3XDRi.exit: ; preds = %22 %.035..0 = select i1 %34, i64 %.035, i64 %.0 %.0..033 = select i1 %34, i64 %.0, i64 %.033 %35 = add nuw nsw i64 %.035..0, %.0..033 - %36 = lshr exact i64 %35, 1 + %36 = lshr i64 %35, 1 %37 = and i64 %36, 9223372036854775804 %38 = call noundef i32 @_Z9gmx_fseekP8_IO_FILEli(ptr noundef %1, i64 noundef %37, i32 noundef 0) %.not45 = icmp eq i32 %38, 0 @@ -3175,9 +3175,6 @@ declare i32 @llvm.smax.i32(i32, i32) #15 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i64 @llvm.umin.i64(i64, i64) #15 -; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umin.i32(i32, i32) #15 - ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #16 diff --git a/bench/harfbuzz/optimized/harfbuzz.cc.ll b/bench/harfbuzz/optimized/harfbuzz.cc.ll index 1f13de0cb5b..e440f440384 100644 --- a/bench/harfbuzz/optimized/harfbuzz.cc.ll +++ b/bench/harfbuzz/optimized/harfbuzz.cc.ll @@ -205007,11 +205007,11 @@ if.end.i8: ; preds = %if.end9.i.i.i.i %idx.ext.i.i.i.i.i10.i.i.i.i.i.i = and i64 %agg.tmp.sroa.4.0.copyload, 4294967295 %add.ptr.i.i.i.i.i11.i.i.i.i.i.i = getelementptr inbounds %"struct.OT::HBGlyphID16", ptr %agg.tmp.sroa.3.0.copyload, i64 %idx.ext.i.i.i.i.i10.i.i.i.i.i.i %cmp.not.i.i.i90.i.not = icmp eq i32 %agg.tmp6.sroa.4.sroa.0.0.extract.trunc, 0 - br i1 %cmp.not.i.i.i90.i.not, label %for.end.i, label %"_ZNK13hb_map_iter_tI13hb_zip_iter_tI17hb_sorted_array_tIN2OT11HBGlyphID16EE10hb_array_tIS3_EERK3$_5L24hb_function_sortedness_t1ELPv0EEneERKSD_.exit.i" + br i1 %cmp.not.i.i.i90.i.not, label %if.end29.i, label %"_ZNK13hb_map_iter_tI13hb_zip_iter_tI17hb_sorted_array_tIN2OT11HBGlyphID16EE10hb_array_tIS3_EERK3$_5L24hb_function_sortedness_t1ELPv0EEneERKSD_.exit.i" "_ZNK13hb_map_iter_tI13hb_zip_iter_tI17hb_sorted_array_tIN2OT11HBGlyphID16EE10hb_array_tIS3_EERK3$_5L24hb_function_sortedness_t1ELPv0EEneERKSD_.exit.i": ; preds = %if.end.i8, %if.end9.i %unsorted.099.i = phi i1 [ %unsorted.1.i, %if.end9.i ], [ false, %if.end.i8 ] - %last.097.i = phi i32 [ %.pre103.i, %if.end9.i ], [ -2, %if.end.i8 ] + %last.097.i = phi i32 [ %.pre105.i, %if.end9.i ], [ -2, %if.end.i8 ] %num_ranges.096.i = phi i32 [ %spec.select9.i, %if.end9.i ], [ 0, %if.end.i8 ] %__begin0.sroa.14.095.i = phi i32 [ %__begin0.sroa.14.1.i, %if.end9.i ], [ %agg.tmp6.sroa.7.sroa.0.0.extract.trunc, %if.end.i8 ] %__begin0.sroa.11.094.i = phi ptr [ %__begin0.sroa.11.1.i, %if.end9.i ], [ %agg.tmp.sroa.3.0.copyload, %if.end.i8 ] @@ -205037,18 +205037,18 @@ for.body.i: ; preds = %"_ZNK13hb_map_iter_ %12 = load i16, ptr %retval.0.i.i.i.i.i.i.i, align 1 %cmp.not.i = icmp eq i32 %last.097.i, -2 %.pre.i = tail call i16 @llvm.bswap.i16(i16 %12) - %.pre103.i = zext i16 %.pre.i to i32 + %.pre105.i = zext i16 %.pre.i to i32 br i1 %cmp.not.i, label %if.end9.i, label %land.lhs.true.i land.lhs.true.i: ; preds = %11 - %cmp7.i = icmp ugt i32 %last.097.i, %.pre103.i + %cmp7.i = icmp ugt i32 %last.097.i, %.pre105.i %spec.select.i = select i1 %cmp7.i, i1 true, i1 %unsorted.099.i br label %if.end9.i if.end9.i: ; preds = %land.lhs.true.i, %11 %unsorted.1.i = phi i1 [ %spec.select.i, %land.lhs.true.i ], [ %unsorted.099.i, %11 ] %add.i = add nsw i32 %last.097.i, 1 - %cmp11.not.i = icmp ne i32 %add.i, %.pre103.i + %cmp11.not.i = icmp ne i32 %add.i, %.pre105.i %inc.i = zext i1 %cmp11.not.i to i32 %spec.select9.i = add i32 %num_ranges.096.i, %inc.i %__begin0.sroa.0.1.idx.i = select i1 %tobool.not.i.i.i.i.i.i.not.i, i64 0, i64 2 @@ -205066,9 +205066,9 @@ for.end.loopexit.i: ; preds = %if.end9.i, %"_ZNK13 %num_ranges.0.lcssa.ph.i = phi i32 [ %num_ranges.096.i, %"_ZNK13hb_map_iter_tI13hb_zip_iter_tI17hb_sorted_array_tIN2OT11HBGlyphID16EE10hb_array_tIS3_EERK3$_5L24hb_function_sortedness_t1ELPv0EEneERKSD_.exit.i" ], [ %spec.select9.i, %if.end9.i ] %unsorted.0.lcssa.ph.i = phi i1 [ %unsorted.099.i, %"_ZNK13hb_map_iter_tI13hb_zip_iter_tI17hb_sorted_array_tIN2OT11HBGlyphID16EE10hb_array_tIS3_EERK3$_5L24hb_function_sortedness_t1ELPv0EEneERKSD_.exit.i" ], [ %unsorted.1.i, %if.end9.i ] %14 = mul i32 %num_ranges.0.lcssa.ph.i, 3 - br label %for.end.i + br label %if.end29.i -for.end.i: ; preds = %for.end.loopexit.i, %if.end.i8 +if.end29.i: ; preds = %for.end.loopexit.i, %if.end.i8 %num_ranges.0.lcssa.i = phi i32 [ 0, %if.end.i8 ], [ %14, %for.end.loopexit.i ] %unsorted.0.lcssa.i = phi i1 [ false, %if.end.i8 ], [ %unsorted.0.lcssa.ph.i, %for.end.loopexit.i ] %cmp22.i = icmp ugt i32 %.sroa.speculated.i.i.i.i.i.i.i, %num_ranges.0.lcssa.i @@ -205079,7 +205079,7 @@ for.end.i: ; preds = %for.end.loopexit.i, %tobool.i.i.not.i.i.i = icmp eq i32 %15, 0 br i1 %.not.i, label %sw.bb36.i, label %sw.bb.i -sw.bb.i: ; preds = %for.end.i +sw.bb.i: ; preds = %if.end29.i br i1 %tobool.i.i.not.i.i.i, label %if.end.i.i.i.i.i.i.i.i, label %if.else if.end.i.i.i.i.i.i.i.i: ; preds = %sw.bb.i @@ -205213,7 +205213,7 @@ return.sink.split.i.i.i.i: ; preds = %lor.lhs.false.i.i.i store i32 %or.i.i.i.i.i.sink.i.i.i.i, ptr %errors.i.i, align 4 br label %if.else -sw.bb36.i: ; preds = %for.end.i +sw.bb36.i: ; preds = %if.end29.i br i1 %tobool.i.i.not.i.i.i, label %if.end.i.i.i.i47.i, label %if.else if.end.i.i.i.i47.i: ; preds = %sw.bb36.i diff --git a/bench/hdf5/optimized/H5T.c.ll b/bench/hdf5/optimized/H5T.c.ll index c73c0eeae58..5d4d71af2f2 100644 --- a/bench/hdf5/optimized/H5T.c.ll +++ b/bench/hdf5/optimized/H5T.c.ll @@ -11969,7 +11969,7 @@ H5T__init_path_table.exit: ; preds = %32, %38 %.123.i = select i1 %98, i32 %81, i32 %.02231.i %.1.i = select i1 %98, i1 %.032.i, i1 %spec.select29.i %101 = icmp ne i32 %.120.i, 0 - %102 = icmp samesign ult i32 %.125.i, %.123.i + %102 = icmp slt i32 %.125.i, %.123.i %103 = select i1 %101, i1 %102, i1 false br i1 %103, label %.lr.ph.i, label %H5T__path_table_search.exit @@ -12559,7 +12559,7 @@ H5T__path_find_init_new_path.exit.thread: ; preds = %.thread217.thread.i %.123.i109 = select i1 %385, i32 %368, i32 %.02231.i103 %.1.i110 = select i1 %385, i1 %.032.i102, i1 %spec.select29.i107 %388 = icmp ne i32 %.120.i105, 0 - %389 = icmp samesign ult i32 %.125.i108, %.123.i109 + %389 = icmp slt i32 %.125.i108, %.123.i109 %390 = select i1 %388, i1 %389, i1 false br i1 %390, label %.lr.ph.i101, label %H5T__path_table_search.exit111 @@ -12851,7 +12851,7 @@ define zeroext i1 @H5T_noop_conv(ptr noundef %0, ptr noundef %1) local_unnamed_a %.123.i = select i1 %40, i32 %23, i32 %.02231.i %.1.i = select i1 %40, i1 %.032.i, i1 %spec.select29.i %43 = icmp ne i32 %.120.i, 0 - %44 = icmp samesign ult i32 %.125.i, %.123.i + %44 = icmp slt i32 %.125.i, %.123.i %45 = select i1 %43, i1 %44, i1 false br i1 %45, label %.lr.ph.i, label %H5T__path_table_search.exit diff --git a/bench/icu/optimized/package.ll b/bench/icu/optimized/package.ll index 21a3b67d693..f883af8552d 100644 --- a/bench/icu/optimized/package.ll +++ b/bench/icu/optimized/package.ll @@ -2549,7 +2549,7 @@ _ZN6icu_757Package18ensureItemCapacityEv.exit: ; preds = %if.then, %if.end15. br i1 %cmp2, label %if.then3, label %_ZN6icu_757Package18ensureItemCapacityEv.exit.if.end_crit_edge _ZN6icu_757Package18ensureItemCapacityEv.exit.if.end_crit_edge: ; preds = %_ZN6icu_757Package18ensureItemCapacityEv.exit - %.pre31 = zext nneg i32 %not to i64 + %.pre32 = zext nneg i32 %not to i64 br label %if.end if.then3: ; preds = %_ZN6icu_757Package18ensureItemCapacityEv.exit @@ -2566,7 +2566,7 @@ if.then3: ; preds = %_ZN6icu_757Package1 br label %if.end if.end: ; preds = %_ZN6icu_757Package18ensureItemCapacityEv.exit.if.end_crit_edge, %if.then3 - %idx.ext11.pre-phi = phi i64 [ %.pre31, %_ZN6icu_757Package18ensureItemCapacityEv.exit.if.end_crit_edge ], [ %idx.ext, %if.then3 ] + %idx.ext11.pre-phi = phi i64 [ %.pre32, %_ZN6icu_757Package18ensureItemCapacityEv.exit.if.end_crit_edge ], [ %idx.ext, %if.then3 ] %9 = phi i32 [ %7, %_ZN6icu_757Package18ensureItemCapacityEv.exit.if.end_crit_edge ], [ %.pre30, %if.then3 ] %inc = add nsw i32 %9, 1 store i32 %inc, ptr %itemCount.i, align 4 @@ -2604,13 +2604,14 @@ _ZN6icu_757Package11allocStringEai.exit: ; preds = %if.end br label %if.end33 if.else: ; preds = %while.body.i - %isDataOwned26 = getelementptr inbounds i8, ptr %arrayidx6.i, i64 20 + %arrayidx25 = getelementptr inbounds %"struct.icu_75::Item", ptr %1, i64 %idxprom5.i + %isDataOwned26 = getelementptr inbounds i8, ptr %arrayidx25, i64 20 %17 = load i8, ptr %isDataOwned26, align 4 %tobool.not = icmp eq i8 %17, 0 br i1 %tobool.not, label %if.end33, label %if.then27 if.then27: ; preds = %if.else - %data31 = getelementptr inbounds i8, ptr %arrayidx6.i, i64 8 + %data31 = getelementptr inbounds i8, ptr %arrayidx25, i64 8 %18 = load ptr, ptr %data31, align 8 tail call void @uprv_free_75(ptr noundef %18) br label %if.end33 diff --git a/bench/jq/optimized/regparse.ll b/bench/jq/optimized/regparse.ll index aa813411567..5b4441a5911 100644 --- a/bench/jq/optimized/regparse.ll +++ b/bench/jq/optimized/regparse.ll @@ -2683,7 +2683,7 @@ bbuf_init.exit.i: ; preds = %9 %27 = add nuw nsw i32 %21, 1 %.1163 = select i1 %26, i32 %.0162202, i32 %21 %.1159 = select i1 %26, i32 %27, i32 %.0158203 - %28 = icmp samesign ult i32 %.1159, %.1163 + %28 = icmp slt i32 %.1159, %.1163 br i1 %28, label %.lr.ph, label %._crit_edge, !llvm.loop !23 ._crit_edge: ; preds = %.lr.ph, %.thread, %15 diff --git a/bench/meshlab/optimized/gltf_loader.cpp.ll b/bench/meshlab/optimized/gltf_loader.cpp.ll index c6f80a953e8..ca9f0ddcd47 100644 --- a/bench/meshlab/optimized/gltf_loader.cpp.ll +++ b/bench/meshlab/optimized/gltf_loader.cpp.ll @@ -39327,25 +39327,25 @@ define noundef ptr @stbi_write_png_to_mem(ptr nocapture noundef readonly %0, i32 .lr.ph.split.us: ; preds = %.lr.ph %21 = trunc i32 %8 to i8 %22 = sext i32 %12 to i64 - %wide.trip.count215 = zext nneg i32 %3 to i64 + %wide.trip.count216 = zext nneg i32 %3 to i64 br label %23 23: ; preds = %23, %.lr.ph.split.us - %indvars.iv212 = phi i64 [ %indvars.iv.next213, %23 ], [ 0, %.lr.ph.split.us ] - %24 = trunc nuw nsw i64 %indvars.iv212 to i32 + %indvars.iv213 = phi i64 [ %indvars.iv.next214, %23 ], [ 0, %.lr.ph.split.us ] + %24 = trunc nuw nsw i64 %indvars.iv213 to i32 tail call fastcc void @_ZL22stbiw__encode_png_linePhiiiiiiPa(ptr noundef %0, i32 noundef %spec.select, i32 noundef %2, i32 noundef %3, i32 noundef %24, i32 noundef %4, i32 noundef %spec.store.select, ptr noundef %18) - %25 = mul nsw i64 %indvars.iv212, %22 + %25 = mul nsw i64 %indvars.iv213, %22 %26 = getelementptr inbounds i8, ptr %15, i64 %25 store i8 %21, ptr %26, align 1 %27 = getelementptr inbounds i8, ptr %26, i64 1 tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %27, ptr nonnull align 1 %18, i64 %17, i1 false) - %indvars.iv.next213 = add nuw nsw i64 %indvars.iv212, 1 - %exitcond216.not = icmp eq i64 %indvars.iv.next213, %wide.trip.count215 - br i1 %exitcond216.not, label %._crit_edge, label %23, !llvm.loop !292 + %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_edge, label %23, !llvm.loop !292 .lr.ph.split: ; preds = %.lr.ph %28 = icmp sgt i32 %10, 0 - %wide.trip.count210 = zext nneg i32 %3 to i64 + %wide.trip.count211 = zext nneg i32 %3 to i64 br i1 %28, label %.preheader.us.preheader, label %.preheader.preheader .preheader.preheader: ; preds = %.lr.ph.split @@ -39354,12 +39354,12 @@ define noundef ptr @stbi_write_png_to_mem(ptr nocapture noundef readonly %0, i32 .preheader.us.preheader: ; preds = %.lr.ph.split %30 = zext nneg i32 %12 to i64 - %wide.trip.count204 = zext nneg i32 %10 to i64 + %wide.trip.count205 = zext nneg i32 %10 to i64 br label %.preheader.us .preheader.us: ; preds = %.preheader.us.preheader, %34 - %indvars.iv207 = phi i64 [ 0, %.preheader.us.preheader ], [ %indvars.iv.next208, %34 ] - %31 = trunc nuw nsw i64 %indvars.iv207 to i32 + %indvars.iv208 = phi i64 [ 0, %.preheader.us.preheader ], [ %indvars.iv.next209, %34 ] + %31 = trunc nuw nsw i64 %indvars.iv208 to i32 br label %.lr.ph.us.us 32: ; preds = %.split.us.us @@ -39369,14 +39369,14 @@ define noundef ptr @stbi_write_png_to_mem(ptr nocapture noundef readonly %0, i32 34: ; preds = %.split.us.us, %32 %.096.us191 = phi i8 [ %33, %32 ], [ 5, %.split.us.us ] - %35 = mul nuw nsw i64 %indvars.iv207, %30 + %35 = mul nuw nsw i64 %indvars.iv208, %30 %36 = getelementptr inbounds i8, ptr %15, i64 %35 store i8 %.096.us191, ptr %36, align 1 %37 = getelementptr inbounds i8, ptr %36, i64 1 tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %37, ptr nonnull align 1 %18, i64 %17, i1 false) - %indvars.iv.next208 = add nuw nsw i64 %indvars.iv207, 1 - %exitcond211.not = icmp eq i64 %indvars.iv.next208, %wide.trip.count210 - br i1 %exitcond211.not, label %._crit_edge, label %.preheader.us, !llvm.loop !292 + %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 %._crit_edge, label %.preheader.us, !llvm.loop !292 .lr.ph.us.us: ; preds = %._crit_edge.us.us, %.preheader.us %.093186.us.us = phi i32 [ 2147483647, %.preheader.us ], [ %spec.select113.us.us, %._crit_edge.us.us ] @@ -39386,24 +39386,24 @@ define noundef ptr @stbi_write_png_to_mem(ptr nocapture noundef readonly %0, i32 br label %38 38: ; preds = %38, %.lr.ph.us.us - %indvars.iv201 = phi i64 [ %indvars.iv.next202, %38 ], [ 0, %.lr.ph.us.us ] + %indvars.iv202 = phi i64 [ %indvars.iv.next203, %38 ], [ 0, %.lr.ph.us.us ] %.092182.us.us = phi i32 [ %43, %38 ], [ 0, %.lr.ph.us.us ] - %39 = getelementptr inbounds i8, ptr %18, i64 %indvars.iv201 + %39 = getelementptr inbounds i8, ptr %18, i64 %indvars.iv202 %40 = load i8, ptr %39, align 1 %41 = tail call i8 @llvm.abs.i8(i8 %40, i1 false) %42 = zext i8 %41 to i32 %43 = add nuw nsw i32 %.092182.us.us, %42 - %indvars.iv.next202 = add nuw nsw i64 %indvars.iv201, 1 - %exitcond205.not = icmp eq i64 %indvars.iv.next202, %wide.trip.count204 - br i1 %exitcond205.not, label %._crit_edge.us.us, label %38, !llvm.loop !293 + %indvars.iv.next203 = add nuw nsw i64 %indvars.iv202, 1 + %exitcond206.not = icmp eq i64 %indvars.iv.next203, %wide.trip.count205 + br i1 %exitcond206.not, label %._crit_edge.us.us, label %38, !llvm.loop !293 ._crit_edge.us.us: ; preds = %38 - %44 = icmp samesign ult i32 %43, %.093186.us.us + %44 = icmp slt i32 %43, %.093186.us.us %spec.select112.us.us = select i1 %44, i32 %.197184.us.us, i32 %.094185.us.us - %spec.select113.us.us = tail call i32 @llvm.umin.i32(i32 %43, i32 %.093186.us.us) + %spec.select113.us.us = tail call i32 @llvm.smin.i32(i32 %43, i32 %.093186.us.us) %45 = add nuw nsw i32 %.197184.us.us, 1 - %exitcond206.not = icmp eq i32 %45, 5 - br i1 %exitcond206.not, label %.split.us.us, label %.lr.ph.us.us, !llvm.loop !294 + %exitcond207.not = icmp eq i32 %45, 5 + br i1 %exitcond207.not, label %.split.us.us, label %.lr.ph.us.us, !llvm.loop !294 .split.us.us: ; preds = %._crit_edge.us.us %.not111.us = icmp eq i32 %spec.select112.us.us, 5 @@ -39433,8 +39433,8 @@ define noundef ptr @stbi_write_png_to_mem(ptr nocapture noundef readonly %0, i32 %53 = getelementptr inbounds i8, ptr %52, i64 1 tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %53, ptr nonnull align 1 %18, i64 %17, i1 false) %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond200.not = icmp eq i64 %indvars.iv.next, %wide.trip.count210 - br i1 %exitcond200.not, label %._crit_edge, label %.preheader, !llvm.loop !292 + %exitcond201.not = icmp eq i64 %indvars.iv.next, %wide.trip.count211 + br i1 %exitcond201.not, label %._crit_edge, label %.preheader, !llvm.loop !292 ._crit_edge: ; preds = %50, %34, %23, %.preheader179 tail call void @free(ptr noundef %18) #54 diff --git a/bench/minetest/optimized/treegen.cpp.ll b/bench/minetest/optimized/treegen.cpp.ll index 846eb3f446f..30acd691967 100644 --- a/bench/minetest/optimized/treegen.cpp.ll +++ b/bench/minetest/optimized/treegen.cpp.ll @@ -6790,8 +6790,10 @@ if.end154.6: ; preds = %if.then149.6, %if.e br i1 %exitcond1438, label %invoke.cont122.1, label %invoke.cont122, !llvm.loop !165 for.body283.preheader: ; preds = %for.cond.cleanup218.loopexit - %87 = add nuw nsw i16 %spec.select, 1 - br label %invoke.cont301.preheader + %conv274 = sext i16 %spec.select to i32 + %add280 = add nuw nsw i32 %conv274, 2 + %yy273.01323 = add nuw nsw i16 %spec.select, 1 + br label %for.body283 invoke.cont204: ; preds = %for.cond.cleanup218.loopexit, %for.cond.cleanup113.2 %my.01309 = phi i16 [ -6, %for.cond.cleanup113.2 ], [ %spec.select, %for.cond.cleanup218.loopexit ] @@ -6807,17 +6809,17 @@ invoke.cont204: ; preds = %for.cond.cleanup218 %mul.i.i897 = mul i32 %add.i.i891, 1103515245 %add.i.i898 = add i32 %mul.i.i897, 12345 %div.i.i899 = sdiv i32 %add.i.i898, 65536 - %88 = trunc nsw i32 %div.i.i899 to i16 - %rem.lhs.trunc.i900 = and i16 %88, 32767 + %87 = trunc nsw i32 %div.i.i899 to i16 + %rem.lhs.trunc.i900 = and i16 %87, 32767 %rem49.i901 = urem i16 %rem.lhs.trunc.i900, 6 %rem.zext.i902 = zext nneg i16 %rem49.i901 to i32 %add28.i903 = add nsw i16 %rem49.i901, -3 %conv208 = sext i16 %my.01309 to i32 - %cmp209 = icmp samesign ugt i32 %add28.i896, %conv208 + %cmp209 = icmp sgt i32 %add28.i896, %conv208 %add216 = add nsw i32 %rem.zext.i902, -2 %div.i.i885 = sdiv i32 %add.i.i884, 65536 - %89 = trunc nsw i32 %div.i.i885 to i16 - %rem.lhs.trunc.i886 = and i16 %89, 32767 + %88 = trunc nsw i32 %div.i.i885 to i16 + %rem.lhs.trunc.i886 = and i16 %88, 32767 %rem49.i887 = urem i16 %rem.lhs.trunc.i886, 6 %conv7.i.i918 = or disjoint i32 %rem49.i894, 24 %narrow = add nuw nsw i16 %rem49.i887, 42 @@ -6839,20 +6841,20 @@ for.cond.cleanup218.loopexit: ; preds = %if.end253.1 invoke.cont233: ; preds = %if.end253.1, %invoke.cont204 %zz212.01306 = phi i16 [ %add28.i903, %invoke.cont204 ], [ %inc263, %if.end253.1 ] %conv.i.i909 = sext i16 %zz212.01306 to i32 - %90 = mul nsw i32 %conv.i.i909, 10 - %sub11.i.i921 = add nsw i32 %conv7.i.i918, %90 - %91 = mul nsw i32 %sub11.i.i921, 7 - %add21.i.i928 = add nsw i32 %91, %add.i.i923 - %sub11.i.i946 = add nsw i32 %mul.i.i941, %90 - %92 = mul nsw i32 %sub11.i.i946, 7 - %add21.i.i953 = add nsw i32 %92, %add.i.i923 + %89 = mul nsw i32 %conv.i.i909, 10 + %sub11.i.i921 = add nsw i32 %conv7.i.i918, %89 + %90 = mul nsw i32 %sub11.i.i921, 7 + %add21.i.i928 = add nsw i32 %90, %add.i.i923 + %sub11.i.i946 = add nsw i32 %mul.i.i941, %89 + %91 = mul nsw i32 %sub11.i.i946, 7 + %add21.i.i953 = add nsw i32 %91, %add.i.i923 %idxprom.i954 = zext i32 %add21.i.i928 to i64 %arrayidx.i955 = getelementptr inbounds i8, ptr %call.i723, i64 %idxprom.i954 store i8 1, ptr %arrayidx.i955, align 1, !tbaa !12 %idxprom.i956 = zext i32 %add21.i.i953 to i64 %arrayidx.i957 = getelementptr inbounds i8, ptr %call.i723, i64 %idxprom.i956 - %93 = load i8, ptr %arrayidx.i957, align 1, !tbaa !12 - %cmp249 = icmp eq i8 %93, 0 + %92 = load i8, ptr %arrayidx.i957, align 1, !tbaa !12 + %cmp249 = icmp eq i8 %92, 0 br i1 %cmp249, label %if.then250, label %if.end253 if.then250: ; preds = %invoke.cont233 @@ -6860,15 +6862,15 @@ if.then250: ; preds = %invoke.cont233 br label %if.end253 if.end253: ; preds = %if.then250, %invoke.cont233 - %inc254.reass = add nsw i32 %91, %invariant.op - %inc255.reass = add nsw i32 %92, %invariant.op + %inc254.reass = add nsw i32 %90, %invariant.op + %inc255.reass = add nsw i32 %91, %invariant.op %idxprom.i954.1 = zext i32 %inc254.reass to i64 %arrayidx.i955.1 = getelementptr inbounds i8, ptr %call.i723, i64 %idxprom.i954.1 store i8 1, ptr %arrayidx.i955.1, align 1, !tbaa !12 %idxprom.i956.1 = zext i32 %inc255.reass to i64 %arrayidx.i957.1 = getelementptr inbounds i8, ptr %call.i723, i64 %idxprom.i956.1 - %94 = load i8, ptr %arrayidx.i957.1, align 1, !tbaa !12 - %cmp249.1 = icmp eq i8 %94, 0 + %93 = load i8, ptr %arrayidx.i957.1, align 1, !tbaa !12 + %cmp249.1 = icmp eq i8 %93, 0 br i1 %cmp249.1, label %if.then250.1, label %if.end253.1 if.then250.1: ; preds = %if.end253 @@ -6887,16 +6889,21 @@ for.cond354.preheader: ; preds = %for.cond.cleanup292 %retval.sroa.0.0.insert.ext.i = zext i16 %add.i to i48 br label %for.cond363.preheader -invoke.cont301.preheader: ; preds = %for.body283.preheader, %for.cond.cleanup292 - %indvars.iv17 = phi i32 [ %indvars.iv.next18, %for.cond.cleanup292 ], [ 2, %for.body283.preheader ] +for.body283: ; preds = %for.cond.cleanup292, %for.body283.preheader + %yy273.01329 = phi i16 [ %yy273.0, %for.cond.cleanup292 ], [ %yy273.01323, %for.body283.preheader ] + %dev.11328 = phi i16 [ %dec349, %for.cond.cleanup292 ], [ 2, %for.body283.preheader ] %yy273.0.in1327 = phi i16 [ %yy273.01329, %for.cond.cleanup292 ], [ %spec.select, %for.body283.preheader ] - %pr.sroa.0.41326 = phi i32 [ %add.i.i1011, %for.cond.cleanup292 ], [ %add.i.i898, %for.body283.preheader ] - %yy273.01329 = add nuw nsw i16 %yy273.0.in1327, 1 + %pr.sroa.0.41326 = phi i32 [ %pr.sroa.0.5.lcssa, %for.cond.cleanup292 ], [ %add.i.i898, %for.body283.preheader ] + %conv285 = zext i16 %dev.11328 to i32 + %sub286 = sub i16 0, %dev.11328 + %conv2891317 = sext i16 %sub286 to i32 + %cmp291.not1318 = icmp sgt i32 %conv2891317, %conv285 + br i1 %cmp291.not1318, label %for.cond.cleanup292, label %invoke.cont301.preheader + +invoke.cont301.preheader: ; preds = %for.body283 %agg.tmp295.sroa.2.0.insert.ext = zext i16 %yy273.01329 to i48 %agg.tmp295.sroa.2.0.insert.shift = shl nuw nsw i48 %agg.tmp295.sroa.2.0.insert.ext, 16 - %95 = trunc i32 %indvars.iv17 to i16 - %96 = sub i16 0, %95 - %agg.tmp295.sroa.0.0.insert.ext = zext i16 %96 to i48 + %agg.tmp295.sroa.0.0.insert.ext = zext i16 %sub286 to i48 %agg.tmp295.sroa.0.0.insert.insert = or disjoint i48 %agg.tmp295.sroa.2.0.insert.shift, %agg.tmp295.sroa.0.0.insert.ext %p.sroa.0.0.extract.trunc.i962 = trunc nuw i48 %agg.tmp295.sroa.0.0.insert.insert to i32 %conv7.i.i974 = ashr i32 %p.sroa.0.0.extract.trunc.i962, 16 @@ -6904,7 +6911,7 @@ invoke.cont301.preheader: ; preds = %for.body283.prehead %sext.i980 = shl i32 %p.sroa.0.0.extract.trunc.i962, 16 %conv16.i.i981 = ashr exact i32 %sext.i980, 16 %add.i.i979 = add nsw i32 %conv16.i.i981, 45 - %add309 = add nuw nsw i16 %yy273.0.in1327, 2 + %add309 = add i16 %yy273.0.in1327, 2 %agg.tmp304.sroa.2.0.insert.ext = zext i16 %add309 to i48 %agg.tmp304.sroa.2.0.insert.shift = shl nuw nsw i48 %agg.tmp304.sroa.2.0.insert.ext, 16 %agg.tmp304.sroa.0.0.insert.insert = or disjoint i48 %agg.tmp304.sroa.2.0.insert.shift, %agg.tmp295.sroa.0.0.insert.ext @@ -6914,46 +6921,49 @@ invoke.cont301.preheader: ; preds = %for.body283.prehead %sext.i1005 = shl i32 %p.sroa.0.0.extract.trunc.i987, 16 %conv16.i.i1006 = ashr exact i32 %sext.i1005, 16 %add.i.i1004 = add nsw i32 %conv16.i.i1006, 45 - %sub329 = sub nuw nsw i32 19, %indvars.iv17 + %sub329 = sub nsw i32 19, %conv285 br label %invoke.cont301 -for.cond.cleanup292: ; preds = %for.cond319.for.cond.cleanup323_crit_edge - %indvars.iv.next18 = add nsw i32 %indvars.iv17, -1 - %exitcond = icmp eq i16 %yy273.0.in1327, %87 - br i1 %exitcond, label %for.cond354.preheader, label %invoke.cont301.preheader, !llvm.loop !168 +for.cond.cleanup292: ; preds = %for.cond319.for.cond.cleanup323_crit_edge, %for.body283 + %pr.sroa.0.5.lcssa = phi i32 [ %pr.sroa.0.41326, %for.body283 ], [ %add.i.i1011, %for.cond319.for.cond.cleanup323_crit_edge ] + %dec349 = add i16 %dev.11328, -1 + %yy273.0 = add i16 %yy273.01329, 1 + %conv278 = sext i16 %yy273.0 to i32 + %cmp281.not = icmp slt i32 %add280, %conv278 + br i1 %cmp281.not, label %for.cond354.preheader, label %for.body283, !llvm.loop !168 invoke.cont301: ; preds = %for.cond319.for.cond.cleanup323_crit_edge, %invoke.cont301.preheader - %zz284.01320 = phi i16 [ %inc346, %for.cond319.for.cond.cleanup323_crit_edge ], [ %96, %invoke.cont301.preheader ] + %zz284.01320 = phi i16 [ %inc346, %for.cond319.for.cond.cleanup323_crit_edge ], [ %sub286, %invoke.cont301.preheader ] %pr.sroa.0.51319 = phi i32 [ %add.i.i1011, %for.cond319.for.cond.cleanup323_crit_edge ], [ %pr.sroa.0.41326, %invoke.cont301.preheader ] %conv.i.i965 = sext i16 %zz284.01320 to i32 - %97 = mul nsw i32 %conv.i.i965, 10 - %sub11.i.i977 = add nsw i32 %mul.i.i972, %97 - %98 = mul nsw i32 %sub11.i.i977, 7 - %add21.i.i984 = add nsw i32 %add.i.i979, %98 - %sub11.i.i1002 = add nsw i32 %mul.i.i997, %97 - %99 = mul nsw i32 %sub11.i.i1002, 7 - %add21.i.i1009 = add nsw i32 %add.i.i1004, %99 + %94 = mul nsw i32 %conv.i.i965, 10 + %sub11.i.i977 = add nsw i32 %mul.i.i972, %94 + %95 = mul nsw i32 %sub11.i.i977, 7 + %add21.i.i984 = add nsw i32 %add.i.i979, %95 + %sub11.i.i1002 = add nsw i32 %mul.i.i997, %94 + %96 = mul nsw i32 %sub11.i.i1002, 7 + %add21.i.i1009 = add nsw i32 %add.i.i1004, %96 br label %invoke.cont326 for.cond319.for.cond.cleanup323_crit_edge: ; preds = %if.end336 %inc346 = add i16 %zz284.01320, 1 %conv289 = sext i16 %inc346 to i32 - %cmp291.not = icmp slt i32 %indvars.iv17, %conv289 + %cmp291.not = icmp sgt i32 %conv289, %conv285 br i1 %cmp291.not, label %for.cond.cleanup292, label %invoke.cont301, !llvm.loop !169 invoke.cont326: ; preds = %if.end336, %invoke.cont301 - %xx315.01315 = phi i16 [ %96, %invoke.cont301 ], [ %inc340, %if.end336 ] + %xx315.01315 = phi i16 [ %sub286, %invoke.cont301 ], [ %inc340, %if.end336 ] %ia303.01314 = phi i32 [ %add21.i.i1009, %invoke.cont301 ], [ %inc338, %if.end336 ] %i294.01313 = phi i32 [ %add21.i.i984, %invoke.cont301 ], [ %inc337, %if.end336 ] %pr.sroa.0.61312 = phi i32 [ %pr.sroa.0.51319, %invoke.cont301 ], [ %add.i.i1011, %if.end336 ] %mul.i.i1010 = mul i32 %pr.sroa.0.61312, 1103515245 %add.i.i1011 = add i32 %mul.i.i1010, 12345 %div.i.i1012 = sdiv i32 %add.i.i1011, 65536 - %100 = trunc nsw i32 %div.i.i1012 to i16 - %rem.lhs.trunc.i1013 = and i16 %100, 32767 + %97 = trunc nsw i32 %div.i.i1012 to i16 + %rem.lhs.trunc.i1013 = and i16 %97, 32767 %rem49.i1014 = urem i16 %rem.lhs.trunc.i1013, 21 %rem.zext.i1015 = zext nneg i16 %rem49.i1014 to i32 - %cmp330.not = icmp samesign ult i32 %sub329, %rem.zext.i1015 + %cmp330.not = icmp slt i32 %sub329, %rem.zext.i1015 br i1 %cmp330.not, label %if.end336, label %if.then331 if.then331: ; preds = %invoke.cont326 @@ -6970,15 +6980,15 @@ if.end336: ; preds = %if.then331, %invoke %inc338 = add i32 %ia303.01314, 1 %inc340 = add i16 %xx315.01315, 1 %conv320 = sext i16 %inc340 to i32 - %cmp322.not = icmp slt i32 %indvars.iv17, %conv320 + %cmp322.not = icmp sgt i32 %conv320, %conv285 br i1 %cmp322.not, label %for.cond319.for.cond.cleanup323_crit_edge, label %invoke.cont326, !llvm.loop !170 for.cond363.preheader: ; preds = %for.cond.cleanup369, %for.cond354.preheader %indvars.iv1458 = phi i32 [ -3, %for.cond354.preheader ], [ %indvars.iv.next1459, %for.cond.cleanup369 ] %indvars.iv1452 = phi i64 [ 7, %for.cond354.preheader ], [ %indvars.iv.next1453, %for.cond.cleanup369 ] %indvars.iv1441 = phi i64 [ 0, %for.cond354.preheader ], [ %indvars.iv.next1442, %for.cond.cleanup369 ] - %101 = trunc i32 %indvars.iv1458 to i16 - %add13.i = add i16 %101, %p1.sroa.14.0.extract.trunc + %98 = trunc i32 %indvars.iv1458 to i16 + %add13.i = add i16 %98, %p1.sroa.14.0.extract.trunc %conv.i.i1050 = sext i16 %add13.i to i32 br label %invoke.cont386 @@ -7002,24 +7012,24 @@ invoke.cont386: ; preds = %for.cond.cleanup396 %retval.sroa.2.0.insert.shift.i = shl nuw nsw i48 %retval.sroa.2.0.insert.ext.i, 16 %retval.sroa.0.0.insert.insert.i = or disjoint i48 %retval.sroa.2.0.insert.shift.i, %retval.sroa.0.0.insert.ext.i %p.sroa.0.0.extract.trunc.i1047 = trunc nuw i48 %retval.sroa.0.0.insert.insert.i to i32 - %102 = load i16, ptr %Z25.i, align 4, !tbaa !57 - %conv2.i.i1052 = sext i16 %102 to i32 + %99 = load i16, ptr %Z25.i, align 4, !tbaa !57 + %conv2.i.i1052 = sext i16 %99 to i32 %sub.i.i1053 = sub nsw i32 %conv.i.i1050, %conv2.i.i1052 - %103 = load i16, ptr %Y.i.i, align 2, !tbaa !58 - %conv3.i.i1056 = sext i16 %103 to i32 + %100 = load i16, ptr %Y.i.i, align 2, !tbaa !58 + %conv3.i.i1056 = sext i16 %100 to i32 %mul.i.i1057 = mul nsw i32 %sub.i.i1053, %conv3.i.i1056 - %104 = load i16, ptr %m_cache_extent.i.i, align 4, !tbaa !59 - %conv5.i.i1058 = sext i16 %104 to i32 + %101 = load i16, ptr %m_cache_extent.i.i, align 4, !tbaa !59 + %conv5.i.i1058 = sext i16 %101 to i32 %conv7.i.i1059 = ashr i32 %p.sroa.0.0.extract.trunc.i1047, 16 - %105 = load i16, ptr %Y12.i, align 2, !tbaa !56 - %conv10.i.i1061 = sext i16 %105 to i32 + %102 = load i16, ptr %Y12.i, align 2, !tbaa !56 + %conv10.i.i1061 = sext i16 %102 to i32 %sub11.i.i1062 = sub i32 %mul.i.i1057, %conv10.i.i1061 %mul622.i.i1063 = add i32 %sub11.i.i1062, %conv7.i.i1059 %add.i.i1064 = mul i32 %mul622.i.i1063, %conv5.i.i1058 %sext.i1065 = shl i32 %p.sroa.0.0.extract.trunc.i1047, 16 %conv16.i.i1066 = ashr exact i32 %sext.i1065, 16 - %106 = load i16, ptr %m_area, align 8, !tbaa !53 - %conv19.i.i1067 = sext i16 %106 to i32 + %103 = load i16, ptr %m_area, align 8, !tbaa !53 + %conv19.i.i1067 = sext i16 %103 to i32 %sub20.i.i1068 = sub nsw i32 %conv16.i.i1066, %conv19.i.i1067 %add21.i.i1069 = add nsw i32 %sub20.i.i1068, %add.i.i1064 br label %invoke.cont402 @@ -7041,63 +7051,63 @@ invoke.cont402: ; preds = %if.end443, %invoke. %p.sroa.0.0.extract.trunc.i1086 = trunc nuw i48 %retval.sroa.0.0.insert.insert.i1085 to i32 %sext.i1087 = shl i32 %p.sroa.0.0.extract.trunc.i1086, 16 %conv.i1088 = ashr exact i32 %sext.i1087, 16 - %107 = load i16, ptr %m_area, align 8, !tbaa !53 - %conv3.i1089 = sext i16 %107 to i32 + %104 = load i16, ptr %m_area, align 8, !tbaa !53 + %conv3.i1089 = sext i16 %104 to i32 %cmp.not.i1090 = icmp slt i32 %conv.i1088, %conv3.i1089 - %108 = load i16, ptr %MaxEdge.i727, align 2 - %conv7.i1092 = sext i16 %108 to i32 + %105 = load i16, ptr %MaxEdge.i727, align 2 + %conv7.i1092 = sext i16 %105 to i32 %cmp8.not.i1093 = icmp sgt i32 %conv.i1088, %conv7.i1092 %or.cond.i1094 = select i1 %cmp.not.i1090, i1 true, i1 %cmp8.not.i1093 br i1 %or.cond.i1094, label %if.end443, label %land.lhs.true9.i1095 land.lhs.true9.i1095: ; preds = %invoke.cont402 %conv10.i1096 = ashr i32 %p.sroa.0.0.extract.trunc.i1086, 16 - %109 = load i16, ptr %Y12.i, align 2, !tbaa !56 - %conv13.i1098 = sext i16 %109 to i32 + %106 = load i16, ptr %Y12.i, align 2, !tbaa !56 + %conv13.i1098 = sext i16 %106 to i32 %cmp14.not.i1099 = icmp slt i32 %conv10.i1096, %conv13.i1098 - %110 = load i16, ptr %Y19.i, align 8 - %conv20.i1101 = sext i16 %110 to i32 + %107 = load i16, ptr %Y19.i, align 8 + %conv20.i1101 = sext i16 %107 to i32 %cmp21.not.i1102 = icmp sgt i32 %conv10.i1096, %conv20.i1101 %or.cond39.i1103 = select i1 %cmp14.not.i1099, i1 true, i1 %cmp21.not.i1102 br i1 %or.cond39.i1103, label %if.end443, label %land.lhs.true22.i1104 land.lhs.true22.i1104: ; preds = %land.lhs.true9.i1095 - %111 = load i16, ptr %Z25.i, align 4, !tbaa !57 - %cmp27.not.i1110 = icmp sge i16 %add13.i, %111 - %112 = load i16, ptr %Z31.i, align 2 - %cmp33.i1114 = icmp sle i16 %add13.i, %112 + %108 = load i16, ptr %Z25.i, align 4, !tbaa !57 + %cmp27.not.i1110 = icmp sge i16 %add13.i, %108 + %109 = load i16, ptr %Z31.i, align 2 + %cmp33.i1114 = icmp sle i16 %add13.i, %109 %or.cond1283 = select i1 %cmp27.not.i1110, i1 %cmp33.i1114, i1 false br i1 %or.cond1283, label %land.lhs.true, label %if.end443 land.lhs.true: ; preds = %land.lhs.true22.i1104 - %113 = load ptr, ptr %m_data, align 8, !tbaa !60 + %110 = load ptr, ptr %m_data, align 8, !tbaa !60 %idxprom408 = zext i32 %vi379.01331 to i64 - %arrayidx409 = getelementptr inbounds %struct.MapNode, ptr %113, i64 %idxprom408 - %114 = load i16, ptr %arrayidx409, align 4, !tbaa !68 - %115 = and i16 %114, -2 - %switch = icmp eq i16 %115, 126 + %arrayidx409 = getelementptr inbounds %struct.MapNode, ptr %110, i64 %idxprom408 + %111 = load i16, ptr %arrayidx409, align 4, !tbaa !68 + %112 = and i16 %111, -2 + %switch = icmp eq i16 %112, 126 br i1 %switch, label %if.then424, label %lor.lhs.false419 lor.lhs.false419: ; preds = %land.lhs.true - %cmp.i = icmp eq i16 %114, %spec.store.select + %cmp.i = icmp eq i16 %111, %spec.store.select br i1 %cmp.i, label %land.lhs.true.i, label %if.end443 land.lhs.true.i: ; preds = %lor.lhs.false419 %param1.i1116 = getelementptr inbounds i8, ptr %arrayidx409, i64 2 - %116 = load i8, ptr %param1.i1116, align 2, !tbaa !173 - %cmp7.i = icmp eq i8 %116, 0 + %113 = load i8, ptr %param1.i1116, align 2, !tbaa !173 + %cmp7.i = icmp eq i8 %113, 0 br i1 %cmp7.i, label %_ZNK7MapNodeeqERKS_.exit, label %if.end443 _ZNK7MapNodeeqERKS_.exit: ; preds = %land.lhs.true.i %param2.i1118 = getelementptr inbounds i8, ptr %arrayidx409, i64 3 - %117 = load i8, ptr %param2.i1118, align 1, !tbaa !174 - %cmp11.i = icmp eq i8 %117, 0 + %114 = load i8, ptr %param2.i1118, align 1, !tbaa !174 + %cmp11.i = icmp eq i8 %114, 0 br i1 %cmp11.i, label %if.then424, label %if.end443 if.then424: ; preds = %_ZNK7MapNodeeqERKS_.exit, %land.lhs.true %arrayidx.i1120 = getelementptr inbounds i8, ptr %call.i723, i64 %indvars.iv1445 - %118 = load i8, ptr %arrayidx.i1120, align 1, !tbaa !12 - switch i8 %118, label %if.end443 [ + %115 = load i8, ptr %arrayidx.i1120, align 1, !tbaa !12 + switch i8 %115, label %if.end443 [ i8 1, label %if.end443.sink.split i8 2, label %if.then437 ] diff --git a/bench/mitsuba3/optimized/rgb2spec_opt.cpp.ll b/bench/mitsuba3/optimized/rgb2spec_opt.cpp.ll index a47c4bc75d2..0319be3d37d 100644 --- a/bench/mitsuba3/optimized/rgb2spec_opt.cpp.ll +++ b/bench/mitsuba3/optimized/rgb2spec_opt.cpp.ll @@ -127,7 +127,7 @@ define hidden noundef range(i32 0, 2) i32 @_Z12LUPDecomposePPdidPi(ptr nocapture %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %.preheader78, label %.lr.ph, !llvm.loop !6 -.loopexit: ; preds = %._crit_edge.us, %35 +.loopexit: ; preds = %._crit_edge.us, %36 %indvars.iv.next101 = add nuw nsw i64 %indvars.iv100, 1 %exitcond114.not = icmp eq i64 %indvars.iv.next94, %6 br i1 %exitcond114.not, label %._crit_edge, label %.preheader, !llvm.loop !8 @@ -162,66 +162,67 @@ define hidden noundef range(i32 0, 2) i32 @_Z12LUPDecomposePPdidPi(ptr nocapture 22: ; preds = %20 %23 = zext i32 %.171 to i64 %.not77 = icmp eq i64 %indvars.iv93, %23 - br i1 %.not77, label %35, label %24 + br i1 %.not77, label %36, label %24 24: ; preds = %22 %25 = getelementptr inbounds i32, ptr %3, i64 %indvars.iv93 %26 = load i32, ptr %25, align 4 - %27 = getelementptr inbounds i32, ptr %3, i64 %23 - %28 = load i32, ptr %27, align 4 - store i32 %28, ptr %25, align 4 - store i32 %26, ptr %27, align 4 - %29 = getelementptr inbounds ptr, ptr %0, i64 %indvars.iv93 - %30 = load ptr, ptr %29, align 8 - %31 = getelementptr inbounds ptr, ptr %0, i64 %23 - %32 = load ptr, ptr %31, align 8 - store ptr %32, ptr %29, align 8 - store ptr %30, ptr %31, align 8 - %33 = load i32, ptr %7, align 4 - %34 = add nsw i32 %33, 1 - store i32 %34, ptr %7, align 4 - br label %35 - -35: ; preds = %24, %22 + %27 = sext i32 %.171 to i64 + %28 = getelementptr inbounds i32, ptr %3, i64 %27 + %29 = load i32, ptr %28, align 4 + store i32 %29, ptr %25, align 4 + store i32 %26, ptr %28, align 4 + %30 = getelementptr inbounds ptr, ptr %0, i64 %indvars.iv93 + %31 = load ptr, ptr %30, align 8 + %32 = getelementptr inbounds ptr, ptr %0, i64 %27 + %33 = load ptr, ptr %32, align 8 + store ptr %33, ptr %30, align 8 + store ptr %31, ptr %32, align 8 + %34 = load i32, ptr %7, align 4 + %35 = add nsw i32 %34, 1 + store i32 %35, ptr %7, align 4 + br label %36 + +36: ; preds = %24, %22 %indvars.iv.next94 = add nuw nsw i64 %indvars.iv93, 1 - %36 = icmp samesign ult i64 %indvars.iv.next94, %8 - br i1 %36, label %.lr.ph88, label %.loopexit + %37 = icmp samesign ult i64 %indvars.iv.next94, %8 + br i1 %37, label %.lr.ph88, label %.loopexit -.lr.ph88: ; preds = %35 - %37 = getelementptr inbounds ptr, ptr %0, i64 %indvars.iv93 +.lr.ph88: ; preds = %36 + %38 = getelementptr inbounds ptr, ptr %0, i64 %indvars.iv93 br label %.lr.ph85.us .lr.ph85.us: ; preds = %._crit_edge.us, %.lr.ph88 %indvars.iv107 = phi i64 [ %indvars.iv.next108, %._crit_edge.us ], [ %indvars.iv100, %.lr.ph88 ] - %38 = load ptr, ptr %37, align 8 - %39 = getelementptr inbounds double, ptr %38, i64 %indvars.iv93 - %40 = load double, ptr %39, align 8 - %41 = getelementptr inbounds ptr, ptr %0, i64 %indvars.iv107 - %42 = load ptr, ptr %41, align 8 - %43 = getelementptr inbounds double, ptr %42, i64 %indvars.iv93 - %44 = load double, ptr %43, align 8 - %45 = fdiv contract double %44, %40 - store double %45, ptr %43, align 8 - br label %46 - -46: ; preds = %.lr.ph85.us, %46 - %indvars.iv102 = phi i64 [ %indvars.iv100, %.lr.ph85.us ], [ %indvars.iv.next103, %46 ] - %47 = load ptr, ptr %41, align 8 - %48 = getelementptr inbounds double, ptr %47, i64 %indvars.iv93 - %49 = load double, ptr %48, align 8 - %50 = load ptr, ptr %37, align 8 - %51 = getelementptr inbounds double, ptr %50, i64 %indvars.iv102 - %52 = load double, ptr %51, align 8 - %53 = fmul contract double %49, %52 - %54 = getelementptr inbounds double, ptr %47, i64 %indvars.iv102 - %55 = load double, ptr %54, align 8 - %56 = fsub contract double %55, %53 - store double %56, ptr %54, align 8 + %39 = load ptr, ptr %38, align 8 + %40 = getelementptr inbounds double, ptr %39, i64 %indvars.iv93 + %41 = load double, ptr %40, align 8 + %42 = getelementptr inbounds ptr, ptr %0, i64 %indvars.iv107 + %43 = load ptr, ptr %42, align 8 + %44 = getelementptr inbounds double, ptr %43, i64 %indvars.iv93 + %45 = load double, ptr %44, align 8 + %46 = fdiv contract double %45, %41 + store double %46, ptr %44, align 8 + br label %47 + +47: ; preds = %.lr.ph85.us, %47 + %indvars.iv102 = phi i64 [ %indvars.iv100, %.lr.ph85.us ], [ %indvars.iv.next103, %47 ] + %48 = load ptr, ptr %42, align 8 + %49 = getelementptr inbounds double, ptr %48, i64 %indvars.iv93 + %50 = load double, ptr %49, align 8 + %51 = load ptr, ptr %38, align 8 + %52 = getelementptr inbounds double, ptr %51, i64 %indvars.iv102 + %53 = load double, ptr %52, align 8 + %54 = fmul contract double %50, %53 + %55 = getelementptr inbounds double, ptr %48, i64 %indvars.iv102 + %56 = load double, ptr %55, align 8 + %57 = fsub contract double %56, %54 + store double %57, ptr %55, align 8 %indvars.iv.next103 = add nuw nsw i64 %indvars.iv102, 1 %exitcond106.not = icmp eq i64 %indvars.iv.next103, %6 - br i1 %exitcond106.not, label %._crit_edge.us, label %46, !llvm.loop !10 + br i1 %exitcond106.not, label %._crit_edge.us, label %47, !llvm.loop !10 -._crit_edge.us: ; preds = %46 +._crit_edge.us: ; preds = %47 %indvars.iv.next108 = add nuw nsw i64 %indvars.iv107, 1 %exitcond111.not = icmp eq i64 %indvars.iv.next108, %6 br i1 %exitcond111.not, label %.loopexit, label %.lr.ph85.us, !llvm.loop !11 @@ -951,7 +952,7 @@ define hidden noundef double @_Z12gauss_newtonPKdPdi(ptr nocapture noundef reado br label %18 18: ; preds = %.loopexit, %.lr.ph - %.03654 = phi i32 [ 0, %.lr.ph ], [ %182, %.loopexit ] + %.03654 = phi i32 [ 0, %.lr.ph ], [ %183, %.loopexit ] store ptr %5, ptr %8, align 16 store ptr %6, ptr %13, align 8 store ptr %7, ptr %14, align 16 @@ -1037,7 +1038,7 @@ _Z13eval_residualPKdS0_Pd.exit: ; preds = %45 %exitcond.not.i40 = icmp eq i64 %indvars.iv.next.i39, 4 br i1 %exitcond.not.i40, label %.preheader.i, label %.lr.ph.i, !llvm.loop !6 -.loopexit.i: ; preds = %._crit_edge.us.i, %77 +.loopexit.i: ; preds = %._crit_edge.us.i, %78 %indvars.iv.next101.i = add nuw nsw i64 %indvars.iv100.i, 1 %exitcond114.not.i = icmp eq i64 %indvars.iv.next94.i, 3 br i1 %exitcond114.not.i, label %.lr.ph46.i, label %.preheader.i, !llvm.loop !8 @@ -1067,141 +1068,142 @@ _Z13eval_residualPKdS0_Pd.exit: ; preds = %45 62: ; preds = %54 %63 = fcmp contract olt double %.169.i, 1.000000e-15 - br i1 %63, label %96, label %64 + br i1 %63, label %97, label %64 64: ; preds = %62 %65 = zext i32 %.171.i to i64 %.not77.i = icmp eq i64 %indvars.iv93.i, %65 - br i1 %.not77.i, label %77, label %66 + br i1 %.not77.i, label %78, label %66 66: ; preds = %64 %67 = getelementptr inbounds i32, ptr %10, i64 %indvars.iv93.i %68 = load i32, ptr %67, align 4 - %69 = getelementptr inbounds i32, ptr %10, i64 %65 - %70 = load i32, ptr %69, align 4 - store i32 %70, ptr %67, align 4 - store i32 %68, ptr %69, align 4 - %71 = getelementptr inbounds ptr, ptr %8, i64 %indvars.iv93.i - %72 = load ptr, ptr %71, align 8 - %73 = getelementptr inbounds ptr, ptr %8, i64 %65 - %74 = load ptr, ptr %73, align 8 - store ptr %74, ptr %71, align 8 - store ptr %72, ptr %73, align 8 - %75 = load i32, ptr %15, align 4 - %76 = add nsw i32 %75, 1 - store i32 %76, ptr %15, align 4 - br label %77 - -77: ; preds = %66, %64 + %69 = sext i32 %.171.i to i64 + %70 = getelementptr inbounds i32, ptr %10, i64 %69 + %71 = load i32, ptr %70, align 4 + store i32 %71, ptr %67, align 4 + store i32 %68, ptr %70, align 4 + %72 = getelementptr inbounds ptr, ptr %8, i64 %indvars.iv93.i + %73 = load ptr, ptr %72, align 8 + %74 = getelementptr inbounds ptr, ptr %8, i64 %69 + %75 = load ptr, ptr %74, align 8 + store ptr %75, ptr %72, align 8 + store ptr %73, ptr %74, align 8 + %76 = load i32, ptr %15, align 4 + %77 = add nsw i32 %76, 1 + store i32 %77, ptr %15, align 4 + br label %78 + +78: ; preds = %66, %64 %indvars.iv.next94.i = add nuw nsw i64 %indvars.iv93.i, 1 - %78 = icmp samesign ult i64 %indvars.iv93.i, 2 - br i1 %78, label %.lr.ph88.i, label %.loopexit.i + %79 = icmp samesign ult i64 %indvars.iv93.i, 2 + br i1 %79, label %.lr.ph88.i, label %.loopexit.i -.lr.ph88.i: ; preds = %77 - %79 = getelementptr inbounds ptr, ptr %8, i64 %indvars.iv93.i - %80 = load ptr, ptr %79, align 8 - %81 = getelementptr inbounds double, ptr %80, i64 %indvars.iv93.i +.lr.ph88.i: ; preds = %78 + %80 = getelementptr inbounds ptr, ptr %8, i64 %indvars.iv93.i + %81 = load ptr, ptr %80, align 8 + %82 = getelementptr inbounds double, ptr %81, i64 %indvars.iv93.i br label %.lr.ph85.us.i .lr.ph85.us.i: ; preds = %._crit_edge.us.i, %.lr.ph88.i %indvars.iv107.i = phi i64 [ %indvars.iv.next108.i, %._crit_edge.us.i ], [ %indvars.iv100.i, %.lr.ph88.i ] - %82 = load double, ptr %81, align 8 - %83 = getelementptr inbounds ptr, ptr %8, i64 %indvars.iv107.i - %84 = load ptr, ptr %83, align 8 - %85 = getelementptr inbounds double, ptr %84, i64 %indvars.iv93.i - %86 = load double, ptr %85, align 8 - %87 = fdiv contract double %86, %82 - store double %87, ptr %85, align 8 - br label %88 - -88: ; preds = %88, %.lr.ph85.us.i - %indvars.iv102.i = phi i64 [ %indvars.iv100.i, %.lr.ph85.us.i ], [ %indvars.iv.next103.i, %88 ] - %89 = load double, ptr %85, align 8 - %90 = getelementptr inbounds double, ptr %80, i64 %indvars.iv102.i - %91 = load double, ptr %90, align 8 - %92 = fmul contract double %89, %91 - %93 = getelementptr inbounds double, ptr %84, i64 %indvars.iv102.i - %94 = load double, ptr %93, align 8 - %95 = fsub contract double %94, %92 - store double %95, ptr %93, align 8 + %83 = load double, ptr %82, align 8 + %84 = getelementptr inbounds ptr, ptr %8, i64 %indvars.iv107.i + %85 = load ptr, ptr %84, align 8 + %86 = getelementptr inbounds double, ptr %85, i64 %indvars.iv93.i + %87 = load double, ptr %86, align 8 + %88 = fdiv contract double %87, %83 + store double %88, ptr %86, align 8 + br label %89 + +89: ; preds = %89, %.lr.ph85.us.i + %indvars.iv102.i = phi i64 [ %indvars.iv100.i, %.lr.ph85.us.i ], [ %indvars.iv.next103.i, %89 ] + %90 = load double, ptr %86, align 8 + %91 = getelementptr inbounds double, ptr %81, i64 %indvars.iv102.i + %92 = load double, ptr %91, align 8 + %93 = fmul contract double %90, %92 + %94 = getelementptr inbounds double, ptr %85, i64 %indvars.iv102.i + %95 = load double, ptr %94, align 8 + %96 = fsub contract double %95, %93 + store double %96, ptr %94, align 8 %indvars.iv.next103.i = add nuw nsw i64 %indvars.iv102.i, 1 %exitcond106.not.i = icmp eq i64 %indvars.iv.next103.i, 3 - br i1 %exitcond106.not.i, label %._crit_edge.us.i, label %88, !llvm.loop !10 + br i1 %exitcond106.not.i, label %._crit_edge.us.i, label %89, !llvm.loop !10 -._crit_edge.us.i: ; preds = %88 +._crit_edge.us.i: ; preds = %89 %indvars.iv.next108.i = add nuw nsw i64 %indvars.iv107.i, 1 %exitcond111.not.i = icmp eq i64 %indvars.iv.next108.i, 3 br i1 %exitcond111.not.i, label %.loopexit.i, label %.lr.ph85.us.i, !llvm.loop !11 -96: ; preds = %62 - %97 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3__124__put_character_sequenceB8ne190000IcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_m(ptr noundef nonnull align 8 dereferenceable(8) @_ZNSt3__14coutE, ptr noundef nonnull @.str.3, i64 noundef 4) - %98 = load double, ptr %0, align 8 - %99 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEd(ptr noundef nonnull align 8 dereferenceable(8) %97, double noundef %98) - %100 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3__124__put_character_sequenceB8ne190000IcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_m(ptr noundef nonnull align 8 dereferenceable(8) %99, ptr noundef nonnull @.str.4, i64 noundef 1) - %101 = getelementptr inbounds i8, ptr %0, i64 8 - %102 = load double, ptr %101, align 8 - %103 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEd(ptr noundef nonnull align 8 dereferenceable(8) %100, double noundef %102) - %104 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3__124__put_character_sequenceB8ne190000IcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_m(ptr noundef nonnull align 8 dereferenceable(8) %103, ptr noundef nonnull @.str.4, i64 noundef 1) - %105 = getelementptr inbounds i8, ptr %0, i64 16 - %106 = load double, ptr %105, align 8 - %107 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEd(ptr noundef nonnull align 8 dereferenceable(8) %104, double noundef %106) - %108 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3__14endlB8ne190000IcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_(ptr noundef nonnull align 8 dereferenceable(8) %107) - %109 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3__124__put_character_sequenceB8ne190000IcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_m(ptr noundef nonnull align 8 dereferenceable(8) @_ZNSt3__14coutE, ptr noundef nonnull @.str.5, i64 noundef 3) - %110 = load double, ptr %1, align 8 - %111 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEd(ptr noundef nonnull align 8 dereferenceable(8) %109, double noundef %110) - %112 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3__124__put_character_sequenceB8ne190000IcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_m(ptr noundef nonnull align 8 dereferenceable(8) %111, ptr noundef nonnull @.str.4, i64 noundef 1) - %113 = load double, ptr %16, align 8 - %114 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEd(ptr noundef nonnull align 8 dereferenceable(8) %112, double noundef %113) - %115 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3__124__put_character_sequenceB8ne190000IcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_m(ptr noundef nonnull align 8 dereferenceable(8) %114, ptr noundef nonnull @.str.4, i64 noundef 1) - %116 = load double, ptr %17, align 8 - %117 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEd(ptr noundef nonnull align 8 dereferenceable(8) %115, double noundef %116) - %118 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3__14endlB8ne190000IcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_(ptr noundef nonnull align 8 dereferenceable(8) %117) - %119 = call ptr @__cxa_allocate_exception(i64 16) #22 - invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %119, ptr noundef nonnull @.str.6) - to label %120 unwind label %121 - -120: ; preds = %96 - call void @__cxa_throw(ptr nonnull %119, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #28 +97: ; preds = %62 + %98 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3__124__put_character_sequenceB8ne190000IcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_m(ptr noundef nonnull align 8 dereferenceable(8) @_ZNSt3__14coutE, ptr noundef nonnull @.str.3, i64 noundef 4) + %99 = load double, ptr %0, align 8 + %100 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEd(ptr noundef nonnull align 8 dereferenceable(8) %98, double noundef %99) + %101 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3__124__put_character_sequenceB8ne190000IcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_m(ptr noundef nonnull align 8 dereferenceable(8) %100, ptr noundef nonnull @.str.4, i64 noundef 1) + %102 = getelementptr inbounds i8, ptr %0, i64 8 + %103 = load double, ptr %102, align 8 + %104 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEd(ptr noundef nonnull align 8 dereferenceable(8) %101, double noundef %103) + %105 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3__124__put_character_sequenceB8ne190000IcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_m(ptr noundef nonnull align 8 dereferenceable(8) %104, ptr noundef nonnull @.str.4, i64 noundef 1) + %106 = getelementptr inbounds i8, ptr %0, i64 16 + %107 = load double, ptr %106, align 8 + %108 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEd(ptr noundef nonnull align 8 dereferenceable(8) %105, double noundef %107) + %109 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3__14endlB8ne190000IcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_(ptr noundef nonnull align 8 dereferenceable(8) %108) + %110 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3__124__put_character_sequenceB8ne190000IcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_m(ptr noundef nonnull align 8 dereferenceable(8) @_ZNSt3__14coutE, ptr noundef nonnull @.str.5, i64 noundef 3) + %111 = load double, ptr %1, align 8 + %112 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEd(ptr noundef nonnull align 8 dereferenceable(8) %110, double noundef %111) + %113 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3__124__put_character_sequenceB8ne190000IcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_m(ptr noundef nonnull align 8 dereferenceable(8) %112, ptr noundef nonnull @.str.4, i64 noundef 1) + %114 = load double, ptr %16, align 8 + %115 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEd(ptr noundef nonnull align 8 dereferenceable(8) %113, double noundef %114) + %116 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3__124__put_character_sequenceB8ne190000IcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_PKS4_m(ptr noundef nonnull align 8 dereferenceable(8) %115, ptr noundef nonnull @.str.4, i64 noundef 1) + %117 = load double, ptr %17, align 8 + %118 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEd(ptr noundef nonnull align 8 dereferenceable(8) %116, double noundef %117) + %119 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3__14endlB8ne190000IcNS_11char_traitsIcEEEERNS_13basic_ostreamIT_T0_EES7_(ptr noundef nonnull align 8 dereferenceable(8) %118) + %120 = call ptr @__cxa_allocate_exception(i64 16) #22 + invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %120, ptr noundef nonnull @.str.6) + to label %121 unwind label %122 + +121: ; preds = %97 + call void @__cxa_throw(ptr nonnull %120, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #28 unreachable -121: ; preds = %96 - %122 = landingpad { ptr, i32 } +122: ; preds = %97 + %123 = landingpad { ptr, i32 } cleanup - call void @__cxa_free_exception(ptr %119) #22 - resume { ptr, i32 } %122 + call void @__cxa_free_exception(ptr %120) #22 + resume { ptr, i32 } %123 .lr.ph46.i: ; preds = %.loopexit.i, %._crit_edge.i %indvars.iv55.i = phi i64 [ %indvars.iv.next56.i, %._crit_edge.i ], [ 0, %.loopexit.i ] - %123 = getelementptr inbounds i32, ptr %10, i64 %indvars.iv55.i - %124 = load i32, ptr %123, align 4 - %125 = sext i32 %124 to i64 - %126 = getelementptr inbounds double, ptr %9, i64 %125 - %127 = load double, ptr %126, align 8 - %128 = getelementptr inbounds double, ptr %11, i64 %indvars.iv55.i - store double %127, ptr %128, align 8 + %124 = getelementptr inbounds i32, ptr %10, i64 %indvars.iv55.i + %125 = load i32, ptr %124, align 4 + %126 = sext i32 %125 to i64 + %127 = getelementptr inbounds double, ptr %9, i64 %126 + %128 = load double, ptr %127, align 8 + %129 = getelementptr inbounds double, ptr %11, i64 %indvars.iv55.i + store double %128, ptr %129, align 8 %.not.i = icmp eq i64 %indvars.iv55.i, 0 br i1 %.not.i, label %._crit_edge.i, label %.lr.ph.i41 .lr.ph.i41: ; preds = %.lr.ph46.i - %129 = getelementptr inbounds ptr, ptr %8, i64 %indvars.iv55.i - %130 = load ptr, ptr %129, align 8 - br label %131 - -131: ; preds = %131, %.lr.ph.i41 - %132 = phi double [ %127, %.lr.ph.i41 ], [ %138, %131 ] - %indvars.iv.i42 = phi i64 [ 0, %.lr.ph.i41 ], [ %indvars.iv.next.i43, %131 ] - %133 = getelementptr inbounds double, ptr %130, i64 %indvars.iv.i42 - %134 = load double, ptr %133, align 8 - %135 = getelementptr inbounds double, ptr %11, i64 %indvars.iv.i42 - %136 = load double, ptr %135, align 8 - %137 = fmul contract double %134, %136 - %138 = fsub contract double %132, %137 - store double %138, ptr %128, align 8 + %130 = getelementptr inbounds ptr, ptr %8, i64 %indvars.iv55.i + %131 = load ptr, ptr %130, align 8 + br label %132 + +132: ; preds = %132, %.lr.ph.i41 + %133 = phi double [ %128, %.lr.ph.i41 ], [ %139, %132 ] + %indvars.iv.i42 = phi i64 [ 0, %.lr.ph.i41 ], [ %indvars.iv.next.i43, %132 ] + %134 = getelementptr inbounds double, ptr %131, i64 %indvars.iv.i42 + %135 = load double, ptr %134, align 8 + %136 = getelementptr inbounds double, ptr %11, i64 %indvars.iv.i42 + %137 = load double, ptr %136, align 8 + %138 = fmul contract double %135, %137 + %139 = fsub contract double %133, %138 + store double %139, ptr %129, align 8 %indvars.iv.next.i43 = add nuw nsw i64 %indvars.iv.i42, 1 %exitcond.not.i44 = icmp eq i64 %indvars.iv.next.i43, %indvars.iv55.i - br i1 %exitcond.not.i44, label %._crit_edge.i, label %131, !llvm.loop !12 + br i1 %exitcond.not.i44, label %._crit_edge.i, label %132, !llvm.loop !12 -._crit_edge.i: ; preds = %131, %.lr.ph46.i +._crit_edge.i: ; preds = %132, %.lr.ph46.i %indvars.iv.next56.i = add nuw nsw i64 %indvars.iv55.i, 1 %exitcond59.not.i = icmp eq i64 %indvars.iv.next56.i, 3 br i1 %exitcond59.not.i, label %.preheader.i45, label %.lr.ph46.i, !llvm.loop !13 @@ -1209,8 +1211,8 @@ _Z13eval_residualPKdS0_Pd.exit: ; preds = %45 .preheader.i45: ; preds = %._crit_edge.i, %._crit_edge49.i %indvars.iv60.i = phi i64 [ %indvars.iv.next61.i, %._crit_edge49.i ], [ 3, %._crit_edge.i ] %indvars.iv.next61.i = add nsw i64 %indvars.iv60.i, -1 - %139 = icmp ult i64 %indvars.iv60.i, 3 - br i1 %139, label %.lr.ph48.i, label %.preheader.._crit_edge49_crit_edge.i + %140 = icmp ult i64 %indvars.iv60.i, 3 + br i1 %140, label %.lr.ph48.i, label %.preheader.._crit_edge49_crit_edge.i .preheader.._crit_edge49_crit_edge.i: ; preds = %.preheader.i45 %.phi.trans.insert.i = getelementptr inbounds double, ptr %11, i64 %indvars.iv.next61.i @@ -1220,90 +1222,90 @@ _Z13eval_residualPKdS0_Pd.exit: ; preds = %45 br label %._crit_edge49.i .lr.ph48.i: ; preds = %.preheader.i45 - %140 = getelementptr inbounds ptr, ptr %8, i64 %indvars.iv.next61.i - %141 = getelementptr inbounds double, ptr %11, i64 %indvars.iv.next61.i - %.pre.i = load double, ptr %141, align 8 - %142 = load ptr, ptr %140, align 8 - br label %143 - -143: ; preds = %143, %.lr.ph48.i - %144 = phi double [ %.pre.i, %.lr.ph48.i ], [ %150, %143 ] - %indvars.iv62.i = phi i64 [ %indvars.iv60.i, %.lr.ph48.i ], [ %indvars.iv.next63.i, %143 ] - %145 = getelementptr inbounds double, ptr %142, i64 %indvars.iv62.i - %146 = load double, ptr %145, align 8 - %147 = getelementptr inbounds double, ptr %11, i64 %indvars.iv62.i - %148 = load double, ptr %147, align 8 - %149 = fmul contract double %146, %148 - %150 = fsub contract double %144, %149 - store double %150, ptr %141, align 8 + %141 = getelementptr inbounds ptr, ptr %8, i64 %indvars.iv.next61.i + %142 = getelementptr inbounds double, ptr %11, i64 %indvars.iv.next61.i + %.pre.i = load double, ptr %142, align 8 + %143 = load ptr, ptr %141, align 8 + br label %144 + +144: ; preds = %144, %.lr.ph48.i + %145 = phi double [ %.pre.i, %.lr.ph48.i ], [ %151, %144 ] + %indvars.iv62.i = phi i64 [ %indvars.iv60.i, %.lr.ph48.i ], [ %indvars.iv.next63.i, %144 ] + %146 = getelementptr inbounds double, ptr %143, i64 %indvars.iv62.i + %147 = load double, ptr %146, align 8 + %148 = getelementptr inbounds double, ptr %11, i64 %indvars.iv62.i + %149 = load double, ptr %148, align 8 + %150 = fmul contract double %147, %149 + %151 = fsub contract double %145, %150 + store double %151, ptr %142, align 8 %indvars.iv.next63.i = add nuw nsw i64 %indvars.iv62.i, 1 %exitcond.not = icmp eq i64 %indvars.iv.next63.i, 3 - br i1 %exitcond.not, label %._crit_edge49.i, label %143, !llvm.loop !14 - -._crit_edge49.i: ; preds = %143, %.preheader.._crit_edge49_crit_edge.i - %151 = phi ptr [ %.pre, %.preheader.._crit_edge49_crit_edge.i ], [ %142, %143 ] - %152 = phi double [ %.pre66.i, %.preheader.._crit_edge49_crit_edge.i ], [ %150, %143 ] - %153 = getelementptr inbounds double, ptr %11, i64 %indvars.iv.next61.i - %154 = getelementptr inbounds double, ptr %151, i64 %indvars.iv.next61.i - %155 = load double, ptr %154, align 8 - %156 = fdiv contract double %152, %155 - store double %156, ptr %153, align 8 - %157 = icmp ugt i64 %indvars.iv60.i, 1 - br i1 %157, label %.preheader.i45, label %_Z8LUPSolvePPdPiS_iS_.exit, !llvm.loop !15 + br i1 %exitcond.not, label %._crit_edge49.i, label %144, !llvm.loop !14 + +._crit_edge49.i: ; preds = %144, %.preheader.._crit_edge49_crit_edge.i + %152 = phi ptr [ %.pre, %.preheader.._crit_edge49_crit_edge.i ], [ %143, %144 ] + %153 = phi double [ %.pre66.i, %.preheader.._crit_edge49_crit_edge.i ], [ %151, %144 ] + %154 = getelementptr inbounds double, ptr %11, i64 %indvars.iv.next61.i + %155 = getelementptr inbounds double, ptr %152, i64 %indvars.iv.next61.i + %156 = load double, ptr %155, align 8 + %157 = fdiv contract double %153, %156 + store double %157, ptr %154, align 8 + %158 = icmp ugt i64 %indvars.iv60.i, 1 + br i1 %158, label %.preheader.i45, label %_Z8LUPSolvePPdPiS_iS_.exit, !llvm.loop !15 _Z8LUPSolvePPdPiS_iS_.exit: ; preds = %._crit_edge49.i, %_Z8LUPSolvePPdPiS_iS_.exit %indvars.iv = phi i64 [ %indvars.iv.next, %_Z8LUPSolvePPdPiS_iS_.exit ], [ 0, %._crit_edge49.i ] - %.252 = phi double [ %166, %_Z8LUPSolvePPdPiS_iS_.exit ], [ 0.000000e+00, %._crit_edge49.i ] - %158 = getelementptr inbounds [3 x double], ptr %11, i64 0, i64 %indvars.iv - %159 = load double, ptr %158, align 8 - %160 = getelementptr inbounds double, ptr %1, i64 %indvars.iv - %161 = load double, ptr %160, align 8 - %162 = fsub contract double %161, %159 - store double %162, ptr %160, align 8 - %163 = getelementptr inbounds [3 x double], ptr %9, i64 0, i64 %indvars.iv - %164 = load double, ptr %163, align 8 - %165 = fmul contract double %164, %164 - %166 = fadd contract double %.252, %165 + %.252 = phi double [ %167, %_Z8LUPSolvePPdPiS_iS_.exit ], [ 0.000000e+00, %._crit_edge49.i ] + %159 = getelementptr inbounds [3 x double], ptr %11, i64 0, i64 %indvars.iv + %160 = load double, ptr %159, align 8 + %161 = getelementptr inbounds double, ptr %1, i64 %indvars.iv + %162 = load double, ptr %161, align 8 + %163 = fsub contract double %162, %160 + store double %163, ptr %161, align 8 + %164 = getelementptr inbounds [3 x double], ptr %9, i64 0, i64 %indvars.iv + %165 = load double, ptr %164, align 8 + %166 = fmul contract double %165, %165 + %167 = fadd contract double %.252, %166 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond60.not = icmp eq i64 %indvars.iv.next, 3 - br i1 %exitcond60.not, label %167, label %_Z8LUPSolvePPdPiS_iS_.exit, !llvm.loop !27 - -167: ; preds = %_Z8LUPSolvePPdPiS_iS_.exit - %168 = load double, ptr %1, align 8 - %169 = load double, ptr %16, align 8 - %170 = fcmp contract olt double %168, %169 - %171 = select i1 %170, double %169, double %168 - %172 = load double, ptr %17, align 8 - %173 = fcmp contract olt double %171, %172 - %174 = select i1 %173, double %172, double %171 - %175 = fcmp contract ogt double %174, 2.000000e+02 - br i1 %175, label %.preheader, label %.loopexit - -.preheader: ; preds = %167 - %176 = fdiv contract double 2.000000e+02, %174 - br label %177 - -177: ; preds = %.preheader, %177 - %indvars.iv61 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next62, %177 ] - %178 = getelementptr inbounds double, ptr %1, i64 %indvars.iv61 - %179 = load double, ptr %178, align 8 - %180 = fmul contract double %176, %179 - store double %180, ptr %178, align 8 + br i1 %exitcond60.not, label %168, label %_Z8LUPSolvePPdPiS_iS_.exit, !llvm.loop !27 + +168: ; preds = %_Z8LUPSolvePPdPiS_iS_.exit + %169 = load double, ptr %1, align 8 + %170 = load double, ptr %16, align 8 + %171 = fcmp contract olt double %169, %170 + %172 = select i1 %171, double %170, double %169 + %173 = load double, ptr %17, align 8 + %174 = fcmp contract olt double %172, %173 + %175 = select i1 %174, double %173, double %172 + %176 = fcmp contract ogt double %175, 2.000000e+02 + br i1 %176, label %.preheader, label %.loopexit + +.preheader: ; preds = %168 + %177 = fdiv contract double 2.000000e+02, %175 + br label %178 + +178: ; preds = %.preheader, %178 + %indvars.iv61 = phi i64 [ 0, %.preheader ], [ %indvars.iv.next62, %178 ] + %179 = getelementptr inbounds double, ptr %1, i64 %indvars.iv61 + %180 = load double, ptr %179, align 8 + %181 = fmul contract double %177, %180 + store double %181, ptr %179, align 8 %indvars.iv.next62 = add nuw nsw i64 %indvars.iv61, 1 %exitcond64.not = icmp eq i64 %indvars.iv.next62, 3 - br i1 %exitcond64.not, label %.loopexit, label %177, !llvm.loop !28 + br i1 %exitcond64.not, label %.loopexit, label %178, !llvm.loop !28 -.loopexit: ; preds = %177, %167 - %181 = fcmp contract olt double %166, 0x3EB0C6F7A0B5ED8D - %182 = add nuw nsw i32 %.03654, 1 - %exitcond65.not = icmp eq i32 %182, %2 - %or.cond = select i1 %181, i1 true, i1 %exitcond65.not +.loopexit: ; preds = %178, %168 + %182 = fcmp contract olt double %167, 0x3EB0C6F7A0B5ED8D + %183 = add nuw nsw i32 %.03654, 1 + %exitcond65.not = icmp eq i32 %183, %2 + %or.cond = select i1 %182, i1 true, i1 %exitcond65.not br i1 %or.cond, label %._crit_edge, label %18, !llvm.loop !29 ._crit_edge: ; preds = %.loopexit, %3 - %.1 = phi double [ 0.000000e+00, %3 ], [ %166, %.loopexit ] - %183 = call contract double @llvm.sqrt.f64(double %.1) - ret double %183 + %.1 = phi double [ 0.000000e+00, %3 ], [ %167, %.loopexit ] + %184 = call contract double @llvm.sqrt.f64(double %.1) + ret double %184 } declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt3__113basic_ostreamIcNS_11char_traitsIcEEElsEd(ptr noundef nonnull align 8 dereferenceable(8), double noundef) local_unnamed_addr #10 diff --git a/bench/ocio/optimized/Lut3DOpCPU.cpp.ll b/bench/ocio/optimized/Lut3DOpCPU.cpp.ll index 7f811e179db..f60568e0b41 100644 --- a/bench/ocio/optimized/Lut3DOpCPU.cpp.ll +++ b/bench/ocio/optimized/Lut3DOpCPU.cpp.ll @@ -1782,8 +1782,8 @@ for.body91.i: ; preds = %for.body91.i.prehea br i1 %exitcond260.not.i, label %for.end102.i, label %for.body91.i, !llvm.loop !31 for.end102.i: ; preds = %for.body91.i - %cmp103.i = icmp samesign ult i64 %spec.select.i, 2 - %sub106.i = add nsw i64 %spec.select.i, -1 + %cmp103.i = icmp ult i64 %spec.select.i, 2 + %sub106.i = add i64 %spec.select.i, -1 br i1 %cmp103.i, label %if.then104.i, label %if.end120.i if.then104.i: ; preds = %for.end102.i @@ -1834,7 +1834,7 @@ for.body134.i: ; preds = %for.body134.i, %for %cmp139.i = fcmp ogt double %73, %abs_d.0201.i %piv.1.i = select i1 %cmp139.i, i64 %k131.0202.i, i64 %piv.0200.i %abs_d.1.i = select i1 %cmp139.i, double %73, double %abs_d.0201.i - %inc143.i = add nuw i64 %k131.0202.i, 1 + %inc143.i = add i64 %k131.0202.i, 1 %exitcond261.not.i = icmp eq i64 %inc143.i, 3 br i1 %exitcond261.not.i, label %for.end144.i, label %for.body134.i, !llvm.loop !33 @@ -1860,7 +1860,7 @@ if.then166.us.i: ; preds = %for.cond151.for.end br label %for.inc173.us.i for.inc173.us.i: ; preds = %for.cond151.for.end164_crit_edge.us.i, %if.then166.us.i - %inc174.us.i = add nuw i64 %h.0216.us.i, 1 + %inc174.us.i = add i64 %h.0216.us.i, 1 %exitcond263.not.i = icmp eq i64 %inc174.us.i, 3 br i1 %exitcond263.not.i, label %if.end176.i, label %for.cond151.preheader.us.i, !llvm.loop !34 @@ -1933,7 +1933,7 @@ for.body206.i: ; preds = %for.body206.i, %if. %89 = load double, ptr %arrayidx215.i, align 8 %90 = tail call double @llvm.fmuladd.f64(double %neg216.i, double %88, double %89) store double %90, ptr %arrayidx215.i, align 8 - %inc218.i = add nuw i64 %k203.0227.i, 1 + %inc218.i = add i64 %k203.0227.i, 1 %exitcond264.not.i = icmp eq i64 %inc218.i, 3 br i1 %exitcond264.not.i, label %for.end219.i, label %for.body206.i, !llvm.loop !36 @@ -1954,7 +1954,7 @@ for.end219.i: ; preds = %for.body206.i for.inc233.i: ; preds = %for.end219.i, %for.body192.i %numsweeps.4.i = phi i64 [ %add231.i, %for.end219.i ], [ %numsweeps.3230.i, %for.body192.i ] - %inc234.i = add nuw i64 %h189.0229.i, 1 + %inc234.i = add i64 %h189.0229.i, 1 %exitcond265.not.i = icmp eq i64 %inc234.i, 3 br i1 %exitcond265.not.i, label %for.cond123.loopexit.i, label %for.body192.i, !llvm.loop !37 diff --git a/bench/opencc/optimized/CommandLine.cpp.ll b/bench/opencc/optimized/CommandLine.cpp.ll index b989a48c7e1..674a662b3a4 100644 --- a/bench/opencc/optimized/CommandLine.cpp.ll +++ b/bench/opencc/optimized/CommandLine.cpp.ll @@ -7163,8 +7163,8 @@ define linkonce_odr dso_local void @_ZNK5TCLAP9StdOutput10spacePrintERSoRKNSt7__ %17 = and i64 %8, 2147483647 br label %.lr.ph106 -.loopexit: ; preds = %57 - %18 = trunc nsw i64 %58 to i32 +.loopexit: ; preds = %58 + %18 = trunc nsw i64 %59 to i32 %19 = icmp slt i32 %18, %9 br i1 %19, label %.lr.ph106, label %.loopexit88, !llvm.loop !86 @@ -7242,64 +7242,65 @@ define linkonce_odr dso_local void @_ZNK5TCLAP9StdOutput10spacePrintERSoRKNSt7__ %43 = load i8, ptr %42, align 1 %44 = icmp eq i8 %43, 10 %indvars.iv.next109 = add nuw nsw i64 %indvars.iv108, 1 - %45 = trunc nsw i64 %indvars.iv.next109 to i32 + %45 = trunc nuw nsw i64 %indvars.iv.next109 to i32 %spec.select76 = select i1 %44, i32 %45, i32 %.392 - %46 = icmp samesign ugt i32 %spec.select76, %45 - br i1 %46, label %.lr.ph95, label %.preheader, !llvm.loop !87 + %46 = sext i32 %spec.select76 to i64 + %47 = icmp slt i64 %indvars.iv.next109, %46 + br i1 %47, label %.lr.ph95, label %.preheader, !llvm.loop !87 .lr.ph97: ; preds = %.preheader, %.lr.ph97 - %.06596 = phi i32 [ %48, %.lr.ph97 ], [ 0, %.preheader ] - %47 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull @.str.43) - %48 = add nuw nsw i32 %.06596, 1 - %exitcond111.not = icmp eq i32 %48, %.062104 + %.06596 = phi i32 [ %49, %.lr.ph97 ], [ 0, %.preheader ] + %48 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull @.str.43) + %49 = add nuw nsw i32 %.06596, 1 + %exitcond111.not = icmp eq i32 %49, %.062104 br i1 %exitcond111.not, label %._crit_edge98, label %.lr.ph97, !llvm.loop !88 ._crit_edge98: ; preds = %.lr.ph97, %.preheader - %49 = icmp eq i32 %.063100, 0 - %50 = select i1 %49, i32 %5, i32 0 - %.184 = sub nsw i32 %.08399, %50 - %.1 = add nsw i32 %50, %.062104 - %51 = sext i32 %.063100 to i64 - %52 = sext i32 %.3.lcssa to i64 - call void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %7, ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %51, i64 noundef %52) - %53 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(32) %7) - to label %54 unwind label %64 - -54: ; preds = %._crit_edge98 - %55 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %53, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_) - to label %56 unwind label %64 + %50 = icmp eq i32 %.063100, 0 + %51 = select i1 %50, i32 %5, i32 0 + %.184 = sub nsw i32 %.08399, %51 + %.1 = add nsw i32 %51, %.062104 + %52 = sext i32 %.063100 to i64 + %53 = sext i32 %.3.lcssa to i64 + call void @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6substrEmm(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %7, ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %52, i64 noundef %53) + %54 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(32) %7) + to label %55 unwind label %65 + +55: ; preds = %._crit_edge98 + %56 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %54, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_) + to label %57 unwind label %65 -56: ; preds = %54 +57: ; preds = %55 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #27 - br label %57 + br label %58 -57: ; preds = %57, %56 - %indvars.iv112 = phi i64 [ %indvars.iv.next113, %57 ], [ %51, %56 ] - %58 = add nsw i64 %indvars.iv112, %52 - %59 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %58) #27 - %60 = load i8, ptr %59, align 1 - %61 = icmp eq i8 %60, 32 - %62 = icmp slt i64 %indvars.iv112, %17 - %63 = and i1 %62, %61 +58: ; preds = %58, %57 + %indvars.iv112 = phi i64 [ %indvars.iv.next113, %58 ], [ %52, %57 ] + %59 = add nsw i64 %indvars.iv112, %53 + %60 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %2, i64 noundef %59) #27 + %61 = load i8, ptr %60, align 1 + %62 = icmp eq i8 %61, 32 + %63 = icmp slt i64 %indvars.iv112, %17 + %64 = and i1 %63, %62 %indvars.iv.next113 = add nsw i64 %indvars.iv112, 1 - br i1 %63, label %57, label %.loopexit, !llvm.loop !89 + br i1 %64, label %58, label %.loopexit, !llvm.loop !89 -64: ; preds = %54, %._crit_edge98 - %65 = landingpad { ptr, i32 } +65: ; preds = %55, %._crit_edge98 + %66 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #27 - resume { ptr, i32 } %65 + resume { ptr, i32 } %66 .lr.ph: ; preds = %.preheader89, %.lr.ph - %.091 = phi i32 [ %67, %.lr.ph ], [ 0, %.preheader89 ] - %66 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull @.str.43) - %67 = add nuw nsw i32 %.091, 1 - %exitcond.not = icmp eq i32 %67, %4 + %.091 = phi i32 [ %68, %.lr.ph ], [ 0, %.preheader89 ] + %67 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull @.str.43) + %68 = add nuw nsw i32 %.091, 1 + %exitcond.not = icmp eq i32 %68, %4 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !90 ._crit_edge: ; preds = %.lr.ph, %.preheader89 - %68 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(32) %2) - %69 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %68, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_) + %69 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(32) %2) + %70 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %69, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_) br label %.loopexit88 .loopexit88: ; preds = %.loopexit, %14, %._crit_edge diff --git a/bench/opencv/optimized/matrix_decomp.cpp.ll b/bench/opencv/optimized/matrix_decomp.cpp.ll index 32f991099bd..fdeb0b66fd2 100644 --- a/bench/opencv/optimized/matrix_decomp.cpp.ll +++ b/bench/opencv/optimized/matrix_decomp.cpp.ll @@ -79,7 +79,7 @@ define internal fastcc noundef range(i32 -1, 2) i32 @_ZN2cv3halL6LUImplIfEEiPT_m %wide.trip.count223 = zext nneg i32 %5 to i64 br label %12 -.loopexit147: ; preds = %.loopexit146, %50 +.loopexit147: ; preds = %.loopexit146, %51 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond232.not = icmp eq i64 %indvars.iv.next204, %wide.trip.count231 br i1 %exitcond232.not, label %._crit_edge175, label %12, !llvm.loop !4 @@ -104,7 +104,7 @@ define internal fastcc noundef range(i32 -1, 2) i32 @_ZN2cv3halL6LUImplIfEEiPT_m %gep = getelementptr float, ptr %invariant.gep, i64 %16 %17 = load float, ptr %gep, align 4 %18 = tail call noundef float @llvm.fabs.f32(float %17) - %19 = zext nneg i32 %.0126154 to i64 + %19 = sext i32 %.0126154 to i64 %20 = mul i64 %7, %19 %gep156 = getelementptr float, ptr %invariant.gep, i64 %20 %21 = load float, ptr %gep156, align 4 @@ -118,7 +118,7 @@ define internal fastcc noundef range(i32 -1, 2) i32 @_ZN2cv3halL6LUImplIfEEiPT_m ._crit_edge: ; preds = %15, %12 %.0126.lcssa = phi i32 [ %14, %12 ], [ %.1127, %15 ] - %25 = zext i32 %.0126.lcssa to i64 + %25 = sext i32 %.0126.lcssa to i64 %26 = mul i64 %7, %25 %27 = getelementptr float, ptr %0, i64 %26 %28 = getelementptr float, ptr %27, i64 %indvars.iv203 @@ -128,108 +128,109 @@ define internal fastcc noundef range(i32 -1, 2) i32 @_ZN2cv3halL6LUImplIfEEiPT_m br i1 %31, label %.loopexit144, label %32 32: ; preds = %._crit_edge - %.not140 = icmp eq i64 %indvars.iv203, %25 - br i1 %.not140, label %50, label %.lr.ph158 + %33 = zext i32 %.0126.lcssa to i64 + %.not140 = icmp eq i64 %indvars.iv203, %33 + br i1 %.not140, label %51, label %.lr.ph158 .lr.ph158: ; preds = %32 - %33 = mul i64 %7, %indvars.iv203 - %34 = getelementptr float, ptr %0, i64 %33 - br label %35 - -35: ; preds = %.lr.ph158, %35 - %indvars.iv205 = phi i64 [ %indvars.iv203, %.lr.ph158 ], [ %indvars.iv.next206, %35 ] - %36 = getelementptr float, ptr %34, i64 %indvars.iv205 - %37 = getelementptr float, ptr %27, i64 %indvars.iv205 - %38 = load float, ptr %36, align 4 + %34 = mul i64 %7, %indvars.iv203 + %35 = getelementptr float, ptr %0, i64 %34 + br label %36 + +36: ; preds = %.lr.ph158, %36 + %indvars.iv205 = phi i64 [ %indvars.iv203, %.lr.ph158 ], [ %indvars.iv.next206, %36 ] + %37 = getelementptr float, ptr %35, i64 %indvars.iv205 + %38 = getelementptr float, ptr %27, i64 %indvars.iv205 %39 = load float, ptr %37, align 4 - store float %39, ptr %36, align 4 - store float %38, ptr %37, align 4 + %40 = load float, ptr %38, align 4 + store float %40, ptr %37, align 4 + store float %39, ptr %38, align 4 %indvars.iv.next206 = add nuw nsw i64 %indvars.iv205, 1 %exitcond209.not = icmp eq i64 %indvars.iv.next206, %wide.trip.count231 - br i1 %exitcond209.not, label %._crit_edge159, label %35, !llvm.loop !7 + br i1 %exitcond209.not, label %._crit_edge159, label %36, !llvm.loop !7 -._crit_edge159: ; preds = %35 +._crit_edge159: ; preds = %36 br i1 %brmerge, label %.loopexit149, label %.lr.ph161 .lr.ph161: ; preds = %._crit_edge159 - %40 = mul i64 %8, %indvars.iv203 - %41 = getelementptr float, ptr %3, i64 %40 - %42 = mul i64 %8, %25 - %43 = getelementptr float, ptr %3, i64 %42 - br label %44 - -44: ; preds = %.lr.ph161, %44 - %indvars.iv210 = phi i64 [ 0, %.lr.ph161 ], [ %indvars.iv.next211, %44 ] - %45 = getelementptr float, ptr %41, i64 %indvars.iv210 - %46 = getelementptr float, ptr %43, i64 %indvars.iv210 - %47 = load float, ptr %45, align 4 + %41 = mul i64 %8, %indvars.iv203 + %42 = getelementptr float, ptr %3, i64 %41 + %43 = mul i64 %8, %25 + %44 = getelementptr float, ptr %3, i64 %43 + br label %45 + +45: ; preds = %.lr.ph161, %45 + %indvars.iv210 = phi i64 [ 0, %.lr.ph161 ], [ %indvars.iv.next211, %45 ] + %46 = getelementptr float, ptr %42, i64 %indvars.iv210 + %47 = getelementptr float, ptr %44, i64 %indvars.iv210 %48 = load float, ptr %46, align 4 - store float %48, ptr %45, align 4 - store float %47, ptr %46, align 4 + %49 = load float, ptr %47, align 4 + store float %49, ptr %46, align 4 + store float %48, ptr %47, align 4 %indvars.iv.next211 = add nuw nsw i64 %indvars.iv210, 1 %exitcond214.not = icmp eq i64 %indvars.iv.next211, %wide.trip.count213 - br i1 %exitcond214.not, label %.loopexit149, label %44, !llvm.loop !8 - -.loopexit149: ; preds = %44, %._crit_edge159 - %49 = sub nsw i32 0, %.0125172 - br label %50 - -50: ; preds = %.loopexit149, %32 - %.1 = phi i32 [ %49, %.loopexit149 ], [ %.0125172, %32 ] - %51 = mul i64 %7, %indvars.iv203 - %52 = getelementptr float, ptr %0, i64 %51 - %53 = getelementptr float, ptr %52, i64 %indvars.iv203 - %54 = load float, ptr %53, align 4 - %55 = fdiv float -1.000000e+00, %54 + br i1 %exitcond214.not, label %.loopexit149, label %45, !llvm.loop !8 + +.loopexit149: ; preds = %45, %._crit_edge159 + %50 = sub nsw i32 0, %.0125172 + br label %51 + +51: ; preds = %.loopexit149, %32 + %.1 = phi i32 [ %50, %.loopexit149 ], [ %.0125172, %32 ] + %52 = mul i64 %7, %indvars.iv203 + %53 = getelementptr float, ptr %0, i64 %52 + %54 = getelementptr float, ptr %53, i64 %indvars.iv203 + %55 = load float, ptr %54, align 4 + %56 = fdiv float -1.000000e+00, %55 br i1 %13, label %.lr.ph170, label %.loopexit147 -.lr.ph170: ; preds = %50 - %56 = mul i64 %8, %indvars.iv203 - %57 = getelementptr float, ptr %3, i64 %56 +.lr.ph170: ; preds = %51 + %57 = mul i64 %8, %indvars.iv203 + %58 = getelementptr float, ptr %3, i64 %57 br label %.lr.ph164 .lr.ph164: ; preds = %.lr.ph170, %.loopexit146 %indvars.iv225 = phi i64 [ %indvars.iv, %.lr.ph170 ], [ %indvars.iv.next226, %.loopexit146 ] - %58 = mul i64 %7, %indvars.iv225 - %59 = getelementptr float, ptr %0, i64 %58 - %60 = getelementptr float, ptr %59, i64 %indvars.iv203 - %61 = load float, ptr %60, align 4 - %62 = fmul float %55, %61 - br label %63 - -63: ; preds = %.lr.ph164, %63 - %indvars.iv215 = phi i64 [ %indvars.iv, %.lr.ph164 ], [ %indvars.iv.next216, %63 ] - %64 = getelementptr float, ptr %52, i64 %indvars.iv215 - %65 = load float, ptr %64, align 4 - %66 = getelementptr float, ptr %59, i64 %indvars.iv215 - %67 = load float, ptr %66, align 4 - %68 = tail call float @llvm.fmuladd.f32(float %62, float %65, float %67) - store float %68, ptr %66, align 4 + %59 = mul i64 %7, %indvars.iv225 + %60 = getelementptr float, ptr %0, i64 %59 + %61 = getelementptr float, ptr %60, i64 %indvars.iv203 + %62 = load float, ptr %61, align 4 + %63 = fmul float %56, %62 + br label %64 + +64: ; preds = %.lr.ph164, %64 + %indvars.iv215 = phi i64 [ %indvars.iv, %.lr.ph164 ], [ %indvars.iv.next216, %64 ] + %65 = getelementptr float, ptr %53, i64 %indvars.iv215 + %66 = load float, ptr %65, align 4 + %67 = getelementptr float, ptr %60, i64 %indvars.iv215 + %68 = load float, ptr %67, align 4 + %69 = tail call float @llvm.fmuladd.f32(float %63, float %66, float %68) + store float %69, ptr %67, align 4 %indvars.iv.next216 = add nuw nsw i64 %indvars.iv215, 1 %exitcond219.not = icmp eq i64 %indvars.iv.next216, %wide.trip.count231 - br i1 %exitcond219.not, label %._crit_edge165, label %63, !llvm.loop !9 + br i1 %exitcond219.not, label %._crit_edge165, label %64, !llvm.loop !9 -._crit_edge165: ; preds = %63 +._crit_edge165: ; preds = %64 br i1 %brmerge195, label %.loopexit146, label %.lr.ph167 .lr.ph167: ; preds = %._crit_edge165 - %69 = mul i64 %8, %indvars.iv225 - %70 = getelementptr float, ptr %3, i64 %69 - br label %71 - -71: ; preds = %.lr.ph167, %71 - %indvars.iv220 = phi i64 [ 0, %.lr.ph167 ], [ %indvars.iv.next221, %71 ] - %72 = getelementptr float, ptr %57, i64 %indvars.iv220 - %73 = load float, ptr %72, align 4 - %74 = getelementptr float, ptr %70, i64 %indvars.iv220 - %75 = load float, ptr %74, align 4 - %76 = tail call float @llvm.fmuladd.f32(float %62, float %73, float %75) - store float %76, ptr %74, align 4 + %70 = mul i64 %8, %indvars.iv225 + %71 = getelementptr float, ptr %3, i64 %70 + br label %72 + +72: ; preds = %.lr.ph167, %72 + %indvars.iv220 = phi i64 [ 0, %.lr.ph167 ], [ %indvars.iv.next221, %72 ] + %73 = getelementptr float, ptr %58, i64 %indvars.iv220 + %74 = load float, ptr %73, align 4 + %75 = getelementptr float, ptr %71, i64 %indvars.iv220 + %76 = load float, ptr %75, align 4 + %77 = tail call float @llvm.fmuladd.f32(float %63, float %74, float %76) + store float %77, ptr %75, align 4 %indvars.iv.next221 = add nuw nsw i64 %indvars.iv220, 1 %exitcond224.not = icmp eq i64 %indvars.iv.next221, %wide.trip.count223 - br i1 %exitcond224.not, label %.loopexit146, label %71, !llvm.loop !10 + br i1 %exitcond224.not, label %.loopexit146, label %72, !llvm.loop !10 -.loopexit146: ; preds = %71, %._crit_edge165 +.loopexit146: ; preds = %72, %._crit_edge165 %indvars.iv.next226 = add nuw nsw i64 %indvars.iv225, 1 %exitcond229.not = icmp eq i64 %indvars.iv.next226, %wide.trip.count231 br i1 %exitcond229.not, label %.loopexit147, label %.lr.ph164, !llvm.loop !11 @@ -239,74 +240,74 @@ define internal fastcc noundef range(i32 -1, 2) i32 @_ZN2cv3halL6LUImplIfEEiPT_m br i1 %.not, label %.loopexit144, label %.preheader.lr.ph .preheader.lr.ph: ; preds = %._crit_edge175 - %77 = icmp sgt i32 %5, 0 - %78 = add nuw nsw i64 %7, 1 - br i1 %77, label %.preheader.us.preheader, label %.loopexit144 + %78 = icmp sgt i32 %5, 0 + %79 = add nuw nsw i64 %7, 1 + br i1 %78, label %.preheader.us.preheader, label %.loopexit144 .preheader.us.preheader: ; preds = %.preheader.lr.ph %.1134187 = add nsw i32 %2, -1 - %79 = zext nneg i32 %2 to i64 - %80 = zext nneg i32 %.1134187 to i64 + %80 = zext nneg i32 %2 to i64 + %81 = zext nneg i32 %.1134187 to i64 %wide.trip.count236 = zext nneg i32 %5 to i64 %wide.trip.count246 = zext nneg i32 %5 to i64 br label %.preheader.us .preheader.us: ; preds = %.preheader.us.preheader, %..loopexit_crit_edge.us - %indvars.iv248 = phi i64 [ %80, %.preheader.us.preheader ], [ %indvars.iv.next249, %..loopexit_crit_edge.us ] - %indvars.iv238 = phi i64 [ %79, %.preheader.us.preheader ], [ %indvars.iv.next239, %..loopexit_crit_edge.us ] + %indvars.iv248 = phi i64 [ %81, %.preheader.us.preheader ], [ %indvars.iv.next249, %..loopexit_crit_edge.us ] + %indvars.iv238 = phi i64 [ %80, %.preheader.us.preheader ], [ %indvars.iv.next239, %..loopexit_crit_edge.us ] %indvars252 = trunc i64 %indvars.iv238 to i32 - %81 = mul i64 %8, %indvars.iv248 - %82 = getelementptr float, ptr %3, i64 %81 - %83 = icmp sgt i32 %2, %indvars252 - %84 = mul i64 %7, %indvars.iv248 - %85 = getelementptr float, ptr %0, i64 %84 - %86 = mul i64 %78, %indvars.iv248 - %87 = getelementptr inbounds float, ptr %0, i64 %86 - br i1 %83, label %.lr.ph182.us.us, label %.lr.ph186.split.us192 + %82 = mul i64 %8, %indvars.iv248 + %83 = getelementptr float, ptr %3, i64 %82 + %84 = icmp sgt i32 %2, %indvars252 + %85 = mul i64 %7, %indvars.iv248 + %86 = getelementptr float, ptr %0, i64 %85 + %87 = mul i64 %79, %indvars.iv248 + %88 = getelementptr inbounds float, ptr %0, i64 %87 + br i1 %84, label %.lr.ph182.us.us, label %.lr.ph186.split.us192 .lr.ph186.split.us192: ; preds = %.preheader.us, %.lr.ph186.split.us192 %indvars.iv233 = phi i64 [ %indvars.iv.next234, %.lr.ph186.split.us192 ], [ 0, %.preheader.us ] - %88 = getelementptr float, ptr %82, i64 %indvars.iv233 - %89 = load float, ptr %88, align 4 - %90 = load float, ptr %87, align 4 - %91 = fdiv float %89, %90 - store float %91, ptr %88, align 4 + %89 = getelementptr float, ptr %83, i64 %indvars.iv233 + %90 = load float, ptr %89, align 4 + %91 = load float, ptr %88, align 4 + %92 = fdiv float %90, %91 + store float %92, ptr %89, align 4 %indvars.iv.next234 = add nuw nsw i64 %indvars.iv233, 1 %exitcond237.not = icmp eq i64 %indvars.iv.next234, %wide.trip.count236 br i1 %exitcond237.not, label %..loopexit_crit_edge.us, label %.lr.ph186.split.us192, !llvm.loop !12 ..loopexit_crit_edge.us: ; preds = %.lr.ph186.split.us192, %._crit_edge183.us.us %indvars.iv.next249 = add nsw i64 %indvars.iv248, -1 - %92 = icmp sgt i64 %indvars.iv248, 0 + %93 = icmp sgt i64 %indvars.iv248, 0 %indvars.iv.next239 = add nsw i64 %indvars.iv238, -1 - br i1 %92, label %.preheader.us, label %.loopexit144, !llvm.loop !13 + br i1 %93, label %.preheader.us, label %.loopexit144, !llvm.loop !13 .lr.ph182.us.us: ; preds = %.preheader.us, %._crit_edge183.us.us %indvars.iv243 = phi i64 [ %indvars.iv.next244, %._crit_edge183.us.us ], [ 0, %.preheader.us ] - %93 = getelementptr float, ptr %82, i64 %indvars.iv243 - %94 = load float, ptr %93, align 4 + %94 = getelementptr float, ptr %83, i64 %indvars.iv243 + %95 = load float, ptr %94, align 4 %invariant.gep177.us.us = getelementptr float, ptr %3, i64 %indvars.iv243 - br label %95 - -95: ; preds = %95, %.lr.ph182.us.us - %indvars.iv240 = phi i64 [ %indvars.iv.next241, %95 ], [ %indvars.iv238, %.lr.ph182.us.us ] - %.0180.us.us = phi float [ %101, %95 ], [ %94, %.lr.ph182.us.us ] - %96 = getelementptr float, ptr %85, i64 %indvars.iv240 - %97 = load float, ptr %96, align 4 - %98 = mul i64 %8, %indvars.iv240 - %gep178.us.us = getelementptr float, ptr %invariant.gep177.us.us, i64 %98 - %99 = load float, ptr %gep178.us.us, align 4 - %100 = fneg float %97 - %101 = tail call float @llvm.fmuladd.f32(float %100, float %99, float %.0180.us.us) + br label %96 + +96: ; preds = %96, %.lr.ph182.us.us + %indvars.iv240 = phi i64 [ %indvars.iv.next241, %96 ], [ %indvars.iv238, %.lr.ph182.us.us ] + %.0180.us.us = phi float [ %102, %96 ], [ %95, %.lr.ph182.us.us ] + %97 = getelementptr float, ptr %86, i64 %indvars.iv240 + %98 = load float, ptr %97, align 4 + %99 = mul i64 %8, %indvars.iv240 + %gep178.us.us = getelementptr float, ptr %invariant.gep177.us.us, i64 %99 + %100 = load float, ptr %gep178.us.us, align 4 + %101 = fneg float %98 + %102 = tail call float @llvm.fmuladd.f32(float %101, float %100, float %.0180.us.us) %indvars.iv.next241 = add nuw nsw i64 %indvars.iv240, 1 - %102 = trunc nuw i64 %indvars.iv.next241 to i32 - %103 = icmp sgt i32 %2, %102 - br i1 %103, label %95, label %._crit_edge183.us.us, !llvm.loop !14 - -._crit_edge183.us.us: ; preds = %95 - %104 = load float, ptr %87, align 4 - %105 = fdiv float %101, %104 - store float %105, ptr %93, align 4 + %103 = trunc nuw i64 %indvars.iv.next241 to i32 + %104 = icmp sgt i32 %2, %103 + br i1 %104, label %96, label %._crit_edge183.us.us, !llvm.loop !14 + +._crit_edge183.us.us: ; preds = %96 + %105 = load float, ptr %88, align 4 + %106 = fdiv float %102, %105 + store float %106, ptr %94, align 4 %indvars.iv.next244 = add nuw nsw i64 %indvars.iv243, 1 %exitcond247.not = icmp eq i64 %indvars.iv.next244, %wide.trip.count246 br i1 %exitcond247.not, label %..loopexit_crit_edge.us, label %.lr.ph182.us.us, !llvm.loop !12 @@ -381,7 +382,7 @@ define internal fastcc noundef range(i32 -1, 2) i32 @_ZN2cv3halL6LUImplIdEEiPT_m %wide.trip.count223 = zext nneg i32 %5 to i64 br label %12 -.loopexit147: ; preds = %.loopexit146, %50 +.loopexit147: ; preds = %.loopexit146, %51 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond232.not = icmp eq i64 %indvars.iv.next204, %wide.trip.count231 br i1 %exitcond232.not, label %._crit_edge175, label %12, !llvm.loop !15 @@ -406,7 +407,7 @@ define internal fastcc noundef range(i32 -1, 2) i32 @_ZN2cv3halL6LUImplIdEEiPT_m %gep = getelementptr double, ptr %invariant.gep, i64 %16 %17 = load double, ptr %gep, align 8 %18 = tail call noundef double @llvm.fabs.f64(double %17) - %19 = zext nneg i32 %.0126154 to i64 + %19 = sext i32 %.0126154 to i64 %20 = mul i64 %7, %19 %gep156 = getelementptr double, ptr %invariant.gep, i64 %20 %21 = load double, ptr %gep156, align 8 @@ -420,7 +421,7 @@ define internal fastcc noundef range(i32 -1, 2) i32 @_ZN2cv3halL6LUImplIdEEiPT_m ._crit_edge: ; preds = %15, %12 %.0126.lcssa = phi i32 [ %14, %12 ], [ %.1127, %15 ] - %25 = zext i32 %.0126.lcssa to i64 + %25 = sext i32 %.0126.lcssa to i64 %26 = mul i64 %7, %25 %27 = getelementptr double, ptr %0, i64 %26 %28 = getelementptr double, ptr %27, i64 %indvars.iv203 @@ -430,108 +431,109 @@ define internal fastcc noundef range(i32 -1, 2) i32 @_ZN2cv3halL6LUImplIdEEiPT_m br i1 %31, label %.loopexit144, label %32 32: ; preds = %._crit_edge - %.not140 = icmp eq i64 %indvars.iv203, %25 - br i1 %.not140, label %50, label %.lr.ph158 + %33 = zext i32 %.0126.lcssa to i64 + %.not140 = icmp eq i64 %indvars.iv203, %33 + br i1 %.not140, label %51, label %.lr.ph158 .lr.ph158: ; preds = %32 - %33 = mul i64 %7, %indvars.iv203 - %34 = getelementptr double, ptr %0, i64 %33 - br label %35 - -35: ; preds = %.lr.ph158, %35 - %indvars.iv205 = phi i64 [ %indvars.iv203, %.lr.ph158 ], [ %indvars.iv.next206, %35 ] - %36 = getelementptr double, ptr %34, i64 %indvars.iv205 - %37 = getelementptr double, ptr %27, i64 %indvars.iv205 - %38 = load double, ptr %36, align 8 + %34 = mul i64 %7, %indvars.iv203 + %35 = getelementptr double, ptr %0, i64 %34 + br label %36 + +36: ; preds = %.lr.ph158, %36 + %indvars.iv205 = phi i64 [ %indvars.iv203, %.lr.ph158 ], [ %indvars.iv.next206, %36 ] + %37 = getelementptr double, ptr %35, i64 %indvars.iv205 + %38 = getelementptr double, ptr %27, i64 %indvars.iv205 %39 = load double, ptr %37, align 8 - store double %39, ptr %36, align 8 - store double %38, ptr %37, align 8 + %40 = load double, ptr %38, align 8 + store double %40, ptr %37, align 8 + store double %39, ptr %38, align 8 %indvars.iv.next206 = add nuw nsw i64 %indvars.iv205, 1 %exitcond209.not = icmp eq i64 %indvars.iv.next206, %wide.trip.count231 - br i1 %exitcond209.not, label %._crit_edge159, label %35, !llvm.loop !17 + br i1 %exitcond209.not, label %._crit_edge159, label %36, !llvm.loop !17 -._crit_edge159: ; preds = %35 +._crit_edge159: ; preds = %36 br i1 %brmerge, label %.loopexit149, label %.lr.ph161 .lr.ph161: ; preds = %._crit_edge159 - %40 = mul i64 %8, %indvars.iv203 - %41 = getelementptr double, ptr %3, i64 %40 - %42 = mul i64 %8, %25 - %43 = getelementptr double, ptr %3, i64 %42 - br label %44 - -44: ; preds = %.lr.ph161, %44 - %indvars.iv210 = phi i64 [ 0, %.lr.ph161 ], [ %indvars.iv.next211, %44 ] - %45 = getelementptr double, ptr %41, i64 %indvars.iv210 - %46 = getelementptr double, ptr %43, i64 %indvars.iv210 - %47 = load double, ptr %45, align 8 + %41 = mul i64 %8, %indvars.iv203 + %42 = getelementptr double, ptr %3, i64 %41 + %43 = mul i64 %8, %25 + %44 = getelementptr double, ptr %3, i64 %43 + br label %45 + +45: ; preds = %.lr.ph161, %45 + %indvars.iv210 = phi i64 [ 0, %.lr.ph161 ], [ %indvars.iv.next211, %45 ] + %46 = getelementptr double, ptr %42, i64 %indvars.iv210 + %47 = getelementptr double, ptr %44, i64 %indvars.iv210 %48 = load double, ptr %46, align 8 - store double %48, ptr %45, align 8 - store double %47, ptr %46, align 8 + %49 = load double, ptr %47, align 8 + store double %49, ptr %46, align 8 + store double %48, ptr %47, align 8 %indvars.iv.next211 = add nuw nsw i64 %indvars.iv210, 1 %exitcond214.not = icmp eq i64 %indvars.iv.next211, %wide.trip.count213 - br i1 %exitcond214.not, label %.loopexit149, label %44, !llvm.loop !18 - -.loopexit149: ; preds = %44, %._crit_edge159 - %49 = sub nsw i32 0, %.0125172 - br label %50 - -50: ; preds = %.loopexit149, %32 - %.1 = phi i32 [ %49, %.loopexit149 ], [ %.0125172, %32 ] - %51 = mul i64 %7, %indvars.iv203 - %52 = getelementptr double, ptr %0, i64 %51 - %53 = getelementptr double, ptr %52, i64 %indvars.iv203 - %54 = load double, ptr %53, align 8 - %55 = fdiv double -1.000000e+00, %54 + br i1 %exitcond214.not, label %.loopexit149, label %45, !llvm.loop !18 + +.loopexit149: ; preds = %45, %._crit_edge159 + %50 = sub nsw i32 0, %.0125172 + br label %51 + +51: ; preds = %.loopexit149, %32 + %.1 = phi i32 [ %50, %.loopexit149 ], [ %.0125172, %32 ] + %52 = mul i64 %7, %indvars.iv203 + %53 = getelementptr double, ptr %0, i64 %52 + %54 = getelementptr double, ptr %53, i64 %indvars.iv203 + %55 = load double, ptr %54, align 8 + %56 = fdiv double -1.000000e+00, %55 br i1 %13, label %.lr.ph170, label %.loopexit147 -.lr.ph170: ; preds = %50 - %56 = mul i64 %8, %indvars.iv203 - %57 = getelementptr double, ptr %3, i64 %56 +.lr.ph170: ; preds = %51 + %57 = mul i64 %8, %indvars.iv203 + %58 = getelementptr double, ptr %3, i64 %57 br label %.lr.ph164 .lr.ph164: ; preds = %.lr.ph170, %.loopexit146 %indvars.iv225 = phi i64 [ %indvars.iv, %.lr.ph170 ], [ %indvars.iv.next226, %.loopexit146 ] - %58 = mul i64 %7, %indvars.iv225 - %59 = getelementptr double, ptr %0, i64 %58 - %60 = getelementptr double, ptr %59, i64 %indvars.iv203 - %61 = load double, ptr %60, align 8 - %62 = fmul double %55, %61 - br label %63 - -63: ; preds = %.lr.ph164, %63 - %indvars.iv215 = phi i64 [ %indvars.iv, %.lr.ph164 ], [ %indvars.iv.next216, %63 ] - %64 = getelementptr double, ptr %52, i64 %indvars.iv215 - %65 = load double, ptr %64, align 8 - %66 = getelementptr double, ptr %59, i64 %indvars.iv215 - %67 = load double, ptr %66, align 8 - %68 = tail call double @llvm.fmuladd.f64(double %62, double %65, double %67) - store double %68, ptr %66, align 8 + %59 = mul i64 %7, %indvars.iv225 + %60 = getelementptr double, ptr %0, i64 %59 + %61 = getelementptr double, ptr %60, i64 %indvars.iv203 + %62 = load double, ptr %61, align 8 + %63 = fmul double %56, %62 + br label %64 + +64: ; preds = %.lr.ph164, %64 + %indvars.iv215 = phi i64 [ %indvars.iv, %.lr.ph164 ], [ %indvars.iv.next216, %64 ] + %65 = getelementptr double, ptr %53, i64 %indvars.iv215 + %66 = load double, ptr %65, align 8 + %67 = getelementptr double, ptr %60, i64 %indvars.iv215 + %68 = load double, ptr %67, align 8 + %69 = tail call double @llvm.fmuladd.f64(double %63, double %66, double %68) + store double %69, ptr %67, align 8 %indvars.iv.next216 = add nuw nsw i64 %indvars.iv215, 1 %exitcond219.not = icmp eq i64 %indvars.iv.next216, %wide.trip.count231 - br i1 %exitcond219.not, label %._crit_edge165, label %63, !llvm.loop !19 + br i1 %exitcond219.not, label %._crit_edge165, label %64, !llvm.loop !19 -._crit_edge165: ; preds = %63 +._crit_edge165: ; preds = %64 br i1 %brmerge195, label %.loopexit146, label %.lr.ph167 .lr.ph167: ; preds = %._crit_edge165 - %69 = mul i64 %8, %indvars.iv225 - %70 = getelementptr double, ptr %3, i64 %69 - br label %71 - -71: ; preds = %.lr.ph167, %71 - %indvars.iv220 = phi i64 [ 0, %.lr.ph167 ], [ %indvars.iv.next221, %71 ] - %72 = getelementptr double, ptr %57, i64 %indvars.iv220 - %73 = load double, ptr %72, align 8 - %74 = getelementptr double, ptr %70, i64 %indvars.iv220 - %75 = load double, ptr %74, align 8 - %76 = tail call double @llvm.fmuladd.f64(double %62, double %73, double %75) - store double %76, ptr %74, align 8 + %70 = mul i64 %8, %indvars.iv225 + %71 = getelementptr double, ptr %3, i64 %70 + br label %72 + +72: ; preds = %.lr.ph167, %72 + %indvars.iv220 = phi i64 [ 0, %.lr.ph167 ], [ %indvars.iv.next221, %72 ] + %73 = getelementptr double, ptr %58, i64 %indvars.iv220 + %74 = load double, ptr %73, align 8 + %75 = getelementptr double, ptr %71, i64 %indvars.iv220 + %76 = load double, ptr %75, align 8 + %77 = tail call double @llvm.fmuladd.f64(double %63, double %74, double %76) + store double %77, ptr %75, align 8 %indvars.iv.next221 = add nuw nsw i64 %indvars.iv220, 1 %exitcond224.not = icmp eq i64 %indvars.iv.next221, %wide.trip.count223 - br i1 %exitcond224.not, label %.loopexit146, label %71, !llvm.loop !20 + br i1 %exitcond224.not, label %.loopexit146, label %72, !llvm.loop !20 -.loopexit146: ; preds = %71, %._crit_edge165 +.loopexit146: ; preds = %72, %._crit_edge165 %indvars.iv.next226 = add nuw nsw i64 %indvars.iv225, 1 %exitcond229.not = icmp eq i64 %indvars.iv.next226, %wide.trip.count231 br i1 %exitcond229.not, label %.loopexit147, label %.lr.ph164, !llvm.loop !21 @@ -541,74 +543,74 @@ define internal fastcc noundef range(i32 -1, 2) i32 @_ZN2cv3halL6LUImplIdEEiPT_m br i1 %.not, label %.loopexit144, label %.preheader.lr.ph .preheader.lr.ph: ; preds = %._crit_edge175 - %77 = icmp sgt i32 %5, 0 - %78 = add nuw nsw i64 %7, 1 - br i1 %77, label %.preheader.us.preheader, label %.loopexit144 + %78 = icmp sgt i32 %5, 0 + %79 = add nuw nsw i64 %7, 1 + br i1 %78, label %.preheader.us.preheader, label %.loopexit144 .preheader.us.preheader: ; preds = %.preheader.lr.ph %.1134187 = add nsw i32 %2, -1 - %79 = zext nneg i32 %2 to i64 - %80 = zext nneg i32 %.1134187 to i64 + %80 = zext nneg i32 %2 to i64 + %81 = zext nneg i32 %.1134187 to i64 %wide.trip.count236 = zext nneg i32 %5 to i64 %wide.trip.count246 = zext nneg i32 %5 to i64 br label %.preheader.us .preheader.us: ; preds = %.preheader.us.preheader, %..loopexit_crit_edge.us - %indvars.iv248 = phi i64 [ %80, %.preheader.us.preheader ], [ %indvars.iv.next249, %..loopexit_crit_edge.us ] - %indvars.iv238 = phi i64 [ %79, %.preheader.us.preheader ], [ %indvars.iv.next239, %..loopexit_crit_edge.us ] + %indvars.iv248 = phi i64 [ %81, %.preheader.us.preheader ], [ %indvars.iv.next249, %..loopexit_crit_edge.us ] + %indvars.iv238 = phi i64 [ %80, %.preheader.us.preheader ], [ %indvars.iv.next239, %..loopexit_crit_edge.us ] %indvars252 = trunc i64 %indvars.iv238 to i32 - %81 = mul i64 %8, %indvars.iv248 - %82 = getelementptr double, ptr %3, i64 %81 - %83 = icmp sgt i32 %2, %indvars252 - %84 = mul i64 %7, %indvars.iv248 - %85 = getelementptr double, ptr %0, i64 %84 - %86 = mul i64 %78, %indvars.iv248 - %87 = getelementptr inbounds double, ptr %0, i64 %86 - br i1 %83, label %.lr.ph182.us.us, label %.lr.ph186.split.us192 + %82 = mul i64 %8, %indvars.iv248 + %83 = getelementptr double, ptr %3, i64 %82 + %84 = icmp sgt i32 %2, %indvars252 + %85 = mul i64 %7, %indvars.iv248 + %86 = getelementptr double, ptr %0, i64 %85 + %87 = mul i64 %79, %indvars.iv248 + %88 = getelementptr inbounds double, ptr %0, i64 %87 + br i1 %84, label %.lr.ph182.us.us, label %.lr.ph186.split.us192 .lr.ph186.split.us192: ; preds = %.preheader.us, %.lr.ph186.split.us192 %indvars.iv233 = phi i64 [ %indvars.iv.next234, %.lr.ph186.split.us192 ], [ 0, %.preheader.us ] - %88 = getelementptr double, ptr %82, i64 %indvars.iv233 - %89 = load double, ptr %88, align 8 - %90 = load double, ptr %87, align 8 - %91 = fdiv double %89, %90 - store double %91, ptr %88, align 8 + %89 = getelementptr double, ptr %83, i64 %indvars.iv233 + %90 = load double, ptr %89, align 8 + %91 = load double, ptr %88, align 8 + %92 = fdiv double %90, %91 + store double %92, ptr %89, align 8 %indvars.iv.next234 = add nuw nsw i64 %indvars.iv233, 1 %exitcond237.not = icmp eq i64 %indvars.iv.next234, %wide.trip.count236 br i1 %exitcond237.not, label %..loopexit_crit_edge.us, label %.lr.ph186.split.us192, !llvm.loop !22 ..loopexit_crit_edge.us: ; preds = %.lr.ph186.split.us192, %._crit_edge183.us.us %indvars.iv.next249 = add nsw i64 %indvars.iv248, -1 - %92 = icmp sgt i64 %indvars.iv248, 0 + %93 = icmp sgt i64 %indvars.iv248, 0 %indvars.iv.next239 = add nsw i64 %indvars.iv238, -1 - br i1 %92, label %.preheader.us, label %.loopexit144, !llvm.loop !23 + br i1 %93, label %.preheader.us, label %.loopexit144, !llvm.loop !23 .lr.ph182.us.us: ; preds = %.preheader.us, %._crit_edge183.us.us %indvars.iv243 = phi i64 [ %indvars.iv.next244, %._crit_edge183.us.us ], [ 0, %.preheader.us ] - %93 = getelementptr double, ptr %82, i64 %indvars.iv243 - %94 = load double, ptr %93, align 8 + %94 = getelementptr double, ptr %83, i64 %indvars.iv243 + %95 = load double, ptr %94, align 8 %invariant.gep177.us.us = getelementptr double, ptr %3, i64 %indvars.iv243 - br label %95 - -95: ; preds = %95, %.lr.ph182.us.us - %indvars.iv240 = phi i64 [ %indvars.iv.next241, %95 ], [ %indvars.iv238, %.lr.ph182.us.us ] - %.0180.us.us = phi double [ %101, %95 ], [ %94, %.lr.ph182.us.us ] - %96 = getelementptr double, ptr %85, i64 %indvars.iv240 - %97 = load double, ptr %96, align 8 - %98 = mul i64 %8, %indvars.iv240 - %gep178.us.us = getelementptr double, ptr %invariant.gep177.us.us, i64 %98 - %99 = load double, ptr %gep178.us.us, align 8 - %100 = fneg double %97 - %101 = tail call double @llvm.fmuladd.f64(double %100, double %99, double %.0180.us.us) + br label %96 + +96: ; preds = %96, %.lr.ph182.us.us + %indvars.iv240 = phi i64 [ %indvars.iv.next241, %96 ], [ %indvars.iv238, %.lr.ph182.us.us ] + %.0180.us.us = phi double [ %102, %96 ], [ %95, %.lr.ph182.us.us ] + %97 = getelementptr double, ptr %86, i64 %indvars.iv240 + %98 = load double, ptr %97, align 8 + %99 = mul i64 %8, %indvars.iv240 + %gep178.us.us = getelementptr double, ptr %invariant.gep177.us.us, i64 %99 + %100 = load double, ptr %gep178.us.us, align 8 + %101 = fneg double %98 + %102 = tail call double @llvm.fmuladd.f64(double %101, double %100, double %.0180.us.us) %indvars.iv.next241 = add nuw nsw i64 %indvars.iv240, 1 - %102 = trunc nuw i64 %indvars.iv.next241 to i32 - %103 = icmp sgt i32 %2, %102 - br i1 %103, label %95, label %._crit_edge183.us.us, !llvm.loop !24 - -._crit_edge183.us.us: ; preds = %95 - %104 = load double, ptr %87, align 8 - %105 = fdiv double %101, %104 - store double %105, ptr %93, align 8 + %103 = trunc nuw i64 %indvars.iv.next241 to i32 + %104 = icmp sgt i32 %2, %103 + br i1 %104, label %96, label %._crit_edge183.us.us, !llvm.loop !24 + +._crit_edge183.us.us: ; preds = %96 + %105 = load double, ptr %88, align 8 + %106 = fdiv double %102, %105 + store double %106, ptr %94, align 8 %indvars.iv.next244 = add nuw nsw i64 %indvars.iv243, 1 %exitcond247.not = icmp eq i64 %indvars.iv.next244, %wide.trip.count246 br i1 %exitcond247.not, label %..loopexit_crit_edge.us, label %.lr.ph182.us.us, !llvm.loop !22 diff --git a/bench/openusd/optimized/entropymode.c.ll b/bench/openusd/optimized/entropymode.c.ll index 61a097837ea..18c99b5cb9b 100644 --- a/bench/openusd/optimized/entropymode.c.ll +++ b/bench/openusd/optimized/entropymode.c.ll @@ -198,16 +198,16 @@ define hidden i32 @av1_get_palette_color_index_context(ptr nocapture noundef rea br i1 %.not90, label %87, label %67 67: ; preds = %._crit_edge - %68 = getelementptr inbounds [18 x i32], ptr %9, i64 0, i64 %66 - %69 = load i32, ptr %68, align 4 - %70 = getelementptr inbounds i8, ptr %5, i64 %66 - %71 = load i8, ptr %70, align 1 - %72 = sext i32 %.082.lcssa to i64 - %73 = icmp slt i64 %indvars.iv122, %72 + %68 = sext i32 %.082.lcssa to i64 + %69 = getelementptr inbounds [18 x i32], ptr %9, i64 0, i64 %68 + %70 = load i32, ptr %69, align 4 + %71 = getelementptr inbounds i8, ptr %5, i64 %68 + %72 = load i8, ptr %71, align 1 + %73 = icmp slt i64 %indvars.iv122, %68 br i1 %73, label %.lr.ph101, label %._crit_edge102 .lr.ph101: ; preds = %67, %.lr.ph101 - %indvars.iv119 = phi i64 [ %indvars.iv.next120, %.lr.ph101 ], [ %72, %67 ] + %indvars.iv119 = phi i64 [ %indvars.iv.next120, %.lr.ph101 ], [ %68, %67 ] %indvars.iv.next120 = add nsw i64 %indvars.iv119, -1 %74 = getelementptr inbounds [18 x i32], ptr %9, i64 0, i64 %indvars.iv.next120 %75 = load i32, ptr %74, align 4 @@ -225,10 +225,10 @@ define hidden i32 @av1_get_palette_color_index_context(ptr nocapture noundef rea br i1 %83, label %.lr.ph101, label %._crit_edge102, !llvm.loop !8 ._crit_edge102: ; preds = %.lr.ph101, %67 - store i32 %69, ptr %58, align 4 + store i32 %70, ptr %58, align 4 %84 = getelementptr inbounds i8, ptr %5, i64 %indvars.iv122 - store i8 %71, ptr %84, align 1 - %85 = zext i8 %71 to i64 + store i8 %72, ptr %84, align 1 + %85 = zext i8 %72 to i64 %86 = getelementptr inbounds [8 x i32], ptr %10, i64 0, i64 %85 store i32 %60, ptr %86, align 4 br label %87 diff --git a/bench/pbrt-v4/optimized/rgb2spec_opt.cpp.ll b/bench/pbrt-v4/optimized/rgb2spec_opt.cpp.ll index 4f86db52de0..4c108fddafa 100644 --- a/bench/pbrt-v4/optimized/rgb2spec_opt.cpp.ll +++ b/bench/pbrt-v4/optimized/rgb2spec_opt.cpp.ll @@ -250,13 +250,14 @@ if.end17: ; preds = %for.end14 if.then19: ; preds = %if.end17 %arrayidx21 = getelementptr inbounds i32, ptr %P, i64 %indvars.iv70 %9 = load i32, ptr %arrayidx21, align 4 - %arrayidx23 = getelementptr inbounds i32, ptr %P, i64 %8 + %idxprom22 = sext i32 %imax.1 to i64 + %arrayidx23 = getelementptr inbounds i32, ptr %P, i64 %idxprom22 %10 = load i32, ptr %arrayidx23, align 4 store i32 %10, ptr %arrayidx21, align 4 store i32 %9, ptr %arrayidx23, align 4 %arrayidx29 = getelementptr inbounds ptr, ptr %A, i64 %indvars.iv70 %11 = load ptr, ptr %arrayidx29, align 8 - %arrayidx31 = getelementptr inbounds ptr, ptr %A, i64 %8 + %arrayidx31 = getelementptr inbounds ptr, ptr %A, i64 %idxprom22 %12 = load ptr, ptr %arrayidx31, align 8 store ptr %12, ptr %arrayidx29, align 8 store ptr %11, ptr %arrayidx31, align 8 @@ -1169,13 +1170,14 @@ if.end17.i: ; preds = %for.end14.i if.then19.i: ; preds = %if.end17.i %arrayidx21.i = getelementptr inbounds i32, ptr %P, i64 %indvars.iv70.i %13 = load i32, ptr %arrayidx21.i, align 4 - %arrayidx23.i = getelementptr inbounds i32, ptr %P, i64 %12 + %idxprom22.i = sext i32 %imax.1.i to i64 + %arrayidx23.i = getelementptr inbounds i32, ptr %P, i64 %idxprom22.i %14 = load i32, ptr %arrayidx23.i, align 4 store i32 %14, ptr %arrayidx21.i, align 4 store i32 %13, ptr %arrayidx23.i, align 4 %arrayidx29.i29 = getelementptr inbounds ptr, ptr %J, i64 %indvars.iv70.i %15 = load ptr, ptr %arrayidx29.i29, align 8 - %arrayidx31.i30 = getelementptr inbounds ptr, ptr %J, i64 %12 + %arrayidx31.i30 = getelementptr inbounds ptr, ptr %J, i64 %idxprom22.i %16 = load ptr, ptr %arrayidx31.i30, align 8 store ptr %16, ptr %arrayidx29.i29, align 8 store ptr %15, ptr %arrayidx31.i30, align 8 diff --git a/bench/postgres/optimized/prepare.ll b/bench/postgres/optimized/prepare.ll index cdfa8032b6c..43dac547827 100644 --- a/bench/postgres/optimized/prepare.ll +++ b/bench/postgres/optimized/prepare.ll @@ -289,7 +289,7 @@ declare zeroext i1 @ecpg_init(ptr noundef, ptr noundef, i32 noundef) local_unnam define internal fastcc noundef zeroext i1 @prepare_common(i32 noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3) unnamed_addr #0 { %5 = tail call ptr @ecpg_alloc(i64 noundef 32, i32 noundef %0) #11 %.not = icmp eq ptr %5, null - br i1 %.not, label %103, label %6 + br i1 %.not, label %102, label %6 6: ; preds = %4 %7 = tail call ptr @ecpg_alloc(i64 noundef 112, i32 noundef %0) #11 @@ -298,7 +298,7 @@ define internal fastcc noundef zeroext i1 @prepare_common(i32 noundef %0, ptr no 8: ; preds = %6 tail call void @ecpg_free(ptr noundef nonnull %5) #11 - br label %103 + br label %102 9: ; preds = %6 store i32 %0, ptr %7, align 8 @@ -310,186 +310,184 @@ define internal fastcc noundef zeroext i1 @prepare_common(i32 noundef %0, ptr no %13 = getelementptr inbounds i8, ptr %7, i64 48 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %13, i8 0, i64 16, i1 false) %14 = load i8, ptr %11, align 1 - %.not75.i = icmp eq i8 %14, 0 - br i1 %.not75.i, label %replace_variables.exit, label %.lr.ph80.i - -.lr.ph80.i: ; preds = %9, %73 - %15 = phi ptr [ %74, %73 ], [ %11, %9 ] - %16 = phi i8 [ %78, %73 ], [ %14, %9 ] - %17 = phi i64 [ %76, %73 ], [ 0, %9 ] - %.05078.i = phi i8 [ %.1.i, %73 ], [ 0, %9 ] - %.05277.i = phi i32 [ %.153.i, %73 ], [ 1, %9 ] - %.05476.i = phi i32 [ %75, %73 ], [ 0, %9 ] + %.not74.i = icmp eq i8 %14, 0 + br i1 %.not74.i, label %replace_variables.exit, label %.lr.ph79.i + +.lr.ph79.i: ; preds = %9, %72 + %15 = phi ptr [ %73, %72 ], [ %11, %9 ] + %16 = phi i8 [ %77, %72 ], [ %14, %9 ] + %17 = phi i64 [ %75, %72 ], [ 0, %9 ] + %.05077.i = phi i1 [ %.1.i, %72 ], [ false, %9 ] + %.05276.i = phi i32 [ %.153.i, %72 ], [ 1, %9 ] + %.05475.i = phi i32 [ %74, %72 ], [ 0, %9 ] %18 = icmp eq i8 %16, 39 - %19 = zext i1 %18 to i8 - %.1.i = xor i8 %.05078.i, %19 - %.not66.i = icmp eq i8 %.05078.i, %19 - br i1 %.not66.i, label %20, label %73 - -20: ; preds = %.lr.ph80.i - switch i8 %16, label %73 [ - i8 58, label %21 - i8 63, label %29 + %.1.i = xor i1 %18, %.05077.i + br i1 %.1.i, label %72, label %19 + +19: ; preds = %.lr.ph79.i + switch i8 %16, label %72 [ + i8 58, label %20 + i8 63, label %28 ] -21: ; preds = %20 - %22 = add i32 %.05476.i, 1 - %23 = sext i32 %22 to i64 - %24 = getelementptr i8, ptr %15, i64 %23 - %25 = load i8, ptr %24, align 1 - %26 = icmp eq i8 %25, 58 - br i1 %26, label %27, label %29 - -27: ; preds = %21 - %28 = add i32 %.05476.i, 2 - br label %73 - -29: ; preds = %21, %20 - %30 = tail call ptr @ecpg_alloc(i64 noundef 106, i32 noundef %0) #11 - %.not62.i = icmp eq ptr %30, null - br i1 %.not62.i, label %replace_variables.exit, label %31 - -31: ; preds = %29 - %32 = add i32 %.05277.i, 1 - %33 = tail call i32 (ptr, i64, ptr, ...) @pg_snprintf(ptr noundef nonnull %30, i64 noundef 106, ptr noundef nonnull @.str.5, i32 noundef %.05277.i) #11 - %34 = load ptr, ptr %12, align 8 - %35 = add i32 %.05476.i, 1 - %36 = sext i32 %35 to i64 - %37 = getelementptr i8, ptr %34, i64 %36 - %38 = load i8, ptr %37, align 1 - %.not6370.i = icmp eq i8 %38, 0 - br i1 %.not6370.i, label %.critedge.i, label %.lr.ph.i - -.lr.ph.i: ; preds = %31 - %39 = tail call ptr @__ctype_b_loc() #12 - %40 = load ptr, ptr %39, align 8 - br label %41 - -41: ; preds = %isvarchar.exit.thread.i, %.lr.ph.i - %42 = phi i8 [ %38, %.lr.ph.i ], [ %53, %isvarchar.exit.thread.i ] - %.05171.i = phi i32 [ 1, %.lr.ph.i ], [ %49, %isvarchar.exit.thread.i ] - %43 = zext i8 %42 to i64 - %44 = getelementptr i16, ptr %40, i64 %43 - %45 = load i16, ptr %44, align 2 - %46 = and i16 %45, 8 - %.not.i.i = icmp eq i16 %46, 0 - br i1 %.not.i.i, label %47, label %isvarchar.exit.thread.i - -47: ; preds = %41 - switch i8 %42, label %isvarchar.exit.i [ +20: ; preds = %19 + %21 = add i32 %.05475.i, 1 + %22 = sext i32 %21 to i64 + %23 = getelementptr i8, ptr %15, i64 %22 + %24 = load i8, ptr %23, align 1 + %25 = icmp eq i8 %24, 58 + br i1 %25, label %26, label %28 + +26: ; preds = %20 + %27 = add i32 %.05475.i, 2 + br label %72 + +28: ; preds = %20, %19 + %29 = tail call ptr @ecpg_alloc(i64 noundef 106, i32 noundef %0) #11 + %.not62.i = icmp eq ptr %29, null + br i1 %.not62.i, label %replace_variables.exit, label %30 + +30: ; preds = %28 + %31 = add i32 %.05276.i, 1 + %32 = tail call i32 (ptr, i64, ptr, ...) @pg_snprintf(ptr noundef nonnull %29, i64 noundef 106, ptr noundef nonnull @.str.5, i32 noundef %.05276.i) #11 + %33 = load ptr, ptr %12, align 8 + %34 = add i32 %.05475.i, 1 + %35 = sext i32 %34 to i64 + %36 = getelementptr i8, ptr %33, i64 %35 + %37 = load i8, ptr %36, align 1 + %.not6369.i = icmp eq i8 %37, 0 + br i1 %.not6369.i, label %.critedge.i, label %.lr.ph.i + +.lr.ph.i: ; preds = %30 + %38 = tail call ptr @__ctype_b_loc() #12 + %39 = load ptr, ptr %38, align 8 + br label %40 + +40: ; preds = %isvarchar.exit.thread.i, %.lr.ph.i + %41 = phi i8 [ %37, %.lr.ph.i ], [ %52, %isvarchar.exit.thread.i ] + %.05170.i = phi i32 [ 1, %.lr.ph.i ], [ %48, %isvarchar.exit.thread.i ] + %42 = zext i8 %41 to i64 + %43 = getelementptr i16, ptr %39, i64 %42 + %44 = load i16, ptr %43, align 2 + %45 = and i16 %44, 8 + %.not.i.i = icmp eq i16 %45, 0 + br i1 %.not.i.i, label %46, label %isvarchar.exit.thread.i + +46: ; preds = %40 + switch i8 %41, label %isvarchar.exit.i [ i8 95, label %isvarchar.exit.thread.i i8 62, label %isvarchar.exit.thread.i i8 46, label %isvarchar.exit.thread.i i8 45, label %isvarchar.exit.thread.i ] -isvarchar.exit.i: ; preds = %47 - %48 = icmp slt i8 %42, 0 - br i1 %48, label %isvarchar.exit.thread.i, label %.critedge.loopexit.i +isvarchar.exit.i: ; preds = %46 + %47 = icmp slt i8 %41, 0 + br i1 %47, label %isvarchar.exit.thread.i, label %.critedge.loopexit.i -isvarchar.exit.thread.i: ; preds = %isvarchar.exit.i, %47, %47, %47, %47, %41 - %49 = add i32 %.05171.i, 1 - %50 = add i32 %49, %.05476.i - %51 = sext i32 %50 to i64 - %52 = getelementptr i8, ptr %34, i64 %51 - %53 = load i8, ptr %52, align 1 - %.not63.i = icmp eq i8 %53, 0 - br i1 %.not63.i, label %.critedge.loopexit.i, label %41, !llvm.loop !6 +isvarchar.exit.thread.i: ; preds = %isvarchar.exit.i, %46, %46, %46, %46, %40 + %48 = add i32 %.05170.i, 1 + %49 = add i32 %48, %.05475.i + %50 = sext i32 %49 to i64 + %51 = getelementptr i8, ptr %33, i64 %50 + %52 = load i8, ptr %51, align 1 + %.not63.i = icmp eq i8 %52, 0 + br i1 %.not63.i, label %.critedge.loopexit.i, label %40, !llvm.loop !6 .critedge.loopexit.i: ; preds = %isvarchar.exit.thread.i, %isvarchar.exit.i - %.051.lcssa.ph.i = phi i32 [ %.05171.i, %isvarchar.exit.i ], [ %49, %isvarchar.exit.thread.i ] - %54 = sext i32 %.051.lcssa.ph.i to i64 + %.051.lcssa.ph.i = phi i32 [ %.05170.i, %isvarchar.exit.i ], [ %48, %isvarchar.exit.thread.i ] + %53 = sext i32 %.051.lcssa.ph.i to i64 br label %.critedge.i -.critedge.i: ; preds = %.critedge.loopexit.i, %31 - %.051.lcssa.i = phi i64 [ 1, %31 ], [ %54, %.critedge.loopexit.i ] - %55 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %34) #10 - %56 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %30) #10 - %reass.sub = sub i64 %55, %.051.lcssa.i - %57 = add i64 %reass.sub, 1 - %58 = add i64 %57, %56 - %59 = tail call ptr @ecpg_alloc(i64 noundef %58, i32 noundef %0) #11 - %.not64.i = icmp eq ptr %59, null - br i1 %.not64.i, label %60, label %61 - -60: ; preds = %.critedge.i - tail call void @ecpg_free(ptr noundef nonnull %30) #11 +.critedge.i: ; preds = %.critedge.loopexit.i, %30 + %.051.lcssa.i = phi i64 [ 1, %30 ], [ %53, %.critedge.loopexit.i ] + %54 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %33) #10 + %55 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %29) #10 + %reass.sub = sub i64 %54, %.051.lcssa.i + %56 = add i64 %reass.sub, 1 + %57 = add i64 %56, %55 + %58 = tail call ptr @ecpg_alloc(i64 noundef %57, i32 noundef %0) #11 + %.not64.i = icmp eq ptr %58, null + br i1 %.not64.i, label %59, label %60 + +59: ; preds = %.critedge.i + tail call void @ecpg_free(ptr noundef nonnull %29) #11 br label %replace_variables.exit -61: ; preds = %.critedge.i - %62 = load ptr, ptr %12, align 8 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %59, ptr align 1 %62, i64 %17, i1 false) - %63 = getelementptr i8, ptr %59, i64 %17 - %64 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %63, ptr noundef nonnull dereferenceable(1) %30) #11 - %65 = load ptr, ptr %12, align 8 - %66 = getelementptr i8, ptr %65, i64 %17 - %67 = getelementptr i8, ptr %66, i64 %.051.lcssa.i - %68 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %59, ptr noundef nonnull dereferenceable(1) %67) #11 - %69 = load ptr, ptr %12, align 8 - tail call void @ecpg_free(ptr noundef %69) #11 - tail call void @ecpg_free(ptr noundef nonnull %30) #11 - store ptr %59, ptr %12, align 8 - %70 = load i8, ptr %63, align 1 - %71 = icmp eq i8 %70, 0 - %72 = sext i1 %71 to i32 - %spec.select.i = add i32 %.05476.i, %72 - br label %73 - -73: ; preds = %61, %27, %20, %.lr.ph80.i - %74 = phi ptr [ %15, %.lr.ph80.i ], [ %15, %27 ], [ %15, %20 ], [ %59, %61 ] - %.155.i = phi i32 [ %.05476.i, %.lr.ph80.i ], [ %28, %27 ], [ %.05476.i, %20 ], [ %spec.select.i, %61 ] - %.153.i = phi i32 [ %.05277.i, %.lr.ph80.i ], [ %.05277.i, %27 ], [ %.05277.i, %20 ], [ %32, %61 ] - %75 = add i32 %.155.i, 1 - %76 = sext i32 %75 to i64 - %77 = getelementptr i8, ptr %74, i64 %76 - %78 = load i8, ptr %77, align 1 - %.not.i = icmp eq i8 %78, 0 - br i1 %.not.i, label %replace_variables.exit, label %.lr.ph80.i, !llvm.loop !7 - -replace_variables.exit: ; preds = %29, %73, %9, %60 - %79 = tail call ptr @ecpg_strdup(ptr noundef %2, i32 noundef %0) #11 - store ptr %79, ptr %5, align 8 - %80 = getelementptr inbounds i8, ptr %5, i64 16 - store ptr %7, ptr %80, align 8 - %81 = load ptr, ptr %10, align 8 - %82 = getelementptr inbounds i8, ptr %81, i64 8 - %83 = load ptr, ptr %82, align 8 - %84 = load ptr, ptr %12, align 8 - %85 = tail call ptr @PQprepare(ptr noundef %83, ptr noundef %2, ptr noundef %84, i32 noundef 0, ptr noundef null) #11 - %86 = load i32, ptr %7, align 8 - %87 = load ptr, ptr %10, align 8 - %88 = getelementptr inbounds i8, ptr %87, i64 8 - %89 = load ptr, ptr %88, align 8 - %90 = getelementptr inbounds i8, ptr %7, i64 32 - %91 = load i32, ptr %90, align 8 - %92 = tail call zeroext i1 @ecpg_check_PQresult(ptr noundef %85, i32 noundef %86, ptr noundef %89, i32 noundef %91) #11 - br i1 %92, label %96, label %93 - -93: ; preds = %replace_variables.exit - %94 = load ptr, ptr %12, align 8 +60: ; preds = %.critedge.i + %61 = load ptr, ptr %12, align 8 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %58, ptr align 1 %61, i64 %17, i1 false) + %62 = getelementptr i8, ptr %58, i64 %17 + %63 = tail call ptr @strcpy(ptr noundef nonnull dereferenceable(1) %62, ptr noundef nonnull dereferenceable(1) %29) #11 + %64 = load ptr, ptr %12, align 8 + %65 = getelementptr i8, ptr %64, i64 %17 + %66 = getelementptr i8, ptr %65, i64 %.051.lcssa.i + %67 = tail call ptr @strcat(ptr noundef nonnull dereferenceable(1) %58, ptr noundef nonnull dereferenceable(1) %66) #11 + %68 = load ptr, ptr %12, align 8 + tail call void @ecpg_free(ptr noundef %68) #11 + tail call void @ecpg_free(ptr noundef nonnull %29) #11 + store ptr %58, ptr %12, align 8 + %69 = load i8, ptr %62, align 1 + %70 = icmp eq i8 %69, 0 + %71 = sext i1 %70 to i32 + %spec.select.i = add i32 %.05475.i, %71 + br label %72 + +72: ; preds = %60, %26, %19, %.lr.ph79.i + %73 = phi ptr [ %15, %.lr.ph79.i ], [ %15, %26 ], [ %15, %19 ], [ %58, %60 ] + %.155.i = phi i32 [ %.05475.i, %.lr.ph79.i ], [ %27, %26 ], [ %.05475.i, %19 ], [ %spec.select.i, %60 ] + %.153.i = phi i32 [ %.05276.i, %.lr.ph79.i ], [ %.05276.i, %26 ], [ %.05276.i, %19 ], [ %31, %60 ] + %74 = add i32 %.155.i, 1 + %75 = sext i32 %74 to i64 + %76 = getelementptr i8, ptr %73, i64 %75 + %77 = load i8, ptr %76, align 1 + %.not.i = icmp eq i8 %77, 0 + br i1 %.not.i, label %replace_variables.exit, label %.lr.ph79.i, !llvm.loop !7 + +replace_variables.exit: ; preds = %28, %72, %9, %59 + %78 = tail call ptr @ecpg_strdup(ptr noundef %2, i32 noundef %0) #11 + store ptr %78, ptr %5, align 8 + %79 = getelementptr inbounds i8, ptr %5, i64 16 + store ptr %7, ptr %79, align 8 + %80 = load ptr, ptr %10, align 8 + %81 = getelementptr inbounds i8, ptr %80, i64 8 + %82 = load ptr, ptr %81, align 8 + %83 = load ptr, ptr %12, align 8 + %84 = tail call ptr @PQprepare(ptr noundef %82, ptr noundef %2, ptr noundef %83, i32 noundef 0, ptr noundef null) #11 + %85 = load i32, ptr %7, align 8 + %86 = load ptr, ptr %10, align 8 + %87 = getelementptr inbounds i8, ptr %86, i64 8 + %88 = load ptr, ptr %87, align 8 + %89 = getelementptr inbounds i8, ptr %7, i64 32 + %90 = load i32, ptr %89, align 8 + %91 = tail call zeroext i1 @ecpg_check_PQresult(ptr noundef %84, i32 noundef %85, ptr noundef %88, i32 noundef %90) #11 + br i1 %91, label %95, label %92 + +92: ; preds = %replace_variables.exit + %93 = load ptr, ptr %12, align 8 + tail call void @ecpg_free(ptr noundef %93) #11 + %94 = load ptr, ptr %5, align 8 tail call void @ecpg_free(ptr noundef %94) #11 - %95 = load ptr, ptr %5, align 8 - tail call void @ecpg_free(ptr noundef %95) #11 tail call void @ecpg_free(ptr noundef nonnull %5) #11 tail call void @ecpg_free(ptr noundef nonnull %7) #11 - br label %103 - -96: ; preds = %replace_variables.exit - %97 = load i32, ptr %7, align 8 - %98 = load ptr, ptr %12, align 8 - tail call void (ptr, ...) @ecpg_log(ptr noundef nonnull @.str.4, i32 noundef %97, ptr noundef %2, ptr noundef %98) #11 - tail call void @PQclear(ptr noundef %85) #11 - %99 = getelementptr inbounds i8, ptr %5, i64 8 - store i8 1, ptr %99, align 8 - %100 = getelementptr inbounds i8, ptr %1, i64 32 - %101 = load ptr, ptr %100, align 8 - %102 = getelementptr inbounds i8, ptr %5, i64 24 - store ptr %101, ptr %102, align 8 - store ptr %5, ptr %100, align 8 - br label %103 - -103: ; preds = %4, %96, %93, %8 - %.0 = phi i1 [ true, %96 ], [ false, %93 ], [ false, %8 ], [ false, %4 ] + br label %102 + +95: ; preds = %replace_variables.exit + %96 = load i32, ptr %7, align 8 + %97 = load ptr, ptr %12, align 8 + tail call void (ptr, ...) @ecpg_log(ptr noundef nonnull @.str.4, i32 noundef %96, ptr noundef %2, ptr noundef %97) #11 + tail call void @PQclear(ptr noundef %84) #11 + %98 = getelementptr inbounds i8, ptr %5, i64 8 + store i8 1, ptr %98, align 8 + %99 = getelementptr inbounds i8, ptr %1, i64 32 + %100 = load ptr, ptr %99, align 8 + %101 = getelementptr inbounds i8, ptr %5, i64 24 + store ptr %100, ptr %101, align 8 + store ptr %5, ptr %99, align 8 + br label %102 + +102: ; preds = %4, %95, %92, %8 + %.0 = phi i1 [ true, %95 ], [ false, %92 ], [ false, %8 ], [ false, %4 ] ret i1 %.0 } diff --git a/bench/regex-rs/optimized/1pxsmct4oxs5dlep.ll b/bench/regex-rs/optimized/1pxsmct4oxs5dlep.ll index 8c8a89e232b..fe98c303bd1 100644 --- a/bench/regex-rs/optimized/1pxsmct4oxs5dlep.ll +++ b/bench/regex-rs/optimized/1pxsmct4oxs5dlep.ll @@ -5643,7 +5643,7 @@ _ZN12regex_syntax7unicode14canonical_prop17hfd1549437477a757E.exit.thread: ; pre %.0201.i.i.i.i = phi i64 [ %.021.i.i.i.i, %23 ], [ 254, %"_ZN77_$LT$alloc..string..String$u20$as$u20$core..cmp..PartialEq$LT$$RF$str$GT$$GT$2ne17h5b15d29981e3414dE.exit81.thread.preheader" ] %13 = lshr i64 %.03.i.i.i.i, 1 %14 = add nuw nsw i64 %13, %.0192.i.i.i.i - %15 = icmp samesign ult i64 %14, 254 + %15 = icmp ult i64 %14, 254 tail call void @llvm.assume(i1 %15) %16 = getelementptr inbounds { { ptr, i64 }, { ptr, i64 } }, ptr @anon.ee024262027212e939cdd9996d089225.3345, i64 %14 %.val23.i.i.i.i = load ptr, ptr %16, align 8, !noalias !93, !nonnull !5, !align !102, !noundef !5 @@ -6027,7 +6027,7 @@ common.resume: ; preds = %446, %398, %355, %9 %.0201.i.i.i.i.i = phi i64 [ 254, %109 ], [ %.021.i.i.i.i.i, %125 ] %115 = lshr i64 %.03.i.i.i.i.i, 1 %116 = add nuw nsw i64 %115, %.0192.i.i.i.i.i - %117 = icmp samesign ult i64 %116, 254 + %117 = icmp ult i64 %116, 254 tail call void @llvm.assume(i1 %117) %118 = getelementptr inbounds { { ptr, i64 }, { ptr, i64 } }, ptr @anon.ee024262027212e939cdd9996d089225.3345, i64 %116 %.val23.i.i.i.i.i = load ptr, ptr %118, align 8, !noalias !155, !nonnull !5, !align !102, !noundef !5 @@ -6096,7 +6096,7 @@ common.resume: ; preds = %446, %398, %355, %9 %.0202.i.i.i.i.i = phi i64 [ %.021.i.i.i.i100.i, %155 ], [ 7, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h126adc2fec64e17fE.exit95.thread.i.preheader" ] %145 = lshr i64 %.04.i.i.i.i.i, 1 %146 = add nuw nsw i64 %145, %.0193.i.i.i.i.i - %147 = icmp samesign ult i64 %146, 7 + %147 = icmp ult i64 %146, 7 tail call void @llvm.assume(i1 %147) %148 = getelementptr inbounds { { ptr, i64 }, { ptr, i64 } }, ptr @anon.ee024262027212e939cdd9996d089225.4118, i64 %146 %.val23.i.i.i.i96.i = load ptr, ptr %148, align 8, !noalias !181, !nonnull !5, !align !102, !noundef !5 @@ -6408,7 +6408,7 @@ default.unreachable: ; preds = %253 %.02026.i.i.i.i.i = phi i64 [ 60, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h126adc2fec64e17fE.exit10.thread.i" ], [ %.021.i.i.i.i.i69, %275 ] %265 = lshr i64 %.028.i.i.i.i.i, 1 %266 = add nuw nsw i64 %265, %.01927.i.i.i.i.i - %267 = icmp samesign ult i64 %266, 60 + %267 = icmp ult i64 %266, 60 call void @llvm.assume(i1 %267) %268 = getelementptr inbounds { { ptr, i64 }, { ptr, i64 } }, ptr @anon.ee024262027212e939cdd9996d089225.4485, i64 %266 %.val23.i.i.i.i.i65 = load ptr, ptr %268, align 8, !alias.scope !288, !noalias !289, !nonnull !5, !align !102, !noundef !5 @@ -6535,7 +6535,7 @@ _ZN12regex_syntax7unicode13bool_property3imp17h4d562adbad544adaE.exit.i: ; preds %.02026.i.i.i.i = phi i64 [ 37, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h126adc2fec64e17fE.exit7.thread.i" ], [ %.021.i.i.i.i, %311 ] %301 = lshr i64 %.028.i.i.i.i, 1 %302 = add nuw nsw i64 %301, %.01927.i.i.i.i - %303 = icmp samesign ult i64 %302, 37 + %303 = icmp ult i64 %302, 37 call void @llvm.assume(i1 %303), !noalias !317 %304 = getelementptr inbounds { { ptr, i64 }, { ptr, i64 } }, ptr @anon.ee024262027212e939cdd9996d089225.4188, i64 %302 %.val23.i.i.i.i = load ptr, ptr %304, align 8, !alias.scope !347, !noalias !348, !nonnull !5, !align !102, !noundef !5 @@ -6579,7 +6579,7 @@ _ZN12regex_syntax7unicode13bool_property3imp17h4d562adbad544adaE.exit.i: ; preds %.02026.i.i.i.i.i77 = phi i64 [ 37, %318 ], [ %.021.i.i.i.i.i82, %330 ] %320 = lshr i64 %.028.i.i.i.i.i75, 1 %321 = add nuw nsw i64 %320, %.01927.i.i.i.i.i76 - %322 = icmp samesign ult i64 %321, 37 + %322 = icmp ult i64 %321, 37 call void @llvm.assume(i1 %322), !noalias !365 %323 = getelementptr inbounds { { ptr, i64 }, { ptr, i64 } }, ptr @anon.ee024262027212e939cdd9996d089225.4188, i64 %321 %.val23.i.i.i.i.i78 = load ptr, ptr %323, align 8, !alias.scope !371, !noalias !372, !nonnull !5, !align !102, !noundef !5 @@ -6712,7 +6712,7 @@ _ZN12regex_syntax7unicode6gencat17h7a12ab031675e367E.exit: ; preds = %297, %299, %.02026.i.i.i.i.i89 = phi i64 [ 163, %360 ], [ %.021.i.i.i.i.i94, %372 ] %362 = lshr i64 %.028.i.i.i.i.i87, 1 %363 = add nuw nsw i64 %362, %.01927.i.i.i.i.i88 - %364 = icmp samesign ult i64 %363, 163 + %364 = icmp ult i64 %363, 163 call void @llvm.assume(i1 %364) %365 = getelementptr inbounds { { ptr, i64 }, { ptr, i64 } }, ptr @anon.ee024262027212e939cdd9996d089225.4354, i64 %363 %.val23.i.i.i.i.i90 = load ptr, ptr %365, align 8, !alias.scope !413, !noalias !414, !nonnull !5, !align !102, !noundef !5 @@ -6878,7 +6878,7 @@ _ZN12regex_syntax3hir12ClassUnicode5empty17h26d5991a0702163dE.exit: ; preds = %3 %.02026.i.i.i.i.i115 = phi i64 [ 163, %408 ], [ %.021.i.i.i.i.i120, %421 ] %411 = lshr i64 %.028.i.i.i.i.i113, 1 %412 = add nuw nsw i64 %411, %.01927.i.i.i.i.i114 - %413 = icmp samesign ult i64 %412, 163 + %413 = icmp ult i64 %412, 163 call void @llvm.assume(i1 %413) %414 = getelementptr inbounds { { ptr, i64 }, { ptr, i64 } }, ptr @anon.ee024262027212e939cdd9996d089225.4425, i64 %412 %.val23.i.i.i.i.i116 = load ptr, ptr %414, align 8, !alias.scope !492, !noalias !493, !nonnull !5, !align !102, !noundef !5 @@ -7222,7 +7222,7 @@ define hidden noundef range(i8 0, 2) i8 @_ZN12regex_syntax7unicode17is_word_char br i1 %or.cond.i, label %_ZN12regex_syntax7unicode17is_word_character3imp17h708cd24619ee543bE.llvm.16611923841924356903.exit, label %"_ZN4core6result19Result$LT$T$C$E$GT$6map_or17h1be4e78b682238f2E.llvm.16611923841924356903.exit.thread4.i.preheader" ._crit_edge.i.i: ; preds = %17 - %10 = icmp samesign ult i64 %.022.i.i, 772 + %10 = icmp ult i64 %.022.i.i, 772 tail call void @llvm.assume(i1 %10) br label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$16binary_search_by17hb4b740f7f4bf3c6fE.llvm.16611923841924356903.exit.i" @@ -7231,8 +7231,8 @@ define hidden noundef range(i8 0, 2) i8 @_ZN12regex_syntax7unicode17is_word_char %.01927.i.i = phi i64 [ %.022.i.i, %17 ], [ 0, %"_ZN4core6result19Result$LT$T$C$E$GT$6map_or17h1be4e78b682238f2E.llvm.16611923841924356903.exit.thread4.i.preheader" ] %.02026.i.i = phi i64 [ %.021.i.i, %17 ], [ 771, %"_ZN4core6result19Result$LT$T$C$E$GT$6map_or17h1be4e78b682238f2E.llvm.16611923841924356903.exit.thread4.i.preheader" ] %11 = lshr i64 %.028.i.i, 1 - %12 = add nuw nsw i64 %11, %.01927.i.i - %13 = icmp samesign ult i64 %12, 771 + %12 = add i64 %11, %.01927.i.i + %13 = icmp ult i64 %12, 771 tail call void @llvm.assume(i1 %13) %14 = getelementptr inbounds { i32, i32 }, ptr @anon.ee024262027212e939cdd9996d089225.2960.llvm.16611923841924356903, i64 %12 %.val23.i.i = load i32, ptr %14, align 4, !range !4, !alias.scope !579, !noalias !582, !noundef !5 @@ -7249,8 +7249,8 @@ define hidden noundef range(i8 0, 2) i8 @_ZN12regex_syntax7unicode17is_word_char %18 = select i1 %.not.i.i.i, i1 %.not2.i.i.i, i1 false %19 = add nuw nsw i64 %12, 1 %.022.i.i = select i1 %18, i64 %19, i64 %.01927.i.i - %20 = sub nsw i64 %.021.i.i, %.022.i.i - %21 = icmp samesign ult i64 %.022.i.i, %.021.i.i + %20 = sub i64 %.021.i.i, %.022.i.i + %21 = icmp ult i64 %.022.i.i, %.021.i.i br i1 %21, label %"_ZN4core6result19Result$LT$T$C$E$GT$6map_or17h1be4e78b682238f2E.llvm.16611923841924356903.exit.thread4.i", label %._crit_edge.i.i "_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$16binary_search_by17hb4b740f7f4bf3c6fE.llvm.16611923841924356903.exit.i": ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6map_or17h1be4e78b682238f2E.llvm.16611923841924356903.exit.thread4.i", %._crit_edge.i.i @@ -7284,7 +7284,7 @@ define hidden noundef range(i8 0, 2) i8 @_ZN12regex_syntax7unicode17is_word_char br i1 %or.cond, label %"_ZN4core6result19Result$LT$T$C$E$GT$6map_or17h1be4e78b682238f2E.llvm.16611923841924356903.exit.thread", label %"_ZN4core6result19Result$LT$T$C$E$GT$6map_or17h1be4e78b682238f2E.llvm.16611923841924356903.exit.thread4.preheader" ._crit_edge.i: ; preds = %17 - %10 = icmp samesign ult i64 %.022.i, 772 + %10 = icmp ult i64 %.022.i, 772 tail call void @llvm.assume(i1 %10) br label %"_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$16binary_search_by17hb4b740f7f4bf3c6fE.llvm.16611923841924356903.exit" @@ -7293,8 +7293,8 @@ define hidden noundef range(i8 0, 2) i8 @_ZN12regex_syntax7unicode17is_word_char %.01927.i = phi i64 [ %.022.i, %17 ], [ 0, %"_ZN4core6result19Result$LT$T$C$E$GT$6map_or17h1be4e78b682238f2E.llvm.16611923841924356903.exit.thread4.preheader" ] %.02026.i = phi i64 [ %.021.i, %17 ], [ 771, %"_ZN4core6result19Result$LT$T$C$E$GT$6map_or17h1be4e78b682238f2E.llvm.16611923841924356903.exit.thread4.preheader" ] %11 = lshr i64 %.028.i, 1 - %12 = add nuw nsw i64 %11, %.01927.i - %13 = icmp samesign ult i64 %12, 771 + %12 = add i64 %11, %.01927.i + %13 = icmp ult i64 %12, 771 tail call void @llvm.assume(i1 %13) %14 = getelementptr inbounds { i32, i32 }, ptr @anon.ee024262027212e939cdd9996d089225.2960.llvm.16611923841924356903, i64 %12 %.val23.i = load i32, ptr %14, align 4, !range !4, !alias.scope !584, !noalias !587, !noundef !5 @@ -7311,8 +7311,8 @@ define hidden noundef range(i8 0, 2) i8 @_ZN12regex_syntax7unicode17is_word_char %18 = select i1 %.not.i.i, i1 %.not2.i.i, i1 false %19 = add nuw nsw i64 %12, 1 %.022.i = select i1 %18, i64 %19, i64 %.01927.i - %20 = sub nsw i64 %.021.i, %.022.i - %21 = icmp samesign ult i64 %.022.i, %.021.i + %20 = sub i64 %.021.i, %.022.i + %21 = icmp ult i64 %.022.i, %.021.i br i1 %21, label %"_ZN4core6result19Result$LT$T$C$E$GT$6map_or17h1be4e78b682238f2E.llvm.16611923841924356903.exit.thread4", label %._crit_edge.i "_ZN4core5slice29_$LT$impl$u20$$u5b$T$u5d$$GT$16binary_search_by17hb4b740f7f4bf3c6fE.llvm.16611923841924356903.exit": ; preds = %"_ZN4core6result19Result$LT$T$C$E$GT$6map_or17h1be4e78b682238f2E.llvm.16611923841924356903.exit.thread4", %._crit_edge.i @@ -7357,7 +7357,7 @@ define internal fastcc void @_ZN12regex_syntax7unicode16canonical_gencat17hda57f %.0202.i.i.i.i = phi i64 [ %.021.i.i.i.i, %17 ], [ 7, %"_ZN73_$LT$$u5b$A$u5d$$u20$as$u20$core..slice..cmp..SlicePartialEq$LT$B$GT$$GT$5equal17h126adc2fec64e17fE.exit27.thread.preheader" ] %7 = lshr i64 %.04.i.i.i.i, 1 %8 = add nuw nsw i64 %7, %.0193.i.i.i.i - %9 = icmp samesign ult i64 %8, 7 + %9 = icmp ult i64 %8, 7 tail call void @llvm.assume(i1 %9) %10 = getelementptr inbounds { { ptr, i64 }, { ptr, i64 } }, ptr @anon.ee024262027212e939cdd9996d089225.4118, i64 %8 %.val23.i.i.i.i = load ptr, ptr %10, align 8, !noalias !601, !nonnull !5, !align !102, !noundef !5 @@ -7464,7 +7464,7 @@ define internal fastcc void @_ZN12regex_syntax7unicode16canonical_script17hb0626 %.0202.i.i.i.i = phi i64 [ 7, %3 ], [ %.021.i.i.i.i, %15 ] %5 = lshr i64 %.04.i.i.i.i, 1 %6 = add nuw nsw i64 %5, %.0193.i.i.i.i - %7 = icmp samesign ult i64 %6, 7 + %7 = icmp ult i64 %6, 7 tail call void @llvm.assume(i1 %7) %8 = getelementptr inbounds { { ptr, i64 }, { ptr, i64 } }, ptr @anon.ee024262027212e939cdd9996d089225.4118, i64 %6 %.val23.i.i.i.i = load ptr, ptr %8, align 8, !noalias !641, !nonnull !5, !align !102, !noundef !5 @@ -7578,7 +7578,7 @@ define internal fastcc void @_ZN12regex_syntax7unicode3gcb17hb8ef32ba6d8eed21E(p %.02026.i.i.i.i = phi i64 [ 13, %3 ], [ %.021.i.i.i.i, %16 ] %6 = lshr i64 %.028.i.i.i.i, 1 %7 = add nuw nsw i64 %6, %.01927.i.i.i.i - %8 = icmp samesign ult i64 %7, 13 + %8 = icmp ult i64 %7, 13 tail call void @llvm.assume(i1 %8) %9 = getelementptr inbounds { { ptr, i64 }, { ptr, i64 } }, ptr @anon.ee024262027212e939cdd9996d089225.4498, i64 %7 %.val23.i.i.i.i = load ptr, ptr %9, align 8, !alias.scope !693, !noalias !694, !nonnull !5, !align !102, !noundef !5 @@ -7656,7 +7656,7 @@ define internal fastcc void @_ZN12regex_syntax7unicode2wb17hc0a5a8cc8ed468edE(pt %.02026.i.i.i.i = phi i64 [ 18, %3 ], [ %.021.i.i.i.i, %16 ] %6 = lshr i64 %.028.i.i.i.i, 1 %7 = add nuw nsw i64 %6, %.01927.i.i.i.i - %8 = icmp samesign ult i64 %7, 18 + %8 = icmp ult i64 %7, 18 tail call void @llvm.assume(i1 %8) %9 = getelementptr inbounds { { ptr, i64 }, { ptr, i64 } }, ptr @anon.ee024262027212e939cdd9996d089225.4513, i64 %7 %.val23.i.i.i.i = load ptr, ptr %9, align 8, !alias.scope !721, !noalias !722, !nonnull !5, !align !102, !noundef !5 @@ -7734,7 +7734,7 @@ define internal fastcc void @_ZN12regex_syntax7unicode2sb17h2baa8a68179ef89cE(pt %.02026.i.i.i.i = phi i64 [ 14, %3 ], [ %.021.i.i.i.i, %16 ] %6 = lshr i64 %.028.i.i.i.i, 1 %7 = add nuw nsw i64 %6, %.01927.i.i.i.i - %8 = icmp samesign ult i64 %7, 14 + %8 = icmp ult i64 %7, 14 tail call void @llvm.assume(i1 %8) %9 = getelementptr inbounds { { ptr, i64 }, { ptr, i64 } }, ptr @anon.ee024262027212e939cdd9996d089225.4526, i64 %7 %.val23.i.i.i.i = load ptr, ptr %9, align 8, !alias.scope !749, !noalias !750, !nonnull !5, !align !102, !noundef !5 diff --git a/bench/ripgrep-rs/optimized/5ckxrdy9v0i8g3uf.ll b/bench/ripgrep-rs/optimized/5ckxrdy9v0i8g3uf.ll index 0ddad67ab80..6f0a425ae04 100644 --- a/bench/ripgrep-rs/optimized/5ckxrdy9v0i8g3uf.ll +++ b/bench/ripgrep-rs/optimized/5ckxrdy9v0i8g3uf.ll @@ -325,8 +325,8 @@ define hidden { ptr, i64 } @_ZN12grep_printer17hyperlink_aliases4find17h74de6dce %.01927.i.i = phi i64 [ 0, %2 ], [ %.022.i.i, %14 ] %.02026.i.i = phi i64 [ 10, %2 ], [ %.021.i.i, %14 ] %4 = lshr i64 %.028.i.i, 1 - %5 = add nuw nsw i64 %4, %.01927.i.i - %6 = icmp samesign ult i64 %5, 10 + %5 = add i64 %4, %.01927.i.i + %6 = icmp ult i64 %5, 10 tail call void @llvm.assume(i1 %6) %7 = getelementptr inbounds { { ptr, i64 }, { ptr, i64 } }, ptr @anon.0923cb38b7fdc9785e1561170331db22.28.llvm.6679066857390535418, i64 %5 %.val23.i.i = load ptr, ptr %7, align 8, !alias.scope !70, !noalias !71, !nonnull !5, !align !29, !noundef !5 @@ -347,8 +347,8 @@ define hidden { ptr, i64 } @_ZN12grep_printer17hyperlink_aliases4find17h74de6dce %16 = icmp slt i64 %spec.store.select.i.i.i.i.i.i, 0 %17 = add nuw nsw i64 %5, 1 %.022.i.i = select i1 %16, i64 %17, i64 %.01927.i.i - %18 = sub nsw i64 %.021.i.i, %.022.i.i - %19 = icmp samesign ult i64 %.022.i.i, %.021.i.i + %18 = sub i64 %.021.i.i, %.022.i.i + %19 = icmp ult i64 %.022.i.i, %.021.i.i br i1 %19, label %3, label %24 "_ZN12grep_printer17hyperlink_aliases4find28_$u7b$$u7b$closure$u7d$$u7d$17h797a182f808414daE.llvm.6679066857390535418.exit.i": ; preds = %3 @@ -359,7 +359,7 @@ define hidden { ptr, i64 } @_ZN12grep_printer17hyperlink_aliases4find17h74de6dce br label %"_ZN4core6result19Result$LT$T$C$E$GT$3map17h6a87aff857aa28b1E.llvm.6679066857390535418.exit" 24: ; preds = %14 - %25 = icmp samesign ult i64 %.022.i.i, 11 + %25 = icmp ult i64 %.022.i.i, 11 tail call void @llvm.assume(i1 %25) br label %"_ZN4core6result19Result$LT$T$C$E$GT$3map17h6a87aff857aa28b1E.llvm.6679066857390535418.exit" diff --git a/bench/slurm/optimized/cbuf.ll b/bench/slurm/optimized/cbuf.ll index bd8db840f24..fc229f856d3 100644 --- a/bench/slurm/optimized/cbuf.ll +++ b/bench/slurm/optimized/cbuf.ll @@ -1463,11 +1463,11 @@ define dso_local i32 @cbuf_drop_line(ptr noundef %0, i32 noundef %1, i32 noundef 6: ; preds = %3 %7 = tail call ptr @__errno_location() #14 store i32 22, ptr %7, align 4 - br label %56 + br label %57 8: ; preds = %3 %9 = icmp eq i32 %2, 0 - br i1 %9, label %56, label %10 + br i1 %9, label %57, label %10 10: ; preds = %8 %11 = tail call i32 @pthread_mutex_lock(ptr noundef %0) #15 @@ -1542,33 +1542,35 @@ define dso_local i32 @cbuf_drop_line(ptr noundef %0, i32 noundef %1, i32 noundef ._crit_edge.i: ; preds = %41, %30 %46 = icmp sgt i32 %.2.i, 0 - %.not27 = icmp eq i32 %.235.i, 0 - %or.cond28 = select i1 %46, i1 true, i1 %.not27 - br i1 %or.cond28, label %cbuf_find_unread_line.exit.thread25, label %47 - -47: ; preds = %._crit_edge.i - %48 = sub nsw i32 %19, %.235.i - store i32 %48, ptr %18, align 8 - %49 = add nsw i32 %23, %.235.i - %50 = load i32, ptr %29, align 4 - %51 = add nsw i32 %50, 1 - %52 = srem i32 %49, %51 - store i32 %52, ptr %22, align 8 + br i1 %46, label %cbuf_find_unread_line.exit.thread25, label %cbuf_find_unread_line.exit + +cbuf_find_unread_line.exit: ; preds = %._crit_edge.i + %47 = icmp sgt i32 %.235.i, 0 + br i1 %47, label %48, label %cbuf_find_unread_line.exit.thread25 + +48: ; preds = %cbuf_find_unread_line.exit + %49 = sub nsw i32 %19, %.235.i + store i32 %49, ptr %18, align 8 + %50 = add nsw i32 %23, %.235.i + %51 = load i32, ptr %29, align 4 + %52 = add nsw i32 %51, 1 + %53 = srem i32 %50, %52 + store i32 %53, ptr %22, align 8 br label %cbuf_find_unread_line.exit.thread25 -cbuf_find_unread_line.exit.thread25: ; preds = %21, %._crit_edge.i, %17, %14, %47 - %.038.i21 = phi i32 [ %.235.i, %47 ], [ 0, %14 ], [ 0, %17 ], [ 0, %._crit_edge.i ], [ 0, %21 ] - %53 = tail call i32 @pthread_mutex_unlock(ptr noundef %0) #15 - %.not19 = icmp eq i32 %53, 0 - br i1 %.not19, label %56, label %54 +cbuf_find_unread_line.exit.thread25: ; preds = %21, %._crit_edge.i, %17, %14, %cbuf_find_unread_line.exit, %48 + %.038.i21 = phi i32 [ %.235.i, %cbuf_find_unread_line.exit ], [ %.235.i, %48 ], [ 0, %14 ], [ 0, %17 ], [ 0, %._crit_edge.i ], [ 0, %21 ] + %54 = tail call i32 @pthread_mutex_unlock(ptr noundef %0) #15 + %.not19 = icmp eq i32 %54, 0 + br i1 %.not19, label %57, label %55 -54: ; preds = %cbuf_find_unread_line.exit.thread25 - %55 = tail call ptr @__errno_location() #14 - store i32 %53, ptr %55, align 4 +55: ; preds = %cbuf_find_unread_line.exit.thread25 + %56 = tail call ptr @__errno_location() #14 + store i32 %54, ptr %56, align 4 tail call void (ptr, ...) @fatal(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str, i32 noundef 542, ptr noundef nonnull @__func__.cbuf_drop_line) #16 unreachable -56: ; preds = %cbuf_find_unread_line.exit.thread25, %8, %6 +57: ; preds = %cbuf_find_unread_line.exit.thread25, %8, %6 %.0 = phi i32 [ -1, %6 ], [ 0, %8 ], [ %.038.i21, %cbuf_find_unread_line.exit.thread25 ] ret i32 %.0 } @@ -1754,11 +1756,11 @@ define dso_local i32 @cbuf_read_line(ptr noundef %0, ptr noundef writeonly %1, i 8: ; preds = %4 %9 = tail call ptr @__errno_location() #14 store i32 22, ptr %9, align 4 - br label %85 + br label %86 10: ; preds = %4 %11 = icmp eq i32 %3, 0 - br i1 %11, label %85, label %12 + br i1 %11, label %86, label %12 12: ; preds = %10 %13 = tail call i32 @pthread_mutex_lock(ptr noundef %0) #15 @@ -1834,89 +1836,91 @@ define dso_local i32 @cbuf_read_line(ptr noundef %0, ptr noundef writeonly %1, i ._crit_edge.i: ; preds = %44, %33 %49 = icmp sgt i32 %.2.i, 0 - %.not50 = icmp eq i32 %.235.i, 0 - %or.cond53 = select i1 %49, i1 true, i1 %.not50 - br i1 %or.cond53, label %cbuf_find_unread_line.exit.thread48, label %50 + br i1 %49, label %cbuf_find_unread_line.exit.thread48, label %cbuf_find_unread_line.exit -50: ; preds = %._crit_edge.i - %51 = icmp sgt i32 %2, 0 - br i1 %51, label %52, label %74 +cbuf_find_unread_line.exit: ; preds = %._crit_edge.i + %50 = icmp sgt i32 %.235.i, 0 + br i1 %50, label %51, label %cbuf_find_unread_line.exit.thread48 -52: ; preds = %50 - %53 = tail call i32 @llvm.umin.i32(i32 %.235.i, i32 %17) +51: ; preds = %cbuf_find_unread_line.exit + %52 = icmp sgt i32 %2, 0 + br i1 %52, label %53, label %75 + +53: ; preds = %51 + %54 = tail call i32 @llvm.umin.i32(i32 %.235.i, i32 %17) %.not36 = icmp ne i32 %2, 1 %.old1.i = icmp sgt i32 %22, 0 - %or.cond54 = and i1 %.not36, %.old1.i - br i1 %or.cond54, label %.preheader.i, label %cbuf_reader.exit + %or.cond52 = and i1 %.not36, %.old1.i + br i1 %or.cond52, label %.preheader.i, label %cbuf_reader.exit -.preheader.i: ; preds = %52 - %54 = tail call i32 @llvm.umin.i32(i32 %53, i32 %22) - br label %55 +.preheader.i: ; preds = %53 + %55 = tail call i32 @llvm.umin.i32(i32 %54, i32 %22) + br label %56 -55: ; preds = %70, %.preheader.i - %.042 = phi ptr [ %1, %.preheader.i ], [ %62, %70 ] - %.035.i = phi i32 [ %54, %.preheader.i ], [ %.2.i38, %70 ] - %.0.i = phi i32 [ %26, %.preheader.i ], [ %.1.i39, %70 ] - %56 = load i32, ptr %32, align 4 - %reass.sub = sub i32 %56, %.0.i - %57 = add i32 %reass.sub, 1 - %.035..i = tail call i32 @llvm.smin.i32(i32 %.035.i, i32 %57) - %58 = load ptr, ptr %30, align 8 - %59 = sext i32 %.0.i to i64 - %60 = getelementptr inbounds i8, ptr %58, i64 %59 - %61 = sext i32 %.035..i to i64 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.042, ptr readonly align 1 %60, i64 %61, i1 false) - %62 = getelementptr inbounds i8, ptr %.042, i64 %61 - %63 = icmp sgt i32 %.035..i, 0 - br i1 %63, label %64, label %70 - -64: ; preds = %55 - %65 = sub nsw i32 %.035.i, %.035..i - %66 = add nsw i32 %.035..i, %.0.i - %67 = load i32, ptr %32, align 4 - %68 = add nsw i32 %67, 1 - %69 = srem i32 %66, %68 - br label %70 - -70: ; preds = %64, %55 - %.2.i38 = phi i32 [ %65, %64 ], [ %.035.i, %55 ] - %.1.i39 = phi i32 [ %69, %64 ], [ %.0.i, %55 ] - %71 = icmp sgt i32 %.2.i38, 0 - br i1 %71, label %55, label %cbuf_reader.exit, !llvm.loop !10 - -cbuf_reader.exit: ; preds = %70, %52 - %72 = zext nneg i32 %53 to i64 - %73 = getelementptr inbounds i8, ptr %1, i64 %72 - store i8 0, ptr %73, align 1 +56: ; preds = %71, %.preheader.i + %.042 = phi ptr [ %1, %.preheader.i ], [ %63, %71 ] + %.035.i = phi i32 [ %55, %.preheader.i ], [ %.2.i38, %71 ] + %.0.i = phi i32 [ %26, %.preheader.i ], [ %.1.i39, %71 ] + %57 = load i32, ptr %32, align 4 + %reass.sub = sub i32 %57, %.0.i + %58 = add i32 %reass.sub, 1 + %.035..i = tail call i32 @llvm.smin.i32(i32 %.035.i, i32 %58) + %59 = load ptr, ptr %30, align 8 + %60 = sext i32 %.0.i to i64 + %61 = getelementptr inbounds i8, ptr %59, i64 %60 + %62 = sext i32 %.035..i to i64 + tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %.042, ptr readonly align 1 %61, i64 %62, i1 false) + %63 = getelementptr inbounds i8, ptr %.042, i64 %62 + %64 = icmp sgt i32 %.035..i, 0 + br i1 %64, label %65, label %71 + +65: ; preds = %56 + %66 = sub nsw i32 %.035.i, %.035..i + %67 = add nsw i32 %.035..i, %.0.i + %68 = load i32, ptr %32, align 4 + %69 = add nsw i32 %68, 1 + %70 = srem i32 %67, %69 + br label %71 + +71: ; preds = %65, %56 + %.2.i38 = phi i32 [ %66, %65 ], [ %.035.i, %56 ] + %.1.i39 = phi i32 [ %70, %65 ], [ %.0.i, %56 ] + %72 = icmp sgt i32 %.2.i38, 0 + br i1 %72, label %56, label %cbuf_reader.exit, !llvm.loop !10 + +cbuf_reader.exit: ; preds = %71, %53 + %73 = zext nneg i32 %54 to i64 + %74 = getelementptr inbounds i8, ptr %1, i64 %73 + store i8 0, ptr %74, align 1 %.pre = load i32, ptr %21, align 8 - %.pre52 = load i32, ptr %25, align 8 - br label %74 + %.pre51 = load i32, ptr %25, align 8 + br label %75 -74: ; preds = %cbuf_reader.exit, %50 - %75 = phi i32 [ %.pre52, %cbuf_reader.exit ], [ %26, %50 ] - %76 = phi i32 [ %.pre, %cbuf_reader.exit ], [ %22, %50 ] - %77 = sub nsw i32 %76, %.235.i - store i32 %77, ptr %21, align 8 - %78 = add nsw i32 %75, %.235.i - %79 = load i32, ptr %32, align 4 - %80 = add nsw i32 %79, 1 - %81 = srem i32 %78, %80 - store i32 %81, ptr %25, align 8 +75: ; preds = %cbuf_reader.exit, %51 + %76 = phi i32 [ %.pre51, %cbuf_reader.exit ], [ %26, %51 ] + %77 = phi i32 [ %.pre, %cbuf_reader.exit ], [ %22, %51 ] + %78 = sub nsw i32 %77, %.235.i + store i32 %78, ptr %21, align 8 + %79 = add nsw i32 %76, %.235.i + %80 = load i32, ptr %32, align 4 + %81 = add nsw i32 %80, 1 + %82 = srem i32 %79, %81 + store i32 %82, ptr %25, align 8 br label %cbuf_find_unread_line.exit.thread48 -cbuf_find_unread_line.exit.thread48: ; preds = %24, %._crit_edge.i, %20, %16, %74 - %.038.i44 = phi i32 [ %.235.i, %74 ], [ 0, %16 ], [ 0, %20 ], [ 0, %._crit_edge.i ], [ 0, %24 ] - %82 = tail call i32 @pthread_mutex_unlock(ptr noundef %0) #15 - %.not37 = icmp eq i32 %82, 0 - br i1 %.not37, label %85, label %83 +cbuf_find_unread_line.exit.thread48: ; preds = %24, %._crit_edge.i, %20, %16, %cbuf_find_unread_line.exit, %75 + %.038.i44 = phi i32 [ %.235.i, %cbuf_find_unread_line.exit ], [ %.235.i, %75 ], [ 0, %16 ], [ 0, %20 ], [ 0, %._crit_edge.i ], [ 0, %24 ] + %83 = tail call i32 @pthread_mutex_unlock(ptr noundef %0) #15 + %.not37 = icmp eq i32 %83, 0 + br i1 %.not37, label %86, label %84 -83: ; preds = %cbuf_find_unread_line.exit.thread48 - %84 = tail call ptr @__errno_location() #14 - store i32 %82, ptr %84, align 4 +84: ; preds = %cbuf_find_unread_line.exit.thread48 + %85 = tail call ptr @__errno_location() #14 + store i32 %83, ptr %85, align 4 tail call void (ptr, ...) @fatal(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str, i32 noundef 615, ptr noundef nonnull @__func__.cbuf_read_line) #16 unreachable -85: ; preds = %cbuf_find_unread_line.exit.thread48, %10, %8 +86: ; preds = %cbuf_find_unread_line.exit.thread48, %10, %8 %.0 = phi i32 [ -1, %8 ], [ 0, %10 ], [ %.038.i44, %cbuf_find_unread_line.exit.thread48 ] ret i32 %.0 } diff --git a/bench/velox/optimized/WidthBucketArray.cpp.ll b/bench/velox/optimized/WidthBucketArray.cpp.ll index bd0146bd7b8..8504f15a9de 100644 --- a/bench/velox/optimized/WidthBucketArray.cpp.ll +++ b/bench/velox/optimized/WidthBucketArray.cpp.ll @@ -3578,7 +3578,7 @@ _ZNKSt6vectorIdSaIdEE2atEm.exit.i.i.i.i: ; preds = %while.body.i.i.i.i %add7.i.i.i.i = add nuw nsw i32 %div8.i.i.i.i, 1 %upper.1.i.i.i.i = select i1 %cmp5.i.i.i.i, i32 %div8.i.i.i.i, i32 %upper.03.i.i.i.i %lower.1.i.i.i.i = select i1 %cmp5.i.i.i.i, i32 %lower.04.i.i.i.i, i32 %add7.i.i.i.i - %cmp.i.i.i.i45 = icmp samesign ult i32 %lower.1.i.i.i.i, %upper.1.i.i.i.i + %cmp.i.i.i.i45 = icmp slt i32 %lower.1.i.i.i.i, %upper.1.i.i.i.i br i1 %cmp.i.i.i.i45, label %while.body.i.i.i.i, label %while.end.loopexit.i.i.i.i, !llvm.loop !25 while.end.loopexit.i.i.i.i: ; preds = %_ZNKSt6vectorIdSaIdEE2atEm.exit.i.i.i.i @@ -3889,7 +3889,7 @@ _ZNKSt6vectorIdSaIdEE2atEm.exit.i.i.i.i.i.i.i.i: ; preds = %while.body.i.i.i.i. %add7.i.i.i.i.i.i.i.i = add nuw nsw i32 %div8.i.i.i.i.i.i.i.i, 1 %upper.1.i.i.i.i.i.i.i.i = select i1 %cmp5.i.i.i.i.i.i.i.i, i32 %div8.i.i.i.i.i.i.i.i, i32 %upper.03.i.i.i.i.i.i.i.i %lower.1.i.i.i.i.i.i.i.i = select i1 %cmp5.i.i.i.i.i.i.i.i, i32 %lower.04.i.i.i.i.i.i.i.i, i32 %add7.i.i.i.i.i.i.i.i - %cmp.i.i.i.i.i.i.i.i = icmp samesign ult i32 %lower.1.i.i.i.i.i.i.i.i, %upper.1.i.i.i.i.i.i.i.i + %cmp.i.i.i.i.i.i.i.i = icmp slt i32 %lower.1.i.i.i.i.i.i.i.i, %upper.1.i.i.i.i.i.i.i.i br i1 %cmp.i.i.i.i.i.i.i.i, label %while.body.i.i.i.i.i.i.i.i, label %while.end.loopexit.i.i.i.i.i.i.i.i, !llvm.loop !25 while.end.loopexit.i.i.i.i.i.i.i.i: ; preds = %_ZNKSt6vectorIdSaIdEE2atEm.exit.i.i.i.i.i.i.i.i @@ -4100,7 +4100,7 @@ _ZNKSt6vectorIdSaIdEE2atEm.exit.i.i69.i.i.i.i.i.i: ; preds = %while.body.i.i61.i %add7.i.i72.i.i.i.i.i.i = add nuw nsw i32 %div8.i.i65.i.i.i.i.i.i, 1 %upper.1.i.i73.i.i.i.i.i.i = select i1 %cmp5.i.i71.i.i.i.i.i.i, i32 %div8.i.i65.i.i.i.i.i.i, i32 %upper.03.i.i63.i.i.i.i.i.i %lower.1.i.i74.i.i.i.i.i.i = select i1 %cmp5.i.i71.i.i.i.i.i.i, i32 %lower.04.i.i62.i.i.i.i.i.i, i32 %add7.i.i72.i.i.i.i.i.i - %cmp.i.i75.i.i.i.i.i.i = icmp samesign ult i32 %lower.1.i.i74.i.i.i.i.i.i, %upper.1.i.i73.i.i.i.i.i.i + %cmp.i.i75.i.i.i.i.i.i = icmp slt i32 %lower.1.i.i74.i.i.i.i.i.i, %upper.1.i.i73.i.i.i.i.i.i br i1 %cmp.i.i75.i.i.i.i.i.i, label %while.body.i.i61.i.i.i.i.i.i, label %while.end.loopexit.i.i76.i.i.i.i.i.i, !llvm.loop !25 while.end.loopexit.i.i76.i.i.i.i.i.i: ; preds = %_ZNKSt6vectorIdSaIdEE2atEm.exit.i.i69.i.i.i.i.i.i @@ -5710,7 +5710,7 @@ _ZNKSt6vectorIdSaIdEE2atEm.exit.i.i: ; preds = %while.body.i.i %add7.i.i = add nuw nsw i32 %div8.i.i, 1 %upper.1.i.i = select i1 %cmp5.i.i, i32 %div8.i.i, i32 %upper.03.i.i %lower.1.i.i = select i1 %cmp5.i.i, i32 %lower.04.i.i, i32 %add7.i.i - %cmp.i.i = icmp samesign ult i32 %lower.1.i.i, %upper.1.i.i + %cmp.i.i = icmp slt i32 %lower.1.i.i, %upper.1.i.i br i1 %cmp.i.i, label %while.body.i.i, label %while.end.loopexit.i.i, !llvm.loop !25 while.end.loopexit.i.i: ; preds = %_ZNKSt6vectorIdSaIdEE2atEm.exit.i.i diff --git a/bench/z3/optimized/sat_aig_cuts.cpp.ll b/bench/z3/optimized/sat_aig_cuts.cpp.ll index 8fd357a5eee..db83e8654c6 100644 --- a/bench/z3/optimized/sat_aig_cuts.cpp.ll +++ b/bench/z3/optimized/sat_aig_cuts.cpp.ll @@ -7364,7 +7364,6 @@ for.body145: ; preds = %for.cond143.prehead %i142.0312 = phi i32 [ 0, %for.cond143.preheader ], [ %inc179, %_ZNKSt8functionIFvRK7svectorIN3sat7literalEjEEEclES5_.exit209 ] %70 = load i32, ptr %m_size.i164, align 8 %71 = trunc i32 %70 to i8 - %frombool = and i8 %71, 1 %72 = load ptr, ptr %m_clause, align 8 %tobool.not.i167 = icmp eq ptr %72, null br i1 %tobool.not.i167, label %_ZN6vectorIN3sat7literalELb0EjE5resetEv.exit170, label %if.then.i168 @@ -7382,7 +7381,7 @@ _ZN6vectorIN3sat7literalELb0EjE5resetEv.exit170: ; preds = %for.body145, %if.th for.body152: ; preds = %_ZN6vectorIN3sat7literalELb0EjE5resetEv.exit170, %_ZN6vectorIN3sat7literalELb0EjE9push_backERKS1_.exit189 %j.0311 = phi i32 [ %inc167, %_ZN6vectorIN3sat7literalELb0EjE9push_backERKS1_.exit189 ], [ 0, %_ZN6vectorIN3sat7literalELb0EjE5resetEv.exit170 ] - %parity.0310 = phi i8 [ %parity.1, %_ZN6vectorIN3sat7literalELb0EjE9push_backERKS1_.exit189 ], [ %frombool, %_ZN6vectorIN3sat7literalELb0EjE5resetEv.exit170 ] + %parity.0310 = phi i8 [ %parity.1, %_ZN6vectorIN3sat7literalELb0EjE9push_backERKS1_.exit189 ], [ %71, %_ZN6vectorIN3sat7literalELb0EjE5resetEv.exit170 ] %74 = load i32, ptr %m_offset.i172, align 4 %add155 = add i32 %74, %j.0311 %75 = load ptr, ptr %m_literals153, align 8 @@ -7473,7 +7472,7 @@ if.end.i: ; preds = %lor.lhs.false.i257 br label %_ZN6vectorIN3sat7literalELb0EjE13expand_vectorEv.exit common.resume: ; preds = %cleanup.action, %ehcleanup, %ehcleanup.i277, %cleanup.action.i272, %ehcleanup.i, %cleanup.action.i - %common.resume.op = phi { ptr, i32 } [ %80, %ehcleanup.i ], [ %81, %cleanup.action.i ], [ %109, %ehcleanup.i277 ], [ %110, %cleanup.action.i272 ], [ %67, %ehcleanup ], [ %68, %cleanup.action ] + %common.resume.op = phi { ptr, i32 } [ %80, %ehcleanup.i ], [ %81, %cleanup.action.i ], [ %110, %ehcleanup.i277 ], [ %111, %cleanup.action.i272 ], [ %67, %ehcleanup ], [ %68, %cleanup.action ] resume { ptr, i32 } %common.resume.op unreachable.i: ; preds = %invoke.cont.i @@ -7509,20 +7508,21 @@ for.end168.loopexit: ; preds = %_ZN6vectorIN3sat7li for.end168: ; preds = %for.end168.loopexit, %_ZN6vectorIN3sat7literalELb0EjE5resetEv.exit170 %87 = phi i32 [ %69, %_ZN6vectorIN3sat7literalELb0EjE5resetEv.exit170 ], [ %.pre322, %for.end168.loopexit ] - %parity.0.lcssa = phi i8 [ %frombool, %_ZN6vectorIN3sat7literalELb0EjE5resetEv.exit170 ], [ %parity.1, %for.end168.loopexit ] - %88 = xor i8 %parity.0.lcssa, 1 - %not.tobool171 = zext nneg i8 %88 to i32 - %storemerge44 = xor i32 %87, %not.tobool171 - %89 = load ptr, ptr %m_clause, align 8 - %cmp.i191 = icmp eq ptr %89, null + %parity.0.lcssa = phi i8 [ %71, %_ZN6vectorIN3sat7literalELb0EjE5resetEv.exit170 ], [ %parity.1, %for.end168.loopexit ] + %88 = and i8 %parity.0.lcssa, 1 + %89 = xor i8 %88, 1 + %xor.i190 = zext nneg i8 %89 to i32 + %storemerge44 = xor i32 %87, %xor.i190 + %90 = load ptr, ptr %m_clause, align 8 + %cmp.i191 = icmp eq ptr %90, null br i1 %cmp.i191, label %if.then.i200, label %lor.lhs.false.i192 lor.lhs.false.i192: ; preds = %for.end168 - %arrayidx.i193 = getelementptr inbounds i8, ptr %89, i64 -4 - %90 = load i32, ptr %arrayidx.i193, align 4 - %arrayidx4.i194 = getelementptr inbounds i8, ptr %89, i64 -8 - %91 = load i32, ptr %arrayidx4.i194, align 4 - %cmp5.i195 = icmp eq i32 %90, %91 + %arrayidx.i193 = getelementptr inbounds i8, ptr %90, i64 -4 + %91 = load i32, ptr %arrayidx.i193, align 4 + %arrayidx4.i194 = getelementptr inbounds i8, ptr %90, i64 -8 + %92 = load i32, ptr %arrayidx4.i194, align 4 + %cmp5.i195 = icmp eq i32 %91, %92 br i1 %cmp5.i195, label %if.then.i200, label %_ZN6vectorIN3sat7literalELb0EjE9push_backEOS1_.exit204 if.then.i200: ; preds = %lor.lhs.false.i192, %for.end168 @@ -7533,18 +7533,18 @@ if.then.i200: ; preds = %lor.lhs.false.i192, br label %_ZN6vectorIN3sat7literalELb0EjE9push_backEOS1_.exit204 _ZN6vectorIN3sat7literalELb0EjE9push_backEOS1_.exit204: ; preds = %lor.lhs.false.i192, %if.then.i200 - %92 = phi i32 [ %.pre1.i203, %if.then.i200 ], [ %90, %lor.lhs.false.i192 ] - %93 = phi ptr [ %.pre.i201, %if.then.i200 ], [ %89, %lor.lhs.false.i192 ] - %idx.ext.i196 = zext i32 %92 to i64 - %add.ptr.i197 = getelementptr inbounds %"class.sat::literal", ptr %93, i64 %idx.ext.i196 + %93 = phi i32 [ %.pre1.i203, %if.then.i200 ], [ %91, %lor.lhs.false.i192 ] + %94 = phi ptr [ %.pre.i201, %if.then.i200 ], [ %90, %lor.lhs.false.i192 ] + %idx.ext.i196 = zext i32 %93 to i64 + %add.ptr.i197 = getelementptr inbounds %"class.sat::literal", ptr %94, i64 %idx.ext.i196 store i32 %storemerge44, ptr %add.ptr.i197, align 4 - %94 = load ptr, ptr %m_clause, align 8 - %arrayidx10.i198 = getelementptr inbounds i8, ptr %94, i64 -4 - %95 = load i32, ptr %arrayidx10.i198, align 4 - %inc.i199 = add i32 %95, 1 + %95 = load ptr, ptr %m_clause, align 8 + %arrayidx10.i198 = getelementptr inbounds i8, ptr %95, i64 -4 + %96 = load i32, ptr %arrayidx10.i198, align 4 + %inc.i199 = add i32 %96, 1 store i32 %inc.i199, ptr %arrayidx10.i198, align 4 - %96 = load ptr, ptr %_M_manager.i.i205, align 8 - %tobool.not.i.i206 = icmp eq ptr %96, null + %97 = load ptr, ptr %_M_manager.i.i205, align 8 + %tobool.not.i.i206 = icmp eq ptr %97, null br i1 %tobool.not.i.i206, label %if.then.i208, label %_ZNKSt8functionIFvRK7svectorIN3sat7literalEjEEEclES5_.exit209 if.then.i208: ; preds = %_ZN6vectorIN3sat7literalELb0EjE9push_backEOS1_.exit204 @@ -7552,8 +7552,8 @@ if.then.i208: ; preds = %_ZN6vectorIN3sat7li unreachable _ZNKSt8functionIFvRK7svectorIN3sat7literalEjEEEclES5_.exit209: ; preds = %_ZN6vectorIN3sat7literalELb0EjE9push_backEOS1_.exit204 - %97 = load ptr, ptr %_M_invoker.i207, align 8 - tail call void %97(ptr noundef nonnull align 8 dereferenceable(32) %on_clause, ptr noundef nonnull align 8 dereferenceable(8) %m_clause) + %98 = load ptr, ptr %_M_invoker.i207, align 8 + tail call void %98(ptr noundef nonnull align 8 dereferenceable(32) %on_clause, ptr noundef nonnull align 8 dereferenceable(8) %m_clause) %inc179 = add i32 %i142.0312, 1 %i142.0.highbits = lshr i32 %inc179, %66 %cmp144 = icmp eq i32 %i142.0.highbits, 0 @@ -7561,7 +7561,7 @@ _ZNKSt8functionIFvRK7svectorIN3sat7literalEjEEEclES5_.exit209: ; preds = %_ZN6ve sw.bb181: ; preds = %_ZN6vectorIN3sat7literalELb0EjE5resetEv.exit %m_size.i210 = getelementptr inbounds i8, ptr %n, i64 16 - %98 = load i32, ptr %m_size.i210, align 8 + %99 = load i32, ptr %m_size.i210, align 8 %m_literals195 = getelementptr inbounds i8, ptr %this, i64 32 %m_offset.i216 = getelementptr inbounds i8, ptr %n, i64 20 %m_lut.i = getelementptr inbounds i8, ptr %n, i64 8 @@ -7570,43 +7570,43 @@ sw.bb181: ; preds = %_ZN6vectorIN3sat7li br label %for.body187 for.body187: ; preds = %sw.bb181, %_ZNKSt8functionIFvRK7svectorIN3sat7literalEjEEEclES5_.exit253 - %99 = phi i32 [ %5, %sw.bb181 ], [ %116, %_ZNKSt8functionIFvRK7svectorIN3sat7literalEjEEEclES5_.exit253 ] + %100 = phi i32 [ %5, %sw.bb181 ], [ %117, %_ZNKSt8functionIFvRK7svectorIN3sat7literalEjEEEclES5_.exit253 ] %i184.0308 = phi i32 [ 0, %sw.bb181 ], [ %inc225, %_ZNKSt8functionIFvRK7svectorIN3sat7literalEjEEEclES5_.exit253 ] - %100 = load ptr, ptr %m_clause, align 8 - %tobool.not.i211 = icmp eq ptr %100, null + %101 = load ptr, ptr %m_clause, align 8 + %tobool.not.i211 = icmp eq ptr %101, null br i1 %tobool.not.i211, label %_ZN6vectorIN3sat7literalELb0EjE5resetEv.exit214, label %if.then.i212 if.then.i212: ; preds = %for.body187 - %arrayidx.i213 = getelementptr inbounds i8, ptr %100, i64 -4 + %arrayidx.i213 = getelementptr inbounds i8, ptr %101, i64 -4 store i32 0, ptr %arrayidx.i213, align 4 br label %_ZN6vectorIN3sat7literalELb0EjE5resetEv.exit214 _ZN6vectorIN3sat7literalELb0EjE5resetEv.exit214: ; preds = %for.body187, %if.then.i212 - %101 = load i32, ptr %m_size.i210, align 8 - %cmp192306.not = icmp eq i32 %101, 0 + %102 = load i32, ptr %m_size.i210, align 8 + %cmp192306.not = icmp eq i32 %102, 0 br i1 %cmp192306.not, label %for.end208, label %for.body193 for.body193: ; preds = %_ZN6vectorIN3sat7literalELb0EjE5resetEv.exit214, %_ZN6vectorIN3sat7literalELb0EjE9push_backERKS1_.exit233 %j189.0307 = phi i32 [ %inc207, %_ZN6vectorIN3sat7literalELb0EjE9push_backERKS1_.exit233 ], [ 0, %_ZN6vectorIN3sat7literalELb0EjE5resetEv.exit214 ] - %102 = load i32, ptr %m_offset.i216, align 4 - %add197 = add i32 %102, %j189.0307 - %103 = load ptr, ptr %m_literals195, align 8 + %103 = load i32, ptr %m_offset.i216, align 4 + %add197 = add i32 %103, %j189.0307 + %104 = load ptr, ptr %m_literals195, align 8 %idxprom.i217 = zext i32 %add197 to i64 - %arrayidx.i218 = getelementptr inbounds %"class.sat::literal", ptr %103, i64 %idxprom.i217 - %104 = load i32, ptr %arrayidx.i218, align 4 - %105 = lshr i32 %i184.0308, %j189.0307 - %xor.i219 = and i32 %105, 1 - %spec.select = xor i32 %104, %xor.i219 - %106 = load ptr, ptr %m_clause, align 8 - %cmp.i220 = icmp eq ptr %106, null + %arrayidx.i218 = getelementptr inbounds %"class.sat::literal", ptr %104, i64 %idxprom.i217 + %105 = load i32, ptr %arrayidx.i218, align 4 + %106 = lshr i32 %i184.0308, %j189.0307 + %xor.i219 = and i32 %106, 1 + %spec.select = xor i32 %105, %xor.i219 + %107 = load ptr, ptr %m_clause, align 8 + %cmp.i220 = icmp eq ptr %107, null br i1 %cmp.i220, label %if.then.i287, label %lor.lhs.false.i221 lor.lhs.false.i221: ; preds = %for.body193 - %arrayidx.i222 = getelementptr inbounds i8, ptr %106, i64 -4 - %107 = load i32, ptr %arrayidx.i222, align 4 - %arrayidx4.i223 = getelementptr inbounds i8, ptr %106, i64 -8 - %108 = load i32, ptr %arrayidx4.i223, align 4 - %cmp5.i224 = icmp eq i32 %107, %108 + %arrayidx.i222 = getelementptr inbounds i8, ptr %107, i64 -4 + %108 = load i32, ptr %arrayidx.i222, align 4 + %arrayidx4.i223 = getelementptr inbounds i8, ptr %107, i64 -8 + %109 = load i32, ptr %arrayidx4.i223, align 4 + %cmp5.i224 = icmp eq i32 %108, %109 br i1 %cmp5.i224, label %if.else.i262, label %_ZN6vectorIN3sat7literalELb0EjE9push_backERKS1_.exit233 if.then.i287: ; preds = %for.body193 @@ -7623,16 +7623,16 @@ if.then.i287: ; preds = %for.body193 if.else.i262: ; preds = %lor.lhs.false.i221 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i259) call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %ref.tmp18.i260) - %mul9.i264 = mul i32 %107, 3 + %mul9.i264 = mul i32 %108, 3 %add10.i265 = add i32 %mul9.i264, 1 %shr.i266 = lshr i32 %add10.i265, 1 %mul12.i267 = shl i32 %shr.i266, 2 %add13.i268 = add i32 %mul12.i267, 8 - %cmp15.not.i269 = icmp ugt i32 %shr.i266, %107 + %cmp15.not.i269 = icmp ugt i32 %shr.i266, %108 br i1 %cmp15.not.i269, label %lor.lhs.false.i279, label %if.then17.i270 lor.lhs.false.i279: ; preds = %if.else.i262 - %mul6.i280 = shl i32 %107, 2 + %mul6.i280 = shl i32 %108, 2 %add7.i281 = add i32 %mul6.i280, 8 %cmp16.not.i282 = icmp ugt i32 %add13.i268, %add7.i281 br i1 %cmp16.not.i282, label %if.end.i283, label %if.then17.i270 @@ -7651,14 +7651,14 @@ invoke.cont.i275: ; preds = %if.then17.i270 to label %unreachable.i278 unwind label %ehcleanup.i277 ehcleanup.i277: ; preds = %invoke.cont.i275 - %109 = landingpad { ptr, i32 } + %110 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp.i259) #20 call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp18.i260) #20 br label %common.resume cleanup.action.i272: ; preds = %if.then17.i270 - %110 = landingpad { ptr, i32 } + %111 = landingpad { ptr, i32 } cleanup call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp18.i260) #20 call void @__cxa_free_exception(ptr %exception.i271) #20 @@ -7684,19 +7684,19 @@ _ZN6vectorIN3sat7literalELb0EjE13expand_vectorEv.exit291: ; preds = %if.then.i28 br label %_ZN6vectorIN3sat7literalELb0EjE9push_backERKS1_.exit233 _ZN6vectorIN3sat7literalELb0EjE9push_backERKS1_.exit233: ; preds = %lor.lhs.false.i221, %_ZN6vectorIN3sat7literalELb0EjE13expand_vectorEv.exit291 - %111 = phi i32 [ %.pre1.i232, %_ZN6vectorIN3sat7literalELb0EjE13expand_vectorEv.exit291 ], [ %107, %lor.lhs.false.i221 ] - %112 = phi ptr [ %.pre.i230, %_ZN6vectorIN3sat7literalELb0EjE13expand_vectorEv.exit291 ], [ %106, %lor.lhs.false.i221 ] - %idx.ext.i225 = zext i32 %111 to i64 - %add.ptr.i226 = getelementptr inbounds %"class.sat::literal", ptr %112, i64 %idx.ext.i225 + %112 = phi i32 [ %.pre1.i232, %_ZN6vectorIN3sat7literalELb0EjE13expand_vectorEv.exit291 ], [ %108, %lor.lhs.false.i221 ] + %113 = phi ptr [ %.pre.i230, %_ZN6vectorIN3sat7literalELb0EjE13expand_vectorEv.exit291 ], [ %107, %lor.lhs.false.i221 ] + %idx.ext.i225 = zext i32 %112 to i64 + %add.ptr.i226 = getelementptr inbounds %"class.sat::literal", ptr %113, i64 %idx.ext.i225 store i32 %spec.select, ptr %add.ptr.i226, align 4 - %113 = load ptr, ptr %m_clause, align 8 - %arrayidx10.i227 = getelementptr inbounds i8, ptr %113, i64 -4 - %114 = load i32, ptr %arrayidx10.i227, align 4 - %inc.i228 = add i32 %114, 1 + %114 = load ptr, ptr %m_clause, align 8 + %arrayidx10.i227 = getelementptr inbounds i8, ptr %114, i64 -4 + %115 = load i32, ptr %arrayidx10.i227, align 4 + %inc.i228 = add i32 %115, 1 store i32 %inc.i228, ptr %arrayidx10.i227, align 4 %inc207 = add nuw i32 %j189.0307, 1 - %115 = load i32, ptr %m_size.i210, align 8 - %cmp192 = icmp ult i32 %inc207, %115 + %116 = load i32, ptr %m_size.i210, align 8 + %cmp192 = icmp ult i32 %inc207, %116 br i1 %cmp192, label %for.body193, label %for.end208.loopexit, !llvm.loop !44 for.end208.loopexit: ; preds = %_ZN6vectorIN3sat7literalELb0EjE9push_backERKS1_.exit233 @@ -7704,24 +7704,24 @@ for.end208.loopexit: ; preds = %_ZN6vectorIN3sat7li br label %for.end208 for.end208: ; preds = %for.end208.loopexit, %_ZN6vectorIN3sat7literalELb0EjE5resetEv.exit214 - %116 = phi i32 [ %.pre, %for.end208.loopexit ], [ %99, %_ZN6vectorIN3sat7literalELb0EjE5resetEv.exit214 ] - %117 = load i64, ptr %m_lut.i, align 8 + %117 = phi i32 [ %.pre, %for.end208.loopexit ], [ %100, %_ZN6vectorIN3sat7literalELb0EjE5resetEv.exit214 ] + %118 = load i64, ptr %m_lut.i, align 8 %sh_prom = zext nneg i32 %i184.0308 to i64 - %118 = xor i64 %117, -1 - %119 = lshr i64 %118, %sh_prom - %120 = trunc i64 %119 to i32 - %xor.i234 = and i32 %120, 1 - %storemerge = xor i32 %xor.i234, %116 - %121 = load ptr, ptr %m_clause, align 8 - %cmp.i235 = icmp eq ptr %121, null + %119 = xor i64 %118, -1 + %120 = lshr i64 %119, %sh_prom + %121 = trunc i64 %120 to i32 + %xor.i234 = and i32 %121, 1 + %storemerge = xor i32 %xor.i234, %117 + %122 = load ptr, ptr %m_clause, align 8 + %cmp.i235 = icmp eq ptr %122, null br i1 %cmp.i235, label %if.then.i244, label %lor.lhs.false.i236 lor.lhs.false.i236: ; preds = %for.end208 - %arrayidx.i237 = getelementptr inbounds i8, ptr %121, i64 -4 - %122 = load i32, ptr %arrayidx.i237, align 4 - %arrayidx4.i238 = getelementptr inbounds i8, ptr %121, i64 -8 - %123 = load i32, ptr %arrayidx4.i238, align 4 - %cmp5.i239 = icmp eq i32 %122, %123 + %arrayidx.i237 = getelementptr inbounds i8, ptr %122, i64 -4 + %123 = load i32, ptr %arrayidx.i237, align 4 + %arrayidx4.i238 = getelementptr inbounds i8, ptr %122, i64 -8 + %124 = load i32, ptr %arrayidx4.i238, align 4 + %cmp5.i239 = icmp eq i32 %123, %124 br i1 %cmp5.i239, label %if.then.i244, label %_ZN6vectorIN3sat7literalELb0EjE9push_backEOS1_.exit248 if.then.i244: ; preds = %lor.lhs.false.i236, %for.end208 @@ -7732,18 +7732,18 @@ if.then.i244: ; preds = %lor.lhs.false.i236, br label %_ZN6vectorIN3sat7literalELb0EjE9push_backEOS1_.exit248 _ZN6vectorIN3sat7literalELb0EjE9push_backEOS1_.exit248: ; preds = %lor.lhs.false.i236, %if.then.i244 - %124 = phi i32 [ %.pre1.i247, %if.then.i244 ], [ %122, %lor.lhs.false.i236 ] - %125 = phi ptr [ %.pre.i245, %if.then.i244 ], [ %121, %lor.lhs.false.i236 ] - %idx.ext.i240 = zext i32 %124 to i64 - %add.ptr.i241 = getelementptr inbounds %"class.sat::literal", ptr %125, i64 %idx.ext.i240 + %125 = phi i32 [ %.pre1.i247, %if.then.i244 ], [ %123, %lor.lhs.false.i236 ] + %126 = phi ptr [ %.pre.i245, %if.then.i244 ], [ %122, %lor.lhs.false.i236 ] + %idx.ext.i240 = zext i32 %125 to i64 + %add.ptr.i241 = getelementptr inbounds %"class.sat::literal", ptr %126, i64 %idx.ext.i240 store i32 %storemerge, ptr %add.ptr.i241, align 4 - %126 = load ptr, ptr %m_clause, align 8 - %arrayidx10.i242 = getelementptr inbounds i8, ptr %126, i64 -4 - %127 = load i32, ptr %arrayidx10.i242, align 4 - %inc.i243 = add i32 %127, 1 + %127 = load ptr, ptr %m_clause, align 8 + %arrayidx10.i242 = getelementptr inbounds i8, ptr %127, i64 -4 + %128 = load i32, ptr %arrayidx10.i242, align 4 + %inc.i243 = add i32 %128, 1 store i32 %inc.i243, ptr %arrayidx10.i242, align 4 - %128 = load ptr, ptr %_M_manager.i.i249, align 8 - %tobool.not.i.i250 = icmp eq ptr %128, null + %129 = load ptr, ptr %_M_manager.i.i249, align 8 + %tobool.not.i.i250 = icmp eq ptr %129, null br i1 %tobool.not.i.i250, label %if.then.i252, label %_ZNKSt8functionIFvRK7svectorIN3sat7literalEjEEEclES5_.exit253 if.then.i252: ; preds = %_ZN6vectorIN3sat7literalELb0EjE9push_backEOS1_.exit248 @@ -7751,10 +7751,10 @@ if.then.i252: ; preds = %_ZN6vectorIN3sat7li unreachable _ZNKSt8functionIFvRK7svectorIN3sat7literalEjEEEclES5_.exit253: ; preds = %_ZN6vectorIN3sat7literalELb0EjE9push_backEOS1_.exit248 - %129 = load ptr, ptr %_M_invoker.i251, align 8 - tail call void %129(ptr noundef nonnull align 8 dereferenceable(32) %on_clause, ptr noundef nonnull align 8 dereferenceable(8) %m_clause) + %130 = load ptr, ptr %_M_invoker.i251, align 8 + tail call void %130(ptr noundef nonnull align 8 dereferenceable(32) %on_clause, ptr noundef nonnull align 8 dereferenceable(8) %m_clause) %inc225 = add i32 %i184.0308, 1 - %i184.0.highbits = lshr i32 %inc225, %98 + %i184.0.highbits = lshr i32 %inc225, %99 %cmp186 = icmp eq i32 %i184.0.highbits, 0 br i1 %cmp186, label %for.body187, label %return, !llvm.loop !45